aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.gitignore288
-rw-r--r--.gitmodules3
-rw-r--r--CMakeLists.txt104
m---------Eigen0
-rw-r--r--README.md164
-rw-r--r--glew/LICENSE.txt73
-rw-r--r--glew/README.md3
-rw-r--r--glew/auto/EGL-Registry/.dummy0
-rw-r--r--glew/auto/EGL-Registry/.htaccess12
-rw-r--r--glew/auto/EGL-Registry/CODE_OF_CONDUCT.md1
-rw-r--r--glew/auto/EGL-Registry/README.md100
-rw-r--r--glew/auto/EGL-Registry/api/1.0/EGL/egl.h286
-rw-r--r--glew/auto/EGL-Registry/api/1.0/egl.h283
-rw-r--r--glew/auto/EGL-Registry/api/1.1/EGL/egl.h226
-rw-r--r--glew/auto/EGL-Registry/api/1.2/EGL/egl.h264
-rw-r--r--glew/auto/EGL-Registry/api/1.2/egl.h260
-rw-r--r--glew/auto/EGL-Registry/api/EGL/egl.h342
-rw-r--r--glew/auto/EGL-Registry/api/EGL/eglext.h1483
-rw-r--r--glew/auto/EGL-Registry/api/EGL/eglplatform.h169
-rw-r--r--glew/auto/EGL-Registry/api/KHR/khrplatform.h311
-rw-r--r--glew/auto/EGL-Registry/api/egl.xml3532
-rw-r--r--glew/auto/EGL-Registry/api/egltest.c8
-rw-r--r--glew/auto/EGL-Registry/api/genheaders.py619
-rw-r--r--glew/auto/EGL-Registry/api/reg.py1168
-rw-r--r--glew/auto/EGL-Registry/api/registry.rnc270
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_GLES_layers.txt64
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_blob_cache.txt211
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt197
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt102
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt70
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt259
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt102
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt108
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt281
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_presentation_time.txt140
-rw-r--r--glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_recordable.txt140
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt98
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_device_d3d.txt93
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt88
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt95
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt99
-rw-r--r--glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_image_format.txt126
-rw-r--r--glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_implicit_external_sync.txt219
-rw-r--r--glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt185
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_bind_to_front.txt108
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_buffer_age.txt329
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_extensions.txt408
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_sync.txt146
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_compositor.txt400
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_config_select_group.txt111
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_create_context_robustness.txt169
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_base.txt243
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm.txt223
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm_render_node.txt106
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_enumeration.txt111
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_openwf.txt230
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_persistent_id.txt202
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query.txt188
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query_name.txt104
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_explicit_device.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt175
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt137
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt139
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt130
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt127
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import.txt428
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt244
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_gl_colorspace.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_implicit_sync_control.txt131
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_multiview_window.txt126
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_output_base.txt564
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_pixel_format_float.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_base.txt371
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_device.txt161
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_wayland.txt135
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_x11.txt414
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_xcb.txt382
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_present_opaque.txt118
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_content.txt329
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_surface.txt230
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt248
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt136
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt247
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_compression.txt289
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt343
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_sync_reuse.txt376
-rw-r--r--glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_yuv_surface.txt393
-rw-r--r--glew/auto/EGL-Registry/extensions/HI/EGL_HI_clientpixmap.txt144
-rw-r--r--glew/auto/EGL-Registry/extensions/HI/EGL_HI_colorformats.txt138
-rw-r--r--glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_context_priority.txt166
-rw-r--r--glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_image_plane_attribs.txt156
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event.txt278
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event2.txt364
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_config_attribs.txt234
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context.txt648
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context_no_error.txt142
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_debug.txt573
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_display_reference.txt242
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_fence_sync.txt562
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt206
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_colorspace.txt197
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_image.txt432
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image.txt140
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_base.txt755
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_pixmap.txt158
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface.txt727
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface2.txt1077
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface3.txt679
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_mutable_render_buffer.txt325
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_no_config_context.txt261
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_partial_update.txt501
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_android.txt102
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_gbm.txt295
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_wayland.txt122
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_x11.txt378
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_reusable_sync.txt575
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream.txt1091
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt402
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_cross_process_fd.txt560
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_fifo.txt433
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt178
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt386
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_surfaceless_context.txt174
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt449
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_vg_parent_image.txt138
-rw-r--r--glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_wait_sync.txt278
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_drm_image.txt157
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_image_dma_buf_export.txt147
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_gbm.txt319
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_surfaceless.txt120
-rw-r--r--glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_query_driver.txt95
-rw-r--r--glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_swap_region2.txt227
-rw-r--r--glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_texture_from_pixmap.txt321
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_3dvision_surface.txt94
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_context_priority_realtime.txt195
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample.txt554
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample_resolve.txt127
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt206
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_depth_nonlinear.txt142
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_device_cuda.txt91
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_n_buffer.txt157
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_native_query.txt137
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_convert_rounding.txt85
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_sub_buffer.txt241
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_eglimage.txt367
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt280
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_dma.txt137
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_next.txt105
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_synchronous.txt211
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_flush.txt132
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_frame_limits.txt152
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_metadata.txt335
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_origin.txt298
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_remote.txt472
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_reset.txt306
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_socket.txt229
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_sync.txt198
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_sync.txt554
-rw-r--r--glew/auto/EGL-Registry/extensions/NV/EGL_NV_system_time.txt99
-rw-r--r--glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt114
-rw-r--r--glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_surface.txt121
-rw-r--r--glew/auto/EGL-Registry/extensions/WL/EGL_WL_bind_wayland_display.txt217
-rw-r--r--glew/auto/EGL-Registry/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt101
-rw-r--r--glew/auto/EGL-Registry/index.php382
-rw-r--r--glew/auto/EGL-Registry/registry.tcl770
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/.htaccess13
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/NOTES59
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/README1
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/bottom.php9
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/copyright.xml21
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/db4-upgrade.xsl1455
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindAPI.xml130
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindTexImage.xml181
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglChooseConfig.xml929
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCopyBuffers.xml129
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateContext.xml220
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferFromClientBuffer.xml389
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferSurface.xml333
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePixmapSurface.xml227
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateWindowSurface.xml244
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroyContext.xml84
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroySurface.xml86
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigAttrib.xml326
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigs.xml114
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentContext.xml51
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentDisplay.xml52
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentSurface.xml66
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetDisplay.xml75
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetError.xml145
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetProcAddress.xml86
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglInitialize.xml109
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglIntro.xml264
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglMakeCurrent.xml203
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryAPI.xml85
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryContext.xml193
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryString.xml142
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQuerySurface.xml288
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseTexImage.xml110
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseThread.xml134
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSurfaceAttrib.xml216
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapBuffers.xml144
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapInterval.xml103
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglTerminate.xml82
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitClient.xml93
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitGL.xml91
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitNative.xml82
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/docbook4/reference.xml174
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglBindAPI.xml123
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglBindTexImage.xml172
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglChooseConfig.xml915
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglClientWaitSync.xml161
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCopyBuffers.xml120
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreateContext.xml212
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreateImage.xml624
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferFromClientBuffer.xml386
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferSurface.xml359
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePixmapSurface.xml87
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformPixmapSurface.xml270
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformWindowSurface.xml296
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreateSync.xml311
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglCreateWindowSurface.xml87
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglDestroyContext.xml75
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglDestroyImage.xml85
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglDestroySurface.xml77
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglDestroySync.xml98
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigAttrib.xml317
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigs.xml105
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentContext.xml42
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentDisplay.xml57
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentSurface.xml58
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetDisplay.xml87
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetError.xml143
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetPlatformDisplay.xml122
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetProcAddress.xml98
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglGetSyncAttrib.xml148
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglInitialize.xml100
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglIntro.xml275
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglMakeCurrent.xml321
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglQueryAPI.xml76
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglQueryContext.xml184
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglQueryString.xml179
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglQuerySurface.xml310
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglReleaseTexImage.xml101
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglReleaseThread.xml125
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglSurfaceAttrib.xml207
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglSwapBuffers.xml152
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglSwapInterval.xml94
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglTerminate.xml73
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglWaitClient.xml84
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglWaitGL.xml82
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglWaitNative.xml73
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/eglWaitSync.xml134
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/headBackground.jpgbin0 -> 9467 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/EGL_300.pngbin0 -> 26048 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/KhronosLogo.jpgbin0 -> 2454 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/accord.js58
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/bullets-contract.gifbin0 -> 82 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/bullets-end.gifbin0 -> 82 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/bullets-expand.gifbin0 -> 90 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglBindAPI.xhtml160
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglBindTexImage.xhtml228
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglChooseConfig.xhtml1150
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglClientWaitSync.xhtml226
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCopyBuffers.xhtml170
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateContext.xhtml287
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateImage.xhtml774
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferFromClientBuffer.xhtml468
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferSurface.xhtml435
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePixmapSurface.xhtml150
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformPixmapSurface.xhtml341
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformWindowSurface.xhtml368
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateSync.xhtml389
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateWindowSurface.xhtml149
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyContext.xhtml121
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyImage.xhtml132
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySurface.xhtml123
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySync.xhtml145
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigAttrib.xhtml508
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigs.xhtml169
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentContext.xhtml70
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentDisplay.xhtml86
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentSurface.xhtml92
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetDisplay.xhtml121
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetError.xhtml233
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetPlatformDisplay.xhtml172
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetProcAddress.xhtml133
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglGetSyncAttrib.xhtml231
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglInitialize.xhtml149
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglIntro.xhtml304
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglMakeCurrent.xhtml381
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryAPI.xhtml107
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryContext.xhtml267
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryString.xhtml236
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglQuerySurface.xhtml435
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseTexImage.xhtml155
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseThread.xhtml158
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglSurfaceAttrib.xhtml274
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapBuffers.xhtml196
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapInterval.xhtml137
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglTerminate.xhtml108
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitClient.xhtml114
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitGL.xhtml112
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitNative.xhtml108
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitSync.xhtml190
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/index.php121
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/indexflat.php135
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.css209
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.xsl126
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/makeindex.py316
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/old-egl-man.xsl174
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/present.css47
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/start.html87
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/style-index.css2
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/undohtml.css9
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/html/vn221
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/index.php9
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/mkshar3
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/reference.xml182
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/setvars5
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/top.php46
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/EGL_300.pngbin0 -> 26048 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/Header.html37
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/Intro.html116
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/KhronosLogo.jpgbin0 -> 2454 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/TOC.html179
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-contract.gifbin0 -> 82 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-end.gifbin0 -> 82 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-expand.gifbin0 -> 90 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/copyright.inc.xsl15
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/ctop.xsl1319
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/egl-man.xsl274
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindAPI.html365
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindTexImage.html435
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglChooseConfig.html1361
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCopyBuffers.html377
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateContext.html488
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferFromClientBuffer.html669
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferSurface.html605
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePixmapSurface.html494
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateWindowSurface.html512
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroyContext.html327
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroySurface.html329
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigAttrib.html715
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigs.html375
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentContext.html274
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentDisplay.html275
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentSurface.html296
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetDisplay.html305
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetError.html430
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetProcAddress.html316
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglInitialize.html355
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglIntro.html492
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglMakeCurrent.html456
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryAPI.html313
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryContext.html474
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryString.html401
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQuerySurface.html599
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseTexImage.html362
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseThread.html364
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSurfaceAttrib.html481
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapBuffers.html385
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapInterval.html344
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglTerminate.html314
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitClient.html320
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitGL.html318
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitNative.html314
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/headBackground.jpgbin0 -> 9467 bytes
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/index.html15
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/maketoc.pl354
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/opengl-man.xsl49
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/present.css47
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/style.css2
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/styles-css.xsl214
-rw-r--r--glew/auto/EGL-Registry/sdk/docs/man/xhtml/undohtml.css9
-rw-r--r--glew/auto/EGL-Registry/specs/EGLTechNote0001.html110
-rw-r--r--glew/auto/EGL-Registry/specs/Khronos-1600-Transparent-May07.pngbin0 -> 145052 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.0.pdfbin0 -> 238654 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.1.pdfbin0 -> 301346 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.2.pdfbin0 -> 478979 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.3.pdfbin0 -> 516479 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.4.pdfbin0 -> 342048 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.4.withchanges.pdfbin0 -> 347659 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.5.pdfbin0 -> 433708 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/eglspec.1.5.withchanges.pdfbin0 -> 435618 bytes
-rw-r--r--glew/auto/EGL-Registry/specs/igstyle.css185
-rw-r--r--glew/auto/EGL-Registry/specs/legal.html34
-rw-r--r--glew/auto/EGL-Registry/specs/legal.xhtml36
-rw-r--r--glew/auto/bin/filter_gl_ext.sh614
-rw-r--r--glew/auto/bin/filter_gles_ext.sh20
-rw-r--r--glew/auto/bin/filter_spec.py38
-rw-r--r--glew/auto/bin/make.pl224
-rw-r--r--glew/auto/bin/make_def_fun.pl37
-rw-r--r--glew/auto/bin/make_def_var.pl33
-rw-r--r--glew/auto/bin/make_enable_index.pl48
-rw-r--r--glew/auto/bin/make_header.pl73
-rw-r--r--glew/auto/bin/make_html.pl57
-rw-r--r--glew/auto/bin/make_index.pl41
-rw-r--r--glew/auto/bin/make_info.pl71
-rw-r--r--glew/auto/bin/make_info_list.pl49
-rw-r--r--glew/auto/bin/make_init.pl61
-rw-r--r--glew/auto/bin/make_initd.pl45
-rw-r--r--glew/auto/bin/make_list.pl75
-rw-r--r--glew/auto/bin/make_list2.pl46
-rw-r--r--glew/auto/bin/make_str.pl55
-rw-r--r--glew/auto/bin/make_struct_fun.pl38
-rw-r--r--glew/auto/bin/make_struct_var.pl33
-rw-r--r--glew/auto/bin/parse_spec.pl410
-rw-r--r--glew/auto/bin/parse_xml.py145
-rw-r--r--glew/auto/bin/update_ext.sh26
-rw-r--r--glew/auto/blacklist27
-rw-r--r--glew/auto/custom.txt7
-rw-r--r--glew/auto/doc/advanced.html130
-rw-r--r--glew/auto/doc/basic.html180
-rw-r--r--glew/auto/doc/build.html49
-rw-r--r--glew/auto/doc/credits.html2
-rw-r--r--glew/auto/doc/index.html113
-rw-r--r--glew/auto/doc/install.html126
-rw-r--r--glew/auto/doc/log.html1319
-rw-r--r--glew/auto/extensions/gl/.dummy0
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_GLES_layers4
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_blob_cache5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_create_native_client_buffer9
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_framebuffer_target5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_front_buffer_auto_refresh5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_get_frame_timestamps24
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_get_native_client_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_image_native_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_native_fence_sync9
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_presentation_time5
-rw-r--r--glew/auto/extensions/gl/EGL_ANDROID_recordable5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_d3d_share_handle_client_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_device_d3d6
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_query_surface_pointer5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_surface_d3d_texture_2d_share_handle5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_sync_control_rate5
-rw-r--r--glew/auto/extensions/gl/EGL_ANGLE_window_fixed_size5
-rw-r--r--glew/auto/extensions/gl/EGL_ARM_image_format6
-rw-r--r--glew/auto/extensions/gl/EGL_ARM_implicit_external_sync5
-rw-r--r--glew/auto/extensions/gl/EGL_ARM_pixmap_multisample_discard5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_bind_to_front5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_buffer_age5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_client_extensions4
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_client_sync7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_compositor15
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_config_select_group5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_create_context_robustness8
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_base7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_drm6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_drm_render_node5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_enumeration5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_openwf6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_persistent_id8
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_query10
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_device_query_name5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_explicit_device5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_linear5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_pq5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p35
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_linear5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_passthrough5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb_linear5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import26
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import_modifiers17
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_image_gl_colorspace6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_image_implicit_sync_control7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_multiview_window5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_output_base17
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_output_drm7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_output_openwf6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_pixel_format_float7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_base7
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_device5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_wayland5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_x116
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_platform_xcb6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_present_opaque5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_protected_content5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_protected_surface5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_stream_consumer_egloutput5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_surface_CTA861_3_metadata6
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_surface_SMPTE2086_metadata15
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_surface_compression22
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_swap_buffers_with_damage5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_sync_reuse5
-rw-r--r--glew/auto/extensions/gl/EGL_EXT_yuv_surface29
-rw-r--r--glew/auto/extensions/gl/EGL_HI_clientpixmap6
-rw-r--r--glew/auto/extensions/gl/EGL_HI_colorformats8
-rw-r--r--glew/auto/extensions/gl/EGL_IMG_context_priority8
-rw-r--r--glew/auto/extensions/gl/EGL_IMG_image_plane_attribs6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_cl_event7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_cl_event28
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_client_get_all_proc_addresses4
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_config_attribs7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_context_flush_control7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_create_context18
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_create_context_no_error5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_debug19
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_display_reference6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_fence_sync7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_get_all_proc_addresses4
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_colorspace7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_renderbuffer_image5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_texture_2D_image6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_texture_3D_image6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_gl_texture_cubemap_image10
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_image8
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_image_base6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_image_pixmap5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_lock_surface27
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_lock_surface25
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_lock_surface327
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_mutable_render_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_no_config_context5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_partial_update6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_platform_android5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_platform_gbm5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_platform_wayland5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_platform_x116
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_reusable_sync19
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream22
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_attrib13
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_consumer_gltexture8
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_cross_process_fd7
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_fifo9
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_producer_aldatalocator4
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_stream_producer_eglsurface6
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_surfaceless_context4
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_swap_buffers_with_damage5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_vg_parent_image5
-rw-r--r--glew/auto/extensions/gl/EGL_KHR_wait_sync5
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_drm_image14
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_image_dma_buf_export6
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_platform_gbm5
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_platform_surfaceless5
-rw-r--r--glew/auto/extensions/gl/EGL_MESA_query_driver6
-rw-r--r--glew/auto/extensions/gl/EGL_NOK_swap_region5
-rw-r--r--glew/auto/extensions/gl/EGL_NOK_swap_region25
-rw-r--r--glew/auto/extensions/gl/EGL_NOK_texture_from_pixmap5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_3dvision_surface5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_context_priority_realtime5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_coverage_sample6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_coverage_sample_resolve7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_cuda_event7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_depth_nonlinear7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_device_cuda5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_native_query7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_post_convert_rounding4
-rw-r--r--glew/auto/extensions/gl/EGL_NV_post_sub_buffer6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_quadruple_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_robustness_video_memory_purge5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_consumer_eglimage12
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_consumer_gltexture_yuv10
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_display5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_object5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_partition5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_process5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_cross_system5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_dma6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_fifo_next6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_fifo_synchronous5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_flush5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_frame_limits6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_metadata21
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_origin15
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_remote12
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_reset7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_socket7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_socket_inet5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_socket_unix5
-rw-r--r--glew/auto/extensions/gl/EGL_NV_stream_sync7
-rw-r--r--glew/auto/extensions/gl/EGL_NV_sync23
-rw-r--r--glew/auto/extensions/gl/EGL_NV_system_time6
-rw-r--r--glew/auto/extensions/gl/EGL_NV_triple_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_TIZEN_image_native_buffer5
-rw-r--r--glew/auto/extensions/gl/EGL_TIZEN_image_native_surface5
-rw-r--r--glew/auto/extensions/gl/EGL_WL_bind_wayland_display14
-rw-r--r--glew/auto/extensions/gl/EGL_WL_create_wayland_buffer_from_image5
-rw-r--r--glew/auto/extensions/gl/GLX_3DFX_multisample6
-rw-r--r--glew/auto/extensions/gl/GLX_AMD_gpu_association23
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_context_flush_control7
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_create_context10
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_create_context_no_error5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_create_context_profile7
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_create_context_robustness8
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_fbconfig_float6
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_get_proc_address5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_multisample6
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_robustness_application_isolation5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_robustness_share_group_isolation5
-rw-r--r--glew/auto/extensions/gl/GLX_ARB_vertex_buffer_object5
-rw-r--r--glew/auto/extensions/gl/GLX_ATI_pixel_format_float5
-rw-r--r--glew/auto/extensions/gl/GLX_ATI_render_texture42
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_buffer_age5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_context_priority8
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_create_context_es2_profile5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_create_context_es_profile5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_fbconfig_packed_float6
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_get_drawable_type5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_import_context13
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_libglvnd5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_no_config_context4
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_scene_marker4
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_stereo_tree7
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_swap_control7
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_swap_control_tear5
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_texture_from_pixmap39
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_visual_info20
-rw-r--r--glew/auto/extensions/gl/GLX_EXT_visual_rating7
-rw-r--r--glew/auto/extensions/gl/GLX_INTEL_swap_event8
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_agp_offset5
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_copy_sub_buffer5
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_pixmap_colormap5
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_query_renderer19
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_release_buffers5
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_set_3dfx_mode7
-rw-r--r--glew/auto/extensions/gl/GLX_MESA_swap_control6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_copy_buffer6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_copy_image6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_delay_before_swap5
-rw-r--r--glew/auto/extensions/gl/GLX_NV_float_buffer5
-rw-r--r--glew/auto/extensions/gl/GLX_NV_multigpu_context9
-rw-r--r--glew/auto/extensions/gl/GLX_NV_multisample_coverage6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_present_video7
-rw-r--r--glew/auto/extensions/gl/GLX_NV_robustness_video_memory_purge5
-rw-r--r--glew/auto/extensions/gl/GLX_NV_swap_group10
-rw-r--r--glew/auto/extensions/gl/GLX_NV_vertex_array_range6
-rw-r--r--glew/auto/extensions/gl/GLX_NV_video_capture13
-rw-r--r--glew/auto/extensions/gl/GLX_NV_video_out20
-rw-r--r--glew/auto/extensions/gl/GLX_OML_swap_method11
-rw-r--r--glew/auto/extensions/gl/GLX_OML_sync_control9
-rw-r--r--glew/auto/extensions/gl/GLX_SGIS_blended_overlay5
-rw-r--r--glew/auto/extensions/gl/GLX_SGIS_color_range4
-rw-r--r--glew/auto/extensions/gl/GLX_SGIS_multisample6
-rw-r--r--glew/auto/extensions/gl/GLX_SGIS_shared_multisample6
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_fbconfig23
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_hyperpipe26
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_pbuffer36
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_swap_barrier6
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_swap_group5
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_video_resize11
-rw-r--r--glew/auto/extensions/gl/GLX_SGIX_visual_select_group5
-rw-r--r--glew/auto/extensions/gl/GLX_SGI_cushion5
-rw-r--r--glew/auto/extensions/gl/GLX_SGI_make_current_read6
-rw-r--r--glew/auto/extensions/gl/GLX_SGI_swap_control5
-rw-r--r--glew/auto/extensions/gl/GLX_SGI_video_sync6
-rw-r--r--glew/auto/extensions/gl/GLX_SUN_get_transparent_index5
-rw-r--r--glew/auto/extensions/gl/GLX_SUN_video_resize8
-rw-r--r--glew/auto/extensions/gl/GL_3DFX_multisample8
-rw-r--r--glew/auto/extensions/gl/GL_3DFX_tbuffer5
-rw-r--r--glew/auto/extensions/gl/GL_3DFX_texture_compression_FXT16
-rw-r--r--glew/auto/extensions/gl/GL_AMD_blend_minmax_factor6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_compressed_3DC_texture6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_compressed_ATC_texture7
-rw-r--r--glew/auto/extensions/gl/GL_AMD_conservative_depth4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_debug_output23
-rw-r--r--glew/auto/extensions/gl/GL_AMD_depth_clamp_separate6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_draw_buffers_blend8
-rw-r--r--glew/auto/extensions/gl/GL_AMD_framebuffer_multisample_advanced12
-rw-r--r--glew/auto/extensions/gl/GL_AMD_framebuffer_sample_positions12
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gcn_shader4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float17
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float_fetch33
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gpu_shader_int164
-rw-r--r--glew/auto/extensions/gl/GL_AMD_gpu_shader_int644
-rw-r--r--glew/auto/extensions/gl/GL_AMD_interleaved_elements14
-rw-r--r--glew/auto/extensions/gl/GL_AMD_multi_draw_indirect6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_name_gen_delete12
-rw-r--r--glew/auto/extensions/gl/GL_AMD_occlusion_query_event11
-rw-r--r--glew/auto/extensions/gl/GL_AMD_performance_monitor22
-rw-r--r--glew/auto/extensions/gl/GL_AMD_pinned_memory5
-rw-r--r--glew/auto/extensions/gl/GL_AMD_program_binary_Z4005
-rw-r--r--glew/auto/extensions/gl/GL_AMD_query_buffer_object7
-rw-r--r--glew/auto/extensions/gl/GL_AMD_sample_positions6
-rw-r--r--glew/auto/extensions/gl/GL_AMD_seamless_cubemap_per_texture5
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_atomic_counter_ops4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_ballot4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_explicit_vertex_parameter4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_image_load_store_lod4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_stencil_export4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_stencil_value_export4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_shader_trinary_minmax4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_sparse_texture15
-rw-r--r--glew/auto/extensions/gl/GL_AMD_stencil_operation_extended9
-rw-r--r--glew/auto/extensions/gl/GL_AMD_texture_gather_bias_lod4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_texture_texture44
-rw-r--r--glew/auto/extensions/gl/GL_AMD_transform_feedback3_lines_triangles4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_transform_feedback45
-rw-r--r--glew/auto/extensions/gl/GL_AMD_vertex_shader_layer4
-rw-r--r--glew/auto/extensions/gl/GL_AMD_vertex_shader_tessellator13
-rw-r--r--glew/auto/extensions/gl/GL_AMD_vertex_shader_viewport_index4
-rw-r--r--glew/auto/extensions/gl/GL_ANDROID_extension_pack_es31a4
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_depth_texture4
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_framebuffer_blit9
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_framebuffer_multisample8
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_instanced_arrays8
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_pack_reverse_row_order5
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_program_binary5
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt18
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt38
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt58
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_texture_usage6
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_timer_query21
-rw-r--r--glew/auto/extensions/gl/GL_ANGLE_translated_shader_source6
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_aux_depth_stencil5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_client_storage5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_clip_distance13
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_color_buffer_packed_float4
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_copy_texture_levels5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_element_array12
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_fence14
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_float_pixels18
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_flush_buffer_range8
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_framebuffer_multisample13
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_object_purgeable13
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_pixel_buffer5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_rgb_4228
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_row_bytes6
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_specular_vector5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_sync27
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_2D_limited_npot4
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_format_BGRA88886
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_max_level5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_packed_float8
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_texture_range13
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_transform_hint5
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_vertex_array_object9
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_vertex_array_range15
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_vertex_program_evaluators21
-rw-r--r--glew/auto/extensions/gl/GL_APPLE_ycbcr_4225
-rw-r--r--glew/auto/extensions/gl/GL_ARB_ES2_compatibility26
-rw-r--r--glew/auto/extensions/gl/GL_ARB_ES3_1_compatibility5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_ES3_2_compatibility8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_ES3_compatibility18
-rw-r--r--glew/auto/extensions/gl/GL_ARB_arrays_of_arrays4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_base_instance7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_bindless_texture21
-rw-r--r--glew/auto/extensions/gl/GL_ARB_blend_func_extended10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_buffer_storage14
-rw-r--r--glew/auto/extensions/gl/GL_ARB_cl_event9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_clear_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_clear_texture7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_clip_control11
-rw-r--r--glew/auto/extensions/gl/GL_ARB_color_buffer_float10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_compatibility4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_compressed_texture_pixel_storage12
-rw-r--r--glew/auto/extensions/gl/GL_ARB_compute_shader24
-rw-r--r--glew/auto/extensions/gl/GL_ARB_compute_variable_group_size9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_conditional_render_inverted8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_conservative_depth4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_copy_buffer7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_copy_image5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_cull_distance6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_debug_output31
-rw-r--r--glew/auto/extensions/gl/GL_ARB_depth_buffer_float7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_depth_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_depth_texture9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_derivative_control4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_direct_state_access103
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_buffers22
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_buffers_blend8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_elements_base_vertex8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_indirect8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_draw_instanced4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_enhanced_layouts7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_explicit_attrib_location4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_explicit_uniform_location5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_coord_conventions4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_layer_viewport4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_program19
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_program_shadow4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_shader7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_fragment_shader_interlock4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_framebuffer_no_attachments17
-rw-r--r--glew/auto/extensions/gl/GL_ARB_framebuffer_object98
-rw-r--r--glew/auto/extensions/gl/GL_ARB_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_geometry_shader427
-rw-r--r--glew/auto/extensions/gl/GL_ARB_get_program_binary11
-rw-r--r--glew/auto/extensions/gl/GL_ARB_get_texture_sub_image6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_gl_spirv7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_gpu_shader510
-rw-r--r--glew/auto/extensions/gl/GL_ARB_gpu_shader_fp6434
-rw-r--r--glew/auto/extensions/gl/GL_ARB_gpu_shader_int6448
-rw-r--r--glew/auto/extensions/gl/GL_ARB_half_float_pixel5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_half_float_vertex5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_imaging113
-rw-r--r--glew/auto/extensions/gl/GL_ARB_indirect_parameters8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_instanced_arrays8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_internalformat_query6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_internalformat_query2104
-rw-r--r--glew/auto/extensions/gl/GL_ARB_invalidate_subdata10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_map_buffer_alignment5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_map_buffer_range12
-rw-r--r--glew/auto/extensions/gl/GL_ARB_matrix_palette19
-rw-r--r--glew/auto/extensions/gl/GL_ARB_multi_bind10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_multi_draw_indirect6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_multisample14
-rw-r--r--glew/auto/extensions/gl/GL_ARB_multitexture73
-rw-r--r--glew/auto/extensions/gl/GL_ARB_occlusion_query17
-rw-r--r--glew/auto/extensions/gl/GL_ARB_occlusion_query25
-rw-r--r--glew/auto/extensions/gl/GL_ARB_parallel_shader_compile7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_pipeline_statistics_query15
-rw-r--r--glew/auto/extensions/gl/GL_ARB_pixel_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_point_parameters10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_point_sprite6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_polygon_offset_clamp6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_post_depth_coverage4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_program_interface_query57
-rw-r--r--glew/auto/extensions/gl/GL_ARB_provoking_vertex9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_query_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_robust_buffer_access_behavior4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_robustness31
-rw-r--r--glew/auto/extensions/gl/GL_ARB_robustness_application_isolation4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_robustness_share_group_isolation4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sample_locations15
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sample_shading7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sampler_objects19
-rw-r--r--glew/auto/extensions/gl/GL_ARB_seamless_cube_map5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_seamless_cubemap_per_texture5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_separate_shader_objects73
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_atomic_counter_ops4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_atomic_counters34
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_ballot4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_bit_encoding4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_clock4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_draw_parameters4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_group_vote4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_image_load_store70
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_image_size4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_objects79
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_precision4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_stencil_export4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_storage_buffer_object21
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_subroutine21
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_texture_image_samples4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_texture_lod4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shader_viewport_layer_array4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shading_language_1005
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shading_language_420pack4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shading_language_include13
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shading_language_packing4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shadow7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_shadow_ambient5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sparse_buffer7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sparse_texture16
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sparse_texture24
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sparse_texture_clamp4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_spirv_extensions6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_stencil_texturing5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_sync26
-rw-r--r--glew/auto/extensions/gl/GL_ARB_tessellation_shader38
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_barrier5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_border_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_buffer_object10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_buffer_object_rgb324
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_buffer_range9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_compression22
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_compression_bptc8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_compression_rgtc8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_cube_map16
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_cube_map_array11
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_env_add4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_env_combine26
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_env_crossbar4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_env_dot36
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_filter_anisotropic6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_filter_minmax6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_float24
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_gather7
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_mirror_clamp_to_edge5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_mirrored_repeat5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_multisample29
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_non_power_of_two4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_query_levels4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_query_lod4
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_rectangle10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_rg28
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_rgb10_a2ui5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_stencil86
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_storage8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_storage_multisample8
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_swizzle9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_texture_view10
-rw-r--r--glew/auto/extensions/gl/GL_ARB_timer_query9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transform_feedback215
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transform_feedback310
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transform_feedback_instanced6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transform_feedback_overflow_query6
-rw-r--r--glew/auto/extensions/gl/GL_ARB_transpose_matrix12
-rw-r--r--glew/auto/extensions/gl/GL_ARB_uniform_buffer_object47
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_array_bgra5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_array_object9
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_attrib_64bit14
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_attrib_binding24
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_blend56
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_buffer_object48
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_program145
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_shader14
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_type_10f_11f_11f_rev5
-rw-r--r--glew/auto/extensions/gl/GL_ARB_vertex_type_2_10_10_10_rev44
-rw-r--r--glew/auto/extensions/gl/GL_ARB_viewport_array27
-rw-r--r--glew/auto/extensions/gl/GL_ARB_window_pos20
-rw-r--r--glew/auto/extensions/gl/GL_ARM_mali_program_binary5
-rw-r--r--glew/auto/extensions/gl/GL_ARM_mali_shader_binary5
-rw-r--r--glew/auto/extensions/gl/GL_ARM_rgba85
-rw-r--r--glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch6
-rw-r--r--glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch_depth_stencil4
-rw-r--r--glew/auto/extensions/gl/GL_ARM_texture_unnormalized_coordinates5
-rw-r--r--glew/auto/extensions/gl/GL_ATIX_point_sprites10
-rw-r--r--glew/auto/extensions/gl/GL_ATIX_texture_env_combine37
-rw-r--r--glew/auto/extensions/gl/GL_ATIX_texture_env_route7
-rw-r--r--glew/auto/extensions/gl/GL_ATIX_vertex_shader_output_point_size5
-rw-r--r--glew/auto/extensions/gl/GL_ATI_draw_buffers22
-rw-r--r--glew/auto/extensions/gl/GL_ATI_element_array10
-rw-r--r--glew/auto/extensions/gl/GL_ATI_envmap_bumpmap16
-rw-r--r--glew/auto/extensions/gl/GL_ATI_fragment_shader72
-rw-r--r--glew/auto/extensions/gl/GL_ATI_map_object_buffer6
-rw-r--r--glew/auto/extensions/gl/GL_ATI_meminfo7
-rw-r--r--glew/auto/extensions/gl/GL_ATI_pn_triangles15
-rw-r--r--glew/auto/extensions/gl/GL_ATI_separate_stencil10
-rw-r--r--glew/auto/extensions/gl/GL_ATI_shader_texture_lod4
-rw-r--r--glew/auto/extensions/gl/GL_ATI_text_fragment_shader5
-rw-r--r--glew/auto/extensions/gl/GL_ATI_texture_compression_3dc5
-rw-r--r--glew/auto/extensions/gl/GL_ATI_texture_env_combine37
-rw-r--r--glew/auto/extensions/gl/GL_ATI_texture_float16
-rw-r--r--glew/auto/extensions/gl/GL_ATI_texture_mirror_once6
-rw-r--r--glew/auto/extensions/gl/GL_ATI_vertex_array_object24
-rw-r--r--glew/auto/extensions/gl/GL_ATI_vertex_attrib_array_object7
-rw-r--r--glew/auto/extensions/gl/GL_ATI_vertex_streams59
-rw-r--r--glew/auto/extensions/gl/GL_DMP_program_binary7
-rw-r--r--glew/auto/extensions/gl/GL_DMP_shader_binary5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_422_pixels8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_Cg_shader6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_image_array4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_image_external_wrap_modes4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_image_storage6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_image_storage_compression7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_EGL_sync4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_YUV_target5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_abgr5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_base_instance7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_bgra6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_bindable_uniform13
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_color10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_equation_separate7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_func_extended14
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_func_separate9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_logic_op4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_minmax9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_blend_subtract6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_buffer_storage15
-rw-r--r--glew/auto/extensions/gl/GL_EXT_clear_texture6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_clip_control11
-rw-r--r--glew/auto/extensions/gl/GL_EXT_clip_cull_distance15
-rw-r--r--glew/auto/extensions/gl/GL_EXT_clip_volume_hint5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_cmyka8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_color_buffer_float4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_color_buffer_half_float10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_color_subtable6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_compiled_vertex_array8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_compressed_ETC1_RGB8_sub_texture4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_conservative_depth4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_convolution37
-rw-r--r--glew/auto/extensions/gl/GL_EXT_coordinate_frame20
-rw-r--r--glew/auto/extensions/gl/GL_EXT_copy_image5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_copy_texture9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_cull_vertex9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_debug_label12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_debug_marker7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_depth_bounds_test7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_depth_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_direct_state_access221
-rw-r--r--glew/auto/extensions/gl/GL_EXT_discard_framebuffer8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_disjoint_timer_query21
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_buffers39
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_buffers210
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_buffers_indexed12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_elements_base_vertex8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_instanced6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_range_elements7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_draw_transform_feedback6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_external_buffer7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_float_blend4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_fog_coord17
-rw-r--r--glew/auto/extensions/gl/GL_EXT_frag_depth4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_fragment_lighting36
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_blit9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_multisample10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_multisample_blit_scaled6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_object72
-rw-r--r--glew/auto/extensions/gl/GL_EXT_framebuffer_sRGB6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_geometry_point_size37
-rw-r--r--glew/auto/extensions/gl/GL_EXT_geometry_shader37
-rw-r--r--glew/auto/extensions/gl/GL_EXT_geometry_shader427
-rw-r--r--glew/auto/extensions/gl/GL_EXT_gpu_program_parameters6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_gpu_shader464
-rw-r--r--glew/auto/extensions/gl/GL_EXT_gpu_shader54
-rw-r--r--glew/auto/extensions/gl/GL_EXT_histogram27
-rw-r--r--glew/auto/extensions/gl/GL_EXT_index_array_formats4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_index_func5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_index_material5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_index_texture4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_instanced_arrays6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_light_texture16
-rw-r--r--glew/auto/extensions/gl/GL_EXT_map_buffer_range12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_memory_object34
-rw-r--r--glew/auto/extensions/gl/GL_EXT_memory_object_fd6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_memory_object_win3217
-rw-r--r--glew/auto/extensions/gl/GL_EXT_misc_attribute4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multi_draw_arrays6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multi_draw_indirect6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiple_textures4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multisample23
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multisample_compatibility6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture24
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiview_draw_buffers12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiview_tessellation_geometry_shader4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiview_texture_multisample4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_multiview_timer_query4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_occlusion_query_boolean9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_packed_depth_stencil8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_packed_float7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_packed_pixels9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_paletted_texture29
-rw-r--r--glew/auto/extensions/gl/GL_EXT_pixel_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_pixel_transform19
-rw-r--r--glew/auto/extensions/gl/GL_EXT_pixel_transform_color_table4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_point_parameters10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_polygon_offset8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_polygon_offset_clamp6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_post_depth_coverage4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_primitive_bounding_box6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_protected_textures6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_provoking_vertex9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_pvrtc_sRGB8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_raster_multisample22
-rw-r--r--glew/auto/extensions/gl/GL_EXT_read_format_bgra7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_render_snorm12
-rw-r--r--glew/auto/extensions/gl/GL_EXT_rescale_normal5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_robustness15
-rw-r--r--glew/auto/extensions/gl/GL_EXT_sRGB8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_sRGB_write_control5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_scene_marker6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_secondary_color28
-rw-r--r--glew/auto/extensions/gl/GL_EXT_semaphore21
-rw-r--r--glew/auto/extensions/gl/GL_EXT_semaphore_fd5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_semaphore_win326
-rw-r--r--glew/auto/extensions/gl/GL_EXT_separate_depth_stencil4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_separate_shader_objects8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_separate_specular_color7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch_non_coherent5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_group_vote4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_image_load_formatted4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_image_load_store61
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_implicit_conversions4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_integer_mix4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_io_blocks4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_non_constant_global_initializers4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage210
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_samples_identical4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shader_texture_lod4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shadow_funcs4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shadow_samplers8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_shared_texture_palette5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_sparse_texture22
-rw-r--r--glew/auto/extensions/gl/GL_EXT_sparse_texture24
-rw-r--r--glew/auto/extensions/gl/GL_EXT_static_vertex_array4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_stencil_clear_tag6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_stencil_two_side7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_stencil_wrap6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_subtexture7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_tessellation_point_size48
-rw-r--r--glew/auto/extensions/gl/GL_EXT_tessellation_shader47
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture46
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture3D14
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_array13
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_border_clamp10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_buffer18
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_buffer_object10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode_rgb9e55
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_bptc8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_dxt14
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_latc8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_rgtc8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc_srgb8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_cube_map16
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_cube_map_array13
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_edge_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_env4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_env_add4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_env_combine25
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_env_dot36
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_filter_anisotropic6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_filter_minmax6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_format_BGRA88885
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_format_sRGB_override5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_integer57
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_lod_bias7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp_to_edge5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_norm1612
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_object15
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_perturb_normal7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_query_lod4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_rectangle8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_rg8
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_sRGB20
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_sRGB_R85
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_sRGB_RG85
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_sRGB_decode7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_shadow_lod4
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_shared_exponent7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_snorm29
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_storage34
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_storage_compression22
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_swizzle9
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_type_2_10_10_10_REV5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_texture_view10
-rw-r--r--glew/auto/extensions/gl/GL_EXT_timer_query7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_transform_feedback26
-rw-r--r--glew/auto/extensions/gl/GL_EXT_unpack_subimage7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_array45
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_array_bgra5
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_array_setXXX7
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_attrib_64bit27
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_shader157
-rw-r--r--glew/auto/extensions/gl/GL_EXT_vertex_weighting20
-rw-r--r--glew/auto/extensions/gl/GL_EXT_win32_keyed_mutex6
-rw-r--r--glew/auto/extensions/gl/GL_EXT_window_rectangles11
-rw-r--r--glew/auto/extensions/gl/GL_EXT_x11_sync_object6
-rw-r--r--glew/auto/extensions/gl/GL_FJ_shader_binary_GCCSO5
-rw-r--r--glew/auto/extensions/gl/GL_GREMEDY_frame_terminator5
-rw-r--r--glew/auto/extensions/gl/GL_GREMEDY_string_marker5
-rw-r--r--glew/auto/extensions/gl/GL_HP_convolution_border_modes4
-rw-r--r--glew/auto/extensions/gl/GL_HP_image_transform10
-rw-r--r--glew/auto/extensions/gl/GL_HP_occlusion_test4
-rw-r--r--glew/auto/extensions/gl/GL_HP_texture_lighting4
-rw-r--r--glew/auto/extensions/gl/GL_IBM_cull_vertex5
-rw-r--r--glew/auto/extensions/gl/GL_IBM_multimode_draw_arrays6
-rw-r--r--glew/auto/extensions/gl/GL_IBM_rasterpos_clip5
-rw-r--r--glew/auto/extensions/gl/GL_IBM_static_data6
-rw-r--r--glew/auto/extensions/gl/GL_IBM_texture_mirrored_repeat5
-rw-r--r--glew/auto/extensions/gl/GL_IBM_vertex_array_lists28
-rw-r--r--glew/auto/extensions/gl/GL_IMG_bindless_texture10
-rw-r--r--glew/auto/extensions/gl/GL_IMG_framebuffer_downsample10
-rw-r--r--glew/auto/extensions/gl/GL_IMG_multisampled_render_to_texture10
-rw-r--r--glew/auto/extensions/gl/GL_IMG_program_binary5
-rw-r--r--glew/auto/extensions/gl/GL_IMG_read_format6
-rw-r--r--glew/auto/extensions/gl/GL_IMG_shader_binary5
-rw-r--r--glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc8
-rw-r--r--glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc26
-rw-r--r--glew/auto/extensions/gl/GL_IMG_texture_env_enhanced_fixed_function11
-rw-r--r--glew/auto/extensions/gl/GL_IMG_texture_filter_cubic7
-rw-r--r--glew/auto/extensions/gl/GL_IMG_tile_region_protection7
-rw-r--r--glew/auto/extensions/gl/GL_INGR_color_clamp12
-rw-r--r--glew/auto/extensions/gl/GL_INGR_interlace_read5
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_blackhole_render5
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_conservative_rasterization5
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_fragment_shader_ordering4
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_framebuffer_CMAA5
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_map_texture11
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_parallel_arrays13
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_performance_query34
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_shader_integer_functions24
-rw-r--r--glew/auto/extensions/gl/GL_INTEL_texture_scissor6
-rw-r--r--glew/auto/extensions/gl/GL_KHR_blend_equation_advanced21
-rw-r--r--glew/auto/extensions/gl/GL_KHR_blend_equation_advanced_coherent4
-rw-r--r--glew/auto/extensions/gl/GL_KHR_context_flush_control7
-rw-r--r--glew/auto/extensions/gl/GL_KHR_debug55
-rw-r--r--glew/auto/extensions/gl/GL_KHR_no_error5
-rw-r--r--glew/auto/extensions/gl/GL_KHR_parallel_shader_compile7
-rw-r--r--glew/auto/extensions/gl/GL_KHR_robust_buffer_access_behavior4
-rw-r--r--glew/auto/extensions/gl/GL_KHR_robustness16
-rw-r--r--glew/auto/extensions/gl/GL_KHR_shader_subgroup16
-rw-r--r--glew/auto/extensions/gl/GL_KHR_texture_compression_astc_hdr52
-rw-r--r--glew/auto/extensions/gl/GL_KHR_texture_compression_astc_ldr52
-rw-r--r--glew/auto/extensions/gl/GL_KHR_texture_compression_astc_sliced_3d4
-rw-r--r--glew/auto/extensions/gl/GL_KTX_buffer_region13
-rw-r--r--glew/auto/extensions/gl/GL_MESAX_texture_stack10
-rw-r--r--glew/auto/extensions/gl/GL_MESA_bgra6
-rw-r--r--glew/auto/extensions/gl/GL_MESA_framebuffer_flip_x5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_framebuffer_flip_y7
-rw-r--r--glew/auto/extensions/gl/GL_MESA_framebuffer_swap_xy5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_pack_invert5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_program_binary_formats5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_resize_buffers5
-rw-r--r--glew/auto/extensions/gl/GL_MESA_shader_integer_functions4
-rw-r--r--glew/auto/extensions/gl/GL_MESA_tile_raster_order4
-rw-r--r--glew/auto/extensions/gl/GL_MESA_window_pos28
-rw-r--r--glew/auto/extensions/gl/GL_MESA_ycbcr_texture7
-rw-r--r--glew/auto/extensions/gl/GL_NVX_blend_equation_advanced_multi_draw_buffers4
-rw-r--r--glew/auto/extensions/gl/GL_NVX_conditional_render6
-rw-r--r--glew/auto/extensions/gl/GL_NVX_gpu_memory_info9
-rw-r--r--glew/auto/extensions/gl/GL_NVX_gpu_multicast211
-rw-r--r--glew/auto/extensions/gl/GL_NVX_linked_gpu_multicast9
-rw-r--r--glew/auto/extensions/gl/GL_NVX_progress_fence8
-rw-r--r--glew/auto/extensions/gl/GL_NV_3dvision_settings13
-rw-r--r--glew/auto/extensions/gl/GL_NV_EGL_stream_consumer_external8
-rw-r--r--glew/auto/extensions/gl/GL_NV_alpha_to_coverage_dither_control9
-rw-r--r--glew/auto/extensions/gl/GL_NV_bgr5
-rw-r--r--glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect6
-rw-r--r--glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect_count6
-rw-r--r--glew/auto/extensions/gl/GL_NV_bindless_texture17
-rw-r--r--glew/auto/extensions/gl/GL_NV_blend_equation_advanced56
-rw-r--r--glew/auto/extensions/gl/GL_NV_blend_equation_advanced_coherent4
-rw-r--r--glew/auto/extensions/gl/GL_NV_blend_minmax_factor6
-rw-r--r--glew/auto/extensions/gl/GL_NV_blend_square4
-rw-r--r--glew/auto/extensions/gl/GL_NV_clip_space_w_scaling8
-rw-r--r--glew/auto/extensions/gl/GL_NV_command_list40
-rw-r--r--glew/auto/extensions/gl/GL_NV_compute_program56
-rw-r--r--glew/auto/extensions/gl/GL_NV_compute_shader_derivatives4
-rw-r--r--glew/auto/extensions/gl/GL_NV_conditional_render10
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster9
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster_dilate8
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap5
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap_triangles8
-rw-r--r--glew/auto/extensions/gl/GL_NV_conservative_raster_underestimation4
-rw-r--r--glew/auto/extensions/gl/GL_NV_copy_buffer7
-rw-r--r--glew/auto/extensions/gl/GL_NV_copy_depth_to_color6
-rw-r--r--glew/auto/extensions/gl/GL_NV_copy_image5
-rw-r--r--glew/auto/extensions/gl/GL_NV_deep_texture3D6
-rw-r--r--glew/auto/extensions/gl/GL_NV_depth_buffer_float11
-rw-r--r--glew/auto/extensions/gl/GL_NV_depth_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_NV_depth_nonlinear5
-rw-r--r--glew/auto/extensions/gl/GL_NV_depth_range_unclamped9
-rw-r--r--glew/auto/extensions/gl/GL_NV_draw_buffers38
-rw-r--r--glew/auto/extensions/gl/GL_NV_draw_instanced6
-rw-r--r--glew/auto/extensions/gl/GL_NV_draw_texture5
-rw-r--r--glew/auto/extensions/gl/GL_NV_draw_vulkan_image10
-rw-r--r--glew/auto/extensions/gl/GL_NV_evaluators37
-rw-r--r--glew/auto/extensions/gl/GL_NV_explicit_attrib_location4
-rw-r--r--glew/auto/extensions/gl/GL_NV_explicit_multisample17
-rw-r--r--glew/auto/extensions/gl/GL_NV_fbo_color_attachments21
-rw-r--r--glew/auto/extensions/gl/GL_NV_fence14
-rw-r--r--glew/auto/extensions/gl/GL_NV_fill_rectangle5
-rw-r--r--glew/auto/extensions/gl/GL_NV_float_buffer19
-rw-r--r--glew/auto/extensions/gl/GL_NV_fog_distance7
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_coverage_to_color7
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_program16
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_program29
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_program44
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_program_option4
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_shader_barycentric4
-rw-r--r--glew/auto/extensions/gl/GL_NV_fragment_shader_interlock4
-rw-r--r--glew/auto/extensions/gl/GL_NV_framebuffer_blit9
-rw-r--r--glew/auto/extensions/gl/GL_NV_framebuffer_mixed_samples18
-rw-r--r--glew/auto/extensions/gl/GL_NV_framebuffer_multisample8
-rw-r--r--glew/auto/extensions/gl/GL_NV_framebuffer_multisample_coverage9
-rw-r--r--glew/auto/extensions/gl/GL_NV_generate_mipmap_sRGB4
-rw-r--r--glew/auto/extensions/gl/GL_NV_geometry_program48
-rw-r--r--glew/auto/extensions/gl/GL_NV_geometry_shader44
-rw-r--r--glew/auto/extensions/gl/GL_NV_geometry_shader_passthrough4
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_multicast21
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_program424
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_program510
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_program5_mem_extended4
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_program_fp644
-rw-r--r--glew/auto/extensions/gl/GL_NV_gpu_shader566
-rw-r--r--glew/auto/extensions/gl/GL_NV_half_float52
-rw-r--r--glew/auto/extensions/gl/GL_NV_image_formats4
-rw-r--r--glew/auto/extensions/gl/GL_NV_instanced_arrays6
-rw-r--r--glew/auto/extensions/gl/GL_NV_internalformat_sample_query9
-rw-r--r--glew/auto/extensions/gl/GL_NV_light_max_exponent6
-rw-r--r--glew/auto/extensions/gl/GL_NV_memory_attachment20
-rw-r--r--glew/auto/extensions/gl/GL_NV_memory_object_sparse8
-rw-r--r--glew/auto/extensions/gl/GL_NV_mesh_shader56
-rw-r--r--glew/auto/extensions/gl/GL_NV_multisample_coverage5
-rw-r--r--glew/auto/extensions/gl/GL_NV_multisample_filter_hint5
-rw-r--r--glew/auto/extensions/gl/GL_NV_non_square_matrices16
-rw-r--r--glew/auto/extensions/gl/GL_NV_occlusion_query15
-rw-r--r--glew/auto/extensions/gl/GL_NV_pack_subimage7
-rw-r--r--glew/auto/extensions/gl/GL_NV_packed_depth_stencil6
-rw-r--r--glew/auto/extensions/gl/GL_NV_packed_float6
-rw-r--r--glew/auto/extensions/gl/GL_NV_packed_float_linear6
-rw-r--r--glew/auto/extensions/gl/GL_NV_parameter_buffer_object12
-rw-r--r--glew/auto/extensions/gl/GL_NV_parameter_buffer_object24
-rw-r--r--glew/auto/extensions/gl/GL_NV_path_rendering217
-rw-r--r--glew/auto/extensions/gl/GL_NV_path_rendering_shared_edge5
-rw-r--r--glew/auto/extensions/gl/GL_NV_pixel_buffer_object8
-rw-r--r--glew/auto/extensions/gl/GL_NV_pixel_data_range12
-rw-r--r--glew/auto/extensions/gl/GL_NV_platform_binary5
-rw-r--r--glew/auto/extensions/gl/GL_NV_point_sprite9
-rw-r--r--glew/auto/extensions/gl/GL_NV_polygon_mode11
-rw-r--r--glew/auto/extensions/gl/GL_NV_present_video16
-rw-r--r--glew/auto/extensions/gl/GL_NV_primitive_restart8
-rw-r--r--glew/auto/extensions/gl/GL_NV_primitive_shading_rate6
-rw-r--r--glew/auto/extensions/gl/GL_NV_query_resource_tag4
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_buffer6
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_buffer_front5
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_depth4
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_depth_stencil4
-rw-r--r--glew/auto/extensions/gl/GL_NV_read_stencil4
-rw-r--r--glew/auto/extensions/gl/GL_NV_register_combiners68
-rw-r--r--glew/auto/extensions/gl/GL_NV_register_combiners27
-rw-r--r--glew/auto/extensions/gl/GL_NV_representative_fragment_test5
-rw-r--r--glew/auto/extensions/gl/GL_NV_robustness_video_memory_purge5
-rw-r--r--glew/auto/extensions/gl/GL_NV_sRGB_formats14
-rw-r--r--glew/auto/extensions/gl/GL_NV_sample_locations15
-rw-r--r--glew/auto/extensions/gl/GL_NV_sample_mask_override_coverage4
-rw-r--r--glew/auto/extensions/gl/GL_NV_scissor_exclusive8
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_counters4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_float4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_float644
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_fp16_vector4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_atomic_int644
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_buffer_load20
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_noperspective_interpolation4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_storage_buffer_object4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_subgroup_partitioned5
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_texture_footprint4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_thread_group7
-rw-r--r--glew/auto/extensions/gl/GL_NV_shader_thread_shuffle4
-rw-r--r--glew/auto/extensions/gl/GL_NV_shading_rate_image32
-rw-r--r--glew/auto/extensions/gl/GL_NV_shadow_samplers_array5
-rw-r--r--glew/auto/extensions/gl/GL_NV_shadow_samplers_cube5
-rw-r--r--glew/auto/extensions/gl/GL_NV_stereo_view_rendering4
-rw-r--r--glew/auto/extensions/gl/GL_NV_tessellation_program59
-rw-r--r--glew/auto/extensions/gl/GL_NV_texgen_emboss7
-rw-r--r--glew/auto/extensions/gl/GL_NV_texgen_reflection6
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_array17
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_barrier5
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_border_clamp6
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_compression_latc8
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_compression_s3tc8
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_compression_s3tc_update4
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_compression_vtc4
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_env_combine49
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_expand_normal5
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_multisample12
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_npot_2D_mipmap4
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_rectangle8
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_rectangle_compressed4
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_shader77
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_shader232
-rw-r--r--glew/auto/extensions/gl/GL_NV_texture_shader321
-rw-r--r--glew/auto/extensions/gl/GL_NV_timeline_semaphore12
-rw-r--r--glew/auto/extensions/gl/GL_NV_transform_feedback40
-rw-r--r--glew/auto/extensions/gl/GL_NV_transform_feedback215
-rw-r--r--glew/auto/extensions/gl/GL_NV_uniform_buffer_unified_memory7
-rw-r--r--glew/auto/extensions/gl/GL_NV_vdpau_interop19
-rw-r--r--glew/auto/extensions/gl/GL_NV_vdpau_interop25
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_array_range11
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_array_range25
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_attrib_integer_64bit25
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_buffer_unified_memory41
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program151
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program1_14
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program24
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program2_option6
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program35
-rw-r--r--glew/auto/extensions/gl/GL_NV_vertex_program45
-rw-r--r--glew/auto/extensions/gl/GL_NV_video_capture45
-rw-r--r--glew/auto/extensions/gl/GL_NV_viewport_array24
-rw-r--r--glew/auto/extensions/gl/GL_NV_viewport_array24
-rw-r--r--glew/auto/extensions/gl/GL_NV_viewport_swizzle17
-rw-r--r--glew/auto/extensions/gl/GL_OES_EGL_image6
-rw-r--r--glew/auto/extensions/gl/GL_OES_EGL_image_external8
-rw-r--r--glew/auto/extensions/gl/GL_OES_EGL_image_external_essl34
-rw-r--r--glew/auto/extensions/gl/GL_OES_blend_equation_separate7
-rw-r--r--glew/auto/extensions/gl/GL_OES_blend_func_separate9
-rw-r--r--glew/auto/extensions/gl/GL_OES_blend_subtract9
-rw-r--r--glew/auto/extensions/gl/GL_OES_byte_coordinates4
-rw-r--r--glew/auto/extensions/gl/GL_OES_compressed_ETC1_RGB8_texture5
-rw-r--r--glew/auto/extensions/gl/GL_OES_compressed_paletted_texture14
-rw-r--r--glew/auto/extensions/gl/GL_OES_copy_image5
-rw-r--r--glew/auto/extensions/gl/GL_OES_depth245
-rw-r--r--glew/auto/extensions/gl/GL_OES_depth325
-rw-r--r--glew/auto/extensions/gl/GL_OES_depth_texture7
-rw-r--r--glew/auto/extensions/gl/GL_OES_depth_texture_cube_map9
-rw-r--r--glew/auto/extensions/gl/GL_OES_draw_buffers_indexed12
-rw-r--r--glew/auto/extensions/gl/GL_OES_draw_texture5
-rw-r--r--glew/auto/extensions/gl/GL_OES_element_index_uint5
-rw-r--r--glew/auto/extensions/gl/GL_OES_extended_matrix_palette4
-rw-r--r--glew/auto/extensions/gl/GL_OES_fbo_render_mipmap4
-rw-r--r--glew/auto/extensions/gl/GL_OES_fragment_precision_high4
-rw-r--r--glew/auto/extensions/gl/GL_OES_framebuffer_object58
-rw-r--r--glew/auto/extensions/gl/GL_OES_geometry_point_size37
-rw-r--r--glew/auto/extensions/gl/GL_OES_geometry_shader37
-rw-r--r--glew/auto/extensions/gl/GL_OES_get_program_binary9
-rw-r--r--glew/auto/extensions/gl/GL_OES_gpu_shader54
-rw-r--r--glew/auto/extensions/gl/GL_OES_mapbuffer11
-rw-r--r--glew/auto/extensions/gl/GL_OES_matrix_get7
-rw-r--r--glew/auto/extensions/gl/GL_OES_matrix_palette24
-rw-r--r--glew/auto/extensions/gl/GL_OES_packed_depth_stencil7
-rw-r--r--glew/auto/extensions/gl/GL_OES_point_size_array9
-rw-r--r--glew/auto/extensions/gl/GL_OES_point_sprite6
-rw-r--r--glew/auto/extensions/gl/GL_OES_read_format6
-rw-r--r--glew/auto/extensions/gl/GL_OES_required_internalformat19
-rw-r--r--glew/auto/extensions/gl/GL_OES_rgb8_rgba86
-rw-r--r--glew/auto/extensions/gl/GL_OES_sample_shading7
-rw-r--r--glew/auto/extensions/gl/GL_OES_sample_variables4
-rw-r--r--glew/auto/extensions/gl/GL_OES_shader_image_atomic4
-rw-r--r--glew/auto/extensions/gl/GL_OES_shader_io_blocks4
-rw-r--r--glew/auto/extensions/gl/GL_OES_shader_multisample_interpolation7
-rw-r--r--glew/auto/extensions/gl/GL_OES_single_precision10
-rw-r--r--glew/auto/extensions/gl/GL_OES_standard_derivatives5
-rw-r--r--glew/auto/extensions/gl/GL_OES_stencil15
-rw-r--r--glew/auto/extensions/gl/GL_OES_stencil45
-rw-r--r--glew/auto/extensions/gl/GL_OES_stencil85
-rw-r--r--glew/auto/extensions/gl/GL_OES_surfaceless_context5
-rw-r--r--glew/auto/extensions/gl/GL_OES_tessellation_point_size47
-rw-r--r--glew/auto/extensions/gl/GL_OES_tessellation_shader47
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_3D14
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_border_clamp14
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_buffer20
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_compression_astc52
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_cube_map26
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_cube_map_array13
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_env_crossbar4
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_mirrored_repeat5
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_npot4
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_stencil86
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_storage_multisample_2d_array10
-rw-r--r--glew/auto/extensions/gl/GL_OES_texture_view10
-rw-r--r--glew/auto/extensions/gl/GL_OES_vertex_array_object9
-rw-r--r--glew/auto/extensions/gl/GL_OES_vertex_half_float5
-rw-r--r--glew/auto/extensions/gl/GL_OES_vertex_type_10_10_10_26
-rw-r--r--glew/auto/extensions/gl/GL_OML_interlace6
-rw-r--r--glew/auto/extensions/gl/GL_OML_resample10
-rw-r--r--glew/auto/extensions/gl/GL_OML_subsample6
-rw-r--r--glew/auto/extensions/gl/GL_OVR_multiview10
-rw-r--r--glew/auto/extensions/gl/GL_OVR_multiview24
-rw-r--r--glew/auto/extensions/gl/GL_OVR_multiview_multisampled_render_to_texture5
-rw-r--r--glew/auto/extensions/gl/GL_PGI_misc_hints24
-rw-r--r--glew/auto/extensions/gl/GL_PGI_vertex_hints26
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_YUV_texture_gather4
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_alpha_test8
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_binning_control9
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_driver_control8
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_extended_get23
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_extended_get28
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_frame_extrapolation5
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_framebuffer_foveated8
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_motion_estimation8
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_perfmon_global_mode5
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_render_shared_exponent5
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_noncoherent6
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_rate4
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_shading_rate13
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_texture_foveated12
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_texture_foveated25
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_texture_foveated_subsampled_layout6
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_tiled_rendering38
-rw-r--r--glew/auto/extensions/gl/GL_QCOM_writeonly_rendering5
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_ES1_0_compatibility36
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_ES1_1_compatibility17
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_enable14
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_error_string5
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_extension_query6
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_log15
-rw-r--r--glew/auto/extensions/gl/GL_REGAL_proc_address5
-rw-r--r--glew/auto/extensions/gl/GL_REND_screen_coordinates6
-rw-r--r--glew/auto/extensions/gl/GL_S3_s3tc10
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_clip_band_hint4
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_color_range13
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_detail_texture6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_fog_function6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_generate_mipmap6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_line_texgen4
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_multisample22
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_multitexture19
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_pixel_texture4
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_point_line_texgen12
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_shared_multisample5
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_sharpen_texture6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture4D6
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_border_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_edge_clamp5
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_filter46
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_lod8
-rw-r--r--glew/auto/extensions/gl/GL_SGIS_texture_select4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_async11
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_async_histogram6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_async_pixel10
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_bali_g_instruments8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_bali_r_instruments7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_bali_timer_instruments4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_blend_alpha_minmax6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_blend_cadd5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_blend_cmultiply5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_calligraphic_fragment4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_clipmap4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_color_matrix_accuracy5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_color_table_index_mode4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_complex_polar4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_convolution_accuracy5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_cube_map13
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_cylinder_texgen4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_datapipe8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_decimation4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_depth_pass_instrument7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_depth_texture7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_dvc4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_flush_raster5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_blend6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_factor_to_alpha4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_layers12
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_offset6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_patchy4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_scale6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fog_texture5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fragment_lighting_space8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fragment_specular_lighting21
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_fragments_instrument7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_framezoom5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_icc_texture16
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_igloo_interface13
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_image_compression4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_impact_pixel_texture4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_instrument_error4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_interlace5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_ir_instrument14
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_line_quality_hint5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_list_priority4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_mpeg115
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_mpeg24
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_nonlinear_lighting_pervertex8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_nurbs_eval24
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_occlusion_instrument5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_packed_6bytes4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_pixel_texture5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_pixel_texture_bits4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_pixel_texture_lod4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_pixel_tiles4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_polynomial_ffd8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_quad_mesh6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_reference_plane5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_resample9
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_scalebias_hint5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_shadow8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_shadow_ambient5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_slim8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_spotlight_cutoff5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_sprite8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_subdiv_patch4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_subsample9
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_tag_sample_buffer5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_add_env4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_coordinate_clamp7
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_lod_bias4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_mipmap_anisotropic6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_multi_buffer5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_phase5
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_range32
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_scale_bias8
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_texture_supersample4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_vector_ops6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_vertex_array_object10
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_vertex_preclip6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_vertex_preclip_hint6
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_ycrcb4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_ycrcb_subsample4
-rw-r--r--glew/auto/extensions/gl/GL_SGIX_ycrcba6
-rw-r--r--glew/auto/extensions/gl/GL_SGI_color_matrix15
-rw-r--r--glew/auto/extensions/gl/GL_SGI_color_table27
-rw-r--r--glew/auto/extensions/gl/GL_SGI_complex4
-rw-r--r--glew/auto/extensions/gl/GL_SGI_complex_type11
-rw-r--r--glew/auto/extensions/gl/GL_SGI_fft16
-rw-r--r--glew/auto/extensions/gl/GL_SGI_texture_color_table6
-rw-r--r--glew/auto/extensions/gl/GL_SUNX_constant_data7
-rw-r--r--glew/auto/extensions/gl/GL_SUN_convolution_border_modes5
-rw-r--r--glew/auto/extensions/gl/GL_SUN_global_alpha14
-rw-r--r--glew/auto/extensions/gl/GL_SUN_mesh_array6
-rw-r--r--glew/auto/extensions/gl/GL_SUN_read_video_pixels5
-rw-r--r--glew/auto/extensions/gl/GL_SUN_slice_accum5
-rw-r--r--glew/auto/extensions/gl/GL_SUN_triangle_list28
-rw-r--r--glew/auto/extensions/gl/GL_SUN_vertex44
-rw-r--r--glew/auto/extensions/gl/GL_VIV_shader_binary5
-rw-r--r--glew/auto/extensions/gl/GL_WIN_phong_shading6
-rw-r--r--glew/auto/extensions/gl/GL_WIN_scene_markerXXX4
-rw-r--r--glew/auto/extensions/gl/GL_WIN_specular_fog5
-rw-r--r--glew/auto/extensions/gl/GL_WIN_swap_hint5
-rw-r--r--glew/auto/extensions/gl/WGL_3DFX_multisample6
-rw-r--r--glew/auto/extensions/gl/WGL_3DL_stereo_control9
-rw-r--r--glew/auto/extensions/gl/WGL_AMD_gpu_association23
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_buffer_region12
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_context_flush_control7
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_create_context12
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_create_context_no_error5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_create_context_profile8
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_create_context_robustness8
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_extensions_string5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_make_current_read10
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_multisample6
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_pbuffer18
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_pixel_format56
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_pixel_format_float5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_render_texture40
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_robustness_application_isolation5
-rw-r--r--glew/auto/extensions/gl/WGL_ARB_robustness_share_group_isolation5
-rw-r--r--glew/auto/extensions/gl/WGL_ATI_pixel_format_float7
-rw-r--r--glew/auto/extensions/gl/WGL_ATI_render_texture_rectangle5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_colorspace7
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_create_context_es2_profile5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_create_context_es_profile5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_depth_float5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_display_color_table8
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_extensions_string5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_framebuffer_sRGB5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_make_current_read8
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_multisample6
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_pbuffer19
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_pixel_format52
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_pixel_format_packed_float5
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_swap_control6
-rw-r--r--glew/auto/extensions/gl/WGL_EXT_swap_control_tear4
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_digital_video_control10
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_gamma10
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_genlock25
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_image_buffer10
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_swap_frame_lock8
-rw-r--r--glew/auto/extensions/gl/WGL_I3D_swap_frame_usage8
-rw-r--r--glew/auto/extensions/gl/WGL_NV_DX_interop15
-rw-r--r--glew/auto/extensions/gl/WGL_NV_DX_interop24
-rw-r--r--glew/auto/extensions/gl/WGL_NV_copy_image6
-rw-r--r--glew/auto/extensions/gl/WGL_NV_delay_before_swap5
-rw-r--r--glew/auto/extensions/gl/WGL_NV_float_buffer13
-rw-r--r--glew/auto/extensions/gl/WGL_NV_gpu_affinity13
-rw-r--r--glew/auto/extensions/gl/WGL_NV_multigpu_context9
-rw-r--r--glew/auto/extensions/gl/WGL_NV_multisample_coverage6
-rw-r--r--glew/auto/extensions/gl/WGL_NV_present_video9
-rw-r--r--glew/auto/extensions/gl/WGL_NV_render_depth_texture9
-rw-r--r--glew/auto/extensions/gl/WGL_NV_render_texture_rectangle7
-rw-r--r--glew/auto/extensions/gl/WGL_NV_swap_group10
-rw-r--r--glew/auto/extensions/gl/WGL_NV_vertex_array_range6
-rw-r--r--glew/auto/extensions/gl/WGL_NV_video_capture12
-rw-r--r--glew/auto/extensions/gl/WGL_NV_video_output24
-rw-r--r--glew/auto/extensions/gl/WGL_OML_sync_control10
-rw-r--r--glew/auto/src/eglew_head.h98
-rw-r--r--glew/auto/src/eglew_mid.h4
-rw-r--r--glew/auto/src/eglew_tail.h15
-rw-r--r--glew/auto/src/footer.html4
-rw-r--r--glew/auto/src/glew_head.c289
-rw-r--r--glew/auto/src/glew_head.h1139
-rw-r--r--glew/auto/src/glew_init_egl.c45
-rw-r--r--glew/auto/src/glew_init_gl.c209
-rw-r--r--glew/auto/src/glew_init_glx.c57
-rw-r--r--glew/auto/src/glew_init_tail.c68
-rw-r--r--glew/auto/src/glew_init_wgl.c41
-rw-r--r--glew/auto/src/glew_license.h32
-rw-r--r--glew/auto/src/glew_str_egl.c17
-rw-r--r--glew/auto/src/glew_str_glx.c17
-rw-r--r--glew/auto/src/glew_str_head.c9
-rw-r--r--glew/auto/src/glew_str_tail.c7
-rw-r--r--glew/auto/src/glew_str_wgl.c17
-rw-r--r--glew/auto/src/glew_tail.h69
-rw-r--r--glew/auto/src/glewinfo_egl.c6
-rw-r--r--glew/auto/src/glewinfo_gl.c7
-rw-r--r--glew/auto/src/glewinfo_glx.c6
-rw-r--r--glew/auto/src/glewinfo_head.c96
-rw-r--r--glew/auto/src/glewinfo_tail.c609
-rw-r--r--glew/auto/src/glewinfo_wgl.c8
-rw-r--r--glew/auto/src/glxew_head.h111
-rw-r--r--glew/auto/src/glxew_mid.h4
-rw-r--r--glew/auto/src/glxew_tail.h20
-rw-r--r--glew/auto/src/header.html96
-rw-r--r--glew/auto/src/khronos_license.h23
-rw-r--r--glew/auto/src/mesa_license.h24
-rw-r--r--glew/auto/src/wglew_head.h36
-rw-r--r--glew/auto/src/wglew_mid.h4
-rw-r--r--glew/auto/src/wglew_tail.h22
-rw-r--r--glew/build/cmake/CMakeLists.txt287
-rw-r--r--glew/build/cmake/CopyImportedTargetProperties.cmake88
-rw-r--r--glew/build/cmake/cmake_uninstall.cmake.in26
-rw-r--r--glew/build/cmake/glew-config.cmake60
-rw-r--r--glew/build/cmake/testbuild/CMakeLists.txt25
-rw-r--r--glew/build/cmake/testbuild/main.c23
-rw-r--r--glew/build/vc10/common.props29
-rw-r--r--glew/build/vc12/common.props29
-rw-r--r--glew/build/vc14/common.props29
-rw-r--r--glew/build/vc15/common.props29
-rw-r--r--glew/build/vc6/glew.dsw71
-rw-r--r--glew/build/vc6/glew_shared.dsp122
-rw-r--r--glew/build/vc6/glew_static.dsp112
-rw-r--r--glew/build/vc6/glewinfo.dsp103
-rw-r--r--glew/build/vc6/visualinfo.dsp103
-rw-r--r--glew/cmake-testbuild.sh71
-rw-r--r--glew/config/config.guess1700
-rw-r--r--glew/config/version7
-rw-r--r--glew/doc/advanced.html230
-rw-r--r--glew/doc/basic.html280
-rw-r--r--glew/doc/build.html149
-rw-r--r--glew/doc/credits.html102
-rw-r--r--glew/doc/github.pngbin0 -> 1219 bytes
-rw-r--r--glew/doc/glew.css187
-rw-r--r--glew/doc/glew.html1071
-rw-r--r--glew/doc/glew.pngbin0 -> 9298 bytes
-rw-r--r--glew/doc/glew.txt29
-rw-r--r--glew/doc/glxew.html188
-rw-r--r--glew/doc/gpl.txt340
-rw-r--r--glew/doc/index.html213
-rw-r--r--glew/doc/install.html226
-rw-r--r--glew/doc/khronos.txt20
-rw-r--r--glew/doc/log.html1419
-rw-r--r--glew/doc/mesa.txt21
-rw-r--r--glew/doc/new.pngbin0 -> 1180 bytes
-rw-r--r--glew/doc/ogl_sm.jpgbin0 -> 1617 bytes
-rw-r--r--glew/doc/travis.pngbin0 -> 2541 bytes
-rw-r--r--glew/doc/wglew.html169
-rw-r--r--glew/glew.pc.in11
-rw-r--r--glew/include/GL/eglew.h3230
-rw-r--r--glew/include/GL/glew.h26719
-rw-r--r--glew/include/GL/glxew.h1843
-rw-r--r--glew/include/GL/wglew.h1468
-rw-r--r--glew/original-readme.md255
-rw-r--r--glew/src/glew.c32522
-rw-r--r--glew/src/glewinfo.c19392
-rw-r--r--glew/src/visualinfo.c1283
-rw-r--r--meshes/armadillo.obj752
-rw-r--r--meshes/bean.obj2448
-rw-r--r--meshes/bunny.obj26142
-rw-r--r--meshes/cactus.obj752
-rw-r--r--meshes/cow.obj8724
-rw-r--r--meshes/cube.obj44
-rw-r--r--meshes/peter.obj59655
-rw-r--r--meshes/rectangle.obj686
-rw-r--r--meshes/sphere.obj1458
-rw-r--r--meshes/teapot.obj2194
-rwxr-xr-xmeshes/tetrahedron.obj12
-rw-r--r--readme-videos/armadillo.gifbin0 -> 1831687 bytes
-rw-r--r--readme-videos/bean.gifbin0 -> 2039976 bytes
-rw-r--r--readme-videos/peter.gifbin0 -> 6964791 bytes
-rw-r--r--readme-videos/sphere.gifbin0 -> 1258776 bytes
-rw-r--r--readme-videos/teapot.gifbin0 -> 1139394 bytes
-rw-r--r--readme-videos/tetrahedron.gifbin0 -> 478109 bytes
-rw-r--r--resources/shaders/anchorPoint.frag10
-rw-r--r--resources/shaders/anchorPoint.geom41
-rw-r--r--resources/shaders/anchorPoint.vert16
-rwxr-xr-xresources/shaders/shader.frag18
-rwxr-xr-xresources/shaders/shader.vert18
-rwxr-xr-xresources/shaders/shaders.qrc9
-rw-r--r--src/arap.cpp57
-rw-r--r--src/arap.h46
-rwxr-xr-xsrc/glwidget.cpp304
-rwxr-xr-xsrc/glwidget.h72
-rw-r--r--src/graphics/camera.cpp196
-rw-r--r--src/graphics/camera.h55
-rw-r--r--src/graphics/graphicsdebug.cpp126
-rw-r--r--src/graphics/graphicsdebug.h15
-rw-r--r--src/graphics/meshloader.cpp65
-rw-r--r--src/graphics/meshloader.h18
-rw-r--r--src/graphics/shader.cpp286
-rw-r--r--src/graphics/shader.h97
-rw-r--r--src/graphics/shape.cpp272
-rw-r--r--src/graphics/shape.h72
-rwxr-xr-xsrc/main.cpp38
-rwxr-xr-xsrc/mainwindow.cpp17
-rwxr-xr-xsrc/mainwindow.h16
-rw-r--r--util/tiny_obj_loader.h2242
-rw-r--r--util/unsupportedeigenthing/OpenGLSupport322
1759 files changed, 316380 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100755
index 0000000..ceab4d3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,288 @@
+!core/
+*.*#
+*.a
+*.app
+*.autosave
+*.core
+*.debug
+*.embed.manifest
+*.moc
+*.o
+*.orig
+*.prl
+*.qm
+*.rc
+*.rej
+*.res
+*.so
+*.so.*
+*_pch.h.cpp
+*_resource.rc
+*_wrapper.bat
+*_wrapper.sh
+*~
+.#*
+.DS_Store
+.qmake.cache
+.qmake.stash
+.vscode
+Makefile*
+Thumbs.db
+core
+moc_*.cpp
+moc_*.h
+qrc_*.cpp
+tags
+ui_*.h
+wrapper.bat
+wrapper.sh
+
+# qtcreator generated files
+*.creator.user*
+*.pro.user*
+*.pyqtc.user*
+*.qbs.user*
+*.qmlproject.user*
+CMakeLists.txt.user*
+/share/qtcreator/examples/
+/share/qtcreator/externaltools/
+/share/qtcreator/fonts/
+/share/qtcreator/generic-highlighter/
+/share/qtcreator/qmldesigner/QtProject/
+/src/app/Info.plist
+/src/plugins/**/*.json
+/src/plugins/coreplugin/ide_version.h
+/src/libs/qt-breakpad/bin
+/.cmake/
+app_version.h
+phony.c
+
+# xemacs temporary files
+*.flc
+
+# Vim temporary files
+.*.swp
+
+# Visual Studio generated files
+*.ib_pdb_index
+*.idb
+*.ilk
+*.ncb
+*.opensdf
+*.pdb
+*.sdf
+*.sln
+*.suo
+*.vcproj
+*.vcxproj
+*vcproj.*.*.user
+*vcxproj.*
+
+# gcov files
+*.gcda
+*.gcno
+*.gcov
+
+# MinGW generated files
+*.Debug
+*.Release
+
+# Python byte code
+*.pyc
+
+# translation related:
+/share/qtcreator/translations/*_tr.h
+/share/qtcreator/translations/qtcreator_untranslated.ts
+
+# Qml caching files
+*.jsc
+*.qmlc
+
+# Squish generated files
+/tests/system/suite_*/config.xml
+
+# Clang tooling files
+compile_commands.json
+
+# Directories to ignore
+# ---------------------
+
+.moc/
+.obj/
+.pch/
+.rcc/
+.uic/
+.clangd/
+/*-debug/
+/*-release/
+/build*/
+/dist/gdb/*.gz
+/dist/gdb/python/
+/dist/gdb/qtcreator-*/
+/dist/gdb/source/
+/dist/gdb/staging/
+/doc/qbs/
+/doc/html/qtcreator/
+/doc/html/qtcreator-dev/
+/doc/html/qtdesignstudio/
+/doc/qtdesignstudio/doc/html
+/lib/
+/lib64/
+/libexec/
+debug/
+ipch/
+release/
+tmp/
+# ignore both a directory as well as a symlink
+/share/qtcreator/QtProject
+
+# Binaries
+# --------
+*.dll
+*.exe
+/bin/buildoutputparser
+/bin/clangbackend
+/bin/cpaster
+/bin/cplusplus-ast2png
+/bin/cplusplus-frontend
+/bin/cplusplus-keywordgen
+/bin/cplusplus-mkvisitor
+/bin/cplusplus-update-frontend
+/bin/qbs*
+/bin/qml2puppet
+/bin/qmlpuppet
+/bin/qtcreator
+/bin/qtcreator_crash_handler
+/bin/qtcreator_ctrlc_stub
+/bin/qtcreator_process_stub
+/bin/qtpromaker
+/bin/sdktool
+/share/doc/qtcreator/*.qch
+/share/qtcreator/qbs/
+/src/tools/examplesscanner/examplesscanner
+/src/tools/qml/qmldump/qmldump
+/src/tools/valgrindfake/valgrind-fake
+
+# Tests
+#------
+/tests/auto/aggregation/tst_aggregation
+/tests/auto/algorithm/tst_algorithm
+/tests/auto/changeset/tst_changeset
+/tests/auto/cplusplus/ast/tst_ast
+/tests/auto/cplusplus/c99/tst_c99
+/tests/auto/cplusplus/checksymbols/tst_checksymbols
+/tests/auto/cplusplus/codeformatter/tst_codeformatter
+/tests/auto/cplusplus/codegen/tst_codegen
+/tests/auto/cplusplus/cppselectionchanger/tst_cppselectionchanger
+/tests/auto/cplusplus/cxx11/tst_c99
+/tests/auto/cplusplus/cxx11/tst_cxx11
+/tests/auto/cplusplus/fileiterationorder/tst_fileiterationorder
+/tests/auto/cplusplus/findusages/tst_findusages
+/tests/auto/cplusplus/lexer/tst_lexer
+/tests/auto/cplusplus/lookup/tst_lookup
+/tests/auto/cplusplus/misc/tst_misc
+/tests/auto/cplusplus/preprocessor/tst_preprocessor
+/tests/auto/cplusplus/semantic/tst_semantic
+/tests/auto/cplusplus/simplifytypes/tst_simplifytypes
+/tests/auto/cplusplus/translationunit/tst_translationunit
+/tests/auto/cplusplus/typeprettyprinter/tst_typeprettyprinter
+/tests/auto/debugger/qt_tst_dumpers_*
+/tests/auto/debugger/tst_disassembler
+/tests/auto/debugger/tst_dumpers
+/tests/auto/debugger/tst_gdb
+/tests/auto/debugger/tst_namedemangler
+/tests/auto/debugger/tst_offsets
+/tests/auto/debugger/tst_olddumpers
+/tests/auto/debugger/tst_simplifytypes
+/tests/auto/debugger/tst_version
+/tests/auto/diff/differ/tst_differ
+/tests/auto/environment/tst_environment
+/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager
+/tests/auto/extensionsystem/pluginspec/tst_pluginspec
+/tests/auto/externaltool/tst_externaltool
+/tests/auto/fakevim/tst_fakevim
+/tests/auto/filesearch/tst_filesearch
+/tests/auto/flamegraph/tst_flamegraph
+/tests/auto/generichighlighter/highlighterengine/tst_highlighterengine
+/tests/auto/generichighlighter/specificrules/tst_specificrules
+/tests/auto/ioutils/tst_ioutils
+/tests/auto/json/tst_json
+/tests/auto/mapreduce/tst_mapreduce
+/tests/auto/profilewriter/tst_profilewriter
+/tests/auto/qml/codemodel/check/tst_codemodel_check
+/tests/auto/qml/codemodel/dependencies/tst_dependencies
+/tests/auto/qml/codemodel/importscheck/tst_qml_imports_check
+/tests/auto/qml/persistenttrie/tst_trie_check
+/tests/auto/qml/qmldesigner/bauhaustests/tst_bauhaus
+/tests/auto/qml/qmldesigner/coretests/tst_coretests
+/tests/auto/qml/qmldesigner/coretests/tst_qmldesigner_core
+/tests/auto/qml/qmldesigner/propertyeditortests/tst_propertyeditor
+/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter
+/tests/auto/qml/qmljssimplereader/tst_qmljssimplereader
+/tests/auto/qml/qmlprojectmanager/fileformat/tst_fileformat
+/tests/auto/qml/qrcparser/tst_qrcparser
+/tests/auto/qml/reformatter/tst_reformatter
+/tests/auto/qtcprocess/tst_qtcprocess
+/tests/auto/runextensions/tst_runextensions
+/tests/auto/sdktool/tst_sdktool
+/tests/auto/ssh/tst_ssh
+/tests/auto/timeline/timelineabstractrenderer/tst_timelineabstractrenderer
+/tests/auto/timeline/timelineitemsrenderpass/tst_timelineitemsrenderpass
+/tests/auto/timeline/timelinemodel/tst_timelinemodel
+/tests/auto/timeline/timelinemodelaggregator/tst_timelinemodelaggregator
+/tests/auto/timeline/timelinenotesmodel/tst_timelinenotesmodel
+/tests/auto/timeline/timelinenotesrenderpass/tst_timelinenotesrenderpass
+/tests/auto/timeline/timelineoverviewrenderer/tst_timelineoverviewrenderer
+/tests/auto/timeline/timelinerenderer/tst_timelinerenderer
+/tests/auto/timeline/timelinerenderpass/tst_timelinerenderpass
+/tests/auto/timeline/timelinerenderstate/tst_timelinerenderstate
+/tests/auto/timeline/timelineselectionrenderpass/tst_timelineselectionrenderpass
+/tests/auto/timeline/timelinezoomcontrol/tst_timelinezoomcontrol
+/tests/auto/treeviewfind/tst_treeviewfind
+/tests/auto/utils/ansiescapecodehandler/tst_ansiescapecodehandler
+/tests/auto/utils/fileutils/tst_fileutils
+/tests/auto/utils/stringutils/tst_stringutils
+/tests/auto/utils/templateengine/tst_templateengine
+/tests/auto/utils/treemodel/tst_treemodel
+/tests/auto/valgrind/callgrind/tst_callgrindparsertests
+/tests/auto/valgrind/memcheck/modeldemo
+/tests/auto/valgrind/memcheck/testapps/free1/free1
+/tests/auto/valgrind/memcheck/testapps/free2/free2
+/tests/auto/valgrind/memcheck/testapps/invalidjump/invalidjump
+/tests/auto/valgrind/memcheck/testapps/leak1/leak1
+/tests/auto/valgrind/memcheck/testapps/leak2/leak2
+/tests/auto/valgrind/memcheck/testapps/leak3/leak3
+/tests/auto/valgrind/memcheck/testapps/leak4/leak4
+/tests/auto/valgrind/memcheck/testapps/overlap/overlap
+/tests/auto/valgrind/memcheck/testapps/syscall/syscall
+/tests/auto/valgrind/memcheck/testapps/uninit1/uninit1
+/tests/auto/valgrind/memcheck/testapps/uninit2/uninit2
+/tests/auto/valgrind/memcheck/testapps/uninit3/uninit3
+/tests/auto/valgrind/memcheck/tst_parsertests
+/tests/auto/valgrind/memcheck/tst_testrunner
+/tests/manual/debugger/gui/gui
+/tests/manual/debugger/helper/helper
+/tests/manual/debugger/simple/libsimple_test_plugin.*dylib
+/tests/manual/debugger/simple/simple_test_app
+/tests/manual/fakevim/tst_fakevim
+/tests/manual/pluginview/tst_plugindialog
+/tests/manual/preprocessor/pp
+/tests/manual/process/process
+/tests/manual/proparser/testreader
+/tests/manual/qml-ast2dot/qml-ast2dot
+/tests/manual/shootout/shootout
+/tests/manual/ssh/sftpfsmodel/sftpfsmodel
+/tests/manual/ssh/shell/shell
+/tests/tools/qml-ast2dot/qml-ast2dot
+/tests/unit/echoserver/echo
+/tests/unit/unittest/unittest
+
+# qbs builds
+/*-debug/
+/*-release/
+
+# MacOS
+.DS_Store
+
+# Eigen
+Eigen
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..79a321b
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "Eigen"]
+ path = Eigen
+ url = https://github.com/brown-cs-224/Eigen
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..9f8f4b0
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,104 @@
+cmake_minimum_required(VERSION 3.16)
+
+# Sets project name
+project(arap LANGUAGES CXX C)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+
+# Sets C++ standard
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+# Specifies required Qt components
+find_package(Qt6 REQUIRED COMPONENTS Core)
+find_package(Qt6 REQUIRED COMPONENTS Concurrent)
+find_package(Qt6 REQUIRED COMPONENTS Xml)
+find_package(Qt6 REQUIRED COMPONENTS Widgets)
+find_package(Qt6 REQUIRED COMPONENTS OpenGL)
+find_package(Qt6 REQUIRED COMPONENTS OpenGLWidgets)
+find_package(Qt6 REQUIRED COMPONENTS Gui)
+
+# Allows you to include files from within those directories, without prefixing their filepaths
+include_directories(src)
+include_directories(libs)
+
+# Specifies .cpp and .h files to be passed to the compiler
+add_executable(${PROJECT_NAME}
+ src/main.cpp
+ src/mainwindow.cpp
+ src/arap.cpp
+ src/glwidget.cpp
+ src/graphics/camera.cpp
+ src/graphics/graphicsdebug.cpp
+ src/graphics/meshloader.cpp
+ src/graphics/shader.cpp
+ src/graphics/shape.cpp
+
+ src/mainwindow.h
+ src/arap.h
+ src/glwidget.h
+ src/graphics/camera.h
+ src/graphics/graphicsdebug.h
+ src/graphics/meshloader.h
+ src/graphics/shader.h
+ src/graphics/shape.h
+
+ util/tiny_obj_loader.h
+ util/unsupportedeigenthing/OpenGLSupport
+)
+
+# GLEW: this creates its library and allows you to `#include "GL/glew.h"`
+add_library(StaticGLEW STATIC glew/src/glew.c)
+include_directories(${PROJECT_NAME} PRIVATE glew/include)
+
+# Specifies libraries to be linked (Qt components, glew, etc)
+target_link_libraries(${PROJECT_NAME} PRIVATE
+ Qt::Concurrent
+ Qt::Core
+ Qt::Gui
+ Qt::OpenGL
+ Qt::OpenGLWidgets
+ Qt::Widgets
+ Qt::Xml
+ StaticGLEW
+)
+
+# This allows you to `#include "Eigen/..."`
+target_include_directories(${PROJECT_NAME} PRIVATE
+ Eigen
+)
+
+# Specifies other files
+qt6_add_resources(${PROJECT_NAME} "Resources"
+ PREFIX
+ "/"
+ FILES
+ resources/shaders/shader.frag
+ resources/shaders/shader.vert
+ resources/shaders/anchorPoint.vert
+ resources/shaders/anchorPoint.geom
+ resources/shaders/anchorPoint.frag
+)
+
+# GLEW: this provides support for Windows (including 64-bit)
+if (WIN32)
+ add_compile_definitions(GLEW_STATIC)
+ target_link_libraries(${PROJECT_NAME} PRIVATE
+ opengl32
+ glu32
+ )
+endif()
+
+# Set this flag to silence warnings on Windows
+if (MSVC OR MSYS OR MINGW)
+ set(CMAKE_CXX_FLAGS "-Wno-volatile")
+endif()
+
+# Set this flag to silence warnings on MacOS
+if (APPLE)
+ set(CMAKE_CXX_FLAGS "-Wno-deprecated-volatile")
+endif()
diff --git a/Eigen b/Eigen
new file mode 160000
+Subproject e0f640171a9771e778c78058581c7037b201baa
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d583d15
--- /dev/null
+++ b/README.md
@@ -0,0 +1,164 @@
+# Assignment 4: As-Rigid-As-Possible Surface Modeling (ARAP)
+
+**Released:** 3/18/24
+
+**Due:** 4/5/24 @ 11:59pm EST
+
+In this assignment, you will implement a system for user-interactive deformation of 3D meshes. In your system, mesh vertices can be re-positioned by clicking and dragging. Your system will update the rest of the mesh in response to these user interactions such that it moves as-rigidly-as-possible (i.e. the deformation it exhibits is close to a rigid transformation). The end result is a deformation that looks physically-plausible, as if the mesh has an underlying rig / skeletal armature.
+
+To achieve this goal, you will need to formulate the deformation process as an optimization problem, in which you will alternate between estimating the best-fit rigid transformation for each mesh vertex and solving a sparse linear system to find new mesh vertex positions.
+
+## Relevant Reading
+
+- The lecture slides!
+- [As-Rigid-As-Possible Surface Modeling](https://igl.ethz.ch/projects/ARAP/arap_web.pdf) on the mathematics behind the ARAP algorithm.
+
+## Requirements
+
+This assignment is out of **100 points**.
+
+Your must implement exactly one feature: the algorithm described in the ARAP paper. That means, for each user interaction, your program must perform the following steps:
+
+- [Initialization](#initialization) **(35 points)**
+- [Iterative solving](#iterative-solving) **(45 points)**
+
+You will be graded for inclusion of the following as well:
+
+- [README](#readme) **(5 points)**
+- [Example videos](#example-videos) **(10 points)**
+
+This sums to **95 points**. To score **100 points** (or more!), you’ll need to implement some [extra features](#extra-features).
+
+### Initialization
+
+1. Set an initial value for the new vertex positions $p'$. Use the previous vertex positions $p$ for this. **(0 points)**
+2. Build the $L$ matrix. **(25 points)**
+ - Determine the one-ring neighbors of each vertex;
+ - Calculate the cotangent weight $w$ for each vertex;
+ - Fill in the $L$ matrix entries.
+3. Apply user constraints by deleting rows/columns from $L$. **(5 points)**
+4. Precompute the decomposition of the $L$ matrix. **(5 points)**
+ - If you unnecessarily recompute this decomposition, you will lose points for inefficiency.
+
+### Iterative Solving
+
+1. Determine the best-fit rotation transformations $R$ for the moved points $p'$ from original points $p$. **(20 points)**
+2. Optimize the positions $p'$ given $p$ and $R$ by solving a sparse linear system. You will need to update the right-hand side of the equation accordingly. **(25 points)**
+
+### README
+
+Your README **(5 points)** should describe:
+
+1. How to run your program, such as how to load a specific mesh; and
+2. _Briefly_, all the features your code implements, including any known bugs.
+ - E.g.: "I implemented ARAP ... and affine progressive meshes ... however, my program doesn't work in these specific cases: ..."
+
+You should also have all the [example videos](#example-videos) described in the next section embedded in your README.
+
+### Example Videos
+
+For this project, we ask that you demonstrate to us that your program achieves the following behavior specifications. You will do so by providing ≥1 video(s) per specification point below.
+
+| Program Specification | Our Example |
+| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------- |
+| Anchoring exactly one point, then moving that point, results in perfectly rigid motion (mostly translation, though some rotation for smaller meshes is acceptable). | ![](./readme-videos/sphere.gif) |
+| Anchoring exactly two points, then rotating one point around the other at a fixed distance, results in perfectly rigid rotation. | ![](./readme-videos/teapot.gif) |
+| Deformations are "permanent"; i.e. un-anchoring previously moved points leaves the mesh in its deformed state, and further deformations can be made on the deformed mesh. | ![](./readme-videos/bean.gif) |
+| You should be able to make the armadillo wave. | ![](./readme-videos/armadillo.gif) |
+| Attempting to deform `tetrahedron.obj` should not cause it to collapse or behave erratically. | ![](./readme-videos/tetrahedron.gif) |
+| Attempting to deform a (large) mesh like `bunny.obj` or `peter.obj` should not cause your code to crash. | ![](./readme-videos/peter.gif) |
+
+<details>
+ <summary>How should I generate these example videos?</summary>
+
+We suggest screen-recording the [interactive viewer](#interactive-viewer) provided in [the stencil code](#resources).
+
+To embed these videos into your READMEs, you can convert these into animated GIFs (using `ffmpeg` or an online tool like [ezgif](https://ezgif.com)), then embed them in Markdown like so:
+
+`![informative alt text](./path/to/mygif.gif)`
+
+</details>
+
+### Extra Features
+
+Each of the following features that you implement will earn you extra points. The features are ordered roughly by difficulty of implementation.
+
+- Parallelize your code **(5 points)**
+ - There are multiple opportunities to exploit parallelism. For instance, you could solve the linear systems for each coordinate (x, y, z) in parallel.
+- Improved interactivity **(8 points)**
+ - Implement some other way(s) to interact with the mesh beyond constraining/dragging single vertices.
+ - You could also look into allowing direct specification of rotations in addition to translations (see the "Rotation-Propagation" paragraph on page 6 of the paper).
+ - Please record a video of how you interact with the mesh.
+- Affine progressive meshes **(10 points)**
+ - The ARAP optimization can become slow for very high-resolution meshes. To get around this problem, one can try to solve the optimization on a lower-resolution mesh, and then interpolate the result back to the high-resolution mesh.
+ - See Section 3.2 of [this paper](https://www.dgp.toronto.edu/~hsuehtil/pdf/cubeStyle_high.pdf) for one way to do this. You will need to re-use your mesh simplification code from the Mesh assignment.
+ - You may find some example high-resolution meshes [here](https://graphics.stanford.edu/data/3Dscanrep/).
+ - Please record a video interacting with the high-resolution meshes.
+- Modified optimization objective **(15 points)**
+ - One can modify the basic ARAP optimization objective function to achieve other types of deformation.
+ - For example, [this paper](https://www.dgp.toronto.edu/~hsuehtil/pdf/cubeStyle_high.pdf) describes how adding an L1 regularizer to the objective produces 'cubified' meshes.
+ - Be aware that changing the objective may well change the method(s) you need to use to solve the resulting optimization problem.
+ - Please show at least 2 pairs of images comparing your modified ARAP results and the original results.
+- Something else!
+ - This list is not meant to be exhaustive--if you’ve got another advanced feature in mind, go for it! (though you may want to ask a TA or the instructor first if you’re concerned about whether the idea is feasible)
+
+**Any extra features you implement must be mentioned in your README, and each feature must be demonstrated in one or more videos.**
+
+## Grading
+
+We will initially grade your project based solely on your README, example videos, and code.
+
+We will then follow up with a short in-person grading session to resolve any outstanding issues.
+
+You can help us make grading go smoother by providing excellent [example videos](#example-videos), to prove to us that your program meets our specifications~!
+
+## Resources
+
+The stencil code is quite bare-bones: besides the main function, it provides code to load `.obj` files into a simple mesh representation (a list of vertices and a list of faces) and save that representation back to an `.obj` file. It also provides an interactive viewer for visualizing (and manipulating the vertices of) meshes.
+
+You’ll have to implement everything else: building the sparse linear system, any supporting data structures you need, etc.
+
+To test your program, you may use the `.obj` files in `/meshes`. You may also use any other 3D models you like.
+
+<details>
+ <summary>Note about meshes with boundaries</summary>
+
+You do not need to support meshes with boundaries for any part of this assignment. That is to say, you can always assume that every edge has two adjacent faces, so you won't have to worry about special-casing for edges on the boundary.
+
+All the meshes provided in the stencil satisfy this property. If you choose to use any other meshes, it will be on you to make sure that this property is satisfied (else, your code might break).
+
+</details>
+
+### Where To Start
+
+You'll want to look at `src/arap.cpp` to get started, as that's the only file you'll (definitely) need to change. You might also want to look at `src/glwidget.cpp`, if you're interested in adding new interactivity/controls to the program.
+
+### Interactive Viewer
+
+Speaking of controls, here's how you can interface with the interactive viewer:
+
+- You start in first-person camera mode:
+ - `WASD` to move, `left-click` and drag to rotate
+ - `R` and `F` to move vertically up and down
+- `C` to change to orbit camera mode
+- `Right-click` (and, optionally, drag) to anchor/un-anchor points.
+ - `Left-click` an anchored point to move it around
+- Minus (`-`) and equal (`=`) keys (click repeatedly) to change the size of the vertices
+
+### Solving Sparse Linear Systems In Eigen
+
+You'll want to look at [this page](https://eigen.tuxfamily.org/dox/group__TopicSparseSystems.html) in the Eigen documentation. We recommend using either the `SimplicialLLT` or `SimplicialLDLT` solvers, as they are specialized to be faster for symmetric positive definite (SPD) matrices (which your $L$ matrix is).
+
+## Submission Instructions
+
+Submit your Github repository to the "ARAP" assignment.
+
+## Implementation & Debugging Tips
+
+- Use `const` and `assert` wherever possible.
+- Check for uninitialized values.
+- Use Qt Creator's debugger.
+- The cotangent function can be negative, be sure to use the **positive** cotangent weights (the absolute value of the cotangent).
+- Verify that your $L$ matrix is **positive semi-definite** (has eigenvalues and a determinant greater than or equal to zero)
+- We provided helper functions in `graphics/shape.h`, all the public member function should be enough for you to complete the minimum requirement without having to modify our helper classes.
+- **REMINDER: Your code will run much faster if you compile in Release mode ;)**
diff --git a/glew/LICENSE.txt b/glew/LICENSE.txt
new file mode 100644
index 0000000..f707804
--- /dev/null
+++ b/glew/LICENSE.txt
@@ -0,0 +1,73 @@
+The OpenGL Extension Wrangler Library
+Copyright (C) 2002-2007, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2007, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Mesa 3-D graphics library
+Version: 7.0
+
+Copyright (C) 1999-2007 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"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+Copyright (c) 2007 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
diff --git a/glew/README.md b/glew/README.md
new file mode 100644
index 0000000..94cbcc3
--- /dev/null
+++ b/glew/README.md
@@ -0,0 +1,3 @@
+# Glew Library for CS 1230
+
+Last updated on 8/30/22 \ No newline at end of file
diff --git a/glew/auto/EGL-Registry/.dummy b/glew/auto/EGL-Registry/.dummy
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/glew/auto/EGL-Registry/.dummy
diff --git a/glew/auto/EGL-Registry/.htaccess b/glew/auto/EGL-Registry/.htaccess
new file mode 100644
index 0000000..3872b67
--- /dev/null
+++ b/glew/auto/EGL-Registry/.htaccess
@@ -0,0 +1,12 @@
+RewriteEngine on
+
+# Avoid redirect loops
+RewriteCond %{ENV:REDIRECT_STATUS} 200
+RewriteRule ^ - [L]
+
+# Old versioned-by-date EGL specs redirected to the single per-version copy
+RewriteRule ^specs/eglspec.1.1.02.pdf https://www.khronos.org/registry/EGL/specs/eglspec.1.1.pdf [L,R=301]
+RewriteRule ^specs/eglspec.1.4.([0-9]+).pdf https://www.khronos.org/registry/EGL/specs/eglspec.1.4.pdf [L,R=301]
+RewriteRule ^specs/eglspec.1.4.withchanges.([0-9]+).pdf https://www.khronos.org/registry/EGL/specs/eglspec.1.4.withchanges.pdf [L,R=301]
+
+# RewriteRule ^xhtml/(.*)\.xml https://www.khronos.org/opengles/sdk/docs/man3/html/$1.xhtml [L,R=301]
diff --git a/glew/auto/EGL-Registry/CODE_OF_CONDUCT.md b/glew/auto/EGL-Registry/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..a11610b
--- /dev/null
+++ b/glew/auto/EGL-Registry/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+A reminder that this issue tracker is managed by the Khronos Group. Interactions here should follow the Khronos Code of Conduct (https://www.khronos.org/developers/code-of-conduct), which prohibits aggressive or derogatory language. Please keep the discussion friendly and civil.
diff --git a/glew/auto/EGL-Registry/README.md b/glew/auto/EGL-Registry/README.md
new file mode 100644
index 0000000..1d01f54
--- /dev/null
+++ b/glew/auto/EGL-Registry/README.md
@@ -0,0 +1,100 @@
+# EGL-Registry
+
+The EGL-Registry repository contains the EGL API and Extension Registry,
+including specifications, reference pages and reference cards, and the
+enumerant registry. It is also used as a backing store for the web view of
+the registry at https://www.khronos.org/registry/egl/ ; commits to the
+master branch of this repository will be reflected there.
+
+In the past, the EGL registry was maintained in a public Subversion
+repository. The history in that repository has not been imported to github,
+but it is still available at
+https://cvs.khronos.org/svn/repos/registry/trunk/public/egl/ .
+
+Interesting files in this repository include:
+
+* index.php - toplevel index page for the web view. This relies on PHP
+ include files found elsewhere on www.khronos.org and so is not very useful
+ in isolation.
+* registry.tcl - extension number registry. Documents the names and index
+ numbers assigned to EGL extension specifications.
+* api/egl.xml - extension enumerant and API registry. Defines the EGL API,
+ including extensions, and is used to generate headers. Documents the EGL
+ enumerant ranges assigned to different vendors.
+* api/EGL/ and api/KHR/ - header files used by an EGL implementation.
+ EGL/eglext.h and EGL/egl.h are generated from egl.xml. The other headers
+ are handcoded and express OS and window system (platform) dependencies.
+* extensions/ - EGL extension specifications, grouped into vendor-specific
+ subdirectories.
+* sdk/ - EGL reference pages and reference cards. There are separate sets
+ for each API version.
+* specs/ - EGL specification documents.
+
+## Reserving EGL Enumerant Ranges
+
+EGL enumerants are documented in api/egl.xml . New ranges can be allocated
+by proposing a pull request to master modifying this file, following the
+existing examples. Allocate ranges starting at the lowest free values
+available (search for "Reservable for future use"). Ranges are not
+officially allocated until your pull request is *accepted* into master. At
+that point you can use values from your assigned range for API extensions.
+
+
+## Adding Extension Specifications
+
+Extension specification documents can be added by proposing a pull request
+to master, adding the specification .txt file and related changes under
+extensions/\<vendor\>/filename.txt. Your pull request must also:
+
+* Allocate an extension number in registry.tcl (follow the existing
+ ```<extension>``` examples, search for "Next free extension number", and use
+ the lowest available extension number).
+* Include that extension number in the extension specification document.
+* Define the interfaces introduced by this extension in api/egl.xml,
+ following the examples of existing extensions. If you have difficulty
+ doing this, consult the registry schema documentation in the GL registry
+ at www.khronos.org/registry/gl/; you may also create Issues in the
+ EGL-Registry repository to request help.
+* Verify that the EGL headers regenerate properly after applying your XML
+ changes. In the api/ directory, you must be able to do the following without
+ errors:
+```
+ # Validate XML changes
+ make validate
+ # Verify headers build and are legal C
+ make clobber
+ make
+ make tests
+```
+* Finally, add a link from the extensions section of index.php to the
+ extension document, using the specified extension number, so it shows up
+ in the web view (this could in principle be generated automatically from
+ registry.tcl / egl.xml, but isn't at present).
+
+Sometimes extension text files contain inappropriate UTF-8 characters. They
+should be restricted to the ASCII subset of UTF-8 at present. They can be
+removed using the iconv Linux command-line tool via
+
+ iconv -c -f utf-8 -t ascii filename.txt
+
+(see internal Bugzilla issue 16141 for more).
+
+We may transition to an asciidoc-based extension specification format at
+some point.
+
+
+## Build Tools
+
+This section is not complete (see https://github.com/KhronosGroup/EGL-Registry/issues/92).
+
+To validate the XML and build the headers you will need at least GNU make,
+'jing' for the 'make validate' step (https://relaxng.org/jclark/jing.html),
+and Python 3.5 and the lxml.etree Python library
+(https://pypi.org/project/lxml/) for the 'make' step. The 'make tests' step
+requires whatever the C and C++ compilers configured for GNU make are,
+usually gcc and g++.
+
+All of these components are available prepackaged for major Linux
+distributions and for the Windows 10 Debian WSL.
+
+
diff --git a/glew/auto/EGL-Registry/api/1.0/EGL/egl.h b/glew/auto/EGL-Registry/api/1.0/EGL/egl.h
new file mode 100644
index 0000000..7b36e8a
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.0/EGL/egl.h
@@ -0,0 +1,286 @@
+/* Copyright 2006-2020 The Khronos Group Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/* Sketchy version of egl.h (really only for reserving
+ * enumerant values to EGL tokens and sanity checking
+ * prototypes).
+ *
+ * Last modified 2006/08/13
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+/* Windows calling convention boilerplate */
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef EGLAPI
+#define EGLAPI extern
+#endif
+
+
+/* EGL Types */
+#include <sys/types.h>
+
+typedef int32_t EGLint;
+typedef unsigned int EGLBoolean;
+typedef unsigned int EGLenum;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDisplay;
+typedef void *EGLSurface;
+typedef void *EGLClientBuffer;
+/* NativeDisplayType, NativeWindowType, NativePixmapType TBD */
+
+/* EGL Versioning */
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+#define EGL_VERSION_1_3 1
+
+/* EGL Enumerants. Exceptional cases aside, most
+ * enums are assigned unique values starting at 0x3000.
+ */
+
+/* EGL aliases */
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/* Out-of-band handle values */
+/* These values may vary depending on semantics of native concepts */
+#define EGL_DEFAULT_DISPLAY ((void *)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+/* Out-of-band attribute value */
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#define EGL_SUCCESS 0x3000
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */
+
+/* Reserved 0x300F-0x301F for additional errors */
+
+/* Config attributes */
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_RED_SIZE 0x3024
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+#define EGL_PRESERVED_RESOURCES 0x3030
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_NONE 0x3038 /* Attrib list terminator */
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_RENDERABLE_TYPE 0x3040
+#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */
+
+/* Reserved 0x3041-0x304F for additional config attributes */
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENGL_ES2_BIT 0x04 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values.
+ */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* CreateContext attributes */
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* EGL extensions must request enum blocks from the OpenGL ARB
+ * Secretary, who maintains the EGL enumerant registry.
+ */
+
+
+
+/* EGL Functions */
+
+EGLAPI EGLint APIENTRY eglGetError();
+
+EGLAPI EGLDisplay APIENTRY eglGetDisplay(const char *display_id);
+EGLAPI EGLBoolean APIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLAPI EGLBoolean APIENTRY eglTerminate(EGLDisplay dpy);
+
+EGLAPI const char * APIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
+
+EGLAPI EGLBoolean APIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
+ EGLint config_size, EGLint *num_config);
+EGLAPI EGLBoolean APIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
+ EGLConfig *configs, EGLint config_size,
+ EGLint *num_config);
+EGLAPI EGLBoolean APIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLSurface APIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
+ NativeWindowType win,
+ const EGLint *attrib_list);
+EGLAPI EGLSurface APIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list);
+EGLAPI EGLSurface APIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ NativePixmapType pixmap,
+ const EGLint *attrib_list);
+EGLAPI EGLBoolean APIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean APIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLBoolean APIENTRY eglBindAPI(EGLenum api);
+EGLAPI EGLenum APIENTRY eglQueryAPI(void);
+
+EGLAPI EGLBoolean APIENTRY eglWaitClient(void);
+
+EGLAPI EGLBoolean APIENTRY eglReleaseThread(void);
+
+EGLAPI EGLSurface APIENTRY eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
+ EGLConfig config, const EGLint *attrib_list);
+
+EGLAPI EGLBoolean APIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint value);
+EGLAPI EGLBoolean APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLAPI EGLBoolean APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+
+EGLAPI EGLBoolean APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+
+EGLAPI EGLContext APIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
+ EGLContext share_context,
+ const EGLint *attrib_list);
+EGLAPI EGLBoolean APIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLAPI EGLBoolean APIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
+ EGLSurface read, EGLContext ctx);
+
+EGLAPI EGLContext APIENTRY eglGetCurrentContext(void);
+EGLAPI EGLSurface APIENTRY eglGetCurrentSurface(EGLint readdraw);
+EGLAPI EGLDisplay APIENTRY eglGetCurrentDisplay(void);
+EGLAPI EGLBoolean APIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLBoolean APIENTRY eglWaitGL(void);
+EGLAPI EGLBoolean APIENTRY eglWaitNative(EGLint engine);
+EGLAPI EGLBoolean APIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean APIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
+ NativePixmapType target);
+
+EGLAPI void (* APIENTRY eglGetProcAddress(const char *procname))();
+
+#endif /* __egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/1.0/egl.h b/glew/auto/EGL-Registry/api/1.0/egl.h
new file mode 100644
index 0000000..f433385
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.0/egl.h
@@ -0,0 +1,283 @@
+/* Sketchy version of egl.h (really only for reserving
+ * enumerant values to EGL tokens and sanity checking
+ * prototypes).
+ *
+ * Last modified 2006/08/13
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+/* Windows calling convention boilerplate */
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef EGLAPI
+#define EGLAPI extern
+#endif
+
+
+/* EGL Types */
+#include <sys/types.h>
+
+typedef int32_t EGLint;
+typedef unsigned int EGLBoolean;
+typedef unsigned int EGLenum;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDisplay;
+typedef void *EGLSurface;
+typedef void *EGLClientBuffer;
+/* NativeDisplayType, NativeWindowType, NativePixmapType TBD */
+
+/* EGL Versioning */
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+#define EGL_VERSION_1_3 1
+
+/* EGL Enumerants. Exceptional cases aside, most
+ * enums are assigned unique values starting at 0x3000.
+ */
+
+/* EGL aliases */
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/* Out-of-band handle values */
+/* These values may vary depending on semantics of native concepts */
+#define EGL_DEFAULT_DISPLAY ((void *)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+/* Out-of-band attribute value */
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#define EGL_SUCCESS 0x3000
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */
+
+/* Reserved 0x300F-0x301F for additional errors */
+
+/* Config attributes */
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_RED_SIZE 0x3024
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+#define EGL_PRESERVED_RESOURCES 0x3030
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_NONE 0x3038 /* Attrib list terminator */
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_RENDERABLE_TYPE 0x3040
+#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */
+
+/* Reserved 0x3041-0x304F for additional config attributes */
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENGL_ES2_BIT 0x04 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values.
+ */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* CreateContext attributes */
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* EGL extensions must request enum blocks from the OpenGL ARB
+ * Secretary, who maintains the EGL enumerant registry.
+ */
+
+
+
+/* EGL Functions */
+
+EGLAPI EGLint APIENTRY eglGetError();
+
+EGLAPI EGLDisplay APIENTRY eglGetDisplay(const char *display_id);
+EGLAPI EGLBoolean APIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLAPI EGLBoolean APIENTRY eglTerminate(EGLDisplay dpy);
+
+EGLAPI const char * APIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
+
+EGLAPI EGLBoolean APIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
+ EGLint config_size, EGLint *num_config);
+EGLAPI EGLBoolean APIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
+ EGLConfig *configs, EGLint config_size,
+ EGLint *num_config);
+EGLAPI EGLBoolean APIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLSurface APIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
+ NativeWindowType win,
+ const EGLint *attrib_list);
+EGLAPI EGLSurface APIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list);
+EGLAPI EGLSurface APIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ NativePixmapType pixmap,
+ const EGLint *attrib_list);
+EGLAPI EGLBoolean APIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean APIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLBoolean APIENTRY eglBindAPI(EGLenum api);
+EGLAPI EGLenum APIENTRY eglQueryAPI(void);
+
+EGLAPI EGLBoolean APIENTRY eglWaitClient(void);
+
+EGLAPI EGLBoolean APIENTRY eglReleaseThread(void);
+
+EGLAPI EGLSurface APIENTRY eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
+ EGLConfig config, const EGLint *attrib_list);
+
+EGLAPI EGLBoolean APIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint value);
+EGLAPI EGLBoolean APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLAPI EGLBoolean APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+
+EGLAPI EGLBoolean APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+
+EGLAPI EGLContext APIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
+ EGLContext share_context,
+ const EGLint *attrib_list);
+EGLAPI EGLBoolean APIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLAPI EGLBoolean APIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
+ EGLSurface read, EGLContext ctx);
+
+EGLAPI EGLContext APIENTRY eglGetCurrentContext(void);
+EGLAPI EGLSurface APIENTRY eglGetCurrentSurface(EGLint readdraw);
+EGLAPI EGLDisplay APIENTRY eglGetCurrentDisplay(void);
+EGLAPI EGLBoolean APIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
+ EGLint attribute, EGLint *value);
+
+EGLAPI EGLBoolean APIENTRY eglWaitGL(void);
+EGLAPI EGLBoolean APIENTRY eglWaitNative(EGLint engine);
+EGLAPI EGLBoolean APIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean APIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
+ NativePixmapType target);
+
+EGLAPI void (* APIENTRY eglGetProcAddress(const char *procname))();
+
+#endif /* __egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/1.1/EGL/egl.h b/glew/auto/EGL-Registry/api/1.1/EGL/egl.h
new file mode 100644
index 0000000..99f2880
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.1/EGL/egl.h
@@ -0,0 +1,226 @@
+/* Copyright 2006-2020 The Khronos Group Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+#include <GLES/gl.h>
+#include <GLES/egltypes.h>
+
+/*
+** egltypes.h is platform dependent. It defines:
+**
+** - EGL types and resources
+** - Native types
+** - EGL and native handle values
+**
+** EGL types and resources are to be typedef'ed with appropriate platform
+** dependent resource handle types. EGLint must be an integer of at least
+** 32-bit.
+**
+** NativeDisplayType, NativeWindowType and NativePixmapType are to be
+** replaced with corresponding types of the native window system in egl.h.
+**
+** EGL and native handle values must match their types.
+**
+** Example egltypes.h:
+*/
+
+#if 0
+
+#include <sys/types.h>
+#include <native_window_system.h>
+
+/*
+** Types and resources
+*/
+typedef int EGLBoolean;
+typedef int32_t EGLint;
+typedef void *EGLDisplay;
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+
+/*
+** EGL and native handle values
+*/
+#define EGL_DEFAULT_DISPLAY ((NativeDisplayType)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+#endif
+
+/*
+** Versioning and extensions
+*/
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+
+/*
+** Boolean
+*/
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/*
+** Errors
+*/
+#define EGL_SUCCESS 0x3000
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_CONTEXT_LOST 0x300E
+/* 0x300F - 0x301F reserved for additional errors. */
+
+/*
+** Config attributes
+*/
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_RED_SIZE 0x3024
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+/*#define EGL_PRESERVED_RESOURCES 0x3030*/
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_NONE 0x3038 /* Also a config value */
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+
+/*
+** Config values
+*/
+#define EGL_DONT_CARE ((EGLint) -1)
+
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* " */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_NO_TEXTURE 0x305C /* EGL_TEXTURE_FORMAT/TARGET value */
+#define EGL_TEXTURE_RGB 0x305D /* EGL_TEXTURE_FORMAT value */
+#define EGL_TEXTURE_RGBA 0x305E /* " */
+#define EGL_TEXTURE_2D 0x305F /* EGL_TEXTURE_TARGET value */
+
+/*
+** Config attribute mask bits
+*/
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bit */
+#define EGL_PIXMAP_BIT 0x02 /* " */
+#define EGL_WINDOW_BIT 0x04 /* " */
+
+/*
+** String names
+*/
+#define EGL_VENDOR 0x3053 /* eglQueryString target */
+#define EGL_VERSION 0x3054 /* " */
+#define EGL_EXTENSIONS 0x3055 /* " */
+
+/*
+** Surface attributes
+*/
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080 /* For pbuffers bound as textures */
+#define EGL_TEXTURE_TARGET 0x3081 /* " */
+#define EGL_MIPMAP_TEXTURE 0x3082 /* " */
+#define EGL_MIPMAP_LEVEL 0x3083 /* " */
+
+/*
+** BindTexImage / ReleaseTexImage buffer target
+*/
+#define EGL_BACK_BUFFER 0x3084
+
+/*
+** Current surfaces
+*/
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/*
+** Engines
+*/
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* 0x305C-0x3FFFF reserved for future use */
+
+/*
+** Functions
+*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GLAPI EGLint APIENTRY eglGetError (void);
+
+GLAPI EGLDisplay APIENTRY eglGetDisplay (NativeDisplayType display);
+GLAPI EGLBoolean APIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
+GLAPI EGLBoolean APIENTRY eglTerminate (EGLDisplay dpy);
+GLAPI const char * APIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
+GLAPI void (* APIENTRY eglGetProcAddress (const char *procname))();
+
+GLAPI EGLBoolean APIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+GLAPI EGLBoolean APIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+GLAPI EGLBoolean APIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+
+GLAPI EGLSurface APIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list);
+GLAPI EGLSurface APIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, NativePixmapType pixmap, const EGLint *attrib_list);
+GLAPI EGLSurface APIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+GLAPI EGLBoolean APIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
+GLAPI EGLBoolean APIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+
+/* EGL 1.1 render-to-texture APIs */
+GLAPI EGLBoolean APIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+GLAPI EGLBoolean APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+GLAPI EGLBoolean APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+/* EGL 1.1 swap control API */
+GLAPI EGLBoolean APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+GLAPI EGLContext APIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint *attrib_list);
+GLAPI EGLBoolean APIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
+GLAPI EGLBoolean APIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+GLAPI EGLContext APIENTRY eglGetCurrentContext (void);
+GLAPI EGLSurface APIENTRY eglGetCurrentSurface (EGLint readdraw);
+GLAPI EGLDisplay APIENTRY eglGetCurrentDisplay (void);
+GLAPI EGLBoolean APIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+
+GLAPI EGLBoolean APIENTRY eglWaitGL (void);
+GLAPI EGLBoolean APIENTRY eglWaitNative (EGLint engine);
+GLAPI EGLBoolean APIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface draw);
+GLAPI EGLBoolean APIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, NativePixmapType target);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ___egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/1.2/EGL/egl.h b/glew/auto/EGL-Registry/api/1.2/EGL/egl.h
new file mode 100644
index 0000000..d67fd1a
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.2/EGL/egl.h
@@ -0,0 +1,264 @@
+/* Copyright 2006-2020 The Khronos Group Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/* Reference egl.h for EGL 1.2
+ * Last modified 2006/10/24
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+/* EGL Types */
+#include <sys/types.h>
+
+typedef int32_t EGLint;
+typedef unsigned int EGLBoolean;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDisplay;
+typedef void *EGLSurface;
+
+/* Define NativeDisplayType, NativeWindowType, NativePixmapType in egltypes.h */
+#include <EGL/egltypes.h>
+
+/* EGL Versioning */
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+
+/* EGL Enumerants. Exceptional cases aside, most
+ * enums are assigned unique values starting at 0x3000.
+ */
+
+/* EGL aliases */
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/* Out-of-band handle values */
+/* These values may vary depending on semantics of native concepts */
+#define EGL_DEFAULT_DISPLAY ((void *)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+/* Out-of-band attribute value */
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#define EGL_SUCCESS 0x3000
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */
+
+/* Reserved 0x300F-0x301F for additional errors */
+
+/* Config attributes */
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_RED_SIZE 0x3024
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+#define EGL_PRESERVED_RESOURCES 0x3030
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_NONE 0x3038 /* Attrib list terminator */
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_RENDERABLE_TYPE 0x3040
+
+/* Reserved 0x3041-0x304F for additional config attributes */
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values.
+ */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* EGL extensions must request enum blocks from the OpenGL ARB
+ * Secretary, who maintains the EGL enumerant registry.
+ */
+
+
+
+/* EGL Functions */
+
+EGLint eglGetError();
+
+EGLDisplay eglGetDisplay(NativeDisplayType display_id);
+EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLBoolean eglTerminate(EGLDisplay dpy);
+
+const char *eglQueryString(EGLDisplay dpy, EGLint name);
+
+EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
+ EGLint config_size, EGLint *num_config);
+EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
+ EGLConfig *configs, EGLint config_size,
+ EGLint *num_config);
+EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
+ EGLint attribute, EGLint *value);
+
+EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
+ NativeWindowType win,
+ const EGLint *attrib_list);
+EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list);
+EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ NativePixmapType pixmap,
+ const EGLint *attrib_list);
+EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint *value);
+
+EGLBoolean eglBindAPI(EGLenum api);
+EGLenum eglQueryAPI(void);
+
+EGLBoolean eglWaitClient(void);
+
+EGLBoolean eglReleaseThread(void);
+
+EGLSurface eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
+ EGLConfig config, const EGLint *attrib_list);
+
+EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint value);
+EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+
+EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+
+EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config,
+ EGLContext share_context,
+ const EGLint *attrib_list);
+EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
+ EGLSurface read, EGLContext ctx);
+
+EGLContext eglGetCurrentContext(void);
+EGLSurface eglGetCurrentSurface(EGLint readdraw);
+EGLDisplay eglGetCurrentDisplay(void);
+EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx,
+ EGLint attribute, EGLint *value);
+
+EGLBoolean eglWaitGL(void);
+EGLBoolean eglWaitNative(EGLint engine);
+EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
+ NativePixmapType target);
+
+void (*eglGetProcAddress(const char *procname))();
+
+#endif /* __egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/1.2/egl.h b/glew/auto/EGL-Registry/api/1.2/egl.h
new file mode 100644
index 0000000..bf27697
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/1.2/egl.h
@@ -0,0 +1,260 @@
+/* Reference egl.h for EGL 1.2
+ * Last modified 2006/10/24
+ */
+
+#ifndef __egl_h_
+#define __egl_h_
+
+/* EGL Types */
+#include <sys/types.h>
+
+typedef int32_t EGLint;
+typedef unsigned int EGLBoolean;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDisplay;
+typedef void *EGLSurface;
+
+/* Define NativeDisplayType, NativeWindowType, NativePixmapType in egltypes.h */
+#include <EGL/egltypes.h>
+
+/* EGL Versioning */
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+
+/* EGL Enumerants. Exceptional cases aside, most
+ * enums are assigned unique values starting at 0x3000.
+ */
+
+/* EGL aliases */
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+/* Out-of-band handle values */
+/* These values may vary depending on semantics of native concepts */
+#define EGL_DEFAULT_DISPLAY ((void *)0)
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+
+/* Out-of-band attribute value */
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#define EGL_SUCCESS 0x3000
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */
+
+/* Reserved 0x300F-0x301F for additional errors */
+
+/* Config attributes */
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_RED_SIZE 0x3024
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+#define EGL_PRESERVED_RESOURCES 0x3030
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_NONE 0x3038 /* Attrib list terminator */
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_RENDERABLE_TYPE 0x3040
+
+/* Reserved 0x3041-0x304F for additional config attributes */
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values.
+ */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+/* EGL extensions must request enum blocks from the OpenGL ARB
+ * Secretary, who maintains the EGL enumerant registry.
+ */
+
+
+
+/* EGL Functions */
+
+EGLint eglGetError();
+
+EGLDisplay eglGetDisplay(NativeDisplayType display_id);
+EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLBoolean eglTerminate(EGLDisplay dpy);
+
+const char *eglQueryString(EGLDisplay dpy, EGLint name);
+
+EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
+ EGLint config_size, EGLint *num_config);
+EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
+ EGLConfig *configs, EGLint config_size,
+ EGLint *num_config);
+EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
+ EGLint attribute, EGLint *value);
+
+EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
+ NativeWindowType win,
+ const EGLint *attrib_list);
+EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
+ const EGLint *attrib_list);
+EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ NativePixmapType pixmap,
+ const EGLint *attrib_list);
+EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint *value);
+
+EGLBoolean eglBindAPI(EGLenum api);
+EGLenum eglQueryAPI(void);
+
+EGLBoolean eglWaitClient(void);
+
+EGLBoolean eglReleaseThread(void);
+
+EGLSurface eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
+ EGLConfig config, const EGLint *attrib_list);
+
+EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
+ EGLint attribute, EGLint value);
+EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+
+EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval);
+
+
+EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config,
+ EGLContext share_context,
+ const EGLint *attrib_list);
+EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
+ EGLSurface read, EGLContext ctx);
+
+EGLContext eglGetCurrentContext(void);
+EGLSurface eglGetCurrentSurface(EGLint readdraw);
+EGLDisplay eglGetCurrentDisplay(void);
+EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx,
+ EGLint attribute, EGLint *value);
+
+EGLBoolean eglWaitGL(void);
+EGLBoolean eglWaitNative(EGLint engine);
+EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
+ NativePixmapType target);
+
+void (*eglGetProcAddress(const char *procname))();
+
+#endif /* __egl_h_ */
diff --git a/glew/auto/EGL-Registry/api/EGL/egl.h b/glew/auto/EGL-Registry/api/EGL/egl.h
new file mode 100644
index 0000000..97d0878
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/EGL/egl.h
@@ -0,0 +1,342 @@
+#ifndef __egl_h_
+#define __egl_h_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
+**
+** This header is generated from the Khronos EGL XML API Registry.
+** The current version of the Registry, generator scripts
+** used to make the header, and the header can be found at
+** http://www.khronos.org/registry/egl
+**
+** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $
+*/
+
+#include <EGL/eglplatform.h>
+
+#ifndef EGL_EGL_PROTOTYPES
+#define EGL_EGL_PROTOTYPES 1
+#endif
+
+/* Generated on date 20220525 */
+
+/* Generated C header for:
+ * API: egl
+ * Versions considered: .*
+ * Versions emitted: .*
+ * Default extensions included: None
+ * Additional extensions included: _nomatch_^
+ * Extensions removed: _nomatch_^
+ */
+
+#ifndef EGL_VERSION_1_0
+#define EGL_VERSION_1_0 1
+typedef unsigned int EGLBoolean;
+typedef void *EGLDisplay;
+#include <KHR/khrplatform.h>
+#include <EGL/eglplatform.h>
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+typedef void (*__eglMustCastToProperFunctionPointerType)(void);
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_DONT_CARE EGL_CAST(EGLint,-1)
+#define EGL_DRAW 0x3059
+#define EGL_EXTENSIONS 0x3055
+#define EGL_FALSE 0
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_HEIGHT 0x3056
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+#define EGL_NONE 0x3038
+#define EGL_NON_CONFORMANT_CONFIG 0x3051
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_NO_CONTEXT EGL_CAST(EGLContext,0)
+#define EGL_NO_DISPLAY EGL_CAST(EGLDisplay,0)
+#define EGL_NO_SURFACE EGL_CAST(EGLSurface,0)
+#define EGL_PBUFFER_BIT 0x0001
+#define EGL_PIXMAP_BIT 0x0002
+#define EGL_READ 0x305A
+#define EGL_RED_SIZE 0x3024
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SLOW_CONFIG 0x3050
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_SUCCESS 0x3000
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_TRANSPARENT_RGB 0x3052
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRUE 1
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_WIDTH 0x3057
+#define EGL_WINDOW_BIT 0x0004
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+typedef EGLContext (EGLAPIENTRYP PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETCURRENTDISPLAYPROC) (void);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw);
+typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id);
+typedef EGLint (EGLAPIENTRYP PFNEGLGETERRORPROC) (void);
+typedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRYP PFNEGLGETPROCADDRESSPROC) (const char *procname);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint *major, EGLint *minor);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLTERMINATEPROC) (EGLDisplay dpy);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITGLPROC) (void);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITNATIVEPROC) (EGLint engine);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);
+EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);
+EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);
+EGLAPI EGLint EGLAPIENTRY eglGetError (void);
+EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
+EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
+EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
+EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);
+EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);
+EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);
+#endif
+#endif /* EGL_VERSION_1_0 */
+
+#ifndef EGL_VERSION_1_1
+#define EGL_VERSION_1_1 1
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_CONTEXT_LOST 0x300E
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_2D 0x305F
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_TARGET 0x3081
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);
+#endif
+#endif /* EGL_VERSION_1_1 */
+
+#ifndef EGL_VERSION_1_2
+#define EGL_VERSION_1_2 1
+typedef unsigned int EGLenum;
+typedef void *EGLClientBuffer;
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_ALPHA_FORMAT_PRE 0x308C
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_BUFFER_PRESERVED 0x3094
+#define EGL_BUFFER_DESTROYED 0x3095
+#define EGL_CLIENT_APIS 0x308D
+#define EGL_COLORSPACE 0x3087
+#define EGL_COLORSPACE_sRGB 0x3089
+#define EGL_COLORSPACE_LINEAR 0x308A
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+#define EGL_DISPLAY_SCALING 10000
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_LUMINANCE_BUFFER 0x308F
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_OPENGL_ES_BIT 0x0001
+#define EGL_OPENVG_BIT 0x0002
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+#define EGL_OPENVG_IMAGE 0x3096
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_RENDERABLE_TYPE 0x3040
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_RGB_BUFFER 0x308E
+#define EGL_SINGLE_BUFFER 0x3085
+#define EGL_SWAP_BEHAVIOR 0x3093
+#define EGL_UNKNOWN EGL_CAST(EGLint,-1)
+#define EGL_VERTICAL_RESOLUTION 0x3091
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDAPIPROC) (EGLenum api);
+typedef EGLenum (EGLAPIENTRYP PFNEGLQUERYAPIPROC) (void);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETHREADPROC) (void);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITCLIENTPROC) (void);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);
+EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);
+EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);
+#endif
+#endif /* EGL_VERSION_1_2 */
+
+#ifndef EGL_VERSION_1_3
+#define EGL_VERSION_1_3 1
+#define EGL_CONFORMANT 0x3042
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+#define EGL_MATCH_NATIVE_PIXMAP 0x3041
+#define EGL_OPENGL_ES2_BIT 0x0004
+#define EGL_VG_ALPHA_FORMAT 0x3088
+#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
+#define EGL_VG_COLORSPACE 0x3087
+#define EGL_VG_COLORSPACE_sRGB 0x3089
+#define EGL_VG_COLORSPACE_LINEAR 0x308A
+#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
+#endif /* EGL_VERSION_1_3 */
+
+#ifndef EGL_VERSION_1_4
+#define EGL_VERSION_1_4 1
+#define EGL_DEFAULT_DISPLAY EGL_CAST(EGLNativeDisplayType,0)
+#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
+#define EGL_MULTISAMPLE_RESOLVE 0x3099
+#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
+#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
+#define EGL_OPENGL_API 0x30A2
+#define EGL_OPENGL_BIT 0x0008
+#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
+typedef EGLContext (EGLAPIENTRYP PFNEGLGETCURRENTCONTEXTPROC) (void);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);
+#endif
+#endif /* EGL_VERSION_1_4 */
+
+#ifndef EGL_VERSION_1_5
+#define EGL_VERSION_1_5 1
+typedef void *EGLSync;
+typedef intptr_t EGLAttrib;
+typedef khronos_utime_nanoseconds_t EGLTime;
+typedef void *EGLImage;
+#define EGL_CONTEXT_MAJOR_VERSION 0x3098
+#define EGL_CONTEXT_MINOR_VERSION 0x30FB
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
+#define EGL_NO_RESET_NOTIFICATION 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2
+#define EGL_OPENGL_ES3_BIT 0x00000040
+#define EGL_CL_EVENT_HANDLE 0x309C
+#define EGL_SYNC_CL_EVENT 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
+#define EGL_SYNC_TYPE 0x30F7
+#define EGL_SYNC_STATUS 0x30F1
+#define EGL_SYNC_CONDITION 0x30F8
+#define EGL_SIGNALED 0x30F2
+#define EGL_UNSIGNALED 0x30F3
+#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
+#define EGL_FOREVER 0xFFFFFFFFFFFFFFFFull
+#define EGL_TIMEOUT_EXPIRED 0x30F5
+#define EGL_CONDITION_SATISFIED 0x30F6
+#define EGL_NO_SYNC EGL_CAST(EGLSync,0)
+#define EGL_SYNC_FENCE 0x30F9
+#define EGL_GL_COLORSPACE 0x309D
+#define EGL_GL_COLORSPACE_SRGB 0x3089
+#define EGL_GL_COLORSPACE_LINEAR 0x308A
+#define EGL_GL_RENDERBUFFER 0x30B9
+#define EGL_GL_TEXTURE_2D 0x30B1
+#define EGL_GL_TEXTURE_LEVEL 0x30BC
+#define EGL_GL_TEXTURE_3D 0x30B2
+#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
+#define EGL_IMAGE_PRESERVED 0x30D2
+#define EGL_NO_IMAGE EGL_CAST(EGLImage,0)
+typedef EGLSync (EGLAPIENTRYP PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync);
+typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
+typedef EGLImage (EGLAPIENTRYP PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image);
+typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags);
+#if EGL_EGL_PROTOTYPES
+EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);
+EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
+EGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image);
+EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);
+#endif
+#endif /* EGL_VERSION_1_5 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/glew/auto/EGL-Registry/api/EGL/eglext.h b/glew/auto/EGL-Registry/api/EGL/eglext.h
new file mode 100644
index 0000000..d58da70
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/EGL/eglext.h
@@ -0,0 +1,1483 @@
+#ifndef __eglext_h_
+#define __eglext_h_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
+**
+** This header is generated from the Khronos EGL XML API Registry.
+** The current version of the Registry, generator scripts
+** used to make the header, and the header can be found at
+** http://www.khronos.org/registry/egl
+**
+** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $
+*/
+
+#include <EGL/eglplatform.h>
+
+#define EGL_EGLEXT_VERSION 20220525
+
+/* Generated C header for:
+ * API: egl
+ * Versions considered: .*
+ * Versions emitted: _nomatch_^
+ * Default extensions included: egl
+ * Additional extensions included: _nomatch_^
+ * Extensions removed: _nomatch_^
+ */
+
+#ifndef EGL_KHR_cl_event
+#define EGL_KHR_cl_event 1
+#define EGL_CL_EVENT_HANDLE_KHR 0x309C
+#define EGL_SYNC_CL_EVENT_KHR 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+#endif /* EGL_KHR_cl_event */
+
+#ifndef EGL_KHR_cl_event2
+#define EGL_KHR_cl_event2 1
+typedef void *EGLSyncKHR;
+typedef intptr_t EGLAttribKHR;
+typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
+#endif
+#endif /* EGL_KHR_cl_event2 */
+
+#ifndef EGL_KHR_client_get_all_proc_addresses
+#define EGL_KHR_client_get_all_proc_addresses 1
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+
+#ifndef EGL_KHR_config_attribs
+#define EGL_KHR_config_attribs 1
+#define EGL_CONFORMANT_KHR 0x3042
+#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+#endif /* EGL_KHR_config_attribs */
+
+#ifndef EGL_KHR_context_flush_control
+#define EGL_KHR_context_flush_control 1
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
+#endif /* EGL_KHR_context_flush_control */
+
+#ifndef EGL_KHR_create_context
+#define EGL_KHR_create_context 1
+#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+#define EGL_CONTEXT_FLAGS_KHR 0x30FC
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
+#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
+#endif /* EGL_KHR_create_context */
+
+#ifndef EGL_KHR_create_context_no_error
+#define EGL_KHR_create_context_no_error 1
+#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
+#endif /* EGL_KHR_create_context_no_error */
+
+#ifndef EGL_KHR_debug
+#define EGL_KHR_debug 1
+typedef void *EGLLabelKHR;
+typedef void *EGLObjectKHR;
+typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
+#define EGL_OBJECT_THREAD_KHR 0x33B0
+#define EGL_OBJECT_DISPLAY_KHR 0x33B1
+#define EGL_OBJECT_CONTEXT_KHR 0x33B2
+#define EGL_OBJECT_SURFACE_KHR 0x33B3
+#define EGL_OBJECT_IMAGE_KHR 0x33B4
+#define EGL_OBJECT_SYNC_KHR 0x33B5
+#define EGL_OBJECT_STREAM_KHR 0x33B6
+#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
+#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
+#define EGL_DEBUG_CALLBACK_KHR 0x33B8
+typedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value);
+typedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value);
+EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
+#endif
+#endif /* EGL_KHR_debug */
+
+#ifndef EGL_KHR_display_reference
+#define EGL_KHR_display_reference 1
+#define EGL_TRACK_REFERENCES_KHR 0x3352
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib *value);
+#endif
+#endif /* EGL_KHR_display_reference */
+
+#ifndef EGL_KHR_fence_sync
+#define EGL_KHR_fence_sync 1
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+#ifdef KHRONOS_SUPPORT_INT64
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+#define EGL_SYNC_CONDITION_KHR 0x30F8
+#define EGL_SYNC_FENCE_KHR 0x30F9
+typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
+typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);
+EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_KHR_fence_sync */
+
+#ifndef EGL_KHR_get_all_proc_addresses
+#define EGL_KHR_get_all_proc_addresses 1
+#endif /* EGL_KHR_get_all_proc_addresses */
+
+#ifndef EGL_KHR_gl_colorspace
+#define EGL_KHR_gl_colorspace 1
+#define EGL_GL_COLORSPACE_KHR 0x309D
+#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+#endif /* EGL_KHR_gl_colorspace */
+
+#ifndef EGL_KHR_gl_renderbuffer_image
+#define EGL_KHR_gl_renderbuffer_image 1
+#define EGL_GL_RENDERBUFFER_KHR 0x30B9
+#endif /* EGL_KHR_gl_renderbuffer_image */
+
+#ifndef EGL_KHR_gl_texture_2D_image
+#define EGL_KHR_gl_texture_2D_image 1
+#define EGL_GL_TEXTURE_2D_KHR 0x30B1
+#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
+#endif /* EGL_KHR_gl_texture_2D_image */
+
+#ifndef EGL_KHR_gl_texture_3D_image
+#define EGL_KHR_gl_texture_3D_image 1
+#define EGL_GL_TEXTURE_3D_KHR 0x30B2
+#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
+#endif /* EGL_KHR_gl_texture_3D_image */
+
+#ifndef EGL_KHR_gl_texture_cubemap_image
+#define EGL_KHR_gl_texture_cubemap_image 1
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+
+#ifndef EGL_KHR_image
+#define EGL_KHR_image 1
+typedef void *EGLImageKHR;
+#define EGL_NATIVE_PIXMAP_KHR 0x30B0
+#define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
+typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
+#endif
+#endif /* EGL_KHR_image */
+
+#ifndef EGL_KHR_image_base
+#define EGL_KHR_image_base 1
+#define EGL_IMAGE_PRESERVED_KHR 0x30D2
+#endif /* EGL_KHR_image_base */
+
+#ifndef EGL_KHR_image_pixmap
+#define EGL_KHR_image_pixmap 1
+#endif /* EGL_KHR_image_pixmap */
+
+#ifndef EGL_KHR_lock_surface
+#define EGL_KHR_lock_surface 1
+#define EGL_READ_SURFACE_BIT_KHR 0x0001
+#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
+#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
+#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+#define EGL_MATCH_FORMAT_KHR 0x3043
+#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+#define EGL_FORMAT_RGB_565_KHR 0x30C1
+#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
+#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
+#define EGL_BITMAP_POINTER_KHR 0x30C6
+#define EGL_BITMAP_PITCH_KHR 0x30C7
+#define EGL_BITMAP_ORIGIN_KHR 0x30C8
+#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+#define EGL_LOWER_LEFT_KHR 0x30CE
+#define EGL_UPPER_LEFT_KHR 0x30CF
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);
+#endif
+#endif /* EGL_KHR_lock_surface */
+
+#ifndef EGL_KHR_lock_surface2
+#define EGL_KHR_lock_surface2 1
+#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+#endif /* EGL_KHR_lock_surface2 */
+
+#ifndef EGL_KHR_lock_surface3
+#define EGL_KHR_lock_surface3 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
+#endif
+#endif /* EGL_KHR_lock_surface3 */
+
+#ifndef EGL_KHR_mutable_render_buffer
+#define EGL_KHR_mutable_render_buffer 1
+#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
+#endif /* EGL_KHR_mutable_render_buffer */
+
+#ifndef EGL_KHR_no_config_context
+#define EGL_KHR_no_config_context 1
+#define EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0)
+#endif /* EGL_KHR_no_config_context */
+
+#ifndef EGL_KHR_partial_update
+#define EGL_KHR_partial_update 1
+#define EGL_BUFFER_AGE_KHR 0x313D
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
+#endif
+#endif /* EGL_KHR_partial_update */
+
+#ifndef EGL_KHR_platform_android
+#define EGL_KHR_platform_android 1
+#define EGL_PLATFORM_ANDROID_KHR 0x3141
+#endif /* EGL_KHR_platform_android */
+
+#ifndef EGL_KHR_platform_gbm
+#define EGL_KHR_platform_gbm 1
+#define EGL_PLATFORM_GBM_KHR 0x31D7
+#endif /* EGL_KHR_platform_gbm */
+
+#ifndef EGL_KHR_platform_wayland
+#define EGL_KHR_platform_wayland 1
+#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
+#endif /* EGL_KHR_platform_wayland */
+
+#ifndef EGL_KHR_platform_x11
+#define EGL_KHR_platform_x11 1
+#define EGL_PLATFORM_X11_KHR 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
+#endif /* EGL_KHR_platform_x11 */
+
+#ifndef EGL_KHR_reusable_sync
+#define EGL_KHR_reusable_sync 1
+#ifdef KHRONOS_SUPPORT_INT64
+#define EGL_SYNC_STATUS_KHR 0x30F1
+#define EGL_SIGNALED_KHR 0x30F2
+#define EGL_UNSIGNALED_KHR 0x30F3
+#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+#define EGL_CONDITION_SATISFIED_KHR 0x30F6
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_REUSABLE_KHR 0x30FA
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+#define EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0)
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_KHR_reusable_sync */
+
+#ifndef EGL_KHR_stream
+#define EGL_KHR_stream 1
+typedef void *EGLStreamKHR;
+typedef khronos_uint64_t EGLuint64KHR;
+#ifdef KHRONOS_SUPPORT_INT64
+#define EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0)
+#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+#define EGL_PRODUCER_FRAME_KHR 0x3212
+#define EGL_CONSUMER_FRAME_KHR 0x3213
+#define EGL_STREAM_STATE_KHR 0x3214
+#define EGL_STREAM_STATE_CREATED_KHR 0x3215
+#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
+#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+#define EGL_BAD_STREAM_KHR 0x321B
+#define EGL_BAD_STATE_KHR 0x321C
+typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_KHR_stream */
+
+#ifndef EGL_KHR_stream_attrib
+#define EGL_KHR_stream_attrib 1
+#ifdef KHRONOS_SUPPORT_INT64
+typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_KHR_stream_attrib */
+
+#ifndef EGL_KHR_stream_consumer_gltexture
+#define EGL_KHR_stream_consumer_gltexture 1
+#ifdef EGL_KHR_stream
+#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);
+#endif
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_consumer_gltexture */
+
+#ifndef EGL_KHR_stream_cross_process_fd
+#define EGL_KHR_stream_cross_process_fd 1
+typedef int EGLNativeFileDescriptorKHR;
+#ifdef EGL_KHR_stream
+#define EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1)
+typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);
+EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
+#endif
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_cross_process_fd */
+
+#ifndef EGL_KHR_stream_fifo
+#define EGL_KHR_stream_fifo 1
+#ifdef EGL_KHR_stream
+#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+#define EGL_STREAM_TIME_NOW_KHR 0x31FD
+#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
+#endif
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_fifo */
+
+#ifndef EGL_KHR_stream_producer_aldatalocator
+#define EGL_KHR_stream_producer_aldatalocator 1
+#ifdef EGL_KHR_stream
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+
+#ifndef EGL_KHR_stream_producer_eglsurface
+#define EGL_KHR_stream_producer_eglsurface 1
+#ifdef EGL_KHR_stream
+#define EGL_STREAM_BIT_KHR 0x0800
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
+#endif
+#endif /* EGL_KHR_stream */
+#endif /* EGL_KHR_stream_producer_eglsurface */
+
+#ifndef EGL_KHR_surfaceless_context
+#define EGL_KHR_surfaceless_context 1
+#endif /* EGL_KHR_surfaceless_context */
+
+#ifndef EGL_KHR_swap_buffers_with_damage
+#define EGL_KHR_swap_buffers_with_damage 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
+#endif
+#endif /* EGL_KHR_swap_buffers_with_damage */
+
+#ifndef EGL_KHR_vg_parent_image
+#define EGL_KHR_vg_parent_image 1
+#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
+#endif /* EGL_KHR_vg_parent_image */
+
+#ifndef EGL_KHR_wait_sync
+#define EGL_KHR_wait_sync 1
+typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
+#endif
+#endif /* EGL_KHR_wait_sync */
+
+#ifndef EGL_ANDROID_GLES_layers
+#define EGL_ANDROID_GLES_layers 1
+#endif /* EGL_ANDROID_GLES_layers */
+
+#ifndef EGL_ANDROID_blob_cache
+#define EGL_ANDROID_blob_cache 1
+typedef khronos_ssize_t EGLsizeiANDROID;
+typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
+typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
+typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+#endif
+#endif /* EGL_ANDROID_blob_cache */
+
+#ifndef EGL_ANDROID_create_native_client_buffer
+#define EGL_ANDROID_create_native_client_buffer 1
+#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list);
+#endif
+#endif /* EGL_ANDROID_create_native_client_buffer */
+
+#ifndef EGL_ANDROID_framebuffer_target
+#define EGL_ANDROID_framebuffer_target 1
+#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
+#endif /* EGL_ANDROID_framebuffer_target */
+
+#ifndef EGL_ANDROID_front_buffer_auto_refresh
+#define EGL_ANDROID_front_buffer_auto_refresh 1
+#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+
+#ifndef EGL_ANDROID_get_frame_timestamps
+#define EGL_ANDROID_get_frame_timestamps 1
+typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2)
+#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1)
+#define EGL_TIMESTAMPS_ANDROID 0x3430
+#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+#define EGL_READS_DONE_TIME_ANDROID 0x343C
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
+#endif
+#endif /* EGL_ANDROID_get_frame_timestamps */
+
+#ifndef EGL_ANDROID_get_native_client_buffer
+#define EGL_ANDROID_get_native_client_buffer 1
+struct AHardwareBuffer;
+typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer *buffer);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer);
+#endif
+#endif /* EGL_ANDROID_get_native_client_buffer */
+
+#ifndef EGL_ANDROID_image_native_buffer
+#define EGL_ANDROID_image_native_buffer 1
+#define EGL_NATIVE_BUFFER_ANDROID 0x3140
+#endif /* EGL_ANDROID_image_native_buffer */
+
+#ifndef EGL_ANDROID_native_fence_sync
+#define EGL_ANDROID_native_fence_sync 1
+#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
+typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);
+#endif
+#endif /* EGL_ANDROID_native_fence_sync */
+
+#ifndef EGL_ANDROID_presentation_time
+#define EGL_ANDROID_presentation_time 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
+#endif
+#endif /* EGL_ANDROID_presentation_time */
+
+#ifndef EGL_ANDROID_recordable
+#define EGL_ANDROID_recordable 1
+#define EGL_RECORDABLE_ANDROID 0x3142
+#endif /* EGL_ANDROID_recordable */
+
+#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
+#define EGL_ANGLE_d3d_share_handle_client_buffer 1
+#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+
+#ifndef EGL_ANGLE_device_d3d
+#define EGL_ANGLE_device_d3d 1
+#define EGL_D3D9_DEVICE_ANGLE 0x33A0
+#define EGL_D3D11_DEVICE_ANGLE 0x33A1
+#endif /* EGL_ANGLE_device_d3d */
+
+#ifndef EGL_ANGLE_query_surface_pointer
+#define EGL_ANGLE_query_surface_pointer 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
+#endif
+#endif /* EGL_ANGLE_query_surface_pointer */
+
+#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+
+#ifndef EGL_ANGLE_sync_control_rate
+#define EGL_ANGLE_sync_control_rate 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
+#endif
+#endif /* EGL_ANGLE_sync_control_rate */
+
+#ifndef EGL_ANGLE_window_fixed_size
+#define EGL_ANGLE_window_fixed_size 1
+#define EGL_FIXED_SIZE_ANGLE 0x3201
+#endif /* EGL_ANGLE_window_fixed_size */
+
+#ifndef EGL_ARM_image_format
+#define EGL_ARM_image_format 1
+#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
+#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
+#endif /* EGL_ARM_image_format */
+
+#ifndef EGL_ARM_implicit_external_sync
+#define EGL_ARM_implicit_external_sync 1
+#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
+#endif /* EGL_ARM_implicit_external_sync */
+
+#ifndef EGL_ARM_pixmap_multisample_discard
+#define EGL_ARM_pixmap_multisample_discard 1
+#define EGL_DISCARD_SAMPLES_ARM 0x3286
+#endif /* EGL_ARM_pixmap_multisample_discard */
+
+#ifndef EGL_EXT_bind_to_front
+#define EGL_EXT_bind_to_front 1
+#define EGL_FRONT_BUFFER_EXT 0x3464
+#endif /* EGL_EXT_bind_to_front */
+
+#ifndef EGL_EXT_buffer_age
+#define EGL_EXT_buffer_age 1
+#define EGL_BUFFER_AGE_EXT 0x313D
+#endif /* EGL_EXT_buffer_age */
+
+#ifndef EGL_EXT_client_extensions
+#define EGL_EXT_client_extensions 1
+#endif /* EGL_EXT_client_extensions */
+
+#ifndef EGL_EXT_client_sync
+#define EGL_EXT_client_sync 1
+#define EGL_SYNC_CLIENT_EXT 0x3364
+#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
+#endif
+#endif /* EGL_EXT_client_sync */
+
+#ifndef EGL_EXT_compositor
+#define EGL_EXT_compositor 1
+#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+#define EGL_EXTERNAL_REF_ID_EXT 0x3461
+#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint *external_ref_ids, EGLint num_entries);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextListEXT (const EGLint *external_ref_ids, EGLint num_entries);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorBindTexWindowEXT (EGLint external_win_id);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height);
+EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy);
+#endif
+#endif /* EGL_EXT_compositor */
+
+#ifndef EGL_EXT_config_select_group
+#define EGL_EXT_config_select_group 1
+#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
+#endif /* EGL_EXT_config_select_group */
+
+#ifndef EGL_EXT_create_context_robustness
+#define EGL_EXT_create_context_robustness 1
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
+#endif /* EGL_EXT_create_context_robustness */
+
+#ifndef EGL_EXT_device_base
+#define EGL_EXT_device_base 1
+typedef void *EGLDeviceEXT;
+#define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
+#define EGL_BAD_DEVICE_EXT 0x322B
+#define EGL_DEVICE_EXT 0x322C
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
+typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
+EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
+#endif
+#endif /* EGL_EXT_device_base */
+
+#ifndef EGL_EXT_device_drm
+#define EGL_EXT_device_drm 1
+#define EGL_DRM_DEVICE_FILE_EXT 0x3233
+#define EGL_DRM_MASTER_FD_EXT 0x333C
+#endif /* EGL_EXT_device_drm */
+
+#ifndef EGL_EXT_device_drm_render_node
+#define EGL_EXT_device_drm_render_node 1
+#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
+#endif /* EGL_EXT_device_drm_render_node */
+
+#ifndef EGL_EXT_device_enumeration
+#define EGL_EXT_device_enumeration 1
+#endif /* EGL_EXT_device_enumeration */
+
+#ifndef EGL_EXT_device_openwf
+#define EGL_EXT_device_openwf 1
+#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
+#define EGL_OPENWF_DEVICE_EXT 0x333D
+#endif /* EGL_EXT_device_openwf */
+
+#ifndef EGL_EXT_device_persistent_id
+#define EGL_EXT_device_persistent_id 1
+#define EGL_DEVICE_UUID_EXT 0x335C
+#define EGL_DRIVER_UUID_EXT 0x335D
+#define EGL_DRIVER_NAME_EXT 0x335E
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
+#endif
+#endif /* EGL_EXT_device_persistent_id */
+
+#ifndef EGL_EXT_device_query
+#define EGL_EXT_device_query 1
+#endif /* EGL_EXT_device_query */
+
+#ifndef EGL_EXT_device_query_name
+#define EGL_EXT_device_query_name 1
+#define EGL_RENDERER_EXT 0x335F
+#endif /* EGL_EXT_device_query_name */
+
+#ifndef EGL_EXT_explicit_device
+#define EGL_EXT_explicit_device 1
+#endif /* EGL_EXT_explicit_device */
+
+#ifndef EGL_EXT_gl_colorspace_bt2020_linear
+#define EGL_EXT_gl_colorspace_bt2020_linear 1
+#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+
+#ifndef EGL_EXT_gl_colorspace_bt2020_pq
+#define EGL_EXT_gl_colorspace_bt2020_pq 1
+#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3
+#define EGL_EXT_gl_colorspace_display_p3 1
+#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3_linear
+#define EGL_EXT_gl_colorspace_display_p3_linear 1
+#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough
+#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
+#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+
+#ifndef EGL_EXT_gl_colorspace_scrgb
+#define EGL_EXT_gl_colorspace_scrgb 1
+#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+
+#ifndef EGL_EXT_gl_colorspace_scrgb_linear
+#define EGL_EXT_gl_colorspace_scrgb_linear 1
+#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+
+#ifndef EGL_EXT_image_dma_buf_import
+#define EGL_EXT_image_dma_buf_import 1
+#define EGL_LINUX_DMA_BUF_EXT 0x3270
+#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
+#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+#define EGL_ITU_REC601_EXT 0x327F
+#define EGL_ITU_REC709_EXT 0x3280
+#define EGL_ITU_REC2020_EXT 0x3281
+#define EGL_YUV_FULL_RANGE_EXT 0x3282
+#define EGL_YUV_NARROW_RANGE_EXT 0x3283
+#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
+#endif /* EGL_EXT_image_dma_buf_import */
+
+#ifndef EGL_EXT_image_dma_buf_import_modifiers
+#define EGL_EXT_image_dma_buf_import_modifiers 1
+#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
+#endif
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+
+#ifndef EGL_EXT_image_gl_colorspace
+#define EGL_EXT_image_gl_colorspace 1
+#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
+#endif /* EGL_EXT_image_gl_colorspace */
+
+#ifndef EGL_EXT_image_implicit_sync_control
+#define EGL_EXT_image_implicit_sync_control 1
+#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
+#endif /* EGL_EXT_image_implicit_sync_control */
+
+#ifndef EGL_EXT_multiview_window
+#define EGL_EXT_multiview_window 1
+#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
+#endif /* EGL_EXT_multiview_window */
+
+#ifndef EGL_EXT_output_base
+#define EGL_EXT_output_base 1
+typedef void *EGLOutputLayerEXT;
+typedef void *EGLOutputPortEXT;
+#define EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0)
+#define EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0)
+#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
+#define EGL_SWAP_INTERVAL_EXT 0x322F
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
+typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
+typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
+EGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
+EGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
+EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
+EGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
+#endif
+#endif /* EGL_EXT_output_base */
+
+#ifndef EGL_EXT_output_drm
+#define EGL_EXT_output_drm 1
+#define EGL_DRM_CRTC_EXT 0x3234
+#define EGL_DRM_PLANE_EXT 0x3235
+#define EGL_DRM_CONNECTOR_EXT 0x3236
+#endif /* EGL_EXT_output_drm */
+
+#ifndef EGL_EXT_output_openwf
+#define EGL_EXT_output_openwf 1
+#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+#define EGL_OPENWF_PORT_ID_EXT 0x3239
+#endif /* EGL_EXT_output_openwf */
+
+#ifndef EGL_EXT_pixel_format_float
+#define EGL_EXT_pixel_format_float 1
+#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+#endif /* EGL_EXT_pixel_format_float */
+
+#ifndef EGL_EXT_platform_base
+#define EGL_EXT_platform_base 1
+typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
+#endif
+#endif /* EGL_EXT_platform_base */
+
+#ifndef EGL_EXT_platform_device
+#define EGL_EXT_platform_device 1
+#define EGL_PLATFORM_DEVICE_EXT 0x313F
+#endif /* EGL_EXT_platform_device */
+
+#ifndef EGL_EXT_platform_wayland
+#define EGL_EXT_platform_wayland 1
+#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
+#endif /* EGL_EXT_platform_wayland */
+
+#ifndef EGL_EXT_platform_x11
+#define EGL_EXT_platform_x11 1
+#define EGL_PLATFORM_X11_EXT 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
+#endif /* EGL_EXT_platform_x11 */
+
+#ifndef EGL_EXT_platform_xcb
+#define EGL_EXT_platform_xcb 1
+#define EGL_PLATFORM_XCB_EXT 0x31DC
+#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
+#endif /* EGL_EXT_platform_xcb */
+
+#ifndef EGL_EXT_present_opaque
+#define EGL_EXT_present_opaque 1
+#define EGL_PRESENT_OPAQUE_EXT 0x31DF
+#endif /* EGL_EXT_present_opaque */
+
+#ifndef EGL_EXT_protected_content
+#define EGL_EXT_protected_content 1
+#define EGL_PROTECTED_CONTENT_EXT 0x32C0
+#endif /* EGL_EXT_protected_content */
+
+#ifndef EGL_EXT_protected_surface
+#define EGL_EXT_protected_surface 1
+#endif /* EGL_EXT_protected_surface */
+
+#ifndef EGL_EXT_stream_consumer_egloutput
+#define EGL_EXT_stream_consumer_egloutput 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
+#endif
+#endif /* EGL_EXT_stream_consumer_egloutput */
+
+#ifndef EGL_EXT_surface_CTA861_3_metadata
+#define EGL_EXT_surface_CTA861_3_metadata 1
+#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+
+#ifndef EGL_EXT_surface_SMPTE2086_metadata
+#define EGL_EXT_surface_SMPTE2086_metadata 1
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+#define EGL_METADATA_SCALING_EXT 50000
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+
+#ifndef EGL_EXT_surface_compression
+#define EGL_EXT_surface_compression 1
+#define EGL_SURFACE_COMPRESSION_EXT 0x34B0
+#define EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
+#define EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC) (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQuerySupportedCompressionRatesEXT (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);
+#endif
+#endif /* EGL_EXT_surface_compression */
+
+#ifndef EGL_EXT_swap_buffers_with_damage
+#define EGL_EXT_swap_buffers_with_damage 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
+#endif
+#endif /* EGL_EXT_swap_buffers_with_damage */
+
+#ifndef EGL_EXT_sync_reuse
+#define EGL_EXT_sync_reuse 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
+#endif
+#endif /* EGL_EXT_sync_reuse */
+
+#ifndef EGL_EXT_yuv_surface
+#define EGL_EXT_yuv_surface 1
+#define EGL_YUV_ORDER_EXT 0x3301
+#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+#define EGL_YUV_SUBSAMPLE_EXT 0x3312
+#define EGL_YUV_DEPTH_RANGE_EXT 0x3317
+#define EGL_YUV_CSC_STANDARD_EXT 0x330A
+#define EGL_YUV_PLANE_BPP_EXT 0x331A
+#define EGL_YUV_BUFFER_EXT 0x3300
+#define EGL_YUV_ORDER_YUV_EXT 0x3302
+#define EGL_YUV_ORDER_YVU_EXT 0x3303
+#define EGL_YUV_ORDER_YUYV_EXT 0x3304
+#define EGL_YUV_ORDER_UYVY_EXT 0x3305
+#define EGL_YUV_ORDER_YVYU_EXT 0x3306
+#define EGL_YUV_ORDER_VYUY_EXT 0x3307
+#define EGL_YUV_ORDER_AYUV_EXT 0x3308
+#define EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
+#define EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
+#define EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
+#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
+#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
+#define EGL_YUV_CSC_STANDARD_601_EXT 0x330B
+#define EGL_YUV_CSC_STANDARD_709_EXT 0x330C
+#define EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
+#define EGL_YUV_PLANE_BPP_0_EXT 0x331B
+#define EGL_YUV_PLANE_BPP_8_EXT 0x331C
+#define EGL_YUV_PLANE_BPP_10_EXT 0x331D
+#endif /* EGL_EXT_yuv_surface */
+
+#ifndef EGL_HI_clientpixmap
+#define EGL_HI_clientpixmap 1
+struct EGLClientPixmapHI {
+ void *pData;
+ EGLint iWidth;
+ EGLint iHeight;
+ EGLint iStride;
+};
+#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
+#endif
+#endif /* EGL_HI_clientpixmap */
+
+#ifndef EGL_HI_colorformats
+#define EGL_HI_colorformats 1
+#define EGL_COLOR_FORMAT_HI 0x8F70
+#define EGL_COLOR_RGB_HI 0x8F71
+#define EGL_COLOR_RGBA_HI 0x8F72
+#define EGL_COLOR_ARGB_HI 0x8F73
+#endif /* EGL_HI_colorformats */
+
+#ifndef EGL_IMG_context_priority
+#define EGL_IMG_context_priority 1
+#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
+#endif /* EGL_IMG_context_priority */
+
+#ifndef EGL_IMG_image_plane_attribs
+#define EGL_IMG_image_plane_attribs 1
+#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
+#endif /* EGL_IMG_image_plane_attribs */
+
+#ifndef EGL_MESA_drm_image
+#define EGL_MESA_drm_image 1
+#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+#define EGL_DRM_BUFFER_USE_MESA 0x31D1
+#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+#define EGL_DRM_BUFFER_MESA 0x31D3
+#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
+#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
+#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
+typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
+#endif
+#endif /* EGL_MESA_drm_image */
+
+#ifndef EGL_MESA_image_dma_buf_export
+#define EGL_MESA_image_dma_buf_export 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
+EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
+#endif
+#endif /* EGL_MESA_image_dma_buf_export */
+
+#ifndef EGL_MESA_platform_gbm
+#define EGL_MESA_platform_gbm 1
+#define EGL_PLATFORM_GBM_MESA 0x31D7
+#endif /* EGL_MESA_platform_gbm */
+
+#ifndef EGL_MESA_platform_surfaceless
+#define EGL_MESA_platform_surfaceless 1
+#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+#endif /* EGL_MESA_platform_surfaceless */
+
+#ifndef EGL_MESA_query_driver
+#define EGL_MESA_query_driver 1
+typedef char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy);
+typedef const char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI char *EGLAPIENTRY eglGetDisplayDriverConfig (EGLDisplay dpy);
+EGLAPI const char *EGLAPIENTRY eglGetDisplayDriverName (EGLDisplay dpy);
+#endif
+#endif /* EGL_MESA_query_driver */
+
+#ifndef EGL_NOK_swap_region
+#define EGL_NOK_swap_region 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
+#endif
+#endif /* EGL_NOK_swap_region */
+
+#ifndef EGL_NOK_swap_region2
+#define EGL_NOK_swap_region2 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
+#endif
+#endif /* EGL_NOK_swap_region2 */
+
+#ifndef EGL_NOK_texture_from_pixmap
+#define EGL_NOK_texture_from_pixmap 1
+#define EGL_Y_INVERTED_NOK 0x307F
+#endif /* EGL_NOK_texture_from_pixmap */
+
+#ifndef EGL_NV_3dvision_surface
+#define EGL_NV_3dvision_surface 1
+#define EGL_AUTO_STEREO_NV 0x3136
+#endif /* EGL_NV_3dvision_surface */
+
+#ifndef EGL_NV_context_priority_realtime
+#define EGL_NV_context_priority_realtime 1
+#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
+#endif /* EGL_NV_context_priority_realtime */
+
+#ifndef EGL_NV_coverage_sample
+#define EGL_NV_coverage_sample 1
+#define EGL_COVERAGE_BUFFERS_NV 0x30E0
+#define EGL_COVERAGE_SAMPLES_NV 0x30E1
+#endif /* EGL_NV_coverage_sample */
+
+#ifndef EGL_NV_coverage_sample_resolve
+#define EGL_NV_coverage_sample_resolve 1
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
+#endif /* EGL_NV_coverage_sample_resolve */
+
+#ifndef EGL_NV_cuda_event
+#define EGL_NV_cuda_event 1
+#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
+#define EGL_SYNC_CUDA_EVENT_NV 0x323C
+#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
+#endif /* EGL_NV_cuda_event */
+
+#ifndef EGL_NV_depth_nonlinear
+#define EGL_NV_depth_nonlinear 1
+#define EGL_DEPTH_ENCODING_NV 0x30E2
+#define EGL_DEPTH_ENCODING_NONE_NV 0
+#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
+#endif /* EGL_NV_depth_nonlinear */
+
+#ifndef EGL_NV_device_cuda
+#define EGL_NV_device_cuda 1
+#define EGL_CUDA_DEVICE_NV 0x323A
+#endif /* EGL_NV_device_cuda */
+
+#ifndef EGL_NV_native_query
+#define EGL_NV_native_query 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
+#endif
+#endif /* EGL_NV_native_query */
+
+#ifndef EGL_NV_post_convert_rounding
+#define EGL_NV_post_convert_rounding 1
+#endif /* EGL_NV_post_convert_rounding */
+
+#ifndef EGL_NV_post_sub_buffer
+#define EGL_NV_post_sub_buffer 1
+#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
+#endif
+#endif /* EGL_NV_post_sub_buffer */
+
+#ifndef EGL_NV_quadruple_buffer
+#define EGL_NV_quadruple_buffer 1
+#define EGL_QUADRUPLE_BUFFER_NV 0x3231
+#endif /* EGL_NV_quadruple_buffer */
+
+#ifndef EGL_NV_robustness_video_memory_purge
+#define EGL_NV_robustness_video_memory_purge 1
+#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
+#endif /* EGL_NV_robustness_video_memory_purge */
+
+#ifndef EGL_NV_stream_consumer_eglimage
+#define EGL_NV_stream_consumer_eglimage 1
+#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
+#define EGL_STREAM_IMAGE_ADD_NV 0x3374
+#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
+#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);
+typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);
+EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
+#endif
+#endif /* EGL_NV_stream_consumer_eglimage */
+
+#ifndef EGL_NV_stream_consumer_gltexture_yuv
+#define EGL_NV_stream_consumer_gltexture_yuv 1
+#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
+#endif
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+
+#ifndef EGL_NV_stream_cross_display
+#define EGL_NV_stream_cross_display 1
+#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
+#endif /* EGL_NV_stream_cross_display */
+
+#ifndef EGL_NV_stream_cross_object
+#define EGL_NV_stream_cross_object 1
+#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
+#endif /* EGL_NV_stream_cross_object */
+
+#ifndef EGL_NV_stream_cross_partition
+#define EGL_NV_stream_cross_partition 1
+#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
+#endif /* EGL_NV_stream_cross_partition */
+
+#ifndef EGL_NV_stream_cross_process
+#define EGL_NV_stream_cross_process 1
+#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
+#endif /* EGL_NV_stream_cross_process */
+
+#ifndef EGL_NV_stream_cross_system
+#define EGL_NV_stream_cross_system 1
+#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
+#endif /* EGL_NV_stream_cross_system */
+
+#ifndef EGL_NV_stream_dma
+#define EGL_NV_stream_dma 1
+#define EGL_STREAM_DMA_NV 0x3371
+#define EGL_STREAM_DMA_SERVER_NV 0x3372
+#endif /* EGL_NV_stream_dma */
+
+#ifndef EGL_NV_stream_fifo_next
+#define EGL_NV_stream_fifo_next 1
+#define EGL_PENDING_FRAME_NV 0x3329
+#define EGL_STREAM_TIME_PENDING_NV 0x332A
+#endif /* EGL_NV_stream_fifo_next */
+
+#ifndef EGL_NV_stream_fifo_synchronous
+#define EGL_NV_stream_fifo_synchronous 1
+#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
+#endif /* EGL_NV_stream_fifo_synchronous */
+
+#ifndef EGL_NV_stream_flush
+#define EGL_NV_stream_flush 1
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream);
+#endif
+#endif /* EGL_NV_stream_flush */
+
+#ifndef EGL_NV_stream_frame_limits
+#define EGL_NV_stream_frame_limits 1
+#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
+#endif /* EGL_NV_stream_frame_limits */
+
+#ifndef EGL_NV_stream_metadata
+#define EGL_NV_stream_metadata 1
+#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+#define EGL_PRODUCER_METADATA_NV 0x3253
+#define EGL_CONSUMER_METADATA_NV 0x3254
+#define EGL_PENDING_METADATA_NV 0x3328
+#define EGL_METADATA0_SIZE_NV 0x3255
+#define EGL_METADATA1_SIZE_NV 0x3256
+#define EGL_METADATA2_SIZE_NV 0x3257
+#define EGL_METADATA3_SIZE_NV 0x3258
+#define EGL_METADATA0_TYPE_NV 0x3259
+#define EGL_METADATA1_TYPE_NV 0x325A
+#define EGL_METADATA2_TYPE_NV 0x325B
+#define EGL_METADATA3_TYPE_NV 0x325C
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
+EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
+#endif
+#endif /* EGL_NV_stream_metadata */
+
+#ifndef EGL_NV_stream_origin
+#define EGL_NV_stream_origin 1
+#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+#define EGL_LEFT_NV 0x336B
+#define EGL_RIGHT_NV 0x336C
+#define EGL_TOP_NV 0x336D
+#define EGL_BOTTOM_NV 0x336E
+#define EGL_X_AXIS_NV 0x336F
+#define EGL_Y_AXIS_NV 0x3370
+#endif /* EGL_NV_stream_origin */
+
+#ifndef EGL_NV_stream_remote
+#define EGL_NV_stream_remote 1
+#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+#define EGL_STREAM_TYPE_NV 0x3241
+#define EGL_STREAM_PROTOCOL_NV 0x3242
+#define EGL_STREAM_ENDPOINT_NV 0x3243
+#define EGL_STREAM_LOCAL_NV 0x3244
+#define EGL_STREAM_PRODUCER_NV 0x3247
+#define EGL_STREAM_CONSUMER_NV 0x3248
+#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
+#endif /* EGL_NV_stream_remote */
+
+#ifndef EGL_NV_stream_reset
+#define EGL_NV_stream_reset 1
+#define EGL_SUPPORT_RESET_NV 0x3334
+#define EGL_SUPPORT_REUSE_NV 0x3335
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream);
+#endif
+#endif /* EGL_NV_stream_reset */
+
+#ifndef EGL_NV_stream_socket
+#define EGL_NV_stream_socket 1
+#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+#define EGL_SOCKET_HANDLE_NV 0x324C
+#define EGL_SOCKET_TYPE_NV 0x324D
+#endif /* EGL_NV_stream_socket */
+
+#ifndef EGL_NV_stream_socket_inet
+#define EGL_NV_stream_socket_inet 1
+#define EGL_SOCKET_TYPE_INET_NV 0x324F
+#endif /* EGL_NV_stream_socket_inet */
+
+#ifndef EGL_NV_stream_socket_unix
+#define EGL_NV_stream_socket_unix 1
+#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
+#endif /* EGL_NV_stream_socket_unix */
+
+#ifndef EGL_NV_stream_sync
+#define EGL_NV_stream_sync 1
+#define EGL_SYNC_NEW_FRAME_NV 0x321F
+typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
+#endif
+#endif /* EGL_NV_stream_sync */
+
+#ifndef EGL_NV_sync
+#define EGL_NV_sync 1
+typedef void *EGLSyncNV;
+typedef khronos_utime_nanoseconds_t EGLTimeNV;
+#ifdef KHRONOS_SUPPORT_INT64
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+#define EGL_SYNC_STATUS_NV 0x30E7
+#define EGL_SIGNALED_NV 0x30E8
+#define EGL_UNSIGNALED_NV 0x30E9
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
+#define EGL_ALREADY_SIGNALED_NV 0x30EA
+#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
+#define EGL_CONDITION_SATISFIED_NV 0x30EC
+#define EGL_SYNC_TYPE_NV 0x30ED
+#define EGL_SYNC_CONDITION_NV 0x30EE
+#define EGL_SYNC_FENCE_NV 0x30EF
+#define EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0)
+typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
+typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
+EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);
+EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);
+EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
+EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_NV_sync */
+
+#ifndef EGL_NV_system_time
+#define EGL_NV_system_time 1
+typedef khronos_utime_nanoseconds_t EGLuint64NV;
+#ifdef KHRONOS_SUPPORT_INT64
+typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
+typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);
+EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
+#endif
+#endif /* KHRONOS_SUPPORT_INT64 */
+#endif /* EGL_NV_system_time */
+
+#ifndef EGL_NV_triple_buffer
+#define EGL_NV_triple_buffer 1
+#define EGL_TRIPLE_BUFFER_NV 0x3230
+#endif /* EGL_NV_triple_buffer */
+
+#ifndef EGL_TIZEN_image_native_buffer
+#define EGL_TIZEN_image_native_buffer 1
+#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
+#endif /* EGL_TIZEN_image_native_buffer */
+
+#ifndef EGL_TIZEN_image_native_surface
+#define EGL_TIZEN_image_native_surface 1
+#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
+#endif /* EGL_TIZEN_image_native_surface */
+
+#ifndef EGL_WL_bind_wayland_display
+#define EGL_WL_bind_wayland_display 1
+#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC
+#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC
+#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC
+struct wl_display;
+struct wl_resource;
+#define EGL_WAYLAND_BUFFER_WL 0x31D5
+#define EGL_WAYLAND_PLANE_WL 0x31D6
+#define EGL_TEXTURE_Y_U_V_WL 0x31D7
+#define EGL_TEXTURE_Y_UV_WL 0x31D8
+#define EGL_TEXTURE_Y_XUXV_WL 0x31D9
+#define EGL_TEXTURE_EXTERNAL_WL 0x31DA
+#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
+EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
+EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
+#endif
+#endif /* EGL_WL_bind_wayland_display */
+
+#ifndef EGL_WL_create_wayland_buffer_from_image
+#define EGL_WL_create_wayland_buffer_from_image 1
+#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC
+struct wl_buffer;
+typedef struct wl_buffer *(EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image);
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI struct wl_buffer *EGLAPIENTRY eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image);
+#endif
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/glew/auto/EGL-Registry/api/EGL/eglplatform.h b/glew/auto/EGL-Registry/api/EGL/eglplatform.h
new file mode 100644
index 0000000..99362a2
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/EGL/eglplatform.h
@@ -0,0 +1,169 @@
+#ifndef __eglplatform_h_
+#define __eglplatform_h_
+
+/*
+** Copyright 2007-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+/* Platform-specific types and definitions for egl.h
+ *
+ * Adopters may modify khrplatform.h and this file to suit their platform.
+ * You are encouraged to submit all modifications to the Khronos group so that
+ * they can be included in future versions of this file. Please submit changes
+ * by filing an issue or pull request on the public Khronos EGL Registry, at
+ * https://www.github.com/KhronosGroup/EGL-Registry/
+ */
+
+#include <KHR/khrplatform.h>
+
+/* Macros used in EGL function prototype declarations.
+ *
+ * EGL functions should be prototyped as:
+ *
+ * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
+ * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
+ *
+ * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
+ */
+
+#ifndef EGLAPI
+#define EGLAPI KHRONOS_APICALL
+#endif
+
+#ifndef EGLAPIENTRY
+#define EGLAPIENTRY KHRONOS_APIENTRY
+#endif
+#define EGLAPIENTRYP EGLAPIENTRY*
+
+/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
+ * are aliases of window-system-dependent types, such as X Display * or
+ * Windows Device Context. They must be defined in platform-specific
+ * code below. The EGL-prefixed versions of Native*Type are the same
+ * types, renamed in EGL 1.3 so all types in the API start with "EGL".
+ *
+ * Khronos STRONGLY RECOMMENDS that you use the default definitions
+ * provided below, since these changes affect both binary and source
+ * portability of applications using EGL running on different EGL
+ * implementations.
+ */
+
+#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)
+
+typedef void *EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN 1
+#endif
+#include <windows.h>
+
+typedef HDC EGLNativeDisplayType;
+typedef HBITMAP EGLNativePixmapType;
+typedef HWND EGLNativeWindowType;
+
+#elif defined(__EMSCRIPTEN__)
+
+typedef int EGLNativeDisplayType;
+typedef int EGLNativePixmapType;
+typedef int EGLNativeWindowType;
+
+#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */
+
+typedef int EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(WL_EGL_PLATFORM)
+
+typedef struct wl_display *EGLNativeDisplayType;
+typedef struct wl_egl_pixmap *EGLNativePixmapType;
+typedef struct wl_egl_window *EGLNativeWindowType;
+
+#elif defined(__GBM__)
+
+typedef struct gbm_device *EGLNativeDisplayType;
+typedef struct gbm_bo *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(__ANDROID__) || defined(ANDROID)
+
+struct ANativeWindow;
+struct egl_native_pixmap_t;
+
+typedef void* EGLNativeDisplayType;
+typedef struct egl_native_pixmap_t* EGLNativePixmapType;
+typedef struct ANativeWindow* EGLNativeWindowType;
+
+#elif defined(USE_OZONE)
+
+typedef intptr_t EGLNativeDisplayType;
+typedef intptr_t EGLNativePixmapType;
+typedef intptr_t EGLNativeWindowType;
+
+#elif defined(USE_X11)
+
+/* X11 (tentative) */
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+typedef Display *EGLNativeDisplayType;
+typedef Pixmap EGLNativePixmapType;
+typedef Window EGLNativeWindowType;
+
+#elif defined(__unix__)
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#elif defined(__APPLE__)
+
+typedef int EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(__HAIKU__)
+
+#include <kernel/image.h>
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#elif defined(__Fuchsia__)
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#else
+#error "Platform not recognized"
+#endif
+
+/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
+typedef EGLNativeDisplayType NativeDisplayType;
+typedef EGLNativePixmapType NativePixmapType;
+typedef EGLNativeWindowType NativeWindowType;
+
+
+/* Define EGLint. This must be a signed integral type large enough to contain
+ * all legal attribute names and values passed into and out of EGL, whether
+ * their type is boolean, bitmask, enumerant (symbolic constant), integer,
+ * handle, or other. While in general a 32-bit integer will suffice, if
+ * handles are 64 bit types, then EGLint should be defined as a signed 64-bit
+ * integer type.
+ */
+typedef khronos_int32_t EGLint;
+
+
+/* C++ / C typecast macros for special EGL handle values */
+#if defined(__cplusplus)
+#define EGL_CAST(type, value) (static_cast<type>(value))
+#else
+#define EGL_CAST(type, value) ((type) (value))
+#endif
+
+#endif /* __eglplatform_h */
diff --git a/glew/auto/EGL-Registry/api/KHR/khrplatform.h b/glew/auto/EGL-Registry/api/KHR/khrplatform.h
new file mode 100644
index 0000000..0164644
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/KHR/khrplatform.h
@@ -0,0 +1,311 @@
+#ifndef __khrplatform_h_
+#define __khrplatform_h_
+
+/*
+** Copyright (c) 2008-2018 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+/* Khronos platform-specific types and definitions.
+ *
+ * The master copy of khrplatform.h is maintained in the Khronos EGL
+ * Registry repository at https://github.com/KhronosGroup/EGL-Registry
+ * The last semantic modification to khrplatform.h was at commit ID:
+ * 67a3e0864c2d75ea5287b9f3d2eb74a745936692
+ *
+ * Adopters may modify this file to suit their platform. Adopters are
+ * encouraged to submit platform specific modifications to the Khronos
+ * group so that they can be included in future versions of this file.
+ * Please submit changes by filing pull requests or issues on
+ * the EGL Registry repository linked above.
+ *
+ *
+ * See the Implementer's Guidelines for information about where this file
+ * should be located on your system and for more details of its use:
+ * http://www.khronos.org/registry/implementers_guide.pdf
+ *
+ * This file should be included as
+ * #include <KHR/khrplatform.h>
+ * by Khronos client API header files that use its types and defines.
+ *
+ * The types in khrplatform.h should only be used to define API-specific types.
+ *
+ * Types defined in khrplatform.h:
+ * khronos_int8_t signed 8 bit
+ * khronos_uint8_t unsigned 8 bit
+ * khronos_int16_t signed 16 bit
+ * khronos_uint16_t unsigned 16 bit
+ * khronos_int32_t signed 32 bit
+ * khronos_uint32_t unsigned 32 bit
+ * khronos_int64_t signed 64 bit
+ * khronos_uint64_t unsigned 64 bit
+ * khronos_intptr_t signed same number of bits as a pointer
+ * khronos_uintptr_t unsigned same number of bits as a pointer
+ * khronos_ssize_t signed size
+ * khronos_usize_t unsigned size
+ * khronos_float_t signed 32 bit floating point
+ * khronos_time_ns_t unsigned 64 bit time in nanoseconds
+ * khronos_utime_nanoseconds_t unsigned time interval or absolute time in
+ * nanoseconds
+ * khronos_stime_nanoseconds_t signed time interval in nanoseconds
+ * khronos_boolean_enum_t enumerated boolean type. This should
+ * only be used as a base type when a client API's boolean type is
+ * an enum. Client APIs which use an integer or other type for
+ * booleans cannot use this as the base type for their boolean.
+ *
+ * Tokens defined in khrplatform.h:
+ *
+ * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
+ *
+ * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
+ * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
+ *
+ * Calling convention macros defined in this file:
+ * KHRONOS_APICALL
+ * KHRONOS_APIENTRY
+ * KHRONOS_APIATTRIBUTES
+ *
+ * These may be used in function prototypes as:
+ *
+ * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
+ * int arg1,
+ * int arg2) KHRONOS_APIATTRIBUTES;
+ */
+
+#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
+# define KHRONOS_STATIC 1
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APICALL
+ *-------------------------------------------------------------------------
+ * This precedes the return type of the function in the function prototype.
+ */
+#if defined(KHRONOS_STATIC)
+ /* If the preprocessor constant KHRONOS_STATIC is defined, make the
+ * header compatible with static linking. */
+# define KHRONOS_APICALL
+#elif defined(_WIN32)
+# define KHRONOS_APICALL __declspec(dllimport)
+#elif defined (__SYMBIAN32__)
+# define KHRONOS_APICALL IMPORT_C
+#elif defined(__ANDROID__)
+# define KHRONOS_APICALL __attribute__((visibility("default")))
+#else
+# define KHRONOS_APICALL
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APIENTRY
+ *-------------------------------------------------------------------------
+ * This follows the return type of the function and precedes the function
+ * name in the function prototype.
+ */
+#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
+ /* Win32 but not WinCE */
+# define KHRONOS_APIENTRY __stdcall
+#else
+# define KHRONOS_APIENTRY
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APIATTRIBUTES
+ *-------------------------------------------------------------------------
+ * This follows the closing parenthesis of the function prototype arguments.
+ */
+#if defined (__ARMCC_2__)
+#define KHRONOS_APIATTRIBUTES __softfp
+#else
+#define KHRONOS_APIATTRIBUTES
+#endif
+
+/*-------------------------------------------------------------------------
+ * basic type definitions
+ *-----------------------------------------------------------------------*/
+#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
+
+
+/*
+ * Using <stdint.h>
+ */
+#include <stdint.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+/*
+ * To support platform where unsigned long cannot be used interchangeably with
+ * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
+ * Ideally, we could just use (u)intptr_t everywhere, but this could result in
+ * ABI breakage if khronos_uintptr_t is changed from unsigned long to
+ * unsigned long long or similar (this results in different C++ name mangling).
+ * To avoid changes for existing platforms, we restrict usage of intptr_t to
+ * platforms where the size of a pointer is larger than the size of long.
+ */
+#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
+#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
+#define KHRONOS_USE_INTPTR_T
+#endif
+#endif
+
+#elif defined(__VMS ) || defined(__sgi)
+
+/*
+ * Using <inttypes.h>
+ */
+#include <inttypes.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
+
+/*
+ * Win32
+ */
+typedef __int32 khronos_int32_t;
+typedef unsigned __int32 khronos_uint32_t;
+typedef __int64 khronos_int64_t;
+typedef unsigned __int64 khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif defined(__sun__) || defined(__digital__)
+
+/*
+ * Sun or Digital
+ */
+typedef int khronos_int32_t;
+typedef unsigned int khronos_uint32_t;
+#if defined(__arch64__) || defined(_LP64)
+typedef long int khronos_int64_t;
+typedef unsigned long int khronos_uint64_t;
+#else
+typedef long long int khronos_int64_t;
+typedef unsigned long long int khronos_uint64_t;
+#endif /* __arch64__ */
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif 0
+
+/*
+ * Hypothetical platform with no float or int64 support
+ */
+typedef int khronos_int32_t;
+typedef unsigned int khronos_uint32_t;
+#define KHRONOS_SUPPORT_INT64 0
+#define KHRONOS_SUPPORT_FLOAT 0
+
+#else
+
+/*
+ * Generic fallback
+ */
+#include <stdint.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#endif
+
+
+/*
+ * Types that are (so far) the same on all platforms
+ */
+typedef signed char khronos_int8_t;
+typedef unsigned char khronos_uint8_t;
+typedef signed short int khronos_int16_t;
+typedef unsigned short int khronos_uint16_t;
+
+/*
+ * Types that differ between LLP64 and LP64 architectures - in LLP64,
+ * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
+ * to be the only LLP64 architecture in current use.
+ */
+#ifdef KHRONOS_USE_INTPTR_T
+typedef intptr_t khronos_intptr_t;
+typedef uintptr_t khronos_uintptr_t;
+#elif defined(_WIN64)
+typedef signed long long int khronos_intptr_t;
+typedef unsigned long long int khronos_uintptr_t;
+#else
+typedef signed long int khronos_intptr_t;
+typedef unsigned long int khronos_uintptr_t;
+#endif
+
+#if defined(_WIN64)
+typedef signed long long int khronos_ssize_t;
+typedef unsigned long long int khronos_usize_t;
+#else
+typedef signed long int khronos_ssize_t;
+typedef unsigned long int khronos_usize_t;
+#endif
+
+#if KHRONOS_SUPPORT_FLOAT
+/*
+ * Float type
+ */
+typedef float khronos_float_t;
+#endif
+
+#if KHRONOS_SUPPORT_INT64
+/* Time types
+ *
+ * These types can be used to represent a time interval in nanoseconds or
+ * an absolute Unadjusted System Time. Unadjusted System Time is the number
+ * of nanoseconds since some arbitrary system event (e.g. since the last
+ * time the system booted). The Unadjusted System Time is an unsigned
+ * 64 bit value that wraps back to 0 every 584 years. Time intervals
+ * may be either signed or unsigned.
+ */
+typedef khronos_uint64_t khronos_utime_nanoseconds_t;
+typedef khronos_int64_t khronos_stime_nanoseconds_t;
+#endif
+
+/*
+ * Dummy value used to pad enum types to 32 bits.
+ */
+#ifndef KHRONOS_MAX_ENUM
+#define KHRONOS_MAX_ENUM 0x7FFFFFFF
+#endif
+
+/*
+ * Enumerated boolean type
+ *
+ * Values other than zero should be considered to be true. Therefore
+ * comparisons should not be made against KHRONOS_TRUE.
+ */
+typedef enum {
+ KHRONOS_FALSE = 0,
+ KHRONOS_TRUE = 1,
+ KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
+} khronos_boolean_enum_t;
+
+#endif /* __khrplatform_h_ */
diff --git a/glew/auto/EGL-Registry/api/egl.xml b/glew/auto/EGL-Registry/api/egl.xml
new file mode 100644
index 0000000..e9b9eaf
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/egl.xml
@@ -0,0 +1,3532 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<registry>
+ <!--
+ Copyright 2013-2020 The Khronos Group Inc.
+ SPDX-License-Identifier: Apache-2.0
+ -->
+ <!--
+ This file, egl.xml, is the EGL API Registry. The older ".spec" file
+ format has been retired and will no longer be updated with new
+ extensions and API versions. The canonical version of the registry,
+ together with documentation, schema, and Python generator scripts used
+ to generate C header files for EGL, can be found in the Khronos Registry
+ at
+ https://www.github.com/KhronosGroup/EGL-Registry
+ -->
+
+ <!-- SECTION: EGL type definitions. Does not include GL types. -->
+ <types>
+ <!-- These are dependencies EGL types require to be declared legally -->
+ <type name="khrplatform">#include &lt;KHR/khrplatform.h&gt;</type>
+ <type name="eglplatform" requires="khrplatform">#include &lt;EGL/eglplatform.h&gt;</type>
+ <type name="khronos_utime_nanoseconds_t" requires="khrplatform"/>
+ <type name="khronos_stime_nanoseconds_t" requires="khrplatform"/>
+ <type name="khronos_uint64_t" requires="khrplatform"/>
+ <type name="khronos_ssize_t" requires="khrplatform"/>
+ <type name="EGLNativeDisplayType" requires="eglplatform"/>
+ <type name="EGLNativePixmapType" requires="eglplatform"/>
+ <type name="EGLNativeWindowType" requires="eglplatform"/>
+ <type name="EGLint" requires="eglplatform"/>
+ <type name="NativeDisplayType" requires="eglplatform"/>
+ <type name="NativePixmapType" requires="eglplatform"/>
+ <type name="NativeWindowType" requires="eglplatform"/>
+ <type>struct <name>AHardwareBuffer</name>;</type>
+ <type>struct <name>wl_buffer</name>;</type>
+ <type>struct <name>wl_display</name>;</type>
+ <type>struct <name>wl_resource</name>;</type>
+ <!-- Dummy placeholders for non-EGL types -->
+ <type name="Bool"/>
+ <!-- These are actual EGL types. -->
+ <type>typedef unsigned int <name>EGLBoolean</name>;</type>
+ <type>typedef unsigned int <name>EGLenum</name>;</type>
+ <type requires="khrplatform">typedef intptr_t <name>EGLAttribKHR</name>;</type>
+ <type requires="khrplatform">typedef intptr_t <name>EGLAttrib</name>;</type>
+ <type>typedef void *<name>EGLClientBuffer</name>;</type>
+ <type>typedef void *<name>EGLConfig</name>;</type>
+ <type>typedef void *<name>EGLContext</name>;</type>
+ <type>typedef void *<name>EGLDeviceEXT</name>;</type>
+ <type>typedef void *<name>EGLDisplay</name>;</type>
+ <type>typedef void *<name>EGLImage</name>;</type>
+ <type>typedef void *<name>EGLImageKHR</name>;</type>
+ <type>typedef void *<name>EGLLabelKHR</name>;</type>
+ <type>typedef void *<name>EGLObjectKHR</name>;</type>
+ <type>typedef void *<name>EGLOutputLayerEXT</name>;</type>
+ <type>typedef void *<name>EGLOutputPortEXT</name>;</type>
+ <type>typedef void *<name>EGLStreamKHR</name>;</type>
+ <type>typedef void *<name>EGLSurface</name>;</type>
+ <type>typedef void *<name>EGLSync</name>;</type>
+ <type>typedef void *<name>EGLSyncKHR</name>;</type>
+ <type>typedef void *<name>EGLSyncNV</name>;</type>
+ <type>typedef void (*<name>__eglMustCastToProperFunctionPointerType</name>)(void);</type>
+ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTimeKHR</name>;</type>
+ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTime</name>;</type>
+ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTimeNV</name>;</type>
+ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLuint64NV</name>;</type>
+ <type requires="khrplatform">typedef khronos_uint64_t <name>EGLuint64KHR</name>;</type>
+ <type requires="khrplatform">typedef khronos_stime_nanoseconds_t <name>EGLnsecsANDROID</name>;</type>
+ <type>typedef int <name>EGLNativeFileDescriptorKHR</name>;</type>
+ <type requires="khrplatform">typedef khronos_ssize_t <name>EGLsizeiANDROID</name>;</type>
+ <type requires="EGLsizeiANDROID">typedef void (*<name>EGLSetBlobFuncANDROID</name>) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);</type>
+ <type requires="EGLsizeiANDROID">typedef EGLsizeiANDROID (*<name>EGLGetBlobFuncANDROID</name>) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);</type>
+ <type>struct <name>EGLClientPixmapHI</name> {
+ void *pData;
+ EGLint iWidth;
+ EGLint iHeight;
+ EGLint iStride;
+};</type>
+ <!-- Backwards-compatibility hack: Downstream implementations shipped
+ incorrect function pointer names for some years. -->
+ <type>typedef void (<apientry/> *<name>EGLDEBUGPROCKHR</name>)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);</type>
+ <type>#define <name>PFNEGLBINDWAYLANDDISPLAYWL</name> PFNEGLBINDWAYLANDDISPLAYWLPROC</type>
+ <type>#define <name>PFNEGLUNBINDWAYLANDDISPLAYWL</name> PFNEGLUNBINDWAYLANDDISPLAYWLPROC</type>
+ <type>#define <name>PFNEGLQUERYWAYLANDBUFFERWL</name> PFNEGLQUERYWAYLANDBUFFERWLPROC</type>
+ <type>#define <name>PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL</name> PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC</type>
+ </types>
+
+ <!-- SECTION: EGL enumerant (token) definitions. -->
+
+ <!-- Bitmasks each have their own namespace, as do a few other
+ categories of enumeration -->
+
+ <enums namespace="EGLSurfaceTypeMask" type="bitmask" comment="EGL_SURFACE_TYPE bits">
+ <enum value="0x0001" name="EGL_PBUFFER_BIT"/>
+ <enum value="0x0002" name="EGL_PIXMAP_BIT"/>
+ <enum value="0x0004" name="EGL_WINDOW_BIT"/>
+ <enum value="0x0008" name="EGL_PBUFFER_IMAGE_BIT_TAO" comment="Unreleased TAO extension"/>
+ <enum value="0x0010" name="EGL_PBUFFER_PALETTE_IMAGE_BIT_TAO" comment="Unreleased TAO extension"/>
+ <enum value="0x0020" name="EGL_VG_COLORSPACE_LINEAR_BIT"/>
+ <enum value="0x0020" name="EGL_VG_COLORSPACE_LINEAR_BIT_KHR"/>
+ <enum value="0x0040" name="EGL_VG_ALPHA_FORMAT_PRE_BIT"/>
+ <enum value="0x0040" name="EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR"/>
+ <enum value="0x0080" name="EGL_LOCK_SURFACE_BIT_KHR"/>
+ <enum value="0x0100" name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
+ <enum value="0x0200" name="EGL_MULTISAMPLE_RESOLVE_BOX_BIT"/>
+ <enum value="0x0400" name="EGL_SWAP_BEHAVIOR_PRESERVED_BIT"/>
+ <enum value="0x0800" name="EGL_STREAM_BIT_KHR"/>
+ <!--
+ <enum value="0x0800" name="EGL_STREAM_BIT_NV" comment="Draft EGL_NV_stream_producer_eglsurface extension (bug 8064)"/>
+ -->
+ <enum value="0x1000" name="EGL_MUTABLE_RENDER_BUFFER_BIT_KHR"/>
+ </enums>
+
+ <enums namespace="EGLRenderableTypeMask" type="bitmask" comment="EGL_RENDERABLE_TYPE bits">
+ <enum value="0x0001" name="EGL_OPENGL_ES_BIT"/>
+ <enum value="0x0002" name="EGL_OPENVG_BIT"/>
+ <enum value="0x0004" name="EGL_OPENGL_ES2_BIT"/>
+ <enum value="0x0008" name="EGL_OPENGL_BIT"/>
+ <enum value="0x0010" name="EGL_INTEROP_BIT_KHR" comment="EGL_KHR_interop"/>
+ <enum value="0x0020" name="EGL_OPENMAX_IL_BIT_KHR" comment="EGL_KHR_interop"/>
+ <enum value="0x00000040" name="EGL_OPENGL_ES3_BIT"/>
+ <enum value="0x00000040" name="EGL_OPENGL_ES3_BIT_KHR" alias="EGL_OPENGL_ES3_BIT"/>
+ </enums>
+
+ <enums namespace="EGLLockUsageHintKHRMask" type="bitmask" comment="EGL_LOCK_USAGE_HINT_KHR bits">
+ <enum value="0x0001" name="EGL_READ_SURFACE_BIT_KHR"/>
+ <enum value="0x0002" name="EGL_WRITE_SURFACE_BIT_KHR"/>
+ </enums>
+
+ <enums namespace="EGLNativeBufferUsageFlags" type="bitmask" comment="EGL_NATIVE_BUFFER_USAGE_ANDROID bits">
+ <enum value="0x00000001" name="EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID"/>
+ <enum value="0x00000002" name="EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID"/>
+ <enum value="0x00000004" name="EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID"/>
+ </enums>
+
+ <enums namespace="EGLSyncFlagsKHR" type="bitmask" comment="Fence/reusable sync wait bits">
+ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
+ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT_KHR" alias="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
+ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT_NV" alias="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
+ </enums>
+
+ <enums namespace="EGLDRMBufferUseMESAMask" type="bitmask" comment="EGL_DRM_BUFFER_USE_MESA bits">
+ <enum value="0x00000001" name="EGL_DRM_BUFFER_USE_SCANOUT_MESA"/>
+ <enum value="0x00000002" name="EGL_DRM_BUFFER_USE_SHARE_MESA"/>
+ <enum value="0x00000004" name="EGL_DRM_BUFFER_USE_CURSOR_MESA"/>
+ </enums>
+
+ <!-- Should be shared with GL, but aren't aren't since the
+ FORWARD_COMPATIBLE and DEBUG_BIT values are swapped in the
+ corresponding GL enums. Oops :-( -->
+ <enums namespace="EGLContextFlagMask" type="bitmask" comment="EGL_CONTEXT_FLAGS_KHR bits">
+ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR"/>
+ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR"/>
+ <enum value="0x00000004" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR"/>
+ </enums>
+
+ <enums namespace="EGLContextProfileMask" type="bitmask" comment="Shared with GL">
+ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
+ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR" alias="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
+ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
+ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR" alias="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
+ </enums>
+
+ <!-- The default ("API") enum namespace starts here. While some
+ assigned values may overlap, and different parts of the
+ namespace are reserved for different purposes, it is a single
+ namespace. The "class" attribute indicates some of the reserved
+ purposes but is by no means complete (and cannot be, since many
+ tokens are reused for different purposes in different
+ extensions and API versions). -->
+
+ <enums namespace="EGL" start="0x0000" end="0x2FFF" vendor="KHR" comment="Reserved for enumerants shared with WGL, GLX, and GL">
+ <enum value="0" name="EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR"/>
+ <enum value="0x2097" name="EGL_CONTEXT_RELEASE_BEHAVIOR_KHR"/>
+ <enum value="0x2098" name="EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR"/>
+ </enums>
+
+ <enums namespace="EGL" group="Boolean" vendor="ARB">
+ <enum value="0" name="EGL_FALSE"/>
+ <enum value="1" name="EGL_TRUE"/>
+ </enums>
+
+ <enums namespace="EGL" group="SpecialNumbers" vendor="ARB" comment="Tokens whose numeric value is intrinsically meaningful">
+ <enum value="EGL_CAST(EGLint,-1)" name="EGL_DONT_CARE"/>
+ <enum value="EGL_CAST(EGLint,-1)" name="EGL_UNKNOWN"/>
+ <enum value="-1" name="EGL_NO_NATIVE_FENCE_FD_ANDROID"/>
+ <enum value="0" name="EGL_DEPTH_ENCODING_NONE_NV"/>
+ <enum value="EGL_CAST(EGLContext,0)" name="EGL_NO_CONTEXT"/>
+ <enum value="EGL_CAST(EGLDeviceEXT,0)" name="EGL_NO_DEVICE_EXT"/>
+ <enum value="EGL_CAST(EGLDisplay,0)" name="EGL_NO_DISPLAY"/>
+ <enum value="EGL_CAST(EGLImage,0)" name="EGL_NO_IMAGE"/>
+ <enum value="EGL_CAST(EGLImageKHR,0)" name="EGL_NO_IMAGE_KHR"/>
+ <enum value="EGL_CAST(EGLNativeDisplayType,0)" name="EGL_DEFAULT_DISPLAY"/>
+ <enum value="EGL_CAST(EGLNativeFileDescriptorKHR,-1)" name="EGL_NO_FILE_DESCRIPTOR_KHR"/>
+ <enum value="EGL_CAST(EGLOutputLayerEXT,0)" name="EGL_NO_OUTPUT_LAYER_EXT"/>
+ <enum value="EGL_CAST(EGLOutputPortEXT,0)" name="EGL_NO_OUTPUT_PORT_EXT"/>
+ <enum value="EGL_CAST(EGLStreamKHR,0)" name="EGL_NO_STREAM_KHR"/>
+ <enum value="EGL_CAST(EGLSurface,0)" name="EGL_NO_SURFACE"/>
+ <enum value="EGL_CAST(EGLSync,0)" name="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLSyncKHR,0)" name="EGL_NO_SYNC_KHR" alias="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLSyncNV,0)" name="EGL_NO_SYNC_NV" alias="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLConfig,0)" name="EGL_NO_CONFIG_KHR"/>
+ <enum value="10000" name="EGL_DISPLAY_SCALING"/>
+ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER" type="ull"/>
+ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER_KHR" type="ull" alias="EGL_FOREVER"/>
+ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER_NV" type="ull" alias="EGL_FOREVER"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3000" end="0x305F" vendor="KHR">
+ <enum value="0x3000" name="EGL_SUCCESS"/>
+ <enum value="0x3001" name="EGL_NOT_INITIALIZED"/>
+ <enum value="0x3002" name="EGL_BAD_ACCESS"/>
+ <enum value="0x3003" name="EGL_BAD_ALLOC"/>
+ <enum value="0x3004" name="EGL_BAD_ATTRIBUTE"/>
+ <enum value="0x3005" name="EGL_BAD_CONFIG"/>
+ <enum value="0x3006" name="EGL_BAD_CONTEXT"/>
+ <enum value="0x3007" name="EGL_BAD_CURRENT_SURFACE"/>
+ <enum value="0x3008" name="EGL_BAD_DISPLAY"/>
+ <enum value="0x3009" name="EGL_BAD_MATCH"/>
+ <enum value="0x300A" name="EGL_BAD_NATIVE_PIXMAP"/>
+ <enum value="0x300B" name="EGL_BAD_NATIVE_WINDOW"/>
+ <enum value="0x300C" name="EGL_BAD_PARAMETER"/>
+ <enum value="0x300D" name="EGL_BAD_SURFACE"/>
+ <enum value="0x300E" name="EGL_CONTEXT_LOST"/>
+ <unused start="0x300F" end="0x301F" comment="for additional errors"/>
+ <enum value="0x3020" name="EGL_BUFFER_SIZE"/>
+ <enum value="0x3021" name="EGL_ALPHA_SIZE"/>
+ <enum value="0x3022" name="EGL_BLUE_SIZE"/>
+ <enum value="0x3023" name="EGL_GREEN_SIZE"/>
+ <enum value="0x3024" name="EGL_RED_SIZE"/>
+ <enum value="0x3025" name="EGL_DEPTH_SIZE"/>
+ <enum value="0x3026" name="EGL_STENCIL_SIZE"/>
+ <enum value="0x3027" name="EGL_CONFIG_CAVEAT"/>
+ <enum value="0x3028" name="EGL_CONFIG_ID"/>
+ <enum value="0x3029" name="EGL_LEVEL"/>
+ <enum value="0x302A" name="EGL_MAX_PBUFFER_HEIGHT"/>
+ <enum value="0x302B" name="EGL_MAX_PBUFFER_PIXELS"/>
+ <enum value="0x302C" name="EGL_MAX_PBUFFER_WIDTH"/>
+ <enum value="0x302D" name="EGL_NATIVE_RENDERABLE"/>
+ <enum value="0x302E" name="EGL_NATIVE_VISUAL_ID"/>
+ <enum value="0x302F" name="EGL_NATIVE_VISUAL_TYPE"/>
+ <enum value="0x3031" name="EGL_SAMPLES"/>
+ <enum value="0x3032" name="EGL_SAMPLE_BUFFERS"/>
+ <enum value="0x3033" name="EGL_SURFACE_TYPE"/>
+ <enum value="0x3034" name="EGL_TRANSPARENT_TYPE"/>
+ <enum value="0x3035" name="EGL_TRANSPARENT_BLUE_VALUE"/>
+ <enum value="0x3036" name="EGL_TRANSPARENT_GREEN_VALUE"/>
+ <enum value="0x3037" name="EGL_TRANSPARENT_RED_VALUE"/>
+ <enum value="0x3038" name="EGL_NONE" comment="Attribute list terminator"/>
+ <enum value="0x3039" name="EGL_BIND_TO_TEXTURE_RGB"/>
+ <enum value="0x303A" name="EGL_BIND_TO_TEXTURE_RGBA"/>
+ <enum value="0x303B" name="EGL_MIN_SWAP_INTERVAL"/>
+ <enum value="0x303C" name="EGL_MAX_SWAP_INTERVAL"/>
+ <enum value="0x303D" name="EGL_LUMINANCE_SIZE"/>
+ <enum value="0x303E" name="EGL_ALPHA_MASK_SIZE"/>
+ <enum value="0x303F" name="EGL_COLOR_BUFFER_TYPE"/>
+ <enum value="0x3040" name="EGL_RENDERABLE_TYPE"/>
+ <enum value="0x3041" name="EGL_MATCH_NATIVE_PIXMAP"/>
+ <enum value="0x3042" name="EGL_CONFORMANT"/>
+ <enum value="0x3042" name="EGL_CONFORMANT_KHR"/>
+ <enum value="0x3043" name="EGL_MATCH_FORMAT_KHR"/>
+ <unused start="0x3044" end="0x304F" comment="for additional config attributes"/>
+ <enum value="0x3050" name="EGL_SLOW_CONFIG"/>
+ <enum value="0x3051" name="EGL_NON_CONFORMANT_CONFIG"/>
+ <enum value="0x3052" name="EGL_TRANSPARENT_RGB"/>
+ <enum value="0x3053" name="EGL_VENDOR"/>
+ <enum value="0x3054" name="EGL_VERSION"/>
+ <enum value="0x3055" name="EGL_EXTENSIONS"/>
+ <enum value="0x3056" name="EGL_HEIGHT"/>
+ <enum value="0x3057" name="EGL_WIDTH"/>
+ <enum value="0x3058" name="EGL_LARGEST_PBUFFER"/>
+ <enum value="0x3059" name="EGL_DRAW"/>
+ <enum value="0x305A" name="EGL_READ"/>
+ <enum value="0x305B" name="EGL_CORE_NATIVE_ENGINE"/>
+ <enum value="0x305C" name="EGL_NO_TEXTURE"/>
+ <enum value="0x305D" name="EGL_TEXTURE_RGB"/>
+ <enum value="0x305E" name="EGL_TEXTURE_RGBA"/>
+ <enum value="0x305F" name="EGL_TEXTURE_2D"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3060-0x306F" vendor="TAO" comment="Reserved for Phil Huxley">
+ <unused start="0x3060" end="0x306F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3070-0x307F" vendor="NOK" comment="Reserved for Jani Vaarala">
+ <unused start="0x3070" end="0x307E"/>
+ <enum value="0x307F" name="EGL_Y_INVERTED_NOK"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3080-0x30AF" vendor="KHR">
+ <enum value="0x3080" name="EGL_TEXTURE_FORMAT"/>
+ <enum value="0x3081" name="EGL_TEXTURE_TARGET"/>
+ <enum value="0x3082" name="EGL_MIPMAP_TEXTURE"/>
+ <enum value="0x3083" name="EGL_MIPMAP_LEVEL"/>
+ <enum value="0x3084" name="EGL_BACK_BUFFER"/>
+ <enum value="0x3085" name="EGL_SINGLE_BUFFER"/>
+ <enum value="0x3086" name="EGL_RENDER_BUFFER"/>
+ <enum value="0x3087" name="EGL_COLORSPACE" alias="EGL_VG_COLORSPACE"/>
+ <enum value="0x3087" name="EGL_VG_COLORSPACE"/>
+ <enum value="0x3088" name="EGL_ALPHA_FORMAT" alias="EGL_VG_ALPHA_FORMAT"/>
+ <enum value="0x3088" name="EGL_VG_ALPHA_FORMAT"/>
+ <enum value="0x3089" name="EGL_COLORSPACE_sRGB"/>
+ <enum value="0x3089" name="EGL_GL_COLORSPACE_SRGB" alias="EGL_COLORSPACE_sRGB"/>
+ <enum value="0x3089" name="EGL_GL_COLORSPACE_SRGB_KHR" alias="EGL_COLORSPACE_sRGB"/>
+ <enum value="0x3089" name="EGL_VG_COLORSPACE_sRGB" alias="EGL_COLORSPACE_sRGB"/>
+ <enum value="0x308A" name="EGL_COLORSPACE_LINEAR"/>
+ <enum value="0x308A" name="EGL_GL_COLORSPACE_LINEAR" alias="EGL_COLORSPACE_LINEAR"/>
+ <enum value="0x308A" name="EGL_GL_COLORSPACE_LINEAR_KHR" alias="EGL_COLORSPACE_LINEAR"/>
+ <enum value="0x308A" name="EGL_VG_COLORSPACE_LINEAR" alias="EGL_COLORSPACE_LINEAR"/>
+ <enum value="0x308B" name="EGL_ALPHA_FORMAT_NONPRE" alias="EGL_VG_ALPHA_FORMAT_NONPRE"/>
+ <enum value="0x308B" name="EGL_VG_ALPHA_FORMAT_NONPRE"/>
+ <enum value="0x308C" name="EGL_ALPHA_FORMAT_PRE" alias="EGL_VG_ALPHA_FORMAT_PRE"/>
+ <enum value="0x308C" name="EGL_VG_ALPHA_FORMAT_PRE"/>
+ <enum value="0x308D" name="EGL_CLIENT_APIS"/>
+ <enum value="0x308E" name="EGL_RGB_BUFFER"/>
+ <enum value="0x308F" name="EGL_LUMINANCE_BUFFER"/>
+ <enum value="0x3090" name="EGL_HORIZONTAL_RESOLUTION"/>
+ <enum value="0x3091" name="EGL_VERTICAL_RESOLUTION"/>
+ <enum value="0x3092" name="EGL_PIXEL_ASPECT_RATIO"/>
+ <enum value="0x3093" name="EGL_SWAP_BEHAVIOR"/>
+ <enum value="0x3094" name="EGL_BUFFER_PRESERVED"/>
+ <enum value="0x3095" name="EGL_BUFFER_DESTROYED"/>
+ <enum value="0x3096" name="EGL_OPENVG_IMAGE"/>
+ <enum value="0x3097" name="EGL_CONTEXT_CLIENT_TYPE"/>
+ <enum value="0x3098" name="EGL_CONTEXT_CLIENT_VERSION"/>
+ <enum value="0x3098" name="EGL_CONTEXT_MAJOR_VERSION" alias="EGL_CONTEXT_CLIENT_VERSION"/>
+ <enum value="0x3098" name="EGL_CONTEXT_MAJOR_VERSION_KHR" alias="EGL_CONTEXT_CLIENT_VERSION"/>
+ <enum value="0x3099" name="EGL_MULTISAMPLE_RESOLVE"/>
+ <enum value="0x309A" name="EGL_MULTISAMPLE_RESOLVE_DEFAULT"/>
+ <enum value="0x309B" name="EGL_MULTISAMPLE_RESOLVE_BOX"/>
+ <enum value="0x309C" name="EGL_CL_EVENT_HANDLE"/>
+ <enum value="0x309C" name="EGL_CL_EVENT_HANDLE_KHR" alias="EGL_CL_EVENT_HANDLE"/>
+ <enum value="0x309D" name="EGL_GL_COLORSPACE"/>
+ <enum value="0x309D" name="EGL_GL_COLORSPACE_KHR" alias="EGL_GL_COLORSPACE"/>
+ <unused start="0x309E" end="0x309F"/>
+ <enum value="0x30A0" name="EGL_OPENGL_ES_API"/>
+ <enum value="0x30A1" name="EGL_OPENVG_API"/>
+ <enum value="0x30A2" name="EGL_OPENGL_API"/>
+ <unused start="0x30A3" end="0x30AF" comment="for additional client API names"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30B0-0x30BF" vendor="NV" comment="Reserved for Ignacio Llamas">
+ <enum value="0x30B0" name="EGL_NATIVE_PIXMAP_KHR"/>
+ <enum value="0x30B1" name="EGL_GL_TEXTURE_2D"/>
+ <enum value="0x30B1" name="EGL_GL_TEXTURE_2D_KHR" alias="EGL_GL_TEXTURE_2D"/>
+ <enum value="0x30B2" name="EGL_GL_TEXTURE_3D"/>
+ <enum value="0x30B2" name="EGL_GL_TEXTURE_3D_KHR" alias="EGL_GL_TEXTURE_3D"/>
+ <enum value="0x30B3" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
+ <enum value="0x30B3" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
+ <enum value="0x30B4" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
+ <enum value="0x30B4" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
+ <enum value="0x30B5" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
+ <enum value="0x30B5" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
+ <enum value="0x30B6" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
+ <enum value="0x30B6" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
+ <enum value="0x30B7" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
+ <enum value="0x30B7" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
+ <enum value="0x30B8" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
+ <enum value="0x30B8" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
+ <enum value="0x30B9" name="EGL_GL_RENDERBUFFER"/>
+ <enum value="0x30B9" name="EGL_GL_RENDERBUFFER_KHR" alias="EGL_GL_RENDERBUFFER"/>
+ <enum value="0x30BA" name="EGL_VG_PARENT_IMAGE_KHR"/>
+ <enum value="0x30BC" name="EGL_GL_TEXTURE_LEVEL"/>
+ <enum value="0x30BC" name="EGL_GL_TEXTURE_LEVEL_KHR" alias="EGL_GL_TEXTURE_LEVEL"/>
+ <enum value="0x30BD" name="EGL_GL_TEXTURE_ZOFFSET"/>
+ <enum value="0x30BD" name="EGL_GL_TEXTURE_ZOFFSET_KHR" alias="EGL_GL_TEXTURE_ZOFFSET"/>
+ <enum value="0x30BE" name="EGL_POST_SUB_BUFFER_SUPPORTED_NV"/>
+ <enum value="0x30BF" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30C0-0x30CF" vendor="KHR">
+ <enum value="0x30C0" name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
+ <enum value="0x30C1" name="EGL_FORMAT_RGB_565_KHR"/>
+ <enum value="0x30C2" name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
+ <enum value="0x30C3" name="EGL_FORMAT_RGBA_8888_KHR"/>
+ <enum value="0x30C4" name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
+ <enum value="0x30C5" name="EGL_LOCK_USAGE_HINT_KHR"/>
+ <enum value="0x30C6" name="EGL_BITMAP_POINTER_KHR"/>
+ <enum value="0x30C7" name="EGL_BITMAP_PITCH_KHR"/>
+ <enum value="0x30C8" name="EGL_BITMAP_ORIGIN_KHR"/>
+ <enum value="0x30C9" name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
+ <enum value="0x30CA" name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
+ <enum value="0x30CB" name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
+ <enum value="0x30CC" name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
+ <enum value="0x30CD" name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
+ <enum value="0x30CE" name="EGL_LOWER_LEFT_KHR"/>
+ <enum value="0x30CF" name="EGL_UPPER_LEFT_KHR"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30D0" end="0x30DF" vendor="Symbian" comment="Reserved for Robert Palmer (bug #2545)">
+ <unused start="0x30D0" end="0x30D1"/>
+ <enum value="0x30D2" name="EGL_IMAGE_PRESERVED"/>
+ <enum value="0x30D2" name="EGL_IMAGE_PRESERVED_KHR"/>
+ <unused start="0x30D3" end="0x30D9"/>
+ <enum value="0x30DA" name="EGL_SHARED_IMAGE_NOK" comment="Unreleased extension"/>
+ <unused start="0x30DB" end="0x30DF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30E0" end="0x30EF" vendor="NV" comment="Reserved for Russell Pflughaupt (bug #3314)">
+ <enum value="0x30E0" name="EGL_COVERAGE_BUFFERS_NV"/>
+ <enum value="0x30E1" name="EGL_COVERAGE_SAMPLES_NV"/>
+ <enum value="0x30E2" name="EGL_DEPTH_ENCODING_NV"/>
+ <enum value="0x30E3" name="EGL_DEPTH_ENCODING_NONLINEAR_NV"/>
+ <unused start="0x30E4" end="0x30E5"/>
+ <enum value="0x30E6" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV"/>
+ <enum value="0x30E7" name="EGL_SYNC_STATUS_NV"/>
+ <enum value="0x30E8" name="EGL_SIGNALED_NV"/>
+ <enum value="0x30E9" name="EGL_UNSIGNALED_NV"/>
+ <enum value="0x30EA" name="EGL_ALREADY_SIGNALED_NV"/>
+ <enum value="0x30EB" name="EGL_TIMEOUT_EXPIRED_NV"/>
+ <enum value="0x30EC" name="EGL_CONDITION_SATISFIED_NV"/>
+ <enum value="0x30ED" name="EGL_SYNC_TYPE_NV"/>
+ <enum value="0x30EE" name="EGL_SYNC_CONDITION_NV"/>
+ <enum value="0x30EF" name="EGL_SYNC_FENCE_NV"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x30F0" end="0x30FF" vendor="KHR">
+ <enum value="0x30F0" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
+ <enum value="0x30F0" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR" alias="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
+ <enum value="0x30F1" name="EGL_SYNC_STATUS"/>
+ <enum value="0x30F1" name="EGL_SYNC_STATUS_KHR" alias="EGL_SYNC_STATUS"/>
+ <enum value="0x30F2" name="EGL_SIGNALED"/>
+ <enum value="0x30F2" name="EGL_SIGNALED_KHR" alias="EGL_SIGNALED"/>
+ <enum value="0x30F3" name="EGL_UNSIGNALED"/>
+ <enum value="0x30F3" name="EGL_UNSIGNALED_KHR" alias="EGL_UNSIGNALED"/>
+ <enum value="0x30F5" name="EGL_TIMEOUT_EXPIRED"/>
+ <enum value="0x30F5" name="EGL_TIMEOUT_EXPIRED_KHR" alias="EGL_TIMEOUT_EXPIRED"/>
+ <enum value="0x30F6" name="EGL_CONDITION_SATISFIED"/>
+ <enum value="0x30F6" name="EGL_CONDITION_SATISFIED_KHR" alias="EGL_CONDITION_SATISFIED"/>
+ <enum value="0x30F7" name="EGL_SYNC_TYPE"/>
+ <enum value="0x30F7" name="EGL_SYNC_TYPE_KHR" alias="EGL_SYNC_TYPE"/>
+ <enum value="0x30F8" name="EGL_SYNC_CONDITION"/>
+ <enum value="0x30F8" name="EGL_SYNC_CONDITION_KHR" alias="EGL_SYNC_CONDITION"/>
+ <enum value="0x30F9" name="EGL_SYNC_FENCE"/>
+ <enum value="0x30F9" name="EGL_SYNC_FENCE_KHR" alias="EGL_SYNC_FENCE"/>
+ <enum value="0x30FA" name="EGL_SYNC_REUSABLE_KHR"/>
+ <enum value="0x30FB" name="EGL_CONTEXT_MINOR_VERSION"/>
+ <enum value="0x30FB" name="EGL_CONTEXT_MINOR_VERSION_KHR" alias="EGL_CONTEXT_MINOR_VERSION"/>
+ <enum value="0x30FC" name="EGL_CONTEXT_FLAGS_KHR"/>
+ <enum value="0x30FD" name="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
+ <enum value="0x30FD" name="EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR" alias="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
+ <enum value="0x30FE" name="EGL_SYNC_CL_EVENT"/>
+ <enum value="0x30FE" name="EGL_SYNC_CL_EVENT_KHR" alias="EGL_SYNC_CL_EVENT"/>
+ <enum value="0x30FF" name="EGL_SYNC_CL_EVENT_COMPLETE"/>
+ <enum value="0x30FF" name="EGL_SYNC_CL_EVENT_COMPLETE_KHR" alias="EGL_SYNC_CL_EVENT_COMPLETE"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3100" end="0x310F" vendor="IMG" comment="Reserved for Ben Bowman (Khronos bug 4748)">
+ <enum value="0x3100" name="EGL_CONTEXT_PRIORITY_LEVEL_IMG"/>
+ <enum value="0x3101" name="EGL_CONTEXT_PRIORITY_HIGH_IMG"/>
+ <enum value="0x3102" name="EGL_CONTEXT_PRIORITY_MEDIUM_IMG"/>
+ <enum value="0x3103" name="EGL_CONTEXT_PRIORITY_LOW_IMG"/>
+ <unused start="0x3104"/>
+ <enum value="0x3105" name="EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG"/>
+ <enum value="0x3106" name="EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG"/>
+ <unused start="0x3107" end="0x310F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3110" end="0x311F" vendor="ATX" comment="Reserved for Tim Renouf, Antix (Khronos bug 4949)">
+ <enum value="0x3110" name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
+ <unused start="0x3111" end="0x311F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3120" end="0x312F" vendor="QCOM" comment="EGL_QCOM_create_image">
+ <enum value="0x3120" name="EGL_NEW_IMAGE_QCOM"/>
+ <enum value="0x3121" name="EGL_IMAGE_FORMAT_QCOM"/>
+ <enum value="0x3122" name="EGL_FORMAT_RGBA_8888_QCOM"/>
+ <enum value="0x3123" name="EGL_FORMAT_RGB_565_QCOM"/>
+ <enum value="0x3124" name="EGL_FORMAT_YUYV_QCOM"/>
+ <enum value="0x3125" name="EGL_FORMAT_UYVY_QCOM"/>
+ <enum value="0x3126" name="EGL_FORMAT_YV12_QCOM"/>
+ <enum value="0x3127" name="EGL_FORMAT_NV21_QCOM"/>
+ <enum value="0x3128" name="EGL_FORMAT_NV12_TILED_QCOM"/>
+ <enum value="0x3129" name="EGL_FORMAT_BGRA_8888_QCOM"/>
+ <enum value="0x312A" name="EGL_FORMAT_BGRX_8888_QCOM"/>
+ <unused start="0x312B" end="0x312E"/>
+ <enum value="0x312F" name="EGL_FORMAT_RGBX_8888_QCOM"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3130" end="0x313F" vendor="NV" comment="Reserved for Greg Prisament (Khronos bug 5166)">
+ <unused start="0x3130"/>
+ <enum value="0x3131" name="EGL_COVERAGE_SAMPLE_RESOLVE_NV"/>
+ <enum value="0x3132" name="EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV"/>
+ <enum value="0x3133" name="EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV"/>
+ <enum value="0x3134" name="EGL_MULTIVIEW_VIEW_COUNT_EXT"/>
+ <unused start="0x3135"/>
+ <enum value="0x3136" name="EGL_AUTO_STEREO_NV"/>
+ <unused start="0x3137"/>
+ <enum value="0x3138" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT"/>
+ <unused start="0x3139" end="0x313C"/>
+ <enum value="0x313D" name="EGL_BUFFER_AGE_KHR"/>
+ <enum value="0x313D" name="EGL_BUFFER_AGE_EXT" alias="EGL_BUFFER_AGE_KHR"/>
+ <unused start="0x313E" end="0x313F"/>
+ <enum value="0x313F" name="EGL_PLATFORM_DEVICE_EXT"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3140" end="0x314F" vendor="Google" comment="Reserved for Mathias Agopian (Khronos bug 5199)">
+ <enum value="0x3140" name="EGL_NATIVE_BUFFER_ANDROID"/>
+ <enum value="0x3141" name="EGL_PLATFORM_ANDROID_KHR"/>
+ <enum value="0x3142" name="EGL_RECORDABLE_ANDROID"/>
+ <enum value="0x3143" name="EGL_NATIVE_BUFFER_USAGE_ANDROID"/>
+ <enum value="0x3144" name="EGL_SYNC_NATIVE_FENCE_ANDROID"/>
+ <enum value="0x3145" name="EGL_SYNC_NATIVE_FENCE_FD_ANDROID"/>
+ <enum value="0x3146" name="EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID"/>
+ <enum value="0x3147" name="EGL_FRAMEBUFFER_TARGET_ANDROID"/>
+ <unused start="0x3148" end="0x314B"/>
+ <enum value="0x314C" name="EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID"/>
+ <enum value="0x314D" name="EGL_GL_COLORSPACE_DEFAULT_EXT"/>
+ <unused start="0x314E" end="0x314F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3150" end="0x315F" vendor="NOK" comment="Reserved for Robert Palmer (Khronos bug 5368)">
+ <unused start="0x3150" end="0x315F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3160" end="0x316F" vendor="Seaweed" comment="Reserved for Sree Sridharan (Khronos public bug 198)">
+ <unused start="0x3160" end="0x316F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3170" end="0x318F" vendor="QNX" comment="Reserved for Joel Pilon (Khronos bug 5834)">
+ <unused start="0x3170" end="0x318F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3190" end="0x31AF" vendor="FSL" comment="Reserved for Brian Murray, Freescale (Khronos bug 5939)">
+ <unused start="0x3190" end="0x31AF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31B0" end="0x31BF" vendor="KHR" comment="Reserved for Marcus Lorentzon (Khronos bug 6437)">
+ <enum value="0x31B0" name="EGL_CONTEXT_OPENGL_DEBUG"/>
+ <enum value="0x31B1" name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE"/>
+ <enum value="0x31B2" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
+ <enum value="0x31B3" name="EGL_CONTEXT_OPENGL_NO_ERROR_KHR"/>
+ <unused start="0x31B4" end="0x31BC" comment="0x31B3-0x31BC formerly reserved for EGL_image_stream"/>
+ <enum value="0x31BD" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR" alias="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
+ <enum value="0x31BD" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
+ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION"/>
+ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION_KHR" alias="EGL_NO_RESET_NOTIFICATION"/>
+ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION_EXT" alias="EGL_NO_RESET_NOTIFICATION"/>
+ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET"/>
+ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET_KHR" alias="EGL_LOSE_CONTEXT_ON_RESET"/>
+ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET_EXT" alias="EGL_LOSE_CONTEXT_ON_RESET"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31C0" end="0x31CF" vendor="QCOM" comment="Reserved for Maurice Ribble (Khronos bug 6644) - EGL_QCOM_create_image spec">
+ <enum value="0x31C0" name="EGL_FORMAT_R8_QCOM"/>
+ <enum value="0x31C1" name="EGL_FORMAT_RG88_QCOM"/>
+ <enum value="0x31C2" name="EGL_FORMAT_NV12_QCOM"/>
+ <enum value="0x31C3" name="EGL_FORMAT_SRGBX_8888_QCOM"/>
+ <enum value="0x31C4" name="EGL_FORMAT_SRGBA_8888_QCOM"/>
+ <enum value="0x31C5" name="EGL_FORMAT_YVYU_QCOM"/>
+ <enum value="0x31C6" name="EGL_FORMAT_VYUY_QCOM"/>
+ <enum value="0x31C7" name="EGL_FORMAT_IYUV_QCOM"/>
+ <enum value="0x31C8" name="EGL_FORMAT_RGB_888_QCOM"/>
+ <enum value="0x31C9" name="EGL_FORMAT_RGBA_5551_QCOM"/>
+ <enum value="0x31CA" name="EGL_FORMAT_RGBA_4444_QCOM"/>
+ <enum value="0x31CB" name="EGL_FORMAT_R_16_FLOAT_QCOM"/>
+ <enum value="0x31CC" name="EGL_FORMAT_RG_1616_FLOAT_QCOM"/>
+ <enum value="0x31CD" name="EGL_FORMAT_RGBA_16_FLOAT_QCOM"/>
+ <enum value="0x31CE" name="EGL_FORMAT_RGBA_1010102_QCOM"/>
+ <enum value="0x31CF" name="EGL_FORMAT_FLAG_QCOM"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31D0" end="0x31DF" vendor="MESA" comment="Reserved for Kristian H&#248;gsberg (Khronos bug 6757)">
+ <enum value="0x31D0" name="EGL_DRM_BUFFER_FORMAT_MESA"/>
+ <enum value="0x31D1" name="EGL_DRM_BUFFER_USE_MESA"/>
+ <enum value="0x31D2" name="EGL_DRM_BUFFER_FORMAT_ARGB32_MESA"/>
+ <enum value="0x31D3" name="EGL_DRM_BUFFER_MESA"/>
+ <enum value="0x31D4" name="EGL_DRM_BUFFER_STRIDE_MESA"/>
+ <enum value="0x31D5" name="EGL_PLATFORM_X11_KHR"/>
+ <enum value="0x31D5" name="EGL_PLATFORM_X11_EXT" alias="EGL_PLATFORM_X11_KHR"/>
+ <enum value="0x31D6" name="EGL_PLATFORM_X11_SCREEN_KHR"/>
+ <enum value="0x31D6" name="EGL_PLATFORM_X11_SCREEN_EXT" alias="EGL_PLATFORM_X11_SCREEN_KHR"/>
+ <enum value="0x31D7" name="EGL_PLATFORM_GBM_KHR"/>
+ <enum value="0x31D7" name="EGL_PLATFORM_GBM_MESA" alias="EGL_PLATFORM_GBM_KHR"/>
+ <enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_KHR"/>
+ <enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_EXT" alias="EGL_PLATFORM_WAYLAND_KHR"/>
+ <enum value="0x31DC" name="EGL_PLATFORM_XCB_EXT"/>
+ <enum value="0x31DD" name="EGL_PLATFORM_SURFACELESS_MESA"/>
+ <enum value="0x31DE" name="EGL_PLATFORM_XCB_SCREEN_EXT"/>
+ <enum value="0x31DF" name="EGL_PRESENT_OPAQUE_EXT"/>
+ </enums>
+
+ <!-- Due to an oversight in development, these enums alias the above MESA
+ vendor range for EGL the X11/GBM/Wayland/surfaceless platforms.
+ They are both currently in wide use and cannot be changed, however
+ the tokens cannot be used in the same contexts and the aliasing is
+ therefore harmless. Future Wayland tokens should not create further
+ aliasing in this range.-->
+ <enums namespace="EGL" start="0x31D5" end="0x31DB" vendor="WL" comment="EGL_WL_bind_wayland_display">
+ <enum value="0x31D5" name="EGL_WAYLAND_BUFFER_WL"/>
+ <enum value="0x31D6" name="EGL_WAYLAND_PLANE_WL"/>
+ <enum value="0x31D7" name="EGL_TEXTURE_Y_U_V_WL"/>
+ <enum value="0x31D8" name="EGL_TEXTURE_Y_UV_WL"/>
+ <enum value="0x31D9" name="EGL_TEXTURE_Y_XUXV_WL"/>
+ <enum value="0x31DA" name="EGL_TEXTURE_EXTERNAL_WL"/>
+ <enum value="0x31DB" name="EGL_WAYLAND_Y_INVERTED_WL"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31E0" end="0x31EF" vendor="HI" comment="Reserved for Mark Callow (Khronos bug 6799)">
+ <unused start="0x31E0" end="0x31EF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x31F0" end="0x31FF" vendor="KHR">
+ <unused start="0x31F0" end="0x31FB" comment="Placeholders for draft extensions follow"/>
+ <!--
+ <enum value="0x31F0" name="EGL_IMAGE_USE_AS_OPENGL_ES1_RENDERBUFFER_KHR" comment="Draft KHR_image_use_gl1_renderbuffer"/>
+ <enum value="0x31F1" name="EGL_IMAGE_USE_AS_OPENGL_ES1_TEXTURE_2D_KHR" comment="Draft KHR_image_use_gl1_texture_2d"/>
+ <enum value="0x31F2" name="EGL_IMAGE_USE_AS_OPENGL_ES1_TEXTURE_EXTERNAL_KHR" comment="Draft KHR_image_use_gl1_texture_external"/>
+ <enum value="0x31F3" name="EGL_IMAGE_USE_AS_OPENGL_ES2_RENDERBUFFER_KHR" comment="Draft KHR_image_use_gl2_renderbuffer"/>
+ <enum value="0x31F4" name="EGL_IMAGE_USE_AS_OPENGL_ES2_TEXTURE_2D_KHR" comment="Draft KHR_image_use_gl2_texture_2d"/>
+ <enum value="0x31F5" name="EGL_IMAGE_USE_AS_OPENGL_ES2_TEXTURE_EXTERNAL_KHR" comment="Draft KHR_image_use_gl2_texture_external"/>
+ <enum value="0x31F6" name="EGL_IMAGE_USE_AS_OPENVG_IMAGE_KHR" comment="Draft KHR_image_use_vg_vgimage"/>
+ <enum value="0x31F7" name="EGL_STREAM_CONSUMER_ATTACHMENT_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ <enum value="0x31F8" name="EGL_NO_FORMAT_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ <enum value="0x31F9" name="EGL_FORMAT_RGBA8888_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ <enum value="0x31FA" name="EGL_FORMAT_RGB888_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ <enum value="0x31FB" name="EGL_FORMAT_RGB565_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
+ -->
+ <enum value="0x31FC" name="EGL_STREAM_FIFO_LENGTH_KHR"/>
+ <enum value="0x31FD" name="EGL_STREAM_TIME_NOW_KHR"/>
+ <enum value="0x31FE" name="EGL_STREAM_TIME_CONSUMER_KHR"/>
+ <enum value="0x31FF" name="EGL_STREAM_TIME_PRODUCER_KHR"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3200" end="0x320F" vendor="ANGLE" comment="Reserved for Daniel Koch, ANGLE Project (Khronos bug 7139)">
+ <enum value="0x3200" name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
+ <enum value="0x3201" name="EGL_FIXED_SIZE_ANGLE"/>
+ <unused start="0x3202" end="0x320F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3210" end="0x321F" vendor="KHR">
+ <enum value="0x3210" name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
+ <unused start="0x3211"/>
+ <enum value="0x3212" name="EGL_PRODUCER_FRAME_KHR"/>
+ <enum value="0x3213" name="EGL_CONSUMER_FRAME_KHR"/>
+ <enum value="0x3214" name="EGL_STREAM_STATE_KHR"/>
+ <enum value="0x3215" name="EGL_STREAM_STATE_CREATED_KHR"/>
+ <enum value="0x3216" name="EGL_STREAM_STATE_CONNECTING_KHR"/>
+ <enum value="0x3217" name="EGL_STREAM_STATE_EMPTY_KHR"/>
+ <enum value="0x3218" name="EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR"/>
+ <enum value="0x3219" name="EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR"/>
+ <enum value="0x321A" name="EGL_STREAM_STATE_DISCONNECTED_KHR"/>
+ <enum value="0x321B" name="EGL_BAD_STREAM_KHR"/>
+ <enum value="0x321C" name="EGL_BAD_STATE_KHR"/>
+ <enum value="0x321D" name="EGL_BUFFER_COUNT_NV" comment="From EGL_NV_stream_producer_eglsurface, which has no known specification and was replaced by a KHR extension"/>
+ <enum value="0x321E" name="EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR"/>
+ <enum value="0x321F" name="EGL_SYNC_NEW_FRAME_NV"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3220" end="0x325F" vendor="NV" comment="Reserved for Greg Roth (Bug 8220)">
+ <unused start="0x3220" end="0x322A"/>
+ <enum value="0x322B" name="EGL_BAD_DEVICE_EXT"/>
+ <enum value="0x322C" name="EGL_DEVICE_EXT"/>
+ <enum value="0x322D" name="EGL_BAD_OUTPUT_LAYER_EXT"/>
+ <enum value="0x322E" name="EGL_BAD_OUTPUT_PORT_EXT"/>
+ <enum value="0x322F" name="EGL_SWAP_INTERVAL_EXT"/>
+ <enum value="0x3230" name="EGL_TRIPLE_BUFFER_NV"/>
+ <enum value="0x3231" name="EGL_QUADRUPLE_BUFFER_NV"/>
+ <unused start="0x3232"/>
+ <enum value="0x3233" name="EGL_DRM_DEVICE_FILE_EXT"/>
+ <enum value="0x3234" name="EGL_DRM_CRTC_EXT"/>
+ <enum value="0x3235" name="EGL_DRM_PLANE_EXT"/>
+ <enum value="0x3236" name="EGL_DRM_CONNECTOR_EXT"/>
+ <enum value="0x3237" name="EGL_OPENWF_DEVICE_ID_EXT"/>
+ <enum value="0x3238" name="EGL_OPENWF_PIPELINE_ID_EXT"/>
+ <enum value="0x3239" name="EGL_OPENWF_PORT_ID_EXT"/>
+ <enum value="0x323A" name="EGL_CUDA_DEVICE_NV"/>
+ <enum value="0x323B" name="EGL_CUDA_EVENT_HANDLE_NV"/>
+ <enum value="0x323C" name="EGL_SYNC_CUDA_EVENT_NV"/>
+ <enum value="0x323D" name="EGL_SYNC_CUDA_EVENT_COMPLETE_NV"/>
+ <unused start="0x323E"/>
+ <enum value="0x323F" name="EGL_STREAM_CROSS_PARTITION_NV"/>
+ <enum value="0x3240" name="EGL_STREAM_STATE_INITIALIZING_NV"/>
+ <enum value="0x3241" name="EGL_STREAM_TYPE_NV"/>
+ <enum value="0x3242" name="EGL_STREAM_PROTOCOL_NV"/>
+ <enum value="0x3243" name="EGL_STREAM_ENDPOINT_NV"/>
+ <enum value="0x3244" name="EGL_STREAM_LOCAL_NV"/>
+ <enum value="0x3245" name="EGL_STREAM_CROSS_PROCESS_NV"/>
+ <enum value="0x3246" name="EGL_STREAM_PROTOCOL_FD_NV"/>
+ <enum value="0x3247" name="EGL_STREAM_PRODUCER_NV"/>
+ <enum value="0x3248" name="EGL_STREAM_CONSUMER_NV"/>
+ <unused start="0x3239" end="0x324A"/>
+ <enum value="0x324B" name="EGL_STREAM_PROTOCOL_SOCKET_NV"/>
+ <enum value="0x324C" name="EGL_SOCKET_HANDLE_NV"/>
+ <enum value="0x324D" name="EGL_SOCKET_TYPE_NV"/>
+ <enum value="0x324E" name="EGL_SOCKET_TYPE_UNIX_NV"/>
+ <enum value="0x324F" name="EGL_SOCKET_TYPE_INET_NV"/>
+ <enum value="0x3250" name="EGL_MAX_STREAM_METADATA_BLOCKS_NV"/>
+ <enum value="0x3251" name="EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV"/>
+ <enum value="0x3252" name="EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV"/>
+ <enum value="0x3253" name="EGL_PRODUCER_METADATA_NV"/>
+ <enum value="0x3254" name="EGL_CONSUMER_METADATA_NV"/>
+ <enum value="0x3255" name="EGL_METADATA0_SIZE_NV"/>
+ <enum value="0x3256" name="EGL_METADATA1_SIZE_NV"/>
+ <enum value="0x3257" name="EGL_METADATA2_SIZE_NV"/>
+ <enum value="0x3258" name="EGL_METADATA3_SIZE_NV"/>
+ <enum value="0x3259" name="EGL_METADATA0_TYPE_NV"/>
+ <enum value="0x325A" name="EGL_METADATA1_TYPE_NV"/>
+ <enum value="0x325B" name="EGL_METADATA2_TYPE_NV"/>
+ <enum value="0x325C" name="EGL_METADATA3_TYPE_NV"/>
+ <unused start="0x325D" end="0x325F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3260" end="0x326F" vendor="BCOM" comment="Reserved for Gary Sweet, Broadcom (Public bug 620)">
+ <unused start="0x3260" end="0x326F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3270" end="0x328F" vendor="ARM" comment="Reserved for Tom Cooksey (Bug 9963)">
+ <enum value="0x3270" name="EGL_LINUX_DMA_BUF_EXT"/>
+ <enum value="0x3271" name="EGL_LINUX_DRM_FOURCC_EXT"/>
+ <enum value="0x3272" name="EGL_DMA_BUF_PLANE0_FD_EXT"/>
+ <enum value="0x3273" name="EGL_DMA_BUF_PLANE0_OFFSET_EXT"/>
+ <enum value="0x3274" name="EGL_DMA_BUF_PLANE0_PITCH_EXT"/>
+ <enum value="0x3275" name="EGL_DMA_BUF_PLANE1_FD_EXT"/>
+ <enum value="0x3276" name="EGL_DMA_BUF_PLANE1_OFFSET_EXT"/>
+ <enum value="0x3277" name="EGL_DMA_BUF_PLANE1_PITCH_EXT"/>
+ <enum value="0x3278" name="EGL_DMA_BUF_PLANE2_FD_EXT"/>
+ <enum value="0x3279" name="EGL_DMA_BUF_PLANE2_OFFSET_EXT"/>
+ <enum value="0x327A" name="EGL_DMA_BUF_PLANE2_PITCH_EXT"/>
+ <enum value="0x327B" name="EGL_YUV_COLOR_SPACE_HINT_EXT"/>
+ <enum value="0x327C" name="EGL_SAMPLE_RANGE_HINT_EXT"/>
+ <enum value="0x327D" name="EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT"/>
+ <enum value="0x327E" name="EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT"/>
+ <enum value="0x327F" name="EGL_ITU_REC601_EXT"/>
+ <enum value="0x3280" name="EGL_ITU_REC709_EXT"/>
+ <enum value="0x3281" name="EGL_ITU_REC2020_EXT"/>
+ <enum value="0x3282" name="EGL_YUV_FULL_RANGE_EXT"/>
+ <enum value="0x3283" name="EGL_YUV_NARROW_RANGE_EXT"/>
+ <enum value="0x3284" name="EGL_YUV_CHROMA_SITING_0_EXT"/>
+ <enum value="0x3285" name="EGL_YUV_CHROMA_SITING_0_5_EXT"/>
+ <enum value="0x3286" name="EGL_DISCARD_SAMPLES_ARM"/>
+ <enum value="0x3287" name="EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM"/>
+ <enum value="0x3288" name="EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM"/>
+ <unused start="0x3289" end="0x3289"/>
+ <enum value="0x328A" name="EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM"/>
+ <unused start="0x328B" end="0x328D"/>
+ <enum value="0x328E" name="EGL_SURFACE_COMPRESSION_PLANE1_EXT"/>
+ <enum value="0x328F" name="EGL_SURFACE_COMPRESSION_PLANE2_EXT"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3290" end="0x329F" vendor="MESA" comment="Reserved for John K&#229;re Alsaker (Public bug 757)">
+ <unused start="0x3290" end="0x329F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32A0" end="0x32AF" vendor="Samsung" comment="Reserved for Dongyeon Kim (Public bug 880)">
+ <enum value="0x32A0" name="EGL_NATIVE_BUFFER_TIZEN"/>
+ <enum value="0x32A1" name="EGL_NATIVE_SURFACE_TIZEN"/>
+ <unused start="0x32A2" end="0x32AF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32B0" end="0x32BF" vendor="QCOM" comment="Reserved for Jeff Vigil (Bug 10663) - EGL_QCOM_lock_image2 spec">
+ <enum value="0x32B0" name="EGL_IMAGE_NUM_PLANES_QCOM"/>
+ <enum value="0x32B1" name="EGL_IMAGE_PLANE_PITCH_0_QCOM"/>
+ <enum value="0x32B2" name="EGL_IMAGE_PLANE_PITCH_1_QCOM"/>
+ <enum value="0x32B3" name="EGL_IMAGE_PLANE_PITCH_2_QCOM"/>
+ <enum value="0x32B4" name="EGL_IMAGE_PLANE_DEPTH_0_QCOM"/>
+ <enum value="0x32B5" name="EGL_IMAGE_PLANE_DEPTH_1_QCOM"/>
+ <enum value="0x32B6" name="EGL_IMAGE_PLANE_DEPTH_2_QCOM"/>
+ <enum value="0x32B7" name="EGL_IMAGE_PLANE_WIDTH_0_QCOM"/>
+ <enum value="0x32B8" name="EGL_IMAGE_PLANE_WIDTH_1_QCOM"/>
+ <enum value="0x32B9" name="EGL_IMAGE_PLANE_WIDTH_2_QCOM"/>
+ <enum value="0x32BA" name="EGL_IMAGE_PLANE_HEIGHT_0_QCOM"/>
+ <enum value="0x32BB" name="EGL_IMAGE_PLANE_HEIGHT_1_QCOM"/>
+ <enum value="0x32BC" name="EGL_IMAGE_PLANE_HEIGHT_2_QCOM"/>
+ <enum value="0x32BD" name="EGL_IMAGE_PLANE_POINTER_0_QCOM"/>
+ <enum value="0x32BE" name="EGL_IMAGE_PLANE_POINTER_1_QCOM"/>
+ <enum value="0x32BF" name="EGL_IMAGE_PLANE_POINTER_2_QCOM"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32C0" end="0x32CF" vendor="Vivante" comment="Reserved for Yanjun Zhang (Bug 11498)">
+ <enum value="0x32C0" name="EGL_PROTECTED_CONTENT_EXT"/>
+ <unused start="0x32C1" end="0x32CF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32D0" end="0x32EF" vendor="QCOM" comment="Reserved for Jeff Vigil (Bug 11735) - EGL_QCOM_gpu_perf spec">
+ <enum value="0x32D0" name="EGL_GPU_PERF_HINT_QCOM"/>
+ <enum value="0x32D1" name="EGL_HINT_PERSISTENT_QCOM"/>
+ <unused start="0x32D2" end="0x32EF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x32F0" end="0x32FF" vendor="BCOM" comment="Reserved for Gary Sweet, Broadcom (Bug 12870)">
+ <unused start="0x32F0" end="0x32FF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3300" end="0x331F" vendor="QCOM" comment="Reserved for Jeff Vigil (Bugs 12973,12849) - EGL_EXT_yuv_surface spec TBD">
+ <enum value="0x3300" name="EGL_YUV_BUFFER_EXT"/>
+ <enum value="0x3301" name="EGL_YUV_ORDER_EXT"/>
+ <enum value="0x3302" name="EGL_YUV_ORDER_YUV_EXT"/>
+ <enum value="0x3303" name="EGL_YUV_ORDER_YVU_EXT"/>
+ <enum value="0x3304" name="EGL_YUV_ORDER_YUYV_EXT"/>
+ <enum value="0x3305" name="EGL_YUV_ORDER_UYVY_EXT"/>
+ <enum value="0x3306" name="EGL_YUV_ORDER_YVYU_EXT"/>
+ <enum value="0x3307" name="EGL_YUV_ORDER_VYUY_EXT"/>
+ <enum value="0x3308" name="EGL_YUV_ORDER_AYUV_EXT"/>
+ <unused start="0x3309"/>
+ <enum value="0x330A" name="EGL_YUV_CSC_STANDARD_EXT"/>
+ <enum value="0x330B" name="EGL_YUV_CSC_STANDARD_601_EXT"/>
+ <enum value="0x330C" name="EGL_YUV_CSC_STANDARD_709_EXT"/>
+ <enum value="0x330D" name="EGL_YUV_CSC_STANDARD_2020_EXT"/>
+ <unused start="0x330E" end="0x3310"/>
+ <enum value="0x3311" name="EGL_YUV_NUMBER_OF_PLANES_EXT"/>
+ <enum value="0x3312" name="EGL_YUV_SUBSAMPLE_EXT"/>
+ <enum value="0x3313" name="EGL_YUV_SUBSAMPLE_4_2_0_EXT"/>
+ <enum value="0x3314" name="EGL_YUV_SUBSAMPLE_4_2_2_EXT"/>
+ <enum value="0x3315" name="EGL_YUV_SUBSAMPLE_4_4_4_EXT"/>
+ <unused start="0x3316"/>
+ <enum value="0x3317" name="EGL_YUV_DEPTH_RANGE_EXT"/>
+ <enum value="0x3318" name="EGL_YUV_DEPTH_RANGE_LIMITED_EXT"/>
+ <enum value="0x3319" name="EGL_YUV_DEPTH_RANGE_FULL_EXT"/>
+ <enum value="0x331A" name="EGL_YUV_PLANE_BPP_EXT"/>
+ <enum value="0x331B" name="EGL_YUV_PLANE_BPP_0_EXT"/>
+ <enum value="0x331C" name="EGL_YUV_PLANE_BPP_8_EXT"/>
+ <enum value="0x331D" name="EGL_YUV_PLANE_BPP_10_EXT"/>
+ <unused start="0x331E" end="0x331F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3320" end="0x339F" vendor="NV" comment="Reserved for James Jones (Bug 13209)">
+ <unused start="0x3320" end="0x3327"/>
+ <enum value="0x3328" name="EGL_PENDING_METADATA_NV"/>
+ <enum value="0x3329" name="EGL_PENDING_FRAME_NV"/>
+ <enum value="0x332A" name="EGL_STREAM_TIME_PENDING_NV"/>
+ <unused start="0x332B"/>
+ <enum value="0x332C" name="EGL_YUV_PLANE0_TEXTURE_UNIT_NV"/>
+ <enum value="0x332D" name="EGL_YUV_PLANE1_TEXTURE_UNIT_NV"/>
+ <enum value="0x332E" name="EGL_YUV_PLANE2_TEXTURE_UNIT_NV"/>
+ <unused start="0x332F" end="0x3333"/>
+ <enum value="0x3334" name="EGL_SUPPORT_RESET_NV"/>
+ <enum value="0x3335" name="EGL_SUPPORT_REUSE_NV"/>
+ <enum value="0x3336" name="EGL_STREAM_FIFO_SYNCHRONOUS_NV"/>
+ <enum value="0x3337" name="EGL_PRODUCER_MAX_FRAME_HINT_NV"/>
+ <enum value="0x3338" name="EGL_CONSUMER_MAX_FRAME_HINT_NV"/>
+ <enum value="0x3339" name="EGL_COLOR_COMPONENT_TYPE_EXT"/>
+ <enum value="0x333A" name="EGL_COLOR_COMPONENT_TYPE_FIXED_EXT"/>
+ <enum value="0x333B" name="EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT"/>
+ <enum value="0x333C" name="EGL_DRM_MASTER_FD_EXT"/>
+ <enum value="0x333D" name="EGL_OPENWF_DEVICE_EXT"/>
+ <unused start="0x333E"/>
+ <enum value="0x333F" name="EGL_GL_COLORSPACE_BT2020_LINEAR_EXT"/>
+ <enum value="0x3340" name="EGL_GL_COLORSPACE_BT2020_PQ_EXT"/>
+ <enum value="0x3341" name="EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT"/>
+ <enum value="0x3342" name="EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT"/>
+ <enum value="0x3343" name="EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT"/>
+ <enum value="0x3344" name="EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT"/>
+ <enum value="0x3345" name="EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT"/>
+ <enum value="0x3346" name="EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT"/>
+ <enum value="0x3347" name="EGL_SMPTE2086_WHITE_POINT_X_EXT"/>
+ <enum value="0x3348" name="EGL_SMPTE2086_WHITE_POINT_Y_EXT"/>
+ <enum value="0x3349" name="EGL_SMPTE2086_MAX_LUMINANCE_EXT"/>
+ <enum value="0x334A" name="EGL_SMPTE2086_MIN_LUMINANCE_EXT"/>
+ <enum value="50000" name="EGL_METADATA_SCALING_EXT"/>
+ <unused start="0x334B"/>
+ <enum value="0x334C" name="EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV"/>
+ <enum value="0x334D" name="EGL_STREAM_CROSS_OBJECT_NV"/>
+ <enum value="0x334E" name="EGL_STREAM_CROSS_DISPLAY_NV"/>
+ <enum value="0x334F" name="EGL_STREAM_CROSS_SYSTEM_NV"/>
+ <enum value="0x3350" name="EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT"/>
+ <enum value="0x3351" name="EGL_GL_COLORSPACE_SCRGB_EXT"/>
+ <enum value="0x3352" name="EGL_TRACK_REFERENCES_KHR"/>
+ <unused start="0x3353" end="0x3356"/>
+ <enum value="0x3357" name="EGL_CONTEXT_PRIORITY_REALTIME_NV"/>
+ <unused start="0x3358" end="0x335B"/>
+ <enum value="0x335C" name="EGL_DEVICE_UUID_EXT"/>
+ <enum value="0x335D" name="EGL_DRIVER_UUID_EXT"/>
+ <enum value="0x335E" name="EGL_DRIVER_NAME_EXT"/>
+ <enum value="0x335F" name="EGL_RENDERER_EXT"/>
+ <enum value="0x3360" name="EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT"/>
+ <enum value="0x3361" name="EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT"/>
+ <enum value="0x3362" name="EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT"/>
+ <enum value="0x3363" name="EGL_GL_COLORSPACE_DISPLAY_P3_EXT"/>
+ <enum value="0x3364" name="EGL_SYNC_CLIENT_EXT"/>
+ <enum value="0x3365" name="EGL_SYNC_CLIENT_SIGNAL_EXT"/>
+ <enum value="0x3366" name="EGL_STREAM_FRAME_ORIGIN_X_NV"/>
+ <enum value="0x3367" name="EGL_STREAM_FRAME_ORIGIN_Y_NV"/>
+ <enum value="0x3368" name="EGL_STREAM_FRAME_MAJOR_AXIS_NV"/>
+ <enum value="0x3369" name="EGL_CONSUMER_AUTO_ORIENTATION_NV"/>
+ <enum value="0x336A" name="EGL_PRODUCER_AUTO_ORIENTATION_NV"/>
+ <enum value="0x336B" name="EGL_LEFT_NV"/>
+ <enum value="0x336C" name="EGL_RIGHT_NV"/>
+ <enum value="0x336D" name="EGL_TOP_NV"/>
+ <enum value="0x336E" name="EGL_BOTTOM_NV"/>
+ <enum value="0x336F" name="EGL_X_AXIS_NV"/>
+ <enum value="0x3370" name="EGL_Y_AXIS_NV"/>
+ <enum value="0x3371" name="EGL_STREAM_DMA_NV"/>
+ <enum value="0x3372" name="EGL_STREAM_DMA_SERVER_NV"/>
+ <enum value="0x3373" name="EGL_STREAM_CONSUMER_IMAGE_NV"/>
+ <enum value="0x3374" name="EGL_STREAM_IMAGE_ADD_NV"/>
+ <enum value="0x3375" name="EGL_STREAM_IMAGE_REMOVE_NV"/>
+ <enum value="0x3376" name="EGL_STREAM_IMAGE_AVAILABLE_NV"/>
+ <enum value="0x3377" name="EGL_DRM_RENDER_NODE_FILE_EXT"/>
+ <unused start="0x3378" end="0x339F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x33A0" end="0x33AF" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 13175)">
+ <enum value="0x33A0" name="EGL_D3D9_DEVICE_ANGLE"/>
+ <enum value="0x33A1" name="EGL_D3D11_DEVICE_ANGLE"/>
+ <unused start="0x33A2" end="0x33AF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x33B0" end="0x33BF" vendor="KHR" comment="Reserved for EGL_KHR_debug / Jeff Vigil (Bug 13357)">
+ <enum value="0x33B0" name="EGL_OBJECT_THREAD_KHR"/>
+ <enum value="0x33B1" name="EGL_OBJECT_DISPLAY_KHR"/>
+ <enum value="0x33B2" name="EGL_OBJECT_CONTEXT_KHR"/>
+ <enum value="0x33B3" name="EGL_OBJECT_SURFACE_KHR"/>
+ <enum value="0x33B4" name="EGL_OBJECT_IMAGE_KHR"/>
+ <enum value="0x33B5" name="EGL_OBJECT_SYNC_KHR"/>
+ <enum value="0x33B6" name="EGL_OBJECT_STREAM_KHR"/>
+ <unused start="0x33B7"/>
+ <enum value="0x33B8" name="EGL_DEBUG_CALLBACK_KHR"/>
+ <enum value="0x33B9" name="EGL_DEBUG_MSG_CRITICAL_KHR"/>
+ <enum value="0x33BA" name="EGL_DEBUG_MSG_ERROR_KHR"/>
+ <enum value="0x33BB" name="EGL_DEBUG_MSG_WARN_KHR"/>
+ <enum value="0x33BC" name="EGL_DEBUG_MSG_INFO_KHR"/>
+ <unused start="0x33BD" end="0x33BF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x33C0" end="0x33DF" vendor="BCOM" comment="Reserved for Gary Sweet (Bug 12203)">
+ <unused start="0x33C0" end="0x33DF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x33E0" end="0x342F" vendor="QCOM" comment="EGL_QCOM_create_image and EGL_QCOM_lock_image2">
+ <enum value="0x33E0" name="EGL_FORMAT_FLAG_UBWC_QCOM"/>
+ <enum value="0x33E1" name="EGL_FORMAT_FLAG_MACROTILE_QCOM"/>
+ <enum value="0x33E2" name="EGL_FORMAT_ASTC_4X4_QCOM"/>
+ <enum value="0x33E3" name="EGL_FORMAT_ASTC_5X4_QCOM"/>
+ <enum value="0x33E4" name="EGL_FORMAT_ASTC_5X5_QCOM"/>
+ <enum value="0x33E5" name="EGL_FORMAT_ASTC_6X5_QCOM"/>
+ <enum value="0x33E6" name="EGL_FORMAT_ASTC_6X6_QCOM"/>
+ <enum value="0x33E7" name="EGL_FORMAT_ASTC_8X5_QCOM"/>
+ <enum value="0x33E8" name="EGL_FORMAT_ASTC_8X6_QCOM"/>
+ <enum value="0x33E9" name="EGL_FORMAT_ASTC_8X8_QCOM"/>
+ <enum value="0x33EA" name="EGL_FORMAT_ASTC_10X5_QCOM"/>
+ <enum value="0x33EB" name="EGL_FORMAT_ASTC_10X6_QCOM"/>
+ <enum value="0x33EC" name="EGL_FORMAT_ASTC_10X8_QCOM"/>
+ <enum value="0x33ED" name="EGL_FORMAT_ASTC_10X10_QCOM"/>
+ <enum value="0x33EE" name="EGL_FORMAT_ASTC_12X10_QCOM"/>
+ <enum value="0x33EF" name="EGL_FORMAT_ASTC_12X12_QCOM"/>
+ <enum value="0x3400" name="EGL_FORMAT_ASTC_4X4_SRGB_QCOM"/>
+ <enum value="0x3401" name="EGL_FORMAT_ASTC_5X4_SRGB_QCOM"/>
+ <enum value="0x3402" name="EGL_FORMAT_ASTC_5X5_SRGB_QCOM"/>
+ <enum value="0x3403" name="EGL_FORMAT_ASTC_6X5_SRGB_QCOM"/>
+ <enum value="0x3404" name="EGL_FORMAT_ASTC_6X6_SRGB_QCOM"/>
+ <enum value="0x3405" name="EGL_FORMAT_ASTC_8X5_SRGB_QCOM"/>
+ <enum value="0x3406" name="EGL_FORMAT_ASTC_8X6_SRGB_QCOM"/>
+ <enum value="0x3407" name="EGL_FORMAT_ASTC_8X8_SRGB_QCOM"/>
+ <enum value="0x3408" name="EGL_FORMAT_ASTC_10X5_SRGB_QCOM"/>
+ <enum value="0x3409" name="EGL_FORMAT_ASTC_10X6_SRGB_QCOM"/>
+ <enum value="0x340A" name="EGL_FORMAT_ASTC_10X8_SRGB_QCOM"/>
+ <enum value="0x340B" name="EGL_FORMAT_ASTC_10X10_SRGB_QCOM"/>
+ <enum value="0x340C" name="EGL_FORMAT_ASTC_12X10_SRGB_QCOM"/>
+ <enum value="0x340D" name="EGL_FORMAT_ASTC_12X12_SRGB_QCOM"/>
+ <enum value="0x340E" name="EGL_FORMAT_TP10_QCOM"/>
+ <enum value="0x340F" name="EGL_FORMAT_NV12_Y_QCOM"/>
+ <enum value="0x3410" name="EGL_FORMAT_NV12_UV_QCOM"/>
+ <enum value="0x3411" name="EGL_FORMAT_NV21_VU_QCOM"/>
+ <enum value="0x3412" name="EGL_FORMAT_NV12_4R_QCOM"/>
+ <enum value="0x3413" name="EGL_FORMAT_NV12_4R_Y_QCOM"/>
+ <enum value="0x3414" name="EGL_FORMAT_NV12_4R_UV_QCOM"/>
+ <enum value="0x3415" name="EGL_FORMAT_P010_QCOM"/>
+ <enum value="0x3416" name="EGL_FORMAT_P010_Y_QCOM"/>
+ <enum value="0x3417" name="EGL_FORMAT_P010_UV_QCOM"/>
+ <enum value="0x3418" name="EGL_FORMAT_TP10_Y_QCOM"/>
+ <enum value="0x3419" name="EGL_FORMAT_TP10_UV_QCOM"/>
+ <unused start="0x341A" end="0x341F"/>
+ <enum value="0x3420" name="EGL_GENERIC_TOKEN_1_QCOM"/>
+ <enum value="0x3421" name="EGL_GENERIC_TOKEN_2_QCOM"/>
+ <enum value="0x3422" name="EGL_GENERIC_TOKEN_3_QCOM"/>
+ <unused start="0x3423" end="0x342F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3430" end="0x343F" vendor="ANDROID" comment="Reserved for Pablo Ceballos (Bug 15874)">
+ <enum value="EGL_CAST(EGLnsecsANDROID,-2)" name="EGL_TIMESTAMP_PENDING_ANDROID"/>
+ <enum value="EGL_CAST(EGLnsecsANDROID,-1)" name="EGL_TIMESTAMP_INVALID_ANDROID"/>
+ <enum value="0x3430" name="EGL_TIMESTAMPS_ANDROID"/>
+ <enum value="0x3431" name="EGL_COMPOSITE_DEADLINE_ANDROID"/>
+ <enum value="0x3432" name="EGL_COMPOSITE_INTERVAL_ANDROID"/>
+ <enum value="0x3433" name="EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID"/>
+ <enum value="0x3434" name="EGL_REQUESTED_PRESENT_TIME_ANDROID"/>
+ <enum value="0x3435" name="EGL_RENDERING_COMPLETE_TIME_ANDROID"/>
+ <enum value="0x3436" name="EGL_COMPOSITION_LATCH_TIME_ANDROID"/>
+ <enum value="0x3437" name="EGL_FIRST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum value="0x3438" name="EGL_LAST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum value="0x3439" name="EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID"/>
+ <enum value="0x343A" name="EGL_DISPLAY_PRESENT_TIME_ANDROID"/>
+ <enum value="0x343B" name="EGL_DEQUEUE_READY_TIME_ANDROID"/>
+ <enum value="0x343C" name="EGL_READS_DONE_TIME_ANDROID"/>
+ <unused start="0x343D" end="0x343F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3440" end="0x344F" vendor="ANDROID" comment="Reserved for Kristian Kristensen (Bug 16033)">
+ <enum value="0x3440" name="EGL_DMA_BUF_PLANE3_FD_EXT"/>
+ <enum value="0x3441" name="EGL_DMA_BUF_PLANE3_OFFSET_EXT"/>
+ <enum value="0x3442" name="EGL_DMA_BUF_PLANE3_PITCH_EXT"/>
+ <enum value="0x3443" name="EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT"/>
+ <enum value="0x3444" name="EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT"/>
+ <enum value="0x3445" name="EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT"/>
+ <enum value="0x3446" name="EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT"/>
+ <enum value="0x3447" name="EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT"/>
+ <enum value="0x3448" name="EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT"/>
+ <enum value="0x3449" name="EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT"/>
+ <enum value="0x344A" name="EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT"/>
+ <unused start="0x344B" end="0x344F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3450" end="0x345F" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 16106)">
+ <unused start="0x3450" end="0x345F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3460" end="0x346F" vendor="COREAVI" comment="Reserved for Daniel Herring (Bug 16162)">
+ <enum value="0x3460" name="EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT"/>
+ <enum value="0x3461" name="EGL_EXTERNAL_REF_ID_EXT"/>
+ <enum value="0x3462" name="EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT"/>
+ <enum value="0x3463" name="EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT"/>
+ <enum value="0x3464" name="EGL_FRONT_BUFFER_EXT"/>
+ <unused start="0x3465" end="0x346F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3470" end="0x347F" vendor="EXT" comment="Reserved for Daniel Stone (PR 14)">
+ <enum value="0x3470" name="EGL_IMPORT_SYNC_TYPE_EXT"/>
+ <enum value="0x3471" name="EGL_IMPORT_IMPLICIT_SYNC_EXT"/>
+ <enum value="0x3472" name="EGL_IMPORT_EXPLICIT_SYNC_EXT"/>
+ </enums>
+ <enums namespace="EGL" start="0x3480" end="0x348F" vendor="ANGLE" comment="Reserved for Courtney Goeltzenleuchter - ANGLE (gitlab EGL bug 7)">
+ <unused start="0x3480" end="0x348F"/>
+ </enums>
+ <enums namespace="EGL" start="0x3490" end="0x349F" vendor="EXT" comment="Reserved for Courtney Goeltzenleuchter - Android (gitlab EGL bug 69)">
+ <enum value="0x3490" name="EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT"/>
+ <unused start="0x3491" end="0x349F"/>
+ </enums>
+ <enums namespace="EGL" start="0x34A0" end="0x34AF" vendor="ANGLE" comment="Reserved for Ken Russell - ANGLE (via github pull request)">
+ <unused start="0x34A0" end="0x34AF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34B0" end="0x34BF" vendor="ARM" comment="Reserved for Jan-Harald Fredriksen (via github pull request)">
+ <enum value="0x34B0" name="EGL_SURFACE_COMPRESSION_EXT"/>
+ <enum value="0x34B1" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT"/>
+ <enum value="0x34B2" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT"/>
+ <unused start="0x34B3" end="0x34B3"/>
+ <enum value="0x34B4" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT"/>
+ <enum value="0x34B5" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT"/>
+ <enum value="0x34B6" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT"/>
+ <enum value="0x34B7" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT"/>
+ <enum value="0x34B8" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT"/>
+ <enum value="0x34B9" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT"/>
+ <enum value="0x34BA" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT"/>
+ <enum value="0x34BB" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT"/>
+ <enum value="0x34BC" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT"/>
+ <enum value="0x34BD" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT"/>
+ <enum value="0x34BE" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT"/>
+ <enum value="0x34BF" name="EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34C0" end="0x34CF" vendor="EXT" comment="Reserved for Robert Mader (PR 124)">
+ <enum value="0x34C0" name="EGL_CONFIG_SELECT_GROUP_EXT"/>
+ <unused start="0x34C1" end="0x34CF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34D0" end="0x34DF" vendor="ANGLE" comment="Reserved for Peng Huang - ANGLE (via github pull request)">
+ <unused start="0x34D0" end="0x34DF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34E0" end="0x34EF" vendor="Huawei" comment="Reserved for Openharmony OS (via github pull request)">
+ <unused start="0x34E0" end="0x34EF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x34F0" end="0x34FF" vendor="ANGLE" comment="Reserved for Ken Russell - ANGLE (via github pull request)">
+ <unused start="0x34F0" end="0x34FF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3500" end="0x352F" vendor="COREAVI" comment="Reserved for Daniel Herring (via github pull request)">
+ <unused start="0x3500" end="0x352F"/>
+ </enums>
+
+<!-- Please remember that new enumerant allocations must be obtained by
+ request to the Khronos API registrar (see comments at the top of this
+ file) File requests in the Khronos Bugzilla, EGL project, Registry
+ component. Also note that some EGL enum values are shared with other
+ Khronos APIs, and new ranges should be allocated with such overlaps in
+ mind. -->
+
+<!-- Reservable for future use. To generate a new range, allocate multiples
+ of 16 starting at the lowest available point in this block. -->
+ <enums namespace="EGL" start="0x3530" end="0x3FFF" vendor="KHR" comment="Reserved for future use">
+ <unused start="0x3530" end="0x3FFF"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x8F70" end="0x8F7F" vendor="HI" comment="For Mark Callow, Khronos bug 4055. Shared with GL.">
+ <enum value="0x8F70" name="EGL_COLOR_FORMAT_HI"/>
+ <enum value="0x8F71" name="EGL_COLOR_RGB_HI"/>
+ <enum value="0x8F72" name="EGL_COLOR_RGBA_HI"/>
+ <enum value="0x8F73" name="EGL_COLOR_ARGB_HI"/>
+ <enum value="0x8F74" name="EGL_CLIENT_PIXMAP_POINTER_HI"/>
+ </enums>
+
+ <!-- SECTION: EGL command definitions. -->
+ <commands namespace="EGL">
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglBindAPI</name></proto>
+ <param><ptype>EGLenum</ptype> <name>api</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglBindTexImage</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>buffer</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglChooseConfig</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ <param><ptype>EGLConfig</ptype> *<name>configs</name></param>
+ <param><ptype>EGLint</ptype> <name>config_size</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_config</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglClientSignalSyncEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglClientWaitSync</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ <param><ptype>EGLTime</ptype> <name>timeout</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglClientWaitSyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ <param><ptype>EGLTimeKHR</ptype> <name>timeout</name></param>
+ <alias name="eglClientWaitSync"/>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglClientWaitSyncNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ <param><ptype>EGLTimeNV</ptype> <name>timeout</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCopyBuffers</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLNativePixmapType</ptype> <name>target</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLContext</ptype> <name>eglCreateContext</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLContext</ptype> <name>share_context</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLImageKHR</ptype> <name>eglCreateDRMImageMESA</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSyncNV</ptype> <name>eglCreateFenceSyncNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>condition</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLImage</ptype> <name>eglCreateImage</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ <param><ptype>EGLenum</ptype> <name>target</name></param>
+ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLImageKHR</ptype> <name>eglCreateImageKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ <param><ptype>EGLenum</ptype> <name>target</name></param>
+ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLClientBuffer</ptype> <name>eglCreateNativeClientBufferANDROID</name></proto>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePbufferFromClientBuffer</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>buftype</name></param>
+ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePbufferSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePixmapSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLNativePixmapType</ptype> <name>pixmap</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePixmapSurfaceHI</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>struct <ptype>EGLClientPixmapHI</ptype> *<name>pixmap</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformPixmapSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>void *<name>native_pixmap</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformPixmapSurfaceEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>void *<name>native_pixmap</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformWindowSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>void *<name>native_window</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformWindowSurfaceEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>void *<name>native_window</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamFromFileDescriptorKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLNativeFileDescriptorKHR</ptype> <name>file_descriptor</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreateStreamProducerSurfaceKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateStreamSyncNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>type</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSync</ptype> <name>eglCreateSync</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>type</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateSyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>type</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateSync64KHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLenum</ptype> <name>type</name></param>
+ <param>const <ptype>EGLAttribKHR</ptype> *<name>attrib_list</name></param>
+ <alias name="eglCreateSync"/>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglCreateWindowSurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLNativeWindowType</ptype> <name>win</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglDebugMessageControlKHR</name></proto>
+ <param><ptype>EGLDEBUGPROCKHR</ptype> <name>callback</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyContext</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyImage</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImage</ptype> <name>image</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyImageKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ <alias name="eglDestroyImage"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyStreamKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySync</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <alias name="eglDestroySync"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySyncNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglDupNativeFenceFDANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglExportDMABUFImageMESA</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ <param>int *<name>fds</name></param>
+ <param><ptype>EGLint</ptype> *<name>strides</name></param>
+ <param><ptype>EGLint</ptype> *<name>offsets</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglExportDMABUFImageQueryMESA</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ <param>int *<name>fourcc</name></param>
+ <param>int *<name>num_planes</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglExportDRMImageMESA</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ <param><ptype>EGLint</ptype> *<name>name</name></param>
+ <param><ptype>EGLint</ptype> *<name>handle</name></param>
+ <param><ptype>EGLint</ptype> *<name>stride</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglFenceNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetConfigAttrib</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetConfigs</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> *<name>configs</name></param>
+ <param><ptype>EGLint</ptype> <name>config_size</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_config</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLContext</ptype> <name>eglGetCurrentContext</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLDisplay</ptype> <name>eglGetCurrentDisplay</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLSurface</ptype> <name>eglGetCurrentSurface</name></proto>
+ <param><ptype>EGLint</ptype> <name>readdraw</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLDisplay</ptype> <name>eglGetDisplay</name></proto>
+ <param><ptype>EGLNativeDisplayType</ptype> <name>display_id</name></param>
+ </command>
+ <command>
+ <proto>char *<name>eglGetDisplayDriverConfig</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglGetDisplayDriverName</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglGetError</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetMscRateANGLE</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> *<name>numerator</name></param>
+ <param><ptype>EGLint</ptype> *<name>denominator</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLClientBuffer</ptype> <name>eglGetNativeClientBufferANDROID</name></proto>
+ <param>const struct <ptype>AHardwareBuffer</ptype> *<name>buffer</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetOutputLayersEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> *<name>layers</name></param>
+ <param><ptype>EGLint</ptype> <name>max_layers</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_layers</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetOutputPortsEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ <param><ptype>EGLOutputPortEXT</ptype> *<name>ports</name></param>
+ <param><ptype>EGLint</ptype> <name>max_ports</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_ports</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLDisplay</ptype> <name>eglGetPlatformDisplay</name></proto>
+ <param><ptype>EGLenum</ptype> <name>platform</name></param>
+ <param>void *<name>native_display</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLDisplay</ptype> <name>eglGetPlatformDisplayEXT</name></proto>
+ <param><ptype>EGLenum</ptype> <name>platform</name></param>
+ <param>void *<name>native_display</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>__eglMustCastToProperFunctionPointerType</ptype> <name>eglGetProcAddress</name></proto>
+ <param>const char *<name>procname</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLNativeFileDescriptorKHR</ptype> <name>eglGetStreamFileDescriptorKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttrib</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttribNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLuint64NV</ptype> <name>eglGetSystemTimeFrequencyNV</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLuint64NV</ptype> <name>eglGetSystemTimeNV</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglInitialize</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> *<name>major</name></param>
+ <param><ptype>EGLint</ptype> *<name>minor</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglLabelObjectKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>display</name></param>
+ <param><ptype>EGLenum</ptype> <name>objectType</name></param>
+ <param><ptype>EGLObjectKHR</ptype> <name>object</name></param>
+ <param><ptype>EGLLabelKHR</ptype> <name>label</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglLockSurfaceKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglMakeCurrent</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>draw</name></param>
+ <param><ptype>EGLSurface</ptype> <name>read</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglOutputLayerAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglOutputPortAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglPostSubBufferNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>x</name></param>
+ <param><ptype>EGLint</ptype> <name>y</name></param>
+ <param><ptype>EGLint</ptype> <name>width</name></param>
+ <param><ptype>EGLint</ptype> <name>height</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglPresentationTimeANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> <name>time</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetCompositorTimingSupportedANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetCompositorTimingANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>numTimestamps</name></param>
+ <param> const <ptype>EGLint</ptype> *<name>names</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> *<name>values</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetNextFrameIdANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>frameId</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetFrameTimestampSupportedANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>timestamp</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetFrameTimestampsANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLuint64KHR</ptype> <name>frameId</name></param>
+ <param><ptype>EGLint</ptype> <name>numTimestamps</name></param>
+ <param> const <ptype>EGLint</ptype> *<name>timestamps</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> *<name>values</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLenum</ptype> <name>eglQueryAPI</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryContext</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDebugKHR</name></proto>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDeviceAttribEXT</name></proto>
+ <param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglQueryDeviceStringEXT</name></proto>
+ <param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDevicesEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>max_devices</name></param>
+ <param><ptype>EGLDeviceEXT</ptype> *<name>devices</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_devices</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ <alias name="eglQueryDisplayAttribKHR"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ <alias name="eglQueryDisplayAttribKHR"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDmaBufFormatsEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>max_formats</name></param>
+ <param><ptype>EGLint</ptype> *<name>formats</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_formats</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDmaBufModifiersEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>format</name></param>
+ <param><ptype>EGLint</ptype> <name>max_modifiers</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
+ <param><ptype>EGLBoolean</ptype> *<name>external_only</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_modifiers</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativeDisplayNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLNativeDisplayType</ptype> *<name>display_id</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativePixmapNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surf</name></param>
+ <param><ptype>EGLNativePixmapType</ptype> *<name>pixmap</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativeWindowNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surf</name></param>
+ <param><ptype>EGLNativeWindowType</ptype> *<name>window</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryOutputLayerAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglQueryOutputLayerStringEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryOutputPortAttribEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglQueryOutputPortStringEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamMetadataNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>name</name></param>
+ <param><ptype>EGLint</ptype> <name>n</name></param>
+ <param><ptype>EGLint</ptype> <name>offset</name></param>
+ <param><ptype>EGLint</ptype> <name>size</name></param>
+ <param>void *<name>data</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamTimeKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLTimeKHR</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamu64KHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>const char *<name>eglQueryString</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySupportedCompressionRatesEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLConfig</ptype> <name>config</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ <param><ptype>EGLint</ptype> *<name>rates</name></param>
+ <param><ptype>EGLint</ptype> <name>rate_size</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_rates</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurface</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurface64KHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttribKHR</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurfacePointerANGLE</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param>void **<name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglReleaseTexImage</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>buffer</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglReleaseThread</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglResetStreamNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto>void <name>eglSetBlobCacheFuncsANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSetBlobFuncANDROID</ptype> <name>set</name></param>
+ <param><ptype>EGLGetBlobFuncANDROID</ptype> <name>get</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSetDamageRegionKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> *<name>rects</name></param>
+ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSetStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSetStreamMetadataNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLint</ptype> <name>n</name></param>
+ <param><ptype>EGLint</ptype> <name>offset</name></param>
+ <param><ptype>EGLint</ptype> <name>size</name></param>
+ <param>const void *<name>data</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSignalSyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <param><ptype>EGLenum</ptype> <name>mode</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSignalSyncNV</name></proto>
+ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
+ <param><ptype>EGLenum</ptype> <name>mode</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerAcquireKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerAcquireAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerGLTextureExternalKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerGLTextureExternalAttribsNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerOutputEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerReleaseKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerReleaseAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamFlushNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSurfaceAttrib</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> <name>value</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffers</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersWithDamageEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
+ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersWithDamageKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
+ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersRegionNOK</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>numRects</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersRegion2NOK</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>numRects</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSwapInterval</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>interval</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglTerminate</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglUnlockSurfaceKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglUnsignalSyncEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglWaitClient</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglWaitGL</name></proto>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglWaitNative</name></proto>
+ <param><ptype>EGLint</ptype> <name>engine</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglWaitSync</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglWaitSyncKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
+ <param><ptype>EGLint</ptype> <name>flags</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetContextListEXT</name></proto>
+ <param>const <ptype>EGLint</ptype> *<name>external_ref_ids</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetContextAttributesEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_ref_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>context_attributes</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetWindowListEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_ref_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>external_win_ids</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetWindowAttributesEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>window_attributes</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorBindTexWindowEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetSizeEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param><ptype>EGLint</ptype> <name>width</name></param>
+ <param><ptype>EGLint</ptype> <name>height</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSwapPolicyEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param><ptype>EGLint</ptype> <name>policy</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglBindWaylandDisplayWL</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>struct <ptype>wl_display</ptype> *<name>display</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglUnbindWaylandDisplayWL</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>struct <ptype>wl_display</ptype> *<name>display</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryWaylandBufferWL</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>struct <ptype>wl_resource</ptype> *<name>buffer</name></param>
+ <param><ptype>EGLint</ptype> <name>attribute</name></param>
+ <param><ptype>EGLint</ptype> *<name>value</name></param>
+ </command>
+ <command>
+ <proto>struct <ptype>wl_buffer</ptype> *<name>eglCreateWaylandBufferFromImageWL</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamImageConsumerConnectNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLint</ptype> <name>num_modifiers</name></param>
+ <param>const <ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLint</ptype> <name>eglQueryStreamConsumerEventNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLTime</ptype> <name>timeout</name></param>
+ <param><ptype>EGLenum</ptype> *<name>event</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>aux</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamAcquireImageNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLImage</ptype> *<name>pImage</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamReleaseImageNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLImage</ptype> <name>image</name></param>
+ <param><ptype>EGLSync</ptype> <name>sync</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDeviceBinaryEXT</name></proto>
+ <param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ <param><ptype>EGLint</ptype> <name>max_size</name></param>
+ <param>void *<name>value</name></param>
+ <param>EGLint *<name>size</name></param>
+ </command>
+ </commands>
+
+ <!-- SECTION: EGL API interface definitions. -->
+ <feature api="egl" name="EGL_VERSION_1_0" number="1.0">
+ <require>
+ <enum name="EGL_ALPHA_SIZE"/>
+ <enum name="EGL_BAD_ACCESS"/>
+ <enum name="EGL_BAD_ALLOC"/>
+ <enum name="EGL_BAD_ATTRIBUTE"/>
+ <enum name="EGL_BAD_CONFIG"/>
+ <enum name="EGL_BAD_CONTEXT"/>
+ <enum name="EGL_BAD_CURRENT_SURFACE"/>
+ <enum name="EGL_BAD_DISPLAY"/>
+ <enum name="EGL_BAD_MATCH"/>
+ <enum name="EGL_BAD_NATIVE_PIXMAP"/>
+ <enum name="EGL_BAD_NATIVE_WINDOW"/>
+ <enum name="EGL_BAD_PARAMETER"/>
+ <enum name="EGL_BAD_SURFACE"/>
+ <enum name="EGL_BLUE_SIZE"/>
+ <enum name="EGL_BUFFER_SIZE"/>
+ <enum name="EGL_CONFIG_CAVEAT"/>
+ <enum name="EGL_CONFIG_ID"/>
+ <enum name="EGL_CORE_NATIVE_ENGINE"/>
+ <enum name="EGL_DEPTH_SIZE"/>
+ <enum name="EGL_DONT_CARE"/>
+ <enum name="EGL_DRAW"/>
+ <enum name="EGL_EXTENSIONS"/>
+ <enum name="EGL_FALSE"/>
+ <enum name="EGL_GREEN_SIZE"/>
+ <enum name="EGL_HEIGHT"/>
+ <enum name="EGL_LARGEST_PBUFFER"/>
+ <enum name="EGL_LEVEL"/>
+ <enum name="EGL_MAX_PBUFFER_HEIGHT"/>
+ <enum name="EGL_MAX_PBUFFER_PIXELS"/>
+ <enum name="EGL_MAX_PBUFFER_WIDTH"/>
+ <enum name="EGL_NATIVE_RENDERABLE"/>
+ <enum name="EGL_NATIVE_VISUAL_ID"/>
+ <enum name="EGL_NATIVE_VISUAL_TYPE"/>
+ <enum name="EGL_NONE"/>
+ <enum name="EGL_NON_CONFORMANT_CONFIG"/>
+ <enum name="EGL_NOT_INITIALIZED"/>
+ <enum name="EGL_NO_CONTEXT"/>
+ <enum name="EGL_NO_DISPLAY"/>
+ <enum name="EGL_NO_SURFACE"/>
+ <enum name="EGL_PBUFFER_BIT"/>
+ <enum name="EGL_PIXMAP_BIT"/>
+ <enum name="EGL_READ"/>
+ <enum name="EGL_RED_SIZE"/>
+ <enum name="EGL_SAMPLES"/>
+ <enum name="EGL_SAMPLE_BUFFERS"/>
+ <enum name="EGL_SLOW_CONFIG"/>
+ <enum name="EGL_STENCIL_SIZE"/>
+ <enum name="EGL_SUCCESS"/>
+ <enum name="EGL_SURFACE_TYPE"/>
+ <enum name="EGL_TRANSPARENT_BLUE_VALUE"/>
+ <enum name="EGL_TRANSPARENT_GREEN_VALUE"/>
+ <enum name="EGL_TRANSPARENT_RED_VALUE"/>
+ <enum name="EGL_TRANSPARENT_RGB"/>
+ <enum name="EGL_TRANSPARENT_TYPE"/>
+ <enum name="EGL_TRUE"/>
+ <enum name="EGL_VENDOR"/>
+ <enum name="EGL_VERSION"/>
+ <enum name="EGL_WIDTH"/>
+ <enum name="EGL_WINDOW_BIT"/>
+ <command name="eglChooseConfig"/>
+ <command name="eglCopyBuffers"/>
+ <command name="eglCreateContext"/>
+ <command name="eglCreatePbufferSurface"/>
+ <command name="eglCreatePixmapSurface"/>
+ <command name="eglCreateWindowSurface"/>
+ <command name="eglDestroyContext"/>
+ <command name="eglDestroySurface"/>
+ <command name="eglGetConfigAttrib"/>
+ <command name="eglGetConfigs"/>
+ <command name="eglGetCurrentDisplay"/>
+ <command name="eglGetCurrentSurface"/>
+ <command name="eglGetDisplay"/>
+ <command name="eglGetError"/>
+ <command name="eglGetProcAddress"/>
+ <command name="eglInitialize"/>
+ <command name="eglMakeCurrent"/>
+ <command name="eglQueryContext"/>
+ <command name="eglQueryString"/>
+ <command name="eglQuerySurface"/>
+ <command name="eglSwapBuffers"/>
+ <command name="eglTerminate"/>
+ <command name="eglWaitGL"/>
+ <command name="eglWaitNative"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_1" number="1.1">
+ <require>
+ <enum name="EGL_BACK_BUFFER"/>
+ <enum name="EGL_BIND_TO_TEXTURE_RGB"/>
+ <enum name="EGL_BIND_TO_TEXTURE_RGBA"/>
+ <enum name="EGL_CONTEXT_LOST"/>
+ <enum name="EGL_MIN_SWAP_INTERVAL"/>
+ <enum name="EGL_MAX_SWAP_INTERVAL"/>
+ <enum name="EGL_MIPMAP_TEXTURE"/>
+ <enum name="EGL_MIPMAP_LEVEL"/>
+ <enum name="EGL_NO_TEXTURE"/>
+ <enum name="EGL_TEXTURE_2D"/>
+ <enum name="EGL_TEXTURE_FORMAT"/>
+ <enum name="EGL_TEXTURE_RGB"/>
+ <enum name="EGL_TEXTURE_RGBA"/>
+ <enum name="EGL_TEXTURE_TARGET"/>
+ <command name="eglBindTexImage"/>
+ <command name="eglReleaseTexImage"/>
+ <command name="eglSurfaceAttrib"/>
+ <command name="eglSwapInterval"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_2" number="1.2">
+ <require>
+ <enum name="EGL_ALPHA_FORMAT"/>
+ <enum name="EGL_ALPHA_FORMAT_NONPRE"/>
+ <enum name="EGL_ALPHA_FORMAT_PRE"/>
+ <enum name="EGL_ALPHA_MASK_SIZE"/>
+ <enum name="EGL_BUFFER_PRESERVED"/>
+ <enum name="EGL_BUFFER_DESTROYED"/>
+ <enum name="EGL_CLIENT_APIS"/>
+ <enum name="EGL_COLORSPACE"/>
+ <enum name="EGL_COLORSPACE_sRGB"/>
+ <enum name="EGL_COLORSPACE_LINEAR"/>
+ <enum name="EGL_COLOR_BUFFER_TYPE"/>
+ <enum name="EGL_CONTEXT_CLIENT_TYPE"/>
+ <enum name="EGL_DISPLAY_SCALING"/>
+ <enum name="EGL_HORIZONTAL_RESOLUTION"/>
+ <enum name="EGL_LUMINANCE_BUFFER"/>
+ <enum name="EGL_LUMINANCE_SIZE"/>
+ <enum name="EGL_OPENGL_ES_BIT"/>
+ <enum name="EGL_OPENVG_BIT"/>
+ <enum name="EGL_OPENGL_ES_API"/>
+ <enum name="EGL_OPENVG_API"/>
+ <enum name="EGL_OPENVG_IMAGE"/>
+ <enum name="EGL_PIXEL_ASPECT_RATIO"/>
+ <enum name="EGL_RENDERABLE_TYPE"/>
+ <enum name="EGL_RENDER_BUFFER"/>
+ <enum name="EGL_RGB_BUFFER"/>
+ <enum name="EGL_SINGLE_BUFFER"/>
+ <enum name="EGL_SWAP_BEHAVIOR"/>
+ <enum name="EGL_UNKNOWN"/>
+ <enum name="EGL_VERTICAL_RESOLUTION"/>
+ <command name="eglBindAPI"/>
+ <command name="eglQueryAPI"/>
+ <command name="eglCreatePbufferFromClientBuffer"/>
+ <command name="eglReleaseThread"/>
+ <command name="eglWaitClient"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_3" number="1.3">
+ <require>
+ <enum name="EGL_CONFORMANT"/>
+ <enum name="EGL_CONTEXT_CLIENT_VERSION"/>
+ <enum name="EGL_MATCH_NATIVE_PIXMAP"/>
+ <enum name="EGL_OPENGL_ES2_BIT"/>
+ <enum name="EGL_VG_ALPHA_FORMAT"/>
+ <enum name="EGL_VG_ALPHA_FORMAT_NONPRE"/>
+ <enum name="EGL_VG_ALPHA_FORMAT_PRE"/>
+ <enum name="EGL_VG_ALPHA_FORMAT_PRE_BIT"/>
+ <enum name="EGL_VG_COLORSPACE"/>
+ <enum name="EGL_VG_COLORSPACE_sRGB"/>
+ <enum name="EGL_VG_COLORSPACE_LINEAR"/>
+ <enum name="EGL_VG_COLORSPACE_LINEAR_BIT"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_4" number="1.4">
+ <require>
+ <enum name="EGL_DEFAULT_DISPLAY"/>
+ <enum name="EGL_MULTISAMPLE_RESOLVE_BOX_BIT"/>
+ <enum name="EGL_MULTISAMPLE_RESOLVE"/>
+ <enum name="EGL_MULTISAMPLE_RESOLVE_DEFAULT"/>
+ <enum name="EGL_MULTISAMPLE_RESOLVE_BOX"/>
+ <enum name="EGL_OPENGL_API"/>
+ <enum name="EGL_OPENGL_BIT"/>
+ <enum name="EGL_SWAP_BEHAVIOR_PRESERVED_BIT"/>
+ <command name="eglGetCurrentContext"/>
+ </require>
+ </feature>
+ <feature api="egl" name="EGL_VERSION_1_5" number="1.5">
+ <require comment="EGL_KHR_create_context features">
+ <enum name="EGL_CONTEXT_MAJOR_VERSION"/>
+ <enum name="EGL_CONTEXT_MINOR_VERSION"/>
+ <enum name="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
+ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
+ <enum name="EGL_NO_RESET_NOTIFICATION"/>
+ <enum name="EGL_LOSE_CONTEXT_ON_RESET"/>
+ <enum name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
+ <enum name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
+ <enum name="EGL_CONTEXT_OPENGL_DEBUG"/>
+ <enum name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE"/>
+ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
+ <enum name="EGL_OPENGL_ES3_BIT"/>
+ </require>
+ <require comment="EGL_EXT_create_context_robustness">
+ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
+ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
+ </require>
+ <require comment="EGL_EXT_client_extensions"/>
+ <require comment="EGL_KHR_cl_event2">
+ <enum name="EGL_CL_EVENT_HANDLE"/>
+ <enum name="EGL_SYNC_CL_EVENT"/>
+ <enum name="EGL_SYNC_CL_EVENT_COMPLETE"/>
+ </require>
+ <require comment="EGL_KHR_fence_sync">
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
+ <enum name="EGL_SYNC_TYPE"/>
+ <enum name="EGL_SYNC_STATUS"/>
+ <enum name="EGL_SYNC_CONDITION"/>
+ <enum name="EGL_SIGNALED"/>
+ <enum name="EGL_UNSIGNALED"/>
+ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
+ <enum name="EGL_FOREVER"/>
+ <enum name="EGL_TIMEOUT_EXPIRED"/>
+ <enum name="EGL_CONDITION_SATISFIED"/>
+ <enum name="EGL_NO_SYNC"/>
+ <enum name="EGL_SYNC_FENCE"/>
+ <command name="eglCreateSync"/>
+ <command name="eglDestroySync"/>
+ <command name="eglClientWaitSync"/>
+ <command name="eglGetSyncAttrib"/>
+ </require>
+ <require comment="EGL_KHR_get_all_proc_addresses"/>
+ <require comment="EGL_KHR_client_get_all_proc_addresses"/>
+ <require comment="EGL_KHR_gl_colorspace">
+ <enum name="EGL_GL_COLORSPACE"/>
+ <enum name="EGL_GL_COLORSPACE_SRGB"/>
+ <enum name="EGL_GL_COLORSPACE_LINEAR"/>
+ </require>
+ <require comment="EGL_KHR_gl_renderbuffer_image">
+ <enum name="EGL_GL_RENDERBUFFER"/>
+ </require>
+ <require comment="EGL_KHR_gl_texture_2D_image">
+ <enum name="EGL_GL_TEXTURE_2D"/>
+ <enum name="EGL_GL_TEXTURE_LEVEL"/>
+ </require>
+ <require comment="EGL_KHR_gl_texture_3D_image">
+ <enum name="EGL_GL_TEXTURE_3D"/>
+ <enum name="EGL_GL_TEXTURE_ZOFFSET"/>
+ </require>
+ <require comment="EGL_KHR_gl_texture_cubemap_image">
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
+ </require>
+ <require comment="EGL_KHR_image_base">
+ <enum name="EGL_IMAGE_PRESERVED"/>
+ <enum name="EGL_NO_IMAGE"/>
+ <command name="eglCreateImage"/>
+ <command name="eglDestroyImage"/>
+ </require>
+ <require comment="EGL_EXT_platform_base">
+ <command name="eglGetPlatformDisplay"/>
+ <command name="eglCreatePlatformWindowSurface"/>
+ <command name="eglCreatePlatformPixmapSurface"/>
+ </require>
+ <require comment="EGL_KHR_surfaceless_context - just relaxes an error condition"/>
+ <require comment="EGL_KHR_wait_sync">
+ <command name="eglWaitSync"/>
+ </require>
+ </feature>
+
+ <!-- SECTION: EGL extension interface definitions -->
+ <extensions>
+ <extension name="EGL_ANDROID_blob_cache" supported="egl">
+ <require>
+ <command name="eglSetBlobCacheFuncsANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_create_native_client_buffer" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID"/>
+ <command name="eglCreateNativeClientBufferANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_framebuffer_target" supported="egl">
+ <require>
+ <enum name="EGL_FRAMEBUFFER_TARGET_ANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_get_native_client_buffer" supported="egl">
+ <require>
+ <command name="eglGetNativeClientBufferANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_front_buffer_auto_refresh" supported="egl">
+ <require>
+ <enum name="EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_image_native_buffer" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_ANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_native_fence_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_NATIVE_FENCE_ANDROID"/>
+ <enum name="EGL_SYNC_NATIVE_FENCE_FD_ANDROID"/>
+ <enum name="EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID"/>
+ <enum name="EGL_NO_NATIVE_FENCE_FD_ANDROID"/>
+ <command name="eglDupNativeFenceFDANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_presentation_time" supported="egl">
+ <require>
+ <command name="eglPresentationTimeANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_get_frame_timestamps" supported="egl">
+ <require>
+ <enum name="EGL_TIMESTAMP_PENDING_ANDROID"/>
+ <enum name="EGL_TIMESTAMP_INVALID_ANDROID"/>
+ <enum name="EGL_TIMESTAMPS_ANDROID"/>
+ <enum name="EGL_COMPOSITE_DEADLINE_ANDROID"/>
+ <enum name="EGL_COMPOSITE_INTERVAL_ANDROID"/>
+ <enum name="EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID"/>
+ <enum name="EGL_REQUESTED_PRESENT_TIME_ANDROID"/>
+ <enum name="EGL_RENDERING_COMPLETE_TIME_ANDROID"/>
+ <enum name="EGL_COMPOSITION_LATCH_TIME_ANDROID"/>
+ <enum name="EGL_FIRST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum name="EGL_LAST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum name="EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID"/>
+ <enum name="EGL_DISPLAY_PRESENT_TIME_ANDROID"/>
+ <enum name="EGL_DEQUEUE_READY_TIME_ANDROID"/>
+ <enum name="EGL_READS_DONE_TIME_ANDROID"/>
+ <command name="eglGetCompositorTimingSupportedANDROID"/>
+ <command name="eglGetCompositorTimingANDROID"/>
+ <command name="eglGetNextFrameIdANDROID"/>
+ <command name="eglGetFrameTimestampSupportedANDROID"/>
+ <command name="eglGetFrameTimestampsANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_recordable" supported="egl">
+ <require>
+ <enum name="EGL_RECORDABLE_ANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_GLES_layers" supported="egl"/>
+ <extension name="EGL_ANGLE_d3d_share_handle_client_buffer" supported="egl">
+ <require>
+ <enum name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_device_d3d" supported="egl">
+ <require>
+ <enum name="EGL_D3D9_DEVICE_ANGLE"/>
+ <enum name="EGL_D3D11_DEVICE_ANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_query_surface_pointer" supported="egl">
+ <require>
+ <command name="eglQuerySurfacePointerANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_surface_d3d_texture_2d_share_handle" supported="egl">
+ <require>
+ <enum name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_sync_control_rate" supported="egl">
+ <require>
+ <command name="eglGetMscRateANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANGLE_window_fixed_size" supported="egl">
+ <require>
+ <enum name="EGL_FIXED_SIZE_ANGLE"/>
+ </require>
+ </extension>
+ <extension name="EGL_ARM_implicit_external_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM"/>
+ </require>
+ </extension>
+ <extension name="EGL_ARM_pixmap_multisample_discard" supported="egl">
+ <require>
+ <enum name="EGL_DISCARD_SAMPLES_ARM"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_buffer_age" supported="egl">
+ <require>
+ <enum name="EGL_BUFFER_AGE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_client_extensions" supported="egl"/>
+ <extension name="EGL_EXT_client_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_CLIENT_EXT"/>
+ <enum name="EGL_SYNC_CLIENT_SIGNAL_EXT"/>
+ <command name="eglClientSignalSyncEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_config_select_group" supported="egl">
+ <require>
+ <enum name="EGL_CONFIG_SELECT_GROUP_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_create_context_robustness" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT"/>
+ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT"/>
+ <enum name="EGL_NO_RESET_NOTIFICATION_EXT"/>
+ <enum name="EGL_LOSE_CONTEXT_ON_RESET_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_base" supported="egl">
+ <require>
+ <enum name="EGL_NO_DEVICE_EXT"/>
+ <enum name="EGL_BAD_DEVICE_EXT"/>
+ <enum name="EGL_DEVICE_EXT"/>
+ <command name="eglQueryDeviceAttribEXT"/>
+ <command name="eglQueryDeviceStringEXT"/>
+ <command name="eglQueryDevicesEXT"/>
+ <command name="eglQueryDisplayAttribEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_drm" supported="egl">
+ <require>
+ <enum name="EGL_DRM_DEVICE_FILE_EXT"/>
+ <enum name="EGL_DRM_MASTER_FD_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_enumeration" supported="egl">
+ <require>
+ <command name="eglQueryDevicesEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_openwf" supported="egl">
+ <require>
+ <enum name="EGL_OPENWF_DEVICE_ID_EXT"/>
+ <enum name="EGL_OPENWF_DEVICE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_query" supported="egl">
+ <require>
+ <enum name="EGL_NO_DEVICE_EXT"/>
+ <enum name="EGL_BAD_DEVICE_EXT"/>
+ <enum name="EGL_DEVICE_EXT"/>
+ <command name="eglQueryDeviceAttribEXT"/>
+ <command name="eglQueryDeviceStringEXT"/>
+ <command name="eglQueryDisplayAttribEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_bt2020_linear" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_BT2020_LINEAR_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_bt2020_pq" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_BT2020_PQ_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_scrgb" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_SCRGB_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_scrgb_linear" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_display_p3_linear" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_display_p3" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_DISPLAY_P3_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_gl_colorspace_display_p3_passthrough" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_dma_buf_import" supported="egl">
+ <require>
+ <enum name="EGL_LINUX_DMA_BUF_EXT"/>
+ <enum name="EGL_LINUX_DRM_FOURCC_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_PITCH_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_PITCH_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_PITCH_EXT"/>
+ <enum name="EGL_YUV_COLOR_SPACE_HINT_EXT"/>
+ <enum name="EGL_SAMPLE_RANGE_HINT_EXT"/>
+ <enum name="EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT"/>
+ <enum name="EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT"/>
+ <enum name="EGL_ITU_REC601_EXT"/>
+ <enum name="EGL_ITU_REC709_EXT"/>
+ <enum name="EGL_ITU_REC2020_EXT"/>
+ <enum name="EGL_YUV_FULL_RANGE_EXT"/>
+ <enum name="EGL_YUV_NARROW_RANGE_EXT"/>
+ <enum name="EGL_YUV_CHROMA_SITING_0_EXT"/>
+ <enum name="EGL_YUV_CHROMA_SITING_0_5_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_dma_buf_import_modifiers" supported="egl">
+ <require>
+ <enum name="EGL_DMA_BUF_PLANE3_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_PITCH_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT"/>
+ <command name="eglQueryDmaBufFormatsEXT"/>
+ <command name="eglQueryDmaBufModifiersEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_gl_colorspace" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE"/>
+ <enum name="EGL_GL_COLORSPACE_DEFAULT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_multiview_window" supported="egl">
+ <require>
+ <enum name="EGL_MULTIVIEW_VIEW_COUNT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_output_base" supported="egl">
+ <require>
+ <type name="EGLOutputLayerEXT"/>
+ <type name="EGLOutputPortEXT"/>
+ <enum name="EGL_NO_OUTPUT_LAYER_EXT"/>
+ <enum name="EGL_NO_OUTPUT_PORT_EXT"/>
+ <enum name="EGL_BAD_OUTPUT_LAYER_EXT"/>
+ <enum name="EGL_BAD_OUTPUT_PORT_EXT"/>
+ <enum name="EGL_SWAP_INTERVAL_EXT"/>
+ <command name="eglGetOutputLayersEXT"/>
+ <command name="eglGetOutputPortsEXT"/>
+ <command name="eglOutputLayerAttribEXT"/>
+ <command name="eglQueryOutputLayerAttribEXT"/>
+ <command name="eglQueryOutputLayerStringEXT"/>
+ <command name="eglOutputPortAttribEXT"/>
+ <command name="eglQueryOutputPortAttribEXT"/>
+ <command name="eglQueryOutputPortStringEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_output_drm" supported="egl">
+ <require>
+ <enum name="EGL_DRM_CRTC_EXT"/>
+ <enum name="EGL_DRM_PLANE_EXT"/>
+ <enum name="EGL_DRM_CONNECTOR_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_output_openwf" supported="egl">
+ <require>
+ <enum name="EGL_OPENWF_PIPELINE_ID_EXT"/>
+ <enum name="EGL_OPENWF_PORT_ID_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_pixel_format_float" supported="egl">
+ <require>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_EXT"/>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_FIXED_EXT"/>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_base" supported="egl">
+ <require>
+ <command name="eglGetPlatformDisplayEXT"/>
+ <command name="eglCreatePlatformWindowSurfaceEXT"/>
+ <command name="eglCreatePlatformPixmapSurfaceEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_device" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_DEVICE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_wayland" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_WAYLAND_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_x11" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_X11_EXT"/>
+ <enum name="EGL_PLATFORM_X11_SCREEN_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_platform_xcb" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_XCB_EXT"/>
+ <enum name="EGL_PLATFORM_XCB_SCREEN_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_present_opaque" supported="egl">
+ <require>
+ <enum name="EGL_PRESENT_OPAQUE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_protected_content" supported="egl">
+ <require>
+ <enum name="EGL_PROTECTED_CONTENT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_protected_surface" supported="egl">
+ <require>
+ <enum name="EGL_PROTECTED_CONTENT_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_stream_consumer_egloutput" supported="egl">
+ <require>
+ <command name="eglStreamConsumerOutputEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_surface_SMPTE2086_metadata" supported="egl">
+ <require>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT"/>
+ <enum name="EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT"/>
+ <enum name="EGL_SMPTE2086_WHITE_POINT_X_EXT"/>
+ <enum name="EGL_SMPTE2086_WHITE_POINT_Y_EXT"/>
+ <enum name="EGL_SMPTE2086_MAX_LUMINANCE_EXT"/>
+ <enum name="EGL_SMPTE2086_MIN_LUMINANCE_EXT"/>
+ <enum name="EGL_METADATA_SCALING_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_swap_buffers_with_damage" supported="egl">
+ <require>
+ <command name="eglSwapBuffersWithDamageEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_sync_reuse" supported="egl">
+ <require>
+ <command name="eglUnsignalSyncEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_yuv_surface" supported="egl">
+ <require>
+ <enum name="EGL_YUV_ORDER_EXT"/>
+ <enum name="EGL_YUV_NUMBER_OF_PLANES_EXT"/>
+ <enum name="EGL_YUV_SUBSAMPLE_EXT"/>
+ <enum name="EGL_YUV_DEPTH_RANGE_EXT"/>
+ <enum name="EGL_YUV_CSC_STANDARD_EXT"/>
+ <enum name="EGL_YUV_PLANE_BPP_EXT"/>
+ <enum name="EGL_YUV_BUFFER_EXT"/>
+ <enum name="EGL_YUV_ORDER_YUV_EXT"/>
+ <enum name="EGL_YUV_ORDER_YVU_EXT"/>
+ <enum name="EGL_YUV_ORDER_YUYV_EXT"/>
+ <enum name="EGL_YUV_ORDER_UYVY_EXT"/>
+ <enum name="EGL_YUV_ORDER_YVYU_EXT"/>
+ <enum name="EGL_YUV_ORDER_VYUY_EXT"/>
+ <enum name="EGL_YUV_ORDER_AYUV_EXT"/>
+ <enum name="EGL_YUV_SUBSAMPLE_4_2_0_EXT"/>
+ <enum name="EGL_YUV_SUBSAMPLE_4_2_2_EXT"/>
+ <enum name="EGL_YUV_SUBSAMPLE_4_4_4_EXT"/>
+ <enum name="EGL_YUV_DEPTH_RANGE_LIMITED_EXT"/>
+ <enum name="EGL_YUV_DEPTH_RANGE_FULL_EXT"/>
+ <enum name="EGL_YUV_CSC_STANDARD_601_EXT"/>
+ <enum name="EGL_YUV_CSC_STANDARD_709_EXT"/>
+ <enum name="EGL_YUV_CSC_STANDARD_2020_EXT"/>
+ <enum name="EGL_YUV_PLANE_BPP_0_EXT"/>
+ <enum name="EGL_YUV_PLANE_BPP_8_EXT"/>
+ <enum name="EGL_YUV_PLANE_BPP_10_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_HI_clientpixmap" supported="egl">
+ <require>
+ <enum name="EGL_CLIENT_PIXMAP_POINTER_HI"/>
+ <command name="eglCreatePixmapSurfaceHI"/>
+ </require>
+ </extension>
+ <extension name="EGL_HI_colorformats" supported="egl">
+ <require>
+ <enum name="EGL_COLOR_FORMAT_HI"/>
+ <enum name="EGL_COLOR_RGB_HI"/>
+ <enum name="EGL_COLOR_RGBA_HI"/>
+ <enum name="EGL_COLOR_ARGB_HI"/>
+ </require>
+ </extension>
+ <extension name="EGL_IMG_context_priority" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_PRIORITY_LEVEL_IMG"/>
+ <enum name="EGL_CONTEXT_PRIORITY_HIGH_IMG"/>
+ <enum name="EGL_CONTEXT_PRIORITY_MEDIUM_IMG"/>
+ <enum name="EGL_CONTEXT_PRIORITY_LOW_IMG"/>
+ </require>
+ </extension>
+ <extension name="EGL_IMG_image_plane_attribs" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG"/>
+ <enum name="EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_cl_event" supported="egl">
+ <require>
+ <enum name="EGL_CL_EVENT_HANDLE_KHR"/>
+ <enum name="EGL_SYNC_CL_EVENT_KHR"/>
+ <enum name="EGL_SYNC_CL_EVENT_COMPLETE_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_cl_event2" supported="egl">
+ <require>
+ <enum name="EGL_CL_EVENT_HANDLE_KHR"/>
+ <enum name="EGL_SYNC_CL_EVENT_KHR"/>
+ <enum name="EGL_SYNC_CL_EVENT_COMPLETE_KHR"/>
+ <command name="eglCreateSync64KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_config_attribs" supported="egl">
+ <require>
+ <enum name="EGL_CONFORMANT_KHR"/>
+ <enum name="EGL_VG_COLORSPACE_LINEAR_BIT_KHR"/>
+ <enum name="EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_client_get_all_proc_addresses" supported="egl" comment="Alias of EGL_KHR_get_all_proc_addresses"/>
+ <extension name="EGL_KHR_context_flush_control" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR"/>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_KHR"/>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_create_context" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_MAJOR_VERSION_KHR"/>
+ <enum name="EGL_CONTEXT_MINOR_VERSION_KHR"/>
+ <enum name="EGL_CONTEXT_FLAGS_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR"/>
+ <enum name="EGL_NO_RESET_NOTIFICATION_KHR"/>
+ <enum name="EGL_LOSE_CONTEXT_ON_RESET_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR"/>
+ <enum name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR"/>
+ <enum name="EGL_OPENGL_ES3_BIT"/>
+ <enum name="EGL_OPENGL_ES3_BIT_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_create_context_no_error" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_OPENGL_NO_ERROR_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_debug" supported="egl">
+ <require>
+ <!-- Explicit dependencies require to get EGLDEBUGPROCKHR dependencies correct -->
+ <type name="EGLLabelKHR"/>
+ <type name="EGLObjectKHR"/>
+ <enum name="EGL_OBJECT_THREAD_KHR"/>
+ <enum name="EGL_OBJECT_DISPLAY_KHR"/>
+ <enum name="EGL_OBJECT_CONTEXT_KHR"/>
+ <enum name="EGL_OBJECT_SURFACE_KHR"/>
+ <enum name="EGL_OBJECT_IMAGE_KHR"/>
+ <enum name="EGL_OBJECT_SYNC_KHR"/>
+ <enum name="EGL_OBJECT_STREAM_KHR"/>
+ <enum name="EGL_DEBUG_MSG_CRITICAL_KHR"/>
+ <enum name="EGL_DEBUG_MSG_ERROR_KHR"/>
+ <enum name="EGL_DEBUG_MSG_WARN_KHR"/>
+ <enum name="EGL_DEBUG_MSG_INFO_KHR"/>
+ <enum name="EGL_DEBUG_CALLBACK_KHR"/>
+ <command name="eglDebugMessageControlKHR"/>
+ <command name="eglQueryDebugKHR"/>
+ <command name="eglLabelObjectKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_display_reference" supported="egl">
+ <require>
+ <enum name="EGL_TRACK_REFERENCES_KHR"/>
+ <command name="eglQueryDisplayAttribKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_fence_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <!-- Most interfaces also defined by EGL_KHR_reusable sync -->
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR"/>
+ <enum name="EGL_SYNC_CONDITION_KHR"/>
+ <enum name="EGL_SYNC_FENCE_KHR"/>
+ <command name="eglCreateSyncKHR"/>
+ <command name="eglDestroySyncKHR"/>
+ <command name="eglClientWaitSyncKHR"/>
+ <command name="eglGetSyncAttribKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_get_all_proc_addresses" supported="egl"/>
+ <extension name="EGL_KHR_gl_colorspace" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_KHR"/>
+ <enum name="EGL_GL_COLORSPACE_SRGB_KHR"/>
+ <enum name="EGL_GL_COLORSPACE_LINEAR_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_gl_renderbuffer_image" supported="egl">
+ <require>
+ <enum name="EGL_GL_RENDERBUFFER_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_gl_texture_2D_image" supported="egl">
+ <require>
+ <enum name="EGL_GL_TEXTURE_2D_KHR"/>
+ <enum name="EGL_GL_TEXTURE_LEVEL_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_gl_texture_3D_image" supported="egl">
+ <require>
+ <enum name="EGL_GL_TEXTURE_3D_KHR"/>
+ <enum name="EGL_GL_TEXTURE_ZOFFSET_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_gl_texture_cubemap_image" supported="egl">
+ <require>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR"/>
+ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_image" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_PIXMAP_KHR"/>
+ <enum name="EGL_NO_IMAGE_KHR"/>
+ <command name="eglCreateImageKHR"/>
+ <command name="eglDestroyImageKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_image_base" supported="egl">
+ <require>
+ <enum name="EGL_IMAGE_PRESERVED_KHR"/>
+ <enum name="EGL_NO_IMAGE_KHR"/>
+ <command name="eglCreateImageKHR"/>
+ <command name="eglDestroyImageKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_image_pixmap" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_PIXMAP_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_lock_surface" supported="egl">
+ <require>
+ <enum name="EGL_READ_SURFACE_BIT_KHR"/>
+ <enum name="EGL_WRITE_SURFACE_BIT_KHR"/>
+ <enum name="EGL_LOCK_SURFACE_BIT_KHR"/>
+ <enum name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
+ <enum name="EGL_MATCH_FORMAT_KHR"/>
+ <enum name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
+ <enum name="EGL_FORMAT_RGB_565_KHR"/>
+ <enum name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
+ <enum name="EGL_FORMAT_RGBA_8888_KHR"/>
+ <enum name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
+ <enum name="EGL_LOCK_USAGE_HINT_KHR"/>
+ <enum name="EGL_BITMAP_POINTER_KHR"/>
+ <enum name="EGL_BITMAP_PITCH_KHR"/>
+ <enum name="EGL_BITMAP_ORIGIN_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
+ <enum name="EGL_LOWER_LEFT_KHR"/>
+ <enum name="EGL_UPPER_LEFT_KHR"/>
+ <command name="eglLockSurfaceKHR"/>
+ <command name="eglUnlockSurfaceKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_lock_surface2" supported="egl">
+ <require>
+ <enum name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_lock_surface3" supported="egl">
+ <require>
+ <enum name="EGL_READ_SURFACE_BIT_KHR"/>
+ <enum name="EGL_WRITE_SURFACE_BIT_KHR"/>
+ <enum name="EGL_LOCK_SURFACE_BIT_KHR"/>
+ <enum name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
+ <enum name="EGL_MATCH_FORMAT_KHR"/>
+ <enum name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
+ <enum name="EGL_FORMAT_RGB_565_KHR"/>
+ <enum name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
+ <enum name="EGL_FORMAT_RGBA_8888_KHR"/>
+ <enum name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
+ <enum name="EGL_LOCK_USAGE_HINT_KHR"/>
+ <enum name="EGL_BITMAP_PITCH_KHR"/>
+ <enum name="EGL_BITMAP_ORIGIN_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
+ <enum name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
+ <enum name="EGL_BITMAP_POINTER_KHR"/>
+ <enum name="EGL_LOWER_LEFT_KHR"/>
+ <enum name="EGL_UPPER_LEFT_KHR"/>
+ <command name="eglLockSurfaceKHR"/>
+ <command name="eglUnlockSurfaceKHR"/>
+ <command name="eglQuerySurface64KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_mutable_render_buffer" supported="egl">
+ <require>
+ <enum name="EGL_MUTABLE_RENDER_BUFFER_BIT_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_no_config_context" supported="egl">
+ <require>
+ <enum name="EGL_NO_CONFIG_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_partial_update" supported="egl">
+ <require>
+ <enum name="EGL_BUFFER_AGE_KHR"/>
+ <command name="eglSetDamageRegionKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_platform_android" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_ANDROID_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_platform_gbm" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_GBM_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_platform_wayland" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_WAYLAND_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_platform_x11" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_X11_KHR"/>
+ <enum name="EGL_PLATFORM_X11_SCREEN_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_reusable_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_STATUS_KHR"/>
+ <enum name="EGL_SIGNALED_KHR"/>
+ <enum name="EGL_UNSIGNALED_KHR"/>
+ <enum name="EGL_TIMEOUT_EXPIRED_KHR"/>
+ <enum name="EGL_CONDITION_SATISFIED_KHR"/>
+ <enum name="EGL_SYNC_TYPE_KHR"/>
+ <enum name="EGL_SYNC_REUSABLE_KHR"/>
+ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT_KHR"/>
+ <enum name="EGL_FOREVER_KHR"/>
+ <enum name="EGL_NO_SYNC_KHR"/>
+ <command name="eglCreateSyncKHR"/>
+ <command name="eglDestroySyncKHR"/>
+ <command name="eglClientWaitSyncKHR"/>
+ <command name="eglSignalSyncKHR"/>
+ <command name="eglGetSyncAttribKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_NO_STREAM_KHR"/>
+ <enum name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
+ <enum name="EGL_PRODUCER_FRAME_KHR"/>
+ <enum name="EGL_CONSUMER_FRAME_KHR"/>
+ <enum name="EGL_STREAM_STATE_KHR"/>
+ <enum name="EGL_STREAM_STATE_CREATED_KHR"/>
+ <enum name="EGL_STREAM_STATE_CONNECTING_KHR"/>
+ <enum name="EGL_STREAM_STATE_EMPTY_KHR"/>
+ <enum name="EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR"/>
+ <enum name="EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR"/>
+ <enum name="EGL_STREAM_STATE_DISCONNECTED_KHR"/>
+ <enum name="EGL_BAD_STREAM_KHR"/>
+ <enum name="EGL_BAD_STATE_KHR"/>
+ <command name="eglCreateStreamKHR"/>
+ <command name="eglDestroyStreamKHR"/>
+ <command name="eglStreamAttribKHR"/>
+ <command name="eglQueryStreamKHR"/>
+ <command name="eglQueryStreamu64KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_attrib" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
+ <enum name="EGL_STREAM_STATE_KHR"/>
+ <enum name="EGL_STREAM_STATE_CREATED_KHR"/>
+ <enum name="EGL_STREAM_STATE_CONNECTING_KHR"/>
+ <command name="eglCreateStreamAttribKHR"/>
+ <command name="eglSetStreamAttribKHR"/>
+ <command name="eglQueryStreamAttribKHR"/>
+ <command name="eglStreamConsumerAcquireAttribKHR"/>
+ <command name="eglStreamConsumerReleaseAttribKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_consumer_gltexture" protect="EGL_KHR_stream" supported="egl">
+ <require>
+ <enum name="EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR"/>
+ <command name="eglStreamConsumerGLTextureExternalKHR"/>
+ <command name="eglStreamConsumerAcquireKHR"/>
+ <command name="eglStreamConsumerReleaseKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_cross_process_fd" protect="EGL_KHR_stream" supported="egl">
+ <require>
+ <enum name="EGL_NO_FILE_DESCRIPTOR_KHR"/>
+ <command name="eglGetStreamFileDescriptorKHR"/>
+ <command name="eglCreateStreamFromFileDescriptorKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_fifo" protect="EGL_KHR_stream" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_FIFO_LENGTH_KHR"/>
+ <enum name="EGL_STREAM_TIME_NOW_KHR"/>
+ <enum name="EGL_STREAM_TIME_CONSUMER_KHR"/>
+ <enum name="EGL_STREAM_TIME_PRODUCER_KHR"/>
+ <command name="eglQueryStreamTimeKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_stream_producer_aldatalocator" protect="EGL_KHR_stream" supported="egl"/>
+ <extension name="EGL_KHR_stream_producer_eglsurface" protect="EGL_KHR_stream" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_BIT_KHR"/>
+ <command name="eglCreateStreamProducerSurfaceKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_surfaceless_context" supported="egl" comment="Just relaxes an error condition"/>
+ <extension name="EGL_KHR_swap_buffers_with_damage" supported="egl">
+ <require>
+ <command name="eglSwapBuffersWithDamageKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_vg_parent_image" supported="egl">
+ <require>
+ <enum name="EGL_VG_PARENT_IMAGE_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_wait_sync" supported="egl">
+ <require>
+ <command name="eglWaitSyncKHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_drm_image" supported="egl">
+ <require>
+ <enum name="EGL_DRM_BUFFER_FORMAT_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_MESA"/>
+ <enum name="EGL_DRM_BUFFER_FORMAT_ARGB32_MESA"/>
+ <enum name="EGL_DRM_BUFFER_MESA"/>
+ <enum name="EGL_DRM_BUFFER_STRIDE_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_SCANOUT_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_SHARE_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_CURSOR_MESA"/>
+ <command name="eglCreateDRMImageMESA"/>
+ <command name="eglExportDRMImageMESA"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_image_dma_buf_export" supported="egl">
+ <require>
+ <type name="EGLuint64KHR"/>
+ <command name="eglExportDMABUFImageQueryMESA"/>
+ <command name="eglExportDMABUFImageMESA"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_platform_gbm" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_GBM_MESA"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_platform_surfaceless" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_SURFACELESS_MESA"/>
+ </require>
+ </extension>
+ <extension name="EGL_MESA_query_driver" supported="egl">
+ <require>
+ <command name="eglGetDisplayDriverConfig"/>
+ <command name="eglGetDisplayDriverName"/>
+ </require>
+ </extension>
+ <extension name="EGL_NOK_swap_region" supported="egl">
+ <require>
+ <command name="eglSwapBuffersRegionNOK"/>
+ </require>
+ </extension>
+ <extension name="EGL_NOK_swap_region2" supported="egl">
+ <require>
+ <command name="eglSwapBuffersRegion2NOK"/>
+ </require>
+ </extension>
+ <extension name="EGL_NOK_texture_from_pixmap" supported="egl">
+ <require>
+ <enum name="EGL_Y_INVERTED_NOK"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_3dvision_surface" supported="egl">
+ <require>
+ <enum name="EGL_AUTO_STEREO_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_coverage_sample" supported="egl">
+ <require>
+ <enum name="EGL_COVERAGE_BUFFERS_NV"/>
+ <enum name="EGL_COVERAGE_SAMPLES_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_context_priority_realtime" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_PRIORITY_REALTIME_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_coverage_sample_resolve" supported="egl">
+ <require>
+ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_NV"/>
+ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV"/>
+ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_cuda_event" supported="egl">
+ <require>
+ <enum name="EGL_CUDA_EVENT_HANDLE_NV"/>
+ <enum name="EGL_SYNC_CUDA_EVENT_NV"/>
+ <enum name="EGL_SYNC_CUDA_EVENT_COMPLETE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_depth_nonlinear" supported="egl">
+ <require>
+ <enum name="EGL_DEPTH_ENCODING_NV"/>
+ <enum name="EGL_DEPTH_ENCODING_NONE_NV"/>
+ <enum name="EGL_DEPTH_ENCODING_NONLINEAR_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_device_cuda" supported="egl">
+ <require>
+ <enum name="EGL_CUDA_DEVICE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_native_query" supported="egl">
+ <require>
+ <command name="eglQueryNativeDisplayNV"/>
+ <command name="eglQueryNativeWindowNV"/>
+ <command name="eglQueryNativePixmapNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_post_convert_rounding" supported="egl">
+ <require>
+ </require>
+ </extension>
+ <extension name="EGL_NV_post_sub_buffer" supported="egl">
+ <require>
+ <enum name="EGL_POST_SUB_BUFFER_SUPPORTED_NV"/>
+ <command name="eglPostSubBufferNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_quadruple_buffer" supported="egl">
+ <require>
+ <enum name="EGL_QUADRUPLE_BUFFER_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_robustness_video_memory_purge" supported="egl">
+ <require>
+ <enum name="EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_consumer_gltexture_yuv" supported="egl">
+ <require>
+ <enum name="EGL_YUV_PLANE0_TEXTURE_UNIT_NV"/>
+ <enum name="EGL_YUV_PLANE1_TEXTURE_UNIT_NV"/>
+ <enum name="EGL_YUV_PLANE2_TEXTURE_UNIT_NV"/>
+ <enum name="EGL_YUV_NUMBER_OF_PLANES_EXT"/>
+ <enum name="EGL_YUV_BUFFER_EXT"/>
+ <command name="eglStreamConsumerGLTextureExternalAttribsNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_object" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_OBJECT_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_display" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_DISPLAY_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_partition" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_PARTITION_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_process" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_PROCESS_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_system" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_SYSTEM_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_dma" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_DMA_NV"/>
+ <enum name="EGL_STREAM_DMA_SERVER_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_consumer_eglimage" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CONSUMER_IMAGE_NV"/>
+ <enum name="EGL_STREAM_IMAGE_ADD_NV"/>
+ <enum name="EGL_STREAM_IMAGE_REMOVE_NV"/>
+ <enum name="EGL_STREAM_IMAGE_AVAILABLE_NV"/>
+ <command name="eglStreamImageConsumerConnectNV"/>
+ <command name="eglQueryStreamConsumerEventNV"/>
+ <command name="eglStreamAcquireImageNV"/>
+ <command name="eglStreamReleaseImageNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_fifo_next" supported="egl">
+ <require>
+ <enum name="EGL_PENDING_FRAME_NV"/>
+ <enum name="EGL_STREAM_TIME_PENDING_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_fifo_synchronous" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_FIFO_SYNCHRONOUS_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_flush" supported="egl">
+ <require>
+ <command name="eglStreamFlushNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_frame_limits" supported="egl">
+ <require>
+ <enum name="EGL_PRODUCER_MAX_FRAME_HINT_NV"/>
+ <enum name="EGL_CONSUMER_MAX_FRAME_HINT_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_metadata" supported="egl">
+ <require>
+ <enum name="EGL_MAX_STREAM_METADATA_BLOCKS_NV"/>
+ <enum name="EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV"/>
+ <enum name="EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV"/>
+ <enum name="EGL_PRODUCER_METADATA_NV"/>
+ <enum name="EGL_CONSUMER_METADATA_NV"/>
+ <enum name="EGL_PENDING_METADATA_NV"/>
+ <enum name="EGL_METADATA0_SIZE_NV"/>
+ <enum name="EGL_METADATA1_SIZE_NV"/>
+ <enum name="EGL_METADATA2_SIZE_NV"/>
+ <enum name="EGL_METADATA3_SIZE_NV"/>
+ <enum name="EGL_METADATA0_TYPE_NV"/>
+ <enum name="EGL_METADATA1_TYPE_NV"/>
+ <enum name="EGL_METADATA2_TYPE_NV"/>
+ <enum name="EGL_METADATA3_TYPE_NV"/>
+ <command name="eglQueryDisplayAttribNV"/>
+ <command name="eglSetStreamMetadataNV"/>
+ <command name="eglQueryStreamMetadataNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_reset" supported="egl">
+ <require>
+ <enum name="EGL_SUPPORT_RESET_NV"/>
+ <enum name="EGL_SUPPORT_REUSE_NV"/>
+ <command name="eglResetStreamNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_remote" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_STATE_INITIALIZING_NV"/>
+ <enum name="EGL_STREAM_TYPE_NV"/>
+ <enum name="EGL_STREAM_PROTOCOL_NV"/>
+ <enum name="EGL_STREAM_ENDPOINT_NV"/>
+ <enum name="EGL_STREAM_LOCAL_NV"/>
+ <enum name="EGL_STREAM_PRODUCER_NV"/>
+ <enum name="EGL_STREAM_CONSUMER_NV"/>
+ </require>
+ <require comment="Supported only if EGL_KHR_stream_cross_process_fd is supported">
+ <enum name="EGL_STREAM_PROTOCOL_FD_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_PROTOCOL_SOCKET_NV"/>
+ <enum name="EGL_SOCKET_HANDLE_NV"/>
+ <enum name="EGL_SOCKET_TYPE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket_inet" supported="egl">
+ <require>
+ <enum name="EGL_SOCKET_TYPE_INET_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket_unix" supported="egl">
+ <require>
+ <enum name="EGL_SOCKET_TYPE_UNIX_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_TYPE_KHR"/>
+ <enum name="EGL_SYNC_NEW_FRAME_NV"/>
+ <command name="eglCreateStreamSyncNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV"/>
+ <enum name="EGL_SYNC_STATUS_NV"/>
+ <enum name="EGL_SIGNALED_NV"/>
+ <enum name="EGL_UNSIGNALED_NV"/>
+ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT_NV"/>
+ <enum name="EGL_FOREVER_NV"/>
+ <enum name="EGL_ALREADY_SIGNALED_NV"/>
+ <enum name="EGL_TIMEOUT_EXPIRED_NV"/>
+ <enum name="EGL_CONDITION_SATISFIED_NV"/>
+ <enum name="EGL_SYNC_TYPE_NV"/>
+ <enum name="EGL_SYNC_CONDITION_NV"/>
+ <enum name="EGL_SYNC_FENCE_NV"/>
+ <enum name="EGL_NO_SYNC_NV"/>
+ <command name="eglCreateFenceSyncNV"/>
+ <command name="eglDestroySyncNV"/>
+ <command name="eglFenceNV"/>
+ <command name="eglClientWaitSyncNV"/>
+ <command name="eglSignalSyncNV"/>
+ <command name="eglGetSyncAttribNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_system_time" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <command name="eglGetSystemTimeFrequencyNV"/>
+ <command name="eglGetSystemTimeNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_triple_buffer" supported="egl">
+ <require>
+ <enum name="EGL_TRIPLE_BUFFER_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_TIZEN_image_native_buffer" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_TIZEN"/>
+ </require>
+ </extension>
+ <extension name="EGL_TIZEN_image_native_surface" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_SURFACE_TIZEN"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_compositor" supported="egl">
+ <require>
+ <enum name="EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT"/>
+ <enum name="EGL_EXTERNAL_REF_ID_EXT"/>
+ <enum name="EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT"/>
+ <enum name="EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT"/>
+
+ <command name="eglCompositorSetContextListEXT"/>
+ <command name="eglCompositorSetContextAttributesEXT"/>
+ <command name="eglCompositorSetWindowListEXT"/>
+ <command name="eglCompositorSetWindowAttributesEXT"/>
+ <command name="eglCompositorBindTexWindowEXT"/>
+ <command name="eglCompositorSetSizeEXT"/>
+ <command name="eglCompositorSwapPolicyEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_surface_CTA861_3_metadata" supported="egl">
+ <require>
+ <enum name="EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT"/>
+ <enum name="EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_surface_compression" supported="egl">
+ <require>
+ <enum name="EGL_SURFACE_COMPRESSION_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_PLANE1_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_PLANE2_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT"/>
+ <enum name="EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT"/>
+ <command name="eglQuerySupportedCompressionRatesEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_implicit_sync_control" supported="egl">
+ <require>
+ <enum name="EGL_IMPORT_SYNC_TYPE_EXT"/>
+ <enum name="EGL_IMPORT_IMPLICIT_SYNC_EXT"/>
+ <enum name="EGL_IMPORT_EXPLICIT_SYNC_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_bind_to_front" supported="egl">
+ <require>
+ <enum name="EGL_FRONT_BUFFER_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_origin" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_FRAME_ORIGIN_X_NV"/>
+ <enum name="EGL_STREAM_FRAME_ORIGIN_Y_NV"/>
+ <enum name="EGL_STREAM_FRAME_MAJOR_AXIS_NV"/>
+ <enum name="EGL_CONSUMER_AUTO_ORIENTATION_NV"/>
+ <enum name="EGL_PRODUCER_AUTO_ORIENTATION_NV"/>
+ <enum name="EGL_LEFT_NV"/>
+ <enum name="EGL_RIGHT_NV"/>
+ <enum name="EGL_TOP_NV"/>
+ <enum name="EGL_BOTTOM_NV"/>
+ <enum name="EGL_X_AXIS_NV"/>
+ <enum name="EGL_Y_AXIS_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_WL_bind_wayland_display" supported="egl">
+ <require>
+ <enum name="EGL_WAYLAND_BUFFER_WL"/>
+ <enum name="EGL_WAYLAND_PLANE_WL"/>
+ <enum name="EGL_TEXTURE_Y_U_V_WL"/>
+ <enum name="EGL_TEXTURE_Y_UV_WL"/>
+ <enum name="EGL_TEXTURE_Y_XUXV_WL"/>
+ <enum name="EGL_TEXTURE_EXTERNAL_WL"/>
+ <enum name="EGL_WAYLAND_Y_INVERTED_WL"/>
+
+ <command name="eglBindWaylandDisplayWL"/>
+ <command name="eglUnbindWaylandDisplayWL"/>
+ <command name="eglQueryWaylandBufferWL"/>
+ <type name="PFNEGLBINDWAYLANDDISPLAYWL"/>
+ <type name="PFNEGLUNBINDWAYLANDDISPLAYWL"/>
+ <type name="PFNEGLQUERYWAYLANDBUFFERWL"/>
+ </require>
+ </extension>
+ <extension name="EGL_WL_create_wayland_buffer_from_image" supported="egl">
+ <require>
+ <command name="eglCreateWaylandBufferFromImageWL"/>
+ <type name="PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL"/>
+ </require>
+ </extension>
+ <extension name="EGL_ARM_image_format" supported="egl">
+ <require>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM"/>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_query_name" supported="egl">
+ <require>
+ <enum name="EGL_RENDERER_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_persistent_id" supported="egl">
+ <require>
+ <enum name="EGL_DEVICE_UUID_EXT"/>
+ <enum name="EGL_DRIVER_UUID_EXT"/>
+ <enum name="EGL_DRIVER_NAME_EXT"/>
+ <command name="eglQueryDeviceBinaryEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_device_drm_render_node" supported="egl">
+ <require>
+ <enum name="EGL_DRM_RENDER_NODE_FILE_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_explicit_device" supported="egl">
+ <require>
+ <enum name="EGL_DEVICE_EXT"/>
+ </require>
+ </extension>
+ </extensions>
+</registry>
diff --git a/glew/auto/EGL-Registry/api/egltest.c b/glew/auto/EGL-Registry/api/egltest.c
new file mode 100644
index 0000000..cf3fe56
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/egltest.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2013-2020 The Khronos Group Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/* Simple test that generated EGL headers compile with C and C++ */
+#include "EGL/egl.h"
+#include "EGL/eglext.h"
diff --git a/glew/auto/EGL-Registry/api/genheaders.py b/glew/auto/EGL-Registry/api/genheaders.py
new file mode 100644
index 0000000..ce15d6d
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/genheaders.py
@@ -0,0 +1,619 @@
+#!/usr/bin/python -i
+#
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+import sys, time, pdb, string, cProfile
+from reg import *
+
+# debug - start header generation in debugger
+# dump - dump registry after loading
+# profile - enable Python profiling
+# protect - whether to use #ifndef protections
+# registry <filename> - use specified XML registry instead of gl.xml
+# target - string name of target header, or all targets if None
+# timeit - time length of registry loading & header generation
+# validate - validate return & parameter group tags against <group>
+debug = False
+dump = False
+profile = False
+protect = True
+target = None
+timeit = False
+validate= False
+# Default input / log files
+errFilename = None
+diagFilename = 'diag.txt'
+regFilename = 'gl.xml'
+
+
+# Simple timer functions
+startTime = None
+def startTimer():
+ global startTime
+ startTime = time.process_time()
+def endTimer(msg):
+ global startTime
+ endTime = time.process_time()
+ if (timeit):
+ write(msg, endTime - startTime)
+ startTime = None
+
+# Turn a list of strings into a regexp string matching exactly those strings
+def makeREstring(list):
+ return '^(' + '|'.join(list) + ')$'
+
+# These are "mandatory" OpenGL ES 1 extensions, to
+# be included in the core GLES/gl.h header.
+es1CoreList = [
+ 'GL_OES_read_format',
+ 'GL_OES_compressed_paletted_texture',
+ 'GL_OES_point_size_array',
+ 'GL_OES_point_sprite'
+]
+
+# Descriptive names for various regexp patterns used to select
+# versions and extensions
+
+allVersions = allExtensions = '.*'
+noVersions = noExtensions = None
+gl12andLaterPat = '1\.[2-9]|[234]\.[0-9]'
+gles2onlyPat = '2\.[0-9]'
+gles2through30Pat = '2\.[0-9]|3\.0'
+gles2through31Pat = '2\.[0-9]|3\.[01]'
+gles2through32Pat = '2\.[0-9]|3\.[012]'
+es1CorePat = makeREstring(es1CoreList)
+# Extensions in old glcorearb.h but not yet tagged accordingly in gl.xml
+glCoreARBPat = None
+glx13andLaterPat = '1\.[3-9]'
+
+# Copyright text prefixing all headers (list of strings).
+prefixStrings = [
+ '/*',
+ '** Copyright 2013-2020 The Khronos Group Inc.',
+ '** SPDX-' + 'License-Identifier: Apache-2.0',
+ '**',
+ '** This header is generated from the Khronos EGL XML API Registry.',
+ '** The current version of the Registry, generator scripts',
+ '** used to make the header, and the header can be found at',
+ '** http://www.khronos.org/registry/egl',
+ '**',
+ '** Khronos $' + 'Revision$ on $' + 'Date$',
+ '*/',
+ ''
+]
+
+# glext.h / glcorearb.h define calling conventions inline (no GL *platform.h)
+glExtPlatformStrings = [
+ '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)',
+ '#ifndef WIN32_LEAN_AND_MEAN',
+ '#define WIN32_LEAN_AND_MEAN 1',
+ '#endif',
+ '#include <windows.h>',
+ '#endif',
+ '',
+ '#ifndef APIENTRY',
+ '#define APIENTRY',
+ '#endif',
+ '#ifndef APIENTRYP',
+ '#define APIENTRYP APIENTRY *',
+ '#endif',
+ '#ifndef GLAPI',
+ '#define GLAPI extern',
+ '#endif',
+ ''
+]
+
+glCorearbPlatformStrings = glExtPlatformStrings + [
+ '/* glcorearb.h is for use with OpenGL core profile implementations.',
+ '** It should should be placed in the same directory as gl.h and',
+ '** included as <GL/glcorearb.h>.',
+ '**',
+ '** glcorearb.h includes only APIs in the latest OpenGL core profile',
+ '** implementation together with APIs in newer ARB extensions which ',
+ '** can be supported by the core profile. It does not, and never will',
+ '** include functionality removed from the core profile, such as',
+ '** fixed-function vertex and fragment processing.',
+ '**',
+ '** Do not #include both <GL/glcorearb.h> and either of <GL/gl.h> or',
+ '** <GL/glext.h> in the same source file.',
+ '*/',
+ ''
+]
+
+# wglext.h needs Windows include
+wglPlatformStrings = [
+ '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)',
+ '#define WIN32_LEAN_AND_MEAN 1',
+ '#include <windows.h>',
+ '#endif',
+ '',
+]
+
+# Different APIs use different *platform.h files to define calling
+# conventions
+gles1PlatformStrings = [ '#include <GLES/glplatform.h>', '' ]
+gles2PlatformStrings = [ '#include <GLES2/gl2platform.h>', '' ]
+gles3PlatformStrings = [ '#include <GLES3/gl3platform.h>', '' ]
+glsc2PlatformStrings = [ '#include <GLSC2/gl2platform.h>', '' ]
+eglPlatformStrings = [ '#include <EGL/eglplatform.h>', '' ]
+
+# GLES headers have a small addition to calling convention headers for function pointer typedefs
+apiEntryPrefixStrings = [
+ '#ifndef GL_APIENTRYP',
+ '#define GL_APIENTRYP GL_APIENTRY*',
+ '#endif',
+ ''
+]
+
+# GLES 2/3 core API headers use a different protection mechanism for
+# prototypes, per bug 14206.
+glesProtoPrefixStrings = [
+ '#ifndef GL_GLES_PROTOTYPES',
+ '#define GL_GLES_PROTOTYPES 1',
+ '#endif',
+ ''
+]
+
+# EGL headers use a protection mechanism similar to GLES.
+eglProtoPrefixStrings = [
+ '#ifndef EGL_EGL_PROTOTYPES',
+ '#define EGL_EGL_PROTOTYPES 1',
+ '#endif',
+ ''
+]
+
+# Insert generation date in a comment for headers not having *GLEXT_VERSION macros
+genDateCommentString = [
+ format('/* Generated on date %s */' % time.strftime('%Y%m%d')),
+ ''
+]
+
+# GL_GLEXT_VERSION is defined only in glext.h
+glextVersionStrings = [
+ format('#define GL_GLEXT_VERSION %s' % time.strftime('%Y%m%d')),
+ ''
+]
+# WGL_WGLEXT_VERSION is defined only in wglext.h
+wglextVersionStrings = [
+ format('#define WGL_WGLEXT_VERSION %s' % time.strftime('%Y%m%d')),
+ ''
+]
+# GLX_GLXEXT_VERSION is defined only in glxext.h
+glxextVersionStrings = [
+ format('#define GLX_GLXEXT_VERSION %s' % time.strftime('%Y%m%d')),
+ ''
+]
+# EGL_EGLEXT_VERSION is defined only in eglext.h
+eglextVersionStrings = [
+ format('#define EGL_EGLEXT_VERSION %s' % time.strftime('%Y%m%d')),
+ ''
+]
+
+# Defaults for generating re-inclusion protection wrappers (or not)
+protectFile = protect
+protectFeature = protect
+protectProto = protect
+
+buildList = [
+ # GL API 1.2+ + extensions - GL/glext.h
+ CGeneratorOptions(
+ filename = 'GL/glext.h',
+ apiname = 'gl',
+ profile = 'compatibility',
+ versions = allVersions,
+ emitversions = gl12andLaterPat,
+ defaultExtensions = 'gl', # Default extensions for GL
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + glExtPlatformStrings + glextVersionStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GLAPI ',
+ apientry = 'APIENTRY ',
+ apientryp = 'APIENTRYP '),
+ # GL core profile + extensions - GL/glcorearb.h
+ CGeneratorOptions(
+ filename = 'GL/glcorearb.h',
+ apiname = 'gl',
+ profile = 'core',
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = 'glcore', # Default extensions for GL core profile (only)
+ addExtensions = glCoreARBPat,
+ removeExtensions = None,
+ prefixText = prefixStrings + glCorearbPlatformStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GLAPI ',
+ apientry = 'APIENTRY ',
+ apientryp = 'APIENTRYP '),
+ # GLES 1.x API + mandatory extensions - GLES/gl.h (no function pointers)
+ CGeneratorOptions(
+ filename = 'GLES/gl.h',
+ apiname = 'gles1',
+ profile = 'common',
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = es1CorePat, # Add mandatory ES1 extensions in GLES1/gl.h
+ removeExtensions = None,
+ prefixText = prefixStrings + gles1PlatformStrings + genDateCommentString,
+ genFuncPointers = False,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = False, # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_API ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 1.x extensions - GLES/glext.h
+ CGeneratorOptions(
+ filename = 'GLES/glext.h',
+ apiname = 'gles1',
+ profile = 'common',
+ versions = allVersions,
+ emitversions = noVersions,
+ defaultExtensions = 'gles1', # Default extensions for GLES 1
+ addExtensions = None,
+ removeExtensions = es1CorePat, # Remove mandatory ES1 extensions in GLES1/glext.h
+ prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_API ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 2.0 API - GLES2/gl2.h (now with function pointers)
+ CGeneratorOptions(
+ filename = 'GLES2/gl2.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2onlyPat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + gles2PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero', # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLES_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 3.1 / 3.0 / 2.0 extensions - GLES2/gl2ext.h
+ CGeneratorOptions(
+ filename = 'GLES2/gl2ext.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2onlyPat,
+ emitversions = None,
+ defaultExtensions = 'gles2', # Default extensions for GLES 2
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 3.2 API - GLES3/gl32.h (now with function pointers)
+ CGeneratorOptions(
+ filename = 'GLES3/gl32.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2through32Pat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero', # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLES_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 3.1 API - GLES3/gl31.h (now with function pointers)
+ CGeneratorOptions(
+ filename = 'GLES3/gl31.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2through31Pat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero', # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLES_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLES 3.0 API - GLES3/gl3.h (now with function pointers)
+ CGeneratorOptions(
+ filename = 'GLES3/gl3.h',
+ apiname = 'gles2',
+ profile = 'common',
+ versions = gles2through30Pat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero', # Core ES API functions are in the static link libraries
+ protectProtoStr = 'GL_GLES_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLSC 2.0 API - GLSC2/glsc2.h
+ CGeneratorOptions(
+ filename = 'GLSC2/glsc2.h',
+ apiname = 'glsc2',
+ profile = 'common',
+ versions = gles2onlyPat,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + glsc2PlatformStrings + apiEntryPrefixStrings + genDateCommentString,
+ genFuncPointers = False,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = False,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # GLSC 2.0 extensions - GLSC2/gl2ext.h
+ CGeneratorOptions(
+ filename = 'GLSC2/glsc2ext.h',
+ apiname = 'glsc2',
+ profile = 'common',
+ versions = gles2onlyPat,
+ emitversions = None,
+ defaultExtensions = 'glsc2', # Default extensions for GLSC 2
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString,
+ genFuncPointers = False,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = False,
+ protectProtoStr = 'GL_GLEXT_PROTOTYPES',
+ apicall = 'GL_APICALL ',
+ apientry = 'GL_APIENTRY ',
+ apientryp = 'GL_APIENTRYP '),
+ # EGL API - EGL/egl.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'EGL/egl.h',
+ apiname = 'egl',
+ profile = None,
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + eglPlatformStrings + eglProtoPrefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = 'nonzero',
+ protectProtoStr = 'EGL_EGL_PROTOTYPES',
+ apicall = 'EGLAPI ',
+ apientry = 'EGLAPIENTRY ',
+ apientryp = 'EGLAPIENTRYP '),
+ # EGL extensions - EGL/eglext.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'EGL/eglext.h',
+ apiname = 'egl',
+ profile = None,
+ versions = allVersions,
+ emitversions = None,
+ defaultExtensions = 'egl', # Default extensions for EGL
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + eglPlatformStrings + eglextVersionStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'EGL_EGLEXT_PROTOTYPES',
+ apicall = 'EGLAPI ',
+ apientry = 'EGLAPIENTRY ',
+ apientryp = 'EGLAPIENTRYP '),
+ # GLX 1.* API - GL/glx.h
+ CGeneratorOptions(
+ filename = 'GL/glx.h',
+ apiname = 'glx',
+ profile = None,
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = None, # No default extensions
+ addExtensions = None,
+ removeExtensions = None,
+ # add glXPlatformStrings?
+ prefixText = prefixStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GLX_GLXEXT_PROTOTYPES',
+ apicall = '',
+ apientry = '',
+ apientryp = ' *'),
+ # GLX 1.3+ API + extensions - GL/glxext.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'GL/glxext.h',
+ apiname = 'glx',
+ profile = None,
+ versions = allVersions,
+ emitversions = glx13andLaterPat,
+ defaultExtensions = 'glx', # Default extensions for GLX
+ addExtensions = None,
+ removeExtensions = None,
+ # add glXPlatformStrings?
+ prefixText = prefixStrings + glxextVersionStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'GLX_GLXEXT_PROTOTYPES',
+ apicall = '',
+ apientry = '',
+ apientryp = ' *'),
+ # WGL API + extensions - GL/wgl.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'GL/wgl.h',
+ apiname = 'wgl',
+ profile = None,
+ versions = allVersions,
+ emitversions = allVersions,
+ defaultExtensions = 'wgl', # Default extensions for WGL
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + wglPlatformStrings + genDateCommentString,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'WGL_WGLEXT_PROTOTYPES',
+ apicall = '',
+ apientry = 'WINAPI ',
+ apientryp = 'WINAPI * '),
+ # WGL extensions - GL/wglext.h (no function pointers, yet @@@)
+ CGeneratorOptions(
+ filename = 'GL/wglext.h',
+ apiname = 'wgl',
+ profile = None,
+ versions = allVersions,
+ emitversions = None,
+ defaultExtensions = 'wgl', # Default extensions for WGL
+ addExtensions = None,
+ removeExtensions = None,
+ prefixText = prefixStrings + wglPlatformStrings + wglextVersionStrings,
+ genFuncPointers = True,
+ protectFile = protectFile,
+ protectFeature = protectFeature,
+ protectProto = protectProto,
+ protectProtoStr = 'WGL_WGLEXT_PROTOTYPES',
+ apicall = '',
+ apientry = 'WINAPI ',
+ apientryp = 'WINAPI * '),
+ # End of list
+ None
+]
+
+def genHeaders():
+ # Loop over targets, building each
+ generated = 0
+ for genOpts in buildList:
+ if (genOpts == None):
+ break
+ if (target and target != genOpts.filename):
+ # write('*** Skipping', genOpts.filename)
+ continue
+ write('*** Building', genOpts.filename)
+ generated = generated + 1
+ startTimer()
+ gen = COutputGenerator(errFile=errWarn,
+ warnFile=errWarn,
+ diagFile=diag)
+ reg.setGenerator(gen)
+ reg.apiGen(genOpts)
+ write('** Generated', genOpts.filename)
+ endTimer('Time to generate ' + genOpts.filename + ' =')
+ if (target and generated == 0):
+ write('Failed to generate target:', target)
+
+if __name__ == '__main__':
+ i = 1
+ while (i < len(sys.argv)):
+ arg = sys.argv[i]
+ i = i + 1
+ if (arg == '-debug'):
+ write('Enabling debug (-debug)', file=sys.stderr)
+ debug = True
+ elif (arg == '-dump'):
+ write('Enabling dump (-dump)', file=sys.stderr)
+ dump = True
+ elif (arg == '-noprotect'):
+ write('Disabling inclusion protection in output headers', file=sys.stderr)
+ protect = False
+ elif (arg == '-profile'):
+ write('Enabling profiling (-profile)', file=sys.stderr)
+ profile = True
+ elif (arg == '-registry'):
+ regFilename = sys.argv[i]
+ i = i+1
+ write('Using registry ', regFilename, file=sys.stderr)
+ elif (arg == '-time'):
+ write('Enabling timing (-time)', file=sys.stderr)
+ timeit = True
+ elif (arg == '-validate'):
+ write('Enabling group validation (-validate)', file=sys.stderr)
+ validate = True
+ elif (arg[0:1] == '-'):
+ write('Unrecognized argument:', arg, file=sys.stderr)
+ exit(1)
+ else:
+ target = arg
+ write('Using target', target, file=sys.stderr)
+
+ # Load & parse registry
+ reg = Registry()
+
+ startTimer()
+ tree = etree.parse(regFilename)
+ endTimer('Time to make ElementTree =')
+
+ startTimer()
+ reg.loadElementTree(tree)
+ endTimer('Time to parse ElementTree =')
+
+ if (validate):
+ reg.validateGroups()
+
+ if (dump):
+ write('***************************************')
+ write('Performing Registry dump to regdump.txt')
+ write('***************************************')
+ reg.dumpReg(filehandle = open('regdump.txt','w'))
+
+ # create error/warning & diagnostic files
+ if (errFilename):
+ errWarn = open(errFilename,'w')
+ else:
+ errWarn = sys.stderr
+ diag = open(diagFilename, 'w')
+
+ if (debug):
+ pdb.run('genHeaders()')
+ elif (profile):
+ import cProfile, pstats
+ cProfile.run('genHeaders()', 'profile.txt')
+ p = pstats.Stats('profile.txt')
+ p.strip_dirs().sort_stats('time').print_stats(50)
+ else:
+ genHeaders()
diff --git a/glew/auto/EGL-Registry/api/reg.py b/glew/auto/EGL-Registry/api/reg.py
new file mode 100644
index 0000000..6ac25f3
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/reg.py
@@ -0,0 +1,1168 @@
+#!/usr/bin/python -i
+#
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+import io,os,re,string,sys
+from lxml import etree
+import subprocess
+
+def write(*args, **kwargs):
+ file = kwargs.pop('file', sys.stdout)
+ end = kwargs.pop('end', '\n')
+ file.write(' '.join([str(arg) for arg in args]))
+ file.write(end)
+
+# noneStr - returns string argument, or "" if argument is None.
+# Used in converting lxml Elements into text.
+# str - string to convert
+def noneStr(str):
+ if (str):
+ return str
+ else:
+ return ""
+
+# matchAPIProfile - returns whether an API and profile
+# being generated matches an element's profile
+# api - string naming the API to match
+# profile - string naming the profile to match
+# elem - Element which (may) have 'api' and 'profile'
+# attributes to match to.
+# If a tag is not present in the Element, the corresponding API
+# or profile always matches.
+# Otherwise, the tag must exactly match the API or profile.
+# Thus, if 'profile' = core:
+# <remove> with no attribute will match
+# <remove profile='core'> will match
+# <remove profile='compatibility'> will not match
+# Possible match conditions:
+# Requested Element
+# Profile Profile
+# --------- --------
+# None None Always matches
+# 'string' None Always matches
+# None 'string' Does not match. Can't generate multiple APIs
+# or profiles, so if an API/profile constraint
+# is present, it must be asked for explicitly.
+# 'string' 'string' Strings must match
+#
+# ** In the future, we will allow regexes for the attributes,
+# not just strings, so that api="^(gl|gles2)" will match. Even
+# this isn't really quite enough, we might prefer something
+# like "gl(core)|gles1(common-lite)".
+def matchAPIProfile(api, profile, elem):
+ """Match a requested API & profile name to a api & profile attributes of an Element"""
+ match = True
+ # Match 'api', if present
+ if ('api' in elem.attrib):
+ if (api == None):
+ raise UserWarning("No API requested, but 'api' attribute is present with value '" +
+ elem.get('api') + "'")
+ elif (api != elem.get('api')):
+ # Requested API doesn't match attribute
+ return False
+ if ('profile' in elem.attrib):
+ if (profile == None):
+ raise UserWarning("No profile requested, but 'profile' attribute is present with value '" +
+ elem.get('profile') + "'")
+ elif (profile != elem.get('profile')):
+ # Requested profile doesn't match attribute
+ return False
+ return True
+
+# BaseInfo - base class for information about a registry feature
+# (type/group/enum/command/API/extension).
+# required - should this feature be defined during header generation
+# (has it been removed by a profile or version)?
+# declared - has this feature been defined already?
+# elem - lxml.etree Element for this feature
+# resetState() - reset required/declared to initial values. Used
+# prior to generating a new API interface.
+class BaseInfo:
+ """Represents the state of a registry feature, used during API generation"""
+ def __init__(self, elem):
+ self.required = False
+ self.declared = False
+ self.elem = elem
+ def resetState(self):
+ self.required = False
+ self.declared = False
+
+# TypeInfo - registry information about a type. No additional state
+# beyond BaseInfo is required.
+class TypeInfo(BaseInfo):
+ """Represents the state of a registry type"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+
+# GroupInfo - registry information about a group of related enums.
+# enums - dictionary of enum names which are in the group
+class GroupInfo(BaseInfo):
+ """Represents the state of a registry enumerant group"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+ self.enums = {}
+
+# EnumInfo - registry information about an enum
+# type - numeric type of the value of the <enum> tag
+# ( '' for GLint, 'u' for GLuint, 'ull' for GLuint64 )
+class EnumInfo(BaseInfo):
+ """Represents the state of a registry enum"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+ self.type = elem.get('type')
+ if (self.type == None):
+ self.type = ''
+
+# CmdInfo - registry information about a command
+# glxtype - type of GLX protocol { None, 'render', 'single', 'vendor' }
+# glxopcode - GLX protocol opcode { None, number }
+# glxequiv - equivalent command at GLX dispatch level { None, string }
+# vecequiv - equivalent vector form of a command taking multiple scalar args
+# { None, string }
+class CmdInfo(BaseInfo):
+ """Represents the state of a registry command"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+ self.glxtype = None
+ self.glxopcode = None
+ self.glxequiv = None
+ self.vecequiv = None
+
+# FeatureInfo - registry information about an API <feature>
+# or <extension>
+# name - feature name string (e.g. 'GL_ARB_multitexture')
+# number - feature version number (e.g. 1.2). <extension>
+# features are unversioned and assigned version number 0.
+# category - category, e.g. VERSION or ARB/KHR/OES/ETC/vendor
+# emit - has this feature been defined already?
+class FeatureInfo(BaseInfo):
+ """Represents the state of an API feature (version/extension)"""
+ def __init__(self, elem):
+ BaseInfo.__init__(self, elem)
+ self.name = elem.get('name')
+ # Determine element category (vendor). Only works
+ # for <extension> elements.
+ if (elem.tag == 'feature'):
+ self.category = 'VERSION'
+ self.number = elem.get('number')
+ else:
+ self.category = self.name.split('_', 2)[1]
+ self.number = "0"
+ self.emit = False
+
+# Primary sort key for regSortFeatures.
+# Sorts by category of the feature name string:
+# Core API features (those defined with a <feature> tag)
+# ARB/KHR/OES (Khronos extensions)
+# other (EXT/vendor extensions)
+def regSortCategoryKey(feature):
+ if (feature.elem.tag == 'feature'):
+ return 0
+ elif (feature.category == 'ARB' or
+ feature.category == 'KHR' or
+ feature.category == 'OES'):
+ return 1
+ else:
+ return 2
+
+# Secondary sort key for regSortFeatures.
+# Sorts by extension name.
+def regSortNameKey(feature):
+ return feature.name
+
+# Tertiary sort key for regSortFeatures.
+# Sorts by feature version number. <extension>
+# elements all have version number "0"
+def regSortNumberKey(feature):
+ return feature.number
+
+# regSortFeatures - default sort procedure for features.
+# Sorts by primary key of feature category,
+# then by feature name within the category,
+# then by version number
+def regSortFeatures(featureList):
+ featureList.sort(key = regSortNumberKey)
+ featureList.sort(key = regSortNameKey)
+ featureList.sort(key = regSortCategoryKey)
+
+# GeneratorOptions - base class for options used during header production
+# These options are target language independent, and used by
+# Registry.apiGen() and by base OutputGenerator objects.
+#
+# Members
+# filename - name of file to generate, or None to write to stdout.
+# apiname - string matching <api> 'apiname' attribute, e.g. 'gl'.
+# profile - string specifying API profile , e.g. 'core', or None.
+# versions - regex matching API versions to process interfaces for.
+# Normally '.*' or '[0-9]\.[0-9]' to match all defined versions.
+# emitversions - regex matching API versions to actually emit
+# interfaces for (though all requested versions are considered
+# when deciding which interfaces to generate). For GL 4.3 glext.h,
+# this might be '1\.[2-5]|[2-4]\.[0-9]'.
+# defaultExtensions - If not None, a string which must in its
+# entirety match the pattern in the "supported" attribute of
+# the <extension>. Defaults to None. Usually the same as apiname.
+# addExtensions - regex matching names of additional extensions
+# to include. Defaults to None.
+# removeExtensions - regex matching names of extensions to
+# remove (after defaultExtensions and addExtensions). Defaults
+# to None.
+# sortProcedure - takes a list of FeatureInfo objects and sorts
+# them in place to a preferred order in the generated output.
+# Default is core API versions, ARB/KHR/OES extensions, all
+# other extensions, alphabetically within each group.
+# The regex patterns can be None or empty, in which case they match
+# nothing.
+class GeneratorOptions:
+ """Represents options during header production from an API registry"""
+ def __init__(self,
+ filename = None,
+ apiname = None,
+ profile = None,
+ versions = '.*',
+ emitversions = '.*',
+ defaultExtensions = None,
+ addExtensions = None,
+ removeExtensions = None,
+ sortProcedure = regSortFeatures):
+ self.filename = filename
+ self.apiname = apiname
+ self.profile = profile
+ self.versions = self.emptyRegex(versions)
+ self.emitversions = self.emptyRegex(emitversions)
+ self.defaultExtensions = defaultExtensions
+ self.addExtensions = self.emptyRegex(addExtensions)
+ self.removeExtensions = self.emptyRegex(removeExtensions)
+ self.sortProcedure = sortProcedure
+ #
+ # Substitute a regular expression which matches no version
+ # or extension names for None or the empty string.
+ def emptyRegex(self,pat):
+ if (pat == None or pat == ''):
+ return '_nomatch_^'
+ else:
+ return pat
+
+# CGeneratorOptions - subclass of GeneratorOptions.
+#
+# Adds options used by COutputGenerator objects during C language header
+# generation.
+#
+# Additional members
+# prefixText - list of strings to prefix generated header with
+# (usually a copyright statement + calling convention macros).
+# protectFile - True if multiple inclusion protection should be
+# generated (based on the filename) around the entire header.
+# protectFeature - True if #ifndef..#endif protection should be
+# generated around a feature interface in the header file.
+# genFuncPointers - True if function pointer typedefs should be
+# generated
+# protectProto - Controls cpp protection around prototypes:
+# False - no protection
+# 'nonzero' - protectProtoStr must be defined to a nonzero value
+# True - protectProtoStr must be defined
+# protectProtoStr - #ifdef symbol to use around prototype
+# declarations, if protected
+# apicall - string to use for the function declaration prefix,
+# such as APICALL on Windows.
+# apientry - string to use for the calling convention macro,
+# in typedefs, such as APIENTRY.
+# apientryp - string to use for the calling convention macro
+# in function pointer typedefs, such as APIENTRYP.
+class CGeneratorOptions(GeneratorOptions):
+ """Represents options during C header production from an API registry"""
+ def __init__(self,
+ filename = None,
+ apiname = None,
+ profile = None,
+ versions = '.*',
+ emitversions = '.*',
+ defaultExtensions = None,
+ addExtensions = None,
+ removeExtensions = None,
+ sortProcedure = regSortFeatures,
+ prefixText = "",
+ genFuncPointers = True,
+ protectFile = True,
+ protectFeature = True,
+ protectProto = True,
+ protectProtoStr = True,
+ apicall = '',
+ apientry = '',
+ apientryp = ''):
+ GeneratorOptions.__init__(self, filename, apiname, profile,
+ versions, emitversions, defaultExtensions,
+ addExtensions, removeExtensions, sortProcedure)
+ self.prefixText = prefixText
+ self.genFuncPointers = genFuncPointers
+ self.protectFile = protectFile
+ self.protectFeature = protectFeature
+ self.protectProto = protectProto
+ self.protectProtoStr = protectProtoStr
+ self.apicall = apicall
+ self.apientry = apientry
+ self.apientryp = apientryp
+
+# OutputGenerator - base class for generating API interfaces.
+# Manages basic logic, logging, and output file control
+# Derived classes actually generate formatted output.
+#
+# ---- methods ----
+# OutputGenerator(errFile, warnFile, diagFile)
+# errFile, warnFile, diagFile - file handles to write errors,
+# warnings, diagnostics to. May be None to not write.
+# logMsg(level, *args) - log messages of different categories
+# level - 'error', 'warn', or 'diag'. 'error' will also
+# raise a UserWarning exception
+# *args - print()-style arguments
+# beginFile(genOpts) - start a new interface file
+# genOpts - GeneratorOptions controlling what's generated and how
+# endFile() - finish an interface file, closing it when done
+# beginFeature(interface, emit) - write interface for a feature
+# and tag generated features as having been done.
+# interface - element for the <version> / <extension> to generate
+# emit - actually write to the header only when True
+# endFeature() - finish an interface.
+# genType(typeinfo,name) - generate interface for a type
+# typeinfo - TypeInfo for a type
+# genEnum(enuminfo, name) - generate interface for an enum
+# enuminfo - EnumInfo for an enum
+# name - enum name
+# genCmd(cmdinfo) - generate interface for a command
+# cmdinfo - CmdInfo for a command
+class OutputGenerator:
+ """Generate specified API interfaces in a specific style, such as a C header"""
+ def __init__(self,
+ errFile = sys.stderr,
+ warnFile = sys.stderr,
+ diagFile = sys.stdout):
+ self.outFile = None
+ self.errFile = errFile
+ self.warnFile = warnFile
+ self.diagFile = diagFile
+ # Internal state
+ self.featureName = None
+ self.genOpts = None
+ #
+ # logMsg - write a message of different categories to different
+ # destinations.
+ # level -
+ # 'diag' (diagnostic, voluminous)
+ # 'warn' (warning)
+ # 'error' (fatal error - raises exception after logging)
+ # *args - print()-style arguments to direct to corresponding log
+ def logMsg(self, level, *args):
+ """Log a message at the given level. Can be ignored or log to a file"""
+ if (level == 'error'):
+ strfile = io.StringIO()
+ write('ERROR:', *args, file=strfile)
+ if (self.errFile != None):
+ write(strfile.getvalue(), file=self.errFile)
+ raise UserWarning(strfile.getvalue())
+ elif (level == 'warn'):
+ if (self.warnFile != None):
+ write('WARNING:', *args, file=self.warnFile)
+ elif (level == 'diag'):
+ if (self.diagFile != None):
+ write('DIAG:', *args, file=self.diagFile)
+ else:
+ raise UserWarning(
+ '*** FATAL ERROR in Generator.logMsg: unknown level:' + level)
+ #
+ def beginFile(self, genOpts):
+ self.genOpts = genOpts
+ #
+ # Open specified output file. Not done in constructor since a
+ # Generator can be used without writing to a file.
+ if (self.genOpts.filename != None):
+ self.outFile = open(self.genOpts.filename, 'w')
+ else:
+ self.outFile = sys.stdout
+ def endFile(self):
+ self.errFile and self.errFile.flush()
+ self.warnFile and self.warnFile.flush()
+ self.diagFile and self.diagFile.flush()
+ self.outFile.flush()
+ if (self.outFile != sys.stdout and self.outFile != sys.stderr):
+ self.outFile.close()
+ self.genOpts = None
+ #
+ def beginFeature(self, interface, emit):
+ self.emit = emit
+ self.featureName = interface.get('name')
+ # If there's an additional 'protect' attribute in the feature, save it
+ self.featureExtraProtect = interface.get('protect')
+ def endFeature(self):
+ # Derived classes responsible for emitting feature
+ self.featureName = None
+ self.featureExtraProtect = None
+ #
+ # Type generation
+ def genType(self, typeinfo, name):
+ if (self.featureName == None):
+ raise UserWarning('Attempt to generate type', name,
+ 'when not in feature')
+ #
+ # Enumerant generation
+ def genEnum(self, enuminfo, name):
+ if (self.featureName == None):
+ raise UserWarning('Attempt to generate enum', name,
+ 'when not in feature')
+ #
+ # Command generation
+ def genCmd(self, cmd, name):
+ if (self.featureName == None):
+ raise UserWarning('Attempt to generate command', name,
+ 'when not in feature')
+
+# COutputGenerator - subclass of OutputGenerator.
+# Generates C-language API interfaces.
+#
+# ---- methods ----
+# COutputGenerator(errFile, warnFile, diagFile) - args as for
+# OutputGenerator. Defines additional internal state.
+# makeCDecls(cmd) - return C prototype and function pointer typedef for a
+# <command> Element, as a list of two strings
+# cmd - Element for the <command>
+# newline() - print a newline to the output file (utility function)
+# ---- methods overriding base class ----
+# beginFile(genOpts)
+# endFile()
+# beginFeature(interface, emit)
+# endFeature()
+# genType(typeinfo,name) - generate interface for a type
+# genEnum(enuminfo, name)
+# genCmd(cmdinfo)
+class COutputGenerator(OutputGenerator):
+ """Generate specified API interfaces in a specific style, such as a C header"""
+ def __init__(self,
+ errFile = sys.stderr,
+ warnFile = sys.stderr,
+ diagFile = sys.stdout):
+ OutputGenerator.__init__(self, errFile, warnFile, diagFile)
+ # Internal state - accumulators for different inner block text
+ self.typeBody = ''
+ self.enumBody = ''
+ self.cmdBody = ''
+ #
+ # makeCDecls - return C prototype and function pointer typedef for a
+ # command, as a two-element list of strings.
+ # cmd - Element containing a <command> tag
+ def makeCDecls(self, cmd):
+ """Generate C function pointer typedef for <command> Element"""
+ proto = cmd.find('proto')
+ params = cmd.findall('param')
+ # Begin accumulating prototype and typedef strings
+ pdecl = self.genOpts.apicall
+ tdecl = 'typedef '
+ #
+ # Insert the function return type/name.
+ # For prototypes, add APIENTRY macro before the name
+ # For typedefs, add (APIENTRYP <name>) around the name and
+ # use the PFNGLCMDNAMEPROC nameng convention.
+ # Done by walking the tree for <proto> element by element.
+ # lxml.etree has elem.text followed by (elem[i], elem[i].tail)
+ # for each child element and any following text
+ # Leading text
+ pdecl += noneStr(proto.text)
+ tdecl += noneStr(proto.text)
+ # For each child element, if it's a <name> wrap in appropriate
+ # declaration. Otherwise append its contents and tail contents.
+ for elem in proto:
+ text = noneStr(elem.text)
+ tail = noneStr(elem.tail)
+ if (elem.tag == 'name'):
+ pdecl += self.genOpts.apientry + text + tail
+ tdecl += '(' + self.genOpts.apientryp + 'PFN' + text.upper() + 'PROC' + tail + ')'
+ else:
+ pdecl += text + tail
+ tdecl += text + tail
+ # Now add the parameter declaration list, which is identical
+ # for prototypes and typedefs. Concatenate all the text from
+ # a <param> node without the tags. No tree walking required
+ # since all tags are ignored.
+ n = len(params)
+ paramdecl = ' ('
+ if n > 0:
+ for i in range(0,n):
+ paramdecl += ''.join([t for t in params[i].itertext()])
+ if (i < n - 1):
+ paramdecl += ', '
+ else:
+ paramdecl += 'void'
+ paramdecl += ');\n';
+ return [ pdecl + paramdecl, tdecl + paramdecl ]
+ #
+ def newline(self):
+ write('', file=self.outFile)
+ #
+ def beginFile(self, genOpts):
+ OutputGenerator.beginFile(self, genOpts)
+ # C-specific
+ #
+ # Multiple inclusion protection & C++ wrappers.
+ if (genOpts.protectFile and self.genOpts.filename):
+ headerSym = '__' + re.sub('\.h', '_h_', os.path.basename(self.genOpts.filename))
+ write('#ifndef', headerSym, file=self.outFile)
+ write('#define', headerSym, '1', file=self.outFile)
+ self.newline()
+ write('#ifdef __cplusplus', file=self.outFile)
+ write('extern "C" {', file=self.outFile)
+ write('#endif', file=self.outFile)
+ self.newline()
+ #
+ # User-supplied prefix text, if any (list of strings)
+ if (genOpts.prefixText):
+ try:
+ git_rev = subprocess.check_output(['git', 'rev-parse', '--short=10', 'HEAD']).decode('utf-8').strip()
+ git_date = subprocess.check_output(['git', 'log', '-1', '--format=%ai']).decode('utf-8').strip()
+ except (OSError, subprocess.CalledProcessError):
+ git_rev = 'unknown'
+ git_date = 'unknown'
+ for s in genOpts.prefixText:
+ s = s.replace('$Revision$', '$Git commit SHA1: ' + git_rev + ' $')
+ s = s.replace('$Date$', '$Git commit date: ' + git_date + ' $')
+ write(s, file=self.outFile)
+ #
+ # Some boilerplate describing what was generated - this
+ # will probably be removed later since the extensions
+ # pattern may be very long.
+ write('/* Generated C header for:', file=self.outFile)
+ write(' * API:', genOpts.apiname, file=self.outFile)
+ if (genOpts.profile):
+ write(' * Profile:', genOpts.profile, file=self.outFile)
+ write(' * Versions considered:', genOpts.versions, file=self.outFile)
+ write(' * Versions emitted:', genOpts.emitversions, file=self.outFile)
+ write(' * Default extensions included:', genOpts.defaultExtensions, file=self.outFile)
+ write(' * Additional extensions included:', genOpts.addExtensions, file=self.outFile)
+ write(' * Extensions removed:', genOpts.removeExtensions, file=self.outFile)
+ write(' */', file=self.outFile)
+ def endFile(self):
+ # C-specific
+ # Finish C++ wrapper and multiple inclusion protection
+ self.newline()
+ write('#ifdef __cplusplus', file=self.outFile)
+ write('}', file=self.outFile)
+ write('#endif', file=self.outFile)
+ if (self.genOpts.protectFile and self.genOpts.filename):
+ self.newline()
+ write('#endif', file=self.outFile)
+ # Finish processing in superclass
+ OutputGenerator.endFile(self)
+ def beginFeature(self, interface, emit):
+ # Start processing in superclass
+ OutputGenerator.beginFeature(self, interface, emit)
+ # C-specific
+ # Accumulate types, enums, function pointer typedefs, end function
+ # prototypes separately for this feature. They're only printed in
+ # endFeature().
+ self.typeBody = ''
+ self.enumBody = ''
+ self.cmdPointerBody = ''
+ self.cmdBody = ''
+ def endFeature(self):
+ # C-specific
+ # Actually write the interface to the output file.
+ if (self.emit):
+ self.newline()
+ if (self.genOpts.protectFeature):
+ write('#ifndef', self.featureName, file=self.outFile)
+ write('#define', self.featureName, '1', file=self.outFile)
+ if (self.typeBody != ''):
+ write(self.typeBody, end='', file=self.outFile)
+ #
+ # Don't add additional protection for derived type declarations,
+ # which may be needed by other features later on.
+ if (self.featureExtraProtect != None):
+ write('#ifdef', self.featureExtraProtect, file=self.outFile)
+ if (self.enumBody != ''):
+ write(self.enumBody, end='', file=self.outFile)
+ if (self.genOpts.genFuncPointers and self.cmdPointerBody != ''):
+ write(self.cmdPointerBody, end='', file=self.outFile)
+ if (self.cmdBody != ''):
+ if (self.genOpts.protectProto == True):
+ prefix = '#ifdef ' + self.genOpts.protectProtoStr + '\n'
+ suffix = '#endif\n'
+ elif (self.genOpts.protectProto == 'nonzero'):
+ prefix = '#if ' + self.genOpts.protectProtoStr + '\n'
+ suffix = '#endif\n'
+ elif (self.genOpts.protectProto == False):
+ prefix = ''
+ suffix = ''
+ else:
+ self.gen.logMsg('warn',
+ '*** Unrecognized value for protectProto:',
+ self.genOpts.protectProto,
+ 'not generating prototype wrappers')
+ prefix = ''
+ suffix = ''
+
+ write(prefix + self.cmdBody + suffix, end='', file=self.outFile)
+ if (self.featureExtraProtect != None):
+ write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile)
+ if (self.genOpts.protectFeature):
+ write('#endif /*', self.featureName, '*/', file=self.outFile)
+ # Finish processing in superclass
+ OutputGenerator.endFeature(self)
+ #
+ # Type generation
+ def genType(self, typeinfo, name):
+ OutputGenerator.genType(self, typeinfo, name)
+ #
+ # Replace <apientry /> tags with an APIENTRY-style string
+ # (from self.genOpts). Copy other text through unchanged.
+ # If the resulting text is an empty string, don't emit it.
+ typeElem = typeinfo.elem
+ s = noneStr(typeElem.text)
+ for elem in typeElem:
+ if (elem.tag == 'apientry'):
+ s += self.genOpts.apientry + noneStr(elem.tail)
+ else:
+ s += noneStr(elem.text) + noneStr(elem.tail)
+ if (len(s) > 0):
+ self.typeBody += s + '\n'
+ #
+ # Enumerant generation
+ def genEnum(self, enuminfo, name):
+ OutputGenerator.genEnum(self, enuminfo, name)
+ #
+ # EnumInfo.type is a C value suffix (e.g. u, ull)
+ self.enumBody += '#define ' + name.ljust(33) + ' ' + enuminfo.elem.get('value')
+ #
+ # Handle non-integer 'type' fields by using it as the C value suffix
+ t = enuminfo.elem.get('type')
+ if (t != '' and t != 'i'):
+ self.enumBody += enuminfo.type
+ self.enumBody += '\n'
+ #
+ # Command generation
+ def genCmd(self, cmdinfo, name):
+ OutputGenerator.genCmd(self, cmdinfo, name)
+ #
+ decls = self.makeCDecls(cmdinfo.elem)
+ self.cmdBody += decls[0]
+ if (self.genOpts.genFuncPointers):
+ self.cmdPointerBody += decls[1]
+
+# Registry - object representing an API registry, loaded from an XML file
+# Members
+# tree - ElementTree containing the root <registry>
+# typedict - dictionary of TypeInfo objects keyed by type name
+# groupdict - dictionary of GroupInfo objects keyed by group name
+# enumdict - dictionary of EnumInfo objects keyed by enum name
+# cmddict - dictionary of CmdInfo objects keyed by command name
+# apidict - dictionary of <api> Elements keyed by API name
+# extensions - list of <extension> Elements
+# extdict - dictionary of <extension> Elements keyed by extension name
+# gen - OutputGenerator object used to write headers / messages
+# genOpts - GeneratorOptions object used to control which
+# fetures to write and how to format them
+# emitFeatures - True to actually emit features for a version / extension,
+# or False to just treat them as emitted
+# Public methods
+# loadElementTree(etree) - load registry from specified ElementTree
+# loadFile(filename) - load registry from XML file
+# setGenerator(gen) - OutputGenerator to use
+# parseTree() - parse the registry once loaded & create dictionaries
+# dumpReg(maxlen, filehandle) - diagnostic to dump the dictionaries
+# to specified file handle (default stdout). Truncates type /
+# enum / command elements to maxlen characters (default 80)
+# generator(g) - specify the output generator object
+# apiGen(apiname, genOpts) - generate API headers for the API type
+# and profile specified in genOpts, but only for the versions and
+# extensions specified there.
+# apiReset() - call between calls to apiGen() to reset internal state
+# validateGroups() - call to verify that each <proto> or <param>
+# with a 'group' attribute matches an actual existing group.
+# Private methods
+# addElementInfo(elem,info,infoName,dictionary) - add feature info to dict
+# lookupElementInfo(fname,dictionary) - lookup feature info in dict
+class Registry:
+ """Represents an API registry loaded from XML"""
+ def __init__(self):
+ self.tree = None
+ self.typedict = {}
+ self.groupdict = {}
+ self.enumdict = {}
+ self.cmddict = {}
+ self.apidict = {}
+ self.extensions = []
+ self.extdict = {}
+ # A default output generator, so commands prior to apiGen can report
+ # errors via the generator object.
+ self.gen = OutputGenerator()
+ self.genOpts = None
+ self.emitFeatures = False
+ def loadElementTree(self, tree):
+ """Load ElementTree into a Registry object and parse it"""
+ self.tree = tree
+ self.parseTree()
+ def loadFile(self, file):
+ """Load an API registry XML file into a Registry object and parse it"""
+ self.tree = etree.parse(file)
+ self.parseTree()
+ def setGenerator(self, gen):
+ """Specify output generator object. None restores the default generator"""
+ self.gen = gen
+ # addElementInfo - add information about an element to the
+ # corresponding dictionary
+ # elem - <type>/<group>/<enum>/<command>/<feature>/<extension> Element
+ # info - corresponding {Type|Group|Enum|Cmd|Feature}Info object
+ # infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension'
+ # dictionary - self.{type|group|enum|cmd|api|ext}dict
+ # If the Element has an 'api' attribute, the dictionary key is the
+ # tuple (name,api). If not, the key is the name. 'name' is an
+ # attribute of the Element
+ def addElementInfo(self, elem, info, infoName, dictionary):
+ if ('api' in elem.attrib):
+ key = (elem.get('name'),elem.get('api'))
+ else:
+ key = elem.get('name')
+ if key in dictionary:
+ self.gen.logMsg('warn', '*** Attempt to redefine',
+ infoName, 'with key:', key)
+ else:
+ dictionary[key] = info
+ #
+ # lookupElementInfo - find a {Type|Enum|Cmd}Info object by name.
+ # If an object qualified by API name exists, use that.
+ # fname - name of type / enum / command
+ # dictionary - self.{type|enum|cmd}dict
+ def lookupElementInfo(self, fname, dictionary):
+ key = (fname, self.genOpts.apiname)
+ if (key in dictionary):
+ # self.gen.logMsg('diag', 'Found API-specific element for feature', fname)
+ return dictionary[key]
+ elif (fname in dictionary):
+ # self.gen.logMsg('diag', 'Found generic element for feature', fname)
+ return dictionary[fname]
+ else:
+ return None
+ def parseTree(self):
+ """Parse the registry Element, once created"""
+ # This must be the Element for the root <registry>
+ self.reg = self.tree.getroot()
+ #
+ # Create dictionary of registry types from toplevel <types> tags
+ # and add 'name' attribute to each <type> tag (where missing)
+ # based on its <name> element.
+ #
+ # There's usually one <types> block; more are OK
+ # Required <type> attributes: 'name' or nested <name> tag contents
+ self.typedict = {}
+ for type in self.reg.findall('types/type'):
+ # If the <type> doesn't already have a 'name' attribute, set
+ # it from contents of its <name> tag.
+ if (type.get('name') == None):
+ type.attrib['name'] = type.find('name').text
+ self.addElementInfo(type, TypeInfo(type), 'type', self.typedict)
+ #
+ # Create dictionary of registry groups from toplevel <groups> tags.
+ #
+ # There's usually one <groups> block; more are OK.
+ # Required <group> attributes: 'name'
+ self.groupdict = {}
+ for group in self.reg.findall('groups/group'):
+ self.addElementInfo(group, GroupInfo(group), 'group', self.groupdict)
+ #
+ # Create dictionary of registry enums from toplevel <enums> tags
+ #
+ # There are usually many <enums> tags in different namespaces, but
+ # these are functional namespaces of the values, while the actual
+ # enum names all share the dictionary.
+ # Required <enums> attributes: 'name', 'value'
+ self.enumdict = {}
+ for enum in self.reg.findall('enums/enum'):
+ self.addElementInfo(enum, EnumInfo(enum), 'enum', self.enumdict)
+ #
+ # Create dictionary of registry commands from <command> tags
+ # and add 'name' attribute to each <command> tag (where missing)
+ # based on its <proto><name> element.
+ #
+ # There's usually only one <commands> block; more are OK.
+ # Required <command> attributes: 'name' or <proto><name> tag contents
+ self.cmddict = {}
+ for cmd in self.reg.findall('commands/command'):
+ # If the <command> doesn't already have a 'name' attribute, set
+ # it from contents of its <proto><name> tag.
+ if (cmd.get('name') == None):
+ cmd.attrib['name'] = cmd.find('proto/name').text
+ ci = CmdInfo(cmd)
+ self.addElementInfo(cmd, ci, 'command', self.cmddict)
+ #
+ # Create dictionaries of API and extension interfaces
+ # from toplevel <api> and <extension> tags.
+ #
+ self.apidict = {}
+ for feature in self.reg.findall('feature'):
+ ai = FeatureInfo(feature)
+ self.addElementInfo(feature, ai, 'feature', self.apidict)
+ self.extensions = self.reg.findall('extensions/extension')
+ self.extdict = {}
+ for feature in self.extensions:
+ ei = FeatureInfo(feature)
+ self.addElementInfo(feature, ei, 'extension', self.extdict)
+ def dumpReg(self, maxlen = 40, filehandle = sys.stdout):
+ """Dump all the dictionaries constructed from the Registry object"""
+ write('***************************************', file=filehandle)
+ write(' ** Dumping Registry contents **', file=filehandle)
+ write('***************************************', file=filehandle)
+ write('// Types', file=filehandle)
+ for name in self.typedict:
+ tobj = self.typedict[name]
+ write(' Type', name, '->', etree.tostring(tobj.elem)[0:maxlen], file=filehandle)
+ write('// Groups', file=filehandle)
+ for name in self.groupdict:
+ gobj = self.groupdict[name]
+ write(' Group', name, '->', etree.tostring(gobj.elem)[0:maxlen], file=filehandle)
+ write('// Enums', file=filehandle)
+ for name in self.enumdict:
+ eobj = self.enumdict[name]
+ write(' Enum', name, '->', etree.tostring(eobj.elem)[0:maxlen], file=filehandle)
+ write('// Commands', file=filehandle)
+ for name in self.cmddict:
+ cobj = self.cmddict[name]
+ write(' Command', name, '->', etree.tostring(cobj.elem)[0:maxlen], file=filehandle)
+ write('// APIs', file=filehandle)
+ for key in self.apidict:
+ write(' API Version ', key, '->',
+ etree.tostring(self.apidict[key].elem)[0:maxlen], file=filehandle)
+ write('// Extensions', file=filehandle)
+ for key in self.extdict:
+ write(' Extension', key, '->',
+ etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle)
+ # write('***************************************', file=filehandle)
+ # write(' ** Dumping XML ElementTree **', file=filehandle)
+ # write('***************************************', file=filehandle)
+ # write(etree.tostring(self.tree.getroot(),pretty_print=True), file=filehandle)
+ #
+ # typename - name of type
+ # required - boolean (to tag features as required or not)
+ def markTypeRequired(self, typename, required):
+ """Require (along with its dependencies) or remove (but not its dependencies) a type"""
+ self.gen.logMsg('diag', '*** tagging type:', typename, '-> required =', required)
+ # Get TypeInfo object for <type> tag corresponding to typename
+ type = self.lookupElementInfo(typename, self.typedict)
+ if (type != None):
+ # Tag required type dependencies as required.
+ # This DOES NOT un-tag dependencies in a <remove> tag.
+ # See comments in markRequired() below for the reason.
+ if (required and ('requires' in type.elem.attrib)):
+ depType = type.elem.get('requires')
+ self.gen.logMsg('diag', '*** Generating dependent type',
+ depType, 'for type', typename)
+ self.markTypeRequired(depType, required)
+ type.required = required
+ else:
+ self.gen.logMsg('warn', '*** type:', typename , 'IS NOT DEFINED')
+ #
+ # features - Element for <require> or <remove> tag
+ # required - boolean (to tag features as required or not)
+ def markRequired(self, features, required):
+ """Require or remove features specified in the Element"""
+ self.gen.logMsg('diag', '*** markRequired (features = <too long to print>, required =', required, ')')
+ # Loop over types, enums, and commands in the tag
+ # @@ It would be possible to respect 'api' and 'profile' attributes
+ # in individual features, but that's not done yet.
+ for typeElem in features.findall('type'):
+ self.markTypeRequired(typeElem.get('name'), required)
+ for enumElem in features.findall('enum'):
+ name = enumElem.get('name')
+ self.gen.logMsg('diag', '*** tagging enum:', name, '-> required =', required)
+ enum = self.lookupElementInfo(name, self.enumdict)
+ if (enum != None):
+ enum.required = required
+ else:
+ self.gen.logMsg('warn', '*** enum:', name , 'IS NOT DEFINED')
+ for cmdElem in features.findall('command'):
+ name = cmdElem.get('name')
+ self.gen.logMsg('diag', '*** tagging command:', name, '-> required =', required)
+ cmd = self.lookupElementInfo(name, self.cmddict)
+ if (cmd != None):
+ cmd.required = required
+ # Tag all parameter types of this command as required.
+ # This DOES NOT remove types of commands in a <remove>
+ # tag, because many other commands may use the same type.
+ # We could be more clever and reference count types,
+ # instead of using a boolean.
+ if (required):
+ # Look for <ptype> in entire <command> tree,
+ # not just immediate children
+ for ptype in cmd.elem.findall('.//ptype'):
+ self.gen.logMsg('diag', '*** markRequired: command implicitly requires dependent type', ptype.text)
+ self.markTypeRequired(ptype.text, required)
+ else:
+ self.gen.logMsg('warn', '*** command:', name, 'IS NOT DEFINED')
+ #
+ # interface - Element for <version> or <extension>, containing
+ # <require> and <remove> tags
+ # api - string specifying API name being generated
+ # profile - string specifying API profile being generated
+ def requireAndRemoveFeatures(self, interface, api, profile):
+ """Process <recquire> and <remove> tags for a <version> or <extension>"""
+ # <require> marks things that are required by this version/profile
+ for feature in interface.findall('require'):
+ if (matchAPIProfile(api, profile, feature)):
+ self.markRequired(feature,True)
+ # <remove> marks things that are removed by this version/profile
+ for feature in interface.findall('remove'):
+ if (matchAPIProfile(api, profile, feature)):
+ self.markRequired(feature,False)
+ #
+ # generateFeature - generate a single type / enum / command,
+ # and all its dependencies as needed.
+ # fname - name of feature (<type>/<enum>/<command>
+ # ftype - type of feature, 'type' | 'enum' | 'command'
+ # dictionary - of *Info objects - self.{type|enum|cmd}dict
+ # genProc - bound function pointer for self.gen.gen{Type|Enum|Cmd}
+ def generateFeature(self, fname, ftype, dictionary, genProc):
+ f = self.lookupElementInfo(fname, dictionary)
+ if (f == None):
+ # No such feature. This is an error, but reported earlier
+ self.gen.logMsg('diag', '*** No entry found for feature', fname,
+ 'returning!')
+ return
+ #
+ # If feature isn't required, or has already been declared, return
+ if (not f.required):
+ self.gen.logMsg('diag', '*** Skipping', ftype, fname, '(not required)')
+ return
+ if (f.declared):
+ self.gen.logMsg('diag', '*** Skipping', ftype, fname, '(already declared)')
+ return
+ #
+ # Pull in dependent type declaration(s) of the feature.
+ # For types, there may be one in the 'required' attribute of the element
+ # For commands, there may be many in <ptype> tags within the element
+ # For enums, no dependencies are allowed (though perhasps if you
+ # have a uint64 enum, it should require GLuint64)
+ if (ftype == 'type'):
+ if ('requires' in f.elem.attrib):
+ depname = f.elem.get('requires')
+ self.gen.logMsg('diag', '*** Generating required dependent type',
+ depname)
+ self.generateFeature(depname, 'type', self.typedict,
+ self.gen.genType)
+ elif (ftype == 'command'):
+ for ptype in f.elem.findall('.//ptype'):
+ depname = ptype.text
+ self.gen.logMsg('diag', '*** Generating required parameter type',
+ depname)
+ self.generateFeature(depname, 'type', self.typedict,
+ self.gen.genType)
+ #
+ # Actually generate the type only if emitting declarations
+ if self.emitFeatures:
+ self.gen.logMsg('diag', '*** Emitting', ftype, 'decl for', fname)
+ genProc(f, fname)
+ else:
+ self.gen.logMsg('diag', '*** Skipping', ftype, fname,
+ '(not emitting this feature)')
+ # Always mark feature declared, as though actually emitted
+ f.declared = True
+ #
+ # generateRequiredInterface - generate all interfaces required
+ # by an API version or extension
+ # interface - Element for <version> or <extension>
+ def generateRequiredInterface(self, interface):
+ """Generate required C interface for specified API version/extension"""
+ #
+ # Loop over all features inside all <require> tags.
+ # <remove> tags are ignored (handled in pass 1).
+ for features in interface.findall('require'):
+ for t in features.findall('type'):
+ self.generateFeature(t.get('name'), 'type', self.typedict,
+ self.gen.genType)
+ for e in features.findall('enum'):
+ self.generateFeature(e.get('name'), 'enum', self.enumdict,
+ self.gen.genEnum)
+ for c in features.findall('command'):
+ self.generateFeature(c.get('name'), 'command', self.cmddict,
+ self.gen.genCmd)
+ #
+ # apiGen(genOpts) - generate interface for specified versions
+ # genOpts - GeneratorOptions object with parameters used
+ # by the Generator object.
+ def apiGen(self, genOpts):
+ """Generate interfaces for the specified API type and range of versions"""
+ #
+ self.gen.logMsg('diag', '*******************************************')
+ self.gen.logMsg('diag', ' Registry.apiGen file:', genOpts.filename,
+ 'api:', genOpts.apiname,
+ 'profile:', genOpts.profile)
+ self.gen.logMsg('diag', '*******************************************')
+ #
+ self.genOpts = genOpts
+ # Reset required/declared flags for all features
+ self.apiReset()
+ #
+ # Compile regexps used to select versions & extensions
+ regVersions = re.compile(self.genOpts.versions)
+ regEmitVersions = re.compile(self.genOpts.emitversions)
+ regAddExtensions = re.compile(self.genOpts.addExtensions)
+ regRemoveExtensions = re.compile(self.genOpts.removeExtensions)
+ #
+ # Get all matching API versions & add to list of FeatureInfo
+ features = []
+ apiMatch = False
+ for key in self.apidict:
+ fi = self.apidict[key]
+ api = fi.elem.get('api')
+ if (api == self.genOpts.apiname):
+ apiMatch = True
+ if (regVersions.match(fi.number)):
+ # Matches API & version #s being generated. Mark for
+ # emission and add to the features[] list .
+ # @@ Could use 'declared' instead of 'emit'?
+ fi.emit = (regEmitVersions.match(fi.number) != None)
+ features.append(fi)
+ if (not fi.emit):
+ self.gen.logMsg('diag', '*** NOT tagging feature api =', api,
+ 'name =', fi.name, 'number =', fi.number,
+ 'for emission (does not match emitversions pattern)')
+ else:
+ self.gen.logMsg('diag', '*** NOT including feature api =', api,
+ 'name =', fi.name, 'number =', fi.number,
+ '(does not match requested versions)')
+ else:
+ self.gen.logMsg('diag', '*** NOT including feature api =', api,
+ 'name =', fi.name,
+ '(does not match requested API)')
+ if (not apiMatch):
+ self.gen.logMsg('warn', '*** No matching API versions found!')
+ #
+ # Get all matching extensions & add to the list.
+ # Start with extensions tagged with 'api' pattern matching the API
+ # being generated. Add extensions matching the pattern specified in
+ # regExtensions, then remove extensions matching the pattern
+ # specified in regRemoveExtensions
+ for key in self.extdict:
+ ei = self.extdict[key]
+ extName = ei.name
+ include = False
+ #
+ # Include extension if defaultExtensions is not None and if the
+ # 'supported' attribute matches defaultExtensions. The regexp in
+ # 'supported' must exactly match defaultExtensions, so bracket
+ # it with ^(pat)$.
+ pat = '^(' + ei.elem.get('supported') + ')$'
+ if (self.genOpts.defaultExtensions and
+ re.match(pat, self.genOpts.defaultExtensions)):
+ self.gen.logMsg('diag', '*** Including extension',
+ extName, "(defaultExtensions matches the 'supported' attribute)")
+ include = True
+ #
+ # Include additional extensions if the extension name matches
+ # the regexp specified in the generator options. This allows
+ # forcing extensions into an interface even if they're not
+ # tagged appropriately in the registry.
+ if (regAddExtensions.match(extName) != None):
+ self.gen.logMsg('diag', '*** Including extension',
+ extName, '(matches explicitly requested extensions to add)')
+ include = True
+ # Remove extensions if the name matches the regexp specified
+ # in generator options. This allows forcing removal of
+ # extensions from an interface even if they're tagged that
+ # way in the registry.
+ if (regRemoveExtensions.match(extName) != None):
+ self.gen.logMsg('diag', '*** Removing extension',
+ extName, '(matches explicitly requested extensions to remove)')
+ include = False
+ #
+ # If the extension is to be included, add it to the
+ # extension features list.
+ if (include):
+ ei.emit = True
+ features.append(ei)
+ else:
+ self.gen.logMsg('diag', '*** NOT including extension',
+ extName, '(does not match api attribute or explicitly requested extensions)')
+ #
+ # Sort the extension features list, if a sort procedure is defined
+ if (self.genOpts.sortProcedure):
+ self.genOpts.sortProcedure(features)
+ #
+ # Pass 1: loop over requested API versions and extensions tagging
+ # types/commands/features as required (in an <require> block) or no
+ # longer required (in an <exclude> block). It is possible to remove
+ # a feature in one version and restore it later by requiring it in
+ # a later version.
+ # If a profile other than 'None' is being generated, it must
+ # match the profile attribute (if any) of the <require> and
+ # <remove> tags.
+ self.gen.logMsg('diag', '*** PASS 1: TAG FEATURES ********************************************')
+ for f in features:
+ self.gen.logMsg('diag', '*** PASS 1: Tagging required and removed features for',
+ f.name)
+ self.requireAndRemoveFeatures(f.elem, self.genOpts.apiname, self.genOpts.profile)
+ #
+ # Pass 2: loop over specified API versions and extensions printing
+ # declarations for required things which haven't already been
+ # generated.
+ self.gen.logMsg('diag', '*** PASS 2: GENERATE INTERFACES FOR FEATURES ************************')
+ self.gen.beginFile(self.genOpts)
+ for f in features:
+ self.gen.logMsg('diag', '*** PASS 2: Generating interface for',
+ f.name)
+ emit = self.emitFeatures = f.emit
+ if (not emit):
+ self.gen.logMsg('diag', '*** PASS 2: NOT declaring feature',
+ f.elem.get('name'), 'because it is not tagged for emission')
+ # Generate the interface (or just tag its elements as having been
+ # emitted, if they haven't been).
+ self.gen.beginFeature(f.elem, emit)
+ self.generateRequiredInterface(f.elem)
+ self.gen.endFeature()
+ self.gen.endFile()
+ #
+ # apiReset - use between apiGen() calls to reset internal state
+ #
+ def apiReset(self):
+ """Reset type/enum/command dictionaries before generating another API"""
+ for type in self.typedict:
+ self.typedict[type].resetState()
+ for enum in self.enumdict:
+ self.enumdict[enum].resetState()
+ for cmd in self.cmddict:
+ self.cmddict[cmd].resetState()
+ for cmd in self.apidict:
+ self.apidict[cmd].resetState()
+ #
+ # validateGroups - check that group= attributes match actual groups
+ #
+ def validateGroups(self):
+ """Validate group= attributes on <param> and <proto> tags"""
+ # Keep track of group names not in <group> tags
+ badGroup = {}
+ self.gen.logMsg('diag', '*** VALIDATING GROUP ATTRIBUTES ***')
+ for cmd in self.reg.findall('commands/command'):
+ proto = cmd.find('proto')
+ funcname = cmd.find('proto/name').text
+ if ('group' in proto.attrib.keys()):
+ group = proto.get('group')
+ # self.gen.logMsg('diag', '*** Command ', funcname, ' has return group ', group)
+ if (group not in self.groupdict.keys()):
+ # self.gen.logMsg('diag', '*** Command ', funcname, ' has UNKNOWN return group ', group)
+ if (group not in badGroup.keys()):
+ badGroup[group] = 1
+ else:
+ badGroup[group] = badGroup[group] + 1
+ for param in cmd.findall('param'):
+ pname = param.find('name')
+ if (pname != None):
+ pname = pname.text
+ else:
+ pname = type.get('name')
+ if ('group' in param.attrib.keys()):
+ group = param.get('group')
+ if (group not in self.groupdict.keys()):
+ # self.gen.logMsg('diag', '*** Command ', funcname, ' param ', pname, ' has UNKNOWN group ', group)
+ if (group not in badGroup.keys()):
+ badGroup[group] = 1
+ else:
+ badGroup[group] = badGroup[group] + 1
+ if (len(badGroup.keys()) > 0):
+ self.gen.logMsg('diag', '*** SUMMARY OF UNRECOGNIZED GROUPS ***')
+ for key in sorted(badGroup.keys()):
+ self.gen.logMsg('diag', ' ', key, ' occurred ', badGroup[key], ' times')
diff --git a/glew/auto/EGL-Registry/api/registry.rnc b/glew/auto/EGL-Registry/api/registry.rnc
new file mode 100644
index 0000000..be70668
--- /dev/null
+++ b/glew/auto/EGL-Registry/api/registry.rnc
@@ -0,0 +1,270 @@
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+# Relax NG schema for Khronos Registry XML
+# See https://www.github.com/KhronosGroup/EGL-Registry
+#
+# Last modified 2017/02/03
+# This definition is subject to change (mostly in the form of additions)
+
+namespace xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
+
+# Toplevel is a <registry> tag.
+# May be led by an optional <comment> tag containing e.g. copyrights.
+start = element registry {
+ (
+ element comment { text } ? |
+ Types * |
+ Groups * |
+ Enums * |
+ Commands * |
+ Feature * |
+ Extensions *
+ ) *
+}
+
+# <types> defines a group of types
+Types = element types {
+ Type *
+}
+
+# <type> defines a single type. It is usually a C typedef but
+# may contain arbitrary C code.
+# name - name of this type, if not present in the <name> tag
+# api - matches a <feature> api attribute, if present
+# requires - name of another type definition required by this one
+# type - "group", if present, indicating a group of values in the
+# corresponding <enums> definition.
+# comment - unused
+# <apientry /> - substitutes for an APIENTRY-style macro on output
+# <name> - contains typename
+Type = element type {
+ attribute api { text } ? ,
+ attribute requires { text } ? ,
+ attribute name { TypeName } ? ,
+ attribute type { text } ? ,
+ Comment ? ,
+ text ,
+ element apientry { text } ? ,
+ text ,
+ element name { TypeName } ? ,
+ text
+}
+
+# <groups> defines a group of enum groups
+Groups = element groups {
+ Group *
+}
+
+# <group> defines a single enum group. Enums may
+# be in multiple groups.
+# name - group name
+# comment - unused
+# <enum name=""> - members of the group
+
+Group = element group {
+ Name ,
+ Comment ? ,
+ element enum { Name } *
+}
+
+# <enums> defines a group of enumerants
+# namespace - identifies a numeric namespace
+# group - identifies a functional subset of the namespace - same as <group name="">
+# start, end - beginning and end of a numeric range in the namespace
+# vendor - owner of the numeric range
+# type - "bitmask", if present
+# comment - unused
+Enums = element enums {
+ attribute namespace { text } ? ,
+ attribute group { text } ? ,
+ attribute type { text } ? ,
+ attribute start { Integer } ? ,
+ attribute end { Integer } ? ,
+ Vendor ? ,
+ Comment ? ,
+ (Enum | Unused) *
+}
+# <enum> defines a single enumerant
+# value - integer (including hex) value of the enumerant
+# api - matches a <feature> api attribute, if present
+# type - "u" (unsigned), "ull" (uint64), or integer if not present
+# name - enumerant name
+# alias - another enumerant this is semantically identical to
+# comment - unused
+Enum = element enum {
+ (
+ attribute value { Integer } &
+ attribute api { text } ? &
+ attribute type { TypeSuffix } ? &
+ attribute name { text } &
+ attribute alias { text } ? &
+ Comment ?
+ )
+}
+# <unused> defines a range of enumerants not currently being used
+# start, end - beginning and end of an unused numeric range
+# vendor - unused
+# comment - unused
+Unused = element unused {
+ attribute start { Integer } ,
+ attribute end { Integer } ? ,
+ Vendor ? ,
+ Comment ?
+}
+# <commands> defines a group of commands
+# namespace - identifies a function namespace
+Commands = element commands {
+ attribute namespace { text } ? ,
+ Command *
+}
+# <command> defines a single command
+# <proto> is the C function prototype, including the return type
+# <param> are function parameters, in order
+# <ptype> is a <type> name, if present
+# <name> is the function / parameter name
+# The textual contents of <proto> and <param> should be legal C
+# for those parts of a function declaration.
+# <alias> - denotes function aliasing
+# name - name of aliased function
+# <vecequiv> - denotes scalar / vector function equivalence
+# name - name of corresponding vector form, e.g. (glColor3f -> glColor3fv)
+# <glx> - information about GLX protocol
+# type - "render", "single", or "vendor" for GLXRender, GLXSingle, GLXVendorPrivate{WithReply}
+# opcode - numeric opcode of specified type for this function
+# name - if present, protocol name (defaults to command name)
+# comment - unused
+Command = element command {
+ Comment ? ,
+ element proto {
+ attribute group { text } ? ,
+ text ,
+ element ptype { TypeName } ? ,
+ text ,
+ element name { text } ,
+ text
+ } ,
+ element param {
+ attribute group { text } ? ,
+ attribute len { text } ? ,
+ text ,
+ element ptype { TypeName } ? ,
+ text ,
+ element name { text } ,
+ text
+ } * ,
+ (
+ element alias {
+ Name
+ } ? &
+ element vecequiv {
+ Name
+ } ? &
+ element glx {
+ attribute type { text } ,
+ attribute opcode { xsd:integer } ,
+ Name ? ,
+ Comment ?
+ } *
+ )
+}
+# Each <feature> defines the interface of an API version (e.g. OpenGL 1.2)
+# api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not
+# neccessarily an actual API name
+# name - version name (C preprocessor name, e.g. GL_VERSION_4_2)
+# number - version number, e.g. 4.2
+# protect - additional #ifdef symbol to place around the feature
+# <require> / <remove> contains features to require or remove in
+# this version
+# profile - only require/remove when generated profile matches
+# comment - unused
+Feature = element feature {
+ attribute api { text } ,
+ Name ,
+ attribute number { xsd:float } ,
+ attribute protect { text } ?,
+ Comment ? ,
+ (
+ element require {
+ ProfileName ? ,
+ Comment ? ,
+ InterfaceElement *
+ } |
+ element remove {
+ ProfileName ? ,
+ Comment ? ,
+ InterfaceElement *
+ }
+ ) *
+}
+Extensions = element extensions {
+ Extension *
+}
+# Defines the interface of an API <extension>. Like a <feature>
+# tag, but with a slightly different api attribute.
+# api - regexp pattern matching one or more API tags, indicating
+# which APIs the extension is known to work with. The only
+# syntax supported is <name>{|<name>}* and each name must
+# exactly match an API being generated (implicit ^$ surrounding).
+# In addition, <require> / <remove> tags also support an
+# api attribute:
+# api - only require/remove these features for the matching API.
+# Not a regular expression.
+Extension = element extension {
+ Name ,
+ attribute protect { text } ?,
+ attribute supported { StringGroup } ? ,
+ Comment ? ,
+ (
+ element require {
+ attribute api { text } ? ,
+ ProfileName ? ,
+ Comment ? ,
+ InterfaceElement *
+ } |
+ element remove {
+ attribute api { text } ? ,
+ ProfileName ? ,
+ Comment ? ,
+ InterfaceElement *
+ }
+ ) *
+}
+# Contents of a <require> / <remove> tag, defining a group
+# of features to require or remove.
+# <type> / <enum> / <command> all have attributes
+# name - feature name which must match
+InterfaceElement =
+ element type {
+ Name ,
+ Comment ?
+ } |
+ element enum {
+ Name ,
+ Comment ?
+ } |
+ element command {
+ Name ,
+ Comment ?
+ }
+
+# Integers are allowed to be either decimal or C-hex (0x[0-9A-F]+), but
+# XML Schema types don't seem to support hex notation, so we use this
+# as a placeholder.
+Integer = text
+
+# TypeName is an argument/return value C type name
+TypeName = text
+
+# TypeSuffix is a C numeric type suffix, e.g. 'u' or 'ull'
+TypeSuffix = text
+
+# StringGroup is a regular expression with an implicit
+# '^(' and ')$' bracketing it.
+StringGroup = text
+
+# Repeatedly used attributes
+ProfileName = attribute profile { text }
+Vendor = attribute vendor { text }
+Comment = attribute comment { text }
+Name = attribute name { text }
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_GLES_layers.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_GLES_layers.txt
new file mode 100644
index 0000000..eb2a7d9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_GLES_layers.txt
@@ -0,0 +1,64 @@
+Name
+
+ ANDROID_GLES_layers
+
+Name Strings
+
+ EGL_ANDROID_GLES_layers
+
+Contributors
+
+ Cody Northrop
+
+Contact
+
+ Cody Northrop, Google LLC (cnorthrop 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, March 3, 2019
+
+Number
+
+ EGL Extension #132
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.5 or EGL_EXT_client_extensions
+
+Overview
+
+ This extension indicates the EGL loader supports GLES layering on Android.
+ It does not add any requirements to drivers or hardware.
+
+ See frameworks/native/opengl/libs/EGL/GLES_layers.md in Android for
+ more information.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Issues
+
+ None
+
+Revision History
+
+#1 (Cody Northrop, March 3, 2019)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_blob_cache.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_blob_cache.txt
new file mode 100644
index 0000000..e984694
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_blob_cache.txt
@@ -0,0 +1,211 @@
+Name
+
+ ANDROID_blob_cache
+
+Name Strings
+
+ EGL_ANDROID_blob_cache
+
+Contributors
+
+ Jamie Gennis
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, December 13, 2012
+
+Number
+
+ EGL Extension #48
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.4 Specification
+
+Overview
+
+ Shader compilation and optimization has been a troublesome aspect of OpenGL
+ programming for a long time. It can consume seconds of CPU cycles during
+ application start-up. Additionally, state-based re-compiles done
+ internally by the drivers add an unpredictable element to application
+ performance tuning, often leading to occasional pauses in otherwise smooth
+ animations.
+
+ This extension provides a mechanism through which client API
+ implementations may cache shader binaries after they are compiled. It may
+ then retrieve those cached shaders during subsequent executions of the same
+ program. The management of the cache is handled by the application (or
+ middleware), allowing it to be tuned to a particular platform or
+ environment.
+
+ While the focus of this extension is on providing a persistent cache for
+ shader binaries, it may also be useful for caching other data. This is
+ perfectly acceptable, but the guarantees provided (or lack thereof) were
+ designed around the shader use case.
+
+ Note that although this extension is written as if the application
+ implements the caching functionality, on the Android OS it is implemented
+ as part of the Android EGL module. This extension is not exposed to
+ applications on Android, but will be used automatically in every
+ application that uses EGL if it is supported by the underlying
+ device-specific EGL implementation.
+
+New Types
+
+ /*
+ * EGLsizeiANDROID is a signed integer type for representing the size of a
+ * memory buffer.
+ */
+ #include <khrplatform.h>
+ typedef khronos_ssize_t EGLsizeiANDROID;
+
+ /*
+ * EGLSetBlobFunc is a pointer to an application-provided function that a
+ * client API implementation may use to insert a key/value pair into the
+ * cache.
+ */
+ typedef void (*EGLSetBlobFuncANDROID) (const void* key,
+ EGLsizeiANDROID keySize, const void* value, EGLsizeiANDROID valueSize)
+
+ /*
+ * EGLGetBlobFunc is a pointer to an application-provided function that a
+ * client API implementation may use to retrieve a cached value from the
+ * cache.
+ */
+ typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void* key,
+ EGLsizeiANDROID keySize, void* value, EGLsizeiANDROID valueSize)
+
+New Procedures and Functions
+
+ void eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
+ EGLSetBlobFuncANDROID set,
+ EGLGetBlobFuncANDROID get);
+
+New Tokens
+
+ None.
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add a new subsection after Section 3.8, page 50
+ (Synchronization Primitives)
+
+ "3.9 Persistent Caching
+
+ In order to facilitate persistent caching of internal client API state that
+ is slow to compute or collect, the application may specify callback
+ function pointers through which the client APIs can request data be cached
+ and retrieved. The command
+
+ void eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
+ EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+
+ sets the callback function pointers that client APIs associated with
+ display <dpy> can use to interact with caching functionality provided by
+ the application. <set> points to a function that inserts a new value into
+ the cache and associates it with the given key. <get> points to a function
+ that retrieves from the cache the value associated with a given key. The
+ semantics of these callback functions are described in Section 3.9.1 (Cache
+ Operations).
+
+ Cache functions may only be specified once during the lifetime of an
+ EGLDisplay. The <set> and <get> functions may be called at any time and
+ from any thread from the time at which eglSetBlobCacheFuncsANDROID is
+ called until the time that the last resource associated with <dpy> is
+ deleted and <dpy> itself is terminated. Concurrent calls to these
+ functions from different threads is also allowed.
+
+ If eglSetBlobCacheFuncsANDROID generates an error then all client APIs must
+ behave as though eglSetBlobCacheFuncsANDROID was not called for the display
+ <dpy>. If <set> or <get> is NULL then an EGL_BAD_PARAMETER error is
+ generated. If a successful eglSetBlobCacheFuncsANDROID call was already
+ made for <dpy> and the display has not since been terminated then an
+ EGL_BAD_PARAMETER error is generated.
+
+ 3.9.1 Cache Operations
+
+ To insert a new binary value into the cache and associate it with a given
+ key, a client API implementation can call the application-provided callback
+ function
+
+ void (*set) (const void* key, EGLsizeiANDROID keySize,
+ const void* value, EGLsizeiANDROID valueSize)
+
+ <key> and <value> are pointers to the beginning of the key and value,
+ respectively, that are to be inserted. <keySize> and <valueSize> specify
+ the size in bytes of the data pointed to by <key> and <value>,
+ respectively.
+
+ No guarantees are made as to whether a given key/value pair is present in
+ the cache after the set call. If a different value has been associated
+ with the given key in the past then it is undefined which value, if any, is
+ associated with the key after the set call. Note that while there are no
+ guarantees, the cache implementation should attempt to cache the most
+ recently set value for a given key.
+
+ To retrieve the binary value associated with a given key from the cache, a
+ client API implementation can call the application-provided callback
+ function
+
+ EGLsizeiANDROID (*get) (const void* key, EGLsizeiANDROID keySize,
+ void* value, EGLsizeiANDROID valueSize)
+
+ <key> is a pointer to the beginning of the key. <keySize> specifies the
+ size in bytes of the binary key pointed to by <key>. If the cache contains
+ a value associated with the given key then the size of that binary value in
+ bytes is returned. Otherwise 0 is returned.
+
+ If the cache contains a value for the given key and its size in bytes is
+ less than or equal to <valueSize> then the value is written to the memory
+ pointed to by <value>. Otherwise nothing is written to the memory pointed
+ to by <value>.
+
+Issues
+
+ 1. How should errors be handled in the callback functions?
+
+ RESOLVED: No guarantees are made about the presence of values in the cache,
+ so there should not be a need to return error information to the client API
+ implementation. The cache implementation can simply drop a value if it
+ encounters an error during the 'set' callback. Similarly, it can simply
+ return 0 if it encouters an error in a 'get' callback.
+
+ 2. When a client API driver gets updated, that may need to invalidate
+ previously cached entries. How can the driver handle this situation?
+
+ RESPONSE: There are a number of ways the driver can handle this situation.
+ The recommended way is to include the driver version in all cache keys.
+ That way each driver version will use a set of cache keys that are unique
+ to that version, and conflicts should never occur. Updating the driver
+ could then leave a number of values in the cache that will never be
+ requested again. If needed, the cache implementation can handle those
+ values in some way, but the driver does not need to take any special
+ action.
+
+ 3. How much data can be stored in the cache?
+
+ RESPONSE: This is entirely dependent upon the cache implementation.
+ Presumably it will be tuned to store enough data to be useful, but not
+ enough to become problematic. :)
+
+Revision History
+
+#3 (Jon Leech, December 13, 2012)
+ - Fix typo in New Functions section & assign extension #.
+
+#2 (Jamie Gennis, April 25, 2011)
+ - Swapped the order of the size and pointer arguments to the get and set
+ functions.
+
+#1 (Jamie Gennis, April 22, 2011)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt
new file mode 100644
index 0000000..3e0c4a9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt
@@ -0,0 +1,197 @@
+Name
+
+ ANDROID_create_native_client_buffer
+
+Name Strings
+
+ EGL_ANDROID_create_native_client_buffer
+
+Contributors
+
+ Craig Donner
+
+Contact
+
+ Craig Donner, Google Inc. (cdonner 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, January 19, 2016
+
+Number
+
+ EGL Extension #99
+
+Dependencies
+
+ Requires EGL 1.2.
+
+ EGL_ANDROID_image_native_buffer and EGL_KHR_image_base are required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification as modified by EGL_KHR_image_base and
+ EGL_ANDROID_image_native_buffer.
+
+Overview
+
+ This extension allows creating an EGLClientBuffer backed by an Android
+ window buffer (struct ANativeWindowBuffer) which can be later used to
+ create an EGLImage.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ EGLClientBuffer eglCreateNativeClientBufferANDROID(
+ const EGLint *attrib_list)
+
+New Tokens
+
+ EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+ EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+ EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add the following to section 2.5.1 "EGLImage Specification" (as modified by
+ the EGL_KHR_image_base and EGL_ANDROID_image_native_buffer specifications),
+ below the description of eglCreateImageKHR:
+
+ "The command
+
+ EGLClientBuffer eglCreateNativeClientBufferANDROID(
+ const EGLint *attrib_list)
+
+ may be used to create an EGLClientBuffer backed by an ANativeWindowBuffer
+ struct. EGL implementations must guarantee that the lifetime of the
+ returned EGLClientBuffer is at least as long as the EGLImage(s) it is bound
+ to, following the lifetime semantics described below in section 2.5.2; the
+ EGLClientBuffer must be destroyed no earlier than when all of its associated
+ EGLImages are destroyed by eglDestroyImageKHR. <attrib_list> is a list of
+ attribute-value pairs which is used to specify the dimensions, format, and
+ usage of the underlying buffer structure. If <attrib_list> is non-NULL, the
+ last attribute specified in the list must be EGL_NONE.
+
+ Attribute names accepted in <attrib_list> are shown in Table aaa,
+ together with the <target> for which each attribute name is valid, and
+ the default value used for each attribute if it is not included in
+ <attrib_list>.
+
+ +---------------------------------+----------------------+---------------+
+ | Attribute | Description | Default Value |
+ | | | |
+ +---------------------------------+----------------------+---------------+
+ | EGL_NONE | Marks the end of the | N/A |
+ | | attribute-value list | |
+ | EGL_WIDTH | The width of the | 0 |
+ | | buffer data | |
+ | EGL_HEIGHT | The height of the | 0 |
+ | | buffer data | |
+ | EGL_RED_SIZE | The bits of Red in | 0 |
+ | | the color buffer | |
+ | EGL_GREEN_SIZE | The bits of Green in | 0 |
+ | | the color buffer | |
+ | EGL_BLUE_SIZE | The bits of Blue in | 0 |
+ | | the color buffer | |
+ | EGL_ALPHA_SIZE | The bits of Alpha in | 0 |
+ | | the color buffer | |
+ | | buffer data | |
+ | EGL_NATIVE_BUFFER_USAGE_ANDROID | The usage bits of | 0 |
+ | | the buffer data | |
+ +---------------------------------+----------------------+---------------+
+ Table aaa. Legal attributes for eglCreateNativeClientBufferANDROID
+ <attrib_list> parameter.
+
+ The maximum width and height may depend on the amount of available memory,
+ which may also depend on the format and usage flags. The values of
+ EGL_RED_SIZE, EGL_GREEN_SIZE, and EGL_BLUE_SIZE must be non-zero and
+ correspond to a valid pixel format for the implementation. If EGL_ALPHA_SIZE
+ is non-zero then the combination of all four sizes must correspond to a
+ valid pixel format for the implementation. The
+ EGL_NATIVE_BUFFER_USAGE_ANDROID flag may include any of the following bits:
+
+ EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID: Indicates that the
+ created buffer must have a hardware-protected path to external display
+ sink. If a hardware-protected path is not available, then either don't
+ composite only this buffer (preferred) to the external sink, or (less
+ desirable) do not route the entire composition to the external sink.
+
+ EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID: The buffer will be
+ used to create a renderbuffer. This flag must not be set if
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID is set.
+
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID: The buffer will be used to
+ create a texture. This flag must not be set if
+ EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID is set.
+
+ Errors
+
+ If eglCreateNativeClientBufferANDROID fails, NULL will be returned, no
+ memory will be allocated, and one of the following errors will be
+ generated:
+
+ * If the value of EGL_WIDTH or EGL_HEIGHT is not positive, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If the combination of the values of EGL_RED_SIZE, EGL_GREEN_SIZE,
+ EGL_BLUE_SIZE, and EGL_ALPHA_SIZE is not a valid pixel format for the
+ EGL implementation, the error EGL_BAD_PARAMETER is generated.
+
+ * If the value of EGL_NATIVE_BUFFER_ANDROID is not a valid combination
+ of gralloc usage flags for the EGL implementation, or is incompatible
+ with the value of EGL_FORMAT, the error EGL_BAD_PARAMETER is
+ Generated.
+
+ * If both the EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID and
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID are set in the value of
+ EGL_NATIVE_BUFFER_USAGE_ANDROID, the error EGL_BAD_PARAMETER is
+ Generated."
+
+Issues
+
+ 1. Should this extension define what combinations of formats and usage flags
+ EGL implementations are required to support?
+
+ RESOLVED: Partially.
+
+ The set of valid color combinations is implementation-specific and may
+ depend on additional EGL extensions, but generally RGB565 and RGBA888 should
+ be supported. The particular valid combinations for a given Android version
+ and implementation should be documented by that version.
+
+ 2. Should there be an eglDestroyNativeClientBufferANDROID to destroy the
+ client buffers created by this extension?
+
+ RESOLVED: No.
+
+ A destroy function would add several complications:
+
+ a) ANativeWindowBuffer is a reference counted object, may be used
+ outside of EGL.
+ b) The same buffer may back multiple EGLImages, though this usage may
+ result in undefined behavior.
+ c) The interactions between the lifetimes of EGLImages and their
+ EGLClientBuffers would become needlessly complex.
+
+ Because ANativeWindowBuffer is a reference counted object, implementations
+ of this extension should ensure the buffer has a lifetime at least as long
+ as a generated EGLImage (via EGL_ANDROID_image_native_buffer). The simplest
+ method is to increment the reference count of the buffer in
+ eglCreateImagKHR, and then decrement it in eglDestroyImageKHR. This should
+ ensure proper lifetime semantics.
+
+Revision History
+
+#2 (Craig Donner, April 15, 2016)
+ - Set color formats and usage bits explicitly using additional attributes,
+ and add value for new token EGL_NATIVE_BUFFER_USAGE_ANDROID.
+
+#1 (Craig Donner, January 19, 2016)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt
new file mode 100644
index 0000000..a15dfa8
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt
@@ -0,0 +1,102 @@
+Name
+
+ ANDROID_framebuffer_target
+
+Name Strings
+
+ EGL_ANDROID_framebuffer_target
+
+Contributors
+
+ Jamie Gennis
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1, September 20, 2012
+
+Number
+
+ EGL Extension #47
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.4 Specification
+
+Overview
+
+ Android supports a number of different ANativeWindow implementations that
+ can be used to create an EGLSurface. One implementation, which is used to
+ send the result of performing window composition to a display, may have
+ some device-specific restrictions. Because of this, some EGLConfigs may
+ be incompatible with these ANativeWindows. This extension introduces a
+ new boolean EGLConfig attribute that indicates whether the EGLConfig
+ supports rendering to an ANativeWindow for which the buffers are passed to
+ the HWComposer HAL as a framebuffer target layer.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglGetConfigAttrib and
+ the <attrib_list> parameter of eglChooseConfig:
+
+ EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Section 3.4, Configuration Management, add a row to Table 3.1.
+
+ Attribute Type Notes
+ ------------------------------ ------- ---------------------------
+ EGL_FRAMEBUFFER_TARGET_ANDROID boolean whether use as a HWComposer
+ framebuffer target layer is
+ supported
+
+ Section 3.4, Configuration Management, add a row to Table 3.4.
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ ------------------------------ ------------- --------- ----- --------
+ EGL_FRAMEBUFFER_TARGET_ANDROID EGL_DONT_CARE Exact None
+
+ Section 3.4, Configuration Management, add a paragraph at the end of the
+ subsection titled Other EGLConfig Attribute Descriptions.
+
+ EGL_FRAMEBUFFER_TARGET_ANDROID is a boolean indicating whether the
+ config may be used to create an EGLSurface from an ANativeWindow for
+ which the buffers are to be passed to HWComposer as a framebuffer
+ target layer.
+
+ Section 3.4.1, Querying Configurations, change the last paragraph as follow
+
+ EGLConfigs are not sorted with respect to the parameters
+ EGL_BIND_TO_TEXTURE_RGB, EGL_BIND_TO_TEXTURE_RGBA, EGL_CONFORMANT,
+ EGL_LEVEL, EGL_NATIVE_RENDERABLE, EGL_MAX_SWAP_INTERVAL,
+ EGL_MIN_SWAP_INTERVAL, EGL_RENDERABLE_TYPE, EGL_SURFACE_TYPE,
+ EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_RED_VALUE,
+ EGL_TRANSPARENT_GREEN_VALUE, EGL_TRANSPARENT_BLUE_VALUE, and
+ EGL_RECORDABLE_ANDROID.
+
+Issues
+
+
+Revision History
+
+#1 (Jamie Gennis, September 20, 2012)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt
new file mode 100644
index 0000000..4c0e64c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt
@@ -0,0 +1,70 @@
+Name
+
+ ANDROID_front_buffer_auto_refresh
+
+Name Strings
+
+ EGL_ANDROID_front_buffer_auto_refresh
+
+Contributors
+
+ Pablo Ceballos
+
+Contact
+
+ Pablo Ceballos, Google Inc. (pceballos 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, February 3, 2016
+
+Number
+
+ EGL Extension #XXX
+
+Dependencies
+
+ Requires EGL 1.2
+
+ This extension is written against the wording of the EGL 1.5 Specification
+
+Overview
+
+ This extension is intended for latency-sensitive applications that are doing
+ front-buffer rendering. It allows them to indicate to the Android compositor
+ that it should perform composition every time the display refreshes. This
+ removes the overhead of having to notify the compositor that the window
+ surface has been updated, but it comes at the cost of doing potentially
+ unneeded composition work if the window surface has not been updated.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
+
+Add to the list of supported tokens for eglSurfaceAttrib in section 3.5.6
+"Surface Attributes", page 43:
+
+ If attribute is EGL_ANDROID_front_buffer_auto_refresh, then value specifies
+ whether to enable or disable auto-refresh in the Android compositor when
+ doing front-buffer rendering.
+
+Issues
+
+ None
+
+Revision History
+
+#1 (Pablo Ceballos, February 3, 2016)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt
new file mode 100644
index 0000000..bf8d149
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt
@@ -0,0 +1,259 @@
+Name
+
+ ANDROID_get_frame_timestamps
+
+Name Strings
+
+ EGL_ANDROID_get_frame_timestamps
+
+Contributors
+
+ Brian Anderson
+ Dan Stoza
+ Pablo Ceballos
+ Jesse Hall
+ Fabien Sanglard
+
+Contact
+
+ Brian Anderson, Google Inc. (brianderson 'at' google.com)
+ Dan Stoza, Google Inc. (stoza 'at' google.com)
+ Pablo Ceballos, Google Inc. (pceballos 'at' google.com)
+ Jesse Hall, Google Inc. (jessehall 'at' google.com)
+ Fabien Sanglard, Google Inc. (sanglardf 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 8, April 11, 2017
+
+Number
+
+ EGL Extension #122
+
+Dependencies
+
+ Requires EGL 1.2
+
+ This extension is written against the wording of the EGL 1.5 Specification
+
+Overview
+
+ This extension allows querying various timestamps related to the composition
+ and display of window surfaces.
+
+ Some examples of how this might be used:
+ - The display present time can be used to calculate end-to-end latency
+ of the entire graphics pipeline.
+ - The queue time and rendering complete time can be used to determine
+ how long the application's rendering took to complete. Likewise, the
+ composition start time and finish time can be used to determine how
+ long the compositor's rendering work took. In combination these can be
+ used to help determine if the system is GPU or CPU bound.
+
+New Types
+
+ /*
+ * EGLnsecsANDROID is a signed integer type for representing a time in
+ * nanoseconds.
+ */
+ #include <khrplatform.h>
+ typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+
+New Procedures and Functions
+
+ EGLBoolean eglGetNextFrameIdANDROID(EGLDisplay dpy, EGLSurface surface,
+ EGLuint64KHR *frameId);
+
+ EGLBoolean eglGetCompositorTimingANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint numTimestamps,
+ const EGLint *names, EGLnsecsANDROID *values);
+
+ EGLBoolean eglGetFrameTimestampsANDROID(EGLDisplay dpy, EGLSurface surface,
+ EGLuint64KHR frameId, EGLint numTimestamps,
+ const EGLint *timestamps, EGLnsecsANDROID *values);
+
+ EGLBoolean eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint timestamp);
+
+New Tokens
+
+ EGL_TIMESTAMPS_ANDROID 0x3430
+ EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+ EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+ EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+ EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+ EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+ EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+ EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+ EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+ EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+ EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+ EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+ EGL_READS_DONE_TIME_ANDROID 0x343C
+ EGL_TIMESTAMP_PENDING_ANDROID -2
+ EGL_TIMESTAMP_INVALID_ANDROID -1
+
+Add to the list of supported tokens for eglSurfaceAttrib in section 3.5.6
+"Surface Attributes", page 43:
+
+ If attribute is EGL_TIMESTAMPS_ANDROID, then values specifies whether to
+ enable/disable timestamp collection for this surface. A value of EGL_TRUE
+ enables timestamp collection, while a value of EGL_FALSE disables it. The
+ initial value is false. If surface is not a window surface this has no
+ effect.
+Changes to Chapter 3 of the EGL 1.5 Specification (EGL Functions and Errors)
+
+ Add a new subsection under Section 3,
+
+ "3.13 Composition and Display Timestamps
+
+ The function
+
+ EGLBoolean eglGetNextFrameIdANDROID(EGLDisplay dpy, EGLSurface surface,
+ EGLuint64KHR *frameId);
+
+ Returns an identifier for the next frame to be swapped. The identifier can
+ be used to correlate a particular eglSwapBuffers with its timestamps in
+ eglGetFrameTimestampsANDROID. If any error is generated, the function will
+ return EGL_FALSE.
+
+ The function
+
+ EGLBoolean eglGetCompositorTimingANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint numTimestamps,
+ const EGLint *names, EGLnsecsANDROID *values);
+
+ allows querying anticipated timestamps and durations related to the
+ composition and display of a window surface. The values are not associated
+ with a particular frame and can be retrieved before the first swap.
+
+ The eglGetCompositorTimingANDROID function takes an array of names to
+ query and returns their values in the corresponding indices of the values
+ array. The possible names that can be queried are:
+ - EGL_COMPOSITE_DEADLINE_ANDROID - The timestamp of the next time the
+ compositor will begin composition. This is effectively the deadline
+ for when the compositor must receive a newly queued frame.
+ - EGL_COMPOSITE_INTERVAL_ANDROID - The time delta between subsequent
+ composition events.
+ - EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID - The time delta between
+ the start of composition and the expected present time of that
+ composition. This can be used to estimate the latency of the
+ actual present time.
+
+ The function
+
+ EGLBoolean eglGetFrameTimestampsANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps,
+ const EGLint *timestamps, EGLnsecsANDROID *values);
+
+ allows querying various timestamps related to the composition and display
+ of specific frames of a window surface.
+
+ The frameId indicates which frame to query. The implementation maintains a
+ limited history of timestamp data. If a query is made for a frame whose
+ timestamp history no longer exists then EGL_BAD_ACCESS is generated. If
+ timestamp collection has not been enabled for the surface then
+ EGL_BAD_SURFACE is generated. Timestamps for events that might still occur
+ will have the value EGL_TIMESTAMP_PENDING_ANDROID. Timestamps for events
+ that did not occur will have the value EGL_TIMESTAMP_INVALID_ANDROID.
+ Otherwise, the timestamp will be valid and indicate the event has occured.
+ Timestamp queries that are not supported will generate an EGL_BAD_PARAMETER
+ error. If any error is generated the function will return EGL_FALSE.
+
+ The application can poll for the timestamp of particular events by calling
+ eglGetFrameTimestamps over and over without needing to call any other EGL
+ function between calls. This is true even for the most recently swapped
+ frame. eglGetFrameTimestamps is thread safe and can be called from a
+ different thread than the swapping thread.
+
+ The eglGetFrameTimestampsANDROID function takes an array of timestamps to
+ query and returns timestamps in the corresponding indices of the values
+ array. The possible timestamps that can be queried are:
+ - EGL_REQUESTED_PRESENT_TIME_ANDROID - The time the application
+ requested this frame be presented. See EGL_ANDROID_presentation_time.
+ If the application does not request a presentation time explicitly,
+ this will correspond to buffer's queue time.
+ - EGL_RENDERING_COMPLETE_TIME_ANDROID - The time when all of the
+ application's rendering to the surface was completed.
+ - EGL_COMPOSITION_LATCH_TIME_ANDROID - The time when the compositor
+ selected this frame as the one to use for the next composition. The
+ latch is the earliest indication that the frame was submitted in time
+ to be composited.
+ - EGL_FIRST_COMPOSITION_START_TIME_ANDROID - The first time at which
+ the compositor began preparing composition for this frame.
+ - EGL_LAST_COMPOSITION_START_TIME_ANDROID - The last time at which the
+ compositor began preparing composition for this frame. If this frame
+ is composited only once, it will have the same value as
+ EGL_FIRST_COMPOSITION_START_TIME_ANDROID. If the value is not equal,
+ that indicates the subsequent frame was not submitted in time to be
+ latched by the compositor. Note: The value may not be updated for
+ every display refresh if the compositor becomes idle.
+ - EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID - The time at which
+ the compositor's rendering work for this frame finished. This will be
+ zero if composition was handled by the display and the compositor
+ didn't do any rendering.
+ - EGL_DISPLAY_PRESENT_TIME_ANDROID - The time at which this frame
+ started to scan out to the physical display.
+ - EGL_DEQUEUE_READY_TIME_ANDROID - The time when the buffer became
+ available for reuse as a buffer the client can target without
+ blocking. This is generally the point when all read commands of the
+ buffer have been submitted, but not necessarily completed.
+ - EGL_READS_DONE_TIME_ANDROID - The time at which all reads for the
+ purpose of display/composition were completed for this frame.
+
+ Not all implementations may support all of the above timestamp queries. The
+ functions
+
+ EGLBoolean eglGetCompositorTimingSupportedANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint name);
+
+ and
+
+ EGLBoolean eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,
+ EGLSurface surface, EGLint timestamp);
+
+ allows querying which values are supported by the implementations of
+ eglGetCompositorTimingANDROID and eglGetFrameTimestampSupportedANDROID
+ respectively."
+
+Issues
+
+ None
+
+Revision History
+
+#9 (Chris Forbes, June 11, 2019)
+ - Fix eglGetFrameTimestampSupportedANDROID function name in extension
+ spec to match reality
+
+#8 (Brian Anderson, April 11, 2017)
+ - Use reserved enumerant values.
+
+#7 (Brian Anderson, March 21, 2017)
+ - Differentiate between pending events and events that did not occur.
+
+#6 (Brian Anderson, March 16, 2017)
+ - Remove DISPLAY_RETIRE_TIME_ANDROID.
+
+#5 (Brian Anderson, January 13, 2017)
+ - Add eglGetCompositorTimingANDROID.
+
+#4 (Brian Anderson, January 10, 2017)
+ - Use an absolute frameId rather than a relative framesAgo.
+
+#3 (Brian Anderson, November 30, 2016)
+ - Add EGL_COMPOSITION_LATCH_TIME_ANDROID,
+ EGL_LAST_COMPOSITION_START_TIME_ANDROID, and
+ EGL_DEQUEUE_READY_TIME_ANDROID.
+
+#2 (Brian Anderson, July 22, 2016)
+ - Replace EGL_QUEUE_TIME_ANDROID with EGL_REQUESTED_PRESENT_TIME_ANDROID.
+ - Add DISPLAY_PRESENT_TIME_ANDROID.
+
+#1 (Pablo Ceballos, May 31, 2016)
+ - Initial draft.
+
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt
new file mode 100644
index 0000000..285bba4
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt
@@ -0,0 +1,102 @@
+Name
+
+ ANDROID_get_native_client_buffer
+
+Name Strings
+
+ EGL_ANDROID_get_native_client_buffer
+
+Contributors
+
+ Craig Donner
+
+Contact
+
+ Craig Donner, Google Inc. (cdonner 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, October 11, 2017
+
+Number
+
+ EGL Extension #123
+
+Dependencies
+
+ Requires EGL 1.2.
+
+ EGL_ANDROID_image_native_buffer and EGL_KHR_image_base are required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification as modified by EGL_KHR_image_base and
+ EGL_ANDROID_image_native_buffer.
+
+Overview
+
+ This extension allows creating an EGLClientBuffer from an Android
+ AHardwareBuffer object which can be later used to create an EGLImage.
+
+New Types
+
+ struct AHardwareBuffer
+
+New Procedures and Functions
+
+ EGLClientBuffer eglGetNativeClientBufferANDROID(const struct AHardwareBuffer *buffer)
+
+New Tokens
+
+ None
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add the following to section 2.5.1 "EGLImage Specification" (as modified by
+ the EGL_KHR_image_base and EGL_ANDROID_image_native_buffer specifications),
+ below the description of eglCreateImageKHR:
+
+ "The command
+
+ EGLClientBuffer eglGetNativeClientBufferANDROID(
+ const struct AHardwareBuffer *buffer)
+
+ may be used to create an EGLClientBuffer from an AHardwareBuffer object.
+ EGL implementations must guarantee that the lifetime of the returned
+ EGLClientBuffer is at least as long as the EGLImage(s) it is bound to,
+ following the lifetime semantics described below in section 2.5.2; the
+ EGLClientBuffer must be destroyed no earlier than when all of its associated
+ EGLImages are destroyed by eglDestroyImageKHR.
+
+ Errors
+
+ If eglGetNativeClientBufferANDROID fails, NULL will be returned, no
+ memory will be allocated, and the following error will be generated:
+
+ * If the value of buffer is NULL, the error EGL_BAD_PARAMETER is
+ generated.
+
+Issues
+
+ 1. Should this extension define what particular AHardwareBuffer formats EGL
+ implementations are required to support?
+
+ RESOLVED: No.
+
+ The set of valid formats is implementation-specific and may depend on
+ additional EGL extensions. The particular valid combinations for a given
+ Android version and implementation should be documented by that version.
+
+Revision History
+
+#3 (Jesse Hall, October 11, 2017)
+ - Assigned extension number, fixed minor issues for publication
+
+#2 (Craig Donner, February 17, 2017)
+ - Fix typographical errors.
+
+#1 (Craig Donner, January 27, 2017)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt
new file mode 100644
index 0000000..7392d4f
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt
@@ -0,0 +1,108 @@
+Name
+
+ ANDROID_image_native_buffer
+
+Name Strings
+
+ EGL_ANDROID_image_native_buffer
+
+Contributors
+
+ Mathias Agopian
+ Jamie Gennis
+ Jesse Hall
+
+Contact
+
+ Jesse Hall, Google Inc. (jessehall 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1, November 28, 2012
+
+Number
+
+ EGL Extension #49
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension enables using an Android window buffer (struct
+ ANativeWindowBuffer) as an EGLImage source.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_BUFFER_ANDROID 0x3140
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +----------------------------+-----------------------------------------+
+ | <target> | Notes |
+ +----------------------------+-----------------------------------------+
+ | EGL_NATIVE_BUFFER_ANDROID | Used for ANativeWindowBuffer objects |
+ +----------------------------+-----------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_BUFFER_ANDROID, <dpy> must be a valid display,
+ <ctx> must be EGL_NO_CONTEXT, <buffer> must be a pointer to a valid
+ ANativeWindowBuffer object (cast into the type EGLClientBuffer), and
+ attributes other than EGL_IMAGE_PRESERVED_KHR are ignored."
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_NATIVE_BUFFER_ANDROID and <buffer> is not a
+ pointer to a valid ANativeWindowBuffer, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <target> is EGL_NATIVE_BUFFER_ANDROID and <ctx> is not
+ EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_NATIVE_BUFFER_ANDROID and <buffer> was created
+ with properties (format, usage, dimensions, etc.) not supported by
+ the EGL implementation, the error EGL_BAD_PARAMETER is generated."
+
+Issues
+
+ 1. Should this extension define what combinations of ANativeWindowBuffer
+ properties implementations are required to support?
+
+ RESOLVED: No.
+
+ The requirements have evolved over time and will continue to change with
+ future Android releases. The minimum requirements for a given Android
+ version should be documented by that version.
+
+Revision History
+
+#1 (Jesse Hall, November 28, 2012)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt
new file mode 100644
index 0000000..d72edd7
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt
@@ -0,0 +1,281 @@
+Name
+
+ ANDROID_native_fence_sync
+
+Name Strings
+
+ EGL_ANDROID_native_fence_sync
+
+Contributors
+
+ Jamie Gennis
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, September 4, 2012
+
+Number
+
+ EGL Extension #50
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.2 Specification
+
+ EGL_KHR_fence_sync is required.
+
+Overview
+
+ This extension enables the creation of EGL fence sync objects that are
+ associated with a native synchronization fence object that is referenced
+ using a file descriptor. These EGL fence sync objects have nearly
+ identical semantics to those defined by the KHR_fence_sync extension,
+ except that they have an additional attribute storing the file descriptor
+ referring to the native fence object.
+
+ This extension assumes the existence of a native fence synchronization
+ object that behaves similarly to an EGL fence sync object. These native
+ objects must have a signal status like that of an EGLSyncKHR object that
+ indicates whether the fence has ever been signaled. Once signaled the
+ native object's signal status may not change again.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ EGLint eglDupNativeFenceFDANDROID(
+ EGLDisplay dpy,
+ EGLSyncKHR);
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSyncKHR, and returned
+ in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+
+ Accepted by the <attrib_list> parameter of eglCreateSyncKHR:
+
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+
+ Accepted by the <attrib_list> parameter of eglCreateSyncKHR, and returned
+ by eglDupNativeFenceFDANDROID in the event of an error:
+
+ EGL_NO_NATIVE_FENCE_FD_ANDROID -1
+
+ Returned in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add the following after the sixth paragraph of Section 3.8.1 (Sync
+ Objects), added by KHR_fence_sync
+
+ "If <type> is EGL_SYNC_NATIVE_FENCE_ANDROID, an EGL native fence sync
+ object is created. In this case the EGL_SYNC_NATIVE_FENCE_FD_ANDROID
+ attribute may optionally be specified. If this attribute is specified, it
+ must be set to either a file descriptor that refers to a native fence
+ object or to the value EGL_NO_NATIVE_FENCE_FD_ANDROID.
+
+ The default values for the EGL native fence sync object attributes are as
+ follows:
+
+ Attribute Name Initial Attribute Value(s)
+ --------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_NATIVE_FENCE_ANDROID
+ EGL_SYNC_STATUS_KHR EGL_UNSIGNALED_KHR
+ EGL_SYNC_CONDITION_KHR EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID EGL_NO_NATIVE_FENCE_FD_ANDROID
+
+ If the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute is not
+ EGL_NO_NATIVE_FENCE_FD_ANDROID then the EGL_SYNC_CONDITION_KHR attribute is
+ set to EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID and the EGL_SYNC_STATUS_KHR
+ attribute is set to reflect the signal status of the native fence object.
+ Additionally, the EGL implementation assumes ownership of the file
+ descriptor, so the caller must not use it after calling eglCreateSyncKHR."
+
+ Modify Section 3.8.1 (Sync Objects), added by KHR_fence_sync, starting at
+ the seventh paragraph
+
+ "When a fence sync object is created or when an EGL native fence sync
+ object is created with the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute set
+ to EGL_NO_NATIVE_FENCE_FD_ANDROID, eglCreateSyncKHR also inserts a fence
+ command into the command stream of the bound client API's current context
+ (i.e., the context returned by eglGetCurrentContext), and associates it
+ with the newly created sync object.
+
+ After associating the fence command with an EGL native fence sync object,
+ the next Flush() operation performed by the current client API causes a
+ new native fence object to be created, and the
+ EGL_SYNC_NATIVE_FENCE_ANDROID attribute of the EGL native fence object is
+ set to a file descriptor that refers to the new native fence object. This
+ new native fence object is signaled when the EGL native fence sync object
+ is signaled.
+
+ When the condition of the sync object is satisfied by the fence command,
+ the sync is signaled by the associated client API context, causing any
+ eglClientWaitSyncKHR commands (see below) blocking on <sync> to unblock.
+ If the sync object is an EGL native fence sync object then the native
+ fence object is also signaled when the condition is satisfied. The
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR condition is satisfied by completion
+ of the fence command corresponding to the sync object and all preceding
+ commands in the associated client API context's command stream. The sync
+ object will not be signaled until all effects from these commands on the
+ client API's internal and framebuffer state are fully realized. No other
+ state is affected by execution of the fence command.
+
+ The EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID condition is satisfied by the
+ signaling of the native fence object referred to by the
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute. When this happens any
+ eglClientWaitSyncKHR commands blocking on <sync> unblock."
+
+ Modify the list of eglCreateSyncKHR errors in Section 3.8.1 (Sync Objects),
+ added by KHR_fence_sync
+
+ "Errors
+ ------
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
+ generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and <attrib_list> is neither NULL nor
+ empty (containing only EGL_NONE), EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_ATTRIBUTE error is generated.
+ * If <type> is EGL_SYNC_NATIVE_FENCE_ANDROID and <attrib_list> contains
+ an attribute other than EGL_SYNC_NATIVE_FENCE_FD_ANDROID,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <type> is not a supported type of sync object,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <type> is EGL_SYNC_FENCE_KHR or EGL_SYNC_NATIVE_FENCE_ANDROID and
+ no context is current for the bound API (i.e., eglGetCurrentContext
+ returns EGL_NO_CONTEXT), EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR or EGL_SYNC_NATIVE_FENCE_ANDROID and
+ <dpy> does not match the EGLDisplay of the currently bound context for
+ the currently bound client API (the EGLDisplay returned by
+ eglGetCurrentDisplay()) then EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR or EGL_SYNC_NATIVE_FENCE_ANDROID and
+ the currently bound client API does not support the client API
+ extension indicating it can place fence commands, then EGL_NO_SYNC_KHR
+ is returned and an EGL_BAD_MATCH error is generated."
+
+ Modify table 3.cc in Section 3.8.1 (Sync Objects), added by KHR_fence_sync
+
+ "
+ Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_TYPE_KHR Type of the sync object All
+ EGL_SYNC_STATUS_KHR Status of the sync object All
+ EGL_SYNC_CONDITION_KHR Signaling condition EGL_SYNC_FENCE_KHR and
+ EGL_SYNC_NATIVE_FENCE_ANDROID only
+ "
+
+ Modify the second paragraph description of eglDestroySyncKHR in Section
+ 3.8.1 (Sync Objects), added by KHR_fence_sync
+
+ "If no errors are generated, EGL_TRUE is returned, and <sync> will no
+ longer be the handle of a valid sync object. Additionally, if <sync> is an
+ EGL native fence sync object and the EGL_SYNC_NATIVE_FENCE_FD_ANDROID
+ attribute is not EGL_NO_NATIVE_FENCE_FD_ANDROID then that file descriptor
+ is closed."
+
+ Add the following after the last paragraph of Section 3.8.1 (Sync
+ Objects), added by KHR_fence_sync
+
+ The command
+
+ EGLint eglDupNativeFenceFDANDROID(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ duplicates the file descriptor stored in the
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute of an EGL native fence sync
+ object and returns the new file descriptor.
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>,
+ EGL_NO_NATIVE_FENCE_FD_ANDROID is returned and an EGL_BAD_PARAMETER
+ error is generated.
+ * If the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute of <sync> is
+ EGL_NO_NATIVE_FENCE_FD_ANDROID, EGL_NO_NATIVE_FENCE_FD_ANDROID is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined."
+
+Issues
+
+ 1. Should EGLSyncKHR objects that wrap native fence objects use the
+ EGL_SYNC_FENCE_KHR type?
+
+ RESOLVED: A new sync object type will be added.
+
+ We don't want to require all EGL fence sync objects to wrap native fence
+ objects, so we need some way to tell the EGL implementation at sync object
+ creation whether the sync object should support querying the native fence
+ FD attribute. We could do this with either a new sync object type or with a
+ boolean attribute. It might be nice to pick up future signaling conditions
+ that might be added for fence sync objects, but there may be things that
+ get added that don't make sense in the context of native fence objects.
+
+ 2. Who is responsible for dup'ing the native fence file descriptors?
+
+ RESOLVED: Whenever a file descriptor is passed into or returned from an
+ EGL call in this extension, ownership of that file descriptor is
+ transfered. The recipient of the file descriptor must close it when it is
+ no longer needed, and the provider of the file descriptor must dup it
+ before providing it if they require continued use of the native fence.
+
+ 3. Can the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute be queried?
+
+ RESOLVED: No.
+
+ Returning the file descriptor owned by the EGL implementation would
+ violate the file descriptor ownership rule described in issue #2. Having
+ eglGetSyncAttribKHR return a different (dup'd) file descriptor each time
+ it's called seems wrong, so a new function was added to explicitly dup the
+ file descriptor.
+
+ That said, the attribute is useful both as a way to pass an existing file
+ descriptor to eglCreateSyncKHR and as a way to describe the subsequent
+ behavior of EGL native fence sync objects, so it is left as an attribute
+ for which the value cannot be queried.
+
+Revision History
+
+#3 (Jamie Gennis, September 4, 2012)
+ - Reworded the extension to refer to "native fence" objects rather than
+ "Android fence" objects.
+ - Added a paragraph to the overview that describes assumptions about the
+ native fence sync objects.
+
+#2 (Jamie Gennis, July 23, 2012)
+ - Changed the file descriptor ownership transferring behavior.
+ - Added the eglDupAndroidFenceFDANDROID function.
+ - Removed EGL_SYNC_NATIVE_FENCE_FD_ANDROID from the table of gettable
+ attributes.
+ - Added language specifying that a native Android fence is created at the
+ flush following the creation of an EGL Android fence sync object that is
+ not passed an existing native fence.
+
+#1 (Jamie Gennis, May 29, 2012)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_presentation_time.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_presentation_time.txt
new file mode 100644
index 0000000..ac1f45e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_presentation_time.txt
@@ -0,0 +1,140 @@
+Name
+
+ ANDROID_presentation_time
+
+Name Strings
+
+ EGL_ANDROID_presentation_time
+
+Contributors
+
+ Jamie Gennis
+ Andy McFadden
+ Jesse Hall
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 4, June 6, 2016
+
+Number
+
+ EGL Extension #98
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.4 Specification
+
+Overview
+
+ Often when rendering a sequence of images, there is some time at which each
+ image is intended to be presented to the viewer. This extension allows
+ this desired presentation time to be specified for each frame rendered to
+ an EGLSurface, allowing the native window system to use it.
+
+New Types
+
+ /*
+ * EGLnsecsANDROID is a signed integer type for representing a time in
+ * nanoseconds.
+ */
+ #include <khrplatform.h>
+ typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+
+
+New Procedures and Functions
+
+ EGLBoolean eglPresentationTimeANDROID(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLnsecsANDROID time);
+
+New Tokens
+
+ None.
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add a new subsection before Section 3.9.4, page 53 (Posting Errors)
+
+ "3.9.4 Presentation Time
+
+ The function
+
+ EGLBoolean eglPresentationTimeANDROID(EGLDisplay dpy, EGLSurface
+ surface, EGLnsecsANDROID time);
+
+ specifies the time at which the current color buffer of <surface> should be
+ presented to the viewer. The <time> parameter should be a time in
+ nanoseconds, but the exact meaning of the time depends on the native
+ window system's use of the presentation time. In situations where
+ an absolute time is needed such as displaying the color buffer on a
+ display device, the time should correspond to the system monotonic up-time
+ clock. For situations in which an absolute time is not needed such as
+ using the color buffer for video encoding, the presentation time of the
+ first frame may be arbitrarily chosen and those of subsequent frames
+ chosen relative to that of the first frame.
+
+ The presentation time may be set multiple times, with each call to
+ eglPresentationTimeANDROID overriding prior calls. Setting the
+ presentation time alone does not cause the color buffer to be made
+ visible, but if the color buffer is subsequently posted to a native window
+ or copied to a native pixmap then the presentation time of the surface at
+ that time may be passed along for the native window system to use.
+
+ If the surface presentation time is successfully set, EGL_TRUE is
+ returned. Otherwise EGL_FALSE is returned and an appropriate error is
+ set. If <dpy> is not the name of a valid, initialized EGLDisplay, an
+ EGL_BAD_DISPLAY error is generated. If <surface> is not a valid EGLSurface
+ then an EGL_BAD_SURFACE error is generated.
+
+Issues
+
+ 1. How is the presentation time used?
+
+ RESOLVED: The uses of the presentation time are intentionally not specified
+ in this extension. Some possible uses include Audio/Video synchronization,
+ video frame timestamps for video encoding, display latency metrics, and
+ display latency control.
+
+ 2. How can the current value of the clock that should be used for the
+ presentation time when an absolute time is needed be queried on Android?
+
+ RESOLVED: The current clock value can be queried from the Java
+ System.nanoTime() method, or from the native clock_gettime function by
+ passing CLOCK_MONOTONIC as the clock identifier.
+
+ 3. Should the presentation time be state which is used by eglSwapBuffers,
+ or should it be a new parameter to an extended variant of eglSwapBuffers?
+
+ RESOLVED: The presentation time should be new state which is used by
+ the existing eglSwapBuffers call. Adding new state composes better with
+ other (hypothetical) extensions that also modify the behavior of
+ eglSwapBuffers.
+
+Revision History
+
+#4 (Jon Leech, June 6, 2016)
+ - Clean up for publication. Make prototype parameter name 'surface'
+ match the spec body.
+
+#3 (Jesse Hall, June 26, 2013)
+ - Enumerated errors generated by eglPresentationTimeANDROID.
+ - Added Issue #3 with resolution.
+
+#2 (Jamie Gennis, April 1, 2013)
+ - Clarified how uses that either do or do not need an absolute time should
+ be handled.
+ - Specified the eglPresentationTimeANDROID return value.
+
+#1 (Jamie Gennis, January 8, 2013)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_recordable.txt b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_recordable.txt
new file mode 100644
index 0000000..d21094e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANDROID/EGL_ANDROID_recordable.txt
@@ -0,0 +1,140 @@
+Name
+
+ ANDROID_recordable
+
+Name Strings
+
+ EGL_ANDROID_recordable
+
+Contributors
+
+ Jamie Gennis
+
+Contact
+
+ Jamie Gennis, Google Inc. (jgennis 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, July 15, 2011
+
+Number
+
+ EGL Extension #51
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.4 Specification
+
+Overview
+
+ Android supports a number of different ANativeWindow implementations that
+ can be used to create an EGLSurface. One implementation, which records the
+ rendered image as a video each time eglSwapBuffers gets called, may have
+ some device-specific restrictions. Because of this, some EGLConfigs may be
+ incompatible with these ANativeWindows. This extension introduces a new
+ boolean EGLConfig attribute that indicates whether the EGLConfig supports
+ rendering to an ANativeWindow that records images to a video.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglGetConfigAttrib and
+ the <attrib_list> parameter of eglChooseConfig:
+
+ EGL_RECORDABLE_ANDROID 0x3142
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Section 3.4, Configuration Management, add a row to Table 3.1.
+
+ Attribute Type Notes
+ ---------------------- ------- --------------------------
+ EGL_RECORDABLE_ANDROID boolean whether video recording is
+ supported
+
+ Section 3.4, Configuration Management, add a row to Table 3.4.
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ ---------------------- ------------- --------- ----- --------
+ EGL_RECORDABLE_ANDROID EGL_DONT_CARE Exact None
+
+ Section 3.4, Configuration Management, add a paragraph at the end of the
+ subsection titled Other EGLConfig Attribute Descriptions.
+
+ EGL_RECORDABLE_ANDROID is a boolean indicating whether the config may
+ be used to create an EGLSurface from an ANativeWindow that is a video
+ recorder as indicated by the NATIVE_WINDOW_IS_VIDEO_RECORDER query on
+ the ANativeWindow.
+
+ Section 3.4.1, Querying Configurations, change the last paragraph as follow
+
+ EGLConfigs are not sorted with respect to the parameters
+ EGL_BIND_TO_TEXTURE_RGB, EGL_BIND_TO_TEXTURE_RGBA, EGL_CONFORMANT,
+ EGL_LEVEL, EGL_NATIVE_RENDERABLE, EGL_MAX_SWAP_INTERVAL,
+ EGL_MIN_SWAP_INTERVAL, EGL_RENDERABLE_TYPE, EGL_SURFACE_TYPE,
+ EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_RED_VALUE,
+ EGL_TRANSPARENT_GREEN_VALUE, EGL_TRANSPARENT_BLUE_VALUE, and
+ EGL_RECORDABLE_ANDROID.
+
+Issues
+
+ 1. Should this functionality be exposed as a new attribute or as a bit in
+ the EGL_SURFACE_TYPE bitfield?
+
+ RESOLVED: It should be a new attribute. It does not make sense to use up a
+ bit in the limit-size bitfield for a platform-specific extension.
+
+ 2. How should the new attribute affect the sorting of EGLConfigs?
+
+ RESOLVED: It should not affect sorting. Some implementations may not have
+ any drawback associated with using a recordable EGLConfig. Such
+ implementations should not have to double-up some of their configs to one
+ sort earlier than . Implementations that do have drawbacks can use the
+ existing caveat mechanism to report this drawback to the client.
+
+ 3. How is this extension expected to be implemented?
+
+ RESPONSE: There are two basic approaches to implementing this extension
+ that were considered during its design. In both cases it is assumed that a
+ color space conversion must be performed at some point because most video
+ encoding formats use a YUV color space. The two approaches are
+ distinguished by the point at which this color space conversion is
+ performed.
+
+ One approach involves performing the color space conversion as part of the
+ eglSwapBuffers call before queuing the rendered image to the ANativeWindow.
+ In this case, the VisualID of the EGLConfig would correspond to a YUV
+ Android HAL pixel format from which the video encoder can read. The
+ EGLConfig would likely have the EGL_SLOW_CONFIG caveat because using that
+ config to render normal window contents would result in an RGB -> YUV color
+ space conversion when rendering the frame as well as a YUV -> RGB
+ conversion when compositing the window.
+
+ The other approach involves performing the color space conversion in the
+ video encoder. In this case, the VisualID of the EGLConfig would
+ correspond to an RGB HAL pixel format from which the video encoder can
+ read. The EGLConfig would likely not need to have any caveat set, as using
+ this config for normal window rendering would not have any added cost.
+
+Revision History
+
+#2 (Jamie Gennis, July 15, 2011)
+ - Added issue 3.
+
+#1 (Jamie Gennis, July 8, 2011)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt
new file mode 100644
index 0000000..b205883
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt
@@ -0,0 +1,98 @@
+Name
+
+ ANGLE_d3d_share_handle_client_buffer
+
+Name Strings
+
+ EGL_ANGLE_d3d_share_handle_client_buffer
+
+Contributors
+
+ John Bauman
+ Alastair Patrick
+ Daniel Koch
+
+Contacts
+
+ John Bauman, Google Inc. (jbauman 'at' chromium.org)
+
+Status
+
+ Complete
+ Implemented (ANGLE r650)
+
+Version
+
+ Version 3, May 12, 2011
+
+Number
+
+ EGL Extension #38
+
+Dependencies
+
+ Requires the EGL_ANGLE_surface_d3d_texture_2d_share_handle extension.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows creating EGL surfaces from handles to textures
+ shared from the Direct3D API or from
+ EGL_ANGLE_surface_texture_2d_share_handle.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted in the <buftype> parameter of eglCreatePbufferFromClientBuffer:
+
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Replace the last sentence of paragraph 1 of Section 3.5.3 with the
+ following text.
+ "Currently, the only client API resources which may be bound in this
+ fashion are OpenVG VGImage objects and Direct3D share handles."
+
+ Replace the last sentence of paragraph 2 ("To bind a client API...") of
+ Section 3.5.3 with the following text.
+ "When <buftype> is EGL_OPENVG_IMAGE, the width and height of the pbuffer
+ are determined by the width and height of <buffer>. When <buftype> is
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE, the width and height are specified
+ using EGL_WIDTH and EGL_HEIGHT, or else they default to zero. The width
+ and height must match the dimensions of the texture which the share handle
+ was created from or else an EGL_BAD_ALLOC error is generated."
+
+ Replace the third paragraph of Section 3.5.3 with the following text.
+ "<buftype> specifies the type of buffer to be bound. The only allowed values
+ of <buftype> are EGL_OPENVG_IMAGE and
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE".
+
+ Append the following text to the fourth paragraph of Section 3.5.3.
+ "When <buftype> is EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE, <buffer> must be
+ a valid D3D share handle, cast into the type EGLClientBuffer. The handle
+ may be obtained from the Direct3D9Ex CreateTexture function, from DXGI's
+ GetSharedHandle method on an ID3D10Texture2D, or from the
+ EGL_ANGLE_surface_d3d_texture_2d_share_handle extension."
+
+Issues
+
+Revision History
+
+ Version 3, 2011/05/12
+ - publish
+
+ Version 2, 2011/05/03
+ - specify EGL_D3D_TEXTURE_2D_SHARE_HANDLE
+ - specify error if dimensions don't match
+
+ Version 1, 2011/04/12 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_device_d3d.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_device_d3d.txt
new file mode 100644
index 0000000..8e606cd
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_device_d3d.txt
@@ -0,0 +1,93 @@
+Name
+
+ ANGLE_device_d3d
+
+Name Strings
+
+ EGL_ANGLE_device_d3d
+
+Contributors
+
+ Jamie Madill (jmadill 'at' google.com)
+
+Contact
+
+ Jamie Madill (jmadill 'at' google.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1, Mar 25, 2015
+
+Number
+
+ EGL Extension #90
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ This extension is written against the language of EGL 1.5 as
+ modified by EGL_EXT_device_query.
+
+ EGL_EXT_device_query is required.
+
+Overview
+
+ ANGLE has the ability to run GPU commands on a native D3D device.
+ This extension defines a mapping from an EGL device to a D3D
+ device, after it's queried from an EGL display.
+
+IP Status
+
+ No known claims.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as a queried <attribute> in eglQueryDeviceAttribEXT:
+
+ EGL_D3D9_DEVICE_ANGLE 0x33A0
+ EGL_D3D11_DEVICE_ANGLE 0x33A1
+
+Add a new section 2.1.3 (D3D Devices) after 2.1.2 (Devices)
+
+ Somewhat analogous to an EGL device, a D3D device establishes a
+ namespace for D3D operations. In the D3D APIs, such devices are
+ represented by pointers. For more details, see the D3D
+ documentation.
+
+Changes to section 3.2 (Devices)
+
+ Replace the paragraph immediately following the prototype for
+ eglQueryDeviceAttribEXT:
+
+ <attribute> may be either EGL_D3D9_DEVICE_ANGLE or EGL_D3D11_DEVICE_ANGLE.
+ On success, EGL_TRUE is returned, and a valid D3D9 or D3D11 device pointer
+ corresponding to the EGL device is returned in <value>. This handle
+ is compatible with D3D API functions. If the EGL device is not currently
+ associated with a D3D9 device and <attribute> is EGL_D3D9_DEVICE_ANGLE,
+ or if the EGL device is not currently associated with a D3D11 device and
+ <attribute> is EGL_D3D11_DEVICE_ANGLE, EGL_BAD_ATTRIBUTE is returned,
+ and <value> is left unchanged.
+
+Issues
+
+ None
+
+Revision History
+
+ Version 1, Mar 25, 2015 (Jamie Madill)
+ - Initial Draft
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt
new file mode 100644
index 0000000..75126fc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt
@@ -0,0 +1,88 @@
+Name
+
+ ANGLE_query_surface_pointer
+
+Name Strings
+
+ EGL_ANGLE_query_surface_pointer
+
+Contributors
+
+ Vladimir Vukicevic
+ Daniel Koch
+
+Contacts
+
+ Vladimir Vukicevic (vladimir 'at' pobox.com)
+
+Status
+
+ Complete
+ Implemented (ANGLE r558)
+
+Version
+
+ Version 3, February 11, 2011
+
+Number
+
+ EGL Extension #28
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows querying pointer-sized surface attributes,
+ thus avoiding problems with coercing 64-bit pointers into a 32-bit
+ integer.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglQuerySurfacePointerANGLE(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ void **value);
+
+New Tokens
+
+ None
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add to the end of the paragraph starting with "To query an
+ attribute associated with an EGLSurface" in section 3.5.6,
+ "Surface Attributes":
+
+ "If the attribute type in table 3.5 is 'pointer', then
+ eglQuerySurface returns EGL_FALSE and an EGL_BAD_PARAMETER error
+ is generated. To query pointer attributes, call:
+
+ EGLBoolean eglQuerySurfacePointerANGLE(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ void **value);
+
+ eglQuerySurfacePointerANGLE behaves identically to eglQuerySurface,
+ except that only attributes of type 'pointer' can be queried.
+ If an attribute queried via eglQuerySurfacePointerANGLE is not
+ of type 'pointer', then eglQuerySurfacePointer returns EGL_FALSE
+ and an EGL_BAD_PARAMETER error is generated."
+
+Issues
+
+Revision History
+
+ Version 3, 2011/02/11 - publish
+
+ Version 2, 2010/12/21 - fix typos.
+
+ Version 1, 2010/12/07 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt
new file mode 100644
index 0000000..917e445
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt
@@ -0,0 +1,95 @@
+Name
+
+ ANGLE_surface_d3d_texture_2d_share_handle
+
+Name Strings
+
+ EGL_ANGLE_surface_d3d_texture_2d_share_handle
+
+Contributors
+
+ Vladimir Vukicevic
+ Daniel Koch
+
+Contacts
+
+ Vladimir Vukicevic (vladimir 'at' pobox.com)
+
+Status
+
+ Complete
+ Implemented (ANGLE r558)
+
+Version
+
+ Version 2, December 21, 2010
+
+Number
+
+ EGL Extension #29
+
+Dependencies
+
+ Requires the EGL_ANGLE_query_surface_pointer extension.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ Some EGL implementations generate EGLSurface handles that are
+ backed by Direct3D 2D textures. For such surfaces, a D3D share
+ handle can be generated, allowing access to the same surface
+ from the Direct3D API.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted in the <attribute> parameter of eglQuerySurfacePointerANGLE:
+
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add to table 3.5, "Queryable surface attributes and types":
+
+ Attribute Type Description
+ --------- ---- -----------
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE pointer Direct3D share handle
+
+ Add before the last paragraph in section 3.5, "Surface attributes":
+
+ "Querying EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE returns a Direct3D
+ share handle, or NULL if a share handle for the surface is not
+ available. The share handle must be queried using
+ eglQuerySurfaceAttribPointerANGLE. Before using a Direct3D surface
+ created with this share handle, ensure that all rendering
+ to the EGLSurface with EGL client APIs has completed.
+
+ The Direct3D share handle may be passed as the pSharedHandle
+ parameter of the Direct3D9Ex CreateTexture function, or via the
+ Direct3D10 OpenSharedResource function. If used with Direct3D 9,
+ the level argument to CreateTexture must be 1, and the dimensions
+ must match the dimensions of the EGL surface. If used with
+ Direct3D 10, OpenSharedResource should be called with the
+ ID3D10Texture2D uuid to obtain an ID3D10Texture2D object.
+
+Issues
+
+Revision History
+
+ Version 3, 2011/02/11 - publish
+
+ Version 2, 2010/12/21
+ - renamed token to EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE (adding "2D")
+ - renamed extension to ANGLE_surface_d3d_texture_2d_share_handle
+ - added language about supported usage of the shared handle from D3D
+
+ Version 1, 2010/12/07 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
new file mode 100644
index 0000000..4259145
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
@@ -0,0 +1,99 @@
+Name
+
+ ANGLE_sync_control_rate
+
+Name Strings
+
+ EGL_ANGLE_sync_control_rate
+
+Contact
+
+ Jonah Ryan-Davis, Google (jonahr 'at' google.com)
+
+Status
+
+ Draft.
+
+Version
+
+ Version 1, 2020-03-24
+
+ Based on GLX_OML_sync_control Revision 6.0
+ Related to EGL_CHROMIUM_sync_control Revision 2.0
+
+Number
+
+ 142
+
+Dependencies
+
+ The extension is written against the EGL 1.2 Specification, although it
+ should work on other versions of these specifications.
+
+Overview
+
+ This extension provides counters which let applications know about the
+ timing of the last vertical retrace. By looking at the system clock, as
+ well as the refresh rate of the monitor, this should enable applications
+ to predict the position of future retraces so as to schedule an optimal
+ workload.
+
+ This extension incorporates the use of a counter that provides the
+ necessary synchronization. The graphics Media Stream Counter (or
+ graphics MSC) is a counter that is unique to the graphics subsystem
+ and increments for each vertical retrace that occurs.
+
+ By querying the MSC rate for a given surface, the application can
+ accurately predict the timing for the next vertical retraces and schedule
+ rendering accordingly.
+
+Issues
+
+ None.
+
+IP Status
+
+ No known issues.
+
+New Procedures and Functions
+
+ Bool eglGetMscRateANGLE(EGLDisplay* dpy,
+ EGLSurface surface,
+ int32_t* numerator,
+ int32_t* denominator)
+
+New Tokens
+
+ None
+
+Additions to the EGL 1.3 Specification
+
+ The graphics MSC value is incremented once for each screen refresh.
+ For a non-interlaced display, this means that the graphics MSC value
+ is incremented for each frame. For an interlaced display, it means
+ that it will be incremented for each field. For a multi-monitor
+ system, the monitor used to determine MSC is the one where the surface
+ is located. If the surface spans multiple monitors, the monitor used
+ to determine MSC is the one with the biggest coverage in pixels.
+
+ eglGetMscRateANGLE returns the rate at which the MSC will be incremented
+ for the display associated with <dpy> and <surface>. The rate is expressed
+ in Hertz as <numerator> / <denominator>. If the MSC rate in Hertz is an
+ integer, then <denominator> will be 1 and <numerator> will be
+ the MSC rate.
+
+Errors
+
+ The function eglGetMscRateANGLE returns FALSE on failure.
+ If <dpy> is not a valid EGLDisplay, EGL_BAD_DISPLAY is generated.
+ If <surface> is not a valid EGLSurface, EGL_BAD_SURFACE is generated.
+ If there is no current EGLContext, EGL_BAD_CONTEXT is generated.
+
+New Implementation Dependent State
+
+ None
+
+Revision History
+
+ Version 1, 2020-03-24 (Jonah Ryan-Davis)
+ - Initial draft, based on GLX_OML_sync_control revision 6.0.
diff --git a/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt
new file mode 100644
index 0000000..6e60e86
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt
@@ -0,0 +1,136 @@
+Name
+
+ ANGLE_window_fixed_size
+
+Name Strings
+
+ EGL_ANGLE_window_fixed_size
+
+Contributors
+
+ John Bauman
+ Shannon Woods
+
+Contacts
+
+ John Bauman, Google Inc. (jbauman 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4, February 24, 2014
+
+Number
+
+ EGL Extension #85
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows creating a window surface with a fixed size that is
+ specified when it is created.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglQuerySurface and by the
+ <attrib_list> parameter of eglCreateWindowSurface:
+
+ EGL_FIXED_SIZE_ANGLE 0x3201
+
+Additions to Chapter 3 of the EGL 1.4 Specification:
+
+ Modify the third paragraph of Section 3.5.1 (Creating On-Screen Rendering Surfaces)
+
+ "<attrib_list> specifies a list of attributes for the window. The list has
+ the same structure as described for eglChooseConfig. Attributes that can
+ be specified in <attrib_list> include EGL_RENDER_BUFFER,
+ EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT, EGL_FIXED_SIZE_ANGLE, EGL_WIDTH,
+ and EGL_HEIGHT."
+
+ Add before the last paragraph of Section 3.5.1
+
+ "EGL_FIXED_SIZE_ANGLE specifies whether the surface must be resized by the
+ implementation when the native window is resized. The default value is
+ EGL_FALSE. Its value can be EGL_TRUE, in which case the size must be
+ specified when the window is created, or EGL_FALSE, in which case the size
+ is taken from the native window. Its default value is EGL_FALSE.
+
+ If the value of EGL_FIXED_SIZE_ANGLE is EGL_TRUE, the window surface's
+ size in pixels is specified by the EGL_WIDTH and EGL_HEIGHT attributes,
+ and will not change throughout the lifetime of the surface. If its value
+ is EGL_FALSE, then the values of EGL_WIDTH and EGL_HEIGHT are ignored and
+ the window surface must be resized by the implementation subsequent to the
+ native window being resized, and prior to copying its contents to the
+ native window (e.g. in eglSwapBuffers, as described in section 3.9.1.1).
+ The default values for EGL_WIDTH and EGL_HEIGHT are zero. If the value
+ specified for either of EGL_WIDTH or EGL_HEIGHT is less than zero then an
+ EGL_BAD_PARAMETER error is generated."
+
+ Add the following entry to Table 3.5
+ (Queryable surface attributes and types)
+
+ Attribute Type Description
+ -------------------- ------- ---------------------------------------------
+ EGL_FIXED_SIZE_ANGLE boolean Surface will not be resized with a native
+ window
+
+ Replace the last paragraph on page 37 in Section 3.5.6 (Surface Attributes)
+
+ "Querying EGL_WIDTH and EGL_HEIGHT returns respectively the width and
+ height, in pixels, of the surface. For a pixmap surface or window surface
+ with EGL_FIXED_SIZE_ANGLE set to EGL_FALSE, these values are initially
+ equal to the width and height of the native window or pixmap with respect
+ to which the surface was created. If the native window is resized and the
+ corresponding window surface is not fixed size, the corresponding window
+ surface will eventually be resized by the implementation to match (as
+ discussed in section 3.9.1). If there is a discrepancy because EGL has not
+ yet resized the window surface, the size returned by eglQuerySurface will
+ always be that of the EGL surface, not the corresponding native window."
+
+ Add the following paragraph to Section 3.5.6 (Surface Attributes)
+
+ "Querying EGL_FIXED_SIZE_ANGLE returns EGL_FALSE if the surface will be
+ resized to match a native window, and EGL_TRUE if the surface cannot be
+ resized."
+
+ Alter the beginning of the first paragraph of Section 3.9.1.1 (Native
+ Window Resizing)
+
+ "If <surface> does not have EGL_FIXED_SIZE_ANGLE set and the native window
+ corresponding to <surface> has been resized prior to the swap, <surface>
+ must be resized to match."
+
+Issues
+
+ 1. Should there be a way to resize a window surface that had its size
+ specified initially.
+
+ RESOLVED: No. Surfaces that have their sizes specified initially must have
+ EGL_FIXED_SIZE_ANGLE set and can never be resized.
+
+Revision History
+
+ Version 4, 2014/02/24 - formatting changes.
+
+ Version 3, 2014/02/12 - ignore EGL_WIDTH and EGL_HEIGHT if
+ EGL_FIXED_SIZE_ANGLE is EGL_FALSE
+
+ Version 2, 2014/02/07 - rename to EGL_ANGLE_window_fixed_size, and add an
+ EGL_FIXED_SIZE_ANGLE token.
+
+ Version 1, 2014/02/05 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_image_format.txt b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_image_format.txt
new file mode 100644
index 0000000..c1a40ec
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_image_format.txt
@@ -0,0 +1,126 @@
+Name
+
+ ARM_image_format
+
+Name Strings
+
+ EGL_ARM_image_format
+
+Contributors
+
+ Jan-Harald Fredriksen
+
+Contact
+
+ Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 1 - February 18, 2020
+
+Number
+
+ 138
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ specification.
+
+ This extension reuses tokens from EGL_EXT_pixel_format_float.
+
+Overview
+
+ When an EGLImage is created from an existing image resource the
+ implementation will deduce the format of the image data from that
+ resource. In some cases, however, the implementation may not know how to
+ map the existing image resource to a known format. This extension extends
+ the list of attributes accepted by eglCreateImageKHR such that applications
+ can tell the implementation how to interpret the data.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglCreateImageKHR:
+ EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+
+ Accepted as attribute values for the EGL_COLOR_COMPONENT_TYPE_EXT attribute
+ of eglCreateImageKHR:
+
+ EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+ EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
+ EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
+ EGL_RED_SIZE 0x3024
+ EGL_GREEN_SIZE 0x3023
+ EGL_BLUE_SIZE 0x3022
+ EGL_ALPHA_SIZE 0x3021
+
+Modifications to the EGL 1.4 Specification
+
+ Add the following rows to Table 3.xx: Legal attributes for
+ eglCreateImageKHR <attrib_list> parameter:
+
+ +------------------------------+------------------------------+-----------+---------------+
+ | Attribute | Description | Valid | Default Value |
+ | | | <target>s | |
+ +------------------------------+------------------------------+-----------+---------------+
+ | EGL_COLOR_COMPONENT_TYPE_EXT | Specifies the component | All | NA |
+ | | type the EGLImage source | | |
+ | | is interpreted as | | |
+ | EGL_RED_SIZE | Specifies the red component | All | NA |
+ | | size the EGLImage source | | |
+ | | is interpreted as | | |
+ | EGL_GREEN_SIZE | Specifies the green component| All | NA |
+ | | size the EGLImage source | | |
+ | | is interpreted as | | |
+ | EGL_BLUE_SIZE | Specifies the blue component | All | NA |
+ | | size the EGLImage source | | |
+ | | is interpreted as | | |
+ | EGL_ALPHA_SIZE | Specifies the alpha component| All | NA |
+ | | size the EGLImage source | | |
+ | | is interpreted as | | |
+ +------------------------------+------------------------------+-----------+---------------+
+
+ If <attrib_list> specifies values for EGL_COLOR_COMPONENT_TYPE_EXT,
+ EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE, or EGL_ALPHA_SIZE, the
+ implementation will treat these as hints for how to interpret the contents
+ of <buffer>.
+
+ EGL_COLOR_COMPONENT_TYPE_EXT indicates the component type of <buffer> and
+ must be either EGL_COLOR_COMPONENT_TYPE_FIXED_EXT for fixed-point,
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT for floating-point,
+ EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM for unsigned integer, or
+ EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM for integer components.
+
+Add to the list of error conditions for eglCreateImageKHR:
+
+ * If the implementation is unable to interpret the contents <buffer>
+ according to the component types and sizes in <attrib_list>, then a
+ EGL_BAD_MATCH error is generated.
+
+Issues
+
+ 1. Should there be a way to specify the component order?
+
+ Resolved. No, the component order is interpreted to be R, G, B, A,
+ with R mapping to component 0. If the application needs a different
+ component order it can use swizzle in the client API side or in the
+ shader.
+
+Revision History
+
+ Version 1, 2020/02/18
+ - Internal revisions
diff --git a/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_implicit_external_sync.txt b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_implicit_external_sync.txt
new file mode 100644
index 0000000..bce6a74
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_implicit_external_sync.txt
@@ -0,0 +1,219 @@
+Name
+
+ ARM_implicit_external_sync
+
+Name Strings
+
+ EGL_ARM_implicit_external_sync
+
+Contributors
+
+ David Garbett
+ Ray Smith
+
+Contacts
+
+ David Garbett, ARM Ltd. (david 'dot' garbett 'at' arm 'dot' com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, September 8, 2014
+
+Number
+
+ EGL Extension #103
+
+Dependencies
+
+ Requires EGL 1.1.
+
+ This extension is written against the wording of the EGL 1.2 Specification.
+
+ EGL_KHR_fence_sync is required.
+
+Overview
+
+ This extension extends the "fence sync objects" defined in
+ EGL_KHR_fence_sync. It allows the condition that triggers the associated
+ fence command in the client API command stream to be explicitly specified on
+ fence object creation. It introduces a new condition that can be used to
+ ensure ordering between operations on buffers that may be accessed
+ externally to the client API, when those operations use an implicit
+ synchronization mechanism. Such a fence object will be signaled when all
+ prior commands affecting such buffers are guaranteed to be executed before
+ such external commands.
+
+ Applications have limited control over when a native buffer is read or
+ written by the GPU when imported as an EGLImageKHR or via
+ eglCreatePixmapSurface, which is controlled by the EGL and client API
+ implementations. While eglWaitClient or a client call such as glFinish
+ could be called, this forces all rendering to complete, which can result in
+ CPU/GPU serialization. Note this isn't an issue for window surfaces, where
+ eglSwapBuffers ensures the rendering occurs in the correct order for the
+ platform.
+
+ Some platforms have an implicit synchronization mechanism associated with
+ native resources, such as buffers. This means that accesses to the buffer
+ have an implicit ordering imposed on them, without involvement from the
+ application. However, this requires that an application that has imported
+ an affected buffer into EGL has a mechanism to flush any drawing operations
+ in flight such that they are waiting on the synchronization mechanism.
+ Otherwise the application cannot guarantee that subsequent operations (such
+ as displaying a rendered buffer) will occur after the commands performed by
+ the client API (such as rendering the buffer).
+
+ The mechanism to wait for the synchronization mechanism should not require
+ the application to wait for all rendering to complete, so that it can
+ continue preparing further commands asynchronously to the queued commands.
+ This extension provides this functionality using the new condition type for
+ fence sync objects, so the application only waits for the external
+ synchronization.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as a value of the EGL_SYNC_CONDITION_KHR attribute passed in the
+ <attrib_list> list to eglCreateSyncKHR when <type> is EGL_FENCE_SYNC_KHR,
+ and can populate <*value> when eglGetSyncAttribKHR is called with
+ <attribute> set to EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add the following after the fifth paragraph of Section 3.8.1 (Sync Objects),
+ added by KHR_fence_sync:
+
+ "Typically client APIs are considered to execute commands in a linear queue,
+ where a prior command is executed and completes before a later command is
+ started. By default fence sync objects adhere to this model - a fence is
+ signaled once prior commands have completed. However on some platforms a
+ command in a client API may transition through multiple states before it
+ completes, which may impact other components of the system. Therefore the
+ condition that all prior commands must meet before the fence is triggered is
+ configurable."
+
+ Replace the sixth paragraph of Section 3.8.1 (Sync Objects), added by
+ KHR_fence_sync:
+
+ "If, <type> is EGL_SYNC_FENCE_KHR, a fence sync object is created. In this
+ case <attrib_list> can be NULL or empty, or can specify the
+ EGL_SYNC_CONDITION_KHR attribute. Attributes of the fence sync object have
+ the following default values:"
+
+ Replace the eighth paragraph of Section 3.8.1 (Sync Objects), added by
+ KHR_fence_sync:
+
+ "When the condition of the sync object is satisfied by the fence command,
+ the sync is signaled by the associated client API context, causing any
+ eglClientWaitSyncKHR commands (see below) blocking on <sync> to unblock. The
+ condition is specified by the EGL_SYNC_CONDITION_KHR attribute passed to
+ eglCreateSyncKHR.
+
+ If the condition is specified as EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR, the
+ fence sync object is satisfied by completion of the fence command
+ corresponding to the sync object, and all preceding commands in the
+ associated client API context's command stream. The sync object will not be
+ signaled until all effects from these commands on the client API's internal
+ and framebuffer state are fully realized. No other state is affected by
+ execution of the fence command.
+
+ If the condition is specified as
+ EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM, the fence sync object is
+ satisfied by the completion of the fence command corresponding to the sync
+ object, and the <submission> of all preceding commands in the associated
+ client API context's command stream. <Submission> defines the point in time
+ when a command has been queued on any implicit synchronization mechanisms
+ present on the platform which apply to any of the resources used by the
+ command. This enforces an ordering, as defined by the synchronization
+ mechanism, between the command and any other operations that also respect
+ the synchronization mechanism(s)."
+
+ Replace the second entry in the list of eglCreateSyncKHR errors in Section
+ 3.8.1 (Sync Objects), added by KHR_fence_sync:
+
+ " * If <type> is EGL_SYNC_FENCE_KHR and <attrib_list> contains an attribute
+ other than EGL_SYNC_CONDITION_KHR, EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_ATTRIBUTE error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and the value specified for
+ EGL_SYNC_CONDITION_KHR is not EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR or
+ EGL_SYNC_PRIOR_COMMANDS_SUBMITTED_ARM, EGL_NO_SYNC_KHR is returned and
+ an EGL_BAD_ATTRIBUTE error is generated."
+
+Issues
+
+ 1. Could glFlush guarantee commands are submitted, making this extension
+ unnecessary?
+
+ RESOLVED: The Open GL ES 3.1 specification defines glFlush() as causing "all
+ previously issued GL commands to complete in finite time". There is no
+ requirement for the execution of commands to reach any specific point before
+ it returns - a valid implementation of glFlush() could spawn a new thread
+ that sleeps for a minute before submitting the pending commands. While an
+ implementation could decide to ensure all commands are submitted within
+ glFlush(), it could not be assumed to be the case across all
+ implementations.
+
+ In addition, there may be scenarios when submitting commands within
+ glFlush() is harmful. Waiting for command submission may have a performance
+ impact on some implementations that perform processing of commands
+ asynchronously. In addition such a change may restrict what is possible in
+ the future. For example if user events were introduced into OpenGL ES they
+ have the potential of introducing deadlocks if submission in glFlush() is
+ guaranteed.
+
+ 2. Should a new entry point be defined that flushes commands synchronously,
+ instead of the new fence type as defined by this extension?
+
+ RESOLVED: While a synchronous "flush and submit" entrypoint would meet the
+ requirements for this extension, there may be a small benefit in enabling
+ the application to continue processing between flushing and waiting for
+ submission. In addition, the semantics of the existing EGL_KHR_fence_sync
+ extension closely match what is required for this extension, so defining
+ the new functionality in terms of fences may enable simpler implementations.
+
+ 3. Should OpenGL ES 3 glFenceSync be extended in preference to
+ eglCreateSyncKHR?
+
+ RESOLVED: Some platforms are yet to move to a OpenGL ES 3 implementation, or
+ may be unwilling to expose OpenGL ES 3 entrypoints to applications. As
+ EGL_KHR_fence_sync is older than OpenGL ES 3, and is comparatively a small
+ change, it has a better chance of adoption in a platform.
+
+ In addition this extension is based on the idea that there are
+ platform-specific ways to interact with the client API command stream. As
+ this is platform-specific, and does not fit with the existing model
+ typically used by client APIs (such as Open GL ES) it is better placed in
+ EGL.
+
+ Finally extending EGL has the advantage that the extension applies to all
+ client APIs.
+
+ 4. Should a new <type> parameter be defined, instead of extending the
+ EGL_FENCE_SYNC_KHR fence sync objects defined by EGL_KHR_fence_sync?
+
+ RESOLVED: Whether the new functionality is defined as an extension to the
+ existing fence sync objects, or whether they are defined as a new type of
+ sync object, we must acknowledge that the model of a client API processing
+ commands serially (with prior commands completing before later commands are
+ executed) is too simplistic for some platforms.
+
+ Extending the existing fence sync objects allows us to use the existing
+ concept of conditions that trigger the fences. It also allows the maximum
+ amount of reuse of existing functionality, potentially simplifying the
+ implementation and the use of the extension by applications.
+
+Revision History
+#1 (David Garbett, September 8, 2014)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt
new file mode 100644
index 0000000..847a749
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt
@@ -0,0 +1,185 @@
+Name
+
+ ARM_pixmap_multisample_discard
+
+Name Strings
+
+ EGL_ARM_pixmap_multisample_discard
+
+Contributors
+
+ Arne Bergene Fossaa
+ Tom Cooksey
+ Endre Sund
+ David Garbett
+
+Contacts
+
+ Tom Cooksey (tom 'dot' cooksey 'at' arm 'dot' com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1, March 5, 2013
+
+Number
+
+ EGL Extension #54
+
+Dependencies
+
+ EGL 1.0 is required.
+
+ This extension is written against the wording of the EGL 1.4 Specification.
+
+Overview
+
+ ARM_pixmap_multisample_discard adds an attribute to eglCreatePixmapSurface
+ that allows the client API implementation to resolve a multisampled pixmap
+ surface, therefore allowing the multisample buffer to be discarded.
+
+ Some GPU architectures - such as tile-based renderers - are capable of
+ performing multisampled rendering by storing multisample data in internal
+ high-speed memory and downsampling the data when writing out to external
+ memory after rendering has finished. Since per-sample data is never written
+ out to external memory, this approach saves bandwidth and storage space. In
+ this case multisample data gets discarded, however this is acceptable in
+ most cases.
+
+ The extension provides the EGL_DISCARD_SAMPLES_ARM attribute that allows
+ for implicit resolution when rendering to a pixmap surface. This complements
+ the OpenGL ES EXT_multisampled_render_to_texture extension which provides
+ similar functionality for rendering to an OpenGL ES texture.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglCreatePixmapSurface and by the <attribute> parameter of eglQuerySurface:
+
+ EGL_DISCARD_SAMPLES_ARM 0x3286
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Modify the second paragraph under "The Multisample Buffer" of Section 3.4,
+ page 18 (Configuration Management)
+
+ "Operations such as posting a surface with eglSwapBuffers (see section
+ 3.9.1, copying a surface with eglCopyBuffers (see section 3.9.2), reading
+ from the color buffer using client API commands, binding a client API
+ context to a surface (see section 3.7.3), and flushing to a pixmap surface
+ created with the EGL_DISCARD_SAMPLES_ARM attribute enabled (see
+ section 3.5.4) may cause resolution of the multisample buffer to the color
+ buffer."
+
+ Modify the fifth paragraph under "The Multisample Buffer" of Section 3.4,
+ page 18 (Configuration Management)
+
+ "There are no single-sample depth or stencil buffers for a multisample
+ EGLConfig, or with a pixmap surface created with the
+ EGL_DISCARD_SAMPLES_ARM attribute (see section 3.5.4). The only depth and
+ stencil buffers are those in the multisample buffer. If the color samples
+ in the multisample buffer store fewer bits than are stored in the color
+ buffers, this fact will not be reported accurately. Presumably a
+ compression scheme is being employed, and is expected to maintain an
+ aggregate resolution equal to that of the color buffers."
+
+ Modify the fifth paragraph of Section 3.5.4, page 34 (Creating Native
+ Pixmap Rendering Surfaces)
+
+ "attrib list specifies a list of attributes for the pixmap. The list has the
+ same structure as described for eglChooseConfig. Attributes that can be
+ specified in attrib list include EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT and
+ EGL_DISCARD_SAMPLES_ARM."
+
+ Add the following between paragraphs eight and nine of Section 3.5.4,
+ page 34 (Creating Native Pixmap Rendering Surfaces)
+
+ "EGL_DISCARD_SAMPLES_ARM specifies whether the client API implementation is
+ allowed to implicitly resolve the multisample buffer. On some GPU
+ architectures - such as tile-based renderers - an implicit resolve can avoid
+ writing the multisample buffer back to external memory as the multisample
+ data is stored in internal high-speed memory.
+
+ The implicit resolve can occur when the client API uses the pixmap as the
+ source or destination of any operation, when flushing to the pixmap or when
+ the client API unbinds (or breaks) the pixmap. When these operations occur
+ is dependent on the client API implementation. They can occur as an explicit
+ part of client API functions (such as glFinish, glReadPixels and
+ glCopyTexImage) or they can occur implicitly.
+
+ Further rendering causes the implementation to read the surface buffer and
+ any ancillary buffers back in as single-sampled data.
+ Therefore use of this attribute may result in lower quality images.
+
+ Valid values are EGL_TRUE, in which case the multisample buffer can be
+ discarded, or EGL_FALSE, in which case the multisample buffer is preserved.
+ The default value is EGL_FALSE.
+
+ Note that the multisample buffer may be discarded during eglMakeCurrent
+ regardless of the value of the EGL_DISCARD_SAMPLES_ARM attribute (see
+ section 3.7.3)."
+
+ Modify the ninth paragraph of Section 3.5.4, page 34 (Creating Native
+ Pixmap Rendering Surfaces)
+
+ "On failure eglCreatePixmapSurface returns EGL_NO_SURFACE. If the attributes
+ of pixmap do not correspond to config, then an EGL_BAD_MATCH error is
+ generated. If config does not support rendering to pixmaps (the
+ EGL_SURFACE_TYPE attribute does not contain EGL_PIXMAP_BIT), an
+ EGL_BAD_MATCH error is generated. If config does not support the colorspace
+ or alpha format attributes specified in attriblist (as defined for
+ eglCreateWindowSurface), an EGL_BAD_MATCH error is generated. If config does
+ not specify non-zero EGL_SAMPLES and EGL_SAMPLE_BUFFERS and the
+ EGL_DISCARD_SAMPLES_ARM attribute is set to EGL_TRUE, then an EGL_BAD_MATCH
+ error is generated. If config is not a valid EGLConfig, an EGL_BAD_CONFIG
+ error is generated. If pixmap is not a valid native pixmap handle, then an
+ EGL_BAD_NATIVE_PIXMAP error should be generated. If there is already an
+ EGLSurface associated with pixmap (as a result of a previous
+ eglCreatePixmapSurface call), then a EGL_BAD_ALLOC error is generated.
+ Finally, if the implementation cannot allocate resources for the new EGL
+ pixmap, an EGL_BAD_ALLOC error is generated."
+
+
+ Add the following entry to Table 3.5, page 36
+ (Queryable surface attributes and types)
+
+ Attribute Type Description
+ ------------------------- ------- ---------------------------------------
+ EGL_DISCARD_SAMPLES_ARM boolean Multisample resolve when flushing to
+ surface
+
+ Add the following paragraph before the last paragraph of Section 3.5.7,
+ page 38 (Surface Attributes)
+
+ "Querying EGL_DISCARD_SAMPLES_ARM returns whether a multisample resolve
+ is forced on every flush to the surface (see section 3.5.4). This will only
+ return EGL_TRUE for pixmap surfaces created with the EGL_DISCARD_SAMPLES_ARM
+ attribute set to EGL_TRUE. EGL_FALSE will be returned for window and
+ pbuffer surfaces."
+
+Issues
+
+ 1. Should eglSurfaceAttrib accept EGL_DISCARD_SAMPLES_ARM?
+ RESOLVED: No. The attribute should be decided at surface creation time.
+
+ 2. Should eglCreateWindowSurface or eglCreatePbufferSurface accept
+ EGL_DISCARD_SAMPLES_ARM?
+ RESOLVED: No. While the attribute could equally apply to window and
+ pbuffer surfaces, no use case has been identified to justify the
+ additional maintenance this would require.
+
+Revision History
+
+ Version 1, 2013/03/05 - Original release.
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_bind_to_front.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_bind_to_front.txt
new file mode 100644
index 0000000..e83f9c9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_bind_to_front.txt
@@ -0,0 +1,108 @@
+Name
+
+ EXT_bind_to_front
+
+Name Strings
+
+ EGL_EXT_bind_to_front
+
+
+Contributors
+
+ Daniel Herring
+
+Contacts
+
+ Daniel Herring, Core Avionics & Industrial Inc., daniel dot herring at ch1group dot com
+
+Status
+
+ Complete
+
+Version
+
+ Version 1.0, February 21, 2017
+
+Number
+
+ EGL Extension #121
+
+Dependencies
+
+ Requires EGL 1.2.
+
+Overview
+
+ This extension allows for using double buffered Pbuffers for rendering to textures, by
+ allowing a new enumeration to be used in eglBindTexImage. EGL_FRONT_BUFFER_EXT is used
+ to denote reading the textures data from the front buffer of a double buffered Pbuffer.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ EGL_FRONT_BUFFER_EXT 0x3464
+
+Modify Section 3.6.1 of the EGL 1.2 Specification, paragraph 1
+ Add EGL_FRONT_BUFFER_EXT to list of acceptable values for buffer attribute.
+
+Modify Section 3.6.2 of the EGL 1.2 Specification, paragraph 5
+ Add EGL_FRONT_BUFFER_EXT to list of acceptable values for buffer attribute.
+
+Modify Section 3.5.2 of the EGL 1.2 Specification, paragraph 4
+ Add EGL_RENDER_BUFFER to list of attributes which can be accepted in attrib_list.
+
+Add to Section 3.5.2 of the EGL 1.2 Specification
+ EGL_RENDER_BUFFER specifies the number of color buffers which should be useable by the
+ client API rendering to the Pbuffer. If its value is EGL_SINGLE_BUFFER, then there is
+ one color buffer the client APIs will render to directly. If its value is EGL_BACK_BUFFER,
+ then there are at least two color buffers the client API can render to. eglSwapBuffers
+ is used to switch which color buffer is currently being rendered to. By default, all
+ client APIs should render into the back buffer. The default value of EGL_RENDER_BUFFER
+ is EGL_SINGLE_BUFFER.
+
+Modify Section 2.2.2 of the EGL 1.2 Specification, paragraph 2
+ Pbuffer surfaces have a back buffer but no associated window, so the back buffer
+ need not be copied.
+ Change to:
+ Pbuffer surfaces have no associated window, and include a back buffer, used by
+ default, for rendering to by the client API. Pbuffers may have a front buffer
+ used during render to texture operations to provide a read only texture which may
+ be used while the back buffer is being rendered to.
+
+Modify Section 3.5.6
+ Querying EGL RENDER BUFFER returns the buffer which client API rendering
+ is requested to use. For a window surface, this is the same attribute value
+ specified when the surface was created. For a Pbuffer surface, it is always
+ EGL BACK BUFFER. For a pixmap surface, it is always EGL SINGLE BUFFER. To
+ determine the actual buffer being rendered to by a context, call eglQueryContext
+ (see section 3.7.4).
+
+ Change to:
+ Querying EGL RENDER BUFFER returns the buffer which client API rendering
+ is requested to use. For a window surface or Pbuffer surface, this is the
+ same attribute value specified when the surface was created. For a pixmap
+ surface, it is always EGL SINGLE BUFFER. To determine the actual buffer being
+ rendered to by a context, call eglQueryContext (see section 3.7.4).
+
+Revision History
+ Version 1.0, 21/02/2017 - Initial Version
+
+Question:
+ What if the implementation already uses double buffering for single buffered PBuffers?
+ Such as when an implementation must insert a resolve to a texture instead of being
+ able to use the same memory.
+Answer:
+ EGL_BACK_BUFFER would still refer to the resolved buffer. But in the case of the a
+ double buffer EGL_FRONT_BUFFER should be used to reference the resolved buffer instead
+ of EGL_BACK_BUFFER as in this case the user has specified 2 buffers and knows they want
+ the resolved buffer.
+ In the double buffer case where only a back draw and a front resolved buffer is used
+ the implementation may not support EGL_BACK_BUFFER and should generate an EGL_BAD_
+ PARAMETER error when not supporting EGL_BACK_BUFFER texture binding.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_buffer_age.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_buffer_age.txt
new file mode 100644
index 0000000..5e46fa9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_buffer_age.txt
@@ -0,0 +1,329 @@
+Name
+
+ EXT_buffer_age
+
+Name Strings
+
+ EGL_EXT_buffer_age
+
+Notice
+
+ Copyright 2011,2012 Intel Cooperation
+
+IP Status
+
+ No known IP claims.
+
+Contributors
+
+ Robert Bragg
+ Neil Roberts
+ Tapani Pälli
+ Kristian Høgsberg
+ Acorn Pooley
+ James Jones
+
+Contacts
+
+ Robert Bragg, Intel (robert.bragg 'at' intel.com)
+
+Status
+
+ Complete.
+
+Version
+
+ 12 - June 13, 2013
+
+Number
+
+ EGL Extension #52
+
+Dependencies
+
+ Requires EGL 1.4
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ The aim of this extension is to expose enough information to
+ applications about how the driver manages the set of front and
+ back buffers associated with a given surface to allow applications
+ to re-use the contents of old frames and minimize how much must be
+ redrawn for the next frame.
+
+ There are lots of different ways for a driver to manage these
+ buffers, from double buffering, different styles of triple
+ buffering and even n-buffering or simply single buffer rendering.
+ We also need to consider that power management events or memory
+ pressure events might also result in some of the buffers not
+ currently in-use being freed.
+
+ This extension lets applications query the age of the back buffer
+ contents for an EGL surface as the number of frames elapsed since
+ the contents were most recently defined. The back buffer can
+ either be reported as invalid (has an age of 0) or it may be
+ reported to contain the contents from n frames prior to the
+ current frame.
+
+ Once the application has queried the buffer age, the age of
+ contents remains valid until the end of the frame for all pixels
+ that continue to pass the pixel ownership test.
+
+ For many use-cases this extension can provide an efficient
+ alternative to using the EGL_BUFFER_PRESERVED swap behaviour. The
+ EGL_BUFFER_PRESERVED swap behaviour adds a direct dependency for
+ any frame n on frame n - 1 which can affect the pipelining of
+ multiple frames but also implies a costly copy-back of data to
+ initialize the back-buffer at the start of each frame.
+
+ For example if you consider a double buffered application drawing
+ a small spinning icon, but everything else in the scene is static.
+ If we know that 2 buffers are continuously being recycled each
+ time eglSwapBuffers is called then even though 100s of frames may
+ need to be drawn to animate the icon it can be seen that the two
+ buffers are remaining unchanged except within the bounds of the
+ icon. In this scenario ideally the application would simply
+ perform an incremental update of the old buffer instead of
+ redundantly redrawing all the static parts of the scene. The
+ problem up until now though has been that EGL doesn't report how
+ buffers may be recycled so it wasn't safe for applications to try
+ and reuse their contents. Now applications can keep track of all
+ the regions that have changed over the last n frames and by
+ knowing the age of the buffer they know how to efficiently repair
+ buffers that are re-cycled instead of redrawing the entire scene.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ EGL_BUFFER_AGE_EXT 0x313D
+
+Additions to Section 2.2 of the EGL 1.4 Specification (Rendering
+Contexts and drawing surfaces)
+
+ Add the following text to a new subsection titled "Pixel
+ Ownership Test" after the subsection titled "Interaction With
+ Native Rendering":
+
+ A fragment produced by a client api through rasterization
+ with windows coordinates (x, y) only modifies the pixel in the
+ rendering surface at that location if it passes the pixel
+ ownership test defined by the native window system.
+
+ The pixel ownership test determines if the pixel at location
+ (x, y) in a rendering surface is currently owned by the client
+ api (more precisely, by this its context). If it is not, the
+ native window system decides the fate of the incoming
+ fragment. Possible results are that the fragment is discarded
+ or that some subset of the subsequent per-fragment operations
+ are applied to the fragment. This test allows the window
+ system to control the client api behavior, for instance, when
+ a window surface is obscured.
+
+ The pixel ownership test can only fail for window surfaces,
+ not for pixmap surfaces or pbuffer surfaces.
+
+ Most native window systems will be able to guarantee that no
+ fragment will ever fail the pixel ownership test, but a
+ notable exception to this is the X11 window system where,
+ depending on the driver, the pixel ownership test may fail
+ when portions of a window are obscured.
+
+Additions to Section 3.5 of the EGL 1.4 Specification (Rendering Surfaces)
+
+ Add the following to the table of "Queryable surface attributes
+ and types":
+
+ +----------------------+---------+-----------------------------+
+ | Attribute | Type | Description |
+ +----------------------+---------+-----------------------------+
+ | EGL_BUFFER_AGE_EXT | Integer | Age of back-buffer contents |
+ +----------------------+---------+-----------------------------+
+ Table aaa: Queryable surface attributes and types.
+
+
+ Add the following text to the subsection titled "Surface
+ Attributes" in the description for eglQuerySurface
+
+ Querying EGL_BUFFER_AGE_EXT returns the age of the color
+ contents of the current back-buffer as the number of frames
+ elapsed since it was most recently defined. Applications can,
+ under certain conditions described below, use this age to
+ safely rely on the contents of old back- buffers to
+ potentially reduce the amount of redrawing they do each frame.
+ A frame is the period between calls to any of the functions in
+ table 3.X, hereafter referred to as "frame boundaries."
+
+ Function name
+ --------------------
+ eglSwapBuffers
+
+ Table 3.X, Frame Boundary Functions
+
+ Buffers' ages are initialized to 0 at buffer creation time.
+ When a frame boundary is reached, the following occurs before
+ any exchanging or copying of color buffers:
+
+ * The current back buffer's age is set to 1.
+ * Any other color buffers' ages are incremented by 1 if
+ their age was previously greater than 0.
+
+ For the purposes of buffer age tracking, a buffer's content
+ is considered defined when its age is a value greater than 0.
+
+ For example, with a double buffered surface and an
+ implementation that swaps via buffer exchanges, the age would
+ usually be 2. With a triple buffered surface the age would
+ usually be 3. An age of 1 means the previous swap was
+ implemented as a copy. An age of 0 means the buffer has only
+ just been initialized and the contents are undefined. Single
+ buffered surfaces have no frame boundaries and therefore
+ always have an age of 0.
+
+ Frame boundaries are the only events that can set a buffer's
+ age to a positive value. Once EGL_BUFFER_AGE_EXT has been
+ queried then it can be assumed that the age will remain valid
+ until the next frame boundary. EGL implementations are
+ permitted, but not required, to reset the buffer age in
+ response to pixel ownership test changes for any pixels within
+ the drawable, or if new pixels are added to or removed from
+ the drawable, i.e., the drawable is resized. A reset of this
+ nature does not affect the age of content for pixels that pass
+ the pixel ownership test before and after the event that
+ caused the reset. In other words, applications can assume
+ that no event will invalidate the content of pixels that
+ continuously pass the pixel ownership test between when the
+ buffer age was queried and the following frame boundary.
+
+ It is up to applications to track pixel ownership using data
+ collected from relevant window system events, such as
+ configuration and expose events on X11.
+
+ If the EGL implementation decides to free un-used back-buffers
+ when the system is under memory pressure or in response to
+ power-management events then EGL will return an age of 0 when
+ it allocates a new buffer at the start of a new frame.
+
+ If the EGL_BUFFER_PRESERVED swap behaviour is in use then
+ it can be assumed that the age will always be 1. It is
+ recommended where possible though that the
+ EGL_BUFFER_PRESERVED swap behaviour not be used since it can
+ have severe performance consequences. Keeping track of the
+ buffer age and the regions that have changed over the last 2
+ or 3 frames instead can often replace the need for using
+ EGL_BUFFER_PRESERVED.
+
+ EGL_BUFFER_AGE_EXT state is a property of the EGL surface that
+ owns the buffers and lives in the address space of the
+ application. That is, if an EGL surface has been created from
+ a native window or pixmap that may be shared between
+ processes, the buffer age is not guaranteed to be synchronized
+ across the processes. Binding and unbinding a surface to and
+ from one or more contexts in the same address space will not
+ affect the ages of any buffers in that surface.
+
+ Add the following text to last paragraph of the subsection titled
+ "Surface Attributes" in the description for eglQuerySurface
+ errors.
+
+ If querying EGL_BUFFER_AGE_EXT and <surface> is not bound as
+ the draw surface to the calling threads current context
+ an EGL_BAD_SURFACE error is generated.
+
+Dependencies on OpenGL ES
+
+ None
+
+Dependencies on OpenVG
+
+ None
+
+Issues
+
+ 1) What are the semantics if EGL_BUFFER_PRESERVED is in use
+
+ RESOLVED: The age will always be 1 in this case. More
+ clarification about this was added along with the
+ recommendation to use the buffer age to reuse buffers instead
+ of EGL_BUFFER_PRESERVED when possible to avoid the
+ in-efficiencies of introducing a dependency for each frame on
+ the previous frame.
+
+ 2) How can an application know that all pixels of a re-usable
+ buffer were originally owned by the current context?
+
+ RESOLVED: It is up to the application to track pixel ownership
+ using existing window system specific events, such as X11
+ expose or configure notify events.
+
+ 3) What are the semantics if the buffer age attribute is queried for
+ a surface that isn't bound to the calling thread's context as the
+ draw surface?
+
+ RESOLVED: we report an EGL_BAD_SURFACE error as is similarly
+ done when calling eglSwapBuffers for such a surface.
+
+ 4) What is the buffer age of a single buffered surface?
+
+ RESOLVED: 0. This falls out implicitly from the buffer age
+ calculations, which dictate that a buffer's age starts at 0,
+ and is only incremented by frame boundaries. Since frame
+ boundary functions do not affect single buffered surfaces,
+ their age will always be 0.
+
+ 5) What guarantees are provided after querying the buffer age?
+
+ RESOLVED: The buffer age of pixels which continue to pass the
+ pixel ownership test must remain valid until the next frame
+ boundary otherwise applications can't be absolutely sure of
+ the consistency of their rendered content. Implementations
+ may reset the queryable age of the buffer when pixel ownership
+ changes occur. This is further clarified in section 3.5
+
+Revision History
+
+ Version 1, 25/07/2011
+ - First draft
+ Version 2, 03/08/2011
+ - Clarified semantics for using EGL_BUFFER_PRESERVED
+ Version 3, 01/09/2011
+ - Fixed a prototype inconsistency
+ Version 4, 03/11/2011
+ - Split out the buffer age parts from EGL_INTEL_start_frame
+ Version 5, 20/03/2012
+ - Document that once the age is queried it remains valid until
+ the end of the frame so we can remove the need for a separate
+ EGL_EXT_start_frame extension.
+ Version 6, 20/03/2012
+ - Clarify that only buffers who's contents were fully owned by
+ the context are tracked.
+ Version 7, 20/03/2012
+ - Document that an error will be generated if querying the age
+ for a surface not bound to the current context.
+ Version 8, 25/08/2012
+ - Update in line with changes made to the GLX_EXT_buffer_age draft spec
+ including more relaxed pixel ownership requirements and explicit
+ clarification of the buffer age calculation.
+ Version 9 20/09/2012
+ - Update in line with changes made to the EGL_EXT_buffer age
+ draft space
+ Version 10 29/11/2012
+ - Add pixel ownership test section and other minor
+ clarifications
+ Version 11 13/12/2012
+ - Allocated enumerant and marked complete.
+ Version 12, 13/06/2013, Chad Versace <chad.versace@intel.com>
+ - Remove the "all rights reserved" clause from the copyright notice. The
+ removal does not change the copyright notice's semantics, since the
+ clause is already implied by any unadorned copyright notice. But, the
+ removal does diminish the likelihood of unwarranted caution in readers
+ of the spec.
+ - Add "IP Status" section to explicitly state that this extension has no
+ knonw IP claims.
+ Version 13, 14/10/2021, Guanzhong Chen
+ - Fix an incorrect token name
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_extensions.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_extensions.txt
new file mode 100644
index 0000000..8e24447
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_extensions.txt
@@ -0,0 +1,408 @@
+Name
+
+ EXT_client_extensions
+
+Name Strings
+
+ EGL_EXT_client_extensions
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ Ian Romanick <ian.d.romanick@intel.com>
+ Jakob Bornecrantz <jakob@vmware.com>
+ James Jones <jajones@nvidia.com>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 11, 2013.10.10
+
+Number
+
+ EGL Extension #58
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.4.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension introduces the concept of *extension type*, requires that
+ each EGL extension belong to exactly one type, and defines two types:
+ display and client. It also provides a method to query, without
+ initializing a display, the set of supported client extensions.
+
+ A display extension adds functionality to an individual EGLDisplay. This
+ type of extension has always existed but, until EGL_EXT_client_extensions,
+ lacked an identifying name.
+
+ A client extension adds functionality that is independent of any display.
+ In other words, it adds functionality to the EGL client library itself. This
+ is a new type of extension defined by EGL_EXT_client_extensions.
+ EGL_EXT_client_extensions is itself a client extension.
+
+ We suggest that each future extension clearly state its type by including
+ the following toplevel section in its extension specification, preceding the
+ Dependencies section. For client extensions, this suggestion is
+ a requirement.
+
+ Extension Type
+
+ <Either "EGL display extension" or "EGL client extension" or
+ a future extension type.>
+
+ By cleanly separating display extensions from client extensions,
+ EGL_EXT_client_extensions solves a bootstrap problem for future EGL
+ extensions that will modify display initialization. To query for such
+ extensions without EGL_EXT_client_extensions, an EGL client would need to
+ initialize a throw-away EGLDisplay solely to query its extension string.
+ Initialization of the throw-away display may have undesired side-effects
+ (discussed in the issues section below) for EGL clients that wish to use the
+ new methods of display initialization.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Additions to the EGL 1.4 Specification:
+
+
+ Add the following section to Chapter 2 "EGL Operation":
+
+ "2.n Extensions
+
+ EGL implementations may expose additional functionality beyond that
+ described by this specification. Additional functionality may include new
+ functions, new enumerant values, and extended behavior for existing
+ functions. Implementations advertise such extensions to EGL by exposing
+ *extension strings*, which are queryable with eglQueryString.
+
+ Each EGL extension belongs to exactly one of the following types:
+
+ Display Extensions
+ A *display extension* adds functionality to an individual
+ EGLDisplay. Different instances of EGLDisplay may support different
+ sets of display extensions.
+
+ Client Extensions
+ A *client extension* adds functionality that is independent of any
+ display. In other words, it adds functionality to the EGL client
+ library itself. In a given process, there exists exactly one set,
+ possibly empty, of supported client extensions. When the client
+ extension string is first queried, that set becomes immutable."
+
+ Replace the paragraph in section 3.3 "EGL Versioning" that begins "The
+ EGL_EXTENSIONS string" with the following text:
+
+ "The EGL_EXTENSIONS string describes which set of EGL extensions are
+ supported. The string is zero-terminated and contains a space-separated
+ list of extension names; extension names themselves do not contain spaces.
+ If there are no extensions to EGL, then the empty string is returned.
+
+ If <dpy> is EGL_NO_DISPLAY, then the EGL_EXTENSIONS string describes the set
+ of supported client extensions. If <dpy> is a valid, initialized display,
+ then the EGL_EXTENSIONS string describes the set of display extensions
+ supported by the given display. The set of supported client extensions is
+ disjoint from the set of extensions supported by any given display [fn].
+
+ [fn] This is a consequence of the requirement in Section 2.n Extensions that
+ each extension belong to exactly one extension type."
+
+ Replace the last paragraph of section 3.3 "EGL Versioning" with:
+
+ "On failure, NULL is returned. An EGL_BAD_DISPLAY error is generated if
+ <dpy> is not a valid display, unless <dpy> is EGL_NO_DISPLAY and <name> is
+ EGL_EXTENSIONS. An EGL_NOT_INITIALIZED error is generated if <dpy> is
+ a valid but uninitialized display. An EGL_BAD_PARAMETER error is generated
+ if <name> is not one of the values described above."
+
+Conformance Tests
+
+ 1. Before any call to eglGetDisplay, call `eglQueryString(EGL_NO_DISPLAY,
+ EGL_EXTENSIONS)`. Verify that either
+
+ a. The call returns NULL and generates EGL_BAD_DISPLAY.
+ b. The call returns an extension string that contains, at a minimum,
+ this extension and generates no error.
+
+ 2. Obtain a display with eglGetDisplay but do not initialize it. Verity
+ that passing the uninitialized display to `eglQueryString(dpy,
+ EGL_EXTENSIONS)` returns NULL and generates EGL_NOT_INITIALIZED.
+
+ 3. Obtain a list of display extensions by calling `eglQueryString(dpy,
+ EGL_EXTENSIONS)` on an initialized display. Obtain the list of client
+ extensions by calling `eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)`.
+ If both calls succeed, verify the two lists are disjoint.
+
+Issues
+
+ 1. How should clients detect if this extension is supported?
+
+ RESOLVED: If an EGL implementation supports this extension, then
+ `eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)` returns
+ a well-formed extension string and generates no error. Otherwise, it
+ returns NULL and generates EGL_BAD_DISPLAY.
+
+ 2. On EGL platforms that define EGL_NO_DISPLAY as NULL, does not calling
+ `eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)` risk a null pointer
+ dereference? Therefore, how is it possible on such platforms for
+ a client to safely detect if this extension is supported?
+
+ RESOLVED: According to the EGL 1.4 specification, calling
+ `eglQueryString(EGL_NO_DISPLAY, name)` returns NULL and generates
+ EGL_BAD_DISPLAY. No null pointer dereference occurs even if the
+ platform defines EGL_NO_DISPLAY as NULL.
+
+ 3. What existing extensions should returned by
+ `eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)`?
+
+ RESOLVED: Possibly EGL_NV_system_time.
+
+ 4. What should be the relationship between the extension string of
+ EGL_NO_DISPLAY and the extension string of a valid display? That is,
+ should the former be a subset of the latter? Should the two be
+ disjoint? Should the relationship remain undefined?
+
+ Another phrasing of this issue is: When, if ever, should client
+ extensions appear in a display's extension string?
+
+ RESOLVED: The extension string of EGL_NO_DISPLAY must be disjoint
+ from the extension string of any valid display. That is, EGL_NO_DISPLAY
+ must advertise only client extensions, and valid displays must not
+ advertise client extensions. By defining a clear relationship between
+ the two types of extension strings, we enforce consistent behavior among
+ implementations, thus preventing possible confusion from application
+ developers.
+
+ DISCUSSION: This resolution has special implications for systems where
+ libEGL is a vendor-independent library that loads and then dispatches
+ to the appropriate vendor-provided EGL library. The resolution requires
+ that client extensions, as well the construction of extension strings,
+ be at least partially implemented in the vendor-independent library.
+
+ The alternative resolution of mandating the 'superset' relation (that
+ is, that the extension string of a valid display must be a superset of
+ that of EGL_NO_DISPLAY) was rejected due to potential confusion on
+ behalf of the application developer as well as the driver implementer.
+ What follows is an example of each.
+
+ a) Suppose an EGL implementation supported creation of
+ a software-renderer EGLDisplay through a client extension named
+ EGL_XYZ_platform_software_renderer. If the 'superset' relation were
+ mandated, then each display, whether it were hardware-accelerated or
+ software-only, would advertise the EGL_XYZ_platform_software_renderer
+ extension string. This would likely confuse application developers.
+
+ b) If the 'superset' relation were mandated, then the possibility
+ exists that a vendor would ship a hybrid extension that is both
+ a client extension and a display extension. Such a hybrid extension
+ poses subtle difficulties for systems where libEGL is
+ a vendor-independent library that dispatches to the appropriate
+ vendor-provided EGL driver. On such a system, the extension's hybrid
+ nature may require that each vendor-provided EGL driver support the
+ extension before the vendor-independent EGL library could safely
+ expose the extension. By choosing the 'disjoint' relation rather
+ than 'superset', we prevent this problematic situation from
+ occuring.
+
+ 5. Should client extension specifications explicitly state they are
+ returned in the extension string of EGL_NO_DISPLAY?
+
+ RESOLVED: Yes. Enforce this by requiring that client extension
+ specifications contain the toplevel section "Extension Type".
+
+ 6. As explained in the overview section, this "extension solves
+ a bootstrap problem for future EGL extensions that modify display
+ initialization". What solutions to the bootstrap problem were
+ considered? Why was EGL_EXT_client_extensions chosen as the best
+ solution?
+
+ DISCUSSION: First let's discuss the exact nature of the bootstrap
+ problem and of the future EGL extensions that modify display
+ initialization.
+
+ Mesa's EGL implementation supports multiple native platforms (such as
+ Wayland, GBM, and X11) at runtime, and we expect that more
+ implementations will do so in the future. The EGL API is deficient for
+ such implementations because it does not yet provide a way for clients
+ to query the set of supported native platforms. Also, EGL provides no
+ way for clients to specify to which platform the native display belongs
+ during display initialization. (That is, eglGetDisplay has a native
+ display parameter, but no parameter specifying the native platform).
+
+ Future EGL extensions, currently under progress, will solve these
+ deficiencies in the EGL API by (1) adding a variant of eglGetDisplay
+ that allows specification of the platform to which the native display
+ belongs and (2) by advertising the set of native platforms supported by
+ the implementation.
+
+ However, there exists a bootstrap problem here. To query if a given
+ native platform is supported, the EGL client must initialize an
+ EGLDisplay to query its extension string. But, not yet knowing which
+ native platforms the EGL implementation supports, the client cannot
+ safely pass any native display to eglGetDisplay, and therefore cannot
+ obtain an extension string.
+
+ The following solutions to this bootstrap problem have been considered.
+ For conciseness, let's refer to the future EGL extensions that modify
+ display initialization as "client extensions".
+
+ 1. PROPOSED SOLUTION: To determine if an EGL implementation supports
+ a given client extension, require that the EGL client call
+ eglGetProcAddress on some function defined by the extension. If
+ eglGetProcAddress returns non-null, then the implementation
+ supports the extension.
+
+ ANALYSIS: The EGL 1.4 spec permits eglGetProcAddress to return
+ non-null for unrecognized function names. Therefore, this
+ solution's method may produce false positives on some
+ implementations.
+
+ Also, this solution does not permit detection of client extensions
+ that add no new functions.
+
+ 2. PROPOSED SOLUTION: To determine if an EGL implementation supports
+ a given client extension, the EGL client should examine the
+ extension string of EGL_DEFAULT_DISPLAY. Querying
+ EGL_DEFAULT_DISPLAY is a failsafe mechanism by which the EGL
+ client can obtain an extension string, because EGL_DEFAULT_DISPLAY
+ is a valid input to eglGetDisplay regardless of which platforms
+ the EGL implementation supports.
+
+ ANALYSIS: This solution is awkward. It requires that the client
+ initialize a throw-away EGLDisplay solely to query its extension
+ string, even though the desired extension is not a property of any
+ display but of the EGL library itself.
+
+ This solution also has a subtle fatal problem. It is not backwards
+ compatible with Mesa. As of 2013-06-07, Mesa's EGL implementation
+ stores at runtime a user-chosen native platform in global
+ write-once state. Calling eglGetDisplay is one action that
+ results in writing to that state. Therefore, if a client process
+ running on such a problematic version of Mesa initialized
+ EGL_DEFAULT_DISPLAY solely to detect some client extension, then
+ the client process would be confined for its lifetime to use only
+ that platform to which EGL_DEFAULT_DISPLAY belongs. This
+ confinement may be fatal if the process had wanted to use
+ a different platform.
+
+ 3. PROPOSED SOLUTION: Abandon the concept of client extensions.
+ Instead, in implementations that support multiple window systems
+ at runtime, eglGetDisplay should autodetect the platform to which
+ the native display belongs. A suitable error should be generated
+ if an unsupported native display is passed to eglGetDisplay.
+
+ ANALYSIS: For some native platforms, the display type is opaque
+ with no defined ABI. (For example, in libX11 the 'Display' type is
+ an opaque typedef). There exists no method by which eglGetDisplay
+ could reliably detect that the given native display belongs to
+ such a platform.
+
+ This solution also has a subtle fatal problem. The client
+ extensions will likely specify that an EGL client may create EGL
+ resources from multiple platforms in the same process. But, Mesa's
+ global write-once state, mentioned above, prevents using multiple
+ platforms in one process. Therefore, under this proposed solution
+ and on a system where a problematic version of Mesa is installed,
+ the client would be unable to detect if EGL supported multiple
+ platforms per process without committing to the platform to which
+ the first initialized display belonged.
+
+ 4. ACCEPTED SOLUTION: Allow the EGL client to query the extension
+ string of EGL_NO_DISPLAY, which would contain the client
+ extensions.
+
+ ANALYSIS: This solution does not require the initialization of
+ a throw-away EGLDisplay, nor does it require that native display
+ types have a fixed ABI.
+
+ This is the solution described by this extension specification,
+ EGL_EXT_client_extensions.
+
+Revision History
+
+ Version 11, 2013.10.10 (Chad Versace)
+ - Fix conformance test #3. It should require that the display extension
+ list be disjoint to rather than a superset of the client extension
+ list. (The 'superset' requirement was changed pre-publication to
+ 'disjoint' in version 8).
+
+ Version 10, 2013.07.03 (Chad Versace)
+ - Version 9 and 10 are identical due to a versioning error.
+
+ Version 9, 2013.07.03 (Chad Versace)
+ - Define the concept of *extension type*, require require that each EGL
+ extension belong to exactly one type, and define two types: display
+ and client.
+ - Suggest new section "Extension Type" for future extension
+ specifications.
+ - Add new section 2.n Extensions.
+ - Simplify modifications to section 3.3 by using the new extension type
+ terminology.
+
+ Version 8, 2013.07.01 (Chad Versace)
+ - Change resolution of Issue 4 from the 'superset' relation to the
+ 'disjoint' relation, according to discussion with Jakob Bornecrantz.
+ Acked by James Jones.
+
+ Version 7, 2013.06.10 (Chad Versace)
+ - Fix typos.
+ s/unitialized/uninitialized/
+ s/EGL_NO_EXTENSIONS/EGL_EXTENSIONS/
+
+ Version 6, 2013.06.07 (Chad Versace)
+ - Remove the Motivation section, merging its content into the Overview
+ section and Issue 6.
+
+ Version 5, 2013.06.07 (Chad Versace)
+ - Resolve issue 3 regarding classifying currently published extensions
+ as client extensions.
+ - Resolve issue 4 regarding the relationship among client and display
+ extension strings.
+ - Add and resolve issue 5, requiring client extension specifications
+ to contain language about the EGL_NO_DISPLAY extension string.
+
+ Version 4, 2013.05.14 (Chad Versace)
+ - Add issue 4.
+
+ Version 3, 2013.03.24 (Chad Versace)
+ - Fix conformance test condition 1.b. The returned extension string
+ should list, at a minimum, this extension. [Found by Ian Romanick].
+ - Add section "Movivation". [Requested by Ian Romanick].
+
+ Version 2, 2013.03.06 (Chad Versace)
+ - Remove enum EGL_CLIENT_EXTENSIONS_EXT. Reuse EGL_EXTENSIONS for that
+ purpose.
+ - To obtain client extensions, require the eglQueryString be called
+ with dpy=EGL_NO_DISPLAY rather than dpy=NULL. [Suggested by James
+ Jones].
+ - Add descriptions of conformance tests. [Suggested by Ian Romanick].
+ - Add sections "Overview" and "Issues".
+
+ Version 1, 2013.03.06 (Chad Versace)
+ - First draft
+
+# vim: filetype=text expandtab autoindent shiftwidth=4 textwidth=80:
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_sync.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_sync.txt
new file mode 100644
index 0000000..1868feb
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_client_sync.txt
@@ -0,0 +1,146 @@
+Name
+
+ EXT_client_sync
+
+Name Strings
+
+ EGL_EXT_client_sync
+
+Contributors
+
+ Daniel Kartch
+
+Contacts
+
+ Daniel Kartch, NVIDIA Corporation (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, April 20, 2018
+
+Number
+
+ EGL Extension #129
+
+Extension type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_EXT_sync_reuse
+
+Overview
+
+ The EGL_KHR_reusable_sync extension defines an EGL_SYNC_REUSABLE_KHR
+ EGLSync type which is signaled and unsignaled by client events. The
+ EGL_EXT_sync_reuse extension allows all EGLSyncs to become reusable.
+ The signaling behavior associated with EGL_SYNC_REUSABLE_KHR is
+ still desirable, but the name becomes misleading if all EGLSyncs can
+ be reused. This extension defines an EGLSync type with equivalent
+ behavior, separating the signaling mechanism from the reusability.
+
+New Procedures and Functions
+
+ EGLBoolean eglClientSignalSyncEXT(
+ EGLDisplay dpy,
+ EGLSync sync,
+ const EGLAttrib *attrib_list);
+
+New Types
+
+ None
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSync, and returned
+ in <value> when eglGetSyncAttrib is called with <attribute>
+ EGL_SYNC_TYPE:
+
+ EGL_SYNC_CLIENT_EXT 0x3364
+
+ Returned in <value> when eglGetSyncAttrib is called with attribute
+ EGL_SYNC_CONDITION:
+
+ EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+
+Add to the list of sync object decriptions in 3.8.1 Sync Objects
+
+ A <client sync object> reflects the readiness of some client-side
+ state. Sync objects of this type are not visible to API contexts and
+ may not be used with eglWaitSync. They may be waited for with
+ eglClientWaitSync or polled with eglGetSyncAttrib as other sync
+ types.
+
+Add to the end of 3.8.1 Sync Objects
+
+ The command
+
+ EGLBoolean eglClientSignalSyncEXT(EGLDisplay dpy, EGLSync sync,
+ const EGLAttrib *attrib_list);
+
+ may be called to switch sync objects which support it to the
+ signaled state. Currently only sync objects with type
+ EGL_SYNC_CLIENT_EXT provide this support. The attribute list may be
+ used to provide additional information to the signaling operation,
+ as defined for the sync type.
+
+ Errors
+
+ eglClientSignalSyncEXT returns EGL_FALSE on failure, and has no
+ effect on <sync>.
+ If <dpy> is not the name of a valid, initialized EGLDisplay, an
+ EGL_BAD_DISPLAY error is generated.
+ If <sync> is not a valid sync object associated with <dpy>, an
+ EGL_BAD_PARAMETER error is generated.
+ If <attrib_list> contains an attribute name not defined for the
+ type of <sync>, an EGL_BAD_ATTRIBUTE error is generated.
+ If <sync>'s type does not support this direct signaling, an
+ EGL_BAD_ACCESS error is generated.
+
+Insert new subsection in 3.8.1 Sync Objects
+
+ 3.8.1.x Creating and Signaling Client Sync Objects
+
+ If type is EGL_SYNC_CLIENT_EXT, a client sync object is created. The
+ EGL_SYNC_STATUS attribute may be specified as either EGL_UNSIGNALED
+ or EGL_SIGNALED, and will default to EGL_UNSIGNALED. No other
+ attributes may be specified for a client sync object. The value of
+ EGL_SYNC_CONDITION will be set to EGL_SYNC_CLIENT_SIGNAL_EXT.
+
+ A client sync object in the unsignaled state will switch to the
+ signaled state when eglClientSignalSyncEXT is called. No attributes
+ are supported for signaling a sync object of this type. Signaling a
+ client sync object which is already in the signaled state will have
+ no effect.
+
+ A client sync object which is in the signaled state may be switched
+ back to the unsignaled state with eglUnsignalSyncEXT. No attributes
+ are supported for unsignaling a sync object of this type.
+
+Add to the error list for eglWaitSync in 3.8.1.3 Waiting for Sync
+Objects
+
+ If <sync> is of type EGL_SYNC_CLIENT_EXT, an EGL_BAD_ACCESS error is
+ generated.
+
+Issues
+
+ None
+
+Revision History
+
+ #2 (April 20, 2018) Daniel Kartch
+ - Renamed to EXT
+ - Fixed missing attrib_list in New Functions section
+ - Eliminated condition as an allowed attribute at creation. This
+ is inconsistent with other sync extensions, and there is no
+ need to make it configurable at this time. Future extensions
+ can make the condition configurable if desired.
+
+ #1 (Feburary 22, 2018) Daniel Kartch
+ - Initial draft as XXX
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_compositor.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_compositor.txt
new file mode 100644
index 0000000..6e98428
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_compositor.txt
@@ -0,0 +1,400 @@
+Name
+
+ EXT_compositor
+
+Name Strings
+
+ EGL_EXT_compositor
+
+Contributors
+
+ Marc Moody
+ Daniel Herring
+
+Contacts
+
+ Marc Moody, Boeing Inc., marc dot d dot moody at boeing dot com
+ Daniel Herring, Core Avionics & Industrial Inc., daniel dot herring at ch1group dot com
+
+Status
+
+ Complete
+
+Version
+ Version 1.0, February 3, 2017
+
+Number
+
+ EGL Extension #116
+
+Dependencies
+
+ Requires EGL 1.0.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification - April 6, 2011, but may be implemented against earlier
+ versions.
+
+Overview
+
+ This extension allows for the composition of multiple windows within
+ a multi-partition EGL system. The extension allows a primary EGLContext and
+ window to be created for each display. All other windows are created using
+ non-displayable surfaces. A handle to each off-screen window is provided
+ to the primary EGLContext to allow the composition of all non-displayable windows
+ on a single display.
+
+ For each display, there is one EGLContext which has access to create on screen
+ windows, this is call the primary context for this display. All other EGLContexts
+ are referred to as secondary contexts.
+
+ This extension requires a multi-partition EGL driver to support asynchronous
+ rendering of off screen surfaces.
+
+ Information assurance is provided by preventing context and surface creation by
+ unregistered contexts and by preventing the non-primary contexts and surfaces
+ from rendering to the display.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglCompositorSetContextListEXT (const EGLint *external_ref_ids,
+ EGLint num_entries);
+
+ EGLBoolean eglCompositorSetContextAttributesEXT (EGLint external_ref_id,
+ const EGLint *context_attributes,
+ EGLint num_entries);
+
+ EGLBoolean eglCompositorSetWindowListEXT (EGLint external_ref_id,
+ const EGLint *external_win_ids,
+ EGLint num_entries);
+
+ EGLBoolean eglCompositorSetWindowAttributesEXT (EGLint external_win_id,
+ const EGLint *window_attributes,
+ EGLint num_entries);
+
+ EGLBoolean eglCompositorBindTexWindowEXT (EGLint external_win_id);
+
+ EGLBoolean eglCompositorSetSizeEXT (EGLint external_win_id,
+ EGLint width, EGLint height);
+
+ EGLBoolean eglCompositorSwapPolicyEXT (EGLint external_win_id,
+ EGLint policy);
+
+
+New Tokens
+
+ New attributes accepted by the <attrib_list> argument of
+ eglCreateContext:
+
+ EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+
+ New attributes accepted by the <attrib_list> argument of
+ eglCreateContext and eglCreateWindowSurface:
+
+ EGL_EXTERNAL_REF_ID_EXT 0x3461
+
+ New attributes accepted by the <policy> argument of
+ eglCompositorSwapPolicyHint:
+
+ EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+
+ EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+
+Modify Section 3.7.1 of the EGL 1.4 Specification, paragraph 2
+ (Creating Rendering Contexts) on pg. 43
+ From:
+ If eglCreateContext succeeds, it initializes the context to the initial state defined
+ for the current rendering API, and returns a handle to it. The context can be
+ used to render to any compatible EGLSurface.
+
+ To:
+ If eglCreateContext succeeds, it initializes the context to the initial state defined
+ for the current rendering API, and returns a handle to it. The context can be
+ used to render to any compatible off-screen rendering surface (Sections 3.5.2
+ and 3.5.4). A secondary context can be used to render to compatible window surfaces
+ which have been associated with the context using eglCompositorSetWindowListEXT. A
+ non-secondary context can be used to render to any compatible EGLSurface.
+
+Modify Section 3.7.1 of EGL 1.4 Specification, paragraph 5
+ (Creating Rendering Contexts) on pg. 43
+ From:
+ attrib_list specifies a list of attributes for the context. The list has the same
+ structure as described for eglChooseConfig. The only attribute that can be specified
+ in attrib_list is EGL_CONTEXT_CLIENT_VERSION, and this attribute may only
+ be specified when creating a OpenGL ES context (e.g. when the current rendering
+ API is EGL_OPENGL_ES_API).
+
+ To:
+ attrib_list specifies a list of attributes for the context. The list has the same
+ structure as described for eglChooseConfig. The attributes that can be specified
+ in attrib_list are EGL_CONTEXT_CLIENT_VERSION, EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT,
+ EGL_EXTERNAL_REF_ID_EXT.
+
+Modify Section 3.7.1 of EGL 1.4 Specification, paragraph 7
+ (Creating Rendering Contexts) on pg. 43
+ From:
+ EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL
+ ES context to create. An attribute value of 1 specifies creation of an OpenGL ES
+ 1.x context. An attribute value of 2 specifies creation of an OpenGL ES 2.x context.
+ The default value for EGL_CONTEXT_CLIENT_VERSION is 1.
+
+ To:
+ EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL
+ ES context to create. An attribute value of 1 specifies creation of an OpenGL ES
+ 1.x context. An attribute value of 2 specifies creation of an OpenGL ES 2.x context.
+ The default value for EGL_CONTEXT_CLIENT_VERSION is 1. EGL_CONTEXT_CLIENT_VERSION
+ may only be specified when creating a OpenGL ES context (e.g. when the current
+ rendering API is EGL_OPENGL_ES_API).
+
+Additions to Section 3.7.1 of the EGL 1.4 Specification (Creating Rendering Contexts).
+
+ The first call to eglCreateContext with EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT
+ set as EGL_TRUE in the <attrib-list> returns an EGLContext handle which will
+ act as the primary context for the specified EGLDisplay. This shall be the
+ only context on this EGLDisplay which is able to be bound to an on-screen window
+ on the EGLDisplay. Subsequent calls to eglCreateContext, for the same display,
+ in any address space with EGL_PRIMIARY_COMPOSITOR_CONTEXT_EXT set as EGL_TRUE
+ shall return EGL_NO_CONTEXT.
+ Subsequent calls, in any address space for the same display, to eglCreateContext
+ which do not use EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT should use the the attribute
+ EGL_EXTERNAL_REF_ID_EXT and an external reference identifier to create a valid
+ EGLContext.
+ Subsequent calls, in any address space for the same display, to eglCreateContext
+ which do not use EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT and do not use
+ EGL_EXTERNAL_REF_ID_EXT shall not create a context and shall return
+ EGL_NO_CONTEXT and set the error EGL_BAD_ACCESS.
+
+ EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT notifies EGL that this context is the only
+ context allowed to render to a on screen window surface for this display. This
+ attribute is followed in the attribute list by either EGL_TRUE or EGL_FALSE.
+ EGL_EXTERNAL_REF_ID_EXT is followed by an external reference identifier which
+ associates this context with the list of allowed contexts set by
+ eglCompositorSetContextListEXT. If the reference identifier has already been
+ used to initiate another call to eglCreateContext in any address space, this
+ call shall fail and set the error EGL_BAD_ATTRIBUTE. IF the external reference
+ identifier is not a valid identifier the error EGL_BAD_ATTRIBUTE shall be set
+ and the call shall fail. If this attribute is set and the primary context has
+ not yet been created then the error EGL_BAD_MATCH and the call shall fail.
+
+ Only when the attributes specified via attrib_list and those specified for this
+ context using eglCompositorSetContextAttributesEXT are compatible will the
+ context be successfully created.
+
+Modify the list of parameters supported by eglCreateWindowSurface in section 3.5.1
+ (Creating On-Screen Rendering Surfaces) on p. 27:
+
+ An external window identifier (EGLuint external_win_id) is associated with
+ each off screen window. EGLNativeWindowType shall be EGLint and the
+ external window identifier shall be used as the value for the <win> parameter.
+ EGL_EXTERNAL_REF_ID_EXT with the context external reference id shall be in the
+ attrib_list. If the external window identifier and the external reference identifier
+ do not match a pair set using eglCompositorSetWindowListEXT window creation shall
+ fail.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetContextListEXT(const EGLint *external_ref_ids,
+ EGLint num_entries);
+
+ This function is called by the primary context to establish the set of
+ all allowable secondary contexts by defining the set of external reference
+ identifiers. Secondary contexts shall identify their external reference
+ identifier by setting the EGL_EXTERNAL_REF_ID_EXT attribute when calling
+ eglCreateContext.
+ Calls to this function when the primary context for the display is not active,
+ shall return EGL_FALSE and do nothing. When this function is successful it
+ shall return EGL_TRUE and associate the list of external reference identifiers
+ with the active display.
+ This function shall only be called once per primary context. Subsequent calls
+ shall return EGL_FALSE and do nothing.
+
+ external_ref_ids shall be an array of user generated integers greater than 1.
+ num_entries shall specify the number of external_ref_ids.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetContextAttributesEXT (EGLint external_ref_id,
+ const EGLint *context_attributes,
+ EGLint num_entries);
+
+ This function is called by the primary context to establish a list of compatible
+ context attributes.
+ Calls to this function when the primary context for the display is not active
+ shall return EGL_FALSE and do nothing. When the function is successful it shall
+ return EGL_TRUE and associate the given attributes to the subsequent
+ eglCreateContext call using the given external reference id.
+ The list of acceptable context_attributes is the same as the list for
+ eglCreateContext. Only when this list of attributes is compatible with those
+ used during context creation will the secondary context be created.
+ This function shall only be called once per secondary context, and must be called
+ before the secondary context is able to be created. Subsequent calls shall
+ return EGL_FALSE and do nothing.
+
+ num_entries shall specify the number of attributes in the list. This number
+ shall prevent accessing memory outside the attribute list, even if EGL_NONE is
+ not yet found in the list. If EGL_NONE is found sooner than this number of
+ attributes list parsing shall stop.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetWindowListEXT (EGLint external_ref_id,
+ const EGLint *external_win_ids,
+ EGLint num_entries);
+
+ This function is called by the primary context to establish the set of
+ all allowable windows associated with a specific secondary context by defining
+ the set of external window identifiers. Window surface creation within secondary
+ contexts use the external window identifier as the native window handle parameter
+ of eglCreateWindowSurface and supply an external reference id as a window creation
+ attribute.
+ Calls to this function when the primary context for the display is not active,
+ shall return EGL_FALSE and do nothing. When this function is successful it
+ shall return EGL_TRUE and associate the list of external window identifiers
+ with the specified secondary context (external_ref_ids).
+
+ external_win_ids shall be an array of user generated integers greater than 1.
+ external window identifiers are unique within the primary EGLContext. Any
+ external window identifier may be associated with multiple secondary contexts
+ however only the first context which calls eglCreateWindowSurface shall
+ successfully create a window surface for the given window.
+ num_entries shall specify the number of external_ref_ids.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetWindowAttributesEXT (EGLint external_win_id,
+ const EGLint *window_attributes,
+ EGLint num_entries);
+
+ This function is called by the primary context to set window specific attributes
+ for the specified external window id.
+
+ The list of valid attributes are: EGL_WIDTH, EGL_HEIGHT, EGL_VERTICAL_RESOLUTION,
+ EGL_HORIZONRAL_RESOLUTION, EGL_PIXEL_ASPECT_RATIO.
+ EGL_WIDTH and EGL_HEIGHT shall set the maximum width and height the secondary
+ context is able to create a window surface with.
+ EGL_VERTICAL_RESOLUTION, EGL_HORIZONTAL_RESOLUTION, and EGL_PIXEL_ASPECT_RATIO
+ shall set the values of these used by the secondary context.
+ Calls to this function when the primary context for the display is not active,
+ shall return EGL_FALSE and do nothing. When this function is successful it
+ shall return EGL_TRUE and associate the list of attributes with the off screen
+ window ID (external_win_id).
+ This function shall only be called once per window, and must be called before
+ the secondary context is able to create the window surface. Subsequent calls
+ shall return EGL_FALSE and do nothing.
+
+ num_entries shall specify the number of attributes in the list. This number
+ shall prevent accessing memory outside the attribute list, even if EGL_NONE is
+ not yet found in the list. If EGL_NONE is found sooner than this number of
+ attributes list parsing shall stop.
+
+Add the function:
+
+ EGLBoolean eglCompositorBindTexWindowEXT (EGLint external_win_id);
+
+ This function is similar to eglBindTexImage in that it binds the windows
+ color buffers to a texture object which can then be composited on the native
+ window by the primary context. This function shall only be callable within
+ the primary context while there is a texture object actively bound by the
+ native rendering API. The function shall return EGL_TRUE if the window is
+ successfully bound to the active texture object. The function shall return
+ EGL_FALSE if binding fails, the context is not the primary context, or the
+ external_win_id is not a valid external window reference as set using
+ eglCompositorSetWindowListEXT.
+
+Add the function:
+
+ EGLBoolean eglCompositorSetSizeEXT(EGLint external_win_id,
+ EGLint width, EGLint height);
+
+ This function shall be called by the primary context to set the width and
+ height of the window. This function returns EGL_FALSE when called by a context
+ other than the primary context. This function will also return EGL_FALSE if
+ the new width and height are larger than the maximums set by
+ eglCompositorSetWindowAttributesEXT. Upon successful window resizing the function
+ shall return EGL_TRUE.
+ Secondary contexts may use EGL to query the windows width and height at runtime
+ to detect window resize events. The window buffer resizing shall be applied
+ to the newly active buffer after the secondary context calls eglSwapBuffers.
+ This will leave an average of 2 buffers which will have to be scaled by the
+ native rendering API to the new resolution.
+
+Add the function:
+
+ EGLBoolean eglCompositorSwapPolicyEXT(EGLint external_win_id,
+ EGLint policy);
+
+ This function shall be called by the primary context to specify the handling
+ of buffer swaps of the context specified by external_ref_id.
+
+ When the policy is set to EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT, and the
+ secondary context completes a frame by calling eglSwapbuffers, and the
+ primary context is actively reading from the front buffer associated with
+ the external window ID, then the just completed frame is dropped, no buffer
+ swap occurs, and eglSwapBuffers will return EGL_TRUE.
+ If EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT is specified and the primary context
+ is actively reading from the front buffer associated with the external window
+ ID then the secondary context's call to eglSwapBuffers will return EGL_FALSE.
+ eglSwapBuffers will continue to return EGL_FALSE as long as the primary context
+ is actively reading from the front buffer. Once the primary context finishes
+ reading from the front buffer the next call to eglSwapBuffers will
+ return EGL_TRUE. It is up to the application to decide if it will wait until
+ eglSwapBuffers returns EGL_TRUE before rendering again. If the secondary
+ context continues to render after eglSwapBuffers returns EGL_FALSE then it will
+ be as if the swap policy was EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT.
+
+
+Revision History
+ Version 0.1, 30/08/2014 - first draft.
+ Version 0.2, 24/09/2014 second draft.
+ Version 0.3, 21/12/2016
+ Khronos vendor extension clean-up.
+ Version 0.4, 05/01/2016
+ - Change from context and display limitation to context and window limitations
+ - Added additional functions related to external window ids contexts.
+ Version 1.0, 03/02/2017
+ - Fixed misc issues related to parameter names and types.
+
+Question: How are external reference and window IDs assigned and managed? Are they
+ reserved somehow within a new EGL C header file?
+Answer: External IDs are assigned from the software component with the primary
+ context during an EGL initialization stage using eglCompositorSet*ListEXT.
+ The secondary contexts are provided the appropriate external reference ID
+ during end system integration. It is recommended that these values be able
+ to be set via a configuration parameter to the application, to ease
+ integration of multiple programs.
+
+Question: What happens when the secondary contexts render faster than the
+ primary context?
+Answer: This is based on the swap policy set by the compositor, and the rate
+ difference between the render and the compositor. Secondary contexts
+ will be notified by EGL_FALSE being returned if the windows front buffer
+ is currently being read by the compositor. However, if the compositor is
+ not currently reading the front buffer the swap will succeed and the
+ secondary contexts latest rendered frame will now be in the front buffer
+ to be composited.
+
+Question: What happens when the primary context renders faster than the
+ secondary context(s)?
+Answer: The contents of the windows front buffer will be repeated.
+
+Question: Does this infer any Z-ordering for the off-screen surfaces?
+Answer: No, the Z-order is applied by the compositor when doing the final on
+ screen rendering of the off-screen surfaces. Or may be set if a Z-ordering
+ extension is applied to the attribute list of the window using
+ eglCompositorSetWindowAttributesEXT
+
+Comments:
+
+The driver should also have to have enough protection in it to prevent a random
+software component from passing random buffer handles to the driver to prevent
+access to other software components.
+
+The driver may force use of double buffering event if the window surface was created
+using an EGL_RENDER_BUFFER attribute set to EGL_SINGLE_BUFFER.
+
+If EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT is not used to create a context for a specified
+display then EGL will act as though this extension is not enabled.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_config_select_group.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_config_select_group.txt
new file mode 100644
index 0000000..9721195
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_config_select_group.txt
@@ -0,0 +1,111 @@
+Name
+
+ EGL_EXT_config_select_group
+
+Name Strings
+
+ EGL_EXT_config_select_group
+
+Contributors
+
+ Hal Gentz <zegentzy@protonmail.com>
+ Adam Jackson <ajax@redhat.com>
+ Robert Mader <robert.mader@posteo.de>
+
+Contacts
+
+ Hal Gentz <zegentzy@protonmail.com>
+
+Status
+
+ Draft
+
+Version
+
+ Version 4, 2021-06-24
+
+Number
+
+ EGL Extension #145
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ This extension is written against the wording of the 2014.08.27 revision
+ of the EGL 1.5 Specification.
+
+Overview
+
+ This extension provides a mechanism to lower the config selection priority
+ of the configs returned by eglChooseConfig. A new config attribute is
+ introduced, providing a way for the implementation to group configs into
+ different config selection categories. The config selection priorities of
+ all the configs in one category may be higher or lower than the ones in
+ other categories. The config selection priorities in one category follow
+ the rules of eglChooseConfig. See also GLX_SGIX_visual_select_group.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as a new EGLConfig attribute:
+
+ EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
+
+Additions to the EGL 1.5 Specification
+
+ In section 3.4 "Configuration Management", under the "Buffer Descriptions
+ and Attributes" heading, append to table 3.1 the following:
+
+ "EGL_CONFIG_SELECT_GROUP_EXT | integer | the config select group"
+
+ In section 3.4 "Configuration Management", under the "Other EGLConfig
+ Attribute Descriptions" heading, append to the end the following:
+
+ "The attribute EGL_CONFIG_SELECT_GROUP_EXT is used to specify the config
+ selection category of the config. Configs in the i-th category have a higher
+ config selection priority than those found in the (i+1)-th category.
+
+ "The attribute EGL_CONFIG_SELECT_GROUP_EXT is used by the implementation to
+ override the default sorting rules, by collecting configurations into
+ groups. It is not accepted by the <attrib_list> parameter of
+ eglChooseConfig, but it is accepted as the <attribute> in
+ eglGetConfigAtrrib."
+
+ In section 3.4 "Configuration Management", under the "Sorting of EGLConfigs"
+ heading, append to table 3.4 the following:
+
+ "EGL_CONFIG_SELECT_GROUP_EXT | 0 | Ignore | Smaller | 0"
+
+ In section 3.4 "Configuration Management", under the "Sorting of EGLConfigs"
+ heading, append before the list entry which starts with "1. Special: by
+ EGL_CONFIG_CAVEAT" the following entry:
+
+ "0. Smaller EGL_CONFIG_SELECT_GROUP_EXT."
+
+Issues
+
+ None
+
+Revision History
+
+ Version 4, 2021-06-24 (Robert Mader)
+ - Moved to EXT, changed enum value to 0x34C0.
+
+ Version 3, 2020-04-06 (Robert Mader)
+ - Changed enum value to 0x31DF, added contributors.
+
+ Version 2, 2019-07-11 (Hal Gentz)
+ - Resolved issues pointed out by Adam Jackson.
+
+ Version 1, 2019-06-21 (Hal Gentz)
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_create_context_robustness.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_create_context_robustness.txt
new file mode 100644
index 0000000..a78f878
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_create_context_robustness.txt
@@ -0,0 +1,169 @@
+Name
+
+ EXT_create_context_robustness
+
+Name Strings
+
+ EGL_EXT_create_context_robustness
+
+Contributors
+
+ Daniel Koch, TransGaming
+ Contributors to EGL_KHR_create_context
+
+Contact
+
+ Greg Roth (groth 'at' nvidia.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 3, 2011/10/31
+
+Number
+
+ EGL Extension #37
+
+Dependencies
+
+ Requires EGL 1.4
+
+ Written against the EGL 1.4 specification.
+
+ An OpenGL implementation supporting GL_ARB_robustness, an OpenGL ES
+ implementation supporting GL_EXT_robustness, or an implementation
+ supporting equivalent functionality is required.
+
+Overview
+
+ This extension allows creating an OpenGL or OpenGL ES context
+ supporting robust buffer access behavior and a specified graphics
+ reset notification behavior.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <*attrib_list> argument to
+ eglCreateContext:
+
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+
+ Accepted as an attribute value for EGL_CONTEXT_RESET_NOTIFICATION_-
+ STRATEGY_EXT in the <*attrib_list> argument to eglCreateContext:
+
+ EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+ EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
+
+Additions to the EGL 1.4 Specification
+
+ Replace section 3.7.1 "Creating Rendering Contexts" from the
+ fifth paragraph through the seventh paragraph:
+
+ <attrib_list> specifies a list of attributes for the context. The
+ list has the same structure as described for eglChooseConfig. If an
+ attribute is not specified in <attrib_list>, then the default value
+ specified below is used instead. <attrib_list> may be NULL or empty
+ (first attribute is EGL_NONE), in which case attributes assume their
+ default values as described below. Most attributes are only meaningful
+ for specific client APIs, and will generate an EGL_BAD_ATTRIBUTE
+ error when specified to create for another client API context.
+
+ Context Versions
+ ----------------
+
+ EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL ES
+ context to create. This attribute may only be specified when creating
+ an OpenGL ES context (e.g. when the current rendering API is
+ EGL_OPENGL_ES_API). An attribute value of 1 specifies creation of an
+ OpenGL ES 1.x context. An attribute value of 2 specifies creation of an
+ Open GL ES 2.x context. The default value for EGL_CONTEXT_CLIENT_VERSION
+ is 1.
+
+ Context Robust Access
+ -------------
+
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT indicates whether <robust buffer
+ access> should be enabled for the OpenGL ES context. Robust buffer
+ access is defined in the GL_EXT_robustness extension specification,
+ and the resulting context must support GL_EXT_robustness and robust
+ buffer access as described therein. The default value of
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT is EGL_FALSE.
+
+ Context Reset Notification
+ --------------------------
+
+ The attribute name EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_-
+ EXT specifies the <reset notification behavior> of the rendering
+ context. This attribute is only meaningful for OpenGL ES contexts,
+ and specifying it for other types of contexts will generate an
+ EGL_BAD_ATTRIBUTE error.
+
+ Reset notification behavior is defined in the GL_EXT_robustness
+ extension for OpenGL ES, and the resulting context must support
+ GL_EXT_robustness and the specified reset strategy. The attribute
+ value may be either EGL_NO_RESET_NOTIFICATION_EXT or EGL_LOSE_-
+ CONTEXT_ON_RESET_EXT, which respectively result in disabling
+ delivery of reset notifications or the loss of all context state
+ upon reset notification as described by the GL_EXT_robustness. The
+ default value for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT
+ is EGL_NO_RESET_NOTIFICATION_EXT.
+
+ Add to the eglCreateContext context creation errors:
+
+ * If <config> does not support a client API context compatible
+ with the requested context flags and context reset notification
+ behavior (for client API types where these attributes are
+ supported), then an EGL_BAD_CONFIG error is generated.
+
+ * If the reset notification behavior of <share_context> and the
+ newly created context are different then an EGL_BAD_MATCH error is
+ generated.
+
+
+Errors
+
+ EGL_BAD_CONFIG is generated if EGL_CONTEXT_OPENGL_ROBUST_ACCESS_-
+ EXT is set to EGL_TRUE and no GL context supporting the GL_EXT_-
+ robustness extension and robust access as described therein can be
+ created.
+
+ EGL_BAD_CONFIG is generated if no GL context supporting the
+ GL_EXT_robustness extension and the specified reset notification
+ behavior (the value of attribute EGL_CONTEXT_RESET_NOTIFICATION_-
+ STRATEGY_EXT) can be created.
+
+ BAD_MATCH is generated if the reset notification behavior of
+ <share_context> does not match the reset notification behavior of
+ the context being created.
+
+New State
+
+ None
+
+Conformance Tests
+
+ TBD
+
+Sample Code
+
+ TBD
+
+Issues
+
+ None
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ------------ --------- ----------------------------------------
+ 3 31 Oct 2011 groth Reverted to attribute for robust access. Now it's a
+ companion to rather than subset of KHR_create_context
+ 2 11 Oct 2011 groth Merged ANGLE and NV extensions.
+ 1 15 July 2011 groth Initial version
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_base.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_base.txt
new file mode 100644
index 0000000..aece774
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_base.txt
@@ -0,0 +1,243 @@
+Name
+
+ EXT_device_base
+
+Name Strings
+
+ EGL_EXT_device_base
+
+Contributors
+
+ James Jones
+ Daniel Kartch
+ Jamie Madill
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Complete
+
+ Rewritten in terms of split functionality in EXT_dispay_device and
+ EXT_device_enumeration.
+
+Version
+
+ Version 9 - March 24th, 2015
+
+Number
+
+ EGL Extension #72
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Written against the wording of EGL 1.5.
+
+ The specifications of EGL_EXT_device_query and
+ EGL_EXT_device_enumeration are required to determine the
+ specification of this extension, although those extensions may not
+ be supported.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ This extension defines the first step of this bootstrapping
+ process: Device enumeration.
+
+New Types
+
+ As defined by EGL_EXT_device_query.
+
+New Functions
+
+ As defined by EGL_EXT_device_query and EGL_EXT_device_enumeration.
+
+New Tokens
+
+ As defined by EGL_EXT_device_query.
+
+Add to section "3.2 Devices"
+
+ "EGL_EXT_device_base is equivalent to the combination of the
+ functionality defined by EGL_EXT_device_query and
+ EGL_EXT_device_enumeration."
+
+Issues
+
+ 1. Should there be a mechanism (such as an attribute list) to
+ filter devices in eglQueryDevicesEXT()?
+
+ RESOLVED: No. This could develop too much complexity, like
+ the EGLConfig mechanism. Instead, force applications to query
+ all devices and implement any desired filtering themselves.
+
+ 2. Should there be an eglSetDeviceAttribEXT()?
+
+ RESOLVED: No. Device properties are immutable.
+
+ 3. Should a device file descriptor attribute be included in the
+ base specification?
+
+ RESOLVED: No. It seems like an arbitrary attribute to include
+ in the base extension. Other extensions can easily be added
+ if this or other device attributes are needed.
+
+ 4. Should EGLDeviceEXT handles be opaque pointers or 32-bit
+ values?
+
+ RESOLVED: Opaque pointers. The trend seems to be to use
+ opaque pointers for object handles, and opaque pointers allow
+ more implementation flexibility than 32-bit values.
+ Additionally, the introduction of the EGLAttrib type allows
+ inclusion of pointer-sized types in attribute lists, which was
+ the only major advantage of 32-bit types.
+
+ 5. Should eglQueryDisplayAttribEXT be defined as part of this
+ extension?
+
+ RESOLVED: Yes. There are no other known uses for this
+ function, so it should be defined here. If other uses are
+ found, future extension specifications can reference this
+ extension or retroactively move it to a separate extension.
+
+ 6. How should bonded GPU configurations, such as SLI or Crossfire
+ be enumerated? What about other hybrid rendering solutions?
+
+ RESOLVED: Bonded GPUs should appear as one device in this API,
+ since the client APIs generally treat them as one device.
+ Further queries can be added to distinguish the lower-level
+ hardware within these bonded devices.
+
+ Hybrid GPUs, which behave independently but are switched
+ between in a manner transparent to the user, should be
+ enumerated separately. This extension is intended to be used
+ at a level of the software stack below this type of automatic
+ switching or output sharing.
+
+ 7. Should this extension require all displays to have an
+ associated, queryable device handle?
+
+ RESOLVED: Yes. This allows creating new namespace containers
+ that all displays can be grouped in to and allows existing
+ applications with display-based initialization code to easily
+ add device-level functionality. Future extensions are
+ expected to expose methods to correlate EGL devices and native
+ devices, and to use devices as namespaces for future objects
+ and operations, such as cross-display EGL streams.
+
+ 8. Are device handles returned by EGL valid in other processes?
+
+ RESOLVED: No. Another level of indirection is required to
+ correlate two EGL devices in separate processes.
+
+ 9. Is a general display pointer query mechanism needed, or should
+ an eglGetDevice call be added to query a display's associated
+ device?
+
+ RESOLVED: A general mechanism is better. It may have other
+ uses in the future.
+
+ 10. Should a new type of extension be introduced to query device-
+ specific extensions?
+
+ RESOLVED: Yes. Without this mechanism, it is likely that most
+ device extensions would require a separate mechanism to
+ determine which devices actually support them. Further,
+ requiring all device-level extensions to be listed as client
+ extensions forces them to be implemented in the EGL client
+ library, or "ICD". This is unfortunate since vendors will
+ likely wish to expose vendor-specific device extensions.
+
+ These advantages were weighed against the one known
+ disadvantage of a separate extension type: Increasing the
+ complexity of this extension and the EGL extension mechanism
+ in general.
+
+ 11. Is eglQueryDeviceStringEXT necessary, or should the device
+ extension string be queried using eglQueryDeviceAttribEXT?
+
+ RESOLVED: Using a separate query seems more consistent with
+ how the current extension strings are queried.
+
+ 12. Should this extension contain both device enumeration and
+ the ability to query the device backing an EGLDisplay?
+
+ RESOLVED: This extension initially included both of these
+ abilities. To allow simpler implementations to add only the
+ ability to query the device of an existing EGLDisplay, this
+ extension was split into two separate extensions:
+
+ EGL_EXT_device_query
+ EGL_EXT_device_enumeration
+
+ The presence of this extension now only indicates support
+ for both of the above extensions.
+
+Revision History:
+
+ #9 (March 24th, 2015) James Jones
+ - Split the extension into two child extensions:
+ EGL_EXT_device_query
+ EGL_EXT_device_enumeration
+
+ #8 (May 16th, 2014) James Jones
+ - Marked the extension complete.
+ - Marked all issues resolved.
+
+ #7 (April 8th, 2014) James Jones
+ - Renamed eglGetDisplayAttribEXT back to
+ eglQueryDisplayAttribEXT.
+ - Update wording based on the EGL 1.5 specification.
+ - Use EGLAttrib instead of EGLAttribEXT.
+ - Assigned values to tokens.
+
+ #6 (November 6th, 2013) James Jones
+ - Added EGL_BAD_DEVICE_EXT error code.
+ - Renamed some functions for consistency with the core spec
+
+ #5 (November 6th, 2013) James Jones
+ - Specified this is a client extension
+ - Renamed eglQueryDisplayPointerEXT eglGetDisplayAttribEXT
+ and modified it to use the new EGLAttribEXT type rather than
+ a void pointer
+ - Introduced the "device" extension type.
+ - Added eglQueryDeviceStringEXT to query device extension
+ strings
+ - Removed issues 5, 10, and 12 as they are no longer relevant
+ - Added issues 10 and 11.
+
+ #4 (May 14th, 2013) James Jones
+ - Merged in EGL_EXT_display_attributes
+ - Changed eglGetDisplayPointerEXT to eglQueryDisplayPointerEXT
+ - Remove eglGetDisplayAttribEXT since it has no known use case
+
+ #3 (April 23rd, 2013) James Jones
+ - Include EGL_NO_DEVICE_EXT
+ - Added issues 8 and 9
+
+ #2 (April 18th, 2013) James Jones
+ - Reworded issue 3 and flipped the resolution
+ - Added issues 5, 6, and 7
+ - Filled in the actual spec language modifications
+ - Renamed from EGL_EXT_device to EGL_EXT_device_base
+ - Fixed some typos
+
+ #1 (April 16th, 2013) James Jones
+ - Initial Draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm.txt
new file mode 100644
index 0000000..fa125fc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm.txt
@@ -0,0 +1,223 @@
+Name
+
+ EXT_device_drm
+ EXT_output_drm
+
+Name Strings
+
+ EGL_EXT_device_drm
+ EGL_EXT_output_drm
+
+Contributors
+
+ Daniel Kartch
+ James Jones
+ Christopher James Halse Rogers
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 5 - December 28th, 2015
+
+Number
+
+ EGL Extension #79
+
+Extension Type
+
+ EGL device extension for EGL_EXT_device_drm
+
+ EGL display extension for EGL_EXT_output_drm
+
+Dependencies
+
+ EGL_EXT_device_drm requires EGL_EXT_device_base.
+
+ EGL_EXT_device_drm interacts with EGL_EXT_platform_device
+
+ EGL_EXT_device_drm requires a DRM driver.
+
+ EGL_EXT_output_drm requires EGL_EXT_output_base.
+
+ EGL_EXT_output_drm requires a DRM driver which supports KMS.
+
+ An EGLDisplay supporting EGL_EXT_output_drm must be associated
+ with an EGLDevice supporting EGL_EXT_device_drm.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ These extensions define how to map device and output handles between
+ EGL and DRM/KMS. An EGL implementation which provides these
+ extensions must have access to sufficient knowledge of the DRM
+ implementation to be able to perform these mappings. No requirements
+ are imposed on how this information is obtained, nor does this
+ support have any implications for how EGL devices and outputs are
+ implemented. Among the possibilities, support may be implemented in
+ a generic fashion by layering on top of DRM, or EGL and DRM backends
+ may be provided by the same vendor and share privileged lower level
+ resources. An implementation which supports these extensions may
+ support other low level device interfaces, such as OpenWF Display,
+ as well.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Added by EXT_device_drm:
+
+ Accepted as the <name> parameter of eglQueryDeviceStringEXT
+
+ EGL_DRM_DEVICE_FILE_EXT 0x3233
+
+ If EGL_EXT_platform_device is present, the following is accepted
+ in the <attrib_list> of eglGetPlatformDisplayEXT().
+
+ EGL_DRM_MASTER_FD_EXT 0x333C
+
+ Added by EXT_output_drm:
+
+ Accepted in the <attrib_list> of eglGetOutputLayersEXT and as
+ the <attribute> parameter of eglQueryOutputLayerAttribEXT
+
+ EGL_DRM_CRTC_EXT 0x3234
+ EGL_DRM_PLANE_EXT 0x3235
+
+ Accepted in the <attrib_list> of eglGetOutputPortsEXT and as
+ the <attribute> parameter of eglQueryOutputPortAttribEXT
+
+ EGL_DRM_CONNECTOR_EXT 0x3236
+
+New Behavior for EXT_device_drm
+
+ EGLDeviceEXTs may be mapped to DRM device files.
+
+ To obtain a DRM device file for an EGLDeviceEXT, call
+ eglQueryDeviceStringEXT with <name> set to EGL_DRM_DEVICE_FILE_EXT.
+ The function will return a pointer to a string containing the name
+ of the device file (e.g. "/dev/dri/cardN").
+
+If EGL_EXT_platform_device is present, replace the last sentence of the
+third paragraph in section 3.2 "Initialization" with the following:
+
+ When <platform> is EGL_PLATFORM_DEVICE_EXT, the only valid attribute
+ name is EGL_DRM_MASTER_FD_EXT. If specified, the value must be a file
+ descriptor with DRM master permissions on the DRM device associated
+ with the specified EGLDevice, as determined by EGL_DRM_DEVICE_FILE_EXT.
+ If the file descriptor does not refer to the correct DRM device or
+ does not have master permissions, the behavior is undefined. Calls to
+ eglGetPlatformDeviceEXT() with the same values for <platform> and
+ <native_display> but distinct EGL_DRM_MASTER_FD_EXT values will return
+ separate EGLDisplays.
+
+ If EGL requires the use of the DRM file descriptor beyond the duration
+ of the call to eglGetPlatformDispay(), it will duplicate it. If no
+ file descriptor is specified and EGL requires one, it will attempt to
+ open the device itself. Applications should only need to specify a
+ file descriptor in situations where EGL may fail to open a file
+ descriptor itself, generally due to lack of permissions, or when EGL
+ will fail to acquire DRM master permissions due to conflicts with an
+ existing DRM client. DRM master permissions are only required when EGL
+ must modify output attributes. This extension does not define any
+ situations in which output attributes will be modified.
+
+New Behavior for EXT_output_drm
+
+ KMS CRTC, plane, and connector IDs may be used to restrict EGL
+ output handle searches and may be queried from EGL output handles.
+
+ Add to Table 3.10.3.1 in EGL_EXT_output_base:
+
+ Attribute Type Access
+ --------------------- ------- ------
+ EGL_DRM_CRTC_EXT integer S|R
+ EGL_DRM_PLANE_EXT integer S|R
+
+ Add to Table 3.10.3.2 in EGL_EXT_output_base:
+
+ Attribute Type Access
+ --------------------- ------- ------
+ EGL_DRM_CONNECTOR_EXT integer S|R
+
+ Add to description of eglOutputLayerAttribEXT:
+
+ If <layer> corresponds to a KMS CRTC and <attribute> is
+ EGL_DRM_PLANE_EXT, or if <layer> corresponds to a KMS plane and
+ <attribute> is EGL_DRM_CRTC_EXT, an EGL_BAD_MATCH error is
+ generated.
+
+Issues
+
+ 1) Should different values of EGL_DRM_MASTER_FD_EXT result in separate
+ EGLDisplays?
+
+ RESOLVED: Yes. Consider an application made up of two independent
+ modules running in two independently scheduled threads. Each
+ module calls eglGetPlatformDisplayEXT():
+
+ int fd = open("/dev/dri/card0", O_RDWR);
+ int attr1[] = { EGL_DRM_MASTER_FD_EXT, fd };
+ dpy1 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
+ eglDev,
+ attr1);
+
+ ...
+
+ dpy2 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
+ eglDev,
+ NULL);
+
+ Presumably, if dpy1 == dpy2, they would both be using the same DRM
+ fd for output operations internally. That would mean display
+ attribute updates would likely fail if dpy2 happened to be created
+ before dpy1. This would be painful to debug. If dpy2 != dpy1,
+ failure for dpy2 would be consistent and obvious. The application
+ author would be required to work out a scheme to share the master
+ FD between modules before creating EGL displays.
+
+Revision History:
+
+ #5 (December 28th, 2015) James Jones
+ - Added EGL_DRM_MASTER_FD_EXT and associated
+ language.
+ - Added issue 1.
+
+ #4 (August 22nd, 2014) James Jones
+ - Marked complete.
+ - Listed Daniel as the contact.
+
+ #3 (June 5th, 2014) Daniel Kartch
+ - Assigned enumerated values for constants.
+
+ #2 (May 28th, 2014) Daniel Kartch
+ - Simplified description of new behavior based on refinements
+ to EGL_EXT_output_base.
+
+ #1 (January 31st, 2014) Daniel Kartch
+ - Initial draft, representing a signficant reworking of
+ functionality previously proposed in
+ EGL_EXT_native_device_drm.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm_render_node.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm_render_node.txt
new file mode 100644
index 0000000..4c08844
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_drm_render_node.txt
@@ -0,0 +1,106 @@
+Name
+
+ EXT_device_drm_render_node
+
+Name Strings
+
+ EXT_device_drm_render_node
+
+Contributors
+
+ James Jones
+ Simon Ser
+ Daniel Stone
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1 - June 4th, 2021
+
+Number
+
+ EGL Extension #144
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ EGL_EXT_device_query is required.
+
+ EGL_EXT_device_drm interacts with this extension.
+
+Overview
+
+ The EGL_EXT_device_drm extension provided a method for applications
+ to query the DRM device node file associated with a given
+ EGLDeviceEXT object. However, it was not clear whether it referred to
+ the primary or render device node. This extension adds an enum to
+ refer explicitly to the render device node and defines the existing
+ EGL_DRM_DEVICE_FILE_EXT as explicitly refering to the primary device
+ node.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <name> parameter of eglQueryDeviceStringEXT
+
+ EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
+
+Changes to section 3.2 (Devices)
+
+ Add the following paragraph to the description of
+ eglQueryDeviceStringEXT:
+
+ "To obtain a DRM device file for the render node associated with an
+ EGLDeviceEXT, call eglQueryDeviceStringEXT with <name> set to
+ EGL_DRM_RENDER_NODE_FILE_EXT. The function will return a pointer to
+ a string containing the name of the device file (e.g.
+ "/dev/dri/renderDN"), or NULL if the device has no associated DRM
+ render node."
+
+ If EGL_EXT_device_drm is present, append the following to the
+ paragraph in the same section describing EGL_DRM_DEVICE_FILE_EXT:
+
+ "If the EGL_EXT_device_drm_render_node extension is supported, the
+ value returned will refer to a primary device node, and will be NULL
+ if the device has no associated DRM primary node. If
+ EGL_EXT_device_drm_render_node is not supported, the value returned
+ will refer to a primary device node if there exists one associated
+ with the device. Otherwise, it will refer to a render device node if
+ there exists one associated with the device. If neither exists, NULL
+ is returned."
+
+Issues
+
+ 1) Should this extension clarify that EGL_DRM_DEVICE_FILE_EXT refers
+ only to primary device nodes?
+
+ RESOLVED: Yes, but only when this extension is supported. Existing
+ implementations return render node paths for that string when no
+ suitable primary node is available.
+
+Revision History:
+
+ #2 (June 8th, 2021) James Jones
+ - Added issue #1 and related spec changes.
+
+ #1 (June 4th, 2021) James Jones
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_enumeration.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_enumeration.txt
new file mode 100644
index 0000000..c7920eb
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_enumeration.txt
@@ -0,0 +1,111 @@
+Name
+
+ EXT_device_enumeration
+
+Name Strings
+
+ EGL_EXT_device_enumeration
+
+Contributors
+
+ James Jones
+ Jamie Madill
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1 - March 24th, 2015
+
+Number
+
+ EGL Extension #88
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Written against the wording of EGL 1.5.
+
+ Requires EGL 1.5 or an earlier verison of EGL with the
+ EGL_EXT_client_extensions extension.
+
+ Requires the EGL_EXT_device_query extension.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ The original EGL_EXT_device_base extension combined the conceptually
+ separate operations of querying the underlying device used by a
+ given EGLDisplay and enumerating devices from scratch. It was later
+ identified that the former is useful even in EGL implementations
+ that have no need or ability to allow enumerating all the devices
+ available on a system. To accommodate this, the extension was
+ split in two.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglQueryDevicesEXT(EGLint max_devices,
+ EGLDeviceEXT *devices,
+ EGLint *num_devices);
+
+Add the following at the beginning of section "3.2 Devices"
+
+ "EGL devices can be enumerated before EGL is initialized. Use:
+
+ EGLBoolean eglQueryDevicesEXT(EGLint max_devices,
+ EGLDeviceEXT *devices,
+ EGLint *num_devices);
+
+ "to obtain a list of all supported devices in the system. On
+ success, EGL_TRUE is returned, and <num_devices> devices are
+ stored in the array pointed to by <devices>. <num_devices> will
+ be less than or equal to <max_devices>. If <devices> is NULL,
+ then <max_devices> will be ignored, no devices will be returned in
+ <devices>, and <num_devices> will be set to the number of
+ supported devices in the system. All implementations must support
+ at least one device.
+
+ "On failure, EGL_FALSE is returned. An EGL_BAD_PARAMETER error is
+ generated if <max_devices> is less than or equal to zero unless
+ <devices> is NULL, or if <num_devices> is NULL."
+
+Remove the following paragraph from section "3.4 Display Attributes"
+
+ "Because the EGLDeviceEXT is a property of <dpy>, any use of an
+ associated EGLDeviceEXT after <dpy> has been terminated gives
+ undefined results. Querying an EGL_DEVICE_EXT from <dpy> after a
+ call to eglTerminate() (and subsequent re-initialization) may
+ return a different value."
+
+Issues
+
+ None
+
+Revision History:
+
+ #1 (March 24th, 2015) James Jones
+ - Initial branch from EGL_EXT_device_base version #8
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_openwf.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_openwf.txt
new file mode 100644
index 0000000..2fb4d3b
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_openwf.txt
@@ -0,0 +1,230 @@
+Name
+
+ EXT_device_openwf
+ EXT_output_openwf
+
+Name Strings
+
+ EGL_EXT_device_openwf
+ EGL_EXT_output_openwf
+
+Contributors
+
+ Daniel Kartch
+ James Jones
+ Christopher James Halse Rogers
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 5 - January 21, 2016
+
+Number
+
+ EGL Extension #80
+
+Extension Type
+
+ EGL device extension for EGL_EXT_device_openwf
+
+ EGL display extension for EGL_EXT_output_openwf
+
+Dependencies
+
+ EGL_EXT_device_openwf requires EGL_EXT_device_base.
+
+ EGL_EXT_output_openwf requires EGL_EXT_output_base.
+
+ Both require OpenWF Display
+
+ EGL_EXT_device_openwf interacts with EGL_EXT_platform_device
+
+ An EGLDisplay supporting EGL_EXT_output_openwf must be associated
+ with an EGLDevice supporting EGL_EXT_device_openwf.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ These extensions define how to map device and output handles between
+ EGL and OpenWF Display. An EGL implementation which provides these
+ extensions must have access to sufficient knowledge of the OpenWF
+ implementation to be able to perform these mappings. No requirements
+ are imposed on how this information is obtained, nor does this
+ support have any implications for how EGL devices and outputs are
+ implemented. An implementation which supports these extensions may
+ support other low level device interfaces, such as DRM/KMS, as well.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Added by EXT_device_openwf:
+
+ Accepted as the <attribute> parameter of eglQueryDeviceAttribEXT
+
+ EGL_OPENWF_DEVICE_ID_EXT 0x3237
+
+ If EGL_EXT_platform_device is present, the following is accepted
+ in the <attrib_list> of eglGetPlatformDisplayEXT().
+
+ EGL_OPENWF_DEVICE_EXT 0x333D
+
+ Added by EXT_output_openwf:
+
+ Accepted in the <attrib_list> of eglGetOutputLayersEXT and as
+ the <attribute> parameter of eglQueryOutputLayerAttribEXT
+
+ EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+
+ Accepted in the <attrib_list> of eglGetOutputPortsEXT and as
+ the <attribute> parameter of eglQueryOutputPortAttribEXT
+
+ EGL_OPENWF_PORT_ID_EXT 0x3239
+
+New Behavior for EXT_device_openwf
+
+ EGLDeviceEXTs may be mapped to OpenWF Display devices.
+
+ To obtain a WFD_DEVICE_ID for an EGLDeviceEXT, call
+ eglQueryDeviceAtribEXT with <attribute> set to
+ EGL_OPENWF_DEVICE_ID_EXT.
+
+If EGL_EXT_platform_device is present, replace the last sentence of the
+third paragraph in section 3.2 "Initialization" with the following:
+
+ When <platform> is EGL_PLATFORM_DEVICE_EXT, the only valid attribute
+ name is EGL_OPENWF_DEVICE_EXT. If specified, the value must be a
+ WFDDevice created with the device ID returned by querying
+ EGL_OPENWF_DEVICE_ID_EXT from the specified EGLDevice. If the device
+ handle does not refer to the correct OpenWF device the behavior is
+ undefined. Calls to eglGetPlatformDeviceEXT() with the same values
+ for <platform> and <native_display> but distinct EGL_OPENWF_DEVICE_EXT
+ values will return separate EGLDisplays.
+
+ EGL may require the use of the OpenWF device beyond the duration of
+ the call to eglGetPlatformDisplayEXT(). The application must ensure
+ the device handle remains valid for the lifetime of the display
+ returned. If no OpenWF device handle is specified and EGL requires
+ one, it will attempt to create the device itself. Applications
+ should only need to specify an OpenWF device in situations where EGL
+ may fail to create one itself due to an existing instance of the same
+ underlying device in the process.
+
+New Behavior for EXT_output_openwf
+
+ OpenWF pipeline and port IDs may be used to restrict EGL output
+ handle searches and may be queried from EGL output handles.
+
+ Add to Table 3.10.3.1 in EGL_EXT_output_base:
+
+ Attribute Type Access
+ -------------------------- ------- ------
+ EGL_OPENWF_PIPELINE_ID_EXT integer S|R
+
+ Add to Table 3.10.3.2 in EGL_EXT_output_base:
+
+ Attribute Type Access
+ -------------------------- ------- ------
+ EGL_OPENWF_PORT_ID_EXT integer S|R
+
+Issues
+
+ 1. Although the overview says that we do not impose any
+ restrictions on how the features are implemented, restrictions
+ in the OpenWF specification combined with the chosen interface
+ here do implicitly impose limitations. Specifically, the
+ wfdCreate* functions can only be called once to obtain OpenWF
+ handles. This means that an EGLDevice/Output implementation
+ cannot be layered on top of OpenWF without preventing the
+ application from calling these functions. So we must assume that
+ the implementation instead has some backdoor into OpenWF to
+ obtain the object IDs. Possible resolutions include:
+ a) Keep the access model as is. This assumption is a reasonable
+ one.
+ b) Flip the requirement. The EGL device/output implementation
+ should always create the OpenWF handles itself. We can add
+ queries so that the application can get these handles from
+ EGL.
+ c) Generalize this extension to support both models. The
+ application would have to first query EGL to determine
+ whether or not it owns the handles, and then be prepared to
+ either query them from EGL or create them itself.
+ d) Require the application to provide its OpenWF device handle
+ if it has one.
+
+ RESOLVED: (d), though implementations are free to use (a) when
+ possible.
+
+ 2. Should different values of EGL_OPENWF_DEVICE_EXT result in separate
+ EGLDisplays?
+
+ RESOLVED: Yes. Consider an application made up of two independent
+ modules running in two independently scheduled threads. Each
+ module calls eglGetPlatformDisplayEXT():
+
+ WFDDevice wfdDev = wfdCreateDevice(WFD_DEFAULT_DEVICE_ID, NULL);
+ int attr1[] = { EGL_OPENWF_DEVICE_EXT, wfdDev };
+ dpy1 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
+ eglDev,
+ attr1);
+
+ ...
+
+ dpy2 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,
+ eglDev,
+ NULL);
+
+ Presumably, if dpy1 == dpy2, they would both be using the same
+ WFDDevice for output operations internally. That would mean
+ output operations would likely fail if dpy2 happened to be created
+ before dpy1. This would be painful to debug. If dpy2 != dpy1,
+ failure for dpy2 would be consistent and obvious. The application
+ author would be required to work out a scheme to share the WFDDevice
+ between modules before creating EGL displays.
+
+Revision History:
+
+ #5 (January 21st, 2016) James Jones
+ - Add EGL_OPENWF_DEVICE_EXT to resolve issue 1.
+ - Added possible solution (d) to issue 1, and resolve to use it.
+ - Added issue 2.
+
+ #4 (August 22nd, 2014) James Jones
+ - Marked complete.
+ - Listed Daniel as the contact.
+
+ #3 (June 5th, 2014) Daniel Kartch
+ - Assign enumerated values for constants.
+
+ #2 (May 28th, 2014) Daniel Kartch
+ - Simplified description of new behavior based on refinements
+ to EGL_EXT_output_base.
+
+ #1 (January 31st, 2014) Daniel Kartch
+ - Initial draft, representing a signficant reworking of
+ functionality previously proposed in
+ EGL_EXT_native_device_openwf.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_persistent_id.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_persistent_id.txt
new file mode 100644
index 0000000..081a6d1
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_persistent_id.txt
@@ -0,0 +1,202 @@
+Name
+
+ EXT_device_persistent_id
+
+Name Strings
+
+ EGL_EXT_device_persistent_id
+
+Contributors
+
+ Kyle Brenneman, NVIDIA (kbrenneman 'at' nvidia.com)
+
+Contact
+
+ Kyle Brenneman, NVIDIA (kbrenneman 'at' nvidia.com)
+
+Version
+
+ Version 1 - April 19, 2021
+
+Number
+
+ EGL Extension #142
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ EGL_EXT_device_query is required.
+
+Overview
+
+ Applications can query a list of EGLDeviceEXT handles, but those
+ handles are only valid within the process that queried them. An
+ application has no way, for example, to record its selection and
+ select the same device when run again later.
+
+ This extension provides a vendor name and a set of UUID's, which
+ provide a unique, persistent identifier for EGLDeviceEXT handles.
+ This allows applications to find the EGLDeviceEXT for the same
+ device across multiple processes, and across multiple APIs.
+
+New Procedures and Functions
+
+ EGLBoolean eglQueryDeviceBinaryEXT(EGLDeviceEXT device,
+ EGLint name,
+ EGLint max_size,
+ void *value,
+ EGLint *size);
+
+New Tokens
+
+ Accepted by the <name> parameter of eglQueryDeviceStringEXT:
+
+ EGL_DRIVER_NAME_EXT 0x335E
+
+ Accepted by the <name> parameter of eglQueryDeviceBinaryEXT:
+
+ EGL_DEVICE_UUID_EXT 0x335C
+ EGL_DRIVER_UUID_EXT 0x335D
+
+Changes to section 3.2 (Devices)
+
+ Add the following paragraph to the description of
+ eglQueryDeviceStringEXT:
+
+ EGL_DRIVER_NAME_EXT returns a string which identifies the driver
+ that controls the device. This string remains persistent across
+ multiple versions of a driver, and an application can use strcmp(3)
+ to compare the strings for equality. Otherwise, the contents are
+ implementation-defined.
+
+
+ Add to the end of section 3.2:
+
+ To query a binary attribute for a device, use:
+
+ EGLBoolean eglQueryDeviceBinaryEXT(EGLDeviceEXT device,
+ EGLint name,
+ EGLint max_size,
+ void *value,
+ EGLint *size);
+
+ On success, EGL_TRUE is returned. If <value> is NULL, then
+ <max_size> is ignored, and the size of the attribute in bytes is
+ returned in <size>.
+
+ On failure, EGL_FALSE is returned. An EGL_BAD_ATTRIBUTE error is
+ generated if <name> is not a valid attribute. An EGL_BAD_DEVICE_EXT
+ error is generated if <device> is not a valid EGLDeviceEXT.
+
+ If <value> is not NULL, then the attribute value is returned in
+ <value>. At most <max_size> bytes are written. <size> returns the
+ number of bytes that were actually written.
+
+ Note that the EGL_DEVICE_UUID_EXT and EGL_DRIVER_UUID_EXT attributes
+ are always 16-byte values, and so the application can simply use a
+ 16-byte buffer without needing to query the size beforehand. Future
+ extensions may add variable-length attributes.
+
+
+ EGL_DEVICE_UUID_EXT is a UUID that identifies a physical device,
+ returned as a 16-byte binary value. The device UUID uniquely
+ identifies a physical device, and is persistent across reboots,
+ processes, APIs, and (to the extent possible) driver versions.
+
+ EGL_DEVICE_UUID_EXT may or may not be persistent across changes in
+ hardware configuration. Similarly, it is not guaranteed to be unique
+ or persistent across different (physical or virtual) computers.
+
+ Note that EGL_DEVICE_UUID_EXT alone is not guaranteed to be unique
+ across all EGLDeviceEXT handles. If an EGL implementation supports
+ multiple drivers, and two drivers can use the same physical device,
+ then there will be a separate EGLDeviceEXT handle from each driver.
+ Both EGLDeviceEXT handles may use the same device UUID.
+
+ In that case, an application must use EGL_DRIVER_NAME_EXT or
+ EGL_DRIVER_UUID_EXT to distinguish between the two EGLDeviceEXT
+ handles.
+
+
+ EGL_DRIVER_UUID_EXT is a UUID that identifies a driver build
+ in use for a device. The driver UUID is persistent across reboots,
+ processes, and APIs, but is not persistent across driver versions.
+
+Issues
+
+ 1. Should we use UUID's or strings to identify devices?
+
+ RESOLVED: Use UUID's for devices, plus a vendor name string to
+ disambiguate devices that are supported by multiple drivers.
+
+ A device UUID and driver UUID allow an application to correlate
+ an EGLDeviceEXT with the same device in other APIs, such as a
+ VkPhysicalDevice in Vulkan.
+
+ A UUID does not impose any additional requirements on an EGL
+ implementation compared to a string: If an EGL implementation
+ could generate a string identifier, then the implementation can
+ simply hash that string to generate a UUID value.
+
+ 2. Can two EGLDeviceEXT handles have the same EGL_DEVICE_UUID_EXT?
+
+ RESOLVED: Yes, if they correspond to the same physical device.
+
+ The semantics of the device and driver UUID's are inherited from
+ Vulkan, which only requires that a device UUID be unique to a
+ physical device, not unique across VkPhysicalDevice handles.
+
+ 3. Do we need the EGL_DRIVER_NAME_EXT string?
+
+ RESOLVED: Yes, because the EGL_DEVICE_UUID_EXT alone is not
+ unique, and EGL_DRIVER_UUID_EXT is not persistent.
+
+ A (EGL_DRIVER_NAME_EXT, EGL_DEVICE_UUID_EXT) pair provides a
+ unique, persistent identifier.
+
+ In addition, on systems that use libglvnd, applications could
+ use EGL_DRIVER_NAME_EXT to match the vendor names from
+ GLX_EXT_libglvnd.
+
+ 4. What happens if an application stores a device UUID, and the
+ hardware configuration or driver version changes?
+
+ RESOLVED: The device UUID may become invalid, and the
+ application should select a new device.
+
+ If a device is removed from a system, then there will be no
+ EGLDeviceEXT handle for it, and thus no device UUID for it.
+
+ Similarly, if a device is moved within a system (e.g., plugged
+ into a different PCI slot), then a driver may not be able to
+ identify it as the same device, and so the device might get a
+ different UUID.
+
+ While not a requirement, drivers should still try to keep device
+ UUID's persistent whenever possible, to avoid invalidating
+ config files. Similarly, if a device is removed or replaced,
+ then a driver should try to ensure that the same device UUID
+ does not refer to a different device.
+
+ As an example, a driver could derive a UUID based on a PCI
+ vendor and device number, plus the PCI domain, bus, slot, and
+ function numbers:
+
+ * The PCI device number ensures that replacing a GPU with a
+ different model in the same PCI slot produces a different
+ device UUID string.
+ * Using the PCI bus numbers ensures that two identical
+ GPU's in the same system have unique UUID's.
+ * The whole tuple can easily stay persistent across driver
+ versions.
+
+Revision History
+
+ #1 (April 19, 2021) Kyle Brenneman
+
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query.txt
new file mode 100644
index 0000000..b976aa9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query.txt
@@ -0,0 +1,188 @@
+Name
+
+ EXT_device_query
+
+Name Strings
+
+ EGL_EXT_device_query
+
+Contributors
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+ Jamie Madill, Google (jmadill 'at' google.com)
+
+Contacts
+
+ Jamie Madill, Google (jmadill 'at' google.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1 - Mar 25rd, 2015
+
+Number
+
+ EGL Extension #89
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Written against the wording of EGL 1.5.
+
+ Requires EGL 1.5 or an earlier verison of EGL with the
+ EGL_EXT_client_extensions extension.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to access native GPU or device objects directly
+ rather than calling EGL or GL entry points.
+
+ This extension defines the method for an application to query
+ native device objects from an EGL Display.
+
+New Types
+
+ This is the type of a handle that represents an EGLDeviceEXT
+ object.
+
+ typedef void* EGLDeviceEXT;
+
+ If EGL 1.5 is not supported, the following type is added, as
+ defined in the EGL 1.5 specification:
+
+ typedef intptr_t EGLAttrib;
+
+New Functions
+
+ EGLBoolean eglQueryDeviceAttribEXT(EGLDeviceEXT device,
+ EGLint attribute,
+ EGLAttrib *value);
+
+ const char *eglQueryDeviceStringEXT(EGLDeviceEXT device,
+ EGLint name);
+
+ EGLBoolean eglQueryDisplayAttribEXT(EGLDisplay dpy,
+ EGLint attribute,
+ EGLAttrib *value);
+
+New Tokens
+
+ Functions with a return type of EGLDeviceEXT will return this
+ value on failure:
+
+ EGL_NO_DEVICE_EXT ((EGLDeviceEXT)0)
+
+ This error value will be generated by functions that take an
+ EGLDeviceEXT object as a parameter:
+
+ EGL_BAD_DEVICE_EXT 0x322B
+
+ Accepted by the <attribute> parameter of
+ eglQueryDisplayAttribEXT:
+
+ EGL_DEVICE_EXT 0x322C
+
+Add a new section "2.1.2 Devices" after "2.1.1 Scalar Types"
+
+ All EGL operations occur on an EGLDeviceEXT. However, devices
+ themselves expose no functionality. They are simple abstract
+ objects that exist only for the sake of enumeration and
+ defining a namespace.
+
+Modify the last sentence of section "2.1.3" Displays" to read:
+
+ Besides devices, objects are always specified by the combination
+ of an EGLDisplay parameter with a parameter representing the
+ handle of the object.
+
+Add a new extension type to the list in section "2.8 Extensions"
+
+ Device Extensions
+ A *device extension* adds functionality to an individual
+ EGLDeviceEXT. Different instances of EGLDeviceEXT may support
+ different sets of device extensions
+
+Add a new error to section "3.1 Errors"
+
+ EGL_BAD_DEVICE_EXT
+ An EGLDeviceEXT argument does not refer to a valid
+ EGLDeviceEXT. Any command taking an EGLDeviceEXT parameter
+ may generate this error.
+
+Add a section "3.2 Devices" after "3.1 Errors"
+
+ To query the properties of a device, use:
+
+ EGLBoolean eglQueryDeviceAttribEXT(EGLDeviceEXT device,
+ EGLint attribute,
+ EGLAttrib *value);
+
+ On success, EGL_TRUE is returned and the requested attribute value
+ is returned in <value>. Currently there are no valid values of
+ <attribute> defined.
+
+ On failure, EGL_FALSE is returned. An EGL_BAD_ATTRIBUTE error is
+ generated if <attribute> is not a valid attribute. An
+ EGL_BAD_DEVICE_EXT error is generated if <device> is not a valid
+ EGLDeviceEXT.
+
+ const char *eglQueryDeviceStringEXT(EGLDeviceEXT device,
+ EGLint name);
+
+ returns a pointer to a static, zero-terminated string describing
+ some aspect of the specified EGLDeviceEXT. <name> must be
+ EGL_EXTENSIONS.
+
+ The EGL_EXTENSIONS string describes which device extensions are
+ supported by <device>. The string is of the same format specified
+ for display and client extension strings in section 3.4. Note that
+ device extensions are properties of the device, and are distinct
+ from other extension strings.
+
+ On failure, NULL is returned. An EGL_BAD_DEVICE_EXT error is
+ generated if <device> is not a valid EGLDeviceEXT. An
+ EGL_BAD_PARAMETER error is generated if <name> is not one of the
+ values described above.
+
+Add a section "3.4 Display Attributes" after "3.3 EGL Versioning"
+
+ To query attributes of an initialized display, use:
+
+ EGLBoolean eglQueryDisplayAttribEXT(EGLDisplay dpy,
+ EGLint name,
+ EGLAttrib *value);
+
+ On success, EGL_TRUE is returned. If <name> is EGL_DEVICE_EXT,
+ the EGLDeviceEXT associated with <dpy> is returned in <value>.
+ All displays have an associated EGLDeviceEXT, regardless of how
+ they were created. A successful query of EGL_DEVICE_EXT will
+ never return EGL_NO_DEVICE_EXT.
+
+ On failure, EGL_FALSE is returned. An EGL_NOT_INITIALIZED error
+ is generated if EGL is not initialized for <dpy>. An
+ EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid
+ value.
+
+ Because the EGLDeviceEXT is a property of <dpy>, any use of an
+ associated EGLDeviceEXT after <dpy> has been terminated gives
+ undefined results. Querying an EGL_DEVICE_EXT from <dpy> after a
+ call to eglTerminate() (and subsequent re-initialization) may
+ return a different value.
+
+Issues
+
+ None.
+
+Revision History:
+
+ #1 (Mar 25rd, 2015) Jamie Madill
+ - Initial Draft based on EGL_EXT_device_base
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query_name.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query_name.txt
new file mode 100644
index 0000000..bb2be91
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_device_query_name.txt
@@ -0,0 +1,104 @@
+Name
+
+ EXT_device_query_name
+
+Name Strings
+
+ EGL_EXT_device_query_name
+
+Contributors
+
+ Kyle Brenneman, NVIDIA (kbrenneman 'at' nvidia.com)
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Contact
+
+ Kyle Brenneman, NVIDIA (kbrenneman 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1 - June 12, 2020
+
+Number
+
+ EGL Extension #140
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ EGL_EXT_device_query is required.
+
+Overview
+
+ The EGL_EXT_device_enumeration and EGL_EXT_device_query extensions
+ provide a list of devices and a list of extensions, but lacks a way
+ to find a name for a device that an application can present to a
+ user.
+
+ This extension adds two new strings that an application can query to
+ find human-readable names.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <name> parameter of eglQueryDeviceStringEXT:
+
+ EGL_RENDERER_EXT 0x335F
+
+New Device Queries
+
+ eglQueryDeviceStringEXT accepts two new attributes.
+
+ EGL_VENDOR and EGL_RENDERER_EXT return a human-readable name for the
+ vendor and device, respectively.
+
+ The format of the EGL_VENDOR and EGL_RENDERER strings is
+ implementation-dependent.
+
+ The EGL_VENDOR string for an EGLDeviceEXT is not required to match
+ the EGL_VENDOR string for an EGLDisplay or the GL_VENDOR string for
+ a context. Similarly, the EGL_RENDERER string is not required to
+ match the GL_RENDERER string for a context.
+
+Issues
+
+ 1. Do we need a device query, instead of just creating an
+ EGLDisplay and calling eglQueryString?
+
+ RESOLVED: Yes, a device-level query is useful, because some
+ devices might not be usable with EGL_EXT_platform_device. This
+ is especially true on systems where different devices are
+ handled by different drivers.
+
+ 2. If an application creates an EGLDisplay from an EGLDevice,
+ are the EGL_VENDOR strings required to match?
+
+ RESOLVED: No. Some implementations might not load a driver until
+ eglInitialize, and so might have a different or more specific
+ EGL_VENDOR string associated with an EGLDisplay than with an
+ EGLDeviceEXT. In addition, an implementation might select a
+ driver to use based on other parameters in
+ eglGetPlatformDisplay.
+
+Revision History
+
+ #1 (June 12, 2020) Kyle Brenneman
+
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_explicit_device.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_explicit_device.txt
new file mode 100644
index 0000000..2ba8834
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_explicit_device.txt
@@ -0,0 +1,136 @@
+Name
+
+ EXT_explicit_device
+
+Name Strings
+
+ EGL_EXT_explicit_device
+
+Contributors
+
+ Adam Jackson
+ Nicolai Haehnle
+ Daniel Stone
+ Kyle Brenneman
+
+Contacts
+
+ Adam Jackson <ajax@redhat.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, 2022-04-21
+
+Number
+
+ EGL Extension #148
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_platform_base and EGL_EXT_device_enumeration.
+
+ EGL_EXT_platform_device trivially interacts with this extension.
+
+ This extension is written against the EGL 1.5 Specification.
+
+Overview
+
+ A system may support rendering with multiple devices for the same
+ windowing system. In that case, an EGL implementation must select a
+ default device based on the native display.
+
+ This extension allows an application to explicitly request a device
+ to use for rendering instead of the implementation's default.
+
+ This differs from EGL_EXT_platform_device in that
+ EGL_EXT_platform_device uses an EGLDeviceEXT instead of a native
+ display. Thus, EGL_EXT_platform_device allows offscreen rendering
+ to a pbuffer or FBO, but it does not require or use a windowing
+ system, and thus does not allow pixmap or window surfaces.
+
+ Using EGL_EXT_explicit_device with EGL_MESA_platform_surfaceless is
+ functionally identical to EGL_EXT_platform_device.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Additions to the EGL Specification
+
+ None
+
+New Behavior
+
+ If EGL_DEVICE_EXT is specified as an attribute for
+ eglGetPlatformDisplay, the value of the attribute is interpreted as
+ an EGLDeviceEXT as returned by eglQueryDevicesEXT.
+
+ If the EGL_DEVICE_EXT attribute is EGL_NO_DEVICE_EXT, then the
+ implementation will select a device automatically, as it would
+ normally.
+
+ If the EGL_DEVICE_EXT attribute is not EGL_NO_DEVICE_EXT, then the
+ implementation will use the specified device for rendering. If the
+ EGL_DEVICE_EXT attribute does not name a valid EGLDeviceEXT, then
+ EGL_BAD_DEVICE_EXT is generated.
+
+ An implementation might not support all devices for all native
+ displays. If the device and native display are not compatible for
+ any reason, then EGL_BAD_MATCH is generated.
+
+ If EGL_EXT_platform_device is supported, passing EGL_DEVICE_EXT as an
+ attribute to eglGetPlatformDisplay(EGL_PLATFORM_DEVICE_EXT) generates
+ EGL_BAD_ATTRIBUTE.
+
+Issues
+
+ 1. Should we have a separate function to query whether a device is
+ compatible with a native display?
+
+ RESOLVED: No. A separate query might require duplicating a lot of
+ the work that eglGetPlatformDisplay and eglInitialize would do,
+ which could be very slow.
+
+ 2. If an implementation can't support a device with a particular
+ native display, then should it fail in eglGetPlatformDisplay, or
+ can it defer any compatibility checks until eglInitialize?
+
+ RESOLVED: eglGetPlatformDisplay must check for compatibility and
+ should fail if the device and native display are not supported.
+
+ Without a separate function to check for compatibility, the only
+ way for an application to know which devices can work with a
+ native display is to try to use each device and see if it gets an
+ error. If the error is in eglInitialize, then an application
+ would have to create (and leak) a bunch of EGLDisplay handles
+ that it never intends to use.
+
+Revision History
+
+ Version 3, 2022-04-21 (Kyle Brenneman)
+ - Require eglGetPlatformDisplay (instead of eglInitialize) check
+ whether the device is supported with the native display.
+
+ Version 2, 2017-08-08 (Adam Jackson)
+ - Renamed from MESA_platform_device to EXT_explicit_device
+ - Make it an error to use this new attribute in conjunction with
+ EGL_EXT_platform_device
+
+ Version 1, 2017-07-14 (Adam Jackson)
+ - Initial version
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt
new file mode 100644
index 0000000..37eb6ba
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt
@@ -0,0 +1,175 @@
+Name
+
+ EXT_gl_colorspace_bt2020
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_bt2020_linear
+ EGL_EXT_gl_colorspace_bt2020_pq
+
+Contributors
+
+ Tom Cooksey
+ Andrew Garrard
+ Jesse Hall
+ Mathias Heyer
+ Lauri Hyvarinen
+ Adam Jackson
+ James Jones
+ Daniel Koch
+ Jeff Leger
+ Weiwan Liu
+ Jeff Vigil
+
+Contact
+
+ Weiwan Liu (weiwliu 'at' nvidia.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 7 - Nov 22, 2016
+
+Number
+
+ EGL Extension #107
+
+Dependencies
+
+ These extensions are written against the wording of the EGL 1.5
+ specification (August 27, 2014).
+
+ These extensions require EGL_KHR_gl_colorspace.
+
+Overview
+
+ Applications may wish to take advantage of a larger color gamut in the
+ BT.2020 (ITU-R Recommendation BT.2020) color space. These extensions allow
+ applications to do so by communicating to the platform the color space the
+ framebuffer data is in, i.e. BT.2020 color space, as well as the encoding
+ of the framebuffer data, which can be either linear or PQ (Dolby Perceptual
+ Quantizer - SMPTE ST 2084) encoding. Applications are expected to prepare
+ the framebuffer data properly.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_linear is supported ]]
+
+ EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_pq is supported ]]
+
+ EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces, before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_linear is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_BT2020_LINEAR_EXT, then a linear BT.2020
+ color space is assumed, with a corresponding GL_FRAMEBUFFER_ATTACHMENT_-
+ COLOR_ENCODING value of GL_LINEAR.
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_pq is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_BT2020_PQ_EXT, then a non-linear, PQ
+ encoded BT.2020 color space is assumed, with a corresponding GL_FRAMEBUFFER-
+ _ATTACHMENT_COLOR_ENCODING value of GL_LINEAR, as neither OpenGL nor OpenGL
+ ES supports PQ framebuffers. Applications utilizing this option need to
+ ensure that PQ encoding is performed on the application side.
+
+ Modify the 4th paragraph on the same page:
+
+ Note that the EGL_GL_COLORSPACE_SRGB attribute is used only by OpenGL and
+ OpenGL ES contexts supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the "sRGB Conversion"
+ sections of the OpenGL 4.4 and OpenGL ES 3.0 specifications for more
+ information.
+
+ Add a paragraph after the 4th paragraph above:
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_linear is supported ]]
+
+ When using a floating-point EGL surface with EGL_GL_COLORSPACE_BT2020_-
+ LINEAR_EXT, the output values in the display-referred range of [0.0, 1.0]
+ correspond to a luminance range of 0 to 80 nits, which is the same luminance
+ range for sRGB. To achieve a larger dynamic range of 0 to 10000 nits, which
+ is the same range for PQ, the display-referred output values can go beyond
+ 1.0 and to a range of [0.0, 125.0], where 0.0 corresponds to 0 nit and 125.0
+ corresponds to 10000 nits.
+
+ [[ If EGL_EXT_gl_colorspace_bt2020_pq is supported ]]
+
+ When using a floating-point EGL surface with EGL_GL_COLORSPACE_BT2020_PQ_-
+ EXT, to achieve the luminance range of 0 to 10000 nits (candela per square
+ meter) as defined by the SMPTE 2084 standard, applications can output values
+ in a display-referred range of [0.0, 1.0], where 0.0 corresponds to 0 nit
+ and 1.0 corresponds to 10000 nits.
+
+Errors
+
+ Modify below error in the "Errors" section on page 34:
+
+ "If config does not support the OpenVG colorspace or alpha format at-
+ tributes specified in attrib list (as defined for eglCreatePlatformWindow-
+ Surface), an EGL_BAD_MATCH error is generated."
+
+ To include OpenGL colorspace as well:
+
+ "If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for eglCreate-
+ PlatformWindowSurface), an EGL_BAD_MATCH error is generated."
+
+Issues
+
+ 1. When creating an EGL surface, what happens when the specified colorspace
+ is not compatible with or supported by the EGLConfig?
+
+ RESOLVED: There is currently no way to query the compatibility of a
+ EGLConfig and colorspace pair. So the only option is to define an error
+ case similar to that of OpenVG colorspace, i.e. if config does not
+ support the colorspace specified in attrib list (as defined for egl-
+ CreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface),
+ an EGL_BAD_MATCH error is generated.
+
+Revision History
+
+ Version 1, 2016/04/27
+ - Internal revisions
+
+ Version 2, 2016/05/20
+ - Rename to EXT
+
+ Version 3, 2016/05/25
+ - Add issues
+
+ Version 4, 2016/06/06
+ - Split up the extension and put each colorspace option into an individual
+ extension
+
+ Version 5, 2016/06/17
+ - Correct the meaning of the data from scene-referred to display-referred
+
+ Version 6, 2016/10/27
+ - Mark issue #1 as "RESOLVED" and add an error case
+
+ Version 7, 2016/11/22
+ - Change status to complete
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt
new file mode 100644
index 0000000..32e7ebc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt
@@ -0,0 +1,137 @@
+Name
+
+ EXT_gl_colorspace_display_p3
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_display_p3_linear
+ EGL_EXT_gl_colorspace_display_p3
+
+Contributors
+
+ Courtney Goeltzenleuchter
+ Jesse Hall
+
+Contact
+
+ Courtney Goeltzenleuchter (courtneygo 'at' google.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Draft
+
+Version
+
+ Version 2 - Oct 4, 2018
+
+Number
+
+ EGL Extension #118
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ These extensions are written against the wording of the EGL 1.5
+ specification (August 27, 2014).
+
+ These extensions require EGL_KHR_gl_colorspace.
+
+Overview
+
+ Applications that want to use the Display-P3 color space (DCI-P3 primaries
+ and linear or sRGB-like transfer function) can use this extension to
+ communicate to the platform that framebuffer contents represent colors in
+ the Display-P3 color space.
+ The application is responsible for producing appropriate framebuffer
+ contents, but will typically use built-in sRGB encoding in OpenGL and OpenGL
+ ES to accomplish this.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ [[ If EGL_EXT_gl_colorspace_display_p3_linear is supported ]]
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
+
+ [[ If EGL_EXT_gl_colorspace_display_p3 is supported ]]
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces, before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ [[ If EGL_EXT_gl_colorspace_display_p3_linear is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT, then a linear
+ Display-P3 color space is assumed, with a corresponding
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of GL_LINEAR.
+
+ [[ If EGL_EXT_gl_colorspace_display_p3 is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_DISPLAY_P3_EXT, then a non-linear, sRGB
+ encoded Display-P3 color space is assumed, with a corresponding GL_FRAME-
+ BUFFER_ATTACHMENT_COLOR_ENCODING value of GL_SRGB.
+ Only OpenGL and OpenGL ES contexts which support sRGB rendering must
+ respect requests for EGL_GL_COLORSPACE_SRGB_KHR, and only to sRGB
+ formats supported by the context (normally just SRGB8).
+
+ Modify the 4th paragraph on the same page:
+
+ Note that the EGL_GL_COLORSPACE_SRGB attribute is used only by OpenGL and
+ OpenGL ES contexts supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the "sRGB Conversion"
+ sections of the OpenGL 4.4 and OpenGL ES 3.0 specifications for more
+ information.
+
+Errors
+
+ Modify below error in the "Errors" section on page 34:
+
+ "If config does not support the OpenVG colorspace or alpha format at-
+ tributes specified in attrib list (as defined for eglCreatePlatformWindow-
+ Surface), an EGL_BAD_MATCH error is generated."
+
+ To include OpenGL colorspace as well:
+
+ "If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for eglCreate-
+ PlatformWindowSurface), an EGL_BAD_MATCH error is generated."
+
+Issues
+
+ 1. Removed section talking about HDR features, e.g. luminance > 80nits.
+ Do we want to keep that here in anticipation of HDR support in the future?
+
+ 2. When creating an EGL surface, what happens when the specified colorspace
+ is not compatible with or supported by the EGLConfig?
+
+ RESOLVED: There is currently no way to query the compatibility of a
+ EGLConfig and colorspace pair. So the only option is to define an error
+ case similar to that of OpenVG colorspace, i.e. if config does not
+ support the colorspace specified in attrib list (as defined for egl-
+ CreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface),
+ an EGL_BAD_MATCH error is generated.
+
+Revision History
+
+ Version 1, 2017/03/22
+ - Internal revisions
+
+ Version 2, 2018/10/04
+ - Fix typo to correct extension reference
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt
new file mode 100644
index 0000000..f0223a6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt
@@ -0,0 +1,139 @@
+Name
+
+ EXT_gl_colorspace_display_p3_passthrough
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_display_p3_passthrough
+
+Contributors
+
+ Chris Forbes
+ Courtney Goeltzenleuchter
+
+Contact
+
+ Courtney Goeltzenleuchter (courtneygo 'at' google.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Draft
+
+Version
+
+ Version 1 - Dec 4, 2018
+
+Number
+
+ EGL Extension #130
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.5
+ specification (August 27, 2014).
+
+ This extension requires EGL_KHR_gl_colorspace.
+
+Overview
+
+ Applications that want to use the Display-P3 color space (DCI-P3 primaries
+ with sRGB-like transfer function) can use this extension to
+ communicate to the platform that framebuffer contents represent colors in
+ the non-linear Display-P3 color space.
+ The application is responsible for producing appropriate framebuffer
+ contents. An application would want to use this extension rather than
+ EGL_EXT_gl_colorspace_display_p3 if they apply the sRGB transfer function
+ themselves and do not need the HW to do it.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ [[ If EGL_EXT_gl_colorspace_display_p3_linear is supported ]]
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces, before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ [[ If EGL_EXT_gl_colorspace_display_p3_passthrough is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT, then a
+ non-linear, sRGB encoded Display-P3 color space is assumed, with a
+ corresponding GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of GL_LINEAR.
+ The application is responsible for applying the appropriate transfer
+ function when writing and reading pixels.
+
+ Insert below text after the 4th paragraph on the same page:
+
+ Note that the EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT attribute
+ indicates that a colorspace of Display P3 will be communicated to the
+ Window system. While EGL itself is color space agnostic, the surface
+ will eventually be presented to a display device with specific color
+ reproduction characteristics. If any color space transformations are
+ necessary before an image can be displayed, the color space of the
+ presented image must be known to the window system.
+
+Errors
+
+ Modify below error in the "Errors" section on page 34:
+
+ "If config does not support the OpenVG colorspace or alpha format at-
+ tributes specified in attrib list (as defined for eglCreatePlatformWindow-
+ Surface), an EGL_BAD_MATCH error is generated."
+
+ To include OpenGL colorspace as well:
+
+ "If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for eglCreate-
+ PlatformWindowSurface), an EGL_BAD_MATCH error is generated."
+
+Issues
+
+ 1. When creating an EGL surface, what happens when the specified colorspace
+ is not compatible with or supported by the EGLConfig?
+
+ RESOLVED: There is currently no way to query the compatibility of a
+ EGLConfig and colorspace pair. So the only option is to define an error
+ case similar to that of OpenVG colorspace, i.e. if config does not
+ support the colorspace specified in attrib list (as defined for egl-
+ CreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface),
+ an EGL_BAD_MATCH error is generated.
+
+ 2. Why the new enum instead of DISPLAY_P3_EXT + EXT_srgb_write_control?
+
+ RESOLVED:
+ We want to rely on "surface state" rather than a "context state", e.g.
+ EXT_srgb_write_control is global where we only want behavior to apply to
+ specific surface.
+
+ 3. Should sRGB framebuffer support affect the pixel path?
+
+ RESOLVED: No.
+
+ sRGB rendering is defined by GL/GLES. Specifically, glReadPixels and
+ other pixel paths operations are not affected by sRGB rendering. But
+ glBlitFramebuffer is. Though, of course, if this extension were to
+ apply it would be a no-op.
+
+Revision History
+
+ Version 1, 2018/12/04
+ - Internal revisions
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt
new file mode 100644
index 0000000..708fb17
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt
@@ -0,0 +1,130 @@
+Name
+
+ EXT_gl_colorspace_scrgb
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_scrgb
+
+Contributors
+
+ Courtney Goeltzenleuchter
+ Lauri Hyvarinen
+ Weiwan Liu
+ Arun Swain
+
+Contact
+
+ Courtney Goeltzenleuchter (courtneygo 'at' google.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Draft
+
+Version
+
+ Version 2 - August 25, 2017
+
+Number
+
+ EGL Extension #119
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+ This extension requires EGL_KHR_gl_colorspace and EGL_EXT_pixel_format_-
+ float, and interacts with EGL_EXT_surface_SMPTE2086_metadata. This extension
+ is closely related to EGL_EXT_gl_colorspace_scrgb_linear.
+
+Overview
+
+ This extension provides an extended sRGB (also called scRGB) color
+ space option for applications to choose from when creating an EGLSurface.
+ This extension defines the non-linear display referred scRGB color space.
+ It has the same white point and color primaries as sRGB, and thus is
+ backward-compatible with sRGB. Refer to the IEC 61966-2-2:2003 standard
+ for details on scRGB color space.
+
+ This extension chooses to use floating-point formats for scRGB color space.
+ For each color channel, the floating-point values of 0.0 and 1.0 still
+ correspond to sRGB chromaticities and luminance levels. However, scRGB
+ space allows for color values beyond the range of [0.0, 1.0], and can thus
+ achieve a larger color volume than that of sRGB. As it is display referred,
+ scRGB space makes assumptions of how the floating-point color values should
+ map to luminance levels by the underlying display pipeline. The expected
+ mapping is such that a color value of (1.0, 1.0, 1.0) corresponds to a
+ luminance level of 80 nits on a standardized studio monitor. As the color
+ value per channel goes beyond 1.0 and up to ~7.83, the corresponding
+ luminance levels also increase to a maximum of 10000 nits.
+
+ The application is responsible for applying the extended sRGB transfer
+ function to color values written to or read from a surface with a
+ colorspace of EGL_EXT_gl_colorspace_scrgb.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces", before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ [[ If EGL_EXT_gl_colorspace_scrgb is supported ]]
+
+ If its value is EGL_GL_COLORSPACE_SCRGB_EXT, then a non-linear scRGB
+ color space is assumed. with a corresponding GL_FRAMEBUFFER_ATTACHMENT_-
+ COLOR_ENCODING value of GL_LINEAR as neither OpenGL nor OpenGL ES
+ supports framebuffers using an scRGB transfer function.
+ The application is responsible for applying the appropriate extended
+ sRGB transfer function when reading or writing to this buffer.
+ scRGB is defined to use the same primaries and white-point as sRGB.
+ See IEC 61966-2-2:2003 for details.
+
+ Add two paragraphs after the 4th paragraph above:
+
+ When using a floating-point EGL surface with EGL_GL_COLORSPACE_SCRGB_EXT,
+ the display-referred values in the range of (0.0, 0.0, 0.0) to
+ (1.0, 1.0, 1.0) correspond to a luminance range of 0 to 80 nits, which is
+ the same luminance range for sRGB. To achieve a larger dynamic range of up
+ to 10000 nits, the output values can go beyond 1.0 and to a range of
+ [0.0, ~7.83] for each channel.
+
+ The effective color gamut and luminance range of the content that extend
+ beyond those of sRGB may be described via EGL_EXT_surface_SMPTE2086_metadata.
+ It is highly recommended to supply such metadata, so the display pipeline
+ may use this information to transform the the colors in a manner that
+ attempts to preserve the creative intent of the color data.
+
+ In the "Errors" section on page 34 in 3.5.1 "Creating On Screen Rendering
+ Surfaces", change the 3rd error definition to:
+
+ * If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for
+ eglCreatePlatformWindowSurface), an EGL_BAD_MATCH error is generated.
+
+Issues
+
+ * Clarifications on the scRGB colorspace extensions
+
+Revision History
+
+ Version 1, 2017/06/21
+ - Initial draft
+
+ Version 2, 2017/08/25
+ - Clarify definition of color space
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt
new file mode 100644
index 0000000..084f4a0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt
@@ -0,0 +1,127 @@
+Name
+
+ EXT_gl_colorspace_scrgb_linear
+
+Name Strings
+
+ EGL_EXT_gl_colorspace_scrgb_linear
+
+Contributors
+
+ Courtney Goeltzenleuchter
+ Lauri Hyvarinen
+ Weiwan Liu
+ Arun Swain
+
+Contact
+
+ Weiwan Liu (weiwliu 'at' nvidia.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 4 - August 25, 2017
+
+Number
+
+ EGL Extension #108
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+ This extension requires EGL_KHR_gl_colorspace and EGL_EXT_pixel_format_-
+ float, and interacts with EGL_EXT_surface_SMPTE2086_metadata. This extension
+ is closely related to the EGL_EXT_gl_colorspace_scrgb.
+
+Overview
+
+ This extension provides an extended sRGB (also called scRGB) color
+ space option for applications to choose from when creating an EGLSurface.
+ This extension defines the linear display referred scRGB color space.
+ It has the same white point and color primaries as sRGB, and thus is
+ backward-compatible with sRGB. Refer to the IEC 61966-2-2:2003 standard
+ for details on scRGB color space.
+
+ This extension chooses to use floating-point formats for scRGB color space.
+ For each color channel, the floating-point values of 0.0 and 1.0 still
+ correspond to sRGB chromaticities and luminance levels. However, scRGB
+ space allows for color values beyond the range of [0.0, 1.0], and can thus
+ achieve a larger color volume than that of sRGB. As it is display referred,
+ scRGB space makes assumptions of how the floating-point color values should
+ map to luminance levels by the underlying display pipeline. The expected
+ mapping is such that a color value of (1.0, 1.0, 1.0) corresponds to a
+ luminance level of 80 nits on a standardized studio monitor. As the color
+ value per channel goes beyond 1.0 and up to 125.0, the corresponding
+ luminance levels also increase linearly to a maximum of 10000 nits.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute values for EGL_GL_COLORSPACE by
+ eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
+
+ EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
+
+Modifications to the EGL 1.5 Specification
+
+ Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
+ Screen Rendering Surfaces", before "The default value of EGL_GL_COLORSPACE
+ is EGL_GL_COLORSPACE_LINEAR.":
+
+ If its value is EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT, then a linear scRGB
+ color space is assumed, with a corresponding GL_FRAMEBUFFER_ATTACHMENT_-
+ COLOR_ENCODING value of GL_LINEAR. scRGB is defined to use the same
+ primaries and white-point as sRGB. See IEC 61966-2-2:2003 for details.
+
+ Add two paragraphs after the 4th paragraph above:
+
+ When using a floating-point EGL surface with EGL_GL_COLORSPACE_SCRGB_-
+ LINEAR_EXT, the display-referred values in the range of (0.0, 0.0, 0.0) to
+ (1.0, 1.0, 1.0) correspond to a luminance range of 0 to 80 nits, which is
+ the same luminance range for sRGB. To achieve a larger dynamic range of up
+ to 10000 nits, the output values can go beyond 1.0 and to a range of
+ [0.0, 125.0] for each channel.
+
+ The effective color gamut and luminance range of the content that extend
+ beyond those of sRGB may be described via EGL_EXT_surface_SMPTE2086_metadata.
+ It is highly recommended to supply such metadata, so the display pipeline
+ may use this information to transform the colors in a manner that
+ attempts to preserve the creative intent of the color data.
+
+ In the "Errors" section on page 34 in 3.5.1 "Creating On Screen Rendering
+ Surfaces", change the 3rd error definition to:
+
+ * If config does not support the OpenGL colorspace, the OpenVG colorspace or
+ alpha format attributes specified in attrib list (as defined for
+ eglCreatePlatformWindowSurface), an EGL_BAD_MATCH error is generated.
+
+Issues
+
+ * Clarifications on the scRGB colorspace extensions
+
+Revision History
+
+ Version 1, 2016/10/21
+ - Initial draft
+
+ Version 2, 2016/11/18
+ - Add reference to IEC 61966-2-2:2003 standard and minor wording changes
+
+ Version 3, 2016/11/22
+ - Change status to complete
+
+ Version 4, 2017/08/25
+ - Clarifications on the definition of scRGB colorspace
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import.txt
new file mode 100644
index 0000000..17350d7
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import.txt
@@ -0,0 +1,428 @@
+Name
+
+ EXT_image_dma_buf_import
+
+Name Strings
+
+ EGL_EXT_image_dma_buf_import
+
+Contributors
+
+ Jesse Barker
+ Rob Clark
+ Tom Cooksey
+
+Contacts
+
+ Jesse Barker (jesse 'dot' barker 'at' linaro 'dot' org)
+ Tom Cooksey (tom 'dot' cooksey 'at' arm 'dot' com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 7, December 13, 2013
+
+Number
+
+ EGL Extension #53
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ The EGL implementation must be running on a Linux kernel supporting the
+ dma_buf buffer sharing mechanism.
+
+ This extension is written against the wording of the EGL 1.2 Specification.
+
+Overview
+
+ This extension allows creating an EGLImage from a Linux dma_buf file
+ descriptor or multiple file descriptors in the case of multi-plane YUV
+ images.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_LINUX_DMA_BUF_EXT 0x3270
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_LINUX_DRM_FOURCC_EXT 0x3271
+ EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+ EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+ EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+ EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+ EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+ EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+ EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+ EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+ EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+ EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+ EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+
+ Accepted as the value for the EGL_YUV_COLOR_SPACE_HINT_EXT attribute:
+
+ EGL_ITU_REC601_EXT 0x327F
+ EGL_ITU_REC709_EXT 0x3280
+ EGL_ITU_REC2020_EXT 0x3281
+
+ Accepted as the value for the EGL_SAMPLE_RANGE_HINT_EXT attribute:
+
+ EGL_YUV_FULL_RANGE_EXT 0x3282
+ EGL_YUV_NARROW_RANGE_EXT 0x3283
+
+ Accepted as the value for the EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT &
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT attributes:
+
+ EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+ EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
+
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +-------------------------+--------------------------------------------+
+ | <target> | Notes |
+ +-------------------------+--------------------------------------------+
+ | EGL_LINUX_DMA_BUF_EXT | Used for EGLImages imported from Linux |
+ | | dma_buf file descriptors |
+ +-------------------------+--------------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_LINUX_DMA_BUF_EXT, <dpy> must be a valid display, <ctx>
+ must be EGL_NO_CONTEXT, and <buffer> must be NULL, cast into the type
+ EGLClientBuffer. The details of the image is specified by the attributes
+ passed into eglCreateImageKHR. Required attributes and their values are as
+ follows:
+
+ * EGL_WIDTH & EGL_HEIGHT: The logical dimensions of the buffer in pixels
+
+ * EGL_LINUX_DRM_FOURCC_EXT: The pixel format of the buffer, as specified
+ by drm_fourcc.h and used as the pixel_format parameter of the
+ drm_mode_fb_cmd2 ioctl.
+
+ * EGL_DMA_BUF_PLANE0_FD_EXT: The dma_buf file descriptor of plane 0 of
+ the image.
+
+ * EGL_DMA_BUF_PLANE0_OFFSET_EXT: The offset from the start of the
+ dma_buf of the first sample in plane 0, in bytes.
+
+ * EGL_DMA_BUF_PLANE0_PITCH_EXT: The number of bytes between the start of
+ subsequent rows of samples in plane 0. May have special meaning for
+ non-linear formats.
+
+ For images in an RGB color-space or those using a single-plane YUV format,
+ only the first plane's file descriptor, offset & pitch should be specified.
+ For semi-planar YUV formats, that first plane (plane 0) holds only the luma
+ samples and chroma samples are stored interleaved in a second plane (plane
+ 1). For fully planar YUV formats, the first plane (plane 0) continues to
+ hold the luma samples however the chroma samples are stored seperately in
+ two additional planes (plane 1 & plane 2). If present, planes 1 & 2 are
+ specified by the following attributes, which have the same meanings as
+ defined above for plane 0:
+
+ * EGL_DMA_BUF_PLANE1_FD_EXT
+ * EGL_DMA_BUF_PLANE1_OFFSET_EXT
+ * EGL_DMA_BUF_PLANE1_PITCH_EXT
+ * EGL_DMA_BUF_PLANE2_FD_EXT
+ * EGL_DMA_BUF_PLANE2_OFFSET_EXT
+ * EGL_DMA_BUF_PLANE2_PITCH_EXT
+
+ The ordering of samples within a plane is taken from the drm_fourcc
+ pixel_format specified for EGL_LINUX_DRM_FOURCC_EXT. For example, if
+ EGL_LINUX_DRM_FOURCC_EXT is set to DRM_FORMAT_NV12, the chroma plane
+ specified by EGL_DMA_BUF_PLANE1* contains samples in the order V, U,
+ whereas if EGL_LINUX_DRM_FOURCC_EXT is DRM_FORMAT_NV21, the order is U,
+ V. Similarly, the ordering of planes for fully-planar formats is also taken
+ from the pixel_format specified as EGL_LINUX_DRM_FOURCC_EXT. For example,
+ if EGL_LINUX_DRM_FOURCC_EXT is set to DRM_FORMAT_YUV410, the luma plane is
+ specified by EGL_DMA_BUF_PLANE0*, the plane containing U-samples is
+ specified by EGL_DMA_BUF_PLANE1* and the plane containing the V-samples is
+ specified by EGL_DMA_BUF_PLANE2*, whereas if EGL_LINUX_DRM_FOURCC_EXT is
+ set to DRM_FORMAT_YVU410, plane 1 contains the V-samples and plane 2
+ contains the U-samples.
+
+ In addition to the above required attributes, the application may also
+ provide hints as to how the data should be interpreted by the GL. If any of
+ these hints are not specified, the GL will guess based on the pixel format
+ passed as the EGL_LINUX_DRM_FOURCC_EXT attribute or may fall-back to some
+ default value. Not all GLs will be able to support all combinations of
+ these hints and are free to use whatever settings they choose to achieve
+ the closest possible match.
+
+ * EGL_YUV_COLOR_SPACE_HINT_EXT: The color-space the data is in. Only
+ relevant for images in a YUV format, ignored when specified for an
+ image in an RGB format. Accepted values are:
+ EGL_ITU_REC601_EXT, EGL_ITU_REC709_EXT & EGL_ITU_REC2020_EXT.
+
+ * EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT &
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT: Where chroma samples are
+ sited relative to luma samples when the image is in a sub-sampled
+ format. When the image is not using chroma sub-sampling, the luma and
+ chroma samples are assumed to be co-sited. Siting is split into the
+ vertical and horizontal and is in a fixed range. A siting of zero
+ means the first luma sample is taken from the same position in that
+ dimension as the chroma sample. This is best illustrated in the
+ diagram below:
+
+ (0.5, 0.5) (0.0, 0.5) (0.0, 0.0)
+ + + + + + + + + * + * +
+ x x x x
+ + + + + + + + + + + + +
+
+ + + + + + + + + * + * +
+ x x x x
+ + + + + + + + + + + + +
+
+ Luma samples (+), Chroma samples (x) Chrome & Luma samples (*)
+
+ Note this attribute is ignored for RGB images and non sub-sampled
+ YUV images. Accepted values are: EGL_YUV_CHROMA_SITING_0_EXT (0.0)
+ & EGL_YUV_CHROMA_SITING_0_5_EXT (0.5)
+
+ * EGL_SAMPLE_RANGE_HINT_EXT: The numerical range of samples. Only
+ relevant for images in a YUV format, ignored when specified for
+ images in an RGB format. Accepted values are: EGL_YUV_FULL_RANGE_EXT
+ (0-256) & EGL_YUV_NARROW_RANGE_EXT (16-235).
+
+
+ If eglCreateImageKHR is successful for a EGL_LINUX_DMA_BUF_EXT target, the
+ EGL will take a reference to the dma_buf(s) which it will release at any
+ time while the EGLDisplay is initialized. It is the responsibility of the
+ application to close the dma_buf file descriptors."
+
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_LINUX_DMA_BUF_EXT and <buffer> is not NULL, the
+ error EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT, and the list of attributes is
+ incomplete, EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT, and the EGL_LINUX_DRM_FOURCC_EXT
+ attribute is set to a format not supported by the EGL, EGL_BAD_MATCH
+ is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT, and the EGL_LINUX_DRM_FOURCC_EXT
+ attribute indicates a single-plane format, EGL_BAD_ATTRIBUTE is
+ generated if any of the EGL_DMA_BUF_PLANE1_* or EGL_DMA_BUF_PLANE2_*
+ attributes are specified.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT and the value specified for
+ EGL_YUV_COLOR_SPACE_HINT_EXT is not EGL_ITU_REC601_EXT,
+ EGL_ITU_REC709_EXT or EGL_ITU_REC2020_EXT, EGL_BAD_ATTRIBUTE is
+ generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT and the value specified for
+ EGL_SAMPLE_RANGE_HINT_EXT is not EGL_YUV_FULL_RANGE_EXT or
+ EGL_YUV_NARROW_RANGE_EXT, EGL_BAD_ATTRIBUTE is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT and the value specified for
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT or
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT is not
+ EGL_YUV_CHROMA_SITING_0_EXT or EGL_YUV_CHROMA_SITING_0_5_EXT,
+ EGL_BAD_ATTRIBUTE is generated.
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT and one or more of the values
+ specified for a plane's pitch or offset isn't supported by EGL,
+ EGL_BAD_ACCESS is generated.
+
+
+Issues
+
+ 1. Should this be a KHR or EXT extension?
+
+ ANSWER: EXT. Khronos EGL working group not keen on this extension as it is
+ seen as contradicting the EGLStream direction the specification is going in.
+ The working group recommends creating additional specs to allow an EGLStream
+ producer/consumer connected to v4l2/DRM or any other Linux interface.
+
+ 2. Should this be a generic any platform extension, or a Linux-only
+ extension which explicitly states the handles are dma_buf fds?
+
+ ANSWER: There's currently no intention to port this extension to any OS not
+ based on the Linux kernel. Consequently, this spec can be explicitly written
+ against Linux and the dma_buf API.
+
+ 3. Does ownership of the file descriptor pass to the EGL library?
+
+ ANSWER: No, EGL does not take ownership of the file descriptors. It is the
+ responsibility of the application to close the file descriptors on success
+ and failure.
+
+ 4. How are the different YUV color spaces handled (BT.709/BT.601)?
+
+ ANSWER: The pixel formats defined in drm_fourcc.h only specify how the data
+ is laid out in memory. It does not define how that data should be
+ interpreted. Added a new EGL_YUV_COLOR_SPACE_HINT_EXT attribute to allow the
+ application to specify which color space the data is in to allow the GL to
+ choose an appropriate set of co-efficients if it needs to convert that data
+ to RGB for example.
+
+ 5. What chroma-siting is used for sub-sampled YUV formats?
+
+ ANSWER: The chroma siting is not specified by either the v4l2 or DRM APIs.
+ This is similar to the color-space issue (4) in that the chroma siting
+ doesn't affect how the data is stored in memory. However, the GL will need
+ to know the siting in order to filter the image correctly. While the visual
+ impact of getting the siting wrong is minor, provision should be made to
+ allow an application to specify the siting if desired. Added additional
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT &
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT attributes to allow the siting to
+ be specified using a set of pre-defined values (0 or 0.5).
+
+ 6. How can an application query which formats the EGL implementation
+ supports?
+
+ PROPOSAL: Don't provide a query mechanism but instead add an error condition
+ that EGL_BAD_MATCH is raised if the EGL implementation doesn't support that
+ particular format.
+
+ 7. Which image formats should be supported and how is format specified?
+
+ Seem to be two options 1) specify a new enum in this specification and
+ enumerate all possible formats. 2) Use an existing enum already in Linux,
+ either v4l2_mbus_pixelcode and/or those formats listed in drm_fourcc.h?
+
+ ANSWER: Go for option 2) and just use values defined in drm_fourcc.h.
+
+ 8. How can AYUV images be handled?
+
+ ANSWER: At least on fourcc.org and in drm_fourcc.h, there only seems to be
+ a single AYUV format and that is a packed format, so everything, including
+ the alpha component would be in the first plane.
+
+ 9. How can you import interlaced images?
+
+ ANSWER: Interlaced frames are usually stored with the top & bottom fields
+ interleaved in a single buffer. As the fields would need to be displayed as
+ at different times, the application would create two EGLImages from the same
+ buffer, one for the top field and another for the bottom. Both EGLImages
+ would set the pitch to 2x the buffer width and the second EGLImage would use
+ a suitable offset to indicate it started on the second line of the buffer.
+ This should work regardless of whether the data is packed in a single plane,
+ semi-planar or multi-planar.
+
+ If each interlaced field is stored in a separate buffer then it should be
+ trivial to create two EGLImages, one for each field's buffer.
+
+ 10. How are semi-planar/planar formats handled that have a different
+ width/height for Y' and CbCr such as YUV420?
+
+ ANSWER: The spec says EGL_WIDTH & EGL_HEIGHT specify the *logical* width and
+ height of the buffer in pixels. For pixel formats with sub-sampled Chroma
+ values, it should be trivial for the EGL implementation to calculate the
+ width/height of the Chroma sample buffers using the logical width & height
+ and by inspecting the pixel format passed as the EGL_LINUX_DRM_FOURCC_EXT
+ attribute. I.e. If the pixel format says it's YUV420, the Chroma buffer's
+ width = EGL_WIDTH/2 & height =EGL_HEIGHT/2.
+
+ 11. How are Bayer formats handled?
+
+ ANSWER: As of Linux 2.6.34, drm_fourcc.h does not include any Bayer formats.
+ However, future kernel versions may add such formats in which case they
+ would be handled in the same way as any other format.
+
+ 12. Should the spec support buffers which have samples in a "narrow range"?
+
+ Content sampled from older analogue sources typically don't use the full
+ (0-256) range of the data type storing the sample and instead use a narrow
+ (16-235) range to allow some headroom & toeroom in the signals to avoid
+ clipping signals which overshoot slightly during processing. This is
+ sometimes known as signals using "studio swing".
+
+ ANSWER: Add a new attribute to define if the samples use a narrow 16-235
+ range or the full 0-256 range.
+
+ 13. Specifying the color space and range seems cumbersome, why not just
+ allow the application to specify the full YUV->RGB color conversion matrix?
+
+ ANSWER: Some hardware may not be able to use an arbitrary conversion matrix
+ and needs to select an appropriate pre-defined matrix based on the color
+ space and the sample range.
+
+ 14. How do you handle EGL implementations which have restrictions on pitch
+ and/or offset?
+
+ ANSWER: Buffers being imported using dma_buf pretty much have to be
+ allocated by a kernel-space driver. As such, it is expected that a system
+ integrator would make sure all devices which allocate buffers suitable for
+ exporting make sure they use a pitch supported by all possible importers.
+ However, it is still possible eglCreateImageKHR can fail due to an
+ unsupported pitch. Added a new error to the list indicating this.
+
+ 15. Should this specification also describe how to export an existing
+ EGLImage as a dma_buf file descriptor?
+
+ ANSWER: No. Importing and exporting buffers are two separate operations and
+ importing an existing dma_buf fd into an EGLImage is useful functionality in
+ itself. Agree that exporting an EGLImage as a dma_buf fd is useful, E.g. it
+ could be used by an OpenMAX IL implementation's OMX_UseEGLImage function to
+ give access to the buffer backing an EGLImage to video hardware. However,
+ exporting can be split into a separate extension specification.
+
+
+Revision History
+
+#7 (Kristian H. Kristensen, December 13, 2017)
+ - Clarify plane ordering to match Linux FOURCC conventions (Bug 16017).
+
+#6 (David Garbett, December 05, 2013)
+ - Application now retains ownership of dma_buf file descriptors.
+
+#5 (Tom Cooksey, February 19, 2013)
+ - Assigned enum values
+ - Moved out of drafts
+
+#4 (Tom Cooksey, October 04, 2012)
+ - Fixed issue numbering!
+ - Added issues 8 - 15.
+ - Promoted proposal for Issue 3 to be the answer.
+ - Added an additional attribute to allow an application to specify the color
+ space as a hint which should address issue 4.
+ - Added an additional attribute to allow an application to specify the chroma
+ siting as a hint which should address issue 5.
+ - Added an additional attribute to allow an application to specify the sample
+ range as a hint which should address the new issue 12.
+ - Added language to end of error section clarifying who owns the fd passed
+ to eglCreateImageKHR if an error is generated.
+
+#3 (Tom Cooksey, August 16, 2012)
+ - Changed name from EGL_EXT_image_external and re-written language to
+ explicitly state this for use with Linux & dma_buf.
+ - Added a list of issues, including some still open ones.
+
+#2 (Jesse Barker, May 30, 2012)
+ - Revision to split eglCreateImageKHR functionality from export
+ Functionality.
+ - Update definition of EGLNativeBufferType to be a struct containing a list
+ of handles to support multi-buffer/multi-planar formats.
+
+#1 (Jesse Barker, March 20, 2012)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt
new file mode 100644
index 0000000..41b91c0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt
@@ -0,0 +1,244 @@
+Name
+
+ EXT_image_dma_buf_import_modifiers
+
+Name Strings
+
+ EGL_EXT_image_dma_buf_import_modifiers
+
+Contributors
+
+ Pekka Paalanen, Collabora Ltd.
+ Louis-Francis Ratté-Boulianne
+ Daniel Stone, Collabora Ltd.
+ Kristian Høgsberg
+
+Contacts
+
+ Pekka Paalanen (pq 'at' collabora 'dot' com)
+ Daniel Stone (daniels 'at' collabora 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 5, March 12, 2019
+
+Number
+
+ EGL Extension #105
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+ EGL_EXT_image_dma_buf_import is required.
+
+ The EGL implementation must be running on a Linux kernel supporting the
+ dma_buf buffer sharing mechanism.
+
+ This extension is written against the wording of the EGL 1.2 Specification.
+
+ In order to support imports for the GL_TEXTURE_EXTERNAL_OES target, a
+ compatible OpenGL ES implementation supporting GL_OES_EGL_image_external
+ must be present.
+
+Overview
+
+ This extension builds on EGL_EXT_image_dma_buf_import, in order to support
+ format modifiers used for tiling, compression, and additional non-linear
+ modes. It also adds support for a fourth auxiliary plane, and queries for
+ the implementation-supported types.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglQueryDmaBufFormatsEXT(
+ EGLDisplay dpy,
+ EGLint max_formats,
+ EGLint *formats,
+ EGLint *num_formats)
+
+
+ EGLBoolean eglQueryDmaBufModifiersEXT(
+ EGLDisplay dpy,
+ EGLint format,
+ EGLint max_modifiers,
+ EGLuint64KHR *modifiers,
+ EGLBoolean *external_only,
+ EGLint *num_modifiers)
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+ EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+ EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+ EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+ EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+ EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+ EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+ EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+ EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+ EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+
+New Types
+
+ This extension uses the 64-bit unsigned integer type EGLuint64KHR
+ first introduced by the EGL_KHR_stream extension, but does not
+ depend on that extension. The typedef may be reproduced separately
+ for this extension, if not already present in eglext.h.
+
+ typedef khronos_uint64_t EGLuint64KHR;
+
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ If <target> is EGL_LINUX_DMA_BUF_EXT, both or neither of the following
+ attribute values may be given. These attribute values together form an
+ unsigned 64-bit value called a format modifier. Format modifiers are
+ specified by drm_fourcc.h and used as the modifier parameter of the
+ drm_mode_fb_cmd2 ioctl. If neither of the two attributes are given, or
+ if the modifier is explicitly declared to be DRM_FORMAT_MOD_INVALID, the
+ effective format modifier is implementation-defined. The two attributes
+ are:
+
+ * EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT: The lowest 32 bits of the
+ 64-bit format modifier.
+
+ * EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT: The highest 32 bits of the
+ 64-bit format modifier.
+
+ For semi-planar and planar YUV formats, or other formats which require
+ multiple memory planes, planes 1, 2 and 3 are specified by the following
+ attributes, which have the same meanings as defined above for plane 0:
+
+ * EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT
+ * EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT
+ * EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT
+ * EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT
+ * EGL_DMA_BUF_PLANE3_FD_EXT
+ * EGL_DMA_BUF_PLANE3_OFFSET_EXT
+ * EGL_DMA_BUF_PLANE3_PITCH_EXT
+ * EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT
+ * EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT
+
+ Modifiers may modify any attribute of a buffer import, including but not
+ limited to adding extra planes to a format which otherwise does not have
+ those planes. As an example, a modifier may add a plane for an external
+ compression buffer to a single-plane format. The exact meaning and effect
+ of any modifier is canonically defined by drm_fourcc.h, not as part of this
+ extension.
+
+ Implementations are required to validate the full combination of base
+ format and per-plane modifiers, and reject any combination which is not
+ explicitly supported.
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ * If <target> is EGL_LINUX_DMA_BUF_EXT, and the list of attributes
+ contains EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT but not
+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT or vice versa, EGL_BAD_PARAMETER
+ is generated. This applies similarly for planes 1, 2, and 3 also.
+
+ Add section 2.5.3 "EGLImage dma_buf formats and modifiers"
+
+ The command
+
+ EGLBoolean eglQueryDmaBufFormatsEXT(
+ EGLDisplay dpy,
+ EGLint max_formats,
+ EGLint *formats,
+ EGLint *num_formats)
+
+ is used to query the dma_buf formats supported by <dpy>. Each format is
+ returned using its FourCC format as defined in the drm_fourcc.h header file.
+ EGL_TRUE is returned if QueryDmaBufFormatsEXT succeeds, EGL_FALSE indicates
+ failure to query.
+
+ * If <dpy> is not the handle of a valid EGLDisplay object, the error
+ EGL_BAD_DISPLAY is generated.
+
+ * If <max_formats> is 0, no formats are returned, but the total number
+ of formats is returned in <num_formats>, and no error is generated.
+
+ * If <max_formats> has a negative value, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <max_formats> is a positive integer but <formats> is NULL, the error
+ EGL_BAD_PARAMETER is generated.
+
+ The command
+
+ EGLBoolean eglQueryDmaBufModifiersEXT(
+ EGLDisplay dpy,
+ EGLint format,
+ EGLint max_modifiers,
+ EGLuint64KHR *modifiers,
+ EGLBoolean *external_only,
+ EGLint *num_modifiers)
+
+ is used to query the dma_buf format modifiers supported by <dpy> for the
+ given format. The format must be one of those returned by the
+ eglQueryDmaBufFormatsEXT command. The returned modifiers should be
+ defined in the canonical drm_fourcc.h header file. If the user also
+ passes an array for <external_only>, this will be populated with whether
+ the requested format and modifier combination is only supported for use
+ with the GL_TEXTURE_EXTERNAL_OES texture target. If <dpy> cannot support
+ any context with GL_OES_EGL_image_external, the array will be populated with
+ EGL_FALSE. EGL_TRUE is returned if QueryDmaBufModifiersEXT succeeds,
+ EGL_FALSE indicates failure.
+
+ * If <dpy> is not the handle of a valid EGLDisplay object, the error
+ EGL_BAD_DISPLAY is generated.
+
+ * If <max_modifiers> is 0, no modifiers are returned, but the total
+ number of modifiers is returned in <num_modifiers>, and no error is
+ generated.
+
+ * If <max_modifiers> has a negative value, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <max_modifiers> is a positive integer but <modifiers> is NULL, the
+ error EGL_BAD_PARAMETER is generated.
+
+ * If <format> is not one of the formats advertised by
+ QueryDmaBufFormatsEXT for the same <dpy>, the error EGL_BAD_PARAMETER
+ is generated.
+
+
+Revision History
+
+#5 (Daniel Stone, March 12, 2019)
+ - Correct description of behaviour when a modifier is not explicitly given;
+ zero is not correct as it is an explicit modifier itself (linear).
+
+#4 (Daniel Stone, October 20, 2016)
+ - Switch to EGLuint64KHR for modifier types.
+
+#3 (Daniel Stone, October 20, 2016)
+ - Clarify that the effect that modifiers can have.
+ - Disambiguate references to displays.
+ - Explicitly refer to max_formats/max_modifiers behaviour when zero.
+
+#2 (Daniel Stone, September 29, 2016)
+ - Add missing tokens for plane 3 FD/offset/pitch.
+ - Fix description.
+ - Allow max_formats/max_modifiers to be zero, to get the counter.
+ - Add external_only to modifiers query.
+
+#1 (Pekka Paalanen, October 14, 2015)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_gl_colorspace.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_gl_colorspace.txt
new file mode 100644
index 0000000..ab53660
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_gl_colorspace.txt
@@ -0,0 +1,136 @@
+Name
+
+ EXT_image_gl_colorspace
+
+Name Strings
+
+ EGL_EXT_image_gl_colorspace
+
+Contributors
+
+ Jesse Hall, Google
+ Philip Rideout, Google
+ Mohan Maiya, Qualcomm
+ Jan-Harald Fredriksen, ARM
+
+Contact
+
+ Krzysztof Kosiński, Google (krzysio 'at' google.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 9, February 26, 2018
+
+Number
+
+ EGL Extension #125
+
+Dependencies
+
+ Written against the EGL 1.5 specification.
+
+ Can be supported on EGL 1.4 provided that EGL_KHR_gl_colorspace is
+ implemented, as well as either EGL_KHR_image or EGL_KHR_image_base.
+
+ Interacts with the GL_OES_EGL_image_external specification.
+
+Overview
+
+ This extension relaxes the restriction that only the eglCreate*Surface
+ functions can accept the EGL_GL_COLORSPACE attribute. With this change,
+ eglCreateImage can also accept this attribute.
+
+New Tokens
+
+ EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
+
+New Procedures and Functions
+
+ None.
+
+Additions to the EGL 1.5 Specification
+
+ Add to table 3.11 on page 75:
+
+ "Attribute Type Description
+ -------------------- ---- -----------
+ EGL_GL_COLORSPACE enum Color space for OpenGL and OpenGL ES"
+
+
+ Add the following paragraph to the end of section 3.9, "EGLImage
+ Specification and Management" on page 77:
+
+ "EGL_GL_COLORSPACE specifies the color space used by OpenGL and OpenGL
+ ES when rendering to the image, or sampling from the image. It has the
+ same meaning as when used with eglCreatePlatformWindowSurface, with the
+ exception that its default value is EGL_GL_COLORSPACE_DEFAULT_EXT. This
+ means that the color space should not be overriden. For example, if an
+ image is created from an existing OpenGL texture, then
+ GL_COLORSPACE_DEFAULT_EXT means that the original color space should be
+ preserved."
+
+
+ Add the following paragraphs to the "Errors" subsection in section 3.9
+ on page 76:
+
+ "If EGL_GL_COLORSPACE is not one of the legal values, the error
+ EGL_BAD_PARAMETER is generated."
+
+ "If ctx specifies a GL context that does not support creating an EGLImage
+ with the given value for EGL_GL_COLORSPACE, EGL_BAD_MATCH error is
+ generated."
+
+
+Interaction with OES_EGL_image_external:
+
+ The first sentence in the second to last paragraph in section 3.7.14
+ should be changed from:
+
+ "Sampling an external texture will return an RGBA vector in the same
+ colorspace as the source image."
+
+ to:
+
+ "Sampling an external texture will return an RGBA vector in the same color
+ space as the source image, unless the image's EGL_GL_COLORSPACE attribute
+ results in sRGB encoding as described in EGL_EXT_image_gl_colorspace."
+
+ The three parenthetical sentences in this same paragraph should be
+ simplified since they partially conflict with existing language in the
+ ES30 specification. Change them from:
+
+ "(But these RGB values will be in the same colorspace as the
+ original image. Colorspace here includes the linear or non-linear
+ encoding of the samples. For example, if the original image is in the
+ sRGB color space then the RGB value returned by the sampler will also
+ be sRGB, and if the original image is stored in ITU-R Rec. 601 YV12
+ then the RGB value returned by the sampler will be an RGB value in the
+ ITU-R Rec. 601 colorspace.)"
+
+ to:
+
+ "(For example, if the original image is stored in ITU-R Rec. 601 YV12
+ then the RGB value returned by the sampler will be an RGB value in the
+ ITU-R Rec. 601 colorspace.)"
+
+
+Issues
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- -------- -----------------------------------------
+ 1 11/22/17 philip Initial draft
+ 2 12/8/17 philip Add note about OES_EGL_image_external
+ 3 12/11/17 philip Changed from KHR to EXT.
+ 4 12/15/17 philip Add diffs against the EGL 1.5 specification.
+ 5 12/20/17 philip Add EGL_GL_COLORSPACE_DEFAULT_EXT.
+ 6 1/2/18 philip Updated changes to OES_EGL_image_external.
+ 7 1/2/18 philip Tweaked the changes to OES_EGL_image_external.
+ 8 2/2/18 philip Add value for EGL_GL_COLORSPACE_DEFAULT_EXT.
+ 9 2/26/18 krzysio Update contact information, finalize.
+ 9 4/20/18 krzysio Fix stray reference to KHR.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_implicit_sync_control.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_implicit_sync_control.txt
new file mode 100644
index 0000000..5660e0a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_image_implicit_sync_control.txt
@@ -0,0 +1,131 @@
+Name
+
+ EXT_image_implicit_sync_control
+
+Name Strings
+
+ EGL_EXT_image_implicit_sync_control
+
+Contributors
+
+ Daniel Stone, Collabora Ltd.
+
+Contacts
+
+ Daniel Stone (daniels 'at' collabora 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, March 16, 2020
+
+Number
+
+ EGL Extension #120
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base and EGL_EXT_image_dma_buf_import are required.
+
+ The EGL implementation must be running on a Linux kernel supporting implicit
+ synchronization, as the usage is defined in the
+ EGL_ARM_implicit_external_sync extension, but does not require that extension.
+
+ This extension is written against the wording of the EGL 1.2 Specification.
+
+Overview
+
+ This extension allows a client to selectively use implicit or explicit
+ synchronization mechanisms when addressing externally-imported EGLImages.
+ A new token is added to EGLImage creation which allows the client to select
+ whether a platform's implicit synchronization will be in use for a buffer
+ imported into EGLImage.
+
+ Heterogeneous systems (supporting multiple APIs, mixed legacy/updated
+ clients, etc) already supporting implicit synchronization, may not be able
+ to change to explict synchronization in a single switch. This extension
+ allows synchronization to be controlled on a per-buffer basis, so explicit
+ synchronization can be enabled for a complete pipeline which supports it,
+ or implicit synchronization used otherwise.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+
+ Accepted as the value for the EGL_IMPORT_SYNC_TYPE_EXT attribute:
+
+ EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+ EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
+
+New Types
+
+ None.
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ Add the following to Table bbb (Legal attributes for eglCreateImageKHR
+ <attr_list> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ | Attribute | Description | Valid <target>s | Default Value |
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ | EGL_IMPORT_SYNC_TYPE_EXT | The type of | EGL_LINUX_DMA_BUF_EXT | EGL_IMPORT_ |
+ | | synchronization to | | IMPLICT_SYNC_ |
+ | | apply to previously | | EXT |
+ | | submitted rendering on | | |
+ | | the platform buffer | | |
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
+
+ ...
+
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ The behaviour of the imported buffer with regard to commands previously
+ submitted (including via other APIs and from other clients) is controlled
+ by the EGL_IMPORT_SYNC_TYPE_EXT attribute. If the default value of
+ implicit synchronization is used, the platform may synchronize any access
+ to the imported buffer, against accesses previously made (including by
+ other clients or APIs) to that same buffer. If explicit synchronization
+ is specified, the platform will not synchronize access to that buffer
+ against other accesses; the client must use another synchronization
+ mechanism if it wishes to order its accesses with respect to others.
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ * If <attrib_list> contains the EGL_IMPORT_SYNC_TYPE_EXT name, but the
+ value is not one of EGL_IMPORT_IMPLICIT_SYNC_EXT or
+ EGL_IMPORT_EXPLICIT_SYNC_EXT, EGL_BAD_ATTRIBUTE is generated.
+
+
+Revision History
+
+#1 (Daniel Stone, May 15, 2017)
+ - Initial revision.
+
+#2 (Eric Engestrom, March 16, 2020)
+ - Change "bad attribute value" error from EGL_BAD_PARAMETER to
+ EGL_BAD_ATTRIBUTE to follow the EGL convention.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_multiview_window.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_multiview_window.txt
new file mode 100644
index 0000000..9cf0ff6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_multiview_window.txt
@@ -0,0 +1,126 @@
+Name
+
+ EXT_multiview_window
+
+Name Strings
+
+ EGL_EXT_multiview_window
+
+Contributors
+
+ Acorn Pooley
+ Greg Roth
+
+Contacts
+
+ Greg Roth (groth 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, Sept 03, 2011
+
+Number
+
+ EGL Extension #42
+
+Dependencies
+
+ Requires EGL 1.4
+
+ Written against the EGL 1.4 specification.
+
+Overview
+
+ Adds support for creating an onscreen EGLSurface containing
+ multiple color buffers.
+
+ EXT_multi_draw_buffers can be used with this extension to
+ render and display multiple color buffers to a supported
+ device.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ CreateWindowSurface:
+
+ EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
+
+Additions to Chapter 3 of the EGL 1.2 Specification:
+
+ Additions to section 3.5.1 (Creating On-Screen Rendering Surfaces)
+
+ Alter the end of the second paragraph:
+
+ Attributes that can be specified in <attrib_list> include
+ EGL_RENDER_BUFFER, EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT, and
+ EGL_MULTIVIEW_VIEW_COUNT_EXT.
+
+ Add before the last paragraph of section 3.5.1:
+
+ EGL_MULTIVIEW_VIEW_COUNT_EXT specifies how many multiview color
+ buffers should be created for the surface. Each color buffer has
+ the same properties as the primary color buffer as specified by
+ window and surface attributes. The default value of
+ EGL_MULTIVIEW_VIEW_COUNT_EXT is one.
+
+ EGL may not be able to create as many multiview color buffers as
+ EGL_MULTIVIEW_VIEW_COUNT_EXT specifies. To determine the number
+ of multiview color buffers created by a context, call
+ eglQueryContext (see section 3.7.4).
+
+ Add to the last paragraph of section 3.5.1:
+
+ If the value specified for EGL_MULTIVIEW_VIEW_COUNT_EXT is less
+ than one, an EGL_BAD_PARAMETER error is generated. If the value
+ specified for EGL_MULTIVIEW_VIEW_COUNT_EXT is greater than one
+ and the <config> does not support multiple multiview color
+ buffers, an EGL_BAD_MATCH error is generated.
+
+ Additions to section 3.5.6 (Surface Attributes)
+
+ Add to table 3.5, "Queryable surface attributes and types"
+
+ Attribute Type Description
+ --------- ---- -----------
+ EGL_MULTIVIEW_VIEW_COUNT_EXT integer Requested multiview
+ color buffers
+
+ Add before the last paragraph describing eglQuerySurface:
+
+ Querying EGL_MULTIVIEW_VIEW_COUNT_EXT for a window surface
+ returns the number of multiview color buffers requested. For a
+ pbuffer or pixmap surface, the contents of <value> are not
+ modified. To determine the actual number of multiview color
+ buffers created by a context, call eglQueryContext (see
+ section 3.7.4).
+
+
+ Additions to section 3.7.4 (Context Queries)
+
+ Add before the last paragraph describing eglQueryContext:
+
+ Querying EGL_MULTIVIEW_VIEW_COUNT_EXT returns the number of
+ multiview color buffers created. The value returned depends on
+ properties of both the context, and the surface to which the
+ context is bound.
+
+Issues
+
+ None
+
+Revision History
+ Version 3, 03 Sept 2011 EXTify add support for multiple or single depth buffer.
+ Version 2, 02 Aug 2011 Responses to feedback.
+ Version 1, 14 April 2011 First draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_output_base.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_output_base.txt
new file mode 100644
index 0000000..1cbd112
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_output_base.txt
@@ -0,0 +1,564 @@
+Name
+
+ EXT_output_base
+
+Name Strings
+
+ EGL_EXT_output_base
+
+Contributors
+
+ Daniel Kartch
+ James Jones
+ Christopher James Halse Rogers
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 9 - August 22, 2014
+
+Number
+
+ EGL Extension #78
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Written against the wording of EGL 1.5, plus the EGL_EXT_device_base
+ specification.
+
+ Requires EGL_EXT_device_base
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ This extension defines new EGL resource types for referencing
+ display control hardware associated with an EGL device. Its purpose
+ is to allow rendering to be directed to a screen in the absence of
+ (or bypassing) a window system. Because the use models for these
+ resources are potentially diverse, only the objects themselves and
+ basic functions to acquire and query them are defined here. More
+ detailed functions and enumerants required to operate on outputs
+ are provided by separate extensions.
+
+New Types
+
+ A handle representing a portion of display control hardware which
+ accepts a single image as input and processes it for output on a
+ display device:
+
+ typedef void* EGLOutputLayerEXT;
+
+ A handle representing a portion of display control hardware which
+ transmits a signal to a display device:
+
+ typedef void* EGLOutputPortEXT;
+
+New Functions
+
+ EGLBoolean eglGetOutputLayersEXT(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list,
+ EGLOutputLayerEXT *layers,
+ EGLint max_layers,
+ EGLint *num_layers);
+
+ EGLBoolean eglGetOutputPortsEXT(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list,
+ EGLOutputPortEXT *ports,
+ EGLint max_ports,
+ EGLint *num_ports);
+
+ EGLBoolean eglOutputLayerAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute,
+ EGLAttrib value);
+
+ EGLBoolean eglQueryOutputLayerAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute,
+ EGLAttrib *value);
+
+ const char* eglQueryOutputLayerStringEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint name);
+
+ EGLBoolean eglOutputPortAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute,
+ EGLAttrib value);
+
+ EGLBoolean eglQueryOutputPortAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute,
+ EGLAttrib *value);
+
+ const char* eglQueryOutputPortStringEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint name);
+
+New Tokens
+
+ Functions with a return type of EGLOutputLayerEXT will return this
+ value on failure:
+
+ EGL_NO_OUTPUT_LAYER_EXT ((EGLOutputLayerEXT)0)
+
+ Functions with a return type of EGLOutputPortEXT will return this
+ value on failure:
+
+ EGL_NO_OUTPUT_PORT_EXT ((EGLOutputPortEXT)0)
+
+ Functions which fail due to a bad EGLOutputLayerEXT handle will set
+ this error code:
+
+ EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+
+ Functions which fail due to a bad EGLOutputPortEXT handle will set
+ this error code:
+
+ EGL_BAD_OUTPUT_PORT_EXT 0x322E
+
+ Functions which set or query the swap interval use this attribute
+ name:
+
+ EGL_SWAP_INTERVAL_EXT 0x322F
+
+Add a new section "2.1.4 Outputs" after "2.1.3 Displays":
+
+ An EGLDisplay may have zero or more associated EGLOutputLayerEXT
+ and EGLOutputPortEXT objects. These represent, respectively, the
+ inputs and outputs of display control hardware.
+
+ An EGLOutputLayerEXT is an abstract handle representing an element
+ of display control hardware which receives image data and processes
+ it for display. This processing is hardware-dependent, and may
+ include, but is not limited to, color space transformation, scaling
+ and rotation, and composition/blending with images from other
+ EGLOutputLayerEXTs.
+
+ An EGLOutputPortEXT is an abstract handle representing an element of
+ display control hardware which sends a signal to drive a display
+ screen. In general, this signal is the result of the processing of
+ one or more EGLOutputLayerEXTs.
+
+Add new entries to section "3.1 Errors":
+
+ EGL_BAD_OUTPUT_LAYER_EXT
+ An EGLOutputLayerEXT argument does not name a valid
+ EGLOutputLayerEXT. Any command taking an EGLOutputLayerEXT
+ parameter may generate this error.
+
+ EGL_BAD_OUTPUT_PORT_EXT
+ An EGLOutputPortEXT argument does not name a valid
+ EGLOutputPortEXT. Any command taking an EGLOutputPortEXT
+ parameter may generate this error.
+
+Add a new section "3.10 Device Outputs" after "3.9 Posting the Color Buffer":
+
+ 3.10 Device Outputs
+
+ A simple platform running a custom software suite may not require a
+ formal window system. Instead, individual applications or a
+ compositor may send rendering results directly to display control
+ hardware, represented by EGLOutputLayerEXT and EGLOutputPortEXT
+ handles.
+
+ As with other EGL resources, EGLOutputLayerEXT and EGLOutputPortEXT
+ handles are owned by an EGLDisplay, but not all EGLDisplays are
+ required to support these objects. In general, they will only be
+ available for EGLDisplays obtained from platforms which allow direct
+ manipulation of display devices.
+
+ 3.10.1 Acquiring Outputs
+
+ To obtain EGLOutputLayerEXT handles associated with a display which
+ match a list of attributes, use
+
+ EGLBoolean eglGetOutputLayersEXT(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list,
+ EGLOutputLayerEXT *layers,
+ EGLint max_layers,
+ EGLint *num_layers)
+
+ On success, EGL_TRUE is returned. If <layers> is NULL, <max_layers>
+ is ignored and the number of output layers which match <attrib_list>
+ is returned in <num_layers>. Otherwise, up to <max_layers> matching
+ layers will be returned in <layers> and <num_layers> will be set to
+ the number of layer handles returned. The states of the output
+ layers are not altered by this query, and output layer handles can
+ be retrieved by multiple calls to this function.
+
+ <attrib_list> may be NULL or a list of name/value pairs terminated
+ by EGL_NONE. If no attributes are provided, all output layers
+ associated with <dpy> will match. Otherwise, only those layers
+ matching all attributes provided in the list will be returned,
+ unless the value specified is EGL_DONT_CARE. If there are no
+ matching layers but all parameters are otherwise valid, success is
+ returned but num_layers is set to 0.
+
+ On failure, EGL_FALSE will be returned and the memory referenced by
+ <layers> and <num_layers> will be unaffected. If <dpy> is not a
+ valid, initialized EGLDisplay, an EGL_BAD_DISPLAY error is
+ generated. If any name in <attrib_list> is not a valid layer
+ attribute name defined in Table 3.10.3.1, an EGL_BAD_ATTRIBUTE error
+ is generated. If any name in <attrib_list> does not allow search
+ access, an EGL_BAD_ACCESS error is generated.
+
+ To obtain EGLOutputPortEXT handles associated with a display which
+ match a list of attributes, use
+
+ EGLBoolean eglGetOutputPortsEXT(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list,
+ EGLOutputPortEXT *ports,
+ EGLint max_ports,
+ EGLint *num_ports)
+
+ On success, EGL_TRUE is returned. If <ports> is NULL, <max_ports> is
+ ignored and the number of output ports which match <attrib_list> is
+ returned in <num_ports>. Otherwise, up to <max_ports> matching
+ layers will be returned in <ports> and <num_ports> will be set to
+ the number of port handles returned. The states of the output ports
+ are not altered by this query, and output port handles can be
+ retrieved by multiple calls to this function.
+
+ <attrib_list> may be NULL or a list of name/value pairs terminated
+ by EGL_NONE. If no attributes are provided, all output ports
+ associated with <dpy> will match. Otherwise, only those ports
+ matching all attributes provided in the list will be returned,
+ unless the value specified is EGL_DONT_CARE. If there are no
+ matching ports but all parameters are otherwise valid, success is
+ returned but num_ports is set to 0.
+
+ On failure, EGL_FALSE will be returned and the memory referenced by
+ <ports> and <num_ports> will be unaffected. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ any name in <attrib_list> is not a valid port attribute name defined
+ in Table 3.10.3.2, an EGL_BAD_ATTRIBUTE error is generated. If any
+ name in <attrib_list> does not allow search access, an
+ EGL_BAD_ACCESS error is generated.
+
+ 3.10.2 Lifetime of Output Handles
+
+ An initialized EGLDisplay has a fixed set of output layer and port
+ resources available. Implementations may defer creation of handles
+ and allocation of data structions for these objects until they are
+ first requested. However, once acquired, they remain valid as long
+ as the EGLDisplay is not terminated.
+
+ 3.10.3 Output Attributes
+
+ Valid attributes associated with output layers and ports are listed
+ in Tables 3.10.3.1 and 3.10.3.2, respectively. Additional attributes
+ may be defined by other extensions. The Access columns contain one
+ or more of the letters "S", "R", and W". A value of "S" indicates
+ the attribute may be used to restrict the search when obtaining a
+ list of output handles. A value of "R" indicates the value may be
+ queried from an output handle. A value of "W" indicates the value
+ may be modified using an output handle.
+
+ Attribute Type Access
+ --------------------- ------- ------
+ EGL_SWAP_INTERVAL_EXT integer R|W
+ EGL_MIN_SWAP_INTERVAL integer R
+ EGL_MAX_SWAP_INTERVAL integer R
+
+ Table 3.10.3.1 Output layer attributes
+
+ Attribute Type Access
+ --------------------- ------- ------
+ [no attributes supported]
+
+ Table 3.10.3.2 Output port attributes
+
+ 3.10.3.1 Querying Output Attributes
+
+ To query attributes of an EGLOutputLayerEXT, use
+
+ EGLBoolean eglQueryOutputLayerAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute,
+ EGLAttrib *value)
+
+ On success, this function returns EGL_TRUE and stores the value of
+ <attribute> in <value>.
+
+ On failure, EGL_FALSE is returned. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ <layer> is not a valid EGLOutputLayerEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_LAYER_EXT error is generated. If <attribute> is not a
+ valid layer attribute name defined in Table 3.10.3.1, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> has string
+ type or does not allow read access, an EGL_BAD_ACCESS error is
+ generated.
+
+ To query string properties of an EGLOutputLayerEXT, use
+
+ const char* eglQueryOutputLayerStringEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute)
+
+ On success, this function returns a zero-terminated string
+ containing the value associated with <name>.
+
+ On failure, NULL is returned. If <dpy> is not a valid, initialized
+ EGLDisplay, an EGL_BAD_DISPLAY error is generated. If <layer> is not
+ a valid EGLOutputLayerEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_LAYER_EXT error is generated. If <name> is not a
+ valid layer attribute name defined in Table 3.10.3.1, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> has non-string
+ type or does not allow read access, an EGL_BAD_ACCESS error is
+ generated.
+
+ To query attributes of an EGLOutputPortEXT, use
+
+ EGLBoolean eglQueryOutputPortAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute,
+ EGLAttrib *value)
+
+ On success, this function returns EGL_TRUE and stores the value of
+ <attribute> in <value>.
+
+ On failure, EGL_FALSE is returned. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ <port> is not a valid EGLOutputPortEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_PORT_EXT error is generated. If <attribute> is not a
+ valid port attribute name defined in Table 3.10.3.2, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> has string
+ type or does not allow read access, an EGL_BAD_ACCESS error is
+ generated.
+
+ To query string properties of an EGLOutputPortEXT, use
+
+ const char* eglQueryOutputPortStringEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute)
+
+ On success, this function returns a zero-terminated string
+ containing the value associated with <name>.
+
+ On failure, NULL is returned. If <dpy> is not a valid, initialized
+ EGLDisplay, an EGL_BAD_DISPLAY error is generated. If <port> is not
+ a valid EGLOutputPortEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_PORT_EXT error is generated. If <name> is not a
+ valid port attribute name defined in Table 3.10.3.2, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> has non-string
+ type or does not allow read access, an EGL_BAD_ACCESS error is
+ generated.
+
+ 3.10.3.2 Setting Output Attributes
+
+ To set attributes of an EGLOutputLayerEXT, use
+
+ EGLBoolean eglOutputLayerAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputLayerEXT layer,
+ EGLint attribute,
+ EGLAttrib value)
+
+ On success, this function returns EGL_TRUE and sets the value of
+ <attribute> to <value>.
+
+ If <attribute> is EGL_SWAP_INTERVAL_EXT, the value provided will be
+ silently clamped to the range specified by the layer's
+ EGL_MIN_SWAP_INTERVAL and EGL_MAX_SWAP_INTERVAL values.
+
+ On failure, EGL_FALSE is returned. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ <layer> is not a valid EGLOutputLayerEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_LAYER_EXT error is generated. If <attribute> is not a
+ valid layer attribute name defined in Table 3.10.3.1, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> does not
+ allow write access, an EGL_BAD_ACCESS error is generated.
+
+ To set attributes of an EGLOutputPortEXT, use
+
+ EGLBoolean eglOutputPortAttribEXT(
+ EGLDisplay dpy,
+ EGLOutputPortEXT port,
+ EGLint attribute,
+ EGLAttrib value)
+
+ On success, this function returns EGL_TRUE and sets the value of
+ <attribute> to <value>.
+
+ On failure, EGL_FALSE is returned. If <dpy> is not a valid,
+ initialized EGLDisplay, an EGL_BAD_DISPLAY error is generated. If
+ <port> is not a valid EGLOutputPortEXT associated with <dpy>, an
+ EGL_BAD_OUTPUT_PORT_EXT error is generated. If <attribute> is not a
+ valid port attribute name defined in Table 3.10.3.2, an
+ EGL_BAD_ATTRIBUTE error is generated. If <attribute> does not
+ allow write access, an EGL_BAD_ACCESS error is generated.
+
+ 3.10.4 Setting Output Modes
+
+ EGL does not currently define any mechanims to adjust display
+ modes through EGLOutputPortEXTs. These may be added via additional
+ extensions.
+
+ 3.10.5 Posting to Outputs
+
+ EGL does not currently define any mechanisms to post rendering
+ results to EGLOutputsLayerEXTs. These may be added via additional
+ extensions. However, unless otherwise specified, such mechanims
+ will respect the layer's EGL_SWAP_INTERVAL_EXT value, which
+ specifies the minimum number of video frame periods for which the
+ frames should be displayed, in a manner analogous to using
+ eglSwapInterval for the current draw surface. The default value of
+ EGL_SWAP_INTERVAL_EXT is 1, clamped to the layer's
+ EGL_MIN_SWAP_INTERVAL and EGL_MAX_SWAP_INTERVAL values.
+
+ (Example: See extension specification
+ EGL_EXT_stream_consumer_egloutput)
+
+Issues
+
+ 1. Should this extension provide a mechanism to enumerate outputs
+ associated with an EGLDevice and set their modes?
+
+ RESOLVED: No. On many operating systems there already exist
+ standardized and/or widely accepted low level mechanisms for
+ performing these tasks. Duplicating this support in EGL would
+ impose an undesirable implementation burden where output handles
+ are only required as a means to direct rendering to a display
+ screen. Functions for enumerating screens or obtaining them from
+ platform-dependent representations will be provided by other
+ extensions.
+
+ 2. Should output layer and port handles be associated with an
+ EGLDisplay, or vice versa?
+
+ RESOLVED: Yes. Furthermore, it may only be possible to obtain
+ output handles from some EGLDisplays. The primary intended use
+ case is the EGLDisplay associated with an EGLDevice, through the
+ platform defined by EGL_EXT_platform_device. This represents raw
+ device access available in the absence of a window system.
+ EGLDisplays associated with other platforms typically represent
+ handles provided by window systems, which may not allow direct
+ access to the display control hardware.
+
+ 3. Can the EGLDeviceEXT handle be returned by a query function
+ which returns integer attributes?
+
+ RESOLVED: Yes. Function definition has been updated to use
+ EGLAttribEXT, which is compatible with EGL handles.
+
+ 4. What display mode properties should be queriable by the base
+ extension? Does the application require width/height/refresh or
+ should those be left to other mechanisms or additional
+ extensions? If hardware supports selecting a portion of the
+ image for display, or restricting an image to a portion of the
+ screen, or scaling an image to a different resolution for
+ display, should all these settings be queriable?
+
+ RESOLVED: The base extension will not define any display
+ properties. These will be left to future extensions if required.
+
+ 5. How should stereo/multiview displays be handled? Should all
+ views share a single output or does each one have its own?
+
+ UNRESOLVED. Left for a future extension to define.
+
+ 6. This extension is currently focused on individual display layers
+ for the purpose of directing rendering output. An API covering
+ all hardware would associate one or more of those layers with a
+ display port. Do we need to abstract both?
+
+ RESOLVED: Yes. Extension has been modified to abstract both
+ inputs (layers) and outputs (ports) of display control hardware.
+ An implementation is not required to return any ports in the
+ query function if it provides no means to operate on them.
+
+Revision History:
+
+ #9 (August 22nd, 2014) James Jones
+ - Marked complete.
+ - Added minor coments to issue 5.
+ - Listed Daniel as the contact.
+
+ #8 (June 10th, 2014) Daniel Kartch
+ - Fixed prototypes for layer/port attribute setting functions.
+
+ #7 (June 5th, 2014) Daniel Kartch
+ - Assigned enumerated values for constants.
+ - Indicated default swap interval value.
+
+ #6 (May 28th, 2014) Daniel Kartch
+ - Updated wording based on EGL 1.5 specification, using
+ EGLAttrib instead of EGLAttribEXT.
+ - Added functions to set layer and port attributes.
+ - Added table of valid attributes, with min/max/current swap
+ interval values, and adjusted function descriptions
+ accordingly.
+ - Refined description for output enumeration functions to better
+ indicate the effect of attribute list.
+ - Added effect of swap interval in posting section.
+
+ #5 (January 31st, 2014) Daniel Kartch
+ - Added eglGetOutput* functions, folding in and generalizing
+ functionality previously provided by EXT_native_output
+ extension.
+ - Separated descriptions for layer and port query functions for
+ clarity.
+
+ #4 (January 22nd, 2014) Daniel Kartch
+ - Added section clarifying that this extension provides no means
+ to use output ports to set display modes, but future
+ extensions may.
+
+ #3 (January 17th, 2014) Daniel Kartch
+ - Updated names of example extension for obtaining and using
+ output handles.
+ - Fixed typos.
+
+ #2 (November 12th, 2013) Daniel Kartch
+ - Replaced EGLOutput with EGLOutputLayer and added
+ EGLOutputPort (and modified/added corresponding functions), to
+ allow both inputs and outputs of display control hardware to
+ be abstracted.
+ - Modified attribute query functions to use EGLAttribEXT and
+ added string query functions.
+ - Removed display mode attributes. These can be defined by a
+ separate extension if desired.
+ - Removed destructor function for outputs and added section on
+ lifetime, as well as language describing their relationship to
+ EGLDisplays.
+
+ #1 (October 25nd, 2013) Daniel Kartch
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_pixel_format_float.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_pixel_format_float.txt
new file mode 100644
index 0000000..a14adcb
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_pixel_format_float.txt
@@ -0,0 +1,136 @@
+Name
+
+ EXT_pixel_format_float
+
+Name Strings
+
+ EGL_EXT_pixel_format_float
+
+Contributors
+
+ Tom Cooksey
+ Jesse Hall
+ Mathias Heyer
+ Adam Jackson
+ James Jones
+ Daniel Koch
+ Jeff Leger
+ Weiwan Liu
+ Jeff Vigil
+
+Contact
+
+ Weiwan Liu, NVIDIA (weiwliu 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4 - Nov 22, 2016
+
+Number
+
+ EGL Extension #106
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+Overview
+
+ This extensions aims to provide similar functionality as GL_ARB_color_-
+ buffer_float, WGL_ARB_pixel_format_float and GLX_ARB_fbconfig_float. This
+ extension allows exposing new EGLConfigs that support formats with
+ floating-point RGBA components. This is done by introducing a new EGLConfig
+ attribute that represents the component type, i.e. fixed-point or
+ floating-point. Such new EGLConfigs can be used to create floating-point
+ rendering surfaces and contexts.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:
+
+ EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+
+ Accepted as attribute values for the EGL_COLOR_COMPONENT_TYPE_EXT attribute
+ of eglChooseConfig:
+
+ EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+
+ Additions to table 3.1, "EGLConfig attributes" in Section 3.4 "Configuration
+ Management":
+
+ Attribute Type Notes
+ --------- ---- ---------
+ EGL_COLOR_COMPONENT_TYPE_EXT enum color component type
+
+ Append one paragraph at the end of "The Color Buffer" section on page 21:
+
+ EGL_COLOR_COMPONENT_TYPE_EXT indicates the color buffer component type,
+ and must be either EGL_COLOR_COMPONENT_TYPE_FIXED_EXT for fixed-point
+ color buffers, or EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT for floating-point
+ color buffers.
+
+ Add one entry to Table 3.4 and increment "Sort Priority" between "2" and
+ "11" by one for existing entries:
+
+ Attribute Default
+ ----------- ------------
+ EGL_COLOR_COMPONENT_TYPE_EXT EGL_COLOR_COMPONENT_TYPE_FIXED_EXT
+
+ Selection Criteria Sort Order Priority
+ ------------------ ---------- --------
+ Exact Special 2
+
+ Insert before the entry for EGL_COLOR_BUFFER_TYPE, and increment its
+ numbering and subsequent numbering by one:
+
+ 2. Special: by EGL_COLOR_COMPONENT_TYPE_EXT where the precedence is
+ EGL_COLOR_COMPONENT_TYPE_FIXED_EXT, EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT
+
+ Change footnote 8 on page 30 to:
+
+ Within the same EGL_COLOR_COMPONENT_TYPE_EXT, this rule places configs
+ with deeper color buffers first in the list returned by
+ eglChooseConfig...
+
+Issues
+
+ 1. When reading from or rendering to a floating-point EGL surface, is there
+ any clamping performed on the values?
+
+ RESOLVED: It depends on the behavior of the client API. For example, in
+ OpenGL and ES, by default no clamping will be done on the floating-point
+ values, unless the clamping behavior is changed via the client API.
+
+ 2. When rendering to a floating-point EGL surface, since values may not be
+ clamped to [0, 1], what is the range of values that applications can use
+ to get display's "darkest black" and "brightest white"?
+
+ RESOLVED: It is not in the scope of this extension to define a range of
+ values that corresponds to display's capability. Please refer to the EGL
+ specification for the chosen colorspace (EGL_GL_COLORSPACE), where such a
+ reference range may be defined.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- --------------- ------------------------------------------
+ 1 12/11/15 Weiwan Liu Initial version
+ 2 05/18/16 Weiwan Liu Rename to EXT
+ 3 05/31/16 Weiwan Liu Add issues
+ 4 11/22/16 Weiwan Liu Change status to complete
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_base.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_base.txt
new file mode 100644
index 0000000..80bd1bc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_base.txt
@@ -0,0 +1,371 @@
+Name
+
+ EXT_platform_base
+
+Name Strings
+
+ EGL_EXT_platform_base
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ James Jones <jajones@nvidia.com>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 9, 2014.01.09
+
+Number
+
+ EGL Extension #57
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.4.
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ This extension is written against the wording of the 2013.02.11 revision
+ of the EGL 1.4 Specification.
+
+Overview
+
+ This extension defines functionality and behavior for EGL implementations
+ that support multiple platforms at runtime. For example, on Linux an EGL
+ implementation could support X11, Wayland, GBM (Generic Buffer Manager),
+ Surface Flinger, and perhaps other platforms.
+
+ In particular, this extension defines the following:
+
+ 1. A mechanism by which an EGL client can detect which platforms the
+ EGL implementation supports.
+
+ 2. New functions that enable an EGL client to specify to which
+ platform a native resource belongs when creating an EGL resource
+ from that native resource. For example, this extension enables an
+ EGL client to specify, when creating an EGLSurface from a native
+ window, that the window belongs to X11.
+
+ 3. That an EGL client is not restricted to interacting with a single
+ platform per process. A client process can create and manage EGL
+ resources from multiple platforms.
+
+ The generic term 'platform' is used throughout this extension
+ specification rather than 'window system' because not all EGL platforms
+ are window systems. In particular, those platforms that allow headless
+ rendering without a display server, such as GBM, are not window systems.
+
+ This extension does not specify behavior specific to any platform, nor
+ does it specify the set of platforms that an EGL implementation may
+ support. Platform-specific details lie outside this extension's scope and
+ are instead described by extensions layered atop this one.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLDisplay eglGetPlatformDisplayEXT(
+ EGLenum platform,
+ void *native_display,
+ const EGLint *attrib_list);
+
+ EGLSurface eglCreatePlatformWindowSurfaceEXT(
+ EGLDisplay dpy,
+ EGLConfig config,
+ void *native_window,
+ const EGLint *attrib_list);
+
+ EGLSurface eglCreatePlatformPixmapSurfaceEXT(
+ EGLDisplay dpy,
+ EGLConfig config,
+ void *native_pixmap,
+ const EGLint *attrib_list);
+
+New Tokens
+
+ None
+
+Additions to the EGL 1.4 Specification
+
+ Replace each occurence of the term "window system" with "platform". The
+ rationale behind this change is that not all platforms are window systems,
+ yet the EGL 1.4 specification uses the two terms interchangeably. In
+ particular, platforms that allow headless rendering without a display
+ server, such as GBM, are not window systems.
+
+ Append the following paragraph to the initial, unnamed subsection of
+ section 2.1 "Native Window System and Rendering APIs".
+
+ "This specification does not define the set of platforms that may be
+ supported by the EGL implementation, nor does it specify behavior specific
+ to any platform. The set of supported platforms and their behavior is
+ defined by extensions. To detect if a particular platform is supported,
+ clients should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY using
+ eglQueryString.
+
+ Replace the text of section 3.2 "Initialization", from the start of the
+ section and up to and excluding the phrase "EGL may be intialized on
+ a display", with the following:
+
+ "A display can be obtained by calling
+
+ EGLDisplay eglGetPlatformDisplayEXT(
+ EGLenum platform,
+ void *native_display,
+ const EGLint *attrib_list);
+
+ EGL considers the returned EGLDisplay as belonging to the native platform
+ specified by <platform>. This specification defines no valid value for
+ <platform>. Any specification that does define a valid value for
+ <platform> will also define requirements for the <native_display>
+ parameter. For example, an extension specification that defines support
+ for the X11 platform may require that <native_display> be a pointer to an
+ X11 Display, and an extension specification that defines support for the
+ Microsoft Windows platform may require that <native_display> be a pointer
+ to a Windows Device Context.
+
+ All attribute names in <attrib_list> are immediately followed by the
+ corresponding desired value. The list is terminated with EGL_NONE. The
+ <attrib_list> is considered empty if either <attrib_list> is NULL or if
+ its first element is EGL_NONE. This specification defines no valid
+ attribute names for <attrib_list>.
+
+ Multiple calls made to eglGetPlatformDisplayEXT with the same <platform>
+ and <native_display> will return the same EGLDisplay handle.
+
+ An EGL_BAD_PARAMETER error is generated if <platform> has an invalid value.
+ If <platform> is valid but no display matching <native_display> is
+ available, then EGL_NO_DISPLAY is returned; no error condition is raised
+ in this case.
+
+ A display can also be obtained by calling
+
+ EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id);
+
+ The behavior of eglGetDisplay is similar to that of
+ eglGetPlatformDisplayEXT, but is specifided in terms of implementation-
+ specific behavior rather than platform-specific extensions.
+ As for eglGetPlatformDisplayEXT, EGL considers the returned EGLDisplay
+ as belonging to the same platform as <display_id>. However, the set of
+ platforms to which <display_id> is permitted to belong, as well as the
+ actual type of <display_id>, are implementation-specific. If <display_id>
+ is EGL_DEFAULT_DISPLAY, a default display is returned. Multiple calls
+ made to eglGetDisplay with the same <display_id> will return the same
+ EGLDisplay handle. If no display matching <display_id> is available,
+ EGL_NO_DISPLAY is returned; no error condition is raised in this case."
+
+ In section 3.5.1 "Creating On-Screen Rendering Surfaces", replace the
+ second paragraph, which begins with "Using the platform-specific type" and
+ ends with "render into this surface", with the following:
+
+ "Then call
+
+ EGLSurface eglCreatePlatformWindowSurfaceEXT(
+ EGLDisplay dpy,
+ EGLConfig config,
+ void *native_window,
+ const EGLint *attrib_list);
+
+ eglCreatePlatformWindowSurfaceEXT creates an onscreen EGLSurface and
+ returns a handle to it. Any EGL context created with a compatible
+ EGLConfig can be used to render into this surface.
+
+ <native_window> must belong to the same platform as <dpy>, and EGL
+ considers the returned EGLSurface as belonging to that same platform. The
+ extension that defines the platform to which <dpy> belongs also defines
+ the requirements for the <native_window> parameter."
+
+ In the remainder of section 3.5.1, replace each occurrence of
+ 'eglCreateWindowSurface' with 'eglCreatePlatformWindowSurfaceEXT'.
+
+ Insert the sentence below after the first sentence of the last paragraph
+ of section 3.5.1:
+
+ "If <dpy> and <native_window> do not belong to the same platform, then
+ undefined behavior occurs. [1]"
+
+ Add the following footnote to section 3.5.1:
+
+ "[1] See section 3.1.0.2 "Parameter Validation".
+
+ Append the following to section 3.5.1:
+
+ "An on-screen rendering surface may also be created by calling
+
+ EGLSurface eglCreateWindowSurface(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLNativeWindowType win,
+ const EGLint *attrib_list);
+
+ The behavior of eglCreateWindowSurface is identical to that of
+ eglCreatePlatformWindowSurfaceEXT except that the set of platforms to
+ which <dpy> is permitted to belong, as well as the actual type of <win>,
+ are implementation specific.
+
+ In section 3.5.4 "Creating Native Pixmap Rendering Surfaces", replace the
+ third paragraph, which begins with "Using the platform-specific type" and
+ ends with "render into this surface", with the following:
+
+ "Then call
+
+ EGLSurface eglCreatePlatformPixmapSurfaceEXT(
+ EGLDisplay dpy,
+ EGLConfig config,
+ void *native_pixmap,
+ const EGLint *attrib_list);
+
+ eglCreatePlatformPixmapSurfaceEXT creates an offscreen EGLSurface and
+ returns a handle to it. Any EGL context created with a compatible
+ EGLConfig can be used to render into this surface.
+
+ <native_pixmap> must belong to the same platform as <dpy>, and EGL
+ considers the returned EGLSurface as belonging to that same platform. The
+ extension that defines the platform to which <dpy> belongs also defines
+ the requirements for the <native_pixmap> parameter."
+
+ In the remainder of section 3.5.4, replace each occurrence of
+ 'eglCreatePixmapSurface' with 'eglCreatePlatformPixmapSurfaceEXT' and each
+ occurence of 'eglCreateWindowSurface' with
+ 'eglCreatePlatformWindowSurfaceEXT'.
+
+ Insert the sentence below after the first sentence of the last paragraph
+ of section 3.5.4:
+
+ "If <dpy> and <native_pixmap> do not belong to the same platform, then
+ undefined behavior occurs. [1]"
+
+ Add the following footnote to section 3.5.3:
+
+ "[1] See section 3.1.0.2 "Parameter Validation".
+
+ Append the following to section 3.5.2:
+
+ "An offscreen rendering surface may also be created by calling
+
+ EGLSurface eglCreatePixmapSurface(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLNativePixmapType pixmap,
+ const EGLint *attrib_list);
+
+ The behavior of eglCreatePixmapSurface is identical to that of
+ eglCreatePlatformPixmapSurfaceEXT except that the set of platforms to
+ which <dpy> is permitted to belong, as well as the actual type of
+ <pixmap>, are implementation specific.
+
+Issues
+
+ 1. What rules define how EGL resources are shared among displays belonging
+ to different platforms?
+
+ RESOLVED: Neither the EGL 1.4 specification nor any extension allow EGL
+ resources to be shared among displays. This extension does not remove
+ that restriction.
+
+ 2. Rather than define the new function eglGetPlatformDisplayEXT(), should
+ this extension instead define new thread-local state for the currently
+ bound platform and an associated binding function, such as
+ eglBindPlatformEXT()?
+
+ RESOLVED: No, for the following reasons.
+
+ - A current trend among the Khronos workgroups is to remove use of
+ global state by introducing bindless objects. Introducing a new
+ thread-local binding point defies that trend.
+
+ - Additional specification language would be required to define
+ the interactions between the currently bound platform and all
+ EGL functions that accept an EGLDisplay. (For example, if the
+ currently bound platform is Wayland, then what is the result of
+ calling eglCreateWindowSurface() with a display and native
+ window belonging to X11?) By choosing to not introduce the
+ notion of a "currently bound platform", we obtain a cleaner
+ extension specification and eliminate for EGL users a class of
+ potential bugs.
+
+ 3. Should this extension define the notion of a default platform?
+
+ RESOLVED: No. eglGetDisplay() can be used if a default platform is
+ needed.
+
+ 4. Rather than define the new functions
+ eglCreatePlatform{Window,Pixmap}SurfaceEXT(), should we instead
+ redefine the EGLNative* types in eglplatform.h as void*?
+
+ RESOLVED: No, this introduces problems for X11 applications.
+
+ Suppose that a 64-bit X11 application is compiled against an old EGL
+ library (where EGLNativeWindowType is a typedef for XID, which is in
+ turn a typedef for a 64-bit unsigned integer on Fedora 18) and then
+ attempts to run against a new EGL library (where EGLNativeType is
+ a typedef for void*). To preserve the ABI of eglCreateWindowSurface()
+ in this situation, the new EGL library must re-interpret the
+ <native_window> parameter as an integer.
+
+ However, this preservation of the ABI breaks source compatibility for
+ existing X11 applications. To successfully compile, each call to
+
+ eglCreateWindowSurface(dpy, window, attribs)
+
+ in existing X11 application source code would need to be replaced with
+
+ eglCreateWindowSurface(dpy, (void*) window, attribs) .
+
+ Requiring such widespread code modifications would be an unnecessary
+ burden to developers and Linux package maintainers.
+
+Revision History
+
+ Version 9, 2014.01.09 (Jon Leech)
+ - Fix typo eglGetDisplayPlatformEXT -> eglGetPlatformDisplayEXT
+
+ Version 8, 2013.07.03 (Chad Versace)
+ - Add "Extension Type" section, required by EGL_EXT_client_extensions v9.
+
+ Version 7, 2013.06.07 (Chad Versace)
+ - Fix some awkward text (s/the EGL/EGL/).
+ - Remove text "attribute names are defined by platform-specific
+ extensions".
+
+ Version 6, 2013.06.07 (Chad Versace)
+ - To "Dependencies" section, expand text that discusses
+ EGL_EXT_client_extensions.
+
+ Version 5, 2013.05.18 (Chad Versace)
+ - Removed restriction that "attribute names are defined only by
+ platform-specific extensions".
+ - Resolve issue 3 as NO.
+ - Clarified some text and fixed grammatical errors.
+
+ Version 4, 2013.05.14 (Chad Versace)
+ - Add <attrib_list> parameter to eglGetPlatformDisplayEXT, per
+ feedback at the April Khronos F2F.
+
+ Version 3, 2013.04.26 (Chad Versace)
+ - Add issues 2, 3, 4.
+
+ Version 2, 2013.03.24 (Chad Versace)
+ - Complete draft by adding text for pixmaps.
+ - The footnotes regarding undefined behavior, simplify them by
+ simply referring to section 3.1.0.2.
+ - Add issue 1 from Eric Anholt <eric@anholt.net>.
+ - Fix spelling and formatting errors.
+
+ Version 1, 2013.03.13 (Chad Versace)
+ - Incomplete draft posted for review
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_device.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_device.txt
new file mode 100644
index 0000000..45c4fe3
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_device.txt
@@ -0,0 +1,161 @@
+Name
+
+ EXT_platform_device
+
+Name Strings
+
+ EGL_EXT_platform_device
+
+Contributors
+
+ James Jones
+ Daniel Kartch
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 6 - May 16th, 2014
+
+Number
+
+ EGL Extension #73
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_device_base
+
+ Requires EGL_EXT_platform_base or EGL 1.5
+
+ Written against the wording of EGL 1.5
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ This extension defines a method to create an EGLDisplay from an
+ EGLDeviceEXT by treating the EGLDeviceEXT as an EGLNativeDisplay
+ object.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <platform> parameter of eglGetPlatformDisplayEXT
+ and eglGetPlatformDisplay:
+
+ EGL_PLATFORM_DEVICE_EXT 0x313F
+
+Replace the last paragraph of section 2.1 "Native Window System and
+Rendering APIs"
+
+ "This specification defines only the EGLDeviceEXT platform, and
+ behavior specific to it. Implementations may support other
+ platforms, but their existence and behavior is defined by
+ extensions. To detect support for other platforms, clients should
+ query the EGL_EXTENSIONS string of EGL_NO_DISPLAY using
+ eglQueryString (see section 3.3).
+
+Replace the second sentence of the paragraph following the
+eglGetPlatformDisplay prototype
+
+ "The only valid value for <platform> is EGL_PLATFORM_DEVICE_EXT.
+ When <platform> is EGL_PLATFORM_DEVICE_EXT, <native_display> must
+ be an EGLDeviceEXT object. Platform-specific extensions may
+ define other valid values for <platform>."
+
+Add the following sentence to the end of the second paragraph after
+the eglCreatePlatformWindowSurface prototype.
+
+ "There are no valid values of <native_window> when <dpy> belongs
+ to the EGL_PLATFORM_DEVICE_EXT platform."
+
+Add the following sentence to the end of the second paragraph after
+the eglCreatePlatformPixmapSurface prototype.
+
+ "There are no valid values of <native_pixmap> when <dpy> belongs
+ to the EGL_PLATFORM_DEVICE_EXT platform.
+
+Issues
+
+ 1. Do EGLDevice-backed displays support window or pixmap surfaces?
+ If so, what native objects are they associated with? If not,
+ are EGLDevice-backed displays useful in any way?
+
+ RESOLVED: This extension defines no method to create window or
+ pixmap surfaces on the EGLDeviceEXT platform. Other
+ extensions may define such functionality. Presumably, if
+ there are no other extensions that expose native window or
+ pixmap types associated with EGL devices, EGLDeviceEXT-backed
+ displays could expose EGLConfigs that only support rendering
+ to EGLStreamKHR or EGLPbuffer surfaces.
+
+ 2. Should the EGL_PLATFORM_DEVICE_EXT platform be included in the
+ EGL specification as a special "blessed" platform, or exist
+ only as an extension like other platforms?
+
+ RESOLVED: EGL devices are defined as part of the EGL
+ specification, so there's no reason to exclude their
+ associated platform from the core EGL specification. They are
+ not native objects, therefore they can not be referred to as a
+ native platform, even though they are used interchangeably
+ with native objects in this extension.
+
+Revision History:
+
+ #6 (May 16th, 2014) James Jones
+ - Marked the extension complete
+ - Marked all issues resolved
+
+ #5 (April 8th, 2014) James Jones
+ - Updated wording based on the EGL 1.5 spec
+ - Assigned values to tokens
+
+ #4 (November 6th, 2013) James Jones
+ - Specified this is a device extension
+ - Requires, rather than interacts with EGL_EXT_platform_base
+ - Removed EGL_SUPPORTS_PLATFORM_DEVICE_EXT. There is no need
+ for a separate query now that the name string is listed in
+ the per-device extension string
+
+ #3 (April 23rd, 2013) James Jones
+ - Fixed minor typos
+
+ #2 (April 18th, 2013) James Jones
+ - Moved eglGetDisplayPointerEXT to a stand-alone extension
+ - Renamed from EGL_EXT_device_display to
+ EGL_EXT_platform_device
+ - Filled in the actual spec language modifications
+ - Replaced issue 2, since the original was moved to
+ EGL_EXT_display_attributes
+ - Reworded issue 1.
+ - Fixed some typos
+
+ #1 (April 16th, 2013) James Jones
+ - Initial Draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_wayland.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_wayland.txt
new file mode 100644
index 0000000..3e5c0fa
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_wayland.txt
@@ -0,0 +1,135 @@
+Name
+
+ EXT_platform_wayland
+
+Name Strings
+
+ EGL_EXT_platform_wayland
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 4, 2014-03-10
+
+Number
+
+ EGL Extension #63
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ Requires EGL_EXT_platform_base.
+
+ This extension is written against the wording of version 7 of the
+ EGL_EXT_platform_base specification.
+
+Overview
+
+ This extension defines how to create EGL resources from native Wayland
+ resources using the functions defined by EGL_EXT_platform_base.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_WAYLAND_EXT 0x31D8
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay backed by a Wayland display, call
+ eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_WAYLAND_EXT. The
+ <native_display> parameter specifies the Wayland display to use and must
+ either point to a `struct wl_display` or be EGL_DEFAULT_DISPLAY. If
+ <native_display> is EGL_DEFAULT_DISPLAY, then EGL will create a new
+ wl_display structure by connecting to the default Wayland socket. The
+ manual page wl_display_connect(3) defines the location of the default
+ Wayland socket.
+
+ To obtain an on-screen rendering surface from a Wayland window, call
+ eglCreatePlatformWindowSurfaceEXT with a <dpy> that belongs to Wayland and
+ a <native_window> that points to a `struct wl_egl_surface`.
+
+ It is not valid to call eglCreatePlatformPixmapSurfaceEXT with a <dpy>
+ that belongs to Wayland. Any such call fails and generates
+ EGL_BAD_PARAMETER.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplayEXT()?
+
+ RESOLUTION: Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplayEXT
+ returns a display backed by the default Wayland display.
+
+ 2. Should this extension support creation EGLPixmap resources from Wayland
+ pixmaps?
+
+ RESOLVED. No. Wayland has no pixmap type.
+
+ 3. Should the extension namespace be EXT or MESA?
+
+ The only shipping EGL implementation today (2013-04-26) that supports
+ Wayland is Mesa. However, perhaps the extension should reside in the
+ EXT namespace in expectation that other vendors will also begin
+ supporting Wayland.
+
+ RESOLVED. Use the EXT namespace because other vendors have expressed
+ interest in Wayland.
+
+Revision History
+
+ Version 4, 2014-03-10(Chad Versace)
+ - Change resolution of issue #1 from "no" to "yes". Now
+ eglGetPlatformDisplayEXT accepts EGL_DEFAULT_DISPLAY for Wayland.
+ - Explain in more detail how EGL connects to the default Wayland
+ display.
+
+ Version 3, 2013-10-16 (Chad Versace)
+ - Resolve issue #3 to use EXT namespace.
+
+ Version 2, 2013-09-12 (Chad Versace)
+ - Update to wording of version 7 of EGL_EXT_platform_base spec.
+ - Add section "Extension Type".
+ - Rephrase the discussion of how to create a Wayland EGLDisplay
+ to follow the analogous discussion in the published
+ EGL_EXT_platform_x11 spec.
+ - Change resolution of issue 1 from yes to no, because of likely type
+ mismatch between EGL_DEFAULT_DISPLAY_TYPE and void*.
+
+ Version 1, 2013-04-26 (Chad Versace)
+ - Initial draft
+
+# vim:ai:et:sw=4:ts=4:
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_x11.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_x11.txt
new file mode 100644
index 0000000..19bfc35
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_x11.txt
@@ -0,0 +1,414 @@
+Name
+
+ EXT_platform_x11
+
+Name Strings
+
+ EGL_EXT_platform_x11
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ James Jones <jajones@nvidia.com>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 13, 2014-03-10
+
+Number
+
+ EGL Extension #59
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ Requires EGL_EXT_platform_base.
+
+ This extension is written against the wording of version 7 of the
+ EGL_EXT_platform_base specification.
+
+Overview
+
+ This extension defines how to create EGL resources from native X11
+ resources using the functions defined by EGL_EXT_platform_base.
+
+ This extension defines only how to create EGL resources from Xlib
+ resources. It does not define how to do so from xcb resources. All X11
+ types discussed here are defined by the header `Xlib.h`.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_X11_EXT 0x31D5
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ On the X11 platform, an EGLDisplay refers to a specific X11 screen rather
+ than an X11 display connection. This is the case because separate X11
+ screens, even when belonging to the same X11 display connection, may
+ reside on different GPUs and/or be driven by different drivers. Therefore,
+ different X11 screens may have different EGL capabilities.
+
+ To obtain an EGLDisplay backed by an X11 screen, call
+ eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_X11_EXT. The
+ <native_display> parameter specifies the X11 display connection to use, and
+ must point to a valid X11 `Display` or be NULL. If <native_display> is
+ EGL_DEFAULT_DISPLAY, then EGL will create [1] a connection to the default
+ X11 display. The environment variable DISPLAY determines the default X11
+ display as described in the manual page for XOpenDisplay(3). The value of
+ attribute EGL_PLATFORM_X11_SCREEN_EXT specifies the X11 screen to use. If
+ the attribute is omitted from <attrib_list>, then the display connection's
+ default screen is used. Otherwise, the attribute's value must be a valid
+ screen on the display connection. If the attribute's value is not a valid
+ screen, then an EGL_BAD_ATTRIBUTE error is generated.
+
+ [fn1] The method by which EGL creates a connection to the default X11
+ display is an internal implementation detail. The implementation may use
+ XOpenDisplay, xcb_connect, or any other method.
+
+ To obtain an on-screen rendering surface from an X11 Window, call
+ eglCreatePlatformWindowSurfaceEXT with a <dpy> that belongs to X11 and
+ a <native_window> that points to an X11 Window.
+
+ To obtain an offscreen rendering surface from an X11 Pixmap, call
+ eglCreatePlatformPixmapSurfaceEXT with a <dpy> that belongs to X11 and
+ a <native_pixmap> that points to an X11 Pixmap.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplayEXT()?
+
+ RESOLVED. Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplayEXT
+ returns an EGLDisplay backed by the default X11 display.
+
+ 2. When given EGL_DEFAULT_DISPLAY, does eglGetPlatformDisplayEXT reuse an
+ existing X11 display connection or create a new one?
+
+ RESOLVED. eglGetPlatformDisplayEXT creates a new connection because the
+ alternative is infeasible. EGL cannot reliably detect if the client
+ process already has a X11 display connection.
+
+
+Example Code
+
+ // This example program creates two EGL surfaces: one from an X11 Window
+ // and the other from an X11 Pixmap.
+ //
+ // If the macro USE_EGL_EXT_PLATFORM_X11 is defined, then the program
+ // creates the surfaces using the methods defined in this specification.
+ // Otherwise, it uses the methods defined by the EGL 1.4 specification.
+ //
+ // Compile with `cc -std=c99 example.c -lX11 -lEGL`.
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <EGL/egl.h>
+ #include <X11/Xlib.h>
+
+ struct my_display {
+ Display *x11;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ XVisualInfo *x11;
+ Colormap colormap;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ Window x11;
+ EGLSurface egl;
+ };
+
+ struct my_pixmap {
+ struct my_config config;
+ Pixmap x11;
+ EGLSurface egl;
+ };
+
+ static void
+ check_extensions(void)
+ {
+ #ifdef USE_EGL_EXT_PLATFORM_X11
+ const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // EGL_EXT_client_extensions is unsupported.
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_EXT_platform_x11")) {
+ abort();
+ }
+ #endif
+ }
+
+ static struct my_display
+ get_display(void)
+ {
+ struct my_display dpy;
+
+ dpy.x11 = XOpenDisplay(NULL);
+ if (!dpy.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_EXT_PLATFORM_X11
+ dpy.egl = eglGetPlatformDisplayEXT(EGL_PLATFORM_X11_EXT, dpy.x11,
+ NULL);
+ #else
+ dpy.egl = eglGetDisplay(dpy.x11);
+ #endif
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ return dpy;
+ }
+
+ static struct my_config
+ get_config(struct my_display dpy)
+ {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+
+ EGL_DEPTH_SIZE, EGL_DONT_CARE,
+ EGL_STENCIL_SIZE, EGL_DONT_CARE,
+
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PIXMAP_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglChooseConfig(dpy.egl,
+ egl_config_attribs,
+ &config.egl, 1,
+ &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ XVisualInfo x11_visual_info_template;
+ if (!eglGetConfigAttrib(dpy.egl,
+ config.egl,
+ EGL_NATIVE_VISUAL_ID,
+ (EGLint*) &x11_visual_info_template.visualid)) {
+ abort();
+ }
+
+ int num_visuals;
+ config.x11 = XGetVisualInfo(dpy.x11,
+ VisualIDMask,
+ &x11_visual_info_template,
+ &num_visuals);
+ if (!config.x11) {
+ abort();
+ }
+
+ config.colormap = XCreateColormap(dpy.x11,
+ RootWindow(dpy.x11, 0),
+ config.x11->visual,
+ AllocNone);
+ if (config.colormap == None) {
+ abort();
+ }
+
+ return config;
+ }
+
+ static struct my_window
+ get_window(struct my_config config)
+ {
+ XSetWindowAttributes attr;
+ unsigned long mask;
+
+ struct my_window window = {
+ .config = config,
+ };
+
+ attr.colormap = config.colormap;
+ mask = CWColormap;
+
+ window.x11 = XCreateWindow(config.dpy.x11,
+ DefaultRootWindow(config.dpy.x11), // parent
+ 0, 0, // x, y
+ 256, 256, // width, height
+ 0, // border_width
+ config.x11->depth,
+ InputOutput, // class
+ config.x11->visual,
+ mask, // valuemask
+ &attr); // attributes
+ if (!window.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_EXT_PLATFORM_X11
+ window.egl = eglCreatePlatformWindowSurfaceEXT(config.dpy.egl,
+ config.egl,
+ &window.x11,
+ NULL);
+ #else
+ window.egl = eglCreateWindowSurface(config.dpy.egl,
+ config.egl,
+ window.x11,
+ NULL);
+ #endif
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ static struct my_pixmap
+ get_pixmap(struct my_config config)
+ {
+ struct my_pixmap pixmap = {
+ .config = config,
+ };
+
+ pixmap.x11 = XCreatePixmap(config.dpy.x11,
+ DefaultRootWindow(config.dpy.x11),
+ 256, 256, // width, height
+ config.x11->depth);
+ if (!pixmap.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_EXT_PLATFORM_X11
+ pixmap.egl = eglCreatePlatformPixmapSurfaceEXT(config.dpy.egl,
+ config.egl,
+ &pixmap.x11,
+ NULL);
+ #else
+ pixmap.egl = eglCreatePixmapSurface(config.dpy.egl,
+ config.egl,
+ pixmap.x11,
+ NULL);
+ #endif
+
+ if (pixmap.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return pixmap;
+ }
+
+ int
+ main(void)
+ {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+ struct my_pixmap pixmap = get_pixmap(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 13, 2014-03-10 (Chad Versace)
+ - Update text to reflect resolution of issue #1. State that
+ <native_display> may be EGL_DEFAULT_DISPLAY.
+ - Explain in more detail how EGL connects to the default X11 display.
+ - Add and resolve issue #2.
+
+ Version 12, 2014-02-11 (Chad Versace)
+ - Fix 2nd argument to XCreatePixmap in example code.
+
+ Version 11, 2013-07-10 (Jon Leech)
+ - Fix enumerant values and assign extension number for publication
+ (Bug 10240).
+
+ Version 10, 2013-07-03 (Chad Versace)
+ - Add "Extension Type" section, required by EGL_EXT_client_extensions v9.
+
+ Version 9, 2013-06-11 (Chad Versace)
+ - Replace reference to version 5 of EGL_EXT_platform_base to version 7.
+ - Add James Jones as contributor.
+
+ Version 8, 2013-06-07 (Chad Versace)
+ - Assign enum values to new tokens.
+
+ Version 7, 2013-06-07 (Chad Versace)
+ - Explicitly require EGL_EXT_client_extensions in the Dependencies
+ section.
+
+ Version 6, 2013-06-07 (Chad Versace)
+ - Add attribute EGL_PLATFORM_X11_SCREEN_EXT.
+
+ Version 5, 2013-06-07 (Chad Versace)
+ - Rephrase against version 7 of EGL_EXT_platform_base.
+
+ Version 4, 2013-06-07 (Chad Versace)
+ - Fix compilation of example code.
+
+ Version 3, 2013-04-26 (Chad Versace)
+ - Add missing EXT suffix to new token.
+
+ Version 2, 2013-04-22 (Chad Versace)
+ - Discuss EGL_DEFAULT_DISPLAY.
+ - Fix minor typographical and grammatical errors.
+
+ Version 1, 2013.03.24 (Chad Versace)
+ - First draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_xcb.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_xcb.txt
new file mode 100644
index 0000000..1411db6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_platform_xcb.txt
@@ -0,0 +1,382 @@
+Name
+
+ EXT_platform_xcb
+
+Name Strings
+
+ EGL_EXT_platform_xcb
+
+Contributors
+
+ Yuxuan Shui <yshuiv7@gmail.com>
+
+Contacts
+
+ Yuxuan Shui <yshuiv7@gmail.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 1, 2020-08-28
+
+Number
+
+ EGL Extension #141
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ Requires EGL_EXT_platform_base.
+
+ This extension is written against the wording of version 9 of the
+ EGL_EXT_platform_base specification.
+
+Overview
+
+ This extension defines how to create EGL resources from native X11
+ resources using the functions defined by EGL_EXT_platform_base.
+
+ The native X11 resources required by this extension are xcb resources.
+ All X11 types discussed here are defined by the header `xcb.h`.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_XCB_EXT 0x31DC
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ This extension defines the same set of behaviors as EGL_EXT_platform_x11,
+ except Xlib types are replaced with xcb types.
+
+ To obtain an EGLDisplay backed by an X11 screen, call
+ eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_XCB_EXT. The
+ <native_display> parameter specifies the X11 display connection to use, and
+ must point to a valid xcb `xcb_connection_t` or be EGL_DEFAULT_DISPLAY. If
+ <native_display> is EGL_DEFAULT_DISPLAY, then EGL will create [1] a
+ connection to the default X11 display. The environment variable DISPLAY
+ determines the default X11 display, and, unless overridden by the
+ EGL_PLATFORM_XCB_SCREEN_EXT attribute, the default X11 screen - as
+ described in the documentation of `xcb_connect`. If the environment
+ variable DISPLAY is not present in this case, the result is undefined. The
+ value of attribute EGL_PLATFORM_XCB_SCREEN_EXT specifies the X11 screen to
+ use. If the attribute is omitted from <attrib_list>, and <native_display>
+ is not EGL_DEFAULT_DISPLAY, then screen 0 will be used. Otherwise, the
+ attribute's value must be a valid screen on the display connection. If the
+ attribute's value is not a valid screen, then an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+ [fn1] The method by which EGL creates a connection to the default X11
+ display is an internal implementation detail. The implementation may use
+ xcb_connect, or any other method.
+
+ To obtain an on-screen rendering surface from an X11 Window, call
+ eglCreatePlatformWindowSurfaceEXT with a <dpy> that belongs to X11 and
+ a <native_window> that points to an xcb_window_t.
+
+ To obtain an offscreen rendering surface from an X11 Pixmap, call
+ eglCreatePlatformPixmapSurfaceEXT with a <dpy> that belongs to X11 and
+ a <native_pixmap> that points to an xcb_pixmap_t.
+
+Issues
+
+ 1. As xcb_connection_t doesn't carry a screen number, how should a screen be
+ selected in eglGetPlatformDisplayEXT()?
+
+ RESOLVED. The screen will be chosen with the following logic:
+
+ * If EGL_PLATFORM_XCB_SCREEN_EXT is specified, it will always take
+ precedence. Whether <native_display> is EGL_DEFAULT_DISPLAY or not.
+
+ * Otherwise, if <native_display> is not EGL_DEFAULT_DISPLAY, then
+ screen 0 will be used.
+
+ * Otherwise, which is to say <native_display> is EGL_DEFAULT_DISPLAY.
+ Then the DISPLAY environment variable will be used to determine the
+ screen number. If DISPLAY contains a screen number, that will be
+ used; if not, then 0 will be used.
+
+ * If the DISPLAY environment variable is not present when
+ <native_display> is EGL_DEFAULT_DISPLAY, the result will be undefined.
+
+Example Code
+
+ // This example program creates two EGL surfaces: one from an X11 Window
+ // and the other from an X11 Pixmap.
+ //
+ // Compile with `cc example.c -lxcb -lEGL`.
+
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <EGL/egl.h>
+ #include <EGL/eglext.h>
+ #include <xcb/xcb.h>
+
+ struct my_display {
+ xcb_connection_t *x11;
+ int screen;
+ int root_of_screen;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ xcb_colormap_t colormap;
+ xcb_visualid_t visualid;
+ int depth;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ xcb_window_t x11;
+ EGLSurface egl;
+ };
+
+ struct my_pixmap {
+ struct my_config config;
+ xcb_pixmap_t x11;
+ EGLSurface egl;
+ };
+
+ static void check_extensions(void) {
+ const char *client_extensions =
+ eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // EGL_EXT_client_extensions is unsupported.
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_EXT_platform_xcb")) {
+ abort();
+ }
+ }
+
+ xcb_screen_t *get_screen(xcb_connection_t *c, int screen) {
+ xcb_screen_iterator_t iter;
+
+ iter = xcb_setup_roots_iterator(xcb_get_setup(c));
+ for (; iter.rem; --screen, xcb_screen_next(&iter))
+ if (screen == 0)
+ return iter.data;
+
+ return NULL;
+ }
+
+ int get_visual_depth(xcb_connection_t *c, xcb_visualid_t visual) {
+ const xcb_setup_t *setup = xcb_get_setup(c);
+ for (xcb_screen_iterator_t i = xcb_setup_roots_iterator(setup); i.rem;
+ xcb_screen_next(&i)) {
+ for (xcb_depth_iterator_t j =
+ xcb_screen_allowed_depths_iterator(i.data);
+ j.rem; xcb_depth_next(&j)) {
+ const int len = xcb_depth_visuals_length(j.data);
+ const xcb_visualtype_t *visuals = xcb_depth_visuals(j.data);
+ for (int k = 0; k < len; k++) {
+ if (visual == visuals[k].visual_id) {
+ return j.data->depth;
+ }
+ }
+ }
+ }
+ abort();
+ }
+
+ static struct my_display get_display(void) {
+ struct my_display dpy;
+
+ dpy.x11 = xcb_connect(NULL, &dpy.screen);
+ if (!dpy.x11) {
+ abort();
+ }
+
+ dpy.egl = eglGetPlatformDisplayEXT(EGL_PLATFORM_XCB_EXT, dpy.x11,
+ (const EGLint[]){
+ EGL_PLATFORM_XCB_SCREEN_EXT,
+ dpy.screen,
+ EGL_NONE,
+ });
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ xcb_screen_t *screen = get_screen(dpy.x11, dpy.screen);
+ dpy.root_of_screen = screen->root;
+
+ return dpy;
+ }
+
+ static struct my_config get_config(struct my_display dpy) {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE,
+ 32,
+ EGL_RED_SIZE,
+ 8,
+ EGL_GREEN_SIZE,
+ 8,
+ EGL_BLUE_SIZE,
+ 8,
+ EGL_ALPHA_SIZE,
+ 8,
+
+ EGL_DEPTH_SIZE,
+ EGL_DONT_CARE,
+ EGL_STENCIL_SIZE,
+ EGL_DONT_CARE,
+
+ EGL_RENDERABLE_TYPE,
+ EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE,
+ EGL_WINDOW_BIT | EGL_PIXMAP_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglChooseConfig(dpy.egl, egl_config_attribs, &config.egl, 1,
+ &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ if (!eglGetConfigAttrib(dpy.egl, config.egl, EGL_NATIVE_VISUAL_ID,
+ (EGLint *)&config.visualid)) {
+ abort();
+ }
+
+ config.colormap = xcb_generate_id(dpy.x11);
+ if (xcb_request_check(dpy.x11,
+ xcb_create_colormap_checked(
+ dpy.x11, XCB_COLORMAP_ALLOC_NONE, config.colormap,
+ dpy.root_of_screen, config.visualid))) {
+ abort();
+ }
+
+ config.depth = get_visual_depth(dpy.x11, config.visualid);
+
+ return config;
+ }
+
+ static struct my_window get_window(struct my_config config) {
+ xcb_generic_error_t *e;
+
+ struct my_window window = {
+ .config = config,
+ };
+
+ window.x11 = xcb_generate_id(config.dpy.x11);
+ e = xcb_request_check(
+ config.dpy.x11,
+ xcb_create_window_checked(config.dpy.x11, // connection
+ XCB_COPY_FROM_PARENT, // depth
+ window.x11, // window id
+ config.dpy.root_of_screen, // root
+ 0, 0, // x, y
+ 256, 256, // width, height
+ 0, // border_width
+ XCB_WINDOW_CLASS_INPUT_OUTPUT, // class
+ config.visualid, // visual
+ XCB_CW_COLORMAP, // mask
+ (const int[]){
+ config.colormap,
+ XCB_NONE,
+ }));
+ if (e) {
+ abort();
+ }
+
+ window.egl = eglCreatePlatformWindowSurfaceEXT(config.dpy.egl, config.egl,
+ &window.x11, NULL);
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ static struct my_pixmap get_pixmap(struct my_config config) {
+ struct my_pixmap pixmap = {
+ .config = config,
+ };
+
+ pixmap.x11 = xcb_generate_id(config.dpy.x11);
+ if (xcb_request_check(
+ config.dpy.x11,
+ xcb_create_pixmap(config.dpy.x11, config.depth, pixmap.x11,
+ config.dpy.root_of_screen, 256, 256))) {
+ abort();
+ }
+
+ pixmap.egl = eglCreatePlatformPixmapSurfaceEXT(config.dpy.egl, config.egl,
+ &pixmap.x11, NULL);
+
+ if (pixmap.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return pixmap;
+ }
+
+ int main(void) {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+ struct my_pixmap pixmap = get_pixmap(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 2, 2020.10.13 (Yuxuan Shui)
+ - Some wording changes
+ - Address the question about screen selection
+
+ Version 1, 2020.08.28 (Yuxuan Shui)
+ - First draft
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_present_opaque.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_present_opaque.txt
new file mode 100644
index 0000000..de2f6d8
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_present_opaque.txt
@@ -0,0 +1,118 @@
+Name
+
+ EXT_present_opaque
+
+Name Strings
+
+ EGL_EXT_present_opaque
+
+Contributors
+
+ Eric Engestrom
+
+Contacts
+
+ Eric Engestrom (eric 'at' engestrom.ch)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ #1, August 8, 2021
+
+Number
+
+ EGL Extension #146
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL 1.4 and EGL_KHR_image_base extension
+
+ This extension is written against the wording of the EGL 1.4
+ specification, and EGL_KHR_image_base version 6.
+
+Overview
+
+ This extension adds a new EGL surface attribute EGL_PRESENT_OPAQUE_EXT
+ to indicate that the surface should be presented as opaque,
+ disregarding any alpha channel if present.
+ If surface attribute EGL_PRESENT_OPAQUE_EXT is EGL_TRUE, then the
+ surface will be presented as opaque.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New EGLSurface attribute name:
+
+ EGL_PRESENT_OPAQUE_EXT 0x31DF
+
+
+Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces)
+
+ Change the second paragraph in section 3.5 on p. 28 (describing
+ eglCreateWindowSurface):
+
+ "Attributes that can be specified in attrib list include EGL_RENDER_BUFFER,
+ EGL_PRESENT_OPAQUE_EXT, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
+
+ Add the following paragraph in section 3.5 on p. 28 before
+ "EGL_VG_COLORSPACE specifies the color space used by OpenVG"
+ (describing eglCreateWindowSurface attrib_list):
+
+ "EGL_PRESENT_OPAQUE_EXT specifies the presentation opacity mode
+ of the window surface. If its value is EGL_TRUE, then the
+ surface's alpha channel (if any) will be ignored and considered
+ fully opaque. If its value is EGL_FALSE, then the compositor
+ doesn't change its behaviour, and considers the surface's alpha
+ channel the same way as if the extension wasn't implemented. The
+ default value of EGL_PRESENT_OPAQUE_EXT is EGL_FALSE."
+
+ Add to Table 3.5: Queryable surface attributes and types on p. 37
+
+ EGL_PRESENT_OPAQUE_EXT boolean Surface presentation opacity mode
+
+ Add following the second paragraph in section 3.6 on p. 39 (describing
+ eglQuerySurface):
+
+ "Querying EGL_PRESENT_OPAQUE_EXT returns the presentation
+ opacity mode of the surface. The presentation opacity mode of
+ window surfaces is specified in eglCreateWindowSurface. The
+ presentation opacity mode of pbuffer and pixmap surfaces is
+ always EGL_FALSE."
+
+ Add following after "which must be a valid native pixmap handle." in section 3.9.2 on
+ p. 53 (describing eglCopyBuffers):
+
+ "If attribute EGL_PRESENT_OPAQUE_EXT of surface has value of EGL_TRUE, then
+ an EGL_BAD_ACCESS error is returned."
+
+Issues
+
+ None
+
+Revision History
+
+ Version 2, 2021-08-17 (Eric Engestrom)
+ - Re-worded the compositor's behaviour for EGL_FALSE.
+ - Marked extension as Complete.
+
+ Version 1, 2021-08-08 (Eric Engestrom)
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_content.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_content.txt
new file mode 100644
index 0000000..2421161
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_content.txt
@@ -0,0 +1,329 @@
+Name
+
+ EXT_protected_content
+
+Name Strings
+
+ EGL_EXT_protected_content
+
+Contributors
+
+ Ramesh Viswanathan
+ Brian Ellis
+ Colin Sharp
+ Rajeev Kulkarni
+ Mohan Maiya
+ Maurice Ribble
+ Craig Donner
+ Jan-Harald Fredriksen
+ Daniel Koch
+ Michael Golds
+ Ray Smith
+
+Contacts
+
+ Maurice Ribble (mribble 'at' qti.qualcomm.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete.
+
+Version
+
+ Version 13, December 6, 2021
+
+Number
+
+ EGL Extension #97
+
+Dependencies
+
+ Requires EGL 1.4.
+
+ Interactions with EGL_KHR_image_base extension.
+
+ This extension is written against the wording of the EGL 1.4.
+ Specification (12/04/2013)
+
+ This extension has interactions with EGL_EXT_protected_surface if that
+ extension is supported. The interactions are described in the main text.
+
+Overview
+
+ This extension introduces the concept of protected contexts and protected
+ resources, specifically surfaces and EGLImages. Applications can choose at
+ creation time whether a context, surface or EGLImage is protected or not.
+
+ A protected context is required to allow the GPU to operate on protected
+ resources, including protected surfaces and protected EGLImages.
+
+ An explanation of undefined behavior in this extension: Several places
+ in this extension mention undefined behavior can result, which can
+ include program termination. The reason for this is because one way
+ to handle protected content is by using a protected virtual to physical
+ memory translation layer. With this sort of solution a system may generate
+ read or write faults when a non-protected source tries to access a protected
+ buffer. Depending on the system these faults might be ignored or they might
+ cause process termination. This undefined behavior should not include
+ actually allowing a transfer of data from a protected surface to a
+ non-protected surface.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> parameter of
+ eglCreateContext, eglCreateWindowSurface, and eglCreateImageKHR;
+ and as an parameter of eglQuerySurface and eglQueryContext:
+
+ EGL_PROTECTED_CONTENT_EXT 0x32C0
+
+
+Add a new section 2.7 entitled "Protected Content" at the end of Chapter 2 (EGL
+Operation)
+
+ "The attribute EGL_PROTECTED_CONTENT_EXT can be applied to EGL contexts,
+ EGL surfaces and EGLImages. If the attribute EGL_PROTECTED_CONTENT_EXT
+ is set to EGL_TRUE by the application, then the newly created EGL object
+ is said to be protected. A protected context is required to allow the
+ GPU to operate on protected resources, including protected surfaces and
+ protected EGLImages.
+
+ GPU operations are grouped into pipeline stages. Pipeline stages can be
+ defined to be protected or not protected. Each stage defines
+ restrictions on whether it can read or write protected and unprotected
+ resources, as follows:
+
+ When a GPU stage is protected, it:
+ - Can read from protected resources
+ - Can read from unprotected resources
+ - Can write to protected resources
+ - Can NOT write to unprotected resources
+
+ When a GPU stage is not protected, it:
+ - Can NOT read from protected resources
+ - Can read from unprotected resources
+ - Can NOT write to protected resources
+ - Can write to unprotected resources
+
+ Any accesses not following these restrictions will result in undefined
+ behavior.
+
+ This extension does not specify which pipeline stages of a protected
+ context are protected or not. This is left to a client API extension to
+ define. All stages in a regular (not protected) context are not
+ protected. However, if EGL_EXT_protected_surface is also supported, a
+ regular (not protected) context will execute stages where one or more
+ protected resources is accessed as if it were a protected context.
+
+ Note that the protection state of a stage may be left implementation
+ defined by a client API extension. This means that no guarantees can be
+ made about whether the stage will be protected or not protected.
+ Practically this means that the permitted operations for such a stage
+ are the intersection of the allowed operations for protected and not
+ protected stages, i.e it:
+
+ - Can NOT read from protected resources
+ - Can read from unprotected resources
+ - Can NOT write to protected resources
+ - Can NOT write to unprotected resources
+
+ Since this is not a very useful set of operations refer to the client API
+ extension to see what operations are actually allowed.
+
+ This extension does not guarantee the implementation abides by a
+ system's digital rights management requirements. It must be verified
+ beyond the existence of this extension that the implementation of this
+ extension is trustworthy according to the requirements of a content
+ protection system."
+
+Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Contexts)
+
+ Change the fifth paragraph in section 3.7.1 Creating Rendering Contexts:
+
+ "attrib list specifies a list of attributes for the context. The
+ list has the same structure as described for eglChooseConfig.
+ Attributes that can be specified in attrib list include
+ EGL_CONTEXT_CLIENT_VERSION and EGL_PROTECTED_CONTENT_EXT. The
+ EGL_CONTEXT_CLIENT_VERSION attribute may only be specified when
+ creating a OpenGL ES context (e.g. when the current rendering API is
+ EGL_OPENGL_ES_API)."
+
+ Add the following paragraph in section 3.7.1 on p. 44 before "attrib list
+ may be NULL or empty (first attribute is EGL_NONE), in which case
+ attributes assume their default values as described below."
+
+ "EGL_PROTECTED_CONTENT_EXT specifies the protected state of the new
+ context. If its value is EGL_TRUE, then the context is said to be
+ protected. If its value is EGL_FALSE, then the context is not
+ protected. See section 2.7 (Protected Content) for more information
+ about protected contexts.
+
+ The default value of EGL_PROTECTED_CONTENT_EXT is EGL_FALSE."
+
+ Add the following paragraph in section 3.7.4 Context Queries. Add after
+ the last paragraph after eglQueryContext queries.
+
+ "Querying EGL_PROTECTED_CONTENT_EXT returns the current value"
+
+Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces)
+
+ Change the second paragraph in section 3.5 on p. 28 (describing
+ eglCreateWindowSurface):
+
+ "Attributes that can be specified in attrib list include
+ EGL_RENDER_BUFFER, EGL_PROTECTED_CONTENT_EXT, EGL_VG_COLORSPACE, and
+ EGL_VG_ALPHA_FORMAT."
+
+ Add the following paragraph in section 3.5 on p. 28 before
+ "EGL_VG_COLORSPACE specifies the color space used by OpenVG" (describing
+ eglCreateWindowSurface(attrib_list):
+
+ "EGL_PROTECTED_CONTENT_EXT specifies the protected state of the
+ window surface. If its value is EGL_TRUE, then the surface content
+ is said to be protected. If its value is EGL_FALSE, then the surface
+ content is not protected. See section 2.7 (Protected Content) for
+ more information about protected and non-protected surfaces.
+
+ Client APIs will not allow contents of protected surfaces to be
+ accessed by non-protected contexts in the system (including
+ non-secure software running on the CPU). Such operations will result
+ in undefined behavior.
+
+ Calling eglSwapBuffers on such a protected surface will succeed, but
+ the contents may or may not be posted successfully depending on
+ whether those parts of the pipeline are capable of handling
+ protected content. Any disallowed operation will fail and result in
+ undefined behavior.
+
+ The default value of EGL_PROTECTED_CONTENT_EXT is EGL_FALSE."
+
+ Add the following paragraph in section 3.5.6 Surface Attributes. Add after
+ the last paragraph after eglQuerySurface attribute queries.
+
+ "Querying EGL_PROTECTED_CONTENT_EXT returns the current value"
+
+Additions to EGL_KHR_image_base extension specification
+
+ Add to section 2.5.1 Table bbb:
+ +-----------------------------+-------------------------+---------------+
+ | Attribute | Description | Default Value |
+ +-----------------------------+-------------------------+---------------+
+ | EGL_NONE | Marks the end of the | N/A |
+ | | attribute-value list | |
+ | EGL_IMAGE_PRESERVED_KHR | Whether to preserve | EGL_FALSE |
+ | | pixel data | |
+ | EGL_PROTECTED_CONTENT_EXT | Content protection | EGL_FALSE |
+ | | state | |
+ +-----------------------------+-------------------------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list>
+ parameter
+
+ Add the following paragraph to section 2.5.1 before "Errors" (describing
+ eglCreateImageKHR):
+
+ "If the value of attribute EGL_PROTECTED_CONTENT_EXT is EGL_TRUE
+ and the EGLImage sources can be guaranteed to be protected, then the
+ EGLImage is said to be protected. See section 2.7 (Protected Content)
+ for more information about protected resources including EGLImages.
+
+ If the value of attribute EGL_PROTECTED_CONTENT_EXT is EGL_FALSE then:
+
+ - If EGLImage sources are not protected, the EGLImage is said to be
+ not protected. See section 2.7 (Protected Content) for more
+ information about non-protected resources including EGLImages.
+ - If EGLImage sources are protected then the EGLImage content will
+ be inaccessible to any client context irrespective of whether the
+ context is protected or not. Trying to access such an EGLImage's
+ content will result in undefined behavior."
+
+ Add the following to the Errors list in section 2.5.1
+
+ "If the value specified in <attrib_list> for EGL_PROTECTED_CONTENT_EXT
+ is EGL_TRUE, and EGL and its client is unable to make guarantees
+ regarding the protected state of the EGLImage source, the error
+ EGL_BAD_ACCESS is generated."
+
+Issues
+ 1) Can a protected context be shared with a non-protected context?
+
+ RESOLVED - Yes. The rule that protected surfaces can only be used by
+ protected contexts still applies. An example use case is where
+ someone wants to render to unprotected textures within an unprotected
+ context and then share it with a protected context to be used as a texture.
+
+ 2) Should all surfaces within a protected context be protected by default?
+
+ RESOLVED - No, several implementations have limited amounts of protected
+ memory, so the API will require opting into protected memory.
+
+ 3) Can these protected surfaces be used by stages other than fragment
+ shader stage?
+
+ RESOLVED - Some hardware can't handle this so this behavior is undefined
+ unless there is explicit working in some new spec saying the behavior is
+ defined. This is put as an issue because this is an EGL extension and
+ should not be controlling OpenGL functionality.
+
+ 4) Why is EGL_PROTECTED_CONTENT_EXT flag needed for EGLImages?
+
+ RESOLVED - A few reasons for having an explicit flag instead
+ of inferring the protected status from EGLImage sources -
+
+ 1) There are multiple EGL image extensions (EGL QCOM image, EGL
+ android image and so on) that accept buffers from external modules
+ instead of client resources or allow internally allocated memory.
+ For these use cases a protected attribute is useful, so we want to
+ keep this flag.
+ 2) An implementation might have a few non-standard setup steps that
+ need to be completed before a protected EGL image can be accessed.
+ This attribute along with a corresponding protected buffer will act
+ as a signal for the graphics driver to initiate/complete any such
+ steps.
+ 3) An application creating an image from an external resource may not
+ be aware of the fact that the resource is protected or may be unable
+ to access its content. The successful mapping of and access to a
+ protected buffer through an EGLImage will be predicated on the
+ buffer being protected, having a protected context and the intent of
+ the application to access that buffer by passing in EGL_TRUE for the
+ attribute EGL_PROTECTED_CONTENT_EXT.
+
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- -------- ----------------------------------------------
+ 1 09/24/14 Ramesh Initial draft.
+ 2 11/20/14 Rajeev Second draft.
+ 3 03/07/16 mribble Make EXT and clean up for release.
+ 4 03/10/16 mribble Cleanup.
+ 5 03/18/16 mribble Fix issues brought up by Khronos group.
+ 6 03/24/16 mribble Resolved some small issues found by Jan-Harald.
+ 7 03/25/16 mribble Fix createContext wording.
+ 8 03/30/16 mribble Added issue 5.
+ 9 04/05/16 mribble Added issue 6 and better defined eglImage case.
+ 10 04/08/16 rsmith - Added general section on protected content.
+ Protected context, surface and image creation now
+ refer to the general protected content principles.
+ - Added explicit definition of which stages are
+ protected, including allowing for the protected
+ state of a stage to be undefined.
+ - Formalised interactions with
+ EGL_EXT_protected_surface.
+ - Removed references to the GPU protected mode,
+ including issue 3.
+ 11 04/10/16 mribble Merge and cleanup.
+ 12 04/14/16 Jon Leech Cleanup formatting, reflow paragraphs and
+ quote additions consistently. Assign extension
+ number.
+ 13 12/06/21 Jeff Vigil Add queries for protected content attribute.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_surface.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_surface.txt
new file mode 100644
index 0000000..ec3665a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_protected_surface.txt
@@ -0,0 +1,230 @@
+Name
+
+ EXT_protected_surface
+
+Name Strings
+
+ EGL_EXT_protected_surface
+
+Contributors
+
+ Frido Garritsen, Vivante
+ Yanjun Zhang, Vivante
+ Pontus Lidman, Marvell
+ Jesse Hall, Google
+
+Contacts
+
+ Frido Garritsen (frido 'at' vivantecorp.com)
+ Yanjun Zhang (yzhang 'at' vivantecorp.com)
+
+Notice
+
+ Copyright 2013 Vivante Corporation
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Draft
+
+Version
+
+ #7, January 20, 2014
+
+Number
+
+ EGL Extension #67
+
+Dependencies
+
+ Requires EGL 1.4 and EGL_KHR_image_base extension
+
+ This extension is written against the wording of the EGL 1.4
+ Specification (12/04/2013), and EGL_KHR_image_base spec. version 6.
+
+Overview
+
+ This extension adds a new EGL surface attribute EGL_PROTECTED_CONTENT_EXT
+ to indicate if the content in the surface buffer is protected or not.
+ If surface attribute EGL_PROTECTED_CONTENT_EXT is EGL_TRUE, then the
+ surface content is only accessible to secure accesses. Any attempt to access
+ the buffer content non-securely will fail and result in undefined behavior
+ up to and including program termination. Also, any copy operations from the
+ protected surface to any non-protected surface by GPU are considered illegal.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New EGLSurface attribute name:
+
+ EGL_PROTECTED_CONTENT_EXT 0x32C0
+
+
+Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces)
+
+ Change the second paragraph in section 3.5 on p. 28 (describing eglCreateWindowSurface):
+
+ "Attributes that can be specified in attrib list include EGL_RENDER_BUFFER,
+ EGL_PROTECTED_CONTENT_EXT, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
+
+ Add the following paragraph in section 3.5 on p. 28 before "EGL_VG_COLORSPACE
+ specifies the color space used by OpenVG" (describing eglCreateWindowSurface
+ attrib_list):
+
+ "EGL_PROTECTED_CONTENT_EXT specifies the protection state of the window
+ surface. If its value is EGL_TRUE, then the surface content resides in a
+ secure memory region. Secure surfaces may be written to by client APIs
+ using any combination of protected and non-protected input data. EGL and
+ client APIs will not allow contents of protected surfaces to be accessed
+ by non-secure devices in the system (including non-secure software
+ running on the CPU). They will also not allow the contents to be copied
+ to non-protected surfaces. Copies within a protected surface, or from one
+ protected surface to another, are allowed. eglSwapBuffers is allowed for
+ protected surfaces if and only if the window system is able to maintain
+ the security of the buffer contents. Any disallowed operation will
+ fail and result in undefined behavior, up to and including program
+ termination. If EGL_PROTECTED_CONTENT_EXT is EGL_FALSE, then the surface
+ content can be accessed by secure or non-secure devices and can be copied
+ to any other surfaces. The definition of secure and non-secure access is
+ up to the implementation and is out of scope of this specification. The
+ default value of EGL_PROTECTED_CONTENT_EXT is EGL_FALSE."
+
+ Change the second paragraph in section 3.5 on p. 30 (describing
+ eglCreatePbufferSurface):
+
+ "Attributes that can be specified in attrib list include EGL_WIDTH,
+ EGL_HEIGHT, EGL_LARGEST_PBUFFER, EGL_TEXTURE_FORMAT, EGL_TEXTURE_TARGET,
+ EGL_MIPMAP_TEXTURE, EGL_PROTECTED_CONTENT_EXT, EGL_VG_COLORSPACE, and
+ EGL_VG_ALPHA_FORMAT."
+
+ Add following the second paragraph in section 3.5 on p. 31 (describing
+ eglCreatePbufferSurface attrib_list):
+
+ "EGL_PROTECTED_CONTENT_EXT specifies the protection state of the pbuffer
+ surface. If its value is EGL_TRUE, then the surface content resides in a
+ secure memory region. Secure surfaces may be written to by client APIs
+ using any combination of protected and non-protected input data. EGL and
+ client APIs will not allow contents of protected surfaces to be accessed
+ by non-secure devices in the system (including non-secure software
+ running on the CPU). They will also not allow the contents to be copied
+ to non-protected surfaces. Copies within a protected surface, or from one
+ protected surface to another, are allowed. Any disallowed operation will
+ fail and result in undefined behavior, up to and including program
+ termination. If EGL_PROTECTED_CONTENT_EXT is EGL_FALSE, then the surface
+ content can be accessed by secure or non-secure devices and can be copied
+ to any other surfaces. The definition of secure and non-secure access is
+ up to the implementation and is out of scope of this specification. The
+ default value of EGL_PROTECTED_CONTENT_EXT is EGL_FALSE."
+
+ Add to Table 3.5: Queryable surface attributes and types on p. 37
+
+ EGL_PROTECTED_CONTENT_EXT boolean Content protection state
+
+ Add following the second paragraph in section 3.6 on p. 39 (describing
+ eglQuerySurface):
+
+ "Querying EGL_PROTECTED_CONTENT_EXT returns the content protection state of
+ the surface. The protection state of window and pbuffer surfaces is specified
+ in eglCreateWindowSurface and eglCreatePbufferSurface. The protection state of
+ pixmap and client buffer (pbuffer) surfaces is always EGL_FALSE."
+
+ Add following after "if either draw or read are bound to contexts in another thread,
+ an EGL_BAD_ACCESS error is generated." in section 3.7.3 p46 (describing eglMakeCurrent
+ errors):
+
+ "If EGL_PROTECTED_CONTENT_EXT attributes of read is EGL_TRUE and
+ EGL_PROTECTED_CONTENT_EXT attributes of draw is EGL_FALSE, an
+ EGL_BAD_ACCESS error is generated."
+
+ Add following after "which must be a valid native pixmap handle." in section 3.9.2 on
+ p. 53 (describing eglCopyBuffers):
+
+ "If attribute EGL_PROTECTED_CONTENT_EXT of surface has value of EGL_TRUE, then
+ an EGL_BAD_ACCESS error is returned."
+
+
+Additions to EGL_KHR_image_base extension specification
+
+ Add to section 2.5.1 Table bbb:
+
+ +-----------------------------+-------------------------+---------------+
+ | Attribute | Description | Default Value |
+ +-----------------------------+-------------------------+---------------+
+ | EGL_NONE | Marks the end of the | N/A |
+ | | attribute-value list | |
+ | EGL_IMAGE_PRESERVED_KHR | Whether to preserve | EGL_FALSE |
+ | | pixel data | |
+ | EGL_PROTECTED_CONTENT_EXT | Content protection | EGL_FALSE |
+ | | state | |
+ +-----------------------------+-------------------------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
+
+ Add the following paragraph to section 2.5.1 before "Errors" (describing
+ eglCreateImageKHR):
+
+ "If the value of attribute EGL_PROTECTED_CONTENT_EXT is EGL_TRUE, then
+ image content is only accessible by secure devices in the system. A
+ complete definition of secure device is implementation-specific, but at
+ minimum a secure device must not expose the contents of a protected image
+ to non-secure devices or allow contents to be copied to non-protected
+ regions of memory. If an EGL client API cannot make such guarantees,
+ attempts to create an EGLImage sibling within that client API will fail
+ with an API-specific error.
+
+ If the value of attribute EGL_PROTECTED_CONTENT_EXT is EGL_FALSE, then the
+ surface content can be accessed by secure or non-secure devices and can be
+ copied to any other surfaces."
+
+Issues
+
+ 1. Should the spec define the behavior of secure and non-secure access?
+
+ PROPOSED: No. Different CPU and GPU architectures have different secure access
+ implementations. The behavior of secure access violation is also different. Some
+ architectures will take a CPU exeception. On other architectures, reads will get
+ zeroes and writes will have no effect. This includes DMA transactions. So it is
+ better to leave the defination of illegal operation behavior out of this
+ specification.
+
+ 2. Should the spec enumerate the legal and illegal operations in client APIs
+ such as OpenGL ES?
+
+ PROPOSED: No. Enumerating these is possible, but is likely to get out of date
+ as new extensions and client API versions are introduced. Better to state the
+ principles that determine whether an operation is legal or illegal. If a version
+ of this extension is promoted to KHR or core status, enumerating the legal
+ operations because there will be a greater expectation that future extensions
+ will consider interactions. For OpenGL ES 3.0, a non-normative list of examples
+ would be:
+ * glReadPixels is illegal when the READ framebuffer is protected,
+ * glCopyTexImage2D is illegal when the READ framebuffer is protected,
+ * glCopyTexSubImage2D is illegal when the READ framebuffer is protected, unless
+ the target texture is a protected pbuffer,
+ * glBlitFramebuffer is illegal if the READ framebuffer is protected and the
+ DRAW framebuffer is not protected.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- -------- -------------------------------------------------
+ 7 01/20/14 Jesse Reword PROTECTED_CONTENT descriptions to be more specific
+ about legality of client API operations. Add issue #2.
+ 6 01/14/14 Yanjun Change the extension from vendor specific to EXT. Add
+ EGL_BAD_ACCESS error to eglMakeCurrent, eglCopyBuffers.
+ 5 01/13/14 Jesse Define illegal operation behavior more broadly.
+ 4 01/10/14 Pontus Update description of illegal operation behavior in
+ terms of secure memory region and secure access.
+ 3 01/03/14 Yanjun Define the GPU and CPU behavior for illegal operations.
+ 2 12/13/13 Yanjun Prohibit GPU illegal copy from the protected surface to
+ non-protected surface.
+ 1 12/11/13 Yanjun Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt
new file mode 100644
index 0000000..61f3b0e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt
@@ -0,0 +1,248 @@
+Name
+
+ EXT_stream_consumer_egloutput
+
+Name Strings
+
+ EGL_EXT_stream_consumer_egloutput
+
+Contributors
+
+ Daniel Kartch
+ James Jones
+ Christopher James Halse Rogers
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 7 - December 28th, 2015
+
+Number
+
+ EGL Extension #81
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream.
+ Requires EGL_EXT_output_base.
+
+Overview
+
+ Increasingly, EGL and its client APIs are being used in place of
+ "native" rendering APIs to implement the basic graphics
+ functionality of native windowing systems. This creates demand
+ for a method to initialize EGL displays and surfaces directly on
+ top of native GPU or device objects rather than native window
+ system objects. The mechanics of enumerating the underlying
+ native devices and constructing EGL displays and surfaces from
+ them have been solved in various platform and implementation-
+ specific ways. The EGL device family of extensions offers a
+ standardized framework for bootstrapping EGL without the use of
+ any underlying "native" APIs or functionality.
+
+ This extension describes how to bind EGLOutputLayerEXTs as stream
+ consumers to send rendering directly to a display device without an
+ intervening window system.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglStreamConsumerOutputEXT(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLOutputLayerEXT layer);
+
+New Tokens
+
+ None
+
+Replace section "3.10.2.1 No way to connect consumer to EGLStream" in
+the EGL_KHR_stream extension with:
+
+ 3.10.2.1 EGLOutputLayerEXT consumer
+
+ Call
+
+ EGLBoolean eglStreamConsumerOutputEXT(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLOutputLayerEXT layer);
+
+ to connect <output> as the consumer of <stream>.
+
+ On failure EGL_FALSE is returned and an error is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStreamKHR created for <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_CREATED_KHR.
+
+ - EGL_BAD_OUTPUT_LAYER_EXT is generated if <layer> is not a
+ valid EGLOutputLayerEXT created for <dpy>.
+
+ On success, <layer> is bound to <stream>, <stream> is placed in the
+ EGL_STREAM_STATE_CONNECTING_KHR state, and EGL_TRUE is returned.
+ Initially, no changes occur to the image displayed on <layer>. When
+ the <stream> enters state EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR,
+ <layer> will begin displaying frames, without further action
+ required on the application's part, as they become available, taking
+ into account any timestamps, swap intervals, or other limitations
+ imposed by the stream or producer attributes.
+
+ Modifying the output layer's display mode is outside the scope of
+ EGL. If the producer does not automatically adjust it's dimensions
+ to match the consumer, then the caller is responsible for ensuring
+ that the producer's frame size and the display mode are compatible
+ before the first frame is placed in the stream. If these are not
+ compatible, the behavior is implementation dependent, but may not
+ hang or terminate. Among other possible behaviors, the
+ implementation may scale or letterbox the frames, post a blank image
+ to the display, or discard the frames without posting.
+
+ Many display mode setting APIs have a mechanism that restricts
+ which of their clients can modify output attributes. Since
+ EGLOutput stream consumers will need to modify output attributes,
+ they require access to a display mode setting API handle with the
+ appropriate capabilities. If the application fails to provide
+ access to such permissions or privileged native objects when creating
+ the EGLDisplay associated with an output stream consumer and EGL is
+ not able to acquire them, the behavior of the stream consumer will be
+ undefined. Similarly, if the application or operating system revokes
+ the output modification permissions provided to the EGLDisplay, or
+ revokes permissions from the privileged native objects provided to
+ the EGLDisplay, future behavior of the stream consumer is undefined.
+
+ If <layer> is rebound to a different stream by a subsequent call
+ to eglStreamConumerOutputEXT, then <stream> will be placed into the
+ EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+Issues
+
+ 1. What happens to the display if the stream is destroyed while
+ still connected?
+
+ RESOLVED: The EGLOutputLayer will maintain a reference to the
+ last frame consumed from the stream until a new frame is
+ received (through connection of a new stream or some interface
+ defined by another extension) or until the EGLOutputLayer is
+ destroyed. Until one of these occurs, the output will ensure
+ that memory containing the frame remains valid, but will do no
+ further reprogramming of the display layer state. In the event
+ the EGLOutputLayer is destroyed, the reference to the frame is
+ released, and random/invalid images may subsequently be
+ displayed if the application does not take separate action to
+ reprogram or disable the display. This behavior should
+ probably be defined in the EGL_EXT_output_base extension and
+ be shared regardless of the means by which the displayed image
+ was posted.
+
+ 2. What happens to the stream if the display output is flipped to a
+ different image by a mechanism outside EGL?
+
+ RESOLVED: Using native display APIs to directly change the
+ visible framebuffer while an EGLStream is bound to an
+ EGLOutputLayer has undefined results which depend on the
+ implementation, the display capabilities, and the
+ compatibility of the competing framebuffer sizes and formats.
+ A partial list of possible outcomes includes one interface
+ overriding the other, the visible image alternating between
+ the two frames, or the visible image becoming corrupted or
+ displaying random memory.
+
+ 3. What happens if the display mode settings are not compatible
+ with the size and/or format of the incoming frames?
+
+ RESOLVED: The behavior is implementation and device dependent.
+ The display may not terminate or hang, but otherwise may modify
+ or ignore the incoming frames. Additional extensions can be
+ defined if greater control of this behavior is desired.
+
+ 4. How can changes to the display mode settings be synchronized
+ with changes in the size/format of frames generated by the
+ producer?
+
+ RESOLVED: The base specification will assume that the
+ producer's frame size and the output layer's display mode are
+ established at initialization time and do not change for the
+ life of the stream. The ability to modify these states and
+ synchronize such modifications must be provided by additional
+ extensions.
+
+ 5. The EGL_KHR_stream_producer_eglsurface extension, which is
+ likely to be used as a producer for streams directed to outputs,
+ explicitly ignores eglSwapInterval. But a swap interval is
+ desirable when directing output to a display screen. How can
+ this functionality be provided?
+
+ RESOLVED: EGL_SWAP_INTERVAL_EXT added as an attribute to output
+ layers in the EGL_EXT_output_base specification.
+
+ 6. How does EGL acquire the necessary capabilities to modify
+ display attributes from the application?
+
+ RESOLVED: The application provides EGL with the necessary
+ permissions or native object handles when creating its EGLDisplay.
+
+ 7. What is the behavior of EGLOutput stream consumers when EGL does
+ not have the necessary permissions to modify output attributes?
+
+ RESOLVED: The behavior is undefined. Other options would be to
+ block consumption of frames indefinitely until permissions are
+ acquired via unspecified or native mechanisms, or to return
+ frames to the producer immediately when consumption fails due to
+ lack of permissions. However, both of these options may rely on
+ assumptions about the behavior of the underlying mode setting
+ APIs. Future extensions may refined the behavior of streams in
+ this case.
+
+Revision History:
+
+ #7 (December 28th, 2015) James Jones
+ - Added issues 6 and 7.
+ - Added language to document the resolution of issues 6 and 7.
+
+ #6 (August 22nd, 2014) James Jones
+ - Marked complete.
+ - Marked remaining unresolved issues resolved.
+ - Added an "Extension Type" section.
+ - Listed Daniel as the contact.
+
+ #5 (June 5th, 2014) Daniel Kartch
+ - Added resolution for issues 3 and 4 and updated description
+ accordingly.
+
+ #4 (May 28th, 2014) Daniel Kartch
+ - Added Issue 5 and its resolution.
+
+ #3 (January 17th, 2014) Daniel Kartch
+ - Updated issues section with some proposed solutions and new
+ issues.
+
+ #2 (November 13th, 2013) Daniel Kartch
+ - Replaced EGLOutputEXT with EGLOutputLayerEXT, as per changes
+ to EXT_output_base.
+ - Updated possible error states to reflect requirement that
+ output handles are now associated with a particular
+ EGLDisplay.
+
+ #1 (October 28th, 2013) Daniel Kartch
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt
new file mode 100644
index 0000000..50764b5
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt
@@ -0,0 +1,136 @@
+Name
+
+ EXT_surface_CTA861_3_metadata
+
+Name Strings
+
+ EGL_EXT_surface_CTA861_3_metadata
+
+Contact
+
+ Courtney Goeltzenleuchter (courtneygo 'at' google.com)
+
+Contributors
+
+ James Jones
+ Weiwan Liu
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 5 - Nov 29, 2016
+
+Number
+
+ EGL Extension #117
+
+Dependencies
+
+ This extension requires EGL 1.5 and EGL_EXT_surface_SMPTE2086_metadata.
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+Overview
+
+ This extension adds additional EGL surface attributes for the metadata
+ defined by the CTA (Consumer Technology Association) 861.3 standard.
+ This metadata, in addition to the SMPTE 2086 metadata, is used to define the
+ color volume of the mastering display as well as the content (CTA-861.3),
+ The mastering display is the display where creative work is done and creative
+ intent is established. To preserve such creative intent as much as possible
+ and achieve consistent color reproduction on different viewing displays,
+ it is useful for the display pipeline to know the color volume of the
+ original mastering display where content is created or tuned. This avoids
+ performing unnecessary mapping of colors that are not displayable on the
+ original mastering display.
+
+ This extension adds the ability to pass the CTA-861.3 metadata via EGL,
+ from which the color volume can be derived. While the general purpose of the
+ metadata is to assist in the transformation between different color volumes
+ of different displays and help achieve better color reproduction, it is not
+ in the scope of this extension to define how exactly the metadata should be
+ used in such a process. It is up to the implementation to determine how to
+ make use of the metadata.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute by eglSurfaceAttrib and eglQuerySurface:
+
+ EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+ EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
+
+Additions to Chapter "3.5.6 Surface Attributes" of the EGL 1.5 Specification
+
+ Add the following paragraph before the "Errors" section on page 43,
+
+ If attribute is EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT or EGL_CTA861_3_-
+ MAX_FRAME_AVERAGE_LEVEL_EXT, then value indicates the corresponding
+ maximum content light level and maximum frame average level.
+ The unit of value is 1 nit (candela per square meter). The
+ floating-point luminance values should be multiplied by
+ EGL_METADATA_SCALING, a constant scaling factor of 50000, before being
+ passed into eglSurfaceAttrib as integers.
+
+ Exactly how the color volume information is used to assist the color
+ reproduction process is implementation dependant.
+
+ The initial values of EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT and
+ EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT are EGL_DONT_CARE, which causes the
+ hints to be ignored. If value is not in the implementation's supported
+ range for attribute, a EGL_INVALID_VALUE error is generated, and some or
+ all of the metadata fields are ignored.
+
+ Change the original footnote 12 at the end of section "3.5.6 Surface
+ Attributes" on page 45 to,
+
+ [13] EGL_DISPLAY_SCALING (10000) and EGL_METADATA_SCALING_EXT (50000)
+ are used where EGL needs to take or return floating-point attribute
+ values, which would normally be smaller than 1, as integers while still
+ retaining sufficient precision to be meaningful.
+
+ Addition to Table 3.5 "Queryable surface attributes and types",
+
+ Attribute Type
+ ------------------------------------------------
+ EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT integer
+ EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT integer
+
+ Description
+ --------------------------------------------------------------------------------------
+ Maximum content light level in nit multiplied by EGL_METADATA_SCALING_EXT
+ Maximum frame average light level in nit multiplied by EGL_METADATA_SCALING_EXT
+
+ Add the following paragraph at the end of section "3.5.6 Surface Attributes"
+ on page 45,
+
+ Querying EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT EGL_CTA861_3_MAX_-
+ FRAME_AVERAGE_LEVEL_EXT returns respectively the maximum content light level
+ and maximum frame average level respectively. The values returned are
+ in units of 1 nit (candela per square meter), multiplied by the constant
+ value EGL_METADATA_SCALING_EXT (50000). The value of EGL_CTA861_3_MAX_-
+ CONTENT_LIGHT_LEVEL_EXT and EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT can
+ be set via eglSurfaceAttrib as described above.
+
+Errors
+
+ Described in the body text above.
+
+Issues
+
+Revision History
+
+ Version 1, 2017/02/28
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt
new file mode 100644
index 0000000..2fa0b2e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt
@@ -0,0 +1,247 @@
+Name
+
+ EXT_surface_SMPTE2086_metadata
+
+Name Strings
+
+ EGL_EXT_surface_SMPTE2086_metadata
+
+Contact
+
+ Weiwan Liu (weiwliu 'at' nvidia.com)
+
+Contributors
+
+ Tom Cooksey
+ Courtney Goeltzenleuchter
+ Mathias Heyer
+ Lauri Hyvarinen
+ James Jones
+ Daniel Koch
+ Jeff Leger
+ Sandeep Shinde
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 8 - Oct 16, 2017
+
+Number
+
+ EGL Extension #109
+
+Dependencies
+
+ This extension requires EGL 1.4.
+
+ This extension is written against the wording of the EGL 1.5 specification
+ (August 27, 2014).
+
+Overview
+
+ This extension adds a new set of EGL surface attributes for the metadata
+ defined by the SMPTE (the Society of Motion Picture and Television
+ Engineers) ST 2086 standard. The SMPTE 2086 metadata includes the color
+ primaries, white point and luminance range of the mastering display, which
+ all together define the color volume that contains all the possible colors
+ the mastering display can produce. The mastering display is the display
+ where creative work is done and creative intent is established. To preserve
+ such creative intent as much as possible and achieve consistent color
+ reproduction on different viewing displays, it is useful for the display
+ pipeline to know the color volume of the original mastering display where
+ content is created or tuned. This avoids performing unnecessary mapping of
+ colors that are not displayable on the original mastering display.
+
+ This extension adds the ability to pass the SMPTE 2086 metadata via EGL,
+ from which the color volume can be derived. While the general purpose of the
+ metadata is to assist in the transformation between different color volumes
+ of different displays and help achieve better color reproduction, it is not
+ in the scope of this extension to define how exactly the metadata should be
+ used in such a process. It is up to the implementation to determine how to
+ make use of the metadata.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute by eglSurfaceAttrib and eglQuerySurface:
+
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+ EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+ EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+ EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+ EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+
+Additions to Chapter "3.5.6 Surface Attributes" of the EGL 1.5 Specification
+
+ Add the following paragraph before the "Errors" section on page 43,
+
+ If attribute is EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, EGL_SMPTE2086_-
+ DISPLAY_PRIMARY_RY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, EGL_-
+ SMPTE2086_DISPLAY_PRIMARY_GY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT
+ or EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, then value indicates the
+ corresponding xy chromaticity coordinate[12] of the mastering display's
+ red, green or blue color primary, as configured for the mastering
+ process. The floating-point display primary coordinates should be
+ multiplied by EGL_METADATA_SCALING_EXT (50000)[13], before being passed
+ into eglSurfaceAttrib as integers.
+
+ If attribute is EGL_SMPTE2086_WHITE_POINT_X_EXT or EGL_SMPTE2086_WHITE_-
+ POINT_Y_EXT, then value indicates the corresponding xy chromaticity
+ coordinate[12] of the mastering display's white point, as configured for
+ the mastering process. The floating-point white point chromaticity
+ coordinates should be multiplied by EGL_METADATA_SCALING_EXT (50000),
+ before being passed into eglSurfaceAttrib as integers.
+
+ If attribute is EGL_SMPTE2086_MAX_LUMINANCE_EXT or EGL_SMPTE2086_MIN_-
+ LUMINANCE_EXT, then value indicates the maximum or minimum display
+ luminance of the mastering display, as configured for the mastering
+ process. The unit of value is 1 nit (candela per square meter). The
+ floating-point luminance values should be multiplied by
+ EGL_METADATA_SCALING_EXT, a constant scaling factor of 50000, before
+ being passed into eglSurfaceAttrib as integers.
+
+ By defining the mastering display's color volume through color
+ primaries, white point, and luminance range, applications give EGL
+ and the underlying display pipeline hints as to how to reproduce colors
+ more closely to the original content when created on the mastering
+ display. Exactly how the color volume information is used to assist the
+ color reproduction process is implementation dependant.
+
+ The initial values of EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, EGL_-
+ SMPTE2086_DISPLAY_PRIMARY_RY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT,
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_-
+ EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, EGL_SMPTE2086_WHITE_POINT_X_-
+ EXT, EGL_SMPTE2086_WHITE_POINT_Y_EXT, EGL_SMPTE2086_MAX_LUMINANCE_EXT
+ and EGL_SMPTE2086_MIN_LUMINANCE_EXT are EGL_DONT_CARE, which causes the
+ hints to be ignored. If value is not in the implementation's supported
+ range for attribute, a EGL_BAD_PARAMETER error is generated, and some or
+ all of the metadata fields are ignored.
+
+ Add the following footnote at the end of page 43, and increment all the
+ subsequent footnote numbers in Chapter 3,
+
+ [12] Chromaticity coordinates x and y are as specified in CIE
+ 15:2004 "Calculation of chromaticity coordinates" (Section 7.3) and are
+ limited to between 0 and 1 for real colors for the mastering display.
+
+ Change the original footnote 12 at the end of section "3.5.6 Surface
+ Attributes" on page 45 to,
+
+ [13] EGL_DISPLAY_SCALING (10000) and EGL_METADATA_SCALING_EXT (50000)
+ are used where EGL needs to take or return floating-point attribute
+ values, which would normally be smaller than 1, as integers while still
+ retaining sufficient precision to be meaningful.
+
+ Addition to Table 3.5 "Queryable surface attributes and types",
+
+ Attribute Type
+ ------------------------------------------------
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT integer
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT integer
+ EGL_SMPTE2086_WHITE_POINT_X_EXT integer
+ EGL_SMPTE2086_WHITE_POINT_Y_EXT integer
+ EGL_SMPTE2086_MAX_LUMINANCE_EXT integer
+ EGL_SMPTE2086_MIN_LUMINANCE_EXT integer
+
+ Description
+ ------------------------------------------------------------------------------------------
+ x chromaticity coordinate for red display primary multiplied by EGL_METADATA_SCALING_EXT
+ y chromaticity coordinate for red display primary multiplied by EGL_METADATA_SCALING_EXT
+ x chromaticity coordinate for green display primary multiplied by EGL_METADATA_SCALING_EXT
+ y chromaticity coordinate for green display primary multiplied by EGL_METADATA_SCALING_EXT
+ x chromaticity coordinate for blue display primary multiplied by EGL_METADATA_SCALING_EXT
+ y chromaticity coordinate for blue display primary multiplied by EGL_METADATA_SCALING_EXT
+ x chromaticity coordinate for white point multiplied by EGL_METADATA_SCALING_EXT
+ y chromaticity coordinate for white point multiplied by EGL_METADATA_SCALING_EXT
+ Maximum luminance in nit multiplied by EGL_METADATA_SCALING_EXT
+ Minimum luminance in nit multiplied by EGL_METADATA_SCALING_EXT
+
+ Add the following paragraph at the end of section "3.5.6 Surface Attributes"
+ on page 45,
+
+ Querying EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, EGL_SMPTE2086_DISPLAY_-
+ PRIMARY_RY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, EGL_SMPTE2086_-
+ DISPLAY_PRIMARY_GY_EXT, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT or EGL_-
+ SMPTE2086_DISPLAY_PRIMARY_BY_EXT returns respectively the xy
+ chromaticity coordinate of the mastering display's red, green or blue
+ color primary, multiplied by the constant value EGL_METADATA_SCALING_EXT
+ (50000). The display primary coordinates can be set via eglSurfaceAttrib
+ as described above.
+
+ Querying EGL_SMPTE2086_WHITE_POINT_X_EXT, or EGL_SMPTE2086_WHITE_POINT_-
+ Y_EXT returns respectively the xy chromaticity coordinate of the
+ mastering display's white point, multiplied by the constant value EGL_-
+ METADATA_SCALING (50000). The white point coordinates can be set via
+ eglSurfaceAttrib as described above.
+
+ Querying EGL_SMPTE2086_MAX_LUMINANCE_EXT or EGL_SMPTE2086_MIN_-
+ LUMINANCE_EXT returns respectively the maximum and minimum display
+ luminance of the mastering display. The values returned are in units of
+ 1 nit (candela per square meter), multiplied by the constant value EGL_-
+ METADATA_SCALING (50000). The value of EGL_SMPTE2086_MAX_LUMINANCE_EXT
+ and EGL_SMPTE2086_MIN_LUMINANCE_EXT can be set via eglSurfaceAttrib as
+ described above.
+
+Errors
+
+ Described in the body text above.
+
+Issues
+
+ 1. Should this extension define a valid data range for each metadata field?
+
+ RESOLVED: No. It is not in the scope of this extension to define how the
+ metadata hints should be used in the display pipeline and, as a result,
+ what the valid data ranges are for the metadata fields. It is
+ implementation dependant, but related standards, such as SMPTE ST 2086,
+ can be used as reference. As described in the body, implemetations may
+ generate a EGL_BAD_PARAMTER error to notify applications that the input
+ metadata values are invalid or not supported.
+
+Revision History
+
+ Version 1, 2016/04/22
+ - Initial draft
+
+ Version 2, 2016/05/25
+ - Rename to EXT and introduce a new scaling factor
+
+ Version 3, 2016/10/19
+ - Add an error and revise issue 1
+
+ Version 4, 2016/11/22
+ - Change status to complete
+
+ Version 5, 2016/11/29
+ - Add token assigments
+
+ Version 6, 2017/02/28
+ - Add 'EXT' suffix to 'EGL_METADATA_SCALING'
+
+ Version 7, 2017/10/13
+ - Rename EGL_INVALID_VALUE (which doesn't exist) to EGL_FALSE
+
+ Version 8, 2017/10/16
+ - Fix v7 change to use EGL_BAD_PARAMETER as the error code
+ generated vs. EGL_FALSE which is the expected return value of
+ the function.
+
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_compression.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_compression.txt
new file mode 100644
index 0000000..6610017
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_surface_compression.txt
@@ -0,0 +1,289 @@
+Name
+
+ EXT_surface_compression
+
+Name Strings
+
+ EGL_EXT_surface_compression
+
+Contributors
+
+ Jan-Harald Fredriksen, Arm
+ Lisa Wu, Arm
+ George Liu, Arm
+ Laurie Hedge, Imagination Technologies
+
+Contact
+
+ Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete
+
+Version
+
+ Version 1 - November 15, 2021
+
+Number
+
+ EGL Extension #147
+
+Dependencies
+
+ These extensions are written against the wording of the EGL 1.5
+ specification (August 27, 2014).
+
+ This extension interacts with EGL_EXT_yuv_surface.
+
+Overview
+
+ Applications may wish to take advantage of framebuffer compression. Some
+ platforms may support framebuffer compression at fixed bitrates. Such
+ compression algorithms generally produce results that are visually lossless,
+ but the results are typically not bit exact when compared to a non-compressed
+ result.
+
+ This extension enables applications to opt-in to fixed-rate compression
+ for EGL window surfaces.
+
+ Compression may not be supported for all framebuffer formats. It can still
+ be requested for all formats and applications can query what level of compression
+ was actually enabled.
+
+New Procedures and Functions
+
+ EGLBoolean eglQuerySupportedCompressionRatesEXT(
+ EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list,
+ EGLint *rates, EGLint rate_size, EGLint *num_rates);
+
+New Tokens
+
+ New attributes accepted by the <attrib_list> argument of
+ eglCreatePlatformWindowSurface and eglCreateWindowSurface:
+ EGL_SURFACE_COMPRESSION_EXT 0x34B0
+
+ [Only if EGL_EXT_yuv_surface is supported]
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
+
+ Accepted as attribute values for EGL_SURFACE_COMPRESSION_EXT by
+ eglCreatePlatformWindowSurface and eglCreateWindowSurface:
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
+
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
+
+Modifications to the EGL 1.5 Specification
+
+ Modify section 3.5.1 "Creating On-Screen Rendering Surfaces:
+
+ Add EGL_SURFACE_COMPRESSION_EXT to the list of attributes that can
+ be specified in <attrib_list> for eglCreatePlatformWindowSurface.
+
+ Add the following paragraph:
+
+ EGL_SURFACE_COMPRESSION_EXT specifies the fixed-rate compression that may
+ be enabled for rendering to the window.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT, then fixed-rate
+ compression is disabled.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT,
+ then the implementation may enable compression at a default,
+ implementation-defined, rate.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 1 bit and less than 2 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 2 bits and less than 3 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 3 bits and less than 4 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 4 bits and less than 5 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 5 bits and less than 6 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 6 bits and less than 7 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 7 bits and less than 8 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 8 bits and less than 9 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 9 bits and less than 10 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 10 bits and less than 11 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 11 bits and less than 12 bits per component.
+ If its value is EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT, then the
+ implementation may enable fixed-rate compression with a bitrate of at
+ least 12 bits per component.
+
+ For pixel formats with different number of bits per component, the
+ specified fixed-rate compression rate applies to the component with
+ the highest number of bits.
+
+ The default value of EGL_SURFACE_COMPRESSION_EXT is
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT.
+
+ [Only if EGL_EXT_yuv_surface is supported]
+
+ If _config_ describes a surface with multiple planes (the
+ value of the EGL_YUV_NUMBER_OF_PLANES_EXT attribute is larger than one),
+ then the fixed-rate compression rate can be specified independently for
+ the each plane.
+ In this case, EGL_SURFACE_COMPRESSION_EXT specifies the fixed-rate
+ compression that may be enabled for rendering to plane 0,
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT specifies the fixed-rate
+ compression that may be enabled for rendering to plane 1, and
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT specifies the fixed-rate compression
+ that may be enabled for rendering to plane 2.
+ The supported values of EGL_SURFACE_COMPRESSION_PLANE1_EXT and
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT are the same as for
+ EGL_SURFACE_COMPRESSION_EXT.
+
+ If _config_ has more than one plane and the
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT attribute is not specified,
+ then the value of EGL_SURFACE_COMPRESSION_EXT is used for all planes.
+ If _config_ has more than two planes and the
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT attribute is not specified,
+ then the value of EGL_SURFACE_COMPRESSION_PLANE1_EXT is also used
+ for plane 2.
+
+ The default value of EGL_SURFACE_COMPRESSION_PLANE1_EXT and
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT is EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT.
+
+ Modify section 3.5.6 "Surface Attributes"
+
+ Add entries to Table 3.5 "Queryable surface attributes and types":
+
+ EGL_SURFACE_COMPRESSION_EXT enum Fixed-rate compression
+
+ [Only if EGL_EXT_yuv_surface is supported]
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT enum Fixed-rate compression for plane 1
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT enum Fixed-rate compression for plane 2
+
+ Add the following paragraph:
+
+ Querying EGL_SURFACE_COMPRESSION_EXT returns the actual fixed-rate
+ compression applied to a surface. For YUV surfaces, the value applied to
+ the luma plane is returned. This value may be different to the one
+ requested when the surface was created.
+ For pbuffer and pixmap surfaces, the contents of <value> are not modified."
+
+ [Only if EGL_EXT_yuv_surface is supported]
+ Querying EGL_SURFACE_COMPRESSION_PLANE1_EXT returns the actual
+ fixed-rate compression applied to plane 1 of a YUV surface.
+ Querying EGL_SURFACE_COMPRESSION_PLANE2_EXT returns the actual
+ fixed-rate compression applied to plane 2 of a YUV surface.
+ These values may be different to the one requested when the surface was created.
+ For pbuffer and pixmap surfaces, the contents of <value> are not modified."
+
+ To get the list of all fixed-rate compression rates that are available on
+ a specified display and EGLConfig, call
+
+ EGLBoolean eglQuerySupportedCompressionRatesEXT(
+ EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list,
+ EGLint *rates, EGLint rate_size, EGLint *num_rates);
+
+ <attrib_list> specifies a list of attributes that will be provided when a surface is created with
+ this combination of display and EGLConfig. The accepted attributes are the same as for
+ eglCreatePlatformWindowSurface.
+ <rates> is a pointer to a buffer containing <rate_size> elements. On success, EGL_TRUE is
+ returned. The number of rates is returned in <num_rates>, and elements 0 through <num_rates>-1 of
+ <rates> are filled in with the available compression rates.
+ No more than <rate_size> compression rates will be returned even if more are available
+ on the specified display and config. However, if eglQuerySupportedCompressionRatesEXT is called with
+ <rates> = NULL, then no rates are returned, but the total number of rates available will be returned
+ in <num_rates>.
+ The possible values returned in <rates> are the attribute values accepted for
+ EGL_SURFACE_COMPRESSION_EXT by eglCreatePlatformWindowSurface and eglCreateWindowSurface, except
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT and EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT.
+
+Errors
+
+ [Only if EGL_EXT_yuv_surface is supported]
+ Add to the error section of eglCreatePlatformWindowSurface:
+
+ If the EGL_SURFACE_COMPRESSION_PLANE1_EXT attribute is specified and
+ _config_ does not describe a surface with at least 2 planes (the
+ EGL_YUV_NUMBER_OF_PLANES_EXT attribute is not greater than or
+ equal to 2), an EGL_BAD_MATCH error is generated.
+
+ If the EGL_SURFACE_COMPRESSION_PLANE2_EXT attribute is specified and
+ _config_ does not describe a surface with at least 3 planes (the
+ EGL_YUV_NUMBER_OF_PLANES_EXT attribute is not greater than or
+ equal to 3), an EGL_BAD_MATCH error is generated.
+
+ Add to the section describing eglQuerySupportedCompressionRatesEXT:
+
+ * On failure, EGL_FALSE is returned.
+ * An EGL_NOT_INITIALIZED error is generated if EGL is not initialized on <dpy>.
+ * An EGL_BAD_PARAMETER error is generated if <num_rates> is NULL.
+
+Issues
+
+ 1. Should fixed-rate compression be supported for pixmap or pbuffer
+ surfaces?
+
+ No, no use-cases have been identified for this.
+
+ 2. What is the result of querying EGL_SURFACE_COMPRESSION_EXT if
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT was requested?
+
+ Resolved.
+ The result will be the specific compression ratio chosen by the
+ implementation, or EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT if
+ no fixed-rate compression was applied.
+
+ 3. Should we expose different compressions rates per plane in this extension?
+
+ Yes.
+
+ 4. How can an application query the set of supported compression rates?
+
+ Resolved. Option B.
+
+ Two options were considered.
+
+ Option A:
+ Reuse eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+
+ This is not ideal because:
+ - the compression modes are currently tied to the surface, not the EGLConfig
+ - we don't want this to affect EGLConfig selection etc.
+ - this query can only return a single value, so you'd need to query each of the
+ 12 bit rates separately.
+
+ Option B:
+ Add a new query, specifically for the compression rates. This addresses the concerns
+ with Option A, and is very similar to the mechanism used for the OpenGL ES API. Main
+ downside is that it adds additional functions to the API.
+
+Revision History
+
+ Version 1, 2021/11/15
+ - Internal revisions
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt
new file mode 100644
index 0000000..7a1f7fc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt
@@ -0,0 +1,343 @@
+Name
+
+ EXT_swap_buffers_with_damage
+
+Name Strings
+
+ EGL_EXT_swap_buffers_with_damage
+
+IP Status
+
+ No known IP claims.
+
+Contributors
+
+ Robert Bragg
+ Tapani Pälli
+ Kristian Høgsberg
+ Benjamin Franzke
+ Ian Stewart
+ James Jones
+
+Contacts
+
+ Robert Bragg, Intel (robert.bragg 'at' intel.com)
+
+Status
+
+ Published
+
+Version
+
+ Version 11, February 20, 2020
+
+Number
+
+ EGL Extension #55
+
+Dependencies
+
+ Requires EGL 1.4
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension provides a means to issue a swap buffers request to
+ display the contents of the current back buffer and also specify a
+ list of damage rectangles that can be passed to a system
+ compositor so it can minimize how much it has to recompose.
+
+ This should be used in situations where an application is only
+ animating a small portion of a surface since it enables the
+ compositor to avoid wasting time recomposing parts of the surface
+ that haven't changed.
+
+New Procedures and Functions
+
+ EGLBoolean eglSwapBuffersWithDamageEXT (
+ EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *rects,
+ EGLint n_rects);
+
+New Tokens
+
+ None
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add the following text to subsection 3.9.1 titled "Posting to a
+ Window" after the description of eglSwapBuffers.
+
+ As an alternative to eglSwapBuffers use:
+
+ EGLBoolean eglSwapBuffersWithDamageEXT (
+ EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *rects,
+ EGLint n_rects);
+
+ to do the same thing as eglSwapBuffers but additionally report
+ a list of rectangles that define the region that has truly
+ changed since the last frame. To be clear; the entire contents
+ of the back buffer will still be swapped to the front so
+ applications using this API must still ensure that the entire
+ back buffer is consistent. The rectangles are only a hint for
+ the system compositor so it can avoid recomposing parts of the
+ surface that haven't really changed.
+ <rects> points to a list of integers in groups of four that
+ each describe a rectangle in screen coordinates in this
+ layout: {x, y, width, height}. The rectangles are specified
+ relative to the bottom-left of the surface and the x and y
+ components of each rectangle specify the bottom-left position
+ of that rectangle. <n_rects> determines how many groups of 4
+ integers can be read from <rects>. It is not necessary to
+ avoid overlaps of the specified rectangles.
+ If <n_rects> is 0 then <rects> is ignored and the entire
+ surface is implicitly damaged and the behaviour is equivalent
+ to calling eglSwapBuffers.
+ The error conditions checked for are the same as for the
+ eglSwapBuffers api.
+
+ Modify the first paragraph of Section 3.9.1 titled "Native Window
+ Resizing"
+
+ "If the native window corresponding to <surface> has been
+ resized prior to the swap, <surface> must be resized to match.
+ <surface> will normally be resized by the EGL implementation
+ at the time the native window is resized. If the
+ implementation cannot do this transparently to the client,
+ then eglSwapBuffers and eglSwapBuffersWithDamageEXT must
+ detect the change and resize surface prior to copying its
+ pixels to the native window. In this case the meaningfulness
+ of any damage rectangles forwarded by
+ eglSwapBuffersWithDamageEXT to the native window system is
+ undefined."
+
+ Modify the following sentences in Section 3.9.3, page 51 (Posting
+ Semantics)
+
+ Paragraph 2, first sentence:
+
+ "If <dpy> and <surface> are the display and surface for the
+ calling thread's current context, eglSwapBuffers,
+ eglSwapBuffersWithDamageEXT, and eglCopyBuffers perform an
+ implicit flush operation on the context (glFlush for OpenGL or
+ OpenGL ES context, vgFlush for an OpenVG context)."
+
+ Paragraph 3, first sentence:
+
+ "The destination of a posting operation (a visible window, for
+ eglSwapBuffers or eglSwapBuffersWithDamageEXT, or a native
+ pixmap, for eglCopyBuffers) should have the same number of
+ components and component sizes as the color buffer it's being
+ copied from."
+
+ Paragraph 6, first two sentences:
+
+ "The function
+
+ EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint
+ interval);
+
+ specifies the minimum number of video frame periods per color
+ buffer post operation for the window associated with the
+ current context. The interval takes effect when eglSwapBuffers
+ or eglSwapBuffersWithDamageEXT is first called subsequent to
+ the eglSwapInterval call."
+
+ Modify the following sentences in Section 3.9.4, page 52 (Posting
+ Errors)
+
+ Paragraph 1, first sentence:
+
+ "eglSwapBuffers, eglSwapBuffersWithDamageEXT, and
+ eglCopyBuffers return EGL_FALSE on failure."
+
+ Paragraph 1, seventh sentence:
+
+ "If eglSwapBuffers or eglSwapBuffersWithDamageEXT are called
+ and the native window associated with <surface> is no longer
+ valid, an EGL_BAD_NATIVE_WINDOW error is generated. If
+ eglSwapBuffersWithDamageEXT is called and <n_rects>, is less
+ than zero or <n_rects> is greater than zero but <rects> is
+ NULL, EGL_BAD_PARAMETER is generated."
+
+Dependencies on OpenGL ES
+
+ None
+
+Dependencies on OpenVG
+
+ None
+
+Issues
+
+1) Do applications have to make sure the rectangles don't overlap?
+
+ RESOLVED: No, that would be inconvenient for applications and we
+ see no difficulty for implementations to supporting overlapping
+ rectangles.
+
+2) Would it be valid for an implementation to discard the list of
+ rectangles internally and work just in terms of the
+ eglSwapBuffers api?
+
+ RESOLVED: Yes, the rectangles are only there for optimization
+ purposes so although it wouldn't be beneficial to applications if
+ it was convenient at times then it would be compliant for an
+ implementation to discard the rectangles and just call
+ eglSwapBuffers instead. The error conditions that should be
+ checked for are compatible with the requirements for
+ eglSwapBuffers.
+
+3) What origin should be used for damage rectangles?
+
+ RESOLVED: Bottom left since this is consistent with all other
+ uses of 2D window coordinates in EGL and OpenGL that specify a
+ bottom left origin.
+
+ Originally this specification was written with a top-left origin
+ for the damage rectangles even though it was known to be
+ inconsistent and that was because most window systems use a
+ top-left origin and there are some awkward semantic details
+ related to handling native window resizing that we had hoped to
+ simplify.
+
+ This extension and also several other existing EGL extensions
+ struggle to guarantee a reliable behaviour in response to native
+ window resizing which can happen asynchronously on some platforms
+ and this can make it difficult for applications to avoid certain
+ visual artefacts.
+
+ The crux of the problem is that when a native window is
+ asynchronously resized then the window system may maintain the old
+ buffer contents with respect to a different origin than EGL's
+ bottom left origin. For this extension that means that EGL damage
+ rectangles that are intended to map to specific surface contents
+ may end up mapping to different contents when a native window is
+ resized because the rectangles and buffer contents will be moved in
+ different directions in relation to the new window size.
+
+ In the end we decided that this issue isn't simply solved by
+ choosing to use a top-left origin and so we can instead aim for
+ consistency and clarify what guarantees we offer in relation to
+ native window resizing separate from this issue.
+
+4) What guarantees do we provide about the meaningfulness of EGL
+ damage rectangles that are forwarded to the native window system
+ when presenting to a native window that has been resized?
+
+ RESOLVED: The meaningfulness of those forwarded damage rectangles
+ is undefined since this simplifies the implementation requirements
+ and we saw very little benefit to applications from providing
+ stricter guarantees.
+
+ The number of applications that would be able to avoid fully
+ redrawing the contents of a window in response to a window resize
+ is expected to be so low that there would be almost no benefit to
+ defining strict guarantees here.
+
+ Since EGL already states that the contents of window surface
+ buffers become undefined when a native window has been resized,
+ this limitation doesn't introduce any new issue for applications
+ to consider. Applications should already fully redraw buffer
+ contents in response to a native window resize, unless they are
+ following some platform specific documentation that provides
+ additional guarantees.
+
+ For an example of the implementation details that make this an
+ awkward issue to provide guarantees for we can consider X11 based
+ platforms where native windows can be resized asynchronously with
+ respect to a client side EGL surface:
+
+ With X11 there may be multiple "gravity" transformations that can
+ affect how surface buffer content is positioned with respect to a
+ new native window size; there is the core X "bit gravity" and
+ there is the EGL driver gravity that determines how a surface's
+ contents with one size should be mapped to a native window with a
+ different size. Without very careful cooperation between the EGL
+ driver and the core X implementation and without the right
+ architecture to be able to do transforms atomically with respect
+ to different clients that may enact a window resize then it is not
+ possible to reliably map EGL damage rectangles to native window
+ coordinates.
+
+ The disadvantage of a driver that is not able to reliably map EGL
+ damage rectangles to native window coordinates is that a native
+ compositor may re-compose the wrong region of window. This may
+ result in a temporary artefact until the full window gets redrawn
+ and then re-composed. X11 already suffers other similar transient
+ artefacts when resizing windows.
+
+ The authors of this spec believe that even if a driver can't do
+ reliable mappings of EGL damage rectangles then compositors would
+ be able mitigate the majority of related artefacts by ignoring
+ sub-window damage during an interactive window resize.
+
+ The authors of this spec believe that that if an X11 driver did
+ want to reliably map EGL damage rectangles to the native window
+ coordinates then that may be technically feasible depending on the
+ driver architecture. For reference one approach that had been
+ considered (but not tested) is as follows:
+
+ 1) When eglSwapBuffersWithDamageEXT is called, send EGL damage
+ rectangles from the client to a driver component within the
+ xserver un-transformed in EGL window surface coordinates with a
+ bottom-left origin.
+
+ 2) Within the X server the driver component should look at the
+ bit-gravity of a window and use the bit-gravity convention to
+ copy EGL surface content to the front-buffer of a native window.
+
+ 3) Within the X server the driver component should use the same
+ gravity transform that was used to present the surface content
+ to also transform the EGL damage rectangle coordinates.
+
+ Note that because this transform is done in the xserver then
+ this is implicitly synchronized with all clients that would
+ otherwise be able to enact an asynchronous window resize.
+
+
+Revision History
+
+ Version 1, 29/07/2011
+ - First draft
+ Version 2, 03/08/2011
+ - Clarify that the rectangles passed may overlap
+ Version 3, 01/09/2011
+ - Fix a missing '*' in prototype to make rects a pointer
+ Version 4, 11,02,2012
+ - Clarify that implementing in terms of eglSwapBuffers would be
+ compliant.
+ Version 5, 11,02,2012
+ - Tweak the cases where we report BAD_PARAMETER errors
+ Version 6, 05/02/2013
+ - Specify more thorough updates across the EGL 1.4 spec
+ wherever it relates to the eglSwapBuffers api
+ - Clarify that passing <n_rects> of 0 behaves as if
+ eglSwapBuffers were called.
+ Version 7, 14/02/2013
+ - Specify that a bottom-left origin should be used for rectangles
+ Version 8, 19/03/2013
+ - Add Ian and James as contributors
+ - Add an issue explaining why we changed to a bottom-left origin
+ - Clarify that the behaviour is undefined when presenting to a
+ native window that has been resized.
+ - Document the awkward details that would be involved in
+ providing more strict guarantees when presenting to a native
+ window that has been resized.
+ Version 9, 12/06/2013, Chad Versace <chad.versace@intel.com>
+ - Remove the "all rights reserved" clause from the copyright notice. The
+ removal does not change the copyright notice's semantics, since the
+ clause is already implied by any unadorned copyright notice. But, the
+ removal does diminish the likelihood of unwarranted caution in readers
+ of the spec.
+ - Add "IP Status" section to explicitly state that this extension has no
+ knonw IP claims.
+ Version 10, 23/10/2014, Jon Leech
+ - Remove copyright after signoff from Intel.
+ Version 11, 20/02/2020, Jon Leech
+ - Constify rects parameter (EGL-Registry issue 98).
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_sync_reuse.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_sync_reuse.txt
new file mode 100644
index 0000000..4c8ebb1
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_sync_reuse.txt
@@ -0,0 +1,376 @@
+Name
+
+ EXT_sync_reuse
+
+Name Strings
+
+ EGL_EXT_sync_reuse
+
+Contributors
+
+ Daniel Kartch
+ Jeff Vigil
+ Ray Smith
+
+Contacts
+
+ Daniel Kartch, NVIDIA Corporation (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4, May 16, 2018
+
+Number
+
+ EGL Extension #128
+
+Extension type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL 1.5 or EGL 1.4 with EGL_KHR_fence_sync
+
+ Interacts with EGL_KHR_reusable_sync
+ Interacts with EGL_ANDROID_native_fence_sync
+ Interacts with EGL_NV_cuda_event
+
+ This extension is written against the wording of the EGL 1.5
+ Specification.
+
+Overview
+
+ The original EGLSync extensions separated sync objects into two
+ types: fence sync objects signaled by one time events in an
+ API command pipeline; and reusable sync objects signaled by commands
+ which can be issued again and again. However, this conflates
+ reusability of the event triggering a sync object with the EGLSync
+ object itself.
+
+ Although the event associated with a fence sync object will only
+ occur once, there is no reason that it can't be replaced with a new
+ event. Doing so would avoid unnecessary allocation and free
+ operations in an application that repeatedly waits for events. With
+ the current interfaces, such applications must constantly create and
+ destroy new EGLSync objects.
+
+ This extension allows all sync objects to be reusable. When a sync
+ object is in the signaled state, it can be reset back to an
+ unsignaled state, regenerating or reevaluating the events that
+ trigger them. For fence sync objects, this means generating a new
+ fence in the current API. For OpenCL event sync objects, this means
+ waiting for a new OpenCL event handle. This mechanism also allows
+ sync objects to be created in the signaled state with no associated
+ fence/event, and have one applied later. Thus all EGLSyncs required
+ by an application can be allocated up front, before any rendering
+ operations have begun.
+
+New Types
+
+ None
+
+New Tokens
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglUnsignalSyncEXT(
+ EGLDisplay dpy,
+ EGLSync sync,
+ const EGLAttrib *attrib_list);
+
+Replace text of subsections of 3.8.1 through 3.8.1.2 of EGL 1.5
+Specification. Existing tables are preserved.
+
+ 3.8.1 Sync Objects
+
+ In addition to the aforementioned synchronization functions, which
+ provide an efficient means of serializing client and native API
+ operations within a thread, <sync objects> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon by
+ application threads.
+
+ Sync objects have a status with two possible states: <signaled> and
+ <unsignaled>, and may initially be in either state. EGL may be asked
+ to wait for a sync object to become signaled, or a sync object’s
+ status may be queried.
+
+ Depending on the type of a sync object, its status may be changed
+ either by an external event, or by explicitly signaling and/or
+ unsignaling the sync. All sync objects are reusable. Once they enter
+ the signaled state, they may be changed back to unsignaled, possibly
+ replacing the associated external event that signals them.
+
+ Sync objects are associated with an EGLDisplay when they are
+ created, and have <attributes> defining additional aspects of the
+ sync object. All sync objects include attributes for their type and
+ their status. Additional attributes are discussed below for
+ different types of sync objects. If a sync object is created in the
+ signaled state, its initial attribute list may be incomplete, with
+ attributes necessary for its type provided when it is changed to
+ unsignaled.
+
+ <Fence sync objects> have an associated fence command in a client
+ API. A new fence command is generated whenever the sync object
+ enters the unsignaled state. When the client API executes the fence
+ command, an event is generated which signals the corresponding fence
+ sync object. Fence sync objects may not be explicitly signaled.
+ Fence sync objects may be used to wait for partial completion of a
+ client API command stream, as a more flexible form of glFinish or
+ vgFinish.
+
+ An <OpenCL event sync object> reflects the status of a corresponding
+ OpenCL event object to which the sync object is linked. This
+ provides another method of coordinating sharing of images between
+ EGL and OpenCL (see Chapter 9 of the OpenCL 1.0 Specification and
+ the cl_khr_egl_image extension). Waiting on such a sync object is
+ equivalent to waiting for completion of the linked OpenCL event
+ object.
+
+ The command
+
+ EGLSync eglCreateSync(EGLDisplay dpy, EGLenum type, const
+ EGLAttrib *attrib_list);
+
+ creates a sync object of the specified <type> associated with the
+ specified display <dpy>, and returns a handle to the new object.
+ <attrib list> is NULL or an attribute-value list specifying other
+ attributes of the sync object, terminated by an attribute entry
+ EGL_NONE. Attributes not specified in the list will be assigned
+ their default values.
+
+ The EGL_SYNC_STATUS attribute is defined for all sync types, but may
+ only be specified explicitly at creation time for some types of sync
+ objects, as discussed below. Other attributes are only allowed as
+ indicated below for the sync type.
+
+ Errors
+
+ eglCreateSync returns EGL_NO_SYNC on failure.
+ If <dpy> is not the name of a valid, initialized EGLDisplay, an
+ EGL_BAD_DISPLAY error is generated.
+ If <attrib_list> contains an attribute name not defined or not
+ allowed for the type of sync object being created, an
+ EGL_BAD_ATTRIBUTE error is generated.
+ If <type> is not a supported type of sync object, an
+ EGL_BAD_PARAMETER error is generated.
+ If <type> is EGL_SYNC_FENCE, the EGL_SYNC_STATUS attribute is
+ set to EGL_UNSIGNALED, and any of the following are true of the
+ current context for the bound API (the context returned by
+ eglGetCurrentContext), an EGL_BAD_MATCH error is generated:
+ * There is no current context (i.e., eglGetCurrentContext
+ returns EGL_NO_CONTEXT).
+ * <dpy> does not match the EGLDisplay of the context (the
+ EGLDisplay returned by eglGetCurrentDisplay).
+ * The context does not support fence commands.
+
+ While in the unsignaled state, the synchronization event associated
+ with a sync object cannot be changed. When the <condition> of a sync
+ object in the unsignaled state is satisfied, the sync is signaled,
+ causing any eglClientWaitSync or eglWaitSync commands (see below)
+ blocking on the sync to unblock.
+
+ Once signaled, a sync object may be reused for a new synchronization
+ event by switching it back to unsignaled. The command
+
+ EGLBoolean eglUnsignalSyncEXT(EGLDisplay dpy, EGLSync sync,
+ const EGLAttrib *attrib_list);
+
+ can be used to change the <sync> associated with display <dpy> from
+ the signaled state to the unsignaled state. The attribute list may
+ be used to provide or replace attributes specific to the sync type
+ as discussed below. The sync object's type and condition may not be
+ changed.
+
+ Errors
+
+ eglUnsignalSyncEXT returns EGL_FALSE on failure, and has no
+ effect on <sync>.
+ If <dpy> is not the name of a valid, initialized EGLDisplay, an
+ EGL_BAD_DISPLAY error is generated.
+ If <sync> is not a valid sync object associated with <dpy>, an
+ EGL_BAD_PARAMETER error is generated.
+ If <attrib_list> contains an attribute name not defined for the
+ type of <sync>, an EGL_BAD_ATTRIBUTE error is generated.
+ If <sync> is already in the unsignaled state, an EGL_BAD_ACCESS
+ error is generated.
+ If <sync>'s type is EGL_SYNC_FENCE and any of the following are
+ true of the current context for the bound API (the context
+ returned by eglGetCurrentContext), an EGL_BAD_MATCH error is
+ generated:
+ * There is no current context (i.e., eglGetCurrentContext
+ returns EGL_NO_CONTEXT).
+ * <dpy> does not match the EGLDisplay of the context (the
+ EGLDisplay returned by eglGetCurrentDisplay).
+ * The context does not support fence commands.
+ If <sync>'s type is EGL_SYNC_CL_EVENT and EGL_CL_EVENT_HANDLE
+ is not specified in <attrib_list>, then an EGL_BAD_ATTRIBUTE
+ error is generated.
+
+ 3.8.1.1 Creating and Signaling Fence Sync Objects
+
+ If type is EGL_SYNC_FENCE, a fence sync object is created. The
+ EGL_SYNC_STATUS attribute may be specified as either EGL_UNSIGNALED
+ or EGL_SIGNALED, and will default to EGL_UNSIGNALED. No other
+ attributes may be specified for a fence sync object, either with
+ eglCreateSync or eglUnsignalSyncEXT. Queriable attributes of the
+ fence sync object are set as shown in table 3.7.
+
+ When a fence sync object is created in the unsignaled state, or
+ switched to that state with eglUnsignalSyncEXT, a fence command is
+ inserted into the command stream of the bound client API’s current
+ context (i.e., the context returned by eglGetCurrentContext), and is
+ associated with the sync object.
+
+ The only condition supported for fence sync objects is
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE, which is satisfied by completion
+ of the fence command corresponding to the sync object, and all
+ preceding commands in the associated client API context’s command
+ stream. The sync object will not be signaled until all effects from
+ these commands on the client API’s internal and framebuffer state
+ are fully realized. No other state is affected by execution of the
+ fence command.
+
+ Generation of fence commands for fence sync objects requires support
+ from the bound client API, and will not succeed unless the client
+ API satisfies one of the following properties. Note that eglWaitSync
+ (see section 3.8.1.3) also requires satisfying these conditions.
+ * client API is OpenGL, and either the OpenGL version is 3.2 or
+ greater, or the GL_ARB_sync extension is supported.
+ * client API is OpenGL ES, and either the OpenGL ES version is 3.0
+ or greater, or the GL_OES_EGL_sync extension is supported.
+ * client API is OpenVG, and the VG_KHR_EGL_sync extension is
+ supported.
+
+ 3.8.1.2 Creating and Signaling OpenCL Event Sync Objects
+
+ If type is EGL_SYNC_CL_EVENT, an OpenCL event sync object is
+ created. The EGL_SYNC_STATUS attribute may not be explicitly
+ specified during creation of this type of sync object. If no
+ EGL_CL_EVENT_HANDLE attribute is specified at creation time, the
+ sync object will be created in the signaled state. Otherwise its
+ status will be determined by the provided OpenCL event, as described
+ below. An EGL_CL_EVENT_HANDLE must always be specified for
+ eglUnsignalSyncEXT.
+
+ To use an OpenCL event sync object, the EGL_SYNC_CL_EVENT attribute
+ must be set to a valid OpenCL <event> handle returned by a call to
+ clEnqueueReleaseGLObjects or clEnqueueReleaseEGLObjects; other types
+ of OpenCL event handles are not supported. Implementations are not
+ required to validate the OpenCL event, and passing an invalid event
+ handle in <attrib_list> may result in undefined behavior up to and
+ including program termination. Note that EGL_CL_EVENT_HANDLE is not
+ a queriable property of a sync object. Queriable attributes of the
+ OpenCL event sync object are set as shown in table 3.8.
+
+ The status of such a sync object depends on <event>. When the status
+ of <event> is CL_QUEUED, CL_SUBMITTED, or CL_RUNNING, the status of
+ the linked sync object will be EGL_UNSIGNALED. When the status of
+ <event> changes to CL_COMPLETE, the status of the linked sync object
+ will become EGL_SIGNALED.
+
+ The only condition supported for OpenCL event sync objects is
+ EGL_SYNC_CL_EVENT_COMPLETE, which is satisfied when the status of
+ the OpenCL event associated with the sync object changes to
+ CL_COMPLETE.
+
+ Associating an OpenCL event handle with a sync object places a
+ reference on the linked OpenCL object. When the sync object is
+ deleted or the event handle is replaced, the reference will be
+ removed from the OpenCL object.
+
+If EGL_KHR_reusable_sync is present, then for sync objects of type
+EGL_SYNC_REUSABLE_KHR, the initial value of EGL_SYNC_STATUS may be
+set to either EGL_UNSIGNALED or EGL_SIGNALED, and will default to
+EGL_UNSIGNALED.
+
+If EGL_ANDROID_native_fence_sync is present, then for native fence sync
+objects, the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute may be specified
+in eglUnsignalSyncEXT as well as eglCreateSync. If it is set to anything
+other than EGL_NO_NATIVE_FENCE_FD_ANDROID at creation time, then its
+initial EGL_SYNC_STATUS will reflect the current status of the provided
+fence FD, and it is an error to specifically set the status. If it is
+set to EGL_NO_NATIVE_FENCE_FD_ANDROID, then its EGL_SYNC_STATUS may be
+set to either EGL_UNSIGNALED (the default) or EGL_SIGNALED. If the
+status is signaled, then no native fence will be generated until after
+it is switched to unsignaled. If eglUnsignalSyncEXT is called for a
+native fence sync object with an FD of EGL_NO_NATIVE_FENCE_FD_ANDROID,
+then a new native fence will be generated at the next Flush(), as
+described for eglCreateSync.
+
+If EGL_NV_cuda_event is present, then for CUDA event sync objects, the
+EGL_CUDA_EVENT_HANDLE_NV may be specified in eglUnsignalSyncEXT as well
+as eglCreateSync. The current CUDA event handle is evaluated at the time
+the EGL sync object becomes unsignaled, and subsequent modification of
+the CUDA object with cudaEventRecord has no effect on the sync object
+until it is signaled. Subsequently restoring the sync object to
+unsignaled will cause the CUDA object to be reevaluated.
+
+Issues
+
+ 1. Should a new attribute be required to specify a sync object as
+ reusable?
+
+ RESOLVED: No. The presence of this extension is sufficient to
+ indicate reusability of all sync objects. This will not create
+ any incompatibilities with existing applications that use sync
+ objects only once.
+
+ 2. Can we leverage the existing eglSignalSyncKHR function from
+ EGL_KHR_reusable_sync for this extension?
+
+ RESOLVED: No. Some types of sync objects require attributes
+ which are themselves single-use objects, and must be replaced
+ for the sync object to be reused. Therefore a new function which
+ takes an attribute list is required.
+
+ 3. Should the function for unsignaling be based on eglSignalSyncKHR
+ from the KHR_reusable_sync extension, and take a mode parameter
+ to distinguish signaling/unsignaling?
+
+ RESOLVED: No. While all sync objects will support unsignaling,
+ the reusable sync object is the only known one that supports
+ direct signaling, rather than signaling through some condition
+ being achieved. Therefore it is simplest to have the new
+ function only support unsignaling, and continue to use the old
+ extension for the one case where signaling is required.
+
+ 4. If the initial attribute list is incomplete (e.g. an OpenCL
+ event handle is not provided during creation of an OpenCL event
+ sync object), should the EGL_SYNC_STATUS default to EGL_SIGNALED
+ rather than generating an error if it is left unspecified?
+
+ RESOLVED: Handling of allowed/default values for EGL_SYNC_STATUS
+ is based on the sync type. For fence syncs, either value is
+ allowed, defaulting to EGL_UNSIGNALED. For OpenCL event syncs,
+ the value may not be specified, and instead is determined by
+ whether an OpenCL event is provided at creation time, and if so
+ by the status of that event.
+
+Revision History
+
+ #4 (May 16, 2018) Daniel Kartch
+ - Minor corrections to wording
+
+ #3 (April 20, 2018) Daniel Kartch
+ - Renamed to EXT
+ - Fixed grammatical errors and prepared for publication
+
+ #2 (January 23, 2018) Daniel Kartch
+ - Rewrote some sections for clarity, and fixed typos
+ - Changed default/allowed behavior for signal state at creation
+ time to be determined by the sync type and other attributes.
+ - Simplified interaction with EGL_KHR_reusable_sync.
+ - Refined interaction with EGL_ANDROID_native_fence_sync to
+ clarify allowed initial states for the sync status and fix the
+ description of when new native fences are generated.
+
+ #1 (January 16, 2018) Daniel Kartch
+ - Initial draft as XXX
diff --git a/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_yuv_surface.txt b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_yuv_surface.txt
new file mode 100644
index 0000000..15b854e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/EXT/EGL_EXT_yuv_surface.txt
@@ -0,0 +1,393 @@
+Name
+
+ EXT_yuv_surface
+
+Name Strings
+
+ EGL_EXT_yuv_surface
+
+Contributors
+
+ Matt Trusten
+ Jeff Vigil
+ Arshad Bebal
+ Mohan Maiya
+ Amit Bansal
+ Tom Longo
+ Eric Engestrom
+
+Contacts
+
+ Jeff Vigil, Qualcomm (jvigil 'at' qualcomm.com)
+
+Notice
+
+ Copyright (c) 2014 Qualcomm Technologies, Inc. All Rights Reserved.
+ Qualcomm Technologies Proprietary and Confidential
+
+Status
+
+ Complete
+
+Version
+
+ Version 9, May 4th, 2017
+
+Number
+
+ EGL Extension #86
+
+Dependencies
+
+ EGL 1.4 is required.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension defines a set of new EGL configuration attributes and values
+ which allows EGL to create and use YUV surfaces.
+
+ YUV formats can be described using a few simple parameters, and every format
+ can be given with these six parameters. These parameters include the color
+ order, the number of planes, subsample, plane depth, color conversion and
+ depth range.
+
+ This extension describes how EGL will handle YUV surfaces, but requires that
+ the client API describe how to fill such a surface. An example of such an
+ extension would be GL_EXT_yuv_target.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ A new set of EGLConfig attributes are available:
+ EGL_YUV_ORDER_EXT 0x3301
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+ EGL_YUV_SUBSAMPLE_EXT 0x3312
+ EGL_YUV_DEPTH_RANGE_EXT 0x3317
+ EGL_YUV_CSC_STANDARD_EXT 0x330A
+ EGL_YUV_PLANE_BPP_EXT 0x331A
+
+ Accepted as a new value for the EGL_COLOR_BUFFER_TYPE attribute:
+ EGL_YUV_BUFFER_EXT 0x3300
+
+ Accepted values for the EGL_YUV_ORDER_EXT attribute:
+ EGL_YUV_ORDER_YUV_EXT 0x3302
+ EGL_YUV_ORDER_YVU_EXT 0x3303
+ EGL_YUV_ORDER_YUYV_EXT 0x3304
+ EGL_YUV_ORDER_UYVY_EXT 0x3305
+ EGL_YUV_ORDER_YVYU_EXT 0x3306
+ EGL_YUV_ORDER_VYUY_EXT 0x3307
+ EGL_YUV_ORDER_AYUV_EXT 0x3308
+
+ Accepted values for the EGL_YUV_SUBSAMPLE_EXT attribute:
+ EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
+ EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
+ EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
+
+ Accepted values for the EGL_YUV_DEPTH_RANGE_EXT attribute:
+ EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
+ EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
+
+ Accepted values for the EGL_YUV_CSC_STANDARD_EXT attribute:
+ EGL_YUV_CSC_STANDARD_601_EXT 0x330B
+ EGL_YUV_CSC_STANDARD_709_EXT 0x330C
+ EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
+
+ Accepted values for the EGL_YUV_PLANE_BPP_EXT attribute:
+ EGL_YUV_PLANE_BPP_0_EXT 0x331B
+ EGL_YUV_PLANE_BPP_8_EXT 0x331C
+ EGL_YUV_PLANE_BPP_10_EXT 0x331D
+
+Additions to Chapter 2 of the EGL 1.4 Specification (EGL Operation)
+
+Change the options of paragraph 6 from section 2.2: Rendering Contexts and
+Drawing Surfaces
+
+ A context can be used with any EGLSurface that it is compatible with
+ (subject to the restrictions discussed in the section on address space). A
+ surface and context are compatible if
+ * They support the same type of color buffer (RGB or luminance)
+
+To the following:
+
+ A context can be used with any EGLSurface that it is compatible with
+ (subject to the restrictions discussed in the section on address space). A
+ surface and context are compatible if
+ * They support the same type of color buffer (RGB, YUV, or luminance)
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+Change the section marked from Buffer Descriptions and Attributes in Section 3.4
+to:
+
+ The Color Buffer
+
+ The color buffer contains pixel color values, and is shared by all
+ client APIs rendering to a surface.
+ EGL_COLOR_BUFFER_TYPE indicates the color buffer type, and must be
+ either EGL_RGB_BUFFER for an RGB color buffer, EGL_LUMINANCE_BUFFER for a
+ luminance color buffer, or EGL_YUV_BUFFER_EXT for a YUV color buffer. For
+ an RGB buffer, EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE must be non-zero,
+ and EGL_LUMINANCE_SIZE must be zero. For a luminance buffer, EGL_RED_SIZE,
+ EGL_GREEN_SIZE, EGL_BLUE_SIZE must be zero, and EGL_LUMINANCE_SIZE must be
+ non-zero. For both RGB and luminance color buffers, EGL_ALPHA_SIZE may be
+ zero or non-zero (the latter indicates the existence of a destination alpha
+ buffer). For a YUV buffer, all of EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_-
+ SIZE, EGL_LUMINANCE_SIZE, and EGL_ALPHA_SIZE must be zero. Instead, the
+ depth in bits per pixel for YUV is described using EGL_YUV_PLANE_BPP_EXT,
+ which describes the size of a single pixel in the Y plane, and the other
+ plane depths are derived from this.
+ EGL_YUV_ORDER_EXT is used to describe the plane order.
+ EGL_YUV_NUMBER_OF_PLANES_EXT describes the number of planes that will
+ be used for this surface. The allowed values for EGL_YUV_NUMBER_OF_PLANES_-
+ EXT must be greater than zero and not more than three.
+ EGL_YUV_SUBSAMPLE_EXT allows the user to decide how the surface will be
+ subsampled.
+
+ Valid combinations are:
+
+ EGL_YUV_SUBSAMPLE_EXT EGL_YUV_NUMBER_OF_PLANES_EXT EGL_YUV_ORDER_EXT EGL_YUV_PLANE_BPP_EXT
+ ------------------------- ----------------------------- ------------------ ------------------------
+ EGL_YUV_SUBSAMPLE_4_2_0_EXT 2 or 3 EGL_YUV_ORDER_YUV_EXT or EGL_YUV_PLANE_BPP_8_EXT or
+ EGL_YUV_ORDER_YVU_EXT EGL_YUV_PLANE_BPP_10_EXT
+
+ EGL_YUV_SUBSAMPLE_4_2_2_EXT 1 EGL_YUV_ORDER_YUYV_EXT or EGL_YUV_PLANE_BPP_8_EXT or
+ EGL_YUV_ORDER_YVYU_EXT or EGL_YUV_PLANE_BPP_10_EXT
+ EGL_YUV_ORDER_UYVY_EXT or
+ EGL_YUV_ORDER_VYUY_EXT
+
+ EGL_YUV_SUBSAMPLE_4_2_2_EXT 2 or 3 EGL_YUV_ORDER_YUV_EXT or EGL_YUV_PLANE_BPP_8_EXT or
+ EGL_YUV_ORDER_YVU_EXT EGL_YUV_PLANE_BPP_10_EXT
+
+ EGL_YUV_SUBSAMPLE_4_4_4_EXT 1 EGL_YUV_ORDER_AYUV_EXT EGL_YUV_PLANE_BPP_8_EXT or
+ EGL_YUV_PLANE_BPP_10_EXT
+
+ Usage examples:
+
+ Format Combination
+ ------------------ --------------------------------------------------------------
+ NV12 EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_0_EXT
+ - YUV420 EGL_YUV_NUMBER_OF_PLANES_EXT = 2
+ - 2 Planes : Y + UV EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YUV_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ NV21 EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_0_EXT
+ - YUV420 EGL_YUV_NUMBER_OF_PLANES_EXT = 2
+ - 2 Planes : Y + VU EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YVU_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ YV12 EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_0_EXT
+ - YUV420 EGL_YUV_NUMBER_OF_PLANES_EXT = 3
+ - 3 Planes : Y + V + U EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YVU_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ YUY2 EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_2_EXT
+ - YUV422 EGL_YUV_NUMBER_OF_PLANES_EXT = 1
+ - 1 Plane : Y + U + Y + V EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YUYV_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ AYUV EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_4_4_EXT
+ - YUV444 EGL_YUV_NUMBER_OF_PLANES_EXT = 1
+ - 1 Plane : A + Y + U + V EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_AYUV_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_8_EXT
+
+ YUV420 Semi-Planar 10 Bit EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_0_EXT
+ - YUV420 EGL_YUV_NUMBER_OF_PLANES_EXT = 2
+ - 2 Planes : Y + UV EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YUV_EXT
+ - 10 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_10_EXT
+
+ YUV422 Interleaved 10 Bit EGL_YUV_SUBSAMPLE_EXT = EGL_YUV_SUBSAMPLE_4_2_2_EXT
+ - YUV422 EGL_YUV_NUMBER_OF_PLANES_EXT = 1
+ - 1 Plane : Y + U + Y + V EGL_YUV_ORDER_EXT = EGL_YUV_ORDER_YUYV_EXT
+ - 8 bit depth EGL_YUV_PLANE_BPP_EXT = EGL_YUV_PLANE_BPP_10_EXT
+
+ EGL_YUV_PLANE_BPP_EXT describes the bit depth for the different
+ planes of a YUV surface. The available options are EGL_YUV_PLANE_BPP_0_-
+ EXT, EGL_YUV_PLANE_BPP_8_EXT and EGL_YUV_PLANE_BPP_10_EXT. If EGL_YUV_-
+ PLANE_BPP_0_EXT is specified, no color buffer will be created for the
+ surface.
+ EGL_YUV_DEPTH_RANGE_EXT describes the range of the pixel value and is
+ dependent on the EGL_YUV_PLANE_BPP_EXT setting:
+
+ EGL_YUV_PLANE_BPP_EXT EGL_YUV_DEPTH_RANGE_LIMITED_EXT EGL_YUV_DEPTH_RANGE_FULL_EXT
+ (Inclusive) (Inclusive)
+ ------------------------- -------------------------------- -----------------------------
+ EGL_YUV_PLANE_BPP_8_EXT or Y: 16 to 235, UV: 16 to 240 Y: 0 to 255, UV: 0 to 255
+ EGL_YUV_PLANE_BPP_10_EXT Y: 64 to 940, UV: 64 to 960 Y: 0 to 1023, UV: 0 to 1023
+
+ If OpenGL or OpenGL ES rendering is supported for a luminance color
+ buffer (as described by the value of the EGL_RENDERABLE_TYPE attribute,
+ described below), it is treated as RGB rendering with the value of
+ GL_RED_BITS equal to EGL_LUMINANCE_SIZE and the values of GL_GREEN_BITS and
+ GL_BLUE_BITS equal to zero. The red component of fragments is written to the
+ luminance channel of the color buffer, the green and blue components are
+ discarded, and the alpha component is written to the alpha channel of the
+ color buffer (if present).
+ When rendering to the YUV surface, if EGL_YUV_ORDER_EXT is not EGL_-
+ YUV_ORDER_AYUV_EXT, the alpha channel will always be fully opaque.
+ Otherwise it is defined by the value provided to the alpha sample.
+ EGL_BUFFER_SIZE gives the total of the color component bits of the color
+ buffer for EGL_RGB_BUFFER or for EGL_LUMINANCE_BUFFER. For an RGB color
+ buffer, the total is the sum of EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE,
+ and EGL_ALPHA_SIZE. For a luminance color buffer, the total is the sum of
+ EGL_LUMINANCE_SIZE and EGL_ALPHA_SIZE. When EGL_COLOR_BUFFER_TYPE is of type
+ EGL_YUV_BUFFER_EXT, this will reflect the enumeration provided
+ as an integer) for EGL_YUV_PLANE_BPP_EXT, giving a value of 0, 8 or 10.
+
+ Other EGLConfig Attribute Descriptions
+
+ EGL_YUV_CSC_STANDARD_EXT can be set to either EGL_YUV_CSC_STANDARD_-
+ 601_EXT, EGL_YUV_CSC_STANDARD_709_EXT, or EGL_YUV_CSC_2020_EXT. If the
+ standard chosen is EGL_YUV_CSC_STANDARD_709_EXT, then the color conversion
+ follows the ITU-R BT.709 standard. If EGL_YUV_CSC_STANDARD_EXT is set to
+ EGL_YUV_CSC_2020_EXT, then the color conversion will be processed based on
+ ITU-R BT.2020.
+
+
+Change option 2 in the section marked as 3.4.1.2 Sorting of EGLConfigs to:
+
+ 2. Special: by EGL_COLOR_BUFFER_TYPE where the precendence is EGL_RGB_-
+ BUFFER, EGL_LUMINANCE_BUFFER, EGL_YUV_BUFFER_EXT.
+
+Change option 3 in the section marked as 3.4.1.2 Sorting of EGLConfigs to:
+
+ 3. Special: by larger total number of color bits (for an RGB color buffer,
+ this is the sum of EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE, and
+ EGL_ALPHA_SIZE; for a luminance color buffer, the sum of EGL_LUMINANCE_SIZE
+ and EGL_ALPHA_SIZE; for YUV color buffers, this returns the integer value
+ with respect to the enumeration provided for EGL_YUV_PLANE_BPP_EXT) If the
+ requrested number of bits in attrib_list for a particular color component
+ is 0 or EGL_DONT_CARE, then the number of bits for the component is not
+ considered. Due to this, YUV color buffers are always last based on this
+ rule.
+
+The following options should be added between options 9 and 10 in section
+3.4.1.2 (EGL_ALPHA_MASK_SIZE and EGL_NATIVE_VISUAL_TYPE):
+
+ 10. Special: EGL_YUV_ORDER_EXT will be sorted in the following order:
+ EGL_NONE, EGL_YUV_ORDER_YUV_EXT, EGL_YUV_ORDER_YVU_EXT, EGL_YUV_ORDER_-
+ YUYV_EXT, EGL_YUV_ORDER_YVYU_EXT, EGL_YUV_ORDER_UYVY_EXT, EGL_YUV_ORDER_-
+ VYUY_EXT, and EGL_YUV_ORDER_AYUV_EXT.
+
+Change option 10 in section 3.4.1.2 (EGL_NATIVE_VISUAL_TYPE) to:
+
+ 11. Special: by EGL_NATIVE_VISUAL_TYPE (the actual sort order is
+ implementation-deï¬ned, depending on the meaning of native visual types).
+
+New State
+
+ Add to table 3.1 (EGLConfig Attributes):
+
+ Attribute Type Notes
+ ----------------------------- ---- --------------------------------------------
+ EGL_YUV_ORDER_EXT enum The order in which the samples will be found
+ inside the surface
+ EGL_YUV_NUMBER_OF_PLANES_EXT integer Number of planes for the surface, in the range of [1,3]
+ EGL_YUV_SUBSAMPLE_EXT enum Describes the sampling rate of the different planes.
+ EGL_YUV_DEPTH_RANGE_EXT enum Luma plane range. limited is [16,240] and
+ full range is [0,255]
+ EGL_YUV_CSC_STANDARD_EXT enum The standard used for color conversion.
+ EGL_YUV_PLANE_BPP_EXT enum How many bits are used for each plane of
+ the YUV surface
+
+ Add to table 3.4 (Default values and match criteria for EGLConfig
+ attributes):
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ ------------------------- -------------------------------- --------- ------- --------
+ EGL_YUV_ORDER_EXT EGL_DONT_CARE Exact Special 10
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0 At least None
+ EGL_YUV_SUBSAMPLE_EXT EGL_DONT_CARE Exact None
+ EGL_YUV_DEPTH_RANGE_EXT EGL_DONT_CARE Exact None
+ EGL_YUV_CSC_STANDARD_EXT EGL_DONT_CARE Exact None
+ EGL_YUV_PLANE_BPP_EXT EGL_DONT_CARE Exact None
+
+Issues
+ 1. How will a EGL surface created with a YUV config properly detect that
+ valid values were used when filling pixel data?
+
+ This problem occurs in situations when a specification which defines
+ rendering to the YUV surface cannot guarantee values that conform to the
+ configuration attributes. One possible situation for this is when a
+ the GL client is using GL_EXT_yuv_target and the EGL YUV surface is the
+ draw buffer. The shader can transform the values inside the shader, and
+ there is no guarantee that the values will fall into the EGL_YUV_DEPTH_-
+ RANGE_EXT value chosen. Other client specifications could have similar
+ issues and it may not be performant for some hardware to detect this
+ discrepancy. This includes interactions with extensions such as EGL_-
+ lock_surface, or any others that provide a mechanism to change the
+ contents of the YUV surface.
+
+ One of the problems that can occur in situations like this will be
+ compound mathematical error should operations need to take place on the
+ buffer data.
+
+ Proposal: Due to the performance problems or inability in some hardware
+ to deal with this issue, the pixel contents will be undefined and any
+ further operations to the pixel contents will also be undefined.
+ Therefore it is up to the application to guarantee the correct values
+ are stored within the surface. The EGL implementation need not attempt
+ any form of verification on the pixel data of the YUV surface, nor does
+ it have to guarantee the pixel data, even with communicating the surface
+ to other modules through a post or any other operation EGL performs.
+
+ 2. Should an EGL_COLOR_BUFFER_TYPE = EGL_DONT_CARE request enumerate all
+ YUV configs?
+
+ Resolved: Revision #9 changes the default values and selection criteria
+ to allow for full enumeration of all YUV configs. The default value of
+ EGL_COLOR_BUFFER_TYPE remains EGL_RGB_BUFFER, so this change only
+ affects explicit EGL_DONT_CARE requests.
+
+Example Configuration for NV12:
+
+ const EGLint config_attribs[] =
+ {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_COLOR_BUFFER_TYPE, EGL_YUV_BUFFER_EXT,
+ EGL_YUV_ORDER_EXT, EGL_ORDER_YUV_EXT,
+ EGL_YUV_NUMBER_OF_PLANES_EXT, 2,
+ EGL_YUV_SUBSAMPLE_EXT, EGL_YUV_SUBSAMPLE_4_2_0_EXT,
+ EGL_YUV_DEPTH_RANGE_EXT, EGL_YUV_DEPTH_RANGE_LIMITED_EXT,
+ EGL_YUV_CSC_STANDARD_EXT, EGL_YUV_CSC_STANDARD_601_EXT,
+ EGL_YUV_PLANE_BPP_EXT, EGL_YUV_PLANE_BPP_8_EXT,
+ EGL_NONE
+ };
+
+Revision History
+#1 March 12th, 2014 Initial Draft.
+
+#2 March 25th, 2014 Reformated and added more detail.
+
+#3 March 26th, 2014 Added usage examples.
+ Added memory layout definitions.
+
+#4 March 26th, 2014 Fixed some typos and formatting.
+
+#5 May 21st, 2014 Fixed some inconsistencies.
+ Added EGL_YUV_PLANE_DEPTH_0_QCOM.
+
+#6 May 27th, 2014 Relaxed some requirements.
+ Changed EGL_YUV_PLANE_DEPTH_<0,8,10>_QCOM to
+ EGL_YUV_PLANE_BPP_<0,8,10>_QCOM.
+ Added more detail.
+
+#7 October 7th, 2014 Issue (1) added.
+ Minor updates made (EXT_yuv_target)
+
+#8 October 24th, 2014 Updated for EXT and token values.
+
+#9 April 26th, 2017 Changed attributes default values and selection
+ criteria (see issue #2).
+ Changed status from Draft to Complete.
diff --git a/glew/auto/EGL-Registry/extensions/HI/EGL_HI_clientpixmap.txt b/glew/auto/EGL-Registry/extensions/HI/EGL_HI_clientpixmap.txt
new file mode 100644
index 0000000..5ca366d
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/HI/EGL_HI_clientpixmap.txt
@@ -0,0 +1,144 @@
+Name
+
+ HI_clientpixmap
+
+Name Strings
+
+ EGL_HI_clientpixmap
+
+Contributors
+
+ Guillaume Portier
+
+Contacts
+
+ HI support. (support_renderion 'at' hicorp.co.jp)
+
+Status
+
+ Shipping (Revision 3).
+
+Version
+
+ Last Modified Date: June 7, 2010
+ Revision 3
+
+Number
+
+ EGL Extension #24
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ The extension specified in this document provide a mechanism for
+ using memory allocated by the application as a color-buffer.
+
+
+New Types
+
+ EGLClientPixmapHI : specifies the width, height, stride, format
+ and memory pointer of the pixmap to be used by the function
+ eglCreatePixmapSurfaceHI to create the PixmapSurface.
+
+ Members:
+ void* pData;
+ Pointer to a memory buffer allocated by the application
+ that will contain the result of the drawing operations.
+ It is up to the application to ensure that the buffer
+ size corresponds to iHeight * iStride * sizeof(pixel).
+ EGLint iWidth;
+ Width of the buffer in pixels.
+ EGLint iHeight;
+ Height of the buffer in pixels. The height of the buffer
+ can be negative; in that case the result of the
+ drawing operations will be vertically swapped. When
+ positive, pData will point at the bottom-left corner
+ of the image; when negative, to the top-left corner.
+ EGLint iStride;
+ Stride of the buffer, in pixels. It is important to note
+ that each row of the buffer must start on 32-bit
+ boundaries.
+
+New Procedures and Functions
+
+ eglCreatePixmapSurfaceHI : creates an EGL ClientPixmap from
+ an EGLClientPixmapHI structure. eglCreatePixmapSurfaceHI usage
+ is identical to eglCreatePixmapSurface. In addition the ordering
+ of the color components in the color buffer can be specified by
+ the surface attribute described in the EGL_HI_colorformats
+ extension.
+
+ In order to update the pointer to the data of the surface, the application
+ can call eglSurfaceAttrib with the EGL_CLIENT_PIXMAP_POINTER_HI attribute.
+ See below for an example.
+
+New Tokens
+
+ None.
+
+Example
+
+
+ EGLClientPixmapHI pixmap;
+ EGLint attrib_list[] = {
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_SURFACE_TYPE, EGL_PIXMAP_BIT,
+ // Specifying ARGB as a color format
+ EGL_COLOR_FORMAT_HI, EGL_COLOR_ARGB_HI,
+ EGL_NONE
+ };
+
+ // ‘access' being the memory to render into.
+ pixmap.pData = framebuffer.access;
+ pixmap.iWidht = framebuffer.width;
+ pixmap.iHeight = framebuffer.height;
+ pixmap.iStride = framebuffer.stride;
+
+
+
+ //Get Config ARGB8
+ eglChooseConfig(dpy, attrib_list, &config, 1, &num_config);
+
+ // Create the pixmap
+ #ifdef EGL_EGLEXT_PROTOTYPES
+
+ eglCreatePixmapSurfaceHI(eglDisplay, ppkConfig[0], &gHiPixmap);
+
+ #else
+
+ pfCreatePixmap = (PFNEGLCREATEPIXMAPSURFACEHIPROC)
+ eglGetProcAddress("eglCreatePixmapSurfaceHI");
+ pfCreatePixmap(eglDisplay, ppkConfig[0], &gHiPixmap);
+
+ #endif /* EGL_EGLEXT_PROTOTYPES */
+
+
+ // Update the surface data pointer, from now we will render into the
+ // memory pointed by 'access2'.
+ eglSurfaceAttrib(eglDisplay, eglSurface, EGL_CLIENT_PIXMAP_POINTER_HI,
+ offscreen.access2);
+
+Issues
+
+ None
+
+
+Revision History
+
+ June 7, 2010 (r3)
+ - Allow updating the pixmap data pointer using eglSurfaceAttrib with
+ the EGL_CLIENT_PIXMAP_POINTER_HI attribute.
+
+ June 16, 2009 (r2)
+ - Split HI_clientpixmap into two different extensions:
+ - HI_colorformats
+ - HI_clientpixmap
+
+ March 3, 2009 (r1)
diff --git a/glew/auto/EGL-Registry/extensions/HI/EGL_HI_colorformats.txt b/glew/auto/EGL-Registry/extensions/HI/EGL_HI_colorformats.txt
new file mode 100644
index 0000000..c8dc97a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/HI/EGL_HI_colorformats.txt
@@ -0,0 +1,138 @@
+Name
+
+ HI_colorformats
+
+Name Strings
+
+ EGL_HI_colorformats
+
+Contributors
+
+ Guillaume Portier
+
+Contacts
+
+ HI support. (support_renderion 'at' hicorp.co.jp)
+
+Status
+
+ Shipping (Revision 2)
+
+Version
+
+ Last Modified Date: June 7, 2010
+ Revision 2.1
+
+Number
+
+ EGL Extension #25
+
+Dependencies
+
+ These extensions are written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ The extensions specified in this document provide a mechanism for
+ creating ARGB color-buffers, as opposed to the default RGBA
+ format used by other EGL configurations.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted in the <attrib_list> parameter of eglChooseConfig.
+
+ EGL_COLOR_FORMAT_HI 0x8F70
+
+ Accepted as a value for the EGL_COLOR_FORMAT_HI token:
+
+ EGL_COLOR_RGB_HI 0x8F71
+ EGL_COLOR_RGBA_HI 0x8F72
+ EGL_COLOR_ARGB_HI 0x8F73
+
+
+ The default value for EGL_COLOR_FORMAT_HI is EGL_DONT_CARE.
+ If EGL_COLOR_FORMAT_HI is used with a value other than
+ EGL_DONT_CARE, EGL_COLOR_RGB_HI, EGL_COLOR_RGBA_HI or
+ EGL_COLOR_ARGB_HI then an EGL_BAD_ATTRIBUTE is generated.
+
+ EGL_COLOR_RGB_HI, EGL_COLOR_RGBA_HI and EGL_COLOR_ARGB_HI
+ specify the order of the color components in the color-buffer.
+ EGL_COLOR_RGB_HI must be used only with configurations having no
+ alpha component, currently only 565.
+
+ EGL_COLOR_RGBA_HI and EGL_COLOR_ARGB_HI must be used with
+ configurations having an alpha component. Currently available
+ configurations are:
+ - 4444
+ - 5551
+ - 8888
+ Currently EGL_COLOR_ARGB_HI can be used only with the
+ 8888 configuration.
+
+ If the value used for EGL_COLOR_FORMAT_HI does not match
+ the other specified attributes of the EGL config then an
+ EGL_BAD_MATCH is generated.
+
+ When EGL_COLOR_FORMAT_HI is unspecified or equals EGL_DONT_CARE,
+ eglChooseConfig returns configurations having all kinds of color
+ component ordering.
+
+ If eglCreatePixmapSurface is called with a configuration that
+ does not match the pixmap's native ordering then an EGL_BAD_MATCH
+ is generated. To be sure to call eglCreatePixmapSurface with a
+ compatible configuration, the application should either parse
+ the <configs> list returned by eglChooseConfig or explicitly specify
+ EGL_COLOR_FORMAT_HI to match the pixmap native format.
+
+Example
+
+ EGLint attrib_list[] = {
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_SURFACE_TYPE, EGL_PIXMAP_BIT,
+
+ #ifdef USE_ARGB // Specifying ARGB as a color format
+ EGL_COLOR_FORMAT_HI, EGL_COLOR_ARGB_HI,
+ #else // Specifying RGBA as a color format
+ EGL_COLOR_FORMAT_HI, EGL_COLOR_RGBA_HI,
+ #endif
+
+ EGL_NONE
+ };
+
+ // Get one of the configuration matching the config_list
+ eglChooseConfig(dpy, attrib_list, &config, 1, &num_config);
+
+ // Create the pixmap
+ eglCreatePixmapSurface(dpy, config[0], pixmap, NULL);
+
+
+Issues
+
+ None.
+
+
+Revision History
+
+
+ June 7, 2010 (r2.1)
+ - Corrected mistaken description of EGL_COLOR_FORMAT_HI as
+ attribute for eglCreatePixmapSurface. Clarified other text.
+
+ June 16, 2009 (r2)
+ - Split HI_clientpixmap into two different extensions:
+ - HI_colorformats
+ - HI_clientpixmap
+
+ March 3, 2009 (r1)
diff --git a/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_context_priority.txt b/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_context_priority.txt
new file mode 100644
index 0000000..fa1b4a6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_context_priority.txt
@@ -0,0 +1,166 @@
+Name
+
+ IMG_context_priority
+
+Name Strings
+
+ EGL_IMG_context_priority
+
+Contributors
+
+ Ben Bowman, Imagination Techonologies
+ Graham Connor, Imagination Techonologies
+
+Contacts
+
+ Ben Bowman, Imagination Technologies (benji 'dot' bowman 'at'
+ imgtec 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1.1, 8 September 2009
+
+Number
+
+ EGL Extension #10
+
+Dependencies
+
+ Requires EGL 1.0.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification - May 2, 2008 (but may be implemented against earlier
+ versions).
+
+Overview
+
+ This extension allows an EGLContext to be created with a priority
+ hint. It is possible that an implementation will not honour the
+ hint, especially if there are constraints on the number of high
+ priority contexts available in the system, or system policy limits
+ access to high priority contexts to appropriate system privilege
+ level. A query is provided to find the real priority level assigned
+ to the context after creation.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New attributes accepted by the <attrib_list> argument of
+ eglCreateContext
+
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+
+ New attribute values accepted in the <attrib_list> argument
+ of eglCreateContext:
+
+ EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+ EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+ EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Modify the list of attributes supported by eglCreateContext in
+ section 3.7.1 (Creating Rendering Contexts) on p. 42:
+
+ "<attrib_list> specifies a list of attributes for the context.
+ The list has the same structure as described for
+ eglChooseConfig. The only attributes that can be specified in
+ <attrib_list> are EGL_CONTEXT_CLIENT_VERSION and
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG. The EGL_CONTEXT_CLIENT_VERSION
+ attribute may only be specified when creating a OpenGL ES
+ context (e.g. when the current rendering API is
+ EGL_OPENGL_ES_API).
+
+ <attrib_list> may be NULL or empty (first attribute is
+ EGL_NONE), in which case attributes assume their default values
+ as described below.
+
+ EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL
+ ES context to create. An attribute value of 1 specifies creation
+ of an OpenGL ES 1.x context. An attribute value of 2 specifies
+ creation of an OpenGL ES 2.x context. The default value for
+ EGL_CONTEXT_CLIENT_VERSION is 1.
+
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG determines the priority level of
+ the context to be created. This attribute is a hint, as an
+ implementation may not support multiple contexts at some
+ priority levels and system policy may limit access to high
+ priority contexts to appropriate system privilege level. The
+ default value for EGL_CONTEXT_PRIORITY_LEVEL_IMG is
+ EGL_CONTEXT_PRIORITY_MEDIUM_IMG."
+
+
+ Modify the list of attributes supported by eglQueryContext in
+ section 3.7.4 (Context Queries) on p. 46:
+
+ "eglQueryContext returns in <value> the value of attribute for
+ <ctx>. <attribute> must be set to EGL_CONFIG_ID,
+ EGL_CONTEXT_CLIENT_TYPE, EGL_CONTEXT_CLIENT_VERSION,
+ EGL_RENDER_BUFFER, or EGL_CONTEXT_PRIORITY_LEVEL_IMG.
+
+ ...
+
+ Querying EGL_CONTEXT_PRIORITY_LEVEL_IMG returns the priority
+ this context was actually created with. Note: this may not be
+ the same as specified at context creation time, due to
+ implementation limits on the number of contexts that can be
+ created at a specific priority level in the system."
+
+ISSUES:
+
+ 1) Should the context priority be treated as a hint or a requirement
+
+ RESOLVED: The context priority should be a hint. System policy may
+ limit high priority contexts to appropriate system privilege level.
+ Implementations may have a limit on the number of context supported
+ at each priority, and may require all contexts within a process to
+ have the same priority level.
+
+ 2) Can an application find out what priority a context was assigned?
+
+ RESOLVED: Provide a query to find the assigned priority for a
+ context. An application may find that it has a lower (or higher)
+ priority than requested (although it probably cannot do much with
+ the information).
+
+ 3) How many priority levels should be defined?
+
+ RESOLVED: Three seems appropriate, as the highest provides the
+ largest GPU timeslice and reduced latency. It might be useful to
+ specify a low priority context which has a small timeslice and high
+ latency. It is possible that a request for LOW will actually return
+ MEDIUM on an implementation that doesn't differentiate between the
+ lower two levels.
+
+ 4) What should the default priority level be if not specified?
+
+ OPTION 1: HIGH - This allows applications that are unaware of
+ this extension to get the highest priority possible.
+
+ OPTIONS 2: MEDIUM - This allows truly high priority applications
+ to differentiate themselves from applications which are unaware
+ of this extension.
+
+ RESOLVED:
+ OPTION 2: MEDIUM - Allow truly high priority applications to
+ differentiate themselves.
+
+Revision History
+ Version 1.1, 08/09/2009 (Jon Leech) Assign extension number and
+ publish in the Registry. Formatting cleanup.
+ Version 1.0, 30/04/2009 - Final clean up. Marked issues as resolved,
+ take out draft status
+ Version 0.3, 22/04/2009 - enums assigned from Khronos registry.
+ Version 0.2, 02/04/2009 - feedback from gdc.
+ Version 0.1, 31/03/2009 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_image_plane_attribs.txt b/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_image_plane_attribs.txt
new file mode 100644
index 0000000..35841dc
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/IMG/EGL_IMG_image_plane_attribs.txt
@@ -0,0 +1,156 @@
+Name
+
+ IMG_image_plane_attribs
+
+Name Strings
+
+ EGL_IMG_image_plane_attribs
+
+Contributors
+
+ Ben Bowman
+ Alistair Strachan
+
+Contacts
+
+ Tobias Hector, Imagination Technologies (tobias 'dot' hector 'at'
+ imgtec 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 0.4, October 18, 2015
+
+Number
+
+ EGL Extension #95
+
+Dependencies
+
+ EGL_KHR_image_base is required.
+
+ One of EGL_KHR_image, EGL_KHR_image_pixmap or
+ EGL_ANDROID_image_native_buffer is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification as modified by EGL_KHR_image_base,
+ EGL_ANDROID_image_native_buffer and EGL_KHR_image_pixmap.
+ This extension interacts with GL_OES_EGL_image and GL_EXT_texture_rg.
+
+Overview
+
+ This extension allows creating an EGLImage from a single plane of a
+ multi-planar Android native image buffer (ANativeWindowBuffer) or
+ a native pixmap (EGLNativePixmap).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <attrib_list> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+ EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ Add the following to Table bbb (Legal attributes for eglCreateImageKHR
+ <attr_list> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ | Attribute | Description | Valid <target>s | Default Value |
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ | EGL_NATIVE_BUFFER_MULTI | Whether a multiplane | EGL_NATIVE_BUFFER_ANDROID | EGL_FALSE |
+ | PLANE_SEPARATE_IMG | native buffer should be | EGL_NATIVE_PIXMAP_KHR | |
+ | | treated as separate | | |
+ | | buffers | | |
+ | | | | |
+ | EGL_NATIVE_BUFFER_ | Which plane of a multi- | EGL_NATIVE_BUFFER_ANDROID | 0 |
+ | PLANE_OFFSET_IMG | plane native buffer is | EGL_NATIVE_PIXMAP_KHR | |
+ | | used as the EGLImage | | |
+ | | source | | |
+ +-----------------------------+-------------------------+---------------------------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_BUFFER_ANDROID or EGL_NATIVE_PIXMAP_KHR, and
+ <buffer> is a handle to a valid multi-planar surface, such as a YUV420 2 or
+ 3 planar video surface, an EGLImage will be created from only one of the
+ planes, as opposed to a single image representing all of the planes as is
+ normally the case. The intention of this extension is that a call to
+ glEGLImageTargetTexture2DOES or EGLImageTargetRenderbufferStorageOES with an
+ EGLImage created from a single plane of a multiplanar buffer will result in
+ a GL_RED or GL_RG texture or renderbuffer, depending on the format of the
+ multiplanar buffer. This allows an application to work directly in the YUV
+ colorspace, rather than forcing a conversion to the linear RGB colorspace,
+ potentially losing precision.
+
+ The size of each image will represent the actual size of the data buffer
+ for that plane which may mean that the size of an EGLImage created from
+ plane 0 of a multi-planar buffer may not be the same as that of one
+ created from plane 1, which is determined by the YUV's sampling ratio (e.g.
+ a 420 will have planes 1 and 2, if present, represented by an image of half
+ the width).
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and <target>
+ is not EGL_NATIVE_BUFFER_ANDROID or EGL_NATIVE_PIXMAP_KHR, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and
+ EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is greater than or equal to the
+ number of planes in <buffer>, the error EGL_BAD_MATCH is generated.
+
+ * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_FALSE, and
+ EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is greater than 0, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and the
+ format of <buffer> is not supported by the implementation,
+ EGL_BAD_PARAMETER is generated."
+
+Dependencies on EGL_KHR_image_pixmap or EGL_KHR_image
+
+ If neither of these extensions are supported, remove all references to
+ native pixmaps and EGL_NATIVE_PIXMAP_KHR.
+
+Dependencies on EGL_ANDROID_image_native_buffer
+
+ If this extension is not supported, remove all references to
+ ANativeWindowBuffer and EGL_NATIVE_BUFFER_ANDROID.
+
+Issues
+
+ None
+
+Revision History
+
+#0.4 (Tobias Hector, October, 2015)
+ - Add interactions with EGL_KHR_image_pixmap/EGL_KHR_image
+ - Added error language for unsupported formats
+#0.3 (Jon Leech, June 13, 2013)
+ - Add a "Valid Targets" column to table bbb for new attributes, matching
+ proposed changes in EGL_KHR_image_base (Bug 10151). Note that this
+ change implies a new error will be generated when <target> is not
+ EGL_NATIVE_BUFFER_ANDROID and EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is
+ specified in <attrib_list>; this falls out from the generic
+ target-attribute matching error added to EGL_KHR_image_base.
+#0.2 (Ben Bowman, May 30, 2012)
+ - Fixed some typos
+#0.1 (Ben Bowman, May 30, 2012)
+ - First draft of extension .
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event.txt
new file mode 100644
index 0000000..92f4a73
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event.txt
@@ -0,0 +1,278 @@
+Name
+
+ KHR_cl_event
+
+Name Strings
+
+ EGL_KHR_cl_event
+
+Contributors
+
+ Jon Leech, Khronos
+ Alon Or-bach, Samsung Electronics
+
+Contact
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ This extension is obsolete and has been replaced by EGL_KHR_cl_event2.
+ Khronos recommends implementers who support this extension also
+ implement cl_event2, and begin transitioning developers to using that
+ extension. See issue 17 for the reason.
+
+ Complete. Approved by the EGL Working Group on 2013/05/15.
+ Approved by the Khronos Board of Promoters on 2013/07/19.
+
+Version
+
+ Version 10, December 4, 2013
+
+Number
+
+ EGL Extension #60
+
+Dependencies
+
+ EGL 1.4 and the EGL_KHR_fence_sync extension are required.
+
+ This extension is written against the language added to EGL 1.2 by
+ the EGL_KHR_fence_sync extension.
+
+ An OpenCL implementation supporting sharing OpenCL event objects
+ with EGL is required.
+
+Overview
+
+ This extension allows creating an EGL fence sync object linked to an
+ OpenCL event object, potentially improving efficiency of sharing
+ images between the two APIs. The companion cl_khr_egl_event
+ extension provides the complementary functionality of creating an
+ OpenCL event object from an EGL fence sync object.
+
+New Types
+
+ None. However, event handles of type cl_event, defined in the OpenCL
+ header files, may be included in the attribute list passed to
+ eglCreateSyncKHR.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as attribute names in the <attrib_list> argument
+ of eglCreateSyncKHR:
+
+ EGL_CL_EVENT_HANDLE_KHR 0x309C
+
+ Returned in <values> for eglGetSyncAttribKHR <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_CL_EVENT_KHR 0x30FE
+
+ Returned in <values> for eglGetSyncAttribKHR <attribute>
+ EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add following the description of fence sync objects in section 3.8.1
+ (e.g. following the paragraph beginning "<Fence sync objects> are
+ created..."
+
+ "A <CL event sync object> reflects the status of a corresponding
+ OpenCL event object to which the sync object is linked. This
+ provides another method of coordinating sharing of images between
+ EGL and OpenCL (see Chapter 9 of the OpenCL 1.0 Specification and
+ the cl_khr_egl_sharing extension). Waiting on such a sync object is
+ equivalent to waiting for completion of the linked CL event object."
+
+ Add following the description of fence sync objects (prior to the
+ "Errors" section for eglCreateSyncKHR):
+
+ "If <type> is EGL_SYNC_CL_EVENT_KHR, a CL event sync object is
+ created. In this case <attrib_list> must contain the attribute
+ EGL_CL_EVENT_HANDLE_KHR, set to a valid OpenCL event. Note that
+ EGL_CL_EVENT_HANDLE_KHR is not a queriable property of a sync
+ object. Attributes of the CL event sync objects are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ ------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_CL_EVENT_KHR
+ EGL_SYNC_STATUS_KHR Depends on status of <event>
+ EGL_SYNC_CONDITION_KHR EGL_SYNC_CL_EVENT_COMPLETE_KHR
+
+ The status of such a sync object depends on <event>. When the status
+ of <event> is CL_QUEUED, CL_SUBMITTED, or CL_RUNNING, the status of
+ the linked sync object will be EGL_UNSIGNALED_KHR. When the status
+ of <event> changes to CL_COMPLETE, the status of the linked sync
+ object will become EGL_SIGNALED_KHR.
+
+ Creating a linked sync object places a reference on the linked
+ OpenCL event object. When the sync object is deleted, the reference
+ will be removed from the event object.
+
+ However, implementations are not required to validate the OpenCL
+ event, and passing an invalid event handle in <attrib_list> may
+ result in undefined behavior up to and including program
+ termination."
+
+ Add to the "Errors" section for eglCreateSyncKHR:
+
+ "* If <type> is EGL_SYNC_CL_EVENT_KHR then
+
+ ** If EGL_CL_EVENT_HANDLE_KHR is not specified in <attrib_list>
+ or is not a valid OpenCL event handle returned by a call to
+ clEnqueueReleaseGLObjects or clEnqueueReleaseEGLObjects, then
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+ Replace the EGL_SYNC_CONDITION_KHR row of table 3.cc with:
+
+ "Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_CONDITION_KHR Signaling condition EGL_SYNC_FENCE_KHR or
+ EGL_SYNC_CL_EVENT_KHR
+
+ Table 3.cc Attributes Accepted by eglGetSyncAttribKHR Command"
+
+
+ Replace the second paragraph describing eglDestroySync with:
+
+ "If any eglClientWaitSyncKHR commands are blocking on <sync> when
+ eglDestroySyncKHR is called, <sync> is flagged for deletion and will
+ be deleted when the associated fence command or CL event object has
+ completed, and <sync> is no longer blocking any eglClientWaitSyncKHR
+ command. Otherwise, the sync object is destroyed immediately."
+
+Sample Code
+
+ None
+
+Conformance Tests
+
+ None yet
+
+Issues
+
+ 1) Does this extension need to introduce eglWaitSync
+ functionality?
+
+ RESOLVED: The EGL_KHR_wait_sync extension introduces this, to allow
+ server-side synchronization, without blocking the client from issuing
+ commands. Whilst this is not a required dependency, GPU-to-GPU
+ synchronization is the most likely use of this extension.
+
+ 2) What should the command to create a sync object linked to an
+ OpenCL event look like?
+
+ RESOLVED: We reuse the general attribute list mechanism rather than
+ having a constructor specific to CL events. This was intended in the
+ sync object design from the start.
+
+ 3) How will the OpenCL header dependencies interact with
+ specifying the API for this extension?
+
+ DISCUSSION: To use this extension, OpenCL event handles of type cl_event
+ are specified in the attribute lists passed to eglCreateSyncKHR. Because
+ no formal parameters are of type cl_event, the EGL headers do not need
+ to define this type. Applications must #include the appropriate OpenCL
+ header files as well as <EGL/eglext.h> when using this extension.
+
+ This issue resolution is consistent with the equivalent issue for
+ GL_ARB_cl_event.
+
+ 4) Should all possible statuses of the CL event be reflected through to the
+ state of the sync object?
+
+ DISCUSSION: CL event objects have four execution statuses:
+ CL_QUEUED, CL_SUBMITTED, CL_RUNNING, and CL_COMPLETE. GL sync
+ objects have only two statuses: UNSIGNALED and SIGNALED. The
+ cl_khr_gl_event extension maps UNSIGNALED into CL_SUBMITTED, and
+ SIGNALED into CL_COMPLETE.
+
+ RESOLVED: Invert the cl_khr_egl_event mapping. CL_QUEUED,
+ CL_SUBMITTED, and CL_RUNNING all map into UNSIGNALED.
+ CL_COMPLETE maps into SIGNALED.
+
+ This issue resolution is consistent with the equivalent issue for
+ GL_ARB_cl_event.
+
+ 5) Are there any restrictions on the use of a sync object linked to a CL
+ event object?
+
+ RESOLVED: No restrictions.
+
+ 6) How are sync object lifetimes defined?
+
+ RESOLVED: A sync object linked to a CL event object places a single
+ reference on the event. Deleting the sync object removes that reference.
+
+ eglDestroySync has a dependency on the completion of the linked event
+ object, and will not delete the sync objectwhile the event object has not
+ yet completed. This is equivalent to behavior of deleting a fence sync
+ object, where deletion of the object will be deferred until the underlying
+ fence command has completed.
+
+ This issue resolution is consistent with the equivalent issue for
+ GL_ARB_cl_event.
+
+ 7) Should all OpenCL events be supported?
+
+ RESOLVED: No. Only events returned by clEnqueueReleaseGLObjects, or
+ clEnqueueReleaseEGLObjects since those are the only known use cases for
+ this extension.
+
+ 8) Why has this extension been obsoleted and replaced by
+ EGL_KHR_cl_event2?
+
+ RESOLVED: Starting with the December 4, 2013 release of EGL 1.4, EGLint
+ is defined to be the same size as the native platform "int" type. Handle
+ and pointer attribute values *cannot* be represented in attribute lists
+ on platforms where sizeof(handle/pointer) > sizeof(int). Existing
+ extensions which assume this functionality are being replaced with new
+ extensions specifying new entry points to work around this issue. See
+ the latest EGL 1.4 Specification for more details.
+
+Revision History
+
+ Version 10, 2013/12/04 (Jon Leech) - add issue 8 explaining that OpenCL
+ event handles cannot be safely passed in attribute lists on 64-bit
+ platforms, and suggest using EGL_KHR_cl_event2 instead.
+
+ Version 9, 2013/08/12 (Jon Leech) - remove unused cl_event type from the
+ extension and from <EGL/eglext.h> (Bug 10661).
+
+ Version 8, 2013/07/19 (Jon Leech) - assign extension number and
+ missing enum value, and clean up a few typos for publication.
+
+ Version 7, 2013/07/08 (Jon Leech) - assign enums (Bug 10490).
+
+ Version 6, 2013/06/11 (Alon Or-bach) - typo correction
+
+ Version 5, 2013/05/30 (Alon Or-bach) - wording cleanup
+
+ Version 4, 2013/05/15 (Alon Or-bach) - updated issue resolutions as agreed,
+ consistent with GL_ARB_cl_event, including using typedef for cl_event
+
+ Version 3, 2013/04/25 (Alon Or-bach) - remove use of CL context,
+ accept events from clEnqueueAcquireEGLObjects and minor cleanup
+
+ Version 2, 2012/06/26 (Jon Leech) - update link to complementary CL
+ extension.
+
+ Version 1, 2010/05/18 (Jon Leech) - initial version based on
+ equivalent GL_ARB_cl_event extension.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event2.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event2.txt
new file mode 100644
index 0000000..953487c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_cl_event2.txt
@@ -0,0 +1,364 @@
+Name
+
+ KHR_cl_event2
+
+Name Strings
+
+ EGL_KHR_cl_event2
+
+Contributors
+
+ Jon Leech, Khronos
+ Alon Or-bach, Samsung Electronics
+ Tom Cooksey, ARM
+
+Contact
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on December 4, 2013.
+
+Version
+
+ Version 5, December 4, 2013
+
+Number
+
+ EGL Extension #65
+
+Dependencies
+
+ EGL 1.4 and the EGL_KHR_fence_sync extension are required.
+
+ This extension is written against the language added to EGL 1.2 by
+ the EGL_KHR_fence_sync extension.
+
+ An OpenCL implementation supporting sharing OpenCL event objects
+ with EGL is required.
+
+ Khronos recommends obsoleting and replacing implementations of
+ EGL_KHR_cl_event with this extension as soon as possible.
+
+Overview
+
+ This extension allows creating an EGL sync object linked to an OpenCL
+ event object, potentially improving efficiency of sharing images between
+ the two APIs. The companion cl_khr_egl_event extension provides the
+ complementary functionality of creating an OpenCL event object from an
+ EGL sync object.
+
+ This extension is functionally identical to EGL_KHR_cl_event, but is
+ intended to replace that extension. It exists only to address an
+ implementation issue on 64-bit platforms where passing OpenCL event
+ handles in an EGLint attribute list value is impossible, because the
+ implementations use a 32-bit type for EGLint.
+
+ This extension also incorporates some required functionality from the
+ EGL_KHR_fence_sync extension, similarly modified for 64-bit platforms.
+
+New Types
+
+ /*
+ * EGLAttribKHR is a integer type used to pass arrays of attribute
+ * name/value pairs which may include pointer and handle attribute
+ * values.
+ */
+ #include <khrplatform.h>
+ typedef intptr_t EGLAttribKHR;
+
+ Event handles of type cl_event, defined in the OpenCL header files, may
+ be included in the attribute list passed to eglCreateSync64KHR.
+
+New Procedures and Functions
+
+ EGLSyncKHR eglCreateSync64KHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLAttribKHR *attrib_list);
+
+New Tokens
+
+ Accepted as attribute names in the <attrib_list> argument
+ of eglCreateSync64KHR:
+
+ EGL_CL_EVENT_HANDLE_KHR 0x309C
+
+ Returned in <values> for eglGetSyncAttribKHR <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_CL_EVENT_KHR 0x30FE
+
+ Returned in <values> for eglGetSyncAttribKHR <attribute>
+ EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Modify the language in section 3.8.1 (Sync Objects) starting at the
+ sixth paragraph, describing commands to create sync objects:
+
+ "The commands
+
+ EGLSyncKHR eglCreateSync64KHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLAttribKHR *attrib_list);
+
+ and
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ create a sync object ...
+
+ ... When a fence sync object is created, eglCreateSyncKHR and
+ eglCreateSync64KHR also insert a fence command into... "
+
+ Add following the eigth paragraph (the paragraph beginning "<Fence sync
+ objects> are created..."):
+
+ "A <CL event sync object> reflects the status of a corresponding OpenCL
+ event object to which the sync object is linked. This provides another
+ method of coordinating sharing of images between EGL and OpenCL (see
+ Chapter 9 of the OpenCL 1.0 Specification and the cl_khr_egl_sharing
+ extension). Waiting on such a sync object is equivalent to waiting for
+ completion of the linked CL event object.
+
+ CL event sync objects may only be created using the command
+ eglCreateSync64KHR, because they require an attribute which may not be
+ representable in the attrib_list argument of eglCreateSyncKHR."
+
+ Add following the description of fence sync objects (prior to the
+ "Errors" section for eglCreateSyncKHR):
+
+ "If <type> is EGL_SYNC_CL_EVENT_KHR, a CL event sync object is
+ created. In this case <attrib_list> must contain the attribute
+ EGL_CL_EVENT_HANDLE_KHR, set to a valid OpenCL event. Note that
+ EGL_CL_EVENT_HANDLE_KHR is not a queriable property of a sync
+ object. Attributes of the CL event sync objects are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ ------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_CL_EVENT_KHR
+ EGL_SYNC_STATUS_KHR Depends on status of <event>
+ EGL_SYNC_CONDITION_KHR EGL_SYNC_CL_EVENT_COMPLETE_KHR
+
+ The status of such a sync object depends on <event>. When the status
+ of <event> is CL_QUEUED, CL_SUBMITTED, or CL_RUNNING, the status of
+ the linked sync object will be EGL_UNSIGNALED_KHR. When the status
+ of <event> changes to CL_COMPLETE, the status of the linked sync
+ object will become EGL_SIGNALED_KHR.
+
+ Creating a linked sync object places a reference on the linked
+ OpenCL event object. When the sync object is deleted, the reference
+ will be removed from the event object.
+
+ However, implementations are not required to validate the OpenCL
+ event, and passing an invalid event handle in <attrib_list> may
+ result in undefined behavior up to and including program
+ termination."
+
+ The command eglCreateSync64KHR must be used to create a CL event sync
+ object[fn1].
+
+ [fn1] If the implementation also supports the older EGL_KHR_cl_event
+ extension, then eglCreateSyncKHR may also be used to create a CL
+ event sync object. However, this use is not recommended because it
+ is not portable to platforms where OpenCL event handles are larger
+ than 32 bits."
+
+ Modify the ninth and tenth paragraphs, starting "When the condition":
+
+ "When the condition of the sync object is satisfied, the sync is
+ signaled by the associated client API context, causing any
+ eglClientWaitSyncKHR commands (see below) blocking on <sync> to unblock.
+
+ The only condition supported for fence sync objects is
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR, which is satisfied by completion
+ of the fence command corresponding to the sync object, and all preceding
+ commands in the associated client API context's command stream. The sync
+ object will not be signaled until all effects from these commands on the
+ client API's internal and framebuffer state are fully realized. No other
+ state is affected by execution of the fence command.
+
+ Each client API which supports fence commands indicates this support
+ in the form of a client API extension. If the GL_OES_EGL_sync
+ extension is supported by OpenGL ES (either version 1.x or 2.0), a
+ fence sync object may be created when the currently bound API is
+ OpenGL ES. If the VG_KHR_EGL_sync extension is supported by OpenVG,
+ a fence sync object may be created when the currently bound API is
+ OpenVG.
+
+ The only condition supported for CL event sync objects is
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR, which is satisfied when the status of
+ the OpenCL event associated with the sync object changes to CL_COMPLETE."
+
+ Add to the "Errors" section for eglCreateSyncKHR and eglCreateSync64KHR:
+
+ "* If <type> is EGL_SYNC_CL_EVENT_KHR then
+
+ ** If eglCreateSyncKHR was called, then EGL_NO_SYNC_KHR is returned and
+ an EGL_BAD_ATTRIBUTE error is generated.
+
+ ** If eglCreateSync64KHR was called and EGL_CL_EVENT_HANDLE_KHR is not
+ specified in <attrib_list>, or its attribute value is not a valid
+ OpenCL event handle returned by a call to clEnqueueReleaseGLObjects
+ or clEnqueueReleaseEGLObjects, then EGL_NO_SYNC_KHR is returned and
+ an EGL_BAD_ATTRIBUTE error is generated."
+
+ Replace the EGL_SYNC_CONDITION_KHR row of table 3.cc with:
+
+ "Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_CONDITION_KHR Signaling condition EGL_SYNC_FENCE_KHR or
+ EGL_SYNC_CL_EVENT_KHR
+
+ Table 3.cc Attributes Accepted by eglGetSyncAttribKHR Command"
+
+
+ Replace the second paragraph describing eglDestroySync with:
+
+ "If any eglClientWaitSyncKHR commands are blocking on <sync> when
+ eglDestroySyncKHR is called, <sync> is flagged for deletion and will
+ be deleted when the associated fence command or CL event object has
+ completed, and <sync> is no longer blocking any eglClientWaitSyncKHR
+ command. Otherwise, the sync object is destroyed immediately."
+
+Sample Code
+
+ None
+
+Conformance Tests
+
+ None yet
+
+Issues
+
+ Note that some issues from the EGL_KHR_cl_event and EGL_KHR_fence_sync
+ extensions also apply to this extension, which incorporates
+ functionality from both of those extensions while making it usable on a
+ 64-bit architecture. Issues specific to this extension are below.
+
+ 1) Why does this extension exist?
+
+ The existence of this extension is an unfortunate necessity. Khronos did
+ not define EGLint as a 64-bit type in the version of <khrplatform.h> we
+ provided, assuming that vendors on those platforms would do so. By the
+ time we discovered that not all vendors had done this, it was too late
+ to fix, because ABI considerations made it impossible for those vendors
+ to change to a 64-bit EGLint type. Our only option was to define new
+ extensions and commands using a new attribute type, EGLAttribKHR, which
+ is explicitly large enough to hold a pointer or handle.
+
+ 2) What is the relationship of this extension to EGL_KHR_cl_event?
+
+ RESOLVED: The only functional difference is that the new
+ eglCreateSync64KHR command must be used to create CL event sync objects.
+ This is necessary because some 64-bit platforms define EGLint as a
+ 32-bit type, making it impossible to pass an arbitrary OpenCL event
+ handle in the EGLint *attrib_list passed to eglCreateSyncKHR.
+
+ 3) How are pointer- and handle-sized attributes represented?
+
+ RESOLVED: Using the new type EGLAttribKHR, which is explicitly defined
+ as an integer type large enough to hold a pointer.
+
+ EGLAttribKHR is defined as an alias of the ISO C intptr_t type, rather
+ than using one of the explicitly-sized types from khrplatform.h.
+ Requiring this means that khrplatform.h must make sure to include the
+ appropriate header file (probably <stdint.h>) and that a C compiler
+ supporting intptr_t must be used. In the past we were concerned about
+ older C/C++ compilers, but this seems an acceptable choice in 2013.
+
+ We could choose to use intptr_t as the base type of attribute lists,
+ instead of the EGLAttribKHR alias. As Ian Romanick has pointed out
+ passionately in ARB discussions, modern C compilers are required to
+ support a well-defined set of scalar types. There is no requirement to
+ use API-specific scalar types when explicitly defining a C API.
+
+ However, there is some value in semantically tagging parameters with EGL
+ types. Also, using 'intptr_t *attrib_list' would be cosmetically
+ objectionable due to mixing EGL* and C native scalar types in EGL APIs.
+
+ We probably want to wait until there's an EGL API compatibility break -
+ a hypothetical "EGL 2.0" - before moving to native ISO C types in our
+ interfaces.
+
+ 4) Why is the new fence sync creation function defined here, instead of
+ in a separate EGL_KHR_fence_sync2 extension?
+
+ RESOLVED: eglCreateSync64KHR is defined here because this is the only
+ functionality requiring it, and we expect this extension to be a stopgap
+ for 64-bit platforms until the time that EGL 1.5 is defined. The EGL 1.5
+ core will presumably include only the EGLAttribKHR-based version of this
+ command.
+
+ If there are any new extensions using handle or pointer attributes in
+ the meantime, they should copy the EGLAttribKHR and eglCreateSync64KHR
+ language here as required. There is no harm in defining the same type or
+ command in multiple extensions, so long as the definitions are
+ compatible.
+
+ 5) Why is the new command called eglCreateSync64KHR?
+
+ UNRESOLVED: For consistency with OpenGL, which has '64'-suffixed
+ commands for representing 64-bit integers and arbitrary offsets into GPU
+ memory. If we ever support EGL on 128-bit platforms this would be a
+ silly naming convention, but that time is probably many decades away and
+ by then EGL 1.5 should be defined and widely supported. The name
+ eglCreateSync2KHR was originally suggested.
+
+ 6) Why is there no command for querying EGLAttribKHR attributes from
+ sync objects?
+
+ RESOLVED: Because the only sync attribute which requires the extra bits
+ in an EGLAttribKHR type is EGL_CL_EVENT_HANDLE_KHR, which is not
+ queryable. Sync attributes which are queryable will all fit into the
+ EGLint returned by eglGetSyncAttribKHR.
+
+ NOTE: It's unfortunate that this name is used, since it uses the
+ "AttribKHR" name for command returning EGLints. In EGL 1.5 we should use
+ a different name for the query.
+
+ 7) Does this extension replace EGL_KHR_fence_sync and EGL_KHR_cl_event?
+
+ RESOLVED: It does not replace EGL_KHR_fence_sync, but extends it to
+ support creation of a new type of sync object, the CL event sync object.
+
+ RESOLVED: It is intended to replace EGL_KHR_cl_event; this extension
+ must be used for OpenCL interop on 64-bit platforms, and we hope all
+ vendors will implement it even on 32-bit platforms, for maximum code
+ portability.
+
+Revision History
+
+ Version 5, 20130/12/04 (Jon Leech) - minor cleanup for public release.
+
+ Version 4, 20130/10/16 (Jon Leech) - add Dependencies and Overview text
+ noting that this extension obsoletes and should replace
+ EGL_KHR_cl_event.
+
+ Version 3, 20130/10/15 (Jon Leech) - change type of EGLAttribKHR from
+ uintptr to intptr (Bug 11027).
+
+ Version 2, 20130/10/12 (Jon Leech) - merge EGL_KHR_fence_sync2 with this
+ extension, change the naming scheme, define EGLAttribKHR as uintptr_t,
+ and add a new issues list.
+
+ Version 1, 2010/10/02 (Tom Cooksey) - initial version based on
+ EGL_KHR_cl_event and adding 64-bit EGLAttrKHR variants.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_config_attribs.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_config_attribs.txt
new file mode 100644
index 0000000..65634ca
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_config_attribs.txt
@@ -0,0 +1,234 @@
+Name
+
+ KHR_config_attribs
+
+Name Strings
+
+ EGL_KHR_config_attribs
+
+Contributors
+
+ Jon Leech
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete
+
+Version
+
+ Version 5, April 5, 2007
+
+Number
+
+ EGL Extension #1
+
+Dependencies
+
+ Requires EGL 1.2
+
+ Some of the extended config attributes defined by this extension are
+ only relevant when specific client APIs are supported.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification. It exists for backwards compatibility with
+ functionality introduced in EGL 1.3.
+
+Overview
+
+ This extension adds new EGL config attributes and attribute bits
+ that express limitations of configs on a per-API basis, including
+ whether client APIs created with respect to a config are expected to
+ pass conformance, and which optional OpenVG color space and alpha
+ mask format attributes are valid at surface creation time.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New EGLConfig bitmask attribute name:
+
+ EGL_CONFORMANT_KHR 0x3042
+
+ Valid bitfields in the EGL_SURFACE_TYPE bitmask attribute
+ of EGLConfig:
+
+ EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+ EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+
+Additions to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add to table 3.1, "EGLConfig attributes":
+
+ Attribute Type Notes
+ --------- ---- -----
+ EGL_CONFORMANT_KHR bitmask whether contexts created with
+ this config are conformant
+
+ Add to table 3.2, "Types of surfaces supported by an EGLConfig":
+
+ EGL Token Name Description
+ -------------- -----------
+ EGL_VG_COLORSPACE_LINEAR_BIT_KHR EGLConfig supports OpenVG rendering
+ in linear colorspace
+ EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR EGLConfig supports OpenVG rendering
+ with premultiplied alpha
+
+ Add following the second paragraph of "Other EGLConfig Attribute
+ Descriptions" in section 3.4 on p. 16:
+
+ "If EGL_VG_COLORSPACE_LINEAR_BIT_KHR is set in EGL_SURFACE_TYPE,
+ then the EGL_COLORSPACE attribute may be set to
+ EGL_COLORSPACE_LINEAR when creating a window, pixmap, or pbuffer
+ surface (see section 3.5)."
+
+ "If EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR is set in EGL_SURFACE_TYPE,
+ then the EGL_ALPHA_FORMAT attribute may be set to
+ EGL_ALPHA_FORMAT_PRE when creating a window, pixmap, or pbuffer
+ surface (see section 3.5)."
+
+ Add at the end of the fourth paragraph (description of
+ EGL_CONFIG_CAVEAT) on p. 17:
+
+ "... required OpenGL ES conformance tests (note that
+ EGL_NON_CONFORMANT_CONFIG is obsolete, and the same information
+ can be obtained from the EGL_CONFORMANT_KHR attribute on a
+ per-client-API basis, not just for OpenGL ES."
+
+ "EGL_CONFORMANT_KHR is a mask indicating if a client API context
+ created with respect to the corresponding EGLConfig will pass
+ the required conformance tests for that API. The valid bit
+ settings are the same as for EGL_RENDERABLE_TYPE, as defined in
+ table 3.3, but the presence or absence of each client API bit
+ determines whether the corresponding context will be conformant
+ or non-conformant(fn1)."
+
+ "(fn1) most EGLConfigs should be conformant for all supported
+ client APIs. Conformance requirements limit the number of
+ non-conformant configs that an implementation can define."
+
+ Add to the last paragraph of section 3.5.1 on p. 24 (describing
+ eglCreateWindowSurface):
+
+ "If <config> does not support the colorspace or alpha format
+ attributes specified in <attrib_list> (e.g. if EGL_COLORSPACE is
+ specified as EGL_COLORSPACE_LINEAR but the EGL_SURFACE_TYPE
+ attribute of <config> does not include
+ EGL_VG_COLORSPACE_LINEAR_BIT_KHR, or if EGL_ALPHA_FORMAT is
+ specified as EGL_ALPHA_FORMAT_PRE but EGL_SURFACE_TYPE does not
+ include EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR), an EGL_BAD_MATCH error
+ is generated."
+
+ Add to the next-to-last paragraph of section 3.5.2 on p. 26
+ (describing eglCreatePbufferSurface):
+
+ "If <config> does not support the colorspace or alpha format
+ attributes specified in <attrib_list> (as defined for
+ eglCreateWindowSurface), an EGL_BAD_MATCH error is generated."
+
+ Add to the last paragraph of section 3.5.4 on p. 29 (describing
+ eglCreatePixmapSurface):
+
+ "If <config> does not support the colorspace or alpha format
+ attributes specified in <attrib_list> (as defined for
+ eglCreateWindowSurface), an EGL_BAD_MATCH error is generated."
+
+Issues
+
+ 1) How should colorspace and alpha format restrictions be specified?
+ OpenVG implementations may not allow linear colorspace or
+ premultiplied alpha rendering to all configs they support.
+
+ RESOLVED: To maximize compatibility with EGL 1.3, we continue to
+ specify the desired colorspace and alpha format at surface
+ creation time. However, surface creation may fail if if the
+ specified colorspace or alpha format are not supported.
+
+ To allow apps to detect this situation, this extension adds
+ EGLConfig attributes specifying *if* linear colorspace and/or
+ premultiplied alpha formats are supported. If they are not
+ supported, surface creation with the corresponding attributes
+ set will fail with an EGL_BAD_MATCH error.
+
+ 2) How should the colorspace and alpha format capabilities be
+ exposed in EGLConfigs?
+
+ RESOLVED: as bitfields of the existing EGL_SURFACE_TYPE bitmask
+ attribute.
+
+ A separate bitmask might be more orthogonal, but there are
+ plenty of unused bits in EGL_SURFACE_TYPE and this minimizes API
+ and programming complexity.
+
+ 3) Are support for linear colorspace and and premultiplied alpha
+ formats orthogonal?
+
+ RESOLVED: Yes, according to the OpenVG Working Group. If they
+ were not orthogonal, we could not specify them as independent
+ bitfields.
+
+ 4) Should information about conformance be specified on a
+ per-client-API basis?
+
+ RESOLVED: Yes. This is needed for conformance testing and cannot
+ be expressed by the EGL_CONFIG_CAVEAT attribute, which is OpenGL
+ ES-specific.
+
+ 5) Should there also be a config attribute which specifies whether
+ EGL_RENDER_BUFFER will be respected?
+
+ UNRESOLVED: it would be consistent to add this attribute. but
+ it's not clear if there's a requirement for doing so yet.
+
+ 6) Does this extension introduce a regression against EGL 1.2?
+
+ RESOLVED: Yes. This is unavoidable, since we're allowing failure
+ of surface creation that was required to succeed in the past.
+ However, implementations that could not support the required
+ colorspace or alpha mask format were effectively non-conformant
+ (e.g. broken) in any event. The new EGL_SURFACE_TYPE attributes
+ at least allow apps to know that their request will not be
+ satisfied.
+
+Dependencies on OpenGL ES
+
+ If OpenGL ES is not supported, the EGL_OPENGL_ES_BIT in the
+ EGL_CONFORMANT_KHR is irrelevant.
+
+Dependencies on OpenVG
+
+ If OpenVG is not supported, the EGL_OPENVG_BIT bit in
+ EGL_CONFORMANT_KHR, and the EGL_VG_COLORSPACE_LINEAR_BIT_KHR and
+ EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR bits in EGL_SURFACE_TYPE, are
+ irrelevant.
+
+Revision History
+
+ Version 5, 2007/04/05 - add enum values corresponding to EGL 1.3
+ core features.
+ Version 4, 2006/10/24 - prefix the bitfield names with "VG" to
+ clarify that they only apply to OpenVG rendering to surfaces
+ (although the corresponding core EGL_COLORSPACE and
+ EGL_ALPHA_FORMAT attribute names do not currently include this
+ prefix). Use "KHR" suffix instead of "OES".
+ Version 3, 2006/10/15 - add new config attribute to express whether
+ configs are conformant on a per-API basis. Correct sRGB
+ terminology to linear (sRGB is the default, linear colorspace
+ rendering may not be supported). Change extension name
+ accordingly.
+ Version 2, 2006/09/26 - add _OES extension suffix to bitfield names.
+ Version 1, 2006/09/26 - first draft.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context.txt
new file mode 100644
index 0000000..8c992c6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context.txt
@@ -0,0 +1,648 @@
+Name
+
+ KHR_create_context
+
+Name Strings
+
+ EGL_KHR_create_context
+
+Contact
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Approved by the Khronos Board of Promoters on February 3, 2012
+ Updated in version 14 to add ES3 context creation bit - see Issue 8
+
+Version
+
+ Version 16, 2015/01/15
+
+Number
+
+ EGL Extension #39
+
+Dependencies
+
+ EGL 1.4 is required.
+
+ Some of the capabilities of these extensions are only available when
+ OpenGL and OpenGL ES contexts supporting specific versions, specific
+ profiles, or specific extensions can be created. All such restrictions
+ are documented in the body of this extension specification.
+
+Overview
+
+ With the advent of new versions of OpenGL which deprecate features
+ and/or break backward compatibility with older versions, there is a need
+ and desire to indicate at context creation which interface will be used.
+ This extension adds a new context creation routine with attributes
+ specifying the OpenGL version, context properties, and profile requested
+ for the context. It also allows making an OpenGL 3.0 or later context
+ (or other client API context supporting the ability) current without
+ providing a default framebuffer. The new context creation attributes
+ are also defined to work for OpenGL ES context creation when that
+ makes sense, and the extension has been augmented to allow configs to
+ advertise support for creating OpenGL ES 3.0 contexts.
+
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as an attribute name in the <*attrib_list> argument of
+ eglCreateContext:
+
+ EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+ (this token is an alias for EGL_CONTEXT_CLIENT_VERSION)
+ EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+ EGL_CONTEXT_FLAGS_KHR 0x30FC
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+
+ Accepted as a bitfield value in the EGL_RENDERABLE_TYPE config
+ attribute to eglChooseConfig:
+
+ EGL_OPENGL_ES3_BIT_KHR 0x0040
+
+ Accepted as attribute values for
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR:
+
+ EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+ EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
+
+ Accepted as bits in the attribute value for EGL_CONTEXT_FLAGS_KHR in
+ <*attrib_list>:
+
+ EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
+ EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+
+ Accepted as bits in the attribute value for
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR in <*attrib_list>:
+
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+ EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+
+Additions to the OpenGL / WGL / GLX Specifications
+
+ None. This specification is written for EGL.
+
+Additions to the EGL 1.4 Specification
+
+ Add to table 3.3 "Types of client APIs supported by an EGLConfig"
+
+ "EGL Token Name Client API and Version Supported
+ ---------------------- --------------------------------
+ EGL_OPENGL_ES3_BIT_KHR OpenGL ES 3.x"
+
+ Modify the last sentence of section 3.5.2 "Creating Off-Screen
+ Rendering Surfaces"
+
+ "Finally, an EGL_BAD_ATTRIBUTE error is generated if ... <config> does
+ not support OpenGL ES rendering (e.g. the EGL_RENDERABLE_TYPE
+ attribute does not include at least one of EGL_OPENGL_ES_BIT,
+ EGL_OPENGL_ES2_BIT, or EGL_OPENGL_ES3_BIT_KHR."
+
+ Modify section 3.7 "Rendering Contexts" in the paragraph near
+ the top of page 42:
+
+ "Only one OpenGL or OpenGL ES context may be current to a particular
+ thread, even if the implementation supports OpenGL and one or more
+ versions of OpenGL ES in the same runtime [fn12]."
+
+ Replace section 3.7.1 "Creating Rendering Contexts" from the
+ sixth paragraph through the end of the subsection with:
+
+ "<attrib_list> specifies a list of attributes for the context. The
+ list has the same structure as described for eglChooseConfig. If an
+ attribute is not specified in <attrib_list>, then the default value
+ specified below is used instead. Most attributes are only meaningful
+ for specific client APIs, and will generate an error when specified
+ to create for another client API context.
+
+ OpenGL and OpenGL ES Context Versions
+ -------------------------------------
+
+ The values for attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
+ EGL_CONTEXT_MINOR_VERSION_KHR specify the requested client API
+ version. They are only meaningful for OpenGL and OpenGL ES contexts,
+ and specifying them for other types of contexts will generate an
+ error.
+
+ When the current rendering API is EGL_OPENGL_ES_API or
+ EGL_OPENGL_API, the values of EGL_CONTEXT_MAJOR_VERSION_KHR (the
+ <major version> and EGL_CONTEXT_MINOR_VERSION_KHR (the <minor
+ version>) request creation of an OpenGL ES or OpenGL context,
+ respectively, supporting the specified version (<major>.<minor>) of
+ that client API.
+ [fn: the EGL 1.4 token EGL_CONTEXT_CLIENT_VERSION is an alias for
+ EGL_CONTEXT_MAJOR_VERSION_KHR, and the tokens may be used
+ interchangeably.]
+ If successful, the context returned must be <backwards compatible>
+ with the requested version. Backwards compatibility is determined as
+ follows:
+
+ If the current rendering API is EGL_OPENGL_ES_API, then:
+
+ * If version 1.0 is requested, the context returned may implement
+ either OpenGL ES 1.0 or OpenGL ES 1.1.
+
+ * If version 1.1 is requested, the context returned must implement
+ OpenGL ES 1.1.
+
+ * If version 2.0, version 3.0, or a later version (when later
+ versions are defined by Khronos) is requested, the context
+ returned must implement the requested OpenGL ES version, or any
+ later version which is backwards compatible with the requested
+ version.
+
+ If the current rendering API is EGL_OPENGL_API, then:
+
+ * If a version less than or equal to OpenGL 3.0 is requested, the
+ context returned may implement any of the following versions:
+
+ * Any version no less than that requested and no greater than
+ 3.0.
+ * Version 3.1, if the GL_ARB_compatibility extension is also
+ implemented.
+ * The compatibility profile of version 3.2 or greater.
+
+ * If OpenGL 3.1 is requested, the context returned may implement
+ any of the following versions:
+
+ * Version 3.1. The GL_ARB_compatibility extension may or may
+ not be implemented, as determined by the implementation.
+ * The core profile of version 3.2 or greater.
+
+ * If OpenGL 3.2 or greater is requested, the context returned may
+ implement any of the following versions:
+
+ * The requested profile (see
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR below) of the requested
+ version.
+ * The requested profile of any later version, so long as no
+ features have been removed from that later version and
+ profile.
+
+ Typically, the implementation will return the most recent version of
+ OpenGL it supports which is backwards compatible with the requested
+ version.
+
+ Querying the GL_VERSION string with glGetString in either OpenGL or
+ OpenGL ES (or the GL_MAJOR_VERSION and GL_MINOR_VERSION values with
+ glGetIntegerv, in an OpenGL 3.0 or later context) will return the
+ actual version supported by a context.
+
+ The default values for EGL_CONTEXT_MAJOR_VERSION_KHR and
+ EGL_CONTEXT_MINOR_VERSION_KHR are 1 and 0 respectively.
+
+ OpenGL Context Profiles
+ -----------------------
+
+ The value for attribute EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR
+ specifies a <profile> of the OpenGL API. This attribute is only
+ meaningful for OpenGL contexts, and specifying it for other types of
+ contexts, including OpenGL ES contexts, will generate an error.
+
+ When the current rendering API is EGL_OPENGL_API, the value of
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR requests an OpenGL context
+ supporting the corresponding profile. If the
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR bit is set in the attribute
+ value, then a context implementing the <core> profile of OpenGL is
+ returned. If the EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR
+ bit is set, then a context implementing the <compatibility> profile
+ is returned. If the requested OpenGL version is less than 3.2,
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is ignored and the functionality
+ of the context is determined solely by the requested version.
+
+ Querying the value of GL_CONTEXT_PROFILE_MASK with glGetIntegerv
+ will return the profile mask used to create the context. This query
+ is only supported in an OpenGL 3.2 or later context.
+
+ The default value for EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR. All OpenGL 3.2 and later
+ implementations are required to implement the core profile, but
+ implementation of the compatibility profile is optional.
+
+ If the core profile is requested, then the context returned cannot
+ implement functionality defined only by the compatibility profile.
+
+ OpenGL and OpenGL ES Context Flags
+ ----------------------------------
+
+ The value for attribute EGL_CONTEXT_FLAGS_KHR specifies a set of flag
+ bits affecting the context. Flag bits are only meaningful when creating
+ certain types of contexts, as described for each bit below, and
+ specifying such a flag bit when creating another type of context will
+ generate an error.
+
+ If the EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR flag bit is set in
+ EGL_CONTEXT_FLAGS_KHR, then a <debug context> will be created. Debug
+ contexts are intended for use during application development, to
+ provide additional runtime checking, validation, and logging
+ functionality while possibly incurring performance penalties. The
+ additional functionality provided by debug contexts may vary
+ according to the implementation(fn). In some cases a debug context
+ may be identical to a non-debug context. This bit is supported for
+ OpenGL and OpenGL ES contexts.
+ [fn: Khronos is still defining the expected and required
+ features of debug contexts, so implementations are
+ currently free to implement "debug contexts" with little or
+ no debug functionality. However, OpenGL and OpenGL ES
+ implementations supporting the GL_KHR_debug extension
+ should enable it when this bit is set.]
+ [fn2: See issue 9 below for discussion of backwards
+ compatibility issues with the debug bit and OpenGL ES
+ contexts.]
+
+ If the EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR flag bit is set
+ in EGL_CONTEXT_FLAGS_KHR, then a <forward-compatible> context will
+ be created. Forward-compatible contexts are defined only for OpenGL
+ versions 3.0 and later. They must not support functionality marked
+ as <deprecated> by that version of the API, while a
+ non-forward-compatible context must support all functionality in
+ that version, deprecated or not. This bit is supported for OpenGL
+ contexts, and requesting a forward-compatible context for OpenGL
+ versions less than 3.0 will generate an error.
+
+ If the EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR bit is set in
+ EGL_CONTEXT_FLAGS_KHR, then a context supporting <robust buffer
+ access> will be created. Robust buffer access is defined in the
+ GL_ARB_robustness extension specification, and the resulting context
+ must also support either the GL_ARB_robustness extension, or a
+ version of OpenGL incorporating equivalent functionality. This bit
+ is supported for OpenGL contexts.
+
+ The default value of EGL_CONTEXT_FLAGS_KHR is zero.
+
+ OpenGL Context Reset Notification
+ ---------------------------------
+
+ The attribute name
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR specifies the
+ <reset notification behavior> of the rendering context. This
+ attribute is only meaningful for OpenGL contexts, and specifying it
+ for other types of contexts, including OpenGL ES contexts, will
+ generate an error.
+
+ Reset notification behavior is defined in the GL_ARB_robustness
+ extension specification, and the resulting context must also support
+ either the GL_ARB_robustness extension, or a version of OpenGL or
+ incorporating equivalent functionality. The attribute value may be
+ either EGL_NO_RESET_NOTIFICATION_KHR or
+ EGL_LOSE_CONTEXT_ON_RESET_KHR, which respectively result in reset
+ notification behavior of GL_NO_RESET_NOTIFICATION_ARB and
+ GL_LOSE_CONTEXT_ON_RESET_ARB, as described by GL_ARB_robustness. The
+ default value for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR
+ is EGL_NO_RESET_NOTIFICATION_KHR.
+
+ Errors
+ ------
+
+ On failure eglCreateContext returns EGL_NO_CONTEXT and generates an
+ EGL error with extended error information. Conditions that cause
+ failure include:
+
+ * If an attribute is specified that is not meaningful for the
+ client API type determined by the current rendering API, an
+ EGL_BAD_ATTRIBUTE error is generated.
+
+ * If the current rendering api is EGL_NONE, then an EGL_BAD_MATCH
+ error is generated (this situation can only arise in an
+ implementation which does not support OpenGL ES 1.x, and prior to
+ the first call to eglBindAPI).
+
+ * If share_context is neither EGL_NO_CONTEXT nor a valid context
+ of the same client API type as the newly created context, then
+ an EGL_BAD_CONTEXT error is generated.
+
+ * If <config> is not a valid EGLConfig, or does not support the
+ requested client API, then an EGL_BAD_CONFIG error is generated
+ (this includes requesting creation of an OpenGL ES 1.x, 2.0, or
+ 3.0 context when the EGL_RENDERABLE_TYPE attribute of <config>
+ does not contain EGL_OPENGL_ES_BIT, EGL_OPENGL_ES2_BIT, or
+ EGL_OPENGL_ES3_BIT_KHR respectively).
+
+ * If <config> does not support a client API context compatible
+ with the requested API major and minor version, context flags,
+ and context reset notification behavior (for client API types
+ where these attributes are supported), then an EGL_BAD_MATCH
+ error is generated.
+
+ * If an OpenGL context is requested, the requested version is
+ greater than 3.2, and the value for attribute
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR has no bits set; has any
+ bits set other than EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR and
+ EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; has more than
+ one of these bits set; or if the implementation does not support
+ the requested profile, then an EGL_BAD_MATCH error is generated.
+
+ * If an OpenGL or OpenGL ES context is requested and the server
+ context state for <share_context> exists in an address space
+ that cannot be shared with the newly created context, if
+ <share_context> was created on a different display than the one
+ referenced by <config>, if the reset notification behavior of
+ <share_context> and the newly created context are different, or
+ if the contexts are otherwise incompatible (for example, one
+ context being associated with a hardware device driver and the
+ other with a software renderer), then an EGL_BAD_MATCH error is
+ generated.
+
+ * If the server does not have enough resources to allocate the new
+ context, then an EGL_BAD_ALLOC error is generated.
+
+ * If an OpenGL context is requested and the values for attributes
+ EGL_CONTEXT_MAJOR_VERSION_KHR and EGL_CONTEXT_MINOR_VERSION_KHR,
+ when considered together with the value for attribute
+ EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR, specify an OpenGL
+ version and feature set that are not defined, than an
+ EGL_BAD_MATCH error is generated.
+
+ The defined versions of OpenGL at the time of writing are OpenGL
+ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 2.0, 2.1, 3.0, 3.1, 3.2, 4.0, 4.1,
+ 4.2, and 4.3. Feature deprecation was introduced with OpenGL
+ 3.0, so forward-compatible contexts may only be requested for
+ OpenGL 3.0 and above. Thus, examples of invalid combinations of
+ attributes include:
+
+ - Major version < 1 or > 4
+ - Major version == 1 and minor version < 0 or > 5
+ - Major version == 2 and minor version < 0 or > 1
+ - Major version == 3 and minor version < 0 or > 2
+ - Major version == 4 and minor version < 0 or > 3
+ - Forward-compatible flag set and major version < 3
+
+ Because the purpose of forward-compatible contexts is to allow
+ application development on a specific OpenGL version with the
+ knowledge that the app will run on a future version, context
+ creation will fail if
+ EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR is set and the
+ context version returned cannot implement exactly the requested
+ version.
+
+ * If an OpenGL ES context is requested and the values for
+ attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
+ EGL_CONTEXT_MINOR_VERSION_KHR specify an OpenGL ES version that
+ is not defined, than an EGL_BAD_MATCH error is generated.
+
+ The defined versions of OpenGL ES at the time of writing are
+ OpenGL ES 1.0, 1.1, 2.0, and 3.0. Examples of invalid
+ combinations of attributes include:
+
+ - Major version < 1 or > 3
+ - Major version == 1 and minor version < 0 or > 1
+ - Major version == 2 and minor version != 0
+ - Major version == 3 and minor version != 0
+
+ * If an attribute name or attribute value in <attrib_list> is not
+ recognized (including undefined or unsupported bits in bitmask
+ attributes), then an EGL_BAD_ATTRIBUTE error is generated."
+
+ In section 3.7.3, replace the following two error conditions in the
+ list of eglMakeCurrent errors:
+
+ " * If <ctx> is not a valid context, an EGL_BAD_CONTEXT error is
+ generated.
+ * If either <draw> or <read> are not valid EGL surfaces, an
+ EGL_BAD_SURFACE error is generated."
+
+ with the following error conditions:
+
+ " * If <ctx> is not a valid context and is not EGL_NO_CONTEXT, an
+ EGL_BAD_CONTEXT error is generated.
+ * If either <draw> or <read> are not valid EGL surfaces and are
+ not EGL_NO_SURFACE, an EGL_BAD_SURFACE error is generated.
+ * If <ctx> is EGL_NO_CONTEXT and either <draw> or <read> are not
+ EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
+ * If either of <draw> or <read> is a valid surface and the other
+ is EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
+ * If <ctx> does not support being bound without read and draw
+ surfaces, and both <draw> and <read> are EGL_NO_SURFACE, an
+ EGL_BAD_MATCH error is generated."
+
+ Replace the paragraph starting "If <ctx> is EGL_NO_CONTEXT and
+ <draw> and <read> are not EGL_NO_SURFACE..." with
+
+ "If both <draw> and <read> are EGL_NO_SURFACE, and <ctx> is an OpenGL
+ context supporting version 3.0 or later of the OpenGL API, then no
+ error is generated and the context is made current without a
+ <default framebuffer>. The meaning of this is defined in chapter 4
+ of the OpenGL 3.0 Specification."
+
+ Append to the paragraph starting "The first time an OpenGL or OpenGL
+ ES context is made current..." with
+
+ "If the first time <ctx> is made current, it is without a default
+ framebuffer (e.g. both <draw> and <read> are EGL_NO_SURFACE), then
+ the viewport and scissor regions are set as though
+ glViewport(0,0,0,0) and glScissor(0,0,0,0) were called."
+
+
+Errors
+
+ EGL errors for eglCreateContext as described in the body of the
+ specification.
+
+ eglMakeCurrent error behavior is relaxed to allow making an OpenGL
+ 3.0 or later context current without a default read or draw
+ framebuffer.
+
+Conformance Tests
+
+ TBD
+
+Sample Code
+
+ TBD
+
+Issues
+
+ Non-window-system dependent issues described in the
+ WGL_ARB_create_context extension specification in the OpenGL
+ Registry apply to EGL_KHR_create_context.
+
+ 1) Do enumerant values need to be shared with the equivalent WGL / GLX
+ extensions?
+
+ Mostly not. The only case where it's fairly important that the
+ values be identical is the EGL_CONTEXT_FLAGS_KHR attribute bitmask
+ values, which are also exposed through an OpenGL query.
+
+ 2) Why are some attribute values named EGL_CONTEXT_OPENGL_*?
+
+ It is possible that context flags and profiles will eventually be
+ defined for client APIs other than OpenGL. To allow for this
+ possibility, the names of the corresponding attribute values are
+ distinguished. For example, EGL_CONTEXT_FLAGS_KHR currently only has
+ flags defined for OpenGL context creation, and those flags are named
+ EGL_CONTEXT_OPENGL_*_BIT_KHR, but in time OpenVG context creation
+ might allow flags as well. Such flags would be named
+ EGL_CONTEXT_OPENVG_*_BIT_KHR.
+
+ 3) Why does EGL_CONTEXT_MAJOR_VERSION_KHR have a distinct numeric token
+ value when it is functionally equivalent to
+ EGL_CONTEXT_CLIENT_VERSION?
+
+ It no longer has a distinct token value; see issue 1.
+
+ 4) How will future versions of OpenGL ES interact with this extension?
+
+ Later context versions which are backwards compatibile with the
+ requested version can be returned, just as with OpenGL contexts.
+
+ 5) What happens when requesting a context requiring OpenGL functionality
+ that cannot be supported by the underlying GL implementation, such as
+ requesting lost context reset notification and/or robust buffer access
+ when the implementation does not support the functionality defined by
+ GL_ARB_robustness?
+
+ Context creation will fail and an EGL_BAD_MATCH error will be
+ generated. This case is included under the general language of the
+ fifth bullet point under "Errors" but this issue is added to for
+ clarity.
+
+ 6) How is robust buffer access and reset notification supported under
+ OpenGL ES?
+
+ RESOLVED: It is an error to request robust buffer access and/or reset
+ notification for OpenGL ES contexts. Exposing robust buffer access and
+ reset notification for OpenGL ES contexts may be defined in a future EGL
+ extension.
+
+ 7) Future support for OpenGL ES context creation.
+
+ If and when features available for OpenGL context creation are defined
+ for OpenGL ES context creation in the future, debug contexts, forward
+ compatible contexts, and robust buffer access contexts may be specified
+ using separate attributes rather than bitmasks. The reset notification
+ behavior attribute may be extended to cover OpenGL ES as well as OpenGL.
+
+ 8) Why was the EGL_OPENGL_ES3_BIT_KHR added in version 13 of the
+ extension? Doesn't this break backwards compatibility with older
+ versions of the extension?
+
+ Applications need the functionality to be confident that context
+ creation of an OpenGL ES 3.0 context will succeed (rather than trying
+ it with different configs until one that succeeds is found).
+
+ If this bit is passed into eglChooseConfig and the implementation
+ supports only an older version of the extension, an EGL_BAD_ATTIBUTE
+ error should be generated. Since no matching configs will be found, a
+ robustly-written application will fail (or fall back to an ES 2.0
+ rendering path) at this point. This is the same application behavior
+ that should result from not finding a matching config on an
+ implementation supporting version 13 of the extension, even though the
+ failure mode is different (EGL error vs. returning no matching
+ configs). The EGL Working Group considers this sufficiently benign
+ behavior, and the functionality important enough, to make the change.
+
+ 9) Why was OpenGL ES support for EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR added
+ in version 15 of the extension? Doesn't this break backwards
+ compatibility with older versions of the extension?
+
+ Now that the GL_KHR_debug extension is ratified and available,
+ OpenGL ES implementers needed a way to enable debug functionality,
+ and wanted to use the same mechanism as OpenGL. There is no
+ discovery mechanism for this capability, so an application creating
+ a OpenGL ES context with the debug bit set and running against an
+ older EGL driver should generate an error. The OpenGL ES Working
+ Group considers this benign behavior.
+
+ 10) Which error should be generated if robust buffer access or reset
+ notifications are requested under OpenGL ES?
+
+ As per Issue 6, this extension does not support creating robust contexts
+ for OpenGL ES. This is only supported via the EGL_EXT_create_context_-
+ robustness extension.
+
+ Attempting to use this extension to create robust OpenGL ES context
+ will generate an EGL_BAD_ATTRIBUTE error. This specific error is generated
+ because this extension does not define the EGL_CONTEXT_OPENGL_ROBUST_-
+ ACCESS_BIT_KHR and EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR bits
+ for OpenGL ES contexts. Thus, use of these bits fall under condition
+ described by: "If an attribute is specified that is not meaningful for
+ the client API type.." in the above specification.
+
+Revision History
+
+ Version 16, 2015/01/15
+ - Add issue 10.
+
+ Version 15, 2013/03/27
+ - Add OpenGL ES support for debug contexts (Bug 10035).
+
+ Version 14, 2012/09/19
+ - Assign enum value to new bit and published updated extension.
+
+ Version 13, 2012/07/29
+ - Add EGL_OPENGL_ES3_BIT_KHR to table 3.3 and sections 3.5.2, 3.7,
+ and 3.7.1. Add issue 8 explaining the addition.
+
+ Version 12, 2012/07/25
+ - Explicitly describe new OpenGL 4.3 and OpenGL ES 3.0 versions.
+ This is not a behavior change (Khronos Bug 9136).
+ - Make spec consistent so that asking for a forward-compatible GL
+ context for versions less than 3.0 is an error (Bug 9314).
+ - Change nonexistent EGL_BAD_PROFILE_KHR error generated when
+ asking for an unsupported or nonexistent GL profile to an
+ EGL_BAD_MATCH error (Bug 9314).
+ - Fix typos in spec body for several new tokens of form
+ "EGL_CONTEXT_OPENGL_*" which were missing the "OPENGL_" part
+ (Bug 9314).
+
+ Version 11, 2012/07/09 - change nonexistent EGL_BAD_VALUE error
+ to EGL_BAD_ATTRIBUTE (Khronos Bug 9269).
+
+ Version 10, 2011/11/22 - fix typo.
+
+ Version 9, 2011/11/09 - resolve issue 6 and add issue 7, limiting
+ various context creation attributes to apply only to OpenGL and not
+ to OpenGL ES.
+
+ Version 8, 2011/10/20 - change spec body to match BAD_MATCH error
+ returned in issue 5 when specifying context version and attributes
+ that collectively cannot be satisfied.
+
+ Version 7, 2011/10/19 - add issue 5 clarifying context creation
+ failures when requesting functionality that cannot be supported by a
+ GL or ES context, and issue 6 discussing the meaning of "equivalent
+ to GL_ARB_robustness".
+
+ Version 6, 2011/10/19 - minor cleanup & clarification of OpenGL ES
+ version requests.
+
+ Version 5, 2010/09/22 - add context reset notification strategy
+ attributes from GLX/WGL context creation extensions.
+
+ Version 4, 2010/09/22 - fix typo. Assign enumerant values and update
+ issue 1 to match. Add caveat to errors section so that invalid
+ attribute values for EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR only raise
+ errors when requesting an OpenGL context of version 3.2 or greater
+ (bug 6374). Add issue 4 and allow ES 2.0 context creation requests
+ to return later versions that are backwards-compatible (bug 6374).
+
+ Version 3, 2010/07/21 - remove surfaceless bit in favor of separate
+ per-client-API extensions which promise that contexts of a given
+ client API type can be bound without surfaces on that display. Add
+ robust buffer access bit from equivalent WGL/GLX context creation
+ extensions. Rename EGL_CONTEXT_FLAGS_KHR so it's not specific to
+ OpenGL.
+
+ Version 2, 2010/06/29 - add EGL_CONTEXT_OPENGL_SURFACELESS_BIT_KHR
+ context flag bit (bug 6082).
+
+ Version 1, 2010/06/29 - Initial version based on equivalent
+ WGL_ARB_create_context and GLX_ARB_create_context extensions.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context_no_error.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context_no_error.txt
new file mode 100644
index 0000000..499293c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_create_context_no_error.txt
@@ -0,0 +1,142 @@
+Name
+
+ KHR_create_context_no_error
+
+Name Strings
+
+ EGL_KHR_create_context_no_error
+
+Contributors
+
+ Maurice Ribble
+ Dominik Witczak
+ Christophe Riccio
+ Piers Daniell
+ Jon Leech
+ James Jones
+ Daniel Kartch
+ Steve Hill
+ Jan-Harald Fredriksen
+
+Contact
+
+ Maurice Ribble (mribble 'at' qti.qualcomm.com)
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on May 8, 2015.
+
+Version
+
+ Version 6, May 8, 2015
+
+Number
+
+ EGL Extension #91
+
+Dependencies
+
+ Requires EGL 1.4.
+
+ Written against the EGL 1.4 specification.
+
+ This spec interacts with GL_KHR_no_error (or equivalent) extension.
+
+Overview
+
+ This extension allows the creation of an OpenGL or OpenGL ES context that
+ doesn't generate errors if the context supports a no error mode. The
+ implications of this feature are discussed in the GL_KHR_no_error
+ extension.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <*attrib_list> argument to
+ eglCreateContext:
+
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
+
+Additions to the EGL 1.4 Specification
+
+ Add the following to section 3.7.1 "Creating Rendering Contexts":
+
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR indicates whether a faster and lower power
+ mode should be enabled for the OpenGL ES context. In this mode instead of
+ GL errors occurring as defined in the OpenGL ES spec those errors will
+ result in undefined behavior. The default value of
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR is EGL_FALSE.
+
+Errors
+
+ BAD_MATCH is generated if the value of EGL_CONTEXT_OPENGL_NO_ERROR_KHR
+ used to create <share_context> does not match the value of
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR for the context being created.
+
+ BAD_MATCH is generated if the EGL_CONTEXT_OPENGL_NO_ERROR_KHR is TRUE at
+ the same time as a debug or robustness context is specified.
+
+New State
+
+ None
+
+Conformance Tests
+
+ TBD
+
+Issues
+
+ (1) How does this extension interact with debug and robust contexts?
+
+ RESOLVED: We decided it is an error in EGL if these bits were set at the same
+ time.
+
+ (2) Can a EGL_CONTEXT_OPENGL_NO_ERROR_KHR contexts share resources with
+ normal contexts?
+
+ RESOLVED: To join a share group all the contexts in that share group must
+ have this set the same or creation of the context fails.
+
+ (3) Can we also do this on GLX/WGL?
+
+ RESOLVED: This is an EGL extension. GLX/WGL should be handled with separate
+ extensions.
+
+ (4) Should this extension also expose a "no thread safety" mode? For example
+ to do the rendering on one thread but uploading data or compiling shaders
+ from others threads without having the cost of threaded safety kicking in
+ because none of these tasks overlap so we can handle with sync objects.
+ Compiling shaders, loading data and rendering are areas that removed
+ threading may help.
+
+ RESOLVED: No, this should be done as a separate extension.
+
+ (5) Should this be GL specific?
+
+ RESOLVED: Yes, because other context creation tokens have been API specific.
+ This is also the safer path since it's unknown if other APIs might want to do
+ this slightly differently.
+
+ (6) Should creating a context fail if the context created context does not
+ support a no error mode?
+
+ RESOLVED: No. Expect context creation to succeed even if the implementation
+ can't honor the request for a no error context. This reduces the number of
+ reasons creating a context can fail and seems to be a more forward looking
+ resolution considering context flags allow GL apps to query what context
+ flags are set.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ------------ --------- ----------------------------------------
+ 1 Jan 28, 2015 ribble Initial version
+ 2 Jan 29, 2015 ribble Added issues list
+ 3 Jan 30, 2015 ribble Split into separate GL and EGL extensions
+ 4 Feb 18, 2015 ribble Resolved issues and cleanup
+ 5 Feb 25, 2015 ribble Rename, better define errors and cleanup
+ 6 May 8, 2015 Jon Leech Assign enum value and release.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_debug.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_debug.txt
new file mode 100644
index 0000000..e839a9e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_debug.txt
@@ -0,0 +1,573 @@
+Name
+
+ KHR_debug
+
+Name Strings
+
+ EGL_KHR_debug
+
+Contributors
+
+ Jeff Vigil, Qualcomm
+ Brian Ellis, Qualcomm
+ (Original contributors of Gl_KHR_debug extension for OpenGL/GL_ES)
+ Mark Callow, HI
+ John Leech, Khronos
+ Ray Smith, ARM
+ Prabindh Sundareson, Texas Instruments
+ James Jones, NVIDIA
+ Jesse Hall, Google
+
+Contact
+
+ Jeff Vigil (jvigil 'at' qualcomm.com)
+
+Notice
+
+ Copyright (c) 2012-2015 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Approved by the EGL Working Group on 2015/04/24.
+ Approved by the Khronos Board of Promoters on 2015/06/26.
+
+Version
+
+ Version 18, Modified Date: September 28, 2016
+
+Number
+
+ EGL Extension #92
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Applicable to any version of EGL 1.x, but written in relationship
+ to EGL 1.5.
+
+Overview
+
+ This extension allows EGL to notify applications when various events
+ occur that may be useful during application development and debugging.
+
+ These events are represented in the form of debug messages with a
+ human-readable string representation. Examples of debug events include
+ errors due to incorrect use of the EGL API, warnings of undefined behavior,
+ and performance warnings.
+
+ The "type" of the message roughly identifies the nature of the event that
+ caused the message. Examples include input errors, performance
+ information, or warnings about undefined behavior.
+
+ Messages are communicated to the application through an application-
+ defined callback function that is called by the EGL implementation on
+ each debug message. The motivation for the callback routine is to free
+ application developers from actively having to query whether an EGL error,
+ or any other debuggable event has happened after each call to a EGL
+ function. With a callback, developers can keep their code free of debug
+ checks, set breakpoints in the callback function, and only have to react
+ to messages as they occur. The callback also offers much more information
+ than just an error code.
+
+ To control the volume of debug output, types of messages can be enabled or
+ disabled. The mechanism is controlled by attributes passed to EGL. The
+ state of the message type control can be queried.
+
+ Debug output can be enabled and disabled by changing the callback function.
+ NULL will disable the feature while a valid function pointer will enable
+ it.
+
+ Finally, this extension defines a mechanism for EGL applications to
+ label their objects (contexts, surfaces, syncs, etc.) with a pointer
+ to an application provided structure. This pointer can be a descriptive
+ string, identifier or pointer to a structure. This enables the application
+ to associate the EGL object with application information. EGL will not
+ interpret this pointer as a string or any other meaning - just attach to
+ the object and pass back in the callback when that object is the primary
+ object of an event.
+
+IP Status
+
+ No known IP claims.
+
+New Procedures and Functions
+
+ EGLint eglDebugMessageControlKHR(
+ EGLDEBUGPROCKHR callback,
+ const EGLAttrib* attrib_list);
+
+ EGLBoolean eglQueryDebugKHR(
+ EGLint attribute,
+ EGLAttrib* value);
+
+ EGLInt eglLabelObjectKHR(
+ EGLDisplay display,
+ EGLenum objectType,
+ EGLObjectKHR object,
+ EGLLabelKHR label);
+
+New Types
+
+ A general type to identify EGL objects, such as EGLSurface or EGLContext.
+
+ typedef void* EGLObjectKHR;
+
+ A label is a string, ID or pointer to a structure that the application
+ can attach to an EGL object.
+
+ typedef void* EGLLabelKHR;
+
+ The callback function that applications can define, and is accepted by
+ eglDebugMessageControlKHR, is defined as:
+
+ typedef void (APIENTRY *EGLDEBUGPROCKHR)(
+ EGLenum error,
+ const char *command,
+ EGLint messageType,
+ EGLLabelKHR threadLabel,
+ EGLLabelKHR objectLabel,
+ const char* message);
+
+New Tokens
+
+ Tokens accepted by the <objectType> parameter of function
+ eglLabelObjectKHR:
+
+ EGL_OBJECT_THREAD_KHR 0x33B0
+ EGL_OBJECT_DISPLAY_KHR 0x33B1
+ EGL_OBJECT_CONTEXT_KHR 0x33B2
+ EGL_OBJECT_SURFACE_KHR 0x33B3
+ EGL_OBJECT_IMAGE_KHR 0x33B4
+ EGL_OBJECT_SYNC_KHR 0x33B5
+ EGL_OBJECT_STREAM_KHR 0x33B6
+
+ Tokens provided by the <messageType> parameter of EGLDEBUGPROCKHR
+ or the attributes input to eglControlDebugMessageKHR or attribute
+ of eglQueryDebugKHR:
+
+ EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+ EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+ EGL_DEBUG_MSG_WARN_KHR 0x33BB
+ EGL_DEBUG_MSG_INFO_KHR 0x33BC
+
+ Tokens provided by the input attribute to eglQueryDebugKHR:
+
+ EGL_DEBUG_CALLBACK_KHR 0x33B8
+
+Additions to Chapter 3 of the EGL 1.5 Specification
+(EGL Functions and Errors)
+
+ Add new Section 3.13:
+
+ "3.13 - Debug Output
+
+ Application developers can obtain more information from EGL runtime in
+ the form of debug output. This information can include details about EGL
+ errors, undefined behavior, implementation-dependent performance warnings,
+ or other useful hints.
+
+ This information is communicated through a stream of debug messages that
+ are generated as EGL commands are executed. The application can
+ receive these messages through a callback routine.
+
+ Controls are provided for disabling classes of messages that the
+ application does not care about.
+
+ Debug output functionality is controlled with:
+
+ EGLint eglDebugMessageControlKHR(
+ EGLDEBUGPROCKHR callback,
+ const EGLAttrib* attrib_list);
+
+ If the <callback> parameter is NULL, then no messages are sent to the
+ callback function and the debug message generation is disabled. If the
+ <callback> parameter is a pointer to a valid callback function, as defined
+ by EGLDEBUGPROCKHR, then messages will be sent to that callback function.
+
+ The attribute list <attrib_list> contains a set of message type enums,
+ and each has a value of EGL_TRUE to enable that class of messages,
+ or value EGL_FALSE to disable that class of message.
+
+ If the <attrib_list> contains an unknown attribute or value the function
+ will return a EGL_BAD_ATTRIBUTE error.
+
+ If there is no error, then the function will set the updated callback,
+ set the updated message types and return EGL_SUCCESS.
+
+ The messages types, their purpose and initial states are given in
+ table 13.1 below. The parameter <attrib_list> needs only contain the
+ attributes to change; an application can call eglDebugMessageControl more
+ than once with a valid callback, and change the message type states as
+ desired.
+
+ When the callback is set to NULL; the attributes are reset to their
+ default values.
+
+ Debug Output Message Type Informs about Initial/Default state
+ ------------------------- ------------- ---------------------
+ EGL_DEBUG_MSG_CRITICAL_KHR Internal EGL driver failures ENABLED
+ i.e. EGL_BAD_ALLOC,
+ EGL_CONTEXT_LOST
+
+ EGL_DEBUG_MSG_ERROR_KHR Input and bad match errors ENABLED
+ i.e. EGL_BAD_CONTEXT,
+ EGL_BAD_PARAMETER...
+
+ EGL_DEBUG_MSG_WARN_KHR Warnings, code is EGL_SUCCESS, DISABLED
+ but message indicates
+ deprecated or inefficient
+ operation.
+
+ EGL_DEBUG_MSG_INFO_KHR Verbose operation DISABLED
+ Messages such as object
+ creation and destruction
+ or change in state.
+
+ ---------------------------------------------------------------------------
+ Table 13.1: Types of debug output messages. Each debug message is associated
+ with one of these types that describes the nature or class of the message.
+
+ 3.13.1 - Debug Message Callback
+
+ Applications must provide a callback function for receiving debug messages
+ of the following type:
+
+ typedef void (APIENTRY *EGLDEBUGPROCKHR)(
+ EGLenum error,
+ const char *command,
+ EGLint messageType,
+ EGLLabelKHR threadLabel,
+ EGLLabelKHR objectLabel,
+ const char* message);
+
+ The function's prototype must follow the type definition of EGLDEBUGPROCKHR.
+ Only one debug callback can be in-use for the application, and
+ further calls overwrite the previous callback. Specifying NULL as the
+ value of <callback> clears the current callback and disables message
+ output.
+
+ The callback will receive the following in its parameters:
+
+ <error> will contain an EGL error code, or EGL_SUCCESS, as applicable.
+
+ <command> will contain a pointer to a string. Example "eglBindApi".
+
+ <messageType> will contain one of the debug message types listed in
+ table 13.1.
+
+ <threadLabel> will contain the label attached to the current thread.
+ The <threadLabel> will be NULL if not set by the application. If the
+ message is from an internal thread, the label will be NULL.
+
+ <objectLabel> will contain the label attached to the primary object
+ of the message; Labels will be NULL if not set by the application.
+ The primary object should be the object the function operates on, see
+ table 13.2 which provides the recommended mapping between functions and
+ their primary object. This <objectLabel> may be NULL even though the
+ application labeled the object. This is because it is possible an error
+ was raised while executing the command before the primary object was
+ validated, therefore its label cannot be included in the callback.
+
+ <message> will contain a platform specific debug string message;
+ This string should provide added information to the application
+ developer regarding the condition that generated the message.
+ The format of a message is implementation-defined, although it should
+ represent a concise description of the event that caused the message
+ to be generated. Message strings can be NULL and should not be assumed
+ otherwise.
+
+ EGL Command Primary object
+ ------------------------- -------------
+
+ eglBindAPI thread
+ eglBindTexImage surface
+ eglChooseConfig display
+ eglClientWaitSync sync
+ eglCopyBuffers surface
+ eglCreateContext display
+ eglCreateImage display
+ eglCreatePbufferFromClientBuffer display
+ eglCreatePbufferSurface display
+ eglCreatePixmapSurface display
+ eglCreatePlatformWindowSurface display
+ eglCreatePlatformPixmapSurface display
+ eglCreateSync display
+ eglCreateWindowSurface display
+ eglDestroyContext context
+ eglDestroyImage image
+ eglDestroySurface surface
+ eglDestroySync sync
+ eglGetConfigAttrib display
+ eglGetConfigs display
+ eglGetCurrentContext context
+ eglGetCurrentDisplay display
+ eglGetCurrentSurface surface
+ eglGetDisplay thread
+ eglGetError thread
+ eglGetPlatformDisplay thread
+ eglGetSyncAttrib sync
+ eglInitialize display
+ eglMakeCurrent context
+ eglQueryAPI context
+ eglQueryContext context
+ eglQueryString display
+ eglQuerySurface surface
+ eglReleaseTexImage surface
+ eglReleaseThread thread
+ eglSurfaceAttrib surface
+ eglSwapBuffers surface
+ eglSwapInterval surface
+ eglTerminate display
+ eglWaitClient context
+ eglWaitGL context
+ eglWaitNative thread
+ eglWaitSync sync
+ eglDebugMessageControlKHR -none-
+ eglQueryDebugKHR -none-
+ eglLabelObjectKHR labeled object
+
+ ---------------------------------------------------------------------------
+ Table 13.2: Recommendation of primary object in a callback as result
+ of various EGL commands.
+
+ If the application has specified a <callback> function for receiving debug
+ output, the implementation will call that function whenever any enabled
+ message is generated. A message must be posted for every error since
+ debug messages can be used as an alternative to eglGetError() for error
+ detection and handling. Specifying a callback function does not affect the
+ behavior of eglGetError; errors are reported through both mechanisms.
+
+ Applications that specify a callback function must be aware of certain
+ special conditions when executing code inside a callback when it is
+ called by EGL. The memory for <message> is read-only, owned and managed
+ by EGL, and should only be considered valid for the duration of the
+ function call. Likewise the <command> string is read-only EGL managed
+ memory and should be considered valid only for the duration of the
+ callback.
+
+ Setting the label for EGL objects is optional and only intended for
+ applications to correlate application structures with EGL objects.
+ All object labels are initially NULL.
+
+ The behavior of calling any EGL operation, its client APIs, or window system
+ functions from within the callback function is undefined and may lead
+ to program termination. It should not be considered reentrant.
+
+ Only one debug callback may be registered at a time; registering a new
+ callback will replace the previous callback. The callback is used by any
+ thread that calls EGL, so if the application calls into EGL concurrently
+ from multiple threads it must ensure the callback is thread-safe.
+
+ EGL may employ internal threads to execute EGL commands. These threads can
+ post debug messages to the callback function. The labels for these
+ internal threads will be NULL.
+
+ 3.13.2 Debug Labels:
+
+ Debug labels provide a method for annotating any object (context, surface,
+ sync, etc.) with an application provided label. These labels may then be
+ used by the debug output or an external tool such as a debugger or profiler
+ to describe labeled objects.
+
+ The command
+
+ EGLint eglLabelObjectKHR(
+ EGLDisplay display,
+ EGLenum objectType,
+ EGLObjectKHR object,
+ EGLLabelKHR label);
+
+ enables the application to attach a label to a specified object.
+ The <display>, <objectType>, and <object> identify the object to be
+ labeled.
+
+ The <label> contains a pointer sized variable to attach to the
+ object. This label can be a integer identifier, string or pointer to a
+ application defined structure. EGL will not interpret this value;
+ it will merely provide it when the object is involved in a callback
+ message. The label for any object will initially be NULL until set by
+ the application.
+
+ An EGL_BAD_PARAMETER error is returned by eglLabelObjectKHR if <objectType>
+ doesn't match one of the object type enums. An EGL_BAD_PARAMETER is also
+ returned if the <objectType> is not a supported type; such as no support
+ for streams.
+
+ An EGL_BAD_PARAMETER error is returned by eglLabelObjectKHR if <object> is
+ invalid, unknown, NULL, or is not an object created with
+ EGLDisplay <display>.
+
+ When the <objectType> is EGL_OBJECT_THREAD_KHR, the <object> parameter
+ will be ignored by EGL. The thread is implicitly the active thread. It is
+ recommended that the application pass a NULL for the <object> parameter in
+ this case.
+
+ When the <objectType> is EGL_OBJECT_DISPLAY_KHR, the <object> parameter
+ must be the same as the <display> parameter - the Display to label. If
+ these do not match, in this case, a EGL_BAD_PARAMETER is generated.
+
+ The <display> does not need to be initialized for <objectType>
+ EGL_OBJECT_THREAD_KHR, or EGL_OBJECT_DISPLAY_KHR; However for all other
+ types it must be initialized in order to validate the <object> for
+ attaching a label.
+
+ If there is no error, then the function will set the label and return
+ EGL_SUCCESS.
+
+ 3.13.3 Debug Queries:
+
+ The command
+
+ EGLBoolean eglQueryDebugKHR(
+ EGLint attribute,
+ EGLAttrib* value);
+
+ enables the application to query the current value for the debug
+ attributes. On success the function returns EGL_TRUE.
+
+ If <attribute> is a message type enum, the value returned will
+ be either EGL_TRUE or EGL_FALSE to indicate whether the specified types of
+ messages are enabled or disabled respectively.
+
+ Querying for attribute EGL_DEBUG_CALLBACK_KHR will return the current
+ callback pointer. This feature is intended to enable layering of the
+ callback with helper libraries.
+
+ Querying for an unknown attribute will result in an EGL_BAD_ATTRIBUTE error
+ and a return of EGL_FALSE.
+
+Usage Examples
+
+ This example shows starting debug messaging and attaching string labels to
+ newly created objects.
+
+ void MyCallBack(EGLenum error,
+ const char *command,
+ EGLint messageType,
+ EGLLabelKHR threadLabel,
+ EGLLabelKHR objectLabel,
+ const char* message)
+ {
+ printf("Error: %x, With command %s, Type: %d,"
+ "Thread: %s, Object: %s, Message: %s.",
+ error, command, messageType, threadLabel, objectLabel, message);
+ }
+
+ EGLint result;
+
+ // DEBUG_MSG_ERROR and CRITICAL are enabled by default
+ EGLAttrib debugAttribs = {EGL_DEBUG_MSG_WARN_KHR, EGL_TRUE, EGL_NONE};
+ // Start up debug messaging:
+ result = eglDebugMessageControl(MyCallBack, debugAttribs);
+
+ // Label for the rendering thread.
+ EGLLabelKHR renderThreadLabel = (EGLLabelKHR)"Render thread";
+ result = eglLabelObject(NULL, EGL_OBJECT_THREAD_KHR, NULL, renderThreadLabel);
+
+ EGLDisplay dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+ EGLLabelKHR myDisplay = (EGLLabelKHR)"Default display";
+ result = eglLabelObject(dpy, EGL_OBJECT_DISPLAY_KHR, dpy, myDisplay);
+
+ eglInitialize(dpy);
+
+ EGLLabelKHR renderContextLabel = (EGLLabelKHR)"Render context";
+ EGLContext ctx = eglCreateContext(dpy, config, NULL, contextAttribs);
+ result = eglLabelObject(dpy, EGL_OBJECT_CONTEXT_KHR, ctx, renderContextLabel);
+
+
+Issues
+
+ 1. Why not use GL_KHR_debug?
+
+ RESOLVED: Most EGL use and object creation happens before creating a
+ GL context. And since EGL operations are thread related - the debug
+ messages should be too.
+
+ 2. Is the callback expected only to be called from the thread which it's
+ registered?
+
+ RESOLVED: In most cases when an application thread calls an EGL function,
+ it is expected that EGL upon detecting an error will callback using that
+ application thread. However, EGL may have internal helper threads that
+ execute operations. These threads can callback but will have no
+ threadLabel. It is the responsibility of EGL to ensure that if these
+ threads are blocked in the application's callback by a breakpoint; that
+ EGL does not fail. Internal threads are an implementation detail and
+ are not required.
+
+
+Revision History
+
+ Revision 18, 2016-07-28 (Jeff Vigil)
+ - Clarify return values/error codes.
+
+ Revision 17, 2015-09-23 (Jeff Vigil)
+ - Correct type name to "EGLDEBUGPROCKHR". Updated example code.
+
+ Revision 16, 2015-04-15 (Jeff Vigil)
+ - Clarified that <objectLabel> maybe NULL in the callback, if an error
+ is raised before the primary object handle is validated.
+
+ Revision 15, 2015-03-30 (Jeff Vigil)
+ - Further details to labeling of EGL_OBJECT_DISPLAY_KHR.
+
+ Revision 14, 2015-03-27 (Jeff Vigil)
+ - Further clarification of returns and errors. Add further details to
+ labeling of EGL_OBJECT_THREAD_KHR and EGL_OBJECT_DISPLAY_KHR.
+
+ Revision 13, 2015-03-26 (Jeff Vigil)
+ - Clarified returns and errors.
+
+ Revision 12, 2015-03-24 (Jeff Vigil)
+ - Improve readability. Add assigned enum values.
+
+ Revision 11, 2015-03-02 (Jeff Vigil)
+ - Clarify text regarding parameter attribute_list and its persistence.
+
+ Revision 10, 2015-02-25 (Jeff Vigil)
+ - Clarify text regarding callback blocking.
+ - The implementation must provide errors and success in callbacks so
+ that the callback replaces the use of eglGetError.
+ - <command> strings are read-only EGL memory.
+ - Specify default values for attributes.
+ - Fix typos.
+
+ Revision 9, 2015-02-03 (Jeff Vigil)
+ - Updated contributors.
+ - Add extension type.
+ - Add "KHR" to token and function names.
+ - Fix typos.
+ - Add query to get current callback pointer.
+
+ Revision 8, 2014-12-03 (Jeff Vigil)
+ - Add table containing recommendation for primary object in the callback.
+
+ Revision 7, 2014-10-21 (Jeff Vigil)
+ - Remove configs as a label-able object.
+ - Remove redundant text.
+ - Simplify to one callback per process, not per thread.
+
+ Revision 6, 2014-10-17 (Jeff Vigil)
+ - Add issues.
+ - Address internal EGL threads posting messages.
+
+ Revision 5, 2014-05-27 (Jeff Vigil)
+ - Add missing text for eglQueryDebug.
+ - Clarify threading model.
+
+ Revision 4, 2014-04-14 (Jeff Vigil)
+ - Fix due to feedback from EGL WG face-to-face conference.
+
+ Revision 3, 2014-04-10 (Jeff Vigil)
+ - Refinements.
+
+ Revision 2, 2014-02-21 (Jeff Vigil)
+ - Simplify API.
+
+ Revision 1, 2013-09-08 (Jeff Vigil)
+ - Work in progress for F2F, Based on GL_KHR_debug, replace GL with EGL
+ and remove GL spec specific text.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_display_reference.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_display_reference.txt
new file mode 100644
index 0000000..e432ed9
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_display_reference.txt
@@ -0,0 +1,242 @@
+Name
+
+ KHR_display_reference
+
+Name Strings
+
+ EGL_KHR_display_reference
+
+Contributors
+
+ James Jones
+ Daniel Kartch
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Complete
+ Ratified by the Khronos Board of Promoters on March 31, 2017.
+
+Version
+
+ Version 4 - March 15, 2018
+
+Number
+
+ EGL Extension #126
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ Requires EGL_EXT_platform_base or EGL 1.5
+
+ Interacts with EGL platform extensions.
+
+ Interacts with the EGL_EXT_device_query extension.
+
+Overview
+
+ The existing semantics of EGLDisplay object lifetimes work well for
+ applications in which one module manages all EGL usage, and in which
+ EGL displays are expected to remain available until application
+ termination once they are instantiated. However, EGL does not
+ provide reasonable semantics in the case where applications rely on
+ toolkit libraries which use EGL independently from the application
+ itself.
+
+ This issue can be solved by adding a per-EGLDisplay reference
+ counter which is incremented by eglInitialize calls. Resource
+ destruction can then be deferred until a corresponding number of
+ eglTerminate calls is made. However, switching to this behavior
+ universally could cause backwards incompatibility problems with
+ existing applications that assume a single eglTerminate will
+ immediately free resources regardless of how many times the display
+ has been initialized.
+
+ We therefore must support both behaviors. A new attribute specified
+ when the EGLDisplay is obtained will indicate whether or not
+ reference counting is enabled. If an application requests the
+ EGLDisplay multiple times with different values for this attribute,
+ two separate displays will be returned. The one potential drawaback
+ is that these displays will have independent resource spaces, so
+ objects allocated from one cannot be used by the other. However, the
+ goal here is to support modules that access EGL independently. In
+ such a use case, they are not likely to need to share resources with
+ another module, particularly one that uses a different method for
+ accessing the display.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglQueryDisplayAttribKHR(EGLDisplay dpy,
+ EGLint name,
+ EGLAttrib *value);
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglGetPlatformDisplay and the <name> parameter of
+ eglQueryDisplayAttribKHR:
+
+ EGL_TRACK_REFERENCES_KHR 0x3352
+
+In section "3.2 Initialization":
+
+Remove the sentence in the description of eglGetPlatformDisplay
+indicating no valid attribute names are defined, and add the following:
+
+ The EGL_TRACK_REFERENCES_KHR attribute may be set to EGL_TRUE or
+ EGL_FALSE to indicate whether or not an EGLDisplay that tracks
+ reference counts for eglInitialize and eglTerminate calls (as
+ described below) is desired. If not specified, the default is
+ platform dependent. Implementations are not required to support both
+ EGL_TRUE and EGL_FALSE for this attribute. If separate successful
+ calls are made to eglGetPlatformDisplay requesting default and non-
+ default behavior for reference counting, two independent EGLDisplays
+ will be returned.
+
+Also add to the Errors section:
+
+ An EGL_BAD_ATTRIBUTE error is generated if the requested value for
+ EGL_TRACK_REFERENCES_KHR is not supported.
+
+Replace the first sentence of the second paragraph of the description of
+eglInitialize with:
+
+ When a previously uninitialized display is initialized, its
+ reference count will be set to one. Initializing an already-
+ initialized display is allowed, and will return EGL_TRUE and update
+ the EGL version numbers, but has no other effect except to increment
+ the display's reference count if its EGL_TRACK_REFERENCES_KHR
+ attribute is EGL_TRUE.
+
+Insert after the declaration of eglTerminate:
+
+ If the specified display's EGL_TRACK_REFERENCES_KHR attribute is
+ EGL_FALSE, eglTerminate will immediately set its reference count
+ to zero. Otherwise, its reference count will be decremented if it
+ is above zero. When an initialized display's reference count reaches
+ zero, termination will occur.
+
+Replace the second sentence of the last paragraph with:
+
+ All displays start out uninitialized with a reference count of zero.
+
+Add to the end of section "3.3 EGL Queries".
+
+ To query non-string attributes of an initialized display, use:
+
+ EGLBoolean eglQueryDisplayAttribKHR(EGLDisplay dpy,
+ EGLint name,
+ EGLAttrib *value);
+
+ On success, EGL_TRUE is returned, and the value of the attribute
+ specified by <name> is returned in the space pointed to by <value>.
+
+ On failure, EGL_FALSE is returned. An EGL_NOT_INITIALIZED error
+ is generated if EGL is not initialized for <dpy>. An
+ EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid
+ value. Currently, the only valid attribute name is
+ EGL_TRACK_REFERENCES_KHR.
+
+Interactions with EGL_KHR_platform_android:
+
+ If eglGetPlatformDisplay() is called with <platform> set to
+ EGL_PLATFORM_ANDROID_KHR, the default value of
+ EGL_TRACK_REFERENCES_KHR is EGL_TRUE.
+
+Interactions with EGL_EXT_platform_device, EGL_KHR_platform_gbm,
+EGL_KHR_platform_x11, and EGL_KHR_platform_wayland:
+
+ If eglGetPlatformDisplay() is called with <platform> set to
+ EGL_PLATFORM_DEVICE_EXT, EGL_PLATFORM_GBM_KHR, EGL_PLATFORM_X11_KHR,
+ or EGL_PLATFORM_WAYLAND_KHR, the default value of
+ EGL_TRACK_REFERENCES_KHR is EGL_FALSE.
+
+Interactions with EGL_EXT_device_query:
+
+ The eglQueryDisplayAttribKHR function defined here is equivalent to
+ eglQueryDisplayAttribEXT defined by EGL_EXT_device_query, and the
+ attribute names supported are a superset of those provided by both
+ extensions and any others which rely on them.
+
+Issues
+
+ 1. What is the default value for EGL_TRACK_REFERENCES_KHR?
+
+ RESOLUTION: For backwards compatibility reasons, the default
+ value is platform-specific. The Android platform has
+ historically implemented the behavior of
+ EGL_TRACK_REFERENCES_KHR = EGL_TRUE, while other platforms
+ defaulted to the opposite behavior. Application components
+ capable of supporting either behavior will be able to query
+ the value to determine how to proceed.
+
+ 2. Should the value of EGL_TRACK_REFERENCES_KHR affect whether
+ eglGetPlatformDisplay returns a new display handle or an
+ existing one given otherwise identical parameters?
+
+ RESOLUTION: Yes. For any given combination of platform display
+ handle and other attributes, calling eglGetPlatformDisplay
+ with different values for EGL_TRACK_REFERENCES_KHR will result
+ in two different EGLDisplay handles being returned.
+
+ Resources created with respect to one of these EGLDisplays will
+ not be accessible to the other. This restriction is unlikely to
+ cause issues, because the reference counting is added primarily
+ to support independent toolkits. Application components which
+ independently initialize and terminate the display are not
+ likely to share resources, particularly if they use different
+ methods for that initialization.
+
+ 3. Should the new display attribute be queryable?
+
+ RESOLUTION: Yes. Not all implemenations will support both TRUE
+ and FALSE for this attribute. Application components capable of
+ supporting either value will allow the default to be chosen, and
+ then query the value to determine how to handle termination.
+
+ 4. Should implementations which support this extension be required
+ to support both TRUE and FALSE for the attribute?
+
+ RESOLUTION: No. Lack of refcounting in the core specification is
+ considered by many to be a flaw, and some implementations/platforms
+ will choose to always provide refcounting behavior. This technically
+ makes them non-compliant. The addition of this extension should allow
+ that deviation.
+
+Revision History
+
+ #4 (March 15, 2018) Jon Leech
+
+ - Change extension number from 118 to 126 to avoid an accidental
+ collision.
+
+ #3 (January 12, 2017) Daniel Kartch
+
+ - Change to KHR.
+ - Allocate enum value.
+
+ #2 (November 15, 2016) Daniel Kartch
+
+ - Full termination portion split off into separate extension
+ EGL_XXX_full_termination.
+ - Update reference counting to have separate EGLDisplays for
+ the same native display, one with reference counting and
+ one without.
+ - Add query function to determine attribute value.
+
+ #1 (October 28, 2014) James Jones
+
+ - Initial draft as EGL_XXX_display_reference
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_fence_sync.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_fence_sync.txt
new file mode 100644
index 0000000..3cac80b
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_fence_sync.txt
@@ -0,0 +1,562 @@
+Name
+
+ KHR_fence_sync
+
+Name Strings
+
+ EGL_KHR_fence_sync
+ GL_OES_EGL_sync
+ VG_KHR_EGL_sync
+
+Contributors
+
+ Acorn Pooley
+ Gary King
+ Gregory Prisament
+ Jon Leech
+
+Contacts
+
+ Acorn Pooley, NVIDIA Corporation (apooley 'at' nvidia.com)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+ Gregory Prisament, NVIDIA Corporation (gprisament 'at' nvidia.com)
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Approved by the EGL Working Group on March 3, 2010.
+ Approved by the Khronos Board of Promoters on April 30, 2010.
+
+Version
+
+ Version 24, January 31, 2014
+
+Number
+
+ EGL Extension #20
+ OpenGL ES Extension #75
+ OpenVG Extension #7
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension introduces the concept of "sync objects" into EGL.
+ Sync objects are a synchronization primitive, representing events
+ whose completion can be tested or waited upon. This extension
+ borrows heavily from the GL_ARB_sync extension and introduces a type
+ of sync object known as a "fence sync object" comparable to the
+ OpenGL fence sync object. The specification is designed to allow
+ additional types of sync objects to be easily introduced in later
+ extensions.
+
+ Fence sync objects have corresponding fence commands, which are
+ inserted into a client API command stream at the time the fence sync
+ is created. A fence sync object is used to wait for completion of
+ the corresponding fence command. This allows applications to request
+ a partial Finish of an API command stream, wherein all commands
+ issued in a particular client API context will be forced to complete
+ before control is returned to the calling thread.
+
+ This document describes three different extension strings
+ collectively. The "EGL_KHR_fence_sync" string indicates that fence
+ syncs and the corresponding interfaces (to create and place a fence,
+ destroy, query, and wait on) are supported.
+
+ The remaining extensions list valid client APIs for fence syncs. The
+ "GL_OES_EGL_sync" string indicates that a fence sync object can be
+ created in association with a fence command placed in the command
+ stream of a bound OpenGL ES context. The "VG_KHR_EGL_sync" string
+ indicates the same thing for a bound OpenVG context.
+
+New Types
+
+ /*
+ * EGLSyncKHR is an opaque handle to an EGL sync object
+ */
+ typedef void* EGLSyncKHR;
+
+ /*
+ * EGLTimeKHR is a 64-bit unsigned integer representing intervals
+ * in nanoseconds.
+ */
+ #include <khrplatform.h>
+ typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+
+
+New Procedures and Functions
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ EGLBoolean eglDestroySyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ EGLint eglClientWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags,
+ EGLTimeKHR timeout);
+
+ EGLBoolean eglGetSyncAttribKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint attribute,
+ EGLint *value);
+
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSyncKHR, and returned
+ in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_FENCE_KHR 0x30F9
+
+ Accepted by the <attribute> parameter of eglGetSyncAttribKHR:
+
+ EGL_SYNC_TYPE_KHR 0x30F7
+ EGL_SYNC_STATUS_KHR 0x30F1
+ EGL_SYNC_CONDITION_KHR 0x30F8
+
+ Returned in <value> when eglGetSyncAttribKHR is called with
+ <attribute> EGL_SYNC_STATUS_KHR:
+
+ EGL_SIGNALED_KHR 0x30F2
+ EGL_UNSIGNALED_KHR 0x30F3
+
+ Returned in <value> when eglGetSyncAttribKHR is called with
+ <attribute> EGL_SYNC_CONDITION_KHR:
+
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+
+ Accepted in the <flags> parameter of eglClientWaitSyncKHR:
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+
+ Accepted in the <timeout> parameter of eglClientWaitSyncKHR:
+
+ EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+
+ Returned by eglClientWaitSyncKHR:
+
+ EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+ EGL_CONDITION_SATISFIED_KHR 0x30F6
+
+ Returned by eglCreateSyncKHR in the event of an error:
+
+ EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add a new subsection at the end of Section 3.8, page 43
+ (Synchronization Primitives)
+
+ "3.8.1 Sync Objects
+
+ In addition to the aforementioned synchronization functions, which
+ provide an efficient means of serializing client and native API
+ operations within a thread, <sync objects> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon by
+ application threads.
+
+ Sync objects have a status with two possible states: <signaled> and
+ <unsignaled>. Initially, sync objects are unsignaled. EGL may be
+ asked to wait for a sync object to become signaled, or a sync
+ object's status may be queried.
+
+ Depending on the type of a sync object, its status may be changed
+ either by an external event, or by explicitly signaling and
+ unsignaling the sync.
+
+ Sync objects are associated with an EGLDisplay when they are
+ created, and have <attributes> defining additional aspects of the
+ sync object. All sync objects include attributes for their type and
+ their status. Additional attributes are discussed below
+ for different types of sync objects.
+
+ <Fence sync objects> are created in association with a <fence
+ command> in a client API. When the client API executes the fence
+ command, an event is generated which signals the corresponding fence
+ sync object. Fence sync objects may not be explicitly signaled, and
+ may only change their status once, from the initial unsignaled
+ status to signaled. Fence sync objects may be used to wait for
+ partial completion of a client API command stream, as a more
+ flexible form of glFinish / vgFinish.
+
+ The command
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ creates a sync object of the specified <type> associated with the
+ specified display <dpy>, and returns a handle to the new object.
+ <attrib_list> is an attribute-value list specifying other attributes
+ of the sync object, terminated by an attribute entry EGL_NONE.
+ Attributes not specified in the list will be assigned their default
+ values.
+
+ If <type> is EGL_SYNC_FENCE_KHR, a fence sync object is created. In
+ this case <attrib_list> must be NULL or empty (containing only
+ EGL_NONE). Attributes of the fence sync object are
+ set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ --------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_FENCE_KHR
+ EGL_SYNC_STATUS_KHR EGL_UNSIGNALED_KHR
+ EGL_SYNC_CONDITION_KHR EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR
+
+ When a fence sync object is created, eglCreateSyncKHR also inserts a
+ fence command into the command stream of the bound client API's
+ current context (i.e., the context returned by
+ eglGetCurrentContext), and associates it with the newly created sync
+ object.
+
+ When the condition of the sync object is satisfied by the fence
+ command, the sync is signaled by the associated client API context,
+ causing any eglClientWaitSyncKHR commands (see below) blocking on
+ <sync> to unblock. The only condition currently supported is
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR, which is satisfied by
+ completion of the fence command corresponding to the sync object,
+ and all preceding commands in the associated client API context's
+ command stream. The sync object will not be signaled until all
+ effects from these commands on the client API's internal and
+ framebuffer state are fully realized. No other state is affected by
+ execution of the fence command.
+
+ Each client API which supports fence commands indicates this support
+ in the form of a client API extension. If the GL_OES_EGL_sync
+ extension is supported by OpenGL ES (either version 1.x or 2.0), a
+ fence sync object may be created when the currently bound API is
+ OpenGL ES. If the VG_KHR_EGL_sync extension is supported by OpenVG,
+ a fence sync object may be created when the currently bound API is
+ OpenVG.
+
+ Errors
+ ------
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
+ generated.
+ * If <attrib_list> is neither NULL nor empty (containing only
+ EGL_NONE), EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE
+ error is generated.
+ * If <type> is not a supported type of sync object,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and no context is current for
+ the bound API (i.e., eglGetCurrentContext returns
+ EGL_NO_CONTEXT), EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and <dpy> does not match the
+ EGLDisplay of the currently bound context for the currently
+ bound client API (the EGLDisplay returned by
+ eglGetCurrentDisplay()) then EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+ * If <type> is EGL_SYNC_FENCE_KHR and the currently bound client
+ API does not support the client API extension indicating it can
+ place fence commands, then EGL_NO_SYNC_KHR is returned and an
+ EGL_BAD_MATCH error is generated.
+
+ The command
+
+ EGLint eglClientWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags,
+ EGLTimeKHR timeout);
+
+ blocks the calling thread until the specified sync object <sync> is
+ signaled, or until <timeout> nanoseconds have passed.
+
+ More than one eglClientWaitSyncKHR may be outstanding on the same
+ <sync> at any given time. When there are multiple threads blocked on
+ the same <sync> and the sync object is signaled, all such threads
+ are released, but the order in which they are released is not
+ defined.
+
+ If the value of <timeout> is zero, then eglClientWaitSyncKHR simply
+ tests the current status of <sync>. If the value of <timeout> is the
+ special value EGL_FOREVER_KHR, then eglClientWaitSyncKHR does not
+ time out. For all other values, <timeout> is adjusted to the closest
+ value allowed by the implementation-dependent timeout accuracy,
+ which may be substantially longer than one nanosecond.
+
+ eglClientWaitSyncKHR returns one of three status values describing
+ the reason for returning. A return value of EGL_TIMEOUT_EXPIRED_KHR
+ indicates that the specified timeout period expired before <sync>
+ was signaled, or if <timeout> is zero, indicates that <sync> is
+ not signaled. A return value of EGL_CONDITION_SATISFIED_KHR
+ indicates that <sync> was signaled before the timeout expired, which
+ includes the case when <sync> was already signaled when
+ eglClientWaitSyncKHR was called. If an error occurs then an error is
+ generated and EGL_FALSE is returned.
+
+ If the sync object being blocked upon will not be signaled in finite
+ time (for example, by an associated fence command issued previously,
+ but not yet flushed to the graphics pipeline), then
+ eglClientWaitSyncKHR may wait forever. To help prevent this behavior
+ (footnote1), if the EGL_SYNC_FLUSH_COMMANDS_BIT_KHR bit is set in
+ <flags>, and <sync> is unsignaled when eglClientWaitSyncKHR is
+ called, then the equivalent of Flush() will be performed for the
+ current API context (i.e., the context returned by
+ eglGetCurrentContext()) before blocking on <sync>. If no context is
+ current for the bound API, the EGL_SYNC_FLUSH_COMMANDS_BIT_KHR bit
+ is ignored.
+
+ [footnote 1: The simple Flush behavior defined by
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR will not help when waiting for a
+ fence command issued in a different context's command stream.
+ Applications which block on a fence sync object must take
+ additional steps to ensure that the context from which the
+ associated fence command was issued has flushed that command to
+ the graphics pipeline.]
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the EGLDisplay passed to
+ eglCreateSyncKHR when <sync> was created, the behaviour is
+ undefined.
+
+
+ The command
+
+ EGLBoolean eglGetSyncAttribKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint attribute,
+ EGLint *value);
+
+ is used to query attributes of the sync object <sync>. Legal values
+ for <attribute> depend on the type of sync object, as shown in table
+ 3.cc. Assuming no errors are generated, EGL_TRUE is returned and the
+ value of the queried attribute is returned in <value>.
+
+ Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_TYPE_KHR Type of the sync object All
+ EGL_SYNC_STATUS_KHR Status of the sync object All
+ EGL_SYNC_CONDITION_KHR Signaling condition EGL_SYNC_FENCE_KHR only
+
+ Table 3.cc Attributes Accepted by eglGetSyncAttribKHR Command
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined.
+ * If <attribute> is not one of the attributes in table 3.cc,
+ EGL_FALSE is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <attribute> is not supported for the type of sync object
+ passed in <sync>, EGL_FALSE is returned and an EGL_BAD_MATCH
+ error is generated.
+
+ If any error occurs, <*value> is not modified.
+
+ The command
+
+ EGLBoolean eglDestroySyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ is used to destroy an existing sync object.
+
+ If any eglClientWaitSyncKHR commands are blocking on <sync> when
+ eglDestroySyncKHR is called, <sync> is flagged for deletion and will
+ be deleted when it is no longer associated with any fence command
+ and is no longer blocking any eglClientWaitSyncKHR command.
+
+ If no errors are generated, EGL_TRUE is returned, and <sync> will no
+ longer be the handle of a valid sync object.
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined.
+
+Issues
+
+ Note about the Issues
+ ---------------------
+ The wording for this extension was originally written as a single
+ extension defining two types of sync object; a "reusable sync
+ object" and a "fence sync object". That extension was split to
+ produce standalone extensions for each type of sync object, and
+ references to the other type removed from the specification
+ language. This issues list has been simplied to remove references to
+ reusable sync objects but is otherwise very similar to the
+ EGL_KHR_reusable_sync extension issues list.
+
+ 1. [REMOVED - found in the reusable_sync extension.]
+
+ 2. [REMOVED - found in the reusable_sync extension.]
+
+ 3. What does this extension provide that can not be accomplished
+ with the existing, more efficient eglWaitClient and eglWaitNative
+ API functions?
+
+ RESPONSE: eglWaitClient and eglWaitNative may be implemented in
+ extremely lightweight manners, in some cases not blocking the
+ calling thread at all; however, they can not be used to synchronize
+ between client API contexts and native APIs executing in separate
+ threads (or simply between client API contexts executing in separate
+ threads), such as between a thread with an active OpenGL context and
+ a second thread performing video decode.
+
+ 4. What does this extension provide that could not be accomplished
+ with native platform synchronization primitives and the existing
+ client API Finish commands?
+
+ RESPONSE: This extension provides a lighter-weight mechanism for
+ synchronizing an application with client API command streams than
+ the all-or-nothing Finish commands, enabling applications to block
+ until a subset of issued client API commands have completed.
+
+ 5. [REMOVED - found in the reusable_sync extension.]
+
+ 6. Please provide a more detailed description of how
+ eglClientWaitSyncKHR behaves.
+
+ RESOLVED: eglClientWaitSyncKHR blocks until the status of the sync
+ object transitions to the signaled state. Sync object status is
+ either signaled or unsignaled. More detailed rules describing
+ signalling follow (these may need to be imbedded into the actual
+ spec language):
+
+ * A fence sync object has two possible status values: signaled or
+ unsignaled.
+ * When created, the status of the sync object is unsignaled.
+ * A fence command is inserted into a command stream. A fence sync
+ object is not.
+ * A fence command, once its condition has been met, will set its
+ associated sync object to the signaled state. The only condition
+ currently supported is EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR.
+ * A wait function, such as ClientWaitSyncKHR, waits on a fence
+ sync object, not on a fence command.
+ * A wait function called on a sync object in the unsignaled state
+ will block. It unblocks (note, not "returns to the application")
+ when the sync object transitions to the signaled state.
+ * A wait function called on a sync object in the signaled state
+ will return immediately.
+
+ 7. [REMOVED - found in the reusable_sync extension.]
+
+ 8. [REMOVED - found in the reusable_sync extension.]
+
+ 9. Should eglDestroySyncKHR release all WaitSyncs placed on a fence
+ sync object?
+
+ RESOLVED: No. (note that this behavior differs from reusable syncs.)
+
+ Fence sync objects are intended to be signalled by the graphics
+ driver within a short period of time (typically less than 1 second
+ after creation) and so should not cause waiting threads to hang
+ forever. To reduce implementation complexity, fence sync objects are
+ defined to not release waiting threads; waiting threads are released
+ normally when their condition is satisfied or their timeout expires.
+ The handle to a fence sync object immediately becomes invalid
+ following a call to eglDestroySyncKHR.
+
+Revision History
+
+#24 (Jon Leech, January 31, 2014)
+ - Clarify return value of ClientWaitSyncKHR when called with <timeout>
+ of zero for an unsignaled <sync> (Bug 11576).
+#23 (Jon Leech, April 23, 2013)
+ - Simplify issues list to remove issues specific to reusable sync
+ objects and general sync object design issues.
+#22 (Jon Leech, June 15, 2010)
+ - Correct minor typos in GL/VG extension names.
+#21 (Jon Leech, May 5, 2010)
+ - Correct minor typos, assign extension numbers for EGL, OpenGL ES,
+ and OpenVG, and publish in the registry,
+#20 (Robert Palmer, July 14, 2009)
+ - Branch wording from draft KHR_sync specification. Remove ability
+ to create "reusable sync objects and all tokens/wording specific
+ to them.
+#19 (Robert Palmer, July 22, 2009)
+ - Replace specific eglCreateSyncKHR error cases for bad <type>
+ argument with extensible catch-all case.
+#18 (Robert Palmer, July 8, 2009)
+ - Issues 8 and 9 declared resolved in EGL meeting 2009-07-08
+#17 (Robert Palmer, July 8, 2009)
+ - Update eglDestroySyncKHR to special-case deletion of fence sync
+ objects. This is explained in issue 9.
+ - Corrected EGL_REUSABLE_SYNC_KHR -> EGL_SYNC_REUSABLE_KHR
+ - Define value for EGL_SYNC_REUSABLE_KHR
+ - Fix typo and whitespace
+#16 (Jon Leech, July 7, 2009)
+ - Update description of new tokens to match changes to the
+ eglCreateSyncKHR entry point in revision 15.
+#15 (Jon Leech, June 16, 2009)
+ - Define separate one-time fence sync and reusable sync extensions
+ and corresponding extension strings. Remove AUTO_RESET and
+ eglFenceKHR. Rename eglCreateFenceSyncKHR to eglCreateSyncKHR and
+ change initial status of reusable syncs to unsignaled. Clarify
+ which functions apply to which types of sync objects. Update
+ issues list.
+#14 (Jon Leech, April 29, 2009)
+ - Clarify that all waiters are woken up on signalling a sync.
+ Remove tabs to cleanup some formatting issues.
+#13 (Acorn Pooley, April 2, 2009)
+ - Renamed
+ GL_OES_egl_sync -> GL_OES_EGL_sync
+ VG_KHR_egl_sync -> VG_KHR_EGL_sync
+#12 (Jon Leech, April 1, 2009)
+ - Changed sync flags type from EGLuint to EGLint and add issue 7.
+#11 (Acorn Pooley, February 4, 2009)
+ - add error case to eglGetSyncAttribKHR.
+ - fix year on rev 8-10 (2008->2009)
+#10 (Acorn Pooley, February 4, 2009)
+ - clarify some error message descriptions
+#9 (Greg Prisament, January 15, 2009)
+ - Destroy now wakes up all waits (eglClientWaitSyncKHR)
+ - Add EGLDisplay <dpy> as first parameter to all commands
+ - Split into 3 extension strings, EGL_KHR_sync, GL_OES_egl_sync,
+ VG_KHR_egl_sync, all described in this document.
+ - Add attribute AUTO_RESET_KHR
+ - Time type uses the type from khrplatform.h
+ - Remove EGL_ALREADY_SIGNALLED
+#8 (Jon Leech, November 11, 2009)
+ - Assign enum values
+#7 (Acorn Pooley, October 30, 2008)
+ - Fix typos
+ - remove obsolete wording about Native sync objects (see issue 5)
+ - formatting: remove tabs, 80 columns
+#6 (Acorn Pooley, October 27, 2008)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#5 (Jon Leech, September 9, 2008)
+ - Removed native sync support (eglCreateNativeSyncKHR and
+ EGL_SYNC_NATIVE_SYNC_KHR), and re-flowed spec to fit in 80 columns.
+#4 (Jon Leech, November 20, 2007)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#3 (Jon Leech, April 5, 2007)
+ - Added draft Status and TBD Number
+#2 (November 27, 2006)
+ - Changed OES token to KHR
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
new file mode 100644
index 0000000..f01c160
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
@@ -0,0 +1,206 @@
+Names
+
+ KHR_get_all_proc_addresses
+ KHR_client_get_all_proc_addresses
+
+Name Strings
+
+ EGL_KHR_get_all_proc_addresses
+ EGL_KHR_client_get_all_proc_addresses
+
+Contributors
+
+ Jon Leech
+ Marcus Lorentzon
+ Robert Palmer
+ Acorn Pooley
+ Greg Prisament
+ Chad Versace
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Approved by the EGL Working Group on April 3, 2013.
+ Ratified by the Khronos Board of Promoters on July 19, 2013.
+
+Version
+
+ Version 3 - July 31, 2013
+
+Number
+
+ EGL Extension #61
+
+Extension Types
+
+ EGL_KHR_get_all_proc_addresses is an EGL display extension
+ EGL_KHR_client_get_all_proc_addresses is an EGL client extension
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ This extension is written based on the wording of the EGL 1.4
+ specification.
+
+ Interacts with EGL_EXT_client_extensions.
+
+Overview
+
+ eglGetProcAddress is currently defined to not support the querying
+ of non-extension EGL or client API functions. Non-extension
+ functions are expected to be exposed as library symbols that can
+ be resolved statically at link time, or dynamically at run time
+ using OS-specific runtime linking mechanisms.
+
+ With the addition of OpenGL and OpenGL ES 3 support to EGL, the
+ definition of a non-extension function becomes less clear. It is
+ common for one OpenGL library to implement many versions of
+ OpenGL. The suggested library name for OpenGL ES 3 is the same as
+ that of OpenGL ES 2. If OpenGL ES 3 applications linked
+ statically to OpenGL ES 3 functions are run on a system with only
+ OpenGL ES 2 support, they may fail to load. Similar problems
+ would be encountered by an application linking statically to
+ various OpenGL functions.
+
+ To avoid requiring applications to fall back to OS-specific
+ dynamic linking mechanisms, this extension drops the requirement
+ that eglGetProcAddress return only non-extension functions. If
+ the extension string is present, applications can query all EGL
+ and client API functions using eglGetProcAddress.
+
+ To allow users to query this extension before initializing a display, and
+ to also allow vendors to ship this extension without
+ EGL_EXT_client_extensions, two names are assigned to this extension: one
+ a display extension and the other a client extension. Identical
+ functionality is exposed by each name, but users query each name using
+ different methods. Users query EGL_KHR_get_all_proc_addresses in the
+ usual way; that is, by calling eglQueryString(dpy, EGL_EXTENSIONS) on an
+ initialized display. To query EGL_KHR_client_get_all_proc_addresses,
+ users must use a different method which is described below in the section
+ concerning EGL_EXT_client_extensions.
+
+New Types
+
+ None
+
+New functions
+
+ None
+
+New Tokens
+
+ None
+
+Rename section "3.10 Obtaining Extension Function Pointers" to "3.10
+Obtaining Function Pointers", and replace its content with the
+following:
+
+ "The client API and EGL extensions and versions which are available to a
+ client may vary at runtime, depending on factors such as the rendering
+ path being used (hardware or software), resources available to the
+ implementation, or updated device drivers. Therefore, the address of
+ functions may be queried at runtime. The function
+
+ void (*eglGetProcAddress(const char *procname))(void);
+
+ returns the address of the function named by <procName>. <procName> must
+ be a NULL-terminated string. The pointer returned should be cast to a
+ function pointer matching the function's definition in the corresponding
+ API or extension specification. A return value of NULL indicates that
+ the specified function does not exist for the implementation.
+
+ A non-NULL return value for eglGetProcAddress does not guarantee that a
+ function is actually supported at runtime. The client must also make a
+ corresponding query, such as glGetString(GL_EXTENSIONS) for OpenGL and
+ OpenGL ES extensions; vgGetString(VG_EXTENSIONS) for OpenVG extensions;
+ eglQueryString(dpy, EGL_EXTENSIONS) for EGL extensions; or query the
+ corresponding API's version for non-extension functions, to determine if
+ a function is supported by a particular client API context or display.
+
+ Client API function pointers returned by eglGetProcAddress are
+ independent of the display and the currently bound client API context,
+ and may be used by any client API context which supports the function.
+
+ eglGetProcAddress may be queried for all EGL and client API extension
+ and non-extension functions supported by the implementation (whether
+ those functions are supported by the current client API context or not).
+
+ For functions that are queryable with eglGetProcAddress, implementations
+ may also choose to export those functions statically from the object
+ libraries implementing them. However, portable clients cannot rely on
+ this behavior."
+
+Interactions with EGL_EXT_client_extensions
+
+ The EGL specification describes the behavior of eglGetProcAddress as
+ independent of any display. Therefore, this extension's functionality
+ falls under the classification 'client extension' rather than 'display
+ extension'. Accordingly, users may wish to query this extension before
+ initializing a display.
+
+ If the EGL_EXT_client_extensions is supported, then users can query this
+ extension by checking for the name EGL_KHR_client_get_all_proc_addresses
+ in the extension string of EGL_NO_DISPLAY.
+
+ The EGL implementation must expose the name
+ EGL_KHR_client_get_all_proc_addresses if and only if it exposes
+ EGL_KHR_get_all_proc_addresses and supports EGL_EXT_client_extensions.
+ This requirement eliminates the problematic situation where, if an EGL
+ implementation exposed only one name, then an EGL client would fail to
+ detect the extension if it queried only the other name.
+
+ Despite having two names assigned to this extension, the restrictions
+ described in EGL_EXT_client_extensions still apply. As
+ EGL_KHR_client_get_all_proc_addresses is defined as a client extension,
+ its name can appear only in the extension string of EGL_NO_DISPLAY and
+ not in the extension string of any valid display. The converse applies
+ to EGL_KHR_get_all_proc_addresses, as it is defined as a display
+ extension.
+
+Issues
+
+ 1. What should this spec be called?
+
+ PROPOSED: KHR_get_all_proc_addresses
+
+ 2. Should this extension be classified as a client extension, as defined
+ by EGL_EXT_client_extensions?
+
+ DISCUSSION: Yes and no.
+
+ Yes, because this extension exposes functionality that is solely
+ a property of the EGL library itself, independent of any display.
+ Such functionality falls under the classification of 'client
+ extension'.
+
+ No, because classifying it as a client extension would create
+ a dependency on EGL_EXT_client_extensions, and there exists no
+ precedent for a KHR extension that depends on an EXT extension.
+
+ RESOLUTION: Expose this extension under two names, one a client
+ extension and the other a display extension.
+
+Revision History
+
+ #3 (July 31, 2013) Chad Versace
+ - Assign additional name, EGL_KHR_client_get_all_proc_addresses.
+ - Add section "Extension Types", section "Interactions with
+ EGL_EXT_client_extensions", and issue #2.
+
+ #2 (March 6, 2013) Jon Leech
+ - Bring into sync with latest EGL 1.4 spec update and simplify
+ language describing which functions may be queried. Minor
+ formatting changes for greater consistency with other KHR
+ extension specs.
+
+ #1 (February 4, 2013) James Jones
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_colorspace.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_colorspace.txt
new file mode 100644
index 0000000..e3fbc38
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_colorspace.txt
@@ -0,0 +1,197 @@
+Name
+
+ KHR_gl_colorspace
+
+Name Strings
+
+ EGL_KHR_gl_colorspace
+
+Contact
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Complete.
+ Version 3 approved by the EGL Working Group on September 13, 2013.
+ Ratified by the Khronos Board of Promoters on December 13, 2013.
+
+Version
+
+ Version 5, 2014/07/15
+
+Number
+
+ EGL Extension #66
+
+Dependencies
+
+ EGL 1.4 is required.
+
+ Some of the capabilities of these extensions are only available via
+ OpenGL or OpenGL ES contexts supporting sRGB default framebuffers,
+ as defined below.
+
+Overview
+
+ Applications may wish to use sRGB format default framebuffers to
+ more easily achieve sRGB rendering to display devices. This
+ extension allows creating EGLSurfaces which will be rendered to in
+ sRGB by OpenGL contexts supporting that capability.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as an attribute name by eglCreateWindowSurface,
+ eglCreatePbufferSurface and eglCreatePixmapSurface
+
+ EGL_GL_COLORSPACE_KHR 0x309D
+
+ Accepted as attribute values for EGL_GL_COLORSPACE_KHR by
+ eglCreateWindowSurface, eglCreatePbufferSurface and
+ eglCreatePixmapSurface
+
+ EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+ EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+
+ (these enums are aliases of the corresponding VG colorspace
+ attribute values from EGL 1.3)
+
+Additions to the EGL 1.4 Specification
+
+ Modify the 2nd paragraph on page 29 in section 3.5.1 "Creating
+ On-Screen Rendering Surfaces:
+
+ "Note that the EGL_GL_COLORSPACE_KHR attribute is used only by OpenGL
+ and OpenGL ES contexts supporting sRGB framebuffers. EGL itself does
+ not distinguish multiple colorspace models. Refer to the ``sRGB
+ Conversion'' sections of the OpenGL 4.3 and OpenGL ES 3.0
+ specifications for more information."
+
+
+ Add preceding the 4th paragraph on this page:
+
+ "EGL_GL_COLORSPACE_KHR specifies the color space used by OpenGL and
+ OpenGL ES when rendering to the surface[fn1]. If its value is
+ EGL_GL_COLORSPACE_SRGB_KHR, then a non-linear, perceptually uniform
+ color space is assumed, with a corresponding
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of GL_SRGB. If its value
+ is EGL_GL_COLORSPACE_LINEAR_KHR, then a linear color space is assumed,
+ with a corresponding GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of
+ GL_LINEAR. The default value of EGL_GL_COLORSPACE_KHR is
+ EGL_GL_COLORSPACE_LINEAR_KHR.
+
+ [fn1] Only OpenGL and OpenGL ES contexts which support sRGB
+ rendering must respect requests for EGL_GL_COLORSPACE_SRGB_KHR, and
+ only to sRGB formats supported by the context (normally just SRGB8)
+ Older versions not supporting sRGB rendering will ignore this
+ surface attribute. Applications using OpenGL must additionally
+ enable GL_FRAMEBUFFER_SRGB to perform sRGB rendering, even when an
+ sRGB surface is bound; this enable is not required (or supported)
+ for OpenGL ES."
+
+
+ Modify the 4th paragraph on page 30 in section 3.5.2,
+ "Creating Off-Screen Rendering Surfaces":
+
+ "... Attributes that can be specified in <attrib_list> include ...
+ EGL_GL_COLORSPACE_KHR, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
+
+
+ Add preceding the second paragraph on page 31 in section 3.5.2:
+
+ "EGL_GL_COLORSPACE_KHR has the same meaning and default values as when
+ used with eglCreateWindowSurface."
+
+
+ Modify the next to last paragraph on page 34 in section 3.5.4,
+ "Creating Native Pixmap Rendering Surfaces":
+
+ "... Attributes that can be specified in <attrib_list> include
+ EGL_GL_COLORSPACE_KHR, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
+
+
+ Add preceding the second paragraph on page 35 in section 3.5.4:
+
+ "EGL_GL_COLORSPACE_KHR has the same meaning and default values as when
+ used with eglCreateWindowSurface."
+
+
+ Add to table 3.5 on page 37:
+
+ "Attribute Type Description
+ -------------------- ---- -----------
+ EGL_GL_COLORSPACE_KHR enum Color space for OpenGL and OpenGL ES"
+
+
+Errors
+
+ New EGL errors as described in the body of the specification (to be
+ enumerated here in a later draft).
+
+Conformance Tests
+
+ TBD
+
+Sample Code
+
+ TBD
+
+Issues
+
+ 1) How about premultiplied alpha?
+
+ DISCUSSION: OpenGL doesn't expose this a property of the API, so there's
+ no point in exposing it through EGL as a hint to GL. Shaders deal with
+ premultiplied alpha.
+
+ 2) Do we need to determine EGL_GL_COLORSPACE_KHR from client buffer
+ attributes in section 3.5.3?
+
+ DISCUSSION: probably. Not done yet.
+
+ 3) How should EGL_GL_COLORSPACE_SRGB_KHR be capitalized?
+
+ DISCUSSION: Daniel prefers SRGB. The VG token uses sRGB which is a
+ rare case of an enum name containing a lower case letter. Currently
+ the spec uses SRGB.
+
+ 4) Explain differences in surface creation semantics vs.
+ EGL_VG_COLORSPACE.
+
+ DISCUSSION: The EGL 1.4 spec allows surface creation to fail with a
+ BAD_MATCH error when requesting an unsupported VG sRGB format. This
+ is relatively easy to detect since all OpenVG implementations must
+ support sRGB rendering to specified formats. It is trickier with
+ OpenGL and OpenGL ES for two reasons:
+
+ - Some GL/ES contexts may support sRGB rendering while other
+ contexts in the same runtime may not.
+ - Some contexts may support a broader range of sRGB formats than
+ others.
+
+ Possibly we should add EGL_GL_COLORSPACE_SRGB_BIT_KHR to
+ EGL_SURFACE_TYPE, but we've been deemphasizing EGLConfigs going
+ forward, and hopefully we can get away without doing this.
+
+Revision History
+
+ Version 1, 2013/04/26
+ - Initial draft based on proposal in bug 9995.
+ Version 2, 2013/04/26
+ - GL ES doesn't require GL_FRAMEBUFFER_SRGB enable.
+ Version 3, 2013/05/15
+ - Capitalize SRGB in token name, change reference from VG to GL/ES
+ in section 3.5.1, note that ES does not require FRAMEBUFFER_SRGB
+ enable, add issue 4, and fix typos (bug 9995).
+ Version 4, 2013/09/16
+ - Assign enum values.
+ Version 5, 2014/07/15
+ - Fix New Tokens section to include all relevant commands (Bug 12457).
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_image.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_image.txt
new file mode 100644
index 0000000..ab7f253
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_gl_image.txt
@@ -0,0 +1,432 @@
+Name
+
+ KHR_gl_texture_2D_image
+ KHR_gl_texture_cubemap_image
+ KHR_gl_texture_3D_image
+ KHR_gl_renderbuffer_image
+
+Name Strings
+
+ EGL_KHR_gl_texture_2D_image
+ EGL_KHR_gl_texture_cubemap_image
+ EGL_KHR_gl_texture_3D_image
+ EGL_KHR_gl_renderbuffer_image
+
+Contributors
+
+ Aaftab Munshi
+ Barthold Lichtenbelt
+ Gary King
+ Jeff Juliano
+ Jon Leech
+ Jonathan Grant
+ Acorn Pooley
+
+Contacts
+
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on February 11, 2008.
+
+Version
+
+ Version 13, October 9, 2013
+
+Number
+
+ EGL Extension #5
+
+Dependencies
+
+ All extensions require EGL 1.2 and the EGL_KHR_image extension
+
+ These extensions are written against the wording of the EGL 1.2
+ Specification.
+
+ KHR_gl_texture_2D_image requires an OpenGL or OpenGL ES client API (any
+ version of either API).
+
+ KHR_gl_texture_cubemap_image requires an OpenGL or OpenGL ES client API
+ supporting texture cube maps, either in the core API or via extensions.
+
+ KHR_gl_texture_3D_image requires KHR_gl_texture_2D_image to be supported
+ by the EGL implementation. It also requires an OpenGL or OpenGL ES
+ client API supporting three-dimensional textures, either in the core API
+ or via extensions.
+
+ KHR_gl_renderbuffer_image requires KHR_gl_texture_2D_image to be
+ supported by the EGL implementation. It also requires an OpenGL or
+ OpenGL ES client API supporting renderbuffers, either in the core API or
+ via extensions.
+
+Overview
+
+ The extensions specified in this document provide a mechanism for
+ creating EGLImage objects from OpenGL and OpenGL ES (henceforth referred
+ to collectively as 'GL') API resources, including two- and three-
+ dimensional textures, cube maps and render buffers. For an overview of
+ EGLImage operation, please see the EGL_KHR_image specification.
+
+ Due to the number of available extensions for the OpenGL ES 1.1 and
+ OpenGL ES 2.0 APIs, this document is organized as 4 separate extensions,
+ described collectively. These extensions are separated based on the
+ required underlying GL functionality (described in the dependencies
+ section).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_2D_KHR 0x30B1
+
+ Accepted as an attribute in the <attr_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
+
+ Added by KHR_gl_texture_cubemap_image:
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
+
+ Added by KHR_gl_texture_3D_image:
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_3D_KHR 0x30B2
+
+ Accepted as an attribute in the <attr_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
+
+ Added by KHR_gl_renderbuffer_image:
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_GL_RENDERBUFFER_KHR 0x30B9
+
+
+Additions to the EGL Image (EGL_KHR_image) Specification:
+
+ Add the following to Table aaa (Legal values for eglCreateImageKHR
+ <target> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +-------------------------------------+---------------------------------+
+ | <target> | Notes |
+ +-------------------------------------+---------------------------------+
+ | EGL_GL_TEXTURE_2D_KHR | Used for GL 2D texture images |
+ +-------------------------------------+---------------------------------+
+
+ If KHR_gl_texture_cubemap_image is supported:
+
+ +-----------------------------------------+-----------------------------+
+ | <target> | Notes |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR | Used for the +X face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR | Used for the -X face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR | Used for the +Y face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR | Used for the -Y face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR | Used for the +Z face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+ | EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR | Used for the -Z face of |
+ | | GL cubemap texture images |
+ +-----------------------------------------+-----------------------------+
+
+ If KHR_gl_texture_3D_image is supported:
+
+ +-------------------------------------+---------------------------------+
+ | <target> | Notes |
+ +-------------------------------------+---------------------------------+
+ | EGL_GL_TEXTURE_3D_KHR | Used for GL 3D texture images |
+ +-------------------------------------+---------------------------------+
+
+ If KHR_gl_renderbuffer_image is supported:
+
+ +-------------------------------------+---------------------------------+
+ | <target> | Notes |
+ +-------------------------------------+---------------------------------+
+ | EGL_GL_RENDERBUFFER_KHR | Used for GL renderbuffer images|
+ +-------------------------------------+---------------------------------+
+
+ Add the following to Table bbb (Legal attributes for eglCreateImageKHR
+ <attr_list> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +---------------------------+-------------------------------+----------------------------+---------+
+ | | | Valid | Default |
+ | Attribute | Description | <target>s | Value |
+ +---------------------------+-------------------------------+----------------------------+---------+
+ | EGL_GL_TEXTURE_LEVEL_KHR | Specifies the mipmap level | EGL_GL_TEXTURE_2D_KHR, | 0 |
+ | | used as the EGLImage source. | EGL_GL_TEXTURE_CUBE_MAP_*, | |
+ | | Must be part of the complete | EGL_GL_TEXTURE_3D_KHR | |
+ | | texture object <buffer> | | |
+ +---------------------------+-------------------------------+----------------------------+---------+
+
+ If KHR_gl_texture_3D_image is supported:
+
+ +----------------------------+------------------------------+----------------------------+---------+
+ | | | Valid | Default |
+ | Attribute | Description | <target>s | Value |
+ +----------------------------+------------------------------+----------------------------+---------+
+ | EGL_GL_TEXTURE_ZOFFSET_KHR | Specifies the depth offset | EGL_GL_TEXTURE_3D_KHR | 0 |
+ | | of the image to use as the | | |
+ | | EGLImage source. Must be | | |
+ | | part of the complete texture| | |
+ | | object <buffer> | | |
+ +----------------------------+------------------------------+----------------------------+---------+
+
+
+ Insert the following text after paragraph 3 ("If <target> is
+ NATIVE_PIXMAP_KHR...") of Section 2.5.1 (EGLImage Specification)
+
+ "If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_3D_KHR,
+ EGL_GL_RENDERBUFFER_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR, or
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR,
+ <dpy> must be a valid EGLDisplay,
+ and <ctx> must be a valid GL API context on that display.
+
+ If <target> is EGL_GL_TEXTURE_2D_KHR, <buffer> must be the name of a
+ nonzero, GL_TEXTURE_2D target texture object, cast into
+ the type EGLClientBuffer. <attr_list> should specify the mipmap level
+ which will be used as the EGLImage source (EGL_GL_TEXTURE_LEVEL_KHR); the
+ specified mipmap level must be part of <buffer>. If not specified, the
+ default value listed in Table bbb will be used, instead. Additional
+ values specified in <attr_list> are ignored. The texture must be complete
+ unless the mipmap level to be used is 0, the texture has mipmap level 0
+ specified, and no other mipmap levels are specified.
+
+ If <target> is one of the EGL_GL_TEXTURE_CUBE_MAP_* enumerants, <buffer>
+ must be the name of a cube-complete, nonzero, GL_TEXTURE_CUBE_MAP (or
+ equivalent in GL extensions) target texture object, cast into the type
+ EGLClientBuffer. <attr_list> should specify the mipmap level which will
+ be used as the EGLImage source (EGL_GL_TEXTURE_LEVEL_KHR); the specified
+ mipmap level must be part of <buffer>. If not specified, the default
+ value listed in Table bbb will be used, instead. Additional values
+ specified in <attr_list> are ignored. The texture must be cube-complete
+ unless the mipmap level to be used is 0, the texture has mipmap level 0
+ specified for all faces, and no other mipmap levels are specified for any
+ faces.
+
+ If <target> is EGL_GL_TEXTURE_3D_KHR, <buffer> must be the name of a
+ complete, nonzero, GL_TEXTURE_3D (or equivalent in GL extensions) target
+ texture object, cast
+ into the type EGLClientBuffer. <attr_list> should specify the mipmap
+ level (EGL_GL_TEXTURE_LEVEL_KHR) and z-offset (EGL_GL_TEXTURE_ZOFFSET_KHR)
+ which will be used as the EGLImage source; the specified mipmap level must
+ be part of <buffer>, and the specified z-offset must be smaller than the
+ depth of the specified mipmap level. If a value is not specified, the
+ default value listed in Table bbb will be used, instead. Additional
+ values specified in <attr_list> are ignored. The texture must be
+ complete unless the mipmap level to be used is 0, the texture has mipmap
+ level 0 specified, and no other mipmap levels are specified.
+
+ If <target> is EGL_GL_RENDERBUFFER_KHR, <buffer> must be the name of a
+ complete, nonzero, non-multisampled GL_RENDERBUFFER (or equivalent in
+ extensions) target object, cast into the type EGLClientBuffer. Values
+ specified in <attr_list> are ignored."
+
+ Add the following errors to the end of the list in Section 2.5.1 (EGLImage
+ Specification):
+
+ " * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR,
+ EGL_GL_RENDERBUFFER_KHR or EGL_GL_TEXTURE_3D_KHR, and <dpy> is not a
+ valid EGLDisplay, the error EGL_BAD_DISPLAY is generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR,
+ EGL_GL_RENDERBUFFER_KHR or EGL_GL_TEXTURE_3D_KHR, and <ctx> is not a
+ valid EGLContext, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR,
+ EGL_GL_RENDERBUFFER_KHR or EGL_GL_TEXTURE_3D_KHR, and <ctx> is not a
+ valid GL context, or does not match the <dpy>, the error
+ EGL_BAD_MATCH is generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR
+ or EGL_GL_TEXTURE_3D_KHR and <buffer> is not the name of a
+ texture object of type <target>, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <target> is EGL_GL_RENDERBUFFER_KHR and <buffer> is not the
+ name of a renderbuffer object, or if <buffer> is the name of a
+ multisampled renderbuffer object, the error EGL_BAD_PARAMETER is
+ generated.
+
+ * If EGL_GL_TEXTURE_LEVEL_KHR is nonzero, <target> is
+ EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR or
+ EGL_GL_TEXTURE_3D_KHR, and <buffer> is not the name of a complete
+ GL texture object, the error EGL_BAD_PARAMETER is generated.
+
+ * If EGL_GL_TEXTURE_LEVEL_KHR is 0, <target> is
+ EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR or
+ EGL_GL_TEXTURE_3D_KHR, <buffer> is the name of an incomplete GL
+ texture object, and any mipmap levels other than mipmap level 0
+ are specified, the error EGL_BAD_PARAMETER is generated.
+
+ * If EGL_GL_TEXTURE_LEVEL_KHR is 0, <target> is
+ EGL_GL_TEXTURE_2D_KHR or EGL_GL_TEXTURE_3D_KHR, <buffer> is not
+ the name of a complete GL texture object, and mipmap level 0 is
+ not specified, the error EGL_BAD_PARAMETER is generated.
+
+ * If EGL_GL_TEXTURE_LEVEL_KHR is 0, <target> is
+ EGL_GL_TEXTURE_CUBE_MAP_*_KHR, <buffer> is not the name of a
+ complete GL texture object, and one or more faces do not have
+ mipmap level 0 specified, the error EGL_BAD_PARAMETER is
+ generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR,
+ EGL_GL_TEXTURE_CUBE_MAP_*_KHR, EGL_GL_RENDERBUFFER_KHR or
+ EGL_GL_TEXTURE_3D_KHR and <buffer> refers to the default GL
+ texture object (0) for the corresponding GL target, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_GL_TEXTURE_2D_KHR, EGL_GL_TEXTURE_CUBE_MAP_*_KHR,
+ or EGL_GL_TEXTURE_3D_KHR, and the value specified in <attr_list>
+ for EGL_GL_TEXTURE_LEVEL_KHR is not a valid mipmap level for the
+ specified GL texture object <buffer>, the error EGL_BAD_MATCH is
+ generated.
+
+ * If <target> is EGL_GL_TEXTURE_3D_KHR, and the value specified in
+ <attr_list> for EGL_GL_TEXTURE_ZOFFSET_KHR exceeds the depth
+ of the specified mipmap level-of-detail in <buffer>, the error
+ EGL_BAD_PARAMETER is generated."
+
+
+Issues
+
+ 1. What should happen if an application attempts to create an
+ EGLImage from a default OpenGL object (i.e., objects with
+ a name of 0)?
+
+ SUGGESTION: Disallow this operation, and generate an error.
+
+ 2. What happens when one of
+ glTexImage2D
+ glCopyTexImage2D
+ glCompressedTexImage2D
+ glTexImage3D
+ glCopyTexImage3D
+ glCompressedTexImage3D
+ is called on a texture which has a mipmap level which is an EGLImage
+ sibling?
+
+ RESOLVED: the EGLImage sibling is orphaned. The mipmap level and the
+ EGLImage no longer have any connection.
+
+ 3. What happens when one of
+ glTexSubImage2D
+ glCopyTexSubImage2D
+ glCompressedTexSubImage2D
+ glTexSubImage3D
+ glCopyTexSubImage3D
+ glCompressedTexSubImage3D
+ is called on a texture which has a mipmap level which is an EGLImage
+ sibling?
+
+ RESOLVED: the EGLImage sibling is NOT orphaned. The mipmap level
+ remains an EGLImage sibling.
+
+ 4. What happens when glGenerateMipmaps is called on a texture which has a
+ mipmap level which is an EGLImage sibling?
+
+ RESOLVED: If the texture is already complete, then the EGLImage
+ sibling is not orphaned, and the mipmap level remains an EGLImage
+ sibling. However, if the texture was not complete then the
+ EGLImage sibling IS orphaned. This is because the implementation
+ will implicitly alter the structure of the mipmap levels.
+
+ 5. What happens when the GL_GENERATE_MIPMAP bit causes a texture to be
+ respecified.
+
+ RESOLVED: If the texture is already complete, then the EGLImage
+ sibling is not orphaned, and the mipmap level remains an EGLImage
+ sibling. However, if the texture was not complete then the
+ EGLImage sibling IS orphaned. This is because the implementation
+ will implicitly alter the structure of the mipmap levels.
+
+ 6. Can an EGLImage be created from a multisampled GL image?
+
+ RESOLVED: NO. Attempting to create an EGLImage from a multisampled
+ GL renderbuffer is now an error. Attempting to create from a
+ multisampled OpenGL texture image is not possible because none of
+ the multisampled <target>s are supported.
+
+ 7. Are all types of two-dimensional GL images which might
+ be associated with EGLImages allowed?
+
+ Not yet. We could add new variants of these extensions to support
+ other image types such as rectangular and 2D array slice textures,
+ but haven't yet seen a need to do so.
+
+Revision History
+
+#13 (Jon Leech, October 9, 2013) - Define interactions with and support for
+ OpenGL and OpenGL ES 3.0, in addition to OpenGL ES 1/2. Add issue 7 (Bug
+ 10728).
+#12 (Jon Leech, September 16, 2013) - Add error when specifying a
+ renderbuffer <target> and passing a multisampled renderbuffer object.
+ Add issue 6 describing lack of support for multisampled EGLImages (Bug
+ 10728).
+#11 (Jon Leech, June 26, 2013) - Add error when specifying a renderbuffer
+ <target> and not passing a renderbuffer object (Bug 10384).
+#10 (Jon Leech, June 13, 2013) - Add a "Valid Targets" column to table bbb
+ for new attributes, matching proposed changes in EGL_KHR_image_base (Bug
+ 10151).
+#9 (Jon Leech, March 28, 2012)
+ - Fix spelling of *CUBE_MAP* tokens (from CUBEMAP) to agree with
+ eglext.h.
+#8 (Jon Leech, February 4, 2009)
+ - Change "non-default ... texture object" to "nonzero".
+#7 (Bruce Merry, January 20, 2009)
+ - Minor wording improvements on issues 4 and 5.
+#6 (Acorn Pooley, January 13, 2009)
+ - Modify completion requirement so textures with only mipmap level 0 can
+ be EGLImage source siblings. Add issues 2-5.
+#5 (Jon Leech, October 8, 2008)
+ - Updated status (approved as part of OpenKODE 1.0)
+#4 (Jon Leech, April 7, 2007)
+ - Assigned enumerant values
+ - Added OpenKODE 1.0 Provisional disclaimer
+#3 (December 14, 2006)
+ - Changed requirement to egl 1.2 to include EGLClientBuffer type.
+ - formatting to keep within 80 columns
+ - added error condition descriptions for <dpy> and <ctx>
+ - changed error condition for EGL_GL_TEXTURE_ZOFFSET_KHR too big to
+ be EGL_BAD_PARAMETER
+#2 (November 27, 2006)
+ - Changed OES token to KHR
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image.txt
new file mode 100644
index 0000000..430f537
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image.txt
@@ -0,0 +1,140 @@
+Name
+
+ KHR_image
+
+Name Strings
+
+ EGL_KHR_image
+
+Contributors
+
+ Jeff Juliano
+ Gary King
+ Jon Leech
+ Jonathan Grant
+ Barthold Lichtenbelt
+ Aaftab Munshi
+ Acorn Pooley
+ Chris Wynn
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on February 11, 2008.
+
+ Rewritten in terms of split functionality in KHR_image_base and
+ KHR_image_pixmap, approved by the Khronos Technical Working Group
+ on November 19, 2008.
+
+Version
+
+ Version 11, November 12, 2008
+
+Number
+
+ EGL Extension #3
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ An EGL client API, such as OpenGL ES or OpenVG, is required.
+
+ The specifications of EGL_KHR_image_base and EGL_KHR_image_pixmap are
+ required to determine the specification of this extension, although
+ those extentions may not be supported.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension defines a new EGL resource type that is suitable for
+ sharing 2D arrays of image data between client APIs, the EGLImage,
+ and allows creating EGLImages from EGL native pixmaps.
+
+New Types
+
+ As defined by EGL_KHR_image_base.
+
+New Procedures and Functions
+
+ As defined by EGL_KHR_image_base.
+
+New Tokens
+
+ As defined by EGL_KHR_image_base and EGL_KHR_image_pixmap, with the
+ exception that EGL_IMAGE_PRESERVED_KHR is not defined by this
+ extension.
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ EGL_KHR_image is equivalent to the combination of the functionality
+ defined by EGL_KHR_image_base and EGL_KHR_image_pixmap, with the
+ exception that if EGL_KHR_image is supported and EGL_KHR_image_base
+ is not, the attribute EGL_IMAGE_PRESERVED_KHR is not accepted in
+ <attrib_list>, However, the default value of this attribute is still
+ EGL_FALSE. In this situation, image preservation is always disabled.
+
+Issues
+
+ None (but see the issues lists for EGL_KHR_image_base and
+ EGL_KHR_image_pixmap).
+
+Revision History
+
+#11 (Jon Leech, November 12, 2008)
+ - Clarified image preservation behavior when using this extension.
+#10 (Jon Leech, October 22, 2008)
+ - Update description of interactions with EGL_KHR_image_base now
+ that the default value of EGL_IMAGE_PRESERVED_KHR is always FALSE.
+#9 (Jon Leech, October 21, 2008)
+ - Split functionality into new extensions EGL_KHR_image_base and
+ EGL_KHR_image_pixmap, and defined legacy non-preserved image behavior
+ when this extension is supported.
+#8 (Jon Leech, October 8, 2008)
+ - Updated status (approved as part of OpenKODE 1.0)
+#7 (Jon Leech, November 20, 2007)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#6 (Jon Leech, April 5, 2007)
+ - Assigned enumerant values
+ - Added OpenKODE 1.0 Provisional disclaimer
+#5 (Jon Leech, February 26, 2007)
+ - Add eglCreateImageKHR error if native pixmaps are not supported by
+ EGL.
+#4 (December 14, 2006)
+ - Replaced EGL_OUT_OF_MEMORY error with EGL_BAD_ALLOC
+ - add "egl" and "EGL" to names to be consistant with spec
+ - formatting to keep within 80 columns
+ - Changed requirement to egl 1.2 to include EGLClientBuffer type.
+ - clarified some unclear error cases
+ - added some new error cases related to <dpy> and <ctx>
+ - add <dpy> param to eglCreateImageKHR and eglDestroyImageKHR
+#3 (November 27, 2006)
+ - Converted OES token to KHR token
+#2 (October 20, 2006)
+ - Split out API-specific image source types (VG, GL, etc.) into
+ individual extensions.
+ - Merged CreateImage2DOES and CreateImage3DOES functions into
+ a single CreateImageOES function with an attribute-value list.
+ - Removed the minimum requirements section (2.5.3), since this
+ doesn't make sense without the client-API specific extensions.
+ The minimum requirements should be migrated to the client-API
+ specific extension specifications.
+ - Added EGL_NO_IMAGE_OES default object, used as return value for
+ CreateImage*OES functions in the event of error conditions.
+ - Reworded issue 5, to clarify that the buffer sub-object (i.e.,
+ the unique resource specified by <ctx>, <target>, <buffer>,
+ and <attrib_list>) specified in CreateImage may not already be
+ an EGLImage sibling (either EGLImage source or EGLImage target).
+#1 Original release
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_base.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_base.txt
new file mode 100644
index 0000000..e6a7fb6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_base.txt
@@ -0,0 +1,755 @@
+Name
+
+ KHR_image_base
+
+Name Strings
+
+ EGL_KHR_image_base
+
+Contributors
+
+ Jeff Juliano
+ Gary King
+ Jon Leech
+ Jonathan Grant
+ Barthold Lichtenbelt
+ Aaftab Munshi
+ Acorn Pooley
+ Chris Wynn
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2008-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Functionality approved (as part of KHR_image) by the
+ Khronos Board of Promoters on February 11, 2008.
+
+ Split into KHR_image_base and KHR_image_pixmap approved by the
+ Khronos Technical Working Group on November 19, 2008. Update to
+ version 5 approved on December 10, 2008.
+
+Version
+
+ Version 8, August 27, 2014
+
+Number
+
+ EGL Extension #8
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ An EGL client API, such as OpenGL ES or OpenVG, is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension defines a new EGL resource type that is suitable for
+ sharing 2D arrays of image data between client APIs, the EGLImage.
+ Although the intended purpose is sharing 2D image data, the
+ underlying interface makes no assumptions about the format or
+ purpose of the resource being shared, leaving those decisions to
+ the application and associated client APIs.
+
+Glossary
+
+ EGLImage: An opaque handle to a shared resource created by EGL
+ client APIs, presumably a 2D array of image data
+
+ EGLImage source: An object or sub-object originally created in
+ a client API (such as a mipmap level of a texture object
+ in OpenGL-ES, or a VGImage in OpenVG) which is used as
+ the <buffer> parameter in a call to eglCreateImageKHR.
+
+ EGLImage target: An object created in a client API (such as a
+ texture object in OpenGL-ES or a VGImage in OpenVG)
+ from a previously-created EGLImage
+
+ EGLImage sibling: The set of all EGLImage targets (in all
+ client API contexts) which are created from the
+ same EGLImage object, and the EGLImage source resouce
+ which was used to create that EGLImage.
+
+ Orphaning: The process of respecifying and/or deleting an EGLImage
+ sibling resource (inside a client API context) which
+ does not result in deallocation of the memory associated
+ with the EGLImage or affect rendering results using other
+ EGLImage siblings.
+
+ Referencing: The process of creating an EGLImage target resource
+ (inside a client API context) from an EGLImage.
+
+ Respecification: When the size, format, or other attributes of an
+ EGLImage sibling are changed via client API calls such as
+ gl*TexImage*. Respecification usually will result in
+ orphaning the sibling. Note that changing the pixel values of
+ the sibling (e.g. by rendering to it or by calling
+ gl*TexSubImage*) does not constitute respecification.
+
+New Types
+
+ /*
+ * EGLImageKHR is an object which can be used to create EGLImage
+ * target resources (inside client APIs).
+ */
+ typedef void* EGLImageKHR;
+
+New Procedures and Functions
+
+ EGLImageKHR eglCreateImageKHR(
+ EGLDisplay dpy,
+ EGLContext ctx,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const EGLint *attrib_list)
+
+ EGLBoolean eglDestroyImageKHR(
+ EGLDisplay dpy,
+ EGLImageKHR image)
+
+New Tokens
+
+ Returned by eglCreateImageKHR:
+
+ EGL_NO_IMAGE_KHR ((EGLImageKHR)0)
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateImageKHR:
+
+ EGL_IMAGE_PRESERVED_KHR 0x30D2
+
+Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
+
+ Add a new section "EGLImages" after section 2.4:
+
+ "2.5 EGLImages
+
+ As described in section 2.4, EGL allows contexts of the same client
+ API type to share significant amounts of state (such as OpenGL-ES
+ texture objects and OpenVG paths); however, in some cases it may
+ be desirable to share state between client APIs - an example would be
+ using a previously-rendered OpenVG image as an OpenGL-ES texture
+ object.
+
+ In order to facilitate these more complicated use-cases, EGL is capable
+ of creating EGL resources that can be shared between contexts of
+ different client APIs (called "EGLImages") from client API resources
+ such as texel arrays in OpenGL-ES texture objects or OpenVG VGImages
+ (collectively, the resources that are used to create EGLImages are
+ referred to as "EGLImage sources").
+
+ The EGL client APIs each provide mechanisms for creating appropriate
+ resource types (such as complete texture arrays or OpenVG VGImages) from
+ EGLImages through a API-specific mechanisms. Collectively, resources
+ which are created from EGLImages within client APIs are referred to as
+ "EGLImage targets." Each EGLImage may have multiple associated EGLImage
+ targets. Collectively, the EGLImage source and EGLImage targets
+ associated with an EGLImage object are referred to as "EGLImage
+ siblings."
+
+ 2.5.1 EGLImage Specification
+
+ The command
+
+ EGLImageKHR eglCreateImageKHR(
+ EGLDisplay dpy,
+ EGLContext ctx,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const EGLint *attrib_list)
+
+ is used to create an EGLImage from an existing image resource <buffer>.
+ <dpy> specifies the EGL display used for this operation.
+ <ctx> specifies the EGL client API context
+ used for this operation, or EGL_NO_CONTEXT if a client API context is not
+ required. <target> specifies the type of resource being used as the
+ EGLImage source (examples include two-dimensional textures in OpenGL ES
+ contexts and VGImage objects in OpenVG contexts). <buffer> is the name
+ (or handle) of a resource to be used as the EGLImage source, cast into the
+ type EGLClientBuffer. <attrib_list> is an list of attribute-value pairs
+ which is used to select sub-sections of <buffer> for use as the EGLImage
+ source, such as mipmap levels for OpenGL ES texture map resources, as well as
+ behavioral options, such as whether to preserve pixel data during creation. If
+ <attrib_list> is non-NULL, the last attribute specified in the list must
+ be EGL_NONE.
+
+ The resource specified by <dpy>, <ctx>, <target>, <buffer>, and
+ <attrib_list> must not itself be an EGLImage sibling, or bound to an EGL
+ PBuffer resource (eglBindTexImage, eglCreatePbufferFromClientBuffer).
+
+ Values accepted for <target> are listed in Table aaa, below(fn1).
+ (fn1) No values are defined by this extension. All functionality
+ to create EGLImages from other types of resources, such as
+ native pixmaps, GL textures, and VGImages, is layered in other
+ extensions.
+
+ +-------------------------+--------------------------------------------+
+ | <target> | Notes |
+ +-------------------------+--------------------------------------------+
+ +-------------------------+--------------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ Attribute names accepted in <attrib_list> are shown in Table bbb,
+ together with the <target> for which each attribute name is valid, and
+ the default value used for each attribute if it is not included in
+ <attrib_list>.
+
+ +-------------------------+----------------------+-----------+---------------+
+ | Attribute | Description | Valid | Default Value |
+ | | | <target>s | |
+ +-------------------------+----------------------+-----------+---------------+
+ | EGL_NONE | Marks the end of the | All | N/A |
+ | | attribute-value list | | |
+ | EGL_IMAGE_PRESERVED_KHR | Whether to preserve | All | EGL_FALSE |
+ | | pixel data | | |
+ +-------------------------+----------------------+-----------+---------------+
+ Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
+
+ This command returns an EGLImageKHR object corresponding to the image
+ data specified by <dpy>, <ctx>, <target>, <buffer> and <attrib_list> which
+ may be referenced by client API operations, or EGL_NO_IMAGE_KHR in the
+ event of an error.
+
+ If the value of attribute EGL_IMAGE_PRESERVED_KHR is EGL_FALSE (the
+ default), then all pixel data values associated with <buffer> will be
+ undefined after eglCreateImageKHR returns.
+
+ If the value of attribute EGL_IMAGE_PRESERVED_KHR is EGL_TRUE, then all
+ pixel data values associated with <buffer> are preserved.
+
+ Errors
+
+ If eglCreateImageKHR fails, EGL_NO_IMAGE_KHR will be returned, the
+ contents of <buffer> will be unaffected, and one of the following
+ errors will be generated:
+
+ * If <dpy> is not the handle of a valid EGLDisplay object, the error
+ EGL_BAD_DISPLAY is generated.
+
+ * If <ctx> is neither the handle of a valid EGLContext object on
+ <dpy> nor EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is
+ generated.
+
+ * If <target> is not one of the values in Table aaa, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If an attribute specified in <attrib_list> is not one of the
+ attributes listed in Table bbb, the error EGL_BAD_PARAMETER is
+ generated.
+
+ * If an attribute specified in <attrib_list> is not a valid attribute
+ for <target>, as shown in Table bbb, the error EGL_BAD_MATCH is
+ generated.
+
+ * If the resource specified by <dpy>, <ctx>, <target>, <buffer> and
+ <attrib_list> has an off-screen buffer bound to it (e.g., by a
+ previous call to eglBindTexImage), the error EGL_BAD_ACCESS is
+ generated.
+
+ * If the resource specified by <dpy>, <ctx>, <target>, <buffer> and
+ <attrib_list> is bound to an off-screen buffer (e.g., by a previous
+ call to eglCreatePbufferFromClientBuffer), the error
+ EGL_BAD_ACCESS is generated.
+
+ * If the resource specified by <dpy>, <ctx>, <target>, <buffer> and
+ <attrib_list> is itself an EGLImage sibling, the error
+ EGL_BAD_ACCESS is generated.
+
+ * If insufficient memory is available to complete the specified
+ operation, the error EGL_BAD_ALLOC is generated.
+
+ * If the call to eglCreateImageKHR fails for multiple reasons, the
+ generated error must be appropriate for one of the reasons,
+ although the specific error returned is undefined.
+
+ * If the value specified in <attrib_list> for EGL_IMAGE_PRESERVED_KHR
+ is EGL_TRUE, and an EGLImageKHR handle cannot be created from the
+ specified resource such that the pixel data values in <buffer> are
+ preserved, the error EGL_BAD_ACCESS is generated.
+
+ Note that the success or failure of eglCreateImageKHR should not affect
+ the ability to use <buffer> in its original API context (or context
+ share group) (although the pixel data values will be undefined if
+ EGL_IMAGE_PRESERVED_KHR is not EGL_TRUE).
+
+ 2.5.2 Lifetime and Usage of EGLImages
+
+ Once an EGLImage is created from an EGLImage source, the memory associated
+ with the EGLImage source will remain allocated (and all EGLImage siblings
+ in all client API contexts will be useable) as long as either of the
+ following conditions is true:
+ A) Any EGLImage siblings exist in any client API context
+ B) The EGLImage object exists inside EGL
+
+ The semantics for specifying, deleting and using EGLImage siblings are
+ client API-specific, and are described in the appropriate API
+ specifications.
+
+ If an application specifies an EGLImage sibling as the destination for
+ rendering and/or pixel download operations (e.g., as an OpenGL-ES
+ framebuffer object, glTexSubImage2D, etc.), the modified image results
+ will be observed by all EGLImage siblings in all client API contexts.
+ If multiple client API contexts access EGLImage sibling resources
+ simultaneously, with one or more context modifying the image data,
+ rendering results in all contexts accessing EGLImage siblings are
+ undefined.
+
+ Respecification and/or deletion of any EGLImage sibling (i.e., both
+ EGLImage source and EGLImage target resources) inside a client API
+ context (e.g., by issuing a subsequent call to
+ gl{Copy,Compressed}TexImage, glDeleteTextures, with the EGLImage
+ sibling resource as the target of the operation) affects only that
+ client API context and other contexts within its share group. The
+ specific semantics for this behavior are defined by each client API,
+ and generally results in orphaning of the EGLImage, and may also
+ include allocation of additional memory for the respecified resource
+ and/or copying of the EGLImage pixel data.
+
+ Operations inside EGL or any client API context which may affect the
+ lifetime of an EGLImage (or the memory allocated for the EGLImage),
+ such as respecifying and/or deleting an EGLImage sibling inside a
+ client API context, must be atomic.
+
+ Applications may create client API resources from an EGLImageKHR using
+ client API extensions outside the scope of this document (such as
+ GL_OES_EGL_image, which creates OpenGL ES texture and renderbuffer
+ objects). If the EGLImageKHR used to create the client resource was
+ created with the EGL_IMAGE_PRESERVED_KHR attribute set to EGL_TRUE, then
+ the pixel data values associated with the image will be preserved after
+ creating the client resource; otherwise, the pixel data values will be
+ undefined. If the EGLImageKHR was created with the
+ EGL_IMAGE_PRESERVED_KHR attribute set to EGL_TRUE, and EGL is unable to
+ create the client resource without modifying the pixel values, then
+ creation will fail and the pixel data values will be preserved.
+
+ The command
+
+ EGLBoolean eglDestroyImageKHR(
+ EGLDisplay dpy,
+ EGLImageKHR image)
+
+ is used to destroy the specified EGLImageKHR object <image>. Once
+ destroyed, <image> may not be used to create any additional EGLImage
+ target resources within any client API contexts, although existing
+ EGLImage siblings may continue to be used. EGL_TRUE is returned
+ if DestroyImageKHR succeeds, EGL_FALSE indicates failure.
+
+ * If <dpy> is not the handle of a valid EGLDisplay object, the error
+ EGL_BAD_DISPLAY is generated.
+
+ * If <image> is not a valid EGLImageKHR object created with respect
+ to <dpy>, the error EGL_BAD_PARAMETER is generated."
+
+ Add a new error to the list at the bottom of Section 3.5.3 (Binding
+ Off-Screen Rendering Surfaces to Client Buffers):
+
+ "* If the buffers contained in <buffer> consist of any EGLImage
+ siblings, an EGL_BAD_ACCESS error is generated."
+
+Issues
+
+ 1. What resource types should be supported by this extension?
+
+ RESOLVED: This specification is designed to support the
+ sharing of two-dimensional image resources between client APIs,
+ as these resources are a fundamental component of all modern
+ graphics APIs.
+
+ Other resources types (e.g., buffer objects) will not be directly
+ supported by this specification, due to a variety of reasons:
+
+ a. An absense of use cases for this functionality
+ b. Handling the semantics for some of these resources
+ (e.g., glMapBuffer) would significantly complicate
+ and delay this specification.
+ c. A desire to address the image-sharing use cases
+ as quickly as possible.
+
+ Should additional resource-sharing functionality be desired
+ in the future, the framework provided by this specification
+ should be extendable to handle more general resource
+ sharing.
+
+ 2. Should this specification address client API-specific resources
+ (OpenGL texture maps, OpenVG VGImages), or should that
+ functionality be provided by layered extensions?
+
+ SUGGESTION: Use layered extensions, even for for sharing image
+ data with native rendering APIs (the EGL_KHR_image_pixmap
+ extension).
+
+ There are two major arguments for using layered extensions:
+
+ 1. The two client APIs which are defined at the time of this
+ specification (OpenVG, OpenGL ES) may not always be
+ deployed on a device; many devices may choose to implement
+ just one of these two APIs. However, even single-API
+ devices may benefit from the ability to share image data
+ with native rendering APIs (provided in this specification)
+ or with the OpenMAX API.
+
+ 2. OpenGL ES defines a number of optional resource types
+ (cubemaps, renderbuffers, volumetric textures) which this
+ framework should support; however, implementations may not.
+ By layering each of these resource types in individual
+ extensions, implementations which are limited to just the
+ core OpenGL ES 1.1 (or OpenGL ES 2.0) features will not
+ need to add EGLImage enumerant support for unsupported
+ resource types.
+
+ The original EGL_KHR_image extension included native pixmap
+ functionality. We have now split the abstract base functionality
+ (the egl{Create,Destroy}ImageKHR APIs) from the native pixmap
+ functionality, and redefined EGL_KHR_image as the combination of
+ EGL_KHR_image_base and EGL_KHR_image_pixmap.
+
+ 3. Should attributes (width, height, format, etc.) for EGLImages
+ be queriable?
+
+ SUGGESTION: No. Given the wealth of attributes that we would
+ need to specify all possible EGLImages (and possible
+ memory layout optimizations performed by implementations), we
+ can dramatically simplify the API without loss of key
+ functionality by making EGLImages opaque and allowing
+ implementations to make the correct decisions internally.
+
+ 4. Should this specification allow the creation of EGLImages from
+ client API resources which are themselves EGLImage targets?
+
+ RESOLVED: No. This can make memory garbage collection and
+ reference counting more difficult, with no practical benefit.
+ Instead, generate an error if an application attempts to
+ create an EGLImage from an EGLImage target resource.
+
+ 5. Should this specification allow multiple EGLImages to be created
+ from the same EGLImage source resource?
+
+ RESOLVED: No. The resource <buffer> specified to
+ eglCreateImageKHR may include multiple sub-objects; examples are
+ mipmapped images and cubemaps in the OpenGL-ES API. However, the
+ EGLImage source is defined as the specific sub-object that is defined
+ by: <ctx>, <target>, <buffer>, and <attrib_list>. This sub-object must
+ not be an EGLImage sibling (either EGLImage source or EGLImage target)
+ when eglCreateImageKHR is called; however, other sub-objects in
+ <buffer> may be EGLImage siblings. This allows applications to share
+ individual cubemap faces, or individual mipmap levels of detail across
+ all of the supported APIs.
+
+ Note that the EGLImage source and any EGLImage target resources
+ will still be EGLImage siblings, even if the EGLImage object
+ is destroyed by a call to DestroyImageKHR.
+
+ 6. If an EGLImage sibling is respecified (or deleted), what
+ should happen to the EGLImage and any other EGLImage
+ siblings?
+
+ RESOLVED: The principle of least surprise would dictate that
+ respecification and/or deletion of a resource in one client API
+ should not adversely affect operation in other client APIs
+ (such as introducing errors).
+
+ Applying this to EGLImages, respecification and/or deletion
+ of one EGLImage sibling should not respecify/delete other
+ EGLImage siblings. Each client API will be responsible for
+ defining appropriate semantics to meet this restriction;
+ however, example behaviors may include one or more of:
+ allocating additional memory for the respecified resource,
+ deleting the EGLImage sibling resource without deallocating
+ the associated memory ("orphaning") and/or copying the
+ existing EGLImage pixel data to an alternate memory location.
+
+ The memory associated with EGLImage objects should remain
+ allocated as long as any EGLImage sibling resources exist
+ in any client API context.
+
+ 7. Should this specification address synchronization issues
+ when multiple client API contexts simultaneously access EGLImage
+ sibling resources?
+
+ RESOLVED: No. Including error-producing lock and synchronization
+ semantics would introduce additional (undesirable) validation
+ overhead in numerous common operations (e.g., glBindTexture,
+ glDrawArrays, etc.). Rather than burdening implementations (and
+ applications) with this overhead, a separate synchronization
+ mechanism should be exposed to applications.
+
+ 8. Should eglCreatePbufferFromClientBuffer accept buffer parameters
+ which are EGLImage siblings?
+
+ RESOLVED: No. Allowing this behavior creates very complex
+ circular dependency possibilities (CreateImage / DeriveImage /
+ CreatePbufferFromClientBuffer / BindTexImage /
+ CreateImage / ...) with no practical benefit. Therefore,
+ attempting to create a Pbuffer from a client buffer which
+ is an EGLImage sibling should generate an error.
+
+ 9. Should CreateImage accept client buffers which are bound to
+ Pbuffers (through eglBindTexImage)?
+
+ RESOLVED: No, for the same reasons listed in Issue 8.
+
+ 10. Should implementations be allowed to modify the pixel data in the
+ EGLImage source buffers specified to eglCreateImageKHR?
+
+ SUGGESTION: By allowing previously-existing image data to become
+ undefined after calls to eglCreateImageKHR, implementations are able
+ to perform any necessary reallocations required for cross-API
+ buffer compatibility (and/or performance), without requiring
+ copy-aside functionality. Because applications are able to
+ respecify the pixel data through mechanisms such as vgSubImage
+ and glTexSubImage, no use-cases are restricted by this.
+
+ Therefore, the current suggestion is to allow implementations
+ to leave pixel data undefined after calls to eglCreateImageKHR
+ functions. The current spec revision has been written in
+ this way.
+
+ 11. What is the correct mechanism for specifying the EGLImage source
+ resources used to create an EGLImage object?
+
+ RESOLVED: Three different mechanisms were discussed while
+ defining this extension:
+
+ A) Providing resource-specific creation functions, such as
+ eglCreateImage2DKHR, eglCreateImage3DKHR, etc.
+
+ B) Providing a single creation function which returns a
+ "NULL" EGLImage object, and requiring client APIs to
+ define additional functions which would allow client API
+ resources to be "bound" to the EGLImage object.
+
+ C) Provide a single resource creation function, and use
+ an attribute-value list with attributes specific to the
+ "target" image resource.
+
+ Initial specifications were written using Option (A); however,
+ it was believed that this structure would result in an increase
+ in the number of entry points over time as additional client APIs
+ and client API resource targets were added. Furthermore, reuse
+ of these functions was resulting in cases where parameters were
+ required to have modal behavior: a 2D image creation function
+ was required to have a mipmap level of detail parameter for
+ OpenGL ES texture maps, but this same parameter would need to be
+ 0 for OpenVG.
+
+ Option (B) provided some nice characteristics: as client APIs
+ continue to evolve, any extensions needed to allow EGLImage
+ creation could be isolated in the individual client API, rather
+ than necessitating an EGL extension. However, the creation of
+ "NULL" images created additional semantic complexity and error
+ conditions (e.g., attempting to derive an EGLImage target from a
+ "NULL" image), and every client API would need to provide a
+ function for every unique resource type; instead of one common
+ API function for pixmap, OpenGL 2D textures, and OpenVG VGImages,
+ three would be required.
+
+ This specification is written using Option (C). There is a
+ single CreateImage function, with a <target> parameter defining
+ the EGLImage source type, and an attribute-value list allowing
+ for additional selection of resource sub-sections. This
+ maximizes entry-point reuse, and minimizes the number of
+ redundant parameters an application may be required to send.
+ This framework allows for layered extensions to be easily
+ written, so little churn is expected as client APIs evolve.
+
+ 12. Should a context be explicitly provided to eglCreateImageKHR,
+ or should the context be deduced from the current thread's
+ bound API?
+
+ SUGGESTION: For clarity (both in usage and spec language), the
+ context containing the EGLImage source should be provided by the
+ application, rather than inferring the context from EGL state.
+
+ 13. Why does this extension define a new EGL object type, rather
+ than using the existing EGLSurface objects?
+
+ RESOLVED: Although controversial, the creation of a new,
+ opaque image object type removes several fundamental problems
+ with the EGLSurface (and Pbuffer) API:
+
+ 1) The tight compatibility requirements of EGLSurfaces
+ and EGLConfigs necessitated applications creating
+ (and calling MakeCurrent) for every unique pixel
+ format used during rendering. This has already caused
+ noticeable performance problems in OpenGL-ES (and
+ desktop OpenGL), and is the primary reason that
+ framebuffer objects were created.
+
+ 2) Application use-cases are centered around sharing of
+ color image data, although unique "sundry" buffers
+ (such as depth, stencil and alpha mask) may be used
+ in each client API.
+
+ 3) Extending the CreatePbuffer interface to support fully-
+ specifying all possible buffer attributes in all client
+ APIs will become unwieldy, particularly as new EGL
+ client APIs and pixel formats are introduced.
+
+ The EGLImage proposal addresses all three of these restrictions:
+
+ 1) is addressed by placing the burden of framebuffer management
+ inside the client API, and allowing EGLImages to be accessed
+ inside client APIs using an appropriate resource type (such
+ as OpenGL-ES renderbuffers). This follows the example provided
+ by the GL_OES_framebuffer_object specification.
+
+ 2) is addressed by defining EGLImages to be "trivial" two-
+ dimensional arrays of pixel data. Implementations may choose
+ to support creation of EGLImages from any type of pixel data,
+ and the association of multiple EGLImages and/or sundry
+ buffers into a single framebuffer is the responsibility of the
+ application and client API, using a mechanism such as
+ GL_OES_framebuffer_object.
+
+ 3) is addressed by defining EGLImages as opaque and
+ non-queriable. Although this introduces potential portability
+ problems (addressed separately in issue 15), it avoids the
+ ever-expanding problem of defining buffer compatibility as the
+ cartesian product of all possible buffer attributes.
+
+ 14. Since referencing EGLImages is the responsibility of the client
+ API, and may fail for implementation-dependent reasons,
+ doesn't this result in a potential portability problem?
+
+ UNRESOLVED: Yes, this portability problem (where referencing
+ succeeds on one platform but generates errors on a different
+ one) is very similar to the implementation-dependent
+ failure introduced in the EXT_framebuffer_object specification,
+ discussed (at length) in Issues (12), (37), (46), (48) and (61)
+ of that specification. Similar to that specification, this
+ specification should include some "minimum requirements"
+ language for EGLImage creation and referencing.
+
+ Since there are numerous references to an upcoming
+ "format restriction" API in the EXT_framebuffer_object
+ specification, it may be valuable to wait until that API is
+ defined before attempting to define a similar API for
+ EGLImages.
+
+ 15. Should creation of an EGLImage from an EGLImage source
+ introduce the possibility for errors in the EGLImage source's
+ owning context?
+
+ RESOLVED: No; although image data may be undefined (issue 11),
+ the (successful or unsuccessful) creation of an EGLImage should
+ not introduce additional error conditions in the EGLImage
+ source's owning context. Text added to the end of section
+ 2.5.1 describing this.
+
+ 16. Is it reasonable to require that when a preserved EGLImage is
+ used by layered extensions to create client API siblings of that
+ image, pixel data values are preserved?
+
+ UNRESOLVED: There are at least two extensions that reference
+ EGLImages to create EGLImage targets, VG_KHR_EGL_image and
+ GL_OES_EGL_image.
+
+ Each of these extensions makes provision for failing the creation of
+ the EGLImage target due to "an implementation-dependent reason".
+ This could include that the pixel data has been marked as preserved,
+ and that the implementation is not able to create the EGLImage
+ target without causing the pixel data of the original EGLImage
+ source <buffer> to become undefined.
+
+ Issue 14 of EGL_KHR_image also discusses the consequences of failure
+ for implementation-dependent reasons. This implies that all
+ extensions for referencing an EGLImage need to make provision for
+ implementation-dependent failure.
+
+ PROPOSED: Yes, this is reasonable. We should add "EGL_KHR_image_base
+ affects the behavior of this extension" sections to the ES and VG
+ extensions. Implementations can continue to export EGL_KHR_image if
+ they are unable to support preserved image functionality.
+
+ 17. Do EGLImage Target creation extensions such as VG_KHR_EGL_image and
+ GL_OES_EGL_image also need to be extended?
+
+ UNRESOLVED: The problem here is that both these extensions
+ explicitly state that pixel data becomes undefined when they
+ reference an EGLImage to create an EGLImage target.
+
+ One solution would be to allow this extension to do the defining on
+ behalf of these extensions. For example, the VG_KHR_EGL_image
+ extension on its own leaves the status of the pixel data undefined,
+ but when VG_KHR_EGL_image is combined with this extension, then the
+ status becomes defined (by this extension).
+
+ When combined with the reasons given in Issue 1, this means it is
+ possible to leave EGLImage Target creation extensions unchanged.
+
+ PROPOSED: Yes, augment these extensions as described in issue 16.
+
+ 18. Is it reasonable for developers to want to preserve pixel data upon
+ creation of EGLImage and EGLImage targets?
+
+ RESOLVED: Yes. This is necessary for composition implementations
+ using EGLImages as an encapsulation mechanism for moving data
+ between producer application, composition API, and composition
+ implementation(s).
+
+ 19. Should we really change the default value of EGL_IMAGE_PRESERVED_KHR
+ when EGL_KHR_image is supported?
+
+ RESOLVED: No. This is a subtle and hard to diagnose source of
+ errors, and the only way to write a portable app would still be
+ to explicitly specify the attribute value. By making the default
+ value FALSE no matter which of the two extension(s) are
+ supported, compatibility with EGL_KHR_image is preserved, and
+ apps must explicitly ask for preservation if they need it.
+
+ 20. Why is EGL_NO_DISPLAY not supported as the <dpy> argument for
+ creating and destroying images, unlike the original version of the
+ EGL_KHR_image specification?
+
+ RESOLVED: There are no defined use cases for this at present, so
+ there is no way to legally pass in EGL_NO_DISPLAY. If in the future,
+ a layered extension allows creation of images not associated with
+ any display, this behavior can be reintroduced.
+
+
+Revision History
+
+#8 (Jon Leech, August 27, 2014)
+ - Remove leftover comment saying that inapplicable attributes are
+ ignored (Bug 12585).
+
+#7 (Jon Leech, June 12, 2013)
+ - Add a column to table bbb specifying which <target>s attributes are
+ valid for, and a generic error if an attribute doesn't match <target>
+ (Bug 10151).
+
+#6 (Jon Leech, December 1, 2010)
+ - Clarify wording of EGL_BAD_CONTEXT error.
+
+#5 (Jon Leech, December 10, 2008)
+ - Change definition of EGL_NO_IMAGE_KHR to 0 (appropriately cast)
+ instead of a reference to an extern implementation-defined
+ variable.
+
+#4 (Jon Leech, November 25, 2008)
+ - Simplify error conditions for eglDestroyImage.
+
+#3 (Jon Leech, November 12, 2008)
+ - Added glossary entry for Respecification, updated description of
+ behavior with preserved images per suggestions from Acorn, and added
+ issue 20 regarding removal of EGL_NO_DISPLAY as a valid <dpy>.
+
+#2 (Jon Leech, October 22, 2008)
+ - Change default value of EGL_IMAGE_PRESERVED_KHR to EGL_FALSE.
+ Update issue 19.
+
+#1 (Jon Leech, October 21, 2008)
+ - Split abstract functionality from EGL_KHR_image into this extension,
+ and merged preserved image functionality from
+ EGL_SYMBIAN_image_preserved.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_pixmap.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_pixmap.txt
new file mode 100644
index 0000000..d7f7920
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_image_pixmap.txt
@@ -0,0 +1,158 @@
+Name
+
+ KHR_image_pixmap
+
+Name Strings
+
+ EGL_KHR_image_pixmap
+
+Contributors
+
+ Jeff Juliano
+ Gary King
+ Jon Leech
+ Jonathan Grant
+ Barthold Lichtenbelt
+ Aaftab Munshi
+ Acorn Pooley
+ Chris Wynn
+ Ray Smith
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2008-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete. Functionality approved (as part of KHR_image) by the
+ Khronos Board of Promoters on February 11, 2008.
+
+ Split into KHR_image_base and KHR_image_pixmap approved by the
+ Khronos Technical Working Group on November 19, 2008.
+
+Version
+
+ Version 5, November 13, 2013
+
+Number
+
+ EGL Extension #9
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ The EGL implementation must define an EGLNativePixmapType (although it
+ is not required either to export any EGLConfigs supporting rendering to
+ native pixmaps, or to support eglCreatePixmapSurface).
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows creating an EGLImage from a native pixmap
+ image.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_PIXMAP_KHR 0x30B0
+
+Additions to Chapter 2 of the EGL 1.4 Specification (EGL Operation)
+
+ Rename section 2.2.2.1 "Native Surface Coordinate Systems" to "Native
+ Surface and EGLImage Pixmap Coordinate Systems" and add to the end of
+ the section:
+
+ "EGLImages created with target EGL_NATIVE_PIXMAP_KHR share the same
+ coordinate system as native pixmap surfaces. When that coordinate system
+ is inverted, client APIs must invert their <y> coordinate when accessing
+ such images as described above."
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +-------------------------+--------------------------------------------+
+ | <target> | Notes |
+ +-------------------------+--------------------------------------------+
+ | EGL_NATIVE_PIXMAP_KHR | Used for EGLNativePixmapType objects |
+ +-------------------------+--------------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_PIXMAP_KHR, <dpy> must be a valid display, <ctx>
+ must be EGL_NO_CONTEXT; <buffer> must be a handle to a valid
+ NativePixmapType object, cast into the type EGLClientBuffer; and
+ attributes other than EGL_IMAGE_PRESERVED_KHR are ignored."
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_NATIVE_PIXMAP_KHR and <buffer> is not a
+ valid native pixmap handle, or if <buffer> is a native pixmap
+ whose color buffer format is incompatible with the system's
+ EGLImage implementation, the error EGL_BAD_PARAMETER is
+ generated.
+
+ * If <target> is EGL_NATIVE_PIXMAP_KHR, and <dpy> is not a valid
+ EGLDisplay object the error EGL_BAD_DISPLAY is generated.
+
+ * If <target> is EGL_NATIVE_PIXMAP_KHR, and <ctx> is not EGL_NO_CONTEXT,
+ the error EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_NATIVE_PIXMAP_KHR, and <buffer> is not a handle
+ to a valid NativePixmapType object, the error EGL_BAD_PARAMETER
+ is generated."
+
+Issues
+
+ 1) Should this specification allow EGLImages to be created from native
+ pixmaps which already have a pixmap surface associated with them, and
+ vice versa?
+
+ RESOLVED: Yes. There are practical usecases for this, and it is
+ already the application's responsibility to handle any format
+ mismatch or synchronization issues that this may allow.
+
+Revision History
+
+#5 (Jon Leech, November 13, 2013)
+ - Add Issue #1 regarding use cases for multiple EGL consumer/producers
+ of a native pixmap (Bug 7779).
+
+#4 (Jon Leech, October 16, 2013)
+ - Add language allowing native pixmap and client API image y coordinate
+ convention to differ. Re-base extension against EGL 1.4 (Bug 9701).
+
+#3 (Jon Leech, November 25, 2008)
+ - Remove dependency on EGLConfig in error conditions.
+
+#2 (Jon Leech, November 12, 2008)
+ - Clarified dependency on EGLNativePixmapType such that pixmap configs
+ and surfaces are not required.
+
+#1 (Jon Leech, October 21, 2008)
+ - Split native pixmap functionality from EGL_KHR_image into a layered
+ extension on EGL_KHR_image_base, and note interaction with the new
+ EGL_IMAGE_PRESERVED_KHR attribute.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface.txt
new file mode 100644
index 0000000..2cab89e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface.txt
@@ -0,0 +1,727 @@
+Name
+
+ KHR_lock_surface
+
+Name Strings
+
+ EGL_KHR_lock_surface
+
+Contributors
+
+ Gary King
+ Jon Leech
+ Marko Lukat
+ Tim Renouf
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ This extension, as well as the layered EGL_KHR_lock_surface2, are
+ obsolete and have been replaced by EGL_KHR_lock_surface3. Khronos
+ recommends implementers who support this extension and lock_surface2
+ also implement lock_surface3, and begin transitioning developers to
+ using that extension. See issue 17 for the reason.
+
+ Complete.
+ Version 17 approved by the Khronos Board of Promoters on
+ February 11, 2008.
+
+Version
+
+ Version 19, October 15, 2013
+
+Number
+
+ EGL Extension #2
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.3
+ Specification.
+
+Overview
+
+ This extension allows mapping color buffers of EGL surfaces into the
+ client address space. This is useful primarily for software
+ rendering on low-end devices which do not support EGL client
+ rendering APIs, although it may be implemented efficiently on more
+ capable devices as well.
+
+ There is a newer EGL_KHR_lock_surface2 extension which slightly
+ modifies and clarifies the semantics of this extension. Vendors
+ should refer to EGL_KHR_lock_surface2 before deciding to implement
+ only EGL_KHR_lock_surface.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy, EGLSurface surface,
+ const EGLint *attrib_list);
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+New Tokens
+
+ Returned in the EGL_SURFACE_TYPE bitmask attribute of EGLConfigs:
+
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:
+
+ EGL_MATCH_FORMAT_KHR 0x3043
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig:
+
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+
+ Accepted as attribute names in the <attrib_list> argument of
+ eglLockSurfaceKHR:
+
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+
+ Accepted as bit values in the EGL_LOCK_USAGE_HINT_KHR bitmask attribute
+ of eglLockSurfaceKHR:
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+
+ Accepted by the <attribute> parameter of eglQuerySurface:
+
+ EGL_BITMAP_POINTER_KHR 0x30C6
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+
+ Returns in the *<value> parameter of eglQuerySurface when
+ <attribute> is EGL_BITMAP_ORIGIN_KHR:
+
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+
+Additions to Chapter 2 of the EGL 1.3 Specification (EGL Operation)
+
+ Add to the end of section 2.2.2:
+
+ Finally, some surfaces may be <locked>, which allows the
+ implementation to map buffers of that surface into client memory
+ for use by software renderers(fn). Locked surfaces cannot be
+ used for any other purpose. When a locked surface is <unlocked>,
+ any changes to the mapped buffer(s) are reflected in the actual
+ graphics or system memory containing the surface.
+
+ [fn: on implementations not supporting mapping graphics
+ memory, or which do not wish to take the stability and
+ security risks that entail, mapping may be done using
+ copy-out and copy-in behavior.]
+
+Additions to Chapter 3 of the EGL 1.3 Specification (EGL Functions and Errors)
+
+ Add to the description of the EGL_BAD_ACCESS error in section 3.1:
+
+ "... or, a surface is locked)."
+
+ Add to table 3.2 ("Types of surfaces supported by an EGLConfig")
+
+ EGL Token Name Description
+ -------------------- ------------------------------------
+ EGL_LOCK_SURFACE_BIT_KHR EGLConfig allows locking surfaces
+ EGL_OPTIMAL_FORMAT_BIT_KHR This format is considered optimal
+ (preferred) when locking / mapping /
+ unlocking is being done.
+
+ Change the first paragraph under "Other EGLConfig Attribute
+ Descriptions" on p. 16:
+
+ "EGL_SURFACE_TYPE is a mask indicating both the surface types
+ that can be created by the corresponding EGLConfig (the config
+ is said to <support> those surface types), and the optional
+ behaviors such surfaces may allow. The valid bit settings are
+ shown in Table 3.2."
+
+ Add a new paragraph following the second paragraph of the same
+ section:
+
+ "If EGL_LOCK_SURFACE_BIT_KHR is set in EGL_SURFACE_TYPE_KHR, then
+ a surface created from the EGLConfig may be locked, mapped into
+ client memory, and unlocked. Locking is described in section
+ 3.5.6. If EGL_OPTIMAL_FORMAT_BIT_KHR is set in
+ EGL_SURFACE_TYPE_KHR, then the surface is considered optimal (by
+ the implementation) from a performance standpoint when buffer
+ mapping is being done.
+
+ Replace the second paragraph of section 3.3 "EGL Versioning":
+
+ "The EGL_CLIENT_APIS string describes which client rendering APIs
+ are supported. It is zero-terminated and contains a
+ space-separated list of API names, which may include
+ ``OpenGL_ES'' if OpenGL ES is supported, and ``OpenVG'' if
+ OpenVG is supported. If no client APIs are supported, then the
+ empty string is returned."
+
+ Insert a new paragraph and table in section 3.4.1 "Querying
+ Configurations", following the description of
+ EGL_MATCH_NATIVE_PIXMAP on page 21:
+
+ "If EGL_MATCH_FORMAT_KHR is specified in <attrib_list>, it must
+ be followed by one of the attribute values EGL_DONT_CARE,
+ EGL_NONE, or one of the format tokens in table
+ [locksurf.format].
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_NONE, only configs
+ which cannot be locked or mapped will match. Such configs must
+ not have the EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_DONT_CARE, it is
+ ignored.
+
+ When EGL_MATCH_FORMAT_KHR has one of the values in table
+ [locksurf.format], only EGLConfigs describing surfaces whose
+ color buffers have the specified format, when mapped with
+ eglLockSurface, will match this attribute. In this case, the
+ EGL_<component>_SIZE attributes of resulting configs must agree
+ with the specific component sizes specified by the format."
+
+ Specific Format Name Description
+ -------------------- -----------
+ EGL_FORMAT_RGB_565_EXACT_KHR RGB565 fields in order from MSB to LSB within a 16-bit integer
+ EGL_FORMAT_RGB_565_KHR RGB565 fields in implementation-chosen order within a 16-bit integer
+ EGL_FORMAT_RGBA_8888_EXACT_KHR RGBA8888 fields in B, G, R, A byte order in memory
+ EGL_FORMAT_RGBA_8888_KHR RGBA8888 fields in implementation-chosen order within a 32-bit integer
+ ------------------------------------------------------------------------------------------------------
+ Table [locksurf.format]: Specific formats for mapped pixels.
+
+ Add to table 3.4 ("Default values and match critera for EGLConfig
+ attributes") on page 22:
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ -------------------- ------------- --------- ----- --------
+ EGL_MATCH_FORMAT_KHR EGL_DONT_CARE Exact None -
+
+ Add EGL_MATCH_FORMAT_KHR to the last paragraph in section 3.4.1 on
+ p. 23, describing attributes not used for sorting EGLConfigs.
+
+
+ Add a new section following the current section 3.5.5:
+
+ "3.5.6 Locking and Mapping Rendering Surfaces
+
+ A rendering surface may be <locked> by calling
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *attrib_list);
+
+ While a surface is locked, only two operations can be performed
+ on it. First, the color buffer of the surface may be <mapped>,
+ giving a pointer into client memory corresponding to the memory
+ of the mapped buffer, and attributes describing mapped buffers
+ may be queried. Second, the surface may be unlocked. Any
+ attempts to use a locked surface in other EGL APIs will fail and
+ generate an EGL_BAD_ACCESS error.
+
+ <attrib_list> specifies additional parameters affecting the locking
+ operation. The list has the same structure as described for
+ eglChooseConfig. Attributes that may be defined are shown in table
+ [locksurf.attr], together with their default values if not specified
+ in <attrib_list>, and possible values which may be specified for
+ them in <attrib_list>.
+
+ Attribute Name Type Default Value Possible Values
+ ----------------------- ------- ------------- -------------------------
+ EGL_MAP_PRESERVE_PIXELS_KHR boolean EGL_FALSE EGL_TRUE / EGL_FALSE
+ EGL_LOCK_USAGE_HINT_KHR bitmask EGL_READ_SURFACE_BIT_KHR | Any combination of
+ EGL_WRITE_SURFACE_BIT_KHR EGL_READ_SURFACE_BIT_KHR
+ and EGL_WRITE_SURFACE_BIT_KHR
+ --------------------------------------------------------------
+ Table [locksurf.attr]: eglLockSurfaceKHR attribute names,
+ default values, and possible values.
+
+ On failure, the surface is unaffected and eglLockSurfaceKHR
+ returns EGL_FALSE. An EGL_BAD_ACCESS error is generated if any
+ of these condition, are true:
+
+ * <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR.
+ * <surface> is already locked.
+ * Any client API is current to <surface>.
+
+ An EGL_BAD_ATTRIBUTE error is generated if an attribute or
+ attribute value not described in table [locksurf.attr] is
+ specified.
+
+ Mapping Buffers of a Locked Surface
+ -----------------------------------
+
+ The color buffer of a locked surface can be <mapped> by calling
+ eglQuerySurface (see section 3.5.7) with <attribute>
+ EGL_BITMAP_POINTER_KHR(fn). The query returns a pointer to a
+ buffer in client memory corresponding to the color buffer of
+ <surface>. In the case of a back-buffered surface, color buffer
+ refers to the back buffer
+
+ [fn: "mapped" only means that the pointer returned is
+ intended to *correspond* to graphics memory. Implementation
+ are not required to return an actual pointer into graphics
+ memory, and often will not.]
+
+ The contents of the mapped buffer are initially undefined(fn)
+ unless the EGL_MAP_PRESERVE_PIXELS_KHR attribute of
+ eglLockSurfaceKHR is set to EGL_TRUE, in which case the contents
+ of the buffer are taken from the contents of <surface>'s color
+ buffer. The default value of EGL_MAP_PRESERVE_PIXELS_KHR is
+ EGL_FALSE.
+
+ [fn: In order to avoid pipeline stalls and readback delays on
+ accelerated implementations, we do not mandate that the
+ current contents of a color buffer appear when it's mapped
+ to client memory, unless the EGL_MAP_PRESERVE_PIXELS_KHR
+ flag is set. Applications using mapped buffers which are not
+ preserved must write to every pixel of the buffer before
+ unlocking the surface. This constraint is considered
+ acceptable for the intended usage scenario (full-frame
+ software renderers).]
+
+ The EGL_LOCK_USAGE_HINT_KHR attribute of eglLockSurfaceKHR is a
+ bitmask describing the intended use of the mapped buffer. If the
+ mask contains EGL_READ_SURFACE_BIT_KHR, data will be read from
+ the mapped buffer. If the mask contains
+ EGL_WRITE_SURFACE_BIT_KHR, data will be written to the mapped
+ buffer. Implementations must support both reading and writing to
+ a mapped buffer regardless of the value of
+ EGL_LOCK_USAGE_HINT_KHR, but performance may be better if the
+ hint is consistent with the actual usage of the buffer. The
+ default value of EGL_LOCK_USAGE_HINT_KHR hints that both reads
+ and writes to the mapped buffer will be done.
+
+ Other attributes of the mapped buffer describe the format of
+ pixels it contains, including its pitch (EGL_BITMAP_PITCH_KHR),
+ origin, pixel size, and the bit width and location of each color
+ component within a pixel. These attributes may be queried using
+ eglQuerySurface, and are described in more detail in section
+ 3.5.7.
+
+ The EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR attributes
+ of a locked surface may change following successive calls to
+ eglLockSurfaceKHR(fn), so they must be queried each time a
+ buffer is mapped. Other attributes of a mapped buffer are
+ invariant and need be queried only once following surface
+ creation.
+
+ [fn: The pointer and pitch of a mapped buffer may change due
+ to display mode changes, for example.]
+
+ Mapping will not suceed if client memory to map the surface into
+ cannot be allocated. In this case, querying eglQuerySurface with
+ <attribute> EGL_BITMAP_POINTER_KHR will fail and generate an EGL
+ error.
+
+ Unlocking Surfaces
+ ------------------
+
+ A rendering surface may be <unlocked> by calling
+
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+ Any mapped buffers of <surface> become unmapped following
+ eglUnlockSurfaceKHR. Any changes made to mapped buffers of
+ <surface> which it was locked are reflected in the surface after
+ unlocking(fn).
+
+ [fn: This language enables implementations to either map
+ video memory, or copy from a separate buffer in client
+ memory.]
+
+ If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_OPTIMAL_FORMAT_BIT_KHR,
+ then the surface is considered optimal (by the implementation)
+ from a performance standpoint when buffer mapping is being
+ done(fn).
+
+ [fn: This often means that the format of all mapped buffers
+ corresponds directly to the format of those buffers in
+ <surface>, so no format conversions are required during
+ unmapping. This results in a high-performance software
+ rendering path. But "optimal format" is really just a hint
+ from EGL that this config is preferred, whatever the actual
+ reason.]
+
+ On failure, eglUnlockSurfaceKHR returns EGL_FALSE. An
+ EGL_BAD_ACCESS error is generated if any of these conditions are
+ true:
+
+ * <surface> is already unlocked.
+ * A display mode change occurred while the surface was locked,
+ and the implementation was unable to reflect mapped buffer
+ state(fn). In this case, <surface> will still be unlocked.
+ However, the contents of the previously mapped buffers of
+ <surface> become undefined, rather than reflecting changes
+ made in the mapped buffers in client memory.
+
+ [fn: Usually this may only occur with window surfaces which
+ have been mapped. EGL does not have an event mechanism to
+ indicate display mode changes. If such a mechanism exists
+ (using native platform events or the OpenKODE event system),
+ applications should respond to mode changes by regenerating
+ all visible window content, including re-doing any software
+ rendering overlapping the mode change.]"
+
+ Add to table 3.5 ("Queryable surface attributes and types")
+
+ Attribute Type Description
+ --------- ---- -----------
+ EGL_BITMAP_POINTER_KHR pointer Address of a mapped color buffer (MCB).
+ EGL_BITMAP_PITCH_KHR integer Number of bytes between the start of
+ adjacent rows in an MCB.
+ EGL_BITMAP_ORIGIN_KHR enum Bitmap origin & direction
+ EGL_BITMAP_PIXEL_x_OFFSET_KHR integer Bit location of each color buffer
+ component within a pixel in an MCB.
+
+ Add to the description of eglQuerySurface properties in section
+ 3.5.6 (renumbered to 3.5.7) on page 33:
+
+ "Properties of a bitmap surface which may be queried include:
+ * EGL_BITMAP_POINTER_KHR, which maps the color buffer of a
+ locked surface and returns the address in client memory of
+ the mapped buffer.
+ * EGL_BITMAP_PITCH_KHR, which returns the number of bytes
+ between successive rows of a mapped buffer.
+ * EGL_BITMAP_ORIGIN_KHR, which describes the way in which a
+ mapped color buffer is displayed on the screen. Possible
+ values are either EGL_LOWER_LEFT_KHR or EGL_UPPER_LEFT_KHR,
+ indicating that the first pixel of the mapped buffer
+ corresponds to the lower left or upper left of a visible
+ window, respectively.
+ * EGL_BITMAP_PIXEL_<x>_OFFSET_KHR, which describes the bit
+ location of the least significant bit of each color
+ component of a pixel within a mapped buffer. <x> is one of
+ RED, GREEN, BLUE, ALPHA, or LUMINANCE.
+
+ The offset for a color component should be treated as the
+ number of bits to left shift the component value to place it
+ within a 16- (for RGB565 formats) or 32-bit (for RGBA8888
+ formats) integer containing the pixel(fn). If a color
+ component does not exist in the mapped buffer, then the bit
+ offset of that component is zero.
+
+ In addition to these attributes, the number of bits for each
+ color component of a pixel within a mapped buffer is obtained by
+ querying the EGL_<x>_SIZE attribute of the EGLConfig used to
+ create the surface, where <x> is <x> is one of RED, GREEN, BLUE,
+ ALPHA, or LUMINANCE. The size of a pixel in the mapped buffer,
+ in bytes, can be determined by querying the EGL_BUFFER_SIZE
+ attribute of the EGLConfig, rounding up to the nearest multiple
+ of 8, and converting from bits to bytes.
+
+ Querying EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR is only
+ allowed when <surface> is mapped (see section 3.5.6). Querying
+ either of these attributes for the first time after calling
+ eglLockSurfaceKHR causes the color buffer of the locked surface
+ to be mapped. Querying them again before unlocking the surface
+ will return the same values as the first time. However, after
+ calling eglUnlockSurfaceKHR, these properties become undefined.
+ After a second call to eglLockSurfaceKHR, these properties may
+ again be queried, but their values may have changed.
+
+ Other properties of the mapped color buffer of a surface are
+ invariant, and need be queried only once following surface
+ creation. If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR, queries of EGL_BITMAP_ORIGIN_KHR and
+ EGL_BITMAP_PIXEL_<x>_OFFSET_KHR return undefined values."
+
+ Add to the description of eglQuerySurface errors in the last
+ paragraph of section 3.5.6 (renumbered to 3.5.7) on page 34:
+
+ "... If <attribute> is either EGL_BITMAP_POINTER_KHR or
+ EGL_BITMAP_PITCH_KHR, and either <surface> is not locked using
+ eglLockSurfaceKHR, or <surface> is locked but mapping fails,
+ then an EGL_BAD_ACCESS error is generated."
+
+Issues
+
+ 1) What is the rationale for this extension?
+
+ Software renderers on low-end implementations need an efficient way
+ to draw pixel data to the screen. High-end implementations must
+ support the same interface for compatibility, while not compromising
+ the accelerability of OpenGL ES and OpenVG client APIs using
+ dedicated graphics hardware and memory.
+
+ Using lock/unlock semantics enables low-end implementations to
+ expose pointers directly into display memory (as extremely dangerous
+ as that may be), while high-end implementations may choose to create
+ backing store in client memory when mapping a buffer, and copy it to
+ graphics memory when the surface is unlocked. Making the initial
+ contents of a mapped buffer undefined means that no readbacks from
+ graphics memory are required, avoiding pipeline stalls.
+
+ This extension is not intended to support mixed-mode (client API and
+ software) rendering. Since mapped buffer contents are undefined,
+ unless the buffer is explicitly preserved (which may be unacceptably
+ expensive on many implementations), applications doing software
+ rendering must touch every pixel of mapped buffers at least once
+ before unlocking the surface.
+
+ 2) Do we need to know if locked surfaces are "fast" or "native"?
+
+ RESOLVED: Yes. This is indicated with the EGL_OPTIMAL_FORMAT_BIT_KHR
+ of EGL_SURFACE_TYPE. However, note that there is no way to guarantee
+ what "fast" or "no format conversions" really means; this is little
+ more than an implementation hint.
+
+ 3) Should we be able to map buffers other than the color buffer?
+
+ RESOLVED: Not initially. However, the <attrib_list> parameter of
+ eglLockSurfaceKHR supports this in the future. There is no <buffer>
+ attribute to eglQuerySurface, so such a layered extension would have
+ to either create a new naming convention (such as
+ EGL_BITMAP_{DEPTH,COLOR,STENCIL,ALPHA_MASK}_POINTER), or define an
+ extended query eglQuerySurfaceBuffer() which takes a <buffer>
+ parameter. It would also be tricky to support interleaved depth /
+ stencil formats. But the attribute list offers some future-proofing
+ at low cost.
+
+ 4) What properties of mapped buffers can be queried?
+
+ RESOLVED: A pointer to the buffer and its pitch, both of which may
+ change in successive lock/unlock cycles. These may be queried only
+ while the underlying surface is locked, and are undefined after
+ unlocking. The first query following locking is the point at which
+ actual buffer mapping must occur.
+
+ RESOLVED: Additionally, the pixel size, origin, and color component
+ bitfield size and offset for each component, which are invariant
+ and may be queried at any time.
+
+ 5) How are mode changes indicated? What happens to the mapped
+ buffer during a mode change?
+
+ RESOLVED: UnlockSurfaceKHR fails and raises an error if a mode
+ change occurred while the surface was locked (although the surface
+ still ends up in the unlocked state - this is necessary since
+ there's no way to clear the error!). If a mode change occurs while a
+ buffer is mapped, the implementation must still allow the
+ application to access mapped buffer memory, even though the contents
+ of the mapped buffer may not be reflected in the changed window
+ after unmapping.
+
+ Note: There's no convenient way to indicate mode changes while
+ a surface is unlocked, despite that being useful to tell apps they
+ have to redraw. The problem is that we don't have an event system,
+ and the power management functionality is overkill since the only
+ resources which are likely to be damaged by a mode change are
+ visible window contents. Fortunately, this problem is beyond the
+ scope of this extension.
+
+ 6) Does locking a surface imply mapping its buffers?
+
+ RESOLVED: No. Locking simply places the surface in that state and
+ prevents it from being made current / swapped / etc. Buffers are
+ mapped only when their pointers or pitch are queried using
+ eglQuerySurface.
+
+ An interesting side effect of this resolution is that calling
+ eglLockSurfaceKHR immediately followed by eglUnlockSurfaceKHR DOES
+ NOT CHANGE THE CONTENTS OF BUFFERS, since none of them were mapped.
+ Likewise locking a surface, querying a buffer pointer or pitch, and
+ then unlocking it without changing the mapped buffer contents causes
+ the surface contents of the mapper buffer(s) to become undefined.
+
+ At the Atlanta F2F, there was a suggestion that eglLockSurfaceKHR
+ should immediately map the color buffer and return a pointer to it,
+ on the basis that this would make it harder for applications to
+ mistakenly use an old buffer pointer from a previous mapping cycle.
+ At the same time, people working on more powerful GPUs wanted the
+ lock operation to be lightweight. These are not consistent goals and
+ we have thus far chosen to separate the lightweight locking, and
+ more expensive mapping operations.
+
+ 7) Can buffer contents be preserved in mapping?
+
+ RESOLVED: Yes. The default behavior is to discard / leave undefined
+ the mapped buffer contents, but the EGL_MAP_PRESERVE_PIXELS_KHR flag
+ may be specified to eglLockSurfaceKHR.
+
+ 8) Should usage hints be provided during mapping?
+
+ RESOLVED: Yes, they may be provided in the EGL_LOCK_USAGE_HINT_KHR
+ bitmask attribute to eglLockSurfaceKHR. Implementations are required
+ to behave correctly no matter the value of the flag vs. the
+ operations actually performed, so the hint may be ignored.
+
+ 9) Should we be able to lock subrectangles of a surface?
+
+ RESOLVED: No. However, the attribute list parameter of
+ eglLockSurfaceKHR allows a layered extension to implement this
+ behavior by specifying an origin and size to map within the buffer.
+
+10) Should the BITMAP_PIXEL_<component>_OFFSET attributes belong to the
+ surface, or the config?
+
+ RESOLVED: Part of the surface. Configs supporting a specific format
+ are matched with config attribute EGL_MATCH_FORMAT_KHR, which
+ supports specific bit-exact formats such as
+ EGL_FORMAT_565_EXACT_KHR.
+
+11) Can the pixel size in a mapped buffer be derived from the
+ EGL_BUFFER_SIZE attribute of the config used to create it?
+
+ RESOLVED: Yes. In principle, hardware using padding bytes in its
+ framebuffer storage could be a problem, and a separate
+ BITMAP_PIXEL_SIZE surface attribute would be needed. However, we
+ don't think implementations are likely to waste graphics memory and
+ bandwidth in this fashion.
+
+12) How are color component locations within a pixel described?
+
+ RESOLVED: Each R, G, B, and A component has a queryable bit offset
+ within an integer. The size of the integer depends on the total size
+ of the pixel; for the 565 formats, the pixel is a 16-bit integer.
+ For the 8888 formats, the pixel is a 32-bit integer.
+
+ We cannot describe component locations with byte locations, since
+ the 565 formats have components straddling byte boundaries. However,
+ this means that offsets for the RGBA8888_EXACT format are different
+ between little- and big-endian CPUs, since the desired format is B,
+ G, R, A components laid out as bytes in increasing memory order.
+
+13) Can mapped buffer contents be affected by other EGL operations?
+
+ RESOLVED: No. A locked surface only allows two operations:
+ unlocking, and mapping. No other EGL operations can take place while
+ the surface is locked (if this were not the case, then
+ eglSwapBuffers might destroy the contents of a mapped buffer).
+
+ It is possible that operations outside the scope of EGL could affect
+ a mapped color buffer. For example, if a surface's color buffer were
+ made up of an EGLImage, one of the EGL client APIs could draw to
+ that image while it was mapped. Responsibility for avoiding this
+ situation is in the hands of the client.
+
+14) Can EGL_MATCH_FORMAT_KHR be queried for a config?
+
+ RESOLVED: Yes. Unlockable configs return EGL_NONE for this
+ attribute.
+
+15) Is a goal of this extension to support "mixed-mode" rendering (both
+ software and EGL client API rendering to the same surface)?
+
+ RESOLVED: No. An implementation *can* choose to export configs
+ supporting creation of lockable surfaces which also support
+ rendering by OpenGL ES, OpenVG, or other client APIs (when the
+ surface is not locked). But there is nothing in the extension
+ requiring this, and the motivation for the extension is simply to
+ support software rendering.
+
+16) Can mapping a locked surface fail?
+
+ RESOLVED: Yes, if memory can't be allocated in the client. This is
+ indicated by queries of EGL_BITMAP_POINTER_KHR and
+ EGL_BITMAP_PITCH_KHR failing and generating an EGL_BAD_ACCESS error.
+
+17) Why has this extension been obsoleted and replaced by
+ EGL_KHR_lock_surface3?
+
+ RESOLVED: Starting with the December 4, 2013 release of EGL 1.4, EGLint
+ is defined to be the same size as the native platform "int" type. Handle
+ and pointer attribute values *cannot* be represented in attribute lists
+ on platforms where sizeof(handle/pointer) > sizeof(int). Existing
+ extensions which assume this functionality are being replaced with new
+ extensions specifying new entry points to work around this issue. See
+ the latest EGL 1.4 Specification for more details.
+
+Revision History
+
+ Version 19, 2013/10/15 - Add issue 17 explaining that the bitmap pointer
+ cannot be safely queried using this extension on 64-bit platforms,
+ and suggest EGL_KHR_lock_surface3 instead. Change formal parameter
+ names from 'display' to 'dpy' to match other EGL APIs.
+ Version 18, 2010/03/23 - Added introductory remark referring to the
+ EGL_KHR_lock_surface2 extension. Clarified that it is the back
+ buffer of a back-buffered surface that is mapped.
+ Version 17, 2008/10/08 - Updated status (approved as part of
+ OpenKODE 1.0).
+ Version 16, 2008/01/24 - Add issue 16 noting that mapping can fail,
+ and a corresponding new error condition for eglQuerySurface.
+ Clean up the issues list.
+ Version 15, 2008/01/09 - Add issue 15 noting that supporting
+ mixed-mode rendering is not a goal or requirement of the
+ extension.
+ Version 14, 2007/11/07 - change ARGB_8888_EXACT back to
+ RGBA_8888_EXACT, since the offsets are now dependent on the
+ endianness of the CPU. Add issue 12 describing this, and clarify
+ that offsets are within a 16- or 32-bit integer depending on the
+ format. Added issue 13 clarifying that locked buffer contents
+ are not affected by eglSwapBuffers, because eglSwapBuffers
+ cannot be issued on a mapped surface. Allow querying
+ EGL_MATCH_FORMAT_KHR for a config, and added related issue 14.
+ Version 13, 2007/05/10 - change RGBA_8888_EXACT to ARGB_8888_EXACT
+ to match hardware layout.
+ Version 12, 2007/04/06 - clarify that when EGL_MATCH_FORMAT_KHR is
+ EGL_DONT_CARE, it does not affect component size of selected
+ configs.
+ Version 11, 2007/04/05 - add missing KHR suffix to some tokens.
+ Version 10, 2007/04/05 - assign enumerant values. Add OpenKODE 1.0
+ Provisional disclaimer.
+ Version 9, 2007/03/26 - add format tokens to "New Tokens"
+ section. Correct description of RGBA format tokens.
+ Version 8, 2007/03/26 - add issue 11 noting theoretical possibility
+ of EGL_BUFFER_SIZE not directly corresponding to the mapped
+ pixel size. Add EGL_MATCH_FORMAT_KHR attribute to
+ eglChooseConfig, and 565 / 8888 formats for it.
+ Version 7, 2007/03/25 - note in issue 5 that access to a mapped
+ buffer must continue to work even after a mode change. Add KHR
+ suffix to new functions and tokens. Remove BITMAP_PIXEL_<x>_BITS
+ and BITMAP_PIXEL_SIZE tokens, which duplicate information in the
+ EGLConfig. Add issue 10 asking whether bitmap pixel offset
+ attributes belong to the config, or to the surface.
+ Version 6, 2007/02/26 - allow EGL_CLIENT_APIS string to be empty in
+ implementations supporting only this extension.
+ Version 5, 2007/02/05 - update contributor list. Changed bit offset
+ queries to return LSB offset, rather than MSB offset.
+ Version 4, 2007/02/02 - correct extension name. Change
+ name of FAST_UNLOCK_BIT_KHR to OPTIMAL_FORMAT_BIT_KHR.
+ Replace buffer_mask parameter of eglLockSurfaceKHR with an
+ attribute list. Add the EGL_MAP_PRESERVE_PIXELS_KHR and
+ EGL_LOCK_USAGE_HINT_KHR attributes per request from Gary. Add issues
+ 7, 8, and 9 describing these attributes and how to support
+ locking subrects in a layered extension, by extending the
+ attribute list.
+ Version 3, 2007/02/01 - the implementation once again controls the
+ mapped buffer memory. There is no longer a separate bitmap
+ surface type; any type surface may potentially be mapped, using
+ lock/unlock semantics.
+ Version 2, 2006/12/22 - simplify by only supporting drawing from
+ client memory to EGL surface color buffers. Specify use of
+ OpenGL DrawPixels terminology. Change name of the extension to
+ EGL_KHR_draw_pixels, since there is no longer any "bitmap
+ surface" involved.
+ Version 1, 2006/12/14 - write up as formal spec language for
+ external review.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface2.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface2.txt
new file mode 100644
index 0000000..f7bae4d
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface2.txt
@@ -0,0 +1,1077 @@
+Name
+
+ KHR_lock_surface2
+
+Name Strings
+
+ EGL_KHR_lock_surface2
+
+Contributors
+
+ Mark Callow
+ Gary King
+ Jon Leech
+ Marko Lukat
+ Alon Or-bach
+ Tim Renouf
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ This extension is obsolete and has been replaced by
+ EGL_KHR_lock_surface3. Khronos recommends implementers who support this
+ extension also implement lock_surface3, and begin transitioning
+ developers to using that extension. See issue 21 for the reason.
+
+ Complete. Version 2 approved by the Khronos Board of Promoters on
+ May 28, 2010.
+ Implemented by Antix Labs.
+
+Version
+
+ Version 3, December 4, 2013
+
+Number
+
+ EGL Extension #16
+
+Dependencies
+
+ Requires EGL 1.0 and EGL_KHR_lock_surface version 18.
+
+ This extension is written against the wording of the EGL 1.3
+ and EGL 1.4 Specifications. Unless otherwise specified, each change
+ applies to both specifications. Unless otherwise specified, a page
+ number refers to the EGL 1.3 specification.
+
+ This extension is written against the wording of EGL_KHR_lock_surface
+ version 18.
+
+Overview
+
+ This extension slightly modifies and clarifies some semantic aspects
+ of the EGL_KHR_lock_surface extension, in a way that is backwards
+ compatible for applications.
+
+ The extension is presented here as the full text of the
+ EGL_KHR_lock_surface extension (minus the Status, Version, Number and
+ Dependencies sections at the start) as modified by the changes made by
+ this EGL_KHR_lock_surface2 extension. A diff utility can be used between
+ EGL_KHR_lock_surface version 18 and this EGL_KHR_lock_surface2 extension
+ to show the exact changes.
+
+ An application which needs to tell whether the implementation supports
+ EGL_KHR_lock_surface2, or just the original EGL_KHR_lock_surface, can
+ use eglQueryString with EGL_EXTENSIONS to query the list of
+ implemented extensions.
+
+ The changes over EGL_KHR_lock_surface can be summarized as follows:
+
+ * EGL_KHR_lock_surface had the EGL_MAP_PRESERVE_PIXELS_KHR attribute on
+ eglLockSurfaceKHR, but failed to point out how the surface attribute
+ EGL_SWAP_BEHAVIOR would interact with lock surface rendering.
+ EGL_KHR_lock_surface2 specifies that the locked buffer contains the
+ back buffer pixels if EGL_SWAP_BEHAVIOR is EGL_BUFFER_PRESERVED
+ _or_ if EGL_MAP_PRESERVE_PIXELS_KHR is EGL_TRUE, and provides a way to
+ set EGL_SWAP_BEHAVIOR on creation of a lockable window surface,
+ even if EGL_SWAP_BEHAVIOR is not otherwise modifiable.
+ EGL_SWAP_BEHAVIOR now defaults to EGL_BUFFER_PRESERVED for a
+ lockable surface.
+
+ * EGL_KHR_lock_surface failed to specify its interaction with the
+ EGL requirement that a context be current at eglSwapBuffers; no
+ context is used for lock surface rendering. EGL_KHR_lock_surface2
+ relaxes that requirement for a lockable window surface, in a way
+ that is anticipated to apply to all window surfaces in a future
+ version of EGL.
+
+ * Wording in EGL_KHR_lock_surface could be read to imply that almost
+ all surface attributes are invariant for a lockable surface.
+ EGL_KHR_lock_surface2 clarifies the wording.
+
+ * EGL_KHR_lock_surface2 clarifies what is returned when
+ the attribute EGL_MATCH_FORMAT_KHR is queried, especially when
+ one of the "inexact" formats was used to choose the config.
+
+ * EGL_KHR_lock_surface did not specify when a surface could change size.
+ EGL_KHR_lock_surface2 specifies that a surface cannot change size
+ when it is locked.
+
+ * EGL_KHR_lock_surface2 adds the config attribute
+ EGL_BITMAP_PIXEL_SIZE_KHR, to allow an application to dynamically
+ detect pixel layout for a format with a "hole", such as RGBU8888
+ (where "U" means "unused").
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglQuerySurface:
+
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+Full text of EGL_KHR_lock_surface plus EGL_KHR_lock_surface2:
+
+Overview
+
+ This extension allows mapping color buffers of EGL surfaces into the
+ client address space. This is useful primarily for software
+ rendering on low-end devices which do not support EGL client
+ rendering APIs, although it may be implemented efficiently on more
+ capable devices as well.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy, EGLSurface surface,
+ const EGLint *attrib_list);
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+New Tokens
+
+ Returned in the EGL_SURFACE_TYPE bitmask attribute of EGLConfigs:
+
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:
+
+ EGL_MATCH_FORMAT_KHR 0x3043
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig, and defined as possible values of that attribute
+ when querying it:
+
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig:
+
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+
+ Accepted as attribute names in the <attrib_list> argument of
+ eglLockSurfaceKHR:
+
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+
+ Accepted as bit values in the EGL_LOCK_USAGE_HINT_KHR bitmask attribute
+ of eglLockSurfaceKHR:
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+
+ Accepted by the <attribute> parameter of eglQuerySurface:
+
+ EGL_BITMAP_POINTER_KHR 0x30C6
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+ Returns in the *<value> parameter of eglQuerySurface when
+ <attribute> is EGL_BITMAP_ORIGIN_KHR:
+
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+
+Additions to Chapter 2 of the EGL 1.3 Specification (EGL Operation)
+
+ Add to the end of section 2.2.2:
+
+ Finally, some surfaces may be <locked>, which allows the
+ implementation to map buffers of that surface into client memory
+ for use by software renderers(fn). Locked surfaces cannot be
+ used for any other purpose. When a locked surface is <unlocked>,
+ any changes to the mapped buffer(s) are reflected in the actual
+ graphics or system memory containing the surface.
+
+ [fn: on implementations not supporting mapping graphics
+ memory, or which do not wish to take the stability and
+ security risks that entail, mapping may be done using
+ copy-out and copy-in behavior.]
+
+Additions to Chapter 3 of the EGL 1.3 Specification (EGL Functions and Errors)
+
+ Add to the description of the EGL_BAD_ACCESS error in section 3.1:
+
+ "... or, a surface is locked)."
+
+ Add to table 3.2 ("Types of surfaces supported by an EGLConfig")
+
+ EGL Token Name Description
+ -------------------- ------------------------------------
+ EGL_LOCK_SURFACE_BIT_KHR EGLConfig allows locking surfaces
+ EGL_OPTIMAL_FORMAT_BIT_KHR This format is considered optimal
+ (preferred) when locking / mapping /
+ unlocking is being done.
+
+ Change the first paragraph under "Other EGLConfig Attribute
+ Descriptions" on p. 16:
+
+ "EGL_SURFACE_TYPE is a mask indicating both the surface types
+ that can be created by the corresponding EGLConfig (the config
+ is said to <support> those surface types), and the optional
+ behaviors such surfaces may allow. The valid bit settings are
+ shown in Table 3.2."
+
+ Add a new paragraph following the second paragraph of the same
+ section:
+
+ "If EGL_LOCK_SURFACE_BIT_KHR is set in EGL_SURFACE_TYPE, then
+ a surface created from the EGLConfig may be locked, mapped into
+ client memory, and unlocked. Locking is described in section
+ 3.5.6. If EGL_OPTIMAL_FORMAT_BIT_KHR is set in
+ EGL_SURFACE_TYPE, then the surface is considered optimal (by
+ the implementation) from a performance standpoint when buffer
+ mapping is being done."
+
+ Replace the second paragraph of section 3.3 "EGL Versioning":
+
+ "The EGL_CLIENT_APIS string describes which client rendering APIs
+ are supported. It is zero-terminated and contains a
+ space-separated list of API names, which may include
+ ``OpenGL_ES'' if OpenGL ES is supported, and ``OpenVG'' if
+ OpenVG is supported. If no client APIs are supported, then the
+ empty string is returned."
+
+ Insert a new paragraph and table in section 3.4.1 "Querying
+ Configurations", following the description of
+ EGL_MATCH_NATIVE_PIXMAP on page 21:
+
+ "If EGL_MATCH_FORMAT_KHR is specified in <attrib_list>, it must
+ be followed by one of the attribute values EGL_DONT_CARE,
+ EGL_NONE, or one of the format tokens in table
+ [locksurf.format].
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_NONE, only configs
+ which cannot be locked or mapped will match. Such configs must
+ not have the EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_DONT_CARE, it is
+ ignored.
+
+ When EGL_MATCH_FORMAT_KHR has one of the values in table
+ [locksurf.format], only EGLConfigs describing surfaces whose
+ color buffers have the specified format, when mapped with
+ eglLockSurface, will match this attribute. In this case, the
+ EGL_<component>_SIZE attributes of resulting configs must agree
+ with the specific component sizes specified by the format."
+
+ Specific Format Name Description
+ -------------------- -----------
+ EGL_FORMAT_RGB_565_EXACT_KHR RGB565 fields in order from MSB to LSB within a 16-bit integer
+ EGL_FORMAT_RGB_565_KHR RGB565 fields in implementation-chosen order within a 16-bit integer
+ EGL_FORMAT_RGBA_8888_EXACT_KHR RGBA8888 fields in B, G, R, A byte order in memory
+ EGL_FORMAT_RGBA_8888_KHR RGBA8888 fields in implementation-chosen order within a 32-bit integer
+ ------------------------------------------------------------------------------------------------------
+ Table [locksurf.format]: Specific formats for mapped pixels.
+
+ Add to table 3.4 ("Default values and match critera for EGLConfig
+ attributes") on page 22:
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ -------------------- ------------- --------- ----- --------
+ EGL_MATCH_FORMAT_KHR EGL_DONT_CARE Exact None -
+
+ Add EGL_MATCH_FORMAT_KHR to the last paragraph in section 3.4.1 on
+ p. 23, describing attributes not used for sorting EGLConfigs.
+
+ Add a new paragraph to the end of section 3.4.3 "Querying Configuration
+ Attributes":
+
+ "Querying the EGL_MATCH_FORMAT_KHR attribute results in EGL_NONE
+ for an EGLConfig that is not lockable, one of the "exact" formats
+ (EGL_FORMAT_RGB_565_EXACT_KHR, EGL_FORMAT_RGBA_8888_EXACT_KHR)
+ if the color buffer matches that format when mapped with
+ eglLockSurface, or for any other format a value that is not
+ EGL_NONE or EGL_DONT_CARE but is otherwise undefined. In particular,
+ the color buffer format matching one of the "inexact" formats
+ does not guarantee that that EGL_FORMAT_* value is returned."
+
+ In section 3.5.1 "Creating On-Screen Rendering Surfaces", add the
+ following to the paragraph that lists the attributes that can be set
+ in attrib_list:
+
+ "... and EGL_SWAP_BEHAVIOR."
+
+ and add a new penultimate paragraph:
+
+ "EGL_SWAP_BEHAVIOR specifies the initial value of the
+ EGL_SWAP_BEHAVIOR surface attribute (section 3.5.6), and is thus
+ either EGL_BUFFER_PRESERVED or EGL_BUFFER_DESTROYED. This setting
+ of EGL_SWAP_BEHAVIOR at surface creation time is supported only
+ for a lockable surface, i.e. where the EGLConfig has
+ EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE."
+
+ In EGL 1.4, also add the following text to that same paragraph:
+
+ "For such a lockable surface, whether it is possible to change
+ the EGL_SWAP_BEHAVIOR attribute after surface creation is
+ determined by EGL_SWAP_BEHAVIOR_PRESERVED_BIT in the
+ EGL_SURFACE_TYPE EGLConfig attribute."
+
+ Add a new section following the current section 3.5.5:
+
+ "3.5.6 Locking and Mapping Rendering Surfaces
+
+ A rendering surface may be <locked> by calling
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *attrib_list);
+
+ While a surface is locked, only two operations can be performed
+ on it. First, a surface attribute may be queried using
+ eglQuerySurface. This includes the case of querying
+ EGL_BITMAP_POINTER_KHR, which causes the surface to be
+ <mapped> (if not already mapped) and gives
+ a pointer into client memory corresponding to the memory
+ of the mapped buffer. Second, the surface may be unlocked. Any
+ attempts to use a locked surface in other EGL APIs will fail and
+ generate an EGL_BAD_ACCESS error.
+
+ While a surface is locked, its dimensions (the values of the EGL_WIDTH
+ and EGL_HEIGHT surface attributes) do not change. They may change
+ at any other time, therefore an application must query these
+ attributes <after> the call to eglLockSurfaceKHR to ensure that it has
+ the correct size of the mapped buffer.
+
+ <attrib_list> specifies additional parameters affecting the locking
+ operation. The list has the same structure as described for
+ eglChooseConfig. Attributes that may be defined are shown in table
+ [locksurf.attr], together with their default values if not specified
+ in <attrib_list>, and possible values which may be specified for
+ them in <attrib_list>.
+
+ Attribute Name Type Default Value Possible Values
+ ----------------------- ------- ------------- -------------------------
+ EGL_MAP_PRESERVE_PIXELS_KHR boolean EGL_FALSE EGL_TRUE / EGL_FALSE
+ EGL_LOCK_USAGE_HINT_KHR bitmask EGL_READ_SURFACE_BIT_KHR | Any combination of
+ EGL_WRITE_SURFACE_BIT_KHR EGL_READ_SURFACE_BIT_KHR
+ and EGL_WRITE_SURFACE_BIT_KHR
+ --------------------------------------------------------------
+ Table [locksurf.attr]: eglLockSurfaceKHR attribute names,
+ default values, and possible values.
+
+ On failure, the surface is unaffected and eglLockSurfaceKHR
+ returns EGL_FALSE. An EGL_BAD_ACCESS error is generated if any
+ of these condition, are true:
+
+ * <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR.
+ * <surface> is already locked.
+ * Any client API is current to <surface>.
+
+ An EGL_BAD_ATTRIBUTE error is generated if an attribute or
+ attribute value not described in table [locksurf.attr] is
+ specified.
+
+ Mapping Buffers of a Locked Surface
+ -----------------------------------
+
+ The color buffer of a locked surface can be <mapped> by calling
+ eglQuerySurface (see section 3.5.7) with <attribute>
+ EGL_BITMAP_POINTER_KHR(fn). The query returns a pointer to a
+ buffer in client memory corresponding to the color buffer of
+ <surface>. In the case of a back-buffered surface, color buffer
+ refers to the back buffer.
+
+ [fn: "mapped" only means that the pointer returned is
+ intended to *correspond* to graphics memory. Implementation
+ are not required to return an actual pointer into graphics
+ memory, and often will not.]
+
+
+ The contents of the mapped buffer are initially undefined(fn)
+ unless either the EGL_MAP_PRESERVE_PIXELS_KHR attribute of
+ eglLockSurfaceKHR is set to EGL_TRUE, or (for a window surface)
+ the EGL_SWAP_BEHAVIOR surface attribute is set to
+ EGL_BUFFER_PRESERVE, in which case the contents
+ of the buffer are taken from the contents of <surface>'s color
+ buffer. The default value of EGL_MAP_PRESERVE_PIXELS_KHR is
+ EGL_FALSE.
+
+ [fn: In order to avoid pipeline stalls and readback delays on
+ accelerated implementations, we do not mandate that the
+ current contents of a color buffer appear when it's mapped
+ to client memory, unless the EGL_MAP_PRESERVE_PIXELS_KHR
+ flag is set or (for a window surface) EGL_SWAP_BEHAVIOR is
+ set to EGL_BUFFER_PRESERVE. Applications using mapped
+ buffers which are not
+ preserved must write to every pixel of the buffer before
+ unlocking the surface. This constraint is considered
+ acceptable for the intended usage scenario (full-frame
+ software renderers). Such an application may lock-render-unlock
+ multiple times per frame (i.e. per eglSwapBuffers) by setting
+ EGL_MAP_PRESERVE_PIXELS_KHR to EGL_TRUE for the second and
+ subsequent locks.
+
+ Note that EGL_SWAP_BEHAVIOR also controls whether the color
+ buffer contents are preserved over a call to eglSwapBuffers.]
+
+ The EGL_LOCK_USAGE_HINT_KHR attribute of eglLockSurfaceKHR is a
+ bitmask describing the intended use of the mapped buffer. If the
+ mask contains EGL_READ_SURFACE_BIT_KHR, data will be read from
+ the mapped buffer. If the mask contains
+ EGL_WRITE_SURFACE_BIT_KHR, data will be written to the mapped
+ buffer. Implementations must support both reading and writing to
+ a mapped buffer regardless of the value of
+ EGL_LOCK_USAGE_HINT_KHR, but performance may be better if the
+ hint is consistent with the actual usage of the buffer. The
+ default value of EGL_LOCK_USAGE_HINT_KHR hints that both reads
+ and writes to the mapped buffer will be done.
+
+ Other attributes of the mapped buffer describe the format of
+ pixels it contains, including its pitch (EGL_BITMAP_PITCH_KHR),
+ origin (EGL_BITMAP_ORIGIN_KHR), and the bit location of each color
+ component within a pixel (EGL_BITMAP_PIXEL_x_OFFSET_KHR). These
+ attributes may be queried using eglQuerySurface, and are described
+ in more detail in section 3.5.7.
+
+ The EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR attributes
+ of a locked surface may change following successive calls to
+ eglLockSurfaceKHR(fn), so they must be queried each time a
+ buffer is mapped. Other attributes of a mapped buffer (listed in
+ the paragraph above) are invariant and need be queried only once
+ following surface creation.
+
+ [fn: The pointer and pitch of a mapped buffer may change due
+ to display mode changes, for example.]
+
+ Mapping will not suceed if client memory to map the surface into
+ cannot be allocated. In this case, querying eglQuerySurface with
+ <attribute> EGL_BITMAP_POINTER_KHR will fail and generate an EGL
+ error.
+
+ Unlocking Surfaces
+ ------------------
+
+ A rendering surface may be <unlocked> by calling
+
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+ Any mapped buffers of <surface> become unmapped following
+ eglUnlockSurfaceKHR. Any changes made to mapped buffers of
+ <surface> which it was locked are reflected in the surface after
+ unlocking(fn).
+
+ [fn: This language enables implementations to either map
+ video memory, or copy from a separate buffer in client
+ memory.]
+
+ If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_OPTIMAL_FORMAT_BIT_KHR,
+ then the surface is considered optimal (by the implementation)
+ from a performance standpoint when buffer mapping is being
+ done(fn).
+
+ [fn: This often means that the format of all mapped buffers
+ corresponds directly to the format of those buffers in
+ <surface>, so no format conversions are required during
+ unmapping. This results in a high-performance software
+ rendering path. But "optimal format" is really just a hint
+ from EGL that this config is preferred, whatever the actual
+ reason.]
+
+ On failure, eglUnlockSurfaceKHR returns EGL_FALSE. An
+ EGL_BAD_ACCESS error is generated if any of these conditions are
+ true:
+
+ * <surface> is already unlocked.
+ * A display mode change occurred while the surface was locked,
+ and the implementation was unable to reflect mapped buffer
+ state(fn). In this case, <surface> will still be unlocked.
+ However, the contents of the previously mapped buffers of
+ <surface> become undefined, rather than reflecting changes
+ made in the mapped buffers in client memory.
+
+ [fn: Usually this may only occur with window surfaces which
+ have been mapped. EGL does not have an event mechanism to
+ indicate display mode changes. If such a mechanism exists
+ (using native platform events or the OpenKODE event system),
+ applications should respond to mode changes by regenerating
+ all visible window content, including re-doing any software
+ rendering overlapping the mode change.]"
+
+ Add to table 3.5 ("Queryable surface attributes and types")
+
+ Attribute Type Description
+ --------- ---- -----------
+ EGL_BITMAP_POINTER_KHR pointer Address of a mapped color buffer (MCB).
+ EGL_BITMAP_PITCH_KHR integer Number of bytes between the start of
+ adjacent rows in an MCB.
+ EGL_BITMAP_ORIGIN_KHR enum Bitmap origin & direction
+ EGL_BITMAP_PIXEL_x_OFFSET_KHR integer Bit location of each color buffer
+ component within a pixel in an MCB.
+ EGL_BITMAP_PIXEL_SIZE_KHR integer Bits per pixel
+
+ In EGL 1.4 only, in the description of eglSurfaceAttrib properties
+ that can be set in section 3.5.6 (renumbered to 3.5.7), on page 35,
+ add to the first paragraph describing EGL_SWAP_BEHAVIOR:
+
+ "The value of EGL_SWAP_BEHAVIOR also affects the semantics of
+ eglLockSurfaceKHR for a lockable window surface. See section 3.5.6."
+
+ In EGL 1.4 only, in the description of eglSurfaceAttrib properties
+ that can be set in section 3.5.6 (renumbered to 3.5.7), on page 35,
+ change the paragraph concerning the initial value of EGL_SWAP_BEHAVIOR
+ to:
+
+ "The initial value of EGL_SWAP_BEHAVIOR is chosen by the
+ implementation, except for a lockable window surface (i.e. where the
+ EGLConfig has both EGL_LOCK_SURFACE_BIT_KHR and EGL_WINDOW_BIT set in
+ EGL_SURFACE_TYPE), where the default is EGL_BUFFER_PRESERVED, but it
+ may be overridden by specifying EGL_SWAP_BEHAVIOR to
+ eglCreateWindowSurface."
+
+ In EGL 1.3 only, in the description of eglQuerySurface properties
+ that can be queried in section 3.5.6 (renumbered to 3.5.7), on page 33,
+ add to the paragraph describing EGL_SWAP_BEHAVIOR:
+
+ "The value of EGL_SWAP_BEHAVIOR also affects the semantics of
+ eglLockSurfaceKHR for a lockable window surface. See section 3.5.6.
+ For a lockable window surface (one whose EGLConfig has both
+ EGL_LOCK_SURFACE_BIT_KHR and EGL_WINDOW_BIT set in EGL_SURFACE_TYPE),
+ the value of this attribute may be set in the eglCreateWindowSurface
+ call, and if not set there defaults to EGL_BUFFER_PRESERVED. See
+ section 3.5.1. The default for a non-lockable surface is chosen by the
+ implementation."
+
+ Add to the description of eglQuerySurface properties in section
+ 3.5.6 (renumbered to 3.5.7) on page 33:
+
+ "Properties of a bitmap surface which may be queried include:
+ * EGL_BITMAP_POINTER_KHR, which maps the color buffer of a
+ locked surface and returns the address in client memory of
+ the mapped buffer.
+ * EGL_BITMAP_PITCH_KHR, which returns the number of bytes
+ between successive rows of a mapped buffer.
+ * EGL_BITMAP_ORIGIN_KHR, which describes the way in which a
+ mapped color buffer is displayed on the screen. Possible
+ values are either EGL_LOWER_LEFT_KHR or EGL_UPPER_LEFT_KHR,
+ indicating that the first pixel of the mapped buffer
+ corresponds to the lower left or upper left of a visible
+ window, respectively.
+ * EGL_BITMAP_PIXEL_<x>_OFFSET_KHR, which describes the bit
+ location of the least significant bit of each color
+ component of a pixel within a mapped buffer. <x> is one of
+ RED, GREEN, BLUE, ALPHA, or LUMINANCE.
+
+ The offset for a color component should be treated as the
+ number of bits to left shift the component value to place it
+ within a n-bit
+ integer containing the pixel, where n is the number of bits
+ per pixel. If a color
+ component does not exist in the mapped buffer, then the bit
+ offset of that component is zero. If a color component
+ does exist but not in a single contiguous range of bits,
+ then the value of the attribute is EGL_UNKNOWN.
+
+ * EGL_BITMAP_PIXEL_SIZE_KHR, which returns the number of bits
+ per pixel, assumed to be least significant leftmost if there
+ are multiple pixels per byte. The attribute takes the value
+ EGL_UNKNOWN if this assumption is not true, or if pixels are not
+ laid out left to right in memory (for example pairs of 16-bit
+ pixels are swapped in memory).
+
+ In addition to these attributes, the number of bits for each
+ color component of a pixel within a mapped buffer is obtained by
+ querying the EGL_<x>_SIZE attribute of the EGLConfig used to
+ create the surface, where <x> is <x> is one of RED, GREEN, BLUE,
+ ALPHA, or LUMINANCE.
+
+ Querying EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR is only
+ allowed when <surface> is mapped (see section 3.5.6). Querying
+ either of these attributes for the first time after calling
+ eglLockSurfaceKHR causes the color buffer of the locked surface
+ to be mapped. Querying them again before unlocking the surface
+ will return the same values as the first time. However, after
+ calling eglUnlockSurfaceKHR, these properties become undefined.
+ After a second call to eglLockSurfaceKHR, these properties may
+ again be queried, but their values may have changed.
+
+ Other properties of the mapped color buffer of a surface
+ (in the list above) are
+ invariant, and need be queried only once following surface
+ creation. If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR, queries of EGL_BITMAP_ORIGIN_KHR,
+ EGL_BITMAP_PIXEL_<x>_OFFSET_KHR and EGL_BITMAP_PIXEL_SIZE_KHR
+ return undefined values."
+
+ Add to the description of eglQuerySurface errors in the last
+ paragraph of section 3.5.6 (renumbered to 3.5.7) on page 34:
+
+ "... If <attribute> is either EGL_BITMAP_POINTER_KHR or
+ EGL_BITMAP_PITCH_KHR, and either <surface> is not locked using
+ eglLockSurfaceKHR, or <surface> is locked but mapping fails,
+ then an EGL_BAD_ACCESS error is generated."
+
+ In section 3.9.3 Posting Semantics on page 46, append to the first
+ paragraph:
+
+ "This restriction does not apply to lockable surfaces; for such
+ a surface, eglSwapBuffers and eglCopyBuffers may be called for
+ a surface not bound to any client API context(fn).
+
+ [fn: Normally this would only be done when using methods other
+ than client API rendering to specify the color buffer contents,
+ such as software rendering to a locked surface.]"
+
+ and replace the second paragraph ("If <dpy> and <surface> ... not be
+ executed until posting is completed.") with:
+
+ "If <surface> is bound to a current client API context for the calling
+ thread, eglSwapBuffers and eglCopyBuffers perform an implicit flush
+ operation on the context (glFlush for an OpenGL or OpenGL ES context,
+ vgFlush for an OpenVG context). Subsequent client API commands can be
+ issued immediately, but will not be executed until posting is
+ completed.
+
+ If <surface> is current to a client API context in any thread other
+ than the calling thread, eglSwapBuffers and eglCopyBuffers will fail.
+
+ and append the following sentence to the eglSwapInterval paragraph:
+
+ "The swap interval has no effect on an eglSwapBuffers for a surface
+ not bound to a current client API context."
+
+ In 3.9.4 Posting Errors, change the sentence "If <surface> is not bound
+ to the calling thread's current context, an EGL_BAD_SURFACE error is
+ generated." to:
+
+ "If <surface> is bound to a current context in a thread other
+ than the calling thread, an EGL_BAD_SURFACE error is generated."
+
+
+Issues
+
+ 1) What is the rationale for this extension?
+
+ Software renderers on low-end implementations need an efficient way
+ to draw pixel data to the screen. High-end implementations must
+ support the same interface for compatibility, while not compromising
+ the accelerability of OpenGL ES and OpenVG client APIs using
+ dedicated graphics hardware and memory.
+
+ Using lock/unlock semantics enables low-end implementations to
+ expose pointers directly into display memory (as extremely dangerous
+ as that may be), while high-end implementations may choose to create
+ backing store in client memory when mapping a buffer, and copy it to
+ graphics memory when the surface is unlocked. Making the initial
+ contents of a mapped buffer undefined means that no readbacks from
+ graphics memory are required, avoiding pipeline stalls.
+
+ This extension is not intended to support mixed-mode (client API and
+ software) rendering. Since mapped buffer contents are undefined,
+ unless the buffer is explicitly preserved (which may be unacceptably
+ expensive on many implementations), applications doing software
+ rendering must touch every pixel of mapped buffers at least once
+ before unlocking the surface.
+
+ 2) Do we need to know if locked surfaces are "fast" or "native"?
+
+ RESOLVED: Yes. This is indicated with the EGL_OPTIMAL_FORMAT_BIT_KHR
+ of EGL_SURFACE_TYPE. However, note that there is no way to guarantee
+ what "fast" or "no format conversions" really means; this is little
+ more than an implementation hint.
+
+ 3) Should we be able to map buffers other than the color buffer?
+
+ RESOLVED: Not initially. However, the <attrib_list> parameter of
+ eglLockSurfaceKHR supports this in the future. There is no <buffer>
+ attribute to eglQuerySurface, so such a layered extension would have
+ to either create a new naming convention (such as
+ EGL_BITMAP_{DEPTH,COLOR,STENCIL,ALPHA_MASK}_POINTER), or define an
+ extended query eglQuerySurfaceBuffer() which takes a <buffer>
+ parameter. It would also be tricky to support interleaved depth /
+ stencil formats. But the attribute list offers some future-proofing
+ at low cost.
+
+ 4) What properties of mapped buffers can be queried?
+
+ RESOLVED: A pointer to the buffer and its pitch, both of which may
+ change in successive lock/unlock cycles. These may be queried only
+ while the underlying surface is locked, and are undefined after
+ unlocking. The first query following locking is the point at which
+ actual buffer mapping must occur.
+
+ RESOLVED: Additionally, the pixel size, origin, and color component
+ bitfield size and offset for each component, which are invariant
+ and may be queried at any time.
+
+ 5) How are mode changes indicated? What happens to the mapped
+ buffer during a mode change?
+
+ RESOLVED: UnlockSurfaceKHR fails and raises an error if a mode
+ change occurred while the surface was locked (although the surface
+ still ends up in the unlocked state - this is necessary since
+ there's no way to clear the error!). If a mode change occurs while a
+ buffer is mapped, the implementation must still allow the
+ application to access mapped buffer memory, even though the contents
+ of the mapped buffer may not be reflected in the changed window
+ after unmapping.
+
+ Note: There's no convenient way to indicate mode changes while
+ a surface is unlocked, despite that being useful to tell apps they
+ have to redraw. The problem is that we don't have an event system,
+ and the power management functionality is overkill since the only
+ resources which are likely to be damaged by a mode change are
+ visible window contents. Fortunately, this problem is beyond the
+ scope of this extension.
+
+ 6) Does locking a surface imply mapping its buffers?
+
+ RESOLVED: No. Locking simply places the surface in that state and
+ prevents it from being made current / swapped / etc. Buffers are
+ mapped only when their pointers or pitch are queried using
+ eglQuerySurface.
+
+ An interesting side effect of this resolution is that calling
+ eglLockSurfaceKHR immediately followed by eglUnlockSurfaceKHR DOES
+ NOT CHANGE THE CONTENTS OF BUFFERS, since none of them were mapped.
+ Likewise locking a surface, querying a buffer pointer or pitch, and
+ then unlocking it without changing the mapped buffer contents causes
+ the surface contents of the mapper buffer(s) to become undefined.
+
+ At the Atlanta F2F, there was a suggestion that eglLockSurfaceKHR
+ should immediately map the color buffer and return a pointer to it,
+ on the basis that this would make it harder for applications to
+ mistakenly use an old buffer pointer from a previous mapping cycle.
+ At the same time, people working on more powerful GPUs wanted the
+ lock operation to be lightweight. These are not consistent goals and
+ we have thus far chosen to separate the lightweight locking, and
+ more expensive mapping operations.
+
+ 7) Can buffer contents be preserved in mapping?
+
+ RESOLVED: Yes. The default behavior is to discard / leave undefined
+ the mapped buffer contents, but the EGL_MAP_PRESERVE_PIXELS_KHR flag
+ may be specified to eglLockSurfaceKHR.
+
+ 8) Should usage hints be provided during mapping?
+
+ RESOLVED: Yes, they may be provided in the EGL_LOCK_USAGE_HINT_KHR
+ bitmask attribute to eglLockSurfaceKHR. Implementations are required
+ to behave correctly no matter the value of the flag vs. the
+ operations actually performed, so the hint may be ignored.
+
+ 9) Should we be able to lock subrectangles of a surface?
+
+ RESOLVED: No. However, the attribute list parameter of
+ eglLockSurfaceKHR allows a layered extension to implement this
+ behavior by specifying an origin and size to map within the buffer.
+
+10) Should the BITMAP_PIXEL_<component>_OFFSET attributes belong to the
+ surface, or the config?
+
+ RESOLVED: Part of the surface. Configs supporting a specific format
+ are matched with config attribute EGL_MATCH_FORMAT_KHR, which
+ supports specific bit-exact formats such as
+ EGL_FORMAT_565_EXACT_KHR.
+
+11) Can the pixel size in a mapped buffer be derived from the
+ EGL_BUFFER_SIZE attribute of the config used to create it?
+
+ RESOLVED: Yes. In principle, hardware using padding bytes in its
+ framebuffer storage could be a problem, and a separate
+ BITMAP_PIXEL_SIZE surface attribute would be needed. However, we
+ don't think implementations are likely to waste graphics memory and
+ bandwidth in this fashion.
+
+12) How are color component locations within a pixel described?
+
+ RESOLVED: Each R, G, B, and A component has a queryable bit offset
+ within an integer. The size of the integer depends on the total size
+ of the pixel; for the 565 formats, the pixel is a 16-bit integer.
+ For the 8888 formats, the pixel is a 32-bit integer.
+
+ We cannot describe component locations with byte locations, since
+ the 565 formats have components straddling byte boundaries. However,
+ this means that offsets for the RGBA8888_EXACT format are different
+ between little- and big-endian CPUs, since the desired format is B,
+ G, R, A components laid out as bytes in increasing memory order.
+
+13) Can mapped buffer contents be affected by other EGL operations?
+
+ RESOLVED: No. A locked surface only allows two operations:
+ unlocking, and mapping. No other EGL operations can take place while
+ the surface is locked (if this were not the case, then
+ eglSwapBuffers might destroy the contents of a mapped buffer).
+
+ It is possible that operations outside the scope of EGL could affect
+ a mapped color buffer. For example, if a surface's color buffer were
+ made up of an EGLImage, one of the EGL client APIs could draw to
+ that image while it was mapped. Responsibility for avoiding this
+ situation is in the hands of the client.
+
+14) Can EGL_MATCH_FORMAT_KHR be queried for a config?
+
+ RESOLVED: Yes. Unlockable configs return EGL_NONE for this
+ attribute.
+
+ For a config whose format matches one of the EGL_FORMAT_*_EXACT_KHR
+ definitions, that value is returned.
+
+ For a config whose format does not match one of the
+ EGL_FORMAT_*_EXACT_KHR definitions, but it does match one of the
+ inexact definitions, we do not want to specify that it returns that
+ value, since that precludes it returning an exact format if one were
+ to be defined in a future extension, or a future version of this
+ extension.
+
+ Therefore, for a config whose format does not match a defined
+ "exact" format, the attribute returns a value other than the defined
+ "exact" formats and EGL_NONE and EGL_DONT_CARE.
+
+15) Is a goal of this extension to support "mixed-mode" rendering (both
+ software and EGL client API rendering to the same surface)?
+
+ RESOLVED: No. An implementation *can* choose to export configs
+ supporting creation of lockable surfaces which also support
+ rendering by OpenGL ES, OpenVG, or other client APIs (when the
+ surface is not locked). But there is nothing in the extension
+ requiring this, and the motivation for the extension is simply to
+ support software rendering.
+
+16) Can mapping a locked surface fail?
+
+ RESOLVED: Yes, if memory can't be allocated in the client. This is
+ indicated by queries of EGL_BITMAP_POINTER_KHR and
+ EGL_BITMAP_PITCH_KHR failing and generating an EGL_BAD_ACCESS error.
+
+17) How does the application specify that it would like the pixels in the
+ mapped buffer to be preserved from the state at the last unlock?
+ [Bug 4410]
+
+ There are actually two items that need to be configurable:
+
+ a. Whether eglSwapBuffers preserves the color buffer.
+
+ b. Whether eglLockSurfaceKHR puts the color buffer pixels into the
+ locked buffer.
+
+ An implementation may use two different render paths depending on whether
+ the application is full frame rendering or incrementally rendering, where
+ the full frame rendering path may involve less copying than the
+ incrementally rendering path. The implementation needs to know in advance
+ which path to use; finding out from EGL_MAP_PRESERVE_PIXELS_KHR on
+ eglLockSurfaceKHR whether that lock should have the color buffer pixels
+ from the last eglUnlockSurfaceKHR in the last frame is too late.
+
+ This need to know in advance only applies to (a).
+
+ Note that the original EGL_KHR_lock_surface extension failed to state
+ that EGL_SWAP_BEHAVIOR needed to be set to EGL_BUFFER_PRESERVED for
+ incremental rendering.
+
+ RESOLVED: EGL_MAP_PRESERVE_PIXELS_KHR continues to control (b), as in the
+ original EGL_KHR_lock_surface extension. EGL_SWAP_BEHAVIOR continues
+ to control (a), as in unextended EGL. It is possible to set
+ EGL_SWAP_BEHAVIOR in eglCreateWindowSurface, even on EGL versions
+ before 1.4, and even if the config does not have
+ EGL_SWAP_BEHAVIOR_PRESERVED_BIT set in EGL_SURFACE_TYPE.
+
+ For a lockable window surface, EGL_SWAP_BEHAVIOR needs to default to
+ EGL_BUFFER_PRESERVED, and having EGL_SWAP_BEHAVIOR set to
+ EGL_BUFFER_PRESERVED needs to override EGL_MAP_PRESERVE_PIXELS_KHR. This is for
+ compatibility with version 1 of this extension, which had EGL_SWAP_BEHAVIOR
+ as the sole means of controlling (a) and (b).
+
+ This resolution is backward compatible with the original
+ EGL_KHR_lock_surface extension as it now defaults to preserving pixels,
+ and thus has that default for an old application that does not know about
+ setting EGL_SWAP_BEHAVIOR=EGL_BUFFER_DESTROYED to optimize full frame
+ rendering. The downside is a possible performance reduction of an old
+ application that does not want pixels preserved, until it is appropriately
+ modified and recompiled.
+
+18) When can a lockable surface change size? [Bug 4522]
+
+ RESOLVED: The surface cannot change size while it is locked. For any
+ window size change during that time, EGL defers the corresponding
+ surface size change until some time after the unlock.
+ The implication is that an application must get the surface size
+ _after_locking, otherwise the size may have changed in between the
+ attribute query and the lock.
+
+ As part of this change, using eglQuerySurface on any surface attribute
+ while the surface is locked has been allowed.
+
+19) Should we provide for more than one pixel per byte, or a format with
+ a "hole", or a byte-swapped 16-bit format? [Bug 4513]
+
+ For the use case where the application uses EGL_FORMAT_* to
+ determine the pixel format, this is not an issue. For the use case
+ where the application is written to cope with any format by reading
+ the EGL_BITMAP_* attributes and adjusting its rendering at runtime,
+ this is an issue.
+
+ RESOLVED: We add a new attribute EGL_BITMAP_PIXEL_SIZE_KHR which gives
+ the pixel size in bits.
+ The use of this attribute assumes that multiple pixels packed into
+ a byte are arranged least significant on the left, and that pixels
+ are arranged leftmost first in memory. If either of these assumptions
+ is false, then EGL_BITMAP_PIXEL_SIZE_KHR is EGL_UNKNOWN to indicate
+ that an application attempting to use these attributes to adjust its
+ rendering code will not work.
+
+ We also define that any of the EGL_BITMAP_PIXEL_x_OFFSET_KHR attributes
+ have a value of EGL_UNKNOWN if the corresponding color component is not
+ a contiguous bit range.
+
+20) EGL states that surface must be bound to the thread's current context
+ when posting, but there is no current context when using lock surface.
+ eglSwapInterval is also related to the context. [Bug 5923]
+
+ RESOLVED: The posting restrictions are relaxed, so it is allowed to
+ post for a surface not bound to any client API context. In this case
+ no eglSwapInterval setting affects an eglSwapBuffers. This relaxation
+ only applies to a lockable surface so that this extension continues
+ to be implementable as a middleware layer on top of a "real" EGL.
+ The relaxation applies to a surface that is both lockable and client
+ API renderable; the implicit flush in a post only occurs when the surface
+ is bound to a current API context. Posting a surface bound to a different
+ thread's current API context is still disallowed.
+
+21) Why has this extension been obsoleted and replaced by
+ EGL_KHR_lock_surface3?
+
+ RESOLVED: Starting with the December 4, 2013 release of EGL 1.4, EGLint
+ is defined to be the same size as the native platform "int" type. Handle
+ and pointer attribute values *cannot* be represented in attribute lists
+ on platforms where sizeof(handle/pointer) > sizeof(int). Existing
+ extensions which assume this functionality are being replaced with new
+ extensions specifying new entry points to work around this issue. See
+ the latest EGL 1.4 Specification for more details.
+
+
+Revision History
+
+ Version 3, 2013/12/04 - Add issue 21 explaining that the bitmap pointer
+ cannot be safely queried using this extension on 64-bit platforms,
+ and suggesting EGL_KHR_lock_surface3 instead. Change formal
+ parameter names from 'display' to 'dpy' to match other EGL APIs.
+ Version 2, 2010/03/10
+ Allocated extension number 16.
+ [Bug 6089] Clarified that it is the back buffer of a back-buffered
+ surface that is mapped.
+ [Bug 4410] Issue 17: Reinstate EGL_MAP_PRESERVE_PIXELS_KHR attribute on
+ eglLockSurfaceKHR as the means of configuring whether a locked
+ buffer contains pixel data from the color buffer, as in
+ EGL_KHR_lock_surface, but, for a lockable window surface,
+ make EGL_SWAP_BEHAVIOR=EGL_BUFFER_PRESERVED override the effect
+ of that attribute. Tidy wording so that behavior, and that the
+ default of EGL_SWAP_BEHAVIOR must be EGL_BUFFER_PRESERVED, only
+ applies to lockable window surfaces, not lockable pbuffer or
+ pixmap surfaces.
+ [Bug 5923] Issue 20: A config that is lockable and renderable by
+ an EGL client API is now allowed. Posting restrictions are relaxed
+ to allow posting for a lockable surface not bound to any client
+ API context.
+ [Bug 5143] Fixed typos EGL_SURFACE_TYPE_KHR. Added summary of
+ changes over EGL_KHR_lock_surface.
+ Version 1, 2010/01/19
+ [Bug 4410] Issue 17: Change to use EGL_SWAP_BEHAVIOR as the
+ primary means of determining whether the application wants pixels
+ preserved between lock/unlock cycles.
+ Allowed setting of EGL_SWAP_BEHAVIOR in
+ eglCreateWindowSurface for a lockable surface. Made the
+ default EGL_BUFFER_PRESERVED on a lockable surface to maintain
+ compatibility with the original lock surface extension.
+ [Bug 3192] Wording clarification to avoid accidentally suggesting
+ that almost all surface attributes are invariant.
+ [Bug 4518] Issue 14: Clarify the returned value when
+ EGL_MATCH_FORMAT_KHR is queried.
+ [Bug 4522] Issue 18: Clarify that a locked surface cannot change
+ size.
+ [Bug 4513] Issue 19: Added EGL_BITMAP_PIXEL_SIZE_KHR.
+ [Bug 5923] Issue 20: Must be no current context when posting
+ a lockable surface. In that case any eglSwapInterval setting
+ is ignored. Disallowed a config that is lockable and renderable
+ by an EGL client API.
+
+Revision History of original EGL_KHR_lock_surface extension
+
+ Version 18, 2010/03/23 - Added introductory remark referring to the
+ EGL_KHR_lock_surface2 extension.
+ Version 17, 2008/10/08 - Updated status (approved as part of
+ OpenKODE 1.0).
+ Version 16, 2008/01/24 - Add issue 16 noting that mapping can fail,
+ and a corresponding new error condition for eglQuerySurface.
+ Clean up the issues list.
+ Version 15, 2008/01/09 - Add issue 15 noting that supporting
+ mixed-mode rendering is not a goal or requirement of the
+ extension.
+ Version 14, 2007/11/07 - change ARGB_8888_EXACT back to
+ RGBA_8888_EXACT, since the offsets are now dependent on the
+ endianness of the CPU. Add issue 12 describing this, and clarify
+ that offsets are within a 16- or 32-bit integer depending on the
+ format. Added issue 13 clarifying that locked buffer contents
+ are not affected by eglSwapBuffers, because eglSwapBuffers
+ cannot be issued on a mapped surface. Allow querying
+ EGL_MATCH_FORMAT_KHR for a config, and added related issue 14.
+ Version 13, 2007/05/10 - change RGBA_8888_EXACT to ARGB_8888_EXACT
+ to match hardware layout.
+ Version 12, 2007/04/06 - clarify that when EGL_MATCH_FORMAT_KHR is
+ EGL_DONT_CARE, it does not affect component size of selected
+ configs.
+ Version 11, 2007/04/05 - add missing KHR suffix to some tokens.
+ Version 10, 2007/04/05 - assign enumerant values. Add OpenKODE 1.0
+ Provisional disclaimer.
+ Version 9, 2007/03/26 - add format tokens to "New Tokens"
+ section. Correct description of RGBA format tokens.
+ Version 8, 2007/03/26 - add issue 11 noting theoretical possibility
+ of EGL_BUFFER_SIZE not directly corresponding to the mapped
+ pixel size. Add EGL_MATCH_FORMAT_KHR attribute to
+ eglChooseConfig, and 565 / 8888 formats for it.
+ Version 7, 2007/03/25 - note in issue 5 that access to a mapped
+ buffer must continue to work even after a mode change. Add KHR
+ suffix to new functions and tokens. Remove BITMAP_PIXEL_<x>_BITS
+ and BITMAP_PIXEL_SIZE tokens, which duplicate information in the
+ EGLConfig. Add issue 10 asking whether bitmap pixel offset
+ attributes belong to the config, or to the surface.
+ Version 6, 2007/02/26 - allow EGL_CLIENT_APIS string to be empty in
+ implementations supporting only this extension.
+ Version 5, 2007/02/05 - update contributor list. Changed bit offset
+ queries to return LSB offset, rather than MSB offset.
+ Version 4, 2007/02/02 - correct extension name. Change
+ name of FAST_UNLOCK_BIT_KHR to OPTIMAL_FORMAT_BIT_KHR.
+ Replace buffer_mask parameter of eglLockSurfaceKHR with an
+ attribute list. Add the EGL_MAP_PRESERVE_PIXELS_KHR and
+ EGL_LOCK_USAGE_HINT_KHR attributes per request from Gary. Add issues
+ 7, 8, and 9 describing these attributes and how to support
+ locking subrects in a layered extension, by extending the
+ attribute list.
+ Version 3, 2007/02/01 - the implementation once again controls the
+ mapped buffer memory. There is no longer a separate bitmap
+ surface type; any type surface may potentially be mapped, using
+ lock/unlock semantics.
+ Version 2, 2006/12/22 - simplify by only supporting drawing from
+ client memory to EGL surface color buffers. Specify use of
+ OpenGL DrawPixels terminology. Change name of the extension to
+ EGL_KHR_draw_pixels, since there is no longer any "bitmap
+ surface" involved.
+ Version 1, 2006/12/14 - write up as formal spec language for
+ external review.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface3.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface3.txt
new file mode 100644
index 0000000..f85935c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_lock_surface3.txt
@@ -0,0 +1,679 @@
+Name
+
+ KHR_lock_surface3
+
+Name Strings
+
+ EGL_KHR_lock_surface3
+
+Contributors
+
+ Mark Callow
+ Gary King
+ Jon Leech
+ Marko Lukat
+ Alon Or-bach
+ Tim Renouf
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on December 4, 2013.
+
+Version
+
+ Version 4, 2014/09/17
+
+Number
+
+ EGL Extension #64
+
+Dependencies
+
+ EGL 1.4 is required.
+
+ This extension is based on the EGL_KHR_lock_surface2 extension and
+ almost all language is copied from that extension. However, it is
+ standalone extension. The specification language has been re-based
+ against the EGL 1.4 Specification.
+
+ Khronos recommends obsoleting and replacing implementations of
+ EGL_KHR_lock_surface2 and EGL_KHR_lock_surface with this extension as
+ soon as possible.
+
+Overview
+
+ This extension allows mapping color buffers of EGL surfaces into the
+ client address space. This is useful primarily for software
+ rendering on low-end devices which do not support EGL client
+ rendering APIs, although it may be implemented efficiently on more
+ capable devices as well.
+
+ This extension is functionally identical to EGL_KHR_lock_surface2, but
+ is intended to replace that extension. It defines a new EGL type,
+ EGLAttribKHR, which is an integer type guaranteed to be large enough to
+ hold a pointer. A new surface query, eglQuerySurface64KHR, is defined to
+ query surface attributes which may not fit in than EGLint, such as a
+ mapped surface pointer.
+
+ The changes over EGL_KHR_lock_surface2 include:
+
+ * EGL_KHR_lock_surface3 defines the type EGLAttribKHR and the
+ command eglQuerySurface64KHR.
+ * eglQuerySurface64KHR must be used to query the
+ EGL_BITMAP_POINTER_KHR property of surfaces.
+
+New Types
+
+ /*
+ * EGLAttribKHR is a integer type used to pass arrays of attribute
+ * name/value pairs which may include pointer and handle attribute
+ * values.
+ */
+ #include <khrplatform.h>
+ typedef intptr_t EGLAttribKHR;
+
+New Procedures and Functions
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy, EGLSurface surface,
+ const EGLint *attrib_list);
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+ EGLBoolean eglQuerySurface64KHR(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ EGLAttribKHR *value);
+
+New Tokens
+
+ Returned in the EGL_SURFACE_TYPE bitmask attribute of EGLConfigs:
+
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:
+
+ EGL_MATCH_FORMAT_KHR 0x3043
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig, and defined as possible values of that attribute
+ when querying it:
+
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+
+ Accepted as attribute values for the EGL_MATCH_FORMAT_KHR attribute
+ of eglChooseConfig:
+
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+
+ Accepted as attribute names in the <attrib_list> argument of
+ eglLockSurfaceKHR:
+
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+
+ Accepted as bit values in the EGL_LOCK_USAGE_HINT_KHR bitmask attribute
+ of eglLockSurfaceKHR:
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+
+ Accepted by the <attribute> parameter of eglQuerySurface and
+ eglQuerySurface64KHR:
+
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+ Accepted by the <attribute> parameter of eglQuerySurface64KHR:
+ EGL_BITMAP_POINTER_KHR 0x30C6
+
+ Returns in the *<value> parameter of eglQuerySurface when
+ <attribute> is EGL_BITMAP_ORIGIN_KHR:
+
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+
+Additions to Chapter 2 of the EGL 1.4 Specification (EGL Operation)
+
+ Add to the end of section 2.2.2:
+
+ Finally, some surfaces may be <locked>, which allows the
+ implementation to map buffers of that surface into client memory
+ for use by software renderers(fn). Locked surfaces cannot be
+ used for any other purpose. When a locked surface is <unlocked>,
+ any changes to the mapped buffer(s) are reflected in the actual
+ graphics or system memory containing the surface.
+
+ [fn: on implementations not supporting mapping graphics
+ memory, or which do not wish to take the stability and
+ security risks that entail, mapping may be done using
+ copy-out and copy-in behavior.]
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add to the description of the EGL_BAD_ACCESS error in section 3.1:
+
+ "... (for example, a context is bound in another thread, or a
+ surface is locked). Any command accessing ..."
+
+ Add to table 3.2 ("Types of surfaces supported by an EGLConfig")
+
+ EGL Token Name Description
+ -------------------- ------------------------------------
+ EGL_LOCK_SURFACE_BIT_KHR EGLConfig allows locking surfaces
+ EGL_OPTIMAL_FORMAT_BIT_KHR This format is considered optimal
+ (preferred) when locking / mapping /
+ unlocking is being done.
+
+ Change the first paragraph under "Other EGLConfig Attribute
+ Descriptions" on p. 16:
+
+ "EGL_SURFACE_TYPE is a mask indicating both the surface types
+ that can be created by the corresponding EGLConfig (the config
+ is said to <support> those surface types), and the optional
+ behaviors such surfaces may allow. The valid bit settings are
+ shown in Table 3.2."
+
+ Add a new paragraph following the second paragraph of the same
+ section:
+
+ "If EGL_LOCK_SURFACE_BIT_KHR is set in EGL_SURFACE_TYPE, then
+ a surface created from the EGLConfig may be locked, mapped into
+ client memory, and unlocked. Locking is described in section
+ 3.5.5ls. If EGL_OPTIMAL_FORMAT_BIT_KHR is set in
+ EGL_SURFACE_TYPE, then the surface is considered optimal (by
+ the implementation) from a performance standpoint when buffer
+ mapping is being done."
+
+ Replace the second paragraph of section 3.3 "EGL Versioning":
+
+ "The EGL_CLIENT_APIS string describes which client rendering APIs are
+ supported. It is zero-terminated and contains a space-separated list
+ of API names, which must include at least one of ``OpenGL'',
+ ``OpenGL_ES'', or OpenGL ES. If no client APIs are supported, then
+ the empty string is returned."
+
+ Insert a new paragraph and table in section 3.4.1.1 "Querying
+ Configurations", following the description of
+ EGL_MATCH_NATIVE_PIXMAP on page 24:
+
+ "If EGL_MATCH_FORMAT_KHR is specified in <attrib_list>, it must
+ be followed by one of the attribute values EGL_DONT_CARE,
+ EGL_NONE, or one of the format tokens in table
+ [locksurf.format].
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_NONE, only configs
+ which cannot be locked or mapped will match. Such configs must
+ not have the EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ When EGL_MATCH_FORMAT_KHR has the value EGL_DONT_CARE, it is
+ ignored.
+
+ When EGL_MATCH_FORMAT_KHR has one of the values in table
+ [locksurf.format], only EGLConfigs describing surfaces whose
+ color buffers have the specified format, when mapped with
+ eglLockSurface, will match this attribute. In this case, the
+ EGL_<component>_SIZE attributes of resulting configs must agree
+ with the specific component sizes specified by the format."
+
+ Specific Format Name Description
+ -------------------- -----------
+ EGL_FORMAT_RGB_565_EXACT_KHR RGB565 fields in order from MSB to LSB within a 16-bit integer
+ EGL_FORMAT_RGB_565_KHR RGB565 fields in implementation-chosen order within a 16-bit integer
+ EGL_FORMAT_RGBA_8888_EXACT_KHR RGBA8888 fields in B, G, R, A byte order in memory
+ EGL_FORMAT_RGBA_8888_KHR RGBA8888 fields in implementation-chosen order within a 32-bit integer
+ ------------------------------------------------------------------------------------------------------
+ Table [locksurf.format]: Specific formats for mapped pixels.
+
+ Add to table 3.4 ("Default values and match critera for EGLConfig
+ attributes") on page 25:
+
+ Attribute Default Selection Sort Sort
+ Criteria Order Priority
+ -------------------- ------------- --------- ----- --------
+ EGL_MATCH_FORMAT_KHR EGL_DONT_CARE Exact None -
+
+ Add EGL_MATCH_FORMAT_KHR to the last paragraph in section 3.4.1 on
+ p. 26, describing attributes not used for sorting EGLConfigs.
+
+ Add a new paragraph to the end of section 3.4.3 "Querying Configuration
+ Attributes":
+
+ "Querying the EGL_MATCH_FORMAT_KHR attribute results in EGL_NONE
+ for an EGLConfig that is not lockable, one of the "exact" formats
+ (EGL_FORMAT_RGB_565_EXACT_KHR, EGL_FORMAT_RGBA_8888_EXACT_KHR)
+ if the color buffer matches that format when mapped with
+ eglLockSurface, or for any other format a value that is not
+ EGL_NONE or EGL_DONT_CARE but is otherwise undefined. In particular,
+ the color buffer format matching one of the "inexact" formats
+ does not guarantee that that EGL_FORMAT_* value is returned."
+
+ In section 3.5.1 "Creating On-Screen Rendering Surfaces", add to the
+ second paragraph on p. 28 listing attributes that can be set in
+ attrib_list:
+
+ "<attrib_list> specifies a list of attributes ... and
+ EGL_SWAP_BEHAVIOR."
+
+ and add preceding the paragraph starting "EGL_VG_COLORSPACE specifies
+ ..." on p. 28:
+
+ "EGL_SWAP_BEHAVIOR specifies the initial value of the
+ EGL_SWAP_BEHAVIOR surface attribute (section 3.5.6), and is thus
+ either EGL_BUFFER_PRESERVED or EGL_BUFFER_DESTROYED. This setting
+ of EGL_SWAP_BEHAVIOR at surface creation time is supported only
+ for a lockable surface, i.e. where the EGLConfig has
+ EGL_LOCK_SURFACE_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ "For such a lockable surface, whether it is possible to change
+ the EGL_SWAP_BEHAVIOR attribute after surface creation is
+ determined by EGL_SWAP_BEHAVIOR_PRESERVED_BIT in the
+ EGL_SURFACE_TYPE EGLConfig attribute."
+
+ Add a new section following the current section 3.5.5:
+
+ "3.5.5ls Locking and Mapping Rendering Surfaces
+
+ A rendering surface may be <locked> by calling
+
+ EGLBoolean eglLockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *attrib_list);
+
+ While a surface is locked, only two operations can be performed
+ on it. First, a surface attribute may be queried using
+ the query commands in section 3.5.6. This includes the case of
+ querying EGL_BITMAP_POINTER_KHR, which causes the surface to be
+ <mapped> (if not already mapped) and gives a pointer into client
+ memory corresponding to the memory of the mapped buffer. Second,
+ the surface may be unlocked. Any attempts to use a locked surface
+ in other EGL APIs will fail and generate an EGL_BAD_ACCESS error.
+
+ While a surface is locked, its dimensions (the values of the EGL_WIDTH
+ and EGL_HEIGHT surface attributes) do not change. They may change
+ at any other time, therefore an application must query these
+ attributes <after> the call to eglLockSurfaceKHR to ensure that it has
+ the correct size of the mapped buffer.
+
+ <attrib_list> specifies additional parameters affecting the locking
+ operation. The list has the same structure as described for
+ eglChooseConfig. Attributes that may be defined are shown in table
+ [locksurf.attr], together with their default values if not specified
+ in <attrib_list>, and possible values which may be specified for
+ them in <attrib_list>.
+
+ Attribute Name Type Default Value Possible Values
+ ----------------------- ------- ------------- -------------------------
+ EGL_MAP_PRESERVE_PIXELS_KHR boolean EGL_FALSE EGL_TRUE / EGL_FALSE
+ EGL_LOCK_USAGE_HINT_KHR bitmask EGL_READ_SURFACE_BIT_KHR | Any combination of
+ EGL_WRITE_SURFACE_BIT_KHR EGL_READ_SURFACE_BIT_KHR
+ and EGL_WRITE_SURFACE_BIT_KHR
+ --------------------------------------------------------------
+ Table [locksurf.attr]: eglLockSurfaceKHR attribute names,
+ default values, and possible values.
+
+ On failure, the surface is unaffected and eglLockSurfaceKHR
+ returns EGL_FALSE. An EGL_BAD_ACCESS error is generated if any
+ of these condition, are true:
+
+ * <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR.
+ * <surface> is already locked.
+ * Any client API is current to <surface>.
+
+ An EGL_BAD_ATTRIBUTE error is generated if an attribute or
+ attribute value not described in table [locksurf.attr] is
+ specified.
+
+ Mapping Buffers of a Locked Surface
+ -----------------------------------
+
+ The color buffer of a locked surface can be <mapped> by calling
+ eglQuerySurface64KHR (see section 3.5.6) with <attribute>
+ EGL_BITMAP_POINTER_KHR(fn). The query returns a pointer to a
+ buffer in client memory corresponding to the color buffer of
+ <surface>. In the case of a back-buffered surface, color buffer
+ refers to the back buffer.
+
+ [fn: "mapped" only means that the pointer returned is
+ intended to *correspond* to graphics memory. Implementation
+ are not required to return an actual pointer into graphics
+ memory, and often will not.]
+
+
+ The contents of the mapped buffer are initially undefined(fn)
+ unless either the EGL_MAP_PRESERVE_PIXELS_KHR attribute of
+ eglLockSurfaceKHR is set to EGL_TRUE, or (for a window surface)
+ the EGL_SWAP_BEHAVIOR surface attribute is set to
+ EGL_BUFFER_PRESERVE, in which case the contents
+ of the buffer are taken from the contents of <surface>'s color
+ buffer. The default value of EGL_MAP_PRESERVE_PIXELS_KHR is
+ EGL_FALSE.
+
+ [fn: In order to avoid pipeline stalls and readback delays on
+ accelerated implementations, we do not mandate that the
+ current contents of a color buffer appear when it's mapped
+ to client memory, unless the EGL_MAP_PRESERVE_PIXELS_KHR
+ flag is set or (for a window surface) EGL_SWAP_BEHAVIOR is
+ set to EGL_BUFFER_PRESERVE. Applications using mapped
+ buffers which are not
+ preserved must write to every pixel of the buffer before
+ unlocking the surface. This constraint is considered
+ acceptable for the intended usage scenario (full-frame
+ software renderers). Such an application may lock-render-unlock
+ multiple times per frame (i.e. per eglSwapBuffers) by setting
+ EGL_MAP_PRESERVE_PIXELS_KHR to EGL_TRUE for the second and
+ subsequent locks.
+
+ Note that EGL_SWAP_BEHAVIOR also controls whether the color
+ buffer contents are preserved over a call to eglSwapBuffers.]
+
+ The EGL_LOCK_USAGE_HINT_KHR attribute of eglLockSurfaceKHR is a
+ bitmask describing the intended use of the mapped buffer. If the
+ mask contains EGL_READ_SURFACE_BIT_KHR, data will be read from
+ the mapped buffer. If the mask contains
+ EGL_WRITE_SURFACE_BIT_KHR, data will be written to the mapped
+ buffer. Implementations must support both reading and writing to
+ a mapped buffer regardless of the value of
+ EGL_LOCK_USAGE_HINT_KHR, but performance may be better if the
+ hint is consistent with the actual usage of the buffer. The
+ default value of EGL_LOCK_USAGE_HINT_KHR hints that both reads
+ and writes to the mapped buffer will be done.
+
+ Other attributes of the mapped buffer describe the format of
+ pixels it contains, including its pitch (EGL_BITMAP_PITCH_KHR),
+ origin (EGL_BITMAP_ORIGIN_KHR), and the bit location of each color
+ component within a pixel (EGL_BITMAP_PIXEL_x_OFFSET_KHR). These
+ attributes may be queried using eglQuerySurface, and are described
+ in more detail in section 3.5.6.
+
+ The EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR attributes
+ of a locked surface may change following successive calls to
+ eglLockSurfaceKHR(fn), so they must be queried each time a
+ buffer is mapped. Other attributes of a mapped buffer (listed in
+ the paragraph above) are invariant and need be queried only once
+ following surface creation.
+
+ [fn: The pointer and pitch of a mapped buffer may change due
+ to display mode changes, for example.]
+
+ Mapping will not suceed if client memory to map the surface into
+ cannot be allocated. In this case, calling eglQuerySurface64KHR
+ with <attribute> EGL_BITMAP_POINTER_KHR will fail and generate an
+ EGL error.
+
+ Unlocking Surfaces
+ ------------------
+
+ A rendering surface may be <unlocked> by calling
+
+ EGLBoolean eglUnlockSurfaceKHR(EGLDisplay dpy,
+ EGLSurface surface);
+
+ Any mapped buffers of <surface> become unmapped following
+ eglUnlockSurfaceKHR. Any changes made to mapped buffers of
+ <surface> which it was locked are reflected in the surface after
+ unlocking(fn).
+
+ [fn: This language enables implementations to either map
+ video memory, or copy from a separate buffer in client
+ memory.]
+
+ If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_OPTIMAL_FORMAT_BIT_KHR,
+ then the surface is considered optimal (by the implementation)
+ from a performance standpoint when buffer mapping is being
+ done(fn).
+
+ [fn: This often means that the format of all mapped buffers
+ corresponds directly to the format of those buffers in
+ <surface>, so no format conversions are required during
+ unmapping. This results in a high-performance software
+ rendering path. But "optimal format" is really just a hint
+ from EGL that this config is preferred, whatever the actual
+ reason.]
+
+ On failure, eglUnlockSurfaceKHR returns EGL_FALSE. An
+ EGL_BAD_ACCESS error is generated if any of these conditions are
+ true:
+
+ * <surface> is already unlocked.
+ * A display mode change occurred while the surface was locked,
+ and the implementation was unable to reflect mapped buffer
+ state(fn). In this case, <surface> will still be unlocked.
+ However, the contents of the previously mapped buffers of
+ <surface> become undefined, rather than reflecting changes
+ made in the mapped buffers in client memory.
+
+ [fn: Usually this may only occur with window surfaces which
+ have been mapped. EGL does not have an event mechanism to
+ indicate display mode changes. If such a mechanism exists
+ (using native platform events or the OpenKODE event system),
+ applications should respond to mode changes by regenerating
+ all visible window content, including re-doing any software
+ rendering overlapping the mode change.]"
+
+ Modify table 3.5 ("Queryable surface attributes and types")
+ to add a new column "64-bit". Add new entries to table 3.5:
+
+ Attribute Type Description 64-bit
+ --------- ------- -------------------------- ---------
+ EGL_BITMAP_POINTER_KHR pointer Address of a mapped color [checked]
+ buffer (MCB).
+ EGL_BITMAP_PITCH_KHR integer Number of bytes between -
+ the start of adjacent rows
+ in an MCB.
+ EGL_BITMAP_ORIGIN_KHR enum Bitmap origin & direction -
+ EGL_BITMAP_PIXEL_x_- integer Bit location of each color -
+ OFFSET_KHR buffer component within a
+ pixel in an MCB.
+ EGL_BITMAP_PIXEL_- integer Bits per pixel -
+ SIZE_KHR
+
+ All previously existing entries in table 3.5 are given a "-" entry in
+ the new "64-bit" column.
+
+ In the description of eglSurfaceAttrib properties that can be set in
+ section 3.5.6, add to the description of EGL_SWAP_BEHAVIOR:
+
+ "It <attribute> is EGL_SWAP_BEHAVIOR ... The value of
+ EGL_SWAP_BEHAVIOR also affects the semantics of eglLockSurfaceKHR
+ for a lockable window surface. See section 3.5.6."
+
+ And modify the paragraph descirbing the initial value of
+ EGL_SWAP_BEHAVIOR:
+
+ "The initial value of EGL_SWAP_BEHAVIOR is chosen by the
+ implementation, except for a lockable window surface (i.e. where the
+ EGLConfig has both EGL_LOCK_SURFACE_BIT_KHR and EGL_WINDOW_BIT set in
+ EGL_SURFACE_TYPE). For a lockable window surface the default is
+ EGL_BUFFER_PRESERVED, but it may be overridden by specifying
+ EGL_SWAP_BEHAVIOR to eglCreateWindowSurface."
+
+ Add the prototype of the new surface query function immediately
+ following the prototype for eglQuerySurface on p. 37:
+
+ EGLBoolean eglQuerySurface64KHR(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ EGLAttribKHR *value)
+
+ Modify the following paragraph:
+
+ "eglQuerySurface and eglQuerySurface64KHR return in <value> the
+ value of <attribute> for <surface>. <attribute> must be set to one
+ of the attributes in table 3.5. Attributes whose ``64-bit'' entry
+ is checked in table 3.5 may only be queried with
+ eglQuerySurface64KHR."
+
+ Add to the description of eglQuerySurface properties on p. 38:
+
+ "Properties of a bitmap surface which may be queried include:
+ * EGL_BITMAP_POINTER_KHR, which maps the color buffer of a
+ locked surface and returns the address in client memory of
+ the mapped buffer.
+ * EGL_BITMAP_PITCH_KHR, which returns the number of bytes
+ between successive rows of a mapped buffer.
+ * EGL_BITMAP_ORIGIN_KHR, which describes the way in which a
+ mapped color buffer is displayed on the screen. Possible
+ values are either EGL_LOWER_LEFT_KHR or EGL_UPPER_LEFT_KHR,
+ indicating that the first pixel of the mapped buffer
+ corresponds to the lower left or upper left of a visible
+ window, respectively.
+ * EGL_BITMAP_PIXEL_<x>_OFFSET_KHR, which describes the bit
+ location of the least significant bit of each color
+ component of a pixel within a mapped buffer. <x> is one of
+ RED, GREEN, BLUE, ALPHA, or LUMINANCE.
+
+ The offset for a color component should be treated as the
+ number of bits to left shift the component value to place it
+ within a n-bit
+ integer containing the pixel, where n is the number of bits
+ per pixel. If a color
+ component does not exist in the mapped buffer, then the bit
+ offset of that component is zero. If a color component
+ does exist but not in a single contiguous range of bits,
+ then the value of the attribute is EGL_UNKNOWN.
+
+ * EGL_BITMAP_PIXEL_SIZE_KHR, which returns the number of bits
+ per pixel, assumed to be least significant leftmost if there
+ are multiple pixels per byte. The attribute takes the value
+ EGL_UNKNOWN if this assumption is not true, or if pixels are not
+ laid out left to right in memory (for example pairs of 16-bit
+ pixels are swapped in memory).
+
+ In addition to these attributes, the number of bits for each
+ color component of a pixel within a mapped buffer is obtained by
+ querying the EGL_<x>_SIZE attribute of the EGLConfig used to
+ create the surface, where <x> is <x> is one of RED, GREEN, BLUE,
+ ALPHA, or LUMINANCE.
+
+ Querying EGL_BITMAP_POINTER_KHR and EGL_BITMAP_PITCH_KHR is only
+ allowed when <surface> is mapped (see section 3.5.5ls). Querying
+ either of these attributes for the first time after calling
+ eglLockSurfaceKHR causes the color buffer of the locked surface
+ to be mapped. Querying them again before unlocking the surface
+ will return the same values as the first time. However, after
+ calling eglUnlockSurfaceKHR, these properties become undefined.
+ After a second call to eglLockSurfaceKHR, these properties may
+ again be queried, but their values may have changed.
+
+ Other properties of the mapped color buffer of a surface
+ (in the list above) are
+ invariant, and need be queried only once following surface
+ creation. If <surface> was created with an EGLConfig whose
+ EGL_SURFACE_TYPE attribute does not contain
+ EGL_LOCK_SURFACE_BIT_KHR, queries of EGL_BITMAP_ORIGIN_KHR,
+ EGL_BITMAP_PIXEL_<x>_OFFSET_KHR and EGL_BITMAP_PIXEL_SIZE_KHR
+ return undefined values."
+
+ Add to the description of eglQuerySurface errors in the last
+ paragraph of section 3.5.6:
+
+ "eglQuerySurface and eglQuerySurface64KHR return EGL_FALSE on
+ failure ... If <attribute> is one of the attributes whose
+ ``64-bit'' entry is checked in table 3.5, then an
+ EGL_BAD_ATTRIBUTE error is generated if eglQuerySurface is called;
+ only eglQuerySurface64KHR is allowed for such attributes. If
+ <attribute> is either EGL_BITMAP_POINTER_KHR or
+ EGL_BITMAP_PITCH_KHR, and either <surface> is not locked using
+ eglLockSurfaceKHR, or <surface> is locked but mapping fails, then
+ an EGL_BAD_ACCESS error is generated. "
+
+ In section 3.9.3 Posting Semantics on page 53, append to the first
+ paragraph:
+
+ "<surface> must be bound to the calling thread's current context
+ ... This restriction does not apply to lockable surfaces; for such
+ a surface, eglSwapBuffers and eglCopyBuffers may be called for a
+ surface not bound to any client API context(fn).
+
+ [fn: Normally this would only be done when using methods other
+ than client API rendering to specify the color buffer contents,
+ such as software rendering to a locked surface.]"
+
+ Replace the second paragraph ("If <dpy> and <surface> ... not be
+ executed until posting is completed.") with:
+
+ "If <surface> is bound to a current client API context for the calling
+ thread, eglSwapBuffers and eglCopyBuffers perform an implicit flush
+ operation on the context (glFlush for an OpenGL or OpenGL ES context,
+ vgFlush for an OpenVG context). Subsequent client API commands can be
+ issued immediately, but will not be executed until posting is
+ completed.
+
+ If <surface> is current to a client API context in any thread other
+ than the calling thread, eglSwapBuffers and eglCopyBuffers will fail.
+
+ Append following the prototype for eglSwapInterval:
+
+ "specifies the minimum number of video frame periods ... The swap
+ interval has no effect on eglSwapBuffers for a surface not bound
+ to a current client API context."
+
+ In 3.9.4 Posting Errors, change the first paragraph:
+
+ "eglSwapBuffers and eglCopyBuffers return EGL_FALSE on failure. If
+ <surface> is not a valid EGL surface, an EGL_BAD_SURFACE error is
+ generated. If <surface> is bound to a current context in a thread
+ other than the calling thread, an EGL_BAD_SURFACE error is
+ generated." If <target> is not a valid native pixmap handle ..."
+
+Sample Code
+
+ None
+
+Conformance Tests
+
+ None yet
+
+Issues
+
+ The issues lists of EGL_KHR_lock_surface and EGL_KHR_lock_surface2 also
+ apply to this extension. In addition, issues related only to the reason
+ for defining the EGLAttribKHR and interfaces using that type may be
+ found in issues 1-3 of the EGL_KHR_cl_event2 extension specification.
+
+ 1) Is this extension backwards-compatible with EGL_KHR_lock_surface2?
+
+ RESOLVED: No. Querying the bitmap pointer must be done with the new
+ command eglQuerySurface64KHR when using this extension, to guide
+ developers down the right path even when writing 32-bit code.
+
+ However, if both lock_surface2 and this extension are supported, it is
+ possible to query the bitmap pointer using older calls, with the risk
+ that executing such code on a 64-bit platform will probably fail.
+
+Revision History
+
+ Version 4, 2014/09/17 (Jon Leech) - Fix bogus return type for
+ eglQuerySurface64KHR in New Functions section.
+
+ Version 3, 20130/12/04 (Jon Leech) - Minor cleanup for public release.
+ Change formal parameter names from 'display' to 'dpy' to match other EGL
+ APIs.
+
+ Version 2, 20130/10/16 (Jon Leech) - add Dependencies and Overview text
+ noting that this extension obsoletes and should replace
+ EGL_KHR_lock_surface2 and EGL_KHR_lock_surface.
+
+ Version 1, 2013/10/15 - Branched from approved EGL_KHR_lock_surface2.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_mutable_render_buffer.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_mutable_render_buffer.txt
new file mode 100644
index 0000000..9b72af4
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_mutable_render_buffer.txt
@@ -0,0 +1,325 @@
+Name
+
+ KHR_mutable_render_buffer
+
+Name Strings
+
+ EGL_KHR_mutable_render_buffer
+
+Contributors
+
+ Alon Or-bach
+ John Carmack
+ Cass Everitt
+ Michael Gold
+ James Jones
+ Jesse Hall
+ Ray Smith
+
+Contact
+
+ Alon Or-bach, Samsung Electronics (alon.orbach 'at' samsung.com)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2016 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Approved by the EGL Working Group on January 28, 2016
+ Ratified by the Khronos Board of Promoters on March 11, 2016
+
+Version
+
+ Version 12, January 29, 2016
+
+Number
+
+ EGL Extension #96
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ EGL 1.2 or later is required.
+
+ Written based on the EGL 1.5 specification (August 27, 2014).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as a new value for the EGL_SURFACE_TYPE EGLConfig attribute:
+
+ EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x00001000
+
+Overview
+
+ The aim of this extension is to allow toggling of front-buffer rendering
+ for window surfaces after their initial creation.
+
+ This allows for implementations to switch between back-buffered and single-
+ buffered rendering without requiring re-creation of the surface. It is not
+ expected for toggling to be a frequent event.
+
+ This extension does not guarantee when rendering results appear on-screen.
+ To avoid incorrect results, applications will need to use mechanisms not
+ included in this extension to synchronize rendering with the display. This
+ functionality is not covered by this extension, and vendors are encouraged
+ to provide guidelines on how this is achieved on their implementation.
+
+Add to the list of supported tokens for EGL_SURFACE_TYPE in section 3.4
+"Configuration Management", page 23:
+
+ If EGL_MUTABLE_RENDER_BUFFER_BIT_KHR is set in EGL_SURFACE_TYPE, then the
+ EGL_RENDER_BUFFER attribute of a surface can be toggled between front
+ buffer and back buffer rendering using eglSurfaceAttrib (see section
+ 3.5.6).
+
+Add to the list of supported tokens for eglSurfaceAttrib in section 3.5.6
+"Surface Attributes", page 43:
+
+ If attribute is EGL_RENDER_BUFFER, then value specifies whether to render
+ to a back buffer by specifying EGL_BACK_BUFFER, or directly to the front
+ buffer by specifying EGL_SINGLE_BUFFER. The change to which buffer is
+ rendered to takes effect at the subsequent eglSwapBuffers call, as
+ described in section 3.10.1.2, and changes are considered pending up until
+ that point.
+
+ If attribute is EGL_RENDER_BUFFER, and the EGL_SURFACE_TYPE attribute of
+ the EGLConfig used to create surface does not contain
+ EGL_MUTABLE_RENDER_BUFFER_BIT_KHR, or the windowing system is unable to
+ support the requested rendering mode, an EGL_BAD_MATCH error is generated
+ and the EGL_RENDER_BUFFER state is left unchanged.
+
+Modify the following sentence in section 3.5.6 "Surface Attributes", page 45:
+
+ Querying EGL_RENDER_BUFFER returns the buffer which client API rendering
+ is requested to use. For a window surface, this is the attribute value
+ specified when the surface was created or last set via eglSurfaceAttrib.
+
+Modify the third bullet describing eglQueryContext in section 3.7.4, page 63:
+
+ If the context is bound to a window surface, then either EGL_BACK_BUFFER
+ or EGL_SINGLE_BUFFER may be returned. The value returned depends on
+ both the buffer requested by the setting of the EGL_RENDER_BUFFER property
+ of the surface (which may be queried by calling eglQuerySurface - see
+ section 3.5.6), and on the client API (not all client APIs support
+ single-buffer rendering to window surfaces). Some client APIs allow control
+ of whether rendering goes to the front or back buffer for back buffered
+ surfaces. This client API-specific choice is not reflected in the returned
+ value, which only describes the buffer that will be rendered to by default
+ if not overridden by the client API. If the EGL_RENDER_BUFFER attribute of
+ a surface is changed by calling eglSurfaceAttrib, the value returned by
+ eglQueryContext will change once eglSwapBuffers is called, as described in
+ section 3.10.1.2.
+
+Modify the following sentence in section 3.10.1 "Posting to a Window", page 79:
+
+ If surface is a single-buffered window, pixmap, or pbuffer surface for which
+ there is a pending change to the EGL_RENDER_BUFFER attribute, eglSwapBuffers
+ performs an implicit flush operation on the context and effects the
+ attribute change. If surface is a single-buffered window, pixmap, or pbuffer
+ surface for which there is no pending change to the EGL_RENDER_BUFFER
+ attribute, eglSwapBuffers has no effect.
+
+Add a new section 3.10.1.2 "Handling of render buffer attribute changes"
+
+ If there is a pending change to the EGL_RENDER_BUFFER attribute of a
+ surface, as described in section 3.5.6, the change to which buffer is
+ rendered to takes effect at the subsequent eglSwapBuffers call.
+
+ When switching to single-buffered from back-buffered rendering and the
+ surface's EGL_SWAP_BEHAVIOR attribute is set to EGL_BUFFER_DESTROYED, the
+ back buffers are considered to be undefined after calling eglSurfaceAttrib.
+ Only draw calls after this eglSurfaceAttrib call are guaranteed to affect
+ the back buffer content. If it is set to EGL_BUFFER_PRESERVED, the back
+ buffer contents are unaffected. At the next eglSwapBuffers call, the back
+ buffer is posted as the front buffer. After this, any draw calls take
+ effect on the front buffer.
+
+ When switching to back-buffered from single-buffered rendering, any draw
+ calls up until the next eglSwapBuffers call continues to affect the front
+ buffer, and this initial eglSwapBuffers call does not affect the window
+ content. The back buffer is considered to be undefined at this point, no
+ matter what the EGL_SWAP_BEHAVIOR attribute of the surface is set to. Once
+ the pending change has taken place during this initial eglSwapBuffers call,
+ further rendering affects the back buffer.
+
+ If the EGL_RENDER_BUFFER attribute is changed twice or more in succession
+ without new content rendered to the surface as described above, undefined
+ content may appear on-screen.
+
+
+Issues
+
+ 1) When should the switch between rendering modes occur?
+
+ RESOLVED: The switch should take effect after the subsequent eglSwapBuffers
+ call. The operation of the subsequent eglSwapBuffers call is according to
+ the current state (i.e the state before the eglSurfaceAttrib call), not the
+ pending state.
+
+ When switching to EGL_SINGLE_BUFFER, the current state is EGL_BACK_BUFFER
+ and therefore eglSwapBuffers posts the current back buffer. After this any
+ rendering takes effect on the front buffer.
+
+ When switching to EGL_BACK_BUFFER, the current state is EGL_SINGLE_BUFFER
+ and therefore eglSwapBuffers only flushes the current context. After this
+ any rendering takes effect on the back buffer.
+
+ 2) If this extension is advertised, should all surface configurations with
+ EGL_WINDOW_BIT in EGL_SURFACE_TYPE be required to support it?
+
+ RESOLVED: No. Add a config bit to indicate support for EGL_RENDER_BUFFER
+ toggling. If toggle performed when not supported, EGL_BAD_MATCH error is
+ generated.
+
+ 3) How often do we expect the switch between single and back buffering to
+ occur?
+
+ RESOLVED: It is not expected for the toggle to be a frequent call. For
+ example, we expect it to be called once when enabling a VR accessory and
+ once when disabling it.
+
+ 4) Do we need to reword section 3.7.4 (page 63)?
+
+ RESOLVED: Yes. Modified to explain how some client APIs can still override
+ the behavior and what value eglQueryContext is expected to return for
+ EGL_RENDER_BUFFER.
+
+ 5) Why not enable this via the client API, like OpenGL does via glDrawBuffer?
+
+ RESOLVED: This would not be possible on some platforms, where the swap chain
+ is controlled via EGL.
+
+ 6) Is this extension a client or display extension?
+
+ RESOLVED: This is a display extension.
+
+ 7) What state are back buffers after switching between single and back buffered
+ rendering?
+
+ RESOLVED: This is as set out in section 3.10.1.2.
+
+ 8) What guarantees of an onscreen update does this extension make?
+
+ RESOLVED: This extension does not make any additional guarantees to the
+ equivalent behavior of a window surface with EGL_RENDER_BUFFER set to the
+ same value at creation of the surface. When a surface is single-buffered,
+ any API call which is specified to explicitly or implicitly flush is
+ expected to affect the on-screen content in finite time, but no timing
+ guarantees are provided.
+
+ It is recommended that if ancillary buffers are not required, they are
+ invalidated before flushing to reduce unnecessary memory transfers on some
+ implementations (e.g. by calling glInvalidateFramebuffer for OpenGL ES).
+
+ 9) Should an implicit flush occur when eglSwapBuffers is called on a
+ single-buffered surface?
+
+ RESOLVED: Only when there is a pending EGL_RENDER_BUFFER change which will
+ be affected by this eglSwapBuffers call. Contexts must be flushed when
+ changing render targets.
+
+ 10) How does toggling EGL_RENDER_BUFFER affect client APIs?
+
+ RESOLVED: Changing the value of EGL_RENDER_BUFFER should result in the same
+ behavior in client APIs as binding a window surface with that mode to the
+ current context. For example, in OpenGL, it is akin to switching from a
+ drawable with a back buffer and front buffer to a drawable with only a
+ front buffer, or vice versa.
+
+ Note the effect of such an operation on the draw buffer and framebuffer
+ completeness, if applicable, is client API specific. OpenGL ES applications
+ will see no change and will be able to continue rendering without updating
+ the draw buffer, as OpenGL ES exposes only one renderable surface,
+ regardless of single or back-buffered drawables. OpenGL applications should
+ update the current draw buffer using glDrawBuffers() or similar commands to
+ ensure rendering targets the correct buffer after toggling
+ EGL_RENDER_BUFFER.
+
+ 11) How should interaction between multiple window surfaces be handled?
+
+ RESOLVED: This is left to platform vendors to define. Implementations may
+ choose to restrict use of front buffer rendering to forbid interaction
+ between multiple windows, or provide a buffer that is read by the display
+ or compositing hardware but not the final composited results to prevent
+ security concerns or undefined content.
+
+ 12) How should the name of the extension be?
+
+ RESOLVED: EGL_KHR_mutable_render_buffer
+
+
+Revision History
+
+#12 (Jon Leech, January 29, 2016)
+ - Assign enumerant value
+ - Update Status block
+
+#11 (Alon Or-bach, January 28, 2016)
+ - Updated issue 1 to be consistent with new resolution to issue 9
+ - Marked issues 7, 8 and 10 as resolved
+
+#10 (Alon Or-bach, January 28, 2016)
+ - Renamed extension to EGL_KHR_mutable_render_buffer, resolving issue 12
+ - Updates issue 7 resolution to just refer to spec
+ - Cleaned up section 3.10.1.2 wording
+ - Added wording to overview on lack of guarantee of rendering results
+
+#9 (Alon Or-bach, January 22, 2016)
+ - Marked issues 1, 9 and 11 as resolved
+ - Updated issue 4 to reflect previously agreed wording for section 3.7.4
+ - Updated issue 8 to indicate no new flush guarantees made by this extension
+ - New proposed resolution to issue 7 and modified section 3.10.1.2 to vary
+ whether back buffer content are undefined based on swap behavior
+ - Updated issue 10 with wording to explain differing client API behaviors
+ - Added error condition for windowing systems unable to support a requested
+ rendering mode in section 3.5.6
+ - New proposed resolution to issue 12 for extension naming
+ - Minor updates to wording (attribute instead of mode, overview phrasing)
+
+#8 (Ray Smith, January 5, 2016)
+ - Revert issue 1 resolution to that in revision 6, adding wording to section
+ 3.10.1 to make eglSwapBuffers effect pending state changes even for single
+ buffered surfaces.
+
+#7 (Alon Or-bach, December 17, 2015)
+ - New proposed resolution to issue 1 (explicit flush as update boundary),
+ updating the wording of 3.5.6, 3.7.4 3.10.1.2 to reflect this
+ - Added new issue 11 to reflect concerns about interactions between multiple
+ windows
+ - Added new issue 12 to determine extension name
+
+#6 (Alon Or-bach, November 11, 2015)
+ - Resolved issue 6 and proposed resolution to issue 4 (section 3.7.4)
+ - Added new issue 10 with proposed resolution
+
+#5 (Alon Or-bach, May 12, 2015)
+ - Updated section 3.10.1.2, changed resolution to issue 9
+
+#4 (Alon Or-bach, April 15, 2015)
+ - Added issue 9 and a typo fix
+
+#3 (Alon Or-bach, April 09, 2015)
+ - Added issue 7 and 8, wording on what content expected during mode switch
+
+#2 (Alon Or-bach, March 09, 2015)
+ - Cleanup, rename to XXX_set_render_buffer_mode
+
+#1 (Alon Or-bach, March 04, 2015)
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_no_config_context.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_no_config_context.txt
new file mode 100644
index 0000000..4493b20
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_no_config_context.txt
@@ -0,0 +1,261 @@
+Name
+
+ KHR_no_config_context
+
+Name Strings
+
+ EGL_KHR_no_config_context
+
+Contributors
+
+ Etay Meiri
+ Alon Or-bach
+ Jeff Vigil
+ Ray Smith
+ Michael Gold
+ James Jones
+ Daniel Kartch
+ Adam Jackson
+ Jon Leech
+
+Contact
+
+ Etay Meiri (etay.meiri 'at' intel.com)
+
+IP Status
+
+ No known IP claims.
+
+Status
+
+ Approved by the EGL Working Group on April 27, 2016
+
+ Approved by the Khronos Board of Promoters on July 22, 2016
+
+Version
+
+ Version 9, 2016/09/08
+
+Number
+
+ EGL Extension #101
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ EGL 1.4 is required. This extension is written against the EGL 1.5
+ Specification of August 27, 2014.
+
+ Some of the capabilities of these extensions are only available when
+ creating OpenGL or OpenGL ES contexts supporting specific versions or
+ capabilities. All such restrictions are documented in the body of this
+ extension specification.
+
+Overview
+
+ Modern GPUs allow contexts to render to almost any combination of
+ supported color and auxiliary buffer formats. Traditionally EGL context
+ creation is done with respect to an EGLConfig specifying buffer formats,
+ and constrains contexts to only work with surfaces created with a
+ "compatible" config.
+
+ This extension allows creation of GL & ES contexts without specifying an
+ EGLConfig.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as the <config> parameter of eglCreateContext:
+
+ EGL_NO_CONFIG_KHR ((EGLConfig)0)
+
+Additions to the EGL 1.5 Specification
+
+ Modify the 3rd paragraph of section 2.2 "Rendering Contexts and
+ Drawing Surfaces":
+
+ "Surfaces and contexts are both created with respect to an EGLConfig.
+ The EGLConfig describes the depth of the color buffer components and
+ the types, quantities and sizes of the ancillary buffers (i.e., the
+ depth, multisample, and stencil buffers). It is also possible to
+ create a context without using an EGLConfig, by specifying relevant
+ parameters at creation time (see sections 3.5 and 3.7, respectively)."
+
+ Modify the sixth paragraph of section 2.2:
+
+ "A context can be used with any EGLSurface that it is <compatible>
+ with (subject to the restrictions discussed in the section on
+ address space). A context and surface are compatible if they were
+ created with respect to the same EGLDisplay, and if either of the
+ following sets of conditions apply:
+
+ * The context was created without an EGLConfig. Such contexts match
+ any valid EGLSurface.
+
+ or,
+
+ * The context and surface support the same type of color buffer
+ (RGB or luminance).
+
+ * They have color buffers and ancillary buffers of the same depth.
+
+ ... replicate remainder of this bullet point ...
+
+ As long as the compatibility constraint and the address space ..."
+
+ Insert a new paragraph after paragraph 3 in section 3.7.1 "Creating
+ Rendering Contexts" on p. 51:
+
+ "<config> specifies an EGLConfig defining properties of the context. If
+ <config> is EGL_NO_CONFIG_KHR, the resulting context is said to be
+ created <without reference to an EGLConfig>. In this case, the context
+ must pass the required conformance tests for that client API and must
+ support being made current without a rendering surface. Such support is
+ guaranteed for OpenGL ES 2.0 implementations supporting the
+ GL_OES_surfaceless_context extension, OpenGL ES 3.0 and later versions
+ of OpenGL ES, and OpenGL 3.0 and later versions of OpenGL. Support for
+ other versions and other client APIs is implementation dependent."
+
+ Replace the EGL_BAD_CONFIG error for eglCreateContext on p. 56, and add
+ a new errors:
+
+ "* An EGL_BAD_CONFIG error is generated if <config> is neither
+ EGL_NO_CONFIG_KHR nor a valid <config>.
+
+ * An EGL_BAD_MATCH error is generated if <config> is EGL_NO_CONFIG_KHR,
+ and the requested client API type and version do not support being
+ made current without a rendering surface.
+
+ * An EGL_BAD_MATCH error is generated if <config> is EGL_NO_CONFIG_KHR,
+ and the implementation does not support the requested client API and
+ version."
+
+ Modify the first error for eglMakeCurrent in the list on p. 58:
+
+ "* An EGL_BAD_MATCH error is generated if <draw> or <read> are not
+ compatible with <ctx>, as described in section 2.2."
+
+ Modify the description of eglQueryContext in section 3.7.4 on p. 63:
+
+ "Querying EGL_CONFIG_ID returns the ID of the EGLConfig with respect
+ to which the context was created, or zero if created without
+ respect to an EGLConfig."
+
+Errors
+
+ As described in the body of the extension above.
+
+Conformance Tests
+
+ None
+
+Sample Code
+
+ None
+
+Dependencies On EGL 1.4
+
+ If implemented on EGL 1.4, interactions with EGL 1.5-specific features
+ are removed.
+
+Issues
+
+ 1) Should non-conformant no-config contexts be allowed to be created?
+
+ RESOLVED: No. We are not encouraging non-conformant contexts.
+
+ 2) Are no-config contexts constrained to those GL & ES implementations
+ which can support them?
+
+ RESOLVED: Yes. ES2 + OES_surfaceless_context, ES 3.0, and GL 3.0 all
+ support binding a surface without a context. This implies that they
+ don't need to know surface attributes at context creation time.
+
+ 3) For an OpenGL or OpenGL ES context created with no config, what is the
+ initial state of GL_DRAW_BUFFER and GL_READ_BUFFER for the default
+ framebuffer?
+
+ RESOLVED: This is an implementation detail rather than a spec issue.
+ glReadBuffer/glDrawBuffer have undefined results if called without a
+ current context. The GL_DRAW_BUFFER and GL_READ_BUFFER are set on the
+ first eglMakeCurrent call and can be updated in glReadBuffer and
+ glDrawBuffers calls after that. Therefore, the attribute value with
+ which the context is created is irrelevant from the point of view of the
+ spec and is left up to the implementation.
+
+ 4) Can eglMakeCurrent alter the GL_DRAW_BUFFER and GL_READ_BUFFER state of
+ the default framebuffer?
+
+ RESOLVED: Yes, but only on the first call to eglMakeCurrent. The two
+ relevant excerpts from the OpenGL 3.2 Core Profile Specification.
+ From Section 4.2.1 Selecting a Buffer for Writing:
+
+ For the default framebuffer, in the initial state the draw buffer
+ for fragment color zero is BACK if there is a back buffer; FRONT if
+ there is no back buffer; and NONE if no default framebuffer is
+ associated with the context.
+
+ From 4.3.3 Pixel Draw/Read State:
+
+ For the default framebuffer, in the initial state the read buffer is
+ BACK if there is a back buffer; FRONT if there is no back buffer;
+ and NONE if no default framebuffer is associated with the context.
+
+ Based on the above excerpts on the first call to eglMakeCurrent the
+ GL_DRAW_BUFFER and GL_READ_BUFFER are set to: GL_NONE if the surface is
+ NULL, GL_BACK if the surface is double buffered, GL_FRONT if the surface
+ is single buffered. Following calls to glReadBuffer and glDrawBuffers
+ change the GL_DRAW_BUFFER and GL_READ_BUFFER attributes and these values
+ persist even when the application change the current context.
+
+ 5) Should we add an eglCreateGenericContext which is the same as
+ eglCreateContext but without the config parameter?
+
+ RESOLVED: No.
+
+ 6) Can no-config contexts share state with contexts that has a config?
+
+ RESOLVED: Yes. This extension implies that the dependency of the context
+ on the config is quite minimal so no restriction w.r.t sharing should be
+ enforced.
+
+ 7) What surface types can be made current with a no-config context?
+
+ RESOLVED: any surface type supported by the implementation can be made
+ current with a no-config context.
+
+Revision History
+
+ Version 9. 2016/09/08 (Jon Leech) - Modify cast of EGL_NO_CONFIG_KHR to
+ (EGLConfig) per bug 15473.
+
+ Version 8. 2016/08/09 (Jon Leech) - Assign extension number, reflow
+ text, and publish.
+
+ Version 7. 2016/05/09 - Recorded vote at working group and sent to
+ Promoters for ratification.
+
+ Version 6. 2016/04/27 - Updated issue #6. Added an EGL_BAD_MATCH case to
+ eglCreateContext.
+
+ Version 5. 2016/04/20 - White space cleanup. Added extension type.
+ Cleaned up issues #1, #2, #4 and #6.
+
+ Version 4. 2016/03/24 - Added a list of contributers. Fixed resolution
+ of issue #3 and #4.
+
+ Version 3. 2016/03/10 - removed restriction to window surfaces only.
+ Removed comment on EGL_RENDERABLE_TYPE. Resolved issues 3 and 4. Added
+ issue 7.
+
+ Version 2, 2016/03/09 - querying EGL_CONFIG_ID on a context created
+ without a config returns zero. Contexts created without a config can
+ share state with contexts which were created with a config.
+
+ Version 1, 2016/01/27 - branch from draft EGL_KHR_no_config specification.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_partial_update.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_partial_update.txt
new file mode 100644
index 0000000..bd7cf47
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_partial_update.txt
@@ -0,0 +1,501 @@
+Name
+
+ KHR_partial_update
+
+Name Strings
+
+ EGL_KHR_partial_update
+
+Contributors
+
+ Ray Smith
+ Tom Cooksey
+ James Jones
+ Chad Versace
+ Jesse Hall
+
+Contact
+
+ Ray Smith, ARM (Raymond.Smith 'at' arm.com)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2014 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on September 17, 2014.
+ Approved by the Khronos Board of Promoters on November 7, 2014.
+
+Version
+
+ Version 12, September 12, 2014
+
+Number
+
+ EGL Extension #83
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ EGL 1.4 or later is required.
+
+ Written based on the EGL 1.5 specification (March 12, 2014).
+
+ The behavior of part of this extension is different depending on whether the
+ EGL_EXT_buffer_age extension is also present.
+
+ This extension trivially interacts with EGL_KHR_swap_buffers_with_damage and
+ EGL_EXT_swap_buffers_with_damage. This extension is worded against the KHR
+ version, but the interactions with the EXT version are identical.
+
+New Procedures and Functions
+
+
+ EGLBoolean eglSetDamageRegionKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint *rects,
+ EGLint n_rects);
+
+New Tokens
+
+ Accepted in the <attribute> parameter of eglQuerySurface:
+
+ EGL_BUFFER_AGE_KHR 0x313D
+
+Overview
+
+ The aim of this extension is to allow efficient partial updates for postable
+ surfaces. It allows implementations to completely avoid processing areas of
+ the surface which have not changed between frames, allowing increased
+ efficiency.
+
+ It does so by providing information and guarantees about the content of the
+ current back buffer which allow the application to "repair" only areas that
+ have become out of date since the particular back buffer was last used.
+
+ The information provided is in the form of the "age" of the buffer, that is,
+ how many frames ago it was last used as the back buffer for the surface. If
+ the application tracks what changes it has made to the surface since this
+ back buffer was last used, it can bring the entire back buffer up to date by
+ only re-rendering the areas it knows to be out of date.
+
+ Use of this extension provides a more efficient alternative to
+ EGL_BUFFER_PRESERVED swap behaviour. EGL_BUFFER_PRESERVED typically implies
+ an expensive full-frame copy at the beginning of the frame, as well as a
+ dependency on the previous frame. Usage of this extension avoids both and
+ requires only the necessary updates to a back buffer to be made.
+
+Terminology
+
+ This extension and the EGL_KHR_swap_buffers_with_damage extension both use
+ the word "damage" for subtly but significantly different purposes:
+
+ "Surface damage" is what the EGL_KHR_swap_buffers_with_damage extension
+ is concerned with. This is the area of the *surface* that changes between
+ frames for that surface. It concerns the differences between two buffers -
+ the current back buffer and the current front buffer. It is useful only to
+ the consumer.
+
+ "Buffer damage" is what the EGL_KHR_partial_update extension is concerned
+ with. This is the area of a particular buffer that has changed since that
+ same buffer was last used. As it only concerns changes to a single buffer,
+ there is no dependency on the next or previous frames or any other buffer.
+ It therefore cannot be used to infer anything about changes to the surface,
+ which requires linking one frame or buffer to another. Buffer damage is
+ therefore only useful to the producer.
+
+ Following are examples of the two different damage types. Note that the
+ final surface content is the same in both cases, but the damaged areas
+ differ according to the type of damage being discussed.
+
+Surface damage example (EGL_KHR_swap_buffers_with_damage)
+
+ The surface damage for frame n is the difference between frame n and frame
+ (n-1), and represents the area that a compositor must recompose.
+
+ Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ | | |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Final surface
+ | | | | | | |#########| |#########| content
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ |@@@@@@@@@| |@@@@@@@@@| | | | | | |
+ |@@@@@@@@@| | | |@@@@@@@@@| | | | | Surface damage
+ |@@@@@@@@@| | | | | |@@@@@@@@@| | |
+ |@@@@@@@@@| | | | | | | |@@@@@@@@@|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+Buffer damage example (EGL_KHR_partial_update)
+
+ The buffer damage for a frame is the area changed since that same buffer was
+ last used. If the buffer has not been used before, the buffer damage is the
+ entire area of the buffer.
+
+ The buffer marked with an 'X' in the top left corner is the buffer that is
+ being used for that frame. This is the buffer to which the buffer age and
+ the buffer damage relate.
+
+ Note that this example shows a double buffered surface - the actual number
+ of buffers could be different and variable throughout the lifetime of the
+ surface. The age *must* therefore be queried for every frame.
+
+ Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ | | |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Final surface
+ | | | | | | |#########| |#########| content
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ X---------+ +---------+ X---------+ +---------+ X---------+
+ | | | | |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Buffer 1 content
+ | | | | | | | | |#########|
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ X---------+ +---------+ X---------+ +---------+
+ |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| Buffer 2 content
+ | | | | |#########| |#########|
+ | | | | | | | |
+ +---------+ +---------+ +---------+ +---------+
+
+ 0 0 2 2 2 Buffer age
+
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| | | | |
+ |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| | | Buffer damage
+ |@@@@@@@@@| |@@@@@@@@@| | | |@@@@@@@@@| |@@@@@@@@@|
+ |@@@@@@@@@| |@@@@@@@@@| | | | | |@@@@@@@@@|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+
+Add a new section entitled "Partial updates to postable surfaces" to section
+3.5:
+
+ The "damage region" defines the area of the buffer to which all rendering
+ commands must be restricted. It applies only for surfaces which can be
+ posted, as described in section 3.10, and only when the swap behavior is
+ EGL_BUFFER_DESTROYED.
+
+ The contents of the buffer outside of the damage region may always be relied
+ upon to contain the same content as the last time they were defined for the
+ current back buffer. See section 3.5.6 for how to query when the current
+ back buffer was last used, and therefore what those contents are.
+
+ If EGL_EXT_buffer_age is supported, the contents of the buffer inside the
+ damage region may also be relied upon to contain the same content as the
+ last time they were defined for the current back buffer. If
+ EGL_EXT_buffer_age is not supported, the contents of the buffer inside the
+ damage region are always undefined after calling eglSwapBuffers.
+
+ Setting the damage region appropriately can be used to efficiently update
+ only the necessary areas inbetween frames.
+
+ After posting the back buffer, the damage region is set to the full
+ dimensions of the surface. The damage region can only be changed by the
+ application before any client API commands that draw to the surface have
+ been made. After this, the damage region is frozen until the back buffer is
+ posted again.
+
+ Use the command
+ EGLBoolean eglSetDamageRegionKHR(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint *rects,
+ EGLint n_rects)
+
+ to set the damage region.
+
+ The damage region for <surface> is set to the area described by <n_rects> and
+ <rects> if all of the following conditions are met:
+
+ * <surface> is the current draw surface of the calling thread
+ * <surface> is a postable surface
+ * There have been no client API commands which result with rendering to
+ <surface> since eglSwapBuffers was last called with <surface>, or since
+ <surface> was created in case eglSwapBuffers has not yet been called with
+ <surface>.
+ * The surface's swap behavior is EGL_BUFFER_DESTROYED
+
+ <n_rects> specifies the number of rectangles comprising the damage region.
+ <rects> is a pointer to a list of values describing the rectangles. The list
+ should consist of <n_rects> groups of four values, with each group
+ representing a single rectangle in surface coordinates in the form {x, y,
+ width, height}. Coordinates are specified relative to the lower left corner
+ of the surface. It is not necessary to avoid overlaps of the specified
+ rectangles. Rectangles that lie (partially) outside of the current surface
+ dimensions (as queryable via the EGL_WIDTH and EGL_HEIGHT attributes) will
+ be clamped to the current surface dimensions.
+
+ If <n_rects> is zero, <rects> is ignored and the damage region is set to the
+ full dimensions of the surface.
+
+ If <n_rects> is not zero but the rectangles in <rects> describe a region of
+ zero area after clamping, the damage region is set to the empty region.
+
+ If <rects> contains more than (4 * <n_rects>) values, the remaining values
+ are ignored. If <rects> contains fewer than (4 * <n_rects>) values, the
+ behavior is undefined, up to and including program termination.
+
+ At all times, any client API rendering which falls outside of the damage
+ region results in undefined framebuffer contents for the entire framebuffer.
+ It is the client's responsibility to ensure that rendering is confined to
+ the current damage area.
+
+ If any client API commands resulting in rendering to <surface> have been
+ issued since eglSwapBuffers was last called with <surface>, or since the
+ surface was created in case eglSwapBuffers has not yet been called on it,
+ attempting to set the damage region will result in undefined framebuffer
+ contents for the entire framebuffer.
+
+ Errors
+ ------
+ eglSetDamageRegionKHR returns EGL_FALSE on failure:
+ * If <surface> is not a postable surface, an EGL_BAD_MATCH error is
+ generated
+ * If <surface> is not the current draw surface for the calling thread, an
+ EGL_BAD_MATCH error is generated
+ * If the value of EGL_SWAP_BEHAVIOR for <surface> is not
+ EGL_BUFFER_DESTROYED, an EGL_BAD_MATCH error is generated
+ * If eglSetDamageRegionKHR has already been called on <surface> since the
+ most recent frame boundary, an EGL_BAD_ACCESS error is generated
+ * If the EGL_BUFFER_AGE_KHR attribute of <surface> has not been queried
+ since the most recent frame boundary, an EGL_BAD_ACCESS error is generated
+
+Add before the final paragraph in section 3.5.6 "Surface Attributes":
+
+ Querying EGL_BUFFER_AGE_KHR returns the age of the color contents of the
+ current back buffer as the number of frames elapsed since it was most
+ recently defined. Under certain conditions described below, applications
+ can, in conjunction with the surface's damage region (see section 3.5.1),
+ use this age to safely rely on the contents of old back buffers to reduce
+ the amount of redrawing they do each frame.
+
+ To query the age of a surface, it must be the current draw surface for the
+ calling thread.
+
+ Function name
+ --------------------
+ eglSwapBuffers
+ eglSwapBuffersWithDamageKHR
+
+ Table 3.X, Frame Boundary Functions
+
+ Buffers' ages are initialized to 0 at buffer creation time. When a frame
+ boundary is reached, the following occurs before any exchanging or copying
+ of color buffers:
+
+ * The current back buffer's age is set to 1.
+ * Any other color buffers' ages are incremented by 1 if
+ their age was previously greater than 0.
+
+ For example, with a double buffered surface and an implementation that swaps
+ via buffer exchanges, the age would usually be 2. With a triple buffered
+ surface the age would usually be 3. An age of 1 usually means the previous
+ swap was implemented as a copy. An age of 0 means the buffer has only just
+ been initialized and the contents are undefined. Single buffered surfaces
+ have no frame boundaries and therefore always have an age of 0.
+
+ Where specified in terms of the current damage region (see section 3.5.6),
+ the relevant part of a buffer's content is considered defined when the
+ buffer's age is a value greater than 0.
+
+ Frame boundaries are the only events that can set a buffer's age to a
+ positive value. Once EGL_BUFFER_AGE_KHR has been queried then it can be
+ assumed that the age will remain valid until the next frame boundary. EGL
+ implementations are permitted, but not required, to reset the buffer age in
+ response to pixel ownership test changes for any pixels within the drawable,
+ or if new pixels are added to or removed from the drawable, i.e., the
+ drawable is resized. A reset of this nature does not affect the age of
+ content for pixels that pass the pixel ownership test before and after the
+ event that caused the reset. In other words, applications can assume that
+ no event will invalidate the content of pixels that continuously pass the
+ pixel ownership test between when the buffer age was queried and the
+ following frame boundary. It is up to applications to track pixel ownership
+ using data collected from relevant window system events, such as
+ configuration and expose events on the X11 platform.
+
+ EGL_BUFFER_AGE_KHR state is a property of the EGL surface that owns the
+ buffers and lives in the address space of the application. That is, if an
+ EGL surface has been created from a native window or pixmap that may be
+ shared between processes, the buffer age is not guaranteed to be
+ synchronized across the processes. Binding and unbinding a surface to and
+ from one or more contexts in the same address space will not affect the ages
+ of any buffers in that surface.
+
+Add to the list of errors for eglQuerySurface at the end of section 3.5.6
+"Surface Attributes":
+
+ If <attribute> is EGL_BUFFER_AGE_KHR and <surface> is not the current draw
+ surface for the calling thread, an EGL_BAD_SURFACE error is generated.
+
+Add to the end of section 3.10.1.1 "Native Window Resizing":
+
+ If eglSetDamageRegionKHR has been called with anything other than zero for
+ <n_rects>, a surface resize will cause the damage region to become
+ undefined. This will effectively cause the entire framebuffer content to
+ become undefined until the next frame.
+
+Dependencies on EGL_KHR_swap_buffers_with_damage
+
+ If EGL_KHR_swap_buffers_with_damage is not supported, all references to
+ eglSwapBuffersWithDamageKHR are removed.
+
+Issues
+
+ 1) What should happen if the client renders outside of the damage area?
+
+ RESOLVED: The entire framebuffer content will be undefined.
+
+ DISCUSSION: The definedness of different parts of the buffer varies across
+ implementations, making it hard to define, and providing any more specific
+ information may encourage improper and non-portable use of this extension.
+
+ 2) How does this interact with EGL_EXT_buffer_age?
+
+ RESOLVED: The initial content of the damage area differs depending on
+ whether EGL_EXT_buffer_age is present or not, making this extension fully
+ backwards compatible with EGL_EXT_buffer_age, while not depending on it.
+
+ 3) How does this interact with EGL_KHR_swap_buffers_with_damage?
+
+ RESOLVED: It does not interact materially with
+ EGL_KHR_swap_buffers_with_damage, except for the trivial interaction with
+ eglSwapBuffersWithDamageKHR being a frame boundary function if the extension
+ is also supported.
+
+ DISCUSSION: This extension only provides a way to efficiently update the
+ back buffer for a surface. It does not have any effect on the subsequent
+ posting of that buffer. For maximum efficiency, applications should use both
+ EGL_KHR_partial_update and EGL_KHR_swap_buffers_with_damage simultaneously.
+
+ 4) How does this interact with EGL_BUFFER_PRESERVED?
+
+ RESOLVED: It is an error to call eglSetDamageRegionKHR with a surface with
+ EGL_BUFFER_PRESERVED swap behavior. However, it is not an error to query the
+ age of the buffer in this case.
+
+ DISCUSSION: A layered extension will be proposed to guarantee that the age
+ of a buffer is always 1 after the first frame for a surface. This will
+ provide similar (but not identical) semantics to EGL_BUFFER_PRESERVED for
+ applications that need it.
+
+ 5) How does surface resizing affect the damage region?
+
+ RESOLVED: The damage region becomes undefined if a surface resize occurs
+ after it has been set to anything except the full buffer. Because rendering
+ outside the damage area results in undefined framebuffer contents, this
+ effectively means that the entire framebuffer content becomes undefined
+ until the next frame.
+
+ 6) What happens if the damage region is set after any client rendering
+ commands?
+
+ OPTION 1: An error is returned. Detecting this condition is non-trivial in
+ some implementations.
+
+ OPTION 2: The entire framebuffer contents become undefined.
+
+ RESOLVED: Option 2.
+
+ 7) Should the entire region be provided in advance of any rendering, or should
+ each region be supplied immediately before the rendering commands for that
+ region, and multiple regions can be defined per frame?
+
+ RESOLVED: The entire region must be provided in advance of any rendering.
+
+ 8) What should be the behavior if eglSetDamageRegionKHR is called multiple
+ times before the first rendering command?
+
+ RESOLVED: This is an error. The entire region must be provided during a
+ single call, with no overwrite or modify behavior needed.
+
+ 9) Is it allowed to set the damage region when the buffer age has not been
+ queried?
+
+ RESOLVED: This is an error. This could only make sense when the damage
+ region is the entire buffer, which it is initially anyway. Otherwise the
+ undamaged area needs to be defined to an age that the application doesn't
+ know about. It's not clear that this would ever be useful to the
+ application, because it can't know at this point which areas it needs to
+ update.
+
+10) What is the behavior if, after clamping, the damage region is empty?
+
+ RESOLVED: The damage region is set to empty.
+
+
+Revision History
+
+ Version 1, 28/01/2014
+ - Initial draft
+ Version 2, 05/02/2014
+ - Removed clip behavior, replaced with undefined framebuffer contents if
+ client renders outside of given damage region
+ - Renamed to EGL_KHR_partial_update from EGL_KHR_frame_clip
+ - Added detailed parameter descriptions and error conditions
+ - Added dependency on GL_XXX_damage_region
+ - Defined interactions with EGL_EXT_buffer_age
+ Version 3, 04/03/2014
+ - Removed dependency on GL_XXX_damage_region
+ - Changed error on defining damage region after drawcalls to be undefined
+ rendering results instead
+ - Redefined interactions with EGL_EXT_buffer_age to allow both to exist
+ Version 4, 20/03/2014
+ - Modified language to allow use with EGLStream producer surfaces
+ - Clarified that surface must be the current *draw* surface
+ - Changed n_rects=0 behavior to set the damage region to the entire surface
+ - Clarified that rendering outside the damage region results in the entire
+ framebuffer becoming undefined
+ Version 5, 20/03/2014
+ - Updated to be based on EGL 1.5 spec
+ Version 6, 23/04/2014
+ -Added the pixel ownership logic from EGL_EXT_buffer_age
+ -Ported over the detailed description of buffer age from EGL_EXT_buffer_age
+ -Added a "New Functions" and "New Tokens" section.
+ -Added dependencies on EGL_EXT_swap_buffers_with_damage
+ Version 7, 20/05/2014
+ - Removing a couple of now-obsolete sentences
+ - An age of 1 *usually* means the previous swap was implemented as a copy.
+ - Reworded "For the purposes of buffer age tracking..." to reference the
+ conditions under which the different parts of the buffer are actually
+ defined, which depend on the damage region
+ Version 8, 20/05/2014
+ - Added issues list
+ Version 9, 12/08/2014
+ - Removed outdated modification to "Posting to a Window"
+ - Changed names and order of rects/n_rects to match
+ EGL_EXT_swap_buffers_with_damage
+ - Resolved issue 3 on EGL_EXT_swap_buffers_with_damage interactions
+ - Resolved issue 4 on EGL_BUFFER_PRESERVED swap behavior
+ - Resolved issue 5 on surface resize behavior
+ - Resolved issue 7 on multiple calls to eglSetDamageRegionKHR
+ - Added issue 8 and suggested resolution
+ - Added issue 9 and suggested resolution
+ - Added issue 10 and suggested resolution
+ Version 10, 19/08/2014
+ - Added section on terminology and damage types
+ Version 11, 10/09/2014
+ - Resolved outstanding issues
+ Version 12, 12/09/2014
+ - Added the restriction that you can only query the age of a surface while
+ it is the current draw surface.
+ Version 13, 18/09/2015
+ - Marked as a Display extension
+ - Changed remaining references to EGL_EXT_swap_buffers_with_damage to
+ EGL_KHR_swap_buffers_with_damage
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_android.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_android.txt
new file mode 100644
index 0000000..6568b64
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_android.txt
@@ -0,0 +1,102 @@
+Name
+
+ KHR_platform_android
+
+Name Strings
+
+ EGL_KHR_platform_android
+
+Contributors
+
+ Jesse Hall <jessehall 'at' google.com>
+ The contributors to the EGL_KHR_platform_gbm extension, which this
+ extension was based on.
+
+Contacts
+
+ Jesse Hall <jessehall 'at' google.com>
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on January 31, 2014.
+ Ratified by the Khronos Board of Promoters on March 14, 2014.
+
+Version
+
+ Version 1, 2014/01/27
+
+Number
+
+ EGL Extension #68
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ EGL 1.5 is required.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+Overview
+
+ This extension defines how to create EGL resources from native Android
+ resources using the EGL 1.5 platform functionality.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_ANDROID_KHR 0x3141
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay for the Android device, call eglGetPlatformDisplay
+ with <platform> set to EGL_PLATFORM_ANDROID_KHR and with <native_display>
+ set to EGL_DEFAULT_DISPLAY.
+
+ For each EGLConfig that belongs to the Android platform, the
+ EGL_NATIVE_VISUAL_ID attribute is an Android window format, such as
+ WINDOW_FORMAT_RGBA_8888.
+
+ To obtain a rendering surface from an Android native window, call
+ eglCreatePlatformWindowSurface with a <dpy> that belongs to the Android
+ platform and a <native_window> that points to a ANativeWindow.
+
+ It is not valid to call eglCreatePlatformPixmapSurface with a <dpy> that
+ belongs to the Android platform. Any such call fails and generates
+ an EGL_BAD_PARAMETER error.
+
+Issues
+
+ 1. Should this extension even exist? Android devices only support one
+ window system.
+
+ RESOLUTION: Yes. Although the Android Open Source Project master branch
+ only supports one window system, customized versions of Android could
+ extend that to support other window systems. More importantly, having a
+ platform extension allows EGL 1.5 applications to use the platform and
+ non-platform Get*Display and Create*WindowSurface calls interchangeably. As a user of the API it would be confusing if that didn't work.
+
+Revision History
+
+ Version 1, 2014/01/27 (Jesse Hall)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_gbm.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_gbm.txt
new file mode 100644
index 0000000..a4c04e0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_gbm.txt
@@ -0,0 +1,295 @@
+Name
+
+ KHR_platform_gbm
+
+Name Strings
+
+ EGL_KHR_platform_gbm
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ Jon Leech (oddhack 'at' sonic.net)
+ Kristian Høgsberg <krh@bitplanet.org>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on January 31, 2014.
+ Ratified by the Khronos Board of Promoters on March 14, 2014.
+
+Version
+
+ Version 3, 2016/01/04
+
+Number
+
+ EGL Extension #69
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ EGL 1.5 is required.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+Overview
+
+ This extension defines how to create EGL resources from native GBM
+ resources using the EGL 1.5 platform functionality (GBM is a Generic
+ Buffer Manager for Linux).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_GBM_KHR 0x31D7
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay from an GBM device, call eglGetPlatformDisplay with
+ <platform> set to EGL_PLATFORM_GBM_KHR. The <native_display> parameter
+ specifies the GBM device to use and must either point to a `struct
+ gbm_device` or be EGL_DEFAULT_DISPLAY. If <native_display> is
+ EGL_DEFAULT_DISPLAY, then the resultant EGLDisplay will be backed by some
+ implementation-chosen GBM device.
+
+ For each EGLConfig that belongs to the GBM platform, the
+ EGL_NATIVE_VISUAL_ID attribute is a GBM color format, such as
+ GBM_FORMAT_XRGB8888.
+
+ To obtain a rendering surface from a GBM surface, call
+ eglCreatePlatformWindowSurface with a <dpy> that belongs to the GBM
+ platform and a <native_window> that points to a `struct gbm_surface`. If
+ <native_window> was created without the GBM_BO_USE_RENDERING flag, or if
+ the color format of <native_window> differs from the EGL_NATIVE_VISUAL_ID
+ of <config>, then the function fails and generates EGL_BAD_MATCH.
+
+ It is not valid to call eglCreatePlatformPixmapSurface with a <dpy> that
+ belongs to the GBM platform. Any such call fails and generates
+ an EGL_BAD_PARAMETER error.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplay?
+
+ RESOLUTION: Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplay
+ returns an EGLDisplay backed by an implementation-chosen GBM device.
+
+Example Code
+
+ // This example program creates an EGL surface from a GBM surface.
+ //
+ // If the macro EGL_KHR_platform_gbm is defined, then the program
+ // creates the surfaces using the methods defined in this specification.
+ // Otherwise, it uses the methods defined by the EGL 1.4 specification.
+ //
+ // Compile with `cc -std=c99 example.c -lgbm -lEGL`.
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+
+ #include <EGL/egl.h>
+ #include <gbm.h>
+
+ struct my_display {
+ struct gbm_device *gbm;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ struct gbm_surface *gbm;
+ EGLSurface egl;
+ };
+
+ static void
+ check_extensions(void)
+ {
+ #ifdef EGL_KHR_platform_gbm
+ const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // No client extensions string available
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_KHR_platform_gbm")) {
+ abort();
+ }
+ #endif
+ }
+
+ static struct my_display
+ get_display(void)
+ {
+ struct my_display dpy;
+
+ int fd = open("/dev/dri/card0", O_RDWR | FD_CLOEXEC);
+ if (fd < 0) {
+ abort();
+ }
+
+ dpy.gbm = gbm_create_device(fd);
+ if (!dpy.gbm) {
+ abort();
+ }
+
+
+ #ifdef EGL_KHR_platform_gbm
+ dpy.egl = eglGetPlatformDisplay(EGL_PLATFORM_GBM_KHR, dpy.gbm, NULL);
+ #else
+ dpy.egl = eglGetDisplay(dpy.gbm);
+ #endif
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ return dpy;
+ }
+
+ static struct my_config
+ get_config(struct my_display dpy)
+ {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE, 32,
+ EGL_DEPTH_SIZE, EGL_DONT_CARE,
+ EGL_STENCIL_SIZE, EGL_DONT_CARE,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglGetConfigs(dpy.egl, NULL, 0, &num_configs)) {
+ abort();
+ }
+
+ EGLConfig *configs = malloc(num_configs * sizeof(EGLConfig));
+ if (!eglChooseConfig(dpy.egl, egl_config_attribs,
+ configs, num_configs, &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ // Find a config whose native visual ID is the desired GBM format.
+ for (int i = 0; i < num_configs; ++i) {
+ EGLint gbm_format;
+
+ if (!eglGetConfigAttrib(dpy.egl, configs[i],
+ EGL_NATIVE_VISUAL_ID, &gbm_format)) {
+ abort();
+ }
+
+ if (gbm_format == GBM_FORMAT_XRGB8888) {
+ config.egl = configs[i];
+ free(configs);
+ return config;
+ }
+ }
+
+ // Failed to find a config with matching GBM format.
+ abort();
+ }
+
+ static struct my_window
+ get_window(struct my_config config)
+ {
+ struct my_window window = {
+ .config = config,
+ };
+
+ window.gbm = gbm_surface_create(config.dpy.gbm,
+ 256, 256,
+ GBM_FORMAT_XRGB8888,
+ GBM_BO_USE_RENDERING);
+ if (!window.gbm) {
+ abort();
+ }
+
+ #ifdef EGL_KHR_platform_gbm
+ window.egl = eglCreatePlatformWindowSurface(config.dpy.egl,
+ config.egl,
+ window.gbm,
+ NULL);
+ #else
+ window.egl = eglCreateWindowSurface(config.dpy.egl,
+ config.egl,
+ window.gbm,
+ NULL);
+ #endif
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ int
+ main(void)
+ {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 3, 2016-01-04 (Jon Leech)
+ - Free config memory allocated in sample code (Public Bug 1445).
+
+ Version 2, 2014/02/12 (Chad Versace)
+ - Change resolution of issue #1 from "no" to "yes". Now
+ eglGetPlatformDisplay accepts EGL_DEFAULT_DISPLAY for GBM.
+
+ Version 1, 2014/01/22 (Jon Leech)
+ - Promote EGL_MESA_platform_gbm to KHR to go with EGL 1.5.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_wayland.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_wayland.txt
new file mode 100644
index 0000000..d7315b3
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_wayland.txt
@@ -0,0 +1,122 @@
+Name
+
+ KHR_platform_wayland
+
+Name Strings
+
+ EGL_KHR_platform_wayland
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ Jon Leech (oddhack 'at' sonic.net)
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on January 31, 2014.
+ Ratified by the Khronos Board of Promoters on March 14, 2014.
+
+Version
+
+ Version 2, 2014/02/18
+
+Number
+
+ EGL Extension #70
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ EGL 1.5 is required.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+ The behavior of part of this extension is different depending on whether
+ the EGL_EXT_buffer_age extension is also present.
+
+Overview
+
+ This extension defines how to create EGL resources from native Wayland
+ resources using the EGL 1.5 platform functionality.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_WAYLAND_KHR 0x31D8
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay backed by a Wayland display, call
+ eglGetPlatformDisplay with <platform> set to EGL_PLATFORM_WAYLAND_KHR. The
+ <native_display> parameter specifies the Wayland display to use and must
+ either point to a `struct wl_display` or be EGL_DEFAULT_DISPLAY. If
+ <native_display> is EGL_DEFAULT_DISPLAY, then EGL will create a new
+ wl_display structure by connecting to the default Wayland socket. The
+ manual page wl_display_connect(3) defines the location of the default
+ Wayland socket.
+
+ To obtain an on-screen rendering surface from a Wayland window, call
+ eglCreatePlatformWindowSurface with a <dpy> that belongs to Wayland and
+ a <native_window> that points to a `struct wl_egl_surface`.
+
+ It is not valid to call eglCreatePlatformPixmapSurface with a <dpy> that
+ belongs to Wayland. Any such call fails and generates an
+ EGL_BAD_PARAMETER error.
+
+ Rendering to the obtained EGLSurface or querying it with EGL_BUFFER_AGE_KHR
+ will lock its back buffer preventing it from being dropped or resized,
+ until the next buffer swap. The rationale behind this behavior is to keep
+ operations result accurate until the next swap.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplay()?
+
+ RESOLUTION: Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplay
+ returns a display backed by the default Wayland display.
+
+ 2. Should this extension support creation of EGLPixmap resources from
+ Wayland pixmaps?
+
+ RESOLVED. No. Wayland has no pixmap type.
+
+Revision History
+ Version 3, 2022/07/14 (Kirill Chibisov)
+ - Clarify EGLSurface back buffer locking behavior with regards to
+ rendering and surface querying operations.
+ - Add dependency on EGL_EXT_buffer_age.
+
+ Version 2, 2014/02/18 (Chad Versace)
+ - Change resolution of issue #1 from "no" to "yes". Now
+ eglGetPlatformDisplay accepts EGL_DEFAULT_DISPLAY for Wayland.
+ - Explain in more detail how EGL connects to the default Wayland
+ display.
+
+ Version 1, 2014/01/22 (Jon Leech)
+ - Promote EGL_EXT_platform_wayland to KHR to go with EGL 1.5.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_x11.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_x11.txt
new file mode 100644
index 0000000..2c44141
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_platform_x11.txt
@@ -0,0 +1,378 @@
+Name
+
+ KHR_platform_x11
+
+Name Strings
+
+ EGL_KHR_platform_x11
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ James Jones <jajones@nvidia.com>
+ Jon Leech (oddhack 'at' sonic.net)
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on January 31, 2014.
+ Ratified by the Khronos Board of Promoters on March 14, 2014.
+
+Version
+
+ Version 3, 2014/02/18
+
+Number
+
+ EGL Extension #71
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ EGL 1.5 is required.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+Overview
+
+ This extension defines how to create EGL resources from native X11
+ resources using the EGL 1.5 platform functionality.
+
+ This extension only defines how to create EGL resources from Xlib
+ resources. It does not define how to do so from xcb resources. All X11
+ types discussed here are defined by the header `Xlib.h`.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_X11_KHR 0x31D5
+
+ Accepted as an attribute name in the <attrib_list> argument of
+ eglGetPlatformDisplay:
+
+ EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ On the X11 platform, an EGLDisplay refers to a specific X11 screen rather
+ than an X11 display connection. This is the case because separate X11
+ screens, even when belonging to the same X11 display connection, may
+ reside on different GPUs and/or be driven by different drivers. Therefore,
+ different X11 screens may have different EGL capabilities.
+
+ To obtain an EGLDisplay backed by an X11 screen, call eglGetPlatformDisplay
+ with <platform> set to EGL_PLATFORM_X11_KHR. The <native_display> parameter
+ specifies the X11 display connection to use, and must either point to
+ a valid X11 `Display` or be EGL_DEFAULT_DISPLAY. If <native_display> is
+ EGL_DEFAULT_DISPLAY, then EGL will create [1] a connection to the default
+ X11 display. The environment variable DISPLAY determines the default X11
+ display as described in the manual page for XOpenDisplay(3). The value of
+ attribute EGL_PLATFORM_X11_SCREEN_KHR specifies the X11 screen to use. If
+ the attribute is omitted from <attrib_list>, then the display connection's
+ default screen is used. Otherwise, the attribute's value must be a valid
+ screen on the display connection. If the attribute's value is not a valid
+ screen, then an EGL_BAD_ATTRIBUTE error is generated.
+
+ [fn1] The method by which EGL creates a connection to the default X11
+ display is an internal implementation detail. The implementation may use
+ XOpenDisplay, xcb_connect, or any other method.
+
+ To obtain an on-screen rendering surface from an X11 Window, call
+ eglCreatePlatformWindowSurface with a <dpy> that belongs to X11 and
+ a <native_window> that points to an X11 Window.
+
+ To obtain an offscreen rendering surface from an X11 Pixmap, call
+ eglCreatePlatformPixmapSurface with a <dpy> that belongs to X11 and
+ a <native_pixmap> that points to an X11 Pixmap.
+
+Issues
+
+ 1. Should this extension permit EGL_DEFAULT_DISPLAY as input to
+ eglGetPlatformDisplay()?
+
+ RESOLVED. Yes. When given EGL_DEFAULT_DISPLAY, eglGetPlatformDisplay
+ returns an EGLDisplay backed by the default X11 display.
+
+ 2. When given EGL_DEFAULT_DISPLAY, does eglGetPlatformDisplay reuse an
+ existing X11 display connection or create a new one?
+
+ RESOLVED. eglGetPlatformDisplay creates a new connection because the
+ alternative is infeasible. EGL cannot reliably detect if the client
+ process already has a X11 display connection.
+
+Example Code
+
+ // This example program creates two EGL surfaces: one from an X11 Window
+ // and the other from an X11 Pixmap.
+ //
+ // If the macro USE_EGL_KHR_PLATFORM_X11 is defined, then the program
+ // creates the surfaces using the methods defined in this specification.
+ // Otherwise, it uses the methods defined by the EGL 1.4 specification.
+ //
+ // Compile with `cc -std=c99 example.c -lX11 -lEGL`.
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <EGL/egl.h>
+ #include <X11/Xlib.h>
+
+ struct my_display {
+ Display *x11;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ XVisualInfo *x11;
+ Colormap colormap;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ Window x11;
+ EGLSurface egl;
+ };
+
+ struct my_pixmap {
+ struct my_config config;
+ Pixmap x11;
+ EGLSurface egl;
+ };
+
+ static void
+ check_extensions(void)
+ {
+ #ifdef USE_EGL_KHR_PLATFORM_X11
+ const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // No client extensions string available
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_KHR_platform_x11")) {
+ abort();
+ }
+ #endif
+ }
+
+ static struct my_display
+ get_display(void)
+ {
+ struct my_display dpy;
+
+ dpy.x11 = XOpenDisplay(NULL);
+ if (!dpy.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_KHR_PLATFORM_X11
+ dpy.egl = eglGetPlatformDisplay(EGL_PLATFORM_X11_KHR, dpy.x11, NULL);
+ #else
+ dpy.egl = eglGetDisplay(dpy.x11);
+ #endif
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ return dpy;
+ }
+
+ static struct my_config
+ get_config(struct my_display dpy)
+ {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE, 32,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+
+ EGL_DEPTH_SIZE, EGL_DONT_CARE,
+ EGL_STENCIL_SIZE, EGL_DONT_CARE,
+
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PIXMAP_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglChooseConfig(dpy.egl,
+ egl_config_attribs,
+ &config.egl, 1,
+ &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ XVisualInfo x11_visual_info_template;
+ if (!eglGetConfigAttrib(dpy.egl,
+ config.egl,
+ EGL_NATIVE_VISUAL_ID,
+ (EGLint*) &x11_visual_info_template.visualid)) {
+ abort();
+ }
+
+ int num_visuals;
+ config.x11 = XGetVisualInfo(dpy.x11,
+ VisualIDMask,
+ &x11_visual_info_template,
+ &num_visuals);
+ if (!config.x11) {
+ abort();
+ }
+
+ config.colormap = XCreateColormap(dpy.x11,
+ RootWindow(dpy.x11, 0),
+ config.x11->visual,
+ AllocNone);
+ if (config.colormap == None) {
+ abort();
+ }
+
+ return config;
+ }
+
+ static struct my_window
+ get_window(struct my_config config)
+ {
+ XSetWindowAttributes attr;
+ unsigned long mask;
+
+ struct my_window window = {
+ .config = config,
+ };
+
+ attr.colormap = config.colormap;
+ mask = CWColormap;
+
+ window.x11 = XCreateWindow(config.dpy.x11,
+ DefaultRootWindow(config.dpy.x11), // parent
+ 0, 0, // x, y
+ 256, 256, // width, height
+ 0, // border_width
+ config.x11->depth,
+ InputOutput, // class
+ config.x11->visual,
+ mask, // valuemask
+ &attr); // attributes
+ if (!window.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_KHR_PLATFORM_X11
+ window.egl = eglCreatePlatformWindowSurface(config.dpy.egl,
+ config.egl,
+ &window.x11,
+ NULL);
+ #else
+ window.egl = eglCreateWindowSurface(config.dpy.egl,
+ config.egl,
+ window.x11,
+ NULL);
+ #endif
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ static struct my_pixmap
+ get_pixmap(struct my_config config)
+ {
+ struct my_pixmap pixmap = {
+ .config = config,
+ };
+
+ pixmap.x11 = XCreatePixmap(config.dpy.x11,
+ DefaultRootWindow(config.dpy.x11),
+ 256, 256, // width, height
+ config.x11->depth);
+ if (!pixmap.x11) {
+ abort();
+ }
+
+ #ifdef USE_EGL_KHR_PLATFORM_X11
+ pixmap.egl = eglCreatePlatformPixmapSurface(config.dpy.egl,
+ config.egl,
+ &pixmap.x11,
+ NULL);
+ #else
+ pixmap.egl = eglCreatePixmapSurface(config.dpy.egl,
+ config.egl,
+ pixmap.x11,
+ NULL);
+ #endif
+
+ if (pixmap.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return pixmap;
+ }
+
+ int
+ main(void)
+ {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+ struct my_pixmap pixmap = get_pixmap(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 3, 2014/02/18 (Chad Versace)
+ - Update text to reflect resolution of issue #1. State that
+ <native_display> may be EGL_DEFAULT_DISPLAY.
+ - Explain in more detail how EGL connects to the default X11 display.
+ - Add and resolve issue #2.
+
+ Version 2, 2014/02/11 (Chad Versace)
+ - Fix 2nd argument to XCreatePixmap in example code.
+
+ Version 1, 2014/01/22 (Jon Leech)
+ - Promote EGL_EXT_platform_x11 to KHR to go with EGL 1.5.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_reusable_sync.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_reusable_sync.txt
new file mode 100644
index 0000000..df49175
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_reusable_sync.txt
@@ -0,0 +1,575 @@
+Name
+
+ KHR_reusable_sync
+
+Name Strings
+
+ EGL_KHR_reusable_sync
+
+Contributors
+
+ Acorn Pooley
+ Gary King
+ Gregory Prisament
+ Jon Leech
+ Robert Palmer
+
+Contacts
+
+ Acorn Pooley, NVIDIA Corporation (apooley 'at' nvidia.com)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+ Gregory Prisament, NVIDIA Corporation (gprisament 'at' nvidia.com)
+ Jon Leech (jon 'at' alumni.caltech.edu)
+ Robert Palmer (robert.palmer 'at' nokia.com)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on August 28, 2009.
+
+Version
+
+ Version 22, January 31, 2014
+
+Number
+
+ EGL Extension #6
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension introduces the concept of "sync objects" into EGL.
+ Sync objects are a synchronization primitive, representing events
+ whose completion can be tested or waited upon. This extension
+ borrows from the GL_ARB_sync extension but introduces a type of sync
+ object known as "reusable sync object" comparable to an OS
+ semaphore. The specification is designed to allow additional types of
+ sync objects to be easily introduced in later extensions.
+
+ Reusable sync objects may be used to synchronize activity between
+ threads or between client APIs. Synchronization is accomplished by
+ explicitly changing the status of a reusable object using EGL API
+ commands.
+
+New Types
+
+ /*
+ * EGLSyncKHR is an opaque handle to an EGL sync object
+ */
+ typedef void* EGLSyncKHR;
+
+ /*
+ * EGLTimeKHR is a 64-bit unsigned integer representing intervals
+ * in nanoseconds.
+ */
+ #include <khrplatform.h>
+ typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+
+
+New Procedures and Functions
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ EGLBoolean eglDestroySyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ EGLint eglClientWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags,
+ EGLTimeKHR timeout);
+
+ EGLBoolean eglSignalSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLenum mode);
+
+ EGLBoolean eglGetSyncAttribKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint attribute,
+ EGLint *value);
+
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSyncKHR, and returned
+ in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_REUSABLE_KHR 0x30FA
+
+ Accepted by the <attribute> parameter of eglGetSyncAttribKHR:
+
+ EGL_SYNC_TYPE_KHR 0x30F7
+ EGL_SYNC_STATUS_KHR 0x30F1
+
+ Accepted by the <mode> parameter of eglSignalSyncKHR and returned in
+ <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_STATUS_KHR:
+
+ EGL_SIGNALED_KHR 0x30F2
+ EGL_UNSIGNALED_KHR 0x30F3
+
+ Accepted in the <flags> parameter of eglClientWaitSyncKHR:
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+
+ Accepted in the <timeout> parameter of eglClientWaitSyncKHR:
+
+ EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+
+ Returned by eglClientWaitSyncKHR:
+
+ EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+ EGL_CONDITION_SATISFIED_KHR 0x30F6
+
+ Returned by eglCreateSyncKHR in the event of an error:
+
+ EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add a new subsection at the end of Section 3.8, page 43
+ (Synchronization Primitives)
+
+ "3.8.1 Sync Objects
+
+ In addition to the aforementioned synchronization functions, which
+ provide an efficient means of serializing client and native API
+ operations within a thread, <sync objects> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon by
+ application threads.
+
+ Sync objects have a status with two possible states: <signaled> and
+ <unsignaled>. Initially, sync objects are unsignaled. EGL may be
+ asked to wait for a sync object to become signaled, or a sync
+ object's status may be queried.
+
+ Depending on the type of a sync object, its status may be changed
+ either by an external event, or by explicitly signaling and
+ unsignaling the sync.
+
+ Sync objects are associated with an EGLDisplay when they are
+ created, and have <attributes> defining additional aspects of the
+ sync object. All sync objects include attributes for their type and
+ their status. Additional attributes are discussed below
+ for different types of sync objects.
+
+ <Reusable sync objects> are created in the unsignaled state, and may
+ be signaled and/or unsignaled repeatedly. Every transition of a
+ reusable sync object's status from unsignaled to signaled will
+ release any threads waiting on that sync object.
+
+ The command
+
+ EGLSyncKHR eglCreateSyncKHR(
+ EGLDisplay dpy,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ creates a sync object of the specified <type> associated with the
+ specified display <dpy>, and returns a handle to the new object.
+ <attrib_list> is an attribute-value list specifying other attributes
+ of the sync object, terminated by an attribute entry EGL_NONE.
+ Attributes not specified in the list will be assigned their default
+ values.
+
+ If <type> is EGL_SYNC_REUSABLE_KHR, a reusable sync object is
+ created. In this case <attrib_list> must be NULL or empty
+ (containing only EGL_NONE). Attributes of the reusable sync object
+ are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ --------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_REUSABLE_KHR
+ EGL_SYNC_STATUS_KHR EGL_UNSIGNALED_KHR
+
+ Errors
+ ------
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
+ generated.
+ * If <attrib_list> is neither NULL nor empty (containing only
+ EGL_NONE), EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE
+ error is generated.
+ * If <type> is not a supported type of sync object,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+ The command
+
+ EGLint eglClientWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags,
+ EGLTimeKHR timeout);
+
+ blocks the calling thread until the specified sync object <sync> is
+ signaled, or until <timeout> nanoseconds have passed.
+
+ More than one eglClientWaitSyncKHR may be outstanding on the same
+ <sync> at any given time. When there are multiple threads blocked on
+ the same <sync> and the sync object is signaled, all such threads
+ are released, but the order in which they are released is not
+ defined.
+
+ If the value of <timeout> is zero, then eglClientWaitSyncKHR simply
+ tests the current status of <sync>. If the value of <timeout> is the
+ special value EGL_FOREVER_KHR, then eglClientWaitSyncKHR does not
+ time out. For all other values, <timeout> is adjusted to the closest
+ value allowed by the implementation-dependent timeout accuracy,
+ which may be substantially longer than one nanosecond.
+
+ eglClientWaitSyncKHR returns one of three status values describing
+ the reason for returning. A return value of EGL_TIMEOUT_EXPIRED_KHR
+ indicates that the specified timeout period expired before <sync>
+ was signaled, or if <timeout> is zero, indicates that <sync> is
+ not signaled. A return value of EGL_CONDITION_SATISFIED_KHR
+ indicates that <sync> was signaled before the timeout expired, which
+ includes the case when <sync> was already signaled when
+ eglClientWaitSyncKHR was called. If an error occurs then an error is
+ generated and EGL_FALSE is returned.
+
+ If the EGL_SYNC_FLUSH_COMMANDS_BIT_KHR bit is set in
+ <flags>, and <sync> is unsignaled when eglClientWaitSyncKHR is
+ called, then the equivalent of Flush() will be performed for the
+ current API context (i.e., the context returned by
+ eglGetCurrentContext()) before blocking on <sync>. If no context is
+ current for the bound API, the EGL_SYNC_FLUSH_COMMANDS_BIT_KHR bit
+ is ignored.
+
+ If a sync object is destroyed while an eglClientWaitSyncKHR is
+ blocking on that object, eglClientWaitSyncKHR will unblock and
+ return immediately, just as if the sync object had been signaled
+ prior to being destroyed.
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the EGLDisplay passed to
+ eglCreateSyncKHR when <sync> was created, the behaviour is
+ undefined.
+
+
+ The command
+
+ EGLBoolean eglSignalSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLenum mode);
+
+ signals or unsignals the reusable sync object <sync> by changing its
+ status to <mode>, which must be one of the values in table 3.bb. If
+ as a result of calling eglSignalSyncKHR the status of <sync>
+ transitions from unsignaled to signaled, any eglClientWaitSyncKHR
+ commands blocking on <sync> will unblock.
+
+ Assuming no errors are generated, EGL_TRUE is returned.
+
+ Mode Effect
+ ------------------ -------------
+ EGL_SIGNALED_KHR Set the status of <sync> to signaled
+ EGL_UNSIGNALED_KHR Set the status of <sync> to unsignaled
+
+ Table 3.bb Modes Accepted by eglSignalSyncKHR Command
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If the type of <sync> is not EGL_SYNC_REUSABLE_KHR, EGL_FALSE is
+ returned and an EGL_BAD_MATCH error is generated.
+ * If <dpy> does not match the EGLDisplay passed to
+ eglCreateSyncKHR when <sync> was created, the behaviour is
+ undefined.
+
+
+ The command
+
+ EGLBoolean eglGetSyncAttribKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint attribute,
+ EGLint *value);
+
+ is used to query attributes of the sync object <sync>. Legal values
+ for <attribute> depend on the type of sync object, as shown in table
+ 3.cc. Assuming no errors are generated, EGL_TRUE is returned and the
+ value of the queried attribute is returned in <value>.
+
+ Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ----------------------
+ EGL_SYNC_TYPE_KHR Type of the sync object All
+ EGL_SYNC_STATUS_KHR Status of the sync object All
+
+ Table 3.cc Attributes Accepted by eglGetSyncAttribKHR Command
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined.
+ * If <attribute> is not one of the attributes in table 3.cc,
+ EGL_FALSE is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+ * If <attribute> is not supported for the type of sync object
+ passed in <sync>, EGL_FALSE is returned and an EGL_BAD_MATCH
+ error is generated.
+
+ If any error occurs, <*value> is not modified.
+
+ The command
+
+ EGLBoolean eglDestroySyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync);
+
+ is used to destroy an existing sync object. If any
+ eglClientWaitSyncKHR commands are blocking on <sync> when
+ eglDestroySyncKHR is called, they will be woken up, as if <sync>
+ were signaled.
+
+ If no errors are generated, EGL_TRUE is returned, and <sync> will no
+ longer be the handle of a valid sync object.
+
+ Errors
+ ------
+
+ * If <sync> is not a valid sync object for <dpy>, EGL_FALSE is
+ returned and an EGL_BAD_PARAMETER error is generated.
+ * If <dpy> does not match the display passed to eglCreateSyncKHR
+ when <sync> was created, the behaviour is undefined."
+
+Issues
+
+ Note about the Issues
+ ---------------------
+ The wording for this extension was originally written as a single
+ extension defining two types of sync object; a "reusable sync
+ object" and a "fence sync object". That extension was split to
+ produce standalone extensions for each type of sync object, and
+ references to the other type removed from the specification
+ language. This issues list has been simplied to remove references to
+ fence sync objects but is otherwise very similar to the
+ EGL_KHR_fence_sync extension issues list.
+
+ 1. Explain the key choices made in this extension.
+
+ RESPONSE: This extension has been written to enable adoption to be
+ as wide as possible, and to behave as similarly as possible to
+ synchronization primitives available in desktop OpenGL (e.g.,
+ NV_fence, ARB_sync).
+
+ In the interest of enabling widespread adoption, this extension
+ (following the ARB_sync model) has foregone the inclusion of
+ synchronization primitives and synchronization tests which may be
+ performed entirely inside client API command streams, instead
+ performing synchronization tests (eglClientWaitSyncKHR) inside the
+ application & host CPU.
+
+ In the interest of maintaining similarity with previous
+ synchronization primitives, this extension attempts to copy the
+ ARB_sync specification wherever possible (both functionally and
+ stylistically), only making changes where needed to operate inside
+ EGL (rather than a client API context) and match EGL naming
+ conventions.
+
+ 2. Why place this behavior in EGL, rather than in the client APIs?
+
+ RESPONSE: Ultimately, synchronization between multiple asynchronous
+ client API contexts (potentially executing in different threads) is
+ a problem which affects or will affect all EGL client APIs. Rather
+ than creating separate synchronization primitives in each of the
+ client APIs (and then wrapping them in an EGL container), in the
+ interest of developer simplicity & consistency this behavior is
+ being placed inside EGL.
+
+ 3. What does this extension provide that can not be accomplished
+ with the existing, more efficient eglWaitClient and eglWaitNative
+ API functions?
+
+ RESPONSE: eglWaitClient and eglWaitNative may be implemented in
+ extremely lightweight manners, in some cases not blocking the
+ calling thread at all; however, they can not be used to synchronize
+ between client API contexts and native APIs executing in separate
+ threads (or simply between client API contexts executing in separate
+ threads), such as between a thread with an active OpenGL context and
+ a second thread performing video decode.
+
+ 4. [REMOVED - found in the fence_sync extension.]
+
+ 5. Should integration with native platform synchronization objects
+ be included in this extension, or reserved for future
+ (platform-specific) extensions?
+
+ RESOLVED: Integration with native platform synchronization objects
+ should not be part of this extension, but can be added as future
+ layered extensions if needed. These layered extensions can be
+ platform-specific, or perhaps OpenKODE based.
+
+ Originally, this extension included the ability to create native
+ platform synchronization objects from EGLSync objects. This feature
+ was removed for a few reasons:
+
+ i) The proposed mechanism suggested mapping EGLSync objects to
+ pthread conditional variables on platforms with pthread support.
+ However, pthread conditional variables require an associated
+ mutex and there was no mechanism to relay this associated mutex
+ to the application.
+
+ ii) On certain platforms support for converting to native
+ platform synchronization objects adds great complexity to the
+ implementation.
+
+ iii) Now that OpenKODE is more mature, it would be better to
+ allow conversion from EGLSyncKHR objects to OpenKODE
+ synchronization primitives rather than platform-specific ones.
+ We suggest that this functionality, if needed, be added as a
+ layered extension instead of being included here. This way,
+ EGL_KHR_sync remains minimal and easy to implement on a variety
+ of platforms.
+
+ 6. Please provide a more detailed description of how
+ eglClientWaitSyncKHR behaves.
+
+ RESOLVED: eglClientWaitSyncKHR blocks until the status of the sync
+ object transitions to the signaled state. Sync object status is
+ either signaled or unsignaled. More detailed rules describing
+ signalling follow (these may need to be imbedded into the actual
+ spec language):
+
+ * A reusable sync object has two possible status values: signaled
+ or unsignaled.
+ * When created, the status of the sync object is unsignaled by
+ default.
+ * A reusable sync can be set to signaled or unsignaled
+ status using eglSignalSyncKHR.
+ * A wait function called on a sync object in the unsignaled state
+ will block. It unblocks (note, not "returns to the application")
+ when the sync object transitions to the signaled state.
+ * A wait function called on a sync object in the signaled state
+ will return immediately.
+
+ 7. Should the 'flags' argument to eglClientWaitSyncKHR be
+ EGLint or EGLuint?
+
+ RESOLVED: EGLint, setting a precedent for explicit bitmask types
+ in EGL going forward. We don't have an EGLuint type and it is
+ overkill for this purposes when other bitmasks (surface type
+ and api type) are already using EGLint attribute fields.
+
+ 8. Can multiple WaitSyncs be placed on the same sync object?
+
+ RESOLVED: Yes. This has been allowed all along but we now state it
+ more clearly in the spec language. However, there is some concern
+ that this is hard to implement and of limited use, and we might
+ remove this capability before approving the extension.
+
+ One way to do this while allowing multiple waiters at some future
+ point is to expose it through the API to developers as either a sync
+ attribute allowing multiple waits (default not allowing it), or a
+ parameter to WaitSync, which initially must be something like
+ EGL_SINGLE_WAIT_ONLY.
+
+ 9. Should eglDestroySyncKHR release all WaitSyncs placed on a
+ reusable sync object?
+
+ RESOLVED: Yes. It is safest to release all threads waiting on a
+ reusable object when the sync object is deleted so that waiting
+ threads do not wait forever.
+
+Revision History
+
+#22 (Jon Leech, January 31, 2014)
+ - Clarify return value of ClientWaitSyncKHR when called with <timeout>
+ of zero for an unsignaled <sync> (Bug 11576).
+#21 (Jon Leech, April 23, 2013)
+ - Simplify issues list to remove issues specific to fence sync
+ objects.
+#20 (Jon Leech, September 8, 2009)
+ - Change status to complete and note approval by the Promoters.
+ Minor formatting changes.
+#19 (Robert Palmer, July 14, 2009)
+ - Branch wording from draft KHR_sync specification. Remove ability
+ to create "fence sync objects and all tokens/wording specific to
+ them.
+#18 (Robert Palmer, July 8, 2009)
+ - Issues 8 and 9 declared resolved in EGL meeting 2009-07-08
+#17 (Robert Palmer, July 8, 2009)
+ - Update eglDestroySyncKHR to special-case deletion of fence sync
+ objects. This is explained in issue 9.
+ - Corrected EGL_REUSABLE_SYNC_KHR -> EGL_SYNC_REUSABLE_KHR
+ - Define value for EGL_SYNC_REUSABLE_KHR
+ - Fix typo and whitespace
+#16 (Jon Leech, July 7, 2009)
+ - Update description of new tokens to match changes to the
+ eglCreateSyncKHR entry point in revision 15.
+#15 (Jon Leech, June 16, 2009)
+ - Define separate one-time fence sync and reusable sync extensions
+ and corresponding extension strings. Remove AUTO_RESET and
+ eglFenceKHR. Rename eglCreateFenceSyncKHR to eglCreateSyncKHR and
+ change initial status of reusable syncs to unsignaled. Clarify
+ which functions apply to which types of sync objects. Update
+ issues list.
+#14 (Jon Leech, April 29, 2009)
+ - Clarify that all waiters are woken up on signalling a sync.
+ Remove tabs to cleanup some formatting issues.
+#13 (Acorn Pooley, April 2, 2009)
+ - Renamed
+ GL_OES_egl_sync -> GL_OES_EGL_sync
+ VG_KHR_egl_sync -> VG_KHR_EGL_sync
+#12 (Jon Leech, April 1, 2009)
+ - Changed sync flags type from EGLuint to EGLint and add issue 7.
+#11 (Acorn Pooley, February 4, 2009)
+ - add error case to eglGetSyncAttribKHR.
+ - fix year on rev 8-10 (2008->2009)
+#10 (Acorn Pooley, February 4, 2009)
+ - clarify some error message descriptions
+#9 (Greg Prisament, January 15, 2009)
+ - Destroy now wakes up all waits (eglClientWaitSyncKHR)
+ - Add EGLDisplay <dpy> as first parameter to all commands
+ - Split into 3 extension strings, EGL_KHR_sync, GL_OES_egl_sync,
+ VG_KHR_egl_sync, all described in this document.
+ - Add attribute AUTO_RESET_KHR
+ - Time type uses the type from khrplatform.h
+ - Remove EGL_ALREADY_SIGNALLED
+#8 (Jon Leech, November 11, 2009)
+ - Assign enum values
+#7 (Acorn Pooley, October 30, 2008)
+ - Fix typos
+ - remove obsolete wording about Native sync objects (see issue 5)
+ - formatting: remove tabs, 80 columns
+#6 (Acorn Pooley, October 27, 2008)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#5 (Jon Leech, September 9, 2008)
+ - Removed native sync support (eglCreateNativeSyncKHR and
+ EGL_SYNC_NATIVE_SYNC_KHR), and re-flowed spec to fit in 80 columns.
+#4 (Jon Leech, November 20, 2007)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#3 (Jon Leech, April 5, 2007)
+ - Added draft Status and TBD Number
+#2 (November 27, 2006)
+ - Changed OES token to KHR
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream.txt
new file mode 100644
index 0000000..34ebc13
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream.txt
@@ -0,0 +1,1091 @@
+Name
+
+ KHR_stream
+ KHR_stream_attrib
+
+Name Strings
+
+ EGL_KHR_stream
+ EGL_KHR_stream_attrib
+
+Contributors
+
+ Marcus Lorentzon
+ Acorn Pooley
+ Robert Palmer
+ Greg Prisament
+ Daniel Kartch
+ Miguel A. Vico Moya
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+ Marcus Lorentzon, ST-Ericsson AB (marcus.xm.lorentzon 'at' stericsson.com)
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2009-2016 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 27 - May 23, 2016
+
+Number
+
+ EGL Extension #32
+
+Dependencies
+
+ EGL_KHR_stream requires EGL 1.2.
+
+ EGL_KHR_stream_attrib requires EGL_KHR_stream and EGL 1.5.
+
+ EGL_KHR_stream_attrib interacts with
+ EGL_KHR_stream_consumer_gltexture.
+
+ This extension is written based on the wording of the EGL 1.2
+ specification.
+
+Overview
+
+ This extension defines a new object, the EGLStream, that can be
+ used to efficiently transfer a sequence of image frames from one
+ API to another. The EGLStream has mechanisms that can help keep
+ audio data synchronized to video data.
+
+ Each EGLStream is associated with a "producer" that generates
+ image frames and inserts them into the EGLStream. The producer is
+ responsible for inserting each image frame into the EGLStream at
+ the correct time so that the consumer can display the image frame
+ for the appropriate period of time.
+
+ Each EGLStream is also associated with a "consumer" that
+ retrieves image frames from the EGLStream. The consumer is
+ responsible for noticing that an image frame is available and
+ displaying it (or otherwise consuming it). The consumer is also
+ responsible for indicating the latency when that is possible (the
+ latency is the time that elapses between the time it is retrieved
+ from the EGLStream until the time it is displayed to the user).
+
+ Some APIs are stream oriented (examples: OpenMAX IL, OpenMAX AL).
+ These APIs may be connected directly to an EGLStream as a producer
+ or consumer. Once a stream oriented producer is "connected" to an
+ EGLStream and "started" it may insert image frames into the
+ EGLStream automatically with no further interaction from the
+ application. Likewise, once a stream oriented consumer is
+ "connected" to an EGLStream and "started" it may retrieve image
+ frames from the EGLStream automatically with no further interaction
+ from the application.
+
+ Some APIs are rendering oriented and require interaction with the
+ application during the rendering of each frame (examples: OpenGL,
+ OpenGL ES, OpenVG). These APIs will not automatically insert or
+ retrieve image frames into/from the EGLStream. Instead the
+ application must take explicit action to cause a rendering
+ oriented producer to insert an image frame or to cause a rendering
+ oriented consumer to retrieve an image frame.
+
+ The EGLStream conceptually operates as a mailbox. When the
+ producer has a new image frame it empties the mailbox (discards
+ the old contents) and inserts the new image frame into the
+ mailbox. The consumer retrieves the image frame from the mailbox
+ and examines it. When the consumer is finished examining the
+ image frame it is either placed back in the mailbox (if the
+ mailbox is empty) or discarded (if the mailbox is not empty).
+
+ Timing is mainly controlled by the producer. The consumer
+ operated with a fixed latency that it indicates to the producer
+ through the EGL_CONSUMER_LATENCY_USEC_KHR attribute. The consumer
+ is expected to notice when a new image frame is available in the
+ EGLStream, retrieve it, and display it to the user in the time
+ indicated by EGL_CONSUMER_LATENCY_USEC_KHR. The producer controls
+ when the image frame will be displayed by inserting it into the
+ stream at time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+ where T is the time that the image frame is intended to appear to
+ the user.
+
+ This extension does not cover the details of how a producer or a
+ consumer works or is "connected" to an EGLStream. Different kinds
+ of producers and consumers work differently and are described in
+ additional extension specifications. (Examples of producer
+ specifications:
+ EGL_KHR_stream_producer_eglsurface
+ EGL_KHR_stream_producer_aldatalocator
+ OpenMAX_AL_EGLStream_DataLocator
+ Example of consumer extension specification:
+ EGL_KHR_stream_consumer_gltexture
+ )
+
+
+Glossary
+
+ EGLStream
+ An EGL object that transfers a sequence of image frames from one
+ API to another (e.g. video frames from OpenMAX AL to OpenGL ES).
+
+ Image frame
+ A single image in a sequence of images. The sequence may be
+ frames of video data decoded from a video file, images output by a
+ camera sensor, surfaces rendered using OpenGL ES commands, or
+ generated in some other manner. An image frame has a period of
+ time during which it is intended to be displayed on the screen
+ (starting with the "Image Frame Display Time" and ending with the
+ "Image Frame Display Time" of the next image frame in the
+ sequence).
+
+ Image Frame Insertion Time
+ The point in time when the producer inserts the image frame into
+ the EGLStream. This is the "Image Frame Intended Display Time"
+ minus the "Consumer Latency".
+
+ Image Frame Intended Display Time
+ The point in time when the user should first see the image frame
+ on the display screen.
+
+ Image Frame Actual Display Time
+ The point in time when the user actually first sees the image frame
+ on the display screen.
+
+ Consumer Latency
+ The elapsed time between an image frame's "Image Frame Insertion
+ Time" and its "Image Frame Actual Display Time". The consumer is
+ responsible for predicting this and indicating its value to the
+ EGLStream. The producer is responsible for using this value to
+ calculate the "Image Frame Insertion Time" for each image frame.
+ The application has access to this value through the
+ EGL_CONSUMER_LATENCY_USEC attribute.
+
+ Producer
+ The entity that inserts image frames into the EGLStream. The
+ producer is responsible for timing: it must insert image frames at
+ a point in time equal to the "Image Frame Intended Display Time"
+ minus the "Consumer Latency".
+
+ Consumer
+ The entity that retrieves image frames from the EGLStream. When
+ the image frames are to be displayed to the user the consumer is
+ responsible for calculating the "Consumer Latency" and reporting
+ it to the EGLSteam.
+
+ State (stream state)
+ At any given time an EGLStream is in one of several states. See
+ section "3.10.4.3 EGL_STREAM_STATE_KHR Attribute" in this
+ extension for a description of the states and what transitions
+ occur between them.
+
+New Types
+
+ This is the type of a handle that represents an EGLStream object.
+
+ typedef void* EGLStreamKHR;
+
+ This is a 64 bit unsigned integer.
+
+ typedef khronos_uint64_t EGLuint64KHR;
+
+New functions defined by EGL_KHR_stream
+
+ EGLStreamKHR eglCreateStreamKHR(
+ EGLDisplay dpy,
+ const EGLint *attrib_list);
+
+ EGLBoolean eglDestroyStreamKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ EGLBoolean eglStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLint value);
+
+ EGLBoolean eglQueryStreamKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLint *value);
+
+ EGLBoolean eglQueryStreamu64KHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLuint64KHR *value);
+
+New functions defined by EGL_KHR_stream_attrib
+
+ EGLStreamKHR eglCreateStreamAttribKHR(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list);
+
+ EGLBoolean eglSetStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLAttrib value);
+
+ EGLBoolean eglQueryStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLAttrib *value);
+
+ EGLBoolean eglStreamConsumerAcquireAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream
+ const EGLAttrib *attrib_list);
+
+ EGLBoolean eglStreamConsumerReleaseAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ const EGLAttrib *attrib_list);
+
+New Tokens
+
+ This value is returned from eglCreateStreamKHR in the case of an
+ error. It is an error to attempt to use this value as a parameter
+ to any EGL or client API function.
+
+ EGL_NO_STREAM_KHR ((EGLStreamKHR)0)
+
+ This enum is accepted as an attribute in the <attrib_list> parameter
+ of eglCreateStreamKHR and as the <attribute> parameter of
+ eglStreamAttribKHR, eglSetStreamAttribKHR, eglQueryStreamKHR and
+ eglQueryStreamAttribKHR.
+
+ EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+
+ These enums are accepted as the <attribute> parameter of
+ eglQueryStreamu64KHR.
+
+ EGL_PRODUCER_FRAME_KHR 0x3212
+ EGL_CONSUMER_FRAME_KHR 0x3213
+
+ This enum is accepted as the <attribute> parameter of
+ eglQueryStreamKHR and eglQueryStreamAttribKHR.
+
+ EGL_STREAM_STATE_KHR 0x3214
+
+ Returned in the <value> parameter of eglQueryStreamKHR or
+ eglQueryStreamAttribKHR when <attribute> is EGL_STREAM_STATE.
+
+ EGL_STREAM_STATE_CREATED_KHR 0x3215
+ EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+ EGL_STREAM_STATE_EMPTY_KHR 0x3217
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+ EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+
+ These errors may be generated by EGLStream calls.
+
+ EGL_BAD_STREAM_KHR 0x321B
+ EGL_BAD_STATE_KHR 0x321C
+
+Add a new section "2.5 Streams" after section "2.4 Shared State"
+
+ EGL allows efficient interoperation between APIs through the
+ EGLStream object. An EGLStream represents a sequence of image
+ frames.
+
+ Each EGLStream is associated with a producer that generates image
+ frames and inserts them into the EGLStream. Each EGLStream is
+ also associated with a consumer that retrieves image frames from
+ the EGLStream.
+
+Add a new section "3.10 EGLStreams" after section "3.9 Posting the
+Color Buffer"
+
+ 3.10 EGLStreams
+
+ EGL provides functions to create and destroy EGLStreams, for
+ querying and setting attributes of EGLStreams, and for connecting
+ EGLStreams to producers and consumers.
+
+ Each EGLStream may be connected to only one producer and one
+ consumer. Once an EGLStream is connected to a consumer, it will
+ be connected to that consumer until the EGLStream is destroyed.
+ Likewise, once an EGLStream is connected to a producer it will be
+ connected to that producer until the EGLStream is destroyed.
+ Further semantics are described for each type of consumer and
+ producer that can be connected.
+
+Add subsection 3.10.1 to section "3.10 EGLStreams"
+
+ 3.10.1 Creating an EGLStream
+
+ Call
+
+ EGLStreamKHR eglCreateStreamKHR(
+ EGLDisplay dpy,
+ const EGLint *attrib_list);
+
+ to create a new EGLStream. <dpy> specifies the EGLDisplay used for
+ this operation. The function returns a handle to the created
+ EGLStream.
+
+ The EGLStream cannot be used until it has been connected to a
+ consumer and then to a producer (refer to section "3.10.2
+ Connecting an EGLStream to a consumer" and section "3.10.3
+ Connecting an EGLStream to a producer"). It must be connected to
+ a consumer before being connected to a producer.
+
+ There is no way for the application to query the size,
+ colorformat, or number of buffers used in the EGLStream (although
+ these attributes may be available from the producer's API or the
+ consumer's API depending on what type of producer/consumer is
+ connected to the EGLStream).
+
+ The parameter <attrib_list> contains a list of attributes and
+ values to set for the EGLStream. Attributes not in the list are
+ set to default values. EGLStream attributes are described in
+ section "3.10.4 EGLStream Attributes".
+
+ If an error occurs eglCreateStreamKHR will return
+ EGL_NO_STREAM_KHR and generate an error.
+
+ - EGL_BAD_ATTRIBUTE is generated if any of the parameters in
+ attrib_list is not a valid EGLStream attribute.
+
+ - EGL_BAD_ACCESS is generated if any of the parameters in
+ attrib_list is read only.
+
+ - EGL_BAD_PARAMETER is generated if any of the values in
+ attrib_list is outside the valid range for the attribute.
+
+ - EGL_BAD_ALLOC is generated if not enough resources are
+ available to create the EGLStream.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+If EGL_KHR_stream_attrib is present, add to the end of this section
+
+ Streams may also be created by calling
+
+ EGLStreamKHR eglCreateStreamAttribKHR(
+ EGLDisplay dpy,
+ const EGLAttrib *attrib_list);
+
+ This is equivalent to eglCreateStreamKHR, but allows pointer
+ and handle attributes to be provided on 64-bit systems.
+
+Add section 3.10.2 to section "3.10 EGLStreams"
+
+ 3.10.2 Connecting an EGLStream to a consumer.
+
+ Before using an EGLStream it must be connected to a consumer.
+
+ Refer to sections 3.10.2.1 and following for different ways to
+ connect a consumer to an EGLStream.
+
+ Once an EGLStream is connected to a consumer it will remain
+ connected to the same consumer until the EGLStream is destroyed.
+
+ If the consumer is destroyed then the EGLStream's state will
+ become EGL_STREAM_STATE_DISCONNECTED_KHR.
+
+ Any attempt to connect an EGLStream which is not in state
+ EGL_STREAM_STATE_CREATED_KHR will fail and generate an
+ EGL_BAD_STATE_KHR error.
+
+ When an EGLStream is connected to a consumer its state becomes
+ EGL_STREAM_STATE_CONNECTING_KHR.
+
+ 3.10.2.1 No way to connect consumer to EGLStream
+
+ EGL does not currently define any mechanisms to connect a consumer
+ to an EGLStream. These will be added via additional extensions.
+
+ (Example: See extension specification
+ EGL_KHR_stream_consumer_gltexture)
+
+If EGL_KHR_stream_attrib is present, add to the end of this section
+
+ 3.10.2.2 Acquiring and releasing consumer frames
+
+ Methods for acquiring frames from a stream and releasing them back
+ to a stream are dependent on the type of consumer. Some consumers
+ support calling
+
+ EGLBoolean eglStreamConsumerAcquireAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream
+ const EGLAttrib *attrib_list);
+
+ to acquire the next available frame in <stream> and
+
+ EGLBoolean eglStreamConsumerReleaseAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ const EGLAttrib *attrib_list);
+
+ to release a frame back to the stream.
+
+ Not all consumers are required to support either or both of these
+ functions. Where supported, the specific behavior is defined by the
+ consumer type, and may be affected by the contents of <attrib_list>.
+ <attrib_list> must either be NULL or a pointer to a list of
+ name/value pairs terminated by EGL_NONE. Valid attributes are
+ listed in tables 3.10.2.1 and 3.10.2.2.
+
+ Attribute Type Section
+ ------------------------ ---------- -------
+ Currently no acquire attributes are defined
+
+ Table 3.10.2.1 EGLStream Consumer Acquire Attributes
+
+ Attribute Type Section
+ ------------------------ ---------- -------
+ Currently no release attributes are defined
+
+ Table 3.10.2.2 EGLStream Consumer Release Attributes
+
+ If no new image frame is available in the stream,
+ eglStreamConsumerAcquireAtrribKHR may block, retrieve an old frame,
+ or return an error, as defined by the type of consumer. If one or
+ more image frames are already acquired by the consumer when
+ eglStreamConsumerAcquireAttribKHR is called, the behavior is
+ determined by the type of consumer.
+
+ If successful, eglStreamConsumerAcquireAttribKHR returns EGL_TRUE
+ and an image frame from <stream> will be bound into the address
+ space of the consumer as defined for its type.
+
+ On failure, the function returns EGL_FALSE and generates an error.
+ Additionally, image objects in the consumer's address space may
+ become invalid, as determined by the consumer type.
+
+ - EGL_BAD_ACCESS is generated if the consumer of <stream> does
+ not support acquiring frames through
+ eglStreamConsumerAcquireAttribKHR.
+
+ - EGL_BAD_STATE_KHR is no frame is available for acquisition
+ after any timeout determined by the consumer.
+
+ - EGL_BAD_ATTRIBUTE is generated if an attribute name in
+ <attrib_list> is not recognized or is not supported by the
+ consumer.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ EGLDisplay.
+
+ - EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
+
+ Calling eglStreamConsumerReleaseAttribKHR will release a frame held
+ by the consumer back to the stream. If more than one frame is held
+ by the consumer, the frame returned is determined by the consumer
+ type and the contents of <attrib_list>. If no frames are currently
+ held, the behavior is determined by the consumer type. Once
+ returned, the consumer may no longer access the contents of the
+ frame, and attempts to do so will result in errors as determined by
+ the consumer type. Upon success, eglStreamConsumerReleaseAttribKHR
+ returns EGL_TRUE.
+
+ If eglStreamConsumerReleaseAttribKHR fails, EGL_FALSE is returned
+ and an error is generated.
+
+ - EGL_BAD_ACCESS is generated if the consumer of <stream> does
+ not support releasing frames through
+ eglStreamConsumerReleaseAttribKHR.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_EMPTY_KHR,
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ - EGL_BAD_ATTRIBUTE is generated if an attribute name in
+ <attrib_list> is not recognized or is not supported by the
+ consumer.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ EGLDisplay.
+
+ - EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
+
+If EGL_KHR_stream_consumer_gltexture is present in addition to
+EGL_KHR_stream_attrib, the eglStreamConsumerAcquireKHR function is
+equivalent to eglStreamConsumerAcquireAttribKHR with <attrib_list> set
+to NULL, the eglStreamConsumerReleaseKHR function is equivalent to
+eglStreamConsumerReleaseAttribKHR with <attrib_list> set to NULL, and
+the definitions provided for those functions define their behavior for
+a GL texture consumer.
+
+Add section 3.10.3 to section "3.10 EGLStreams"
+
+ 3.10.3 Connecting an EGLStream to a producer.
+
+ Before using an EGLStream it must be connected to a producer. The
+ EGLStream must be connected to a consumer before it may be
+ connected to a producer.
+
+ The size and colorformat of the images in the EGLStream are
+ determined by the EGL implementation based on the requirements of
+ the producer and the consumer. The EGL implementation may
+ determine these at the time the producer is connected to the
+ EGLStream, at the time that the first image frame is inserted into
+ the EGLStream, or any time in between (this is left up to the
+ implementation).
+
+ It is the responsibility of the producer to convert the images to
+ a form that the consumer can consume. The producer may negotiate
+ with the consumer as to what formats and sizes the consumer is
+ able to consume, but this negotiation (whether it occurs and how
+ it works) is an implementation detail. If the producer is unable
+ to convert the images to a form that the consumer can consume then
+ the attempt to connect the producer to the EGLStream will fail and
+ generate an EGL_BAD_MATCH error.
+
+ Refer to sections 3.10.3.1 and following for different ways to
+ connect a producer to an EGLStream.
+
+ Once an EGLStream is connected to a producer it will remain
+ connected to the same producer until the EGLStream is destroyed.
+ If the producer is destroyed then the EGLStream's state will
+ become EGL_STREAM_STATE_DISCONNECTED_KHR (refer to "3.10.4.3
+ EGL_STREAM_STATE_KHR Attribute").
+
+ Any attempt to connect an EGLStream which is not in state
+ EGL_STREAM_STATE_CONNECTING_KHR will fail and generate an
+ EGL_BAD_STATE_KHR error.
+
+ When an EGLStream is connected to a producer its state becomes
+ EGL_STREAM_STATE_EMPTY_KHR. At this point the producer may begin
+ inserting image frames and the consumer may begin consuming image
+ frames, so the state may immediately change to
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR and/or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ 3.10.3.1 No way to connect producer to EGLStream
+
+ EGL does not currently define any mechanisms to connect a producer
+ to an EGLStream. These will be added via additional extensions.
+
+ (For example see extension specifications
+ EGL_KHR_stream_producer_eglsurface
+ EGL_KHR_stream_producer_aldatalocator
+ OpenMAX_AL_EGLStream_DataLocator
+ .)
+
+Add section 3.10.4 to section "3.10 EGLStreams"
+
+ 3.10.4 EGLStream Attributes
+
+ Each EGLStream contains a set of attributes and values as
+ described in table 3.10.4.4. Each attribute has a type and a
+ value and is either read-only (ro), read/write (rw) or initialize
+ only (io - meaning it may be set in the attrib_list but not
+ changed once the EGLStream is created).
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------ --------
+ EGL_STREAM_STATE_KHR ro EGLint 3.10.4.3
+ EGL_PRODUCER_FRAME_KHR ro EGLuint64KHR 3.10.4.4
+ EGL_CONSUMER_FRAME_KHR ro EGLuint64KHR 3.10.4.5
+ EGL_CONSUMER_LATENCY_USEC_KHR rw EGLint 3.10.4.6
+
+ Table 3.10.4.4 EGLStream Attributes
+
+ 3.10.4.1 Setting EGLStream Attributes
+
+ Call
+
+ EGLBoolean eglStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint attribute,
+ EGLint value);
+
+ to set the value of an attribute for an EGLStream. The <value> is
+ the new value for <attribute>. Only read/write (rw) attributes
+ with type EGLint may be set with eglStreamAttribKHR (see "Table
+ 3.10.4.4 EGLStream Attributes").
+
+ If an error occurs, EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is in
+ EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ - EGL_BAD_ATTRIBUTE is generated if <attribute> is not a valid
+ EGLStream attribute.
+
+ - EGL_BAD_ACCESS is generated if <attribute> is read only.
+
+ - EGL_BAD_PARAMETER is generated if value is outside the valid
+ range for <attribute>.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+ 3.10.4.2 Querying EGLStream Attributes
+
+ Call
+
+ EGLBoolean eglQueryStreamKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint attribute,
+ EGLint *value);
+
+ to query the value of an EGLStream's attribute with type EGLint
+ and call
+
+ EGLBoolean eglQueryStreamu64KHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLuint64KHR *value);
+
+ to query the value of an EGLStream's attribute with type
+ EGLuint64KHR.
+
+ If an error occurs EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_ATTRIBUTE is generated by eglQueryStreamKHR if
+ <attribute> is not a valid EGLStream attribute with type
+ EGLint.
+
+ - EGL_BAD_ATTRIBUTE is generated by eglQueryStreamu64KHR if
+ <attribute> is not a valid EGLStream attribute with type
+ EGLuint64KHR.
+
+ 3.10.4.3 EGL_STREAM_STATE_KHR Attribute
+
+ The EGL_STREAM_STATE_KHR attribute is read only. It indicates the
+ state of the EGLStream. The EGLStream may be in one of the
+ following states:
+
+ - EGL_STREAM_STATE_CREATED_KHR - The EGLStream has been created
+ but not yet connected to a producer or a consumer.
+
+ - EGL_STREAM_STATE_CONNECTING_KHR - The EGLStream has been
+ connected to a consumer but not yet connected to a producer.
+
+ - EGL_STREAM_STATE_EMPTY_KHR - the EGLStream has been connected
+ to a consumer and a producer, but the producer has not yet
+ inserted any image frames.
+
+ - EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR - the producer has
+ inserted at least one image frame that the consumer has not
+ yet retrieved.
+
+ - EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR - the producer has
+ inserted at least one image frame, and the consumer has
+ already retrieved the most recently inserted image frame.
+
+ - EGL_STREAM_STATE_DISCONNECTED_KHR - either the producer or the
+ consumer (or both) are no longer connected to the EGLStream
+ (e.g. because they have been destroyed). Once the
+ EGLStream is in this state it will remain in this state
+ until the EGLStream is destroyed. In this state only
+ eglQueryStreamKHR and eglDestroyStreamKHR are valid
+ operations.
+
+ Only the following state transitions may occur:
+
+ -> EGL_STREAM_STATE_CREATED_KHR
+ A new EGLStream is created in this state.
+
+ EGL_STREAM_STATE_CREATED_KHR ->
+ EGL_STREAM_STATE_CONNECTING_KHR
+ Occurs when a consumer is connected to the EGLStream.
+
+ EGL_STREAM_STATE_CONNECTING_KHR ->
+ EGL_STREAM_STATE_EMPTY_KHR
+ Occurs when a producer is connected to the EGLStream.
+
+ EGL_STREAM_STATE_EMPTY_KHR ->
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ Occurs the first time the producer inserts an image frame.
+
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR
+ Occurs when the consumer begins examining a newly inserted
+ image frame.
+
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ Occurs when the producer inserts a new image frame.
+
+ * ->
+ EGL_STREAM_STATE_DISCONNECTED_KHR
+ Occurs when the producer or consumer is destroyed or is
+ otherwise unable to function normally.
+
+
+ 3.10.4.4 EGL_PRODUCER_FRAME_KHR Attribute
+
+ The EGL_PRODUCER_FRAME_KHR attribute indicates how many image
+ frames have been inserted into the EGLStream by the producer.
+ This is also known as the "frame number" of the most recently
+ inserted frame (where the first frame inserted has a frame number
+ of 1). When EGL_STREAM_STATE_KHR is EGL_STREAM_STATE_CREATED_KHR,
+ EGL_STREAM_STATE_CONNECTING_KHR, or EGL_STREAM_STATE_EMPTY_KHR
+ then this value is 0. This value will wrap back to 0 after
+ about 10 million millennia.
+
+ 3.10.4.4 EGL_CONSUMER_FRAME_KHR Attribute
+
+ The EGL_CONSUMER_FRAME_KHR attribute indicates the frame number of
+ the image frame that the consumer most recently retrieved. This is
+ the value that EGL_PRODUCER_FRAME_KHR contained just after this
+ image frame was inserted into the EGLStream.
+
+ 3.10.4.5 EGL_CONSUMER_LATENCY_USEC_KHR Attribute
+
+ This attribute indicates the number of microseconds that elapse (on
+ average) from the time that an image frame is inserted into the
+ EGLStream by the producer until the image frame is visible to the
+ user.
+
+ It is the responsibility of the consumer to set this value. Some
+ types of consumers may simply set this value to zero or an
+ implementation constant value. Other consumers may adjust this
+ value dynamically as conditions change.
+
+ It is the responsibility of the producer to use this information to
+ insert image frames into the EGLStream at an appropriate time.
+ The producer should insert each image frame into the stream at the
+ time that frame should appear to the user MINUS the
+ EGL_CONSUMER_LATENCY_USEC_KHR value. Some types of producers may
+ ignore this value.
+
+ The application may modify this value to adjust the timing of the
+ stream (e.g. to make video frames coincide with an audio track
+ under direction from a user). However the value set by the
+ application may be overridden by some consumers that dynamically
+ adjust the value. This will be noted in the description of
+ consumers which do this.
+
+If EGL_KHR_stream_attrib is present, add to the end of section "3.10.4.1
+Setting EGLStream Attributes"
+
+ Attributes may also be set by calling
+
+ EGLBoolean eglSetStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLAttrib value);
+
+ This is equivalent to eglStreamAttribKHR, but allows attributes
+ with pointer and handle types, in addition to EGLint.
+
+If EGL_KHR_stream_attrib is present, add to the end of section "3.10.4.2
+Querying EGLStream Attributes"
+
+ Attributes may also be queried by calling
+
+ EGLBoolean eglQueryStreamAttribKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLAttrib *value);
+
+ This is equivalent to eglQueryStreamKHR, but allows attributes with
+ pointer and handle types, in addition to EGLint.
+
+Add sections 3.10.5 and 3.10.6 to section "3.10 EGLStreams"
+
+ 3.10.5 EGLStream operation
+
+ 3.10.5.1 EGLStream operation in mailbox mode
+
+ The EGLStream conceptually operates as a mailbox.
+
+ When the producer has a new image frame it empties the mailbox and
+ inserts the new image frame into the mailbox. If the image frame
+ is intended to be displayed at time T then the producer must
+ insert it into the EGLStream at time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+
+ The consumer retrieves the image frame from the mailbox and
+ examines it. When the consumer is finished examining the image
+ frame it is either placed back in the mailbox (if the mailbox is
+ empty) or discarded (if the mailbox is not empty).
+
+ This operation implies 2 things:
+
+ - If the consumer consumes frames slower than the producer
+ inserts frames, then some frames may be lost (never seen by
+ the consumer).
+
+ - If the consumer consumes frames faster than the producer
+ inserts frames, then the consumer may see some frames more
+ than once.
+
+ Some details of EGLStream operation are dependent on the type of
+ producer and consumer that are connected to it. Refer to the
+ documentation for the producer and consumer for more details
+ (section 3.10.2.* and 3.10.3.*).
+
+
+ 3.10.6 Destroying an EGLStream
+
+ Call
+
+ EGLBoolean eglDestroyStreamKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ to mark an EGLStream for deletion. After this call returns the
+ <stream> will no longer be a valid stream handle. The resources
+ associated with the EGLStream may not be deleted until the
+ producer and consumer have released their references to the
+ resources (if any). Exactly how this is done is dependent on the
+ type of consumer and producer that is connected to the EGLStream.
+
+ If an error occurs, EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+
+Issues
+ 1. Are EGL_WIDTH and EGL_HEIGHT parameters needed?
+
+ RESOLVED: No. The width and height of images managed by the
+ stream are determined by the producer. No application access
+ to the size is currently required.
+
+ 2. Is EGL_BUFFER_SHOW_ALL_KHR required, or should the stream always
+ act as EGL_BUFFER_REPLACE_KHR?
+
+ RESOLVED: this has been removed. The old
+ EGL_BUFFER_SHOW_ALL_KHR behavior is described in a separate
+ extension: EGL_KHR_stream_fifo
+
+ 3. What are the exact semantics of the producer?
+
+ RESOLVED: The exact semantics vary depending on the type of
+ producer. Refer to the extension that defines the type of
+ producer for more information.
+
+ In general, the producer is responsible for inserting image
+ frames into the EGLStream at the correct time. The correct
+ time depends on how the image frames are being created and on
+ the value of EGL_CONSUMER_LATENCY_USEC_KHR.
+
+ 4. What are the exact semantics of the consumer?
+
+ RESOLVED: The exact semantics vary depending on the type of
+ consumer. Refer to the extension that defines the type of
+ consumer for more information.
+
+ In general, the consumer is responsible for retrieving image
+ frames from the EGLStream when they become available. The
+ consumer is also responsible for setting the
+ EGL_CONSUMER_LATENCY_USEC_KHR when that is possible.
+
+ 5. When will the EGLStream resources be deleted?
+
+ RESOLVED: this depends on the type of consumer and producer.
+ Refer to the description of the consumer and producer (e.g. in
+ the extension that describes them).
+
+ 6. How does A/V sync work?
+
+ RESOLVED: The producer is responsible for A/V sync, but the
+ consumer needs to help. The consumer indicates the latency
+ (the average time that it takes the consumer to retrieve an
+ image from the EGLStream and place it on the display screen)
+ by setting the EGL_CONSUMER_LATENCY_USEC_KHR. The producer
+ uses knowledge about the audio stream to determine the correct
+ time to display an image frame, and inserts the image frame at
+ that time MINUS the EGL_CONSUMER_LATENCY_USEC_KHR.
+
+ 7. What if the consumer cannot determine the latency?
+
+ RESOLVED: If the consumer does not set the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute then its default value
+ will be used. This default value is implementation defined
+ and may be zero. See the description of the specific type of
+ consumer you are using (e.g. the extension that defines it)
+ for more details related to that consumer.
+
+ 8. What colorformats are supported by EGLStream
+
+ RESOLVED: No specific formats are required, but it is expected
+ that this work with the main YUV formats supported by the
+ platform's video HW and the main RGB(A) formats supported by
+ the platform's OpenGL (ES) hardware. It is the responsibility
+ of the producer to negotiate a format that will work with the
+ consumer. If the internal formats supported by the producer
+ do not coincide with the internal formats supported by the
+ consumer then the producer may choose to convert to a format
+ that the consumer understands, or it may choose to fail and
+ generate an error when an attempt is made to connect it to the
+ EGLStream. Exactly which it does for which formats is further
+ discussed in the producer endpoint documentation (refer to the
+ extension that describes the producer endpoint).
+
+ 9. Is any EGLImage extension required by this extension?
+
+ RESOLVED: No. This extension may be implemented using some of
+ the same code that is used to implement EGLImages, but there
+ is no dependency on EGLImages.
+
+ 10. Why describe the "io" attribute type if no attributes use it.
+
+ RESOLVED: Future extensions will add attributes of "io" type
+ (initialize only - meaning they can be set in the attribute
+ list when creating the EGLStream, but not modified once the
+ EGLStream is created). Rather than requiring each such
+ extension to describe the "io" type (and possibly getting
+ slightly different definitions or types in different
+ extensions) the "io" type is defined here so that other
+ extensions can easily use it. This helps layered
+ extensions to all use the same language.
+
+
+Revision History
+
+ #27 (May 23, 2016) Daniel Kartch
+ - For compatibility with EGL 1.5 and support of 64-bit
+ platforms, add EGL_KHR_stream_attrib extension with variants
+ of original functions that accept attributes of type
+ EGLAttrib.
+ - Corrected line length violations.
+
+ #26 (July 12, 2012) Acorn Pooley
+ - Fix error in description of consumer latency.
+
+ #25 (October 12, 2011) Acorn Pooley
+ - Add issue 10
+
+ #24 (October 11, 2011) Acorn Pooley
+ - add error condition to eglDestroyStreamKHR
+
+ #23 (October 5, 2011) Acorn Pooley
+ - refer to related EGL_KHR_... extension specs rather than
+ EGL_NV_... ones.
+
+ #22 (September 27, 2011) Acorn Pooley
+ - Fix enum value for EGL_STREAM_STATE_KHR (bug 8064)
+
+ #21 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #20 (September 23, 2011) Acorn Pooley
+ - Rename EGL_NO_IMAGE_STREAM_KHR to EGL_NO_STREAM_KHR
+
+ #19 (Aug 3, 2011) Acorn Pooley
+ - fix some error conditions
+
+ #18 (Aug 2, 2011) Acorn Pooley
+ - Add eglQueryStreamu64KHR
+ - add EGLuint64KHR
+ - make EGL_PRODUCER_FRAME_KHR and EGL_CONSUMER_FRAME_KHR 64
+ bit.
+
+ #17 (Aug 2, 2011) Acorn Pooley
+ - fix grammar
+
+ #16 (July 6, 2011) Acorn Pooley
+ - rename from EGL_KHR_image_stream to EGL_KHR_stream
+
+ #15 (June 29, 2011) Acorn Pooley
+ - major re-write
+ - remove EGL_SWAP_MODE_KHR and EGL_BUFFER_SHOW_ALL_KHR
+ - add new functions:
+ eglStreamAttribKHR
+ eglQueryStreamKHR
+ - add new attributes:
+ EGL_CONSUMER_LATENCY_USEC_KHR
+ EGL_PRODUCER_FRAME_KHR
+ EGL_CONSUMER_FRAME_KHR
+ EGL_STREAM_STATE_KHR
+ - add concept of EGL_STREAM_STATE_KHR
+ - add new error:
+ EGL_BAD_STATE_KHR
+ - add more thorough overview section
+ - add description of buffering
+ - place the functions in section 3 of the spec (were in
+ section 2)
+ - mention some of the consumer and producer specs that may be
+ needed to make use of this extension.
+ - remove very old issues that no longer make any sense
+ - add new issues and resolutions
+
+ #14 (June 4, 2010) Greg Prisament
+ - fix minor typo
+
+ #13 (June 2, 2010) Marcus Lorentzon
+ - add EGL enum values
+
+ #12 (May 21, 2010) Marcus Lorentzon
+ - add clarifications on swap modes
+
+ #11 (April 13, 2010) Marcus Lorentzon
+ - fix tyops
+ - make eglDestroyStream return EGLBoolean, not void
+
+ #10 (March 17, 2010) Marcus Lorentzon
+ - fix typo
+ - remove obsolete text
+ - update issue 2 resolution
+
+ #9 (December 15, 2009) Marcus Lorentzon
+ - move EGL_IMAGE_USE_* attributes to the endpoint extension
+ - resolved issue 5
+
+ #8 (December 6, 2009) Marcus Lorentzon
+ - remove EGL_INIT_COLOR_KHR
+ - relax the definition of the Producer to allow not only video
+ frames to be generated
+ - clean up the language of recently produced, supplied, pending
+ images
+
+ #7 (October 19, 2009) Acorn Pooley
+ - Update based on comments from Robert and Bruce
+ - remove mention of OpenWF
+ - make EGL_BUFFER_REPLACE_KHR be the default EGL_SWAP_MODE_KHR
+ - add issue 5
+ - remove EGLAPI and EGLAPIENTRY
+
+ #6 (September 16, 2009) Acorn Pooley
+ - remove EGL_WIDTH and EGL_HEIGHT parameters
+ - add issue 4
+ - clarify swap modes
+ - other clarifications and simplifications
+
+ #5 (July 2, 2009) Acorn Pooley
+ - remove reference to no-longer-existing <images> parameter.
+ - mention dependancy on EGL_KHR_image_uses extension.
+ - add description of EGL_IMAGE_USE_AS_* enums.
+
+ #4 (June 3, 2009) Acorn Pooley
+ - Fix typos: change old EGLImageStream occurances to EGLStream
+
+ #3 (April 22, 2009) Marcus Lorentzon
+ - Updated revide comments
+ - Removed external image support
+
+ #2 (March 30, 2009) Marcus Lorentzon
+ - Replaced image surface with image stream
+
+ #1 (February 21, 2009) Marcus Lorentzon
+ - Initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt
new file mode 100644
index 0000000..e29551a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt
@@ -0,0 +1,402 @@
+Name
+
+ KHR_stream_consumer_gltexture
+
+Name Strings
+
+ EGL_KHR_stream_consumer_gltexture
+
+Contributors
+
+ Acorn Pooley
+ Jamie Gennis
+ Marcus Lorentzon
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 11, June 18, 2012
+
+Number
+
+ EGL Extension #33
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires OpenGL ES 1.1 or OpenGL ES 2.0.
+
+ Requires the EGL_KHR_stream extension.
+ Requires the GL_NV_EGL_stream_consumer_external extension.
+
+Overview
+
+ This extension allows an OpenGL(ES) texture to be connected to an
+ EGLStream as its consumer. Image frames from the EGLStream can be
+ 'latched' into the texture as the contents of the texture. This
+ is equivalent to copying the image into the texture, but on most
+ implementations a copy is not needed so this is faster.
+
+New Procedures and Functions
+
+ EGLBoolean eglStreamConsumerGLTextureExternalKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream)
+
+ EGLBoolean eglStreamConsumerAcquireKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ EGLBoolean eglStreamConsumerReleaseKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateStreamKHR and as the <attribute> parameter of
+ eglStreamAttribKHR and eglQueryStreamKHR
+
+ EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+
+Replace section "3.10.2.1 No way to connect consumer to EGLStream" in
+the EGL_KHR_stream extension with this:
+
+ 3.10.2.1 GL Texture External consumer
+
+ Call
+
+ EGLBoolean eglStreamConsumerGLTextureExternalKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream)
+
+ to connect the texture object currently bound to the active
+ texture unit's GL_TEXTURE_EXTERNAL_OES texture target in the
+ OpenGL or OpenGL ES context current to the calling thread as the
+ consumer of <stream>.
+
+ (Note: Before this can succeed a GL_TEXTURE_EXTERNAL_OES texture
+ must be bound to the active texture unit of the GL context current
+ to the calling thread. To create a GL_TEXTURE_EXTERNAL_OES
+ texture and bind it to the current context, call glBindTexture()
+ with <target> set to GL_TEXTURE_EXTERNAL_OES and <texture> set to
+ the name of the GL_TEXTURE_EXTERNAL_OES (which may or may not have
+ previously been created). This is described in the
+ GL_NV_EGL_stream_consumer_external extension.)
+
+ On failure EGL_FALSE is returned and an error is generated.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_CREATED_KHR.
+
+ - EGL_BAD_ACCESS is generated if there is no GL context
+ current to the calling thread.
+
+ - EGL_BAD_ACCESS is generated unless a nonzero texture object
+ name is bound to the GL_TEXTURE_EXTERNAL_OES texture target
+ of the GL context current to the calling thread.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStreamKHR created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+
+ On success the texture is connected to the <stream>, <stream> is
+ placed in the EGL_STREAM_STATE_CONNECTING_KHR state, and EGL_TRUE is
+ returned.
+
+ If the texture is later deleted, connected to a different
+ EGLStream, or connected to an EGLImage, then <stream> will be
+ placed into the EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ If the <stream> is later destroyed then the texture will be
+ "incomplete" until it is connected to a new EGLStream, connected
+ to a new EGLImage, or deleted.
+
+
+ Call
+
+ EGLBoolean eglStreamConsumerAcquireKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ to "latch" the most recent image frame from <stream> into the
+ texture that is the consumer of <stream>. The GLES context
+ containing the texture must be bound to the current thread. If
+ the GLES texture is also used in shared contexts current to other
+ threads then the texture must be re-bound in those contexts to
+ guarantee the new texture is used.
+
+ eglStreamConsumerAcquireKHR will block until either the timeout
+ specified by EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR expires, or the
+ value of EGL_BAD_STATE_KHR is neither EGL_STREAM_STATE_EMPTY_KHR nor
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR (whichever comes first).
+
+ Blocking effectively waits until a new image frame (that has never
+ been consumed) is available in the EGLStream. By default the
+ timeout is zero and the function does not block.
+
+ eglStreamConsumerAcquireKHR returns EGL_TRUE if an image frame was
+ successfully latched into the texture object.
+
+ If the producer has not inserted any new image frames since the
+ last call to eglStreamConsumerAcquireKHR then
+ eglStreamConsumerAcquireKHR will "latch" the same image frame it
+ latched last time eglStreamConsumerAcquireKHR was called. If the
+ producer has inserted one new image frame since the last call to
+ eglStreamConsumerAcquireKHR then eglStreamConsumerAcquireKHR will
+ "latch" the newly inserted image frame. If the producer has
+ inserted more than one new image frame since the last call to
+ eglStreamConsumerAcquireKHR then all but the most recently
+ inserted image frames are discarded and the
+ eglStreamConsumerAcquireKHR will "latch" the most recently
+ inserted image frame.
+
+ The application can use the value of EGL_CONSUMER_FRAME_KHR to
+ identify which image frame was actually latched.
+
+ On failure the texture becomes "incomplete", eglStreamConsumerAcquireKHR
+ returns EGL_FALSE, and an error is generated.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ - EGL_BAD_ACCESS is generated if there is no GL context
+ current to the calling thread, or if the GL context current
+ to the calling thread does not contain a texture that is
+ connected as the consumer of the EGLStream.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+
+ After using the texture call
+
+ EGLBoolean eglStreamConsumerReleaseKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ to release the image frame back to the stream.
+ eglStreamConsumerReleaseKHR() will prevent the EGLStream and
+ producer from re-using and/or modifying the image frame until all
+ preceding GL commands that use the image frame as a texture have
+ completed. If eglStreamConsumerAcquireKHR() is called twice on the
+ same EGLStream without an intervening call to
+ eglStreamConsumerReleaseKHR() then eglStreamConsumerReleaseKHR() is
+ implicitly called at the start of eglStreamConsumerAcquireKHR().
+
+ After successfully calling eglStreamConsumerReleaseKHR the texture
+ becomes "incomplete".
+
+ If eglStreamConsumerReleaseKHR is called twice without a successful
+ intervening call to eglStreamConsumerAcquireKHR, or called with no
+ previous call to eglStreamConsumerAcquireKHR, then the call does
+ nothing and the texture remains in "incomplete" state. This is
+ not an error.
+
+ If eglStreamConsumerReleaseKHR fails EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ - EGL_BAD_ACCESS is generated if there is no GL context
+ current to the calling thread, or if the GL context current
+ to the calling thread does not contain the texture to which
+ the EGLStream is connected.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+
+ The application should estimate the time that will elapse from the
+ time a new frame becomes available (i.e. the state becomes
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR) and the time the frame
+ is presented to the user. The application should set this as the
+ value of the EGL_CONSUMER_LATENCY_USEC attribute by calling
+ eglStreamAttribKHR(). The value will depend on the complexity of
+ the scene being rendered and the platform that the app is running
+ on. It may be difficult to estimate except by experimentation on
+ a specific platform. The default value is implementation
+ dependent and may be a good enough estimate for some situations.
+ If the estimate changes over time the application may modify the
+ value of EGL_CONSUMER_LATENCY_USEC.
+
+ If the EGLStream is deleted while an image frame is acquired (i.e.
+ after calling eglStreamConsumerAcquireKHR and before calling
+ eglStreamConsumerReleaseKHR) then the EGLStream resources will not
+ be freed until the acquired image frame is released. However it
+ is an error to call eglStreamConsumerReleaseKHR after deleting the
+ EGLStream because <stream> is no longer a valid handle. In this
+ situation the image can be released (and the EGLStream resources
+ freed) by doing any one of
+ - deleting the GL_TEXTURE_EXTERNAL (call glDeleteTextures)
+ - connecting the GL_TEXTURE_EXTERNAL to another EGLStream
+ (call eglStreamConsumerGLTextureExternalKHR)
+ - connecting the GL_TEXTURE_EXTERNAL to an EGLImage (if the
+ GL_OES_EGL_image_external extension is supported, call
+ glEGLImageTargetTexture2DOES)
+
+Add a new subsection 3.10.4.6 at the end of section "3.10.4 EGLStream
+Attributes" in the EGL_KHR_stream extension spec:
+
+ 3.10.4.6 EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR Attribute
+
+ This attribute is read/write. The default value is 0. It
+ indicates the maximum amount of time (in microseconds) that
+ eglStreamConsumerAcquireKHR should block. If 0 (the default) it
+ will not block at all. If negative it will block indefinitely.
+
+Issues
+ 1. How to notify the app when a new image is available
+ - callback?
+ - pro: easy to use
+ - con: introduces extra threads into EGL which does not define such
+ behavior now - would have to define a lot of semantics (e.g. what
+ can you call from the callback?)
+ - EGL_KHR_reusable_sync signaled?
+ - this is how EGL_KHR_stream_consumer_endpoint does it
+ - pro: simpler to specify
+ - pro: easy to use if that is all you are waiting for
+ - con: difficult to wait on this AND other events simultaneously?
+ - blocking call to eglStreamConsumerAcquireKHR?
+
+ RESOLVED: Use the EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR to make
+ eglStreamConsumerAcquireKHR blocking if desired. Additional
+ mechanisms can be added as layered extensions.
+
+ 2. What to call this extension?
+ EGL_NV_stream_consumer_gltexture
+ EGL_EXT_stream_consumer_gltexture
+ EGL_KHR_stream_consumer_gltexture
+ EGL_KHR_stream_consumer_gltexture_external
+
+ RESOLVED: EGL_KHR_stream_consumer_gltexture
+
+ 3. Should it be possible to connect an EGLStream to this consumer
+ (texture), and then later reconnect the same stream to a different
+ consumer?
+
+ RESOLVED: no
+
+ There may be reasons to allow this later, but for the time being
+ there is no use for this. Adding this functionality can be
+ considered in the future with a layered extension.
+
+ 4. Do we need both this extension and
+ GL_NV_EGL_stream_consumer_external? Should we just have one
+ extension that takes the place of both? If so should it be an
+ EGL or a GL extension?
+
+ UNRESOLVED
+
+ SUGGESTION: need both
+
+ See issue 1 in GL_NV_EGL_stream_consumer_external.txt
+
+ 5. What happens if the EGLStream is deleted while the consumer
+ has an image acquired?
+
+ This case is a problem because after the EGLStream is deleted
+ the EGLStreamKHR handle is no longer valid, which means
+ eglStreamConsumerReleaseKHR cannot be called (because it would
+ return EGL_BAD_STREAM).
+
+ Possible resolutions:
+
+ A) Do not allow the EGLStream to be deleted while an image is
+ acquired.
+
+ B) Allow the EGLStream to be deleted. Allow the EGLStreamKHR
+ handle to be used in a call to eglStreamConsumerReleaseKHR()
+ after it has been deleted.
+
+ C) Allow the EGLStream to be deleted. It is an error to call
+ eglStreamConsumerReleaseKHR() after the stream is deleted. To
+ release the image the app must
+ - delete the GL_TEXTURE_EXTERNAL texture object
+ or - connect another EGLStream to the GL_TEXTURE_EXTERNAL
+ texture object
+ or - connect an EGLImage to the GL_TEXTURE_EXTERNAL
+ texture object
+
+ D) Make the call to EGLStream implicitly call
+ eglStreamConsumerReleaseKHR if an image is acquired. This
+ requires the GL context is current to the thread that deletes
+ the EGLStream.
+
+ E) Make the call to EGLStream implicitly call
+ eglStreamConsumerReleaseKHR if an image is acquired, and state
+ that this has to work even if the GL context is current to a
+ different thread or not current to any thread.
+
+ Pros/cons:
+ - B violates EGL object handle lifetime policies
+ - E is hard/impossible to implement on some systems
+ - D makes deletion fail for complicated reasons
+ - A makes deletion fail for less complicated reasons
+
+ RESOLVED: option C
+
+Revision History
+
+ #11 (June 18. 2012) Acorn Pooley
+ - Replace EGLStream with EGLStreamKHR in function prototypes.
+
+ #10 (October 12, 2011) Acorn Pooley
+ - Fix confusing error in eglStreamConsumerAcquireKHR description.
+
+ #9 (October 4, 2011) Acorn Pooley
+ - Convert from an NV extension to a KHR extension
+
+ #8 (September 30, 2011) Acorn Pooley
+ - Add issue 5 and clarify EGLStream deletion while image is
+ acquired.
+
+ #7 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #6 (Aug 3, 2011) Acorn Pooley
+ - rename GL_OES_EGL_stream_external to
+ GL_NV_EGL_stream_consumer_external
+
+ #5 (Aug 2, 2011) Acorn Pooley
+ - Add dependency on GL_OES_EGL_stream_external
+
+ #4 (Aug 2, 2011) Acorn Pooley
+ - Fix spelling and grammar
+
+ #3 (July 6, 2011) Acorn Pooley
+ - Rename EGL_KHR_image_stream to EGL_KHR_stream
+
+ #2 (June 29, 2011) Acorn Pooley
+ - change how texture is connected to stream to match
+ EGL_KHR_stream spec.
+ - Add EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_NV
+
+ #1 (April 20, 2011) Acorn Pooley
+ - initial draft
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_cross_process_fd.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_cross_process_fd.txt
new file mode 100644
index 0000000..ecfefd6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_cross_process_fd.txt
@@ -0,0 +1,560 @@
+Name
+
+ KHR_stream_cross_process_fd
+
+Name Strings
+
+ EGL_KHR_stream_cross_process_fd
+
+Contributors
+
+ Acorn Pooley
+ Ian Stewart
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on June 6, 2012.
+ Approved by the Khronos Board of Promoters on July 27, 2012.
+
+Version
+
+ Version 8 - June 5, 2012
+
+Number
+
+ EGL Extension #41
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires EGL_KHR_stream
+
+ This extension is written based on the wording of the EGL 1.2
+ specification.
+
+ This extension interacts with the following extensions if they are
+ also present:
+ EGL_KHR_stream_producer_eglsurface
+ EGL_KHR_stream_consumer_gltexture
+ EGL_KHR_stream_producer_aldatalocator
+ EGL_KHR_stream_fifo
+
+Overview
+
+ This extension allows an EGLStreamKHR object handle to be
+ duplicated into another process so that the EGLStream producer can
+ be in one process while the EGLStream consumer can be in another
+ process.
+
+ Duplicating the EGLStreamKHR object handle into another process is
+ peformed in 3 steps
+
+ 1) Get a file descriptor associated with the EGLStream.
+ 2) Duplicate the file descriptor into another process.
+ 3) Create an EGLStreamKHR from the duplicated file descriptor in
+ the other process.
+
+ The file descriptor is obtained by calling
+ eglGetStreamFileDescriptorKHR().
+
+ Duplicating the file descriptor into another process is outside
+ the scope of this extension. See issue #1 for an example of how
+ to do this on a Linux system.
+
+ The EGLStreamKHR object handle is created in the second process by
+ passing the file descriptor to the
+ eglCreateStreamFromFileDescriptorKHR() function. This must be
+ done while the EGLStream is in the EGL_STREAM_STATE_CREATED_KHR
+ state.
+
+ Once the EGLStreamKHR object handle is created in the second
+ process, it refers to the same EGLStream as the EGLStreamKHR
+ object handle in the original process. A consumer can be
+ associated with the EGLStream from either process. A producer can
+ be associated with the EGLStream from either process.
+
+New Types
+
+ Represents a native OS file descriptor.
+
+ typedef int EGLNativeFileDescriptorKHR
+
+New Procedures and Functions
+
+ EGLNativeFileDescriptorKHR eglGetStreamFileDescriptorKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ EGLStreamKHR eglCreateStreamFromFileDescriptorKHR(
+ EGLDisplay dpy,
+ EGLNativeFileDescriptorKHR file_descriptor);
+
+New Tokens
+
+ Returned from eglGetStreamFileDescriptorKHR on error.
+
+ #define EGL_NO_FILE_DESCRIPTOR_KHR ((EGLNativeFileDescriptorKHR)(-1))
+
+Add a new section just after section "3.10.1 Creating an EGLStream" in
+the EGL_KHR_stream extension
+
+ 3.10.1.1 Duplicating an EGLStream from a file descriptor
+
+ Call
+
+ EGLNativeFileDescriptorKHR eglGetStreamFileDescriptorKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ to create a file descriptor that refers to the EGLStream.
+ <stream> must be an EGLStream in the EGL_STREAM_STATE_CREATED_KHR
+ state. eglGetStreamFileDescriptorKHR may be called at most once
+ for any <stream>.
+
+ On success a file descriptor is returned which can be used
+ to create a duplicate EGLStreamKHR handle which refers to the same
+ underlying EGLStream as <stream>. This file descriptor and file
+ descriptors duplicated from it should only be used in a call to
+ eglCreateStreamFromFileDescriptorKHR() and/or a call to close().
+ In particular reads, writes, and other operations on the file
+ descriptor result in undefined behavior.
+
+ On failure the functions returns EGL_NO_FILE_DESCRIPTOR_KHR and
+ generates an error
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ initialized EGLDisplay
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStreamKHR handle created for <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in the
+ EGL_STREAM_STATE_CREATED_KHR state or if
+ eglGetStreamFileDescriptorKHR() has previously been called
+ on this <stream>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> was not created
+ by eglCreateStreamKHR (e.g. if it was created by
+ eglCreateStreamFromFileDescriptorKHR).
+
+ The file descriptor returned by eglGetStreamFileDescriptorKHR can
+ be duplicated into a different process address space using system
+ specific mechanisms outside the scope of this specification. (For
+ example, on a Linux system it can be sent over a UNIX domain
+ socket using sendmsg/recvmsg.)
+
+ Call
+
+ EGLStreamKHR eglCreateStreamFromFileDescriptorKHR(
+ EGLDisplay dpy,
+ EGLNativeFileDescriptorKHR file_descriptor);
+
+ to create an EGLStreamKHR handle. <file_descriptor> must be a
+ file descriptor returned by eglGetStreamFileDescriptorKHR or a
+ file descriptor duplicated from such a file descriptor (possibly
+ in a different process). The EGLStream must be in the
+ EGL_STREAM_STATE_CREATED_KHR or EGL_STREAM_STATE_CONNECTING_KHR
+ state.
+
+ On success an EGLStreamKHR handle is returned. This EGLStreamKHR
+ handle refers to the same EGLStream which was used to create the
+ <file_descriptor> or the file descriptor from which
+ <file_descriptor> was duplicated.
+
+ After the file descriptor is passed to
+ eglCreateStreamFromFileDescriptorKHR it may no longer be used to
+ create a new EGLStream.
+
+ On failure EGL_NO_STREAM_KHR is returned and an error is
+ generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ initialized EGLDisplay
+
+ - EGL_BAD_ATTRIBUTE is generated if <file_descriptor> is
+ EGL_NO_FILE_DESCRIPTOR_KHR.
+
+ - EGL_BAD_ATTRIBUTE is generated if <file_descriptor> is
+ not an open file descriptor referring to an EGLStream
+ created on the same Native Display as <dpy>.
+
+ - EGL_BAD_ATTRIBUTE is generated if <file_descriptor> has
+ already been used to create a stream handle via a previous
+ call to eglCreateStreamFromFileDescriptorKHR.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in the
+ EGL_STREAM_STATE_CREATED_KHR or
+ EGL_STREAM_STATE_CONNECTING_KHR state.
+
+ The application should close the file descriptor and any file
+ descriptors duplicated from it once
+ eglCreateStreamFromFileDescriptorKHR has returned. Open file
+ descriptors will consume resources until they are closed or until
+ all processes that hold them open have terminated. Closing the
+ file descriptors after calling
+ eglCreateStreamFromFileDescriptorKHR will not affect the
+ associated EGLStream. If an application calls
+ eglGetStreamFileDescriptorKHR and then determines that the file
+ descriptor and/or the EGLStream is no longer needed then it may
+ (and should) close the file descriptor and destroy the EGLStream
+ (this is not considered an error).
+
+ If a process which has successfully connected a consumer or
+ producer to the EGLStream terminates (normally or abnormally) then
+ the EGLStream state becomes EGL_STREAM_STATE_DISCONNECTED_KHR.
+
+ If a process has created an EGLStreamKHR handle either with
+ eglCreateStreamKHR or eglCreateStreamFromFileDescriptorKHR but has
+ not connected a producer or consumer to the stream, and this
+ process terminates (normally or abnormally) then this has no
+ effect on the EGLStream.
+
+Interactions with the EGL_KHR_stream_producer_eglsurface extension.
+
+ The eglCreateStreamProducerSurfaceKHR() function can be called
+ from either the process that created the original EGLStreamKHR, or
+ from the process which called eglCreateStreamFromFileDescriptorKHR.
+
+Interactions with the EGL_KHR_stream_consumer_gltexture extension.
+
+ The eglStreamConsumerGLTextureExternalKHR() function can be called
+ from either the process that created the original EGLStreamKHR, or
+ from the process which called
+ eglCreateStreamFromFileDescriptorKHR. The
+ eglStreamConsumerAcquireKHR() and eglStreamConsumerReleaseKHR()
+ functions must be called from the same process that calls
+ eglStreamConsumerGLTextureExternalKHR() (or else they will fail
+ and generate an EGL_BAD_ACCESS error).
+
+Interactions with the EGL_KHR_stream_producer_aldatalocator extension.
+
+ The CreateMediaPlayer() method can be called from either the
+ process that created the original EGLStreamKHR, or from the
+ process which called eglCreateStreamFromFileDescriptorKHR.
+
+Interactions with the EGL_KHR_stream_fifo extension.
+
+ The queries for EGL_STREAM_FIFO_LENGTH_KHR,
+ EGL_STREAM_TIME_NOW_KHR, EGL_STREAM_TIME_CONSUMER_KHR, and
+ EGL_STREAM_TIME_PRODUCER_KHR can be made from either process. The
+ time values returned by the EGL_STREAM_TIME_NOW_KHR query will be
+ consistent between the two processes (i.e. if queried at the same
+ time from both processes, the same value (plus or minus some
+ margin of error) will be returned).
+
+Interactions with the EGL_NV_stream_cross_process_fd extension.
+
+ These extensions may both exist on the same implementation and
+ are functionally equivalent. Mixing and matching file descriptors
+ from one extension with functions from the other is allowed.
+
+Interactions with the EGL_NV_stream_sync extension.
+
+ The eglCreateStreamSyncNV() function may only be called from a
+ process which has successfully connected a consumer to the
+ EGLStream. Otherwise eglCreateStreamSyncNV generates a
+ EGL_BAD_ACCESS error.
+
+Issues
+ 1. How does the application transfer the file descriptor to
+ another process?
+
+ RESOLVED: This is outside the scope of this extension. The
+ application can use existing operating system mechanisms for
+ duplicating the file descriptor into another process. For
+ example on Linux a file descriptor can be sent over a UNIX
+ domain socket using the following code (call send_fd() to
+ send the file descriptor, and receive_fd() in the other
+ process to receive the file descriptor). (The following code
+ is placed into the public domain by its author, Acorn Pooley)
+
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+
+ #define FATAL_ERROR() exit(1)
+ #define SOCKET_NAME "/tmp/example_socket"
+
+ /* Send <fd_to_send> (a file descriptor) to another process */
+ /* over a unix domain socket named <socket_name>. */
+ /* <socket_name> can be any nonexistant filename. */
+ void send_fd(const char *socket_name, int fd_to_send)
+ {
+ int sock_fd;
+ struct sockaddr_un sock_addr;
+ struct msghdr msg;
+ struct iovec iov[1];
+ char ctrl_buf[CMSG_SPACE(sizeof(int))];
+ struct cmsghdr *cmsg = NULL;
+
+ sock_fd = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (sock_fd < 0) FATAL_ERROR();
+
+ memset(&sock_addr, 0, sizeof(struct sockaddr_un));
+ sock_addr.sun_family = AF_UNIX;
+ strncpy(sock_addr.sun_path,
+ socket_name,
+ sizeof(sock_addr.sun_path)-1);
+
+ while (connect(sock_fd,
+ (const struct sockaddr*)&sock_addr,
+ sizeof(struct sockaddr_un))) {
+ printf("Waiting for reciever\n");
+ sleep(1);
+ }
+
+ memset(&msg, 0, sizeof(msg));
+
+ iov[0].iov_len = 1; // must send at least 1 byte
+ iov[0].iov_base = "x"; // any byte value (value ignored)
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+
+ memset(ctrl_buf, 0, sizeof(ctrl_buf));
+ msg.msg_control = ctrl_buf;
+ msg.msg_controllen = sizeof(ctrl_buf);
+
+ cmsg = CMSG_FIRSTHDR(&msg);
+ cmsg->cmsg_level = SOL_SOCKET;
+ cmsg->cmsg_type = SCM_RIGHTS;
+ cmsg->cmsg_len = CMSG_LEN(sizeof(int));
+ *((int *) CMSG_DATA(cmsg)) = fd_to_send;
+
+ msg.msg_controllen = cmsg->cmsg_len;
+
+ if (sendmsg(sock_fd, &msg, 0) <= 0) FATAL_ERROR();
+
+ close(sock_fd);
+ }
+
+ /* Listen on a unix domain socket named <socket_name> and */
+ /* receive a file descriptor from another process. */
+ /* Returns the file descriptor. Note: the integer value */
+ /* of the file descriptor may be different from the */
+ /* integer value in the other process, but the file */
+ /* descriptors in each process will refer to the same file */
+ /* object in the kernel. */
+ int receive_fd(const char *socket_name)
+ {
+ int listen_fd;
+ struct sockaddr_un sock_addr;
+ int connect_fd;
+ struct sockaddr_un connect_addr;
+ socklen_t connect_addr_len = 0;
+ struct msghdr msg;
+ struct iovec iov[1];
+ char msg_buf[1];
+ char ctrl_buf[CMSG_SPACE(sizeof(int))];
+ struct cmsghdr *cmsg;
+
+ listen_fd = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (listen_fd < 0) FATAL_ERROR();
+
+ unlink(socket_name);
+
+ memset(&sock_addr, 0, sizeof(struct sockaddr_un));
+ sock_addr.sun_family = AF_UNIX;
+ strncpy(sock_addr.sun_path,
+ socket_name,
+ sizeof(sock_addr.sun_path)-1);
+
+ if (bind(listen_fd,
+ (const struct sockaddr*)&sock_addr,
+ sizeof(struct sockaddr_un)))
+ FATAL_ERROR();
+
+ if (listen(listen_fd, 1)) FATAL_ERROR();
+
+ connect_fd = accept(
+ listen_fd,
+ (struct sockaddr *)&connect_addr,
+ &connect_addr_len);
+ close(listen_fd);
+ unlink(socket_name);
+ if (connect_fd < 0) FATAL_ERROR();
+
+ memset(&msg, 0, sizeof(msg));
+
+ iov[0].iov_base = msg_buf;
+ iov[0].iov_len = sizeof(msg_buf);
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+
+ msg.msg_control = ctrl_buf;
+ msg.msg_controllen = sizeof(ctrl_buf);
+
+ if (recvmsg(connect_fd, &msg, 0) <= 0) FATAL_ERROR();
+
+ cmsg = CMSG_FIRSTHDR(&msg);
+ if (!cmsg) FATAL_ERROR();
+ if (cmsg->cmsg_level != SOL_SOCKET) FATAL_ERROR();
+ if (cmsg->cmsg_type != SCM_RIGHTS) FATAL_ERROR();
+
+ return *(int *) CMSG_DATA(cmsg);
+ }
+
+ 2. Does this extension work with all consumers and all producers?
+
+ RESOLVED: This extension is compatible with
+ EGL_KHR_stream_producer_eglsurface
+ EGL_KHR_stream_consumer_gltexture
+ EGL_KHR_stream_producer_aldatalocator
+ EGL_KHR_stream_fifo
+ as described in the Interactions sections. Whether an
+ EGLStream that has been duplicated into another process will
+ work with other types of consumers and producers should be
+ mentioned in the description of those consumers and producers.
+
+ 3. Does EGL create a file descriptor for every EGLStream when the
+ EGLStream is created, or is the file descriptor be created
+ when eglGetStreamFileDescriptorKHR is called?
+
+ RESOLVED: This is implementation dependent. However,
+ recommended behavior is to create the file descriptor when
+ eglGetStreamFileDescriptorKHR is called. This avoids
+ polluting the file descriptor namespace (which may have a
+ limited size on some systems) with descriptors for EGLStreams
+ which will only be used inside a single process. The
+ eglGetStreamFileDescriptorKHR function will fail and generate
+ an EGL_BAD_ALLOC error if it is unable to allocate a file
+ descriptor for the EGLStream.
+
+ 4. Should the EGLStream be created from the file descriptor with
+ the existing eglCreateStreamKHR function or with a new
+ function dedicated to that purpose?
+
+ The advantage of creating a new function is that a new
+ parameter can be added with a specific type. This is not
+ really necessary for this extension since a file descriptor is
+ a small integer which can fit into the EGLint in the
+ eglCreateStreamKHR attrib_list. However, other similar
+ extensions may be invented that use other types of handles
+ (not file descriptors) which may not fit into an EGLint.
+ Creating a dedicated function allows these other extensions to
+ use a similar function.
+
+ RESOLVED: Use a different function.
+
+ 5. How does this extension interact with the
+ EGL_NV_stream_cross_process_fd extension?
+
+ RESOLVED: These extensions may both exist on the same
+ implementation and are functionally equivalent. Mixing and
+ matching file descriptors from one extension with functions
+ from the other is allowed.
+
+ 6. Who should close the file descriptors and when?
+
+ There is no way for the EGL implementation to safely close all
+ the file descriptors associated with an EGLStream because some
+ of them may have been created using OS specific duping
+ mechanisms. Also, the app may need to close a descriptor if
+ it runs into an error before it is able to call
+ eglCreateStreamFromFileDescriptorKHR. Therefore the
+ application will need to close at least some of the created
+ file descriptors. To make things simple and clear it is
+ therefore left up to the app to close all the file
+ descriptors. The app is not *required* to do this, but not
+ doing so will "leak" file descriptors which will consume
+ resources until the process terminates.
+
+ Allowing the app to close all file descriptors as soon as
+ eglCreateStreamFromFileDescriptorKHR returns simplifies the
+ app (no need to keep track of open file descriptors).
+
+ RESOLVED: Application is responsible for closing all file
+ descriptors. They can be safely closed as soon as
+ eglCreateStreamFromFileDescriptorKHR returns.
+
+ 7. What happens when an invalid file descriptor is passed to
+ eglCreateStreamFromFileDescriptorKHR()?
+
+ RESOLVED: The implementation must detect this and generate an
+ error. If the file descriptor refers to a file then the
+ implementation may not modify the file, change the seek
+ location, or otherwise modify the file descriptor.
+
+ 8. What happens if one process hangs or crashes?
+
+ RESOLVED: If either the consumer's or producer's process
+ terminates (normally or abnormally) the EGL implementation
+ must notice this and place the EGLStream in
+ EGL_STREAM_STATE_DISCONNECTED_KHR state. If the consumer is
+ blocked in a eglStreamConsumerAcquireKHR() call, the call will
+ generate an EGL_BAD_STATE_KHR message and return EGL_FALSE.
+ If the consumer process has created a reusable sync object with
+ eglCreateStreamSyncNV() and is blocking in a
+ eglClientWaitSyncKHR() call, the call will block until the
+ timeout runs out.
+
+ If the producer process "hangs" (e.g. enters an infinite loop,
+ blocks in a kernel call, etc) then the consumer process will
+ continue to function. The consumer will continue to use the
+ last frame that the producer produced. If the producer has
+ not yet produced a frame then the EGLStream will be in
+ EGL_STREAM_STATE_EMPTY_KHR state and no frame will be
+ available. The consumer process can block in some situations:
+ - If a EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR is set then
+ eglStreamConsumerAcquireKHR() will block until the
+ timeout runs out (or indefinitely if timeout is
+ negative).
+ - eglClientWaitSyncKHR() will block until the timeout runs
+ out.
+
+ If the consumer process "hangs" then the producer process will
+ continue to function. If the EGLStream has had
+ EGL_STREAM_FIFO_LENGTH_KHR set to a nonzero value then the
+ producer will block indefinitely when it fills the fifo and
+ tries to insert another frame. Otherwise the producer will
+ not block (as new frames are inserted into the EGLStream old
+ ones will be discarded).
+
+Revision History
+
+ #8 (June 5, 2012) Acorn Pooley
+ - rename from XXX to KHR
+
+ #7 (June 5, 2012) Acorn Pooley
+ - Add issue 8.
+ - Better define EGLStream behavior when a process terminates.
+ - Add Interactions with the EGL_NV_stream_sync extension.
+
+ #6 (April 20, 2012) Ian Stewart
+ - Fix extension/function names in interactions
+ - Removed references to NV_stream_sync.
+ - Changed interactions with NV_stream_cross_process_fd such
+ that they are interchangeable.
+
+ #5 (April 18, 2012) Acorn Pooley
+ - Add issue 7
+ - define errors generated when passing invalid file descriptors
+
+ #4 (January 29, 2012) Acorn Pooley
+ - Fork EGL_XXX_stream_cross_process_fd.txt from
+ EGL_NV_stream_cross_process_fd.txt to make changes suggested
+ by working group.
+ - add issues 4, 5, and 6.
+
+ #3 (January 6, 2012) Acorn Pooley
+ - fix typos (EGLImage -> EGLStream)
+
+ #2 (December 7, 2011) Acorn Pooley
+ - Upload to Khronos for review
+
+ #1 (September 27, 2011) Acorn Pooley
+ - Initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_fifo.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_fifo.txt
new file mode 100644
index 0000000..3d9d985
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_fifo.txt
@@ -0,0 +1,433 @@
+Name
+
+ KHR_stream_fifo
+
+Name Strings
+
+ EGL_KHR_stream_fifo
+
+Contributors
+
+ Acorn Pooley
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 6, October 12, 2011
+
+Number
+
+ EGL Extension #36
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires the EGL_KHR_stream extension.
+
+ This extension is written based on the wording of the EGL 1.2
+ specification.
+
+ The EGL_KHR_stream_producer_eglsurface and
+ EGL_NV_stream_producer_eglsurface extensions affect the wording of
+ this extension.
+
+ The EGL_KHR_stream_producer_aldatalocator and
+ EGL_NV_stream_producer_aldatalocator extensions affect the wording
+ of this extension.
+
+ The EGL_KHR_stream_consumer_gltexture and
+ EGL_NV_stream_consumer_gltexture extensions affect the wording
+ of this extension.
+
+Overview
+
+ This extension allows an EGLStream to operate as a fifo rather
+ than as a mailbox.
+
+ The EGL_KHR_stream extension defines the EGLStream object.
+ The EGLStream object works like a 1 entry mailbox, allowing the
+ consumer to consume the frame that the producer most recently
+ inserted. If the consumer requests image frames faster than the
+ producer creates them then it gets the most recent one over and
+ over until a new one is inserted. If the producer inserts frames
+ faster than the consumer can consume them then the extra frames
+ are discarded. The producer is never stalled.
+
+ This extension allows an EGLStream to be placed into fifo mode.
+ In fifo mode no images are discarded. If the producer attempts to
+ insert a frame and the fifo is full then the producer will stall
+ until there is room in the fifo. When the consumer retrieves an
+ image frame from the EGLStream it will see the image frame that
+ immediately follows the image frame that it last retrieved (unless
+ no such frame has been inserted yet in which case it retrieves the
+ same image frame that it retrieved last time).
+
+ Timing of the EGLStream in mailbox mode, as described by the
+ EGL_KHR_stream extension, is the responsibility of the
+ producer (with help from the consumer in the form of the
+ EGL_CONSUMER_LATENCY_USEC_KHR hint).
+
+ In contrast, timing of an EGLStream in fifo mode is the
+ responsibility of the consumer. Each image frame in the fifo has
+ an associated timestamp set by the producer. The consumer can use
+ this timestamp to determine when the image frame is intended to be
+ displayed to the user.
+
+
+New Types
+
+ This type represents an absolute time in nanoseconds.
+
+ typedef khronos_utime_nanoseconds_t EGLTimeKHR
+
+New functions
+
+ EGLBoolean eglQueryStreamTimeKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLTimeKHR *value);
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateStreamKHR and as the <attribute> parameter of
+ eglQueryStreamKHR.
+
+ EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+
+ These enums are accepted the <attribute> parameter of
+ eglQueryStreamTimeKHR.
+
+ EGL_STREAM_TIME_NOW_KHR 0x31FD
+ EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+ EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+
+Add 4 new entries to "Table 3.10.4.4 EGLStream Attributes" in the
+EGL_KHR_stream extension spec:
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ---------- --------
+ EGL_STREAM_FIFO_LENGTH_KHR io EGLint 3.10.4.xx
+ EGL_STREAM_TIME_NOW_KHR ro EGLTimeKHR 3.10.4.xx
+ EGL_STREAM_TIME_CONSUMER_KHR ro EGLTimeKHR 3.10.4.xx
+ EGL_STREAM_TIME_PRODUCER_KHR ro EGLTimeKHR 3.10.4.xx
+
+Add a new paragraph to the end of section "3.10.4.2 Querying EGLStream
+Attributes" in the EGL_KHR_stream extension.
+
+ Call
+
+ EGLBoolean eglQueryStreamTimeKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum attribute,
+ EGLTimeKHR *value);
+
+ to query <attribute> from <stream> for attributes whose type is
+ EGLTimeKHR.
+
+ If an error occurs EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_ATTRIBUTE is generated if <attribute> is not a valid
+ EGLStream attribute with type EGLTimeKHR.
+
+
+Add new sections 3.1.4.xx at the end of section "3.10.4 EGLStream
+Attributes" in the EGL_KHR_stream extension.
+
+ 3.1.4.x EGL_STREAM_FIFO_LENGTH_KHR Attribute
+
+ The EGL_STREAM_FIFO_LENGTH_KHR may be set in the <attrib_list>
+ parameter of eglCreateStreamKHR(), but is read-only once the
+ stream is created. It can be queried with eglQueryStreamKHR().
+ Its default value is 0. Setting it to a value less than 0
+ generates an EGL_BAD_PARAMETER error.
+
+ When EGL_STREAM_FIFO_LENGTH_KHR is 0 the EGLStream operates in
+ mailbox mode as described in section "3.10.5.1 EGLStream operation
+ in mailbox mode"
+
+ When EGL_STREAM_FIFO_LENGTH_KHR is greater than 0 then the
+ EGLStream operates in fifo mode as described in section "3.10.5.2
+ EGLStream operation in fifo mode".
+
+ In fifo mode the EGLStream contains up to N image frames, where N
+ is the value of the EGL_STREAM_FIFO_LENGTH_KHR attribute.
+
+ The value of EGL_STREAM_FIFO_LENGTH_KHR is independent from the
+ number of internal buffers used by the producer. The producer may
+ require some number of internal buffers, but those are in addition
+ to the fifo buffers described by EGL_STREAM_FIFO_LENGTH_KHR.
+
+ 3.1.4.x+1 EGL_STREAM_TIME_NOW_KHR Attribute
+
+ This indicates the current time. It is measured as the number of
+ nanoseconds since some arbitrary event (e.g. the last time the
+ system rebooted).
+
+ 3.1.4.x+2 EGL_STREAM_TIME_CONSUMER_KHR Attribute
+
+ This indicates the timestamp of the image frame that the consumer
+ most recently consumed (i.e. frame number EGL_CONSUMER_FRAME_KHR).
+ The frame should first be displayed to the user when
+ EGL_STREAM_TIME_NOW_KHR matches this value.
+
+ In mailbox mode the timestamp for an image frame is always equal
+ to the time that the producer inserted the image frame into the
+ EGLStream, minus the value of EGL_CONSUMER_LATENCY_USEC_KHR.
+
+ In fifo mode the timestamp for an image frame is set by the
+ producer when it is inserted into the EGLStream.
+
+ The timestamp uses the same time units as EGL_STREAM_TIME_NOW_KHR.
+
+ 3.1.4.x+3 EGL_STREAM_TIME_PRODUCER_KHR Attribute
+
+ This indicates the timestamp of the image frame that the producer
+ most recently inserted into the EGLStream (i.e. frame number
+ EGL_PRODUCER_FRAME_KHR).
+
+
+Modify the first sentence of section "3.10.5.1 EGLStream operation in
+mailbox mode" in the EGL_KHR_stream extension to:
+
+ When the EGL_STREAM_FIFO_LENGTH_KHR attribute is 0
+ then the EGLStream conceptually operates as a mailbox.
+
+
+Add a new section after section "3.10.5.1 EGLStream operation in
+mailbox mode" in the EGL_KHR_stream extension.
+
+ 3.10.5.2 EGLStream operation in fifo mode
+
+ When the EGL_STREAM_FIFO_LENGTH_KHR attribute is greater than 0
+ then the EGLStream operates in fifo mode. The length of the fifo
+ is the value of the EGL_STREAM_FIFO_LENGTH_KHR attribute.
+
+ In fifo mode the EGLStream conceptually operates as a fifo.
+
+ When the consumer wants to consume a new image frame, behavior
+ depends on the state of the EGLStream. If the state is
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR then the fifo is not
+ empty and the image frame to consume is removed from the tail of
+ the fifo. If the state is
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR then the fifo is empty
+ and the consumer consumes the same frame that it most recently
+ consumed. Otherwise there are no image frames available to
+ consume (behavior in this case is described in the documentation
+ for each type of consumer - see section "3.10.2 Connecting an
+ EGLStream to a consumer").
+
+ If the fifo is empty when the consumer is finished consuming an
+ image frame then the consumer holds on to the image frame in case
+ it needs to be consumed again later (this happens if the consumer
+ wants to consume another image frame before the producer has
+ inserted a new image frame into the fifo). In this case the state
+ of the EGLStream will be EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR
+ until the producer inserts a new image frame (or until the state
+ becomes EGL_STREAM_STATE_DISCONNECTED_KHR).
+
+ The producer inserts image frames at the head of the fifo. If the
+ fifo is full (already contains <L> image frames, where <L> is the
+ value of the EGL_STREAM_FIFO_LENGTH_KHR attribute) then producer
+ is stalled until the fifo is no longer full. When the fifo is not
+ empty the EGLStream state is
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR.
+
+ This operation implies:
+
+ - Frames are never discarded until the consumer has examined
+ them.
+
+ - If the consumer consumes frames slower than the producer
+ inserts frames, then the producer will stall.
+
+ - If the consumer consumes frames faster than the producer
+ inserts frames, then the consumer may see some frames more
+ than once.
+
+ - The consumer can see each frame exactly once if it always
+ waits until the stream is in the
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR state before
+ retrieving an image from the stream.
+
+ In mailbox mode the producer is responsible for timing. In fifo
+ mode the consumer is responsible for timing.
+
+ In fifo mode the producer marks each image frame with a timestamp.
+ The timestamp indicates at what time the image frame should first
+ be visible to the user. Exactly how a producer sets the timestamp
+ is described in the documentation for each type of producer. If
+ the value of an image frame's timestamp is T then the producer
+ must insert that image frame *before* time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+ Image frames must be inserted in increasing timestamp order.
+
+ The consumer is responsible for presenting each image frame to the
+ user at the time indicated by its timestamp. The consumer should
+ indicate its minimum latency to the producer by setting the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute.
+
+
+If the EGL_KHR_stream_producer_eglsurface or
+EGL_NV_stream_producer_eglsurface extension is present then add a
+paragraph to the end of section "3.10.3.1 Stream Surface Producer"
+from that extension:
+
+ If <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is nonzero then
+ <stream> operates in fifo mode. Each time the EGLSurface is
+ passed to eglSwapBuffers() an image frame is inserted into the
+ fifo. The eglSwapBuffers call sets the timestamp of the image
+ frame to the time that eglSwapBuffers was called PLUS the value of
+ the EGL_CONSUMER_LATENCY_USEC_KHR attribute.
+
+If the EGL_KHR_stream_producer_eglsurface or
+EGL_NV_stream_producer_eglsurface extension is present then add a
+paragraph to section "3.9.x Posting to a Stream"
+from that extension, between the 2nd paragraph (which begins "If
+<surface> is the producer of an EGLStream...") and the 3rd paragraph
+(which begins "When eglSwapBuffers returns the contents..."):
+
+ If the value of the EGL_STREAM_FIFO_LENGTH_KHR attribute, <L> is
+ greater than zero, and there are already <L> image frames in the
+ EGLStream fifo, then the eglSwapBuffers function blocks (does not
+ return and does not insert the new image frame) until there is
+ room in the EGLStream fifo (i.e. there are less than <L> image
+ frames in the fifo).
+
+If the EGL_KHR_stream_producer_aldatalocator or
+EGL_NV_stream_producer_aldatalocator extension is present then replace
+the 2nd to last paragraph (the one that starts "The OpenMAX AL object
+will use the value of...") of section "3.10.3.1 OpenMAX AL Stream
+Producer" from that extension with the following 2 paragraphs:
+
+ If <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is zero then the
+ stream operates in mailbox mode. The OpenMAX AL object will use
+ the value of the EGL_CONSUMER_LATENCY_USEC_KHR attribute of
+ <stream> to determine when to insert each image frame. If the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute is modified (by the
+ consumer and/or by the application) then then OpenMAX AL object
+ will adjust its timing within 500 milliseconds of the change. If
+ an image frame is intended to appear to the user at time T (e.g.
+ so that it is synchronized with audio) then the OpenMAX AL object
+ must insert the image frame at time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+ and set the image frame's timestamp to T.
+
+ If the <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is nonzero then
+ <stream> operates in fifo mode. If an image frame is intended to
+ appear to the user at time T then the OpenMAX AL object will
+ insert the image frame into the fifo before time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+ and set the image frame's timestamp to T.
+
+If the EGL_KHR_stream_consumer_gltexture or
+EGL_NV_stream_consumer_gltexture extension is present then replace the
+3rd to last paragraph (the one that starts "If the producer has not
+inserted any new image frames...") of section "3.10.2.1 GL Texture
+External consumer" from that extension with the following 2
+paragraphs:
+
+ When <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is zero then the
+ stream operates in mailbox mode. If the producer has not inserted
+ any new image frames since the last call to
+ eglStreamConsumerAcquireNV then eglStreamConsumerAcquireNV will
+ "latch" the same image frame it latched last time
+ eglStreamConsumerAcquireNV was called. If the producer has
+ inserted one new image frame since the last call to
+ eglStreamConsumerAcquireNV then the eglStreamConsumerAcquireNV
+ will "latch" the newly inserted image frame. If the producer has
+ inserted more than one new image frame since the last call to
+ eglStreamConsumerAcquireNV then all but the most recently inserted
+ image frames are discarded and the producer will "latch" the most
+ recently inserted image frame.
+
+ When <stream>'s EGL_STREAM_FIFO_LENGTH_KHR value is nonzero then
+ <stream> operates in fifo mode. Each call to
+ eglStreamConsumerAcquireNV "latches" the next image frame in the
+ fifo into the OpenGL texture, removing that image frame from the
+ fifo. If there are no new image frames in the fifo then
+ eglStreamConsumerAcquireNV will "latch" the same image frame it
+ latched last time eglStreamConsumerAcquireNV was called.
+
+
+Issues
+ 1. Is this extension useful?
+
+ RESOLVED: Yes. Browser vendors and others have expressed
+ interest.
+
+ 2. Why not include this functionality in the base EGL_KHR_stream
+ extension?
+
+ RESOLVED: Including it there was confusing. Several
+ developers interested in EGLStream have thought at first that
+ they want to use EGLStreams in fifo mode. Later after
+ thinking about it they realize standard mode (non-fifo or
+ "mailbox" mode) is more useful.
+
+ Mailbox mode is easier to use and is less confusing for
+ aldatalocator-producer, gltexture-consumer usecase which was
+ the primary usecase for the extension at the time it was
+ devised.
+
+ Trying to describe both mailbox mode and fifo mode in
+ the same extension made the extension complicated. It was
+ confusing when the timestamps were useful (only in fifo mode).
+ It was confusing how the EGL_CONSUMER_LATENCY_USEC_KHR
+ attribute worked in different modes.
+
+ these problems the fifo functionality was split into this
+ separate extension. This also allows existing consumer and
+ producer extensions to be defined in terms of mailbox mode,
+ simplifying them and making them easier to understand. Then
+ interactions with fifo mode can be described separately.
+
+ Also, the fifo mode is more complicated to use and implement than
+ the mailbox mode. It was thought that there might be problems
+ with the fifo mode that could lead to a new extension
+ replacing the fifo mode extension. By keeping the fifo mode
+ functionality segregated into its own extension this would be
+ easier to accomplish.
+
+Revision History
+
+ #6 (October 12, 2011) Acorn Pooley
+ - Clarify fifo mode operation. (Does not change behavior.)
+
+
+ #5 (October 11, 2011) Acorn Pooley
+ - Resolve issue 1
+ - fix typos
+ - add issue 2
+
+ #4 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #3 (July 6, 2011) Acorn Pooley
+ - Rename EGL_KHR_image_stream to EGL_KHR_stream
+
+ #2 (version #2 skipped)
+
+ #1 (July 1, 2011) Acorn Pooley
+ - Initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt
new file mode 100644
index 0000000..28f8963
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt
@@ -0,0 +1,178 @@
+Name
+
+ KHR_stream_producer_aldatalocator
+
+Name Strings
+
+ EGL_KHR_stream_producer_aldatalocator
+
+Contributors
+
+ Acorn Pooley
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 4, October 4, 2011
+
+Number
+
+ EGL Extension #35
+
+Dependencies
+
+ Requires EGL 1.2 or later.
+ Requires OpenMAX AL 1.1 or later.
+
+ Requires the EGL_KHR_stream extension.
+ Requires the OpenMAX_AL_EGLStream_DataLocator extension.
+
+Overview
+
+ This extension (in conjunction with the
+ OpenMAX_AL_EGLStream_DataLocator extension to OpenMAX AL)
+ allows an OpenMAX AL MediaPlayer object to be connected as the
+ producer of an EGLStream.
+
+ After the EGLStream is created and connected to a consumer, the
+ OpenMAX AL MediaPlayer object is created by calling <pEngine>'s
+ CreateMediaPlayer() method. The <pImageVideoSnk> argument points
+ to an XADataLocator_EGLStream containing the EGLStreamKHR handle
+ of the stream. The CreateMediaPlayer() method creates a
+ MediaPlayer object and connects it as the producer of the
+ EGLStream. (Note that the pFormat member of the XADataSink
+ structure is ignored in this case and may be NULL.)
+
+ Once connected the MediaPlayer inserts image frames into the
+ EGLStream.
+
+Replace section "3.10.3.1 No way to connect producer to EGLStream" in
+the EGL_KHR_stream extension with this:
+
+ 3.10.3.1 OpenMAX AL Stream Producer
+
+ An OpenMAX AL MediaPlayer object can act as a producer for an
+ EGLStream. First create the EGLStream and connect a consumer to
+ it so that the EGLStream is in EGL_STREAM_STATE_CONNECTING_KHR
+ state.
+
+ At this point the application can create an OpenMAX AL MediaPlayer
+ object as described in the OpenMAX AL specification and the
+ OpenMAX_AL_EGLStream_DataLocator extension. The application
+ should create an XADataSink structure with pLocator pointing to an
+ XADataLocator_EGLStream structure referencing the EGLStream (in
+ the pEGLStream member) and the EGLDisplay used to create the
+ EGLStream (in the pEGLDisplay member). The pFormat field of the
+ XADataSink is ignored and should be NULL. This XADataSink
+ structure is passed as the <pImageVideoSnk> argument to
+ <pEngine>'s CreateMediaPlayer() method.
+
+ If the OpenMAX AL implementation is unable to convert image frames
+ to a format usable by <stream>'s consumer then CreateMediaPlayer
+ will fail with a XA_RESULT_CONTENT_UNSUPPORTED error.
+
+ After CreateMediaPlayer() has returned successfully, <stream>'s
+ state will be one of
+ - EGL_STREAM_STATE_EMPTY_KHR
+ - EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ - EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR
+ and the OpenMAX AL MediaPlayer object returned in <pPlayer> will
+ be connected as the producer of <stream>. If the MediaPlayer
+ object is destroyed then <stream>'s state will become
+ EGL_STREAM_STATE_DISCONNECTED_KHR.
+
+ Image and video frame data generated by the OpenMAX AL object (as
+ described in the OpenMAX AL spec) are inserted into <stream> (as
+ described in section "3.10.5 EGLStream operation" of the
+ EGL_KHR_stream extension).
+
+ The OpenMAX AL object will use the value of the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute of <stream> to determine
+ when to insert each image frame. If the
+ EGL_CONSUMER_LATENCY_USEC_KHR attribute is modified (by the
+ consumer and/or by the application) then OpenMAX AL object
+ will adjust its timing within 500 milliseconds of the change. If
+ an image frame is intended to appear to the user at time T (e.g.
+ so that it is synchronized with audio) then the OpenMAX AL object
+ must insert the image frame at time
+ T - EGL_CONSUMER_LATENCY_USEC_KHR
+
+Issues
+ 1. How many image frame buffers should be used?
+
+ RESOLVED: This is left up to the OpenMAX AL implementation.
+
+ 2. How is the image frame size determined?
+
+ Could also expose EGL_WIDTH and EGL_HEIGHT in the attrib_list
+ as a hint (or as a requirement) as to what size should be
+ used. However, a MediaPlayer object typically knows what size
+ to decode based on the source of the data. So this is
+ probably not necessary. If needed it can be added with a
+ layered extension.
+
+ RESOLVED: Leave this up to the OpenMAX AL MediaPlayer object.
+
+ 3. What image frame format should be used?
+
+ RESOLVED: This is a negotiation between the consumer and
+ producer, but ultimately the producer must convert to the
+ format that the consumer requests, or fail if that is not
+ possible.
+
+ Details of any such communication is implementation dependent
+ and outside the scope of this specification.
+
+ 4. Should this extension create an XADataSink structure rather
+ than making the application create its own as described in
+ OpenMAX_AL_EGLStream_DataLocator?
+
+ RESOLVED: NO no need to do this.
+
+ 5. (This issue no longer applies)
+ Should this extension allow the application to ignore the
+ XADataSink structure returned by eglStreamProducerALDataSource
+ and instead use its own?
+
+ RESOLVED: This issue no longer applies
+
+ 6. (This issue no longer applies)
+ Should eglStreamProducerALDataSource check that <ppDataSink>
+ is not NULL and that <ppDataSink> points to a pointer that is
+ NULL?
+
+ RESOLVED: This issue no longer applies
+
+
+Revision History
+
+ #4 (October 4, 2011) Acorn Pooley
+ - Convert from an NV extension to a KHR extension
+
+ #3 (September 23, 2011) Acorn Pooley
+ - Eliminate the eglStreamProducerALDataSource function.
+ - Rename AL0124b_EGLImageStream_DataLocator_Nokia to
+ OpenMAX_AL_EGLStream_DataLocator and point to new link.
+ - Resolve issue 2
+
+ #2 (July 6, 2011) Acorn Pooley
+ - remove the creation of the XADataSink by
+ eglStreamProducerALDataSource()
+
+ #1 (June 30, 2011) Acorn Pooley
+ - initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt
new file mode 100644
index 0000000..321ff7a
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt
@@ -0,0 +1,386 @@
+Name
+
+ KHR_stream_producer_eglsurface
+
+Name Strings
+
+ EGL_KHR_stream_producer_eglsurface
+
+Contributors
+
+ Acorn Pooley
+ Jamie Gennis
+ Marcus Lorentzon
+
+Contacts
+
+ Acorn Pooley, NVIDIA (apooley 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on December 2, 2011.
+
+Version
+
+ Version 11, June 18, 2012
+
+Number
+
+ EGL Extension #34
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires OpenGL ES 1.1 or OpenGL ES 2.0.
+
+ Requires the EGL_KHR_stream extension.
+
+Overview
+
+ This extension allows an EGLSurface to be created as a producer of
+ images to an EGLStream. Each call to eglSwapBuffers posts a new
+ image frame into the EGLStream.
+
+New Procedures and Functions
+
+ EGLSurface eglCreateStreamProducerSurfaceKHR(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLStreamKHR stream,
+ const EGLint *attrib_list)
+
+New Tokens
+
+ Bit that can appear in the EGL_SURFACE_TYPE of an EGLConfig:
+
+ EGL_STREAM_BIT_KHR 0x0800
+
+
+
+
+Add a row to "Table 3.2: Types of surfaces supported by an EGLConfig"
+in the EGL spec, right after the EGL_PBUFFER_BIT row:
+
+ EGL Token Name Description
+ -------------- --------------------------
+ EGL_STREAM_BIT_KHR EGLConfig supports streams
+
+
+In the second paragraph of section "Other EGLConfig Attribute
+Description" in the EGL spec, replace
+ EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT
+with
+ EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT | EGL_STREAM_BIT_KHR
+and replace
+ "...cannot be used to create a pbuffer or pixmap."
+with
+ "...cannot be used to create a pbuffer, pixmap, or stream."
+
+
+Replace section "3.10.3.1 No way to connect producer to EGLStream" in
+the EGL_KHR_stream extension with this:
+
+ 3.10.3.1 Stream Surface Producer
+
+ Call
+
+ EGLSurface eglCreateStreamProducerSurfaceKHR(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLStreamKHR stream,
+ const EGLint *attrib_list)
+
+ to create an EGLSurface and connect it as the producer of
+ <stream>.
+
+ <attrib_list> specifies a list of attributes for <stream>. The
+ list has the same structure as described for eglChooseConfig. The
+ attributes EGL_WIDTH and EGL_HEIGHT must both be specified in the
+ <attrib_list>.
+
+ EGL_WIDTH and EGL_HEIGHT indicate the width and height
+ (respectively) of the images that makes up the stream.
+
+ The EGLSurface producer inserts an image frame into <stream> once
+ for each time it is passed to eglSwapBuffers(). The image frame
+ is inserted after the GL has finished previous rendering commands.
+ Refer to section "3.10.5 EGLStream operation" in the
+ EGL_KHR_stream extension specification for operation of the
+ EGLStream when an image frame is inserted into it.
+
+ If <stream> is not in the EGL_STREAM_STATE_EMPTY_KHR,
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR, or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR when passed to
+ eglSwapBuffers(), then eglSwapBuffers will return EGL_FALSE and
+ generate an EGL_BAD_CURRENT_SURFACE error.
+
+ If the application would like to have the results of rendering
+ appear on the screen at a particular time then it must query the
+ value of EGL_CONSUMER_LATENCY_USEC_KHR after calling
+ eglCreateStreamProducerSurfaceKHR. This is the estimated time that
+ will elapse between the time the image frame is inserted into the
+ EGLStream and the time that the image frame will appear to the
+ user.
+
+ The image frame is not inserted into the EGLStream until the GL
+ has finished rendering it. Therefore predicting exactly when the
+ image frame will be inserted into the stream is nontrivial.
+
+ If it is critical that this frame of data reach the screen at a
+ particular point in time, then the application can
+ - render the frame (using GL/GLES commands)
+ - call glFinish (or use other synchronization techniques to
+ ensure rendering has completed).
+ - wait until the time that the frame should appear to the user
+ MINUS the value of EGL_CONSUMER_LATENCY_USEC_KHR.
+ - call eglSwapBuffers
+ This will allow the image frame to be inserted into the EGLStream
+ at the correct time ("Image Frame Intended Display Time" minus
+ "Consumer Latency") so that it will be displayed ("Image Frame
+ Actual Display Time" as close as possible to the desired time.
+
+ However, this will cause the GPU to operate in lockstep with the
+ CPU which can cause poor performance. In most cases it will be
+ more important for the image frame to appear to the user "as soon
+ as possible" rather than at a specific point in time. So in most
+ cases the application can ignore the value of
+ EGL_CONSUMER_LATENCY_USEC_KHR, not call glFinish, and not wait
+ before calling eglSwapBuffers.
+
+ On failure eglCreateStreamProducerSurfaceKHR returns EGL_NO_SURFACE
+ and generates an error.
+
+ - EGL_BAD_PARAMETER if EGL_WIDTH is not specified or is specified
+ with a value less than 1.
+
+ - EGL_BAD_PARAMETER if EGL_HEIGHT is not specified or is specified
+ with a value less than 1.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_CONNECTING_KHR.
+
+ - EGL_BAD_MATCH is generated if <config> does not have the
+ EGL_STREAM_BIT_KHR set in EGL_SURFACE_TYPE.
+
+ - EGL_BAD_MATCH is generated if the implementation is not able to
+ convert color buffers described by <config> into image frames
+ that are acceptable by the consumer that is connected to
+ <stream>.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+Add a section preceding "3.9.3 Posting Semantics" in the EGL
+specification:
+
+ 3.9.x Posting to a Stream
+
+ To post the color buffer to an EGLStream with an EGLSurface
+ producer, call
+
+ EGLBoolean eglSwapBuffers(
+ EGLDisplay dpy,
+ EGLSurface surface);
+
+ If <surface> is the producer of an EGLStream then the
+ contents of the color buffer are inserted as a new image frame
+ into the EGLStream.
+
+ When eglSwapBuffers returns the contents of the color buffer will
+ have been inserted into the EGLStream as described in section
+ "3.10.5 EGLStream operation" in the EGL_KHR_stream extension
+ specification, and the EGL_PRODUCER_FRAME_KHR attribute and
+ EGL_STREAM_STATE_KHR attribute values will reflect this.
+
+ The contents of the color buffer and all ancillary buffers are
+ always undefined after calling eglSwapBuffers.
+
+ eglSwapBuffers is never synchronized to a video frame when
+ <surface> is the producer for an EGLStream (it is as if the
+ swapinterval (set by eglSwapInterval, see below section "3.9.3
+ Posting Semantics") is 0).
+
+ It is implementation dependent whether eglSwapBuffers actually
+ waits for rendering to the color buffer to complete before
+ returning, but except for timing it must appear to the application
+ that all rendering to the EGLSurface (e.g. all previous gl
+ commands) completed before the image frame was inserted into the
+ EGLStream and eglSwapBuffers returned (as described below in
+ section "3.9.3 Posting Semantics").
+
+
+Add to section "3.9.4 Posting Errors" in the EGL specification a new
+sentence as the 2nd to last sentence in the first paragraph:
+
+ If eglSwapBuffers is called and the EGLStream associated with
+ surface is no longer valid, an EGL_BAD_STREAM_KHR error is
+ generated.
+
+
+Issues
+ 1. How many image frame buffers should be used?
+
+ DISCUSSION:
+ - leave up to implementation?
+ - leave up to producer?
+ - need hints from consumer?
+ - In practice 1, 2, and 3 buffers mean different semantics
+ which are visible to both the producer and consumer. Each
+ may be useful. I cannot think of a use for more than 3
+ buffers for EGL_KHR_stream_surface. (For a video producer
+ more than 3 often does make sense, but that is a different
+ extension.)
+
+ One possibility: expose EGL_BUFFER_COUNT_KHR to application.
+
+ It probably does not make sense to ever use more or less than
+ 3 buffers. One that is the EGLSurface back buffer. One that
+ is waiting for the consumer to acquire. And one that the
+ consumer has acquired and is actively consuming.
+
+ RESOLVED: remove the EGL_BUFFER_COUNT_KHR parameter and always
+ use 3 buffers. This attribute can be added back with a
+ layered extension later if needed.
+
+ 2. How is the resolution (width/height) of image frames set?
+
+ RESOLVED: The width and height are set with the required
+ EGL_WIDTH and EGL_HEIGHT attributes. These do not change for
+ the life of <stream>.
+
+ 3. How is the image format, zbuffering, etc set?
+
+ RESOLVED: These are all determined by the <config>. These do
+ not change for the life of <stream>.
+
+ 4. How does eglSwapBuffers act if there are already image frames
+ in the EGLStream when it is called.
+
+ RESOLVED: Frames are inserted into the EGLStream as described
+ in section "3.10.5 EGLStream operation" in the EGL_KHR_stream
+ extension specification. In particular:
+
+ If the value of EGL_STREAM_FIFO_LENGTH_KHR is 0 or if the
+ EGL_KHR_stream_fifo extension is not supported then the
+ new frame replaces any frames that already exist in the
+ EGLStream. If the consumer is already consuming a frame
+ then it continues to consume that same frame, but the next
+ time the consumer begins to consume a frame (e.g. the
+ next time eglStreamConsumerAcquireKHR() is called for a
+ gltexture consumer) the newly rendered image frame will be
+ consumed. (This is the standard behavior for ANY producer
+ when EGL_STREAM_FIFO_LENGTH_KHR is 0, described as "mailbox
+ mode").
+
+ If the EGL_KHR_stream_fifo extension is supported and the
+ value of EGL_STREAM_FIFO_LENGTH_KHR is greater than 0 then
+ the newly rendered frame will be inserted into the
+ EGLStream. If the EGLStream is full (already contains
+ EGL_STREAM_FIFO_LENGTH_KHR frames) then eglSwapBuffers
+ will block until there is room in the fifo. Note that
+ this can deadlock if the consumer is running in the same
+ thread as the producer since the consumer will never be
+ able to consume a frame if the thread is blocked waiting
+ for room in the fifo. This fifo-related behavior is
+ described in the EGL_KHR_stream_fifo specification (this
+ behavior is not specific to this producer; it works the
+ same for all producers and all consumers).
+
+ All rendering commands must complete before the color
+ buffer is inserted into the EGLStream, or at least this is how
+ the behavior must appear to the application.
+
+ To be precise: when eglSwapBuffers returns the rendering
+ commands may or may not actually be complete, but the
+ following must all be true:
+ - The EGL_PRODUCER_FRAME_KHR value reflects the frame that
+ was just swapped by eglSwapBuffers
+ - The EGL_STREAM_STATE_KHR indicates that the image frame
+ is available (i.e. its value is
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR)
+ - In mailbox mode if the consumer consumes a new frame it
+ will get this new frame (not an older frame). (For
+ example, with a EGL_NV_stream_consumer_gltexture
+ consumer, a call to eglStreamConsumerAcquireKHR() will
+ latch this new frame.)
+ - In fifo mode (see EGL_KHR_stream_fifo extension) if the
+ consumer consumes a new frame and all previous frames
+ have been consumed it will get this new frame (not an
+ older frame). (For example, with a
+ EGL_NV_stream_consumer_gltexture consumer, a call to
+ eglStreamConsumerAcquireKHR() will latch this new
+ frame.)
+ - If a consumer consumes the swapped frame, all GL (and
+ other API) commands called prior to eglSwapBuffers
+ will take effect on the image frame before the
+ consumer consumes it. In other words, the consumer
+ will never consume a partially rendered frame. (For
+ example, with EGL_NV_stream_consumer_gltexture
+ consumer, if the app does this:
+ eglSwapBuffers() // swap the producer EGLSurface
+ eglStreamConsumerAcquireKHR() // acquire the swapped image
+ glDrawArrays() // draw something using the texture
+ then the texture used in the glDrawArrays() command
+ will contain the image rendered by all gl (and/or
+ other API) commands preceding the eglSwapBuffers call
+ as if the app had called glFinish and/or eglWaitClient
+ just before calling eglSwapBuffers (but note that this
+ is implicit in eglSwapBuffers; the app does NOT need
+ to actually call glFinish or any other synchronization
+ functions in order to get this effect, and in fact
+ explicitly calling glFinish and/or eglWaitClient there
+ may significantly and negatively affect performance).)
+
+Revision History
+
+ #11 (June 18. 2012) Acorn Pooley
+ - Replace EGLStream with EGLStreamKHR in function prototypes.
+
+ #10 (June 15, 2012) Acorn Pooley
+ - Fix eglCreateStreamProducerSurfaceKHR name (was missing KHR)
+
+ #9 (October 17, 2011) Acorn Pooley
+ - Clarify issue 4
+
+ #8 (October 12, 2011) Acorn Pooley
+ - remove interactions with EGL_KHR_stream_fifo extension (they
+ are already decribed in that extension).
+
+ #7 (October 11, 2011) Acorn Pooley
+ - Add issue 4
+ - add changes to section 3.9 of the EGL spec to clarify
+ eglSwapBuffer behavior
+
+ #6 (October 4, 2011) Acorn Pooley
+ - Convert from an NV extension to a KHR extension
+
+ #5 (September 30, 2011) Acorn Pooley
+ - Remove EGL_BUFFER_COUNT_NV (0x321D) attribute and resolve issue 1.
+
+ #4 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #3 (July 6, 2011) Acorn Pooley
+ - Rename EGL_KHR_image_stream to EGL_KHR_stream
+
+ #2 (June 30, 2011) Acorn Pooley
+ - remove dependence on EGLImage
+ - clarify overview
+ - remove glossary (it can be seen in EGL_KHR_stream ext)
+ - Add EGL_STREAM_BIT
+ - clarify description
+ - describe attribute
+
+ #1 (April 20, 2011) Acorn Pooley
+ - initial draft
+
+# vim:ai:ts=4:sts=4:expandtab:textwidth=70
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_surfaceless_context.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_surfaceless_context.txt
new file mode 100644
index 0000000..4e8751b
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_surfaceless_context.txt
@@ -0,0 +1,174 @@
+Name
+
+ KHR_surfaceless_context
+
+Name Strings
+
+ EGL_KHR_surfaceless_context
+
+Contributors
+
+ Acorn Pooley
+ Jon Leech
+ Kristian Hoegsberg
+ Steven Holte
+
+Contact
+
+ Acorn Pooley: apooley at nvidia dot com
+
+Notice
+
+ Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on June 6, 2012.
+ Approved by the Khronos Board of Promoters on July 27, 2012.
+
+Version
+
+ Version 4, 2012/05/03
+
+Number
+
+ EGL Extension #40
+
+Dependencies
+
+ EGL 1.0 is required.
+
+ The functionality of this extension is not supported by client OpenGL ES
+ contexts unless the GL_OES_surfaceless_context extension is supported by
+ those contexts.
+
+ Written against wording of EGL 1.4 specification.
+
+Overview
+
+ These extensions allows an application to make a context current by
+ passing EGL_NO_SURFACE for the write and read surface in the
+ call to eglMakeCurrent. The motivation is that applications that only
+ want to render to client API targets (such as OpenGL framebuffer
+ objects) should not need to create a throw-away EGL surface just to get
+ a current context.
+
+ The state of an OpenGL ES context with no default framebuffer provided
+ by EGL is the same as a context with an incomplete framebuffer object
+ bound.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ None
+
+Additions to the EGL Specification section "3.7.3 Binding Contexts and
+Drawables"
+
+ Replace the following two error conditions in the
+ list of eglMakeCurrent errors:
+
+ " * If <ctx> is not a valid context, an EGL_BAD_CONTEXT error is
+ generated.
+ * If either <draw> or <read> are not valid EGL surfaces, an
+ EGL_BAD_SURFACE error is generated."
+
+ with the following error conditions:
+
+ " * If <ctx> is not a valid context and is not EGL_NO_CONTEXT, an
+ EGL_BAD_CONTEXT error is generated.
+ * If either <draw> or <read> are not valid EGL surfaces and are
+ not EGL_NO_SURFACE, an EGL_BAD_SURFACE error is generated.
+ * If <ctx> is EGL_NO_CONTEXT and either <draw> or <read> are not
+ EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
+ * If either of <draw> or <read> is a valid surface and the other
+ is EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
+ * If <ctx> does not support being bound without read and draw
+ surfaces, and both <draw> and <read> are EGL_NO_SURFACE, an
+ EGL_BAD_MATCH error is generated."
+
+ Replace the paragraph starting "If <ctx> is EGL_NO_CONTEXT and
+ <draw> and <read> are not EGL_NO_SURFACE..." with
+
+ "If both <draw> and <read> are EGL_NO_SURFACE, and <ctx> is a context
+ which supports being bound without read and draw surfaces, then no error
+ is generated and the context is made current without a
+ <default framebuffer>. The meaning of this is defined by the API of the
+ supporting context. (See chapter 4 of the OpenGL 3.0 Specification, and
+ the GL_OES_surfaceless_context OpenGL ES extension.)"
+
+ Append to the paragraph starting "The first time an OpenGL or OpenGL
+ ES context is made current..." with
+
+ "If the first time <ctx> is made current, it is without a default
+ framebuffer (e.g. both <draw> and <read> are EGL_NO_SURFACE), then
+ the viewport and scissor regions are set as though
+ glViewport(0,0,0,0) and glScissor(0,0,0,0) were called."
+
+Interactions with other extensions
+
+ The semantics of having a current context with no surface for OpenGL ES
+ 1.x and OpenGL ES 2.x are specified by the GL_OES_surfaceless_context
+ extension.
+
+Issues
+
+ 1) Do we need a mechanism to indicate which contexts may be bound with
+ <read> and <draw> set to NULL? Or is it ok to require that if this
+ extension is supported then any context of the particular API may be
+ made current with no surfaces?
+
+ RESOLVED. Because multiple API implementations may be available as
+ contexts we cannot guarantee that all OpenGL ES 1.x or OpenGL ES 2.x
+ contexts will support GL_OES_surfaceless_context. If the user attempts
+ to call eglMakeCurrent with EGL_NO_SURFACE on a context which does not
+ support it, this simply results in EGL_BAD_MATCH.
+
+ 2) Do we need to include all of the relevant "default framebuffer" language
+ from the OpenGL specification to properly specify OpenGL ES behavior
+ with no default framebuffer bound?
+
+ RESOLVED. Yes, the behaviour of the GLES contexts when no default
+ framebuffer is associated with the context has been moved to the OpenGL
+ ES extension OES_surfaceless_context.
+
+ 3) Since these EGL extensions also modify OpenGL ES behavior and introduce
+ a new error condition, do we want corresponding OpenGL ES extension
+ strings as well?
+
+ RESOLVED. Yes, see GL_OES_surfaceless_context extension.
+
+ 4) How does this document interact with EGL_KHR_create_context and OpenGL
+ contexts?
+
+ RESOLVED. Some language defining the error conditions of eglMakeCurrent
+ have been imported from the draft specification of EGL_KHR_create_context
+ and the definitions of the behaviour of the GLES contexts without a
+ default framebuffer have been moved to GL_OES_surfaceless_context. Any
+ further interactions are left to the create_context extension to define
+ when it is completed.
+
+Revision History
+
+ Version 5, 2014/01/07 (Jon Leech) - Correct references to
+ EXT_surfaceless_context with GL_OES_surfaceless_context.
+
+ Version 4, 2012/02/27 (Steven Holte) - Add language for error conditions
+ from EGL_KHR_create_context, and resolutions of issues. Combined API
+ specific extensions into a single extension.
+
+ Version 3, 2010/08/19 (Kristian Hoegsberg) - Move default framebuffer
+ language to new GLES extension (GL_OES_surfaceless_context) and make
+ this extension depend on that.
+
+ Version 2, 2010/08/03 (Jon Leech) - add default framebuffer language to
+ the OpenGL ES Specifications, including changes to initial GL state and
+ the FRAMEBUFFER_UNDEFINED incompleteness status when no default
+ framebuffer is bound.
+
+ Version 1, 2010/07/09 (Acorn Pooley) - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt
new file mode 100644
index 0000000..310dc39
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt
@@ -0,0 +1,449 @@
+Name
+
+ KHR_swap_buffers_with_damage
+
+Name Strings
+
+ EGL_KHR_swap_buffers_with_damage
+
+Contributors
+
+ Robert Bragg
+ Tapani Pälli
+ Kristian Høgsberg
+ Benjamin Franzke
+ Ian Stewart
+ James Jones
+ Ray Smith
+
+Contact
+
+ Robert Bragg, Intel (robert.bragg 'at' intel.com)
+
+IP Status
+
+ No known claims.
+
+Notice
+
+ Copyright (c) 2014 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the EGL Working Group on September 17, 2014.
+ Approved by the Khronos Board of Promoters on November 7, 2014.
+
+Version
+
+ Version 13, February 20, 2020
+
+Number
+
+ EGL Extension #84
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL 1.4
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension provides a means to issue a swap buffers request to
+ display the contents of the current back buffer and also specify a
+ list of damage rectangles that can be passed to a system
+ compositor so it can minimize how much it has to recompose.
+
+ This should be used in situations where an application is only
+ animating a small portion of a surface since it enables the
+ compositor to avoid wasting time recomposing parts of the surface
+ that haven't changed.
+
+Terminology
+
+ This extension and the EGL_KHR_partial_update extension both use the word
+ "damage" for subtly but significantly different purposes:
+
+ "Surface damage" is what the EGL_KHR_swap_buffers_with_damage extension
+ is concerned with. This is the area of the *surface* that changes between
+ frames for that surface. It concerns the differences between two buffers -
+ the current back buffer and the current front buffer. It is useful only to
+ the consumer.
+
+ "Buffer damage" is what the EGL_KHR_partial_update extension is concerned
+ with. This is the area of a particular buffer that has changed since that
+ same buffer was last used. As it only concerns changes to a single buffer,
+ there is no dependency on the next or previous frames or any other buffer.
+ It therefore cannot be used to infer anything about changes to the surface,
+ which requires linking one frame or buffer to another. Buffer damage is
+ therefore only useful to the producer.
+
+ Following are examples of the two different damage types. Note that the
+ final surface content is the same in both cases, but the damaged areas
+ differ according to the type of damage being discussed.
+
+Surface damage example (EGL_KHR_swap_buffers_with_damage)
+
+ The surface damage for frame n is the difference between frame n and frame
+ (n-1), and represents the area that a compositor must recompose.
+
+ Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ | | |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Final surface
+ | | | | | | |#########| |#########| content
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ |@@@@@@@@@| |@@@@@@@@@| | | | | | |
+ |@@@@@@@@@| | | |@@@@@@@@@| | | | | Surface damage
+ |@@@@@@@@@| | | | | |@@@@@@@@@| | |
+ |@@@@@@@@@| | | | | | | |@@@@@@@@@|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+Buffer damage example (EGL_KHR_partial_update)
+
+ The buffer damage for a frame is the area changed since that same buffer was
+ last used. If the buffer has not been used before, the buffer damage is the
+ entire area of the buffer.
+
+ The buffer marked with an 'X' in the top left corner is the buffer that is
+ being used for that frame. This is the buffer to which the buffer age and
+ the buffer damage relate.
+
+ Note that this example shows a double buffered surface - the actual number
+ of buffers could be different and variable throughout the lifetime of the
+ surface. The age *must* therefore be queried for every frame.
+
+ Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ | | |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Final surface
+ | | | | | | |#########| |#########| content
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ X---------+ +---------+ X---------+ +---------+ X---------+
+ | | | | |#########| |#########| |#########|
+ | | | | |#########| |#########| |#########| Buffer 1 content
+ | | | | | | | | |#########|
+ | | | | | | | | |#########|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+ X---------+ +---------+ X---------+ +---------+
+ |#########| |#########| |#########| |#########|
+ | | | | |#########| |#########| Buffer 2 content
+ | | | | |#########| |#########|
+ | | | | | | | |
+ +---------+ +---------+ +---------+ +---------+
+
+ 0 0 2 2 2 Buffer age
+
+ +---------+ +---------+ +---------+ +---------+ +---------+
+ |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| | | | |
+ |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| |@@@@@@@@@| | | Buffer damage
+ |@@@@@@@@@| |@@@@@@@@@| | | |@@@@@@@@@| |@@@@@@@@@|
+ |@@@@@@@@@| |@@@@@@@@@| | | | | |@@@@@@@@@|
+ +---------+ +---------+ +---------+ +---------+ +---------+
+
+
+New Procedures and Functions
+
+ EGLBoolean eglSwapBuffersWithDamageKHR (
+ EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *rects,
+ EGLint n_rects);
+
+New Tokens
+
+ None
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add the following text to subsection 3.9.1 titled "Posting to a
+ Window" after the description of eglSwapBuffers.
+
+ As an alternative to eglSwapBuffers use:
+
+ EGLBoolean eglSwapBuffersWithDamageKHR (
+ EGLDisplay dpy,
+ EGLSurface surface,
+ const EGLint *rects,
+ EGLint n_rects);
+
+ to do the same thing as eglSwapBuffers but additionally report
+ a list of rectangles that define the region that has truly
+ changed since the last frame. To be clear; the entire contents
+ of the back buffer will still be swapped to the front so
+ applications using this API must still ensure that the entire
+ back buffer is consistent. The rectangles are only a hint for
+ the system compositor so it can avoid recomposing parts of the
+ surface that haven't really changed.
+ <rects> points to a list of integers in groups of four that
+ each describe a rectangle in screen coordinates in this
+ layout: {x, y, width, height}. The rectangles are specified
+ relative to the bottom-left of the surface and the x and y
+ components of each rectangle specify the bottom-left position
+ of that rectangle. <n_rects> determines how many groups of 4
+ integers can be read from <rects>. It is not necessary to
+ avoid overlaps of the specified rectangles.
+ If <n_rects> is 0 then <rects> is ignored and the entire
+ surface is implicitly damaged and the behaviour is equivalent
+ to calling eglSwapBuffers.
+ The error conditions checked for are the same as for the
+ eglSwapBuffers api.
+
+ Modify the first paragraph of Section 3.9.1 titled "Native Window
+ Resizing"
+
+ "If the native window corresponding to <surface> has been
+ resized prior to the swap, <surface> must be resized to match.
+ <surface> will normally be resized by the EGL implementation
+ at the time the native window is resized. If the
+ implementation cannot do this transparently to the client,
+ then eglSwapBuffers and eglSwapBuffersWithDamageKHR must
+ detect the change and resize surface prior to copying its
+ pixels to the native window. In this case the meaningfulness
+ of any damage rectangles forwarded by
+ eglSwapBuffersWithDamageKHR to the native window system is
+ undefined."
+
+ Modify the following sentences in Section 3.9.3, page 51 (Posting
+ Semantics)
+
+ Paragraph 2, first sentence:
+
+ "If <dpy> and <surface> are the display and surface for the
+ calling thread's current context, eglSwapBuffers,
+ eglSwapBuffersWithDamageKHR, and eglCopyBuffers perform an
+ implicit flush operation on the context (glFlush for OpenGL or
+ OpenGL ES context, vgFlush for an OpenVG context)."
+
+ Paragraph 3, first sentence:
+
+ "The destination of a posting operation (a visible window, for
+ eglSwapBuffers or eglSwapBuffersWithDamageKHR, or a native
+ pixmap, for eglCopyBuffers) should have the same number of
+ components and component sizes as the color buffer it's being
+ copied from."
+
+ Paragraph 6, first two sentences:
+
+ "The function
+
+ EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint
+ interval);
+
+ specifies the minimum number of video frame periods per color
+ buffer post operation for the window associated with the
+ current context. The interval takes effect when eglSwapBuffers
+ or eglSwapBuffersWithDamageKHR is first called subsequent to
+ the eglSwapInterval call."
+
+ Modify the following sentences in Section 3.9.4, page 52 (Posting
+ Errors)
+
+ Paragraph 1, first sentence:
+
+ "eglSwapBuffers, eglSwapBuffersWithDamageKHR, and
+ eglCopyBuffers return EGL_FALSE on failure."
+
+ Paragraph 1, seventh sentence:
+
+ "If eglSwapBuffers or eglSwapBuffersWithDamageKHR are called
+ and the native window associated with <surface> is no longer
+ valid, an EGL_BAD_NATIVE_WINDOW error is generated. If
+ eglSwapBuffersWithDamageKHR is called and <n_rects>, is less
+ than zero or <n_rects> is greater than zero but <rects> is
+ NULL, EGL_BAD_PARAMETER is generated."
+
+Dependencies on OpenGL ES
+
+ None
+
+Dependencies on OpenVG
+
+ None
+
+Issues
+
+1) Do applications have to make sure the rectangles don't overlap?
+
+ RESOLVED: No, that would be inconvenient for applications and we
+ see no difficulty for implementations to supporting overlapping
+ rectangles.
+
+2) Would it be valid for an implementation to discard the list of
+ rectangles internally and work just in terms of the
+ eglSwapBuffers api?
+
+ RESOLVED: Yes, the rectangles are only there for optimization
+ purposes so although it wouldn't be beneficial to applications if
+ it was convenient at times then it would be compliant for an
+ implementation to discard the rectangles and just call
+ eglSwapBuffers instead. The error conditions that should be
+ checked for are compatible with the requirements for
+ eglSwapBuffers.
+
+3) What origin should be used for damage rectangles?
+
+ RESOLVED: Bottom left since this is consistent with all other
+ uses of 2D window coordinates in EGL and OpenGL that specify a
+ bottom left origin.
+
+ Originally this specification was written with a top-left origin
+ for the damage rectangles even though it was known to be
+ inconsistent and that was because most window systems use a
+ top-left origin and there are some awkward semantic details
+ related to handling native window resizing that we had hoped to
+ simplify.
+
+ This extension and also several other existing EGL extensions
+ struggle to guarantee a reliable behaviour in response to native
+ window resizing which can happen asynchronously on some platforms
+ and this can make it difficult for applications to avoid certain
+ visual artefacts.
+
+ The crux of the problem is that when a native window is
+ asynchronously resized then the window system may maintain the old
+ buffer contents with respect to a different origin than EGL's
+ bottom left origin. For this extension that means that EGL damage
+ rectangles that are intended to map to specific surface contents
+ may end up mapping to different contents when a native window is
+ resized because the rectangles and buffer contents will be moved in
+ different directions in relation to the new window size.
+
+ In the end we decided that this issue isn't simply solved by
+ choosing to use a top-left origin and so we can instead aim for
+ consistency and clarify what guarantees we offer in relation to
+ native window resizing separate from this issue.
+
+4) What guarantees do we provide about the meaningfulness of EGL
+ damage rectangles that are forwarded to the native window system
+ when presenting to a native window that has been resized?
+
+ RESOLVED: The meaningfulness of those forwarded damage rectangles
+ is undefined since this simplifies the implementation requirements
+ and we saw very little benefit to applications from providing
+ stricter guarantees.
+
+ The number of applications that would be able to avoid fully
+ redrawing the contents of a window in response to a window resize
+ is expected to be so low that there would be almost no benefit to
+ defining strict guarantees here.
+
+ Since EGL already states that the contents of window surface
+ buffers become undefined when a native window has been resized,
+ this limitation doesn't introduce any new issue for applications
+ to consider. Applications should already fully redraw buffer
+ contents in response to a native window resize, unless they are
+ following some platform specific documentation that provides
+ additional guarantees.
+
+ For an example of the implementation details that make this an
+ awkward issue to provide guarantees for we can consider X11 based
+ platforms where native windows can be resized asynchronously with
+ respect to a client side EGL surface:
+
+ With X11 there may be multiple "gravity" transformations that can
+ affect how surface buffer content is positioned with respect to a
+ new native window size; there is the core X "bit gravity" and
+ there is the EGL driver gravity that determines how a surface's
+ contents with one size should be mapped to a native window with a
+ different size. Without very careful cooperation between the EGL
+ driver and the core X implementation and without the right
+ architecture to be able to do transforms atomically with respect
+ to different clients that may enact a window resize then it is not
+ possible to reliably map EGL damage rectangles to native window
+ coordinates.
+
+ The disadvantage of a driver that is not able to reliably map EGL
+ damage rectangles to native window coordinates is that a native
+ compositor may re-compose the wrong region of window. This may
+ result in a temporary artefact until the full window gets redrawn
+ and then re-composed. X11 already suffers other similar transient
+ artefacts when resizing windows.
+
+ The authors of this spec believe that even if a driver can't do
+ reliable mappings of EGL damage rectangles then compositors would
+ be able mitigate the majority of related artefacts by ignoring
+ sub-window damage during an interactive window resize.
+
+ The authors of this spec believe that that if an X11 driver did
+ want to reliably map EGL damage rectangles to the native window
+ coordinates then that may be technically feasible depending on the
+ driver architecture. For reference one approach that had been
+ considered (but not tested) is as follows:
+
+ 1) When eglSwapBuffersWithDamageKHR is called, send EGL damage
+ rectangles from the client to a driver component within the
+ xserver un-transformed in EGL window surface coordinates with a
+ bottom-left origin.
+
+ 2) Within the X server the driver component should look at the
+ bit-gravity of a window and use the bit-gravity convention to
+ copy EGL surface content to the front-buffer of a native window.
+
+ 3) Within the X server the driver component should use the same
+ gravity transform that was used to present the surface content
+ to also transform the EGL damage rectangle coordinates.
+
+ Note that because this transform is done in the xserver then
+ this is implicitly synchronized with all clients that would
+ otherwise be able to enact an asynchronous window resize.
+
+
+Revision History
+
+ Version 1, 29/07/2011
+ - First draft
+ Version 2, 03/08/2011
+ - Clarify that the rectangles passed may overlap
+ Version 3, 01/09/2011
+ - Fix a missing '*' in prototype to make rects a pointer
+ Version 4, 11,02,2012
+ - Clarify that implementing in terms of eglSwapBuffers would be
+ compliant.
+ Version 5, 11,02,2012
+ - Tweak the cases where we report BAD_PARAMETER errors
+ Version 6, 05/02/2013
+ - Specify more thorough updates across the EGL 1.4 spec
+ wherever it relates to the eglSwapBuffers api
+ - Clarify that passing <n_rects> of 0 behaves as if
+ eglSwapBuffers were called.
+ Version 7, 14/02/2013
+ - Specify that a bottom-left origin should be used for rectangles
+ Version 8, 19/03/2013
+ - Add Ian and James as contributors
+ - Add an issue explaining why we changed to a bottom-left origin
+ - Clarify that the behaviour is undefined when presenting to a
+ native window that has been resized.
+ - Document the awkward details that would be involved in
+ providing more strict guarantees when presenting to a native
+ window that has been resized.
+ Version 9, 12/06/2013, Chad Versace <chad.versace@intel.com>
+ - Remove the "all rights reserved" clause from the copyright notice. The
+ removal does not change the copyright notice's semantics, since the
+ clause is already implied by any unadorned copyright notice. But, the
+ removal does diminish the likelihood of unwarranted caution in readers
+ of the spec.
+ - Add "IP Status" section to explicitly state that this extension has no
+ knonw IP claims.
+ Version 10, 19/08/2014
+ - Draft for promoting to KHR
+ - Added section on terminology and damage types
+ Version 11, 10/09/2014
+ - Marked as display extension
+ Version 12, 11/05/2014
+ - Change copyright to Khronos after signoff from Intel.
+ Version 13, 20/02/2020, Jon Leech
+ - Constify rects parameter (EGL-Registry issue 98).
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_vg_parent_image.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_vg_parent_image.txt
new file mode 100644
index 0000000..719bb11
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_vg_parent_image.txt
@@ -0,0 +1,138 @@
+Name
+
+ KHR_vg_parent_image
+
+Name Strings
+
+ EGL_KHR_vg_parent_image
+
+Contributors
+
+ Ignacio Llamas
+ Gary King
+ Chris Wynn
+
+Contacts
+
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on February 11, 2008.
+
+Version
+
+ Version 5, October 8, 2008
+
+Number
+
+ EGL Extension #4
+
+Dependencies
+
+ This extension requires EGL 1.2 and the EGL_KHR_image extension,
+ and an OpenVG implementation
+
+ This specification is written against the wording of the EGL Image
+ (EGL_KHR_image) specification.
+
+Overview
+
+ This extension provides a mechanism for creating EGLImage objects
+ from OpenVG VGImage API resources. For an overview of EGLImage
+ operation, please see the EGL_KHR_image specification.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ EGL_VG_PARENT_IMAGE_KHR 0x30BA
+
+
+Additions to the EGL Image (EGL_KHR_image) Specification:
+
+ Add the following to Table aaa (Legal values for CreateImageKHR
+ <target> parameter), Section 2.5.1 (EGLImage Specification)
+
+ +--------------------------+--------------------------------------------+
+ | <target> | Notes |
+ +--------------------------+--------------------------------------------+
+ | EGL_VG_PARENT_IMAGE_KHR | Used for OpenVG VGImage objects |
+ +--------------------------+--------------------------------------------+
+
+ Insert the following text after paragraph 3 ("If <target> is
+ NATIVE_PIXMAP_KHR...") of Section 2.5.1 (EGLImage Specification):
+
+ "If <target> is EGL_VG_PARENT_IMAGE_KHR, <dpy> must be a valid EGLDisplay,
+ <ctx> must be a valid OpenVG API context on that display, and <buffer>
+ must be a handle of a VGImage object valid in the specified context, cast
+ into the type EGLClientBuffer. Furthermore, the specified VGImage
+ <buffer> must not be a child image (i.e. the value returned by
+ vgGetParent(<buffer>) must be <buffer>). If the specified VGImage
+ <buffer> has any child images (i.e., vgChildImage has been previously
+ called with the parent parameter set to <buffer>), all child images will
+ be treated as EGLImage siblings after CreateImageKHR returns. Any values
+ specified in <attr_list> are ignored."
+
+ Add the following errors to the end of the list in Section 2.5.1 (EGLImage
+ Specification):
+
+ " * If <target> is EGL_VG_PARENT_IMAGE_KHR, and <dpy> is not a
+ valid EGLDisplay, the error EGL_BAD_DISPLAY is generated.
+
+ * If <target> is EGL_VG_PARENT_IMAGE_KHR and <ctx> is not a
+ valid EGLContext, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_VG_PARENT_IMAGE_KHR and <ctx> is not a valid
+ OpenVG context, the error EGL_BAD_MATCH is returned.
+
+ * If <target> is EGL_VG_PARENT_IMAGE_KHR and <buffer> is not a handle
+ to a VGImage object in the specified API context <ctx>, the error
+ EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_VG_PARENT_IMAGE_KHR, and the VGImage specified by
+ <buffer> is a child image (i.e., vgGetParent(<buffer>) returns
+ a different handle), the error EGL_BAD_ACCESS is generated."
+
+Issues
+
+ 1. Should this specification allow the creation of EGLImages
+ from OpenVG child images?
+
+ RESOLVED: No. It is believed that properly addressing the
+ interaction of hardware restrictions (e.g., memory alignment),
+ arbitrary image subrectangles, scissor rectangles and viewport
+ rectangles may create an undue burden on implementers. In the
+ interest of providing a useful spec in a timely fashion, this
+ functionality has been disallowed, with the possibility of
+ providing it (if necessary) through a future layered extension.
+
+ This restriction is shared with eglCreatePbufferFromClientBuffer;
+ however, this specification allows EGL Images to be created
+ from VGImages which have child images, functionality not
+ previously available.
+
+Revision History
+
+#5 (Jon Leech, October 8, 2008)
+ - Updated status (approved as part of OpenKODE 1.0)
+#4 (Jon Leech, April 5, 2007)
+ - Assigned enumerant values
+ - Added OpenKODE 1.0 Provisional disclaimer
+#3 (December 14, 2006)
+ - Changed requirement to egl 1.2 to include EGLClientBuffer type.
+ - added error condition descriptions for <dpy> and <ctx>
+#2 (November 27, 2006)
+ - Changed OES token to KHR
diff --git a/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_wait_sync.txt b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_wait_sync.txt
new file mode 100644
index 0000000..aeef96c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/KHR/EGL_KHR_wait_sync.txt
@@ -0,0 +1,278 @@
+Name
+
+ KHR_wait_sync
+
+Name Strings
+
+ EGL_KHR_wait_sync
+
+Contributors
+
+ Jon Leech
+ Tom Cooksey
+ Alon Or-bach
+
+Contacts
+
+ Jon Leech (jon 'at' alumni.caltech.edu)
+
+Notice
+
+ Copyright (c) 2012-2014 The Khronos Group Inc. Copyright terms at
+ http://www.khronos.org/registry/speccopyright.html
+
+Status
+
+ Complete.
+ Approved by the Khronos Board of Promoters on October 26, 2012.
+
+Version
+
+ Version 7, March 12, 2014
+
+Number
+
+ EGL Extension #43
+
+Dependencies
+
+ EGL 1.1 is required.
+
+ EGL_KHR_fence_sync is required.
+
+ EGL_KHR_reusable_sync is affected by this extension.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension adds the ability to wait for signaling of sync objects
+ in the server for a client API context, rather than in the application
+ thread bound to that context. This form of wait does not necessarily
+ block the application thread which issued the wait (unlike
+ eglClientWaitSyncKHR), so the application may continue to issue commands
+ to the client API context or perform other work in parallel, leading to
+ increased performance. The best performance is likely to be achieved by
+ implementations which can perform this new wait operation in GPU
+ hardware, although this is not required.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ EGLint eglWaitSyncKHR(
+ EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags)
+
+New Tokens
+
+ None
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Add to section 3.8.1 "Sync Objects" (as already modified
+ by EGL_KHR_fence_sync and/or EGL_KHR_reusable_sync):
+
+ Following the description of eglClientWaitSyncKHR, add:
+
+ "The command
+
+ EGLint eglWaitSyncKHR(EGLDisplay dpy,
+ EGLSyncKHR sync,
+ EGLint flags)
+
+ is similar to eglClientWaitSyncKHR, but instead of blocking and not
+ returning to the application until <sync> is signaled, eglWaitSyncKHR
+ returns immediately. On success, EGL_TRUE is returned, and the server
+ for the client API context [fn1] will block until <sync> is signaled
+ [fn2].
+ [fn1 - the server may choose to wait either in the CPU executing
+ server-side code, or in the GPU hardware if it supports this
+ operation.]
+ [fn2 - eglWaitSyncKHR allows applications to continue to queue
+ commands from the application in anticipation of the sync being
+ signaled, potentially increasing parallelism between application,
+ client API server code, and the GPU. The server only blocks
+ execution of commands for the specific context on which
+ eglWaitSyncKHR was issued; other contexts implemented by the same
+ server are not affected.]
+
+ <sync> has the same meaning as for eglClientWaitSyncKHR.
+
+ <flags> must be 0.
+
+ Errors
+ ------
+ eglWaitSyncKHR returns EGL_FALSE on failure and generates an error as
+ specified below, but does not cause the server for the client API
+ context to block.
+
+ * If the current context for the currently bound client API does not
+ support the client API extension indicating it can perform server
+ waits, an EGL_BAD_MATCH error is generated.
+ * If no context is current for the currently bound client API (i.e.,
+ eglGetCurrentContext returns EGL_NO_CONTEXT), an EGL_BAD_MATCH error
+ is generated.
+ * If <dpy> does not match the EGLDisplay passed to eglCreateSyncKHR
+ when <sync> was created, the behavior is undefined.
+ * If <sync> is not a valid sync object for <dpy>, an EGL_BAD_PARAMETER
+ error is generated.
+ * If <flags> is not 0, an EGL_BAD_PARAMETER error is generated.
+
+ Each client API which supports eglWaitSyncKHR indicates this support in
+ the form of a client API extension. If the GL_OES_EGL_sync extension is
+ supported by any version of OpenGL ES, a server wait may be performed
+ when the currently bound API is OpenGL ES. If the VG_KHR_EGL_sync
+ extension is supported by OpenVG, a server wait may be performed when
+ the currently bound API is OpenVG."
+
+ Add new subsubsection following eglWaitSyncKHR:
+
+ "Multiple Waiters
+ ----------------
+
+ It is possible for the application thread calling a client API to be
+ blocked on a sync object in a eglClientWaitSyncKHR command, the server
+ for that client API context to be blocked as the result of a previous
+ eglWaitSyncKHR command, and for additional eglWaitSyncKHR commands to be
+ queued in the server, all for a single sync object. When the sync object
+ is signaled in this situation, the client will be unblocked, the server
+ will be unblocked, and all such queued eglWaitSyncKHR commands will
+ continue immediately when they are reached.
+
+ Sync objects may be waited on or signaled from multiple contexts of
+ different client API types in multiple threads simultaneously, although
+ some client APIs may not support eglWaitSyncKHR. This support is
+ determined by client API-specific extensions."
+
+ Additions to the EGL_KHR_reusable_sync extension, modifying the description
+ of eglSignalSyncKHR to include both client and server syncs:
+
+ "... If as a result of calling eglSignalSyncKHR the status of <sync>
+ transitions from unsignaled to signaled, any eglClientWaitSyncKHR
+ * or eglWaitSyncKHR *
+ commands blocking on <sync> will unblock. ..."
+
+ Additions to the EGL_KHR_reusable_sync extension, modifying the description
+ of eglDestroySyncKHR to include both client and server syncs:
+
+ "... If any eglClientWaitSyncKHR
+ * or eglWaitSyncKHR *
+ commands are blocking on <sync> when eglDestroySyncKHR is called, they
+ will be woken up, as if <sync> were signaled."
+
+
+ Additions to the EGL_KHR_fence_sync extension, modifying the description
+ of eglCreateSyncKHR to include both client and server syncs:
+
+ "... causing any eglClientWaitSyncKHR
+ * or eglWaitSyncKHR *
+ commands (see below) blocking on <sync> to unblock ..."
+
+ Additions to the EGL_KHR_fence_sync extension, modifying the description
+ of eglDestroySyncKHR to include both client and server syncs:
+
+ "... If any eglClientWaitSyncKHR
+ * or eglWaitSyncKHR *
+ commands are blocking on <sync> when eglDestroySyncKHR is called, <sync>
+ is flagged for deletion and will be deleted when it is no longer
+ associated with any fence command and is no longer blocking any
+ eglClientWaitSyncKHR or eglWaitSyncKHR commands."
+
+
+Issues
+
+ 1. Explain the key choices made in this extension.
+
+ RESPONSE: This extension has been written to behave as similarly as
+ possible to the glWaitSync functionality available in desktop OpenGL.
+ Server waits are functionality which was only available in GL syncs
+ until now.
+
+ In the interest of maintaining similarity with OpenGL sync objects, this
+ extension attempts to copy the glWaitSync functionality of OpenGL
+ wherever possible (both functionally and stylistically), only making
+ changes where needed to operate inside EGL (rather than a client API
+ context) and match EGL naming conventions.
+
+ 2. Must all EGL client APIs support server waits?
+
+ PROPOSED: Only if the client APIs also support fence syncs, which also
+ interacts with the server for that client API. The same client API
+ extensions defining fence sync support (GL_OES_EGL_sync and
+ VG_KHR_EGL_sync) are used here to indicate server wait ability for those
+ client APIs.
+
+ Reusable syncs in EGL_KHR_reusable_sync do not have this dependency,
+ because it is (at least in principle) possible for eglClientWaitSyncKHR
+ to be performed entirely within the EGL implementation. However,
+ eglWaitSyncKHR requires cooperation of the client API, whether fence
+ syncs or reusable syncs are being waited upon.
+
+ It would be possible to completely decouple fence syncs and the ability
+ to do server waits, but this would require new client API extensions.
+
+ 3. What is the relationship between EGL sync objects and OpenGL / OpenGL
+ ES sync objects?
+
+ RESPONSE: There is no direct relationship. GL and ES servers may not
+ even implement sync objects as defined by some versions of those APIs.
+ However, EGL sync objects are intended to be functionally equivalent to
+ GL sync objects, and the language describing them is drawn from the GL
+ specifications. Implementations supporting both forms of sync object
+ will probably use the same implementation internally.
+
+ 4. Should eglWaitSyncKHR take a timeout as a parameter as its equivalent
+ in OpenGL / OpenGL ES and eglWaitClientKHR does?
+
+ PROPOSED: No. A timeout is of limited use to a well-behaved application.
+ If a timeout was added, the result of it expiring is likely to be a
+ corrupted output. Adding a timeout would likely necessitate a way to
+ query if the wait completed because the condition was signaled or
+ because of a timeout. There doesn't seem to be an obvious, elegant API
+ mechanism to do that. If a timeout is needed in the future, it can be
+ added via an additional extension with a new entry-point.
+
+ 5. What happens if an application issues a server-side wait on a fence
+ which never gets signaled?
+
+ RESPONSE: Further rendering in the context which issued the server-side
+ wait will not progress. Any additional behavior is undefined and is
+ likely to be different depending on a particular implementation. Could
+ be handled in the same way as an extremely long-running GLSL shader.
+
+ 6. Does this extension affect the destruction behavior?
+
+ RESOLVED: No. The behavior of eglDestroySyncKHR is determined by the type
+ of sync object, and is not affected by this extension.
+
+Revision History
+
+#7 (Alon Or-bach, March 12, 2014)
+ - Clarified that eglDestroySyncKHR behavior is set in
+ EGL_KHR_fence_sync / EGL_KHR_reusable_sync and is not modified by this
+ extension (bug 11458).
+#6 (Jon Leech, January 24, 2013)
+ - eglWaitSyncKHR causes a server wait in OpenGL ES when GL_OES_EGL_sync
+ is supported, not a client wait as formerly specified (Bug 9493).
+#5 (Jon Leech, October 31, 2012)
+ - Change return type of eglWaitSyncKHR in spec body to EGLint to match
+ New Functions section, and rearrange description of return type and
+ errors section for clarity.
+#4 (Tom Cooksey, August 16, 2012)
+ - Removed timeout parameter and text relating to it. Add issue 4
+ discussing timeout parameter. Add issue 5 explaining the behavior of
+ waiting on a never-signaled fence. Minor corrections to use US English.
+#3 (Jon Leech, June 26, 2012)
+ - Fix typos (bug 9137).
+#2 (Jon Leech, June 20, 2012)
+ - Clarifications and language cleanup (Bug 9137). Some paragraph
+ reflowing. Note that eglWaitSyncKHR only blocks the server for the
+ specific context on which the wait was issued. Add issue 3 discussing
+ relationship to GL/ES sync objects.
+#1 (Jon Leech, June 6, 2012)
+ - Initial draft branched from GL 4.x API spec language.
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_drm_image.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_drm_image.txt
new file mode 100644
index 0000000..0937d6b
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_drm_image.txt
@@ -0,0 +1,157 @@
+Name
+
+ MESA_drm_image
+
+Name Strings
+
+ EGL_MESA_drm_image
+
+Contact
+
+ Kristian Høgsberg <krh@bitplanet.net>
+
+Status
+
+ Proposal
+
+Version
+
+ Version 4, November 23, 2017
+
+Number
+
+ EGL Extension #26
+
+Dependencies
+
+ Requires EGL 1.4 or later. This extension is written against the
+ wording of the EGL 1.4 specification.
+
+ EGL_KHR_base_image is required.
+
+Overview
+
+ This extension provides entry points for integrating EGLImage with the
+ Linux DRM mode setting and memory management drivers. The extension
+ lets applications create EGLImages without a client API resource and
+ lets the application get the DRM buffer handles.
+
+IP Status
+
+ Open-source; freely implementable.
+
+New Procedures and Functions
+
+ EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy,
+ const EGLint *attrib_list);
+
+ EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ EGLint *name,
+ EGLint *handle,
+ EGLint *stride);
+
+New Tokens
+
+ Accepted in the <attrib_list> parameter of eglCreateDRMImageMESA:
+
+ EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+ EGL_DRM_BUFFER_USE_MESA 0x31D1
+
+ Accepted as values for the EGL_IMAGE_FORMAT_MESA attribute:
+
+ EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+
+ Bits accepted in EGL_DRM_BUFFER_USE_MESA:
+
+ EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x0001
+ EGL_DRM_BUFFER_USE_SHARE_MESA 0x0002
+ EGL_DRM_BUFFER_USE_CURSOR_MESA 0x0004
+
+ Accepted in the <target> parameter of eglCreateImageKHR:
+
+ EGL_DRM_BUFFER_MESA 0x31D3
+
+ Use when importing drm buffer:
+
+ EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+ EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+
+Additions to the EGL 1.4 Specification:
+
+ To create a DRM EGLImage, call
+
+ EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy,
+ const EGLint *attrib_list);
+
+ In the attribute list, pass EGL_WIDTH, EGL_HEIGHT and format and
+ use in the attrib list using EGL_DRM_BUFFER_FORMAT_MESA and
+ EGL_DRM_BUFFER_USE_MESA. The only format specified by this
+ extension is EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, where each pixel
+ is a CPU-endian, 32-bit quantity, with alpha in the upper 8 bits,
+ then red, then green, then blue. The bit values accepted by
+ EGL_DRM_BUFFER_USE_MESA are EGL_DRM_BUFFER_USE_SCANOUT_MESA,
+ EGL_DRM_BUFFER_USE_SHARE_MESA and EGL_DRM_BUFFER_USE_CURSOR_MESA.
+ EGL_DRM_BUFFER_USE_SCANOUT_MESA requests that the created EGLImage
+ should be usable as a scanout buffer with the DRM kernel
+ modesetting API. EGL_DRM_BUFFER_USE_SHARE_MESA requests that the
+ EGLImage can be shared with other processes by passing the
+ underlying DRM buffer name. EGL_DRM_BUFFER_USE_CURSOR_MESA
+ requests that the image must be usable as a cursor with KMS. When
+ EGL_DRM_BUFFER_USE_CURSOR_MESA is set, width and height must both
+ be 64.
+
+ To create a process local handle or a global DRM name for a
+ buffer, call
+
+ EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ EGLint *name,
+ EGLint *handle,
+ EGLint *stride);
+
+ If <name> is non-NULL, a global name is assigned to the image and
+ written to <name>, the handle (local to the DRM file descriptor,
+ for use with DRM kernel modesetting API) is written to <handle> if
+ non-NULL and the stride (in bytes) is written to <stride>, if
+ non-NULL.
+
+ Import a shared buffer by calling eglCreateImageKHR with
+ EGL_DRM_BUFFER_MESA as the target, using EGL_WIDTH, EGL_HEIGHT,
+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_STRIDE_MESA
+ in the attrib list.
+
+Issues
+
+ 1. Why don't we use eglCreateImageKHR with a target that
+ indicates that we want to create an EGLImage from scratch?
+
+ RESOLVED: The eglCreateImageKHR entry point is reserved for
+ creating an EGLImage from an already existing client API
+ resource. This is fine when we're creating the EGLImage from
+ an existing DRM buffer name, it doesn't seem right to overload
+ the function to also allocate the underlying resource.
+
+ 2. Why don't we use an eglQueryImageMESA type functions for
+ querying the DRM EGLImage attributes (name, handle, and stride)?
+
+ RESOLVED: The eglQueryImage function has been proposed often,
+ but it goes against the EGLImage design. EGLImages are opaque
+ handles to a 2D array of pixels, which can be passed between
+ client APIs. By referencing an EGLImage in a client API, the
+ EGLImage target (a texture, a renderbuffer or such) can be
+ used to query the attributes of the EGLImage. We don't have a
+ full client API for creating and querying DRM buffers, though,
+ so we use a new EGL extension entry point instead.
+
+Revision History
+
+ Version 1, June 3, 2010
+ Initial draft (Kristian Høgsberg)
+ Version 2, August 25, 2010
+ Flesh out the extension a bit, add final EGL tokens, capture
+ some of the original discussion in the issues section.
+ Version 3, November 29, 2010 (Jon Leech)
+ Fix typo.
+ Version 4, November 23, 2017 (Kristian Høgsberg)
+ Fix typos, add EGL_DRM_BUFFER_USE_CURSOR_MESA
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_image_dma_buf_export.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_image_dma_buf_export.txt
new file mode 100644
index 0000000..cc9497e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_image_dma_buf_export.txt
@@ -0,0 +1,147 @@
+Name
+
+ MESA_image_dma_buf_export
+
+Name Strings
+
+ EGL_MESA_image_dma_buf_export
+
+Contributors
+
+ Dave Airlie
+
+Contact
+
+ Dave Airlie (airlied 'at' redhat 'dot' com)
+
+Status
+
+ Complete, shipping.
+
+Version
+
+ Version 3, May 5, 2015
+
+Number
+
+ EGL Extension #87
+
+Dependencies
+
+ Requires EGL 1.4 or later. This extension is written against the
+ wording of the EGL 1.4 specification.
+
+ EGL_KHR_base_image is required.
+
+ The EGL implementation must be running on a Linux kernel supporting the
+ dma_buf buffer sharing mechanism.
+
+Overview
+
+ This extension provides entry points for integrating EGLImage with the
+ dma-buf infrastructure. The extension allows creating a Linux dma_buf
+ file descriptor or multiple file descriptors, in the case of multi-plane
+ YUV image, from an EGLImage.
+
+ It is designed to provide the complementary functionality to
+ EGL_EXT_image_dma_buf_import.
+
+IP Status
+
+ Open-source; freely implementable.
+
+New Types
+
+ This extension uses the 64-bit unsigned integer type EGLuint64KHR
+ first introduced by the EGL_KHR_stream extension, but does not
+ depend on that extension. The typedef may be reproduced separately
+ for this extension, if not already present in eglext.h.
+
+ typedef khronos_uint64_t EGLuint64KHR;
+
+New Procedures and Functions
+
+ EGLBoolean eglExportDMABUFImageQueryMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ int *fourcc,
+ int *num_planes,
+ EGLuint64KHR *modifiers);
+
+ EGLBoolean eglExportDMABUFImageMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ int *fds,
+ EGLint *strides,
+ EGLint *offsets);
+
+New Tokens
+
+ None
+
+
+Additions to the EGL 1.4 Specification:
+
+ To mirror the import extension, this extension attempts to return
+ enough information to enable an exported dma-buf to be imported
+ via eglCreateImageKHR and EGL_LINUX_DMA_BUF_EXT token.
+
+ Retrieving the information is a two step process, so two APIs
+ are required.
+
+ The first entrypoint
+ EGLBoolean eglExportDMABUFImageQueryMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ int *fourcc,
+ int *num_planes,
+ EGLuint64KHR *modifiers);
+
+ is used to retrieve the pixel format of the buffer, as specified by
+ drm_fourcc.h, the number of planes in the image and the Linux
+ drm modifiers. <fourcc>, <num_planes> and <modifiers> may be NULL,
+ in which case no value is retrieved.
+
+ The second entrypoint retrieves the dma_buf file descriptors,
+ strides and offsets for the image. The caller should pass
+ arrays sized according to the num_planes values retrieved previously.
+ Passing arrays of the wrong size will have undefined results.
+ If the number of fds is less than the number of planes, then
+ subsequent fd slots should contain -1.
+
+ EGLBoolean eglExportDMABUFImageMESA(EGLDisplay dpy,
+ EGLImageKHR image,
+ int *fds,
+ EGLint *strides,
+ EGLint *offsets);
+
+ <fds>, <strides>, <offsets> can be NULL if the infomatation isn't
+ required by the caller.
+
+Issues
+
+1. Should the API look more like an attribute getting API?
+
+ANSWER: No, from a user interface pov, having to iterate across calling
+the API up to 12 times using attribs seems like the wrong solution.
+
+2. Should the API take a plane and just get the fd/stride/offset for that
+ plane?
+
+ANSWER: UNKNOWN,this might be just as valid an API.
+
+3. Does ownership of the file descriptor remain with the app?
+
+ANSWER: Yes, the app is responsible for closing any fds retrieved.
+
+4. If number of planes and number of fds differ what should we do?
+
+ANSWER: Return -1 for the secondary slots, as this avoids having
+to dup the fd extra times to make the interface sane.
+
+Revision History
+
+ Version 3, May, 2015
+ Just use the KHR 64-bit type.
+ Version 2, March, 2015
+ Add a query interface (Dave Airlie)
+ Version 1, June 3, 2014
+ Initial draft (Dave Airlie)
+
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_gbm.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_gbm.txt
new file mode 100644
index 0000000..e40a774
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_gbm.txt
@@ -0,0 +1,319 @@
+Name
+
+ MESA_platform_gbm
+
+Name Strings
+
+ EGL_MESA_platform_gbm
+
+Contributors
+
+ Chad Versace <chad.versace@intel.com>
+ Kristian Høgsberg <krh@bitplanet.org>
+
+Contacts
+
+ Chad Versace <chad.versace@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 7, 2016/01/04
+
+Number
+
+ EGL Extension #62
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL_EXT_client_extensions to query its existence without
+ a display.
+
+ Requires EGL_EXT_platform_base.
+
+ This extension is written against the wording of version 7 of the
+ EGL_EXT_platform_base specification.
+
+Overview
+
+ This extension defines how to create EGL resources from native GBM
+ resources using the functions defined by EGL_EXT_platform_base. (GBM is
+ a Generic Buffer Manager for Linux).
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
+
+ EGL_PLATFORM_GBM_MESA 0x31D7
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay from an GBM device, call eglGetPlatformDisplayEXT with
+ <platform> set to EGL_PLATFORM_GBM_MESA. The <native_display> parameter
+ specifies the GBM device to use and must either point to a `struct
+ gbm_device` or be NULL. If <native_display> is NULL, then the resultant
+ EGLDisplay will be backed by some implementation-chosen GBM device.
+
+ For each EGLConfig that belongs to the GBM platform, the
+ EGL_NATIVE_VISUAL_ID attribute is a GBM color format, such as
+ GBM_FORMAT_XRGB8888.
+
+ To obtain a rendering surface from a GBM surface, call
+ eglCreatePlatformWindowSurfaceEXT with a <dpy> that belongs to the GBM
+ platform and a <native_window> that points to a `struct gbm_surface`. If
+ <native_window> was created without the GBM_BO_USE_RENDERING flag, or if
+ the color format of <native_window> differs from the EGL_NATIVE_VISUAL_ID
+ of <config>, then the function fails and generates EGL_BAD_MATCH.
+
+ It is not valid to call eglCreatePlatformPixmapSurfaceEXT with a <dpy> that
+ belongs to the GBM platform. Any such call fails and generates
+ EGL_BAD_PARAMETER.
+
+Issues
+
+ 1. Should this extension permit NULL as input to eglGetPlatformDisplayEXT?
+
+ RESOLUTION: Yes. When given NULL, eglGetPlatformDisplayEXT returns an
+ EGLDisplay backed by an implementation-chosen GBM device.
+
+Example Code
+
+ // This example program creates an EGL surface from a GBM surface.
+ //
+ // If the macro EGL_MESA_platform_gbm is defined, then the program
+ // creates the surfaces using the methods defined in this specification.
+ // Otherwise, it uses the methods defined by the EGL 1.4 specification.
+ //
+ // Compile with `cc -std=c99 example.c -lgbm -lEGL`.
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+
+ #include <EGL/egl.h>
+ #include <gbm.h>
+
+ struct my_display {
+ struct gbm_device *gbm;
+ EGLDisplay egl;
+ };
+
+ struct my_config {
+ struct my_display dpy;
+ EGLConfig egl;
+ };
+
+ struct my_window {
+ struct my_config config;
+ struct gbm_surface *gbm;
+ EGLSurface egl;
+ };
+
+ static void
+ check_extensions(void)
+ {
+ #ifdef EGL_MESA_platform_gbm
+ const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
+
+ if (!client_extensions) {
+ // EGL_EXT_client_extensions is unsupported.
+ abort();
+ }
+ if (!strstr(client_extensions, "EGL_MESA_platform_gbm")) {
+ abort();
+ }
+ #endif
+ }
+
+ static struct my_display
+ get_display(void)
+ {
+ struct my_display dpy;
+
+ int fd = open("/dev/dri/card0", O_RDWR | FD_CLOEXEC);
+ if (fd < 0) {
+ abort();
+ }
+
+ dpy.gbm = gbm_create_device(fd);
+ if (!dpy.gbm) {
+ abort();
+ }
+
+
+ #ifdef EGL_MESA_platform_gbm
+ dpy.egl = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_MESA, dpy.gbm, NULL);
+ #else
+ dpy.egl = eglGetDisplay(dpy.gbm);
+ #endif
+
+ if (dpy.egl == EGL_NO_DISPLAY) {
+ abort();
+ }
+
+ EGLint major, minor;
+ if (!eglInitialize(dpy.egl, &major, &minor)) {
+ abort();
+ }
+
+ return dpy;
+ }
+
+ static struct my_config
+ get_config(struct my_display dpy)
+ {
+ struct my_config config = {
+ .dpy = dpy,
+ };
+
+ EGLint egl_config_attribs[] = {
+ EGL_BUFFER_SIZE, 32,
+ EGL_DEPTH_SIZE, EGL_DONT_CARE,
+ EGL_STENCIL_SIZE, EGL_DONT_CARE,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_NONE,
+ };
+
+ EGLint num_configs;
+ if (!eglGetConfigs(dpy.egl, NULL, 0, &num_configs)) {
+ abort();
+ }
+
+ EGLConfig *configs = malloc(num_configs * sizeof(EGLConfig));
+ if (!eglChooseConfig(dpy.egl, egl_config_attribs,
+ configs, num_configs, &num_configs)) {
+ abort();
+ }
+ if (num_configs == 0) {
+ abort();
+ }
+
+ // Find a config whose native visual ID is the desired GBM format.
+ for (int i = 0; i < num_configs; ++i) {
+ EGLint gbm_format;
+
+ if (!eglGetConfigAttrib(dpy.egl, configs[i],
+ EGL_NATIVE_VISUAL_ID, &gbm_format)) {
+ abort();
+ }
+
+ if (gbm_format == GBM_FORMAT_XRGB8888) {
+ config.egl = configs[i];
+ free(configs);
+ return config;
+ }
+ }
+
+ // Failed to find a config with matching GBM format.
+ abort();
+ }
+
+ static struct my_window
+ get_window(struct my_config config)
+ {
+ struct my_window window = {
+ .config = config,
+ };
+
+ window.gbm = gbm_surface_create(config.dpy.gbm,
+ 256, 256,
+ GBM_FORMAT_XRGB8888,
+ GBM_BO_USE_RENDERING);
+ if (!window.gbm) {
+ abort();
+ }
+
+ #ifdef EGL_MESA_platform_gbm
+ window.egl = eglCreatePlatformWindowSurfaceEXT(config.dpy.egl,
+ config.egl,
+ window.gbm,
+ NULL);
+ #else
+ window.egl = eglCreateWindowSurface(config.dpy.egl,
+ config.egl,
+ window.gbm,
+ NULL);
+ #endif
+
+ if (window.egl == EGL_NO_SURFACE) {
+ abort();
+ }
+
+ return window;
+ }
+
+ int
+ main(void)
+ {
+ check_extensions();
+
+ struct my_display dpy = get_display();
+ struct my_config config = get_config(dpy);
+ struct my_window window = get_window(config);
+
+ return 0;
+ }
+
+Revision History
+
+ Version 8, 2018-05-25 (Krzysztof Kosiński)
+ - Corrected EGL_DEFAULT_DISPLAY to NULL. The second argument to
+ eglGetPlatformDisplayEXT has type void*, while EGL_DEFAULT_DISPLAY has
+ type EGLNativeDisplayType, which is not guaranteed to be convertible
+ to void* - it could be int, long or intptr_t.
+
+ Version 7, 2016-01-04 (Jon Leech)
+ - Free config memory allocated in sample code (Public Bug 1445).
+
+ Version 6, 2014-02-12 (Chad Versace)
+ - Change resolution of issue #1 from "no" to "yes". Now
+ eglGetPlatformDisplayEXT accepts EGL_DEFAULT_DISPLAY for GBM.
+
+ Version 5, 2013-010-15 (Chad Versace)
+ - Specify that EGL_NATIVE_VISUAL_ID is a GBM color format.
+ - Require for eglCreatePlatformWindowSurfaceEXT that the GBM color
+ format not differ between the EGLConfig and gbm_surface. (Suggested
+ by Kristian).
+ - Update example code to find matching EGL_NATIVE_VISUAL_ID.
+
+ Version 4, 2013-09-13 (Chad Versace)
+ - Update the text and example code to wording of version 7 of
+ EGL_EXT_platform_base spec.
+ - Add section "Extension Type".
+ - Resolve issue #1 to "No".
+ - Add issue #2.
+
+ Version 3, 2013-04-26 (Chad Versace)
+ - Add missing MESA suffix to new token.
+
+ Version 2, 2013-04-23 (Chad Versace)
+ - Add issue #1 regarding EGL_DEFAULT_DISPLAY.
+
+ Version 1, 2013.03.24 (Chad Versace)
+ - First draft
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_surfaceless.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_surfaceless.txt
new file mode 100644
index 0000000..6ba562c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_platform_surfaceless.txt
@@ -0,0 +1,120 @@
+Name
+
+ MESA_platform_surfaceless
+
+Name Strings
+
+ EGL_MESA_platform_surfaceless
+
+Contributors
+
+ Chad Versace <chadversary@google.com>
+ Haixia Shi <hshi@google.com>
+ Stéphane Marchesin <marcheu@google.com>
+ Zach Reizner <zachr@chromium.org>
+ Gurchetan Singh <gurchetansingh@google.com>
+
+Contacts
+
+ Chad Versace <chadversary@google.com>
+
+Status
+
+ DRAFT
+
+Version
+
+ Version 2, 2016-10-13
+
+Number
+
+ EGL Extension #104
+
+Extension Type
+
+ EGL client extension
+
+Dependencies
+
+ Requires EGL 1.5 or later; or EGL 1.4 with EGL_EXT_platform_base.
+
+ This extension is written against the EGL 1.5 Specification (draft
+ 20140122).
+
+ This extension interacts with EGL_EXT_platform_base as follows. If the
+ implementation supports EGL_EXT_platform_base, then text regarding
+ eglGetPlatformDisplay applies also to eglGetPlatformDisplayEXT;
+ eglCreatePlatformWindowSurface to eglCreatePlatformWindowSurfaceEXT; and
+ eglCreatePlatformPixmapSurface to eglCreatePlatformPixmapSurfaceEXT.
+
+Overview
+
+ This extension defines a new EGL platform, the "surfaceless" platform. This
+ platfom's defining property is that it has no native surfaces, and hence
+ neither eglCreatePlatformWindowSurface nor eglCreatePlatformPixmapSurface
+ can be used. The platform is independent of any native window system.
+
+ The platform's intended use case is for enabling OpenGL and OpenGL ES
+ applications on systems where no window system exists. However, the
+ platform's permitted usage is not restricted to this case. Since the
+ platform is independent of any native window system, it may also be used on
+ systems where a window system is present.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <platform> argument of eglGetPlatformDisplay:
+
+ EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+
+Additions to the EGL Specification
+
+ None.
+
+New Behavior
+
+ To determine if the EGL implementation supports this extension, clients
+ should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
+
+ To obtain an EGLDisplay on the surfaceless platform, call
+ eglGetPlatformDisplay with <platform> set to EGL_PLATFORM_SURFACELESS_MESA.
+ The <native_display> parameter must be EGL_DEFAULT_DISPLAY.
+
+ eglCreatePlatformWindowSurface fails when called with a <display> that
+ belongs to the surfaceless platform. It returns EGL_NO_SURFACE and
+ generates EGL_BAD_NATIVE_WINDOW. The justification for this unconditional
+ failure is that the surfaceless platform has no native windows, and
+ therefore the <native_window> parameter is always invalid.
+
+ Likewise, eglCreatePlatformPixmapSurface also fails when called with a
+ <display> that belongs to the surfaceless platform. It returns
+ EGL_NO_SURFACE and generates EGL_BAD_NATIVE_PIXMAP.
+
+ The surfaceless platform imposes no platform-specific restrictions on the
+ creation of pbuffers, as eglCreatePbufferSurface has no native surface
+ parameter. Specifically, if the EGLDisplay advertises an EGLConfig whose
+ EGL_SURFACE_TYPE attribute contains EGL_PBUFFER_BIT, then the EGLDisplay
+ permits the creation of pbuffers with that config.
+
+Issues
+
+ None.
+
+Revision History
+
+ Version 2, 2016-10-13 (Chad Versace)
+ - Assign enum values
+ - Define interfactions with EGL 1.4 and EGL_EXT_platform_base.
+ - Add Gurchetan as contributor, as he implemented the pbuffer support.
+
+ Version 1, 2016-09-23 (Chad Versace)
+ - Initial version
+ - Posted for review at
+ https://lists.freedesktop.org/archives/mesa-dev/2016-September/129549.html
diff --git a/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_query_driver.txt b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_query_driver.txt
new file mode 100644
index 0000000..bf260bd
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/MESA/EGL_MESA_query_driver.txt
@@ -0,0 +1,95 @@
+Name
+
+ MESA_query_driver
+
+Name Strings
+
+ EGL_MESA_query_driver
+
+Contact
+
+ Rob Clark <robdclark 'at' gmail.com>
+ Nicolai Hähnle <Nicolai.Haehnle 'at' amd.com>
+
+Contibutors
+
+ Veluri Mithun <velurimithun38 'at' gmail.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, 2019-01-24
+
+Number
+
+ EGL Extension 131
+
+Dependencies
+
+ EGL 1.0 is required.
+
+Overview
+
+ When an application has to query the name of a driver and for
+ obtaining driver's option list (UTF-8 encoded XML) of a driver
+ the below functions are useful.
+
+ XML file formally describes all available options and also
+ includes verbal descriptions in multiple languages. Its main purpose
+ is to be automatically processed by configuration GUIs.
+ The XML shall respect the following DTD:
+
+ <!ELEMENT driinfo (section*)>
+ <!ELEMENT section (description+, option+)>
+ <!ELEMENT description (enum*)>
+ <!ATTLIST description lang CDATA #REQUIRED
+ text CDATA #REQUIRED>
+ <!ELEMENT option (description+)>
+ <!ATTLIST option name CDATA #REQUIRED
+ type (bool|enum|int|float) #REQUIRED
+ default CDATA #REQUIRED
+ valid CDATA #IMPLIED>
+ <!ELEMENT enum EMPTY>
+ <!ATTLIST enum value CDATA #REQUIRED
+ text CDATA #REQUIRED>
+
+New Procedures and Functions
+
+ char* eglGetDisplayDriverConfig(EGLDisplay dpy);
+ const char* eglGetDisplayDriverName(EGLDisplay dpy);
+
+Description
+
+ By passing EGLDisplay as parameter to `eglGetDisplayDriverName` one can retrieve
+ driverName. Similarly passing EGLDisplay to `eglGetDisplayDriverConfig` we can retrieve
+ driverConfig options of the driver in XML format.
+
+ The string returned by `eglGetDisplayDriverConfig` is heap-allocated and caller
+ is responsible for freeing it.
+
+ EGL_BAD_DISPLAY is generated if `disp` is not an EGL display connection.
+
+ EGL_NOT_INITIALIZED is generated if `disp` has not been initialized.
+
+ If the implementation does not have enough resources to allocate the XML then an
+ EGL_BAD_ALLOC error is generated.
+
+New Tokens
+
+ No new tokens
+
+Issues
+
+ None
+
+
+Revision History
+
+ Version 1, 2018-11-05 - First draft (Veluri Mithun)
+ Version 2, 2019-01-23 - Final version (Veluri Mithun)
+ Version 3, 2019-01-24 - Mark as complete, add Khronos extension
+ number, fix parameter name in prototypes,
+ write revision history (Eric Engestrom)
diff --git a/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_swap_region2.txt b/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_swap_region2.txt
new file mode 100644
index 0000000..b09f551
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_swap_region2.txt
@@ -0,0 +1,227 @@
+Name
+
+ NOK_swap_region2
+
+Name Strings
+
+ EGL_NOK_swap_region2
+
+Notice
+
+ Copyright 2010 Nokia. All rights reserved.
+
+Contributors
+
+ Robert Palmer
+ Sami Kyöstilä
+
+Contacts
+
+ Robert Palmer, Nokia (robert.palmer 'at' nokia.com)
+ Sami Kyöstilä, Nokia (sami.kyostila 'at' nokia.com)
+
+Status
+
+ Internally reviewed
+
+Version
+
+ 2 - April 29, 2010
+
+Number
+
+ EGL Extension #23
+
+Dependencies
+
+ Requires EGL 1.4
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension adds a new function which provides an alternative to
+ eglSwapBuffers. eglSwapBuffersRegion2NOK accepts two new parameters
+ in addition to those in eglSwapBuffers. The new parameters consist
+ of a pointer to a list of 4-integer blocks defining rectangles
+ (x, y, width, height) and an integer specifying the number of
+ rectangles in the list.
+
+ The new parameters allow users to declare the region of the surface
+ that has been updated. The implementation uses this information to transfer
+ the updated region to the front buffer. Only the pixels within the
+ specified region are copied; any rendering outside that region will not
+ become visible on the window surface. This in contrast with the
+ EGL_NOK_swap_region extension which treats the modified region only as a
+ hint.
+
+ This functional change is aimed at further reducing the processing and
+ bandwidth requirements of optimizations of applications whose graphics are
+ commonly subjected to region-based changes. Specifically, this extension
+ enables partial surface updates without requiring the use of preserved
+ swaps.
+
+New Procedures and Functions
+
+ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint numRects,
+ const EGLint* rects);
+
+New Types
+
+ None
+
+New Tokens
+
+ None
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions
+and Errors)
+
+ Add the following text to the end of the first subsection in
+ section 3.9.1 (prior to 'Native Window Resizing' subsection):
+
+ "eglSwapBuffersRegion2NOK is an alternative to eglSwapBuffers
+ that allows the client to provide the region of the surface
+ which has been updated. This will allow processing and
+ bandwidth optimizations for applications whose graphics are
+ commonly subject to region-based changes.
+
+ eglSwapBuffersRegion2NOK behaves in the same way as
+ eglSwapBuffers with the following modification: the additional
+ parameters <numRects> and <rects> provide specify a region which was
+ rendered to by the application. The implementation uses this
+ information to combine the modified backbuffer region with the previous
+ frontbuffer to form the new frontbuffer. The implementation guarantees
+ that all of the pixels within the modified region are posted for
+ display and none of the pixels outside the region are sourced. Only
+ back buffered surfaces can be used with eglSwapBuffersRegion2NOK.
+
+ <rects> specifies a pointer to a list of 4-integer blocks
+ defining rectangles. The area covered by the rectangles
+ constitutes the region of the color buffer which has been
+ updated by the client. <numRects> specifies the number of
+ rectangles in the <rects> list. If <numRects> is set to zero
+ the update region is set to the width and height of the
+ surface.
+
+ Each rectangle is specified as an integer 4-tuple in the form
+ (x, y, width, height). The x and y values provided by the client
+ must specify the bottom left corner of each rectangle as the
+ origin of the coordinate system is bottom left. Rectangles are
+ clipped (restricted) to the bounds of the EGLSurface. A
+ rectangle with width or height less than or equal 0 is ignored.
+ The region is defined by the union of all the specified
+ rectangles. The rectangles as specified must be disjoint. If
+ the rectangles are not disjoint or the user has rendered
+ outside of the region declared, the rendering results are
+ undefined."
+
+ Insert "eglSwapBuffersRegion2NOK" appropriately after each instance
+ of "eglSwapBuffers" in the first paragraph in section 3.9.4
+
+ Add the following before the last sentence in the first
+ paragraph in section 3.9.4
+
+ "If eglSwapBuffersRegion2NOK is called and <numRects> is greater
+ than zero and <rects> is NULL, an EGL_BAD_PARAMETER error is
+ generated. If <numRects> is less than zero, an
+ EGL_BAD_PARAMETER error is generated."
+
+ "If eglSwapBuffersRegion2NOK is called with a single buffered
+ <surface>, an EGL_BAD_MATCH error is generated."
+
+Dependencies on OpenGL ES
+
+ None
+
+Dependencies on OpenVG
+
+ None
+
+
+Issues
+
+ 1) Is there a limit on the number of rectangles that can be used?
+ Should there be a specified number which are guaranteed to be
+ supported?
+
+ RESOLVED: This is limited by the amount of resources available to the
+ implementation. The implementation is free to fail with EGL_BAD_ALLOC if a
+ given update region cannot be processed due to resource constraints.
+
+ 2) Are there any limitations on the location or size of rectangles?
+
+ RESOLVED: The limitations placed on the validity of a rectangle is
+ that the width and height must be greater than zero and should not
+ overlap. Rectangles which have a width or height less than or equal
+ to zero will be ignored. If rectangles overlap the rendering
+ results are undefined. In addition all rectangles are clipped to
+ the area of the surface. Rectangles which are partially or
+ completely outside the boundary of the surface will not generate an
+ error.
+
+ 3) How does eglSwapBuffersRegion2NOK interact with incremental
+ rendering?
+
+ RESOLVED: This extension does not affect the client's ability to
+ perform incremental rendering. The ability to perform incremental
+ rendering is determined solely by the EGLSurface's
+ EGL_SWAP_BEHAVIOR attribute. The use of eglSwapBuffersRegion2NOK to
+ describe changed regions can still assist window system composition
+ optimizations even if the client is physically redrawing the entire
+ surface on every frame.
+
+ If EGL_SWAP_BEHAVIOR is EGL_BUFFER_PRESERVED, the client can
+ restrict their rendering to a particular region (e.g. using scissor
+ rects) and then declare this region using eglSwapBuffersRegion2NOK.
+
+ If EGL_SWAP_BEHAVIOR is EGL_BUFFER_DESTROYED, the client can
+ also restrict rendering to a particular region of the surface, but that
+ region must be completely re-rendered because the previous frame contents
+ are no longer available within that region. The application can then post
+ this region with eglSwapBuffersRegion2NOK. Since the buffer posting is
+ guaranteed to be limited to the declared region, the application does not
+ need to re-render or otherwise ensure pixel data outside the updated region
+ is valid.
+
+ 4) How is this extension an improvement over EGL_NOK_swap_region?
+
+ RESOLVED: This extension builds on the previous EGL_NOK_swap_region
+ extension by requiring that the implementation considers the update region
+ provided by the application as a mandate rather than a hint. This allows
+ for region-restricted rendering without requiring the use of preserved buffer
+ swaps which may be relatively expensive for the implementation.
+
+ Furthermore, whilst preserved swap behaviour is necessary for incremental
+ rendering, many applications fully re-render modified surface regions and
+ so don't require preserved swap behaviour. This extension provides a
+ lighter weight surface update mechanism for such applications.
+
+ 5) How does this extension compare to MESA_copy_sub_buffer?
+
+ RESOLVED: There are two main differences between MESA_copy_sub_buffer and
+ this extension:
+
+ 1. This extension allows for arbitrary update regions instead of a
+ single rectangle.
+
+ 2. eglSwapBuffersRegion2NOK is specified to be a frame swap, so the
+ implementation is free to apply destructive swap behavior in
+ conjunction with this function call. This may allow for a
+ performance improvement.
+
+Revision History
+
+ Version 1, 2010/04/28 (Sami Kyöstilä)
+ - First revision based on EGL_NOK_swap_region version 10.
+ Version 2, 2010/04/29 (Sami Kyöstilä)
+ - Specify operation in terms of copying from the back buffer into the
+ front buffer instead of involving the the system composition or the
+ display.
+ - Disallowed usage with anything else than back buffered surfaces.
+ - Clarified some sentences.
+ \ No newline at end of file
diff --git a/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_texture_from_pixmap.txt b/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_texture_from_pixmap.txt
new file mode 100644
index 0000000..ebc4ee0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NOK/EGL_NOK_texture_from_pixmap.txt
@@ -0,0 +1,321 @@
+Name
+
+ NOK_texture_from_pixmap
+
+Name Strings
+
+ EGL_NOK_texture_from_pixmap
+
+Notice
+
+ Copyright Nokia, 2009.
+
+Contributors
+
+
+Contact
+
+ Roland Scheidegger, Tungsten Graphics, sroland@tungstengraphics.com
+
+Status
+
+ Shipping on N900
+
+Version
+
+ 0.2 (13 Nov 2009)
+
+Number
+
+ EGL Extension #14
+
+Dependencies
+
+ EGL 1.1 is required.
+ Written against wording of EGL 1.4 specification.
+ OpenGL ES 2.0 is required.
+ GL_OES_texture_npot affects the definition of this extension.
+
+Overview
+
+ This extension allows a color buffer to be used for both rendering and
+ texturing.
+
+ EGL allows the use of color buffers of pbuffer drawables for texturing,
+ this extension extends this to allow the use of color buffers of pixmaps
+ too.
+ Other types of drawables could be supported by future extensions layered
+ on top of this extension, though only windows are really left which
+ are problematic.
+
+ The functionality of this extension is similar to WGL_ARB_render_texture
+ which was incorporated into EGL 1.1.
+ However, the purpose of this extension is not to provide
+ "render to texture" like functionality but rather the ability to bind
+ existing native drawables (for instance X pixmaps) to a texture. Though,
+ there is nothing that prohibits it from being used for "render to
+ texture".
+
+ - Windows are problematic as they can change size and therefore are not
+ supported by this extension.
+
+ - Only a color buffer of a EGL pixmap created using an EGLConfig with
+ attribute EGL_BIND_TO_TEXTURE_RGB or EGL_BIND_TO_TEXTURE_RGBA
+ set to TRUE can be bound as a texture.
+
+ - The texture internal format is determined when the color buffer
+ is associated with the texture, guaranteeing that the color
+ buffer format is equivalent to the texture internal format.
+
+ - A client can create a complete set of mipmap images.
+
+
+IP Status
+
+ There are no known IP issues.
+
+Issues
+
+ 1. What should this extension be called?
+
+ EGL_EXT_texture_from_pixmap seemed most appropriate, but eventually
+ was changed to EGL_NOK_texture_from_pixmap since it's unknown if other
+ vendors are interested in implementing this. Even though it builds
+ on top of the EGL render_to_texture functionality and thus the
+ specifiation wording is quite different to the GLX version, keep the
+ name from the GLX version (except the vendor prefix) since the intention
+ is the same. Layering of future extensions on top of this extension for
+ using other type of drawables as textures follows the same conventions
+ as vertex/pixel buffer objects and vertex/fragment programs.
+
+
+ 2. What should the default value for EGL_TEXTURE_TARGET be? Should
+ users be required to set this value if EGL_TEXTURE_FORMAT is not
+ EGL_TEXTURE_FORMAT_NONE ?
+
+ Unlike in OpenGL, in OES there is no difference between pot and npot
+ sized textures as far as the texture target is concerned, so
+ for all sizes EGL_TEXTURE_2D will be used for all pixmap sizes.
+ npot texture sizes (with reduced functionality) are only available
+ in OES 2.0 hence this version is required. While in theory it would be
+ possible to support this in OES 1.0 if pixmaps are restricted to power
+ of two sizes, it seems for all practical uses of this extension pixmap
+ sizes will be arbitrary.
+
+
+ 3. Should users be required to re-bind the drawable to a texture after
+ the drawable has been rendered to?
+
+ It is difficult to define what the contents of the texture would be if
+ we don't require this. Also, requiring this would allow implementations
+ to perform an implicit copy at this point if they could not support
+ texturing directly out of renderable memory.
+
+ The problem with defining the contents of the texture after rendering
+ has occured to the associated drawable is that there is no way to
+ synchronize the use of the buffer as a source and as a destination.
+ Direct OpenGL rendering is not necessarily done in the same command
+ stream as X rendering. At the time the pixmap is used as the source
+ for a texturing operation, it could be in a state halfway through a
+ copyarea operation in which half of it is say, white, and half is the
+ result of the copyarea operation. How is this defined? Worse, some
+ other OpenGL application could be halfway through a frame of rendering
+ when the composite manager sources from it. The buffer might just
+ contain the results of a "glClear" operation at that point.
+
+ To gurantee tear-free rendering, a composite manager (in this case
+ using X) would run as follows:
+
+ -receive request for compositing:
+ XGrabServer()
+ eglWaitNative() or XSync()
+ eglBindTexImage()
+
+ <Do rendering/compositing>
+
+ eglReleaseTexImage()
+ XUngrabServer()
+
+ Apps that don't synchronize like this would get what's available,
+ and that may or may not be what they expect.
+
+
+ 4. Rendering done by the window system may be y-inverted compared
+ to the standard OpenGL texture representation. More specifically:
+ the X Window system uses a coordinate system where the origin is in
+ the upper left; however, the GL uses a coordinate system where the
+ origin is in the lower left. Should we define the contents of the
+ texture as the y-inverted contents of the drawable?
+
+ X implementations may represent their drawables differently internally,
+ so y-inversion should be exposed as an EGLConfig attribute.
+ Applications will need to query this attribute and adjust their rendering
+ appropriately.
+
+ If a drawable is y-inverted and is bound to a texture, the contents of the
+ texture will be y-inverted with respect to the standard GL memory layout.
+ This means the contents of a pixmap of size (width, height) at pixmap
+ coordinate (x, y) will be at location (x, height-y-1) in the texture.
+ Applications will need to adjust their texture coordinates accordingly to
+ avoid drawing the texture contents upside down.
+
+
+
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <Attribute> parameter of eglGetConfigAttrib and
+ the <attrib_list> parameter of eglChooseConfig:
+
+ EGL_Y_INVERTED_NOK 0x307F
+
+
+Additions to the OpenGL ES 2.0 Specification
+
+ None.
+
+
+Additions to the EGL Specification
+
+ Add to table 3.1, EGLConfig Attributes:
+
+ Attribute Type Notes
+ ------------------------------- ------- -----------------------------------
+ EGL_Y_INVERTED_NOK boolean True if the drawable's framebuffer
+ is y-inverted. This can be used to
+ determine if y-inverted texture
+ coordinates need to be used when
+ texturing from this drawable when
+ it is bound to a texture target.
+
+ Additions to table 3.4, Default values and match criteria for EGLConfig attributes:
+
+ Attribute Default Selection Criteria Priority
+ ------------------------------- -------------------- ------------------ ---------
+ EGL_Y_INVERTED_NOK EGL_DONT_CARE Exact
+
+ Modifications to 3.4, "Configuration Management"
+
+ Modify 3rd last paragraph ("EGL BIND TO TEXTURE RGB and..."):
+
+ EGL BIND TO TEXTURE RGB and EGL BIND TO TEXTURE RGBA are booleans
+ indicating whether the color buffers of a pbuffer or a pixmap created with
+ the EGLConfig can be bound to a OpenGL ES RGB or RGBA texture respectively.
+ Currently only pbuffers or pixmaps can be bound as textures, so these
+ attributes may only be EGL TRUE if the value of the EGL SURFACE TYPE
+ attribute includes EGL PBUFFER BIT or EGL_PIXMAP_BIT. It is possible to
+ bind a RGBA visual to a RGB texture, in which case the values in the alpha
+ component of the visual are ignored when the color buffer is used as a RGB
+ texture.
+
+ Add after this:
+
+ EGL_Y_INVERTED_NOK is a boolean describing the memory layout used for
+ drawables created with the EGLConfig. The attribute is True if the
+ drawable's framebuffer will be y-inverted. This can be used to determine
+ if y-inverted texture coordinates need to be used when texturing from this
+ drawable when it is bound to a texture target.
+
+ Modifications to 3.5.4, "Creating Native Pixmap Rendering Surfaces"
+
+ Modify paragraph 4 of the description of eglCreatePixmapSurface:
+
+ <attrib_list> specifies a list of attributes for the pixmap. The list has
+ the same structure as described for eglChooseConfig. Attributes that can
+ be specified in <attrib_list> include EGL_TEXTURE_FORMAT,
+ EGL_TEXTURE_TARGET, EGL_MIPMAP_TEXTURE, EGL_VG_COLORSPACE and
+ EGL_VG_ALPHA_FORMAT.
+ EGL_TEXTURE_FORMAT, EGL_TEXTURE_TARGET and EGL_MIPMAP_TEXTURE have the same
+ meaning and default values as when used with eglCreatePbufferSurface.
+
+
+ Modifications to section 3.6.1, "Binding a Surface to a OpenGL ES Texture"
+
+ Modify paragraph 2 of the description of eglBindTexImage:
+
+ The texture target, the texture format and the size of the texture
+ components are derived from attributes of the specified <surface>, which
+ must be a pbuffer or pixmap supporting one of the EGL_BIND_TO_TEXTURE_RGB
+ or EGL_BIND_TO_TEXTURE_RGBA attributes.
+
+ Modify paragraph 6 of the description of eglBindTexImage:
+
+ ...as though glFinish were called on the last context to which that surface
+ were bound. If <surface> is a pixmap, it also waits for all effects of
+ native drawing to complete.
+
+ Modify paragraph 7 of the description of eglBindTexImage:
+
+ After eglBindTexImage is called, the specified <surface> is no longer
+ available for reading or writing by client APIs. Any read operation,
+ such as glReadPixels or eglCopyBuffers, which reads values from any of the
+ surface’s color buffers or ancillary buffers will produce indeterminate
+ results. In addition, draw operations that are done to the surface before
+ its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context
+ and thread then rendering commands will be processed and the context state
+ will be updated, but the surface may or may not be written.
+ If the surface is a pixmap, it can still be accessed for reading or
+ writing by native rendering calls, however reading and writing will produce
+ indeterminate results and will leave the texture in an undefined state. It
+ is up to the application to implement any synchronization required.
+ eglSwapBuffers has no effect if it is called on a bound surface.
+
+ Modify paragraph 10 of the description of eglBindTexImage:
+
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling eglBindTexImage:
+
+ - The EGL_MIPMAP_TEXTURE attribute of the pbuffer or pixmap being bound
+ is EGL_TRUE.
+ - The OpenGL ES texture parameter GL_GENERATE_MIPMAP is GL_TRUE for the
+ currently bound texture.
+ - The value of the EGL_MIPMAP_LEVEL attribute of the pbuffer or pixmap
+ being bound is equal to the value of the texture parameter
+ GL_TEXTURE_BASE_LEVEL.
+
+
+ Modifications to section 3.6.2, "Releasing a Surface from an OpenGL ES Texture"
+
+ Modify paragraph 1 of the description of eglReleaseTexImage:
+
+ ...The specified color buffer is released back to the surface. The surface
+ is made avalaible for reading and writing by client APIs when it no longer
+ has any color buffers bound as textures.
+
+ Modify paragraph 2 of the description of eglReleaseTexImage:
+
+ If the surface is a pixmap, the contents of the color buffer are
+ unaffected by eglReleaseTexImage. If the surface is a pbuffer,
+ the contents of the color buffer are undefined when it is first
+ released, in particular there is no guarantee that the texture
+ image is still present. In all cases, the contents of other
+ color buffers are unaffected by this call. ...
+
+ Modify paragraph 5 of the description of eglReleaseTexImage:
+
+ ...If <surface> is not a valid EGLSurface, or is not a bound pbuffer or
+ pixmap surface, then an EGL_BAD_SURFACE error is returned.
+
+
+
+Usage Examples
+
+(skipped for now)
+
+
+
+Version History
+
+ 0. 12 Aug 2008 - RS
+ Initial version derived from GLX_EXT_texture_from_pixmap and EGL.
+ 0.1 30 Sept 2008 - RS
+ Changed name from EXT to NOKIA.
+ Clarified / fixed wording wrt differences to pbuffers.
+ 0.2 13 Nov 2009 - Sami Kyöstilä <sami.kyostila@nokia.com>
+ Changed extension and token names to comply with Nokia extension naming
+ scheme. Clarified interaction with native rendering. Formatting.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_3dvision_surface.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_3dvision_surface.txt
new file mode 100644
index 0000000..c190687
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_3dvision_surface.txt
@@ -0,0 +1,94 @@
+Name
+
+ EGL_NV_3dvision_surface
+
+Name Strings
+
+ EGL_NV_3dvision_surface
+
+Contact
+
+ Greg Roth, NVIDIA (groth 'at' nvidia.com)
+
+Contributors
+
+ Swaminathan Narayanan, NVIDIA
+
+IP Status
+
+ NVIDIA Proprietary.
+
+Status
+
+ Complete
+
+Version
+
+ Last Modified Date: 02 December 2011
+ Revision: 1
+
+Number
+
+ EGL Extension #46
+
+Dependencies
+
+ Requires EGL 1.4
+
+ Written against the EGL 1.4 specification.
+
+Overview
+
+ NVIDIA 3D Vision provides stereoscopic 3d rendering without
+ requiring applications to change their rendering methods. However
+ there are cases where applications can benefit from adjusting 3D
+ vision parameters directly to experiment with this functionality in
+ applications not yet known to 3D Vision, to assist 3D Vision in
+ setting parameters correctly for unusual situations, or to present
+ application-specific user-accessible controls for 3D Vision
+ parameters.
+
+ This extension provides the ability to explicitly create a surface
+ with 3D Vision support regardless of application detection.
+
+IP Status
+
+ NVIDIA Proprietary
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute to the <attrib_list> parameter of
+ CreateWindowSurface and CreatePbufferSurface
+
+ EGL_AUTO_STEREO_NV 0x3136
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and
+Errors)
+
+ Additions to section 3.5.1 (Creating On-Screen Rendering Surfaces)
+
+ Alter the end of the second to last paragraph:
+
+ Attributes that can be specified in <attrib_list> include
+ EGL_RENDER_BUFFER, EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT,
+ and EGL_AUTO_STEREO_NV.
+
+ Add before the last paragraph of section 3.5.1:
+
+ EGL_AUTO_STEREO_NV specifies whether 3D Vision stereo
+ (stereo override) should be enabled in the driver. The default
+ value of EGL_AUTO_STEREO_NV is zero.
+
+Issues
+
+ None
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ------------- --------- ----------------------------------------
+ 1 02 Dec 2011 groth Split 3D Vision capability from previous extension.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_context_priority_realtime.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_context_priority_realtime.txt
new file mode 100644
index 0000000..5435c8c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_context_priority_realtime.txt
@@ -0,0 +1,195 @@
+Name
+
+ NV_context_priority_realtime
+
+Name Strings
+
+ EGL_NV_context_priority_realtime
+
+Contributors
+
+ Sandeep Shinde
+ Kirill Artamonov
+ Sami Kiminki
+ Donghan Ryu
+ Daniel Koch
+ Mark Kilgard
+
+Contacts
+
+ Sandeep Shinde, NVIDIA (sashinde 'at' nvidia 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4 - November 21, 2017
+
+Number
+
+ EGL Extension #124
+
+Dependencies
+
+ Requires EGL 1.0.
+
+ Requires EGL_IMG_context_priority
+
+ This extension is written against the wording of the EGL 1.5
+ Specification - August 27, 2014 (but may be implemented against earlier
+ versions).
+
+Overview
+
+ This extension allows an EGLContext to be created with one extra
+ priority level in addition to three priority levels that are part of
+ EGL_IMG_context_priority extension.
+
+ This new level has extra privileges that are not available to other three
+ levels. Some of the privileges may include:
+ - Allow realtime priority to only few contexts
+ - Allow realtime priority only to trusted applications
+ - Make sure realtime priority contexts are executed immediately
+ - Preempt any current context running on GPU on submission of
+ commands for realtime context
+
+ The mechanism for determining which EGL context is allowed to use this
+ priority level is platform dependent.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ New attribute value accepted for the EGL_CONTEXT_PRIORITY_LEVEL_IMG
+ attribute in the <attrib_list> argument of eglCreateContext:
+
+ EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
+
+Additions to Chapter 3 of the EGL 1.5 Specification (EGL Functions and Errors)
+
+ Add a NEW section "3.7.1.7 Context Priority" to specify the context
+ priority attribute for EGL_IMG_context_priority and values:
+
+ "3.7.1.7 Context Priority
+
+ The attribute EGL_CONTEXT_PRIORITY_LEVEL_IMG specifies a context
+ priority hint for a context supporting context priority. This
+ attribute's value may be one of EGL_CONTEXT_PRIORITY_HIGH_IMG,
+ EGL_CONTEXT_PRIORITY_MEDIUM_IMG, EGL_CONTEXT_PRIORITY_LOW_IMG,
+ or EGL_CONTEXT_PRIORITY_REALTIME_NV. The default value for
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG is EGL_CONTEXT_PRIORITY_MEDIUM_IMG.
+
+ This attribute is a hint, as an implementation may not support
+ multiple contexts at some priority levels and system policy may limit
+ access to high priority contexts to appropriate system privilege
+ level.
+
+ The value EGL_CONTEXT_PRIORITY_REALTIME_NV requests the created
+ context run at the highest possible priority and be capable of
+ preempting the current executing context when commands are flushed
+ by such a realtime context.
+
+ This attribute is supported only for OpenGL and OpenGL ES contexts."
+
+ Within section 3.7.4 "Context Queries" amend the eglQueryContext
+ discussion as follows:
+
+ Change the sentence describing the attribute parameter to include
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG so it reads:
+
+ "attribute must be set to EGL_CONFIG_ID, EGL_CONTEXT_CLIENT_TYPE,
+ EGL_CONTEXT_CLIENT_VERSION, EGL_RENDER_BUFFER, or
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG."
+
+ After the discussion of "Querying EGL_RENDER_BUFFER", add:
+
+ "Querying EGL_CONTEXT_PRIORITY_LEVEL_IMG returns the priority this
+ context was actually created with. Note: this may not be the same
+ as specified at context creation time, due to implementation limits
+ on the number of contexts that can be created at a specific priority
+ level in the system."
+
+Issues
+
+ 1) The EGL_IMG_context_priority extension is written to amend the EGL
+ 1.4 specification. Should this extension amend EGL 1.5 or 1.4?
+
+ RESOLVED: EGL 1.5 because it is newer and better organized to
+ extend context attributes.
+
+ EGL 1.5 rewrites 3.7.1 "Creating Rendering Contexts" to have subsections
+ for different context attributes. This extension adds a new such section
+ that includes the EGL_IMG_context_priority attribute and values too.
+
+ 2) Is context priority hint supported for both OpenGL and OpenGL ES contexts?
+
+ RESOLVED: Yes.
+
+ 3) What is the intended application of the realtime priority level?
+
+ RESOLVED: One anticipated application is the system compositor
+ for a Head Mounted Display (HMD) requires realtime recomposition
+ for time-warping.
+
+ 4) What action causes a context with realtime priority to preempt
+ other contexts?
+
+ RESOLVED: Preemption by a context with realtime priority should
+ occur when there are pending rendering commands and an implicit or
+ explicit flush (i.e. glFlush or glFinish) occurs.
+
+ 5) What does "trusted" or "appropriate system privilege level"
+ mean in practice for a Linux-based operating system such as Android?
+
+ RESOLVED: Trusted means an application that has higher privileges
+ than other apps such as having CAP_SYS_NICE capability. On Android
+ such applications have to be registered in advance with the OS;
+ unpriviledged third party app cannot acquire this capability.
+
+ This restriction exists so arbitrary applications do not starve or
+ otherwise compromise the interactivity of the system overall.
+
+ 6) In practice how many realtime priority contexts can exist in a system to
+ get best performance?
+
+ RESOLVED: Only one realtime priority context should be active at a given
+ moment to get best performance.
+
+ 7) Can a context created with a realtime priority hint that is
+ in fact given a realtime priority, subsequently find that realtime
+ priority revoked and, if revoked, can it be restored?
+
+ RESOLVED: No, once a context is created with specific priority level, the
+ priority will not change for lifetime of the context. This means there will
+ not be revoking or restoring of realtime priority to already created context.
+
+ 8) The attrib_list for eglCreateContext could list the attribute
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG multiple times with different valid values.
+ What happens in this case?
+
+ RESOLVED: Behavior is undefined in this case.
+
+ NVIDIA's EGL implementation handles such case by using the last (valid) attribute
+ value listed in the attrib_list array as the effective attribute value for
+ creating the context.
+
+ The EGL specification is unfortunately silent on this issue.
+
+
+Revision History
+ Version 1, 2016/11/23 (Sandeep Shinde)
+ - Initial version
+ Version 2, 2017/10/13 (Mark Kilgard)
+ - Complete and convert to NV extension
+ Version 3, 2017/10/31 (Sandeep Shinde)
+ - Few minor corrections. Issue 6 resolved.
+ Version 4, 2017/11/21 (Sandeep Shinde)
+ - Update enum value and add extension number
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample.txt
new file mode 100644
index 0000000..e016a6f
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample.txt
@@ -0,0 +1,554 @@
+Name
+
+ NV_coverage_sample
+
+Name Strings
+
+ GL_NV_coverage_sample
+ EGL_NV_coverage_sample
+
+Contact
+
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright NVIDIA Corporation, 2005 - 2007
+
+Status
+
+ NVIDIA Proprietary
+
+Version
+
+ Last Modified Date: 2007/03/20
+ NVIDIA Revision: 1.0
+
+Number
+
+ EGL Extension #17
+ OpenGL ES Extension #72
+
+Dependencies
+
+ Written based on the wording of the OpenGL 2.0 specification
+ and the EXT_framebuffer_object specification.
+
+ Written based on the wording of the EGL 1.2 specification.
+
+ Requires OpenGL-ES 2.0 and OES_framebuffer_object.
+
+ Requires EGL 1.1.
+
+Overview
+
+ Anti-aliasing is a critical component for delivering high-quality
+ OpenGL rendering. Traditionally, OpenGL implementations have
+ implemented two anti-aliasing algorithms: edge anti-aliasing
+ and multisampling.
+
+ Edge anti-aliasing computes fractional fragment coverage for all
+ primitives in a rendered frame, and blends edges of abutting
+ and/or overlapping primitives to produce smooth results. The
+ image quality produced by this approach is exceptionally high;
+ however, applications are render their geometry perfectly ordered
+ back-to-front in order to avoid artifacts such as bleed-through.
+ Given the algorithmic complexity and performance cost of performing
+ exact geometric sorts, edge anti-aliasing has been used very
+ sparingly, and almost never in interactive games.
+
+ Multisampling, on the other hand, computes and stores subpixel
+ (a.k.a. "sample") coverage for rasterized fragments, and replicates
+ all post-alpha test operations (e.g., depth test, stencil test,
+ alpha blend) for each sample. After the entire scene is rendered,
+ the samples are filtered to compute the final anti-aliased image.
+ Because the post-alpha test operations are replicated for each sample,
+ all of the bleed-through and ordering artifacts that could occur with
+ edge anti-aliasing are avoided completely; however, since each sample
+ must be computed and stored separately, anti-aliasing quality is
+ limited by framebuffer storage and rendering performance.
+
+ This extension introduces a new anti-aliasing algorithm to OpenGL,
+ which dramatically improves multisampling quality without
+ adversely affecting multisampling's robustness or significantly
+ increasing the storage required, coverage sampling.
+
+ Coverage sampling adds an additional high-precision geometric
+ coverage buffer to the framebuffer, which is used to produce
+ high-quality filtered results (with or without the presence of a
+ multisample buffer). This coverage information is computed and stored
+ during rasterization; since applications may render objects where the
+ specified geometry does not correspond to the visual result (examples
+ include alpha-testing for "imposters," or extruded volume rendering
+ for stencil shadow volumes), coverage buffer updates may be masked
+ by the application, analagous to masking the depth buffer.
+
+IP Status
+
+ NVIDIA Proprietary
+
+New Procedures and Functions
+
+ void CoverageMaskNV( boolean mask )
+ void CoverageOperationNV( enum operation )
+
+New Tokens
+
+
+ Accepted by the <attrib_list> parameter of eglChooseConfig
+ and eglCreatePbufferSurface, and by the <attribute>
+ parameter of eglGetConfigAttrib
+
+ EGL_COVERAGE_BUFFERS_NV 0x30E0
+ EGL_COVERAGE_SAMPLES_NV 0x30E1
+
+ Accepted by the <internalformat> parameter of
+ RenderbufferStorageEXT and the <format> parameter of ReadPixels
+
+ COVERAGE_COMPONENT_NV 0x8ED0
+
+ Accepted by the <internalformat> parameter of
+ RenderbufferStorageEXT
+
+ COVERAGE_COMPONENT4_NV 0x8ED1
+
+ Accepted by the <operation> parameter of CoverageOperationNV
+
+ COVERAGE_ALL_FRAGMENTS_NV 0x8ED5
+ COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6
+ COVERAGE_AUTOMATIC_NV 0x8ED7
+
+ Accepted by the <attachment> parameter of
+ FramebufferRenderbuffer, and GetFramebufferAttachmentParameteriv
+
+ COVERAGE_ATTACHMENT_NV 0x8ED2
+
+ Accepted by the <buf> parameter of Clear
+
+ COVERAGE_BUFFER_BIT_NV 0x8000
+
+ Accepted by the <pname> parameter of GetIntegerv
+
+ COVERAGE_BUFFERS_NV 0x8ED3
+ COVERAGE_SAMPLES_NV 0x8ED4
+
+Changes to Chapter 4 of the OpenGL 2.0 Specification
+
+ Insert a new section, after Section 3.2.1 (Multisampling)
+
+ "3.2.2 Coverage Sampling
+
+ Coverage sampling is a mechanism to antialias all GL primitives: points,
+ lines, polygons, bitmaps and images. The technique is similar to
+ multisampling, with all primitives being sampled multiple times at each
+ pixel, and a sample resolve applied to compute the color values stored
+ in the framebuffer's color buffers. As with multisampling, coverage
+ sampling resolves color sample and coverage values to a single, displayable
+ color each time a pixel is updated, so antialiasing appears to be automatic
+ at the application level. Coverage sampling may be used simultaneously
+ with multisampling; however, this is not required.
+
+ An additional buffer, called the coverage buffer, is added to
+ the framebuffer. This buffer stores additional coverage information
+ that may be used to produce higher-quality antialiasing than what is
+ provided by conventional multisampling.
+
+ When the framebuffer includes a multisample buffer (3.5.6), the
+ samples contain this coverage information, and the framebuffer
+ does not include the coverage buffer.
+
+ If the value of COVERAGE_BUFFERS_NV is one, the rasterization of
+ all primitives is changed, and is referred to as coverage sample
+ rasterization. Otherwise, primitive rasterization is referred to
+ as multisample rasterization (if SAMPLE_BUFFERS is one) or
+ single-sample rasterization (otherwise). The value of
+ COVERAGE_BUFFERS_NV is queried by calling GetIntegerv with <pname>
+ set to COVERAGE_BUFFERS_NV.
+
+ During coverage sample rasterization the pixel fragment contents
+ are modified to include COVERAGE_SAMPLES_NV coverage values. The
+ value of COVERAGE_SAMPLES_NV is an implementation-dependent
+ constant, and is queried by calling GetIntegerv with <pname> set
+ to COVERAGE_SAMPLES_NV.
+
+ The command
+
+ CoverageOperationNV(enum operation)
+
+ may be used to modify the manner in which coverage sampling is
+ performed for all primitives. If <operation> is
+ COVERAGE_ALL_FRAGMENTS_NV, coverage sampling will be performed and the
+ coverage buffer updated for all fragments generated during rasterization.
+ If <operation> is COVERAGE_EDGE_FRAGMENTS_NV, coverage sampling will
+ only be performed for fragments generated at the edge of the
+ primitive (by only updating fragments at the edges of primitives,
+ applications may get better visual results when rendering partially
+ transparent objects). If <operation> is COVERAGE_AUTOMATIC_NV,
+ the GL will automatically select the appropriate coverage operation,
+ dependent on the GL blend mode and the use of gl_LastFragColor /
+ gl_LastFragData in the bound fragment program. If blending is enabled,
+ or gl_LastFragColor / gl_LastFragData appears in the bound fragment
+ program, COVERAGE_AUTOMATIC_NV will behave identically to
+ COVERAGE_EDGE_FRAGMENTS_NV; otherwise, COVERAGE_AUTOMATIC_NV will behave
+ identically to COVERAGE_ALL_FRAGMENTS_NV. The default coverage operation
+ is COVERAGE_AUTOMATIC_NV."
+
+ Insert a new section, after Section 3.3.3 (Point Multisample
+ Rasterization)
+
+ "3.3.4 Point Coverage Sample Rasterization
+
+ If the value of COVERAGE_BUFFERS_NV is one, then points are
+ rasterized using the following algorithm, regardless of whether
+ point antialiasing (POINT_SMOOTH) is enabled or disabled. Point
+ rasterization produces fragments using the same algorithm described
+ in section 3.3.3; however, sample points are divided into SAMPLES
+ multisample points and COVERAGE_SAMPLES_NV coverage sample points.
+
+ Rasterization for multisample points uses the algorithm described
+ in section 3.3.3. Rasterization for coverage sample points uses
+ implementation-dependent algorithms, ultimately storing the results
+ in the coverage buffer."
+
+ Insert a new section, after Section 3.4.4 (Line Multisample
+ Rasterization)
+
+ "3.4.5 Line Coverage Sample Rasterization
+
+ If the value of COVERAGE_BUFFERS_NV is one, then lines are
+ rasterized using the following algorithm, regardless of whether
+ line antialiasing (LINE_SMOOTH) is enabled or disabled. Line
+ rasterization produces fragments using the same algorithm described
+ in section 3.4.4; however, sample points are divided into SAMPLES
+ multisample points and COVERAGE_SAMPLES_NV coverage sample points.
+
+ Rasterization for multisample points uses the algorithm described in
+ section 3.4.4. Rasterization for coverage sample points uses
+ implementation-dependent algorithms, ultimately storing results in
+ the coverage buffer."
+
+ Insert a new section, after Section 3.5.6 (Polygon Multisample
+ Rasterization)
+
+ "3.5.7 Polygon Coverage Sample Rasterization
+
+ If the value of COVERAGE_BUFFERS_NV is one, then polygons are
+ rasterized using the following algorithm, regardless of whether
+ polygon antialiasing (POLYGON_SMOOTH) is enabled or disabled. Polygon
+ rasterization produces fragments using the same algorithm described in
+ section 3.5.6; however, sample points are divided into SAMPLES multisample
+ points and COVERAGE_SAMPLES_NV coverage sample points.
+
+ Rasterization for multisample points uses the algorithm described in
+ section 3.5.7. Rasterization for coverage sample points uses
+ implementation-dependent algorithms, ultimately storing results in the
+ coverage buffer."
+
+ Insert a new section, after Section 3.6.6 (Pixel Rectangle Multisample
+ Rasterization)
+
+ "3.6.7 Pixel Rectangle Coverage Sample Rasterization
+
+ If the value of COVERAGE_BUFFERS_NV is one, then pixel rectangles are
+ rasterized using the algorithm described in section 3.6.6."
+
+ Modify the first sentence of the second-to-last paragraph of section
+ 3.7 (Bitmaps) to read:
+
+ "Bitmap Multisample and Coverage Sample Rasterization
+
+ If MULTISAMPLE is enabled, and the value of SAMPLE_BUFFERS is one;
+ or if the value of COVERAGE_BUFFERS_NV is one, then bitmaps are
+ rasterized using the following algorithm. [...]"
+
+ Insert after the first paragraph of Section 4.2.2 (Fine Control of
+ Buffer Updates):
+
+ "The coverage buffer can be enabled or disabled for writing coverage
+ sample values using
+
+ void CoverageMaskNV( boolean mask );
+
+ If <mask> is non-zero, the coverage buffer is enabled for writing;
+ otherwise, it is disabled. In the initial state, the coverage
+ buffer is enabled for writing."
+
+ And change the text of the last 2 paragraphs of Section 4.2.2 to read:
+
+ "The state required for the various masking operations is three
+ integers and two bits: an integer for color indices, an integer for
+ the front and back stencil values, a bit for depth values, and a
+ bit for coverage sample values. A set of four bits is also required
+ indicating which components of an RGBA value should be written. In the
+ initial state, the integer masks are all ones, as are the bits
+ controlling the depth value, coverage sample value and RGBA component
+ writing.
+
+ Fine Control of Multisample Buffer Updates
+
+ When the value of SAMPLE_BUFFERS is one, ColorMask, DepthMask,
+ CoverageMask, and StencilMask or StencilMaskSeparate control the
+ modification of values in the multisample buffer. [...]"
+
+ Change paragraph 2 of Section 4.2.3 (Clearing the Buffers) to read:
+
+ "is the bitwise OR of a number of values indicating which buffers are to
+ be cleared. The values are COLOR_BUFFER_BIT, DEPTH_BUFFER_BIT,
+ STENCIL_BUFFER_BIT, ACCUM_BUFFER_BIT and COVERAGE_BUFFER_BIT_NV, indicating
+ the buffers currently enabled for color writing, the depth buffer,
+ the stencil buffer, the accumulation buffer and the virtual-coverage
+ buffer, respectively. [...]"
+
+ Insert a new paragraph after paragraph 4 of Section 4.3.2 (Reading Pixels)
+ (beginning with "If there is a multisample buffer ..."):
+
+ "If the <format> is COVERAGE_COMPONENT_NV, then values are taken from the
+ coverage buffer; again, if there is no coverage buffer, the error
+ INVALID_OPERATION occurs. When <format> is COVERAGE_COMPONENT_NV,
+ <type> must be GL_UNSIGNED_BYTE. Any other value for <type> will
+ generate the error INVALID_ENUM. If there is a multisample buffer, the
+ values are undefined."
+
+
+
+Modifications to the OES_framebuffer_object specification
+
+ Add a new table at the end of Section 4.4.2.1 (Renderbuffer Objects)
+
+ "+-------------------------+-----------------------+-----------+
+ | Sized internal format | Base Internal Format | C Samples |
+ +-------------------------+-----------------------+-----------+
+ | COVERAGE_COMPONENT4_NV | COVERAGE_COMPONENT_NV | 4 |
+ +-------------------------+-----------------------+-----------+
+ Table 1.ooo Desired component resolution for each sized internal
+ format that can be used only with renderbuffers"
+
+ Add to the bullet list in Section 4.4.4 (Framebuffer Completeness)
+
+ "An internal format is 'coverage-renderable' if it is COVERAGE_COMPONENT_NV
+ or one of the COVERAGE_COMPONENT_NV formats from table 1.ooo. No other
+ formats are coverage-renderable"
+
+ Add to the bullet list in Section 4.4.4.1 (Framebuffer Attachment
+ Completeness)
+
+ "If <attachment> is COVERAGE_ATTACHMENT_NV, then <image> must have a
+ coverage-renderable internal format."
+
+ Add a paragraph at the end of Section 4.4.4.2 (Framebuffer Completeness)
+
+ "The values of COVERAGE_BUFFERS_NV and COVERAGE_SAMPLES_NV are derived from
+ the attachments of the currently bound framebuffer object. If the current
+ FRAMEBUFFER_BINDING_OES is not 'framebuffer-complete', then both
+ COVERAGE_BUFFERS_NV and COVERAGE_SAMPLES_NV are undefined. Otherwise,
+ COVERAGE_SAMPLES_NV is equal to the number of coverage samples for the
+ image attached to COVERAGE_ATTACHMENT_NV, or zero if COVERAGE_ATTACHMENT_NV
+ is zero."
+
+Additions to the EGL 1.2 Specification
+
+ Add to Table 3.1 (EGLConfig attributes)
+ +---------------------------+---------+-----------------------------------+
+ | Attribute | Type | Notes |
+ +---------------------------+---------+-----------------------------------+
+ | EGL_COVERAGE_BUFFERS_NV | integer | number of coverage buffers |
+ | EGL_COVERAGE_SAMPLES_NV | integer | number of coverage samples per |
+ | | | pixel |
+ +---------------------------+---------+-----------------------------------+
+
+ Modify the first sentence of the last paragraph of the "Buffer
+ Descriptions and Attributes" subsection of Section 3.4 (Configuration
+ Management), p. 16
+
+ "There are no single-sample depth, stencil or coverage buffers for a
+ multisample EGLConfig; the only depth, stencil and coverage buffers are
+ those in the multisample buffer. [...]"
+
+ And add the following text at the end of that paragraph:
+
+ "The <coverage buffer> is used only by OpenGL ES. It contains primitive
+ coverage information that is used to produce a high-quality anti-aliased
+ image. The format of the coverage buffer is not specified, and its
+ contents are not directly accessible. Only the existence of the coverage
+ buffer, and the number of coverage samples it contains, are exposed by EGL.
+
+ EGL_COVERAGE_BUFFERS_NV indicates the number of coverage buffers, which
+ must be zero or one. EGL_COVERAGE_SAMPLES_NV gives the number of coverage
+ samples per pixel; if EGL_COVERAGE_BUFFERS_NV is zero, then
+ EGL_COVERAGE_SAMPLES_NV will also be zero."
+
+ Add to Table 3.4 (Default values and match criteria for EGLConfig
+ attributes)
+
+ +---------------------------+-----------+-------------+---------+---------+
+ | Attribute | Default | Selection | Sort | Sort |
+ | | | Criteria | Order | Priority|
+ +---------------------------+-----------+-------------+---------+---------+
+ | EGL_COVERAGE_BUFFERS_NV | 0 | At Least | Smaller | 7 |
+ | EGL_COVERAGE_SAMPLES_NV | 0 | At Least | Smaller | 8 |
+ +---------------------------+-----------+-------------+---------+---------+
+ And renumber existing sort priorities 7-11 as 9-13.
+
+ Modify the list in "Sorting of EGLConfigs" (Section 3.4.1, pg 20)
+
+ " [...]
+ 5. Smaller EGL_SAMPLE_BUFFERS
+ 6. Smaller EGL_SAMPLES
+ 7. Smaller EGL_COVERAGE_BUFFERS_NV
+ 8. Smaller EGL_COVERAGE_SAMPLES_NV
+ 9. Smaller EGL_DEPTH_SIZE
+ 10. Smaller EGL_STENCIL_SIZE
+ 11. Smaller EGL_ALPHA_MASK_SIZE
+ 12. Special: [...]
+ 13. Smaller EGL_CONFIG_ID [...]"
+
+Usage Examples
+
+ (1) Basic Coverage Sample Rasterization
+
+ glCoverageMaskNV(GL_TRUE);
+ glDepthMask(GL_TRUE);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+
+ while (1)
+ {
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
+ GL_COVERAGE_BUFFER_BIT_NV);
+ glDrawElements(...);
+ eglSwapBuffers(...);
+ }
+
+ (2) Multi-Pass Rendering Algorithms
+
+ while (1)
+ {
+ glDepthMask(GL_TRUE);
+ glCoverageMaskNV(GL_TRUE);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
+ GL_COVERAGE_BUFFER_BIT_NV);
+
+ // first render pass: render Z-only (occlusion surface), with
+ // coverage info. color writes are disabled
+
+ glCoverageMaskNV(GL_TRUE);
+ glDepthMask(GL_TRUE);
+ glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
+ glDepthFunc(GL_LESS);
+ glDrawElements(...);
+
+ // second render pass: set Z test to Z-equals, disable Z-writes &
+ // coverage writes. enable color writes. coverage may be
+ // disabled, because subsequent rendering passes are rendering
+ // identical geometry -- since the final coverage buffer will be
+ // unchanged, we can disable coverage writes as an optimization.
+
+ glCoverageMaskNV(GL_FALSE);
+ glDepthMask(GL_FALSE);
+ glDepthFunc(GL_EQUAL);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glDrawElements(...);
+
+ eglSwapBuffers();
+ }
+
+ (3) Rendering Translucent Objects on Top of Opaque Objects
+
+ while (1)
+ {
+ glDepthMask(GL_TRUE);
+ glCoverageMaskNV(GL_TRUE);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
+ GL_COVERAGE_BUFFER_BIT_NV);
+
+ // render opaque, Z-buffered geometry with coverage info for the
+ // entire primitive. Overwrite coverage data for all fragments, so
+ // that interior fragments do not get resolved incorrectly.
+
+ glDepthFunc(GL_LESS);
+ glCoverageOperationNV(GL_COVERAGE_ALL_FRAGMENTS_NV);
+ glDrawElements(...);
+
+ // render translucent, Z-buffered geometry. to ensure that visible
+ // edges of opaque geometry remain anti-aliased, change the
+ // coverage operation to just edge fragments. this will maintain
+ // the coverage information underneath the translucent geometry,
+ // except at translucent edges.
+
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glCoverageOperationNV(GL_COVERAGE_EDGE_FRAGMENTS_NV);
+ glEnable(GL_BLEND);
+ glDrawElements(...);
+ glDisable(GL_BLEND);
+
+ eglSwapBuffers();
+ }
+
+ (4) Rendering Opacity-Mapped Particle Systems & HUDs on Top of Opaque
+ Geometry
+
+ while (1)
+ {
+ glDepthMask(GL_TRUE);
+ glCoverageMaskNV(GL_TRUE);
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
+ GL_COVERAGE_BUFFER_BIT_NV);
+
+ // render opaque, Z-buffered geometry, with coverage info.
+ glDepthFunc(GL_LESS);
+ glDrawElements(...);
+
+ // render opacity-mapped geometry. disable Z writes, enable alpha
+ // blending. also, disable coverage writes -- the edges of the
+ // geometry used for the HUD/particle system have alpha values
+ // tapering to zero, so edge coverage is uninteresting, and
+ // interior coverage should still refer to the underlying opaque
+ // geometry, so that opaque edges visible through the translucent
+ // regions remain anti-aliased.
+
+ glCoverageMaskNV(GL_FALSE);
+ glDepthMask(GL_FALSE);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_BLEND);
+ glDrawElements(...);
+ glDisable(GL_BLEND);
+
+ eglSwapBuffers();
+ }
+
+
+Issues
+
+ 1. Is any specific discussion of coverage sampling resolves required,
+ particularly with respect to application-provided framebuffer objects?
+
+ RESOLVED: No. Because the coverage sampling resolve is an
+ implementation-dependent algorithm, it is always legal behavior for
+ framebuffer read / copy functions to return the value in the selected
+ ReadBuffer as if COVERAGE_BUFFERS_NV was zero. This allows
+ textures attached to the color attachment points of framebuffer objects
+ to behave predictably, even when COVERAGE_BUFFERS_NV is one.
+
+ Implementations are encouraged, whenever possible, to use the highest-
+ quality coverage sample resolve supported for calls to eglSwapBuffers,
+ eglCopyBuffers, ReadPixels, CopyPixels and CopyTex{Sub}Image.
+
+ 2. Should all render buffer & texture types be legal sources for image
+ resolves and coverage attachment?
+
+ RESOLVED: This spec should not place any arbitrary limits on usage;
+ however, there are many reasons why implementers may not wish to
+ support coverage sampling for all surface types.
+
+ Implementations may return FRAMEBUFFER_UNSUPPORTED_OES from
+ CheckFramebufferStatusOES if an object bound to COVERAGE_ATTACHMENT_NV
+ is incompatible with one or more objects bound to DEPTH_ATTACHMENT_OES,
+ STENCIL_ATTACHMENT_OES, or COLOR_ATTACHMENTi_OES.
+
+Revision History
+
+#1.0 - 20.03.2007
+
+ Renumbered enumerants. Reformatted to 80 columns.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample_resolve.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample_resolve.txt
new file mode 100644
index 0000000..fa5cc15
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_coverage_sample_resolve.txt
@@ -0,0 +1,127 @@
+Name
+
+ NV_coverage_sample_resolve
+
+Name Strings
+
+ EGL_NV_coverage_sample_resolve
+
+Contact
+
+ James Jones, NVIDIA Corporation (jajones 'at' nvidia.com)
+
+Notice
+
+ Copyright NVIDIA Corporation, 2011
+
+Status
+
+ NVIDIA Proprietary
+
+Version
+
+ Last Modified Date: 2011/04/13
+ NVIDIA Revision: 1.0
+
+Number
+
+ EGL Extension #30
+
+Dependencies
+
+ Written based on the wording of the EGL 1.4 specification.
+
+ Trivially interacts with EGL_NV_coverage_sample
+
+ Requires EGL 1.2.
+
+Overview
+
+ NV_coverage_sample introduced a method to improve rendering quality
+ using a separate buffer to store coverage information for pixels in
+ the color buffers. It also provided a mechanism to disable writing
+ to the coverage buffer when coverage sample filtering was not needed
+ or undesirable. However, it did not provide a way to disable
+ reading data from the coverage buffer at resolve time. In some
+ cases performance can be improved by eliminating these memory reads.
+ To that end, this extension exposes a surface attribute that allows
+ applications to specify when no coverage sample resolve is desired.
+
+IP Status
+
+ NVIDIA Proprietary
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglSurfaceAttrib and
+ eglQuerySurface:
+
+ EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+
+ Accepted by the <value> parameter of eglSurfaceAttrib and returned
+ in the <value> parameter of eglQuerySurface when <attribute> is
+ EGL_COVERAGE_SAMPLE_RESOLVE_NV:
+
+ EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+ EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and
+Errors)
+
+ Additions to section 3.5.6 (Surface Attributes)
+
+ Replace the last sentence of paragraph 2 (p. 35):
+
+ "Attributes that can be specified are
+ EGL_COVERAGE_SAMPLE_RESOLVE_NV, EGL_MIPMAP_LEVEL,
+ EGL_MULTISAMPLE_RESOLVE, and EGL_SWAP_BEHAVIOR."
+
+ Add the following paragraphs between paragraphs 2 and 3 (p. 35):
+
+ "If <attribute> is EGL_COVERAGE_SAMPLE_RESOLVE_NV, then <value>
+ specifies the filter to use when resolving the coverage sample
+ buffer. A <value> of EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV chooses
+ the default implementation-defined filtering method, while
+ EGL_MULTISAMPLE_RESOLVE_NONE_NV disables filtering based on coverage
+ data.
+
+ "The initial value of EGL_COVERAGE_SAMPLE_RESOLVE_NV is
+ EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV."
+
+ Add the following paragraph after paragraph 13 (p. 36):
+
+ "Querying EGL_COVERAGE_SAMPLE_RESOLVE_NV returns the filtering
+ method used when performing coverage buffer resolution. The filter
+ may be either EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV or
+ EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV, as described above for
+ eglSurfaceAttrib."
+
+Interactions with EGL_NV_coverage_sample:
+
+ This extension relies on language in EGL_NV_coverage_sample to
+ describe the coverage sample buffer.
+
+ If EGL_NV_coverage_sample is not present, this extension has no
+ effect on rendering.
+
+Issues
+
+ 1. Should it be an error to set EGL_COVERAGE_SAMPLE_RESOLVE_NV on
+ surfaces that don't have a coverage buffer?
+
+ RESOLVED: No. EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV will behave
+ the same as EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV in this case.
+
+Revision History
+
+#1 (James Jones, 2011-04-13)
+
+ - Initial revision.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt
new file mode 100644
index 0000000..cc54749
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt
@@ -0,0 +1,206 @@
+Name
+
+ NV_cuda_event
+
+Name Strings
+
+ EGL_NV_cuda_event
+
+Contributors
+
+ Debalina Bhattacharjee
+ Michael Chock
+ James Jones
+ Daniel Kartch
+
+Contact
+
+ Michael Chock (mchock 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, June 28, 2018
+
+Number
+
+ EGL Extension #75
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ This extension is written against the language of EGL 1.5 and the
+ EGL_EXT_sync_reuse extension.
+
+ Either EGL_KHR_fence_sync and the EGLAttrib type or EGL 1.5 are
+ required.
+
+ This extension interacts with, but does not require,
+ EGL_EXT_sync_reuse.
+
+ This extension interacts with EGL_NV_device_cuda.
+
+Overview
+
+ This extension allows creating an EGL sync object linked to a CUDA
+ event object, potentially improving efficiency of sharing images and
+ compute results between the two APIs.
+
+IP Status
+
+ No known claims.
+
+New Types
+
+ A pointer to type cudaEvent_t, defined in the CUDA header files, may
+ be included in the attribute list passed to eglCreateSync.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as attribute names in the <attrib_list> argument
+ of eglCreateSync:
+
+ EGL_CUDA_EVENT_HANDLE_NV 0x323B
+
+ Returned in <values> for eglGetSyncAttrib <attribute>
+ EGL_SYNC_TYPE:
+
+ EGL_SYNC_CUDA_EVENT_NV 0x323C
+
+ Returned in <values> for eglGetSyncAttrib <attribute>
+ EGL_SYNC_CONDITION:
+
+ EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
+
+Add to section 3.8.1 (Sync Objects) of the EGL 1.5 specification, after
+the sixth paragraph:
+
+ Likewise, a <CUDA event sync object> reflects the status of a
+ corresponding CUDA object. Waiting on this type of sync object is
+ equivalent to waiting for completion of the corresponding linked
+ CUDA event object.
+
+Add a new section following section 3.8.1.2 (Creating and Signaling
+OpenCL Event Sync Objects):
+
+ Section 3.8.1.X Creating and Signaling CUDA Event Sync Objects
+
+ If <type> is EGL_SYNC_CUDA_EVENT_NV, a CUDA event sync object is
+ created. The <attrib_list> may contain the attribute
+ EGL_CUDA_EVENT_HANDLE_NV, set to a pointer to a cudaEvent_t object.
+ If it does not contain this attribute, the sync object will start in
+ the signaled state, and an event attribute must be provided the
+ first time eglUnsignalSyncEXT is called. Otherwise, a call to
+ eglUnsignalSyncEXT may replace this event attribute or leave it
+ unspecified, causing the previous object to be reused.
+
+ A cudaEvent_t object provided to eglCreateSync or eglUnsignalSyncEXT
+ must be properly initialized and recorded by the CUDA API (using
+ cudaEventCreate and cudaEventRecord), and the CUDA device
+ used to create the event must correspond to <dpy>[fn1]. Note that
+ EGL_CUDA_EVENT_HANDLE_NV is not a queryable property of a sync
+ object.
+
+ [fn1] If EGL_NV_device_cuda is supported, it is sufficient that the
+ CUDA device used to create the CUDA event matches the
+ EGL_CUDA_DEVICE_NV attribute of <dpy>'s underlying EGL
+ device.
+
+ Attributes of the CUDA event sync object are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ ------------- --------------------------
+ EGL_SYNC_TYPE EGL_SYNC_CUDA_EVENT_NV
+ EGL_SYNC_STATUS Depends on status of <event>
+ EGL_SYNC_CONDITION EGL_SYNC_CUDA_EVENT_COMPLETE_NV
+
+ If an <event> is linked to the sync object, the status of this type
+ of sync object depends on the state of <event> evaluated at the time
+ of the most recent call to eglCreateSync or eglUnsignalSyncEXT. If
+ all device work preceding the most recent call to cudaEventRecord on
+ the event has not yet completed, the status of the linked sync
+ object will be EGL_UNSIGNALED. If all such work has completed, the
+ status of the linked sync object will be EGL_SIGNALED. Calling
+ cudaEventRecord to modify an event has no effect on the sync object
+ while its status is EGL_UNSIGNALED, but will have an effect if the
+ event is reevaluated at a subsequent eglUnsignalSyncEXT call.
+
+ The only condition supported for CUDA event sync objects is
+ EGL_SYNC_CUDA_EVENT_COMPLETE_NV. It is satisfied when all device
+ work prior to the most recent call to cudaEventRecord at sync
+ unsignaling time has completed.
+
+If EGL_EXT_sync_reuse is not present, then change the second sentence of
+3.8.1.X above to "The <attrib_list> must contain ..." and omit the
+remaining sentences in the paragraph. Omit all references to
+eglUnsignalSyncEXT.
+
+In 3.8.1 (Sync Objects), if EGL_EXT_sync_reuse is present, then add the
+following to the error list for eglUnsignalSyncEXT. Otherwise add it to
+the error list for eglCreateSync:
+
+ If <type> is EGL_SYNC_CUDA_EVENT_NV and a EGL_CUDA_EVENT_HANDLE_NV
+ is not linked to the sync object, then an EGL_BAD_ATTRIBUTE error is
+ generated. If its attribute value is not a valid CUDA event pointer
+ or has not been initialized as described above, then
+ EGL_BAD_ATTRIBUTE may be generated, but the results are undefined
+ and may include program termination.
+
+Modify the third paragraph of section 3.8.1.4 (Querying Sync Object
+Attributes):
+
+ If any eglClientWaitSync or eglWaitSync commands are blocking on
+ <sync> when eglDestroySync is called, <sync> is flagged for deletion
+ and will be deleted when the associated fence command, OpenCL event
+ object, or CUDA event object has completed, and <sync> is no longer
+ blocking any such egl*WaitSync command. Otherwise, the sync object
+ is destroyed immediately.
+
+Replace the EGL_SYNC_CONDITION row of table 3.9 with:
+
+ Attribute Description Supported Sync Objects
+ ------------------ ----------------------- ----------------------
+ EGL_SYNC_CONDITION Signaling condition EGL_SYNC_FENCE,
+ EGL_SYNC_CL_EVENT, or
+ EGL_SYNC_CUDA_EVENT_NV
+
+ Table 3.9 Attributes Accepted by eglGetSyncAttrib
+
+
+Interactions with EGL versions prior to 1.5
+
+ This extension may be used with earlier versions of EGL, provided
+ that the EGL_KHR_fence_sync extension is supported. In this case,
+ replace all references to sync functions and tokens with
+ corresponding KHR-suffixed versions (e.g., replace eglCreateSync
+ with eglCreateSyncKHR).
+
+ Additionally, this extension may be used with the 64-bit types and
+ functions added to EGL_KHR_fence_sync introduced by
+ EGL_KHR_cl_event2 (EGLAttribKHR and eglCreateSync64KHR). Support
+ for OpenCL events is not required.
+
+Issues
+
+ None
+
+Revision History
+
+ Version 2, 2018/06/28 (Daniel Kartch)
+ - Rewritten to clearly define interactions with
+ EGL_EXT_sync_reuse, without requiring it
+ - Fixed incorrect CUDA function name
+ - Fixed table spacing
+
+ Version 1, 2014/06/20 (Michael Chock)
+ - initial version.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_depth_nonlinear.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_depth_nonlinear.txt
new file mode 100644
index 0000000..b46b3ca
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_depth_nonlinear.txt
@@ -0,0 +1,142 @@
+Name
+
+ NV_depth_nonlinear
+
+Name Strings
+
+ GL_NV_depth_nonlinear
+ EGL_NV_depth_nonlinear
+
+Contact
+
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Notice
+
+ Copyright NVIDIA Corporation, 2005 - 2007.
+
+Status
+
+ NVIDIA Proprietary
+
+Version
+
+ Last Modified: 2007/03/20
+ NVIDIA Revision: 1.0
+
+Number
+
+ EGL Extension #18
+ OpenGL ES Extension #73
+
+Dependencies
+
+ Written based on the wording of the OpenGL 2.0 Specification and
+ EGL 1.2 Specification.
+
+ Requires EGL 1.1.
+
+ Requires OpenGL-ES 1.0.
+
+ OES_framebuffer_object affects the wording of this specification.
+
+Overview
+
+ Due to the perspective divide, conventional integer Z-buffers have
+ a hyperbolic distribution of encodings between the near plane
+ and the far plane. This can result in inaccurate depth testing,
+ particularly when the number of depth buffer bits is small
+ and objects are rendered near the far plane.
+
+ Particularly when the number of depth buffer bits is limited
+ (desirable and/or required in low-memory environments), artifacts
+ due to this loss of precision may occur even with relatively
+ modest far plane-to-near plane ratios (e.g., greater than 100:1).
+
+ Many attempts have been made to provide alternate encodings for
+ Z-buffer (or alternate formulations for the stored depth) to
+ reduce the artifacts caused by perspective division, such as
+ W-buffers, Z-complement buffers and floating-point 1-Z buffers.
+
+ This extension adds a non-linear encoded Z buffer to OpenGL,
+ which can improve the practically useful range of, e.g. 16-bit
+ depth buffers by up to a factor of 16, greatly improving depth
+ test quality in applications where the ratio between the near
+ and far planes can not be as tightly controlled.
+
+IP Status
+
+ NVIDIA Proprietary
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as a valid sized internal format by all functions accepting
+ sized internal formats with a base format of DEPTH_COMPONENT
+
+ DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
+
+ Accepted by the <attrib_list> parameter of eglChooseConfig and
+ eglCreatePbufferSurface, and by the <attribute> parameter of
+ eglGetConfigAttrib
+
+ EGL_DEPTH_ENCODING_NV 0x30E2
+
+ Accepted as a value in the <attrib_list> parameter of eglChooseConfig
+ and eglCreatePbufferSurface, and returned in the <value> parameter
+ of eglGetConfigAttrib
+
+ EGL_DEPTH_ENCODING_NONE_NV 0
+ EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
+
+Changes to the OpenGL 2.0 Specification
+
+ Add the following line to table 3.16 (p. 154)
+
+ +--------------------------------+-----------------+------+
+ | Sized Internal Format | Base Internal | D |
+ | | Format | Bits |
+ +--------------------------------+-----------------+------+
+ | DEPTH_COMPONENT16_NONLINEAR_NV | DEPTH_COMPONENT | 16 |
+ +--------------------------------+-----------------+------+
+
+Changes to the EGL 1.2 Specification
+
+ Add the following line to table 3.1 (p. 14)
+
+ +--------------------------+------+---------------------------------------+
+ | Attribute | Type | Notes |
+ +--------------------------+------+---------------------------------------+
+ | EGL_DEPTH_ENCODING_NV | enum | Type of depth-buffer encoding employed|
+ +--------------------------+------+---------------------------------------+
+
+ Modify the description of the depth buffer in Section 3.4 (p. 15)
+
+ "The depth buffer is used only by OpenGL ES. It contains fragment depth
+ (Z) information generated during rasterization. EGL_DEPTH_SIZE indicates
+ the depth of this buffer in bits, and EGL_DEPTH_ENCODING_NV indicates which
+ alternate depth-buffer encoding (if any) should be used. Legal values for
+ EGL_DEPTH_ENCODING_NV are: EGL_DONT_CARE, EGL_DEPTH_ENCODING_NONE_NV and
+ EGL_DEPTH_ENCODING_NONLINEAR_NV."
+
+ Add the following line to table 3.4 (p. 20)
+
+ +-----------------------+---------------+-----------+-------+----------+
+ | Attribute | Default | Selection | Sort | Sort |
+ | | | Criteria | Order | Priority |
+ +-----------------------+---------------+-----------+-------+----------+
+ | EGL_DEPTH_ENCODING_NV | EGL_DONT_CARE | Exact | None | - |
+ +-----------------------+---------------+-------------------+----------+
+
+Issues
+
+ None
+
+Revision History
+
+#1.0 - 20.03.2007
+
+ Renumbered enumerants. Reformatted to 80 columns.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_device_cuda.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_device_cuda.txt
new file mode 100644
index 0000000..1fdc5d6
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_device_cuda.txt
@@ -0,0 +1,91 @@
+Name
+
+ NV_device_cuda
+
+Name Strings
+
+ EGL_NV_device_cuda
+
+Contributors
+
+ Michael Chock
+ James Jones
+
+Contact
+
+ Michael Chock (mchock 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 1, June 21, 2014
+
+Number
+
+ EGL Extension #74
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ This extension is written against the language of EGL 1.5 as
+ modified by EGL_EXT_device_base.
+
+ EGL_EXT_device_base is required.
+
+Overview
+
+ EGL and CUDA both have the capability to drive multiple devices,
+ such as GPUs, within a single system. To interoperate with one
+ another, both APIs must have compatible notions of such devices.
+ This extension defines a mapping from an EGL device to a CUDA device
+ enumerant.
+
+IP Status
+
+ No known claims.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted as a queried <attribute> in eglQueryDeviceAttribEXT:
+
+ EGL_CUDA_DEVICE_NV 0x323A
+
+Add a new section 2.1.3 (CUDA Devices) after 2.1.2 (Devices)
+
+ "Somewhat analogous to an EGL device, a CUDA device establishes a
+ namespace for CUDA operations. In the CUDA API, such a device is
+ represented by a C int. For more details, see the CUDA
+ documentation."
+
+Changes to section 3.2 (Device Enumeration)
+
+ Replace the paragraph immediately following the prototype for
+ eglQueryDeviceAttribEXT:
+
+ "The only valid value of <attribute> is EGL_CUDA_DEVICE_NV. On
+ success, EGL_TRUE is returned, and a valid CUDA device handle
+ corresponding to the EGL device is returned in <value>. This handle
+ is compatible with CUDA API functions."
+
+Issues
+
+ None
+
+Revision History
+
+ Version 1, 2014/06/24 (Michael Chock)
+ - initial version.
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_n_buffer.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_n_buffer.txt
new file mode 100644
index 0000000..9004652
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_n_buffer.txt
@@ -0,0 +1,157 @@
+Name
+
+ NV_triple_buffer
+ NV_quadruple_buffer
+
+Name Strings
+
+ EGL_NV_triple_buffer
+ EGL_NV_quadruple_buffer
+
+Contributors
+
+ Daniel Kartch, NVIDIA Corporation
+ Tom McReynolds, NVIDIA Corporation
+ Santanu Thangaraj, NVIDIA Corporation
+
+Contact
+
+ Daniel Kartch, NVIDIA Corporation (dkartch 'at' nvidia.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 1 - February 28, 2019
+
+Number
+
+ 133
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.3
+ Specification.
+
+Overview
+
+ NV_triple_buffer and NV_quadruple_buffer allow applications to
+ request additional back buffers, in order to produce greater and
+ less variable frame rates.
+
+ This document describes two related extensions, one dependent on
+ the other. Implementations may choose to support only
+ NV_triple_buffer and not NV_quadruple_buffer, but not vice versa.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Added by NV_triple_buffer:
+
+ Accepted as a value for EGL_RENDER_BUFFER in the <attrib_list>
+ parameter of eglCreateWindowSurface:
+
+ EGL_TRIPLE_BUFFER_NV 0x3230
+
+ Added by NV_quadruple_buffer:
+
+ Accepted as a value for EGL_RENDER_BUFFER in the <attrib_list>
+ parameter of eglCreateWindowSurface:
+
+ EGL_QUADRUPLE_BUFFER_NV 0x3231
+
+Additions to the EGL 1.3 Specification:
+
+ Insert after third sentence of second paragraph of Section 2.2.2
+ (Rendering Models):
+
+ Windows may have more than one back buffer, allowing rendering
+ of a new frame to proceed while the copy requested by
+ eglSwapBuffers is still pending.
+
+ Replace the third sentence of the EGL_RENDER_BUFFER description in
+ Section 3.5.1 (Creating On-Screen Rendering Surfaces):
+
+ If its value is EGL_BACK_BUFFER, EGL_TRIPLE_BUFFER_NV, or
+ EGL_QUADRUPLE_BUFFER_NV, then client APIs should render into
+ the current back buffer. The implementation should provide
+ at least one, two, or three back buffers, respectively, which
+ will be used in rotation each frame.
+
+ Change first sentence of third bullet point of eglQueryContext
+ description in Section 3.7.4 (Context Queries):
+
+ If the context is bound to a window surface, then either
+ EGL_SINGLE_BUFFER, EGL_BACK_BUFFER, EGL_TRIPLE_BUFFER_NV, or
+ EGL_QUADRUPLE_BUFFER_NV may be returned.
+
+ Replace first sentence of eglSwapBuffers description in
+ Section 3.9.1
+ (Posting to a Window):
+
+ If surface is a back-buffered window surface, then the current
+ color buffer is copied to the native window associated with
+ that surface. If there is more than one back buffer, then the
+ next color buffer in rotation becomes current, and rendering
+ of the next frame may proceed before the copy takes place,
+ provided any previous swaps from the new current buffer have
+ completed.
+
+Issues
+
+ 1. Why do we need triple-buffering?
+
+ RESOLVED: With only a single back buffer and a non-zero swap
+ interval, eglSwapBuffers must block rendering to the back-
+ buffer until the copy has completed. This can leave the CPU
+ and/or GPU idle, wasting valuable compute time, and possibly
+ cause the next frame to be delivered later than otherwise could
+ have been. Additional buffers allow rendering to continue even
+ when a frame is awaiting display, maximizing our use of
+ computational resources.
+
+ 2. Why quadruple-buffering? Isn't triple-buffering enough to
+ produce frames as fast as the processor(s) and swap interval
+ allow?
+
+ RESOLVED: When there is only a single rendering stream
+ operating on a system, triple-buffering is sufficient. However,
+ if other threads are contending for resources, variable
+ latencies may be introduced. This is especially problematic
+ with video, where any deviation in frame rate from the recorded
+ media can produce visible artifacts. Additional buffers smooth
+ out these latencies, allowing a steady frame rate.
+
+ 3. Then why not arbitrary n-buffering?
+
+ RESOLVED: The TRIPLE/QUADRUPLE buffer specification fits nicely
+ into the RENDER_BUFFER attribute already in use for
+ eglCreateWindowSurface. Arbitrary buffer counts would require a
+ new attribute. Additionally, case studies indicated no
+ significant benefit to using more than three back buffers,
+ especially when factoring in the added memory cost.
+
+Revision History
+
+ #2 (February 28, 2019) Santanu Thangaraj
+ - Marked issues 1,2 and 3 as resolved.
+ - Included extension type section.
+ - Corrected line length violations.
+
+ #1 (August 12, 2008) Daniel Kartch
+ - Initial Draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_native_query.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_native_query.txt
new file mode 100644
index 0000000..ce35633
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_native_query.txt
@@ -0,0 +1,137 @@
+Name
+
+ NV_native_query
+
+Name Strings
+
+ EGL_NV_native_query
+
+Contributors
+
+ Mathias Heyer, NVIDIA
+ Daniel Kartch, NVIDIA
+ Peter Pipkorn, NVIDIA
+ Acorn Pooley, NVIDIA
+ Greg Roth, NVIDIA
+
+Contacts
+
+ Peter Pipkorn, NVIDIA Corporation (ppipkorn 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 0.4, 25 Sept, 2012
+
+Number
+
+ EGL Extension #45
+
+Dependencies
+
+ Requires EGL 1.0
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows an application to query which native display,
+ pixmap and surface corresponds to a EGL object.
+
+New Procedures and Functions
+
+ EGLBoolean eglQueryNativeDisplayNV(
+ EGLDisplay dpy,
+ EGLNativeDisplayType* display_id);
+
+ EGLBoolean eglQueryNativeWindowNV(
+ EGLDisplay dpy,
+ EGLSurface surf,
+ EGLNativeWindowType* window);
+
+ EGLBoolean eglQueryNativePixmapNV(
+ EGLDisplay dpy,
+ EGLSurface surf,
+ EGLNativePixmapType* pixmap);
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ In Chapter 3.2, after the description of eglInitialize and before the
+ description of eglTerminate insert
+
+ "While initialized, the native display that corresponds to an
+ EGLDisplay can retrieved by
+
+ EGLBoolean eglQueryNativeDisplayNV(
+ EGLDisplay dpy,
+ EGLNativeDisplayType* display_id);
+
+ If the <dpy> is a valid and initialized EGLDisplay, EGL_TRUE
+ will be returned and the native display handle will be written
+ to <display_id>. Otherwise EGL_FALSE will be returned and the
+ contents of <display_id> are left untouched. If the <dpy> is
+ not valid, an EGL_BAD_DISPLAY error will be generated. If <dpy>
+ is not initialized, an EGL_NOT_INITIALIZED error will be
+ generated. If <display_id> is NULL, an EGL_BAD_PARAMETER error
+ will be generated.
+
+ In Chapter 3.5 Rendering Surfaces, after section 3.5.1 insert
+
+ "The native window that corresponds to an EGLSurface can be
+ retrieved by
+
+ EGLBoolean eglQueryNativeWindowNV(
+ EGLDisplay dpy,
+ EGLSurface surf,
+ EGLNativeWindowType* win);
+
+ The corresponding native window will be written to <win>,
+ and EGL_TRUE will be returned. If the call fails, EGL_FALSE
+ will be returned, and content of <win> will not be modified.
+ If <dpy> is not a valid EGLDisplay, an EGL_BAD_DISPLAY error
+ will be generated. If <dpy> is not initialized, an EGL_NOT_-
+ INITIALIZED error will be generated. If <surf> is not a valid
+ EGLSurface, or <surf> does not have a corresponding native
+ window, an EGL_BAD_SURFACE error will be generated." If <win>
+ is NULL, an EGL_BAD_PARAMETER error will be generated.
+
+ After section 3.5.4 Creating Native Pixmap Rendering Surfaces insert
+
+ "The native pixmap that corresponds to an EGLSurface can be
+ retrieved by
+
+ EGLBoolean eglQueryNativePixmapNV(
+ EGLDisplay dpy,
+ EGLSurface surf,
+ EGLNativePixmapType* pixmap);
+
+ The corresponding native pixmap will be written to <pixmap>,
+ and EGL_TRUE will be returned. If the call fails, EGL_FALSE
+ will be returned, and the content of <pixmap> will not be
+ modified. If <dpy> is not a valid EGLDisplay, an EGL_BAD_-
+ DISPLAY error will be generated. If <dpy> is not initialized,
+ an EGL_NOT_INITIALIZED error will be generated. If <surf> is
+ not a valid EGLSurface, or <surf> does not have a corresponding
+ native pixmap, an EGL_BAD_SURFACE error will be generated." If
+ <pixmap> is NULL, an EGL_BAD_PARAMETER error will be
+ generated.
+
+Issues
+
+Revision History
+#4 (Greg Roth, Sept 25, 2012)
+ - Further document all potential errors for all functions
+
+#3 (Daniel Kartch, August 30, 2011)
+ - Add restriction that EGLDisplay be initialized
+
+#2 (Peter Pipkorn, December 16, 2009)
+ - Minor cleanup
+
+#1 (Peter Pipkorn, December 15, 2009)
+ - First Draft
+
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_convert_rounding.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_convert_rounding.txt
new file mode 100644
index 0000000..6b7c340
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_convert_rounding.txt
@@ -0,0 +1,85 @@
+Name
+
+ NV_post_convert_rounding
+
+Name Strings
+
+ EGL_NV_post_convert_rounding
+
+Contributors
+
+ Bryan Eyler, NVIDIA
+ Daniel Kartch, NVIDIA
+ Greg Roth, NVIDIA
+ Mark Vojkovich, NVIDIA
+ Nicolai de Haan Brogger, NVIDIA
+ Peter Pipkorn, NVIDIA
+
+Contacts
+
+ Nicolai de Haan Brogger, NVIDIA Corporation (nicolaid 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Last Modified 17 Oct 2012
+ Version 2
+
+Number
+
+ EGL Extension #44
+
+Dependencies
+
+ Requires EGL 1.0.
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension defines the conversions for posting operations
+ when the destination's number of components or component sizes do
+ not match the color buffer. This extension supports posting a 24 bit
+ (888) color buffer to a 16 bit (565) destination buffer, posting a
+ 16 bit (565) color buffer to a 24 bit (888) destination buffer, and
+ posting a component that is present in the source buffer, but not
+ present in the destination buffer.
+
+New Procedures and Functions
+
+ None
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and
+Errors)
+
+ In Chapter 3.9.3, replace paragraph 3 with:
+ " For each color component, if the bit depth of the color
+ buffer being posted is 24 (888) and the destination buffer is
+ 16 (565), the lower order bits of the color buffer are
+ truncated.
+
+ If the bit depth of the destination buffer is 24 (888) and the
+ color buffer being posted is 16 bit (565), a RGB gain and
+ rounding operation is applied to the color buffer values prior
+ to posting. The destination buffer will contain the rounded
+ (nearest) and clamped result of the vector product of [1.03125,
+ 1.015625, 1.03125] with the RGB values of the color buffer.
+
+ For cases where a component is present in the color buffer but
+ the matching component is not present in the destination
+ buffer, that component will be dropped."
+
+ In Chapter 3.9.3, remove paragraph 5.
+
+Issues
+
+Revision History
+#2 (Greg Roth, Oct 17, 2012)
+ - Clarify limitations and reformat a bit.
+
+#1 (Nicolai de Haan Brogger, July 07, 2010)
+ - First Draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_sub_buffer.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_sub_buffer.txt
new file mode 100644
index 0000000..69c113c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_post_sub_buffer.txt
@@ -0,0 +1,241 @@
+Name
+
+ NV_post_sub_buffer
+
+Name Strings
+
+ EGL_NV_post_sub_buffer
+
+Contributors
+
+ Arcady Goldmints-Orlov
+ James Jones
+ Daniel Kartch
+
+Contact
+
+ James Jones, NVIDIA Corporation (jajones 'at' nvidia.com)
+
+Status
+
+ Draft.
+
+Version
+
+ Version 3, November 5, 2010
+
+Number
+
+ EGL Extension #27
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.4
+ Specification
+
+Overview
+
+ Many EGL client APIs do not support rendering to window surfaces
+ directly, so there is no way to efficiently make small updates to
+ window surfaces. Applications that need to perform many small updates
+ must either use the back-buffer preservation flag which forces
+ eglSwapBuffers to copy the entire back surface, or redraw the entire
+ back buffer on every update and hope eglSwapBuffers is implemented
+ using buffer-flipping. This extension provides a 3rd alternative: a
+ function which posts a sub-rectangle of a window surface and
+ preserves the back-buffer contents.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ EGLBoolean eglPostSubBufferNV(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint x, EGLint y,
+ EGLint width, EGLint height);
+
+New Tokens
+
+ Accepted by the <attribute> parameter of eglQuerySurface and by the
+ <attrib_list> parameter of eglCreateWindowSurface:
+
+ EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+
+Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Modify the second paragraph of Section 3.5.1, page 27
+ (Creating On-Screen Rendering Surfaces)
+
+ "<attrib_list> specifies a list of attributes for the window. The list
+ has the same structure as described for eglChooseConfig. Attributes
+ that can be specified in <attrib_list> include EGL_POST_SUB_BUFFER_-
+ SUPPORTED_NV, EGL_RENDER_BUFFER, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_-
+ FORMAT."
+
+ Add the following between paragraphs 4 and 5 of Section 3.5.1, page 27
+ (Creating On-Screen Rendering Surfaces)
+
+ "EGL_POST_SUB_BUFFER_SUPPORTED_NV specifies whether the application
+ would perfer a surface that supports sub-buffer post operations, as
+ described in section 3.9.1. Its values can be EGL_TRUE, in which case
+ the implementation will attempt to allocate a surface that supports
+ sub-buffer posts, or EGL_FALSE, in which case the implementation will
+ not take sub-buffer post capabilities into account.
+
+ "Implementations may not be able to support sub-buffer post
+ mechanisms, or may support them only on some native windows. Use
+ eglQuerySurface to determine a surface's capabilities (see section
+ 3.5.6)."
+
+ Add the following entry to Table 3.5, page 36
+ (Queryable surface attributes and types)
+
+ Attribute Type Description
+ -------------------------------- ------- ------------------------
+ EGL_POST_SUB_BUFFER_SUPPORTED_NV boolean Surface can be used with
+ eglPostSubBufferNV
+
+ Add the following paragraph to Section 3.5.6, page 37
+ (Surface Attributes)
+
+ "Querying EGL_POST_SUB_BUFFER_SUPPORTED_NV returns EGL_TRUE if the
+ surface can use eglPostSubBufferNV (See section 3.9.1) to post sub-
+ rectangles of the back color buffer. Otherwise, EGL_FALSE is
+ returned."
+
+ Replace all but the last paragraph of section Section 3.9.1, page 50
+ (Posting to a Window)
+
+ "To post the color buffer to a window, call
+
+ EGLBoolean eglSwapBuffers(EGLDisplay dpy,
+ EGLSurface surface);
+
+ "To post a sub-rectangle of the color buffer to a window, call
+
+ EGLBoolean eglPostSubBufferNV(EGLDisplay dpy,
+ EGLSurface surface, EGLint x, EGLint y,
+ EGLint width, EGLint height);
+
+ "Where <x> and <y> are pixel offsets from the bottom-left corner of
+ <surface>.
+
+ "If <surface> is a back-buffered surface, then the requested portion
+ of the color buffer is copied to the native window associated with
+ that surface. If <surface> is a single-buffered window, pixmap, or
+ pbuffer surface, eglSwapBuffers and eglPostSubBufferNV have no
+ effect.
+
+ "The contents of ancillary buffers are always undefined after calling
+ eglSwapBuffers or eglPostSubBufferNV. The contents of the color
+ buffer are unchanged if eglPostSubBufferNV is called, or if
+ eglSwapBuffers is called and the value of the EGL_SWAP_BEHAVIOR
+ attribute of <surface> is EGL_BUFFER_PRESERVED. The value of EGL_-
+ SWAP_BEHAVIOR can be set for some surfaces using eglSurfaceAttrib, as
+ described in section 3.5.6.
+
+ "Native Window Resizing
+
+ "If the native window corresponding to <surface> has been resized
+ prior to the swap, <surface> must be resized to match. <surface> will
+ normally be resized by the EGL implementation at the time the native
+ window is resized. If the implementation cannot do this transparently
+ to the client, then eglSwapBuffers and eglPostSubBufferNV must
+ detect the change and resize <surface> prior to copying its pixels to
+ the native window. The sub-rectangle defined by <x>, <y>, <width>, and
+ <height> parameters to eglPostSubBufferNV will be clamped to the
+ extents of <surface>. If, after clamping, the rectangle contains no
+ pixels, eglPostSubBufferNV will have no effect."
+
+ Modify the following sentences in Section 3.9.3, page 51 (Posting
+ Semantics)
+
+ Paragraph 2, first sentence:
+
+ "If <dpy> and <surface> are the display and surface for the calling
+ thread's current context, eglSwapBuffers, eglPostSubBufferNV, and
+ eglCopyBuffers perform an implicit flush operation on the context
+ (glFlush for OpenGL or OpenGL ES context, vgFlush for an OpenVG
+ context)."
+
+ Paragraph 3, first sentence:
+
+ "The destination of a posting operation (a visible window, for
+ eglSwapBuffers or eglPostSubBufferNV, or a native pixmap, for
+ eglCopyBuffers) should have the same number of components and
+ component sizes as the color buffer it's being copied from."
+
+ Paragraph 6, first two sentences:
+
+ "The function
+
+ EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint
+ interval);
+
+ specifes the minimum number of video frame periods per color buffer
+ post operation for the window associated with the current context. The
+ interval takes effect when eglSwapBuffers or eglPostSubBufferNV is
+ first called subsequent to the eglSwapInterval call."
+
+ Modify the following sentences in Section 3.9.4, page 52 (Posting
+ Errors)
+
+ Paragraph 1, first sentence:
+
+ "eglSwapBuffers, eglPostSubBufferNV, and eglCopyBuffers return
+ EGL_FALSE on failure."
+
+ Paragraph 1, seventh sentence:
+
+ "If eglSwapBuffers or eglPostSubBufferNV are called and the native
+ window associated with <surface> is no longer valid, an EGL_BAD_-
+ NATIVE_WINDOW error is generated. If eglPostSubBufferNV is called
+ and <x>, <y>, <width>, or <height> are less than zero, EGL_BAD_-
+ PARAMETER is generated."
+
+Issues
+
+ 1. Should all surfaces be required to support sub-buffer posts if
+ this extension is supported?
+
+ RESOLVED: No. Some implementations may support multiple types of
+ native windows. Support for sub-surface posting is therefore a
+ per-surface property, so a surface query should be used to determine
+ which surfaces support sub-surface posts.
+
+ 2. What should this extension be called?
+
+ RESOLVED: Names considered EGL_NV_copy_sub_buffer, EGL_NV_present_sub-
+ surface, EGL_NV_post_sub_buffer. eglCopySubBuffer() sounded too
+ similar to eglCopyBuffer(), which operates on different types of
+ surfaces. EGL_present_sub_surface was originally chosen as it was
+ sufficiently different than eglCopyBuffer(), but based on internal
+ feedback, the term "Post" is preferable to "Present" because it is
+ already used in the EGL spec to describe buffer presentation
+ operations. "Buffer" was chosen over "surface" at this point as well,
+ because it is more consistent with the eglSwapBuffers() and
+ eglCopyBuffer() commands, and eglPostSubBuffer() is still
+ differentiated enough from eglCopyBuffer() that the two won't be
+ confused.
+
+Revision History
+
+#3 (James Jones, November 5, 2010)
+ -Renamed from NV_present_sub_surface to NV_post_sub_buffer based on
+ feedback from internal reviews.
+
+ -Allowed EGL_POST_SUB_BUFFER_SUPPORTED_NV to be used as a hint when
+ creating window surfaces.
+
+ -Clarified that eglSwapInterval applies to all color-buffer post
+ operations affecting on-screen surfaces, not just eglSwapBuffers.
+
+#2 (James Jones, November 1, 2010)
+ - Fixed a few typos.
+
+#1 (James Jones, October 22, 2010)
+ - Initial revision, based on GLX_MESA_copy_sub_buffer
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_eglimage.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_eglimage.txt
new file mode 100644
index 0000000..432fdbf
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_eglimage.txt
@@ -0,0 +1,367 @@
+Name
+
+ NV_stream_consumer_eglimage
+
+Name Strings
+
+ EGL_NV_stream_consumer_eglimage
+
+Contributors
+
+ Mukund Keshava
+ James Jones
+ Daniel Kartch
+ Sandeep Shinde
+ Pyarelal Knowles
+ Leo Xu
+
+Contacts
+
+ Mukund Keshava, NVIDIA (mkeshava 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 3 - November 27, 2019
+
+Number
+
+ EGL Extension #139
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires the EGL_KHR_stream extension.
+
+ Requires the EGL_EXT_sync_reuse extension.
+
+ This extension is written against the wording of the EGL 1.5
+ Specification
+
+Overview
+
+ An EGLStream consists of a sequence of image frames. This extension
+ allows these frames to be acquired as EGLImages. Frames from the
+ stream would be used as the content for the EGLImage.
+
+New Procedures and Functions
+
+ EGLBoolean eglStreamImageConsumerConnectNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint num_modifiers,
+ const EGLuint64KHR *modifiers,
+ const EGLAttrib* attrib_list);
+
+ EGLint eglQueryStreamConsumerEventNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLTime timeout,
+ EGLenum *event,
+ EGLAttrib *aux);
+
+ EGLBoolean eglStreamAcquireImageNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLImage *pImage,
+ EGLSync sync);
+
+ EGLBoolean eglStreamReleaseImageNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLImage image,
+ EGLSync sync);
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImage:
+
+ EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
+
+ Returned as an <event> from eglQueryStreamConsumerEventNV:
+
+ EGL_STREAM_IMAGE_ADD_NV 0x3374
+ EGL_STREAM_IMAGE_REMOVE_NV 0x3375
+ EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
+
+Add to section "3.9 EGLImage Specification and Management" of
+the EGL 1.5 Specification, in the description of eglCreateImage:
+
+ "Values accepted for <target> are listed in Table 3.10, below.
+
+ +-------------------------------+-----------------------------------+
+ | <target> | Notes |
+ +-------------------------------+-----------------------------------+
+ | EGL_STREAM_CONSUMER_IMAGE_NV | Used with EGLStream objects |
+ +-------------------------------+-----------------------------------+
+ Table 3.10: Legal values for eglCreateImage target parameter.
+
+ If <target> is EGL_STREAM_CONSUMER_IMAGE_NV, a new EGLImage will be
+ created for the next consumer image frame in the EGLStream
+ referenced by <buffer> which is not currently bound to an EGLImage.
+ If the stream's producer reuses memory buffers for multiple image
+ frames, then an EGLImage obtained in this way will persist for the
+ next image frame that uses the same buffer, unless destroyed in
+ the interim. Otherwise, the user must create a new EGLImage for
+ every frame. Creating the EGLImage does not guarantee that the
+ image contents will be ready for use. The EGLImage must first be
+ acquired from the stream after creation.
+
+ If the EGLImage created for a consumer image frame is destroyed via
+ eglDestroyImage, a new EGLImage needs to be created via
+ eglCreateImage for the same consumer image frame.
+
+ <dpy> must be a valid initialized display. <ctx> must be
+ EGL_NO_CONTEXT. <buffer> must be a handle to a valid EGLStream
+ object, cast into the type EGLClientBuffer.
+
+ Add to the list of error conditions for eglCreateImage:
+
+ "* If <target> is EGL_STREAM_CONSUMER_IMAGE_NV and <buffer> is
+ not a valid stream handle associated with <dpy>, the error
+ EGL_BAD_STREAM_KHR is generated.
+
+ * If <target> is EGL_STREAM_CONSUMER_IMAGE_NV, and <ctx> is not
+ EGL_NO_CONTEXT, the error EGL_BAD_PARAMETER is generated.
+
+ * If <target> is EGL_STREAM_CONSUMER_IMAGE_NV, and there are no
+ buffers in the <stream> currently or if there are no buffers
+ associated with the stream that are not already bound to
+ EGLImages EGL_BAD_ACCESS is generated.
+
+ eglCreateImage needs to be called with EGL_STREAM_CONSUMER_IMAGE_NV
+ as the <target> for every valid buffer in the EGLStream.
+
+Add section "3.10.2 Connecting an EGLStream to a consumer" in the
+EGL_KHR_stream extension with this:
+
+ 3.10.2.2 EGLImage consumer
+
+ Call
+
+ EGLBoolean eglStreamImageConsumerConnectNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint num_modifiers,
+ const EGLuint64KHR *modifiers,
+ const EGLAttrib* attrib_list);
+
+ to connect the EGLImage consumer to the <stream>. An EGLImage
+ consumer allows image frames inserted in the stream to be received
+ as EGLImages, which can then be bound to any other object which
+ supports EGLImage. For each image frame, an EGLImage must first be
+ created as described in section "3.9 EGLImage Specification and
+ Management" of the EGL 1.5 Specification, and then the frame
+ contents must be latched to the EGLImage as described below.
+
+ In <modifiers> the consumer can advertise an optional list of
+ supported DRM modifiers as described in
+ EXT_image_dma_buf_import_modifiers. This information could be
+ used by the producer to generate consumer supported image frames.
+
+ If not NULL, <attrib_list> points to an array of name/value
+ pairs, terminated by EGL_NONE. Currently no attributes are
+ supported.
+
+ On success, EGL_TRUE is returned.
+
+ - <stream> state is set to EGL_STREAM_STATE_CONNECTING_KHR
+ allowing the producer to be connected.
+
+ On failure, EGL_FALSE is returned and an error is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not the handle of a
+ valid EGLDisplay object.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ valid stream handle associated with <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if the <stream> state is not
+ EGL_STREAM_STATE_CREATED_KHR before
+ eglStreamImageConsumerConnectNV is called.
+
+ Call
+
+ EGLint eglQueryStreamConsumerEventNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLTime timeout,
+ EGLenum *event,
+ EGLAttrib *aux);
+
+ to query the <stream> for the next pending event.
+ eglQueryStreamConsumerEventNV returns in <event> the event type
+ and returns in <aux> additional data associated with some events.
+
+ If no event is pending at the time eglQueryStreamConsumerEventNV is
+ called, it will wait up to <timeout> nanoseconds for one to arrive
+ before returning. If <timeout> is EGL_FOREVER, the function will
+ not time out and will only return if an event arrives or the stream
+ becomes disconnected.
+
+ On success, EGL_TRUE is returned. A new event will be returned.
+ The valid events are as follows:
+
+ - EGL_STREAM_IMAGE_ADD_NV is returned if a buffer is present in
+ the stream which has not yet been bound to an EGLImage with
+ eglCreateImage.
+
+ - EGL_STREAM_IMAGE_REMOVE_NV indicates that a buffer has been
+ removed from the stream and its EGLImage, whose handle is
+ returned in <aux>, can be destroyed when the consumer
+ application no longer requires it.
+
+ - EGL_STREAM_IMAGE_AVAILABLE_NV indicates that there is a
+ new frame available in the stream that can be acquired via
+ eglStreamAcquireImageNV.
+
+ On failure, EGL_FALSE is returned and an error is generated and
+ <event> and <aux> are not modified.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ valid stream handle associated with <dpy>.
+
+ EGL_TIMEOUT_EXPIRED is returned if the <timeout> duration is
+ complete, and there are no valid events that occured in this
+ duration. The <event> and <aux> parameters are not modified.
+
+ Call
+
+ EGLBoolean eglStreamAcquireImageNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLImage *pImage,
+ EGLSync sync);
+
+ to "latch" the next image frame in the image stream from <stream>
+ into an EGLImage.
+
+ If <sync> is not EGL_NO_SYNC, then it must be an EGLSync with a type
+ of EGL_SYNC_FENCE, and it must be signaled (e.g., created with
+ EGL_SYNC_STATUS set to EGL_SIGNALED). eglStreamAcquireImageNV will
+ reset the state of <sync> to unsignaled, and <sync> will be signaled
+ when the producer is done writing to the frame.
+
+ If <sync> is EGL_NO_SYNC, then eglStreamAcquireImageNV ignores the
+ sync object.
+
+ On success, EGL_TRUE is returned.
+
+ - <pImage> will have the most recent frame from the <stream>
+
+ On failure, eglStreamAcquireImageNV returns EGL_FALSE, and an error
+ is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ valid stream handle associated with <dpy>.
+
+ - EGL_BAD_ACCESS is generated if there are no frames in the
+ <stream> that are available to acquire.
+
+ - EGL_BAD_PARAMETER is generated if <sync> is not a valid
+ EGLSync object or EGL_NO_SYNC.
+
+ - EGL_BAD_ACCESS is generated if <sync> is not EGL_NO_SYNC and is
+ not a fence sync.
+
+ - EGL_BAD_ACCESS is generated if <sync> is not EGL_NO_SYNC and is
+ not in the signaled state.
+
+ Call
+
+ EGLBoolean eglStreamReleaseImageNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLImage image,
+ EGLSync sync);
+
+ to release the <image> frame back to the stream. This takes a
+ <sync> that indicates when the consumer will be done using the
+ frame. Before calling eglStreamReleaseImageNV, the <image>
+ needs to have previously been acquired with
+ eglStreamAcquireImageNV.
+
+ If <sync> is not EGL_NO_SYNC, then it must be an EGLSync with a
+ typeof EGL_SYNC_FENCE. eglStreamReleaseImageNV makes a copy of the
+ sync object, so the caller is free to delete or reuse <sync> as it
+ chooses.
+
+ If <sync> is EGL_NO_SYNC, then the sync object is ignored.
+
+ On success, EGL_TRUE is returned, and the frame is successfully
+ returned back to the stream.
+
+ On failure, eglStreamReleaseImageNV returns EGL_FALSE, and an
+ error is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ initialized EGLDisplay.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_PARAMETER is generated if <image> is either invalid,
+ or is not held by the consumer.
+
+ - EGL_BAD_PARAMETER is generated if <sync> is not a valid
+ EGLSync object or EGL_NO_SYNC.
+
+ - EGL_BAD_ACCESS is generated if <sync> is not EGL_NO_SYNC and is
+ not a fence sync.
+
+ If an acquired EGLImage has not yet released when eglDestroyImage
+ is called, then, then an implicit eglStreamReleaseImageNV will be
+ called.
+
+Add a new subsection 3.10.4.3.1 at the end of section "3.10.4.3
+EGL_STREAM_STATE_KHR Attribute" in the EGL_KHR_stream extension spec:
+
+ 3.10.4.3.1 Interaction with EGL_STREAM_STATE_KHR
+
+ Image frames that have been presented to the stream on the producer
+ side, but have not been bound to an EGLImage on the consumer side
+ yet, do not affect the EGLStream state.
+
+ If a new frame is presented to the stream, the stream state goes
+ into EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR only if this frame is
+ bound to an EGLImage on the consumer, and if it has not already
+ been acquired.
+
+ If an EGLImage bound on the consumer side has been destroyed via
+ eglDestroyImage, then the stream goes into
+ EGL_STREAM_STATE_EMPTY_KHR if there are no consumer frames left,
+ that are bound to an EGLImage.
+
+Issues
+
+
+Revision History
+
+ #5 (December 15, 2021) Kyle Brenneman
+ - Corrected and clarified the <sync> parameters
+
+ #4 (December 10, 2021) Kyle Brenneman
+ - Added the missing const modifier for input parameters
+
+ #3 (November 27, 2019) Mukund Keshava
+ - Refined some subsections with more details
+
+ #2 (November 22, 2019) Mukund Keshava
+ - Refined some subsections with more details
+ - Added new subsection 3.10.4.3.1
+
+ #1 (November 13, 2019) Mukund Keshava
+ - initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt
new file mode 100644
index 0000000..4aa0a66
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt
@@ -0,0 +1,280 @@
+Name
+
+ NV_stream_consumer_gltexture_yuv
+
+Name Strings
+
+ EGL_NV_stream_consumer_gltexture_yuv
+
+Contributors
+
+ James Jones
+ Daniel Kartch
+ Nikhil Mahale
+ Daniel Koch
+ Jeff Gilbert
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 4 - November 14, 2017
+
+Number
+
+ EGL Extension #94
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream_consumer_gltexture
+ References EGL_EXT_yuv_surface
+
+Interactions with EGL_EXT_yuv_surface
+
+ This extension makes use of several tokens defined in the
+ EGL_EXT_yuv_surface extension spec. However support for this
+ EGLStream extension does not require the EGLSurface extension, or
+ vice versa. Only the tokens are shared.
+
+Overview
+
+ The EGL_KHR_stream_consumer_gltexture extension allows EGLStream
+ frames to be latched to a GL texture for use in rendering. These
+ frames are assumed to be stored in RGB format and accessed as such
+ by shader programs. If the producer uses a different color space,
+ the stream implementation must perform an implicit conversion.
+
+ In cases where the producer operates in a native YUV color space, it
+ may be desirable for shaders to directly access the YUV components,
+ without conversion. This extension adds a new variant of the
+ function to bind GL textures as stream consumers which allows
+ attributes to specify the color space.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglStreamConsumerGLTextureExternalAttribsNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ const EGLAttrib *attrib_list)
+
+New Tokens
+
+ Accepted as attribute name in <attrib_list> by
+ eglStreamConsumerGLTextureExternalAttribsNV:
+
+ EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+ EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+ EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+
+Reused Tokens From EGL_EXT_yuv_surface
+
+ Accepted as attribute name in <attrib_list> by
+ eglStreamConsumerGLTextureExternalAttribsNV:
+
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+
+ Accepted as value for EGL_COLOR_BUFFER_TYPE attribute in
+ <attrib_list> by eglStreamConsumerGLTextureExternalAttribsNV:
+
+ EGL_YUV_BUFFER_EXT 0x3300
+
+Replace entire description of eglStreamConsumerGLTextureExternalKHR in
+section "3.10.2.1 GL Texture External consumer" of
+EGL_KHR_stream_consumer_gltexture extension.
+
+ Call
+
+ EGLBoolean eglStreamConsumerGLTextureExternalAttribsNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ const EGLAttrib *attrib_list)
+
+ to connect one or more texture objects in the OpenGL or OpenGL ES
+ context current to the calling thread as the consumer(s) of
+ <stream>. The identity and format of the texture objects used are
+ determined by <attrib_list> and the current context state.
+
+ <attrib_list> must either be NULL or point to an array of name/value
+ pairs terminated by EGL_NONE. Valid attribute names are
+ EGL_COLOR_BUFFER_TYPE, EGL_YUV_NUMBER_OF_PLANES_EXT, and
+ EGL_YUV_PLANE<n>_TEXTURE_UNIT_NV.
+
+ If the value of EGL_COLOR_BUFFER_TYPE is EGL_RGB_BUFFER (the
+ default), then the stream will be connected to a single texture
+ whose contents are available to shaders as RGB values. If the value
+ of EGL_COLOR_BUFFER_TYPE is EGL_YUV_BUFFER_EXT the stream will be
+ connected to some number of planar textures, determined by the value
+ of EGL_YUV_NUMBER_OF_PLANES_EXT, whose contents are available to
+ shaders as YUV values. The mapping between YUV values and texture
+ contents is described in table 3.10.2.1.
+
+ If EGL_COLOR_BUFFER_TYPE is EGL_YUV_BUFFER_EXT, the default value of
+ EGL_YUV_NUMBER_OF_PLANES_EXT is 2. Otherwise it is 0.
+
+ PLANE0 PLANE1 PLANE2
+ # Planes Values Fields Values Fields Values Fields
+ --------------------------------------------------------------
+ 1 YUV XYZ unused unused
+ 2 Y X UV XY unused
+ 3 Y X U X V X
+
+ Table 3.10.2.1 YUV Planar Texture Mappings
+
+ If EGL_COLOR_BUFFER_TYPE is EGL_RGB_BUFFER, the stream is connected
+ to the texture object currently bound to the active texture unit's
+ GL_TEXTURE_EXTERNAL_OES texture target in the current context.
+
+ If EGL_COLOR_BUFFER_TYPE is EGL_YUV_BUFFER_EXT, attribute values
+ must be specified for EGL_YUV_PLANE<n>_TEXTURE_UNIT_NV for all <n>
+ less than the number of planes. The value of each attribute must
+ either be a valid texture unit index or EGL_NONE. No two of these
+ attributes may specify the same valid texture unit index or
+ reference separate texture units bound to the same texture object.
+ Plane <n> of the stream contents will be connected to the texture
+ object currently bound to the indexed texture unit's
+ GL_TEXTURE_EXTERNAL_OES texture target in the current context, or
+ will be left unused if the index is EGL_NONE.
+
+ Once connected, the stream will remain associated with the initial
+ texture object(s) even if the texture units are bound to new
+ textures.
+
+ (Note: Before this can succeed a GL_TEXTURE_EXTERNAL_OES texture
+ must be bound to the appropriate texture units of the GL context
+ current to the calling thread. To create a GL_TEXTURE_EXTERNAL_OES
+ texture and bind it to the current context, call glBindTexture()
+ with <target> set to GL_TEXTURE_EXTERNAL_OES and <texture> set to
+ the name of the GL_TEXTURE_EXTERNAL_OES (which may or may not have
+ previously been created). This is described in the
+ GL_NV_EGL_stream_consumer_external extension.)
+
+ On failure EGL_FALSE is returned and an error is generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid,
+ EGLDisplay.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStreamKHR created for <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is not in state
+ EGL_STREAM_STATE_CREATED_KHR.
+
+ - EGL_BAD_ATTRIBUTE is generated if any attribute name in
+ <attrib_list> is not a valid attribute.
+
+ - EGL_BAD_PARAMETER is generated if the value of
+ EGL_COLOR_BUFFER_TYPE is not EGL_RGB_BUFFER or
+ EGL_YUV_BUFFER_EXT.
+
+ - EGL_BAD_MATCH is generated if EGL_COLOR_BUFFER_TYPE is
+ EGL_RGB_BUFFER and EGL_YUV_NUMBER_OF_PLANES_EXT is not 0, or
+ if EGL_COLOR_BUFFER_TYPE is EGL_YUV_BUFFER_EXT and
+ EGL_YUV_NUMBER_OF_PLANES_EXT is not 1, 2, or 3.
+
+ - EGL_BAD_MATCH is generated if any
+ EGL_YUV_PLANE<n>_TEXTURE_UNIT_NV is not specified for any <n>
+ less than EGL_YUV_NUMBER_OF_PLANES_EXT, or if it is specified
+ for any <n> greater than or equal to
+ EGL_YUV_NUMBER_OF_PLANES_EXT.
+
+ - EGL_BAD_ACCESS is generated if any
+ EGL_YUV_PLANE<n>_TEXTURE_UNIT_NV is set to anything other than
+ a valid texture unit index or EGL_NONE.
+
+ - EGL_BAD_ACCESS is generated if there is no GL context
+ current to the calling thread.
+
+ - EGL_BAD_ACCESS is generated unless nonzero texture object
+ names are bound the GL_TEXTURE_EXTERNAL_OES texture target
+ of each of the appropriate texture units of the GL context
+ current to the calling thread.
+
+ - EGL_BAD_ACCESS is generated if more than one planar surface
+ would be bound to the same texture object.
+
+ - EGL_BAD_ACCESS is generated if the implementation cannot
+ support the requested planar arrangement.
+
+ On success the texture(s) are connected to the <stream>, <stream>
+ is placed in the EGL_STREAM_STATE_CONNECTING_KHR state, and EGL_TRUE
+ is returned.
+
+ When a producer is later connected, if it cannot support the planar
+ arrangement of the GL texture connection, it will fail with an
+ EGL_BAD_ACCESS error.
+
+ If any texture is later deleted, connected to a different
+ EGLStream, or connected to an EGLImage, then <stream> will be
+ placed into the EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ If the <stream> is later destroyed then the textures will be
+ "incomplete" until they are connected to a new EGLStream, connected
+ to a new EGLImage, or deleted.
+
+ The function
+
+ EGLBoolean eglStreamConsumerGLTextureExternalKHR(
+ EGLDisplay dpy,
+ EGLStreamKHR stream)
+
+ is equivalent to eglStreamConsumerGLTextureExternalAttribsNV with
+ <attrib_list> list set to NULL.
+
+In the remainder of section "3.10.2.1 GL Texture External consumer",
+replace all singular references to "texture" with "textures" and make
+appropriate grammatical modifications.
+
+Issues
+
+ 1. This competes with GL_EXT_yuv_target as a means for specifying
+ how YUV values can be directly accessed by a texture shader
+ without conversion to RGB. However, that extension also requires
+ a means to render to YUV surfaces in addition to using them as
+ textures. Should we go with the approach used here or create a
+ GL extension which defines a subset GL_EXT_yuv_target?
+
+ RESOLVED: The extension as is serves immediate needs. Conflicts
+ and overlap with other extensions will be addressed if and when
+ there is a need to promote to EXT.
+
+ 2. This also contradicts how previous extensions for EXTERNAL GL
+ textures bind multiplanar surfaces, using separate texture
+ objects rather than a single virtual texture object which
+ requires multiple texture units. This allows the application
+ greater control of the planar arrangement, and the ability to
+ leave planes unbound, which may reduce overhead for the
+ producer. But it makes applications less portabile if the
+ desired arrangement isn't supported.
+
+ RESOLVED: The extension as is serves immediate needs. Conflicts
+ and overlap with other extensions will be addressed if and when
+ there is a need to promote to EXT.
+
+Revision History
+
+ #4 (November 14, 2017) Mozilla Corporation
+ - Const-qualify attrib_list.
+
+ #3 (August 19, 2015) NVIDIA Corporation
+ - Added enum values.
+ - Cleaned up and added contact info for publication.
+
+ #2 (May 6, 2015) NVIDIA Corporation
+ - Consolidated error codes to make GL interaction simpler.
+
+ #1 (April 15, 2015) NVIDIA Corporation
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_dma.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_dma.txt
new file mode 100644
index 0000000..16716b0
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_dma.txt
@@ -0,0 +1,137 @@
+Name
+
+ NV_stream_dma
+
+Name Strings
+
+ EGL_NV_stream_dma
+
+Contributors
+
+ Santanu Thangaraj
+ Daniel Kartch
+ Arihant Jejani
+
+Contacts
+
+ Santanu Thangaraj, NVIDIA (sthangaraj 'at' nvidia.com)
+ Arihant Jejani, NVIDIA (ajejani 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1 - April 15, 2019
+
+Number
+
+ 135
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_NV_stream_remote extension.
+
+ Requires EGL_NV_stream_cross_system extension.
+
+ Interacts with EGL_NV_stream_socket extensions.
+
+Overview:
+
+ This extension provides the framework for performing DMA transfers
+ between opposite ends of a single stream, if there is no shared
+ memory available between them.
+
+ In case of cross system streams the buffer contents of one end of
+ the stream is transferred to other end using sockets by
+ EGL_NV_stream_socket extension. Transferring buffer contents
+ through sockets is slower compared to DMA transfers. Since DMA
+ transfers have higher throughput compared to sockets, using
+ EGL_NV_stream_dma extension, applications can request EGL to
+ utilize DMA channels to perform buffer copies.
+
+New types
+
+ None
+
+New Procedures and functions
+
+ None
+
+New Tokens
+
+ Accepted as attribute names in eglCreateStreamKHR,
+ eglCreateStreamAttribKHR, eglQueryStreamKHR, and
+ eglQueryStreamAttribKHR:
+
+ EGL_STREAM_DMA_NV 0x3371
+ EGL_STREAM_DMA_SERVER_NV 0x3372
+
+Add to list of failures in section "3.10.1 Creating an EGLStream" in
+EGL_KHR stream:
+ - EGL_BAD_MATCH is generated if the value of EGL_STREAM_DMA_NV is
+ neither EGL_TRUE nor EGL_FALSE.
+ - EGL_BAD_MATCH is generated if the value of
+ EGL_STREAM_DMA_SERVER_NV is not EGL_DONT_CARE or a valid
+ DMA server identifier as defined by the platform.
+
+Add to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream:
+
+ Attribute Read/Write Type Section
+ ------------------------ ----------- ------ ----------
+ EGL_STREAM_DMA_NV io EGLint 3.10.4.x
+ EGL_STREAM_DMA_SERVER_NV io platform dependent 3.10.4.x+1
+
+Add new subsections to the end of section "3.10.4 EGLStream Attributes"
+in EGL_KHR_stream:
+
+ 3.10.4.x EGL_STREAM_DMA_NV Attribute
+
+ The EGL_STREAM_DMA_NV attribute may be set when the stream is
+ created, and indicates whether the DMA channels have to be used to
+ transfer the buffer contents from producer to consumer. Legal
+ values are EGL_TRUE or EGL_FALSE. The default value is EGL_FALSE.
+
+ A value of EGL_TRUE indicates that EGL has to use DMA channels to
+ transfer buffers from producer to consumer.
+
+ If EGL_FALSE is specified, DMA channels will not be utilized for
+ buffer transfers.
+
+ 3.10.4.x+1 EGL_STREAM_DMA_SERVER_NV Attribute
+
+ The EGL_STREAM_DMA_SERVER_NV attribute is a platform dependent
+ identifier which may be set when the stream is created and it
+ indicates the server, which must be contacted to handle DMA
+ transfers, if that server is not local. Legal values, aside from
+ EGL_DONT_CARE, are determined by the implementation. The default
+ value is EGL_DONT_CARE.
+
+Issues
+
+ 1. What happens when application requests DMA copy using
+ EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or
+ eglCreateStreamAttribKHR API, but the system does not support
+ access to DMA channels?
+
+ RESOLVED: The functions return EGL_NO_STREAM_KHR and
+ EGL_BAD_ATTRIBUTE error is set.
+
+ 2. What happens when application requests DMA copy using
+ EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or
+ eglCreateStreamAttribKHR API, and the system supports DMA
+ channels, but currently none of the channels are available for
+ use?
+
+ RESOLVED: The functions return EGL_NO_STREAM_KHR and
+ EGL_BAD_ATTRIBUTE error is set.
+
+Revision History
+
+ #1 (April 15, 2019) Santanu Thangaraj
+ - Initial version
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_next.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_next.txt
new file mode 100644
index 0000000..8199487
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_next.txt
@@ -0,0 +1,105 @@
+Name
+
+ NV_stream_fifo_next
+
+Name Strings
+
+ EGL_NV_stream_fifo_next
+
+Contributors
+
+ Daniel Kartch
+ Miguel A. Vico
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 3 - October 27, 2016
+
+Number
+
+ EGL Extension #110
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream_fifo
+
+Overview
+
+ When operating on a FIFO stream, a consumer may need to know the
+ timestamp associated with the next frame in the stream before
+ deciding whether to acquire it or reuse the previous frame. In the
+ case of a FIFO size of 1, the EGL_STREAM_TIME_PRODUCER_KHR attribute
+ is sufficient to determine this. However, when the size is greater
+ than 1, there may be frames available with earlier time stamps than
+ the one most recently inserted by the producer. This extension
+ enables querying of the next pending frame in a stream.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <attribute> parameter of eglQueryStreamu64KHR
+
+ EGL_PENDING_FRAME_NV 0x3329
+
+ Accepted as the <attribute> parameter of eglQueryStreamTimeKHR
+
+ EGL_STREAM_TIME_PENDING_NV 0x332A
+
+Add to "Table 3.10.4.4 EGLStream Attributes" in the EGL_KHR_stream
+extension spec:
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------------ --------
+ EGL_PENDING_FRAME_NV ro EGLuint64KHR 3.10.4.x
+ EGL_STREAM_TIME_PENDING_NV ro EGLTimeKHR 3.10.4.y
+
+Add new subsections to section "3.10.4 EGLStream Attributes" in the
+EGL_KHR_stream extension spec
+
+ 3.10.4.x EGL_PENDING_FRAME_NV Attribute
+
+ The EGL_PENDING_FRAME_NV attribute indicates the frame number of the
+ image frame that would be obtained if an acquire operation were
+ performed at the time of the query. This is the value that
+ EGL_PRODUCER_FRAME_KHR contained just after this image frame was
+ inserted into the stream.
+
+ 3.10.4.y EGL_STREAM_TIME_PENDING_NV Attribute
+
+ The EGL_STREAM_TIME_PENDING_NV attribute indicates the timestamp of
+ the image frame that would be obtained if an acquire operation were
+ performed at the time of the query.
+
+Issues
+
+ None
+
+Revision History
+
+ #3 (October 27, 2016) Daniel Kartch
+ - Clean up for publication
+
+ #2 (April 2nd, 2015) Miguel A. Vico
+ - Assigned enumerated values for constants.
+
+ #1 (March 20th, 2015) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_synchronous.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_synchronous.txt
new file mode 100644
index 0000000..f34804f
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_fifo_synchronous.txt
@@ -0,0 +1,211 @@
+Name
+
+ NV_stream_fifo_synchronous
+
+Name Strings
+
+ EGL_NV_stream_fifo_synchronous
+
+Contributors
+
+ Daniel Kartch
+ Adam Cheney
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 4 - October 27, 2016
+
+Number
+
+ EGL Extension #111
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream_fifo
+
+Interactions with EGL_NV_stream_sync and
+EGL_KHR_stream_consumer_gltexture
+
+ This extension affects implementations of stream synchronization and
+ GL texture consumer extensions in that it alters when functions
+ waiting for new frames will be unblocked. However, as these waits
+ are still tied to transitions to the
+ EGL_STREAM_STATE_NEW_FRAME_AVAILALBLE_KHR state, no changes are
+ required to the wording of those specifications.
+
+Overview
+
+ On platforms which support asynchronous rendering, frames may be
+ inserted into a stream by the producer and become available to the
+ consumer before rendering of the images has completed. When this
+ happens, commands issued by the consumer which read from the image
+ must implicitly wait before they can be executed. In many use cases,
+ this is desirable behavior. Rendering pipelines are kept full, and
+ frames are created and processed as fast as possible.
+
+ However, in the case of a compositor which is consuming frames from
+ multiple producers at once, combining them into a single output
+ image, this can slow the compositor to the frame rate of the slowest
+ producer. If the application acquires and uses an image from one
+ producer which requires a long time to finish rendering, it will be
+ prevented from presenting new frames from faster producers in a
+ timely fashion. In this case, the compositor would prefer to reuse
+ an older frame from the slower producer until the new one is ready.
+
+ This could be handled with existing interfaces by the producer
+ issuing appropriate Finish call before inserting the frame into the
+ stream. However this requires the producer to have knowledge of the
+ consumer's use case, and also introduces undesirable bubbles into
+ the producer's pipeline which will slow it even further.
+
+ This extension allows streams to be configured to defer the
+ availability of new frames inserted by the producer until they are
+ ready to be used. The producer proceeds as normal, but the frames
+ visible to the consumer through query and acquire operations do not
+ update immediately.
+
+ Interactions of this feature with a stream operating in mailbox mode
+ would be hard to define. Because newly inserted frames replace
+ previous unacquired ones, it is possible that the consumer would
+ never see a completed frame become available. Therefore this feature
+ is only available for streams operating in FIFO mode.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Accepted as an attribute name in the <attrib_list> parameter of
+ eglCreateStreamKHR and a the <attribute> parameter of
+ eglQueryStreamKHR:
+
+ EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
+
+Add new entry to table "3.10.4.4 EGLStream Attributes" in the
+EGL_KHR_stream extension
+
+ Attribute Read/Write Type Section
+ ------------------------------ ---------- ---------- --------
+ EGL_STREAM_FIFO_SYNCHRONOUS_NV io EGLBoolean 3.10.4.y
+
+Add new subsection to section "3.10.4 EGLStream Attributes" in the
+EGL_KHR_stream extension
+
+ 3.10.4.y EGL_STREAM_FIFO_SYNCHRONOUS_NV Attribute
+
+ The EGL_STREAM_FIFO_SYNCHRONOUS_NV attribute controls whether frames
+ inserted by the producer become available to the consumer
+ synchronously or asynchronously. If set to EGL_FALSE, then when a
+ present operation for a new frame successfully completes, the state
+ will immediately become EGL_STREAM_NEW_FRAME_AVAILABLE_KHR, queries
+ of the most recently produced frame will indicate this frame, and
+ acquire operations will be able to retrieve this frame. If set to
+ EGL_TRUE, then until any asynchronous rendering for this frame
+ completes, the state will not update, any queries of the most
+ recently produced frame will only indicate the frame whose rendering
+ most recently completed, and acquire operations will only obtain
+ older completed frames.
+
+ The default value is EGL_FALSE. If set to EGL_TRUE, the value of
+ EGL_STREAM_FIFO_LENGTH_KHR must be non-zero, or an EGL_BAD_MATCH
+ error will be generated.
+
+Replace first two sentences of section "3.10.4.4 EGL_PRODUCER_FRAME
+Attribute" in the EGL_KHR_stream extension
+
+ The EGL_PRODUCER_FRAME_KHR attribute indicates how many image
+ frames have become available for the consumer to acquire. This is
+ also known as the "frame number" of the most recent ready frame
+ (where the first frame inserted has a frame number of 1). In
+ asynchronous operation, this is the frame most recently inserted by
+ the producer. In synchronous operation, this is the frame whose
+ image content generation has most recently finished.
+
+Replace contents of section "3.10.4.x+3 EGL_STREAM_TIME_PRODUCER_KHR" in
+the EGL_KHR_stream_fifo extension
+
+ This indicates the timestamp of the most recent ready frame in the
+ EGLStream (i.e. frame number EGL_PRODUCER_FRAME_KHR).
+
+Replace the second through fifth paragraphs of "3.10.5.2 EGLStream operation
+in fifo mode" in the EGL_KHR_stream_fifo extension.
+
+ In fifo mode the EGLStream conceptually operates as a fifo. An image
+ frame in the fifo is considered "ready" if all operations on the
+ image scheduled prior to its insertion in the stream have completed,
+ or if the value of EGL_STREAM_FIFO_SYNCHRONOUS_NV is EGL_FALSE.
+
+ When the consumer wants to consume a new image frame, behavior
+ depends on the state of the EGLStream. If the state is
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR then the image frame at the
+ tail of the fifo is ready, and is removed from the fifo. If the
+ state is EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR then the fifo has
+ no ready image frames and the consumer consumes the same frame that
+ it most recently consumed. Otherwise there are no image frames
+ available to consume (behavior in this case is described in the
+ documentation for each type of consumer - see section "3.10.2
+ Connecting an EGLStream to a consumer").
+
+ When EGL_STREAM_FIFO_SYNCHRONOUS_NV is EGL_FALSE, any consumer
+ operations which read from the image frame must implicitly wait for
+ any producer operations used to generate the image contents to
+ complete. Apart from the assumption that any such operations will
+ eventually finish, there are no guaranteed bounds on the time
+ required, and therefore no guaranteed bounds on when the consumer's
+ operations will complete. In cases where reusing a previous frame is
+ preferable to unknown latency between the time a consumer acquires a
+ new frame and the time its processing of that frame is done,
+ EGL_STREAM_FIFO_SYNCHRONOUS_NV should be set to EGL_TRUE.
+
+ If there is no new ready frame at the tail of the fifo when the
+ consumer is finished consuming an image frame then the consumer
+ holds on to the image frame in case it needs to be consumed again
+ later (this happens if the consumer wants to consume another image
+ frame before the producer has inserted a new image frame into the
+ fifo, or before any such frame has finished rendering in the case of
+ synchronous operation). In this case the state of the EGLStream
+ will be EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR until a new image
+ frame is ready (or until the state becomes
+ EGL_STREAM_STATE_DISCONNECTED_KHR).
+
+ The producer inserts image frames at the head of the fifo. If the
+ fifo is full (already contains <L> image frames, where <L> is the
+ value of the EGL_STREAM_FIFO_LENGTH_KHR attribute) then the producer
+ is stalled until the fifo is no longer full. When there is at
+ least one ready frame at the tail of the fifo, the EGLStream state
+ is EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR.
+
+Issues
+
+ None
+
+Revision History
+
+ #4 (October 27, 2016) Daniel Kartch
+ - Clean up for publication
+
+ #3 (September 30, 2015) Daniel Kartch
+ - Reserve enum.
+
+ #2 (March 30, 2015) Daniel Kartch
+ - Fix grammatical and typographical errors.
+
+ #1 (March 27, 2015) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_flush.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_flush.txt
new file mode 100644
index 0000000..0b26508
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_flush.txt
@@ -0,0 +1,132 @@
+Name
+
+ NV_stream_flush
+
+Name Strings
+
+ EGL_NV_stream_flush
+
+Contributors
+
+ Santanu Thangaraj
+ Daniel Kartch
+
+Contacts
+
+ Santanu Thangaraj, NVIDIA (sthangaraj 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 3 - April 11, 2018
+
+Number
+
+ 127
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires the EGL_KHR_stream extension.
+
+ Requires either the EGL_KHR_stream_cross_process_fd or
+ EGL_NV_stream_remote extensions.
+
+ This extension is written based on the wording of version 27 of
+ the EGL_KHR_stream extension.
+
+Overview:
+
+ The EGL_KHR_stream_cross_process_fd and EGL_NV_stream_remote
+ extensions do not guarantee that when the state of the EGLStream
+ object representing one endpoint of the stream changes,
+ the state of the other endpoint will immediately reflect
+ that change. Depending on the implementation, there may be some
+ latency in the propagation of state changes.
+
+ This latency will not affect any applications which rely solely
+ on the stream itself for communication. State changes made on
+ one side will eventually be visible on the other side,
+ and can then be responded to.
+
+ This only affects applications which use some additional means of
+ communication outside of the stream itself, which may encounter
+ race conditions. In particular, if an application inserts a frame
+ into a stream, then sends a message to the other side indicating
+ that the frame is ready, the other side may encounter an error if
+ it tries to acquire the frame and it is not yet available.
+
+ One solution is to force all operations that change state of one
+ endpoint to behave synchronously, and not return until the change
+ is reflected on the other endpoint. However this adds undesirable
+ delays for the majority of applications and operations where such
+ synchronization is not required. This extension instead provides
+ a means for applications to explicitly invoke such
+ synchronization only where required.
+
+New types
+
+ None
+
+New Procedures and functions
+
+ EGLBoolean eglStreamFlushNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+New Tokens
+
+ None
+
+Add a new subsection "3.10.x EGLStream flush" at the end of section
+"3.10 EGLStreams" in EGL_KHR_stream extension.
+
+ The command
+
+ EGLBoolean eglStreamFlushNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+ When called with either producer or consumer endpoint of the
+ stream, will block until any state changes made to this endpoint
+ prior to the call are visible on the EGLStream object of the other
+ endpoint.
+
+ On success, EGL_TRUE will be returned. On failure, EGL_FALSE will
+ be returned and an error will be generated.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is in
+ EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ EGLDisplay.
+
+ - EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
+
+Issues
+
+ 1. When both producer and consumer are connected to a single
+ EGLStream object, what happens when eglStreamFlushNV is called?
+
+ RESOLVED: The function returns without any blocking.
+
+Revision History
+
+ #3 (April 11, 2018) Jon Leech
+ - Add missing NV suffix to eglStreamFlushNV
+
+ #2 (April 2, 2018) Santanu Thangaraj
+ - Update based on comments from Daniel Kartch
+ - General cleanup
+
+ #1 (March 26, 2018) Santanu Thangaraj
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_frame_limits.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_frame_limits.txt
new file mode 100644
index 0000000..75c0e49
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_frame_limits.txt
@@ -0,0 +1,152 @@
+Name
+
+ NV_stream_frame_limits
+
+Name Strings
+
+ EGL_NV_stream_frame_limits
+
+Contributors
+
+ Daniel Kartch
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 4 - October 27, 2016
+
+Number
+
+ EGL Extension #113
+
+Dependencies
+
+ Requires EGL_KHR_stream
+
+ Interacts with EGL_EXT_stream_consumer_egloutput
+
+Overview
+
+ Some stream consumers may allow more than one frame to be acquired
+ at a time, so that applications can operate on sequences of images
+ rather than individual images. This in turn may lead to producers
+ allocating additional buffers to keep the fifo full while fulfilling
+ the consumer's needs. Applications may wish to limit the resources
+ allocated for a given stream, and some stream implementations may be
+ able to operate more efficiently if they know in advance how many
+ buffers will be used.
+
+ This extension defines two new stream attributes which provide hints
+ as to how many frames the application will require, allowing the
+ implementation to plan accordingly.
+
+New functions
+
+ None
+
+New tokens
+
+ Accepted as an attribute name in the <attrib_list> parameter of
+ eglCreateStreamKHR and as the <attribute> parameter of
+ eglQueryStreamKHR.
+
+ EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+ EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
+
+
+Add to "Table 3.10.4.4 EGLStream Attributes"
+
+ Attribute Read/Write Type Section
+ ------------------------------ ---------- ------ ----------
+ EGL_PRODUCER_MAX_FRAME_HINT_NV io EGLint 3.10.4.x
+ EGL_CONSUMER_MAX_FRAME_HINT_NV io EGLint 3.10.4.x+1
+
+Add new subsections to section "3.10.4 EGLStream Attributes"
+
+ 3.10.4.x EGL_PRODUCER_MAX_FRAME_HINT_NV Attribute
+
+ The EGL_PRODUCER_MAX_FRAME_HINT_NV attribute indicates a limit on how
+ many outstanding frames the producer application intends to have at
+ any given time. This includes all frames currently being generated,
+ waiting in in the stream's mailbox or FIFO, and held by the consumer.
+ Its default value is EGL_DONT_CARE.
+
+ The implementation may make use of this hint to determine how many
+ buffers or other resources to allocate for the stream. It is not
+ necessarily an error for an application to attempt to insert more
+ than this many frames into the stream at once. However, exceeding
+ available resources may cause a producer to block or return an error,
+ as per its specification.
+
+ 3.10.4.x+1 EGL_CONSUMER_MAX_FRAME_HINT_NV Attribute
+
+ The EGL_CONSUMER_MAX_FRAME_HINT_NV attribute indicates a limit on how
+ many frames the consumer application intends to acquire at the same
+ time. Its default value EGL_DONT_CARE.
+
+ The implementation may make use of this hint to determine how many
+ buffers or other resources to allocate for the stream. It is not
+ necessarily an error for an application to attempt to acquire more
+ than this many frames at once. However, exceeding available resources
+ may cause the consumer or producer to block or return an error, as per
+ their specifications.
+
+Add to the description of eglStreamConsumerOutputEXT in the
+EGL_KHR_stream_consumer_egloutput extension
+
+ When the producer generates frames faster than the output device can
+ display them, <stream>'s EGL_CONSUMER_MAX_FRAME_HINT_NV attribute can
+ be used to throttle the output. No more than the specified number of
+ frames will be scheduled for display at a time. If specified, the value
+ should be set to at least 2, to allow one frame to be displayed while
+ another is acquired and scheduled for display.
+
+Issues
+
+ 1. Is a generic stream extension really necessary, or can such
+ limits instead be imposed in the producer and consumer
+ interfaces?
+
+ RESOLVED: Yes, it is necessary. There are several use cases
+ where an application may need to impose limits and cannot do so
+ through the producer and consumer interfaces:
+ a) The producer and client interfaces are already published and
+ do not allow room for extension to impose limits.
+ b) The stream is cross-process, and one process needs to impose
+ limits on the endpoint provided by the other process.
+ In addition, a common method for imposing such limits simplifies
+ programming of large application suites which make use of
+ multiple types of producers and consumers, and allows the limits
+ on producer and consumer endpoints to be set to compatible
+ values.
+
+ 2. Should the attributes be hints or hard limits?
+
+ RESOLVED: Hints. The variety of possible producers and consumers
+ makes it difficult to specify what the behavior should be if a
+ hard limit is exceeded. The goal here is to allow the application
+ to coordinate its resource requirements with the implementation.
+ If it fails to limit itself to the hinted values, we allow
+ producers or consumers to block or fail as appropriate for their
+ interfaces, but do not require it.
+
+Revision History
+
+ #4 (October 27, 2016) Daniel Kartch
+ - Clean up for publication
+
+ #3 (September 14, 2106) Daniel Kartch
+ - Switched from hard limits to hints
+
+ #2 (January 8, 2016) Daniel Kartch
+ - Assigned enum values
+
+ #1 (October 30, 2015) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_metadata.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_metadata.txt
new file mode 100644
index 0000000..d5a613e
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_metadata.txt
@@ -0,0 +1,335 @@
+Name
+
+ NV_stream_metadata
+
+Name Strings
+
+ EGL_NV_stream_metadata
+
+Contributors
+
+ Daniel Kartch
+ Gajanan Bhat
+ Laszlo Weber
+ Lawrence Ibarria
+ Miguel A. Vico
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia 'dot' com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 8 - July 31, 2015
+
+Number
+
+ EGL Extension #93
+
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream
+
+ Interacts with EGL_EXT_device_base
+
+Overview
+
+ Application suites which make use of streams to transmit images may
+ need to communicate additional data between the producer and
+ consumer, synchronized with the frame updates. This data may change
+ infrequently, such as a movie title and track number to be displayed
+ to the user, or every frame, such as a focal length and exposure
+ time used to process the image. Transmitting this data outside the
+ scope of the stream may be inconvenient, particularly in the case of
+ cross-process streams. But the nature of the data is highly
+ application-dependent, so it is not feasible for an EGL
+ implementation to define specific extensions for a broad range of
+ application data.
+
+ This extension provides a means for an application (or application
+ suite in the cross-process case) to associate arbitrary metadata
+ with a stream. Multiple metadata fields are available, allowing them
+ to be updated and used independently by separate subcomponents of
+ producers and consumers, respectively. The format of the data is
+ determined by the application, which is responsible for writing and
+ reading it correctly.
+
+New Types
+
+ None
+
+New Functions
+
+ EGLBoolean eglQueryDisplayAttribNV(
+ EGLDisplay dpy,
+ EGLint attribute,
+ EGLAttrib* value);
+
+ EGLBoolean eglSetStreamMetadataNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint n,
+ EGLint offset,
+ EGLint size,
+ const void* data);
+
+ EGLBoolean eglQueryStreamMetadataNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum name,
+ EGLint n,
+ EGLint offset,
+ EGLint size,
+ void* data);
+
+New Tokens
+
+ Accepted as <attribute> by eglQueryDisplayAttribNV:
+
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+ EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+ EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+
+ Accepted as <name> by eglQueryStreamMetatdataNV:
+
+ EGL_PRODUCER_METADATA_NV 0x3253
+ EGL_CONSUMER_METADATA_NV 0x3254
+ EGL_PENDING_METADATA_NV 0x3328
+
+ Accepted in <attrib_list> by eglCreateStreamKHR and as <attribute>
+ by eglQueryStreamKHR:
+
+ EGL_METADATA0_SIZE_NV 0x3255
+ EGL_METADATA1_SIZE_NV 0x3256
+ EGL_METADATA2_SIZE_NV 0x3257
+ EGL_METADATA3_SIZE_NV 0x3258
+
+ EGL_METADATA0_TYPE_NV 0x3259
+ EGL_METADATA1_TYPE_NV 0x325A
+ EGL_METADATA2_TYPE_NV 0x325B
+ EGL_METADATA3_TYPE_NV 0x325C
+
+
+Add to section "3.3 EGL Queries"
+
+ To query attributes of an initialized display, call
+
+ EGLBoolean eglQueryDisplayAttribNV(
+ EGLDisplay dpy,
+ EGLint attribute,
+ EGLAttrib* value)
+
+ On success, EGL_TRUE is returned, and the value associated with
+ attribute <name> is returned in <value>.
+
+ If <name> is EGL_MAX_STREAM_METADATA_BLOCKS_NV, the total number
+ of independent metadata blocks supported by each stream is returned.
+ If <name> is EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV, the maximum size
+ supported for an individual metadata block is returned. If <name> is
+ EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV, the maximum combined size of
+ all metadata blocks supported by a single stream is returned.
+
+ On failure, EGL_FALSE is returned. An EGL_BAD_DISPLAY error is
+ generated if <dpy> is not a valid initialized display. An
+ EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid
+ attribute name.
+
+If EGL_EXT_device_base is present, eglQueryDisplayAttribNV is equivalent
+to eglQueryDisplayAttribEXT, and calls to either will return the same
+values.
+
+Add to table "3.10.4.4 EGLStream Attributes" in EGL_KHR_stream
+
+ Attribute Read/Write Type Section
+ ------------------------ ---------- ------ ----------
+ EGL_METADATA<n>_SIZE_NV io EGLint 3.10.4.x
+ EGL_METADATA<n>_TYPE_NV io EGLint 3.10.4.x+1
+
+Add new subsections to section "3.10.4 EGLStream Attributes" of
+EGL_KHR_stream
+
+ 3.10.4.x EGL_METADATA<n>_SIZE_NV
+
+ The EGL_METADATA<n>_SIZE_NV attribute indicates the size of the
+ <n>th metadata block associated with a stream. If <n> is not less
+ than the value of EGL_MAX_STREAM_METADATA_BLOCKS_NV for the parent
+ EGLDisplay, the attribute is treated as unknown.
+
+ These attributes may only be set when the stream is created. The
+ default value is 0. The value may not exceed that of
+ EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV for the parent EGLDisplay.
+ Furthermore, the total size of all metadata blocks may not exceed
+ the value of EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV. If either of
+ these restrictions are exceeded, an EGL_BAD_PARAMETER error is
+ generated.
+
+ 3.10.4.x+1 EGL_METADATA<n>_TYPE_NV
+
+ The EGL_METADATA<n>_TYPE_NV attribute indicates an optional
+ application-defined type associated with the stream's <n>th metadata
+ block. If <n> is not less than the value of
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV for the parent EGLDisplay, the
+ attribute is treated as unknown.
+
+ These attributes may only be set when the stream is created. The
+ default value is 0. It is not required that a type be provided for
+ every metadata block for which a size has been specified. These may
+ be used to help separate application components coordinate their use
+ of the stream's metadata blocks.
+
+Add new section to "3.10 EGLStreams" of EGL_KHR_stream
+
+ 3.10.y EGLStream metadata
+
+ An application may associate arbitrary blocks of additional data
+ with the stream, to be updated in sync with the frames. The contents
+ and format of these data blocks are left to the application, subject
+ to size restrictions imposed by the implementation. The application
+ must specify the sizes of its metadata blocks at the time the stream
+ is created. The contents may be completely or partially modified
+ every frame or less frequently, as the application chooses. When a
+ new frame is inserted into the stream, a snapshot of the current
+ metadata contents are associated with the frame, and may then be
+ queried from the stream.
+
+ The contents of all metadata blocks of non-zero size are initialized
+ to zeroes. To modify the contents of a portion of a metadata block,
+ call
+
+ EGLBoolean eglSetStreamMetadataNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLint n,
+ EGLint offset,
+ EGLint size,
+ const void* data)
+
+ On success, EGL_TRUE is returned and the first <size> bytes pointed
+ to by <data> will be copied to the <n>th metadata block of <stream>,
+ starting at <offset> bytes from the beginning of the block. This
+ data will be associated with all subsequent frames inserted into the
+ stream until the contents are next modified.
+
+ On failure, EGL_FALSE is returned
+ - An EGL_BAD_DISPLAY error is generated if <dpy> is not a valid
+ display.
+ - An EGL_BAD_STREAM_KHR error is generated if <stream> is not a
+ valid stream associated with <dpy>.
+ - An EGL_BAD_STATE_KHR error is generated if the state of
+ <stream> is not EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR,
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR, or
+ EGL_STREAM_STATE_EMPTY_KHR.
+ - An EGL_BAD_ACCESS error is generated if the producer and
+ consumer endpoints of the stream are represented by separate
+ EGLStream objects, and the producer is not attached to
+ <stream>.
+ - An EGL_BAD_PARAMETER error is generated if <n> is negative or
+ is equal to or greather than the value of
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV for <dpy>.
+ - An EGL_BAD_PARAMETER error is generated if <offset> or <size>
+ are negative, or if <offset>+<size> is greater than the value
+ of EGL_METADATA<n>_SIZE_NV for <stream>.
+
+ If <data> does not point to valid readable memory of at least <size>
+ bytes, undefined behavior will result. If the value of <size> is
+ zero, no error will occur, but the function will have no effect.
+
+ To query the contents of a metadata block for a frame, call
+
+ EGLBoolean eglQueryStreamMetadataNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum name,
+ EGLint n,
+ EGLint offset,
+ EGLint size,
+ void* data)
+
+ On success, EGL_TRUE is returned and <size> bytes starting from the
+ <offset>th byte of the <n>th metadata block of <stream> will be
+ copied into the memory pointed to by <data>. If <name> is
+ EGL_PRODUCER_METADATA_NV, the metadata will be taken from the frame
+ most recently inserted into the stream by the producer. If <name> is
+ EGL_CONSUMER_METADATA_NV, the metadata will be taken from the frame
+ most recently acquired by the consumer. If <name> is
+ EGL_PENDING_METADATA_NV, the metadata will be taken from the frame
+ which would be obtained if an acquire operation were performed at
+ the time of the query.
+
+ On failure, EGL_FALSE is returned
+ - An EGL_BAD_DISPLAY error is generated if <dpy> is not a valid
+ display.
+ - An EGL_BAD_STREAM_KHR error is generated if <stream> is not a
+ valid stream associated with <dpy>.
+ - An EGL_BAD_STATE_KHR error is generated if the state of
+ <stream> is not EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
+ - An EGL_BAD_ATTRIBUTE error is generated if <name> is not
+ EGL_PRODUCER_METADATA_NV, EGL_CONSUMER_METADATA_NV, or
+ EGL_PENDING_METADATA_NV.
+ - An EGL_BAD_PARAMETER error is generated if <n> is negative or
+ is equal to or greater than the value of
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV for <dpy>.
+ - An EGL_BAD_PARAMETER error is generated if <offset> or <size>
+ are negative, or if <offset>+<size> is greater than the value
+ of EGL_METADATA<n>_SIZE_NV for <stream>.
+
+ If <data> does not point to valid writeable memory of at least
+ <size> bytes, undefined behavior will result. If the value of <size>
+ is zero, no error will occur, but the function will have no effect.
+
+Issues
+
+ 1. What happens if multiple calls are made to
+ eglSetStreamMetadataNV without presenting a new frame?
+
+ RESOLVED: If the calls specify overlapping ranges of the same
+ metadata block, the earlier data in the overlapped portion is
+ overwritten. Only the most recent values are associated with
+ the next frame when it is inserted into the stream.
+
+ 2. What happens if multiple frames are presented without calling
+ eglSetStreamMetadataNV?
+
+ RESOLVED: The most recently provided data is reused.
+
+Revision History
+
+ #8 (July 31, 2015) Daniel Kartch
+ - Cleaned up and added contact info for publication.
+
+ #7 (April 2, 2015) Miguel A. Vico
+ - Assigned enumerated value for metadata of pending frame.
+
+ #6 (March 20, 2015) Daniel Kartch
+ - Add query for metadata of pending frame.
+
+ #5 (January 15, 2015) Daniel Kartch
+ - Add paragraph of supported attributes to description of
+ eglQueryDisplayAttribNV.
+ - Added/updated error conditions to set/query functions.
+ - Fixed errors in prototypes.
+
+ #4 (January 6, 2015) Daniel Kartch
+ - Fixed errors in prototypes.
+ - Added enum values.
+
+ #3 (December 12, 2014) Daniel Kartch
+ - Clarified language on how metadata becomes associated with
+ frames inserted into the stream.
+ - Fixed typos.
+
+ #2 (December 12, 2014) Daniel Kartch
+ - Added offset and size to Set and Query functions.
+
+ #1 (December 11, 2014) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_origin.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_origin.txt
new file mode 100644
index 0000000..5f56646
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_origin.txt
@@ -0,0 +1,298 @@
+Name
+
+ NV_stream_origin
+
+Name Strings
+
+ EGL_NV_stream_origin
+
+Contributors
+
+ Miguel A. Vico
+ James Jones
+ Daniel Kartch
+
+Contacts
+
+ Miguel A. Vico (mvicomoya 'AT' nvidia.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Version 5 - May 20, 2019
+
+Number
+
+ 134
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires the EGL_KHR_stream extension.
+
+ This extension is written based on the wording of version 26 of the
+ EGL_KHR_stream extension.
+
+Overview
+
+ EGL does not define a frame orientation. However, window systems or
+ rendering APIs might.
+
+ Ideally, when using EGL streams, frame orientation is agreed upon by
+ both the connected consumer and producer and appropriate handling is
+ performed within EGL to satisfy both endpoints needs. Thus,
+ applications will rarely have to worry about frame orientation.
+
+ However, in some cases consumer applications such as compositors
+ might still need to access the frame data as provided by the
+ consumer. Hence, they need to know what orientation was set for the
+ stream frames. This will allow applications to adjust the way they
+ access the frame data.
+
+ Similarly, producer applications might need to adjust how rendering
+ commands are issued depending on the orientation set for the stream
+ frames.
+
+ This extension provides new attributes to allow EGL stream users to
+ query frame orientation and whether it is handled automatically by
+ the producer or consumer endpoints so that clients are not required
+ to take further actions.
+
+New Functions
+
+ None.
+
+New Tokens
+
+ Accepted as the <attribute> parameter of eglQueryStreamKHR and
+ eglQueryStreamAttribKHR:
+
+ EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+ EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+
+ EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+ EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+
+ Returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_FRAME_ORIGIN_X_NV:
+
+ EGL_LEFT_NV 0x336B
+ EGL_RIGHT_NV 0x336C
+
+ Returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_FRAME_ORIGIN_Y_NV:
+
+ EGL_TOP_NV 0x336D
+ EGL_BOTTOM_NV 0x336E
+
+ Returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_FRAME_MAJOR_AXIS_NV:
+
+ EGL_X_AXIS_NV 0x336F
+ EGL_Y_AXIS_NV 0x3370
+
+Add to table "3.10.4.4 EGLStream Attributes"
+
+ Attribute Read/Write Type Section
+ --------------------------------- ---------- ---------- -----------
+ EGL_STREAM_FRAME_ORIGIN_X_NV ro EGLint 3.10.4.x
+ EGL_STREAM_FRAME_ORIGIN_Y_NV ro EGLint 3.10.4.x+1
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV ro EGLint 3.10.4.x+2
+ EGL_CONSUMER_AUTO_ORIENTATION_NV ro EGLBoolean 3.10.4.x+3
+ EGL_PRODUCER_AUTO_ORIENTATION_NV ro EGLBoolean 3.10.4.x+4
+
+Add new subsections to the end of section "3.10.4 EGLStream Attributes"
+in EGL_KHR_stream:
+
+ 3.10.4.x EGL_STREAM_FRAME_ORIGIN_X_NV
+
+ EGL_STREAM_FRAME_ORIGIN_X_NV is a read-only attribute that
+ indicates the position on the X axis of the origin relative to the
+ stream images surface as agreed upon by consumer and producer.
+
+ The relative position on X may be one of the following:
+
+ - EGL_LEFT_NV - Coordinates on the X axis will be 0 on the left
+ border and increase towards the right border until <frame
+ width> is reached.
+
+ - EGL_RIGHT_NV - Coordinates on the X axis will be <frame width>
+ on the left border and decrease towards the right border until
+ 0 is reached.
+
+ - EGL_DONT_CARE - No orientation on the X axis was set by the EGL
+ implementation. Applications must coordinate what they are
+ doing.
+
+ EGL_STREAM_FRAME_ORIGIN_X_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+ 3.10.4.x+1 EGL_STREAM_FRAME_ORIGIN_Y_NV
+
+ EGL_STREAM_FRAME_ORIGIN_Y_NV is a read-only attribute that
+ indicates the position on the Y axis of the origin relative to the
+ stream images surface as agreed upon by consumer and producer.
+
+ The relative position on Y may be one of the following:
+
+ - EGL_TOP_NV - Coordinates on the Y axis will be 0 on the top
+ border and increase towards the bottom border until <frame
+ height> is reached.
+
+ - EGL_BOTTOM_NV - Coordinates on the Y axis will be <frame
+ height> on the top border and decrease towards the bottom
+ border until 0 is reached.
+
+ - EGL_DONT_CARE - No orientation on the Y axis was set by the EGL
+ implementation. Applications must coordinate what they are
+ doing.
+
+ EGL_STREAM_FRAME_ORIGIN_Y_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+ 3.10.4.x+2 EGL_STREAM_FRAME_MAJOR_AXIS_NV
+
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV is a read-only attribute that
+ indicates whether the stream images are X-major or Y-major.
+
+ The major axis may be one of the following:
+
+ - EGL_X_AXIS_NV - Frames are laid out such that consecutive
+ pixels with same Y coordinate reside next to each other in
+ memory.
+
+ - EGL_Y_AXIS_NV - Frames are laid out such that consecutive
+ pixels with same X coordinate reside next to each other in
+ memory.
+
+ - EGL_DONT_CARE - No major axis was set by the EGL
+ implementation. Applications must coordinate what they are
+ doing.
+
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+ 3.10.4.x+3 EGL_CONSUMER_AUTO_ORIENTATION_NV
+
+ EGL_CONSUMER_AUTO_ORIENTATION_NV is a read-only attribute that
+ indicates whether the consumer endpoint will handle frame orientation
+ automatically so that the consumer application is not required to
+ take further actions.
+
+ The following values can be returned:
+
+ - EGL_TRUE - The consumer application can read frames as normal.
+ The consumer will flip images as needed if the expected
+ orientation does not match.
+
+ - EGL_FALSE - The consumer application is expected to query the
+ frame orientation and process images accordingly if it does not
+ match with the expected orientation.
+
+ EGL_CONSUMER_AUTO_ORIENTATION_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+ 3.10.4.x+4 EGL_PRODUCER_AUTO_ORIENTATION_NV
+
+ EGL_PRODUCER_AUTO_ORIENTATION_NV is a read-only attribute that
+ indicates whether the producer endpoint will handle frame orientation
+ automatically so that the producer application is not required to
+ take further actions.
+
+ The following values can be returned:
+
+ - EGL_TRUE - The producer application can generate frames as
+ normal. The producer will flip images as needed if the
+ expected orientation does not match.
+
+ - EGL_FALSE - The producer application is expected to query the
+ frame orientation and generate images accordingly if it does
+ not match with the expected orientation.
+
+ EGL_PRODUCER_AUTO_ORIENTATION_NV will not be defined until a consumer
+ and a producer are connected to the stream. Querying it before that
+ will generate an EGL_BAD_STATE_KHR error.
+
+
+Add to the error list in section "3.10.4.2 Querying EGLStream
+Attributes":
+
+ - EGL_BAD_STATE_KHR is generated if <attribute> is any of
+ EGL_STREAM_FRAME_ORIGIN_X_NV, EGL_STREAM_FRAME_ORIGIN_Y_NV,
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV, EGL_CONSUMER_AUTO_ORIENTATION_NV,
+ or EGL_PRODUCER_AUTO_ORIENTATION_NV and the stream is in
+ EGL_STREAM_STATE_CREATED_KHR or EGL_STREAM_STATE_CONNECTING_KHR
+ state.
+
+Issues
+
+ 1. Frame orientation is only needed for and relevant to specific
+ consumers and producers. What should the query of either
+ EGL_STREAM_FRAME_ORIGIN_X_NV, EGL_STREAM_FRAME_ORIGIN_Y_NV,
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV when consumers or producers that do
+ not define a frame orientation are connected to the stream?
+
+ RESOLVED: If the consumer or producer connected to the stream does
+ not define a frame orientation, the queries will return
+ EGL_DONT_CARE and applications must coordinate what they do.
+
+ 2. What should the query return when the connected consumer or
+ producer defines a frame orientation but can actually handle any?
+
+ RESOLVED: Quering EGL_STREAM_FRAME_ORIGIN_X_NV,
+ EGL_STREAM_FRAME_ORIGIN_Y_NV, or EGL_STREAM_FRAME_MAJOR_AXIS_NV
+ will return the default frame orientation.
+
+ Querying EGL_CONSUMER_AUTO_ORIENTATION_NV or
+ EGL_PRODUCER_AUTO_ORIENTATION_NV will return whether the consumer
+ or producer can handle any orientation automatically so that
+ applications do not need to worry about it.
+
+ If querying EGL_CONSUMER_AUTO_ORIENTATION_NV or
+ EGL_PRODUCER_AUTO_ORIENTATION_NV returns EGL_FALSE, the
+ corresponding application is expected to query the frame
+ orientation and take the appropriate action if that does not match
+ the expected orientation.
+
+Revision History
+
+ #5 (May 20th, 2019) Miguel A. Vico
+ - Allocate extension number
+ - Mark extension as complete
+
+ #4 (January 30th, 2019) Miguel A. Vico
+ - Allocate values for added enumerants
+ - Minor fixes to the major axis attribute description
+
+ #3 (October 8th, 2018) Miguel A. Vico
+ - Collapsed producer and consumer orientation attributes
+ - Added major axis attribute to fully define orientation
+ - Added two new attributes to indicate whether the producer or
+ consumer can handle orientation automatically.
+ - Rewritten issue #1
+ - Added issue #2 and its resolution
+ - Overall spec changes to reflect the above points
+
+ #2 (August 19th, 2016) Miguel A. Vico
+ - Rename newly added attributes as consumer and producer
+ attributes
+ - Added both issue #1 and its resolution
+ - Overall spec changes to reflect the above points
+
+ #1 (August 1st, 2016) Miguel A. Vico
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_remote.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_remote.txt
new file mode 100644
index 0000000..c8eb464
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_remote.txt
@@ -0,0 +1,472 @@
+Name
+
+ NV_stream_remote
+ NV_stream_cross_object
+ NV_stream_cross_display
+ NV_stream_cross_process
+ NV_stream_cross_partition
+ NV_stream_cross_system
+
+Name Strings
+
+ EGL_NV_stream_remote
+
+Contributors
+
+ Daniel Kartch
+ Bogdan Naodovic
+ James Jones
+ Zander Clucas
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 4 - June 01, 2016
+
+Number
+
+ EGL Extension #114
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires EGL_KHR_stream
+
+ Interacts with EGL_KHR_stream_cross_process_fd
+
+ All EGL_NV_stream_cross_* extensions require EGL_NV_stream_remote,
+ but are independent of each other.
+
+Overview
+
+ This extension provides a generic framework for establishing stream
+ connections when the producer and consumer endpoints are not
+ associated with the same EGLStream object. The cross-process streams
+ allowed by the EGL_KHR_stream_cross_process_fd extension are one
+ example of such a connection. Other potential examples include
+ streams between objects associated with different EGLDisplays in a
+ single process, streams between processes residing in separate
+ virtual machine partitions on a single system, or streams between
+ entirely separate systems connected via the internet.
+
+ The approach used by EGL_KHR_stream_cross_process_fd has several
+ drawbacks:
+ - It creates a new pair of stream creation and query functions
+ which are specific to both the type of stream and the method
+ used for communicating the stream's identity. Extending this
+ methodology would require new pairs of functions for every new
+ type of stream connection.
+ - It allows creation of the connected stream objects without any
+ indication of which side will be the consumer and which will be
+ the producer. It even allows, although this was probably not
+ intended, a cross-process stream to be established, but have
+ both producer and consumer exist in the same process, with the
+ other process acting as a voyeur that can observe state and
+ perhaps modify attributes, but not operate on frames.
+ - The use of file descriptors generated by EGL in one process
+ and accessed by EGL in another to establish communication has
+ potential security flaws, and may not be available at all on
+ some real-time operating systems.
+
+ Rather than implement new connection types using this model, we
+ propose a more generic approach that does not require a
+ proliferation of new interfaces and avoids any ambiguities in how
+ the stream will be used. These extensions can coexist with
+ EGL_KHR_stream_cross_process_fd, but allow for more control of
+ stream communication by the applications.
+
+ These extensions provide the framework with which arbitrary stream
+ object pairs can be established, but by themselves are insufficient
+ to create such pairs. In addition, a separate extension must be
+ used to determine the protocol by which the two objects will
+ communicate. See for example the EGL_NV_stream_socket extension.
+
+ Several optional types of separate stream objects are defined,
+ with successive levels of remoteness. It should be assumed that
+ a more remote type will be less efficient in transfering images,
+ and therefore applications should choose the least remote type
+ available that is compatible with their use cases.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens
+
+ Returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_STATE_KHR:
+
+ EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+
+ Accepted as attribute names in eglCreateStreamKHR,
+ eglCreateStreamAttribKHR, eglQueryStreamKHR, and
+ eglQueryStreamAttribKHR:
+
+ EGL_STREAM_TYPE_NV 0x3241
+ EGL_STREAM_PROTOCOL_NV 0x3242
+ EGL_STREAM_ENDPOINT_NV 0x3243
+
+ Accepted by eglCreateStreamKHR and eglCreateStreamAttribKHR, and
+ returned by eglQueryStreamKHR and eglQueryStreamAttribKHR, as value
+ when attribute is EGL_STREAM_TYPE_NV, EGL_STREAM_PROTOCOL_NV or
+ EGL_STREAM_ENDPOINT_NV:
+
+ EGL_STREAM_LOCAL_NV 0x3244
+
+ When EGL_NV_stream_cross_object is present, accepted by
+ eglCreateStreamKHR and eglCreateStreamAttribKHR and returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR as value for
+ attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_OBJECT_NV 0x334D
+
+ When EGL_NV_stream_cross_display is present, accepted by
+ eglCreateStreamKHR and eglCreateStreamAttribKHR and returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR as value for
+ attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_DISPLAY_NV 0x334E
+
+ When EGL_NV_stream_cross_process is present, accepted as
+ value for attribute EGL_STREAM_TYPE_NV by eglCreateStreamKHR
+ and eglCreateStreamAttribKHR. When either
+ EGL_NV_stream_cross_process or EGL_KHR_stream_cross_process_fd
+ is present, returned by eglQueryStreamKHR and
+ eglQueryStreamAttribKHR for attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_PROCESS_NV 0x3245
+
+ When EGL_NV_stream_cross_partition is present, accepted by
+ eglCreateStreamKHR and eglCreateStreamAttribKHR and returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR as value for
+ attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_PARTITION_NV 0x323F
+
+ When EGL_NV_stream_cross_system is present, accepted by
+ eglCreateStreamKHR and eglCreateStreamAttribKHR and returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR as value for
+ attribute EGL_STREAM_TYPE_NV:
+
+ EGL_STREAM_CROSS_SYSTEM_NV 0x334F
+
+ If EGL_KHR_stream_cross_process_fd is present, returned by
+ eglQueryStreamKHR and eglQueryStreamAttribKHR when attribute is
+ EGL_STREAM_PROTOCOL_NV:
+
+ EGL_STREAM_PROTOCOL_FD_NV 0x3246
+
+ Accepted by eglCreateStreamKHR and eglCreateStreamAttribKHR, and
+ returned by eglQueryStreamKHR and eglQueryStreamAttribKHR when
+ attribute is EGL_STREAM_ENDPOINT_NV:
+
+ EGL_STREAM_PRODUCER_NV 0x3247
+ EGL_STREAM_CONSUMER_NV 0x3248
+
+Add to "Glossary" of EGL_KHR_stream:
+
+ Local stream
+ A stream implemented with both consumer and producer attached to a
+ single EGLStream object.
+
+ Remote stream
+ A stream implemented with two EGLStream objects that communicate
+ with each other, with the consumer attached to one object and the
+ producer attached to the other.
+
+Add to section "3.10.1 Creating an EGLStream" in EGL_KHR_stream:
+
+ If a remote EGLStream is created, as described in section "3.10.5.x
+ Remote streams", and is paired with an EGLStream object which has
+ conflicting values for some attributes, creation will succeed, but
+ the stream will enter state EGL_STREAM_STATE_DISCONNECTED_KHR once
+ communication is established.
+
+Add to list of failures in section "3.10.1 Creating an EGLStream" in
+EGL_KHR stream:
+
+ - EGL_BAD_MATCH is generated if the value of any one of the
+ EGL_STREAM_TYPE_NV, EGL_STREAM_PROTOCOL_NV, or
+ EGL_STREAM_ENDPOINT_NV attributes is EGL_STREAM_LOCAL_NV and
+ any other of these attributes is neither EGL_STREAM_LOCAL_NV
+ nor EGL_DONT_CARE.
+
+Add to section "3.10.2 Connecting an EGLStream to a consumer" in
+EGL_KHR_stream:
+
+ Any function which connects a consumer to an EGLStream will fail and
+ generate an EGL_BAD_ACCESS error if the value of the EGLStream's
+ EGL_STREAM_ENDPOINT_NV attribute is EGL_STREAM_PRODUCER_NV.
+
+Add to section "3.10.3 Connecting an EGLStream to a producer" in
+EGL_KHR_stream:
+
+ Any function which connects a producer to an EGLStream will fail and
+ generate an EGL_BAD_ACCESS error if the value of the EGLStream's
+ EGL_STREAM_ENDPOINT_NV attribute is EGL_STREAM_CONSUMER_NV.
+
+Add to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream:
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------ ----------
+ EGL_STREAM_TYPE_NV io EGLint 3.10.4.x
+ EGL_STREAM_PROTOCOL_NV io EGLint 3.10.4.x+1
+ EGL_STREAM_ENDPOINT_NV io EGLint 3.10.4.x+2
+
+Add to beginning of state list in section "3.10.4.3 EGL_STREAM_STATE_KHR
+Attribute" in EGL_KHR_stream:
+
+ - EGL_STREAM_STATE_INITIALIZING_NV - The EGLStream object
+ represents one endpoint of a remote stream and has not yet
+ established communication with the opposite endpoint.
+
+Replace the first entry in the state transition table in section
+"3.10.4.3 EGL_STREAM_STATE_KHR Attribute" in EGL_KHR_stream:
+
+ -> EGL_STREAM_STATE_INITIALIZING_NV
+ A new remote EGLStream is created in this state.
+
+ EGL_STREAM_STATE_INITIALIZING_NV ->
+ EGL_STREAM_STATE_CREATED_KHR
+ Occurs when a remote EGLStream object establishes communication with
+ the opposite endpoint.
+
+ -> EGL_STREAM_STATE_CREATED_KHR
+ A new local EGLStream or EGLStream of undetermined type is created
+ in this state.
+
+Add new subsections to the end of section "3.10.4 EGLStream Attributes"
+in EGL_KHR_stream:
+
+ 3.10.4.x EGL_STREAM_TYPE_NV Attribute
+
+ The EGL_STREAM_TYPE_NV attribute may be set when the stream
+ is created, and indicates the type of connection between the
+ EGLStream objects to which the consumer and producer are attached.
+ Legal values are EGL_DONT_CARE and EGL_STREAM_LOCAL_NV. The
+ default value is EGL_DONT_CARE.
+
+ A value of EGL_STREAM_LOCAL_NV indicates that this is a local
+ stream with both consumer and producer connected to a single
+ EGLStream object.
+
+ If EGL_DONT_CARE is initially specified, the value of the attribute
+ will automatically be changed to the appropriate value once both
+ consumer and producer are attached, depending on the functions used.
+
+ Other possible values for EGL_STREAM_TYPE_NV may be defined by
+ additional extensions to indicate a remote stream. Where used,
+ the EGL_STREAM_PROTOCOL_NV attribute must also be set to a
+ communication protocol compatible with the stream type.
+
+ 3.10.4.x+1 EGL_STREAM_PROTOCOL_NV Attribute
+
+ The EGL_STREAM_PROTOCOL_NV attribute may be set when the stream is
+ created, and indicates the manner in which communication is
+ established between the EGLStream objects to which the consumer
+ and producer are attached. Legal values are EGL_DONT_CARE and
+ EGL_STREAM_LOCAL_NV. The default value is EGL_DONT_CARE.
+
+ A value of EGL_STREAM_LOCAL_NV indicates that this is a local
+ stream with both consumer and producer connected to a single
+ EGLStream object, so no communication protocol is required.
+
+ If EGL_DONT_CARE is initially specified, the value of the attribute
+ will automatically be changed to the appropriate value once both
+ consumer and producer are attached, depending on the functions used.
+
+ Other possible values for EGL_STREAM_PROTOCOL_NV may be defined by
+ additional extensions to indicate the communication protocol to be
+ used for a remote stream. Not all communication protocols are
+ compatible with all stream types, and vice versa. If incompatible
+ types and protocols are specified, an EGL_BAD_MATCH error will be
+ generated.
+
+ 3.10.4.x+2 EGL_STREAM_ENDPOINT_NV Attribute
+
+ The EGL_STREAM_ENDPOINT_NV attribute may be set when the stream is
+ created, and indicates the endpoints which will be attached to the
+ EGLStream object. Legal values are EGL_DONT_CARE,
+ EGL_STREAM_LOCAL_NV, EGL_STREAM_CONSUMER_NV, and
+ EGL_STREAM_PRODUCER_NV. The default value is EGL_DONT_CARE.
+
+ A value of EGL_STREAM_LOCAL_NV indicates that this is a local
+ stream with both consumer and producer connected to a single
+ EGLStream object.
+
+ A value of EGL_STREAM_CONSUMER_NV indicates that the EGLStream
+ object represents the consumer side of a remote stream.
+
+ A value of EGL_STREAM_PRODUCER_NV indicates that the EGLStream
+ object represents the producer side of a remote stream.
+
+ If EGL_DONT_CARE is initially specified, the value of the attribute
+ will automatically be changed to the appropriate value once both
+ consumer and producer are attached, depending on the functions used.
+
+If EGL_NV_stream_cross_object is present, in section 3.10.4.x above,
+add EGL_STREAM_CROSS_OBJECT_NV to the list of legal values, and insert
+
+ A value of EGL_STREAM_CROSS_OBJECT_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint is obtained from the same EGLDisplay.
+
+If EGL_NV_stream_cross_display is present, in section 3.10.4.x above,
+add EGL_STREAM_CROSS_DISPLAY_NV to the list of legal values, and insert
+
+ A value of EGL_STREAM_CROSS_DISPLAY_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint may be obtained from a different EGLDisplay in the same
+ process.
+
+If EGL_NV_stream_cross_process or EGL_NV_stream_cross_process_fd is
+present, in section "3.10.4.x" above, add EGL_STREAM_CROSS_PROCESS_NV
+to the list of legal values, and insert
+
+ A value of EGL_STREAM_CROSS_PROCESS_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint may reside in a separate process.
+
+If EGL_NV_stream_cross_partition is present, in section 3.10.4.x
+above, add EGL_STREAM_CROSS_PARTITION_NV to the list of legal values,
+and insert
+
+ A value of EGL_STREAM_CROSS_PARTITION_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint may reside in a separate virtual machine partition on
+ the same system. The partitions are not required to be using the
+ same operating systems, but must support compatible communication
+ protocols.
+
+If EGL_NV_stream_cross_system is present, in section 3.10.4.x above,
+add EGL_STREAM_CROSS_SYSTEM_NV to the list of legal values, and insert
+
+ A value of EGL_STREAM_CROSS_SYSTEM_NV indicates that the stream
+ object represents one endpoint of a remote stream whose other
+ endpoint may reside on an independent hardware system with no
+ directly sharable memory resources.
+
+If EGL_KHR_stream_cross_process_fd is present, in section 3.10.4.x+1
+above, add EGL_STREAM_PROTOCOL_FD_NV to the list of legal values, and
+insert
+
+ A value of EGL_STREAM_PROTOCOL_FD_NV indicates that the stream is
+ a remote stream whose communication is established using a file
+ descriptor. The details of what this file descriptor represents
+ are implementation dependent. If the EGL_STREAM_PROTOCOL_NV
+ attribute is initialized with this value, the EGL_STREAM_TYPE_NV
+ attribute must specify a value of EGL_STREAM_CROSS_PROCESS_NV or
+ an EGL_BAD_MATCH failure is generated.
+
+ If an initial value of EGL_DONT_CARE is specified and a file
+ descriptor is subsequently obtained with
+ eglGetStreamFileDescriptorKHR, the value will be automatically
+ changed to EGL_STREAM_PROTOCOL_FD_NV.
+
+Add a new subsection to the end of "3.10.5 EGLStream operation":
+
+ 3.10.5.x Remote streams
+
+ An EGLStream object may be created as the endpoint of a remote
+ stream by specifying EGL_STREAM_PRODUCER_NV or
+ EGL_STREAM_CONSUMER_NV as the value for its EGL_STREAM_ENDPOINT_NV
+ attribute. Valid and compatible EGL_STREAM_TYPE_NV and
+ EGL_STREAM_PROTOCOL_NV values other than EGL_DONT_CARE or
+ EGL_STREAM_LOCAL_NV must also be specified.
+
+ If a value for EGL_STREAM_ENDPOINT_NV is not specified, the stream
+ is assumed to be local, but other extensions (see for example
+ EGL_KHR_stream_cross_process_fd) may allow it to be converted to a
+ remote stream before the producer has been attached.
+
+ When an EGLStream object is created as remote, any unspecified
+ attribute will be initially set to a value of EGL_DONT_CARE. Pairs
+ of EGLStream objects representing opposite endpoints of a stream are
+ not required to specify the same attribute lists, but their
+ attributes must be compatible. When communication is established
+ between the endpoints, they will exchange attribute settings:
+ - If both endpoints have a value of EGL_DONT_CARE for an
+ attribute, the default value will be assigned.
+ - If one endpoint has a value of EGL_DONT_CARE for an attribute,
+ it will be set to the other endpoint's value.
+ - If neither endpoint has a value of EGL_DONT_CARE for an
+ attribute, their values must agree. In most cases, this means
+ the values must be identical, but this may not be true for all
+ attributes. In particular, one endpoint must specify an
+ EGL_STREAM_ENDPOINT_NV value of EGL_STREAM_CONSUMER_NV, and
+ the other must specify a value of EGL_STREAM_PRODUCER_NV.
+ If the values for any attribute are not compatible, the stream will
+ transition to the EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ Additionally, if the two EGLStream objects representing a remote
+ stream are created for EGLDisplays which cannot share resources,
+ the stream will transition to the EGL_STREAM_STATE_DISCONNECTED_KHR
+ state.
+
+ When using remote streams, there may be latency in communicating
+ state changes between the EGLStream objects representing the two
+ endpoints. For instance, when a new frame is inserted into the
+ stream by the producer, the consumer endpoint may not immediately
+ transition to EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR. Similarly,
+ when a frame is acquired by the consumer, the producer endpoint may
+ not immediately transition to
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR. Applications should rely
+ only on the state of the endpoint on which they are operating to
+ determine the expected results of that operation.
+
+In section "3.10.1.1 Duplicating an EGLStream from a file descriptor" of
+the EGL_KHR_stream_cross_process_fd extension, add to the failure list
+for eglGetStreamFileDescriptor
+
+ - EGL_BAD_ACCESS is generated if the EGL_STREAM_TYPE_NV
+ attribute of <stream> is anything other than EGL_DONT_CARE or
+ EGL_STREAM_CROSS_PROCESS_NV.
+
+ - EGL_BAD_ACCESS is generated if the EGL_STREAM_PROTOCOL_NV
+ attribute of <stream> is anything other than EGL_DONT_CARE or
+ EGL_STREAM_PROTOCOL_FD_NV.
+
+ - EGL_BAD_ACCESS is generated if the EGL_STREAM_ENDPOINT_NV
+ attribute of <stream> is EGL_STREAM_LOCAL_NV.
+
+Issues
+
+ None
+
+Revision History
+
+ #4 (June 01, 2016)
+ - Removed sync object definition. It will be provided by a
+ separate extension.
+ - Folded in cross-partition extension.
+ - Added types for cross-object, cross-display, and
+ cross-system streams.
+ - General cleanup in preparation for publication.
+
+ #3 (September 16, 2015) Zander Clucas
+ - Removed dependence of the CROSS_PROCESS type on the
+ EGL_NV_cross_process_fd extension
+ - Added CROSS_PROCESS to the list of STREAM_TYPE legal values
+ - Added CROSS_PROCESS requirement for cross_process_fd protocol
+
+ #2 (December 11, 2014) Daniel Kartch
+ - Rewrote as NV draft for earlier release.
+ - Added section for creation of sync object.
+ - Reserved enum values.
+
+ #1 (October 10, 2014) Daniel Kartch
+ - Initial EXT draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_reset.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_reset.txt
new file mode 100644
index 0000000..1cb0d06
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_reset.txt
@@ -0,0 +1,306 @@
+Name
+
+ NV_stream_reset
+
+Name Strings
+
+ EGL_NV_stream_reset
+
+Contributors
+
+ Daniel Kartch
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 6 - October 27, 2016
+
+Number
+
+ EGL Extension #112
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ Requires the EGL_KHR_stream extension.
+
+ Modifies the EGL_KHR_stream_fifo extension.
+
+ Modifies the EGL_KHR_stream_consumer_gltexture extension.
+
+ Modifies the EGL_EXT_stream_consumer_egloutput extension.
+
+ Interacts with the EGL_KHR_stream_cross_process_fd and
+ EGL_NV_stream_remote extensions.
+
+ This extension is written based on the wording of version 26 of the
+ EGL_KHR_stream extension.
+
+Overview
+
+ The base stream extension requires that, once the producer inserts
+ the first frame into the stream, at least one frame is always
+ available to be acquired by the consumer until the stream
+ disconnects. However, there are some use cases in which the producer
+ or the consumer may wish to allow the stream to empty without
+ permanently disconnecting.
+
+ An example of a use case where the producer may wish to empty the
+ stream is a security or rear-view camera which temporarily stops
+ producing new frames, perhaps due to a hardware reset. Continuing to
+ display the last frame available would produce a false impression of
+ the current state, and should be avoided for safety reasons. A
+ better solution would be to let the consumer know there was no
+ available image, so that it could take appropriate actions, and then
+ recover when the camera begins streaming again.
+
+ This use case could be handled with existing functionality by
+ disconnecting and destroying the stream and then recreating and
+ reconnecting it when new frames are available. However, this can be
+ burdensome, particularly when the producer and consumer reside in
+ separate processes.
+
+ An example of a use case where the consumer may wish to empty the
+ stream is an image processer which operates on each frame exactly
+ once. After processing, it will not waste resources operating on the
+ same frame a second time. This use case can be handled by carefully
+ monitoring the availability of a new frame before performing an
+ acquire operation. But returning the buffer(s) as soon as they are
+ no longer needed allows for better resource management.
+
+ This extension allows a stream to be completely drained of existing
+ frames by the consumer or flushed of existing frames by the producer
+ without disconnecting, so that processing may continue again when
+ new frames are produced.
+
+New Functions
+
+ EGLBoolean eglResetStreamNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream);
+
+New Tokens
+
+ Accepted as an attribute in the <attrib_list> parameter of
+ eglCreateStreamKHR and the <attrib> parameter of eglQueryStreamKHR:
+
+ EGL_SUPPORT_RESET_NV 0x3334
+ EGL_SUPPORT_REUSE_NV 0x3335
+
+To table "3.10.4.4 EGLStream Attributes", add entry
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------ ----------
+ EGL_SUPPORT_RESET_NV io EGLint 3.10.4.x
+ EGL_SUPPORT_REUSE_NV io EGLint 3.10.4.x+1
+
+Modify entries in the list of state transitions in "3.10.4.3
+EGL_STREAM_STATE_KHR Attribute"
+
+ EGL_STREAM_STATE_EMPTY_KHR ->
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ Occurs when the producer inserts the first image frame and any
+ subsequent frame after the stream has been drained.
+
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR
+ Occurs when the producer inserts a new image frame and only
+ previously consumed frames are available.
+
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR
+ Occurs when the consumer begins examining the last unconsumed
+ frame and reuse of old frames is enabled.
+
+Add entries to the list of state transitions in "3.10.4.3
+EGL_STREAM_STATE_KHR Attribute"
+
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_EMPTY_KHR
+ Occurs when the stream is reset.
+
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR ->
+ EGL_STREAM_STATE_EMPTY_KHR
+ Occurs when the stream is reset or, if reuse of old frames is
+ disabled, when the consumer begins examining the last unconsumed
+ frame.
+
+Add new sections at the end of section "3.10.4 EGLStream Attributes"
+
+ 3.10.4.x EGL_SUPPORT_RESET_NV Attribute
+
+ The EGL_SUPPORT_RESET_NV attribute may only be set when the stream
+ is created. By default, it is EGL_FALSE. If set to EGL_TRUE, the
+ stream will allow restoration of the stream state back to
+ EGL_STREAM_STATE_EMPTY_KHR state from
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR or
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR, releasing existing frames,
+ as described in section 3.10.5.x.
+
+ Not all consumers are required to support stream resets. Attempting
+ to attach a consumer which does not support resets to a stream with
+ EGL_SUPPORT_RESET_NV set to EGL_TRUE will fail with an
+ EGL_BAD_MATCH error.
+
+ Not all producers will provide a means to reset streams themselves,
+ but any producer may be connected to a stream which supports resets
+ and may be used with the eglStreamResetNV function.
+
+ 3.10.4.x+1 EGL_SUPPORT_REUSE_NV Attribute
+
+ The EGL_SUPPORT_REUSE_NV attribute may only be set when the stream
+ is created. By default, it is EGL_TRUE. If EGL_TRUE, then when the
+ consumer acquires the last available image frame from the stream, it
+ will be held for reuse until a new frame is inserted to replace it.
+ If EGL_FALSE, no frames will be available to the consumer until the
+ producer inserts a new one.
+
+Modify third paragraph of "3.10.5.1 EGLStream operation in mailbox mode"
+
+ The consumer retrieves the image frame from the mailbox and
+ examines it. When the consumer is finished examining the image
+ frame it is either placed back in the mailbox (if the mailbox is
+ empty, supports reuse of frames, and has not been reset) or
+ discarded (otherwise).
+
+If EGL_KHR_stream_fifo is present, insert at beginning of fourth paragraph
+of "3.10.5.2 EGLStream operation in fifo mode"
+
+ If the EGL_SUPPORT_REUSE_NV attribute is EGL_TRUE and the stream has
+ not been reset since the image frame was consumed, then if the fifo
+ is empty ...
+
+Insert a new paragraph after the above
+
+ If the EGL_SUPPORT_REUSE_NV attribute is EGL_FALSE or the stream has
+ been reset, then if the fifo is empty when the consumer is finished
+ consuming an image frame, the frame is discarded and the stream is
+ left in the EGL_STREAM_STATE_EMPTY_KHR state until new frames are
+ produced.
+
+Add a new section to "3.10.5 EGLStream operation"
+
+ 3.10.5.x EGLStream reset
+
+ For resource management or safety reasons, it may be necessary to
+ invalidate and reclaim frames pending in the stream. This is only
+ possible if the stream's EGL_SUPPORT_RESET_NV attribute is set to
+ EGL_TRUE.
+
+ Stream resets cause any unconsumed image frames waiting in the
+ stream to be immediately discarded, and place the stream in the
+ EGL_STREAM_STATE_EMPTY_KHR state. Frames currently held by the
+ consumer are not immediately affected, but will be discarded once
+ released, even if the stream would normally hold old frames for
+ reuse. After the reset, new frames inserted by the producer are
+ processed normally.
+
+ Stream resets may be issued by some producers as described in their
+ specifications, and may also be triggered by the application calling
+
+ EGLBoolean eglResetStreamNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream)
+
+ On success, EGL_TRUE is returned and a reset of the stream is
+ initiated. On failure, EGL_FALSE is returned and an error is
+ generated.
+
+ - EGL_BAD_DISPLAY is generated if <dpy> is not a valid
+ EGLDisplay.
+
+ - EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
+
+ - EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
+ EGLStream created for <dpy>.
+
+ - EGL_BAD_STATE_KHR is generated if <stream> is in
+ EGL_STREAM_STATE_CREATED_KHR, EGL_STREAM_STATE_CONNECTING_KHR,
+ or EGL_STREAM_STATE_DISCONNECTED_KHR state.
+
+ - EGL_BAD_ACCESS is generated if <stream>'s
+ EGL_SUPPORT_RESET_NV attribute is not EGL_TRUE.
+
+ If a stream is already in the EGL_STREAM_STATE_EMPTY_KHR state, a
+ reset will have no effect.
+
+If EGL_KHR_stream_cross_process_fd or EGL_NV_stream_remote is present,
+add to the list of errors above
+
+ - EGL_BAD_ACCESS is generated if <stream> represents the
+ consumer endpoint of a stream whose producer endpoint is
+ represented by a different EGLStreamKHR handle (e.g. for
+ cross-process streams).
+
+If EGL_KHR_stream_consumer_gltexture is supported, modify the first
+sentence of the fifth paragraph of the description of
+eglStreamConsumerAcquireKHR
+
+ If the producer has not inserted any new image frames since the
+ last call to eglStreamConsumerAcquireKHR, and the stream has been
+ reset or does not support reuse of frames, then
+ eglStreamConsumerAcquireKHR will fail. If it has not been reset and
+ reuse is supported, then eglStreamConsumerAcquireKHR will "latch"
+ the same image frame it latched last time
+ eglStreamConsumerAcquireKHR was called.
+
+If EGL_EXT_stream_consumer_egloutput is supported, add to the
+description if eglStreamConsumerOutputEXT
+
+ If the stream is reset to the EGL_STREAM_STATE_EMPTY_KHR state, any
+ currently displayed frame will be released, and the displayed image
+ will be reset to some default state determined by the display
+ hardware and the implementation. Possible behavior includes, but is
+ not limited to, displaying a black screen, displaying a default
+ splash screen, displaying a "no input" message, or powering off the
+ display. If and when the stream again enters the
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR state, processing of frames
+ will resume as described above.
+
+Issues
+
+ 1. When this extension is present, should all streams automatically
+ support resetting?
+
+ RESOLVED: No. Applications which are not aware of this extension
+ may not be prepared to handle an unexpected return to the EMPTY
+ state. Therefore support for this feature must be explicitly
+ requested.
+
+Revision History
+
+ #6 (October 27, 2016) Daniel Kartch
+ - Clean up for publication
+
+ #5 (July 23rd, 2015) Daniel Kartch
+ - Added interaction with cross-process streams.
+
+ #4 (July 22nd, 2015) Daniel Kartch
+ - Added enum values.
+
+ #3 (July 20th, 2015) Daniel Kartch
+ - Changed to NV specification
+ - Removed flush option from eglResetStream. Resetting will
+ always flush pending frames.
+ - Added EGL_SUPPORT_REUSE_NV flag to control whether released
+ frames are saved or discarded immediately.
+ - Removed reference to unpublished stream_sequence extension.
+
+ #2 (August 21th, 2014) Daniel Kartch
+ - Added paragraph to indicate that producers do not impose
+ restrictions on use of reset.
+ - Clarified consumer behavior on reset.
+ - Added interactions with GL texture and EGLOutput consumers.
+
+ #1 (August 12th, 2014) Daniel Kartch
+ - Initial draft
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_socket.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_socket.txt
new file mode 100644
index 0000000..2d5e209
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_socket.txt
@@ -0,0 +1,229 @@
+Name
+
+ NV_stream_socket
+ NV_stream_socket_unix
+ NV_stream_socket_inet
+
+Name Strings
+
+ EGL_NV_stream_socket
+ EGL_NV_stream_socket_unix
+ EGL_NV_stream_socket_inet
+
+Contributors
+
+ Daniel Kartch
+ Bogdan Naodovic
+ James Jones
+ Zander Clucas
+ Tarun Bansal
+
+Contacts
+
+ Daniel Kartch, NVIDIA (dkartch 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 6 - October 27, 2016
+
+Number
+
+ EGL Extension #115
+
+Extension Type
+
+ EGL display extension
+
+Dependencies
+
+ EGL_NV_stream_socket requires EGL_NV_stream_remote.
+
+ EGL_NV_stream_socket_unix requires EGL_NV_stream_socket.
+
+ EGL_NV_stream_socket_inet requires EGL_NV_stream_socket.
+
+Overview
+
+ These extensions build on the framework for remote streams provided
+ in EGL_NV_stream_remote to define a means for two EGLStream objects
+ representing opposite ends of a single stream to establish
+ communication using a socket. The application is expected to create
+ and connnect both ends of the socket before creating the stream
+ objects.
+
+ The base EGL_NV_stream_socket extension defines most of the
+ attributes required to initialize the stream objects. The
+ EGL_NV_stream_socket_unix and EGL_NV_stream_socket_inet extensions
+ indicate support for UNIX domain and internet protocol socket types,
+ respectively. Additional extensions may provide support for other
+ socket types. The type of socket is important, as certain operations
+ are only available with certain types, which may influence how the
+ streams are implemented. For instance, UNIX domain sockets allow
+ file descriptors to be passed between processes, while internet
+ protocol sockets do not. This ability may allow more efficient
+ sharing of resources between the socket endpoints.
+
+ An application using this extension will bear some similarity to the
+ example code from the EGL_KHR_stream_cross_process_fd extension,
+ which also uses sockets to establish the communication between two
+ processes and then create a pair of EGLStream objects. The key
+ difference is that in that case, the sockets are merely a temporary
+ means to an end to pass a file descriptor between the processes.
+ Once that is accomplished, the sockets are discarded.
+
+ The file descriptor used by that extension may represent an
+ underlying object such as shared memory which allows more efficient
+ communication than the sockets themselves. However, there is nothing
+ preventing an implementation of EGL_NV_stream_socket from creating
+ and passing such a file descriptor as well, gaining the same
+ efficiency. Therefore, a protocol based on sockets will work at
+ least as well as one based on file descriptors, with the added
+ benefit of being more portable.
+
+New Types
+
+ None
+
+New Functions
+
+ None
+
+New Tokens for EGL_NV_stream_socket
+
+ Accepted by eglCreateStreamKHR and returned by eglQueryStreamKHR
+ when attribute is EGL_STREAM_PROTOCOL_NV:
+
+ EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+
+ Accepted as attribute names by eglCreateStreamKHR and
+ eglQueryStreamKHR functions
+
+ EGL_SOCKET_HANDLE_NV 0x324C
+ EGL_SOCKET_TYPE_NV 0x324D
+
+New Tokens for EGL_NV_stream_socket_unix
+
+ Accepted by eglCreateStreamKHR and returned by eglQueryStreamKHR
+ when attribute is EGL_SOCKET_TYPE_NV:
+
+ EGL_SOCKET_TYPE_UNIX_NV 0x324E
+
+New Tokens for EGL_NV_stream_socket_inet
+
+ Accepted by eglCreateStreamKHR and returned by eglQueryStreamKHR
+ when attribute is EGL_SOCKET_TYPE_NV:
+
+ EGL_SOCKET_TYPE_INET_NV 0x324F
+
+Add to list of failures in section "3.10.1 Creating an EGLStream" in EGL_KHR stream:
+
+ - EGL_BAD_MATCH is generated if the value of EGL_STREAM_PROTOCOL_NV
+ is EGL_STREAM_PROTOCOL_SOCKET_NV and values are not provided for
+ EGL_SOCKET_HANDLE_NV and EGL_SOCKET_TYPE_NV.
+
+Add to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream:
+
+ Attribute Read/Write Type Section
+ -------------------------- ---------- ------ ----------
+ EGL_SOCKET_HANDLE_NV io EGLint 3.10.4.y
+ EGL_SOCKET_TYPE_NV io EGLint 3.10.4.y+1
+
+In section "3.10.4.x+1 EGL_STREAM_PROTOCOL_NV Attribute" of
+EGL_NV_stream_remote, add EGL_STREAM_PROTOCOL_SOCKET_NV to the list of
+legal values and add
+
+ A value of EGL_STREAM_PROTOCOL_SOCKET_NV indicates that the stream
+ is a remote stream whose communication is established using a socket
+ connection provided by the application. The details of the messages
+ passed through the socket are implementation dependent, and may be
+ influenced by the stream and socket types. This value for the
+ EGL_STREAM_PROTOCOL_NV attribute is compatible with values of
+ EGL_STREAM_CROSS_OBJECT_NV, EGL_STREAM_CROSS_DISPLAY_NV,
+ EGL_STREAM_CROSS_PROCESS_NV, and EGL_STREAM_CROSS_PARTITION_NV for
+ the EGL_STREAM_TYPE_NV attribute.
+
+Add new subsections to the end of section "3.10.4 EGLStream Attributes"
+in EGL_KHR_stream:
+
+ 3.10.4.y EGL_SOCKET_HANDLE_NV Attribute
+
+ The EGL_SOCKET_HANDLE_NV attribute may be set when the stream
+ is created, and provides the handle to a blocking socket which will
+ be used to communicate with the other endpoint of the stream. If the
+ value of EGL_STREAM_PROTOCOL_NV is not EGL_STREAM_PROTOCOL_SOCKET_NV,
+ this attribute is ignored.
+
+ The type of this value is operating system dependent, and the
+ default value will be an invalid socket handle for the operating
+ system. In particular, for unix-like operating systems, the value is
+ a socket file descriptor as returned by socket() and related
+ functions, and the default value is -1.
+
+ Prior to creating the EGLStream object, the application may use the
+ socket handle as it wishes. But once the EGLStream object has been
+ successfully created, it assumes full ownership of this socket. If
+ the application subsequently writes to, reads from, or closes the
+ socket, undefined behavior will result. Furthermore, if any data
+ sent over the socket prior to creating the EGLStream object is not
+ consumed before the opposite EGLStream object is created, undefined
+ behavior will result.
+
+ When the EGLStream object is deleted, the socket handle will be
+ closed by the stream.
+
+ 3.10.4.y+1 EGL_SOCKET_TYPE_NV Attribute
+
+ The EGL_SOCKET_TYPE_NV attribute may be set when the stream is
+ created, and indicates the type of the socket provided by the
+ EGL_STREAM_SOCKET_HANDLE_NV attribute. If the value of
+ EGL_STREAM_PROTOCOL_NV is not EGL_STREAM_PROTOCOL_SOCKET_NV this
+ attribute is ignored.
+
+ The default value is EGL_NONE.
+
+If EGL_NV_stream_socket_unix is present, add to section "3.10.4.y+1
+EGL_SOCKET_TYPE_NV Attribute" above:
+
+ A value of EGL_SOCKET_TYPE_UNIX_NV indicates that the socket handle
+ represents a Unix domain socket, created with SOCK_STREAM type.
+
+If EGL_NV_stream_socket_inet is present, add to section "3.10.4.y+1
+EGL_SOCKET_TYPE_NV Attribute" above:
+
+ A value of EGL_SOCKET_TYPE_INET_NV indicates that the socket handle
+ represents an internet protocol socket, created with SOCK_STREAM
+ type.
+
+Issues
+
+ None
+
+Revision History
+
+ #6 (October 27, 2016) Daniel Kartch
+ - Indicate that the socket handle provided should represent
+ a blocking socket.
+
+ #5 (June 7, 2016) Daniel Kartch
+ - Add contact and clean up in preparation for publication.
+
+ #4 (September 16, 2015) Zander Clucas
+ - Indicated STREAM_SOCKET_PROTOCOL as compatible with socket
+ type CROSS_PROCESS.
+
+ #3 (December 16, 2014) Daniel Kartch
+ - Refined overview to clarify comparison with
+ EGL_KHR_cross_process_fd.
+ - Indicated SOCK_STREAM as a requirement for the socket types.
+
+ #2 (December 11, 2014) Daniel Kartch
+ - Rewrote as NV draft for earlier release.
+ - Reserved enum values.
+
+ #1 (October 10, 2014) Daniel Kartch
+ - Initial EXT draft
+
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_sync.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_sync.txt
new file mode 100644
index 0000000..5604c4d
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_stream_sync.txt
@@ -0,0 +1,198 @@
+Name
+
+ NV_stream_sync
+
+Name Strings
+
+ EGL_NV_stream_sync
+
+Contributors
+
+ Acorn Pooley
+ Marcus Lorentzon
+
+Contacts
+
+ Ian Stewart, NVIDIA (istewart 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 6, June 5, 2012
+
+Number
+
+ EGL Extension #56
+
+Dependencies
+
+ Requires EGL 1.2.
+ Requires EGL_KHR_stream extension
+ Requires EGL_KHR_reusable_sync
+
+ This extension is written based on the wording of the EGL 1.2
+ specification.
+
+Overview
+
+ This extension defines a new type of reusable sync object. This
+ sync object will be signaled each time a new image frame becomes
+ available in an EGLStream for the consumer to consume.
+
+New functions
+
+ EGLSyncKHR eglCreateStreamSyncNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+New Tokens
+
+ Accepted by the <type> parameter of eglCreateSyncKHR, and returned
+ in <value> when eglGetSyncAttribKHR is called with <attribute>
+ EGL_SYNC_TYPE_KHR:
+
+ EGL_SYNC_NEW_FRAME_NV 0x321F
+
+
+Add a new paragraph to section "3.8.1 Sync Objects" in the
+EGL_KHR_reusable_sync extension, just before the paragraph that
+mentions the eglClientWaitSyncKHR function:
+
+ The command
+
+ EGLSyncKHR eglCreateStreamSyncNV(
+ EGLDisplay dpy,
+ EGLStreamKHR stream,
+ EGLenum type,
+ const EGLint *attrib_list);
+
+ creates a sync object of the specified <type> associated with the
+ specified display <dpy> and the specified EGLStream <stream>, and
+ returns a handle to the new object. <attrib_list> is an
+ attribute-value list specifying other attributes of the sync
+ object, terminated by an attribute entry EGL_NONE. Attributes not
+ specified in the list will be assigned their default values. The
+ state of <stream> must not be EGL_STREAM_STATE_CREATED_KHR or
+ EGL_STREAM_STATE_DISCONNECTED_KHR.
+
+ If <type> is EGL_SYNC_NEW_FRAME_NV, a stream-new-frame reusable
+ sync object is created. In this case <attrib_list> must be NULL or
+ empty (containing only EGL_NONE). Attributes of the reusable
+ stream-new-frame sync object are set as follows:
+
+ Attribute Name Initial Attribute Value(s)
+ --------------- --------------------------
+ EGL_SYNC_TYPE_KHR EGL_SYNC_NEW_FRAME_NV
+ EGL_SYNC_STATUS_KHR EGL_UNSIGNALED_KHR
+
+ Any time the state of <stream> transitions to
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR (from any other state),
+ the returned stream-new-frame reusable sync object is signaled.
+ (This effectively means the sync object will become signaled
+ whenever the producer inserts a new image frame into the
+ EGLStream.)
+
+ EGL does not automatically unsignal the stream-new-frame reusable
+ sync object. Generally applications will want to unsignal the
+ sync object after it has been signaled so that the availability
+ of the next frame can
+ be detected.
+
+ Errors
+ ------
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
+ generated.
+ * If <attrib_list> is neither NULL nor empty (containing only
+ EGL_NONE), EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE
+ error is generated.
+ * If <stream> is not a valid EGLStream created for <dpy>,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_STREAM error is
+ generated.
+ * If <stream>'s state is EGL_STREAM_STATE_CREATED_KHR or
+ EGL_STREAM_STATE_DISCONNECTED_KHR then EGL_NO_SYNC_KHR is
+ returned and an EGL_BAD_ACCESS error is generated.
+ * If a sync object of <type> has already been created for
+ <stream> (and not destroyed), EGL_NO_SYNC_KHR is returned and
+ an EGL_BAD_ACCESS error is generated.
+ * If <type> is not a supported type of stream sync object,
+ EGL_NO_SYNC_KHR is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+Issues
+ 1. Is this extension useful, or does the built in blocking
+ behavior of the consumer described by the
+ EGL_NV_stream_consumer_gltexture extension render this
+ un-useful?
+
+ RESOLVED: Yes. It is useful to have a thread waiting on the
+ signal.
+
+ 2. Does EGL automatically unsignal the sync object?
+
+ RESOLVED: No. After the sync object has been signaled, it is
+ up to the application to unsignal it before waiting on it
+ again. It is important to check for the availability of
+ another frame by querying EGL_PRODUCER_FRAME_KHR after
+ unsignaling the sync object and before waiting on the sync
+ object to prevent a race condition. This can be done using
+ the following code:
+
+ void ConsumeFrames(EGLDisplay dpy, EGLStreamKHR stream)
+ {
+ EGLuint64KHR last_frame = 0;
+ EGLuint64KHR new_frame = 0;
+ EGLSyncKHR sync;
+
+ sync = eglCreateStreamSyncNV(dpy,
+ stream,
+ EGL_SYNC_NEW_FRAME_NV,
+ 0);
+
+ for(;;) {
+ eglSignalSyncKHR(dpy, sync, EGL_UNSIGNALED_KHR);
+ eglQueryStreamu64KHR(dpy,
+ stream,
+ EGL_PRODUCER_FRAME_KHR,
+ &new_frame);
+ if (new_frame != last_frame) {
+ last_frame = new_frame;
+ ConsumeNewFrame(stream);
+ } else {
+ eglClientWaitSyncKHR(dpy, sync, 0, EGL_FOREVER_KHR);
+ }
+ }
+ }
+
+Revision History
+
+ #7 (July 10, 2013) Jon Leech
+ - Fix spelling of 'signalled' -> 'signaled' and assign extension
+ number for publication.
+
+ #6 (June 5, 2012) Acorn Pooley
+ - Add error if stream is in state EGL_STREAM_STATE_CREATED_KHR
+ or EGL_STREAM_STATE_DISCONNECTED_KHR when sync is created.
+
+ #5 (September 30, 2011) Acorn Pooley
+ - Change eglCreateStreamSyncKHR to eglCreateStreamSyncNV
+
+ #4 (September 28, 2011) Acorn Pooley
+ - Add issue 2
+ - Fix return type of eglCreateStreamSyncNV
+
+ #3 (September 27, 2011) Acorn Pooley
+ - Assign enum values (bug 8064)
+
+ #2 (July 6, 2011) Acorn Pooley
+ - Rename EGL_KHR_image_stream to EGL_KHR_stream
+
+ #1 (June 30, 2011) Acorn Pooley
+ - Initial draft
+
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_sync.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_sync.txt
new file mode 100644
index 0000000..0bf0077
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_sync.txt
@@ -0,0 +1,554 @@
+Name
+
+ NV_sync
+
+Name Strings
+
+ EGL_NV_sync
+
+Contributors
+
+ Gary King
+ Gregory Prisament
+ Acorn Pooley
+ Jon Leech
+
+Contacts
+
+ Acorn Pooley, NVIDIA Corporation (apooley 'at' nvidia.com)
+ Gary King, NVIDIA Corporation (gking 'at' nvidia.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 7, July 27, 2010
+
+Number
+
+ EGL Extension #19
+
+Dependencies
+
+ Requires EGL 1.1
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension introduces the concept of "sync objects" into EGL.
+ Sync objects are a synchronization primitive, representing events
+ whose completion can be tested or waited upon. This extension
+ borrows heavily from the GL_ARB_sync extension, and like that
+ extension, introduces only a single type of sync object, the
+ "fence sync object." Additional types of sync objects may be
+ introduced in later extensions.
+
+ Fence sync objects have corresponding fences, which are inserted
+ into client API command streams. A sync object can be queried
+ for a given condition, such as completion of the corresponding
+ fence. Fence completion allows applications to request a partial
+ Finish of an API command stream, wherein all commands issued in
+ a particular client API context will be forced to complete before
+ control is returned to the calling thread.
+
+ This extension is nearly identical to NVIDIA's original proposal for the
+ EGL_KHR_sync extension, which some minor differences outlined in Issue 7
+ below.
+
+New Types
+
+ /*
+ * EGLSyncNV is an opaque handle to an EGL sync object
+ */
+ typedef void* EGLSyncNV;
+
+ /*
+ * EGLTimeNV is a 64-bit unsigned integer representing intervals in
+ * nanoseconds (unadjusted standard time). A type defined in the
+ * standard Khronos <KHR/khrplatform.h> header is used instead of
+ * a less-portable native C type.
+ */
+ #include <KHR/khrplatform.h>
+ typedef khronos_utime_nanoseconds_t EGLTimeNV;
+
+New Procedures and Functions
+
+ EGLSyncNV eglCreateFenceSyncNV( EGLDisplay dpy,
+ EGLenum condition,
+ const EGLint *attrib_list );
+
+ EGLBoolean eglDestroySyncNV( EGLSyncNV sync );
+
+ EGLBoolean eglFenceNV( EGLSyncNV sync );
+
+ EGLint eglClientWaitSyncNV( EGLSyncNV sync,
+ EGLint flags, EGLTimeNV timeout );
+
+ EGLBoolean eglSignalSyncNV( EGLSyncNV sync, EGLenum mode );
+
+ EGLBoolean eglGetSyncAttribNV( EGLSyncNV sync, EGLint attribute,
+ EGLint *value );
+
+
+New Tokens
+
+ Accepted in the <condition> parameter of eglCreateFenceSyncNV, and
+ returned in <value> when eglGetSyncAttribNV is called with <attribute>
+ EGL_SYNC_CONDITION_NV:
+
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+
+ Accepted as an attribute name in the <attrib_list> parameter of
+ eglCreateFenceSyncNV, and by the <attribute> parameter of
+ eglGetSyncAttribNV:
+
+ EGL_SYNC_STATUS_NV 0x30E7
+
+ Accepted as an attribute value in the <attrib_list> parameter of
+ eglCreateFenceSyncNV for the EGL_SYNC_STATUS_NV attribute, by
+ the <mode> parameter of eglSignalSyncNV and returned in <value>
+ when eglGetSyncAttribNV is called with <attribute>
+ EGL_SYNC_STATUS_NV:
+
+ EGL_SIGNALED_NV 0x30E8
+ EGL_UNSIGNALED_NV 0x30E9
+
+ Accepted in the <flags> parameter of eglClientWaitSyncNV:
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+
+ Accepted in the <timeout> parameter of eglClientWaitSyncNV:
+
+ EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
+
+ Returned by eglClientWaitSyncNV:
+
+ EGL_ALREADY_SIGNALED_NV 0x30EA
+ EGL_TIMEOUT_EXPIRED_NV 0x30EB
+ EGL_CONDITION_SATISFIED_NV 0x30EC
+
+ Accepted in the <attribute> parameter of eglGetSyncAttribNV:
+
+ EGL_SYNC_TYPE_NV 0x30ED
+ EGL_SYNC_CONDITION_NV 0x30EE
+
+ Returned in <value> when eglGetSyncAttribNV is called with
+ <attribute> EGL_SYNC_TYPE_NV:
+
+ EGL_SYNC_FENCE_NV 0x30EF
+
+ Returned by eglCreateFenceSyncNV in the event of an error:
+
+ EGL_NO_SYNC_NV ((EGLSyncNV)0)
+
+
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add a new subsection at the end of Section 3.8, page 43
+ (Synchronization Primitives)
+
+ "3.8.1 Sync Objects
+ In addition to the aforementioned synchronization functions, which
+ provide an efficient means of serializing client and native API
+ operations within a thread, "Sync Objects" are provided to enable
+ synchronization of client API operations between threads and/or between
+ API contexts. Sync objects may be tested or waited upon by application
+ threads.
+
+ Sync objects have a status with two possible states: <signaled> and
+ <unsignaled>. Events may be associated with a sync object. When an
+ event is initially associated with a sync object, the object is
+ unsignaled (its status is set to unsignaled). Once a sync object has
+ been created, EGL may be asked to wait for a sync object to become
+ signaled. Sync objects may also be signaled or unsignaled explicitly.
+ Sync objects are associated with an EGLDisplay; this association
+ is made when the sync object is created.
+
+ Only one type of sync object is defined, the fence sync object, whose
+ associated events are triggered by fence commands which are inserted
+ into the command streams of client API contexts. Fence sync objects may
+ be used to wait for partial completion of a client API command stream,
+ as a more flexible form of glFinish / vgFinish.
+
+ The command
+
+ EGLSyncNV eglCreateFenceSyncNV( EGLDisplay dpy,
+ enum condition,
+ EGLint *attrib_list );
+
+ creates a fence sync object for the specified display <dpy> and returns
+ a handle to the new object. The sync object is assigned a type of
+ EGL_SYNC_FENCE_NV. <condition> must be
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV. <attrib_list> is an attribute-value
+ list specifying other attributes of the sync object, terminated by an
+ attribute entry EGL_NONE. Attributes not specified in the list will be
+ assigned their default values. Attributes accepted by fence sync objects
+ are listed in table 3.aa
+
+ Attribute Name Attribute Value(s) Default Value
+ --------------- ------------------------------------ --------------
+ EGL_SYNC_STATUS_NV EGL_SIGNALED_NV, EGL_UNSIGNALED_NV EGL_SIGNALED_NV
+
+ Table 3.aa Fence Sync Object Attributes
+
+ * If <dpy> is not the name of a valid, initialized EGLDisplay,
+ EGL_NO_SYNC_NV is returned and an EGL_BAD_DISPLAY error is generated.
+
+ * If <condition> is not EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV,
+ EGL_NO_SYNC_NV is returned and an EGL_BAD_PARAMETER error is generated.
+
+ * If any attribute not appearing in table 3.?? is specified in
+ <attrib_list>, EGL_NO_SYNC_NV is returned and an EGL_BAD_ATTRIBUTE error is
+ generated.
+
+
+ The command
+
+ EGLBoolean eglFenceNV( EGLSyncNV sync );
+
+ inserts a fence command into the command stream of the bound API's current
+ context (i.e., the context returned by eglGetCurrentContext), and
+ assoicates it with sync object <sync>. <sync> must be a sync object
+ created with eglCreateFenceSyncNV, and the display associated with <sync>
+ must match the current display (i.e., the display returned by
+ eglGetCurrentDisplay). Calling eglFenceNV unsignals <sync>.
+
+ When the condition of <sync> is satisfied by the fence command, <sync> is
+ signaled by the associated client API context, causing any
+ eglClientWaitSyncNV commands (see below) blocking on <sync> to unblock.
+ The condition EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV is satisfied by completion
+ of the fence command corresponding to the sync object, and all preceding
+ commands in the associated client API context's command stream. <sync>
+ will not be signaled until all effects from these commands on the client
+ API's internal and framebuffer state are fully realized. No other state
+ is affected by execution of the fence command.
+
+ Multiple fence commands may be inserted in any client API command stream
+ for a single sync object. The sync object is unsignaled every time a new
+ fence command is issued, and signaled every time a previous fence command
+ completes, so its status is indeterminate until all fence commands
+ associated with the sync object have completed. However, each time a fence
+ command completes (signaling the sync object), at least one
+ eglClientWaitSyncNV command blocking on that sync object will unblock.
+
+ EGL_TRUE is returned upon successful insertion of the fence command.
+
+ * If <sync> is not a valid sync object with a type of EGL_SYNC_FENCE_NV,
+ EGL_FALSE is returned and an EGL_BAD_PARAMETER error is generated.
+
+ * If the display associated with <sync> does not match the current
+ display, EGL_FALSE is returned and an EGL_BAD_MATCH error is generated.
+
+ * If no context is current for the bound API (i.e., eglGetCurrentContext
+ returns EGL_NO_CONTEXT), EGL_FALSE is returned and an EGL_BAD_MATCH error
+ is generated.
+
+ The command
+
+ EGLint eglClientWaitSyncNV( EGLSyncNV sync, uint flags,
+ EGLTimeNV timeout );
+
+ blocks the calling thread until the specified sync object <sync> is
+ signaled, or until a specified timeout value expires. If <sync> is
+ signaled at the time eglClientWaitSyncNV is called then eglClientWaitSyncNV
+ will not block. If <sync> is unsignaled at the time eglClientWaitSyncNV is
+ called then eglClientWaitSyncNV will wait up to <timeout> nanoseconds for
+ <sync> to become signaled.
+
+ If the value of <timeout> is zero, then eglClientWaitSyncNV will never
+ block and simply tests the current status of <sync>. If the value of
+ <timeout> is the special value EGL_FOREVER_NV then eglClientWaitSyncNV
+ does not time out.
+
+ eglClientWaitSyncNV returns one of three status values describing the
+ reason for returning. A return value of EGL_ALREADY_SIGNALED_NV will
+ always be returned if <sync> was signaled when eglClientWaitSyncNV was
+ called, even if <timeout> is zero. A return value of
+ EGL_TIMEOUT_EXPIRED_NV indicates that indicates that the specified
+ timeout period expired before <sync> was signaled. A return value of
+ EGL_CONDITION_SATISFIED_NV indicates that <sync> was signaled before
+ the timeout expired.
+
+ Note that a fence sync object can be in the signaled state because one of
+ three events has occured:
+
+ 1. A previously inserte fence has completed and has signaled the sync
+ object.
+ 2. The sync object was created. Creation of a sync object sets it in the
+ signaled state by default, unless the attribute EGL_SYNC_STATUS_NV
+ is set to EGL_UNSIGNALED_NV in the attribute list.
+ 3. The sync object was signaled by a previously issued
+ eglSignalSyncNV(sync, EGL_SIGNALED_NV) command.
+
+ If the sync object being blocked upon will not be signaled in finite time
+ (for example, by an associated fence command issued previously, but not
+ yet flushed to the graphics pipeline), then eglClientWaitSyncNV may
+ wait forever. To help prevent this behavior (footnote1), if the
+ EGL_SYNC_FLUSH_COMMANDS_BIT_NV bit is set in <flags>, and <sync> is
+ unsignaled when eglClientWaitSyncNV is called, then the equivalent of
+ Flush() will be performed for the current API context (i.e., the context
+ returned by eglGetCurrentContext()) before blocking on <sync>. If no
+ context is current for the bound API, the EGL_SYNC_FLUSH_COMMANDS_BIT_NV
+ bit is ignored.
+
+ (footnote 1): The simple Flush behavior defined by
+ EGL_SYNC_FLUSH_COMMANDS_BIT_NV will not help when waiting for a fence
+ command issued in a different context's command stream. Applications
+ which block on a fence sync object must take additional steps to ensure
+ that the context from which the associated fence command was issued
+ has flushed that command to the graphics pipeline.
+
+ If a sync object is deleted when an eglClientWaitSyncNV is blocking on
+ that object, the behavior of eglClientWaitSyncNV is undefined. Some
+ possible behaviors are to return immediately, to wait for fence commands
+ associated with the deleted sync to complete, or to not return until the
+ timeout period expires.
+
+ * If <sync> is not a valid sync object, EGL_FALSE is returned and an
+ EGL_BAD_PARAMETER error is generated.
+
+
+ The command
+
+ EGLBoolean eglSignalSyncNV( EGLSyncNV sync, enum mode );
+
+ signals or unsignals the sync object <sync> by changing its status to
+ <mode>, which must be one of the values in table 3.bb. If, as a
+ result of calling eglSignalSyncNV, the status of <sync> transitions
+ from unsignaled to signaled, then at least one eglClientWaitSyncNV
+ commands blocking on <sync> will unblock.
+
+ Assuming no errors are generated, EGL_TRUE is returned.
+
+ Mode Effect
+ ------------------ -------------
+ EGL_SIGNALED_NV Set the status of <sync> to signaled
+ EGL_UNSIGNALED_NV Set the status of <sync> to unsignaled
+
+ Table 3.bb Modes Accepted by eglSignalSyncNV Command
+
+ * If <sync> is not a valid sync object, EGL_FALSE is returned and an
+ EGL_BAD_PARAMETER error is generated.
+
+
+ The command
+
+ EGLBoolean eglGetSyncAttribNV( EGLSyncNV sync, EGLint attribute,
+ EGLint *value );
+
+ is used to query attributes of the sync object <sync>. Legal values for
+ <attribute> depend on the type of sync object; these are listed in table 3.cc.
+ Assuming no errors are generated, EGL_TRUE is returned and the value of
+ the queried attribute is returned in <value>.
+
+ Attribute Description Supported Sync Objects
+ ----------------- ----------------------- ---------------------
+ EGL_SYNC_TYPE_NV Type of the sync object All
+ EGL_SYNC_STATUS_NV Status of the sync object All
+ EGL_SYNC_CONDITION_NV Signaling condition EGL_SYNC_FENCE_NV
+
+ * If <sync> is not a valid sync object, EGL_FALSE is returned and an
+ EGL_BAD_PARAMETER error is generated.
+
+ The command
+
+ EGLBoolean eglDestroySyncNV( EGLSyncNV sync );
+
+ is used to destroy an existing sync object. If any eglClientWaitSyncNV
+ commands are blocking on <sync> when eglDestroySyncNV is called, their
+ behavior is undefined. After calling eglDestroySyncNV, <sync> is no
+ longer a valid sync object. Assuming no errors are generated, EGL_TRUE
+ is returned.
+
+ * If <sync> is not a valid sync object, EGL_FALSE is returned and an
+ EGL_BAD_PARAMETER error is generated.
+
+Issues
+
+ 1. Explain the key choices made in this extension.
+
+ RESPONSE: This extension has been written to enable adoption to be as wide
+ as possible, and to behave as similarly as possible to synchronization
+ primitives available in desktop OpenGL (e.g., NV_fence, ARB_sync).
+
+ In the interest of enabling widespread adoption, this extension (following
+ the ARB_sync model) has foregone the inclusion of synchronization primitives
+ and synchronization tests which may be performed entirely inside client
+ API command streams, instead performing synchronization tests
+ (eglClientWaitSyncNV) inside the application & host CPU.
+
+ In the interest of maintaining similarity with previous synchronization
+ primitives, this extension attempts to copy the ARB_sync specification
+ wherever possible (both functionally and stylistically), only making
+ changes where needed to operate inside EGL (rather than a client API
+ context) and match EGL naming conventions.
+
+ 2. Why place this behavior in EGL, rather than in the client APIs?
+
+ RESPONSE: Ultimately, synchronization between multiple asynchronous client
+ API contexts (potentially executing in different threads) is a problem
+ which affects or will affect all EGL client APIs. Rather than creating
+ separate synchronization primitives in each of the client APIs (and then
+ wrapping them in an EGL container), in the interest of developer simplicity
+ & consistency this behavior is being placed inside EGL.
+
+ 3. What does this extension provide that can not be accomplished with the
+ existing, more efficient eglWaitClient and eglWaitNative API functions?
+
+ RESPONSE: eglWaitClient and eglWaitNative may be implemented in extremely
+ lightweight manners, in some cases not blocking the calling thread at
+ all; however, they can not be used to synchronize between client API
+ contexts and native APIs executing in separate threads (or simply between
+ client API contexts executing in separate threads), such as between a
+ thread with an active OpenGL context and a second thread performing
+ video decode.
+
+ 4. What does this extension provide that could not be accomplished with
+ native platform synchronization primitives and the existing client API
+ Finish commands?
+
+ RESPONSE: This extension provides a lighter-weight mechanism for
+ synchronizing an application with client API command streams than the
+ all-or-nothing Finish commands, enabling applications to block until
+ a subset of issued client API commands have completed.
+
+ 5. Should integration with native platform synchronization objects be
+ included in this extension, or reserved for future (platform-specific)
+ extensions?
+
+ RESOLVED: Integration with native platform synchronization objects should
+ not be part of this extension, but can be added as future layered
+ extensions if needed. These layered extensions can be platform-specific,
+ or perhaps OpenKODE based.
+
+ Originally, this extension included the ability to create native platform
+ synchronization objects from EGLSync objects. This feature was removed
+ for a few reasons:
+
+ i) The proposed mechanism suggested mapping EGLSync objects to pthread
+ conditional variables on platforms with pthread support. However,
+ pthread conditional variables require an associated mutex and there
+ was no mechanism to relay this associated mutex to the application.
+
+ ii) On certain platforms support for converting to native platform
+ synchronization objects adds great complexity to the implementation.
+
+ iii) Now that OpenKODE is more mature, it would be better to allow
+ conversion from EGLSyncNV objects to OpenKODE synchronization
+ primitives rather than platform-specific ones. We suggest that this
+ functionality, if needed, be added as a layered extension instead of
+ being included here. This way, EGL_NV_sync remains minimal and easy
+ to implement on a variety of platforms.
+
+ 6. Please provide a more detailed description of how ClientWaitSyncNV
+ behaves.
+
+ RESPONSE: Issue 18 in the ARB_sync specification includes a very
+ detailed description of ClientWaitSyncARB (the ARB_sync equivalent of
+ ClientWaitSyncNV). This is provided (unmodified) below:
+
+ Does ClientWaitSyncARB wait on an event, or on sync object
+ status? What is the meaning of sync object status?
+
+ RESOLVED: ClientWaitSyncARB blocks until the status of the sync
+ object transitions to the signaled state. Sync object status is
+ either signaled or unsignaled. More detailed rules describing
+ signalling follow (these need to be imbedded into the actual
+ spec language):
+
+ R1) A sync object has two possible status values: signaled or
+ unsignaled (corresponding to SYNC_STATUS_ARB values of
+ SIGNALED_ARB or UNSIGNALED_ARB, respectively).
+
+ R2) When created, the state of the sync object is signaled by
+ default, but may be explicitly set to unsignaled.
+
+ R3) A fence command is inserted into a command stream. A sync
+ object is not.
+
+ R4) When a fence command is inserted into a command stream using
+ FenceARB(), the status of the sync object associated with
+ that fence command is set to the unsignaled state.
+
+ R5) Multiple fence commands can be associated with the same sync
+ object.
+
+ R6) A fence command, once its condition has been met, will set
+ its associated sync object to the signaled state. The only
+ condition currently supported is
+ SYNC_PRIOR_COMMANDS_COMPLETE_ARB.
+
+ R7) A wait function, such as ClientWaitSyncARB, waits on a sync
+ object, not on a fence.
+
+ R8) A wait function, such as ClientWaitSyncARB, called on a sync
+ object in the unsignaled state will block. It unblocks
+ (note, not "returns to the application") when the sync
+ object transitions to the signaled state.
+
+ Some of the behaviors resulting from these rules are:
+
+ B1) Calling ClientWaitSyncARB with a timeout of 0 will return
+ TRUE if the sync object is in the signaled state. Note that
+ calling ClientWaitSyncARB with a timeout of 0 in a loop can
+ miss state transitions.
+ B2) Stacking fences is allowed. Each fence, once its condition
+ has been met, will set its associated sync object to the
+ signaled state. If the sync object is already in the
+ signaled state, it stays in that state.
+ B3) ClientWaitSyncARB could take a timeout parameter and return
+ a boolean. If the timeout period has expired,
+ ClientWaitSyncARB will unblock and return FALSE to the
+ caller. If ClientWaitSyncARB unblocks because the sync
+ object it was waiting on is in the signaled state, it will
+ return TRUE.
+ B4) We could define a FinishMultipleSync() command that will
+ unblock once all (or any) of the sync objects passed to it
+ are in the signaled state (also see issue 12).
+ B5) We could define a set/resetSyncObject function to manually
+ set the sync object in the signaled or unsignaled state.
+ This makes it easy for apps to reuse a sync object in the
+ multi-context case, so the sync object can be blocked upon
+ before a fence command is associated with it in the command
+ stream.
+ B6) We could define an API to convert a sync object into an OS
+ specific synchronization primitive (Events on Windows, file
+ descriptors or X-events or semaphores on Unix?)
+
+ 7) How does this extension differ from (relate to) EGL_KHR_sync:
+
+ RESPONSE:
+ As of the time of writing this, the EGL_KHR_sync specification has not
+ been finalized by Khronos and continues to undergo revision. However,
+ NVIDIA has the functionality outlined in this specification implemented
+ and has decided to make it available to developers immediately.
+
+ For the most part, EGL_KHR_sync is identical to revision 5 of EGL_KHR_sync
+ with the following changes:
+
+ a) Enum values are different
+ b) EGLTimeNV is unsigned long long instead of uint64_t.
+ c) Behaviour when there are multiple waiting threads is undefined.
+
+Revision History
+
+#7 (Jon Leech, July 27, 2010)
+ - Redefine EGLTimeNV type to use a typedef from the standard
+ Khronos headers instead of a native C type, for portability.
+#6 (Greg Prisament, May 28, 2009)
+ - Branch spec & turn it into an _NV extension.
+#5 (Greg Prisament, July 22, 2008)
+ - Removed NativeSyncKHR, CreateNativeSyncKHR, and corresponding wording.
+ - Correct EGLuint to EGLint (EGLuint doesn't exist).
+#4 (Jon Leech, November 20, 2007)
+ - Corrected 'enum' to 'EGLenum' in prototypes.
+#3 (Jon Leech, April 5, 2007)
+ - Added draft Status and TBD Number
+#2 (November 27, 2006)
+ - Changed OES token to KHR
+
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_system_time.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_system_time.txt
new file mode 100644
index 0000000..2f45147
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_system_time.txt
@@ -0,0 +1,99 @@
+Name
+
+ NV_system_time
+
+Name Strings
+
+ EGL_NV_system_time
+
+Contact
+
+ Jason Allen, NVIDIA Corporation (jallen 'at' nvidia.com)
+
+Status
+
+ TBD
+
+Version
+
+ Version 1, July 7, 2011
+
+Number
+
+ EGL Extension #31
+
+Dependencies
+
+ Requires EGL 1.2
+
+Overview
+
+ This extension exposes an alternative method of querying the system time
+ from the driver instead of the operating system.
+
+Issues
+
+ Add 64 bit types?
+
+ Yes, EGL doesn't support any 64 bit types so this extension adds int64
+ and uint64 types.
+
+New Types
+
+ EGLint64NV: 64bit signed integer
+ EGLuint64NV: 64bit unsigned integer
+
+New Procedures and Functions
+
+ EGLuint64NV eglGetSystemTimeFrequencyNV(void);
+ EGLuint64NV eglGetSystemTimeNV(void);
+
+New Tokens
+
+ None
+
+Description
+
+ The command:
+
+ EGLuint64NV eglGetSystemTimeFrequencyNV(void);
+
+ returns the frequency of the system timer, in counts per second. The
+ frequency will not change while the system is running.
+
+ The command:
+
+ EGLuint64NV eglGetSystemTimeNV(void);
+
+ returns the current value of the system timer. The system time in seconds
+ can be calculated by dividing the returned value by the frequency returned
+ by the eglGetSystemTimeFrequencyNV command.
+
+ Multiple calls to eglGetSystemTimeNV may return the same values, applications
+ need to be careful to avoid divide by zero errors when using the interval
+ calculated from successive eglGetSystemTimeNV calls.
+
+Usage Example
+
+ EGLuint64NV frequency = eglGetSystemTimeFrequencyNV();
+
+ loop
+ {
+ EGLuint64NV start = eglGetSystemTimeNV() / frequency;
+
+ // draw
+
+ EGLuint64NV end = eglGetSystemTimeNV() / frequency;
+
+ EGLuint64NV interval = end - start;
+ if (interval > 0)
+ update_animation(interval);
+
+ eglSwapBuffers(dpy, surface);
+ }
+
+Revision History
+
+#1 (Jon Leech, 2011/07/07)
+ - Add missing fields, assign extension number, and publish in the registry.
+
diff --git a/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt b/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt
new file mode 100644
index 0000000..72710b7
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt
@@ -0,0 +1,114 @@
+Name
+
+ TIZEN_image_native_buffer
+
+Name Strings
+
+ EGL_TIZEN_image_native_buffer
+
+Contributors
+
+ Dongyeon Kim
+ Minsu Han
+ Inpyo Kang
+ Zeeshan Anwar
+
+Contact
+
+ Dongyeon Kim, Samsung Electronics (dy5.kim 'at' samsung.com)
+ Zeeshan Anwar, Samsung Electronics (z.anwar 'at' samsung.com)
+
+Status
+
+ This extension is obsolete and has been replaced by
+ EGL_TIZEN_image_native_buffer
+
+Version
+
+ Version 2, July 23, 2014
+
+Number
+
+ EGL Extension #76
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ This extension enables using a Tizen native buffer (struct
+ native_buffer) as an EGLImage source.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_BUFFER_TIZEN 0x32A0
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +-------------------------+--------------------------------------+
+ | <target> | Notes |
+ +-------------------------+--------------------------------------+
+ | EGL_NATIVE_BUFFER_TIZEN | Used for Tizen native_buffer objects |
+ +-------------------------+--------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_BUFFER_TIZEN, <dpy> must be a valid display,
+ <ctx> must be EGL_NO_CONTEXT, <buffer> must be a pointer to a valid
+ native_buffer object (cast into the type EGLClientBuffer), and
+ attributes other than EGL_IMAGE_PRESERVED_KHR are ignored."
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_NATIVE_BUFFER_TIZEN and <buffer> is not a
+ pointer to a valid native_buffer, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <target> is EGL_NATIVE_BUFFER_TIZEN and <ctx> is not
+ EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_NATIVE_BUFFER_TIZEN and <buffer> was created
+ with properties (format, usage, dimensions, etc.) not supported by
+ the EGL implementation, the error EGL_BAD_PARAMETER is generated."
+
+Issues
+
+ 1. Should this extension define what combinations of native_buffer
+ properties implementations are required to support?
+
+ RESOLVED: No.
+
+ The requirements have evolved over time and will continue to change with
+ future Tizen releases. The minimum requirements for a given Tizen
+ version should be documented by that version.
+
+
+Revision History
+
+#2 (Zeeshan Anwar, July 01, 2014)
+ - Assigned the value to EGL_NATIVE_BUFFER_TIZEN
+#1 (Dongyeon Kim, June 05, 2013)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_surface.txt b/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_surface.txt
new file mode 100644
index 0000000..3d8ed3c
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/TIZEN/EGL_TIZEN_image_native_surface.txt
@@ -0,0 +1,121 @@
+Name
+
+ TIZEN_image_native_surface
+
+Name Strings
+
+ EGL_TIZEN_image_native_surface
+
+Contributors
+
+ Dongyeon Kim
+ Zeeshan Anwar
+ Minsu Han
+ Inpyo Kang
+
+Contact
+
+ Dongyeon Kim, Samsung Electronics (dy5.kim 'at' samsung.com)
+ Zeeshan Anwar, Samsung Electronics (z.anwar 'at' samsung.com)
+
+Status
+
+ Complete
+
+Version
+
+ Version 3, August 13, 2014
+
+Number
+
+ EGL Extension #77
+
+Dependencies
+
+ EGL 1.2 is required.
+
+ EGL_KHR_image_base is required.
+
+ This extension is written against the wording of the EGL 1.2
+ Specification.
+
+Overview
+
+ Tizen Buffer Manager (TBM) is a user space, generic memory
+ management framework to create and share memory buffers between
+ different system components. This extension enables using a Tizen
+ Buffer Manager (TBM) surface object (struct tbm_surface_h) as an
+ EGLImage source.
+
+New Types
+
+ None.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ Accepted by the <target> parameter of eglCreateImageKHR:
+
+ EGL_NATIVE_SURFACE_TIZEN 0x32A1
+
+Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
+
+ Add to section 2.5.1 "EGLImage Specification" (as defined by the
+ EGL_KHR_image_base specification), in the description of
+ eglCreateImageKHR:
+
+ "Values accepted for <target> are listed in Table aaa, below.
+
+ +---------------------------+------------------------------------+
+ | <target> | Notes |
+ +---------------------------+------------------------------------+
+ | EGL_NATIVE_SURFACE_TIZEN | Used for Tizen tbm_surface_h objects |
+ +---------------------------+------------------------------------+
+ Table aaa. Legal values for eglCreateImageKHR <target> parameter
+
+ ...
+
+ If <target> is EGL_NATIVE_SURFACE_TIZEN, <dpy> must be a valid
+ display, <ctx> must be EGL_NO_CONTEXT, <buffer> must be a pointer
+ to a valid tbm_surface_h object (cast into the type EGLClientBuffer),
+ and attributes other than EGL_IMAGE_PRESERVED_KHR are ignored."
+
+ Add to the list of error conditions for eglCreateImageKHR:
+
+ "* If <target> is EGL_NATIVE_SURFACE_TIZEN and <buffer> is not
+ a pointer to a valid tbm_surface_h, the error EGL_BAD_PARAMETER
+ is generated.
+
+ * If <target> is EGL_NATIVE_SURFACE_TIZEN and <ctx> is not
+ EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated.
+
+ * If <target> is EGL_NATIVE_SURFACE_TIZEN and <buffer> was
+ created with properties (format, usage, dimensions, etc.) not
+ supported by the EGL implementation, the error
+ EGL_BAD_PARAMETER is generated."
+
+Issues
+
+ 1. Should this extension define what combinations of tbm_surface_h
+ properties implementations are required to support?
+
+ RESOLVED: No.
+
+ The requirements have evolved over time and will continue to change
+ with future Tizen releases. The minimum requirements for a given
+ Tizen version should be documented by that version.
+
+
+Revision History
+#3 (Zeeshan Anwar, August 13, 2014)
+ - Changed tbm_surface to tbm_surface_h
+
+#2 (Zeeshan Anwar, July 23, 2014)
+ - Changed extension name and target name
+ - Assigned value to EGL_NATIVE_SURFACE_TIZEN
+
+#1 (Zeeshan Anwar, July 18, 2014)
+ - Initial draft.
diff --git a/glew/auto/EGL-Registry/extensions/WL/EGL_WL_bind_wayland_display.txt b/glew/auto/EGL-Registry/extensions/WL/EGL_WL_bind_wayland_display.txt
new file mode 100644
index 0000000..2b2dd59
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/WL/EGL_WL_bind_wayland_display.txt
@@ -0,0 +1,217 @@
+Name
+
+ WL_bind_wayland_display
+
+Name Strings
+
+ EGL_WL_bind_wayland_display
+
+Contact
+
+ Kristian Høgsberg <krh@bitplanet.net>
+ Benjamin Franzke <benjaminfranzke@googlemail.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 6, July 14, 2017
+
+Number
+
+ EGL Extension #136
+
+Dependencies
+
+ Requires EGL 1.4 or later. This extension is written against the
+ wording of the EGL 1.4 specification.
+
+ EGL_KHR_image_base is required.
+
+Overview
+
+ This extension provides entry points for binding and unbinding the
+ wl_display of a Wayland compositor to an EGLDisplay. Binding a
+ wl_display means that the EGL implementation should provide one or
+ more interfaces in the Wayland protocol to allow clients to create
+ wl_buffer objects. On the server side, this extension also
+ provides a new target for eglCreateImageKHR, to create an EGLImage
+ from a wl_buffer.
+
+ Adding an implementation-specific Wayland interface, allows the
+ EGL implementation to define specific wayland requests and events,
+ needed for buffer sharing in an EGL Wayland platform.
+
+IP Status
+
+ Open-source; freely implementable.
+
+New Procedures and Functions
+
+ EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy,
+ struct wl_display *display);
+
+ EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy,
+ struct wl_display *display);
+
+ EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy,
+ struct wl_resource *buffer,
+ EGLint attribute, EGLint *value);
+
+New Tokens
+
+ Accepted as <target> in eglCreateImageKHR
+
+ EGL_WAYLAND_BUFFER_WL 0x31D5
+
+ Accepted in the <attrib_list> parameter of eglCreateImageKHR:
+
+ EGL_WAYLAND_PLANE_WL 0x31D6
+
+ Possible values for EGL_TEXTURE_FORMAT:
+
+ EGL_TEXTURE_Y_U_V_WL 0x31D7
+ EGL_TEXTURE_Y_UV_WL 0x31D8
+ EGL_TEXTURE_Y_XUXV_WL 0x31D9
+ EGL_TEXTURE_EXTERNAL_WL 0x31DA
+
+ Accepted in the <attribute> parameter of eglQueryWaylandBufferWL:
+
+ EGL_TEXTURE_FORMAT 0x3080
+ EGL_WAYLAND_Y_INVERTED_WL 0x31DB
+
+
+Additions to the EGL 1.4 Specification:
+
+ To bind a server-side wl_display to an EGLDisplay, call
+
+ EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy,
+ struct wl_display *display);
+
+ To unbind a server-side wl_display from an EGLDisplay, call
+
+ EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy,
+ struct wl_display *display);
+
+ eglBindWaylandDisplayWL returns EGL_FALSE when there is already a
+ wl_display bound to EGLDisplay otherwise EGL_TRUE.
+
+ eglUnbindWaylandDisplayWL returns EGL_FALSE when there is no
+ wl_display bound to the EGLDisplay currently otherwise EGL_TRUE.
+
+ XXXXXXXX
+ EGL_WAYLAND_BUFFER_WL
+
+
+ To query attributes of a wl_buffer created by the EGL
+ implementation installed by eglBindWaylandDisplayWL, call:
+
+ EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy,
+ struct wl_resource *buffer,
+ EGLint attribute,
+ EGLint *value);
+
+ A wl_buffer can have several planes, typically in case of planar
+ YUV formats. Depending on the exact YUV format in use, the
+ compositor will have to create one or more EGLImages for the
+ various planes. The eglQueryWaylandBufferWL function should be
+ used to first query the wl_buffer texture format using
+ EGL_TEXTURE_FORMAT as the attribute. If the wl_buffer object is
+ not an EGL wl_buffer (wl_shm and other wayland extensions can
+ create wl_buffer objects of different types), this query will
+ return EGL_FALSE. In that case the wl_buffer can not be used with
+ EGL and the compositor should have another way to get the buffer
+ contents.
+
+ If eglQueryWaylandBufferWL succeeds, the returned value will be
+ one of EGL_TEXTURE_RGB, EGL_TEXTURE_RGBA, EGL_TEXTURE_Y_U_V_WL,
+ EGL_TEXTURE_Y_UV_WL, EGL_TEXTURE_Y_XUXV_WL. The value returned
+ describes how many EGLImages must be used, which components will
+ be sampled from each EGLImage and how they map to rgba components
+ in the shader. The naming conventions separates planes by _ and
+ within each plane, the order or R, G, B, A, Y, U, and V indicates
+ how those components map to the rgba value returned by the
+ sampler. X indicates that the corresponding component in the rgba
+ value isn't used.
+
+ RGB and RGBA buffer types:
+
+ EGL_TEXTURE_RGB
+ One plane, samples RGB from the texture to rgb in the
+ shader. Alpha channel is not valid.
+
+ EGL_TEXTURE_RGBA
+ One plane, samples RGBA from the texture to rgba in the
+ shader.
+
+ YUV buffer types:
+
+ EGL_TEXTURE_Y_U_V_WL
+ Three planes, samples Y from the first plane to r in
+ the shader, U from the second plane to r, and V from
+ the third plane to r.
+
+ EGL_TEXTURE_Y_UV_WL
+ Two planes, samples Y from the first plane to r in
+ the shader, U and V from the second plane to rg.
+
+ EGL_TEXTURE_Y_XUXV_WL
+ Two planes, samples Y from the first plane to r in
+ the shader, U and V from the second plane to g and a.
+
+ EGL_TEXTURE_EXTERNAL_WL
+ Treated as a single plane texture, but sampled with
+ samplerExternalOES according to OES_EGL_image_external
+
+ After querying the wl_buffer layout, create EGLImages for the
+ planes by calling eglCreateImageKHR with wl_buffer as
+ EGLClientBuffer, EGL_WAYLAND_BUFFER_WL as the target, NULL
+ context. If no attributes are given, an EGLImage will be created
+ for the first plane. For multi-planar buffers, specify the plane
+ to create the EGLImage for by using the EGL_WAYLAND_PLANE_WL
+ attribute. The value of the attribute is the index of the plane,
+ as defined by the buffer format. Writing to an EGLImage created
+ from a wl_buffer in any way (such as glTexImage2D, binding the
+ EGLImage as a renderbuffer etc) will result in undefined behavior.
+
+ Further, eglQueryWaylandBufferWL accepts attributes EGL_WIDTH and
+ EGL_HEIGHT to query the width and height of the wl_buffer.
+
+ Also, eglQueryWaylandBufferWL may accept
+ EGL_WAYLAND_Y_INVERTED_WL attribute to query orientation of
+ wl_buffer. If EGL_WAYLAND_Y_INVERTED_WL is supported
+ eglQueryWaylandBufferWL returns EGL_TRUE and value is a boolean
+ that tells if wl_buffer is y-inverted or not. If
+ EGL_WAYLAND_Y_INVERTED_WL is not supported
+ eglQueryWaylandBufferWL returns EGL_FALSE, in that case
+ wl_buffer should be treated as if value of
+ EGL_WAYLAND_Y_INVERTED_WL was EGL_TRUE.
+
+Issues
+
+Revision History
+
+ Version 1, March 1, 2011
+ Initial draft (Benjamin Franzke)
+ Version 2, July 5, 2012
+ Add EGL_WAYLAND_PLANE_WL attribute to allow creating an EGLImage
+ for different planes of planar buffer. (Kristian Høgsberg)
+ Version 3, July 10, 2012
+ Add eglQueryWaylandBufferWL and the various buffer
+ formats. (Kristian Høgsberg)
+ Version 4, July 19, 2012
+ Use EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB, and EGL_TEXTURE_RGBA,
+ and just define the new YUV texture formats. Add support for
+ EGL_WIDTH and EGL_HEIGHT in the query attributes (Kristian Høgsberg)
+ Version 5, July 16, 2013
+ Change eglQueryWaylandBufferWL to take a resource pointer to the
+ buffer instead of a pointer to a struct wl_buffer, as the latter has
+ been deprecated. (Ander Conselvan de Oliveira)
+ Version 6, September 16, 2013
+ Add EGL_WAYLAND_Y_INVERTED_WL attribute to allow specifying
+ wl_buffer's orientation.
+ Version 7, July 14, 2017
+ Add EGL_WAYLAND_BUFFER_WL EGLImage target. Reword for inclusion in
+ Khronos registry.
diff --git a/glew/auto/EGL-Registry/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt b/glew/auto/EGL-Registry/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt
new file mode 100644
index 0000000..8395cae
--- /dev/null
+++ b/glew/auto/EGL-Registry/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt
@@ -0,0 +1,101 @@
+Name
+
+ WL_create_wayland_buffer_from_image
+
+Name Strings
+
+ EGL_WL_create_wayland_buffer_from_image
+
+Contributors
+
+ Neil Roberts
+ Axel Davy
+ Daniel Stone
+
+Contact
+
+ Neil Roberts <neil.s.roberts@intel.com>
+
+Status
+
+ Complete
+
+Version
+
+ Version 2, October 25, 2013
+
+Number
+
+ EGL Extension #137
+
+Dependencies
+
+ Requires EGL 1.4 or later. This extension is written against the
+ wording of the EGL 1.4 specification.
+
+ EGL_KHR_base_image is required.
+
+Overview
+
+ This extension provides an entry point to create a wl_buffer which shares
+ its contents with a given EGLImage. The expected use case for this is in a
+ nested Wayland compositor which is using subsurfaces to present buffers
+ from its clients. Using this extension it can attach the client buffers
+ directly to the subsurface without having to blit the contents into an
+ intermediate buffer. The compositing can then be done in the parent
+ compositor.
+
+ The nested compositor can create an EGLImage from a client buffer resource
+ using the existing WL_bind_wayland_display extension. It should also be
+ possible to create buffers using other types of images although there is
+ no expected use case for that.
+
+IP Status
+
+ Open-source; freely implementable.
+
+New Procedures and Functions
+
+ struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy,
+ EGLImageKHR image);
+
+New Tokens
+
+ None.
+
+Additions to the EGL 1.4 Specification:
+
+ To create a client-side wl_buffer from an EGLImage call
+
+ struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy,
+ EGLImageKHR image);
+
+ The returned buffer will share the contents with the given EGLImage. Any
+ updates to the image will also be updated in the wl_buffer. Typically the
+ EGLImage will be generated in a nested Wayland compositor using a buffer
+ resource from a client via the EGL_WL_bind_wayland_display extension.
+
+ If there was an error then the function will return NULL. In particular it
+ will generate EGL_BAD_MATCH if the implementation is not able to represent
+ the image as a wl_buffer. The possible reasons for this error are
+ implementation-dependant but may include problems such as an unsupported
+ format or tiling mode or that the buffer is in memory that is inaccessible
+ to the GPU that the given EGLDisplay is using.
+
+Issues
+
+ 1) Under what circumstances can the EGL_BAD_MATCH error be generated? Does
+ this include for example unsupported tiling modes?
+
+ RESOLVED: Yes, the EGL_BAD_MATCH error can be generated for any reason
+ which prevents the implementation from representing the image as a
+ wl_buffer. For example, these problems can be but are not limited to
+ unsupported tiling modes, inaccessible memory or an unsupported pixel
+ format.
+
+Revision History
+
+ Version 1, September 6, 2013
+ Initial draft (Neil Roberts)
+ Version 2, October 25, 2013
+ Added a note about more possible reasons for returning EGL_BAD_FORMAT.
diff --git a/glew/auto/EGL-Registry/index.php b/glew/auto/EGL-Registry/index.php
new file mode 100644
index 0000000..c5522f5
--- /dev/null
+++ b/glew/auto/EGL-Registry/index.php
@@ -0,0 +1,382 @@
+<?php
+$static_title = 'Khronos EGL Registry';
+
+include_once("../../assets/static_pages/khr_page_top.php");
+?>
+
+<p> The EGL registry contains specifications of the core API; specifications
+ of Khronos- and vendor-approved EGL extensions; header files
+ corresponding to the specifications; an enumerant and function registry;
+ and other related documentation. </p>
+
+<h6> EGL Core API Specification and Headers </h6>
+
+<p> The current version of EGL is EGL 1.5. </p>
+
+<ul>
+<li> <a href="specs/eglspec.1.5.pdf"> EGL 1.5 Specification </a> (updated
+ August 27, 2014) and <a href="specs/eglspec.1.5.withchanges.pdf">
+ Specification with changes marked </a>. </li>
+<li> <a href="api/EGL/egl.h"> &lt;EGL/egl.h&gt; </a> for EGL 1.5. </li>
+<li> <a href="api/EGL/eglext.h"> &lt;EGL/eglext.h&gt; </a> for EGL 1.5. </li>
+<li> <a href="api/EGL/eglplatform.h"> &lt;EGL/eglplatform.h&gt; </a> for EGL
+ 1.5. </li>
+<li> <a href="api/KHR/khrplatform.h"> &lt;KHR/khrplatform.h&gt; </a>
+ (required by the current EGL and OpenGL ES headers). </li>
+</ul>
+
+<h6> Reference Pages, Technical Notes and White Papers </h6>
+
+<ul>
+<li> <a href="sdk/docs/man/"> EGL 1.5 reference pages </a>
+<li> <a href="specs/EGLTechNote0001.html">EGL Technical Note #1 - EGL 1.4 and
+ ancillary buffer preservation </a>
+</ul>
+
+<h6> Older Specifications </h6>
+
+<p> Older versions of the EGL Specification provided for reference. </p>
+
+<ul>
+<li> <a href="specs/eglspec.1.4.pdf"> EGL 1.4 Specification </a> and
+ <a href="specs/eglspec.1.4.withchanges.pdf"> Specification with changes
+ marked </a>. </li>
+<li> <a href="specs/eglspec.1.3.pdf"> EGL 1.3 Specification </a> </li>
+<li> <a href="specs/eglspec.1.2.pdf"> EGL 1.2 Specification </a>
+ and corresponding
+ <a href="api/1.2/EGL/egl.h"> &lt;EGL/egl.h&gt; </a>. </li>
+<li> <a href="specs/eglspec.1.1.pdf"> EGL 1.1 Specification </a>
+ and corresponding
+ <a href="api/1.1/EGL/egl.h"> &lt;EGL/egl.h&gt; </a>. </li>
+<li> <a href="specs/eglspec.1.0.pdf"> EGL 1.0 Specification </a>
+ and corresponding
+ <a href="api/1.0/EGL/egl.h"> &lt;EGL/egl.h&gt; </a>. </li>
+</ul>
+
+<h6> EGL XML API Registry </h6>
+
+<p> The database from which EGL enumerant ranges are reserved and the
+ <tt>EGL/egl.h</tt> and <tt>EGL/eglext.h</tt> headers are built is called
+ <a href="api/egl.xml"> egl.xml </a>. It uses an XML schema and
+ processing scripts shared with the OpenGL and OpenGL ES registries. If
+ you need to generate modified headers or modify egl.xml, clone the <a
+ href="https://github.com/KhronosGroup/EGL-Registry"> EGL-Registry </a>
+ git repository and see the <a href="README.md"> README.md </a>
+ file to get started. </p>
+
+
+<h6> <a name="otherextspecs"></a>
+ Extension Specifications</h6>
+<ol>
+<li value=1> <a href="extensions/KHR/EGL_KHR_config_attribs.txt">EGL_KHR_config_attribs</a>
+</li>
+<li value=2> <a href="extensions/KHR/EGL_KHR_lock_surface.txt">EGL_KHR_lock_surface</a>
+</li>
+<li value=3> <a href="extensions/KHR/EGL_KHR_image.txt">EGL_KHR_image</a>
+</li>
+<li value=4> <a href="extensions/KHR/EGL_KHR_vg_parent_image.txt">EGL_KHR_vg_parent_image</a>
+</li>
+<li value=5> <a href="extensions/KHR/EGL_KHR_gl_image.txt">EGL_KHR_gl_texture_2D_image</a>
+ <br> <a href="extensions/KHR/EGL_KHR_gl_image.txt">EGL_KHR_gl_texture_cubemap_image</a>
+ <br> <a href="extensions/KHR/EGL_KHR_gl_image.txt">EGL_KHR_gl_texture_3D_image</a>
+ <br> <a href="extensions/KHR/EGL_KHR_gl_image.txt">EGL_KHR_gl_renderbuffer_image</a>
+</li>
+<li value=6> <a href="extensions/KHR/EGL_KHR_reusable_sync.txt">EGL_KHR_reusable_sync</a>
+</li>
+<li value=8> <a href="extensions/KHR/EGL_KHR_image_base.txt">EGL_KHR_image_base</a>
+</li>
+<li value=9> <a href="extensions/KHR/EGL_KHR_image_pixmap.txt">EGL_KHR_image_pixmap</a>
+</li>
+<li value=10> <a href="extensions/IMG/EGL_IMG_context_priority.txt">EGL_IMG_context_priority</a>
+</li>
+<li value=14> <a href="extensions/NOK/EGL_NOK_texture_from_pixmap.txt">EGL_NOK_texture_from_pixmap</a>
+</li>
+<li value=16> <a href="extensions/KHR/EGL_KHR_lock_surface2.txt">EGL_KHR_lock_surface2</a>
+</li>
+<li value=17> <a href="extensions/NV/EGL_NV_coverage_sample.txt">EGL_NV_coverage_sample</a>
+</li>
+<li value=18> <a href="extensions/NV/EGL_NV_depth_nonlinear.txt">EGL_NV_depth_nonlinear</a>
+</li>
+<li value=19> <a href="extensions/NV/EGL_NV_sync.txt">EGL_NV_sync</a>
+</li>
+<li value=20> <a href="extensions/KHR/EGL_KHR_fence_sync.txt">EGL_KHR_fence_sync</a>
+</li>
+<li value=23> <a href="extensions/NOK/EGL_NOK_swap_region2.txt">EGL_NOK_swap_region2</a>
+</li>
+<li value=24> <a href="extensions/HI/EGL_HI_clientpixmap.txt">EGL_HI_clientpixmap</a>
+</li>
+<li value=25> <a href="extensions/HI/EGL_HI_colorformats.txt">EGL_HI_colorformats</a>
+</li>
+<li value=26> <a href="extensions/MESA/EGL_MESA_drm_image.txt">EGL_MESA_drm_image</a>
+</li>
+<li value=27> <a href="extensions/NV/EGL_NV_post_sub_buffer.txt">EGL_NV_post_sub_buffer</a>
+</li>
+<li value=28> <a href="extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt">EGL_ANGLE_query_surface_pointer</a>
+</li>
+<li value=29> <a href="extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt">EGL_ANGLE_surface_d3d_texture_2d_share_handle</a>
+</li>
+<li value=30> <a href="extensions/NV/EGL_NV_coverage_sample_resolve.txt">EGL_NV_coverage_sample_resolve</a>
+</li>
+<li value=31> <a href="extensions/NV/EGL_NV_system_time.txt">EGL_NV_system_time</a>
+</li>
+<li value=32> <a href="extensions/KHR/EGL_KHR_stream.txt">EGL_KHR_stream</a>
+ <br> <a href="extensions/KHR/EGL_KHR_stream.txt">EGL_KHR_stream_attrib</a>
+</li>
+<li value=33> <a href="extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt">EGL_KHR_stream_consumer_gltexture</a>
+</li>
+<li value=34> <a href="extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt">EGL_KHR_stream_producer_eglsurface</a>
+</li>
+<li value=35> <a href="extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt">EGL_KHR_stream_producer_aldatalocator</a>
+</li>
+<li value=36> <a href="extensions/KHR/EGL_KHR_stream_fifo.txt">EGL_KHR_stream_fifo</a>
+</li>
+<li value=37> <a href="extensions/EXT/EGL_EXT_create_context_robustness.txt">EGL_EXT_create_context_robustness</a>
+</li>
+<li value=38> <a href="extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt">EGL_ANGLE_d3d_share_handle_client_buffer</a>
+</li>
+<li value=39> <a href="extensions/KHR/EGL_KHR_create_context.txt">EGL_KHR_create_context</a>
+</li>
+<li value=40> <a href="extensions/KHR/EGL_KHR_surfaceless_context.txt">EGL_KHR_surfaceless_context</a>
+</li>
+<li value=41> <a href="extensions/KHR/EGL_KHR_stream_cross_process_fd.txt">EGL_KHR_stream_cross_process_fd</a>
+</li>
+<li value=42> <a href="extensions/EXT/EGL_EXT_multiview_window.txt">EGL_EXT_multiview_window</a>
+</li>
+<li value=43> <a href="extensions/KHR/EGL_KHR_wait_sync.txt">EGL_KHR_wait_sync</a>
+</li>
+<li value=44> <a href="extensions/NV/EGL_NV_post_convert_rounding.txt">EGL_NV_post_convert_rounding</a>
+</li>
+<li value=45> <a href="extensions/NV/EGL_NV_native_query.txt">EGL_NV_native_query</a>
+</li>
+<li value=46> <a href="extensions/NV/EGL_NV_3dvision_surface.txt">EGL_NV_3dvision_surface</a>
+</li>
+<li value=47> <a href="extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt">EGL_ANDROID_framebuffer_target</a>
+</li>
+<li value=48> <a href="extensions/ANDROID/EGL_ANDROID_blob_cache.txt">EGL_ANDROID_blob_cache</a>
+</li>
+<li value=49> <a href="extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt">EGL_ANDROID_image_native_buffer</a>
+</li>
+<li value=50> <a href="extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt">EGL_ANDROID_native_fence_sync</a>
+</li>
+<li value=51> <a href="extensions/ANDROID/EGL_ANDROID_recordable.txt">EGL_ANDROID_recordable</a>
+</li>
+<li value=52> <a href="extensions/EXT/EGL_EXT_buffer_age.txt">EGL_EXT_buffer_age</a>
+</li>
+<li value=53> <a href="extensions/EXT/EGL_EXT_image_dma_buf_import.txt">EGL_EXT_image_dma_buf_import</a>
+</li>
+<li value=54> <a href="extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt">EGL_ARM_pixmap_multisample_discard</a>
+</li>
+<li value=55> <a href="extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt">EGL_EXT_swap_buffers_with_damage</a>
+</li>
+<li value=56> <a href="extensions/NV/EGL_NV_stream_sync.txt">EGL_NV_stream_sync</a>
+</li>
+<li value=57> <a href="extensions/EXT/EGL_EXT_platform_base.txt">EGL_EXT_platform_base</a>
+</li>
+<li value=58> <a href="extensions/EXT/EGL_EXT_client_extensions.txt">EGL_EXT_client_extensions</a>
+</li>
+<li value=59> <a href="extensions/EXT/EGL_EXT_platform_x11.txt">EGL_EXT_platform_x11</a>
+</li>
+<li value=60> <a href="extensions/KHR/EGL_KHR_cl_event.txt">EGL_KHR_cl_event</a>
+</li>
+<li value=61> <a href="extensions/KHR/EGL_KHR_get_all_proc_addresses.txt">EGL_KHR_get_all_proc_addresses</a>
+ <br> <a href="extensions/KHR/EGL_KHR_get_all_proc_addresses.txt">EGL_KHR_client_get_all_proc_addresses</a>
+</li>
+<li value=62> <a href="extensions/MESA/EGL_MESA_platform_gbm.txt">EGL_MESA_platform_gbm</a>
+</li>
+<li value=63> <a href="extensions/EXT/EGL_EXT_platform_wayland.txt">EGL_EXT_platform_wayland</a>
+</li>
+<li value=64> <a href="extensions/KHR/EGL_KHR_lock_surface3.txt">EGL_KHR_lock_surface3</a>
+</li>
+<li value=65> <a href="extensions/KHR/EGL_KHR_cl_event2.txt">EGL_KHR_cl_event2</a>
+</li>
+<li value=66> <a href="extensions/KHR/EGL_KHR_gl_colorspace.txt">EGL_KHR_gl_colorspace</a>
+</li>
+<li value=67> <a href="extensions/EXT/EGL_EXT_protected_surface.txt">EGL_EXT_protected_surface</a>
+</li>
+<li value=68> <a href="extensions/KHR/EGL_KHR_platform_android.txt">EGL_KHR_platform_android</a>
+</li>
+<li value=69> <a href="extensions/KHR/EGL_KHR_platform_gbm.txt">EGL_KHR_platform_gbm</a>
+</li>
+<li value=70> <a href="extensions/KHR/EGL_KHR_platform_wayland.txt">EGL_KHR_platform_wayland</a>
+</li>
+<li value=71> <a href="extensions/KHR/EGL_KHR_platform_x11.txt">EGL_KHR_platform_x11</a>
+</li>
+<li value=72> <a href="extensions/EXT/EGL_EXT_device_base.txt">EGL_EXT_device_base</a>
+</li>
+<li value=73> <a href="extensions/EXT/EGL_EXT_platform_device.txt">EGL_EXT_platform_device</a>
+</li>
+<li value=74> <a href="extensions/NV/EGL_NV_device_cuda.txt">EGL_NV_device_cuda</a>
+</li>
+<li value=75> <a href="extensions/NV/EGL_NV_cuda_event.txt">EGL_NV_cuda_event</a>
+</li>
+<li value=76> <a href="extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt">EGL_TIZEN_image_native_buffer</a>
+</li>
+<li value=77> <a href="extensions/TIZEN/EGL_TIZEN_image_native_surface.txt">EGL_TIZEN_image_native_surface</a>
+</li>
+<li value=78> <a href="extensions/EXT/EGL_EXT_output_base.txt">EGL_EXT_output_base</a>
+</li>
+<li value=79> <a href="extensions/EXT/EGL_EXT_device_drm.txt">EGL_EXT_device_drm</a>
+ <br> <a href="extensions/EXT/EGL_EXT_device_drm.txt">EGL_EXT_output_drm</a>
+</li>
+<li value=80> <a href="extensions/EXT/EGL_EXT_device_openwf.txt">EGL_EXT_device_openwf</a>
+ <br> <a href="extensions/EXT/EGL_EXT_device_openwf.txt">EGL_EXT_output_openwf</a>
+</li>
+<li value=81> <a href="extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt">EGL_EXT_stream_consumer_egloutput</a>
+</li>
+<li value=83> <a href="extensions/KHR/EGL_KHR_partial_update.txt">EGL_KHR_partial_update</a>
+</li>
+<li value=84> <a href="extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt">EGL_KHR_swap_buffers_with_damage</a>
+</li>
+<li value=85> <a href="extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt">EGL_ANGLE_window_fixed_size</a>
+</li>
+<li value=86> <a href="extensions/EXT/EGL_EXT_yuv_surface.txt">EGL_EXT_yuv_surface</a>
+</li>
+<li value=87> <a href="extensions/MESA/EGL_MESA_image_dma_buf_export.txt">EGL_MESA_image_dma_buf_export</a>
+</li>
+<li value=88> <a href="extensions/EXT/EGL_EXT_device_enumeration.txt">EGL_EXT_device_enumeration</a>
+</li>
+<li value=89> <a href="extensions/EXT/EGL_EXT_device_query.txt">EGL_EXT_device_query</a>
+</li>
+<li value=90> <a href="extensions/ANGLE/EGL_ANGLE_device_d3d.txt">EGL_ANGLE_device_d3d</a>
+</li>
+<li value=91> <a href="extensions/KHR/EGL_KHR_create_context_no_error.txt">EGL_KHR_create_context_no_error</a>
+</li>
+<li value=92> <a href="extensions/KHR/EGL_KHR_debug.txt">EGL_KHR_debug</a>
+</li>
+<li value=93> <a href="extensions/NV/EGL_NV_stream_metadata.txt">EGL_NV_stream_metadata</a>
+</li>
+<li value=94> <a href="extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt">EGL_NV_stream_consumer_gltexture_yuv</a>
+</li>
+<li value=95> <a href="extensions/IMG/EGL_IMG_image_plane_attribs.txt">EGL_IMG_image_plane_attribs</a>
+</li>
+<li value=96> <a href="extensions/KHR/EGL_KHR_mutable_render_buffer.txt">EGL_KHR_mutable_render_buffer</a>
+</li>
+<li value=97> <a href="extensions/EXT/EGL_EXT_protected_content.txt">EGL_EXT_protected_content</a>
+</li>
+<li value=98> <a href="extensions/ANDROID/EGL_ANDROID_presentation_time.txt">EGL_ANDROID_presentation_time</a>
+</li>
+<li value=99> <a href="extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt">EGL_ANDROID_create_native_client_buffer</a>
+</li>
+<li value=100> <a href="extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt">EGL_ANDROID_front_buffer_auto_refresh</a>
+</li>
+<li value=101> <a href="extensions/KHR/EGL_KHR_no_config_context.txt">EGL_KHR_no_config_context</a>
+</li>
+<li value=102> <a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_context_flush_control.txt">EGL_KHR_context_flush_control</a>
+</li>
+<li value=103> <a href="extensions/ARM/EGL_ARM_implicit_external_sync.txt">EGL_ARM_implicit_external_sync</a>
+</li>
+<li value=104> <a href="extensions/MESA/EGL_MESA_platform_surfaceless.txt">EGL_MESA_platform_surfaceless</a>
+</li>
+<li value=105> <a href="extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt">EGL_EXT_image_dma_buf_import_modifiers</a>
+</li>
+<li value=106> <a href="extensions/EXT/EGL_EXT_pixel_format_float.txt">EGL_EXT_pixel_format_float</a>
+</li>
+<li value=107> <a href="extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt">EGL_EXT_gl_colorspace_bt2020_linear</a>
+ <br> <a href="extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt">EGL_EXT_gl_colorspace_bt2020_pq</a>
+</li>
+<li value=108> <a href="extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt">EGL_EXT_gl_colorspace_scrgb_linear</a>
+</li>
+<li value=109> <a href="extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt">EGL_EXT_surface_SMPTE2086_metadata</a>
+</li>
+<li value=110> <a href="extensions/NV/EGL_NV_stream_fifo_next.txt">EGL_NV_stream_fifo_next</a>
+</li>
+<li value=111> <a href="extensions/NV/EGL_NV_stream_fifo_synchronous.txt">EGL_NV_stream_fifo_synchronous</a>
+</li>
+<li value=112> <a href="extensions/NV/EGL_NV_stream_reset.txt">EGL_NV_stream_reset</a>
+</li>
+<li value=113> <a href="extensions/NV/EGL_NV_stream_frame_limits.txt">EGL_NV_stream_frame_limits</a>
+</li>
+<li value=114> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_remote</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_object</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_display</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_process</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_partition</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_remote.txt">EGL_NV_stream_cross_system</a>
+</li>
+<li value=115> <a href="extensions/NV/EGL_NV_stream_socket.txt">EGL_NV_stream_socket</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_socket.txt">EGL_NV_stream_socket_unix</a>
+ <br> <a href="extensions/NV/EGL_NV_stream_socket.txt">EGL_NV_stream_socket_inet</a>
+</li>
+<li value=116> <a href="extensions/EXT/EGL_EXT_compositor.txt">EGL_EXT_compositor</a>
+</li>
+<li value=117> <a href="extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt">EGL_EXT_surface_CTA861_3_metadata</a>
+</li>
+<li value=118> <a href="extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt">EGL_EXT_gl_colorspace_display_p3</a>
+</li>
+<li value=118> <a href="extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt">EGL_EXT_gl_colorspace_display_p3_linear</a>
+</li>
+<li value=119> <a href="extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt">EGL_EXT_gl_colorspace_scrgb (non-linear)</a>
+</li>
+<li value=120> <a href="extensions/EXT/EGL_EXT_image_implicit_sync_control.txt">EGL_EXT_image_implicit_sync_control</a>
+</li>
+<li value=121> <a href="extensions/EXT/EGL_EXT_bind_to_front.txt">EGL_EXT_bind_to_front</a>
+</li>
+<li value=122> <a href="extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt">EGL_ANDROID_get_frame_timestamps</a>
+</li>
+<li value=123> <a href="extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt">EGL_ANDROID_get_native_client_buffer</a>
+</li>
+<li value=124> <a href="extensions/NV/EGL_NV_context_priority_realtime.txt">EGL_NV_context_priority_realtime</a>
+</li>
+<li value=125> <a href="extensions/EXT/EGL_EXT_image_gl_colorspace.txt">EGL_EXT_image_gl_colorspace</a>
+</li>
+<li value=126> <a href="extensions/KHR/EGL_KHR_display_reference.txt">EGL_KHR_display_reference</a>
+</li>
+<li value=127> <a href="extensions/NV/EGL_NV_stream_flush.txt">EGL_NV_stream_flush</a>
+</li>
+<li value=128> <a href="extensions/EXT/EGL_EXT_sync_reuse.txt">EGL_EXT_sync_reuse</a>
+</li>
+<li value=129> <a href="extensions/EXT/EGL_EXT_client_sync.txt">EGL_EXT_client_sync</a>
+</li>
+<li value=130> <a href="extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt">EGL_EXT_gl_colorspace_display_p3_passthrough</a>
+</li>
+<li value=131> <a href="extensions/MESA/EGL_MESA_query_driver.txt">EGL_MESA_query_driver</a>
+</li>
+<li value=132> <a href="extensions/ANDROID/EGL_ANDROID_GLES_layers.txt">EGL_ANDROID_GLES_layers</a>
+</li>
+<li value=133> <a href="extensions/NV/EGL_NV_n_buffer.txt">EGL_NV_n_buffer</a>
+</li>
+<li value=134> <a href="extensions/NV/EGL_NV_stream_origin.txt">EGL_NV_stream_origin</a>
+</li>
+<li value=135> <a href="extensions/NV/EGL_NV_stream_dma.txt">EGL_NV_stream_dma</a>
+</li>
+<li value=136> <a href="extensions/WL/EGL_WL_bind_wayland_display.txt">EGL_WL_bind_wayland_display</a>
+</li>
+<li value=137> <a href="extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt">EGL_WL_create_wayland_buffer_from_image</a>
+</li>
+<li value=139> <a href="extensions/NV/EGL_NV_stream_consumer_eglimage.txt">EGL_NV_stream_consumer_eglimage</a>
+</li>
+<li value=140> <a href="extensions/EXT/EGL_EXT_device_query_name.txt">EGL_EXT_device_query_name</a>
+</li>
+<li value=141> <a href="extensions/EXT/EGL_EXT_platform_xcb.txt">EGL_EXT_platform_xcb</a>
+</li>
+<li value=142> <a href="extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt">EGL_ANGLE_sync_control_rate</a>
+</li>
+<li value=143> <a href="extensions/EXT/EGL_EXT_device_persistent_id.txt">EGL_EXT_device_persistent_id</a>
+</li>
+<li value=144> <a href="extensions/EXT/EGL_EXT_device_drm_render_node.txt">EGL_EXT_device_drm_render_node</a>
+</li>
+<li value=145> <a href="extensions/EXT/EGL_EXT_config_select_group.txt">EGL_EXT_config_select_group</a>
+</li>
+<li value=146> <a href="extensions/EXT/EGL_EXT_present_opaque.txt">EGL_EXT_present_opaque</a>
+</li>
+<li value=147> <a href="extensions/EXT/EGL_EXT_surface_compression.txt">EGL_EXT_surface_compression</a>
+</li>
+</ol>
+
+<h6> Providing Feedback on the Registry </h6>
+
+<p> Khronos welcomes comments and bug reports. To provide feedback on the
+ EGL registry itself (such as reporting missing content, bad links,
+ etc.), file an issue in the <a
+ href="https://github.com/KhronosGroup/EGL-Registry/issues">
+ EGL-Registry </a> Github project. </p>
+
+<p> For the EGL API, extensions, and headers, file a bug on the <a
+ href="http://www.khronos.org/bugzilla/"> Khronos Bugzilla </a>. Make
+ sure to fill in the &quot;Product&quot; field in the bug entry form as
+ &quot;EGL&quot;, and pick appropriate values for the Component and other
+ fields. </p>
+
+<?php include_once("../../assets/static_pages/khr_page_bottom.php"); ?>
+</body>
+</html>
diff --git a/glew/auto/EGL-Registry/registry.tcl b/glew/auto/EGL-Registry/registry.tcl
new file mode 100644
index 0000000..c2bfb63
--- /dev/null
+++ b/glew/auto/EGL-Registry/registry.tcl
@@ -0,0 +1,770 @@
+# Copyright 2006-2021 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+# registry.tcl
+#
+# This is a simple human-readable database defining the EGL extension
+# registry. For each extension, it includes an extension number, flags
+# if the extension is public, and includes a path to the extension
+# specification.
+#
+# The companion script 'regproc.tcl' uses this to build up the
+# extensions portion of the public registry, by copying out only
+# the public specifications.
+
+extension EGL_KHR_config_attribs {
+ number 1
+ flags public
+ filename extensions/KHR/EGL_KHR_config_attribs.txt
+}
+extension EGL_KHR_lock_surface {
+ number 2
+ flags public
+ filename extensions/KHR/EGL_KHR_lock_surface.txt
+}
+extension EGL_KHR_image {
+ number 3
+ flags public
+ filename extensions/KHR/EGL_KHR_image.txt
+}
+extension EGL_KHR_vg_parent_image {
+ number 4
+ flags public
+ filename extensions/KHR/EGL_KHR_vg_parent_image.txt
+}
+extension EGL_KHR_gl_texture_2D_image {
+ number 5
+ flags public
+ filename extensions/KHR/EGL_KHR_gl_image.txt
+ alias EGL_KHR_gl_texture_cubemap_image
+ alias EGL_KHR_gl_texture_3D_image
+ alias EGL_KHR_gl_renderbuffer_image
+}
+extension EGL_KHR_reusable_sync {
+ number 6
+ flags public
+ filename extensions/KHR/EGL_KHR_reusable_sync.txt
+}
+extension EGL_SYMBIAN_image_preserved {
+ number 7
+ flags private incomplete
+ filename extensions/SYMBIAN/EGL_SYMBIAN_image_preserved.txt
+}
+extension EGL_KHR_image_base {
+ number 8
+ flags public
+ filename extensions/KHR/EGL_KHR_image_base.txt
+}
+extension EGL_KHR_image_pixmap {
+ number 9
+ flags public
+ filename extensions/KHR/EGL_KHR_image_pixmap.txt
+}
+extension EGL_IMG_context_priority {
+ number 10
+ flags public
+ filename extensions/IMG/EGL_IMG_context_priority.txt
+}
+extension EGL_NOK_hibernate_context {
+ number 11
+ flags private
+ filename extensions/NOK/EGL_NOK_hibernate_context.txt
+}
+extension EGL_NOK_swap_region {
+ number 12
+ flags private
+ filename extensions/NOK/EGL_NOK_swap_region.txt
+}
+extension EGL_NOK_resource_profiling {
+ number 13
+ flags private
+ filename extensions/NOK/EGL_NOK_resource_profiling.txt
+}
+extension EGL_NOK_texture_from_pixmap {
+ number 14
+ flags public
+ filename extensions/NOK/EGL_NOK_texture_from_pixmap.txt
+}
+extension EGL_NOK_resource_profiling2 {
+ number 15
+ flags private
+ filename extensions/NOK/EGL_NOK_resource_profiling2.txt
+}
+extension EGL_KHR_lock_surface2 {
+ number 16
+ flags public
+ filename extensions/KHR/EGL_KHR_lock_surface2.txt
+}
+extension EGL_NV_coverage_sample {
+ number 17
+ flags public
+ filename extensions/NV/EGL_NV_coverage_sample.txt
+}
+extension EGL_NV_depth_nonlinear {
+ number 18
+ flags public
+ filename extensions/NV/EGL_NV_depth_nonlinear.txt
+}
+extension EGL_NV_sync {
+ number 19
+ flags public
+ filename extensions/NV/EGL_NV_sync.txt
+}
+extension EGL_KHR_fence_sync {
+ number 20
+ flags public
+ filename extensions/KHR/EGL_KHR_fence_sync.txt
+}
+extension EGL_NOK_surface_scaling {
+ number 21
+ flags private
+ filename extensions/NOK/EGL_NOK_surface_scaling.txt
+}
+extension EGL_NOK_image_shared {
+ number 22
+ flags private
+ filename extensions/NOK/EGL_NOK_image_shared.txt
+}
+extension EGL_NOK_swap_region2 {
+ number 23
+ flags public
+ filename extensions/NOK/EGL_NOK_swap_region2.txt
+}
+extension EGL_HI_clientpixmap {
+ number 24
+ flags public
+ filename extensions/HI/EGL_HI_clientpixmap.txt
+}
+extension EGL_HI_colorformats {
+ number 25
+ flags public
+ filename extensions/HI/EGL_HI_colorformats.txt
+}
+extension EGL_MESA_drm_image {
+ number 26
+ flags public
+ filename extensions/MESA/EGL_MESA_drm_image.txt
+}
+extension EGL_NV_post_sub_buffer {
+ number 27
+ flags public
+ filename extensions/NV/EGL_NV_post_sub_buffer.txt
+}
+extension EGL_ANGLE_query_surface_pointer {
+ number 28
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_query_surface_pointer.txt
+}
+extension EGL_ANGLE_surface_d3d_texture_2d_share_handle {
+ number 29
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt
+}
+extension EGL_NV_coverage_sample_resolve {
+ number 30
+ flags public
+ filename extensions/NV/EGL_NV_coverage_sample_resolve.txt
+}
+extension EGL_NV_system_time {
+ number 31
+ flags public
+ filename extensions/NV/EGL_NV_system_time.txt
+}
+extension EGL_KHR_stream {
+ number 32
+ flags public
+ filename extensions/KHR/EGL_KHR_stream.txt
+ alias EGL_KHR_stream_attrib
+}
+extension EGL_KHR_stream_consumer_gltexture {
+ number 33
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_consumer_gltexture.txt
+}
+extension EGL_KHR_stream_producer_eglsurface {
+ number 34
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_producer_eglsurface.txt
+}
+extension EGL_KHR_stream_producer_aldatalocator {
+ number 35
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_producer_aldatalocator.txt
+}
+extension EGL_KHR_stream_fifo {
+ number 36
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_fifo.txt
+}
+extension EGL_EXT_create_context_robustness {
+ number 37
+ flags public
+ filename extensions/EXT/EGL_EXT_create_context_robustness.txt
+}
+extension EGL_ANGLE_d3d_share_handle_client_buffer {
+ number 38
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_d3d_share_handle_client_buffer.txt
+}
+extension EGL_KHR_create_context {
+ number 39
+ flags public
+ filename extensions/KHR/EGL_KHR_create_context.txt
+}
+extension EGL_KHR_surfaceless_context {
+ number 40
+ flags public
+ filename extensions/KHR/EGL_KHR_surfaceless_context.txt
+}
+extension EGL_KHR_stream_cross_process_fd {
+ number 41
+ flags public
+ filename extensions/KHR/EGL_KHR_stream_cross_process_fd.txt
+}
+extension EGL_EXT_multiview_window {
+ number 42
+ flags public
+ filename extensions/EXT/EGL_EXT_multiview_window.txt
+}
+extension EGL_KHR_wait_sync {
+ number 43
+ flags public
+ filename extensions/KHR/EGL_KHR_wait_sync.txt
+}
+extension EGL_NV_post_convert_rounding {
+ number 44
+ flags public
+ filename extensions/NV/EGL_NV_post_convert_rounding.txt
+}
+extension EGL_NV_native_query {
+ number 45
+ flags public
+ filename extensions/NV/EGL_NV_native_query.txt
+}
+extension EGL_NV_3dvision_surface {
+ number 46
+ flags public
+ filename extensions/NV/EGL_NV_3dvision_surface.txt
+}
+extension EGL_ANDROID_framebuffer_target {
+ number 47
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_framebuffer_target.txt
+}
+extension EGL_ANDROID_blob_cache {
+ number 48
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_blob_cache.txt
+}
+extension EGL_ANDROID_image_native_buffer {
+ number 49
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_image_native_buffer.txt
+}
+extension EGL_ANDROID_native_fence_sync {
+ number 50
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt
+}
+extension EGL_ANDROID_recordable {
+ number 51
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_recordable.txt
+}
+extension EGL_EXT_buffer_age {
+ number 52
+ flags public
+ filename extensions/EXT/EGL_EXT_buffer_age.txt
+}
+extension EGL_EXT_image_dma_buf_import {
+ number 53
+ flags public
+ filename extensions/EXT/EGL_EXT_image_dma_buf_import.txt
+}
+extension EGL_ARM_pixmap_multisample_discard {
+ number 54
+ flags public
+ filename extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt
+}
+extension EGL_EXT_swap_buffers_with_damage {
+ number 55
+ flags public
+ filename extensions/EXT/EGL_EXT_swap_buffers_with_damage.txt
+}
+extension EGL_NV_stream_sync {
+ number 56
+ flags public
+ filename extensions/NV/EGL_NV_stream_sync.txt
+}
+extension EGL_EXT_platform_base {
+ number 57
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_base.txt
+}
+extension EGL_EXT_client_extensions {
+ number 58
+ flags public
+ filename extensions/EXT/EGL_EXT_client_extensions.txt
+}
+extension EGL_EXT_platform_x11 {
+ number 59
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_x11.txt
+}
+extension EGL_KHR_cl_event {
+ number 60
+ flags public
+ filename extensions/KHR/EGL_KHR_cl_event.txt
+}
+extension EGL_KHR_get_all_proc_addresses {
+ number 61
+ flags public
+ filename extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
+ alias EGL_KHR_client_get_all_proc_addresses
+}
+extension EGL_MESA_platform_gbm {
+ number 62
+ flags public
+ filename extensions/MESA/EGL_MESA_platform_gbm.txt
+}
+extension EGL_EXT_platform_wayland {
+ number 63
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_wayland.txt
+}
+extension EGL_KHR_lock_surface3 {
+ number 64
+ flags public
+ filename extensions/KHR/EGL_KHR_lock_surface3.txt
+}
+extension EGL_KHR_cl_event2 {
+ number 65
+ flags public
+ filename extensions/KHR/EGL_KHR_cl_event2.txt
+}
+extension EGL_KHR_gl_colorspace {
+ number 66
+ flags public
+ filename extensions/KHR/EGL_KHR_gl_colorspace.txt
+}
+extension EGL_EXT_protected_surface {
+ number 67
+ flags public
+ filename extensions/EXT/EGL_EXT_protected_surface.txt
+}
+extension EGL_KHR_platform_android {
+ number 68
+ flags public
+ filename extensions/KHR/EGL_KHR_platform_android.txt
+}
+extension EGL_KHR_platform_gbm {
+ number 69
+ flags public
+ filename extensions/KHR/EGL_KHR_platform_gbm.txt
+}
+extension EGL_KHR_platform_wayland {
+ number 70
+ flags public
+ filename extensions/KHR/EGL_KHR_platform_wayland.txt
+}
+extension EGL_KHR_platform_x11 {
+ number 71
+ flags public
+ filename extensions/KHR/EGL_KHR_platform_x11.txt
+}
+extension EGL_EXT_device_base {
+ number 72
+ flags public
+ filename extensions/EXT/EGL_EXT_device_base.txt
+}
+extension EGL_EXT_platform_device {
+ number 73
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_device.txt
+}
+extension EGL_NV_device_cuda {
+ number 74
+ flags public
+ filename extensions/NV/EGL_NV_device_cuda.txt
+}
+extension EGL_NV_cuda_event {
+ number 75
+ flags public
+ filename extensions/NV/EGL_NV_cuda_event.txt
+}
+extension EGL_TIZEN_image_native_buffer {
+ number 76
+ flags public
+ filename extensions/TIZEN/EGL_TIZEN_image_native_buffer.txt
+}
+extension EGL_TIZEN_image_native_surface {
+ number 77
+ flags public
+ filename extensions/TIZEN/EGL_TIZEN_image_native_surface.txt
+}
+extension EGL_EXT_output_base {
+ number 78
+ flags public
+ filename extensions/EXT/EGL_EXT_output_base.txt
+}
+extension EGL_EXT_device_drm {
+ number 79
+ flags public
+ filename extensions/EXT/EGL_EXT_device_drm.txt
+ alias EGL_EXT_output_drm
+}
+extension EGL_EXT_device_openwf {
+ number 80
+ flags public
+ filename extensions/EXT/EGL_EXT_device_openwf.txt
+ alias EGL_EXT_output_openwf
+}
+extension EGL_EXT_stream_consumer_egloutput {
+ number 81
+ flags public
+ filename extensions/EXT/EGL_EXT_stream_consumer_egloutput.txt
+}
+extension EGL_QCOM_gpu_perf {
+ number 82
+ flags private
+ filename extensions/QCOM/EGL_QCOM_gpu_perf.txt
+}
+extension EGL_KHR_partial_update {
+ number 83
+ flags public
+ filename extensions/KHR/EGL_KHR_partial_update.txt
+}
+extension EGL_KHR_swap_buffers_with_damage {
+ number 84
+ flags public
+ filename extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt
+}
+extension EGL_ANGLE_window_fixed_size {
+ number 85
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_window_fixed_size.txt
+}
+extension EGL_EXT_yuv_surface {
+ number 86
+ flags public
+ filename extensions/EXT/EGL_EXT_yuv_surface.txt
+}
+extension EGL_MESA_image_dma_buf_export {
+ number 87
+ flags public
+ filename extensions/MESA/EGL_MESA_image_dma_buf_export.txt
+}
+extension EGL_EXT_device_enumeration {
+ number 88
+ flags public
+ filename extensions/EXT/EGL_EXT_device_enumeration.txt
+}
+extension EGL_EXT_device_query {
+ number 89
+ flags public
+ filename extensions/EXT/EGL_EXT_device_query.txt
+}
+extension EGL_ANGLE_device_d3d {
+ number 90
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_device_d3d.txt
+}
+extension EGL_KHR_create_context_no_error {
+ number 91
+ flags public
+ filename extensions/KHR/EGL_KHR_create_context_no_error.txt
+}
+extension EGL_KHR_debug {
+ number 92
+ flags public
+ filename extensions/KHR/EGL_KHR_debug.txt
+}
+extension EGL_NV_stream_metadata {
+ number 93
+ flags public
+ filename extensions/NV/EGL_NV_stream_metadata.txt
+}
+extension EGL_NV_stream_consumer_gltexture_yuv {
+ number 94
+ flags public
+ filename extensions/NV/EGL_NV_stream_consumer_gltexture_yuv.txt
+}
+extension EGL_IMG_image_plane_attribs {
+ number 95
+ flags public
+ filename extensions/IMG/EGL_IMG_image_plane_attribs.txt
+}
+extension EGL_KHR_mutable_render_buffer {
+ number 96
+ flags public
+ filename extensions/KHR/EGL_KHR_mutable_render_buffer.txt
+}
+extension EGL_EXT_protected_content {
+ number 97
+ flags public
+ filename extensions/EXT/EGL_EXT_protected_content.txt
+}
+extension EGL_ANDROID_presentation_time {
+ number 98
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_presentation_time.txt
+}
+extension EGL_ANDROID_create_native_client_buffer {
+ number 99
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_create_native_client_buffer.txt
+}
+extension EGL_ANDROID_front_buffer_auto_refresh {
+ number 100
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt
+}
+extension EGL_KHR_no_config_context {
+ number 101
+ flags public
+ filename extensions/KHR/EGL_KHR_no_config_context.txt
+}
+extension EGL_KHR_context_flush_control {
+ number 102
+ flags public
+ filename ../OpenGL/extensions/KHR/KHR_context_flush_control.txt
+}
+extension EGL_ARM_implicit_external_sync {
+ number 103
+ flags public
+ filename extensions/ARM/EGL_ARM_implicit_external_sync.txt
+}
+extension EGL_MESA_platform_surfaceless {
+ number 104
+ flags public
+ filename extensions/MESA/EGL_MESA_platform_surfaceless.txt
+}
+extension EGL_EXT_image_dma_buf_import_modifiers {
+ number 105
+ flags public
+ filename extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt
+}
+extension EGL_EXT_pixel_format_float {
+ number 106
+ flags public
+ filename extensions/EXT/EGL_EXT_pixel_format_float.txt
+}
+extension EGL_EXT_gl_colorspace_bt2020_linear {
+ number 107
+ flags public
+ filename extensions/EXT/EGL_EXT_gl_colorspace_bt2020_linear.txt
+ alias EGL_EXT_gl_colorspace_bt2020_pq
+}
+extension EGL_EXT_gl_colorspace_scrgb_linear {
+ number 108
+ flags public
+ filename extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt
+}
+extension EGL_EXT_surface_SMPTE2086_metadata {
+ number 109
+ flags public
+ filename extensions/EXT/EGL_EXT_surface_SMPTE2086_metadata.txt
+}
+extension EGL_NV_stream_fifo_next {
+ number 110
+ flags public
+ filename extensions/NV/EGL_NV_stream_fifo_next.txt
+}
+extension EGL_NV_stream_fifo_synchronous {
+ number 111
+ flags public
+ filename extensions/NV/EGL_NV_stream_fifo_synchronous.txt
+}
+extension EGL_NV_stream_reset {
+ number 112
+ flags public
+ filename extensions/NV/EGL_NV_stream_reset.txt
+}
+extension EGL_NV_stream_frame_limits {
+ number 113
+ flags public
+ filename extensions/NV/EGL_NV_stream_frame_limits.txt
+}
+extension EGL_NV_stream_remote {
+ number 114
+ flags public
+ filename extensions/NV/EGL_NV_stream_remote.txt
+ alias EGL_NV_stream_cross_object
+ alias EGL_NV_stream_cross_display
+ alias EGL_NV_stream_cross_process
+ alias EGL_NV_stream_cross_partition
+ alias EGL_NV_stream_cross_system
+}
+extension EGL_NV_stream_socket {
+ number 115
+ flags public
+ filename extensions/NV/EGL_NV_stream_socket.txt
+ alias EGL_NV_stream_socket_unix
+ alias EGL_NV_stream_socket_inet
+}
+extension EGL_EXT_compositor {
+ number 116
+ flags public
+ filename extensions/EXT/EGL_EXT_compositor.txt
+}
+extension EGL_EXT_surface_CTA861_3_metadata {
+ number 117
+ flags public
+ filename extensions/EXT/EGL_EXT_surface_CTA861_3_metadata.txt
+}
+extension EGL_EXT_gl_colorspace_display_p3 {
+ number 118
+ flags public
+ filename extensions/EXT/EGL_EXT_colorspace_display_p3.txt
+}
+extension EGL_EXT_gl_colorspace_scrgb {
+ number 119
+ flags public
+ filename extensions/EXT/EGL_EXT_gl_colorspace_scrgb.txt
+}
+extension EGL_EXT_image_implicit_sync_control {
+ number 120
+ flags public
+ filename extensions/EXT/EGL_EXT_image_implicit_sync_control.txt
+}
+extension EGL_EXT_bind_to_front {
+ number 121
+ flags public
+ filename extensions/EXT/EGL_EXT_bind_to_front.txt
+}
+extension EGL_ANDROID_get_frame_timestamps {
+ number 122
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_get_frame_timestamps.txt
+}
+extension EGL_ANDROID_get_native_client_buffer {
+ number 123
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt
+}
+extension EGL_NV_context_priority_realtime {
+ number 124
+ flags public
+ filename extensions/NV/EGL_NV_context_priority_realtime.txt
+}
+extension EGL_EXT_image_gl_colorspace {
+ number 125
+ flags public
+ filename extensions/EXT/EGL_EXT_image_gl_colorspace.txt
+}
+extension EGL_KHR_display_reference {
+ number 126
+ flags public
+ filename extensions/KHR/EGL_KHR_display_reference.txt
+}
+extension EGL_NV_stream_flush {
+ number 127
+ flags public
+ filename extensions/NV/EGL_NV_stream_flush.txt
+}
+extension EGL_EXT_sync_reuse {
+ number 128
+ flags public
+ filename extensions/EXT/EGL_EXT_sync_reuse.txt
+}
+extension EGL_EXT_client_sync {
+ number 129
+ flags public
+ filename extensions/EXT/EGL_EXT_client_sync.txt
+}
+extension EGL_EXT_gl_colorspace_display_p3_passthrough {
+ number 130
+ flags public
+ filename extensions/EXT/EGL_EXT_gl_colorspace_display_p3_passthrough.txt
+}
+extension EGL_MESA_query_driver {
+ number 131
+ flags public
+ filename extensions/MESA/EGL_MESA_query_driver.txt
+}
+extension EGL_ANDROID_GLES_layers {
+ number 132
+ flags public
+ filename extensions/ANDROID/EGL_ANDROID_GLES_layers.txt
+}
+extension EGL_NV_n_buffer {
+ number 133
+ flags public
+ filename extensions/NV/EGL_NV_n_buffer.txt
+}
+extension EGL_NV_stream_origin {
+ number 134
+ flags public
+ filename extensions/NV/EGL_NV_stream_origin.txt
+}
+extension EGL_NV_stream_dma {
+ number 135
+ flags public
+ filename extensions/NV/EGL_NV_stream_dma.txt
+}
+extension EGL_WL_bind_wayland_display {
+ number 136
+ flags public
+ filename extensions/WL/EGL_WL_bind_wayland_display.txt
+}
+extension EGL_WL_create_wayland_buffer_from_image {
+ number 137
+ flags public
+ filename extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt
+}
+extension EGL_ARM_image_format {
+ number 138
+ flags public
+ filename extensions/ARM/EGL_ARM_image_format.txt
+}
+extension EGL_NV_stream_consumer_eglimage {
+ number 139
+ flags public
+ filename extensions/NV/EGL_NV_stream_consumer_eglimage.txt
+}
+extension EGL_NV_stream_consumer_eglimage {
+ number 140
+ flags public
+ filename extensions/EXT/EGL_EXT_device_query_name.txt
+}
+extension EGL_EXT_platform_xcb {
+ number 141
+ flags public
+ filename extensions/EXT/EGL_EXT_platform_xcb.txt
+}
+extension EGL_ANGLE_sync_control_rate {
+ number 142
+ flags public
+ filename extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
+}
+extension EGL_EXT_device_persistent_id {
+ number 143
+ flags public
+ filename extensions/EXT/EGL_EXT_device_persistent_id.txt
+}
+extension EGL_EXT_device_drm_render_node {
+ number 144
+ flags public
+ filename extensions/EXT/EGL_EXT_device_drm_render_node.txt
+}
+extension EGL_EXT_config_select_group {
+ number 145
+ flags public
+ filename extensions/EXT/EGL_EXT_config_select_group.txt
+}
+extension EGL_EXT_present_opaque {
+ number 146
+ flags public
+ filename extensions/EXT/EGL_EXT_present_opaque.txt
+}
+extension EGL_EXT_surface_compression {
+ number 147
+ flags public
+ filename extensions/EXT/EGL_EXT_surface_compression.txt
+}
+extension EGL_EXT_explicit_device {
+ number 148
+ flags public
+ filename extensions/EXT/EGL_EXT_explicit_device.txt
+}
+# Next free extension number: 149
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/.htaccess b/glew/auto/EGL-Registry/sdk/docs/man/.htaccess
new file mode 100644
index 0000000..578915b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/.htaccess
@@ -0,0 +1,13 @@
+RewriteEngine on
+
+# Avoid redirect loops
+RewriteCond %{ENV:REDIRECT_STATUS} 200
+RewriteRule ^ - [L]
+
+# Unlike the OpenGL ES and OpenGL reference pages, we're not keeping
+# old versions of the EGL man pages around. Just redirect links to
+# egl/sdk/docs/man/xhtml/*.html to the new HTML 5 pages in html/*.xhtml.
+
+RewriteRule ^xhtml/$ https://www.khronos.org/registry/egl/sdk/docs/man/ [L,R=301]
+RewriteRule ^xhtml/index.html https://www.khronos.org/registry/egl/sdk/docs/man/ [L,R=301]
+RewriteRule ^xhtml/(.*)\.html https://www.khronos.org/registry/egl/sdk/docs/man/html/$1.xhtml [L,R=301]
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/NOTES b/glew/auto/EGL-Registry/sdk/docs/man/NOTES
new file mode 100644
index 0000000..710ee20
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/NOTES
@@ -0,0 +1,59 @@
+egl/ -> EGL Docbook 4.3 + OpenCL stuff
+es/ -> ES Docbook 5 + OpenCL stuff
+
+Only in es/ :
+ OK> accord.js - Javascript for accordion menus
+ OK> genheaders.py - unused
+ OK> makeindex.py - make accordion index frame
+ OK> opengl-man.css - CSS equivalent to content wrapped in old/styles-css.xsl
+ OK> start.html - start page
+ OK> ../index.html - main SDK index
+ OK> ../top.php - top bar of interface
+ OK> ../bottom.php - bottom section of interface
+ OK> style-index.css - CSS for index page
+
+Only in egl/ :
+ OK> EGL_300.png - icon
+ OK> KhronosLogo.jpg - icon
+ OK> index.html - main SDK index (equivalent to es/../index.php)
+ OK> Header.html - top bar of interface
+ OK> headBackground.jpg - background for Header.html
+ NO> TOC.html - accordion index frame, equivalent to output of makeindex.py
+ OK> Intro.html - equivalent to start.html
+ OK> copyright.inc.xsl - inserted by egl-man.xsl into each page
+ NO> ctop.xsl - no longer used?
+ NO> styles-css.xsl - equivalent to es/opengl-man.css
+ NO> maketoc.pl - replaced by es/makeindex.py
+
+Similar files:
+ OK> egl/egl-man.xsl - branched from opengl-man.xsl, should be compared to es/opengl-man.xsl
+ OK> egl/style.css - equivalent to es/style-index.css, includes a couple of other .css files
+ OK> egl/undohtml.css - identical, appears to reset CSS parameters
+ OK> egl/present.css - minor tweak to CSS class name, lev1 -> Level1
+ OK> egl/bullets*gif - accordion menu navigation bullets
+
+
+----------
+ Added from ES:
+ man/index.php - navigation framework, edited for correct title and top bar height
+ man/top.php - from ES but mostly replaced by egl/Header.html
+ man/bottom.php
+ man/headBackground.jpg - from ES
+
+ accord.js
+ bullets-{contract,end,expand}.gif - accordion menus
+ makeindex.py - with edits for EGL instead of ES
+ present.css - matching output of makeindex.py
+ Makefile - with edits from egl/Makefile
+ khronos-man.css - copied from es/opengl-man.css
+ start.html - with massive edits from egl/Intro.html
+ style-index.css - equivalent to egl/style.css
+ khronos-man.xsl - merged from egl/egl-man.xsl and es/opengl-man.xsl.
+ egl-man.xsl - stuff from old egl/egl-man.xsl not being used
+ (yet) in khronos-man.xsl.
+
+ Added from EGL:
+ EGL_300.png
+ KhronosLogo.jpg
+ undohtml.css
+ copyright.inc.xsl
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/README b/glew/auto/EGL-Registry/sdk/docs/man/README
new file mode 100644
index 0000000..9355121
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/README
@@ -0,0 +1 @@
+EGL reference pages, branched from /repos/ogles/branches/1.X/doc/man/xhtml
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/bottom.php b/glew/auto/EGL-Registry/sdk/docs/man/bottom.php
new file mode 100644
index 0000000..b90da9f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/bottom.php
@@ -0,0 +1,9 @@
+<html>
+<head>
+<title>EGL Reference Pages</title>
+</head>
+<frameset cols="280,*">
+ <frame frameborder="0" marginwidth="0" marginheight="0" src="html/indexflat.php">
+ <frame name="pagedisplay" frameborder="0" marginwidth="20" marginheight="20" src="html/start.html">
+</frameset>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/copyright.xml b/glew/auto/EGL-Registry/sdk/docs/man/copyright.xml
new file mode 100644
index 0000000..e71ca98
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/copyright.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<para xmlns="http://docbook.org/ns/docbook" version="5.0">
+ <refsect3 xml:id="copyright">
+ <!-- <title>Copyright</title> -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg"/>
+ </imageobject>
+ <para>
+ Copyright &#169; 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </para>
+ </refsect3>
+</para>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/db4-upgrade.xsl b/glew/auto/EGL-Registry/sdk/docs/man/db4-upgrade.xsl
new file mode 100644
index 0000000..2d3e1cd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/db4-upgrade.xsl
@@ -0,0 +1,1455 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:db = "http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ exclude-result-prefixes="exsl db"
+ version="1.0">
+
+<!--
+# ======================================================================
+# This file is part of DocBook V5.0CR5
+#
+# Copyright 2005 Norman Walsh, Sun Microsystems, Inc., and the
+# Organization for the Advancement of Structured Information
+# Standards (OASIS).
+#
+# Release: $Id: db4-upgrade.xsl 9828 2013-11-03 21:45:22Z tom_schr $
+#
+# Permission to use, copy, modify and distribute this stylesheet
+# and its accompanying documentation for any purpose and without fee
+# is hereby granted in perpetuity, provided that the above copyright
+# notice and this paragraph appear in all copies. The copyright
+# holders make no representation about the suitability of the schema
+# for any purpose. It is provided "as is" without expressed or implied
+# warranty.
+#
+# Please direct all questions, bug reports, or suggestions for changes
+# to the docbook@lists.oasis-open.org mailing list. For more
+# information, see http://www.oasis-open.org/docbook/.
+#
+# ======================================================================
+-->
+
+<xsl:param name="db5.version" select="'5.0'"/> <!-- DocBook version for the output 5.0 and 5.1 only current values -->
+<xsl:param name="db5.version.string" select="$db5.version"/> <!-- Set this if you want a local version number -->
+<xsl:param name="keep.numbered.sections" select="'0'"/> <!-- Set to 1 to keep numbered sections, default changes to recursive -->
+
+<xsl:variable name="version" select="'1.1'"/> <!-- version of this transform -->
+
+<xsl:output method="xml" encoding="utf-8" indent="no" omit-xml-declaration="yes"/>
+
+<xsl:preserve-space elements="*"/>
+<xsl:param name="rootid">
+ <xsl:choose>
+ <xsl:when test="/*/@id">
+ <xsl:value-of select="/*/@id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>UNKNOWN</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:param name="defaultDate" select="''"/>
+
+<xsl:template match="/">
+ <xsl:variable name="converted">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:comment>
+ <xsl:text> Converted by db4-upgrade version </xsl:text>
+ <xsl:value-of select="$version"/>
+ <xsl:text> </xsl:text>
+ </xsl:comment>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="exsl:node-set($converted)/*" mode="addNS"/>
+</xsl:template>
+
+<!-- Convert numbered sections into recursive sections, unless
+ $keep.numbered.sections is set to '1' -->
+<xsl:template match="sect1|sect2|sect3|sect4|sect5|section"
+ priority="200">
+ <xsl:choose>
+ <xsl:when test="$keep.numbered.sections = '1'">
+ <xsl:element name="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <section>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </section>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<!-- This is the template for the elements (book, article, set) that allow
+ title, subtitle, and titleabbrev before (or in) info, but not after.
+ If title, subtitle, or titleabbrev exist both inside and outside the
+ info block, everything is moved inside. Otherwise things are left as is. -->
+<xsl:template match="bookinfo|articleinfo|artheader|setinfo" priority="200">
+ <xsl:variable name="title.inside.info">
+ <xsl:choose>
+ <xsl:when test="./title or ./subtitle or ./titleabbrev">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="title.outside.info">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::title or preceding-sibling::subtitle or preceding-sibling::titleabbrev">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <info>
+ <xsl:if test="$title.inside.info = '1' and $title.outside.info = '1'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Found title|subtitle|titleabbrev both inside and outside </xsl:text><xsl:value-of select="local-name(.)"/>
+ <xsl:text>. Moving all inside info element.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="preceding-sibling::title and not(./title)">
+ <xsl:apply-templates select="preceding-sibling::title" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="preceding-sibling::subtitle and not(./subtitle)">
+ <xsl:apply-templates select="preceding-sibling::subtitle" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="preceding-sibling::titleabbrev and not(./titleabbrev)">
+ <xsl:apply-templates select="preceding-sibling::titleabbrev" mode="copy"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </info>
+</xsl:template>
+<!-- This is the template for the elements (all except book, article, set) that
+ allow title, subtitle, and titleabbrev after (or in) info, but not before.
+ If an info element exists, and there is a title, subtitle, or titleabbrev
+ after the info element, then the element is moved inside the info block.
+ However, if a duplicate element exists inside the info element, that element
+ is kept, and the one outside is dropped.-->
+<xsl:template match="appendixinfo|blockinfo|bibliographyinfo|glossaryinfo
+ |indexinfo|setindexinfo|chapterinfo
+ |sect1info|sect2info|sect3info|sect4info|sect5info|sectioninfo
+ |refsect1info|refsect2info|refsect3info|refsectioninfo
+ |referenceinfo|partinfo
+ |objectinfo|prefaceinfo|refsynopsisdivinfo
+ |screeninfo|sidebarinfo"
+ priority="200">
+ <xsl:variable name="title.inside.info">
+ <xsl:choose>
+ <xsl:when test="./title or ./subtitle or ./titleabbrev">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- place title/subtitle/titleabbrev inside if any of them are already inside.
+ otherwise place them before. -->
+ <xsl:choose>
+ <xsl:when test="$title.inside.info = '0'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Keeping one or more title elements before </xsl:text><xsl:value-of select="local-name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="following-sibling::title and not(./title)">
+ <xsl:apply-templates select="following-sibling::title" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="following-sibling::subtitle and not(./subtitle)">
+ <xsl:apply-templates select="following-sibling::subtitle" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="following-sibling::titleabbrev and not(./titleabbrev)">
+ <xsl:apply-templates select="following-sibling::titleabbrev" mode="copy"/>
+ </xsl:if>
+ <info>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </info>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Moving one or more title elements into </xsl:text><xsl:value-of select="local-name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <info>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:if test="following-sibling::title and not(./title)">
+ <xsl:apply-templates select="following-sibling::title" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="following-sibling::subtitle and not(./subtitle)">
+ <xsl:apply-templates select="following-sibling::subtitle" mode="copy"/>
+ </xsl:if>
+ <xsl:if test="following-sibling::titleabbrev and not(./titleabbrev)">
+ <xsl:apply-templates select="following-sibling::titleabbrev" mode="copy"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </info>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="refentryinfo"
+ priority="200">
+ <info>
+ <xsl:call-template name="copy.attributes"/>
+
+ <xsl:if test="title">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding title from refentryinfo!</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="titleabbrev">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding titleabbrev from refentryinfo!</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="subtitle">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding subtitle from refentryinfo!</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </info>
+</xsl:template>
+
+<xsl:template match="refmiscinfo"
+ priority="200">
+ <refmiscinfo>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'class'"/>
+ </xsl:call-template>
+ <xsl:if test="@class">
+ <xsl:choose>
+ <xsl:when test="@class = 'source'
+ or @class = 'version'
+ or @class = 'manual'
+ or @class = 'sectdesc'
+ or @class = 'software'">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@class"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">
+ <xsl:value-of select="'other'"/>
+ </xsl:attribute>
+ <xsl:attribute name="otherclass">
+ <xsl:value-of select="@class"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </refmiscinfo>
+</xsl:template>
+
+<xsl:template match="corpauthor" priority="200">
+ <author>
+ <xsl:call-template name="copy.attributes"/>
+ <orgname>
+ <xsl:apply-templates/>
+ </orgname>
+ </author>
+</xsl:template>
+
+<xsl:template match="corpname" priority="200">
+ <orgname>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </orgname>
+</xsl:template>
+
+<xsl:template match="author[not(personname)]|editor[not(personname)]|othercredit[not(personname)]" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <personname>
+ <xsl:apply-templates select="honorific|firstname|surname|othername|lineage"/>
+ </personname>
+ <xsl:apply-templates select="*[not(self::honorific|self::firstname|self::surname
+ |self::othername|self::lineage)]"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="address|programlisting|screen|funcsynopsisinfo
+ |classsynopsisinfo" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'format'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<!-- Suppress attributes with default values (i.e., added implicitly by DTD) -->
+<xsl:template match="productname" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress.default" select="'class=trade'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="orderedlist" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress.default" select="'inheritnum=ignore continuation=restarts'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="literallayout" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'format'"/><!-- Dropped entirely in DB5 -->
+ <xsl:with-param name="suppress.default" select="'class=normal'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="equation" priority="200">
+ <xsl:choose>
+ <xsl:when test="not(title)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param
+ name="message"
+ >Convert equation without title to informal equation.</xsl:with-param>
+ </xsl:call-template>
+ <informalequation>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </informalequation>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="imagedata|videodata|audiodata|textdata" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'srccredit'"/>
+ </xsl:call-template>
+ <xsl:if test="@srccredit">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check conversion of srccredit </xsl:text>
+ <xsl:text>(othercredit="srccredit").</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <info>
+ <othercredit class="other" otherclass="srccredit">
+ <orgname>???</orgname>
+ <contrib>
+ <xsl:value-of select="@srccredit"/>
+ </contrib>
+ </othercredit>
+ </info>
+ </xsl:if>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="sgmltag" priority="200">
+ <tag>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:if test="@class = 'sgmlcomment'">
+ <xsl:attribute name="class">comment</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </tag>
+</xsl:template>
+
+<xsl:template match="inlinegraphic[@format='linespecific']" priority="210">
+ <textobject>
+ <textdata>
+ <xsl:call-template name="copy.attributes"/>
+ </textdata>
+ </textobject>
+</xsl:template>
+
+<xsl:template match="inlinegraphic" priority="200">
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata>
+ <xsl:call-template name="copy.attributes"/>
+ </imagedata>
+ </imageobject>
+ </inlinemediaobject>
+</xsl:template>
+
+<xsl:template match="graphic[@format='linespecific']" priority="210">
+ <mediaobject>
+ <textobject>
+ <textdata>
+ <xsl:call-template name="copy.attributes"/>
+ </textdata>
+ </textobject>
+ </mediaobject>
+</xsl:template>
+
+<xsl:template match="graphic" priority="200">
+ <mediaobject>
+ <imageobject>
+ <imagedata>
+ <xsl:call-template name="copy.attributes"/>
+ </imagedata>
+ </imageobject>
+ </mediaobject>
+</xsl:template>
+
+<xsl:template match="pubsnumber" priority="200">
+ <biblioid class="pubsnumber">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </biblioid>
+</xsl:template>
+
+<xsl:template match="invpartnumber" priority="200">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting invpartnumber to biblioid otherclass="invpartnumber".</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <biblioid class="other" otherclass="invpartnumber">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </biblioid>
+</xsl:template>
+
+<xsl:template match="contractsponsor" priority="200">
+ <xsl:variable name="contractnum"
+ select="preceding-sibling::contractnum|following-sibling::contractnum"/>
+
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting contractsponsor to othercredit="contractsponsor".</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <othercredit class="other" otherclass="contractsponsor">
+ <orgname>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </orgname>
+ <xsl:for-each select="$contractnum">
+ <contrib role="contractnum">
+ <xsl:apply-templates select="node()"/>
+ </contrib>
+ </xsl:for-each>
+ </othercredit>
+</xsl:template>
+
+<xsl:template match="contractnum" priority="200">
+ <xsl:if test="not(preceding-sibling::contractsponsor
+ |following-sibling::contractsponsor)
+ and not(preceding-sibling::contractnum)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting contractnum to othercredit="contractnum".</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <othercredit class="other" otherclass="contractnum">
+ <orgname>???</orgname>
+ <xsl:for-each select="self::contractnum
+ |preceding-sibling::contractnum
+ |following-sibling::contractnum">
+ <contrib>
+ <xsl:apply-templates select="node()"/>
+ </contrib>
+ </xsl:for-each>
+ </othercredit>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="isbn|issn" priority="200">
+ <biblioid class="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </biblioid>
+</xsl:template>
+
+<xsl:template match="biblioid[count(*) = 1
+ and ulink
+ and normalize-space(text()) = '']" priority="200">
+ <biblioid xlink:href="{ulink/@url}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates select="ulink/node()"/>
+ </biblioid>
+</xsl:template>
+
+<xsl:template match="authorblurb" priority="200">
+ <personblurb>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </personblurb>
+</xsl:template>
+
+<xsl:template match="collabname" priority="200">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check conversion of collabname </xsl:text>
+ <xsl:text>(orgname role="collabname").</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <orgname role="collabname">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </orgname>
+</xsl:template>
+
+<xsl:template match="modespec" priority="200">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding modespec (</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>).</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="mediaobjectco" priority="200">
+ <mediaobject>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </mediaobject>
+</xsl:template>
+
+<xsl:template match="remark">
+ <!-- get rid of any embedded markup if the version is 5.0. If it's > 5.0, leave markup in. -->
+ <remark>
+ <xsl:copy-of select="@*"/>
+ <xsl:choose>
+ <xsl:when test="$db5.version>5.0">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </remark>
+</xsl:template>
+
+<xsl:template match="biblioentry/title
+ |bibliomset/title
+ |biblioset/title
+ |bibliomixed/title" priority="400">
+ <citetitle>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </citetitle>
+</xsl:template>
+
+<xsl:template match="biblioentry/titleabbrev|biblioentry/subtitle
+ |bibliomset/titleabbrev|bibliomset/subtitle
+ |biblioset/titleabbrev|biblioset/subtitle
+ |bibliomixed/titleabbrev|bibliomixed/subtitle"
+ priority="400">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="biblioentry/contrib
+ |bibliomset/contrib
+ |bibliomixed/contrib" priority="200">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check conversion of contrib </xsl:text>
+ <xsl:text>(othercontrib="contrib").</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <othercredit class="other" otherclass="contrib">
+ <orgname>???</orgname>
+ <contrib>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </contrib>
+ </othercredit>
+</xsl:template>
+
+<xsl:template match="link" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="ulink" priority="200">
+ <xsl:choose>
+ <xsl:when test="node()">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting ulink to link.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <link xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting ulink to uri.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <uri xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:value-of select="@url"/>
+ </uri>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="olink" priority="200">
+ <xsl:if test="@linkmode">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding linkmode on olink.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="@targetdocent">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting olink targetdocent to targetdoc.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <olink targetdoc="{unparsed-entity-uri(@targetdocent)}">
+ <xsl:for-each select="@*">
+ <xsl:if test="name(.) != 'targetdocent'
+ and name(.) != 'linkmode'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </olink>
+ </xsl:when>
+ <xsl:otherwise>
+ <olink>
+ <xsl:for-each select="@*">
+ <xsl:if test="name(.) != 'linkmode'">
+ <xsl:copy/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </olink>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="biblioentry/firstname
+ |biblioentry/surname
+ |biblioentry/othername
+ |biblioentry/lineage
+ |biblioentry/honorific
+ |bibliomset/firstname
+ |bibliomset/surname
+ |bibliomset/othername
+ |bibliomset/lineage
+ |bibliomset/honorific" priority="200">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::firstname
+ |preceding-sibling::surname
+ |preceding-sibling::othername
+ |preceding-sibling::lineage
+ |preceding-sibling::honorific">
+ <!-- nop -->
+ </xsl:when>
+ <xsl:otherwise>
+ <personname>
+ <xsl:apply-templates select="../firstname
+ |../surname
+ |../othername
+ |../lineage
+ |../honorific" mode="copy"/>
+ </personname>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="areaset" priority="200">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'coords'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="date|pubdate" priority="200">
+ <xsl:variable name="rp1" select="substring-before(normalize-space(.), ' ')"/>
+ <xsl:variable name="rp2"
+ select="substring-before(substring-after(normalize-space(.), ' '),
+ ' ')"/>
+ <xsl:variable name="rp3"
+ select="substring-after(substring-after(normalize-space(.), ' '), ' ')"/>
+
+ <xsl:variable name="p1">
+ <xsl:choose>
+ <xsl:when test="contains($rp1, ',')">
+ <xsl:value-of select="substring-before($rp1, ',')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rp1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="p2">
+ <xsl:choose>
+ <xsl:when test="contains($rp2, ',')">
+ <xsl:value-of select="substring-before($rp2, ',')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rp2"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="p3">
+ <xsl:choose>
+ <xsl:when test="contains($rp3, ',')">
+ <xsl:value-of select="substring-before($rp3, ',')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rp3"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="date">
+ <xsl:choose>
+ <xsl:when test="string($p1+1) != 'NaN' and string($p3+1) != 'NaN'">
+ <xsl:choose>
+ <xsl:when test="$p2 = 'Jan' or $p2 = 'January'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-01-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Feb' or $p2 = 'February'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-02-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Mar' or $p2 = 'March'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-03-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Apr' or $p2 = 'April'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-04-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'May'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-05-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Jun' or $p2 = 'June'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-06-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Jul' or $p2 = 'July'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-07-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Aug' or $p2 = 'August'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-08-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Sep' or $p2 = 'September'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-09-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Oct' or $p2 = 'October'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-10-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Nov' or $p2 = 'November'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-11-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p2 = 'Dec' or $p2 = 'December'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-12-</xsl:text>
+ <xsl:number value="$p1" format="01"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="string($p2+1) != 'NaN' and string($p3+1) != 'NaN'">
+ <xsl:choose>
+ <xsl:when test="$p1 = 'Jan' or $p1 = 'January'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-01-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Feb' or $p1 = 'February'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-02-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Mar' or $p1 = 'March'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-03-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Apr' or $p1 = 'April'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-04-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'May'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-05-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Jun' or $p1 = 'June'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-06-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Jul' or $p1 = 'July'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-07-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Aug' or $p1 = 'August'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-08-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Sep' or $p1 = 'September'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-09-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Oct' or $p1 = 'October'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-10-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Nov' or $p1 = 'November'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-11-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:when test="$p1 = 'Dec' or $p1 = 'December'">
+ <xsl:number value="$p3" format="0001"/>
+ <xsl:text>-12-</xsl:text>
+ <xsl:number value="$p2" format="01"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="normalize-space($date) != normalize-space(.)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converted </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text> into </xsl:text>
+ <xsl:value-of select="$date"/>
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:value-of select="$date"/>
+ </xsl:copy>
+ </xsl:when>
+
+ <xsl:when test="$defaultDate != ''">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Unparseable date: </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text> (Using default: </xsl:text>
+ <xsl:value-of select="$defaultDate"/>
+ <xsl:text>)</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:copy-of select="$defaultDate"/>
+ <xsl:comment>
+ <xsl:value-of select="."/>
+ </xsl:comment>
+ </xsl:copy>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- these don't really matter anymore
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Unparseable date: </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(.)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="title|subtitle|titleabbrev" priority="300">
+ <xsl:variable name="local.name" select="local-name(.)"/>
+ <xsl:variable name="parent.name" select="local-name(..)"/>
+
+ <!-- First three tests drop element if parent ZZZ already has
+ ZZZinfo/title (or subtitle, or titleabbrev). -->
+ <xsl:choose>
+ <xsl:when test="../*[local-name(.) = concat($parent.name, 'info')]/*[local-name(.) = $local.name]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check </xsl:text>
+ <xsl:value-of select="$parent.name"/>
+ <xsl:text> title.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Before 4.0, <articleinfo> was known as <artheader> -->
+ <xsl:when test="$parent.name = 'article' and ../artheader/*[local-name(.) = $local.name]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check </xsl:text>
+ <xsl:value-of select="$parent.name"/>
+ <xsl:text> title.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="../blockinfo/*[local-name(.) = $local.name]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Check </xsl:text>
+ <xsl:value-of select="$parent.name"/>
+ <xsl:text> title.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- always drop title, subtitle, and titleabbrev from refentryinfo -->
+ <xsl:when test="$parent.name = 'refentryinfo'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Removing title in refentryinfo.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Also drop title, subtitle, and titleabbrev when they appear after info.
+ The title is picked up and moved either into or before the info element
+ in the templates that handle info elements. -->
+ <xsl:when test="preceding-sibling::*[local-name(.) = concat($parent.name, 'info')]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Removing </xsl:text><xsl:value-of select="$local.name"/>
+ <xsl:text> after </xsl:text><xsl:value-of select="$parent.name"/><xsl:text>info. Moved before or inside info.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- this covers block elements that use blockinfo-->
+ <xsl:when test="preceding-sibling::blockinfo">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Removing </xsl:text><xsl:value-of select="$local.name"/>
+ <xsl:text> after blockinfo. Moved before or inside info.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- The next clause removes title, subtitle, or titleabbrev if it was
+ moved inside the info block. Only happens when one or more of these
+ elements occurs both inside and outside the info element. -->
+ <xsl:when test="following-sibling::bookinfo[title|subtitle|titleabbrev] or
+ following-sibling::articleinfo[title|subtitle|titleabbrev] or
+ following-sibling::artheader[title|subtitle|titleabbrev] or
+ following-sibling::setinfo[title|subtitle|titleabbrev]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Removing </xsl:text><xsl:value-of select="$local.name"/>
+ <xsl:text>. Has been moved inside info.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Allow abstract inside valid biblio* elements, and inside info elements, otherwise drop -->
+<xsl:template match="abstract" priority="300">
+ <xsl:choose>
+ <xsl:when test="not(contains(name(parent::*),'info'))
+ and not(parent::biblioentry) and not(parent::bibliomixed)
+ and not(parent::bibliomset) and not(parent::biblioset)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>CHECK abstract: removed from output (invalid location in 5.0).</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="copy"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="indexterm">
+ <!-- don't copy the defaulted significance='normal' attribute -->
+ <indexterm>
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress">
+ <xsl:if test="@significance = 'normal'">significance</xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </indexterm>
+</xsl:template>
+
+<xsl:template match="ackno" priority="200">
+ <acknowledgements>
+ <xsl:copy-of select="@*"/>
+ <para>
+ <xsl:apply-templates/>
+ </para>
+ </acknowledgements>
+</xsl:template>
+
+<xsl:template match="lot|lotentry|tocback|tocchap|tocfront|toclevel1|
+ toclevel2|toclevel3|toclevel4|toclevel5|tocpart" priority="200">
+ <tocdiv>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ </tocdiv>
+</xsl:template>
+
+<xsl:template match="action" priority="200">
+ <phrase remap="action">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </phrase>
+</xsl:template>
+
+<xsl:template match="beginpage" priority="200">
+ <xsl:comment> beginpage pagenum=<xsl:value-of select="@pagenum"/> </xsl:comment>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Replacing beginpage with comment</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="structname|structfield" priority="200">
+ <varname remap="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </varname>
+</xsl:template>
+
+<!-- ====================================================================== -->
+<!-- glossterm and term have broader content models in 4.x than 5.0.
+ Warn when an unsupported element is found under glossterm.
+ Because the synopsis elements can contain things that phrase cannot,
+ leave them as is and warn.
+ For other elements, change them into phrase recursively and lose attributes.
+-->
+<xsl:template match="glossterm|term">
+ <xsl:element name="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates mode="clean-terms"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- Any other elements inside term or glossterm which doesn't have a
+ template rule are copied
+-->
+<xsl:template match="*" mode="clean-terms">
+ <xsl:apply-templates select="." mode="copy"/>
+</xsl:template>
+
+
+<!-- The synopsis elements have child elements that don't work inside phrase, plus
+ they have attributes that shouldn't be lost. So, leave as is, but warn. -->
+<xsl:template match="classsynopsis|cmdsynopsis|constructorsynopsis
+ |destructorsynopsis|fieldsynopsis|methodsynopsis|synopsis" mode="clean-terms">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>CHECK OUTPUT: Found </xsl:text><xsl:value-of select="local-name(.)"/>
+ <xsl:text> inside </xsl:text><xsl:value-of select="local-name(..)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:element name="{local-name(.)}">
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- The following elements probably can be safely turned into phrase recursively -->
+<xsl:template match="authorinitials|corpcredit|interface|medialabel|othercredit|revhistory" mode="clean-terms">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Replacing </xsl:text><xsl:value-of select="local-name(.)"/>
+ <xsl:text> inside </xsl:text><xsl:value-of select="local-name(..)"/>
+ <xsl:text> with phrase.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <phrase remap="{local-name(.)}">
+ <!-- Don't copy attributes -->
+ <xsl:apply-templates mode="make-phrase"/>
+ </phrase>
+</xsl:template>
+
+<!-- affiliation can appear in a much smaller number of elements in 5.0. But, it contains
+ elements that cannot appear in a phrase. So, replace all child elements, recursively,
+ with <phrase remap="element name"... Don't keep attributes, which won't work on phrase. -->
+
+<xsl:template match="affiliation[not(parent::author) and not(parent::collab) and not(parent::editor) and not(parent::org) and not(parent::othercredit) and not(parent::person)]">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>CHECK OUTPUT: Converting </xsl:text><xsl:value-of select="local-name(.)"/>
+ <xsl:text> to phrase in </xsl:text><xsl:value-of select="local-name(..)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <phrase remap="{local-name(.)}">
+ <!-- Don't copy attributes -->
+ <xsl:apply-templates mode="make-phrase"/>
+ </phrase>
+</xsl:template>
+
+<!-- This template recursively changes an element with remap="name of element".
+ Does this recursively through children. -->
+<xsl:template match="*" mode="make-phrase">
+ <phrase remap="{local-name(.)}">
+ <!-- Don't copy attributes -->
+ <xsl:apply-templates mode="make-phrase"/>
+ </phrase>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<!-- 6 Feb 2008, ndw changed mode=copy so that it only copies the first level,
+ then it switches back to "normal" mode so that other rewriting templates
+ catch embedded fixes -->
+
+<!--
+<xsl:template match="ulink" priority="200" mode="copy">
+ <xsl:choose>
+ <xsl:when test="node()">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting ulink to phrase.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <phrase xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </phrase>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting ulink to uri.</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <uri xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:value-of select="@url"/>
+ </uri>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sgmltag" priority="200" mode="copy">
+ <tag>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </tag>
+</xsl:template>
+-->
+
+<xsl:template match="*" mode="copy">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<!--
+<xsl:template match="comment()|processing-instruction()|text()" mode="copy">
+ <xsl:copy/>
+</xsl:template>
+-->
+
+<!-- ====================================================================== -->
+
+<xsl:template match="*">
+ <xsl:copy>
+ <xsl:call-template name="copy.attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="comment()|processing-instruction()|text()">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="copy.attributes">
+ <xsl:param name="src" select="."/>
+ <xsl:param name="suppress" select="''"/>
+ <xsl:param name="suppress.default" select="''"/>
+
+ <xsl:for-each select="$src/@*">
+ <xsl:variable name="suppressed.value">
+ <xsl:choose>
+ <xsl:when test="not(contains($suppress.default, concat(local-name(.),'=')))">
+ <xsl:text>this-value-never-matches</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before(substring-after(concat($suppress.default,' '), concat(local-name(.),'=')),' ')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'moreinfo'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding moreinfo on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'lang'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'id'">
+ <xsl:attribute name="xml:id">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$suppress = local-name(.)"/>
+ <xsl:when test=". = $suppressed.value"/>
+ <xsl:when test="local-name(.) = 'float'">
+ <xsl:choose>
+ <xsl:when test=". = '1'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding float on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="not($src/@floatstyle)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Adding floatstyle='normal' on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:attribute name="floatstyle">
+ <xsl:text>normal</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test=". = '0'">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding float on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Discarding float on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="not($src/@floatstyle)">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Adding floatstyle='</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>' on </xsl:text>
+ <xsl:value-of select="local-name($src)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:attribute name="floatstyle">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'entityref'">
+ <xsl:attribute name="fileref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <xsl:when test="local-name($src) = 'simplemsgentry'
+ and local-name(.) = 'audience'">
+ <xsl:attribute name="msgaud">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($src) = 'simplemsgentry'
+ and local-name(.) = 'origin'">
+ <xsl:attribute name="msgorig">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($src) = 'simplemsgentry'
+ and local-name(.) = 'level'">
+ <xsl:attribute name="msglevel">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+
+ <!-- * for upgrading XSL litprog params documentation -->
+ <xsl:when test="local-name($src) = 'refmiscinfo'
+ and local-name(.) = 'role'
+ and . = 'type'
+ ">
+ <xsl:call-template name="emit-message">
+ <xsl:with-param name="message">
+ <xsl:text>Converting refmiscinfo@role=type to </xsl:text>
+ <xsl:text>@class=other,otherclass=type</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:attribute name="class">other</xsl:attribute>
+ <xsl:attribute name="otherclass">type</xsl:attribute>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:copy/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template match="*" mode="addNS">
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = ''">
+ <xsl:element name="{local-name(.)}"
+ namespace="http://docbook.org/ns/docbook">
+ <xsl:if test="not(ancestor::*[namespace-uri(.)=''])">
+ <xsl:attribute name="version"><xsl:value-of select="$db5.version.string"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="addNS"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:if test="namespace-uri(.) = 'http://docbook.org/ns/docbook' and
+ not(ancestor::*[namespace-uri(.)='http://docbook.org/ns/docbook'])">
+ <xsl:attribute name="version"><xsl:value-of select="$db5.version.string"/></xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="addNS"/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="comment()|processing-instruction()|text()" mode="addNS">
+ <xsl:copy/>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="emit-message">
+ <xsl:param name="message"/>
+ <xsl:message>
+ <xsl:value-of select="$message"/>
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>)</xsl:text>
+ </xsl:message>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindAPI.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindAPI.xml
new file mode 100644
index 0000000..3dc1b20
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindAPI.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglBindAPI">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglBindAPI</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglBindAPI</refname>
+ <refpurpose>Set the current rendering API</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglBindAPI</function></funcdef>
+ <paramdef>EGLenum <parameter>api</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>api</parameter></term>
+ <listitem>
+ <para>
+ Specifies the client API to bind, one of
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, or
+ <constant>EGL_OPENVG_API</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglBindAPI</function> defines the current
+ rendering API for EGL in the thread it is called from. The
+ current rendering API is one of the client rendering APIs
+ supported by the EGL implementation, and affects the
+ behavior of other EGL commands including
+ <function>eglCreateContext</function>,
+ <function>eglGetCurrentContext</function>,
+ <function>eglGetCurrentDisplay</function>,
+ <function>eglGetCurrentSurface</function>,
+ <function>eglMakeCurrent</function>,
+ <function>eglWaitClient</function>, and
+ <function>eglWaitNative</function>.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENGL_API</constant>, the current rendering
+ API is set to the OpenGL API.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENGL_ES_API</constant>, the current
+ rendering API is set to the OpenGL ES API.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENVG_API</constant>, the current rendering
+ API is set to the OpenVG API.
+ </para>
+ <para>
+ If an error occurs, the current rendering API is unchanged.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglBindAPI</function> and the corresponding
+ <constant>EGL_OPENGL_ES_API</constant> and
+ <constant>EGL_OPENVG_API</constant>
+ <parameter>api</parameter> parameters are supported only if
+ the EGL version is 1.2 or greater. The
+ <constant>EGL_OPENGL_API</constant> parameter is supported
+ only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ The initial value of the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <constant>EGL_NONE</constant> (however,
+ <constant>EGL_NONE</constant> is not a valid
+ <parameter>api</parameter> parameter to
+ <function>eglBindAPI</function>).
+ </para>
+ <para>
+ The current rendering API can be queried by calling
+ <function>eglQueryAPI</function>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>api</parameter> is not one of the accepted
+ tokens, or if the specified client API is not supported by
+ the EGL implementation.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindTexImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindTexImage.xml
new file mode 100644
index 0000000..70d05c7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglBindTexImage.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglBindTexImage">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglBindTexImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglBindTexImage</refname>
+ <refpurpose>
+ Defines a two-dimensional texture image
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglBindTexImage</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>buffer</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>Specifies the texture image data.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ The texture image consists of the image data in <parameter>buffer</parameter> for the specified surface, and need not be copied.
+ </para>
+ <para>
+ The texture target, the texture format and the size of the texture components are derived from
+ attributes of the specified surface, which must be a pbuffer supporting one of the
+ <constant>EGL_BIND_TO_TEXTURE_RGB</constant> or <constant>EGL_BIND_TO_TEXTURE_RGBA</constant> attributes.
+ </para>
+ <para>
+ The pbuffer attribute <constant>EGL_TEXTURE_FORMAT</constant> determines the base internal format
+ of the texture.
+ </para>
+ <para>
+ The texture target is derived from the <constant>EGL_TEXTURE_TARGET</constant> attribute of surface.
+ If the attribute value is <constant>EGL_TEXTURE_2D</constant>, then <parameter>buffer</parameter> defines a texture for
+ the two-dimensional texture object which is bound to the current context (hereafter
+ referred to as the current texture object).
+ </para>
+ <para>
+ If <parameter>display</parameter> and <parameter>surface</parameter> are the display and surface for the calling thread's current
+ context, <function>eglBindTexImage</function> performs an implicit <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>.
+ For other surfaces, <function>eglBindTexImage</function> waits for all effects from previously issued OpenGL ES commands
+ drawing to the surface to complete before defining the texture image, as
+ though <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry> were called on the last context to which that surface were bound.
+ </para>
+ <para>
+ After <function>eglBindTexImage</function> is called, the specified surface is no longer available
+ for reading or writing. Any read operation, such as <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry> or
+ <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>, which reads values from any of the surface's color buffers or ancillary
+ buffers will produce indeterminate results. In addition, draw operations that are
+ done to the surface before its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context and thread
+ then rendering commands will be processed and the context state will be updated,
+ but the surface may or may not be written.
+ </para>
+ <para>
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling <function>eglBindTexImage</function>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <constant>EGL_MIPMAP_TEXTURE</constant> attribute of the pbuffer being bound is
+ <constant>EGL_TRUE</constant>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The OpenGL ES texture parameter <constant>GL_GENERATE_MIPMAP</constant> is <constant>GL_TRUE</constant> for
+ the currently bound texture.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The value of the <constant>EGL_MIPMAP_LEVEL</constant> attribute of the pbuffer being bound is
+ equal to the value of the texture parameter <constant>GL_TEXTURE_BASE_LEVEL</constant>.
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> has no effect if it is
+ called on a bound surface.
+ </para>
+ <para>
+ Any existing images associated with the different mipmap levels of the texture object
+ are freed (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry>
+ was called with an image of zero width).
+ </para>
+ <para>
+ The color buffer is bound to a texture object. If the texture object is
+ shared between contexts, then the color buffer is also shared. If a texture object is
+ deleted before <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry> is called, then the color buffer is released and
+ the surface is made available for reading and writing.
+ </para>
+ <para>
+ It is not an error to call <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry> or
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry> to replace an
+ image of a texture object that has a color buffer bound to it. However, these calls
+ will cause the color buffer to be released back to the surface and new memory will
+ be allocated for the texture. Note that the color buffer is released even if the image
+ that is being defined is a mipmap level that was not defined by the color buffer.
+ </para>
+ <para>
+ <function>eglBindTexImage</function> is ignored if there is no current rendering context.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if
+ <parameter>buffer</parameter> is already bound to a texture.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is
+ set to <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>buffer</parameter> is not a valid buffer
+ (currently only <constant>EGL_BACK_BUFFER</constant> may be
+ specified).
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface, or is
+ not a pbuffer surface supporting texture binding.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglChooseConfig.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglChooseConfig.xml
new file mode 100644
index 0000000..09fd3d7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglChooseConfig.xml
@@ -0,0 +1,929 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglChooseConfig">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglChooseConfig</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglChooseConfig</refname>
+ <refpurpose>
+ return a list of EGL frame buffer configurations that match specified attributes
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglChooseConfig</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
+ <paramdef>EGLint <parameter>config_size</parameter></paramdef>
+ <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>Specifies attributes required to match by configs.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>configs</parameter></term>
+ <listitem><para>Returns an array of frame buffer configurations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config_size</parameter></term>
+ <listitem><para>Specifies the size of the array of frame buffer configurations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>num_config</parameter></term>
+ <listitem><para>Returns the number of frame buffer configurations returned.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglChooseConfig</function> returns in
+ <parameter>configs</parameter> a list of all
+ <acronym>EGL</acronym> frame buffer configurations that
+ match the attributes specified in
+ <parameter>attrib_list</parameter>. The returned
+ <type>EGLConfig</type>s can be used in any
+ <acronym>EGL</acronym> function that requires an
+ <acronym>EGL</acronym> frame buffer configuration.
+ </para>
+ <para>
+ If <parameter>configs</parameter> is not
+ <constant>NULL</constant>, up to
+ <parameter>config_size</parameter> configs will be returned
+ in the array pointed to by <parameter>configs</parameter>.
+ The number of configs actually returned will be returned in
+ *<parameter>num_config</parameter>.
+ </para>
+ <para>
+ If <parameter>configs</parameter> is
+ <constant>NULL</constant>, no configs will be returned in
+ <parameter>configs</parameter>. Instead, the total number of
+ configs matching <parameter>attrib_list</parameter> will be
+ returned in *<parameter>num_config</parameter>. In this case
+ <parameter>config_size</parameter> is ignored. This form of
+ <function>eglChooseConfig</function> is used to determine
+ the number of matching frame buffer configurations, followed
+ by allocating an array of <type>EGLConfig</type> to pass
+ into another call to <function>eglChooseConfig</function>
+ with all other parameters unchanged.
+ </para>
+ <para>
+ All attributes in <parameter>attrib_list</parameter>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value. The list is terminated with
+ <constant>EGL_NONE</constant>. If an attribute is not
+ specified in <parameter>attrib_list</parameter> then the
+ default value (see below) is used (and the attribute is said
+ to be specified implicitly). For example, if
+ <constant>EGL_DEPTH_SIZE</constant> is not specified then it
+ is assumed to be zero. For some attributes, the default is
+ <constant>EGL_DONT_CARE</constant> meaning that any value is
+ OK for this attribute, so the attribute will not be checked.
+ </para>
+ <para>
+ Attributes are matched in an attribute-specific manner. Some
+ of the attributes, such as <constant>EGL_LEVEL</constant>,
+ must match the specified value exactly. Others, such as,
+ <constant>EGL_RED_SIZE</constant> must meet or exceed the
+ specified minimum values. If more than one EGL frame buffer
+ configuration matching all attributes is found, then a list
+ of configurations, sorted according to the ``best'' match
+ criteria, is returned. The match criteria for each attribute
+ and the exact sorting order is defined below.
+ </para>
+ <para>
+ For the bitmask attributes
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant>, only the nonzero bits
+ of the mask are considered when matching. Any bits that are
+ zero in the specified bitmask attribute value may be either
+ zero or one in the resulting config's attribute value.
+ </para>
+ <para>
+ Attributes which may appear in
+ <parameter>attrib_list</parameter>, and their descriptions
+ and allowed values, are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired alpha mask buffer size, in
+ bits. The smallest alpha mask buffers of at least
+ the specified size are preferred. The default value
+ is zero.
+ </para>
+ <para>
+ The alpha mask buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the alpha component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest alpha component size
+ are preferred. Otherwise, color buffers with the
+ largest alpha component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGB texture
+ will be considered. Currently only frame buffer
+ configurations that support pbuffers allow this. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
+ <listitem><para>
+ Must be followed by one of
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGBA
+ texture will be considered. Currently only frame
+ buffer configurations that support pbuffers allow
+ this. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BLUE_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the blue component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest blue component size
+ are preferred. Otherwise, color buffers with the
+ largest blue component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BUFFER_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired color buffer size, in bits.
+ The smallest color buffers of at least the specified
+ size are preferred. The default value is zero.
+ </para>
+ <para>
+ The color buffer size is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>, and does not
+ include any padding bits which may be present in the
+ pixel format. It is usually preferable to specify
+ desired sizes for these color components
+ individually.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by one of
+ <constant>EGL_RGB_BUFFER</constant> or
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para>
+ <para>
+ <constant>EGL_RGB_BUFFER</constant> indicates
+ an RGB color buffer; in this case,
+ attributes <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant> and
+ <constant>EGL_BLUE_SIZE</constant> must be non-zero, and
+ <constant>EGL_LUMINANCE_SIZE</constant> must be zero.
+ </para>
+ <para>
+ <constant>EGL_LUMINANCE_BUFFER</constant> indicates a luminance color
+ buffer. In this case <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant> must be zero, and
+ <constant>EGL_LUMINANCE_SIZE</constant> must be non-zero.
+ </para>
+ <para>
+ For both RGB and luminance color buffers,
+ <constant>EGL_ALPHA_SIZE</constant> may be zero or
+ non-zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_CAVEAT</constant></term>
+ <listitem>
+ <para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, or
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
+ </para>
+ <para>
+ If <constant>EGL_DONT_CARE</constant> is specified,
+ then configs are not matched for this attribute. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ If <constant>EGL_NONE</constant> is specified, then
+ configs are matched for this attribute, but only
+ configs with no caveats (neither
+ <constant>EGL_SLOW_CONFIG</constant> or
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>) will
+ be considered.
+ </para>
+ <para>
+ If <constant>EGL_SLOW_CONFIG</constant> is
+ specified, then only slow configs configurations
+ will be considered. The meaning of``slow'' is
+ implementation-dependent, but typically indicates a
+ non-hardware-accelerated (software) implementation.
+ </para>
+ <para>
+ If <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
+ specified, then only configs supporting
+ non-conformant OpenGL ES contexts will be
+ considered.
+ </para>
+ <para>
+ If the EGL version is 1.3 or later, caveat
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
+ obsolete, since the same information can be
+ specified via the
+ <constant>EGL_CONFORMANT</constant> attribute on a
+ per-client-API basis, not just for OpenGL ES.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a valid integer ID that
+ indicates the desired EGL frame buffer
+ configuration. When a
+ <constant>EGL_CONFIG_ID</constant> is specified, all
+ other attributes are ignored. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ The meaning of config IDs is
+ implementation-dependent. They are used only to
+ uniquely identify different frame buffer
+ configurations.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFORMANT</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which types
+ of client API contexts created with respect to the
+ frame buffer configuration config must pass the
+ required conformance tests for that API. Mask bits
+ include:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_ES_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL ES 1.0
+ and/or 1.1 contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_ES2_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL ES 2.0 contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENVG_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenVG contexts.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ For example, if the bitmask is set to
+ <constant>EGL_OPENGL_ES_BIT</constant>, only frame
+ buffer configurations that support creating
+ conformant OpenGL ES contexts will match. The
+ default value is zero.
+ </para>
+ <para>
+ Most EGLConfigs should be conformant for all
+ supported client APIs, and it is rarely desirable to
+ select a nonconformant config. Conformance
+ requirements limit the number of non-conformant
+ configs that an implementation can define.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_DEPTH_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired depth buffer size, in bits.
+ The smallest depth buffers of at least the specified
+ size is preferred. If the desired size is zero,
+ frame buffer configurations with no depth buffer are
+ preferred. The default value is zero.
+ </para>
+ <para>
+ The depth buffer is used only by OpenGL and OpenGL
+ ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GREEN_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the green component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest green component size
+ are preferred. Otherwise, color buffers with the
+ largest green component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LEVEL</constant></term>
+ <listitem><para>
+ Must be followed by an integer buffer level
+ specification. This specification is honored
+ exactly. Buffer level zero corresponds to the
+ default frame buffer of the display. Buffer level
+ one is the first overlay frame buffer, level two the
+ second overlay frame buffer, and so on. Negative
+ buffer levels correspond to underlay frame buffers.
+ The default value is zero.
+ </para>
+ <para>
+ Most imlementations do not support overlay or
+ underlay planes (buffer levels other than zero).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LUMINANCE_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the luminance
+ component of the color buffer, in bits. If this
+ value is zero, color buffers with the smallest
+ luminance component size are preferred. Otherwise,
+ color buffers with the largest luminance component
+ of at least the specified size are preferred. The
+ default value is zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MATCH_NATIVE_PIXMAP</constant></term>
+ <listitem>
+ <para>
+ Must be followed by the handle of a valid native
+ pixmap, cast to <type>EGLint</type>, or
+ <constant>EGL_NONE</constant>. If the value is not
+ <constant>EGL_NONE</constant>, only configs which
+ support creating pixmap surfaces with this pixmap
+ using
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>
+ will match this attribute. If the value is
+ <constant>EGL_NONE</constant>, then configs are not
+ matched for this attribute. The default value is
+ <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ <constant>EGL_MATCH_NATIVE_PIXMAP</constant> was
+ introduced due to the difficulty of determining an
+ <type>EGLConfig</type> compatibile with a native
+ pixmap using only color component sizes.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that allow native
+ rendering into the surface will be considered. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
+ <listitem><para>
+ Must be followed by a integer that indicates the
+ maximum value that can be passed to
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
+ <listitem><para>
+ Must be followed by a integer that indicates the
+ minimum value that can be passed to eglSwapInterval.
+ The default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RED_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the red component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest red component size
+ are preferred. Otherwise, color buffers with the
+ largest red component of at least the specified size
+ are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
+ <listitem><para>
+ Must be followed by the minimum acceptable number of
+ multisample buffers. Configurations with the
+ smallest number of multisample buffers that meet or
+ exceed this minimum number are preferred. Currently
+ operation with more than one multisample buffer is
+ undefined, so only values of zero or one will
+ produce a match. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLES</constant></term>
+ <listitem><para>
+ Must be followed by the minimum number of
+ samples required in multisample buffers.
+ Configurations with the smallest number of
+ samples that meet or exceed the specified
+ minimum number are preferred. Note that it is
+ possible for color samples in the multisample
+ buffer to have fewer bits than colors in the
+ main color buffers. However, multisampled
+ colors maintain at least as much color
+ resolution in aggregate as the main color
+ buffers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_STENCIL_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired stencil buffer size, in bits.
+ The smallest stencil buffers of at least the
+ specified size are preferred. If the desired size is
+ zero, frame buffer configurations with no stencil
+ buffer are preferred. The default value is zero.
+ </para>
+ <para>
+ The stencil buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDERABLE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which types
+ of client API contexts the frame buffer
+ configuration must support creating with
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>).
+ Mask bits are the same as for attribute
+ <constant>EGL_CONFORMANT</constant>. The default
+ value is <constant>EGL_OPENGL_ES_BIT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SURFACE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which EGL
+ surface types and capabilities the frame buffer
+ configuration must support. Mask bits include:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying box filtered
+ multisample resolve behavior with
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PBUFFER_BIT</constant></term>
+ <listitem><para>
+ Config supports creating pixel buffer surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PIXMAP_BIT</constant></term>
+ <listitem><para>
+ Config supports creating pixmap surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant></term>
+ <listitem><para>
+ Config allows setting swap behavior for
+ color buffers with
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying OpenVG rendering
+ with premultiplied alpha values at surface
+ creation time (see
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ and
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying OpenVG rendering in
+ a linear colorspace at surface creation time
+ (see
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ and
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WINDOW_BIT</constant></term>
+ <listitem><para>
+ Config supports creating window surfaces.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ For example, if the bitmask is set to
+ <inlineequation>
+ <mml:math>
+ <mml:mi><constant>EGL_WINDOW_BIT</constant></mml:mi>
+ <mml:mo>|</mml:mo>
+ <mml:mi><constant>EGL_PIXMAP_BIT</constant></mml:mi>
+ </mml:math>
+ </inlineequation>,
+ only frame buffer configurations that support both
+ windows and pixmaps will be considered. The default
+ value is <constant>EGL_WINDOW_BIT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
+ <listitem><para>
+ Must be followed by one of
+ <constant>EGL_NONE</constant> or
+ <constant>EGL_TRANSPARENT_RGB</constant>. If
+ <constant>EGL_NONE</constant> is specified, then
+ only opaque frame buffer configurations will be
+ considered. If
+ <constant>EGL_TRANSPARENT_RGB</constant> is
+ specified, then only transparent frame buffer
+ configurations will be considered. The default value
+ is <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ Most implementations support only opaque frame
+ buffer configurations.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent red value. The value must be between
+ zero and the maximum color buffer value for red.
+ Only frame buffer configurations that use the
+ specified transparent red value will be considered.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent green value. The value must be between
+ zero and the maximum color buffer value for green.
+ Only frame buffer configurations that use the
+ specified transparent green value will be
+ considered. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent blue value. The value must be between
+ zero and the maximum color buffer value for blue.
+ Only frame buffer configurations that use the
+ specified transparent blue value will be considered.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ When more than one EGL frame buffer configuration matches
+ the specified attributes, a list of matching configurations
+ is returned. The list is sorted according to the following
+ precedence rules, which are applied in ascending order
+ (i.e., configurations that are considered equal by a lower
+ numbered rule are sorted by the higher numbered rule):
+ </para>
+ <orderedlist>
+ <listitem><para>
+ Special: by <constant>EGL_CONFIG_CAVEAT</constant>,
+ where the precedence is <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, and
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
+ </para></listitem>
+ <listitem><para>
+ Special: by <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ where the precedence is
+ <constant>EGL_RGB_BUFFER</constant>,
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para></listitem>
+ <listitem>
+ <para>
+ Special: by larger total number of color bits (for an
+ RGB color buffer, this is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>; for a luminance
+ color buffer, the sum of
+ <constant>EGL_LUMINANCE_SIZE</constant> and
+ <constant>EGL_ALPHA_SIZE</constant>). If the requested
+ number of bits in <parameter>attrib_list</parameter> is
+ <constant>0</constant> or
+ <constant>EGL_DONT_CARE</constant> for a particular
+ color component, then the number of bits for that
+ component is not considered.
+ </para>
+ <para>
+ This sort rule places configs with deeper color buffers
+ before configs with shallower color buffers, which may
+ be counterintuitive.
+ </para>
+ </listitem>
+ <listitem><para>
+ Smaller <constant>EGL_BUFFER_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_SAMPLE_BUFFERS</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_SAMPLES</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_DEPTH_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_STENCIL_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_ALPHA_MASK_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Special: <constant>EGL_NATIVE_VISUAL_TYPE</constant>
+ (the actual sort order is implementation-defined,
+ depending on the meaning of native visual types).
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_CONFIG_ID</constant> (this is
+ always the last sorting rule, and guarantees a unique
+ ordering).
+ </para></listitem>
+ </orderedlist>
+ <para>
+ <type>EGLConfigs</type> are not sorted with respect to the
+ attributes <constant>EGL_BIND_TO_TEXTURE_RGB</constant>,
+ <constant>EGL_BIND_TO_TEXTURE_RGBA</constant>,
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_LEVEL</constant>,
+ <constant>EGL_NATIVE_RENDERABLE</constant>,
+ <constant>EGL_MAX_SWAP_INTERVAL</constant>,
+ <constant>EGL_MIN_SWAP_INTERVAL</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>,
+ <constant>EGL_SURFACE_TYPE</constant>,
+ <constant>EGL_TRANSPARENT_TYPE</constant>,
+ <constant>EGL_TRANSPARENT_RED_VALUE</constant>,
+ <constant>EGL_TRANSPARENT_GREEN_VALUE</constant>, and
+ <constant>EGL_TRANSPARENT_BLUE_VALUE</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="examples"><title>Examples</title>
+ <para>
+ The following example specifies a frame buffer configuration
+ in the normal frame buffer (not an overlay or underlay). The
+ returned frame buffer configuration supports a color buffer
+ with at least 4 bits each of red, green and blue, and
+ possibly no alpha bits. The code shown in the example may or
+ may not have a depth buffer, or a stencil buffer.
+ </para>
+ <programlisting>EGLint const attrib_list[] = {
+ EGL_RED_SIZE, 4,
+ EGL_GREEN_SIZE, 4,
+ EGL_BLUE_SIZE, 4,
+ EGL_NONE
+};</programlisting>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_RENDERABLE_TYPE</constant> bit
+ <constant>EGL_OPENGL_BIT</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant> bits
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant> and
+ <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant> are
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_MATCH_NATIVE_PIXMAP</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant> bit
+ <constant>EGL_OPENGL_ES2_BIT</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant> bits
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> and
+ <constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant> are
+ supported only if the EGL version is 1.3 or greater.
+ </para>
+ <para>
+ <constant>EGL_ALPHA_MASK_SIZE</constant>,
+ <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ <constant>EGL_LUMINANCE_SIZE</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>, and
+ <constant>EGL_RENDERABLE_TYPE</constant> bits
+ <constant>EGL_OPENGL_ES_BIT</constant> and
+ <constant>EGL_OPENVG_BIT</constant> are supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If OpenGL or OpenGL ES rendering is supported for a
+ luminance color buffer, it is treated as RGB rendering with
+ the value of <constant>GL_RED_BITS</constant> equal to
+ <constant>EGL_LUMINANCE_SIZE</constant> and the values of
+ <constant>GL_GREEN_BITS</constant> and
+ <constant>GL_BLUE_BITS</constant> equal to zero. The red
+ component of fragments is written to the luminance channel
+ of the color buffer while the green and blue components are
+ discarded.
+ </para>
+ <para>
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ and
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ can be used to implement selection algorithms other than the
+ generic one implemented by
+ <function>eglChooseConfig</function>. Call
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ to retrieve all the frame buffer configurations, or
+ alternatively, all the frame buffer configurations with a
+ particular set of attributes. Next call
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ to retrieve additional attributes for the frame buffer
+ configurations and then select between them.
+ </para>
+ <para>
+ EGL implementors are strongly discouraged, but not
+ proscribed, from changing the selection algorithm used by
+ <function>eglChooseConfig</function>. Therefore, selections
+ may change from release to release of the client-side
+ library.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>configs</parameter> and
+ <parameter>num_config</parameter> are not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute_list</parameter> contains an invalid frame buffer
+ configuration attribute or an
+ attribute value that is unrecognized or out of range.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>num_config</parameter> is <constant>NULL</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCopyBuffers.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCopyBuffers.xml
new file mode 100644
index 0000000..e493378
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCopyBuffers.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCopyBuffers">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCopyBuffers</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCopyBuffers</refname>
+ <refpurpose>
+ copy <acronym>EGL</acronym> surface color buffer to a native pixmap
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglCopyBuffers</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>NativePixmapType <parameter>native_pixmap</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface whose color buffer is to be copied.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem>
+ <para>
+ Specifies the native pixmap as target of the copy.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCopyBuffers</function> copies the color buffer of
+ <parameter>surface</parameter> to <parameter>native_pixmap</parameter>.
+ </para>
+ <para>
+ <function>eglCopyBuffers</function> performs an implicit
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>
+ before it returns. Subsequent
+ GL commands may be issued immediately after calling
+ <function>eglCopyBuffers</function>,
+ but are not executed until copying of the color buffer is completed.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ The color buffer of <parameter>surface</parameter> is left unchanged
+ after calling <function>eglCopyBuffers</function>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if swapping of the
+ surface buffers fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL drawing surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> is generated if
+ the implementation does not support native pixmaps.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ <parameter>native_pixmap</parameter> is not a valid native pixmap.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the format of <parameter>native_pixmap</parameter> is not compatible
+ with the color buffer of <parameter>surface</parameter>.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateContext.xml
new file mode 100644
index 0000000..3a05314
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateContext.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreateContext">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreateContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateContext</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLContext <function>eglCreateContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLContext <parameter>share_context</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the
+ <acronym>EGL</acronym>
+ display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>Specifies the EGL frame buffer configuration that
+ defines the frame buffer resource available to the rendering context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>share_context</parameter></term>
+ <listitem><para>
+ Specifies another
+ <acronym>EGL</acronym>
+ rendering context with which to share data, as
+ defined by the client API corresponding to the
+ contexts. Data is also shared with all other
+ contexts with which
+ <parameter>share_context</parameter> shares data.
+ <constant>EGL_NO_CONTEXT</constant> indicates that
+ no sharing is to take place.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies attributes and attribute values for the
+ context being created. Only the attribute
+ <constant>EGL_CONTEXT_CLIENT_VERSION</constant> may
+ be specified.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreateContext</function> creates an EGL
+ rendering context for the current rendering API (as set with
+ <function>eglBindAPI</function>) and returns a handle to the
+ context. The context can then be used to render into an EGL
+ drawing surface. If <function>eglCreateContext</function>
+ fails to create a rendering context,
+ <constant>EGL_NO_CONTEXT</constant> is returned.
+ </para>
+ <para>
+ If <parameter>share_context</parameter> is not
+ <constant>EGL_NO_CONTEXT</constant>, then all shareable data
+ in the context (as defined by the client API specification
+ for the current rendering API) are shared by context
+ <parameter>share_context</parameter>, all other contexts
+ <parameter>share_context</parameter> already shares with,
+ and the newly created context. An arbitrary number of
+ rendering contexts can share data. However, all rendering
+ contexts that share data must themselves exist in the same
+ address space. Two rendering contexts share an address space
+ if both are owned by a single process.
+ </para>
+ <para>
+ <parameter>attrib_list</parameter> specifies a list of
+ attributes for the context. The list has the same structure
+ as described for <function>eglChooseConfig</function>. The
+ attributes and attribute values which may be specified are
+ as follows:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_VERSION</constant></term>
+ <listitem><para>
+ Must be followed by an integer that determines which
+ version of an OpenGL ES context to create. A value
+ of 1 specifies creation of an OpenGL ES 1.x context.
+ An attribute value of 2 specifies creation of an
+ OpenGL ES 2.x context. The default value is 1. This
+ attribute can only be specified when creating a
+ OpenGL ES context (e.g. when the current rendering
+ API is <constant>EGL_OPENGL_ES_API</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ The current rendering API is only respected if the EGL
+ version is 1.2 or greater. Otherwise, an OpenGL ES context
+ will always be created.
+ </para>
+ <para>
+ The <constant>EGL_CONTEXT_CLIENT_VERSION</constant>
+ attribute is only supported if the EGL version is 1.3 or
+ greater.
+ </para>
+ <para>
+ A <firstterm>process</firstterm> is a single execution environment,
+ implemented in a single address space, consisting of one or more threads.
+ </para>
+ <para>
+ A <firstterm>thread</firstterm> is one of a set of subprocesses that
+ share a single address space, but maintain separate program counters,
+ stack spaces, and other related global data.
+ A thread is the only member of its subprocess group is equivalent to a
+ process.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_CONTEXT</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ current rendering API is <constant>EGL_NONE</constant> (this
+ can only arise in an EGL implementation which does not
+ support OpenGL ES, prior to the first call to
+ <function>eglBindAPI</function>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ server context state for
+ <parameter>share_context</parameter> exists in an address
+ space which cannot be shared with the newly created context,
+ if <parameter>share_context</parameter> was created on a
+ different display than the one referenced by
+ <parameter>config</parameter>, or if the contexts are
+ otherwise incompatible.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer
+ configuration, or does not support the current rendering
+ API. This includes requesting creation of an OpenGL ES 1.x
+ context when the <constant>EGL_RENDERABLE_TYPE</constant>
+ attribute of <parameter>config</parameter> does not contain
+ <constant>EGL_OPENGL_ES_BIT</constant>, or creation of an
+ OpenGL ES 2.x context when the attribute does not contain
+ <constant>EGL_OPENGL_ES2_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>share_context</parameter> is not an EGL rendering
+ context of the same client API type as the newly created
+ context and is not <constant>EGL_NO_CONTEXT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid
+ context attribute or if an attribute is not recognized or
+ out of range. Note that attribute
+ <constant>EGL_CONTEXT_CLIENT_VERSION</constant> is
+ only valid when the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new context.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferFromClientBuffer.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferFromClientBuffer.xml
new file mode 100644
index 0000000..bb311f3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferFromClientBuffer.xml
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreatePbufferFromClientBuffer">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePbufferFromClientBuffer</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixel buffer surface
+ bound to an OpenVG image
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePbufferFromClientBuffer</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLenum <parameter>buftype</parameter></paramdef>
+ <paramdef>EGLClientBuffer <parameter>buffer</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buftype</parameter></term>
+ <listitem>
+ <para>
+ Specifies the type of client API buffer to be bound.
+ Must be <constant>EGL_OPENVG_IMAGE</constant>,
+ corresponding to an OpenVG <type>VGImage</type>
+ buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem>
+ <para>
+ Specifies the OpenVG <type>VGImage</type> handle of
+ the buffer to be bound.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixel buffer surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePbufferFromClientBuffer</function> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <function>eglCreatePbufferFromClientBuffer</function> fails to create
+ a pixel buffer surface, <constant>EGL_NO_SURFACE</constant>
+ is returned.
+ </para>
+ <para>
+ The new pixel buffer surface is similar to a pixel buffer
+ created with
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ but storage for the color buffer is provided by a client API
+ buffer. Other buffer required by
+ <parameter>config</parameter>, such as depth, stencil, and
+ alpha mask, are allocated by EGL.
+ </para>
+ <para>
+ <parameter>buftype</parameter> must be
+ <constant>EGL_OPENVG_IMAGE</constant>, corresponding to an
+ OpenVG <type>VGImage</type> buffer.
+ <parameter>buffer</parameter> must be a valid
+ <type>VGImage</type> handle in the current OpenVG context,
+ cast into the type <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ The height, width,, OpenVG alpha format, and OpenVG
+ colorspace (surface attributes
+ <constant>EGL_HEIGHT</constant>,
+ <constant>EGL_WIDTH</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, respectively) of the
+ resulting surface are determined by the size and format of
+ <parameter>buffer</parameter>.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem>
+ <para>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <constant>EGL_TRUE</constant>
+ and <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem>
+ <para>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>. Possible
+ values are <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglCreatePbufferFromClientBuffer</function> is
+ supported only if the EGL version is 1.2 or greater, and if
+ the EGL implementation supports the OpenVG client API.
+ </para>
+ <para>
+ Currently
+ <function>eglCreatePbufferFromClientBuffer</function> only
+ supports binding OpenVG <type>VGImage</type> buffers to
+ pixel buffers. While other client API resources could be
+ supported in the future, mechanisms such as OpenGL ES
+ framebuffer objects, and the family of EGL and client API
+ extensions for defining and using <type>EGLImageKHR</type>
+ images, are a more flexible and general framework to satisfy
+ most of the same needs.
+ </para>
+ <para>
+ If the value of <parameter>config</parameter> attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </para>
+ <para>
+ If <constant>EGL_LARGEST_PBUFFER</constant> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_TEXTURE_2D</constant>, and the value of
+ <constant>EGL_TEXTURE FORMAT</constant> is
+ <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </para>
+ <para>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </para>
+ <para>
+ Binding client API buffers to EGL pbuffers create the
+ possibility of race conditions, and of buffers being deleted
+ through one API while still in use in another API. To avoid
+ these problems, a number of constraints apply to bound
+ client API buffers:
+ <orderedlist>
+ <listitem>
+ <para>
+ Bound buffers may be used exclusively by either EGL,
+ or the client API that originally created them. For
+ example, if a <type>VGImage</type> is bound to a
+ pbuffer, and that pbuffer is bound to any client API
+ rendering context, then the <type>VGImage</type> may
+ not be used as the explicit source or destination of
+ any OpenVG operation. Errors resulting from such use
+ are described in client API specifications.
+ Similarly, while a <type>VGImage</type> is in use by
+ OpenVG, the pbuffer it is bound to may not be made
+ current to any client API context using
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Binding a buffer creates an additional reference to
+ it, and implementations must respect outstanding
+ references when destroying objects. For example, if
+ a <type>VGImage</type> is bound to a pbuffer,
+ destroying the image with
+ <function>vgDestroyImage</function> will not free
+ the underlying buffer, because it is still in use by
+ EGL. However, following
+ <function>vgDestroyImage</function> the buffer may
+ only be referred to via the EGL pbuffer handle,
+ since the OpenVG handle to that buffer no longer
+ exists. Similarly, destroying the pbuffer with
+ <function>eglDestroySurface</function> will not free
+ the underlying buffer, because it is still in use by
+ OpenVG . However, following
+ <function>eglDestroySurface</function> the buffer
+ may only be referred to via the OpenVG
+ <type>VGImage</type> handle, since the EGL pbuffer
+ handle no longer exists.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>buftype</parameter> is not
+ <constant>EGL_OPENVG_IMAGE</constant>, or if
+ <parameter>buffer</parameter> is not a valid handle to a
+ <type>VGImage</type> object in the currently bound OpenVG
+ context.
+ </para>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if there is
+ no current OpenVG context, or if
+ <parameter>buffer</parameter> is already bound to another
+ pixel buffer or in use by OpenVG as discussed in the Notes
+ section above.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains any of the
+ attributes <constant>EGL_MIPMAP_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_FORMAT</constant>, or
+ <constant>EGL_TEXTURE_TARGET</constant>, and
+ <parameter>config</parameter> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <constant>EGL_RENDERABLE_TYPE</constant> attribute of
+ <parameter>config</parameter> does not include at least one
+ of <constant>EGL_OPENGL_ES_BIT</constant> or
+ <constant>EGL_OPENGL_ES2_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to pixel buffers
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PBUFFER_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ buffers contained in <parameter>buffer</parameter> do not
+ match the bit depths for those buffers specified by
+ <parameter>config</parameter>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ <constant>EGL_TEXTURE_FORMAT</constant> attribute is not
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_WIDTH</constant> and/or
+ <constant>EGL_HEIGHT</constant> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the <constant>EGL_TEXTURE_FORMAT</constant> attribute is
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>; or,
+ <constant>EGL_TEXTURE_FORMAT</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ implementation has additional constraints on which types of
+ client API buffers may be bound to pixel buffer surfaces.
+ For example, it is possible that the OpenVG implementation
+ might not support a <type>VGImage</type> being bound to a
+ pixel buffer which will be used as a mipmapped OpenGL ES
+ texture (e.g. whose <constant>EGL_MIPMAP_TEXTURE</constant>
+ attribute is <constant>TRUE</constant>). Any such
+ constraints should be documented by the implementation
+ release notes.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferSurface.xml
new file mode 100644
index 0000000..fbe9211
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePbufferSurface.xml
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreatePbufferSurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreatePbufferSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePbufferSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixel buffer surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePbufferSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixel buffer surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePbufferSurface</function> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <function>eglCreatePbufferSurface</function> fails to create
+ a pixel buffer surface, <constant>EGL_NO_SURFACE</constant>
+ is returned.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_HEIGHT</constant></term>
+ <listitem>
+ <para>
+ Specifies the required height of the pixel buffer
+ surface. The default value is
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LARGEST_PBUFFER</constant></term>
+ <listitem>
+ <para>
+ Requests the largest available pixel buffer surface
+ when the allocation would otherwise fail. Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel
+ buffer. The default value is
+ <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem>
+ <para>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <constant>EGL_TRUE</constant>
+ and <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem>
+ <para>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>. Possible
+ values are <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WIDTH</constant></term>
+ <listitem>
+ <para>
+ Specifies the required width of the pixel buffer
+ surface. The default value is
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attributes
+ <constant>EGL_RENDERABLE_TYPE</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If the value of <parameter>config</parameter> attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </para>
+ <para>
+ If <constant>EGL_LARGEST_PBUFFER</constant> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_TEXTURE_2D</constant>, and the value of
+ <constant>EGL_TEXTURE FORMAT</constant> is
+ <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </para>
+ <para>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains any of the
+ attributes <constant>EGL_MIPMAP_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_FORMAT</constant>, or
+ <constant>EGL_TEXTURE_TARGET</constant>, and
+ <parameter>config</parameter> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <constant>EGL_RENDERABLE_TYPE</constant> attribute of
+ <parameter>config</parameter> does not include at least one
+ of <constant>EGL_OPENGL_ES_BIT</constant> or
+ <constant>EGL_OPENGL_ES2_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to pixel buffers
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PBUFFER_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ <constant>EGL_TEXTURE_FORMAT</constant> attribute is not
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_WIDTH</constant> and/or
+ <constant>EGL_HEIGHT</constant> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the <constant>EGL_TEXTURE_FORMAT</constant> attribute is
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>; or,
+ <constant>EGL_TEXTURE_FORMAT</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePixmapSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePixmapSurface.xml
new file mode 100644
index 0000000..15f72ec
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreatePixmapSurface.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreatePixmapSurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreatePixmapSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePixmapSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixmap surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePixmapSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>NativePixmapType <parameter>native_pixmap</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem><para>Specifies the native pixmap.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixmap surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePixmapSurface</function> creates an
+ off-screen <acronym>EGL</acronym> pixmap surface and returns
+ its handle. If <function>eglCreatePixmapSurface</function>
+ fails to create a pixmap surface,
+ <constant>EGL_NO_SURFACE</constant> is returned.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ The <constant>EGL_MATCH_NATIVE_PIXMAP</constant> attribute
+ of
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ can be used to select a frame buffer configuration matching
+ a specified native pixmap.
+ </para>
+ <para>
+ Attributes
+ <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
+ <para>
+ The <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant> attributes are used
+ only by OpenVG. EGL itself, and other client APIs such as
+ OpenGL and OpenGL ES , do not distinguish multiple
+ colorspace models. Refer to section 11.2 of the OpenVG 1.0
+ specification for more information. The native window
+ system's use and interpretation of alpha values is outside
+ the scope of EGL, although the preferred behavior is for the
+ window system to ignore the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL config.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ <parameter>native_pixmap</parameter> is not a valid native pixmap.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixmap attribute
+ or if an attribute value is not recognized or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the attributes of
+ <parameter>native_pixmap</parameter> do not correspond to
+ <parameter>config</parameter> or if
+ <parameter>config</parameter> does not support rendering to pixmaps
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PIXMAP_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateWindowSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateWindowSurface.xml
new file mode 100644
index 0000000..942cc73
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglCreateWindowSurface.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglCreateWindowSurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglCreateWindowSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateWindowSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> window surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreateWindowSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>NativeWindowType <parameter>native_window</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem>
+ <para>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_window</parameter></term>
+ <listitem><para>Specifies the native window.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies window surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglCreateWindowSurface</function> creates an EGL
+ window surface and returns its handle. If
+ <function>eglCreateWindowSurface</function> fails to create
+ a window surface, <constant>EGL_NO_SURFACE</constant> is
+ returned.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem>
+ <para>
+ Specifies which buffer should be used for client API
+ rendering to the window. If its value is
+ <constant>EGL_SINGLE_BUFFER</constant>, then client
+ APIs should render directly into the visible window.
+ If its value is
+ <constant>EGL_BACK_BUFFER</constant>, then client
+ APIs should render into the back buffer. The default
+ value of <constant>EGL_RENDER_BUFFER</constant> is
+ <constant>EGL_BACK_BUFFER</constant>.
+ </para>
+ <para>
+ Client APIs may not be able to respect the requested
+ rendering buffer. To determine the actual buffer
+ being rendered to by a context, call
+ <citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attributes <constant>EGL_RENDER_BUFFER</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
+ <para>
+ The <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant> attributes are used
+ only by OpenVG. EGL itself, and other client APIs such as
+ OpenGL and OpenGL ES , do not distinguish multiple
+ colorspace models. Refer to section 11.2 of the OpenVG 1.0
+ specification for more information. The native window
+ system's use and interpretation of alpha values is outside
+ the scope of EGL, although the preferred behavior is for the
+ window system to ignore the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> when compositing
+ window surfaces.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_WINDOW</constant> may be generated if
+ <parameter>native_window</parameter> is not a valid native window.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid window attribute
+ or if an attribute value is not recognized or is out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the attributes of
+ <parameter>native_window</parameter> do not correspond to
+ <parameter>config</parameter> or if
+ <parameter>config</parameter> does not support rendering to windows
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_WINDOW_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroyContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroyContext.xml
new file mode 100644
index 0000000..0edbf42
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroyContext.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglDestroyContext">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglDestroyContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroyContext</refname>
+ <refpurpose>
+ destroy an <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroyContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem><para>Specifies the EGL rendering context to be destroyed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ If the EGL rendering context <parameter>context</parameter> is not
+ current to any thread,
+ <function>eglDestroyContext</function> destroys it immediately.
+ Otherwise, <parameter>context</parameter> is destroyed when it becomes
+ not current to any thread.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if destruction of
+ the context fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroySurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroySurface.xml
new file mode 100644
index 0000000..9693990
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglDestroySurface.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglDestroySurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglDestroySurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroySurface</refname>
+ <refpurpose>
+ destroy an <acronym>EGL</acronym> surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroySurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem><para>Specifies the EGL surface to be destroyed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ If the EGL surface <parameter>surface</parameter> is not current to any
+ thread, <function>eglDestroySurface</function> destroys it immediately.
+ Otherwise, <parameter>surface</parameter> is destroyed when it becomes
+ not current to any thread.
+ Furthermore, resources associated with a pbuffer surface are not released until
+ all color buffers of that pbuffer bound to a texture object have been released.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if destruction of
+ the surface fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigAttrib.xml
new file mode 100644
index 0000000..25bccac
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigAttrib.xml
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetConfigAttrib">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetConfigAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetConfigAttrib</refname>
+ <refpurpose>
+ return information about an <acronym>EGL</acronym> frame buffer
+ configuration
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetConfigAttrib</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>Specifies the EGL frame buffer configuration to be
+ queried.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem><para>Specifies the EGL rendering context attribute to be
+ returned.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem><para>Returns the requested value.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetConfigAttrib</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for
+ <parameter>config</parameter>
+ (config attributes are described in more detail in the
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ reference page).
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of alpha stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
+ <listitem><para>
+ Returns the number of bits in the alpha mask buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if color buffers can be
+ bound to an RGB texture,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if color buffers can be
+ bound to an RGBA texture,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BLUE_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of blue stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BUFFER_SIZE</constant></term>
+ <listitem><para>Returns the depth of the color buffer.
+ It is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
+ <listitem><para>
+ Returns the color buffer type. Possible types are
+ <constant>EGL_RGB_BUFFER</constant> and
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_CAVEAT</constant></term>
+ <listitem><para>Returns the caveats for the frame buffer configuration.
+ Possible caveat values are
+ <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, and
+ <constant>EGL_NON_CONFORMANT</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>Returns the ID of the frame buffer configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFORMANT</constant></term>
+ <listitem><para>
+ Returns a bitmask indicating which client API contexts
+ created with respect to this config are conformant.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_DEPTH_SIZE</constant></term>
+ <listitem><para>Returns the number of bits in the depth buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GREEN_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of green stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LEVEL</constant></term>
+ <listitem><para>Returns the frame buffer level.
+ Level zero is the default frame buffer.
+ Positive levels correspond to frame buffers that overlay the default
+ buffer and negative levels correspond to frame buffers that underlay
+ the default buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LUMINANCE_SIZE</constant></term>
+ <listitem>
+ <para>
+ Returns the number of bits of luminance stored in the luminance buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_WIDTH</constant></term>
+ <listitem><para>Returns the maximum width of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_HEIGHT</constant></term>
+ <listitem><para>Returns the maximum height of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_PIXELS</constant></term>
+ <listitem><para>Returns the maximum size of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
+ <listitem><para>Returns the maximum value that can be passed to eglSwapInterval.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
+ <listitem><para>Returns the minimum value that can be passed to eglSwapInterval.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if native rendering
+ APIs can render into the surface,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_VISUAL_ID</constant></term>
+ <listitem><para>Returns the ID of the associated native visual.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_VISUAL_TYPE</constant></term>
+ <listitem><para>Returns the type of the associated native visual.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RED_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of red stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDERABLE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Returns a bitmask indicating the types of supported
+ client API contexts.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
+ <listitem><para>Returns the number of multisample buffers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLES</constant></term>
+ <listitem><para>Returns the number of samples per pixel.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_STENCIL_SIZE</constant></term>
+ <listitem><para>Returns the number of bits in the stencil buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SURFACE_TYPE</constant></term>
+ <listitem><para>
+ Returns a bitmask indicating the types of supported EGL
+ surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
+ <listitem><para>Returns the type of supported transparency.
+ Possible transparency values are:
+ <constant>EGL_NONE</constant>, and
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
+ <listitem><para>Returns the transparent red value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
+ <listitem><para>Returns the transparent green value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
+ <listitem><para>Returns the transparent blue value.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_CONFORMANT</constant> is supported only if the
+ EGL version is 1.3 or greater.
+ </para>
+ <para>
+ <constant>EGL_ALPHA_MASK_SIZE</constant>,
+ <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ <constant>EGL_LUMINANCE_SIZE</constant>, and
+ <constant>EGL_RENDERABLE_TYPE</constant> are supported only
+ if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ While <constant>EGL_MATCH_NATIVE_PIXMAP</constant> can be
+ specified in the attribute list passed to
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ it is not an attribute of the resulting config and cannot be
+ queried using <function>eglGetConfigAttrib</function>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid frame buffer
+ configuration attribute.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigs.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigs.xml
new file mode 100644
index 0000000..4333862
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetConfigs.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetConfigs">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetConfigs</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetConfigs</refname>
+ <refpurpose>
+ return a list of all <acronym>EGL</acronym> frame buffer configurations
+ for a display
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetConfigs</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
+ <paramdef>EGLint <parameter>config_size</parameter></paramdef>
+ <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>configs</parameter></term>
+ <listitem><para>Returns a list of configs.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config_size</parameter></term>
+ <listitem><para>Specifies the size of the list of configs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>num_config</parameter></term>
+ <listitem><para>Returns the number of configs returned.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetConfigs</function> returns a list of all
+ EGL frame buffer configurations that are available for the specified
+ display.
+ The items in the list can be used in any EGL function that requires
+ an EGL frame buffer configuration.
+ </para>
+ <para>
+ <parameter>configs</parameter> does not return values, if it is specified
+ as
+ <constant>NULL</constant>. This is useful for querying just the
+ number of all frame buffer configurations.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ to retrieve individual attribute values of a frame buffer configuration.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>configs</parameter> and <parameter>num_config</parameter>
+ are not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>num_config</parameter> is <constant>NULL</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentContext.xml
new file mode 100644
index 0000000..6b6bc21
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentContext.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetCurrentContext">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetCurrentContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentContext</refname>
+ <refpurpose>
+ return the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLContext <function>eglGetCurrentContext</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentContext</function> returns the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_CONTEXT</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentDisplay.xml
new file mode 100644
index 0000000..64bfa75
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentDisplay.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetCurrentDisplay">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetCurrentDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentDisplay</refname>
+ <refpurpose>
+ return the display for the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetCurrentDisplay</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentDisplay</function> returns the current
+ <acronym>EGL</acronym> display connection for the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_DISPLAY</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentSurface.xml
new file mode 100644
index 0000000..075da4e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetCurrentSurface.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetCurrentSurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetCurrentSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentSurface</refname>
+ <refpurpose>
+ return the read or draw surface for the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglGetCurrentSurface</function></funcdef>
+ <paramdef>EGLint <parameter>readdraw</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>readdraw</parameter></term>
+ <listitem>
+ <para>
+ Specifies whether the <acronym>EGL</acronym> read or draw surface
+ is to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentSurface</function> returns the read or draw
+ surface attached to the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_SURFACE</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetDisplay.xml
new file mode 100644
index 0000000..01efe4f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetDisplay.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetDisplay">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetDisplay</refname>
+ <refpurpose>
+ return an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetDisplay</function></funcdef>
+ <paramdef>NativeDisplayType <parameter>native_display</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>native_display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the display to connect to.
+ <constant>EGL_DEFAULT_DISPLAY</constant> indicates the default display.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetDisplay</function> obtains the
+ <acronym>EGL</acronym> display connection for the native
+ display <parameter>native_display</parameter>.
+ </para>
+ <para>
+ If <parameter>display_id</parameter> is
+ <constant>EGL_DEFAULT_DISPLAY</constant>, a default display connection is returned.
+ </para>
+ <para>
+ If no display connection matching <parameter>native_display</parameter> is
+ available, <constant>EGL_NO_DISPLAY</constant> is returned. No
+ error is generated.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ to initialize the display connection.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetError.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetError.xml
new file mode 100644
index 0000000..86658a7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetError.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetError">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetError</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetError</refname>
+ <refpurpose>
+ return error information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLint <function>eglGetError</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetError</function> returns the error of the last
+ called <acronym>EGL</acronym> function in the current thread.
+ Initially, the error is set to <constant>EGL_SUCCESS</constant>.
+ </para>
+ <para>
+ The following errors are currently defined:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_SUCCESS</constant></term>
+ <listitem><para>The last function succeeded without error.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NOT_INITIALIZED</constant></term>
+ <listitem><para>EGL is not initialized, or could not be initialized,
+ for the specified EGL display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ACCESS</constant></term>
+ <listitem><para>EGL cannot access a requested resource
+ (for example a context is bound in another thread).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ALLOC</constant></term>
+ <listitem><para>EGL failed to allocate resources for the requested
+ operation.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ATTRIBUTE</constant></term>
+ <listitem><para>An unrecognized attribute or attribute value was
+ passed in the attribute list.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CONTEXT</constant></term>
+ <listitem><para>An <type>EGLContext</type> argument does not name a
+ valid EGL rendering context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CONFIG</constant></term>
+ <listitem><para>
+ An <type>EGLConfig</type> argument does not name a valid
+ EGL frame buffer configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CURRENT_SURFACE</constant></term>
+ <listitem><para>The current surface of the calling thread is a window,
+ pixel buffer or pixmap that is no longer valid.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_DISPLAY</constant></term>
+ <listitem><para>An <type>EGLDisplay</type> argument does not name a
+ valid EGL display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_SURFACE</constant></term>
+ <listitem><para>An <type>EGLSurface</type> argument does not name a
+ valid surface (window, pixel buffer or pixmap) configured for
+ GL rendering.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_MATCH</constant></term>
+ <listitem><para>Arguments are inconsistent (for example, a valid
+ context requires buffers not supplied by a valid surface).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_PARAMETER</constant></term>
+ <listitem><para>One or more argument values are invalid.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_NATIVE_PIXMAP</constant></term>
+ <listitem><para>
+ A <type>NativePixmapType</type> argument does not refer to
+ a valid native pixmap.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_NATIVE_WINDOW</constant></term>
+ <listitem><para>A <type>NativeWindowType</type> argument does not refer
+ to a valid native window.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_LOST</constant></term>
+ <listitem><para>
+ A power management event has occurred. The application must destroy all
+ contexts and reinitialise OpenGL ES state and objects to continue rendering.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ A call to <function>eglGetError</function> sets the error to
+ <constant>EGL_SUCCESS</constant>.
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetProcAddress.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetProcAddress.xml
new file mode 100644
index 0000000..aac0bbd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglGetProcAddress.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglGetProcAddress">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglGetProcAddress</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetProcAddress</refname>
+ <refpurpose>
+ return a <acronym>GL</acronym> or an <acronym>EGL</acronym>
+ extension function
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>void (* <function>eglGetProcAddress</function>)()</funcdef>
+ <paramdef>char const * <parameter>procname</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>procname</parameter></term>
+ <listitem>
+ <para>
+ Specifies the name of the function to return.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglGetProcAddress</function> returns the address of
+ the extension function named by <parameter>procname</parameter>.
+ <parameter>procname</parameter>
+ must be a null-terminated string. The pointer returned
+ should be cast to a function pointer type matching the extension
+ function's definition in that extension specification. A return value
+ of <constant>NULL</constant> indicates that the specific
+ function does not exist for the <acronym>EGL</acronym> implementation.
+ </para>
+ <para>
+ A non-<constant>NULL</constant> return value does not guarantee
+ that an extension function is actually supported at runtime. The client
+ must also query
+ <citerefentry><refentrytitle>glGetString</refentrytitle></citerefentry>(<constant>GL_EXTENSIONS</constant>) or
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>(<parameter>display</parameter>,
+ <constant>EGL_EXTENSIONS</constant>) to determine if an
+ extension is supported by a particular context or display.
+ </para>
+ <para>
+ Function pointers returned by
+ <function>eglGetProcAddress</function> are independent of the
+ display and the currently bound context and may be used by any context
+ which supports the extension.
+ </para>
+ <para>
+ <function>eglGetProcAddress</function> may be queried for all
+ <acronym>GL</acronym> and <acronym>EGL</acronym> extension functions.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glGetString</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglInitialize.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglInitialize.xml
new file mode 100644
index 0000000..854c172
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglInitialize.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglInitialize">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglInitialize</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglInitialize</refname>
+ <refpurpose>
+ initialize an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglInitialize</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint * <parameter>major</parameter></paramdef>
+ <paramdef>EGLint * <parameter>minor</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection to initialize.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>major</parameter></term>
+ <listitem>
+ <para>
+ Returns the major version number of the EGL implementation.
+ May be <constant>NULL</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>minor</parameter></term>
+ <listitem>
+ <para>
+ Returns the minor version number of the EGL implementation.
+ May be <constant>NULL</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglInitialize</function> initialized the EGL display
+ connection obtained with
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>.
+ Initializing an already initialized EGL display connection has no
+ effect besides returning the version numbers.
+ </para>
+ <para>
+ <parameter>major</parameter> and <parameter>minor</parameter>
+ do not return values if they are specified as <constant>NULL</constant>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>
+ to release resources associated with an EGL display connection.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglInitialize</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>major</parameter> and <parameter>minor</parameter> are not
+ modified when <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> cannot be initialized.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglIntro.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglIntro.xml
new file mode 100644
index 0000000..d972451
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglIntro.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglIntro">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglIntro</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglIntro</refname>
+ <refpurpose>
+ introduction to managing client API rendering through the
+ <acronym>EGL</acronym> API.
+ </refpurpose>
+ </refnamediv>
+ <refsect1 id="overview"><title>Overview</title>
+ <para>
+ The <firstterm>Khronos Native Platform Graphics
+ Interface</firstterm> (EGL) provides a means for rendering
+ using a <firstterm>client API</firstterm> such as OpenGL ES
+ (a 3D renderer for embedded systems), OpenGL (a functional
+ superset of OpenGL ES for desktop systems), and OpenVG (a 2D
+ vector graphics renderer) together with a native window
+ system, such as Microsoft Windows or the X Window System.
+ </para>
+ <para>
+ Depending on its implementation EGL might be more or less
+ tightly integrated into the native window system. Most EGL
+ functions require an EGL display connection, which can be
+ obtained by calling
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>
+ and passing in a native display handle or
+ <constant>EGL_DEFAULT_DISPLAY</constant>. To initialize and
+ query what EGL version is supported on the display
+ connection, call
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ Native window systems supporting EGL make a subset of their
+ visuals (which may also referred to as pixel formats, frame
+ buffer configurations, or other similar terms) available for
+ client API rendering. Windows and pixmaps created with these
+ visuals may also be rendered into using the native window
+ system API.
+ </para>
+ <para>
+ An EGL <firstterm>surface</firstterm> extends a native
+ window or pixmap with additional <firstterm>auxillary
+ buffers</firstterm>. These buffers include a color buffer, a
+ depth buffer, a stencil buffer, and an alpha mask buffer.
+ Some or all of the buffers listed are included in each EGL
+ frame buffer configuration.
+ </para>
+ <para>
+ EGL supports rendering into three types of surfaces:
+ windows, pixmaps and pixel buffers (pbuffers). EGL window
+ and pixmap surfaces are associated with corresponding
+ resources of the native window system. EGL pixel buffers are
+ EGL only resources, and do not accept rendering through the
+ native window system.
+ </para>
+ <para>
+ To render using a client API into an EGL surface, you must
+ determine the appropriate EGL frame buffer configuration,
+ which supports the rendering features the application
+ requires.
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ returns an <type>EGLConfig</type> matching the required
+ attributes, if any. A complete list of EGL frame buffer
+ configurations can be obtained by calling
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>.
+ Attributes of a particular EGL frame buffer configuration
+ can be queried by calling
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ For EGL window and pixmap surfaces, a suitable native window
+ or pixmap with a matching native visual must be created
+ first. For a given EGL frame buffer configuration, the
+ native visual type and ID can be retrieved with a call to
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>.
+ For pixel buffers, no underlying native resource is
+ required.
+ </para>
+ <para>
+ To create an EGL window surface from a native window, call
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>.
+ To create an EGL pixmap surface from a native pixmap, call
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>.
+ To create a pixel buffer (pbuffer) surface (which has no
+ associated native buffer), call
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>
+ To create a pixel buffer (pbuffer) surface whose color
+ buffer is provided by an OpenVG <type>VGImage</type>, call
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>.
+ Use
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to release previously allocated resources.
+ </para>
+ <para>
+ An EGL rendering context is required to bind client API
+ rendering to an EGL surface. An EGL surface and an EGL
+ rendering context must have compatible EGL frame buffer
+ configurations. To create an EGL rendering context, call
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>.
+ The type of client API context created (OpenGL ES, OpenVG,
+ etc.) can be changed by first calling
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ An EGL rendering context may be bound to one or two EGL
+ surfaces by calling
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ This context/surface(s) association specifies the
+ <firstterm>current context</firstterm> and
+ <firstterm>current surface</firstterm>, and is used by all
+ client API rendering commands for the bound context until
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ is called with different arguments.
+ </para>
+ <para>
+ Both native and client API commands may be used to operate
+ on certain surfaces, however, the two command streams are
+ not synchronized. Synchronization can be explicitly
+ specified using by calling
+ <citerefentry><refentrytitle>eglWaitCLient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>,
+ and possibly by calling other native window system commands.
+ </para>
+ </refsect1>
+ <refsect1 id="examples"><title>Examples</title>
+ <para>
+ Below is a minimal example of creating an RGBA-format window that
+ allows rendering with OpenGL ES.
+ The window is cleared to yellow when the program runs. For simplicity,
+ the program does not check for any errors.
+ </para>
+<programlisting>
+#include &lt;stdlib.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+typedef ... NativeWindowType;
+extern NativeWindowType createNativeWindow(void);
+static EGLint const attribute_list[] = {
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_NONE
+};
+int main(int argc, char ** argv)
+{
+ EGLDisplay display;
+ EGLConfig config;
+ EGLContext context;
+ EGLSurface surface;
+ NativeWindowType native_window;
+ EGLint num_config;
+
+ /* get an EGL display connection */
+ display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ /* initialize the EGL display connection */
+ eglInitialize(display, NULL, NULL);
+
+ /* get an appropriate EGL frame buffer configuration */
+ eglChooseConfig(display, attribute_list, &amp;config, 1, &amp;num_config);
+
+ /* create an EGL rendering context */
+ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
+
+ /* create a native window */
+ native_window = createNativeWindow();
+
+ /* create an EGL window surface */
+ surface = eglCreateWindowSurface(display, config, native_window, NULL);
+
+ /* connect the context to the surface */
+ eglMakeCurrent(display, surface, surface, context);
+
+ /* clear the color buffer */
+ glClearColor(1.0, 1.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFlush();
+
+ eglSwapBuffers(display, surface);
+
+ sleep(10);
+ return EXIT_SUCCESS;
+}
+</programlisting>
+ </refsect1>
+ <refsect1 id="usingeglextensions"><title>Using EGL Extensions</title>
+ <para>
+ All supported EGL extensions will have a corresponding definition in
+ <filename>egl.h</filename> and a token in the extensions string returned
+ by
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 id="futureeglversions"><title>Future EGL Versions</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ and
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>
+ can be used to determine at run-time what version of EGL is available.
+ To check the EGL version at compile-time, test whether
+ <constant>EGL_VERSION_<replaceable>x</replaceable>_<replaceable>y</replaceable></constant>
+ is defined, where <replaceable>x</replaceable> and
+ <replaceable>y</replaceable> are the major and minor version
+ numbers.
+ </para>
+ </refsect1>
+ <refsect1 id="files"><title>Files</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>GLES/egl.h</filename></term>
+ <listitem><para>
+ EGL header file
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+<!--
+ <citerefentry><refentrytitle>glIntro</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+-->
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglMakeCurrent.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglMakeCurrent.xml
new file mode 100644
index 0000000..b237907
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglMakeCurrent.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglMakeCurrent">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglMakeCurrent</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglMakeCurrent</refname>
+ <refpurpose>
+ attach an EGL rendering context to EGL surfaces
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglMakeCurrent</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>draw</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>read</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> display connection.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>draw</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> draw surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>read</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> read surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> rendering context
+ to be attached to the surfaces.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglMakeCurrent</function> binds <parameter>context</parameter>
+ to the current rendering thread and to the <parameter>draw</parameter>
+ and <parameter>read</parameter> surfaces. <parameter>draw</parameter>
+ is used for all GL operations except for any pixel data read back
+ (<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>, and
+ <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>),
+ which is taken from the frame buffer values of
+ <parameter>read</parameter>.
+ </para>
+ <para>
+ If the calling thread has already a current rendering context, that
+ context is flushed and marked as no longer current.
+ </para>
+ <para>
+ The first time that <parameter>context</parameter> is made current,
+ the viewport and scissor dimensions are set to the size of the
+ <parameter>draw</parameter> surface. The viewport and
+ scissor are not modified when <parameter>context</parameter> is
+ subsequently made current.
+ </para>
+ <para>
+ To release the current context without assigning a new one, call
+ <function>eglMakeCurrent</function> with <parameter>draw</parameter>
+ and <parameter>read</parameter> set to
+ <constant>EGL_NO_SURFACE</constant> and <parameter>context</parameter>
+ set to <constant>EGL_NO_CONTEXT</constant>.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>, and
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>
+ to query the current rendering context and associated display connection and surfaces.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise. If <constant>EGL_FALSE</constant>
+ is returned, the previously current rendering context and
+ surfaces (if any) remain unchanged.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>draw</parameter> or <parameter>read</parameter> is not an
+ EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>draw</parameter> or
+ <parameter>read</parameter>
+ are not compatible with
+ <parameter>context</parameter>, or if
+ <parameter>context</parameter> is set to
+ <constant>EGL_NO_CONTEXT</constant> and
+ <parameter>draw</parameter> or
+ <parameter>read</parameter>
+ are not set to
+ <constant>EGL_NO_SURFACE</constant>, or if
+ <parameter>draw</parameter> or
+ <parameter>read</parameter> are set to
+ <constant>EGL_NO_SURFACE</constant> and
+ <parameter>context</parameter> is not set to
+ <constant>EGL_NO_CONTEXT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if
+ <parameter>context</parameter>
+ is current to some other thread.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ a native pixmap underlying either
+ <parameter>draw</parameter> or
+ <parameter>read</parameter>
+ is no longer valid.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_WINDOW</constant> may be generated if
+ a native window underlying either
+ <parameter>draw</parameter> or
+ <parameter>read</parameter>
+ is no longer valid.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the previous context has unflushed commands and the previous surface
+ is no longer valid.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> may be generated if
+ allocation of ancillary buffers for <parameter>draw</parameter> or
+ <parameter>read</parameter> were delayed until
+ <function>eglMakeCurrent</function> is called, and there are not
+ enough resources to allocate them.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryAPI.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryAPI.xml
new file mode 100644
index 0000000..359f64c
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryAPI.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglQueryAPI">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglQueryAPI</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryAPI</refname>
+ <refpurpose>Query the current rendering API</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLenum <function>eglQueryAPI</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglQueryAPI</function> returns the value of the
+ current rendering API for EGL in the thread it is called
+ from. The current rendering API is set by
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ and affects the behavior of other EGL commands.
+ </para>
+ <para>
+ The value returned will be one of the valid
+ <parameter>api</parameter> parameters to
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>, or
+ <constant>EGL_NONE</constant>.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglQueryAPI</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ The initial value of the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <constant>EGL_NONE</constant> (however,
+ <constant>EGL_NONE</constant> is not a valid
+ <parameter>api</parameter> parameter to
+ <function>eglQueryAPI</function>).
+ </para>
+ <para>
+ The current rendering API can be changed by calling
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ None.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryContext.xml
new file mode 100644
index 0000000..7137ad2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryContext.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglQueryContext">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglQueryContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryContext</refname>
+ <refpurpose>
+ return <acronym>EGL</acronym> rendering context information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglQueryContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL rendering context to query.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL rendering context attribute to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Returns the requested value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglQueryContext</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for <parameter>context</parameter>.
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the context was created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_TYPE</constant></term>
+ <listitem><para>
+ Returns the type of client API which the context
+ supports (one of
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, or
+ <constant>EGL_OPENVG_API</constant>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_VERSION</constant></term>
+ <listitem><para>
+ Returns the version of the client API which the
+ context supports, as specified at context creation
+ time. The resulting value is only meaningful for an
+ OpenGL ES context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem>
+ <para>
+ Returns the buffer which client API rendering
+ via the context will use. The value returned
+ depends on properties of both the context, and
+ the surface to which the context is bound:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ If the context is bound to a pixmap surface,
+ then <constant>EGL_SINGLE_BUFFER</constant> will
+ be returned.
+ </para></listitem>
+ <listitem><para>
+ If the context is bound to a pbuffer surface,
+ then <constant>EGL_BACK_BUFFER</constant> will
+ be returned.
+ </para></listitem>
+ <listitem><para>
+ If the context is bound to a window surface,
+ then either <constant>EGL_BACK_BUFFER</constant>
+ or <constant>EGL_SINGLE_BUFFER</constant> may be
+ returned. The value returned depends on both the
+ buffer requested by the setting of the
+ <constant>EGL_RENDER_BUFFER</constant> property
+ of the surface (which may be queried by calling
+ <function>eglQuerySurface</function>), and on
+ the client API (not all client APIs support
+ single-buffer rendering to window surfaces).
+ </para></listitem>
+ <listitem><para>
+ If the context is not bound to a surface, such
+ as an OpenGL ES context bound to a framebuffer
+ object, then <constant>EGL_NONE</constant> will
+ be returned.
+ </para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attributes <constant>EGL_CONTEXT_CLIENT_TYPE</constant> and
+ <constant>EGL_RENDER_BUFFER</constant> are supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_CONTEXT_CLIENT_VERSION</constant> is
+ supported only if the EGL version is 1.3 or greater.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid context attribute.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryString.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryString.xml
new file mode 100644
index 0000000..0799e18
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQueryString.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglQueryString">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglQueryString</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryString</refname>
+ <refpurpose>
+ return a string describing an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>char const * <function>eglQueryString</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint <parameter>name</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>name</parameter></term>
+ <listitem>
+ <para>
+ Specifies a symbolic constant, one of
+ <constant>EGL_CLIENT_APIS</constant>,
+ <constant>EGL_VENDOR</constant>,
+ <constant>EGL_VERSION</constant>, or
+ <constant>EGL_EXTENSIONS</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglQueryString</function> returns a pointer to a
+ static string describing an EGL display connection.
+ <parameter>name</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CLIENT_APIS</constant></term>
+ <listitem><para>
+ Returns a string describing which client rendering
+ APIs are supported. The string contains a
+ space-separate list of API names. The list must
+ include at least one of <code>OpenGL</code>,
+ <code>OpenGL_ES</code>, or <code>OpenVG</code>.
+ These strings correspond respectively to values
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, and
+ <constant>EGL_OPENVG_API</constant> of the
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <parameter>api</parameter> argument.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VENDOR</constant></term>
+ <listitem><para>
+ Returns the company responsible for this EGL implementation. This
+ name does not change from release to release.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VERSION</constant></term>
+ <listitem><para>
+ Returns a version or release number.
+ The <constant>EGL_VERSION</constant> string is laid out as
+ follows:</para>
+ <para>
+ <replaceable>major_version</replaceable>.<replaceable>minor_version</replaceable>
+ space
+ <replaceable>vendor_specific_info</replaceable>
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_EXTENSIONS</constant></term>
+ <listitem><para>
+ Returns a space separated list of supported extensions to EGL.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_CLIENT_APIS</constant> is supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>NULL</constant> is returned on failure.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>name</parameter> is not an accepted value.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQuerySurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQuerySurface.xml
new file mode 100644
index 0000000..1053cd2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglQuerySurface.xml
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglQuerySurface">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglQuerySurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQuerySurface</refname>
+ <refpurpose>
+ return <acronym>EGL</acronym> surface information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglQuerySurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface to query.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface attribute to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Returns the requested value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglQuerySurface</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for <parameter>surface</parameter>.
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the surface was created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HEIGHT</constant></term>
+ <listitem><para>
+ Returns the height of the surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HORIZONTAL_RESOLUTION</constant></term>
+ <listitem><para>
+ Returns the horizontal dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LARGEST_PBUFFER</constant></term>
+ <listitem><para>
+ Returns the same attribute value specified when the
+ surface was created with
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>.
+ For a window or pixmap surface,
+ <parameter>value</parameter> is not modified.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_LEVEL</constant></term>
+ <listitem><para>
+ Returns which level of the mipmap to render to, if
+ texture has mipmaps.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem><para>
+ Returns <constant>EGL_TRUE</constant> if texture has
+ mipmaps, <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE</constant></term>
+ <listitem>
+ <para>
+ Returns the filter used when resolving the
+ multisample buffer. The filter may be either
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>
+ or <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>,
+ as described for
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PIXEL_ASPECT_RATIO</constant></term>
+ <listitem><para>
+ Returns the aspect ratio of an individual pixel (the
+ ratio of a pixel's width to its height). The value
+ returned is equal to the actual aspect ratio
+ multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem><para>
+ Returns the buffer which client API rendering is
+ requested to use. For a window surface, this is the
+ same attribute value specified when the surface was
+ created. For a pbuffer surface, it is always
+ <constant>EGL_BACK_BUFFER</constant>. For a pixmap
+ surface, it is always
+ <constant>EGL_SINGLE_BUFFER</constant>. To determine
+ the actual buffer being rendered to by a context,
+ call
+ <citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR</constant></term>
+ <listitem><para>
+ Returns the effect on the color buffer when posting
+ a surface with
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>.
+ Swap behavior may be either
+ <constant>EGL_BUFFER_PRESERVED</constant> or
+ <constant>EGL_BUFFER_DESTROYED</constant>, as
+ described for
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem><para>
+ Returns format of texture. Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem><para>
+ Returns type of texture. Possible values are
+ <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VERTICAL_RESOLUTION</constant></term>
+ <listitem><para>
+ Returns the vertical dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WIDTH</constant></term>
+ <listitem><para>
+ Returns the width of the surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ Attributes <constant>EGL_DISPLAY_SCALING</constant>.
+ <constant>EGL_HORIZONTAL_RESOLUTION</constant>,
+ <constant>EGL_PIXEL_ASPECT_RATIO</constant>,
+ <constant>EGL_RENDER_BUFFER</constant>,
+ <constant>EGL_SWAP_BEHAVIOR</constant>, and
+ <constant>EGL_VERTICAL_RESOLUTION</constant> are supported
+ only if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Querying attributes <constant>EGL_TEXTURE_FORMAT</constant>,
+ <constant>EGL_TEXTURE_TARGET</constant>,
+ <constant>EGL_MIPMAP_TEXTURE</constant>, or
+ <constant>EGL_MIPMAP_LEVEL</constant> for a non-pbuffer
+ surface is not an error, but <parameter>value</parameter> is
+ not modified.
+ </para>
+ <para>
+ <constant>EGL_DISPLAY_SCALING</constant> is the constant
+ value 10000. Floating-point values such as resolution and
+ pixel aspect ratio are scaled by this value before being
+ returned as integers so that sufficient precision to be
+ meaningful will be retained in the returned value.
+ </para>
+ <para>
+ For an offscreen (pbuffer or pixmap) surface, or a surface
+ whose pixel dot pitch or aspect ratio are unknown, querying
+ <constant>EGL_HORIZONTAL_RESOLUTION</constant>,
+ <constant>EGL_PIXEL_ASPECT_RATIO</constant>, or
+ <constant>EGL_VERTICAL_RESOLUTION</constant> will return the
+ constant value <constant>EGL_UNKNOWN</constant> (-1).
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid surface attribute.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseTexImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseTexImage.xml
new file mode 100644
index 0000000..408fbf5
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseTexImage.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglReleaseTexImage">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglReleaseTexImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglReleaseTexImage</refname>
+ <refpurpose>
+ Releases a color buffer that is being used as a texture
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglReleaseTexImage</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>buffer</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>Specifies the texture image data.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ The specified color buffer is released back to the surface. The surface is made
+ available for reading and writing when it no longer has any color buffers bound as
+ textures.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ If the specified color buffer is no longer bound to a texture (e.g., because the
+ texture object was deleted) then eglReleaseTexImage has no effect. No error is
+ generated.
+ </para>
+ <para>
+ The contents of the color buffer are undefined when it is first released. In particular,
+ there is no guarantee that the texture image is still present. However, the contents of
+ other color buffers are unaffected by this call. Also, the contents of the depth and stencil buffers
+ are not affected by <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>
+ and <function>eglReleaseTexImage</function>.
+ </para>
+ <para>
+ After a color buffer is released from a texture (either explicitly by calling
+ <function>eglReleaseTexImage</function> or implicitly by calling a routine such as
+ <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>),
+ all texture images that were defined by the color buffer become <constant>NULL</constant>
+ (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry> was called with an image of zero width).
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is
+ set to <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>buffer</parameter> is not a valid buffer
+ (currently only <constant>EGL_BACK_BUFFER</constant> may be
+ specified).
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface, or is
+ not a bound pbuffer surface.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseThread.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseThread.xml
new file mode 100644
index 0000000..c37f903
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglReleaseThread.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglReleaseThread">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglReleaseThread</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglReleaseThread</refname>
+ <refpurpose>Release EGL per-thread state</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglReleaseThread</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglReleaseThread</function> returns the EGL to its
+ state at thread initialization, releasing all per-thread
+ state including the error status returned by
+ <command>eglGetError</command>, the currently bound
+ rendering API defined by <command>eglBindAPI</command>, and
+ the current contexts for each supported client API. The
+ overhead of maintaining this state may be objectionable in
+ applications which create and destroy many threads, but only
+ call EGL or client APIs in a few of those threads at any
+ given time.
+ </para>
+ <para>
+ <constant>EGL_TRUE</constant> is returned on success, and the
+ following actions are taken:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For each client API supported by EGL, if there is a
+ currently bound context, that context is released.
+ This is equivalent to calling
+ <function>eglMakeCurrent</function> with ctx set to
+ <constant>EGL_NO_CONTEXT</constant> and both draw
+ and read set to <constant>EGL_NO_SURFACE</constant>
+ (see section 3.7.3).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The current rendering API is reset to its value at
+ thread initialization (see
+ <command>eglBindAPI</command>).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Any additional implementation-dependent per-thread
+ state maintained by EGL is marked for deletion as
+ soon as possible.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ <function>eglReleaseThread</function> may be called in any
+ thread at any time, and may be called more than once in a
+ single thread. The initialization status of EGL (see section
+ 3.2) is not affected by releasing the thread; only
+ per-thread state is affected.
+ </para>
+ <para>
+ Resources explicitly allocated by calls to EGL, such as
+ contexts, surfaces, and configuration lists, are not
+ affected by <function>eglReleaseThread</function>. Such
+ resources belong not to the thread, but to the EGL
+ implementation as a whole.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglReleaseThread</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Applications may call other EGL routines from a thread
+ following <function>eglReleaseThread</function>, but any
+ such call may reallocate the EGL state previously released.
+ In particular, calling <function>eglGetError</function>
+ immediately following a successful call to
+ <function>eglReleaseThread</function> will return
+ <constant>EGL_SUCCESS</constant>, but will also result in
+ reallocating per-thread state.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise. There are no
+ defined conditions under which failure will occur. Even if
+ EGL is not initialized on any EGLDisplay,
+ <function>eglReleaseThread</function> should succeed.
+ </para>
+ <para>
+ However, platform-dependent failures may be signaled through
+ the value returned from <function>eglGetError</function>.
+ Unless the platform-dependent behavior is known, a failed
+ call to <function>eglReleaseThread</function> should be
+ assumed to leave the current rendering API, and the
+ currently bound contexts for each supported client API, in
+ an unknown state.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetError</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSurfaceAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSurfaceAttrib.xml
new file mode 100644
index 0000000..0487c6b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSurfaceAttrib.xml
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglSurfaceAttrib">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglSurfaceAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSurfaceAttrib</refname>
+ <refpurpose>
+ set an <acronym>EGL</acronym> surface attribute
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSurfaceAttrib</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface attribute to set.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Specifies the attributes required value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglSurfaceAttrib</function> sets the value of
+ <parameter>attribute</parameter> for
+ <parameter>surface</parameter> to
+ <parameter>value</parameter>.
+ <parameter>attribute</parameter> can be one of the
+ following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_LEVEL</constant></term>
+ <listitem><para>
+ For mipmap textures, the
+ <constant>EGL_MIPMAP_LEVEL</constant> attribute
+ indicates which level of the mipmap should be
+ rendered. If the value of this attribute is outside
+ the range of supported mipmap levels, the closest
+ valid mipmap level is selected for rendering. The
+ default value is <constant>0</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE</constant></term>
+ <listitem>
+ <para>
+ Specifies the filter to use when resolving the
+ multisample buffer (this may occur when swapping or
+ copying the surface, or when changing the client API
+ context bound to the surface). A
+ <parameter>value</parameter> of
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>
+ chooses the default implementation-defined filtering
+ method, while
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>
+ chooses a one-pixel wide box filter placing equal
+ weighting on all multisample values.
+ </para>
+ <para>
+ The initial value of
+ <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR</constant></term>
+ <listitem>
+ <para>
+ Specifies the effect on the color buffer of posting
+ a surface with
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>.
+ A <parameter>value</parameter> of
+ <constant>EGL_BUFFER_PRESERVED</constant> indicates
+ that color buffer contents are unaffected, while
+ <constant>EGL_BUFFER_DESTROYED</constant> indicates
+ that color buffer contents may be destroyed or
+ changed by the operation.
+ </para>
+ <para>
+ The initial value of
+ <constant>EGL_SWAP_BEHAVIOR</constant> is chosen by
+ the implementation.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_SWAP_BEHAVIOR</constant> is
+ supported only if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If the value of pbuffer attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is
+ <constant>EGL_NO_TEXTURE</constant>, the value of attribute
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>, or
+ <parameter>surface</parameter> is not a pbuffer, then
+ attribute <constant>EGL_MIPMAP_LEVEL</constant> may be set,
+ but has no effect.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>attribute</parameter> is
+ <constant>EGL_MULTISAMPLE_RESOLVE</constant>,
+ <parameter>value</parameter> is
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>, and the
+ <constant>EGL_SURFACE_TYPE</constant> attribute of the
+ <type>EGLConfig</type> used to create
+ <parameter>surface</parameter> does not contain
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>attribute</parameter> is
+ <constant>EGL_SWAP_BEHAVIOR</constant>,
+ <parameter>value</parameter> is
+ <constant>EGL_BUFFER_PRESERVED</constant>, and the
+ <constant>EGL_SURFACE_TYPE</constant> attribute of the
+ <type>EGLConfig</type> used to create
+ <parameter>surface</parameter> does not contain
+ <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid surface attribute.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapBuffers.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapBuffers.xml
new file mode 100644
index 0000000..6e1ad73
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapBuffers.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglSwapBuffers">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglSwapBuffers</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSwapBuffers</refname>
+ <refpurpose>
+ post <acronym>EGL</acronym> surface color buffer to a native window
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSwapBuffers</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL drawing surface whose buffers are to be swapped.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ If <parameter>surface</parameter> is a window surface,
+ <function>eglSwapBuffers</function> posts its color buffer
+ to the associated native window.
+ </para>
+ <para>
+ The contents of ancillary buffers are always undefined after
+ calling <function>eglSwapBuffers</function>. The contents of
+ the color buffer are left unchanged if the value of the
+ <constant>EGL_SWAP_BEHAVIOR</constant> attribute of
+ <parameter>surface</parameter> is
+ <constant>EGL_BUFFER_PRESERVED</constant>, and are undefined
+ if the value is <constant>EGL_BUFFER_DESTROYED</constant>.
+ The value of <constant>EGL_SWAP_BEHAVIOR</constant> can be
+ set for some surfaces using
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglSwapBuffers</function> performs an implicit
+ flush operation on the context (<function>glFlush</function>
+ for an OpenGL ES or OpenGL context,
+ <function>vgFlush</function> for an OpenVG context) bound to
+ <parameter>surface</parameter> before swapping. Subsequent
+ client API commands may be issued on that context
+ immediately after calling
+ <function>eglSwapBuffers</function>, but are not executed
+ until the buffer exchange is completed.
+ </para>
+ <para>
+ If <parameter>surface</parameter> is a pixel buffer or a pixmap,
+ <function>eglSwapBuffers</function>
+ has no effect, and no error is generated.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_SWAP_BEHAVIOR</constant> is
+ supported only if the EGL version is 1.2 or greater. In
+ earlier versions, behavior is as though the attribute
+ exists, and always has the value
+ <constant>EGL_BUFFER_DESTROYED</constant>.
+ </para>
+ <para>
+ The EGL 1.4 specification was updated to acknowledge that
+ ancillary buffers are not necessarily preserved after a
+ swap, and that the <constant>EGL_SWAP_BEHAVIOR</constant>
+ attribute applies only to the color buffer. This change in
+ the specification acknowledged the behavior of many shipping
+ implementations, and is not intended to result in behavior
+ changes in any existing implementation. Applications which
+ require preservation of ancillary buffers across a swap
+ should be aware that not all implementations can preserve
+ them, and that EGL 1.4 has no way to query whether or not
+ they are preserved.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if swapping of the
+ surface buffers fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL drawing surface.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapInterval.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapInterval.xml
new file mode 100644
index 0000000..4ec5aba
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglSwapInterval.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglSwapInterval">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglSwapInterval</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSwapInterval</refname>
+ <refpurpose>
+ specifies the minimum number of video frame periods
+ per buffer swap for the window associated with the current context.
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSwapInterval</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint <parameter>interval</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>interval</parameter></term>
+ <listitem>
+ <para>
+ Specifies the minimum number of video frames that are displayed before
+ a buffer swap will occur.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ The interval takes effect when <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> is
+ first called subsequent to the <function>eglSwapInterval</function> call.
+ </para>
+ <para>
+ The <parameter>interval</parameter> specified by the function applies to the draw surface
+ bound to the context that is current on the calling thread.
+ </para>
+ <para>
+ If <parameter>interval</parameter> is set to a value of <constant>0</constant>, buffer swaps are not synchronized to a
+ video frame, and the swap happens as soon as the render is complete. interval
+ is silently clamped to minimum and maximum implementation dependent
+ valuesbefore being stored; these values are defined by <type>EGLConfig</type> attributes
+ <constant>EGL_MIN_SWAP_INTERVAL</constant> and <constant>EGL_MAX_SWAP_INTERVAL</constant> respectively.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ The swap interval has no effect on <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ The default swap interval is 1.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if there is no current context
+ on the calling thread.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if there is no surface
+ bound to the current context.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglTerminate.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglTerminate.xml
new file mode 100644
index 0000000..966b8c8
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglTerminate.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglTerminate">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglTerminate</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglTerminate</refname>
+ <refpurpose>
+ terminate an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglTerminate</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection to terminate.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <function>eglTerminate</function> releases resources associated with
+ an EGL display connection. Termination marks all EGL resources associated
+ with the EGL display connection for deletion. If contexts or surfaces
+ associated with <parameter>display</parameter> is current to any thread,
+ they are not released until they are no longer current as a result of
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ Terminating an already terminated EGL display connection has no effect.
+ A terminated display may be re-initialized by calling
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ again.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglTerminate</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitClient.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitClient.xml
new file mode 100644
index 0000000..0ec3714
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitClient.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglWaitClient">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglWaitClient</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitClient</refname>
+ <refpurpose>
+ Complete client API execution prior to subsequent native
+ rendering calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitClient</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ All rendering calls for the currently bound context, for the
+ current rendering API, made prior to
+ <function>eglWaitClient</function> are guaranteed to be
+ executed before native rendering calls made after
+ <function>eglWaitClient</function>. The same result can be
+ achieved using client API-specific commands such as
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>
+ or
+ <citerefentry><refentrytitle>vgFinish</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is ignored if there is no
+ current EGL rendering context for the current rendering API.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglWaitClient</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ If there is no current context for the current rendering
+ API, the function has no effect but still returns
+ <constant>EGL_TRUE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitClient</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is a generalized version
+ of <function>eglWaitGL</function>, supporting multiple
+ client APIs.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>vgFinish</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitGL.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitGL.xml
new file mode 100644
index 0000000..3da6f96
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitGL.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglWaitGL">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglWaitGL</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitGL</refname>
+ <refpurpose>
+ Complete GL execution prior to subsequent native rendering
+ calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitGL</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ All OpenGL ES rendering calls for the currently bound OpenGL
+ ES context made prior to <function>eglWaitGL</function> are
+ guaranteed to be executed before native rendering calls made
+ after <function>eglWaitGL</function>. The same result can be
+ achieved using
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglWaitGL</function> is ignored if there is no
+ current EGL rendering context for OpenGL ES.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitClient</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is a generalized version
+ of <function>eglWaitGL</function>, supporting multiple
+ client APIs. For backwards compatibility,
+ <function>eglWaitGL</function> continues to be supported and
+ is equivalent to the series of commands
+ </para>
+ <programlisting>
+ EGLenum api = <function>eglQueryAPI</function>();
+ <function>eglBindAPI</function>(<constant>EGL_OPENGL_ES_API</constant>);
+ <function>eglWaitClient</function>();
+ <function>eglBindAPI</function>(api);
+ </programlisting>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglWaitGL</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitNative.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitNative.xml
new file mode 100644
index 0000000..0a44340
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/eglWaitNative.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry xml:base="" id="eglWaitNative">
+ <refentryinfo>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </refentryinfo>
+ <refmeta>
+ <refentrytitle>eglWaitNative</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitNative</refname>
+ <refpurpose>
+ complete native execution prior to subsequent GL rendering calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitNative</function></funcdef>
+ <paramdef>EGLint <parameter>engine</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>engine</parameter></term>
+ <listitem>
+ <para>
+ Specifies a particular marking engine to be waited on.
+ Must be <constant>EGL_CORE_NATIVE_ENGINE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ Native rendering calls made prior to <function>eglWaitNative</function>
+ are guaranteed to be executed before GL rendering calls made after
+ <function>eglWaitNative</function>.
+ </para>
+ <para>
+ <function>eglWaitNative</function>
+ is ignored if there is no current
+ <acronym>EGL</acronym>
+ rendering context.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>engine</parameter> is not a recognized marking engine.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant>
+ is generated if the surface associated with the current context has a
+ native window or pixmap, and that window or pixmap is no longer valid.
+ </para>
+ </refsect1>
+ <refsect1 id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <refsect3 id="Copyright"><title></title>
+ <!-- Content included from copyright.inc.xsl -->
+ <imageobject>
+ <imagedata fileref="KhronosLogo.jpg" format="jpg" />
+ </imageobject>
+ <para />
+ </refsect3>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/docbook4/reference.xml b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/reference.xml
new file mode 100644
index 0000000..0aa0603
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/docbook4/reference.xml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.2//EN" "DTD/docbook/docbookx.dtd">
+<!--
+ Copyright 2003-2010 Khronos Group.
+ This material may be distributed subject to the terms and conditions set forth in
+ the Open Publication License, v 1.0, 8 June 1999.
+ http://opencontent.org/openpub/
+-->
+<book xmlns:xi="http://www.w3.org/2001/XInclude">
+ <title>
+ EGL Reference Manual
+ </title>
+ <subtitle>
+ Version 1.4
+ </subtitle>
+ <bookinfo>
+ <author>
+ <firstname>Claude</firstname>
+ <surname>Knaus</surname>
+ </author>
+ <author>
+ <firstname>Jon</firstname>
+ <surname>Leech</surname>
+ </author>
+ <date>October 2010</date>
+ <releaseinfo>Draft Version 20101012</releaseinfo>
+ <subjectset>
+ <subject>EGL</subject>
+ </subjectset>
+ <keywordset>
+ <keyword>EGL</keyword>
+ <keyword>man</keyword>
+ <keyword>reference</keyword>
+ </keywordset>
+ <xi:include href="legal-notice.xml"/>
+ </bookinfo>
+ <toc>
+ <title>Contents</title>
+ <!-- generated by LaTeX -->
+ </toc>
+ <chapter>
+ <title>Preface</title>
+ <sect1>
+ <title>Style Conventions</title>
+ <para>
+ The following style conventions apply to this document:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><function>Bold</function></term>
+ <listitem><para>Command and function names</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>Italics</parameter></term>
+ <listitem>Variables and parameters</listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Regular</term>
+ <listitem><para>Ordinary text</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>Monospace</constant></term>
+ <listitem><para>Constants and source code</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+ </chapter>
+ <chapter>
+ <title>Summary of Commands and Routines</title>
+ <sect1>
+ <title>EGL Functions</title>
+ <para>Manage or query display connections:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Request EGL and client API extension functions:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetProcAddress</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Query errors:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetError</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Request or query frame buffer configurations:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query the current rendering API:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryAPI</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query EGL rendering contexts:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query EGL surfaces:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Synchronize execution:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Post and copy buffers:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Bind pixel buffer surfaces to OpenGL ES textures:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry></member>
+ </simplelist>
+ </sect1>
+ </chapter>
+ <chapter>
+ <title>EGL Reference Pages</title>
+ <xi:include href="eglBindAPI.xml"/>
+ <xi:include href="eglBindTexImage.xml"/>
+ <xi:include href="eglChooseConfig.xml"/>
+ <xi:include href="eglCopyBuffers.xml"/>
+ <xi:include href="eglCreateContext.xml"/>
+ <xi:include href="eglCreatePbufferSurface.xml"/>
+ <xi:include href="eglCreatePixmapSurface.xml"/>
+ <xi:include href="eglCreateWindowSurface.xml"/>
+ <xi:include href="eglDestroyContext.xml"/>
+ <xi:include href="eglDestroySurface.xml"/>
+ <xi:include href="eglGetConfigAttrib.xml"/>
+ <xi:include href="eglGetConfigs.xml"/>
+ <xi:include href="eglGetCurrentContext.xml"/>
+ <xi:include href="eglGetCurrentDisplay.xml"/>
+ <xi:include href="eglGetCurrentSurface.xml"/>
+ <xi:include href="eglGetDisplay.xml"/>
+ <xi:include href="eglGetError.xml"/>
+ <xi:include href="eglGetProcAddress.xml"/>
+ <xi:include href="eglInitialize.xml"/>
+ <xi:include href="eglIntro.xml"/>
+ <xi:include href="eglMakeCurrent.xml"/>
+ <xi:include href="eglQueryAPI.xml"/>
+ <xi:include href="eglQueryContext.xml"/>
+ <xi:include href="eglQueryString.xml"/>
+ <xi:include href="eglQuerySurface.xml"/>
+ <xi:include href="eglReleaseTexImage.xml"/>
+ <xi:include href="eglReleaseThread.xml"/>
+ <xi:include href="eglSurfaceAttrib.xml"/>
+ <xi:include href="eglSwapBuffers.xml"/>
+ <xi:include href="eglSwapInterval.xml"/>
+ <xi:include href="eglTerminate.xml"/>
+ <xi:include href="eglWaitClient.xml"/>
+ <xi:include href="eglWaitGL.xml"/>
+ <xi:include href="eglWaitNative.xml"/>
+ </chapter>
+ <xi:include href="license-full.xml"/>
+</book>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglBindAPI.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglBindAPI.xml
new file mode 100644
index 0000000..0874cb3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglBindAPI.xml
@@ -0,0 +1,123 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglBindAPI">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglBindAPI</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglBindAPI</refname>
+ <refpurpose>Set the current rendering API</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglBindAPI</function></funcdef>
+ <paramdef>EGLenum <parameter>api</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>api</parameter></term>
+ <listitem>
+ <para>
+ Specifies the client API to bind, one of
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, or
+ <constant>EGL_OPENVG_API</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglBindAPI</function> defines the current
+ rendering API for EGL in the thread it is called from. The
+ current rendering API is one of the client rendering APIs
+ supported by the EGL implementation, and affects the
+ behavior of other EGL commands including
+ <function>eglCreateContext</function>,
+ <function>eglGetCurrentContext</function>,
+ <function>eglGetCurrentDisplay</function>,
+ <function>eglGetCurrentSurface</function>,
+ <function>eglMakeCurrent</function>,
+ <function>eglSwapInterval</function>,
+ <function>eglWaitClient</function>, and
+ <function>eglWaitNative</function>.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENGL_API</constant>, the current rendering
+ API is set to the OpenGL API.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENGL_ES_API</constant>, the current
+ rendering API is set to the OpenGL ES API.
+ </para>
+ <para>
+ If <parameter>api</parameter> is
+ <constant>EGL_OPENVG_API</constant>, the current rendering
+ API is set to the OpenVG API.
+ </para>
+ <para>
+ If an error occurs, the current rendering API is unchanged.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglBindAPI</function> and the corresponding
+ <constant>EGL_OPENGL_ES_API</constant> and
+ <constant>EGL_OPENVG_API</constant>
+ <parameter>api</parameter> parameters are supported only if
+ the EGL version is 1.2 or greater. The
+ <constant>EGL_OPENGL_API</constant> parameter is supported
+ only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ The initial value of the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <constant>EGL_NONE</constant> (however,
+ <constant>EGL_NONE</constant> is not a valid
+ <parameter>api</parameter> parameter to
+ <function>eglBindAPI</function>).
+ </para>
+ <para>
+ The current rendering API can be queried by calling
+ <function>eglQueryAPI</function>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>api</parameter> is not one of the accepted
+ tokens, or if the specified client API is not supported by
+ the EGL implementation.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglBindTexImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglBindTexImage.xml
new file mode 100644
index 0000000..81779e3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglBindTexImage.xml
@@ -0,0 +1,172 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglBindTexImage">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglBindTexImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglBindTexImage</refname>
+ <refpurpose>
+ Defines a two-dimensional texture image
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglBindTexImage</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>buffer</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>Specifies the texture image data.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ The texture image consists of the image data in <parameter>buffer</parameter> for the specified surface, and need not be copied.
+ </para>
+ <para>
+ The texture target, the texture format and the size of the texture components are derived from
+ attributes of the specified surface, which must be a pbuffer supporting one of the
+ <constant>EGL_BIND_TO_TEXTURE_RGB</constant> or <constant>EGL_BIND_TO_TEXTURE_RGBA</constant> attributes.
+ </para>
+ <para>
+ The pbuffer attribute <constant>EGL_TEXTURE_FORMAT</constant> determines the base internal format
+ of the texture.
+ </para>
+ <para>
+ The texture target is derived from the <constant>EGL_TEXTURE_TARGET</constant> attribute of surface.
+ If the attribute value is <constant>EGL_TEXTURE_2D</constant>, then <parameter>buffer</parameter> defines a texture for
+ the two-dimensional texture object which is bound to the current context (hereafter
+ referred to as the current texture object).
+ </para>
+ <para>
+ If <parameter>display</parameter> and <parameter>surface</parameter> are the display and surface for the calling thread's current
+ context, <function>eglBindTexImage</function> performs an implicit <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>.
+ For other surfaces, <function>eglBindTexImage</function> waits for all effects from previously issued OpenGL ES commands
+ drawing to the surface to complete before defining the texture image, as
+ though <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry> were called on the last context to which that surface were bound.
+ </para>
+ <para>
+ After <function>eglBindTexImage</function> is called, the specified surface is no longer available
+ for reading or writing. Any read operation, such as <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry> or
+ <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>, which reads values from any of the surface's color buffers or ancillary
+ buffers will produce indeterminate results. In addition, draw operations that are
+ done to the surface before its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context and thread
+ then rendering commands will be processed and the context state will be updated,
+ but the surface may or may not be written.
+ </para>
+ <para>
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling <function>eglBindTexImage</function>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <constant>EGL_MIPMAP_TEXTURE</constant> attribute of the pbuffer being bound is
+ <constant>EGL_TRUE</constant>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The OpenGL ES texture parameter <constant>GL_GENERATE_MIPMAP</constant> is <constant>GL_TRUE</constant> for
+ the currently bound texture.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The value of the <constant>EGL_MIPMAP_LEVEL</constant> attribute of the pbuffer being bound is
+ equal to the value of the texture parameter <constant>GL_TEXTURE_BASE_LEVEL</constant>.
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> has no effect if it is
+ called on a bound surface.
+ </para>
+ <para>
+ Any existing images associated with the different mipmap levels of the texture object
+ are freed (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry>
+ was called with an image of zero width).
+ </para>
+ <para>
+ The color buffer is bound to a texture object. If the texture object is
+ shared between contexts, then the color buffer is also shared. If a texture object is
+ deleted before <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry> is called, then the color buffer is released and
+ the surface is made available for reading and writing.
+ </para>
+ <para>
+ It is not an error to call <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry> or
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry> to replace an
+ image of a texture object that has a color buffer bound to it. However, these calls
+ will cause the color buffer to be released back to the surface and new memory will
+ be allocated for the texture. Note that the color buffer is released even if the image
+ that is being defined is a mipmap level that was not defined by the color buffer.
+ </para>
+ <para>
+ <function>eglBindTexImage</function> is ignored if there is no current rendering context.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if
+ <parameter>buffer</parameter> is already bound to a texture.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is
+ set to <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>buffer</parameter> is not a valid buffer
+ (currently only <constant>EGL_BACK_BUFFER</constant> may be
+ specified).
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface, or is
+ not a pbuffer surface supporting texture binding.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglChooseConfig.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglChooseConfig.xml
new file mode 100644
index 0000000..87c7ce1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglChooseConfig.xml
@@ -0,0 +1,915 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglChooseConfig">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglChooseConfig</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglChooseConfig</refname>
+ <refpurpose>
+ return a list of EGL frame buffer configurations that match specified attributes
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglChooseConfig</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
+ <paramdef>EGLint <parameter>config_size</parameter></paramdef>
+ <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>Specifies attributes required to match by configs.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>configs</parameter></term>
+ <listitem><para>Returns an array of frame buffer configurations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config_size</parameter></term>
+ <listitem><para>Specifies the size of the array of frame buffer configurations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>num_config</parameter></term>
+ <listitem><para>Returns the number of frame buffer configurations returned.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglChooseConfig</function> returns in
+ <parameter>configs</parameter> a list of all
+ <acronym>EGL</acronym> frame buffer configurations that
+ match the attributes specified in
+ <parameter>attrib_list</parameter>. The returned
+ <type>EGLConfig</type>s can be used in any
+ <acronym>EGL</acronym> function that requires an
+ <acronym>EGL</acronym> frame buffer configuration.
+ </para>
+ <para>
+ If <parameter>configs</parameter> is not
+ <constant>NULL</constant>, up to
+ <parameter>config_size</parameter> configs will be returned
+ in the array pointed to by <parameter>configs</parameter>.
+ The number of configs actually returned will be returned in
+ *<parameter>num_config</parameter>.
+ </para>
+ <para>
+ If <parameter>configs</parameter> is
+ <constant>NULL</constant>, no configs will be returned in
+ <parameter>configs</parameter>. Instead, the total number of
+ configs matching <parameter>attrib_list</parameter> will be
+ returned in *<parameter>num_config</parameter>. In this case
+ <parameter>config_size</parameter> is ignored. This form of
+ <function>eglChooseConfig</function> is used to determine
+ the number of matching frame buffer configurations, followed
+ by allocating an array of <type>EGLConfig</type> to pass
+ into another call to <function>eglChooseConfig</function>
+ with all other parameters unchanged.
+ </para>
+ <para>
+ All attributes in <parameter>attrib_list</parameter>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value. The list is terminated with
+ <constant>EGL_NONE</constant>. If an attribute is not
+ specified in <parameter>attrib_list</parameter> then the
+ default value (see below) is used (and the attribute is said
+ to be specified implicitly). For example, if
+ <constant>EGL_DEPTH_SIZE</constant> is not specified then it
+ is assumed to be zero. For some attributes, the default is
+ <constant>EGL_DONT_CARE</constant> meaning that any value is
+ OK for this attribute, so the attribute will not be checked.
+ </para>
+ <para>
+ Attributes are matched in an attribute-specific manner. Some
+ of the attributes, such as <constant>EGL_LEVEL</constant>,
+ must match the specified value exactly. Others, such as,
+ <constant>EGL_RED_SIZE</constant> must meet or exceed the
+ specified minimum values. If more than one EGL frame buffer
+ configuration matching all attributes is found, then a list
+ of configurations, sorted according to the ``best'' match
+ criteria, is returned. The match criteria for each attribute
+ and the exact sorting order is defined below.
+ </para>
+ <para>
+ For the bitmask attributes
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant>, only the nonzero bits
+ of the mask are considered when matching. Any bits that are
+ zero in the specified bitmask attribute value may be either
+ zero or one in the resulting config's attribute value.
+ </para>
+ <para>
+ Attributes which may appear in
+ <parameter>attrib_list</parameter>, and their descriptions
+ and allowed values, are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired alpha mask buffer size, in
+ bits. The smallest alpha mask buffers of at least
+ the specified size are preferred. The default value
+ is zero.
+ </para>
+ <para>
+ The alpha mask buffer is used only by OpenVG.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the alpha component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest alpha component size
+ are preferred. Otherwise, color buffers with the
+ largest alpha component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGB texture
+ will be considered. Currently only frame buffer
+ configurations that support pbuffers allow this. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
+ <listitem><para>
+ Must be followed by one of
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGBA
+ texture will be considered. Currently only frame
+ buffer configurations that support pbuffers allow
+ this. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BLUE_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the blue component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest blue component size
+ are preferred. Otherwise, color buffers with the
+ largest blue component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BUFFER_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired color buffer size, in bits.
+ The smallest color buffers of at least the specified
+ size are preferred. The default value is zero.
+ </para>
+ <para>
+ The color buffer size is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>, and does not
+ include any padding bits which may be present in the
+ pixel format. It is usually preferable to specify
+ desired sizes for these color components
+ individually.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by one of
+ <constant>EGL_RGB_BUFFER</constant> or
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para>
+ <para>
+ <constant>EGL_RGB_BUFFER</constant> indicates
+ an RGB color buffer; in this case,
+ attributes <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant> and
+ <constant>EGL_BLUE_SIZE</constant> must be non-zero, and
+ <constant>EGL_LUMINANCE_SIZE</constant> must be zero.
+ </para>
+ <para>
+ <constant>EGL_LUMINANCE_BUFFER</constant> indicates a luminance color
+ buffer. In this case <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant> must be zero, and
+ <constant>EGL_LUMINANCE_SIZE</constant> must be non-zero.
+ </para>
+ <para>
+ For both RGB and luminance color buffers,
+ <constant>EGL_ALPHA_SIZE</constant> may be zero or
+ non-zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_CAVEAT</constant></term>
+ <listitem>
+ <para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, or
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
+ </para>
+ <para>
+ If <constant>EGL_DONT_CARE</constant> is specified,
+ then configs are not matched for this attribute. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ If <constant>EGL_NONE</constant> is specified, then
+ configs are matched for this attribute, but only
+ configs with no caveats (neither
+ <constant>EGL_SLOW_CONFIG</constant> or
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>) will
+ be considered.
+ </para>
+ <para>
+ If <constant>EGL_SLOW_CONFIG</constant> is
+ specified, then only slow configs configurations
+ will be considered. The meaning of``slow'' is
+ implementation-dependent, but typically indicates a
+ non-hardware-accelerated (software) implementation.
+ </para>
+ <para>
+ If <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
+ specified, then only configs supporting
+ non-conformant OpenGL ES contexts will be
+ considered.
+ </para>
+ <para>
+ If the EGL version is 1.3 or later, caveat
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
+ obsolete, since the same information can be
+ specified via the
+ <constant>EGL_CONFORMANT</constant> attribute on a
+ per-client-API basis, not just for OpenGL ES.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a valid integer ID that
+ indicates the desired EGL frame buffer
+ configuration. When a
+ <constant>EGL_CONFIG_ID</constant> is specified, all
+ other attributes are ignored. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ The meaning of config IDs is
+ implementation-dependent. They are used only to
+ uniquely identify different frame buffer
+ configurations.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFORMANT</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which types
+ of client API contexts created with respect to the
+ frame buffer configuration config must pass the
+ required conformance tests for that API. Mask bits
+ include:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_ES_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL ES 1.0
+ and/or 1.1 contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENGL_ES2_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenGL ES 2.0 contexts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_OPENVG_BIT</constant></term>
+ <listitem><para>
+ Config supports creating OpenVG contexts.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ For example, if the bitmask is set to
+ <constant>EGL_OPENGL_ES_BIT</constant>, only frame
+ buffer configurations that support creating
+ conformant OpenGL ES contexts will match. The
+ default value is zero.
+ </para>
+ <para>
+ Most EGLConfigs should be conformant for all
+ supported client APIs, and it is rarely desirable to
+ select a nonconformant config. Conformance
+ requirements limit the number of non-conformant
+ configs that an implementation can define.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_DEPTH_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired depth buffer size, in bits.
+ The smallest depth buffers of at least the specified
+ size is preferred. If the desired size is zero,
+ frame buffer configurations with no depth buffer are
+ preferred. The default value is zero.
+ </para>
+ <para>
+ The depth buffer is used only by OpenGL and OpenGL
+ ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GREEN_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the green component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest green component size
+ are preferred. Otherwise, color buffers with the
+ largest green component of at least the specified
+ size are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LEVEL</constant></term>
+ <listitem><para>
+ Must be followed by an integer buffer level
+ specification. This specification is honored
+ exactly. Buffer level zero corresponds to the
+ default frame buffer of the display. Buffer level
+ one is the first overlay frame buffer, level two the
+ second overlay frame buffer, and so on. Negative
+ buffer levels correspond to underlay frame buffers.
+ The default value is zero.
+ </para>
+ <para>
+ Most platforms do not support buffer levels other than
+ zero. The behavior of windows placed in overlay and
+ underlay planes depends on the underlying platform.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LUMINANCE_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the luminance
+ component of the color buffer, in bits. If this
+ value is zero, color buffers with the smallest
+ luminance component size are preferred. Otherwise,
+ color buffers with the largest luminance component
+ of at least the specified size are preferred. The
+ default value is zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MATCH_NATIVE_PIXMAP</constant></term>
+ <listitem>
+ <para>
+ Must be followed by the handle of a valid native
+ pixmap, cast to <type>EGLint</type>, or
+ <constant>EGL_NONE</constant>. If the value is not
+ <constant>EGL_NONE</constant>, only configs which
+ support creating pixmap surfaces with this pixmap
+ using
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>
+ will match this attribute. If the value is
+ <constant>EGL_NONE</constant>, then configs are not
+ matched for this attribute. The default value is
+ <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ <constant>EGL_MATCH_NATIVE_PIXMAP</constant> was
+ introduced due to the difficulty of determining an
+ <type>EGLConfig</type> compatibile with a native
+ pixmap using only color component sizes.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_DONT_CARE</constant>,
+ <constant>EGL_TRUE</constant>, or
+ <constant>EGL_FALSE</constant>.
+ If <constant>EGL_TRUE</constant> is specified, then
+ only frame buffer configurations that allow native
+ rendering into the surface will be considered. The
+ default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
+ <listitem><para>
+ Must be followed by a integer that indicates the
+ maximum value that can be passed to
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
+ <listitem><para>
+ Must be followed by a integer that indicates the
+ minimum value that can be passed to eglSwapInterval.
+ The default value is <constant>EGL_DONT_CARE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RED_SIZE</constant></term>
+ <listitem><para>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the red component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest red component size
+ are preferred. Otherwise, color buffers with the
+ largest red component of at least the specified size
+ are preferred. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
+ <listitem><para>
+ Must be followed by the minimum acceptable number of
+ multisample buffers. Configurations with the
+ smallest number of multisample buffers that meet or
+ exceed this minimum number are preferred. Currently
+ operation with more than one multisample buffer is
+ undefined, so only values of zero or one will
+ produce a match. The default value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLES</constant></term>
+ <listitem><para>
+ Must be followed by the minimum number of
+ samples required in multisample buffers.
+ Configurations with the smallest number of
+ samples that meet or exceed the specified
+ minimum number are preferred. Note that it is
+ possible for color samples in the multisample
+ buffer to have fewer bits than colors in the
+ main color buffers. However, multisampled
+ colors maintain at least as much color
+ resolution in aggregate as the main color
+ buffers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_STENCIL_SIZE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a nonnegative integer that
+ indicates the desired stencil buffer size, in bits.
+ The smallest stencil buffers of at least the
+ specified size are preferred. If the desired size is
+ zero, frame buffer configurations with no stencil
+ buffer are preferred. The default value is zero.
+ </para>
+ <para>
+ The stencil buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDERABLE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which types
+ of client API contexts the frame buffer
+ configuration must support creating with
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>).
+ Mask bits are the same as for attribute
+ <constant>EGL_CONFORMANT</constant>. The default
+ value is <constant>EGL_OPENGL_ES_BIT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SURFACE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Must be followed by a bitmask indicating which EGL
+ surface types and capabilities the frame buffer
+ configuration must support. Mask bits include:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying box filtered
+ multisample resolve behavior with
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PBUFFER_BIT</constant></term>
+ <listitem><para>
+ Config supports creating pixel buffer surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PIXMAP_BIT</constant></term>
+ <listitem><para>
+ Config supports creating pixmap surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant></term>
+ <listitem><para>
+ Config allows setting swap behavior for
+ color buffers with
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying OpenVG rendering
+ with premultiplied alpha values at surface
+ creation time (see
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ and
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant></term>
+ <listitem><para>
+ Config allows specifying OpenVG rendering in
+ a linear colorspace at surface creation time
+ (see
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ and
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WINDOW_BIT</constant></term>
+ <listitem><para>
+ Config supports creating window surfaces.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ For example, if the bitmask is set to
+ <constant>EGL_WINDOW_BIT</constant> |
+ <constant>EGL_PIXMAP_BIT</constant>,
+ only frame buffer configurations that support both
+ windows and pixmaps will be considered. The default
+ value is <constant>EGL_WINDOW_BIT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
+ <listitem><para>
+ Must be followed by one of
+ <constant>EGL_NONE</constant> or
+ <constant>EGL_TRANSPARENT_RGB</constant>. If
+ <constant>EGL_NONE</constant> is specified, then
+ only opaque frame buffer configurations will be
+ considered. If
+ <constant>EGL_TRANSPARENT_RGB</constant> is
+ specified, then only transparent frame buffer
+ configurations will be considered. The default value
+ is <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ Most implementations support only opaque frame
+ buffer configurations.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent red value. The value must be between
+ zero and the maximum color buffer value for red.
+ Only frame buffer configurations that use the
+ specified transparent red value will be considered.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent green value. The value must be between
+ zero and the maximum color buffer value for green.
+ Only frame buffer configurations that use the
+ specified transparent green value will be
+ considered. The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
+ <listitem><para>
+ Must be followed by an integer value indicating the
+ transparent blue value. The value must be between
+ zero and the maximum color buffer value for blue.
+ Only frame buffer configurations that use the
+ specified transparent blue value will be considered.
+ The default value is
+ <constant>EGL_DONT_CARE</constant>.
+ </para>
+ <para>
+ This attribute is ignored unless
+ <constant>EGL_TRANSPARENT_TYPE</constant> is included in
+ <parameter>attrib_list</parameter> and specified as
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ When more than one EGL frame buffer configuration matches
+ the specified attributes, a list of matching configurations
+ is returned. The list is sorted according to the following
+ precedence rules, which are applied in ascending order
+ (i.e., configurations that are considered equal by a lower
+ numbered rule are sorted by the higher numbered rule):
+ </para>
+ <orderedlist>
+ <listitem><para>
+ Special: by <constant>EGL_CONFIG_CAVEAT</constant>,
+ where the precedence is <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, and
+ <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
+ </para></listitem>
+ <listitem><para>
+ Special: by <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ where the precedence is
+ <constant>EGL_RGB_BUFFER</constant>,
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para></listitem>
+ <listitem>
+ <para>
+ Special: by larger total number of color bits (for an
+ RGB color buffer, this is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>; for a luminance
+ color buffer, the sum of
+ <constant>EGL_LUMINANCE_SIZE</constant> and
+ <constant>EGL_ALPHA_SIZE</constant>). If the requested
+ number of bits in <parameter>attrib_list</parameter> is
+ <constant>0</constant> or
+ <constant>EGL_DONT_CARE</constant> for a particular
+ color component, then the number of bits for that
+ component is not considered.
+ </para>
+ <para>
+ This sort rule places configs with deeper color buffers
+ before configs with shallower color buffers, which may
+ be counterintuitive.
+ </para>
+ </listitem>
+ <listitem><para>
+ Smaller <constant>EGL_BUFFER_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_SAMPLE_BUFFERS</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_SAMPLES</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_DEPTH_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_STENCIL_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_ALPHA_MASK_SIZE</constant>.
+ </para></listitem>
+ <listitem><para>
+ Special: <constant>EGL_NATIVE_VISUAL_TYPE</constant>
+ (the actual sort order is implementation-defined,
+ depending on the meaning of native visual types).
+ </para></listitem>
+ <listitem><para>
+ Smaller <constant>EGL_CONFIG_ID</constant> (this is
+ always the last sorting rule, and guarantees a unique
+ ordering).
+ </para></listitem>
+ </orderedlist>
+ <para>
+ <type>EGLConfigs</type> are not sorted with respect to the
+ attributes <constant>EGL_BIND_TO_TEXTURE_RGB</constant>,
+ <constant>EGL_BIND_TO_TEXTURE_RGBA</constant>,
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_LEVEL</constant>,
+ <constant>EGL_NATIVE_RENDERABLE</constant>,
+ <constant>EGL_MAX_SWAP_INTERVAL</constant>,
+ <constant>EGL_MIN_SWAP_INTERVAL</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>,
+ <constant>EGL_SURFACE_TYPE</constant>,
+ <constant>EGL_TRANSPARENT_TYPE</constant>,
+ <constant>EGL_TRANSPARENT_RED_VALUE</constant>,
+ <constant>EGL_TRANSPARENT_GREEN_VALUE</constant>, and
+ <constant>EGL_TRANSPARENT_BLUE_VALUE</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="examples"><title>Examples</title>
+ <para>
+ The following example specifies a frame buffer configuration
+ in the normal frame buffer (not an overlay or underlay). The
+ returned frame buffer configuration supports a color buffer
+ with at least 4 bits each of red, green and blue, and
+ possibly no alpha bits. The code shown in the example may or
+ may not have a depth buffer, or a stencil buffer.
+ </para>
+ <programlisting>EGLint const attrib_list[] = {
+ EGL_RED_SIZE, 4,
+ EGL_GREEN_SIZE, 4,
+ EGL_BLUE_SIZE, 4,
+ EGL_NONE
+};</programlisting>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_RENDERABLE_TYPE</constant> bit
+ <constant>EGL_OPENGL_BIT</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant> bits
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant> and
+ <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant> are
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ <constant>EGL_CONFORMANT</constant>,
+ <constant>EGL_MATCH_NATIVE_PIXMAP</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant> bit
+ <constant>EGL_OPENGL_ES2_BIT</constant>, and
+ <constant>EGL_SURFACE_TYPE</constant> bits
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> and
+ <constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant> are
+ supported only if the EGL version is 1.3 or greater.
+ </para>
+ <para>
+ <constant>EGL_ALPHA_MASK_SIZE</constant>,
+ <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ <constant>EGL_LUMINANCE_SIZE</constant>,
+ <constant>EGL_RENDERABLE_TYPE</constant>, and
+ <constant>EGL_RENDERABLE_TYPE</constant> bits
+ <constant>EGL_OPENGL_ES_BIT</constant> and
+ <constant>EGL_OPENVG_BIT</constant> are supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If OpenGL or OpenGL ES rendering is supported for a
+ luminance color buffer, it is treated as RGB rendering with
+ the value of <constant>GL_RED_BITS</constant> equal to
+ <constant>EGL_LUMINANCE_SIZE</constant> and the values of
+ <constant>GL_GREEN_BITS</constant> and
+ <constant>GL_BLUE_BITS</constant> equal to zero. The red
+ component of fragments is written to the luminance channel
+ of the color buffer while the green and blue components are
+ discarded.
+ </para>
+ <para>
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ and
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ can be used to implement selection algorithms other than the
+ generic one implemented by
+ <function>eglChooseConfig</function>. Call
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ to retrieve all the frame buffer configurations, or
+ alternatively, all the frame buffer configurations with a
+ particular set of attributes. Next call
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ to retrieve additional attributes for the frame buffer
+ configurations and then select between them.
+ </para>
+ <para>
+ EGL implementors are strongly discouraged, but not
+ proscribed, from changing the selection algorithm used by
+ <function>eglChooseConfig</function>. Therefore, selections
+ may change from release to release of the client-side
+ library.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>configs</parameter> and
+ <parameter>num_config</parameter> are not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute_list</parameter> contains an invalid frame buffer
+ configuration attribute or an
+ attribute value that is unrecognized or out of range.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>num_config</parameter> is <constant>NULL</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglClientWaitSync.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglClientWaitSync.xml
new file mode 100644
index 0000000..a6b7478
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglClientWaitSync.xml
@@ -0,0 +1,161 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglClientWaitSync">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglClientWaitSync</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglClientWaitSync</refname>
+ <refpurpose>
+ Wait in the client for a sync object to be signalled
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLint <function>eglClientWaitSync</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSync <parameter>sync</parameter></paramdef>
+ <paramdef>EGLint <parameter>flags</parameter></paramdef>
+ <paramdef>EGLTime <parameter>timeout</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>sync</parameter></term>
+ <listitem><para>
+ Specifies the sync object to wait on.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>flags</parameter></term>
+ <listitem><para>
+ Specifies flags controlling wait behavior.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>timeout</parameter></term>
+ <listitem><para>
+ Specifies wait timeout interval.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglClientWaitSync</function> blocks the calling thread
+ until the specified sync object <parameter>sync</parameter> is
+ signaled, or until <parameter>timeout</parameter> nanoseconds
+ have passed.
+ </para>
+ <para>
+ More than one <function>eglClientWaitSync</function> may be
+ outstanding on the same <parameter>sync</parameter> at any given
+ time. When there are multiple threads blocked on the same
+ <parameter>sync</parameter> and the sync object is signaled, all
+ such threads are released, but the order in which they are
+ released is not defined.
+ </para>
+ <para>
+ If the value of <parameter>timeout</parameter> is zero, then
+ <function>eglClientWaitSync</function> simply tests the current
+ status of <parameter>sync</parameter>. If the value of
+ <parameter>timeout</parameter> is the special value
+ <constant>EGL_FOREVER</constant>, then
+ <function>eglClientWaitSync</function> does not time out. For
+ all other values, <parameter>timeout</parameter> is adjusted to
+ the closest value allowed by the implementation-dependent
+ timeout accuracy, which may be substantially longer than one
+ nanosecond.
+ </para>
+ <para>
+ <function>eglClientWaitSync</function> returns one of three
+ status values describing the reason for returning. A return
+ value of <constant>EGL_TIMEOUT_EXPIRED</constant> indicates that
+ the specified timeout period expired before
+ <parameter>sync</parameter> was signaled, or if
+ <parameter>timeout</parameter> is zero, indicates that
+ <parameter>sync</parameter> is not signaled. A return value of
+ <constant>EGL_CONDITION_SATISFIED</constant> indicates that
+ <parameter>sync</parameter> was signaled before the timeout
+ expired, which includes the case when
+ <parameter>sync</parameter> was already signaled when
+ <function>eglClientWaitSync</function> was called. If an error
+ occurs then an error is generated and
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ If the sync object being blocked upon will not be signaled in
+ finite time (for example, by an associated fence command issued
+ previously, but not yet flushed to the graphics pipeline), then
+ <function>eglClientWaitSync</function> may wait forever. To help
+ prevent this behavior, if the
+ <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant> bit is set in
+ <parameter>flags</parameter>, and <parameter>sync</parameter> is
+ unsignaled when <function>eglClientWaitSync</function> is
+ called, then the equivalent of Flush() will be performed for the
+ current API context (i.e., the context returned by
+ <function>eglGetCurrentContext</function>) before blocking on
+ <parameter>sync</parameter>. If no context is current for the
+ bound API, the <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant>
+ bit is ignored.
+ </para>
+ <para>
+ Note: the simple Flush behavior defined by
+ <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant> will not help
+ when waiting for a fence command issued in a different context's
+ command stream. Applications which block on a fence sync object
+ must take additional steps to ensure that the context from which
+ the associated fence command was issued has flushed that command
+ to the graphics pipeline.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglClientWaitSync</function> returns
+ <constant>EGL_FALSE</constant> on failure.
+ </para>
+ <para>
+ If <parameter>sync</parameter> is not a valid sync object for
+ <parameter>display</parameter>, an
+ <constant>EGL_BAD_PARAMETER</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>display</parameter> does not match the
+ <type>EGLDisplay</type> passed to
+ <function>eglCreateSync</function> when
+ <parameter>sync</parameter> was created, the behaviour is
+ undefined.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglClientWaitSync</function> is available only if the
+ EGL version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitSync</refentrytitle></citerefentry>,
+ <function>glFinish</function>,
+ <function>vgFinish</function>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCopyBuffers.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCopyBuffers.xml
new file mode 100644
index 0000000..0541f20
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCopyBuffers.xml
@@ -0,0 +1,120 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCopyBuffers">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCopyBuffers</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCopyBuffers</refname>
+ <refpurpose>
+ copy <acronym>EGL</acronym> surface color buffer to a native pixmap
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglCopyBuffers</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>NativePixmapType <parameter>native_pixmap</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface whose color buffer is to be copied.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem>
+ <para>
+ Specifies the native pixmap as target of the copy.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCopyBuffers</function> copies the color buffer of
+ <parameter>surface</parameter> to <parameter>native_pixmap</parameter>.
+ </para>
+ <para>
+ <function>eglCopyBuffers</function> performs an implicit
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>
+ before it returns. Subsequent
+ GL commands may be issued immediately after calling
+ <function>eglCopyBuffers</function>,
+ but are not executed until copying of the color buffer is completed.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ The color buffer of <parameter>surface</parameter> is left unchanged
+ after calling <function>eglCopyBuffers</function>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if swapping of the
+ surface buffers fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL drawing surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> is generated if
+ the implementation does not support native pixmaps.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ <parameter>native_pixmap</parameter> is not a valid native pixmap.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the format of <parameter>native_pixmap</parameter> is not compatible
+ with the color buffer of <parameter>surface</parameter>.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreateContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateContext.xml
new file mode 100644
index 0000000..73c54b6
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateContext.xml
@@ -0,0 +1,212 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreateContext">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreateContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateContext</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLContext <function>eglCreateContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLContext <parameter>share_context</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the
+ <acronym>EGL</acronym>
+ display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>Specifies the EGL frame buffer configuration that
+ defines the frame buffer resource available to the rendering context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>share_context</parameter></term>
+ <listitem><para>
+ Specifies another
+ <acronym>EGL</acronym>
+ rendering context with which to share data, as
+ defined by the client API corresponding to the
+ contexts. Data is also shared with all other
+ contexts with which
+ <parameter>share_context</parameter> shares data.
+ <constant>EGL_NO_CONTEXT</constant> indicates that
+ no sharing is to take place.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies attributes and attribute values for the
+ context being created. Only the attribute
+ <constant>EGL_CONTEXT_CLIENT_VERSION</constant> may
+ be specified.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreateContext</function> creates an EGL
+ rendering context for the current rendering API (as set with
+ <function>eglBindAPI</function>) and returns a handle to the
+ context. The context can then be used to render into an EGL
+ drawing surface. If <function>eglCreateContext</function>
+ fails to create a rendering context,
+ <constant>EGL_NO_CONTEXT</constant> is returned.
+ </para>
+ <para>
+ If <parameter>share_context</parameter> is not
+ <constant>EGL_NO_CONTEXT</constant>, then all shareable data
+ in the context (as defined by the client API specification
+ for the current rendering API) are shared by context
+ <parameter>share_context</parameter>, all other contexts
+ <parameter>share_context</parameter> already shares with,
+ and the newly created context. An arbitrary number of
+ rendering contexts can share data. However, all rendering
+ contexts that share data must themselves exist in the same
+ address space. Two rendering contexts share an address space
+ if both are owned by a single process.
+ </para>
+ <para>
+ <parameter>attrib_list</parameter> specifies a list of
+ attributes for the context. The list has the same structure
+ as described for <function>eglChooseConfig</function>. The
+ attributes and attribute values which may be specified are
+ as follows:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_MAJOR_VERSION</constant></term>
+ <listitem><para>
+ Must be followed by an integer specifying the requested
+ major version of an OpenGL or OpenGL ES context. The
+ default value is 1. This attribute is an alias of the
+ older <constant>EGL_CONTEXT_CLIENT_VERSION</constant>,
+ and the tokens may be used interchangeably.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_MINOR_VERSION</constant></term>
+ <listitem><para>
+ Must be followed by an integer specifying the requested
+ minor version of an OpenGL or OpenGL ES context. The
+ default value is 0.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_PROFILE_MASK</constant></term>
+ <listitem><para>
+ Must be followed by an integer bitmask specifying the
+ <firstterm>profile</firstterm> of an OpenGL context.
+ Bits which may be set include
+ <constant>EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT</constant>
+ for a core profile and
+ <constant>EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT</constant>
+ for a compatibility profile. The default value is
+ <constant>EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT</constant>.
+ All OpenGL 3.2 and later implementations are required to
+ implement the core profile, but implementation of the
+ compatibility profile is optional.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_DEBUG</constant></term>
+ <listitem><para>
+ Must be followed by <constant>EGL_TRUE</constant>,
+ specifying that an OpenGL or OpenGL ES <firstterm>debug
+ context</firstterm> should be created, or
+ <constant>EGL_FALSE</constant>, if a non-debug context
+ should be created. The default value is
+ <constant>EGL_FALSE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE</constant></term>
+ <listitem><para>
+ Must be followed by <constant>EGL_TRUE</constant>,
+ specifying that a
+ <firstterm>forward-compatible</firstterm> OpenGL context
+ should be created, or <constant>EGL_FALSE</constant>, if
+ a non-forward-compatible context should be created. The
+ default value is <constant>EGL_FALSE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_ROBUST_ACCESS</constant></term>
+ <listitem><para>
+ Must be followed by <constant>EGL_TRUE</constant>,
+ specifying that an OpenGL or OpenGL ES context
+ supporting <firstterm>robust buffer access</firstterm>
+ should be created, or <constant>EGL_FALSE</constant>, if
+ a non-robust context should be created. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY</constant></term>
+ <listitem><para>
+ Must be followed by
+ <constant>EGL_LOSE_CONTEXT_ON_RESET</constant>,
+ specifying that an OpenGL or OpenGL ES context with
+ reset notification behavior
+ <constant>GL_LOSE_CONTEXT_ON_RESET_ARB</constant> should
+ be created, or
+ <constant>EGL_NO_RESET_NOTIFICATION</constant>,
+ specifying that an OpenGL or OpenGL ES context with
+ reset notification behavior
+ <constant>GL_NO_RESET_NOTIFICATION_ARB</constant> should
+ be created, as described by the
+ <constant>GL_ARB_robustness</constant> extension.
+ </para><para>
+ If the
+ <constant>EGL_CONTEXT_OPENGL_ROBUST_ACCESS</constant>
+ attribute is not set to <constant>EGL_TRUE</constant>,
+ context creation will not fail, but the resulting
+ context may not support robust buffer access, and
+ therefore may not support the requested reset
+ notification strategy The default value for
+ <constant>EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY</constant>
+ is <constant>EGL_NO_RESET_NOTIFICATION</constant> .
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ There are many possible interactions between requested OpenGL
+ and OpenGL ES context creation attributes, depending on the API
+ versions and extensions supported by the implementation. These
+ interactions are described in detail in the EGL 1.5
+ Specification, but are not listed here for compactness. The
+ requested attributes may not be able to be satisfied, but
+ context creation may still succeed. Applications should ensure
+ that the OpenGL or OpenGL ES contexts supports needed features
+ before using them, by determining the actual context version,
+ supported extensions, and supported context flags using runtime
+ queries.
+ </para>
+ </refsect1>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreateImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateImage.xml
new file mode 100644
index 0000000..8072ec3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateImage.xml
@@ -0,0 +1,624 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreateImage">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreateImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateImage</refname>
+ <refpurpose>
+ Create a new <type>EGLImage</type> object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLImage <function>eglCreateImage</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ <paramdef>EGLenum <parameter>target</parameter></paramdef>
+ <paramdef>EGLClientBuffer <parameter>buffer</parameter></paramdef>
+ <paramdef>const EGLAttrib *<parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem><para>
+ Specifies the client API context for which the image is
+ created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>target</parameter></term>
+ <listitem><para>
+ Specifies the type of resource used as the image source.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>
+ Specifies the resource to be used as the image source.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies attributes used to select sub-sections of the
+ resource to be used as the image source.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreateImage</function> is used to create an
+ <type>EGLImage</type> object from an existing image resource
+ <parameter>buffer</parameter>. <parameter>display</parameter>
+ specifies the EGL display used for this operation.
+ <parameter>context</parameter> specifies the EGL client API
+ context used for this operation, or
+ <constant>EGL_NO_CONTEXT</constant> if a client API context is
+ not required. <parameter>target</parameter> specifies the type
+ of resource being used as the <type>EGLImage</type> source
+ (examples include two-dimensional textures in OpenGL ES contexts
+ and <type>VGImage</type> objects in OpenVG contexts).
+ <parameter>buffer</parameter> is the name (or handle) of a
+ resource to be used as the <type>EGLImage</type> source, cast
+ into the type <type>EGLClientBuffer</type>.
+ <parameter>attrib_list</parameter> is a list of attribute-value
+ pairs which is used to select sub-sections of
+ <parameter>buffer</parameter> for use as the
+ <type>EGLImage</type> source, such as mipmap levels for OpenGL
+ ES texture map resources, as well as behavioral options, such as
+ whether to preserve pixel data during creation. If
+ <parameter>attrib_list</parameter> is
+ non-<constant>NULL</constant>, the last attribute specified in
+ the list must be <constant>EGL_NONE</constant>.
+ </para>
+ <para>
+ The resource specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter>, and
+ <parameter>attrib_list</parameter> must not itself be an
+ <type>EGLImage</type> sibling, or bound to a pbuffer
+ <type>EGLSurface</type> resource
+ (<function>eglBindTexImage</function>,
+ <function>eglCreatePbufferFromClientBuffer</function>).
+ </para>
+ <para>
+ Values accepted for <parameter>target</parameter> are shown in
+ table <xref linkend="tab-imagetarget"/>.
+ </para>
+ <table frame="all" xml:id="tab-imagetarget">
+ <title>
+ Legal values for <function>eglCreateImage</function> <parameter>target</parameter>
+ </title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry><parameter>target</parameter></entry>
+ <entry>Notes</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_2D</constant></entry>
+ <entry>Used for GL 2D texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X</constant></entry>
+ <entry>Used for the +X face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X</constant></entry>
+ <entry>Used for the -X face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y</constant></entry>
+ <entry>Used for the +Y face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</constant></entry>
+ <entry>Used for the -Y face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z</constant></entry>
+ <entry>Used for the +Z face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</constant></entry>
+ <entry>Used for the -Z face of GL cubemap texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_3D</constant></entry>
+ <entry>Used for OpenGL and OpenGL ES 3D texture images</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_RENDERBUFFER</constant></entry>
+ <entry>Used for OpenGL and OpenGL ES renderbuffer images</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ Attribute names accepted in <parameter>attrib_list</parameter>
+ are shown in table <xref linkend="tab-imageattr"/>, together
+ with the <parameter>target</parameter> for which each attribute
+ name is valid, and the default value used for each attribute if
+ it is not included in <parameter>attrib_list</parameter>.
+ </para>
+ <table frame="all" xml:id="tab-imageattr">
+ <title>
+ Legal attributes for <function>eglCreateImage</function>
+ <parameter>attrib_list</parameter> parameter
+ </title>
+ <tgroup cols="4" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry><parameter>target</parameter></entry>
+ <entry>Notes</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Attribute</entry>
+ <entry>Description</entry>
+ <entry>Valid <parameter>target</parameter>s</entry>
+ <entry>Default Value</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_NONE</constant></entry>
+ <entry>Marks the end of the attribute-value list</entry>
+ <entry>All</entry>
+ <entry>N/A</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_LEVEL</constant></entry>
+ <entry>
+ Specifies the mipmap level used as the
+ <type>EGLImage</type> source. Must be part of
+ the complete texture object
+ <parameter>buffer</parameter>
+ </entry>
+ <entry>
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>, or
+ <constant>EGL_GL_TEXTURE_3D</constant>
+ </entry>
+ <entry>0</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_GL_TEXTURE_ZOFFSET</constant></entry>
+ <entry>
+ Specifies the depth offset of the image to use
+ as the <type>EGLImage</type> source. Must be
+ part of the complete texture object
+ <parameter>buffer</parameter>
+ </entry>
+ <entry><constant>EGL_GL_TEXTURE_3D</constant></entry>
+ <entry>0</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_IMAGE_PRESERVED</constant></entry>
+ <entry>Whether to preserve pixel data</entry>
+ <entry>All</entry>
+ <entry><constant>EGL_FALSE</constant></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <function>eglCreateImage</function> returns an
+ <type>EGLImage</type> object corresponding to the image data
+ specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter> and
+ <parameter>attrib_list</parameter> which may be referenced by
+ client API operations.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_3D</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z</constant>, or
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</constant>,
+ <parameter>display</parameter> must be a valid
+ <type>EGLDisplay</type>, and <parameter>context</parameter> must
+ be a valid OpenGL or OpenGL ES API context on that display.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <parameter>buffer</parameter> must be the name of a nonzero,
+ <constant>GL_TEXTURE_2D</constant> target texture object, cast
+ into the type <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ If <parameter>target</parameter> is one of the
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant> enumerants,
+ <parameter>buffer</parameter> must be the name of a nonzero,
+ <constant>GL_TEXTURE_CUBE_MAP</constant> (or equivalent in GL
+ extensions) target texture object, cast into the type
+ <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_3D</constant>,
+ <parameter>buffer</parameter> must be the name of a nonzero,
+ <constant>GL_TEXTURE_3D</constant> (or equivalent in GL
+ extensions) target texture object, cast into the type
+ <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ <parameter>attrib_list</parameter> should specify the mipmap
+ level (<constant>EGL_GL_TEXTURE_LEVEL</constant>) and, where
+ applicable, z-offset
+ (<constant>EGL_GL_TEXTURE_ZOFFSET</constant>) which will be used
+ as the <type>EGLImage</type> source; If not specified, the
+ default values listed in table <xref linkend="tab-imageattr"/>
+ will be used instead. Additional values specified in are
+ ignored.
+ </para>
+ <para>
+ There must exist some levels <emphasis>x</emphasis> and
+ <emphasis>y</emphasis> such that the mipmap level requested lies
+ between <emphasis>x</emphasis> and <emphasis>y</emphasis>
+ (inclusive), the texture would be mipmap complete were
+ <emphasis>x</emphasis> substituted for the base level and
+ <emphasis>y</emphasis> substituted for the max level, and all
+ levels less than <emphasis>x</emphasis> or greater than
+ <emphasis>y</emphasis> are unspecified. For cubemaps a single
+ pair <emphasis>x</emphasis> and <emphasis>y</emphasis> must
+ apply to all faces. For three-dimensional textures, the
+ specified z-offset must be smaller than the depth of the
+ specified mipmap level.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_RENDERBUFFER</constant>,
+ <parameter>buffer</parameter> must be the name of a complete,
+ nonzero, non-multisampled <constant>GL_RENDERBUFFER</constant>
+ (or equivalent in extensions) target object, cast into the type
+ <type>EGLClientBuffer</type>. Values specified in
+ <parameter>attrib_list</parameter> are ignored.
+ </para>
+ <para>
+ If the value of attribute
+ <constant>EGL_IMAGE_PRESERVED</constant> is
+ <constant>EGL_FALSE</constant> (the default), then all pixel
+ data values associated with <parameter>buffer</parameter> will
+ be undefined after <function>eglCreateImage</function> returns.
+ </para>
+ <para>
+ If the value of attribute
+ <constant>EGL_IMAGE_PRESERVED</constant> is
+ <constant>EGL_TRUE</constant>, then all pixel data values
+ associated with <parameter>buffer</parameter> are preserved.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglCreateImage</function> returns
+ <constant>EGL_NO_IMAGE</constant> on failure. The contents of
+ <parameter>buffer</parameter> will be unaffected.
+ </para>
+ <para>
+ If <parameter>display</parameter> is not the handle of a valid
+ <type>EGLDisplay</type> object, the error
+ <constant>EGL_BAD_DISPLAY</constant> is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> is neither the handle of a
+ valid <type>EGLContext</type> object on
+ <parameter>display</parameter> nor
+ <constant>EGL_NO_CONTEXT</constant>, the error
+ <constant>EGL_BAD_CONTEXT</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is not one of the values in
+ table <xref linkend="tab-imagetarget"/>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and
+ <parameter>display</parameter> is not a valid
+ <type>EGLDisplay</type>, the error
+ <constant>EGL_BAD_DISPLAY</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and
+ <parameter>context</parameter> is not a valid
+ <type>EGLContext</type>, the error
+ <constant>EGL_BAD_CONTEXT</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and
+ <parameter>context</parameter> is not a valid GL context, or
+ does not match the <parameter>display</parameter>, the error
+ <constant>EGL_BAD_MATCH</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant> and
+ <parameter>buffer</parameter> is not the name of a texture
+ object of type <parameter>target</parameter>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_RENDERBUFFER</constant> and
+ <parameter>buffer</parameter> is not the name of a renderbuffer
+ object, or if <parameter>buffer</parameter> is the name of a
+ multisampled renderbuffer object, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <constant>EGL_GL_TEXTURE_LEVEL</constant> is nonzero,
+ <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and
+ <parameter>buffer</parameter> is not the name of a complete GL
+ texture object, the error <constant>EGL_BAD_PARAMETER</constant>
+ is generated.
+ </para>
+ <para>
+ If <constant>EGL_GL_TEXTURE_LEVEL</constant> is 0,
+ <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>,
+ <parameter>buffer</parameter> is the name of an incomplete GL
+ texture object, and any mipmap levels other than mipmap level 0
+ are specified, the error <constant>EGL_BAD_PARAMETER</constant>
+ is generated.
+ </para>
+ <para>
+ If <constant>EGL_GL_TEXTURE_LEVEL</constant> is 0,
+ <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant>,
+ <parameter>buffer</parameter> is not the name of a complete GL
+ texture object, and mipmap level 0 is not specified, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <constant>EGL_GL_TEXTURE_LEVEL</constant> is 0,
+ <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <parameter>buffer</parameter> is not the name of a complete GL
+ texture object, and one or more faces do not have mipmap level 0
+ specified, the error <constant>EGL_BAD_PARAMETER</constant> is
+ generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>,
+ <constant>EGL_GL_RENDERBUFFER</constant> or
+ <constant>EGL_GL_TEXTURE_3D</constant> and
+ <parameter>buffer</parameter> refers to the default GL texture
+ object (0) for the corresponding GL target, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_2D</constant>,
+ <constant>EGL_GL_TEXTURE_CUBE_MAP_*</constant>, or
+ <constant>EGL_GL_TEXTURE_3D</constant>, and the value specified
+ in <parameter>attrib_list</parameter> for
+ <constant>EGL_GL_TEXTURE_LEVEL</constant> is not a valid mipmap
+ level for the specified GL texture object
+ <parameter>buffer</parameter>, the error
+ <constant>EGL_BAD_MATCH</constant> is generated.
+ </para>
+ <para>
+ If <parameter>target</parameter> is
+ <constant>EGL_GL_TEXTURE_3D</constant>, and the value specified
+ in <parameter>attrib_list</parameter> for
+ <constant>EGL_GL_TEXTURE_ZOFFSET</constant> exceeds the depth of
+ the specified mipmap level-of-detail in
+ <parameter>buffer</parameter>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If an attribute specified in <parameter>attrib_list</parameter>
+ is not one of the attributes shown in table <xref
+ linkend="tab-imageattr"/>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ <para>
+ If an attribute specified in <parameter>attrib_list</parameter>
+ is not a valid attribute for <parameter>target</parameter>, as
+ shown in table <xref linkend="tab-imageattr"/>, the error
+ <constant>EGL_BAD_MATCH</constant> is generated.
+ </para>
+ <para>
+ If the resource specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter> and
+ <parameter>attrib_list</parameter> has an off-screen buffer
+ bound to it (e.g., by a previous call to
+ <function>eglBindTexImage</function>), the error
+ <constant>EGL_BAD_ACCESS</constant> is generated.
+ </para>
+ <para>
+ If the resource specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter> and
+ <parameter>attrib_list</parameter> is bound to an off-screen
+ buffer (e.g., by a previous call to
+ <function>eglCreatePbufferFromClientBuffer</function>), the
+ error <constant>EGL_BAD_ACCESS</constant> is generated.
+ </para>
+ <para>
+ If the resource specified by <parameter>display</parameter>,
+ <parameter>context</parameter>, <parameter>target</parameter>,
+ <parameter>buffer</parameter> and
+ <parameter>attrib_list</parameter> is itself an
+ <type>EGLImage</type> sibling, the error
+ <constant>EGL_BAD_ACCESS</constant> is generated.
+ </para>
+ <para>
+ If insufficient memory is available to complete the specified
+ operation, the error <constant>EGL_BAD_ALLOC</constant> is
+ generated.
+ </para>
+ <para>
+ If the value specified in <parameter>attrib_list</parameter> for
+ <constant>EGL_IMAGE_PRESERVED</constant> is
+ <constant>EGL_TRUE</constant>, and an <type>EGLImage</type>
+ handle cannot be created from the specified resource such that
+ the pixel data values in <parameter>buffer</parameter> are
+ preserved, the error <constant>EGL_BAD_ACCESS</constant> is
+ generated.
+ </para>
+ <para>
+ Note that the success or failure of
+ <function>eglCreateImage</function> should not affect the
+ ability to use <parameter>buffer</parameter> in its original API
+ context (or context share group) (although the pixel data values
+ will be undefined if the command succeeds and the value of
+ <constant>EGL_IMAGE_PRESERVED</constant> is not
+ <constant>EGL_TRUE</constant>).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="lifetime"><title>Lifetime and Usage of <type>EGLImage</type>s</title>
+ <para>
+ Once an <type>EGLImage</type> is created from an
+ <type>EGLImage</type> source, the memory associated with the
+ <type>EGLImage</type> source will remain allocated (and all
+ <type>EGLImage</type> siblings in all client API contexts will
+ be useable) as long as either of the following conditions is
+ true:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Any <type>EGLImage</type> siblings exist in any client
+ API context
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <type>EGLImage</type> object exists inside EGL
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ The semantics for specifying, deleting and using
+ <type>EGLImage</type> siblings are client API-specific, and are
+ described in the appropriate API specifications.
+ </para>
+ <para>
+ If an application specifies an <type>EGLImage</type> sibling as
+ the destination for rendering and/or pixel download operations
+ (e.g., as an OpenGL or OpenGL ES framebuffer object,
+ <function>glTexSubImage2D</function>, etc.), the modified image
+ results will be observed by all <type>EGLImage</type> siblings
+ in all client API contexts. If multiple client API contexts
+ access <type>EGLImage</type> sibling resources simultaneously,
+ with one or more context modifying the image data, rendering
+ results in all contexts accessing <type>EGLImage</type> siblings
+ are undefined.
+ </para>
+ <para>
+ Respecification and/or deletion of any <type>EGLImage</type>
+ sibling (i.e., both <type>EGLImage</type> source and
+ <type>EGLImage</type> target resources) inside a client API
+ context (by issuing a subsequent call to commands such as
+ <function>glTexImage*</function> or
+ <function>glDeleteTextures</function>, with the
+ <type>EGLImage</type> sibling resource as the target of the
+ operation) affects only that client API context and other
+ contexts within its share group. For an OpenGL or OpenGL ES
+ context, respecification always results in
+ <firstterm>orphaning</firstterm> of the <type>EGLImage</type>,
+ and may also include allocation of additional memory for the
+ respecified resource and/or copying of the <type>EGLImage</type>
+ pixel data.
+ </para>
+ <para>
+ Note: Behavior of other types of client APIs generally follows
+ the OpenGL and OpenGL ES behavior described here, although this
+ is not mandated yet.
+ </para>
+ <para>
+ Operations inside EGL or any client API context which may affect
+ the lifetime of an <type>EGLImage</type> (or the memory
+ allocated for the <type>EGLImage</type>), such as respecifying
+ and/or deleting an <type>EGLImage</type> sibling inside a client
+ API context, must be atomic.
+ </para>
+ <para>
+ Applications may create client API resources from an
+ <type>EGLImage</type> using client API extensions outside the
+ scope of this document (such as
+ <constant>GL_OES_EGL_image</constant>, which creates OpenGL ES
+ texture and renderbuffer objects). If the <type>EGLImage</type>
+ used to create the client resource was created with the
+ <constant>EGL_IMAGE_PRESERVED</constant> attribute set to
+ <constant>EGL_TRUE</constant>, then the pixel data values
+ associated with the image will be preserved after creating the
+ client resource; otherwise, the pixel data values will be
+ undefined. If the <type>EGLImage</type> was created with the
+ <constant>EGL_IMAGE_PRESERVED</constant> attribute set to
+ <constant>EGL_TRUE</constant>, and EGL is unable to create the
+ client resource without modifying the pixel values, then
+ creation will fail and the pixel data values will be preserved.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglCreateImage</function> is available only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroyImage</refentrytitle></citerefentry>,
+ <function>glDeleteTextures</function>,
+ <function>glTexImage*</function>,
+ <function>glTexSubImage2D</function>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferFromClientBuffer.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferFromClientBuffer.xml
new file mode 100644
index 0000000..5c60017
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferFromClientBuffer.xml
@@ -0,0 +1,386 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePbufferFromClientBuffer">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePbufferFromClientBuffer</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixel buffer surface
+ bound to an OpenVG image
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePbufferFromClientBuffer</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLenum <parameter>buftype</parameter></paramdef>
+ <paramdef>EGLClientBuffer <parameter>buffer</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buftype</parameter></term>
+ <listitem>
+ <para>
+ Specifies the type of client API buffer to be bound.
+ Must be <constant>EGL_OPENVG_IMAGE</constant>,
+ corresponding to an OpenVG <type>VGImage</type>
+ buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem>
+ <para>
+ Specifies the OpenVG <type>VGImage</type> handle of
+ the buffer to be bound.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixel buffer surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePbufferFromClientBuffer</function> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <function>eglCreatePbufferFromClientBuffer</function> fails to create
+ a pixel buffer surface, <constant>EGL_NO_SURFACE</constant>
+ is returned.
+ </para>
+ <para>
+ The new pixel buffer surface is similar to a pixel buffer
+ created with
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ but storage for the color buffer is provided by a client API
+ buffer. Other buffer required by
+ <parameter>config</parameter>, such as depth, stencil, and
+ alpha mask, are allocated by EGL.
+ </para>
+ <para>
+ <parameter>buftype</parameter> must be
+ <constant>EGL_OPENVG_IMAGE</constant>, corresponding to an
+ OpenVG <type>VGImage</type> buffer.
+ <parameter>buffer</parameter> must be a valid
+ <type>VGImage</type> handle in the current OpenVG context,
+ cast into the type <type>EGLClientBuffer</type>.
+ </para>
+ <para>
+ The height, width,, OpenVG alpha format, and OpenVG
+ colorspace (surface attributes
+ <constant>EGL_HEIGHT</constant>,
+ <constant>EGL_WIDTH</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, respectively) of the
+ resulting surface are determined by the size and format of
+ <parameter>buffer</parameter>.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem>
+ <para>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <constant>EGL_TRUE</constant>
+ and <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem>
+ <para>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>. Possible
+ values are <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglCreatePbufferFromClientBuffer</function> is
+ supported only if the EGL version is 1.2 or greater, and if
+ the EGL implementation supports the OpenVG client API.
+ </para>
+ <para>
+ Currently
+ <function>eglCreatePbufferFromClientBuffer</function> only
+ supports binding OpenVG <type>VGImage</type> buffers to
+ pixel buffers. While other client API resources could be
+ supported in the future, mechanisms such as OpenGL ES
+ framebuffer objects, and the family of EGL and client API
+ extensions for defining and using <type>EGLImageKHR</type>
+ images, are a more flexible and general framework to satisfy
+ most of the same needs.
+ </para>
+ <para>
+ If the value of <parameter>config</parameter> attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </para>
+ <para>
+ If <constant>EGL_LARGEST_PBUFFER</constant> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_TEXTURE_2D</constant>, and the value of
+ <constant>EGL_TEXTURE FORMAT</constant> is
+ <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </para>
+ <para>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </para>
+ <para>
+ Binding client API buffers to EGL pbuffers create the
+ possibility of race conditions, and of buffers being deleted
+ through one API while still in use in another API. To avoid
+ these problems, a number of constraints apply to bound
+ client API buffers:
+ <orderedlist>
+ <listitem>
+ <para>
+ Bound buffers may be used exclusively by either EGL,
+ or the client API that originally created them. For
+ example, if a <type>VGImage</type> is bound to a
+ pbuffer, and that pbuffer is bound to any client API
+ rendering context, then the <type>VGImage</type> may
+ not be used as the explicit source or destination of
+ any OpenVG operation. Errors resulting from such use
+ are described in client API specifications.
+ Similarly, while a <type>VGImage</type> is in use by
+ OpenVG, the pbuffer it is bound to may not be made
+ current to any client API context using
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Binding a buffer creates an additional reference to
+ it, and implementations must respect outstanding
+ references when destroying objects. For example, if
+ a <type>VGImage</type> is bound to a pbuffer,
+ destroying the image with
+ <function>vgDestroyImage</function> will not free
+ the underlying buffer, because it is still in use by
+ EGL. However, following
+ <function>vgDestroyImage</function> the buffer may
+ only be referred to via the EGL pbuffer handle,
+ since the OpenVG handle to that buffer no longer
+ exists. Similarly, destroying the pbuffer with
+ <function>eglDestroySurface</function> will not free
+ the underlying buffer, because it is still in use by
+ OpenVG . However, following
+ <function>eglDestroySurface</function> the buffer
+ may only be referred to via the OpenVG
+ <type>VGImage</type> handle, since the EGL pbuffer
+ handle no longer exists.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>buftype</parameter> is not
+ <constant>EGL_OPENVG_IMAGE</constant>, or if
+ <parameter>buffer</parameter> is not a valid handle to a
+ <type>VGImage</type> object in the currently bound OpenVG
+ context.
+ </para>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if there is
+ no current OpenVG context, or if
+ <parameter>buffer</parameter> is already bound to another
+ pixel buffer or in use by OpenVG as discussed in the Notes
+ section above.
+ </para>
+ <para>
+ <constant>EGL_BAD_ACCESS</constant> is generated if the buffers
+ contained in <parameter>buffer</parameter> consist of any
+ <type>EGLImage</type> siblings.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains any of the
+ attributes <constant>EGL_MIPMAP_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_FORMAT</constant>, or
+ <constant>EGL_TEXTURE_TARGET</constant>, and
+ <parameter>config</parameter> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <constant>EGL_RENDERABLE_TYPE</constant> attribute of
+ <parameter>config</parameter> does not include at least one
+ of <constant>EGL_OPENGL_ES_BIT</constant> or
+ <constant>EGL_OPENGL_ES2_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to
+ pixel buffers (the <constant>EGL_SURFACE_TYPE</constant>
+ attribute does not contain
+ <constant>EGL_PBUFFER_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ buffers contained in <parameter>buffer</parameter> do not
+ match the bit depths for those buffers specified by
+ <parameter>config</parameter>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ <constant>EGL_TEXTURE_FORMAT</constant> attribute is not
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_WIDTH</constant> and/or
+ <constant>EGL_HEIGHT</constant> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the <constant>EGL_TEXTURE_FORMAT</constant> attribute is
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>; or,
+ <constant>EGL_TEXTURE_FORMAT</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ implementation has additional constraints on which types of
+ client API buffers may be bound to pixel buffer surfaces.
+ For example, it is possible that the OpenVG implementation
+ might not support a <type>VGImage</type> being bound to a
+ pixel buffer which will be used as a mipmapped OpenGL ES
+ texture (e.g. whose <constant>EGL_MIPMAP_TEXTURE</constant>
+ attribute is <constant>TRUE</constant>). Any such
+ constraints should be documented by the implementation
+ release notes.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferSurface.xml
new file mode 100644
index 0000000..5bb7c8e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePbufferSurface.xml
@@ -0,0 +1,359 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePbufferSurface">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePbufferSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePbufferSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> pixel buffer surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePbufferSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixel buffer surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePbufferSurface</function> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <function>eglCreatePbufferSurface</function> fails to create
+ a pixel buffer surface, <constant>EGL_NO_SURFACE</constant>
+ is returned.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_GL_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <constant>EGL_GL_COLORSPACE_SRGB</constant>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_SRGB</constant>. If its value is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>, then a
+ linear color space is assumed, with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_LINEAR</constant>. The default
+ value of <constant>EGL_GL_COLORSPACE</constant> is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>.
+ </para>
+ <para>
+ Note that the <constant>EGL_GL_COLORSPACE</constant>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HEIGHT</constant></term>
+ <listitem>
+ <para>
+ Specifies the required height of the pixel buffer
+ surface. The default value is
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LARGEST_PBUFFER</constant></term>
+ <listitem>
+ <para>
+ Requests the largest available pixel buffer surface
+ when the allocation would otherwise fail. Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel
+ buffer. The default value is
+ <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem>
+ <para>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <constant>EGL_TRUE</constant>
+ and <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>. The default
+ value is <constant>EGL_FALSE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem>
+ <para>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>. Possible
+ values are <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>. The default
+ value is <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WIDTH</constant></term>
+ <listitem>
+ <para>
+ Specifies the required width of the pixel buffer
+ surface. The default value is
+ <constant>0</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_GL_COLORSPACE</constant>, and the
+ <constant>EGL_OPENGL_ES3_BIT</constant> bit value for attribute
+ <constant>EGL_RENDERABLE_TYPE</constant>, are supported only if
+ the EGL version is 1.5 or greater.
+ </para>
+ <para>
+ Attributes
+ <constant>EGL_RENDERABLE_TYPE</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If the value of <parameter>config</parameter> attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is not
+ <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </para>
+ <para>
+ If <constant>EGL_LARGEST_PBUFFER</constant> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_TEXTURE_2D</constant>, and the value of
+ <constant>EGL_TEXTURE FORMAT</constant> is
+ <constant>EGL_TEXTURE_RGB</constant> or
+ <constant>EGL_TEXTURE_RGBA</constant>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </para>
+ <para>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the context fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains any of the
+ attributes <constant>EGL_MIPMAP_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_FORMAT</constant>, or
+ <constant>EGL_TEXTURE_TARGET</constant>, and
+ <parameter>config</parameter> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <constant>EGL_RENDERABLE_TYPE</constant> attribute of
+ <parameter>config</parameter> does not include at least one
+ of <constant>EGL_OPENGL_ES_BIT</constant>,
+ <constant>EGL_OPENGL_ES2_BIT</constant>, or
+ <constant>EGL_OPENGL_ES3_BIT</constant>),
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there are not
+ enough resources to allocate the new surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to pixel buffers
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PBUFFER_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ <constant>EGL_TEXTURE_FORMAT</constant> attribute is not
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_WIDTH</constant> and/or
+ <constant>EGL_HEIGHT</constant> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ the <constant>EGL_TEXTURE_FORMAT</constant> attribute is
+ <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>; or,
+ <constant>EGL_TEXTURE_FORMAT</constant> is something other
+ than <constant>EGL_NO_TEXTURE</constant>, and
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePixmapSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePixmapSurface.xml
new file mode 100644
index 0000000..72469f4
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePixmapSurface.xml
@@ -0,0 +1,87 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePixmapSurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePixmapSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePixmapSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> offscreen surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePixmapSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>NativePixmapType <parameter>native_pixmap</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem><para>Specifies the native pixmap.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixmap surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePixmapSurface</function> creates an off-screen
+ EGL pixmap surface and returns a handle to it. The behavior of
+ <function>eglCreatePixmapSurface</function> is identical to that
+ of
+ <citerefentry><refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle></citerefentry>
+ except that the set of platforms to which
+ <parameter>display</parameter> is permitted to belong, as well
+ as the actual type of <parameter>native_pixmap</parameter>, are
+ implementation specific.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ See errors for
+ <citerefentry><refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformPixmapSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformPixmapSurface.xml
new file mode 100644
index 0000000..66de1c7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformPixmapSurface.xml
@@ -0,0 +1,270 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePlatformPixmapSurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePlatformPixmapSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> offscreen surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePlatformPixmapSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>void * <parameter>native_pixmap</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_pixmap</parameter></term>
+ <listitem><para>Specifies the native pixmap.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies pixmap surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePlatformPixmapSurface</function> creates an
+ off-screen <acronym>EGL</acronym> pixmap surface and returns
+ a handle to it.
+ </para>
+ <para>
+ If <function>eglCreatePlatformPixmapSurface</function> fails to
+ create a pixmap surface, <constant>EGL_NO_SURFACE</constant> is
+ returned.
+ </para>
+ <para>
+ <parameter>native_pixmap</parameter> must belong to the same
+ platform as <parameter>display</parameter>, and EGL considers
+ the returned <type>EGLSurface</type> as belonging to that same
+ platform. The EGL extension that defines the platform to which
+ <parameter>display</parameter> belongs also defines the
+ requirements for the <parameter>native_pixmap</parameter>
+ parameter.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_GL_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <constant>EGL_GL_COLORSPACE_SRGB</constant>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_SRGB</constant>. If its value is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>, then a
+ linear color space is assumed, with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_LINEAR</constant>. The default
+ value of <constant>EGL_GL_COLORSPACE</constant> is
+ <constant>EGL_GL_COLORSPACE_SRGB</constant>.
+ </para>
+ <para>
+ Note that the <constant>EGL_GL_COLORSPACE</constant>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ The <constant>EGL_MATCH_NATIVE_PIXMAP</constant> attribute
+ of
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ can be used to select a frame buffer configuration matching
+ a specified native pixmap.
+ </para>
+ <para>
+ Attribute <constant>EGL_GL_COLORSPACE</constant> is supported
+ only if the EGL version is 1.5 or greater.
+ </para>
+ <para>
+ Attributes
+ <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
+ <para>
+ The <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant> attributes are used only
+ by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
+ 1.0 specification for more information. The platform's use and
+ interpretation of alpha values is outside the scope of EGL.
+ However, the preferred behavior is for the window system to
+ ignore the value of <constant>EGL_VG_ALPHA_FORMAT</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ If <parameter>display</parameter> and
+ <parameter>native_pixmap</parameter> do not belong to the same
+ platform, then undefined behavior occurs.
+ </para>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the surface fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL config.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
+ <parameter>native_pixmap</parameter> is not a valid native pixmap.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid pixmap attribute
+ or if an attribute value is not recognized or out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there is
+ already an <type>EGLSurface</type> associated with
+ <parameter>native_pixmap</parameter> (as a result of a previous
+ <function>eglCreatePlatformPixmapSurface</function> call).
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if the
+ implementation cannot allocate resources for the new EGL window.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the attributes of
+ <parameter>native_pixmap</parameter> do not correspond to
+ <parameter>config</parameter> or if
+ <parameter>config</parameter> does not support rendering to pixmaps
+ (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
+ <constant>EGL_PIXMAP_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformWindowSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformWindowSurface.xml
new file mode 100644
index 0000000..ee88467
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreatePlatformWindowSurface.xml
@@ -0,0 +1,296 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePlatformWindowSurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreatePlatformWindowSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreatePlatformWindowSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> on-screen rendering surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreatePlatformWindowSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>void * <parameter>native_window</parameter></paramdef>
+ <paramdef>EGLAttrib const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem>
+ <para>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_window</parameter></term>
+ <listitem><para>Specifies the native window.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies a list of attributes for the window surface.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreatePlatformWindowSurface</function> creates an
+ on-screen EGL window surface and returns a handle to it. Any EGL
+ context created with a compatible <type>EGLConfig</type> can be
+ used to render into this surface.
+ </para>
+ <para>
+ If <function>eglCreatePlatformWindowSurface</function> fails to
+ create a window surface, <constant>EGL_NO_SURFACE</constant> is
+ returned.
+ </para>
+ <para>
+ <parameter>native_window</parameter> must belong to the same
+ platform as <parameter>display</parameter>, and EGL considers
+ the returned <type>EGLSurface</type> as belonging to that same
+ platform. The EGL extension that defines the platform to which
+ <parameter>display</parameter> belongs also defines the
+ requirements for the <parameter>native_window</parameter>
+ parameter.
+ </para>
+ <para>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <constant>EGL_NONE</constant>. Accepted attributes
+ are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_GL_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <constant>EGL_GL_COLORSPACE_SRGB</constant>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_SRGB</constant>. If its value is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>, then a
+ linear color space is assumed, with a corresponding
+ <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
+ value of <constant>GL_LINEAR</constant>. The default
+ value of <constant>EGL_GL_COLORSPACE</constant> is
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>.
+ </para>
+ <para>
+ Note that the <constant>EGL_GL_COLORSPACE</constant>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem>
+ <para>
+ Specifies which buffer should be used for client API
+ rendering to the window. If its value is
+ <constant>EGL_SINGLE_BUFFER</constant>, then client
+ APIs should render directly into the visible window.
+ If its value is
+ <constant>EGL_BACK_BUFFER</constant>, then client
+ APIs should render into the back buffer. The default
+ value of <constant>EGL_RENDER_BUFFER</constant> is
+ <constant>EGL_BACK_BUFFER</constant>.
+ </para>
+ <para>
+ Client APIs may not be able to respect the requested
+ rendering buffer. To determine the actual buffer
+ being rendered to by a context, call
+ <citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem>
+ <para>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
+ then alpha values are not premultipled. If its value
+ is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
+ then alpha values are premultiplied. The default
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem>
+ <para>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <type>VGImageFormat</type> of form
+ <constant>VG_s*</constant>. If its value is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
+ a linear color space is assumed, with a
+ corresponding <type>VGImageFormat</type> of form
+ <constant>VG_l*</constant>. The default value of
+ <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_sRGB</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Any EGL rendering context that was created with respect to
+ <parameter>config</parameter> can be used to render into the
+ surface. Use
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ to attach an EGL rendering context to the surface.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ to retrieve the ID of <parameter>config</parameter>.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to destroy the surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_GL_COLORSPACE</constant> is supported
+ only if the EGL version is 1.5 or greater.
+ </para>
+ <para>
+ Attributes <constant>EGL_RENDER_BUFFER</constant>,
+ <constant>EGL_VG_ALPHA_FORMAT</constant>, and
+ <constant>EGL_VG_COLORSPACE</constant>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
+ <para>
+ The <constant>EGL_VG_ALPHA_FORMAT</constant> and
+ <constant>EGL_VG_COLORSPACE</constant> attributes are used only
+ by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
+ 1.0 specification for more information. The platform's use and
+ interpretation of alpha values is outside the scope of EGL.
+ However, the preferred behavior is for platforms to ignore the
+ value of <constant>EGL_VG_ALPHA_FORMAT</constant> when
+ compositing window surfaces.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ If <parameter>display</parameter> and
+ <parameter>native_window</parameter> do not belong to the same
+ platform, then undefined behavior occurs.
+ </para>
+ <para>
+ <constant>EGL_NO_SURFACE</constant> is returned if creation of
+ the surface fails.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not a valid EGL frame buffer
+ configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_NATIVE_WINDOW</constant> may be generated if
+ <parameter>native_window</parameter> is not a valid native
+ window for the same platform as <parameter>display</parameter>.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attrib_list</parameter> contains an invalid window attribute
+ or if an attribute value is not recognized or is out of range.
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if there is
+ already an <type>EGLSurface</type> associated with
+ <parameter>native_window</parameter> (as a result of a previous
+ <function>eglCreatePlatformWindowSurface</function> call).
+ </para>
+ <para>
+ <constant>EGL_BAD_ALLOC</constant> is generated if the
+ implementation cannot allocate resources for the new EGL window.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the pixel
+ format of <parameter>native_window</parameter> does not
+ correspond to the format, type, and size of the color buffers
+ required by <parameter>config</parameter>.
+ <constant>EGL_BAD_MATCH</constant> is generated if the pixel
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support rendering to
+ windows (the <constant>EGL_SURFACE_TYPE</constant> attribute
+ does not contain <constant>EGL_WINDOW_BIT</constant>).
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>config</parameter> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <constant>EGL_VG_ALPHA_FORMAT</constant> is
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
+ <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>) or colorspace attribute (the
+ value of <constant>EGL_VG_COLORSPACE</constant> is
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
+ <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
+ in the <constant>EGL_SURFACE_TYPE</constant> attribute of
+ <parameter>config</parameter>).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreateSync.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateSync.xml
new file mode 100644
index 0000000..551d2a4
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateSync.xml
@@ -0,0 +1,311 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreateSync">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreateSync</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateSync</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> sync object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSync <function>eglCreateSync</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLEnum <parameter>type</parameter></paramdef>
+ <paramdef>EGLAttrib const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>type</parameter></term>
+ <listitem><para>
+ Specifies the type of sync object to create.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies attributes and attribute values for the sync
+ object being created.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <firstterm>sync objects</firstterm> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon
+ by application threads.
+ </para>
+ <para>
+ Sync objects have a status with two possible states:
+ <firstterm>signaled</firstterm> and
+ <firstterm>unsignaled</firstterm>. Initially, sync objects are
+ unsignaled. EGL may be asked to wait for a sync object to become
+ signaled, or a sync object's status may be queried.
+ </para>
+ <para>
+ Depending on the type of a sync object, its status may be
+ changed either by an external event, or by explicitly signaling
+ and unsignaling the sync.
+ </para>
+ <para>
+ <function>eglCreateSync</function> creates a sync object of the specified
+ <parameter>type</parameter> associated with the specified display
+ <parameter>display</parameter>, and returns a handle to the new object.
+ <parameter>attrib_list</parameter> is an attribute-value list specifying
+ other attributes of the sync object, terminated by an attribute entry
+ <constant>EGL_NONE</constant>. Attributes not specified in the list will be
+ assigned their default values.
+ </para>
+ <para>
+ Once the <firstterm>condition</firstterm> of the sync object is satisfied,
+ the sync is signaled, causing any <function>eglClientWaitSync</function> or
+ <function>eglWaitSync</function> commands blocking on
+ <parameter>sync</parameter> to unblock.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="fencesync"><title>Creating Fence Sync Objects</title>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_FENCE</constant>, a fence sync object is
+ created. In this case <parameter>attrib_list</parameter> must be
+ <constant>NULL</constant> or empty (containing only
+ <constant>EGL_NONE</constant>). Attributes of the fence sync
+ object, and their initial values, are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_SYNC_TYPE</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_SYNC_FENCE</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SYNC_STATUS</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_UNSIGNALED</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SYNC_CONDITION</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_SYNC_PRIOR_COMMANDS_COMPLETE</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ When a fence sync object is created, <function>eglCreateSync</function> also inserts a
+ fence command into the command stream of the bound client API's current
+ context (i.e., the context returned by <function>eglGetCurrentContext</function>), and
+ associates it with the newly created sync object.
+ </para>
+ <para>
+ The only condition supported for fence sync objects is
+ <constant>EGL_SYNC_PRIOR_COMMANDS_COMPLETE</constant>, which is satisfied by completion of
+ the fence command corresponding to the sync object, and all preceding
+ commands in the associated client API context's command stream. The sync
+ object will not be signaled until all effects from these commands on the
+ client API's internal and framebuffer state are fully realized. No other
+ state is affected by execution of the fence command.
+ </para>
+ <para>
+ Creation of fence sync objects requires support from the bound
+ client API, and will not succeed unless the client API satisfies
+ one of the following properties. Note that
+ <function>eglWaitSync</function> also requires satisfying these
+ conditions.
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ client API is OpenGL, and either the OpenGL version is
+ 3.2 or greater, or the <constant>GL_ARB_sync</constant>
+ extension is supported.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ client API is OpenGL ES, and either the OpenGL ES
+ version is 3.0 or greater, or the
+ <constant>GL_OES_EGL_sync</constant> extension is
+ supported.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ client API is OpenVG, and the
+ <constant>VG_KHR_EGL_sync</constant> extension is
+ supported.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </refsect1>
+ <refsect1 xml:id="openclsync"><title>Creating OpenCL Event Sync Objects</title>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_CL_EVENT</constant>, an OpenCL event sync
+ object is created. In this case
+ <parameter>attrib_list</parameter> must contain the attribute
+ <constant>EGL_CL_EVENT_HANDLE</constant>, set to a valid OpenCL
+ event handle returned by a call to
+ <function>clEnqueueReleaseGLObjects</function> or
+ <function>clEnqueueReleaseEGLObjects</function>; other types of
+ OpenCL event handles are not supported. Note that
+ <constant>EGL_CL_EVENT_HANDLE</constant> is not a queriable
+ property of a sync object. Attributes of the OpenCL event sync
+ object, and their initial values, are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_SYNC_TYPE</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_SYNC_CL_EVENT</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SYNC_STATUS</constant></term>
+ <listitem>
+ <para>
+ Depends on status of <parameter>event</parameter>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SYNC_CONDITION</constant></term>
+ <listitem>
+ <para>
+ <constant>EGL_SYNC_CL_EVENT_COMPLETE</constant>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ The status of such a sync object depends on
+ <parameter>event</parameter>. When the status of
+ <parameter>event</parameter> is <constant>CL_QUEUED</constant>,
+ <constant>CL_SUBMITTED</constant>, or
+ <constant>CL_RUNNING</constant>, the status of the linked sync
+ object will be <constant>EGL_UNSIGNALED</constant>. When the
+ status of <parameter>event</parameter> changes to
+ <constant>CL_COMPLETE</constant>, the status of the linked sync
+ object will become <constant>EGL_SIGNALED</constant>.
+ </para>
+ <para>
+ The only condition supported for OpenCL event sync objects is
+ <constant>EGL_SYNC_CL_EVENT_COMPLETE</constant>, which is
+ satisfied when the status of the OpenCL event associated with
+ the sync object changes to <constant>CL_COMPLETE</constant>.
+ </para>
+ <para>
+ Creating a linked sync object places a reference on the linked
+ OpenCL event object. When the sync object is deleted, the
+ reference will be removed from the event object.
+ </para>
+ <para>
+ However, implementations are not required to validate the OpenCL
+ event, and passing an invalid event handle in
+ <parameter>attrib_list</parameter> may result in undefined
+ behavior up to and including program termination.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglCreateSync</function> is supported only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglCreateSync</function> returns
+ <constant>EGL_NO_SYNC</constant> on failure.
+ </para>
+ <para>
+ If <parameter>display</parameter> is not the name of a valid,
+ initialized <type>EGLDisplay</type>, an
+ <constant>EGL_BAD_DISPLAY</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>attrib_list</parameter> contains an attribute name
+ not defined for the type of sync object being created, an
+ <constant>EGL_BAD_ATTRIBUTE</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is not a supported type of sync
+ object, an <constant>EGL_BAD_PARAMETER</constant> error is
+ generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_FENCE</constant> and no context is current
+ for the bound API (i.e.,
+ <function>eglGetCurrentContext</function> returns
+ <constant>EGL_NO_CONTEXT</constant>), an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_FENCE</constant> and
+ <parameter>display</parameter> does not match the
+ <type>EGLDisplay</type> of the currently bound context for the
+ currently bound client API (the <type>EGLDisplay</type> returned
+ by <function>eglGetCurrentDisplay</function>), an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_FENCE</constant> and the current context for
+ the currently bound client API does not support fence commands,
+ an <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>type</parameter> is
+ <constant>EGL_SYNC_CL_EVENT</constant> and
+ <constant>EGL_CL_EVENT_HANDLE</constant> is not specified in
+ <parameter>attrib_list</parameter>, or its attribute value is
+ not a valid OpenCL event handle as described above, then an
+ <constant>EGL_BAD_ATTRIBUTE</constant> error is generated.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <function>clEnqueueReleaseGLObjects</function>,
+ <function>clEnqueueReleaseEGLObjects</function>,
+ <citerefentry><refentrytitle>eglClientWaitSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitSync</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglCreateWindowSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateWindowSurface.xml
new file mode 100644
index 0000000..b098a4b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglCreateWindowSurface.xml
@@ -0,0 +1,87 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreateWindowSurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglCreateWindowSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglCreateWindowSurface</refname>
+ <refpurpose>
+ create a new <acronym>EGL</acronym> window surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglCreateWindowSurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>NativeWindowType <parameter>native_window</parameter></paramdef>
+ <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem>
+ <para>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_window</parameter></term>
+ <listitem><para>Specifies the native window.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem><para>
+ Specifies window surface attributes.
+ May be <constant>NULL</constant> or empty
+ (first attribute is <constant>EGL_NONE</constant>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglCreateWindowSurface</function> creates an on-screen
+ EGL window surface and returns a handle to it. The behavior of
+ <function>eglCreateWindowSurface</function> is identical to that
+ of
+ <citerefentry><refentrytitle>eglCreatePlatformWindowSurface</refentrytitle></citerefentry>
+ except that the set of platforms to which
+ <parameter>display</parameter> is permitted to belong, as well
+ as the actual type of <parameter>native_window</parameter>, are
+ implementation specific.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ See errors for
+ <citerefentry><refentrytitle>eglCreatePlatformWindowSurface</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePlatformWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyContext.xml
new file mode 100644
index 0000000..01467ee
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyContext.xml
@@ -0,0 +1,75 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglDestroyContext">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglDestroyContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroyContext</refname>
+ <refpurpose>
+ destroy an <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroyContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem><para>Specifies the EGL rendering context to be destroyed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ If the EGL rendering context <parameter>context</parameter> is not
+ current to any thread,
+ <function>eglDestroyContext</function> destroys it immediately.
+ Otherwise, <parameter>context</parameter> is destroyed when it becomes
+ not current to any thread.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if destruction of
+ the context fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyImage.xml
new file mode 100644
index 0000000..96bb8bd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroyImage.xml
@@ -0,0 +1,85 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglDestroyImage">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglDestroyImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroyImage</refname>
+ <refpurpose>
+ Destroy an <type>EGLImage</type> object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroyImage</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLImage <parameter>image</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>image</parameter></term>
+ <listitem><para>
+ Specifies the image to destroy.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglDestroyImage</function> is used to destroy the
+ specified <type>EGLImage</type> object
+ <parameter>image</parameter>. Once destroyed,
+ <parameter>image</parameter> may not be used to create any
+ additional <type>EGLImage</type> target resources within any
+ client API contexts, although existing <type>EGLImage</type>
+ siblings may continue to be used. <constant>EGL_TRUE</constant>
+ is returned on success.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ On failure, <function>eglDestroyImage</function> returns
+ <constant>EGL_FALSE</constant>
+ </para>
+ <para>
+ If <parameter>display</parameter> is not the handle of a valid
+ <type>EGLDisplay</type> object, the error
+ <constant>EGL_BAD_DISPLAY</constant> is generated.
+ </para>
+ <para>
+ If <parameter>image</parameter> is not a valid
+ <type>EGLImage</type> object created with respect to
+ <parameter>display</parameter>, the error
+ <constant>EGL_BAD_PARAMETER</constant> is generated.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglDestroyImage</function> is available only if the
+ EGL version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySurface.xml
new file mode 100644
index 0000000..31024c7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySurface.xml
@@ -0,0 +1,77 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglDestroySurface">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglDestroySurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroySurface</refname>
+ <refpurpose>
+ destroy an <acronym>EGL</acronym> surface
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroySurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem><para>Specifies the EGL surface to be destroyed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ If the EGL surface <parameter>surface</parameter> is not current to any
+ thread, <function>eglDestroySurface</function> destroys it immediately.
+ Otherwise, <parameter>surface</parameter> is destroyed when it becomes
+ not current to any thread.
+ Furthermore, resources associated with a pbuffer surface are not released until
+ all color buffers of that pbuffer bound to a texture object have been released.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if destruction of
+ the surface fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySync.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySync.xml
new file mode 100644
index 0000000..d871c2c
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglDestroySync.xml
@@ -0,0 +1,98 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglDestroySync">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglDestroySync</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglDestroySync</refname>
+ <refpurpose>
+ Destroy a sync object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglDestroySync</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSync <parameter>sync</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>sync</parameter></term>
+ <listitem><para>
+ Specifies the sync object to destroy.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglDestroySync</function> is used to destroy an
+ existing sync object.
+ </para>
+ <para>
+ If any <function>eglClientWaitSync</function> or
+ <function>eglWaitSync</function> commands are blocking on
+ <parameter>sync</parameter> when
+ <function>eglDestroySync</function> is called,
+ <parameter>sync</parameter> is flagged for deletion and will be
+ deleted when the associated fence command or OpenCL event object
+ has completed, and <parameter>sync</parameter> is no longer
+ blocking any such <function>egl*WaitSync</function> command.
+ Otherwise, the sync object is destroyed immediately.
+ </para>
+ <para>
+ If no errors are generated, <constant>EGL_TRUE</constant> is
+ returned, and <parameter>sync</parameter> will no longer be the
+ handle of a valid sync object.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ On failure, <function>eglDestroySync</function> returns
+ <constant>EGL_FALSE</constant>.
+ </para>
+ <para>
+ If <parameter>sync</parameter> is not a valid sync object for
+ <parameter>display</parameter>, <constant>EGL_FALSE</constant>
+ is returned and an <constant>EGL_BAD_PARAMETER</constant> error
+ is generated.
+ </para>
+ <para>
+ If <parameter>display</parameter> does not match the display
+ passed to <function>eglCreateSync</function> when
+ <parameter>sync</parameter> was created, the behaviour is
+ undefined.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglDestroySync</function> is available only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglClientWaitSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitSync</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigAttrib.xml
new file mode 100644
index 0000000..70313fe
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigAttrib.xml
@@ -0,0 +1,317 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetConfigAttrib">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetConfigAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetConfigAttrib</refname>
+ <refpurpose>
+ return information about an <acronym>EGL</acronym> frame buffer
+ configuration
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetConfigAttrib</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig <parameter>config</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config</parameter></term>
+ <listitem><para>Specifies the EGL frame buffer configuration to be
+ queried.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem><para>Specifies the EGL rendering context attribute to be
+ returned.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem><para>Returns the requested value.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetConfigAttrib</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for
+ <parameter>config</parameter>
+ (config attributes are described in more detail in the
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ reference page).
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of alpha stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
+ <listitem><para>
+ Returns the number of bits in the alpha mask buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if color buffers can be
+ bound to an RGB texture,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if color buffers can be
+ bound to an RGBA texture,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BLUE_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of blue stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BUFFER_SIZE</constant></term>
+ <listitem><para>Returns the depth of the color buffer.
+ It is the sum of
+ <constant>EGL_RED_SIZE</constant>,
+ <constant>EGL_GREEN_SIZE</constant>,
+ <constant>EGL_BLUE_SIZE</constant>, and
+ <constant>EGL_ALPHA_SIZE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
+ <listitem><para>
+ Returns the color buffer type. Possible types are
+ <constant>EGL_RGB_BUFFER</constant> and
+ <constant>EGL_LUMINANCE_BUFFER</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_CAVEAT</constant></term>
+ <listitem><para>Returns the caveats for the frame buffer configuration.
+ Possible caveat values are
+ <constant>EGL_NONE</constant>,
+ <constant>EGL_SLOW_CONFIG</constant>, and
+ <constant>EGL_NON_CONFORMANT</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>Returns the ID of the frame buffer configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONFORMANT</constant></term>
+ <listitem><para>
+ Returns a bitmask indicating which client API contexts
+ created with respect to this config are conformant.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_DEPTH_SIZE</constant></term>
+ <listitem><para>Returns the number of bits in the depth buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GREEN_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of green stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LEVEL</constant></term>
+ <listitem><para>Returns the frame buffer level.
+ Level zero is the default frame buffer.
+ Positive levels correspond to frame buffers that overlay the default
+ buffer and negative levels correspond to frame buffers that underlay
+ the default buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LUMINANCE_SIZE</constant></term>
+ <listitem>
+ <para>
+ Returns the number of bits of luminance stored in the luminance buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_WIDTH</constant></term>
+ <listitem><para>Returns the maximum width of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_HEIGHT</constant></term>
+ <listitem><para>Returns the maximum height of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_PBUFFER_PIXELS</constant></term>
+ <listitem><para>Returns the maximum size of a pixel buffer surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
+ <listitem><para>Returns the maximum value that can be passed to eglSwapInterval.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
+ <listitem><para>Returns the minimum value that can be passed to eglSwapInterval.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
+ <listitem><para>Returns <constant>EGL_TRUE</constant> if native rendering
+ APIs can render into the surface,
+ <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_VISUAL_ID</constant></term>
+ <listitem><para>Returns the ID of the associated native visual.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NATIVE_VISUAL_TYPE</constant></term>
+ <listitem><para>Returns the type of the associated native visual.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RED_SIZE</constant></term>
+ <listitem><para>Returns the number of bits of red stored in the
+ color buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDERABLE_TYPE</constant></term>
+ <listitem>
+ <para>
+ Returns a bitmask indicating the types of supported
+ client API contexts.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
+ <listitem><para>Returns the number of multisample buffers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SAMPLES</constant></term>
+ <listitem><para>Returns the number of samples per pixel.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_STENCIL_SIZE</constant></term>
+ <listitem><para>Returns the number of bits in the stencil buffer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SURFACE_TYPE</constant></term>
+ <listitem><para>
+ Returns a bitmask indicating the types of supported EGL
+ surfaces.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
+ <listitem><para>Returns the type of supported transparency.
+ Possible transparency values are:
+ <constant>EGL_NONE</constant>, and
+ <constant>EGL_TRANSPARENT_RGB</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
+ <listitem><para>Returns the transparent red value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
+ <listitem><para>Returns the transparent green value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
+ <listitem><para>Returns the transparent blue value.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_CONFORMANT</constant> is supported only if the
+ EGL version is 1.3 or greater.
+ </para>
+ <para>
+ <constant>EGL_ALPHA_MASK_SIZE</constant>,
+ <constant>EGL_COLOR_BUFFER_TYPE</constant>,
+ <constant>EGL_LUMINANCE_SIZE</constant>, and
+ <constant>EGL_RENDERABLE_TYPE</constant> are supported only
+ if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ While <constant>EGL_MATCH_NATIVE_PIXMAP</constant> can be
+ specified in the attribute list passed to
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ it is not an attribute of the resulting config and cannot be
+ queried using <function>eglGetConfigAttrib</function>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONFIG</constant> is generated if
+ <parameter>config</parameter> is not an EGL frame buffer configuration.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid frame buffer
+ configuration attribute.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigs.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigs.xml
new file mode 100644
index 0000000..a58e722
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetConfigs.xml
@@ -0,0 +1,105 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetConfigs">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetConfigs</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetConfigs</refname>
+ <refpurpose>
+ return a list of all <acronym>EGL</acronym> frame buffer configurations
+ for a display
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetConfigs</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
+ <paramdef>EGLint <parameter>config_size</parameter></paramdef>
+ <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>configs</parameter></term>
+ <listitem><para>Returns a list of configs.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>config_size</parameter></term>
+ <listitem><para>Specifies the size of the list of configs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>num_config</parameter></term>
+ <listitem><para>Returns the number of configs returned.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetConfigs</function> returns a list of all
+ EGL frame buffer configurations that are available for the specified
+ display.
+ The items in the list can be used in any EGL function that requires
+ an EGL frame buffer configuration.
+ </para>
+ <para>
+ <parameter>configs</parameter> does not return values, if it is specified
+ as
+ <constant>NULL</constant>. This is useful for querying just the
+ number of all frame buffer configurations.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ to retrieve individual attribute values of a frame buffer configuration.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>configs</parameter> and <parameter>num_config</parameter>
+ are not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>num_config</parameter> is <constant>NULL</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentContext.xml
new file mode 100644
index 0000000..b646cf2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentContext.xml
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetCurrentContext">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetCurrentContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentContext</refname>
+ <refpurpose>
+ return the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLContext <function>eglGetCurrentContext</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentContext</function> returns the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_CONTEXT</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentDisplay.xml
new file mode 100644
index 0000000..a860304
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentDisplay.xml
@@ -0,0 +1,57 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetCurrentDisplay">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetCurrentDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentDisplay</refname>
+ <refpurpose>
+ return the display for the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetCurrentDisplay</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentDisplay</function> returns the current
+ <acronym>EGL</acronym> display connection for the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_DISPLAY</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ Passing <constant>EGL_NO_DISPLAY</constant> to any command
+ taking an <type>EGLDisplay</type> parameter will generate either
+ an <constant>EGL_BAD_DISPLAY</constant> error if the EGL
+ implementation validates <type>EGLDisplay</type> handles, or
+ undefined behavior as described at the end of section 3.1 of the
+ EGL 1.5 Specification. The only exception to this rule is that
+ <function>eglQueryString</function> will accept an
+ <type>EGLDisplay</type> parameter of
+ <constant>EGL_NO_DISPLAY</constant> when querying the client
+ extension string (see section 3.3 of the EGL 1.5 Specification).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentSurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentSurface.xml
new file mode 100644
index 0000000..1299718
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetCurrentSurface.xml
@@ -0,0 +1,58 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetCurrentSurface">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetCurrentSurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetCurrentSurface</refname>
+ <refpurpose>
+ return the read or draw surface for the current <acronym>EGL</acronym> rendering context
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLSurface <function>eglGetCurrentSurface</function></funcdef>
+ <paramdef>EGLint <parameter>readdraw</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>readdraw</parameter></term>
+ <listitem>
+ <para>
+ Specifies whether to return the read surface
+ (<constant>EGL_READ</constant>) or the draw surface
+ (<constant>EGL_DRAW</constant>).
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetCurrentSurface</function> returns the read or draw
+ surface attached to the current
+ <acronym>EGL</acronym> rendering context, as specified by
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ If no context is current, <constant>EGL_NO_SURFACE</constant> is returned.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetDisplay.xml
new file mode 100644
index 0000000..a694edf
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetDisplay.xml
@@ -0,0 +1,87 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetDisplay">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetDisplay</refname>
+ <refpurpose>
+ return an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetDisplay</function></funcdef>
+ <paramdef>NativeDisplayType <parameter>native_display</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>native_display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the display to connect to.
+ <constant>EGL_DEFAULT_DISPLAY</constant> indicates the default display.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetDisplay</function> obtains the
+ <acronym>EGL</acronym> display connection for the native
+ display <parameter>native_display</parameter>.
+ </para>
+ <para>
+ The behavior of <function>eglGetDisplay</function> is similar to
+ that of
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>,
+ but is specified in terms of implementation-specific behavior
+ rather than platform-specific extensions. As for
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>,
+ EGL considers the returned <type>EGLDisplay</type> as belonging
+ to the same platform as <parameter>display_id</parameter>.
+ However, the set of platforms to which
+ <parameter>display_id</parameter> is permitted to belong, as
+ well as the actual type of <parameter>display_id</parameter>,
+ are implementation-specific. If
+ <parameter>display_id</parameter> is
+ <constant>EGL_DEFAULT_DISPLAY</constant>, a <firstterm>default
+ display</firstterm> is returned. Multiple calls made to
+ <function>eglGetDisplay</function> with the same
+ <parameter>display_id</parameter> will return the same
+ <type>EGLDisplay</type> handle.
+ </para>
+ <para>
+ If <parameter>display_id</parameter> is
+ <constant>EGL_DEFAULT_DISPLAY</constant>, a default display connection is returned.
+ </para>
+ <para>
+ If no display connection matching <parameter>native_display</parameter> is
+ available, <constant>EGL_NO_DISPLAY</constant> is returned. No
+ error is generated.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ to initialize the display connection.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetError.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetError.xml
new file mode 100644
index 0000000..3e1fd71
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetError.xml
@@ -0,0 +1,143 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetError">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetError</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetError</refname>
+ <refpurpose>
+ return error information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLint <function>eglGetError</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetError</function> returns the error of the last
+ called <acronym>EGL</acronym> function in the current thread.
+ Initially, the error is set to <constant>EGL_SUCCESS</constant>.
+ </para>
+ <para>
+ When an EGL function could potentially generate several
+ different errors (for example, when passed both a bad attribute
+ name, and a bad attribute value for a legal attribute name), the
+ implementation may choose to generate any one of the applicable
+ errors.
+ </para>
+ <para>
+ The following errors are currently defined:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_SUCCESS</constant></term>
+ <listitem><para>The last function succeeded without error.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_NOT_INITIALIZED</constant></term>
+ <listitem><para>EGL is not initialized, or could not be initialized,
+ for the specified EGL display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ACCESS</constant></term>
+ <listitem><para>EGL cannot access a requested resource
+ (for example a context is bound in another thread).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ALLOC</constant></term>
+ <listitem><para>EGL failed to allocate resources for the requested
+ operation.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_ATTRIBUTE</constant></term>
+ <listitem><para>An unrecognized attribute or attribute value was
+ passed in the attribute list.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CONTEXT</constant></term>
+ <listitem><para>An <type>EGLContext</type> argument does not name a
+ valid EGL rendering context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CONFIG</constant></term>
+ <listitem><para>
+ An <type>EGLConfig</type> argument does not name a valid
+ EGL frame buffer configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_CURRENT_SURFACE</constant></term>
+ <listitem><para>The current surface of the calling thread is a window,
+ pixel buffer or pixmap that is no longer valid.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_DISPLAY</constant></term>
+ <listitem><para>An <type>EGLDisplay</type> argument does not name a
+ valid EGL display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_SURFACE</constant></term>
+ <listitem><para>An <type>EGLSurface</type> argument does not name a
+ valid surface (window, pixel buffer or pixmap) configured for
+ GL rendering.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_MATCH</constant></term>
+ <listitem><para>Arguments are inconsistent (for example, a valid
+ context requires buffers not supplied by a valid surface).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_PARAMETER</constant></term>
+ <listitem><para>One or more argument values are invalid.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_NATIVE_PIXMAP</constant></term>
+ <listitem><para>
+ A <type>NativePixmapType</type> argument does not refer to
+ a valid native pixmap.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_BAD_NATIVE_WINDOW</constant></term>
+ <listitem><para>A <type>NativeWindowType</type> argument does not refer
+ to a valid native window.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_LOST</constant></term>
+ <listitem><para>
+ A power management event has occurred. The application must destroy all
+ contexts and reinitialise OpenGL ES state and objects to continue rendering.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ A call to <function>eglGetError</function> sets the error to
+ <constant>EGL_SUCCESS</constant>.
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetPlatformDisplay.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetPlatformDisplay.xml
new file mode 100644
index 0000000..f2f9108
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetPlatformDisplay.xml
@@ -0,0 +1,122 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetPlatformDisplay">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetPlatformDisplay</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetPlatformDisplay</refname>
+ <refpurpose>
+ return an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLDisplay <function>eglGetPlatformDisplay</function></funcdef>
+ <paramdef>EGLenum <parameter>platform</parameter></paramdef>
+ <paramdef>void * <parameter>native_display</parameter></paramdef>
+ <paramdef>const EGLAttrib * <parameter>attrib_list</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>platform</parameter></term>
+ <listitem>
+ <para>
+ Specifies the native platform to obtain a display for.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>native_display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the native display to connect to.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attrib_list</parameter></term>
+ <listitem>
+ <para>
+ Specifies attributes of the display being obtained.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetPlatformDisplay</function> obtains an
+ <acronym>EGL</acronym> display connection for the specified
+ <parameter>platform</parameter> and
+ <parameter>native_display</parameter>.
+ </para>
+ <para>
+ Valid values for <parameter>platform</parameter> are defined by
+ EGL extensions, as are requirements for
+ <parameter>native_display</parameter>.
+ For example, an extension specification that defines support for
+ the X11 platform may require that
+ <parameter>native_display</parameter> be a pointer to an X11
+ Display, and an extension specification that defines support for
+ the Microsoft Windows platform may require that
+ <parameter>native_display</parameter> be a pointer to a Windows
+ Device Context.
+ </para>
+ <para>
+ Valid attributes are defined by EGL extensions.
+ All attributes in <parameter>attrib_list</parameter>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value.
+ The list is terminated with <constant>EGL_NONE</constant>.
+ If an attribute is not specified in
+ <parameter>attrib_list</parameter> but is required for the
+ specified <parameter>platform</parameter>, then a default value
+ is used (and the attribute is said to be specified implicitly).
+ </para>
+ <para>
+ Multiple calls made to
+ <function>eglGetPlatformDisplay</function> with the same
+ parameters will return the same <type>EGLDisplay</type> handle.
+ </para>
+ <para>
+ If <parameter>platform</parameter> is valid but no display
+ matching <parameter>native_display</parameter> is available,
+ then <constant>EGL_NO_DISPLAY</constant> is returned; no error
+ condition is raised in this case.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglGetPlatformDisplay</function> is supported only if
+ the EGL version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglGetPlatformDisplay</function> returns
+ <constant>EGL_NO_DISPLAY</constant> on failure.
+ </para>
+ <para>
+ An <constant>EGL_BAD_PARAMETER</constant> error is generated if
+ <parameter>platform</parameter> has an invalid value.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetProcAddress.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetProcAddress.xml
new file mode 100644
index 0000000..a3d20b0
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetProcAddress.xml
@@ -0,0 +1,98 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetProcAddress">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetProcAddress</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetProcAddress</refname>
+ <refpurpose>
+ return a <acronym>GL</acronym> or an <acronym>EGL</acronym>
+ extension function
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>void (* <function>eglGetProcAddress</function></funcdef>
+ <paramdef>char const * <parameter>procname</parameter>))(void</paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>procname</parameter></term>
+ <listitem>
+ <para>
+ Specifies the name of the function to return.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetProcAddress</function> returns the address of
+ the client API or EGL function named by
+ <parameter>procname</parameter>. <parameter>procname</parameter>
+ must be a null-terminated string. The pointer returned should be
+ cast to a function pointer matching the function's definition in
+ the corresponding API or extension specification. A return value
+ of <constant>NULL</constant> indicates that the specific
+ function does not exist for the implementation.
+ </para>
+ <para>
+ A non-<constant>NULL</constant> return value does not guarantee
+ that an extension function is actually supported at runtime. The
+ client must also make a corresponding query, such as
+ <function>glGetString</function>(<constant>GL_EXTENSIONS</constant>)
+ for OpenGL and OpenGL ES extensions;
+ <function>vgGetString</function>(<constant>VG_EXTENSIONS</constant>)
+ for OpenVG extensions;
+ <function>eglQueryString</function>(<parameter>display</parameter>,
+ <constant>EGL_EXTENSIONS</constant>); or query the EGL or client
+ API version for non-extension functions, to determine if a
+ function is supported by EGL or a specific client API context.
+ </para>
+ <para>
+ Client API function pointers returned by
+ <function>eglGetProcAddress</function> are independent of the
+ display and the currently bound client API context, and may be
+ used by any client API context which supports the function.
+ </para>
+ <para>
+ <function>eglGetProcAddress</function> may be queried for all
+ EGL and client API functions supported by the implementation
+ (whether those functions are extensions or not, and whether they
+ are supported by the current client API context or not).
+ </para>
+ <para>
+ For functions that are queryable with
+ <function>eglGetProcAddress</function>, implementations may
+ choose to also export those functions statically from the object
+ libraries implementing those functions. However, portable
+ clients cannot rely on this behavior.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ If the EGL version is not 1.5 or greater, only queries of EGL
+ and client API <emphasis>extension</emphasis> functions will
+ succeed.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <function>glGetString</function>
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry> </para>
+ <function>vgGetString</function>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglGetSyncAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglGetSyncAttrib.xml
new file mode 100644
index 0000000..c3f0197
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglGetSyncAttrib.xml
@@ -0,0 +1,148 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetSyncAttrib">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglGetSyncAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglGetSyncAttrib</refname>
+ <refpurpose>
+ Return an attribute of a sync object
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglGetSyncAttrib</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSync <parameter>sync</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLAttrib *<parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>sync</parameter></term>
+ <listitem><para>
+ Specifies the sync object to query.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem><para>
+ Specifies the EGL sync object attribute to query.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem><para>
+ Returns the requested attribute value.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglGetSyncAttrib</function> is used to query
+ attributes of the sync object <parameter>sync</parameter>. Legal
+ values for <parameter>attribute</parameter> depend on the type
+ of sync object, as shown in table
+ <xref linkend="tab-syncattr"/>. Assuming no errors are
+ generated, <constant>EGL_TRUE</constant> is returned and the
+ value of the queried attribute is returned in
+ *<parameter>value</parameter>.
+ </para>
+ <table frame="all" xml:id="tab-syncattr">
+ <title>
+ Attributes accepted by <function>eglGetSyncAttrib</function>
+ </title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Attribute</entry>
+ <entry>Description</entry>
+ <entry>Supported Sync Objects</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Attribute</entry>
+ <entry>Description</entry>
+ <entry>Supported Sync Objects</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_SYNC_TYPE</constant></entry>
+ <entry>Type of the sync object</entry>
+ <entry>All</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_SYNC_STATUS</constant></entry>
+ <entry>Status of the sync object</entry>
+ <entry>All</entry>
+ </row>
+ <row>
+ <entry><constant>EGL_SYNC_CONDITION</constant></entry>
+ <entry>Signaling condition</entry>
+ <entry>
+ <constant>EGL_SYNC_FENCE</constant> or
+ <constant>EGL_SYNC_CL_EVENT</constant>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ On failure, <function>eglGetSyncAttrib</function> returns
+ <constant>EGL_FALSE</constant> and *<parameter>value</parameter>
+ is not modified.
+ </para>
+ <para>
+ If <parameter>sync</parameter> is not a valid sync object for
+ <parameter>display</parameter>, an
+ <constant>EGL_BAD_PARAMETER</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>attribute</parameter> is not one of the attributes
+ in table <xref linkend="tab-syncattr"/>, an
+ <constant>EGL_BAD_ATTRIBUTE</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>attribute</parameter> is not supported for the
+ type of sync object passed in <parameter>sync</parameter>, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>display</parameter> does not match the display
+ passed to <function>eglCreateSync</function> when
+ <parameter>sync</parameter> was created, behaviour is undefined.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglGetSyncAttrib</function> is available only if the
+ EGL version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglInitialize.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglInitialize.xml
new file mode 100644
index 0000000..367a986
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglInitialize.xml
@@ -0,0 +1,100 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglInitialize">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglInitialize</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglInitialize</refname>
+ <refpurpose>
+ initialize an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglInitialize</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint * <parameter>major</parameter></paramdef>
+ <paramdef>EGLint * <parameter>minor</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection to initialize.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>major</parameter></term>
+ <listitem>
+ <para>
+ Returns the major version number of the EGL implementation.
+ May be <constant>NULL</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>minor</parameter></term>
+ <listitem>
+ <para>
+ Returns the minor version number of the EGL implementation.
+ May be <constant>NULL</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglInitialize</function> initialized the EGL display
+ connection obtained with
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>.
+ Initializing an already initialized EGL display connection has no
+ effect besides returning the version numbers.
+ </para>
+ <para>
+ <parameter>major</parameter> and <parameter>minor</parameter>
+ do not return values if they are specified as <constant>NULL</constant>.
+ </para>
+ <para>
+ Use <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>
+ to release resources associated with an EGL display connection.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglInitialize</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>major</parameter> and <parameter>minor</parameter> are not
+ modified when <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> cannot be initialized.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglIntro.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglIntro.xml
new file mode 100644
index 0000000..0cdd0a1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglIntro.xml
@@ -0,0 +1,275 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglIntro">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglIntro</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglIntro</refname>
+ <refpurpose>
+ introduction to managing client API rendering through the
+ <acronym>EGL</acronym> API.
+ </refpurpose>
+ </refnamediv>
+ <refsect1 xml:id="overview"><title>Overview</title>
+ <para>
+ The <firstterm>Khronos Native Platform Graphics
+ Interface</firstterm> (EGL) provides a means for rendering
+ using a <firstterm>client API</firstterm> such as OpenGL ES
+ (a 3D renderer for embedded systems), OpenGL (a functional
+ superset of OpenGL ES for desktop systems), and OpenVG (a 2D
+ vector graphics renderer) together with a
+ <firstterm>platform</firstterm>, such as Microsoft Windows or
+ the X Window System.
+ </para>
+ <para>
+ Depending on its implementation EGL might be more or less
+ tightly integrated into the platform. Most EGL
+ functions require an EGL display connection, which can be
+ obtained by calling
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>
+ or
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>.
+ To initialize and
+ query what EGL version is supported on the display
+ connection, call
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ The EGL specification does not define the set of platforms that
+ may be supported by an EGL implementation, nor does it specify
+ behavior specific to any platform. The set of supported
+ platforms and their behavior is defined by platform-specific
+ extensions. To detect if a particular platform is supported,
+ clients should query the <constant>EGL_EXTENSIONS</constant>
+ string of <constant>EGL_NO_DISPLAY</constant> using
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ Platforms supporting EGL make a subset of their
+ visuals (which may also referred to as pixel formats, frame
+ buffer configurations, or other similar terms) available for
+ client API rendering. Windows and pixmaps created with these
+ visuals may also be rendered into using the platform APIs.
+ </para>
+ <para>
+ An EGL <firstterm>surface</firstterm> extends a native
+ window or pixmap with additional <firstterm>auxillary
+ buffers</firstterm>. These buffers include a color buffer, a
+ depth buffer, a stencil buffer, and an alpha mask buffer.
+ Some or all of the buffers listed are included in each EGL
+ frame buffer configuration.
+ </para>
+ <para>
+ EGL supports rendering into three types of surfaces:
+ windows, pixmaps and pixel buffers (pbuffers). EGL window
+ and pixmap surfaces are associated with corresponding
+ resources of the platform. EGL pixel buffers are
+ EGL-only resources, and do not accept rendering through the
+ platform APIs.
+ </para>
+ <para>
+ To render using a client API into an EGL surface, you must
+ determine the appropriate EGL frame buffer configuration,
+ which supports the rendering features the application
+ requires.
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
+ returns an <type>EGLConfig</type> matching the required
+ attributes, if any. A complete list of EGL frame buffer
+ configurations can be obtained by calling
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>.
+ Attributes of a particular EGL frame buffer configuration
+ can be queried by calling
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ For EGL window and pixmap surfaces, a suitable native window
+ or pixmap with a matching native visual must be created
+ first. For a given EGL frame buffer configuration, the
+ native visual type and ID can be retrieved with a call to
+ <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>.
+ For pixel buffers, no underlying native resource is
+ required.
+ </para>
+ <para>
+ To create an EGL window surface from a native window, call
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>.
+ To create an EGL pixmap surface from a native pixmap, call
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>.
+ To create a pixel buffer (pbuffer) surface (which has no
+ associated native buffer), call
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>
+ To create a pixel buffer (pbuffer) surface whose color
+ buffer is provided by an OpenVG <type>VGImage</type>, call
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>.
+ Use
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
+ to release previously allocated resources.
+ </para>
+ <para>
+ An EGL rendering context is required to bind client API
+ rendering to an EGL surface. An EGL surface and an EGL
+ rendering context must have compatible EGL frame buffer
+ configurations. To create an EGL rendering context, call
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>.
+ The type of client API context created (OpenGL ES, OpenVG,
+ etc.) can be changed by first calling
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ An EGL rendering context may be bound to one or two EGL
+ surfaces by calling
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ This context/surface(s) association specifies the
+ <firstterm>current context</firstterm> and
+ <firstterm>current surface</firstterm>, and is used by all
+ client API rendering commands for the bound context until
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ is called with different arguments.
+ </para>
+ <para>
+ Both platform and client API commands may be used to operate
+ on certain surfaces. However, the two command streams are
+ not synchronized. Synchronization can be explicitly
+ specified using by calling
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>,
+ and possibly by calling other platform APIs.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="examples"><title>Examples</title>
+ <para>
+ Below is a minimal example of creating an RGBA-format window that
+ allows rendering with OpenGL ES.
+ The window is cleared to yellow when the program runs. For simplicity,
+ the program does not check for any errors.
+ </para>
+<programlisting>
+#include &lt;stdlib.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+typedef ... NativeWindowType;
+extern NativeWindowType createNativeWindow(void);
+static EGLint const attribute_list[] = {
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_NONE
+};
+int main(int argc, char ** argv)
+{
+ EGLDisplay display;
+ EGLConfig config;
+ EGLContext context;
+ EGLSurface surface;
+ NativeWindowType native_window;
+ EGLint num_config;
+
+ /* get an EGL display connection */
+ display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ /* initialize the EGL display connection */
+ eglInitialize(display, NULL, NULL);
+
+ /* get an appropriate EGL frame buffer configuration */
+ eglChooseConfig(display, attribute_list, &amp;config, 1, &amp;num_config);
+
+ /* create an EGL rendering context */
+ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
+
+ /* create a native window */
+ native_window = createNativeWindow();
+
+ /* create an EGL window surface */
+ surface = eglCreateWindowSurface(display, config, native_window, NULL);
+
+ /* connect the context to the surface */
+ eglMakeCurrent(display, surface, surface, context);
+
+ /* clear the color buffer */
+ glClearColor(1.0, 1.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFlush();
+
+ eglSwapBuffers(display, surface);
+
+ sleep(10);
+ return EXIT_SUCCESS;
+}
+</programlisting>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Prior to EGL 1.5, platforms were referred to as the
+ <firstterm>native window system</firstterm>, and
+ platform-specific queries and APIs were not available. Only a
+ single native window system was supported.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="usingeglextensions"><title>Using EGL Extensions</title>
+ <para>
+ All supported EGL extensions will have a corresponding definition in
+ <filename>egl.h</filename> and a token in the extension strings returned
+ by
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="futureeglversions"><title>Future EGL Versions</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ and
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>
+ can be used to determine at run-time what version of EGL is available.
+ To check the EGL version at compile-time, test whether
+ <constant>EGL_VERSION_<replaceable>x</replaceable>_<replaceable>y</replaceable></constant>
+ is defined, where <replaceable>x</replaceable> and
+ <replaceable>y</replaceable> are the major and minor version
+ numbers.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="files"><title>Files</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>GLES/egl.h</filename></term>
+ <listitem><para>
+ EGL header file
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+<!--
+ <citerefentry><refentrytitle>glIntro</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+-->
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferFromClientBuffer</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetPlatformDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglMakeCurrent.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglMakeCurrent.xml
new file mode 100644
index 0000000..3464640
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglMakeCurrent.xml
@@ -0,0 +1,321 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglMakeCurrent">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglMakeCurrent</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglMakeCurrent</refname>
+ <refpurpose>
+ attach an EGL rendering context to EGL surfaces
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglMakeCurrent</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>draw</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>read</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> display connection.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>draw</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> draw surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>read</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> read surface.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>Specifies the <acronym>EGL</acronym> rendering context
+ to be attached to the surfaces.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglMakeCurrent</function> binds <parameter>context</parameter>
+ to the current rendering thread and to the <parameter>draw</parameter>
+ and <parameter>read</parameter> surfaces.
+ </para>
+ <para>
+ For an OpenGL or OpenGL ES context, <parameter>draw</parameter>
+ is used for all operations except for any pixel data read back or copied
+ (<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>, and
+ <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>),
+ which is taken from the frame buffer values of
+ <parameter>read</parameter>. Note that the same
+ <type>EGLSurface</type> may be specified for both draw and read.
+ </para>
+ <para>
+ For an OpenVG context, the same <type>EGLSurface</type> must be
+ specified for both <parameter>draw</parameter> and
+ <parameter>read</parameter>.
+ </para>
+ <para>
+ If the calling thread has already a current rendering context of
+ the same client API type as <parameter>context</parameter>, then
+ that context is flushed and marked as no longer current.
+ <parameter>context</parameter> is then made the current context
+ for the calling thread. For purposes of
+ <function>eglMakeCurrent</function>, the client API type of all
+ OpenGL ES and OpenGL contexts is considered the same. In other
+ words, if any OpenGL ES context is currently bound and
+ <parameter>context</parameter> is an OpenGL context, or if any
+ OpenGL context is currently bound and
+ <parameter>context</parameter> is an OpenGL ES context, the
+ currently bound context will be made no longer current and
+ <parameter>context</parameter> will be made current.
+ </para>
+ <para>
+ OpenGL and OpenGL ES buffer mappings created by e.g.
+ <function>glMapBuffer</function> are not affected by
+ <function>eglMakeCurrent</function>; they persist whether the
+ context owning the buffer is current or not.
+ </para>
+ <para>
+ If <parameter>draw</parameter> is destroyed after
+ <function>eglMakeCurrent</function> is called, then subsequent
+ rendering commands will be processed and the context state will
+ be updated, but the surface contents become undefined. If
+ <parameter>read</parameter> is destroyed after
+ <function>eglMakeCurrent</function> then pixel values
+ <parameter>read</parameter> from the framebuffer (e.g., as
+ result of calling glReadPixels) are undefined. If a native
+ window or pixmap underlying the <parameter>draw</parameter> or
+ <parameter>read</parameter> surfaces is destroyed, rendering and
+ <parameter>read</parameter>back are handled as above.
+ </para>
+ <para>
+ To release the current context without assigning a new one, set
+ <parameter>context</parameter> to
+ <constant>EGL_NO_CONTEXT</constant> and set
+ <parameter>draw</parameter> and <parameter>read</parameter> to
+ <constant>EGL_NO_SURFACE</constant> . The currently bound
+ context for the client API specified by the current rendering
+ API is flushed and marked as no longer current, and there will
+ be no current context for that client API after
+ <function>eglMakeCurrent</function> returns. This is the only
+ case in which <function>eglMakeCurrent</function> respects the
+ current rendering API. In all other cases, the client API
+ affected is determined by <parameter>context</parameter>. This
+ is the only case where an uninitialized display may be passed to
+ <function>eglMakeCurrent</function>.
+ </para>
+ <para>
+ If ctx is not <constant>EGL_NO_CONTEXT</constant>, then both
+ <parameter>draw</parameter> and <parameter>read</parameter> must
+ not be <constant>EGL_NO_SURFACE</constant> unless
+ <parameter>context</parameter> is a context which supports being
+ bound without read and draw surfaces. In this case the context
+ is made current without a default framebuffer. The meaning of
+ this is defined by the client API of the supporting context (see
+ chapter 4 of the OpenGL 3.0 Specification, and the
+ <constant>GL_OES_surfaceless_context</constant> OpenGL ES
+ extension.).
+ </para>
+ <para>
+ The first time a OpenGL or OpenGL ES context is made current the
+ viewport and scissor dimensions are set to the size of the
+ <parameter>draw</parameter> surface (as though
+ <function>glViewport</function>(0,0,w,h) and
+ <function>glScissor</function>(0,0,<parameter>w</parameter>,<parameter>h</parameter>)
+ were called, where <parameter>w</parameter> and
+ <parameter>h</parameter> are the width and height of the
+ surface, respectively). However, the viewport and scissor
+ dimensions are not modified when <parameter>context</parameter>
+ is subsequently made current. The client is responsible for
+ resetting the viewport and scissor in this case.
+ </para>
+ <para>
+ The first time <parameter>context</parameter> is made current,
+ if it is without a default framebuffer (e.g. both
+ <parameter>draw</parameter> and <parameter>read</parameter> are
+ <constant>EGL_NO_SURFACE</constant> ), then the viewport and
+ scissor regions are set as though
+ <function>glViewport</function>(0,0,0,0) and
+ <function>glScissor</function>(0,0,0,0) were called.
+ </para>
+ <para>
+ Implementations may delay allocation of auxiliary buffers for a
+ surface until they are required by a context (which may result
+ in the <constant>EGL_BAD_ALLOC</constant> error described
+ above). Once allocated, however, auxiliary buffers and their
+ contents persist until a surface is deleted.
+ </para>
+ <para>
+ Use
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>, and
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>
+ to query the current rendering context and associated display connection and surfaces.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ If <parameter>draw</parameter> or <parameter>read</parameter>
+ are not compatible with <parameter>context</parameter>, then an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> is current to some other
+ thread, or if either <parameter>draw</parameter> or
+ <parameter>read</parameter> are bound to contexts in another
+ thread, an <constant>EGL_BAD_ACCESS</constant> error is
+ generated.
+ </para>
+ <para>
+ If binding <parameter>context</parameter> would exceed the
+ number of current contexts of that client API type supported by
+ the implementation, an <constant>EGL_BAD_ACCESS</constant> error
+ is generated.
+ </para>
+ <para>
+ If either <parameter>draw</parameter> or
+ <parameter>read</parameter> are pbuffers created with
+ <function>eglCreatePbufferFromClientBuffer</function>, and the
+ underlying bound client API buffers are in use by the client API
+ that created them, an <constant>EGL_BAD_ACCESS</constant> error
+ is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> is not a valid context and is
+ not <constant>EGL_NO_CONTEXT</constant>, an
+ <constant>EGL_BAD_CONTEXT</constant> error is generated.
+ </para>
+ <para>
+ If either <parameter>draw</parameter> or
+ <parameter>read</parameter> are not valid EGL surfaces and are
+ not <constant>EGL_NO_SURFACE</constant>, an
+ <constant>EGL_BAD_SURFACE</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> is
+ <constant>EGL_NO_CONTEXT</constant> and either
+ <parameter>draw</parameter> or <parameter>read</parameter> are
+ not <constant>EGL_NO_SURFACE</constant>, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If either of <parameter>draw</parameter> or
+ <parameter>read</parameter> is a valid surface and the other is
+ <constant>EGL_NO_SURFACE</constant>, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>context</parameter> does not support being bound
+ without <parameter>read</parameter> and
+ <parameter>draw</parameter> surfaces, and both
+ <parameter>draw</parameter> and <parameter>read</parameter> are
+ <constant>EGL_NO_SURFACE</constant>, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If a native window underlying either <parameter>draw</parameter>
+ or <parameter>read</parameter> is no longer valid, an
+ <constant>EGL_BAD_NATIVE_WINDOW</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>draw</parameter> and <parameter>read</parameter>
+ cannot fit into graphics memory simultaneously, an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If the previous context of the calling thread has unflushed
+ commands, and the previous surface is no longer valid, an
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> error is generated.
+ </para>
+ <para>
+ If the ancillary buffers for <parameter>draw</parameter> and
+ <parameter>read</parameter> cannot be allocated, an
+ <constant>EGL_BAD_ALLOC</constant> error is generated.
+ </para>
+ <para>
+ If a power management event has occurred, an
+ <constant>EGL_CONTEXT_LOST</constant> error is generated.
+ </para>
+ <para>
+ If any of the following are true:
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>context</parameter> is not
+ <constant>EGL_NO_CONTEXT</constant>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>read</parameter> is not
+ <constant>EGL_NO_SURFACE</constant>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>draw</parameter> is not
+ <constant>EGL_NO_SURFACE</constant>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ then an <constant>EGL_NOT_INITIALIZED</constant> error is
+ generated if <parameter>display</parameter> is a valid but
+ uninitialized display.
+ </para>
+ <para>
+ As with other commands taking <type>EGLDisplay</type>
+ parameters, if <parameter>display</parameter> is not a valid
+ <type>EGLDisplay</type> handle, an
+ <constant>EGL_BAD_DISPLAY</constant> error is generated. (Some
+ implementations have chosen to allow
+ <constant>EGL_NO_DISPLAY</constant> as a valid
+ <parameter>display</parameter> parameter for
+ <function>eglMakeCurrent</function>. This behavior is not
+ portable to all EGL implementations, and should be considered as
+ an undocumented vendor extension).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglQueryAPI.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryAPI.xml
new file mode 100644
index 0000000..f83b6de
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryAPI.xml
@@ -0,0 +1,76 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglQueryAPI">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglQueryAPI</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryAPI</refname>
+ <refpurpose>Query the current rendering API</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLenum <function>eglQueryAPI</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglQueryAPI</function> returns the value of the
+ current rendering API for EGL in the thread it is called
+ from. The current rendering API is set by
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ and affects the behavior of other EGL commands.
+ </para>
+ <para>
+ The value returned will be one of the valid
+ <parameter>api</parameter> parameters to
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>, or
+ <constant>EGL_NONE</constant>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglQueryAPI</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ The initial value of the current rendering API is
+ <constant>EGL_OPENGL_ES_API</constant> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <constant>EGL_NONE</constant> (however,
+ <constant>EGL_NONE</constant> is not a valid
+ <parameter>api</parameter> parameter to
+ <function>eglQueryAPI</function>).
+ </para>
+ <para>
+ The current rendering API can be changed by calling
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ None.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglQueryContext.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryContext.xml
new file mode 100644
index 0000000..30ace39
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryContext.xml
@@ -0,0 +1,184 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglQueryContext">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglQueryContext</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryContext</refname>
+ <refpurpose>
+ return <acronym>EGL</acronym> rendering context information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglQueryContext</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLContext <parameter>context</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL rendering context to query.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL rendering context attribute to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Returns the requested value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglQueryContext</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for <parameter>context</parameter>.
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the context was created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_TYPE</constant></term>
+ <listitem><para>
+ Returns the type of client API which the context
+ supports (one of
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, or
+ <constant>EGL_OPENVG_API</constant>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_CONTEXT_CLIENT_VERSION</constant></term>
+ <listitem><para>
+ Returns the version of the client API which the
+ context supports, as specified at context creation
+ time. The resulting value is only meaningful for an
+ OpenGL ES context.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem>
+ <para>
+ Returns the buffer which client API rendering
+ via the context will use. The value returned
+ depends on properties of both the context, and
+ the surface to which the context is bound:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ If the context is bound to a pixmap surface,
+ then <constant>EGL_SINGLE_BUFFER</constant> will
+ be returned.
+ </para></listitem>
+ <listitem><para>
+ If the context is bound to a pbuffer surface,
+ then <constant>EGL_BACK_BUFFER</constant> will
+ be returned.
+ </para></listitem>
+ <listitem><para>
+ If the context is bound to a window surface,
+ then either <constant>EGL_BACK_BUFFER</constant>
+ or <constant>EGL_SINGLE_BUFFER</constant> may be
+ returned. The value returned depends on both the
+ buffer requested by the setting of the
+ <constant>EGL_RENDER_BUFFER</constant> property
+ of the surface (which may be queried by calling
+ <function>eglQuerySurface</function>), and on
+ the client API (not all client APIs support
+ single-buffer rendering to window surfaces).
+ </para></listitem>
+ <listitem><para>
+ If the context is not bound to a surface, such
+ as an OpenGL ES context bound to a framebuffer
+ object, then <constant>EGL_NONE</constant> will
+ be returned.
+ </para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attributes <constant>EGL_CONTEXT_CLIENT_TYPE</constant> and
+ <constant>EGL_RENDER_BUFFER</constant> are supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_CONTEXT_CLIENT_VERSION</constant> is
+ supported only if the EGL version is 1.3 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if
+ <parameter>context</parameter> is not an EGL rendering context.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid context attribute.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglQueryString.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryString.xml
new file mode 100644
index 0000000..17fa9e0
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglQueryString.xml
@@ -0,0 +1,179 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglQueryString">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglQueryString</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQueryString</refname>
+ <refpurpose>
+ return a string describing properties of the EGL client or of an
+ <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>char const * <function>eglQueryString</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint <parameter>name</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>name</parameter></term>
+ <listitem>
+ <para>
+ Specifies a symbolic constant, one of
+ <constant>EGL_CLIENT_APIS</constant>,
+ <constant>EGL_VENDOR</constant>,
+ <constant>EGL_VERSION</constant>, or
+ <constant>EGL_EXTENSIONS</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglQueryString</function> returns a pointer to a
+ static, zero-terminated string describing properties of the EGL
+ client or of an EGL display connection.
+ <parameter>name</parameter> may be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CLIENT_APIS</constant></term>
+ <listitem><para>
+ Returns a string describing which client rendering
+ APIs are supported. The string contains a
+ space-separated list of API names. The list must
+ include at least one of <code>OpenGL</code>,
+ <code>OpenGL_ES</code>, or <code>OpenVG</code>.
+ These strings correspond respectively to values
+ <constant>EGL_OPENGL_API</constant>,
+ <constant>EGL_OPENGL_ES_API</constant>, and
+ <constant>EGL_OPENVG_API</constant> of the
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <parameter>api</parameter> argument.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VENDOR</constant></term>
+ <listitem><para>
+ Returns the name of the vendor responsible for this EGL
+ implementation. The format and contents of the string
+ are implementation-dependent.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VERSION</constant></term>
+ <listitem>
+ <para>
+ Returns a version or release number. The
+ <constant>EGL_VERSION</constant> string is laid out
+ as follows:
+ </para>
+ <para>
+ <replaceable>major_version</replaceable>.<replaceable>minor_version</replaceable>
+ space
+ <replaceable>vendor_specific_info</replaceable>
+ </para>
+ <para>
+ Both the major and minor portions of the version
+ number are numeric. Their values must match the
+ <parameter>major</parameter> and
+ <parameter>minor</parameter> values returned by
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ The vendor-specific information is optional; if
+ present, its format and contents are
+ implementation-specific.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_EXTENSIONS</constant></term>
+ <listitem>
+ <para>
+ Returns a space separated list of supported
+ extensions to EGL. If there are no extensions, then
+ the empty string is returned.
+ </para>
+ <para>
+ If <parameter>display</parameter> is
+ <constant>EGL_NO_DISPLAY</constant>, then the
+ <constant>EGL_EXTENSIONS</constant> string describes
+ the set of supported <firstterm>client
+ extensions</firstterm>. If
+ <parameter>display</parameter> is a valid,
+ initialized display, then the
+ <constant>EGL_EXTENSIONS</constant> string describes
+ the set of <firstterm>display extensions</firstterm>
+ supported by that display. The set of supported
+ client extensions is disjoint from the set of
+ extensions supported by any given display.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <constant>EGL_CLIENT_APIS</constant> is supported only if
+ the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ A <parameter>display</parameter> of
+ <constant>EGL_NO_DISPLAY</constant> is supported only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>NULL</constant> is returned on failure.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection,
+ unless <parameter>display</parameter> is
+ <constant>EGL_NO_DISPLAY</constant> and
+ <parameter>name</parameter> is
+ <constant>EGL_EXTENSIONS</constant>.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> is a valid but uninitialized
+ EGLDisplay.
+ </para>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>name</parameter> is not an accepted value.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglQuerySurface.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglQuerySurface.xml
new file mode 100644
index 0000000..574ec71
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglQuerySurface.xml
@@ -0,0 +1,310 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglQuerySurface">
+ <info>
+ <copyright>
+ <year>2003-2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglQuerySurface</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglQuerySurface</refname>
+ <refpurpose>
+ return <acronym>EGL</acronym> surface information
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglQuerySurface</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint * <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface to query.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface attribute to be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Returns the requested value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglQuerySurface</function> returns in
+ <parameter>value</parameter> the value of
+ <parameter>attribute</parameter> for <parameter>surface</parameter>.
+ <parameter>attribute</parameter> can be one of the following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_CONFIG_ID</constant></term>
+ <listitem><para>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the surface was created.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_GL_COLORSPACE</constant></term>
+ <listitem><para>
+ Returns the color space used by OpenGL and OpenGL ES
+ when rendering to the surface, either
+ <constant>EGL_GL_COLORSPACE_SRGB</constant> or
+ <constant>EGL_GL_COLORSPACE_LINEAR</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HEIGHT</constant></term>
+ <listitem><para>
+ Returns the height of the surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_HORIZONTAL_RESOLUTION</constant></term>
+ <listitem><para>
+ Returns the horizontal dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_LARGEST_PBUFFER</constant></term>
+ <listitem><para>
+ Returns the same attribute value specified when the
+ surface was created with
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>.
+ For a window or pixmap surface,
+ <parameter>value</parameter> is not modified.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_LEVEL</constant></term>
+ <listitem><para>
+ Returns which level of the mipmap to render to, if
+ texture has mipmaps.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_TEXTURE</constant></term>
+ <listitem><para>
+ Returns <constant>EGL_TRUE</constant> if texture has
+ mipmaps, <constant>EGL_FALSE</constant> otherwise.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE</constant></term>
+ <listitem>
+ <para>
+ Returns the filter used when resolving the
+ multisample buffer. The filter may be either
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>
+ or <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>,
+ as described for
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_PIXEL_ASPECT_RATIO</constant></term>
+ <listitem><para>
+ Returns the aspect ratio of an individual pixel (the
+ ratio of a pixel's width to its height). The value
+ returned is equal to the actual aspect ratio
+ multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_RENDER_BUFFER</constant></term>
+ <listitem><para>
+ Returns the buffer which client API rendering is
+ requested to use. For a window surface, this is the
+ same attribute value specified when the surface was
+ created. For a pbuffer surface, it is always
+ <constant>EGL_BACK_BUFFER</constant>. For a pixmap
+ surface, it is always
+ <constant>EGL_SINGLE_BUFFER</constant>. To determine
+ the actual buffer being rendered to by a context,
+ call
+ <citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR</constant></term>
+ <listitem><para>
+ Returns the effect on the color buffer when posting
+ a surface with
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>.
+ Swap behavior may be either
+ <constant>EGL_BUFFER_PRESERVED</constant> or
+ <constant>EGL_BUFFER_DESTROYED</constant>, as
+ described for
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_FORMAT</constant></term>
+ <listitem><para>
+ Returns format of texture. Possible values are
+ <constant>EGL_NO_TEXTURE</constant>,
+ <constant>EGL_TEXTURE_RGB</constant>, and
+ <constant>EGL_TEXTURE_RGBA</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_TEXTURE_TARGET</constant></term>
+ <listitem><para>
+ Returns type of texture. Possible values are
+ <constant>EGL_NO_TEXTURE</constant>, or
+ <constant>EGL_TEXTURE_2D</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VERTICAL_RESOLUTION</constant></term>
+ <listitem><para>
+ Returns the vertical dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <constant>EGL_DISPLAY_SCALING</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
+ <listitem><para>
+ Returns the interpretation of alpha values used by
+ OpenVG when rendering to the surface, either
+ <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant> or
+ <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_VG_COLORSPACE</constant></term>
+ <listitem><para>
+ Returns the color space used by OpenVG when rendering to
+ the surface, either
+ <constant>EGL_VG_COLORSPACE_sRGB</constant> or
+ <constant>EGL_VG_COLORSPACE_LINEAR</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_WIDTH</constant></term>
+ <listitem><para>
+ Returns the width of the surface in pixels.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_GL_COLORSPACE</constant> is supported
+ only if the EGL version is 1.5 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ Attributes <constant>EGL_DISPLAY_SCALING</constant>.
+ <constant>EGL_HORIZONTAL_RESOLUTION</constant>,
+ <constant>EGL_PIXEL_ASPECT_RATIO</constant>,
+ <constant>EGL_RENDER_BUFFER</constant>,
+ <constant>EGL_SWAP_BEHAVIOR</constant>, and
+ <constant>EGL_VERTICAL_RESOLUTION</constant> are supported
+ only if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Querying attributes <constant>EGL_TEXTURE_FORMAT</constant>,
+ <constant>EGL_TEXTURE_TARGET</constant>,
+ <constant>EGL_MIPMAP_TEXTURE</constant>, or
+ <constant>EGL_MIPMAP_LEVEL</constant> for a non-pbuffer
+ surface is not an error, but <parameter>value</parameter> is
+ not modified.
+ </para>
+ <para>
+ <constant>EGL_DISPLAY_SCALING</constant> is the constant
+ value 10000. Floating-point values such as resolution and
+ pixel aspect ratio are scaled by this value before being
+ returned as integers so that sufficient precision to be
+ meaningful will be retained in the returned value.
+ </para>
+ <para>
+ For an offscreen (pbuffer or pixmap) surface, or a surface
+ whose pixel dot pitch or aspect ratio are unknown, querying
+ <constant>EGL_HORIZONTAL_RESOLUTION</constant>,
+ <constant>EGL_PIXEL_ASPECT_RATIO</constant>, or
+ <constant>EGL_VERTICAL_RESOLUTION</constant> will return the
+ constant value <constant>EGL_UNKNOWN</constant> (-1).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ <parameter>value</parameter> is not modified when
+ <constant>EGL_FALSE</constant> is returned.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid surface attribute.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseTexImage.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseTexImage.xml
new file mode 100644
index 0000000..eb9ef54
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseTexImage.xml
@@ -0,0 +1,101 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglReleaseTexImage">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglReleaseTexImage</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglReleaseTexImage</refname>
+ <refpurpose>
+ Releases a color buffer that is being used as a texture
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglReleaseTexImage</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>buffer</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>Specifies the EGL display connection.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>buffer</parameter></term>
+ <listitem><para>Specifies the texture image data.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ The specified color buffer is released back to the surface. The surface is made
+ available for reading and writing when it no longer has any color buffers bound as
+ textures.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ If the specified color buffer is no longer bound to a texture (e.g., because the
+ texture object was deleted) then eglReleaseTexImage has no effect. No error is
+ generated.
+ </para>
+ <para>
+ The contents of the color buffer are undefined when it is first released. In particular,
+ there is no guarantee that the texture image is still present. However, the contents of
+ other color buffers are unaffected by this call. Also, the contents of the depth and stencil buffers
+ are not affected by <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>
+ and <function>eglReleaseTexImage</function>.
+ </para>
+ <para>
+ After a color buffer is released from a texture (either explicitly by calling
+ <function>eglReleaseTexImage</function> or implicitly by calling a routine such as
+ <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry>),
+ all texture images that were defined by the color buffer become <constant>NULL</constant>
+ (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry> was called with an image of zero width).
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if the
+ surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is
+ set to <constant>EGL_NO_TEXTURE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>buffer</parameter> is not a valid buffer
+ (currently only <constant>EGL_BACK_BUFFER</constant> may be
+ specified).
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface, or is
+ not a bound pbuffer surface.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseThread.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseThread.xml
new file mode 100644
index 0000000..6f60215
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglReleaseThread.xml
@@ -0,0 +1,125 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglReleaseThread">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglReleaseThread</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglReleaseThread</refname>
+ <refpurpose>Release EGL per-thread state</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglReleaseThread</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglReleaseThread</function> returns the EGL to its
+ state at thread initialization, releasing all per-thread
+ state including the error status returned by
+ <command>eglGetError</command>, the currently bound
+ rendering API defined by <command>eglBindAPI</command>, and
+ the current contexts for each supported client API. The
+ overhead of maintaining this state may be objectionable in
+ applications which create and destroy many threads, but only
+ call EGL or client APIs in a few of those threads at any
+ given time.
+ </para>
+ <para>
+ <constant>EGL_TRUE</constant> is returned on success, and the
+ following actions are taken:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For each client API supported by EGL, if there is a
+ currently bound context, that context is released.
+ This is equivalent to calling
+ <function>eglMakeCurrent</function> with ctx set to
+ <constant>EGL_NO_CONTEXT</constant> and both draw
+ and read set to <constant>EGL_NO_SURFACE</constant>
+ (see section 3.7.3).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The current rendering API is reset to its value at
+ thread initialization (see
+ <command>eglBindAPI</command>).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Any additional implementation-dependent per-thread
+ state maintained by EGL is marked for deletion as
+ soon as possible.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ <function>eglReleaseThread</function> may be called in any
+ thread at any time, and may be called more than once in a
+ single thread. The initialization status of EGL (see section
+ 3.2) is not affected by releasing the thread; only
+ per-thread state is affected.
+ </para>
+ <para>
+ Resources explicitly allocated by calls to EGL, such as
+ contexts, surfaces, and configuration lists, are not
+ affected by <function>eglReleaseThread</function>. Such
+ resources belong not to the thread, but to the EGL
+ implementation as a whole.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglReleaseThread</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ Applications may call other EGL routines from a thread
+ following <function>eglReleaseThread</function>, but any
+ such call may reallocate the EGL state previously released.
+ In particular, calling <function>eglGetError</function>
+ immediately following a successful call to
+ <function>eglReleaseThread</function> will return
+ <constant>EGL_SUCCESS</constant>, but will also result in
+ reallocating per-thread state.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise. There are no
+ defined conditions under which failure will occur. Even if
+ EGL is not initialized on any EGLDisplay,
+ <function>eglReleaseThread</function> should succeed.
+ </para>
+ <para>
+ However, platform-dependent failures may be signaled through
+ the value returned from <function>eglGetError</function>.
+ Unless the platform-dependent behavior is known, a failed
+ call to <function>eglReleaseThread</function> should be
+ assumed to leave the current rendering API, and the
+ currently bound contexts for each supported client API, in
+ an unknown state.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetError</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglSurfaceAttrib.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglSurfaceAttrib.xml
new file mode 100644
index 0000000..90e626d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglSurfaceAttrib.xml
@@ -0,0 +1,207 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglSurfaceAttrib">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglSurfaceAttrib</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSurfaceAttrib</refname>
+ <refpurpose>
+ set an <acronym>EGL</acronym> surface attribute
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSurfaceAttrib</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ <paramdef>EGLint <parameter>attribute</parameter></paramdef>
+ <paramdef>EGLint <parameter>value</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>attribute</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL surface attribute to set.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value</parameter></term>
+ <listitem>
+ <para>
+ Specifies the attributes required value.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglSurfaceAttrib</function> sets the value of
+ <parameter>attribute</parameter> for
+ <parameter>surface</parameter> to
+ <parameter>value</parameter>.
+ <parameter>attribute</parameter> can be one of the
+ following:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><constant>EGL_MIPMAP_LEVEL</constant></term>
+ <listitem><para>
+ For mipmap textures, the
+ <constant>EGL_MIPMAP_LEVEL</constant> attribute
+ indicates which level of the mipmap should be
+ rendered. If the value of this attribute is outside
+ the range of supported mipmap levels, the closest
+ valid mipmap level is selected for rendering. The
+ default value is <constant>0</constant>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_MULTISAMPLE_RESOLVE</constant></term>
+ <listitem>
+ <para>
+ Specifies the filter to use when resolving the
+ multisample buffer (this may occur when swapping or
+ copying the surface, or when changing the client API
+ context bound to the surface). A
+ <parameter>value</parameter> of
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>
+ chooses the default implementation-defined filtering
+ method, while
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>
+ chooses a one-pixel wide box filter placing equal
+ weighting on all multisample values.
+ </para>
+ <para>
+ The initial value of
+ <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ <constant>EGL_MULTISAMPLE_RESOLVE_DEFAULT</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>EGL_SWAP_BEHAVIOR</constant></term>
+ <listitem>
+ <para>
+ Specifies the effect on the color buffer of posting
+ a surface with
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>.
+ A <parameter>value</parameter> of
+ <constant>EGL_BUFFER_PRESERVED</constant> indicates
+ that color buffer contents are unaffected, while
+ <constant>EGL_BUFFER_DESTROYED</constant> indicates
+ that color buffer contents may be destroyed or
+ changed by the operation.
+ </para>
+ <para>
+ The initial value of
+ <constant>EGL_SWAP_BEHAVIOR</constant> is chosen by
+ the implementation.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_MULTISAMPLE_RESOLVE</constant> is
+ supported only if the EGL version is 1.4 or greater.
+ </para>
+ <para>
+ Attribute <constant>EGL_SWAP_BEHAVIOR</constant> is
+ supported only if the EGL version is 1.2 or greater.
+ </para>
+ <para>
+ If the value of pbuffer attribute
+ <constant>EGL_TEXTURE_FORMAT</constant> is
+ <constant>EGL_NO_TEXTURE</constant>, the value of attribute
+ <constant>EGL_TEXTURE_TARGET</constant> is
+ <constant>EGL_NO_TEXTURE</constant>, or
+ <parameter>surface</parameter> is not a pbuffer, then
+ attribute <constant>EGL_MIPMAP_LEVEL</constant> may be set,
+ but has no effect.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>attribute</parameter> is
+ <constant>EGL_MULTISAMPLE_RESOLVE</constant>,
+ <parameter>value</parameter> is
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX</constant>, and the
+ <constant>EGL_SURFACE_TYPE</constant> attribute of the
+ <type>EGLConfig</type> used to create
+ <parameter>surface</parameter> does not contain
+ <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_MATCH</constant> is generated if
+ <parameter>attribute</parameter> is
+ <constant>EGL_SWAP_BEHAVIOR</constant>,
+ <parameter>value</parameter> is
+ <constant>EGL_BUFFER_PRESERVED</constant>, and the
+ <constant>EGL_SURFACE_TYPE</constant> attribute of the
+ <type>EGLConfig</type> used to create
+ <parameter>surface</parameter> does not contain
+ <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant>.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL surface.
+ </para>
+ <para>
+ <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
+ <parameter>attribute</parameter> is not a valid surface attribute.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglSwapBuffers.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglSwapBuffers.xml
new file mode 100644
index 0000000..8a3de8d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglSwapBuffers.xml
@@ -0,0 +1,152 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglSwapBuffers">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglSwapBuffers</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSwapBuffers</refname>
+ <refpurpose>
+ post <acronym>EGL</acronym> surface color buffer to a native window
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSwapBuffers</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSurface <parameter>surface</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>surface</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL drawing surface whose buffers are to be swapped.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ If <parameter>surface</parameter> is a back-buffered window
+ surface, then the color
+ buffer is copied (posted) to the native window associated with that
+ surface. If <parameter>surface</parameter> is a single-buffered
+ window, pixmap, or pixel buffer surface,
+ <function>eglSwapBuffers</function> has no effect.
+ </para>
+ <para>
+ The contents of ancillary buffers are always undefined after
+ calling <function>eglSwapBuffers</function>. The contents of the
+ color buffer are undefined if the value of the
+ <constant>EGL_SWAP_BEHAVIOR</constant> attribute of
+ <parameter>surface</parameter> is not
+ <constant>EGL_BUFFER_PRESERVED</constant>. The value of
+ <constant>EGL_SWAP_BEHAVIOR</constant> can be set for some
+ surfaces using
+ <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
+ <constant>EGL_SWAP_BEHAVIOR</constant> applies only to the color
+ buffer. EGL has no way to specify or query whether or not
+ ancillary buffers are preserved, and applications should not
+ rely on this behavior.
+ </para>
+ <para>
+ <function>eglSwapBuffers</function> performs an implicit
+ flush operation on the context (<function>glFlush</function>
+ for an OpenGL ES or OpenGL context,
+ <function>vgFlush</function> for an OpenVG context) bound to
+ <parameter>surface</parameter> before swapping. Subsequent
+ client API commands may be issued on that context
+ immediately after calling
+ <function>eglSwapBuffers</function>, but are not executed
+ until the buffer exchange is completed.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="resize"><title>Native Window Resizing</title>
+ <para>
+ If the native window corresponding to
+ <parameter>surface</parameter> has been resized prior to the
+ swap, <parameter>surface</parameter> must be resized to match.
+ <parameter>surface</parameter> will normally be resized by the
+ EGL implementation at the time the native window is resized. If
+ the implementation cannot do this transparently to the client,
+ then <function>eglSwapBuffers</function> must detect the change
+ and resize surface prior to copying its pixels to the native
+ window. If <parameter>surface</parameter> shrinks as a result of
+ resizing, some rendered pixels are lost. If
+ <parameter>surface</parameter> grows, the newly allocated buffer
+ contents are undefined. The resizing behavior described here
+ only maintains consistency of EGL surfaces and native windows;
+ clients are still responsible for detecting window size changes
+ (using platform-specific means) and changing their viewport and
+ scissor regions accordingly.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ Attribute <constant>EGL_SWAP_BEHAVIOR</constant> is supported
+ only if the EGL version is 1.2 or greater. In earlier versions,
+ behavior is as though the attribute exists, and always has the
+ value <constant>EGL_BUFFER_DESTROYED</constant>.
+ </para>
+ <para>
+ The EGL 1.4 specification was updated to acknowledge that
+ ancillary buffers are not necessarily preserved after a swap,
+ and that the <constant>EGL_SWAP_BEHAVIOR</constant> attribute
+ applies only to the color buffer. This change in the
+ specification acknowledged the behavior of many shipping
+ implementations, and is not intended to result in behavior
+ changes in any existing implementation.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if swapping of the
+ surface buffers fails, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ <para>
+ <constant>EGL_NOT_INITIALIZED</constant> is generated if
+ <parameter>display</parameter> has not been initialized.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if
+ <parameter>surface</parameter> is not an EGL drawing surface.
+ </para>
+ <para>
+ <constant>EGL_CONTEXT_LOST</constant> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <function>glFlush</function>,
+ <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>,
+ <function>vgFlush</function>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglSwapInterval.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglSwapInterval.xml
new file mode 100644
index 0000000..a6add82
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglSwapInterval.xml
@@ -0,0 +1,94 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglSwapInterval">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglSwapInterval</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglSwapInterval</refname>
+ <refpurpose>
+ specifies the minimum number of video frame periods
+ per buffer swap for the window associated with the current context.
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglSwapInterval</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLint <parameter>interval</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>interval</parameter></term>
+ <listitem>
+ <para>
+ Specifies the minimum number of video frames that are displayed before
+ a buffer swap will occur.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ The interval takes effect when <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> is
+ first called subsequent to the <function>eglSwapInterval</function> call.
+ </para>
+ <para>
+ The <parameter>interval</parameter> specified by the function applies to the draw surface
+ bound to the context that is current on the calling thread.
+ </para>
+ <para>
+ If <parameter>interval</parameter> is set to a value of <constant>0</constant>, buffer swaps are not synchronized to a
+ video frame, and the swap happens as soon as the render is complete. interval
+ is silently clamped to minimum and maximum implementation dependent
+ valuesbefore being stored; these values are defined by <type>EGLConfig</type> attributes
+ <constant>EGL_MIN_SWAP_INTERVAL</constant> and <constant>EGL_MAX_SWAP_INTERVAL</constant> respectively.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ The swap interval has no effect on <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ The default swap interval is 1.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned on failure, <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_CONTEXT</constant> is generated if there is no current context
+ on the calling thread.
+ </para>
+ <para>
+ <constant>EGL_BAD_SURFACE</constant> is generated if there is no surface
+ bound to the current context.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglTerminate.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglTerminate.xml
new file mode 100644
index 0000000..70dd0c3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglTerminate.xml
@@ -0,0 +1,73 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglTerminate">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglTerminate</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglTerminate</refname>
+ <refpurpose>
+ terminate an <acronym>EGL</acronym> display connection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglTerminate</function></funcdef>
+ <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem>
+ <para>
+ Specifies the EGL display connection to terminate.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglTerminate</function> releases resources associated with
+ an EGL display connection. Termination marks all EGL resources associated
+ with the EGL display connection for deletion. If contexts or surfaces
+ associated with <parameter>display</parameter> is current to any thread,
+ they are not released until they are no longer current as a result of
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ Terminating an already terminated EGL display connection has no effect.
+ A terminated display may be re-initialized by calling
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
+ again.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglTerminate</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_DISPLAY</constant> is generated if
+ <parameter>display</parameter> is not an EGL display connection.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglWaitClient.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitClient.xml
new file mode 100644
index 0000000..a77cf00
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitClient.xml
@@ -0,0 +1,84 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitClient">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglWaitClient</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitClient</refname>
+ <refpurpose>
+ Complete client API execution prior to subsequent native
+ rendering calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitClient</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ All rendering calls for the currently bound context, for the
+ current rendering API, made prior to
+ <function>eglWaitClient</function> are guaranteed to be
+ executed before native rendering calls made after
+ <function>eglWaitClient</function>. The same result can be
+ achieved using client API-specific commands such as
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>
+ or
+ <citerefentry><refentrytitle>vgFinish</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is ignored if there is no
+ current EGL rendering context for the current rendering API.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglWaitClient</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ If there is no current context for the current rendering
+ API, the function has no effect but still returns
+ <constant>EGL_TRUE</constant>.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitClient</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is a generalized version
+ of <function>eglWaitGL</function>, supporting multiple
+ client APIs.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>vgFinish</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglWaitGL.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitGL.xml
new file mode 100644
index 0000000..033fd8b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitGL.xml
@@ -0,0 +1,82 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitGL">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglWaitGL</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitGL</refname>
+ <refpurpose>
+ Complete GL execution prior to subsequent native rendering
+ calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitGL</function></funcdef>
+ <void/>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ All OpenGL ES rendering calls for the currently bound OpenGL
+ ES context made prior to <function>eglWaitGL</function> are
+ guaranteed to be executed before native rendering calls made
+ after <function>eglWaitGL</function>. The same result can be
+ achieved using
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>.
+ </para>
+ <para>
+ <function>eglWaitGL</function> is ignored if there is no
+ current EGL rendering context for OpenGL ES.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitClient</function> is supported only if the
+ EGL version is 1.2 or greater.
+ </para>
+ <para>
+ <function>eglWaitClient</function> is a generalized version
+ of <function>eglWaitGL</function>, supporting multiple
+ client APIs. For backwards compatibility,
+ <function>eglWaitGL</function> continues to be supported and
+ is equivalent to the series of commands
+ </para>
+ <programlisting>
+ EGLenum api = <function>eglQueryAPI</function>();
+ <function>eglBindAPI</function>(<constant>EGL_OPENGL_ES_API</constant>);
+ <function>eglWaitClient</function>();
+ <function>eglBindAPI</function>(api);
+ </programlisting>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_FALSE</constant> is returned if
+ <function>eglWaitGL</function> fails,
+ <constant>EGL_TRUE</constant> otherwise.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>
+ <citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglWaitNative.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitNative.xml
new file mode 100644
index 0000000..f4c4595
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitNative.xml
@@ -0,0 +1,73 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitNative">
+ <info>
+ <copyright>
+ <year>2003-2014</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglWaitNative</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitNative</refname>
+ <refpurpose>
+ complete native execution prior to subsequent GL rendering calls
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitNative</function></funcdef>
+ <paramdef>EGLint <parameter>engine</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>engine</parameter></term>
+ <listitem>
+ <para>
+ Specifies a particular marking engine to be waited on.
+ Must be <constant>EGL_CORE_NATIVE_ENGINE</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ Native rendering calls made prior to <function>eglWaitNative</function>
+ are guaranteed to be executed before GL rendering calls made after
+ <function>eglWaitNative</function>.
+ </para>
+ <para>
+ <function>eglWaitNative</function>
+ is ignored if there is no current
+ <acronym>EGL</acronym>
+ rendering context.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <constant>EGL_BAD_PARAMETER</constant> is generated if
+ <parameter>engine</parameter> is not a recognized marking engine.
+ </para>
+ <para>
+ <constant>EGL_BAD_CURRENT_SURFACE</constant>
+ is generated if the surface associated with the current context has a
+ native window or pixmap, and that window or pixmap is no longer valid.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/eglWaitSync.xml b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitSync.xml
new file mode 100644
index 0000000..57d5651
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/eglWaitSync.xml
@@ -0,0 +1,134 @@
+<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitSync">
+ <info>
+ <copyright>
+ <year>2018</year>
+ <holder>The Khronos Group Inc.</holder>
+ </copyright>
+ </info>
+ <refmeta>
+ <refentrytitle>eglWaitSync</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>eglWaitSync</refname>
+ <refpurpose>
+ Wait in the server for a sync object to be signalled
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>EGLBoolean <function>eglWaitSync</function></funcdef>
+ <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
+ <paramdef>EGLSync <parameter>sync</parameter></paramdef>
+ <paramdef>EGLint <parameter>flags</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <refsect1 xml:id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>display</parameter></term>
+ <listitem><para>
+ Specifies the <acronym>EGL</acronym> display connection.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>sync</parameter></term>
+ <listitem><para>
+ Specifies the sync object to wait on.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>flags</parameter></term>
+ <listitem><para>
+ Specifies flags controlling wait behavior.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 xml:id="description"><title>Description</title>
+ <para>
+ <function>eglWaitSync</function> is similar to
+ <function>eglClientWaitSync</function>, but instead of blocking
+ and not returning to the application until
+ <parameter>sync</parameter> is signaled,
+ <function>eglWaitSync</function> returns immediately. On
+ success, <constant>EGL_TRUE</constant> is returned, and the
+ server for the client API context will block until
+ <parameter>sync</parameter> is signaled.
+ </para>
+ <para>
+ Note: <function>eglWaitSync</function> allows applications to
+ continue to queue commands from the application in anticipation
+ of the sync being signaled, potentially increasing parallelism
+ between application, client API server code, and the GPU. The
+ server only blocks execution of commands for the specific
+ context on which <function>eglWaitSync</function> was issued;
+ other contexts implemented by the same server are not affected..
+ </para>
+ <para>
+ <parameter>sync</parameter> has the same meaning as for
+ <function>eglClientWaitSync</function>.
+ </para>
+ <para>
+ <parameter>flags</parameter> must be 0.
+ </para>
+ <para>
+ <function>eglWaitSync</function> requires support from the bound
+ client API, and will not succeed unless the same client API
+ properties described for creation of fence syncs in
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>
+ are satisfied.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="errors"><title>Errors</title>
+ <para>
+ <function>eglWaitSync</function> returns
+ <constant>EGL_FALSE</constant> on failure, and does not cause
+ the server for the client API context to block.
+ </para>
+ <para>
+ If the current context for the currently bound client API does
+ not support server waits, an <constant>EGL_BAD_MATCH</constant>
+ error is generated.
+ </para>
+ <para>
+ If no context is current for the currently bound client API
+ (i.e., <function>eglGetCurrentContext</function> returns
+ <constant>EGL_NO_CONTEXT</constant>), an
+ <constant>EGL_BAD_MATCH</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>display</parameter> does not match the
+ <type>EGLDisplay</type> passed to
+ <function>eglCreateSync</function> when
+ <parameter>sync</parameter> was created, the behavior is
+ undefined.
+ </para>
+ <para>
+ If <parameter>sync</parameter> is not a valid sync object for
+ <parameter>display</parameter>, an
+ <constant>EGL_BAD_PARAMETER</constant> error is generated.
+ </para>
+ <para>
+ If <parameter>flags</parameter> is not 0, an
+ <constant>EGL_BAD_PARAMETER</constant> error is generated.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="notes"><title>Notes</title>
+ <para>
+ <function>eglWaitSync</function> is available only if the EGL
+ version is 1.5 or greater.
+ </para>
+ </refsect1>
+ <refsect1 xml:id="seealso"><title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>eglClientWaitSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
+ <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>
+ </para>
+ </refsect1>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
+</refentry>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/headBackground.jpg b/glew/auto/EGL-Registry/sdk/docs/man/headBackground.jpg
new file mode 100644
index 0000000..9ae0c2f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/headBackground.jpg
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/EGL_300.png b/glew/auto/EGL-Registry/sdk/docs/man/html/EGL_300.png
new file mode 100644
index 0000000..7c20efb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/EGL_300.png
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/KhronosLogo.jpg b/glew/auto/EGL-Registry/sdk/docs/man/html/KhronosLogo.jpg
new file mode 100644
index 0000000..f8a05f6
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/KhronosLogo.jpg
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/accord.js b/glew/auto/EGL-Registry/sdk/docs/man/html/accord.js
new file mode 100644
index 0000000..240489e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/accord.js
@@ -0,0 +1,58 @@
+<!-- Javascript for accordion menus, included by index.php, shared with OpenCL man pages -->
+<script type="text/javascript">
+<!--
+var temp, temp2, cookieArray, cookieArray2, cookieCount;
+function initiate(){
+ cookieCount=0;
+ if(document.cookie){
+ cookieArray=document.cookie.split(";");
+ cookieArray2=new Array();
+ for(i in cookieArray){
+ cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")]=cookieArray[i].split("=")[1].replace(/ /g,"");
+ }
+ }
+ cookieArray=(document.cookie.indexOf("state=")>=0)?cookieArray2["state"].split(","):new Array();
+ temp=document.getElementById("containerul");
+ for(var o=0;o<temp.getElementsByTagName("li").length;o++){
+ if(temp.getElementsByTagName("li")[o].getElementsByTagName("ul").length>0){
+ temp2 = document.createElement("span");
+ temp2.className = "symbols";
+ temp2.style.backgroundImage = (cookieArray.length>0)?((cookieArray[cookieCount]=="true")?"url(bullets-contract.gif)":"url(bullets-expand.gif)"):"url(bullets-expand.gif)";
+ temp2.onmousedown=function(){
+ showhide(this.parentNode);
+ writeCookie();
+ }
+ temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild)
+ temp.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
+ if(cookieArray[cookieCount]=="true"){
+ showhide(temp.getElementsByTagName("li")[o]);
+ }
+ cookieCount++;
+ }
+ else{
+ temp2 = document.createElement("span");
+ temp2.className = "symbols";
+ temp2.style.backgroundImage = "url(bullets-end.gif)";
+ temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild);
+ }
+ }
+}
+
+function showhide(el){
+ el.getElementsByTagName("ul")[0].style.display=(el.getElementsByTagName("ul")[0].style.display=="block")?"none":"block";
+ el.getElementsByTagName("span")[0].style.backgroundImage=(el.getElementsByTagName("ul")[0].style.display=="block")?"url(bullets-contract.gif)":"url(bullets-expand.gif)";
+}
+
+function writeCookie(){ // Runs through the menu and puts the "states" of each nested list into an array, the array is then joined together and assigned to a cookie.
+ cookieArray=new Array()
+ for(var q=0;q<temp.getElementsByTagName("li").length;q++){
+ if(temp.getElementsByTagName("li")[q].childNodes.length>0){
+ if(temp.getElementsByTagName("li")[q].childNodes[0].nodeName=="SPAN" && temp.getElementsByTagName("li")[q].getElementsByTagName("ul").length>0){
+ cookieArray[cookieArray.length]=(temp.getElementsByTagName("li")[q].getElementsByTagName("ul")[0].style.display=="block");
+ }
+ }
+ }
+ document.cookie="state="+cookieArray.join(",")+";expires="+new Date(new Date().getTime() + 365*24*60*60*1000).toGMTString();
+}
+//-->
+</script>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-contract.gif b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-contract.gif
new file mode 100644
index 0000000..bb1e955
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-contract.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-end.gif b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-end.gif
new file mode 100644
index 0000000..abd000e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-end.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-expand.gif b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-expand.gif
new file mode 100644
index 0000000..e2dde60
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/bullets-expand.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindAPI.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindAPI.xhtml
new file mode 100644
index 0000000..dbf34c3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindAPI.xhtml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglBindAPI - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglBindAPI">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglBindAPI — Set the current rendering API</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglBindAPI</strong>(</code>
+ </td>
+ <td>EGLenum <var class="pdparam">api</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>api</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the client API to bind, one of
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, or
+ <code class="constant">EGL_OPENVG_API</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglBindAPI</code> defines the current
+ rendering API for EGL in the thread it is called from. The
+ current rendering API is one of the client rendering APIs
+ supported by the EGL implementation, and affects the
+ behavior of other EGL commands including
+ <code class="function">eglCreateContext</code>,
+ <code class="function">eglGetCurrentContext</code>,
+ <code class="function">eglGetCurrentDisplay</code>,
+ <code class="function">eglGetCurrentSurface</code>,
+ <code class="function">eglMakeCurrent</code>,
+ <code class="function">eglSwapInterval</code>,
+ <code class="function">eglWaitClient</code>, and
+ <code class="function">eglWaitNative</code>.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENGL_API</code>, the current rendering
+ API is set to the OpenGL API.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENGL_ES_API</code>, the current
+ rendering API is set to the OpenGL ES API.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENVG_API</code>, the current rendering
+ API is set to the OpenVG API.
+ </p>
+ <p>
+ If an error occurs, the current rendering API is unchanged.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglBindAPI</code> and the corresponding
+ <code class="constant">EGL_OPENGL_ES_API</code> and
+ <code class="constant">EGL_OPENVG_API</code>
+ <em class="parameter"><code>api</code></em> parameters are supported only if
+ the EGL version is 1.2 or greater. The
+ <code class="constant">EGL_OPENGL_API</code> parameter is supported
+ only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ The initial value of the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <code class="constant">EGL_NONE</code> (however,
+ <code class="constant">EGL_NONE</code> is not a valid
+ <em class="parameter"><code>api</code></em> parameter to
+ <code class="function">eglBindAPI</code>).
+ </p>
+ <p>
+ The current rendering API can be queried by calling
+ <code class="function">eglQueryAPI</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>api</code></em> is not one of the accepted
+ tokens, or if the specified client API is not supported by
+ the EGL implementation.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQueryAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryAPI</span></span></a>,
+ <a class="citerefentry" href="eglSwapInterval.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindTexImage.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindTexImage.xhtml
new file mode 100644
index 0000000..a3c6dbb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglBindTexImage.xhtml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglBindTexImage - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglBindTexImage">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglBindTexImage —
+ Defines a two-dimensional texture image
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglBindTexImage</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">buffer</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the texture image data.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ The texture image consists of the image data in <em class="parameter"><code>buffer</code></em> for the specified surface, and need not be copied.
+ </p>
+ <p>
+ The texture target, the texture format and the size of the texture components are derived from
+ attributes of the specified surface, which must be a pbuffer supporting one of the
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code> or <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code> attributes.
+ </p>
+ <p>
+ The pbuffer attribute <code class="constant">EGL_TEXTURE_FORMAT</code> determines the base internal format
+ of the texture.
+ </p>
+ <p>
+ The texture target is derived from the <code class="constant">EGL_TEXTURE_TARGET</code> attribute of surface.
+ If the attribute value is <code class="constant">EGL_TEXTURE_2D</code>, then <em class="parameter"><code>buffer</code></em> defines a texture for
+ the two-dimensional texture object which is bound to the current context (hereafter
+ referred to as the current texture object).
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> and <em class="parameter"><code>surface</code></em> are the display and surface for the calling thread's current
+ context, <code class="function">eglBindTexImage</code> performs an implicit <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>.
+ For other surfaces, <code class="function">eglBindTexImage</code> waits for all effects from previously issued OpenGL ES commands
+ drawing to the surface to complete before defining the texture image, as
+ though <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a> were called on the last context to which that surface were bound.
+ </p>
+ <p>
+ After <code class="function">eglBindTexImage</code> is called, the specified surface is no longer available
+ for reading or writing. Any read operation, such as <a class="citerefentry" href="glReadPixels.xhtml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a> or
+ <a class="citerefentry" href="eglCopyBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>, which reads values from any of the surface's color buffers or ancillary
+ buffers will produce indeterminate results. In addition, draw operations that are
+ done to the surface before its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context and thread
+ then rendering commands will be processed and the context state will be updated,
+ but the surface may or may not be written.
+ </p>
+ <p>
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling <code class="function">eglBindTexImage</code>:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ The <code class="constant">EGL_MIPMAP_TEXTURE</code> attribute of the pbuffer being bound is
+ <code class="constant">EGL_TRUE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The OpenGL ES texture parameter <code class="constant">GL_GENERATE_MIPMAP</code> is <code class="constant">GL_TRUE</code> for
+ the currently bound texture.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The value of the <code class="constant">EGL_MIPMAP_LEVEL</code> attribute of the pbuffer being bound is
+ equal to the value of the texture parameter <code class="constant">GL_TEXTURE_BASE_LEVEL</code>.
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a> has no effect if it is
+ called on a bound surface.
+ </p>
+ <p>
+ Any existing images associated with the different mipmap levels of the texture object
+ are freed (it is as if <a class="citerefentry" href="glTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">glTexImage</span></span></a>
+ was called with an image of zero width).
+ </p>
+ <p>
+ The color buffer is bound to a texture object. If the texture object is
+ shared between contexts, then the color buffer is also shared. If a texture object is
+ deleted before <a class="citerefentry" href="eglReleaseTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglReleaseTexImage</span></span></a> is called, then the color buffer is released and
+ the surface is made available for reading and writing.
+ </p>
+ <p>
+ It is not an error to call <a class="citerefentry" href="glTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a> or
+ <a class="citerefentry" href="glCopyTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a> to replace an
+ image of a texture object that has a color buffer bound to it. However, these calls
+ will cause the color buffer to be released back to the surface and new memory will
+ be allocated for the texture. Note that the color buffer is released even if the image
+ that is being defined is a mipmap level that was not defined by the color buffer.
+ </p>
+ <p>
+ <code class="function">eglBindTexImage</code> is ignored if there is no current rendering context.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is already bound to a texture.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ surface attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ set to <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is not a valid buffer
+ (currently only <code class="constant">EGL_BACK_BUFFER</code> may be
+ specified).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface, or is
+ not a pbuffer surface supporting texture binding.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglReleaseTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglReleaseTexImage</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglChooseConfig.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglChooseConfig.xhtml
new file mode 100644
index 0000000..ffd6b64
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglChooseConfig.xhtml
@@ -0,0 +1,1150 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglChooseConfig - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglChooseConfig">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglChooseConfig —
+ return a list of EGL frame buffer configurations that match specified attributes
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglChooseConfig</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig * <var class="pdparam">configs</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">config_size</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">num_config</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies attributes required to match by configs.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>configs</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns an array of frame buffer configurations.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config_size</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the size of the array of frame buffer configurations.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>num_config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of frame buffer configurations returned.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglChooseConfig</code> returns in
+ <em class="parameter"><code>configs</code></em> a list of all
+ <abbr class="acronym">EGL</abbr> frame buffer configurations that
+ match the attributes specified in
+ <em class="parameter"><code>attrib_list</code></em>. The returned
+ <span class="type">EGLConfig</span>s can be used in any
+ <abbr class="acronym">EGL</abbr> function that requires an
+ <abbr class="acronym">EGL</abbr> frame buffer configuration.
+ </p>
+ <p>
+ If <em class="parameter"><code>configs</code></em> is not
+ <code class="constant">NULL</code>, up to
+ <em class="parameter"><code>config_size</code></em> configs will be returned
+ in the array pointed to by <em class="parameter"><code>configs</code></em>.
+ The number of configs actually returned will be returned in
+ *<em class="parameter"><code>num_config</code></em>.
+ </p>
+ <p>
+ If <em class="parameter"><code>configs</code></em> is
+ <code class="constant">NULL</code>, no configs will be returned in
+ <em class="parameter"><code>configs</code></em>. Instead, the total number of
+ configs matching <em class="parameter"><code>attrib_list</code></em> will be
+ returned in *<em class="parameter"><code>num_config</code></em>. In this case
+ <em class="parameter"><code>config_size</code></em> is ignored. This form of
+ <code class="function">eglChooseConfig</code> is used to determine
+ the number of matching frame buffer configurations, followed
+ by allocating an array of <span class="type">EGLConfig</span> to pass
+ into another call to <code class="function">eglChooseConfig</code>
+ with all other parameters unchanged.
+ </p>
+ <p>
+ All attributes in <em class="parameter"><code>attrib_list</code></em>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value. The list is terminated with
+ <code class="constant">EGL_NONE</code>. If an attribute is not
+ specified in <em class="parameter"><code>attrib_list</code></em> then the
+ default value (see below) is used (and the attribute is said
+ to be specified implicitly). For example, if
+ <code class="constant">EGL_DEPTH_SIZE</code> is not specified then it
+ is assumed to be zero. For some attributes, the default is
+ <code class="constant">EGL_DONT_CARE</code> meaning that any value is
+ OK for this attribute, so the attribute will not be checked.
+ </p>
+ <p>
+ Attributes are matched in an attribute-specific manner. Some
+ of the attributes, such as <code class="constant">EGL_LEVEL</code>,
+ must match the specified value exactly. Others, such as,
+ <code class="constant">EGL_RED_SIZE</code> must meet or exceed the
+ specified minimum values. If more than one EGL frame buffer
+ configuration matching all attributes is found, then a list
+ of configurations, sorted according to the ``best'' match
+ criteria, is returned. The match criteria for each attribute
+ and the exact sorting order is defined below.
+ </p>
+ <p>
+ For the bitmask attributes
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code>, only the nonzero bits
+ of the mask are considered when matching. Any bits that are
+ zero in the specified bitmask attribute value may be either
+ zero or one in the resulting config's attribute value.
+ </p>
+ <p>
+ Attributes which may appear in
+ <em class="parameter"><code>attrib_list</code></em>, and their descriptions
+ and allowed values, are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired alpha mask buffer size, in
+ bits. The smallest alpha mask buffers of at least
+ the specified size are preferred. The default value
+ is zero.
+ </p>
+ <p>
+ The alpha mask buffer is used only by OpenVG.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the alpha component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest alpha component size
+ are preferred. Otherwise, color buffers with the
+ largest alpha component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGB texture
+ will be considered. Currently only frame buffer
+ configurations that support pbuffers allow this. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGBA
+ texture will be considered. Currently only frame
+ buffer configurations that support pbuffers allow
+ this. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BLUE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the blue component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest blue component size
+ are preferred. Otherwise, color buffers with the
+ largest blue component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BUFFER_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired color buffer size, in bits.
+ The smallest color buffers of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ <p>
+ The color buffer size is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>, and does not
+ include any padding bits which may be present in the
+ pixel format. It is usually preferable to specify
+ desired sizes for these color components
+ individually.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_RGB_BUFFER</code> or
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_RGB_BUFFER</code> indicates
+ an RGB color buffer; in this case,
+ attributes <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code> and
+ <code class="constant">EGL_BLUE_SIZE</code> must be non-zero, and
+ <code class="constant">EGL_LUMINANCE_SIZE</code> must be zero.
+ </p>
+ <p>
+ <code class="constant">EGL_LUMINANCE_BUFFER</code> indicates a luminance color
+ buffer. In this case <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code> must be zero, and
+ <code class="constant">EGL_LUMINANCE_SIZE</code> must be non-zero.
+ </p>
+ <p>
+ For both RGB and luminance color buffers,
+ <code class="constant">EGL_ALPHA_SIZE</code> may be zero or
+ non-zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_CAVEAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, or
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
+ </p>
+ <p>
+ If <code class="constant">EGL_DONT_CARE</code> is specified,
+ then configs are not matched for this attribute. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ If <code class="constant">EGL_NONE</code> is specified, then
+ configs are matched for this attribute, but only
+ configs with no caveats (neither
+ <code class="constant">EGL_SLOW_CONFIG</code> or
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>) will
+ be considered.
+ </p>
+ <p>
+ If <code class="constant">EGL_SLOW_CONFIG</code> is
+ specified, then only slow configs configurations
+ will be considered. The meaning of``slow'' is
+ implementation-dependent, but typically indicates a
+ non-hardware-accelerated (software) implementation.
+ </p>
+ <p>
+ If <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
+ specified, then only configs supporting
+ non-conformant OpenGL ES contexts will be
+ considered.
+ </p>
+ <p>
+ If the EGL version is 1.3 or later, caveat
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
+ obsolete, since the same information can be
+ specified via the
+ <code class="constant">EGL_CONFORMANT</code> attribute on a
+ per-client-API basis, not just for OpenGL ES.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a valid integer ID that
+ indicates the desired EGL frame buffer
+ configuration. When a
+ <code class="constant">EGL_CONFIG_ID</code> is specified, all
+ other attributes are ignored. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ The meaning of config IDs is
+ implementation-dependent. They are used only to
+ uniquely identify different frame buffer
+ configurations.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFORMANT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which types
+ of client API contexts created with respect to the
+ frame buffer configuration config must pass the
+ required conformance tests for that API. Mask bits
+ include:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_ES_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL ES 1.0
+ and/or 1.1 contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL ES 2.0 contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENVG_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenVG contexts.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ For example, if the bitmask is set to
+ <code class="constant">EGL_OPENGL_ES_BIT</code>, only frame
+ buffer configurations that support creating
+ conformant OpenGL ES contexts will match. The
+ default value is zero.
+ </p>
+ <p>
+ Most EGLConfigs should be conformant for all
+ supported client APIs, and it is rarely desirable to
+ select a nonconformant config. Conformance
+ requirements limit the number of non-conformant
+ configs that an implementation can define.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_DEPTH_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired depth buffer size, in bits.
+ The smallest depth buffers of at least the specified
+ size is preferred. If the desired size is zero,
+ frame buffer configurations with no depth buffer are
+ preferred. The default value is zero.
+ </p>
+ <p>
+ The depth buffer is used only by OpenGL and OpenGL
+ ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GREEN_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the green component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest green component size
+ are preferred. Otherwise, color buffers with the
+ largest green component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer buffer level
+ specification. This specification is honored
+ exactly. Buffer level zero corresponds to the
+ default frame buffer of the display. Buffer level
+ one is the first overlay frame buffer, level two the
+ second overlay frame buffer, and so on. Negative
+ buffer levels correspond to underlay frame buffers.
+ The default value is zero.
+ </p>
+ <p>
+ Most platforms do not support buffer levels other than
+ zero. The behavior of windows placed in overlay and
+ underlay planes depends on the underlying platform.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LUMINANCE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the luminance
+ component of the color buffer, in bits. If this
+ value is zero, color buffers with the smallest
+ luminance component size are preferred. Otherwise,
+ color buffers with the largest luminance component
+ of at least the specified size are preferred. The
+ default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the handle of a valid native
+ pixmap, cast to <span class="type">EGLint</span>, or
+ <code class="constant">EGL_NONE</code>. If the value is not
+ <code class="constant">EGL_NONE</code>, only configs which
+ support creating pixmap surfaces with this pixmap
+ using
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>
+ will match this attribute. If the value is
+ <code class="constant">EGL_NONE</code>, then configs are not
+ matched for this attribute. The default value is
+ <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> was
+ introduced due to the difficulty of determining an
+ <span class="type">EGLConfig</span> compatibile with a native
+ pixmap using only color component sizes.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that allow native
+ rendering into the surface will be considered. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a integer that indicates the
+ maximum value that can be passed to
+ <a class="citerefentry" href="eglSwapInterval.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a integer that indicates the
+ minimum value that can be passed to eglSwapInterval.
+ The default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RED_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the red component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest red component size
+ are preferred. Otherwise, color buffers with the
+ largest red component of at least the specified size
+ are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLE_BUFFERS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the minimum acceptable number of
+ multisample buffers. Configurations with the
+ smallest number of multisample buffers that meet or
+ exceed this minimum number are preferred. Currently
+ operation with more than one multisample buffer is
+ undefined, so only values of zero or one will
+ produce a match. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLES</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the minimum number of
+ samples required in multisample buffers.
+ Configurations with the smallest number of
+ samples that meet or exceed the specified
+ minimum number are preferred. Note that it is
+ possible for color samples in the multisample
+ buffer to have fewer bits than colors in the
+ main color buffers. However, multisampled
+ colors maintain at least as much color
+ resolution in aggregate as the main color
+ buffers.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_STENCIL_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired stencil buffer size, in bits.
+ The smallest stencil buffers of at least the
+ specified size are preferred. If the desired size is
+ zero, frame buffer configurations with no stencil
+ buffer are preferred. The default value is zero.
+ </p>
+ <p>
+ The stencil buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDERABLE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which types
+ of client API contexts the frame buffer
+ configuration must support creating with
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>).
+ Mask bits are the same as for attribute
+ <code class="constant">EGL_CONFORMANT</code>. The default
+ value is <code class="constant">EGL_OPENGL_ES_BIT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SURFACE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which EGL
+ surface types and capabilities the frame buffer
+ configuration must support. Mask bits include:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying box filtered
+ multisample resolve behavior with
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PBUFFER_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating pixel buffer surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PIXMAP_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating pixmap surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows setting swap behavior for
+ color buffers with
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying OpenVG rendering
+ with premultiplied alpha values at surface
+ creation time (see
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ and
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying OpenVG rendering in
+ a linear colorspace at surface creation time
+ (see
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ and
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WINDOW_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating window surfaces.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ For example, if the bitmask is set to
+ <code class="constant">EGL_WINDOW_BIT</code> |
+ <code class="constant">EGL_PIXMAP_BIT</code>,
+ only frame buffer configurations that support both
+ windows and pixmaps will be considered. The default
+ value is <code class="constant">EGL_WINDOW_BIT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_NONE</code> or
+ <code class="constant">EGL_TRANSPARENT_RGB</code>. If
+ <code class="constant">EGL_NONE</code> is specified, then
+ only opaque frame buffer configurations will be
+ considered. If
+ <code class="constant">EGL_TRANSPARENT_RGB</code> is
+ specified, then only transparent frame buffer
+ configurations will be considered. The default value
+ is <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ Most implementations support only opaque frame
+ buffer configurations.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent red value. The value must be between
+ zero and the maximum color buffer value for red.
+ Only frame buffer configurations that use the
+ specified transparent red value will be considered.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent green value. The value must be between
+ zero and the maximum color buffer value for green.
+ Only frame buffer configurations that use the
+ specified transparent green value will be
+ considered. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent blue value. The value must be between
+ zero and the maximum color buffer value for blue.
+ Only frame buffer configurations that use the
+ specified transparent blue value will be considered.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ When more than one EGL frame buffer configuration matches
+ the specified attributes, a list of matching configurations
+ is returned. The list is sorted according to the following
+ precedence rules, which are applied in ascending order
+ (i.e., configurations that are considered equal by a lower
+ numbered rule are sorted by the higher numbered rule):
+ </p>
+ <div class="orderedlist">
+ <ol class="orderedlist" type="1">
+ <li class="listitem">
+ <p>
+ Special: by <code class="constant">EGL_CONFIG_CAVEAT</code>,
+ where the precedence is <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, and
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: by <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ where the precedence is
+ <code class="constant">EGL_RGB_BUFFER</code>,
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: by larger total number of color bits (for an
+ RGB color buffer, this is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>; for a luminance
+ color buffer, the sum of
+ <code class="constant">EGL_LUMINANCE_SIZE</code> and
+ <code class="constant">EGL_ALPHA_SIZE</code>). If the requested
+ number of bits in <em class="parameter"><code>attrib_list</code></em> is
+ <code class="constant">0</code> or
+ <code class="constant">EGL_DONT_CARE</code> for a particular
+ color component, then the number of bits for that
+ component is not considered.
+ </p>
+ <p>
+ This sort rule places configs with deeper color buffers
+ before configs with shallower color buffers, which may
+ be counterintuitive.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_BUFFER_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_SAMPLE_BUFFERS</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_SAMPLES</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_DEPTH_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_STENCIL_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_ALPHA_MASK_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
+ (the actual sort order is implementation-defined,
+ depending on the meaning of native visual types).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_CONFIG_ID</code> (this is
+ always the last sorting rule, and guarantees a unique
+ ordering).
+ </p>
+ </li>
+ </ol>
+ </div>
+ <p>
+ <span class="type">EGLConfigs</span> are not sorted with respect to the
+ attributes <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>,
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>,
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_LEVEL</code>,
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>,
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>,
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>,
+ <code class="constant">EGL_SURFACE_TYPE</code>,
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>,
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>,
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>, and
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="examples">
+ <h2>Examples</h2>
+ <p>
+ The following example specifies a frame buffer configuration
+ in the normal frame buffer (not an overlay or underlay). The
+ returned frame buffer configuration supports a color buffer
+ with at least 4 bits each of red, green and blue, and
+ possibly no alpha bits. The code shown in the example may or
+ may not have a depth buffer, or a stencil buffer.
+ </p>
+ <pre class="programlisting">EGLint const attrib_list[] = {
+ EGL_RED_SIZE, 4,
+ EGL_GREEN_SIZE, 4,
+ EGL_BLUE_SIZE, 4,
+ EGL_NONE
+};</pre>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bit
+ <code class="constant">EGL_OPENGL_BIT</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code> bits
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code> and
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> are
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bit
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code> bits
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> and
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code> are
+ supported only if the EGL version is 1.3 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ <code class="constant">EGL_LUMINANCE_SIZE</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, and
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bits
+ <code class="constant">EGL_OPENGL_ES_BIT</code> and
+ <code class="constant">EGL_OPENVG_BIT</code> are supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If OpenGL or OpenGL ES rendering is supported for a
+ luminance color buffer, it is treated as RGB rendering with
+ the value of <code class="constant">GL_RED_BITS</code> equal to
+ <code class="constant">EGL_LUMINANCE_SIZE</code> and the values of
+ <code class="constant">GL_GREEN_BITS</code> and
+ <code class="constant">GL_BLUE_BITS</code> equal to zero. The red
+ component of fragments is written to the luminance channel
+ of the color buffer while the green and blue components are
+ discarded.
+ </p>
+ <p>
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ and
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ can be used to implement selection algorithms other than the
+ generic one implemented by
+ <code class="function">eglChooseConfig</code>. Call
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ to retrieve all the frame buffer configurations, or
+ alternatively, all the frame buffer configurations with a
+ particular set of attributes. Next call
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ to retrieve additional attributes for the frame buffer
+ configurations and then select between them.
+ </p>
+ <p>
+ EGL implementors are strongly discouraged, but not
+ proscribed, from changing the selection algorithm used by
+ <code class="function">eglChooseConfig</code>. Therefore, selections
+ may change from release to release of the client-side
+ library.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>configs</code></em> and
+ <em class="parameter"><code>num_config</code></em> are not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute_list</code></em> contains an invalid frame buffer
+ configuration attribute or an
+ attribute value that is unrecognized or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSwapInterval.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglClientWaitSync.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglClientWaitSync.xhtml
new file mode 100644
index 0000000..daccb25
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglClientWaitSync.xhtml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglClientWaitSync - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglClientWaitSync">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglClientWaitSync —
+ Wait in the client for a sync object to be signalled
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLint <strong class="fsfunc">eglClientWaitSync</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSync <var class="pdparam">sync</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">flags</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLTime <var class="pdparam">timeout</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>sync</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the sync object to wait on.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>flags</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies flags controlling wait behavior.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>timeout</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies wait timeout interval.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglClientWaitSync</code> blocks the calling thread
+ until the specified sync object <em class="parameter"><code>sync</code></em> is
+ signaled, or until <em class="parameter"><code>timeout</code></em> nanoseconds
+ have passed.
+ </p>
+ <p>
+ More than one <code class="function">eglClientWaitSync</code> may be
+ outstanding on the same <em class="parameter"><code>sync</code></em> at any given
+ time. When there are multiple threads blocked on the same
+ <em class="parameter"><code>sync</code></em> and the sync object is signaled, all
+ such threads are released, but the order in which they are
+ released is not defined.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>timeout</code></em> is zero, then
+ <code class="function">eglClientWaitSync</code> simply tests the current
+ status of <em class="parameter"><code>sync</code></em>. If the value of
+ <em class="parameter"><code>timeout</code></em> is the special value
+ <code class="constant">EGL_FOREVER</code>, then
+ <code class="function">eglClientWaitSync</code> does not time out. For
+ all other values, <em class="parameter"><code>timeout</code></em> is adjusted to
+ the closest value allowed by the implementation-dependent
+ timeout accuracy, which may be substantially longer than one
+ nanosecond.
+ </p>
+ <p>
+ <code class="function">eglClientWaitSync</code> returns one of three
+ status values describing the reason for returning. A return
+ value of <code class="constant">EGL_TIMEOUT_EXPIRED</code> indicates that
+ the specified timeout period expired before
+ <em class="parameter"><code>sync</code></em> was signaled, or if
+ <em class="parameter"><code>timeout</code></em> is zero, indicates that
+ <em class="parameter"><code>sync</code></em> is not signaled. A return value of
+ <code class="constant">EGL_CONDITION_SATISFIED</code> indicates that
+ <em class="parameter"><code>sync</code></em> was signaled before the timeout
+ expired, which includes the case when
+ <em class="parameter"><code>sync</code></em> was already signaled when
+ <code class="function">eglClientWaitSync</code> was called. If an error
+ occurs then an error is generated and
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ If the sync object being blocked upon will not be signaled in
+ finite time (for example, by an associated fence command issued
+ previously, but not yet flushed to the graphics pipeline), then
+ <code class="function">eglClientWaitSync</code> may wait forever. To help
+ prevent this behavior, if the
+ <code class="constant">EGL_SYNC_FLUSH_COMMANDS_BIT</code> bit is set in
+ <em class="parameter"><code>flags</code></em>, and <em class="parameter"><code>sync</code></em> is
+ unsignaled when <code class="function">eglClientWaitSync</code> is
+ called, then the equivalent of Flush() will be performed for the
+ current API context (i.e., the context returned by
+ <code class="function">eglGetCurrentContext</code>) before blocking on
+ <em class="parameter"><code>sync</code></em>. If no context is current for the
+ bound API, the <code class="constant">EGL_SYNC_FLUSH_COMMANDS_BIT</code>
+ bit is ignored.
+ </p>
+ <p>
+ Note: the simple Flush behavior defined by
+ <code class="constant">EGL_SYNC_FLUSH_COMMANDS_BIT</code> will not help
+ when waiting for a fence command issued in a different context's
+ command stream. Applications which block on a fence sync object
+ must take additional steps to ensure that the context from which
+ the associated fence command was issued has flushed that command
+ to the graphics pipeline.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglClientWaitSync</code> returns
+ <code class="constant">EGL_FALSE</code> on failure.
+ </p>
+ <p>
+ If <em class="parameter"><code>sync</code></em> is not a valid sync object for
+ <em class="parameter"><code>display</code></em>, an
+ <code class="constant">EGL_BAD_PARAMETER</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> does not match the
+ <span class="type">EGLDisplay</span> passed to
+ <code class="function">eglCreateSync</code> when
+ <em class="parameter"><code>sync</code></em> was created, the behaviour is
+ undefined.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglClientWaitSync</code> is available only if the
+ EGL version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitSync</span></span></a>,
+ <code class="function">glFinish</code>,
+ <code class="function">vgFinish</code>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCopyBuffers.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCopyBuffers.xhtml
new file mode 100644
index 0000000..c5c10aa
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCopyBuffers.xhtml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCopyBuffers - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCopyBuffers">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCopyBuffers —
+ copy <abbr class="acronym">EGL</abbr> surface color buffer to a native pixmap
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglCopyBuffers</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>NativePixmapType <var class="pdparam">native_pixmap</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface whose color buffer is to be copied.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the native pixmap as target of the copy.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCopyBuffers</code> copies the color buffer of
+ <em class="parameter"><code>surface</code></em> to <em class="parameter"><code>native_pixmap</code></em>.
+ </p>
+ <p>
+ <code class="function">eglCopyBuffers</code> performs an implicit
+ <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>
+ before it returns. Subsequent
+ GL commands may be issued immediately after calling
+ <code class="function">eglCopyBuffers</code>,
+ but are not executed until copying of the color buffer is completed.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ The color buffer of <em class="parameter"><code>surface</code></em> is left unchanged
+ after calling <code class="function">eglCopyBuffers</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if swapping of the
+ surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> is generated if
+ the implementation does not support native pixmaps.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ <em class="parameter"><code>native_pixmap</code></em> is not a valid native pixmap.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the format of <em class="parameter"><code>native_pixmap</code></em> is not compatible
+ with the color buffer of <em class="parameter"><code>surface</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateContext.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateContext.xhtml
new file mode 100644
index 0000000..3b60280
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateContext.xhtml
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreateContext - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreateContext">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreateContext —
+ create a new <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLContext <strong class="fsfunc">eglCreateContext</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">share_context</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the
+ <abbr class="acronym">EGL</abbr>
+ display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that
+ defines the frame buffer resource available to the rendering context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>share_context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies another
+ <abbr class="acronym">EGL</abbr>
+ rendering context with which to share data, as
+ defined by the client API corresponding to the
+ contexts. Data is also shared with all other
+ contexts with which
+ <em class="parameter"><code>share_context</code></em> shares data.
+ <code class="constant">EGL_NO_CONTEXT</code> indicates that
+ no sharing is to take place.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes and attribute values for the
+ context being created. Only the attribute
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> may
+ be specified.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateContext</code> creates an EGL
+ rendering context for the current rendering API (as set with
+ <code class="function">eglBindAPI</code>) and returns a handle to the
+ context. The context can then be used to render into an EGL
+ drawing surface. If <code class="function">eglCreateContext</code>
+ fails to create a rendering context,
+ <code class="constant">EGL_NO_CONTEXT</code> is returned.
+ </p>
+ <p>
+ If <em class="parameter"><code>share_context</code></em> is not
+ <code class="constant">EGL_NO_CONTEXT</code>, then all shareable data
+ in the context (as defined by the client API specification
+ for the current rendering API) are shared by context
+ <em class="parameter"><code>share_context</code></em>, all other contexts
+ <em class="parameter"><code>share_context</code></em> already shares with,
+ and the newly created context. An arbitrary number of
+ rendering contexts can share data. However, all rendering
+ contexts that share data must themselves exist in the same
+ address space. Two rendering contexts share an address space
+ if both are owned by a single process.
+ </p>
+ <p>
+ <em class="parameter"><code>attrib_list</code></em> specifies a list of
+ attributes for the context. The list has the same structure
+ as described for <code class="function">eglChooseConfig</code>. The
+ attributes and attribute values which may be specified are
+ as follows:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_MAJOR_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer specifying the requested
+ major version of an OpenGL or OpenGL ES context. The
+ default value is 1. This attribute is an alias of the
+ older <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>,
+ and the tokens may be used interchangeably.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_MINOR_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer specifying the requested
+ minor version of an OpenGL or OpenGL ES context. The
+ default value is 0.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_PROFILE_MASK</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer bitmask specifying the
+ <em class="firstterm">profile</em> of an OpenGL context.
+ Bits which may be set include
+ <code class="constant">EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT</code>
+ for a core profile and
+ <code class="constant">EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT</code>
+ for a compatibility profile. The default value is
+ <code class="constant">EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT</code>.
+ All OpenGL 3.2 and later implementations are required to
+ implement the core profile, but implementation of the
+ compatibility profile is optional.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_DEBUG</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by <code class="constant">EGL_TRUE</code>,
+ specifying that an OpenGL or OpenGL ES <em class="firstterm">debug
+ context</em> should be created, or
+ <code class="constant">EGL_FALSE</code>, if a non-debug context
+ should be created. The default value is
+ <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by <code class="constant">EGL_TRUE</code>,
+ specifying that a
+ <em class="firstterm">forward-compatible</em> OpenGL context
+ should be created, or <code class="constant">EGL_FALSE</code>, if
+ a non-forward-compatible context should be created. The
+ default value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_ROBUST_ACCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by <code class="constant">EGL_TRUE</code>,
+ specifying that an OpenGL or OpenGL ES context
+ supporting <em class="firstterm">robust buffer access</em>
+ should be created, or <code class="constant">EGL_FALSE</code>, if
+ a non-robust context should be created. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_LOSE_CONTEXT_ON_RESET</code>,
+ specifying that an OpenGL or OpenGL ES context with
+ reset notification behavior
+ <code class="constant">GL_LOSE_CONTEXT_ON_RESET_ARB</code> should
+ be created, or
+ <code class="constant">EGL_NO_RESET_NOTIFICATION</code>,
+ specifying that an OpenGL or OpenGL ES context with
+ reset notification behavior
+ <code class="constant">GL_NO_RESET_NOTIFICATION_ARB</code> should
+ be created, as described by the
+ <code class="constant">GL_ARB_robustness</code> extension.
+ </p>
+ <p>
+ If the
+ <code class="constant">EGL_CONTEXT_OPENGL_ROBUST_ACCESS</code>
+ attribute is not set to <code class="constant">EGL_TRUE</code>,
+ context creation will not fail, but the resulting
+ context may not support robust buffer access, and
+ therefore may not support the requested reset
+ notification strategy The default value for
+ <code class="constant">EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY</code>
+ is <code class="constant">EGL_NO_RESET_NOTIFICATION</code> .
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ There are many possible interactions between requested OpenGL
+ and OpenGL ES context creation attributes, depending on the API
+ versions and extensions supported by the implementation. These
+ interactions are described in detail in the EGL 1.5
+ Specification, but are not listed here for compactness. The
+ requested attributes may not be able to be satisfied, but
+ context creation may still succeed. Applications should ensure
+ that the OpenGL or OpenGL ES contexts supports needed features
+ before using them, by determining the actual context version,
+ supported extensions, and supported context flags using runtime
+ queries.
+ </p>
+ </div>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateImage.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateImage.xhtml
new file mode 100644
index 0000000..633cd0b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateImage.xhtml
@@ -0,0 +1,774 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreateImage - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreateImage">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreateImage —
+ Create a new <span class="type">EGLImage</span> object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLImage <strong class="fsfunc">eglCreateImage</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">context</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLenum <var class="pdparam">target</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLClientBuffer <var class="pdparam">buffer</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>const EGLAttrib *<var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the client API context for which the image is
+ created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>target</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the type of resource used as the image source.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the resource to be used as the image source.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes used to select sub-sections of the
+ resource to be used as the image source.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateImage</code> is used to create an
+ <span class="type">EGLImage</span> object from an existing image resource
+ <em class="parameter"><code>buffer</code></em>. <em class="parameter"><code>display</code></em>
+ specifies the EGL display used for this operation.
+ <em class="parameter"><code>context</code></em> specifies the EGL client API
+ context used for this operation, or
+ <code class="constant">EGL_NO_CONTEXT</code> if a client API context is
+ not required. <em class="parameter"><code>target</code></em> specifies the type
+ of resource being used as the <span class="type">EGLImage</span> source
+ (examples include two-dimensional textures in OpenGL ES contexts
+ and <span class="type">VGImage</span> objects in OpenVG contexts).
+ <em class="parameter"><code>buffer</code></em> is the name (or handle) of a
+ resource to be used as the <span class="type">EGLImage</span> source, cast
+ into the type <span class="type">EGLClientBuffer</span>.
+ <em class="parameter"><code>attrib_list</code></em> is a list of attribute-value
+ pairs which is used to select sub-sections of
+ <em class="parameter"><code>buffer</code></em> for use as the
+ <span class="type">EGLImage</span> source, such as mipmap levels for OpenGL
+ ES texture map resources, as well as behavioral options, such as
+ whether to preserve pixel data during creation. If
+ <em class="parameter"><code>attrib_list</code></em> is
+ non-<code class="constant">NULL</code>, the last attribute specified in
+ the list must be <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ The resource specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em>, and
+ <em class="parameter"><code>attrib_list</code></em> must not itself be an
+ <span class="type">EGLImage</span> sibling, or bound to a pbuffer
+ <span class="type">EGLSurface</span> resource
+ (<code class="function">eglBindTexImage</code>,
+ <code class="function">eglCreatePbufferFromClientBuffer</code>).
+ </p>
+ <p>
+ Values accepted for <em class="parameter"><code>target</code></em> are shown in
+ table <a class="xref" href="#tab-imagetarget" title="Table 1.  Legal values for eglCreateImage target">Table 1, “
+ Legal values for <code class="function">eglCreateImage</code> <em class="parameter"><code>target</code></em>
+ â€</a>.
+ </p>
+ <div class="table" id="tab-imagetarget">
+ <div class="table-title">Table 1. 
+ Legal values for <code class="function">eglCreateImage</code> <em class="parameter"><code>target</code></em>
+ </div>
+ <div class="table-contents">
+ <table style="border-collapse: collapse; border-top: 2px solid ; border-bottom: 2px solid ; border-left: 2px solid ; border-right: 2px solid ; ">
+ <colgroup>
+ <col/>
+ <col/>
+ </colgroup>
+ <thead>
+ <tr>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <em class="parameter">
+ <code>target</code>
+ </em>
+ </th>
+ <th style="text-align: left; border-bottom: 2px solid ; ">Notes</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_2D</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for GL 2D texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the +X face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the -X face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the +Y face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the -Y face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the +Z face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for the -Z face of GL cubemap texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_3D</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Used for OpenGL and OpenGL ES 3D texture images</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; ">
+ <code class="constant">EGL_GL_RENDERBUFFER</code>
+ </td>
+ <td style="text-align: left; ">Used for OpenGL and OpenGL ES renderbuffer images</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break"/>
+ <p>
+ Attribute names accepted in <em class="parameter"><code>attrib_list</code></em>
+ are shown in table <a class="xref" href="#tab-imageattr" title="Table 2.  Legal attributes for eglCreateImage attrib_list parameter">Table 2, “
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ â€</a>, together
+ with the <em class="parameter"><code>target</code></em> for which each attribute
+ name is valid, and the default value used for each attribute if
+ it is not included in <em class="parameter"><code>attrib_list</code></em>.
+ </p>
+ <div class="table" id="tab-imageattr">
+ <div class="table-title">Table 2. 
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ </div>
+ <div class="table-contents">
+ <table style="border-collapse: collapse; border-top: 2px solid ; border-bottom: 2px solid ; border-left: 2px solid ; border-right: 2px solid ; ">
+ <colgroup>
+ <col/>
+ <col/>
+ <col/>
+ <col/>
+ </colgroup>
+ <thead>
+ <tr>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <em class="parameter">
+ <code>target</code>
+ </em>
+ </th>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Notes</th>
+ <td style="border-right: 2px solid ; border-bottom: 2px solid ; " class="auto-generated"> </td>
+ <td style="border-bottom: 2px solid ; " class="auto-generated"> </td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Attribute</td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Description</td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Valid <em class="parameter"><code>target</code></em>s</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Default Value</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_NONE</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Marks the end of the attribute-value list</td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">All</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">N/A</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_LEVEL</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ Specifies the mipmap level used as the
+ <span class="type">EGLImage</span> source. Must be part of
+ the complete texture object
+ <em class="parameter"><code>buffer</code></em>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>, or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">0</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_ZOFFSET</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ Specifies the depth offset of the image to use
+ as the <span class="type">EGLImage</span> source. Must be
+ part of the complete texture object
+ <em class="parameter"><code>buffer</code></em>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_GL_TEXTURE_3D</code>
+ </td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">0</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; ">
+ <code class="constant">EGL_IMAGE_PRESERVED</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; ">Whether to preserve pixel data</td>
+ <td style="text-align: left; border-right: 2px solid ; ">All</td>
+ <td style="text-align: left; ">
+ <code class="constant">EGL_FALSE</code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break"/>
+ <p>
+ <code class="function">eglCreateImage</code> returns an
+ <span class="type">EGLImage</span> object corresponding to the image data
+ specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em> and
+ <em class="parameter"><code>attrib_list</code></em> which may be referenced by
+ client API operations.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_3D</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z</code>, or
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</code>,
+ <em class="parameter"><code>display</code></em> must be a valid
+ <span class="type">EGLDisplay</span>, and <em class="parameter"><code>context</code></em> must
+ be a valid OpenGL or OpenGL ES API context on that display.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <em class="parameter"><code>buffer</code></em> must be the name of a nonzero,
+ <code class="constant">GL_TEXTURE_2D</code> target texture object, cast
+ into the type <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is one of the
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code> enumerants,
+ <em class="parameter"><code>buffer</code></em> must be the name of a nonzero,
+ <code class="constant">GL_TEXTURE_CUBE_MAP</code> (or equivalent in GL
+ extensions) target texture object, cast into the type
+ <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_3D</code>,
+ <em class="parameter"><code>buffer</code></em> must be the name of a nonzero,
+ <code class="constant">GL_TEXTURE_3D</code> (or equivalent in GL
+ extensions) target texture object, cast into the type
+ <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ <em class="parameter"><code>attrib_list</code></em> should specify the mipmap
+ level (<code class="constant">EGL_GL_TEXTURE_LEVEL</code>) and, where
+ applicable, z-offset
+ (<code class="constant">EGL_GL_TEXTURE_ZOFFSET</code>) which will be used
+ as the <span class="type">EGLImage</span> source; If not specified, the
+ default values listed in table <a class="xref" href="#tab-imageattr" title="Table 2.  Legal attributes for eglCreateImage attrib_list parameter">Table 2, “
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ â€</a>
+ will be used instead. Additional values specified in are
+ ignored.
+ </p>
+ <p>
+ There must exist some levels <span class="emphasis"><em>x</em></span> and
+ <span class="emphasis"><em>y</em></span> such that the mipmap level requested lies
+ between <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>y</em></span>
+ (inclusive), the texture would be mipmap complete were
+ <span class="emphasis"><em>x</em></span> substituted for the base level and
+ <span class="emphasis"><em>y</em></span> substituted for the max level, and all
+ levels less than <span class="emphasis"><em>x</em></span> or greater than
+ <span class="emphasis"><em>y</em></span> are unspecified. For cubemaps a single
+ pair <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>y</em></span> must
+ apply to all faces. For three-dimensional textures, the
+ specified z-offset must be smaller than the depth of the
+ specified mipmap level.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_RENDERBUFFER</code>,
+ <em class="parameter"><code>buffer</code></em> must be the name of a complete,
+ nonzero, non-multisampled <code class="constant">GL_RENDERBUFFER</code>
+ (or equivalent in extensions) target object, cast into the type
+ <span class="type">EGLClientBuffer</span>. Values specified in
+ <em class="parameter"><code>attrib_list</code></em> are ignored.
+ </p>
+ <p>
+ If the value of attribute
+ <code class="constant">EGL_IMAGE_PRESERVED</code> is
+ <code class="constant">EGL_FALSE</code> (the default), then all pixel
+ data values associated with <em class="parameter"><code>buffer</code></em> will
+ be undefined after <code class="function">eglCreateImage</code> returns.
+ </p>
+ <p>
+ If the value of attribute
+ <code class="constant">EGL_IMAGE_PRESERVED</code> is
+ <code class="constant">EGL_TRUE</code>, then all pixel data values
+ associated with <em class="parameter"><code>buffer</code></em> are preserved.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglCreateImage</code> returns
+ <code class="constant">EGL_NO_IMAGE</code> on failure. The contents of
+ <em class="parameter"><code>buffer</code></em> will be unaffected.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> is not the handle of a valid
+ <span class="type">EGLDisplay</span> object, the error
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> is neither the handle of a
+ valid <span class="type">EGLContext</span> object on
+ <em class="parameter"><code>display</code></em> nor
+ <code class="constant">EGL_NO_CONTEXT</code>, the error
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is not one of the values in
+ table <a class="xref" href="#tab-imagetarget" title="Table 1.  Legal values for eglCreateImage target">Table 1, “
+ Legal values for <code class="function">eglCreateImage</code> <em class="parameter"><code>target</code></em>
+ â€</a>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and
+ <em class="parameter"><code>display</code></em> is not a valid
+ <span class="type">EGLDisplay</span>, the error
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and
+ <em class="parameter"><code>context</code></em> is not a valid
+ <span class="type">EGLContext</span>, the error
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and
+ <em class="parameter"><code>context</code></em> is not a valid GL context, or
+ does not match the <em class="parameter"><code>display</code></em>, the error
+ <code class="constant">EGL_BAD_MATCH</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code> and
+ <em class="parameter"><code>buffer</code></em> is not the name of a texture
+ object of type <em class="parameter"><code>target</code></em>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_RENDERBUFFER</code> and
+ <em class="parameter"><code>buffer</code></em> is not the name of a renderbuffer
+ object, or if <em class="parameter"><code>buffer</code></em> is the name of a
+ multisampled renderbuffer object, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is nonzero,
+ <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and
+ <em class="parameter"><code>buffer</code></em> is not the name of a complete GL
+ texture object, the error <code class="constant">EGL_BAD_PARAMETER</code>
+ is generated.
+ </p>
+ <p>
+ If <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is 0,
+ <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>,
+ <em class="parameter"><code>buffer</code></em> is the name of an incomplete GL
+ texture object, and any mipmap levels other than mipmap level 0
+ are specified, the error <code class="constant">EGL_BAD_PARAMETER</code>
+ is generated.
+ </p>
+ <p>
+ If <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is 0,
+ <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>,
+ <em class="parameter"><code>buffer</code></em> is not the name of a complete GL
+ texture object, and mipmap level 0 is not specified, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is 0,
+ <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <em class="parameter"><code>buffer</code></em> is not the name of a complete GL
+ texture object, and one or more faces do not have mipmap level 0
+ specified, the error <code class="constant">EGL_BAD_PARAMETER</code> is
+ generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>,
+ <code class="constant">EGL_GL_RENDERBUFFER</code> or
+ <code class="constant">EGL_GL_TEXTURE_3D</code> and
+ <em class="parameter"><code>buffer</code></em> refers to the default GL texture
+ object (0) for the corresponding GL target, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_2D</code>,
+ <code class="constant">EGL_GL_TEXTURE_CUBE_MAP_*</code>, or
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and the value specified
+ in <em class="parameter"><code>attrib_list</code></em> for
+ <code class="constant">EGL_GL_TEXTURE_LEVEL</code> is not a valid mipmap
+ level for the specified GL texture object
+ <em class="parameter"><code>buffer</code></em>, the error
+ <code class="constant">EGL_BAD_MATCH</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>target</code></em> is
+ <code class="constant">EGL_GL_TEXTURE_3D</code>, and the value specified
+ in <em class="parameter"><code>attrib_list</code></em> for
+ <code class="constant">EGL_GL_TEXTURE_ZOFFSET</code> exceeds the depth of
+ the specified mipmap level-of-detail in
+ <em class="parameter"><code>buffer</code></em>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If an attribute specified in <em class="parameter"><code>attrib_list</code></em>
+ is not one of the attributes shown in table <a class="xref" href="#tab-imageattr" title="Table 2.  Legal attributes for eglCreateImage attrib_list parameter">Table 2, “
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ â€</a>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ <p>
+ If an attribute specified in <em class="parameter"><code>attrib_list</code></em>
+ is not a valid attribute for <em class="parameter"><code>target</code></em>, as
+ shown in table <a class="xref" href="#tab-imageattr" title="Table 2.  Legal attributes for eglCreateImage attrib_list parameter">Table 2, “
+ Legal attributes for <code class="function">eglCreateImage</code>
+ <em class="parameter"><code>attrib_list</code></em> parameter
+ â€</a>, the error
+ <code class="constant">EGL_BAD_MATCH</code> is generated.
+ </p>
+ <p>
+ If the resource specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em> and
+ <em class="parameter"><code>attrib_list</code></em> has an off-screen buffer
+ bound to it (e.g., by a previous call to
+ <code class="function">eglBindTexImage</code>), the error
+ <code class="constant">EGL_BAD_ACCESS</code> is generated.
+ </p>
+ <p>
+ If the resource specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em> and
+ <em class="parameter"><code>attrib_list</code></em> is bound to an off-screen
+ buffer (e.g., by a previous call to
+ <code class="function">eglCreatePbufferFromClientBuffer</code>), the
+ error <code class="constant">EGL_BAD_ACCESS</code> is generated.
+ </p>
+ <p>
+ If the resource specified by <em class="parameter"><code>display</code></em>,
+ <em class="parameter"><code>context</code></em>, <em class="parameter"><code>target</code></em>,
+ <em class="parameter"><code>buffer</code></em> and
+ <em class="parameter"><code>attrib_list</code></em> is itself an
+ <span class="type">EGLImage</span> sibling, the error
+ <code class="constant">EGL_BAD_ACCESS</code> is generated.
+ </p>
+ <p>
+ If insufficient memory is available to complete the specified
+ operation, the error <code class="constant">EGL_BAD_ALLOC</code> is
+ generated.
+ </p>
+ <p>
+ If the value specified in <em class="parameter"><code>attrib_list</code></em> for
+ <code class="constant">EGL_IMAGE_PRESERVED</code> is
+ <code class="constant">EGL_TRUE</code>, and an <span class="type">EGLImage</span>
+ handle cannot be created from the specified resource such that
+ the pixel data values in <em class="parameter"><code>buffer</code></em> are
+ preserved, the error <code class="constant">EGL_BAD_ACCESS</code> is
+ generated.
+ </p>
+ <p>
+ Note that the success or failure of
+ <code class="function">eglCreateImage</code> should not affect the
+ ability to use <em class="parameter"><code>buffer</code></em> in its original API
+ context (or context share group) (although the pixel data values
+ will be undefined if the command succeeds and the value of
+ <code class="constant">EGL_IMAGE_PRESERVED</code> is not
+ <code class="constant">EGL_TRUE</code>).
+ </p>
+ </div>
+ <div class="refsect1" id="lifetime">
+ <h2>Lifetime and Usage of <span class="type">EGLImage</span>s</h2>
+ <p>
+ Once an <span class="type">EGLImage</span> is created from an
+ <span class="type">EGLImage</span> source, the memory associated with the
+ <span class="type">EGLImage</span> source will remain allocated (and all
+ <span class="type">EGLImage</span> siblings in all client API contexts will
+ be useable) as long as either of the following conditions is
+ true:
+ </p>
+ <p>
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ Any <span class="type">EGLImage</span> siblings exist in any client
+ API context
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The <span class="type">EGLImage</span> object exists inside EGL
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ </p>
+ <p>
+ The semantics for specifying, deleting and using
+ <span class="type">EGLImage</span> siblings are client API-specific, and are
+ described in the appropriate API specifications.
+ </p>
+ <p>
+ If an application specifies an <span class="type">EGLImage</span> sibling as
+ the destination for rendering and/or pixel download operations
+ (e.g., as an OpenGL or OpenGL ES framebuffer object,
+ <code class="function">glTexSubImage2D</code>, etc.), the modified image
+ results will be observed by all <span class="type">EGLImage</span> siblings
+ in all client API contexts. If multiple client API contexts
+ access <span class="type">EGLImage</span> sibling resources simultaneously,
+ with one or more context modifying the image data, rendering
+ results in all contexts accessing <span class="type">EGLImage</span> siblings
+ are undefined.
+ </p>
+ <p>
+ Respecification and/or deletion of any <span class="type">EGLImage</span>
+ sibling (i.e., both <span class="type">EGLImage</span> source and
+ <span class="type">EGLImage</span> target resources) inside a client API
+ context (by issuing a subsequent call to commands such as
+ <code class="function">glTexImage*</code> or
+ <code class="function">glDeleteTextures</code>, with the
+ <span class="type">EGLImage</span> sibling resource as the target of the
+ operation) affects only that client API context and other
+ contexts within its share group. For an OpenGL or OpenGL ES
+ context, respecification always results in
+ <em class="firstterm">orphaning</em> of the <span class="type">EGLImage</span>,
+ and may also include allocation of additional memory for the
+ respecified resource and/or copying of the <span class="type">EGLImage</span>
+ pixel data.
+ </p>
+ <p>
+ Note: Behavior of other types of client APIs generally follows
+ the OpenGL and OpenGL ES behavior described here, although this
+ is not mandated yet.
+ </p>
+ <p>
+ Operations inside EGL or any client API context which may affect
+ the lifetime of an <span class="type">EGLImage</span> (or the memory
+ allocated for the <span class="type">EGLImage</span>), such as respecifying
+ and/or deleting an <span class="type">EGLImage</span> sibling inside a client
+ API context, must be atomic.
+ </p>
+ <p>
+ Applications may create client API resources from an
+ <span class="type">EGLImage</span> using client API extensions outside the
+ scope of this document (such as
+ <code class="constant">GL_OES_EGL_image</code>, which creates OpenGL ES
+ texture and renderbuffer objects). If the <span class="type">EGLImage</span>
+ used to create the client resource was created with the
+ <code class="constant">EGL_IMAGE_PRESERVED</code> attribute set to
+ <code class="constant">EGL_TRUE</code>, then the pixel data values
+ associated with the image will be preserved after creating the
+ client resource; otherwise, the pixel data values will be
+ undefined. If the <span class="type">EGLImage</span> was created with the
+ <code class="constant">EGL_IMAGE_PRESERVED</code> attribute set to
+ <code class="constant">EGL_TRUE</code>, and EGL is unable to create the
+ client resource without modifying the pixel values, then
+ creation will fail and the pixel data values will be preserved.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglCreateImage</code> is available only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>,
+ <a class="citerefentry" href="eglDestroyImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroyImage</span></span></a>,
+ <code class="function">glDeleteTextures</code>,
+ <code class="function">glTexImage*</code>,
+ <code class="function">glTexSubImage2D</code>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferFromClientBuffer.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferFromClientBuffer.xhtml
new file mode 100644
index 0000000..b6d87bc
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferFromClientBuffer.xhtml
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePbufferFromClientBuffer - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePbufferFromClientBuffer">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePbufferFromClientBuffer —
+ create a new <abbr class="acronym">EGL</abbr> pixel buffer surface
+ bound to an OpenVG image
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePbufferFromClientBuffer</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLenum <var class="pdparam">buftype</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLClientBuffer <var class="pdparam">buffer</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buftype</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the type of client API buffer to be bound.
+ Must be <code class="constant">EGL_OPENVG_IMAGE</code>,
+ corresponding to an OpenVG <span class="type">VGImage</span>
+ buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the OpenVG <span class="type">VGImage</span> handle of
+ the buffer to be bound.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixel buffer surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePbufferFromClientBuffer</code> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <code class="function">eglCreatePbufferFromClientBuffer</code> fails to create
+ a pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code>
+ is returned.
+ </p>
+ <p>
+ The new pixel buffer surface is similar to a pixel buffer
+ created with
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ but storage for the color buffer is provided by a client API
+ buffer. Other buffer required by
+ <em class="parameter"><code>config</code></em>, such as depth, stencil, and
+ alpha mask, are allocated by EGL.
+ </p>
+ <p>
+ <em class="parameter"><code>buftype</code></em> must be
+ <code class="constant">EGL_OPENVG_IMAGE</code>, corresponding to an
+ OpenVG <span class="type">VGImage</span> buffer.
+ <em class="parameter"><code>buffer</code></em> must be a valid
+ <span class="type">VGImage</span> handle in the current OpenVG context,
+ cast into the type <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ The height, width,, OpenVG alpha format, and OpenVG
+ colorspace (surface attributes
+ <code class="constant">EGL_HEIGHT</code>,
+ <code class="constant">EGL_WIDTH</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, respectively) of the
+ resulting surface are determined by the size and format of
+ <em class="parameter"><code>buffer</code></em>.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <code class="constant">EGL_TRUE</code>
+ and <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>. Possible
+ values are <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglCreatePbufferFromClientBuffer</code> is
+ supported only if the EGL version is 1.2 or greater, and if
+ the EGL implementation supports the OpenVG client API.
+ </p>
+ <p>
+ Currently
+ <code class="function">eglCreatePbufferFromClientBuffer</code> only
+ supports binding OpenVG <span class="type">VGImage</span> buffers to
+ pixel buffers. While other client API resources could be
+ supported in the future, mechanisms such as OpenGL ES
+ framebuffer objects, and the family of EGL and client API
+ extensions for defining and using <span class="type">EGLImageKHR</span>
+ images, are a more flexible and general framework to satisfy
+ most of the same needs.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>config</code></em> attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </p>
+ <p>
+ If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_TEXTURE_2D</code>, and the value of
+ <code class="constant">EGL_TEXTURE FORMAT</code> is
+ <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </p>
+ <p>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </p>
+ <p>
+ Binding client API buffers to EGL pbuffers create the
+ possibility of race conditions, and of buffers being deleted
+ through one API while still in use in another API. To avoid
+ these problems, a number of constraints apply to bound
+ client API buffers:
+ </p>
+ <div class="orderedlist">
+ <ol class="orderedlist" type="1">
+ <li class="listitem">
+ <p>
+ Bound buffers may be used exclusively by either EGL,
+ or the client API that originally created them. For
+ example, if a <span class="type">VGImage</span> is bound to a
+ pbuffer, and that pbuffer is bound to any client API
+ rendering context, then the <span class="type">VGImage</span> may
+ not be used as the explicit source or destination of
+ any OpenVG operation. Errors resulting from such use
+ are described in client API specifications.
+ Similarly, while a <span class="type">VGImage</span> is in use by
+ OpenVG, the pbuffer it is bound to may not be made
+ current to any client API context using
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Binding a buffer creates an additional reference to
+ it, and implementations must respect outstanding
+ references when destroying objects. For example, if
+ a <span class="type">VGImage</span> is bound to a pbuffer,
+ destroying the image with
+ <code class="function">vgDestroyImage</code> will not free
+ the underlying buffer, because it is still in use by
+ EGL. However, following
+ <code class="function">vgDestroyImage</code> the buffer may
+ only be referred to via the EGL pbuffer handle,
+ since the OpenVG handle to that buffer no longer
+ exists. Similarly, destroying the pbuffer with
+ <code class="function">eglDestroySurface</code> will not free
+ the underlying buffer, because it is still in use by
+ OpenVG . However, following
+ <code class="function">eglDestroySurface</code> the buffer
+ may only be referred to via the OpenVG
+ <span class="type">VGImage</span> handle, since the EGL pbuffer
+ handle no longer exists.
+ </p>
+ </li>
+ </ol>
+ </div>
+ <p>
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>buftype</code></em> is not
+ <code class="constant">EGL_OPENVG_IMAGE</code>, or if
+ <em class="parameter"><code>buffer</code></em> is not a valid handle to a
+ <span class="type">VGImage</span> object in the currently bound OpenVG
+ context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if there is
+ no current OpenVG context, or if
+ <em class="parameter"><code>buffer</code></em> is already bound to another
+ pixel buffer or in use by OpenVG as discussed in the Notes
+ section above.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if the buffers
+ contained in <em class="parameter"><code>buffer</code></em> consist of any
+ <span class="type">EGLImage</span> siblings.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains any of the
+ attributes <code class="constant">EGL_MIPMAP_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_FORMAT</code>, or
+ <code class="constant">EGL_TEXTURE_TARGET</code>, and
+ <em class="parameter"><code>config</code></em> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <code class="constant">EGL_RENDERABLE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em> does not include at least one
+ of <code class="constant">EGL_OPENGL_ES_BIT</code> or
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to
+ pixel buffers (the <code class="constant">EGL_SURFACE_TYPE</code>
+ attribute does not contain
+ <code class="constant">EGL_PBUFFER_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ buffers contained in <em class="parameter"><code>buffer</code></em> do not
+ match the bit depths for those buffers specified by
+ <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_WIDTH</code> and/or
+ <code class="constant">EGL_HEIGHT</code> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>; or,
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ implementation has additional constraints on which types of
+ client API buffers may be bound to pixel buffer surfaces.
+ For example, it is possible that the OpenVG implementation
+ might not support a <span class="type">VGImage</span> being bound to a
+ pixel buffer which will be used as a mipmapped OpenGL ES
+ texture (e.g. whose <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ attribute is <code class="constant">TRUE</code>). Any such
+ constraints should be documented by the implementation
+ release notes.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferSurface.xhtml
new file mode 100644
index 0000000..a51f67e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePbufferSurface.xhtml
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePbufferSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.2"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePbufferSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePbufferSurface —
+ create a new <abbr class="acronym">EGL</abbr> pixel buffer surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePbufferSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixel buffer surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePbufferSurface</code> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <code class="function">eglCreatePbufferSurface</code> fails to create
+ a pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code>
+ is returned.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GL_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_SRGB</code>. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>, then a
+ linear color space is assumed, with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_LINEAR</code>. The default
+ value of <code class="constant">EGL_GL_COLORSPACE</code> is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>.
+ </p>
+ <p>
+ Note that the <code class="constant">EGL_GL_COLORSPACE</code>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the required height of the pixel buffer
+ surface. The default value is
+ <code class="constant">0</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LARGEST_PBUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Requests the largest available pixel buffer surface
+ when the allocation would otherwise fail. Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel
+ buffer. The default value is
+ <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <code class="constant">EGL_TRUE</code>
+ and <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>. Possible
+ values are <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the required width of the pixel buffer
+ surface. The default value is
+ <code class="constant">0</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_GL_COLORSPACE</code>, and the
+ <code class="constant">EGL_OPENGL_ES3_BIT</code> bit value for attribute
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, are supported only if
+ the EGL version is 1.5 or greater.
+ </p>
+ <p>
+ Attributes
+ <code class="constant">EGL_RENDERABLE_TYPE</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>config</code></em> attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </p>
+ <p>
+ If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_TEXTURE_2D</code>, and the value of
+ <code class="constant">EGL_TEXTURE FORMAT</code> is
+ <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </p>
+ <p>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains any of the
+ attributes <code class="constant">EGL_MIPMAP_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_FORMAT</code>, or
+ <code class="constant">EGL_TEXTURE_TARGET</code>, and
+ <em class="parameter"><code>config</code></em> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <code class="constant">EGL_RENDERABLE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em> does not include at least one
+ of <code class="constant">EGL_OPENGL_ES_BIT</code>,
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>, or
+ <code class="constant">EGL_OPENGL_ES3_BIT</code>),
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixel buffers
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PBUFFER_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_WIDTH</code> and/or
+ <code class="constant">EGL_HEIGHT</code> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>; or,
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePixmapSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePixmapSurface.xhtml
new file mode 100644
index 0000000..19b72cd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePixmapSurface.xhtml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePixmapSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePixmapSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePixmapSurface —
+ create a new <abbr class="acronym">EGL</abbr> offscreen surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePixmapSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>NativePixmapType <var class="pdparam">native_pixmap</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native pixmap.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixmap surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePixmapSurface</code> creates an off-screen
+ EGL pixmap surface and returns a handle to it. The behavior of
+ <code class="function">eglCreatePixmapSurface</code> is identical to that
+ of
+ <a class="citerefentry" href="eglCreatePlatformPixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformPixmapSurface</span></span></a>
+ except that the set of platforms to which
+ <em class="parameter"><code>display</code></em> is permitted to belong, as well
+ as the actual type of <em class="parameter"><code>native_pixmap</code></em>, are
+ implementation specific.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ See errors for
+ <a class="citerefentry" href="eglCreatePlatformPixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformPixmapSurface</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePlatformPixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformPixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformPixmapSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformPixmapSurface.xhtml
new file mode 100644
index 0000000..b58d4fe
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformPixmapSurface.xhtml
@@ -0,0 +1,341 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePlatformPixmapSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePlatformPixmapSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePlatformPixmapSurface —
+ create a new <abbr class="acronym">EGL</abbr> offscreen surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePlatformPixmapSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>void * <var class="pdparam">native_pixmap</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native pixmap.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixmap surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePlatformPixmapSurface</code> creates an
+ off-screen <abbr class="acronym">EGL</abbr> pixmap surface and returns
+ a handle to it.
+ </p>
+ <p>
+ If <code class="function">eglCreatePlatformPixmapSurface</code> fails to
+ create a pixmap surface, <code class="constant">EGL_NO_SURFACE</code> is
+ returned.
+ </p>
+ <p>
+ <em class="parameter"><code>native_pixmap</code></em> must belong to the same
+ platform as <em class="parameter"><code>display</code></em>, and EGL considers
+ the returned <span class="type">EGLSurface</span> as belonging to that same
+ platform. The EGL extension that defines the platform to which
+ <em class="parameter"><code>display</code></em> belongs also defines the
+ requirements for the <em class="parameter"><code>native_pixmap</code></em>
+ parameter.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GL_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_SRGB</code>. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>, then a
+ linear color space is assumed, with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_LINEAR</code>. The default
+ value of <code class="constant">EGL_GL_COLORSPACE</code> is
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code>.
+ </p>
+ <p>
+ Note that the <code class="constant">EGL_GL_COLORSPACE</code>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ The <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> attribute
+ of
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ can be used to select a frame buffer configuration matching
+ a specified native pixmap.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_GL_COLORSPACE</code> is supported
+ only if the EGL version is 1.5 or greater.
+ </p>
+ <p>
+ Attributes
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code> attributes are used only
+ by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
+ 1.0 specification for more information. The platform's use and
+ interpretation of alpha values is outside the scope of EGL.
+ However, the preferred behavior is for the window system to
+ ignore the value of <code class="constant">EGL_VG_ALPHA_FORMAT</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ If <em class="parameter"><code>display</code></em> and
+ <em class="parameter"><code>native_pixmap</code></em> do not belong to the same
+ platform, then undefined behavior occurs.
+ </p>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the surface fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL config.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ <em class="parameter"><code>native_pixmap</code></em> is not a valid native pixmap.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixmap attribute
+ or if an attribute value is not recognized or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there is
+ already an <span class="type">EGLSurface</span> associated with
+ <em class="parameter"><code>native_pixmap</code></em> (as a result of a previous
+ <code class="function">eglCreatePlatformPixmapSurface</code> call).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if the
+ implementation cannot allocate resources for the new EGL window.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the attributes of
+ <em class="parameter"><code>native_pixmap</code></em> do not correspond to
+ <em class="parameter"><code>config</code></em> or if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixmaps
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PIXMAP_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformWindowSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformWindowSurface.xhtml
new file mode 100644
index 0000000..f95ab1f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreatePlatformWindowSurface.xhtml
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreatePlatformWindowSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreatePlatformWindowSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreatePlatformWindowSurface —
+ create a new <abbr class="acronym">EGL</abbr> on-screen rendering surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePlatformWindowSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>void * <var class="pdparam">native_window</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLAttrib const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_window</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native window.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a list of attributes for the window surface.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePlatformWindowSurface</code> creates an
+ on-screen EGL window surface and returns a handle to it. Any EGL
+ context created with a compatible <span class="type">EGLConfig</span> can be
+ used to render into this surface.
+ </p>
+ <p>
+ If <code class="function">eglCreatePlatformWindowSurface</code> fails to
+ create a window surface, <code class="constant">EGL_NO_SURFACE</code> is
+ returned.
+ </p>
+ <p>
+ <em class="parameter"><code>native_window</code></em> must belong to the same
+ platform as <em class="parameter"><code>display</code></em>, and EGL considers
+ the returned <span class="type">EGLSurface</span> as belonging to that same
+ platform. The EGL extension that defines the platform to which
+ <em class="parameter"><code>display</code></em> belongs also defines the
+ requirements for the <em class="parameter"><code>native_window</code></em>
+ parameter.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GL_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenGL and OpenGL ES
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code>, then a
+ non-linear, perceptually uniform color space is assumed,
+ with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_SRGB</code>. If its value is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>, then a
+ linear color space is assumed, with a corresponding
+ <code class="constant">GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</code>
+ value of <code class="constant">GL_LINEAR</code>. The default
+ value of <code class="constant">EGL_GL_COLORSPACE</code> is
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>.
+ </p>
+ <p>
+ Note that the <code class="constant">EGL_GL_COLORSPACE</code>
+ attribute is used only by OpenGL and OpenGL ES contexts
+ supporting sRGB framebuffers. EGL itself does not
+ distinguish multiple colorspace models. Refer to the
+ ``sRGB Conversion'' sections of the OpenGL 4.6 and
+ OpenGL ES 3.2 Specifications for more information.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies which buffer should be used for client API
+ rendering to the window. If its value is
+ <code class="constant">EGL_SINGLE_BUFFER</code>, then client
+ APIs should render directly into the visible window.
+ If its value is
+ <code class="constant">EGL_BACK_BUFFER</code>, then client
+ APIs should render into the back buffer. The default
+ value of <code class="constant">EGL_RENDER_BUFFER</code> is
+ <code class="constant">EGL_BACK_BUFFER</code>.
+ </p>
+ <p>
+ Client APIs may not be able to respect the requested
+ rendering buffer. To determine the actual buffer
+ being rendered to by a context, call
+ <a class="citerefentry" href="eglQueryContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_GL_COLORSPACE</code> is supported
+ only if the EGL version is 1.5 or greater.
+ </p>
+ <p>
+ Attributes <code class="constant">EGL_RENDER_BUFFER</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code> attributes are used only
+ by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
+ 1.0 specification for more information. The platform's use and
+ interpretation of alpha values is outside the scope of EGL.
+ However, the preferred behavior is for platforms to ignore the
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> when
+ compositing window surfaces.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ If <em class="parameter"><code>display</code></em> and
+ <em class="parameter"><code>native_window</code></em> do not belong to the same
+ platform, then undefined behavior occurs.
+ </p>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the surface fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not a valid EGL frame buffer
+ configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code> may be generated if
+ <em class="parameter"><code>native_window</code></em> is not a valid native
+ window for the same platform as <em class="parameter"><code>display</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid window attribute
+ or if an attribute value is not recognized or is out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there is
+ already an <span class="type">EGLSurface</span> associated with
+ <em class="parameter"><code>native_window</code></em> (as a result of a previous
+ <code class="function">eglCreatePlatformWindowSurface</code> call).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if the
+ implementation cannot allocate resources for the new EGL window.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the pixel
+ format of <em class="parameter"><code>native_window</code></em> does not
+ correspond to the format, type, and size of the color buffers
+ required by <em class="parameter"><code>config</code></em>.
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the pixel
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to
+ windows (the <code class="constant">EGL_SURFACE_TYPE</code> attribute
+ does not contain <code class="constant">EGL_WINDOW_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateSync.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateSync.xhtml
new file mode 100644
index 0000000..5ca5676
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateSync.xhtml
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreateSync - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreateSync">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreateSync —
+ create a new <abbr class="acronym">EGL</abbr> sync object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSync <strong class="fsfunc">eglCreateSync</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLEnum <var class="pdparam">type</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLAttrib const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>type</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the type of sync object to create.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes and attribute values for the sync
+ object being created.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <em class="firstterm">sync objects</em> are provided to enable
+ synchronization of client API operations between threads and/or
+ between API contexts. Sync objects may be tested or waited upon
+ by application threads.
+ </p>
+ <p>
+ Sync objects have a status with two possible states:
+ <em class="firstterm">signaled</em> and
+ <em class="firstterm">unsignaled</em>. Initially, sync objects are
+ unsignaled. EGL may be asked to wait for a sync object to become
+ signaled, or a sync object's status may be queried.
+ </p>
+ <p>
+ Depending on the type of a sync object, its status may be
+ changed either by an external event, or by explicitly signaling
+ and unsignaling the sync.
+ </p>
+ <p>
+ <code class="function">eglCreateSync</code> creates a sync object of the specified
+ <em class="parameter"><code>type</code></em> associated with the specified display
+ <em class="parameter"><code>display</code></em>, and returns a handle to the new object.
+ <em class="parameter"><code>attrib_list</code></em> is an attribute-value list specifying
+ other attributes of the sync object, terminated by an attribute entry
+ <code class="constant">EGL_NONE</code>. Attributes not specified in the list will be
+ assigned their default values.
+ </p>
+ <p>
+ Once the <em class="firstterm">condition</em> of the sync object is satisfied,
+ the sync is signaled, causing any <code class="function">eglClientWaitSync</code> or
+ <code class="function">eglWaitSync</code> commands blocking on
+ <em class="parameter"><code>sync</code></em> to unblock.
+ </p>
+ </div>
+ <div class="refsect1" id="fencesync">
+ <h2>Creating Fence Sync Objects</h2>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_FENCE</code>, a fence sync object is
+ created. In this case <em class="parameter"><code>attrib_list</code></em> must be
+ <code class="constant">NULL</code> or empty (containing only
+ <code class="constant">EGL_NONE</code>). Attributes of the fence sync
+ object, and their initial values, are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_SYNC_FENCE</code>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_STATUS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_UNSIGNALED</code>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_CONDITION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_SYNC_PRIOR_COMMANDS_COMPLETE</code>
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ When a fence sync object is created, <code class="function">eglCreateSync</code> also inserts a
+ fence command into the command stream of the bound client API's current
+ context (i.e., the context returned by <code class="function">eglGetCurrentContext</code>), and
+ associates it with the newly created sync object.
+ </p>
+ <p>
+ The only condition supported for fence sync objects is
+ <code class="constant">EGL_SYNC_PRIOR_COMMANDS_COMPLETE</code>, which is satisfied by completion of
+ the fence command corresponding to the sync object, and all preceding
+ commands in the associated client API context's command stream. The sync
+ object will not be signaled until all effects from these commands on the
+ client API's internal and framebuffer state are fully realized. No other
+ state is affected by execution of the fence command.
+ </p>
+ <p>
+ Creation of fence sync objects requires support from the bound
+ client API, and will not succeed unless the client API satisfies
+ one of the following properties. Note that
+ <code class="function">eglWaitSync</code> also requires satisfying these
+ conditions.
+ </p>
+ <p>
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ client API is OpenGL, and either the OpenGL version is
+ 3.2 or greater, or the <code class="constant">GL_ARB_sync</code>
+ extension is supported.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ client API is OpenGL ES, and either the OpenGL ES
+ version is 3.0 or greater, or the
+ <code class="constant">GL_OES_EGL_sync</code> extension is
+ supported.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ client API is OpenVG, and the
+ <code class="constant">VG_KHR_EGL_sync</code> extension is
+ supported.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ </p>
+ </div>
+ <div class="refsect1" id="openclsync">
+ <h2>Creating OpenCL Event Sync Objects</h2>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_CL_EVENT</code>, an OpenCL event sync
+ object is created. In this case
+ <em class="parameter"><code>attrib_list</code></em> must contain the attribute
+ <code class="constant">EGL_CL_EVENT_HANDLE</code>, set to a valid OpenCL
+ event handle returned by a call to
+ <code class="function">clEnqueueReleaseGLObjects</code> or
+ <code class="function">clEnqueueReleaseEGLObjects</code>; other types of
+ OpenCL event handles are not supported. Note that
+ <code class="constant">EGL_CL_EVENT_HANDLE</code> is not a queriable
+ property of a sync object. Attributes of the OpenCL event sync
+ object, and their initial values, are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_SYNC_CL_EVENT</code>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_STATUS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Depends on status of <em class="parameter"><code>event</code></em>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SYNC_CONDITION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ <code class="constant">EGL_SYNC_CL_EVENT_COMPLETE</code>
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ The status of such a sync object depends on
+ <em class="parameter"><code>event</code></em>. When the status of
+ <em class="parameter"><code>event</code></em> is <code class="constant">CL_QUEUED</code>,
+ <code class="constant">CL_SUBMITTED</code>, or
+ <code class="constant">CL_RUNNING</code>, the status of the linked sync
+ object will be <code class="constant">EGL_UNSIGNALED</code>. When the
+ status of <em class="parameter"><code>event</code></em> changes to
+ <code class="constant">CL_COMPLETE</code>, the status of the linked sync
+ object will become <code class="constant">EGL_SIGNALED</code>.
+ </p>
+ <p>
+ The only condition supported for OpenCL event sync objects is
+ <code class="constant">EGL_SYNC_CL_EVENT_COMPLETE</code>, which is
+ satisfied when the status of the OpenCL event associated with
+ the sync object changes to <code class="constant">CL_COMPLETE</code>.
+ </p>
+ <p>
+ Creating a linked sync object places a reference on the linked
+ OpenCL event object. When the sync object is deleted, the
+ reference will be removed from the event object.
+ </p>
+ <p>
+ However, implementations are not required to validate the OpenCL
+ event, and passing an invalid event handle in
+ <em class="parameter"><code>attrib_list</code></em> may result in undefined
+ behavior up to and including program termination.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglCreateSync</code> is supported only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglCreateSync</code> returns
+ <code class="constant">EGL_NO_SYNC</code> on failure.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> is not the name of a valid,
+ initialized <span class="type">EGLDisplay</span>, an
+ <code class="constant">EGL_BAD_DISPLAY</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>attrib_list</code></em> contains an attribute name
+ not defined for the type of sync object being created, an
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is not a supported type of sync
+ object, an <code class="constant">EGL_BAD_PARAMETER</code> error is
+ generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_FENCE</code> and no context is current
+ for the bound API (i.e.,
+ <code class="function">eglGetCurrentContext</code> returns
+ <code class="constant">EGL_NO_CONTEXT</code>), an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_FENCE</code> and
+ <em class="parameter"><code>display</code></em> does not match the
+ <span class="type">EGLDisplay</span> of the currently bound context for the
+ currently bound client API (the <span class="type">EGLDisplay</span> returned
+ by <code class="function">eglGetCurrentDisplay</code>), an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_FENCE</code> and the current context for
+ the currently bound client API does not support fence commands,
+ an <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>type</code></em> is
+ <code class="constant">EGL_SYNC_CL_EVENT</code> and
+ <code class="constant">EGL_CL_EVENT_HANDLE</code> is not specified in
+ <em class="parameter"><code>attrib_list</code></em>, or its attribute value is
+ not a valid OpenCL event handle as described above, then an
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> error is generated.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <code class="function">clEnqueueReleaseGLObjects</code>,
+ <code class="function">clEnqueueReleaseEGLObjects</code>,
+ <a class="citerefentry" href="eglClientWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglClientWaitSync</span></span></a>,
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitSync</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateWindowSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateWindowSurface.xhtml
new file mode 100644
index 0000000..0a29d77
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglCreateWindowSurface.xhtml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglCreateWindowSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglCreateWindowSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglCreateWindowSurface —
+ create a new <abbr class="acronym">EGL</abbr> window surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglCreateWindowSurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>NativeWindowType <var class="pdparam">native_window</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_window</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native window.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies window surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateWindowSurface</code> creates an on-screen
+ EGL window surface and returns a handle to it. The behavior of
+ <code class="function">eglCreateWindowSurface</code> is identical to that
+ of
+ <a class="citerefentry" href="eglCreatePlatformWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformWindowSurface</span></span></a>
+ except that the set of platforms to which
+ <em class="parameter"><code>display</code></em> is permitted to belong, as well
+ as the actual type of <em class="parameter"><code>native_window</code></em>, are
+ implementation specific.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ See errors for
+ <a class="citerefentry" href="eglCreatePlatformWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformWindowSurface</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePlatformWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePlatformWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyContext.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyContext.xhtml
new file mode 100644
index 0000000..6a5569d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyContext.xhtml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglDestroyContext - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglDestroyContext">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglDestroyContext —
+ destroy an <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroyContext</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">context</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL rendering context to be destroyed.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ If the EGL rendering context <em class="parameter"><code>context</code></em> is not
+ current to any thread,
+ <code class="function">eglDestroyContext</code> destroys it immediately.
+ Otherwise, <em class="parameter"><code>context</code></em> is destroyed when it becomes
+ not current to any thread.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if destruction of
+ the context fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyImage.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyImage.xhtml
new file mode 100644
index 0000000..8c2f3aa
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroyImage.xhtml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglDestroyImage - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglDestroyImage">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglDestroyImage —
+ Destroy an <span class="type">EGLImage</span> object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroyImage</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLImage <var class="pdparam">image</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>image</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the image to destroy.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglDestroyImage</code> is used to destroy the
+ specified <span class="type">EGLImage</span> object
+ <em class="parameter"><code>image</code></em>. Once destroyed,
+ <em class="parameter"><code>image</code></em> may not be used to create any
+ additional <span class="type">EGLImage</span> target resources within any
+ client API contexts, although existing <span class="type">EGLImage</span>
+ siblings may continue to be used. <code class="constant">EGL_TRUE</code>
+ is returned on success.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ On failure, <code class="function">eglDestroyImage</code> returns
+ <code class="constant">EGL_FALSE</code>
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> is not the handle of a valid
+ <span class="type">EGLDisplay</span> object, the error
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>image</code></em> is not a valid
+ <span class="type">EGLImage</span> object created with respect to
+ <em class="parameter"><code>display</code></em>, the error
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglDestroyImage</code> is available only if the
+ EGL version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateImage</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySurface.xhtml
new file mode 100644
index 0000000..652f508
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySurface.xhtml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglDestroySurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglDestroySurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglDestroySurface —
+ destroy an <abbr class="acronym">EGL</abbr> surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroySurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL surface to be destroyed.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ If the EGL surface <em class="parameter"><code>surface</code></em> is not current to any
+ thread, <code class="function">eglDestroySurface</code> destroys it immediately.
+ Otherwise, <em class="parameter"><code>surface</code></em> is destroyed when it becomes
+ not current to any thread.
+ Furthermore, resources associated with a pbuffer surface are not released until
+ all color buffers of that pbuffer bound to a texture object have been released.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if destruction of
+ the surface fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySync.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySync.xhtml
new file mode 100644
index 0000000..7db22eb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglDestroySync.xhtml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglDestroySync - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglDestroySync">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglDestroySync —
+ Destroy a sync object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroySync</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSync <var class="pdparam">sync</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>sync</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the sync object to destroy.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglDestroySync</code> is used to destroy an
+ existing sync object.
+ </p>
+ <p>
+ If any <code class="function">eglClientWaitSync</code> or
+ <code class="function">eglWaitSync</code> commands are blocking on
+ <em class="parameter"><code>sync</code></em> when
+ <code class="function">eglDestroySync</code> is called,
+ <em class="parameter"><code>sync</code></em> is flagged for deletion and will be
+ deleted when the associated fence command or OpenCL event object
+ has completed, and <em class="parameter"><code>sync</code></em> is no longer
+ blocking any such <code class="function">egl*WaitSync</code> command.
+ Otherwise, the sync object is destroyed immediately.
+ </p>
+ <p>
+ If no errors are generated, <code class="constant">EGL_TRUE</code> is
+ returned, and <em class="parameter"><code>sync</code></em> will no longer be the
+ handle of a valid sync object.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ On failure, <code class="function">eglDestroySync</code> returns
+ <code class="constant">EGL_FALSE</code>.
+ </p>
+ <p>
+ If <em class="parameter"><code>sync</code></em> is not a valid sync object for
+ <em class="parameter"><code>display</code></em>, <code class="constant">EGL_FALSE</code>
+ is returned and an <code class="constant">EGL_BAD_PARAMETER</code> error
+ is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> does not match the display
+ passed to <code class="function">eglCreateSync</code> when
+ <em class="parameter"><code>sync</code></em> was created, the behaviour is
+ undefined.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglDestroySync</code> is available only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglClientWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglClientWaitSync</span></span></a>,
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>,
+ <a class="citerefentry" href="eglWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitSync</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigAttrib.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigAttrib.xhtml
new file mode 100644
index 0000000..726d487
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigAttrib.xhtml
@@ -0,0 +1,508 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetConfigAttrib - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetConfigAttrib">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetConfigAttrib —
+ return information about an <abbr class="acronym">EGL</abbr> frame buffer
+ configuration
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglGetConfigAttrib</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig <var class="pdparam">config</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration to be
+ queried.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL rendering context attribute to be
+ returned.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the requested value.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetConfigAttrib</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for
+ <em class="parameter"><code>config</code></em>
+ (config attributes are described in more detail in the
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ reference page).
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of alpha stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the number of bits in the alpha mask buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if color buffers can be
+ bound to an RGB texture,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if color buffers can be
+ bound to an RGBA texture,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BLUE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of blue stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BUFFER_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the depth of the color buffer.
+ It is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the color buffer type. Possible types are
+ <code class="constant">EGL_RGB_BUFFER</code> and
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_CAVEAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the caveats for the frame buffer configuration.
+ Possible caveat values are
+ <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, and
+ <code class="constant">EGL_NON_CONFORMANT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the ID of the frame buffer configuration.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFORMANT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating which client API contexts
+ created with respect to this config are conformant.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_DEPTH_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits in the depth buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GREEN_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of green stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the frame buffer level.
+ Level zero is the default frame buffer.
+ Positive levels correspond to frame buffers that overlay the default
+ buffer and negative levels correspond to frame buffers that underlay
+ the default buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LUMINANCE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the number of bits of luminance stored in the luminance buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum width of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum height of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_PIXELS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum size of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum value that can be passed to eglSwapInterval.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the minimum value that can be passed to eglSwapInterval.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if native rendering
+ APIs can render into the surface,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_VISUAL_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the ID of the associated native visual.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the type of the associated native visual.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RED_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of red stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDERABLE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating the types of supported
+ client API contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLE_BUFFERS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of multisample buffers.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLES</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of samples per pixel.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_STENCIL_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits in the stencil buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SURFACE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating the types of supported EGL
+ surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the type of supported transparency.
+ Possible transparency values are:
+ <code class="constant">EGL_NONE</code>, and
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent red value.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent green value.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent blue value.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_CONFORMANT</code> is supported only if the
+ EGL version is 1.3 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ <code class="constant">EGL_LUMINANCE_SIZE</code>, and
+ <code class="constant">EGL_RENDERABLE_TYPE</code> are supported only
+ if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ While <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> can be
+ specified in the attribute list passed to
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ it is not an attribute of the resulting config and cannot be
+ queried using <code class="function">eglGetConfigAttrib</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid frame buffer
+ configuration attribute.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigs.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigs.xhtml
new file mode 100644
index 0000000..bd34046
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetConfigs.xhtml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetConfigs - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetConfigs">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetConfigs —
+ return a list of all <abbr class="acronym">EGL</abbr> frame buffer configurations
+ for a display
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglGetConfigs</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLConfig * <var class="pdparam">configs</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">config_size</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">num_config</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>configs</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns a list of configs.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config_size</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the size of the list of configs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>num_config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of configs returned.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetConfigs</code> returns a list of all
+ EGL frame buffer configurations that are available for the specified
+ display.
+ The items in the list can be used in any EGL function that requires
+ an EGL frame buffer configuration.
+ </p>
+ <p>
+ <em class="parameter"><code>configs</code></em> does not return values, if it is specified
+ as
+ <code class="constant">NULL</code>. This is useful for querying just the
+ number of all frame buffer configurations.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ to retrieve individual attribute values of a frame buffer configuration.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>configs</code></em> and <em class="parameter"><code>num_config</code></em>
+ are not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentContext.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentContext.xhtml
new file mode 100644
index 0000000..9d80ed2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentContext.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetCurrentContext - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetCurrentContext">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetCurrentContext —
+ return the current <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLContext <strong class="fsfunc">eglGetCurrentContext</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentContext</code> returns the current
+ <abbr class="acronym">EGL</abbr> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_CONTEXT</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentDisplay.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentDisplay.xhtml
new file mode 100644
index 0000000..6c8a04d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentDisplay.xhtml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetCurrentDisplay - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetCurrentDisplay">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetCurrentDisplay —
+ return the display for the current <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLDisplay <strong class="fsfunc">eglGetCurrentDisplay</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentDisplay</code> returns the current
+ <abbr class="acronym">EGL</abbr> display connection for the current
+ <abbr class="acronym">EGL</abbr> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_DISPLAY</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ Passing <code class="constant">EGL_NO_DISPLAY</code> to any command
+ taking an <span class="type">EGLDisplay</span> parameter will generate either
+ an <code class="constant">EGL_BAD_DISPLAY</code> error if the EGL
+ implementation validates <span class="type">EGLDisplay</span> handles, or
+ undefined behavior as described at the end of section 3.1 of the
+ EGL 1.5 Specification. The only exception to this rule is that
+ <code class="function">eglQueryString</code> will accept an
+ <span class="type">EGLDisplay</span> parameter of
+ <code class="constant">EGL_NO_DISPLAY</code> when querying the client
+ extension string (see section 3.3 of the EGL 1.5 Specification).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentSurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentSurface.xhtml
new file mode 100644
index 0000000..285e842
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetCurrentSurface.xhtml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetCurrentSurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetCurrentSurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetCurrentSurface —
+ return the read or draw surface for the current <abbr class="acronym">EGL</abbr> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLSurface <strong class="fsfunc">eglGetCurrentSurface</strong>(</code>
+ </td>
+ <td>EGLint <var class="pdparam">readdraw</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>readdraw</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether to return the read surface
+ (<code class="constant">EGL_READ</code>) or the draw surface
+ (<code class="constant">EGL_DRAW</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentSurface</code> returns the read or draw
+ surface attached to the current
+ <abbr class="acronym">EGL</abbr> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_SURFACE</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetDisplay.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetDisplay.xhtml
new file mode 100644
index 0000000..47bbea1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetDisplay.xhtml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetDisplay - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetDisplay">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetDisplay —
+ return an <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLDisplay <strong class="fsfunc">eglGetDisplay</strong>(</code>
+ </td>
+ <td>NativeDisplayType <var class="pdparam">native_display</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the display to connect to.
+ <code class="constant">EGL_DEFAULT_DISPLAY</code> indicates the default display.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetDisplay</code> obtains the
+ <abbr class="acronym">EGL</abbr> display connection for the native
+ display <em class="parameter"><code>native_display</code></em>.
+ </p>
+ <p>
+ The behavior of <code class="function">eglGetDisplay</code> is similar to
+ that of
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>,
+ but is specified in terms of implementation-specific behavior
+ rather than platform-specific extensions. As for
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>,
+ EGL considers the returned <span class="type">EGLDisplay</span> as belonging
+ to the same platform as <em class="parameter"><code>display_id</code></em>.
+ However, the set of platforms to which
+ <em class="parameter"><code>display_id</code></em> is permitted to belong, as
+ well as the actual type of <em class="parameter"><code>display_id</code></em>,
+ are implementation-specific. If
+ <em class="parameter"><code>display_id</code></em> is
+ <code class="constant">EGL_DEFAULT_DISPLAY</code>, a <em class="firstterm">default
+ display</em> is returned. Multiple calls made to
+ <code class="function">eglGetDisplay</code> with the same
+ <em class="parameter"><code>display_id</code></em> will return the same
+ <span class="type">EGLDisplay</span> handle.
+ </p>
+ <p>
+ If <em class="parameter"><code>display_id</code></em> is
+ <code class="constant">EGL_DEFAULT_DISPLAY</code>, a default display connection is returned.
+ </p>
+ <p>
+ If no display connection matching <em class="parameter"><code>native_display</code></em> is
+ available, <code class="constant">EGL_NO_DISPLAY</code> is returned. No
+ error is generated.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ to initialize the display connection.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetError.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetError.xhtml
new file mode 100644
index 0000000..248841c
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetError.xhtml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetError - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetError">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetError —
+ return error information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLint <strong class="fsfunc">eglGetError</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetError</code> returns the error of the last
+ called <abbr class="acronym">EGL</abbr> function in the current thread.
+ Initially, the error is set to <code class="constant">EGL_SUCCESS</code>.
+ </p>
+ <p>
+ When an EGL function could potentially generate several
+ different errors (for example, when passed both a bad attribute
+ name, and a bad attribute value for a legal attribute name), the
+ implementation may choose to generate any one of the applicable
+ errors.
+ </p>
+ <p>
+ The following errors are currently defined:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SUCCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>The last function succeeded without error.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NOT_INITIALIZED</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL is not initialized, or could not be initialized,
+ for the specified EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ACCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL cannot access a requested resource
+ (for example a context is bound in another thread).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ALLOC</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL failed to allocate resources for the requested
+ operation.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ATTRIBUTE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An unrecognized attribute or attribute value was
+ passed in the attribute list.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CONTEXT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLContext</span> argument does not name a
+ valid EGL rendering context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CONFIG</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ An <span class="type">EGLConfig</span> argument does not name a valid
+ EGL frame buffer configuration.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>The current surface of the calling thread is a window,
+ pixel buffer or pixmap that is no longer valid.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_DISPLAY</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLDisplay</span> argument does not name a
+ valid EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_SURFACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLSurface</span> argument does not name a
+ valid surface (window, pixel buffer or pixmap) configured for
+ GL rendering.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_MATCH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Arguments are inconsistent (for example, a valid
+ context requires buffers not supplied by a valid surface).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_PARAMETER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>One or more argument values are invalid.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ A <span class="type">NativePixmapType</span> argument does not refer to
+ a valid native pixmap.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code>
+ </span>
+ </dt>
+ <dd>
+ <p>A <span class="type">NativeWindowType</span> argument does not refer
+ to a valid native window.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_LOST</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ A power management event has occurred. The application must destroy all
+ contexts and reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ A call to <code class="function">eglGetError</code> sets the error to
+ <code class="constant">EGL_SUCCESS</code>.
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetPlatformDisplay.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetPlatformDisplay.xhtml
new file mode 100644
index 0000000..6d6f134
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetPlatformDisplay.xhtml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetPlatformDisplay - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetPlatformDisplay">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetPlatformDisplay —
+ return an <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLDisplay <strong class="fsfunc">eglGetPlatformDisplay</strong>(</code>
+ </td>
+ <td>EGLenum <var class="pdparam">platform</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>void * <var class="pdparam">native_display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>const EGLAttrib * <var class="pdparam">attrib_list</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>platform</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the native platform to obtain a display for.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the native display to connect to.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes of the display being obtained.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetPlatformDisplay</code> obtains an
+ <abbr class="acronym">EGL</abbr> display connection for the specified
+ <em class="parameter"><code>platform</code></em> and
+ <em class="parameter"><code>native_display</code></em>.
+ </p>
+ <p>
+ Valid values for <em class="parameter"><code>platform</code></em> are defined by
+ EGL extensions, as are requirements for
+ <em class="parameter"><code>native_display</code></em>.
+ For example, an extension specification that defines support for
+ the X11 platform may require that
+ <em class="parameter"><code>native_display</code></em> be a pointer to an X11
+ Display, and an extension specification that defines support for
+ the Microsoft Windows platform may require that
+ <em class="parameter"><code>native_display</code></em> be a pointer to a Windows
+ Device Context.
+ </p>
+ <p>
+ Valid attributes are defined by EGL extensions.
+ All attributes in <em class="parameter"><code>attrib_list</code></em>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value.
+ The list is terminated with <code class="constant">EGL_NONE</code>.
+ If an attribute is not specified in
+ <em class="parameter"><code>attrib_list</code></em> but is required for the
+ specified <em class="parameter"><code>platform</code></em>, then a default value
+ is used (and the attribute is said to be specified implicitly).
+ </p>
+ <p>
+ Multiple calls made to
+ <code class="function">eglGetPlatformDisplay</code> with the same
+ parameters will return the same <span class="type">EGLDisplay</span> handle.
+ </p>
+ <p>
+ If <em class="parameter"><code>platform</code></em> is valid but no display
+ matching <em class="parameter"><code>native_display</code></em> is available,
+ then <code class="constant">EGL_NO_DISPLAY</code> is returned; no error
+ condition is raised in this case.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglGetPlatformDisplay</code> is supported only if
+ the EGL version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglGetPlatformDisplay</code> returns
+ <code class="constant">EGL_NO_DISPLAY</code> on failure.
+ </p>
+ <p>
+ An <code class="constant">EGL_BAD_PARAMETER</code> error is generated if
+ <em class="parameter"><code>platform</code></em> has an invalid value.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetProcAddress.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetProcAddress.xhtml
new file mode 100644
index 0000000..8583280
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetProcAddress.xhtml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetProcAddress - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetProcAddress">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetProcAddress —
+ return a <abbr class="acronym">GL</abbr> or an <abbr class="acronym">EGL</abbr>
+ extension function
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">void (* <strong class="fsfunc">eglGetProcAddress</strong>(</code>
+ </td>
+ <td>char const * <var class="pdparam">procname</var>))(void<code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>procname</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the name of the function to return.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetProcAddress</code> returns the address of
+ the client API or EGL function named by
+ <em class="parameter"><code>procname</code></em>. <em class="parameter"><code>procname</code></em>
+ must be a null-terminated string. The pointer returned should be
+ cast to a function pointer matching the function's definition in
+ the corresponding API or extension specification. A return value
+ of <code class="constant">NULL</code> indicates that the specific
+ function does not exist for the implementation.
+ </p>
+ <p>
+ A non-<code class="constant">NULL</code> return value does not guarantee
+ that an extension function is actually supported at runtime. The
+ client must also make a corresponding query, such as
+ <code class="function">glGetString</code>(<code class="constant">GL_EXTENSIONS</code>)
+ for OpenGL and OpenGL ES extensions;
+ <code class="function">vgGetString</code>(<code class="constant">VG_EXTENSIONS</code>)
+ for OpenVG extensions;
+ <code class="function">eglQueryString</code>(<em class="parameter"><code>display</code></em>,
+ <code class="constant">EGL_EXTENSIONS</code>); or query the EGL or client
+ API version for non-extension functions, to determine if a
+ function is supported by EGL or a specific client API context.
+ </p>
+ <p>
+ Client API function pointers returned by
+ <code class="function">eglGetProcAddress</code> are independent of the
+ display and the currently bound client API context, and may be
+ used by any client API context which supports the function.
+ </p>
+ <p>
+ <code class="function">eglGetProcAddress</code> may be queried for all
+ EGL and client API functions supported by the implementation
+ (whether those functions are extensions or not, and whether they
+ are supported by the current client API context or not).
+ </p>
+ <p>
+ For functions that are queryable with
+ <code class="function">eglGetProcAddress</code>, implementations may
+ choose to also export those functions statically from the object
+ libraries implementing those functions. However, portable
+ clients cannot rely on this behavior.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ If the EGL version is not 1.5 or greater, only queries of EGL
+ and client API <span class="emphasis"><em>extension</em></span> functions will
+ succeed.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <code class="function">glGetString</code>
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a> </p>
+ <code class="function">vgGetString</code>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetSyncAttrib.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetSyncAttrib.xhtml
new file mode 100644
index 0000000..de9009b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglGetSyncAttrib.xhtml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglGetSyncAttrib - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglGetSyncAttrib">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglGetSyncAttrib —
+ Return an attribute of a sync object
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglGetSyncAttrib</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSync <var class="pdparam">sync</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLAttrib *<var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>sync</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the sync object to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL sync object attribute to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested attribute value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetSyncAttrib</code> is used to query
+ attributes of the sync object <em class="parameter"><code>sync</code></em>. Legal
+ values for <em class="parameter"><code>attribute</code></em> depend on the type
+ of sync object, as shown in table
+ <a class="xref" href="#tab-syncattr" title="Table 1.  Attributes accepted by eglGetSyncAttrib">Table 1, “
+ Attributes accepted by <code class="function">eglGetSyncAttrib</code>
+ â€</a>. Assuming no errors are
+ generated, <code class="constant">EGL_TRUE</code> is returned and the
+ value of the queried attribute is returned in
+ *<em class="parameter"><code>value</code></em>.
+ </p>
+ <div class="table" id="tab-syncattr">
+ <div class="table-title">Table 1. 
+ Attributes accepted by <code class="function">eglGetSyncAttrib</code>
+ </div>
+ <div class="table-contents">
+ <table style="border-collapse: collapse; border-top: 2px solid ; border-bottom: 2px solid ; border-left: 2px solid ; border-right: 2px solid ; ">
+ <colgroup>
+ <col/>
+ <col/>
+ <col/>
+ </colgroup>
+ <thead>
+ <tr>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Attribute</th>
+ <th style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Description</th>
+ <th style="text-align: left; border-bottom: 2px solid ; ">Supported Sync Objects</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Attribute</td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Description</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">Supported Sync Objects</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_SYNC_TYPE</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Type of the sync object</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">All</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">
+ <code class="constant">EGL_SYNC_STATUS</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; border-bottom: 2px solid ; ">Status of the sync object</td>
+ <td style="text-align: left; border-bottom: 2px solid ; ">All</td>
+ </tr>
+ <tr>
+ <td style="text-align: left; border-right: 2px solid ; ">
+ <code class="constant">EGL_SYNC_CONDITION</code>
+ </td>
+ <td style="text-align: left; border-right: 2px solid ; ">Signaling condition</td>
+ <td style="text-align: left; ">
+ <code class="constant">EGL_SYNC_FENCE</code> or
+ <code class="constant">EGL_SYNC_CL_EVENT</code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break"/>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ On failure, <code class="function">eglGetSyncAttrib</code> returns
+ <code class="constant">EGL_FALSE</code> and *<em class="parameter"><code>value</code></em>
+ is not modified.
+ </p>
+ <p>
+ If <em class="parameter"><code>sync</code></em> is not a valid sync object for
+ <em class="parameter"><code>display</code></em>, an
+ <code class="constant">EGL_BAD_PARAMETER</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>attribute</code></em> is not one of the attributes
+ in table <a class="xref" href="#tab-syncattr" title="Table 1.  Attributes accepted by eglGetSyncAttrib">Table 1, “
+ Attributes accepted by <code class="function">eglGetSyncAttrib</code>
+ â€</a>, an
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>attribute</code></em> is not supported for the
+ type of sync object passed in <em class="parameter"><code>sync</code></em>, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> does not match the display
+ passed to <code class="function">eglCreateSync</code> when
+ <em class="parameter"><code>sync</code></em> was created, behaviour is undefined.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglGetSyncAttrib</code> is available only if the
+ EGL version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglInitialize.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglInitialize.xhtml
new file mode 100644
index 0000000..4544be2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglInitialize.xhtml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglInitialize - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglInitialize">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglInitialize —
+ initialize an <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglInitialize</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">major</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">minor</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection to initialize.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>major</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the major version number of the EGL implementation.
+ May be <code class="constant">NULL</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>minor</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the minor version number of the EGL implementation.
+ May be <code class="constant">NULL</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglInitialize</code> initialized the EGL display
+ connection obtained with
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>.
+ Initializing an already initialized EGL display connection has no
+ effect besides returning the version numbers.
+ </p>
+ <p>
+ <em class="parameter"><code>major</code></em> and <em class="parameter"><code>minor</code></em>
+ do not return values if they are specified as <code class="constant">NULL</code>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglTerminate.xhtml"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>
+ to release resources associated with an EGL display connection.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglInitialize</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>major</code></em> and <em class="parameter"><code>minor</code></em> are not
+ modified when <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> cannot be initialized.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglTerminate.xhtml"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglIntro.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglIntro.xhtml
new file mode 100644
index 0000000..b82eade
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglIntro.xhtml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglIntro - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglIntro">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglIntro —
+ introduction to managing client API rendering through the
+ <abbr class="acronym">EGL</abbr> API.
+ </p>
+ </div>
+ <div class="refsect1" id="overview">
+ <h2>Overview</h2>
+ <p>
+ The <em class="firstterm">Khronos Native Platform Graphics
+ Interface</em> (EGL) provides a means for rendering
+ using a <em class="firstterm">client API</em> such as OpenGL ES
+ (a 3D renderer for embedded systems), OpenGL (a functional
+ superset of OpenGL ES for desktop systems), and OpenVG (a 2D
+ vector graphics renderer) together with a
+ <em class="firstterm">platform</em>, such as Microsoft Windows or
+ the X Window System.
+ </p>
+ <p>
+ Depending on its implementation EGL might be more or less
+ tightly integrated into the platform. Most EGL
+ functions require an EGL display connection, which can be
+ obtained by calling
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>
+ or
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>.
+ To initialize and
+ query what EGL version is supported on the display
+ connection, call
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>.
+ </p>
+ <p>
+ The EGL specification does not define the set of platforms that
+ may be supported by an EGL implementation, nor does it specify
+ behavior specific to any platform. The set of supported
+ platforms and their behavior is defined by platform-specific
+ extensions. To detect if a particular platform is supported,
+ clients should query the <code class="constant">EGL_EXTENSIONS</code>
+ string of <code class="constant">EGL_NO_DISPLAY</code> using
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>.
+ </p>
+ <p>
+ Platforms supporting EGL make a subset of their
+ visuals (which may also referred to as pixel formats, frame
+ buffer configurations, or other similar terms) available for
+ client API rendering. Windows and pixmaps created with these
+ visuals may also be rendered into using the platform APIs.
+ </p>
+ <p>
+ An EGL <em class="firstterm">surface</em> extends a native
+ window or pixmap with additional <em class="firstterm">auxillary
+ buffers</em>. These buffers include a color buffer, a
+ depth buffer, a stencil buffer, and an alpha mask buffer.
+ Some or all of the buffers listed are included in each EGL
+ frame buffer configuration.
+ </p>
+ <p>
+ EGL supports rendering into three types of surfaces:
+ windows, pixmaps and pixel buffers (pbuffers). EGL window
+ and pixmap surfaces are associated with corresponding
+ resources of the platform. EGL pixel buffers are
+ EGL-only resources, and do not accept rendering through the
+ platform APIs.
+ </p>
+ <p>
+ To render using a client API into an EGL surface, you must
+ determine the appropriate EGL frame buffer configuration,
+ which supports the rendering features the application
+ requires.
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ returns an <span class="type">EGLConfig</span> matching the required
+ attributes, if any. A complete list of EGL frame buffer
+ configurations can be obtained by calling
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>.
+ Attributes of a particular EGL frame buffer configuration
+ can be queried by calling
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>.
+ </p>
+ <p>
+ For EGL window and pixmap surfaces, a suitable native window
+ or pixmap with a matching native visual must be created
+ first. For a given EGL frame buffer configuration, the
+ native visual type and ID can be retrieved with a call to
+ <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>.
+ For pixel buffers, no underlying native resource is
+ required.
+ </p>
+ <p>
+ To create an EGL window surface from a native window, call
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>.
+ To create an EGL pixmap surface from a native pixmap, call
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>.
+ To create a pixel buffer (pbuffer) surface (which has no
+ associated native buffer), call
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>
+ To create a pixel buffer (pbuffer) surface whose color
+ buffer is provided by an OpenVG <span class="type">VGImage</span>, call
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>.
+ Use
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to release previously allocated resources.
+ </p>
+ <p>
+ An EGL rendering context is required to bind client API
+ rendering to an EGL surface. An EGL surface and an EGL
+ rendering context must have compatible EGL frame buffer
+ configurations. To create an EGL rendering context, call
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>.
+ The type of client API context created (OpenGL ES, OpenVG,
+ etc.) can be changed by first calling
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>.
+ </p>
+ <p>
+ An EGL rendering context may be bound to one or two EGL
+ surfaces by calling
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ This context/surface(s) association specifies the
+ <em class="firstterm">current context</em> and
+ <em class="firstterm">current surface</em>, and is used by all
+ client API rendering commands for the bound context until
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ is called with different arguments.
+ </p>
+ <p>
+ Both platform and client API commands may be used to operate
+ on certain surfaces. However, the two command streams are
+ not synchronized. Synchronization can be explicitly
+ specified using by calling
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>,
+ and possibly by calling other platform APIs.
+ </p>
+ </div>
+ <div class="refsect1" id="examples">
+ <h2>Examples</h2>
+ <p>
+ Below is a minimal example of creating an RGBA-format window that
+ allows rendering with OpenGL ES.
+ The window is cleared to yellow when the program runs. For simplicity,
+ the program does not check for any errors.
+ </p>
+ <pre class="programlisting">
+#include &lt;stdlib.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+typedef ... NativeWindowType;
+extern NativeWindowType createNativeWindow(void);
+static EGLint const attribute_list[] = {
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_NONE
+};
+int main(int argc, char ** argv)
+{
+ EGLDisplay display;
+ EGLConfig config;
+ EGLContext context;
+ EGLSurface surface;
+ NativeWindowType native_window;
+ EGLint num_config;
+
+ /* get an EGL display connection */
+ display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ /* initialize the EGL display connection */
+ eglInitialize(display, NULL, NULL);
+
+ /* get an appropriate EGL frame buffer configuration */
+ eglChooseConfig(display, attribute_list, &amp;config, 1, &amp;num_config);
+
+ /* create an EGL rendering context */
+ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
+
+ /* create a native window */
+ native_window = createNativeWindow();
+
+ /* create an EGL window surface */
+ surface = eglCreateWindowSurface(display, config, native_window, NULL);
+
+ /* connect the context to the surface */
+ eglMakeCurrent(display, surface, surface, context);
+
+ /* clear the color buffer */
+ glClearColor(1.0, 1.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFlush();
+
+ eglSwapBuffers(display, surface);
+
+ sleep(10);
+ return EXIT_SUCCESS;
+}
+</pre>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Prior to EGL 1.5, platforms were referred to as the
+ <em class="firstterm">native window system</em>, and
+ platform-specific queries and APIs were not available. Only a
+ single native window system was supported.
+ </p>
+ </div>
+ <div class="refsect1" id="usingeglextensions">
+ <h2>Using EGL Extensions</h2>
+ <p>
+ All supported EGL extensions will have a corresponding definition in
+ <code class="filename">egl.h</code> and a token in the extension strings returned
+ by
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1" id="futureeglversions">
+ <h2>Future EGL Versions</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ and
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>
+ can be used to determine at run-time what version of EGL is available.
+ To check the EGL version at compile-time, test whether
+ <code class="constant">EGL_VERSION_<em class="replaceable"><code>x</code></em>_<em class="replaceable"><code>y</code></em></code>
+ is defined, where <em class="replaceable"><code>x</code></em> and
+ <em class="replaceable"><code>y</code></em> are the major and minor version
+ numbers.
+ </p>
+ </div>
+ <div class="refsect1" id="files">
+ <h2>Files</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="filename">GLES/egl.h</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ EGL header file
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroyContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroyContext</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetPlatformDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetPlatformDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQueryString.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>,
+ <a class="citerefentry" href="eglTerminate.xhtml"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglMakeCurrent.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglMakeCurrent.xhtml
new file mode 100644
index 0000000..14f28ec
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglMakeCurrent.xhtml
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglMakeCurrent - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglMakeCurrent">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglMakeCurrent —
+ attach an EGL rendering context to EGL surfaces
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglMakeCurrent</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">draw</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">read</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">context</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <abbr class="acronym">EGL</abbr> display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>draw</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <abbr class="acronym">EGL</abbr> draw surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>read</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <abbr class="acronym">EGL</abbr> read surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <abbr class="acronym">EGL</abbr> rendering context
+ to be attached to the surfaces.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglMakeCurrent</code> binds <em class="parameter"><code>context</code></em>
+ to the current rendering thread and to the <em class="parameter"><code>draw</code></em>
+ and <em class="parameter"><code>read</code></em> surfaces.
+ </p>
+ <p>
+ For an OpenGL or OpenGL ES context, <em class="parameter"><code>draw</code></em>
+ is used for all operations except for any pixel data read back or copied
+ (<a class="citerefentry" href="glReadPixels.xhtml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
+ <a class="citerefentry" href="glCopyTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>, and
+ <a class="citerefentry" href="glCopyTexSubImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>),
+ which is taken from the frame buffer values of
+ <em class="parameter"><code>read</code></em>. Note that the same
+ <span class="type">EGLSurface</span> may be specified for both draw and read.
+ </p>
+ <p>
+ For an OpenVG context, the same <span class="type">EGLSurface</span> must be
+ specified for both <em class="parameter"><code>draw</code></em> and
+ <em class="parameter"><code>read</code></em>.
+ </p>
+ <p>
+ If the calling thread has already a current rendering context of
+ the same client API type as <em class="parameter"><code>context</code></em>, then
+ that context is flushed and marked as no longer current.
+ <em class="parameter"><code>context</code></em> is then made the current context
+ for the calling thread. For purposes of
+ <code class="function">eglMakeCurrent</code>, the client API type of all
+ OpenGL ES and OpenGL contexts is considered the same. In other
+ words, if any OpenGL ES context is currently bound and
+ <em class="parameter"><code>context</code></em> is an OpenGL context, or if any
+ OpenGL context is currently bound and
+ <em class="parameter"><code>context</code></em> is an OpenGL ES context, the
+ currently bound context will be made no longer current and
+ <em class="parameter"><code>context</code></em> will be made current.
+ </p>
+ <p>
+ OpenGL and OpenGL ES buffer mappings created by e.g.
+ <code class="function">glMapBuffer</code> are not affected by
+ <code class="function">eglMakeCurrent</code>; they persist whether the
+ context owning the buffer is current or not.
+ </p>
+ <p>
+ If <em class="parameter"><code>draw</code></em> is destroyed after
+ <code class="function">eglMakeCurrent</code> is called, then subsequent
+ rendering commands will be processed and the context state will
+ be updated, but the surface contents become undefined. If
+ <em class="parameter"><code>read</code></em> is destroyed after
+ <code class="function">eglMakeCurrent</code> then pixel values
+ <em class="parameter"><code>read</code></em> from the framebuffer (e.g., as
+ result of calling glReadPixels) are undefined. If a native
+ window or pixmap underlying the <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> surfaces is destroyed, rendering and
+ <em class="parameter"><code>read</code></em>back are handled as above.
+ </p>
+ <p>
+ To release the current context without assigning a new one, set
+ <em class="parameter"><code>context</code></em> to
+ <code class="constant">EGL_NO_CONTEXT</code> and set
+ <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> to
+ <code class="constant">EGL_NO_SURFACE</code> . The currently bound
+ context for the client API specified by the current rendering
+ API is flushed and marked as no longer current, and there will
+ be no current context for that client API after
+ <code class="function">eglMakeCurrent</code> returns. This is the only
+ case in which <code class="function">eglMakeCurrent</code> respects the
+ current rendering API. In all other cases, the client API
+ affected is determined by <em class="parameter"><code>context</code></em>. This
+ is the only case where an uninitialized display may be passed to
+ <code class="function">eglMakeCurrent</code>.
+ </p>
+ <p>
+ If ctx is not <code class="constant">EGL_NO_CONTEXT</code>, then both
+ <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> must
+ not be <code class="constant">EGL_NO_SURFACE</code> unless
+ <em class="parameter"><code>context</code></em> is a context which supports being
+ bound without read and draw surfaces. In this case the context
+ is made current without a default framebuffer. The meaning of
+ this is defined by the client API of the supporting context (see
+ chapter 4 of the OpenGL 3.0 Specification, and the
+ <code class="constant">GL_OES_surfaceless_context</code> OpenGL ES
+ extension.).
+ </p>
+ <p>
+ The first time a OpenGL or OpenGL ES context is made current the
+ viewport and scissor dimensions are set to the size of the
+ <em class="parameter"><code>draw</code></em> surface (as though
+ <code class="function">glViewport</code>(0,0,w,h) and
+ <code class="function">glScissor</code>(0,0,<em class="parameter"><code>w</code></em>,<em class="parameter"><code>h</code></em>)
+ were called, where <em class="parameter"><code>w</code></em> and
+ <em class="parameter"><code>h</code></em> are the width and height of the
+ surface, respectively). However, the viewport and scissor
+ dimensions are not modified when <em class="parameter"><code>context</code></em>
+ is subsequently made current. The client is responsible for
+ resetting the viewport and scissor in this case.
+ </p>
+ <p>
+ The first time <em class="parameter"><code>context</code></em> is made current,
+ if it is without a default framebuffer (e.g. both
+ <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> are
+ <code class="constant">EGL_NO_SURFACE</code> ), then the viewport and
+ scissor regions are set as though
+ <code class="function">glViewport</code>(0,0,0,0) and
+ <code class="function">glScissor</code>(0,0,0,0) were called.
+ </p>
+ <p>
+ Implementations may delay allocation of auxiliary buffers for a
+ surface until they are required by a context (which may result
+ in the <code class="constant">EGL_BAD_ALLOC</code> error described
+ above). Once allocated, however, auxiliary buffers and their
+ contents persist until a surface is deleted.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>, and
+ <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>
+ to query the current rendering context and associated display connection and surfaces.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ If <em class="parameter"><code>draw</code></em> or <em class="parameter"><code>read</code></em>
+ are not compatible with <em class="parameter"><code>context</code></em>, then an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> is current to some other
+ thread, or if either <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> are bound to contexts in another
+ thread, an <code class="constant">EGL_BAD_ACCESS</code> error is
+ generated.
+ </p>
+ <p>
+ If binding <em class="parameter"><code>context</code></em> would exceed the
+ number of current contexts of that client API type supported by
+ the implementation, an <code class="constant">EGL_BAD_ACCESS</code> error
+ is generated.
+ </p>
+ <p>
+ If either <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> are pbuffers created with
+ <code class="function">eglCreatePbufferFromClientBuffer</code>, and the
+ underlying bound client API buffers are in use by the client API
+ that created them, an <code class="constant">EGL_BAD_ACCESS</code> error
+ is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> is not a valid context and is
+ not <code class="constant">EGL_NO_CONTEXT</code>, an
+ <code class="constant">EGL_BAD_CONTEXT</code> error is generated.
+ </p>
+ <p>
+ If either <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> are not valid EGL surfaces and are
+ not <code class="constant">EGL_NO_SURFACE</code>, an
+ <code class="constant">EGL_BAD_SURFACE</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> is
+ <code class="constant">EGL_NO_CONTEXT</code> and either
+ <em class="parameter"><code>draw</code></em> or <em class="parameter"><code>read</code></em> are
+ not <code class="constant">EGL_NO_SURFACE</code>, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If either of <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> is a valid surface and the other is
+ <code class="constant">EGL_NO_SURFACE</code>, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>context</code></em> does not support being bound
+ without <em class="parameter"><code>read</code></em> and
+ <em class="parameter"><code>draw</code></em> surfaces, and both
+ <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> are
+ <code class="constant">EGL_NO_SURFACE</code>, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If a native window underlying either <em class="parameter"><code>draw</code></em>
+ or <em class="parameter"><code>read</code></em> is no longer valid, an
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em>
+ cannot fit into graphics memory simultaneously, an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If the previous context of the calling thread has unflushed
+ commands, and the previous surface is no longer valid, an
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> error is generated.
+ </p>
+ <p>
+ If the ancillary buffers for <em class="parameter"><code>draw</code></em> and
+ <em class="parameter"><code>read</code></em> cannot be allocated, an
+ <code class="constant">EGL_BAD_ALLOC</code> error is generated.
+ </p>
+ <p>
+ If a power management event has occurred, an
+ <code class="constant">EGL_CONTEXT_LOST</code> error is generated.
+ </p>
+ <p>
+ If any of the following are true:
+
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ <em class="parameter"><code>context</code></em> is not
+ <code class="constant">EGL_NO_CONTEXT</code>
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <em class="parameter"><code>read</code></em> is not
+ <code class="constant">EGL_NO_SURFACE</code>
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <em class="parameter"><code>draw</code></em> is not
+ <code class="constant">EGL_NO_SURFACE</code>
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+
+ then an <code class="constant">EGL_NOT_INITIALIZED</code> error is
+ generated if <em class="parameter"><code>display</code></em> is a valid but
+ uninitialized display.
+ </p>
+ <p>
+ As with other commands taking <span class="type">EGLDisplay</span>
+ parameters, if <em class="parameter"><code>display</code></em> is not a valid
+ <span class="type">EGLDisplay</span> handle, an
+ <code class="constant">EGL_BAD_DISPLAY</code> error is generated. (Some
+ implementations have chosen to allow
+ <code class="constant">EGL_NO_DISPLAY</code> as a valid
+ <em class="parameter"><code>display</code></em> parameter for
+ <code class="function">eglMakeCurrent</code>. This behavior is not
+ portable to all EGL implementations, and should be considered as
+ an undocumented vendor extension).
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glReadPixels.xhtml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
+ <a class="citerefentry" href="glCopyTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>,
+ <a class="citerefentry" href="glCopyTexSubImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryAPI.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryAPI.xhtml
new file mode 100644
index 0000000..45e5a80
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryAPI.xhtml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQueryAPI - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglQueryAPI">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglQueryAPI — Query the current rendering API</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLenum <strong class="fsfunc">eglQueryAPI</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryAPI</code> returns the value of the
+ current rendering API for EGL in the thread it is called
+ from. The current rendering API is set by
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ and affects the behavior of other EGL commands.
+ </p>
+ <p>
+ The value returned will be one of the valid
+ <em class="parameter"><code>api</code></em> parameters to
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>, or
+ <code class="constant">EGL_NONE</code>.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglQueryAPI</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The initial value of the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <code class="constant">EGL_NONE</code> (however,
+ <code class="constant">EGL_NONE</code> is not a valid
+ <em class="parameter"><code>api</code></em> parameter to
+ <code class="function">eglQueryAPI</code>).
+ </p>
+ <p>
+ The current rendering API can be changed by calling
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ None.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryContext.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryContext.xhtml
new file mode 100644
index 0000000..c121448
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryContext.xhtml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQueryContext - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglQueryContext">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglQueryContext —
+ return <abbr class="acronym">EGL</abbr> rendering context information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglQueryContext</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLContext <var class="pdparam">context</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL rendering context to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL rendering context attribute to be returned.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryContext</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>context</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the context was created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the type of client API which the context
+ supports (one of
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, or
+ <code class="constant">EGL_OPENVG_API</code>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the version of the client API which the
+ context supports, as specified at context creation
+ time. The resulting value is only meaningful for an
+ OpenGL ES context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the buffer which client API rendering
+ via the context will use. The value returned
+ depends on properties of both the context, and
+ the surface to which the context is bound:
+ </p>
+ <div class="itemizedlist">
+ <ul style="list-style-type: disc; " class="itemizedlist">
+ <li class="listitem">
+ <p>
+ If the context is bound to a pixmap surface,
+ then <code class="constant">EGL_SINGLE_BUFFER</code> will
+ be returned.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is bound to a pbuffer surface,
+ then <code class="constant">EGL_BACK_BUFFER</code> will
+ be returned.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is bound to a window surface,
+ then either <code class="constant">EGL_BACK_BUFFER</code>
+ or <code class="constant">EGL_SINGLE_BUFFER</code> may be
+ returned. The value returned depends on both the
+ buffer requested by the setting of the
+ <code class="constant">EGL_RENDER_BUFFER</code> property
+ of the surface (which may be queried by calling
+ <code class="function">eglQuerySurface</code>), and on
+ the client API (not all client APIs support
+ single-buffer rendering to window surfaces).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is not bound to a surface, such
+ as an OpenGL ES context bound to a framebuffer
+ object, then <code class="constant">EGL_NONE</code> will
+ be returned.
+ </p>
+ </li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attributes <code class="constant">EGL_CONTEXT_CLIENT_TYPE</code> and
+ <code class="constant">EGL_RENDER_BUFFER</code> are supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> is
+ supported only if the EGL version is 1.3 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid context attribute.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryString.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryString.xhtml
new file mode 100644
index 0000000..663d046
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQueryString.xhtml
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQueryString - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglQueryString">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglQueryString —
+ return a string describing properties of the EGL client or of an
+ <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">char const * <strong class="fsfunc">eglQueryString</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">name</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>name</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a symbolic constant, one of
+ <code class="constant">EGL_CLIENT_APIS</code>,
+ <code class="constant">EGL_VENDOR</code>,
+ <code class="constant">EGL_VERSION</code>, or
+ <code class="constant">EGL_EXTENSIONS</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryString</code> returns a pointer to a
+ static, zero-terminated string describing properties of the EGL
+ client or of an EGL display connection.
+ <em class="parameter"><code>name</code></em> may be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CLIENT_APIS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a string describing which client rendering
+ APIs are supported. The string contains a
+ space-separated list of API names. The list must
+ include at least one of <code class="code">OpenGL</code>,
+ <code class="code">OpenGL_ES</code>, or <code class="code">OpenVG</code>.
+ These strings correspond respectively to values
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, and
+ <code class="constant">EGL_OPENVG_API</code> of the
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <em class="parameter"><code>api</code></em> argument.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VENDOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the name of the vendor responsible for this EGL
+ implementation. The format and contents of the string
+ are implementation-dependent.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a version or release number. The
+ <code class="constant">EGL_VERSION</code> string is laid out
+ as follows:
+ </p>
+ <p>
+ <em class="replaceable"><code>major_version</code></em>.<em class="replaceable"><code>minor_version</code></em>
+ space
+ <em class="replaceable"><code>vendor_specific_info</code></em>
+ </p>
+ <p>
+ Both the major and minor portions of the version
+ number are numeric. Their values must match the
+ <em class="parameter"><code>major</code></em> and
+ <em class="parameter"><code>minor</code></em> values returned by
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>.
+ </p>
+ <p>
+ The vendor-specific information is optional; if
+ present, its format and contents are
+ implementation-specific.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_EXTENSIONS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a space separated list of supported
+ extensions to EGL. If there are no extensions, then
+ the empty string is returned.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> is
+ <code class="constant">EGL_NO_DISPLAY</code>, then the
+ <code class="constant">EGL_EXTENSIONS</code> string describes
+ the set of supported <em class="firstterm">client
+ extensions</em>. If
+ <em class="parameter"><code>display</code></em> is a valid,
+ initialized display, then the
+ <code class="constant">EGL_EXTENSIONS</code> string describes
+ the set of <em class="firstterm">display extensions</em>
+ supported by that display. The set of supported
+ client extensions is disjoint from the set of
+ extensions supported by any given display.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_CLIENT_APIS</code> is supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ A <em class="parameter"><code>display</code></em> of
+ <code class="constant">EGL_NO_DISPLAY</code> is supported only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">NULL</code> is returned on failure.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection,
+ unless <em class="parameter"><code>display</code></em> is
+ <code class="constant">EGL_NO_DISPLAY</code> and
+ <em class="parameter"><code>name</code></em> is
+ <code class="constant">EGL_EXTENSIONS</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> is a valid but uninitialized
+ EGLDisplay.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>name</code></em> is not an accepted value.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglQuerySurface.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQuerySurface.xhtml
new file mode 100644
index 0000000..14b4be2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglQuerySurface.xhtml
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQuerySurface - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglQuerySurface">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglQuerySurface —
+ return <abbr class="acronym">EGL</abbr> surface information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglQuerySurface</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint * <var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface attribute to be returned.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQuerySurface</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>surface</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the surface was created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GL_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the color space used by OpenGL and OpenGL ES
+ when rendering to the surface, either
+ <code class="constant">EGL_GL_COLORSPACE_SRGB</code> or
+ <code class="constant">EGL_GL_COLORSPACE_LINEAR</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the height of the surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the horizontal dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LARGEST_PBUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the same attribute value specified when the
+ surface was created with
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>.
+ For a window or pixmap surface,
+ <em class="parameter"><code>value</code></em> is not modified.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns which level of the mipmap to render to, if
+ texture has mipmaps.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns <code class="constant">EGL_TRUE</code> if texture has
+ mipmaps, <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the filter used when resolving the
+ multisample buffer. The filter may be either
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
+ or <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>,
+ as described for
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the aspect ratio of an individual pixel (the
+ ratio of a pixel's width to its height). The value
+ returned is equal to the actual aspect ratio
+ multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the buffer which client API rendering is
+ requested to use. For a window surface, this is the
+ same attribute value specified when the surface was
+ created. For a pbuffer surface, it is always
+ <code class="constant">EGL_BACK_BUFFER</code>. For a pixmap
+ surface, it is always
+ <code class="constant">EGL_SINGLE_BUFFER</code>. To determine
+ the actual buffer being rendered to by a context,
+ call
+ <a class="citerefentry" href="eglQueryContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the effect on the color buffer when posting
+ a surface with
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
+ Swap behavior may be either
+ <code class="constant">EGL_BUFFER_PRESERVED</code> or
+ <code class="constant">EGL_BUFFER_DESTROYED</code>, as
+ described for
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns format of texture. Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns type of texture. Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the vertical dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the interpretation of alpha values used by
+ OpenVG when rendering to the surface, either
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code> or
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the color space used by OpenVG when rendering to
+ the surface, either
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code> or
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the width of the surface in pixels.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_GL_COLORSPACE</code> is supported
+ only if the EGL version is 1.5 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ Attributes <code class="constant">EGL_DISPLAY_SCALING</code>.
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>,
+ <code class="constant">EGL_RENDER_BUFFER</code>,
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>, and
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code> are supported
+ only if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Querying attributes <code class="constant">EGL_TEXTURE_FORMAT</code>,
+ <code class="constant">EGL_TEXTURE_TARGET</code>,
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>, or
+ <code class="constant">EGL_MIPMAP_LEVEL</code> for a non-pbuffer
+ surface is not an error, but <em class="parameter"><code>value</code></em> is
+ not modified.
+ </p>
+ <p>
+ <code class="constant">EGL_DISPLAY_SCALING</code> is the constant
+ value 10000. Floating-point values such as resolution and
+ pixel aspect ratio are scaled by this value before being
+ returned as integers so that sufficient precision to be
+ meaningful will be retained in the returned value.
+ </p>
+ <p>
+ For an offscreen (pbuffer or pixmap) surface, or a surface
+ whose pixel dot pitch or aspect ratio are unknown, querying
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>, or
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code> will return the
+ constant value <code class="constant">EGL_UNKNOWN</code> (-1).
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseTexImage.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseTexImage.xhtml
new file mode 100644
index 0000000..7040263
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseTexImage.xhtml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglReleaseTexImage - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglReleaseTexImage">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglReleaseTexImage —
+ Releases a color buffer that is being used as a texture
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglReleaseTexImage</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">buffer</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the texture image data.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ The specified color buffer is released back to the surface. The surface is made
+ available for reading and writing when it no longer has any color buffers bound as
+ textures.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ If the specified color buffer is no longer bound to a texture (e.g., because the
+ texture object was deleted) then eglReleaseTexImage has no effect. No error is
+ generated.
+ </p>
+ <p>
+ The contents of the color buffer are undefined when it is first released. In particular,
+ there is no guarantee that the texture image is still present. However, the contents of
+ other color buffers are unaffected by this call. Also, the contents of the depth and stencil buffers
+ are not affected by <a class="citerefentry" href="eglBindTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>
+ and <code class="function">eglReleaseTexImage</code>.
+ </p>
+ <p>
+ After a color buffer is released from a texture (either explicitly by calling
+ <code class="function">eglReleaseTexImage</code> or implicitly by calling a routine such as
+ <a class="citerefentry" href="glTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a>),
+ all texture images that were defined by the color buffer become <code class="constant">NULL</code>
+ (it is as if <a class="citerefentry" href="glTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">glTexImage</span></span></a> was called with an image of zero width).
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ surface attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ set to <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is not a valid buffer
+ (currently only <code class="constant">EGL_BACK_BUFFER</code> may be
+ specified).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface, or is
+ not a bound pbuffer surface.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindTexImage.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseThread.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseThread.xhtml
new file mode 100644
index 0000000..a894b68
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglReleaseThread.xhtml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglReleaseThread - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglReleaseThread">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglReleaseThread — Release EGL per-thread state</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglReleaseThread</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglReleaseThread</code> returns the EGL to its
+ state at thread initialization, releasing all per-thread
+ state including the error status returned by
+ <span class="command"><strong>eglGetError</strong></span>, the currently bound
+ rendering API defined by <span class="command"><strong>eglBindAPI</strong></span>, and
+ the current contexts for each supported client API. The
+ overhead of maintaining this state may be objectionable in
+ applications which create and destroy many threads, but only
+ call EGL or client APIs in a few of those threads at any
+ given time.
+ </p>
+ <p>
+ <code class="constant">EGL_TRUE</code> is returned on success, and the
+ following actions are taken:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ For each client API supported by EGL, if there is a
+ currently bound context, that context is released.
+ This is equivalent to calling
+ <code class="function">eglMakeCurrent</code> with ctx set to
+ <code class="constant">EGL_NO_CONTEXT</code> and both draw
+ and read set to <code class="constant">EGL_NO_SURFACE</code>
+ (see section 3.7.3).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The current rendering API is reset to its value at
+ thread initialization (see
+ <span class="command"><strong>eglBindAPI</strong></span>).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Any additional implementation-dependent per-thread
+ state maintained by EGL is marked for deletion as
+ soon as possible.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ <code class="function">eglReleaseThread</code> may be called in any
+ thread at any time, and may be called more than once in a
+ single thread. The initialization status of EGL (see section
+ 3.2) is not affected by releasing the thread; only
+ per-thread state is affected.
+ </p>
+ <p>
+ Resources explicitly allocated by calls to EGL, such as
+ contexts, surfaces, and configuration lists, are not
+ affected by <code class="function">eglReleaseThread</code>. Such
+ resources belong not to the thread, but to the EGL
+ implementation as a whole.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglReleaseThread</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Applications may call other EGL routines from a thread
+ following <code class="function">eglReleaseThread</code>, but any
+ such call may reallocate the EGL state previously released.
+ In particular, calling <code class="function">eglGetError</code>
+ immediately following a successful call to
+ <code class="function">eglReleaseThread</code> will return
+ <code class="constant">EGL_SUCCESS</code>, but will also result in
+ reallocating per-thread state.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise. There are no
+ defined conditions under which failure will occur. Even if
+ EGL is not initialized on any EGLDisplay,
+ <code class="function">eglReleaseThread</code> should succeed.
+ </p>
+ <p>
+ However, platform-dependent failures may be signaled through
+ the value returned from <code class="function">eglGetError</code>.
+ Unless the platform-dependent behavior is known, a failed
+ call to <code class="function">eglReleaseThread</code> should be
+ assumed to leave the current rendering API, and the
+ currently bound contexts for each supported client API, in
+ an unknown state.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglGetError.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetError</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglSurfaceAttrib.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSurfaceAttrib.xhtml
new file mode 100644
index 0000000..0da8ac3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSurfaceAttrib.xhtml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglSurfaceAttrib - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglSurfaceAttrib">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglSurfaceAttrib —
+ set an <abbr class="acronym">EGL</abbr> surface attribute
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglSurfaceAttrib</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">value</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface attribute to set.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the attributes required value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglSurfaceAttrib</code> sets the value of
+ <em class="parameter"><code>attribute</code></em> for
+ <em class="parameter"><code>surface</code></em> to
+ <em class="parameter"><code>value</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the
+ following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ For mipmap textures, the
+ <code class="constant">EGL_MIPMAP_LEVEL</code> attribute
+ indicates which level of the mipmap should be
+ rendered. If the value of this attribute is outside
+ the range of supported mipmap levels, the closest
+ valid mipmap level is selected for rendering. The
+ default value is <code class="constant">0</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the filter to use when resolving the
+ multisample buffer (this may occur when swapping or
+ copying the surface, or when changing the client API
+ context bound to the surface). A
+ <em class="parameter"><code>value</code></em> of
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
+ chooses the default implementation-defined filtering
+ method, while
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>
+ chooses a one-pixel wide box filter placing equal
+ weighting on all multisample values.
+ </p>
+ <p>
+ The initial value of
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the effect on the color buffer of posting
+ a surface with
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
+ A <em class="parameter"><code>value</code></em> of
+ <code class="constant">EGL_BUFFER_PRESERVED</code> indicates
+ that color buffer contents are unaffected, while
+ <code class="constant">EGL_BUFFER_DESTROYED</code> indicates
+ that color buffer contents may be destroyed or
+ changed by the operation.
+ </p>
+ <p>
+ The initial value of
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> is chosen by
+ the implementation.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is
+ supported only if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If the value of pbuffer attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>, the value of attribute
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>, or
+ <em class="parameter"><code>surface</code></em> is not a pbuffer, then
+ attribute <code class="constant">EGL_MIPMAP_LEVEL</code> may be set,
+ but has no effect.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>,
+ <em class="parameter"><code>value</code></em> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>, and the
+ <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create
+ <em class="parameter"><code>surface</code></em> does not contain
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>,
+ <em class="parameter"><code>value</code></em> is
+ <code class="constant">EGL_BUFFER_PRESERVED</code>, and the
+ <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create
+ <em class="parameter"><code>surface</code></em> does not contain
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapBuffers.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapBuffers.xhtml
new file mode 100644
index 0000000..b256152
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapBuffers.xhtml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglSwapBuffers - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglSwapBuffers">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglSwapBuffers —
+ post <abbr class="acronym">EGL</abbr> surface color buffer to a native window
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapBuffers</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSurface <var class="pdparam">surface</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL drawing surface whose buffers are to be swapped.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ If <em class="parameter"><code>surface</code></em> is a back-buffered window
+ surface, then the color
+ buffer is copied (posted) to the native window associated with that
+ surface. If <em class="parameter"><code>surface</code></em> is a single-buffered
+ window, pixmap, or pixel buffer surface,
+ <code class="function">eglSwapBuffers</code> has no effect.
+ </p>
+ <p>
+ The contents of ancillary buffers are always undefined after
+ calling <code class="function">eglSwapBuffers</code>. The contents of the
+ color buffer are undefined if the value of the
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> attribute of
+ <em class="parameter"><code>surface</code></em> is not
+ <code class="constant">EGL_BUFFER_PRESERVED</code>. The value of
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> can be set for some
+ surfaces using
+ <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> applies only to the color
+ buffer. EGL has no way to specify or query whether or not
+ ancillary buffers are preserved, and applications should not
+ rely on this behavior.
+ </p>
+ <p>
+ <code class="function">eglSwapBuffers</code> performs an implicit
+ flush operation on the context (<code class="function">glFlush</code>
+ for an OpenGL ES or OpenGL context,
+ <code class="function">vgFlush</code> for an OpenVG context) bound to
+ <em class="parameter"><code>surface</code></em> before swapping. Subsequent
+ client API commands may be issued on that context
+ immediately after calling
+ <code class="function">eglSwapBuffers</code>, but are not executed
+ until the buffer exchange is completed.
+ </p>
+ </div>
+ <div class="refsect1" id="resize">
+ <h2>Native Window Resizing</h2>
+ <p>
+ If the native window corresponding to
+ <em class="parameter"><code>surface</code></em> has been resized prior to the
+ swap, <em class="parameter"><code>surface</code></em> must be resized to match.
+ <em class="parameter"><code>surface</code></em> will normally be resized by the
+ EGL implementation at the time the native window is resized. If
+ the implementation cannot do this transparently to the client,
+ then <code class="function">eglSwapBuffers</code> must detect the change
+ and resize surface prior to copying its pixels to the native
+ window. If <em class="parameter"><code>surface</code></em> shrinks as a result of
+ resizing, some rendered pixels are lost. If
+ <em class="parameter"><code>surface</code></em> grows, the newly allocated buffer
+ contents are undefined. The resizing behavior described here
+ only maintains consistency of EGL surfaces and native windows;
+ clients are still responsible for detecting window size changes
+ (using platform-specific means) and changing their viewport and
+ scissor regions accordingly.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is supported
+ only if the EGL version is 1.2 or greater. In earlier versions,
+ behavior is as though the attribute exists, and always has the
+ value <code class="constant">EGL_BUFFER_DESTROYED</code>.
+ </p>
+ <p>
+ The EGL 1.4 specification was updated to acknowledge that
+ ancillary buffers are not necessarily preserved after a swap,
+ and that the <code class="constant">EGL_SWAP_BEHAVIOR</code> attribute
+ applies only to the color buffer. This change in the
+ specification acknowledged the behavior of many shipping
+ implementations, and is not intended to result in behavior
+ changes in any existing implementation.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if swapping of the
+ surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <code class="function">glFlush</code>,
+ <a class="citerefentry" href="eglCopyBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>,
+ <code class="function">vgFlush</code>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapInterval.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapInterval.xhtml
new file mode 100644
index 0000000..80eb980
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglSwapInterval.xhtml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglSwapInterval - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglSwapInterval">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglSwapInterval —
+ specifies the minimum number of video frame periods
+ per buffer swap for the window associated with the current context.
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapInterval</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">interval</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>interval</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the minimum number of video frames that are displayed before
+ a buffer swap will occur.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ The interval takes effect when <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a> is
+ first called subsequent to the <code class="function">eglSwapInterval</code> call.
+ </p>
+ <p>
+ The <em class="parameter"><code>interval</code></em> specified by the function applies to the draw surface
+ bound to the context that is current on the calling thread.
+ </p>
+ <p>
+ If <em class="parameter"><code>interval</code></em> is set to a value of <code class="constant">0</code>, buffer swaps are not synchronized to a
+ video frame, and the swap happens as soon as the render is complete. interval
+ is silently clamped to minimum and maximum implementation dependent
+ valuesbefore being stored; these values are defined by <span class="type">EGLConfig</span> attributes
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code> and <code class="constant">EGL_MAX_SWAP_INTERVAL</code> respectively.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ The swap interval has no effect on <a class="citerefentry" href="eglCopyBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>.
+ </p>
+ <p>
+ The default swap interval is 1.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if there is no current context
+ on the calling thread.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if there is no surface
+ bound to the current context.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglTerminate.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglTerminate.xhtml
new file mode 100644
index 0000000..4c32f9b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglTerminate.xhtml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglTerminate - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglTerminate">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglTerminate —
+ terminate an <abbr class="acronym">EGL</abbr> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglTerminate</strong>(</code>
+ </td>
+ <td>EGLDisplay <var class="pdparam">display</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection to terminate.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglTerminate</code> releases resources associated with
+ an EGL display connection. Termination marks all EGL resources associated
+ with the EGL display connection for deletion. If contexts or surfaces
+ associated with <em class="parameter"><code>display</code></em> is current to any thread,
+ they are not released until they are no longer current as a result of
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ </p>
+ <p>
+ Terminating an already terminated EGL display connection has no effect.
+ A terminated display may be re-initialized by calling
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ again.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglTerminate</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitClient.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitClient.xhtml
new file mode 100644
index 0000000..5f88491
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitClient.xhtml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglWaitClient - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglWaitClient">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglWaitClient —
+ Complete client API execution prior to subsequent native
+ rendering calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitClient</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ All rendering calls for the currently bound context, for the
+ current rendering API, made prior to
+ <code class="function">eglWaitClient</code> are guaranteed to be
+ executed before native rendering calls made after
+ <code class="function">eglWaitClient</code>. The same result can be
+ achieved using client API-specific commands such as
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>
+ or
+ <a class="citerefentry" href="vgFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">vgFinish</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is ignored if there is no
+ current EGL rendering context for the current rendering API.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglWaitClient</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ If there is no current context for the current rendering
+ API, the function has no effect but still returns
+ <code class="constant">EGL_TRUE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitClient</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is a generalized version
+ of <code class="function">eglWaitGL</code>, supporting multiple
+ client APIs.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>,
+ <a class="citerefentry" href="vgFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">vgFinish</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitGL.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitGL.xhtml
new file mode 100644
index 0000000..020a502
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitGL.xhtml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglWaitGL - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglWaitGL">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglWaitGL —
+ Complete GL execution prior to subsequent native rendering
+ calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitGL</strong>(</code>
+ </td>
+ <td><code>void)</code>;</td>
+ <td> </td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ All OpenGL ES rendering calls for the currently bound OpenGL
+ ES context made prior to <code class="function">eglWaitGL</code> are
+ guaranteed to be executed before native rendering calls made
+ after <code class="function">eglWaitGL</code>. The same result can be
+ achieved using
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglWaitGL</code> is ignored if there is no
+ current EGL rendering context for OpenGL ES.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitClient</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is a generalized version
+ of <code class="function">eglWaitGL</code>, supporting multiple
+ client APIs. For backwards compatibility,
+ <code class="function">eglWaitGL</code> continues to be supported and
+ is equivalent to the series of commands
+ </p>
+ <pre class="programlisting">
+ EGLenum api = <code class="function">eglQueryAPI</code>();
+ <code class="function">eglBindAPI</code>(<code class="constant">EGL_OPENGL_ES_API</code>);
+ <code class="function">eglWaitClient</code>();
+ <code class="function">eglBindAPI</code>(api);
+ </pre>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglWaitGL</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>
+ <a class="citerefentry" href="eglWaitNative.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitNative.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitNative.xhtml
new file mode 100644
index 0000000..16cf5dd
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitNative.xhtml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglWaitNative - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglWaitNative">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglWaitNative —
+ complete native execution prior to subsequent GL rendering calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitNative</strong>(</code>
+ </td>
+ <td>EGLint <var class="pdparam">engine</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>engine</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a particular marking engine to be waited on.
+ Must be <code class="constant">EGL_CORE_NATIVE_ENGINE</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ Native rendering calls made prior to <code class="function">eglWaitNative</code>
+ are guaranteed to be executed before GL rendering calls made after
+ <code class="function">eglWaitNative</code>.
+ </p>
+ <p>
+ <code class="function">eglWaitNative</code>
+ is ignored if there is no current
+ <abbr class="acronym">EGL</abbr>
+ rendering context.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>engine</code></em> is not a recognized marking engine.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code>
+ is generated if the surface associated with the current context has a
+ native window or pixmap, and that window or pixmap is no longer valid.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.xhtml"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.xhtml"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitSync.xhtml b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitSync.xhtml
new file mode 100644
index 0000000..4eeff76
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/eglWaitSync.xhtml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title xmlns:xlink="http://www.w3.org/1999/xlink">eglWaitSync - EGL Reference Pages</title>
+ <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
+ </head>
+ <body>
+ <header/>
+ <div class="refentry" id="eglWaitSync">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h2>Name</h2>
+ <p>eglWaitSync —
+ Wait in the server for a sync object to be signalled
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
+ <tr>
+ <td>
+ <code class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitSync</strong>(</code>
+ </td>
+ <td>(EGLDisplay <var class="pdparam">display</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLSync <var class="pdparam">sync</var>, </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td>EGLint <var class="pdparam">flags</var><code>)</code>;</td>
+ </tr>
+ </table>
+ <div class="funcprototype-spacer"> </div>
+ </div>
+ </div>
+ <div class="refsect1" id="parameters">
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the <abbr class="acronym">EGL</abbr> display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>sync</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the sync object to wait on.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>flags</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies flags controlling wait behavior.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglWaitSync</code> is similar to
+ <code class="function">eglClientWaitSync</code>, but instead of blocking
+ and not returning to the application until
+ <em class="parameter"><code>sync</code></em> is signaled,
+ <code class="function">eglWaitSync</code> returns immediately. On
+ success, <code class="constant">EGL_TRUE</code> is returned, and the
+ server for the client API context will block until
+ <em class="parameter"><code>sync</code></em> is signaled.
+ </p>
+ <p>
+ Note: <code class="function">eglWaitSync</code> allows applications to
+ continue to queue commands from the application in anticipation
+ of the sync being signaled, potentially increasing parallelism
+ between application, client API server code, and the GPU. The
+ server only blocks execution of commands for the specific
+ context on which <code class="function">eglWaitSync</code> was issued;
+ other contexts implemented by the same server are not affected..
+ </p>
+ <p>
+ <em class="parameter"><code>sync</code></em> has the same meaning as for
+ <code class="function">eglClientWaitSync</code>.
+ </p>
+ <p>
+ <em class="parameter"><code>flags</code></em> must be 0.
+ </p>
+ <p>
+ <code class="function">eglWaitSync</code> requires support from the bound
+ client API, and will not succeed unless the same client API
+ properties described for creation of fence syncs in
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>
+ are satisfied.
+ </p>
+ </div>
+ <div class="refsect1" id="errors">
+ <h2>Errors</h2>
+ <p>
+ <code class="function">eglWaitSync</code> returns
+ <code class="constant">EGL_FALSE</code> on failure, and does not cause
+ the server for the client API context to block.
+ </p>
+ <p>
+ If the current context for the currently bound client API does
+ not support server waits, an <code class="constant">EGL_BAD_MATCH</code>
+ error is generated.
+ </p>
+ <p>
+ If no context is current for the currently bound client API
+ (i.e., <code class="function">eglGetCurrentContext</code> returns
+ <code class="constant">EGL_NO_CONTEXT</code>), an
+ <code class="constant">EGL_BAD_MATCH</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> does not match the
+ <span class="type">EGLDisplay</span> passed to
+ <code class="function">eglCreateSync</code> when
+ <em class="parameter"><code>sync</code></em> was created, the behavior is
+ undefined.
+ </p>
+ <p>
+ If <em class="parameter"><code>sync</code></em> is not a valid sync object for
+ <em class="parameter"><code>display</code></em>, an
+ <code class="constant">EGL_BAD_PARAMETER</code> error is generated.
+ </p>
+ <p>
+ If <em class="parameter"><code>flags</code></em> is not 0, an
+ <code class="constant">EGL_BAD_PARAMETER</code> error is generated.
+ </p>
+ </div>
+ <div class="refsect1" id="notes">
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitSync</code> is available only if the EGL
+ version is 1.5 or greater.
+ </p>
+ </div>
+ <div class="refsect1" id="seealso">
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglClientWaitSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglClientWaitSync</span></span></a>,
+ <a class="citerefentry" href="eglCreateSync.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateSync</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>
+ </p>
+ </div>
+ <p>
+ </p>
+ <div class="refsect3" id="copyright">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright © 2003-2014 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ <p>
+</p>
+ </div>
+ <footer/>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/index.php b/glew/auto/EGL-Registry/sdk/docs/man/html/index.php
new file mode 100644
index 0000000..70d55cb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/index.php
@@ -0,0 +1,121 @@
+<html>
+<head>
+ <link rel="stylesheet" type="text/css" href="style-index.css" />
+ <title>EGL Reference Pages</title>
+ <?php include 'accord.js'; ?>
+</head>
+<body>
+ <a href="indexflat.php">Use alternate (flat) index</a>
+ <div id="navwrap">
+ <ul id="containerul"> <!-- Must wrap entire list for expand/contract -->
+ <li class="Level1">
+ <a href="start.html" target="pagedisplay">Introduction</a>
+ </li>
+ <li class="Level1">EGL Entry Points
+ <ul class="Level2">
+ <a name="b"></a>
+ <li>b
+ <ul class="Level3">
+ <li><a href="eglBindAPI.xhtml" target="pagedisplay">eglBindAPI</a></li>
+ <li><a href="eglBindTexImage.xhtml" target="pagedisplay">eglBindTexImage</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="c"></a>
+ <li>c
+ <ul class="Level3">
+ <li><a href="eglChooseConfig.xhtml" target="pagedisplay">eglChooseConfig</a></li>
+ <li><a href="eglClientWaitSync.xhtml" target="pagedisplay">eglClientWaitSync</a></li>
+ <li><a href="eglCopyBuffers.xhtml" target="pagedisplay">eglCopyBuffers</a></li>
+ <li><a href="eglCreateContext.xhtml" target="pagedisplay">eglCreateContext</a></li>
+ <li><a href="eglCreateImage.xhtml" target="pagedisplay">eglCreateImage</a></li>
+ <li><a href="eglCreatePbufferFromClientBuffer.xhtml" target="pagedisplay">eglCreatePbufferFromClientBuffer</a></li>
+ <li><a href="eglCreatePbufferSurface.xhtml" target="pagedisplay">eglCreatePbufferSurface</a></li>
+ <li><a href="eglCreatePixmapSurface.xhtml" target="pagedisplay">eglCreatePixmapSurface</a></li>
+ <li><a href="eglCreatePlatformPixmapSurface.xhtml" target="pagedisplay">eglCreatePlatformPixmapSurface</a></li>
+ <li><a href="eglCreatePlatformWindowSurface.xhtml" target="pagedisplay">eglCreatePlatformWindowSurface</a></li>
+ <li><a href="eglCreateSync.xhtml" target="pagedisplay">eglCreateSync</a></li>
+ <li><a href="eglCreateWindowSurface.xhtml" target="pagedisplay">eglCreateWindowSurface</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="d"></a>
+ <li>d
+ <ul class="Level3">
+ <li><a href="eglDestroyContext.xhtml" target="pagedisplay">eglDestroyContext</a></li>
+ <li><a href="eglDestroyImage.xhtml" target="pagedisplay">eglDestroyImage</a></li>
+ <li><a href="eglDestroySurface.xhtml" target="pagedisplay">eglDestroySurface</a></li>
+ <li><a href="eglDestroySync.xhtml" target="pagedisplay">eglDestroySync</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="g"></a>
+ <li>g
+ <ul class="Level3">
+ <li><a href="eglGetConfigAttrib.xhtml" target="pagedisplay">eglGetConfigAttrib</a></li>
+ <li><a href="eglGetConfigs.xhtml" target="pagedisplay">eglGetConfigs</a></li>
+ <li><a href="eglGetCurrentContext.xhtml" target="pagedisplay">eglGetCurrentContext</a></li>
+ <li><a href="eglGetCurrentDisplay.xhtml" target="pagedisplay">eglGetCurrentDisplay</a></li>
+ <li><a href="eglGetCurrentSurface.xhtml" target="pagedisplay">eglGetCurrentSurface</a></li>
+ <li><a href="eglGetDisplay.xhtml" target="pagedisplay">eglGetDisplay</a></li>
+ <li><a href="eglGetError.xhtml" target="pagedisplay">eglGetError</a></li>
+ <li><a href="eglGetPlatformDisplay.xhtml" target="pagedisplay">eglGetPlatformDisplay</a></li>
+ <li><a href="eglGetProcAddress.xhtml" target="pagedisplay">eglGetProcAddress</a></li>
+ <li><a href="eglGetSyncAttrib.xhtml" target="pagedisplay">eglGetSyncAttrib</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="i"></a>
+ <li>i
+ <ul class="Level3">
+ <li><a href="eglInitialize.xhtml" target="pagedisplay">eglInitialize</a></li>
+ <li><a href="eglIntro.xhtml" target="pagedisplay">eglIntro</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="m"></a>
+ <li>m
+ <ul class="Level3">
+ <li><a href="eglMakeCurrent.xhtml" target="pagedisplay">eglMakeCurrent</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="q"></a>
+ <li>q
+ <ul class="Level3">
+ <li><a href="eglQueryAPI.xhtml" target="pagedisplay">eglQueryAPI</a></li>
+ <li><a href="eglQueryContext.xhtml" target="pagedisplay">eglQueryContext</a></li>
+ <li><a href="eglQueryString.xhtml" target="pagedisplay">eglQueryString</a></li>
+ <li><a href="eglQuerySurface.xhtml" target="pagedisplay">eglQuerySurface</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="r"></a>
+ <li>r
+ <ul class="Level3">
+ <li><a href="eglReleaseTexImage.xhtml" target="pagedisplay">eglReleaseTexImage</a></li>
+ <li><a href="eglReleaseThread.xhtml" target="pagedisplay">eglReleaseThread</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="s"></a>
+ <li>s
+ <ul class="Level3">
+ <li><a href="eglSurfaceAttrib.xhtml" target="pagedisplay">eglSurfaceAttrib</a></li>
+ <li><a href="eglSwapBuffers.xhtml" target="pagedisplay">eglSwapBuffers</a></li>
+ <li><a href="eglSwapInterval.xhtml" target="pagedisplay">eglSwapInterval</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="t"></a>
+ <li>t
+ <ul class="Level3">
+ <li><a href="eglTerminate.xhtml" target="pagedisplay">eglTerminate</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="w"></a>
+ <li>w
+ <ul class="Level3">
+ <li><a href="eglWaitClient.xhtml" target="pagedisplay">eglWaitClient</a></li>
+ <li><a href="eglWaitGL.xhtml" target="pagedisplay">eglWaitGL</a></li>
+ <li><a href="eglWaitNative.xhtml" target="pagedisplay">eglWaitNative</a></li>
+ <li><a href="eglWaitSync.xhtml" target="pagedisplay">eglWaitSync</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ </ul> <!-- End Level2 -->
+ </li> <!-- End Level1 -->
+ </div> <!-- End containerurl -->
+ <script type="text/javascript">initiate();</script>
+</body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/indexflat.php b/glew/auto/EGL-Registry/sdk/docs/man/html/indexflat.php
new file mode 100644
index 0000000..a272d65
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/indexflat.php
@@ -0,0 +1,135 @@
+<html>
+<head>
+ <link rel="stylesheet" type="text/css" href="style-index.css" />
+ <title>EGL Reference Pages</title>
+ <!-- Don't include accord.js -->
+</head>
+<body>
+ <a href="index.php">Use alternate (accordion-style) index</a>
+ <center>
+<div id="container">
+ <b><a href="#b" style="text-decoration:none">b</a></b> &nbsp;
+ <b><a href="#c" style="text-decoration:none">c</a></b> &nbsp;
+ <b><a href="#d" style="text-decoration:none">d</a></b> &nbsp;
+ <b><a href="#g" style="text-decoration:none">g</a></b> &nbsp;
+ <b><a href="#i" style="text-decoration:none">i</a></b> &nbsp;
+ <b><a href="#m" style="text-decoration:none">m</a></b> &nbsp;
+ <b><a href="#q" style="text-decoration:none">q</a></b> &nbsp;
+ <b><a href="#r" style="text-decoration:none">r</a></b> &nbsp;
+ <b><a href="#s" style="text-decoration:none">s</a></b> &nbsp;
+ <b><a href="#t" style="text-decoration:none">t</a></b> &nbsp;
+ <b><a href="#w" style="text-decoration:none">w</a></b> &nbsp;
+ </div>
+</center>
+ <div id="navwrap">
+ <ul id="containerul"> <!-- Must wrap entire list for expand/contract -->
+ <li class="Level1">
+ <a href="start.html" target="pagedisplay">Introduction</a>
+ </li>
+ <li class="Level1">EGL Entry Points
+ <ul class="Level2">
+ <a name="b"></a>
+ <li>b
+ <ul class="Level3">
+ <li><a href="eglBindAPI.xhtml" target="pagedisplay">eglBindAPI</a></li>
+ <li><a href="eglBindTexImage.xhtml" target="pagedisplay">eglBindTexImage</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="c"></a>
+ <li>c
+ <ul class="Level3">
+ <li><a href="eglChooseConfig.xhtml" target="pagedisplay">eglChooseConfig</a></li>
+ <li><a href="eglClientWaitSync.xhtml" target="pagedisplay">eglClientWaitSync</a></li>
+ <li><a href="eglCopyBuffers.xhtml" target="pagedisplay">eglCopyBuffers</a></li>
+ <li><a href="eglCreateContext.xhtml" target="pagedisplay">eglCreateContext</a></li>
+ <li><a href="eglCreateImage.xhtml" target="pagedisplay">eglCreateImage</a></li>
+ <li><a href="eglCreatePbufferFromClientBuffer.xhtml" target="pagedisplay">eglCreatePbufferFromClientBuffer</a></li>
+ <li><a href="eglCreatePbufferSurface.xhtml" target="pagedisplay">eglCreatePbufferSurface</a></li>
+ <li><a href="eglCreatePixmapSurface.xhtml" target="pagedisplay">eglCreatePixmapSurface</a></li>
+ <li><a href="eglCreatePlatformPixmapSurface.xhtml" target="pagedisplay">eglCreatePlatformPixmapSurface</a></li>
+ <li><a href="eglCreatePlatformWindowSurface.xhtml" target="pagedisplay">eglCreatePlatformWindowSurface</a></li>
+ <li><a href="eglCreateSync.xhtml" target="pagedisplay">eglCreateSync</a></li>
+ <li><a href="eglCreateWindowSurface.xhtml" target="pagedisplay">eglCreateWindowSurface</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="d"></a>
+ <li>d
+ <ul class="Level3">
+ <li><a href="eglDestroyContext.xhtml" target="pagedisplay">eglDestroyContext</a></li>
+ <li><a href="eglDestroyImage.xhtml" target="pagedisplay">eglDestroyImage</a></li>
+ <li><a href="eglDestroySurface.xhtml" target="pagedisplay">eglDestroySurface</a></li>
+ <li><a href="eglDestroySync.xhtml" target="pagedisplay">eglDestroySync</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="g"></a>
+ <li>g
+ <ul class="Level3">
+ <li><a href="eglGetConfigAttrib.xhtml" target="pagedisplay">eglGetConfigAttrib</a></li>
+ <li><a href="eglGetConfigs.xhtml" target="pagedisplay">eglGetConfigs</a></li>
+ <li><a href="eglGetCurrentContext.xhtml" target="pagedisplay">eglGetCurrentContext</a></li>
+ <li><a href="eglGetCurrentDisplay.xhtml" target="pagedisplay">eglGetCurrentDisplay</a></li>
+ <li><a href="eglGetCurrentSurface.xhtml" target="pagedisplay">eglGetCurrentSurface</a></li>
+ <li><a href="eglGetDisplay.xhtml" target="pagedisplay">eglGetDisplay</a></li>
+ <li><a href="eglGetError.xhtml" target="pagedisplay">eglGetError</a></li>
+ <li><a href="eglGetPlatformDisplay.xhtml" target="pagedisplay">eglGetPlatformDisplay</a></li>
+ <li><a href="eglGetProcAddress.xhtml" target="pagedisplay">eglGetProcAddress</a></li>
+ <li><a href="eglGetSyncAttrib.xhtml" target="pagedisplay">eglGetSyncAttrib</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="i"></a>
+ <li>i
+ <ul class="Level3">
+ <li><a href="eglInitialize.xhtml" target="pagedisplay">eglInitialize</a></li>
+ <li><a href="eglIntro.xhtml" target="pagedisplay">eglIntro</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="m"></a>
+ <li>m
+ <ul class="Level3">
+ <li><a href="eglMakeCurrent.xhtml" target="pagedisplay">eglMakeCurrent</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="q"></a>
+ <li>q
+ <ul class="Level3">
+ <li><a href="eglQueryAPI.xhtml" target="pagedisplay">eglQueryAPI</a></li>
+ <li><a href="eglQueryContext.xhtml" target="pagedisplay">eglQueryContext</a></li>
+ <li><a href="eglQueryString.xhtml" target="pagedisplay">eglQueryString</a></li>
+ <li><a href="eglQuerySurface.xhtml" target="pagedisplay">eglQuerySurface</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="r"></a>
+ <li>r
+ <ul class="Level3">
+ <li><a href="eglReleaseTexImage.xhtml" target="pagedisplay">eglReleaseTexImage</a></li>
+ <li><a href="eglReleaseThread.xhtml" target="pagedisplay">eglReleaseThread</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="s"></a>
+ <li>s
+ <ul class="Level3">
+ <li><a href="eglSurfaceAttrib.xhtml" target="pagedisplay">eglSurfaceAttrib</a></li>
+ <li><a href="eglSwapBuffers.xhtml" target="pagedisplay">eglSwapBuffers</a></li>
+ <li><a href="eglSwapInterval.xhtml" target="pagedisplay">eglSwapInterval</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="t"></a>
+ <li>t
+ <ul class="Level3">
+ <li><a href="eglTerminate.xhtml" target="pagedisplay">eglTerminate</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ <a name="w"></a>
+ <li>w
+ <ul class="Level3">
+ <li><a href="eglWaitClient.xhtml" target="pagedisplay">eglWaitClient</a></li>
+ <li><a href="eglWaitGL.xhtml" target="pagedisplay">eglWaitGL</a></li>
+ <li><a href="eglWaitNative.xhtml" target="pagedisplay">eglWaitNative</a></li>
+ <li><a href="eglWaitSync.xhtml" target="pagedisplay">eglWaitSync</a></li>
+ </ul> <!-- End Level3 -->
+ </li>
+ </ul> <!-- End Level2 -->
+ </li> <!-- End Level1 -->
+ </div> <!-- End containerurl -->
+</body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.css b/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.css
new file mode 100644
index 0000000..017c2d0
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.css
@@ -0,0 +1,209 @@
+/* Taken from OpenCL styles-css.xsl, which is imbedded in CL man pages *
+/* This style sets a margin around the entire page */
+html, body {
+ margin: 10px;
+}
+
+p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+}
+
+h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+.pdparam {
+ font: italic 16px verdana, sans-serif;
+}
+
+.term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+}
+
+.type {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+.parameter {
+ font-style: italic;
+}
+
+a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+}
+
+a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+}
+
+div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+}
+
+div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+}
+
+div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+}
+
+code.constant {
+ font: normal 16px courier new, monospace !important;
+}
+
+span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+code.function {
+ font: bold 16px verdana, sans-serif !important;
+}
+
+b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+}
+
+code.varname {
+ font: italic 16px verdana, sans-serif;
+}
+
+code.replaceable {
+ font: italic 16px courier new, monospace;
+}
+
+code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+.citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+.parameter {
+ font-style: italic;
+}
+
+code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+}
+
+/* PARAMETER: This style controls spacing between the terms in Parameter section */
+dt {
+ margin-top: 15px;
+}
+
+/* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+}
+
+div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+}
+
+div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+}
+
+div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+
+/* EXAMPLE: These styles apply only to the Example section */
+div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+}
+
+div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+}
+
+div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+}
+
+/* <refsect3> is used only for the copyright statement (copyright.xml)
+ at the bottom of the page
+ */
+div.refsect3 p {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+}
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.xsl b/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.xsl
new file mode 100644
index 0000000..8b8adb5
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/khronos-man.xsl
@@ -0,0 +1,126 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/xhtml5/onechunk.xsl"/>
+
+ <!-- These two options generate a file named ID.xhtml, where ID is the value
+ of the document xml:id attribute, when processed with the chunking
+ spreadsheet onechunk.xsl. See
+ http://www.sagehill.net/docbookxsl/OneChunk.html -->
+ <xsl:param name="use.id.as.filename">1</xsl:param>
+ <xsl:param name="root.filename"></xsl:param>
+
+ <!-- html.stylesheet adds the specified stylesheet to the page headers.
+ docbook.css.link removes the default docbook.css.
+ -->
+ <xsl:param name="html.stylesheet">khronos-man.css</xsl:param>
+ <xsl:param name="docbook.css.link">0</xsl:param>
+ <xsl:param name="docbook.css.source"></xsl:param>
+
+ <!-- Indent HTML, which requires using onechunk.xsl instead of docbook.xsl -->
+ <xsl:param name="chunker.output.indent">yes</xsl:param>
+
+ <!-- Style parameters -->
+ <xsl:param name="funcsynopsis.style">ansi</xsl:param>
+ <xsl:param name="citerefentry.link" select="'1'"></xsl:param>
+
+ <!-- Generate links in href= attributes for <citerefentry>. Note
+ that in the XSL-NS stylesheets, using the Docbook namespace
+ prefix on the select expressions is *required*. Declaring
+ xmlns:db at xsl:stylesheet scope causes other problems.
+
+ If there is a value specified for the href attribute in
+ citerefentry, then create the link from that attribute instead
+ of the refentrytitle.
+ -->
+ <!-- The @href syntax isn't used by EGL at present -->
+ <xsl:template xmlns:db="http://docbook.org/ns/docbook"
+ name="generate.citerefentry.link">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
+ <xsl:text>.xhtml</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="db:refentrytitle"/>
+ <xsl:text>.xhtml</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Reasonable defaults for tables -->
+ <xsl:param name="default.table.frame">all</xsl:param>
+ <xsl:param name="table.borders.with.css" select="1"></xsl:param>
+ <xsl:param name="table.cell.border.thickness">2px</xsl:param>
+ <xsl:param name="table.frame.border.thickness">2px</xsl:param>
+
+ <!-- Add MathJax <script> tags to document <head> -->
+ <!-- Now that the xmlns:db is declared above, it gets emitted on the
+ <script> elements for unknown reasons
+ -->
+ <!-- Per http://docs.mathjax.org/en/latest/start.html#secure-access-to-the-cdn
+ use their secure URI, instead of the HTTP URI
+ src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+ -->
+ <!-- This isn't used by EGL at present -->
+<!--
+ <xsl:template name="user.head.content">
+ <script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ MathML: {
+ extensions: ["content-mathml.js"]
+ },
+ tex2jax: {
+ inlineMath: [['$','$'], ['\\(','\\)']]
+ }
+ });
+ </script>
+ <script type="text/javascript"
+ src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+ </script>
+ </xsl:template>
+-->
+
+ <!-- Add boilerplate to XHTML page title element describing which
+ set of man pages this is. This should really be an XSL
+ parameter which could be set on the command line -->
+ <xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+ <title>
+ <xsl:copy-of select="$title"/>
+ <xsl:text> - EGL Reference Pages</xsl:text>
+ </title>
+ </xsl:template>
+
+ <!-- Root template for processing the document -->
+ <xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+ <xsl:apply-templates select="."/>
+ </xsl:template>
+
+ <!-- The directives in egl-man.xsl used to be here -->
+
+ <!-- The template refsect3 is inserted here to deal with the
+ copyright. This adds in the text from the include file
+ copyright.inc.xsl -->
+ <!--
+ <xsl:template match="refsect3">
+ <div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:value-of select="$copyright"/>
+ </div>
+ </xsl:template>
+ -->
+
+</xsl:stylesheet>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/makeindex.py b/glew/auto/EGL-Registry/sdk/docs/man/html/makeindex.py
new file mode 100644
index 0000000..9cde015
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/makeindex.py
@@ -0,0 +1,316 @@
+#!/usr/bin/python3
+#
+# Copyright (c) 2013-2014 The Khronos Group Inc.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and/or associated documentation files (the
+# "Materials"), to deal in the Materials without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Materials, and to
+# permit persons to whom the Materials are furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Materials.
+#
+# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+import io, os, re, string, sys;
+
+if __name__ == '__main__':
+ if (len(sys.argv) != 5):
+ print('Usage:', sys.argv[0], ' gendir srcdir accordfilename flatfilename', file=sys.stderr)
+ exit(1)
+ else:
+ gendir = sys.argv[1]
+ srcdir = sys.argv[2]
+ accordfilename = sys.argv[3]
+ flatfilename = sys.argv[4]
+ # print(' gendir = ', gendir, ' srcdir = ', srcdir, 'accordfilename = ', accordfilename, 'flatfilename = ', flatfilename)
+else:
+ print('Unknown invocation mode', file=sys.stderr)
+ exit(1)
+
+# Various levels of indentation in generated HTML
+ind1 = ' '
+ind2 = ind1 + ind1
+ind3 = ind2 + ind1
+ind4 = ind2 + ind2
+
+# Symbolic names
+notAlias = False
+isAlias = True
+
+# Page title
+pageTitle = 'EGL Reference Pages'
+
+# Docbook source and generated HTML 5 file extensions
+srcext = '.xml'
+genext = '.xhtml'
+
+# List of generated files
+files = os.listdir(gendir)
+
+# Feature - class representing a command or function to be indexed, used
+# as dictionary values keyed by the feature name to be indexed.
+#
+# Members
+# file - name of file containing the feature
+# feature - feature name for the index (basis for the dictionary key).
+# alias - True if this is an alias of another feature in the file.
+# Usually if alias is False, feature is the basename of file.
+# apiCommand - True if this is an API command, or should be grouped
+# like one
+class Feature:
+ def __init__(self,
+ file = None,
+ feature = None,
+ alias = False,
+ apiCommand = None):
+ self.file = file
+ self.feature = feature
+ self.alias = alias
+ self.apiCommand = apiCommand
+ # This is the API-dependent command prefix
+ self.prefix = 'egl'
+ self.prefixLen = len(self.prefix)
+ def makeKey(self):
+ # Return dictionary / sort key based on the feature name
+ if (self.apiCommand and self.feature[0:self.prefixLen]
+ == self.prefix):
+ return self.feature[self.prefixLen:]
+ else:
+ return self.feature
+
+# Add dictionary entry for specified Feature.
+# The key used is the feature name, with the leading 'gl' stripped
+# off if this is an API command
+def addkey(dict, feature):
+ key = feature.makeKey()
+ if (key in dict.keys()):
+ print('Key', key, ' already exists in dictionary!')
+ else:
+ dict[key] = feature
+
+# Create list of entry point names to be indexed.
+# Unlike the old Perl script, this proceeds as follows:
+# - Each .xhtml page with a parent .xml page gets an
+# index entry for its base name.
+# - Additionally, each <function> tag inside a <funcdef>
+# in the parent page gets an aliased index entry.
+# - Each .xhtml page *without* a parent is reported but
+# not indexed.
+# - Each collision in index terms is reported.
+# - Index terms are keys in a dictionary whose entries
+# are [ pagename, alias, glPrefix ] where pagename is
+# the base name of the indexed page and alias is True
+# if this index isn't the same as pagename.
+# - API keys have their glPrefix value set to True,
+# GLSL keys to False. There is a simplistic way of
+# telling the files apart based on the file name:
+#
+# * Everything starting with 'egl[A-Z]' is API
+# * 'removedTypes.*' is API (more may be added)
+# * Everything else is GLSL
+
+def isAPIfile(entrypoint):
+ if (re.match('^egl[A-Z]', entrypoint) or entrypoint == 'removedTypes'):
+ return True
+ else:
+ return False
+
+# Dictionary of all keys mapped to Feature values
+refIndex = {}
+
+for file in files:
+ # print('Processing file', file)
+ (entrypoint,ext) = os.path.splitext(file)
+ if (ext == genext):
+ parent = srcdir + '/' + entrypoint + srcext
+ # Determine if this is an API or GLSL page
+ apiCommand = isAPIfile(entrypoint)
+ if (os.path.exists(parent)):
+ addkey(refIndex, Feature(file, entrypoint, False, apiCommand))
+ # Search parent file for <function> tags inside <funcdef> tags
+ # This doesn't search for <varname> inside <fieldsynopsis>, because
+ # those aren't on the same line and it's hard.
+ fp = open(parent)
+ for line in fp.readlines():
+ # Look for <function> tag contents and add as aliases
+ # Don't add the same key twice
+ for m in re.finditer(r"<funcdef>.*<function>(.*)</function>.*</funcdef>", line):
+ funcname = m.group(1)
+ if (funcname != entrypoint):
+ addkey(refIndex, Feature(file, funcname, True, apiCommand))
+ fp.close()
+ else:
+ print('No parent page for', file, ', will not be indexed')
+
+# Some utility functions for generating the navigation table
+# Opencl_tofc.html uses style.css instead of style-index.css
+# flatMenu - if True, don't include accordion JavaScript,
+# generating a flat (expanded) menu.
+# letters - if not None, include per-letter links to within
+# the indices for each letter in the list.
+# altMenu - if not None, the name of the alternate index to
+# link to.
+def printHeader(fp, flatMenu = False, letters = None, altMenu = None):
+ if (flatMenu):
+ scriptInclude = ' <!-- Don\'t include accord.js -->'
+ else:
+ scriptInclude = ' <?php include \'accord.js\'; ?>'
+
+ print('<html>',
+ '<head>',
+ ' <link rel="stylesheet" type="text/css" href="style-index.css" />',
+ ' <title>' + pageTitle + '</title>',
+ scriptInclude,
+ '</head>',
+ '<body>',
+ sep='\n', file=fp)
+
+ if (altMenu):
+ if (flatMenu):
+ altLabel = '(accordion-style)'
+ else:
+ altLabel = '(flat)'
+ print(' <a href="' + altMenu + '">' +
+ 'Use alternate ' + altLabel + ' index' +
+ '</a>', file=fp)
+
+ if (letters):
+ print(' <center>\n<div id="container">', file=fp)
+ for letter in letters:
+ print(' <b><a href="#' +
+ letter +
+ '" style="text-decoration:none">' +
+ letter +
+ '</a></b> &nbsp;', file=fp)
+ print(' </div>\n</center>', file=fp)
+
+ print(' <div id="navwrap">',
+ ' <ul id="containerul"> <!-- Must wrap entire list for expand/contract -->',
+ ' <li class="Level1">',
+ ' <a href="start.html" target="pagedisplay">Introduction</a>',
+ ' </li>',
+ sep='\n', file=fp)
+
+def printFooter(fp, flatMenu = False):
+ print(' </div> <!-- End containerurl -->', file=fp)
+ if (not flatMenu):
+ print(' <script type="text/javascript">initiate();</script>', file=fp)
+ print('</body>',
+ '</html>',
+ sep='\n', file=fp)
+
+# Add a nav table entry. key = link name, feature = Feature info for key
+def addMenuLink(key, feature, fp):
+ file = feature.file
+ linkname = feature.feature
+
+ print(ind4 + '<li><a href="' + file + '" target="pagedisplay">'
+ + linkname + '</a></li>',
+ sep='\n', file=fp)
+
+# Begin index section for a letter, include an anchor to link to
+def beginLetterSection(letter, fp):
+ print(ind2 + '<a name="' + letter + '"></a>',
+ ind2 + '<li>' + letter,
+ ind3 + '<ul class="Level3">',
+ sep='\n', file=fp)
+
+# End index section for a letter
+def endLetterSection(opentable, fp):
+ if (opentable == 0):
+ return
+ print(ind3 + '</ul> <!-- End Level3 -->',
+ ind2 + '</li>',
+ sep='\n', file=fp)
+
+# Return the keys in a dictionary sorted by name.
+# Select only keys matching whichKeys (see genDict below)
+def sortedKeys(dict, whichKeys):
+ list = []
+ for key in dict.keys():
+ if (whichKeys == 'all' or
+ (whichKeys == 'api' and dict[key].apiCommand) or
+ (whichKeys == 'glsl' and not dict[key].apiCommand)):
+ list.append(key)
+ list.sort(key=str.lower)
+ return list
+
+# Generate accordion menu for this dictionary, titled as specified.
+#
+# If whichKeys is 'all', generate index for all features
+# If whichKeys is 'api', generate index only for API features
+# If whichKeys is 'glsl', generate index only for GLSL features
+#
+# fp is the file to write to
+def genDict(dict, title, whichKeys, fp):
+ print(ind1 + '<li class="Level1">' + title,
+ ind2 + '<ul class="Level2">',
+ sep='\n', file=fp)
+
+ # Print links for sorted keys in each letter section
+ curletter = ''
+ opentable = 0
+
+ # Determine which letters are in the table of contents for this
+ # dictionary. If apiPrefix is set, strip the API prefix from each
+ # key containing it first.
+
+ # Generatesorted list of page indexes. Select keys matching whichKeys.
+ keys = sortedKeys(dict, whichKeys)
+
+ # print('@ Sorted list of page indexes:\n', keys)
+
+ for key in keys:
+ # Character starting this key
+ c = str.lower(key[0])
+
+ if (c != curletter):
+ endLetterSection(opentable, fp)
+ # Start a new subtable for this letter
+ beginLetterSection(c, fp)
+ opentable = 1
+ curletter = c
+ addMenuLink(key, dict[key], fp)
+ endLetterSection(opentable, fp)
+
+ print(ind2 + '</ul> <!-- End Level2 -->',
+ ind1 + '</li> <!-- End Level1 -->',
+ sep='\n', file=fp)
+
+######################################################################
+
+# Generate the accordion menu
+fp = open(accordfilename, 'w')
+printHeader(fp, flatMenu = False, altMenu = flatfilename)
+
+genDict(refIndex, 'EGL Entry Points', 'all', fp)
+
+printFooter(fp, flatMenu = False)
+fp.close()
+
+######################################################################
+
+# Generate the non-accordion menu, with combined API and GLSL sections
+fp = open(flatfilename, 'w')
+
+# Set containing all index letters
+indices = { key[0].lower() for key in refIndex.keys() }
+letters = [c for c in indices]
+letters.sort()
+
+printHeader(fp, flatMenu = True, letters = letters, altMenu = accordfilename)
+
+genDict(refIndex, 'EGL Entry Points', 'all', fp)
+
+printFooter(fp, flatMenu = True)
+fp.close()
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/old-egl-man.xsl b/glew/auto/EGL-Registry/sdk/docs/man/html/old-egl-man.xsl
new file mode 100644
index 0000000..e91022b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/old-egl-man.xsl
@@ -0,0 +1,174 @@
+<!-- The following is content that used to be in the EGL XSL directives
+ now found in khronos-man.xsl. It is OpenCL formatting stuff done by
+ Miller & Mattson and is being ignored for the moment. -->
+
+ <!-- Set this param to a placeholder for the base URL of the
+ external specification document. Include the beginning of the
+ 'namedest' function as well. See the script pageNumberLookup.rb
+ to see how this placeholder gets replaced by the actual spec
+ URL and target page number. This placeholder can be any string,
+ and only needs to match the same placeholder string in
+ pageNumberLookup.rb. -->
+ <!-- This isn't used by EGL at present -->
+ <xsl:param name="SpecBaseUrl">http://www.khronos.org/registry/egl/specs/eglTBD.pdf#namedest=</xsl:param>
+
+ <!-- The following template creates the link for the Specification section -->
+ <!-- This isn't used by EGL at present -->
+ <xsl:template match="olink">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="$SpecBaseUrl" />
+ <xsl:value-of select="@uri" />
+ <xsl:text disable-output-escaping="yes">" target="OpenCL Spec"&gt;</xsl:text>
+ <xsl:value-of select="." />
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+ </xsl:template>
+
+ <!-- The following enables use of ulink for regular URLs on the pages-->
+ <!-- This isn't used by EGL at present -->
+ <xsl:template match="ulink">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="@url" />
+ <xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
+ <xsl:value-of select="." />
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+ </xsl:template>
+
+
+ <!-- The templates gentext-refname and refnamediv are inserted here so
+ we can have the refname displayed as the H1 header on the page -->
+ <xsl:template name="gentext-refname">
+ <xsl:param name="key" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <xsl:value-of select="refname"/>
+ </xsl:template>
+
+ <xsl:template match="refnamediv">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$refentry.generate.name != 0">
+ <h1>
+ <xsl:call-template name="gentext-refname">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </h1>
+ </xsl:when>
+ <xsl:when test="$refentry.generate.title != 0">
+ <h2>
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ </xsl:when>
+ </xsl:choose>
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+ </xsl:template>
+
+ <!-- The templates refname and refpurpose are inserted here so that we can
+ modify the layout of these values on the HTML page -->
+ <xsl:template match="refname" />
+ <xsl:template match="refpurpose">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+
+ <!-- The Link template allows us to embed links in the <funcprototype>,
+ even though this is not valid DocBook markup -->
+ <xsl:template match="link" mode="ansi-tabular">
+ <xsl:apply-templates select="."/>
+ </xsl:template>
+
+ <!-- This is somewhat redundant with the following template -->
+ <xsl:template match="funcdef/replaceable">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <!-- The following template enables the <replaceable> tag inside
+ <funcdef>, <paramdef>, and <function> to generate <em> in the HTML output -->
+ <xsl:template match="funcdef/replaceable" mode="ansi-tabular">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <xsl:template match="paramdef/replaceable" mode="ansi-tabular">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <xsl:template match="function/replaceable" mode="ansi-nontabular">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <xsl:template match="refname/replaceable" mode="kr-nontabular">
+ <xsl:call-template name="inline.italicseq"/>
+ </xsl:template>
+
+ <!-- The templates funcprototype and paramdef are here so we can modify
+ the layout of the synopsis so that it is not broken into so many
+ columns in the table, control indenting, and more. -->
+
+ <!-- funcprototype: ansi, tabular -->
+
+ <xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <xsl:if test="following-sibling::funcprototype">
+ <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
+ </xsl:if>
+ <tr valign="bottom">
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </td>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[position() &gt; 1]">
+ <tr valign="top">
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:template>
+
+ <xsl:template match="paramdef" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="type and funcparams">
+ <td>
+ <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <xsl:apply-templates select="type/following-sibling::node()" mode="kr-tabular-funcsynopsis-mode"/>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:text>&#160;</xsl:text>
+ <xsl:apply-templates select="parameter" mode="ansi-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+ <!-- OpenCL functions do not end with a semi-colon.
+ <xsl:text>;</xsl:text> -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/present.css b/glew/auto/EGL-Registry/sdk/docs/man/html/present.css
new file mode 100644
index 0000000..6a02d35
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/present.css
@@ -0,0 +1,47 @@
+@charset "utf-8";
+/* CSS Document */
+ li { font: normal 14px verdana, sans-serif; line-height: 14px; }
+ ul { font: normal 14px verdana, sans-serif; line-height: 14px; }
+ a:link, a:visited {color:blue; text-decoration:none;}
+ a:hover {color:blue; text-decoration:none; background-color:FFFF99; }
+
+ #navwrap {
+ width: 320px;
+ margin:0 0 0 4px;
+ padding:0;
+ }
+
+ #containerul, #containerul ul{
+ text-align:left;
+ margin:0 0 0 4px; /* Removes browser default margins applied to the lists. */
+ padding:0; /* Removes browser default padding applied to the lists. */
+ }
+
+ #containerul li{
+ margin:0 0 0 15px; /* A left margin to indent the list items and give the menu a sense of structure. */
+ padding:4px 0 0 2px;
+ list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
+ font: normal 12px verdana, sans-serif;
+ }
+
+ #containerul li.Level1 {
+ margin:0 0 0 0;
+ padding:4px 0 0 2px;
+ list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
+ font: normal 14px verdana, sans-serif;
+ }
+
+ #containerul .symbols{ /* Various styles to position the symbols next to the items in the menu. */
+ background-repeat:no-repeat;
+ float:left;
+ height:14px;
+ margin-right:5px;
+ margin-top:1px;
+ width:14px;
+ }
+
+#containerul ul.Level2 {
+ margin:0;
+ padding: 0;
+ }
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/start.html b/glew/auto/EGL-Registry/sdk/docs/man/html/start.html
new file mode 100644
index 0000000..36c5528
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/start.html
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>EGL Reference Pages</title>
+ <link rel="stylesheet" href="khronos-man.css"/>
+ </head>
+ <body>
+ <div class="refentry" id="start">
+ <div class="titlepage"/>
+ <div class="refnamediv">
+ <h1>EGL Reference Pages</h1>
+ <p/>
+ </div>
+ <div class="refsect1" id="description">
+ <p>
+ <img src="EGL_300.png" alt=""
+ hspace="40" vspace="40" border="0" align="right"
+ xmlns="http://www.w3.org/1999/xhtml" />
+ </p>
+ <p> EGL&trade; is an interface between Khronos rendering
+ APIs such as OpenGL ES or OpenVG and the underlying
+ native platform window system. It handles graphics
+ context management, surface/buffer binding, and
+ rendering synchronization and enables high-performance,
+ accelerated, mixed-mode 2D and 3D rendering using other
+ Khronos APIs. </p>
+ <p> The reference pages describe EGL 1.5, but can be used
+ with earlier versions since each page notes when
+ features are available only starting with specific older
+ versions (1.2, 1.3, and 1.4). </p>
+ <p> A more detailed overview of EGL functionality and
+ technical concepts can be found in the <a
+ target="pagedisplay" href="eglIntro.html">eglIntro</a>
+ page. </p>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Browser Compatibility</h2>
+ <p> The reference pages are now generated in HTML5 format.
+ Some pages contain imbedded MathML and rely on <a
+ href="http://www.mathjax.org/">MathJax</a> to render
+ mathematical equations on browsers which do not natively
+ support MathML. This should work much better on Chrome,
+ Safari, and other browsers which don't support MathML.
+ </p>
+ <p> However, HTML5 isn't well supported on IE 8 or earlier
+ versions. We recommend you use a more recent browser for
+ viewing the reference pages. </p>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Downloading Reference Page Sources</h2>
+ <p> The Docbook source for the reference pages is available
+ in the <a
+ href="https://github.com/KhronosGroup/EGL-Registry/">
+ KhronosGroup/EGL-Registry</a> GitHub repository. You can
+ build a ref page distribution of your own using open
+ source tools. See the <a
+ href="https://github.com/KhronosGroup/OpenGL-Refpages/blob/master/README.adoc">
+ OpenGL refpage README</a> for more information on needed
+ tools. </p>
+ </div>
+ <div class="refsect1" id="description">
+ <h2>Feedback</h2>
+ <p> If you find errors in or problems with the reference
+ pages, please file a GitHub issue in the <a
+ href="https://github.com/KhronosGroup/EGL-Registry/">
+ KhronosGroup/EGL-Registry</a> GitHub repository. If you
+ have a fix available, please propose a pull request in
+ the same repository. </p>
+ </div>
+ <div class="refsect3">
+ <img src="KhronosLogo.jpg"/>
+ <p>
+ Copyright &#169; 2003-2018 The Khronos Group Inc.
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and/or associated documentation files (the
+ "Materials"), to deal in the Materials without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Materials, and to
+ permit persons to whom the Materials are furnished to do so, subject to
+ the condition that this copyright notice and permission notice shall be included
+ in all copies or substantial portions of the Materials.
+ </p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/style-index.css b/glew/auto/EGL-Registry/sdk/docs/man/html/style-index.css
new file mode 100644
index 0000000..00fd1ed
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/style-index.css
@@ -0,0 +1,2 @@
+@import url("undohtml.css");
+@import url("present.css");
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/undohtml.css b/glew/auto/EGL-Registry/sdk/docs/man/html/undohtml.css
new file mode 100644
index 0000000..a2d510f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/undohtml.css
@@ -0,0 +1,9 @@
+/* -- undo browser HTML defaults -- */
+/* -- Global resets of all default items -- */
+
+:link,:visited {text-decoration: none;}
+ul,ol {list-style: none;}
+h1,h2,h3,h4,h5,h6,pre,code,p {font-size: 1em;}
+ul,ol,dl,li,dt,dd,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input {margin: 0; padding: 0;}
+a img,:link img,:visited img {border: none;}
+address {font-style: normal;}
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/html/vn b/glew/auto/EGL-Registry/sdk/docs/man/html/vn
new file mode 100644
index 0000000..c59df02
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/html/vn
@@ -0,0 +1,221 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style><![endif]--><style><!--
+/* Font Definitions */
+@font-face
+ {font-family:"MS Mincho";
+ panose-1:2 2 6 9 4 2 5 8 3 4;}
+@font-face
+ {font-family:"Cambria Math";
+ panose-1:2 4 5 3 5 4 6 3 2 4;}
+@font-face
+ {font-family:Calibri;
+ panose-1:2 15 5 2 2 2 4 3 2 4;}
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;}
+@font-face
+ {font-family:"\@MS Mincho";
+ panose-1:2 2 6 9 4 2 5 8 3 4;}
+@font-face
+ {font-family:Consolas;
+ panose-1:2 11 6 9 2 2 4 3 2 4;}
+/* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {margin:0cm;
+ margin-bottom:.0001pt;
+ font-size:11.0pt;
+ font-family:"Calibri","sans-serif";}
+h1
+ {mso-style-priority:9;
+ mso-style-link:"Heading 1 Char";
+ margin:0cm;
+ margin-bottom:.0001pt;
+ text-indent:0cm;
+ page-break-after:avoid;
+ mso-list:l0 level1 lfo2;
+ font-size:12.0pt;
+ font-family:"Tahoma","sans-serif";
+ color:black;}
+h2
+ {mso-style-priority:9;
+ mso-style-link:"Heading 2 Char";
+ margin:0cm;
+ margin-bottom:.0001pt;
+ text-indent:0cm;
+ page-break-after:avoid;
+ mso-list:l0 level2 lfo2;
+ font-size:10.0pt;
+ font-family:"Tahoma","sans-serif";}
+a:link, span.MsoHyperlink
+ {mso-style-priority:99;
+ color:blue;
+ text-decoration:underline;}
+a:visited, span.MsoHyperlinkFollowed
+ {mso-style-priority:99;
+ color:purple;
+ text-decoration:underline;}
+p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
+ {mso-style-priority:99;
+ mso-style-link:"Plain Text Char";
+ margin:0cm;
+ margin-bottom:.0001pt;
+ font-size:10.5pt;
+ font-family:Consolas;}
+p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
+ {mso-style-priority:34;
+ margin-top:0cm;
+ margin-right:0cm;
+ margin-bottom:0cm;
+ margin-left:36.0pt;
+ margin-bottom:.0001pt;
+ font-size:11.0pt;
+ font-family:"Calibri","sans-serif";}
+span.Heading1Char
+ {mso-style-name:"Heading 1 Char";
+ mso-style-priority:9;
+ mso-style-link:"Heading 1";
+ font-family:"Tahoma","sans-serif";
+ color:black;
+ font-weight:bold;}
+span.Heading2Char
+ {mso-style-name:"Heading 2 Char";
+ mso-style-priority:9;
+ mso-style-link:"Heading 2";
+ font-family:"Tahoma","sans-serif";
+ font-weight:bold;}
+span.PlainTextChar
+ {mso-style-name:"Plain Text Char";
+ mso-style-priority:99;
+ mso-style-link:"Plain Text";
+ font-family:Consolas;}
+span.EmailStyle22
+ {mso-style-type:personal-compose;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle23
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle24
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle25
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle26
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle27
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle28
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+span.EmailStyle29
+ {mso-style-type:personal;
+ font-family:"Calibri","sans-serif";
+ color:windowtext;}
+.MsoChpDefault
+ {mso-style-type:export-only;
+ font-size:10.0pt;}
+@page WordSection1
+ {size:612.0pt 792.0pt;
+ margin:72.0pt 72.0pt 72.0pt 72.0pt;}
+div.WordSection1
+ {page:WordSection1;}
+/* List Definitions */
+@list l0
+ {mso-list-id:1;
+ mso-list-template-ids:699138934;}
+@list l0:level1
+ {mso-level-number-format:none;
+ mso-level-style-link:"Heading 1";
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level2
+ {mso-level-number-format:none;
+ mso-level-style-link:"Heading 2";
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level3
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level4
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level5
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level6
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level7
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level8
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+@list l0:level9
+ {mso-level-number-format:none;
+ mso-level-suffix:none;
+ mso-level-text:"";
+ mso-level-tab-stop:0cm;
+ mso-level-number-position:left;
+ margin-left:0cm;
+ text-indent:0cm;}
+ol
+ {margin-bottom:0cm;}
+ul
+ {margin-bottom:0cm;}
+--></style><!--[if gte mso 9]><xml>
+<o:shapedefaults v:ext="edit" spidmax="1026" />
+</xml><![endif]--><!--[if gte mso 9]><xml>
+<o:shapelayout v:ext="edit">
+<o:idmap v:ext="edit" data="1" />
+</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link=blue vlink=purple><div class=WordSection1><p class=MsoNormal style='page-break-after:avoid'><b><span lang=EN-US style='font-size:16.0pt;color:black'>Call-in Details<o:p></o:p></span></b></p><p class=MsoPlainText style='text-align:justify'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>U.S. Toll-free: +1 (866) 365-4406<o:p></o:p></span></p><p class=MsoPlainText style='text-align:justify'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>U.S. Toll:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;+1 (303) 248-9655<o:p></o:p></span></p><p class=MsoPlainText style='text-align:justify'><b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Access code: &nbsp;&nbsp;8040316#<o:p></o:p></span></b></p><p class=MsoPlainText style='text-align:justify'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><a href="https://conf.cfer.com/?sp_id=154&amp;comp_id=345368&amp;an=3032489655&amp;ac=8040316&amp;startview=GOS&amp;login=true">List of international dial-in numbers</a><o:p></o:p></span></p><p class=MsoPlainText style='text-align:justify'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Please let me know if you have any additional agenda items, intend to discuss a dormant item or wish to prioritise a topic.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Alon<o:p></o:p></span></p><div class=MsoNormal align=center style='text-align:center'><b><span lang=EN-US><hr size=2 width="100%" align=center></span></b></div><p class=MsoNormal style='margin-top:6.0pt;page-break-after:avoid'><b><span lang=EN-US style='font-size:16.0pt;color:black'>Agenda<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt;page-break-after:avoid'><b><span lang=EN-US style='font-size:12.0pt;color:black'>Corrections to previous minutes<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><span lang=EN-US>- Minutes of EGL call 16th July 2014<o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'>Future direction of EGL<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US style='color:black'><a href="https://cvs.khronos.org/wiki/index.php/EGL/EGLNextGoals">Wiki page for EGL future direction goal discussion</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>Alon &#8211; big news from GL Common F2F in Bellevue was the contribution of XGL from AMD and the group agreeing to use it as starting point for GL Common<br>Alon &#8211; I raised at the meeting and on the today&#8217;s GL Common call how XGL deals with platform integration and interoperation with other Khronos APIs, open issue<br>Alon &#8211; need to decide how to take things forwards, identify any problems such as IP zone issue if that's a problem, how we should structure discussions given GL progression.<br>...<br>Alon &#8211; If we could make sure that in two weeks time we have that, possibly have some sort of straw poll to see if we have agreement on how to proceed<br>Alon &#8211; If you have any suggestions on what I should be doing as chair at this point, always open to them<br><b>[ACTION]<i> All &#8211; poll across your company to gauge position on direction, what problem would need EGL-like API to solve, initial proposals for COB PDT 29th July 2014</i></b><i><br></i>[ACTION]<i> All &#8211; help engage GL Common group in discussion, understanding of your company&#8217;s current thoughts here<br></i>[ACTION]<i> Alon &#8211; put out email to GL Common group with information on previous EGL2 discussions, background information<br></i>[ACTION]<i> All &#8211; add proposed goals and input to wiki<br></i>[ACTION] <i>Chad &#8211; vtable proposal &#8211; will draft up what an API would look like<br></i>[ACTION]<i> </i></span><i>Jon &#8211; put together matrix of functionality</i><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'>New proposals<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=11550">Bug 11550</a> &#8211; Partial update extension</span></b><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>Latest spec draft &#8211; <a href="https://cvs.khronos.org/svn/repos/registry/trunk/egl/extensions/drafts/EGL_KHR_partial_update.txt">EGL_KHR_partial_update draft spec</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>Ray &#8211; Sent an email a week ago explaining a problem &#8211; passing damaged regions through to a compositor isn't possible with the API as it is at the moment<br>Alon &#8211; Sent on the 6th July at 11:33 UK time, for those who don't have it to hand<br><span lang=EN-US>[ACTION]<i> All &#8211; consider Ray&#8217;s solution to resolving compositor information issue, Antoine&#8217;s suggestions<br></i>[ACTION]<i> Jesse &#8211; ping Antoine to get his opinion</i></span><o:p></o:p></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- </span><a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12459">Bug&nbsp;12459</a>&nbsp;&#8211;&nbsp;Create EGL_KHR_context_flush_control</b><b><span lang=EN-US><o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;page-break-after:avoid'><span lang=EN-US>[ACTION] <i>Jon &#8211; open bug</i><b><span style='color:black'><o:p></o:p></span></b></span></p><p class=MsoNormal style='margin-top:6.0pt;page-break-after:avoid'><b><span lang=EN-US style='color:black'>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=10232">Bug 10232</a> &#8211; Add Device Enumeration API to EGL 1.x<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>James &#8211; Updated specs, need to publish them at the end of the month. Last call for feedback if you have any<br><span lang=EN-US>[ACTION] <i>All &#8211; last change for feedback on EXT device extensions before they&#8217;re published</i><o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=10943">Bug 10943</a> &#8211; EGL_KHR_debug debugging API<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>[ACTION] <i>All &#8211; review options and comment on bug</i><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:0cm;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><b><span lang=EN-US style='color:black'>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=10091">Bug 10091</a> &#8211; EGL_KHR_no_config creating surfaces &amp; contexts without configs<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><span lang=EN-US style='color:black'><a href="https://cvs.khronos.org/svn/repos/registry/trunk/egl/extensions/drafts/EGL_KHR_no_config.txt">EGL_KHR_no_config draft spec</a>, </span><span style='color:black'><a href="https://cvs.khronos.org/svn/repos/registry/trunk/egl/extensions/drafts/EGL_KHR_rgba_no_config.txt">EGL_KHR_rgba_no_config draft spec</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><span lang=EN-US>[ACTION]<i> All &#8211; consider fuzzy vs exact match options</i><b><span style='color:black'><o:p></o:p></span></b></span></p><p class=MsoNormal style='margin-top:6.0pt'><b>- </b><a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12127"><b>Bug&nbsp;12127</b></a><b>&nbsp;&#8211;&nbsp;eglSwapBuffers completion notifications<o:p></o:p></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>[ACTION]<i> Chad &#8211; enumerate different types of state</i><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:0cm;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><b><span style='color:black'>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12230">Bug&nbsp;12230</a>&nbsp;&#8211; Timestamps in EGL and client APIs</span></b><b><span lang=EN-US style='color:black'><o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><span lang=EN-US>Alon &#8211; KCam WG notified about this, no feedback yet<b><span style='color:black'><o:p></o:p></span></b></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'>Issues<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt'><b>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12456">Bug&nbsp;12456</a>&nbsp;-&nbsp;eglMakeCurrent flush behaviour when same context and surfaces are made current<o:p></o:p></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>New bug<o:p></o:p></p><p class=MsoNormal style='margin-top:6.0pt'><b>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12457">Bug&nbsp;12457</a>&nbsp;-&nbsp;Trivial wording updates to EGL_KHR_gl_colorspace<o:p></o:p></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>New bug<o:p></o:p></p><p class=MsoNormal style='margin-top:6.0pt'><b>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=12072">Bug&nbsp;12072</a>&nbsp;&#8211;&nbsp;No way to completely release an EGLDisplay</b><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>Alon &#8211; suggest we do a straw poll on next call, see if conclusion between the 3 options<br>James &#8211; sounds good to me<br>[ACTION] <i>All &#8211; review options and comment<br></i>[ACTION] <i>Alon &#8211; post explanation of terminate refcount issue</i><o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><o:p>&nbsp;</o:p></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US style='font-size:12.0pt'>Dormant topics</span></b><span lang=EN-US style='font-size:12.0pt'> (please indicate before next call if you&#8217;d like to discuss these)<o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- </span><a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=10159" title="ASSIGNED - Remove FOURCC dependency and define VX specific formats">Bug 10159</a> &#8211; </b><b><span lang=EN-US>Khronos color format proposal<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'>Andrew &#8211; Not accepted into VX 1.0, updates on bug, no longer a rush, hoping that something will go in in 1.1<span lang=EN-US><br>[ACTION]<i> </i></span><i><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>All &#8211; continue providing feedback on bug</span></i><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal style='margin-top:6.0pt'><span lang=EN-US>- <b><a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=11606">Bug 11606</a> &#8211; GPU Resource Monitoring proposal<o:p></o:p></b></span></p><p class=MsoNormal style='margin-top:6.0pt;text-indent:36.0pt'><span lang=EN-US><a href="https://www.khronos.org/members/login/groups/EGL/F2F%20Materials/Phoenix%20Jan14/GPU%20Resource%20Monitoring%20-%20Phoenix%20F2F%20-%20Jan%202014.pdf">GPU Resource Monitoring slides from Phoenix F2F</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>[ACTION]<i> </i></span><i>All &#8211; request feedback, especially from SOC teams<o:p></o:p></i></p><p class=MsoNormal style='margin-top:6.0pt;page-break-after:avoid'><b><span lang=EN-US>- <a href="https://cvs.khronos.org/bugzilla/show_bug.cgi?id=11481">Bug 11481</a> &#8211; Remove thread restriction for eglSwapBuffers in EGL 1.5<o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:0cm;page-break-after:avoid;mso-list:l0 level1 lfo2'><span lang=EN-US>[ACTION]<i> <span style='color:black'>Chad &#8211; will update bug as discussed (</span>Postponed indefinitely)</i></span><i><o:p></o:p></i></p><p class=MsoNormal style='margin-top:6.0pt'><b><span lang=EN-US>- Streaming / feedback from Cross-API Interop sessions<o:p></o:p></span></b></p><p class=MsoNormal style='margin-top:6.0pt;text-indent:36.0pt'><span lang=EN-US>Discussion page <a href="https://cvs.khronos.org/wiki/index.php?title=OpenCL/EGLStream">https://cvs.khronos.org/wiki/index.php?title=OpenCL/EGLStream</a><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:6.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;margin-bottom:.0001pt'><span lang=EN-US>[ACTION]<i> </i></span><i><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>All &#8211; provide further topology / use-case feedback<br></span></i><span lang=EN-US>[ACTION]<i> Alon/</i></span><i><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Mikael &#8211; discuss how to push metadata proposal forwards<br></span></i><span lang=EN-US>[ACTION]<i> </i></span><i><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Neil &#8211; invite StreamInput members to Cross-API session and get topology input</span></i><span lang=EN-US><o:p></o:p></span></p></div></body></html> \ No newline at end of file
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/index.php b/glew/auto/EGL-Registry/sdk/docs/man/index.php
new file mode 100644
index 0000000..b97647b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/index.php
@@ -0,0 +1,9 @@
+<html>
+<head>
+<title>EGL Reference Pages</title>
+</head>
+<frameset rows="85,*">
+ <frame scrolling="no" noresize frameborder="0" marginwidth="0" marginheight="0" src="top.php">
+ <frame noresize frameborder="0" marginwidth="0" marginheight="0" src="bottom.php">
+</frameset>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/mkshar b/glew/auto/EGL-Registry/sdk/docs/man/mkshar
new file mode 100644
index 0000000..52cc006
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/mkshar
@@ -0,0 +1,3 @@
+#!/bin/sh
+set -x
+shar -mwxTD $* > xml.shar
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/reference.xml b/glew/auto/EGL-Registry/sdk/docs/man/reference.xml
new file mode 100644
index 0000000..a75da4d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/reference.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.2//EN" "DTD/docbook/docbookx.dtd">
+<!--
+ Copyright 2003-2010 Khronos Group.
+ This material may be distributed subject to the terms and conditions set forth in
+ the Open Publication License, v 1.0, 8 June 1999.
+ http://opencontent.org/openpub/
+-->
+<book xmlns:xi="http://www.w3.org/2001/XInclude">
+ <title>
+ EGL Reference Manual
+ </title>
+ <subtitle>
+ Version 1.5
+ </subtitle>
+ <bookinfo>
+ <author>
+ <firstname>Claude</firstname>
+ <surname>Knaus</surname>
+ </author>
+ <author>
+ <firstname>Jon</firstname>
+ <surname>Leech</surname>
+ </author>
+ <date>October 2010</date>
+ <releaseinfo>Draft Version 20101012</releaseinfo>
+ <subjectset>
+ <subject>EGL</subject>
+ </subjectset>
+ <keywordset>
+ <keyword>EGL</keyword>
+ <keyword>man</keyword>
+ <keyword>reference</keyword>
+ </keywordset>
+ <xi:include href="legal-notice.xml"/>
+ </bookinfo>
+ <toc>
+ <title>Contents</title>
+ <!-- generated by LaTeX -->
+ </toc>
+ <chapter>
+ <title>Preface</title>
+ <sect1>
+ <title>Style Conventions</title>
+ <para>
+ The following style conventions apply to this document:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><function>Bold</function></term>
+ <listitem><para>Command and function names</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>Italics</parameter></term>
+ <listitem>Variables and parameters</listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Regular</term>
+ <listitem><para>Ordinary text</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><constant>Monospace</constant></term>
+ <listitem><para>Constants and source code</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+ </chapter>
+ <chapter>
+ <title>Summary of Commands and Routines</title>
+ <sect1>
+ <title>EGL Functions</title>
+ <para>Manage or query display connections:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryString</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglTerminate</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Request EGL and client API extension functions:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetProcAddress</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Query errors:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetError</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Request or query frame buffer configurations:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query the current rendering API:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglBindAPI</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryAPI</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query EGL rendering contexts:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglDestroyContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQueryContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Manage or query EGL surfaces:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Synchronize execution:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitClient</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitGL</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglWaitNative</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Post and copy buffers:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry></member>
+ </simplelist>
+ <para>Bind pixel buffer surfaces to OpenGL ES textures:</para>
+ <simplelist type="vert">
+ <member><citerefentry><refentrytitle>eglBindTexImage</refentrytitle></citerefentry></member>
+ <member><citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry></member>
+ </simplelist>
+ </sect1>
+ </chapter>
+ <chapter>
+ <title>EGL Reference Pages</title>
+ <xi:include href="eglBindAPI.xml"/>
+ <xi:include href="eglBindTexImage.xml"/>
+ <xi:include href="eglChooseConfig.xml"/>
+ <xi:include href="eglClientWaitSync.xml"/>
+ <xi:include href="eglCopyBuffers.xml"/>
+ <xi:include href="eglCreateContext.xml"/>
+ <xi:include href="eglCreateImage.xml"/>
+ <xi:include href="eglCreatePbufferSurface.xml"/>
+ <xi:include href="eglCreatePixmapSurface.xml"/>
+ <xi:include href="eglCreateSync.xml"/>
+ <xi:include href="eglCreateWindowSurface.xml"/>
+ <xi:include href="eglDestroyContext.xml"/>
+ <xi:include href="eglDestroyImage.xml"/>
+ <xi:include href="eglDestroySurface.xml"/>
+ <xi:include href="eglDestroySync.xml"/>
+ <xi:include href="eglGetConfigAttrib.xml"/>
+ <xi:include href="eglGetConfigs.xml"/>
+ <xi:include href="eglGetCurrentContext.xml"/>
+ <xi:include href="eglGetCurrentDisplay.xml"/>
+ <xi:include href="eglGetCurrentSurface.xml"/>
+ <xi:include href="eglGetDisplay.xml"/>
+ <xi:include href="eglGetError.xml"/>
+ <xi:include href="eglGetPlatformDisplay.xml"/>
+ <xi:include href="eglGetProcAddress.xml"/>
+ <xi:include href="eglGetSyncAttrib.xml"/>
+ <xi:include href="eglInitialize.xml"/>
+ <xi:include href="eglIntro.xml"/>
+ <xi:include href="eglMakeCurrent.xml"/>
+ <xi:include href="eglQueryAPI.xml"/>
+ <xi:include href="eglQueryContext.xml"/>
+ <xi:include href="eglQueryString.xml"/>
+ <xi:include href="eglQuerySurface.xml"/>
+ <xi:include href="eglReleaseTexImage.xml"/>
+ <xi:include href="eglReleaseThread.xml"/>
+ <xi:include href="eglSurfaceAttrib.xml"/>
+ <xi:include href="eglSwapBuffers.xml"/>
+ <xi:include href="eglSwapInterval.xml"/>
+ <xi:include href="eglTerminate.xml"/>
+ <xi:include href="eglWaitClient.xml"/>
+ <xi:include href="eglWaitGL.xml"/>
+ <xi:include href="eglWaitNative.xml"/>
+ <xi:include href="eglWaitSync.xml"/>
+ </chapter>
+ <xi:include href="license-full.xml"/>
+</book>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/setvars b/glew/auto/EGL-Registry/sdk/docs/man/setvars
new file mode 100644
index 0000000..49c878e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/setvars
@@ -0,0 +1,5 @@
+#!/usr/bin/tcsh
+# Set variables for comparisons
+set egl=/home/tree/khronos/registry/trunk/public/egl/sdk/docs/man/xhtml
+set es=/home/tree/khronos/ogles/trunk/sdk/docs/man3/docbook4/xhtml
+set esnew=/home/tree/khronos/ogles/trunk/sdk/docs/man3/html
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/top.php b/glew/auto/EGL-Registry/sdk/docs/man/top.php
new file mode 100644
index 0000000..9bdbf00
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/top.php
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <!-- Should actually use PHP features & import stylesheet - see
+ OpenGL ES top.php for example -->
+ <title>EGL Reference Pages</title>
+ <style xmlns="" type="text/css">
+ body {
+ background-image:url(headBackground.jpg) no-repeat;
+ }
+ p {
+ font-family:verdana,sans-serif; font-size:80%; color: white;
+ margin-top:0px; margin-bottom:0px; position:absolute;
+ bottom:2px; left:5px;
+ }
+ a:link, a:visited { text-decoration:none; color:white}
+ h1 {
+ font: bold 1.4em verdana,sans-serif; text-align: left;
+ color: black; margin-top:10px; margin-bottom:3px;
+ padding-top:0px; padding-bottom:0px;
+ }
+ #search {
+ position:absolute; top:15px; right: 20px; margin: 0; padding: 0;
+ }
+ #search fieldset {
+ border: 0; margin: 0; padding: 0;
+ }
+ </style>
+</head>
+<body background="headBackground.jpg">
+ <h1>&nbsp; <!-- <img src="html/EGL_300.jpg" alt="" width="50" height="50" border="0" align="middle">--> EGL Reference Pages</h1>
+ <div id="search">
+ <!-- search not supported yet
+ <fieldset>
+ <form method="get" action="/opencl/search/opencl_1_2/swish.cgi" enctype="application/x-www-form-urlencoded" class="form" target="pagedisplay">
+ <input maxlength="200" value="processor" size="15" type="text" name="query" />
+ <input value="Search!" type="submit" name="submit" />
+ </fieldset>
+ -->
+ </div>
+ <p><a href="http://www.khronos.org/egl/" target="EGL">More EGL Info</a>
+ &nbsp;&nbsp;&nbsp; <a href="http://www.khronos.org/registry/egl/" target="EGL Specification">EGL Specification</a> >
+ &nbsp;&nbsp;&nbsp; <a href="http://www.khronos.org/files/egl-1-4-quick-reference-card.pdf" target="EGL Quick Reference">EGL Quick Reference Card</a>
+ </p>
+
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/EGL_300.png b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/EGL_300.png
new file mode 100644
index 0000000..7c20efb
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/EGL_300.png
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Header.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Header.html
new file mode 100644
index 0000000..f360d64
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Header.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>EGL Reference Pages</title>
+ <style xmlns="" type="text/css">
+ body { background-image:url(headBackground.jpg) no-repeat; }
+ p { font-family:verdana,sans-serif; font-size:80%; color: white;
+ margin-top:0px; margin-bottom:0px; position:absolute; bottom:2px; left:5px;}
+ a:link, a:visited { text-decoration:none; color:white}
+ h1 {font: bold 1.4em verdana,sans-serif; text-align: left; color: black;
+ margin-top:10px; margin-bottom:3px; padding-top:0px; padding-bottom:0px; }
+ #search {
+ position:absolute; top:15px; right: 20px; margin: 0; padding: 0;
+ }
+ #search fieldset {
+ border: 0; margin: 0; padding: 0;
+ }
+ </style>
+</head>
+<body background="headBackground.jpg">
+ <h1>&nbsp; <!-- <img src="EGL_300.jpg" alt="" width="50" height="50" border="0" align="middle">--> EGL Reference Pages</h1>
+ <div id="search">
+ <!-- search not supported yet
+ <fieldset>
+ <form method="get" action="/opencl/search/opencl_1_2/swish.cgi" enctype="application/x-www-form-urlencoded" class="form" target="pagedisplay">
+ <input maxlength="200" value="processor" size="15" type="text" name="query" />
+ <input value="Search!" type="submit" name="submit" />
+ </fieldset>
+ -->
+ </div>
+ <p><a href="http://www.khronos.org/egl/" target="EGL">More EGL Info</a>
+ &nbsp;&nbsp;&nbsp; <a href="http://www.khronos.org/registry/egl/" target="EGL Specification">EGL Specification</a> >
+ &nbsp;&nbsp;&nbsp; <a href="http://www.khronos.org/files/egl-1-4-quick-reference-card.pdf" target="EGL Quick Reference">EGL Quick Reference Card</a>
+ </p>
+
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Intro.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Intro.html
new file mode 100644
index 0000000..8f82ab5
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/Intro.html
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+/* This style sets a margin around the entire page */
+ html, body { margin: 10px; }
+
+ p { font-family:verdana,sans-serif; font-size:95%;
+ margin-top:0px; margin-bottom:20px; padding-top:0px; padding-bottom:0px; }
+
+ h1 {font: bold 1.75em verdana,sans-serif;
+ margin-top:0px; margin-bottom:3px; padding-top:0px; padding-bottom:0px; }
+
+ h2 { font-family:verdana,sans-serif; font-size:1.20em
+ margin-top:28px; margin-bottom:3px; padding-top:0px; padding-bottom:0px; }
+
+ li { font-family:verdana,sans-serif; font-size:95%;
+ margin-top:0px; margin-bottom:18px; padding-top:0px; padding-bottom:0px; }
+
+ code, constant {font: normal 1.1em 'courier new',monospace; }
+ code.function {font: bold 1.1em 'courier new',monospace; }
+ code.varname {font: italic 1.1em 'courier new',monospace; }
+ code.funcdef {font: normal 1.1em 'courier new',monospace; }
+ .citerefentry {font: normal 1.1em 'courier new',monospace; }
+ .parameter { font-style: italic; }
+ code.fsfunc {font: normal 1.1em 'courier new',monospace; }
+ div.funcsynopsis {font: normal 1.1em 'courier new',monospace; text-align:left; background-color:#e6e6e6;}
+ div.funcsynopsis table { margin-top: 10px; border-collapse:separate; }
+ div.funcsynopsis td {background-color:#e6e6e6; border:0px solid black; padding:2px; }
+ div.refsect1 {font-family:verdana,sans-serif; font-size:95%;}
+
+/* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt { margin-top:15px; }
+
+/* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 { font-family:verdana,sans-serif; font-size:75%;
+ margin-top:50px; margin-bottom:20px; padding-top:0px; padding-bottom:0px; }
+
+/* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table { margin-top: 10px; background-color:#FFF; width:100%; border-collapse:collapse; }
+ div.refsect1 td {background-color:#FFF; border:1px solid black; padding:5px;
+ font: normal 95% verdana,san-serif;}
+ div.refsect1 th {background-color:#FFF; border:1px solid black; padding:5px;
+ font: bold 95% verdana,san-serif;}
+
+/* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 { font-family:verdana,sans-serif; }
+ h3 { font:bold 1.25em verdana,sans-serif; font-size:135%;
+ margin-top:28px; margin-bottom:3px; padding-top:0px; padding-bottom:0px; }
+ div.refsect2 table {margin-top:0px; background-color:#e6e6e6;
+ width:100%; border:0px solid black; padding:2px;}
+ div.refsect2 td {background-color:##e6e6e6; white-space: pre; font: normal 1.1em 'courier new',monospace;}
+
+/* SPECIFICATION: Add an Acrobat Reader icon to PDF links
+ a[href$=".pdf"] {background: url(pdficon_small1.gif) left center no-repeat; padding-left: 22px;}
+ a[href$=".pdf"]:hover {background: url(pdficon_small1.gif) left center no-repeat;}*/
+
+</style>
+ <title>EGL Reference Pages</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.69.1" />
+ <meta name="keywords" content="OpenCl Reference Title Page" />
+ </head>
+ <body>
+ <div class="refentry" lang="en" xml:lang="en">
+ <a id="id4796348"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <a xmlns="http://www.w3.org/1999/xhtml" id="Memory Objects"></a>
+ <h1>EGL Reference Pages</h1>
+ <p></p>
+ </div>
+ <div class="refsect1" lang="en" xml:lang="en">
+ <a id="description"></a>
+ <h2></h2>
+ <p>
+ <img src="EGL_300.png" alt=""
+ hspace="40" vspace="40" border="0" align="right"
+ xmlns="http://www.w3.org/1999/xhtml" />
+ EGL&trade; is an interface between Khronos rendering APIs
+ such as OpenGL ES or OpenVG and the underlying native
+ platform window system. It handles graphics context
+ management, surface/buffer binding, and rendering
+ synchronization and enables high-performance, accelerated,
+ mixed-mode 2D and 3D rendering using other Khronos APIs.
+ </p>
+ <p>
+ The reference pages describe the latest approved version of
+ EGL, EGL 1.4, but can be used with earlier versions since
+ each page notes when features are available only starting
+ with specific versions (1.2, 1.3, and 1.4).
+ </p>
+ <p>
+ A more detailed overview of EGL functionality and technical
+ concepts can be found in the
+ <a target="pagedisplay" href="eglIntro.html">eglIntro</a>
+ page.
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4>
+ <img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><br>
+ Copyright &#169; 2007-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/KhronosLogo.jpg b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/KhronosLogo.jpg
new file mode 100644
index 0000000..f8a05f6
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/KhronosLogo.jpg
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/TOC.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/TOC.html
new file mode 100644
index 0000000..69b3ff8
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/TOC.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+ <title>Table of Contents</title>
+<link href="style.css" rel="stylesheet" type="text/css" />
+
+<script type="text/javascript">
+<!--
+var temp, temp2, cookieArray, cookieArray2, cookieCount;
+function initiate(){
+ cookieCount=0;
+ if(document.cookie){
+ cookieArray=document.cookie.split(";");
+ cookieArray2=new Array();
+ for(i in cookieArray){
+ cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")]=cookieArray[i].split("=")[1].replace(/ /g,"");
+ }
+ }
+ cookieArray=(document.cookie.indexOf("state=")>=0)?cookieArray2["state"].split(","):new Array();
+ temp=document.getElementById("containerul");
+ for(var o=0;o<temp.getElementsByTagName("li").length;o++){
+ if(temp.getElementsByTagName("li")[o].getElementsByTagName("ul").length>0){
+ temp2 = document.createElement("span");
+ temp2.className = "symbols";
+ temp2.style.backgroundImage = (cookieArray.length>0)?((cookieArray[cookieCount]=="true")?"url(bullets-contract.gif)":"url(bullets-expand.gif)"):"url(bullets-expand.gif)";
+ temp2.onmousedown=function(){
+ showhide(this.parentNode);
+ writeCookie();
+ }
+ temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild)
+ temp.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
+ if(cookieArray[cookieCount]=="true"){
+ showhide(temp.getElementsByTagName("li")[o]);
+ }
+ cookieCount++;
+ }
+ else{
+ temp2 = document.createElement("span");
+ temp2.className = "symbols";
+ temp2.style.backgroundImage = "url(bullets-end.gif)";
+ temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild);
+ }
+ }
+}
+
+function showhide(el){
+ el.getElementsByTagName("ul")[0].style.display=(el.getElementsByTagName("ul")[0].style.display=="block")?"none":"block";
+ el.getElementsByTagName("span")[0].style.backgroundImage=(el.getElementsByTagName("ul")[0].style.display=="block")?"url(bullets-contract.gif)":"url(bullets-expand.gif)";
+}
+
+function writeCookie(){ // Runs through the menu and puts the "states" of each nested list into an array, the array is then joined together and assigned to a cookie.
+ cookieArray=new Array()
+ for(var q=0;q<temp.getElementsByTagName("li").length;q++){
+ if(temp.getElementsByTagName("li")[q].childNodes.length>0){
+ if(temp.getElementsByTagName("li")[q].childNodes[0].nodeName=="SPAN" && temp.getElementsByTagName("li")[q].getElementsByTagName("ul").length>0){
+ cookieArray[cookieArray.length]=(temp.getElementsByTagName("li")[q].getElementsByTagName("ul")[0].style.display=="block");
+ }
+ }
+ }
+ document.cookie="state="+cookieArray.join(",")+";expires="+new Date(new Date().getTime() + 365*24*60*60*1000).toGMTString();
+}
+//-->
+</script>
+
+</head>
+<body>
+<div id="navwrap">
+ <ul id="containerul"> <!-- This ul must wrap entire list for expand/contract to work -->
+ <li class="lev1">
+ <a href="Intro.html" target="pagedisplay">Introduction</a>
+ </li>
+ <li class="lev1">Alphabetic Contents (<i>egl</i> prefix on function
+ names is ignored for sorting purposes)
+ <ul class="Level2">
+ <li>B
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglBindAPI.html">eglBindAPI</a></li>
+ <li><a target="pagedisplay" href="eglBindTexImage.html">eglBindTexImage</a></li>
+ </ul>
+ </li>
+ <li>C
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglChooseConfig.html">eglChooseConfig</a></li>
+ <li><a target="pagedisplay" href="eglCopyBuffers.html">eglCopyBuffers</a></li>
+ <li><a target="pagedisplay" href="eglCreateContext.html">eglCreateContext</a></li>
+ <li><a target="pagedisplay" href="eglCreatePbufferFromClientBuffer.html">eglCreatePbufferFromClientBuffer</a></li>
+ <li><a target="pagedisplay" href="eglCreatePbufferSurface.html">eglCreatePbufferSurface</a></li>
+ <li><a target="pagedisplay" href="eglCreatePixmapSurface.html">eglCreatePixmapSurface</a></li>
+ <li><a target="pagedisplay" href="eglCreateWindowSurface.html">eglCreateWindowSurface</a></li>
+ </ul>
+ </li>
+ <li>D
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglDestroyContext.html">eglDestroyContext</a></li>
+ <li><a target="pagedisplay" href="eglDestroySurface.html">eglDestroySurface</a></li>
+ </ul>
+ </li>
+ <li>G
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglGetConfigAttrib.html">eglGetConfigAttrib</a></li>
+ <li><a target="pagedisplay" href="eglGetConfigs.html">eglGetConfigs</a></li>
+ <li><a target="pagedisplay" href="eglGetCurrentContext.html">eglGetCurrentContext</a></li>
+ <li><a target="pagedisplay" href="eglGetCurrentDisplay.html">eglGetCurrentDisplay</a></li>
+ <li><a target="pagedisplay" href="eglGetCurrentSurface.html">eglGetCurrentSurface</a></li>
+ <li><a target="pagedisplay" href="eglGetDisplay.html">eglGetDisplay</a></li>
+ <li><a target="pagedisplay" href="eglGetError.html">eglGetError</a></li>
+ <li><a target="pagedisplay" href="eglGetProcAddress.html">eglGetProcAddress</a></li>
+ </ul>
+ </li>
+ <li>I
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglInitialize.html">eglInitialize</a></li>
+ <li><a target="pagedisplay" href="eglIntro.html">eglIntro</a></li>
+ </ul>
+ </li>
+ <li>M
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglMakeCurrent.html">eglMakeCurrent</a></li>
+ </ul>
+ </li>
+ <li>Q
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglQueryAPI.html">eglQueryAPI</a></li>
+ <li><a target="pagedisplay" href="eglQueryContext.html">eglQueryContext</a></li>
+ <li><a target="pagedisplay" href="eglQueryString.html">eglQueryString</a></li>
+ <li><a target="pagedisplay" href="eglQuerySurface.html">eglQuerySurface</a></li>
+ </ul>
+ </li>
+ <li>R
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglReleaseTexImage.html">eglReleaseTexImage</a></li>
+ <li><a target="pagedisplay" href="eglReleaseThread.html">eglReleaseThread</a></li>
+ </ul>
+ </li>
+ <li>S
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglSurfaceAttrib.html">eglSurfaceAttrib</a></li>
+ <li><a target="pagedisplay" href="eglSwapBuffers.html">eglSwapBuffers</a></li>
+ <li><a target="pagedisplay" href="eglSwapInterval.html">eglSwapInterval</a></li>
+ </ul>
+ </li>
+ <li>T
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglTerminate.html">eglTerminate</a></li>
+ </ul>
+ </li>
+ <li>W
+ <ul class="Level3">
+ <li><a target="pagedisplay" href="eglWaitClient.html">eglWaitClient</a></li>
+ <li><a target="pagedisplay" href="eglWaitGL.html">eglWaitGL</a></li>
+ <li><a target="pagedisplay" href="eglWaitNative.html">eglWaitNative</a></li>
+ <ul class="Level3">
+ </ul>
+ </li>
+ </ul> <!-- /Level2 -->
+ </li>
+
+<!-- later - include other categories such as
+ <li class="lev1">EGL Runtime
+ ...
+ </li>
+
+ <li class="lev1">
+ <a href="preprocessorDirectives.html" target="pagedisplay">Preprocessor Directives and Macros</a>
+ </li>
+
+ <li class="lev1">Optional Extensions
+ ...
+ </li>
+later -->
+ </ul> <!-- /containerurl -->
+</div> <!-- /navwrap -->
+<script type="text/javascript">
+initiate(); // This must be placed immediately after the menu in order to format it properly.
+</script>
+<p> </p>
+</body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-contract.gif b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-contract.gif
new file mode 100644
index 0000000..bb1e955
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-contract.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-end.gif b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-end.gif
new file mode 100644
index 0000000..abd000e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-end.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-expand.gif b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-expand.gif
new file mode 100644
index 0000000..e2dde60
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/bullets-expand.gif
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/copyright.inc.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/copyright.inc.xsl
new file mode 100644
index 0000000..d58ca32
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/copyright.inc.xsl
@@ -0,0 +1,15 @@
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<xsl:param name="copyright">
+Copyright &#169; 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</xsl:param>
+</xsl:stylesheet>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/ctop.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/ctop.xsl
new file mode 100644
index 0000000..a6800f4
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/ctop.xsl
@@ -0,0 +1,1319 @@
+<!-- saved from url=(0013)about:internet -->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+>
+
+<!--
+$Id: ctop.xsl,v 1.3 2002/09/20 08:41:39 davidc Exp $
+
+Copyright David Carlisle 2001, 2002.
+
+Use and distribution of this code are permitted under the terms of the <a
+href="http://www.w3.org/Consortium/Legal/copyright-software-19980720"
+>W3C Software Notice and License</a>.
+-->
+
+<xsl:output method="xml" />
+
+<xsl:template mode="c2p" match="*">
+<xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="c2p"/>
+</xsl:copy>
+</xsl:template>
+
+
+<!-- 4.4.1.1 cn -->
+
+<xsl:template mode="c2p" match="mml:cn">
+ <mml:mn><xsl:apply-templates mode="c2p"/></mml:mn>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='complex-cartesian']">
+ <mml:mrow>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[1]"/></mml:mn>
+ <mml:mo>+</mml:mo>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[2]"/></mml:mn>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <mml:mi>i<!-- imaginary i --></mml:mi>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='rational']">
+ <mml:mrow>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[1]"/></mml:mn>
+ <mml:mo>/</mml:mo>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[2]"/></mml:mn>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='integer']">
+ <xsl:choose>
+ <xsl:when test="not(@base) or @base=10">
+ <mml:mn><xsl:apply-templates mode="c2p"/></mml:mn>
+ </xsl:when>
+ <xsl:otherwise>
+ <mml:msub>
+ <mml:mn><xsl:apply-templates mode="c2p"/></mml:mn>
+ <mml:mn><xsl:value-of select="@base"/></mml:mn>
+ </mml:msub>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='complex-polar']">
+ <mml:mrow>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[1]"/></mml:mn>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <mml:msup>
+ <mml:mi>e<!-- exponential e--></mml:mi>
+ <mml:mrow>
+ <mml:mi>i<!-- imaginary i--></mml:mi>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[2]"/></mml:mn>
+ </mml:mrow>
+ </mml:msup>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:cn[@type='e-notation']">
+ <mml:mn><xsl:apply-templates mode="c2p" select="text()[1]"/>E<xsl:apply-templates mode="c2p" select="text()[2]"/></mml:mn>
+</xsl:template>
+
+<!-- 4.4.1.1 ci -->
+
+<xsl:template mode="c2p" match="mml:ci/text()">
+ <mml:mi><xsl:value-of select="."/></mml:mi>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:ci">
+ <mml:mrow><xsl:apply-templates mode="c2p"/></mml:mrow>
+</xsl:template>
+
+<!-- 4.4.1.2 csymbol -->
+
+<xsl:template mode="c2p" match="mml:csymbol/text()">
+ <mml:mo><xsl:apply-templates mode="c2p"/></mml:mo>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:csymbol">
+ <mml:mrow><xsl:apply-templates mode="c2p"/></mml:mrow>
+</xsl:template>
+
+<!-- 4.4.2.1 apply 4.4.2.2 reln -->
+
+<xsl:template mode="c2p" match="mml:apply|mml:reln">
+ <mml:mrow>
+ <xsl:apply-templates mode="c2p" select="*[1]">
+ <xsl:with-param name="p" select="10"/>
+ </xsl:apply-templates>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <mml:mfenced open="(" close=")" separators=",">
+ <xsl:apply-templates mode="c2p" select="*[position()>1]"/>
+ </mml:mfenced>
+ </mml:mrow>
+</xsl:template>
+
+<!-- 4.4.2.3 fn -->
+<xsl:template mode="c2p" match="mml:fn">
+ <mml:mrow><xsl:apply-templates mode="c2p"/></mml:mrow>
+</xsl:template>
+
+<!-- 4.4.2.4 interval -->
+<xsl:template mode="c2p" match="mml:interval[*[2]]">
+ <mml:mfenced open="[" close="]"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+<xsl:template mode="c2p" match="mml:interval[*[2]][@closure='open']">
+ <mml:mfenced open="(" close=")"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+<xsl:template mode="c2p" match="mml:interval[*[2]][@closure='open-closed']">
+ <mml:mfenced open="(" close="]"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+<xsl:template mode="c2p" match="mml:interval[*[2]][@closure='closed-open']">
+ <mml:mfenced open="[" close=")"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:interval">
+ <mml:mfenced open="{{" close="}}"><xsl:apply-templates mode="c2p"/></mml:mfenced>
+</xsl:template>
+
+<!-- 4.4.2.5 inverse -->
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:inverse]]">
+ <mml:msup>
+ <xsl:apply-templates mode="c2p" select="*[2]"/>
+ <mml:mrow><mml:mo>(</mml:mo><mml:mn>-1</mml:mn><mml:mo>)</mml:mo></mml:mrow>
+ </mml:msup>
+</xsl:template>
+
+<!-- 4.4.2.6 sep -->
+
+<!-- 4.4.2.7 condition -->
+<xsl:template mode="c2p" match="mml:condition">
+ <mml:mrow><xsl:apply-templates mode="c2p"/></mml:mrow>
+</xsl:template>
+
+<!-- 4.4.2.8 declare -->
+<xsl:template mode="c2p" match="mml:declare"/>
+
+<!-- 4.4.2.9 lambda -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:lambda]]">
+ <mml:mrow>
+ <mml:mi>&#955;<!--lambda--></mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:bvar/*"/></mml:mrow>
+ <mml:mo>.</mml:mo>
+ <mml:mfenced>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ </mml:mfenced>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.2.10 compose -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:compose]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8728;<!-- o --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.2.11` ident -->
+<xsl:template mode="c2p" match="mml:ident">
+<mml:mo>id</mml:mo>
+</xsl:template>
+
+<!-- 4.4.2.12` domain -->
+<xsl:template mode="c2p" match="mml:domain">
+<mml:mo>domain</mml:mo>
+</xsl:template>
+
+<!-- 4.4.2.13` codomain -->
+<xsl:template mode="c2p" match="mml:codomain">
+<mml:mo>codomain</mml:mo>
+</xsl:template>
+
+<!-- 4.4.2.14` image -->
+<xsl:template mode="c2p" match="mml:image">
+<mml:mo>image</mml:mo>
+</xsl:template>
+
+<!-- 4.4.2.15` domainofapplication -->
+<xsl:template mode="c2p" match="mml:domainofapplication">
+ <mml:error/>
+</xsl:template>
+
+<!-- 4.4.2.16` piecewise -->
+<xsl:template mode="c2p" match="mml:piecewise">
+<mml:mrow>
+<mml:mo>{</mml:mo>
+<mml:mtable>
+ <xsl:for-each select="mml:piece|mml:otherwise">
+ <mml:mtr>
+ <mml:mtd><xsl:apply-templates mode="c2p" select="*[1]"/></mml:mtd>
+ <mml:mtd><mml:mtext>&#160; if &#160;</mml:mtext></mml:mtd>
+ <mml:mtd><xsl:apply-templates mode="c2p" select="*[2]"/></mml:mtd>
+ </mml:mtr>
+ </xsl:for-each>
+</mml:mtable>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.1 quotient -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:quotient]]">
+<mml:mrow>
+<mml:mo>&#8970;<!-- lfloor--></mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>/</mml:mo>
+<xsl:apply-templates mode="c2p" select="*[3]"/>
+<mml:mo>&#8971;<!-- rfloor--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+
+<!-- 4.4.3.2 factorial -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:factorial]]">
+<mml:mrow>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+<mml:mo>!</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.3 divide -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:divide]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>/</mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.3.4 max min-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:max]]">
+<mml:mrow>
+ <mml:mo>max</mml:mo>
+ <xsl:call-template name="set"/>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:min]]">
+<mml:mrow>
+ <mml:mo>max</mml:mo>
+ <xsl:call-template name="set"/>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.3.5 minus-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:minus] and count(*)=2]">
+<mml:mrow>
+ <mml:mo>&#8722;<!--minus--></mml:mo>
+ <xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="5"/>
+ </xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:minus] and count(*)&gt;2]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>&#8722;<!--minus--></mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="2"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.3.6 plus-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:plus]]">
+ <xsl:param name="p" select="0"/>
+ <mml:mrow>
+ <xsl:if test="$p &gt; 2"><mml:mo>(</mml:mo></xsl:if>
+ <xsl:for-each select="*[position()&gt;1]">
+ <xsl:if test="position() &gt; 1">
+ <mml:mo>
+ <xsl:choose>
+ <xsl:when test="self::mml:apply[*[1][self::mml:times] and
+ *[2][self::mml:apply/*[1][self::mml:minus] or self::mml:cn[not(mml:sep) and
+ (number(.) &lt; 0)]]]">&#8722;<!--minus--></xsl:when>
+ <xsl:otherwise>+</xsl:otherwise>
+ </xsl:choose>
+ </mml:mo>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="self::mml:apply[*[1][self::mml:times] and
+ *[2][self::mml:cn[not(mml:sep) and (number(.) &lt;0)]]]">
+ <mml:mrow>
+ <mml:mn><xsl:value-of select="-(*[2])"/></mml:mn>
+ <mml:mo><!--&#8290;--><!--invisible times--></mml:mo>
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="first" select="2"/>
+ <xsl:with-param name="p" select="2"/>
+ </xsl:apply-templates>
+ </mml:mrow>
+ </xsl:when>
+ <xsl:when test="self::mml:apply[*[1][self::mml:times] and
+ *[2][self::mml:apply/*[1][self::mml:minus]]]">
+ <mml:mrow>
+ <xsl:apply-templates mode="c2p" select="./*[2]/*[2]"/>
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="first" select="2"/>
+ <xsl:with-param name="p" select="2"/>
+ </xsl:apply-templates>
+ </mml:mrow>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="p" select="2"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:if test="$p &gt; 2"><mml:mo>)</mml:mo></xsl:if>
+ </mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.7 power -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:power]]">
+<mml:msup>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="5"/>
+</xsl:apply-templates>
+<xsl:apply-templates mode="c2p" select="*[3]">
+ <xsl:with-param name="p" select="5"/>
+</xsl:apply-templates>
+</mml:msup>
+</xsl:template>
+
+<!-- 4.4.3.8 remainder -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:rem]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>mod</mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.3.9 times-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:times]]" name="times">
+ <xsl:param name="p" select="0"/>
+ <xsl:param name="first" select="1"/>
+ <mml:mrow>
+ <xsl:if test="$p &gt; 3"><mml:mo>(</mml:mo></xsl:if>
+ <xsl:for-each select="*[position()&gt;1]">
+ <xsl:if test="position() &gt; 1">
+ <mml:mo>
+ <xsl:choose>
+ <xsl:when test="self::mml:cn">&#215;<!-- times --></xsl:when>
+ <xsl:otherwise><!--&#8290;--><!--invisible times--></xsl:otherwise>
+ </xsl:choose>
+ </mml:mo>
+ </xsl:if>
+ <xsl:if test="position()&gt;= $first">
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="p" select="3"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:if test="$p &gt; 3"><mml:mo>)</mml:mo></xsl:if>
+ </mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.10 root -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:root] and not(mml:degree) or mml:degree=2]" priority="4">
+<mml:msqrt>
+<xsl:apply-templates mode="c2p" select="*[position()&gt;1]"/>
+</mml:msqrt>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:root]]">
+<mml:mroot>
+<xsl:apply-templates mode="c2p" select="*[position()&gt;1 and not(self::mml:degree)]"/>
+<mml:mrow><xsl:apply-templates mode="c2p" select="mml:degree/*"/></mml:mrow>
+</mml:mroot>
+</xsl:template>
+
+<!-- 4.4.3.11 gcd -->
+<xsl:template mode="c2p" match="mml:gcd">
+<mml:mo>gcd</mml:mo>
+</xsl:template>
+
+<!-- 4.4.3.12 and -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:and]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8743;<!-- and --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.3.13 or -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:or]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="3"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8744;<!-- or --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.3.14 xor -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:xor]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="3"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>xor</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.3.15 not -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:not]]">
+<mml:mrow>
+<mml:mo>&#172;<!-- not --></mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+
+
+
+<!-- 4.4.3.16 implies -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:implies]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>&#8658;<!-- Rightarrow --></mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.3.17 forall -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:forall]]">
+ <mml:mrow>
+ <mml:mi>&#8704;<!--forall--></mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:bvar[not(current()/mml:condition)]/*|mml:condition/*"/></mml:mrow>
+ <mml:mo>.</mml:mo>
+ <mml:mfenced>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ </mml:mfenced>
+</mml:mrow>
+</xsl:template>
+
+
+
+<!-- 4.4.3.18 exists -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:exists]]">
+ <mml:mrow>
+ <mml:mi>&#8707;<!--exists--></mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:bvar[not(current()/mml:condition)]/*|mml:condition/*"/></mml:mrow>
+ <mml:mo>.</mml:mo>
+ <mml:mfenced>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ </mml:mfenced>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.19 abs -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:abs]]">
+<mml:mrow>
+<mml:mo>|</mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>|</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+
+<!-- 4.4.3.20 conjugate -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:conjugate]]">
+<mml:mover>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>&#175;<!-- overline --></mml:mo>
+</mml:mover>
+</xsl:template>
+
+<!-- 4.4.3.21 arg -->
+<xsl:template mode="c2p" match="mml:arg">
+ <mml:mo>arg</mml:mo>
+</xsl:template>
+
+
+<!-- 4.4.3.22 real -->
+<xsl:template mode="c2p" match="mml:real">
+ <mml:mo>&#8475;<!-- real --></mml:mo>
+</xsl:template>
+
+<!-- 4.4.3.23 imaginary -->
+<xsl:template mode="c2p" match="mml:imaginary">
+ <mml:mo>&#8465;<!-- imaginary --></mml:mo>
+</xsl:template>
+
+<!-- 4.4.3.24 lcm -->
+<xsl:template mode="c2p" match="mml:lcm">
+ <mml:mo>lcm</mml:mo>
+</xsl:template>
+
+
+<!-- 4.4.3.25 floor -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:floor]]">
+<mml:mrow>
+<mml:mo>&#8970;<!-- lfloor--></mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>&#8971;<!-- rfloor--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.3.25 ceiling -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:ceiling]]">
+<mml:mrow>
+<mml:mo>&#8968;<!-- lceil--></mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>&#8969;<!-- rceil--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.4.1 eq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:eq]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>=</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.2 neq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:neq]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8800;<!-- neq --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.3 eq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:gt]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&gt;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.4 lt -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:lt]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&lt;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.5 geq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:geq]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8805;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.6 geq -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:leq]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8804;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.7 equivalent -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:equivalent]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8801;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.4.8 approx -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:approx]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="1"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8771;</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+
+<!-- 4.4.4.9 factorof -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:factorof]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>|</mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.5.1 int -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:int]]">
+ <mml:mrow>
+ <mml:msubsup>
+ <mml:mi>&#8747;<!--int--></mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:lowlimit/*|mml:interval/*[1]|mml:condition/*"/></mml:mrow>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:uplimit/*|mml:interval/*[2]"/></mml:mrow>
+ </mml:msubsup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ <mml:mo>d</mml:mo><xsl:apply-templates mode="c2p" select="mml:bvar"/>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.5.2 diff -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:diff] and mml:ci and count(*)=2]" priority="2">
+ <mml:msup>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="*[2]"/></mml:mrow>
+ <mml:mo>&#8242;<!--prime--></mml:mo>
+ </mml:msup>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:diff]]" priority="1">
+ <mml:mfrac>
+ <xsl:choose>
+ <xsl:when test="mml:bvar/mml:degree">
+ <mml:mrow><mml:msup><mml:mo>d</mml:mo><xsl:apply-templates mode="c2p" select="mml:bvar/mml:degree/node()"/></mml:msup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/></mml:mrow>
+ <mml:mrow><mml:mo>d</mml:mo><mml:msup><xsl:apply-templates mode="c2p"
+ select="mml:bvar/node()"/><xsl:apply-templates mode="c2p"
+ select="mml:bvar/mml:degree/node()"/></mml:msup>
+</mml:mrow>
+</xsl:when>
+<xsl:otherwise>
+ <mml:mrow><mml:mo>d</mml:mo><xsl:apply-templates mode="c2p" select="*[last()]"/></mml:mrow>
+ <mml:mrow><mml:mo>d</mml:mo><xsl:apply-templates mode="c2p" select="mml:bvar"/></mml:mrow>
+</xsl:otherwise>
+ </xsl:choose>
+ </mml:mfrac>
+</xsl:template>
+
+
+<!-- 4.4.5.3 partialdiff -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:partialdiff] and mml:list and mml:ci and count(*)=3]" priority="2">
+<mml:mrow>
+ <mml:msub><mml:mo>D</mml:mo><mml:mrow>
+<xsl:for-each select="mml:list[1]/*">
+<xsl:apply-templates mode="c2p" select="."/>
+<xsl:if test="position()&lt;last()"><mml:mo>,</mml:mo></xsl:if>
+</xsl:for-each>
+</mml:mrow></mml:msub>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="*[3]"/></mml:mrow>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:partialdiff]]" priority="1">
+ <mml:mfrac>
+ <mml:mrow><mml:msup><mml:mo>&#8706;<!-- partial --></mml:mo>
+<mml:mrow>
+ <xsl:choose>
+ <xsl:when test="mml:degree">
+<xsl:apply-templates mode="c2p" select="mml:degree/node()"/>
+</xsl:when>
+<xsl:when test="mml:bvar/mml:degree[string(number(.))='NaN']">
+<xsl:for-each select="mml:bvar/mml:degree">
+<xsl:apply-templates mode="c2p" select="node()"/>
+<xsl:if test="position()&lt;last()"><mml:mo>+</mml:mo></xsl:if>
+</xsl:for-each>
+<xsl:if test="count(mml:bvar[not(mml:degree)])&gt;0">
+<mml:mo>+</mml:mo><mml:mn><xsl:value-of select="count(mml:bvar[not(mml:degree)])"/></mml:mn>
+</xsl:if>
+</xsl:when>
+<xsl:otherwise>
+<mml:mn><xsl:value-of select="sum(mml:bvar/mml:degree)+count(mml:bvar[not(mml:degree)])"/></mml:mn>
+</xsl:otherwise>
+ </xsl:choose>
+</mml:mrow>
+</mml:msup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/></mml:mrow>
+<mml:mrow>
+<xsl:for-each select="mml:bvar">
+<mml:mrow>
+<mml:mo>&#8706;<!-- partial --></mml:mo><mml:msup><xsl:apply-templates mode="c2p" select="node()"/>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:degree/node()"/></mml:mrow>
+</mml:msup>
+</mml:mrow>
+</xsl:for-each>
+</mml:mrow>
+ </mml:mfrac>
+</xsl:template>
+
+<!-- 4.4.5.4 lowlimit-->
+<xsl:template mode="c2p" match="mml:lowlimit"/>
+
+<!-- 4.4.5.5 uplimit-->
+<xsl:template mode="c2p" match="mml:uplimit"/>
+
+<!-- 4.4.5.6 bvar-->
+<xsl:template mode="c2p" match="mml:bvar">
+ <mml:mi><xsl:apply-templates mode="c2p"/></mml:mi>
+ <xsl:if test="following-sibling::mml:bvar"><mml:mo>,</mml:mo></xsl:if>
+</xsl:template>
+
+<!-- 4.4.5.7 degree-->
+<xsl:template mode="c2p" match="mml:degree"/>
+
+<!-- 4.4.5.8 divergence-->
+<xsl:template mode="c2p" match="mml:divergence">
+<mml:mo>div</mml:mo>
+</xsl:template>
+
+<!-- 4.4.5.9 grad-->
+<xsl:template mode="c2p" match="mml:grad">
+<mml:mo>grad</mml:mo>
+</xsl:template>
+
+<!-- 4.4.5.10 curl -->
+<xsl:template mode="c2p" match="mml:curl">
+<mml:mo>curl</mml:mo>
+</xsl:template>
+
+
+<!-- 4.4.5.11 laplacian-->
+<xsl:template mode="c2p" match="mml:laplacian">
+<mml:msup><mml:mo>&#8711;<!-- nabla --></mml:mo><mml:mn>2</mml:mn></mml:msup>
+</xsl:template>
+
+<!-- 4.4.6.1 set -->
+
+<xsl:template mode="c2p" match="mml:set">
+ <xsl:call-template name="set"/>
+</xsl:template>
+
+<!-- 4.4.6.2 list -->
+
+<xsl:template mode="c2p" match="mml:list">
+ <xsl:call-template name="set">
+ <xsl:with-param name="o" select="'('"/>
+ <xsl:with-param name="c" select="')'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.3 union -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:union]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8746;<!-- union --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.4 intersect -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:intersect]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="3"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8745;<!-- intersect --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.5 in -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:in]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>&#8712;<!-- in --></mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.5 notin -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:notin]]">
+ <xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="mo"><mml:mo>&#8713;<!-- not in --></mml:mo></xsl:with-param>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="this-p" select="3"/>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.7 subset -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:subset]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8838;<!-- subseteq --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.8 prsubset -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:prsubset]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8834;<!-- prsubset --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.9 notsubset -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:notsubset]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8840;<!-- notsubseteq --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.10 notprsubset -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:notprsubset]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8836;<!-- prsubset --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.11 setdiff -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:setdiff]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#8726;<!-- setminus --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.6.12 card -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:card]]">
+<mml:mrow>
+<mml:mo>|</mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>|</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.6.13 cartesianproduct -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:cartesianproduct or self::mml:vectorproduct]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>&#215;<!-- times --></mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<xsl:template
+match="mml:apply[*[1][self::mml:cartesianproduct][count(following-sibling::mml:reals)=count(following-sibling::*)]]"
+priority="2">
+<mml:msup>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="5"/>
+</xsl:apply-templates>
+<mml:mn><xsl:value-of select="count(*)-1"/></mml:mn>
+</mml:msup>
+</xsl:template>
+
+
+<!-- 4.4.7.1 sum -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:sum]]">
+ <mml:mrow>
+ <mml:msubsup>
+ <mml:mo>&#8721;<!--sum--></mml:mo>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:lowlimit/*|mml:interval/*[1]|mml:condition/*"/></mml:mrow>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:uplimit/*|mml:interval/*[2]"/></mml:mrow>
+ </mml:msubsup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.7.2 product -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:product]]">
+ <mml:mrow>
+ <mml:msubsup>
+ <mml:mo>&#8719;<!--product--></mml:mo>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:lowlimit/*|mml:interval/*[1]|mml:condition/*"/></mml:mrow>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:uplimit/*|mml:interval/*[2]"/></mml:mrow>
+ </mml:msubsup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.7.3 limit -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:limit]]">
+ <mml:mrow>
+ <mml:munder>
+ <mml:mi>limit</mml:mi>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:lowlimit|mml:condition/*"/></mml:mrow>
+ </mml:munder>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template mode="c2p" match="mml:apply[mml:limit]/mml:lowlimit" priority="3">
+<mml:mrow>
+<xsl:apply-templates mode="c2p" select="../mml:bvar/node()"/>
+<mml:mo>&#8594;<!--rightarrow--></mml:mo>
+<xsl:apply-templates mode="c2p"/>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.7.4 tendsto -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:tendsto]]">
+ <xsl:param name="p"/>
+<xsl:call-template name="binary">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>
+ <xsl:choose>
+ <xsl:when test="@type='above'">&#8600;<!--searrow--></xsl:when>
+ <xsl:when test="@type='below'">&#8599;<!--nearrow--></xsl:when>
+ <xsl:when test="@type='two-sided'">&#8594;<!--rightarrow--></xsl:when>
+ <xsl:otherwise>&#8594;<!--rightarrow--></xsl:otherwise>
+ </xsl:choose>
+ </mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.8.1 trig -->
+<xsl:template mode="c2p" match="mml:apply[*[1][
+ self::mml:sin or self::mml:cos or self::mml:tan or self::mml:sec or
+ self::mml:csc or self::mml:cot or self::mml:sinh or self::mml:cosh or
+ self::mml:tanh or self::mml:sech or self::mml:csch or self::mml:coth or
+ self::mml:arcsin or self::mml:arccos or self::mml:arctan or self::mml:arccosh
+ or self::mml:arccot or self::mml:arccoth or self::mml:arccsc or
+ self::mml:arccsch or self::mml:arcsec or self::mml:arcsech or
+ self::mml:arcsinh or self::mml:arctanh or self::mml:ln]]">
+<mml:mrow>
+<mml:mi><xsl:value-of select="local-name(*[1])"/></mml:mi>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+
+
+
+<!-- 4.4.8.2 exp -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:exp]]">
+<mml:msup>
+<mml:mi>e<!-- exponential e--></mml:mi>
+<mml:mrow><xsl:apply-templates mode="c2p" select="*[2]"/></mml:mrow>
+</mml:msup>
+</xsl:template>
+
+<!-- 4.4.8.3 ln -->
+<!-- with trig -->
+
+<!-- 4.4.8.4 log -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:log]]">
+<mml:mrow>
+<xsl:choose>
+<xsl:when test="not(mml:logbase) or mml:logbase=10">
+<mml:mi>log</mml:mi>
+</xsl:when>
+<xsl:otherwise>
+<mml:msub>
+<mml:mi>log</mml:mi>
+<mml:mrow><xsl:apply-templates mode="c2p" select="mml:logbase/node()"/></mml:mrow>
+</mml:msub>
+</xsl:otherwise>
+</xsl:choose>
+<xsl:apply-templates mode="c2p" select="*[last()]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.9.1 mean -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:mean]]">
+<mml:mrow>
+ <mml:mo>&#9001;<!--langle--></mml:mo>
+ <xsl:for-each select="*[position()&gt;1]">
+ <xsl:apply-templates mode="c2p" select="."/>
+ <xsl:if test="position() !=last()"><mml:mo>,</mml:mo></xsl:if>
+ </xsl:for-each>
+<mml:mo>&#9002;<!--rangle--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+
+<!-- 4.4.9.2 sdef -->
+<xsl:template mode="c2p" match="mml:sdev">
+<mml:mo>&#963;<!--sigma--></mml:mo>
+</xsl:template>
+
+<!-- 4.4.9.3 variance -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:variance]]">
+<mml:msup>
+<mml:mrow>
+<mml:mo>&#963;<!--sigma--></mml:mo>
+<mml:mo>(</mml:mo>
+<xsl:apply-templates mode="c2p" select="*[2]"/>
+<mml:mo>)</mml:mo>
+</mml:mrow>
+<mml:mn>2</mml:mn>
+</mml:msup>
+</xsl:template>
+
+
+<!-- 4.4.9.4 median -->
+<xsl:template mode="c2p" match="mml:median">
+<mml:mo>median</mml:mo>
+</xsl:template>
+
+
+<!-- 4.4.9.5 mode -->
+<xsl:template mode="c2p" match="mml:mode">
+<mml:mo>mode</mml:mo>
+</xsl:template>
+
+<!-- 4.4.9.5 moment -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:moment]]">
+<mml:mrow>
+ <mml:mo>&#9001;<!--langle--></mml:mo>
+ <mml:msup>
+ <xsl:apply-templates mode="c2p" select="*[last()]"/>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:degree/node()"/></mml:mrow>
+ </mml:msup>
+<mml:mo>&#9002;<!--rangle--></mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.9.5 momentabout -->
+<xsl:template mode="c2p" match="mml:momentabout"/>
+
+<!-- 4.4.10.1 vector -->
+<xsl:template mode="c2p" match="mml:vector">
+<mml:mrow>
+<mml:mo>(</mml:mo>
+<mml:mtable>
+<xsl:for-each select="*">
+<mml:mtr><mml:mtd><xsl:apply-templates mode="c2p" select="."/></mml:mtd></mml:mtr>
+</xsl:for-each>
+</mml:mtable>
+<mml:mo>)</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.10.2 matrix -->
+<xsl:template mode="c2p" match="mml:matrix">
+<mml:mrow>
+<mml:mo>(</mml:mo>
+<mml:mtable>
+<xsl:apply-templates mode="c2p"/>
+</mml:mtable>
+<mml:mo>)</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.10.3 matrixrow -->
+<xsl:template mode="c2p" match="mml:matrixrow">
+<mml:mtr>
+<xsl:for-each select="*">
+<mml:mtd><xsl:apply-templates mode="c2p" select="."/></mml:mtd>
+</xsl:for-each>
+</mml:mtr>
+</xsl:template>
+
+<!-- 4.4.10.4 determinant -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:determinant]]">
+<mml:mrow>
+<mml:mi>det</mml:mi>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+</mml:mrow>
+</xsl:template>
+
+<xsl:template
+match="mml:apply[*[1][self::mml:determinant]][*[2][self::mml:matrix]]" priority="2">
+<mml:mrow>
+<mml:mo>|</mml:mo>
+<mml:mtable>
+<xsl:apply-templates mode="c2p" select="mml:matrix/*"/>
+</mml:mtable>
+<mml:mo>|</mml:mo>
+</mml:mrow>
+</xsl:template>
+
+<!-- 4.4.10.5 transpose -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:transpose]]">
+<mml:msup>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+<mml:mi>T</mml:mi>
+</mml:msup>
+</xsl:template>
+
+<!-- 4.4.10.5 selector -->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:selector]]">
+<mml:msub>
+<xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="7"/>
+</xsl:apply-templates>
+<mml:mrow>
+ <xsl:for-each select="*[position()&gt;2]">
+ <xsl:apply-templates mode="c2p" select="."/>
+ <xsl:if test="position() !=last()"><mml:mo>,</mml:mo></xsl:if>
+ </xsl:for-each>
+</mml:mrow>
+</mml:msub>
+</xsl:template>
+
+<!-- *** -->
+<!-- 4.4.10.6 vectorproduct see cartesianproduct -->
+
+
+<!-- 4.4.10.7 scalarproduct-->
+<xsl:template mode="c2p" match="mml:apply[*[1][self::mml:scalarproduct or self::mml:outerproduct]]">
+<xsl:param name="p" select="0"/>
+<xsl:call-template name="infix">
+ <xsl:with-param name="this-p" select="2"/>
+ <xsl:with-param name="p" select="$p"/>
+ <xsl:with-param name="mo"><mml:mo>.</mml:mo></xsl:with-param>
+</xsl:call-template>
+</xsl:template>
+
+<!-- 4.4.10.8 outerproduct-->
+
+<!-- 4.4.11.2 semantics -->
+<xsl:template mode="c2p" match="mml:semantics">
+ <xsl:apply-templates mode="c2p" select="*[1]"/>
+</xsl:template>
+<xsl:template mode="c2p" match="mml:semantics[mml:annotation-xml/@encoding='MathML-Presentation']">
+ <xsl:apply-templates mode="c2p" select="mml:annotation-xml[@encoding='MathML-Presentation']/node()"/>
+</xsl:template>
+
+<!-- 4.4.12.1 integers -->
+<xsl:template mode="c2p" match="mml:integers">
+<mml:mi mathvariant="double-struck">Z</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.2 reals -->
+<xsl:template mode="c2p" match="mml:reals">
+<mml:mi mathvariant="double-struck">R</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.3 rationals -->
+<xsl:template mode="c2p" match="mml:rationals">
+<mml:mi mathvariant="double-struck">Q</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.4 naturalnumbers -->
+<xsl:template mode="c2p" match="mml:naturalnumbers">
+<mml:mi mathvariant="double-struck">N</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.5 complexes -->
+<xsl:template mode="c2p" match="mml:complexes">
+<mml:mi mathvariant="double-struck">C</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.6 primes -->
+<xsl:template mode="c2p" match="mml:primes">
+<mml:mi mathvariant="double-struck">P</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.7 exponentiale -->
+<xsl:template mode="c2p" match="mml:exponentiale">
+ <mml:mi>e<!-- exponential e--></mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.8 imaginaryi -->
+<xsl:template mode="c2p" match="mml:imaginaryi">
+ <mml:mi>i<!-- imaginary i--></mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.9 notanumber -->
+<xsl:template mode="c2p" match="mml:notanumber">
+ <mml:mi>NaN</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.10 true -->
+<xsl:template mode="c2p" match="mml:true">
+ <mml:mi>true</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.11 false -->
+<xsl:template mode="c2p" match="mml:false">
+ <mml:mi>false</mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.12 emptyset -->
+<xsl:template mode="c2p" match="mml:emptyset">
+ <mml:mi>&#8709;<!-- emptyset --></mml:mi>
+</xsl:template>
+
+
+<!-- 4.4.12.13 pi -->
+<xsl:template mode="c2p" match="mml:pi">
+ <mml:mi>&#960;<!-- pi --></mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.14 eulergamma -->
+<xsl:template mode="c2p" match="mml:eulergamma">
+ <mml:mi>&#947;<!-- gamma --></mml:mi>
+</xsl:template>
+
+<!-- 4.4.12.15 infinity -->
+<xsl:template mode="c2p" match="mml:infinity">
+ <mml:mi>&#8734;<!-- infinity --></mml:mi>
+</xsl:template>
+
+
+<!-- ****************************** -->
+<xsl:template name="infix" >
+ <xsl:param name="mo"/>
+ <xsl:param name="p" select="0"/>
+ <xsl:param name="this-p" select="0"/>
+ <mml:mrow>
+ <xsl:if test="$this-p &lt; $p"><mml:mo>(</mml:mo></xsl:if>
+ <xsl:for-each select="*[position()&gt;1]">
+ <xsl:if test="position() &gt; 1">
+ <xsl:copy-of select="$mo"/>
+ </xsl:if>
+ <xsl:apply-templates mode="c2p" select=".">
+ <xsl:with-param name="p" select="$this-p"/>
+ </xsl:apply-templates>
+ </xsl:for-each>
+ <xsl:if test="$this-p &lt; $p"><mml:mo>)</mml:mo></xsl:if>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template name="binary" >
+ <xsl:param name="mo"/>
+ <xsl:param name="p" select="0"/>
+ <xsl:param name="this-p" select="0"/>
+ <mml:mrow>
+ <xsl:if test="$this-p &lt; $p"><mml:mo>(</mml:mo></xsl:if>
+ <xsl:apply-templates mode="c2p" select="*[2]">
+ <xsl:with-param name="p" select="$this-p"/>
+ </xsl:apply-templates>
+ <xsl:copy-of select="$mo"/>
+ <xsl:apply-templates mode="c2p" select="*[3]">
+ <xsl:with-param name="p" select="$this-p"/>
+ </xsl:apply-templates>
+ <xsl:if test="$this-p &lt; $p"><mml:mo>)</mml:mo></xsl:if>
+ </mml:mrow>
+</xsl:template>
+
+<xsl:template name="set" >
+ <xsl:param name="o" select="'{'"/>
+ <xsl:param name="c" select="'}'"/>
+ <mml:mrow>
+ <mml:mo><xsl:value-of select="$o"/></mml:mo>
+ <xsl:choose>
+ <xsl:when test="mml:condition">
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:bvar/*[not(self::bvar or self::condition)]"/></mml:mrow>
+ <mml:mo>|</mml:mo>
+ <mml:mrow><xsl:apply-templates mode="c2p" select="mml:condition/node()"/></mml:mrow>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="*">
+ <xsl:apply-templates mode="c2p" select="."/>
+ <xsl:if test="position() !=last()"><mml:mo>,</mml:mo></xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ <mml:mo><xsl:value-of select="$c"/></mml:mo>
+ </mml:mrow>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/egl-man.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/egl-man.xsl
new file mode 100644
index 0000000..7c73965
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/egl-man.xsl
@@ -0,0 +1,274 @@
+<?xml version='1.0'?>
+
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0">
+
+
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"/>
+
+<!-- This file contains the "customization layer" for the Docbook system. When a Docbook rule
+doesn't do exactly what we need, we override the rule in this file with a modified rule. -->
+
+<!-- Inserts the file style-css.xsl. This is embeddd into the <head /> tag of each resulting html file -->
+ <xsl:include href="styles-css.xsl" />
+ <xsl:include href="copyright.inc.xsl" />
+ <xsl:param name="funcsynopsis.style">ansi</xsl:param>
+ <xsl:param name="citerefentry.link" select="'1'"></xsl:param>
+ <xsl:output indent="yes"/>
+
+<!-- Set this param to a placeholder for the base URL of the external specification document. Include
+the beginning of the 'namedest' function as well. See the script pageNumberLookup.rb to see
+how this placeholder gets replaced by the actual spec URL and target page number. This placeholder
+can be any string, and only needs to match the same placeholder string in pageNumberLookup.rb. -->
+ <xsl:param name="SpecBaseUrl">http://www.khronos.org/registry/cl/specs/opencl-1.x-latest.pdf#namedest=</xsl:param>
+
+<!-- This generates a URL based on the contents of Refentry title. However if there is a value
+specified for the href attribute in Citerefentry, then it will create the URL out if that content instead -->
+ <xsl:template name="generate.citerefentry.link">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
+ <xsl:text>.html</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="refentrytitle"/>
+ <xsl:text>.html</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+<!-- The following template creates the link for the Specification section -->
+ <xsl:template match="olink">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="$SpecBaseUrl" />
+ <xsl:value-of select="@uri" />
+ <xsl:text disable-output-escaping="yes">" target="OpenCL Spec"&gt;</xsl:text>
+ <xsl:value-of select="." />
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+ </xsl:template>
+
+<!-- The following enables use of ulink for regular URLs on the pages-->
+<xsl:template match="ulink">
+ <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
+ <xsl:value-of select="@url" />
+ <xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
+ <xsl:value-of select="." />
+ <xsl:text disable-output-escaping="yes">&lt;/a&gt;</xsl:text>
+</xsl:template>
+
+
+<!-- The following is the main set of templates for generating the web pages -->
+ <xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl">
+
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/> <!-- This line performs the magic! -->
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+
+ </body>
+ </html>
+ </xsl:template>
+
+
+<xsl:template match="/">
+ <xsl:processing-instruction name="xml-stylesheet">
+ <xsl:text>type="text/xsl" href="mathml.xsl"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:apply-imports/>
+</xsl:template>
+
+
+<xsl:template match="funcdef/replaceable">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+
+<!-- This inserts the style-css.xsl file into the HTML file -->
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+</xsl:template>
+
+
+<!-- The templates gentext-refname and refnamediv are inserted here so
+we can have the refname displayed as the H1 header on the page -->
+<xsl:template name="gentext-refname">
+ <xsl:param name="key" select="local-name(.)"/>
+ <xsl:param name="lang">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:param>
+ <xsl:value-of select="refname"/>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::refnamediv">
+ <!-- no title on secondary refnamedivs! -->
+ </xsl:when>
+ <xsl:when test="$refentry.generate.name != 0">
+ <h1>
+ <xsl:call-template name="gentext-refname">
+ <xsl:with-param name="key" select="'RefName'"/>
+ </xsl:call-template>
+ </h1>
+ </xsl:when>
+ <xsl:when test="$refentry.generate.title != 0">
+ <h2>
+ <xsl:choose>
+ <xsl:when test="../refmeta/refentrytitle">
+ <xsl:apply-templates select="../refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="refname[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </h2>
+ </xsl:when>
+ </xsl:choose>
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </div>
+</xsl:template>
+
+
+<!-- The templates refname and refpurpose are inserted here so that we can
+modify the layout of these values on the HTML page -->
+<xsl:template match="refname" />
+<xsl:template match="refpurpose">
+<xsl:apply-templates/>
+</xsl:template>
+
+
+<!-- The Link template allows us to embed links in the <funcprototype>,
+even though this is not valid DocBook markup -->
+<xsl:template match="link" mode="ansi-tabular">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+
+<!-- The following template enables the <replaceable> tag inside
+ <funcdef>, <paramdef>, and <function> to generate <em> in the HTML output -->
+<xsl:template match="funcdef/replaceable" mode="ansi-tabular">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="paramdef/replaceable" mode="ansi-tabular">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="function/replaceable" mode="ansi-nontabular">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<xsl:template match="refname/replaceable" mode="kr-nontabular">
+ <xsl:call-template name="inline.italicseq"/>
+</xsl:template>
+
+<!-- The templates funcprototype and paramdef are here so we can modify the layout
+of the synopsis so that it is not broken into so many columns in the table, control indenting, and more. -->
+
+<!-- funcprototype: ansi, tabular -->
+
+<xsl:template match="funcprototype" mode="ansi-tabular">
+ <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <xsl:if test="following-sibling::funcprototype">
+ <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
+ </xsl:if>
+ <tr valign="bottom">
+ <td>
+ <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
+ <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
+ </td>
+ </tr>
+ <xsl:for-each select="(void|varargs|paramdef)[position() &gt; 1]">
+ <tr valign="top">
+ <td>&#160;</td>
+ <xsl:apply-templates select="." mode="ansi-tabular"/>
+ </tr>
+ </xsl:for-each>
+ </table>
+</xsl:template>
+
+
+<xsl:template match="paramdef" mode="ansi-tabular">
+ <xsl:choose>
+ <xsl:when test="type and funcparams">
+ <td>
+ <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <td>
+ <xsl:apply-templates select="type/following-sibling::node()" mode="kr-tabular-funcsynopsis-mode"/>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>
+ <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:text>&#160;</xsl:text>
+<!-- </td>
+ <td>-->
+ <xsl:apply-templates select="parameter" mode="ansi-tabular"/>
+ <xsl:apply-templates select="parameter/following-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
+ <xsl:choose>
+ <xsl:when test="following-sibling::*">
+ <xsl:text>, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <code>)</code>
+<!-- OpenCL functions do not end with a semi-colon.
+ <xsl:text>;</xsl:text> -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+
+<!-- The template refsect3 is inserted here to deal with the copyright. This
+adds in the text from the include file copyright.inc.xsl -->
+<xsl:template match="refsect3">
+ <div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:value-of select="$copyright"/>
+ </div>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindAPI.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindAPI.html
new file mode 100644
index 0000000..e3ad8b3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindAPI.html
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglBindAPI</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglBindAPI"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglBindAPI</h1>
+ <p>Set the current rendering API</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglBindAPI</strong>(</code>
+ <td>EGLenum  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">api</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>api</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the client API to bind, one of
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, or
+ <code class="constant">EGL_OPENVG_API</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglBindAPI</code> defines the current
+ rendering API for EGL in the thread it is called from. The
+ current rendering API is one of the client rendering APIs
+ supported by the EGL implementation, and affects the
+ behavior of other EGL commands including
+ <code class="function">eglCreateContext</code>,
+ <code class="function">eglGetCurrentContext</code>,
+ <code class="function">eglGetCurrentDisplay</code>,
+ <code class="function">eglGetCurrentSurface</code>,
+ <code class="function">eglMakeCurrent</code>,
+ <code class="function">eglWaitClient</code>, and
+ <code class="function">eglWaitNative</code>.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENGL_API</code>, the current rendering
+ API is set to the OpenGL API.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENGL_ES_API</code>, the current
+ rendering API is set to the OpenGL ES API.
+ </p>
+ <p>
+ If <em class="parameter"><code>api</code></em> is
+ <code class="constant">EGL_OPENVG_API</code>, the current rendering
+ API is set to the OpenVG API.
+ </p>
+ <p>
+ If an error occurs, the current rendering API is unchanged.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglBindAPI</code> and the corresponding
+ <code class="constant">EGL_OPENGL_ES_API</code> and
+ <code class="constant">EGL_OPENVG_API</code>
+ <em class="parameter"><code>api</code></em> parameters are supported only if
+ the EGL version is 1.2 or greater. The
+ <code class="constant">EGL_OPENGL_API</code> parameter is supported
+ only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ The initial value of the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <code class="constant">EGL_NONE</code> (however,
+ <code class="constant">EGL_NONE</code> is not a valid
+ <em class="parameter"><code>api</code></em> parameter to
+ <code class="function">eglBindAPI</code>).
+ </p>
+ <p>
+ The current rendering API can be queried by calling
+ <code class="function">eglQueryAPI</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>api</code></em> is not one of the accepted
+ tokens, or if the specified client API is not supported by
+ the EGL implementation.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQueryAPI.html"><span class="citerefentry"><span class="refentrytitle">eglQueryAPI</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindTexImage.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindTexImage.html
new file mode 100644
index 0000000..e0e96c2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglBindTexImage.html
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglBindTexImage</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglBindTexImage"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglBindTexImage</h1>
+ <p>
+ Defines a two-dimensional texture image
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglBindTexImage</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buffer</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the texture image data.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ The texture image consists of the image data in <em class="parameter"><code>buffer</code></em> for the specified surface, and need not be copied.
+ </p>
+ <p>
+ The texture target, the texture format and the size of the texture components are derived from
+ attributes of the specified surface, which must be a pbuffer supporting one of the
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code> or <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code> attributes.
+ </p>
+ <p>
+ The pbuffer attribute <code class="constant">EGL_TEXTURE_FORMAT</code> determines the base internal format
+ of the texture.
+ </p>
+ <p>
+ The texture target is derived from the <code class="constant">EGL_TEXTURE_TARGET</code> attribute of surface.
+ If the attribute value is <code class="constant">EGL_TEXTURE_2D</code>, then <em class="parameter"><code>buffer</code></em> defines a texture for
+ the two-dimensional texture object which is bound to the current context (hereafter
+ referred to as the current texture object).
+ </p>
+ <p>
+ If <em class="parameter"><code>display</code></em> and <em class="parameter"><code>surface</code></em> are the display and surface for the calling thread's current
+ context, <code class="function">eglBindTexImage</code> performs an implicit <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>.
+ For other surfaces, <code class="function">eglBindTexImage</code> waits for all effects from previously issued OpenGL ES commands
+ drawing to the surface to complete before defining the texture image, as
+ though <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a> were called on the last context to which that surface were bound.
+ </p>
+ <p>
+ After <code class="function">eglBindTexImage</code> is called, the specified surface is no longer available
+ for reading or writing. Any read operation, such as <a class="citerefentry" href="glReadPixels.html"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a> or
+ <a class="citerefentry" href="eglCopyBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>, which reads values from any of the surface's color buffers or ancillary
+ buffers will produce indeterminate results. In addition, draw operations that are
+ done to the surface before its color buffer is released from the texture produce indeterminate
+ results. Specifically, if the surface is current to a context and thread
+ then rendering commands will be processed and the context state will be updated,
+ but the surface may or may not be written.
+ </p>
+ <p>
+ Texture mipmap levels are automatically generated when all of the following
+ conditions are met while calling <code class="function">eglBindTexImage</code>:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ The <code class="constant">EGL_MIPMAP_TEXTURE</code> attribute of the pbuffer being bound is
+ <code class="constant">EGL_TRUE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The OpenGL ES texture parameter <code class="constant">GL_GENERATE_MIPMAP</code> is <code class="constant">GL_TRUE</code> for
+ the currently bound texture.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The value of the <code class="constant">EGL_MIPMAP_LEVEL</code> attribute of the pbuffer being bound is
+ equal to the value of the texture parameter <code class="constant">GL_TEXTURE_BASE_LEVEL</code>.
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ In this case, additional mipmap levels are generated as described in section 3.8
+ of the OpenGL ES 1.1 Specification.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a> has no effect if it is
+ called on a bound surface.
+ </p>
+ <p>
+ Any existing images associated with the different mipmap levels of the texture object
+ are freed (it is as if <a class="citerefentry" href="glTexImage.html"><span class="citerefentry"><span class="refentrytitle">glTexImage</span></span></a>
+ was called with an image of zero width).
+ </p>
+ <p>
+ The color buffer is bound to a texture object. If the texture object is
+ shared between contexts, then the color buffer is also shared. If a texture object is
+ deleted before <a class="citerefentry" href="eglReleaseTexImage.html"><span class="citerefentry"><span class="refentrytitle">eglReleaseTexImage</span></span></a> is called, then the color buffer is released and
+ the surface is made available for reading and writing.
+ </p>
+ <p>
+ It is not an error to call <a class="citerefentry" href="glTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a> or
+ <a class="citerefentry" href="glCopyTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a> to replace an
+ image of a texture object that has a color buffer bound to it. However, these calls
+ will cause the color buffer to be released back to the surface and new memory will
+ be allocated for the texture. Note that the color buffer is released even if the image
+ that is being defined is a mipmap level that was not defined by the color buffer.
+ </p>
+ <p>
+ <code class="function">eglBindTexImage</code> is ignored if there is no current rendering context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is already bound to a texture.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ surface attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ set to <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is not a valid buffer
+ (currently only <code class="constant">EGL_BACK_BUFFER</code> may be
+ specified).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface, or is
+ not a pbuffer surface supporting texture binding.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglReleaseTexImage.html"><span class="citerefentry"><span class="refentrytitle">eglReleaseTexImage</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglChooseConfig.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglChooseConfig.html
new file mode 100644
index 0000000..8a6f251
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglChooseConfig.html
@@ -0,0 +1,1361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglChooseConfig</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglChooseConfig"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglChooseConfig</h1>
+ <p>
+ return a list of EGL frame buffer configurations that match specified attributes
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglChooseConfig</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">configs</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config_size</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_config</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies attributes required to match by configs.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>configs</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns an array of frame buffer configurations.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config_size</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the size of the array of frame buffer configurations.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>num_config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of frame buffer configurations returned.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglChooseConfig</code> returns in
+ <em class="parameter"><code>configs</code></em> a list of all
+ <acronym class="acronym">EGL</acronym> frame buffer configurations that
+ match the attributes specified in
+ <em class="parameter"><code>attrib_list</code></em>. The returned
+ <span class="type">EGLConfig</span>s can be used in any
+ <acronym class="acronym">EGL</acronym> function that requires an
+ <acronym class="acronym">EGL</acronym> frame buffer configuration.
+ </p>
+ <p>
+ If <em class="parameter"><code>configs</code></em> is not
+ <code class="constant">NULL</code>, up to
+ <em class="parameter"><code>config_size</code></em> configs will be returned
+ in the array pointed to by <em class="parameter"><code>configs</code></em>.
+ The number of configs actually returned will be returned in
+ *<em class="parameter"><code>num_config</code></em>.
+ </p>
+ <p>
+ If <em class="parameter"><code>configs</code></em> is
+ <code class="constant">NULL</code>, no configs will be returned in
+ <em class="parameter"><code>configs</code></em>. Instead, the total number of
+ configs matching <em class="parameter"><code>attrib_list</code></em> will be
+ returned in *<em class="parameter"><code>num_config</code></em>. In this case
+ <em class="parameter"><code>config_size</code></em> is ignored. This form of
+ <code class="function">eglChooseConfig</code> is used to determine
+ the number of matching frame buffer configurations, followed
+ by allocating an array of <span class="type">EGLConfig</span> to pass
+ into another call to <code class="function">eglChooseConfig</code>
+ with all other parameters unchanged.
+ </p>
+ <p>
+ All attributes in <em class="parameter"><code>attrib_list</code></em>,
+ including boolean attributes, are immediately followed by
+ the corresponding desired value. The list is terminated with
+ <code class="constant">EGL_NONE</code>. If an attribute is not
+ specified in <em class="parameter"><code>attrib_list</code></em> then the
+ default value (see below) is used (and the attribute is said
+ to be specified implicitly). For example, if
+ <code class="constant">EGL_DEPTH_SIZE</code> is not specified then it
+ is assumed to be zero. For some attributes, the default is
+ <code class="constant">EGL_DONT_CARE</code> meaning that any value is
+ OK for this attribute, so the attribute will not be checked.
+ </p>
+ <p>
+ Attributes are matched in an attribute-specific manner. Some
+ of the attributes, such as <code class="constant">EGL_LEVEL</code>,
+ must match the specified value exactly. Others, such as,
+ <code class="constant">EGL_RED_SIZE</code> must meet or exceed the
+ specified minimum values. If more than one EGL frame buffer
+ configuration matching all attributes is found, then a list
+ of configurations, sorted according to the ``best'' match
+ criteria, is returned. The match criteria for each attribute
+ and the exact sorting order is defined below.
+ </p>
+ <p>
+ For the bitmask attributes
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code>, only the nonzero bits
+ of the mask are considered when matching. Any bits that are
+ zero in the specified bitmask attribute value may be either
+ zero or one in the resulting config's attribute value.
+ </p>
+ <p>
+ Attributes which may appear in
+ <em class="parameter"><code>attrib_list</code></em>, and their descriptions
+ and allowed values, are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired alpha mask buffer size, in
+ bits. The smallest alpha mask buffers of at least
+ the specified size are preferred. The default value
+ is zero.
+ </p>
+ <p>
+ The alpha mask buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the alpha component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest alpha component size
+ are preferred. Otherwise, color buffers with the
+ largest alpha component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGB texture
+ will be considered. Currently only frame buffer
+ configurations that support pbuffers allow this. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that support
+ binding of color buffers to an OpenGL ES RGBA
+ texture will be considered. Currently only frame
+ buffer configurations that support pbuffers allow
+ this. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BLUE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the blue component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest blue component size
+ are preferred. Otherwise, color buffers with the
+ largest blue component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BUFFER_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired color buffer size, in bits.
+ The smallest color buffers of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ <p>
+ The color buffer size is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>, and does not
+ include any padding bits which may be present in the
+ pixel format. It is usually preferable to specify
+ desired sizes for these color components
+ individually.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_RGB_BUFFER</code> or
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_RGB_BUFFER</code> indicates
+ an RGB color buffer; in this case,
+ attributes <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code> and
+ <code class="constant">EGL_BLUE_SIZE</code> must be non-zero, and
+ <code class="constant">EGL_LUMINANCE_SIZE</code> must be zero.
+ </p>
+ <p>
+ <code class="constant">EGL_LUMINANCE_BUFFER</code> indicates a luminance color
+ buffer. In this case <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code> must be zero, and
+ <code class="constant">EGL_LUMINANCE_SIZE</code> must be non-zero.
+ </p>
+ <p>
+ For both RGB and luminance color buffers,
+ <code class="constant">EGL_ALPHA_SIZE</code> may be zero or
+ non-zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_CAVEAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, or
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
+ </p>
+ <p>
+ If <code class="constant">EGL_DONT_CARE</code> is specified,
+ then configs are not matched for this attribute. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ If <code class="constant">EGL_NONE</code> is specified, then
+ configs are matched for this attribute, but only
+ configs with no caveats (neither
+ <code class="constant">EGL_SLOW_CONFIG</code> or
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>) will
+ be considered.
+ </p>
+ <p>
+ If <code class="constant">EGL_SLOW_CONFIG</code> is
+ specified, then only slow configs configurations
+ will be considered. The meaning of``slow'' is
+ implementation-dependent, but typically indicates a
+ non-hardware-accelerated (software) implementation.
+ </p>
+ <p>
+ If <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
+ specified, then only configs supporting
+ non-conformant OpenGL ES contexts will be
+ considered.
+ </p>
+ <p>
+ If the EGL version is 1.3 or later, caveat
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
+ obsolete, since the same information can be
+ specified via the
+ <code class="constant">EGL_CONFORMANT</code> attribute on a
+ per-client-API basis, not just for OpenGL ES.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a valid integer ID that
+ indicates the desired EGL frame buffer
+ configuration. When a
+ <code class="constant">EGL_CONFIG_ID</code> is specified, all
+ other attributes are ignored. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ The meaning of config IDs is
+ implementation-dependent. They are used only to
+ uniquely identify different frame buffer
+ configurations.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFORMANT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which types
+ of client API contexts created with respect to the
+ frame buffer configuration config must pass the
+ required conformance tests for that API. Mask bits
+ include:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_ES_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL ES 1.0
+ and/or 1.1 contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenGL ES 2.0 contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_OPENVG_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating OpenVG contexts.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ For example, if the bitmask is set to
+ <code class="constant">EGL_OPENGL_ES_BIT</code>, only frame
+ buffer configurations that support creating
+ conformant OpenGL ES contexts will match. The
+ default value is zero.
+ </p>
+ <p>
+ Most EGLConfigs should be conformant for all
+ supported client APIs, and it is rarely desirable to
+ select a nonconformant config. Conformance
+ requirements limit the number of non-conformant
+ configs that an implementation can define.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_DEPTH_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired depth buffer size, in bits.
+ The smallest depth buffers of at least the specified
+ size is preferred. If the desired size is zero,
+ frame buffer configurations with no depth buffer are
+ preferred. The default value is zero.
+ </p>
+ <p>
+ The depth buffer is used only by OpenGL and OpenGL
+ ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GREEN_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the green component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest green component size
+ are preferred. Otherwise, color buffers with the
+ largest green component of at least the specified
+ size are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer buffer level
+ specification. This specification is honored
+ exactly. Buffer level zero corresponds to the
+ default frame buffer of the display. Buffer level
+ one is the first overlay frame buffer, level two the
+ second overlay frame buffer, and so on. Negative
+ buffer levels correspond to underlay frame buffers.
+ The default value is zero.
+ </p>
+ <p>
+ Most imlementations do not support overlay or
+ underlay planes (buffer levels other than zero).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LUMINANCE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the luminance
+ component of the color buffer, in bits. If this
+ value is zero, color buffers with the smallest
+ luminance component size are preferred. Otherwise,
+ color buffers with the largest luminance component
+ of at least the specified size are preferred. The
+ default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the handle of a valid native
+ pixmap, cast to <span class="type">EGLint</span>, or
+ <code class="constant">EGL_NONE</code>. If the value is not
+ <code class="constant">EGL_NONE</code>, only configs which
+ support creating pixmap surfaces with this pixmap
+ using
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>
+ will match this attribute. If the value is
+ <code class="constant">EGL_NONE</code>, then configs are not
+ matched for this attribute. The default value is
+ <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> was
+ introduced due to the difficulty of determining an
+ <span class="type">EGLConfig</span> compatibile with a native
+ pixmap using only color component sizes.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by
+ <code class="constant">EGL_DONT_CARE</code>,
+ <code class="constant">EGL_TRUE</code>, or
+ <code class="constant">EGL_FALSE</code>.
+ If <code class="constant">EGL_TRUE</code> is specified, then
+ only frame buffer configurations that allow native
+ rendering into the surface will be considered. The
+ default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a integer that indicates the
+ maximum value that can be passed to
+ <a class="citerefentry" href="eglSwapInterval.html"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a integer that indicates the
+ minimum value that can be passed to eglSwapInterval.
+ The default value is <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RED_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired size of the red component of
+ the color buffer, in bits. If this value is zero,
+ color buffers with the smallest red component size
+ are preferred. Otherwise, color buffers with the
+ largest red component of at least the specified size
+ are preferred. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLE_BUFFERS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the minimum acceptable number of
+ multisample buffers. Configurations with the
+ smallest number of multisample buffers that meet or
+ exceed this minimum number are preferred. Currently
+ operation with more than one multisample buffer is
+ undefined, so only values of zero or one will
+ produce a match. The default value is zero.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLES</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by the minimum number of
+ samples required in multisample buffers.
+ Configurations with the smallest number of
+ samples that meet or exceed the specified
+ minimum number are preferred. Note that it is
+ possible for color samples in the multisample
+ buffer to have fewer bits than colors in the
+ main color buffers. However, multisampled
+ colors maintain at least as much color
+ resolution in aggregate as the main color
+ buffers.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_STENCIL_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a nonnegative integer that
+ indicates the desired stencil buffer size, in bits.
+ The smallest stencil buffers of at least the
+ specified size are preferred. If the desired size is
+ zero, frame buffer configurations with no stencil
+ buffer are preferred. The default value is zero.
+ </p>
+ <p>
+ The stencil buffer is used only by OpenGL and
+ OpenGL ES client APIs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDERABLE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which types
+ of client API contexts the frame buffer
+ configuration must support creating with
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>).
+ Mask bits are the same as for attribute
+ <code class="constant">EGL_CONFORMANT</code>. The default
+ value is <code class="constant">EGL_OPENGL_ES_BIT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SURFACE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by a bitmask indicating which EGL
+ surface types and capabilities the frame buffer
+ configuration must support. Mask bits include:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying box filtered
+ multisample resolve behavior with
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PBUFFER_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating pixel buffer surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PIXMAP_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating pixmap surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows setting swap behavior for
+ color buffers with
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying OpenVG rendering
+ with premultiplied alpha values at surface
+ creation time (see
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ and
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config allows specifying OpenVG rendering in
+ a linear colorspace at surface creation time
+ (see
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ and
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WINDOW_BIT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Config supports creating window surfaces.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ For example, if the bitmask is set to
+ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
+ <mml:mi><code class="constant">EGL_WINDOW_BIT</code></mml:mi>
+ <mml:mo>|</mml:mo>
+ <mml:mi><code class="constant">EGL_PIXMAP_BIT</code></mml:mi>
+ </mml:math>,
+ only frame buffer configurations that support both
+ windows and pixmaps will be considered. The default
+ value is <code class="constant">EGL_WINDOW_BIT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by one of
+ <code class="constant">EGL_NONE</code> or
+ <code class="constant">EGL_TRANSPARENT_RGB</code>. If
+ <code class="constant">EGL_NONE</code> is specified, then
+ only opaque frame buffer configurations will be
+ considered. If
+ <code class="constant">EGL_TRANSPARENT_RGB</code> is
+ specified, then only transparent frame buffer
+ configurations will be considered. The default value
+ is <code class="constant">EGL_NONE</code>.
+ </p>
+ <p>
+ Most implementations support only opaque frame
+ buffer configurations.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent red value. The value must be between
+ zero and the maximum color buffer value for red.
+ Only frame buffer configurations that use the
+ specified transparent red value will be considered.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent green value. The value must be between
+ zero and the maximum color buffer value for green.
+ Only frame buffer configurations that use the
+ specified transparent green value will be
+ considered. The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer value indicating the
+ transparent blue value. The value must be between
+ zero and the maximum color buffer value for blue.
+ Only frame buffer configurations that use the
+ specified transparent blue value will be considered.
+ The default value is
+ <code class="constant">EGL_DONT_CARE</code>.
+ </p>
+ <p>
+ This attribute is ignored unless
+ <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
+ <em class="parameter"><code>attrib_list</code></em> and specified as
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ When more than one EGL frame buffer configuration matches
+ the specified attributes, a list of matching configurations
+ is returned. The list is sorted according to the following
+ precedence rules, which are applied in ascending order
+ (i.e., configurations that are considered equal by a lower
+ numbered rule are sorted by the higher numbered rule):
+ </p>
+ <div class="orderedlist">
+ <ol class="orderedlist" type="1">
+ <li class="listitem">
+ <p>
+ Special: by <code class="constant">EGL_CONFIG_CAVEAT</code>,
+ where the precedence is <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, and
+ <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: by <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ where the precedence is
+ <code class="constant">EGL_RGB_BUFFER</code>,
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: by larger total number of color bits (for an
+ RGB color buffer, this is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>; for a luminance
+ color buffer, the sum of
+ <code class="constant">EGL_LUMINANCE_SIZE</code> and
+ <code class="constant">EGL_ALPHA_SIZE</code>). If the requested
+ number of bits in <em class="parameter"><code>attrib_list</code></em> is
+ <code class="constant">0</code> or
+ <code class="constant">EGL_DONT_CARE</code> for a particular
+ color component, then the number of bits for that
+ component is not considered.
+ </p>
+ <p>
+ This sort rule places configs with deeper color buffers
+ before configs with shallower color buffers, which may
+ be counterintuitive.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_BUFFER_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_SAMPLE_BUFFERS</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_SAMPLES</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_DEPTH_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_STENCIL_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_ALPHA_MASK_SIZE</code>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Special: <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
+ (the actual sort order is implementation-defined,
+ depending on the meaning of native visual types).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Smaller <code class="constant">EGL_CONFIG_ID</code> (this is
+ always the last sorting rule, and guarantees a unique
+ ordering).
+ </p>
+ </li>
+ </ol>
+ </div>
+ <p>
+ <span class="type">EGLConfigs</span> are not sorted with respect to the
+ attributes <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>,
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>,
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_LEVEL</code>,
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>,
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>,
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>,
+ <code class="constant">EGL_SURFACE_TYPE</code>,
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>,
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>,
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>, and
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="examples"></a>
+ <h2>Examples</h2>
+ <p>
+ The following example specifies a frame buffer configuration
+ in the normal frame buffer (not an overlay or underlay). The
+ returned frame buffer configuration supports a color buffer
+ with at least 4 bits each of red, green and blue, and
+ possibly no alpha bits. The code shown in the example may or
+ may not have a depth buffer, or a stencil buffer.
+ </p>
+ <pre class="programlisting">EGLint const attrib_list[] = {
+ EGL_RED_SIZE, 4,
+ EGL_GREEN_SIZE, 4,
+ EGL_BLUE_SIZE, 4,
+ EGL_NONE
+};</pre>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bit
+ <code class="constant">EGL_OPENGL_BIT</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code> bits
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code> and
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> are
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_CONFORMANT</code>,
+ <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bit
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>, and
+ <code class="constant">EGL_SURFACE_TYPE</code> bits
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> and
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code> are
+ supported only if the EGL version is 1.3 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ <code class="constant">EGL_LUMINANCE_SIZE</code>,
+ <code class="constant">EGL_RENDERABLE_TYPE</code>, and
+ <code class="constant">EGL_RENDERABLE_TYPE</code> bits
+ <code class="constant">EGL_OPENGL_ES_BIT</code> and
+ <code class="constant">EGL_OPENVG_BIT</code> are supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If OpenGL or OpenGL ES rendering is supported for a
+ luminance color buffer, it is treated as RGB rendering with
+ the value of <code class="constant">GL_RED_BITS</code> equal to
+ <code class="constant">EGL_LUMINANCE_SIZE</code> and the values of
+ <code class="constant">GL_GREEN_BITS</code> and
+ <code class="constant">GL_BLUE_BITS</code> equal to zero. The red
+ component of fragments is written to the luminance channel
+ of the color buffer while the green and blue components are
+ discarded.
+ </p>
+ <p>
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ and
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ can be used to implement selection algorithms other than the
+ generic one implemented by
+ <code class="function">eglChooseConfig</code>. Call
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ to retrieve all the frame buffer configurations, or
+ alternatively, all the frame buffer configurations with a
+ particular set of attributes. Next call
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ to retrieve additional attributes for the frame buffer
+ configurations and then select between them.
+ </p>
+ <p>
+ EGL implementors are strongly discouraged, but not
+ proscribed, from changing the selection algorithm used by
+ <code class="function">eglChooseConfig</code>. Therefore, selections
+ may change from release to release of the client-side
+ library.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>configs</code></em> and
+ <em class="parameter"><code>num_config</code></em> are not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute_list</code></em> contains an invalid frame buffer
+ configuration attribute or an
+ attribute value that is unrecognized or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSwapInterval.html"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCopyBuffers.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCopyBuffers.html
new file mode 100644
index 0000000..e24ff15
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCopyBuffers.html
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCopyBuffers</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCopyBuffers"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCopyBuffers</h1>
+ <p>
+ copy <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface color buffer to a native pixmap
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglCopyBuffers</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>NativePixmapType  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">native_pixmap</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface whose color buffer is to be copied.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the native pixmap as target of the copy.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCopyBuffers</code> copies the color buffer of
+ <em class="parameter"><code>surface</code></em> to <em class="parameter"><code>native_pixmap</code></em>.
+ </p>
+ <p>
+ <code class="function">eglCopyBuffers</code> performs an implicit
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>
+ before it returns. Subsequent
+ GL commands may be issued immediately after calling
+ <code class="function">eglCopyBuffers</code>,
+ but are not executed until copying of the color buffer is completed.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ The color buffer of <em class="parameter"><code>surface</code></em> is left unchanged
+ after calling <code class="function">eglCopyBuffers</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if swapping of the
+ surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> is generated if
+ the implementation does not support native pixmaps.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ <em class="parameter"><code>native_pixmap</code></em> is not a valid native pixmap.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the format of <em class="parameter"><code>native_pixmap</code></em> is not compatible
+ with the color buffer of <em class="parameter"><code>surface</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateContext.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateContext.html
new file mode 100644
index 0000000..55c317c
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateContext.html
@@ -0,0 +1,488 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreateContext</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreateContext"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreateContext</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLContext <strong class="fsfunc">eglCreateContext</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLContext  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">share_context</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the
+ <acronym class="acronym">EGL</acronym>
+ display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that
+ defines the frame buffer resource available to the rendering context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>share_context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies another
+ <acronym class="acronym">EGL</acronym>
+ rendering context with which to share data, as
+ defined by the client API corresponding to the
+ contexts. Data is also shared with all other
+ contexts with which
+ <em class="parameter"><code>share_context</code></em> shares data.
+ <code class="constant">EGL_NO_CONTEXT</code> indicates that
+ no sharing is to take place.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies attributes and attribute values for the
+ context being created. Only the attribute
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> may
+ be specified.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateContext</code> creates an EGL
+ rendering context for the current rendering API (as set with
+ <code class="function">eglBindAPI</code>) and returns a handle to the
+ context. The context can then be used to render into an EGL
+ drawing surface. If <code class="function">eglCreateContext</code>
+ fails to create a rendering context,
+ <code class="constant">EGL_NO_CONTEXT</code> is returned.
+ </p>
+ <p>
+ If <em class="parameter"><code>share_context</code></em> is not
+ <code class="constant">EGL_NO_CONTEXT</code>, then all shareable data
+ in the context (as defined by the client API specification
+ for the current rendering API) are shared by context
+ <em class="parameter"><code>share_context</code></em>, all other contexts
+ <em class="parameter"><code>share_context</code></em> already shares with,
+ and the newly created context. An arbitrary number of
+ rendering contexts can share data. However, all rendering
+ contexts that share data must themselves exist in the same
+ address space. Two rendering contexts share an address space
+ if both are owned by a single process.
+ </p>
+ <p>
+ <em class="parameter"><code>attrib_list</code></em> specifies a list of
+ attributes for the context. The list has the same structure
+ as described for <code class="function">eglChooseConfig</code>. The
+ attributes and attribute values which may be specified are
+ as follows:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Must be followed by an integer that determines which
+ version of an OpenGL ES context to create. A value
+ of 1 specifies creation of an OpenGL ES 1.x context.
+ An attribute value of 2 specifies creation of an
+ OpenGL ES 2.x context. The default value is 1. This
+ attribute can only be specified when creating a
+ OpenGL ES context (e.g. when the current rendering
+ API is <code class="constant">EGL_OPENGL_ES_API</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ The current rendering API is only respected if the EGL
+ version is 1.2 or greater. Otherwise, an OpenGL ES context
+ will always be created.
+ </p>
+ <p>
+ The <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
+ attribute is only supported if the EGL version is 1.3 or
+ greater.
+ </p>
+ <p>
+ A <em class="firstterm">process</em> is a single execution environment,
+ implemented in a single address space, consisting of one or more threads.
+ </p>
+ <p>
+ A <em class="firstterm">thread</em> is one of a set of subprocesses that
+ share a single address space, but maintain separate program counters,
+ stack spaces, and other related global data.
+ A thread is the only member of its subprocess group is equivalent to a
+ process.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_CONTEXT</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ current rendering API is <code class="constant">EGL_NONE</code> (this
+ can only arise in an EGL implementation which does not
+ support OpenGL ES, prior to the first call to
+ <code class="function">eglBindAPI</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ server context state for
+ <em class="parameter"><code>share_context</code></em> exists in an address
+ space which cannot be shared with the newly created context,
+ if <em class="parameter"><code>share_context</code></em> was created on a
+ different display than the one referenced by
+ <em class="parameter"><code>config</code></em>, or if the contexts are
+ otherwise incompatible.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer
+ configuration, or does not support the current rendering
+ API. This includes requesting creation of an OpenGL ES 1.x
+ context when the <code class="constant">EGL_RENDERABLE_TYPE</code>
+ attribute of <em class="parameter"><code>config</code></em> does not contain
+ <code class="constant">EGL_OPENGL_ES_BIT</code>, or creation of an
+ OpenGL ES 2.x context when the attribute does not contain
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>share_context</code></em> is not an EGL rendering
+ context of the same client API type as the newly created
+ context and is not <code class="constant">EGL_NO_CONTEXT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid
+ context attribute or if an attribute is not recognized or
+ out of range. Note that attribute
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> is
+ only valid when the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroyContext.html"><span class="citerefentry"><span class="refentrytitle">eglDestroyContext</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferFromClientBuffer.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferFromClientBuffer.html
new file mode 100644
index 0000000..29fadf5
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferFromClientBuffer.html
@@ -0,0 +1,669 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreatePbufferFromClientBuffer</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreatePbufferFromClientBuffer"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreatePbufferFromClientBuffer</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> pixel buffer surface
+ bound to an OpenVG image
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePbufferFromClientBuffer</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLenum  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buftype</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLClientBuffer  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buffer</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buftype</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the type of client API buffer to be bound.
+ Must be <code class="constant">EGL_OPENVG_IMAGE</code>,
+ corresponding to an OpenVG <span class="type">VGImage</span>
+ buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the OpenVG <span class="type">VGImage</span> handle of
+ the buffer to be bound.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixel buffer surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePbufferFromClientBuffer</code> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <code class="function">eglCreatePbufferFromClientBuffer</code> fails to create
+ a pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code>
+ is returned.
+ </p>
+ <p>
+ The new pixel buffer surface is similar to a pixel buffer
+ created with
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ but storage for the color buffer is provided by a client API
+ buffer. Other buffer required by
+ <em class="parameter"><code>config</code></em>, such as depth, stencil, and
+ alpha mask, are allocated by EGL.
+ </p>
+ <p>
+ <em class="parameter"><code>buftype</code></em> must be
+ <code class="constant">EGL_OPENVG_IMAGE</code>, corresponding to an
+ OpenVG <span class="type">VGImage</span> buffer.
+ <em class="parameter"><code>buffer</code></em> must be a valid
+ <span class="type">VGImage</span> handle in the current OpenVG context,
+ cast into the type <span class="type">EGLClientBuffer</span>.
+ </p>
+ <p>
+ The height, width,, OpenVG alpha format, and OpenVG
+ colorspace (surface attributes
+ <code class="constant">EGL_HEIGHT</code>,
+ <code class="constant">EGL_WIDTH</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, respectively) of the
+ resulting surface are determined by the size and format of
+ <em class="parameter"><code>buffer</code></em>.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <code class="constant">EGL_TRUE</code>
+ and <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>. Possible
+ values are <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglCreatePbufferFromClientBuffer</code> is
+ supported only if the EGL version is 1.2 or greater, and if
+ the EGL implementation supports the OpenVG client API.
+ </p>
+ <p>
+ Currently
+ <code class="function">eglCreatePbufferFromClientBuffer</code> only
+ supports binding OpenVG <span class="type">VGImage</span> buffers to
+ pixel buffers. While other client API resources could be
+ supported in the future, mechanisms such as OpenGL ES
+ framebuffer objects, and the family of EGL and client API
+ extensions for defining and using <span class="type">EGLImageKHR</span>
+ images, are a more flexible and general framework to satisfy
+ most of the same needs.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>config</code></em> attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </p>
+ <p>
+ If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_TEXTURE_2D</code>, and the value of
+ <code class="constant">EGL_TEXTURE FORMAT</code> is
+ <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </p>
+ <p>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </p>
+ <p>
+ Binding client API buffers to EGL pbuffers create the
+ possibility of race conditions, and of buffers being deleted
+ through one API while still in use in another API. To avoid
+ these problems, a number of constraints apply to bound
+ client API buffers:
+ </p>
+ <div class="orderedlist">
+ <ol class="orderedlist" type="1">
+ <li class="listitem">
+ <p>
+ Bound buffers may be used exclusively by either EGL,
+ or the client API that originally created them. For
+ example, if a <span class="type">VGImage</span> is bound to a
+ pbuffer, and that pbuffer is bound to any client API
+ rendering context, then the <span class="type">VGImage</span> may
+ not be used as the explicit source or destination of
+ any OpenVG operation. Errors resulting from such use
+ are described in client API specifications.
+ Similarly, while a <span class="type">VGImage</span> is in use by
+ OpenVG, the pbuffer it is bound to may not be made
+ current to any client API context using
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Binding a buffer creates an additional reference to
+ it, and implementations must respect outstanding
+ references when destroying objects. For example, if
+ a <span class="type">VGImage</span> is bound to a pbuffer,
+ destroying the image with
+ <code class="function">vgDestroyImage</code> will not free
+ the underlying buffer, because it is still in use by
+ EGL. However, following
+ <code class="function">vgDestroyImage</code> the buffer may
+ only be referred to via the EGL pbuffer handle,
+ since the OpenVG handle to that buffer no longer
+ exists. Similarly, destroying the pbuffer with
+ <code class="function">eglDestroySurface</code> will not free
+ the underlying buffer, because it is still in use by
+ OpenVG . However, following
+ <code class="function">eglDestroySurface</code> the buffer
+ may only be referred to via the OpenVG
+ <span class="type">VGImage</span> handle, since the EGL pbuffer
+ handle no longer exists.
+ </p>
+ </li>
+ </ol>
+ </div>
+ <p>
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>buftype</code></em> is not
+ <code class="constant">EGL_OPENVG_IMAGE</code>, or if
+ <em class="parameter"><code>buffer</code></em> is not a valid handle to a
+ <span class="type">VGImage</span> object in the currently bound OpenVG
+ context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if there is
+ no current OpenVG context, or if
+ <em class="parameter"><code>buffer</code></em> is already bound to another
+ pixel buffer or in use by OpenVG as discussed in the Notes
+ section above.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains any of the
+ attributes <code class="constant">EGL_MIPMAP_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_FORMAT</code>, or
+ <code class="constant">EGL_TEXTURE_TARGET</code>, and
+ <em class="parameter"><code>config</code></em> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <code class="constant">EGL_RENDERABLE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em> does not include at least one
+ of <code class="constant">EGL_OPENGL_ES_BIT</code> or
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixel buffers
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PBUFFER_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ buffers contained in <em class="parameter"><code>buffer</code></em> do not
+ match the bit depths for those buffers specified by
+ <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_WIDTH</code> and/or
+ <code class="constant">EGL_HEIGHT</code> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>; or,
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ implementation has additional constraints on which types of
+ client API buffers may be bound to pixel buffer surfaces.
+ For example, it is possible that the OpenVG implementation
+ might not support a <span class="type">VGImage</span> being bound to a
+ pixel buffer which will be used as a mipmapped OpenGL ES
+ texture (e.g. whose <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ attribute is <code class="constant">TRUE</code>). Any such
+ constraints should be documented by the implementation
+ release notes.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferSurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferSurface.html
new file mode 100644
index 0000000..c99115a
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePbufferSurface.html
@@ -0,0 +1,605 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreatePbufferSurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreatePbufferSurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreatePbufferSurface</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> pixel buffer surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePbufferSurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixel buffer surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePbufferSurface</code> creates an
+ off-screen pixel buffer surface and returns its handle. If
+ <code class="function">eglCreatePbufferSurface</code> fails to create
+ a pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code>
+ is returned.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the required height of the pixel buffer
+ surface. The default value is
+ <code class="constant">0</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LARGEST_PBUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Requests the largest available pixel buffer surface
+ when the allocation would otherwise fail. Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel
+ buffer. The default value is
+ <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether storage for mipmaps should be
+ allocated. Space for mipmaps will be set aside if
+ the attribute value is <code class="constant">EGL_TRUE</code>
+ and <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>. The default
+ value is <code class="constant">EGL_FALSE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the format of the texture that will be
+ created when a pbuffer is bound to a texture map.
+ Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the target for the texture that will be
+ created when the pbuffer is created with a texture
+ format of <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>. Possible
+ values are <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>. The default
+ value is <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the required width of the pixel buffer
+ surface. The default value is
+ <code class="constant">0</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the dimensions of the allocated pixel buffer
+ surface or the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attributes
+ <code class="constant">EGL_RENDERABLE_TYPE</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If the value of <em class="parameter"><code>config</code></em> attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is not
+ <code class="constant">EGL_NO_TEXTURE</code>, then the pbuffer width
+ and height specify the size of the level zero texture image
+ </p>
+ <p>
+ If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and
+ if the pbuffer will be used as a texture (i.e. the value of
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_TEXTURE_2D</code>, and the value of
+ <code class="constant">EGL_TEXTURE FORMAT</code> is
+ <code class="constant">EGL_TEXTURE_RGB</code> or
+ <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect
+ ratio will be preserved and the new width and height will be
+ valid sizes for the texture target (e.g. if the underlying
+ OpenGL ES implementation does not support non-power-of-two
+ textures, both the width and height will be a power of 2).
+ </p>
+ <p>
+ The contents of the depth and stencil buffers may not be
+ preserved when rendering a texture to the pbuffer and
+ switching which image of the texture is rendered to (e.g.,
+ switching from rendering one mipmap level to rendering
+ another).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel
+ buffer attribute or if an attribute value is not recognized
+ or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains any of the
+ attributes <code class="constant">EGL_MIPMAP_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_FORMAT</code>, or
+ <code class="constant">EGL_TEXTURE_TARGET</code>, and
+ <em class="parameter"><code>config</code></em> does not support OpenGL ES
+ rendering (e.g. the EGL version is 1.2 or later, and the
+ <code class="constant">EGL_RENDERABLE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em> does not include at least one
+ of <code class="constant">EGL_OPENGL_ES_BIT</code> or
+ <code class="constant">EGL_OPENGL_ES2_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixel buffers
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PBUFFER_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_WIDTH</code> and/or
+ <code class="constant">EGL_HEIGHT</code> specify an invalid size
+ (e.g., the texture size is not a power of 2, and the
+ underlying OpenGL ES implementation does not support
+ non-power-of-two textures).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ the <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is
+ <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>; or,
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is something other
+ than <code class="constant">EGL_NO_TEXTURE</code>, and
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePixmapSurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePixmapSurface.html
new file mode 100644
index 0000000..5f35de9
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreatePixmapSurface.html
@@ -0,0 +1,494 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreatePixmapSurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreatePixmapSurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreatePixmapSurface</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> pixmap surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglCreatePixmapSurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>NativePixmapType  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">native_pixmap</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_pixmap</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native pixmap.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies pixmap surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreatePixmapSurface</code> creates an
+ off-screen <acronym class="acronym">EGL</acronym> pixmap surface and returns
+ its handle. If <code class="function">eglCreatePixmapSurface</code>
+ fails to create a pixmap surface,
+ <code class="constant">EGL_NO_SURFACE</code> is returned.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ The <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> attribute
+ of
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ can be used to select a frame buffer configuration matching
+ a specified native pixmap.
+ </p>
+ <p>
+ Attributes
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code> attributes are used
+ only by OpenVG. EGL itself, and other client APIs such as
+ OpenGL and OpenGL ES , do not distinguish multiple
+ colorspace models. Refer to section 11.2 of the OpenVG 1.0
+ specification for more information. The native window
+ system's use and interpretation of alpha values is outside
+ the scope of EGL, although the preferred behavior is for the
+ window system to ignore the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL config.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ <em class="parameter"><code>native_pixmap</code></em> is not a valid native pixmap.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid pixmap attribute
+ or if an attribute value is not recognized or out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the attributes of
+ <em class="parameter"><code>native_pixmap</code></em> do not correspond to
+ <em class="parameter"><code>config</code></em> or if
+ <em class="parameter"><code>config</code></em> does not support rendering to pixmaps
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_PIXMAP_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateWindowSurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateWindowSurface.html
new file mode 100644
index 0000000..12daff3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglCreateWindowSurface.html
@@ -0,0 +1,512 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglCreateWindowSurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglCreateWindowSurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglCreateWindowSurface</h1>
+ <p>
+ create a new <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> window surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglCreateWindowSurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>NativeWindowType  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">native_window</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration that defines the
+ frame buffer resource available to the surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_window</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the native window.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attrib_list</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies window surface attributes.
+ May be <code class="constant">NULL</code> or empty
+ (first attribute is <code class="constant">EGL_NONE</code>).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglCreateWindowSurface</code> creates an EGL
+ window surface and returns its handle. If
+ <code class="function">eglCreateWindowSurface</code> fails to create
+ a window surface, <code class="constant">EGL_NO_SURFACE</code> is
+ returned.
+ </p>
+ <p>
+ Surface attributes are specified as a list of
+ attribute-value pairs, terminated with
+ <code class="constant">EGL_NONE</code>. Accepted attributes
+ are:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies which buffer should be used for client API
+ rendering to the window. If its value is
+ <code class="constant">EGL_SINGLE_BUFFER</code>, then client
+ APIs should render directly into the visible window.
+ If its value is
+ <code class="constant">EGL_BACK_BUFFER</code>, then client
+ APIs should render into the back buffer. The default
+ value of <code class="constant">EGL_RENDER_BUFFER</code> is
+ <code class="constant">EGL_BACK_BUFFER</code>.
+ </p>
+ <p>
+ Client APIs may not be able to respect the requested
+ rendering buffer. To determine the actual buffer
+ being rendered to by a context, call
+ <a class="citerefentry" href="eglQueryContext.html"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies how alpha values are interpreted by OpenVG
+ when rendering to the surface. If its value is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>,
+ then alpha values are not premultipled. If its value
+ is <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code>,
+ then alpha values are premultiplied. The default
+ value of <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_NONPRE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VG_COLORSPACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the color space used by OpenVG when
+ rendering to the surface. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>, then a
+ non-linear, perceptually uniform color space is
+ assumed, with a corresponding
+ <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_s*</code>. If its value is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code>, then
+ a linear color space is assumed, with a
+ corresponding <span class="type">VGImageFormat</span> of form
+ <code class="constant">VG_l*</code>. The default value of
+ <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_sRGB</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Any EGL rendering context that was created with respect to
+ <em class="parameter"><code>config</code></em> can be used to render into the
+ surface. Use
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ to attach an EGL rendering context to the surface.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ to retrieve the ID of <em class="parameter"><code>config</code></em>.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to destroy the surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attributes <code class="constant">EGL_RENDER_BUFFER</code>,
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code>, and
+ <code class="constant">EGL_VG_COLORSPACE</code>, and the
+ corresponding attribute values, are supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The <code class="constant">EGL_VG_ALPHA_FORMAT</code> and
+ <code class="constant">EGL_VG_COLORSPACE</code> attributes are used
+ only by OpenVG. EGL itself, and other client APIs such as
+ OpenGL and OpenGL ES , do not distinguish multiple
+ colorspace models. Refer to section 11.2 of the OpenVG 1.0
+ specification for more information. The native window
+ system's use and interpretation of alpha values is outside
+ the scope of EGL, although the preferred behavior is for the
+ window system to ignore the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> when compositing
+ window surfaces.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
+ the context fails.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code> may be generated if
+ <em class="parameter"><code>native_window</code></em> is not a valid native window.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attrib_list</code></em> contains an invalid window attribute
+ or if an attribute value is not recognized or is out of range.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
+ enough resources to allocate the new surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the attributes of
+ <em class="parameter"><code>native_window</code></em> do not correspond to
+ <em class="parameter"><code>config</code></em> or if
+ <em class="parameter"><code>config</code></em> does not support rendering to windows
+ (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
+ <code class="constant">EGL_WINDOW_BIT</code>).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>config</code></em> does not support the specified
+ OpenVG alpha format attribute (the value of
+ <code class="constant">EGL_VG_ALPHA_FORMAT</code> is
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE</code> and the
+ <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>) or colorspace attribute (the
+ value of <code class="constant">EGL_VG_COLORSPACE</code> is
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR</code> and the
+ <code class="constant">EGL_VG_COLORSPACE_LINEAR_IT</code> is not set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of
+ <em class="parameter"><code>config</code></em>).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroyContext.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroyContext.html
new file mode 100644
index 0000000..b7be78e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroyContext.html
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglDestroyContext</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglDestroyContext"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglDestroyContext</h1>
+ <p>
+ destroy an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroyContext</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLContext  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL rendering context to be destroyed.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ If the EGL rendering context <em class="parameter"><code>context</code></em> is not
+ current to any thread,
+ <code class="function">eglDestroyContext</code> destroys it immediately.
+ Otherwise, <em class="parameter"><code>context</code></em> is destroyed when it becomes
+ not current to any thread.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if destruction of
+ the context fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroySurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroySurface.html
new file mode 100644
index 0000000..c2b6a96
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglDestroySurface.html
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglDestroySurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglDestroySurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglDestroySurface</h1>
+ <p>
+ destroy an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglDestroySurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL surface to be destroyed.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ If the EGL surface <em class="parameter"><code>surface</code></em> is not current to any
+ thread, <code class="function">eglDestroySurface</code> destroys it immediately.
+ Otherwise, <em class="parameter"><code>surface</code></em> is destroyed when it becomes
+ not current to any thread.
+ Furthermore, resources associated with a pbuffer surface are not released until
+ all color buffers of that pbuffer bound to a texture object have been released.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if destruction of
+ the surface fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigAttrib.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigAttrib.html
new file mode 100644
index 0000000..376550a
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigAttrib.html
@@ -0,0 +1,715 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetConfigAttrib</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetConfigAttrib"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetConfigAttrib</h1>
+ <p>
+ return information about an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> frame buffer
+ configuration
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglGetConfigAttrib</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">value</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL frame buffer configuration to be
+ queried.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL rendering context attribute to be
+ returned.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the requested value.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetConfigAttrib</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for
+ <em class="parameter"><code>config</code></em>
+ (config attributes are described in more detail in the
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ reference page).
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of alpha stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the number of bits in the alpha mask buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if color buffers can be
+ bound to an RGB texture,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if color buffers can be
+ bound to an RGBA texture,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BLUE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of blue stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BUFFER_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the depth of the color buffer.
+ It is the sum of
+ <code class="constant">EGL_RED_SIZE</code>,
+ <code class="constant">EGL_GREEN_SIZE</code>,
+ <code class="constant">EGL_BLUE_SIZE</code>, and
+ <code class="constant">EGL_ALPHA_SIZE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the color buffer type. Possible types are
+ <code class="constant">EGL_RGB_BUFFER</code> and
+ <code class="constant">EGL_LUMINANCE_BUFFER</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_CAVEAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the caveats for the frame buffer configuration.
+ Possible caveat values are
+ <code class="constant">EGL_NONE</code>,
+ <code class="constant">EGL_SLOW_CONFIG</code>, and
+ <code class="constant">EGL_NON_CONFORMANT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the ID of the frame buffer configuration.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFORMANT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating which client API contexts
+ created with respect to this config are conformant.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_DEPTH_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits in the depth buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_GREEN_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of green stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the frame buffer level.
+ Level zero is the default frame buffer.
+ Positive levels correspond to frame buffers that overlay the default
+ buffer and negative levels correspond to frame buffers that underlay
+ the default buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LUMINANCE_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the number of bits of luminance stored in the luminance buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum width of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum height of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_PBUFFER_PIXELS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum size of a pixel buffer surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the maximum value that can be passed to eglSwapInterval.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the minimum value that can be passed to eglSwapInterval.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_RENDERABLE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns <code class="constant">EGL_TRUE</code> if native rendering
+ APIs can render into the surface,
+ <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_VISUAL_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the ID of the associated native visual.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the type of the associated native visual.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RED_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits of red stored in the
+ color buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDERABLE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating the types of supported
+ client API contexts.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLE_BUFFERS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of multisample buffers.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SAMPLES</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of samples per pixel.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_STENCIL_SIZE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of bits in the stencil buffer.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SURFACE_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a bitmask indicating the types of supported EGL
+ surfaces.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the type of supported transparency.
+ Possible transparency values are:
+ <code class="constant">EGL_NONE</code>, and
+ <code class="constant">EGL_TRANSPARENT_RGB</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent red value.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent green value.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the transparent blue value.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_CONFORMANT</code> is supported only if the
+ EGL version is 1.3 or greater.
+ </p>
+ <p>
+ <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
+ <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
+ <code class="constant">EGL_LUMINANCE_SIZE</code>, and
+ <code class="constant">EGL_RENDERABLE_TYPE</code> are supported only
+ if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ While <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> can be
+ specified in the attribute list passed to
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ it is not an attribute of the resulting config and cannot be
+ queried using <code class="function">eglGetConfigAttrib</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONFIG</code> is generated if
+ <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid frame buffer
+ configuration attribute.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigs.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigs.html
new file mode 100644
index 0000000..41967e6
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetConfigs.html
@@ -0,0 +1,375 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetConfigs</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetConfigs"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetConfigs</h1>
+ <p>
+ return a list of all <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> frame buffer configurations
+ for a display
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglGetConfigs</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLConfig *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">configs</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config_size</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_config</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>configs</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns a list of configs.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>config_size</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the size of the list of configs.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>num_config</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Returns the number of configs returned.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetConfigs</code> returns a list of all
+ EGL frame buffer configurations that are available for the specified
+ display.
+ The items in the list can be used in any EGL function that requires
+ an EGL frame buffer configuration.
+ </p>
+ <p>
+ <em class="parameter"><code>configs</code></em> does not return values, if it is specified
+ as
+ <code class="constant">NULL</code>. This is useful for querying just the
+ number of all frame buffer configurations.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ to retrieve individual attribute values of a frame buffer configuration.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>configs</code></em> and <em class="parameter"><code>num_config</code></em>
+ are not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentContext.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentContext.html
new file mode 100644
index 0000000..51f8dac
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentContext.html
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetCurrentContext</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetCurrentContext"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetCurrentContext</h1>
+ <p>
+ return the current <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLContext <strong class="fsfunc">eglGetCurrentContext</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentContext</code> returns the current
+ <acronym class="acronym">EGL</acronym> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_CONTEXT</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentDisplay.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentDisplay.html
new file mode 100644
index 0000000..42676c1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentDisplay.html
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetCurrentDisplay</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetCurrentDisplay"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetCurrentDisplay</h1>
+ <p>
+ return the display for the current <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLDisplay <strong class="fsfunc">eglGetCurrentDisplay</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentDisplay</code> returns the current
+ <acronym class="acronym">EGL</acronym> display connection for the current
+ <acronym class="acronym">EGL</acronym> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_DISPLAY</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentSurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentSurface.html
new file mode 100644
index 0000000..feeacf3
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetCurrentSurface.html
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetCurrentSurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetCurrentSurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetCurrentSurface</h1>
+ <p>
+ return the read or draw surface for the current <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLSurface <strong class="fsfunc">eglGetCurrentSurface</strong>(</code>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">readdraw</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>readdraw</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies whether the <acronym class="acronym">EGL</acronym> read or draw surface
+ is to be returned.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetCurrentSurface</code> returns the read or draw
+ surface attached to the current
+ <acronym class="acronym">EGL</acronym> rendering context, as specified by
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ If no context is current, <code class="constant">EGL_NO_SURFACE</code> is returned.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a> </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetDisplay.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetDisplay.html
new file mode 100644
index 0000000..5494aa2
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetDisplay.html
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetDisplay</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetDisplay"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetDisplay</h1>
+ <p>
+ return an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLDisplay <strong class="fsfunc">eglGetDisplay</strong>(</code>
+ <td>NativeDisplayType  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">native_display</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>native_display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the display to connect to.
+ <code class="constant">EGL_DEFAULT_DISPLAY</code> indicates the default display.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetDisplay</code> obtains the
+ <acronym class="acronym">EGL</acronym> display connection for the native
+ display <em class="parameter"><code>native_display</code></em>.
+ </p>
+ <p>
+ If <em class="parameter"><code>display_id</code></em> is
+ <code class="constant">EGL_DEFAULT_DISPLAY</code>, a default display connection is returned.
+ </p>
+ <p>
+ If no display connection matching <em class="parameter"><code>native_display</code></em> is
+ available, <code class="constant">EGL_NO_DISPLAY</code> is returned. No
+ error is generated.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ to initialize the display connection.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetError.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetError.html
new file mode 100644
index 0000000..7d81645
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetError.html
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetError</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetError"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetError</h1>
+ <p>
+ return error information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLint <strong class="fsfunc">eglGetError</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetError</code> returns the error of the last
+ called <acronym class="acronym">EGL</acronym> function in the current thread.
+ Initially, the error is set to <code class="constant">EGL_SUCCESS</code>.
+ </p>
+ <p>
+ The following errors are currently defined:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SUCCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>The last function succeeded without error.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_NOT_INITIALIZED</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL is not initialized, or could not be initialized,
+ for the specified EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ACCESS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL cannot access a requested resource
+ (for example a context is bound in another thread).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ALLOC</code>
+ </span>
+ </dt>
+ <dd>
+ <p>EGL failed to allocate resources for the requested
+ operation.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_ATTRIBUTE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An unrecognized attribute or attribute value was
+ passed in the attribute list.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CONTEXT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLContext</span> argument does not name a
+ valid EGL rendering context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CONFIG</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ An <span class="type">EGLConfig</span> argument does not name a valid
+ EGL frame buffer configuration.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>The current surface of the calling thread is a window,
+ pixel buffer or pixmap that is no longer valid.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_DISPLAY</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLDisplay</span> argument does not name a
+ valid EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_SURFACE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>An <span class="type">EGLSurface</span> argument does not name a
+ valid surface (window, pixel buffer or pixmap) configured for
+ GL rendering.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_MATCH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>Arguments are inconsistent (for example, a valid
+ context requires buffers not supplied by a valid surface).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_PARAMETER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>One or more argument values are invalid.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ A <span class="type">NativePixmapType</span> argument does not refer to
+ a valid native pixmap.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code>
+ </span>
+ </dt>
+ <dd>
+ <p>A <span class="type">NativeWindowType</span> argument does not refer
+ to a valid native window.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_LOST</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ A power management event has occurred. The application must destroy all
+ contexts and reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ A call to <code class="function">eglGetError</code> sets the error to
+ <code class="constant">EGL_SUCCESS</code>.
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetProcAddress.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetProcAddress.html
new file mode 100644
index 0000000..ab2c27d
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglGetProcAddress.html
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglGetProcAddress</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglGetProcAddress"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglGetProcAddress</h1>
+ <p>
+ return a <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">GL</acronym> or an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym>
+ extension function
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">void (* <strong class="fsfunc">eglGetProcAddress</strong>)()(</code>
+ <td>char const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">procname</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>procname</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the name of the function to return.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglGetProcAddress</code> returns the address of
+ the extension function named by <em class="parameter"><code>procname</code></em>.
+ <em class="parameter"><code>procname</code></em>
+ must be a null-terminated string. The pointer returned
+ should be cast to a function pointer type matching the extension
+ function's definition in that extension specification. A return value
+ of <code class="constant">NULL</code> indicates that the specific
+ function does not exist for the <acronym class="acronym">EGL</acronym> implementation.
+ </p>
+ <p>
+ A non-<code class="constant">NULL</code> return value does not guarantee
+ that an extension function is actually supported at runtime. The client
+ must also query
+ <a class="citerefentry" href="glGetString.html"><span class="citerefentry"><span class="refentrytitle">glGetString</span></span></a>(<code class="constant">GL_EXTENSIONS</code>) or
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>(<em class="parameter"><code>display</code></em>,
+ <code class="constant">EGL_EXTENSIONS</code>) to determine if an
+ extension is supported by a particular context or display.
+ </p>
+ <p>
+ Function pointers returned by
+ <code class="function">eglGetProcAddress</code> are independent of the
+ display and the currently bound context and may be used by any context
+ which supports the extension.
+ </p>
+ <p>
+ <code class="function">eglGetProcAddress</code> may be queried for all
+ <acronym class="acronym">GL</acronym> and <acronym class="acronym">EGL</acronym> extension functions.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glGetString.html"><span class="citerefentry"><span class="refentrytitle">glGetString</span></span></a>,
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a> </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglInitialize.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglInitialize.html
new file mode 100644
index 0000000..0f6b378
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglInitialize.html
@@ -0,0 +1,355 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglInitialize</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglInitialize"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglInitialize</h1>
+ <p>
+ initialize an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglInitialize</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">major</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">minor</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection to initialize.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>major</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the major version number of the EGL implementation.
+ May be <code class="constant">NULL</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>minor</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the minor version number of the EGL implementation.
+ May be <code class="constant">NULL</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglInitialize</code> initialized the EGL display
+ connection obtained with
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>.
+ Initializing an already initialized EGL display connection has no
+ effect besides returning the version numbers.
+ </p>
+ <p>
+ <em class="parameter"><code>major</code></em> and <em class="parameter"><code>minor</code></em>
+ do not return values if they are specified as <code class="constant">NULL</code>.
+ </p>
+ <p>
+ Use <a class="citerefentry" href="eglTerminate.html"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>
+ to release resources associated with an EGL display connection.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglInitialize</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>major</code></em> and <em class="parameter"><code>minor</code></em> are not
+ modified when <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> cannot be initialized.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglTerminate.html"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglIntro.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglIntro.html
new file mode 100644
index 0000000..4ef078e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglIntro.html
@@ -0,0 +1,492 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglIntro</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglIntro"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglIntro</h1>
+ <p>
+ introduction to managing client API rendering through the
+ <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> API.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="overview"></a>
+ <h2>Overview</h2>
+ <p>
+ The <em class="firstterm">Khronos Native Platform Graphics
+ Interface</em> (EGL) provides a means for rendering
+ using a <em class="firstterm">client API</em> such as OpenGL ES
+ (a 3D renderer for embedded systems), OpenGL (a functional
+ superset of OpenGL ES for desktop systems), and OpenVG (a 2D
+ vector graphics renderer) together with a native window
+ system, such as Microsoft Windows or the X Window System.
+ </p>
+ <p>
+ Depending on its implementation EGL might be more or less
+ tightly integrated into the native window system. Most EGL
+ functions require an EGL display connection, which can be
+ obtained by calling
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>
+ and passing in a native display handle or
+ <code class="constant">EGL_DEFAULT_DISPLAY</code>. To initialize and
+ query what EGL version is supported on the display
+ connection, call
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>.
+ </p>
+ <p>
+ Native window systems supporting EGL make a subset of their
+ visuals (which may also referred to as pixel formats, frame
+ buffer configurations, or other similar terms) available for
+ client API rendering. Windows and pixmaps created with these
+ visuals may also be rendered into using the native window
+ system API.
+ </p>
+ <p>
+ An EGL <em class="firstterm">surface</em> extends a native
+ window or pixmap with additional <em class="firstterm">auxillary
+ buffers</em>. These buffers include a color buffer, a
+ depth buffer, a stencil buffer, and an alpha mask buffer.
+ Some or all of the buffers listed are included in each EGL
+ frame buffer configuration.
+ </p>
+ <p>
+ EGL supports rendering into three types of surfaces:
+ windows, pixmaps and pixel buffers (pbuffers). EGL window
+ and pixmap surfaces are associated with corresponding
+ resources of the native window system. EGL pixel buffers are
+ EGL only resources, and do not accept rendering through the
+ native window system.
+ </p>
+ <p>
+ To render using a client API into an EGL surface, you must
+ determine the appropriate EGL frame buffer configuration,
+ which supports the rendering features the application
+ requires.
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>
+ returns an <span class="type">EGLConfig</span> matching the required
+ attributes, if any. A complete list of EGL frame buffer
+ configurations can be obtained by calling
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>.
+ Attributes of a particular EGL frame buffer configuration
+ can be queried by calling
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>.
+ </p>
+ <p>
+ For EGL window and pixmap surfaces, a suitable native window
+ or pixmap with a matching native visual must be created
+ first. For a given EGL frame buffer configuration, the
+ native visual type and ID can be retrieved with a call to
+ <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>.
+ For pixel buffers, no underlying native resource is
+ required.
+ </p>
+ <p>
+ To create an EGL window surface from a native window, call
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>.
+ To create an EGL pixmap surface from a native pixmap, call
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>.
+ To create a pixel buffer (pbuffer) surface (which has no
+ associated native buffer), call
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>
+ To create a pixel buffer (pbuffer) surface whose color
+ buffer is provided by an OpenVG <span class="type">VGImage</span>, call
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>.
+ Use
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
+ to release previously allocated resources.
+ </p>
+ <p>
+ An EGL rendering context is required to bind client API
+ rendering to an EGL surface. An EGL surface and an EGL
+ rendering context must have compatible EGL frame buffer
+ configurations. To create an EGL rendering context, call
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>.
+ The type of client API context created (OpenGL ES, OpenVG,
+ etc.) can be changed by first calling
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>.
+ </p>
+ <p>
+ An EGL rendering context may be bound to one or two EGL
+ surfaces by calling
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ This context/surface(s) association specifies the
+ <em class="firstterm">current context</em> and
+ <em class="firstterm">current surface</em>, and is used by all
+ client API rendering commands for the bound context until
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ is called with different arguments.
+ </p>
+ <p>
+ Both native and client API commands may be used to operate
+ on certain surfaces, however, the two command streams are
+ not synchronized. Synchronization can be explicitly
+ specified using by calling
+ <a class="citerefentry" href="eglWaitCLient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitCLient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>,
+ and possibly by calling other native window system commands.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="examples"></a>
+ <h2>Examples</h2>
+ <p>
+ Below is a minimal example of creating an RGBA-format window that
+ allows rendering with OpenGL ES.
+ The window is cleared to yellow when the program runs. For simplicity,
+ the program does not check for any errors.
+ </p>
+ <pre class="programlisting">
+#include &lt;stdlib.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+typedef ... NativeWindowType;
+extern NativeWindowType createNativeWindow(void);
+static EGLint const attribute_list[] = {
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_NONE
+};
+int main(int argc, char ** argv)
+{
+ EGLDisplay display;
+ EGLConfig config;
+ EGLContext context;
+ EGLSurface surface;
+ NativeWindowType native_window;
+ EGLint num_config;
+
+ /* get an EGL display connection */
+ display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ /* initialize the EGL display connection */
+ eglInitialize(display, NULL, NULL);
+
+ /* get an appropriate EGL frame buffer configuration */
+ eglChooseConfig(display, attribute_list, &amp;config, 1, &amp;num_config);
+
+ /* create an EGL rendering context */
+ context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
+
+ /* create a native window */
+ native_window = createNativeWindow();
+
+ /* create an EGL window surface */
+ surface = eglCreateWindowSurface(display, config, native_window, NULL);
+
+ /* connect the context to the surface */
+ eglMakeCurrent(display, surface, surface, context);
+
+ /* clear the color buffer */
+ glClearColor(1.0, 1.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFlush();
+
+ eglSwapBuffers(display, surface);
+
+ sleep(10);
+ return EXIT_SUCCESS;
+}
+</pre>
+ </div>
+ <div class="refsect1">
+ <a id="usingeglextensions"></a>
+ <h2>Using EGL Extensions</h2>
+ <p>
+ All supported EGL extensions will have a corresponding definition in
+ <code class="filename">egl.h</code> and a token in the extensions string returned
+ by
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="futureeglversions"></a>
+ <h2>Future EGL Versions</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ and
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>
+ can be used to determine at run-time what version of EGL is available.
+ To check the EGL version at compile-time, test whether
+ <code class="constant">EGL_VERSION_<em class="replaceable"><code>x</code></em>_<em class="replaceable"><code>y</code></em></code>
+ is defined, where <em class="replaceable"><code>x</code></em> and
+ <em class="replaceable"><code>y</code></em> are the major and minor version
+ numbers.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="files"></a>
+ <h2>Files</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="filename">GLES/egl.h</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ EGL header file
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglChooseConfig.html"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferFromClientBuffer.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferFromClientBuffer</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglDestroyContext.html"><span class="citerefentry"><span class="refentrytitle">eglDestroyContext</span></span></a>,
+ <a class="citerefentry" href="eglDestroySurface.html"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
+ <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglQueryString.html"><span class="citerefentry"><span class="refentrytitle">eglQueryString</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>,
+ <a class="citerefentry" href="eglTerminate.html"><span class="citerefentry"><span class="refentrytitle">eglTerminate</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.html"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglMakeCurrent.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglMakeCurrent.html
new file mode 100644
index 0000000..e198962
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglMakeCurrent.html
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglMakeCurrent</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglMakeCurrent"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglMakeCurrent</h1>
+ <p>
+ attach an EGL rendering context to EGL surfaces
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglMakeCurrent</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">draw</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">read</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLContext  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <acronym class="acronym">EGL</acronym> display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>draw</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <acronym class="acronym">EGL</acronym> draw surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>read</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <acronym class="acronym">EGL</acronym> read surface.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the <acronym class="acronym">EGL</acronym> rendering context
+ to be attached to the surfaces.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglMakeCurrent</code> binds <em class="parameter"><code>context</code></em>
+ to the current rendering thread and to the <em class="parameter"><code>draw</code></em>
+ and <em class="parameter"><code>read</code></em> surfaces. <em class="parameter"><code>draw</code></em>
+ is used for all GL operations except for any pixel data read back
+ (<a class="citerefentry" href="glReadPixels.html"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
+ <a class="citerefentry" href="glCopyTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>, and
+ <a class="citerefentry" href="glCopyTexSubImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>),
+ which is taken from the frame buffer values of
+ <em class="parameter"><code>read</code></em>.
+ </p>
+ <p>
+ If the calling thread has already a current rendering context, that
+ context is flushed and marked as no longer current.
+ </p>
+ <p>
+ The first time that <em class="parameter"><code>context</code></em> is made current,
+ the viewport and scissor dimensions are set to the size of the
+ <em class="parameter"><code>draw</code></em> surface. The viewport and
+ scissor are not modified when <em class="parameter"><code>context</code></em> is
+ subsequently made current.
+ </p>
+ <p>
+ To release the current context without assigning a new one, call
+ <code class="function">eglMakeCurrent</code> with <em class="parameter"><code>draw</code></em>
+ and <em class="parameter"><code>read</code></em> set to
+ <code class="constant">EGL_NO_SURFACE</code> and <em class="parameter"><code>context</code></em>
+ set to <code class="constant">EGL_NO_CONTEXT</code>.
+ </p>
+ <p>
+ Use
+ <a class="citerefentry" href="eglGetCurrentContext.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>, and
+ <a class="citerefentry" href="eglGetCurrentSurface.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>
+ to query the current rendering context and associated display connection and surfaces.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise. If <code class="constant">EGL_FALSE</code>
+ is returned, the previously current rendering context and
+ surfaces (if any) remain unchanged.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>draw</code></em> or <em class="parameter"><code>read</code></em> is not an
+ EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em>
+ are not compatible with
+ <em class="parameter"><code>context</code></em>, or if
+ <em class="parameter"><code>context</code></em> is set to
+ <code class="constant">EGL_NO_CONTEXT</code> and
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em>
+ are not set to
+ <code class="constant">EGL_NO_SURFACE</code>, or if
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> are set to
+ <code class="constant">EGL_NO_SURFACE</code> and
+ <em class="parameter"><code>context</code></em> is not set to
+ <code class="constant">EGL_NO_CONTEXT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ACCESS</code> is generated if
+ <em class="parameter"><code>context</code></em>
+ is current to some other thread.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_PIXMAP</code> may be generated if
+ a native pixmap underlying either
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em>
+ is no longer valid.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_NATIVE_WINDOW</code> may be generated if
+ a native window underlying either
+ <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em>
+ is no longer valid.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the previous context has unflushed commands and the previous surface
+ is no longer valid.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ALLOC</code> may be generated if
+ allocation of ancillary buffers for <em class="parameter"><code>draw</code></em> or
+ <em class="parameter"><code>read</code></em> were delayed until
+ <code class="function">eglMakeCurrent</code> is called, and there are not
+ enough resources to allocate them.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glReadPixels.html"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
+ <a class="citerefentry" href="glCopyTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>,
+ <a class="citerefentry" href="glCopyTexSubImage2D.html"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryAPI.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryAPI.html
new file mode 100644
index 0000000..fd1b923
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryAPI.html
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglQueryAPI</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglQueryAPI"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglQueryAPI</h1>
+ <p>Query the current rendering API</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLenum <strong class="fsfunc">eglQueryAPI</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryAPI</code> returns the value of the
+ current rendering API for EGL in the thread it is called
+ from. The current rendering API is set by
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ and affects the behavior of other EGL commands.
+ </p>
+ <p>
+ The value returned will be one of the valid
+ <em class="parameter"><code>api</code></em> parameters to
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>, or
+ <code class="constant">EGL_NONE</code>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglQueryAPI</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ The initial value of the current rendering API is
+ <code class="constant">EGL_OPENGL_ES_API</code> unless OpenGL ES is
+ not supported by an implementation, in which case the
+ initial value is <code class="constant">EGL_NONE</code> (however,
+ <code class="constant">EGL_NONE</code> is not a valid
+ <em class="parameter"><code>api</code></em> parameter to
+ <code class="function">eglQueryAPI</code>).
+ </p>
+ <p>
+ The current rendering API can be changed by calling
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ None.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentContext.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
+ <a class="citerefentry" href="eglGetCurrentSurface.html"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryContext.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryContext.html
new file mode 100644
index 0000000..d956c53
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryContext.html
@@ -0,0 +1,474 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglQueryContext</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglQueryContext"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglQueryContext</h1>
+ <p>
+ return <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> rendering context information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglQueryContext</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLContext  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">value</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>context</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL rendering context to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL rendering context attribute to be returned.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryContext</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>context</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the context was created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_TYPE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the type of client API which the context
+ supports (one of
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, or
+ <code class="constant">EGL_OPENVG_API</code>).
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the version of the client API which the
+ context supports, as specified at context creation
+ time. The resulting value is only meaningful for an
+ OpenGL ES context.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the buffer which client API rendering
+ via the context will use. The value returned
+ depends on properties of both the context, and
+ the surface to which the context is bound:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ If the context is bound to a pixmap surface,
+ then <code class="constant">EGL_SINGLE_BUFFER</code> will
+ be returned.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is bound to a pbuffer surface,
+ then <code class="constant">EGL_BACK_BUFFER</code> will
+ be returned.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is bound to a window surface,
+ then either <code class="constant">EGL_BACK_BUFFER</code>
+ or <code class="constant">EGL_SINGLE_BUFFER</code> may be
+ returned. The value returned depends on both the
+ buffer requested by the setting of the
+ <code class="constant">EGL_RENDER_BUFFER</code> property
+ of the surface (which may be queried by calling
+ <code class="function">eglQuerySurface</code>), and on
+ the client API (not all client APIs support
+ single-buffer rendering to window surfaces).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ If the context is not bound to a surface, such
+ as an OpenGL ES context bound to a framebuffer
+ object, then <code class="constant">EGL_NONE</code> will
+ be returned.
+ </p>
+ </li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attributes <code class="constant">EGL_CONTEXT_CLIENT_TYPE</code> and
+ <code class="constant">EGL_RENDER_BUFFER</code> are supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> is
+ supported only if the EGL version is 1.3 or greater.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if
+ <em class="parameter"><code>context</code></em> is not an EGL rendering context.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid context attribute.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryString.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryString.html
new file mode 100644
index 0000000..5fdf82b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQueryString.html
@@ -0,0 +1,401 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglQueryString</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglQueryString"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglQueryString</h1>
+ <p>
+ return a string describing an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">char const * <strong class="fsfunc">eglQueryString</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">name</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>name</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a symbolic constant, one of
+ <code class="constant">EGL_CLIENT_APIS</code>,
+ <code class="constant">EGL_VENDOR</code>,
+ <code class="constant">EGL_VERSION</code>, or
+ <code class="constant">EGL_EXTENSIONS</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQueryString</code> returns a pointer to a
+ static string describing an EGL display connection.
+ <em class="parameter"><code>name</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CLIENT_APIS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a string describing which client rendering
+ APIs are supported. The string contains a
+ space-separate list of API names. The list must
+ include at least one of <code class="code">OpenGL</code>,
+ <code class="code">OpenGL_ES</code>, or <code class="code">OpenVG</code>.
+ These strings correspond respectively to values
+ <code class="constant">EGL_OPENGL_API</code>,
+ <code class="constant">EGL_OPENGL_ES_API</code>, and
+ <code class="constant">EGL_OPENVG_API</code> of the
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <em class="parameter"><code>api</code></em> argument.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VENDOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the company responsible for this EGL implementation. This
+ name does not change from release to release.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VERSION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a version or release number.
+ The <code class="constant">EGL_VERSION</code> string is laid out as
+ follows:</p>
+ <p>
+ <em class="replaceable"><code>major_version</code></em>.<em class="replaceable"><code>minor_version</code></em>
+ space
+ <em class="replaceable"><code>vendor_specific_info</code></em>
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_EXTENSIONS</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns a space separated list of supported extensions to EGL.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="constant">EGL_CLIENT_APIS</code> is supported only if
+ the EGL version is 1.2 or greater.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">NULL</code> is returned on failure.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>name</code></em> is not an accepted value.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglGetDisplay.html"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQuerySurface.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQuerySurface.html
new file mode 100644
index 0000000..c7b3fc9
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglQuerySurface.html
@@ -0,0 +1,599 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglQuerySurface</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglQuerySurface"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglQuerySurface</h1>
+ <p>
+ return <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface information
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglQuerySurface</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">value</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface to query.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface attribute to be returned.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the requested value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglQuerySurface</code> returns in
+ <em class="parameter"><code>value</code></em> the value of
+ <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>surface</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_CONFIG_ID</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the ID of the EGL frame buffer configuration
+ with respect to which the surface was created.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HEIGHT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the height of the surface in pixels.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the horizontal dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_LARGEST_PBUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the same attribute value specified when the
+ surface was created with
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>.
+ For a window or pixmap surface,
+ <em class="parameter"><code>value</code></em> is not modified.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns which level of the mipmap to render to, if
+ texture has mipmaps.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns <code class="constant">EGL_TRUE</code> if texture has
+ mipmaps, <code class="constant">EGL_FALSE</code> otherwise.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the filter used when resolving the
+ multisample buffer. The filter may be either
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
+ or <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>,
+ as described for
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the aspect ratio of an individual pixel (the
+ ratio of a pixel's width to its height). The value
+ returned is equal to the actual aspect ratio
+ multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_RENDER_BUFFER</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the buffer which client API rendering is
+ requested to use. For a window surface, this is the
+ same attribute value specified when the surface was
+ created. For a pbuffer surface, it is always
+ <code class="constant">EGL_BACK_BUFFER</code>. For a pixmap
+ surface, it is always
+ <code class="constant">EGL_SINGLE_BUFFER</code>. To determine
+ the actual buffer being rendered to by a context,
+ call
+ <a class="citerefentry" href="eglQueryContext.html"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the effect on the color buffer when posting
+ a surface with
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
+ Swap behavior may be either
+ <code class="constant">EGL_BUFFER_PRESERVED</code> or
+ <code class="constant">EGL_BUFFER_DESTROYED</code>, as
+ described for
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_FORMAT</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns format of texture. Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>,
+ <code class="constant">EGL_TEXTURE_RGB</code>, and
+ <code class="constant">EGL_TEXTURE_RGBA</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_TEXTURE_TARGET</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns type of texture. Possible values are
+ <code class="constant">EGL_NO_TEXTURE</code>, or
+ <code class="constant">EGL_TEXTURE_2D</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the vertical dot pitch of the display on
+ which a window surface is visible. The value
+ returned is equal to the actual dot pitch, in
+ pixels/meter, multiplied by the constant value
+ <code class="constant">EGL_DISPLAY_SCALING</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_WIDTH</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Returns the width of the surface in pixels.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ Attributes <code class="constant">EGL_DISPLAY_SCALING</code>.
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>,
+ <code class="constant">EGL_RENDER_BUFFER</code>,
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>, and
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code> are supported
+ only if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Querying attributes <code class="constant">EGL_TEXTURE_FORMAT</code>,
+ <code class="constant">EGL_TEXTURE_TARGET</code>,
+ <code class="constant">EGL_MIPMAP_TEXTURE</code>, or
+ <code class="constant">EGL_MIPMAP_LEVEL</code> for a non-pbuffer
+ surface is not an error, but <em class="parameter"><code>value</code></em> is
+ not modified.
+ </p>
+ <p>
+ <code class="constant">EGL_DISPLAY_SCALING</code> is the constant
+ value 10000. Floating-point values such as resolution and
+ pixel aspect ratio are scaled by this value before being
+ returned as integers so that sufficient precision to be
+ meaningful will be retained in the returned value.
+ </p>
+ <p>
+ For an offscreen (pbuffer or pixmap) surface, or a surface
+ whose pixel dot pitch or aspect ratio are unknown, querying
+ <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
+ <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>, or
+ <code class="constant">EGL_VERTICAL_RESOLUTION</code> will return the
+ constant value <code class="constant">EGL_UNKNOWN</code> (-1).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ <em class="parameter"><code>value</code></em> is not modified when
+ <code class="constant">EGL_FALSE</code> is returned.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseTexImage.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseTexImage.html
new file mode 100644
index 0000000..2acf40b
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseTexImage.html
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglReleaseTexImage</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglReleaseTexImage"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglReleaseTexImage</h1>
+ <p>
+ Releases a color buffer that is being used as a texture
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglReleaseTexImage</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buffer</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the EGL display connection.</p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>buffer</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>Specifies the texture image data.</p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ The specified color buffer is released back to the surface. The surface is made
+ available for reading and writing when it no longer has any color buffers bound as
+ textures.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ If the specified color buffer is no longer bound to a texture (e.g., because the
+ texture object was deleted) then eglReleaseTexImage has no effect. No error is
+ generated.
+ </p>
+ <p>
+ The contents of the color buffer are undefined when it is first released. In particular,
+ there is no guarantee that the texture image is still present. However, the contents of
+ other color buffers are unaffected by this call. Also, the contents of the depth and stencil buffers
+ are not affected by <a class="citerefentry" href="eglBindTexImage.html"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>
+ and <code class="function">eglReleaseTexImage</code>.
+ </p>
+ <p>
+ After a color buffer is released from a texture (either explicitly by calling
+ <code class="function">eglReleaseTexImage</code> or implicitly by calling a routine such as
+ <a class="citerefentry" href="glTexImage2D.html"><span class="citerefentry"><span class="refentrytitle">glTexImage2D</span></span></a>),
+ all texture images that were defined by the color buffer become <code class="constant">NULL</code>
+ (it is as if <a class="citerefentry" href="glTexImage.html"><span class="citerefentry"><span class="refentrytitle">glTexImage</span></span></a> was called with an image of zero width).
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if the
+ surface attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ set to <code class="constant">EGL_NO_TEXTURE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>buffer</code></em> is not a valid buffer
+ (currently only <code class="constant">EGL_BACK_BUFFER</code> may be
+ specified).
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface, or is
+ not a bound pbuffer surface.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindTexImage.html"><span class="citerefentry"><span class="refentrytitle">eglBindTexImage</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseThread.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseThread.html
new file mode 100644
index 0000000..4740ef1
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglReleaseThread.html
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglReleaseThread</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglReleaseThread"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglReleaseThread</h1>
+ <p>Release EGL per-thread state</p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglReleaseThread</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglReleaseThread</code> returns the EGL to its
+ state at thread initialization, releasing all per-thread
+ state including the error status returned by
+ <span class="command"><strong>eglGetError</strong></span>, the currently bound
+ rendering API defined by <span class="command"><strong>eglBindAPI</strong></span>, and
+ the current contexts for each supported client API. The
+ overhead of maintaining this state may be objectionable in
+ applications which create and destroy many threads, but only
+ call EGL or client APIs in a few of those threads at any
+ given time.
+ </p>
+ <p>
+ <code class="constant">EGL_TRUE</code> is returned on success, and the
+ following actions are taken:
+ </p>
+ <div class="itemizedlist">
+ <ul class="itemizedlist" style="list-style-type: disc; ">
+ <li class="listitem">
+ <p>
+ For each client API supported by EGL, if there is a
+ currently bound context, that context is released.
+ This is equivalent to calling
+ <code class="function">eglMakeCurrent</code> with ctx set to
+ <code class="constant">EGL_NO_CONTEXT</code> and both draw
+ and read set to <code class="constant">EGL_NO_SURFACE</code>
+ (see section 3.7.3).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ The current rendering API is reset to its value at
+ thread initialization (see
+ <span class="command"><strong>eglBindAPI</strong></span>).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Any additional implementation-dependent per-thread
+ state maintained by EGL is marked for deletion as
+ soon as possible.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ <code class="function">eglReleaseThread</code> may be called in any
+ thread at any time, and may be called more than once in a
+ single thread. The initialization status of EGL (see section
+ 3.2) is not affected by releasing the thread; only
+ per-thread state is affected.
+ </p>
+ <p>
+ Resources explicitly allocated by calls to EGL, such as
+ contexts, surfaces, and configuration lists, are not
+ affected by <code class="function">eglReleaseThread</code>. Such
+ resources belong not to the thread, but to the EGL
+ implementation as a whole.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglReleaseThread</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ Applications may call other EGL routines from a thread
+ following <code class="function">eglReleaseThread</code>, but any
+ such call may reallocate the EGL state previously released.
+ In particular, calling <code class="function">eglGetError</code>
+ immediately following a successful call to
+ <code class="function">eglReleaseThread</code> will return
+ <code class="constant">EGL_SUCCESS</code>, but will also result in
+ reallocating per-thread state.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise. There are no
+ defined conditions under which failure will occur. Even if
+ EGL is not initialized on any EGLDisplay,
+ <code class="function">eglReleaseThread</code> should succeed.
+ </p>
+ <p>
+ However, platform-dependent failures may be signaled through
+ the value returned from <code class="function">eglGetError</code>.
+ Unless the platform-dependent behavior is known, a failed
+ call to <code class="function">eglReleaseThread</code> should be
+ assumed to leave the current rendering API, and the
+ currently bound contexts for each supported client API, in
+ an unknown state.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglBindAPI.html"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
+ <a class="citerefentry" href="eglGetError.html"><span class="citerefentry"><span class="refentrytitle">eglGetError</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSurfaceAttrib.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSurfaceAttrib.html
new file mode 100644
index 0000000..44dedd7
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSurfaceAttrib.html
@@ -0,0 +1,481 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglSurfaceAttrib</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglSurfaceAttrib"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglSurfaceAttrib</h1>
+ <p>
+ set an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface attribute
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglSurfaceAttrib</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attribute</var>, </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">value</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>attribute</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL surface attribute to set.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>value</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the attributes required value.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglSurfaceAttrib</code> sets the value of
+ <em class="parameter"><code>attribute</code></em> for
+ <em class="parameter"><code>surface</code></em> to
+ <em class="parameter"><code>value</code></em>.
+ <em class="parameter"><code>attribute</code></em> can be one of the
+ following:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MIPMAP_LEVEL</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ For mipmap textures, the
+ <code class="constant">EGL_MIPMAP_LEVEL</code> attribute
+ indicates which level of the mipmap should be
+ rendered. If the value of this attribute is outside
+ the range of supported mipmap levels, the closest
+ valid mipmap level is selected for rendering. The
+ default value is <code class="constant">0</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the filter to use when resolving the
+ multisample buffer (this may occur when swapping or
+ copying the surface, or when changing the client API
+ context bound to the surface). A
+ <em class="parameter"><code>value</code></em> of
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
+ chooses the default implementation-defined filtering
+ method, while
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>
+ chooses a one-pixel wide box filter placing equal
+ weighting on all multisample values.
+ </p>
+ <p>
+ The initial value of
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the effect on the color buffer of posting
+ a surface with
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
+ A <em class="parameter"><code>value</code></em> of
+ <code class="constant">EGL_BUFFER_PRESERVED</code> indicates
+ that color buffer contents are unaffected, while
+ <code class="constant">EGL_BUFFER_DESTROYED</code> indicates
+ that color buffer contents may be destroyed or
+ changed by the operation.
+ </p>
+ <p>
+ The initial value of
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> is chosen by
+ the implementation.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
+ supported only if the EGL version is 1.4 or greater.
+ </p>
+ <p>
+ Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is
+ supported only if the EGL version is 1.2 or greater.
+ </p>
+ <p>
+ If the value of pbuffer attribute
+ <code class="constant">EGL_TEXTURE_FORMAT</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>, the value of attribute
+ <code class="constant">EGL_TEXTURE_TARGET</code> is
+ <code class="constant">EGL_NO_TEXTURE</code>, or
+ <em class="parameter"><code>surface</code></em> is not a pbuffer, then
+ attribute <code class="constant">EGL_MIPMAP_LEVEL</code> may be set,
+ but has no effect.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>,
+ <em class="parameter"><code>value</code></em> is
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>, and the
+ <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create
+ <em class="parameter"><code>surface</code></em> does not contain
+ <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_MATCH</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is
+ <code class="constant">EGL_SWAP_BEHAVIOR</code>,
+ <em class="parameter"><code>value</code></em> is
+ <code class="constant">EGL_BUFFER_PRESERVED</code>, and the
+ <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create
+ <em class="parameter"><code>surface</code></em> does not contain
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL surface.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
+ <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
+ <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
+ <a class="citerefentry" href="eglQuerySurface.html"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapBuffers.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapBuffers.html
new file mode 100644
index 0000000..c7ff447
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapBuffers.html
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglSwapBuffers</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglSwapBuffers"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglSwapBuffers</h1>
+ <p>
+ post <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> surface color buffer to a native window
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapBuffers</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLSurface  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">surface</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>surface</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL drawing surface whose buffers are to be swapped.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ If <em class="parameter"><code>surface</code></em> is a window surface,
+ <code class="function">eglSwapBuffers</code> posts its color buffer
+ to the associated native window.
+ </p>
+ <p>
+ The contents of ancillary buffers are always undefined after
+ calling <code class="function">eglSwapBuffers</code>. The contents of
+ the color buffer are left unchanged if the value of the
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> attribute of
+ <em class="parameter"><code>surface</code></em> is
+ <code class="constant">EGL_BUFFER_PRESERVED</code>, and are undefined
+ if the value is <code class="constant">EGL_BUFFER_DESTROYED</code>.
+ The value of <code class="constant">EGL_SWAP_BEHAVIOR</code> can be
+ set for some surfaces using
+ <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglSwapBuffers</code> performs an implicit
+ flush operation on the context (<code class="function">glFlush</code>
+ for an OpenGL ES or OpenGL context,
+ <code class="function">vgFlush</code> for an OpenVG context) bound to
+ <em class="parameter"><code>surface</code></em> before swapping. Subsequent
+ client API commands may be issued on that context
+ immediately after calling
+ <code class="function">eglSwapBuffers</code>, but are not executed
+ until the buffer exchange is completed.
+ </p>
+ <p>
+ If <em class="parameter"><code>surface</code></em> is a pixel buffer or a pixmap,
+ <code class="function">eglSwapBuffers</code>
+ has no effect, and no error is generated.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is
+ supported only if the EGL version is 1.2 or greater. In
+ earlier versions, behavior is as though the attribute
+ exists, and always has the value
+ <code class="constant">EGL_BUFFER_DESTROYED</code>.
+ </p>
+ <p>
+ The EGL 1.4 specification was updated to acknowledge that
+ ancillary buffers are not necessarily preserved after a
+ swap, and that the <code class="constant">EGL_SWAP_BEHAVIOR</code>
+ attribute applies only to the color buffer. This change in
+ the specification acknowledged the behavior of many shipping
+ implementations, and is not intended to result in behavior
+ changes in any existing implementation. Applications which
+ require preservation of ancillary buffers across a swap
+ should be aware that not all implementations can preserve
+ them, and that EGL 1.4 has no way to query whether or not
+ they are preserved.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if swapping of the
+ surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ <p>
+ <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
+ <em class="parameter"><code>display</code></em> has not been initialized.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if
+ <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
+ </p>
+ <p>
+ <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
+ event has occurred. The application must destroy all contexts and
+ reinitialise OpenGL ES state and objects to continue rendering.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglCopyBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapInterval.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapInterval.html
new file mode 100644
index 0000000..fcf9a68
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglSwapInterval.html
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglSwapInterval</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglSwapInterval"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglSwapInterval</h1>
+ <p>
+ specifies the minimum number of video frame periods
+ per buffer swap for the window associated with the current context.
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapInterval</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td> </td>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">interval</var><code>)</code></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>interval</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the minimum number of video frames that are displayed before
+ a buffer swap will occur.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ The interval takes effect when <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a> is
+ first called subsequent to the <code class="function">eglSwapInterval</code> call.
+ </p>
+ <p>
+ The <em class="parameter"><code>interval</code></em> specified by the function applies to the draw surface
+ bound to the context that is current on the calling thread.
+ </p>
+ <p>
+ If <em class="parameter"><code>interval</code></em> is set to a value of <code class="constant">0</code>, buffer swaps are not synchronized to a
+ video frame, and the swap happens as soon as the render is complete. interval
+ is silently clamped to minimum and maximum implementation dependent
+ valuesbefore being stored; these values are defined by <span class="type">EGLConfig</span> attributes
+ <code class="constant">EGL_MIN_SWAP_INTERVAL</code> and <code class="constant">EGL_MAX_SWAP_INTERVAL</code> respectively.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ The swap interval has no effect on <a class="citerefentry" href="eglCopyBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>.
+ </p>
+ <p>
+ The default swap interval is 1.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned on failure, <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CONTEXT</code> is generated if there is no current context
+ on the calling thread.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_SURFACE</code> is generated if there is no surface
+ bound to the current context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglSwapBuffers.html"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglTerminate.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglTerminate.html
new file mode 100644
index 0000000..97a1864
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglTerminate.html
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglTerminate</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglTerminate"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglTerminate</h1>
+ <p>
+ terminate an <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">EGL</acronym> display connection
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglTerminate</strong>(</code>
+ <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>display</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies the EGL display connection to terminate.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ <code class="function">eglTerminate</code> releases resources associated with
+ an EGL display connection. Termination marks all EGL resources associated
+ with the EGL display connection for deletion. If contexts or surfaces
+ associated with <em class="parameter"><code>display</code></em> is current to any thread,
+ they are not released until they are no longer current as a result of
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>.
+ </p>
+ <p>
+ Terminating an already terminated EGL display connection has no effect.
+ A terminated display may be re-initialized by calling
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>
+ again.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglTerminate</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_DISPLAY</code> is generated if
+ <em class="parameter"><code>display</code></em> is not an EGL display connection.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="eglInitialize.html"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>,
+ <a class="citerefentry" href="eglMakeCurrent.html"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitClient.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitClient.html
new file mode 100644
index 0000000..07db379
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitClient.html
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglWaitClient</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglWaitClient"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglWaitClient</h1>
+ <p>
+ Complete client API execution prior to subsequent native
+ rendering calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitClient</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ All rendering calls for the currently bound context, for the
+ current rendering API, made prior to
+ <code class="function">eglWaitClient</code> are guaranteed to be
+ executed before native rendering calls made after
+ <code class="function">eglWaitClient</code>. The same result can be
+ achieved using client API-specific commands such as
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>
+ or
+ <a class="citerefentry" href="vgFinish.html"><span class="citerefentry"><span class="refentrytitle">vgFinish</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is ignored if there is no
+ current EGL rendering context for the current rendering API.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglWaitClient</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ If there is no current context for the current rendering
+ API, the function has no effect but still returns
+ <code class="constant">EGL_TRUE</code>.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitClient</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is a generalized version
+ of <code class="function">eglWaitGL</code>, supporting multiple
+ client APIs.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.html"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>,
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>,
+ <a class="citerefentry" href="vgFinish.html"><span class="citerefentry"><span class="refentrytitle">vgFinish</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitGL.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitGL.html
new file mode 100644
index 0000000..681937e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitGL.html
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglWaitGL</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglWaitGL"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglWaitGL</h1>
+ <p>
+ Complete GL execution prior to subsequent native rendering
+ calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitGL</strong>(</code>
+ <td xmlns="http://www.w3.org/1999/xhtml"><code>void)</code>;</td>
+ <td xmlns="http://www.w3.org/1999/xhtml"> </td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ All OpenGL ES rendering calls for the currently bound OpenGL
+ ES context made prior to <code class="function">eglWaitGL</code> are
+ guaranteed to be executed before native rendering calls made
+ after <code class="function">eglWaitGL</code>. The same result can be
+ achieved using
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>.
+ </p>
+ <p>
+ <code class="function">eglWaitGL</code> is ignored if there is no
+ current EGL rendering context for OpenGL ES.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="notes"></a>
+ <h2>Notes</h2>
+ <p>
+ <code class="function">eglWaitClient</code> is supported only if the
+ EGL version is 1.2 or greater.
+ </p>
+ <p>
+ <code class="function">eglWaitClient</code> is a generalized version
+ of <code class="function">eglWaitGL</code>, supporting multiple
+ client APIs. For backwards compatibility,
+ <code class="function">eglWaitGL</code> continues to be supported and
+ is equivalent to the series of commands
+ </p>
+ <pre class="programlisting">
+ EGLenum api = <code class="function">eglQueryAPI</code>();
+ <code class="function">eglBindAPI</code>(<code class="constant">EGL_OPENGL_ES_API</code>);
+ <code class="function">eglWaitClient</code>();
+ <code class="function">eglBindAPI</code>(api);
+ </pre>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_FALSE</code> is returned if
+ <code class="function">eglWaitGL</code> fails,
+ <code class="constant">EGL_TRUE</code> otherwise.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code> is generated if
+ the surface associated with the current context has a native
+ window or pixmap, and that window or pixmap is no longer
+ valid.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>
+ <a class="citerefentry" href="eglWaitNative.html"><span class="citerefentry"><span class="refentrytitle">eglWaitNative</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitNative.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitNative.html
new file mode 100644
index 0000000..a7f7b44
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/eglWaitNative.html
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
+<!-- saved from url=(0013)about:internet -->
+<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style xmlns="" type="text/css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</style>
+ <title>eglWaitNative</title>
+ <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
+ </head>
+ <body>
+ <div class="refentry">
+ <a id="eglWaitNative"></a>
+ <div class="titlepage"></div>
+ <div xmlns="" class="refnamediv">
+ <h1>eglWaitNative</h1>
+ <p>
+ complete native execution prior to subsequent GL rendering calls
+ </p>
+ </div>
+ <div class="refsynopsisdiv">
+ <h2>C Specification</h2>
+ <div class="funcsynopsis">
+ <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
+ <tr valign="bottom">
+ <td>
+ <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglWaitNative</strong>(</code>
+ <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">engine</var><code>)</code></td>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="parameters"></a>
+ <h2>Parameters</h2>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">
+ <em class="parameter">
+ <code>engine</code>
+ </em>
+ </span>
+ </dt>
+ <dd>
+ <p>
+ Specifies a particular marking engine to be waited on.
+ Must be <code class="constant">EGL_CORE_NATIVE_ENGINE</code>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="refsect1">
+ <a id="description"></a>
+ <h2>Description</h2>
+ <p>
+ Native rendering calls made prior to <code class="function">eglWaitNative</code>
+ are guaranteed to be executed before GL rendering calls made after
+ <code class="function">eglWaitNative</code>.
+ </p>
+ <p>
+ <code class="function">eglWaitNative</code>
+ is ignored if there is no current
+ <acronym class="acronym">EGL</acronym>
+ rendering context.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="errors"></a>
+ <h2>Errors</h2>
+ <p>
+ <code class="constant">EGL_BAD_PARAMETER</code> is generated if
+ <em class="parameter"><code>engine</code></em> is not a recognized marking engine.
+ </p>
+ <p>
+ <code class="constant">EGL_BAD_CURRENT_SURFACE</code>
+ is generated if the surface associated with the current context has a
+ native window or pixmap, and that window or pixmap is no longer valid.
+ </p>
+ </div>
+ <div class="refsect1">
+ <a id="seealso"></a>
+ <h2>See Also</h2>
+ <p>
+ <a class="citerefentry" href="glFinish.html"><span class="citerefentry"><span class="refentrytitle">glFinish</span></span></a>,
+ <a class="citerefentry" href="glFlush.html"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
+ <a class="citerefentry" href="eglWaitClient.html"><span class="citerefentry"><span class="refentrytitle">eglWaitClient</span></span></a>,
+ <a class="citerefentry" href="eglWaitGL.html"><span class="citerefentry"><span class="refentrytitle">eglWaitGL</span></span></a>
+ </p>
+ </div>
+ <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
+Copyright © 2003-2014 The Khronos Group Inc.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the condition that this copyright notice and permission notice shall be included
+in all copies or substantial portions of the Materials.
+</div>
+ </div>
+ </body>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/headBackground.jpg b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/headBackground.jpg
new file mode 100644
index 0000000..9ae0c2f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/headBackground.jpg
Binary files differ
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/index.html b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/index.html
new file mode 100644
index 0000000..43984e9
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/index.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>EGL Reference Pages</title>
+<link rel="Shortcut Icon" href="http://www.khronos.org/favicon.ico" type="image/x-icon" />
+</head>
+<frameset rows="85,*">
+ <frame src="Header.html" scrolling="no" noresize frameborder="0" marginwidth="0" marginheight="0">
+ <frameset cols="25%,75%">
+ <frame src="TOC.html" scrolling="yes">
+ <frame src="Intro.html" name="pagedisplay" frameborder="0" marginwidth="0" marginheight="0">
+ </frameset>
+
+</frameset>
+</html>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/maketoc.pl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/maketoc.pl
new file mode 100644
index 0000000..3011d21
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/maketoc.pl
@@ -0,0 +1,354 @@
+# This script is obsolete. It would need to change to generate TOC.html
+# in the new format and link to .html instead of .xml files.
+
+#!/usr/bin/perl
+
+sub Usage {
+print
+"Usage: maketoc xhtmldir xmldir
+ where xhtmldir contains a directory full of OpenGL .xml XHTML man pages -AND-
+ where xmldir contains a directory full of OpenGL .xml source XML man pages
+
+ probably want to redirect output into a file like
+ ./maketoc.pl . .. > ./toc.html
+"
+}
+
+sub PrintHeader {
+print '<html>
+<head>
+<title>EGL Reference Pages</title>
+<style type="text/css">
+
+html, body, table
+{ color: #000;
+ padding: 4px 4px;
+ margin: 0px 0 0 0;
+ text-align: center;
+ font-family: Arial, Lucida, sans-serif;
+ font-size: 10pt;
+
+}
+
+#container {
+ margin: 10px;
+ font-size: 14pt;
+ text-decoration:none;
+}
+
+table.sample {
+ border-width: 1px;
+ border-spacing: 5px;
+ border-style: dotted;
+ border-color: black;
+ border-collapse: separate;
+ background-color: #F0F0F0;
+}
+table.sample th {
+ border-width: 1px;
+ padding: 5px;
+ border-style: none;
+}
+table.sample td {
+ border-width: 1px;
+ padding: 1px;
+ border-style: none;
+}
+</style>
+
+</head>
+<body>
+<a name="top"></a>
+<h1>EGL Reference Pages</h1>
+<br/><br/>
+
+';
+}
+
+sub PrintFooter {
+print '
+</body>
+</html>
+';
+}
+
+sub TableElementForFilename {
+ my $name = shift;
+
+ my $strippedname = $name;
+ $strippedname =~ s/\.xml//;
+ print "\t";
+ print '<tr><td><a target="pagedisp" href="' , $name , '">';
+ print "$strippedname";
+ print "</a></td></tr>\n";
+}
+
+sub BeginTable {
+ my $letter = shift;
+ print "<a name=\"$letter\"></a><br/><br/>\n";
+ print '<table width="220" align="center" class="sample">';
+ print "\t<th>";
+ print "$letter</th>\n";
+}
+
+sub EndTable {
+ print "\t";
+ print '<tr><td><center><a href="#top">Top</a></center></td></tr>';
+ print "\n</table>\n\n";
+}
+
+
+
+##############
+# main
+##############
+
+if (@ARGV != 2)
+{
+ Usage();
+ die;
+}
+
+# grab list of generated XHTML files
+opendir(DIR,$ARGV[0]) or die "couldn't open directory";
+
+@files = readdir(DIR);
+close(DIR);
+@files = sort @files;
+
+PrintHeader();
+
+my @glX;
+my @glut;
+my @glu;
+my @egl;
+my @gl;
+
+my @realEntrypoints;
+my @pageNames;
+
+#pre-create list of all true entrypoint names
+
+foreach (@files)
+{
+ if (/xml/)
+ {
+ $parentName = $ARGV[1] . '/' . $_;
+ if (open(PARENT, $parentName))
+ {
+ @funcs = <PARENT>;
+ @funcs = grep(/<funcdef>/, @funcs);
+ foreach (@funcs)
+ {
+ $func = $_;
+ $func =~ s/.*<function>//;
+ $func =~ s/<\/function>.*\n//;
+
+ push (@realEntrypoints, $func);
+ }
+ close(PARENT);
+ }
+ }
+}
+
+#pre-create list of page names
+
+foreach (@files)
+{
+ if (/xml/)
+ {
+ $parentName = $ARGV[1] . '/' . $_;
+ if (open(PARENT, $parentName))
+ {
+ my $entrypoint = $_;
+ $entrypoint =~ s/\.xml//;
+
+ push (@pageNames, $entrypoint);
+
+ close(PARENT);
+ }
+ }
+}
+
+#sort the files into gl, glut, glu, EGL, and glX
+
+foreach (@files)
+{
+ if (/xml/)
+ {
+ # filter out entrypoint variations that don't have their own man pages
+ my $needIndexEntry = 0;
+
+ # continue only if parent page exists (e.g. glColor) OR
+ # different parent page exists with matching entrypoint (e.g. glEnd)
+ my $entrypoint = $_;
+ $entrypoint =~ s/\.xml//;
+
+ foreach (@pageNames)
+ {
+ if ($_ eq $entrypoint)
+ {
+ # it has its own man page
+ $needIndexEntry = 1;
+ }
+ }
+
+ if ($needIndexEntry == 0)
+ {
+ foreach (@realEntrypoints)
+ {
+ if ($_ eq $entrypoint)
+ {
+ # it's a real entrypoint, but make sure not a variation
+ $needIndexEntry = 1;
+
+ foreach (@pageNames)
+ {
+ my $alteredEntrypoint = $entrypoint;
+ $alteredEntrypoint =~ s/$_//;
+
+ if (!($alteredEntrypoint eq $entrypoint))
+ {
+ $needIndexEntry = 0;
+ }
+ }
+ }
+ }
+ }
+
+ if ($needIndexEntry)
+ {
+ if (/^glX/)
+ {
+ push (@glX, $_);
+ }
+ elsif (/^glut/)
+ {
+ push (@glut, $_);
+ }
+ elsif (/^glu/)
+ {
+ push (@glu, $_);
+ }
+ elsif (/^egl/)
+ {
+ push (@egl, $_);
+ }
+ elsif (/^gl/)
+ {
+ push (@gl, $_);
+ }
+ }
+ }
+}
+
+
+#output the table of contents
+
+my @toc;
+
+if ($#gl > 0)
+{
+ $currentletter = "";
+ $opentable = 0;
+
+ foreach (@gl)
+ {
+ $name = $_;
+ $name =~ s/^gl//;
+ $firstletter = substr($name, 0, 1);
+ if ($firstletter ne $currentletter)
+ {
+ push (@toc, $firstletter);
+ $currentletter = $firstletter;
+ }
+ }
+ if ($#egl > 0) { push (@toc, "egl"); }
+ if ($#glu > 0) { push (@toc, "glu"); }
+ if ($#glut > 0) { push (@toc, "glut"); }
+ if ($#glX > 0) { push (@toc, "glX"); }
+}
+
+
+print '<div id="container">';
+foreach (@toc)
+{
+ print '<b><a href="#';
+ print $_;
+ print '" style="text-decoration:none"> ';
+ print $_;
+ print " </a></b> &nbsp; ";
+}
+print "</div>\n\n\n";
+
+# output the tables
+
+if ($#gl > 0)
+{
+ $currentletter = "";
+ $opentable = 0;
+
+ foreach (@gl)
+ {
+ $name = $_;
+ $name =~ s/^gl//;
+ $firstletter = substr($name, 0, 1);
+ if ($firstletter ne $currentletter)
+ {
+ if ($opentable == 1)
+ {
+ EndTable();
+ }
+ BeginTable($firstletter);
+ $opentable =1;
+ $currentletter = $firstletter;
+ }
+ TableElementForFilename($_);
+ }
+ if ($opentable)
+ {
+ EndTable();
+ }
+}
+
+if ($#egl > 0)
+{
+ BeginTable("egl");
+ foreach (@egl)
+ {
+ TableElementForFilename($_);
+ }
+ EndTable();
+}
+
+if ($#glu > 0)
+{
+ BeginTable("glu");
+ foreach (@glu)
+ {
+ TableElementForFilename($_);
+ }
+ EndTable();
+}
+
+if ($#glut > 0)
+{
+ BeginTable("glut");
+ foreach (@glut)
+ {
+ TableElementForFilename($_);
+ }
+ EndTable();
+}
+
+if ($#glX > 0)
+{
+ BeginTable("glX");
+ foreach (@glX)
+ {
+ TableElementForFilename($_);
+ }
+ EndTable();
+}
+
+PrintFooter();
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/opengl-man.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/opengl-man.xsl
new file mode 100644
index 0000000..1e725bc
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/opengl-man.xsl
@@ -0,0 +1,49 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/profile-docbook.xsl"/>
+
+<xsl:param name="funcsynopsis.style">ansi</xsl:param>
+<xsl:param name="citerefentry.link" select="'1'"></xsl:param>
+<xsl:template name="generate.citerefentry.link"><xsl:value-of select="refentrytitle"/>.xml</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl">
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="/">
+ <xsl:processing-instruction name="xml-stylesheet">
+ <xsl:text>type="text/xsl" href="mathml.xsl"</xsl:text>
+ </xsl:processing-instruction>
+ <xsl:apply-imports/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/present.css b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/present.css
new file mode 100644
index 0000000..7868f93
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/present.css
@@ -0,0 +1,47 @@
+@charset "utf-8";
+/* CSS Document */
+ li { font: normal 14px verdana, sans-serif; line-height: 14px; }
+ ul { font: normal 14px verdana, sans-serif; line-height: 14px; }
+ a:link, a:visited {color:blue; text-decoration:none;}
+ a:hover {color:blue; text-decoration:none; background-color:FFFF99; }
+
+ #navwrap {
+ width: 320px;
+ margin:0 0 0 4px;
+ padding:0;
+ }
+
+ #containerul, #containerul ul{
+ text-align:left;
+ margin:0 0 0 4px; /* Removes browser default margins applied to the lists. */
+ padding:0; /* Removes browser default padding applied to the lists. */
+ }
+
+ #containerul li{
+ margin:0 0 0 15px; /* A left margin to indent the list items and give the menu a sense of structure. */
+ padding:4px 0 0 2px;
+ list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
+ font: normal 12px verdana, sans-serif;
+ }
+
+ #containerul li.lev1 {
+ margin:0 0 0 0;
+ padding:4px 0 0 2px;
+ list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
+ font: normal 14px verdana, sans-serif;
+ }
+
+ #containerul .symbols{ /* Various styles to position the symbols next to the items in the menu. */
+ background-repeat:no-repeat;
+ float:left;
+ height:14px;
+ margin-right:5px;
+ margin-top:1px;
+ width:14px;
+ }
+
+#containerul ul.Level2 {
+ margin:0;
+ padding: 0;
+ }
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/style.css b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/style.css
new file mode 100644
index 0000000..00fd1ed
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/style.css
@@ -0,0 +1,2 @@
+@import url("undohtml.css");
+@import url("present.css");
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/styles-css.xsl b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/styles-css.xsl
new file mode 100644
index 0000000..498654e
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/styles-css.xsl
@@ -0,0 +1,214 @@
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<xsl:param name="annotation.css">
+ /* This style sets a margin around the entire page */
+ html, body {
+ margin: 10px;
+ }
+
+ p {
+ font: normal 16px verdana, sans-serif;
+ margin: 0;
+ padding-bottom:12px;
+ }
+
+ h1 {
+ font: bold 25px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h2 {
+ font: bold 19px verdana, sans-serif;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ h3 {
+ font: bold 19px verdana, sans-serif !important;
+ margin-top: 28px;
+ margin-bottom: 3px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ li {
+ font: normal 16px verdana, sans-serif;
+ margin-top: 0;
+ margin-bottom: 18px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .pdparam {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ .term {
+ font: italic 16px verdana, sans-serif;
+ font-weight: normal;
+ }
+
+ .type {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ a:link, a:visited {
+ color: blue;
+ text-decoration: none;
+ font: normal 16px;
+ }
+
+ a:hover {
+ background-color: #FFFF99;
+ font: normal 16px;
+ }
+
+ div.funcsynopsis {
+ text-align: left;
+ background-color: #e6e6e6;
+ font: normal 16px verdana, sans-serif;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+
+ div.funcsynopsis table {
+ border-collapse: separate;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.funcsynopsis td {
+ background-color: #e6e6e6;
+ border: 0 solid #000;
+ padding: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 {
+ font-family: verdana, sans-serif;
+ font-size: 16px;
+ }
+
+ code.constant {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ span.errorname {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ code.function {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ b.fsfunc {
+ font: bold 16px verdana, sans-serif !important;
+ }
+
+ code.varname {
+ font: italic 16px verdana, sans-serif;
+ }
+
+ code.replaceable {
+ font: italic 16px courier new, monospace;
+ }
+
+ code.funcdef {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .citerefentry {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ .parameter {
+ font-style: italic;
+ }
+
+ code.fsfunc {
+ font: normal 16px verdana, sans-serif !important;
+ }
+
+ /* PARAMETER: This style controls spacing between the terms in Parameter section */
+ dt {
+ margin-top: 15px;
+ }
+
+ /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
+ div.refsect1 table {
+ width: 100%;
+ margin-top: 10px;
+ background-color: #FFF;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 th {
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: bold 16px verdana, sans-serif;
+ }
+
+ div.refsect1 td {
+ background-color: #FFF;
+ padding: 5px;
+ vertical-align: text-top;
+ border-collapse: collapse;
+ border-color: #000;
+ border-width: 1px;
+ font: normal 16px verdana, sans-serif;
+ }
+
+ div.refsect1 p{
+ font: normal 16px verdana, sans-serif;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+
+ /* EXAMPLE: These styles apply only to the Example section */
+ div.refsect2 {
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 table {
+ margin-top: 0;
+ background-color: #e6e6e6;
+ width: 100%;
+ border: 0 solid #000;
+ padding: 2px;
+ font: normal 16px courier new, monospace !important;
+ }
+
+ div.refsect2 td {
+ background-color: #e6e6e6;
+ font: normal 16px courier new, monospace !important;
+ white-space:pre;
+ }
+
+ /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
+ div.refsect3 {
+ font: normal 11px verdana, sans-serif;
+ margin-top: 50px;
+ margin-bottom: 20px;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+</xsl:param>
+</xsl:stylesheet>
+
+
diff --git a/glew/auto/EGL-Registry/sdk/docs/man/xhtml/undohtml.css b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/undohtml.css
new file mode 100644
index 0000000..a2d510f
--- /dev/null
+++ b/glew/auto/EGL-Registry/sdk/docs/man/xhtml/undohtml.css
@@ -0,0 +1,9 @@
+/* -- undo browser HTML defaults -- */
+/* -- Global resets of all default items -- */
+
+:link,:visited {text-decoration: none;}
+ul,ol {list-style: none;}
+h1,h2,h3,h4,h5,h6,pre,code,p {font-size: 1em;}
+ul,ol,dl,li,dt,dd,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input {margin: 0; padding: 0;}
+a img,:link img,:visited img {border: none;}
+address {font-style: normal;}
diff --git a/glew/auto/EGL-Registry/specs/EGLTechNote0001.html b/glew/auto/EGL-Registry/specs/EGLTechNote0001.html
new file mode 100644
index 0000000..ed98604
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/EGLTechNote0001.html
@@ -0,0 +1,110 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>EGL Technical Note #1 - EGL 1.4 and Ancillary Buffer Preservation</title><link rel="stylesheet" href="igstyle.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.1"><meta name="description" content="Summarizes ancillary buffer preservation issues across eglSwapBuffers, including recent changes to behavior defined by the EGL 1.4 Specification."></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="article" title="EGL Technical Note #1 - EGL 1.4 and Ancillary Buffer Preservation"><div class="titlepage"><div><div><h2 class="title"><a name="id2598382"></a>EGL Technical Note #1 - EGL 1.4 and Ancillary Buffer Preservation</h2></div><div><p class="edition"> First Edition</p></div><div><p class="releaseinfo"></p></div><div><div class="authorgroup"><div class="editor"><h4 class="editedby">Edited by</h4><h3 class="editor"><span class="firstname">Jon</span> <span class="surname">Leech</span></h3><div class="affiliation"><span class="orgname">Khronos Group<br></span></div></div></div></div><div><p class="copyright">Copyright © 2010 The Khronos Group Inc.</p></div><div><a href="legal.html">Legal Notice</a></div><div><div class="abstract" title="Abstract"><p class="title"><b>Abstract</b></p><p> Summarizes <em class="glossterm"><a class="glossterm" href="#ancillary" title="Ancillary Buffers">ancillary
+ buffer</a></em> preservation issues across
+ <code class="code">eglSwapBuffers</code>, including recent changes to
+ behavior defined by the EGL 1.4 Specification. </p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#introduction">1. Introduction</a></span></dt><dt><span class="section"><a href="#usecases">2. Use Cases for Buffer Preservation </a></span></dt><dt><span class="section"><a href="#bufquery">3. Color Buffer Preservation Queries and Controls </a></span></dt><dt><span class="section"><a href="#nocontrol">4. No Control of Auxillary Buffer Preservation; Compatibility
+ Issues </a></span></dt><dt><span class="section"><a href="#extensions">5. EGL Extensions for Control of Ancillary Buffer Preservation
+ </a></span></dt><dt><span class="appendix"><a href="#id2602337">A. Glossary</a></span></dt><dt><span class="appendix"><a href="#id2595698">B. Document History</a></span></dt><dt><span class="appendix"><a href="#id2585500">C. Acknowledgements</a></span></dt></dl></div><div class="mediaobject" align="center"><img src="Khronos-1600-Transparent-May07.png" align="middle" width="270" alt="Khronos Group logo"></div><div class="section" title="1. Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction"></a>1. Introduction</h2></div></div></div><p> Calling <code class="code">eglSwapBuffers</code> may or may not result in
+ the preservation of the contents of the color buffer and
+ ancillary buffers (depth, stencil, and alpha mask) of the
+ surface being swapped. Some applications may rely on buffer
+ contents being preserved. This note discusses scenarios in
+ which buffer preservation is desirable, describes all the EGL
+ entry points and attributes relevant to buffer preservation,
+ and describes a change in preservation behavior made in the
+ <a class="ulink" href="http://www.khronos.org/registry/egl/" target="_top"> EGL 1.4
+ Specification </a> update of February 23, 2010. This
+ change may require changes to certain applications which rely
+ on ancillary buffer preservation and are being moved to new
+ platforms or new EGL implementations. </p><p> Many applications do not require buffer preservation, since
+ they clear all buffers being used and completely redraw their
+ contents for each frame. Such applications need not consider
+ the issues discussed in this note. </p></div><div class="section" title="2.  Use Cases for Buffer Preservation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="usecases"></a>2.  Use Cases for Buffer Preservation </h2></div></div></div><p> An example of the use of buffer preservation is an
+ application which wishes to build up an image step by step by
+ drawing multiple layers, and to display the partial images
+ resulting from each each successive layer being drawn.
+ </p><p> If color and ancillary buffer contents are known to be
+ preserved across <code class="code">eglSwapBuffers</code>, such an
+ application can construct and display each step by drawing
+ only the most recent layer and performing
+ <code class="code">eglSwapBuffers</code>. </p><p> If buffer contents are not known to be preserved, the
+ application can instead, for each frame being displayed,
+ redraw all layers up to the most recent. Alternatively, the
+ application may explicitly save the contents of required
+ buffers by reading them back (with e.g.
+ <code class="code">glReadPixels</code>) prior to
+ <code class="code">eglSwapBuffers</code>, and restore them (with e.g.
+ <code class="code">glDrawPixels</code> or drawing a textured quad) prior
+ to drawing the next layer. However, both of these approaches
+ are likely to incur significant performance penalties.
+ </p></div><div class="section" title="3.  Color Buffer Preservation Queries and Controls"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="bufquery"></a>3.  Color Buffer Preservation Queries and Controls </h2></div></div></div><p> To determine if <code class="code">eglSwapBuffers</code> will preserve
+ color buffer contents of a surface, call </p><p> <code class="code">
+ eglQuerySurface(dpy, surface, EGL_SWAP_BEHAVIOR, &amp;value);
+ </code> </p><p> where <code class="code">surface</code> is the <span class="type">EGLSurface</span>
+ being queried, <code class="code">dpy</code> is the
+ <span class="type">EGLDisplay</span> <code class="code">surface</code> belongs to, and
+ <code class="code">value</code> is a pointer to an <span class="type">EGLint</span>. On
+ success, <code class="code">*value</code> will contain either
+ <code class="constant">EGL_BUFFER_PRESERVED</code>, indicating that
+ color buffer contents are preserved, or
+ <code class="constant">EGL_BUFFER_DESTROYED</code>, indicating that
+ color buffer contents are not preserved. </p><p> Some surfaces allow applications to control whether or not
+ the color buffer contents are preserved. If
+ <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> is set
+ in the <code class="constant">EGL_SURFACE_TYPE</code> attribute of the
+ <span class="type">EGLConfig</span> used to create <code class="code">surface</code>,
+ then calling </p><p> <code class="code">
+ eglSurfaceAttrib(dpy, surface, EGL_SWAP_BEHAVIOR,
+ EGL_BUFFER_PRESERVED)
+ </code> </p><p> will cause color buffer contents to be preserved across
+ future calls to <code class="code">eglSwapBuffers</code>, while calling
+ </p><p> <code class="code">
+ eglSurfaceAttrib(dpy, surface, EGL_SWAP_BEHAVIOR,
+ EGL_BUFFER_DESTOYED)
+ </code> </p><p> will cause color buffer contents to not be preserved. When
+ this control is available, there may be a significant
+ performance penalty for requesting color buffer preservation.
+ </p><p> If <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> is
+ not set in the <code class="constant">EGL_SURFACE_TYPE</code>
+ attribute, then control of color buffer preservation is not
+ allowed for this surface. In this case, calling
+ <code class="code">eglSurfaceAttrib</code> with <code class="code">attribute</code>
+ <code class="constant">EGL_SWAP_BEHAVIOR</code> will fail and generate
+ an <code class="constant">EGL_BAD_MATCH</code> error. </p></div><div class="section" title="4.  No Control of Auxillary Buffer Preservation; Compatibility Issues"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="nocontrol"></a>4.  No Control of Auxillary Buffer Preservation; Compatibility
+ Issues </h2></div></div></div><p> In versions of the EGL 1.4 Specification prior to February 23,
+ 2010, the specification implied that the color buffer
+ preservation behavior described above also applied to ancillary
+ (depth, stencil, and alpha mask) buffer contents. The
+ Specification of February 23, 2010 revises the buffer
+ preservation queries and controls and explicitly states that
+ they only apply to the color buffer. </p><p> As a result, the EGL 1.4 API has no way to determine or
+ control whether <code class="code">eglSwapBuffers</code> will preserve
+ ancillary buffer contents. Some implementations do so and
+ some do not. We know that this is a backwards-incompatible
+ change. The change was made because some common hardware
+ incurs very high penalties for ancillary buffer preservation.
+ Despite what prior versions of the Specification said, EGL
+ implementations on these devices often did not preserve
+ ancillary buffers. Khronos felt that developers would be
+ better off if we explicitly acknowledged this situation.
+ </p><p> This change in the Specification is not expected to result in
+ changes to implementations, and therefore driver updates are
+ unlikely to adversely affect any application which relies on
+ ancillary buffer preservation. However, developers of such
+ applications must be aware that when porting to another
+ platform, they may find that ancillary buffer contents are
+ not preserved. </p></div><div class="section" title="5.  EGL Extensions for Control of Ancillary Buffer Preservation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="extensions"></a>5.  EGL Extensions for Control of Ancillary Buffer Preservation
+ </h2></div></div></div><p> The EGL Working Group is currently developing an EGL extension
+ which will allow explicitly control over ancillary buffer
+ preservation in a fashion similar to color buffer preservation.
+ We expect this extension specification to be completed later in
+ 2010. Vendors will then choose whether or not to implement the
+ extension in their drivers. The extension specification will
+ be published in the
+ <a class="ulink" href="http://www.khronos.org/registry/egl/" target="_top"> Khronos
+ Registry</a> when it is finalized. </p></div><div class="appendix" title="A. Glossary"><h2 class="title" style="clear: both"><a name="id2602337"></a>A. Glossary</h2><div class="glosslist"><dl><dt><a name="ancillary"></a>Ancillary Buffers</dt><dd><p> Buffers of an <span class="type">EGLSurface</span> other than the
+ color buffer. These may include the depth and/or stencil
+ buffers for use by OpenGL ES, and the alpha mask buffer for
+ use by OpenVG. </p></dd></dl></div></div><div class="appendix" title="B. Document History"><h2 class="title" style="clear: both"><a name="id2595698"></a>B. Document History</h2><div class="revhistory"><table border="0" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision 1.0</td><td align="left">March 30, 2010</td><td align="left">jpl</td></tr><tr><td class="revremark" align="left" colspan="3">Public Release.</td></tr></table></div></div><div class="appendix" title="C. Acknowledgements"><h2 class="title" style="clear: both"><a name="id2585500"></a>C. Acknowledgements</h2><p>Members of the Khronos EGL Working Group, especially Acorn
+ Pooley, Ben Bowman, Ian Romanick, Mark Callow, and Maurice Ribble.
+ Additional thanks to Mark Callow for the Docbook stylesheets and
+ build process used to build this document</p></div></div></body></html>
diff --git a/glew/auto/EGL-Registry/specs/Khronos-1600-Transparent-May07.png b/glew/auto/EGL-Registry/specs/Khronos-1600-Transparent-May07.png
new file mode 100644
index 0000000..0793268
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/Khronos-1600-Transparent-May07.png
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.0.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.0.pdf
new file mode 100644
index 0000000..82c5cd0
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.0.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.1.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.1.pdf
new file mode 100644
index 0000000..0ce2eea
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.1.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.2.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.2.pdf
new file mode 100644
index 0000000..53fbf53
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.2.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.3.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.3.pdf
new file mode 100644
index 0000000..5535fb3
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.3.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.4.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.4.pdf
new file mode 100644
index 0000000..1032035
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.4.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.4.withchanges.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.4.withchanges.pdf
new file mode 100644
index 0000000..c8f474a
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.4.withchanges.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.5.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.5.pdf
new file mode 100644
index 0000000..7206fe4
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.5.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/eglspec.1.5.withchanges.pdf b/glew/auto/EGL-Registry/specs/eglspec.1.5.withchanges.pdf
new file mode 100644
index 0000000..056d63a
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/eglspec.1.5.withchanges.pdf
Binary files differ
diff --git a/glew/auto/EGL-Registry/specs/igstyle.css b/glew/auto/EGL-Registry/specs/igstyle.css
new file mode 100644
index 0000000..447b0df
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/igstyle.css
@@ -0,0 +1,185 @@
+/* vi: set sw=2 ts=4: */
+
+/*
+ $HeadURL: https://cvs.khronos.org/svn/repos/util/trunk/doc/iguide/igstyle.css $
+ $Revision: 7453 $
+ $Author: markc $
+*/
+
+body {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+ color: #333333;
+ background-color: white;
+ margin: 4em;
+ max-width: 50em;
+}
+
+h1 {
+ color: #00A6A6;
+}
+
+h2, h3, h4, h5, h6 {
+ color: #146A68;
+}
+
+/* Set space between editedby and editor to 0.5em.
+ * editor margin-top contributes to this.
+ */
+h4.editedby {
+ margin-bottom: 0.5em;
+}
+
+/* Remove spaces between editedby & editor and editor & affiliation.
+ * affiliation is a div so there's no top-margin to fix.
+ */
+h3.editor {
+ margin-top: 0;
+ /* color: #333333; */
+ margin-bottom: 0;
+}
+
+/* Remove space between copyright and legal notice lines.
+ * Legal notice is in a div so there's no top-margin to fix.
+ */
+p.copyright {
+ margin-bottom: 0;
+}
+
+/* Remove space between edition, docrev & releaseinfo.*/
+p.edition {
+ margin-bottom: 0;
+}
+
+p.docrev {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+p.releaseinfo {
+ margin-top: 0;
+}
+
+p.title {
+ color: #146A68;
+}
+
+a {
+ text-decoration: none;
+}
+
+/* The following a: pseudo-class order is necessary in
+ * order to be effective.
+ */
+a:link {
+ color: #009999;
+}
+
+a:visited {
+ color: #006699;
+}
+
+a:hover {
+ color: #00CCCC;
+}
+
+a:active {
+ color: #0000FF;
+}
+
+code.code {
+ white-space: nowrap;
+}
+
+/* Increase space before abstract. */
+div.abstract > p.title {
+ margin-top: 3em;
+
+}
+
+div.footnote {
+ font-size: small;
+}
+
+div.legalnotice {
+ font-size: x-small;
+}
+
+div.article > div.titlepage {
+ text-align: center;
+}
+
+table {
+ border-collapse: collapse;*/
+ /*border-spacing: 0;*/
+ border-style: ridge;
+}
+
+td {
+ padding: 0.3em;
+}
+
+th {
+ padding: 0.3em;
+ /* background-color: #FFDEAD; */
+ background-color: #EBD8AF;
+}
+
+th:first-child {
+ /* background-color: #EFEFEF; */
+ background-color: #EBE57B;
+}
+
+.informalexample {
+ /*background-color: #D7D9D9;*/
+ background-color: #EBEBEB;
+ border: thin dashed #146A68;
+}
+
+/* override width="100%" set by xls style sheet. */
+div.revhistory > table {
+ width: auto;
+ border: thin solid;
+ font-size: small;
+ background-color: #EBEBEB;
+}
+
+div.revhistory > table th {
+ border-bottom: thin solid;
+}
+
+div.revhistory > table td {
+ border: thin dotted;
+}
+
+div.revhistory > table td.revremark {
+ border-bottom: thin solid;
+}
+
+.remark {
+ background-color: yellow;
+ color: maroon;
+}
+
+/* Haven't found a way to select .remark *except* when it's a child of
+ * .releaseinfo so I've had to add this. I tried the negation
+ * pseudo-operator without success.
+.releaseinfo .remark {
+ background-color: white;
+ color: #333333;
+}
+*/
+
+/* Selector notes:
+ * See http://css.maxdesign.com.au/selectutorial/selectors_adjacent.htm
+ *
+ * A B selects a B that is a descendant of A.
+ * A > B selects a B that is a direct child of A.
+ * A + B selects a B that immediately follows an A where A & B are siblings.
+ * #foo is an id selector; can do A#foo to select an A with id="foo".
+ * .bar is a class selector; can do A.bar to select an A with class="bar".
+ * A[attrib<=value>] is an attribute selector. It selects an A with "attrib"
+ * specified. Optionally a specific attribute value can also be specified.
+ * A:b is pseudo-element or pseudo-class selector. Examples are first-child,
+ * visited, hover, first-line, first-letter.
+ */
diff --git a/glew/auto/EGL-Registry/specs/legal.html b/glew/auto/EGL-Registry/specs/legal.html
new file mode 100644
index 0000000..1cc20b4
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/legal.html
@@ -0,0 +1,34 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Legal Notice</title><link rel="stylesheet" href="igstyle.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="legalnotice" title="Legal Notice"><p>This document is protected by copyright laws and contains material
+ proprietary to the Khronos Group, Inc. It or any components may not be
+ reproduced, republished, distributed, transmitted, displayed, broadcast
+ or otherwise exploited in any manner without the express prior written
+ permission of Khronos Group. The receipt or possession of this document
+ does not convey any rights to reproduce, disclose, or distribute its
+ contents, or to manufacture, use, or sell anything that it may describe,
+ in whole or in part.</p><p>Khronos Group grants express permission to any current Promoter,
+ Contributor or Adopter member of Khronos to copy and redistribute
+ UNMODIFIED versions of this document in any fashion, provided that NO
+ CHARGE is made for the document and the latest available update of the
+ document is used whenever possible. Such distributed document may be
+ re-formatted AS LONG AS the contents of the document are not changed in
+ any way. The document may be incorporated into a product that is sold as
+ long as such product includes significant independent work developed by
+ the seller. A link to the current version of this document on the
+ Khronos Group web-site should be included whenever possible with
+ document distributions.</p><p>Khronos Group makes no, and expressly disclaims any,
+ representations or warranties, express or implied, regarding this
+ document, including, without limitation, any implied warranties of
+ merchantability or fitness for a particular purpose or non-infringement
+ of any intellectual property. Khronos Group makes no, and expressly
+ disclaims any, warranties, express or implied, regarding the
+ correctness, accuracy, completeness, timeliness, and reliability of the
+ document. Under no circumstances will the Khronos Group, or any of its
+ Promoters, Contributors or Members or their respective partners,
+ officers, directors, employees, agents or representatives be liable for
+ any damages, whether direct, indirect, special or consequential damages
+ for lost revenues, lost profits, or otherwise, arising from or in
+ connection with these materials.</p><p><span class="trademark">Khronos</span><sup>&#8482;</sup> is a trademark of The
+ Khronos Group Inc. <span class="trademark">OpenGL</span><sup>®</sup> is a
+ registered trademark, and <span class="trademark">OpenGL
+ ES</span><sup>&#8482;</sup>is a trademark, of Silicon Graphics, Inc. All other marks
+ are the property of their respective owners.</p></div></body></html>
diff --git a/glew/auto/EGL-Registry/specs/legal.xhtml b/glew/auto/EGL-Registry/specs/legal.xhtml
new file mode 100644
index 0000000..0102d61
--- /dev/null
+++ b/glew/auto/EGL-Registry/specs/legal.xhtml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Legal Notice</title><link rel="stylesheet" href="igstyle.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /></head><body><div class="legalnotice"><p>This document is protected by copyright laws and contains material
+ proprietary to the Khronos Group, Inc. It or any components may not be
+ reproduced, republished, distributed, transmitted, displayed, broadcast
+ or otherwise exploited in any manner without the express prior written
+ permission of Khronos Group. The receipt or possession of this document
+ does not convey any rights to reproduce, disclose, or distribute its
+ contents, or to manufacture, use, or sell anything that it may describe,
+ in whole or in part.</p><p>Khronos Group grants express permission to any current Promoter,
+ Contributor or Adopter member of Khronos to copy and redistribute
+ UNMODIFIED versions of this document in any fashion, provided that NO
+ CHARGE is made for the document and the latest available update of the
+ document is used whenever possible. Such distributed document may be
+ re-formatted AS LONG AS the contents of the document are not changed in
+ any way. The document may be incorporated into a product that is sold as
+ long as such product includes significant independent work developed by
+ the seller. A link to the current version of this document on the
+ Khronos Group web-site should be included whenever possible with
+ document distributions.</p><p>Khronos Group makes no, and expressly disclaims any,
+ representations or warranties, express or implied, regarding this
+ document, including, without limitation, any implied warranties of
+ merchantability or fitness for a particular purpose or non-infringement
+ of any intellectual property. Khronos Group makes no, and expressly
+ disclaims any, warranties, express or implied, regarding the
+ correctness, accuracy, completeness, timeliness, and reliability of the
+ document. Under no circumstances will the Khronos Group, or any of its
+ Promoters, Contributors or Members or their respective partners,
+ officers, directors, employees, agents or representatives be liable for
+ any damages, whether direct, indirect, special or consequential damages
+ for lost revenues, lost profits, or otherwise, arising from or in
+ connection with these materials.</p><p><span class="trademark">Khronos</span><sup xmlns="">â„¢</sup> is a trademark of The
+ Khronos Group Inc. <span class="trademark">OpenGL</span><sup xmlns="">®</sup> is a
+ registered trademark, and <span class="trademark">OpenGL
+ ES</span><sup xmlns="">â„¢</sup>is a trademark, of Silicon Graphics, Inc. All other marks
+ are the property of their respective owners.</p></div></body></html>
diff --git a/glew/auto/bin/filter_gl_ext.sh b/glew/auto/bin/filter_gl_ext.sh
new file mode 100644
index 0000000..e295f65
--- /dev/null
+++ b/glew/auto/bin/filter_gl_ext.sh
@@ -0,0 +1,614 @@
+#!/usr/bin/env bash
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+##
+## Parameters:
+##
+## $1: Extensions directory
+
+set -e
+
+# fix GL_NV_texture_compression_vtc
+ grep -v EXT $1/GL_NV_texture_compression_vtc > tmp
+ mv tmp $1/GL_NV_texture_compression_vtc
+
+# remove duplicates from GL_ARB_vertex_program and GL_ARB_fragment_program
+ tail -n +5 $1/GL_ARB_vertex_program > patterns
+ grep -v -F -f patterns $1/GL_ARB_fragment_program > tmp
+ mv tmp $1/GL_ARB_fragment_program
+
+# remove duplicates from GLX_EXT_visual_rating and GLX_EXT_visual_info
+ tail -n +5 $1/GLX_EXT_visual_info > patterns
+ grep -v -F -f patterns $1/GLX_EXT_visual_rating > tmp
+ mv tmp $1/GLX_EXT_visual_rating
+
+# GL_EXT_draw_buffers2 and GL_EXT_transform_feedback both define glGetBooleanIndexedvEXT but with different parameter names
+ grep -v glGetBooleanIndexedvEXT $1/GL_EXT_transform_feedback > tmp
+ mv tmp $1/GL_EXT_transform_feedback
+
+# GL_EXT_draw_buffers2 and GL_EXT_transform_feedback both define glGetIntegerIndexedvEXT but with different parameter names
+ grep -v glGetIntegerIndexedvEXT $1/GL_EXT_transform_feedback > tmp
+ mv tmp $1/GL_EXT_transform_feedback
+
+# remove duplicates from GL_NV_video_capture and GLX_NV_video_capture
+ grep -v glX $1/GL_NV_video_capture > tmp
+ mv tmp $1/GL_NV_video_capture
+
+# add missing functions to GL_NV_video_capture
+ cat >> $1/GL_NV_video_capture <<EOT
+ void glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params)
+ void glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params)
+ void glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params)
+ void glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params)
+ void glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params)
+ void glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params)
+EOT
+
+# fix WGL_NV_video_capture
+ cat >> $1/WGL_NV_video_capture <<EOT
+ DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
+EOT
+
+# fix GLX_NV_video_capture
+ cat >> $1/GLX_NV_video_capture <<EOT
+ typedef XID GLXVideoCaptureDeviceNV
+EOT
+
+# remove duplicates from GL_NV_present_video and GLX_NV_present_video
+ tail -n +5 $1/GLX_NV_present_video > patterns
+ grep -v -F -f patterns $1/GL_NV_present_video > tmp
+ mv tmp $1/GL_NV_present_video
+
+# fix WGL_NV_present_video
+ cat >> $1/WGL_NV_present_video <<EOT
+ DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
+EOT
+
+# fix WGL_NV_video_output
+ cat >> $1/WGL_NV_video_output <<EOT
+ DECLARE_HANDLE(HPVIDEODEV);
+EOT
+
+# fix GL_NV_occlusion_query and GL_HP_occlusion_test
+ grep -v '_HP' $1/GL_NV_occlusion_query > tmp
+ mv tmp $1/GL_NV_occlusion_query
+
+# add deprecated constants to GL_ATI_fragment_shader
+ cat >> $1/GL_ATI_fragment_shader <<EOT
+ GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+ GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+ GL_NUM_PASSES_ATI 0x8970
+ GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+ GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+ GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+ GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+ GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+ GL_SWIZZLE_STRQ_ATI 0x897A
+ GL_SWIZZLE_STRQ_DQ_ATI 0x897B
+EOT
+
+# add deprecated constants to GL_NV_texture_shader
+ cat >> $1/GL_NV_texture_shader <<EOT
+ GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
+ GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
+ GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
+EOT
+
+# fix WGL_ATI_pixel_format_float
+ cat >> $1/WGL_ATI_pixel_format_float <<EOT
+ GL_RGBA_FLOAT_MODE_ATI 0x8820
+ GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
+EOT
+
+# fix WGL_ARB_make_current_read
+ cat >> $1/WGL_ARB_make_current_read <<EOT
+ ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+ ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
+EOT
+
+# fix WGL_EXT_make_current_read
+ cat >> $1/WGL_EXT_make_current_read <<EOT
+ ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
+EOT
+
+# add typedefs to GL_ARB_vertex_buffer_object; (from personal communication
+# with Marco Fabbricatore).
+#
+# Rationale. The spec says:
+#
+# "Both types are defined as signed integers large enough to contain
+# any pointer value [...] The idea of making these types unsigned was
+# considered, but was ultimately rejected ..."
+ cat >> $1/GL_ARB_vertex_buffer_object <<EOT
+ typedef ptrdiff_t GLsizeiptrARB
+ typedef ptrdiff_t GLintptrARB
+EOT
+
+# add typedefs to GLX_EXT_import_context
+ cat >> $1/GLX_EXT_import_context <<EOT
+ typedef XID GLXContextID
+EOT
+
+# add tokens to GLX_OML_swap_method
+ cat >> $1/GLX_OML_swap_method <<EOT
+ GLX_SWAP_EXCHANGE_OML 0x8061
+ GLX_SWAP_COPY_OML 0x8062
+ GLX_SWAP_UNDEFINED_OML 0x8063
+EOT
+
+# add typedefs to GLX_SGIX_fbconfig
+ cat >> $1/GLX_SGIX_fbconfig <<EOT
+ typedef XID GLXFBConfigIDSGIX
+ typedef struct __GLXFBConfigRec *GLXFBConfigSGIX
+EOT
+
+# Skip GLX_SGIX_dmbuffer and GLX_SGIX_video_source
+# unknown DMparams, DMbuffer, etc
+ rm -f $1/GLX_SGIX_dmbuffer
+ rm -f $1/GLX_SGIX_video_source
+
+# add typedefs to GLX_SGIX_pbuffer
+ cat >> $1/GLX_SGIX_pbuffer <<EOT
+ typedef XID GLXPbufferSGIX
+ typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX
+EOT
+
+# add typedef to GL_NV_half_float
+ cat >> $1/GL_NV_half_float <<EOT
+ typedef unsigned short GLhalf
+EOT
+
+# add handle to WGL_ARB_pbuffer
+ cat >> $1/WGL_ARB_pbuffer <<EOT
+ DECLARE_HANDLE(HPBUFFERARB);
+EOT
+
+# add handle to WGL_EXT_pbuffer
+ cat >> $1/WGL_EXT_pbuffer <<EOT
+ DECLARE_HANDLE(HPBUFFEREXT);
+EOT
+
+# get rid of GL_SUN_multi_draw_arrays
+ rm -f $1/GL_SUN_multi_draw_arrays
+
+# change variable names in GL_ARB_vertex_shader
+ perl -e 's/v0/x/g' -pi $1/GL_ARB_vertex_shader
+ perl -e 's/v1/y/g' -pi $1/GL_ARB_vertex_shader
+ perl -e 's/v2/z/g' -pi $1/GL_ARB_vertex_shader
+ perl -e 's/v3/w/g' -pi $1/GL_ARB_vertex_shader
+
+# remove triplicates in GL_ARB_shader_objects, GL_ARB_fragment_shader,
+# and GL_ARB_vertex_shader
+ tail -n +5 $1/GL_ARB_shader_objects > patterns
+ grep -v -F -f patterns $1/GL_ARB_fragment_shader > tmp
+ mv tmp $1/GL_ARB_fragment_shader
+ grep -v -F -f patterns $1/GL_ARB_vertex_shader > tmp
+ mv tmp $1/GL_ARB_vertex_shader
+
+# remove duplicates in GL_ARB_vertex_program and GL_ARB_vertex_shader
+ tail -n +5 $1/GL_ARB_vertex_program > patterns
+ grep -v -F -f patterns $1/GL_ARB_vertex_shader > tmp
+ mv tmp $1/GL_ARB_vertex_shader
+
+# remove triplicates in GL_ARB_fragment_program, GL_ARB_fragment_shader,
+# and GL_ARB_vertex_shader
+ tail -n +5 $1/GL_ARB_fragment_program > patterns
+ grep -v -F -f patterns $1/GL_ARB_fragment_shader > tmp
+ mv tmp $1/GL_ARB_fragment_shader
+ grep -v -F -f patterns $1/GL_ARB_vertex_shader > tmp
+ mv tmp $1/GL_ARB_vertex_shader
+
+# remove duplicates in GL_EXT_direct_state_access
+ grep -v "glGetBooleanIndexedvEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+ grep -v "glGetIntegerIndexedvEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+ grep -v "glDisableIndexedEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+ grep -v "glEnableIndexedEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+ grep -v "glIsEnabledIndexedEXT" $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+
+# remove duplicates in GL_NV_explicit_multisample
+ grep -v "glGetBooleanIndexedvEXT" $1/GL_NV_explicit_multisample > tmp
+ mv tmp $1/GL_NV_explicit_multisample
+ grep -v "glGetIntegerIndexedvEXT" $1/GL_NV_explicit_multisample > tmp
+ mv tmp $1/GL_NV_explicit_multisample
+
+# fix bugs in GL_ARB_vertex_shader
+ grep -v "GL_FLOAT" $1/GL_ARB_vertex_shader > tmp
+ mv tmp $1/GL_ARB_vertex_shader
+ perl -e 's/handle /GLhandleARB /g' -pi $1/GL_ARB_vertex_shader
+
+# fix bugs in GL_ARB_shader_objects
+ grep -v "GL_FLOAT " $1/GL_ARB_shader_objects > tmp
+ mv tmp $1/GL_ARB_shader_objects
+ grep -v "GL_INT " $1/GL_ARB_shader_objects > tmp
+ mv tmp $1/GL_ARB_shader_objects
+
+# add typedefs to GL_ARB_shader_objects
+ cat >> $1/GL_ARB_shader_objects <<EOT
+ typedef char GLcharARB
+ typedef unsigned int GLhandleARB
+EOT
+
+# add missing functions to GL_ARB_transpose_matrix
+ cat >> $1/GL_ARB_transpose_matrix <<EOT
+ void glLoadTransposeMatrixfARB (GLfloat m[16])
+ void glLoadTransposeMatrixdARB (GLdouble m[16])
+ void glMultTransposeMatrixfARB (GLfloat m[16])
+ void glMultTransposeMatrixdARB (GLdouble m[16])
+EOT
+
+# add missing tokens to GL_EXT_framebuffer_multisample
+ cat >> $1/GL_EXT_framebuffer_multisample <<EOT
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+ GL_MAX_SAMPLES_EXT 0x8D57
+EOT
+
+# Filter out GL_NV_gpu_program_fp64 enums and functions
+ head -n4 $1/GL_NV_gpu_program_fp64 > tmp
+ mv tmp $1/GL_NV_gpu_program_fp64
+
+# Filter glGetUniformui64vNV from GL_NV_shader_buffer_load
+ grep -v "glGetUniformui64vNV" $1/GL_NV_shader_buffer_load > tmp
+ mv tmp $1/GL_NV_shader_buffer_load
+
+# Filter out profile enumerations from GLX_ARB_create_context
+ grep -v "_PROFILE_" $1/GLX_ARB_create_context > tmp
+ mv tmp $1/GLX_ARB_create_context
+
+# Filter only profile related enumerations for GLX_ARB_create_context_profile
+ head -n4 $1/GLX_ARB_create_context_profile > tmp
+ grep "_PROFILE_" $1/GLX_ARB_create_context_profile >> tmp
+ mv tmp $1/GLX_ARB_create_context_profile
+
+# Filter out profile enumerations from WGL_ARB_create_context
+ grep -v "_PROFILE_" $1/WGL_ARB_create_context > tmp
+ mv tmp $1/WGL_ARB_create_context
+
+# Filter only profile related enumerations for WGL_ARB_create_context_profile
+ head -n4 $1/WGL_ARB_create_context_profile > tmp
+ grep "_PROFILE_" $1/WGL_ARB_create_context_profile >> tmp
+ mv tmp $1/WGL_ARB_create_context_profile
+
+# add missing function to GLX_NV_copy_image
+ cat >> $1/GLX_NV_copy_image <<EOT
+ void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+EOT
+
+# add missing function to WGL_NV_copy_image
+ cat >> $1/WGL_NV_copy_image <<EOT
+ BOOL wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+EOT
+
+# Filter glProgramUniform from GL_EXT_separate_shader_objects
+ cat $1/GL_EXT_separate_shader_objects | grep -v "glProgramUniform" | grep -v "glProgramParameteri" > tmp
+ mv tmp $1/GL_EXT_separate_shader_objects
+
+# Filter out EXT functions from GL_ARB_viewport_array
+ grep -v "EXT" $1/GL_ARB_viewport_array > tmp
+ mv tmp $1/GL_ARB_viewport_array
+
+# Additional enumerations for GL_NV_vertex_buffer_unified_memory
+# These are mentioned in GL_ARB_draw_indirect.txt
+
+ cat >> $1/GL_NV_vertex_buffer_unified_memory <<EOT
+ GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+ GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+ GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
+EOT
+
+# Filter glGetPointerv from GL_ARB_debug_output
+# It's part of OpenGL 1.1, after all
+
+ grep -v "glGetPointerv" $1/GL_ARB_debug_output > tmp
+ mv tmp $1/GL_ARB_debug_output
+
+# Filter glGetPointerv from GL_EXT_vertex_array
+# It's part of OpenGL 1.1, after all
+
+ grep -v "glGetPointerv" $1/GL_EXT_vertex_array > tmp
+ mv tmp $1/GL_EXT_vertex_array
+
+# add typedef to GL_AMD_debug_output
+# parse_spec.pl can't parse typedefs from New Types section, but ought to
+ cat >> $1/GL_AMD_debug_output <<EOT
+ typedef void (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam)
+EOT
+
+# add typedef to GL_ARB_debug_output
+# parse_spec.pl can't parse typedefs from New Types section, but ought to
+ cat >> $1/GL_ARB_debug_output <<EOT
+ typedef void (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
+EOT
+
+# add typedef to GL_KHR_debug
+# parse_spec.pl can't parse typedefs from New Types section, but ought to
+ cat >> $1/GL_KHR_debug <<EOT
+ typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
+EOT
+
+# Remove glGetPointerv from GL_KHR_debug
+ grep -v "glGetPointerv" $1/GL_KHR_debug > tmp
+ mv tmp $1/GL_KHR_debug
+
+# add typedefs to GL_ARB_cl_event
+# parse_spec.pl can't parse typedefs from New Types section, but ought to
+ cat >> $1/GL_ARB_cl_event <<EOT
+ typedef struct _cl_context *cl_context
+ typedef struct _cl_event *cl_event
+EOT
+
+# Filter out EXT functions from GL_ARB_gpu_shader_fp64
+ grep -v 'EXT ' $1/GL_ARB_gpu_shader_fp64 > tmp
+ mv tmp $1/GL_ARB_gpu_shader_fp64
+
+# add missing functions to GL_EXT_direct_state_access (GL_ARB_gpu_shader_fp64 related)
+ cat >> $1/GL_EXT_direct_state_access <<EOT
+ void glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x)
+ void glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y)
+ void glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z)
+ void glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
+ void glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
+ void glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
+ void glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
+ void glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+ void glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
+EOT
+
+# add missing functions to GL_EXT_direct_state_access (GL_ARB_instanced_arrays related)
+# https://sourceforge.net/p/glew/bugs/242/
+ cat >> $1/GL_EXT_direct_state_access <<EOT
+ void glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor)
+EOT
+
+# Filter out GL_UNSIGNED_INT and GL_FLOAT from GL_AMD_performance_monitor
+ grep -v 'GL_UNSIGNED_INT ' $1/GL_AMD_performance_monitor > tmp
+ mv tmp $1/GL_AMD_performance_monitor
+ grep -v 'GL_FLOAT ' $1/GL_AMD_performance_monitor > tmp
+ mv tmp $1/GL_AMD_performance_monitor
+
+# Filter out GL_STORAGE_CACHED_APPLE and GL_STORAGE_SHARED_APPLE from GL_APPLE_texture_range
+ grep -v 'GL_STORAGE_CACHED_APPLE ' $1/GL_APPLE_texture_range > tmp
+ mv tmp $1/GL_APPLE_texture_range
+ grep -v 'GL_STORAGE_SHARED_APPLE ' $1/GL_APPLE_texture_range > tmp
+ mv tmp $1/GL_APPLE_texture_range
+
+# Filter out GL_RED from GL_ARB_texture_rg
+ grep -v 'GL_RED ' $1/GL_ARB_texture_rg > tmp
+ mv tmp $1/GL_ARB_texture_rg
+
+# Filter out _EXT enums from GL_ARB_texture_storage
+ grep -v '_EXT ' $1/GL_ARB_texture_storage > tmp
+ mv tmp $1/GL_ARB_texture_storage
+
+# Filter out TEXTURE_3D enums from GL_EXT_paletted_texture
+ grep -v 'TEXTURE_3D' $1/GL_EXT_paletted_texture > tmp
+ mv tmp $1/GL_EXT_paletted_texture
+
+# Filter out GL_VERSION_1_1 enums from GL_AMD_stencil_operation_extended
+ grep -v '0x150' $1/GL_AMD_stencil_operation_extended > tmp
+ mv tmp $1/GL_AMD_stencil_operation_extended
+
+# Filter out from GL_APPLE_ycbcr_422
+ grep -v 'GL_UNSIGNED_SHORT_8_8_APPLE' $1/GL_APPLE_ycbcr_422 > tmp
+ mv tmp $1/GL_APPLE_ycbcr_422
+ grep -v 'GL_UNSIGNED_SHORT_8_8_REV_APPLE' $1/GL_APPLE_ycbcr_422 > tmp
+ mv tmp $1/GL_APPLE_ycbcr_422
+
+# Filter out GL_FRAGMENT_DEPTH_EXT from GL_EXT_light_texture
+ grep -v 'GL_FRAGMENT_DEPTH_EXT' $1/GL_EXT_light_texture > tmp
+ mv tmp $1/GL_EXT_light_texture
+
+# Filter out GL_MULTISAMPLE_BIT_EXT from GL_SGIS_multisample
+ grep -v 'GL_MULTISAMPLE_BIT_EXT' $1/GL_SGIS_multisample > tmp
+ mv tmp $1/GL_SGIS_multisample
+
+# Filter out GL_COMPRESSED_RGB_S3TC_DXT1_EXT from GL_EXT_texture_compression_dxt1
+ grep -v 'GL_COMPRESSED_RGB_S3TC_DXT1_EXT' $1/GL_EXT_texture_compression_dxt1 > tmp
+ mv tmp $1/GL_EXT_texture_compression_dxt1
+
+# Filter out GL_COMPRESSED_RGBA_S3TC_DXT1_EXT from GL_EXT_texture_compression_dxt1
+ grep -v 'GL_COMPRESSED_RGBA_S3TC_DXT1_EXT' $1/GL_EXT_texture_compression_dxt1 > tmp
+ mv tmp $1/GL_EXT_texture_compression_dxt1
+
+# Append GLfixed to GL_ARB_ES2_compatibility
+# Probably ought to be explicitly mentioned in the spec language
+
+ cat >> $1/GL_ARB_ES2_compatibility <<EOT
+ typedef int GLfixed
+EOT
+
+# Append GLclampx to GL_REGAL_ES1_0_compatibility
+# Probably ought to be explicitly mentioned in the spec language
+
+ cat >> $1/GL_REGAL_ES1_0_compatibility <<EOT
+ typedef int GLclampx
+EOT
+
+# Append GLLOGPROCREGAL to GL_REGAL_log
+# Probably ought to be explicitly mentioned in the spec language
+
+ cat >> $1/GL_REGAL_log <<EOT
+ typedef void (APIENTRY *LOGPROCREGAL)(GLenum stream, GLsizei length, const GLchar *message, void *context)
+EOT
+
+# Fixup LOGPROCREGAL -> GLLOGPROCREGAL
+ perl -e 's/LOGPROCREGAL/GLLOGPROCREGAL/g' -pi $1/GL_REGAL_log
+
+# Filter out GL_BYTE from GL_OES_byte_coordinates
+ grep -v 'GL_BYTE' $1/GL_OES_byte_coordinates > tmp
+ mv tmp $1/GL_OES_byte_coordinates
+
+# Filter out fp64 (not widely supported) from GL_EXT_direct_state_access
+ egrep -v 'glProgramUniform.*[1234]d[v]?EXT' $1/GL_EXT_direct_state_access > tmp
+ mv tmp $1/GL_EXT_direct_state_access
+
+# Filter out all enums from GL_ANGLE_depth_texture
+ grep -v '0x' $1/GL_ANGLE_depth_texture > tmp
+ mv tmp $1/GL_ANGLE_depth_texture
+
+# Filter out GL_NONE enum from GL_ANGLE_depth_texture
+ grep -v 'GL_NONE' $1/GL_ANGLE_texture_usage > tmp
+ mv tmp $1/GL_ANGLE_texture_usage
+
+# Fixup REGAL and ANGLE urls
+
+ for i in $1/GL_REGAL_*; do perl -e 's#http://www.opengl.org/registry/specs/REGAL/.*#https://github.com/p3/regal/tree/master/doc/extensions#g' -pi $i; done
+ for i in $1/GL_ANGLE_*; do perl -e 's#http://www.opengl.org/registry/specs/ANGLE/.*#https://code.google.com/p/angleproject/source/browse/\#git%2Fextensions#g' -pi $i; done
+
+# Filter out GL_NV_blend_equation_advanced_coherent enums and functions
+ head -n4 $1/GL_NV_blend_equation_advanced_coherent > tmp
+ mv tmp $1/GL_NV_blend_equation_advanced_coherent
+
+# Filter out GL_AMD_gpu_shader_int64 enums and functions
+ head -n4 $1/GL_AMD_gpu_shader_int64 > tmp
+ mv tmp $1/GL_AMD_gpu_shader_int64
+
+# Filter out GL_NO_ERROR enum and glGetGraphicsResetStatus from GL_KHR_robustness
+ grep -v 'GL_NO_ERROR' $1/GL_KHR_robustness |
+ grep -v 'glGetGraphicsResetStatus' > tmp
+ mv tmp $1/GL_KHR_robustness
+
+# Filter out all enums from GL_KHR_blend_equation_advanced_coherent
+ grep -v '0x' $1/GL_KHR_blend_equation_advanced_coherent > tmp
+ mv tmp $1/GL_KHR_blend_equation_advanced_coherent
+
+# Filter out glBlendBarrierKHR enum from GL_KHR_blend_equation_advanced_coherent
+ grep -v 'glBlendBarrierKHR' $1/GL_KHR_blend_equation_advanced_coherent > tmp
+ mv tmp $1/GL_KHR_blend_equation_advanced_coherent
+
+# Filter out GL_NONE enum from GL_KHR_context_flush_control
+ grep -v 'GL_NONE' $1/GL_KHR_context_flush_control > tmp
+ mv tmp $1/GL_KHR_context_flush_control
+
+# Filter out CoverageModulation from NV_framebuffer_mixed_samples
+# Superset of EXT_raster_multisample
+
+ grep -v "CoverageModulation" $1/GL_NV_framebuffer_mixed_samples > tmp
+ mv tmp $1/GL_NV_framebuffer_mixed_samples
+
+# Filter out glRasterSamplesEXT from NV_framebuffer_mixed_samples
+# Superset of EXT_raster_multisample
+
+ grep -v "RasterSamplesEXT" $1/GL_NV_framebuffer_mixed_samples > tmp
+ mv tmp $1/GL_NV_framebuffer_mixed_samples
+
+# Filter out glNamedBufferStorageEXT from GL_ARB_buffer_storage
+
+ grep -v "glNamedBufferStorageEXT" $1/GL_ARB_buffer_storage > tmp
+ mv tmp $1/GL_ARB_buffer_storage
+
+# Filter out glFramebufferTextureEXT from GL_EXT_geometry_point_size
+# and GL_EXT_geometry_shader
+
+ grep -v "glFramebufferTextureEXT" $1/GL_EXT_geometry_point_size > tmp
+ mv tmp $1/GL_EXT_geometry_point_size
+
+ grep -v "glFramebufferTextureEXT" $1/GL_EXT_geometry_shader > tmp
+ mv tmp $1/GL_EXT_geometry_shader
+
+# Filter out glBindFragDataLocationEXT from GL_EXT_blend_func_extended
+
+ grep -v "glBindFragDataLocationEXT" $1/GL_EXT_blend_func_extended > tmp
+ mv tmp $1/GL_EXT_blend_func_extended
+
+# Filter out glDrawArraysInstancedEXT and glDrawElementsInstancedEXT from GL_EXT_blend_func_extended
+
+ grep -v "glDrawArraysInstancedEXT" $1/GL_EXT_instanced_arrays > tmp
+ mv tmp $1/GL_EXT_instanced_arrays
+
+ grep -v "glDrawElementsInstancedEXT" $1/GL_EXT_instanced_arrays > tmp
+ mv tmp $1/GL_EXT_instanced_arrays
+
+# Filter out glRenderbufferStorageMultisampleEXT from GL_EXT_multisampled_render_to_texture
+
+ grep -v "glRenderbufferStorageMultisampleEXT" $1/GL_EXT_multisampled_render_to_texture > tmp
+ mv tmp $1/GL_EXT_multisampled_render_to_texture
+
+# Filter out glTexturePageCommitmentEXT from GL_ARB_sparse_texture
+
+ grep -v "glTexturePageCommitmentEXT" $1/GL_ARB_sparse_texture > tmp
+ mv tmp $1/GL_ARB_sparse_texture
+
+# Filter out TextureStorage* from GL_ARB_texture_storage
+
+ grep -v "TextureStorage" $1/GL_ARB_texture_storage > tmp
+ mv tmp $1/GL_ARB_texture_storage
+
+# Filter out functions from GL_EXT_occlusion_query_boolean
+
+ grep -v "(" $1/GL_EXT_occlusion_query_boolean > tmp
+ mv tmp $1/GL_EXT_occlusion_query_boolean
+
+# Filter out duplicate enums from GL_EXT_protected_textures
+
+ cat $1/GL_EXT_protected_textures | grep -v GL_TRUE | grep -v GL_FALSE > tmp
+ mv tmp $1/GL_EXT_protected_textures
+
+# Filter out duplicate enums from GL_EXT_robustness
+
+ cat $1/GL_EXT_robustness | grep -v GL_NO_ERROR > tmp
+ mv tmp $1/GL_EXT_robustness
+
+# Filter GL_EXT_shader_framebuffer_fetch_non_coherent
+
+ grep -v "FramebufferFetchBarrierEXT" $1/GL_EXT_shader_framebuffer_fetch_non_coherent > tmp
+ mv tmp $1/GL_EXT_shader_framebuffer_fetch_non_coherent
+
+# Filter GL_EXT_tessellation_shader
+
+ grep -v "PatchParameteriEXT" $1/GL_EXT_tessellation_shader > tmp
+ mv tmp $1/GL_EXT_tessellation_shader
+
+# Filter GL_EXT_texture_buffer
+
+ grep -v "TexBuffer" $1/GL_EXT_texture_buffer > tmp
+ mv tmp $1/GL_EXT_texture_buffer
+
+# Filter GL_EXT_texture_border_clamp
+
+ grep -v "TexParameter" $1/GL_EXT_texture_border_clamp > tmp
+ mv tmp $1/GL_EXT_texture_border_clamp
+
+# Filter GL_EXT_disjoint_timer_query
+
+ cat $1/GL_EXT_disjoint_timer_query | grep -v GetQueryObjecti64v | grep -v GetQueryObjectui64v > tmp
+ mv tmp $1/GL_EXT_disjoint_timer_query
+
+# Filter GL_NV_read_buffer_front
+
+ grep -v "ReadBufferNV" $1/GL_NV_read_buffer_front > tmp
+ mv tmp $1/GL_NV_read_buffer_front
+
+# Append GLVULKANPROCNV to GL_NV_draw_vulkan_image
+# Probably ought to be explicitly mentioned in the spec language
+
+ cat >> $1/GL_NV_draw_vulkan_image <<EOT
+ typedef void (APIENTRY *GLVULKANPROCNV)(void)
+EOT
+
+# GLU extensions are not relevant here
+ rm -f $1/GL_GLU_*
+
+# Not complete
+ rm -f $1/GL_SGIX_color_type
+
+# clean up
+ rm -f patterns $1/*.bak
diff --git a/glew/auto/bin/filter_gles_ext.sh b/glew/auto/bin/filter_gles_ext.sh
new file mode 100644
index 0000000..c562061
--- /dev/null
+++ b/glew/auto/bin/filter_gles_ext.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+##
+## Parameters:
+##
+## $1: Extensions directory
+## $2: Registry directory
+## $3: The black list
+
+set -e
+
+# clean up
+ rm -f $1/*.bak
diff --git a/glew/auto/bin/filter_spec.py b/glew/auto/bin/filter_spec.py
new file mode 100644
index 0000000..16c2fa9
--- /dev/null
+++ b/glew/auto/bin/filter_spec.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+
+import re
+
+section = re.compile('^(Name|Name Strings?|Contact|Notice|Number|Dependencies|Overview|Issues|IP Status|Status|Version|New Procedures and Functions|New Tokens|Additions to .*|Changes to .*|Modifications to .*|Add new Section .*)\s*$')
+token = re.compile('^\s+(([A-Z0-9][A-Z0-9_x]*):?\s+((?:0x)?[0-9A-F]+)([^\?]*))?\s*$')
+match = [ 'Name', 'Name String', 'Contact', 'Notice', 'Name Strings', 'Version', 'Number', 'Dependencies', 'New Procedures and Functions', 'New Tokens']
+
+if __name__ == '__main__':
+
+ from optparse import OptionParser
+ import os
+
+ parser = OptionParser('usage: %prog [options] [SOURCES...]')
+ (options, args) = parser.parse_args()
+
+ for i in args:
+ lines = open(i).readlines()
+ f = open(i,'w')
+
+ # Keep track of the current section as we iterate over the input
+ current = ''
+ for j in lines:
+
+ # Detect the start of a new section
+ m = section.match(j)
+ if m:
+ current = m.group(1).strip()
+ if current in match:
+ print >>f, j,
+ continue
+
+ if current=='New Tokens':
+ if token.match(j):
+ print >>f, j,
+ elif current in match:
+ print >>f, j,
+
diff --git a/glew/auto/bin/make.pl b/glew/auto/bin/make.pl
new file mode 100644
index 0000000..e0b32ef
--- /dev/null
+++ b/glew/auto/bin/make.pl
@@ -0,0 +1,224 @@
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+my %regex = (
+ extname => qr/^[A-Z][A-Za-z0-9_]+$/,
+ exturl => qr/^http.+$/,
+ function => qr/^(.+) ([a-z][a-z0-9_]*) \((.*)\)$/i,
+ token => qr/^([A-Z][A-Z0-9_x]*)\s+((?:0x)?[0-9A-Fa-f]+(u(ll)?)?|[A-Z][A-Z0-9_]*)$/,
+ type => qr/^typedef\s+(.+)$/,
+ exact => qr/.*;$/,
+);
+
+# prefix function name with glew
+sub prefixname($)
+{
+ my $name = $_[0];
+ $name =~ s/^(.*?)gl/__$1glew/;
+ return $name;
+}
+
+# prefix function name with glew
+sub prefix_varname($)
+{
+ my $name = $_[0];
+ $name =~ s/^(.*?)GL(X*?)EW/__$1GL$2EW/;
+ return $name;
+}
+
+#---------------------------------------------------------------------------------------
+
+sub make_exact($)
+{
+ my $exact = $_[0];
+ $exact =~ s/(; |{)/$1\n/g;
+ return $exact;
+}
+
+sub make_separator($)
+{
+ my $extname = $_[0];
+ my $l = length $extname;
+ my $s = (71 - $l)/2;
+ print "/* ";
+ my $j = 3;
+ for (my $i = 0; $i < $s; $i++)
+ {
+ print "-";
+ $j++;
+ }
+ print " $_[0] ";
+ $j += $l + 2;
+ while ($j < 76)
+ {
+ print "-";
+ $j++;
+ }
+ print " */\n\n";
+}
+
+#---------------------------------------------------------------------------------------
+
+sub parse_ext($)
+{
+ my $filename = shift;
+ my %functions = ();
+ my %tokens = ();
+ my @reuse = (); # Extensions to reuse
+ my @types = ();
+ my @exacts = ();
+ my $extname = ""; # Full extension name GL_FOO_extension
+ my $exturl = ""; # Info URL
+ my $extstring = ""; # Relevant extension string
+
+ open EXT, "<$filename" or return;
+
+ # As of GLEW 1.14.0 the first four lines _must_ be
+ # the extension name, the URL and the GL extension
+ # string (which might be different to the name),
+ # and the reused extensions
+ #
+ # For example GL_NV_geometry_program4 is available
+ # iff GL_NV_gpu_program4 appears in the extension
+ # string.
+ #
+ # For core OpenGL versions, the third line should
+ # be blank.
+ #
+ # If the URL is unknown, the second line should be
+ # blank.
+
+ $extname = readline(*EXT);
+ $exturl = readline(*EXT);
+ $extstring = readline(*EXT);
+ @reuse = split(" ", readline(*EXT));
+
+ chomp($extname);
+ chomp($exturl);
+ chomp($extstring);
+
+ while(<EXT>)
+ {
+ chomp;
+ if (s/^\s+//)
+ {
+ if (/$regex{exact}/)
+ {
+ push @exacts, $_;
+ }
+ elsif (/$regex{type}/)
+ {
+ push @types, $_;
+ }
+ elsif (/$regex{token}/)
+ {
+ my ($name, $value) = ($1, $2);
+ $tokens{$name} = $value;
+ }
+ elsif (/$regex{function}/)
+ {
+ my ($return, $name, $parms) = ($1, $2, $3);
+ $functions{$name} = {
+ rtype => $return,
+ parms => $parms,
+ };
+ } else {
+ print STDERR "'$_' matched no regex.\n";
+ }
+ }
+ }
+
+ close EXT;
+
+ return ($extname, $exturl, $extstring, \@reuse, \@types, \%tokens, \%functions, \@exacts);
+}
+
+sub output_tokens($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (keys %{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_, $tbl->{$_}) } sort {
+ if (${$tbl}{$a} eq ${$tbl}{$b}) {
+ $a cmp $b
+ } else {
+ if (${$tbl}{$a} =~ /_/) {
+ if (${$tbl}{$b} =~ /_/) {
+ $a cmp $b
+ } else {
+ -1
+ }
+ } else {
+ if (${$tbl}{$b} =~ /_/) {
+ 1
+ } else {
+ if (hex ${$tbl}{$a} eq hex ${$tbl}{$b}) {
+ $a cmp $b
+ } else {
+ hex ${$tbl}{$a} <=> hex ${$tbl}{$b}
+ }
+ }
+ }
+ }
+ } keys %{$tbl};
+ print "\n";
+ } else {
+ print STDERR "no keys in table!\n";
+ }
+}
+
+sub output_types($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (scalar @{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_) } sort @{$tbl};
+ print "\n";
+ }
+}
+
+sub output_decls($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (keys %{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_, $tbl->{$_}) } sort keys %{$tbl};
+ print "\n";
+ }
+}
+
+sub output_exacts($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (scalar @{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_) } sort @{$tbl};
+ print "\n";
+ }
+}
+
+sub output_reuse($$)
+{
+ my ($tbl, $fnc) = @_;
+ if (scalar @{$tbl})
+ {
+ local $, = "\n";
+ print "\n";
+ print map { &{$fnc}($_) } sort @{$tbl};
+ print "\n";
+ }
+}
diff --git a/glew/auto/bin/make_def_fun.pl b/glew/auto/bin/make_def_fun.pl
new file mode 100644
index 0000000..af74706
--- /dev/null
+++ b/glew/auto/bin/make_def_fun.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+# function pointer declaration
+sub make_pfn_decl($%)
+{
+ return "PFN" . (uc $_[0]) . "PROC " . prefixname($_[0]) . " = NULL;";
+}
+
+my @extlist = ();
+my %extensions = ();
+
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ output_decls($functions, \&make_pfn_decl);
+ }
+}
diff --git a/glew/auto/bin/make_def_var.pl b/glew/auto/bin/make_def_var.pl
new file mode 100644
index 0000000..993a68c
--- /dev/null
+++ b/glew/auto/bin/make_def_var.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+my @extlist = ();
+my %extensions = ();
+
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+ print "GLboolean " . prefix_varname($extvar) . " = GL_FALSE;\n";
+ }
+}
diff --git a/glew/auto/bin/make_enable_index.pl b/glew/auto/bin/make_enable_index.pl
new file mode 100644
index 0000000..bdbe7d1
--- /dev/null
+++ b/glew/auto/bin/make_enable_index.pl
@@ -0,0 +1,48 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+use File::Basename;
+
+use lib '.';
+do 'bin/make.pl';
+
+##
+## Make Extension-enabled Index
+##
+
+my @extlist = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ print "/* Detected in the extension string or strings */\n";
+ print "static GLboolean _glewExtensionString[" . scalar @extlist . "];\n";
+
+ print "/* Detected via extension string or experimental mode */\n";
+ print "static GLboolean* _glewExtensionEnabled[] = {\n";;
+
+ foreach my $ext (sort { basename($a) cmp basename($b) } @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) =
+ parse_ext($ext);
+
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+
+ print "#ifdef $extname\n";
+ print " &__$extvar,\n";
+ print "#endif\n";
+ }
+
+ print " NULL\n};\n\n";
+}
diff --git a/glew/auto/bin/make_header.pl b/glew/auto/bin/make_header.pl
new file mode 100644
index 0000000..9917db1
--- /dev/null
+++ b/glew/auto/bin/make_header.pl
@@ -0,0 +1,73 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+# token
+sub make_define($$)
+{
+ return "#define $_[0] $_[1]"
+}
+
+# type declaration
+sub make_type($$)
+{
+ return "@_;"
+}
+
+# function pointer type declaration
+sub make_pfn_type($%)
+{
+ our $api;
+ return join(' ', "typedef", $_[1]->{rtype},
+ "($api * PFN" . (uc $_[0]) . "PROC)",
+ "(" . $_[1]->{parms} . ")") . ";";
+}
+
+# function name alias
+sub make_pfn_alias($%)
+{
+ our $type;
+ return join(" ", "#define", $_[0], $type . "EW_GET_FUN(" . prefixname($_[0]) . ")")
+}
+
+my @extlist = ();
+my %extensions = ();
+
+our $api = shift;
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+
+ make_separator($extname);
+ print "#ifndef $extname\n#define $extname 1\n";
+ output_tokens($tokens, \&make_define);
+ output_types($types, \&make_type);
+ output_exacts($exacts, \&make_exact);
+ output_decls($functions, \&make_pfn_type);
+ output_decls($functions, \&make_pfn_alias);
+
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+
+ print "\n#define $extvar " . $type . "EW_GET_VAR(" . prefix_varname($extvar) . ")\n";
+ print "\n#endif /* $extname */\n\n";
+ }
+}
diff --git a/glew/auto/bin/make_html.pl b/glew/auto/bin/make_html.pl
new file mode 100644
index 0000000..be97003
--- /dev/null
+++ b/glew/auto/bin/make_html.pl
@@ -0,0 +1,57 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+my $group = "";
+my $cur_group = "";
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+ my $n = 1;
+ print "<table border=\"0\" width=\"100%\" cellpadding=\"1\" cellspacing=\"0\" align=\"center\">\n";
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ $cur_group = $extname;
+ $cur_group =~ s/^(?:W?)GL(?:X?)_([A-Z0-9]+?)_.*$/$1/;
+ $extname =~ s/^(?:W?)GL(?:X?)_(.*)$/$1/;
+ if ($cur_group ne $group)
+ {
+ if ($group ne "")
+ {
+ print "<tr><td><br></td><td></td><td></td></tr>\n";
+ }
+ $group = $cur_group;
+ }
+
+ {
+ if ($exturl)
+ {
+ print "<tr><td class=\"num\">$n</td><td>&nbsp;</td><td><a href=\"$exturl\">$extname</a></td></tr>\n";
+ }
+ else
+ {
+ print "<tr><td class=\"num\">$n</td><td>&nbsp;</td><td>$extname</td></tr>\n";
+ }
+ $n++;
+ }
+ }
+ print "</table>\n"
+}
diff --git a/glew/auto/bin/make_index.pl b/glew/auto/bin/make_index.pl
new file mode 100644
index 0000000..cf247f8
--- /dev/null
+++ b/glew/auto/bin/make_index.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+use File::Basename;
+
+use lib '.';
+do 'bin/make.pl';
+
+##
+## Make Index
+##
+## Output sorted array of extension strings for indexing into extension
+## enable/disable flags. This provides a way to convert an extension string
+## into an integer index.
+##
+
+my @extlist = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort { basename($a) cmp basename($b) } @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) =
+ parse_ext($ext);
+
+ print "#ifdef $extname\n";
+ print " \"$extname\",\n";
+ print "#endif\n";
+ }
+}
diff --git a/glew/auto/bin/make_info.pl b/glew/auto/bin/make_info.pl
new file mode 100644
index 0000000..3dcece9
--- /dev/null
+++ b/glew/auto/bin/make_info.pl
@@ -0,0 +1,71 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+
+# function pointer definition
+sub make_pfn_info($%)
+{
+ my $name = $_[0];
+ return " glewInfoFunc(fi, \"$_[0]\", $name == NULL);";
+}
+
+#---------------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+ my $extpre = $extname;
+ $extpre =~ s/(GLX|GLW|GL).*/$1/;
+ $extpre = lc $extpre;
+
+ #make_separator($extname);
+ print "#ifdef $extname\n\n";
+ print "static void _glewInfo_$extname (void)\n{\n";
+
+ if (! %$functions)
+ {
+ print " ";
+ }
+ else
+ {
+ print " GLboolean fi = ";
+ }
+
+ if ($extvar =~ /VERSION/)
+ {
+ print "glewPrintExt(\"$extname\", $extvar, $extvar, $extvar);\n";
+ }
+ else
+ {
+ print "glewPrintExt(\"$extname\", $extvar, $extpre" .
+ "ewIsSupported(\"$extname\"), $extpre" .
+ "ewGetExtension(\"$extstring\"));\n";
+ }
+ output_decls($functions, \&make_pfn_info);
+ print "}\n\n";
+ print "#endif /* $extname */\n\n";
+ }
+}
diff --git a/glew/auto/bin/make_info_list.pl b/glew/auto/bin/make_info_list.pl
new file mode 100644
index 0000000..74dbb77
--- /dev/null
+++ b/glew/auto/bin/make_info_list.pl
@@ -0,0 +1,49 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+
+# function pointer definition
+sub make_pfn_def($%)
+{
+ return "PFN" . (uc $_[0]) . "PROC " . prefixname($_[0]) . " = NULL;";
+}
+
+# function pointer definition
+sub make_init_call($%)
+{
+ my $name = prefixname($_[0]);
+ return " r = r || (" . $name . " = (PFN" . (uc $_[0]) . "PROC)glewGetProcAddress((const GLubyte*)\"" . $name . "\")) == NULL;";
+}
+
+#---------------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+
+ print "#ifdef $extname\n";
+ print " _glewInfo_$extname();\n";
+ print "#endif /* $extname */\n";
+ }
+}
diff --git a/glew/auto/bin/make_init.pl b/glew/auto/bin/make_init.pl
new file mode 100644
index 0000000..37922ee
--- /dev/null
+++ b/glew/auto/bin/make_init.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#-------------------------------------------------------------------------------
+
+# function pointer definition
+sub make_pfn_def_init($%)
+{
+ #my $name = prefixname($_[0]);
+ return " r = ((" . $_[0] . " = (PFN" . (uc $_[0]) . "PROC)glewGetProcAddress((const GLubyte*)\"" . $_[0] . "\")) == NULL) || r;";
+}
+
+sub make_reuse_call($%)
+{
+ return " r = _glewInit_" . $_[0] . "() || r;";
+}
+
+#-------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) =
+ parse_ext($ext);
+
+ #make_separator($extname);
+ my $extvar = $extname;
+ my $extvardef = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+ if (keys %$functions or keys @$reuse)
+ {
+ print "#ifdef $extname\n\n";
+ print "static GLboolean _glewInit_$extname ()\n{\n GLboolean r = GL_FALSE;\n";
+ output_reuse($reuse, \&make_reuse_call);
+ output_decls($functions, \&make_pfn_def_init);
+ print "\n return r;\n}\n\n";
+ print "#endif /* $extname */\n\n";
+ }
+ }
+}
diff --git a/glew/auto/bin/make_initd.pl b/glew/auto/bin/make_initd.pl
new file mode 100644
index 0000000..2f7e2e6
--- /dev/null
+++ b/glew/auto/bin/make_initd.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+## Output declarations for the _glewInit_[extension] functions defined
+## by make_init.pl script. These are necessary for for initializers to
+## call each other, such as a core GL 3 context that depends on certain
+## extensions.
+
+#-------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+our $type = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) =
+ parse_ext($ext);
+
+ #print "#ifdef $extname\n\n";
+ if (keys %$functions)
+ {
+ print "static GLboolean _glewInit_$extname ();\n";
+ }
+ #print "#endif /* $extname */\n\n";
+ }
+}
diff --git a/glew/auto/bin/make_list.pl b/glew/auto/bin/make_list.pl
new file mode 100644
index 0000000..38aebcd
--- /dev/null
+++ b/glew/auto/bin/make_list.pl
@@ -0,0 +1,75 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+
+# function pointer definition
+sub make_init_call($%)
+{
+ my $name = prefixname($_[0]);
+ return " r = r || (" . $_[0] . " = (PFN" . (uc $_[0]) . "PROC)glewGetProcAddress(\"" . $name . "\")) == NULL;";
+}
+
+#---------------------------------------------------------------------------------------
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+
+ my $extpre = $extname;
+ $extpre =~ s/^(W?E?)GL(X?).*$/\l$1gl\l$2ew/;
+
+ #my $pextvar = prefix_varname($extvar);
+
+ if (length($extstring) && $extstring !~ /^GL_/ || keys %$functions)
+ {
+ print "#ifdef $extname\n";
+ }
+
+ if (length($extstring) && $extstring !~ /^GL_/)
+ {
+ print " " . $extvar . " = _glewSearchExtension(\"$extstring\", extStart, extEnd);\n";
+ }
+
+ if (keys %$functions)
+ {
+ if ($extname =~ /WGL_.*/)
+ {
+ print " if (glewExperimental || " . $extvar . "|| crippled) " . $extvar . "= !_glewInit_$extname();\n";
+ }
+ else
+ {
+ print " if (glewExperimental || " . $extvar . ") " . $extvar . " = !_glewInit_$extname();\n";
+ }
+ }
+
+ if (length($extstring) && $extstring !~ /^GL_/ || keys %$functions)
+ {
+ print "#endif /* $extname */\n";
+ }
+ }
+
+}
diff --git a/glew/auto/bin/make_list2.pl b/glew/auto/bin/make_list2.pl
new file mode 100644
index 0000000..3ded727
--- /dev/null
+++ b/glew/auto/bin/make_list2.pl
@@ -0,0 +1,46 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+#---------------------------------------------------------------------------------------
+# Extensions that depend on others can be enabled once we know
+# if the one it depends on, is enabled.
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+
+ if ($extname ne $extstring && length($extstring))
+ {
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+
+ my $parent = $extstring;
+ $parent =~ s/GL(X*)_/GL$1EW_/;
+
+ print "#ifdef $extname\n";
+ print " $extvar = $parent;\n";
+ print "#endif /* $extname */\n";
+ }
+ }
+
+}
diff --git a/glew/auto/bin/make_str.pl b/glew/auto/bin/make_str.pl
new file mode 100644
index 0000000..a6d7709
--- /dev/null
+++ b/glew/auto/bin/make_str.pl
@@ -0,0 +1,55 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+my @extlist = ();
+my %extensions = ();
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ my $curexttype = "";
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ my $exttype = $extname;
+ $exttype =~ s/(W?E?)GL(X?)_(.*?_)(.*)/$3/;
+ my $extrem = $extname;
+ $extrem =~ s/(W?E?)GL(X?)_(.*?_)(.*)/$4/;
+ my $extvar = $extname;
+ $extvar =~ s/(W?E?)GL(X?)_/$1GL$2EW_/;
+ if(!($exttype =~ $curexttype))
+ {
+ if(length($curexttype) > 0)
+ {
+ print " }\n";
+ }
+ print " if (_glewStrSame2(&pos, &len, (const GLubyte*)\"$exttype\", " . length($exttype) . "))\n";
+ print " {\n";
+ $curexttype = $exttype;
+ }
+ print "#ifdef $extname\n";
+ print " if (_glewStrSame3(&pos, &len, (const GLubyte*)\"$extrem\", ". length($extrem) . "))\n";
+ #print " return $extvar;\n";
+ print " {\n";
+ print " ret = $extvar;\n";
+ print " continue;\n";
+ print " }\n";
+ print "#endif\n";
+ }
+
+ print " }\n";
+}
diff --git a/glew/auto/bin/make_struct_fun.pl b/glew/auto/bin/make_struct_fun.pl
new file mode 100644
index 0000000..cc9eef5
--- /dev/null
+++ b/glew/auto/bin/make_struct_fun.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+# function pointer declaration
+sub make_pfn_decl($%)
+{
+ our $export;
+ return $export . " PFN" . (uc $_[0]) . "PROC " . prefixname($_[0]) . ";";
+}
+
+my @extlist = ();
+my %extensions = ();
+
+our $export = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ output_decls($functions, \&make_pfn_decl);
+ }
+}
diff --git a/glew/auto/bin/make_struct_var.pl b/glew/auto/bin/make_struct_var.pl
new file mode 100644
index 0000000..ab8b8b5
--- /dev/null
+++ b/glew/auto/bin/make_struct_var.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+use lib '.';
+do 'bin/make.pl';
+
+my @extlist = ();
+my %extensions = ();
+
+our $export = shift;
+
+if (@ARGV)
+{
+ @extlist = @ARGV;
+
+ foreach my $ext (sort @extlist)
+ {
+ my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
+ my $extvar = $extname;
+ $extvar =~ s/GL(X*)_/GL$1EW_/;
+ print $export . " GLboolean " . prefix_varname($extvar) . ";\n";
+ }
+}
diff --git a/glew/auto/bin/parse_spec.pl b/glew/auto/bin/parse_spec.pl
new file mode 100644
index 0000000..5e12f60
--- /dev/null
+++ b/glew/auto/bin/parse_spec.pl
@@ -0,0 +1,410 @@
+#!/usr/bin/env perl
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+
+use strict;
+use warnings;
+
+sub compile_regex
+{
+ my $regex = join('', @_);
+ return qr/$regex/
+}
+
+my @sections = (
+ "Name",
+ "Name Strings?",
+ "New Procedures and Functions",
+ "New Tokens.*", # Optional (GL/WGL/GLX/...) suffix
+ "Additions to Chapter.*",
+);
+
+my %typemap = (
+ bitfield => "GLbitfield",
+ boolean => "GLboolean",
+ # fsck up in EXT_vertex_array
+ Boolean => "GLboolean",
+ byte => "GLbyte",
+ clampd => "GLclampd",
+ clampf => "GLclampf",
+ double => "GLdouble",
+ enum => "GLenum",
+ # Intel fsck up
+ Glenum => "GLenum",
+ float => "GLfloat",
+ half => "GLhalf",
+ int => "GLint",
+ short => "GLshort",
+ sizei => "GLsizei",
+ ubyte => "GLubyte",
+ uint => "GLuint",
+ ushort => "GLushort",
+ DMbuffer => "void *",
+ # Nvidia video output fsck up
+ int64EXT => "GLint64EXT",
+ uint64EXT=> "GLuint64EXT",
+
+ # ARB VBO introduces these.
+
+ sizeiptr => "GLsizeiptr",
+ intptr => "GLintptr",
+ sizeiptrARB => "GLsizeiptrARB",
+ intptrARB => "GLintptrARB",
+
+ # ARB shader objects introduces these, charARB is at least 8 bits,
+ # handleARB is at least 32 bits
+ charARB => "GLcharARB",
+ handleARB => "GLhandleARB",
+
+ char => "GLchar",
+
+ # OpenGL 3.2 and GL_ARB_sync
+
+ int64 => "GLint64",
+ uint64 => "GLuint64",
+ sync => "GLsync",
+
+ # GL_EXT_EGL_image_storage
+
+ eglImageOES => "GLeglImageOES",
+
+ # AMD_debug_output
+
+ DEBUGPROCAMD => "GLDEBUGPROCAMD",
+
+ # ARB_debug_output
+
+ DEBUGPROCARB => "GLDEBUGPROCARB",
+
+ # KHR_debug
+
+ DEBUGPROC => "GLDEBUGPROC",
+
+ VULKANPROCNV => "GLVULKANPROCNV",
+
+ vdpauSurfaceNV => "GLvdpauSurfaceNV",
+
+ # GLX 1.3 defines new types which might not be available at compile time
+
+ #GLXFBConfig => "void*",
+ #GLXFBConfigID => "XID",
+ #GLXContextID => "XID",
+ #GLXWindow => "XID",
+ #GLXPbuffer => "XID",
+
+ # Weird stuff to some SGIX extension
+
+ #GLXFBConfigSGIX => "void*",
+ #GLXFBConfigIDSGIX => "XID",
+
+);
+
+my %voidtypemap = (
+ void => "GLvoid",
+);
+
+my %taboo_tokens = (
+ GL_ZERO => 1,
+);
+
+# list of function definitions to be ignored, unless they are being defined in
+# the given spec. This is an ugly hack around the fact that people writing
+# spec files seem to shut down all brain activity while they are at this task.
+#
+# This will be moved to its own file eventually.
+#
+# (mem, 2003-03-19)
+
+my %fnc_ignore_list = (
+ "BindProgramARB" => "ARB_vertex_program",
+ "ColorSubTableEXT" => "EXT_color_subtable",
+ "DeleteProgramsARB" => "ARB_vertex_program",
+ "GenProgramsARB" => "ARB_vertex_program",
+ "GetProgramEnvParameterdvARB" => "ARB_vertex_program",
+ "GetProgramEnvParameterfvARB" => "ARB_vertex_program",
+ "GetProgramLocalParameterdvARB" => "ARB_vertex_program",
+ "GetProgramLocalParameterfvARB" => "ARB_vertex_program",
+ "GetProgramStringARB" => "ARB_vertex_program",
+ "GetProgramivARB" => "ARB_vertex_program",
+ "IsProgramARB" => "ARB_vertex_program",
+ "ProgramEnvParameter4dARB" => "ARB_vertex_program",
+ "ProgramEnvParameter4dvARB" => "ARB_vertex_program",
+ "ProgramEnvParameter4fARB" => "ARB_vertex_program",
+ "ProgramEnvParameter4fvARB" => "ARB_vertex_program",
+ "ProgramLocalParameter4dARB" => "ARB_vertex_program",
+ "ProgramLocalParameter4dvARB" => "ARB_vertex_program",
+ "ProgramLocalParameter4fARB" => "ARB_vertex_program",
+ "ProgramLocalParameter4fvARB" => "ARB_vertex_program",
+ "ProgramStringARB" => "ARB_vertex_program",
+ "EGLImageTargetTexture2DOES" => "OES_EGL_image",
+ "FramebufferTextureOES" => "GL_OES_geometry_shader",
+ "PatchParameteriOES" => "GL_OES_tessellation_shader",
+ "PointSizePointerOES" => "GL_OES_point_size_array",
+ "LockArraysEXT" => "EXT_compiled_vertex_array",
+ "UnlockArraysEXT" => "EXT_compiled_vertex_array",
+ "CoverageMaskNV" => "NV_coverage_sample",
+ "CoverageOperationNV" => "NV_coverage_sample",
+ "glXCreateContextAttribsARB" => "ARB_create_context_profile",
+ "wglCreateContextAttribsARB" => "WGL_ARB_create_context_profile",
+);
+
+my %regex = (
+ eofnc => qr/(?:\);?$|^$)/, # )$ | );$ | ^$
+ extname => qr/^[A-Z][A-Za-z0-9_]+$/,
+ none => qr/^\(none\)$/,
+ function => qr/^(.+) ([a-z][a-z0-9_]*) \((.*)\)$/i,
+ prefix => qr/^(?:[aw]?gl|glX|egl)/, # gl | agl | wgl | glX
+ tprefix => qr/^(?:[AW]?GL|GLX|EGL)_/, # GL_ | AGL_ | WGL_ | GLX_
+ section => compile_regex('^(', join('|', @sections), ')$'), # sections in spec
+ token => qr/^([A-Z0-9][A-Z0-9_x]*):?\s+((?:0x)?[0-9A-Fa-f]+(u(ll)?)?)(|\s[^\?]*)$/, # define tokens
+ types => compile_regex('\b(', join('|', keys %typemap), ')\b'), # var types
+ voidtype => compile_regex('\b(', keys %voidtypemap, ')\b '), # void type
+);
+
+# reshapes the the function declaration from multiline to single line form
+sub normalize_prototype
+{
+ local $_ = join(" ", @_);
+ s/\s+/ /g; # multiple whitespace -> single space
+ s/\<.*\>//g; # remove <comments> from direct state access extension
+ s/\<.*$//g; # remove incomplete <comments> from direct state access extension
+ s#/\*.*\*/##g; # remove /* ... */ comments
+ s/\s*\(\s*/ \(/; # exactly one space before ( and none after
+ s/\s*\)\s*/\)/; # no space before or after )
+ s/\s*\*([a-zA-Z])/\* $1/; # "* identifier"
+ s/\*wgl/\* wgl/; # "* wgl"
+ s/\*glX/\* glX/; # "* glX"
+ s/\.\.\./void/; # ... -> void
+ s/;$//; # remove ; at the end of the line
+ return $_;
+}
+
+# Ugly hack to work around the fact that functions are declared in more
+# than one spec file.
+sub ignore_function($$)
+{
+ return exists($fnc_ignore_list{$_[0]}) && $fnc_ignore_list{$_[0]} ne $_[1]
+}
+
+sub parse_spec($)
+{
+ my $filename = shift;
+ my $extname = "";
+ my $vendortag = "";
+ my @extnames = ();
+ my %functions = ();
+ my %tokens = ();
+
+ my $section = "";
+ my @fnc = ();
+
+ my %proc = (
+ "Name" => sub {
+ if (/^([a-z0-9]+)_([a-z0-9_]+)/i)
+ {
+ $extname = "$1_$2";
+ $vendortag = $1;
+ }
+ },
+
+ "Name Strings" => sub {
+ # Add extension name to extension list
+
+ # Initially use $extname if (none) specified
+ if (/$regex{none}/)
+ {
+ $_ = $extname;
+ }
+
+ if (/$regex{extname}/)
+ {
+ # prefix with "GL_" if prefix not present
+ s/^/GL_/ unless /$regex{tprefix}/o;
+ # Add extension name to extension list
+ push @extnames, $_;
+ }
+ },
+
+ "New Procedures and Functions" => sub {
+ # if line matches end of function
+ if (/$regex{eofnc}/)
+ {
+ # add line to function declaration
+ push @fnc, $_;
+
+ # if normalized version of function looks like a function
+ if (normalize_prototype(@fnc) =~ /$regex{function}/)
+ {
+ # get return type, name, and arguments from regex
+ my ($return, $name, $parms) = ($1, $2, $3);
+ if (!ignore_function($name, $extname))
+ {
+ # prefix with "gl" if prefix not present
+ $name =~ s/^/gl/ unless $name =~ /$regex{prefix}/;
+ # is this a pure GL function?
+ if ($name =~ /^gl/ && $name !~ /^glX/)
+ {
+ # apply typemaps
+ $return =~ s/$regex{types}/$typemap{$1}/og;
+ $return =~ s/GLvoid/void/og;
+ $return =~ s/void\*/void */og;
+ $parms =~ s/$regex{types}/$typemap{$1}/og;
+ $parms =~ s/$regex{voidtype}/$voidtypemap{$1}/og;
+ $parms =~ s/GLvoid/void/og;
+ $parms =~ s/ void\* / void */og;
+ if ($parms eq "")
+ {
+ $parms = "void"; # NVX_progress_fence and others
+ }
+ }
+ # add to functions hash
+ $functions{$name} = {
+ rtype => $return,
+ parms => $parms,
+ };
+ }
+ }
+ # reset function declaration
+ @fnc = ();
+ } elsif ($_ ne "" and $_ ne "None") {
+ # if not eof, add line to function declaration
+ push @fnc, $_
+ }
+ },
+
+ "New Tokens" => sub {
+ if (/$regex{token}/)
+ {
+ my ($name, $value) = ($1, $2);
+ # prefix with "GL_" if prefix not present
+ $name =~ s/^/GL_/ unless $name =~ /$regex{tprefix}/;
+ # Add (name, value) pair to tokens hash, unless it's taboo
+ $tokens{$name} = $value unless exists $taboo_tokens{$name};
+ }
+ },
+ );
+
+ # Some people can't read, the template clearly says "Name String_s_"
+ $proc{"Name String"} = $proc{"Name Strings"};
+
+ # Open spec file
+ open SPEC, "<$filename" or return;
+
+ # For each line of SPEC
+ while(<SPEC>)
+ {
+ # Delete trailing newline character
+ chomp;
+ # Remove trailing white spaces
+ s/\s+$//;
+ # If starts with a capital letter, it must be a new section
+ if (/^[A-Z]/)
+ {
+ # Match section name with one of the predefined names
+ $section = /$regex{section}/o ? $1 : "default";
+ } else {
+ # Line is internal to a section
+ # Remove leading whitespace
+ s/^\s+//;
+ # Call appropriate section processing function if it exists
+ &{$proc{$section}} if exists $proc{$section};
+ }
+ }
+
+ close SPEC;
+
+ return ($extname, \@extnames, \%tokens, \%functions);
+}
+
+#----------------------------------------------------------------------------------------
+
+my @speclist = ();
+my %extensions = ();
+
+my $ext_dir = shift;
+my $reg_http = "https://www.khronos.org/registry/OpenGL/extensions/";
+
+# Take command line arguments or read list from file
+if (@ARGV)
+{
+ @speclist = @ARGV;
+} else {
+ local $/; #???
+ @speclist = split "\n", (<>);
+}
+
+foreach my $spec (sort @speclist)
+{
+ my ($extname, $extnames, $tokens, $functions) = parse_spec($spec);
+
+ foreach my $ext (@{$extnames})
+ {
+ my $info = "$ext_dir/" . $ext;
+ open EXT, ">$info";
+ print EXT $ext . "\n"; # Extension name
+ my $specname = $spec;
+ $specname =~ s/OpenGL-Registry\/extensions\///;
+ print EXT $reg_http . $specname . "\n"; # Extension info URL
+ print EXT $ext . "\n"; # Extension string
+ print EXT "\n"; # Resuses nothing by default
+
+ my $prefix = $ext;
+ $prefix =~ s/^(.+?)(_.+)$/$1/;
+ foreach my $token (sort {
+ if (${$tokens}{$a} eq ${$tokens}{$b}) {
+ $a cmp $b
+ } else {
+ if (${$tokens}{$a} =~ /_/) {
+ if (${$tokens}{$b} =~ /_/) {
+ $a cmp $b
+ } else {
+ -1
+ }
+ } else {
+ if (${$tokens}{$b} =~ /_/) {
+ 1
+ } else {
+ if (${$tokens}{$a} =~ /u(ll)?$/) {
+ if (${$tokens}{$b} =~ /u(ll)?$/) {
+ $a cmp $b
+ } else {
+ -1
+ }
+ } else {
+ if (${$tokens}{$b} =~ /u(ll)?$/) {
+ 1
+ } else {
+ if (hex ${$tokens}{$a} eq hex ${$tokens}{$b})
+ {
+ $a cmp $b
+ } else {
+ hex ${$tokens}{$a} <=> hex ${$tokens}{$b}
+ }
+ }
+ }
+ }
+ }
+ }
+ } keys %{$tokens})
+ {
+ if ($token =~ /^$prefix\_.*/i)
+ {
+ print EXT "\t" . $token . " " . ${\%{$tokens}}{$token} . "\n";
+ }
+ }
+ foreach my $function (sort keys %{$functions})
+ {
+ if ($function =~ /^$prefix.*/i)
+ {
+ print EXT "\t" . ${$functions}{$function}{rtype} . " " . $function . " (" . ${$functions}{$function}{parms} . ")" . "\n";
+ }
+ }
+ close EXT;
+ }
+}
diff --git a/glew/auto/bin/parse_xml.py b/glew/auto/bin/parse_xml.py
new file mode 100644
index 0000000..28ecb9f
--- /dev/null
+++ b/glew/auto/bin/parse_xml.py
@@ -0,0 +1,145 @@
+#!/usr/bin/env python
+
+import re
+import sys
+from xml.dom.minidom import parse, Node
+
+#
+# DOM traversal utility functions
+#
+
+def findChildren(node, path):
+ result = []
+ if len(path)==1:
+ for i in node.childNodes:
+ if i.nodeType==Node.ELEMENT_NODE:
+ if i.tagName==path[0]:
+ result.append(i)
+ else:
+ for i in node.childNodes:
+ if i.nodeType==Node.ELEMENT_NODE:
+ if i.tagName==path[0]:
+ result.extend(findChildren(i, path[1:]))
+ return result
+
+def findData(node, path):
+ return [ i.firstChild.data for i in findChildren(node, path) ]
+
+isPointer = re.compile('(.*)([ ]+)([*]+)')
+
+def findParams(node):
+ n = findData(node, ['name'])[0]
+ t = ''
+ for i in node.childNodes:
+ if i.nodeType==Node.TEXT_NODE:
+ t += i.data
+ if i.nodeType==Node.ELEMENT_NODE and i.tagName=='ptype':
+ t += i.firstChild.data
+
+ t.strip()
+ m = isPointer.match(t)
+ if m:
+ t = ('%s%s'%(m.group(1), m.group(3))).strip()
+ return ( t, n.strip())
+
+def findEnums(dom):
+ return {i.getAttribute('name'): i.getAttribute('value') for i in findChildren(dom, [ 'registry', 'enums', 'enum' ])}
+
+def findCommands(dom):
+ ret = {}
+ for i in findChildren(dom, [ 'registry', 'commands', 'command' ]):
+ r,n = findParams(findChildren(i, ['proto'])[0])
+ p = [ findParams(j) for j in findChildren(i, ['param'])]
+ ret[n] = (r, p)
+ return ret
+
+def findFeatures(dom):
+ ret = {}
+ for i in findChildren(dom, [ 'registry', 'feature' ]):
+ n = i.getAttribute('name')
+ e = [j.getAttribute("name") for j in findChildren(i, [ 'require', 'enum' ])]
+ c = [j.getAttribute("name") for j in findChildren(i, [ 'require', 'command' ])]
+ ret[n] = (e,c)
+ return ret
+
+def findExtensions(dom):
+ ret = {}
+ for i in findChildren(dom, [ 'registry', 'extensions', 'extension' ]):
+ n = i.getAttribute('name')
+ e = [j.getAttribute("name") for j in findChildren(i, [ 'require', 'enum' ])]
+ c = [j.getAttribute("name") for j in findChildren(i, [ 'require', 'command' ])]
+ ret[n] = (e,c)
+ return ret
+
+def findApi(dom, name):
+ enums = findEnums(dom)
+ commands = findCommands(dom)
+ features = findFeatures(dom)
+ extensions = findExtensions(dom)
+ return (enums, commands, features, extensions)
+
+#
+#
+#
+
+isWGL = re.compile('WGL_([A-Z0-9]+)_.*')
+
+def writeExtension(f, name, extension, enums, commands):
+ f.write(('%s\n'%name).encode())
+
+ url = 'https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf'
+
+ m = isWGL.match(name)
+ if m:
+ url = 'https://www.khronos.org/registry/OpenGL/extensions/%s/%s.txt'%(m.group(1), name)
+
+ f.write(('%s\n'%(url)).encode())
+
+ if name.find('_VERSION_')==-1:
+ f.write(('%s\n'%name).encode())
+ else:
+ f.write('\n'.encode())
+ f.write('\n'.encode())
+
+ enums = [ (j, enums[j]) for j in extension[0] ]
+ for e in sorted(enums, key=lambda i: i[1]):
+ f.write(('\t%s %s\n'%(e[0], e[1])).encode())
+
+ commands = [ (j, commands[j]) for j in extension[1] ]
+ for c in sorted(commands):
+ params = ', '.join( [ '%s %s'%(j[0].strip(), j[1].strip()) for j in c[1][1] ] )
+ if len(params)==0:
+ params = 'void'
+ f.write(('\t%s %s (%s)\n'%(c[1][0].strip(), c[0].strip(), params)).encode())
+
+if __name__ == '__main__':
+
+ from argparse import ArgumentParser
+ import os
+
+ parser = ArgumentParser(description='usage: %prog [options] [XML specs...]')
+ parser.add_argument("--core", dest="core", help="location for core outputs", default='')
+ parser.add_argument("--api", dest="name", help="API name: egl, wgl, glx, etc", default='')
+ parser.add_argument("--extensions", dest="extensions", help="location for extensions outputs", default='')
+
+ (options, args) = parser.parse_known_args()
+ options = vars(options)
+
+ for i in args:
+
+ dom = parse(i)
+ api = findApi(dom, options['name'])
+
+ print('Found {} enums, {} commands, {} features and {} extensions.'.format(
+ len(api[0]), len(api[1]), len(api[2]), len(api[3])))
+
+ if len(options['core']):
+ for i in api[2].keys():
+ with open(os.path.join(options['core'], i), 'wb') as f:
+ writeExtension(f, i, api[2][i], api[0], api[1])
+
+ if len(options['extensions']):
+ for i in api[3].keys():
+ with open(os.path.join(options['extensions'], i), 'wb') as f:
+ writeExtension(f, i, api[3][i], api[0], api[1])
+
diff --git a/glew/auto/bin/update_ext.sh b/glew/auto/bin/update_ext.sh
new file mode 100644
index 0000000..0ee3af1
--- /dev/null
+++ b/glew/auto/bin/update_ext.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+##
+## Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+## Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+## Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+##
+## Parameters:
+##
+## $1: Extensions directory
+## $2: Registry directory
+## $3: The black list
+
+set -e
+
+if [ ! -d $1 ] ; then
+ mkdir -p $1
+
+# Parse each of the extensions in the registry
+ find $2 -name doc -type d -prune -o -name "*.txt" -print | \
+ grep -v -f $3 | sort | bin/parse_spec.pl $1
+
+fi
diff --git a/glew/auto/blacklist b/glew/auto/blacklist
new file mode 100644
index 0000000..6e57351
--- /dev/null
+++ b/glew/auto/blacklist
@@ -0,0 +1,27 @@
+EXT/draw_range_elements.txt
+EXT/static_vertex_array.txt
+EXT/vertex_array_set.alt.txt
+EXT/vertex_array_set.txt
+EXT/nurbs_tessellator.txt
+EXT/object_space_tess.txt
+SGI/filter4_parameters.txt
+SGIS/SGIS_texture_color_mask.txt
+SGIX/SGIX_dmbuffer.txt
+SGIX/SGIX_instruments.txt
+SGIX/SGIX_video_source.txt
+SGIX/SGIX_hyperpipe_group.txt
+OES/OES_fixed_point.txt
+OES/OES_query_matrix.txt
+IMG/IMG_user_clip_plane.txt
+NV/NV_query_resource.txt
+NV/EGL_NV_coverage_sample.txt
+OES/OES_draw_elements_base_vertex.txt
+OES/OES_viewport_array.txt
+OES/EGL_KHR_fence_sync.txt
+EXT/EXT_texenv_op.txt
+EXT/EXT_transform_feedback2.txt
+EXT/EXT_vertex_array_set.txt
+EXT/EXT_separate_shader_objects.gles.txt
+IGLOO/IGLOO_swap_triangle_strip_vertex_pointerXXX.txt
+IGLOO/IGLOO_viewport_offsetXXX.txt
+IGLOO/IGLOO_toggle_color_and_lightXXX.txt
diff --git a/glew/auto/custom.txt b/glew/auto/custom.txt
new file mode 100644
index 0000000..b797b95
--- /dev/null
+++ b/glew/auto/custom.txt
@@ -0,0 +1,7 @@
+WGL_ARB_extensions_string
+WGL_EXT_extensions_string
+WGL_ARB_pixel_format
+WGL_ARB_pbuffer
+WGL_NV_float_buffer
+WGL_ATI_pixel_format_float
+WGL_ARB_multisample
diff --git a/glew/auto/doc/advanced.html b/glew/auto/doc/advanced.html
new file mode 100644
index 0000000..3e0ad79
--- /dev/null
+++ b/glew/auto/doc/advanced.html
@@ -0,0 +1,130 @@
+<h2>Automatic Code Generation</h2>
+
+<p>
+Starting from release 1.1.0, the source code and parts of the
+documentation are automatically generated from the extension
+specifications in a two-step process. In the first step,
+specification files from the OpenGL registry are downloaded and
+parsed. Skeleton descriptors are created for each extension. These
+descriptors contain all necessary information for creating the source
+code and documentation in a simple and compact format, including the
+name of the extension, url link to the specification, tokens, function
+declarations, typedefs and struct definitions. In the second step,
+the header files as well as the library and glewinfo source are
+generated from the descriptor files. The code generation scripts are
+located in the <tt>auto</tt> subdirectory.
+</p>
+
+<p>
+The code generation scripts require GNU make, wget, and perl. On
+Windows, the simplest way to get access to these tools is to install
+<a href="http://www.cygwin.com/">Cygwin</a>, but make sure that the
+root directory is mounted in binary mode. The makefile in the
+<tt>auto</tt> directory provides the following build targets:
+</p>
+
+<table border=0 cellpadding=0 cellspacing=5>
+<tr><td align="left" valign="top"><tt>make</tt></td>
+<td align=left>Create the source files from the descriptors.<br/> If the
+descriptors do not exist, create them from the spec files.<br/> If the spec
+files do not exist, download them from the OpenGL repository.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;clean</tt></td>
+<td align=left>Delete the source files.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;clobber</tt></td>
+<td align=left>Delete the source files and the descriptors.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;destroy</tt></td>
+<td align=left>Delete the source files, the descriptors, and the spec files.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;custom</tt></td>
+<td align=left>Create the source files for the extensions
+listed in <tt>auto/custom.txt</tt>.<br/> See "Custom Code
+Generation" below for more details.</td></tr>
+</table>
+
+<h3>Adding a New Extension</h3>
+
+<p>
+To add a new extension, create a descriptor file for the extension in
+<tt>auto/core</tt> and rerun the code generation scripts by typing
+<tt>make clean; make</tt> in the <tt>auto</tt> directory.
+</p>
+
+<p>
+The format of the descriptor file is given below. Items in
+brackets are optional.
+</p>
+
+<p class="pre">
+&lt;Extension Name&gt;<br>
+[&lt;URL of Specification File&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+<!-- &nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br> -->
+</p>
+
+<!--
+<p>
+Note that <tt>Function Definitions</tt> are copied to the header files
+without changes and have to be terminated with a semicolon. In
+contrast, <tt>Tokens</tt>, <tt>Function signatures</tt>, and
+<tt>Typedefs</tt> should not be terminated with a semicolon.
+</p>
+-->
+
+<p>
+Take a look at one of the files in <tt>auto/core</tt> for an
+example. Note that typedefs and function signatures should not be
+terminated with a semicolon.
+</p>
+
+<h3>Custom Code Generation</h3>
+<p>
+Starting from GLEW 1.3.0, it is possible to control which extensions
+to include in the library by specifying a list in
+<tt>auto/custom.txt</tt>. This is useful when you do not need all the
+extensions and would like to reduce the size of the source files.
+Type <tt>make clean; make custom</tt> in the <tt>auto</tt> directory
+to rerun the scripts with the custom list of extensions.
+</p>
+
+<p>
+For example, the following is the list of extensions needed to get GLEW and the
+utilities to compile.
+</p>
+
+<p class="pre">
+WGL_ARB_extensions_string<br>
+WGL_ARB_multisample<br>
+WGL_ARB_pixel_format<br>
+WGL_ARB_pbuffer<br>
+WGL_EXT_extensions_string<br>
+WGL_ATI_pixel_format_float<br>
+WGL_NV_float_buffer<br>
+</p>
+
+<h2>Separate Namespace</h2>
+
+<p>
+To avoid name clashes when linking with libraries that include the
+same symbols, extension entry points are declared in a separate
+namespace (release 1.1.0 and up). This is achieved by aliasing OpenGL
+function names to their GLEW equivalents. For instance,
+<tt>glFancyFunction</tt> is simply an alias to
+<tt>glewFancyFunction</tt>. The separate namespace does not effect
+token and function pointer definitions.
+</p>
+
+<h2>Known Issues</h2>
+
+<p>
+GLEW requires GLX 1.2 for compatibility with GLUT.
+</p>
+
diff --git a/glew/auto/doc/basic.html b/glew/auto/doc/basic.html
new file mode 100644
index 0000000..693575b
--- /dev/null
+++ b/glew/auto/doc/basic.html
@@ -0,0 +1,180 @@
+<h2>Initializing GLEW</h2>
+<p>
+First you need to create a valid OpenGL rendering context and call
+<tt>glewInit()</tt> to initialize the extension entry points. If
+<tt>glewInit()</tt> returns <tt>GLEW_OK</tt>, the initialization
+succeeded and you can use the available extensions as well as core
+OpenGL functionality. For example:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+...<br>
+glutInit(&amp;argc, argv);<br>
+glutCreateWindow("GLEW Test");<br>
+GLenum err = glewInit();<br>
+if (GLEW_OK != err)<br>
+{<br>
+&nbsp;&nbsp;/* Problem: glewInit failed, something is seriously wrong. */<br>
+&nbsp;&nbsp;fprintf(stderr, "Error: %s\n", glewGetErrorString(err));<br>
+&nbsp;&nbsp;...<br>
+}<br>
+fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));<br>
+</p>
+
+<h2>Checking for Extensions</h2>
+
+<p>
+Starting from GLEW 1.1.0, you can find out if a particular extension
+is available on your platform by querying globally defined variables
+of the form <tt>GLEW_{extension_name}</tt>:
+</p>
+
+<p class="pre">
+if (GLEW_ARB_vertex_program)<br>
+{<br>
+&nbsp;&nbsp;/* It is safe to use the ARB_vertex_program extension here. */<br>
+&nbsp;&nbsp;glGenProgramsARB(...);<br>
+}<br>
+</p>
+
+<p>
+<b>In GLEW 1.0.x, a global structure was used for this task. To ensure
+binary compatibility between releases, the struct was replaced with a
+set of variables.</b>
+</p>
+
+<p>
+You can also check for core OpenGL functionality. For example, to
+see if OpenGL 1.3 is supported, do the following:
+</p>
+
+<p class="pre">
+if (GLEW_VERSION_1_3)<br>
+{<br>
+&nbsp;&nbsp;/* Yay! OpenGL 1.3 is supported! */<br>
+}<br>
+</p>
+
+<p>
+In general, you can check if <tt>GLEW_{extension_name}</tt> or
+<tt>GLEW_VERSION_{version}</tt> is true or false.
+</p>
+
+<p>
+It is also possible to perform extension checks from string
+input. Starting from the 1.3.0 release, use <tt>glewIsSupported</tt>
+to check if the required core or extension functionality is
+available:
+</p>
+
+<p class="pre">
+if (glewIsSupported("GL_VERSION_1_4&nbsp;&nbsp;GL_ARB_point_sprite"))<br>
+{<br>
+&nbsp;&nbsp;/* Great, we have OpenGL 1.4 + point sprites. */<br>
+}<br>
+</p>
+
+<p>
+For extensions only, <tt>glewGetExtension</tt> provides a slower alternative
+(GLEW 1.0.x-1.2.x). <b>Note that in the 1.3.0 release </b>
+<tt>glewGetExtension</tt> <b>was replaced with </b>
+<tt>glewIsSupported</tt>.
+</p>
+
+<p class="pre">
+if (glewGetExtension("GL_ARB_fragment_program"))<br>
+{<br>
+&nbsp;&nbsp;/* Looks like ARB_fragment_program is supported. */<br>
+}<br>
+</p>
+
+<h2>Experimental Drivers</h2>
+
+<p>
+GLEW obtains information on the supported extensions from the graphics
+driver. Experimental or pre-release drivers, however, might not
+report every available extension through the standard mechanism, in
+which case GLEW will report it unsupported. To circumvent this
+situation, the <tt>glewExperimental</tt> global switch can be turned
+on by setting it to <tt>GL_TRUE</tt> before calling
+<tt>glewInit()</tt>, which ensures that all extensions with valid
+entry points will be exposed.
+</p>
+
+<h2>Platform Specific Extensions</h2>
+
+<p>
+Platform specific extensions are separated into two header files:
+<tt>wglew.h</tt> and <tt>glxew.h</tt>, which define the available
+<tt>WGL</tt> and <tt>GLX</tt> extensions. To determine if a certain
+extension is supported, query <tt>WGLEW_{extension name}</tt> or
+<tt>GLXEW_{extension_name}</tt>. For example:
+</p>
+
+<p class="pre">
+#include &lt;GL/wglew.h&gt;<br>
+<br>
+if (WGLEW_ARB_pbuffer)<br>
+{<br>
+&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
+}<br>
+else<br>
+{<br>
+&nbsp;&nbsp;/* Sorry, pbuffers will not work on this platform. */<br>
+}<br>
+</p>
+
+<p>
+Alternatively, use <tt>wglewIsSupported</tt> or
+<tt>glxewIsSupported</tt> to check for extensions from a string:
+</p>
+
+<p class="pre">
+if (wglewIsSupported("WGL_ARB_pbuffer"))<br>
+{<br>
+&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
+}<br>
+</p>
+
+<h2>Utilities</h2>
+
+<p>
+GLEW provides two command-line utilities: one for creating a list of
+available extensions and visuals; and another for verifying extension
+entry points.
+</p>
+
+<h3>visualinfo: extensions and visuals</h3>
+
+<p>
+<tt>visualinfo</tt> is an extended version of <tt>glxinfo</tt>. The
+Windows version creates a file called <tt>visualinfo.txt</tt>, which
+contains a list of available OpenGL, WGL, and GLU extensions as well
+as a table of visuals aka. pixel formats. Pbuffer and MRT capable
+visuals are also included. For additional usage information, type
+<tt>visualinfo -h</tt>.
+</p>
+
+<h3>glewinfo: extension verification utility</h3>
+
+<p>
+<tt>glewinfo</tt> allows you to verify the entry points for the
+extensions supported on your platform. The Windows version
+reports the results to a text file called <tt>glewinfo.txt</tt>. The
+Unix version prints the results to <tt>stdout</tt>.
+</p>
+
+<p>Windows usage:</p>
+ <blockquote><pre>glewinfo [-pf &lt;id&gt;]</pre></blockquote>
+
+<p>where <tt>&lt;id&gt;</tt> is the pixel format id for which the
+capabilities are displayed.</p>
+
+<p>Unix usage:</p>
+<blockquote><pre>glewinfo [-display &lt;dpy&gt;] [-visual &lt;id&gt;]</pre></blockquote>
+
+<p>where <tt>&lt;dpy&gt;</tt> is the X11 display and <tt>&lt;id&gt;</tt> is
+the visual id for which the capabilities are displayed.</p>
+
diff --git a/glew/auto/doc/build.html b/glew/auto/doc/build.html
new file mode 100644
index 0000000..467a7f3
--- /dev/null
+++ b/glew/auto/doc/build.html
@@ -0,0 +1,49 @@
+<h2>Building GLEW</h2>
+
+<h3>Windows</h3>
+
+<p>A MS Visual Studio project is provided in the <tt>build/vc6</tt> directory.</p>
+<p>Pre-built shared and static libraries are also available for <a href="index.html">download</a>.</p>
+
+<h3>Makefile</h3>
+
+<p>For platforms other than MS Windows, the provided <tt>Makefile</tt> is used.</p>
+
+<h4>Command-line variables</h4>
+
+<table border=0 cellpadding=0 cellspacing=10>
+<tr><td valign=top><tt>SYSTEM</tt></td><td valign=top>auto</td>
+<td align=left>Target system to build: darwin, linux, solaris, etc.<br/>For a full list of supported targets: <tt>ls config/Makefile.*</tt><br/>
+<a href="http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree">config.guess</a> is used to auto detect, as necessary.</td></tr>
+<tr><td valign=top><tt>GLEW_DEST</tt></td><td valign=top><tt>/usr</tt></td>
+<td align=left>Base directory for installation.</td></tr>
+</table>
+
+<h4>Make targets</h4>
+
+<table border=0 cellpadding=0 cellspacing=10>
+<tr><td valign=top><tt>all</tt></td><td>Build everything.</td><tr>
+<tr><td valign=top><tt>glew.lib</tt></td><td>Build static and dynamic GLEW libraries.</td><tr>
+<tr><td valign=top><tt>glew.lib.mx</tt></td><td>Build static and dynamic GLEWmx libraries.</td><tr>
+<tr><td valign=top><tt>glew.bin</tt></td><td>Build <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
+<tr><td valign=top><tt>clean</tt></td><td>Delete temporary and built files.</td><tr>
+<tr><td valign=top><tt>install.all</tt></td><td>Install everything.</td><tr>
+<tr><td valign=top><tt>install</tt></td><td>Install GLEW libraries.</td><tr>
+<tr><td valign=top><tt>install.mx</tt></td><td>Install GLEWmx libraries.</td><tr>
+<tr><td valign=top><tt>install.bin</tt></td><td>Install <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
+<tr><td valign=top><tt>uninstall</tt></td><td>Delete installed files.</td><tr>
+</table>
+
+<h4>Requirements</h4>
+
+<ul>
+<li>GNU make</li>
+<li>perl</li>
+<li>wget</li>
+<li>GNU sed</li>
+<li>gcc compiler</li>
+<li>git</li>
+</ul>
+
+Ubuntu: <pre>sudo apt-get install libXmu-dev libXi-dev libgl-dev dos2unix git wget</pre>
+Fedora: <pre>sudo yum install libXmu-devel libXi-devel libGL-devel dos2unix git wget</pre>
diff --git a/glew/auto/doc/credits.html b/glew/auto/doc/credits.html
new file mode 100644
index 0000000..6c36de0
--- /dev/null
+++ b/glew/auto/doc/credits.html
@@ -0,0 +1,2 @@
+<p><a href="https://github.com/nigels-com/glew#copyright-and-licensing">
+Author, copyright and licensing information</a> on github.</p>
diff --git a/glew/auto/doc/index.html b/glew/auto/doc/index.html
new file mode 100644
index 0000000..e569e75
--- /dev/null
+++ b/glew/auto/doc/index.html
@@ -0,0 +1,113 @@
+<p>
+The OpenGL Extension Wrangler Library (GLEW) is a cross-platform
+open-source C/C++ extension loading library. GLEW provides efficient
+run-time mechanisms for determining which OpenGL extensions are
+supported on the target platform. OpenGL core and extension
+functionality is exposed in a single header file. GLEW has been
+tested on a variety of operating systems, including Windows, Linux,
+Mac OS X, FreeBSD, Irix, and Solaris.
+</p>
+
+<h2>Downloads</h2>
+<p>
+<a href="http://sourceforge.net/projects/glew/">GLEW</a> is distributed
+as source and precompiled binaries.<br/>
+The latest release is
+<a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a>[03-15-20]:
+</p>
+<p>
+</p>
+<p>
+<table border="1" cellpadding="5" cellspacing="0" bgcolor="#f0f0f0" align="center">
+<tr>
+<td>
+<table border="0" cellpadding="3" cellspacing="0">
+<tr>
+<td></td>
+<td align="right"><b>Source</b></td>
+<td></td>
+<td align="left">
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.zip">ZIP</a>&nbsp;|&nbsp;
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz">TGZ</a></td>
+<td></td>
+</tr>
+<tr>
+<td></td>
+<td align="right"><b>Binaries</b></td>
+<td></td>
+<td align="left">
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0-win32.zip">Windows 32-bit and 64-bit</a>
+</td>
+<td></td>
+</tr>
+</table>
+</tr>
+</table>
+
+<p></p>
+<p>
+An up-to-date copy is also available using <a href="http://git-scm.com/">git</a>:
+</p>
+<ul>
+<li><a href="https://github.com/nigels-com/glew">github</a><br/>
+<tt>git clone https://github.com/nigels-com/glew.git glew</tt><br/>&nbsp;</li>
+</ul>
+
+<h2>Supported Extensions</h2>
+<p>
+The latest release contains support for OpenGL 4.6, compatibility and forward-compatible contexts and the following extensions:
+</p>
+<ul>
+<li><a href="glew.html">OpenGL extensions</a>
+<li><a href="wglew.html">WGL extensions</a>
+<li><a href="glxew.html">GLX extensions</a>
+</ul>
+
+<h2>News</h2>
+<ul>
+<li>[03-15-20] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">GLEW 2.2.0</a> new extensions and minor bug fixes</li>
+<li>[07-31-17] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.1.0">GLEW 2.1.0</a> adds support for OpenGL 4.6, new extensions and minor bug fixes</li>
+<li>[07-24-16] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.0.0">GLEW 2.0.0</a> adds support for forward-compatible contexts, adds new extensions, OSMesa and EGL support, MX discontinued and minor bug fixes</li>
+<li>[08-10-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.13.0/">GLEW 1.13.0</a> adds support for new extensions, fixes minor bugs</li>
+<li>[26-01-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.12.0/">GLEW 1.12.0</a> fixes minor bugs and adds new extensions</li>
+<li>[08-11-14] <a href="https://sourceforge.net/projects/glew/files/glew/1.11.0/">GLEW 1.11.0</a> adds support for OpenGL 4.5, new extensions</li>
+<li>[07-22-13] <a href="https://sourceforge.net/projects/glew/files/glew/1.10.0/">GLEW 1.10.0</a> adds support for OpenGL 4.4, new extensions</li>
+<li>[08-06-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.9.0/">GLEW 1.9.0</a> adds support for OpenGL 4.3, new extensions</li>
+<li>[07-17-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.8.0/">GLEW 1.8.0</a> fixes minor bugs and adds new extensions</li>
+<li>[08-26-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.7.0/">GLEW 1.7.0</a> adds support for OpenGL 4.2, new extensions, fixes bugs</li>
+<li>[04-27-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.6.0/">GLEW 1.6.0</a> fixes minor bugs and adds eight new extensions</li>
+<li>[01-31-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.8/">GLEW 1.5.8</a> fixes minor bugs and adds two new extensions</li>
+<li>[11-03-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.7/">GLEW 1.5.7</a> fixes minor bugs and adds one new extension</li>
+<li>[09-07-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.6/">GLEW 1.5.6</a> adds support for OpenGL 4.1, fixes bugs</li>
+<li>[07-13-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.5/">GLEW 1.5.5</a> fixes minor bugs and adds new extensions</li>
+<li>[04-21-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.4/">GLEW 1.5.4</a> adds support for OpenGL 3.3, OpenGL 4.0 and new extensions, fixes bugs</li>
+<li>[02-28-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.3/">GLEW 1.5.3</a> fixes minor bugs and adds three new extensions</li>
+<li>[12-31-09] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.2/">GLEW 1.5.2</a> adds support for OpenGL 3.1, OpenGL 3.2 and new extensions</li>
+<li>[11-03-08] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=637800">GLEW 1.5.1</a> adds support for OpenGL 3.0 and 31 new extensions</li>
+<li>[12-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=564464">GLEW 1.5.0</a> is released under less restrictive licenses</li>
+<li>[04-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=504079">GLEW 1.4.0</a> is released</li>
+<li>[03-08-07] GLEW is included in the <a href="http://developer.nvidia.com/object/sdk_home.html">NVIDIA OpenGL SDK</a></li>
+<li>[03-04-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=491113">GLEW 1.3.6</a> is released</li>
+<li>[02-28-07] <a href="http://glew.svn.sourceforge.net/svnroot/glew/trunk/glew/">Repository</a> is migrated to SVN</li>
+<li>[02-25-07] GLEW is included in the <a href="http://www.opengl.org/sdk/">OpenGL SDK</a></li>
+<li>[11-21-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=465334">GLEW 1.3.5</a> adds OpenGL 2.1 and NVIDIA G80 extensions</li>
+<li>[03-04-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=398455">GLEW 1.3.4</a> adds support for five new extensions</li>
+<li>[05-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=327647">GLEW 1.3.3</a> is released</li>
+<li>[03-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=313345">GLEW 1.3.2</a> adds support for GL_APPLE_pixel_buffer</li>
+<li>[02-11-05] <a href="http://gljava.sourceforge.net/">gljava</a> and <a href="http://sdljava.sourceforge.net/">sdljava</a> provide a Java binding to OpenGL via GLEW</li>
+<li>[02-02-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=302049">GLEW 1.3.1</a> adds support for <a href="http://www.opengl.org/documentation/extensions/EXT_framebuffer_object.txt">GL_EXT_framebuffer_object</a></li>
+<li>[01-04-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=294527">GLEW 1.3.0</a> adds core OpenGL 2.0 support plus many enhancements</li>
+<li>[12-22-04] <a href="http://glewpy.sf.net/">GLEWpy</a> Python wrapper announced</li>
+<li>[12-12-04] <a href="https://sourceforge.net/mail/?group_id=67586">Mailing lists</a> created on sourceforge</li>
+<li>[12-06-04] <a href="http://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=287948">GLEW 1.2.5</a> adds new extensions and support for FreeBSD</li>
+</ul>
+
+<h2>Links</h2>
+<ul>
+<li><a href="http://www.opengl.org/sdk/">OpenGL Software Development Kit</a></li>
+<li><a href="http://www.opengl.org/registry/">OpenGL Extension Registry</a></li>
+<li><a href="https://www.opengl.org/wiki/OpenGL_Extension">OpenGL Wiki: Extensions</a></li>
+<li><a href="http://developer.nvidia.com/nvidia-opengl-specs">NVIDIA OpenGL Extension Specifications</a></li>
+<li><a href="http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGLExtensionsGuide/Reference/reference.html">Apple OpenGL Extensions Guide</a></li>
+</ul>
+
diff --git a/glew/auto/doc/install.html b/glew/auto/doc/install.html
new file mode 100644
index 0000000..448aafd
--- /dev/null
+++ b/glew/auto/doc/install.html
@@ -0,0 +1,126 @@
+<h2>Installation</h2>
+
+<p>
+To use the shared library version of GLEW, you need to copy the
+headers and libraries into their destination directories. On Windows
+this typically boils down to copying:
+</p>
+
+<table border="0" cellpadding="0" cellspacing="0" align="center"> <!-- bgcolor="#f0f0f0" -->
+<tr><td align="left"><tt>bin/glew32.dll</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>%SystemRoot%/system32</tt></td></tr>
+<tr><td align="left"><tt>lib/glew32.lib</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Lib</tt></td></tr>
+<tr><td align="left"><tt>include/GL/glew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
+<tr><td align="left"><tt>include/GL/wglew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
+</table>
+<p>
+</p>
+
+<p>
+where <tt>{VC Root}</tt> is the Visual C++ root directory, typically
+<tt>C:/Program Files/Microsoft Visual Studio/VC98</tt> for Visual
+Studio 6.0 or <tt>C:/Program Files/Microsoft Visual
+Studio .NET 2003/Vc7/PlatformSDK</tt> for Visual Studio .NET.
+</p>
+
+<p>
+On Unix, typing <tt>make install</tt> will attempt to install GLEW
+into <tt>/usr/include/GL</tt> and <tt>/usr/lib</tt>. You can
+customize the installation target via the <tt>GLEW_DEST</tt>
+environment variable if you do not have write access to these
+directories.
+</p>
+
+<h2>Building Your Project with GLEW</h2>
+<p>
+There are two ways to build your project with GLEW.
+</p>
+<h3>Including the source files / project file</h3>
+<p>
+The simpler but less flexible way is to include <tt>glew.h</tt> and
+<tt>glew.c</tt> into your project. On Windows, you also need to
+define the <tt>GLEW_STATIC</tt> preprocessor token when building a
+static library or executable, and the <tt>GLEW_BUILD</tt> preprocessor
+token when building a dll. You also need to replace
+<tt>&lt;GL/gl.h&gt;</tt> and <tt>&lt;GL/glu.h&gt;</tt> with
+<tt>&lt;glew.h&gt;</tt> in your code and set the appropriate include
+flag (<tt>-I</tt>) to tell the compiler where to look for it. For
+example:
+</p>
+<p class="pre">
+#include &lt;glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+&lt;gl, glu, and glut functionality is available here&gt;<br>
+</p>
+<p>
+Depending on where you put <tt>glew.h</tt> you may also need to change
+the include directives in <tt>glew.c</tt>. Note that if you are using
+GLEW together with GLUT, you have to include <tt>glew.h</tt> first.
+In addition, <tt>glew.h</tt> includes <tt>glu.h</tt>, so you do not
+need to include it separately.
+</p>
+<p>
+On Windows, you also have the option of adding the supplied project
+file <tt>glew_static.dsp</tt> to your workspace (solution) and compile
+it together with your other projects. In this case you also need to
+change the <tt>GLEW_BUILD</tt> preprocessor constant to
+<tt>GLEW_STATIC</tt> when building a static library or executable,
+otherwise you get build errors.
+</p>
+<p>
+<b>Note that GLEW does not use the C
+runtime library, so it does not matter which version (single-threaded,
+multi-threaded or multi-threaded DLL) it is linked with (without
+debugging information). It is, however, always a good idea to compile all
+your projects including GLEW with the same C runtime settings.</b>
+</p>
+
+<h3>Using GLEW as a shared library</h3>
+
+<p>
+Alternatively, you can use the provided project files / makefile to
+build a separate shared library you can link your projects with later.
+In this case the best practice is to install <tt>glew.h</tt>,
+<tt>glew32.lib</tt>, and <tt>glew32.dll</tt> / <tt>libGLEW.so</tt> to
+where the OpenGL equivalents <tt>gl.h</tt>, <tt>opengl32.lib</tt>, and
+<tt>opengl32.dll</tt> / <tt>libGL.so</tt> are located. Note that you
+need administrative privileges to do this. If you do not have
+administrator access and your system administrator will not do it for
+you, you can install GLEW into your own lib and include subdirectories
+and tell the compiler where to find it. Then you can just replace
+<tt>&lt;GL/gl.h&gt;</tt> with <tt>&lt;GL/glew.h&gt;</tt> in your
+program:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+&lt;gl, glu, and glut functionality is available here&gt;<br>
+</p>
+
+<p>
+or:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+&lt;gl and glu functionality is available here&gt;<br>
+</p>
+
+<p>
+Remember to link your project with <tt>glew32.lib</tt>,
+<tt>glu32.lib</tt>, and <tt>opengl32.lib</tt> on Windows and
+<tt>libGLEW.so</tt>, <tt>libGLU.so</tt>, and <tt>libGL.so</tt> on
+Unix (<tt>-lGLEW -lGLU -lGL</tt>).
+</p>
+
+<p>
+It is important to keep in mind that <tt>glew.h</tt> includes neither
+<tt>windows.h</tt> nor <tt>gl.h</tt>. Also, GLEW will warn you by
+issuing a preprocessor error in case you have included <tt>gl.h</tt>,
+<tt>glext.h</tt>, or <tt>glATI.h</tt> before <tt>glew.h</tt>.
+</p>
+
diff --git a/glew/auto/doc/log.html b/glew/auto/doc/log.html
new file mode 100644
index 0000000..531b3b2
--- /dev/null
+++ b/glew/auto/doc/log.html
@@ -0,0 +1,1319 @@
+<h2>Change Log</h2>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.2.0</b> [03-15-20]
+
+<ul>
+<li> Bug fixes:
+<ul>
+<li> GL_EXT_semaphore constants
+<li> Some const pointer fixups in OpenGL API
+<li> Correction for GLEW_VERSION_4_5
+<li> Windows build updates and fixes
+</ul>
+</ul>
+
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_framebuffer_multisample_advanced
+<li> GL_AMD_gpu_shader_half_float_fetch
+<li> GL_AMD_shader_image_load_store_lod
+<li> GL_ARM_texture_unnormalized_coordinates
+<li> GL_DMP_program_binary
+<li> GL_DMP_shader_binary
+<li> GL_EXT_EGL_image_external_wrap_modes
+<li> GL_EXT_EGL_image_storage
+<li> GL_EXT_EGL_sync
+<li> GL_EXT_clip_control
+<li> GL_EXT_depth_clamp
+<li> GL_EXT_disjoint_timer_query
+<li> GL_EXT_draw_transform_feedback
+<li> GL_EXT_multiview_tessellation_geometry_shader
+<li> GL_EXT_multiview_texture_multisample
+<li> GL_EXT_multiview_timer_query
+<li> GL_EXT_occlusion_query_boolean
+<li> GL_EXT_primitive_bounding_box
+<li> GL_EXT_protected_textures
+<li> GL_EXT_robustness
+<li> GL_EXT_shader_framebuffer_fetch_non_coherent
+<li> GL_EXT_static_vertex_array
+<li> GL_EXT_tessellation_point_size
+<li> GL_EXT_tessellation_shader
+<li> GL_EXT_texture_border_clamp
+<li> GL_EXT_texture_buffer
+<li> GL_EXT_texture_compression_s3tc_srgb
+<li> GL_EXT_texture_format_sRGB_override
+<li> GL_EXT_texture_mirror_clamp_to_edge
+<li> GL_EXT_texture_query_lod
+<li> GL_EXT_texture_shadow_lod
+<li> GL_FJ_shader_binary_GCCSO
+<li> GL_IMG_bindless_texture
+<li> GL_IMG_framebuffer_downsample
+<li> GL_IMG_multisampled_render_to_texture
+<li> GL_IMG_program_binary
+<li> GL_IMG_read_format
+<li> GL_IMG_shader_binary
+<li> GL_IMG_texture_compression_pvrtc
+<li> GL_IMG_texture_compression_pvrtc2
+<li> GL_IMG_texture_env_enhanced_fixed_function
+<li> GL_IMG_texture_filter_cubic
+<li> GL_INTEL_blackhole_render
+<li> GL_INTEL_shader_integer_functions2
+<li> GL_KHR_shader_subgroup
+<li> GL_MESA_framebuffer_flip_y
+<li> GL_MESA_program_binary_formats
+<li> GL_MESA_tile_raster_order
+<li> GL_NVX_gpu_multicast2
+<li> GL_NVX_progress_fence
+<li> GL_NV_compute_shader_derivatives
+<li> GL_NV_conservative_raster_pre_snap
+<li> GL_NV_conservative_raster_underestimation
+<li> GL_NV_depth_nonlinear
+<li> GL_NV_fragment_shader_barycentric
+<li> GL_NV_memory_attachment
+<li> GL_NV_mesh_shader
+<li> GL_NV_query_resource_tag
+<li> GL_NV_read_buffer
+<li> GL_NV_read_buffer_front
+<li> GL_NV_representative_fragment_test
+<li> GL_NV_scissor_exclusive
+<li> GL_NV_shader_subgroup_partitioned
+<li> GL_NV_shader_texture_footprint
+<li> GL_NV_shading_rate_image
+<li> GL_NV_vdpau_interop2
+<li> GL_OES_EGL_image
+<li> GL_OES_EGL_image_external
+<li> GL_OES_EGL_image_external_essl3
+<li> GL_OES_blend_equation_separate
+<li> GL_OES_blend_func_separate
+<li> GL_OES_blend_subtract
+<li> GL_OES_compressed_ETC1_RGB8_texture
+<li> GL_OES_compressed_paletted_texture
+<li> GL_OES_copy_image
+<li> GL_OES_depth24
+<li> GL_OES_depth32
+<li> GL_OES_depth_texture
+<li> GL_OES_depth_texture_cube_map
+<li> GL_OES_draw_buffers_indexed
+<li> GL_OES_draw_texture
+<li> GL_OES_element_index_uint
+<li> GL_OES_extended_matrix_palette
+<li> GL_OES_fbo_render_mipmap
+<li> GL_OES_fragment_precision_high
+<li> GL_OES_framebuffer_object
+<li> GL_OES_geometry_point_size
+<li> GL_OES_geometry_shader
+<li> GL_OES_get_program_binary
+<li> GL_OES_gpu_shader5
+<li> GL_OES_mapbuffer
+<li> GL_OES_matrix_get
+<li> GL_OES_matrix_palette
+<li> GL_OES_packed_depth_stencil
+<li> GL_OES_point_size_array
+<li> GL_OES_point_sprite
+<li> GL_OES_read_format
+<li> GL_OES_required_internalformat
+<li> GL_OES_rgb8_rgba8
+<li> GL_OES_sample_shading
+<li> GL_OES_sample_variables
+<li> GL_OES_shader_image_atomic
+<li> GL_OES_shader_io_blocks
+<li> GL_OES_shader_multisample_interpolation
+<li> GL_OES_single_precision
+<li> GL_OES_standard_derivatives
+<li> GL_OES_stencil1
+<li> GL_OES_stencil4
+<li> GL_OES_stencil8
+<li> GL_OES_surfaceless_context
+<li> GL_OES_tessellation_point_size
+<li> GL_OES_tessellation_shader
+<li> GL_OES_texture_3D
+<li> GL_OES_texture_border_clamp
+<li> GL_OES_texture_buffer
+<li> GL_OES_texture_compression_astc
+<li> GL_OES_texture_cube_map
+<li> GL_OES_texture_cube_map_array
+<li> GL_OES_texture_env_crossbar
+<li> GL_OES_texture_mirrored_repeat
+<li> GL_OES_texture_npot
+<li> GL_OES_texture_stencil8
+<li> GL_OES_texture_storage_multisample_2d_array
+<li> GL_OES_texture_view
+<li> GL_OES_vertex_array_object
+<li> GL_OES_vertex_half_float
+<li> GL_OES_vertex_type_10_10_10_2
+<li> GL_QCOM_YUV_texture_gather
+<li> GL_QCOM_shader_framebuffer_fetch_rate
+<li> GL_QCOM_texture_foveated
+<li> GL_QCOM_texture_foveated_subsampled_layout
+<li> GL_VIV_shader_binary
+<li> EGL_ANDROID_GLES_layers
+<li> EGL_ANDROID_get_frame_timestamps
+<li> EGL_ANDROID_get_native_client_buffer
+<li> EGL_ARM_image_format
+<li> EGL_EXT_bind_to_front
+<li> EGL_EXT_client_sync
+<li> EGL_EXT_compositor
+<li> EGL_EXT_gl_colorspace_display_p3
+<li> EGL_EXT_gl_colorspace_display_p3_linear
+<li> EGL_EXT_gl_colorspace_display_p3_passthrough
+<li> EGL_EXT_gl_colorspace_scrgb
+<li> EGL_EXT_image_gl_colorspace
+<li> EGL_EXT_image_implicit_sync_control
+<li> EGL_EXT_surface_CTA861_3_metadata
+<li> EGL_EXT_sync_reuse
+<li> EGL_KHR_display_reference
+<li> EGL_MESA_query_driver
+<li> EGL_NV_context_priority_realtime
+<li> EGL_NV_quadruple_buffer
+<li> EGL_NV_stream_dma
+<li> EGL_NV_stream_flush
+<li> EGL_NV_stream_origin
+<li> EGL_NV_triple_buffer
+<li> EGL_WL_bind_wayland_display
+<li> EGL_WL_create_wayland_buffer_from_image
+<li> GLX_EXT_context_priority
+<li> GLX_EXT_no_config_context
+<li> GLX_NV_multigpu_context
+<li> WGL_NV_multigpu_context
+</ul>
+</ul>
+
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.1.0</b> [07-31-17]
+<ul>
+<li> Enhancements:
+<ul>
+<li> OpenGL 4.6 support added
+<li> Improved Mac OSX build support
+<li> Improved cmake build support
+</ul>
+</ul>
+
+<ul>
+<li> Bug fixes:
+<ul>
+<li> Resolved crash when glXGetCurrentDisplay() is NULL
+<li> CMake: only install PDB files with MSVC
+<li> wglGetProcAddress crash with NOGDI defined
+<li> Mac: using -Os rather than -O2
+</ul>
+</ul>
+
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_gpu_shader_half_float
+<li> GL_AMD_shader_ballot
+<li> GL_ARB_gl_spirv
+<li> GL_EGL_KHR_context_flush_control
+<li> GL_INTEL_conservative_rasterization
+<li> GL_MESA_shader_integer_functions
+<li> GL_NVX_blend_equation_advanced_multi_draw_buffers
+<li> GL_NV_gpu_multicast
+<li> EGL_ARM_implicit_external_sync
+<li> EGL_EXT_gl_colorspace_bt2020_linear
+<li> EGL_EXT_gl_colorspace_bt2020_pq
+<li> EGL_EXT_gl_colorspace_scrgb_linear
+<li> EGL_EXT_image_dma_buf_import_modifiers
+<li> EGL_EXT_pixel_format_float
+<li> EGL_EXT_surface_SMPTE2086_metadata
+<li> EGL_KHR_context_flush_control
+<li> EGL_KHR_no_config_context
+<li> EGL_KHR_stream_attrib
+<li> EGL_MESA_platform_surfaceless
+<li> EGL_NV_stream_cross_display
+<li> EGL_NV_stream_cross_object
+<li> EGL_NV_stream_cross_partition
+<li> EGL_NV_stream_cross_process
+<li> EGL_NV_stream_cross_system
+<li> EGL_NV_stream_fifo_next
+<li> EGL_NV_stream_fifo_synchronous
+<li> EGL_NV_stream_frame_limits
+<li> EGL_NV_stream_remote
+<li> EGL_NV_stream_reset
+<li> EGL_NV_stream_socket
+<li> EGL_NV_stream_socket_inet
+<li> EGL_NV_stream_socket_unix
+<li> WGL_EXT_colorspace
+</ul>
+</ul>
+
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.0.0</b> [07-24-16]
+<ul>
+<li> Enhancements:
+<ul>
+<li> Forward context support added
+<li> OSMesa support added
+<li> EGL support added
+<li> MX support discontinued
+<li> Improved cmake build support
+</ul>
+</ul>
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_shader_explicit_vertex_parameter
+<li> GL_ARB_gl_spirv
+<li> GL_EGL_NV_robustness_video_memory_purge
+<li> GL_EXT_window_rectangles
+<li> GL_INTEL_conservative_rasterization
+<li> GL_KHR_texture_compression_astc_sliced_3d
+<li> GL_MESA_shader_integer_functions
+<li> GL_NVX_blend_equation_advanced_multi_draw_buffers
+<li> GL_NVX_linked_gpu_multicast
+<li> GL_NV_clip_space_w_scaling
+<li> GL_NV_command_list
+<li> GL_NV_conservative_raster_pre_snap_triangles
+<li> GL_NV_draw_vulkan_image
+<li> GL_NV_gpu_multicast
+<li> GL_NV_robustness_video_memory_purge
+<li> GL_NV_shader_atomic_float64
+<li> GL_NV_stereo_view_rendering
+<li> GL_NV_viewport_swizzle
+<li> GLX_EXT_libglvnd
+<li> GLX_NV_robustness_video_memory_purge
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.13.0</b> [08-10-15]
+<ul>
+<li> Enhancements:
+<ul>
+<li> glxewInit, wglewInit
+<li> glewinfo adds support for -version, -profile core|compatibility and -flag debug|forward parameters
+<li> Improved cmake build support
+</ul>
+</ul>
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES3_2_compatibility
+<li> GL_ARB_fragment_shader_interlock
+<li> GL_ARB_gpu_shader_int64
+<li> GL_ARB_parallel_shader_compile
+<li> GL_ARB_post_depth_coverage
+<li> GL_ARB_sample_locations
+<li> GL_ARB_shader_atomic_counter_ops
+<li> GL_ARB_shader_ballot
+<li> GL_ARB_shader_clock
+<li> GL_ARB_shader_viewport_layer_array
+<li> GL_ARB_sparse_texture2
+<li> GL_ARB_sparse_texture_clamp
+<li> GL_ARB_texture_filter_minmax
+<li> GL_INTEL_framebuffer_CMAA
+<li> GL_KHR_no_error
+<li> GL_NV_conservative_raster_dilate
+<li> GL_OVR_multiview
+<li> GL_OVR_multiview2
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.13.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.12.0</b> [01-26-15]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_polygon_offset_clamp
+<li> GL_EXT_post_depth_coverage
+<li> GL_EXT_raster_multisample
+<li> GL_EXT_sparse_texture2
+<li> GL_EXT_texture_filter_minmax
+<li> GL_NV_conservative_raster
+<li> GL_NV_fill_rectangle
+<li> GL_NV_fragment_coverage_to_color
+<li> GL_NV_fragment_shader_interlock
+<li> GL_NV_framebuffer_mixed_samples
+<li> GL_NV_geometry_shader_passthrough
+<li> GL_NV_internalformat_sample_query
+<li> GL_NV_sample_locations
+<li> GL_NV_sample_mask_override_coverage
+<li> GL_NV_shader_atomic_fp16_vector
+<li> GL_NV_uniform_buffer_unified_memory
+<li> GL_NV_viewport_array2
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.12.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.11.0</b> [08-11-14]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.5
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_gcn_shader
+<li> GL_AMD_gpu_shader_int64
+<li> GL_AMD_occlusion_query_event
+<li> GL_AMD_shader_atomic_counter_ops
+<li> GL_AMD_shader_stencil_value_export
+<li> GL_AMD_transform_feedback4
+<li> GL_ARB_ES3_1_compatibility
+<li> GL_ARB_clip_control
+<li> GL_ARB_conditional_render_inverted
+<li> GL_ARB_cull_distance
+<li> GL_ARB_derivative_control
+<li> GL_ARB_direct_state_access
+<li> GL_ARB_get_texture_sub_image
+<li> GL_ARB_pipeline_statistics_query
+<li> GL_ARB_shader_texture_image_samples
+<li> GL_ARB_sparse_buffer
+<li> GL_ARB_texture_barrier
+<li> GL_ARB_transform_feedback_overflow_query
+<li> GL_EXT_debug_label
+<li> GL_EXT_shader_image_load_formatted
+<li> GL_EXT_shader_integer_mix
+<li> GL_INTEL_fragment_shader_ordering
+<li> GL_INTEL_performance_query
+<li> GL_KHR_blend_equation_advanced
+<li> GL_KHR_blend_equation_advanced_coherent
+<li> GL_KHR_context_flush_control
+<li> GL_KHR_robust_buffer_access_behavior
+<li> GL_KHR_robustness
+<li> GL_KHR_texture_compression_astc_hdr
+<li> GL_NV_bindless_multi_draw_indirect_count
+<li> GL_NV_shader_atomic_int64
+<li> GL_NV_shader_thread_group
+<li> GL_NV_shader_thread_shuffle
+<li> GL_REGAL_proc_address
+<li> GLX_ARB_context_flush_control
+<li> GLX_EXT_stereo_tree
+<li> GLX_MESA_query_renderer
+<li> GLX_NV_copy_buffer
+<li> GLX_NV_delay_before_swap
+<li> WGL_ARB_context_flush_control
+<li> WGL_NV_delay_before_swap
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.11.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.10.0</b> [07-22-13]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.4
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_interleaved_elements
+<li> GL_AMD_shader_trinary_minmax
+<li> GL_AMD_sparse_texture
+<li> GL_ANGLE_depth_texture
+<li> GL_ANGLE_framebuffer_blit
+<li> GL_ANGLE_framebuffer_multisample
+<li> GL_ANGLE_instanced_arrays
+<li> GL_ANGLE_pack_reverse_row_order
+<li> GL_ANGLE_program_binary
+<li> GL_ANGLE_texture_compression_dxt1
+<li> GL_ANGLE_texture_compression_dxt3
+<li> GL_ANGLE_texture_compression_dxt5
+<li> GL_ANGLE_texture_usage
+<li> GL_ANGLE_timer_query
+<li> GL_ANGLE_translated_shader_source
+<li> GL_ARB_bindless_texture
+<li> GL_ARB_buffer_storage
+<li> GL_ARB_clear_texture
+<li> GL_ARB_compute_variable_group_size
+<li> GL_ARB_enhanced_layouts
+<li> GL_ARB_indirect_parameters
+<li> GL_ARB_multi_bind
+<li> GL_ARB_query_buffer_object
+<li> GL_ARB_seamless_cubemap_per_texture
+<li> GL_ARB_shader_draw_parameters
+<li> GL_ARB_shader_group_vote
+<li> GL_ARB_sparse_texture
+<li> GL_ARB_texture_mirror_clamp_to_edge
+<li> GL_ARB_texture_stencil8
+<li> GL_ARB_vertex_type_10f_11f_11f_rev
+<li> GL_INTEL_map_texture
+<li> GL_NVX_conditional_render
+<li> GL_NV_bindless_multi_draw_indirect
+<li> GL_NV_blend_equation_advanced
+<li> GL_NV_compute_program5
+<li> GL_NV_deep_texture3D
+<li> GL_NV_draw_texture
+<li> GL_NV_shader_atomic_counters
+<li> GL_NV_shader_storage_buffer_object
+<li> GL_REGAL_ES1_0_compatibility
+<li> GL_REGAL_ES1_1_compatibility
+<li> GL_REGAL_enable
+<li> GLX_EXT_buffer_age
+<li> WGL_ARB_robustness_application_isolation
+<li> WGL_ARB_robustness_share_group_isolation
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.10.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.9.0</b> [08-06-12]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.3 -
+ <a href="http://www.opengl.org/registry/doc/glspec43.compatibility.20120806.pdf">specification</a>,
+ <a href="http://www.khronos.org/assets/uploads/developers/library/overview/opengl_overview.pdf">overview</a>.
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES3_compatibility
+<li> GL_ARB_clear_buffer_object
+<li> GL_ARB_compute_shader
+<li> GL_ARB_copy_image
+<li> GL_ARB_explicit_uniform_location
+<li> GL_ARB_fragment_layer_viewport
+<li> GL_ARB_framebuffer_no_attachments
+<li> GL_ARB_internalformat_query2
+<li> GL_ARB_multi_draw_indirect
+<li> GL_ARB_program_interface_query
+<li> GL_ARB_robust_buffer_access_behavior
+<li> GL_ARB_robustness_application_isolation
+<li> GL_ARB_robustness_share_group_isolation
+<li> GL_ARB_shader_image_size
+<li> GL_ARB_shader_storage_buffer_object
+<li> GL_ARB_stencil_texturing
+<li> GL_ARB_texture_buffer_range
+<li> GL_ARB_texture_query_levels
+<li> GL_ARB_texture_storage_multisample
+<li> GL_ARB_texture_view
+<li> GL_ARB_vertex_attrib_binding
+<li> GL_EXT_debug_marker
+<li> GL_KHR_debug
+<li> GL_REGAL_error_string
+<li> GL_REGAL_extension_query
+<li> GL_REGAL_log
+<li> GLX_ARB_robustness_application_isolation
+<li> GLX_ARB_robustness_share_group_isolation
+<li> GLX_EXT_create_context_es_profile
+<li> WGL_EXT_create_context_es_profile
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Not using GLU library for Makefile builds.
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.8.0</b> [07-17-12]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_pinned_memory
+<li> GL_AMD_query_buffer_object
+<li> GL_AMD_stencil_operation_extended
+<li> GL_AMD_vertex_shader_layer
+<li> GL_AMD_vertex_shader_viewport_index
+<li> GL_NV_bindless_texture
+<li> GL_NV_shader_atomic_float
+<li> GLX_EXT_swap_control_tear
+<li> WGL_EXT_swap_control_tear
+<li> WGL_NV_DX_interop2
+</ul>
+<li> Bug fixes:
+<ul>
+<li> MS Visual Studio 2010 projects added
+<li> GLX_NV_video_out replaces GLX_NV_video_output
+<li> ANSI C prototype for glewInit
+<li> Improved CentOS build support
+<li> Improved GL_ARB_gpu_shader_fp64 support
+<li> ARB_texture_compression_bptc and ARB_copy_buffer constants
+<li> Linux needs to define GLEW_STATIC for static library builds
+<li> Custom code generation problem resolved
+<li> GLEWAPIENTRY added to glew.h for calling convention customization
+<li> Correction for glPathStencilDepthOffsetNV
+<li> Resolve OSX gcc warnings
+<li> Added build support for NetBSD
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.7.0</b> [08-26-11]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.2
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_multi_draw_indirect
+<li> GL_ARB_base_instance
+<li> GL_ARB_compressed_texture_pixel_storage
+<li> GL_ARB_conservative_depth
+<li> GL_ARB_internalformat_query
+<li> GL_ARB_map_buffer_alignment
+<li> GL_ARB_shader_atomic_counters
+<li> GL_ARB_shader_image_load_store
+<li> GL_ARB_shading_language_420pack
+<li> GL_ARB_shading_language_packing
+<li> GL_ARB_texture_storage
+<li> GL_ARB_transform_feedback_instanced
+<li> GL_EXT_framebuffer_multisample_blit_scaled
+<li> GL_NV_path_rendering
+<li> GL_NV_path_rendering
+<li> GLX_MESA_swap_control
+</ul>
+<li> Bug fixes:
+<ul>
+<li> const qualifiers for GL 1.4 MultiDrawArrays, MultiDrawElements
+<li> Add glGetGraphicsResetStatusARB to GL_ARB_robustness
+<li> Remove EXT suffix from GL_KTX_buffer_region entry points
+<li> Solaris needs inttypes.h
+<li> Add ERROR_INVALID_VERSION_ARB and ERROR_INVALID_PROFILE_ARB to WGL_ARB_create_context
+<li> Add GLX_MESA_swap_control
+<li> Set -install_name for OSX
+<li> Add 64-bit darwin build option (SYSTEM=darwin_x86-64)
+<li> Add GL_NV_path_rendering
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.6.0</b> [04-27-11]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_blend_minmax_factor
+<li> GL_AMD_sample_positions
+<li> GL_EXT_x11_sync_object
+<li> GL_NV_texture_multisample
+<li> GL_NV_video_capture
+<li> GLX_NV_video_capture
+<li> WGL_NV_DX_interop
+<li> WGL_NV_video_capture
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Define GLEW_NO_GLU for no glu dependency.
+<li> mx suffix for GLEW MX libraries, build both libraries by default.
+<li> Cygwin build improvements
+<li> Soname of GLEWmx shared libraries
+<li> Query GL extension string only once
+<li> GLX_OML_sync_control no longer requires C99
+<li> glDraw*InstancedARB moved from GL_ARB_draw_instanced to GL_ARB_instanced_arrays
+<li> glFramebufferTextureLayerEXT moved from GL_EXT_geometry_shader4 to GL_EXT_texture_array
+<li> Fixes for BSD build
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.8</b> [01-31-11]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_depth_clamp_separate
+<li> GL_EXT_texture_sRGB_decode
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Borland C++ fix for __int64
+<li> GL_DOUBLE_MATNxM enumerants for OpenGL 4.0
+<li> Correction to glGetTransformFeedbackVarying
+<li> Correction to glSecondaryColorPointer
+<li> Corrections to glGetVertexAttribPointerv and glGetShaderSource
+<li> Switched code repository from svn to git
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.7</b> [11-03-10]
+<ul>
+<li> New extension:
+<ul>
+<li> GL_NVX_gpu_memory_info
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Improved mingw32 build support
+<li> Improved cygwin build support
+<li> glGetPointervEXT fix
+<li> Add GLEW_VERSION_1_2_1
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.6</b> [09-07-10]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.1
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES2_compatibility
+<li> GL_ARB_cl_event
+<li> GL_ARB_debug_output
+<li> GL_ARB_get_program_binary
+<li> GL_ARB_robustness
+<li> GL_ARB_separate_shader_objects
+<li> GL_ARB_shader_precision
+<li> GL_ARB_shader_stencil_export
+<li> GL_ARB_vertex_attrib_64bit
+<li> GL_ARB_viewport_array
+<li> GLX_ARB_create_context_robustness
+<li> GLX_EXT_create_context_es2_profile
+<li> WGL_ARB_create_context_robustness
+<li> WGL_EXT_create_context_es2_profile
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.5</b> [07-13-10]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_debug_output
+<li> GL_AMD_name_gen_delete
+<li> GL_AMD_transform_feedback3_lines_triangles
+<li> GL_NV_multisample_coverage
+<li> GL_NV_vdpau_interop
+<li> GLX_AMD_gpu_association
+<li> GLX_NV_multisample_coverage
+<li> WGL_NV_multisample_coverage
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Compilation issue with GLX_SGI_video_sync
+<li> OpenGL 4.0 double-precision uniform functions added
+<li> Constness of glPointParameterfvARB and glPointParameterfvEXT
+<li> Added glVertexAttribDivisor
+<li> Compilation issue with Nvidia GLX headers
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.4</b> [04-21-10]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.3
+<li> Support for OpenGL 4.0
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_conservative_depth
+<li> GL_ARB_blend_func_extended
+<li> GL_ARB_draw_indirect
+<li> GL_ARB_explicit_attrib_location
+<li> GL_ARB_gpu_shader5
+<li> GL_ARB_gpu_shader_fp64
+<li> GL_ARB_occlusion_query2
+<li> GL_ARB_sampler_objects
+<li> GL_ARB_shader_bit_encoding
+<li> GL_ARB_shader_subroutine
+<li> GL_ARB_shading_language_include
+<li> GL_ARB_tessellation_shader
+<li> GL_ARB_texture_buffer_object_rgb32
+<li> GL_ARB_texture_compression_bptc
+<li> GL_ARB_texture_rgb10_a2ui
+<li> GL_ARB_texture_swizzle
+<li> GL_ARB_timer_query
+<li> GL_ARB_transform_feedback2
+<li> GL_ARB_transform_feedback3
+<li> GL_ARB_vertex_type_2_10_10_10_rev
+<li> GL_EXT_shader_image_load_store
+<li> GL_EXT_vertex_attrib_64bit
+<li> GL_NV_gpu_program5
+<li> GL_NV_gpu_program_fp64
+<li> GL_NV_gpu_shader5
+<li> GL_NV_tessellation_program5
+<li> GL_NV_vertex_attrib_integer_64bit
+<li> GLX_ARB_vertex_buffer_object
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Parameter constness fix for glPointParameteriv and glPointParameterfv
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.3</b> [02-28-10]
+<ul>
+<li> New extensions:
+<ul>
+<li> GLX_INTEL_swap_event
+<li> GL_AMD_seamless_cubemap_per_texture
+<li> GL_AMD_shader_stencil_export
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Correct version detection for GL 3.1 and 3.2
+<li> Missing 3.1 enumerants
+<li> Add glew.pc
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.2</b> [12-31-09]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.1
+<li> Support for OpenGL 3.2
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_draw_buffers_blend
+<li> GL_AMD_performance_monitor
+<li> GL_AMD_texture_texture4
+<li> GL_AMD_vertex_shader_tessellator
+<li> GL_APPLE_aux_depth_stencil
+<li> GL_APPLE_object_purgeable
+<li> GL_APPLE_rgb_422
+<li> GL_APPLE_row_bytes
+<li> GL_APPLE_vertex_program_evaluators
+<li> GL_ARB_compatibility
+<li> GL_ARB_copy_buffer
+<li> GL_ARB_depth_clamp
+<li> GL_ARB_draw_buffers_blend
+<li> GL_ARB_draw_elements_base_vertex
+<li> GL_ARB_fragment_coord_conventions
+<li> GL_ARB_provoking_vertex
+<li> GL_ARB_sample_shading
+<li> GL_ARB_seamless_cube_map
+<li> GL_ARB_shader_texture_lod
+<li> GL_ARB_sync
+<li> GL_ARB_texture_cube_map_array
+<li> GL_ARB_texture_gather
+<li> GL_ARB_texture_multisample
+<li> GL_ARB_texture_query_lod
+<li> GL_ARB_uniform_buffer_object
+<li> GL_ARB_vertex_array_bgra
+<li> GL_ATI_meminfo
+<li> GL_EXT_provoking_vertex
+<li> GL_EXT_separate_shader_objects
+<li> GL_EXT_texture_snorm
+<li> GL_NV_copy_image
+<li> GL_NV_parameter_buffer_object2
+<li> GL_NV_shader_buffer_load
+<li> GL_NV_texture_barrier
+<li> GL_NV_transform_feedback2
+<li> GL_NV_vertex_buffer_unified_memory
+<li> WGL_AMD_gpu_association
+<li> WGL_ARB_create_context_profile
+<li> WGL_NV_copy_image
+<li> GLX_ARB_create_context_profile
+<li> GLX_EXT_swap_control
+<li> GLX_NV_copy_image
+</ul>
+<li> Bug fixes:
+<ul>
+<li> DOS line endings for windows .zip archives only.
+<li> glTransformFeedbackVaryings arguments.
+<li> Resource leak in glewinfo and visualinfo tools.
+<li> WIN32_LEAN_AND_MEAN preprocessor pollution.
+<li> Fixed version detection for GLEW_VERSION_2_1 and GLEW_VERSION_3_0.
+<li> MesaGLUT glut.h GLAPIENTRY dependency.
+<li> glFramebufferTextureLayer correction.
+<li> OSX compiler warnings resolved.
+<li> Cygwin linking to opengl32 by default, rather than X11 OpenGL.
+<li> SnowLeopard (OSX 10.6) gl.h detection.
+<li> Use $(STRIP) consistently.
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.1</b> [11-03-08]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.0
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_depth_buffer_float
+<li> GL_ARB_draw_instance,
+<li> GL_ARB_framebuffer_object
+<li> GL_ARB_framebuffer_sRGB
+<li> GL_ARB_geometry_shader4
+<li> GL_ARB_half_float_pixel
+<li> GL_ARB_half_float_vertex
+<li> GL_ARB_instanced_arrays
+<li> GL_ARB_map_buffer_range
+<li> GL_ARB_texture_buffer_object
+<li> GL_ARB_texture_compression_rgtc
+<li> GL_ARB_vertex_array_object
+<li> GL_EXT_direct_state_access
+<li> GL_EXT_texture_swizzle
+<li> GL_EXT_transform_feedback
+<li> GL_EXT_vertex_array_bgra
+<li> GL_NV_conditional_render
+<li> GL_NV_explicit_multisample
+<li> GL_NV_present_video
+<li> GL_SGIS_point_line_texgen
+<li> GL_SGIX_convolution_accuracy
+<li> WGL_ARB_create_context
+<li> WGL_ARB_framebuffer_sRGB
+<li> WGL_NV_present_video
+<li> WGL_NV_swap_group
+<li> WGL_NV_video_output
+<li> GLX_ARB_create_context
+<li> GLX_ARB_framebuffer_sRGB
+<li> GLX_NV_present_video
+<li> GLX_NV_swap_group
+<li> GLX_NV_video_output
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Licensing issues with documentation
+<li> Problems with long long and _MSC_VER on MINGW
+<li> Incorrect parameter for glGetUniformLocation
+<li> glewGetExtension fails on last entry
+<li> Incomplete GL_NV_texture_shader tokens
+<li> Scripting problems on Cygwin
+<li> Incorrect definition for GLint on OS X
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.0</b> [12-27-07]
+<ul>
+<li> New features:
+<ul>
+<li> Licensing change (BSD, Mesa 3-D, Khronos)
+<li> Switch to using registry on <a href="http://www.opengl.org/registry/">www.opengl.org</a>
+<li> Support for major and minor version strings
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_APPLE_flush_buffer_range
+<li> GL_GREMEDY_frame_terminator
+<li> GLX_EXT_texture_from_pixmap
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect 64-bit type definitions
+<li> Do not strip static library on install
+<li> Missing tokens in GL_ATI_fragment_shader and WGL_{ARB,EXT}_make_current_read
+<li> Missing tokens in GL_VERSION_2_1
+<li> Missing functions in GL_VERSION_1_4
+<li> Incorrect parameter type for glXCopyContext
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.4.0</b> [04-27-07]
+<ul>
+<li> New features:
+<ul>
+<li> Extension variables are declared const to avoid possible
+corruption of their values
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_NV_depth_range_unclamped
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect tokens in GL_NV_transform_feedback and GL_NV_framebuffer_multisample_coverage
+<li> Incorrect function names in GL_EXT_gpu_program_parameters
+<li> Missing tokens in GL_EXT_framebuffer_multisample
+<li> GLEW_MX initialization problem for WGL_{ARB,EXT}_extensions_string
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.6</b> [03-04-07]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_ATI_shader_texture_lod
+<li> GL_EXT_gpu_program_parameters
+<li> GL_NV_geometry_shader4
+<li> WGL_NV_gpu_affinity
+<li> GLX_SGIX_hyperpipe
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing include guards in glxew.h
+<li> Makefile and install problems for Cygwin builds
+<li> Install problem for Linux AMD64 builds
+<li> Incorrect token in GL_ATI_texture_compression_3dc
+<li> Missing tokens from GL_ATIX_point_sprites
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.5</b> [11-21-06]
+<ul>
+<li> New features:
+<ul>
+<li> Support for core OpenGL 2.1
+<li> Debug support for glewIsSupported
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_bindable_uniform
+<li> GL_EXT_draw_buffers2
+<li> GL_EXT_draw_instanced
+<li> GL_EXT_framebuffer_sRGB
+<li> GL_EXT_geometry_shader4
+<li> GL_EXT_gpu_shader4
+<li> GL_EXT_packed_float
+<li> GL_EXT_texture_array
+<li> GL_EXT_texture_buffer_object
+<li> GL_EXT_texture_compression_latc
+<li> GL_EXT_texture_compression_rgtc
+<li> GL_EXT_texture_integer
+<li> GL_EXT_texture_shared_exponent
+<li> GL_EXT_timer_query
+<li> GL_NV_depth_buffer_float
+<li> GL_NV_fragment_program4
+<li> GL_NV_framebuffer_multisample_coverage
+<li> GL_NV_geometry_program4
+<li> GL_NV_gpu_program4
+<li> GL_NV_parameter_buffer_object
+<li> GL_NV_transform_feedback
+<li> GL_NV_vertex_program4
+<li> GL_OES_byte_coordinates
+<li> GL_OES_compressed_paletted_texture
+<li> GL_OES_read_format
+<li> GL_OES_single_precision
+<li> WGL_EXT_pixel_format_packed_float
+<li> WGL_EXT_framebuffer_sRGB
+<li> GLX_EXT_fbconfig_packed_float
+<li> GLX_EXT_framebuffer_sRGB
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Wrong GLXContext definition on Solaris
+<li> Makefile problem for parallel builds
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.4</b> [03-04-06]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_framebuffer_blit
+<li> GL_EXT_framebuffer_multisample
+<li> GL_EXT_packed_depth_stencil
+<li> GL_MESAX_texture_stack
+<li> WGL_3DL_stereo_control
+</ul>
+</ul>
+<ul>
+<li> Bug fixes:
+<ul>
+<li> glBlendEquation missing from GL_ARB_imaging
+<li> Wrong APIENTRY definition for Cygwin
+<li> Incorrect OS X OpenGL types
+<li> Unix 64-bit installation patch
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.3</b> [05-16-05]
+<ul>
+<li> New feature:
+<ul>
+<li> Code generation option to split source into multiple files
+</ul>
+</ul>
+<ul>
+<li> Bug fixes:
+<ul>
+<li> OpenGL 2.0 core initialization problems
+<li> Wrong value for token GL_SHADER_TYPE
+<li> Missing tokens in GL_ATI_fragment_shader
+<li> Missing entry points in GL_ARB_transpose_matrix
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.2</b> [03-16-05]
+<ul>
+<li> New extension:
+<ul>
+<li> GL_APPLE_pixel_buffer
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing OpenGL 2.0 entry points
+<li> Missing tokens in GL_SGIX_shadow
+<li> MinGW makefile problem
+<li> Check for incorrect OpenGL version string on SiS hardware
+<li> Documentation update to meet the HTML 4.01 Transitional specification
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.1</b> [02-02-05]
+<ul>
+<li> New features:
+<ul>
+<li> Consistent Unix and Windows versioning
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_framebuffer_object
+<li> GL_ARB_pixel_buffer_object
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing OpenGL 2.0 tokens
+<li> Incorrect typedefs (GLhandleARB and GLhalf)
+<li> Borland compiler problems
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.0</b> [01-04-05]
+<ul>
+<li> New features:
+<ul>
+<li> Support for core OpenGL 2.0
+<li> <tt>glewIsSupported</tt> provides efficient string-based extension checks
+<li> Custom code generation from a list of extensions
+<li> Makefile changes
+</ul>
+<li> New extensions:
+<ul>
+<li> WGL_ATI_render_texture_rectangle
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect function signature in OpenGL 1.5 core
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.5</b> [12-06-04]
+<ul>
+<li> New extensions:
+<ul>
+<li>GL_ATI_texture_compression_3dc
+<li>GL_EXT_Cg_shader
+<li>GL_EXT_draw_range_elements
+<li>GL_KTX_buffer_region
+</ul>
+<li> Bug fixes:
+<ul>
+<li> OpenGL version detection bug
+<li> Problems with wxWindows and MinGW compilation
+<li> <tt>visualinfo</tt> compilation problem with GLEW_MX specified
+<li> Wrong token name in OpenGL 1.5 core
+</ul>
+<li> Support for FreeBSD
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.4</b> [09-06-04]
+<ul>
+<li> Added ARB_draw_buffers and ARB_texture_rectangle
+<li> Fixed bug in ARB_shader_objects
+<li> Replaced <tt>wglinfo</tt> with <tt>visualinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.3</b> [06-10-04]
+<ul>
+<li> Added GL_NV_fragment_program2, GL_NV_fragment_program_option, GL_NV_vertex_program2_option, GL_NV_vertex_program3
+<li> Bug fix in GL_ARB_vertex_blend
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.2</b> [05-08-04]
+<ul>
+<li> Added GL_EXT_pixel_buffer_object, removed GL_NV_element_array
+<li> Fixed GLEW_MX problems
+<li> Bug fix in GL_EXT_texture_rectangle and <tt>wglinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.1</b> [03-18-04]
+<ul>
+<li> Bug fix in OpenGL version query (early release of 1.2.0 contained this bug)
+<li> Bug fix in GL_ARB_shader_objects and temporary bug fix in GL_ARB_vertex_shader
+<li> Added flags on GDI support and multisampling to <tt>wglinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.0</b> [02-19-04]
+<ul>
+<li> Added full OpenGL 1.5 support
+<li> Added support for multiple rendering contexts with different capabilities
+<li> Added command line flags to <tt>glewinfo</tt> for selecting displays and visuals
+<li> Added GLX_SGIS_multisample, GLX_SUN_video_resize, and GL_SUN_read_video_pixels
+<li> Added MinGW/MSYS support
+<li> Bug fixes in GL_ARB_shader_objects and the OS X build
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.4</b> [12-15-03]
+<ul>
+<li> Added GL_APPLE_float_pixels, GL_APPLE_texture_range,
+GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
+GLX_ATI_pixel_format_float, and GLX_ATI_render_texture
+<li> Bug fixes in GL_ATI_map_object_buffer and GL_ATI_fragment_shader
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.3</b> [10-28-03]
+<ul>
+<li> Added Solaris and Darwin support
+<li> Added GL_ARB_fragment_shader, GL_ARB_shader_objects, and GL_ARB_vertex_shader
+<li> Fixed bug in GL_WIN_swap_hint
+<li> Removed <tt>glewinfo</tt>'s dependency on <tt>GLUT</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.2</b> [09-15-03]
+<ul>
+<li> Removed dependency on WGL_{ARB,EXT}_extensions_string to make GLEW run on Matrox cards
+<li> Added glewGetString for querying the GLEW version string
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.1</b> [08-11-03]
+<ul>
+<li> Added GLX_NV_float_buffer, GL_ARB_shading_language_100, and GL_ARB_texture_non_power_of_two
+<li> Fixed bug in GL_ARB_vertex_buffer_object
+<li> Minor updates in documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.0</b> [07-08-03]
+<ul>
+<li> Added automatic code generation
+<li> Added almost every extension in the registry
+<li> Added separate namespace
+<li> Added Irix support
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.7</b> [06-29-03]
+<ul>
+<li> Added GL_EXT_depth_bounds_test
+<li> Fixed typos
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.6</b> [05-05-03]
+<ul>
+<li> Added ARB_vertex_buffer_object and NV_half_float
+<li> Updated <tt>wglinfo</tt>
+<li> Temporary Linux bug fixes (problems with SDL and MESA)
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.5</b> [02-17-03]
+<ul>
+<li> Bug fixes
+<li> Added <tt>wglinfo</tt>
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.4</b> [02-02-03]
+<ul>
+<li> Added NV_texture_expand_normal
+<li> Added mingw support
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.3</b> [01-09-03]
+<ul>
+<li> Cleaned up ATI extensions
+<li> Changed function prototypes to match glext.h
+<li> Added EXT_texture3D
+<li> Fixed typos in ATI_vertex_attrib_array_object and ATI_draw_buffers
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.2</b> [12-21-02]
+<ul>
+<li> Added list of supported extensions to documentation
+<li> Added NV_half_float and NV_texgen_emboss
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.1</b> [12-17-02]
+<ul>
+<li> Bug fixes
+<li> Added glewGetExtension
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.0</b> [12-12-02]
+<ul>
+<li> Initial release
+</ul>
+</ul>
+<hr align="center">
+
diff --git a/glew/auto/extensions/gl/.dummy b/glew/auto/extensions/gl/.dummy
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/glew/auto/extensions/gl/.dummy
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_GLES_layers b/glew/auto/extensions/gl/EGL_ANDROID_GLES_layers
new file mode 100644
index 0000000..b800fe1
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_GLES_layers
@@ -0,0 +1,4 @@
+EGL_ANDROID_GLES_layers
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_GLES_layers
+
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_blob_cache b/glew/auto/extensions/gl/EGL_ANDROID_blob_cache
new file mode 100644
index 0000000..87c9e40
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_blob_cache
@@ -0,0 +1,5 @@
+EGL_ANDROID_blob_cache
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_blob_cache
+
+ void eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_create_native_client_buffer b/glew/auto/extensions/gl/EGL_ANDROID_create_native_client_buffer
new file mode 100644
index 0000000..1a519c8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_create_native_client_buffer
@@ -0,0 +1,9 @@
+EGL_ANDROID_create_native_client_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_create_native_client_buffer
+
+ EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+ EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+ EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+ EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+ EGLClientBuffer eglCreateNativeClientBufferANDROID (const EGLint* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_framebuffer_target b/glew/auto/extensions/gl/EGL_ANDROID_framebuffer_target
new file mode 100644
index 0000000..3fdbdaa
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_framebuffer_target
@@ -0,0 +1,5 @@
+EGL_ANDROID_framebuffer_target
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_framebuffer_target
+
+ EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_front_buffer_auto_refresh b/glew/auto/extensions/gl/EGL_ANDROID_front_buffer_auto_refresh
new file mode 100644
index 0000000..b49e6f5
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_front_buffer_auto_refresh
@@ -0,0 +1,5 @@
+EGL_ANDROID_front_buffer_auto_refresh
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_front_buffer_auto_refresh
+
+ EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_get_frame_timestamps b/glew/auto/extensions/gl/EGL_ANDROID_get_frame_timestamps
new file mode 100644
index 0000000..3585577
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_get_frame_timestamps
@@ -0,0 +1,24 @@
+EGL_ANDROID_get_frame_timestamps
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_get_frame_timestamps
+
+ EGL_TIMESTAMPS_ANDROID 0x3430
+ EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+ EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+ EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+ EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+ EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+ EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+ EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+ EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+ EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+ EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+ EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+ EGL_READS_DONE_TIME_ANDROID 0x343C
+ EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1)
+ EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2)
+ EGLBoolean eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint* names, EGLnsecsANDROID* values)
+ EGLBoolean eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name)
+ EGLBoolean eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp)
+ EGLBoolean eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint* timestamps, EGLnsecsANDROID* values)
+ EGLBoolean eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR* frameId)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_get_native_client_buffer b/glew/auto/extensions/gl/EGL_ANDROID_get_native_client_buffer
new file mode 100644
index 0000000..9ffc655
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_get_native_client_buffer
@@ -0,0 +1,5 @@
+EGL_ANDROID_get_native_client_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_get_native_client_buffer
+
+ EGLClientBuffer eglGetNativeClientBufferANDROID (const struct AHardwareBuffer* buffer)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_image_native_buffer b/glew/auto/extensions/gl/EGL_ANDROID_image_native_buffer
new file mode 100644
index 0000000..fe04035
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_image_native_buffer
@@ -0,0 +1,5 @@
+EGL_ANDROID_image_native_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_image_native_buffer
+
+ EGL_NATIVE_BUFFER_ANDROID 0x3140
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_native_fence_sync b/glew/auto/extensions/gl/EGL_ANDROID_native_fence_sync
new file mode 100644
index 0000000..2c44d34
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_native_fence_sync
@@ -0,0 +1,9 @@
+EGL_ANDROID_native_fence_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_native_fence_sync
+
+ EGL_NO_NATIVE_FENCE_FD_ANDROID -1
+ EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+ EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+ EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+ EGLint eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_presentation_time b/glew/auto/extensions/gl/EGL_ANDROID_presentation_time
new file mode 100644
index 0000000..8c5ca58
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_presentation_time
@@ -0,0 +1,5 @@
+EGL_ANDROID_presentation_time
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_presentation_time
+
+ EGLBoolean eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time)
diff --git a/glew/auto/extensions/gl/EGL_ANDROID_recordable b/glew/auto/extensions/gl/EGL_ANDROID_recordable
new file mode 100644
index 0000000..17b8c31
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANDROID_recordable
@@ -0,0 +1,5 @@
+EGL_ANDROID_recordable
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANDROID_recordable
+
+ EGL_RECORDABLE_ANDROID 0x3142
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_d3d_share_handle_client_buffer b/glew/auto/extensions/gl/EGL_ANGLE_d3d_share_handle_client_buffer
new file mode 100644
index 0000000..fa9748e
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_d3d_share_handle_client_buffer
@@ -0,0 +1,5 @@
+EGL_ANGLE_d3d_share_handle_client_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_d3d_share_handle_client_buffer
+
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_device_d3d b/glew/auto/extensions/gl/EGL_ANGLE_device_d3d
new file mode 100644
index 0000000..aad1c1a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_device_d3d
@@ -0,0 +1,6 @@
+EGL_ANGLE_device_d3d
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_device_d3d
+
+ EGL_D3D9_DEVICE_ANGLE 0x33A0
+ EGL_D3D11_DEVICE_ANGLE 0x33A1
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_query_surface_pointer b/glew/auto/extensions/gl/EGL_ANGLE_query_surface_pointer
new file mode 100644
index 0000000..0b459e2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_query_surface_pointer
@@ -0,0 +1,5 @@
+EGL_ANGLE_query_surface_pointer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_query_surface_pointer
+
+ EGLBoolean eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void** value)
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_surface_d3d_texture_2d_share_handle b/glew/auto/extensions/gl/EGL_ANGLE_surface_d3d_texture_2d_share_handle
new file mode 100644
index 0000000..d5c1696
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_surface_d3d_texture_2d_share_handle
@@ -0,0 +1,5 @@
+EGL_ANGLE_surface_d3d_texture_2d_share_handle
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_surface_d3d_texture_2d_share_handle
+
+ EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_sync_control_rate b/glew/auto/extensions/gl/EGL_ANGLE_sync_control_rate
new file mode 100644
index 0000000..0db2c2a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_sync_control_rate
@@ -0,0 +1,5 @@
+EGL_ANGLE_sync_control_rate
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_sync_control_rate
+
+ EGLBoolean eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint* numerator, EGLint* denominator)
diff --git a/glew/auto/extensions/gl/EGL_ANGLE_window_fixed_size b/glew/auto/extensions/gl/EGL_ANGLE_window_fixed_size
new file mode 100644
index 0000000..299b6c7
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ANGLE_window_fixed_size
@@ -0,0 +1,5 @@
+EGL_ANGLE_window_fixed_size
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ANGLE_window_fixed_size
+
+ EGL_FIXED_SIZE_ANGLE 0x3201
diff --git a/glew/auto/extensions/gl/EGL_ARM_image_format b/glew/auto/extensions/gl/EGL_ARM_image_format
new file mode 100644
index 0000000..06fb809
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ARM_image_format
@@ -0,0 +1,6 @@
+EGL_ARM_image_format
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ARM_image_format
+
+ EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
+ EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
diff --git a/glew/auto/extensions/gl/EGL_ARM_implicit_external_sync b/glew/auto/extensions/gl/EGL_ARM_implicit_external_sync
new file mode 100644
index 0000000..ec094f2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ARM_implicit_external_sync
@@ -0,0 +1,5 @@
+EGL_ARM_implicit_external_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ARM_implicit_external_sync
+
+ EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
diff --git a/glew/auto/extensions/gl/EGL_ARM_pixmap_multisample_discard b/glew/auto/extensions/gl/EGL_ARM_pixmap_multisample_discard
new file mode 100644
index 0000000..5f2b9e7
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_ARM_pixmap_multisample_discard
@@ -0,0 +1,5 @@
+EGL_ARM_pixmap_multisample_discard
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_ARM_pixmap_multisample_discard
+
+ EGL_DISCARD_SAMPLES_ARM 0x3286
diff --git a/glew/auto/extensions/gl/EGL_EXT_bind_to_front b/glew/auto/extensions/gl/EGL_EXT_bind_to_front
new file mode 100644
index 0000000..363d502
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_bind_to_front
@@ -0,0 +1,5 @@
+EGL_EXT_bind_to_front
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_bind_to_front
+
+ EGL_FRONT_BUFFER_EXT 0x3464
diff --git a/glew/auto/extensions/gl/EGL_EXT_buffer_age b/glew/auto/extensions/gl/EGL_EXT_buffer_age
new file mode 100644
index 0000000..4dc18ad
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_buffer_age
@@ -0,0 +1,5 @@
+EGL_EXT_buffer_age
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_buffer_age
+
+ EGL_BUFFER_AGE_EXT 0x313D
diff --git a/glew/auto/extensions/gl/EGL_EXT_client_extensions b/glew/auto/extensions/gl/EGL_EXT_client_extensions
new file mode 100644
index 0000000..8251a19
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_client_extensions
@@ -0,0 +1,4 @@
+EGL_EXT_client_extensions
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_client_extensions
+
diff --git a/glew/auto/extensions/gl/EGL_EXT_client_sync b/glew/auto/extensions/gl/EGL_EXT_client_sync
new file mode 100644
index 0000000..fe694ac
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_client_sync
@@ -0,0 +1,7 @@
+EGL_EXT_client_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_client_sync
+
+ EGL_SYNC_CLIENT_EXT 0x3364
+ EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+ EGLBoolean eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_EXT_compositor b/glew/auto/extensions/gl/EGL_EXT_compositor
new file mode 100644
index 0000000..48cb931
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_compositor
@@ -0,0 +1,15 @@
+EGL_EXT_compositor
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_compositor
+
+ EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+ EGL_EXTERNAL_REF_ID_EXT 0x3461
+ EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+ EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+ EGLBoolean eglCompositorBindTexWindowEXT (EGLint external_win_id)
+ EGLBoolean eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint* context_attributes, EGLint num_entries)
+ EGLBoolean eglCompositorSetContextListEXT (const EGLint* external_ref_ids, EGLint num_entries)
+ EGLBoolean eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height)
+ EGLBoolean eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint* window_attributes, EGLint num_entries)
+ EGLBoolean eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint* external_win_ids, EGLint num_entries)
+ EGLBoolean eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy)
diff --git a/glew/auto/extensions/gl/EGL_EXT_config_select_group b/glew/auto/extensions/gl/EGL_EXT_config_select_group
new file mode 100644
index 0000000..a3006f4
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_config_select_group
@@ -0,0 +1,5 @@
+EGL_EXT_config_select_group
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_config_select_group
+
+ EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
diff --git a/glew/auto/extensions/gl/EGL_EXT_create_context_robustness b/glew/auto/extensions/gl/EGL_EXT_create_context_robustness
new file mode 100644
index 0000000..e09b15c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_create_context_robustness
@@ -0,0 +1,8 @@
+EGL_EXT_create_context_robustness
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_create_context_robustness
+
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+ EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+ EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_base b/glew/auto/extensions/gl/EGL_EXT_device_base
new file mode 100644
index 0000000..fa1d2e1
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_base
@@ -0,0 +1,7 @@
+EGL_EXT_device_base
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_base
+
+ EGL_BAD_DEVICE_EXT 0x322B
+ EGL_DEVICE_EXT 0x322C
+ EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_drm b/glew/auto/extensions/gl/EGL_EXT_device_drm
new file mode 100644
index 0000000..ac10157
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_drm
@@ -0,0 +1,6 @@
+EGL_EXT_device_drm
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_drm
+
+ EGL_DRM_DEVICE_FILE_EXT 0x3233
+ EGL_DRM_MASTER_FD_EXT 0x333C
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_drm_render_node b/glew/auto/extensions/gl/EGL_EXT_device_drm_render_node
new file mode 100644
index 0000000..70deeb3
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_drm_render_node
@@ -0,0 +1,5 @@
+EGL_EXT_device_drm_render_node
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_drm_render_node
+
+ EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_enumeration b/glew/auto/extensions/gl/EGL_EXT_device_enumeration
new file mode 100644
index 0000000..113cd54
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_enumeration
@@ -0,0 +1,5 @@
+EGL_EXT_device_enumeration
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_enumeration
+
+ EGLBoolean eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT* devices, EGLint* num_devices)
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_openwf b/glew/auto/extensions/gl/EGL_EXT_device_openwf
new file mode 100644
index 0000000..65a62b0
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_openwf
@@ -0,0 +1,6 @@
+EGL_EXT_device_openwf
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_openwf
+
+ EGL_OPENWF_DEVICE_ID_EXT 0x3237
+ EGL_OPENWF_DEVICE_EXT 0x333D
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_persistent_id b/glew/auto/extensions/gl/EGL_EXT_device_persistent_id
new file mode 100644
index 0000000..825e1c0
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_persistent_id
@@ -0,0 +1,8 @@
+EGL_EXT_device_persistent_id
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_persistent_id
+
+ EGL_DEVICE_UUID_EXT 0x335C
+ EGL_DRIVER_UUID_EXT 0x335D
+ EGL_DRIVER_NAME_EXT 0x335E
+ EGLBoolean eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void* value, EGLint* size)
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_query b/glew/auto/extensions/gl/EGL_EXT_device_query
new file mode 100644
index 0000000..1263c48
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_query
@@ -0,0 +1,10 @@
+EGL_EXT_device_query
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_query
+
+ EGL_BAD_DEVICE_EXT 0x322B
+ EGL_DEVICE_EXT 0x322C
+ EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
+ EGLBoolean eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib* value)
+ const char* eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name)
+ EGLBoolean eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib* value)
diff --git a/glew/auto/extensions/gl/EGL_EXT_device_query_name b/glew/auto/extensions/gl/EGL_EXT_device_query_name
new file mode 100644
index 0000000..0de8b45
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_device_query_name
@@ -0,0 +1,5 @@
+EGL_EXT_device_query_name
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_device_query_name
+
+ EGL_RENDERER_EXT 0x335F
diff --git a/glew/auto/extensions/gl/EGL_EXT_explicit_device b/glew/auto/extensions/gl/EGL_EXT_explicit_device
new file mode 100644
index 0000000..63d61b2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_explicit_device
@@ -0,0 +1,5 @@
+EGL_EXT_explicit_device
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_explicit_device
+
+ EGL_DEVICE_EXT 0x322C
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_linear b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_linear
new file mode 100644
index 0000000..72d7df1
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_linear
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_bt2020_linear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_bt2020_linear
+
+ EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_pq b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_pq
new file mode 100644
index 0000000..99ef504
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_bt2020_pq
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_bt2020_pq
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_bt2020_pq
+
+ EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3 b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3
new file mode 100644
index 0000000..32de46d
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_display_p3
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_display_p3
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_linear b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_linear
new file mode 100644
index 0000000..b951618
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_linear
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_display_p3_linear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_display_p3_linear
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_passthrough b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_passthrough
new file mode 100644
index 0000000..ba9b81c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_display_p3_passthrough
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_display_p3_passthrough
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_display_p3_passthrough
+
+ EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb
new file mode 100644
index 0000000..fc0dff6
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_scrgb
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_scrgb
+
+ EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
diff --git a/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb_linear b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb_linear
new file mode 100644
index 0000000..dd370cf
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_gl_colorspace_scrgb_linear
@@ -0,0 +1,5 @@
+EGL_EXT_gl_colorspace_scrgb_linear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_gl_colorspace_scrgb_linear
+
+ EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
diff --git a/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import b/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import
new file mode 100644
index 0000000..419eb0f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import
@@ -0,0 +1,26 @@
+EGL_EXT_image_dma_buf_import
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_image_dma_buf_import
+
+ EGL_LINUX_DMA_BUF_EXT 0x3270
+ EGL_LINUX_DRM_FOURCC_EXT 0x3271
+ EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+ EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+ EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+ EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+ EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+ EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+ EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+ EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+ EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+ EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+ EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+ EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+ EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+ EGL_ITU_REC601_EXT 0x327F
+ EGL_ITU_REC709_EXT 0x3280
+ EGL_ITU_REC2020_EXT 0x3281
+ EGL_YUV_FULL_RANGE_EXT 0x3282
+ EGL_YUV_NARROW_RANGE_EXT 0x3283
+ EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+ EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
diff --git a/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import_modifiers b/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import_modifiers
new file mode 100644
index 0000000..7a27ee8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_image_dma_buf_import_modifiers
@@ -0,0 +1,17 @@
+EGL_EXT_image_dma_buf_import_modifiers
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_image_dma_buf_import_modifiers
+
+ EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+ EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+ EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+ EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+ EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+ EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+ EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+ EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+ EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+ EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+ EGLBoolean eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint* formats, EGLint* num_formats)
+ EGLBoolean eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR* modifiers, EGLBoolean* external_only, EGLint* num_modifiers)
diff --git a/glew/auto/extensions/gl/EGL_EXT_image_gl_colorspace b/glew/auto/extensions/gl/EGL_EXT_image_gl_colorspace
new file mode 100644
index 0000000..131dd70
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_image_gl_colorspace
@@ -0,0 +1,6 @@
+EGL_EXT_image_gl_colorspace
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_image_gl_colorspace
+
+ EGL_GL_COLORSPACE 0x309D
+ EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
diff --git a/glew/auto/extensions/gl/EGL_EXT_image_implicit_sync_control b/glew/auto/extensions/gl/EGL_EXT_image_implicit_sync_control
new file mode 100644
index 0000000..9e188ee
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_image_implicit_sync_control
@@ -0,0 +1,7 @@
+EGL_EXT_image_implicit_sync_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_image_implicit_sync_control
+
+ EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+ EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+ EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
diff --git a/glew/auto/extensions/gl/EGL_EXT_multiview_window b/glew/auto/extensions/gl/EGL_EXT_multiview_window
new file mode 100644
index 0000000..4ae0156
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_multiview_window
@@ -0,0 +1,5 @@
+EGL_EXT_multiview_window
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_multiview_window
+
+ EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
diff --git a/glew/auto/extensions/gl/EGL_EXT_output_base b/glew/auto/extensions/gl/EGL_EXT_output_base
new file mode 100644
index 0000000..440ac00
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_output_base
@@ -0,0 +1,17 @@
+EGL_EXT_output_base
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_output_base
+
+ EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+ EGL_BAD_OUTPUT_PORT_EXT 0x322E
+ EGL_SWAP_INTERVAL_EXT 0x322F
+ EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0)
+ EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0)
+ EGLBoolean eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib* attrib_list, EGLOutputLayerEXT* layers, EGLint max_layers, EGLint* num_layers)
+ EGLBoolean eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib* attrib_list, EGLOutputPortEXT* ports, EGLint max_ports, EGLint* num_ports)
+ EGLBoolean eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value)
+ EGLBoolean eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value)
+ EGLBoolean eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib* value)
+ const char* eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name)
+ EGLBoolean eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib* value)
+ const char* eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name)
diff --git a/glew/auto/extensions/gl/EGL_EXT_output_drm b/glew/auto/extensions/gl/EGL_EXT_output_drm
new file mode 100644
index 0000000..4fa74c7
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_output_drm
@@ -0,0 +1,7 @@
+EGL_EXT_output_drm
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_output_drm
+
+ EGL_DRM_CRTC_EXT 0x3234
+ EGL_DRM_PLANE_EXT 0x3235
+ EGL_DRM_CONNECTOR_EXT 0x3236
diff --git a/glew/auto/extensions/gl/EGL_EXT_output_openwf b/glew/auto/extensions/gl/EGL_EXT_output_openwf
new file mode 100644
index 0000000..5c91d61
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_output_openwf
@@ -0,0 +1,6 @@
+EGL_EXT_output_openwf
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_output_openwf
+
+ EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+ EGL_OPENWF_PORT_ID_EXT 0x3239
diff --git a/glew/auto/extensions/gl/EGL_EXT_pixel_format_float b/glew/auto/extensions/gl/EGL_EXT_pixel_format_float
new file mode 100644
index 0000000..06e9959
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_pixel_format_float
@@ -0,0 +1,7 @@
+EGL_EXT_pixel_format_float
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_pixel_format_float
+
+ EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+ EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+ EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_base b/glew/auto/extensions/gl/EGL_EXT_platform_base
new file mode 100644
index 0000000..9dbb7a5
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_base
@@ -0,0 +1,7 @@
+EGL_EXT_platform_base
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_base
+
+ EGLSurface eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void* native_pixmap, const EGLint* attrib_list)
+ EGLSurface eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void* native_window, const EGLint* attrib_list)
+ EGLDisplay eglGetPlatformDisplayEXT (EGLenum platform, void* native_display, const EGLint* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_device b/glew/auto/extensions/gl/EGL_EXT_platform_device
new file mode 100644
index 0000000..c2e8cfe
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_device
@@ -0,0 +1,5 @@
+EGL_EXT_platform_device
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_device
+
+ EGL_PLATFORM_DEVICE_EXT 0x313F
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_wayland b/glew/auto/extensions/gl/EGL_EXT_platform_wayland
new file mode 100644
index 0000000..d1f0778
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_wayland
@@ -0,0 +1,5 @@
+EGL_EXT_platform_wayland
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_wayland
+
+ EGL_PLATFORM_WAYLAND_EXT 0x31D8
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_x11 b/glew/auto/extensions/gl/EGL_EXT_platform_x11
new file mode 100644
index 0000000..5fb32b1
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_x11
@@ -0,0 +1,6 @@
+EGL_EXT_platform_x11
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_x11
+
+ EGL_PLATFORM_X11_EXT 0x31D5
+ EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
diff --git a/glew/auto/extensions/gl/EGL_EXT_platform_xcb b/glew/auto/extensions/gl/EGL_EXT_platform_xcb
new file mode 100644
index 0000000..2cf34c9
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_platform_xcb
@@ -0,0 +1,6 @@
+EGL_EXT_platform_xcb
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_platform_xcb
+
+ EGL_PLATFORM_XCB_EXT 0x31DC
+ EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
diff --git a/glew/auto/extensions/gl/EGL_EXT_present_opaque b/glew/auto/extensions/gl/EGL_EXT_present_opaque
new file mode 100644
index 0000000..687c118
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_present_opaque
@@ -0,0 +1,5 @@
+EGL_EXT_present_opaque
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_present_opaque
+
+ EGL_PRESENT_OPAQUE_EXT 0x31DF
diff --git a/glew/auto/extensions/gl/EGL_EXT_protected_content b/glew/auto/extensions/gl/EGL_EXT_protected_content
new file mode 100644
index 0000000..8d274a2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_protected_content
@@ -0,0 +1,5 @@
+EGL_EXT_protected_content
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_protected_content
+
+ EGL_PROTECTED_CONTENT_EXT 0x32C0
diff --git a/glew/auto/extensions/gl/EGL_EXT_protected_surface b/glew/auto/extensions/gl/EGL_EXT_protected_surface
new file mode 100644
index 0000000..b2444bc
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_protected_surface
@@ -0,0 +1,5 @@
+EGL_EXT_protected_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_protected_surface
+
+ EGL_PROTECTED_CONTENT_EXT 0x32C0
diff --git a/glew/auto/extensions/gl/EGL_EXT_stream_consumer_egloutput b/glew/auto/extensions/gl/EGL_EXT_stream_consumer_egloutput
new file mode 100644
index 0000000..ce6e254
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_stream_consumer_egloutput
@@ -0,0 +1,5 @@
+EGL_EXT_stream_consumer_egloutput
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_stream_consumer_egloutput
+
+ EGLBoolean eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer)
diff --git a/glew/auto/extensions/gl/EGL_EXT_surface_CTA861_3_metadata b/glew/auto/extensions/gl/EGL_EXT_surface_CTA861_3_metadata
new file mode 100644
index 0000000..cae27be
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_surface_CTA861_3_metadata
@@ -0,0 +1,6 @@
+EGL_EXT_surface_CTA861_3_metadata
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_surface_CTA861_3_metadata
+
+ EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+ EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
diff --git a/glew/auto/extensions/gl/EGL_EXT_surface_SMPTE2086_metadata b/glew/auto/extensions/gl/EGL_EXT_surface_SMPTE2086_metadata
new file mode 100644
index 0000000..f806703
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_surface_SMPTE2086_metadata
@@ -0,0 +1,15 @@
+EGL_EXT_surface_SMPTE2086_metadata
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_surface_SMPTE2086_metadata
+
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+ EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+ EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+ EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+ EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+ EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+ EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+ EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+ EGL_METADATA_SCALING_EXT 50000
diff --git a/glew/auto/extensions/gl/EGL_EXT_surface_compression b/glew/auto/extensions/gl/EGL_EXT_surface_compression
new file mode 100644
index 0000000..9761599
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_surface_compression
@@ -0,0 +1,22 @@
+EGL_EXT_surface_compression
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_surface_compression
+
+ EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
+ EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
+ EGL_SURFACE_COMPRESSION_EXT 0x34B0
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
+ EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
+ EGLBoolean eglQuerySupportedCompressionRatesEXT (EGLDisplay dpy, EGLConfig config, const EGLAttrib* attrib_list, EGLint* rates, EGLint rate_size, EGLint* num_rates)
diff --git a/glew/auto/extensions/gl/EGL_EXT_swap_buffers_with_damage b/glew/auto/extensions/gl/EGL_EXT_swap_buffers_with_damage
new file mode 100644
index 0000000..2e4d1a8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_swap_buffers_with_damage
@@ -0,0 +1,5 @@
+EGL_EXT_swap_buffers_with_damage
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_swap_buffers_with_damage
+
+ EGLBoolean eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint* rects, EGLint n_rects)
diff --git a/glew/auto/extensions/gl/EGL_EXT_sync_reuse b/glew/auto/extensions/gl/EGL_EXT_sync_reuse
new file mode 100644
index 0000000..72f9873
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_sync_reuse
@@ -0,0 +1,5 @@
+EGL_EXT_sync_reuse
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_sync_reuse
+
+ EGLBoolean eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_EXT_yuv_surface b/glew/auto/extensions/gl/EGL_EXT_yuv_surface
new file mode 100644
index 0000000..8c3f86e
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_EXT_yuv_surface
@@ -0,0 +1,29 @@
+EGL_EXT_yuv_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_EXT_yuv_surface
+
+ EGL_YUV_BUFFER_EXT 0x3300
+ EGL_YUV_ORDER_EXT 0x3301
+ EGL_YUV_ORDER_YUV_EXT 0x3302
+ EGL_YUV_ORDER_YVU_EXT 0x3303
+ EGL_YUV_ORDER_YUYV_EXT 0x3304
+ EGL_YUV_ORDER_UYVY_EXT 0x3305
+ EGL_YUV_ORDER_YVYU_EXT 0x3306
+ EGL_YUV_ORDER_VYUY_EXT 0x3307
+ EGL_YUV_ORDER_AYUV_EXT 0x3308
+ EGL_YUV_CSC_STANDARD_EXT 0x330A
+ EGL_YUV_CSC_STANDARD_601_EXT 0x330B
+ EGL_YUV_CSC_STANDARD_709_EXT 0x330C
+ EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+ EGL_YUV_SUBSAMPLE_EXT 0x3312
+ EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
+ EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
+ EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
+ EGL_YUV_DEPTH_RANGE_EXT 0x3317
+ EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
+ EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
+ EGL_YUV_PLANE_BPP_EXT 0x331A
+ EGL_YUV_PLANE_BPP_0_EXT 0x331B
+ EGL_YUV_PLANE_BPP_8_EXT 0x331C
+ EGL_YUV_PLANE_BPP_10_EXT 0x331D
diff --git a/glew/auto/extensions/gl/EGL_HI_clientpixmap b/glew/auto/extensions/gl/EGL_HI_clientpixmap
new file mode 100644
index 0000000..732252f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_HI_clientpixmap
@@ -0,0 +1,6 @@
+EGL_HI_clientpixmap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_HI_clientpixmap
+
+ EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
+ EGLSurface eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap)
diff --git a/glew/auto/extensions/gl/EGL_HI_colorformats b/glew/auto/extensions/gl/EGL_HI_colorformats
new file mode 100644
index 0000000..138a266
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_HI_colorformats
@@ -0,0 +1,8 @@
+EGL_HI_colorformats
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_HI_colorformats
+
+ EGL_COLOR_FORMAT_HI 0x8F70
+ EGL_COLOR_RGB_HI 0x8F71
+ EGL_COLOR_RGBA_HI 0x8F72
+ EGL_COLOR_ARGB_HI 0x8F73
diff --git a/glew/auto/extensions/gl/EGL_IMG_context_priority b/glew/auto/extensions/gl/EGL_IMG_context_priority
new file mode 100644
index 0000000..fce013b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_IMG_context_priority
@@ -0,0 +1,8 @@
+EGL_IMG_context_priority
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_IMG_context_priority
+
+ EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+ EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+ EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+ EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
diff --git a/glew/auto/extensions/gl/EGL_IMG_image_plane_attribs b/glew/auto/extensions/gl/EGL_IMG_image_plane_attribs
new file mode 100644
index 0000000..80c2c1b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_IMG_image_plane_attribs
@@ -0,0 +1,6 @@
+EGL_IMG_image_plane_attribs
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_IMG_image_plane_attribs
+
+ EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+ EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
diff --git a/glew/auto/extensions/gl/EGL_KHR_cl_event b/glew/auto/extensions/gl/EGL_KHR_cl_event
new file mode 100644
index 0000000..1c70d95
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_cl_event
@@ -0,0 +1,7 @@
+EGL_KHR_cl_event
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_cl_event
+
+ EGL_CL_EVENT_HANDLE_KHR 0x309C
+ EGL_SYNC_CL_EVENT_KHR 0x30FE
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
diff --git a/glew/auto/extensions/gl/EGL_KHR_cl_event2 b/glew/auto/extensions/gl/EGL_KHR_cl_event2
new file mode 100644
index 0000000..1f03633
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_cl_event2
@@ -0,0 +1,8 @@
+EGL_KHR_cl_event2
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_cl_event2
+
+ EGL_CL_EVENT_HANDLE_KHR 0x309C
+ EGL_SYNC_CL_EVENT_KHR 0x30FE
+ EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+ EGLSyncKHR eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_KHR_client_get_all_proc_addresses b/glew/auto/extensions/gl/EGL_KHR_client_get_all_proc_addresses
new file mode 100644
index 0000000..3b5e951
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_client_get_all_proc_addresses
@@ -0,0 +1,4 @@
+EGL_KHR_client_get_all_proc_addresses
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_client_get_all_proc_addresses
+
diff --git a/glew/auto/extensions/gl/EGL_KHR_config_attribs b/glew/auto/extensions/gl/EGL_KHR_config_attribs
new file mode 100644
index 0000000..31c556a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_config_attribs
@@ -0,0 +1,7 @@
+EGL_KHR_config_attribs
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_config_attribs
+
+ EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+ EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+ EGL_CONFORMANT_KHR 0x3042
diff --git a/glew/auto/extensions/gl/EGL_KHR_context_flush_control b/glew/auto/extensions/gl/EGL_KHR_context_flush_control
new file mode 100644
index 0000000..9064a7a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_context_flush_control
@@ -0,0 +1,7 @@
+EGL_KHR_context_flush_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_context_flush_control
+
+ EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
+ EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
+ EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
diff --git a/glew/auto/extensions/gl/EGL_KHR_create_context b/glew/auto/extensions/gl/EGL_KHR_create_context
new file mode 100644
index 0000000..e79485b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_create_context
@@ -0,0 +1,18 @@
+EGL_KHR_create_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_create_context
+
+ EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+ EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+ EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+ EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+ EGL_OPENGL_ES3_BIT 0x00000040
+ EGL_OPENGL_ES3_BIT_KHR 0x00000040
+ EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+ EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+ EGL_CONTEXT_FLAGS_KHR 0x30FC
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+ EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+ EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
diff --git a/glew/auto/extensions/gl/EGL_KHR_create_context_no_error b/glew/auto/extensions/gl/EGL_KHR_create_context_no_error
new file mode 100644
index 0000000..72a1928
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_create_context_no_error
@@ -0,0 +1,5 @@
+EGL_KHR_create_context_no_error
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_create_context_no_error
+
+ EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
diff --git a/glew/auto/extensions/gl/EGL_KHR_debug b/glew/auto/extensions/gl/EGL_KHR_debug
new file mode 100644
index 0000000..4551fe2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_debug
@@ -0,0 +1,19 @@
+EGL_KHR_debug
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_debug
+
+ EGL_OBJECT_THREAD_KHR 0x33B0
+ EGL_OBJECT_DISPLAY_KHR 0x33B1
+ EGL_OBJECT_CONTEXT_KHR 0x33B2
+ EGL_OBJECT_SURFACE_KHR 0x33B3
+ EGL_OBJECT_IMAGE_KHR 0x33B4
+ EGL_OBJECT_SYNC_KHR 0x33B5
+ EGL_OBJECT_STREAM_KHR 0x33B6
+ EGL_DEBUG_CALLBACK_KHR 0x33B8
+ EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+ EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+ EGL_DEBUG_MSG_WARN_KHR 0x33BB
+ EGL_DEBUG_MSG_INFO_KHR 0x33BC
+ EGLint eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib* attrib_list)
+ EGLint eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label)
+ EGLBoolean eglQueryDebugKHR (EGLint attribute, EGLAttrib* value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_display_reference b/glew/auto/extensions/gl/EGL_KHR_display_reference
new file mode 100644
index 0000000..eeb09db
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_display_reference
@@ -0,0 +1,6 @@
+EGL_KHR_display_reference
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_display_reference
+
+ EGL_TRACK_REFERENCES_KHR 0x3352
+ EGLBoolean eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib* value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_fence_sync b/glew/auto/extensions/gl/EGL_KHR_fence_sync
new file mode 100644
index 0000000..398b292
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_fence_sync
@@ -0,0 +1,7 @@
+EGL_KHR_fence_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_fence_sync
+
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+ EGL_SYNC_CONDITION_KHR 0x30F8
+ EGL_SYNC_FENCE_KHR 0x30F9
diff --git a/glew/auto/extensions/gl/EGL_KHR_get_all_proc_addresses b/glew/auto/extensions/gl/EGL_KHR_get_all_proc_addresses
new file mode 100644
index 0000000..86e3b31
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_get_all_proc_addresses
@@ -0,0 +1,4 @@
+EGL_KHR_get_all_proc_addresses
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_get_all_proc_addresses
+
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_colorspace b/glew/auto/extensions/gl/EGL_KHR_gl_colorspace
new file mode 100644
index 0000000..791e9db
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_colorspace
@@ -0,0 +1,7 @@
+EGL_KHR_gl_colorspace
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_colorspace
+
+ EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+ EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+ EGL_GL_COLORSPACE_KHR 0x309D
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_renderbuffer_image b/glew/auto/extensions/gl/EGL_KHR_gl_renderbuffer_image
new file mode 100644
index 0000000..eac2ce6
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_renderbuffer_image
@@ -0,0 +1,5 @@
+EGL_KHR_gl_renderbuffer_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_renderbuffer_image
+
+ EGL_GL_RENDERBUFFER_KHR 0x30B9
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_texture_2D_image b/glew/auto/extensions/gl/EGL_KHR_gl_texture_2D_image
new file mode 100644
index 0000000..68787ee
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_texture_2D_image
@@ -0,0 +1,6 @@
+EGL_KHR_gl_texture_2D_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_texture_2D_image
+
+ EGL_GL_TEXTURE_2D_KHR 0x30B1
+ EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_texture_3D_image b/glew/auto/extensions/gl/EGL_KHR_gl_texture_3D_image
new file mode 100644
index 0000000..ced8357
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_texture_3D_image
@@ -0,0 +1,6 @@
+EGL_KHR_gl_texture_3D_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_texture_3D_image
+
+ EGL_GL_TEXTURE_3D_KHR 0x30B2
+ EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
diff --git a/glew/auto/extensions/gl/EGL_KHR_gl_texture_cubemap_image b/glew/auto/extensions/gl/EGL_KHR_gl_texture_cubemap_image
new file mode 100644
index 0000000..81079d9
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_gl_texture_cubemap_image
@@ -0,0 +1,10 @@
+EGL_KHR_gl_texture_cubemap_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_gl_texture_cubemap_image
+
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+ EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+ EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
diff --git a/glew/auto/extensions/gl/EGL_KHR_image b/glew/auto/extensions/gl/EGL_KHR_image
new file mode 100644
index 0000000..a378be0
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_image
@@ -0,0 +1,8 @@
+EGL_KHR_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_image
+
+ EGL_NATIVE_PIXMAP_KHR 0x30B0
+ EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
+ EGLImageKHR eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint* attrib_list)
+ EGLBoolean eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image)
diff --git a/glew/auto/extensions/gl/EGL_KHR_image_base b/glew/auto/extensions/gl/EGL_KHR_image_base
new file mode 100644
index 0000000..dd38a6c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_image_base
@@ -0,0 +1,6 @@
+EGL_KHR_image_base
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_image_base
+
+ EGL_IMAGE_PRESERVED_KHR 0x30D2
+ EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
diff --git a/glew/auto/extensions/gl/EGL_KHR_image_pixmap b/glew/auto/extensions/gl/EGL_KHR_image_pixmap
new file mode 100644
index 0000000..ab3b243
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_image_pixmap
@@ -0,0 +1,5 @@
+EGL_KHR_image_pixmap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_image_pixmap
+
+ EGL_NATIVE_PIXMAP_KHR 0x30B0
diff --git a/glew/auto/extensions/gl/EGL_KHR_lock_surface b/glew/auto/extensions/gl/EGL_KHR_lock_surface
new file mode 100644
index 0000000..be43fb4
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_lock_surface
@@ -0,0 +1,27 @@
+EGL_KHR_lock_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_lock_surface
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+ EGL_MATCH_FORMAT_KHR 0x3043
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+ EGL_BITMAP_POINTER_KHR 0x30C6
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+ EGLBoolean eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint* attrib_list)
+ EGLBoolean eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface)
diff --git a/glew/auto/extensions/gl/EGL_KHR_lock_surface2 b/glew/auto/extensions/gl/EGL_KHR_lock_surface2
new file mode 100644
index 0000000..0c4fd14
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_lock_surface2
@@ -0,0 +1,5 @@
+EGL_KHR_lock_surface2
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_lock_surface2
+
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
diff --git a/glew/auto/extensions/gl/EGL_KHR_lock_surface3 b/glew/auto/extensions/gl/EGL_KHR_lock_surface3
new file mode 100644
index 0000000..4c0e13a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_lock_surface3
@@ -0,0 +1,27 @@
+EGL_KHR_lock_surface3
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_lock_surface3
+
+ EGL_READ_SURFACE_BIT_KHR 0x0001
+ EGL_WRITE_SURFACE_BIT_KHR 0x0002
+ EGL_LOCK_SURFACE_BIT_KHR 0x0080
+ EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+ EGL_MATCH_FORMAT_KHR 0x3043
+ EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+ EGL_FORMAT_RGB_565_KHR 0x30C1
+ EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+ EGL_FORMAT_RGBA_8888_KHR 0x30C3
+ EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+ EGL_LOCK_USAGE_HINT_KHR 0x30C5
+ EGL_BITMAP_POINTER_KHR 0x30C6
+ EGL_BITMAP_PITCH_KHR 0x30C7
+ EGL_BITMAP_ORIGIN_KHR 0x30C8
+ EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+ EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+ EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+ EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+ EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+ EGL_LOWER_LEFT_KHR 0x30CE
+ EGL_UPPER_LEFT_KHR 0x30CF
+ EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+ EGLBoolean eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR * value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_mutable_render_buffer b/glew/auto/extensions/gl/EGL_KHR_mutable_render_buffer
new file mode 100644
index 0000000..fefff28
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_mutable_render_buffer
@@ -0,0 +1,5 @@
+EGL_KHR_mutable_render_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_mutable_render_buffer
+
+ EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
diff --git a/glew/auto/extensions/gl/EGL_KHR_no_config_context b/glew/auto/extensions/gl/EGL_KHR_no_config_context
new file mode 100644
index 0000000..81fe477
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_no_config_context
@@ -0,0 +1,5 @@
+EGL_KHR_no_config_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_no_config_context
+
+ EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0)
diff --git a/glew/auto/extensions/gl/EGL_KHR_partial_update b/glew/auto/extensions/gl/EGL_KHR_partial_update
new file mode 100644
index 0000000..b6c574f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_partial_update
@@ -0,0 +1,6 @@
+EGL_KHR_partial_update
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_partial_update
+
+ EGL_BUFFER_AGE_KHR 0x313D
+ EGLBoolean eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint* rects, EGLint n_rects)
diff --git a/glew/auto/extensions/gl/EGL_KHR_platform_android b/glew/auto/extensions/gl/EGL_KHR_platform_android
new file mode 100644
index 0000000..b658e3f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_platform_android
@@ -0,0 +1,5 @@
+EGL_KHR_platform_android
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_platform_android
+
+ EGL_PLATFORM_ANDROID_KHR 0x3141
diff --git a/glew/auto/extensions/gl/EGL_KHR_platform_gbm b/glew/auto/extensions/gl/EGL_KHR_platform_gbm
new file mode 100644
index 0000000..d14df5d
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_platform_gbm
@@ -0,0 +1,5 @@
+EGL_KHR_platform_gbm
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_platform_gbm
+
+ EGL_PLATFORM_GBM_KHR 0x31D7
diff --git a/glew/auto/extensions/gl/EGL_KHR_platform_wayland b/glew/auto/extensions/gl/EGL_KHR_platform_wayland
new file mode 100644
index 0000000..e0d1351
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_platform_wayland
@@ -0,0 +1,5 @@
+EGL_KHR_platform_wayland
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_platform_wayland
+
+ EGL_PLATFORM_WAYLAND_KHR 0x31D8
diff --git a/glew/auto/extensions/gl/EGL_KHR_platform_x11 b/glew/auto/extensions/gl/EGL_KHR_platform_x11
new file mode 100644
index 0000000..ec9bd6c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_platform_x11
@@ -0,0 +1,6 @@
+EGL_KHR_platform_x11
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_platform_x11
+
+ EGL_PLATFORM_X11_KHR 0x31D5
+ EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
diff --git a/glew/auto/extensions/gl/EGL_KHR_reusable_sync b/glew/auto/extensions/gl/EGL_KHR_reusable_sync
new file mode 100644
index 0000000..687b7de
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_reusable_sync
@@ -0,0 +1,19 @@
+EGL_KHR_reusable_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_reusable_sync
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+ EGL_SYNC_STATUS_KHR 0x30F1
+ EGL_SIGNALED_KHR 0x30F2
+ EGL_UNSIGNALED_KHR 0x30F3
+ EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+ EGL_CONDITION_SATISFIED_KHR 0x30F6
+ EGL_SYNC_TYPE_KHR 0x30F7
+ EGL_SYNC_REUSABLE_KHR 0x30FA
+ EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFF
+ EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0)
+ EGLint eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
+ EGLSyncKHR eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint* attrib_list)
+ EGLBoolean eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync)
+ EGLBoolean eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint* value)
+ EGLBoolean eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream b/glew/auto/extensions/gl/EGL_KHR_stream
new file mode 100644
index 0000000..2717f98
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream
@@ -0,0 +1,22 @@
+EGL_KHR_stream
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream
+
+ EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+ EGL_PRODUCER_FRAME_KHR 0x3212
+ EGL_CONSUMER_FRAME_KHR 0x3213
+ EGL_STREAM_STATE_KHR 0x3214
+ EGL_STREAM_STATE_CREATED_KHR 0x3215
+ EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+ EGL_STREAM_STATE_EMPTY_KHR 0x3217
+ EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+ EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+ EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+ EGL_BAD_STREAM_KHR 0x321B
+ EGL_BAD_STATE_KHR 0x321C
+ EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0)
+ EGLStreamKHR eglCreateStreamKHR (EGLDisplay dpy, const EGLint* attrib_list)
+ EGLBoolean eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream)
+ EGLBoolean eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint* value)
+ EGLBoolean eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR* value)
+ EGLBoolean eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_attrib b/glew/auto/extensions/gl/EGL_KHR_stream_attrib
new file mode 100644
index 0000000..dba35a6
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_attrib
@@ -0,0 +1,13 @@
+EGL_KHR_stream_attrib
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_attrib
+
+ EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+ EGL_STREAM_STATE_KHR 0x3214
+ EGL_STREAM_STATE_CREATED_KHR 0x3215
+ EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+ EGLStreamKHR eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib* attrib_list)
+ EGLBoolean eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib* value)
+ EGLBoolean eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value)
+ EGLBoolean eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list)
+ EGLBoolean eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_consumer_gltexture b/glew/auto/extensions/gl/EGL_KHR_stream_consumer_gltexture
new file mode 100644
index 0000000..4e56ec3
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_consumer_gltexture
@@ -0,0 +1,8 @@
+EGL_KHR_stream_consumer_gltexture
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_consumer_gltexture
+
+ EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+ EGLBoolean eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream)
+ EGLBoolean eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream)
+ EGLBoolean eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_cross_process_fd b/glew/auto/extensions/gl/EGL_KHR_stream_cross_process_fd
new file mode 100644
index 0000000..2ce3863
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_cross_process_fd
@@ -0,0 +1,7 @@
+EGL_KHR_stream_cross_process_fd
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_cross_process_fd
+
+ EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1)
+ EGLStreamKHR eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor)
+ EGLNativeFileDescriptorKHR eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_fifo b/glew/auto/extensions/gl/EGL_KHR_stream_fifo
new file mode 100644
index 0000000..4918805
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_fifo
@@ -0,0 +1,9 @@
+EGL_KHR_stream_fifo
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_fifo
+
+ EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+ EGL_STREAM_TIME_NOW_KHR 0x31FD
+ EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+ EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+ EGLBoolean eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR* value)
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_producer_aldatalocator b/glew/auto/extensions/gl/EGL_KHR_stream_producer_aldatalocator
new file mode 100644
index 0000000..27d08de
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_producer_aldatalocator
@@ -0,0 +1,4 @@
+EGL_KHR_stream_producer_aldatalocator
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_producer_aldatalocator
+
diff --git a/glew/auto/extensions/gl/EGL_KHR_stream_producer_eglsurface b/glew/auto/extensions/gl/EGL_KHR_stream_producer_eglsurface
new file mode 100644
index 0000000..5eb0280
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_stream_producer_eglsurface
@@ -0,0 +1,6 @@
+EGL_KHR_stream_producer_eglsurface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_stream_producer_eglsurface
+
+ EGL_STREAM_BIT_KHR 0x0800
+ EGLSurface eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_KHR_surfaceless_context b/glew/auto/extensions/gl/EGL_KHR_surfaceless_context
new file mode 100644
index 0000000..70ad015
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_surfaceless_context
@@ -0,0 +1,4 @@
+EGL_KHR_surfaceless_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_surfaceless_context
+
diff --git a/glew/auto/extensions/gl/EGL_KHR_swap_buffers_with_damage b/glew/auto/extensions/gl/EGL_KHR_swap_buffers_with_damage
new file mode 100644
index 0000000..e2d4987
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_swap_buffers_with_damage
@@ -0,0 +1,5 @@
+EGL_KHR_swap_buffers_with_damage
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_swap_buffers_with_damage
+
+ EGLBoolean eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint* rects, EGLint n_rects)
diff --git a/glew/auto/extensions/gl/EGL_KHR_vg_parent_image b/glew/auto/extensions/gl/EGL_KHR_vg_parent_image
new file mode 100644
index 0000000..b2d3e39
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_vg_parent_image
@@ -0,0 +1,5 @@
+EGL_KHR_vg_parent_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_vg_parent_image
+
+ EGL_VG_PARENT_IMAGE_KHR 0x30BA
diff --git a/glew/auto/extensions/gl/EGL_KHR_wait_sync b/glew/auto/extensions/gl/EGL_KHR_wait_sync
new file mode 100644
index 0000000..573e57b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_KHR_wait_sync
@@ -0,0 +1,5 @@
+EGL_KHR_wait_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_KHR_wait_sync
+
+ EGLint eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags)
diff --git a/glew/auto/extensions/gl/EGL_MESA_drm_image b/glew/auto/extensions/gl/EGL_MESA_drm_image
new file mode 100644
index 0000000..6c0d69b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_drm_image
@@ -0,0 +1,14 @@
+EGL_MESA_drm_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_drm_image
+
+ EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
+ EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
+ EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
+ EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+ EGL_DRM_BUFFER_USE_MESA 0x31D1
+ EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+ EGL_DRM_BUFFER_MESA 0x31D3
+ EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+ EGLImageKHR eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint* attrib_list)
+ EGLBoolean eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint* name, EGLint* handle, EGLint* stride)
diff --git a/glew/auto/extensions/gl/EGL_MESA_image_dma_buf_export b/glew/auto/extensions/gl/EGL_MESA_image_dma_buf_export
new file mode 100644
index 0000000..d97ba00
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_image_dma_buf_export
@@ -0,0 +1,6 @@
+EGL_MESA_image_dma_buf_export
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_image_dma_buf_export
+
+ EGLBoolean eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int* fds, EGLint* strides, EGLint* offsets)
+ EGLBoolean eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int* fourcc, int* num_planes, EGLuint64KHR* modifiers)
diff --git a/glew/auto/extensions/gl/EGL_MESA_platform_gbm b/glew/auto/extensions/gl/EGL_MESA_platform_gbm
new file mode 100644
index 0000000..c80e4e2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_platform_gbm
@@ -0,0 +1,5 @@
+EGL_MESA_platform_gbm
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_platform_gbm
+
+ EGL_PLATFORM_GBM_MESA 0x31D7
diff --git a/glew/auto/extensions/gl/EGL_MESA_platform_surfaceless b/glew/auto/extensions/gl/EGL_MESA_platform_surfaceless
new file mode 100644
index 0000000..88f553f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_platform_surfaceless
@@ -0,0 +1,5 @@
+EGL_MESA_platform_surfaceless
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_platform_surfaceless
+
+ EGL_PLATFORM_SURFACELESS_MESA 0x31DD
diff --git a/glew/auto/extensions/gl/EGL_MESA_query_driver b/glew/auto/extensions/gl/EGL_MESA_query_driver
new file mode 100644
index 0000000..4c60b12
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_MESA_query_driver
@@ -0,0 +1,6 @@
+EGL_MESA_query_driver
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_MESA_query_driver
+
+ char* eglGetDisplayDriverConfig (EGLDisplay dpy)
+ const char* eglGetDisplayDriverName (EGLDisplay dpy)
diff --git a/glew/auto/extensions/gl/EGL_NOK_swap_region b/glew/auto/extensions/gl/EGL_NOK_swap_region
new file mode 100644
index 0000000..f94f987
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NOK_swap_region
@@ -0,0 +1,5 @@
+EGL_NOK_swap_region
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NOK_swap_region
+
+ EGLBoolean eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects)
diff --git a/glew/auto/extensions/gl/EGL_NOK_swap_region2 b/glew/auto/extensions/gl/EGL_NOK_swap_region2
new file mode 100644
index 0000000..8fe03fb
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NOK_swap_region2
@@ -0,0 +1,5 @@
+EGL_NOK_swap_region2
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NOK_swap_region2
+
+ EGLBoolean eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects)
diff --git a/glew/auto/extensions/gl/EGL_NOK_texture_from_pixmap b/glew/auto/extensions/gl/EGL_NOK_texture_from_pixmap
new file mode 100644
index 0000000..34b9fa4
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NOK_texture_from_pixmap
@@ -0,0 +1,5 @@
+EGL_NOK_texture_from_pixmap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NOK_texture_from_pixmap
+
+ EGL_Y_INVERTED_NOK 0x307F
diff --git a/glew/auto/extensions/gl/EGL_NV_3dvision_surface b/glew/auto/extensions/gl/EGL_NV_3dvision_surface
new file mode 100644
index 0000000..8226538
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_3dvision_surface
@@ -0,0 +1,5 @@
+EGL_NV_3dvision_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_3dvision_surface
+
+ EGL_AUTO_STEREO_NV 0x3136
diff --git a/glew/auto/extensions/gl/EGL_NV_context_priority_realtime b/glew/auto/extensions/gl/EGL_NV_context_priority_realtime
new file mode 100644
index 0000000..37e0e55
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_context_priority_realtime
@@ -0,0 +1,5 @@
+EGL_NV_context_priority_realtime
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_context_priority_realtime
+
+ EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
diff --git a/glew/auto/extensions/gl/EGL_NV_coverage_sample b/glew/auto/extensions/gl/EGL_NV_coverage_sample
new file mode 100644
index 0000000..85bbbe8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_coverage_sample
@@ -0,0 +1,6 @@
+EGL_NV_coverage_sample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_coverage_sample
+
+ EGL_COVERAGE_BUFFERS_NV 0x30E0
+ EGL_COVERAGE_SAMPLES_NV 0x30E1
diff --git a/glew/auto/extensions/gl/EGL_NV_coverage_sample_resolve b/glew/auto/extensions/gl/EGL_NV_coverage_sample_resolve
new file mode 100644
index 0000000..04e5345
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_coverage_sample_resolve
@@ -0,0 +1,7 @@
+EGL_NV_coverage_sample_resolve
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_coverage_sample_resolve
+
+ EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+ EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+ EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
diff --git a/glew/auto/extensions/gl/EGL_NV_cuda_event b/glew/auto/extensions/gl/EGL_NV_cuda_event
new file mode 100644
index 0000000..9ecb5c8
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_cuda_event
@@ -0,0 +1,7 @@
+EGL_NV_cuda_event
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_cuda_event
+
+ EGL_CUDA_EVENT_HANDLE_NV 0x323B
+ EGL_SYNC_CUDA_EVENT_NV 0x323C
+ EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
diff --git a/glew/auto/extensions/gl/EGL_NV_depth_nonlinear b/glew/auto/extensions/gl/EGL_NV_depth_nonlinear
new file mode 100644
index 0000000..c870064
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_depth_nonlinear
@@ -0,0 +1,7 @@
+EGL_NV_depth_nonlinear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_depth_nonlinear
+
+ EGL_DEPTH_ENCODING_NONE_NV 0
+ EGL_DEPTH_ENCODING_NV 0x30E2
+ EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
diff --git a/glew/auto/extensions/gl/EGL_NV_device_cuda b/glew/auto/extensions/gl/EGL_NV_device_cuda
new file mode 100644
index 0000000..7be003a
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_device_cuda
@@ -0,0 +1,5 @@
+EGL_NV_device_cuda
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_device_cuda
+
+ EGL_CUDA_DEVICE_NV 0x323A
diff --git a/glew/auto/extensions/gl/EGL_NV_native_query b/glew/auto/extensions/gl/EGL_NV_native_query
new file mode 100644
index 0000000..e6cd377
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_native_query
@@ -0,0 +1,7 @@
+EGL_NV_native_query
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_native_query
+
+ EGLBoolean eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType* display_id)
+ EGLBoolean eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType* pixmap)
+ EGLBoolean eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType* window)
diff --git a/glew/auto/extensions/gl/EGL_NV_post_convert_rounding b/glew/auto/extensions/gl/EGL_NV_post_convert_rounding
new file mode 100644
index 0000000..2997df3
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_post_convert_rounding
@@ -0,0 +1,4 @@
+EGL_NV_post_convert_rounding
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_post_convert_rounding
+
diff --git a/glew/auto/extensions/gl/EGL_NV_post_sub_buffer b/glew/auto/extensions/gl/EGL_NV_post_sub_buffer
new file mode 100644
index 0000000..a15b586
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_post_sub_buffer
@@ -0,0 +1,6 @@
+EGL_NV_post_sub_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_post_sub_buffer
+
+ EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+ EGLBoolean eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height)
diff --git a/glew/auto/extensions/gl/EGL_NV_quadruple_buffer b/glew/auto/extensions/gl/EGL_NV_quadruple_buffer
new file mode 100644
index 0000000..d820716
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_quadruple_buffer
@@ -0,0 +1,5 @@
+EGL_NV_quadruple_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_quadruple_buffer
+
+ EGL_QUADRUPLE_BUFFER_NV 0x3231
diff --git a/glew/auto/extensions/gl/EGL_NV_robustness_video_memory_purge b/glew/auto/extensions/gl/EGL_NV_robustness_video_memory_purge
new file mode 100644
index 0000000..c069b18
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_robustness_video_memory_purge
@@ -0,0 +1,5 @@
+EGL_NV_robustness_video_memory_purge
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_robustness_video_memory_purge
+
+ EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_consumer_eglimage b/glew/auto/extensions/gl/EGL_NV_stream_consumer_eglimage
new file mode 100644
index 0000000..eaf59ce
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_consumer_eglimage
@@ -0,0 +1,12 @@
+EGL_NV_stream_consumer_eglimage
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_consumer_eglimage
+
+ EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
+ EGL_STREAM_IMAGE_ADD_NV 0x3374
+ EGL_STREAM_IMAGE_REMOVE_NV 0x3375
+ EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
+ EGLint eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum* event, EGLAttrib* aux)
+ EGLBoolean eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage* pImage, EGLSync sync)
+ EGLBoolean eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR* modifiers, const EGLAttrib* attrib_list)
+ EGLBoolean eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_consumer_gltexture_yuv b/glew/auto/extensions/gl/EGL_NV_stream_consumer_gltexture_yuv
new file mode 100644
index 0000000..54d5ce5
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_consumer_gltexture_yuv
@@ -0,0 +1,10 @@
+EGL_NV_stream_consumer_gltexture_yuv
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_consumer_gltexture_yuv
+
+ EGL_YUV_BUFFER_EXT 0x3300
+ EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+ EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+ EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+ EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+ EGLBoolean eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_display b/glew/auto/extensions/gl/EGL_NV_stream_cross_display
new file mode 100644
index 0000000..0fefcd9
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_display
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_display
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_display
+
+ EGL_STREAM_CROSS_DISPLAY_NV 0x334E
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_object b/glew/auto/extensions/gl/EGL_NV_stream_cross_object
new file mode 100644
index 0000000..3dbc0f5
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_object
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_object
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_object
+
+ EGL_STREAM_CROSS_OBJECT_NV 0x334D
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_partition b/glew/auto/extensions/gl/EGL_NV_stream_cross_partition
new file mode 100644
index 0000000..d2ae4bf
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_partition
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_partition
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_partition
+
+ EGL_STREAM_CROSS_PARTITION_NV 0x323F
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_process b/glew/auto/extensions/gl/EGL_NV_stream_cross_process
new file mode 100644
index 0000000..93245f2
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_process
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_process
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_process
+
+ EGL_STREAM_CROSS_PROCESS_NV 0x3245
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_cross_system b/glew/auto/extensions/gl/EGL_NV_stream_cross_system
new file mode 100644
index 0000000..1e18048
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_cross_system
@@ -0,0 +1,5 @@
+EGL_NV_stream_cross_system
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_cross_system
+
+ EGL_STREAM_CROSS_SYSTEM_NV 0x334F
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_dma b/glew/auto/extensions/gl/EGL_NV_stream_dma
new file mode 100644
index 0000000..13dbe0b
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_dma
@@ -0,0 +1,6 @@
+EGL_NV_stream_dma
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_dma
+
+ EGL_STREAM_DMA_NV 0x3371
+ EGL_STREAM_DMA_SERVER_NV 0x3372
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_fifo_next b/glew/auto/extensions/gl/EGL_NV_stream_fifo_next
new file mode 100644
index 0000000..a313323
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_fifo_next
@@ -0,0 +1,6 @@
+EGL_NV_stream_fifo_next
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_fifo_next
+
+ EGL_PENDING_FRAME_NV 0x3329
+ EGL_STREAM_TIME_PENDING_NV 0x332A
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_fifo_synchronous b/glew/auto/extensions/gl/EGL_NV_stream_fifo_synchronous
new file mode 100644
index 0000000..d8631ba
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_fifo_synchronous
@@ -0,0 +1,5 @@
+EGL_NV_stream_fifo_synchronous
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_fifo_synchronous
+
+ EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_flush b/glew/auto/extensions/gl/EGL_NV_stream_flush
new file mode 100644
index 0000000..8f09516
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_flush
@@ -0,0 +1,5 @@
+EGL_NV_stream_flush
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_flush
+
+ EGLBoolean eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_frame_limits b/glew/auto/extensions/gl/EGL_NV_stream_frame_limits
new file mode 100644
index 0000000..2bad6f4
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_frame_limits
@@ -0,0 +1,6 @@
+EGL_NV_stream_frame_limits
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_frame_limits
+
+ EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+ EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_metadata b/glew/auto/extensions/gl/EGL_NV_stream_metadata
new file mode 100644
index 0000000..521d2f3
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_metadata
@@ -0,0 +1,21 @@
+EGL_NV_stream_metadata
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_metadata
+
+ EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+ EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+ EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+ EGL_PRODUCER_METADATA_NV 0x3253
+ EGL_CONSUMER_METADATA_NV 0x3254
+ EGL_METADATA0_SIZE_NV 0x3255
+ EGL_METADATA1_SIZE_NV 0x3256
+ EGL_METADATA2_SIZE_NV 0x3257
+ EGL_METADATA3_SIZE_NV 0x3258
+ EGL_METADATA0_TYPE_NV 0x3259
+ EGL_METADATA1_TYPE_NV 0x325A
+ EGL_METADATA2_TYPE_NV 0x325B
+ EGL_METADATA3_TYPE_NV 0x325C
+ EGL_PENDING_METADATA_NV 0x3328
+ EGLBoolean eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib* value)
+ EGLBoolean eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void* data)
+ EGLBoolean eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void* data)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_origin b/glew/auto/extensions/gl/EGL_NV_stream_origin
new file mode 100644
index 0000000..8ea1660
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_origin
@@ -0,0 +1,15 @@
+EGL_NV_stream_origin
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_origin
+
+ EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+ EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+ EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+ EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+ EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+ EGL_LEFT_NV 0x336B
+ EGL_RIGHT_NV 0x336C
+ EGL_TOP_NV 0x336D
+ EGL_BOTTOM_NV 0x336E
+ EGL_X_AXIS_NV 0x336F
+ EGL_Y_AXIS_NV 0x3370
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_remote b/glew/auto/extensions/gl/EGL_NV_stream_remote
new file mode 100644
index 0000000..9912d75
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_remote
@@ -0,0 +1,12 @@
+EGL_NV_stream_remote
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_remote
+
+ EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+ EGL_STREAM_TYPE_NV 0x3241
+ EGL_STREAM_PROTOCOL_NV 0x3242
+ EGL_STREAM_ENDPOINT_NV 0x3243
+ EGL_STREAM_LOCAL_NV 0x3244
+ EGL_STREAM_PROTOCOL_FD_NV 0x3246
+ EGL_STREAM_PRODUCER_NV 0x3247
+ EGL_STREAM_CONSUMER_NV 0x3248
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_reset b/glew/auto/extensions/gl/EGL_NV_stream_reset
new file mode 100644
index 0000000..f137755
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_reset
@@ -0,0 +1,7 @@
+EGL_NV_stream_reset
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_reset
+
+ EGL_SUPPORT_RESET_NV 0x3334
+ EGL_SUPPORT_REUSE_NV 0x3335
+ EGLBoolean eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream)
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_socket b/glew/auto/extensions/gl/EGL_NV_stream_socket
new file mode 100644
index 0000000..878cd9c
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_socket
@@ -0,0 +1,7 @@
+EGL_NV_stream_socket
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_socket
+
+ EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+ EGL_SOCKET_HANDLE_NV 0x324C
+ EGL_SOCKET_TYPE_NV 0x324D
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_socket_inet b/glew/auto/extensions/gl/EGL_NV_stream_socket_inet
new file mode 100644
index 0000000..14f69fe
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_socket_inet
@@ -0,0 +1,5 @@
+EGL_NV_stream_socket_inet
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_socket_inet
+
+ EGL_SOCKET_TYPE_INET_NV 0x324F
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_socket_unix b/glew/auto/extensions/gl/EGL_NV_stream_socket_unix
new file mode 100644
index 0000000..1291470
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_socket_unix
@@ -0,0 +1,5 @@
+EGL_NV_stream_socket_unix
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_socket_unix
+
+ EGL_SOCKET_TYPE_UNIX_NV 0x324E
diff --git a/glew/auto/extensions/gl/EGL_NV_stream_sync b/glew/auto/extensions/gl/EGL_NV_stream_sync
new file mode 100644
index 0000000..d47a0cd
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_stream_sync
@@ -0,0 +1,7 @@
+EGL_NV_stream_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_stream_sync
+
+ EGL_SYNC_TYPE_KHR 0x30F7
+ EGL_SYNC_NEW_FRAME_NV 0x321F
+ EGLSyncKHR eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint* attrib_list)
diff --git a/glew/auto/extensions/gl/EGL_NV_sync b/glew/auto/extensions/gl/EGL_NV_sync
new file mode 100644
index 0000000..9c66753
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_sync
@@ -0,0 +1,23 @@
+EGL_NV_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_sync
+
+ EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+ EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+ EGL_SYNC_STATUS_NV 0x30E7
+ EGL_SIGNALED_NV 0x30E8
+ EGL_UNSIGNALED_NV 0x30E9
+ EGL_ALREADY_SIGNALED_NV 0x30EA
+ EGL_TIMEOUT_EXPIRED_NV 0x30EB
+ EGL_CONDITION_SATISFIED_NV 0x30EC
+ EGL_SYNC_TYPE_NV 0x30ED
+ EGL_SYNC_CONDITION_NV 0x30EE
+ EGL_SYNC_FENCE_NV 0x30EF
+ EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFF
+ EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0)
+ EGLint eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout)
+ EGLSyncNV eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint* attrib_list)
+ EGLBoolean eglDestroySyncNV (EGLSyncNV sync)
+ EGLBoolean eglFenceNV (EGLSyncNV sync)
+ EGLBoolean eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint* value)
+ EGLBoolean eglSignalSyncNV (EGLSyncNV sync, EGLenum mode)
diff --git a/glew/auto/extensions/gl/EGL_NV_system_time b/glew/auto/extensions/gl/EGL_NV_system_time
new file mode 100644
index 0000000..94d8239
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_system_time
@@ -0,0 +1,6 @@
+EGL_NV_system_time
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_system_time
+
+ EGLuint64NV eglGetSystemTimeFrequencyNV (void)
+ EGLuint64NV eglGetSystemTimeNV (void)
diff --git a/glew/auto/extensions/gl/EGL_NV_triple_buffer b/glew/auto/extensions/gl/EGL_NV_triple_buffer
new file mode 100644
index 0000000..1ffe970
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_NV_triple_buffer
@@ -0,0 +1,5 @@
+EGL_NV_triple_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_NV_triple_buffer
+
+ EGL_TRIPLE_BUFFER_NV 0x3230
diff --git a/glew/auto/extensions/gl/EGL_TIZEN_image_native_buffer b/glew/auto/extensions/gl/EGL_TIZEN_image_native_buffer
new file mode 100644
index 0000000..eff695d
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_TIZEN_image_native_buffer
@@ -0,0 +1,5 @@
+EGL_TIZEN_image_native_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_TIZEN_image_native_buffer
+
+ EGL_NATIVE_BUFFER_TIZEN 0x32A0
diff --git a/glew/auto/extensions/gl/EGL_TIZEN_image_native_surface b/glew/auto/extensions/gl/EGL_TIZEN_image_native_surface
new file mode 100644
index 0000000..7d3afbe
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_TIZEN_image_native_surface
@@ -0,0 +1,5 @@
+EGL_TIZEN_image_native_surface
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_TIZEN_image_native_surface
+
+ EGL_NATIVE_SURFACE_TIZEN 0x32A1
diff --git a/glew/auto/extensions/gl/EGL_WL_bind_wayland_display b/glew/auto/extensions/gl/EGL_WL_bind_wayland_display
new file mode 100644
index 0000000..db6c49f
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_WL_bind_wayland_display
@@ -0,0 +1,14 @@
+EGL_WL_bind_wayland_display
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_WL_bind_wayland_display
+
+ EGL_WAYLAND_BUFFER_WL 0x31D5
+ EGL_WAYLAND_PLANE_WL 0x31D6
+ EGL_TEXTURE_Y_U_V_WL 0x31D7
+ EGL_TEXTURE_Y_UV_WL 0x31D8
+ EGL_TEXTURE_Y_XUXV_WL 0x31D9
+ EGL_TEXTURE_EXTERNAL_WL 0x31DA
+ EGL_WAYLAND_Y_INVERTED_WL 0x31DB
+ EGLBoolean eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display* display)
+ EGLBoolean eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource* buffer, EGLint attribute, EGLint* value)
+ EGLBoolean eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display* display)
diff --git a/glew/auto/extensions/gl/EGL_WL_create_wayland_buffer_from_image b/glew/auto/extensions/gl/EGL_WL_create_wayland_buffer_from_image
new file mode 100644
index 0000000..f914195
--- /dev/null
+++ b/glew/auto/extensions/gl/EGL_WL_create_wayland_buffer_from_image
@@ -0,0 +1,5 @@
+EGL_WL_create_wayland_buffer_from_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+EGL_WL_create_wayland_buffer_from_image
+
+ struct wl_buffer* eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image)
diff --git a/glew/auto/extensions/gl/GLX_3DFX_multisample b/glew/auto/extensions/gl/GLX_3DFX_multisample
new file mode 100644
index 0000000..66b1748
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_3DFX_multisample
@@ -0,0 +1,6 @@
+GLX_3DFX_multisample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_3DFX_multisample
+
+ GLX_SAMPLE_BUFFERS_3DFX 0x8050
+ GLX_SAMPLES_3DFX 0x8051
diff --git a/glew/auto/extensions/gl/GLX_AMD_gpu_association b/glew/auto/extensions/gl/GLX_AMD_gpu_association
new file mode 100644
index 0000000..e4bdbb4
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_AMD_gpu_association
@@ -0,0 +1,23 @@
+GLX_AMD_gpu_association
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_AMD_gpu_association
+
+ GLX_GPU_VENDOR_AMD 0x1F00
+ GLX_GPU_RENDERER_STRING_AMD 0x1F01
+ GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+ GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+ GLX_GPU_RAM_AMD 0x21A3
+ GLX_GPU_CLOCK_AMD 0x21A4
+ GLX_GPU_NUM_PIPES_AMD 0x21A5
+ GLX_GPU_NUM_SIMD_AMD 0x21A6
+ GLX_GPU_NUM_RB_AMD 0x21A7
+ GLX_GPU_NUM_SPI_AMD 0x21A8
+ void glXBlitContextFramebufferAMD (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ GLXContext glXCreateAssociatedContextAMD (unsigned int id, GLXContext share_list)
+ GLXContext glXCreateAssociatedContextAttribsAMD (unsigned int id, GLXContext share_context, const int* attribList)
+ Bool glXDeleteAssociatedContextAMD (GLXContext ctx)
+ unsigned int glXGetContextGPUIDAMD (GLXContext ctx)
+ GLXContext glXGetCurrentAssociatedContextAMD (void)
+ unsigned int glXGetGPUIDsAMD (unsigned int maxCount, unsigned int* ids)
+ int glXGetGPUInfoAMD (unsigned int id, int property, GLenum dataType, unsigned int size, void* data)
+ Bool glXMakeAssociatedContextCurrentAMD (GLXContext ctx)
diff --git a/glew/auto/extensions/gl/GLX_ARB_context_flush_control b/glew/auto/extensions/gl/GLX_ARB_context_flush_control
new file mode 100644
index 0000000..75293a1
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_context_flush_control
@@ -0,0 +1,7 @@
+GLX_ARB_context_flush_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_context_flush_control
+
+ GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+ GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+ GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
diff --git a/glew/auto/extensions/gl/GLX_ARB_create_context b/glew/auto/extensions/gl/GLX_ARB_create_context
new file mode 100644
index 0000000..9cf87e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_create_context
@@ -0,0 +1,10 @@
+GLX_ARB_create_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_create_context
+
+ GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
+ GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+ GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
+ GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
+ GLX_CONTEXT_FLAGS_ARB 0x2094
+ GLXContext glXCreateContextAttribsARB (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int* attrib_list)
diff --git a/glew/auto/extensions/gl/GLX_ARB_create_context_no_error b/glew/auto/extensions/gl/GLX_ARB_create_context_no_error
new file mode 100644
index 0000000..15f7999
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_create_context_no_error
@@ -0,0 +1,5 @@
+GLX_ARB_create_context_no_error
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_create_context_no_error
+
+ GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
diff --git a/glew/auto/extensions/gl/GLX_ARB_create_context_profile b/glew/auto/extensions/gl/GLX_ARB_create_context_profile
new file mode 100644
index 0000000..e34e492
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_create_context_profile
@@ -0,0 +1,7 @@
+GLX_ARB_create_context_profile
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_create_context_profile
+
+ GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+ GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+ GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
diff --git a/glew/auto/extensions/gl/GLX_ARB_create_context_robustness b/glew/auto/extensions/gl/GLX_ARB_create_context_robustness
new file mode 100644
index 0000000..73bb9c3
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_create_context_robustness
@@ -0,0 +1,8 @@
+GLX_ARB_create_context_robustness
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_create_context_robustness
+
+ GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+ GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+ GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+ GLX_NO_RESET_NOTIFICATION_ARB 0x8261
diff --git a/glew/auto/extensions/gl/GLX_ARB_fbconfig_float b/glew/auto/extensions/gl/GLX_ARB_fbconfig_float
new file mode 100644
index 0000000..882b4c9
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_fbconfig_float
@@ -0,0 +1,6 @@
+GLX_ARB_fbconfig_float
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_fbconfig_float
+
+ GLX_RGBA_FLOAT_BIT_ARB 0x00000004
+ GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
diff --git a/glew/auto/extensions/gl/GLX_ARB_framebuffer_sRGB b/glew/auto/extensions/gl/GLX_ARB_framebuffer_sRGB
new file mode 100644
index 0000000..db59d27
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_framebuffer_sRGB
@@ -0,0 +1,5 @@
+GLX_ARB_framebuffer_sRGB
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_framebuffer_sRGB
+
+ GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2
diff --git a/glew/auto/extensions/gl/GLX_ARB_get_proc_address b/glew/auto/extensions/gl/GLX_ARB_get_proc_address
new file mode 100644
index 0000000..e2cb2c5
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_get_proc_address
@@ -0,0 +1,5 @@
+GLX_ARB_get_proc_address
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.txt
+GLX_ARB_get_proc_address
+
+ extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void);
diff --git a/glew/auto/extensions/gl/GLX_ARB_multisample b/glew/auto/extensions/gl/GLX_ARB_multisample
new file mode 100644
index 0000000..5469836
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_multisample
@@ -0,0 +1,6 @@
+GLX_ARB_multisample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_multisample
+
+ GLX_SAMPLE_BUFFERS_ARB 100000
+ GLX_SAMPLES_ARB 100001
diff --git a/glew/auto/extensions/gl/GLX_ARB_robustness_application_isolation b/glew/auto/extensions/gl/GLX_ARB_robustness_application_isolation
new file mode 100644
index 0000000..5c0987e
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_robustness_application_isolation
@@ -0,0 +1,5 @@
+GLX_ARB_robustness_application_isolation
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_robustness_application_isolation
+
+ GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
diff --git a/glew/auto/extensions/gl/GLX_ARB_robustness_share_group_isolation b/glew/auto/extensions/gl/GLX_ARB_robustness_share_group_isolation
new file mode 100644
index 0000000..1c83f27
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_robustness_share_group_isolation
@@ -0,0 +1,5 @@
+GLX_ARB_robustness_share_group_isolation
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_robustness_share_group_isolation
+
+ GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
diff --git a/glew/auto/extensions/gl/GLX_ARB_vertex_buffer_object b/glew/auto/extensions/gl/GLX_ARB_vertex_buffer_object
new file mode 100644
index 0000000..740d0df
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ARB_vertex_buffer_object
@@ -0,0 +1,5 @@
+GLX_ARB_vertex_buffer_object
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_ARB_vertex_buffer_object
+
+ GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
diff --git a/glew/auto/extensions/gl/GLX_ATI_pixel_format_float b/glew/auto/extensions/gl/GLX_ATI_pixel_format_float
new file mode 100644
index 0000000..5336da4
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ATI_pixel_format_float
@@ -0,0 +1,5 @@
+GLX_ATI_pixel_format_float
+
+GLX_ATI_pixel_format_float
+
+ GLX_RGBA_FLOAT_ATI_BIT 0x00000100
diff --git a/glew/auto/extensions/gl/GLX_ATI_render_texture b/glew/auto/extensions/gl/GLX_ATI_render_texture
new file mode 100644
index 0000000..6b35814
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_ATI_render_texture
@@ -0,0 +1,42 @@
+GLX_ATI_render_texture
+
+GLX_ATI_render_texture
+
+ GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800
+ GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801
+ GLX_TEXTURE_FORMAT_ATI 0x9802
+ GLX_TEXTURE_TARGET_ATI 0x9803
+ GLX_MIPMAP_TEXTURE_ATI 0x9804
+ GLX_TEXTURE_RGB_ATI 0x9805
+ GLX_TEXTURE_RGBA_ATI 0x9806
+ GLX_NO_TEXTURE_ATI 0x9807
+ GLX_TEXTURE_CUBE_MAP_ATI 0x9808
+ GLX_TEXTURE_1D_ATI 0x9809
+ GLX_TEXTURE_2D_ATI 0x980A
+ GLX_MIPMAP_LEVEL_ATI 0x980B
+ GLX_CUBE_MAP_FACE_ATI 0x980C
+ GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D
+ GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E
+ GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F
+ GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810
+ GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811
+ GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812
+ GLX_FRONT_LEFT_ATI 0x9813
+ GLX_FRONT_RIGHT_ATI 0x9814
+ GLX_BACK_LEFT_ATI 0x9815
+ GLX_BACK_RIGHT_ATI 0x9816
+ GLX_AUX0_ATI 0x9817
+ GLX_AUX1_ATI 0x9818
+ GLX_AUX2_ATI 0x9819
+ GLX_AUX3_ATI 0x981A
+ GLX_AUX4_ATI 0x981B
+ GLX_AUX5_ATI 0x981C
+ GLX_AUX6_ATI 0x981D
+ GLX_AUX7_ATI 0x981E
+ GLX_AUX8_ATI 0x981F
+ GLX_AUX9_ATI 0x9820
+ GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821
+ GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822
+ void glXBindTexImageATI (Display *dpy, GLXPbuffer pbuf, int buffer)
+ void glXReleaseTexImageATI (Display *dpy, GLXPbuffer pbuf, int buffer)
+ void glXDrawableAttribATI (Display *dpy, GLXDrawable draw, const int *attrib_list)
diff --git a/glew/auto/extensions/gl/GLX_EXT_buffer_age b/glew/auto/extensions/gl/GLX_EXT_buffer_age
new file mode 100644
index 0000000..2dafead
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_buffer_age
@@ -0,0 +1,5 @@
+GLX_EXT_buffer_age
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_buffer_age
+
+ GLX_BACK_BUFFER_AGE_EXT 0x20F4
diff --git a/glew/auto/extensions/gl/GLX_EXT_context_priority b/glew/auto/extensions/gl/GLX_EXT_context_priority
new file mode 100644
index 0000000..285ca15
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_context_priority
@@ -0,0 +1,8 @@
+GLX_EXT_context_priority
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_context_priority
+
+ GLX_CONTEXT_PRIORITY_LEVEL_EXT 0x3100
+ GLX_CONTEXT_PRIORITY_HIGH_EXT 0x3101
+ GLX_CONTEXT_PRIORITY_MEDIUM_EXT 0x3102
+ GLX_CONTEXT_PRIORITY_LOW_EXT 0x3103
diff --git a/glew/auto/extensions/gl/GLX_EXT_create_context_es2_profile b/glew/auto/extensions/gl/GLX_EXT_create_context_es2_profile
new file mode 100644
index 0000000..43897f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_create_context_es2_profile
@@ -0,0 +1,5 @@
+GLX_EXT_create_context_es2_profile
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_create_context_es2_profile
+
+ GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
diff --git a/glew/auto/extensions/gl/GLX_EXT_create_context_es_profile b/glew/auto/extensions/gl/GLX_EXT_create_context_es_profile
new file mode 100644
index 0000000..5df31c3
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_create_context_es_profile
@@ -0,0 +1,5 @@
+GLX_EXT_create_context_es_profile
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_create_context_es_profile
+
+ GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
diff --git a/glew/auto/extensions/gl/GLX_EXT_fbconfig_packed_float b/glew/auto/extensions/gl/GLX_EXT_fbconfig_packed_float
new file mode 100644
index 0000000..d1f36de
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_fbconfig_packed_float
@@ -0,0 +1,6 @@
+GLX_EXT_fbconfig_packed_float
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_fbconfig_packed_float
+
+ GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
+ GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
diff --git a/glew/auto/extensions/gl/GLX_EXT_framebuffer_sRGB b/glew/auto/extensions/gl/GLX_EXT_framebuffer_sRGB
new file mode 100644
index 0000000..b48f8e4
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_framebuffer_sRGB
@@ -0,0 +1,5 @@
+GLX_EXT_framebuffer_sRGB
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_framebuffer_sRGB
+
+ GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
diff --git a/glew/auto/extensions/gl/GLX_EXT_get_drawable_type b/glew/auto/extensions/gl/GLX_EXT_get_drawable_type
new file mode 100644
index 0000000..140ab8c
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_get_drawable_type
@@ -0,0 +1,5 @@
+GLX_EXT_get_drawable_type
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_get_drawable_type
+
+ GLX_DRAWABLE_TYPE 0x8010
diff --git a/glew/auto/extensions/gl/GLX_EXT_import_context b/glew/auto/extensions/gl/GLX_EXT_import_context
new file mode 100644
index 0000000..d63ba0e
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_import_context
@@ -0,0 +1,13 @@
+GLX_EXT_import_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_import_context
+
+ GLX_SHARE_CONTEXT_EXT 0x800A
+ GLX_VISUAL_ID_EXT 0x800B
+ GLX_SCREEN_EXT 0x800C
+ void glXFreeContextEXT (Display* dpy, GLXContext context)
+ GLXContextID glXGetContextIDEXT (const GLXContext context)
+ Display* glXGetCurrentDisplayEXT (void)
+ GLXContext glXImportContextEXT (Display* dpy, GLXContextID contextID)
+ int glXQueryContextInfoEXT (Display* dpy, GLXContext context, int attribute, int* value)
+ typedef XID GLXContextID
diff --git a/glew/auto/extensions/gl/GLX_EXT_libglvnd b/glew/auto/extensions/gl/GLX_EXT_libglvnd
new file mode 100644
index 0000000..5a8d7cd
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_libglvnd
@@ -0,0 +1,5 @@
+GLX_EXT_libglvnd
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_libglvnd
+
+ GLX_VENDOR_NAMES_EXT 0x20F6
diff --git a/glew/auto/extensions/gl/GLX_EXT_no_config_context b/glew/auto/extensions/gl/GLX_EXT_no_config_context
new file mode 100644
index 0000000..1ae9a5f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_no_config_context
@@ -0,0 +1,4 @@
+GLX_EXT_no_config_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_no_config_context
+
diff --git a/glew/auto/extensions/gl/GLX_EXT_scene_marker b/glew/auto/extensions/gl/GLX_EXT_scene_marker
new file mode 100644
index 0000000..064caac
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_scene_marker
@@ -0,0 +1,4 @@
+GLX_EXT_scene_marker
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_scene_marker.txt
+GLX_EXT_scene_marker
+
diff --git a/glew/auto/extensions/gl/GLX_EXT_stereo_tree b/glew/auto/extensions/gl/GLX_EXT_stereo_tree
new file mode 100644
index 0000000..e3fbd07
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_stereo_tree
@@ -0,0 +1,7 @@
+GLX_EXT_stereo_tree
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_stereo_tree
+
+ GLX_STEREO_NOTIFY_EXT 0x00000000
+ GLX_STEREO_NOTIFY_MASK_EXT 0x00000001
+ GLX_STEREO_TREE_EXT 0x20F5
diff --git a/glew/auto/extensions/gl/GLX_EXT_swap_control b/glew/auto/extensions/gl/GLX_EXT_swap_control
new file mode 100644
index 0000000..fe0ba16
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_swap_control
@@ -0,0 +1,7 @@
+GLX_EXT_swap_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_swap_control
+
+ GLX_SWAP_INTERVAL_EXT 0x20F1
+ GLX_MAX_SWAP_INTERVAL_EXT 0x20F2
+ void glXSwapIntervalEXT (Display* dpy, GLXDrawable drawable, int interval)
diff --git a/glew/auto/extensions/gl/GLX_EXT_swap_control_tear b/glew/auto/extensions/gl/GLX_EXT_swap_control_tear
new file mode 100644
index 0000000..1a498aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_swap_control_tear
@@ -0,0 +1,5 @@
+GLX_EXT_swap_control_tear
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_swap_control_tear
+
+ GLX_LATE_SWAPS_TEAR_EXT 0x20F3
diff --git a/glew/auto/extensions/gl/GLX_EXT_texture_from_pixmap b/glew/auto/extensions/gl/GLX_EXT_texture_from_pixmap
new file mode 100644
index 0000000..773fccf
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_texture_from_pixmap
@@ -0,0 +1,39 @@
+GLX_EXT_texture_from_pixmap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_texture_from_pixmap
+
+ GLX_TEXTURE_1D_BIT_EXT 0x00000001
+ GLX_TEXTURE_2D_BIT_EXT 0x00000002
+ GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+ GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+ GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+ GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+ GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+ GLX_Y_INVERTED_EXT 0x20D4
+ GLX_TEXTURE_FORMAT_EXT 0x20D5
+ GLX_TEXTURE_TARGET_EXT 0x20D6
+ GLX_MIPMAP_TEXTURE_EXT 0x20D7
+ GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+ GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+ GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+ GLX_TEXTURE_1D_EXT 0x20DB
+ GLX_TEXTURE_2D_EXT 0x20DC
+ GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+ GLX_FRONT_LEFT_EXT 0x20DE
+ GLX_FRONT_EXT 0x20DE
+ GLX_FRONT_RIGHT_EXT 0x20DF
+ GLX_BACK_LEFT_EXT 0x20E0
+ GLX_BACK_EXT 0x20E0
+ GLX_BACK_RIGHT_EXT 0x20E1
+ GLX_AUX0_EXT 0x20E2
+ GLX_AUX1_EXT 0x20E3
+ GLX_AUX2_EXT 0x20E4
+ GLX_AUX3_EXT 0x20E5
+ GLX_AUX4_EXT 0x20E6
+ GLX_AUX5_EXT 0x20E7
+ GLX_AUX6_EXT 0x20E8
+ GLX_AUX7_EXT 0x20E9
+ GLX_AUX8_EXT 0x20EA
+ GLX_AUX9_EXT 0x20EB
+ void glXBindTexImageEXT (Display* dpy, GLXDrawable drawable, int buffer, const int* attrib_list)
+ void glXReleaseTexImageEXT (Display* dpy, GLXDrawable drawable, int buffer)
diff --git a/glew/auto/extensions/gl/GLX_EXT_visual_info b/glew/auto/extensions/gl/GLX_EXT_visual_info
new file mode 100644
index 0000000..a057173
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_visual_info
@@ -0,0 +1,20 @@
+GLX_EXT_visual_info
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_visual_info
+
+ GLX_X_VISUAL_TYPE_EXT 0x22
+ GLX_TRANSPARENT_TYPE_EXT 0x23
+ GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
+ GLX_TRANSPARENT_RED_VALUE_EXT 0x25
+ GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
+ GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
+ GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
+ GLX_NONE_EXT 0x8000
+ GLX_TRUE_COLOR_EXT 0x8002
+ GLX_DIRECT_COLOR_EXT 0x8003
+ GLX_PSEUDO_COLOR_EXT 0x8004
+ GLX_STATIC_COLOR_EXT 0x8005
+ GLX_GRAY_SCALE_EXT 0x8006
+ GLX_STATIC_GRAY_EXT 0x8007
+ GLX_TRANSPARENT_RGB_EXT 0x8008
+ GLX_TRANSPARENT_INDEX_EXT 0x8009
diff --git a/glew/auto/extensions/gl/GLX_EXT_visual_rating b/glew/auto/extensions/gl/GLX_EXT_visual_rating
new file mode 100644
index 0000000..1688cad
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_EXT_visual_rating
@@ -0,0 +1,7 @@
+GLX_EXT_visual_rating
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_EXT_visual_rating
+
+ GLX_VISUAL_CAVEAT_EXT 0x20
+ GLX_SLOW_VISUAL_EXT 0x8001
+ GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
diff --git a/glew/auto/extensions/gl/GLX_INTEL_swap_event b/glew/auto/extensions/gl/GLX_INTEL_swap_event
new file mode 100644
index 0000000..edb6dd0
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_INTEL_swap_event
@@ -0,0 +1,8 @@
+GLX_INTEL_swap_event
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_INTEL_swap_event
+
+ GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000
+ GLX_EXCHANGE_COMPLETE_INTEL 0x8180
+ GLX_COPY_COMPLETE_INTEL 0x8181
+ GLX_FLIP_COMPLETE_INTEL 0x8182
diff --git a/glew/auto/extensions/gl/GLX_MESA_agp_offset b/glew/auto/extensions/gl/GLX_MESA_agp_offset
new file mode 100644
index 0000000..002527d
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_agp_offset
@@ -0,0 +1,5 @@
+GLX_MESA_agp_offset
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_agp_offset
+
+ unsigned int glXGetAGPOffsetMESA (const void* pointer)
diff --git a/glew/auto/extensions/gl/GLX_MESA_copy_sub_buffer b/glew/auto/extensions/gl/GLX_MESA_copy_sub_buffer
new file mode 100644
index 0000000..e0a1d3f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_copy_sub_buffer
@@ -0,0 +1,5 @@
+GLX_MESA_copy_sub_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_copy_sub_buffer
+
+ void glXCopySubBufferMESA (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height)
diff --git a/glew/auto/extensions/gl/GLX_MESA_pixmap_colormap b/glew/auto/extensions/gl/GLX_MESA_pixmap_colormap
new file mode 100644
index 0000000..240467c
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_pixmap_colormap
@@ -0,0 +1,5 @@
+GLX_MESA_pixmap_colormap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_pixmap_colormap
+
+ GLXPixmap glXCreateGLXPixmapMESA (Display* dpy, XVisualInfo* visual, Pixmap pixmap, Colormap cmap)
diff --git a/glew/auto/extensions/gl/GLX_MESA_query_renderer b/glew/auto/extensions/gl/GLX_MESA_query_renderer
new file mode 100644
index 0000000..86e667f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_query_renderer
@@ -0,0 +1,19 @@
+GLX_MESA_query_renderer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_query_renderer
+
+ GLX_RENDERER_VENDOR_ID_MESA 0x8183
+ GLX_RENDERER_DEVICE_ID_MESA 0x8184
+ GLX_RENDERER_VERSION_MESA 0x8185
+ GLX_RENDERER_ACCELERATED_MESA 0x8186
+ GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
+ GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
+ GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
+ GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
+ GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
+ GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
+ GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
+ Bool glXQueryCurrentRendererIntegerMESA (int attribute, unsigned int* value)
+ const char* glXQueryCurrentRendererStringMESA (int attribute)
+ Bool glXQueryRendererIntegerMESA (Display* dpy, int screen, int renderer, int attribute, unsigned int* value)
+ const char* glXQueryRendererStringMESA (Display* dpy, int screen, int renderer, int attribute)
diff --git a/glew/auto/extensions/gl/GLX_MESA_release_buffers b/glew/auto/extensions/gl/GLX_MESA_release_buffers
new file mode 100644
index 0000000..a8b3efd
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_release_buffers
@@ -0,0 +1,5 @@
+GLX_MESA_release_buffers
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_release_buffers
+
+ Bool glXReleaseBuffersMESA (Display* dpy, GLXDrawable drawable)
diff --git a/glew/auto/extensions/gl/GLX_MESA_set_3dfx_mode b/glew/auto/extensions/gl/GLX_MESA_set_3dfx_mode
new file mode 100644
index 0000000..3b18162
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_set_3dfx_mode
@@ -0,0 +1,7 @@
+GLX_MESA_set_3dfx_mode
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_set_3dfx_mode
+
+ GLX_3DFX_WINDOW_MODE_MESA 0x1
+ GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
+ GLboolean glXSet3DfxModeMESA (GLint mode)
diff --git a/glew/auto/extensions/gl/GLX_MESA_swap_control b/glew/auto/extensions/gl/GLX_MESA_swap_control
new file mode 100644
index 0000000..5ad2011
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_MESA_swap_control
@@ -0,0 +1,6 @@
+GLX_MESA_swap_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_MESA_swap_control
+
+ int glXGetSwapIntervalMESA (void)
+ int glXSwapIntervalMESA (unsigned int interval)
diff --git a/glew/auto/extensions/gl/GLX_NV_copy_buffer b/glew/auto/extensions/gl/GLX_NV_copy_buffer
new file mode 100644
index 0000000..dbaa501
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_copy_buffer
@@ -0,0 +1,6 @@
+GLX_NV_copy_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_copy_buffer
+
+ void glXCopyBufferSubDataNV (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+ void glXNamedCopyBufferSubDataNV (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GLX_NV_copy_image b/glew/auto/extensions/gl/GLX_NV_copy_image
new file mode 100644
index 0000000..9405e37
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_copy_image
@@ -0,0 +1,6 @@
+GLX_NV_copy_image
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_copy_image
+
+ void glXCopyImageSubDataNV (Display* dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+ void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GLX_NV_delay_before_swap b/glew/auto/extensions/gl/GLX_NV_delay_before_swap
new file mode 100644
index 0000000..02fab8c
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_delay_before_swap
@@ -0,0 +1,5 @@
+GLX_NV_delay_before_swap
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_delay_before_swap
+
+ Bool glXDelayBeforeSwapNV (Display* dpy, GLXDrawable drawable, GLfloat seconds)
diff --git a/glew/auto/extensions/gl/GLX_NV_float_buffer b/glew/auto/extensions/gl/GLX_NV_float_buffer
new file mode 100644
index 0000000..3c1f9e9
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_float_buffer
@@ -0,0 +1,5 @@
+GLX_NV_float_buffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_float_buffer
+
+ GLX_FLOAT_COMPONENTS_NV 0x20B0
diff --git a/glew/auto/extensions/gl/GLX_NV_multigpu_context b/glew/auto/extensions/gl/GLX_NV_multigpu_context
new file mode 100644
index 0000000..663f412
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_multigpu_context
@@ -0,0 +1,9 @@
+GLX_NV_multigpu_context
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_multigpu_context
+
+ GLX_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
+ GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+ GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+ GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+ GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
diff --git a/glew/auto/extensions/gl/GLX_NV_multisample_coverage b/glew/auto/extensions/gl/GLX_NV_multisample_coverage
new file mode 100644
index 0000000..896bbc4
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_multisample_coverage
@@ -0,0 +1,6 @@
+GLX_NV_multisample_coverage
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_multisample_coverage
+
+ GLX_COLOR_SAMPLES_NV 0x20B3
+ GLX_COVERAGE_SAMPLES_NV 100001
diff --git a/glew/auto/extensions/gl/GLX_NV_present_video b/glew/auto/extensions/gl/GLX_NV_present_video
new file mode 100644
index 0000000..2f87fed
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_present_video
@@ -0,0 +1,7 @@
+GLX_NV_present_video
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_present_video
+
+ GLX_NUM_VIDEO_SLOTS_NV 0x20F0
+ int glXBindVideoDeviceNV (Display* dpy, unsigned int video_slot, unsigned int video_device, const int* attrib_list)
+ unsigned int* glXEnumerateVideoDevicesNV (Display* dpy, int screen, int* nelements)
diff --git a/glew/auto/extensions/gl/GLX_NV_robustness_video_memory_purge b/glew/auto/extensions/gl/GLX_NV_robustness_video_memory_purge
new file mode 100644
index 0000000..2ff8b91
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_robustness_video_memory_purge
@@ -0,0 +1,5 @@
+GLX_NV_robustness_video_memory_purge
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_robustness_video_memory_purge
+
+ GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
diff --git a/glew/auto/extensions/gl/GLX_NV_swap_group b/glew/auto/extensions/gl/GLX_NV_swap_group
new file mode 100644
index 0000000..e78acdc
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_swap_group
@@ -0,0 +1,10 @@
+GLX_NV_swap_group
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_swap_group
+
+ Bool glXBindSwapBarrierNV (Display* dpy, GLuint group, GLuint barrier)
+ Bool glXJoinSwapGroupNV (Display* dpy, GLXDrawable drawable, GLuint group)
+ Bool glXQueryFrameCountNV (Display* dpy, int screen, GLuint* count)
+ Bool glXQueryMaxSwapGroupsNV (Display* dpy, int screen, GLuint* maxGroups, GLuint* maxBarriers)
+ Bool glXQuerySwapGroupNV (Display* dpy, GLXDrawable drawable, GLuint* group, GLuint* barrier)
+ Bool glXResetFrameCountNV (Display* dpy, int screen)
diff --git a/glew/auto/extensions/gl/GLX_NV_vertex_array_range b/glew/auto/extensions/gl/GLX_NV_vertex_array_range
new file mode 100644
index 0000000..9250ec2
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_vertex_array_range
@@ -0,0 +1,6 @@
+GLX_NV_vertex_array_range
+http://oss.sgi.com/projects/ogl-sample/registry/NV/vertex_array_range.txt
+GLX_NV_vertex_array_range
+
+ void * glXAllocateMemoryNV (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority)
+ void glXFreeMemoryNV (void *pointer)
diff --git a/glew/auto/extensions/gl/GLX_NV_video_capture b/glew/auto/extensions/gl/GLX_NV_video_capture
new file mode 100644
index 0000000..4f81c3a
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_video_capture
@@ -0,0 +1,13 @@
+GLX_NV_video_capture
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_video_capture
+
+ GLX_DEVICE_ID_NV 0x20CD
+ GLX_UNIQUE_ID_NV 0x20CE
+ GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+ int glXBindVideoCaptureDeviceNV (Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device)
+ GLXVideoCaptureDeviceNV* glXEnumerateVideoCaptureDevicesNV (Display* dpy, int screen, int* nelements)
+ void glXLockVideoCaptureDeviceNV (Display* dpy, GLXVideoCaptureDeviceNV device)
+ int glXQueryVideoCaptureDeviceNV (Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int* value)
+ void glXReleaseVideoCaptureDeviceNV (Display* dpy, GLXVideoCaptureDeviceNV device)
+ typedef XID GLXVideoCaptureDeviceNV
diff --git a/glew/auto/extensions/gl/GLX_NV_video_out b/glew/auto/extensions/gl/GLX_NV_video_out
new file mode 100644
index 0000000..75e6235
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_NV_video_out
@@ -0,0 +1,20 @@
+GLX_NV_video_out
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_NV_video_out
+
+ GLX_VIDEO_OUT_COLOR_NV 0x20C3
+ GLX_VIDEO_OUT_ALPHA_NV 0x20C4
+ GLX_VIDEO_OUT_DEPTH_NV 0x20C5
+ GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+ GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+ GLX_VIDEO_OUT_FRAME_NV 0x20C8
+ GLX_VIDEO_OUT_FIELD_1_NV 0x20C9
+ GLX_VIDEO_OUT_FIELD_2_NV 0x20CA
+ GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB
+ GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC
+ int glXBindVideoImageNV (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer)
+ int glXGetVideoDeviceNV (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV* pVideoDevice)
+ int glXGetVideoInfoNV (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo)
+ int glXReleaseVideoDeviceNV (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice)
+ int glXReleaseVideoImageNV (Display* dpy, GLXPbuffer pbuf)
+ int glXSendPbufferToVideoNV (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long* pulCounterPbuffer, GLboolean bBlock)
diff --git a/glew/auto/extensions/gl/GLX_OML_swap_method b/glew/auto/extensions/gl/GLX_OML_swap_method
new file mode 100644
index 0000000..4834429
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_OML_swap_method
@@ -0,0 +1,11 @@
+GLX_OML_swap_method
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_OML_swap_method
+
+ GLX_SWAP_METHOD_OML 0x8060
+ GLX_SWAP_EXCHANGE_OML 0x8061
+ GLX_SWAP_COPY_OML 0x8062
+ GLX_SWAP_UNDEFINED_OML 0x8063
+ GLX_SWAP_EXCHANGE_OML 0x8061
+ GLX_SWAP_COPY_OML 0x8062
+ GLX_SWAP_UNDEFINED_OML 0x8063
diff --git a/glew/auto/extensions/gl/GLX_OML_sync_control b/glew/auto/extensions/gl/GLX_OML_sync_control
new file mode 100644
index 0000000..0a35acc
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_OML_sync_control
@@ -0,0 +1,9 @@
+GLX_OML_sync_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_OML_sync_control
+
+ Bool glXGetMscRateOML (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator)
+ Bool glXGetSyncValuesOML (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc)
+ int64_t glXSwapBuffersMscOML (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder)
+ Bool glXWaitForMscOML (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc)
+ Bool glXWaitForSbcOML (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc)
diff --git a/glew/auto/extensions/gl/GLX_SGIS_blended_overlay b/glew/auto/extensions/gl/GLX_SGIS_blended_overlay
new file mode 100644
index 0000000..25d7d7f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIS_blended_overlay
@@ -0,0 +1,5 @@
+GLX_SGIS_blended_overlay
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIS_blended_overlay
+
+ GLX_BLENDED_RGBA_SGIS 0x8025
diff --git a/glew/auto/extensions/gl/GLX_SGIS_color_range b/glew/auto/extensions/gl/GLX_SGIS_color_range
new file mode 100644
index 0000000..9286cff
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIS_color_range
@@ -0,0 +1,4 @@
+GLX_SGIS_color_range
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/GLX_SGIS_color_range.txt
+GLX_SGIS_color_range
+
diff --git a/glew/auto/extensions/gl/GLX_SGIS_multisample b/glew/auto/extensions/gl/GLX_SGIS_multisample
new file mode 100644
index 0000000..0c746ef
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIS_multisample
@@ -0,0 +1,6 @@
+GLX_SGIS_multisample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIS_multisample
+
+ GLX_SAMPLE_BUFFERS_SGIS 100000
+ GLX_SAMPLES_SGIS 100001
diff --git a/glew/auto/extensions/gl/GLX_SGIS_shared_multisample b/glew/auto/extensions/gl/GLX_SGIS_shared_multisample
new file mode 100644
index 0000000..895b847
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIS_shared_multisample
@@ -0,0 +1,6 @@
+GLX_SGIS_shared_multisample
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIS_shared_multisample
+
+ GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
+ GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
diff --git a/glew/auto/extensions/gl/GLX_SGIX_fbconfig b/glew/auto/extensions/gl/GLX_SGIX_fbconfig
new file mode 100644
index 0000000..86756bb
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_fbconfig
@@ -0,0 +1,23 @@
+GLX_SGIX_fbconfig
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_fbconfig
+
+ GLX_WINDOW_BIT_SGIX 0x00000001
+ GLX_RGBA_BIT_SGIX 0x00000001
+ GLX_PIXMAP_BIT_SGIX 0x00000002
+ GLX_COLOR_INDEX_BIT_SGIX 0x00000002
+ GLX_SCREEN_EXT 0x800C
+ GLX_DRAWABLE_TYPE_SGIX 0x8010
+ GLX_RENDER_TYPE_SGIX 0x8011
+ GLX_X_RENDERABLE_SGIX 0x8012
+ GLX_FBCONFIG_ID_SGIX 0x8013
+ GLX_RGBA_TYPE_SGIX 0x8014
+ GLX_COLOR_INDEX_TYPE_SGIX 0x8015
+ GLXFBConfigSGIX* glXChooseFBConfigSGIX (Display* dpy, int screen, int* attrib_list, int* nelements)
+ GLXContext glXCreateContextWithConfigSGIX (Display* dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct)
+ GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display* dpy, GLXFBConfigSGIX config, Pixmap pixmap)
+ int glXGetFBConfigAttribSGIX (Display* dpy, GLXFBConfigSGIX config, int attribute, int* value)
+ GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display* dpy, XVisualInfo* vis)
+ XVisualInfo* glXGetVisualFromFBConfigSGIX (Display* dpy, GLXFBConfigSGIX config)
+ typedef XID GLXFBConfigIDSGIX
+ typedef struct __GLXFBConfigRec *GLXFBConfigSGIX
diff --git a/glew/auto/extensions/gl/GLX_SGIX_hyperpipe b/glew/auto/extensions/gl/GLX_SGIX_hyperpipe
new file mode 100644
index 0000000..80fd7d6
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_hyperpipe
@@ -0,0 +1,26 @@
+GLX_SGIX_hyperpipe
+http://oss.sgi.com/projects/ogl-sample/registry/SGIX/hyperpipe_group.txt
+GLX_SGIX_hyperpipe
+
+ GLX_HYPERPIPE_ID_SGIX 0x8030
+ GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
+ GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
+ GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
+ GLX_PIPE_RECT_SGIX 0x00000001
+ GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
+ GLX_HYPERPIPE_STEREO_SGIX 0x00000003
+ GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
+ GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
+ GLX_BAD_HYPERPIPE_SGIX 92
+ typedef struct { char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int networkId; } GLXHyperpipeNetworkSGIX;
+ typedef struct { char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int channel; unsigned int participationType; int timeSlice; } GLXHyperpipeConfigSGIX;
+ typedef struct { char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int srcXOrigin; int srcYOrigin; int srcWidth; int srcHeight; int destXOrigin; int destYOrigin; int destWidth; int destHeight; } GLXPipeRect;
+ typedef struct { char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int XOrigin; int YOrigin; int maxHeight; int maxWidth; } GLXPipeRectLimits;
+ GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *dpy, int *npipes)
+ int glXHyperpipeConfigSGIX (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId)
+ GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *dpy, int hpId, int *npipes)
+ int glXDestroyHyperpipeConfigSGIX (Display *dpy, int hpId)
+ int glXBindHyperpipeSGIX (Display *dpy, int hpId)
+ int glXQueryHyperpipeBestAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList)
+ int glXHyperpipeAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *attribList)
+ int glXQueryHyperpipeAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList)
diff --git a/glew/auto/extensions/gl/GLX_SGIX_pbuffer b/glew/auto/extensions/gl/GLX_SGIX_pbuffer
new file mode 100644
index 0000000..556c100
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_pbuffer
@@ -0,0 +1,36 @@
+GLX_SGIX_pbuffer
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_pbuffer
+
+ GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
+ GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
+ GLX_PBUFFER_BIT_SGIX 0x00000004
+ GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
+ GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
+ GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
+ GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
+ GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
+ GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
+ GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
+ GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
+ GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
+ GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
+ GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
+ GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
+ GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
+ GLX_PRESERVED_CONTENTS_SGIX 0x801B
+ GLX_LARGEST_PBUFFER_SGIX 0x801C
+ GLX_WIDTH_SGIX 0x801D
+ GLX_HEIGHT_SGIX 0x801E
+ GLX_EVENT_MASK_SGIX 0x801F
+ GLX_DAMAGED_SGIX 0x8020
+ GLX_SAVED_SGIX 0x8021
+ GLX_WINDOW_SGIX 0x8022
+ GLX_PBUFFER_SGIX 0x8023
+ GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display* dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int* attrib_list)
+ void glXDestroyGLXPbufferSGIX (Display* dpy, GLXPbufferSGIX pbuf)
+ void glXGetSelectedEventSGIX (Display* dpy, GLXDrawable drawable, unsigned long* mask)
+ void glXQueryGLXPbufferSGIX (Display* dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int* value)
+ void glXSelectEventSGIX (Display* dpy, GLXDrawable drawable, unsigned long mask)
+ typedef XID GLXPbufferSGIX
+ typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX
diff --git a/glew/auto/extensions/gl/GLX_SGIX_swap_barrier b/glew/auto/extensions/gl/GLX_SGIX_swap_barrier
new file mode 100644
index 0000000..61447c6
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_swap_barrier
@@ -0,0 +1,6 @@
+GLX_SGIX_swap_barrier
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_swap_barrier
+
+ void glXBindSwapBarrierSGIX (Display* dpy, GLXDrawable drawable, int barrier)
+ Bool glXQueryMaxSwapBarriersSGIX (Display* dpy, int screen, int* max)
diff --git a/glew/auto/extensions/gl/GLX_SGIX_swap_group b/glew/auto/extensions/gl/GLX_SGIX_swap_group
new file mode 100644
index 0000000..790ea6b
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_swap_group
@@ -0,0 +1,5 @@
+GLX_SGIX_swap_group
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_swap_group
+
+ void glXJoinSwapGroupSGIX (Display* dpy, GLXDrawable drawable, GLXDrawable member)
diff --git a/glew/auto/extensions/gl/GLX_SGIX_video_resize b/glew/auto/extensions/gl/GLX_SGIX_video_resize
new file mode 100644
index 0000000..fd834bf
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_video_resize
@@ -0,0 +1,11 @@
+GLX_SGIX_video_resize
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_video_resize
+
+ GLX_SYNC_FRAME_SGIX 0x00000000
+ GLX_SYNC_SWAP_SGIX 0x00000001
+ int glXBindChannelToWindowSGIX (Display* display, int screen, int channel, Window window)
+ int glXChannelRectSGIX (Display* display, int screen, int channel, int x, int y, int w, int h)
+ int glXChannelRectSyncSGIX (Display* display, int screen, int channel, GLenum synctype)
+ int glXQueryChannelDeltasSGIX (Display* display, int screen, int channel, int* x, int* y, int* w, int* h)
+ int glXQueryChannelRectSGIX (Display* display, int screen, int channel, int* dx, int* dy, int* dw, int* dh)
diff --git a/glew/auto/extensions/gl/GLX_SGIX_visual_select_group b/glew/auto/extensions/gl/GLX_SGIX_visual_select_group
new file mode 100644
index 0000000..6aed22a
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGIX_visual_select_group
@@ -0,0 +1,5 @@
+GLX_SGIX_visual_select_group
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGIX_visual_select_group
+
+ GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
diff --git a/glew/auto/extensions/gl/GLX_SGI_cushion b/glew/auto/extensions/gl/GLX_SGI_cushion
new file mode 100644
index 0000000..99ab02f
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGI_cushion
@@ -0,0 +1,5 @@
+GLX_SGI_cushion
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGI_cushion
+
+ void glXCushionSGI (Display* dpy, Window window, float cushion)
diff --git a/glew/auto/extensions/gl/GLX_SGI_make_current_read b/glew/auto/extensions/gl/GLX_SGI_make_current_read
new file mode 100644
index 0000000..2a4d8fc
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGI_make_current_read
@@ -0,0 +1,6 @@
+GLX_SGI_make_current_read
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGI_make_current_read
+
+ GLXDrawable glXGetCurrentReadDrawableSGI (void)
+ Bool glXMakeCurrentReadSGI (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
diff --git a/glew/auto/extensions/gl/GLX_SGI_swap_control b/glew/auto/extensions/gl/GLX_SGI_swap_control
new file mode 100644
index 0000000..40032fa
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGI_swap_control
@@ -0,0 +1,5 @@
+GLX_SGI_swap_control
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGI_swap_control
+
+ int glXSwapIntervalSGI (int interval)
diff --git a/glew/auto/extensions/gl/GLX_SGI_video_sync b/glew/auto/extensions/gl/GLX_SGI_video_sync
new file mode 100644
index 0000000..9959651
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SGI_video_sync
@@ -0,0 +1,6 @@
+GLX_SGI_video_sync
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SGI_video_sync
+
+ int glXGetVideoSyncSGI (unsigned int* count)
+ int glXWaitVideoSyncSGI (int divisor, int remainder, unsigned int* count)
diff --git a/glew/auto/extensions/gl/GLX_SUN_get_transparent_index b/glew/auto/extensions/gl/GLX_SUN_get_transparent_index
new file mode 100644
index 0000000..cb52690
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SUN_get_transparent_index
@@ -0,0 +1,5 @@
+GLX_SUN_get_transparent_index
+https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
+GLX_SUN_get_transparent_index
+
+ Status glXGetTransparentIndexSUN (Display* dpy, Window overlay, Window underlay, unsigned long* pTransparentIndex)
diff --git a/glew/auto/extensions/gl/GLX_SUN_video_resize b/glew/auto/extensions/gl/GLX_SUN_video_resize
new file mode 100644
index 0000000..3a5a176
--- /dev/null
+++ b/glew/auto/extensions/gl/GLX_SUN_video_resize
@@ -0,0 +1,8 @@
+GLX_SUN_video_resize
+http://wwws.sun.com/software/graphics/opengl/extensions/glx_sun_video_resize.txt
+GLX_SUN_video_resize
+
+ GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD
+ GLX_VIDEO_RESIZE_SUN 0x8171
+ int glXVideoResizeSUN (Display* display, GLXDrawable window, float factor)
+ int glXGetVideoResizeSUN (Display* display, GLXDrawable window, float* factor)
diff --git a/glew/auto/extensions/gl/GL_3DFX_multisample b/glew/auto/extensions/gl/GL_3DFX_multisample
new file mode 100644
index 0000000..c7f62ff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_3DFX_multisample
@@ -0,0 +1,8 @@
+GL_3DFX_multisample
+https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_multisample.txt
+GL_3DFX_multisample
+
+ GL_MULTISAMPLE_3DFX 0x86B2
+ GL_SAMPLE_BUFFERS_3DFX 0x86B3
+ GL_SAMPLES_3DFX 0x86B4
+ GL_MULTISAMPLE_BIT_3DFX 0x20000000
diff --git a/glew/auto/extensions/gl/GL_3DFX_tbuffer b/glew/auto/extensions/gl/GL_3DFX_tbuffer
new file mode 100644
index 0000000..c4e1074
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_3DFX_tbuffer
@@ -0,0 +1,5 @@
+GL_3DFX_tbuffer
+https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_tbuffer.txt
+GL_3DFX_tbuffer
+
+ void glTbufferMask3DFX (GLuint mask)
diff --git a/glew/auto/extensions/gl/GL_3DFX_texture_compression_FXT1 b/glew/auto/extensions/gl/GL_3DFX_texture_compression_FXT1
new file mode 100644
index 0000000..f66e76c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_3DFX_texture_compression_FXT1
@@ -0,0 +1,6 @@
+GL_3DFX_texture_compression_FXT1
+https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_texture_compression_FXT1.txt
+GL_3DFX_texture_compression_FXT1
+
+ GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
+ GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
diff --git a/glew/auto/extensions/gl/GL_AMD_blend_minmax_factor b/glew/auto/extensions/gl/GL_AMD_blend_minmax_factor
new file mode 100644
index 0000000..b0d67f5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_blend_minmax_factor
@@ -0,0 +1,6 @@
+GL_AMD_blend_minmax_factor
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_blend_minmax_factor.txt
+GL_AMD_blend_minmax_factor
+
+ GL_FACTOR_MIN_AMD 0x901C
+ GL_FACTOR_MAX_AMD 0x901D
diff --git a/glew/auto/extensions/gl/GL_AMD_compressed_3DC_texture b/glew/auto/extensions/gl/GL_AMD_compressed_3DC_texture
new file mode 100644
index 0000000..29b87f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_compressed_3DC_texture
@@ -0,0 +1,6 @@
+GL_AMD_compressed_3DC_texture
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_3DC_texture.txt
+GL_AMD_compressed_3DC_texture
+
+ GL_3DC_X_AMD 0x87F9
+ GL_3DC_XY_AMD 0x87FA
diff --git a/glew/auto/extensions/gl/GL_AMD_compressed_ATC_texture b/glew/auto/extensions/gl/GL_AMD_compressed_ATC_texture
new file mode 100644
index 0000000..16e680e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_compressed_ATC_texture
@@ -0,0 +1,7 @@
+GL_AMD_compressed_ATC_texture
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_ATC_texture.txt
+GL_AMD_compressed_ATC_texture
+
+ GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
+ GL_ATC_RGB_AMD 0x8C92
+ GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
diff --git a/glew/auto/extensions/gl/GL_AMD_conservative_depth b/glew/auto/extensions/gl/GL_AMD_conservative_depth
new file mode 100644
index 0000000..49008ed
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_conservative_depth
@@ -0,0 +1,4 @@
+GL_AMD_conservative_depth
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_conservative_depth.txt
+GL_AMD_conservative_depth
+
diff --git a/glew/auto/extensions/gl/GL_AMD_debug_output b/glew/auto/extensions/gl/GL_AMD_debug_output
new file mode 100644
index 0000000..8a19a53
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_debug_output
@@ -0,0 +1,23 @@
+GL_AMD_debug_output
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_debug_output.txt
+GL_AMD_debug_output
+
+ GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143
+ GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
+ GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
+ GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
+ GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147
+ GL_DEBUG_SEVERITY_LOW_AMD 0x9148
+ GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149
+ GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
+ GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
+ GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
+ GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
+ GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
+ GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
+ GL_DEBUG_CATEGORY_OTHER_AMD 0x9150
+ void glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam)
+ void glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled)
+ void glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar* buf)
+ GLuint glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, GLchar* message)
+ typedef void (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam)
diff --git a/glew/auto/extensions/gl/GL_AMD_depth_clamp_separate b/glew/auto/extensions/gl/GL_AMD_depth_clamp_separate
new file mode 100644
index 0000000..3089342
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_depth_clamp_separate
@@ -0,0 +1,6 @@
+GL_AMD_depth_clamp_separate
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_depth_clamp_separate.txt
+GL_AMD_depth_clamp_separate
+
+ GL_DEPTH_CLAMP_NEAR_AMD 0x901E
+ GL_DEPTH_CLAMP_FAR_AMD 0x901F
diff --git a/glew/auto/extensions/gl/GL_AMD_draw_buffers_blend b/glew/auto/extensions/gl/GL_AMD_draw_buffers_blend
new file mode 100644
index 0000000..1564d9d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_draw_buffers_blend
@@ -0,0 +1,8 @@
+GL_AMD_draw_buffers_blend
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_draw_buffers_blend.txt
+GL_AMD_draw_buffers_blend
+
+ void glBlendEquationIndexedAMD (GLuint buf, GLenum mode)
+ void glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
+ void glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst)
+ void glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
diff --git a/glew/auto/extensions/gl/GL_AMD_framebuffer_multisample_advanced b/glew/auto/extensions/gl/GL_AMD_framebuffer_multisample_advanced
new file mode 100644
index 0000000..a4d21e6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_framebuffer_multisample_advanced
@@ -0,0 +1,12 @@
+GL_AMD_framebuffer_multisample_advanced
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_multisample_advanced.txt
+GL_AMD_framebuffer_multisample_advanced
+
+ GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2
+ GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3
+ GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4
+ GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5
+ GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6
+ GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7
+ void glNamedRenderbufferStorageMultisampleAdvancedAMD (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_AMD_framebuffer_sample_positions b/glew/auto/extensions/gl/GL_AMD_framebuffer_sample_positions
new file mode 100644
index 0000000..edb8474
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_framebuffer_sample_positions
@@ -0,0 +1,12 @@
+GL_AMD_framebuffer_sample_positions
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_sample_positions.txt
+GL_AMD_framebuffer_sample_positions
+
+ GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+ GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE
+ GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF
+ GL_ALL_PIXELS_AMD 0xFFFFFFFF
+ void glFramebufferSamplePositionsfvAMD (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat* values)
+ void glGetFramebufferParameterfvAMD (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat* values)
+ void glGetNamedFramebufferParameterfvAMD (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat* values)
+ void glNamedFramebufferSamplePositionsfvAMD (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat* values)
diff --git a/glew/auto/extensions/gl/GL_AMD_gcn_shader b/glew/auto/extensions/gl/GL_AMD_gcn_shader
new file mode 100644
index 0000000..9ade26b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gcn_shader
@@ -0,0 +1,4 @@
+GL_AMD_gcn_shader
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gcn_shader.txt
+GL_AMD_gcn_shader
+
diff --git a/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float b/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float
new file mode 100644
index 0000000..c15f6f4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float
@@ -0,0 +1,17 @@
+GL_AMD_gpu_shader_half_float
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_half_float.txt
+GL_AMD_gpu_shader_half_float
+
+ GL_FLOAT16_NV 0x8FF8
+ GL_FLOAT16_VEC2_NV 0x8FF9
+ GL_FLOAT16_VEC3_NV 0x8FFA
+ GL_FLOAT16_VEC4_NV 0x8FFB
+ GL_FLOAT16_MAT2_AMD 0x91C5
+ GL_FLOAT16_MAT3_AMD 0x91C6
+ GL_FLOAT16_MAT4_AMD 0x91C7
+ GL_FLOAT16_MAT2x3_AMD 0x91C8
+ GL_FLOAT16_MAT2x4_AMD 0x91C9
+ GL_FLOAT16_MAT3x2_AMD 0x91CA
+ GL_FLOAT16_MAT3x4_AMD 0x91CB
+ GL_FLOAT16_MAT4x2_AMD 0x91CC
+ GL_FLOAT16_MAT4x3_AMD 0x91CD
diff --git a/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float_fetch b/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float_fetch
new file mode 100644
index 0000000..8cbc117
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gpu_shader_half_float_fetch
@@ -0,0 +1,33 @@
+GL_AMD_gpu_shader_half_float_fetch
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_half_float_fetch.txt
+GL_AMD_gpu_shader_half_float_fetch
+
+ GL_FLOAT16_SAMPLER_1D_AMD 0x91CE
+ GL_FLOAT16_SAMPLER_2D_AMD 0x91CF
+ GL_FLOAT16_SAMPLER_3D_AMD 0x91D0
+ GL_FLOAT16_SAMPLER_CUBE_AMD 0x91D1
+ GL_FLOAT16_SAMPLER_2D_RECT_AMD 0x91D2
+ GL_FLOAT16_SAMPLER_1D_ARRAY_AMD 0x91D3
+ GL_FLOAT16_SAMPLER_2D_ARRAY_AMD 0x91D4
+ GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD 0x91D5
+ GL_FLOAT16_SAMPLER_BUFFER_AMD 0x91D6
+ GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD 0x91D7
+ GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD 0x91D8
+ GL_FLOAT16_SAMPLER_1D_SHADOW_AMD 0x91D9
+ GL_FLOAT16_SAMPLER_2D_SHADOW_AMD 0x91DA
+ GL_FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD 0x91DB
+ GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD 0x91DC
+ GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD 0x91DD
+ GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD 0x91DE
+ GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD 0x91DF
+ GL_FLOAT16_IMAGE_1D_AMD 0x91E0
+ GL_FLOAT16_IMAGE_2D_AMD 0x91E1
+ GL_FLOAT16_IMAGE_3D_AMD 0x91E2
+ GL_FLOAT16_IMAGE_2D_RECT_AMD 0x91E3
+ GL_FLOAT16_IMAGE_CUBE_AMD 0x91E4
+ GL_FLOAT16_IMAGE_1D_ARRAY_AMD 0x91E5
+ GL_FLOAT16_IMAGE_2D_ARRAY_AMD 0x91E6
+ GL_FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD 0x91E7
+ GL_FLOAT16_IMAGE_BUFFER_AMD 0x91E8
+ GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD 0x91E9
+ GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD 0x91EA
diff --git a/glew/auto/extensions/gl/GL_AMD_gpu_shader_int16 b/glew/auto/extensions/gl/GL_AMD_gpu_shader_int16
new file mode 100644
index 0000000..6918da0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gpu_shader_int16
@@ -0,0 +1,4 @@
+GL_AMD_gpu_shader_int16
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_int16.txt
+GL_AMD_gpu_shader_int16
+
diff --git a/glew/auto/extensions/gl/GL_AMD_gpu_shader_int64 b/glew/auto/extensions/gl/GL_AMD_gpu_shader_int64
new file mode 100644
index 0000000..5612dbb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_gpu_shader_int64
@@ -0,0 +1,4 @@
+GL_AMD_gpu_shader_int64
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_int64.txt
+GL_AMD_gpu_shader_int64
+
diff --git a/glew/auto/extensions/gl/GL_AMD_interleaved_elements b/glew/auto/extensions/gl/GL_AMD_interleaved_elements
new file mode 100644
index 0000000..b930ad4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_interleaved_elements
@@ -0,0 +1,14 @@
+GL_AMD_interleaved_elements
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_interleaved_elements.txt
+GL_AMD_interleaved_elements
+
+ GL_RED 0x1903
+ GL_GREEN 0x1904
+ GL_BLUE 0x1905
+ GL_ALPHA 0x1906
+ GL_RG8UI 0x8238
+ GL_RG16UI 0x823A
+ GL_RGBA8UI 0x8D7C
+ GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4
+ GL_VERTEX_ID_SWIZZLE_AMD 0x91A5
+ void glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_AMD_multi_draw_indirect b/glew/auto/extensions/gl/GL_AMD_multi_draw_indirect
new file mode 100644
index 0000000..03efcc2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_multi_draw_indirect
@@ -0,0 +1,6 @@
+GL_AMD_multi_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_multi_draw_indirect.txt
+GL_AMD_multi_draw_indirect
+
+ void glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride)
+ void glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_AMD_name_gen_delete b/glew/auto/extensions/gl/GL_AMD_name_gen_delete
new file mode 100644
index 0000000..f0af15e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_name_gen_delete
@@ -0,0 +1,12 @@
+GL_AMD_name_gen_delete
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_name_gen_delete.txt
+GL_AMD_name_gen_delete
+
+ GL_DATA_BUFFER_AMD 0x9151
+ GL_PERFORMANCE_MONITOR_AMD 0x9152
+ GL_QUERY_OBJECT_AMD 0x9153
+ GL_VERTEX_ARRAY_OBJECT_AMD 0x9154
+ GL_SAMPLER_OBJECT_AMD 0x9155
+ void glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint* names)
+ void glGenNamesAMD (GLenum identifier, GLuint num, GLuint* names)
+ GLboolean glIsNameAMD (GLenum identifier, GLuint name)
diff --git a/glew/auto/extensions/gl/GL_AMD_occlusion_query_event b/glew/auto/extensions/gl/GL_AMD_occlusion_query_event
new file mode 100644
index 0000000..a33396d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_occlusion_query_event
@@ -0,0 +1,11 @@
+GL_AMD_occlusion_query_event
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_occlusion_query_event.txt
+GL_AMD_occlusion_query_event
+
+ GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
+ GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
+ GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
+ GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
+ GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
+ GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
+ void glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param)
diff --git a/glew/auto/extensions/gl/GL_AMD_performance_monitor b/glew/auto/extensions/gl/GL_AMD_performance_monitor
new file mode 100644
index 0000000..3b9a996
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_performance_monitor
@@ -0,0 +1,22 @@
+GL_AMD_performance_monitor
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_performance_monitor.txt
+GL_AMD_performance_monitor
+
+ GL_COUNTER_TYPE_AMD 0x8BC0
+ GL_COUNTER_RANGE_AMD 0x8BC1
+ GL_UNSIGNED_INT64_AMD 0x8BC2
+ GL_PERCENTAGE_AMD 0x8BC3
+ GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
+ GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
+ GL_PERFMON_RESULT_AMD 0x8BC6
+ void glBeginPerfMonitorAMD (GLuint monitor)
+ void glDeletePerfMonitorsAMD (GLsizei n, GLuint* monitors)
+ void glEndPerfMonitorAMD (GLuint monitor)
+ void glGenPerfMonitorsAMD (GLsizei n, GLuint* monitors)
+ void glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten)
+ void glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data)
+ void glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar *counterString)
+ void glGetPerfMonitorCountersAMD (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters)
+ void glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei* length, GLchar *groupString)
+ void glGetPerfMonitorGroupsAMD (GLint* numGroups, GLsizei groupsSize, GLuint *groups)
+ void glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList)
diff --git a/glew/auto/extensions/gl/GL_AMD_pinned_memory b/glew/auto/extensions/gl/GL_AMD_pinned_memory
new file mode 100644
index 0000000..888fbc8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_pinned_memory
@@ -0,0 +1,5 @@
+GL_AMD_pinned_memory
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_pinned_memory.txt
+GL_AMD_pinned_memory
+
+ GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
diff --git a/glew/auto/extensions/gl/GL_AMD_program_binary_Z400 b/glew/auto/extensions/gl/GL_AMD_program_binary_Z400
new file mode 100644
index 0000000..6cedc0f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_program_binary_Z400
@@ -0,0 +1,5 @@
+GL_AMD_program_binary_Z400
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_program_binary_Z400.txt
+GL_AMD_program_binary_Z400
+
+ GL_Z400_BINARY_AMD 0x8740
diff --git a/glew/auto/extensions/gl/GL_AMD_query_buffer_object b/glew/auto/extensions/gl/GL_AMD_query_buffer_object
new file mode 100644
index 0000000..f31abc6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_query_buffer_object
@@ -0,0 +1,7 @@
+GL_AMD_query_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_query_buffer_object.txt
+GL_AMD_query_buffer_object
+
+ GL_QUERY_BUFFER_AMD 0x9192
+ GL_QUERY_BUFFER_BINDING_AMD 0x9193
+ GL_QUERY_RESULT_NO_WAIT_AMD 0x9194
diff --git a/glew/auto/extensions/gl/GL_AMD_sample_positions b/glew/auto/extensions/gl/GL_AMD_sample_positions
new file mode 100644
index 0000000..9d62bb6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_sample_positions
@@ -0,0 +1,6 @@
+GL_AMD_sample_positions
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_sample_positions.txt
+GL_AMD_sample_positions
+
+ GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+ void glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat* val)
diff --git a/glew/auto/extensions/gl/GL_AMD_seamless_cubemap_per_texture b/glew/auto/extensions/gl/GL_AMD_seamless_cubemap_per_texture
new file mode 100644
index 0000000..e12e2aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_seamless_cubemap_per_texture
@@ -0,0 +1,5 @@
+GL_AMD_seamless_cubemap_per_texture
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_seamless_cubemap_per_texture.txt
+GL_AMD_seamless_cubemap_per_texture
+
+ GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_atomic_counter_ops b/glew/auto/extensions/gl/GL_AMD_shader_atomic_counter_ops
new file mode 100644
index 0000000..5557a69
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_atomic_counter_ops
@@ -0,0 +1,4 @@
+GL_AMD_shader_atomic_counter_ops
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_atomic_counter_ops.txt
+GL_AMD_shader_atomic_counter_ops
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_ballot b/glew/auto/extensions/gl/GL_AMD_shader_ballot
new file mode 100644
index 0000000..53283fd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_ballot
@@ -0,0 +1,4 @@
+GL_AMD_shader_ballot
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_ballot.txt
+GL_AMD_shader_ballot
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_explicit_vertex_parameter b/glew/auto/extensions/gl/GL_AMD_shader_explicit_vertex_parameter
new file mode 100644
index 0000000..58d38eb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_explicit_vertex_parameter
@@ -0,0 +1,4 @@
+GL_AMD_shader_explicit_vertex_parameter
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_explicit_vertex_parameter.txt
+GL_AMD_shader_explicit_vertex_parameter
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_image_load_store_lod b/glew/auto/extensions/gl/GL_AMD_shader_image_load_store_lod
new file mode 100644
index 0000000..58e4196
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_image_load_store_lod
@@ -0,0 +1,4 @@
+GL_AMD_shader_image_load_store_lod
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_image_load_store_lod.txt
+GL_AMD_shader_image_load_store_lod
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_stencil_export b/glew/auto/extensions/gl/GL_AMD_shader_stencil_export
new file mode 100644
index 0000000..b49a254
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_stencil_export
@@ -0,0 +1,4 @@
+GL_AMD_shader_stencil_export
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_stencil_export.txt
+GL_AMD_shader_stencil_export
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_stencil_value_export b/glew/auto/extensions/gl/GL_AMD_shader_stencil_value_export
new file mode 100644
index 0000000..4ac4b1f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_stencil_value_export
@@ -0,0 +1,4 @@
+GL_AMD_shader_stencil_value_export
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_stencil_value_export.txt
+GL_AMD_shader_stencil_value_export
+
diff --git a/glew/auto/extensions/gl/GL_AMD_shader_trinary_minmax b/glew/auto/extensions/gl/GL_AMD_shader_trinary_minmax
new file mode 100644
index 0000000..b9d6e5c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_shader_trinary_minmax
@@ -0,0 +1,4 @@
+GL_AMD_shader_trinary_minmax
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_trinary_minmax.txt
+GL_AMD_shader_trinary_minmax
+
diff --git a/glew/auto/extensions/gl/GL_AMD_sparse_texture b/glew/auto/extensions/gl/GL_AMD_sparse_texture
new file mode 100644
index 0000000..21ff28e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_sparse_texture
@@ -0,0 +1,15 @@
+GL_AMD_sparse_texture
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_sparse_texture.txt
+GL_AMD_sparse_texture
+
+ GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
+ GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195
+ GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196
+ GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197
+ GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
+ GL_MIN_SPARSE_LEVEL_AMD 0x919B
+ GL_MIN_LOD_WARNING_AMD 0x919C
+ void glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags)
+ void glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags)
diff --git a/glew/auto/extensions/gl/GL_AMD_stencil_operation_extended b/glew/auto/extensions/gl/GL_AMD_stencil_operation_extended
new file mode 100644
index 0000000..8aceec1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_stencil_operation_extended
@@ -0,0 +1,9 @@
+GL_AMD_stencil_operation_extended
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_stencil_operation_extended.txt
+GL_AMD_stencil_operation_extended
+
+ GL_SET_AMD 0x874A
+ GL_REPLACE_VALUE_AMD 0x874B
+ GL_STENCIL_OP_VALUE_AMD 0x874C
+ GL_STENCIL_BACK_OP_VALUE_AMD 0x874D
+ void glStencilOpValueAMD (GLenum face, GLuint value)
diff --git a/glew/auto/extensions/gl/GL_AMD_texture_gather_bias_lod b/glew/auto/extensions/gl/GL_AMD_texture_gather_bias_lod
new file mode 100644
index 0000000..4ef8020
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_texture_gather_bias_lod
@@ -0,0 +1,4 @@
+GL_AMD_texture_gather_bias_lod
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_texture_gather_bias_lod.txt
+GL_AMD_texture_gather_bias_lod
+
diff --git a/glew/auto/extensions/gl/GL_AMD_texture_texture4 b/glew/auto/extensions/gl/GL_AMD_texture_texture4
new file mode 100644
index 0000000..bc71132
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_texture_texture4
@@ -0,0 +1,4 @@
+GL_AMD_texture_texture4
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_texture_texture4.txt
+GL_AMD_texture_texture4
+
diff --git a/glew/auto/extensions/gl/GL_AMD_transform_feedback3_lines_triangles b/glew/auto/extensions/gl/GL_AMD_transform_feedback3_lines_triangles
new file mode 100644
index 0000000..ff7b54a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_transform_feedback3_lines_triangles
@@ -0,0 +1,4 @@
+GL_AMD_transform_feedback3_lines_triangles
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_transform_feedback3_lines_triangles.txt
+GL_AMD_transform_feedback3_lines_triangles
+
diff --git a/glew/auto/extensions/gl/GL_AMD_transform_feedback4 b/glew/auto/extensions/gl/GL_AMD_transform_feedback4
new file mode 100644
index 0000000..baa0b4f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_transform_feedback4
@@ -0,0 +1,5 @@
+GL_AMD_transform_feedback4
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_transform_feedback4.txt
+GL_AMD_transform_feedback4
+
+ GL_STREAM_RASTERIZATION_AMD 0x91A0
diff --git a/glew/auto/extensions/gl/GL_AMD_vertex_shader_layer b/glew/auto/extensions/gl/GL_AMD_vertex_shader_layer
new file mode 100644
index 0000000..c18b26b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_vertex_shader_layer
@@ -0,0 +1,4 @@
+GL_AMD_vertex_shader_layer
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_layer.txt
+GL_AMD_vertex_shader_layer
+
diff --git a/glew/auto/extensions/gl/GL_AMD_vertex_shader_tessellator b/glew/auto/extensions/gl/GL_AMD_vertex_shader_tessellator
new file mode 100644
index 0000000..d183070
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_vertex_shader_tessellator
@@ -0,0 +1,13 @@
+GL_AMD_vertex_shader_tessellator
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_tessellator.txt
+GL_AMD_vertex_shader_tessellator
+
+ GL_SAMPLER_BUFFER_AMD 0x9001
+ GL_INT_SAMPLER_BUFFER_AMD 0x9002
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
+ GL_TESSELLATION_MODE_AMD 0x9004
+ GL_TESSELLATION_FACTOR_AMD 0x9005
+ GL_DISCRETE_AMD 0x9006
+ GL_CONTINUOUS_AMD 0x9007
+ void glTessellationFactorAMD (GLfloat factor)
+ void glTessellationModeAMD (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_AMD_vertex_shader_viewport_index b/glew/auto/extensions/gl/GL_AMD_vertex_shader_viewport_index
new file mode 100644
index 0000000..a36f42d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_AMD_vertex_shader_viewport_index
@@ -0,0 +1,4 @@
+GL_AMD_vertex_shader_viewport_index
+https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_viewport_index.txt
+GL_AMD_vertex_shader_viewport_index
+
diff --git a/glew/auto/extensions/gl/GL_ANDROID_extension_pack_es31a b/glew/auto/extensions/gl/GL_ANDROID_extension_pack_es31a
new file mode 100644
index 0000000..c5def68
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANDROID_extension_pack_es31a
@@ -0,0 +1,4 @@
+GL_ANDROID_extension_pack_es31a
+https://www.khronos.org/registry/OpenGL/extensions/ANDROID/ANDROID_extension_pack_es31a.txt
+GL_ANDROID_extension_pack_es31a
+
diff --git a/glew/auto/extensions/gl/GL_ANGLE_depth_texture b/glew/auto/extensions/gl/GL_ANGLE_depth_texture
new file mode 100644
index 0000000..3849305
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_depth_texture
@@ -0,0 +1,4 @@
+GL_ANGLE_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/depth_texture.txt
+GL_ANGLE_depth_texture
+
diff --git a/glew/auto/extensions/gl/GL_ANGLE_framebuffer_blit b/glew/auto/extensions/gl/GL_ANGLE_framebuffer_blit
new file mode 100644
index 0000000..57a7a51
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_framebuffer_blit
@@ -0,0 +1,9 @@
+GL_ANGLE_framebuffer_blit
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/framebuffer_blit.txt
+GL_ANGLE_framebuffer_blit
+
+ GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
+ GL_READ_FRAMEBUFFER_ANGLE 0x8CA8
+ GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
+ void glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
diff --git a/glew/auto/extensions/gl/GL_ANGLE_framebuffer_multisample b/glew/auto/extensions/gl/GL_ANGLE_framebuffer_multisample
new file mode 100644
index 0000000..857a3ad
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_framebuffer_multisample
@@ -0,0 +1,8 @@
+GL_ANGLE_framebuffer_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/framebuffer_multisample.txt
+GL_ANGLE_framebuffer_multisample
+
+ GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
+ GL_MAX_SAMPLES_ANGLE 0x8D57
+ void glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_ANGLE_instanced_arrays b/glew/auto/extensions/gl/GL_ANGLE_instanced_arrays
new file mode 100644
index 0000000..4a4c390
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_instanced_arrays
@@ -0,0 +1,8 @@
+GL_ANGLE_instanced_arrays
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/instanced_arrays.txt
+GL_ANGLE_instanced_arrays
+
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
+ void glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+ void glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)
+ void glVertexAttribDivisorANGLE (GLuint index, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_ANGLE_pack_reverse_row_order b/glew/auto/extensions/gl/GL_ANGLE_pack_reverse_row_order
new file mode 100644
index 0000000..5c59c51
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_pack_reverse_row_order
@@ -0,0 +1,5 @@
+GL_ANGLE_pack_reverse_row_order
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/pack_reverse_row_order.txt
+GL_ANGLE_pack_reverse_row_order
+
+ GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4
diff --git a/glew/auto/extensions/gl/GL_ANGLE_program_binary b/glew/auto/extensions/gl/GL_ANGLE_program_binary
new file mode 100644
index 0000000..dec7f06
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_program_binary
@@ -0,0 +1,5 @@
+GL_ANGLE_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/program_binary.txt
+GL_ANGLE_program_binary
+
+ GL_PROGRAM_BINARY_ANGLE 0x93A6
diff --git a/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt1 b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt1
new file mode 100644
index 0000000..1c12eb6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt1
@@ -0,0 +1,8 @@
+GL_ANGLE_texture_compression_dxt1
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt
+GL_ANGLE_texture_compression_dxt1
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
diff --git a/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt3 b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt3
new file mode 100644
index 0000000..ccaec40
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt3
@@ -0,0 +1,8 @@
+GL_ANGLE_texture_compression_dxt3
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt
+GL_ANGLE_texture_compression_dxt3
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
diff --git a/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt5 b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt5
new file mode 100644
index 0000000..a0f1720
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_texture_compression_dxt5
@@ -0,0 +1,8 @@
+GL_ANGLE_texture_compression_dxt5
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt
+GL_ANGLE_texture_compression_dxt5
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
diff --git a/glew/auto/extensions/gl/GL_ANGLE_texture_usage b/glew/auto/extensions/gl/GL_ANGLE_texture_usage
new file mode 100644
index 0000000..f902311
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_texture_usage
@@ -0,0 +1,6 @@
+GL_ANGLE_texture_usage
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_usage.txt
+GL_ANGLE_texture_usage
+
+ GL_TEXTURE_USAGE_ANGLE 0x93A2
+ GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
diff --git a/glew/auto/extensions/gl/GL_ANGLE_timer_query b/glew/auto/extensions/gl/GL_ANGLE_timer_query
new file mode 100644
index 0000000..8b46da8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_timer_query
@@ -0,0 +1,21 @@
+GL_ANGLE_timer_query
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/timer_query.txt
+GL_ANGLE_timer_query
+
+ GL_QUERY_COUNTER_BITS_ANGLE 0x8864
+ GL_CURRENT_QUERY_ANGLE 0x8865
+ GL_QUERY_RESULT_ANGLE 0x8866
+ GL_QUERY_RESULT_AVAILABLE_ANGLE 0x8867
+ GL_TIME_ELAPSED_ANGLE 0x88BF
+ GL_TIMESTAMP_ANGLE 0x8E28
+ void glBeginQueryANGLE (GLenum target, GLuint id)
+ void glDeleteQueriesANGLE (GLsizei n, const GLuint* ids)
+ void glEndQueryANGLE (GLenum target)
+ void glGenQueriesANGLE (GLsizei n, GLuint* ids)
+ void glGetQueryObjecti64vANGLE (GLuint id, GLenum pname, GLint64* params)
+ void glGetQueryObjectivANGLE (GLuint id, GLenum pname, GLint* params)
+ void glGetQueryObjectui64vANGLE (GLuint id, GLenum pname, GLuint64* params)
+ void glGetQueryObjectuivANGLE (GLuint id, GLenum pname, GLuint* params)
+ void glGetQueryivANGLE (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsQueryANGLE (GLuint id)
+ void glQueryCounterANGLE (GLuint id, GLenum target)
diff --git a/glew/auto/extensions/gl/GL_ANGLE_translated_shader_source b/glew/auto/extensions/gl/GL_ANGLE_translated_shader_source
new file mode 100644
index 0000000..dee5768
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ANGLE_translated_shader_source
@@ -0,0 +1,6 @@
+GL_ANGLE_translated_shader_source
+https://www.khronos.org/registry/OpenGL/extensions/ANGLE/translated_shader_source.txt
+GL_ANGLE_translated_shader_source
+
+ GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
+ void glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
diff --git a/glew/auto/extensions/gl/GL_APPLE_aux_depth_stencil b/glew/auto/extensions/gl/GL_APPLE_aux_depth_stencil
new file mode 100644
index 0000000..19c979b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_aux_depth_stencil
@@ -0,0 +1,5 @@
+GL_APPLE_aux_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_aux_depth_stencil.txt
+GL_APPLE_aux_depth_stencil
+
+ GL_AUX_DEPTH_STENCIL_APPLE 0x8A14
diff --git a/glew/auto/extensions/gl/GL_APPLE_client_storage b/glew/auto/extensions/gl/GL_APPLE_client_storage
new file mode 100644
index 0000000..fac0225
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_client_storage
@@ -0,0 +1,5 @@
+GL_APPLE_client_storage
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_client_storage.txt
+GL_APPLE_client_storage
+
+ GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
diff --git a/glew/auto/extensions/gl/GL_APPLE_clip_distance b/glew/auto/extensions/gl/GL_APPLE_clip_distance
new file mode 100644
index 0000000..83c12ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_clip_distance
@@ -0,0 +1,13 @@
+GL_APPLE_clip_distance
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_clip_distance.txt
+GL_APPLE_clip_distance
+
+ GL_MAX_CLIP_DISTANCES_APPLE 0x0D32
+ GL_CLIP_DISTANCE0_APPLE 0x3000
+ GL_CLIP_DISTANCE1_APPLE 0x3001
+ GL_CLIP_DISTANCE2_APPLE 0x3002
+ GL_CLIP_DISTANCE3_APPLE 0x3003
+ GL_CLIP_DISTANCE4_APPLE 0x3004
+ GL_CLIP_DISTANCE5_APPLE 0x3005
+ GL_CLIP_DISTANCE6_APPLE 0x3006
+ GL_CLIP_DISTANCE7_APPLE 0x3007
diff --git a/glew/auto/extensions/gl/GL_APPLE_color_buffer_packed_float b/glew/auto/extensions/gl/GL_APPLE_color_buffer_packed_float
new file mode 100644
index 0000000..d7bb6b3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_color_buffer_packed_float
@@ -0,0 +1,4 @@
+GL_APPLE_color_buffer_packed_float
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_color_buffer_packed_float.txt
+GL_APPLE_color_buffer_packed_float
+
diff --git a/glew/auto/extensions/gl/GL_APPLE_copy_texture_levels b/glew/auto/extensions/gl/GL_APPLE_copy_texture_levels
new file mode 100644
index 0000000..ab2b389
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_copy_texture_levels
@@ -0,0 +1,5 @@
+GL_APPLE_copy_texture_levels
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_copy_texture_levels.txt
+GL_APPLE_copy_texture_levels
+
+ void glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount)
diff --git a/glew/auto/extensions/gl/GL_APPLE_element_array b/glew/auto/extensions/gl/GL_APPLE_element_array
new file mode 100644
index 0000000..4db72b9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_element_array
@@ -0,0 +1,12 @@
+GL_APPLE_element_array
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_element_array.txt
+GL_APPLE_element_array
+
+ GL_ELEMENT_ARRAY_APPLE 0x8A0C
+ GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
+ GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
+ void glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count)
+ void glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count)
+ void glElementPointerAPPLE (GLenum type, const void *pointer)
+ void glMultiDrawElementArrayAPPLE (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount)
+ void glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_APPLE_fence b/glew/auto/extensions/gl/GL_APPLE_fence
new file mode 100644
index 0000000..d26a7d7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_fence
@@ -0,0 +1,14 @@
+GL_APPLE_fence
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_fence.txt
+GL_APPLE_fence
+
+ GL_DRAW_PIXELS_APPLE 0x8A0A
+ GL_FENCE_APPLE 0x8A0B
+ void glDeleteFencesAPPLE (GLsizei n, const GLuint* fences)
+ void glFinishFenceAPPLE (GLuint fence)
+ void glFinishObjectAPPLE (GLenum object, GLint name)
+ void glGenFencesAPPLE (GLsizei n, GLuint* fences)
+ GLboolean glIsFenceAPPLE (GLuint fence)
+ void glSetFenceAPPLE (GLuint fence)
+ GLboolean glTestFenceAPPLE (GLuint fence)
+ GLboolean glTestObjectAPPLE (GLenum object, GLuint name)
diff --git a/glew/auto/extensions/gl/GL_APPLE_float_pixels b/glew/auto/extensions/gl/GL_APPLE_float_pixels
new file mode 100644
index 0000000..3eacd42
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_float_pixels
@@ -0,0 +1,18 @@
+GL_APPLE_float_pixels
+http://www.opengl.org/registry/specs/APPLE/float_pixels.txt
+GL_APPLE_float_pixels
+
+ GL_HALF_APPLE 0x140B
+ GL_COLOR_FLOAT_APPLE 0x8A0F
+ GL_RGBA_FLOAT32_APPLE 0x8814
+ GL_RGB_FLOAT32_APPLE 0x8815
+ GL_ALPHA_FLOAT32_APPLE 0x8816
+ GL_INTENSITY_FLOAT32_APPLE 0x8817
+ GL_LUMINANCE_FLOAT32_APPLE 0x8818
+ GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
+ GL_RGBA_FLOAT16_APPLE 0x881A
+ GL_RGB_FLOAT16_APPLE 0x881B
+ GL_ALPHA_FLOAT16_APPLE 0x881C
+ GL_INTENSITY_FLOAT16_APPLE 0x881D
+ GL_LUMINANCE_FLOAT16_APPLE 0x881E
+ GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
diff --git a/glew/auto/extensions/gl/GL_APPLE_flush_buffer_range b/glew/auto/extensions/gl/GL_APPLE_flush_buffer_range
new file mode 100644
index 0000000..df3b385
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_flush_buffer_range
@@ -0,0 +1,8 @@
+GL_APPLE_flush_buffer_range
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_flush_buffer_range.txt
+GL_APPLE_flush_buffer_range
+
+ GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
+ GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
+ void glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param)
+ void glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_APPLE_framebuffer_multisample b/glew/auto/extensions/gl/GL_APPLE_framebuffer_multisample
new file mode 100644
index 0000000..ebfd931
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_framebuffer_multisample
@@ -0,0 +1,13 @@
+GL_APPLE_framebuffer_multisample
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_framebuffer_multisample.txt
+GL_APPLE_framebuffer_multisample
+
+ GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6
+ GL_READ_FRAMEBUFFER_APPLE 0x8CA8
+ GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA
+ GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56
+ GL_MAX_SAMPLES_APPLE 0x8D57
+ void glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glResolveMultisampleFramebufferAPPLE (void)
diff --git a/glew/auto/extensions/gl/GL_APPLE_object_purgeable b/glew/auto/extensions/gl/GL_APPLE_object_purgeable
new file mode 100644
index 0000000..3d7b4f6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_object_purgeable
@@ -0,0 +1,13 @@
+GL_APPLE_object_purgeable
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_object_purgeable.txt
+GL_APPLE_object_purgeable
+
+ GL_BUFFER_OBJECT_APPLE 0x85B3
+ GL_RELEASED_APPLE 0x8A19
+ GL_VOLATILE_APPLE 0x8A1A
+ GL_RETAINED_APPLE 0x8A1B
+ GL_UNDEFINED_APPLE 0x8A1C
+ GL_PURGEABLE_APPLE 0x8A1D
+ void glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint* params)
+ GLenum glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option)
+ GLenum glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option)
diff --git a/glew/auto/extensions/gl/GL_APPLE_pixel_buffer b/glew/auto/extensions/gl/GL_APPLE_pixel_buffer
new file mode 100644
index 0000000..1a8ad97
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_pixel_buffer
@@ -0,0 +1,5 @@
+GL_APPLE_pixel_buffer
+
+GL_APPLE_pixel_buffer
+
+ GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10
diff --git a/glew/auto/extensions/gl/GL_APPLE_rgb_422 b/glew/auto/extensions/gl/GL_APPLE_rgb_422
new file mode 100644
index 0000000..d4ae4d6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_rgb_422
@@ -0,0 +1,8 @@
+GL_APPLE_rgb_422
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_rgb_422.txt
+GL_APPLE_rgb_422
+
+ GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+ GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+ GL_RGB_422_APPLE 0x8A1F
+ GL_RGB_RAW_422_APPLE 0x8A51
diff --git a/glew/auto/extensions/gl/GL_APPLE_row_bytes b/glew/auto/extensions/gl/GL_APPLE_row_bytes
new file mode 100644
index 0000000..674e007
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_row_bytes
@@ -0,0 +1,6 @@
+GL_APPLE_row_bytes
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_row_bytes.txt
+GL_APPLE_row_bytes
+
+ GL_PACK_ROW_BYTES_APPLE 0x8A15
+ GL_UNPACK_ROW_BYTES_APPLE 0x8A16
diff --git a/glew/auto/extensions/gl/GL_APPLE_specular_vector b/glew/auto/extensions/gl/GL_APPLE_specular_vector
new file mode 100644
index 0000000..a0f324b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_specular_vector
@@ -0,0 +1,5 @@
+GL_APPLE_specular_vector
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_specular_vector.txt
+GL_APPLE_specular_vector
+
+ GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
diff --git a/glew/auto/extensions/gl/GL_APPLE_sync b/glew/auto/extensions/gl/GL_APPLE_sync
new file mode 100644
index 0000000..697314c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_sync
@@ -0,0 +1,27 @@
+GL_APPLE_sync
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_sync.txt
+GL_APPLE_sync
+
+ GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull
+ GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001
+ GL_SYNC_OBJECT_APPLE 0x8A53
+ GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111
+ GL_OBJECT_TYPE_APPLE 0x9112
+ GL_SYNC_CONDITION_APPLE 0x9113
+ GL_SYNC_STATUS_APPLE 0x9114
+ GL_SYNC_FLAGS_APPLE 0x9115
+ GL_SYNC_FENCE_APPLE 0x9116
+ GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117
+ GL_UNSIGNALED_APPLE 0x9118
+ GL_SIGNALED_APPLE 0x9119
+ GL_ALREADY_SIGNALED_APPLE 0x911A
+ GL_TIMEOUT_EXPIRED_APPLE 0x911B
+ GL_CONDITION_SATISFIED_APPLE 0x911C
+ GL_WAIT_FAILED_APPLE 0x911D
+ GLenum glClientWaitSyncAPPLE (GLsync GLsync, GLbitfield flags, GLuint64 timeout)
+ void glDeleteSyncAPPLE (GLsync GLsync)
+ GLsync glFenceSyncAPPLE (GLenum condition, GLbitfield flags)
+ void glGetInteger64vAPPLE (GLenum pname, GLint64* params)
+ void glGetSyncivAPPLE (GLsync GLsync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values)
+ GLboolean glIsSyncAPPLE (GLsync GLsync)
+ void glWaitSyncAPPLE (GLsync GLsync, GLbitfield flags, GLuint64 timeout)
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_2D_limited_npot b/glew/auto/extensions/gl/GL_APPLE_texture_2D_limited_npot
new file mode 100644
index 0000000..18113c2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_2D_limited_npot
@@ -0,0 +1,4 @@
+GL_APPLE_texture_2D_limited_npot
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_2D_limited_npot.txt
+GL_APPLE_texture_2D_limited_npot
+
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_format_BGRA8888 b/glew/auto/extensions/gl/GL_APPLE_texture_format_BGRA8888
new file mode 100644
index 0000000..85aa105
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_format_BGRA8888
@@ -0,0 +1,6 @@
+GL_APPLE_texture_format_BGRA8888
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_format_BGRA8888.txt
+GL_APPLE_texture_format_BGRA8888
+
+ GL_BGRA_EXT 0x80E1
+ GL_BGRA8_EXT 0x93A1
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_max_level b/glew/auto/extensions/gl/GL_APPLE_texture_max_level
new file mode 100644
index 0000000..284c5dd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_max_level
@@ -0,0 +1,5 @@
+GL_APPLE_texture_max_level
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_max_level.txt
+GL_APPLE_texture_max_level
+
+ GL_TEXTURE_MAX_LEVEL_APPLE 0x813D
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_packed_float b/glew/auto/extensions/gl/GL_APPLE_texture_packed_float
new file mode 100644
index 0000000..7164955
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_packed_float
@@ -0,0 +1,8 @@
+GL_APPLE_texture_packed_float
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_packed_float.txt
+GL_APPLE_texture_packed_float
+
+ GL_R11F_G11F_B10F_APPLE 0x8C3A
+ GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B
+ GL_RGB9_E5_APPLE 0x8C3D
+ GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E
diff --git a/glew/auto/extensions/gl/GL_APPLE_texture_range b/glew/auto/extensions/gl/GL_APPLE_texture_range
new file mode 100644
index 0000000..e2bf85c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_texture_range
@@ -0,0 +1,13 @@
+GL_APPLE_texture_range
+http://www.opengl.org/registry/specs/APPLE/texture_range.txt
+GL_APPLE_texture_range
+
+ GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC
+ GL_STORAGE_PRIVATE_APPLE 0x85BD
+ GL_STORAGE_CACHED_APPLE 0x85BE
+ GL_STORAGE_SHARED_APPLE 0x85BF
+ GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7
+ GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8
+ void glTextureRangeAPPLE (GLenum target, GLsizei length, void *pointer)
+ void glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params)
+
diff --git a/glew/auto/extensions/gl/GL_APPLE_transform_hint b/glew/auto/extensions/gl/GL_APPLE_transform_hint
new file mode 100644
index 0000000..0dc9afe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_transform_hint
@@ -0,0 +1,5 @@
+GL_APPLE_transform_hint
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_transform_hint.txt
+GL_APPLE_transform_hint
+
+ GL_TRANSFORM_HINT_APPLE 0x85B1
diff --git a/glew/auto/extensions/gl/GL_APPLE_vertex_array_object b/glew/auto/extensions/gl/GL_APPLE_vertex_array_object
new file mode 100644
index 0000000..c53d295
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_vertex_array_object
@@ -0,0 +1,9 @@
+GL_APPLE_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_array_object.txt
+GL_APPLE_vertex_array_object
+
+ GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
+ void glBindVertexArrayAPPLE (GLuint array)
+ void glDeleteVertexArraysAPPLE (GLsizei n, const GLuint* arrays)
+ void glGenVertexArraysAPPLE (GLsizei n, const GLuint* arrays)
+ GLboolean glIsVertexArrayAPPLE (GLuint array)
diff --git a/glew/auto/extensions/gl/GL_APPLE_vertex_array_range b/glew/auto/extensions/gl/GL_APPLE_vertex_array_range
new file mode 100644
index 0000000..6dd751c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_vertex_array_range
@@ -0,0 +1,15 @@
+GL_APPLE_vertex_array_range
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_array_range.txt
+GL_APPLE_vertex_array_range
+
+ GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
+ GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
+ GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
+ GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520
+ GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+ GL_STORAGE_CLIENT_APPLE 0x85B4
+ GL_STORAGE_CACHED_APPLE 0x85BE
+ GL_STORAGE_SHARED_APPLE 0x85BF
+ void glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer)
+ void glVertexArrayParameteriAPPLE (GLenum pname, GLint param)
+ void glVertexArrayRangeAPPLE (GLsizei length, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_APPLE_vertex_program_evaluators b/glew/auto/extensions/gl/GL_APPLE_vertex_program_evaluators
new file mode 100644
index 0000000..253fb14
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_vertex_program_evaluators
@@ -0,0 +1,21 @@
+GL_APPLE_vertex_program_evaluators
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_program_evaluators.txt
+GL_APPLE_vertex_program_evaluators
+
+ GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00
+ GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01
+ GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02
+ GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
+ GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
+ GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
+ GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06
+ GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
+ GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
+ GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
+ void glDisableVertexAttribAPPLE (GLuint index, GLenum pname)
+ void glEnableVertexAttribAPPLE (GLuint index, GLenum pname)
+ GLboolean glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname)
+ void glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points)
+ void glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points)
+ void glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points)
+ void glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_APPLE_ycbcr_422 b/glew/auto/extensions/gl/GL_APPLE_ycbcr_422
new file mode 100644
index 0000000..85bf104
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_APPLE_ycbcr_422
@@ -0,0 +1,5 @@
+GL_APPLE_ycbcr_422
+https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_ycbcr_422.txt
+GL_APPLE_ycbcr_422
+
+ GL_YCBCR_422_APPLE 0x85B9
diff --git a/glew/auto/extensions/gl/GL_ARB_ES2_compatibility b/glew/auto/extensions/gl/GL_ARB_ES2_compatibility
new file mode 100644
index 0000000..2789ae9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_ES2_compatibility
@@ -0,0 +1,26 @@
+GL_ARB_ES2_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES2_compatibility.txt
+GL_ARB_ES2_compatibility
+
+ GL_FIXED 0x140C
+ GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
+ GL_RGB565 0x8D62
+ GL_LOW_FLOAT 0x8DF0
+ GL_MEDIUM_FLOAT 0x8DF1
+ GL_HIGH_FLOAT 0x8DF2
+ GL_LOW_INT 0x8DF3
+ GL_MEDIUM_INT 0x8DF4
+ GL_HIGH_INT 0x8DF5
+ GL_SHADER_BINARY_FORMATS 0x8DF8
+ GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
+ GL_SHADER_COMPILER 0x8DFA
+ GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
+ GL_MAX_VARYING_VECTORS 0x8DFC
+ GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
+ void glClearDepthf (GLclampf d)
+ void glDepthRangef (GLclampf n, GLclampf f)
+ void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision)
+ void glReleaseShaderCompiler (void)
+ void glShaderBinary (GLsizei count, const GLuint* shaders, GLenum binaryformat, const void*binary, GLsizei length)
+ typedef int GLfixed
diff --git a/glew/auto/extensions/gl/GL_ARB_ES3_1_compatibility b/glew/auto/extensions/gl/GL_ARB_ES3_1_compatibility
new file mode 100644
index 0000000..0974ddf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_ES3_1_compatibility
@@ -0,0 +1,5 @@
+GL_ARB_ES3_1_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_1_compatibility.txt
+GL_ARB_ES3_1_compatibility
+
+ void glMemoryBarrierByRegion (GLbitfield barriers)
diff --git a/glew/auto/extensions/gl/GL_ARB_ES3_2_compatibility b/glew/auto/extensions/gl/GL_ARB_ES3_2_compatibility
new file mode 100644
index 0000000..d18dbba
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_ES3_2_compatibility
@@ -0,0 +1,8 @@
+GL_ARB_ES3_2_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_2_compatibility.txt
+GL_ARB_ES3_2_compatibility
+
+ GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE
+ GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381
+ GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382
+ void glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
diff --git a/glew/auto/extensions/gl/GL_ARB_ES3_compatibility b/glew/auto/extensions/gl/GL_ARB_ES3_compatibility
new file mode 100644
index 0000000..c0a68d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_ES3_compatibility
@@ -0,0 +1,18 @@
+GL_ARB_ES3_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_compatibility.txt
+GL_ARB_ES3_compatibility
+
+ GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+ GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
+ GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
+ GL_MAX_ELEMENT_INDEX 0x8D6B
+ GL_COMPRESSED_R11_EAC 0x9270
+ GL_COMPRESSED_SIGNED_R11_EAC 0x9271
+ GL_COMPRESSED_RG11_EAC 0x9272
+ GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
+ GL_COMPRESSED_RGB8_ETC2 0x9274
+ GL_COMPRESSED_SRGB8_ETC2 0x9275
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
+ GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
diff --git a/glew/auto/extensions/gl/GL_ARB_arrays_of_arrays b/glew/auto/extensions/gl/GL_ARB_arrays_of_arrays
new file mode 100644
index 0000000..ff858c4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_arrays_of_arrays
@@ -0,0 +1,4 @@
+GL_ARB_arrays_of_arrays
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_arrays_of_arrays.txt
+GL_ARB_arrays_of_arrays
+
diff --git a/glew/auto/extensions/gl/GL_ARB_base_instance b/glew/auto/extensions/gl/GL_ARB_base_instance
new file mode 100644
index 0000000..5d028ea
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_base_instance
@@ -0,0 +1,7 @@
+GL_ARB_base_instance
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_base_instance.txt
+GL_ARB_base_instance
+
+ void glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance)
+ void glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance)
+ void glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance)
diff --git a/glew/auto/extensions/gl/GL_ARB_bindless_texture b/glew/auto/extensions/gl/GL_ARB_bindless_texture
new file mode 100644
index 0000000..b714323
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_bindless_texture
@@ -0,0 +1,21 @@
+GL_ARB_bindless_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_bindless_texture.txt
+GL_ARB_bindless_texture
+
+ GL_UNSIGNED_INT64_ARB 0x140F
+ GLuint64 glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format)
+ GLuint64 glGetTextureHandleARB (GLuint texture)
+ GLuint64 glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler)
+ void glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT* params)
+ GLboolean glIsImageHandleResidentARB (GLuint64 handle)
+ GLboolean glIsTextureHandleResidentARB (GLuint64 handle)
+ void glMakeImageHandleNonResidentARB (GLuint64 handle)
+ void glMakeImageHandleResidentARB (GLuint64 handle, GLenum access)
+ void glMakeTextureHandleNonResidentARB (GLuint64 handle)
+ void glMakeTextureHandleResidentARB (GLuint64 handle)
+ void glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value)
+ void glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* values)
+ void glUniformHandleui64ARB (GLint location, GLuint64 value)
+ void glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64* value)
+ void glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x)
+ void glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT* v)
diff --git a/glew/auto/extensions/gl/GL_ARB_blend_func_extended b/glew/auto/extensions/gl/GL_ARB_blend_func_extended
new file mode 100644
index 0000000..a70ac09
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_blend_func_extended
@@ -0,0 +1,10 @@
+GL_ARB_blend_func_extended
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_blend_func_extended.txt
+GL_ARB_blend_func_extended
+
+ GL_SRC1_COLOR 0x88F9
+ GL_ONE_MINUS_SRC1_COLOR 0x88FA
+ GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+ GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+ void glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name)
+ GLint glGetFragDataIndex (GLuint program, const GLchar * name)
diff --git a/glew/auto/extensions/gl/GL_ARB_buffer_storage b/glew/auto/extensions/gl/GL_ARB_buffer_storage
new file mode 100644
index 0000000..ba15fff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_buffer_storage
@@ -0,0 +1,14 @@
+GL_ARB_buffer_storage
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_buffer_storage.txt
+GL_ARB_buffer_storage
+
+ GL_MAP_READ_BIT 0x0001
+ GL_MAP_WRITE_BIT 0x0002
+ GL_MAP_PERSISTENT_BIT 0x00000040
+ GL_MAP_COHERENT_BIT 0x00000080
+ GL_DYNAMIC_STORAGE_BIT 0x0100
+ GL_CLIENT_STORAGE_BIT 0x0200
+ GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
+ GL_BUFFER_IMMUTABLE_STORAGE 0x821F
+ GL_BUFFER_STORAGE_FLAGS 0x8220
+ void glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
diff --git a/glew/auto/extensions/gl/GL_ARB_cl_event b/glew/auto/extensions/gl/GL_ARB_cl_event
new file mode 100644
index 0000000..cef176c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_cl_event
@@ -0,0 +1,9 @@
+GL_ARB_cl_event
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cl_event.txt
+GL_ARB_cl_event
+
+ GL_SYNC_CL_EVENT_ARB 0x8240
+ GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
+ GLsync glCreateSyncFromCLeventARB (cl_context context, cl_event event, GLbitfield flags)
+ typedef struct _cl_context *cl_context
+ typedef struct _cl_event *cl_event
diff --git a/glew/auto/extensions/gl/GL_ARB_clear_buffer_object b/glew/auto/extensions/gl/GL_ARB_clear_buffer_object
new file mode 100644
index 0000000..ab291ce
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_clear_buffer_object
@@ -0,0 +1,8 @@
+GL_ARB_clear_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_buffer_object.txt
+GL_ARB_clear_buffer_object
+
+ void glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data)
+ void glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
+ void glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
+ void glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
diff --git a/glew/auto/extensions/gl/GL_ARB_clear_texture b/glew/auto/extensions/gl/GL_ARB_clear_texture
new file mode 100644
index 0000000..693ee89
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_clear_texture
@@ -0,0 +1,7 @@
+GL_ARB_clear_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_texture.txt
+GL_ARB_clear_texture
+
+ GL_CLEAR_TEXTURE 0x9365
+ void glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
+ void glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
diff --git a/glew/auto/extensions/gl/GL_ARB_clip_control b/glew/auto/extensions/gl/GL_ARB_clip_control
new file mode 100644
index 0000000..f765c8c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_clip_control
@@ -0,0 +1,11 @@
+GL_ARB_clip_control
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clip_control.txt
+GL_ARB_clip_control
+
+ GL_LOWER_LEFT 0x8CA1
+ GL_UPPER_LEFT 0x8CA2
+ GL_CLIP_ORIGIN 0x935C
+ GL_CLIP_DEPTH_MODE 0x935D
+ GL_NEGATIVE_ONE_TO_ONE 0x935E
+ GL_ZERO_TO_ONE 0x935F
+ void glClipControl (GLenum origin, GLenum depth)
diff --git a/glew/auto/extensions/gl/GL_ARB_color_buffer_float b/glew/auto/extensions/gl/GL_ARB_color_buffer_float
new file mode 100644
index 0000000..cdcc0d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_color_buffer_float
@@ -0,0 +1,10 @@
+GL_ARB_color_buffer_float
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_color_buffer_float.txt
+GL_ARB_color_buffer_float
+
+ GL_RGBA_FLOAT_MODE_ARB 0x8820
+ GL_CLAMP_VERTEX_COLOR_ARB 0x891A
+ GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
+ GL_CLAMP_READ_COLOR_ARB 0x891C
+ GL_FIXED_ONLY_ARB 0x891D
+ void glClampColorARB (GLenum target, GLenum clamp)
diff --git a/glew/auto/extensions/gl/GL_ARB_compatibility b/glew/auto/extensions/gl/GL_ARB_compatibility
new file mode 100644
index 0000000..b3706e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_compatibility
@@ -0,0 +1,4 @@
+GL_ARB_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compatibility.txt
+GL_ARB_compatibility
+
diff --git a/glew/auto/extensions/gl/GL_ARB_compressed_texture_pixel_storage b/glew/auto/extensions/gl/GL_ARB_compressed_texture_pixel_storage
new file mode 100644
index 0000000..1386992
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_compressed_texture_pixel_storage
@@ -0,0 +1,12 @@
+GL_ARB_compressed_texture_pixel_storage
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compressed_texture_pixel_storage.txt
+GL_ARB_compressed_texture_pixel_storage
+
+ GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
+ GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
+ GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
+ GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
+ GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
+ GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
+ GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
+ GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
diff --git a/glew/auto/extensions/gl/GL_ARB_compute_shader b/glew/auto/extensions/gl/GL_ARB_compute_shader
new file mode 100644
index 0000000..bee5648
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_compute_shader
@@ -0,0 +1,24 @@
+GL_ARB_compute_shader
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_shader.txt
+GL_ARB_compute_shader
+
+ GL_COMPUTE_SHADER_BIT 0x00000020
+ GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
+ GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
+ GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
+ GL_COMPUTE_WORK_GROUP_SIZE 0x8267
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
+ GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
+ GL_DISPATCH_INDIRECT_BUFFER 0x90EE
+ GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
+ GL_COMPUTE_SHADER 0x91B9
+ GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
+ GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
+ GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
+ GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
+ void glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
+ void glDispatchComputeIndirect (GLintptr indirect)
diff --git a/glew/auto/extensions/gl/GL_ARB_compute_variable_group_size b/glew/auto/extensions/gl/GL_ARB_compute_variable_group_size
new file mode 100644
index 0000000..ebd1296
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_compute_variable_group_size
@@ -0,0 +1,9 @@
+GL_ARB_compute_variable_group_size
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_variable_group_size.txt
+GL_ARB_compute_variable_group_size
+
+ GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
+ GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
+ GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
+ GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
+ void glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z)
diff --git a/glew/auto/extensions/gl/GL_ARB_conditional_render_inverted b/glew/auto/extensions/gl/GL_ARB_conditional_render_inverted
new file mode 100644
index 0000000..e365644
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_conditional_render_inverted
@@ -0,0 +1,8 @@
+GL_ARB_conditional_render_inverted
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conditional_render_inverted.txt
+GL_ARB_conditional_render_inverted
+
+ GL_QUERY_WAIT_INVERTED 0x8E17
+ GL_QUERY_NO_WAIT_INVERTED 0x8E18
+ GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
+ GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
diff --git a/glew/auto/extensions/gl/GL_ARB_conservative_depth b/glew/auto/extensions/gl/GL_ARB_conservative_depth
new file mode 100644
index 0000000..54a50fb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_conservative_depth
@@ -0,0 +1,4 @@
+GL_ARB_conservative_depth
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conservative_depth.txt
+GL_ARB_conservative_depth
+
diff --git a/glew/auto/extensions/gl/GL_ARB_copy_buffer b/glew/auto/extensions/gl/GL_ARB_copy_buffer
new file mode 100644
index 0000000..75cfece
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_copy_buffer
@@ -0,0 +1,7 @@
+GL_ARB_copy_buffer
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_buffer.txt
+GL_ARB_copy_buffer
+
+ GL_COPY_READ_BUFFER 0x8F36
+ GL_COPY_WRITE_BUFFER 0x8F37
+ void glCopyBufferSubData (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_ARB_copy_image b/glew/auto/extensions/gl/GL_ARB_copy_image
new file mode 100644
index 0000000..81fd4d4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_copy_image
@@ -0,0 +1,5 @@
+GL_ARB_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_image.txt
+GL_ARB_copy_image
+
+ void glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
diff --git a/glew/auto/extensions/gl/GL_ARB_cull_distance b/glew/auto/extensions/gl/GL_ARB_cull_distance
new file mode 100644
index 0000000..08e716c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_cull_distance
@@ -0,0 +1,6 @@
+GL_ARB_cull_distance
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cull_distance.txt
+GL_ARB_cull_distance
+
+ GL_MAX_CULL_DISTANCES 0x82F9
+ GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
diff --git a/glew/auto/extensions/gl/GL_ARB_debug_output b/glew/auto/extensions/gl/GL_ARB_debug_output
new file mode 100644
index 0000000..3082b90
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_debug_output
@@ -0,0 +1,31 @@
+GL_ARB_debug_output
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_debug_output.txt
+GL_ARB_debug_output
+
+ GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
+ GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
+ GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
+ GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
+ GL_DEBUG_SOURCE_API_ARB 0x8246
+ GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
+ GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
+ GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
+ GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
+ GL_DEBUG_SOURCE_OTHER_ARB 0x824B
+ GL_DEBUG_TYPE_ERROR_ARB 0x824C
+ GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
+ GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
+ GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
+ GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
+ GL_DEBUG_TYPE_OTHER_ARB 0x8251
+ GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
+ GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
+ GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
+ GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
+ GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
+ GL_DEBUG_SEVERITY_LOW_ARB 0x9148
+ void glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam)
+ void glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled)
+ void glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf)
+ GLuint glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)
+ typedef void (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
diff --git a/glew/auto/extensions/gl/GL_ARB_depth_buffer_float b/glew/auto/extensions/gl/GL_ARB_depth_buffer_float
new file mode 100644
index 0000000..282ec09
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_depth_buffer_float
@@ -0,0 +1,7 @@
+GL_ARB_depth_buffer_float
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_buffer_float.txt
+GL_ARB_depth_buffer_float
+
+ GL_DEPTH_COMPONENT32F 0x8CAC
+ GL_DEPTH32F_STENCIL8 0x8CAD
+ GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
diff --git a/glew/auto/extensions/gl/GL_ARB_depth_clamp b/glew/auto/extensions/gl/GL_ARB_depth_clamp
new file mode 100644
index 0000000..c0c0e2f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_depth_clamp
@@ -0,0 +1,5 @@
+GL_ARB_depth_clamp
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt
+GL_ARB_depth_clamp
+
+ GL_DEPTH_CLAMP 0x864F
diff --git a/glew/auto/extensions/gl/GL_ARB_depth_texture b/glew/auto/extensions/gl/GL_ARB_depth_texture
new file mode 100644
index 0000000..18d7d85
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_depth_texture
@@ -0,0 +1,9 @@
+GL_ARB_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_texture.txt
+GL_ARB_depth_texture
+
+ GL_DEPTH_COMPONENT16_ARB 0x81A5
+ GL_DEPTH_COMPONENT24_ARB 0x81A6
+ GL_DEPTH_COMPONENT32_ARB 0x81A7
+ GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
+ GL_DEPTH_TEXTURE_MODE_ARB 0x884B
diff --git a/glew/auto/extensions/gl/GL_ARB_derivative_control b/glew/auto/extensions/gl/GL_ARB_derivative_control
new file mode 100644
index 0000000..b889e71
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_derivative_control
@@ -0,0 +1,4 @@
+GL_ARB_derivative_control
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_derivative_control.txt
+GL_ARB_derivative_control
+
diff --git a/glew/auto/extensions/gl/GL_ARB_direct_state_access b/glew/auto/extensions/gl/GL_ARB_direct_state_access
new file mode 100644
index 0000000..5eeabff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_direct_state_access
@@ -0,0 +1,103 @@
+GL_ARB_direct_state_access
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_direct_state_access.txt
+GL_ARB_direct_state_access
+
+ GL_TEXTURE_TARGET 0x1006
+ GL_QUERY_TARGET 0x82EA
+ void glBindTextureUnit (GLuint unit, GLuint texture)
+ void glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ GLenum glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target)
+ void glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
+ void glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
+ void glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
+ void glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat* value)
+ void glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint* value)
+ void glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint* value)
+ void glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+ void glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+ void glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCreateBuffers (GLsizei n, GLuint* buffers)
+ void glCreateFramebuffers (GLsizei n, GLuint* framebuffers)
+ void glCreateProgramPipelines (GLsizei n, GLuint* pipelines)
+ void glCreateQueries (GLenum target, GLsizei n, GLuint* ids)
+ void glCreateRenderbuffers (GLsizei n, GLuint* renderbuffers)
+ void glCreateSamplers (GLsizei n, GLuint* samplers)
+ void glCreateTextures (GLenum target, GLsizei n, GLuint* textures)
+ void glCreateTransformFeedbacks (GLsizei n, GLuint* ids)
+ void glCreateVertexArrays (GLsizei n, GLuint* arrays)
+ void glDisableVertexArrayAttrib (GLuint vaobj, GLuint index)
+ void glEnableVertexArrayAttrib (GLuint vaobj, GLuint index)
+ void glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length)
+ void glGenerateTextureMipmap (GLuint texture)
+ void glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels)
+ void glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64* params)
+ void glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint* params)
+ void glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void** params)
+ void glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)
+ void glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params)
+ void glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint* param)
+ void glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint* params)
+ void glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
+ void glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
+ void glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
+ void glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
+ void glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
+ void glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat* params)
+ void glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint* params)
+ void glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint* params)
+ void glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint* params)
+ void glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat* params)
+ void glGetTextureParameteriv (GLuint texture, GLenum pname, GLint* params)
+ void glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64* param)
+ void glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint* param)
+ void glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint* param)
+ void glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64* param)
+ void glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint* param)
+ void glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint* param)
+ void glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments)
+ void glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
+ void * glMapNamedBuffer (GLuint buffer, GLenum access)
+ void * glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)
+ void glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)
+ void glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)
+ void glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
+ void glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum mode)
+ void glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum* bufs)
+ void glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param)
+ void glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum mode)
+ void glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)
+ void glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)
+ void glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
+ void glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer)
+ void glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glTextureParameterIiv (GLuint texture, GLenum pname, const GLint* params)
+ void glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint* params)
+ void glTextureParameterf (GLuint texture, GLenum pname, GLfloat param)
+ void glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat* param)
+ void glTextureParameteri (GLuint texture, GLenum pname, GLint param)
+ void glTextureParameteriv (GLuint texture, GLenum pname, const GLint* param)
+ void glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width)
+ void glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
+ void glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
+ void glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
+ void glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
+ void glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
+ void glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
+ void glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer)
+ void glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ GLboolean glUnmapNamedBuffer (GLuint buffer)
+ void glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex)
+ void glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
+ void glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor)
+ void glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer)
+ void glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
+ void glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_buffers b/glew/auto/extensions/gl/GL_ARB_draw_buffers
new file mode 100644
index 0000000..6ff3de4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_buffers
@@ -0,0 +1,22 @@
+GL_ARB_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers.txt
+GL_ARB_draw_buffers
+
+ GL_MAX_DRAW_BUFFERS_ARB 0x8824
+ GL_DRAW_BUFFER0_ARB 0x8825
+ GL_DRAW_BUFFER1_ARB 0x8826
+ GL_DRAW_BUFFER2_ARB 0x8827
+ GL_DRAW_BUFFER3_ARB 0x8828
+ GL_DRAW_BUFFER4_ARB 0x8829
+ GL_DRAW_BUFFER5_ARB 0x882A
+ GL_DRAW_BUFFER6_ARB 0x882B
+ GL_DRAW_BUFFER7_ARB 0x882C
+ GL_DRAW_BUFFER8_ARB 0x882D
+ GL_DRAW_BUFFER9_ARB 0x882E
+ GL_DRAW_BUFFER10_ARB 0x882F
+ GL_DRAW_BUFFER11_ARB 0x8830
+ GL_DRAW_BUFFER12_ARB 0x8831
+ GL_DRAW_BUFFER13_ARB 0x8832
+ GL_DRAW_BUFFER14_ARB 0x8833
+ GL_DRAW_BUFFER15_ARB 0x8834
+ void glDrawBuffersARB (GLsizei n, const GLenum* bufs)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_buffers_blend b/glew/auto/extensions/gl/GL_ARB_draw_buffers_blend
new file mode 100644
index 0000000..dcf7831
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_buffers_blend
@@ -0,0 +1,8 @@
+GL_ARB_draw_buffers_blend
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers_blend.txt
+GL_ARB_draw_buffers_blend
+
+ void glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
+ void glBlendEquationiARB (GLuint buf, GLenum mode)
+ void glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+ void glBlendFunciARB (GLuint buf, GLenum src, GLenum dst)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_elements_base_vertex b/glew/auto/extensions/gl/GL_ARB_draw_elements_base_vertex
new file mode 100644
index 0000000..486b86e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_elements_base_vertex
@@ -0,0 +1,8 @@
+GL_ARB_draw_elements_base_vertex
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_elements_base_vertex.txt
+GL_ARB_draw_elements_base_vertex
+
+ void glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)
+ void glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)
+ void glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)
+ void glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei* count, GLenum type, const void*const *indices, GLsizei drawcount, const GLint *basevertex)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_indirect b/glew/auto/extensions/gl/GL_ARB_draw_indirect
new file mode 100644
index 0000000..103ab70
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_indirect
@@ -0,0 +1,8 @@
+GL_ARB_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_indirect.txt
+GL_ARB_draw_indirect
+
+ GL_DRAW_INDIRECT_BUFFER 0x8F3F
+ GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+ void glDrawArraysIndirect (GLenum mode, const void *indirect)
+ void glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect)
diff --git a/glew/auto/extensions/gl/GL_ARB_draw_instanced b/glew/auto/extensions/gl/GL_ARB_draw_instanced
new file mode 100644
index 0000000..a730952
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_draw_instanced
@@ -0,0 +1,4 @@
+GL_ARB_draw_instanced
+http://www.opengl.org/registry/specs/ARB/draw_instanced.txt
+GL_ARB_draw_instanced
+
diff --git a/glew/auto/extensions/gl/GL_ARB_enhanced_layouts b/glew/auto/extensions/gl/GL_ARB_enhanced_layouts
new file mode 100644
index 0000000..2e31450
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_enhanced_layouts
@@ -0,0 +1,7 @@
+GL_ARB_enhanced_layouts
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_enhanced_layouts.txt
+GL_ARB_enhanced_layouts
+
+ GL_LOCATION_COMPONENT 0x934A
+ GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
+ GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
diff --git a/glew/auto/extensions/gl/GL_ARB_explicit_attrib_location b/glew/auto/extensions/gl/GL_ARB_explicit_attrib_location
new file mode 100644
index 0000000..09beb53
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_explicit_attrib_location
@@ -0,0 +1,4 @@
+GL_ARB_explicit_attrib_location
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_attrib_location.txt
+GL_ARB_explicit_attrib_location
+
diff --git a/glew/auto/extensions/gl/GL_ARB_explicit_uniform_location b/glew/auto/extensions/gl/GL_ARB_explicit_uniform_location
new file mode 100644
index 0000000..8486347
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_explicit_uniform_location
@@ -0,0 +1,5 @@
+GL_ARB_explicit_uniform_location
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_uniform_location.txt
+GL_ARB_explicit_uniform_location
+
+ GL_MAX_UNIFORM_LOCATIONS 0x826E
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_coord_conventions b/glew/auto/extensions/gl/GL_ARB_fragment_coord_conventions
new file mode 100644
index 0000000..6211c50
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_coord_conventions
@@ -0,0 +1,4 @@
+GL_ARB_fragment_coord_conventions
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_coord_conventions.txt
+GL_ARB_fragment_coord_conventions
+
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_layer_viewport b/glew/auto/extensions/gl/GL_ARB_fragment_layer_viewport
new file mode 100644
index 0000000..b6e97b8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_layer_viewport
@@ -0,0 +1,4 @@
+GL_ARB_fragment_layer_viewport
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_layer_viewport.txt
+GL_ARB_fragment_layer_viewport
+
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_program b/glew/auto/extensions/gl/GL_ARB_fragment_program
new file mode 100644
index 0000000..36f47b0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_program
@@ -0,0 +1,19 @@
+GL_ARB_fragment_program
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_program.txt
+GL_ARB_fragment_program
+
+ GL_FRAGMENT_PROGRAM_ARB 0x8804
+ GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
+ GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
+ GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
+ GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
+ GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
+ GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
+ GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
+ GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
+ GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
+ GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
+ GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
+ GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
+ GL_MAX_TEXTURE_COORDS_ARB 0x8871
+ GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_program_shadow b/glew/auto/extensions/gl/GL_ARB_fragment_program_shadow
new file mode 100644
index 0000000..0235b93
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_program_shadow
@@ -0,0 +1,4 @@
+GL_ARB_fragment_program_shadow
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_program_shadow.txt
+GL_ARB_fragment_program_shadow
+
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_shader b/glew/auto/extensions/gl/GL_ARB_fragment_shader
new file mode 100644
index 0000000..bbb20e1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_shader
@@ -0,0 +1,7 @@
+GL_ARB_fragment_shader
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader.txt
+GL_ARB_fragment_shader
+
+ GL_FRAGMENT_SHADER_ARB 0x8B30
+ GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
diff --git a/glew/auto/extensions/gl/GL_ARB_fragment_shader_interlock b/glew/auto/extensions/gl/GL_ARB_fragment_shader_interlock
new file mode 100644
index 0000000..7180408
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_fragment_shader_interlock
@@ -0,0 +1,4 @@
+GL_ARB_fragment_shader_interlock
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt
+GL_ARB_fragment_shader_interlock
+
diff --git a/glew/auto/extensions/gl/GL_ARB_framebuffer_no_attachments b/glew/auto/extensions/gl/GL_ARB_framebuffer_no_attachments
new file mode 100644
index 0000000..46ecec1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_framebuffer_no_attachments
@@ -0,0 +1,17 @@
+GL_ARB_framebuffer_no_attachments
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_no_attachments.txt
+GL_ARB_framebuffer_no_attachments
+
+ GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
+ GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
+ GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
+ GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
+ GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
+ GL_MAX_FRAMEBUFFER_WIDTH 0x9315
+ GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
+ GL_MAX_FRAMEBUFFER_LAYERS 0x9317
+ GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
+ void glFramebufferParameteri (GLenum target, GLenum pname, GLint param)
+ void glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint* params)
+ void glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint* params)
+ void glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_ARB_framebuffer_object b/glew/auto/extensions/gl/GL_ARB_framebuffer_object
new file mode 100644
index 0000000..c1baf32
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_framebuffer_object
@@ -0,0 +1,98 @@
+GL_ARB_framebuffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_object.txt
+GL_ARB_framebuffer_object
+
+ GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
+ GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
+ GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
+ GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
+ GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
+ GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
+ GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
+ GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
+ GL_FRAMEBUFFER_DEFAULT 0x8218
+ GL_FRAMEBUFFER_UNDEFINED 0x8219
+ GL_DEPTH_STENCIL_ATTACHMENT 0x821A
+ GL_INDEX 0x8222
+ GL_MAX_RENDERBUFFER_SIZE 0x84E8
+ GL_DEPTH_STENCIL 0x84F9
+ GL_UNSIGNED_INT_24_8 0x84FA
+ GL_DEPTH24_STENCIL8 0x88F0
+ GL_TEXTURE_STENCIL_SIZE 0x88F1
+ GL_UNSIGNED_NORMALIZED 0x8C17
+ GL_SRGB 0x8C40
+ GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
+ GL_FRAMEBUFFER_BINDING 0x8CA6
+ GL_RENDERBUFFER_BINDING 0x8CA7
+ GL_READ_FRAMEBUFFER 0x8CA8
+ GL_DRAW_FRAMEBUFFER 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING 0x8CAA
+ GL_RENDERBUFFER_SAMPLES 0x8CAB
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+ GL_FRAMEBUFFER_COMPLETE 0x8CD5
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
+ GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
+ GL_MAX_COLOR_ATTACHMENTS 0x8CDF
+ GL_COLOR_ATTACHMENT0 0x8CE0
+ GL_COLOR_ATTACHMENT1 0x8CE1
+ GL_COLOR_ATTACHMENT2 0x8CE2
+ GL_COLOR_ATTACHMENT3 0x8CE3
+ GL_COLOR_ATTACHMENT4 0x8CE4
+ GL_COLOR_ATTACHMENT5 0x8CE5
+ GL_COLOR_ATTACHMENT6 0x8CE6
+ GL_COLOR_ATTACHMENT7 0x8CE7
+ GL_COLOR_ATTACHMENT8 0x8CE8
+ GL_COLOR_ATTACHMENT9 0x8CE9
+ GL_COLOR_ATTACHMENT10 0x8CEA
+ GL_COLOR_ATTACHMENT11 0x8CEB
+ GL_COLOR_ATTACHMENT12 0x8CEC
+ GL_COLOR_ATTACHMENT13 0x8CED
+ GL_COLOR_ATTACHMENT14 0x8CEE
+ GL_COLOR_ATTACHMENT15 0x8CEF
+ GL_DEPTH_ATTACHMENT 0x8D00
+ GL_STENCIL_ATTACHMENT 0x8D20
+ GL_FRAMEBUFFER 0x8D40
+ GL_RENDERBUFFER 0x8D41
+ GL_RENDERBUFFER_WIDTH 0x8D42
+ GL_RENDERBUFFER_HEIGHT 0x8D43
+ GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
+ GL_STENCIL_INDEX1 0x8D46
+ GL_STENCIL_INDEX4 0x8D47
+ GL_STENCIL_INDEX8 0x8D48
+ GL_STENCIL_INDEX16 0x8D49
+ GL_RENDERBUFFER_RED_SIZE 0x8D50
+ GL_RENDERBUFFER_GREEN_SIZE 0x8D51
+ GL_RENDERBUFFER_BLUE_SIZE 0x8D52
+ GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
+ GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
+ GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
+ GL_MAX_SAMPLES 0x8D57
+ void glBindFramebuffer (GLenum target, GLuint framebuffer)
+ void glBindRenderbuffer (GLenum target, GLuint renderbuffer)
+ void glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ GLenum glCheckFramebufferStatus (GLenum target)
+ void glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers)
+ void glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers)
+ void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer)
+ void glFramebufferTextureLayer (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer)
+ void glGenFramebuffers (GLsizei n, GLuint* framebuffers)
+ void glGenRenderbuffers (GLsizei n, GLuint* renderbuffers)
+ void glGenerateMipmap (GLenum target)
+ void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params)
+ void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsFramebuffer (GLuint framebuffer)
+ GLboolean glIsRenderbuffer (GLuint renderbuffer)
+ void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+ void glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_ARB_framebuffer_sRGB b/glew/auto/extensions/gl/GL_ARB_framebuffer_sRGB
new file mode 100644
index 0000000..e3b2cb0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_framebuffer_sRGB
@@ -0,0 +1,5 @@
+GL_ARB_framebuffer_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_sRGB.txt
+GL_ARB_framebuffer_sRGB
+
+ GL_FRAMEBUFFER_SRGB 0x8DB9
diff --git a/glew/auto/extensions/gl/GL_ARB_geometry_shader4 b/glew/auto/extensions/gl/GL_ARB_geometry_shader4
new file mode 100644
index 0000000..17092c4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_geometry_shader4
@@ -0,0 +1,27 @@
+GL_ARB_geometry_shader4
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_geometry_shader4.txt
+GL_ARB_geometry_shader4
+
+ GL_LINES_ADJACENCY_ARB 0xA
+ GL_LINE_STRIP_ADJACENCY_ARB 0xB
+ GL_TRIANGLES_ADJACENCY_ARB 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD
+ GL_PROGRAM_POINT_SIZE_ARB 0x8642
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
+ GL_GEOMETRY_SHADER_ARB 0x8DD9
+ GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
+ GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
+ GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
+ GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
+ GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
+ void glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level)
+ void glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)
+ void glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+ void glProgramParameteriARB (GLuint program, GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_ARB_get_program_binary b/glew/auto/extensions/gl/GL_ARB_get_program_binary
new file mode 100644
index 0000000..78aaeef
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_get_program_binary
@@ -0,0 +1,11 @@
+GL_ARB_get_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_program_binary.txt
+GL_ARB_get_program_binary
+
+ GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
+ GL_PROGRAM_BINARY_LENGTH 0x8741
+ GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
+ GL_PROGRAM_BINARY_FORMATS 0x87FF
+ void glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary)
+ void glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
+ void glProgramParameteri (GLuint program, GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_ARB_get_texture_sub_image b/glew/auto/extensions/gl/GL_ARB_get_texture_sub_image
new file mode 100644
index 0000000..0860365
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_get_texture_sub_image
@@ -0,0 +1,6 @@
+GL_ARB_get_texture_sub_image
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_texture_sub_image.txt
+GL_ARB_get_texture_sub_image
+
+ void glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels)
+ void glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
diff --git a/glew/auto/extensions/gl/GL_ARB_gl_spirv b/glew/auto/extensions/gl/GL_ARB_gl_spirv
new file mode 100644
index 0000000..ed35630
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_gl_spirv
@@ -0,0 +1,7 @@
+GL_ARB_gl_spirv
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gl_spirv.txt
+GL_ARB_gl_spirv
+
+ GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
+ GL_SPIR_V_BINARY_ARB 0x9552
+ void glSpecializeShaderARB (GLuint shader, const GLchar* pEntryPoint, GLuint numSpecializationConstants, const GLuint* pConstantIndex, const GLuint* pConstantValue)
diff --git a/glew/auto/extensions/gl/GL_ARB_gpu_shader5 b/glew/auto/extensions/gl/GL_ARB_gpu_shader5
new file mode 100644
index 0000000..48a2658
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_gpu_shader5
@@ -0,0 +1,10 @@
+GL_ARB_gpu_shader5
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader5.txt
+GL_ARB_gpu_shader5
+
+ GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+ GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+ GL_MAX_VERTEX_STREAMS 0x8E71
diff --git a/glew/auto/extensions/gl/GL_ARB_gpu_shader_fp64 b/glew/auto/extensions/gl/GL_ARB_gpu_shader_fp64
new file mode 100644
index 0000000..1a02b5f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_gpu_shader_fp64
@@ -0,0 +1,34 @@
+GL_ARB_gpu_shader_fp64
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_fp64.txt
+GL_ARB_gpu_shader_fp64
+
+ GL_DOUBLE_MAT2 0x8F46
+ GL_DOUBLE_MAT3 0x8F47
+ GL_DOUBLE_MAT4 0x8F48
+ GL_DOUBLE_MAT2x3 0x8F49
+ GL_DOUBLE_MAT2x4 0x8F4A
+ GL_DOUBLE_MAT3x2 0x8F4B
+ GL_DOUBLE_MAT3x4 0x8F4C
+ GL_DOUBLE_MAT4x2 0x8F4D
+ GL_DOUBLE_MAT4x3 0x8F4E
+ GL_DOUBLE_VEC2 0x8FFC
+ GL_DOUBLE_VEC3 0x8FFD
+ GL_DOUBLE_VEC4 0x8FFE
+ void glGetUniformdv (GLuint program, GLint location, GLdouble* params)
+ void glUniform1d (GLint location, GLdouble x)
+ void glUniform1dv (GLint location, GLsizei count, const GLdouble* value)
+ void glUniform2d (GLint location, GLdouble x, GLdouble y)
+ void glUniform2dv (GLint location, GLsizei count, const GLdouble* value)
+ void glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z)
+ void glUniform3dv (GLint location, GLsizei count, const GLdouble* value)
+ void glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glUniform4dv (GLint location, GLsizei count, const GLdouble* value)
+ void glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
diff --git a/glew/auto/extensions/gl/GL_ARB_gpu_shader_int64 b/glew/auto/extensions/gl/GL_ARB_gpu_shader_int64
new file mode 100644
index 0000000..27458ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_gpu_shader_int64
@@ -0,0 +1,48 @@
+GL_ARB_gpu_shader_int64
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_int64.txt
+GL_ARB_gpu_shader_int64
+
+ GL_INT64_ARB 0x140E
+ GL_UNSIGNED_INT64_ARB 0x140F
+ GL_INT64_VEC2_ARB 0x8FE9
+ GL_INT64_VEC3_ARB 0x8FEA
+ GL_INT64_VEC4_ARB 0x8FEB
+ GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5
+ GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6
+ GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7
+ void glGetUniformi64vARB (GLuint program, GLint location, GLint64* params)
+ void glGetUniformui64vARB (GLuint program, GLint location, GLuint64* params)
+ void glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64* params)
+ void glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64* params)
+ void glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x)
+ void glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64* value)
+ void glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x)
+ void glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* value)
+ void glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y)
+ void glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64* value)
+ void glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y)
+ void glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* value)
+ void glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z)
+ void glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64* value)
+ void glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z)
+ void glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* value)
+ void glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w)
+ void glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64* value)
+ void glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w)
+ void glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64* value)
+ void glUniform1i64ARB (GLint location, GLint64 x)
+ void glUniform1i64vARB (GLint location, GLsizei count, const GLint64* value)
+ void glUniform1ui64ARB (GLint location, GLuint64 x)
+ void glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64* value)
+ void glUniform2i64ARB (GLint location, GLint64 x, GLint64 y)
+ void glUniform2i64vARB (GLint location, GLsizei count, const GLint64* value)
+ void glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y)
+ void glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64* value)
+ void glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z)
+ void glUniform3i64vARB (GLint location, GLsizei count, const GLint64* value)
+ void glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z)
+ void glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64* value)
+ void glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w)
+ void glUniform4i64vARB (GLint location, GLsizei count, const GLint64* value)
+ void glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w)
+ void glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64* value)
diff --git a/glew/auto/extensions/gl/GL_ARB_half_float_pixel b/glew/auto/extensions/gl/GL_ARB_half_float_pixel
new file mode 100644
index 0000000..c83bd91
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_half_float_pixel
@@ -0,0 +1,5 @@
+GL_ARB_half_float_pixel
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_pixel.txt
+GL_ARB_half_float_pixel
+
+ GL_HALF_FLOAT_ARB 0x140B
diff --git a/glew/auto/extensions/gl/GL_ARB_half_float_vertex b/glew/auto/extensions/gl/GL_ARB_half_float_vertex
new file mode 100644
index 0000000..0fd85e8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_half_float_vertex
@@ -0,0 +1,5 @@
+GL_ARB_half_float_vertex
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_vertex.txt
+GL_ARB_half_float_vertex
+
+ GL_HALF_FLOAT 0x140B
diff --git a/glew/auto/extensions/gl/GL_ARB_imaging b/glew/auto/extensions/gl/GL_ARB_imaging
new file mode 100644
index 0000000..727adf0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_imaging
@@ -0,0 +1,113 @@
+GL_ARB_imaging
+
+GL_ARB_imaging
+
+ GL_CONSTANT_COLOR 0x8001
+ GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+ GL_CONSTANT_ALPHA 0x8003
+ GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+ GL_BLEND_COLOR 0x8005
+ GL_FUNC_ADD 0x8006
+ GL_MIN 0x8007
+ GL_MAX 0x8008
+ GL_BLEND_EQUATION 0x8009
+ GL_FUNC_SUBTRACT 0x800A
+ GL_FUNC_REVERSE_SUBTRACT 0x800B
+ GL_CONVOLUTION_1D 0x8010
+ GL_CONVOLUTION_2D 0x8011
+ GL_SEPARABLE_2D 0x8012
+ GL_CONVOLUTION_BORDER_MODE 0x8013
+ GL_CONVOLUTION_FILTER_SCALE 0x8014
+ GL_CONVOLUTION_FILTER_BIAS 0x8015
+ GL_REDUCE 0x8016
+ GL_CONVOLUTION_FORMAT 0x8017
+ GL_CONVOLUTION_WIDTH 0x8018
+ GL_CONVOLUTION_HEIGHT 0x8019
+ GL_MAX_CONVOLUTION_WIDTH 0x801A
+ GL_MAX_CONVOLUTION_HEIGHT 0x801B
+ GL_POST_CONVOLUTION_RED_SCALE 0x801C
+ GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+ GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+ GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+ GL_POST_CONVOLUTION_RED_BIAS 0x8020
+ GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+ GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+ GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+ GL_HISTOGRAM 0x8024
+ GL_PROXY_HISTOGRAM 0x8025
+ GL_HISTOGRAM_WIDTH 0x8026
+ GL_HISTOGRAM_FORMAT 0x8027
+ GL_HISTOGRAM_RED_SIZE 0x8028
+ GL_HISTOGRAM_GREEN_SIZE 0x8029
+ GL_HISTOGRAM_BLUE_SIZE 0x802A
+ GL_HISTOGRAM_ALPHA_SIZE 0x802B
+ GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+ GL_HISTOGRAM_SINK 0x802D
+ GL_MINMAX 0x802E
+ GL_MINMAX_FORMAT 0x802F
+ GL_MINMAX_SINK 0x8030
+ GL_TABLE_TOO_LARGE 0x8031
+ GL_COLOR_MATRIX 0x80B1
+ GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+ GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+ GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+ GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+ GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+ GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+ GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+ GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+ GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+ GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+ GL_COLOR_TABLE 0x80D0
+ GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+ GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+ GL_PROXY_COLOR_TABLE 0x80D3
+ GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+ GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+ GL_COLOR_TABLE_SCALE 0x80D6
+ GL_COLOR_TABLE_BIAS 0x80D7
+ GL_COLOR_TABLE_FORMAT 0x80D8
+ GL_COLOR_TABLE_WIDTH 0x80D9
+ GL_COLOR_TABLE_RED_SIZE 0x80DA
+ GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+ GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+ GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+ GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+ GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+ GL_IGNORE_BORDER 0x8150
+ GL_CONSTANT_BORDER 0x8151
+ GL_WRAP_BORDER 0x8152
+ GL_REPLICATE_BORDER 0x8153
+ GL_CONVOLUTION_BORDER_COLOR 0x8154
+ void glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table)
+ void glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data)
+ void glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params)
+ void glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params)
+ void glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
+ void glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+ void glGetColorTable (GLenum target, GLenum format, GLenum type, void *table)
+ void glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params)
+ void glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params)
+ void glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
+ void glResetHistogram (GLenum target)
+ void glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values)
+ void glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params)
+ void glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params)
+ void glMinmax (GLenum target, GLenum internalformat, GLboolean sink)
+ void glResetMinmax (GLenum target)
+ void glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params)
+ void glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params)
+ void glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image)
+ void glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image)
+ void glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params)
+ void glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params)
+ void glConvolutionParameteri (GLenum target, GLenum pname, GLint params)
+ void glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params)
+ void glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+ void glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image)
+ void glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params)
+ void glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params)
+ void glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column)
+ void glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span)
+ void glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum types, void *values)
diff --git a/glew/auto/extensions/gl/GL_ARB_indirect_parameters b/glew/auto/extensions/gl/GL_ARB_indirect_parameters
new file mode 100644
index 0000000..2a33cc2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_indirect_parameters
@@ -0,0 +1,8 @@
+GL_ARB_indirect_parameters
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_indirect_parameters.txt
+GL_ARB_indirect_parameters
+
+ GL_PARAMETER_BUFFER_ARB 0x80EE
+ GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
+ void glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
+ void glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_ARB_instanced_arrays b/glew/auto/extensions/gl/GL_ARB_instanced_arrays
new file mode 100644
index 0000000..1487d39
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_instanced_arrays
@@ -0,0 +1,8 @@
+GL_ARB_instanced_arrays
+http://www.opengl.org/registry/specs/ARB/instanced_arrays.txt
+GL_ARB_instanced_arrays
+
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
+ void glVertexAttribDivisorARB (GLuint index, GLuint divisor)
+ void glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+ void glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_ARB_internalformat_query b/glew/auto/extensions/gl/GL_ARB_internalformat_query
new file mode 100644
index 0000000..a5e6173
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_internalformat_query
@@ -0,0 +1,6 @@
+GL_ARB_internalformat_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_internalformat_query.txt
+GL_ARB_internalformat_query
+
+ GL_NUM_SAMPLE_COUNTS 0x9380
+ void glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_internalformat_query2 b/glew/auto/extensions/gl/GL_ARB_internalformat_query2
new file mode 100644
index 0000000..7af5091
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_internalformat_query2
@@ -0,0 +1,104 @@
+GL_ARB_internalformat_query2
+http://www.opengl.org/registry/specs/ARB/internalformat_query2.txt
+GL_ARB_internalformat_query2
+
+ GL_INTERNALFORMAT_SUPPORTED 0x826F
+ GL_INTERNALFORMAT_PREFERRED 0x8270
+ GL_INTERNALFORMAT_RED_SIZE 0x8271
+ GL_INTERNALFORMAT_GREEN_SIZE 0x8272
+ GL_INTERNALFORMAT_BLUE_SIZE 0x8273
+ GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
+ GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
+ GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
+ GL_INTERNALFORMAT_SHARED_SIZE 0x8277
+ GL_INTERNALFORMAT_RED_TYPE 0x8278
+ GL_INTERNALFORMAT_GREEN_TYPE 0x8279
+ GL_INTERNALFORMAT_BLUE_TYPE 0x827A
+ GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
+ GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
+ GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
+ GL_MAX_WIDTH 0x827E
+ GL_MAX_HEIGHT 0x827F
+ GL_MAX_DEPTH 0x8280
+ GL_MAX_LAYERS 0x8281
+ GL_MAX_COMBINED_DIMENSIONS 0x8282
+ GL_COLOR_COMPONENTS 0x8283
+ GL_DEPTH_COMPONENTS 0x8284
+ GL_STENCIL_COMPONENTS 0x8285
+ GL_COLOR_RENDERABLE 0x8286
+ GL_DEPTH_RENDERABLE 0x8287
+ GL_STENCIL_RENDERABLE 0x8288
+ GL_FRAMEBUFFER_RENDERABLE 0x8289
+ GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
+ GL_FRAMEBUFFER_BLEND 0x828B
+ GL_READ_PIXELS 0x828C
+ GL_READ_PIXELS_FORMAT 0x828D
+ GL_READ_PIXELS_TYPE 0x828E
+ GL_TEXTURE_IMAGE_FORMAT 0x828F
+ GL_TEXTURE_IMAGE_TYPE 0x8290
+ GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
+ GL_GET_TEXTURE_IMAGE_TYPE 0x8292
+ GL_MIPMAP 0x8293
+ GL_MANUAL_GENERATE_MIPMAP 0x8294
+ GL_AUTO_GENERATE_MIPMAP 0x8295
+ GL_COLOR_ENCODING 0x8296
+ GL_SRGB_READ 0x8297
+ GL_SRGB_WRITE 0x8298
+ GL_SRGB_DECODE_ARB 0x8299
+ GL_FILTER 0x829A
+ GL_VERTEX_TEXTURE 0x829B
+ GL_TESS_CONTROL_TEXTURE 0x829C
+ GL_TESS_EVALUATION_TEXTURE 0x829D
+ GL_GEOMETRY_TEXTURE 0x829E
+ GL_FRAGMENT_TEXTURE 0x829F
+ GL_COMPUTE_TEXTURE 0x82A0
+ GL_TEXTURE_SHADOW 0x82A1
+ GL_TEXTURE_GATHER 0x82A2
+ GL_TEXTURE_GATHER_SHADOW 0x82A3
+ GL_SHADER_IMAGE_LOAD 0x82A4
+ GL_SHADER_IMAGE_STORE 0x82A5
+ GL_SHADER_IMAGE_ATOMIC 0x82A6
+ GL_IMAGE_TEXEL_SIZE 0x82A7
+ GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
+ GL_IMAGE_PIXEL_FORMAT 0x82A9
+ GL_IMAGE_PIXEL_TYPE 0x82AA
+ GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
+ GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
+ GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
+ GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
+ GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
+ GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
+ GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
+ GL_CLEAR_BUFFER 0x82B4
+ GL_TEXTURE_VIEW 0x82B5
+ GL_VIEW_COMPATIBILITY_CLASS 0x82B6
+ GL_FULL_SUPPORT 0x82B7
+ GL_CAVEAT_SUPPORT 0x82B8
+ GL_IMAGE_CLASS_4_X_32 0x82B9
+ GL_IMAGE_CLASS_2_X_32 0x82BA
+ GL_IMAGE_CLASS_1_X_32 0x82BB
+ GL_IMAGE_CLASS_4_X_16 0x82BC
+ GL_IMAGE_CLASS_2_X_16 0x82BD
+ GL_IMAGE_CLASS_1_X_16 0x82BE
+ GL_IMAGE_CLASS_4_X_8 0x82BF
+ GL_IMAGE_CLASS_2_X_8 0x82C0
+ GL_IMAGE_CLASS_1_X_8 0x82C1
+ GL_IMAGE_CLASS_11_11_10 0x82C2
+ GL_IMAGE_CLASS_10_10_10_2 0x82C3
+ GL_VIEW_CLASS_128_BITS 0x82C4
+ GL_VIEW_CLASS_96_BITS 0x82C5
+ GL_VIEW_CLASS_64_BITS 0x82C6
+ GL_VIEW_CLASS_48_BITS 0x82C7
+ GL_VIEW_CLASS_32_BITS 0x82C8
+ GL_VIEW_CLASS_24_BITS 0x82C9
+ GL_VIEW_CLASS_16_BITS 0x82CA
+ GL_VIEW_CLASS_8_BITS 0x82CB
+ GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
+ GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
+ GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
+ GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
+ GL_VIEW_CLASS_RGTC1_RED 0x82D0
+ GL_VIEW_CLASS_RGTC2_RG 0x82D1
+ GL_VIEW_CLASS_BPTC_UNORM 0x82D2
+ GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
+ void glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_invalidate_subdata b/glew/auto/extensions/gl/GL_ARB_invalidate_subdata
new file mode 100644
index 0000000..fa86405
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_invalidate_subdata
@@ -0,0 +1,10 @@
+GL_ARB_invalidate_subdata
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_invalidate_subdata.txt
+GL_ARB_invalidate_subdata
+
+ void glInvalidateBufferData (GLuint buffer)
+ void glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length)
+ void glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum* attachments)
+ void glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glInvalidateTexImage (GLuint texture, GLint level)
+ void glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GL_ARB_map_buffer_alignment b/glew/auto/extensions/gl/GL_ARB_map_buffer_alignment
new file mode 100644
index 0000000..2adc38d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_map_buffer_alignment
@@ -0,0 +1,5 @@
+GL_ARB_map_buffer_alignment
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_alignment.txt
+GL_ARB_map_buffer_alignment
+
+ GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
diff --git a/glew/auto/extensions/gl/GL_ARB_map_buffer_range b/glew/auto/extensions/gl/GL_ARB_map_buffer_range
new file mode 100644
index 0000000..1d9e055
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_map_buffer_range
@@ -0,0 +1,12 @@
+GL_ARB_map_buffer_range
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_range.txt
+GL_ARB_map_buffer_range
+
+ GL_MAP_READ_BIT 0x0001
+ GL_MAP_WRITE_BIT 0x0002
+ GL_MAP_INVALIDATE_RANGE_BIT 0x0004
+ GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
+ GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
+ GL_MAP_UNSYNCHRONIZED_BIT 0x0020
+ void glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length)
+ void * glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
diff --git a/glew/auto/extensions/gl/GL_ARB_matrix_palette b/glew/auto/extensions/gl/GL_ARB_matrix_palette
new file mode 100644
index 0000000..98b0d0b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_matrix_palette
@@ -0,0 +1,19 @@
+GL_ARB_matrix_palette
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/matrix_palette.txt
+GL_ARB_matrix_palette
+
+ GL_MATRIX_PALETTE_ARB 0x8840
+ GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
+ GL_MAX_PALETTE_MATRICES_ARB 0x8842
+ GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
+ GL_MATRIX_INDEX_ARRAY_ARB 0x8844
+ GL_CURRENT_MATRIX_INDEX_ARB 0x8845
+ GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
+ GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
+ GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
+ GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
+ void glCurrentPaletteMatrixARB (GLint index)
+ void glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, void *pointer)
+ void glMatrixIndexubvARB (GLint size, GLubyte *indices)
+ void glMatrixIndexusvARB (GLint size, GLushort *indices)
+ void glMatrixIndexuivARB (GLint size, GLuint *indices)
diff --git a/glew/auto/extensions/gl/GL_ARB_multi_bind b/glew/auto/extensions/gl/GL_ARB_multi_bind
new file mode 100644
index 0000000..8914ce0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_multi_bind
@@ -0,0 +1,10 @@
+GL_ARB_multi_bind
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_bind.txt
+GL_ARB_multi_bind
+
+ void glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint* buffers)
+ void glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizeiptr *sizes)
+ void glBindImageTextures (GLuint first, GLsizei count, const GLuint* textures)
+ void glBindSamplers (GLuint first, GLsizei count, const GLuint* samplers)
+ void glBindTextures (GLuint first, GLsizei count, const GLuint* textures)
+ void glBindVertexBuffers (GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides)
diff --git a/glew/auto/extensions/gl/GL_ARB_multi_draw_indirect b/glew/auto/extensions/gl/GL_ARB_multi_draw_indirect
new file mode 100644
index 0000000..f22c91d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_multi_draw_indirect
@@ -0,0 +1,6 @@
+GL_ARB_multi_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_draw_indirect.txt
+GL_ARB_multi_draw_indirect
+
+ void glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride)
+ void glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_ARB_multisample b/glew/auto/extensions/gl/GL_ARB_multisample
new file mode 100644
index 0000000..12cf292
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_multisample
@@ -0,0 +1,14 @@
+GL_ARB_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multisample.txt
+GL_ARB_multisample
+
+ GL_MULTISAMPLE_ARB 0x809D
+ GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
+ GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
+ GL_SAMPLE_COVERAGE_ARB 0x80A0
+ GL_SAMPLE_BUFFERS_ARB 0x80A8
+ GL_SAMPLES_ARB 0x80A9
+ GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
+ GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
+ GL_MULTISAMPLE_BIT_ARB 0x20000000
+ void glSampleCoverageARB (GLclampf value, GLboolean invert)
diff --git a/glew/auto/extensions/gl/GL_ARB_multitexture b/glew/auto/extensions/gl/GL_ARB_multitexture
new file mode 100644
index 0000000..46a9546
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_multitexture
@@ -0,0 +1,73 @@
+GL_ARB_multitexture
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/multitexture.txt
+GL_ARB_multitexture
+
+ GL_TEXTURE0_ARB 0x84C0
+ GL_TEXTURE1_ARB 0x84C1
+ GL_TEXTURE2_ARB 0x84C2
+ GL_TEXTURE3_ARB 0x84C3
+ GL_TEXTURE4_ARB 0x84C4
+ GL_TEXTURE5_ARB 0x84C5
+ GL_TEXTURE6_ARB 0x84C6
+ GL_TEXTURE7_ARB 0x84C7
+ GL_TEXTURE8_ARB 0x84C8
+ GL_TEXTURE9_ARB 0x84C9
+ GL_TEXTURE10_ARB 0x84CA
+ GL_TEXTURE11_ARB 0x84CB
+ GL_TEXTURE12_ARB 0x84CC
+ GL_TEXTURE13_ARB 0x84CD
+ GL_TEXTURE14_ARB 0x84CE
+ GL_TEXTURE15_ARB 0x84CF
+ GL_TEXTURE16_ARB 0x84D0
+ GL_TEXTURE17_ARB 0x84D1
+ GL_TEXTURE18_ARB 0x84D2
+ GL_TEXTURE19_ARB 0x84D3
+ GL_TEXTURE20_ARB 0x84D4
+ GL_TEXTURE21_ARB 0x84D5
+ GL_TEXTURE22_ARB 0x84D6
+ GL_TEXTURE23_ARB 0x84D7
+ GL_TEXTURE24_ARB 0x84D8
+ GL_TEXTURE25_ARB 0x84D9
+ GL_TEXTURE26_ARB 0x84DA
+ GL_TEXTURE27_ARB 0x84DB
+ GL_TEXTURE28_ARB 0x84DC
+ GL_TEXTURE29_ARB 0x84DD
+ GL_TEXTURE30_ARB 0x84DE
+ GL_TEXTURE31_ARB 0x84DF
+ GL_ACTIVE_TEXTURE_ARB 0x84E0
+ GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
+ GL_MAX_TEXTURE_UNITS_ARB 0x84E2
+ void glActiveTextureARB (GLenum texture)
+ void glClientActiveTextureARB (GLenum texture)
+ void glMultiTexCoord1dARB (GLenum target, GLdouble s)
+ void glMultiTexCoord1dvARB (GLenum target, const GLdouble *v)
+ void glMultiTexCoord1fARB (GLenum target, GLfloat s)
+ void glMultiTexCoord1fvARB (GLenum target, const GLfloat *v)
+ void glMultiTexCoord1iARB (GLenum target, GLint s)
+ void glMultiTexCoord1ivARB (GLenum target, const GLint *v)
+ void glMultiTexCoord1sARB (GLenum target, GLshort s)
+ void glMultiTexCoord1svARB (GLenum target, const GLshort *v)
+ void glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t)
+ void glMultiTexCoord2dvARB (GLenum target, const GLdouble *v)
+ void glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t)
+ void glMultiTexCoord2fvARB (GLenum target, const GLfloat *v)
+ void glMultiTexCoord2iARB (GLenum target, GLint s, GLint t)
+ void glMultiTexCoord2ivARB (GLenum target, const GLint *v)
+ void glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t)
+ void glMultiTexCoord2svARB (GLenum target, const GLshort *v)
+ void glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r)
+ void glMultiTexCoord3dvARB (GLenum target, const GLdouble *v)
+ void glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r)
+ void glMultiTexCoord3fvARB (GLenum target, const GLfloat *v)
+ void glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r)
+ void glMultiTexCoord3ivARB (GLenum target, const GLint *v)
+ void glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r)
+ void glMultiTexCoord3svARB (GLenum target, const GLshort *v)
+ void glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
+ void glMultiTexCoord4dvARB (GLenum target, const GLdouble *v)
+ void glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+ void glMultiTexCoord4fvARB (GLenum target, const GLfloat *v)
+ void glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q)
+ void glMultiTexCoord4ivARB (GLenum target, const GLint *v)
+ void glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
+ void glMultiTexCoord4svARB (GLenum target, const GLshort *v)
diff --git a/glew/auto/extensions/gl/GL_ARB_occlusion_query b/glew/auto/extensions/gl/GL_ARB_occlusion_query
new file mode 100644
index 0000000..3f1f1d4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_occlusion_query
@@ -0,0 +1,17 @@
+GL_ARB_occlusion_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query.txt
+GL_ARB_occlusion_query
+
+ GL_QUERY_COUNTER_BITS_ARB 0x8864
+ GL_CURRENT_QUERY_ARB 0x8865
+ GL_QUERY_RESULT_ARB 0x8866
+ GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
+ GL_SAMPLES_PASSED_ARB 0x8914
+ void glBeginQueryARB (GLenum target, GLuint id)
+ void glDeleteQueriesARB (GLsizei n, const GLuint* ids)
+ void glEndQueryARB (GLenum target)
+ void glGenQueriesARB (GLsizei n, GLuint* ids)
+ void glGetQueryObjectivARB (GLuint id, GLenum pname, GLint* params)
+ void glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint* params)
+ void glGetQueryivARB (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsQueryARB (GLuint id)
diff --git a/glew/auto/extensions/gl/GL_ARB_occlusion_query2 b/glew/auto/extensions/gl/GL_ARB_occlusion_query2
new file mode 100644
index 0000000..605e0c1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_occlusion_query2
@@ -0,0 +1,5 @@
+GL_ARB_occlusion_query2
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query2.txt
+GL_ARB_occlusion_query2
+
+ GL_ANY_SAMPLES_PASSED 0x8C2F
diff --git a/glew/auto/extensions/gl/GL_ARB_parallel_shader_compile b/glew/auto/extensions/gl/GL_ARB_parallel_shader_compile
new file mode 100644
index 0000000..04124a3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_parallel_shader_compile
@@ -0,0 +1,7 @@
+GL_ARB_parallel_shader_compile
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_parallel_shader_compile.txt
+GL_ARB_parallel_shader_compile
+
+ GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
+ GL_COMPLETION_STATUS_ARB 0x91B1
+ void glMaxShaderCompilerThreadsARB (GLuint count)
diff --git a/glew/auto/extensions/gl/GL_ARB_pipeline_statistics_query b/glew/auto/extensions/gl/GL_ARB_pipeline_statistics_query
new file mode 100644
index 0000000..9db4e80
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_pipeline_statistics_query
@@ -0,0 +1,15 @@
+GL_ARB_pipeline_statistics_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pipeline_statistics_query.txt
+GL_ARB_pipeline_statistics_query
+
+ GL_VERTICES_SUBMITTED_ARB 0x82EE
+ GL_PRIMITIVES_SUBMITTED_ARB 0x82EF
+ GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0
+ GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1
+ GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2
+ GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3
+ GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4
+ GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5
+ GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6
+ GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7
+ GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
diff --git a/glew/auto/extensions/gl/GL_ARB_pixel_buffer_object b/glew/auto/extensions/gl/GL_ARB_pixel_buffer_object
new file mode 100644
index 0000000..89f18e8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_pixel_buffer_object
@@ -0,0 +1,8 @@
+GL_ARB_pixel_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pixel_buffer_object.txt
+GL_ARB_pixel_buffer_object
+
+ GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+ GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+ GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+ GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
diff --git a/glew/auto/extensions/gl/GL_ARB_point_parameters b/glew/auto/extensions/gl/GL_ARB_point_parameters
new file mode 100644
index 0000000..3f9ee60
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_point_parameters
@@ -0,0 +1,10 @@
+GL_ARB_point_parameters
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_point_parameters.txt
+GL_ARB_point_parameters
+
+ GL_POINT_SIZE_MIN_ARB 0x8126
+ GL_POINT_SIZE_MAX_ARB 0x8127
+ GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
+ GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+ void glPointParameterfARB (GLenum pname, GLfloat param)
+ void glPointParameterfvARB (GLenum pname, const GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_point_sprite b/glew/auto/extensions/gl/GL_ARB_point_sprite
new file mode 100644
index 0000000..214f29b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_point_sprite
@@ -0,0 +1,6 @@
+GL_ARB_point_sprite
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_point_sprite.txt
+GL_ARB_point_sprite
+
+ GL_POINT_SPRITE_ARB 0x8861
+ GL_COORD_REPLACE_ARB 0x8862
diff --git a/glew/auto/extensions/gl/GL_ARB_polygon_offset_clamp b/glew/auto/extensions/gl/GL_ARB_polygon_offset_clamp
new file mode 100644
index 0000000..d04e827
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_polygon_offset_clamp
@@ -0,0 +1,6 @@
+GL_ARB_polygon_offset_clamp
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_polygon_offset_clamp.txt
+GL_ARB_polygon_offset_clamp
+
+ GL_POLYGON_OFFSET_CLAMP 0x8E1B
+ void glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp)
diff --git a/glew/auto/extensions/gl/GL_ARB_post_depth_coverage b/glew/auto/extensions/gl/GL_ARB_post_depth_coverage
new file mode 100644
index 0000000..49a054c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_post_depth_coverage
@@ -0,0 +1,4 @@
+GL_ARB_post_depth_coverage
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_post_depth_coverage.txt
+GL_ARB_post_depth_coverage
+
diff --git a/glew/auto/extensions/gl/GL_ARB_program_interface_query b/glew/auto/extensions/gl/GL_ARB_program_interface_query
new file mode 100644
index 0000000..5baa676
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_program_interface_query
@@ -0,0 +1,57 @@
+GL_ARB_program_interface_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_program_interface_query.txt
+GL_ARB_program_interface_query
+
+ GL_UNIFORM 0x92E1
+ GL_UNIFORM_BLOCK 0x92E2
+ GL_PROGRAM_INPUT 0x92E3
+ GL_PROGRAM_OUTPUT 0x92E4
+ GL_BUFFER_VARIABLE 0x92E5
+ GL_SHADER_STORAGE_BLOCK 0x92E6
+ GL_IS_PER_PATCH 0x92E7
+ GL_VERTEX_SUBROUTINE 0x92E8
+ GL_TESS_CONTROL_SUBROUTINE 0x92E9
+ GL_TESS_EVALUATION_SUBROUTINE 0x92EA
+ GL_GEOMETRY_SUBROUTINE 0x92EB
+ GL_FRAGMENT_SUBROUTINE 0x92EC
+ GL_COMPUTE_SUBROUTINE 0x92ED
+ GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
+ GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
+ GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
+ GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
+ GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
+ GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
+ GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
+ GL_ACTIVE_RESOURCES 0x92F5
+ GL_MAX_NAME_LENGTH 0x92F6
+ GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
+ GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
+ GL_NAME_LENGTH 0x92F9
+ GL_TYPE 0x92FA
+ GL_ARRAY_SIZE 0x92FB
+ GL_OFFSET 0x92FC
+ GL_BLOCK_INDEX 0x92FD
+ GL_ARRAY_STRIDE 0x92FE
+ GL_MATRIX_STRIDE 0x92FF
+ GL_IS_ROW_MAJOR 0x9300
+ GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
+ GL_BUFFER_BINDING 0x9302
+ GL_BUFFER_DATA_SIZE 0x9303
+ GL_NUM_ACTIVE_VARIABLES 0x9304
+ GL_ACTIVE_VARIABLES 0x9305
+ GL_REFERENCED_BY_VERTEX_SHADER 0x9306
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
+ GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
+ GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
+ GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
+ GL_TOP_LEVEL_ARRAY_SIZE 0x930C
+ GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
+ GL_LOCATION 0x930E
+ GL_LOCATION_INDEX 0x930F
+ void glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint* params)
+ GLuint glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar* name)
+ GLint glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar* name)
+ GLint glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar* name)
+ void glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name)
+ void glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params)
diff --git a/glew/auto/extensions/gl/GL_ARB_provoking_vertex b/glew/auto/extensions/gl/GL_ARB_provoking_vertex
new file mode 100644
index 0000000..892c87c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_provoking_vertex
@@ -0,0 +1,9 @@
+GL_ARB_provoking_vertex
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_provoking_vertex.txt
+GL_ARB_provoking_vertex
+
+ GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
+ GL_FIRST_VERTEX_CONVENTION 0x8E4D
+ GL_LAST_VERTEX_CONVENTION 0x8E4E
+ GL_PROVOKING_VERTEX 0x8E4F
+ void glProvokingVertex (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_ARB_query_buffer_object b/glew/auto/extensions/gl/GL_ARB_query_buffer_object
new file mode 100644
index 0000000..f0dd16f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_query_buffer_object
@@ -0,0 +1,8 @@
+GL_ARB_query_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_query_buffer_object.txt
+GL_ARB_query_buffer_object
+
+ GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
+ GL_QUERY_BUFFER 0x9192
+ GL_QUERY_BUFFER_BINDING 0x9193
+ GL_QUERY_RESULT_NO_WAIT 0x9194
diff --git a/glew/auto/extensions/gl/GL_ARB_robust_buffer_access_behavior b/glew/auto/extensions/gl/GL_ARB_robust_buffer_access_behavior
new file mode 100644
index 0000000..c2e92b6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_robust_buffer_access_behavior
@@ -0,0 +1,4 @@
+GL_ARB_robust_buffer_access_behavior
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robust_buffer_access_behavior.txt
+GL_ARB_robust_buffer_access_behavior
+
diff --git a/glew/auto/extensions/gl/GL_ARB_robustness b/glew/auto/extensions/gl/GL_ARB_robustness
new file mode 100644
index 0000000..82d48d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_robustness
@@ -0,0 +1,31 @@
+GL_ARB_robustness
+http://www.opengl.org/registry/specs/ARB/robustness.txt
+GL_ARB_robustness
+
+ GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
+ GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+ GL_GUILTY_CONTEXT_RESET_ARB 0x8253
+ GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
+ GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
+ GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+ GL_NO_RESET_NOTIFICATION_ARB 0x8261
+ GLenum glGetGraphicsResetStatusARB (void)
+ void glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table)
+ void glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void* img)
+ void glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image)
+ void glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values)
+ void glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v)
+ void glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v)
+ void glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint* v)
+ void glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values)
+ void glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat* values)
+ void glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint* values)
+ void glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort* values)
+ void glGetnPolygonStippleARB (GLsizei bufSize, GLubyte* pattern)
+ void glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, void*column, void*span)
+ void glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img)
+ void glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble* params)
+ void glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+ void glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint* params)
+ void glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint* params)
+ void glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data)
diff --git a/glew/auto/extensions/gl/GL_ARB_robustness_application_isolation b/glew/auto/extensions/gl/GL_ARB_robustness_application_isolation
new file mode 100644
index 0000000..b7da8b0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_robustness_application_isolation
@@ -0,0 +1,4 @@
+GL_ARB_robustness_application_isolation
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robustness_application_isolation.txt
+GL_ARB_robustness_application_isolation
+
diff --git a/glew/auto/extensions/gl/GL_ARB_robustness_share_group_isolation b/glew/auto/extensions/gl/GL_ARB_robustness_share_group_isolation
new file mode 100644
index 0000000..6c22cef
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_robustness_share_group_isolation
@@ -0,0 +1,4 @@
+GL_ARB_robustness_share_group_isolation
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robustness_application_isolation.txt
+GL_ARB_robustness_share_group_isolation
+
diff --git a/glew/auto/extensions/gl/GL_ARB_sample_locations b/glew/auto/extensions/gl/GL_ARB_sample_locations
new file mode 100644
index 0000000..d8775f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sample_locations
@@ -0,0 +1,15 @@
+GL_ARB_sample_locations
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_locations.txt
+GL_ARB_sample_locations
+
+ GL_SAMPLE_LOCATION_ARB 0x8E50
+ GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D
+ GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E
+ GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341
+ GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342
+ GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343
+ void glEvaluateDepthValuesARB (void)
+ void glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat* v)
+ void glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)
diff --git a/glew/auto/extensions/gl/GL_ARB_sample_shading b/glew/auto/extensions/gl/GL_ARB_sample_shading
new file mode 100644
index 0000000..5b40d4b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sample_shading
@@ -0,0 +1,7 @@
+GL_ARB_sample_shading
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_shading.txt
+GL_ARB_sample_shading
+
+ GL_SAMPLE_SHADING_ARB 0x8C36
+ GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
+ void glMinSampleShadingARB (GLclampf value)
diff --git a/glew/auto/extensions/gl/GL_ARB_sampler_objects b/glew/auto/extensions/gl/GL_ARB_sampler_objects
new file mode 100644
index 0000000..f50b7a2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sampler_objects
@@ -0,0 +1,19 @@
+GL_ARB_sampler_objects
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sampler_objects.txt
+GL_ARB_sampler_objects
+
+ GL_SAMPLER_BINDING 0x8919
+ void glBindSampler (GLuint unit, GLuint sampler)
+ void glDeleteSamplers (GLsizei count, const GLuint * samplers)
+ void glGenSamplers (GLsizei count, GLuint* samplers)
+ void glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint* params)
+ void glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint* params)
+ void glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat* params)
+ void glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint* params)
+ GLboolean glIsSampler (GLuint sampler)
+ void glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint* params)
+ void glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint* params)
+ void glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param)
+ void glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat* params)
+ void glSamplerParameteri (GLuint sampler, GLenum pname, GLint param)
+ void glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_seamless_cube_map b/glew/auto/extensions/gl/GL_ARB_seamless_cube_map
new file mode 100644
index 0000000..015d7ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_seamless_cube_map
@@ -0,0 +1,5 @@
+GL_ARB_seamless_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cube_map.txt
+GL_ARB_seamless_cube_map
+
+ GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
diff --git a/glew/auto/extensions/gl/GL_ARB_seamless_cubemap_per_texture b/glew/auto/extensions/gl/GL_ARB_seamless_cubemap_per_texture
new file mode 100644
index 0000000..22372d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_seamless_cubemap_per_texture
@@ -0,0 +1,5 @@
+GL_ARB_seamless_cubemap_per_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cubemap_per_texture.txt
+GL_ARB_seamless_cubemap_per_texture
+
+ GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
diff --git a/glew/auto/extensions/gl/GL_ARB_separate_shader_objects b/glew/auto/extensions/gl/GL_ARB_separate_shader_objects
new file mode 100644
index 0000000..3d3d869
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_separate_shader_objects
@@ -0,0 +1,73 @@
+GL_ARB_separate_shader_objects
+http://www.opengl.org/registry/specs/ARB/separate_shader_objects.txt
+GL_ARB_separate_shader_objects
+
+ GL_VERTEX_SHADER_BIT 0x00000001
+ GL_FRAGMENT_SHADER_BIT 0x00000002
+ GL_GEOMETRY_SHADER_BIT 0x00000004
+ GL_TESS_CONTROL_SHADER_BIT 0x00000008
+ GL_TESS_EVALUATION_SHADER_BIT 0x00000010
+ GL_PROGRAM_SEPARABLE 0x8258
+ GL_ACTIVE_PROGRAM 0x8259
+ GL_PROGRAM_PIPELINE_BINDING 0x825A
+ GL_ALL_SHADER_BITS 0xFFFFFFFF
+ void glActiveShaderProgram (GLuint pipeline, GLuint program)
+ void glBindProgramPipeline (GLuint pipeline)
+ GLuint glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar * const * strings)
+ void glDeleteProgramPipelines (GLsizei n, const GLuint* pipelines)
+ void glGenProgramPipelines (GLsizei n, GLuint* pipelines)
+ void glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar *infoLog)
+ void glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint* params)
+ GLboolean glIsProgramPipeline (GLuint pipeline)
+ void glProgramUniform1d (GLuint program, GLint location, GLdouble x)
+ void glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
+ void glProgramUniform1f (GLuint program, GLint location, GLfloat x)
+ void glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform1i (GLuint program, GLint location, GLint x)
+ void glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform1ui (GLuint program, GLint location, GLuint x)
+ void glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform2d (GLuint program, GLint location, GLdouble x, GLdouble y)
+ void glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
+ void glProgramUniform2f (GLuint program, GLint location, GLfloat x, GLfloat y)
+ void glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform2i (GLuint program, GLint location, GLint x, GLint y)
+ void glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform2ui (GLuint program, GLint location, GLuint x, GLuint y)
+ void glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform3d (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z)
+ void glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
+ void glProgramUniform3f (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z)
+ void glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform3i (GLuint program, GLint location, GLint x, GLint y, GLint z)
+ void glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform3ui (GLuint program, GLint location, GLuint x, GLuint y, GLuint z)
+ void glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform4d (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
+ void glProgramUniform4f (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform4i (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w)
+ void glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform4ui (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
+ void glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program)
+ void glValidateProgramPipeline (GLuint pipeline)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_atomic_counter_ops b/glew/auto/extensions/gl/GL_ARB_shader_atomic_counter_ops
new file mode 100644
index 0000000..7a95862
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_atomic_counter_ops
@@ -0,0 +1,4 @@
+GL_ARB_shader_atomic_counter_ops
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counter_ops.txt
+GL_ARB_shader_atomic_counter_ops
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_atomic_counters b/glew/auto/extensions/gl/GL_ARB_shader_atomic_counters
new file mode 100644
index 0000000..ef8b9bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_atomic_counters
@@ -0,0 +1,34 @@
+GL_ARB_shader_atomic_counters
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counters.txt
+GL_ARB_shader_atomic_counters
+
+ GL_ATOMIC_COUNTER_BUFFER 0x92C0
+ GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
+ GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
+ GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
+ GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
+ GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
+ GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
+ GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
+ GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
+ GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
+ GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
+ GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
+ GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
+ GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
+ GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
+ GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
+ void glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_ballot b/glew/auto/extensions/gl/GL_ARB_shader_ballot
new file mode 100644
index 0000000..6cb763b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_ballot
@@ -0,0 +1,4 @@
+GL_ARB_shader_ballot
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_ballot.txt
+GL_ARB_shader_ballot
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_bit_encoding b/glew/auto/extensions/gl/GL_ARB_shader_bit_encoding
new file mode 100644
index 0000000..44210a9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_bit_encoding
@@ -0,0 +1,4 @@
+GL_ARB_shader_bit_encoding
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_bit_encoding.txt
+GL_ARB_shader_bit_encoding
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_clock b/glew/auto/extensions/gl/GL_ARB_shader_clock
new file mode 100644
index 0000000..db57161
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_clock
@@ -0,0 +1,4 @@
+GL_ARB_shader_clock
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_clock.txt
+GL_ARB_shader_clock
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_draw_parameters b/glew/auto/extensions/gl/GL_ARB_shader_draw_parameters
new file mode 100644
index 0000000..d92a180
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_draw_parameters
@@ -0,0 +1,4 @@
+GL_ARB_shader_draw_parameters
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_draw_parameters.txt
+GL_ARB_shader_draw_parameters
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_group_vote b/glew/auto/extensions/gl/GL_ARB_shader_group_vote
new file mode 100644
index 0000000..0a0a984
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_group_vote
@@ -0,0 +1,4 @@
+GL_ARB_shader_group_vote
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_group_vote.txt
+GL_ARB_shader_group_vote
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_image_load_store b/glew/auto/extensions/gl/GL_ARB_shader_image_load_store
new file mode 100644
index 0000000..38e6bf5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_image_load_store
@@ -0,0 +1,70 @@
+GL_ARB_shader_image_load_store
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_load_store.txt
+GL_ARB_shader_image_load_store
+
+ GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
+ GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
+ GL_UNIFORM_BARRIER_BIT 0x00000004
+ GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
+ GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
+ GL_COMMAND_BARRIER_BIT 0x00000040
+ GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
+ GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
+ GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
+ GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
+ GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
+ GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
+ GL_MAX_IMAGE_UNITS 0x8F38
+ GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
+ GL_IMAGE_BINDING_NAME 0x8F3A
+ GL_IMAGE_BINDING_LEVEL 0x8F3B
+ GL_IMAGE_BINDING_LAYERED 0x8F3C
+ GL_IMAGE_BINDING_LAYER 0x8F3D
+ GL_IMAGE_BINDING_ACCESS 0x8F3E
+ GL_IMAGE_1D 0x904C
+ GL_IMAGE_2D 0x904D
+ GL_IMAGE_3D 0x904E
+ GL_IMAGE_2D_RECT 0x904F
+ GL_IMAGE_CUBE 0x9050
+ GL_IMAGE_BUFFER 0x9051
+ GL_IMAGE_1D_ARRAY 0x9052
+ GL_IMAGE_2D_ARRAY 0x9053
+ GL_IMAGE_CUBE_MAP_ARRAY 0x9054
+ GL_IMAGE_2D_MULTISAMPLE 0x9055
+ GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
+ GL_INT_IMAGE_1D 0x9057
+ GL_INT_IMAGE_2D 0x9058
+ GL_INT_IMAGE_3D 0x9059
+ GL_INT_IMAGE_2D_RECT 0x905A
+ GL_INT_IMAGE_CUBE 0x905B
+ GL_INT_IMAGE_BUFFER 0x905C
+ GL_INT_IMAGE_1D_ARRAY 0x905D
+ GL_INT_IMAGE_2D_ARRAY 0x905E
+ GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
+ GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
+ GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
+ GL_UNSIGNED_INT_IMAGE_1D 0x9062
+ GL_UNSIGNED_INT_IMAGE_2D 0x9063
+ GL_UNSIGNED_INT_IMAGE_3D 0x9064
+ GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
+ GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
+ GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
+ GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
+ GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
+ GL_MAX_IMAGE_SAMPLES 0x906D
+ GL_IMAGE_BINDING_FORMAT 0x906E
+ GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
+ GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
+ GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
+ GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
+ GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
+ GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
+ GL_ALL_BARRIER_BITS 0xFFFFFFFF
+ void glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
+ void glMemoryBarrier (GLbitfield barriers)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_image_size b/glew/auto/extensions/gl/GL_ARB_shader_image_size
new file mode 100644
index 0000000..3f2a92f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_image_size
@@ -0,0 +1,4 @@
+GL_ARB_shader_image_size
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_size.txt
+GL_ARB_shader_image_size
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_objects b/glew/auto/extensions/gl/GL_ARB_shader_objects
new file mode 100644
index 0000000..e384e81
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_objects
@@ -0,0 +1,79 @@
+GL_ARB_shader_objects
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_objects.txt
+GL_ARB_shader_objects
+
+ GL_PROGRAM_OBJECT_ARB 0x8B40
+ GL_SHADER_OBJECT_ARB 0x8B48
+ GL_OBJECT_TYPE_ARB 0x8B4E
+ GL_OBJECT_SUBTYPE_ARB 0x8B4F
+ GL_FLOAT_VEC2_ARB 0x8B50
+ GL_FLOAT_VEC3_ARB 0x8B51
+ GL_FLOAT_VEC4_ARB 0x8B52
+ GL_INT_VEC2_ARB 0x8B53
+ GL_INT_VEC3_ARB 0x8B54
+ GL_INT_VEC4_ARB 0x8B55
+ GL_BOOL_ARB 0x8B56
+ GL_BOOL_VEC2_ARB 0x8B57
+ GL_BOOL_VEC3_ARB 0x8B58
+ GL_BOOL_VEC4_ARB 0x8B59
+ GL_FLOAT_MAT2_ARB 0x8B5A
+ GL_FLOAT_MAT3_ARB 0x8B5B
+ GL_FLOAT_MAT4_ARB 0x8B5C
+ GL_SAMPLER_1D_ARB 0x8B5D
+ GL_SAMPLER_2D_ARB 0x8B5E
+ GL_SAMPLER_3D_ARB 0x8B5F
+ GL_SAMPLER_CUBE_ARB 0x8B60
+ GL_SAMPLER_1D_SHADOW_ARB 0x8B61
+ GL_SAMPLER_2D_SHADOW_ARB 0x8B62
+ GL_SAMPLER_2D_RECT_ARB 0x8B63
+ GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+ GL_OBJECT_DELETE_STATUS_ARB 0x8B80
+ GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
+ GL_OBJECT_LINK_STATUS_ARB 0x8B82
+ GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
+ GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
+ GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
+ GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
+ GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
+ GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
+ void glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj)
+ void glCompileShaderARB (GLhandleARB shaderObj)
+ GLhandleARB glCreateProgramObjectARB (void)
+ GLhandleARB glCreateShaderObjectARB (GLenum shaderType)
+ void glDeleteObjectARB (GLhandleARB obj)
+ void glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj)
+ void glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name)
+ void glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj)
+ GLhandleARB glGetHandleARB (GLenum pname)
+ void glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog)
+ void glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat* params)
+ void glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint* params)
+ void glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source)
+ GLint glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB* name)
+ void glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat* params)
+ void glGetUniformivARB (GLhandleARB programObj, GLint location, GLint* params)
+ void glLinkProgramARB (GLhandleARB programObj)
+ void glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length)
+ void glUniform1fARB (GLint location, GLfloat v0)
+ void glUniform1fvARB (GLint location, GLsizei count, const GLfloat* value)
+ void glUniform1iARB (GLint location, GLint v0)
+ void glUniform1ivARB (GLint location, GLsizei count, const GLint* value)
+ void glUniform2fARB (GLint location, GLfloat v0, GLfloat v1)
+ void glUniform2fvARB (GLint location, GLsizei count, const GLfloat* value)
+ void glUniform2iARB (GLint location, GLint v0, GLint v1)
+ void glUniform2ivARB (GLint location, GLsizei count, const GLint* value)
+ void glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
+ void glUniform3fvARB (GLint location, GLsizei count, const GLfloat* value)
+ void glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2)
+ void glUniform3ivARB (GLint location, GLsizei count, const GLint* value)
+ void glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
+ void glUniform4fvARB (GLint location, GLsizei count, const GLfloat* value)
+ void glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
+ void glUniform4ivARB (GLint location, GLsizei count, const GLint* value)
+ void glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUseProgramObjectARB (GLhandleARB programObj)
+ void glValidateProgramARB (GLhandleARB programObj)
+ typedef char GLcharARB
+ typedef unsigned int GLhandleARB
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_precision b/glew/auto/extensions/gl/GL_ARB_shader_precision
new file mode 100644
index 0000000..fb4b8e0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_precision
@@ -0,0 +1,4 @@
+GL_ARB_shader_precision
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_precision.txt
+GL_ARB_shader_precision
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_stencil_export b/glew/auto/extensions/gl/GL_ARB_shader_stencil_export
new file mode 100644
index 0000000..3abadc0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_stencil_export
@@ -0,0 +1,4 @@
+GL_ARB_shader_stencil_export
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_stencil_export.txt
+GL_ARB_shader_stencil_export
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_storage_buffer_object b/glew/auto/extensions/gl/GL_ARB_shader_storage_buffer_object
new file mode 100644
index 0000000..9c8be2e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_storage_buffer_object
@@ -0,0 +1,21 @@
+GL_ARB_shader_storage_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_storage_buffer_object.txt
+GL_ARB_shader_storage_buffer_object
+
+ GL_SHADER_STORAGE_BARRIER_BIT 0x2000
+ GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
+ GL_SHADER_STORAGE_BUFFER 0x90D2
+ GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
+ GL_SHADER_STORAGE_BUFFER_START 0x90D4
+ GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
+ GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
+ GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
+ GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
+ GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
+ void glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_subroutine b/glew/auto/extensions/gl/GL_ARB_shader_subroutine
new file mode 100644
index 0000000..485d8f0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_subroutine
@@ -0,0 +1,21 @@
+GL_ARB_shader_subroutine
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_subroutine.txt
+GL_ARB_shader_subroutine
+
+ GL_ACTIVE_SUBROUTINES 0x8DE5
+ GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+ GL_MAX_SUBROUTINES 0x8DE7
+ GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+ GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+ GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+ GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+ GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+ GL_COMPATIBLE_SUBROUTINES 0x8E4B
+ void glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name)
+ void glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name)
+ void glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values)
+ void glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint* values)
+ GLuint glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar* name)
+ GLint glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar* name)
+ void glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint* params)
+ void glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint* indices)
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_texture_image_samples b/glew/auto/extensions/gl/GL_ARB_shader_texture_image_samples
new file mode 100644
index 0000000..5da958e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_texture_image_samples
@@ -0,0 +1,4 @@
+GL_ARB_shader_texture_image_samples
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_image_samples.txt
+GL_ARB_shader_texture_image_samples
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_texture_lod b/glew/auto/extensions/gl/GL_ARB_shader_texture_lod
new file mode 100644
index 0000000..178e399
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_texture_lod
@@ -0,0 +1,4 @@
+GL_ARB_shader_texture_lod
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_lod.txt
+GL_ARB_shader_texture_lod
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shader_viewport_layer_array b/glew/auto/extensions/gl/GL_ARB_shader_viewport_layer_array
new file mode 100644
index 0000000..4787e81
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shader_viewport_layer_array
@@ -0,0 +1,4 @@
+GL_ARB_shader_viewport_layer_array
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_viewport_layer_array.txt
+GL_ARB_shader_viewport_layer_array
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shading_language_100 b/glew/auto/extensions/gl/GL_ARB_shading_language_100
new file mode 100644
index 0000000..0f5e2b4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shading_language_100
@@ -0,0 +1,5 @@
+GL_ARB_shading_language_100
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_100.txt
+GL_ARB_shading_language_100
+
+ GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
diff --git a/glew/auto/extensions/gl/GL_ARB_shading_language_420pack b/glew/auto/extensions/gl/GL_ARB_shading_language_420pack
new file mode 100644
index 0000000..ed52b84
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shading_language_420pack
@@ -0,0 +1,4 @@
+GL_ARB_shading_language_420pack
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_420pack.txt
+GL_ARB_shading_language_420pack
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shading_language_include b/glew/auto/extensions/gl/GL_ARB_shading_language_include
new file mode 100644
index 0000000..29576ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shading_language_include
@@ -0,0 +1,13 @@
+GL_ARB_shading_language_include
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_include.txt
+GL_ARB_shading_language_include
+
+ GL_SHADER_INCLUDE_ARB 0x8DAE
+ GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+ GL_NAMED_STRING_TYPE_ARB 0x8DEA
+ void glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar* const *path, const GLint *length)
+ void glDeleteNamedStringARB (GLint namelen, const GLchar* name)
+ void glGetNamedStringARB (GLint namelen, const GLchar* name, GLsizei bufSize, GLint *stringlen, GLchar *string)
+ void glGetNamedStringivARB (GLint namelen, const GLchar* name, GLenum pname, GLint *params)
+ GLboolean glIsNamedStringARB (GLint namelen, const GLchar* name)
+ void glNamedStringARB (GLenum type, GLint namelen, const GLchar* name, GLint stringlen, const GLchar *string)
diff --git a/glew/auto/extensions/gl/GL_ARB_shading_language_packing b/glew/auto/extensions/gl/GL_ARB_shading_language_packing
new file mode 100644
index 0000000..f84c68b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shading_language_packing
@@ -0,0 +1,4 @@
+GL_ARB_shading_language_packing
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_packing.txt
+GL_ARB_shading_language_packing
+
diff --git a/glew/auto/extensions/gl/GL_ARB_shadow b/glew/auto/extensions/gl/GL_ARB_shadow
new file mode 100644
index 0000000..f606cba
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shadow
@@ -0,0 +1,7 @@
+GL_ARB_shadow
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shadow.txt
+GL_ARB_shadow
+
+ GL_TEXTURE_COMPARE_MODE_ARB 0x884C
+ GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
+ GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
diff --git a/glew/auto/extensions/gl/GL_ARB_shadow_ambient b/glew/auto/extensions/gl/GL_ARB_shadow_ambient
new file mode 100644
index 0000000..3ddd334
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_shadow_ambient
@@ -0,0 +1,5 @@
+GL_ARB_shadow_ambient
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shadow_ambient.txt
+GL_ARB_shadow_ambient
+
+ GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
diff --git a/glew/auto/extensions/gl/GL_ARB_sparse_buffer b/glew/auto/extensions/gl/GL_ARB_sparse_buffer
new file mode 100644
index 0000000..398cf8b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sparse_buffer
@@ -0,0 +1,7 @@
+GL_ARB_sparse_buffer
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_buffer.txt
+GL_ARB_sparse_buffer
+
+ GL_SPARSE_STORAGE_BIT_ARB 0x0400
+ GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
+ void glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit)
diff --git a/glew/auto/extensions/gl/GL_ARB_sparse_texture b/glew/auto/extensions/gl/GL_ARB_sparse_texture
new file mode 100644
index 0000000..ccd96ce
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sparse_texture
@@ -0,0 +1,16 @@
+GL_ARB_sparse_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture.txt
+GL_ARB_sparse_texture
+
+ GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
+ GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
+ GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
+ GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
+ GL_TEXTURE_SPARSE_ARB 0x91A6
+ GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
+ GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
+ GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
+ GL_NUM_SPARSE_LEVELS_ARB 0x91AA
+ void glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
diff --git a/glew/auto/extensions/gl/GL_ARB_sparse_texture2 b/glew/auto/extensions/gl/GL_ARB_sparse_texture2
new file mode 100644
index 0000000..ceedfb2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sparse_texture2
@@ -0,0 +1,4 @@
+GL_ARB_sparse_texture2
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture2.txt
+GL_ARB_sparse_texture2
+
diff --git a/glew/auto/extensions/gl/GL_ARB_sparse_texture_clamp b/glew/auto/extensions/gl/GL_ARB_sparse_texture_clamp
new file mode 100644
index 0000000..1bf148e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sparse_texture_clamp
@@ -0,0 +1,4 @@
+GL_ARB_sparse_texture_clamp
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture_clamp.txt
+GL_ARB_sparse_texture_clamp
+
diff --git a/glew/auto/extensions/gl/GL_ARB_spirv_extensions b/glew/auto/extensions/gl/GL_ARB_spirv_extensions
new file mode 100644
index 0000000..7cdedd6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_spirv_extensions
@@ -0,0 +1,6 @@
+GL_ARB_spirv_extensions
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_spirv_extensions.txt
+GL_ARB_spirv_extensions
+
+ GL_SPIR_V_EXTENSIONS 0x9553
+ GL_NUM_SPIR_V_EXTENSIONS 0x9554
diff --git a/glew/auto/extensions/gl/GL_ARB_stencil_texturing b/glew/auto/extensions/gl/GL_ARB_stencil_texturing
new file mode 100644
index 0000000..4821ad3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_stencil_texturing
@@ -0,0 +1,5 @@
+GL_ARB_stencil_texturing
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_stencil_texturing.txt
+GL_ARB_stencil_texturing
+
+ GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
diff --git a/glew/auto/extensions/gl/GL_ARB_sync b/glew/auto/extensions/gl/GL_ARB_sync
new file mode 100644
index 0000000..2131558
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_sync
@@ -0,0 +1,26 @@
+GL_ARB_sync
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sync.txt
+GL_ARB_sync
+
+ GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
+ GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
+ GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
+ GL_OBJECT_TYPE 0x9112
+ GL_SYNC_CONDITION 0x9113
+ GL_SYNC_STATUS 0x9114
+ GL_SYNC_FLAGS 0x9115
+ GL_SYNC_FENCE 0x9116
+ GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
+ GL_UNSIGNALED 0x9118
+ GL_SIGNALED 0x9119
+ GL_ALREADY_SIGNALED 0x911A
+ GL_TIMEOUT_EXPIRED 0x911B
+ GL_CONDITION_SATISFIED 0x911C
+ GL_WAIT_FAILED 0x911D
+ GLenum glClientWaitSync (GLsync GLsync,GLbitfield flags,GLuint64 timeout)
+ void glDeleteSync (GLsync GLsync)
+ GLsync glFenceSync (GLenum condition,GLbitfield flags)
+ void glGetInteger64v (GLenum pname, GLint64* params)
+ void glGetSynciv (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values)
+ GLboolean glIsSync (GLsync GLsync)
+ void glWaitSync (GLsync GLsync,GLbitfield flags,GLuint64 timeout)
diff --git a/glew/auto/extensions/gl/GL_ARB_tessellation_shader b/glew/auto/extensions/gl/GL_ARB_tessellation_shader
new file mode 100644
index 0000000..fb4f525
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_tessellation_shader
@@ -0,0 +1,38 @@
+GL_ARB_tessellation_shader
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_tessellation_shader.txt
+GL_ARB_tessellation_shader
+
+ GL_PATCHES 0xE
+ GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+ GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+ GL_PATCH_VERTICES 0x8E72
+ GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
+ GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
+ GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
+ GL_TESS_GEN_MODE 0x8E76
+ GL_TESS_GEN_SPACING 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER 0x8E78
+ GL_TESS_GEN_POINT_MODE 0x8E79
+ GL_ISOLINES 0x8E7A
+ GL_FRACTIONAL_ODD 0x8E7B
+ GL_FRACTIONAL_EVEN 0x8E7C
+ GL_MAX_PATCH_VERTICES 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+ GL_TESS_EVALUATION_SHADER 0x8E87
+ GL_TESS_CONTROL_SHADER 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+ void glPatchParameterfv (GLenum pname, const GLfloat* values)
+ void glPatchParameteri (GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_barrier b/glew/auto/extensions/gl/GL_ARB_texture_barrier
new file mode 100644
index 0000000..65c7e96
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_barrier
@@ -0,0 +1,5 @@
+GL_ARB_texture_barrier
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_barrier.txt
+GL_ARB_texture_barrier
+
+ void glTextureBarrier (void)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_border_clamp b/glew/auto/extensions/gl/GL_ARB_texture_border_clamp
new file mode 100644
index 0000000..da64b38
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_border_clamp
@@ -0,0 +1,5 @@
+GL_ARB_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_border_clamp.txt
+GL_ARB_texture_border_clamp
+
+ GL_CLAMP_TO_BORDER_ARB 0x812D
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_buffer_object b/glew/auto/extensions/gl/GL_ARB_texture_buffer_object
new file mode 100644
index 0000000..0a1da59
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_buffer_object
@@ -0,0 +1,10 @@
+GL_ARB_texture_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object.txt
+GL_ARB_texture_buffer_object
+
+ GL_TEXTURE_BUFFER_ARB 0x8C2A
+ GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
+ GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
+ GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
+ void glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_buffer_object_rgb32 b/glew/auto/extensions/gl/GL_ARB_texture_buffer_object_rgb32
new file mode 100644
index 0000000..572c7e0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_buffer_object_rgb32
@@ -0,0 +1,4 @@
+GL_ARB_texture_buffer_object_rgb32
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object_rgb32.txt
+GL_ARB_texture_buffer_object_rgb32
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_buffer_range b/glew/auto/extensions/gl/GL_ARB_texture_buffer_range
new file mode 100644
index 0000000..16fad7f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_buffer_range
@@ -0,0 +1,9 @@
+GL_ARB_texture_buffer_range
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_range.txt
+GL_ARB_texture_buffer_range
+
+ GL_TEXTURE_BUFFER_OFFSET 0x919D
+ GL_TEXTURE_BUFFER_SIZE 0x919E
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
+ void glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_compression b/glew/auto/extensions/gl/GL_ARB_texture_compression
new file mode 100644
index 0000000..d99614e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_compression
@@ -0,0 +1,22 @@
+GL_ARB_texture_compression
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression.txt
+GL_ARB_texture_compression
+
+ GL_COMPRESSED_ALPHA_ARB 0x84E9
+ GL_COMPRESSED_LUMINANCE_ARB 0x84EA
+ GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
+ GL_COMPRESSED_INTENSITY_ARB 0x84EC
+ GL_COMPRESSED_RGB_ARB 0x84ED
+ GL_COMPRESSED_RGBA_ARB 0x84EE
+ GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
+ GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
+ GL_TEXTURE_COMPRESSED_ARB 0x86A1
+ GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
+ GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
+ void glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glGetCompressedTexImageARB (GLenum target, GLint lod, void *img)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_compression_bptc b/glew/auto/extensions/gl/GL_ARB_texture_compression_bptc
new file mode 100644
index 0000000..165e712
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_compression_bptc
@@ -0,0 +1,8 @@
+GL_ARB_texture_compression_bptc
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_bptc.txt
+GL_ARB_texture_compression_bptc
+
+ GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+ GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+ GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+ GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_compression_rgtc b/glew/auto/extensions/gl/GL_ARB_texture_compression_rgtc
new file mode 100644
index 0000000..2ae6f71
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_compression_rgtc
@@ -0,0 +1,8 @@
+GL_ARB_texture_compression_rgtc
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_rgtc.txt
+GL_ARB_texture_compression_rgtc
+
+ GL_COMPRESSED_RED_RGTC1 0x8DBB
+ GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
+ GL_COMPRESSED_RG_RGTC2 0x8DBD
+ GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_cube_map b/glew/auto/extensions/gl/GL_ARB_texture_cube_map
new file mode 100644
index 0000000..ddac875
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_cube_map
@@ -0,0 +1,16 @@
+GL_ARB_texture_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map.txt
+GL_ARB_texture_cube_map
+
+ GL_NORMAL_MAP_ARB 0x8511
+ GL_REFLECTION_MAP_ARB 0x8512
+ GL_TEXTURE_CUBE_MAP_ARB 0x8513
+ GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
+ GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_cube_map_array b/glew/auto/extensions/gl/GL_ARB_texture_cube_map_array
new file mode 100644
index 0000000..408257e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_cube_map_array
@@ -0,0 +1,11 @@
+GL_ARB_texture_cube_map_array
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map_array.txt
+GL_ARB_texture_cube_map_array
+
+ GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
+ GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
+ GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_env_add b/glew/auto/extensions/gl/GL_ARB_texture_env_add
new file mode 100644
index 0000000..67c8e86
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_env_add
@@ -0,0 +1,4 @@
+GL_ARB_texture_env_add
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_add.txt
+GL_ARB_texture_env_add
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_env_combine b/glew/auto/extensions/gl/GL_ARB_texture_env_combine
new file mode 100644
index 0000000..d253677
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_env_combine
@@ -0,0 +1,26 @@
+GL_ARB_texture_env_combine
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_combine.txt
+GL_ARB_texture_env_combine
+
+ GL_SUBTRACT_ARB 0x84E7
+ GL_COMBINE_ARB 0x8570
+ GL_COMBINE_RGB_ARB 0x8571
+ GL_COMBINE_ALPHA_ARB 0x8572
+ GL_RGB_SCALE_ARB 0x8573
+ GL_ADD_SIGNED_ARB 0x8574
+ GL_INTERPOLATE_ARB 0x8575
+ GL_CONSTANT_ARB 0x8576
+ GL_PRIMARY_COLOR_ARB 0x8577
+ GL_PREVIOUS_ARB 0x8578
+ GL_SOURCE0_RGB_ARB 0x8580
+ GL_SOURCE1_RGB_ARB 0x8581
+ GL_SOURCE2_RGB_ARB 0x8582
+ GL_SOURCE0_ALPHA_ARB 0x8588
+ GL_SOURCE1_ALPHA_ARB 0x8589
+ GL_SOURCE2_ALPHA_ARB 0x858A
+ GL_OPERAND0_RGB_ARB 0x8590
+ GL_OPERAND1_RGB_ARB 0x8591
+ GL_OPERAND2_RGB_ARB 0x8592
+ GL_OPERAND0_ALPHA_ARB 0x8598
+ GL_OPERAND1_ALPHA_ARB 0x8599
+ GL_OPERAND2_ALPHA_ARB 0x859A
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_env_crossbar b/glew/auto/extensions/gl/GL_ARB_texture_env_crossbar
new file mode 100644
index 0000000..3447fcb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_env_crossbar
@@ -0,0 +1,4 @@
+GL_ARB_texture_env_crossbar
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_crossbar.txt
+GL_ARB_texture_env_crossbar
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_env_dot3 b/glew/auto/extensions/gl/GL_ARB_texture_env_dot3
new file mode 100644
index 0000000..7dfd12d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_env_dot3
@@ -0,0 +1,6 @@
+GL_ARB_texture_env_dot3
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_dot3.txt
+GL_ARB_texture_env_dot3
+
+ GL_DOT3_RGB_ARB 0x86AE
+ GL_DOT3_RGBA_ARB 0x86AF
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_filter_anisotropic b/glew/auto/extensions/gl/GL_ARB_texture_filter_anisotropic
new file mode 100644
index 0000000..250b1cd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_filter_anisotropic
@@ -0,0 +1,6 @@
+GL_ARB_texture_filter_anisotropic
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_filter_anisotropic.txt
+GL_ARB_texture_filter_anisotropic
+
+ GL_TEXTURE_MAX_ANISOTROPY 0x84FE
+ GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_filter_minmax b/glew/auto/extensions/gl/GL_ARB_texture_filter_minmax
new file mode 100644
index 0000000..bb57001
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_filter_minmax
@@ -0,0 +1,6 @@
+GL_ARB_texture_filter_minmax
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_filter_minmax.txt
+GL_ARB_texture_filter_minmax
+
+ GL_TEXTURE_REDUCTION_MODE_ARB 0x9366
+ GL_WEIGHTED_AVERAGE_ARB 0x9367
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_float b/glew/auto/extensions/gl/GL_ARB_texture_float
new file mode 100644
index 0000000..548a547
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_float
@@ -0,0 +1,24 @@
+GL_ARB_texture_float
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_float.txt
+GL_ARB_texture_float
+
+ GL_RGBA32F_ARB 0x8814
+ GL_RGB32F_ARB 0x8815
+ GL_ALPHA32F_ARB 0x8816
+ GL_INTENSITY32F_ARB 0x8817
+ GL_LUMINANCE32F_ARB 0x8818
+ GL_LUMINANCE_ALPHA32F_ARB 0x8819
+ GL_RGBA16F_ARB 0x881A
+ GL_RGB16F_ARB 0x881B
+ GL_ALPHA16F_ARB 0x881C
+ GL_INTENSITY16F_ARB 0x881D
+ GL_LUMINANCE16F_ARB 0x881E
+ GL_LUMINANCE_ALPHA16F_ARB 0x881F
+ GL_TEXTURE_RED_TYPE_ARB 0x8C10
+ GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
+ GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
+ GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
+ GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
+ GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
+ GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
+ GL_UNSIGNED_NORMALIZED_ARB 0x8C17
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_gather b/glew/auto/extensions/gl/GL_ARB_texture_gather
new file mode 100644
index 0000000..fc09414
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_gather
@@ -0,0 +1,7 @@
+GL_ARB_texture_gather
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_gather.txt
+GL_ARB_texture_gather
+
+ GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+ GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
+ GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_mirror_clamp_to_edge b/glew/auto/extensions/gl/GL_ARB_texture_mirror_clamp_to_edge
new file mode 100644
index 0000000..31d7343
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_mirror_clamp_to_edge
@@ -0,0 +1,5 @@
+GL_ARB_texture_mirror_clamp_to_edge
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirror_clamp_to_edge.txt
+GL_ARB_texture_mirror_clamp_to_edge
+
+ GL_MIRROR_CLAMP_TO_EDGE 0x8743
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_mirrored_repeat b/glew/auto/extensions/gl/GL_ARB_texture_mirrored_repeat
new file mode 100644
index 0000000..206a019
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_mirrored_repeat
@@ -0,0 +1,5 @@
+GL_ARB_texture_mirrored_repeat
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirrored_repeat.txt
+GL_ARB_texture_mirrored_repeat
+
+ GL_MIRRORED_REPEAT_ARB 0x8370
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_multisample b/glew/auto/extensions/gl/GL_ARB_texture_multisample
new file mode 100644
index 0000000..5ce8aae
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_multisample
@@ -0,0 +1,29 @@
+GL_ARB_texture_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_multisample.txt
+GL_ARB_texture_multisample
+
+ GL_SAMPLE_POSITION 0x8E50
+ GL_SAMPLE_MASK 0x8E51
+ GL_SAMPLE_MASK_VALUE 0x8E52
+ GL_MAX_SAMPLE_MASK_WORDS 0x8E59
+ GL_TEXTURE_2D_MULTISAMPLE 0x9100
+ GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
+ GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
+ GL_TEXTURE_SAMPLES 0x9106
+ GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
+ GL_SAMPLER_2D_MULTISAMPLE 0x9108
+ GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
+ GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
+ GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
+ GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
+ GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
+ GL_MAX_INTEGER_SAMPLES 0x9110
+ void glGetMultisamplefv (GLenum pname, GLuint index, GLfloat* val)
+ void glSampleMaski (GLuint index, GLbitfield mask)
+ void glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
+ void glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_non_power_of_two b/glew/auto/extensions/gl/GL_ARB_texture_non_power_of_two
new file mode 100644
index 0000000..a4a135d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_non_power_of_two
@@ -0,0 +1,4 @@
+GL_ARB_texture_non_power_of_two
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_non_power_of_two.txt
+GL_ARB_texture_non_power_of_two
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_query_levels b/glew/auto/extensions/gl/GL_ARB_texture_query_levels
new file mode 100644
index 0000000..e0f29ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_query_levels
@@ -0,0 +1,4 @@
+GL_ARB_texture_query_levels
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_levels.txt
+GL_ARB_texture_query_levels
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_query_lod b/glew/auto/extensions/gl/GL_ARB_texture_query_lod
new file mode 100644
index 0000000..1116c36
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_query_lod
@@ -0,0 +1,4 @@
+GL_ARB_texture_query_lod
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_lod.txt
+GL_ARB_texture_query_lod
+
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_rectangle b/glew/auto/extensions/gl/GL_ARB_texture_rectangle
new file mode 100644
index 0000000..102d72c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_rectangle
@@ -0,0 +1,10 @@
+GL_ARB_texture_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rectangle.txt
+GL_ARB_texture_rectangle
+
+ GL_TEXTURE_RECTANGLE_ARB 0x84F5
+ GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+ GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
+ GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
+ GL_SAMPLER_2D_RECT_ARB 0x8B63
+ GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_rg b/glew/auto/extensions/gl/GL_ARB_texture_rg
new file mode 100644
index 0000000..474690c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_rg
@@ -0,0 +1,28 @@
+GL_ARB_texture_rg
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rg.txt
+GL_ARB_texture_rg
+
+ GL_COMPRESSED_RED 0x8225
+ GL_COMPRESSED_RG 0x8226
+ GL_RG 0x8227
+ GL_RG_INTEGER 0x8228
+ GL_R8 0x8229
+ GL_R16 0x822A
+ GL_RG8 0x822B
+ GL_RG16 0x822C
+ GL_R16F 0x822D
+ GL_R32F 0x822E
+ GL_RG16F 0x822F
+ GL_RG32F 0x8230
+ GL_R8I 0x8231
+ GL_R8UI 0x8232
+ GL_R16I 0x8233
+ GL_R16UI 0x8234
+ GL_R32I 0x8235
+ GL_R32UI 0x8236
+ GL_RG8I 0x8237
+ GL_RG8UI 0x8238
+ GL_RG16I 0x8239
+ GL_RG16UI 0x823A
+ GL_RG32I 0x823B
+ GL_RG32UI 0x823C
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_rgb10_a2ui b/glew/auto/extensions/gl/GL_ARB_texture_rgb10_a2ui
new file mode 100644
index 0000000..0fb67a9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_rgb10_a2ui
@@ -0,0 +1,5 @@
+GL_ARB_texture_rgb10_a2ui
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rgb10_a2ui.txt
+GL_ARB_texture_rgb10_a2ui
+
+ GL_RGB10_A2UI 0x906F
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_stencil8 b/glew/auto/extensions/gl/GL_ARB_texture_stencil8
new file mode 100644
index 0000000..87c9a34
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_stencil8
@@ -0,0 +1,6 @@
+GL_ARB_texture_stencil8
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_stencil8.txt
+GL_ARB_texture_stencil8
+
+ GL_STENCIL_INDEX 0x1901
+ GL_STENCIL_INDEX8 0x8D48
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_storage b/glew/auto/extensions/gl/GL_ARB_texture_storage
new file mode 100644
index 0000000..f6d82d7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_storage
@@ -0,0 +1,8 @@
+GL_ARB_texture_storage
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage.txt
+GL_ARB_texture_storage
+
+ GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
+ void glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
+ void glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_storage_multisample b/glew/auto/extensions/gl/GL_ARB_texture_storage_multisample
new file mode 100644
index 0000000..9d3c1a3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_storage_multisample
@@ -0,0 +1,8 @@
+GL_ARB_texture_storage_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage_multisample.txt
+GL_ARB_texture_storage_multisample
+
+ void glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
+ void glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
+ void glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
+ void glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_swizzle b/glew/auto/extensions/gl/GL_ARB_texture_swizzle
new file mode 100644
index 0000000..e663bf2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_swizzle
@@ -0,0 +1,9 @@
+GL_ARB_texture_swizzle
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_swizzle.txt
+GL_ARB_texture_swizzle
+
+ GL_TEXTURE_SWIZZLE_R 0x8E42
+ GL_TEXTURE_SWIZZLE_G 0x8E43
+ GL_TEXTURE_SWIZZLE_B 0x8E44
+ GL_TEXTURE_SWIZZLE_A 0x8E45
+ GL_TEXTURE_SWIZZLE_RGBA 0x8E46
diff --git a/glew/auto/extensions/gl/GL_ARB_texture_view b/glew/auto/extensions/gl/GL_ARB_texture_view
new file mode 100644
index 0000000..82275e6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_texture_view
@@ -0,0 +1,10 @@
+GL_ARB_texture_view
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_view.txt
+GL_ARB_texture_view
+
+ GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
+ GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
+ GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
+ GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
+ GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+ void glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
diff --git a/glew/auto/extensions/gl/GL_ARB_timer_query b/glew/auto/extensions/gl/GL_ARB_timer_query
new file mode 100644
index 0000000..9c9bd56
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_timer_query
@@ -0,0 +1,9 @@
+GL_ARB_timer_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_timer_query.txt
+GL_ARB_timer_query
+
+ GL_TIME_ELAPSED 0x88BF
+ GL_TIMESTAMP 0x8E28
+ void glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64* params)
+ void glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64* params)
+ void glQueryCounter (GLuint id, GLenum target)
diff --git a/glew/auto/extensions/gl/GL_ARB_transform_feedback2 b/glew/auto/extensions/gl/GL_ARB_transform_feedback2
new file mode 100644
index 0000000..fedfe56
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transform_feedback2
@@ -0,0 +1,15 @@
+GL_ARB_transform_feedback2
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback2.txt
+GL_ARB_transform_feedback2
+
+ GL_TRANSFORM_FEEDBACK 0x8E22
+ GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+ GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+ GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
+ void glBindTransformFeedback (GLenum target, GLuint id)
+ void glDeleteTransformFeedbacks (GLsizei n, const GLuint* ids)
+ void glDrawTransformFeedback (GLenum mode, GLuint id)
+ void glGenTransformFeedbacks (GLsizei n, GLuint* ids)
+ GLboolean glIsTransformFeedback (GLuint id)
+ void glPauseTransformFeedback (void)
+ void glResumeTransformFeedback (void)
diff --git a/glew/auto/extensions/gl/GL_ARB_transform_feedback3 b/glew/auto/extensions/gl/GL_ARB_transform_feedback3
new file mode 100644
index 0000000..66d846a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transform_feedback3
@@ -0,0 +1,10 @@
+GL_ARB_transform_feedback3
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback3.txt
+GL_ARB_transform_feedback3
+
+ GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+ GL_MAX_VERTEX_STREAMS 0x8E71
+ void glBeginQueryIndexed (GLenum target, GLuint index, GLuint id)
+ void glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream)
+ void glEndQueryIndexed (GLenum target, GLuint index)
+ void glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_ARB_transform_feedback_instanced b/glew/auto/extensions/gl/GL_ARB_transform_feedback_instanced
new file mode 100644
index 0000000..bb48fa8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transform_feedback_instanced
@@ -0,0 +1,6 @@
+GL_ARB_transform_feedback_instanced
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_instanced.txt
+GL_ARB_transform_feedback_instanced
+
+ void glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei primcount)
+ void glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_ARB_transform_feedback_overflow_query b/glew/auto/extensions/gl/GL_ARB_transform_feedback_overflow_query
new file mode 100644
index 0000000..ea06597
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transform_feedback_overflow_query
@@ -0,0 +1,6 @@
+GL_ARB_transform_feedback_overflow_query
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_overflow_query.txt
+GL_ARB_transform_feedback_overflow_query
+
+ GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
+ GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
diff --git a/glew/auto/extensions/gl/GL_ARB_transpose_matrix b/glew/auto/extensions/gl/GL_ARB_transpose_matrix
new file mode 100644
index 0000000..3fcca6c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_transpose_matrix
@@ -0,0 +1,12 @@
+GL_ARB_transpose_matrix
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transpose_matrix.txt
+GL_ARB_transpose_matrix
+
+ GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
+ GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
+ GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
+ GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
+ void glLoadTransposeMatrixfARB (GLfloat m[16])
+ void glLoadTransposeMatrixdARB (GLdouble m[16])
+ void glMultTransposeMatrixfARB (GLfloat m[16])
+ void glMultTransposeMatrixdARB (GLdouble m[16])
diff --git a/glew/auto/extensions/gl/GL_ARB_uniform_buffer_object b/glew/auto/extensions/gl/GL_ARB_uniform_buffer_object
new file mode 100644
index 0000000..8768a82
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_uniform_buffer_object
@@ -0,0 +1,47 @@
+GL_ARB_uniform_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_uniform_buffer_object.txt
+GL_ARB_uniform_buffer_object
+
+ GL_INVALID_INDEX 0xFFFFFFFFu
+ GL_UNIFORM_BUFFER 0x8A11
+ GL_UNIFORM_BUFFER_BINDING 0x8A28
+ GL_UNIFORM_BUFFER_START 0x8A29
+ GL_UNIFORM_BUFFER_SIZE 0x8A2A
+ GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
+ GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
+ GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
+ GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
+ GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
+ GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
+ GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
+ GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
+ GL_UNIFORM_TYPE 0x8A37
+ GL_UNIFORM_SIZE 0x8A38
+ GL_UNIFORM_NAME_LENGTH 0x8A39
+ GL_UNIFORM_BLOCK_INDEX 0x8A3A
+ GL_UNIFORM_OFFSET 0x8A3B
+ GL_UNIFORM_ARRAY_STRIDE 0x8A3C
+ GL_UNIFORM_MATRIX_STRIDE 0x8A3D
+ GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
+ GL_UNIFORM_BLOCK_BINDING 0x8A3F
+ GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
+ GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
+ GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
+ GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
+ GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
+ GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
+ GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
+ void glBindBufferBase (GLenum target, GLuint index, GLuint buffer)
+ void glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
+ void glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
+ void glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName)
+ void glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
+ void glGetIntegeri_v (GLenum target, GLuint index, GLint* data)
+ GLuint glGetUniformBlockIndex (GLuint program, const GLchar* uniformBlockName)
+ void glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* const * uniformNames, GLuint* uniformIndices)
+ void glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_array_bgra b/glew/auto/extensions/gl/GL_ARB_vertex_array_bgra
new file mode 100644
index 0000000..3b8dd73
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_array_bgra
@@ -0,0 +1,5 @@
+GL_ARB_vertex_array_bgra
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_bgra.txt
+GL_ARB_vertex_array_bgra
+
+ GL_BGRA 0x80E1
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_array_object b/glew/auto/extensions/gl/GL_ARB_vertex_array_object
new file mode 100644
index 0000000..0ca6030
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_array_object
@@ -0,0 +1,9 @@
+GL_ARB_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_object.txt
+GL_ARB_vertex_array_object
+
+ GL_VERTEX_ARRAY_BINDING 0x85B5
+ void glBindVertexArray (GLuint array)
+ void glDeleteVertexArrays (GLsizei n, const GLuint* arrays)
+ void glGenVertexArrays (GLsizei n, GLuint* arrays)
+ GLboolean glIsVertexArray (GLuint array)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_attrib_64bit b/glew/auto/extensions/gl/GL_ARB_vertex_attrib_64bit
new file mode 100644
index 0000000..68117c5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_attrib_64bit
@@ -0,0 +1,14 @@
+GL_ARB_vertex_attrib_64bit
+http://www.opengl.org/registry/specs/ARB/vertex_attrib_64bit.txt
+GL_ARB_vertex_attrib_64bit
+
+ void glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble* params)
+ void glVertexAttribL1d (GLuint index, GLdouble x)
+ void glVertexAttribL1dv (GLuint index, const GLdouble* v)
+ void glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y)
+ void glVertexAttribL2dv (GLuint index, const GLdouble* v)
+ void glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexAttribL3dv (GLuint index, const GLdouble* v)
+ void glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexAttribL4dv (GLuint index, const GLdouble* v)
+ void glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_attrib_binding b/glew/auto/extensions/gl/GL_ARB_vertex_attrib_binding
new file mode 100644
index 0000000..2510704
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_attrib_binding
@@ -0,0 +1,24 @@
+GL_ARB_vertex_attrib_binding
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_attrib_binding.txt
+GL_ARB_vertex_attrib_binding
+
+ GL_VERTEX_ATTRIB_BINDING 0x82D4
+ GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
+ GL_VERTEX_BINDING_DIVISOR 0x82D6
+ GL_VERTEX_BINDING_OFFSET 0x82D7
+ GL_VERTEX_BINDING_STRIDE 0x82D8
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
+ GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
+ GL_VERTEX_BINDING_BUFFER 0x8F4F
+ void glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
+ void glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
+ void glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex)
+ void glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
+ void glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor)
+ void glVertexAttribBinding (GLuint attribindex, GLuint bindingindex)
+ void glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
+ void glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
+ void glVertexBindingDivisor (GLuint bindingindex, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_blend b/glew/auto/extensions/gl/GL_ARB_vertex_blend
new file mode 100644
index 0000000..f4b3f58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_blend
@@ -0,0 +1,56 @@
+GL_ARB_vertex_blend
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_blend.txt
+GL_ARB_vertex_blend
+
+ GL_MAX_VERTEX_UNITS_ARB 0x86A4
+ GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
+ GL_WEIGHT_SUM_UNITY_ARB 0x86A6
+ GL_VERTEX_BLEND_ARB 0x86A7
+ GL_CURRENT_WEIGHT_ARB 0x86A8
+ GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
+ GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
+ GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
+ GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
+ GL_WEIGHT_ARRAY_ARB 0x86AD
+ GL_MODELVIEW0_ARB 0x1700
+ GL_MODELVIEW1_ARB 0x850A
+ GL_MODELVIEW2_ARB 0x8722
+ GL_MODELVIEW3_ARB 0x8723
+ GL_MODELVIEW4_ARB 0x8724
+ GL_MODELVIEW5_ARB 0x8725
+ GL_MODELVIEW6_ARB 0x8726
+ GL_MODELVIEW7_ARB 0x8727
+ GL_MODELVIEW8_ARB 0x8728
+ GL_MODELVIEW9_ARB 0x8729
+ GL_MODELVIEW10_ARB 0x872A
+ GL_MODELVIEW11_ARB 0x872B
+ GL_MODELVIEW12_ARB 0x872C
+ GL_MODELVIEW13_ARB 0x872D
+ GL_MODELVIEW14_ARB 0x872E
+ GL_MODELVIEW15_ARB 0x872F
+ GL_MODELVIEW16_ARB 0x8730
+ GL_MODELVIEW17_ARB 0x8731
+ GL_MODELVIEW18_ARB 0x8732
+ GL_MODELVIEW19_ARB 0x8733
+ GL_MODELVIEW20_ARB 0x8734
+ GL_MODELVIEW21_ARB 0x8735
+ GL_MODELVIEW22_ARB 0x8736
+ GL_MODELVIEW23_ARB 0x8737
+ GL_MODELVIEW24_ARB 0x8738
+ GL_MODELVIEW25_ARB 0x8739
+ GL_MODELVIEW26_ARB 0x873A
+ GL_MODELVIEW27_ARB 0x873B
+ GL_MODELVIEW28_ARB 0x873C
+ GL_MODELVIEW29_ARB 0x873D
+ GL_MODELVIEW30_ARB 0x873E
+ GL_MODELVIEW31_ARB 0x873F
+ void glWeightbvARB (GLint size, GLbyte *weights)
+ void glWeightsvARB (GLint size, GLshort *weights)
+ void glWeightivARB (GLint size, GLint *weights)
+ void glWeightfvARB (GLint size, GLfloat *weights)
+ void glWeightdvARB (GLint size, GLdouble *weights)
+ void glWeightubvARB (GLint size, GLubyte *weights)
+ void glWeightusvARB (GLint size, GLushort *weights)
+ void glWeightuivARB (GLint size, GLuint *weights)
+ void glWeightPointerARB (GLint size, GLenum type, GLsizei stride, void *pointer)
+ void glVertexBlendARB (GLint count)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_buffer_object b/glew/auto/extensions/gl/GL_ARB_vertex_buffer_object
new file mode 100644
index 0000000..095f23d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_buffer_object
@@ -0,0 +1,48 @@
+GL_ARB_vertex_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_buffer_object.txt
+GL_ARB_vertex_buffer_object
+
+ GL_BUFFER_SIZE_ARB 0x8764
+ GL_BUFFER_USAGE_ARB 0x8765
+ GL_ARRAY_BUFFER_ARB 0x8892
+ GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
+ GL_ARRAY_BUFFER_BINDING_ARB 0x8894
+ GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+ GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
+ GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
+ GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
+ GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
+ GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
+ GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
+ GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+ GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
+ GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
+ GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
+ GL_READ_ONLY_ARB 0x88B8
+ GL_WRITE_ONLY_ARB 0x88B9
+ GL_READ_WRITE_ARB 0x88BA
+ GL_BUFFER_ACCESS_ARB 0x88BB
+ GL_BUFFER_MAPPED_ARB 0x88BC
+ GL_BUFFER_MAP_POINTER_ARB 0x88BD
+ GL_STREAM_DRAW_ARB 0x88E0
+ GL_STREAM_READ_ARB 0x88E1
+ GL_STREAM_COPY_ARB 0x88E2
+ GL_STATIC_DRAW_ARB 0x88E4
+ GL_STATIC_READ_ARB 0x88E5
+ GL_STATIC_COPY_ARB 0x88E6
+ GL_DYNAMIC_DRAW_ARB 0x88E8
+ GL_DYNAMIC_READ_ARB 0x88E9
+ GL_DYNAMIC_COPY_ARB 0x88EA
+ void glBindBufferARB (GLenum target, GLuint buffer)
+ void glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage)
+ void glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data)
+ void glDeleteBuffersARB (GLsizei n, const GLuint* buffers)
+ void glGenBuffersARB (GLsizei n, GLuint* buffers)
+ void glGetBufferParameterivARB (GLenum target, GLenum pname, GLint* params)
+ void glGetBufferPointervARB (GLenum target, GLenum pname, void** params)
+ void glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data)
+ GLboolean glIsBufferARB (GLuint buffer)
+ void * glMapBufferARB (GLenum target, GLenum access)
+ GLboolean glUnmapBufferARB (GLenum target)
+ typedef ptrdiff_t GLsizeiptrARB
+ typedef ptrdiff_t GLintptrARB
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_program b/glew/auto/extensions/gl/GL_ARB_vertex_program
new file mode 100644
index 0000000..b930982
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_program
@@ -0,0 +1,145 @@
+GL_ARB_vertex_program
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_program.txt
+GL_ARB_vertex_program
+
+ GL_COLOR_SUM_ARB 0x8458
+ GL_VERTEX_PROGRAM_ARB 0x8620
+ GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
+ GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
+ GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
+ GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
+ GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
+ GL_PROGRAM_LENGTH_ARB 0x8627
+ GL_PROGRAM_STRING_ARB 0x8628
+ GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
+ GL_MAX_PROGRAM_MATRICES_ARB 0x862F
+ GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
+ GL_CURRENT_MATRIX_ARB 0x8641
+ GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
+ GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
+ GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
+ GL_PROGRAM_ERROR_POSITION_ARB 0x864B
+ GL_PROGRAM_BINDING_ARB 0x8677
+ GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
+ GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
+ GL_PROGRAM_ERROR_STRING_ARB 0x8874
+ GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
+ GL_PROGRAM_FORMAT_ARB 0x8876
+ GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
+ GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
+ GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
+ GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
+ GL_PROGRAM_TEMPORARIES_ARB 0x88A4
+ GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
+ GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
+ GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
+ GL_PROGRAM_PARAMETERS_ARB 0x88A8
+ GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
+ GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
+ GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
+ GL_PROGRAM_ATTRIBS_ARB 0x88AC
+ GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
+ GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
+ GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
+ GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
+ GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
+ GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
+ GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
+ GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
+ GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
+ GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
+ GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
+ GL_MATRIX0_ARB 0x88C0
+ GL_MATRIX1_ARB 0x88C1
+ GL_MATRIX2_ARB 0x88C2
+ GL_MATRIX3_ARB 0x88C3
+ GL_MATRIX4_ARB 0x88C4
+ GL_MATRIX5_ARB 0x88C5
+ GL_MATRIX6_ARB 0x88C6
+ GL_MATRIX7_ARB 0x88C7
+ GL_MATRIX8_ARB 0x88C8
+ GL_MATRIX9_ARB 0x88C9
+ GL_MATRIX10_ARB 0x88CA
+ GL_MATRIX11_ARB 0x88CB
+ GL_MATRIX12_ARB 0x88CC
+ GL_MATRIX13_ARB 0x88CD
+ GL_MATRIX14_ARB 0x88CE
+ GL_MATRIX15_ARB 0x88CF
+ GL_MATRIX16_ARB 0x88D0
+ GL_MATRIX17_ARB 0x88D1
+ GL_MATRIX18_ARB 0x88D2
+ GL_MATRIX19_ARB 0x88D3
+ GL_MATRIX20_ARB 0x88D4
+ GL_MATRIX21_ARB 0x88D5
+ GL_MATRIX22_ARB 0x88D6
+ GL_MATRIX23_ARB 0x88D7
+ GL_MATRIX24_ARB 0x88D8
+ GL_MATRIX25_ARB 0x88D9
+ GL_MATRIX26_ARB 0x88DA
+ GL_MATRIX27_ARB 0x88DB
+ GL_MATRIX28_ARB 0x88DC
+ GL_MATRIX29_ARB 0x88DD
+ GL_MATRIX30_ARB 0x88DE
+ GL_MATRIX31_ARB 0x88DF
+ void glBindProgramARB (GLenum target, GLuint program)
+ void glDeleteProgramsARB (GLsizei n, const GLuint* programs)
+ void glDisableVertexAttribArrayARB (GLuint index)
+ void glEnableVertexAttribArrayARB (GLuint index)
+ void glGenProgramsARB (GLsizei n, GLuint* programs)
+ void glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble* params)
+ void glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat* params)
+ void glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble* params)
+ void glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat* params)
+ void glGetProgramStringARB (GLenum target, GLenum pname, void *string)
+ void glGetProgramivARB (GLenum target, GLenum pname, GLint* params)
+ void glGetVertexAttribPointervARB (GLuint index, GLenum pname, void** pointer)
+ void glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble* params)
+ void glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat* params)
+ void glGetVertexAttribivARB (GLuint index, GLenum pname, GLint* params)
+ GLboolean glIsProgramARB (GLuint program)
+ void glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble* params)
+ void glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat* params)
+ void glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble* params)
+ void glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat* params)
+ void glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string)
+ void glVertexAttrib1dARB (GLuint index, GLdouble x)
+ void glVertexAttrib1dvARB (GLuint index, const GLdouble* v)
+ void glVertexAttrib1fARB (GLuint index, GLfloat x)
+ void glVertexAttrib1fvARB (GLuint index, const GLfloat* v)
+ void glVertexAttrib1sARB (GLuint index, GLshort x)
+ void glVertexAttrib1svARB (GLuint index, const GLshort* v)
+ void glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y)
+ void glVertexAttrib2dvARB (GLuint index, const GLdouble* v)
+ void glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y)
+ void glVertexAttrib2fvARB (GLuint index, const GLfloat* v)
+ void glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y)
+ void glVertexAttrib2svARB (GLuint index, const GLshort* v)
+ void glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexAttrib3dvARB (GLuint index, const GLdouble* v)
+ void glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z)
+ void glVertexAttrib3fvARB (GLuint index, const GLfloat* v)
+ void glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z)
+ void glVertexAttrib3svARB (GLuint index, const GLshort* v)
+ void glVertexAttrib4NbvARB (GLuint index, const GLbyte* v)
+ void glVertexAttrib4NivARB (GLuint index, const GLint* v)
+ void glVertexAttrib4NsvARB (GLuint index, const GLshort* v)
+ void glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+ void glVertexAttrib4NubvARB (GLuint index, const GLubyte* v)
+ void glVertexAttrib4NuivARB (GLuint index, const GLuint* v)
+ void glVertexAttrib4NusvARB (GLuint index, const GLushort* v)
+ void glVertexAttrib4bvARB (GLuint index, const GLbyte* v)
+ void glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexAttrib4dvARB (GLuint index, const GLdouble* v)
+ void glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glVertexAttrib4fvARB (GLuint index, const GLfloat* v)
+ void glVertexAttrib4ivARB (GLuint index, const GLint* v)
+ void glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+ void glVertexAttrib4svARB (GLuint index, const GLshort* v)
+ void glVertexAttrib4ubvARB (GLuint index, const GLubyte* v)
+ void glVertexAttrib4uivARB (GLuint index, const GLuint* v)
+ void glVertexAttrib4usvARB (GLuint index, const GLushort* v)
+ void glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_shader b/glew/auto/extensions/gl/GL_ARB_vertex_shader
new file mode 100644
index 0000000..3406911
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_shader
@@ -0,0 +1,14 @@
+GL_ARB_vertex_shader
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_shader.txt
+GL_ARB_vertex_shader
+
+ GL_VERTEX_SHADER_ARB 0x8B31
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
+ GL_MAX_VARYING_FLOATS_ARB 0x8B4B
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+ GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
+ GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
+ GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
+ void glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB* name)
+ void glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name)
+ GLint glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB* name)
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_type_10f_11f_11f_rev b/glew/auto/extensions/gl/GL_ARB_vertex_type_10f_11f_11f_rev
new file mode 100644
index 0000000..70bd3bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_type_10f_11f_11f_rev
@@ -0,0 +1,5 @@
+GL_ARB_vertex_type_10f_11f_11f_rev
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_10f_11f_11f_rev.txt
+GL_ARB_vertex_type_10f_11f_11f_rev
+
+ GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
diff --git a/glew/auto/extensions/gl/GL_ARB_vertex_type_2_10_10_10_rev b/glew/auto/extensions/gl/GL_ARB_vertex_type_2_10_10_10_rev
new file mode 100644
index 0000000..99e3e34
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_vertex_type_2_10_10_10_rev
@@ -0,0 +1,44 @@
+GL_ARB_vertex_type_2_10_10_10_rev
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_2_10_10_10_rev.txt
+GL_ARB_vertex_type_2_10_10_10_rev
+
+ GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+ GL_INT_2_10_10_10_REV 0x8D9F
+ void glColorP3ui (GLenum type, GLuint color)
+ void glColorP3uiv (GLenum type, const GLuint* color)
+ void glColorP4ui (GLenum type, GLuint color)
+ void glColorP4uiv (GLenum type, const GLuint* color)
+ void glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords)
+ void glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint* coords)
+ void glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords)
+ void glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint* coords)
+ void glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords)
+ void glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint* coords)
+ void glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords)
+ void glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint* coords)
+ void glNormalP3ui (GLenum type, GLuint coords)
+ void glNormalP3uiv (GLenum type, const GLuint* coords)
+ void glSecondaryColorP3ui (GLenum type, GLuint color)
+ void glSecondaryColorP3uiv (GLenum type, const GLuint* color)
+ void glTexCoordP1ui (GLenum type, GLuint coords)
+ void glTexCoordP1uiv (GLenum type, const GLuint* coords)
+ void glTexCoordP2ui (GLenum type, GLuint coords)
+ void glTexCoordP2uiv (GLenum type, const GLuint* coords)
+ void glTexCoordP3ui (GLenum type, GLuint coords)
+ void glTexCoordP3uiv (GLenum type, const GLuint* coords)
+ void glTexCoordP4ui (GLenum type, GLuint coords)
+ void glTexCoordP4uiv (GLenum type, const GLuint* coords)
+ void glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
+ void glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
+ void glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
+ void glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
+ void glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
+ void glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
+ void glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
+ void glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
+ void glVertexP2ui (GLenum type, GLuint value)
+ void glVertexP2uiv (GLenum type, const GLuint* value)
+ void glVertexP3ui (GLenum type, GLuint value)
+ void glVertexP3uiv (GLenum type, const GLuint* value)
+ void glVertexP4ui (GLenum type, GLuint value)
+ void glVertexP4uiv (GLenum type, const GLuint* value)
diff --git a/glew/auto/extensions/gl/GL_ARB_viewport_array b/glew/auto/extensions/gl/GL_ARB_viewport_array
new file mode 100644
index 0000000..9b07bac
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_viewport_array
@@ -0,0 +1,27 @@
+GL_ARB_viewport_array
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_viewport_array.txt
+GL_ARB_viewport_array
+
+ GL_DEPTH_RANGE 0x0B70
+ GL_VIEWPORT 0x0BA2
+ GL_SCISSOR_BOX 0x0C10
+ GL_SCISSOR_TEST 0x0C11
+ GL_MAX_VIEWPORTS 0x825B
+ GL_VIEWPORT_SUBPIXEL_BITS 0x825C
+ GL_VIEWPORT_BOUNDS_RANGE 0x825D
+ GL_LAYER_PROVOKING_VERTEX 0x825E
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
+ GL_UNDEFINED_VERTEX 0x8260
+ GL_FIRST_VERTEX_CONVENTION 0x8E4D
+ GL_LAST_VERTEX_CONVENTION 0x8E4E
+ GL_PROVOKING_VERTEX 0x8E4F
+ void glDepthRangeArrayv (GLuint first, GLsizei count, const GLclampd * v)
+ void glDepthRangeIndexed (GLuint index, GLclampd n, GLclampd f)
+ void glGetDoublei_v (GLenum target, GLuint index, GLdouble* data)
+ void glGetFloati_v (GLenum target, GLuint index, GLfloat* data)
+ void glScissorArrayv (GLuint first, GLsizei count, const GLint * v)
+ void glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)
+ void glScissorIndexedv (GLuint index, const GLint * v)
+ void glViewportArrayv (GLuint first, GLsizei count, const GLfloat * v)
+ void glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)
+ void glViewportIndexedfv (GLuint index, const GLfloat * v)
diff --git a/glew/auto/extensions/gl/GL_ARB_window_pos b/glew/auto/extensions/gl/GL_ARB_window_pos
new file mode 100644
index 0000000..fecf547
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARB_window_pos
@@ -0,0 +1,20 @@
+GL_ARB_window_pos
+https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_window_pos.txt
+GL_ARB_window_pos
+
+ void glWindowPos2dARB (GLdouble x, GLdouble y)
+ void glWindowPos2dvARB (const GLdouble* p)
+ void glWindowPos2fARB (GLfloat x, GLfloat y)
+ void glWindowPos2fvARB (const GLfloat* p)
+ void glWindowPos2iARB (GLint x, GLint y)
+ void glWindowPos2ivARB (const GLint* p)
+ void glWindowPos2sARB (GLshort x, GLshort y)
+ void glWindowPos2svARB (const GLshort* p)
+ void glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z)
+ void glWindowPos3dvARB (const GLdouble* p)
+ void glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z)
+ void glWindowPos3fvARB (const GLfloat* p)
+ void glWindowPos3iARB (GLint x, GLint y, GLint z)
+ void glWindowPos3ivARB (const GLint* p)
+ void glWindowPos3sARB (GLshort x, GLshort y, GLshort z)
+ void glWindowPos3svARB (const GLshort* p)
diff --git a/glew/auto/extensions/gl/GL_ARM_mali_program_binary b/glew/auto/extensions/gl/GL_ARM_mali_program_binary
new file mode 100644
index 0000000..30ca0e7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_mali_program_binary
@@ -0,0 +1,5 @@
+GL_ARM_mali_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_mali_program_binary.txt
+GL_ARM_mali_program_binary
+
+ GL_MALI_PROGRAM_BINARY_ARM 0x8F61
diff --git a/glew/auto/extensions/gl/GL_ARM_mali_shader_binary b/glew/auto/extensions/gl/GL_ARM_mali_shader_binary
new file mode 100644
index 0000000..0dc7453
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_mali_shader_binary
@@ -0,0 +1,5 @@
+GL_ARM_mali_shader_binary
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_mali_shader_binary.txt
+GL_ARM_mali_shader_binary
+
+ GL_MALI_SHADER_BINARY_ARM 0x8F60
diff --git a/glew/auto/extensions/gl/GL_ARM_rgba8 b/glew/auto/extensions/gl/GL_ARM_rgba8
new file mode 100644
index 0000000..4bef0d2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_rgba8
@@ -0,0 +1,5 @@
+GL_ARM_rgba8
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_rgba8.txt
+GL_ARM_rgba8
+
+ GL_RGBA8_OES 0x8058
diff --git a/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch b/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch
new file mode 100644
index 0000000..e37dc4f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch
@@ -0,0 +1,6 @@
+GL_ARM_shader_framebuffer_fetch
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fetch.txt
+GL_ARM_shader_framebuffer_fetch
+
+ GL_FETCH_PER_SAMPLE_ARM 0x8F65
+ GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66
diff --git a/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch_depth_stencil b/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch_depth_stencil
new file mode 100644
index 0000000..90c65ac
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_shader_framebuffer_fetch_depth_stencil
@@ -0,0 +1,4 @@
+GL_ARM_shader_framebuffer_fetch_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fetch_depth_stencil.txt
+GL_ARM_shader_framebuffer_fetch_depth_stencil
+
diff --git a/glew/auto/extensions/gl/GL_ARM_texture_unnormalized_coordinates b/glew/auto/extensions/gl/GL_ARM_texture_unnormalized_coordinates
new file mode 100644
index 0000000..c7fabdd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ARM_texture_unnormalized_coordinates
@@ -0,0 +1,5 @@
+GL_ARM_texture_unnormalized_coordinates
+https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_texture_unnormalized_coordinates.txt
+GL_ARM_texture_unnormalized_coordinates
+
+ GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A
diff --git a/glew/auto/extensions/gl/GL_ATIX_point_sprites b/glew/auto/extensions/gl/GL_ATIX_point_sprites
new file mode 100644
index 0000000..d2434e7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATIX_point_sprites
@@ -0,0 +1,10 @@
+GL_ATIX_point_sprites
+http://www.ati.com/developer/atiopengl.pdf
+GL_ATIX_point_sprites
+
+ GL_TEXTURE_POINT_MODE_ATIX 0x60B0
+ GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1
+ GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2
+ GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3
+ GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4
+ GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5
diff --git a/glew/auto/extensions/gl/GL_ATIX_texture_env_combine3 b/glew/auto/extensions/gl/GL_ATIX_texture_env_combine3
new file mode 100644
index 0000000..77f425d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATIX_texture_env_combine3
@@ -0,0 +1,7 @@
+GL_ATIX_texture_env_combine3
+http://www.ati.com/developer/atiopengl.pdf
+GL_ATIX_texture_env_combine3
+
+ GL_MODULATE_ADD_ATIX 0x8744
+ GL_MODULATE_SIGNED_ADD_ATIX 0x8745
+ GL_MODULATE_SUBTRACT_ATIX 0x8746
diff --git a/glew/auto/extensions/gl/GL_ATIX_texture_env_route b/glew/auto/extensions/gl/GL_ATIX_texture_env_route
new file mode 100644
index 0000000..d972fd1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATIX_texture_env_route
@@ -0,0 +1,7 @@
+GL_ATIX_texture_env_route
+http://www.ati.com/developer/sdk/RadeonSDK/Html/Info/ATIX_texture_env_route.txt
+GL_ATIX_texture_env_route
+
+ GL_SECONDARY_COLOR_ATIX 0x8747
+ GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748
+ GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749
diff --git a/glew/auto/extensions/gl/GL_ATIX_vertex_shader_output_point_size b/glew/auto/extensions/gl/GL_ATIX_vertex_shader_output_point_size
new file mode 100644
index 0000000..85a6d58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATIX_vertex_shader_output_point_size
@@ -0,0 +1,5 @@
+GL_ATIX_vertex_shader_output_point_size
+http://www.ati.com/developer/atiopengl.pdf
+GL_ATIX_vertex_shader_output_point_size
+
+ GL_OUTPUT_POINT_SIZE_ATIX 0x610E
diff --git a/glew/auto/extensions/gl/GL_ATI_draw_buffers b/glew/auto/extensions/gl/GL_ATI_draw_buffers
new file mode 100644
index 0000000..ee81356
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_draw_buffers
@@ -0,0 +1,22 @@
+GL_ATI_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_draw_buffers.txt
+GL_ATI_draw_buffers
+
+ GL_MAX_DRAW_BUFFERS_ATI 0x8824
+ GL_DRAW_BUFFER0_ATI 0x8825
+ GL_DRAW_BUFFER1_ATI 0x8826
+ GL_DRAW_BUFFER2_ATI 0x8827
+ GL_DRAW_BUFFER3_ATI 0x8828
+ GL_DRAW_BUFFER4_ATI 0x8829
+ GL_DRAW_BUFFER5_ATI 0x882A
+ GL_DRAW_BUFFER6_ATI 0x882B
+ GL_DRAW_BUFFER7_ATI 0x882C
+ GL_DRAW_BUFFER8_ATI 0x882D
+ GL_DRAW_BUFFER9_ATI 0x882E
+ GL_DRAW_BUFFER10_ATI 0x882F
+ GL_DRAW_BUFFER11_ATI 0x8830
+ GL_DRAW_BUFFER12_ATI 0x8831
+ GL_DRAW_BUFFER13_ATI 0x8832
+ GL_DRAW_BUFFER14_ATI 0x8833
+ GL_DRAW_BUFFER15_ATI 0x8834
+ void glDrawBuffersATI (GLsizei n, const GLenum* bufs)
diff --git a/glew/auto/extensions/gl/GL_ATI_element_array b/glew/auto/extensions/gl/GL_ATI_element_array
new file mode 100644
index 0000000..28f6320
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_element_array
@@ -0,0 +1,10 @@
+GL_ATI_element_array
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_element_array.txt
+GL_ATI_element_array
+
+ GL_ELEMENT_ARRAY_ATI 0x8768
+ GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
+ GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
+ void glDrawElementArrayATI (GLenum mode, GLsizei count)
+ void glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count)
+ void glElementPointerATI (GLenum type, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_ATI_envmap_bumpmap b/glew/auto/extensions/gl/GL_ATI_envmap_bumpmap
new file mode 100644
index 0000000..09a4112
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_envmap_bumpmap
@@ -0,0 +1,16 @@
+GL_ATI_envmap_bumpmap
+http://oss.sgi.com/projects/ogl-sample/registry/ATI/envmap_bumpmap.txt
+GL_ATI_envmap_bumpmap
+
+ GL_BUMP_ROT_MATRIX_ATI 0x8775
+ GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
+ GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
+ GL_BUMP_TEX_UNITS_ATI 0x8778
+ GL_DUDV_ATI 0x8779
+ GL_DU8DV8_ATI 0x877A
+ GL_BUMP_ENVMAP_ATI 0x877B
+ GL_BUMP_TARGET_ATI 0x877C
+ void glTexBumpParameterivATI (GLenum pname, GLint *param)
+ void glTexBumpParameterfvATI (GLenum pname, GLfloat *param)
+ void glGetTexBumpParameterivATI (GLenum pname, GLint *param)
+ void glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param)
diff --git a/glew/auto/extensions/gl/GL_ATI_fragment_shader b/glew/auto/extensions/gl/GL_ATI_fragment_shader
new file mode 100644
index 0000000..51b49a5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_fragment_shader
@@ -0,0 +1,72 @@
+GL_ATI_fragment_shader
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_fragment_shader.txt
+GL_ATI_fragment_shader
+
+ GL_2X_BIT_ATI 0x00000001
+ GL_RED_BIT_ATI 0x00000001
+ GL_4X_BIT_ATI 0x00000002
+ GL_COMP_BIT_ATI 0x00000002
+ GL_GREEN_BIT_ATI 0x00000002
+ GL_8X_BIT_ATI 0x00000004
+ GL_BLUE_BIT_ATI 0x00000004
+ GL_NEGATE_BIT_ATI 0x00000004
+ GL_BIAS_BIT_ATI 0x00000008
+ GL_HALF_BIT_ATI 0x00000008
+ GL_QUARTER_BIT_ATI 0x00000010
+ GL_EIGHTH_BIT_ATI 0x00000020
+ GL_SATURATE_BIT_ATI 0x00000040
+ GL_FRAGMENT_SHADER_ATI 0x8920
+ GL_REG_0_ATI 0x8921
+ GL_REG_1_ATI 0x8922
+ GL_REG_2_ATI 0x8923
+ GL_REG_3_ATI 0x8924
+ GL_REG_4_ATI 0x8925
+ GL_REG_5_ATI 0x8926
+ GL_CON_0_ATI 0x8941
+ GL_CON_1_ATI 0x8942
+ GL_CON_2_ATI 0x8943
+ GL_CON_3_ATI 0x8944
+ GL_CON_4_ATI 0x8945
+ GL_CON_5_ATI 0x8946
+ GL_CON_6_ATI 0x8947
+ GL_CON_7_ATI 0x8948
+ GL_MOV_ATI 0x8961
+ GL_ADD_ATI 0x8963
+ GL_MUL_ATI 0x8964
+ GL_SUB_ATI 0x8965
+ GL_DOT3_ATI 0x8966
+ GL_DOT4_ATI 0x8967
+ GL_MAD_ATI 0x8968
+ GL_LERP_ATI 0x8969
+ GL_CND_ATI 0x896A
+ GL_CND0_ATI 0x896B
+ GL_DOT2_ADD_ATI 0x896C
+ GL_SECONDARY_INTERPOLATOR_ATI 0x896D
+ GL_SWIZZLE_STR_ATI 0x8976
+ GL_SWIZZLE_STQ_ATI 0x8977
+ GL_SWIZZLE_STR_DR_ATI 0x8978
+ GL_SWIZZLE_STQ_DQ_ATI 0x8979
+ void glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
+ void glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
+ void glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
+ void glBeginFragmentShaderATI (void)
+ void glBindFragmentShaderATI (GLuint id)
+ void glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
+ void glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
+ void glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
+ void glDeleteFragmentShaderATI (GLuint id)
+ void glEndFragmentShaderATI (void)
+ GLuint glGenFragmentShadersATI (GLuint range)
+ void glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle)
+ void glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle)
+ void glSetFragmentShaderConstantATI (GLuint dst, const GLfloat* value)
+ GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+ GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+ GL_NUM_PASSES_ATI 0x8970
+ GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+ GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+ GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+ GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+ GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+ GL_SWIZZLE_STRQ_ATI 0x897A
+ GL_SWIZZLE_STRQ_DQ_ATI 0x897B
diff --git a/glew/auto/extensions/gl/GL_ATI_map_object_buffer b/glew/auto/extensions/gl/GL_ATI_map_object_buffer
new file mode 100644
index 0000000..6a683d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_map_object_buffer
@@ -0,0 +1,6 @@
+GL_ATI_map_object_buffer
+http://www.opengl.org/registry/specs/ATI/map_object_buffer.txt
+GL_ATI_map_object_buffer
+
+ void * glMapObjectBufferATI (GLuint buffer)
+ void glUnmapObjectBufferATI (GLuint buffer)
diff --git a/glew/auto/extensions/gl/GL_ATI_meminfo b/glew/auto/extensions/gl/GL_ATI_meminfo
new file mode 100644
index 0000000..e7e6fc2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_meminfo
@@ -0,0 +1,7 @@
+GL_ATI_meminfo
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_meminfo.txt
+GL_ATI_meminfo
+
+ GL_VBO_FREE_MEMORY_ATI 0x87FB
+ GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
+ GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
diff --git a/glew/auto/extensions/gl/GL_ATI_pn_triangles b/glew/auto/extensions/gl/GL_ATI_pn_triangles
new file mode 100644
index 0000000..ca3923d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_pn_triangles
@@ -0,0 +1,15 @@
+GL_ATI_pn_triangles
+http://www.opengl.org/registry/specs/ATI/pn_triangles.txt
+GL_ATI_pn_triangles
+
+ GL_PN_TRIANGLES_ATI 0x87F0
+ GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
+ GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
+ GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
+ GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
+ GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
+ GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
+ GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
+ GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
+ void glPNTrianglesiATI (GLenum pname, GLint param)
+ void glPNTrianglesfATI (GLenum pname, GLfloat param)
diff --git a/glew/auto/extensions/gl/GL_ATI_separate_stencil b/glew/auto/extensions/gl/GL_ATI_separate_stencil
new file mode 100644
index 0000000..b7237e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_separate_stencil
@@ -0,0 +1,10 @@
+GL_ATI_separate_stencil
+http://www.opengl.org/registry/specs/ATI/separate_stencil.txt
+GL_ATI_separate_stencil
+
+ GL_STENCIL_BACK_FUNC_ATI 0x8800
+ GL_STENCIL_BACK_FAIL_ATI 0x8801
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
+ GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
+ void glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
+ void glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
diff --git a/glew/auto/extensions/gl/GL_ATI_shader_texture_lod b/glew/auto/extensions/gl/GL_ATI_shader_texture_lod
new file mode 100644
index 0000000..e6e6c04
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_shader_texture_lod
@@ -0,0 +1,4 @@
+GL_ATI_shader_texture_lod
+
+GL_ATI_shader_texture_lod
+
diff --git a/glew/auto/extensions/gl/GL_ATI_text_fragment_shader b/glew/auto/extensions/gl/GL_ATI_text_fragment_shader
new file mode 100644
index 0000000..b0b93fb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_text_fragment_shader
@@ -0,0 +1,5 @@
+GL_ATI_text_fragment_shader
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_text_fragment_shader.txt
+GL_ATI_text_fragment_shader
+
+ GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
diff --git a/glew/auto/extensions/gl/GL_ATI_texture_compression_3dc b/glew/auto/extensions/gl/GL_ATI_texture_compression_3dc
new file mode 100644
index 0000000..fc3ee44
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_texture_compression_3dc
@@ -0,0 +1,5 @@
+GL_ATI_texture_compression_3dc
+
+GL_ATI_texture_compression_3dc
+
+ GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837
diff --git a/glew/auto/extensions/gl/GL_ATI_texture_env_combine3 b/glew/auto/extensions/gl/GL_ATI_texture_env_combine3
new file mode 100644
index 0000000..fc6fc96
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_texture_env_combine3
@@ -0,0 +1,7 @@
+GL_ATI_texture_env_combine3
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_env_combine3.txt
+GL_ATI_texture_env_combine3
+
+ GL_MODULATE_ADD_ATI 0x8744
+ GL_MODULATE_SIGNED_ADD_ATI 0x8745
+ GL_MODULATE_SUBTRACT_ATI 0x8746
diff --git a/glew/auto/extensions/gl/GL_ATI_texture_float b/glew/auto/extensions/gl/GL_ATI_texture_float
new file mode 100644
index 0000000..aead237
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_texture_float
@@ -0,0 +1,16 @@
+GL_ATI_texture_float
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_float.txt
+GL_ATI_texture_float
+
+ GL_RGBA_FLOAT32_ATI 0x8814
+ GL_RGB_FLOAT32_ATI 0x8815
+ GL_ALPHA_FLOAT32_ATI 0x8816
+ GL_INTENSITY_FLOAT32_ATI 0x8817
+ GL_LUMINANCE_FLOAT32_ATI 0x8818
+ GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
+ GL_RGBA_FLOAT16_ATI 0x881A
+ GL_RGB_FLOAT16_ATI 0x881B
+ GL_ALPHA_FLOAT16_ATI 0x881C
+ GL_INTENSITY_FLOAT16_ATI 0x881D
+ GL_LUMINANCE_FLOAT16_ATI 0x881E
+ GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
diff --git a/glew/auto/extensions/gl/GL_ATI_texture_mirror_once b/glew/auto/extensions/gl/GL_ATI_texture_mirror_once
new file mode 100644
index 0000000..e7ba761
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_texture_mirror_once
@@ -0,0 +1,6 @@
+GL_ATI_texture_mirror_once
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_mirror_once.txt
+GL_ATI_texture_mirror_once
+
+ GL_MIRROR_CLAMP_ATI 0x8742
+ GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
diff --git a/glew/auto/extensions/gl/GL_ATI_vertex_array_object b/glew/auto/extensions/gl/GL_ATI_vertex_array_object
new file mode 100644
index 0000000..f0c01c0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_vertex_array_object
@@ -0,0 +1,24 @@
+GL_ATI_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_vertex_array_object.txt
+GL_ATI_vertex_array_object
+
+ GL_STATIC_ATI 0x8760
+ GL_DYNAMIC_ATI 0x8761
+ GL_PRESERVE_ATI 0x8762
+ GL_DISCARD_ATI 0x8763
+ GL_OBJECT_BUFFER_SIZE_ATI 0x8764
+ GL_OBJECT_BUFFER_USAGE_ATI 0x8765
+ GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
+ GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
+ void glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)
+ void glFreeObjectBufferATI (GLuint buffer)
+ void glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat* params)
+ void glGetArrayObjectivATI (GLenum array, GLenum pname, GLint* params)
+ void glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat* params)
+ void glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint* params)
+ void glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat* params)
+ void glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint* params)
+ GLboolean glIsObjectBufferATI (GLuint buffer)
+ GLuint glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage)
+ void glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve)
+ void glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset)
diff --git a/glew/auto/extensions/gl/GL_ATI_vertex_attrib_array_object b/glew/auto/extensions/gl/GL_ATI_vertex_attrib_array_object
new file mode 100644
index 0000000..2659525
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_vertex_attrib_array_object
@@ -0,0 +1,7 @@
+GL_ATI_vertex_attrib_array_object
+https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_vertex_attrib_array_object.txt
+GL_ATI_vertex_attrib_array_object
+
+ void glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat* params)
+ void glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint* params)
+ void glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset)
diff --git a/glew/auto/extensions/gl/GL_ATI_vertex_streams b/glew/auto/extensions/gl/GL_ATI_vertex_streams
new file mode 100644
index 0000000..f6e64fd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_ATI_vertex_streams
@@ -0,0 +1,59 @@
+GL_ATI_vertex_streams
+http://www.opengl.org/registry/specs/ATI/vertex_streams.txt
+GL_ATI_vertex_streams
+
+ GL_MAX_VERTEX_STREAMS_ATI 0x876B
+ GL_VERTEX_SOURCE_ATI 0x876C
+ GL_VERTEX_STREAM0_ATI 0x876D
+ GL_VERTEX_STREAM1_ATI 0x876E
+ GL_VERTEX_STREAM2_ATI 0x876F
+ GL_VERTEX_STREAM3_ATI 0x8770
+ GL_VERTEX_STREAM4_ATI 0x8771
+ GL_VERTEX_STREAM5_ATI 0x8772
+ GL_VERTEX_STREAM6_ATI 0x8773
+ GL_VERTEX_STREAM7_ATI 0x8774
+ void glClientActiveVertexStreamATI (GLenum stream)
+ void glVertexBlendEnviATI (GLenum pname, GLint param)
+ void glVertexBlendEnvfATI (GLenum pname, GLfloat param)
+ void glVertexStream1sATI (GLenum stream, GLshort x)
+ void glVertexStream1svATI (GLenum stream, const GLshort *coords)
+ void glVertexStream1iATI (GLenum stream, GLint x)
+ void glVertexStream1ivATI (GLenum stream, const GLint *coords)
+ void glVertexStream1fATI (GLenum stream, GLfloat x)
+ void glVertexStream1fvATI (GLenum stream, const GLfloat *coords)
+ void glVertexStream1dATI (GLenum stream, GLdouble x)
+ void glVertexStream1dvATI (GLenum stream, const GLdouble *coords)
+ void glVertexStream2sATI (GLenum stream, GLshort x, GLshort y)
+ void glVertexStream2svATI (GLenum stream, const GLshort *coords)
+ void glVertexStream2iATI (GLenum stream, GLint x, GLint y)
+ void glVertexStream2ivATI (GLenum stream, const GLint *coords)
+ void glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y)
+ void glVertexStream2fvATI (GLenum stream, const GLfloat *coords)
+ void glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y)
+ void glVertexStream2dvATI (GLenum stream, const GLdouble *coords)
+ void glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z)
+ void glVertexStream3svATI (GLenum stream, const GLshort *coords)
+ void glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z)
+ void glVertexStream3ivATI (GLenum stream, const GLint *coords)
+ void glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z)
+ void glVertexStream3fvATI (GLenum stream, const GLfloat *coords)
+ void glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexStream3dvATI (GLenum stream, const GLdouble *coords)
+ void glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w)
+ void glVertexStream4svATI (GLenum stream, const GLshort *coords)
+ void glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w)
+ void glVertexStream4ivATI (GLenum stream, const GLint *coords)
+ void glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glVertexStream4fvATI (GLenum stream, const GLfloat *coords)
+ void glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexStream4dvATI (GLenum stream, const GLdouble *coords)
+ void glNormalStream3bATI (GLenum stream, GLbyte x, GLbyte y, GLbyte z)
+ void glNormalStream3bvATI (GLenum stream, const GLbyte *coords)
+ void glNormalStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z)
+ void glNormalStream3svATI (GLenum stream, const GLshort *coords)
+ void glNormalStream3iATI (GLenum stream, GLint x, GLint y, GLint z)
+ void glNormalStream3ivATI (GLenum stream, const GLint *coords)
+ void glNormalStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z)
+ void glNormalStream3fvATI (GLenum stream, const GLfloat *coords)
+ void glNormalStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z)
+ void glNormalStream3dvATI (GLenum stream, const GLdouble *coords)
diff --git a/glew/auto/extensions/gl/GL_DMP_program_binary b/glew/auto/extensions/gl/GL_DMP_program_binary
new file mode 100644
index 0000000..3264cf4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_DMP_program_binary
@@ -0,0 +1,7 @@
+GL_DMP_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/DMP/DMP_program_binary.txt
+GL_DMP_program_binary
+
+ GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251
+ GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252
+ GL_DMP_PROGRAM_BINARY_DMP 0x9253
diff --git a/glew/auto/extensions/gl/GL_DMP_shader_binary b/glew/auto/extensions/gl/GL_DMP_shader_binary
new file mode 100644
index 0000000..1b4b03b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_DMP_shader_binary
@@ -0,0 +1,5 @@
+GL_DMP_shader_binary
+https://www.khronos.org/registry/OpenGL/extensions/DMP/DMP_shader_binary.txt
+GL_DMP_shader_binary
+
+ GL_SHADER_BINARY_DMP 0x9250
diff --git a/glew/auto/extensions/gl/GL_EXT_422_pixels b/glew/auto/extensions/gl/GL_EXT_422_pixels
new file mode 100644
index 0000000..5ac06bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_422_pixels
@@ -0,0 +1,8 @@
+GL_EXT_422_pixels
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_422_pixels.txt
+GL_EXT_422_pixels
+
+ GL_422_EXT 0x80CC
+ GL_422_REV_EXT 0x80CD
+ GL_422_AVERAGE_EXT 0x80CE
+ GL_422_REV_AVERAGE_EXT 0x80CF
diff --git a/glew/auto/extensions/gl/GL_EXT_Cg_shader b/glew/auto/extensions/gl/GL_EXT_Cg_shader
new file mode 100644
index 0000000..b2df900
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_Cg_shader
@@ -0,0 +1,6 @@
+GL_EXT_Cg_shader
+http://download.nvidia.com/developer/GLSL/GLSL%20Release%20Notes%20for%20Release%2060.pdf
+GL_EXT_Cg_shader
+
+ GL_CG_VERTEX_SHADER_EXT 0x890E
+ GL_CG_FRAGMENT_SHADER_EXT 0x890F
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_image_array b/glew/auto/extensions/gl/GL_EXT_EGL_image_array
new file mode 100644
index 0000000..a916378
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_image_array
@@ -0,0 +1,4 @@
+GL_EXT_EGL_image_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_array.txt
+GL_EXT_EGL_image_array
+
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_image_external_wrap_modes b/glew/auto/extensions/gl/GL_EXT_EGL_image_external_wrap_modes
new file mode 100644
index 0000000..9fcae5a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_image_external_wrap_modes
@@ -0,0 +1,4 @@
+GL_EXT_EGL_image_external_wrap_modes
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_external_wrap_modes.txt
+GL_EXT_EGL_image_external_wrap_modes
+
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_image_storage b/glew/auto/extensions/gl/GL_EXT_EGL_image_storage
new file mode 100644
index 0000000..dfab6b2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_image_storage
@@ -0,0 +1,6 @@
+GL_EXT_EGL_image_storage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_storage.txt
+GL_EXT_EGL_image_storage
+
+ void glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list)
+ void glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list)
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_image_storage_compression b/glew/auto/extensions/gl/GL_EXT_EGL_image_storage_compression
new file mode 100644
index 0000000..de64135
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_image_storage_compression
@@ -0,0 +1,7 @@
+GL_EXT_EGL_image_storage_compression
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_storage_compression.txt
+GL_EXT_EGL_image_storage_compression
+
+ GL_SURFACE_COMPRESSION_EXT 0x96C0
+ GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
+ GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
diff --git a/glew/auto/extensions/gl/GL_EXT_EGL_sync b/glew/auto/extensions/gl/GL_EXT_EGL_sync
new file mode 100644
index 0000000..37beacc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_EGL_sync
@@ -0,0 +1,4 @@
+GL_EXT_EGL_sync
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_sync.txt
+GL_EXT_EGL_sync
+
diff --git a/glew/auto/extensions/gl/GL_EXT_YUV_target b/glew/auto/extensions/gl/GL_EXT_YUV_target
new file mode 100644
index 0000000..8123ee7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_YUV_target
@@ -0,0 +1,5 @@
+GL_EXT_YUV_target
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_YUV_target.txt
+GL_EXT_YUV_target
+
+ GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7
diff --git a/glew/auto/extensions/gl/GL_EXT_abgr b/glew/auto/extensions/gl/GL_EXT_abgr
new file mode 100644
index 0000000..7954859
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_abgr
@@ -0,0 +1,5 @@
+GL_EXT_abgr
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_abgr.txt
+GL_EXT_abgr
+
+ GL_ABGR_EXT 0x8000
diff --git a/glew/auto/extensions/gl/GL_EXT_base_instance b/glew/auto/extensions/gl/GL_EXT_base_instance
new file mode 100644
index 0000000..a4a26ff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_base_instance
@@ -0,0 +1,7 @@
+GL_EXT_base_instance
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_base_instance.txt
+GL_EXT_base_instance
+
+ void glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)
+ void glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance)
+ void glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)
diff --git a/glew/auto/extensions/gl/GL_EXT_bgra b/glew/auto/extensions/gl/GL_EXT_bgra
new file mode 100644
index 0000000..e80cb8d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_bgra
@@ -0,0 +1,6 @@
+GL_EXT_bgra
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_bgra.txt
+GL_EXT_bgra
+
+ GL_BGR_EXT 0x80E0
+ GL_BGRA_EXT 0x80E1
diff --git a/glew/auto/extensions/gl/GL_EXT_bindable_uniform b/glew/auto/extensions/gl/GL_EXT_bindable_uniform
new file mode 100644
index 0000000..00ec270
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_bindable_uniform
@@ -0,0 +1,13 @@
+GL_EXT_bindable_uniform
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_bindable_uniform.txt
+GL_EXT_bindable_uniform
+
+ GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
+ GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
+ GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
+ GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
+ GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
+ GL_UNIFORM_BUFFER_EXT 0x8DEE
+ void glUniformBufferEXT (GLuint program, GLint location, GLuint buffer)
+ GLint glGetUniformBufferSizeEXT (GLuint program, GLint location)
+ GLintptr glGetUniformOffsetEXT (GLuint program, GLint location)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_color b/glew/auto/extensions/gl/GL_EXT_blend_color
new file mode 100644
index 0000000..e70edf6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_color
@@ -0,0 +1,10 @@
+GL_EXT_blend_color
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_color.txt
+GL_EXT_blend_color
+
+ GL_CONSTANT_COLOR_EXT 0x8001
+ GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
+ GL_CONSTANT_ALPHA_EXT 0x8003
+ GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
+ GL_BLEND_COLOR_EXT 0x8005
+ void glBlendColorEXT (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_equation_separate b/glew/auto/extensions/gl/GL_EXT_blend_equation_separate
new file mode 100644
index 0000000..f3417e4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_equation_separate
@@ -0,0 +1,7 @@
+GL_EXT_blend_equation_separate
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_equation_separate.txt
+GL_EXT_blend_equation_separate
+
+ GL_BLEND_EQUATION_RGB_EXT 0x8009
+ GL_BLEND_EQUATION_ALPHA_EXT 0x883D
+ void glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_func_extended b/glew/auto/extensions/gl/GL_EXT_blend_func_extended
new file mode 100644
index 0000000..fc28e2f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_func_extended
@@ -0,0 +1,14 @@
+GL_EXT_blend_func_extended
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_func_extended.txt
+GL_EXT_blend_func_extended
+
+ GL_SRC_ALPHA_SATURATE_EXT 0x0308
+ GL_SRC1_ALPHA_EXT 0x8589
+ GL_SRC1_COLOR_EXT 0x88F9
+ GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
+ GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
+ GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
+ GL_LOCATION_INDEX_EXT 0x930F
+ void glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name)
+ GLint glGetFragDataIndexEXT (GLuint program, const GLchar * name)
+ GLint glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar* name)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_func_separate b/glew/auto/extensions/gl/GL_EXT_blend_func_separate
new file mode 100644
index 0000000..d8db1f1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_func_separate
@@ -0,0 +1,9 @@
+GL_EXT_blend_func_separate
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_func_separate.txt
+GL_EXT_blend_func_separate
+
+ GL_BLEND_DST_RGB_EXT 0x80C8
+ GL_BLEND_SRC_RGB_EXT 0x80C9
+ GL_BLEND_DST_ALPHA_EXT 0x80CA
+ GL_BLEND_SRC_ALPHA_EXT 0x80CB
+ void glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_logic_op b/glew/auto/extensions/gl/GL_EXT_blend_logic_op
new file mode 100644
index 0000000..e29e418
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_logic_op
@@ -0,0 +1,4 @@
+GL_EXT_blend_logic_op
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_logic_op.txt
+GL_EXT_blend_logic_op
+
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_minmax b/glew/auto/extensions/gl/GL_EXT_blend_minmax
new file mode 100644
index 0000000..8e33e6f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_minmax
@@ -0,0 +1,9 @@
+GL_EXT_blend_minmax
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_minmax.txt
+GL_EXT_blend_minmax
+
+ GL_FUNC_ADD_EXT 0x8006
+ GL_MIN_EXT 0x8007
+ GL_MAX_EXT 0x8008
+ GL_BLEND_EQUATION_EXT 0x8009
+ void glBlendEquationEXT (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_blend_subtract b/glew/auto/extensions/gl/GL_EXT_blend_subtract
new file mode 100644
index 0000000..eb93fba
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_blend_subtract
@@ -0,0 +1,6 @@
+GL_EXT_blend_subtract
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_subtract.txt
+GL_EXT_blend_subtract
+
+ GL_FUNC_SUBTRACT_EXT 0x800A
+ GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
diff --git a/glew/auto/extensions/gl/GL_EXT_buffer_storage b/glew/auto/extensions/gl/GL_EXT_buffer_storage
new file mode 100644
index 0000000..5bee2c4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_buffer_storage
@@ -0,0 +1,15 @@
+GL_EXT_buffer_storage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_buffer_storage.txt
+GL_EXT_buffer_storage
+
+ GL_MAP_READ_BIT 0x0001
+ GL_MAP_WRITE_BIT 0x0002
+ GL_MAP_PERSISTENT_BIT_EXT 0x0040
+ GL_MAP_COHERENT_BIT_EXT 0x0080
+ GL_DYNAMIC_STORAGE_BIT_EXT 0x0100
+ GL_CLIENT_STORAGE_BIT_EXT 0x0200
+ GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000
+ GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F
+ GL_BUFFER_STORAGE_FLAGS_EXT 0x8220
+ void glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
+ void glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)
diff --git a/glew/auto/extensions/gl/GL_EXT_clear_texture b/glew/auto/extensions/gl/GL_EXT_clear_texture
new file mode 100644
index 0000000..f575d91
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_clear_texture
@@ -0,0 +1,6 @@
+GL_EXT_clear_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clear_texture.txt
+GL_EXT_clear_texture
+
+ void glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
+ void glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
diff --git a/glew/auto/extensions/gl/GL_EXT_clip_control b/glew/auto/extensions/gl/GL_EXT_clip_control
new file mode 100644
index 0000000..527358c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_clip_control
@@ -0,0 +1,11 @@
+GL_EXT_clip_control
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_control.txt
+GL_EXT_clip_control
+
+ GL_LOWER_LEFT_EXT 0x8CA1
+ GL_UPPER_LEFT_EXT 0x8CA2
+ GL_CLIP_ORIGIN_EXT 0x935C
+ GL_CLIP_DEPTH_MODE_EXT 0x935D
+ GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
+ GL_ZERO_TO_ONE_EXT 0x935F
+ void glClipControlEXT (GLenum origin, GLenum depth)
diff --git a/glew/auto/extensions/gl/GL_EXT_clip_cull_distance b/glew/auto/extensions/gl/GL_EXT_clip_cull_distance
new file mode 100644
index 0000000..ff1f926
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_clip_cull_distance
@@ -0,0 +1,15 @@
+GL_EXT_clip_cull_distance
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_cull_distance.txt
+GL_EXT_clip_cull_distance
+
+ GL_MAX_CLIP_DISTANCES_EXT 0x0D32
+ GL_CLIP_DISTANCE0_EXT 0x3000
+ GL_CLIP_DISTANCE1_EXT 0x3001
+ GL_CLIP_DISTANCE2_EXT 0x3002
+ GL_CLIP_DISTANCE3_EXT 0x3003
+ GL_CLIP_DISTANCE4_EXT 0x3004
+ GL_CLIP_DISTANCE5_EXT 0x3005
+ GL_CLIP_DISTANCE6_EXT 0x3006
+ GL_CLIP_DISTANCE7_EXT 0x3007
+ GL_MAX_CULL_DISTANCES_EXT 0x82F9
+ GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA
diff --git a/glew/auto/extensions/gl/GL_EXT_clip_volume_hint b/glew/auto/extensions/gl/GL_EXT_clip_volume_hint
new file mode 100644
index 0000000..c4bb91b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_clip_volume_hint
@@ -0,0 +1,5 @@
+GL_EXT_clip_volume_hint
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_volume_hint.txt
+GL_EXT_clip_volume_hint
+
+ GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
diff --git a/glew/auto/extensions/gl/GL_EXT_cmyka b/glew/auto/extensions/gl/GL_EXT_cmyka
new file mode 100644
index 0000000..18ab3d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_cmyka
@@ -0,0 +1,8 @@
+GL_EXT_cmyka
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_cmyka.txt
+GL_EXT_cmyka
+
+ GL_CMYK_EXT 0x800C
+ GL_CMYKA_EXT 0x800D
+ GL_PACK_CMYK_HINT_EXT 0x800E
+ GL_UNPACK_CMYK_HINT_EXT 0x800F
diff --git a/glew/auto/extensions/gl/GL_EXT_color_buffer_float b/glew/auto/extensions/gl/GL_EXT_color_buffer_float
new file mode 100644
index 0000000..0fa95a3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_color_buffer_float
@@ -0,0 +1,4 @@
+GL_EXT_color_buffer_float
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_float.txt
+GL_EXT_color_buffer_float
+
diff --git a/glew/auto/extensions/gl/GL_EXT_color_buffer_half_float b/glew/auto/extensions/gl/GL_EXT_color_buffer_half_float
new file mode 100644
index 0000000..3b8d7b2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_color_buffer_half_float
@@ -0,0 +1,10 @@
+GL_EXT_color_buffer_half_float
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_half_float.txt
+GL_EXT_color_buffer_half_float
+
+ GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211
+ GL_R16F_EXT 0x822D
+ GL_RG16F_EXT 0x822F
+ GL_RGBA16F_EXT 0x881A
+ GL_RGB16F_EXT 0x881B
+ GL_UNSIGNED_NORMALIZED_EXT 0x8C17
diff --git a/glew/auto/extensions/gl/GL_EXT_color_subtable b/glew/auto/extensions/gl/GL_EXT_color_subtable
new file mode 100644
index 0000000..6a42010
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_color_subtable
@@ -0,0 +1,6 @@
+GL_EXT_color_subtable
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_subtable.txt
+GL_EXT_color_subtable
+
+ void glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data)
+ void glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
diff --git a/glew/auto/extensions/gl/GL_EXT_compiled_vertex_array b/glew/auto/extensions/gl/GL_EXT_compiled_vertex_array
new file mode 100644
index 0000000..e801e55
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_compiled_vertex_array
@@ -0,0 +1,8 @@
+GL_EXT_compiled_vertex_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_compiled_vertex_array.txt
+GL_EXT_compiled_vertex_array
+
+ GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
+ GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
+ void glLockArraysEXT (GLint first, GLsizei count)
+ void glUnlockArraysEXT (void)
diff --git a/glew/auto/extensions/gl/GL_EXT_compressed_ETC1_RGB8_sub_texture b/glew/auto/extensions/gl/GL_EXT_compressed_ETC1_RGB8_sub_texture
new file mode 100644
index 0000000..a8879af
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_compressed_ETC1_RGB8_sub_texture
@@ -0,0 +1,4 @@
+GL_EXT_compressed_ETC1_RGB8_sub_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_compressed_ETC1_RGB8_sub_texture.txt
+GL_EXT_compressed_ETC1_RGB8_sub_texture
+
diff --git a/glew/auto/extensions/gl/GL_EXT_conservative_depth b/glew/auto/extensions/gl/GL_EXT_conservative_depth
new file mode 100644
index 0000000..dc71faa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_conservative_depth
@@ -0,0 +1,4 @@
+GL_EXT_conservative_depth
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_conservative_depth.txt
+GL_EXT_conservative_depth
+
diff --git a/glew/auto/extensions/gl/GL_EXT_convolution b/glew/auto/extensions/gl/GL_EXT_convolution
new file mode 100644
index 0000000..fdeab52
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_convolution
@@ -0,0 +1,37 @@
+GL_EXT_convolution
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_convolution.txt
+GL_EXT_convolution
+
+ GL_CONVOLUTION_1D_EXT 0x8010
+ GL_CONVOLUTION_2D_EXT 0x8011
+ GL_SEPARABLE_2D_EXT 0x8012
+ GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
+ GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
+ GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
+ GL_REDUCE_EXT 0x8016
+ GL_CONVOLUTION_FORMAT_EXT 0x8017
+ GL_CONVOLUTION_WIDTH_EXT 0x8018
+ GL_CONVOLUTION_HEIGHT_EXT 0x8019
+ GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
+ GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
+ GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
+ GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
+ GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
+ GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
+ GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
+ GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
+ GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
+ GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
+ void glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image)
+ void glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image)
+ void glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat param)
+ void glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat* params)
+ void glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint param)
+ void glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint* params)
+ void glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+ void glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image)
+ void glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat* params)
+ void glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint* params)
+ void glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span)
+ void glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column)
diff --git a/glew/auto/extensions/gl/GL_EXT_coordinate_frame b/glew/auto/extensions/gl/GL_EXT_coordinate_frame
new file mode 100644
index 0000000..b57c8d7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_coordinate_frame
@@ -0,0 +1,20 @@
+GL_EXT_coordinate_frame
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_coordinate_frame.txt
+GL_EXT_coordinate_frame
+
+ GL_TANGENT_ARRAY_EXT 0x8439
+ GL_BINORMAL_ARRAY_EXT 0x843A
+ GL_CURRENT_TANGENT_EXT 0x843B
+ GL_CURRENT_BINORMAL_EXT 0x843C
+ GL_TANGENT_ARRAY_TYPE_EXT 0x843E
+ GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
+ GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
+ GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
+ GL_TANGENT_ARRAY_POINTER_EXT 0x8442
+ GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
+ GL_MAP1_TANGENT_EXT 0x8444
+ GL_MAP2_TANGENT_EXT 0x8445
+ GL_MAP1_BINORMAL_EXT 0x8446
+ GL_MAP2_BINORMAL_EXT 0x8447
+ void glBinormalPointerEXT (GLenum type, GLsizei stride, void *pointer)
+ void glTangentPointerEXT (GLenum type, GLsizei stride, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_copy_image b/glew/auto/extensions/gl/GL_EXT_copy_image
new file mode 100644
index 0000000..fba0373
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_copy_image
@@ -0,0 +1,5 @@
+GL_EXT_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_image.txt
+GL_EXT_copy_image
+
+ void glCopyImageSubDataEXT (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
diff --git a/glew/auto/extensions/gl/GL_EXT_copy_texture b/glew/auto/extensions/gl/GL_EXT_copy_texture
new file mode 100644
index 0000000..b1ba382
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_copy_texture
@@ -0,0 +1,9 @@
+GL_EXT_copy_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_texture.txt
+GL_EXT_copy_texture
+
+ void glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+ void glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+ void glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+ void glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_EXT_cull_vertex b/glew/auto/extensions/gl/GL_EXT_cull_vertex
new file mode 100644
index 0000000..8e82290
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_cull_vertex
@@ -0,0 +1,9 @@
+GL_EXT_cull_vertex
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_cull_vertex.txt
+GL_EXT_cull_vertex
+
+ GL_CULL_VERTEX_EXT 0x81AA
+ GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
+ GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+ void glCullParameterdvEXT (GLenum pname, GLdouble* params)
+ void glCullParameterfvEXT (GLenum pname, GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_debug_label b/glew/auto/extensions/gl/GL_EXT_debug_label
new file mode 100644
index 0000000..74b8855
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_debug_label
@@ -0,0 +1,12 @@
+GL_EXT_debug_label
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_debug_label.txt
+GL_EXT_debug_label
+
+ GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
+ GL_PROGRAM_OBJECT_EXT 0x8B40
+ GL_SHADER_OBJECT_EXT 0x8B48
+ GL_BUFFER_OBJECT_EXT 0x9151
+ GL_QUERY_OBJECT_EXT 0x9153
+ GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
+ void glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei* length, GLchar *label)
+ void glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar* label)
diff --git a/glew/auto/extensions/gl/GL_EXT_debug_marker b/glew/auto/extensions/gl/GL_EXT_debug_marker
new file mode 100644
index 0000000..ce9ffe4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_debug_marker
@@ -0,0 +1,7 @@
+GL_EXT_debug_marker
+http://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt
+GL_EXT_debug_marker
+
+ void glInsertEventMarkerEXT (GLsizei length, const GLchar* marker)
+ void glPushGroupMarkerEXT (GLsizei length, const GLchar* marker)
+ void glPopGroupMarkerEXT (void)
diff --git a/glew/auto/extensions/gl/GL_EXT_depth_bounds_test b/glew/auto/extensions/gl/GL_EXT_depth_bounds_test
new file mode 100644
index 0000000..da2a453
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_depth_bounds_test
@@ -0,0 +1,7 @@
+GL_EXT_depth_bounds_test
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_depth_bounds_test.txt
+GL_EXT_depth_bounds_test
+
+ GL_DEPTH_BOUNDS_TEST_EXT 0x8890
+ GL_DEPTH_BOUNDS_EXT 0x8891
+ void glDepthBoundsEXT (GLclampd zmin, GLclampd zmax)
diff --git a/glew/auto/extensions/gl/GL_EXT_depth_clamp b/glew/auto/extensions/gl/GL_EXT_depth_clamp
new file mode 100644
index 0000000..2aee70f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_depth_clamp
@@ -0,0 +1,5 @@
+GL_EXT_depth_clamp
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_depth_clamp.txt
+GL_EXT_depth_clamp
+
+ GL_DEPTH_CLAMP_EXT 0x864F
diff --git a/glew/auto/extensions/gl/GL_EXT_direct_state_access b/glew/auto/extensions/gl/GL_EXT_direct_state_access
new file mode 100644
index 0000000..6fa82bb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_direct_state_access
@@ -0,0 +1,221 @@
+GL_EXT_direct_state_access
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_direct_state_access.txt
+GL_EXT_direct_state_access
+
+ GL_PROGRAM_MATRIX_EXT 0x8E2D
+ GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
+ GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
+ void glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture)
+ GLenum glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target)
+ void glClientAttribDefaultEXT (GLbitfield mask)
+ void glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
+ void glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+ void glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+ void glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+ void glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+ void glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+ void glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+ void glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glDisableClientStateIndexedEXT (GLenum array, GLuint index)
+ void glDisableClientStateiEXT (GLenum array, GLuint index)
+ void glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index)
+ void glDisableVertexArrayEXT (GLuint vaobj, GLenum array)
+ void glEnableClientStateIndexedEXT (GLenum array, GLuint index)
+ void glEnableClientStateiEXT (GLenum array, GLuint index)
+ void glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index)
+ void glEnableVertexArrayEXT (GLuint vaobj, GLenum array)
+ void glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length)
+ void glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode)
+ void glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum* bufs)
+ void glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode)
+ void glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target)
+ void glGenerateTextureMipmapEXT (GLuint texture, GLenum target)
+ void glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, void *img)
+ void glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint level, void *img)
+ void glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble* params)
+ void glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble* params)
+ void glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat* params)
+ void glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat* params)
+ void glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint* param)
+ void glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat* params)
+ void glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint* params)
+ void glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params)
+ void glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params)
+ void glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint* params)
+ void glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
+ void glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params)
+ void glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params)
+ void glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint* params)
+ void glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint* params)
+ void glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat* params)
+ void glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint* params)
+ void glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint* params)
+ void glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void** params)
+ void glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)
+ void glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params)
+ void glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint* params)
+ void glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint* params)
+ void glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble* params)
+ void glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat* params)
+ void glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string)
+ void glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint* params)
+ void glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint* params)
+ void glGetPointerIndexedvEXT (GLenum target, GLuint index, void** params)
+ void glGetPointeri_vEXT (GLenum pname, GLuint index, void** params)
+ void glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
+ void glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params)
+ void glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params)
+ void glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint* params)
+ void glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint* params)
+ void glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat* params)
+ void glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint* params)
+ void glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint* param)
+ void glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint* param)
+ void glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void** param)
+ void glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void** param)
+ void * glMapNamedBufferEXT (GLuint buffer, GLenum access)
+ void * glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)
+ void glMatrixFrustumEXT (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f)
+ void glMatrixLoadIdentityEXT (GLenum matrixMode)
+ void glMatrixLoadTransposedEXT (GLenum matrixMode, const GLdouble* m)
+ void glMatrixLoadTransposefEXT (GLenum matrixMode, const GLfloat* m)
+ void glMatrixLoaddEXT (GLenum matrixMode, const GLdouble* m)
+ void glMatrixLoadfEXT (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMultTransposedEXT (GLenum matrixMode, const GLdouble* m)
+ void glMatrixMultTransposefEXT (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMultdEXT (GLenum matrixMode, const GLdouble* m)
+ void glMatrixMultfEXT (GLenum matrixMode, const GLfloat* m)
+ void glMatrixOrthoEXT (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f)
+ void glMatrixPopEXT (GLenum matrixMode)
+ void glMatrixPushEXT (GLenum matrixMode)
+ void glMatrixRotatedEXT (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
+ void glMatrixRotatefEXT (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
+ void glMatrixScaledEXT (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z)
+ void glMatrixScalefEXT (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z)
+ void glMatrixTranslatedEXT (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z)
+ void glMatrixTranslatefEXT (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z)
+ void glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer)
+ void glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer)
+ void glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param)
+ void glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params)
+ void glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param)
+ void glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint* params)
+ void glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param)
+ void glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params)
+ void glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param)
+ void glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params)
+ void glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param)
+ void glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint* params)
+ void glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint* params)
+ void glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint* params)
+ void glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param)
+ void glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param)
+ void glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param)
+ void glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint* param)
+ void glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer)
+ void glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
+ void glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
+ void glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)
+ void glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
+ void glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+ void glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+ void glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)
+ void glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face)
+ void glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)
+ void glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble* params)
+ void glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat* params)
+ void glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)
+ void glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint* params)
+ void glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint* params)
+ void glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params)
+ void glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params)
+ void glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params)
+ void glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string)
+ void glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
+ void glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+ void glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0)
+ void glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform1iEXT (GLuint program, GLint location, GLint v0)
+ void glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0)
+ void glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1)
+ void glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1)
+ void glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1)
+ void glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
+ void glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
+ void glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
+ void glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
+ void glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat* value)
+ void glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
+ void glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint* value)
+ void glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
+ void glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint* value)
+ void glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glPushClientAttribDefaultEXT (GLbitfield mask)
+ void glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer)
+ void glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint* params)
+ void glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint* params)
+ void glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param)
+ void glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat* param)
+ void glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param)
+ void glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint* param)
+ void glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer)
+ void glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
+ void glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
+ void glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
+ GLboolean glUnmapNamedBufferEXT (GLuint buffer)
+ void glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset)
+ void glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset)
+ void glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_EXT_discard_framebuffer b/glew/auto/extensions/gl/GL_EXT_discard_framebuffer
new file mode 100644
index 0000000..ddf9f3a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_discard_framebuffer
@@ -0,0 +1,8 @@
+GL_EXT_discard_framebuffer
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_discard_framebuffer.txt
+GL_EXT_discard_framebuffer
+
+ GL_COLOR_EXT 0x1800
+ GL_DEPTH_EXT 0x1801
+ GL_STENCIL_EXT 0x1802
+ void glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum* attachments)
diff --git a/glew/auto/extensions/gl/GL_EXT_disjoint_timer_query b/glew/auto/extensions/gl/GL_EXT_disjoint_timer_query
new file mode 100644
index 0000000..b6db945
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_disjoint_timer_query
@@ -0,0 +1,21 @@
+GL_EXT_disjoint_timer_query
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_disjoint_timer_query.txt
+GL_EXT_disjoint_timer_query
+
+ GL_QUERY_COUNTER_BITS_EXT 0x8864
+ GL_CURRENT_QUERY_EXT 0x8865
+ GL_QUERY_RESULT_EXT 0x8866
+ GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+ GL_TIME_ELAPSED_EXT 0x88BF
+ GL_TIMESTAMP_EXT 0x8E28
+ GL_GPU_DISJOINT_EXT 0x8FBB
+ void glBeginQueryEXT (GLenum target, GLuint id)
+ void glDeleteQueriesEXT (GLsizei n, const GLuint* ids)
+ void glEndQueryEXT (GLenum target)
+ void glGenQueriesEXT (GLsizei n, GLuint* ids)
+ void glGetInteger64vEXT (GLenum pname, GLint64* data)
+ void glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint* params)
+ void glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint* params)
+ void glGetQueryivEXT (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsQueryEXT (GLuint id)
+ void glQueryCounterEXT (GLuint id, GLenum target)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_buffers b/glew/auto/extensions/gl/GL_EXT_draw_buffers
new file mode 100644
index 0000000..eb0a405
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_buffers
@@ -0,0 +1,39 @@
+GL_EXT_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers.txt
+GL_EXT_draw_buffers
+
+ GL_MAX_DRAW_BUFFERS_EXT 0x8824
+ GL_DRAW_BUFFER0_EXT 0x8825
+ GL_DRAW_BUFFER1_EXT 0x8826
+ GL_DRAW_BUFFER2_EXT 0x8827
+ GL_DRAW_BUFFER3_EXT 0x8828
+ GL_DRAW_BUFFER4_EXT 0x8829
+ GL_DRAW_BUFFER5_EXT 0x882A
+ GL_DRAW_BUFFER6_EXT 0x882B
+ GL_DRAW_BUFFER7_EXT 0x882C
+ GL_DRAW_BUFFER8_EXT 0x882D
+ GL_DRAW_BUFFER9_EXT 0x882E
+ GL_DRAW_BUFFER10_EXT 0x882F
+ GL_DRAW_BUFFER11_EXT 0x8830
+ GL_DRAW_BUFFER12_EXT 0x8831
+ GL_DRAW_BUFFER13_EXT 0x8832
+ GL_DRAW_BUFFER14_EXT 0x8833
+ GL_DRAW_BUFFER15_EXT 0x8834
+ GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+ GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+ GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+ GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+ GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+ GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+ GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+ GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+ GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+ GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+ GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+ GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+ GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+ GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+ GL_COLOR_ATTACHMENT13_EXT 0x8CED
+ GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+ GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+ void glDrawBuffersEXT (GLsizei n, const GLenum* bufs)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_buffers2 b/glew/auto/extensions/gl/GL_EXT_draw_buffers2
new file mode 100644
index 0000000..02cb158
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_buffers2
@@ -0,0 +1,10 @@
+GL_EXT_draw_buffers2
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers2.txt
+GL_EXT_draw_buffers2
+
+ void glColorMaskIndexedEXT (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
+ void glDisableIndexedEXT (GLenum target, GLuint index)
+ void glEnableIndexedEXT (GLenum target, GLuint index)
+ void glGetBooleanIndexedvEXT (GLenum value, GLuint index, GLboolean* data)
+ void glGetIntegerIndexedvEXT (GLenum value, GLuint index, GLint* data)
+ GLboolean glIsEnabledIndexedEXT (GLenum target, GLuint index)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_buffers_indexed b/glew/auto/extensions/gl/GL_EXT_draw_buffers_indexed
new file mode 100644
index 0000000..cfaaf0a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_buffers_indexed
@@ -0,0 +1,12 @@
+GL_EXT_draw_buffers_indexed
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers_indexed.txt
+GL_EXT_draw_buffers_indexed
+
+ void glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
+ void glBlendEquationiEXT (GLuint buf, GLenum mode)
+ void glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+ void glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst)
+ void glColorMaskiEXT (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
+ void glDisableiEXT (GLenum target, GLuint index)
+ void glEnableiEXT (GLenum target, GLuint index)
+ GLboolean glIsEnablediEXT (GLenum target, GLuint index)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_elements_base_vertex b/glew/auto/extensions/gl/GL_EXT_draw_elements_base_vertex
new file mode 100644
index 0000000..2124d9d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_elements_base_vertex
@@ -0,0 +1,8 @@
+GL_EXT_draw_elements_base_vertex
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_elements_base_vertex.txt
+GL_EXT_draw_elements_base_vertex
+
+ void glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)
+ void glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)
+ void glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)
+ void glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei* count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_instanced b/glew/auto/extensions/gl/GL_EXT_draw_instanced
new file mode 100644
index 0000000..ca7f17e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_instanced
@@ -0,0 +1,6 @@
+GL_EXT_draw_instanced
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_draw_instanced.txt
+GL_EXT_draw_instanced
+
+ void glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount)
+ void glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_range_elements b/glew/auto/extensions/gl/GL_EXT_draw_range_elements
new file mode 100644
index 0000000..f5346de
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_range_elements
@@ -0,0 +1,7 @@
+GL_EXT_draw_range_elements
+http://oss.sgi.com/projects/ogl-sample/registry/EXT/draw_range_elements.txt
+GL_EXT_draw_range_elements
+
+ GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
+ GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
+ void glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)
diff --git a/glew/auto/extensions/gl/GL_EXT_draw_transform_feedback b/glew/auto/extensions/gl/GL_EXT_draw_transform_feedback
new file mode 100644
index 0000000..1bf814a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_draw_transform_feedback
@@ -0,0 +1,6 @@
+GL_EXT_draw_transform_feedback
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_transform_feedback.txt
+GL_EXT_draw_transform_feedback
+
+ void glDrawTransformFeedbackEXT (GLenum mode, GLuint id)
+ void glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount)
diff --git a/glew/auto/extensions/gl/GL_EXT_external_buffer b/glew/auto/extensions/gl/GL_EXT_external_buffer
new file mode 100644
index 0000000..25a3ca6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_external_buffer
@@ -0,0 +1,7 @@
+GL_EXT_external_buffer
+http://www.opengl.org/registry/specs/EXT/external_buffer.txt
+GL_EXT_external_buffer
+
+ void glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags)
+ void glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags)
+ typedef void* GLeglClientBufferEXT \ No newline at end of file
diff --git a/glew/auto/extensions/gl/GL_EXT_float_blend b/glew/auto/extensions/gl/GL_EXT_float_blend
new file mode 100644
index 0000000..efed1a9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_float_blend
@@ -0,0 +1,4 @@
+GL_EXT_float_blend
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_float_blend.txt
+GL_EXT_float_blend
+
diff --git a/glew/auto/extensions/gl/GL_EXT_fog_coord b/glew/auto/extensions/gl/GL_EXT_fog_coord
new file mode 100644
index 0000000..148866a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_fog_coord
@@ -0,0 +1,17 @@
+GL_EXT_fog_coord
+http://oss.sgi.com/projects/ogl-sample/registry/EXT/fog_coord.txt
+GL_EXT_fog_coord
+
+ GL_FOG_COORDINATE_SOURCE_EXT 0x8450
+ GL_FOG_COORDINATE_EXT 0x8451
+ GL_FRAGMENT_DEPTH_EXT 0x8452
+ GL_CURRENT_FOG_COORDINATE_EXT 0x8453
+ GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
+ GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
+ GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
+ GL_FOG_COORDINATE_ARRAY_EXT 0x8457
+ void glFogCoordfEXT (GLfloat coord)
+ void glFogCoordfvEXT (const GLfloat *coord)
+ void glFogCoorddEXT (GLdouble coord)
+ void glFogCoorddvEXT (const GLdouble *coord)
+ void glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_frag_depth b/glew/auto/extensions/gl/GL_EXT_frag_depth
new file mode 100644
index 0000000..cb5f316
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_frag_depth
@@ -0,0 +1,4 @@
+GL_EXT_frag_depth
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_frag_depth.txt
+GL_EXT_frag_depth
+
diff --git a/glew/auto/extensions/gl/GL_EXT_fragment_lighting b/glew/auto/extensions/gl/GL_EXT_fragment_lighting
new file mode 100644
index 0000000..af9491a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_fragment_lighting
@@ -0,0 +1,36 @@
+GL_EXT_fragment_lighting
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_fragment_lighting.txt
+GL_EXT_fragment_lighting
+
+ GL_FRAGMENT_LIGHTING_EXT 0x8400
+ GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401
+ GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402
+ GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403
+ GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404
+ GL_MAX_ACTIVE_LIGHTS_EXT 0x8405
+ GL_CURRENT_RASTER_NORMAL_EXT 0x8406
+ GL_LIGHT_ENV_MODE_EXT 0x8407
+ GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408
+ GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409
+ GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A
+ GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B
+ GL_FRAGMENT_LIGHT0_EXT 0x840C
+ GL_FRAGMENT_LIGHT7_EXT 0x8413
+ void glFragmentColorMaterialEXT (GLenum face, GLenum mode)
+ void glFragmentLightModelfEXT (GLenum pname, GLfloat param)
+ void glFragmentLightModelfvEXT (GLenum pname, GLfloat* params)
+ void glFragmentLightModeliEXT (GLenum pname, GLint param)
+ void glFragmentLightModelivEXT (GLenum pname, GLint* params)
+ void glFragmentLightfEXT (GLenum light, GLenum pname, GLfloat param)
+ void glFragmentLightfvEXT (GLenum light, GLenum pname, GLfloat* params)
+ void glFragmentLightiEXT (GLenum light, GLenum pname, GLint param)
+ void glFragmentLightivEXT (GLenum light, GLenum pname, GLint* params)
+ void glFragmentMaterialfEXT (GLenum face, GLenum pname, const GLfloat param)
+ void glFragmentMaterialfvEXT (GLenum face, GLenum pname, const GLfloat* params)
+ void glFragmentMaterialiEXT (GLenum face, GLenum pname, const GLint param)
+ void glFragmentMaterialivEXT (GLenum face, GLenum pname, const GLint* params)
+ void glGetFragmentLightfvEXT (GLenum light, GLenum pname, GLfloat* params)
+ void glGetFragmentLightivEXT (GLenum light, GLenum pname, GLint* params)
+ void glGetFragmentMaterialfvEXT (GLenum face, GLenum pname, const GLfloat* params)
+ void glGetFragmentMaterialivEXT (GLenum face, GLenum pname, const GLint* params)
+ void glLightEnviEXT (GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_blit b/glew/auto/extensions/gl/GL_EXT_framebuffer_blit
new file mode 100644
index 0000000..24ca853
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_blit
@@ -0,0 +1,9 @@
+GL_EXT_framebuffer_blit
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_blit.txt
+GL_EXT_framebuffer_blit
+
+ GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
+ GL_READ_FRAMEBUFFER_EXT 0x8CA8
+ GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
+ void glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample b/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample
new file mode 100644
index 0000000..2463a1b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample
@@ -0,0 +1,10 @@
+GL_EXT_framebuffer_multisample
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample.txt
+GL_EXT_framebuffer_multisample
+
+ GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+ GL_MAX_SAMPLES_EXT 0x8D57
+ void glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+ GL_MAX_SAMPLES_EXT 0x8D57
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample_blit_scaled b/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample_blit_scaled
new file mode 100644
index 0000000..947488f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_multisample_blit_scaled
@@ -0,0 +1,6 @@
+GL_EXT_framebuffer_multisample_blit_scaled
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample_blit_scaled.txt
+GL_EXT_framebuffer_multisample_blit_scaled
+
+ GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA
+ GL_SCALED_RESOLVE_NICEST_EXT 0x90BB
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_object b/glew/auto/extensions/gl/GL_EXT_framebuffer_object
new file mode 100644
index 0000000..7165eab
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_object
@@ -0,0 +1,72 @@
+GL_EXT_framebuffer_object
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_object.txt
+GL_EXT_framebuffer_object
+
+ GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
+ GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
+ GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
+ GL_RENDERBUFFER_BINDING_EXT 0x8CA7
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
+ GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
+ GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
+ GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
+ GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
+ GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+ GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+ GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+ GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+ GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+ GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+ GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+ GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+ GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+ GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+ GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+ GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+ GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+ GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+ GL_COLOR_ATTACHMENT13_EXT 0x8CED
+ GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+ GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+ GL_DEPTH_ATTACHMENT_EXT 0x8D00
+ GL_STENCIL_ATTACHMENT_EXT 0x8D20
+ GL_FRAMEBUFFER_EXT 0x8D40
+ GL_RENDERBUFFER_EXT 0x8D41
+ GL_RENDERBUFFER_WIDTH_EXT 0x8D42
+ GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
+ GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
+ GL_STENCIL_INDEX1_EXT 0x8D46
+ GL_STENCIL_INDEX4_EXT 0x8D47
+ GL_STENCIL_INDEX8_EXT 0x8D48
+ GL_STENCIL_INDEX16_EXT 0x8D49
+ GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
+ GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
+ GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
+ GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
+ GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
+ GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
+ void glBindFramebufferEXT (GLenum target, GLuint framebuffer)
+ void glBindRenderbufferEXT (GLenum target, GLuint renderbuffer)
+ GLenum glCheckFramebufferStatusEXT (GLenum target)
+ void glDeleteFramebuffersEXT (GLsizei n, const GLuint* framebuffers)
+ void glDeleteRenderbuffersEXT (GLsizei n, const GLuint* renderbuffers)
+ void glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+ void glGenFramebuffersEXT (GLsizei n, GLuint* framebuffers)
+ void glGenRenderbuffersEXT (GLsizei n, GLuint* renderbuffers)
+ void glGenerateMipmapEXT (GLenum target)
+ void glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint* params)
+ void glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsFramebufferEXT (GLuint framebuffer)
+ GLboolean glIsRenderbufferEXT (GLuint renderbuffer)
+ void glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_EXT_framebuffer_sRGB b/glew/auto/extensions/gl/GL_EXT_framebuffer_sRGB
new file mode 100644
index 0000000..2f4c6ff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_framebuffer_sRGB
@@ -0,0 +1,6 @@
+GL_EXT_framebuffer_sRGB
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_framebuffer_sRGB.txt
+GL_EXT_framebuffer_sRGB
+
+ GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+ GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
diff --git a/glew/auto/extensions/gl/GL_EXT_geometry_point_size b/glew/auto/extensions/gl/GL_EXT_geometry_point_size
new file mode 100644
index 0000000..301e21e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_geometry_point_size
@@ -0,0 +1,37 @@
+GL_EXT_geometry_point_size
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_geometry_shader.txt
+GL_EXT_geometry_point_size
+
+ GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+ GL_LINES_ADJACENCY_EXT 0xA
+ GL_LINE_STRIP_ADJACENCY_EXT 0xB
+ GL_TRIANGLES_ADJACENCY_EXT 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+ GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+ GL_UNDEFINED_VERTEX_EXT 0x8260
+ GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+ GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+ GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+ GL_PRIMITIVES_GENERATED_EXT 0x8C87
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+ GL_GEOMETRY_SHADER_EXT 0x8DD9
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+ GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+ GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+ GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
diff --git a/glew/auto/extensions/gl/GL_EXT_geometry_shader b/glew/auto/extensions/gl/GL_EXT_geometry_shader
new file mode 100644
index 0000000..4838c01
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_geometry_shader
@@ -0,0 +1,37 @@
+GL_EXT_geometry_shader
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_geometry_shader.txt
+GL_EXT_geometry_shader
+
+ GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+ GL_LINES_ADJACENCY_EXT 0xA
+ GL_LINE_STRIP_ADJACENCY_EXT 0xB
+ GL_TRIANGLES_ADJACENCY_EXT 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+ GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+ GL_UNDEFINED_VERTEX_EXT 0x8260
+ GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+ GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+ GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+ GL_PRIMITIVES_GENERATED_EXT 0x8C87
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+ GL_GEOMETRY_SHADER_EXT 0x8DD9
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+ GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+ GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+ GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
diff --git a/glew/auto/extensions/gl/GL_EXT_geometry_shader4 b/glew/auto/extensions/gl/GL_EXT_geometry_shader4
new file mode 100644
index 0000000..a463c4c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_geometry_shader4
@@ -0,0 +1,27 @@
+GL_EXT_geometry_shader4
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_geometry_shader4.txt
+GL_EXT_geometry_shader4
+
+ GL_GEOMETRY_SHADER_EXT 0x8DD9
+ GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
+ GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
+ GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+ GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
+ GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
+ GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+ GL_LINES_ADJACENCY_EXT 0xA
+ GL_LINE_STRIP_ADJACENCY_EXT 0xB
+ GL_TRIANGLES_ADJACENCY_EXT 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
+ GL_PROGRAM_POINT_SIZE_EXT 0x8642
+ void glProgramParameteriEXT (GLuint program, GLenum pname, GLint value)
+ void glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level)
+ void glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)
diff --git a/glew/auto/extensions/gl/GL_EXT_gpu_program_parameters b/glew/auto/extensions/gl/GL_EXT_gpu_program_parameters
new file mode 100644
index 0000000..298bc36
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_gpu_program_parameters
@@ -0,0 +1,6 @@
+GL_EXT_gpu_program_parameters
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_program_parameters.txt
+GL_EXT_gpu_program_parameters
+
+ void glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat* params)
+ void glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_gpu_shader4 b/glew/auto/extensions/gl/GL_EXT_gpu_shader4
new file mode 100644
index 0000000..7e95dbc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_gpu_shader4
@@ -0,0 +1,64 @@
+GL_EXT_gpu_shader4
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_shader4.txt
+GL_EXT_gpu_shader4
+
+ GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
+ GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
+ GL_SAMPLER_BUFFER_EXT 0x8DC2
+ GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
+ GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
+ GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
+ GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
+ GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
+ GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
+ GL_INT_SAMPLER_1D_EXT 0x8DC9
+ GL_INT_SAMPLER_2D_EXT 0x8DCA
+ GL_INT_SAMPLER_3D_EXT 0x8DCB
+ GL_INT_SAMPLER_CUBE_EXT 0x8DCC
+ GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
+ GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
+ GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
+ GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+ GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
+ GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
+ GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
+ GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
+ GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
+ GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
+ GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
+ void glGetUniformuivEXT (GLuint program, GLint location, GLuint *params)
+ void glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name)
+ GLint glGetFragDataLocationEXT (GLuint program, const GLchar *name)
+ void glUniform1uiEXT (GLint location, GLuint v0)
+ void glUniform2uiEXT (GLint location, GLuint v0, GLuint v1)
+ void glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2)
+ void glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
+ void glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value)
+ void glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value)
+ void glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value)
+ void glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value)
+ void glVertexAttribI1iEXT (GLuint index, GLint x)
+ void glVertexAttribI2iEXT (GLuint index, GLint x, GLint y)
+ void glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z)
+ void glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w)
+ void glVertexAttribI1uiEXT (GLuint index, GLuint x)
+ void glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y)
+ void glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z)
+ void glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glVertexAttribI1ivEXT (GLuint index, const GLint *v)
+ void glVertexAttribI2ivEXT (GLuint index, const GLint *v)
+ void glVertexAttribI3ivEXT (GLuint index, const GLint *v)
+ void glVertexAttribI4ivEXT (GLuint index, const GLint *v)
+ void glVertexAttribI1uivEXT (GLuint index, const GLuint *v)
+ void glVertexAttribI2uivEXT (GLuint index, const GLuint *v)
+ void glVertexAttribI3uivEXT (GLuint index, const GLuint *v)
+ void glVertexAttribI4uivEXT (GLuint index, const GLuint *v)
+ void glVertexAttribI4bvEXT (GLuint index, const GLbyte *v)
+ void glVertexAttribI4svEXT (GLuint index, const GLshort *v)
+ void glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v)
+ void glVertexAttribI4usvEXT (GLuint index, const GLushort *v)
+ void glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
+ void glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params)
+ void glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params)
diff --git a/glew/auto/extensions/gl/GL_EXT_gpu_shader5 b/glew/auto/extensions/gl/GL_EXT_gpu_shader5
new file mode 100644
index 0000000..72fc0b4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_gpu_shader5
@@ -0,0 +1,4 @@
+GL_EXT_gpu_shader5
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_gpu_shader5.txt
+GL_EXT_gpu_shader5
+
diff --git a/glew/auto/extensions/gl/GL_EXT_histogram b/glew/auto/extensions/gl/GL_EXT_histogram
new file mode 100644
index 0000000..565d9ae
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_histogram
@@ -0,0 +1,27 @@
+GL_EXT_histogram
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_histogram.txt
+GL_EXT_histogram
+
+ GL_HISTOGRAM_EXT 0x8024
+ GL_PROXY_HISTOGRAM_EXT 0x8025
+ GL_HISTOGRAM_WIDTH_EXT 0x8026
+ GL_HISTOGRAM_FORMAT_EXT 0x8027
+ GL_HISTOGRAM_RED_SIZE_EXT 0x8028
+ GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
+ GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
+ GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
+ GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
+ GL_HISTOGRAM_SINK_EXT 0x802D
+ GL_MINMAX_EXT 0x802E
+ GL_MINMAX_FORMAT_EXT 0x802F
+ GL_MINMAX_SINK_EXT 0x8030
+ void glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values)
+ void glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat* params)
+ void glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint* params)
+ void glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values)
+ void glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat* params)
+ void glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint* params)
+ void glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
+ void glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink)
+ void glResetHistogramEXT (GLenum target)
+ void glResetMinmaxEXT (GLenum target)
diff --git a/glew/auto/extensions/gl/GL_EXT_index_array_formats b/glew/auto/extensions/gl/GL_EXT_index_array_formats
new file mode 100644
index 0000000..6b772e9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_index_array_formats
@@ -0,0 +1,4 @@
+GL_EXT_index_array_formats
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_array_formats.txt
+GL_EXT_index_array_formats
+
diff --git a/glew/auto/extensions/gl/GL_EXT_index_func b/glew/auto/extensions/gl/GL_EXT_index_func
new file mode 100644
index 0000000..7a2b8dd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_index_func
@@ -0,0 +1,5 @@
+GL_EXT_index_func
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_func.txt
+GL_EXT_index_func
+
+ void glIndexFuncEXT (GLenum func, GLfloat ref)
diff --git a/glew/auto/extensions/gl/GL_EXT_index_material b/glew/auto/extensions/gl/GL_EXT_index_material
new file mode 100644
index 0000000..e5a1e07
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_index_material
@@ -0,0 +1,5 @@
+GL_EXT_index_material
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_material.txt
+GL_EXT_index_material
+
+ void glIndexMaterialEXT (GLenum face, GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_index_texture b/glew/auto/extensions/gl/GL_EXT_index_texture
new file mode 100644
index 0000000..4157657
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_index_texture
@@ -0,0 +1,4 @@
+GL_EXT_index_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_texture.txt
+GL_EXT_index_texture
+
diff --git a/glew/auto/extensions/gl/GL_EXT_instanced_arrays b/glew/auto/extensions/gl/GL_EXT_instanced_arrays
new file mode 100644
index 0000000..da3fb1d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_instanced_arrays
@@ -0,0 +1,6 @@
+GL_EXT_instanced_arrays
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_instanced_arrays.txt
+GL_EXT_instanced_arrays
+
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE
+ void glVertexAttribDivisorEXT (GLuint index, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_EXT_light_texture b/glew/auto/extensions/gl/GL_EXT_light_texture
new file mode 100644
index 0000000..d38f050
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_light_texture
@@ -0,0 +1,16 @@
+GL_EXT_light_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_light_texture.txt
+GL_EXT_light_texture
+
+ GL_FRAGMENT_MATERIAL_EXT 0x8349
+ GL_FRAGMENT_NORMAL_EXT 0x834A
+ GL_FRAGMENT_COLOR_EXT 0x834C
+ GL_ATTENUATION_EXT 0x834D
+ GL_SHADOW_ATTENUATION_EXT 0x834E
+ GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
+ GL_TEXTURE_LIGHT_EXT 0x8350
+ GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
+ GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
+ void glApplyTextureEXT (GLenum mode)
+ void glTextureLightEXT (GLenum pname)
+ void glTextureMaterialEXT (GLenum face, GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_map_buffer_range b/glew/auto/extensions/gl/GL_EXT_map_buffer_range
new file mode 100644
index 0000000..7f05418
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_map_buffer_range
@@ -0,0 +1,12 @@
+GL_EXT_map_buffer_range
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_map_buffer_range.txt
+GL_EXT_map_buffer_range
+
+ GL_MAP_READ_BIT_EXT 0x0001
+ GL_MAP_WRITE_BIT_EXT 0x0002
+ GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004
+ GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008
+ GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010
+ GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020
+ void glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length)
+ void * glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
diff --git a/glew/auto/extensions/gl/GL_EXT_memory_object b/glew/auto/extensions/gl/GL_EXT_memory_object
new file mode 100644
index 0000000..5520422
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_memory_object
@@ -0,0 +1,34 @@
+GL_EXT_memory_object
+http://www.opengl.org/registry/specs/EXT/external_objects.txt
+GL_EXT_memory_object
+
+ GL_UUID_SIZE_EXT 16
+ GL_TEXTURE_TILING_EXT 0x9580
+ GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
+ GL_NUM_TILING_TYPES_EXT 0x9582
+ GL_TILING_TYPES_EXT 0x9583
+ GL_OPTIMAL_TILING_EXT 0x9584
+ GL_LINEAR_TILING_EXT 0x9585
+ GL_NUM_DEVICE_UUIDS_EXT 0x9596
+ GL_DEVICE_UUID_EXT 0x9597
+ GL_DRIVER_UUID_EXT 0x9598
+ GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
+ void glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset)
+ void glCreateMemoryObjectsEXT (GLsizei n, GLuint* memoryObjects)
+ void glDeleteMemoryObjectsEXT (GLsizei n, const GLuint* memoryObjects)
+ void glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint* params)
+ void glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte* data)
+ void glGetUnsignedBytevEXT (GLenum pname, GLubyte* data)
+ GLboolean glIsMemoryObjectEXT (GLuint memoryObject)
+ void glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint* params)
+ void glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset)
+ void glTexStorageMem1DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset)
+ void glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)
+ void glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)
+ void glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset)
+ void glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem1DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset)
+ void glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)
diff --git a/glew/auto/extensions/gl/GL_EXT_memory_object_fd b/glew/auto/extensions/gl/GL_EXT_memory_object_fd
new file mode 100644
index 0000000..38536c0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_memory_object_fd
@@ -0,0 +1,6 @@
+GL_EXT_memory_object_fd
+http://www.opengl.org/registry/specs/EXT/external_objects_fd.txt
+GL_EXT_memory_object_fd
+
+ GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
+ void glImportMemoryFdEXT (GLuint memory, GLuint64 size, GLenum handleType, GLint fd)
diff --git a/glew/auto/extensions/gl/GL_EXT_memory_object_win32 b/glew/auto/extensions/gl/GL_EXT_memory_object_win32
new file mode 100644
index 0000000..6d36a69
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_memory_object_win32
@@ -0,0 +1,17 @@
+GL_EXT_memory_object_win32
+http://www.opengl.org/registry/specs/EXT/external_objects_win32.txt
+GL_EXT_memory_object_win32
+
+ GL_LUID_SIZE_EXT 8
+ GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
+ GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
+ GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
+ GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
+ GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
+ GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
+ GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
+ GL_D3D12_FENCE_VALUE_EXT 0x9595
+ GL_DEVICE_LUID_EXT 0x9599
+ GL_DEVICE_NODE_MASK_EXT 0x959A
+ void glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle)
+ void glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name)
diff --git a/glew/auto/extensions/gl/GL_EXT_misc_attribute b/glew/auto/extensions/gl/GL_EXT_misc_attribute
new file mode 100644
index 0000000..5d3f08f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_misc_attribute
@@ -0,0 +1,4 @@
+GL_EXT_misc_attribute
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_misc_attribute.txt
+GL_EXT_misc_attribute
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multi_draw_arrays b/glew/auto/extensions/gl/GL_EXT_multi_draw_arrays
new file mode 100644
index 0000000..d353608
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multi_draw_arrays
@@ -0,0 +1,6 @@
+GL_EXT_multi_draw_arrays
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multi_draw_arrays.txt
+GL_EXT_multi_draw_arrays
+
+ void glMultiDrawArraysEXT (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount)
+ void glMultiDrawElementsEXT (GLenum mode, GLsizei* count, GLenum type, const void *const *indices, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_EXT_multi_draw_indirect b/glew/auto/extensions/gl/GL_EXT_multi_draw_indirect
new file mode 100644
index 0000000..e2f5b4e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multi_draw_indirect
@@ -0,0 +1,6 @@
+GL_EXT_multi_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multi_draw_indirect.txt
+GL_EXT_multi_draw_indirect
+
+ void glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride)
+ void glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_EXT_multiple_textures b/glew/auto/extensions/gl/GL_EXT_multiple_textures
new file mode 100644
index 0000000..17ca419
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiple_textures
@@ -0,0 +1,4 @@
+GL_EXT_multiple_textures
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiple_textures.txt
+GL_EXT_multiple_textures
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multisample b/glew/auto/extensions/gl/GL_EXT_multisample
new file mode 100644
index 0000000..96789ec
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multisample
@@ -0,0 +1,23 @@
+GL_EXT_multisample
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_multisample.txt
+GL_EXT_multisample
+
+ GL_MULTISAMPLE_EXT 0x809D
+ GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
+ GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+ GL_SAMPLE_MASK_EXT 0x80A0
+ GL_1PASS_EXT 0x80A1
+ GL_2PASS_0_EXT 0x80A2
+ GL_2PASS_1_EXT 0x80A3
+ GL_4PASS_0_EXT 0x80A4
+ GL_4PASS_1_EXT 0x80A5
+ GL_4PASS_2_EXT 0x80A6
+ GL_4PASS_3_EXT 0x80A7
+ GL_SAMPLE_BUFFERS_EXT 0x80A8
+ GL_SAMPLES_EXT 0x80A9
+ GL_SAMPLE_MASK_VALUE_EXT 0x80AA
+ GL_SAMPLE_MASK_INVERT_EXT 0x80AB
+ GL_SAMPLE_PATTERN_EXT 0x80AC
+ GL_MULTISAMPLE_BIT_EXT 0x20000000
+ void glSampleMaskEXT (GLclampf value, GLboolean invert)
+ void glSamplePatternEXT (GLenum pattern)
diff --git a/glew/auto/extensions/gl/GL_EXT_multisample_compatibility b/glew/auto/extensions/gl/GL_EXT_multisample_compatibility
new file mode 100644
index 0000000..8c30eca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multisample_compatibility
@@ -0,0 +1,6 @@
+GL_EXT_multisample_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisample_compatibility.txt
+GL_EXT_multisample_compatibility
+
+ GL_MULTISAMPLE_EXT 0x809D
+ GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
diff --git a/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture b/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture
new file mode 100644
index 0000000..2479ee1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture
@@ -0,0 +1,9 @@
+GL_EXT_multisampled_render_to_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt
+GL_EXT_multisampled_render_to_texture
+
+ GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+ GL_MAX_SAMPLES_EXT 0x8D57
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
+ void glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
diff --git a/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture2 b/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture2
new file mode 100644
index 0000000..9970e97
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multisampled_render_to_texture2
@@ -0,0 +1,4 @@
+GL_EXT_multisampled_render_to_texture2
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture2.txt
+GL_EXT_multisampled_render_to_texture2
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multiview_draw_buffers b/glew/auto/extensions/gl/GL_EXT_multiview_draw_buffers
new file mode 100644
index 0000000..8c5fb29
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiview_draw_buffers
@@ -0,0 +1,12 @@
+GL_EXT_multiview_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_draw_buffers.txt
+GL_EXT_multiview_draw_buffers
+
+ GL_DRAW_BUFFER_EXT 0x0C01
+ GL_READ_BUFFER_EXT 0x0C02
+ GL_COLOR_ATTACHMENT_EXT 0x90F0
+ GL_MULTIVIEW_EXT 0x90F1
+ GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2
+ void glDrawBuffersIndexedEXT (GLint n, const GLenum* location, const GLint *indices)
+ void glGetIntegeri_vEXT (GLenum target, GLuint index, GLint* data)
+ void glReadBufferIndexedEXT (GLenum src, GLint index)
diff --git a/glew/auto/extensions/gl/GL_EXT_multiview_tessellation_geometry_shader b/glew/auto/extensions/gl/GL_EXT_multiview_tessellation_geometry_shader
new file mode 100644
index 0000000..48eb94c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiview_tessellation_geometry_shader
@@ -0,0 +1,4 @@
+GL_EXT_multiview_tessellation_geometry_shader
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_tessellation_geometry_shader.txt
+GL_EXT_multiview_tessellation_geometry_shader
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multiview_texture_multisample b/glew/auto/extensions/gl/GL_EXT_multiview_texture_multisample
new file mode 100644
index 0000000..4fc847f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiview_texture_multisample
@@ -0,0 +1,4 @@
+GL_EXT_multiview_texture_multisample
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_texture_multisample.txt
+GL_EXT_multiview_texture_multisample
+
diff --git a/glew/auto/extensions/gl/GL_EXT_multiview_timer_query b/glew/auto/extensions/gl/GL_EXT_multiview_timer_query
new file mode 100644
index 0000000..6da6790
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_multiview_timer_query
@@ -0,0 +1,4 @@
+GL_EXT_multiview_timer_query
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_timer_query.txt
+GL_EXT_multiview_timer_query
+
diff --git a/glew/auto/extensions/gl/GL_EXT_occlusion_query_boolean b/glew/auto/extensions/gl/GL_EXT_occlusion_query_boolean
new file mode 100644
index 0000000..e1742e7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_occlusion_query_boolean
@@ -0,0 +1,9 @@
+GL_EXT_occlusion_query_boolean
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_occlusion_query_boolean.txt
+GL_EXT_occlusion_query_boolean
+
+ GL_CURRENT_QUERY_EXT 0x8865
+ GL_QUERY_RESULT_EXT 0x8866
+ GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+ GL_ANY_SAMPLES_PASSED_EXT 0x8C2F
+ GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
diff --git a/glew/auto/extensions/gl/GL_EXT_packed_depth_stencil b/glew/auto/extensions/gl/GL_EXT_packed_depth_stencil
new file mode 100644
index 0000000..1b6e0d5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_packed_depth_stencil
@@ -0,0 +1,8 @@
+GL_EXT_packed_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_depth_stencil.txt
+GL_EXT_packed_depth_stencil
+
+ GL_DEPTH_STENCIL_EXT 0x84F9
+ GL_UNSIGNED_INT_24_8_EXT 0x84FA
+ GL_DEPTH24_STENCIL8_EXT 0x88F0
+ GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
diff --git a/glew/auto/extensions/gl/GL_EXT_packed_float b/glew/auto/extensions/gl/GL_EXT_packed_float
new file mode 100644
index 0000000..15ac680
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_packed_float
@@ -0,0 +1,7 @@
+GL_EXT_packed_float
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_packed_float.txt
+GL_EXT_packed_float
+
+ GL_R11F_G11F_B10F_EXT 0x8C3A
+ GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
+ GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
diff --git a/glew/auto/extensions/gl/GL_EXT_packed_pixels b/glew/auto/extensions/gl/GL_EXT_packed_pixels
new file mode 100644
index 0000000..fd68a34
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_packed_pixels
@@ -0,0 +1,9 @@
+GL_EXT_packed_pixels
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_pixels.txt
+GL_EXT_packed_pixels
+
+ GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
+ GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
+ GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
+ GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
+ GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
diff --git a/glew/auto/extensions/gl/GL_EXT_paletted_texture b/glew/auto/extensions/gl/GL_EXT_paletted_texture
new file mode 100644
index 0000000..25a67e8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_paletted_texture
@@ -0,0 +1,29 @@
+GL_EXT_paletted_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_paletted_texture.txt
+GL_EXT_paletted_texture
+
+ GL_TEXTURE_1D 0x0DE0
+ GL_TEXTURE_2D 0x0DE1
+ GL_PROXY_TEXTURE_1D 0x8063
+ GL_PROXY_TEXTURE_2D 0x8064
+ GL_COLOR_TABLE_FORMAT_EXT 0x80D8
+ GL_COLOR_TABLE_WIDTH_EXT 0x80D9
+ GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA
+ GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB
+ GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC
+ GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD
+ GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE
+ GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF
+ GL_COLOR_INDEX1_EXT 0x80E2
+ GL_COLOR_INDEX2_EXT 0x80E3
+ GL_COLOR_INDEX4_EXT 0x80E4
+ GL_COLOR_INDEX8_EXT 0x80E5
+ GL_COLOR_INDEX12_EXT 0x80E6
+ GL_COLOR_INDEX16_EXT 0x80E7
+ GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
+ GL_TEXTURE_CUBE_MAP_ARB 0x8513
+ GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+ void glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *data)
+ void glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data)
+ void glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat* params)
+ void glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_pixel_buffer_object b/glew/auto/extensions/gl/GL_EXT_pixel_buffer_object
new file mode 100644
index 0000000..f685e4c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_pixel_buffer_object
@@ -0,0 +1,8 @@
+GL_EXT_pixel_buffer_object
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_pixel_buffer_object.txt
+GL_EXT_pixel_buffer_object
+
+ GL_PIXEL_PACK_BUFFER_EXT 0x88EB
+ GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
+ GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
+ GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
diff --git a/glew/auto/extensions/gl/GL_EXT_pixel_transform b/glew/auto/extensions/gl/GL_EXT_pixel_transform
new file mode 100644
index 0000000..e964818
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_pixel_transform
@@ -0,0 +1,19 @@
+GL_EXT_pixel_transform
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_transform.txt
+GL_EXT_pixel_transform
+
+ GL_PIXEL_TRANSFORM_2D_EXT 0x8330
+ GL_PIXEL_MAG_FILTER_EXT 0x8331
+ GL_PIXEL_MIN_FILTER_EXT 0x8332
+ GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
+ GL_CUBIC_EXT 0x8334
+ GL_AVERAGE_EXT 0x8335
+ GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
+ GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
+ GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
+ void glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat* params)
+ void glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint* params)
+ void glPixelTransformParameterfEXT (GLenum target, GLenum pname, const GLfloat param)
+ void glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat* params)
+ void glPixelTransformParameteriEXT (GLenum target, GLenum pname, const GLint param)
+ void glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_pixel_transform_color_table b/glew/auto/extensions/gl/GL_EXT_pixel_transform_color_table
new file mode 100644
index 0000000..4db533e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_pixel_transform_color_table
@@ -0,0 +1,4 @@
+GL_EXT_pixel_transform_color_table
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_transform_color_table.txt
+GL_EXT_pixel_transform_color_table
+
diff --git a/glew/auto/extensions/gl/GL_EXT_point_parameters b/glew/auto/extensions/gl/GL_EXT_point_parameters
new file mode 100644
index 0000000..25beb16
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_point_parameters
@@ -0,0 +1,10 @@
+GL_EXT_point_parameters
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_point_parameters.txt
+GL_EXT_point_parameters
+
+ GL_POINT_SIZE_MIN_EXT 0x8126
+ GL_POINT_SIZE_MAX_EXT 0x8127
+ GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
+ GL_DISTANCE_ATTENUATION_EXT 0x8129
+ void glPointParameterfEXT (GLenum pname, GLfloat param)
+ void glPointParameterfvEXT (GLenum pname, const GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_polygon_offset b/glew/auto/extensions/gl/GL_EXT_polygon_offset
new file mode 100644
index 0000000..67f9e89
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_polygon_offset
@@ -0,0 +1,8 @@
+GL_EXT_polygon_offset
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_polygon_offset.txt
+GL_EXT_polygon_offset
+
+ GL_POLYGON_OFFSET_EXT 0x8037
+ GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
+ GL_POLYGON_OFFSET_BIAS_EXT 0x8039
+ void glPolygonOffsetEXT (GLfloat factor, GLfloat bias)
diff --git a/glew/auto/extensions/gl/GL_EXT_polygon_offset_clamp b/glew/auto/extensions/gl/GL_EXT_polygon_offset_clamp
new file mode 100644
index 0000000..93f0577
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_polygon_offset_clamp
@@ -0,0 +1,6 @@
+GL_EXT_polygon_offset_clamp
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_polygon_offset_clamp.txt
+GL_EXT_polygon_offset_clamp
+
+ GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
+ void glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp)
diff --git a/glew/auto/extensions/gl/GL_EXT_post_depth_coverage b/glew/auto/extensions/gl/GL_EXT_post_depth_coverage
new file mode 100644
index 0000000..4b2c10f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_post_depth_coverage
@@ -0,0 +1,4 @@
+GL_EXT_post_depth_coverage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_post_depth_coverage.txt
+GL_EXT_post_depth_coverage
+
diff --git a/glew/auto/extensions/gl/GL_EXT_primitive_bounding_box b/glew/auto/extensions/gl/GL_EXT_primitive_bounding_box
new file mode 100644
index 0000000..0f792d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_primitive_bounding_box
@@ -0,0 +1,6 @@
+GL_EXT_primitive_bounding_box
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_primitive_bounding_box.txt
+GL_EXT_primitive_bounding_box
+
+ GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE
+ void glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
diff --git a/glew/auto/extensions/gl/GL_EXT_protected_textures b/glew/auto/extensions/gl/GL_EXT_protected_textures
new file mode 100644
index 0000000..39b8119
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_protected_textures
@@ -0,0 +1,6 @@
+GL_EXT_protected_textures
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt
+GL_EXT_protected_textures
+
+ GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010
+ GL_TEXTURE_PROTECTED_EXT 0x8BFA
diff --git a/glew/auto/extensions/gl/GL_EXT_provoking_vertex b/glew/auto/extensions/gl/GL_EXT_provoking_vertex
new file mode 100644
index 0000000..cd8232d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_provoking_vertex
@@ -0,0 +1,9 @@
+GL_EXT_provoking_vertex
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_provoking_vertex.txt
+GL_EXT_provoking_vertex
+
+ GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
+ GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+ GL_PROVOKING_VERTEX_EXT 0x8E4F
+ void glProvokingVertexEXT (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_pvrtc_sRGB b/glew/auto/extensions/gl/GL_EXT_pvrtc_sRGB
new file mode 100644
index 0000000..c3d75d1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_pvrtc_sRGB
@@ -0,0 +1,8 @@
+GL_EXT_pvrtc_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pvrtc_sRGB.txt
+GL_EXT_pvrtc_sRGB
+
+ GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
+ GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
+ GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
+ GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
diff --git a/glew/auto/extensions/gl/GL_EXT_raster_multisample b/glew/auto/extensions/gl/GL_EXT_raster_multisample
new file mode 100644
index 0000000..d47e504
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_raster_multisample
@@ -0,0 +1,22 @@
+GL_EXT_raster_multisample
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_mixed_samples.txt
+GL_EXT_raster_multisample
+
+ GL_COLOR_SAMPLES_NV 0x8E20
+ GL_RASTER_MULTISAMPLE_EXT 0x9327
+ GL_RASTER_SAMPLES_EXT 0x9328
+ GL_MAX_RASTER_SAMPLES_EXT 0x9329
+ GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+ GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+ GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+ GL_DEPTH_SAMPLES_NV 0x932D
+ GL_STENCIL_SAMPLES_NV 0x932E
+ GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+ GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+ GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+ GL_COVERAGE_MODULATION_NV 0x9332
+ GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
+ void glCoverageModulationNV (GLenum components)
+ void glCoverageModulationTableNV (GLsizei n, const GLfloat* v)
+ void glGetCoverageModulationTableNV (GLsizei bufsize, GLfloat* v)
+ void glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations)
diff --git a/glew/auto/extensions/gl/GL_EXT_read_format_bgra b/glew/auto/extensions/gl/GL_EXT_read_format_bgra
new file mode 100644
index 0000000..e5d19d7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_read_format_bgra
@@ -0,0 +1,7 @@
+GL_EXT_read_format_bgra
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_read_format_bgra.txt
+GL_EXT_read_format_bgra
+
+ GL_BGRA_EXT 0x80E1
+ GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365
+ GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366
diff --git a/glew/auto/extensions/gl/GL_EXT_render_snorm b/glew/auto/extensions/gl/GL_EXT_render_snorm
new file mode 100644
index 0000000..1bd6a0d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_render_snorm
@@ -0,0 +1,12 @@
+GL_EXT_render_snorm
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_render_snorm.txt
+GL_EXT_render_snorm
+
+ GL_BYTE 0x1400
+ GL_SHORT 0x1402
+ GL_R8_SNORM 0x8F94
+ GL_RG8_SNORM 0x8F95
+ GL_RGBA8_SNORM 0x8F97
+ GL_R16_SNORM_EXT 0x8F98
+ GL_RG16_SNORM_EXT 0x8F99
+ GL_RGBA16_SNORM_EXT 0x8F9B
diff --git a/glew/auto/extensions/gl/GL_EXT_rescale_normal b/glew/auto/extensions/gl/GL_EXT_rescale_normal
new file mode 100644
index 0000000..a0b0e8a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_rescale_normal
@@ -0,0 +1,5 @@
+GL_EXT_rescale_normal
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_rescale_normal.txt
+GL_EXT_rescale_normal
+
+ GL_RESCALE_NORMAL_EXT 0x803A
diff --git a/glew/auto/extensions/gl/GL_EXT_robustness b/glew/auto/extensions/gl/GL_EXT_robustness
new file mode 100644
index 0000000..938bf83
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_robustness
@@ -0,0 +1,15 @@
+GL_EXT_robustness
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_robustness.txt
+GL_EXT_robustness
+
+ GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252
+ GL_GUILTY_CONTEXT_RESET_EXT 0x8253
+ GL_INNOCENT_CONTEXT_RESET_EXT 0x8254
+ GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255
+ GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256
+ GL_NO_RESET_NOTIFICATION_EXT 0x8261
+ GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3
+ GLenum glGetGraphicsResetStatusEXT (void)
+ void glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+ void glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint* params)
+ void glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)
diff --git a/glew/auto/extensions/gl/GL_EXT_sRGB b/glew/auto/extensions/gl/GL_EXT_sRGB
new file mode 100644
index 0000000..f6b3982
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_sRGB
@@ -0,0 +1,8 @@
+GL_EXT_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sRGB.txt
+GL_EXT_sRGB
+
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
+ GL_SRGB_EXT 0x8C40
+ GL_SRGB_ALPHA_EXT 0x8C42
+ GL_SRGB8_ALPHA8_EXT 0x8C43
diff --git a/glew/auto/extensions/gl/GL_EXT_sRGB_write_control b/glew/auto/extensions/gl/GL_EXT_sRGB_write_control
new file mode 100644
index 0000000..5e64b8d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_sRGB_write_control
@@ -0,0 +1,5 @@
+GL_EXT_sRGB_write_control
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sRGB_write_control.txt
+GL_EXT_sRGB_write_control
+
+ GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
diff --git a/glew/auto/extensions/gl/GL_EXT_scene_marker b/glew/auto/extensions/gl/GL_EXT_scene_marker
new file mode 100644
index 0000000..504efcf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_scene_marker
@@ -0,0 +1,6 @@
+GL_EXT_scene_marker
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_scene_marker.txt
+GL_EXT_scene_marker
+
+ void glBeginSceneEXT (void)
+ void glEndSceneEXT (void)
diff --git a/glew/auto/extensions/gl/GL_EXT_secondary_color b/glew/auto/extensions/gl/GL_EXT_secondary_color
new file mode 100644
index 0000000..505761d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_secondary_color
@@ -0,0 +1,28 @@
+GL_EXT_secondary_color
+http://oss.sgi.com/projects/ogl-sample/registry/EXT/secondary_color.txt
+GL_EXT_secondary_color
+
+ GL_COLOR_SUM_EXT 0x8458
+ GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
+ GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
+ GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
+ GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
+ GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+ GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
+ void glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue)
+ void glSecondaryColor3bvEXT (const GLbyte *v)
+ void glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue)
+ void glSecondaryColor3dvEXT (const GLdouble *v)
+ void glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue)
+ void glSecondaryColor3fvEXT (const GLfloat *v)
+ void glSecondaryColor3iEXT (GLint red, GLint green, GLint blue)
+ void glSecondaryColor3ivEXT (const GLint *v)
+ void glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue)
+ void glSecondaryColor3svEXT (const GLshort *v)
+ void glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue)
+ void glSecondaryColor3ubvEXT (const GLubyte *v)
+ void glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue)
+ void glSecondaryColor3uivEXT (const GLuint *v)
+ void glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue)
+ void glSecondaryColor3usvEXT (const GLushort *v)
+ void glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_semaphore b/glew/auto/extensions/gl/GL_EXT_semaphore
new file mode 100644
index 0000000..faf18b3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_semaphore
@@ -0,0 +1,21 @@
+GL_EXT_semaphore
+http://www.opengl.org/registry/specs/EXT/external_objects.txt
+GL_EXT_semaphore
+
+ GL_LAYOUT_GENERAL_EXT 0x958D
+ GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
+ GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
+ GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
+ GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
+ GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
+ GL_LAYOUT_TRANSFER_DST_EXT 0x9593
+ GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
+ GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
+
+ void glDeleteSemaphoresEXT (GLsizei n, const GLuint* semaphores)
+ void glGenSemaphoresEXT (GLsizei n, GLuint* semaphores)
+ void glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64* params)
+ GLboolean glIsSemaphoreEXT (GLuint semaphore)
+ void glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64* params)
+ void glSignalSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint* buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts)
+ void glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint* buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts)
diff --git a/glew/auto/extensions/gl/GL_EXT_semaphore_fd b/glew/auto/extensions/gl/GL_EXT_semaphore_fd
new file mode 100644
index 0000000..e3b2985
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_semaphore_fd
@@ -0,0 +1,5 @@
+GL_EXT_semaphore_fd
+http://www.opengl.org/registry/specs/EXT/external_objects_fd.txt
+GL_EXT_semaphore_fd
+
+ void glImportSemaphoreFdEXT (GLuint semaphore, GLenum handleType, GLint fd)
diff --git a/glew/auto/extensions/gl/GL_EXT_semaphore_win32 b/glew/auto/extensions/gl/GL_EXT_semaphore_win32
new file mode 100644
index 0000000..4854f58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_semaphore_win32
@@ -0,0 +1,6 @@
+GL_EXT_semaphore_win32
+http://www.opengl.org/registry/specs/EXT/external_objects_win32.txt
+GL_EXT_semaphore_win32
+
+ void glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle)
+ void glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name)
diff --git a/glew/auto/extensions/gl/GL_EXT_separate_depth_stencil b/glew/auto/extensions/gl/GL_EXT_separate_depth_stencil
new file mode 100644
index 0000000..08f548e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_separate_depth_stencil
@@ -0,0 +1,4 @@
+GL_EXT_separate_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_depth_stencil.txt
+GL_EXT_separate_depth_stencil
+
diff --git a/glew/auto/extensions/gl/GL_EXT_separate_shader_objects b/glew/auto/extensions/gl/GL_EXT_separate_shader_objects
new file mode 100644
index 0000000..0886a75
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_separate_shader_objects
@@ -0,0 +1,8 @@
+GL_EXT_separate_shader_objects
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_shader_objects.gl.txt
+GL_EXT_separate_shader_objects
+
+ GL_ACTIVE_PROGRAM_EXT 0x8B8D
+ void glActiveProgramEXT (GLuint program)
+ GLuint glCreateShaderProgramEXT (GLenum type, const GLchar* string)
+ void glUseShaderProgramEXT (GLenum type, GLuint program)
diff --git a/glew/auto/extensions/gl/GL_EXT_separate_specular_color b/glew/auto/extensions/gl/GL_EXT_separate_specular_color
new file mode 100644
index 0000000..6ee9da7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_separate_specular_color
@@ -0,0 +1,7 @@
+GL_EXT_separate_specular_color
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_specular_color.txt
+GL_EXT_separate_specular_color
+
+ GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
+ GL_SINGLE_COLOR_EXT 0x81F9
+ GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch b/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch
new file mode 100644
index 0000000..51ef160
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch
@@ -0,0 +1,6 @@
+GL_EXT_shader_framebuffer_fetch
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt
+GL_EXT_shader_framebuffer_fetch
+
+ GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
+ void glFramebufferFetchBarrierEXT (void)
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch_non_coherent b/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch_non_coherent
new file mode 100644
index 0000000..62af709
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_framebuffer_fetch_non_coherent
@@ -0,0 +1,5 @@
+GL_EXT_shader_framebuffer_fetch_non_coherent
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt
+GL_EXT_shader_framebuffer_fetch_non_coherent
+
+ GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_group_vote b/glew/auto/extensions/gl/GL_EXT_shader_group_vote
new file mode 100644
index 0000000..a1fd025
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_group_vote
@@ -0,0 +1,4 @@
+GL_EXT_shader_group_vote
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_group_vote.txt
+GL_EXT_shader_group_vote
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_image_load_formatted b/glew/auto/extensions/gl/GL_EXT_shader_image_load_formatted
new file mode 100644
index 0000000..0cae7aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_image_load_formatted
@@ -0,0 +1,4 @@
+GL_EXT_shader_image_load_formatted
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_image_load_formatted.txt
+GL_EXT_shader_image_load_formatted
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_image_load_store b/glew/auto/extensions/gl/GL_EXT_shader_image_load_store
new file mode 100644
index 0000000..2f281f8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_image_load_store
@@ -0,0 +1,61 @@
+GL_EXT_shader_image_load_store
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_image_load_store.txt
+GL_EXT_shader_image_load_store
+
+ GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
+ GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
+ GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
+ GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
+ GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
+ GL_COMMAND_BARRIER_BIT_EXT 0x00000040
+ GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
+ GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
+ GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
+ GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
+ GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
+ GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
+ GL_MAX_IMAGE_UNITS_EXT 0x8F38
+ GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
+ GL_IMAGE_BINDING_NAME_EXT 0x8F3A
+ GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
+ GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
+ GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
+ GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
+ GL_IMAGE_1D_EXT 0x904C
+ GL_IMAGE_2D_EXT 0x904D
+ GL_IMAGE_3D_EXT 0x904E
+ GL_IMAGE_2D_RECT_EXT 0x904F
+ GL_IMAGE_CUBE_EXT 0x9050
+ GL_IMAGE_BUFFER_EXT 0x9051
+ GL_IMAGE_1D_ARRAY_EXT 0x9052
+ GL_IMAGE_2D_ARRAY_EXT 0x9053
+ GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+ GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
+ GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
+ GL_INT_IMAGE_1D_EXT 0x9057
+ GL_INT_IMAGE_2D_EXT 0x9058
+ GL_INT_IMAGE_3D_EXT 0x9059
+ GL_INT_IMAGE_2D_RECT_EXT 0x905A
+ GL_INT_IMAGE_CUBE_EXT 0x905B
+ GL_INT_IMAGE_BUFFER_EXT 0x905C
+ GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
+ GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
+ GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+ GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
+ GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
+ GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
+ GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
+ GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
+ GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
+ GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
+ GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+ GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
+ GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
+ GL_MAX_IMAGE_SAMPLES_EXT 0x906D
+ GL_IMAGE_BINDING_FORMAT_EXT 0x906E
+ GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
+ void glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format)
+ void glMemoryBarrierEXT (GLbitfield barriers)
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_implicit_conversions b/glew/auto/extensions/gl/GL_EXT_shader_implicit_conversions
new file mode 100644
index 0000000..8641350
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_implicit_conversions
@@ -0,0 +1,4 @@
+GL_EXT_shader_implicit_conversions
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_implicit_conversions.txt
+GL_EXT_shader_implicit_conversions
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_integer_mix b/glew/auto/extensions/gl/GL_EXT_shader_integer_mix
new file mode 100644
index 0000000..20f77b6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_integer_mix
@@ -0,0 +1,4 @@
+GL_EXT_shader_integer_mix
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_integer_mix.txt
+GL_EXT_shader_integer_mix
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_io_blocks b/glew/auto/extensions/gl/GL_EXT_shader_io_blocks
new file mode 100644
index 0000000..199f485
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_io_blocks
@@ -0,0 +1,4 @@
+GL_EXT_shader_io_blocks
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_io_blocks.txt
+GL_EXT_shader_io_blocks
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_non_constant_global_initializers b/glew/auto/extensions/gl/GL_EXT_shader_non_constant_global_initializers
new file mode 100644
index 0000000..e183643
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_non_constant_global_initializers
@@ -0,0 +1,4 @@
+GL_EXT_shader_non_constant_global_initializers
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_non_constant_global_initializers.txt
+GL_EXT_shader_non_constant_global_initializers
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage b/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage
new file mode 100644
index 0000000..c9f26e7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage
@@ -0,0 +1,7 @@
+GL_EXT_shader_pixel_local_storage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage.txt
+GL_EXT_shader_pixel_local_storage
+
+ GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63
+ GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64
+ GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage2 b/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage2
new file mode 100644
index 0000000..7fb2e85
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_pixel_local_storage2
@@ -0,0 +1,10 @@
+GL_EXT_shader_pixel_local_storage2
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage2.txt
+GL_EXT_shader_pixel_local_storage2
+
+ GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650
+ GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651
+ GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652
+ void glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint* values)
+ void glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size)
+ GLsizei glGetFramebufferPixelLocalStorageSizeEXT (GLuint target)
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_samples_identical b/glew/auto/extensions/gl/GL_EXT_shader_samples_identical
new file mode 100644
index 0000000..97e4e6d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_samples_identical
@@ -0,0 +1,4 @@
+GL_EXT_shader_samples_identical
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_samples_identical.txt
+GL_EXT_shader_samples_identical
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shader_texture_lod b/glew/auto/extensions/gl/GL_EXT_shader_texture_lod
new file mode 100644
index 0000000..4417972
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shader_texture_lod
@@ -0,0 +1,4 @@
+GL_EXT_shader_texture_lod
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_texture_lod.txt
+GL_EXT_shader_texture_lod
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shadow_funcs b/glew/auto/extensions/gl/GL_EXT_shadow_funcs
new file mode 100644
index 0000000..0aabade
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shadow_funcs
@@ -0,0 +1,4 @@
+GL_EXT_shadow_funcs
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_funcs.txt
+GL_EXT_shadow_funcs
+
diff --git a/glew/auto/extensions/gl/GL_EXT_shadow_samplers b/glew/auto/extensions/gl/GL_EXT_shadow_samplers
new file mode 100644
index 0000000..634421c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shadow_samplers
@@ -0,0 +1,8 @@
+GL_EXT_shadow_samplers
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_samplers.txt
+GL_EXT_shadow_samplers
+
+ GL_TEXTURE_COMPARE_MODE_EXT 0x884C
+ GL_TEXTURE_COMPARE_FUNC_EXT 0x884D
+ GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E
+ GL_SAMPLER_2D_SHADOW_EXT 0x8B62
diff --git a/glew/auto/extensions/gl/GL_EXT_shared_texture_palette b/glew/auto/extensions/gl/GL_EXT_shared_texture_palette
new file mode 100644
index 0000000..f194758
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_shared_texture_palette
@@ -0,0 +1,5 @@
+GL_EXT_shared_texture_palette
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shared_texture_palette.txt
+GL_EXT_shared_texture_palette
+
+ GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
diff --git a/glew/auto/extensions/gl/GL_EXT_sparse_texture b/glew/auto/extensions/gl/GL_EXT_sparse_texture
new file mode 100644
index 0000000..8da8992
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_sparse_texture
@@ -0,0 +1,22 @@
+GL_EXT_sparse_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sparse_texture.txt
+GL_EXT_sparse_texture
+
+ GL_TEXTURE_2D 0x0DE1
+ GL_TEXTURE_3D 0x806F
+ GL_TEXTURE_CUBE_MAP 0x8513
+ GL_TEXTURE_2D_ARRAY 0x8C1A
+ GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+ GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195
+ GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196
+ GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197
+ GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A
+ GL_TEXTURE_SPARSE_EXT 0x91A6
+ GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7
+ GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8
+ GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9
+ GL_NUM_SPARSE_LEVELS_EXT 0x91AA
+ void glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
+ void glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
diff --git a/glew/auto/extensions/gl/GL_EXT_sparse_texture2 b/glew/auto/extensions/gl/GL_EXT_sparse_texture2
new file mode 100644
index 0000000..7b80b53
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_sparse_texture2
@@ -0,0 +1,4 @@
+GL_EXT_sparse_texture2
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sparse_texture2.txt
+GL_EXT_sparse_texture2
+
diff --git a/glew/auto/extensions/gl/GL_EXT_static_vertex_array b/glew/auto/extensions/gl/GL_EXT_static_vertex_array
new file mode 100644
index 0000000..0396fd4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_static_vertex_array
@@ -0,0 +1,4 @@
+GL_EXT_static_vertex_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_static_vertex_array.txt
+GL_EXT_static_vertex_array
+
diff --git a/glew/auto/extensions/gl/GL_EXT_stencil_clear_tag b/glew/auto/extensions/gl/GL_EXT_stencil_clear_tag
new file mode 100644
index 0000000..e797fdc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_stencil_clear_tag
@@ -0,0 +1,6 @@
+GL_EXT_stencil_clear_tag
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_clear_tag.txt
+GL_EXT_stencil_clear_tag
+
+ GL_STENCIL_TAG_BITS_EXT 0x88F2
+ GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
diff --git a/glew/auto/extensions/gl/GL_EXT_stencil_two_side b/glew/auto/extensions/gl/GL_EXT_stencil_two_side
new file mode 100644
index 0000000..5e9b990
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_stencil_two_side
@@ -0,0 +1,7 @@
+GL_EXT_stencil_two_side
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_two_side.txt
+GL_EXT_stencil_two_side
+
+ GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
+ GL_ACTIVE_STENCIL_FACE_EXT 0x8911
+ void glActiveStencilFaceEXT (GLenum face)
diff --git a/glew/auto/extensions/gl/GL_EXT_stencil_wrap b/glew/auto/extensions/gl/GL_EXT_stencil_wrap
new file mode 100644
index 0000000..728b988
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_stencil_wrap
@@ -0,0 +1,6 @@
+GL_EXT_stencil_wrap
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_wrap.txt
+GL_EXT_stencil_wrap
+
+ GL_INCR_WRAP_EXT 0x8507
+ GL_DECR_WRAP_EXT 0x8508
diff --git a/glew/auto/extensions/gl/GL_EXT_subtexture b/glew/auto/extensions/gl/GL_EXT_subtexture
new file mode 100644
index 0000000..987bfc0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_subtexture
@@ -0,0 +1,7 @@
+GL_EXT_subtexture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_subtexture.txt
+GL_EXT_subtexture
+
+ void glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_EXT_tessellation_point_size b/glew/auto/extensions/gl/GL_EXT_tessellation_point_size
new file mode 100644
index 0000000..94ce6f3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_tessellation_point_size
@@ -0,0 +1,48 @@
+GL_EXT_tessellation_point_size
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_tessellation_shader.txt
+GL_EXT_tessellation_point_size
+
+ GL_QUADS_EXT 0x0007
+ GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+ GL_PATCHES_EXT 0xE
+ GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+ GL_PATCH_VERTICES_EXT 0x8E72
+ GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+ GL_TESS_GEN_MODE_EXT 0x8E76
+ GL_TESS_GEN_SPACING_EXT 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+ GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+ GL_ISOLINES_EXT 0x8E7A
+ GL_FRACTIONAL_ODD_EXT 0x8E7B
+ GL_FRACTIONAL_EVEN_EXT 0x8E7C
+ GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+ GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+ GL_TESS_CONTROL_SHADER_EXT 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+ GL_IS_PER_PATCH_EXT 0x92E7
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
+ void glPatchParameteriEXT (GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_EXT_tessellation_shader b/glew/auto/extensions/gl/GL_EXT_tessellation_shader
new file mode 100644
index 0000000..8a0b0a7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_tessellation_shader
@@ -0,0 +1,47 @@
+GL_EXT_tessellation_shader
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_tessellation_shader.txt
+GL_EXT_tessellation_shader
+
+ GL_QUADS_EXT 0x0007
+ GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+ GL_PATCHES_EXT 0xE
+ GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+ GL_PATCH_VERTICES_EXT 0x8E72
+ GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+ GL_TESS_GEN_MODE_EXT 0x8E76
+ GL_TESS_GEN_SPACING_EXT 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+ GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+ GL_ISOLINES_EXT 0x8E7A
+ GL_FRACTIONAL_ODD_EXT 0x8E7B
+ GL_FRACTIONAL_EVEN_EXT 0x8E7C
+ GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+ GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+ GL_TESS_CONTROL_SHADER_EXT 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+ GL_IS_PER_PATCH_EXT 0x92E7
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
diff --git a/glew/auto/extensions/gl/GL_EXT_texture b/glew/auto/extensions/gl/GL_EXT_texture
new file mode 100644
index 0000000..246bcee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture
@@ -0,0 +1,46 @@
+GL_EXT_texture
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture.txt
+GL_EXT_texture
+
+ GL_ALPHA4_EXT 0x803B
+ GL_ALPHA8_EXT 0x803C
+ GL_ALPHA12_EXT 0x803D
+ GL_ALPHA16_EXT 0x803E
+ GL_LUMINANCE4_EXT 0x803F
+ GL_LUMINANCE8_EXT 0x8040
+ GL_LUMINANCE12_EXT 0x8041
+ GL_LUMINANCE16_EXT 0x8042
+ GL_LUMINANCE4_ALPHA4_EXT 0x8043
+ GL_LUMINANCE6_ALPHA2_EXT 0x8044
+ GL_LUMINANCE8_ALPHA8_EXT 0x8045
+ GL_LUMINANCE12_ALPHA4_EXT 0x8046
+ GL_LUMINANCE12_ALPHA12_EXT 0x8047
+ GL_LUMINANCE16_ALPHA16_EXT 0x8048
+ GL_INTENSITY_EXT 0x8049
+ GL_INTENSITY4_EXT 0x804A
+ GL_INTENSITY8_EXT 0x804B
+ GL_INTENSITY12_EXT 0x804C
+ GL_INTENSITY16_EXT 0x804D
+ GL_RGB2_EXT 0x804E
+ GL_RGB4_EXT 0x804F
+ GL_RGB5_EXT 0x8050
+ GL_RGB8_EXT 0x8051
+ GL_RGB10_EXT 0x8052
+ GL_RGB12_EXT 0x8053
+ GL_RGB16_EXT 0x8054
+ GL_RGBA2_EXT 0x8055
+ GL_RGBA4_EXT 0x8056
+ GL_RGB5_A1_EXT 0x8057
+ GL_RGBA8_EXT 0x8058
+ GL_RGB10_A2_EXT 0x8059
+ GL_RGBA12_EXT 0x805A
+ GL_RGBA16_EXT 0x805B
+ GL_TEXTURE_RED_SIZE_EXT 0x805C
+ GL_TEXTURE_GREEN_SIZE_EXT 0x805D
+ GL_TEXTURE_BLUE_SIZE_EXT 0x805E
+ GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
+ GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
+ GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
+ GL_REPLACE_EXT 0x8062
+ GL_PROXY_TEXTURE_1D_EXT 0x8063
+ GL_PROXY_TEXTURE_2D_EXT 0x8064
diff --git a/glew/auto/extensions/gl/GL_EXT_texture3D b/glew/auto/extensions/gl/GL_EXT_texture3D
new file mode 100644
index 0000000..c325194
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture3D
@@ -0,0 +1,14 @@
+GL_EXT_texture3D
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture3D.txt
+GL_EXT_texture3D
+
+ GL_PACK_SKIP_IMAGES_EXT 0x806B
+ GL_PACK_IMAGE_HEIGHT_EXT 0x806C
+ GL_UNPACK_SKIP_IMAGES_EXT 0x806D
+ GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
+ GL_TEXTURE_3D_EXT 0x806F
+ GL_PROXY_TEXTURE_3D_EXT 0x8070
+ GL_TEXTURE_DEPTH_EXT 0x8071
+ GL_TEXTURE_WRAP_R_EXT 0x8072
+ GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
+ void glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_array b/glew/auto/extensions/gl/GL_EXT_texture_array
new file mode 100644
index 0000000..c5c2c9f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_array
@@ -0,0 +1,13 @@
+GL_EXT_texture_array
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_array.txt
+GL_EXT_texture_array
+
+ GL_TEXTURE_1D_ARRAY_EXT 0x8C18
+ GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
+ GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
+ GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
+ GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
+ GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
+ GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
+ GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
+ void glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_border_clamp b/glew/auto/extensions/gl/GL_EXT_texture_border_clamp
new file mode 100644
index 0000000..b347a6e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_border_clamp
@@ -0,0 +1,10 @@
+GL_EXT_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_border_clamp.txt
+GL_EXT_texture_border_clamp
+
+ GL_TEXTURE_BORDER_COLOR_EXT 0x1004
+ GL_CLAMP_TO_BORDER_EXT 0x812D
+ void glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint* params)
+ void glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint* params)
+ void glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint* params)
+ void glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint* params)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_buffer b/glew/auto/extensions/gl/GL_EXT_texture_buffer
new file mode 100644
index 0000000..29a3a78
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_buffer
@@ -0,0 +1,18 @@
+GL_EXT_texture_buffer
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_buffer.txt
+GL_EXT_texture_buffer
+
+ GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A
+ GL_TEXTURE_BUFFER_EXT 0x8C2A
+ GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+ GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+ GL_SAMPLER_BUFFER_EXT 0x8DC2
+ GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+ GL_IMAGE_BUFFER_EXT 0x9051
+ GL_INT_IMAGE_BUFFER_EXT 0x905C
+ GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+ GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D
+ GL_TEXTURE_BUFFER_SIZE_EXT 0x919E
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_buffer_object b/glew/auto/extensions/gl/GL_EXT_texture_buffer_object
new file mode 100644
index 0000000..81b5835
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_buffer_object
@@ -0,0 +1,10 @@
+GL_EXT_texture_buffer_object
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_buffer_object.txt
+GL_EXT_texture_buffer_object
+
+ GL_TEXTURE_BUFFER_EXT 0x8C2A
+ GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+ GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+ GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
+ void glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode b/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode
new file mode 100644
index 0000000..7386f59
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode
@@ -0,0 +1,5 @@
+GL_EXT_texture_compression_astc_decode_mode
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_astc_decode_mode.txt
+GL_EXT_texture_compression_astc_decode_mode
+
+ GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode_rgb9e5 b/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode_rgb9e5
new file mode 100644
index 0000000..56af888
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_astc_decode_mode_rgb9e5
@@ -0,0 +1,5 @@
+GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_astc_decode_mode.txt
+GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+
+ GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_bptc b/glew/auto/extensions/gl/GL_EXT_texture_compression_bptc
new file mode 100644
index 0000000..c2b1931
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_bptc
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_bptc
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_bptc.txt
+GL_EXT_texture_compression_bptc
+
+ GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C
+ GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D
+ GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E
+ GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_dxt1 b/glew/auto/extensions/gl/GL_EXT_texture_compression_dxt1
new file mode 100644
index 0000000..c28d47f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_dxt1
@@ -0,0 +1,4 @@
+GL_EXT_texture_compression_dxt1
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_dxt1.txt
+GL_EXT_texture_compression_dxt1
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_latc b/glew/auto/extensions/gl/GL_EXT_texture_compression_latc
new file mode 100644
index 0000000..e8fcacc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_latc
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_latc
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_latc.txt
+GL_EXT_texture_compression_latc
+
+ GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
+ GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
+ GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
+ GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_rgtc b/glew/auto/extensions/gl/GL_EXT_texture_compression_rgtc
new file mode 100644
index 0000000..054b7f0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_rgtc
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_rgtc
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_rgtc.txt
+GL_EXT_texture_compression_rgtc
+
+ GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
+ GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
+ GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
+ GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc b/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc
new file mode 100644
index 0000000..5d039fd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_s3tc
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_s3tc.txt
+GL_EXT_texture_compression_s3tc
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc_srgb b/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc_srgb
new file mode 100644
index 0000000..92bbadf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_compression_s3tc_srgb
@@ -0,0 +1,8 @@
+GL_EXT_texture_compression_s3tc_srgb
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_s3tc_srgb.txt
+GL_EXT_texture_compression_s3tc_srgb
+
+ GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_cube_map b/glew/auto/extensions/gl/GL_EXT_texture_cube_map
new file mode 100644
index 0000000..73a2c73
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_cube_map
@@ -0,0 +1,16 @@
+GL_EXT_texture_cube_map
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_texture_cube_map.txt
+GL_EXT_texture_cube_map
+
+ GL_NORMAL_MAP_EXT 0x8511
+ GL_REFLECTION_MAP_EXT 0x8512
+ GL_TEXTURE_CUBE_MAP_EXT 0x8513
+ GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
+ GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_cube_map_array b/glew/auto/extensions/gl/GL_EXT_texture_cube_map_array
new file mode 100644
index 0000000..3791aee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_cube_map_array
@@ -0,0 +1,13 @@
+GL_EXT_texture_cube_map_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_cube_map_array.txt
+GL_EXT_texture_cube_map_array
+
+ GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A
+ GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F
+ GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+ GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_edge_clamp b/glew/auto/extensions/gl/GL_EXT_texture_edge_clamp
new file mode 100644
index 0000000..c0b3e2a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_edge_clamp
@@ -0,0 +1,5 @@
+GL_EXT_texture_edge_clamp
+http://www.opengl.org/developers/documentation/Version1.2/1.2specs/texture_edge_clamp.txt
+GL_EXT_texture_edge_clamp
+
+ GL_CLAMP_TO_EDGE_EXT 0x812F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_env b/glew/auto/extensions/gl/GL_EXT_texture_env
new file mode 100644
index 0000000..75275bb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_env
@@ -0,0 +1,4 @@
+GL_EXT_texture_env
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env.txt
+GL_EXT_texture_env
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_env_add b/glew/auto/extensions/gl/GL_EXT_texture_env_add
new file mode 100644
index 0000000..7d48873
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_env_add
@@ -0,0 +1,4 @@
+GL_EXT_texture_env_add
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_add.txt
+GL_EXT_texture_env_add
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_env_combine b/glew/auto/extensions/gl/GL_EXT_texture_env_combine
new file mode 100644
index 0000000..22fadda
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_env_combine
@@ -0,0 +1,25 @@
+GL_EXT_texture_env_combine
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_combine.txt
+GL_EXT_texture_env_combine
+
+ GL_COMBINE_EXT 0x8570
+ GL_COMBINE_RGB_EXT 0x8571
+ GL_COMBINE_ALPHA_EXT 0x8572
+ GL_RGB_SCALE_EXT 0x8573
+ GL_ADD_SIGNED_EXT 0x8574
+ GL_INTERPOLATE_EXT 0x8575
+ GL_CONSTANT_EXT 0x8576
+ GL_PRIMARY_COLOR_EXT 0x8577
+ GL_PREVIOUS_EXT 0x8578
+ GL_SOURCE0_RGB_EXT 0x8580
+ GL_SOURCE1_RGB_EXT 0x8581
+ GL_SOURCE2_RGB_EXT 0x8582
+ GL_SOURCE0_ALPHA_EXT 0x8588
+ GL_SOURCE1_ALPHA_EXT 0x8589
+ GL_SOURCE2_ALPHA_EXT 0x858A
+ GL_OPERAND0_RGB_EXT 0x8590
+ GL_OPERAND1_RGB_EXT 0x8591
+ GL_OPERAND2_RGB_EXT 0x8592
+ GL_OPERAND0_ALPHA_EXT 0x8598
+ GL_OPERAND1_ALPHA_EXT 0x8599
+ GL_OPERAND2_ALPHA_EXT 0x859A
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_env_dot3 b/glew/auto/extensions/gl/GL_EXT_texture_env_dot3
new file mode 100644
index 0000000..7e65eb6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_env_dot3
@@ -0,0 +1,6 @@
+GL_EXT_texture_env_dot3
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_dot3.txt
+GL_EXT_texture_env_dot3
+
+ GL_DOT3_RGB_EXT 0x8740
+ GL_DOT3_RGBA_EXT 0x8741
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_filter_anisotropic b/glew/auto/extensions/gl/GL_EXT_texture_filter_anisotropic
new file mode 100644
index 0000000..6a7508c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_filter_anisotropic
@@ -0,0 +1,6 @@
+GL_EXT_texture_filter_anisotropic
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_filter_anisotropic.txt
+GL_EXT_texture_filter_anisotropic
+
+ GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+ GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_filter_minmax b/glew/auto/extensions/gl/GL_EXT_texture_filter_minmax
new file mode 100644
index 0000000..e7fb5d5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_filter_minmax
@@ -0,0 +1,6 @@
+GL_EXT_texture_filter_minmax
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_filter_minmax.txt
+GL_EXT_texture_filter_minmax
+
+ GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
+ GL_WEIGHTED_AVERAGE_EXT 0x9367
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_format_BGRA8888 b/glew/auto/extensions/gl/GL_EXT_texture_format_BGRA8888
new file mode 100644
index 0000000..edc51d1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_format_BGRA8888
@@ -0,0 +1,5 @@
+GL_EXT_texture_format_BGRA8888
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_format_BGRA8888.txt
+GL_EXT_texture_format_BGRA8888
+
+ GL_BGRA_EXT 0x80E1
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_format_sRGB_override b/glew/auto/extensions/gl/GL_EXT_texture_format_sRGB_override
new file mode 100644
index 0000000..88da490
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_format_sRGB_override
@@ -0,0 +1,5 @@
+GL_EXT_texture_format_sRGB_override
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_format_sRGB_override.txt
+GL_EXT_texture_format_sRGB_override
+
+ GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_integer b/glew/auto/extensions/gl/GL_EXT_texture_integer
new file mode 100644
index 0000000..43219cf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_integer
@@ -0,0 +1,57 @@
+GL_EXT_texture_integer
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_integer.txt
+GL_EXT_texture_integer
+
+ GL_RGBA32UI_EXT 0x8D70
+ GL_RGB32UI_EXT 0x8D71
+ GL_ALPHA32UI_EXT 0x8D72
+ GL_INTENSITY32UI_EXT 0x8D73
+ GL_LUMINANCE32UI_EXT 0x8D74
+ GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
+ GL_RGBA16UI_EXT 0x8D76
+ GL_RGB16UI_EXT 0x8D77
+ GL_ALPHA16UI_EXT 0x8D78
+ GL_INTENSITY16UI_EXT 0x8D79
+ GL_LUMINANCE16UI_EXT 0x8D7A
+ GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
+ GL_RGBA8UI_EXT 0x8D7C
+ GL_RGB8UI_EXT 0x8D7D
+ GL_ALPHA8UI_EXT 0x8D7E
+ GL_INTENSITY8UI_EXT 0x8D7F
+ GL_LUMINANCE8UI_EXT 0x8D80
+ GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
+ GL_RGBA32I_EXT 0x8D82
+ GL_RGB32I_EXT 0x8D83
+ GL_ALPHA32I_EXT 0x8D84
+ GL_INTENSITY32I_EXT 0x8D85
+ GL_LUMINANCE32I_EXT 0x8D86
+ GL_LUMINANCE_ALPHA32I_EXT 0x8D87
+ GL_RGBA16I_EXT 0x8D88
+ GL_RGB16I_EXT 0x8D89
+ GL_ALPHA16I_EXT 0x8D8A
+ GL_INTENSITY16I_EXT 0x8D8B
+ GL_LUMINANCE16I_EXT 0x8D8C
+ GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
+ GL_RGBA8I_EXT 0x8D8E
+ GL_RGB8I_EXT 0x8D8F
+ GL_ALPHA8I_EXT 0x8D90
+ GL_INTENSITY8I_EXT 0x8D91
+ GL_LUMINANCE8I_EXT 0x8D92
+ GL_LUMINANCE_ALPHA8I_EXT 0x8D93
+ GL_RED_INTEGER_EXT 0x8D94
+ GL_GREEN_INTEGER_EXT 0x8D95
+ GL_BLUE_INTEGER_EXT 0x8D96
+ GL_ALPHA_INTEGER_EXT 0x8D97
+ GL_RGB_INTEGER_EXT 0x8D98
+ GL_RGBA_INTEGER_EXT 0x8D99
+ GL_BGR_INTEGER_EXT 0x8D9A
+ GL_BGRA_INTEGER_EXT 0x8D9B
+ GL_LUMINANCE_INTEGER_EXT 0x8D9C
+ GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
+ GL_RGBA_INTEGER_MODE_EXT 0x8D9E
+ void glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params)
+ void glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params)
+ void glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params)
+ void glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params)
+ void glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha)
+ void glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_lod_bias b/glew/auto/extensions/gl/GL_EXT_texture_lod_bias
new file mode 100644
index 0000000..17d0afc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_lod_bias
@@ -0,0 +1,7 @@
+GL_EXT_texture_lod_bias
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_lod_bias.txt
+GL_EXT_texture_lod_bias
+
+ GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
+ GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
+ GL_TEXTURE_LOD_BIAS_EXT 0x8501
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp b/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp
new file mode 100644
index 0000000..474192e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp
@@ -0,0 +1,7 @@
+GL_EXT_texture_mirror_clamp
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_mirror_clamp.txt
+GL_EXT_texture_mirror_clamp
+
+ GL_MIRROR_CLAMP_EXT 0x8742
+ GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+ GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp_to_edge b/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp_to_edge
new file mode 100644
index 0000000..e919399
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_mirror_clamp_to_edge
@@ -0,0 +1,5 @@
+GL_EXT_texture_mirror_clamp_to_edge
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_mirror_clamp_to_edge.txt
+GL_EXT_texture_mirror_clamp_to_edge
+
+ GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_norm16 b/glew/auto/extensions/gl/GL_EXT_texture_norm16
new file mode 100644
index 0000000..2d4dc93
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_norm16
@@ -0,0 +1,12 @@
+GL_EXT_texture_norm16
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_norm16.txt
+GL_EXT_texture_norm16
+
+ GL_RGB16_EXT 0x8054
+ GL_RGBA16_EXT 0x805B
+ GL_R16_EXT 0x822A
+ GL_RG16_EXT 0x822C
+ GL_R16_SNORM_EXT 0x8F98
+ GL_RG16_SNORM_EXT 0x8F99
+ GL_RGB16_SNORM_EXT 0x8F9A
+ GL_RGBA16_SNORM_EXT 0x8F9B
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_object b/glew/auto/extensions/gl/GL_EXT_texture_object
new file mode 100644
index 0000000..b87dfbc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_object
@@ -0,0 +1,15 @@
+GL_EXT_texture_object
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_object.txt
+GL_EXT_texture_object
+
+ GL_TEXTURE_PRIORITY_EXT 0x8066
+ GL_TEXTURE_RESIDENT_EXT 0x8067
+ GL_TEXTURE_1D_BINDING_EXT 0x8068
+ GL_TEXTURE_2D_BINDING_EXT 0x8069
+ GL_TEXTURE_3D_BINDING_EXT 0x806A
+ GLboolean glAreTexturesResidentEXT (GLsizei n, const GLuint* textures, GLboolean* residences)
+ void glBindTextureEXT (GLenum target, GLuint texture)
+ void glDeleteTexturesEXT (GLsizei n, const GLuint* textures)
+ void glGenTexturesEXT (GLsizei n, GLuint* textures)
+ GLboolean glIsTextureEXT (GLuint texture)
+ void glPrioritizeTexturesEXT (GLsizei n, const GLuint* textures, const GLclampf* priorities)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_perturb_normal b/glew/auto/extensions/gl/GL_EXT_texture_perturb_normal
new file mode 100644
index 0000000..73899af
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_perturb_normal
@@ -0,0 +1,7 @@
+GL_EXT_texture_perturb_normal
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_perturb_normal.txt
+GL_EXT_texture_perturb_normal
+
+ GL_PERTURB_EXT 0x85AE
+ GL_TEXTURE_NORMAL_EXT 0x85AF
+ void glTextureNormalEXT (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_query_lod b/glew/auto/extensions/gl/GL_EXT_texture_query_lod
new file mode 100644
index 0000000..d556c3b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_query_lod
@@ -0,0 +1,4 @@
+GL_EXT_texture_query_lod
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_query_lod.txt
+GL_EXT_texture_query_lod
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_rectangle b/glew/auto/extensions/gl/GL_EXT_texture_rectangle
new file mode 100644
index 0000000..1394311
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_rectangle
@@ -0,0 +1,8 @@
+GL_EXT_texture_rectangle
+http://developer.apple.com/opengl/extensions/ext_texture_rectangle.html
+GL_EXT_texture_rectangle
+
+ GL_TEXTURE_RECTANGLE_EXT 0x84F5
+ GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6
+ GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7
+ GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_rg b/glew/auto/extensions/gl/GL_EXT_texture_rg
new file mode 100644
index 0000000..4208ff7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_rg
@@ -0,0 +1,8 @@
+GL_EXT_texture_rg
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_rg.txt
+GL_EXT_texture_rg
+
+ GL_RED_EXT 0x1903
+ GL_RG_EXT 0x8227
+ GL_R8_EXT 0x8229
+ GL_RG8_EXT 0x822B
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_sRGB b/glew/auto/extensions/gl/GL_EXT_texture_sRGB
new file mode 100644
index 0000000..4808cf0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_sRGB
@@ -0,0 +1,20 @@
+GL_EXT_texture_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB.txt
+GL_EXT_texture_sRGB
+
+ GL_SRGB_EXT 0x8C40
+ GL_SRGB8_EXT 0x8C41
+ GL_SRGB_ALPHA_EXT 0x8C42
+ GL_SRGB8_ALPHA8_EXT 0x8C43
+ GL_SLUMINANCE_ALPHA_EXT 0x8C44
+ GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
+ GL_SLUMINANCE_EXT 0x8C46
+ GL_SLUMINANCE8_EXT 0x8C47
+ GL_COMPRESSED_SRGB_EXT 0x8C48
+ GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
+ GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
+ GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
+ GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_sRGB_R8 b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_R8
new file mode 100644
index 0000000..6be7ffc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_R8
@@ -0,0 +1,5 @@
+GL_EXT_texture_sRGB_R8
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_R8.txt
+GL_EXT_texture_sRGB_R8
+
+ GL_SR8_EXT 0x8FBD
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_sRGB_RG8 b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_RG8
new file mode 100644
index 0000000..9bd1828
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_RG8
@@ -0,0 +1,5 @@
+GL_EXT_texture_sRGB_RG8
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_RG8.txt
+GL_EXT_texture_sRGB_RG8
+
+ GL_SRG8_EXT 0x8FBE
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_sRGB_decode b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_decode
new file mode 100644
index 0000000..6e8bf70
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_sRGB_decode
@@ -0,0 +1,7 @@
+GL_EXT_texture_sRGB_decode
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_decode.txt
+GL_EXT_texture_sRGB_decode
+
+ GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
+ GL_DECODE_EXT 0x8A49
+ GL_SKIP_DECODE_EXT 0x8A4A
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_shadow_lod b/glew/auto/extensions/gl/GL_EXT_texture_shadow_lod
new file mode 100644
index 0000000..21c1501
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_shadow_lod
@@ -0,0 +1,4 @@
+GL_EXT_texture_shadow_lod
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_shadow_lod.txt
+GL_EXT_texture_shadow_lod
+
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_shared_exponent b/glew/auto/extensions/gl/GL_EXT_texture_shared_exponent
new file mode 100644
index 0000000..4c7d461
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_shared_exponent
@@ -0,0 +1,7 @@
+GL_EXT_texture_shared_exponent
+http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_shared_exponent.txt
+GL_EXT_texture_shared_exponent
+
+ GL_RGB9_E5_EXT 0x8C3D
+ GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
+ GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_snorm b/glew/auto/extensions/gl/GL_EXT_texture_snorm
new file mode 100644
index 0000000..2a03e33
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_snorm
@@ -0,0 +1,29 @@
+GL_EXT_texture_snorm
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_snorm.txt
+GL_EXT_texture_snorm
+
+ GL_RED_SNORM 0x8F90
+ GL_RG_SNORM 0x8F91
+ GL_RGB_SNORM 0x8F92
+ GL_RGBA_SNORM 0x8F93
+ GL_R8_SNORM 0x8F94
+ GL_RG8_SNORM 0x8F95
+ GL_RGB8_SNORM 0x8F96
+ GL_RGBA8_SNORM 0x8F97
+ GL_R16_SNORM 0x8F98
+ GL_RG16_SNORM 0x8F99
+ GL_RGB16_SNORM 0x8F9A
+ GL_RGBA16_SNORM 0x8F9B
+ GL_SIGNED_NORMALIZED 0x8F9C
+ GL_ALPHA_SNORM 0x9010
+ GL_LUMINANCE_SNORM 0x9011
+ GL_LUMINANCE_ALPHA_SNORM 0x9012
+ GL_INTENSITY_SNORM 0x9013
+ GL_ALPHA8_SNORM 0x9014
+ GL_LUMINANCE8_SNORM 0x9015
+ GL_LUMINANCE8_ALPHA8_SNORM 0x9016
+ GL_INTENSITY8_SNORM 0x9017
+ GL_ALPHA16_SNORM 0x9018
+ GL_LUMINANCE16_SNORM 0x9019
+ GL_LUMINANCE16_ALPHA16_SNORM 0x901A
+ GL_INTENSITY16_SNORM 0x901B
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_storage b/glew/auto/extensions/gl/GL_EXT_texture_storage
new file mode 100644
index 0000000..b568cd7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_storage
@@ -0,0 +1,34 @@
+GL_EXT_texture_storage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_storage.txt
+GL_EXT_texture_storage
+
+ GL_ALPHA8_EXT 0x803C
+ GL_LUMINANCE8_EXT 0x8040
+ GL_LUMINANCE8_ALPHA8_EXT 0x8045
+ GL_RGB10_EXT 0x8052
+ GL_RGB10_A2_EXT 0x8059
+ GL_R8_EXT 0x8229
+ GL_RG8_EXT 0x822B
+ GL_R16F_EXT 0x822D
+ GL_R32F_EXT 0x822E
+ GL_RG16F_EXT 0x822F
+ GL_RG32F_EXT 0x8230
+ GL_RGBA32F_EXT 0x8814
+ GL_RGB32F_EXT 0x8815
+ GL_ALPHA32F_EXT 0x8816
+ GL_LUMINANCE32F_EXT 0x8818
+ GL_LUMINANCE_ALPHA32F_EXT 0x8819
+ GL_RGBA16F_EXT 0x881A
+ GL_RGB16F_EXT 0x881B
+ GL_ALPHA16F_EXT 0x881C
+ GL_LUMINANCE16F_EXT 0x881E
+ GL_LUMINANCE_ALPHA16F_EXT 0x881F
+ GL_RGB_RAW_422_APPLE 0x8A51
+ GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
+ GL_BGRA8_EXT 0x93A1
+ void glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
+ void glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
+ void glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
+ void glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+ void glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_storage_compression b/glew/auto/extensions/gl/GL_EXT_texture_storage_compression
new file mode 100644
index 0000000..5b76928
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_storage_compression
@@ -0,0 +1,22 @@
+GL_EXT_texture_storage_compression
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_storage_compression.txt
+GL_EXT_texture_storage_compression
+
+ GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E
+ GL_SURFACE_COMPRESSION_EXT 0x96C0
+ GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
+ GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
+ GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4
+ GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5
+ GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6
+ GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7
+ GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8
+ GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9
+ GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA
+ GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB
+ GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC
+ GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD
+ GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE
+ GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF
+ void glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list)
+ void glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list)
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_swizzle b/glew/auto/extensions/gl/GL_EXT_texture_swizzle
new file mode 100644
index 0000000..3a2ff6a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_swizzle
@@ -0,0 +1,9 @@
+GL_EXT_texture_swizzle
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_swizzle.txt
+GL_EXT_texture_swizzle
+
+ GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
+ GL_TEXTURE_SWIZZLE_G_EXT 0x8E43
+ GL_TEXTURE_SWIZZLE_B_EXT 0x8E44
+ GL_TEXTURE_SWIZZLE_A_EXT 0x8E45
+ GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_type_2_10_10_10_REV b/glew/auto/extensions/gl/GL_EXT_texture_type_2_10_10_10_REV
new file mode 100644
index 0000000..82292da
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_type_2_10_10_10_REV
@@ -0,0 +1,5 @@
+GL_EXT_texture_type_2_10_10_10_REV
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_type_2_10_10_10_REV.txt
+GL_EXT_texture_type_2_10_10_10_REV
+
+ GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
diff --git a/glew/auto/extensions/gl/GL_EXT_texture_view b/glew/auto/extensions/gl/GL_EXT_texture_view
new file mode 100644
index 0000000..092ca83
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_texture_view
@@ -0,0 +1,10 @@
+GL_EXT_texture_view
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_view.txt
+GL_EXT_texture_view
+
+ GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB
+ GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC
+ GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD
+ GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE
+ GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+ void glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
diff --git a/glew/auto/extensions/gl/GL_EXT_timer_query b/glew/auto/extensions/gl/GL_EXT_timer_query
new file mode 100644
index 0000000..530ba35
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_timer_query
@@ -0,0 +1,7 @@
+GL_EXT_timer_query
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_timer_query.txt
+GL_EXT_timer_query
+
+ GL_TIME_ELAPSED_EXT 0x88BF
+ void glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64EXT *params)
+ void glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64EXT *params)
diff --git a/glew/auto/extensions/gl/GL_EXT_transform_feedback b/glew/auto/extensions/gl/GL_EXT_transform_feedback
new file mode 100644
index 0000000..3b64b20
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_transform_feedback
@@ -0,0 +1,26 @@
+GL_EXT_transform_feedback
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_transform_feedback.txt
+GL_EXT_transform_feedback
+
+ GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
+ GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
+ GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
+ GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
+ GL_PRIMITIVES_GENERATED_EXT 0x8C87
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
+ GL_RASTERIZER_DISCARD_EXT 0x8C89
+ GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
+ GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C
+ GL_SEPARATE_ATTRIBS_EXT 0x8C8D
+ GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E
+ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
+ void glBeginTransformFeedbackEXT (GLenum primitiveMode)
+ void glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer)
+ void glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset)
+ void glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glEndTransformFeedbackEXT (void)
+ void glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, GLchar *name)
+ void glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar * const* varyings, GLenum bufferMode)
diff --git a/glew/auto/extensions/gl/GL_EXT_unpack_subimage b/glew/auto/extensions/gl/GL_EXT_unpack_subimage
new file mode 100644
index 0000000..106d1d3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_unpack_subimage
@@ -0,0 +1,7 @@
+GL_EXT_unpack_subimage
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_unpack_subimage.txt
+GL_EXT_unpack_subimage
+
+ GL_UNPACK_ROW_LENGTH_EXT 0x0CF2
+ GL_UNPACK_SKIP_ROWS_EXT 0x0CF3
+ GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_array b/glew/auto/extensions/gl/GL_EXT_vertex_array
new file mode 100644
index 0000000..5f74e62
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_array
@@ -0,0 +1,45 @@
+GL_EXT_vertex_array
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array.txt
+GL_EXT_vertex_array
+
+ GL_DOUBLE_EXT 0x140A
+ GL_VERTEX_ARRAY_EXT 0x8074
+ GL_NORMAL_ARRAY_EXT 0x8075
+ GL_COLOR_ARRAY_EXT 0x8076
+ GL_INDEX_ARRAY_EXT 0x8077
+ GL_TEXTURE_COORD_ARRAY_EXT 0x8078
+ GL_EDGE_FLAG_ARRAY_EXT 0x8079
+ GL_VERTEX_ARRAY_SIZE_EXT 0x807A
+ GL_VERTEX_ARRAY_TYPE_EXT 0x807B
+ GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
+ GL_VERTEX_ARRAY_COUNT_EXT 0x807D
+ GL_NORMAL_ARRAY_TYPE_EXT 0x807E
+ GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
+ GL_NORMAL_ARRAY_COUNT_EXT 0x8080
+ GL_COLOR_ARRAY_SIZE_EXT 0x8081
+ GL_COLOR_ARRAY_TYPE_EXT 0x8082
+ GL_COLOR_ARRAY_STRIDE_EXT 0x8083
+ GL_COLOR_ARRAY_COUNT_EXT 0x8084
+ GL_INDEX_ARRAY_TYPE_EXT 0x8085
+ GL_INDEX_ARRAY_STRIDE_EXT 0x8086
+ GL_INDEX_ARRAY_COUNT_EXT 0x8087
+ GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
+ GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
+ GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+ GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
+ GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
+ GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
+ GL_VERTEX_ARRAY_POINTER_EXT 0x808E
+ GL_NORMAL_ARRAY_POINTER_EXT 0x808F
+ GL_COLOR_ARRAY_POINTER_EXT 0x8090
+ GL_INDEX_ARRAY_POINTER_EXT 0x8091
+ GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+ GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
+ void glArrayElementEXT (GLint i)
+ void glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)
+ void glDrawArraysEXT (GLenum mode, GLint first, GLsizei count)
+ void glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean* pointer)
+ void glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer)
+ void glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer)
+ void glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)
+ void glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_array_bgra b/glew/auto/extensions/gl/GL_EXT_vertex_array_bgra
new file mode 100644
index 0000000..59efae8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_array_bgra
@@ -0,0 +1,5 @@
+GL_EXT_vertex_array_bgra
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array_bgra.txt
+GL_EXT_vertex_array_bgra
+
+ GL_BGRA 0x80E1
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_array_setXXX b/glew/auto/extensions/gl/GL_EXT_vertex_array_setXXX
new file mode 100644
index 0000000..44636ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_array_setXXX
@@ -0,0 +1,7 @@
+GL_EXT_vertex_array_setXXX
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array_setXXX.txt
+GL_EXT_vertex_array_setXXX
+
+ void glBindArraySetEXT (const void *arrayset)
+ const void * glCreateArraySetExt (void)
+ void glDeleteArraySetsEXT (GLsizei n, const void *arrayset[])
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_attrib_64bit b/glew/auto/extensions/gl/GL_EXT_vertex_attrib_64bit
new file mode 100644
index 0000000..f8c68eb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_attrib_64bit
@@ -0,0 +1,27 @@
+GL_EXT_vertex_attrib_64bit
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_attrib_64bit.txt
+GL_EXT_vertex_attrib_64bit
+
+ GL_DOUBLE_MAT2_EXT 0x8F46
+ GL_DOUBLE_MAT3_EXT 0x8F47
+ GL_DOUBLE_MAT4_EXT 0x8F48
+ GL_DOUBLE_MAT2x3_EXT 0x8F49
+ GL_DOUBLE_MAT2x4_EXT 0x8F4A
+ GL_DOUBLE_MAT3x2_EXT 0x8F4B
+ GL_DOUBLE_MAT3x4_EXT 0x8F4C
+ GL_DOUBLE_MAT4x2_EXT 0x8F4D
+ GL_DOUBLE_MAT4x3_EXT 0x8F4E
+ GL_DOUBLE_VEC2_EXT 0x8FFC
+ GL_DOUBLE_VEC3_EXT 0x8FFD
+ GL_DOUBLE_VEC4_EXT 0x8FFE
+ void glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble* params)
+ void glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
+ void glVertexAttribL1dEXT (GLuint index, GLdouble x)
+ void glVertexAttribL1dvEXT (GLuint index, const GLdouble* v)
+ void glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y)
+ void glVertexAttribL2dvEXT (GLuint index, const GLdouble* v)
+ void glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexAttribL3dvEXT (GLuint index, const GLdouble* v)
+ void glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexAttribL4dvEXT (GLuint index, const GLdouble* v)
+ void glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_shader b/glew/auto/extensions/gl/GL_EXT_vertex_shader
new file mode 100644
index 0000000..8d3314f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_shader
@@ -0,0 +1,157 @@
+GL_EXT_vertex_shader
+http://oss.sgi.com/projects/ogl-sample/registry/EXT/vertex_shader.txt
+GL_EXT_vertex_shader
+
+ GL_VERTEX_SHADER_EXT 0x8780
+ GL_VERTEX_SHADER_BINDING_EXT 0x8781
+ GL_OP_INDEX_EXT 0x8782
+ GL_OP_NEGATE_EXT 0x8783
+ GL_OP_DOT3_EXT 0x8784
+ GL_OP_DOT4_EXT 0x8785
+ GL_OP_MUL_EXT 0x8786
+ GL_OP_ADD_EXT 0x8787
+ GL_OP_MADD_EXT 0x8788
+ GL_OP_FRAC_EXT 0x8789
+ GL_OP_MAX_EXT 0x878A
+ GL_OP_MIN_EXT 0x878B
+ GL_OP_SET_GE_EXT 0x878C
+ GL_OP_SET_LT_EXT 0x878D
+ GL_OP_CLAMP_EXT 0x878E
+ GL_OP_FLOOR_EXT 0x878F
+ GL_OP_ROUND_EXT 0x8790
+ GL_OP_EXP_BASE_2_EXT 0x8791
+ GL_OP_LOG_BASE_2_EXT 0x8792
+ GL_OP_POWER_EXT 0x8793
+ GL_OP_RECIP_EXT 0x8794
+ GL_OP_RECIP_SQRT_EXT 0x8795
+ GL_OP_SUB_EXT 0x8796
+ GL_OP_CROSS_PRODUCT_EXT 0x8797
+ GL_OP_MULTIPLY_MATRIX_EXT 0x8798
+ GL_OP_MOV_EXT 0x8799
+ GL_OUTPUT_VERTEX_EXT 0x879A
+ GL_OUTPUT_COLOR0_EXT 0x879B
+ GL_OUTPUT_COLOR1_EXT 0x879C
+ GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
+ GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
+ GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
+ GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
+ GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
+ GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
+ GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
+ GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
+ GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
+ GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
+ GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
+ GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
+ GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
+ GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
+ GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
+ GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
+ GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
+ GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
+ GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
+ GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
+ GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
+ GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
+ GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
+ GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
+ GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
+ GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
+ GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
+ GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
+ GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
+ GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
+ GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
+ GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
+ GL_OUTPUT_FOG_EXT 0x87BD
+ GL_SCALAR_EXT 0x87BE
+ GL_VECTOR_EXT 0x87BF
+ GL_MATRIX_EXT 0x87C0
+ GL_VARIANT_EXT 0x87C1
+ GL_INVARIANT_EXT 0x87C2
+ GL_LOCAL_CONSTANT_EXT 0x87C3
+ GL_LOCAL_EXT 0x87C4
+ GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
+ GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
+ GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
+ GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
+ GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CC
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CD
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
+ GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
+ GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
+ GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
+ GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
+ GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
+ GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
+ GL_X_EXT 0x87D5
+ GL_Y_EXT 0x87D6
+ GL_Z_EXT 0x87D7
+ GL_W_EXT 0x87D8
+ GL_NEGATIVE_X_EXT 0x87D9
+ GL_NEGATIVE_Y_EXT 0x87DA
+ GL_NEGATIVE_Z_EXT 0x87DB
+ GL_NEGATIVE_W_EXT 0x87DC
+ GL_ZERO_EXT 0x87DD
+ GL_ONE_EXT 0x87DE
+ GL_NEGATIVE_ONE_EXT 0x87DF
+ GL_NORMALIZED_RANGE_EXT 0x87E0
+ GL_FULL_RANGE_EXT 0x87E1
+ GL_CURRENT_VERTEX_EXT 0x87E2
+ GL_MVP_MATRIX_EXT 0x87E3
+ GL_VARIANT_VALUE_EXT 0x87E4
+ GL_VARIANT_DATATYPE_EXT 0x87E5
+ GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
+ GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
+ GL_VARIANT_ARRAY_EXT 0x87E8
+ GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
+ GL_INVARIANT_VALUE_EXT 0x87EA
+ GL_INVARIANT_DATATYPE_EXT 0x87EB
+ GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
+ GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
+
+ void glBeginVertexShaderEXT (void)
+ void glEndVertexShaderEXT (void)
+ void glBindVertexShaderEXT (GLuint id)
+ GLuint glGenVertexShadersEXT (GLuint range)
+ void glDeleteVertexShaderEXT (GLuint id)
+ void glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1)
+ void glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2)
+ void glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3)
+ void glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)
+ void glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW)
+ void glInsertComponentEXT (GLuint res, GLuint src, GLuint num)
+ void glExtractComponentEXT (GLuint res, GLuint src, GLuint num)
+ GLuint glGenSymbolsEXT (GLenum dataType, GLenum storageType, GLenum range, GLuint components)
+ void glSetInvariantEXT (GLuint id, GLenum type, void *addr)
+ void glSetLocalConstantEXT (GLuint id, GLenum type, void *addr)
+ void glVariantbvEXT (GLuint id, GLbyte *addr)
+ void glVariantsvEXT (GLuint id, GLshort *addr)
+ void glVariantivEXT (GLuint id, GLint *addr)
+ void glVariantfvEXT (GLuint id, GLfloat *addr)
+ void glVariantdvEXT (GLuint id, GLdouble *addr)
+ void glVariantubvEXT (GLuint id, GLubyte *addr)
+ void glVariantusvEXT (GLuint id, GLushort *addr)
+ void glVariantuivEXT (GLuint id, GLuint *addr)
+ void glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, void *addr)
+ void glEnableVariantClientStateEXT (GLuint id)
+ void glDisableVariantClientStateEXT (GLuint id)
+ GLuint glBindLightParameterEXT (GLenum light, GLenum value)
+ GLuint glBindMaterialParameterEXT (GLenum face, GLenum value)
+ GLuint glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value)
+ GLuint glBindTextureUnitParameterEXT (GLenum unit, GLenum value)
+ GLuint glBindParameterEXT (GLenum value)
+ GLboolean glIsVariantEnabledEXT (GLuint id, GLenum cap)
+ void glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data)
+ void glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data)
+ void glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data)
+ void glGetVariantPointervEXT (GLuint id, GLenum value, void **data)
+ void glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data)
+ void glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data)
+ void glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data)
+ void glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data)
+ void glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data)
+ void glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data)
diff --git a/glew/auto/extensions/gl/GL_EXT_vertex_weighting b/glew/auto/extensions/gl/GL_EXT_vertex_weighting
new file mode 100644
index 0000000..3b12240
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_vertex_weighting
@@ -0,0 +1,20 @@
+GL_EXT_vertex_weighting
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_weighting.txt
+GL_EXT_vertex_weighting
+
+ GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3
+ GL_MODELVIEW0_MATRIX_EXT 0x0BA6
+ GL_MODELVIEW0_EXT 0x1700
+ GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
+ GL_MODELVIEW1_MATRIX_EXT 0x8506
+ GL_VERTEX_WEIGHTING_EXT 0x8509
+ GL_MODELVIEW1_EXT 0x850A
+ GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
+ GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
+ GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
+ GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
+ GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
+ GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
+ void glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, void *pointer)
+ void glVertexWeightfEXT (GLfloat weight)
+ void glVertexWeightfvEXT (GLfloat* weight)
diff --git a/glew/auto/extensions/gl/GL_EXT_win32_keyed_mutex b/glew/auto/extensions/gl/GL_EXT_win32_keyed_mutex
new file mode 100644
index 0000000..5d28a88
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_win32_keyed_mutex
@@ -0,0 +1,6 @@
+GL_EXT_win32_keyed_mutex
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_win32_keyed_mutex.txt
+GL_EXT_win32_keyed_mutex
+
+ GLboolean glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout)
+ GLboolean glReleaseKeyedMutexWin32EXT (GLuint memory, GLuint64 key)
diff --git a/glew/auto/extensions/gl/GL_EXT_window_rectangles b/glew/auto/extensions/gl/GL_EXT_window_rectangles
new file mode 100644
index 0000000..194bff8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_window_rectangles
@@ -0,0 +1,11 @@
+GL_EXT_window_rectangles
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_window_rectangles.txt
+GL_EXT_window_rectangles
+
+ GL_INCLUSIVE_EXT 0x8F10
+ GL_EXCLUSIVE_EXT 0x8F11
+ GL_WINDOW_RECTANGLE_EXT 0x8F12
+ GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
+ GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
+ GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
+ void glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint box[])
diff --git a/glew/auto/extensions/gl/GL_EXT_x11_sync_object b/glew/auto/extensions/gl/GL_EXT_x11_sync_object
new file mode 100644
index 0000000..30a771c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_EXT_x11_sync_object
@@ -0,0 +1,6 @@
+GL_EXT_x11_sync_object
+https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_x11_sync_object.txt
+GL_EXT_x11_sync_object
+
+ GL_SYNC_X11_FENCE_EXT 0x90E1
+ GLsync glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags)
diff --git a/glew/auto/extensions/gl/GL_FJ_shader_binary_GCCSO b/glew/auto/extensions/gl/GL_FJ_shader_binary_GCCSO
new file mode 100644
index 0000000..bdc37ca
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_FJ_shader_binary_GCCSO
@@ -0,0 +1,5 @@
+GL_FJ_shader_binary_GCCSO
+https://www.khronos.org/registry/OpenGL/extensions/FJ/FJ_shader_binary_GCCSO.txt
+GL_FJ_shader_binary_GCCSO
+
+ GL_GCCSO_SHADER_BINARY_FJ 0x9260
diff --git a/glew/auto/extensions/gl/GL_GREMEDY_frame_terminator b/glew/auto/extensions/gl/GL_GREMEDY_frame_terminator
new file mode 100644
index 0000000..74dcecb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_GREMEDY_frame_terminator
@@ -0,0 +1,5 @@
+GL_GREMEDY_frame_terminator
+https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_frame_terminator.txt
+GL_GREMEDY_frame_terminator
+
+ void glFrameTerminatorGREMEDY (void)
diff --git a/glew/auto/extensions/gl/GL_GREMEDY_string_marker b/glew/auto/extensions/gl/GL_GREMEDY_string_marker
new file mode 100644
index 0000000..2ff89d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_GREMEDY_string_marker
@@ -0,0 +1,5 @@
+GL_GREMEDY_string_marker
+https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_string_marker.txt
+GL_GREMEDY_string_marker
+
+ void glStringMarkerGREMEDY (GLsizei len, const void *string)
diff --git a/glew/auto/extensions/gl/GL_HP_convolution_border_modes b/glew/auto/extensions/gl/GL_HP_convolution_border_modes
new file mode 100644
index 0000000..d1f072c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_HP_convolution_border_modes
@@ -0,0 +1,4 @@
+GL_HP_convolution_border_modes
+https://www.khronos.org/registry/OpenGL/extensions/HP/HP_convolution_border_modes.txt
+GL_HP_convolution_border_modes
+
diff --git a/glew/auto/extensions/gl/GL_HP_image_transform b/glew/auto/extensions/gl/GL_HP_image_transform
new file mode 100644
index 0000000..c54d05e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_HP_image_transform
@@ -0,0 +1,10 @@
+GL_HP_image_transform
+https://www.khronos.org/registry/OpenGL/extensions/HP/HP_image_transform.txt
+GL_HP_image_transform
+
+ void glGetImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat* params)
+ void glGetImageTransformParameterivHP (GLenum target, GLenum pname, const GLint* params)
+ void glImageTransformParameterfHP (GLenum target, GLenum pname, const GLfloat param)
+ void glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat* params)
+ void glImageTransformParameteriHP (GLenum target, GLenum pname, const GLint param)
+ void glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_HP_occlusion_test b/glew/auto/extensions/gl/GL_HP_occlusion_test
new file mode 100644
index 0000000..99a70f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_HP_occlusion_test
@@ -0,0 +1,4 @@
+GL_HP_occlusion_test
+https://www.khronos.org/registry/OpenGL/extensions/HP/HP_occlusion_test.txt
+GL_HP_occlusion_test
+
diff --git a/glew/auto/extensions/gl/GL_HP_texture_lighting b/glew/auto/extensions/gl/GL_HP_texture_lighting
new file mode 100644
index 0000000..cf26632
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_HP_texture_lighting
@@ -0,0 +1,4 @@
+GL_HP_texture_lighting
+https://www.khronos.org/registry/OpenGL/extensions/HP/HP_texture_lighting.txt
+GL_HP_texture_lighting
+
diff --git a/glew/auto/extensions/gl/GL_IBM_cull_vertex b/glew/auto/extensions/gl/GL_IBM_cull_vertex
new file mode 100644
index 0000000..0f75755
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_cull_vertex
@@ -0,0 +1,5 @@
+GL_IBM_cull_vertex
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_cull_vertex.txt
+GL_IBM_cull_vertex
+
+ GL_CULL_VERTEX_IBM 103050
diff --git a/glew/auto/extensions/gl/GL_IBM_multimode_draw_arrays b/glew/auto/extensions/gl/GL_IBM_multimode_draw_arrays
new file mode 100644
index 0000000..4772ada
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_multimode_draw_arrays
@@ -0,0 +1,6 @@
+GL_IBM_multimode_draw_arrays
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_multimode_draw_arrays.txt
+GL_IBM_multimode_draw_arrays
+
+ void glMultiModeDrawArraysIBM (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride)
+ void glMultiModeDrawElementsIBM (const GLenum* mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride)
diff --git a/glew/auto/extensions/gl/GL_IBM_rasterpos_clip b/glew/auto/extensions/gl/GL_IBM_rasterpos_clip
new file mode 100644
index 0000000..14d19e0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_rasterpos_clip
@@ -0,0 +1,5 @@
+GL_IBM_rasterpos_clip
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_rasterpos_clip.txt
+GL_IBM_rasterpos_clip
+
+ GL_RASTER_POSITION_UNCLIPPED_IBM 103010
diff --git a/glew/auto/extensions/gl/GL_IBM_static_data b/glew/auto/extensions/gl/GL_IBM_static_data
new file mode 100644
index 0000000..c546be7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_static_data
@@ -0,0 +1,6 @@
+GL_IBM_static_data
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_static_data.txt
+GL_IBM_static_data
+
+ GL_ALL_STATIC_DATA_IBM 103060
+ GL_STATIC_VERTEX_ARRAY_IBM 103061
diff --git a/glew/auto/extensions/gl/GL_IBM_texture_mirrored_repeat b/glew/auto/extensions/gl/GL_IBM_texture_mirrored_repeat
new file mode 100644
index 0000000..8c6011f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_texture_mirrored_repeat
@@ -0,0 +1,5 @@
+GL_IBM_texture_mirrored_repeat
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_texture_mirrored_repeat.txt
+GL_IBM_texture_mirrored_repeat
+
+ GL_MIRRORED_REPEAT_IBM 0x8370
diff --git a/glew/auto/extensions/gl/GL_IBM_vertex_array_lists b/glew/auto/extensions/gl/GL_IBM_vertex_array_lists
new file mode 100644
index 0000000..edefa1d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IBM_vertex_array_lists
@@ -0,0 +1,28 @@
+GL_IBM_vertex_array_lists
+https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_vertex_array_lists.txt
+GL_IBM_vertex_array_lists
+
+ GL_VERTEX_ARRAY_LIST_IBM 103070
+ GL_NORMAL_ARRAY_LIST_IBM 103071
+ GL_COLOR_ARRAY_LIST_IBM 103072
+ GL_INDEX_ARRAY_LIST_IBM 103073
+ GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
+ GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
+ GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
+ GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
+ GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
+ GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
+ GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
+ GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
+ GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
+ GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
+ GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
+ GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
+ void glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glEdgeFlagPointerListIBM (GLint stride, const GLboolean ** pointer, GLint ptrstride)
+ void glFogCoordPointerListIBM (GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glIndexPointerListIBM (GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glNormalPointerListIBM (GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride)
+ void glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride)
diff --git a/glew/auto/extensions/gl/GL_IMG_bindless_texture b/glew/auto/extensions/gl/GL_IMG_bindless_texture
new file mode 100644
index 0000000..5cb75fc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_bindless_texture
@@ -0,0 +1,10 @@
+GL_IMG_bindless_texture
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_bindless_texture.txt
+GL_IMG_bindless_texture
+
+ GLuint64 glGetTextureHandleIMG (GLuint texture)
+ GLuint64 glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler)
+ void glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value)
+ void glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64* values)
+ void glUniformHandleui64IMG (GLint location, GLuint64 value)
+ void glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64* value)
diff --git a/glew/auto/extensions/gl/GL_IMG_framebuffer_downsample b/glew/auto/extensions/gl/GL_IMG_framebuffer_downsample
new file mode 100644
index 0000000..b6f9acd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_framebuffer_downsample
@@ -0,0 +1,10 @@
+GL_IMG_framebuffer_downsample
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_framebuffer_downsample.txt
+GL_IMG_framebuffer_downsample
+
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C
+ GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D
+ GL_DOWNSAMPLE_SCALES_IMG 0x913E
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F
+ void glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale)
+ void glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale)
diff --git a/glew/auto/extensions/gl/GL_IMG_multisampled_render_to_texture b/glew/auto/extensions/gl/GL_IMG_multisampled_render_to_texture
new file mode 100644
index 0000000..03505f0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_multisampled_render_to_texture
@@ -0,0 +1,10 @@
+GL_IMG_multisampled_render_to_texture
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_multisampled_render_to_texture.txt
+GL_IMG_multisampled_render_to_texture
+
+ GL_RENDERBUFFER_SAMPLES_IMG 0x9133
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
+ GL_MAX_SAMPLES_IMG 0x9135
+ GL_TEXTURE_SAMPLES_IMG 0x9136
+ void glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
+ void glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_IMG_program_binary b/glew/auto/extensions/gl/GL_IMG_program_binary
new file mode 100644
index 0000000..c16eb14
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_program_binary
@@ -0,0 +1,5 @@
+GL_IMG_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_program_binary.txt
+GL_IMG_program_binary
+
+ GL_SGX_PROGRAM_BINARY_IMG 0x9130
diff --git a/glew/auto/extensions/gl/GL_IMG_read_format b/glew/auto/extensions/gl/GL_IMG_read_format
new file mode 100644
index 0000000..1fecf62
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_read_format
@@ -0,0 +1,6 @@
+GL_IMG_read_format
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_read_format.txt
+GL_IMG_read_format
+
+ GL_BGRA_IMG 0x80E1
+ GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365
diff --git a/glew/auto/extensions/gl/GL_IMG_shader_binary b/glew/auto/extensions/gl/GL_IMG_shader_binary
new file mode 100644
index 0000000..f7c7aec
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_shader_binary
@@ -0,0 +1,5 @@
+GL_IMG_shader_binary
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_shader_binary.txt
+GL_IMG_shader_binary
+
+ GL_SGX_BINARY_IMG 0x8C0A
diff --git a/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc b/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc
new file mode 100644
index 0000000..338e965
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc
@@ -0,0 +1,8 @@
+GL_IMG_texture_compression_pvrtc
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt
+GL_IMG_texture_compression_pvrtc
+
+ GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
+ GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
+ GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
+ GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
diff --git a/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc2 b/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc2
new file mode 100644
index 0000000..81d5447
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_texture_compression_pvrtc2
@@ -0,0 +1,6 @@
+GL_IMG_texture_compression_pvrtc2
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc2.txt
+GL_IMG_texture_compression_pvrtc2
+
+ GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
+ GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
diff --git a/glew/auto/extensions/gl/GL_IMG_texture_env_enhanced_fixed_function b/glew/auto/extensions/gl/GL_IMG_texture_env_enhanced_fixed_function
new file mode 100644
index 0000000..80a7ed3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_texture_env_enhanced_fixed_function
@@ -0,0 +1,11 @@
+GL_IMG_texture_env_enhanced_fixed_function
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_env_enhanced_fixed_function.txt
+GL_IMG_texture_env_enhanced_fixed_function
+
+ GL_DOT3_RGBA_IMG 0x86AF
+ GL_MODULATE_COLOR_IMG 0x8C04
+ GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05
+ GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06
+ GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07
+ GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08
+ GL_ADD_BLEND_IMG 0x8C09
diff --git a/glew/auto/extensions/gl/GL_IMG_texture_filter_cubic b/glew/auto/extensions/gl/GL_IMG_texture_filter_cubic
new file mode 100644
index 0000000..df29bee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_texture_filter_cubic
@@ -0,0 +1,7 @@
+GL_IMG_texture_filter_cubic
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_filter_cubic.txt
+GL_IMG_texture_filter_cubic
+
+ GL_CUBIC_IMG 0x9139
+ GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A
+ GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B
diff --git a/glew/auto/extensions/gl/GL_IMG_tile_region_protection b/glew/auto/extensions/gl/GL_IMG_tile_region_protection
new file mode 100644
index 0000000..80c0848
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_IMG_tile_region_protection
@@ -0,0 +1,7 @@
+GL_IMG_tile_region_protection
+https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_tile_region_protection.txt
+GL_IMG_tile_region_protection
+
+ GL_TRP_IMG 0x8EA0
+ GL_TRP_ERROR_CONTEXT_RESET_IMG 0x8EA1
+ GL_TRP_UNSUPPORTED_CONTEXT_IMG 0x8EA2
diff --git a/glew/auto/extensions/gl/GL_INGR_color_clamp b/glew/auto/extensions/gl/GL_INGR_color_clamp
new file mode 100644
index 0000000..630f82e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INGR_color_clamp
@@ -0,0 +1,12 @@
+GL_INGR_color_clamp
+https://www.khronos.org/registry/OpenGL/extensions/INGR/INGR_color_clamp.txt
+GL_INGR_color_clamp
+
+ GL_RED_MIN_CLAMP_INGR 0x8560
+ GL_GREEN_MIN_CLAMP_INGR 0x8561
+ GL_BLUE_MIN_CLAMP_INGR 0x8562
+ GL_ALPHA_MIN_CLAMP_INGR 0x8563
+ GL_RED_MAX_CLAMP_INGR 0x8564
+ GL_GREEN_MAX_CLAMP_INGR 0x8565
+ GL_BLUE_MAX_CLAMP_INGR 0x8566
+ GL_ALPHA_MAX_CLAMP_INGR 0x8567
diff --git a/glew/auto/extensions/gl/GL_INGR_interlace_read b/glew/auto/extensions/gl/GL_INGR_interlace_read
new file mode 100644
index 0000000..c9f9aa6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INGR_interlace_read
@@ -0,0 +1,5 @@
+GL_INGR_interlace_read
+https://www.khronos.org/registry/OpenGL/extensions/INGR/INGR_interlace_read.txt
+GL_INGR_interlace_read
+
+ GL_INTERLACE_READ_INGR 0x8568
diff --git a/glew/auto/extensions/gl/GL_INTEL_blackhole_render b/glew/auto/extensions/gl/GL_INTEL_blackhole_render
new file mode 100644
index 0000000..787616e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_blackhole_render
@@ -0,0 +1,5 @@
+GL_INTEL_blackhole_render
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_blackhole_render.txt
+GL_INTEL_blackhole_render
+
+ GL_BLACKHOLE_RENDER_INTEL 0x83FC
diff --git a/glew/auto/extensions/gl/GL_INTEL_conservative_rasterization b/glew/auto/extensions/gl/GL_INTEL_conservative_rasterization
new file mode 100644
index 0000000..f9c61bb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_conservative_rasterization
@@ -0,0 +1,5 @@
+GL_INTEL_conservative_rasterization
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_conservative_rasterization.txt
+GL_INTEL_conservative_rasterization
+
+ GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
diff --git a/glew/auto/extensions/gl/GL_INTEL_fragment_shader_ordering b/glew/auto/extensions/gl/GL_INTEL_fragment_shader_ordering
new file mode 100644
index 0000000..acdb8e4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_fragment_shader_ordering
@@ -0,0 +1,4 @@
+GL_INTEL_fragment_shader_ordering
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_fragment_shader_ordering.txt
+GL_INTEL_fragment_shader_ordering
+
diff --git a/glew/auto/extensions/gl/GL_INTEL_framebuffer_CMAA b/glew/auto/extensions/gl/GL_INTEL_framebuffer_CMAA
new file mode 100644
index 0000000..38c129c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_framebuffer_CMAA
@@ -0,0 +1,5 @@
+GL_INTEL_framebuffer_CMAA
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_framebuffer_CMAA.txt
+GL_INTEL_framebuffer_CMAA
+
+ void glApplyFramebufferAttachmentCMAAINTEL (void)
diff --git a/glew/auto/extensions/gl/GL_INTEL_map_texture b/glew/auto/extensions/gl/GL_INTEL_map_texture
new file mode 100644
index 0000000..f497dfa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_map_texture
@@ -0,0 +1,11 @@
+GL_INTEL_map_texture
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_map_texture.txt
+GL_INTEL_map_texture
+
+ GL_LAYOUT_DEFAULT_INTEL 0
+ GL_LAYOUT_LINEAR_INTEL 1
+ GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
+ GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF
+ void * glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint* stride, GLenum *layout)
+ void glSyncTextureINTEL (GLuint texture)
+ void glUnmapTexture2DINTEL (GLuint texture, GLint level)
diff --git a/glew/auto/extensions/gl/GL_INTEL_parallel_arrays b/glew/auto/extensions/gl/GL_INTEL_parallel_arrays
new file mode 100644
index 0000000..2a69604
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_parallel_arrays
@@ -0,0 +1,13 @@
+GL_INTEL_parallel_arrays
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_parallel_arrays.txt
+GL_INTEL_parallel_arrays
+
+ GL_PARALLEL_ARRAYS_INTEL 0x83F4
+ GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
+ GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
+ GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
+ GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
+ void glColorPointervINTEL (GLint size, GLenum type, const void** pointer)
+ void glNormalPointervINTEL (GLenum type, const void** pointer)
+ void glTexCoordPointervINTEL (GLint size, GLenum type, const void** pointer)
+ void glVertexPointervINTEL (GLint size, GLenum type, const void** pointer)
diff --git a/glew/auto/extensions/gl/GL_INTEL_performance_query b/glew/auto/extensions/gl/GL_INTEL_performance_query
new file mode 100644
index 0000000..88955cd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_performance_query
@@ -0,0 +1,34 @@
+GL_INTEL_performance_query
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_performance_query.txt
+GL_INTEL_performance_query
+
+ GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x0000
+ GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x0001
+ GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
+ GL_PERFQUERY_FLUSH_INTEL 0x83FA
+ GL_PERFQUERY_WAIT_INTEL 0x83FB
+ GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
+ GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
+ GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
+ GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
+ GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
+ GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
+ GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
+ GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
+ GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
+ GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
+ GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
+ GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
+ GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
+ GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
+ GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
+ void glBeginPerfQueryINTEL (GLuint queryHandle)
+ void glCreatePerfQueryINTEL (GLuint queryId, GLuint* queryHandle)
+ void glDeletePerfQueryINTEL (GLuint queryHandle)
+ void glEndPerfQueryINTEL (GLuint queryHandle)
+ void glGetFirstPerfQueryIdINTEL (GLuint* queryId)
+ void glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint* nextQueryId)
+ void glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar* counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue)
+ void glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten)
+ void glGetPerfQueryIdByNameINTEL (GLchar* queryName, GLuint *queryId)
+ void glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar* queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask)
diff --git a/glew/auto/extensions/gl/GL_INTEL_shader_integer_functions2 b/glew/auto/extensions/gl/GL_INTEL_shader_integer_functions2
new file mode 100644
index 0000000..647e528
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_shader_integer_functions2
@@ -0,0 +1,4 @@
+GL_INTEL_shader_integer_functions2
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_shader_integer_functions2.txt
+GL_INTEL_shader_integer_functions2
+
diff --git a/glew/auto/extensions/gl/GL_INTEL_texture_scissor b/glew/auto/extensions/gl/GL_INTEL_texture_scissor
new file mode 100644
index 0000000..04507ef
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_INTEL_texture_scissor
@@ -0,0 +1,6 @@
+GL_INTEL_texture_scissor
+https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_texture_scissor.txt
+GL_INTEL_texture_scissor
+
+ void glTexScissorFuncINTEL (GLenum target, GLenum lfunc, GLenum hfunc)
+ void glTexScissorINTEL (GLenum target, GLclampf tlow, GLclampf thigh)
diff --git a/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced b/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced
new file mode 100644
index 0000000..0e13ada
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced
@@ -0,0 +1,21 @@
+GL_KHR_blend_equation_advanced
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_blend_equation_advanced.txt
+GL_KHR_blend_equation_advanced
+
+ GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
+ GL_MULTIPLY_KHR 0x9294
+ GL_SCREEN_KHR 0x9295
+ GL_OVERLAY_KHR 0x9296
+ GL_DARKEN_KHR 0x9297
+ GL_LIGHTEN_KHR 0x9298
+ GL_COLORDODGE_KHR 0x9299
+ GL_COLORBURN_KHR 0x929A
+ GL_HARDLIGHT_KHR 0x929B
+ GL_SOFTLIGHT_KHR 0x929C
+ GL_DIFFERENCE_KHR 0x929E
+ GL_EXCLUSION_KHR 0x92A0
+ GL_HSL_HUE_KHR 0x92AD
+ GL_HSL_SATURATION_KHR 0x92AE
+ GL_HSL_COLOR_KHR 0x92AF
+ GL_HSL_LUMINOSITY_KHR 0x92B0
+ void glBlendBarrierKHR (void)
diff --git a/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced_coherent b/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced_coherent
new file mode 100644
index 0000000..901a886
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_blend_equation_advanced_coherent
@@ -0,0 +1,4 @@
+GL_KHR_blend_equation_advanced_coherent
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_blend_equation_advanced.txt
+GL_KHR_blend_equation_advanced_coherent
+
diff --git a/glew/auto/extensions/gl/GL_KHR_context_flush_control b/glew/auto/extensions/gl/GL_KHR_context_flush_control
new file mode 100644
index 0000000..18de5aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_context_flush_control
@@ -0,0 +1,7 @@
+GL_KHR_context_flush_control
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_context_flush_control.txt
+GL_KHR_context_flush_control
+
+ GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
+ GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
+
diff --git a/glew/auto/extensions/gl/GL_KHR_debug b/glew/auto/extensions/gl/GL_KHR_debug
new file mode 100644
index 0000000..1ffc83a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_debug
@@ -0,0 +1,55 @@
+GL_KHR_debug
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt
+GL_KHR_debug
+
+ GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
+ GL_STACK_OVERFLOW 0x0503
+ GL_STACK_UNDERFLOW 0x0504
+ GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
+ GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
+ GL_DEBUG_CALLBACK_FUNCTION 0x8244
+ GL_DEBUG_CALLBACK_USER_PARAM 0x8245
+ GL_DEBUG_SOURCE_API 0x8246
+ GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
+ GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
+ GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
+ GL_DEBUG_SOURCE_APPLICATION 0x824A
+ GL_DEBUG_SOURCE_OTHER 0x824B
+ GL_DEBUG_TYPE_ERROR 0x824C
+ GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
+ GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
+ GL_DEBUG_TYPE_PORTABILITY 0x824F
+ GL_DEBUG_TYPE_PERFORMANCE 0x8250
+ GL_DEBUG_TYPE_OTHER 0x8251
+ GL_DEBUG_TYPE_MARKER 0x8268
+ GL_DEBUG_TYPE_PUSH_GROUP 0x8269
+ GL_DEBUG_TYPE_POP_GROUP 0x826A
+ GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
+ GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
+ GL_DEBUG_GROUP_STACK_DEPTH 0x826D
+ GL_BUFFER 0x82E0
+ GL_SHADER 0x82E1
+ GL_PROGRAM 0x82E2
+ GL_QUERY 0x82E3
+ GL_PROGRAM_PIPELINE 0x82E4
+ GL_SAMPLER 0x82E6
+ GL_DISPLAY_LIST 0x82E7
+ GL_MAX_LABEL_LENGTH 0x82E8
+ GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
+ GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
+ GL_DEBUG_LOGGED_MESSAGES 0x9145
+ GL_DEBUG_SEVERITY_HIGH 0x9146
+ GL_DEBUG_SEVERITY_MEDIUM 0x9147
+ GL_DEBUG_SEVERITY_LOW 0x9148
+ GL_DEBUG_OUTPUT 0x92E0
+ void glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam)
+ void glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled)
+ void glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf)
+ GLuint glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)
+ void glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label)
+ void glGetObjectPtrLabel (void* ptr, GLsizei bufSize, GLsizei* length, GLchar *label)
+ void glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar* label)
+ void glObjectPtrLabel (void* ptr, GLsizei length, const GLchar* label)
+ void glPopDebugGroup (void)
+ void glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar * message)
+ typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
diff --git a/glew/auto/extensions/gl/GL_KHR_no_error b/glew/auto/extensions/gl/GL_KHR_no_error
new file mode 100644
index 0000000..33da047
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_no_error
@@ -0,0 +1,5 @@
+GL_KHR_no_error
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_no_error.txt
+GL_KHR_no_error
+
+ GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
diff --git a/glew/auto/extensions/gl/GL_KHR_parallel_shader_compile b/glew/auto/extensions/gl/GL_KHR_parallel_shader_compile
new file mode 100644
index 0000000..da163cd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_parallel_shader_compile
@@ -0,0 +1,7 @@
+GL_KHR_parallel_shader_compile
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_parallel_shader_compile.txt
+GL_KHR_parallel_shader_compile
+
+ GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
+ GL_COMPLETION_STATUS_KHR 0x91B1
+ void glMaxShaderCompilerThreadsKHR (GLuint count)
diff --git a/glew/auto/extensions/gl/GL_KHR_robust_buffer_access_behavior b/glew/auto/extensions/gl/GL_KHR_robust_buffer_access_behavior
new file mode 100644
index 0000000..0b6c582
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_robust_buffer_access_behavior
@@ -0,0 +1,4 @@
+GL_KHR_robust_buffer_access_behavior
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robust_buffer_access_behavior.txt
+GL_KHR_robust_buffer_access_behavior
+
diff --git a/glew/auto/extensions/gl/GL_KHR_robustness b/glew/auto/extensions/gl/GL_KHR_robustness
new file mode 100644
index 0000000..c775801
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_robustness
@@ -0,0 +1,16 @@
+GL_KHR_robustness
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robustness.txt
+GL_KHR_robustness
+
+ GL_CONTEXT_LOST 0x0507
+ GL_LOSE_CONTEXT_ON_RESET 0x8252
+ GL_GUILTY_CONTEXT_RESET 0x8253
+ GL_INNOCENT_CONTEXT_RESET 0x8254
+ GL_UNKNOWN_CONTEXT_RESET 0x8255
+ GL_RESET_NOTIFICATION_STRATEGY 0x8256
+ GL_NO_RESET_NOTIFICATION 0x8261
+ GL_CONTEXT_ROBUST_ACCESS 0x90F3
+ void glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+ void glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint* params)
+ void glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint* params)
+ void glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)
diff --git a/glew/auto/extensions/gl/GL_KHR_shader_subgroup b/glew/auto/extensions/gl/GL_KHR_shader_subgroup
new file mode 100644
index 0000000..da16f58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_shader_subgroup
@@ -0,0 +1,16 @@
+GL_KHR_shader_subgroup
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_shader_subgroup.txt
+GL_KHR_shader_subgroup
+
+ GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
+ GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002
+ GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
+ GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
+ GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
+ GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
+ GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
+ GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080
+ GL_SUBGROUP_SIZE_KHR 0x9532
+ GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533
+ GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
+ GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535
diff --git a/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_hdr b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_hdr
new file mode 100644
index 0000000..a4a2f3e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_hdr
@@ -0,0 +1,52 @@
+GL_KHR_texture_compression_astc_hdr
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt
+GL_KHR_texture_compression_astc_hdr
+
+ GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+ GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+ GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+ GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+ GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+ GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+ GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+ GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+ GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+ GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+ GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+ GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+ GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+ GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+ GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+ GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+ GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+ GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+ GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+ GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+ GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+ GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+ GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+ GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
diff --git a/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_ldr b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_ldr
new file mode 100644
index 0000000..f928aad
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_ldr
@@ -0,0 +1,52 @@
+GL_KHR_texture_compression_astc_ldr
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt
+GL_KHR_texture_compression_astc_ldr
+
+ GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+ GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+ GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+ GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+ GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+ GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+ GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+ GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+ GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+ GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+ GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+ GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+ GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+ GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+ GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+ GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+ GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+ GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+ GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+ GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+ GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+ GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+ GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+ GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
diff --git a/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_sliced_3d b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_sliced_3d
new file mode 100644
index 0000000..06a71aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KHR_texture_compression_astc_sliced_3d
@@ -0,0 +1,4 @@
+GL_KHR_texture_compression_astc_sliced_3d
+https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_texture_compression_astc_sliced_3d.txt
+GL_KHR_texture_compression_astc_sliced_3d
+
diff --git a/glew/auto/extensions/gl/GL_KTX_buffer_region b/glew/auto/extensions/gl/GL_KTX_buffer_region
new file mode 100644
index 0000000..ef281b1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_KTX_buffer_region
@@ -0,0 +1,13 @@
+GL_KTX_buffer_region
+
+GL_KTX_buffer_region
+
+ GL_KTX_FRONT_REGION 0x0
+ GL_KTX_BACK_REGION 0x1
+ GL_KTX_Z_REGION 0x2
+ GL_KTX_STENCIL_REGION 0x3
+ GLuint glBufferRegionEnabled (void)
+ GLuint glNewBufferRegion (GLenum region)
+ void glDeleteBufferRegion (GLenum region)
+ void glReadBufferRegion (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glDrawBufferRegion (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest)
diff --git a/glew/auto/extensions/gl/GL_MESAX_texture_stack b/glew/auto/extensions/gl/GL_MESAX_texture_stack
new file mode 100644
index 0000000..f4423dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESAX_texture_stack
@@ -0,0 +1,10 @@
+GL_MESAX_texture_stack
+https://www.khronos.org/registry/OpenGL/extensions/MESAX/MESAX_texture_stack.txt
+GL_MESAX_texture_stack
+
+ GL_TEXTURE_1D_STACK_MESAX 0x8759
+ GL_TEXTURE_2D_STACK_MESAX 0x875A
+ GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
+ GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
+ GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
+ GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
diff --git a/glew/auto/extensions/gl/GL_MESA_bgra b/glew/auto/extensions/gl/GL_MESA_bgra
new file mode 100644
index 0000000..e364079
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_bgra
@@ -0,0 +1,6 @@
+GL_MESA_bgra
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_bgra.txt
+GL_MESA_bgra
+
+ GL_BGR_EXT 0x80E0
+ GL_BGRA_EXT 0x80E1
diff --git a/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_x b/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_x
new file mode 100644
index 0000000..d3367ac
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_x
@@ -0,0 +1,5 @@
+GL_MESA_framebuffer_flip_x
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_flip_x.txt
+GL_MESA_framebuffer_flip_x
+
+ GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC
diff --git a/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_y b/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_y
new file mode 100644
index 0000000..4f83a5c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_framebuffer_flip_y
@@ -0,0 +1,7 @@
+GL_MESA_framebuffer_flip_y
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_flip_y.txt
+GL_MESA_framebuffer_flip_y
+
+ GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB
+ void glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param)
+ void glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_MESA_framebuffer_swap_xy b/glew/auto/extensions/gl/GL_MESA_framebuffer_swap_xy
new file mode 100644
index 0000000..a42bbb2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_framebuffer_swap_xy
@@ -0,0 +1,5 @@
+GL_MESA_framebuffer_swap_xy
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_swap_xy.txt
+GL_MESA_framebuffer_swap_xy
+
+ GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD
diff --git a/glew/auto/extensions/gl/GL_MESA_pack_invert b/glew/auto/extensions/gl/GL_MESA_pack_invert
new file mode 100644
index 0000000..009bdd2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_pack_invert
@@ -0,0 +1,5 @@
+GL_MESA_pack_invert
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_pack_invert.txt
+GL_MESA_pack_invert
+
+ GL_PACK_INVERT_MESA 0x8758
diff --git a/glew/auto/extensions/gl/GL_MESA_program_binary_formats b/glew/auto/extensions/gl/GL_MESA_program_binary_formats
new file mode 100644
index 0000000..45e7d18
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_program_binary_formats
@@ -0,0 +1,5 @@
+GL_MESA_program_binary_formats
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_program_binary_formats.txt
+GL_MESA_program_binary_formats
+
+ GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
diff --git a/glew/auto/extensions/gl/GL_MESA_resize_buffers b/glew/auto/extensions/gl/GL_MESA_resize_buffers
new file mode 100644
index 0000000..d3c332b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_resize_buffers
@@ -0,0 +1,5 @@
+GL_MESA_resize_buffers
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_resize_buffers.txt
+GL_MESA_resize_buffers
+
+ void glResizeBuffersMESA (void)
diff --git a/glew/auto/extensions/gl/GL_MESA_shader_integer_functions b/glew/auto/extensions/gl/GL_MESA_shader_integer_functions
new file mode 100644
index 0000000..bc97f8f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_shader_integer_functions
@@ -0,0 +1,4 @@
+GL_MESA_shader_integer_functions
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_shader_integer_functions.txt
+GL_MESA_shader_integer_functions
+
diff --git a/glew/auto/extensions/gl/GL_MESA_tile_raster_order b/glew/auto/extensions/gl/GL_MESA_tile_raster_order
new file mode 100644
index 0000000..3eb9306
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_tile_raster_order
@@ -0,0 +1,4 @@
+GL_MESA_tile_raster_order
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_tile_raster_order.txt
+GL_MESA_tile_raster_order
+
diff --git a/glew/auto/extensions/gl/GL_MESA_window_pos b/glew/auto/extensions/gl/GL_MESA_window_pos
new file mode 100644
index 0000000..4282ff4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_window_pos
@@ -0,0 +1,28 @@
+GL_MESA_window_pos
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_window_pos.txt
+GL_MESA_window_pos
+
+ void glWindowPos2dMESA (GLdouble x, GLdouble y)
+ void glWindowPos2dvMESA (const GLdouble* p)
+ void glWindowPos2fMESA (GLfloat x, GLfloat y)
+ void glWindowPos2fvMESA (const GLfloat* p)
+ void glWindowPos2iMESA (GLint x, GLint y)
+ void glWindowPos2ivMESA (const GLint* p)
+ void glWindowPos2sMESA (GLshort x, GLshort y)
+ void glWindowPos2svMESA (const GLshort* p)
+ void glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z)
+ void glWindowPos3dvMESA (const GLdouble* p)
+ void glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z)
+ void glWindowPos3fvMESA (const GLfloat* p)
+ void glWindowPos3iMESA (GLint x, GLint y, GLint z)
+ void glWindowPos3ivMESA (const GLint* p)
+ void glWindowPos3sMESA (GLshort x, GLshort y, GLshort z)
+ void glWindowPos3svMESA (const GLshort* p)
+ void glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble)
+ void glWindowPos4dvMESA (const GLdouble* p)
+ void glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glWindowPos4fvMESA (const GLfloat* p)
+ void glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w)
+ void glWindowPos4ivMESA (const GLint* p)
+ void glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w)
+ void glWindowPos4svMESA (const GLshort* p)
diff --git a/glew/auto/extensions/gl/GL_MESA_ycbcr_texture b/glew/auto/extensions/gl/GL_MESA_ycbcr_texture
new file mode 100644
index 0000000..b82f635
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_MESA_ycbcr_texture
@@ -0,0 +1,7 @@
+GL_MESA_ycbcr_texture
+https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_ycbcr_texture.txt
+GL_MESA_ycbcr_texture
+
+ GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
+ GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
+ GL_YCBCR_MESA 0x8757
diff --git a/glew/auto/extensions/gl/GL_NVX_blend_equation_advanced_multi_draw_buffers b/glew/auto/extensions/gl/GL_NVX_blend_equation_advanced_multi_draw_buffers
new file mode 100644
index 0000000..2a88bf9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_blend_equation_advanced_multi_draw_buffers
@@ -0,0 +1,4 @@
+GL_NVX_blend_equation_advanced_multi_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_blend_equation_advanced_multi_draw_buffers.txt
+GL_NVX_blend_equation_advanced_multi_draw_buffers
+
diff --git a/glew/auto/extensions/gl/GL_NVX_conditional_render b/glew/auto/extensions/gl/GL_NVX_conditional_render
new file mode 100644
index 0000000..71b9541
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_conditional_render
@@ -0,0 +1,6 @@
+GL_NVX_conditional_render
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_conditional_render.txt
+GL_NVX_conditional_render
+
+ void glBeginConditionalRenderNVX (GLuint id)
+ void glEndConditionalRenderNVX (void)
diff --git a/glew/auto/extensions/gl/GL_NVX_gpu_memory_info b/glew/auto/extensions/gl/GL_NVX_gpu_memory_info
new file mode 100644
index 0000000..a8d97b9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_gpu_memory_info
@@ -0,0 +1,9 @@
+GL_NVX_gpu_memory_info
+http://developer.download.nvidia.com/opengl/specs/GL_NVX_gpu_memory_info.txt
+GL_NVX_gpu_memory_info
+
+ GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
+ GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
+ GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
+ GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
+ GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
diff --git a/glew/auto/extensions/gl/GL_NVX_gpu_multicast2 b/glew/auto/extensions/gl/GL_NVX_gpu_multicast2
new file mode 100644
index 0000000..bc1d221
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_gpu_multicast2
@@ -0,0 +1,11 @@
+GL_NVX_gpu_multicast2
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_gpu_multicast2.txt
+GL_NVX_gpu_multicast2
+
+ GL_UPLOAD_GPU_MASK_NVX 0x954A
+ GLsync glAsyncCopyBufferSubDataNVX (GLsizei waitSemaphoreCount, const GLuint* waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray)
+ GLuint glAsyncCopyImageSubDataNVX (GLsizei waitSemaphoreCount, const GLuint* waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray)
+ void glMulticastScissorArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLint* v)
+ void glMulticastViewportArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLfloat* v)
+ void glMulticastViewportPositionWScaleNVX (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff)
+ void glUploadGpuMaskNVX (GLbitfield mask)
diff --git a/glew/auto/extensions/gl/GL_NVX_linked_gpu_multicast b/glew/auto/extensions/gl/GL_NVX_linked_gpu_multicast
new file mode 100644
index 0000000..1386279
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_linked_gpu_multicast
@@ -0,0 +1,9 @@
+GL_NVX_linked_gpu_multicast
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_linked_gpu_multicast.txt
+GL_NVX_linked_gpu_multicast
+
+ GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800
+ GL_MAX_LGPU_GPUS_NVX 0x92BA
+ void glLGPUCopyImageSubDataNVX (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+ void glLGPUInterlockNVX (void)
+ void glLGPUNamedBufferSubDataNVX (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
diff --git a/glew/auto/extensions/gl/GL_NVX_progress_fence b/glew/auto/extensions/gl/GL_NVX_progress_fence
new file mode 100644
index 0000000..fb19688
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NVX_progress_fence
@@ -0,0 +1,8 @@
+GL_NVX_progress_fence
+https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_progress_fence.txt
+GL_NVX_progress_fence
+
+ void glClientWaitSemaphoreui64NVX (GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray)
+ GLuint glCreateProgressFenceNVX (void)
+ void glSignalSemaphoreui64NVX (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray)
+ void glWaitSemaphoreui64NVX (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray)
diff --git a/glew/auto/extensions/gl/GL_NV_3dvision_settings b/glew/auto/extensions/gl/GL_NV_3dvision_settings
new file mode 100644
index 0000000..daf8ab7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_3dvision_settings
@@ -0,0 +1,13 @@
+GL_NV_3dvision_settings
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_3dvision_settings.txt
+GL_NV_3dvision_settings
+
+ GL_3DVISION_STEREO_NV 0x90F4
+ GL_STEREO_SEPARATION_NV 0x90F5
+ GL_STEREO_CONVERGENCE_NV 0x90F6
+ GL_STEREO_CUTOFF_NV 0x90F7
+ GL_STEREO_PROJECTION_NV 0x90F8
+ GL_STEREO_PROJECTION_PERSPECTIVE_NV 0x90F9
+ GL_STEREO_PROJECTION_ORTHO_NV 0x90FA
+ void glStereoParameterfNV (GLenum pname, GLfloat param)
+ void glStereoParameteriNV (GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_NV_EGL_stream_consumer_external b/glew/auto/extensions/gl/GL_NV_EGL_stream_consumer_external
new file mode 100644
index 0000000..0b2e201
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_EGL_stream_consumer_external
@@ -0,0 +1,8 @@
+GL_NV_EGL_stream_consumer_external
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_EGL_stream_consumer_external.txt
+GL_NV_EGL_stream_consumer_external
+
+ GL_TEXTURE_EXTERNAL_OES 0x8D65
+ GL_SAMPLER_EXTERNAL_OES 0x8D66
+ GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+ GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
diff --git a/glew/auto/extensions/gl/GL_NV_alpha_to_coverage_dither_control b/glew/auto/extensions/gl/GL_NV_alpha_to_coverage_dither_control
new file mode 100644
index 0000000..0e836c6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_alpha_to_coverage_dither_control
@@ -0,0 +1,9 @@
+GL_NV_alpha_to_coverage_dither_control
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_alpha_to_coverage_dither_control.txt
+GL_NV_alpha_to_coverage_dither_control
+
+ GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF
+ GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D
+ GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E
+ GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F
+ void glAlphaToCoverageDitherControlNV (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_NV_bgr b/glew/auto/extensions/gl/GL_NV_bgr
new file mode 100644
index 0000000..83a68cf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_bgr
@@ -0,0 +1,5 @@
+GL_NV_bgr
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bgr.txt
+GL_NV_bgr
+
+ GL_BGR_NV 0x80E0
diff --git a/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect b/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect
new file mode 100644
index 0000000..62119f5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect
@@ -0,0 +1,6 @@
+GL_NV_bindless_multi_draw_indirect
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_multi_draw_indirect.txt
+GL_NV_bindless_multi_draw_indirect
+
+ void glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount)
+ void glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount)
diff --git a/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect_count b/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect_count
new file mode 100644
index 0000000..3bf66b2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_bindless_multi_draw_indirect_count
@@ -0,0 +1,6 @@
+GL_NV_bindless_multi_draw_indirect_count
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_multi_draw_indirect_count.txt
+GL_NV_bindless_multi_draw_indirect_count
+
+ void glMultiDrawArraysIndirectBindlessCountNV (GLenum mode, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount)
+ void glMultiDrawElementsIndirectBindlessCountNV (GLenum mode, GLenum type, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount)
diff --git a/glew/auto/extensions/gl/GL_NV_bindless_texture b/glew/auto/extensions/gl/GL_NV_bindless_texture
new file mode 100644
index 0000000..30011fa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_bindless_texture
@@ -0,0 +1,17 @@
+GL_NV_bindless_texture
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_texture.txt
+GL_NV_bindless_texture
+
+ GLuint64 glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format)
+ GLuint64 glGetTextureHandleNV (GLuint texture)
+ GLuint64 glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler)
+ GLboolean glIsImageHandleResidentNV (GLuint64 handle)
+ GLboolean glIsTextureHandleResidentNV (GLuint64 handle)
+ void glMakeImageHandleNonResidentNV (GLuint64 handle)
+ void glMakeImageHandleResidentNV (GLuint64 handle, GLenum access)
+ void glMakeTextureHandleNonResidentNV (GLuint64 handle)
+ void glMakeTextureHandleResidentNV (GLuint64 handle)
+ void glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value)
+ void glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64* values)
+ void glUniformHandleui64NV (GLint location, GLuint64 value)
+ void glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64* value)
diff --git a/glew/auto/extensions/gl/GL_NV_blend_equation_advanced b/glew/auto/extensions/gl/GL_NV_blend_equation_advanced
new file mode 100644
index 0000000..861c9ce
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_blend_equation_advanced
@@ -0,0 +1,56 @@
+GL_NV_blend_equation_advanced
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_equation_advanced.txt
+GL_NV_blend_equation_advanced
+
+ GL_XOR_NV 0x1506
+ GL_RED_NV 0x1903
+ GL_GREEN_NV 0x1904
+ GL_BLUE_NV 0x1905
+ GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
+ GL_BLEND_OVERLAP_NV 0x9281
+ GL_UNCORRELATED_NV 0x9282
+ GL_DISJOINT_NV 0x9283
+ GL_CONJOINT_NV 0x9284
+ GL_BLEND_ADVANCED_COHERENT_NV 0x9285
+ GL_SRC_NV 0x9286
+ GL_DST_NV 0x9287
+ GL_SRC_OVER_NV 0x9288
+ GL_DST_OVER_NV 0x9289
+ GL_SRC_IN_NV 0x928A
+ GL_DST_IN_NV 0x928B
+ GL_SRC_OUT_NV 0x928C
+ GL_DST_OUT_NV 0x928D
+ GL_SRC_ATOP_NV 0x928E
+ GL_DST_ATOP_NV 0x928F
+ GL_PLUS_NV 0x9291
+ GL_PLUS_DARKER_NV 0x9292
+ GL_MULTIPLY_NV 0x9294
+ GL_SCREEN_NV 0x9295
+ GL_OVERLAY_NV 0x9296
+ GL_DARKEN_NV 0x9297
+ GL_LIGHTEN_NV 0x9298
+ GL_COLORDODGE_NV 0x9299
+ GL_COLORBURN_NV 0x929A
+ GL_HARDLIGHT_NV 0x929B
+ GL_SOFTLIGHT_NV 0x929C
+ GL_DIFFERENCE_NV 0x929E
+ GL_MINUS_NV 0x929F
+ GL_EXCLUSION_NV 0x92A0
+ GL_CONTRAST_NV 0x92A1
+ GL_INVERT_RGB_NV 0x92A3
+ GL_LINEARDODGE_NV 0x92A4
+ GL_LINEARBURN_NV 0x92A5
+ GL_VIVIDLIGHT_NV 0x92A6
+ GL_LINEARLIGHT_NV 0x92A7
+ GL_PINLIGHT_NV 0x92A8
+ GL_HARDMIX_NV 0x92A9
+ GL_HSL_HUE_NV 0x92AD
+ GL_HSL_SATURATION_NV 0x92AE
+ GL_HSL_COLOR_NV 0x92AF
+ GL_HSL_LUMINOSITY_NV 0x92B0
+ GL_PLUS_CLAMPED_NV 0x92B1
+ GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
+ GL_MINUS_CLAMPED_NV 0x92B3
+ GL_INVERT_OVG_NV 0x92B4
+ void glBlendBarrierNV (void)
+ void glBlendParameteriNV (GLenum pname, GLint value)
diff --git a/glew/auto/extensions/gl/GL_NV_blend_equation_advanced_coherent b/glew/auto/extensions/gl/GL_NV_blend_equation_advanced_coherent
new file mode 100644
index 0000000..9a041df
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_blend_equation_advanced_coherent
@@ -0,0 +1,4 @@
+GL_NV_blend_equation_advanced_coherent
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_equation_advanced.txt
+GL_NV_blend_equation_advanced_coherent
+
diff --git a/glew/auto/extensions/gl/GL_NV_blend_minmax_factor b/glew/auto/extensions/gl/GL_NV_blend_minmax_factor
new file mode 100644
index 0000000..61f39b4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_blend_minmax_factor
@@ -0,0 +1,6 @@
+GL_NV_blend_minmax_factor
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_minmax_factor.txt
+GL_NV_blend_minmax_factor
+
+ GL_FACTOR_MIN_AMD 0x901C
+ GL_FACTOR_MAX_AMD 0x901D
diff --git a/glew/auto/extensions/gl/GL_NV_blend_square b/glew/auto/extensions/gl/GL_NV_blend_square
new file mode 100644
index 0000000..23d009e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_blend_square
@@ -0,0 +1,4 @@
+GL_NV_blend_square
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_square.txt
+GL_NV_blend_square
+
diff --git a/glew/auto/extensions/gl/GL_NV_clip_space_w_scaling b/glew/auto/extensions/gl/GL_NV_clip_space_w_scaling
new file mode 100644
index 0000000..82f272b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_clip_space_w_scaling
@@ -0,0 +1,8 @@
+GL_NV_clip_space_w_scaling
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_clip_space_w_scaling.txt
+GL_NV_clip_space_w_scaling
+
+ GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
+ GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
+ GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
+ void glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff)
diff --git a/glew/auto/extensions/gl/GL_NV_command_list b/glew/auto/extensions/gl/GL_NV_command_list
new file mode 100644
index 0000000..7dc2488
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_command_list
@@ -0,0 +1,40 @@
+GL_NV_command_list
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_command_list.txt
+GL_NV_command_list
+
+ GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
+ GL_NOP_COMMAND_NV 0x0001
+ GL_DRAW_ELEMENTS_COMMAND_NV 0x0002
+ GL_DRAW_ARRAYS_COMMAND_NV 0x0003
+ GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004
+ GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005
+ GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006
+ GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007
+ GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008
+ GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009
+ GL_UNIFORM_ADDRESS_COMMAND_NV 0x000a
+ GL_BLEND_COLOR_COMMAND_NV 0x000b
+ GL_STENCIL_REF_COMMAND_NV 0x000c
+ GL_LINE_WIDTH_COMMAND_NV 0x000d
+ GL_POLYGON_OFFSET_COMMAND_NV 0x000e
+ GL_ALPHA_REF_COMMAND_NV 0x000f
+ GL_VIEWPORT_COMMAND_NV 0x0010
+ GL_SCISSOR_COMMAND_NV 0x0011
+ GL_FRONT_FACE_COMMAND_NV 0x0012
+ void glCallCommandListNV (GLuint list)
+ void glCommandListSegmentsNV (GLuint list, GLuint segments)
+ void glCompileCommandListNV (GLuint list)
+ void glCreateCommandListsNV (GLsizei n, GLuint* lists)
+ void glCreateStatesNV (GLsizei n, GLuint* states)
+ void glDeleteCommandListsNV (GLsizei n, const GLuint* lists)
+ void glDeleteStatesNV (GLsizei n, const GLuint* states)
+ void glDrawCommandsAddressNV (GLenum primitiveMode, const GLuint64* indirects, const GLsizei* sizes, GLuint count)
+ void glDrawCommandsNV (GLenum primitiveMode, GLuint buffer, const GLintptr* indirects, const GLsizei* sizes, GLuint count)
+ void glDrawCommandsStatesAddressNV (const GLuint64* indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count)
+ void glDrawCommandsStatesNV (GLuint buffer, const GLintptr* indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count)
+ GLuint glGetCommandHeaderNV (GLenum tokenID, GLuint size)
+ GLushort glGetStageIndexNV (GLenum shadertype)
+ GLboolean glIsCommandListNV (GLuint list)
+ GLboolean glIsStateNV (GLuint state)
+ void glListDrawCommandsStatesClientNV (GLuint list, GLuint segment, const void** indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count)
+ void glStateCaptureNV (GLuint state, GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_NV_compute_program5 b/glew/auto/extensions/gl/GL_NV_compute_program5
new file mode 100644
index 0000000..ddca154
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_compute_program5
@@ -0,0 +1,6 @@
+GL_NV_compute_program5
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_compute_program5.txt
+GL_NV_compute_program5
+
+ GL_COMPUTE_PROGRAM_NV 0x90FB
+ GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
diff --git a/glew/auto/extensions/gl/GL_NV_compute_shader_derivatives b/glew/auto/extensions/gl/GL_NV_compute_shader_derivatives
new file mode 100644
index 0000000..7b6886c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_compute_shader_derivatives
@@ -0,0 +1,4 @@
+GL_NV_compute_shader_derivatives
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_compute_shader_derivatives.txt
+GL_NV_compute_shader_derivatives
+
diff --git a/glew/auto/extensions/gl/GL_NV_conditional_render b/glew/auto/extensions/gl/GL_NV_conditional_render
new file mode 100644
index 0000000..62a4e34
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conditional_render
@@ -0,0 +1,10 @@
+GL_NV_conditional_render
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conditional_render.txt
+GL_NV_conditional_render
+
+ GL_QUERY_WAIT_NV 0x8E13
+ GL_QUERY_NO_WAIT_NV 0x8E14
+ GL_QUERY_BY_REGION_WAIT_NV 0x8E15
+ GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
+ void glBeginConditionalRenderNV (GLuint id, GLenum mode)
+ void glEndConditionalRenderNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster b/glew/auto/extensions/gl/GL_NV_conservative_raster
new file mode 100644
index 0000000..70afbc0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster
@@ -0,0 +1,9 @@
+GL_NV_conservative_raster
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster.txt
+GL_NV_conservative_raster
+
+ GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
+ GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
+ GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
+ GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
+ void glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits)
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster_dilate b/glew/auto/extensions/gl/GL_NV_conservative_raster_dilate
new file mode 100644
index 0000000..394ed9e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster_dilate
@@ -0,0 +1,8 @@
+GL_NV_conservative_raster_dilate
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_dilate.txt
+GL_NV_conservative_raster_dilate
+
+ GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379
+ GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
+ GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
+ void glConservativeRasterParameterfNV (GLenum pname, GLfloat value)
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap b/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap
new file mode 100644
index 0000000..5f361a2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap
@@ -0,0 +1,5 @@
+GL_NV_conservative_raster_pre_snap
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_pre_snap.txt
+GL_NV_conservative_raster_pre_snap
+
+ GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap_triangles b/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap_triangles
new file mode 100644
index 0000000..9dd4457
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster_pre_snap_triangles
@@ -0,0 +1,8 @@
+GL_NV_conservative_raster_pre_snap_triangles
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_pre_snap_triangles.txt
+GL_NV_conservative_raster_pre_snap_triangles
+
+ GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
+ GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
+ GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
+ void glConservativeRasterParameteriNV (GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_NV_conservative_raster_underestimation b/glew/auto/extensions/gl/GL_NV_conservative_raster_underestimation
new file mode 100644
index 0000000..900435f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_conservative_raster_underestimation
@@ -0,0 +1,4 @@
+GL_NV_conservative_raster_underestimation
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_underestimation.txt
+GL_NV_conservative_raster_underestimation
+
diff --git a/glew/auto/extensions/gl/GL_NV_copy_buffer b/glew/auto/extensions/gl/GL_NV_copy_buffer
new file mode 100644
index 0000000..9cbd6ec
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_copy_buffer
@@ -0,0 +1,7 @@
+GL_NV_copy_buffer
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_buffer.txt
+GL_NV_copy_buffer
+
+ GL_COPY_READ_BUFFER_NV 0x8F36
+ GL_COPY_WRITE_BUFFER_NV 0x8F37
+ void glCopyBufferSubDataNV (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_NV_copy_depth_to_color b/glew/auto/extensions/gl/GL_NV_copy_depth_to_color
new file mode 100644
index 0000000..c11c4d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_copy_depth_to_color
@@ -0,0 +1,6 @@
+GL_NV_copy_depth_to_color
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_depth_to_color.txt
+GL_NV_copy_depth_to_color
+
+ GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
+ GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
diff --git a/glew/auto/extensions/gl/GL_NV_copy_image b/glew/auto/extensions/gl/GL_NV_copy_image
new file mode 100644
index 0000000..8c7b610
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_copy_image
@@ -0,0 +1,5 @@
+GL_NV_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_image.txt
+GL_NV_copy_image
+
+ void glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/GL_NV_deep_texture3D b/glew/auto/extensions/gl/GL_NV_deep_texture3D
new file mode 100644
index 0000000..d55fc35
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_deep_texture3D
@@ -0,0 +1,6 @@
+GL_NV_deep_texture3D
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_deep_texture3D.txt
+GL_NV_deep_texture3D
+
+ GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
+ GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1
diff --git a/glew/auto/extensions/gl/GL_NV_depth_buffer_float b/glew/auto/extensions/gl/GL_NV_depth_buffer_float
new file mode 100644
index 0000000..421d266
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_depth_buffer_float
@@ -0,0 +1,11 @@
+GL_NV_depth_buffer_float
+http://developer.download.nvidia.com/opengl/specs/GL_NV_depth_buffer_float.txt
+GL_NV_depth_buffer_float
+
+ GL_DEPTH_COMPONENT32F_NV 0x8DAB
+ GL_DEPTH32F_STENCIL8_NV 0x8DAC
+ GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
+ GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
+ void glDepthRangedNV (GLdouble zNear, GLdouble zFar)
+ void glClearDepthdNV (GLdouble depth)
+ void glDepthBoundsdNV (GLdouble zmin, GLdouble zmax)
diff --git a/glew/auto/extensions/gl/GL_NV_depth_clamp b/glew/auto/extensions/gl/GL_NV_depth_clamp
new file mode 100644
index 0000000..df48d4e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_depth_clamp
@@ -0,0 +1,5 @@
+GL_NV_depth_clamp
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_depth_clamp.txt
+GL_NV_depth_clamp
+
+ GL_DEPTH_CLAMP_NV 0x864F
diff --git a/glew/auto/extensions/gl/GL_NV_depth_nonlinear b/glew/auto/extensions/gl/GL_NV_depth_nonlinear
new file mode 100644
index 0000000..b215e77
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_depth_nonlinear
@@ -0,0 +1,5 @@
+GL_NV_depth_nonlinear
+https://www.khronos.org/registry/OpenGL/extensions/NV/EGL_NV_depth_nonlinear.txt
+GL_NV_depth_nonlinear
+
+ GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
diff --git a/glew/auto/extensions/gl/GL_NV_depth_range_unclamped b/glew/auto/extensions/gl/GL_NV_depth_range_unclamped
new file mode 100644
index 0000000..b63a0ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_depth_range_unclamped
@@ -0,0 +1,9 @@
+GL_NV_depth_range_unclamped
+
+GL_NV_depth_range_unclamped
+
+ GL_SAMPLE_COUNT_BITS_NV 0x8864
+ GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865
+ GL_QUERY_RESULT_NV 0x8866
+ GL_QUERY_RESULT_AVAILABLE_NV 0x8867
+ GL_SAMPLE_COUNT_NV 0x8914
diff --git a/glew/auto/extensions/gl/GL_NV_draw_buffers b/glew/auto/extensions/gl/GL_NV_draw_buffers
new file mode 100644
index 0000000..8f664c0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_draw_buffers
@@ -0,0 +1,38 @@
+GL_NV_draw_buffers
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_buffers.txt
+GL_NV_draw_buffers
+
+ GL_MAX_DRAW_BUFFERS_NV 0x8824
+ GL_DRAW_BUFFER0_NV 0x8825
+ GL_DRAW_BUFFER1_NV 0x8826
+ GL_DRAW_BUFFER2_NV 0x8827
+ GL_DRAW_BUFFER3_NV 0x8828
+ GL_DRAW_BUFFER4_NV 0x8829
+ GL_DRAW_BUFFER5_NV 0x882A
+ GL_DRAW_BUFFER6_NV 0x882B
+ GL_DRAW_BUFFER7_NV 0x882C
+ GL_DRAW_BUFFER8_NV 0x882D
+ GL_DRAW_BUFFER9_NV 0x882E
+ GL_DRAW_BUFFER10_NV 0x882F
+ GL_DRAW_BUFFER11_NV 0x8830
+ GL_DRAW_BUFFER12_NV 0x8831
+ GL_DRAW_BUFFER13_NV 0x8832
+ GL_DRAW_BUFFER14_NV 0x8833
+ GL_DRAW_BUFFER15_NV 0x8834
+ GL_COLOR_ATTACHMENT0_NV 0x8CE0
+ GL_COLOR_ATTACHMENT1_NV 0x8CE1
+ GL_COLOR_ATTACHMENT2_NV 0x8CE2
+ GL_COLOR_ATTACHMENT3_NV 0x8CE3
+ GL_COLOR_ATTACHMENT4_NV 0x8CE4
+ GL_COLOR_ATTACHMENT5_NV 0x8CE5
+ GL_COLOR_ATTACHMENT6_NV 0x8CE6
+ GL_COLOR_ATTACHMENT7_NV 0x8CE7
+ GL_COLOR_ATTACHMENT8_NV 0x8CE8
+ GL_COLOR_ATTACHMENT9_NV 0x8CE9
+ GL_COLOR_ATTACHMENT10_NV 0x8CEA
+ GL_COLOR_ATTACHMENT11_NV 0x8CEB
+ GL_COLOR_ATTACHMENT12_NV 0x8CEC
+ GL_COLOR_ATTACHMENT13_NV 0x8CED
+ GL_COLOR_ATTACHMENT14_NV 0x8CEE
+ GL_COLOR_ATTACHMENT15_NV 0x8CEF
+ void glDrawBuffersNV (GLsizei n, const GLenum* bufs)
diff --git a/glew/auto/extensions/gl/GL_NV_draw_instanced b/glew/auto/extensions/gl/GL_NV_draw_instanced
new file mode 100644
index 0000000..0de9a2b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_draw_instanced
@@ -0,0 +1,6 @@
+GL_NV_draw_instanced
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_instanced.txt
+GL_NV_draw_instanced
+
+ void glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+ void glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)
diff --git a/glew/auto/extensions/gl/GL_NV_draw_texture b/glew/auto/extensions/gl/GL_NV_draw_texture
new file mode 100644
index 0000000..a6189ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_draw_texture
@@ -0,0 +1,5 @@
+GL_NV_draw_texture
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_texture.txt
+GL_NV_draw_texture
+
+ void glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1)
diff --git a/glew/auto/extensions/gl/GL_NV_draw_vulkan_image b/glew/auto/extensions/gl/GL_NV_draw_vulkan_image
new file mode 100644
index 0000000..899e510
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_draw_vulkan_image
@@ -0,0 +1,10 @@
+GL_NV_draw_vulkan_image
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_vulkan_image.txt
+GL_NV_draw_vulkan_image
+
+ void glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1)
+ GLVULKANPROCNV glGetVkProcAddrNV (const GLchar* name)
+ void glSignalVkFenceNV (GLuint64 vkFence)
+ void glSignalVkSemaphoreNV (GLuint64 vkSemaphore)
+ void glWaitVkSemaphoreNV (GLuint64 vkSemaphore)
+ typedef void (APIENTRY *GLVULKANPROCNV)(void)
diff --git a/glew/auto/extensions/gl/GL_NV_evaluators b/glew/auto/extensions/gl/GL_NV_evaluators
new file mode 100644
index 0000000..63bd9bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_evaluators
@@ -0,0 +1,37 @@
+GL_NV_evaluators
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_evaluators.txt
+GL_NV_evaluators
+
+ GL_EVAL_2D_NV 0x86C0
+ GL_EVAL_TRIANGULAR_2D_NV 0x86C1
+ GL_MAP_TESSELLATION_NV 0x86C2
+ GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
+ GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
+ GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
+ GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
+ GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
+ GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
+ GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
+ GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
+ GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
+ GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
+ GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
+ GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
+ GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
+ GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
+ GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
+ GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
+ GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
+ GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
+ GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
+ GL_MAX_MAP_TESSELLATION_NV 0x86D6
+ GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
+ void glEvalMapsNV (GLenum target, GLenum mode)
+ void glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat* params)
+ void glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint* params)
+ void glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points)
+ void glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat* params)
+ void glGetMapParameterivNV (GLenum target, GLenum pname, GLint* params)
+ void glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points)
+ void glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat* params)
+ void glMapParameterivNV (GLenum target, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_explicit_attrib_location b/glew/auto/extensions/gl/GL_NV_explicit_attrib_location
new file mode 100644
index 0000000..f5095f7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_explicit_attrib_location
@@ -0,0 +1,4 @@
+GL_NV_explicit_attrib_location
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_explicit_attrib_location.txt
+GL_NV_explicit_attrib_location
+
diff --git a/glew/auto/extensions/gl/GL_NV_explicit_multisample b/glew/auto/extensions/gl/GL_NV_explicit_multisample
new file mode 100644
index 0000000..243fe3b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_explicit_multisample
@@ -0,0 +1,17 @@
+GL_NV_explicit_multisample
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_explicit_multisample.txt
+GL_NV_explicit_multisample
+
+ GL_SAMPLE_POSITION_NV 0x8E50
+ GL_SAMPLE_MASK_NV 0x8E51
+ GL_SAMPLE_MASK_VALUE_NV 0x8E52
+ GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
+ GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
+ GL_TEXTURE_RENDERBUFFER_NV 0x8E55
+ GL_SAMPLER_RENDERBUFFER_NV 0x8E56
+ GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57
+ GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
+ GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59
+ void glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat* val)
+ void glSampleMaskIndexedNV (GLuint index, GLbitfield mask)
+ void glTexRenderbufferNV (GLenum target, GLuint renderbuffer)
diff --git a/glew/auto/extensions/gl/GL_NV_fbo_color_attachments b/glew/auto/extensions/gl/GL_NV_fbo_color_attachments
new file mode 100644
index 0000000..fb96200
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fbo_color_attachments
@@ -0,0 +1,21 @@
+GL_NV_fbo_color_attachments
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fbo_color_attachments.txt
+GL_NV_fbo_color_attachments
+
+ GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF
+ GL_COLOR_ATTACHMENT0_NV 0x8CE0
+ GL_COLOR_ATTACHMENT1_NV 0x8CE1
+ GL_COLOR_ATTACHMENT2_NV 0x8CE2
+ GL_COLOR_ATTACHMENT3_NV 0x8CE3
+ GL_COLOR_ATTACHMENT4_NV 0x8CE4
+ GL_COLOR_ATTACHMENT5_NV 0x8CE5
+ GL_COLOR_ATTACHMENT6_NV 0x8CE6
+ GL_COLOR_ATTACHMENT7_NV 0x8CE7
+ GL_COLOR_ATTACHMENT8_NV 0x8CE8
+ GL_COLOR_ATTACHMENT9_NV 0x8CE9
+ GL_COLOR_ATTACHMENT10_NV 0x8CEA
+ GL_COLOR_ATTACHMENT11_NV 0x8CEB
+ GL_COLOR_ATTACHMENT12_NV 0x8CEC
+ GL_COLOR_ATTACHMENT13_NV 0x8CED
+ GL_COLOR_ATTACHMENT14_NV 0x8CEE
+ GL_COLOR_ATTACHMENT15_NV 0x8CEF
diff --git a/glew/auto/extensions/gl/GL_NV_fence b/glew/auto/extensions/gl/GL_NV_fence
new file mode 100644
index 0000000..edd53d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fence
@@ -0,0 +1,14 @@
+GL_NV_fence
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fence.txt
+GL_NV_fence
+
+ GL_ALL_COMPLETED_NV 0x84F2
+ GL_FENCE_STATUS_NV 0x84F3
+ GL_FENCE_CONDITION_NV 0x84F4
+ void glDeleteFencesNV (GLsizei n, const GLuint* fences)
+ void glFinishFenceNV (GLuint fence)
+ void glGenFencesNV (GLsizei n, GLuint* fences)
+ void glGetFenceivNV (GLuint fence, GLenum pname, GLint* params)
+ GLboolean glIsFenceNV (GLuint fence)
+ void glSetFenceNV (GLuint fence, GLenum condition)
+ GLboolean glTestFenceNV (GLuint fence)
diff --git a/glew/auto/extensions/gl/GL_NV_fill_rectangle b/glew/auto/extensions/gl/GL_NV_fill_rectangle
new file mode 100644
index 0000000..d008a3a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fill_rectangle
@@ -0,0 +1,5 @@
+GL_NV_fill_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fill_rectangle.txt
+GL_NV_fill_rectangle
+
+ GL_FILL_RECTANGLE_NV 0x933C
diff --git a/glew/auto/extensions/gl/GL_NV_float_buffer b/glew/auto/extensions/gl/GL_NV_float_buffer
new file mode 100644
index 0000000..5fc2128
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_float_buffer
@@ -0,0 +1,19 @@
+GL_NV_float_buffer
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_float_buffer.txt
+GL_NV_float_buffer
+
+ GL_FLOAT_R_NV 0x8880
+ GL_FLOAT_RG_NV 0x8881
+ GL_FLOAT_RGB_NV 0x8882
+ GL_FLOAT_RGBA_NV 0x8883
+ GL_FLOAT_R16_NV 0x8884
+ GL_FLOAT_R32_NV 0x8885
+ GL_FLOAT_RG16_NV 0x8886
+ GL_FLOAT_RG32_NV 0x8887
+ GL_FLOAT_RGB16_NV 0x8888
+ GL_FLOAT_RGB32_NV 0x8889
+ GL_FLOAT_RGBA16_NV 0x888A
+ GL_FLOAT_RGBA32_NV 0x888B
+ GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
+ GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
+ GL_FLOAT_RGBA_MODE_NV 0x888E
diff --git a/glew/auto/extensions/gl/GL_NV_fog_distance b/glew/auto/extensions/gl/GL_NV_fog_distance
new file mode 100644
index 0000000..2a1dadb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fog_distance
@@ -0,0 +1,7 @@
+GL_NV_fog_distance
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fog_distance.txt
+GL_NV_fog_distance
+
+ GL_FOG_DISTANCE_MODE_NV 0x855A
+ GL_EYE_RADIAL_NV 0x855B
+ GL_EYE_PLANE_ABSOLUTE_NV 0x855C
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_coverage_to_color b/glew/auto/extensions/gl/GL_NV_fragment_coverage_to_color
new file mode 100644
index 0000000..c3b869b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_coverage_to_color
@@ -0,0 +1,7 @@
+GL_NV_fragment_coverage_to_color
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_coverage_to_color.txt
+GL_NV_fragment_coverage_to_color
+
+ GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
+ GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
+ void glFragmentCoverageColorNV (GLuint color)
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_program b/glew/auto/extensions/gl/GL_NV_fragment_program
new file mode 100644
index 0000000..4421863
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_program
@@ -0,0 +1,16 @@
+GL_NV_fragment_program
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_program.txt
+GL_NV_fragment_program
+
+ GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
+ GL_FRAGMENT_PROGRAM_NV 0x8870
+ GL_MAX_TEXTURE_COORDS_NV 0x8871
+ GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
+ GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
+ GL_PROGRAM_ERROR_STRING_NV 0x8874
+ void glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params)
+ void glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params)
+ void glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[])
+ void glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[])
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_program2 b/glew/auto/extensions/gl/GL_NV_fragment_program2
new file mode 100644
index 0000000..79d4b63
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_program2
@@ -0,0 +1,9 @@
+GL_NV_fragment_program2
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program2.txt
+GL_NV_fragment_program2
+
+ GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+ GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+ GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
+ GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
+ GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_program4 b/glew/auto/extensions/gl/GL_NV_fragment_program4
new file mode 100644
index 0000000..edd4383
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_program4
@@ -0,0 +1,4 @@
+GL_NV_fragment_program4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_fragment_program4.txt
+GL_NV_gpu_program4
+
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_program_option b/glew/auto/extensions/gl/GL_NV_fragment_program_option
new file mode 100644
index 0000000..01b8ed6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_program_option
@@ -0,0 +1,4 @@
+GL_NV_fragment_program_option
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program_option.txt
+GL_NV_fragment_program_option
+
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_shader_barycentric b/glew/auto/extensions/gl/GL_NV_fragment_shader_barycentric
new file mode 100644
index 0000000..562bee5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_shader_barycentric
@@ -0,0 +1,4 @@
+GL_NV_fragment_shader_barycentric
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_shader_barycentric.txt
+GL_NV_fragment_shader_barycentric
+
diff --git a/glew/auto/extensions/gl/GL_NV_fragment_shader_interlock b/glew/auto/extensions/gl/GL_NV_fragment_shader_interlock
new file mode 100644
index 0000000..87fbfbb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_fragment_shader_interlock
@@ -0,0 +1,4 @@
+GL_NV_fragment_shader_interlock
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_shader_interlock.txt
+GL_NV_fragment_shader_interlock
+
diff --git a/glew/auto/extensions/gl/GL_NV_framebuffer_blit b/glew/auto/extensions/gl/GL_NV_framebuffer_blit
new file mode 100644
index 0000000..f27ab32
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_framebuffer_blit
@@ -0,0 +1,9 @@
+GL_NV_framebuffer_blit
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_blit.txt
+GL_NV_framebuffer_blit
+
+ GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6
+ GL_READ_FRAMEBUFFER_NV 0x8CA8
+ GL_DRAW_FRAMEBUFFER_NV 0x8CA9
+ GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA
+ void glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
diff --git a/glew/auto/extensions/gl/GL_NV_framebuffer_mixed_samples b/glew/auto/extensions/gl/GL_NV_framebuffer_mixed_samples
new file mode 100644
index 0000000..23e73a1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_framebuffer_mixed_samples
@@ -0,0 +1,18 @@
+GL_NV_framebuffer_mixed_samples
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_mixed_samples.txt
+GL_NV_framebuffer_mixed_samples
+
+ GL_COLOR_SAMPLES_NV 0x8E20
+ GL_RASTER_MULTISAMPLE_EXT 0x9327
+ GL_RASTER_SAMPLES_EXT 0x9328
+ GL_MAX_RASTER_SAMPLES_EXT 0x9329
+ GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+ GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+ GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+ GL_DEPTH_SAMPLES_NV 0x932D
+ GL_STENCIL_SAMPLES_NV 0x932E
+ GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+ GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+ GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+ GL_COVERAGE_MODULATION_NV 0x9332
+ GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
diff --git a/glew/auto/extensions/gl/GL_NV_framebuffer_multisample b/glew/auto/extensions/gl/GL_NV_framebuffer_multisample
new file mode 100644
index 0000000..7531b93
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_framebuffer_multisample
@@ -0,0 +1,8 @@
+GL_NV_framebuffer_multisample
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_multisample.txt
+GL_NV_framebuffer_multisample
+
+ GL_RENDERBUFFER_SAMPLES_NV 0x8CAB
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56
+ GL_MAX_SAMPLES_NV 0x8D57
+ void glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_NV_framebuffer_multisample_coverage b/glew/auto/extensions/gl/GL_NV_framebuffer_multisample_coverage
new file mode 100644
index 0000000..526d0f0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_framebuffer_multisample_coverage
@@ -0,0 +1,9 @@
+GL_NV_framebuffer_multisample_coverage
+http://developer.download.nvidia.com/opengl/specs/GL_NV_framebuffer_multisample_coverage.txt
+GL_NV_framebuffer_multisample_coverage
+
+ GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
+ GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
+ GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
+ GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
+ void glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_NV_generate_mipmap_sRGB b/glew/auto/extensions/gl/GL_NV_generate_mipmap_sRGB
new file mode 100644
index 0000000..82e75fe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_generate_mipmap_sRGB
@@ -0,0 +1,4 @@
+GL_NV_generate_mipmap_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_generate_mipmap_sRGB.txt
+GL_NV_generate_mipmap_sRGB
+
diff --git a/glew/auto/extensions/gl/GL_NV_geometry_program4 b/glew/auto/extensions/gl/GL_NV_geometry_program4
new file mode 100644
index 0000000..a6cb164
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_geometry_program4
@@ -0,0 +1,8 @@
+GL_NV_geometry_program4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_program4.txt
+GL_NV_gpu_program4
+
+ GL_GEOMETRY_PROGRAM_NV 0x8C26
+ GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
+ GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
+ void glProgramVertexLimitNV (GLenum target, GLint limit)
diff --git a/glew/auto/extensions/gl/GL_NV_geometry_shader4 b/glew/auto/extensions/gl/GL_NV_geometry_shader4
new file mode 100644
index 0000000..1b00429
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_geometry_shader4
@@ -0,0 +1,4 @@
+GL_NV_geometry_shader4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_shader4.txt
+GL_NV_geometry_shader4
+
diff --git a/glew/auto/extensions/gl/GL_NV_geometry_shader_passthrough b/glew/auto/extensions/gl/GL_NV_geometry_shader_passthrough
new file mode 100644
index 0000000..0aeeee9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_geometry_shader_passthrough
@@ -0,0 +1,4 @@
+GL_NV_geometry_shader_passthrough
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_geometry_shader_passthrough.txt
+GL_NV_geometry_shader_passthrough
+
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_multicast b/glew/auto/extensions/gl/GL_NV_gpu_multicast
new file mode 100644
index 0000000..3e6ee0b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_multicast
@@ -0,0 +1,21 @@
+GL_NV_gpu_multicast
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_multicast.txt
+GL_NV_gpu_multicast
+
+ GL_PER_GPU_STORAGE_BIT_NV 0x0800
+ GL_MULTICAST_GPUS_NV 0x92BA
+ GL_PER_GPU_STORAGE_NV 0x9548
+ GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549
+ GL_RENDER_GPU_MASK_NV 0x9558
+ void glMulticastBarrierNV (void)
+ void glMulticastBlitFramebufferNV (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ void glMulticastBufferSubDataNV (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
+ void glMulticastCopyBufferSubDataNV (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+ void glMulticastCopyImageSubDataNV (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
+ void glMulticastFramebufferSampleLocationsfvNV (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)
+ void glMulticastGetQueryObjecti64vNV (GLuint gpu, GLuint id, GLenum pname, GLint64* params)
+ void glMulticastGetQueryObjectivNV (GLuint gpu, GLuint id, GLenum pname, GLint* params)
+ void glMulticastGetQueryObjectui64vNV (GLuint gpu, GLuint id, GLenum pname, GLuint64* params)
+ void glMulticastGetQueryObjectuivNV (GLuint gpu, GLuint id, GLenum pname, GLuint* params)
+ void glMulticastWaitSyncNV (GLuint signalGpu, GLbitfield waitGpuMask)
+ void glRenderGpuMaskNV (GLbitfield mask)
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_program4 b/glew/auto/extensions/gl/GL_NV_gpu_program4
new file mode 100644
index 0000000..19f7169
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_program4
@@ -0,0 +1,24 @@
+GL_NV_gpu_program4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_gpu_program4.txt
+GL_NV_gpu_program4
+
+ GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
+ GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
+ GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
+ GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
+ GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
+ GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
+ GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
+ GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
+ void glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)
+ void glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params)
+ void glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params)
+ void glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params)
+ void glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params)
+ void glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)
+ void glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params)
+ void glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params)
+ void glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+ void glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params)
+ void glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params)
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_program5 b/glew/auto/extensions/gl/GL_NV_gpu_program5
new file mode 100644
index 0000000..68079f3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_program5
@@ -0,0 +1,10 @@
+GL_NV_gpu_program5
+http://www.opengl.org/registry/specs/NV/gpu_program5.txt
+GL_NV_gpu_program5
+
+ GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
+ GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
+ GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
+ GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_program5_mem_extended b/glew/auto/extensions/gl/GL_NV_gpu_program5_mem_extended
new file mode 100644
index 0000000..5187acd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_program5_mem_extended
@@ -0,0 +1,4 @@
+GL_NV_gpu_program5_mem_extended
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_program5_mem_extended.txt
+GL_NV_gpu_program5_mem_extended
+
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_program_fp64 b/glew/auto/extensions/gl/GL_NV_gpu_program_fp64
new file mode 100644
index 0000000..d759d70
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_program_fp64
@@ -0,0 +1,4 @@
+GL_NV_gpu_program_fp64
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_program5.txt
+GL_NV_gpu_program_fp64
+
diff --git a/glew/auto/extensions/gl/GL_NV_gpu_shader5 b/glew/auto/extensions/gl/GL_NV_gpu_shader5
new file mode 100644
index 0000000..a68b541
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_gpu_shader5
@@ -0,0 +1,66 @@
+GL_NV_gpu_shader5
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_shader5.txt
+GL_NV_gpu_shader5
+
+ GL_INT64_NV 0x140E
+ GL_UNSIGNED_INT64_NV 0x140F
+ GL_INT8_NV 0x8FE0
+ GL_INT8_VEC2_NV 0x8FE1
+ GL_INT8_VEC3_NV 0x8FE2
+ GL_INT8_VEC4_NV 0x8FE3
+ GL_INT16_NV 0x8FE4
+ GL_INT16_VEC2_NV 0x8FE5
+ GL_INT16_VEC3_NV 0x8FE6
+ GL_INT16_VEC4_NV 0x8FE7
+ GL_INT64_VEC2_NV 0x8FE9
+ GL_INT64_VEC3_NV 0x8FEA
+ GL_INT64_VEC4_NV 0x8FEB
+ GL_UNSIGNED_INT8_NV 0x8FEC
+ GL_UNSIGNED_INT8_VEC2_NV 0x8FED
+ GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
+ GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
+ GL_UNSIGNED_INT16_NV 0x8FF0
+ GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
+ GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
+ GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
+ GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
+ GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
+ GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
+ GL_FLOAT16_NV 0x8FF8
+ GL_FLOAT16_VEC2_NV 0x8FF9
+ GL_FLOAT16_VEC3_NV 0x8FFA
+ GL_FLOAT16_VEC4_NV 0x8FFB
+ void glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT* params)
+ void glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT* params)
+ void glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x)
+ void glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT* value)
+ void glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x)
+ void glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y)
+ void glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT* value)
+ void glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y)
+ void glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z)
+ void glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT* value)
+ void glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)
+ void glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)
+ void glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT* value)
+ void glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)
+ void glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniform1i64NV (GLint location, GLint64EXT x)
+ void glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT* value)
+ void glUniform1ui64NV (GLint location, GLuint64EXT x)
+ void glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y)
+ void glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT* value)
+ void glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y)
+ void glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z)
+ void glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT* value)
+ void glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)
+ void glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)
+ void glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT* value)
+ void glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)
+ void glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
diff --git a/glew/auto/extensions/gl/GL_NV_half_float b/glew/auto/extensions/gl/GL_NV_half_float
new file mode 100644
index 0000000..7640902
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_half_float
@@ -0,0 +1,52 @@
+GL_NV_half_float
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_half_float.txt
+GL_NV_half_float
+
+ GL_HALF_FLOAT_NV 0x140B
+ void glColor3hNV (GLhalf red, GLhalf green, GLhalf blue)
+ void glColor3hvNV (const GLhalf* v)
+ void glColor4hNV (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha)
+ void glColor4hvNV (const GLhalf* v)
+ void glFogCoordhNV (GLhalf fog)
+ void glFogCoordhvNV (const GLhalf* fog)
+ void glMultiTexCoord1hNV (GLenum target, GLhalf s)
+ void glMultiTexCoord1hvNV (GLenum target, const GLhalf* v)
+ void glMultiTexCoord2hNV (GLenum target, GLhalf s, GLhalf t)
+ void glMultiTexCoord2hvNV (GLenum target, const GLhalf* v)
+ void glMultiTexCoord3hNV (GLenum target, GLhalf s, GLhalf t, GLhalf r)
+ void glMultiTexCoord3hvNV (GLenum target, const GLhalf* v)
+ void glMultiTexCoord4hNV (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q)
+ void glMultiTexCoord4hvNV (GLenum target, const GLhalf* v)
+ void glNormal3hNV (GLhalf nx, GLhalf ny, GLhalf nz)
+ void glNormal3hvNV (const GLhalf* v)
+ void glSecondaryColor3hNV (GLhalf red, GLhalf green, GLhalf blue)
+ void glSecondaryColor3hvNV (const GLhalf* v)
+ void glTexCoord1hNV (GLhalf s)
+ void glTexCoord1hvNV (const GLhalf* v)
+ void glTexCoord2hNV (GLhalf s, GLhalf t)
+ void glTexCoord2hvNV (const GLhalf* v)
+ void glTexCoord3hNV (GLhalf s, GLhalf t, GLhalf r)
+ void glTexCoord3hvNV (const GLhalf* v)
+ void glTexCoord4hNV (GLhalf s, GLhalf t, GLhalf r, GLhalf q)
+ void glTexCoord4hvNV (const GLhalf* v)
+ void glVertex2hNV (GLhalf x, GLhalf y)
+ void glVertex2hvNV (const GLhalf* v)
+ void glVertex3hNV (GLhalf x, GLhalf y, GLhalf z)
+ void glVertex3hvNV (const GLhalf* v)
+ void glVertex4hNV (GLhalf x, GLhalf y, GLhalf z, GLhalf w)
+ void glVertex4hvNV (const GLhalf* v)
+ void glVertexAttrib1hNV (GLuint index, GLhalf x)
+ void glVertexAttrib1hvNV (GLuint index, const GLhalf* v)
+ void glVertexAttrib2hNV (GLuint index, GLhalf x, GLhalf y)
+ void glVertexAttrib2hvNV (GLuint index, const GLhalf* v)
+ void glVertexAttrib3hNV (GLuint index, GLhalf x, GLhalf y, GLhalf z)
+ void glVertexAttrib3hvNV (GLuint index, const GLhalf* v)
+ void glVertexAttrib4hNV (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w)
+ void glVertexAttrib4hvNV (GLuint index, const GLhalf* v)
+ void glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalf* v)
+ void glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalf* v)
+ void glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalf* v)
+ void glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalf* v)
+ void glVertexWeighthNV (GLhalf weight)
+ void glVertexWeighthvNV (const GLhalf* weight)
+ typedef unsigned short GLhalf
diff --git a/glew/auto/extensions/gl/GL_NV_image_formats b/glew/auto/extensions/gl/GL_NV_image_formats
new file mode 100644
index 0000000..f6d8f97
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_image_formats
@@ -0,0 +1,4 @@
+GL_NV_image_formats
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_image_formats.txt
+GL_NV_image_formats
+
diff --git a/glew/auto/extensions/gl/GL_NV_instanced_arrays b/glew/auto/extensions/gl/GL_NV_instanced_arrays
new file mode 100644
index 0000000..a05b1a7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_instanced_arrays
@@ -0,0 +1,6 @@
+GL_NV_instanced_arrays
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_instanced_arrays.txt
+GL_NV_instanced_arrays
+
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE
+ void glVertexAttribDivisorNV (GLuint index, GLuint divisor)
diff --git a/glew/auto/extensions/gl/GL_NV_internalformat_sample_query b/glew/auto/extensions/gl/GL_NV_internalformat_sample_query
new file mode 100644
index 0000000..d3dc53d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_internalformat_sample_query
@@ -0,0 +1,9 @@
+GL_NV_internalformat_sample_query
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_internalformat_sample_query.txt
+GL_NV_internalformat_sample_query
+
+ GL_MULTISAMPLES_NV 0x9371
+ GL_SUPERSAMPLE_SCALE_X_NV 0x9372
+ GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
+ GL_CONFORMANT_NV 0x9374
+ void glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_light_max_exponent b/glew/auto/extensions/gl/GL_NV_light_max_exponent
new file mode 100644
index 0000000..c455a24
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_light_max_exponent
@@ -0,0 +1,6 @@
+GL_NV_light_max_exponent
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_light_max_exponent.txt
+GL_NV_light_max_exponent
+
+ GL_MAX_SHININESS_NV 0x8504
+ GL_MAX_SPOT_EXPONENT_NV 0x8505
diff --git a/glew/auto/extensions/gl/GL_NV_memory_attachment b/glew/auto/extensions/gl/GL_NV_memory_attachment
new file mode 100644
index 0000000..ee54164
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_memory_attachment
@@ -0,0 +1,20 @@
+GL_NV_memory_attachment
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_memory_attachment.txt
+GL_NV_memory_attachment
+
+ GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4
+ GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5
+ GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6
+ GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7
+ GL_MEMORY_ATTACHABLE_NV 0x95A8
+ GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9
+ GL_DETACHED_TEXTURES_NV 0x95AA
+ GL_DETACHED_BUFFERS_NV 0x95AB
+ GL_MAX_DETACHED_TEXTURES_NV 0x95AC
+ GL_MAX_DETACHED_BUFFERS_NV 0x95AD
+ void glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset)
+ void glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint* params)
+ void glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, GLuint64 offset)
+ void glResetMemoryObjectParameterNV (GLuint memory, GLenum pname)
+ void glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset)
+ void glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset)
diff --git a/glew/auto/extensions/gl/GL_NV_memory_object_sparse b/glew/auto/extensions/gl/GL_NV_memory_object_sparse
new file mode 100644
index 0000000..7c71774
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_memory_object_sparse
@@ -0,0 +1,8 @@
+GL_NV_memory_object_sparse
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_memory_object_sparse.txt
+GL_NV_memory_object_sparse
+
+ void glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit)
+ void glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit)
+ void glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit)
+ void glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit)
diff --git a/glew/auto/extensions/gl/GL_NV_mesh_shader b/glew/auto/extensions/gl/GL_NV_mesh_shader
new file mode 100644
index 0000000..6254e1f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_mesh_shader
@@ -0,0 +1,56 @@
+GL_NV_mesh_shader
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_mesh_shader.txt
+GL_NV_mesh_shader
+
+ GL_MESH_SHADER_BIT_NV 0x00000040
+ GL_TASK_SHADER_BIT_NV 0x00000080
+ GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60
+ GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61
+ GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62
+ GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63
+ GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64
+ GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65
+ GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66
+ GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67
+ GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68
+ GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69
+ GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A
+ GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B
+ GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C
+ GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D
+ GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E
+ GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F
+ GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF
+ GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536
+ GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537
+ GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538
+ GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539
+ GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A
+ GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B
+ GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C
+ GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D
+ GL_MESH_WORK_GROUP_SIZE_NV 0x953E
+ GL_TASK_WORK_GROUP_SIZE_NV 0x953F
+ GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543
+ GL_MAX_MESH_VIEWS_NV 0x9557
+ GL_MESH_SHADER_NV 0x9559
+ GL_TASK_SHADER_NV 0x955A
+ GL_MESH_VERTICES_OUT_NV 0x9579
+ GL_MESH_PRIMITIVES_OUT_NV 0x957A
+ GL_MESH_OUTPUT_TYPE_NV 0x957B
+ GL_MESH_SUBROUTINE_NV 0x957C
+ GL_TASK_SUBROUTINE_NV 0x957D
+ GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E
+ GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F
+ GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C
+ GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F
+ GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0
+ GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1
+ GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2
+ GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3
+ void glDrawMeshTasksIndirectNV (GLintptr indirect)
+ void glDrawMeshTasksNV (GLuint first, GLuint count)
+ void glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
+ void glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_NV_multisample_coverage b/glew/auto/extensions/gl/GL_NV_multisample_coverage
new file mode 100644
index 0000000..9f2add6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_multisample_coverage
@@ -0,0 +1,5 @@
+GL_NV_multisample_coverage
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_multisample_coverage.txt
+GL_NV_multisample_coverage
+
+ GL_COLOR_SAMPLES_NV 0x8E20
diff --git a/glew/auto/extensions/gl/GL_NV_multisample_filter_hint b/glew/auto/extensions/gl/GL_NV_multisample_filter_hint
new file mode 100644
index 0000000..b21dba3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_multisample_filter_hint
@@ -0,0 +1,5 @@
+GL_NV_multisample_filter_hint
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_multisample_filter_hint.txt
+GL_NV_multisample_filter_hint
+
+ GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
diff --git a/glew/auto/extensions/gl/GL_NV_non_square_matrices b/glew/auto/extensions/gl/GL_NV_non_square_matrices
new file mode 100644
index 0000000..3fd6b78
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_non_square_matrices
@@ -0,0 +1,16 @@
+GL_NV_non_square_matrices
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_non_square_matrices.txt
+GL_NV_non_square_matrices
+
+ GL_FLOAT_MAT2x3_NV 0x8B65
+ GL_FLOAT_MAT2x4_NV 0x8B66
+ GL_FLOAT_MAT3x2_NV 0x8B67
+ GL_FLOAT_MAT3x4_NV 0x8B68
+ GL_FLOAT_MAT4x2_NV 0x8B69
+ GL_FLOAT_MAT4x3_NV 0x8B6A
+ void glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+ void glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
diff --git a/glew/auto/extensions/gl/GL_NV_occlusion_query b/glew/auto/extensions/gl/GL_NV_occlusion_query
new file mode 100644
index 0000000..8ecd77a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_occlusion_query
@@ -0,0 +1,15 @@
+GL_NV_occlusion_query
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_occlusion_query.txt
+GL_NV_occlusion_query
+
+ GL_PIXEL_COUNTER_BITS_NV 0x8864
+ GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
+ GL_PIXEL_COUNT_NV 0x8866
+ GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
+ void glBeginOcclusionQueryNV (GLuint id)
+ void glDeleteOcclusionQueriesNV (GLsizei n, const GLuint* ids)
+ void glEndOcclusionQueryNV (void)
+ void glGenOcclusionQueriesNV (GLsizei n, GLuint* ids)
+ void glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint* params)
+ void glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint* params)
+ GLboolean glIsOcclusionQueryNV (GLuint id)
diff --git a/glew/auto/extensions/gl/GL_NV_pack_subimage b/glew/auto/extensions/gl/GL_NV_pack_subimage
new file mode 100644
index 0000000..2e8488c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_pack_subimage
@@ -0,0 +1,7 @@
+GL_NV_pack_subimage
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pack_subimage.txt
+GL_NV_pack_subimage
+
+ GL_PACK_ROW_LENGTH_NV 0x0D02
+ GL_PACK_SKIP_ROWS_NV 0x0D03
+ GL_PACK_SKIP_PIXELS_NV 0x0D04
diff --git a/glew/auto/extensions/gl/GL_NV_packed_depth_stencil b/glew/auto/extensions/gl/GL_NV_packed_depth_stencil
new file mode 100644
index 0000000..10d567d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_packed_depth_stencil
@@ -0,0 +1,6 @@
+GL_NV_packed_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_depth_stencil.txt
+GL_NV_packed_depth_stencil
+
+ GL_DEPTH_STENCIL_NV 0x84F9
+ GL_UNSIGNED_INT_24_8_NV 0x84FA
diff --git a/glew/auto/extensions/gl/GL_NV_packed_float b/glew/auto/extensions/gl/GL_NV_packed_float
new file mode 100644
index 0000000..2cac7d2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_packed_float
@@ -0,0 +1,6 @@
+GL_NV_packed_float
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_float.txt
+GL_NV_packed_float
+
+ GL_R11F_G11F_B10F_NV 0x8C3A
+ GL_UNSIGNED_INT_10F_11F_11F_REV_NV 0x8C3B
diff --git a/glew/auto/extensions/gl/GL_NV_packed_float_linear b/glew/auto/extensions/gl/GL_NV_packed_float_linear
new file mode 100644
index 0000000..b5bce68
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_packed_float_linear
@@ -0,0 +1,6 @@
+GL_NV_packed_float_linear
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_float.txt
+GL_NV_packed_float_linear
+
+ GL_R11F_G11F_B10F_NV 0x8C3A
+ GL_UNSIGNED_INT_10F_11F_11F_REV_NV 0x8C3B
diff --git a/glew/auto/extensions/gl/GL_NV_parameter_buffer_object b/glew/auto/extensions/gl/GL_NV_parameter_buffer_object
new file mode 100644
index 0000000..91494e3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_parameter_buffer_object
@@ -0,0 +1,12 @@
+GL_NV_parameter_buffer_object
+http://developer.download.nvidia.com/opengl/specs/GL_NV_parameter_buffer_object.txt
+GL_NV_parameter_buffer_object
+
+ GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
+ GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
+ GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
+ GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
+ GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
+ void glProgramBufferParametersfvNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params)
+ void glProgramBufferParametersIivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params)
+ void glProgramBufferParametersIuivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params)
diff --git a/glew/auto/extensions/gl/GL_NV_parameter_buffer_object2 b/glew/auto/extensions/gl/GL_NV_parameter_buffer_object2
new file mode 100644
index 0000000..f0cbce2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_parameter_buffer_object2
@@ -0,0 +1,4 @@
+GL_NV_parameter_buffer_object2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_parameter_buffer_object2.txt
+GL_NV_parameter_buffer_object2
+
diff --git a/glew/auto/extensions/gl/GL_NV_path_rendering b/glew/auto/extensions/gl/GL_NV_path_rendering
new file mode 100644
index 0000000..4fe92a7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_path_rendering
@@ -0,0 +1,217 @@
+GL_NV_path_rendering
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_path_rendering.txt
+GL_NV_path_rendering
+
+ GL_CLOSE_PATH_NV 0x00
+ GL_BOLD_BIT_NV 0x01
+ GL_GLYPH_WIDTH_BIT_NV 0x01
+ GL_GLYPH_HEIGHT_BIT_NV 0x02
+ GL_ITALIC_BIT_NV 0x02
+ GL_MOVE_TO_NV 0x02
+ GL_RELATIVE_MOVE_TO_NV 0x03
+ GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
+ GL_LINE_TO_NV 0x04
+ GL_RELATIVE_LINE_TO_NV 0x05
+ GL_HORIZONTAL_LINE_TO_NV 0x06
+ GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
+ GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
+ GL_VERTICAL_LINE_TO_NV 0x08
+ GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
+ GL_QUADRATIC_CURVE_TO_NV 0x0A
+ GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
+ GL_CUBIC_CURVE_TO_NV 0x0C
+ GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
+ GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
+ GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
+ GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
+ GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
+ GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
+ GL_SMALL_CCW_ARC_TO_NV 0x12
+ GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
+ GL_SMALL_CW_ARC_TO_NV 0x14
+ GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
+ GL_LARGE_CCW_ARC_TO_NV 0x16
+ GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
+ GL_LARGE_CW_ARC_TO_NV 0x18
+ GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
+ GL_CONIC_CURVE_TO_NV 0x1A
+ GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
+ GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
+ GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
+ GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
+ GL_ROUNDED_RECT_NV 0xE8
+ GL_RELATIVE_ROUNDED_RECT_NV 0xE9
+ GL_ROUNDED_RECT2_NV 0xEA
+ GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
+ GL_ROUNDED_RECT4_NV 0xEC
+ GL_RELATIVE_ROUNDED_RECT4_NV 0xED
+ GL_ROUNDED_RECT8_NV 0xEE
+ GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
+ GL_RESTART_PATH_NV 0xF0
+ GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
+ GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
+ GL_RECT_NV 0xF6
+ GL_RELATIVE_RECT_NV 0xF7
+ GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
+ GL_CIRCULAR_CW_ARC_TO_NV 0xFA
+ GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
+ GL_ARC_TO_NV 0xFE
+ GL_RELATIVE_ARC_TO_NV 0xFF
+ GL_GLYPH_HAS_KERNING_BIT_NV 0x100
+ GL_PRIMARY_COLOR_NV 0x852C
+ GL_SECONDARY_COLOR_NV 0x852D
+ GL_PRIMARY_COLOR 0x8577
+ GL_PATH_FORMAT_SVG_NV 0x9070
+ GL_PATH_FORMAT_PS_NV 0x9071
+ GL_STANDARD_FONT_NAME_NV 0x9072
+ GL_SYSTEM_FONT_NAME_NV 0x9073
+ GL_FILE_NAME_NV 0x9074
+ GL_PATH_STROKE_WIDTH_NV 0x9075
+ GL_PATH_END_CAPS_NV 0x9076
+ GL_PATH_INITIAL_END_CAP_NV 0x9077
+ GL_PATH_TERMINAL_END_CAP_NV 0x9078
+ GL_PATH_JOIN_STYLE_NV 0x9079
+ GL_PATH_MITER_LIMIT_NV 0x907A
+ GL_PATH_DASH_CAPS_NV 0x907B
+ GL_PATH_INITIAL_DASH_CAP_NV 0x907C
+ GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
+ GL_PATH_DASH_OFFSET_NV 0x907E
+ GL_PATH_CLIENT_LENGTH_NV 0x907F
+ GL_PATH_FILL_MODE_NV 0x9080
+ GL_PATH_FILL_MASK_NV 0x9081
+ GL_PATH_FILL_COVER_MODE_NV 0x9082
+ GL_PATH_STROKE_COVER_MODE_NV 0x9083
+ GL_PATH_STROKE_MASK_NV 0x9084
+ GL_PATH_STROKE_BOUND_NV 0x9086
+ GL_COUNT_UP_NV 0x9088
+ GL_COUNT_DOWN_NV 0x9089
+ GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
+ GL_CONVEX_HULL_NV 0x908B
+ GL_BOUNDING_BOX_NV 0x908D
+ GL_TRANSLATE_X_NV 0x908E
+ GL_TRANSLATE_Y_NV 0x908F
+ GL_TRANSLATE_2D_NV 0x9090
+ GL_TRANSLATE_3D_NV 0x9091
+ GL_AFFINE_2D_NV 0x9092
+ GL_AFFINE_3D_NV 0x9094
+ GL_TRANSPOSE_AFFINE_2D_NV 0x9096
+ GL_TRANSPOSE_AFFINE_3D_NV 0x9098
+ GL_UTF8_NV 0x909A
+ GL_UTF16_NV 0x909B
+ GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
+ GL_PATH_COMMAND_COUNT_NV 0x909D
+ GL_PATH_COORD_COUNT_NV 0x909E
+ GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
+ GL_PATH_COMPUTED_LENGTH_NV 0x90A0
+ GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
+ GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
+ GL_SQUARE_NV 0x90A3
+ GL_ROUND_NV 0x90A4
+ GL_TRIANGULAR_NV 0x90A5
+ GL_BEVEL_NV 0x90A6
+ GL_MITER_REVERT_NV 0x90A7
+ GL_MITER_TRUNCATE_NV 0x90A8
+ GL_SKIP_MISSING_GLYPH_NV 0x90A9
+ GL_USE_MISSING_GLYPH_NV 0x90AA
+ GL_PATH_ERROR_POSITION_NV 0x90AB
+ GL_PATH_FOG_GEN_MODE_NV 0x90AC
+ GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
+ GL_ADJACENT_PAIRS_NV 0x90AE
+ GL_FIRST_TO_REST_NV 0x90AF
+ GL_PATH_GEN_MODE_NV 0x90B0
+ GL_PATH_GEN_COEFF_NV 0x90B1
+ GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2
+ GL_PATH_GEN_COMPONENTS_NV 0x90B3
+ GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
+ GL_MOVE_TO_RESETS_NV 0x90B5
+ GL_MOVE_TO_CONTINUES_NV 0x90B6
+ GL_PATH_STENCIL_FUNC_NV 0x90B7
+ GL_PATH_STENCIL_REF_NV 0x90B8
+ GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
+ GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
+ GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
+ GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
+ GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
+ GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
+ GL_FONT_UNAVAILABLE_NV 0x936A
+ GL_FONT_UNINTELLIGIBLE_NV 0x936B
+ GL_STANDARD_FONT_FORMAT_NV 0x936C
+ GL_FRAGMENT_INPUT_NV 0x936D
+ GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
+ GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
+ GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
+ GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
+ GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
+ GL_FONT_ASCENDER_BIT_NV 0x00200000
+ GL_FONT_DESCENDER_BIT_NV 0x00400000
+ GL_FONT_HEIGHT_BIT_NV 0x00800000
+ GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
+ GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
+ GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
+ GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
+ GL_FONT_HAS_KERNING_BIT_NV 0x10000000
+ GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
+ void glCopyPathNV (GLuint resultPath, GLuint srcPath)
+ void glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)
+ void glCoverFillPathNV (GLuint path, GLenum coverMode)
+ void glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)
+ void glCoverStrokePathNV (GLuint path, GLenum coverMode)
+ void glDeletePathsNV (GLuint path, GLsizei range)
+ GLuint glGenPathsNV (GLsizei range)
+ void glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat* value)
+ void glGetPathColorGenivNV (GLenum color, GLenum pname, GLint* value)
+ void glGetPathCommandsNV (GLuint path, GLubyte* commands)
+ void glGetPathCoordsNV (GLuint path, GLfloat* coords)
+ void glGetPathDashArrayNV (GLuint path, GLfloat* dashArray)
+ GLfloat glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments)
+ void glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics)
+ void glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)
+ void glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat* value)
+ void glGetPathParameterivNV (GLuint path, GLenum pname, GLint* value)
+ void glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)
+ void glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat* value)
+ void glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint* value)
+ void glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params)
+ void glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight)
+ GLboolean glIsPathNV (GLuint path)
+ GLboolean glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y)
+ GLboolean glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y)
+ void glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat* m)
+ void glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat* m)
+ void glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs)
+ void glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords)
+ void glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords)
+ void glPathCoverDepthFuncNV (GLenum zfunc)
+ void glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat* dashArray)
+ void glPathFogGenNV (GLenum genMode)
+ GLenum glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)
+ GLenum glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint* baseAndCount)
+ void glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)
+ void glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)
+ GLenum glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)
+ void glPathParameterfNV (GLuint path, GLenum pname, GLfloat value)
+ void glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat* value)
+ void glPathParameteriNV (GLuint path, GLenum pname, GLint value)
+ void glPathParameterivNV (GLuint path, GLenum pname, const GLint* value)
+ void glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units)
+ void glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask)
+ void glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString)
+ void glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords)
+ void glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords)
+ void glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs)
+ GLboolean glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY)
+ void glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs)
+ void glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)
+ void glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask)
+ void glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)
+ void glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask)
+ void glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)
+ void glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode)
+ void glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)
+ void glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode)
+ void glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues)
+ void glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[])
diff --git a/glew/auto/extensions/gl/GL_NV_path_rendering_shared_edge b/glew/auto/extensions/gl/GL_NV_path_rendering_shared_edge
new file mode 100644
index 0000000..8d38a09
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_path_rendering_shared_edge
@@ -0,0 +1,5 @@
+GL_NV_path_rendering_shared_edge
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_path_rendering_shared_edge.txt
+GL_NV_path_rendering_shared_edge
+
+ GL_SHARED_EDGE_NV 0xC0
diff --git a/glew/auto/extensions/gl/GL_NV_pixel_buffer_object b/glew/auto/extensions/gl/GL_NV_pixel_buffer_object
new file mode 100644
index 0000000..d674a76
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_pixel_buffer_object
@@ -0,0 +1,8 @@
+GL_NV_pixel_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pixel_buffer_object.txt
+GL_NV_pixel_buffer_object
+
+ GL_PIXEL_PACK_BUFFER_NV 0x88EB
+ GL_PIXEL_UNPACK_BUFFER_NV 0x88EC
+ GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED
+ GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF
diff --git a/glew/auto/extensions/gl/GL_NV_pixel_data_range b/glew/auto/extensions/gl/GL_NV_pixel_data_range
new file mode 100644
index 0000000..14bcc7a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_pixel_data_range
@@ -0,0 +1,12 @@
+GL_NV_pixel_data_range
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pixel_data_range.txt
+GL_NV_pixel_data_range
+
+ GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
+ GL_READ_PIXEL_DATA_RANGE_NV 0x8879
+ GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
+ GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
+ GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
+ GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
+ void glFlushPixelDataRangeNV (GLenum target)
+ void glPixelDataRangeNV (GLenum target, GLsizei length, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_NV_platform_binary b/glew/auto/extensions/gl/GL_NV_platform_binary
new file mode 100644
index 0000000..7c91456
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_platform_binary
@@ -0,0 +1,5 @@
+GL_NV_platform_binary
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_platform_binary.txt
+GL_NV_platform_binary
+
+ GL_NVIDIA_PLATFORM_BINARY_NV 0x890B
diff --git a/glew/auto/extensions/gl/GL_NV_point_sprite b/glew/auto/extensions/gl/GL_NV_point_sprite
new file mode 100644
index 0000000..4cbfde7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_point_sprite
@@ -0,0 +1,9 @@
+GL_NV_point_sprite
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_point_sprite.txt
+GL_NV_point_sprite
+
+ GL_POINT_SPRITE_NV 0x8861
+ GL_COORD_REPLACE_NV 0x8862
+ GL_POINT_SPRITE_R_MODE_NV 0x8863
+ void glPointParameteriNV (GLenum pname, GLint param)
+ void glPointParameterivNV (GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_polygon_mode b/glew/auto/extensions/gl/GL_NV_polygon_mode
new file mode 100644
index 0000000..35c177d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_polygon_mode
@@ -0,0 +1,11 @@
+GL_NV_polygon_mode
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_polygon_mode.txt
+GL_NV_polygon_mode
+
+ GL_POLYGON_MODE_NV 0x0B40
+ GL_POINT_NV 0x1B00
+ GL_LINE_NV 0x1B01
+ GL_FILL_NV 0x1B02
+ GL_POLYGON_OFFSET_POINT_NV 0x2A01
+ GL_POLYGON_OFFSET_LINE_NV 0x2A02
+ void glPolygonModeNV (GLenum face, GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_NV_present_video b/glew/auto/extensions/gl/GL_NV_present_video
new file mode 100644
index 0000000..1a5b8ce
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_present_video
@@ -0,0 +1,16 @@
+GL_NV_present_video
+http://www.opengl.org/registry/specs/NV/present_video.txt
+GL_NV_present_video
+
+ GL_FRAME_NV 0x8E26
+ GL_FIELDS_NV 0x8E27
+ GL_CURRENT_TIME_NV 0x8E28
+ GL_NUM_FILL_STREAMS_NV 0x8E29
+ GL_PRESENT_TIME_NV 0x8E2A
+ GL_PRESENT_DURATION_NV 0x8E2B
+ void glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT* params)
+ void glGetVideoivNV (GLuint video_slot, GLenum pname, GLint* params)
+ void glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT* params)
+ void glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint* params)
+ void glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3)
+ void glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1)
diff --git a/glew/auto/extensions/gl/GL_NV_primitive_restart b/glew/auto/extensions/gl/GL_NV_primitive_restart
new file mode 100644
index 0000000..aca79ba
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_primitive_restart
@@ -0,0 +1,8 @@
+GL_NV_primitive_restart
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_restart.txt
+GL_NV_primitive_restart
+
+ GL_PRIMITIVE_RESTART_NV 0x8558
+ GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
+ void glPrimitiveRestartIndexNV (GLuint index)
+ void glPrimitiveRestartNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_primitive_shading_rate b/glew/auto/extensions/gl/GL_NV_primitive_shading_rate
new file mode 100644
index 0000000..c8fec9c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_primitive_shading_rate
@@ -0,0 +1,6 @@
+GL_NV_primitive_shading_rate
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_shading_rate.txt
+GL_NV_primitive_shading_rate
+
+ GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+ GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
diff --git a/glew/auto/extensions/gl/GL_NV_query_resource_tag b/glew/auto/extensions/gl/GL_NV_query_resource_tag
new file mode 100644
index 0000000..b45a02f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_query_resource_tag
@@ -0,0 +1,4 @@
+GL_NV_query_resource_tag
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_query_resource_tag.txt
+GL_NV_query_resource_tag
+
diff --git a/glew/auto/extensions/gl/GL_NV_read_buffer b/glew/auto/extensions/gl/GL_NV_read_buffer
new file mode 100644
index 0000000..980432a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_buffer
@@ -0,0 +1,6 @@
+GL_NV_read_buffer
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_buffer.txt
+GL_NV_read_buffer
+
+ GL_READ_BUFFER_NV 0x0C02
+ void glReadBufferNV (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_NV_read_buffer_front b/glew/auto/extensions/gl/GL_NV_read_buffer_front
new file mode 100644
index 0000000..70904f4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_buffer_front
@@ -0,0 +1,5 @@
+GL_NV_read_buffer_front
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_buffer.txt
+GL_NV_read_buffer_front
+
+ GL_READ_BUFFER_NV 0x0C02
diff --git a/glew/auto/extensions/gl/GL_NV_read_depth b/glew/auto/extensions/gl/GL_NV_read_depth
new file mode 100644
index 0000000..3dab317
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_depth
@@ -0,0 +1,4 @@
+GL_NV_read_depth
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt
+GL_NV_read_depth
+
diff --git a/glew/auto/extensions/gl/GL_NV_read_depth_stencil b/glew/auto/extensions/gl/GL_NV_read_depth_stencil
new file mode 100644
index 0000000..0f35e80
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_depth_stencil
@@ -0,0 +1,4 @@
+GL_NV_read_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt
+GL_NV_read_depth_stencil
+
diff --git a/glew/auto/extensions/gl/GL_NV_read_stencil b/glew/auto/extensions/gl/GL_NV_read_stencil
new file mode 100644
index 0000000..4a91298
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_read_stencil
@@ -0,0 +1,4 @@
+GL_NV_read_stencil
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt
+GL_NV_read_stencil
+
diff --git a/glew/auto/extensions/gl/GL_NV_register_combiners b/glew/auto/extensions/gl/GL_NV_register_combiners
new file mode 100644
index 0000000..4d90284
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_register_combiners
@@ -0,0 +1,68 @@
+GL_NV_register_combiners
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_register_combiners.txt
+GL_NV_register_combiners
+
+ GL_REGISTER_COMBINERS_NV 0x8522
+ GL_VARIABLE_A_NV 0x8523
+ GL_VARIABLE_B_NV 0x8524
+ GL_VARIABLE_C_NV 0x8525
+ GL_VARIABLE_D_NV 0x8526
+ GL_VARIABLE_E_NV 0x8527
+ GL_VARIABLE_F_NV 0x8528
+ GL_VARIABLE_G_NV 0x8529
+ GL_CONSTANT_COLOR0_NV 0x852A
+ GL_CONSTANT_COLOR1_NV 0x852B
+ GL_PRIMARY_COLOR_NV 0x852C
+ GL_SECONDARY_COLOR_NV 0x852D
+ GL_SPARE0_NV 0x852E
+ GL_SPARE1_NV 0x852F
+ GL_DISCARD_NV 0x8530
+ GL_E_TIMES_F_NV 0x8531
+ GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+ GL_UNSIGNED_IDENTITY_NV 0x8536
+ GL_UNSIGNED_INVERT_NV 0x8537
+ GL_EXPAND_NORMAL_NV 0x8538
+ GL_EXPAND_NEGATE_NV 0x8539
+ GL_HALF_BIAS_NORMAL_NV 0x853A
+ GL_HALF_BIAS_NEGATE_NV 0x853B
+ GL_SIGNED_IDENTITY_NV 0x853C
+ GL_SIGNED_NEGATE_NV 0x853D
+ GL_SCALE_BY_TWO_NV 0x853E
+ GL_SCALE_BY_FOUR_NV 0x853F
+ GL_SCALE_BY_ONE_HALF_NV 0x8540
+ GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
+ GL_COMBINER_INPUT_NV 0x8542
+ GL_COMBINER_MAPPING_NV 0x8543
+ GL_COMBINER_COMPONENT_USAGE_NV 0x8544
+ GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
+ GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
+ GL_COMBINER_MUX_SUM_NV 0x8547
+ GL_COMBINER_SCALE_NV 0x8548
+ GL_COMBINER_BIAS_NV 0x8549
+ GL_COMBINER_AB_OUTPUT_NV 0x854A
+ GL_COMBINER_CD_OUTPUT_NV 0x854B
+ GL_COMBINER_SUM_OUTPUT_NV 0x854C
+ GL_MAX_GENERAL_COMBINERS_NV 0x854D
+ GL_NUM_GENERAL_COMBINERS_NV 0x854E
+ GL_COLOR_SUM_CLAMP_NV 0x854F
+ GL_COMBINER0_NV 0x8550
+ GL_COMBINER1_NV 0x8551
+ GL_COMBINER2_NV 0x8552
+ GL_COMBINER3_NV 0x8553
+ GL_COMBINER4_NV 0x8554
+ GL_COMBINER5_NV 0x8555
+ GL_COMBINER6_NV 0x8556
+ GL_COMBINER7_NV 0x8557
+ void glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
+ void glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)
+ void glCombinerParameterfNV (GLenum pname, GLfloat param)
+ void glCombinerParameterfvNV (GLenum pname, const GLfloat* params)
+ void glCombinerParameteriNV (GLenum pname, GLint param)
+ void glCombinerParameterivNV (GLenum pname, const GLint* params)
+ void glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
+ void glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params)
+ void glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params)
+ void glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat* params)
+ void glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint* params)
+ void glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat* params)
+ void glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_register_combiners2 b/glew/auto/extensions/gl/GL_NV_register_combiners2
new file mode 100644
index 0000000..9005509
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_register_combiners2
@@ -0,0 +1,7 @@
+GL_NV_register_combiners2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_register_combiners2.txt
+GL_NV_register_combiners2
+
+ GL_PER_STAGE_CONSTANTS_NV 0x8535
+ void glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat* params)
+ void glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_NV_representative_fragment_test b/glew/auto/extensions/gl/GL_NV_representative_fragment_test
new file mode 100644
index 0000000..a7d19db
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_representative_fragment_test
@@ -0,0 +1,5 @@
+GL_NV_representative_fragment_test
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_representative_fragment_test.txt
+GL_NV_representative_fragment_test
+
+ GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
diff --git a/glew/auto/extensions/gl/GL_NV_robustness_video_memory_purge b/glew/auto/extensions/gl/GL_NV_robustness_video_memory_purge
new file mode 100644
index 0000000..5766321
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_robustness_video_memory_purge
@@ -0,0 +1,5 @@
+GL_NV_robustness_video_memory_purge
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_robustness_video_memory_purge.txt
+GL_NV_robustness_video_memory_purge
+
+ GL_PURGED_CONTEXT_RESET_NV 0x92BB
diff --git a/glew/auto/extensions/gl/GL_NV_sRGB_formats b/glew/auto/extensions/gl/GL_NV_sRGB_formats
new file mode 100644
index 0000000..5cd7645
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_sRGB_formats
@@ -0,0 +1,14 @@
+GL_NV_sRGB_formats
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sRGB_formats.txt
+GL_NV_sRGB_formats
+
+ GL_ETC1_SRGB8_NV 0x88EE
+ GL_SRGB8_NV 0x8C41
+ GL_SLUMINANCE_ALPHA_NV 0x8C44
+ GL_SLUMINANCE8_ALPHA8_NV 0x8C45
+ GL_SLUMINANCE_NV 0x8C46
+ GL_SLUMINANCE8_NV 0x8C47
+ GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
diff --git a/glew/auto/extensions/gl/GL_NV_sample_locations b/glew/auto/extensions/gl/GL_NV_sample_locations
new file mode 100644
index 0000000..f3dfc98
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_sample_locations
@@ -0,0 +1,15 @@
+GL_NV_sample_locations
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_locations.txt
+GL_NV_sample_locations
+
+ GL_SAMPLE_LOCATION_NV 0x8E50
+ GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
+ GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
+ GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
+ GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
+ GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
+ void glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat* v)
+ void glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v)
+ void glResolveDepthValuesNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_sample_mask_override_coverage b/glew/auto/extensions/gl/GL_NV_sample_mask_override_coverage
new file mode 100644
index 0000000..4e184a4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_sample_mask_override_coverage
@@ -0,0 +1,4 @@
+GL_NV_sample_mask_override_coverage
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_mask_override_coverage.txt
+GL_NV_sample_mask_override_coverage
+
diff --git a/glew/auto/extensions/gl/GL_NV_scissor_exclusive b/glew/auto/extensions/gl/GL_NV_scissor_exclusive
new file mode 100644
index 0000000..dbb486c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_scissor_exclusive
@@ -0,0 +1,8 @@
+GL_NV_scissor_exclusive
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_scissor_exclusive.txt
+GL_NV_scissor_exclusive
+
+ GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555
+ GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556
+ void glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint* v)
+ void glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_counters b/glew/auto/extensions/gl/GL_NV_shader_atomic_counters
new file mode 100644
index 0000000..529e319
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_counters
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_counters
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_counters.txt
+GL_NV_shader_atomic_counters
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_float b/glew/auto/extensions/gl/GL_NV_shader_atomic_float
new file mode 100644
index 0000000..2d122dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_float
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_float
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_float.txt
+GL_NV_shader_atomic_float
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_float64 b/glew/auto/extensions/gl/GL_NV_shader_atomic_float64
new file mode 100644
index 0000000..f124742
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_float64
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_float64
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_float64.txt
+GL_NV_shader_atomic_float64
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_fp16_vector b/glew/auto/extensions/gl/GL_NV_shader_atomic_fp16_vector
new file mode 100644
index 0000000..582d386
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_fp16_vector
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_fp16_vector
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_fp16_vector.txt
+GL_NV_shader_atomic_fp16_vector
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_atomic_int64 b/glew/auto/extensions/gl/GL_NV_shader_atomic_int64
new file mode 100644
index 0000000..4d36748
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_atomic_int64
@@ -0,0 +1,4 @@
+GL_NV_shader_atomic_int64
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_int64.txt
+GL_NV_shader_atomic_int64
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_buffer_load b/glew/auto/extensions/gl/GL_NV_shader_buffer_load
new file mode 100644
index 0000000..3b53b6e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_buffer_load
@@ -0,0 +1,20 @@
+GL_NV_shader_buffer_load
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_buffer_load.txt
+GL_NV_shader_buffer_load
+
+ GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
+ GL_GPU_ADDRESS_NV 0x8F34
+ GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
+ void glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT* params)
+ void glGetIntegerui64vNV (GLenum value, GLuint64EXT* result)
+ void glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT* params)
+ GLboolean glIsBufferResidentNV (GLenum target)
+ GLboolean glIsNamedBufferResidentNV (GLuint buffer)
+ void glMakeBufferNonResidentNV (GLenum target)
+ void glMakeBufferResidentNV (GLenum target, GLenum access)
+ void glMakeNamedBufferNonResidentNV (GLuint buffer)
+ void glMakeNamedBufferResidentNV (GLuint buffer, GLenum access)
+ void glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value)
+ void glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value)
+ void glUniformui64NV (GLint location, GLuint64EXT value)
+ void glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT* value)
diff --git a/glew/auto/extensions/gl/GL_NV_shader_noperspective_interpolation b/glew/auto/extensions/gl/GL_NV_shader_noperspective_interpolation
new file mode 100644
index 0000000..26efc1a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_noperspective_interpolation
@@ -0,0 +1,4 @@
+GL_NV_shader_noperspective_interpolation
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_noperspective_interpolation.txt
+GL_NV_shader_noperspective_interpolation
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_storage_buffer_object b/glew/auto/extensions/gl/GL_NV_shader_storage_buffer_object
new file mode 100644
index 0000000..3a04476
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_storage_buffer_object
@@ -0,0 +1,4 @@
+GL_NV_shader_storage_buffer_object
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_storage_buffer_object.txt
+GL_NV_shader_storage_buffer_object
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_subgroup_partitioned b/glew/auto/extensions/gl/GL_NV_shader_subgroup_partitioned
new file mode 100644
index 0000000..71f23df
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_subgroup_partitioned
@@ -0,0 +1,5 @@
+GL_NV_shader_subgroup_partitioned
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_subgroup_partitioned.txt
+GL_NV_shader_subgroup_partitioned
+
+ GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
diff --git a/glew/auto/extensions/gl/GL_NV_shader_texture_footprint b/glew/auto/extensions/gl/GL_NV_shader_texture_footprint
new file mode 100644
index 0000000..3ac5d63
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_texture_footprint
@@ -0,0 +1,4 @@
+GL_NV_shader_texture_footprint
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_texture_footprint.txt
+GL_NV_shader_texture_footprint
+
diff --git a/glew/auto/extensions/gl/GL_NV_shader_thread_group b/glew/auto/extensions/gl/GL_NV_shader_thread_group
new file mode 100644
index 0000000..788aac5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_thread_group
@@ -0,0 +1,7 @@
+GL_NV_shader_thread_group
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt
+GL_NV_shader_thread_group
+
+ GL_WARP_SIZE_NV 0x9339
+ GL_WARPS_PER_SM_NV 0x933A
+ GL_SM_COUNT_NV 0x933B
diff --git a/glew/auto/extensions/gl/GL_NV_shader_thread_shuffle b/glew/auto/extensions/gl/GL_NV_shader_thread_shuffle
new file mode 100644
index 0000000..fd79f84
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shader_thread_shuffle
@@ -0,0 +1,4 @@
+GL_NV_shader_thread_shuffle
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_shuffle.txt
+GL_NV_shader_thread_shuffle
+
diff --git a/glew/auto/extensions/gl/GL_NV_shading_rate_image b/glew/auto/extensions/gl/GL_NV_shading_rate_image
new file mode 100644
index 0000000..78c61f3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shading_rate_image
@@ -0,0 +1,32 @@
+GL_NV_shading_rate_image
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shading_rate_image.txt
+GL_NV_shading_rate_image
+
+ GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B
+ GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C
+ GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D
+ GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E
+ GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F
+ GL_SHADING_RATE_IMAGE_NV 0x9563
+ GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564
+ GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565
+ GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566
+ GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567
+ GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568
+ GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569
+ GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A
+ GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B
+ GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C
+ GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D
+ GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E
+ GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F
+ GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE
+ GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF
+ GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0
+ void glBindShadingRateImageNV (GLuint texture)
+ void glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum* rate)
+ void glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint* location)
+ void glShadingRateImageBarrierNV (GLboolean synchronize)
+ void glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum* rates)
+ void glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint* locations)
+ void glShadingRateSampleOrderNV (GLenum order)
diff --git a/glew/auto/extensions/gl/GL_NV_shadow_samplers_array b/glew/auto/extensions/gl/GL_NV_shadow_samplers_array
new file mode 100644
index 0000000..a3369b6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shadow_samplers_array
@@ -0,0 +1,5 @@
+GL_NV_shadow_samplers_array
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shadow_samplers_array.txt
+GL_NV_shadow_samplers_array
+
+ GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4
diff --git a/glew/auto/extensions/gl/GL_NV_shadow_samplers_cube b/glew/auto/extensions/gl/GL_NV_shadow_samplers_cube
new file mode 100644
index 0000000..74b2447
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_shadow_samplers_cube
@@ -0,0 +1,5 @@
+GL_NV_shadow_samplers_cube
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shadow_samplers_cube.txt
+GL_NV_shadow_samplers_cube
+
+ GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5
diff --git a/glew/auto/extensions/gl/GL_NV_stereo_view_rendering b/glew/auto/extensions/gl/GL_NV_stereo_view_rendering
new file mode 100644
index 0000000..698b0c2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_stereo_view_rendering
@@ -0,0 +1,4 @@
+GL_NV_stereo_view_rendering
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_stereo_view_rendering.txt
+GL_NV_stereo_view_rendering
+
diff --git a/glew/auto/extensions/gl/GL_NV_tessellation_program5 b/glew/auto/extensions/gl/GL_NV_tessellation_program5
new file mode 100644
index 0000000..75fd3c7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_tessellation_program5
@@ -0,0 +1,9 @@
+GL_NV_tessellation_program5
+http://www.opengl.org/registry/specs/NV/tessellation_program5.txt
+GL_NV_gpu_program5
+
+ GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
+ GL_TESS_CONTROL_PROGRAM_NV 0x891E
+ GL_TESS_EVALUATION_PROGRAM_NV 0x891F
+ GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
+ GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
diff --git a/glew/auto/extensions/gl/GL_NV_texgen_emboss b/glew/auto/extensions/gl/GL_NV_texgen_emboss
new file mode 100644
index 0000000..1544a24
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texgen_emboss
@@ -0,0 +1,7 @@
+GL_NV_texgen_emboss
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texgen_emboss.txt
+GL_NV_texgen_emboss
+
+ GL_EMBOSS_LIGHT_NV 0x855D
+ GL_EMBOSS_CONSTANT_NV 0x855E
+ GL_EMBOSS_MAP_NV 0x855F
diff --git a/glew/auto/extensions/gl/GL_NV_texgen_reflection b/glew/auto/extensions/gl/GL_NV_texgen_reflection
new file mode 100644
index 0000000..011807b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texgen_reflection
@@ -0,0 +1,6 @@
+GL_NV_texgen_reflection
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texgen_reflection.txt
+GL_NV_texgen_reflection
+
+ GL_NORMAL_MAP_NV 0x8511
+ GL_REFLECTION_MAP_NV 0x8512
diff --git a/glew/auto/extensions/gl/GL_NV_texture_array b/glew/auto/extensions/gl/GL_NV_texture_array
new file mode 100644
index 0000000..635ce85
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_array
@@ -0,0 +1,17 @@
+GL_NV_texture_array
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_array.txt
+GL_NV_texture_array
+
+ GL_UNPACK_SKIP_IMAGES_NV 0x806D
+ GL_UNPACK_IMAGE_HEIGHT_NV 0x806E
+ GL_MAX_ARRAY_TEXTURE_LAYERS_NV 0x88FF
+ GL_TEXTURE_2D_ARRAY_NV 0x8C1A
+ GL_TEXTURE_BINDING_2D_ARRAY_NV 0x8C1D
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_NV 0x8CD4
+ GL_SAMPLER_2D_ARRAY_NV 0x8DC1
+ void glCompressedTexImage3DNV (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage3DNV (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCopyTexSubImage3DNV (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glFramebufferTextureLayerNV (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+ void glTexImage3DNV (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage3DNV (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_NV_texture_barrier b/glew/auto/extensions/gl/GL_NV_texture_barrier
new file mode 100644
index 0000000..b7028d8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_barrier
@@ -0,0 +1,5 @@
+GL_NV_texture_barrier
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_barrier.txt
+GL_NV_texture_barrier
+
+ void glTextureBarrierNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_texture_border_clamp b/glew/auto/extensions/gl/GL_NV_texture_border_clamp
new file mode 100644
index 0000000..25c92aa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_border_clamp
@@ -0,0 +1,6 @@
+GL_NV_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_border_clamp.txt
+GL_NV_texture_border_clamp
+
+ GL_TEXTURE_BORDER_COLOR_NV 0x1004
+ GL_CLAMP_TO_BORDER_NV 0x812D
diff --git a/glew/auto/extensions/gl/GL_NV_texture_compression_latc b/glew/auto/extensions/gl/GL_NV_texture_compression_latc
new file mode 100644
index 0000000..92ff118
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_compression_latc
@@ -0,0 +1,8 @@
+GL_NV_texture_compression_latc
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_latc.txt
+GL_NV_texture_compression_latc
+
+ GL_COMPRESSED_LUMINANCE_LATC1_NV 0x8C70
+ GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_NV 0x8C71
+ GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_NV 0x8C72
+ GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_NV 0x8C73
diff --git a/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc b/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc
new file mode 100644
index 0000000..036c535
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc
@@ -0,0 +1,8 @@
+GL_NV_texture_compression_s3tc
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_s3tc.txt
+GL_NV_texture_compression_s3tc
+
+ GL_COMPRESSED_RGB_S3TC_DXT1_NV 0x83F0
+ GL_COMPRESSED_RGBA_S3TC_DXT1_NV 0x83F1
+ GL_COMPRESSED_RGBA_S3TC_DXT3_NV 0x83F2
+ GL_COMPRESSED_RGBA_S3TC_DXT5_NV 0x83F3
diff --git a/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc_update b/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc_update
new file mode 100644
index 0000000..13e4fd1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_compression_s3tc_update
@@ -0,0 +1,4 @@
+GL_NV_texture_compression_s3tc_update
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_s3tc_update.txt
+GL_NV_texture_compression_s3tc_update
+
diff --git a/glew/auto/extensions/gl/GL_NV_texture_compression_vtc b/glew/auto/extensions/gl/GL_NV_texture_compression_vtc
new file mode 100644
index 0000000..e41289a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_compression_vtc
@@ -0,0 +1,4 @@
+GL_NV_texture_compression_vtc
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_vtc.txt
+GL_NV_texture_compression_vtc
+
diff --git a/glew/auto/extensions/gl/GL_NV_texture_env_combine4 b/glew/auto/extensions/gl/GL_NV_texture_env_combine4
new file mode 100644
index 0000000..0175daa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_env_combine4
@@ -0,0 +1,9 @@
+GL_NV_texture_env_combine4
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_env_combine4.txt
+GL_NV_texture_env_combine4
+
+ GL_COMBINE4_NV 0x8503
+ GL_SOURCE3_RGB_NV 0x8583
+ GL_SOURCE3_ALPHA_NV 0x858B
+ GL_OPERAND3_RGB_NV 0x8593
+ GL_OPERAND3_ALPHA_NV 0x859B
diff --git a/glew/auto/extensions/gl/GL_NV_texture_expand_normal b/glew/auto/extensions/gl/GL_NV_texture_expand_normal
new file mode 100644
index 0000000..a708cfe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_expand_normal
@@ -0,0 +1,5 @@
+GL_NV_texture_expand_normal
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_expand_normal.txt
+GL_NV_texture_expand_normal
+
+ GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
diff --git a/glew/auto/extensions/gl/GL_NV_texture_multisample b/glew/auto/extensions/gl/GL_NV_texture_multisample
new file mode 100644
index 0000000..9457b5d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_multisample
@@ -0,0 +1,12 @@
+GL_NV_texture_multisample
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_multisample.txt
+GL_NV_texture_multisample
+
+ GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045
+ GL_TEXTURE_COLOR_SAMPLES_NV 0x9046
+ void glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
+ void glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
+ void glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
+ void glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
+ void glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
+ void glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
diff --git a/glew/auto/extensions/gl/GL_NV_texture_npot_2D_mipmap b/glew/auto/extensions/gl/GL_NV_texture_npot_2D_mipmap
new file mode 100644
index 0000000..6e07b17
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_npot_2D_mipmap
@@ -0,0 +1,4 @@
+GL_NV_texture_npot_2D_mipmap
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_npot_2D_mipmap.txt
+GL_NV_texture_npot_2D_mipmap
+
diff --git a/glew/auto/extensions/gl/GL_NV_texture_rectangle b/glew/auto/extensions/gl/GL_NV_texture_rectangle
new file mode 100644
index 0000000..43c6afe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_rectangle
@@ -0,0 +1,8 @@
+GL_NV_texture_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_rectangle.txt
+GL_NV_texture_rectangle
+
+ GL_TEXTURE_RECTANGLE_NV 0x84F5
+ GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
+ GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
+ GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
diff --git a/glew/auto/extensions/gl/GL_NV_texture_rectangle_compressed b/glew/auto/extensions/gl/GL_NV_texture_rectangle_compressed
new file mode 100644
index 0000000..17be6d4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_rectangle_compressed
@@ -0,0 +1,4 @@
+GL_NV_texture_rectangle_compressed
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_rectangle_compressed.txt
+GL_NV_texture_rectangle_compressed
+
diff --git a/glew/auto/extensions/gl/GL_NV_texture_shader b/glew/auto/extensions/gl/GL_NV_texture_shader
new file mode 100644
index 0000000..98a986e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_shader
@@ -0,0 +1,77 @@
+GL_NV_texture_shader
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader.txt
+GL_NV_texture_shader
+
+ GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
+ GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+ GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+ GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+ GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+ GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+ GL_DSDT_MAG_INTENSITY_NV 0x86DC
+ GL_SHADER_CONSISTENT_NV 0x86DD
+ GL_TEXTURE_SHADER_NV 0x86DE
+ GL_SHADER_OPERATION_NV 0x86DF
+ GL_CULL_MODES_NV 0x86E0
+ GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
+ GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
+ GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
+ GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
+ GL_CONST_EYE_NV 0x86E5
+ GL_PASS_THROUGH_NV 0x86E6
+ GL_CULL_FRAGMENT_NV 0x86E7
+ GL_OFFSET_TEXTURE_2D_NV 0x86E8
+ GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
+ GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
+ GL_DOT_PRODUCT_NV 0x86EC
+ GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
+ GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
+ GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+ GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+ GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+ GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+ GL_HILO_NV 0x86F4
+ GL_DSDT_NV 0x86F5
+ GL_DSDT_MAG_NV 0x86F6
+ GL_DSDT_MAG_VIB_NV 0x86F7
+ GL_HILO16_NV 0x86F8
+ GL_SIGNED_HILO_NV 0x86F9
+ GL_SIGNED_HILO16_NV 0x86FA
+ GL_SIGNED_RGBA_NV 0x86FB
+ GL_SIGNED_RGBA8_NV 0x86FC
+ GL_SIGNED_RGB_NV 0x86FE
+ GL_SIGNED_RGB8_NV 0x86FF
+ GL_SIGNED_LUMINANCE_NV 0x8701
+ GL_SIGNED_LUMINANCE8_NV 0x8702
+ GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+ GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+ GL_SIGNED_ALPHA_NV 0x8705
+ GL_SIGNED_ALPHA8_NV 0x8706
+ GL_SIGNED_INTENSITY_NV 0x8707
+ GL_SIGNED_INTENSITY8_NV 0x8708
+ GL_DSDT8_NV 0x8709
+ GL_DSDT8_MAG8_NV 0x870A
+ GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+ GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+ GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+ GL_HI_SCALE_NV 0x870E
+ GL_LO_SCALE_NV 0x870F
+ GL_DS_SCALE_NV 0x8710
+ GL_DT_SCALE_NV 0x8711
+ GL_MAGNITUDE_SCALE_NV 0x8712
+ GL_VIBRANCE_SCALE_NV 0x8713
+ GL_HI_BIAS_NV 0x8714
+ GL_LO_BIAS_NV 0x8715
+ GL_DS_BIAS_NV 0x8716
+ GL_DT_BIAS_NV 0x8717
+ GL_MAGNITUDE_BIAS_NV 0x8718
+ GL_VIBRANCE_BIAS_NV 0x8719
+ GL_TEXTURE_BORDER_VALUES_NV 0x871A
+ GL_TEXTURE_HI_SIZE_NV 0x871B
+ GL_TEXTURE_LO_SIZE_NV 0x871C
+ GL_TEXTURE_DS_SIZE_NV 0x871D
+ GL_TEXTURE_DT_SIZE_NV 0x871E
+ GL_TEXTURE_MAG_SIZE_NV 0x871F
+ GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
+ GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
+ GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
diff --git a/glew/auto/extensions/gl/GL_NV_texture_shader2 b/glew/auto/extensions/gl/GL_NV_texture_shader2
new file mode 100644
index 0000000..7f1176e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_shader2
@@ -0,0 +1,32 @@
+GL_NV_texture_shader2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader2.txt
+GL_NV_texture_shader2
+
+ GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+ GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+ GL_DSDT_MAG_INTENSITY_NV 0x86DC
+ GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
+ GL_HILO_NV 0x86F4
+ GL_DSDT_NV 0x86F5
+ GL_DSDT_MAG_NV 0x86F6
+ GL_DSDT_MAG_VIB_NV 0x86F7
+ GL_HILO16_NV 0x86F8
+ GL_SIGNED_HILO_NV 0x86F9
+ GL_SIGNED_HILO16_NV 0x86FA
+ GL_SIGNED_RGBA_NV 0x86FB
+ GL_SIGNED_RGBA8_NV 0x86FC
+ GL_SIGNED_RGB_NV 0x86FE
+ GL_SIGNED_RGB8_NV 0x86FF
+ GL_SIGNED_LUMINANCE_NV 0x8701
+ GL_SIGNED_LUMINANCE8_NV 0x8702
+ GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+ GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+ GL_SIGNED_ALPHA_NV 0x8705
+ GL_SIGNED_ALPHA8_NV 0x8706
+ GL_SIGNED_INTENSITY_NV 0x8707
+ GL_SIGNED_INTENSITY8_NV 0x8708
+ GL_DSDT8_NV 0x8709
+ GL_DSDT8_MAG8_NV 0x870A
+ GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+ GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+ GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
diff --git a/glew/auto/extensions/gl/GL_NV_texture_shader3 b/glew/auto/extensions/gl/GL_NV_texture_shader3
new file mode 100644
index 0000000..4f98d77
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_texture_shader3
@@ -0,0 +1,21 @@
+GL_NV_texture_shader3
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader3.txt
+GL_NV_texture_shader3
+
+ GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+ GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+ GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+ GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+ GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
+ GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+ GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+ GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+ GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
+ GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
+ GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+ GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
+ GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
+ GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+ GL_HILO8_NV 0x885E
+ GL_SIGNED_HILO8_NV 0x885F
+ GL_FORCE_BLUE_TO_ONE_NV 0x8860
diff --git a/glew/auto/extensions/gl/GL_NV_timeline_semaphore b/glew/auto/extensions/gl/GL_NV_timeline_semaphore
new file mode 100644
index 0000000..b6c11be
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_timeline_semaphore
@@ -0,0 +1,12 @@
+GL_NV_timeline_semaphore
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_timeline_semaphore.txt
+GL_NV_timeline_semaphore
+
+ GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595
+ GL_SEMAPHORE_TYPE_NV 0x95B3
+ GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4
+ GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5
+ GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6
+ void glCreateSemaphoresNV (GLsizei n, GLuint* semaphores)
+ void glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint* params)
+ void glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint* params)
diff --git a/glew/auto/extensions/gl/GL_NV_transform_feedback b/glew/auto/extensions/gl/GL_NV_transform_feedback
new file mode 100644
index 0000000..5f1816e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_transform_feedback
@@ -0,0 +1,40 @@
+GL_NV_transform_feedback
+http://developer.download.nvidia.com/opengl/specs/GL_NV_transform_feedback.txt
+GL_NV_transform_feedback
+
+ GL_BACK_PRIMARY_COLOR_NV 0x8C77
+ GL_BACK_SECONDARY_COLOR_NV 0x8C78
+ GL_TEXTURE_COORD_NV 0x8C79
+ GL_CLIP_DISTANCE_NV 0x8C7A
+ GL_VERTEX_ID_NV 0x8C7B
+ GL_PRIMITIVE_ID_NV 0x8C7C
+ GL_GENERIC_ATTRIB_NV 0x8C7D
+ GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
+ GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
+ GL_ACTIVE_VARYINGS_NV 0x8C81
+ GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
+ GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
+ GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
+ GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
+ GL_PRIMITIVES_GENERATED_NV 0x8C87
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
+ GL_RASTERIZER_DISCARD_NV 0x8C89
+ GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
+ GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
+ GL_SEPARATE_ATTRIBS_NV 0x8C8D
+ GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
+ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
+ void glBeginTransformFeedbackNV (GLenum primitiveMode)
+ void glEndTransformFeedbackNV (void)
+ void glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode)
+ void glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+ void glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset)
+ void glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer)
+ void glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode)
+ void glActiveVaryingNV (GLuint program, const GLchar *name)
+ GLint glGetVaryingLocationNV (GLuint program, const GLchar *name)
+ void glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
+ void glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location)
diff --git a/glew/auto/extensions/gl/GL_NV_transform_feedback2 b/glew/auto/extensions/gl/GL_NV_transform_feedback2
new file mode 100644
index 0000000..540d336
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_transform_feedback2
@@ -0,0 +1,15 @@
+GL_NV_transform_feedback2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_transform_feedback2.txt
+GL_NV_transform_feedback2
+
+ GL_TRANSFORM_FEEDBACK_NV 0x8E22
+ GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
+ GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
+ GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25
+ void glBindTransformFeedbackNV (GLenum target, GLuint id)
+ void glDeleteTransformFeedbacksNV (GLsizei n, const GLuint* ids)
+ void glDrawTransformFeedbackNV (GLenum mode, GLuint id)
+ void glGenTransformFeedbacksNV (GLsizei n, GLuint* ids)
+ GLboolean glIsTransformFeedbackNV (GLuint id)
+ void glPauseTransformFeedbackNV (void)
+ void glResumeTransformFeedbackNV (void)
diff --git a/glew/auto/extensions/gl/GL_NV_uniform_buffer_unified_memory b/glew/auto/extensions/gl/GL_NV_uniform_buffer_unified_memory
new file mode 100644
index 0000000..b398e3b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_uniform_buffer_unified_memory
@@ -0,0 +1,7 @@
+GL_NV_uniform_buffer_unified_memory
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_uniform_buffer_unified_memory.txt
+GL_NV_uniform_buffer_unified_memory
+
+ GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
+ GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F
+ GL_UNIFORM_BUFFER_LENGTH_NV 0x9370
diff --git a/glew/auto/extensions/gl/GL_NV_vdpau_interop b/glew/auto/extensions/gl/GL_NV_vdpau_interop
new file mode 100644
index 0000000..f52949c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vdpau_interop
@@ -0,0 +1,19 @@
+GL_NV_vdpau_interop
+http://www.opengl.org/registry/specs/NV/vdpau_interop.txt
+GL_NV_vdpau_interop
+
+ GL_SURFACE_STATE_NV 0x86EB
+ GL_SURFACE_REGISTERED_NV 0x86FD
+ GL_SURFACE_MAPPED_NV 0x8700
+ GL_WRITE_DISCARD_NV 0x88BE
+ void glVDPAUFiniNV (void)
+ void glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values)
+ void glVDPAUInitNV (const void* vdpDevice, const void*getProcAddress)
+ void glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface)
+ void glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces)
+ GLvdpauSurfaceNV glVDPAURegisterOutputSurfaceNV (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames)
+ GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceNV (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames)
+ void glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access)
+ void glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces)
+ void glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface)
+ typedef GLintptr GLvdpauSurfaceNV
diff --git a/glew/auto/extensions/gl/GL_NV_vdpau_interop2 b/glew/auto/extensions/gl/GL_NV_vdpau_interop2
new file mode 100644
index 0000000..c92a64e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vdpau_interop2
@@ -0,0 +1,5 @@
+GL_NV_vdpau_interop2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vdpau_interop2.txt
+GL_NV_vdpau_interop2
+
+ GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceWithPictureStructureNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure)
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_array_range b/glew/auto/extensions/gl/GL_NV_vertex_array_range
new file mode 100644
index 0000000..c845534
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_array_range
@@ -0,0 +1,11 @@
+GL_NV_vertex_array_range
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_array_range.txt
+GL_NV_vertex_array_range
+
+ GL_VERTEX_ARRAY_RANGE_NV 0x851D
+ GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
+ GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
+ GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+ GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
+ void glFlushVertexArrayRangeNV (void)
+ void glVertexArrayRangeNV (GLsizei length, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_array_range2 b/glew/auto/extensions/gl/GL_NV_vertex_array_range2
new file mode 100644
index 0000000..6ebd4d0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_array_range2
@@ -0,0 +1,5 @@
+GL_NV_vertex_array_range2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_array_range2.txt
+GL_NV_vertex_array_range2
+
+ GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_attrib_integer_64bit b/glew/auto/extensions/gl/GL_NV_vertex_attrib_integer_64bit
new file mode 100644
index 0000000..7d2eaa4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_attrib_integer_64bit
@@ -0,0 +1,25 @@
+GL_NV_vertex_attrib_integer_64bit
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_attrib_integer_64bit.txt
+GL_NV_vertex_attrib_integer_64bit
+
+ GL_INT64_NV 0x140E
+ GL_UNSIGNED_INT64_NV 0x140F
+ void glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT* params)
+ void glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT* params)
+ void glVertexAttribL1i64NV (GLuint index, GLint64EXT x)
+ void glVertexAttribL1i64vNV (GLuint index, const GLint64EXT* v)
+ void glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x)
+ void glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT* v)
+ void glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y)
+ void glVertexAttribL2i64vNV (GLuint index, const GLint64EXT* v)
+ void glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y)
+ void glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT* v)
+ void glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z)
+ void glVertexAttribL3i64vNV (GLuint index, const GLint64EXT* v)
+ void glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)
+ void glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT* v)
+ void glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)
+ void glVertexAttribL4i64vNV (GLuint index, const GLint64EXT* v)
+ void glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)
+ void glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT* v)
+ void glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride)
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_buffer_unified_memory b/glew/auto/extensions/gl/GL_NV_vertex_buffer_unified_memory
new file mode 100644
index 0000000..21e77a9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_buffer_unified_memory
@@ -0,0 +1,41 @@
+GL_NV_vertex_buffer_unified_memory
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_buffer_unified_memory.txt
+GL_NV_vertex_buffer_unified_memory
+
+ GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
+ GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
+ GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
+ GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
+ GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
+ GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
+ GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
+ GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
+ GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
+ GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
+ GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
+ GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
+ GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
+ GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
+ GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
+ GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
+ GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
+ GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
+ GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
+ GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
+ GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
+ GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
+ void glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length)
+ void glColorFormatNV (GLint size, GLenum type, GLsizei stride)
+ void glEdgeFlagFormatNV (GLsizei stride)
+ void glFogCoordFormatNV (GLenum type, GLsizei stride)
+ void glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT result[])
+ void glIndexFormatNV (GLenum type, GLsizei stride)
+ void glNormalFormatNV (GLenum type, GLsizei stride)
+ void glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride)
+ void glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride)
+ void glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride)
+ void glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride)
+ void glVertexFormatNV (GLint size, GLenum type, GLsizei stride)
+ GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+ GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+ GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program b/glew/auto/extensions/gl/GL_NV_vertex_program
new file mode 100644
index 0000000..861ede0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program
@@ -0,0 +1,151 @@
+GL_NV_vertex_program
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program.txt
+GL_NV_vertex_program
+
+ GL_VERTEX_PROGRAM_NV 0x8620
+ GL_VERTEX_STATE_PROGRAM_NV 0x8621
+ GL_ATTRIB_ARRAY_SIZE_NV 0x8623
+ GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
+ GL_ATTRIB_ARRAY_TYPE_NV 0x8625
+ GL_CURRENT_ATTRIB_NV 0x8626
+ GL_PROGRAM_LENGTH_NV 0x8627
+ GL_PROGRAM_STRING_NV 0x8628
+ GL_MODELVIEW_PROJECTION_NV 0x8629
+ GL_IDENTITY_NV 0x862A
+ GL_INVERSE_NV 0x862B
+ GL_TRANSPOSE_NV 0x862C
+ GL_INVERSE_TRANSPOSE_NV 0x862D
+ GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
+ GL_MAX_TRACK_MATRICES_NV 0x862F
+ GL_MATRIX0_NV 0x8630
+ GL_MATRIX1_NV 0x8631
+ GL_MATRIX2_NV 0x8632
+ GL_MATRIX3_NV 0x8633
+ GL_MATRIX4_NV 0x8634
+ GL_MATRIX5_NV 0x8635
+ GL_MATRIX6_NV 0x8636
+ GL_MATRIX7_NV 0x8637
+ GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
+ GL_CURRENT_MATRIX_NV 0x8641
+ GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
+ GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
+ GL_PROGRAM_PARAMETER_NV 0x8644
+ GL_ATTRIB_ARRAY_POINTER_NV 0x8645
+ GL_PROGRAM_TARGET_NV 0x8646
+ GL_PROGRAM_RESIDENT_NV 0x8647
+ GL_TRACK_MATRIX_NV 0x8648
+ GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
+ GL_VERTEX_PROGRAM_BINDING_NV 0x864A
+ GL_PROGRAM_ERROR_POSITION_NV 0x864B
+ GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
+ GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
+ GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
+ GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
+ GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
+ GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
+ GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
+ GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
+ GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
+ GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
+ GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
+ GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
+ GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
+ GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
+ GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
+ GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
+ GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
+ GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
+ GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
+ GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
+ GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
+ GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
+ GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
+ GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
+ GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
+ GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
+ GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
+ GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
+ GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
+ GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
+ GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
+ GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
+ GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
+ GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
+ GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
+ GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
+ GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
+ GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
+ GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
+ GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
+ GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
+ GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
+ GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
+ GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
+ GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
+ GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
+ GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
+ GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
+ GLboolean glAreProgramsResidentNV (GLsizei n, const GLuint* ids, GLboolean *residences)
+ void glBindProgramNV (GLenum target, GLuint id)
+ void glDeleteProgramsNV (GLsizei n, const GLuint* ids)
+ void glExecuteProgramNV (GLenum target, GLuint id, const GLfloat* params)
+ void glGenProgramsNV (GLsizei n, GLuint* ids)
+ void glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble* params)
+ void glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat* params)
+ void glGetProgramStringNV (GLuint id, GLenum pname, GLubyte* program)
+ void glGetProgramivNV (GLuint id, GLenum pname, GLint* params)
+ void glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint* params)
+ void glGetVertexAttribPointervNV (GLuint index, GLenum pname, void** pointer)
+ void glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble* params)
+ void glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat* params)
+ void glGetVertexAttribivNV (GLuint index, GLenum pname, GLint* params)
+ GLboolean glIsProgramNV (GLuint id)
+ void glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte* program)
+ void glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble* params)
+ void glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat* params)
+ void glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei num, const GLdouble* params)
+ void glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei num, const GLfloat* params)
+ void glRequestResidentProgramsNV (GLsizei n, GLuint* ids)
+ void glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform)
+ void glVertexAttrib1dNV (GLuint index, GLdouble x)
+ void glVertexAttrib1dvNV (GLuint index, const GLdouble* v)
+ void glVertexAttrib1fNV (GLuint index, GLfloat x)
+ void glVertexAttrib1fvNV (GLuint index, const GLfloat* v)
+ void glVertexAttrib1sNV (GLuint index, GLshort x)
+ void glVertexAttrib1svNV (GLuint index, const GLshort* v)
+ void glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y)
+ void glVertexAttrib2dvNV (GLuint index, const GLdouble* v)
+ void glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y)
+ void glVertexAttrib2fvNV (GLuint index, const GLfloat* v)
+ void glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y)
+ void glVertexAttrib2svNV (GLuint index, const GLshort* v)
+ void glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z)
+ void glVertexAttrib3dvNV (GLuint index, const GLdouble* v)
+ void glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z)
+ void glVertexAttrib3fvNV (GLuint index, const GLfloat* v)
+ void glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z)
+ void glVertexAttrib3svNV (GLuint index, const GLshort* v)
+ void glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+ void glVertexAttrib4dvNV (GLuint index, const GLdouble* v)
+ void glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glVertexAttrib4fvNV (GLuint index, const GLfloat* v)
+ void glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+ void glVertexAttrib4svNV (GLuint index, const GLshort* v)
+ void glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+ void glVertexAttrib4ubvNV (GLuint index, const GLubyte* v)
+ void glVertexAttribPointerNV (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
+ void glVertexAttribs1dvNV (GLuint index, GLsizei n, const GLdouble* v)
+ void glVertexAttribs1fvNV (GLuint index, GLsizei n, const GLfloat* v)
+ void glVertexAttribs1svNV (GLuint index, GLsizei n, const GLshort* v)
+ void glVertexAttribs2dvNV (GLuint index, GLsizei n, const GLdouble* v)
+ void glVertexAttribs2fvNV (GLuint index, GLsizei n, const GLfloat* v)
+ void glVertexAttribs2svNV (GLuint index, GLsizei n, const GLshort* v)
+ void glVertexAttribs3dvNV (GLuint index, GLsizei n, const GLdouble* v)
+ void glVertexAttribs3fvNV (GLuint index, GLsizei n, const GLfloat* v)
+ void glVertexAttribs3svNV (GLuint index, GLsizei n, const GLshort* v)
+ void glVertexAttribs4dvNV (GLuint index, GLsizei n, const GLdouble* v)
+ void glVertexAttribs4fvNV (GLuint index, GLsizei n, const GLfloat* v)
+ void glVertexAttribs4svNV (GLuint index, GLsizei n, const GLshort* v)
+ void glVertexAttribs4ubvNV (GLuint index, GLsizei n, const GLubyte* v)
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program1_1 b/glew/auto/extensions/gl/GL_NV_vertex_program1_1
new file mode 100644
index 0000000..5a88dd3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program1_1
@@ -0,0 +1,4 @@
+GL_NV_vertex_program1_1
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program1_1.txt
+GL_NV_vertex_program1_1
+
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program2 b/glew/auto/extensions/gl/GL_NV_vertex_program2
new file mode 100644
index 0000000..e25e47f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program2
@@ -0,0 +1,4 @@
+GL_NV_vertex_program2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program2.txt
+GL_NV_vertex_program2
+
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program2_option b/glew/auto/extensions/gl/GL_NV_vertex_program2_option
new file mode 100644
index 0000000..3e3e0b7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program2_option
@@ -0,0 +1,6 @@
+GL_NV_vertex_program2_option
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program2_option.txt
+GL_NV_vertex_program2_option
+
+ GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+ GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program3 b/glew/auto/extensions/gl/GL_NV_vertex_program3
new file mode 100644
index 0000000..fbd3899
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program3
@@ -0,0 +1,5 @@
+GL_NV_vertex_program3
+http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program3.txt
+GL_NV_vertex_program3
+
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
diff --git a/glew/auto/extensions/gl/GL_NV_vertex_program4 b/glew/auto/extensions/gl/GL_NV_vertex_program4
new file mode 100644
index 0000000..b1ff7f8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_vertex_program4
@@ -0,0 +1,5 @@
+GL_NV_vertex_program4
+http://developer.download.nvidia.com/opengl/specs/GL_NV_vertex_program4.txt
+GL_NV_gpu_program4
+
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
diff --git a/glew/auto/extensions/gl/GL_NV_video_capture b/glew/auto/extensions/gl/GL_NV_video_capture
new file mode 100644
index 0000000..90a94db
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_video_capture
@@ -0,0 +1,45 @@
+GL_NV_video_capture
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_video_capture.txt
+GL_NV_video_capture
+
+ GL_VIDEO_BUFFER_NV 0x9020
+ GL_VIDEO_BUFFER_BINDING_NV 0x9021
+ GL_FIELD_UPPER_NV 0x9022
+ GL_FIELD_LOWER_NV 0x9023
+ GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024
+ GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
+ GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
+ GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027
+ GL_VIDEO_BUFFER_PITCH_NV 0x9028
+ GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
+ GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A
+ GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B
+ GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
+ GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
+ GL_PARTIAL_SUCCESS_NV 0x902E
+ GL_SUCCESS_NV 0x902F
+ GL_FAILURE_NV 0x9030
+ GL_YCBYCR8_422_NV 0x9031
+ GL_YCBAYCR8A_4224_NV 0x9032
+ GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033
+ GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
+ GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035
+ GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
+ GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037
+ GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038
+ GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039
+ GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
+ GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
+ GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
+ void glBeginVideoCaptureNV (GLuint video_capture_slot)
+ void glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset)
+ void glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture)
+ void glEndVideoCaptureNV (GLuint video_capture_slot)
+ void glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint* params)
+ GLenum glVideoCaptureNV (GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT *capture_time)
+ void glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params)
+ void glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params)
+ void glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params)
+ void glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params)
+ void glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params)
+ void glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params)
diff --git a/glew/auto/extensions/gl/GL_NV_viewport_array b/glew/auto/extensions/gl/GL_NV_viewport_array
new file mode 100644
index 0000000..ed49bee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_viewport_array
@@ -0,0 +1,24 @@
+GL_NV_viewport_array
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array.txt
+GL_NV_viewport_array
+
+ GL_DEPTH_RANGE 0x0B70
+ GL_VIEWPORT 0x0BA2
+ GL_SCISSOR_BOX 0x0C10
+ GL_SCISSOR_TEST 0x0C11
+ GL_MAX_VIEWPORTS_NV 0x825B
+ GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C
+ GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F
+ void glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat * v)
+ void glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f)
+ void glDisableiNV (GLenum target, GLuint index)
+ void glEnableiNV (GLenum target, GLuint index)
+ void glGetFloati_vNV (GLenum target, GLuint index, GLfloat* data)
+ GLboolean glIsEnablediNV (GLenum target, GLuint index)
+ void glScissorArrayvNV (GLuint first, GLsizei count, const GLint * v)
+ void glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)
+ void glScissorIndexedvNV (GLuint index, const GLint * v)
+ void glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat * v)
+ void glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)
+ void glViewportIndexedfvNV (GLuint index, const GLfloat * v)
diff --git a/glew/auto/extensions/gl/GL_NV_viewport_array2 b/glew/auto/extensions/gl/GL_NV_viewport_array2
new file mode 100644
index 0000000..233b5f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_viewport_array2
@@ -0,0 +1,4 @@
+GL_NV_viewport_array2
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt
+GL_NV_viewport_array2
+
diff --git a/glew/auto/extensions/gl/GL_NV_viewport_swizzle b/glew/auto/extensions/gl/GL_NV_viewport_swizzle
new file mode 100644
index 0000000..bf157f4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_NV_viewport_swizzle
@@ -0,0 +1,17 @@
+GL_NV_viewport_swizzle
+https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_swizzle.txt
+GL_NV_viewport_swizzle
+
+ GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
+ GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
+ GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
+ GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
+ GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
+ GL_VIEWPORT_SWIZZLE_X_NV 0x9358
+ GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
+ GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
+ GL_VIEWPORT_SWIZZLE_W_NV 0x935B
+ void glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew)
diff --git a/glew/auto/extensions/gl/GL_OES_EGL_image b/glew/auto/extensions/gl/GL_OES_EGL_image
new file mode 100644
index 0000000..c602141
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_EGL_image
@@ -0,0 +1,6 @@
+GL_OES_EGL_image
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image.txt
+GL_OES_EGL_image
+
+ void glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image)
+ void glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
diff --git a/glew/auto/extensions/gl/GL_OES_EGL_image_external b/glew/auto/extensions/gl/GL_OES_EGL_image_external
new file mode 100644
index 0000000..6116d73
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_EGL_image_external
@@ -0,0 +1,8 @@
+GL_OES_EGL_image_external
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt
+GL_OES_EGL_image_external
+
+ GL_TEXTURE_EXTERNAL_OES 0x8D65
+ GL_SAMPLER_EXTERNAL_OES 0x8D66
+ GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+ GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
diff --git a/glew/auto/extensions/gl/GL_OES_EGL_image_external_essl3 b/glew/auto/extensions/gl/GL_OES_EGL_image_external_essl3
new file mode 100644
index 0000000..bed4631
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_EGL_image_external_essl3
@@ -0,0 +1,4 @@
+GL_OES_EGL_image_external_essl3
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external_essl3.txt
+GL_OES_EGL_image_external_essl3
+
diff --git a/glew/auto/extensions/gl/GL_OES_blend_equation_separate b/glew/auto/extensions/gl/GL_OES_blend_equation_separate
new file mode 100644
index 0000000..7cc038c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_blend_equation_separate
@@ -0,0 +1,7 @@
+GL_OES_blend_equation_separate
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_equation_separate.txt
+GL_OES_blend_equation_separate
+
+ GL_BLEND_EQUATION_RGB_OES 0x8009
+ GL_BLEND_EQUATION_ALPHA_OES 0x883D
+ void glBlendEquationSeparateOES (GLenum modeRGB, GLenum modeAlpha)
diff --git a/glew/auto/extensions/gl/GL_OES_blend_func_separate b/glew/auto/extensions/gl/GL_OES_blend_func_separate
new file mode 100644
index 0000000..00d2ce3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_blend_func_separate
@@ -0,0 +1,9 @@
+GL_OES_blend_func_separate
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_func_separate.txt
+GL_OES_blend_func_separate
+
+ GL_BLEND_DST_RGB_OES 0x80C8
+ GL_BLEND_SRC_RGB_OES 0x80C9
+ GL_BLEND_DST_ALPHA_OES 0x80CA
+ GL_BLEND_SRC_ALPHA_OES 0x80CB
+ void glBlendFuncSeparateOES (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
diff --git a/glew/auto/extensions/gl/GL_OES_blend_subtract b/glew/auto/extensions/gl/GL_OES_blend_subtract
new file mode 100644
index 0000000..4dd7105
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_blend_subtract
@@ -0,0 +1,9 @@
+GL_OES_blend_subtract
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_subtract.txt
+GL_OES_blend_subtract
+
+ GL_FUNC_ADD_OES 0x8006
+ GL_BLEND_EQUATION_OES 0x8009
+ GL_FUNC_SUBTRACT_OES 0x800A
+ GL_FUNC_REVERSE_SUBTRACT_OES 0x800B
+ void glBlendEquationOES (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_OES_byte_coordinates b/glew/auto/extensions/gl/GL_OES_byte_coordinates
new file mode 100644
index 0000000..446d175
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_byte_coordinates
@@ -0,0 +1,4 @@
+GL_OES_byte_coordinates
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_byte_coordinates.txt
+GL_OES_byte_coordinates
+
diff --git a/glew/auto/extensions/gl/GL_OES_compressed_ETC1_RGB8_texture b/glew/auto/extensions/gl/GL_OES_compressed_ETC1_RGB8_texture
new file mode 100644
index 0000000..62f4a41
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_compressed_ETC1_RGB8_texture
@@ -0,0 +1,5 @@
+GL_OES_compressed_ETC1_RGB8_texture
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt
+GL_OES_compressed_ETC1_RGB8_texture
+
+ GL_ETC1_RGB8_OES 0x8D64
diff --git a/glew/auto/extensions/gl/GL_OES_compressed_paletted_texture b/glew/auto/extensions/gl/GL_OES_compressed_paletted_texture
new file mode 100644
index 0000000..f50eddc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_compressed_paletted_texture
@@ -0,0 +1,14 @@
+GL_OES_compressed_paletted_texture
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_paletted_texture.txt
+GL_OES_compressed_paletted_texture
+
+ GL_PALETTE4_RGB8_OES 0x8B90
+ GL_PALETTE4_RGBA8_OES 0x8B91
+ GL_PALETTE4_R5_G6_B5_OES 0x8B92
+ GL_PALETTE4_RGBA4_OES 0x8B93
+ GL_PALETTE4_RGB5_A1_OES 0x8B94
+ GL_PALETTE8_RGB8_OES 0x8B95
+ GL_PALETTE8_RGBA8_OES 0x8B96
+ GL_PALETTE8_R5_G6_B5_OES 0x8B97
+ GL_PALETTE8_RGBA4_OES 0x8B98
+ GL_PALETTE8_RGB5_A1_OES 0x8B99
diff --git a/glew/auto/extensions/gl/GL_OES_copy_image b/glew/auto/extensions/gl/GL_OES_copy_image
new file mode 100644
index 0000000..1a22b81
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_copy_image
@@ -0,0 +1,5 @@
+GL_OES_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_copy_image.txt
+GL_OES_copy_image
+
+ void glCopyImageSubDataOES (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
diff --git a/glew/auto/extensions/gl/GL_OES_depth24 b/glew/auto/extensions/gl/GL_OES_depth24
new file mode 100644
index 0000000..e23721e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_depth24
@@ -0,0 +1,5 @@
+GL_OES_depth24
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth24.txt
+GL_OES_depth24
+
+ GL_DEPTH_COMPONENT24_OES 0x81A6
diff --git a/glew/auto/extensions/gl/GL_OES_depth32 b/glew/auto/extensions/gl/GL_OES_depth32
new file mode 100644
index 0000000..8c5b78b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_depth32
@@ -0,0 +1,5 @@
+GL_OES_depth32
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth32.txt
+GL_OES_depth32
+
+ GL_DEPTH_COMPONENT32_OES 0x81A7
diff --git a/glew/auto/extensions/gl/GL_OES_depth_texture b/glew/auto/extensions/gl/GL_OES_depth_texture
new file mode 100644
index 0000000..5109bf4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_depth_texture
@@ -0,0 +1,7 @@
+GL_OES_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt
+GL_OES_depth_texture
+
+ GL_UNSIGNED_SHORT 0x1403
+ GL_UNSIGNED_INT 0x1405
+ GL_DEPTH_COMPONENT 0x1902
diff --git a/glew/auto/extensions/gl/GL_OES_depth_texture_cube_map b/glew/auto/extensions/gl/GL_OES_depth_texture_cube_map
new file mode 100644
index 0000000..f7e9f07
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_depth_texture_cube_map
@@ -0,0 +1,9 @@
+GL_OES_depth_texture_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture_cube_map.txt
+GL_OES_depth_texture_cube_map
+
+ GL_UNSIGNED_SHORT 0x1403
+ GL_UNSIGNED_INT 0x1405
+ GL_DEPTH_COMPONENT 0x1902
+ GL_DEPTH_STENCIL_OES 0x84F9
+ GL_DEPTH24_STENCIL8_OES 0x88F0
diff --git a/glew/auto/extensions/gl/GL_OES_draw_buffers_indexed b/glew/auto/extensions/gl/GL_OES_draw_buffers_indexed
new file mode 100644
index 0000000..5b92ed1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_draw_buffers_indexed
@@ -0,0 +1,12 @@
+GL_OES_draw_buffers_indexed
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_buffers_indexed.txt
+GL_OES_draw_buffers_indexed
+
+ void glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
+ void glBlendEquationiOES (GLuint buf, GLenum mode)
+ void glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+ void glBlendFunciOES (GLuint buf, GLenum src, GLenum dst)
+ void glColorMaskiOES (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
+ void glDisableiOES (GLenum target, GLuint index)
+ void glEnableiOES (GLenum target, GLuint index)
+ GLboolean glIsEnablediOES (GLenum target, GLuint index)
diff --git a/glew/auto/extensions/gl/GL_OES_draw_texture b/glew/auto/extensions/gl/GL_OES_draw_texture
new file mode 100644
index 0000000..f0ee773
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_draw_texture
@@ -0,0 +1,5 @@
+GL_OES_draw_texture
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_texture.txt
+GL_OES_draw_texture
+
+ GL_TEXTURE_CROP_RECT_OES 0x8B9D
diff --git a/glew/auto/extensions/gl/GL_OES_element_index_uint b/glew/auto/extensions/gl/GL_OES_element_index_uint
new file mode 100644
index 0000000..a54cc62
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_element_index_uint
@@ -0,0 +1,5 @@
+GL_OES_element_index_uint
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_element_index_uint.txt
+GL_OES_element_index_uint
+
+ GL_UNSIGNED_INT 0x1405
diff --git a/glew/auto/extensions/gl/GL_OES_extended_matrix_palette b/glew/auto/extensions/gl/GL_OES_extended_matrix_palette
new file mode 100644
index 0000000..0c4c3b5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_extended_matrix_palette
@@ -0,0 +1,4 @@
+GL_OES_extended_matrix_palette
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_extended_matrix_palette.txt
+GL_OES_extended_matrix_palette
+
diff --git a/glew/auto/extensions/gl/GL_OES_fbo_render_mipmap b/glew/auto/extensions/gl/GL_OES_fbo_render_mipmap
new file mode 100644
index 0000000..420c2b9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_fbo_render_mipmap
@@ -0,0 +1,4 @@
+GL_OES_fbo_render_mipmap
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fbo_render_mipmap.txt
+GL_OES_fbo_render_mipmap
+
diff --git a/glew/auto/extensions/gl/GL_OES_fragment_precision_high b/glew/auto/extensions/gl/GL_OES_fragment_precision_high
new file mode 100644
index 0000000..19b6410
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_fragment_precision_high
@@ -0,0 +1,4 @@
+GL_OES_fragment_precision_high
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fragment_precision_high.txt
+GL_OES_fragment_precision_high
+
diff --git a/glew/auto/extensions/gl/GL_OES_framebuffer_object b/glew/auto/extensions/gl/GL_OES_framebuffer_object
new file mode 100644
index 0000000..bdef4b6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_framebuffer_object
@@ -0,0 +1,58 @@
+GL_OES_framebuffer_object
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_framebuffer_object.txt
+GL_OES_framebuffer_object
+
+ GL_NONE_OES 0
+ GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506
+ GL_RGBA4_OES 0x8056
+ GL_RGB5_A1_OES 0x8057
+ GL_DEPTH_COMPONENT16_OES 0x81A5
+ GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8
+ GL_FRAMEBUFFER_BINDING_OES 0x8CA6
+ GL_RENDERBUFFER_BINDING_OES 0x8CA7
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4
+ GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7
+ GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9
+ GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES 0x8CDB
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES 0x8CDC
+ GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD
+ GL_COLOR_ATTACHMENT0_OES 0x8CE0
+ GL_DEPTH_ATTACHMENT_OES 0x8D00
+ GL_STENCIL_ATTACHMENT_OES 0x8D20
+ GL_FRAMEBUFFER_OES 0x8D40
+ GL_RENDERBUFFER_OES 0x8D41
+ GL_RENDERBUFFER_WIDTH_OES 0x8D42
+ GL_RENDERBUFFER_HEIGHT_OES 0x8D43
+ GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44
+ GL_STENCIL_INDEX1_OES 0x8D46
+ GL_STENCIL_INDEX4_OES 0x8D47
+ GL_STENCIL_INDEX8_OES 0x8D48
+ GL_RENDERBUFFER_RED_SIZE_OES 0x8D50
+ GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51
+ GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52
+ GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53
+ GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54
+ GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55
+ GL_RGB565_OES 0x8D62
+ void glBindFramebufferOES (GLenum target, GLuint framebuffer)
+ void glBindRenderbufferOES (GLenum target, GLuint renderbuffer)
+ GLenum glCheckFramebufferStatusOES (GLenum target)
+ void glDeleteFramebuffersOES (GLsizei n, const GLuint* framebuffers)
+ void glDeleteRenderbuffersOES (GLsizei n, const GLuint* renderbuffers)
+ void glFramebufferRenderbufferOES (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+ void glFramebufferTexture2DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+ void glGenFramebuffersOES (GLsizei n, GLuint* framebuffers)
+ void glGenRenderbuffersOES (GLsizei n, GLuint* renderbuffers)
+ void glGenerateMipmapOES (GLenum target)
+ void glGetFramebufferAttachmentParameterivOES (GLenum target, GLenum attachment, GLenum pname, GLint* params)
+ void glGetRenderbufferParameterivOES (GLenum target, GLenum pname, GLint* params)
+ GLboolean glIsFramebufferOES (GLuint framebuffer)
+ GLboolean glIsRenderbufferOES (GLuint renderbuffer)
+ void glRenderbufferStorageOES (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/GL_OES_geometry_point_size b/glew/auto/extensions/gl/GL_OES_geometry_point_size
new file mode 100644
index 0000000..cdaab67
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_geometry_point_size
@@ -0,0 +1,37 @@
+GL_OES_geometry_point_size
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_geometry_shader.txt
+GL_OES_geometry_point_size
+
+ GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+ GL_LINES_ADJACENCY_OES 0xA
+ GL_LINE_STRIP_ADJACENCY_OES 0xB
+ GL_TRIANGLES_ADJACENCY_OES 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_OES 0xD
+ GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+ GL_UNDEFINED_VERTEX_OES 0x8260
+ GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+ GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+ GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+ GL_PRIMITIVES_GENERATED_OES 0x8C87
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+ GL_GEOMETRY_SHADER_OES 0x8DD9
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+ GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+ GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+ GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
diff --git a/glew/auto/extensions/gl/GL_OES_geometry_shader b/glew/auto/extensions/gl/GL_OES_geometry_shader
new file mode 100644
index 0000000..997148b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_geometry_shader
@@ -0,0 +1,37 @@
+GL_OES_geometry_shader
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_geometry_shader.txt
+GL_OES_geometry_shader
+
+ GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+ GL_LINES_ADJACENCY_OES 0xA
+ GL_LINE_STRIP_ADJACENCY_OES 0xB
+ GL_TRIANGLES_ADJACENCY_OES 0xC
+ GL_TRIANGLE_STRIP_ADJACENCY_OES 0xD
+ GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+ GL_UNDEFINED_VERTEX_OES 0x8260
+ GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+ GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+ GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+ GL_PRIMITIVES_GENERATED_OES 0x8C87
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+ GL_GEOMETRY_SHADER_OES 0x8DD9
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+ GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+ GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+ GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+ GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
diff --git a/glew/auto/extensions/gl/GL_OES_get_program_binary b/glew/auto/extensions/gl/GL_OES_get_program_binary
new file mode 100644
index 0000000..7644673
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_get_program_binary
@@ -0,0 +1,9 @@
+GL_OES_get_program_binary
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_get_program_binary.txt
+GL_OES_get_program_binary
+
+ GL_PROGRAM_BINARY_LENGTH_OES 0x8741
+ GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
+ GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
+ void glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary)
+ void glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length)
diff --git a/glew/auto/extensions/gl/GL_OES_gpu_shader5 b/glew/auto/extensions/gl/GL_OES_gpu_shader5
new file mode 100644
index 0000000..714662e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_gpu_shader5
@@ -0,0 +1,4 @@
+GL_OES_gpu_shader5
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_gpu_shader5.txt
+GL_OES_gpu_shader5
+
diff --git a/glew/auto/extensions/gl/GL_OES_mapbuffer b/glew/auto/extensions/gl/GL_OES_mapbuffer
new file mode 100644
index 0000000..7738d3d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_mapbuffer
@@ -0,0 +1,11 @@
+GL_OES_mapbuffer
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_mapbuffer.txt
+GL_OES_mapbuffer
+
+ GL_WRITE_ONLY_OES 0x88B9
+ GL_BUFFER_ACCESS_OES 0x88BB
+ GL_BUFFER_MAPPED_OES 0x88BC
+ GL_BUFFER_MAP_POINTER_OES 0x88BD
+ void glGetBufferPointervOES (GLenum target, GLenum pname, void** params)
+ void * glMapBufferOES (GLenum target, GLenum access)
+ GLboolean glUnmapBufferOES (GLenum target)
diff --git a/glew/auto/extensions/gl/GL_OES_matrix_get b/glew/auto/extensions/gl/GL_OES_matrix_get
new file mode 100644
index 0000000..6fe9301
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_matrix_get
@@ -0,0 +1,7 @@
+GL_OES_matrix_get
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_get.txt
+GL_OES_matrix_get
+
+ GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898d
+ GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898e
+ GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898f
diff --git a/glew/auto/extensions/gl/GL_OES_matrix_palette b/glew/auto/extensions/gl/GL_OES_matrix_palette
new file mode 100644
index 0000000..d50bdf2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_matrix_palette
@@ -0,0 +1,24 @@
+GL_OES_matrix_palette
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_palette.txt
+GL_OES_matrix_palette
+
+ GL_MAX_VERTEX_UNITS_OES 0x86A4
+ GL_WEIGHT_ARRAY_TYPE_OES 0x86A9
+ GL_WEIGHT_ARRAY_STRIDE_OES 0x86AA
+ GL_WEIGHT_ARRAY_SIZE_OES 0x86AB
+ GL_WEIGHT_ARRAY_POINTER_OES 0x86AC
+ GL_WEIGHT_ARRAY_OES 0x86AD
+ GL_MATRIX_PALETTE_OES 0x8840
+ GL_MAX_PALETTE_MATRICES_OES 0x8842
+ GL_CURRENT_PALETTE_MATRIX_OES 0x8843
+ GL_MATRIX_INDEX_ARRAY_OES 0x8844
+ GL_MATRIX_INDEX_ARRAY_SIZE_OES 0x8846
+ GL_MATRIX_INDEX_ARRAY_TYPE_OES 0x8847
+ GL_MATRIX_INDEX_ARRAY_STRIDE_OES 0x8848
+ GL_MATRIX_INDEX_ARRAY_POINTER_OES 0x8849
+ GL_WEIGHT_ARRAY_BUFFER_BINDING_OES 0x889E
+ GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES 0x8B9E
+ void glCurrentPaletteMatrixOES (GLuint index)
+ void glLoadPaletteFromModelViewMatrixOES (void)
+ void glMatrixIndexPointerOES (GLint size, GLenum type, GLsizei stride, void *pointer)
+ void glWeightPointerOES (GLint size, GLenum type, GLsizei stride, void *pointer)
diff --git a/glew/auto/extensions/gl/GL_OES_packed_depth_stencil b/glew/auto/extensions/gl/GL_OES_packed_depth_stencil
new file mode 100644
index 0000000..89f530c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_packed_depth_stencil
@@ -0,0 +1,7 @@
+GL_OES_packed_depth_stencil
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_packed_depth_stencil.txt
+GL_OES_packed_depth_stencil
+
+ GL_DEPTH_STENCIL_OES 0x84F9
+ GL_UNSIGNED_INT_24_8_OES 0x84FA
+ GL_DEPTH24_STENCIL8_OES 0x88F0
diff --git a/glew/auto/extensions/gl/GL_OES_point_size_array b/glew/auto/extensions/gl/GL_OES_point_size_array
new file mode 100644
index 0000000..b964a47
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_point_size_array
@@ -0,0 +1,9 @@
+GL_OES_point_size_array
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_size_array.txt
+GL_OES_point_size_array
+
+ GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A
+ GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B
+ GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C
+ GL_POINT_SIZE_ARRAY_OES 0x8B9C
+ GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F
diff --git a/glew/auto/extensions/gl/GL_OES_point_sprite b/glew/auto/extensions/gl/GL_OES_point_sprite
new file mode 100644
index 0000000..d6f0a65
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_point_sprite
@@ -0,0 +1,6 @@
+GL_OES_point_sprite
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_sprite.txt
+GL_OES_point_sprite
+
+ GL_POINT_SPRITE_OES 0x8861
+ GL_COORD_REPLACE_OES 0x8862
diff --git a/glew/auto/extensions/gl/GL_OES_read_format b/glew/auto/extensions/gl/GL_OES_read_format
new file mode 100644
index 0000000..125b9eb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_read_format
@@ -0,0 +1,6 @@
+GL_OES_read_format
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_read_format.txt
+GL_OES_read_format
+
+ GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
diff --git a/glew/auto/extensions/gl/GL_OES_required_internalformat b/glew/auto/extensions/gl/GL_OES_required_internalformat
new file mode 100644
index 0000000..d74084c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_required_internalformat
@@ -0,0 +1,19 @@
+GL_OES_required_internalformat
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_required_internalformat.txt
+GL_OES_required_internalformat
+
+ GL_ALPHA8_OES 0x803C
+ GL_LUMINANCE8_OES 0x8040
+ GL_LUMINANCE4_ALPHA4_OES 0x8043
+ GL_LUMINANCE8_ALPHA8_OES 0x8045
+ GL_RGB8_OES 0x8051
+ GL_RGB10_EXT 0x8052
+ GL_RGBA4_OES 0x8056
+ GL_RGB5_A1_OES 0x8057
+ GL_RGBA8_OES 0x8058
+ GL_RGB10_A2_EXT 0x8059
+ GL_DEPTH_COMPONENT16_OES 0x81A5
+ GL_DEPTH_COMPONENT24_OES 0x81A6
+ GL_DEPTH_COMPONENT32_OES 0x81A7
+ GL_DEPTH24_STENCIL8_OES 0x88F0
+ GL_RGB565_OES 0x8D62
diff --git a/glew/auto/extensions/gl/GL_OES_rgb8_rgba8 b/glew/auto/extensions/gl/GL_OES_rgb8_rgba8
new file mode 100644
index 0000000..df75ea0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_rgb8_rgba8
@@ -0,0 +1,6 @@
+GL_OES_rgb8_rgba8
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_rgb8_rgba8.txt
+GL_OES_rgb8_rgba8
+
+ GL_RGB8_OES 0x8051
+ GL_RGBA8_OES 0x8058
diff --git a/glew/auto/extensions/gl/GL_OES_sample_shading b/glew/auto/extensions/gl/GL_OES_sample_shading
new file mode 100644
index 0000000..b27dc5b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_sample_shading
@@ -0,0 +1,7 @@
+GL_OES_sample_shading
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_sample_shading.txt
+GL_OES_sample_shading
+
+ GL_SAMPLE_SHADING_OES 0x8C36
+ GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37
+ void glMinSampleShadingOES (GLfloat value)
diff --git a/glew/auto/extensions/gl/GL_OES_sample_variables b/glew/auto/extensions/gl/GL_OES_sample_variables
new file mode 100644
index 0000000..db6fb7f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_sample_variables
@@ -0,0 +1,4 @@
+GL_OES_sample_variables
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_sample_variables.txt
+GL_OES_sample_variables
+
diff --git a/glew/auto/extensions/gl/GL_OES_shader_image_atomic b/glew/auto/extensions/gl/GL_OES_shader_image_atomic
new file mode 100644
index 0000000..09ab403
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_shader_image_atomic
@@ -0,0 +1,4 @@
+GL_OES_shader_image_atomic
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_image_atomic.txt
+GL_OES_shader_image_atomic
+
diff --git a/glew/auto/extensions/gl/GL_OES_shader_io_blocks b/glew/auto/extensions/gl/GL_OES_shader_io_blocks
new file mode 100644
index 0000000..08b24fa
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_shader_io_blocks
@@ -0,0 +1,4 @@
+GL_OES_shader_io_blocks
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_io_blocks.txt
+GL_OES_shader_io_blocks
+
diff --git a/glew/auto/extensions/gl/GL_OES_shader_multisample_interpolation b/glew/auto/extensions/gl/GL_OES_shader_multisample_interpolation
new file mode 100644
index 0000000..24b6919
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_shader_multisample_interpolation
@@ -0,0 +1,7 @@
+GL_OES_shader_multisample_interpolation
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_multisample_interpolation.txt
+GL_OES_shader_multisample_interpolation
+
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C
+ GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D
diff --git a/glew/auto/extensions/gl/GL_OES_single_precision b/glew/auto/extensions/gl/GL_OES_single_precision
new file mode 100644
index 0000000..8dc86ae
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_single_precision
@@ -0,0 +1,10 @@
+GL_OES_single_precision
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_single_precision.txt
+GL_OES_single_precision
+
+ void glClearDepthfOES (GLclampf depth)
+ void glClipPlanefOES (GLenum plane, const GLfloat* equation)
+ void glDepthRangefOES (GLclampf n, GLclampf f)
+ void glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)
+ void glGetClipPlanefOES (GLenum plane, GLfloat* equation)
+ void glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f)
diff --git a/glew/auto/extensions/gl/GL_OES_standard_derivatives b/glew/auto/extensions/gl/GL_OES_standard_derivatives
new file mode 100644
index 0000000..7dc1bd2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_standard_derivatives
@@ -0,0 +1,5 @@
+GL_OES_standard_derivatives
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_standard_derivatives.txt
+GL_OES_standard_derivatives
+
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
diff --git a/glew/auto/extensions/gl/GL_OES_stencil1 b/glew/auto/extensions/gl/GL_OES_stencil1
new file mode 100644
index 0000000..8464243
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_stencil1
@@ -0,0 +1,5 @@
+GL_OES_stencil1
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil1.txt
+GL_OES_stencil1
+
+ GL_STENCIL_INDEX1_OES 0x8D46
diff --git a/glew/auto/extensions/gl/GL_OES_stencil4 b/glew/auto/extensions/gl/GL_OES_stencil4
new file mode 100644
index 0000000..4ae2518
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_stencil4
@@ -0,0 +1,5 @@
+GL_OES_stencil4
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil4.txt
+GL_OES_stencil4
+
+ GL_STENCIL_INDEX4_OES 0x8D47
diff --git a/glew/auto/extensions/gl/GL_OES_stencil8 b/glew/auto/extensions/gl/GL_OES_stencil8
new file mode 100644
index 0000000..044da16
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_stencil8
@@ -0,0 +1,5 @@
+GL_OES_stencil8
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil8.txt
+GL_OES_stencil8
+
+ GL_STENCIL_INDEX8_OES 0x8D48
diff --git a/glew/auto/extensions/gl/GL_OES_surfaceless_context b/glew/auto/extensions/gl/GL_OES_surfaceless_context
new file mode 100644
index 0000000..4085999
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_surfaceless_context
@@ -0,0 +1,5 @@
+GL_OES_surfaceless_context
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_surfaceless_context.txt
+GL_OES_surfaceless_context
+
+ GL_FRAMEBUFFER_UNDEFINED_OES 0x8219
diff --git a/glew/auto/extensions/gl/GL_OES_tessellation_point_size b/glew/auto/extensions/gl/GL_OES_tessellation_point_size
new file mode 100644
index 0000000..8cebeae
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_tessellation_point_size
@@ -0,0 +1,47 @@
+GL_OES_tessellation_point_size
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_tessellation_shader.txt
+GL_OES_tessellation_point_size
+
+ GL_QUADS_OES 0x0007
+ GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+ GL_PATCHES_OES 0xE
+ GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+ GL_PATCH_VERTICES_OES 0x8E72
+ GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+ GL_TESS_GEN_MODE_OES 0x8E76
+ GL_TESS_GEN_SPACING_OES 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+ GL_TESS_GEN_POINT_MODE_OES 0x8E79
+ GL_ISOLINES_OES 0x8E7A
+ GL_FRACTIONAL_ODD_OES 0x8E7B
+ GL_FRACTIONAL_EVEN_OES 0x8E7C
+ GL_MAX_PATCH_VERTICES_OES 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+ GL_TESS_EVALUATION_SHADER_OES 0x8E87
+ GL_TESS_CONTROL_SHADER_OES 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+ GL_IS_PER_PATCH_OES 0x92E7
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
diff --git a/glew/auto/extensions/gl/GL_OES_tessellation_shader b/glew/auto/extensions/gl/GL_OES_tessellation_shader
new file mode 100644
index 0000000..461893e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_tessellation_shader
@@ -0,0 +1,47 @@
+GL_OES_tessellation_shader
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_tessellation_shader.txt
+GL_OES_tessellation_shader
+
+ GL_QUADS_OES 0x0007
+ GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+ GL_PATCHES_OES 0xE
+ GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+ GL_PATCH_VERTICES_OES 0x8E72
+ GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+ GL_TESS_GEN_MODE_OES 0x8E76
+ GL_TESS_GEN_SPACING_OES 0x8E77
+ GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+ GL_TESS_GEN_POINT_MODE_OES 0x8E79
+ GL_ISOLINES_OES 0x8E7A
+ GL_FRACTIONAL_ODD_OES 0x8E7B
+ GL_FRACTIONAL_EVEN_OES 0x8E7C
+ GL_MAX_PATCH_VERTICES_OES 0x8E7D
+ GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+ GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+ GL_TESS_EVALUATION_SHADER_OES 0x8E87
+ GL_TESS_CONTROL_SHADER_OES 0x8E88
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+ GL_IS_PER_PATCH_OES 0x92E7
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
diff --git a/glew/auto/extensions/gl/GL_OES_texture_3D b/glew/auto/extensions/gl/GL_OES_texture_3D
new file mode 100644
index 0000000..4be0473
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_3D
@@ -0,0 +1,14 @@
+GL_OES_texture_3D
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_3D.txt
+GL_OES_texture_3D
+
+ GL_TEXTURE_BINDING_3D_OES 0x806A
+ GL_TEXTURE_3D_OES 0x806F
+ GL_TEXTURE_WRAP_R_OES 0x8072
+ GL_MAX_3D_TEXTURE_SIZE_OES 0x8073
+ void glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+ void glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+ void glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+ void glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+ void glTexImage3DOES (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_border_clamp b/glew/auto/extensions/gl/GL_OES_texture_border_clamp
new file mode 100644
index 0000000..e642831
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_border_clamp
@@ -0,0 +1,14 @@
+GL_OES_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_border_clamp.txt
+GL_OES_texture_border_clamp
+
+ GL_TEXTURE_BORDER_COLOR_OES 0x1004
+ GL_CLAMP_TO_BORDER_OES 0x812D
+ void glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint* params)
+ void glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint* params)
+ void glGetTexParameterIivOES (GLenum target, GLenum pname, GLint* params)
+ void glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint* params)
+ void glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint* params)
+ void glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint* params)
+ void glTexParameterIivOES (GLenum target, GLenum pname, const GLint* params)
+ void glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint* params)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_buffer b/glew/auto/extensions/gl/GL_OES_texture_buffer
new file mode 100644
index 0000000..1dde1a8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_buffer
@@ -0,0 +1,20 @@
+GL_OES_texture_buffer
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_buffer.txt
+GL_OES_texture_buffer
+
+ GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A
+ GL_TEXTURE_BUFFER_OES 0x8C2A
+ GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B
+ GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D
+ GL_SAMPLER_BUFFER_OES 0x8DC2
+ GL_INT_SAMPLER_BUFFER_OES 0x8DD0
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8
+ GL_IMAGE_BUFFER_OES 0x9051
+ GL_INT_IMAGE_BUFFER_OES 0x905C
+ GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067
+ GL_TEXTURE_BUFFER_OFFSET_OES 0x919D
+ GL_TEXTURE_BUFFER_SIZE_OES 0x919E
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F
+ void glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer)
+ void glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_compression_astc b/glew/auto/extensions/gl/GL_OES_texture_compression_astc
new file mode 100644
index 0000000..c4a49e6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_compression_astc
@@ -0,0 +1,52 @@
+GL_OES_texture_compression_astc
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt
+GL_OES_texture_compression_astc
+
+ GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+ GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+ GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+ GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+ GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+ GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+ GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+ GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+ GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+ GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+ GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+ GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+ GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+ GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+ GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+ GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+ GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+ GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+ GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+ GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+ GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+ GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+ GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+ GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
diff --git a/glew/auto/extensions/gl/GL_OES_texture_cube_map b/glew/auto/extensions/gl/GL_OES_texture_cube_map
new file mode 100644
index 0000000..b4770b4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_cube_map
@@ -0,0 +1,26 @@
+GL_OES_texture_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_cube_map.txt
+GL_OES_texture_cube_map
+
+ GL_TEXTURE_GEN_MODE_OES 0x2500
+ GL_NORMAL_MAP_OES 0x8511
+ GL_REFLECTION_MAP_OES 0x8512
+ GL_TEXTURE_CUBE_MAP_OES 0x8513
+ GL_TEXTURE_BINDING_CUBE_MAP_OES 0x8514
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES 0x8515
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES 0x8516
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES 0x8517
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES 0x8518
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES 0x8519
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES 0x851A
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES 0x851C
+ GL_TEXTURE_GEN_STR_OES 0x8D60
+ void glGetTexGenfvOES (GLenum coord, GLenum pname, GLfloat* params)
+ void glGetTexGenivOES (GLenum coord, GLenum pname, GLint* params)
+ void glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed* params)
+ void glTexGenfOES (GLenum coord, GLenum pname, GLfloat param)
+ void glTexGenfvOES (GLenum coord, GLenum pname, const GLfloat* params)
+ void glTexGeniOES (GLenum coord, GLenum pname, GLint param)
+ void glTexGenivOES (GLenum coord, GLenum pname, const GLint* params)
+ void glTexGenxOES (GLenum coord, GLenum pname, GLfixed param)
+ void glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed* params)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_cube_map_array b/glew/auto/extensions/gl/GL_OES_texture_cube_map_array
new file mode 100644
index 0000000..6f0d225
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_cube_map_array
@@ -0,0 +1,13 @@
+GL_OES_texture_cube_map_array
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_cube_map_array.txt
+GL_OES_texture_cube_map_array
+
+ GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A
+ GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F
+ GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054
+ GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A
diff --git a/glew/auto/extensions/gl/GL_OES_texture_env_crossbar b/glew/auto/extensions/gl/GL_OES_texture_env_crossbar
new file mode 100644
index 0000000..11ed8b0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_env_crossbar
@@ -0,0 +1,4 @@
+GL_OES_texture_env_crossbar
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_env_crossbar.txt
+GL_OES_texture_env_crossbar
+
diff --git a/glew/auto/extensions/gl/GL_OES_texture_mirrored_repeat b/glew/auto/extensions/gl/GL_OES_texture_mirrored_repeat
new file mode 100644
index 0000000..2375ae7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_mirrored_repeat
@@ -0,0 +1,5 @@
+GL_OES_texture_mirrored_repeat
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_mirrored_repeat.txt
+GL_OES_texture_mirrored_repeat
+
+ GL_MIRRORED_REPEAT 0x8370
diff --git a/glew/auto/extensions/gl/GL_OES_texture_npot b/glew/auto/extensions/gl/GL_OES_texture_npot
new file mode 100644
index 0000000..76a008d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_npot
@@ -0,0 +1,4 @@
+GL_OES_texture_npot
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_npot.txt
+GL_OES_texture_npot
+
diff --git a/glew/auto/extensions/gl/GL_OES_texture_stencil8 b/glew/auto/extensions/gl/GL_OES_texture_stencil8
new file mode 100644
index 0000000..70c4db1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_stencil8
@@ -0,0 +1,6 @@
+GL_OES_texture_stencil8
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_stencil8.txt
+GL_OES_texture_stencil8
+
+ GL_STENCIL_INDEX 0x1901
+ GL_STENCIL_INDEX8 0x8D48
diff --git a/glew/auto/extensions/gl/GL_OES_texture_storage_multisample_2d_array b/glew/auto/extensions/gl/GL_OES_texture_storage_multisample_2d_array
new file mode 100644
index 0000000..8e6e121
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_storage_multisample_2d_array
@@ -0,0 +1,10 @@
+GL_OES_texture_storage_multisample_2d_array
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_storage_multisample_2d_array.txt
+GL_OES_texture_storage_multisample_2d_array
+
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105
+ GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B
+ GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D
+ void glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
diff --git a/glew/auto/extensions/gl/GL_OES_texture_view b/glew/auto/extensions/gl/GL_OES_texture_view
new file mode 100644
index 0000000..b6cb050
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_texture_view
@@ -0,0 +1,10 @@
+GL_OES_texture_view
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_view.txt
+GL_OES_texture_view
+
+ GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB
+ GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC
+ GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD
+ GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE
+ GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+ void glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
diff --git a/glew/auto/extensions/gl/GL_OES_vertex_array_object b/glew/auto/extensions/gl/GL_OES_vertex_array_object
new file mode 100644
index 0000000..670ab3a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_vertex_array_object
@@ -0,0 +1,9 @@
+GL_OES_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_array_object.txt
+GL_OES_vertex_array_object
+
+ GL_VERTEX_ARRAY_BINDING_OES 0x85B5
+ void glBindVertexArrayOES (GLuint array)
+ void glDeleteVertexArraysOES (GLsizei n, const GLuint* arrays)
+ void glGenVertexArraysOES (GLsizei n, GLuint* arrays)
+ GLboolean glIsVertexArrayOES (GLuint array)
diff --git a/glew/auto/extensions/gl/GL_OES_vertex_half_float b/glew/auto/extensions/gl/GL_OES_vertex_half_float
new file mode 100644
index 0000000..45888ec
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_vertex_half_float
@@ -0,0 +1,5 @@
+GL_OES_vertex_half_float
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_half_float.txt
+GL_OES_vertex_half_float
+
+ GL_HALF_FLOAT_OES 0x8D61
diff --git a/glew/auto/extensions/gl/GL_OES_vertex_type_10_10_10_2 b/glew/auto/extensions/gl/GL_OES_vertex_type_10_10_10_2
new file mode 100644
index 0000000..9624b2b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OES_vertex_type_10_10_10_2
@@ -0,0 +1,6 @@
+GL_OES_vertex_type_10_10_10_2
+https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_type_10_10_10_2.txt
+GL_OES_vertex_type_10_10_10_2
+
+ GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6
+ GL_INT_10_10_10_2_OES 0x8DF7
diff --git a/glew/auto/extensions/gl/GL_OML_interlace b/glew/auto/extensions/gl/GL_OML_interlace
new file mode 100644
index 0000000..f79ad81
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OML_interlace
@@ -0,0 +1,6 @@
+GL_OML_interlace
+https://www.khronos.org/registry/OpenGL/extensions/OML/OML_interlace.txt
+GL_OML_interlace
+
+ GL_INTERLACE_OML 0x8980
+ GL_INTERLACE_READ_OML 0x8981
diff --git a/glew/auto/extensions/gl/GL_OML_resample b/glew/auto/extensions/gl/GL_OML_resample
new file mode 100644
index 0000000..3f1428c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OML_resample
@@ -0,0 +1,10 @@
+GL_OML_resample
+https://www.khronos.org/registry/OpenGL/extensions/OML/OML_resample.txt
+GL_OML_resample
+
+ GL_PACK_RESAMPLE_OML 0x8984
+ GL_UNPACK_RESAMPLE_OML 0x8985
+ GL_RESAMPLE_REPLICATE_OML 0x8986
+ GL_RESAMPLE_ZERO_FILL_OML 0x8987
+ GL_RESAMPLE_AVERAGE_OML 0x8988
+ GL_RESAMPLE_DECIMATE_OML 0x8989
diff --git a/glew/auto/extensions/gl/GL_OML_subsample b/glew/auto/extensions/gl/GL_OML_subsample
new file mode 100644
index 0000000..f102246
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OML_subsample
@@ -0,0 +1,6 @@
+GL_OML_subsample
+https://www.khronos.org/registry/OpenGL/extensions/OML/OML_subsample.txt
+GL_OML_subsample
+
+ GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
+ GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
diff --git a/glew/auto/extensions/gl/GL_OVR_multiview b/glew/auto/extensions/gl/GL_OVR_multiview
new file mode 100644
index 0000000..e238930
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OVR_multiview
@@ -0,0 +1,10 @@
+GL_OVR_multiview
+https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview.txt
+GL_OVR_multiview
+
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
+ GL_MAX_VIEWS_OVR 0x9631
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
+ GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
+ void glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews)
+ void glNamedFramebufferTextureMultiviewOVR (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews)
diff --git a/glew/auto/extensions/gl/GL_OVR_multiview2 b/glew/auto/extensions/gl/GL_OVR_multiview2
new file mode 100644
index 0000000..2cfd992
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OVR_multiview2
@@ -0,0 +1,4 @@
+GL_OVR_multiview2
+https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview2.txt
+GL_OVR_multiview2
+
diff --git a/glew/auto/extensions/gl/GL_OVR_multiview_multisampled_render_to_texture b/glew/auto/extensions/gl/GL_OVR_multiview_multisampled_render_to_texture
new file mode 100644
index 0000000..65ac7e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_OVR_multiview_multisampled_render_to_texture
@@ -0,0 +1,5 @@
+GL_OVR_multiview_multisampled_render_to_texture
+https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt
+GL_OVR_multiview_multisampled_render_to_texture
+
+ void glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews)
diff --git a/glew/auto/extensions/gl/GL_PGI_misc_hints b/glew/auto/extensions/gl/GL_PGI_misc_hints
new file mode 100644
index 0000000..42ba179
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_PGI_misc_hints
@@ -0,0 +1,24 @@
+GL_PGI_misc_hints
+https://www.khronos.org/registry/OpenGL/extensions/PGI/PGI_misc_hints.txt
+GL_PGI_misc_hints
+
+ GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000
+ GL_CONSERVE_MEMORY_HINT_PGI 107005
+ GL_RECLAIM_MEMORY_HINT_PGI 107006
+ GL_NATIVE_GRAPHICS_HANDLE_PGI 107010
+ GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011
+ GL_NATIVE_GRAPHICS_END_HINT_PGI 107012
+ GL_ALWAYS_FAST_HINT_PGI 107020
+ GL_ALWAYS_SOFT_HINT_PGI 107021
+ GL_ALLOW_DRAW_OBJ_HINT_PGI 107022
+ GL_ALLOW_DRAW_WIN_HINT_PGI 107023
+ GL_ALLOW_DRAW_FRG_HINT_PGI 107024
+ GL_ALLOW_DRAW_MEM_HINT_PGI 107025
+ GL_STRICT_DEPTHFUNC_HINT_PGI 107030
+ GL_STRICT_LIGHTING_HINT_PGI 107031
+ GL_STRICT_SCISSOR_HINT_PGI 107032
+ GL_FULL_STIPPLE_HINT_PGI 107033
+ GL_CLIP_NEAR_HINT_PGI 107040
+ GL_CLIP_FAR_HINT_PGI 107041
+ GL_WIDE_LINE_HINT_PGI 107042
+ GL_BACK_NORMALS_HINT_PGI 107043
diff --git a/glew/auto/extensions/gl/GL_PGI_vertex_hints b/glew/auto/extensions/gl/GL_PGI_vertex_hints
new file mode 100644
index 0000000..3942156
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_PGI_vertex_hints
@@ -0,0 +1,26 @@
+GL_PGI_vertex_hints
+https://www.khronos.org/registry/OpenGL/extensions/PGI/PGI_vertex_hints.txt
+GL_PGI_vertex_hints
+
+ GL_VERTEX23_BIT_PGI 0x00000004
+ GL_VERTEX4_BIT_PGI 0x00000008
+ GL_COLOR3_BIT_PGI 0x00010000
+ GL_COLOR4_BIT_PGI 0x00020000
+ GL_EDGEFLAG_BIT_PGI 0x00040000
+ GL_INDEX_BIT_PGI 0x00080000
+ GL_MAT_AMBIENT_BIT_PGI 0x00100000
+ GL_VERTEX_DATA_HINT_PGI 107050
+ GL_VERTEX_CONSISTENT_HINT_PGI 107051
+ GL_MATERIAL_SIDE_HINT_PGI 107052
+ GL_MAX_VERTEX_HINT_PGI 107053
+ GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
+ GL_MAT_DIFFUSE_BIT_PGI 0x00400000
+ GL_MAT_EMISSION_BIT_PGI 0x00800000
+ GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
+ GL_MAT_SHININESS_BIT_PGI 0x02000000
+ GL_MAT_SPECULAR_BIT_PGI 0x04000000
+ GL_NORMAL_BIT_PGI 0x08000000
+ GL_TEXCOORD1_BIT_PGI 0x10000000
+ GL_TEXCOORD2_BIT_PGI 0x20000000
+ GL_TEXCOORD3_BIT_PGI 0x40000000
+ GL_TEXCOORD4_BIT_PGI 0x80000000
diff --git a/glew/auto/extensions/gl/GL_QCOM_YUV_texture_gather b/glew/auto/extensions/gl/GL_QCOM_YUV_texture_gather
new file mode 100644
index 0000000..bfa04de
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_YUV_texture_gather
@@ -0,0 +1,4 @@
+GL_QCOM_YUV_texture_gather
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_YUV_texture_gather.txt
+GL_QCOM_YUV_texture_gather
+
diff --git a/glew/auto/extensions/gl/GL_QCOM_alpha_test b/glew/auto/extensions/gl/GL_QCOM_alpha_test
new file mode 100644
index 0000000..ac655e2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_alpha_test
@@ -0,0 +1,8 @@
+GL_QCOM_alpha_test
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_alpha_test.txt
+GL_QCOM_alpha_test
+
+ GL_ALPHA_TEST_QCOM 0x0BC0
+ GL_ALPHA_TEST_FUNC_QCOM 0x0BC1
+ GL_ALPHA_TEST_REF_QCOM 0x0BC2
+ void glAlphaFuncQCOM (GLenum func, GLclampf ref)
diff --git a/glew/auto/extensions/gl/GL_QCOM_binning_control b/glew/auto/extensions/gl/GL_QCOM_binning_control
new file mode 100644
index 0000000..697e5fc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_binning_control
@@ -0,0 +1,9 @@
+GL_QCOM_binning_control
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_binning_control.txt
+GL_QCOM_binning_control
+
+ GL_DONT_CARE 0x1100
+ GL_BINNING_CONTROL_HINT_QCOM 0x8FB0
+ GL_CPU_OPTIMIZED_QCOM 0x8FB1
+ GL_GPU_OPTIMIZED_QCOM 0x8FB2
+ GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3
diff --git a/glew/auto/extensions/gl/GL_QCOM_driver_control b/glew/auto/extensions/gl/GL_QCOM_driver_control
new file mode 100644
index 0000000..5d7c3eb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_driver_control
@@ -0,0 +1,8 @@
+GL_QCOM_driver_control
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_driver_control.txt
+GL_QCOM_driver_control
+
+ void glDisableDriverControlQCOM (GLuint driverControl)
+ void glEnableDriverControlQCOM (GLuint driverControl)
+ void glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar *driverControlString)
+ void glGetDriverControlsQCOM (GLint* num, GLsizei size, GLuint *driverControls)
diff --git a/glew/auto/extensions/gl/GL_QCOM_extended_get b/glew/auto/extensions/gl/GL_QCOM_extended_get
new file mode 100644
index 0000000..af400f2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_extended_get
@@ -0,0 +1,23 @@
+GL_QCOM_extended_get
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_extended_get.txt
+GL_QCOM_extended_get
+
+ GL_TEXTURE_WIDTH_QCOM 0x8BD2
+ GL_TEXTURE_HEIGHT_QCOM 0x8BD3
+ GL_TEXTURE_DEPTH_QCOM 0x8BD4
+ GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5
+ GL_TEXTURE_FORMAT_QCOM 0x8BD6
+ GL_TEXTURE_TYPE_QCOM 0x8BD7
+ GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8
+ GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9
+ GL_TEXTURE_TARGET_QCOM 0x8BDA
+ GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB
+ GL_STATE_RESTORE 0x8BDC
+ void glExtGetBufferPointervQCOM (GLenum target, void** params)
+ void glExtGetBuffersQCOM (GLuint* buffers, GLint maxBuffers, GLint* numBuffers)
+ void glExtGetFramebuffersQCOM (GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers)
+ void glExtGetRenderbuffersQCOM (GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers)
+ void glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params)
+ void glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels)
+ void glExtGetTexturesQCOM (GLuint* textures, GLint maxTextures, GLint* numTextures)
+ void glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param)
diff --git a/glew/auto/extensions/gl/GL_QCOM_extended_get2 b/glew/auto/extensions/gl/GL_QCOM_extended_get2
new file mode 100644
index 0000000..c50e984
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_extended_get2
@@ -0,0 +1,8 @@
+GL_QCOM_extended_get2
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_extended_get2.txt
+GL_QCOM_extended_get2
+
+ void glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar* source, GLint* length)
+ void glExtGetProgramsQCOM (GLuint* programs, GLint maxPrograms, GLint* numPrograms)
+ void glExtGetShadersQCOM (GLuint* shaders, GLint maxShaders, GLint* numShaders)
+ GLboolean glExtIsProgramBinaryQCOM (GLuint program)
diff --git a/glew/auto/extensions/gl/GL_QCOM_frame_extrapolation b/glew/auto/extensions/gl/GL_QCOM_frame_extrapolation
new file mode 100644
index 0000000..c6dbc4c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_frame_extrapolation
@@ -0,0 +1,5 @@
+GL_QCOM_frame_extrapolation
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_frame_extrapolation.txt
+GL_QCOM_frame_extrapolation
+
+ void glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor)
diff --git a/glew/auto/extensions/gl/GL_QCOM_framebuffer_foveated b/glew/auto/extensions/gl/GL_QCOM_framebuffer_foveated
new file mode 100644
index 0000000..c3abd2c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_framebuffer_foveated
@@ -0,0 +1,8 @@
+GL_QCOM_framebuffer_foveated
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_framebuffer_foveated.txt
+GL_QCOM_framebuffer_foveated
+
+ GL_FOVEATION_ENABLE_BIT_QCOM 0x1
+ GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x2
+ void glFramebufferFoveationConfigQCOM (GLuint fbo, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint* providedFeatures)
+ void glFramebufferFoveationParametersQCOM (GLuint fbo, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea)
diff --git a/glew/auto/extensions/gl/GL_QCOM_motion_estimation b/glew/auto/extensions/gl/GL_QCOM_motion_estimation
new file mode 100644
index 0000000..21aa343
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_motion_estimation
@@ -0,0 +1,8 @@
+GL_QCOM_motion_estimation
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_motion_estimation.txt
+GL_QCOM_motion_estimation
+
+ GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90
+ GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91
+ void glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output)
+ void glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask)
diff --git a/glew/auto/extensions/gl/GL_QCOM_perfmon_global_mode b/glew/auto/extensions/gl/GL_QCOM_perfmon_global_mode
new file mode 100644
index 0000000..5b81152
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_perfmon_global_mode
@@ -0,0 +1,5 @@
+GL_QCOM_perfmon_global_mode
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_performance_monitor_global_mode.txt
+GL_QCOM_perfmon_global_mode
+
+ GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0
diff --git a/glew/auto/extensions/gl/GL_QCOM_render_shared_exponent b/glew/auto/extensions/gl/GL_QCOM_render_shared_exponent
new file mode 100644
index 0000000..d97878e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_render_shared_exponent
@@ -0,0 +1,5 @@
+GL_QCOM_render_shared_exponent
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_render_shared_exponent.txt
+GL_QCOM_render_shared_exponent
+
+ GL_RGB9_E5 0x8C3D
diff --git a/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_noncoherent b/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_noncoherent
new file mode 100644
index 0000000..1638eac
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_noncoherent
@@ -0,0 +1,6 @@
+GL_QCOM_shader_framebuffer_fetch_noncoherent
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shader_framebuffer_fetch_noncoherent.txt
+GL_QCOM_shader_framebuffer_fetch_noncoherent
+
+ GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2
+ void glFramebufferFetchBarrierQCOM (void)
diff --git a/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_rate b/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_rate
new file mode 100644
index 0000000..80f24d6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_shader_framebuffer_fetch_rate
@@ -0,0 +1,4 @@
+GL_QCOM_shader_framebuffer_fetch_rate
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shader_framebuffer_fetch_rate.txt
+GL_QCOM_shader_framebuffer_fetch_rate
+
diff --git a/glew/auto/extensions/gl/GL_QCOM_shading_rate b/glew/auto/extensions/gl/GL_QCOM_shading_rate
new file mode 100644
index 0000000..902995e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_shading_rate
@@ -0,0 +1,13 @@
+GL_QCOM_shading_rate
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shading_rate.txt
+GL_QCOM_shading_rate
+
+ GL_SHADING_RATE_QCOM 0x96A4
+ GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5
+ GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6
+ GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7
+ GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8
+ GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9
+ GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC
+ GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE
+ void glShadingRateQCOM (GLenum rate)
diff --git a/glew/auto/extensions/gl/GL_QCOM_texture_foveated b/glew/auto/extensions/gl/GL_QCOM_texture_foveated
new file mode 100644
index 0000000..65a1714
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_texture_foveated
@@ -0,0 +1,12 @@
+GL_QCOM_texture_foveated
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated.txt
+GL_QCOM_texture_foveated
+
+ GL_FOVEATION_ENABLE_BIT_QCOM 0x1
+ GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x2
+ GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB
+ GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC
+ GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD
+ GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE
+ GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF
+ void glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea)
diff --git a/glew/auto/extensions/gl/GL_QCOM_texture_foveated2 b/glew/auto/extensions/gl/GL_QCOM_texture_foveated2
new file mode 100644
index 0000000..c37de07
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_texture_foveated2
@@ -0,0 +1,5 @@
+GL_QCOM_texture_foveated2
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated2.txt
+GL_QCOM_texture_foveated2
+
+ GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0
diff --git a/glew/auto/extensions/gl/GL_QCOM_texture_foveated_subsampled_layout b/glew/auto/extensions/gl/GL_QCOM_texture_foveated_subsampled_layout
new file mode 100644
index 0000000..7ba92bc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_texture_foveated_subsampled_layout
@@ -0,0 +1,6 @@
+GL_QCOM_texture_foveated_subsampled_layout
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated_subsampled_layout.txt
+GL_QCOM_texture_foveated_subsampled_layout
+
+ GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x4
+ GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1
diff --git a/glew/auto/extensions/gl/GL_QCOM_tiled_rendering b/glew/auto/extensions/gl/GL_QCOM_tiled_rendering
new file mode 100644
index 0000000..4ee7b42
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_tiled_rendering
@@ -0,0 +1,38 @@
+GL_QCOM_tiled_rendering
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_tiled_rendering.txt
+GL_QCOM_tiled_rendering
+
+ GL_COLOR_BUFFER_BIT0_QCOM 0x00000001
+ GL_COLOR_BUFFER_BIT1_QCOM 0x00000002
+ GL_COLOR_BUFFER_BIT2_QCOM 0x00000004
+ GL_COLOR_BUFFER_BIT3_QCOM 0x00000008
+ GL_COLOR_BUFFER_BIT4_QCOM 0x00000010
+ GL_COLOR_BUFFER_BIT5_QCOM 0x00000020
+ GL_COLOR_BUFFER_BIT6_QCOM 0x00000040
+ GL_COLOR_BUFFER_BIT7_QCOM 0x00000080
+ GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100
+ GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200
+ GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400
+ GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800
+ GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000
+ GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000
+ GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000
+ GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000
+ GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000
+ GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000
+ GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000
+ GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000
+ GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000
+ GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000
+ GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000
+ GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000
+ GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000
+ GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000
+ GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000
+ GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000
+ GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000
+ GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000
+ GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000
+ GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000
+ void glEndTilingQCOM (GLbitfield preserveMask)
+ void glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
diff --git a/glew/auto/extensions/gl/GL_QCOM_writeonly_rendering b/glew/auto/extensions/gl/GL_QCOM_writeonly_rendering
new file mode 100644
index 0000000..89de602
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_QCOM_writeonly_rendering
@@ -0,0 +1,5 @@
+GL_QCOM_writeonly_rendering
+https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_writeonly_rendering.txt
+GL_QCOM_writeonly_rendering
+
+ GL_WRITEONLY_RENDERING_QCOM 0x8823
diff --git a/glew/auto/extensions/gl/GL_REGAL_ES1_0_compatibility b/glew/auto/extensions/gl/GL_REGAL_ES1_0_compatibility
new file mode 100644
index 0000000..6742fe0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_ES1_0_compatibility
@@ -0,0 +1,36 @@
+GL_REGAL_ES1_0_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/ES1_0_compatibility.txt
+GL_REGAL_ES1_0_compatibility
+
+ void glAlphaFuncx (GLenum func, GLclampx ref)
+ void glClearColorx (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+ void glClearDepthx (GLclampx depth)
+ void glColor4x (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+ void glDepthRangex (GLclampx zNear, GLclampx zFar)
+ void glFogx (GLenum pname, GLfixed param)
+ void glFogxv (GLenum pname, const GLfixed* params)
+ void glFrustumf (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+ void glFrustumx (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+ void glLightModelx (GLenum pname, GLfixed param)
+ void glLightModelxv (GLenum pname, const GLfixed* params)
+ void glLightx (GLenum light, GLenum pname, GLfixed param)
+ void glLightxv (GLenum light, GLenum pname, const GLfixed* params)
+ void glLineWidthx (GLfixed width)
+ void glLoadMatrixx (const GLfixed* m)
+ void glMaterialx (GLenum face, GLenum pname, GLfixed param)
+ void glMaterialxv (GLenum face, GLenum pname, const GLfixed* params)
+ void glMultMatrixx (const GLfixed* m)
+ void glMultiTexCoord4x (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+ void glNormal3x (GLfixed nx, GLfixed ny, GLfixed nz)
+ void glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+ void glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+ void glPointSizex (GLfixed size)
+ void glPolygonOffsetx (GLfixed factor, GLfixed units)
+ void glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+ void glSampleCoveragex (GLclampx value, GLboolean invert)
+ void glScalex (GLfixed x, GLfixed y, GLfixed z)
+ void glTexEnvx (GLenum target, GLenum pname, GLfixed param)
+ void glTexEnvxv (GLenum target, GLenum pname, const GLfixed* params)
+ void glTexParameterx (GLenum target, GLenum pname, GLfixed param)
+ void glTranslatex (GLfixed x, GLfixed y, GLfixed z)
+ typedef int GLclampx
diff --git a/glew/auto/extensions/gl/GL_REGAL_ES1_1_compatibility b/glew/auto/extensions/gl/GL_REGAL_ES1_1_compatibility
new file mode 100644
index 0000000..c9e7215
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_ES1_1_compatibility
@@ -0,0 +1,17 @@
+GL_REGAL_ES1_1_compatibility
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/ES1_1_compatibility.txt
+GL_REGAL_ES1_1_compatibility
+
+ void glClipPlanef (GLenum plane, const GLfloat* equation)
+ void glClipPlanex (GLenum plane, const GLfixed* equation)
+ void glGetClipPlanef (GLenum pname, GLfloat eqn[4])
+ void glGetClipPlanex (GLenum pname, GLfixed eqn[4])
+ void glGetFixedv (GLenum pname, GLfixed* params)
+ void glGetLightxv (GLenum light, GLenum pname, GLfixed* params)
+ void glGetMaterialxv (GLenum face, GLenum pname, GLfixed* params)
+ void glGetTexEnvxv (GLenum env, GLenum pname, GLfixed* params)
+ void glGetTexParameterxv (GLenum target, GLenum pname, GLfixed* params)
+ void glPointParameterx (GLenum pname, GLfixed param)
+ void glPointParameterxv (GLenum pname, const GLfixed* params)
+ void glPointSizePointerOES (GLenum type, GLsizei stride, const void *pointer)
+ void glTexParameterxv (GLenum target, GLenum pname, const GLfixed* params)
diff --git a/glew/auto/extensions/gl/GL_REGAL_enable b/glew/auto/extensions/gl/GL_REGAL_enable
new file mode 100644
index 0000000..20f4ad6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_enable
@@ -0,0 +1,14 @@
+GL_REGAL_enable
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/enable.txt
+GL_REGAL_enable
+
+ GL_ERROR_REGAL 0x9322
+ GL_DEBUG_REGAL 0x9323
+ GL_LOG_REGAL 0x9324
+ GL_EMULATION_REGAL 0x9325
+ GL_DRIVER_REGAL 0x9326
+ GL_MISSING_REGAL 0x9360
+ GL_TRACE_REGAL 0x9361
+ GL_CACHE_REGAL 0x9362
+ GL_CODE_REGAL 0x9363
+ GL_STATISTICS_REGAL 0x9364
diff --git a/glew/auto/extensions/gl/GL_REGAL_error_string b/glew/auto/extensions/gl/GL_REGAL_error_string
new file mode 100644
index 0000000..fea8476
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_error_string
@@ -0,0 +1,5 @@
+GL_REGAL_error_string
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/error_string.txt
+GL_REGAL_error_string
+
+ const GLchar* glErrorStringREGAL (GLenum error)
diff --git a/glew/auto/extensions/gl/GL_REGAL_extension_query b/glew/auto/extensions/gl/GL_REGAL_extension_query
new file mode 100644
index 0000000..8cbcd53
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_extension_query
@@ -0,0 +1,6 @@
+GL_REGAL_extension_query
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/extension_query.txt
+GL_REGAL_extension_query
+
+ GLboolean glGetExtensionREGAL (const GLchar* ext)
+ GLboolean glIsSupportedREGAL (const GLchar* ext)
diff --git a/glew/auto/extensions/gl/GL_REGAL_log b/glew/auto/extensions/gl/GL_REGAL_log
new file mode 100644
index 0000000..f67a302
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_log
@@ -0,0 +1,15 @@
+GL_REGAL_log
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/log.txt
+GL_REGAL_log
+
+ GL_LOG_ERROR_REGAL 0x9319
+ GL_LOG_WARNING_REGAL 0x931A
+ GL_LOG_INFO_REGAL 0x931B
+ GL_LOG_APP_REGAL 0x931C
+ GL_LOG_DRIVER_REGAL 0x931D
+ GL_LOG_INTERNAL_REGAL 0x931E
+ GL_LOG_DEBUG_REGAL 0x931F
+ GL_LOG_STATUS_REGAL 0x9320
+ GL_LOG_HTTP_REGAL 0x9321
+ void glLogMessageCallbackREGAL (GLLOGPROCREGAL callback)
+ typedef void (APIENTRY *GLLOGPROCREGAL)(GLenum stream, GLsizei length, const GLchar *message, void *context)
diff --git a/glew/auto/extensions/gl/GL_REGAL_proc_address b/glew/auto/extensions/gl/GL_REGAL_proc_address
new file mode 100644
index 0000000..26271dd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REGAL_proc_address
@@ -0,0 +1,5 @@
+GL_REGAL_proc_address
+https://www.khronos.org/registry/OpenGL/extensions/REGAL/proc_address.txt
+GL_REGAL_proc_address
+
+ void * glGetProcAddressREGAL (const GLchar *name)
diff --git a/glew/auto/extensions/gl/GL_REND_screen_coordinates b/glew/auto/extensions/gl/GL_REND_screen_coordinates
new file mode 100644
index 0000000..a468fd0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_REND_screen_coordinates
@@ -0,0 +1,6 @@
+GL_REND_screen_coordinates
+https://www.khronos.org/registry/OpenGL/extensions/REND/REND_screen_coordinates.txt
+GL_REND_screen_coordinates
+
+ GL_SCREEN_COORDINATES_REND 0x8490
+ GL_INVERTED_SCREEN_W_REND 0x8491
diff --git a/glew/auto/extensions/gl/GL_S3_s3tc b/glew/auto/extensions/gl/GL_S3_s3tc
new file mode 100644
index 0000000..4f7efea
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_S3_s3tc
@@ -0,0 +1,10 @@
+GL_S3_s3tc
+https://www.khronos.org/registry/OpenGL/extensions/S3/S3_s3tc.txt
+GL_S3_s3tc
+
+ GL_RGB_S3TC 0x83A0
+ GL_RGB4_S3TC 0x83A1
+ GL_RGBA_S3TC 0x83A2
+ GL_RGBA4_S3TC 0x83A3
+ GL_RGBA_DXT5_S3TC 0x83A4
+ GL_RGBA4_DXT5_S3TC 0x83A5
diff --git a/glew/auto/extensions/gl/GL_SGIS_clip_band_hint b/glew/auto/extensions/gl/GL_SGIS_clip_band_hint
new file mode 100644
index 0000000..0a93182
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_clip_band_hint
@@ -0,0 +1,4 @@
+GL_SGIS_clip_band_hint
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_clip_band_hint.txt
+GL_SGIS_clip_band_hint
+
diff --git a/glew/auto/extensions/gl/GL_SGIS_color_range b/glew/auto/extensions/gl/GL_SGIS_color_range
new file mode 100644
index 0000000..d03efe0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_color_range
@@ -0,0 +1,13 @@
+GL_SGIS_color_range
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/GLX_SGIS_color_range.txt
+GL_SGIS_color_range
+
+ GL_EXTENDED_RANGE_SGIS 0x85A5
+ GL_MIN_RED_SGIS 0x85A6
+ GL_MAX_RED_SGIS 0x85A7
+ GL_MIN_GREEN_SGIS 0x85A8
+ GL_MAX_GREEN_SGIS 0x85A9
+ GL_MIN_BLUE_SGIS 0x85AA
+ GL_MAX_BLUE_SGIS 0x85AB
+ GL_MIN_ALPHA_SGIS 0x85AC
+ GL_MAX_ALPHA_SGIS 0x85AD
diff --git a/glew/auto/extensions/gl/GL_SGIS_detail_texture b/glew/auto/extensions/gl/GL_SGIS_detail_texture
new file mode 100644
index 0000000..ae94123
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_detail_texture
@@ -0,0 +1,6 @@
+GL_SGIS_detail_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_detail_texture.txt
+GL_SGIS_detail_texture
+
+ void glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat* points)
+ void glGetDetailTexFuncSGIS (GLenum target, GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_SGIS_fog_function b/glew/auto/extensions/gl/GL_SGIS_fog_function
new file mode 100644
index 0000000..89b21d2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_fog_function
@@ -0,0 +1,6 @@
+GL_SGIS_fog_function
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_fog_function.txt
+GL_SGIS_fog_function
+
+ void glFogFuncSGIS (GLsizei n, const GLfloat* points)
+ void glGetFogFuncSGIS (GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_SGIS_generate_mipmap b/glew/auto/extensions/gl/GL_SGIS_generate_mipmap
new file mode 100644
index 0000000..bb858c7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_generate_mipmap
@@ -0,0 +1,6 @@
+GL_SGIS_generate_mipmap
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_generate_mipmap.txt
+GL_SGIS_generate_mipmap
+
+ GL_GENERATE_MIPMAP_SGIS 0x8191
+ GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
diff --git a/glew/auto/extensions/gl/GL_SGIS_line_texgen b/glew/auto/extensions/gl/GL_SGIS_line_texgen
new file mode 100644
index 0000000..ff308cf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_line_texgen
@@ -0,0 +1,4 @@
+GL_SGIS_line_texgen
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_line_texgen.txt
+GL_SGIS_line_texgen
+
diff --git a/glew/auto/extensions/gl/GL_SGIS_multisample b/glew/auto/extensions/gl/GL_SGIS_multisample
new file mode 100644
index 0000000..8f99be6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_multisample
@@ -0,0 +1,22 @@
+GL_SGIS_multisample
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_multisample.txt
+GL_SGIS_multisample
+
+ GL_MULTISAMPLE_SGIS 0x809D
+ GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
+ GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
+ GL_SAMPLE_MASK_SGIS 0x80A0
+ GL_1PASS_SGIS 0x80A1
+ GL_2PASS_0_SGIS 0x80A2
+ GL_2PASS_1_SGIS 0x80A3
+ GL_4PASS_0_SGIS 0x80A4
+ GL_4PASS_1_SGIS 0x80A5
+ GL_4PASS_2_SGIS 0x80A6
+ GL_4PASS_3_SGIS 0x80A7
+ GL_SAMPLE_BUFFERS_SGIS 0x80A8
+ GL_SAMPLES_SGIS 0x80A9
+ GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
+ GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
+ GL_SAMPLE_PATTERN_SGIS 0x80AC
+ void glSampleMaskSGIS (GLclampf value, GLboolean invert)
+ void glSamplePatternSGIS (GLenum pattern)
diff --git a/glew/auto/extensions/gl/GL_SGIS_multitexture b/glew/auto/extensions/gl/GL_SGIS_multitexture
new file mode 100644
index 0000000..17153c4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_multitexture
@@ -0,0 +1,19 @@
+GL_SGIS_multitexture
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_multitexture.txt
+GL_SGIS_multitexture
+
+ GL_SELECTED_TEXTURE_SGIS 0x83C0
+ GL_SELECTED_TEXTURE_COORD_SET_SGIS 0x83C1
+ GL_SELECTED_TEXTURE_TRANSFORM_SGIS 0x83C2
+ GL_MAX_TEXTURES_SGIS 0x83C3
+ GL_MAX_TEXTURE_COORD_SETS_SGIS 0x83C4
+ GL_TEXTURE_COORD_SET_INTERLEAVE_FACTOR_SGIS 0x83C5
+ GL_TEXTURE_ENV_COORD_SET_SGIS 0x83C6
+ GL_TEXTURE0_SGIS 0x83C7
+ GL_TEXTURE1_SGIS 0x83C8
+ GL_TEXTURE2_SGIS 0x83C9
+ GL_TEXTURE3_SGIS 0x83CA
+ void glInterleavedTextureCoordSetsSGIS (GLint factor)
+ void glSelectTextureCoordSetSGIS (GLenum target)
+ void glSelectTextureSGIS (GLenum target)
+ void glSelectTextureTransformSGIS (GLenum target)
diff --git a/glew/auto/extensions/gl/GL_SGIS_pixel_texture b/glew/auto/extensions/gl/GL_SGIS_pixel_texture
new file mode 100644
index 0000000..f7d48bd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_pixel_texture
@@ -0,0 +1,4 @@
+GL_SGIS_pixel_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_pixel_texture.txt
+GL_SGIS_pixel_texture
+
diff --git a/glew/auto/extensions/gl/GL_SGIS_point_line_texgen b/glew/auto/extensions/gl/GL_SGIS_point_line_texgen
new file mode 100644
index 0000000..194afc2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_point_line_texgen
@@ -0,0 +1,12 @@
+GL_SGIS_point_line_texgen
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_point_line_texgen.txt
+GL_SGIS_point_line_texgen
+
+ GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
+ GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
+ GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
+ GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
+ GL_EYE_POINT_SGIS 0x81F4
+ GL_OBJECT_POINT_SGIS 0x81F5
+ GL_EYE_LINE_SGIS 0x81F6
+ GL_OBJECT_LINE_SGIS 0x81F7
diff --git a/glew/auto/extensions/gl/GL_SGIS_shared_multisample b/glew/auto/extensions/gl/GL_SGIS_shared_multisample
new file mode 100644
index 0000000..a56c17a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_shared_multisample
@@ -0,0 +1,5 @@
+GL_SGIS_shared_multisample
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_shared_multisample.txt
+GL_SGIS_shared_multisample
+
+ void glMultisampleSubRectPosSGIS (GLint x, GLint y)
diff --git a/glew/auto/extensions/gl/GL_SGIS_sharpen_texture b/glew/auto/extensions/gl/GL_SGIS_sharpen_texture
new file mode 100644
index 0000000..f6d9a5c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_sharpen_texture
@@ -0,0 +1,6 @@
+GL_SGIS_sharpen_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_sharpen_texture.txt
+GL_SGIS_sharpen_texture
+
+ void glGetSharpenTexFuncSGIS (GLenum target, GLfloat* points)
+ void glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture4D b/glew/auto/extensions/gl/GL_SGIS_texture4D
new file mode 100644
index 0000000..908eed9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture4D
@@ -0,0 +1,6 @@
+GL_SGIS_texture4D
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture4D.txt
+GL_SGIS_texture4D
+
+ void glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels)
+ void glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void *pixels)
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_border_clamp b/glew/auto/extensions/gl/GL_SGIS_texture_border_clamp
new file mode 100644
index 0000000..34a3584
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_border_clamp
@@ -0,0 +1,5 @@
+GL_SGIS_texture_border_clamp
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_border_clamp.txt
+GL_SGIS_texture_border_clamp
+
+ GL_CLAMP_TO_BORDER_SGIS 0x812D
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_edge_clamp b/glew/auto/extensions/gl/GL_SGIS_texture_edge_clamp
new file mode 100644
index 0000000..db0e205
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_edge_clamp
@@ -0,0 +1,5 @@
+GL_SGIS_texture_edge_clamp
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_edge_clamp.txt
+GL_SGIS_texture_edge_clamp
+
+ GL_CLAMP_TO_EDGE_SGIS 0x812F
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_filter4 b/glew/auto/extensions/gl/GL_SGIS_texture_filter4
new file mode 100644
index 0000000..316e563
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_filter4
@@ -0,0 +1,6 @@
+GL_SGIS_texture_filter4
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_filter4.txt
+GL_SGIS_texture_filter4
+
+ void glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat* weights)
+ void glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights)
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_lod b/glew/auto/extensions/gl/GL_SGIS_texture_lod
new file mode 100644
index 0000000..71fe3dd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_lod
@@ -0,0 +1,8 @@
+GL_SGIS_texture_lod
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_lod.txt
+GL_SGIS_texture_lod
+
+ GL_TEXTURE_MIN_LOD_SGIS 0x813A
+ GL_TEXTURE_MAX_LOD_SGIS 0x813B
+ GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
+ GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
diff --git a/glew/auto/extensions/gl/GL_SGIS_texture_select b/glew/auto/extensions/gl/GL_SGIS_texture_select
new file mode 100644
index 0000000..74f6fa5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIS_texture_select
@@ -0,0 +1,4 @@
+GL_SGIS_texture_select
+https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_select.txt
+GL_SGIS_texture_select
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_async b/glew/auto/extensions/gl/GL_SGIX_async
new file mode 100644
index 0000000..ba7ef69
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_async
@@ -0,0 +1,11 @@
+GL_SGIX_async
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async.txt
+GL_SGIX_async
+
+ GL_ASYNC_MARKER_SGIX 0x8329
+ void glAsyncMarkerSGIX (GLuint marker)
+ void glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range)
+ GLint glFinishAsyncSGIX (GLuint* markerp)
+ GLuint glGenAsyncMarkersSGIX (GLsizei range)
+ GLboolean glIsAsyncMarkerSGIX (GLuint marker)
+ GLint glPollAsyncSGIX (GLuint* markerp)
diff --git a/glew/auto/extensions/gl/GL_SGIX_async_histogram b/glew/auto/extensions/gl/GL_SGIX_async_histogram
new file mode 100644
index 0000000..32fe841
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_async_histogram
@@ -0,0 +1,6 @@
+GL_SGIX_async_histogram
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async_histogram.txt
+GL_SGIX_async_histogram
+
+ GL_ASYNC_HISTOGRAM_SGIX 0x832C
+ GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
diff --git a/glew/auto/extensions/gl/GL_SGIX_async_pixel b/glew/auto/extensions/gl/GL_SGIX_async_pixel
new file mode 100644
index 0000000..9296736
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_async_pixel
@@ -0,0 +1,10 @@
+GL_SGIX_async_pixel
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async_pixel.txt
+GL_SGIX_async_pixel
+
+ GL_ASYNC_TEX_IMAGE_SGIX 0x835C
+ GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
+ GL_ASYNC_READ_PIXELS_SGIX 0x835E
+ GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
+ GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
+ GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
diff --git a/glew/auto/extensions/gl/GL_SGIX_bali_g_instruments b/glew/auto/extensions/gl/GL_SGIX_bali_g_instruments
new file mode 100644
index 0000000..3547579
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_bali_g_instruments
@@ -0,0 +1,8 @@
+GL_SGIX_bali_g_instruments
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_g_instruments.txt
+GL_SGIX_bali_g_instruments
+
+ GL_BALI_NUM_TRIS_CULLED_INSTRUMENT 0x6080
+ GL_BALI_NUM_PRIMS_CLIPPED_INSTRUMENT 0x6081
+ GL_BALI_NUM_PRIMS_REJECT_INSTRUMENT 0x6082
+ GL_BALI_NUM_PRIMS_CLIP_RESULT_INSTRUMENT 0x6083
diff --git a/glew/auto/extensions/gl/GL_SGIX_bali_r_instruments b/glew/auto/extensions/gl/GL_SGIX_bali_r_instruments
new file mode 100644
index 0000000..e490715
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_bali_r_instruments
@@ -0,0 +1,7 @@
+GL_SGIX_bali_r_instruments
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_r_instruments.txt
+GL_SGIX_bali_r_instruments
+
+ GL_BALI_FRAGMENTS_GENERATED_INSTRUMENT 0x6090
+ GL_BALI_DEPTH_PASS_INSTRUMENT 0x6091
+ GL_BALI_R_CHIP_COUNT 0x6092
diff --git a/glew/auto/extensions/gl/GL_SGIX_bali_timer_instruments b/glew/auto/extensions/gl/GL_SGIX_bali_timer_instruments
new file mode 100644
index 0000000..a80c9dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_bali_timer_instruments
@@ -0,0 +1,4 @@
+GL_SGIX_bali_timer_instruments
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_timer_instruments.txt
+GL_SGIX_bali_timer_instruments
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_blend_alpha_minmax b/glew/auto/extensions/gl/GL_SGIX_blend_alpha_minmax
new file mode 100644
index 0000000..c8820e6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_blend_alpha_minmax
@@ -0,0 +1,6 @@
+GL_SGIX_blend_alpha_minmax
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_alpha_minmax.txt
+GL_SGIX_blend_alpha_minmax
+
+ GL_ALPHA_MIN_SGIX 0x8320
+ GL_ALPHA_MAX_SGIX 0x8321
diff --git a/glew/auto/extensions/gl/GL_SGIX_blend_cadd b/glew/auto/extensions/gl/GL_SGIX_blend_cadd
new file mode 100644
index 0000000..a0bcdd0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_blend_cadd
@@ -0,0 +1,5 @@
+GL_SGIX_blend_cadd
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_cadd.txt
+GL_SGIX_blend_cadd
+
+ GL_FUNC_COMPLEX_ADD_EXT 0x601C
diff --git a/glew/auto/extensions/gl/GL_SGIX_blend_cmultiply b/glew/auto/extensions/gl/GL_SGIX_blend_cmultiply
new file mode 100644
index 0000000..35b5618
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_blend_cmultiply
@@ -0,0 +1,5 @@
+GL_SGIX_blend_cmultiply
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_cmultiply.txt
+GL_SGIX_blend_cmultiply
+
+ GL_FUNC_COMPLEX_MULTIPLY_EXT 0x601B
diff --git a/glew/auto/extensions/gl/GL_SGIX_calligraphic_fragment b/glew/auto/extensions/gl/GL_SGIX_calligraphic_fragment
new file mode 100644
index 0000000..8761e58
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_calligraphic_fragment
@@ -0,0 +1,4 @@
+GL_SGIX_calligraphic_fragment
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_calligraphic_fragment.txt
+GL_SGIX_calligraphic_fragment
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_clipmap b/glew/auto/extensions/gl/GL_SGIX_clipmap
new file mode 100644
index 0000000..9d8604d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_clipmap
@@ -0,0 +1,4 @@
+GL_SGIX_clipmap
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_clipmap.txt
+GL_SGIX_clipmap
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_color_matrix_accuracy b/glew/auto/extensions/gl/GL_SGIX_color_matrix_accuracy
new file mode 100644
index 0000000..33f9e01
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_color_matrix_accuracy
@@ -0,0 +1,5 @@
+GL_SGIX_color_matrix_accuracy
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_color_matrix_accuracy.txt
+GL_SGIX_color_matrix_accuracy
+
+ GL_COLOR_MATRIX_HINT 0x8317
diff --git a/glew/auto/extensions/gl/GL_SGIX_color_table_index_mode b/glew/auto/extensions/gl/GL_SGIX_color_table_index_mode
new file mode 100644
index 0000000..a09f7cc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_color_table_index_mode
@@ -0,0 +1,4 @@
+GL_SGIX_color_table_index_mode
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_color_table_index_mode.txt
+GL_SGIX_color_table_index_mode
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_complex_polar b/glew/auto/extensions/gl/GL_SGIX_complex_polar
new file mode 100644
index 0000000..04086ed
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_complex_polar
@@ -0,0 +1,4 @@
+GL_SGIX_complex_polar
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_complex_polar.txt
+GL_SGIX_complex_polar
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_convolution_accuracy b/glew/auto/extensions/gl/GL_SGIX_convolution_accuracy
new file mode 100644
index 0000000..05b8f7e
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_convolution_accuracy
@@ -0,0 +1,5 @@
+GL_SGIX_convolution_accuracy
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_convolution_accuracy.txt
+GL_SGIX_convolution_accuracy
+
+ GL_CONVOLUTION_HINT_SGIX 0x8316
diff --git a/glew/auto/extensions/gl/GL_SGIX_cube_map b/glew/auto/extensions/gl/GL_SGIX_cube_map
new file mode 100644
index 0000000..950bd29
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_cube_map
@@ -0,0 +1,13 @@
+GL_SGIX_cube_map
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_cube_map.txt
+GL_SGIX_cube_map
+
+ GL_ENV_MAP_SGIX 0x8340
+ GL_CUBE_MAP_SGIX 0x8341
+ GL_CUBE_MAP_ZP_SGIX 0x8342
+ GL_CUBE_MAP_ZN_SGIX 0x8343
+ GL_CUBE_MAP_XN_SGIX 0x8344
+ GL_CUBE_MAP_XP_SGIX 0x8345
+ GL_CUBE_MAP_YN_SGIX 0x8346
+ GL_CUBE_MAP_YP_SGIX 0x8347
+ GL_CUBE_MAP_BINDING_SGIX 0x8348
diff --git a/glew/auto/extensions/gl/GL_SGIX_cylinder_texgen b/glew/auto/extensions/gl/GL_SGIX_cylinder_texgen
new file mode 100644
index 0000000..c318661
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_cylinder_texgen
@@ -0,0 +1,4 @@
+GL_SGIX_cylinder_texgen
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_cylinder_texgen.txt
+GL_SGIX_cylinder_texgen
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_datapipe b/glew/auto/extensions/gl/GL_SGIX_datapipe
new file mode 100644
index 0000000..af72c25
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_datapipe
@@ -0,0 +1,8 @@
+GL_SGIX_datapipe
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_datapipe.txt
+GL_SGIX_datapipe
+
+ GL_GEOMETRY_BIT 0x1
+ GL_IMAGE_BIT 0x2
+ void glAddressSpace (GLenum space, GLbitfield mask)
+ GLint glDataPipe (GLenum space)
diff --git a/glew/auto/extensions/gl/GL_SGIX_decimation b/glew/auto/extensions/gl/GL_SGIX_decimation
new file mode 100644
index 0000000..e3af60a
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_decimation
@@ -0,0 +1,4 @@
+GL_SGIX_decimation
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_decimation.txt
+GL_SGIX_decimation
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_depth_pass_instrument b/glew/auto/extensions/gl/GL_SGIX_depth_pass_instrument
new file mode 100644
index 0000000..06f474b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_depth_pass_instrument
@@ -0,0 +1,7 @@
+GL_SGIX_depth_pass_instrument
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_depth_pass_instrument.txt
+GL_SGIX_depth_pass_instrument
+
+ GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
+ GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
+ GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
diff --git a/glew/auto/extensions/gl/GL_SGIX_depth_texture b/glew/auto/extensions/gl/GL_SGIX_depth_texture
new file mode 100644
index 0000000..355fe00
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_depth_texture
@@ -0,0 +1,7 @@
+GL_SGIX_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_depth_texture.txt
+GL_SGIX_depth_texture
+
+ GL_DEPTH_COMPONENT16_SGIX 0x81A5
+ GL_DEPTH_COMPONENT24_SGIX 0x81A6
+ GL_DEPTH_COMPONENT32_SGIX 0x81A7
diff --git a/glew/auto/extensions/gl/GL_SGIX_dvc b/glew/auto/extensions/gl/GL_SGIX_dvc
new file mode 100644
index 0000000..f726e33
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_dvc
@@ -0,0 +1,4 @@
+GL_SGIX_dvc
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_dvc.txt
+GL_SGIX_dvc
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_flush_raster b/glew/auto/extensions/gl/GL_SGIX_flush_raster
new file mode 100644
index 0000000..7c0d4c6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_flush_raster
@@ -0,0 +1,5 @@
+GL_SGIX_flush_raster
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_flush_raster.txt
+GL_SGIX_flush_raster
+
+ void glFlushRasterSGIX (void)
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_blend b/glew/auto/extensions/gl/GL_SGIX_fog_blend
new file mode 100644
index 0000000..8db6f44
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_blend
@@ -0,0 +1,6 @@
+GL_SGIX_fog_blend
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_blend.txt
+GL_SGIX_fog_blend
+
+ GL_FOG_BLEND_ALPHA_SGIX 0x81FE
+ GL_FOG_BLEND_COLOR_SGIX 0x81FF
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_factor_to_alpha b/glew/auto/extensions/gl/GL_SGIX_fog_factor_to_alpha
new file mode 100644
index 0000000..8b5a9f7
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_factor_to_alpha
@@ -0,0 +1,4 @@
+GL_SGIX_fog_factor_to_alpha
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_factor_to_alpha.txt
+GL_SGIX_fog_factor_to_alpha
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_layers b/glew/auto/extensions/gl/GL_SGIX_fog_layers
new file mode 100644
index 0000000..7fe0f8d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_layers
@@ -0,0 +1,12 @@
+GL_SGIX_fog_layers
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_layers.txt
+GL_SGIX_fog_layers
+
+ GL_FOG_TYPE_SGIX 0x8323
+ GL_UNIFORM_SGIX 0x8324
+ GL_LAYERED_SGIX 0x8325
+ GL_FOG_GROUND_PLANE_SGIX 0x8326
+ GL_FOG_LAYERS_POINTS_SGIX 0x8327
+ GL_MAX_FOG_LAYERS_POINTS_SGIX 0x8328
+ void glFogLayersSGIX (GLsizei n, const GLfloat* points)
+ void glGetFogLayersSGIX (GLfloat* points)
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_offset b/glew/auto/extensions/gl/GL_SGIX_fog_offset
new file mode 100644
index 0000000..3aff66b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_offset
@@ -0,0 +1,6 @@
+GL_SGIX_fog_offset
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_offset.txt
+GL_SGIX_fog_offset
+
+ GL_FOG_OFFSET_SGIX 0x8198
+ GL_FOG_OFFSET_VALUE_SGIX 0x8199
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_patchy b/glew/auto/extensions/gl/GL_SGIX_fog_patchy
new file mode 100644
index 0000000..02c49b9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_patchy
@@ -0,0 +1,4 @@
+GL_SGIX_fog_patchy
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_patchy.txt
+GL_SGIX_fog_patchy
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_scale b/glew/auto/extensions/gl/GL_SGIX_fog_scale
new file mode 100644
index 0000000..67451c1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_scale
@@ -0,0 +1,6 @@
+GL_SGIX_fog_scale
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_scale.txt
+GL_SGIX_fog_scale
+
+ GL_FOG_SCALE_SGIX 0x81FC
+ GL_FOG_SCALE_VALUE_SGIX 0x81FD
diff --git a/glew/auto/extensions/gl/GL_SGIX_fog_texture b/glew/auto/extensions/gl/GL_SGIX_fog_texture
new file mode 100644
index 0000000..de8d9c3
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fog_texture
@@ -0,0 +1,5 @@
+GL_SGIX_fog_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_texture.txt
+GL_SGIX_fog_texture
+
+ void glTextureFogSGIX (GLenum pname)
diff --git a/glew/auto/extensions/gl/GL_SGIX_fragment_lighting_space b/glew/auto/extensions/gl/GL_SGIX_fragment_lighting_space
new file mode 100644
index 0000000..94196c6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fragment_lighting_space
@@ -0,0 +1,8 @@
+GL_SGIX_fragment_lighting_space
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragment_lighting_space.txt
+GL_SGIX_fragment_lighting_space
+
+ GL_EYE_SPACE_SGIX 0x8436
+ GL_TANGENT_SPACE_SGIX 0x8437
+ GL_OBJECT_SPACE_SGIX 0x8438
+ GL_FRAGMENT_LIGHT_SPACE_SGIX 0x843D
diff --git a/glew/auto/extensions/gl/GL_SGIX_fragment_specular_lighting b/glew/auto/extensions/gl/GL_SGIX_fragment_specular_lighting
new file mode 100644
index 0000000..f84ace8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fragment_specular_lighting
@@ -0,0 +1,21 @@
+GL_SGIX_fragment_specular_lighting
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragment_specular_lighting.txt
+GL_SGIX_fragment_specular_lighting
+
+ void glFragmentColorMaterialSGIX (GLenum face, GLenum mode)
+ void glFragmentLightModelfSGIX (GLenum pname, GLfloat param)
+ void glFragmentLightModelfvSGIX (GLenum pname, GLfloat* params)
+ void glFragmentLightModeliSGIX (GLenum pname, GLint param)
+ void glFragmentLightModelivSGIX (GLenum pname, GLint* params)
+ void glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param)
+ void glFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat* params)
+ void glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param)
+ void glFragmentLightivSGIX (GLenum light, GLenum pname, GLint* params)
+ void glFragmentMaterialfSGIX (GLenum face, GLenum pname, const GLfloat param)
+ void glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat* params)
+ void glFragmentMaterialiSGIX (GLenum face, GLenum pname, const GLint param)
+ void glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint* params)
+ void glGetFragmentLightfvSGIX (GLenum light, GLenum value, GLfloat* data)
+ void glGetFragmentLightivSGIX (GLenum light, GLenum value, GLint* data)
+ void glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat* data)
+ void glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint* data)
diff --git a/glew/auto/extensions/gl/GL_SGIX_fragments_instrument b/glew/auto/extensions/gl/GL_SGIX_fragments_instrument
new file mode 100644
index 0000000..df581fd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_fragments_instrument
@@ -0,0 +1,7 @@
+GL_SGIX_fragments_instrument
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragments_instrument.txt
+GL_SGIX_fragments_instrument
+
+ GL_FRAGMENTS_INSTRUMENT_SGIX 0x8313
+ GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX 0x8314
+ GL_FRAGMENTS_INSTRUMENT_MAX_SGIX 0x8315
diff --git a/glew/auto/extensions/gl/GL_SGIX_framezoom b/glew/auto/extensions/gl/GL_SGIX_framezoom
new file mode 100644
index 0000000..b1274a6
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_framezoom
@@ -0,0 +1,5 @@
+GL_SGIX_framezoom
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_framezoom.txt
+GL_SGIX_framezoom
+
+ void glFrameZoomSGIX (GLint factor)
diff --git a/glew/auto/extensions/gl/GL_SGIX_icc_texture b/glew/auto/extensions/gl/GL_SGIX_icc_texture
new file mode 100644
index 0000000..d73d206
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_icc_texture
@@ -0,0 +1,16 @@
+GL_SGIX_icc_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_icc_texture.txt
+GL_SGIX_icc_texture
+
+ GL_RGB_ICC_SGIX 0x8460
+ GL_RGBA_ICC_SGIX 0x8461
+ GL_ALPHA_ICC_SGIX 0x8462
+ GL_LUMINANCE_ICC_SGIX 0x8463
+ GL_INTENSITY_ICC_SGIX 0x8464
+ GL_LUMINANCE_ALPHA_ICC_SGIX 0x8465
+ GL_R5_G6_B5_ICC_SGIX 0x8466
+ GL_R5_G6_B5_A8_ICC_SGIX 0x8467
+ GL_ALPHA16_ICC_SGIX 0x8468
+ GL_LUMINANCE16_ICC_SGIX 0x8469
+ GL_INTENSITY16_ICC_SGIX 0x846A
+ GL_LUMINANCE16_ALPHA8_ICC_SGIX 0x846B
diff --git a/glew/auto/extensions/gl/GL_SGIX_igloo_interface b/glew/auto/extensions/gl/GL_SGIX_igloo_interface
new file mode 100644
index 0000000..31c75e5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_igloo_interface
@@ -0,0 +1,13 @@
+GL_SGIX_igloo_interface
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_igloo_interface.txt
+GL_SGIX_igloo_interface
+
+ GL_IGLOO_FULLSCREEN_SGIX 0x819E
+ GL_IGLOO_VIEWPORT_OFFSET_SGIX 0x819F
+ GL_IGLOO_SWAPTMESH_SGIX 0x81A0
+ GL_IGLOO_COLORNORMAL_SGIX 0x81A1
+ GL_IGLOO_IRISGL_MODE_SGIX 0x81A2
+ GL_IGLOO_LMC_COLOR_SGIX 0x81A3
+ GL_IGLOO_TMESHMODE_SGIX 0x81A4
+ GL_LIGHT31 0xBEAD
+ void glIglooInterfaceSGIX (GLenum pname, void *param)
diff --git a/glew/auto/extensions/gl/GL_SGIX_image_compression b/glew/auto/extensions/gl/GL_SGIX_image_compression
new file mode 100644
index 0000000..fce8e02
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_image_compression
@@ -0,0 +1,4 @@
+GL_SGIX_image_compression
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_image_compression.txt
+GL_SGIX_image_compression
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_impact_pixel_texture b/glew/auto/extensions/gl/GL_SGIX_impact_pixel_texture
new file mode 100644
index 0000000..747a459
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_impact_pixel_texture
@@ -0,0 +1,4 @@
+GL_SGIX_impact_pixel_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_impact_pixel_texture.txt
+GL_SGIX_impact_pixel_texture
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_instrument_error b/glew/auto/extensions/gl/GL_SGIX_instrument_error
new file mode 100644
index 0000000..dd269e0
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_instrument_error
@@ -0,0 +1,4 @@
+GL_SGIX_instrument_error
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_instrument_error.txt
+GL_SGIX_instrument_error
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_interlace b/glew/auto/extensions/gl/GL_SGIX_interlace
new file mode 100644
index 0000000..bf6bcee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_interlace
@@ -0,0 +1,5 @@
+GL_SGIX_interlace
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_interlace.txt
+GL_SGIX_interlace
+
+ GL_INTERLACE_SGIX 0x8094
diff --git a/glew/auto/extensions/gl/GL_SGIX_ir_instrument1 b/glew/auto/extensions/gl/GL_SGIX_ir_instrument1
new file mode 100644
index 0000000..7132fdb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_ir_instrument1
@@ -0,0 +1,4 @@
+GL_SGIX_ir_instrument1
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ir_instrument1.txt
+GL_SGIX_ir_instrument1
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_line_quality_hint b/glew/auto/extensions/gl/GL_SGIX_line_quality_hint
new file mode 100644
index 0000000..11256dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_line_quality_hint
@@ -0,0 +1,5 @@
+GL_SGIX_line_quality_hint
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_line_quality_hint.txt
+GL_SGIX_line_quality_hint
+
+ GL_LINE_QUALITY_HINT_SGIX 0x835B
diff --git a/glew/auto/extensions/gl/GL_SGIX_list_priority b/glew/auto/extensions/gl/GL_SGIX_list_priority
new file mode 100644
index 0000000..b1f6e84
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_list_priority
@@ -0,0 +1,4 @@
+GL_SGIX_list_priority
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_list_priority.txt
+GL_SGIX_list_priority
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_mpeg1 b/glew/auto/extensions/gl/GL_SGIX_mpeg1
new file mode 100644
index 0000000..1025217
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_mpeg1
@@ -0,0 +1,15 @@
+GL_SGIX_mpeg1
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_mpeg1.txt
+GL_SGIX_mpeg1
+
+ void glAllocMPEGPredictorsSGIX (GLsizei width, GLsizei height, GLsizei n, GLuint* predictors)
+ void glDeleteMPEGPredictorsSGIX (GLsizei n, GLuint* predictors)
+ void glGenMPEGPredictorsSGIX (GLsizei n, GLuint* predictors)
+ void glGetMPEGParameterfvSGIX (GLenum target, GLenum pname, GLfloat* params)
+ void glGetMPEGParameterivSGIX (GLenum target, GLenum pname, GLint* params)
+ void glGetMPEGPredictorSGIX (GLenum target, GLenum format, GLenum type, void *pixels)
+ void glGetMPEGQuantTableubv (GLenum target, GLubyte* values)
+ GLboolean glIsMPEGPredictorSGIX (GLuint predictor)
+ void glMPEGPredictorSGIX (GLenum target, GLenum format, GLenum type, void *pixels)
+ void glMPEGQuantTableubv (GLenum target, GLubyte* values)
+ void glSwapMPEGPredictorsSGIX (GLenum target0, GLenum target1)
diff --git a/glew/auto/extensions/gl/GL_SGIX_mpeg2 b/glew/auto/extensions/gl/GL_SGIX_mpeg2
new file mode 100644
index 0000000..879ad63
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_mpeg2
@@ -0,0 +1,4 @@
+GL_SGIX_mpeg2
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_mpeg2.txt
+GL_SGIX_mpeg2
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_nonlinear_lighting_pervertex b/glew/auto/extensions/gl/GL_SGIX_nonlinear_lighting_pervertex
new file mode 100644
index 0000000..c58f5df
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_nonlinear_lighting_pervertex
@@ -0,0 +1,8 @@
+GL_SGIX_nonlinear_lighting_pervertex
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_nonlinear_lighting_pervertex.txt
+GL_SGIX_nonlinear_lighting_pervertex
+
+ void glGetNonlinLightfvSGIX (GLenum light, GLenum pname, GLint* terms, GLfloat *data)
+ void glGetNonlinMaterialfvSGIX (GLenum face, GLenum pname, GLint* terms, const GLfloat *data)
+ void glNonlinLightfvSGIX (GLenum light, GLenum pname, GLint terms, GLfloat* params)
+ void glNonlinMaterialfvSGIX (GLenum face, GLenum pname, GLint terms, const GLfloat* params)
diff --git a/glew/auto/extensions/gl/GL_SGIX_nurbs_eval b/glew/auto/extensions/gl/GL_SGIX_nurbs_eval
new file mode 100644
index 0000000..ed18763
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_nurbs_eval
@@ -0,0 +1,24 @@
+GL_SGIX_nurbs_eval
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_nurbs_eval.txt
+GL_SGIX_nurbs_eval
+
+ GL_MAP1_VERTEX_3_NURBS_SGIX 0x81CB
+ GL_MAP1_VERTEX_4_NURBS_SGIX 0x81CC
+ GL_MAP1_INDEX_NURBS_SGIX 0x81CD
+ GL_MAP1_COLOR_4_NURBS_SGIX 0x81CE
+ GL_MAP1_NORMAL_NURBS_SGIX 0x81CF
+ GL_MAP1_TEXTURE_COORD_1_NURBS_SGIX 0x81E0
+ GL_MAP1_TEXTURE_COORD_2_NURBS_SGIX 0x81E1
+ GL_MAP1_TEXTURE_COORD_3_NURBS_SGIX 0x81E2
+ GL_MAP1_TEXTURE_COORD_4_NURBS_SGIX 0x81E3
+ GL_MAP2_VERTEX_3_NURBS_SGIX 0x81E4
+ GL_MAP2_VERTEX_4_NURBS_SGIX 0x81E5
+ GL_MAP2_INDEX_NURBS_SGIX 0x81E6
+ GL_MAP2_COLOR_4_NURBS_SGIX 0x81E7
+ GL_MAP2_NORMAL_NURBS_SGIX 0x81E8
+ GL_MAP2_TEXTURE_COORD_1_NURBS_SGIX 0x81E9
+ GL_MAP2_TEXTURE_COORD_2_NURBS_SGIX 0x81EA
+ GL_MAP2_TEXTURE_COORD_3_NURBS_SGIX 0x81EB
+ GL_MAP2_TEXTURE_COORD_4_NURBS_SGIX 0x81EC
+ GL_NURBS_KNOT_COUNT_SGIX 0x81ED
+ GL_NURBS_KNOT_VECTOR_SGIX 0x81EE
diff --git a/glew/auto/extensions/gl/GL_SGIX_occlusion_instrument b/glew/auto/extensions/gl/GL_SGIX_occlusion_instrument
new file mode 100644
index 0000000..ddbfbcb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_occlusion_instrument
@@ -0,0 +1,5 @@
+GL_SGIX_occlusion_instrument
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_occlusion_instrument.txt
+GL_SGIX_occlusion_instrument
+
+ GL_OCCLUSION_INSTRUMENT_SGIX 0x6060
diff --git a/glew/auto/extensions/gl/GL_SGIX_packed_6bytes b/glew/auto/extensions/gl/GL_SGIX_packed_6bytes
new file mode 100644
index 0000000..d5f112d
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_packed_6bytes
@@ -0,0 +1,4 @@
+GL_SGIX_packed_6bytes
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_packed_6bytes.txt
+GL_SGIX_packed_6bytes
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_pixel_texture b/glew/auto/extensions/gl/GL_SGIX_pixel_texture
new file mode 100644
index 0000000..eee7904
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_pixel_texture
@@ -0,0 +1,5 @@
+GL_SGIX_pixel_texture
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture.txt
+GL_SGIX_pixel_texture
+
+ void glPixelTexGenSGIX (GLenum mode)
diff --git a/glew/auto/extensions/gl/GL_SGIX_pixel_texture_bits b/glew/auto/extensions/gl/GL_SGIX_pixel_texture_bits
new file mode 100644
index 0000000..76f4e86
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_pixel_texture_bits
@@ -0,0 +1,4 @@
+GL_SGIX_pixel_texture_bits
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture_bits.txt
+GL_SGIX_pixel_texture_bits
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_pixel_texture_lod b/glew/auto/extensions/gl/GL_SGIX_pixel_texture_lod
new file mode 100644
index 0000000..98d1d21
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_pixel_texture_lod
@@ -0,0 +1,4 @@
+GL_SGIX_pixel_texture_lod
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture_lod.txt
+GL_SGIX_pixel_texture_lod
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_pixel_tiles b/glew/auto/extensions/gl/GL_SGIX_pixel_tiles
new file mode 100644
index 0000000..24125fe
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_pixel_tiles
@@ -0,0 +1,4 @@
+GL_SGIX_pixel_tiles
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_tiles.txt
+GL_SGIX_pixel_tiles
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_polynomial_ffd b/glew/auto/extensions/gl/GL_SGIX_polynomial_ffd
new file mode 100644
index 0000000..69f6019
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_polynomial_ffd
@@ -0,0 +1,8 @@
+GL_SGIX_polynomial_ffd
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_polynomial_ffd.txt
+GL_SGIX_polynomial_ffd
+
+ GL_TEXTURE_DEFORMATION_BIT_SGIX 0x1
+ GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x2
+ void glDeformSGIX (GLbitfield mask)
+ void glLoadIdentityDeformationMapSGIX (GLbitfield mask)
diff --git a/glew/auto/extensions/gl/GL_SGIX_quad_mesh b/glew/auto/extensions/gl/GL_SGIX_quad_mesh
new file mode 100644
index 0000000..19b3393
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_quad_mesh
@@ -0,0 +1,6 @@
+GL_SGIX_quad_mesh
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_quad_mesh.txt
+GL_SGIX_quad_mesh
+
+ void glMeshBreadthSGIX (GLint breadth)
+ void glMeshStrideSGIX (GLint stride)
diff --git a/glew/auto/extensions/gl/GL_SGIX_reference_plane b/glew/auto/extensions/gl/GL_SGIX_reference_plane
new file mode 100644
index 0000000..ed55a0b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_reference_plane
@@ -0,0 +1,5 @@
+GL_SGIX_reference_plane
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_reference_plane.txt
+GL_SGIX_reference_plane
+
+ void glReferencePlaneSGIX (const GLdouble* equation)
diff --git a/glew/auto/extensions/gl/GL_SGIX_resample b/glew/auto/extensions/gl/GL_SGIX_resample
new file mode 100644
index 0000000..c3a8a31
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_resample
@@ -0,0 +1,9 @@
+GL_SGIX_resample
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_resample.txt
+GL_SGIX_resample
+
+ GL_PACK_RESAMPLE_SGIX 0x842E
+ GL_UNPACK_RESAMPLE_SGIX 0x842F
+ GL_RESAMPLE_DECIMATE_SGIX 0x8430
+ GL_RESAMPLE_REPLICATE_SGIX 0x8433
+ GL_RESAMPLE_ZERO_FILL_SGIX 0x8434
diff --git a/glew/auto/extensions/gl/GL_SGIX_scalebias_hint b/glew/auto/extensions/gl/GL_SGIX_scalebias_hint
new file mode 100644
index 0000000..6eb5f19
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_scalebias_hint
@@ -0,0 +1,5 @@
+GL_SGIX_scalebias_hint
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_scalebias_hint.txt
+GL_SGIX_scalebias_hint
+
+ GL_SCALEBIAS_HINT_SGIX 0x8322
diff --git a/glew/auto/extensions/gl/GL_SGIX_shadow b/glew/auto/extensions/gl/GL_SGIX_shadow
new file mode 100644
index 0000000..3580721
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_shadow
@@ -0,0 +1,8 @@
+GL_SGIX_shadow
+http://oss.sgi.com/projects/ogl-sample/registry/SGIX/shadow.txt
+GL_SGIX_shadow
+
+ GL_TEXTURE_COMPARE_SGIX 0x819A
+ GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
+ GL_TEXTURE_LEQUAL_R_SGIX 0x819C
+ GL_TEXTURE_GEQUAL_R_SGIX 0x819D
diff --git a/glew/auto/extensions/gl/GL_SGIX_shadow_ambient b/glew/auto/extensions/gl/GL_SGIX_shadow_ambient
new file mode 100644
index 0000000..94b4d30
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_shadow_ambient
@@ -0,0 +1,5 @@
+GL_SGIX_shadow_ambient
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_shadow_ambient.txt
+GL_SGIX_shadow_ambient
+
+ GL_SHADOW_AMBIENT_SGIX 0x80BF
diff --git a/glew/auto/extensions/gl/GL_SGIX_slim b/glew/auto/extensions/gl/GL_SGIX_slim
new file mode 100644
index 0000000..229af5f
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_slim
@@ -0,0 +1,8 @@
+GL_SGIX_slim
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_slim.txt
+GL_SGIX_slim
+
+ GL_PACK_MAX_COMPRESSED_SIZE_SGIX 0x831B
+ GL_SLIM8U_SGIX 0x831D
+ GL_SLIM10U_SGIX 0x831E
+ GL_SLIM12S_SGIX 0x831F
diff --git a/glew/auto/extensions/gl/GL_SGIX_spotlight_cutoff b/glew/auto/extensions/gl/GL_SGIX_spotlight_cutoff
new file mode 100644
index 0000000..2114034
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_spotlight_cutoff
@@ -0,0 +1,5 @@
+GL_SGIX_spotlight_cutoff
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_spotlight_cutoff.txt
+GL_SGIX_spotlight_cutoff
+
+ GL_SPOT_CUTOFF_DELTA_SGIX 0x8193
diff --git a/glew/auto/extensions/gl/GL_SGIX_sprite b/glew/auto/extensions/gl/GL_SGIX_sprite
new file mode 100644
index 0000000..33aaf0b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_sprite
@@ -0,0 +1,8 @@
+GL_SGIX_sprite
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_sprite.txt
+GL_SGIX_sprite
+
+ void glSpriteParameterfSGIX (GLenum pname, GLfloat param)
+ void glSpriteParameterfvSGIX (GLenum pname, GLfloat* params)
+ void glSpriteParameteriSGIX (GLenum pname, GLint param)
+ void glSpriteParameterivSGIX (GLenum pname, GLint* params)
diff --git a/glew/auto/extensions/gl/GL_SGIX_subdiv_patch b/glew/auto/extensions/gl/GL_SGIX_subdiv_patch
new file mode 100644
index 0000000..46f20ab
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_subdiv_patch
@@ -0,0 +1,4 @@
+GL_SGIX_subdiv_patch
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_subdiv_patch.txt
+GL_SGIX_subdiv_patch
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_subsample b/glew/auto/extensions/gl/GL_SGIX_subsample
new file mode 100644
index 0000000..43a7bd8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_subsample
@@ -0,0 +1,9 @@
+GL_SGIX_subsample
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_subsample.txt
+GL_SGIX_subsample
+
+ GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
+ GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
+ GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
+ GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
+ GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
diff --git a/glew/auto/extensions/gl/GL_SGIX_tag_sample_buffer b/glew/auto/extensions/gl/GL_SGIX_tag_sample_buffer
new file mode 100644
index 0000000..58dad01
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_tag_sample_buffer
@@ -0,0 +1,5 @@
+GL_SGIX_tag_sample_buffer
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_tag_sample_buffer.txt
+GL_SGIX_tag_sample_buffer
+
+ void glTagSampleBufferSGIX (void)
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_add_env b/glew/auto/extensions/gl/GL_SGIX_texture_add_env
new file mode 100644
index 0000000..93ab1b5
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_add_env
@@ -0,0 +1,4 @@
+GL_SGIX_texture_add_env
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_add_env.txt
+GL_SGIX_texture_add_env
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_coordinate_clamp b/glew/auto/extensions/gl/GL_SGIX_texture_coordinate_clamp
new file mode 100644
index 0000000..144c5ee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_coordinate_clamp
@@ -0,0 +1,7 @@
+GL_SGIX_texture_coordinate_clamp
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_coordinate_clamp.txt
+GL_SGIX_texture_coordinate_clamp
+
+ GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
+ GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
+ GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_lod_bias b/glew/auto/extensions/gl/GL_SGIX_texture_lod_bias
new file mode 100644
index 0000000..3013afd
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_lod_bias
@@ -0,0 +1,4 @@
+GL_SGIX_texture_lod_bias
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_lod_bias.txt
+GL_SGIX_texture_lod_bias
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_mipmap_anisotropic b/glew/auto/extensions/gl/GL_SGIX_texture_mipmap_anisotropic
new file mode 100644
index 0000000..912a31c
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_mipmap_anisotropic
@@ -0,0 +1,6 @@
+GL_SGIX_texture_mipmap_anisotropic
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_mipmap_anisotropic.txt
+GL_SGIX_texture_mipmap_anisotropic
+
+ GL_TEXTURE_MIPMAP_ANISOTROPY_SGIX 0x832E
+ GL_MAX_MIPMAP_ANISOTROPY_SGIX 0x832F
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_multi_buffer b/glew/auto/extensions/gl/GL_SGIX_texture_multi_buffer
new file mode 100644
index 0000000..ce0e0cb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_multi_buffer
@@ -0,0 +1,5 @@
+GL_SGIX_texture_multi_buffer
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_multi_buffer.txt
+GL_SGIX_texture_multi_buffer
+
+ GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_phase b/glew/auto/extensions/gl/GL_SGIX_texture_phase
new file mode 100644
index 0000000..533f094
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_phase
@@ -0,0 +1,5 @@
+GL_SGIX_texture_phase
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_phase.txt
+GL_SGIX_texture_phase
+
+ GL_PHASE_SGIX 0x832A
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_range b/glew/auto/extensions/gl/GL_SGIX_texture_range
new file mode 100644
index 0000000..9d92645
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_range
@@ -0,0 +1,32 @@
+GL_SGIX_texture_range
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_range.txt
+GL_SGIX_texture_range
+
+ GL_RGB_SIGNED_SGIX 0x85E0
+ GL_RGBA_SIGNED_SGIX 0x85E1
+ GL_ALPHA_SIGNED_SGIX 0x85E2
+ GL_LUMINANCE_SIGNED_SGIX 0x85E3
+ GL_INTENSITY_SIGNED_SGIX 0x85E4
+ GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5
+ GL_RGB16_SIGNED_SGIX 0x85E6
+ GL_RGBA16_SIGNED_SGIX 0x85E7
+ GL_ALPHA16_SIGNED_SGIX 0x85E8
+ GL_LUMINANCE16_SIGNED_SGIX 0x85E9
+ GL_INTENSITY16_SIGNED_SGIX 0x85EA
+ GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB
+ GL_RGB_EXTENDED_RANGE_SGIX 0x85EC
+ GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED
+ GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE
+ GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF
+ GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0
+ GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1
+ GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2
+ GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3
+ GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4
+ GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5
+ GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6
+ GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7
+ GL_MIN_LUMINANCE_SGIS 0x85F8
+ GL_MAX_LUMINANCE_SGIS 0x85F9
+ GL_MIN_INTENSITY_SGIS 0x85FA
+ GL_MAX_INTENSITY_SGIS 0x85FB
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_scale_bias b/glew/auto/extensions/gl/GL_SGIX_texture_scale_bias
new file mode 100644
index 0000000..83abc43
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_scale_bias
@@ -0,0 +1,8 @@
+GL_SGIX_texture_scale_bias
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_scale_bias.txt
+GL_SGIX_texture_scale_bias
+
+ GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
+ GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
+ GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
+ GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
diff --git a/glew/auto/extensions/gl/GL_SGIX_texture_supersample b/glew/auto/extensions/gl/GL_SGIX_texture_supersample
new file mode 100644
index 0000000..4d508be
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_texture_supersample
@@ -0,0 +1,4 @@
+GL_SGIX_texture_supersample
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_supersample.txt
+GL_SGIX_texture_supersample
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_vector_ops b/glew/auto/extensions/gl/GL_SGIX_vector_ops
new file mode 100644
index 0000000..6fe7a1b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_vector_ops
@@ -0,0 +1,6 @@
+GL_SGIX_vector_ops
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vector_ops.txt
+GL_SGIX_vector_ops
+
+ void glGetVectorOperationSGIX (GLenum operation)
+ void glVectorOperationSGIX (GLenum operation)
diff --git a/glew/auto/extensions/gl/GL_SGIX_vertex_array_object b/glew/auto/extensions/gl/GL_SGIX_vertex_array_object
new file mode 100644
index 0000000..89d24a4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_vertex_array_object
@@ -0,0 +1,10 @@
+GL_SGIX_vertex_array_object
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_array_object.txt
+GL_SGIX_vertex_array_object
+
+ GLboolean glAreVertexArraysResidentSGIX (GLsizei n, const GLuint* arrays, GLboolean* residences)
+ void glBindVertexArraySGIX (GLuint array)
+ void glDeleteVertexArraysSGIX (GLsizei n, const GLuint* arrays)
+ void glGenVertexArraysSGIX (GLsizei n, GLuint* arrays)
+ GLboolean glIsVertexArraySGIX (GLuint array)
+ void glPrioritizeVertexArraysSGIX (GLsizei n, const GLuint* arrays, const GLclampf* priorities)
diff --git a/glew/auto/extensions/gl/GL_SGIX_vertex_preclip b/glew/auto/extensions/gl/GL_SGIX_vertex_preclip
new file mode 100644
index 0000000..541b535
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_vertex_preclip
@@ -0,0 +1,6 @@
+GL_SGIX_vertex_preclip
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_preclip.txt
+GL_SGIX_vertex_preclip
+
+ GL_VERTEX_PRECLIP_SGIX 0x83EE
+ GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
diff --git a/glew/auto/extensions/gl/GL_SGIX_vertex_preclip_hint b/glew/auto/extensions/gl/GL_SGIX_vertex_preclip_hint
new file mode 100644
index 0000000..151bcee
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_vertex_preclip_hint
@@ -0,0 +1,6 @@
+GL_SGIX_vertex_preclip_hint
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_preclip.txt
+GL_SGIX_vertex_preclip_hint
+
+ GL_VERTEX_PRECLIP_SGIX 0x83EE
+ GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
diff --git a/glew/auto/extensions/gl/GL_SGIX_ycrcb b/glew/auto/extensions/gl/GL_SGIX_ycrcb
new file mode 100644
index 0000000..56a65d9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_ycrcb
@@ -0,0 +1,4 @@
+GL_SGIX_ycrcb
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcb.txt
+GL_SGIX_ycrcb
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_ycrcb_subsample b/glew/auto/extensions/gl/GL_SGIX_ycrcb_subsample
new file mode 100644
index 0000000..4b560c2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_ycrcb_subsample
@@ -0,0 +1,4 @@
+GL_SGIX_ycrcb_subsample
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcb_subsample.txt
+GL_SGIX_ycrcb_subsample
+
diff --git a/glew/auto/extensions/gl/GL_SGIX_ycrcba b/glew/auto/extensions/gl/GL_SGIX_ycrcba
new file mode 100644
index 0000000..13bc3d4
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGIX_ycrcba
@@ -0,0 +1,6 @@
+GL_SGIX_ycrcba
+https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcba.txt
+GL_SGIX_ycrcba
+
+ GL_YCRCB_SGIX 0x8318
+ GL_YCRCBA_SGIX 0x8319
diff --git a/glew/auto/extensions/gl/GL_SGI_color_matrix b/glew/auto/extensions/gl/GL_SGI_color_matrix
new file mode 100644
index 0000000..52ecd17
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_color_matrix
@@ -0,0 +1,15 @@
+GL_SGI_color_matrix
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_color_matrix.txt
+GL_SGI_color_matrix
+
+ GL_COLOR_MATRIX_SGI 0x80B1
+ GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
+ GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
+ GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
+ GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
+ GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
+ GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
+ GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
+ GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
+ GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
+ GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
diff --git a/glew/auto/extensions/gl/GL_SGI_color_table b/glew/auto/extensions/gl/GL_SGI_color_table
new file mode 100644
index 0000000..fb7b974
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_color_table
@@ -0,0 +1,27 @@
+GL_SGI_color_table
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_color_table.txt
+GL_SGI_color_table
+
+ GL_COLOR_TABLE_SGI 0x80D0
+ GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
+ GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
+ GL_PROXY_COLOR_TABLE_SGI 0x80D3
+ GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
+ GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
+ GL_COLOR_TABLE_SCALE_SGI 0x80D6
+ GL_COLOR_TABLE_BIAS_SGI 0x80D7
+ GL_COLOR_TABLE_FORMAT_SGI 0x80D8
+ GL_COLOR_TABLE_WIDTH_SGI 0x80D9
+ GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
+ GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
+ GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
+ GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
+ GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
+ GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
+ void glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat* params)
+ void glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint* params)
+ void glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table)
+ void glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+ void glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat* params)
+ void glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint* params)
+ void glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table)
diff --git a/glew/auto/extensions/gl/GL_SGI_complex b/glew/auto/extensions/gl/GL_SGI_complex
new file mode 100644
index 0000000..38462af
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_complex
@@ -0,0 +1,4 @@
+GL_SGI_complex
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_complex.txt
+GL_SGI_complex
+
diff --git a/glew/auto/extensions/gl/GL_SGI_complex_type b/glew/auto/extensions/gl/GL_SGI_complex_type
new file mode 100644
index 0000000..b77ac54
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_complex_type
@@ -0,0 +1,11 @@
+GL_SGI_complex_type
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_complex_type.txt
+GL_SGI_complex_type
+
+ GL_COMPLEX_UNSIGNED_BYTE_SGI 0x81BD
+ GL_COMPLEX_BYTE_SGI 0x81BE
+ GL_COMPLEX_UNSIGNED_SHORT_SGI 0x81BF
+ GL_COMPLEX_SHORT_SGI 0x81C0
+ GL_COMPLEX_UNSIGNED_INT_SGI 0x81C1
+ GL_COMPLEX_INT_SGI 0x81C2
+ GL_COMPLEX_FLOAT_SGI 0x81C3
diff --git a/glew/auto/extensions/gl/GL_SGI_fft b/glew/auto/extensions/gl/GL_SGI_fft
new file mode 100644
index 0000000..cd53834
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_fft
@@ -0,0 +1,16 @@
+GL_SGI_fft
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_fft.txt
+GL_SGI_fft
+
+ GL_PIXEL_TRANSFORM_OPERATOR_SGI 0x81C4
+ GL_CONVOLUTION_SGI 0x81C5
+ GL_FFT_1D_SGI 0x81C6
+ GL_PIXEL_TRANSFORM_SGI 0x81C7
+ GL_MAX_FFT_WIDTH_SGI 0x81C8
+ void glGetPixelTransformParameterfvSGI (GLenum target, GLenum pname, GLfloat* params)
+ void glGetPixelTransformParameterivSGI (GLenum target, GLenum pname, GLint* params)
+ void glPixelTransformParameterfSGI (GLenum target, GLenum pname, GLfloat param)
+ void glPixelTransformParameterfvSGI (GLenum target, GLenum pname, const GLfloat* params)
+ void glPixelTransformParameteriSGI (GLenum target, GLenum pname, GLint param)
+ void glPixelTransformParameterivSGI (GLenum target, GLenum pname, const GLint* params)
+ void glPixelTransformSGI (GLenum target)
diff --git a/glew/auto/extensions/gl/GL_SGI_texture_color_table b/glew/auto/extensions/gl/GL_SGI_texture_color_table
new file mode 100644
index 0000000..ee795dc
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SGI_texture_color_table
@@ -0,0 +1,6 @@
+GL_SGI_texture_color_table
+https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_texture_color_table.txt
+GL_SGI_texture_color_table
+
+ GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
+ GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
diff --git a/glew/auto/extensions/gl/GL_SUNX_constant_data b/glew/auto/extensions/gl/GL_SUNX_constant_data
new file mode 100644
index 0000000..e15b7e2
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUNX_constant_data
@@ -0,0 +1,7 @@
+GL_SUNX_constant_data
+https://www.khronos.org/registry/OpenGL/extensions/SUNX/SUNX_constant_data.txt
+GL_SUNX_constant_data
+
+ GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
+ GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
+ void glFinishTextureSUNX (void)
diff --git a/glew/auto/extensions/gl/GL_SUN_convolution_border_modes b/glew/auto/extensions/gl/GL_SUN_convolution_border_modes
new file mode 100644
index 0000000..62524fb
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_convolution_border_modes
@@ -0,0 +1,5 @@
+GL_SUN_convolution_border_modes
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_convolution_border_modes.txt
+GL_SUN_convolution_border_modes
+
+ GL_WRAP_BORDER_SUN 0x81D4
diff --git a/glew/auto/extensions/gl/GL_SUN_global_alpha b/glew/auto/extensions/gl/GL_SUN_global_alpha
new file mode 100644
index 0000000..94e192b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_global_alpha
@@ -0,0 +1,14 @@
+GL_SUN_global_alpha
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_global_alpha.txt
+GL_SUN_global_alpha
+
+ GL_GLOBAL_ALPHA_SUN 0x81D9
+ GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
+ void glGlobalAlphaFactorbSUN (GLbyte factor)
+ void glGlobalAlphaFactordSUN (GLdouble factor)
+ void glGlobalAlphaFactorfSUN (GLfloat factor)
+ void glGlobalAlphaFactoriSUN (GLint factor)
+ void glGlobalAlphaFactorsSUN (GLshort factor)
+ void glGlobalAlphaFactorubSUN (GLubyte factor)
+ void glGlobalAlphaFactoruiSUN (GLuint factor)
+ void glGlobalAlphaFactorusSUN (GLushort factor)
diff --git a/glew/auto/extensions/gl/GL_SUN_mesh_array b/glew/auto/extensions/gl/GL_SUN_mesh_array
new file mode 100644
index 0000000..06221ff
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_mesh_array
@@ -0,0 +1,6 @@
+GL_SUN_mesh_array
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_mesh_array.txt
+GL_SUN_mesh_array
+
+ GL_QUAD_MESH_SUN 0x8614
+ GL_TRIANGLE_MESH_SUN 0x8615
diff --git a/glew/auto/extensions/gl/GL_SUN_read_video_pixels b/glew/auto/extensions/gl/GL_SUN_read_video_pixels
new file mode 100644
index 0000000..871e6f9
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_read_video_pixels
@@ -0,0 +1,5 @@
+GL_SUN_read_video_pixels
+http://wwws.sun.com/software/graphics/opengl/extensions/gl_sun_read_video_pixels.txt
+GL_SUN_read_video_pixels
+
+ void glReadVideoPixelsSUN (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels)
diff --git a/glew/auto/extensions/gl/GL_SUN_slice_accum b/glew/auto/extensions/gl/GL_SUN_slice_accum
new file mode 100644
index 0000000..24cee68
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_slice_accum
@@ -0,0 +1,5 @@
+GL_SUN_slice_accum
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_slice_accum.txt
+GL_SUN_slice_accum
+
+ GL_SLICE_ACCUM_SUN 0x85CC
diff --git a/glew/auto/extensions/gl/GL_SUN_triangle_list b/glew/auto/extensions/gl/GL_SUN_triangle_list
new file mode 100644
index 0000000..b517b89
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_triangle_list
@@ -0,0 +1,28 @@
+GL_SUN_triangle_list
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_triangle_list.txt
+GL_SUN_triangle_list
+
+ GL_RESTART_SUN 0x01
+ GL_REPLACE_MIDDLE_SUN 0x02
+ GL_REPLACE_OLDEST_SUN 0x03
+ GL_TRIANGLE_LIST_SUN 0x81D7
+ GL_REPLACEMENT_CODE_SUN 0x81D8
+ GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
+ GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
+ GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
+ GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
+ GL_R1UI_V3F_SUN 0x85C4
+ GL_R1UI_C4UB_V3F_SUN 0x85C5
+ GL_R1UI_C3F_V3F_SUN 0x85C6
+ GL_R1UI_N3F_V3F_SUN 0x85C7
+ GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
+ GL_R1UI_T2F_V3F_SUN 0x85C9
+ GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
+ GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
+ void glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void *pointer)
+ void glReplacementCodeubSUN (GLubyte code)
+ void glReplacementCodeubvSUN (const GLubyte* code)
+ void glReplacementCodeuiSUN (GLuint code)
+ void glReplacementCodeuivSUN (const GLuint* code)
+ void glReplacementCodeusSUN (GLushort code)
+ void glReplacementCodeusvSUN (const GLushort* code)
diff --git a/glew/auto/extensions/gl/GL_SUN_vertex b/glew/auto/extensions/gl/GL_SUN_vertex
new file mode 100644
index 0000000..b5fe438
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_SUN_vertex
@@ -0,0 +1,44 @@
+GL_SUN_vertex
+https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_vertex.txt
+GL_SUN_vertex
+
+ void glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)
+ void glColor3fVertex3fvSUN (const GLfloat* c, const GLfloat *v)
+ void glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glColor4fNormal3fVertex3fvSUN (const GLfloat* c, const GLfloat *n, const GLfloat *v)
+ void glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y)
+ void glColor4ubVertex2fvSUN (const GLubyte* c, const GLfloat *v)
+ void glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)
+ void glColor4ubVertex3fvSUN (const GLubyte* c, const GLfloat *v)
+ void glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glNormal3fVertex3fvSUN (const GLfloat* n, const GLfloat *v)
+ void glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiColor3fVertex3fvSUN (const GLuint* rc, const GLfloat *c, const GLfloat *v)
+ void glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v)
+ void glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint* rc, const GLubyte *c, const GLfloat *v)
+ void glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint* rc, const GLfloat *n, const GLfloat *v)
+ void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)
+ void glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v)
+ void glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint* rc, const GLfloat *tc, const GLfloat *v)
+ void glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z)
+ void glReplacementCodeuiVertex3fvSUN (const GLuint* rc, const GLfloat *v)
+ void glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fColor3fVertex3fvSUN (const GLfloat* tc, const GLfloat *c, const GLfloat *v)
+ void glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)
+ void glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fColor4ubVertex3fvSUN (const GLfloat* tc, const GLubyte *c, const GLfloat *v)
+ void glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fNormal3fVertex3fvSUN (const GLfloat* tc, const GLfloat *n, const GLfloat *v)
+ void glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z)
+ void glTexCoord2fVertex3fvSUN (const GLfloat* tc, const GLfloat *v)
+ void glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v)
+ void glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ void glTexCoord4fVertex4fvSUN (const GLfloat* tc, const GLfloat *v)
diff --git a/glew/auto/extensions/gl/GL_VIV_shader_binary b/glew/auto/extensions/gl/GL_VIV_shader_binary
new file mode 100644
index 0000000..7010bcf
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_VIV_shader_binary
@@ -0,0 +1,5 @@
+GL_VIV_shader_binary
+https://www.khronos.org/registry/OpenGL/extensions/VIV/VIV_shader_binary.txt
+GL_VIV_shader_binary
+
+ GL_SHADER_BINARY_VIV 0x8FC4
diff --git a/glew/auto/extensions/gl/GL_WIN_phong_shading b/glew/auto/extensions/gl/GL_WIN_phong_shading
new file mode 100644
index 0000000..d2fb4e1
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_WIN_phong_shading
@@ -0,0 +1,6 @@
+GL_WIN_phong_shading
+https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_phong_shading.txt
+GL_WIN_phong_shading
+
+ GL_PHONG_WIN 0x80EA
+ GL_PHONG_HINT_WIN 0x80EB
diff --git a/glew/auto/extensions/gl/GL_WIN_scene_markerXXX b/glew/auto/extensions/gl/GL_WIN_scene_markerXXX
new file mode 100644
index 0000000..88e2d01
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_WIN_scene_markerXXX
@@ -0,0 +1,4 @@
+GL_WIN_scene_markerXXX
+https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_scene_markerXXX.txt
+GL_WIN_scene_markerXXX
+
diff --git a/glew/auto/extensions/gl/GL_WIN_specular_fog b/glew/auto/extensions/gl/GL_WIN_specular_fog
new file mode 100644
index 0000000..1fae8b8
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_WIN_specular_fog
@@ -0,0 +1,5 @@
+GL_WIN_specular_fog
+https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_specular_fog.txt
+GL_WIN_specular_fog
+
+ GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
diff --git a/glew/auto/extensions/gl/GL_WIN_swap_hint b/glew/auto/extensions/gl/GL_WIN_swap_hint
new file mode 100644
index 0000000..9bb490b
--- /dev/null
+++ b/glew/auto/extensions/gl/GL_WIN_swap_hint
@@ -0,0 +1,5 @@
+GL_WIN_swap_hint
+http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_16zy.asp
+GL_WIN_swap_hint
+
+ void glAddSwapHintRectWIN (GLint x, GLint y, GLsizei width, GLsizei height)
diff --git a/glew/auto/extensions/gl/WGL_3DFX_multisample b/glew/auto/extensions/gl/WGL_3DFX_multisample
new file mode 100644
index 0000000..23e158e
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_3DFX_multisample
@@ -0,0 +1,6 @@
+WGL_3DFX_multisample
+https://www.khronos.org/registry/OpenGL/extensions/3DFX/WGL_3DFX_multisample.txt
+WGL_3DFX_multisample
+
+ WGL_SAMPLE_BUFFERS_3DFX 0x2060
+ WGL_SAMPLES_3DFX 0x2061
diff --git a/glew/auto/extensions/gl/WGL_3DL_stereo_control b/glew/auto/extensions/gl/WGL_3DL_stereo_control
new file mode 100644
index 0000000..e8c8908
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_3DL_stereo_control
@@ -0,0 +1,9 @@
+WGL_3DL_stereo_control
+https://www.khronos.org/registry/OpenGL/extensions/3DL/WGL_3DL_stereo_control.txt
+WGL_3DL_stereo_control
+
+ WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
+ WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
+ WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
+ WGL_STEREO_POLARITY_INVERT_3DL 0x2058
+ BOOL wglSetStereoEmitterState3DL (HDC hDC, UINT uState)
diff --git a/glew/auto/extensions/gl/WGL_AMD_gpu_association b/glew/auto/extensions/gl/WGL_AMD_gpu_association
new file mode 100644
index 0000000..b0ff891
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_AMD_gpu_association
@@ -0,0 +1,23 @@
+WGL_AMD_gpu_association
+https://www.khronos.org/registry/OpenGL/extensions/AMD/WGL_AMD_gpu_association.txt
+WGL_AMD_gpu_association
+
+ WGL_GPU_VENDOR_AMD 0x1F00
+ WGL_GPU_RENDERER_STRING_AMD 0x1F01
+ WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+ WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+ WGL_GPU_RAM_AMD 0x21A3
+ WGL_GPU_CLOCK_AMD 0x21A4
+ WGL_GPU_NUM_PIPES_AMD 0x21A5
+ WGL_GPU_NUM_SIMD_AMD 0x21A6
+ WGL_GPU_NUM_RB_AMD 0x21A7
+ WGL_GPU_NUM_SPI_AMD 0x21A8
+ VOID wglBlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+ HGLRC wglCreateAssociatedContextAMD (UINT id)
+ HGLRC wglCreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const int* attribList)
+ BOOL wglDeleteAssociatedContextAMD (HGLRC hglrc)
+ UINT wglGetContextGPUIDAMD (HGLRC hglrc)
+ HGLRC wglGetCurrentAssociatedContextAMD (void)
+ UINT wglGetGPUIDsAMD (UINT maxCount, UINT* ids)
+ INT wglGetGPUInfoAMD (UINT id, INT property, GLenum dataType, UINT size, void* data)
+ BOOL wglMakeAssociatedContextCurrentAMD (HGLRC hglrc)
diff --git a/glew/auto/extensions/gl/WGL_ARB_buffer_region b/glew/auto/extensions/gl/WGL_ARB_buffer_region
new file mode 100644
index 0000000..0bbee28
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_buffer_region
@@ -0,0 +1,12 @@
+WGL_ARB_buffer_region
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_buffer_region.txt
+WGL_ARB_buffer_region
+
+ WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
+ WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
+ WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
+ WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
+ HANDLE wglCreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType)
+ VOID wglDeleteBufferRegionARB (HANDLE hRegion)
+ BOOL wglRestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc)
+ BOOL wglSaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height)
diff --git a/glew/auto/extensions/gl/WGL_ARB_context_flush_control b/glew/auto/extensions/gl/WGL_ARB_context_flush_control
new file mode 100644
index 0000000..aa7a837
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_context_flush_control
@@ -0,0 +1,7 @@
+WGL_ARB_context_flush_control
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_context_flush_control.txt
+WGL_ARB_context_flush_control
+
+ WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+ WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+ WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
diff --git a/glew/auto/extensions/gl/WGL_ARB_create_context b/glew/auto/extensions/gl/WGL_ARB_create_context
new file mode 100644
index 0000000..298c379
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_create_context
@@ -0,0 +1,12 @@
+WGL_ARB_create_context
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context.txt
+WGL_ARB_create_context
+
+ WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
+ WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+ WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
+ WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
+ WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
+ WGL_CONTEXT_FLAGS_ARB 0x2094
+ ERROR_INVALID_VERSION_ARB 0x2095
+ HGLRC wglCreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const int* attribList)
diff --git a/glew/auto/extensions/gl/WGL_ARB_create_context_no_error b/glew/auto/extensions/gl/WGL_ARB_create_context_no_error
new file mode 100644
index 0000000..8e88b79
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_create_context_no_error
@@ -0,0 +1,5 @@
+WGL_ARB_create_context_no_error
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_no_error.txt
+WGL_ARB_create_context_no_error
+
+ WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
diff --git a/glew/auto/extensions/gl/WGL_ARB_create_context_profile b/glew/auto/extensions/gl/WGL_ARB_create_context_profile
new file mode 100644
index 0000000..28f2079
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_create_context_profile
@@ -0,0 +1,8 @@
+WGL_ARB_create_context_profile
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_profile.txt
+WGL_ARB_create_context_profile
+
+ WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+ WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+ ERROR_INVALID_PROFILE_ARB 0x2096
+ WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
diff --git a/glew/auto/extensions/gl/WGL_ARB_create_context_robustness b/glew/auto/extensions/gl/WGL_ARB_create_context_robustness
new file mode 100644
index 0000000..1fbf6aa
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_create_context_robustness
@@ -0,0 +1,8 @@
+WGL_ARB_create_context_robustness
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_robustness.txt
+WGL_ARB_create_context_robustness
+
+ WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+ WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+ WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+ WGL_NO_RESET_NOTIFICATION_ARB 0x8261
diff --git a/glew/auto/extensions/gl/WGL_ARB_extensions_string b/glew/auto/extensions/gl/WGL_ARB_extensions_string
new file mode 100644
index 0000000..5d3b6f0
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_extensions_string
@@ -0,0 +1,5 @@
+WGL_ARB_extensions_string
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_extensions_string.txt
+WGL_ARB_extensions_string
+
+ const char* wglGetExtensionsStringARB (HDC hdc)
diff --git a/glew/auto/extensions/gl/WGL_ARB_framebuffer_sRGB b/glew/auto/extensions/gl/WGL_ARB_framebuffer_sRGB
new file mode 100644
index 0000000..2292233
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_framebuffer_sRGB
@@ -0,0 +1,5 @@
+WGL_ARB_framebuffer_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_framebuffer_sRGB.txt
+WGL_ARB_framebuffer_sRGB
+
+ WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
diff --git a/glew/auto/extensions/gl/WGL_ARB_make_current_read b/glew/auto/extensions/gl/WGL_ARB_make_current_read
new file mode 100644
index 0000000..7a147dc
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_make_current_read
@@ -0,0 +1,10 @@
+WGL_ARB_make_current_read
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_make_current_read.txt
+WGL_ARB_make_current_read
+
+ ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+ ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
+ HDC wglGetCurrentReadDCARB (void)
+ BOOL wglMakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc)
+ ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+ ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
diff --git a/glew/auto/extensions/gl/WGL_ARB_multisample b/glew/auto/extensions/gl/WGL_ARB_multisample
new file mode 100644
index 0000000..8ec8aee
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_multisample
@@ -0,0 +1,6 @@
+WGL_ARB_multisample
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_multisample.txt
+WGL_ARB_multisample
+
+ WGL_SAMPLE_BUFFERS_ARB 0x2041
+ WGL_SAMPLES_ARB 0x2042
diff --git a/glew/auto/extensions/gl/WGL_ARB_pbuffer b/glew/auto/extensions/gl/WGL_ARB_pbuffer
new file mode 100644
index 0000000..521f491
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_pbuffer
@@ -0,0 +1,18 @@
+WGL_ARB_pbuffer
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pbuffer.txt
+WGL_ARB_pbuffer
+
+ WGL_DRAW_TO_PBUFFER_ARB 0x202D
+ WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
+ WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
+ WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
+ WGL_PBUFFER_LARGEST_ARB 0x2033
+ WGL_PBUFFER_WIDTH_ARB 0x2034
+ WGL_PBUFFER_HEIGHT_ARB 0x2035
+ WGL_PBUFFER_LOST_ARB 0x2036
+ HPBUFFERARB wglCreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList)
+ BOOL wglDestroyPbufferARB (HPBUFFERARB hPbuffer)
+ HDC wglGetPbufferDCARB (HPBUFFERARB hPbuffer)
+ BOOL wglQueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int* piValue)
+ int wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC)
+ DECLARE_HANDLE(HPBUFFERARB);
diff --git a/glew/auto/extensions/gl/WGL_ARB_pixel_format b/glew/auto/extensions/gl/WGL_ARB_pixel_format
new file mode 100644
index 0000000..dd2ca2b
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_pixel_format
@@ -0,0 +1,56 @@
+WGL_ARB_pixel_format
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pixel_format.txt
+WGL_ARB_pixel_format
+
+ WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
+ WGL_DRAW_TO_WINDOW_ARB 0x2001
+ WGL_DRAW_TO_BITMAP_ARB 0x2002
+ WGL_ACCELERATION_ARB 0x2003
+ WGL_NEED_PALETTE_ARB 0x2004
+ WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
+ WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
+ WGL_SWAP_METHOD_ARB 0x2007
+ WGL_NUMBER_OVERLAYS_ARB 0x2008
+ WGL_NUMBER_UNDERLAYS_ARB 0x2009
+ WGL_TRANSPARENT_ARB 0x200A
+ WGL_SHARE_DEPTH_ARB 0x200C
+ WGL_SHARE_STENCIL_ARB 0x200D
+ WGL_SHARE_ACCUM_ARB 0x200E
+ WGL_SUPPORT_GDI_ARB 0x200F
+ WGL_SUPPORT_OPENGL_ARB 0x2010
+ WGL_DOUBLE_BUFFER_ARB 0x2011
+ WGL_STEREO_ARB 0x2012
+ WGL_PIXEL_TYPE_ARB 0x2013
+ WGL_COLOR_BITS_ARB 0x2014
+ WGL_RED_BITS_ARB 0x2015
+ WGL_RED_SHIFT_ARB 0x2016
+ WGL_GREEN_BITS_ARB 0x2017
+ WGL_GREEN_SHIFT_ARB 0x2018
+ WGL_BLUE_BITS_ARB 0x2019
+ WGL_BLUE_SHIFT_ARB 0x201A
+ WGL_ALPHA_BITS_ARB 0x201B
+ WGL_ALPHA_SHIFT_ARB 0x201C
+ WGL_ACCUM_BITS_ARB 0x201D
+ WGL_ACCUM_RED_BITS_ARB 0x201E
+ WGL_ACCUM_GREEN_BITS_ARB 0x201F
+ WGL_ACCUM_BLUE_BITS_ARB 0x2020
+ WGL_ACCUM_ALPHA_BITS_ARB 0x2021
+ WGL_DEPTH_BITS_ARB 0x2022
+ WGL_STENCIL_BITS_ARB 0x2023
+ WGL_AUX_BUFFERS_ARB 0x2024
+ WGL_NO_ACCELERATION_ARB 0x2025
+ WGL_GENERIC_ACCELERATION_ARB 0x2026
+ WGL_FULL_ACCELERATION_ARB 0x2027
+ WGL_SWAP_EXCHANGE_ARB 0x2028
+ WGL_SWAP_COPY_ARB 0x2029
+ WGL_SWAP_UNDEFINED_ARB 0x202A
+ WGL_TYPE_RGBA_ARB 0x202B
+ WGL_TYPE_COLORINDEX_ARB 0x202C
+ WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
+ WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
+ WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
+ WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
+ WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
+ BOOL wglChoosePixelFormatARB (HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats)
+ BOOL wglGetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT* pfValues)
+ BOOL wglGetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int* piValues)
diff --git a/glew/auto/extensions/gl/WGL_ARB_pixel_format_float b/glew/auto/extensions/gl/WGL_ARB_pixel_format_float
new file mode 100644
index 0000000..e246746
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_pixel_format_float
@@ -0,0 +1,5 @@
+WGL_ARB_pixel_format_float
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pixel_format_float.txt
+WGL_ARB_pixel_format_float
+
+ WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
diff --git a/glew/auto/extensions/gl/WGL_ARB_render_texture b/glew/auto/extensions/gl/WGL_ARB_render_texture
new file mode 100644
index 0000000..b6b9084
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_render_texture
@@ -0,0 +1,40 @@
+WGL_ARB_render_texture
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_render_texture.txt
+WGL_ARB_render_texture
+
+ WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
+ WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
+ WGL_TEXTURE_FORMAT_ARB 0x2072
+ WGL_TEXTURE_TARGET_ARB 0x2073
+ WGL_MIPMAP_TEXTURE_ARB 0x2074
+ WGL_TEXTURE_RGB_ARB 0x2075
+ WGL_TEXTURE_RGBA_ARB 0x2076
+ WGL_NO_TEXTURE_ARB 0x2077
+ WGL_TEXTURE_CUBE_MAP_ARB 0x2078
+ WGL_TEXTURE_1D_ARB 0x2079
+ WGL_TEXTURE_2D_ARB 0x207A
+ WGL_MIPMAP_LEVEL_ARB 0x207B
+ WGL_CUBE_MAP_FACE_ARB 0x207C
+ WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
+ WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
+ WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
+ WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
+ WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
+ WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
+ WGL_FRONT_LEFT_ARB 0x2083
+ WGL_FRONT_RIGHT_ARB 0x2084
+ WGL_BACK_LEFT_ARB 0x2085
+ WGL_BACK_RIGHT_ARB 0x2086
+ WGL_AUX0_ARB 0x2087
+ WGL_AUX1_ARB 0x2088
+ WGL_AUX2_ARB 0x2089
+ WGL_AUX3_ARB 0x208A
+ WGL_AUX4_ARB 0x208B
+ WGL_AUX5_ARB 0x208C
+ WGL_AUX6_ARB 0x208D
+ WGL_AUX7_ARB 0x208E
+ WGL_AUX8_ARB 0x208F
+ WGL_AUX9_ARB 0x2090
+ BOOL wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer)
+ BOOL wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer)
+ BOOL wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, const int* piAttribList)
diff --git a/glew/auto/extensions/gl/WGL_ARB_robustness_application_isolation b/glew/auto/extensions/gl/WGL_ARB_robustness_application_isolation
new file mode 100644
index 0000000..fdeeede
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_robustness_application_isolation
@@ -0,0 +1,5 @@
+WGL_ARB_robustness_application_isolation
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_robustness_application_isolation.txt
+WGL_ARB_robustness_application_isolation
+
+ WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
diff --git a/glew/auto/extensions/gl/WGL_ARB_robustness_share_group_isolation b/glew/auto/extensions/gl/WGL_ARB_robustness_share_group_isolation
new file mode 100644
index 0000000..dd81503
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ARB_robustness_share_group_isolation
@@ -0,0 +1,5 @@
+WGL_ARB_robustness_share_group_isolation
+https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_robustness_share_group_isolation.txt
+WGL_ARB_robustness_share_group_isolation
+
+ WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
diff --git a/glew/auto/extensions/gl/WGL_ATI_pixel_format_float b/glew/auto/extensions/gl/WGL_ATI_pixel_format_float
new file mode 100644
index 0000000..28a3b79
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ATI_pixel_format_float
@@ -0,0 +1,7 @@
+WGL_ATI_pixel_format_float
+https://www.khronos.org/registry/OpenGL/extensions/ATI/WGL_ATI_pixel_format_float.txt
+WGL_ATI_pixel_format_float
+
+ WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
+ GL_RGBA_FLOAT_MODE_ATI 0x8820
+ GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
diff --git a/glew/auto/extensions/gl/WGL_ATI_render_texture_rectangle b/glew/auto/extensions/gl/WGL_ATI_render_texture_rectangle
new file mode 100644
index 0000000..c75ea3c
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_ATI_render_texture_rectangle
@@ -0,0 +1,5 @@
+WGL_ATI_render_texture_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/ATI/WGL_ATI_render_texture_rectangle.txt
+WGL_ATI_render_texture_rectangle
+
+ WGL_TEXTURE_RECTANGLE_ATI 0x21A5
diff --git a/glew/auto/extensions/gl/WGL_EXT_colorspace b/glew/auto/extensions/gl/WGL_EXT_colorspace
new file mode 100644
index 0000000..94d45fb
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_colorspace
@@ -0,0 +1,7 @@
+WGL_EXT_colorspace
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_colorspace.txt
+WGL_EXT_colorspace
+
+ WGL_COLORSPACE_SRGB_EXT 0x3089
+ WGL_COLORSPACE_LINEAR_EXT 0x308A
+ WGL_COLORSPACE_EXT 0x309D
diff --git a/glew/auto/extensions/gl/WGL_EXT_create_context_es2_profile b/glew/auto/extensions/gl/WGL_EXT_create_context_es2_profile
new file mode 100644
index 0000000..a4b060f
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_create_context_es2_profile
@@ -0,0 +1,5 @@
+WGL_EXT_create_context_es2_profile
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_create_context_es2_profile.txt
+WGL_EXT_create_context_es2_profile
+
+ WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
diff --git a/glew/auto/extensions/gl/WGL_EXT_create_context_es_profile b/glew/auto/extensions/gl/WGL_EXT_create_context_es_profile
new file mode 100644
index 0000000..7e503c4
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_create_context_es_profile
@@ -0,0 +1,5 @@
+WGL_EXT_create_context_es_profile
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_create_context_es_profile.txt
+WGL_EXT_create_context_es_profile
+
+ WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
diff --git a/glew/auto/extensions/gl/WGL_EXT_depth_float b/glew/auto/extensions/gl/WGL_EXT_depth_float
new file mode 100644
index 0000000..a389b80
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_depth_float
@@ -0,0 +1,5 @@
+WGL_EXT_depth_float
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_depth_float.txt
+WGL_EXT_depth_float
+
+ WGL_DEPTH_FLOAT_EXT 0x2040
diff --git a/glew/auto/extensions/gl/WGL_EXT_display_color_table b/glew/auto/extensions/gl/WGL_EXT_display_color_table
new file mode 100644
index 0000000..77aee2d
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_display_color_table
@@ -0,0 +1,8 @@
+WGL_EXT_display_color_table
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_display_color_table.txt
+WGL_EXT_display_color_table
+
+ GLboolean wglBindDisplayColorTableEXT (GLushort id)
+ GLboolean wglCreateDisplayColorTableEXT (GLushort id)
+ VOID wglDestroyDisplayColorTableEXT (GLushort id)
+ GLboolean wglLoadDisplayColorTableEXT (const GLushort* table, GLuint length)
diff --git a/glew/auto/extensions/gl/WGL_EXT_extensions_string b/glew/auto/extensions/gl/WGL_EXT_extensions_string
new file mode 100644
index 0000000..6ff92eb
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_extensions_string
@@ -0,0 +1,5 @@
+WGL_EXT_extensions_string
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_extensions_string.txt
+WGL_EXT_extensions_string
+
+ const char* wglGetExtensionsStringEXT (void)
diff --git a/glew/auto/extensions/gl/WGL_EXT_framebuffer_sRGB b/glew/auto/extensions/gl/WGL_EXT_framebuffer_sRGB
new file mode 100644
index 0000000..f567bb7
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_framebuffer_sRGB
@@ -0,0 +1,5 @@
+WGL_EXT_framebuffer_sRGB
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_framebuffer_sRGB.txt
+WGL_EXT_framebuffer_sRGB
+
+ WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
diff --git a/glew/auto/extensions/gl/WGL_EXT_make_current_read b/glew/auto/extensions/gl/WGL_EXT_make_current_read
new file mode 100644
index 0000000..a95be50
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_make_current_read
@@ -0,0 +1,8 @@
+WGL_EXT_make_current_read
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_make_current_read.txt
+WGL_EXT_make_current_read
+
+ ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
+ HDC wglGetCurrentReadDCEXT (void)
+ BOOL wglMakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc)
+ ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
diff --git a/glew/auto/extensions/gl/WGL_EXT_multisample b/glew/auto/extensions/gl/WGL_EXT_multisample
new file mode 100644
index 0000000..73c381e
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_multisample
@@ -0,0 +1,6 @@
+WGL_EXT_multisample
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_multisample.txt
+WGL_EXT_multisample
+
+ WGL_SAMPLE_BUFFERS_EXT 0x2041
+ WGL_SAMPLES_EXT 0x2042
diff --git a/glew/auto/extensions/gl/WGL_EXT_pbuffer b/glew/auto/extensions/gl/WGL_EXT_pbuffer
new file mode 100644
index 0000000..e9e6cec
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_pbuffer
@@ -0,0 +1,19 @@
+WGL_EXT_pbuffer
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pbuffer.txt
+WGL_EXT_pbuffer
+
+ WGL_DRAW_TO_PBUFFER_EXT 0x202D
+ WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
+ WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
+ WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
+ WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
+ WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
+ WGL_PBUFFER_LARGEST_EXT 0x2033
+ WGL_PBUFFER_WIDTH_EXT 0x2034
+ WGL_PBUFFER_HEIGHT_EXT 0x2035
+ HPBUFFEREXT wglCreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList)
+ BOOL wglDestroyPbufferEXT (HPBUFFEREXT hPbuffer)
+ HDC wglGetPbufferDCEXT (HPBUFFEREXT hPbuffer)
+ BOOL wglQueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue)
+ int wglReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC)
+ DECLARE_HANDLE(HPBUFFEREXT);
diff --git a/glew/auto/extensions/gl/WGL_EXT_pixel_format b/glew/auto/extensions/gl/WGL_EXT_pixel_format
new file mode 100644
index 0000000..d846c4a
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_pixel_format
@@ -0,0 +1,52 @@
+WGL_EXT_pixel_format
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pixel_format.txt
+WGL_EXT_pixel_format
+
+ WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
+ WGL_DRAW_TO_WINDOW_EXT 0x2001
+ WGL_DRAW_TO_BITMAP_EXT 0x2002
+ WGL_ACCELERATION_EXT 0x2003
+ WGL_NEED_PALETTE_EXT 0x2004
+ WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
+ WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
+ WGL_SWAP_METHOD_EXT 0x2007
+ WGL_NUMBER_OVERLAYS_EXT 0x2008
+ WGL_NUMBER_UNDERLAYS_EXT 0x2009
+ WGL_TRANSPARENT_EXT 0x200A
+ WGL_TRANSPARENT_VALUE_EXT 0x200B
+ WGL_SHARE_DEPTH_EXT 0x200C
+ WGL_SHARE_STENCIL_EXT 0x200D
+ WGL_SHARE_ACCUM_EXT 0x200E
+ WGL_SUPPORT_GDI_EXT 0x200F
+ WGL_SUPPORT_OPENGL_EXT 0x2010
+ WGL_DOUBLE_BUFFER_EXT 0x2011
+ WGL_STEREO_EXT 0x2012
+ WGL_PIXEL_TYPE_EXT 0x2013
+ WGL_COLOR_BITS_EXT 0x2014
+ WGL_RED_BITS_EXT 0x2015
+ WGL_RED_SHIFT_EXT 0x2016
+ WGL_GREEN_BITS_EXT 0x2017
+ WGL_GREEN_SHIFT_EXT 0x2018
+ WGL_BLUE_BITS_EXT 0x2019
+ WGL_BLUE_SHIFT_EXT 0x201A
+ WGL_ALPHA_BITS_EXT 0x201B
+ WGL_ALPHA_SHIFT_EXT 0x201C
+ WGL_ACCUM_BITS_EXT 0x201D
+ WGL_ACCUM_RED_BITS_EXT 0x201E
+ WGL_ACCUM_GREEN_BITS_EXT 0x201F
+ WGL_ACCUM_BLUE_BITS_EXT 0x2020
+ WGL_ACCUM_ALPHA_BITS_EXT 0x2021
+ WGL_DEPTH_BITS_EXT 0x2022
+ WGL_STENCIL_BITS_EXT 0x2023
+ WGL_AUX_BUFFERS_EXT 0x2024
+ WGL_NO_ACCELERATION_EXT 0x2025
+ WGL_GENERIC_ACCELERATION_EXT 0x2026
+ WGL_FULL_ACCELERATION_EXT 0x2027
+ WGL_SWAP_EXCHANGE_EXT 0x2028
+ WGL_SWAP_COPY_EXT 0x2029
+ WGL_SWAP_UNDEFINED_EXT 0x202A
+ WGL_TYPE_RGBA_EXT 0x202B
+ WGL_TYPE_COLORINDEX_EXT 0x202C
+ BOOL wglChoosePixelFormatEXT (HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats)
+ BOOL wglGetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT* pfValues)
+ BOOL wglGetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int* piValues)
diff --git a/glew/auto/extensions/gl/WGL_EXT_pixel_format_packed_float b/glew/auto/extensions/gl/WGL_EXT_pixel_format_packed_float
new file mode 100644
index 0000000..6ee8f9d
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_pixel_format_packed_float
@@ -0,0 +1,5 @@
+WGL_EXT_pixel_format_packed_float
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pixel_format_packed_float.txt
+WGL_EXT_pixel_format_packed_float
+
+ WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
diff --git a/glew/auto/extensions/gl/WGL_EXT_swap_control b/glew/auto/extensions/gl/WGL_EXT_swap_control
new file mode 100644
index 0000000..c346dd4
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_swap_control
@@ -0,0 +1,6 @@
+WGL_EXT_swap_control
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_swap_control.txt
+WGL_EXT_swap_control
+
+ int wglGetSwapIntervalEXT (void)
+ BOOL wglSwapIntervalEXT (int interval)
diff --git a/glew/auto/extensions/gl/WGL_EXT_swap_control_tear b/glew/auto/extensions/gl/WGL_EXT_swap_control_tear
new file mode 100644
index 0000000..fdcb55b
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_EXT_swap_control_tear
@@ -0,0 +1,4 @@
+WGL_EXT_swap_control_tear
+https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_swap_control_tear.txt
+WGL_EXT_swap_control_tear
+
diff --git a/glew/auto/extensions/gl/WGL_I3D_digital_video_control b/glew/auto/extensions/gl/WGL_I3D_digital_video_control
new file mode 100644
index 0000000..fd44df1
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_digital_video_control
@@ -0,0 +1,10 @@
+WGL_I3D_digital_video_control
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_digital_video_control.txt
+WGL_I3D_digital_video_control
+
+ WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
+ WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
+ WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
+ WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
+ BOOL wglGetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int* piValue)
+ BOOL wglSetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const int* piValue)
diff --git a/glew/auto/extensions/gl/WGL_I3D_gamma b/glew/auto/extensions/gl/WGL_I3D_gamma
new file mode 100644
index 0000000..1cc8076
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_gamma
@@ -0,0 +1,10 @@
+WGL_I3D_gamma
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_gamma.txt
+WGL_I3D_gamma
+
+ WGL_GAMMA_TABLE_SIZE_I3D 0x204E
+ WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
+ BOOL wglGetGammaTableI3D (HDC hDC, int iEntries, USHORT* puRed, USHORT* puGreen, USHORT* puBlue)
+ BOOL wglGetGammaTableParametersI3D (HDC hDC, int iAttribute, int* piValue)
+ BOOL wglSetGammaTableI3D (HDC hDC, int iEntries, const USHORT* puRed, const USHORT* puGreen, const USHORT* puBlue)
+ BOOL wglSetGammaTableParametersI3D (HDC hDC, int iAttribute, const int* piValue)
diff --git a/glew/auto/extensions/gl/WGL_I3D_genlock b/glew/auto/extensions/gl/WGL_I3D_genlock
new file mode 100644
index 0000000..11efee9
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_genlock
@@ -0,0 +1,25 @@
+WGL_I3D_genlock
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_genlock.txt
+WGL_I3D_genlock
+
+ WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
+ WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045
+ WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046
+ WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047
+ WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
+ WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
+ WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
+ WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
+ WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
+ BOOL wglDisableGenlockI3D (HDC hDC)
+ BOOL wglEnableGenlockI3D (HDC hDC)
+ BOOL wglGenlockSampleRateI3D (HDC hDC, UINT uRate)
+ BOOL wglGenlockSourceDelayI3D (HDC hDC, UINT uDelay)
+ BOOL wglGenlockSourceEdgeI3D (HDC hDC, UINT uEdge)
+ BOOL wglGenlockSourceI3D (HDC hDC, UINT uSource)
+ BOOL wglGetGenlockSampleRateI3D (HDC hDC, UINT* uRate)
+ BOOL wglGetGenlockSourceDelayI3D (HDC hDC, UINT* uDelay)
+ BOOL wglGetGenlockSourceEdgeI3D (HDC hDC, UINT* uEdge)
+ BOOL wglGetGenlockSourceI3D (HDC hDC, UINT* uSource)
+ BOOL wglIsEnabledGenlockI3D (HDC hDC, BOOL* pFlag)
+ BOOL wglQueryGenlockMaxSourceDelayI3D (HDC hDC, UINT* uMaxLineDelay, UINT* uMaxPixelDelay)
diff --git a/glew/auto/extensions/gl/WGL_I3D_image_buffer b/glew/auto/extensions/gl/WGL_I3D_image_buffer
new file mode 100644
index 0000000..09d7ca9
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_image_buffer
@@ -0,0 +1,10 @@
+WGL_I3D_image_buffer
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_image_buffer.txt
+WGL_I3D_image_buffer
+
+ WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
+ WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
+ BOOL wglAssociateImageBufferEventsI3D (HDC hDC, const HANDLE* pEvent, const LPVOID* pAddress, const DWORD* pSize, UINT count)
+ LPVOID wglCreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags)
+ BOOL wglDestroyImageBufferI3D (HDC hDC, LPVOID pAddress)
+ BOOL wglReleaseImageBufferEventsI3D (HDC hDC, const LPVOID* pAddress, UINT count)
diff --git a/glew/auto/extensions/gl/WGL_I3D_swap_frame_lock b/glew/auto/extensions/gl/WGL_I3D_swap_frame_lock
new file mode 100644
index 0000000..43b578f
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_swap_frame_lock
@@ -0,0 +1,8 @@
+WGL_I3D_swap_frame_lock
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_swap_frame_lock.txt
+WGL_I3D_swap_frame_lock
+
+ BOOL wglDisableFrameLockI3D (void)
+ BOOL wglEnableFrameLockI3D (void)
+ BOOL wglIsEnabledFrameLockI3D (BOOL* pFlag)
+ BOOL wglQueryFrameLockMasterI3D (BOOL* pFlag)
diff --git a/glew/auto/extensions/gl/WGL_I3D_swap_frame_usage b/glew/auto/extensions/gl/WGL_I3D_swap_frame_usage
new file mode 100644
index 0000000..291c54a
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_I3D_swap_frame_usage
@@ -0,0 +1,8 @@
+WGL_I3D_swap_frame_usage
+https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_swap_frame_usage.txt
+WGL_I3D_swap_frame_usage
+
+ BOOL wglBeginFrameTrackingI3D (void)
+ BOOL wglEndFrameTrackingI3D (void)
+ BOOL wglGetFrameUsageI3D (float* pUsage)
+ BOOL wglQueryFrameTrackingI3D (DWORD* pFrameCount, DWORD* pMissedFrames, float* pLastMissedUsage)
diff --git a/glew/auto/extensions/gl/WGL_NV_DX_interop b/glew/auto/extensions/gl/WGL_NV_DX_interop
new file mode 100644
index 0000000..640e99f
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_DX_interop
@@ -0,0 +1,15 @@
+WGL_NV_DX_interop
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_DX_interop.txt
+WGL_NV_DX_interop
+
+ WGL_ACCESS_READ_ONLY_NV 0x00000000
+ WGL_ACCESS_READ_WRITE_NV 0x00000001
+ WGL_ACCESS_WRITE_DISCARD_NV 0x00000002
+ BOOL wglDXCloseDeviceNV (HANDLE hDevice)
+ BOOL wglDXLockObjectsNV (HANDLE hDevice, GLint count, HANDLE* hObjects)
+ BOOL wglDXObjectAccessNV (HANDLE hObject, GLenum access)
+ HANDLE wglDXOpenDeviceNV (void* dxDevice)
+ HANDLE wglDXRegisterObjectNV (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access)
+ BOOL wglDXSetResourceShareHandleNV (void* dxObject, HANDLE shareHandle)
+ BOOL wglDXUnlockObjectsNV (HANDLE hDevice, GLint count, HANDLE* hObjects)
+ BOOL wglDXUnregisterObjectNV (HANDLE hDevice, HANDLE hObject)
diff --git a/glew/auto/extensions/gl/WGL_NV_DX_interop2 b/glew/auto/extensions/gl/WGL_NV_DX_interop2
new file mode 100644
index 0000000..b900118
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_DX_interop2
@@ -0,0 +1,4 @@
+WGL_NV_DX_interop2
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_DX_interop2.txt
+WGL_NV_DX_interop2
+
diff --git a/glew/auto/extensions/gl/WGL_NV_copy_image b/glew/auto/extensions/gl/WGL_NV_copy_image
new file mode 100644
index 0000000..2ca0ad8
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_copy_image
@@ -0,0 +1,6 @@
+WGL_NV_copy_image
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_copy_image.txt
+WGL_NV_copy_image
+
+ BOOL wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
+ BOOL wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth)
diff --git a/glew/auto/extensions/gl/WGL_NV_delay_before_swap b/glew/auto/extensions/gl/WGL_NV_delay_before_swap
new file mode 100644
index 0000000..9647e2a
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_delay_before_swap
@@ -0,0 +1,5 @@
+WGL_NV_delay_before_swap
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_delay_before_swap.txt
+WGL_NV_delay_before_swap
+
+ BOOL wglDelayBeforeSwapNV (HDC hDC, GLfloat seconds)
diff --git a/glew/auto/extensions/gl/WGL_NV_float_buffer b/glew/auto/extensions/gl/WGL_NV_float_buffer
new file mode 100644
index 0000000..50a0d82
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_float_buffer
@@ -0,0 +1,13 @@
+WGL_NV_float_buffer
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_float_buffer.txt
+WGL_NV_float_buffer
+
+ WGL_FLOAT_COMPONENTS_NV 0x20B0
+ WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
+ WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
+ WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
+ WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
+ WGL_TEXTURE_FLOAT_R_NV 0x20B5
+ WGL_TEXTURE_FLOAT_RG_NV 0x20B6
+ WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
+ WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
diff --git a/glew/auto/extensions/gl/WGL_NV_gpu_affinity b/glew/auto/extensions/gl/WGL_NV_gpu_affinity
new file mode 100644
index 0000000..61ed3f1
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_gpu_affinity
@@ -0,0 +1,13 @@
+WGL_NV_gpu_affinity
+http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt
+WGL_NV_gpu_affinity
+
+ WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
+ WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
+ BOOL wglEnumGpusNV (UINT iGpuIndex, HGPUNV *phGpu)
+ BOOL wglEnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice)
+ HDC wglCreateAffinityDCNV (const HGPUNV *phGpuList)
+ BOOL wglEnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu)
+ BOOL wglDeleteDCNV (HDC hdc)
+ DECLARE_HANDLE(HGPUNV);
+ typedef struct _GPU_DEVICE { DWORD cb; CHAR DeviceName[32]; CHAR DeviceString[128]; DWORD Flags; RECT rcVirtualScreen; } GPU_DEVICE, *PGPU_DEVICE;
diff --git a/glew/auto/extensions/gl/WGL_NV_multigpu_context b/glew/auto/extensions/gl/WGL_NV_multigpu_context
new file mode 100644
index 0000000..58bbb79
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_multigpu_context
@@ -0,0 +1,9 @@
+WGL_NV_multigpu_context
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_multigpu_context.txt
+WGL_NV_multigpu_context
+
+ WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
+ WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+ WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+ WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+ WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
diff --git a/glew/auto/extensions/gl/WGL_NV_multisample_coverage b/glew/auto/extensions/gl/WGL_NV_multisample_coverage
new file mode 100644
index 0000000..89ffbc3
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_multisample_coverage
@@ -0,0 +1,6 @@
+WGL_NV_multisample_coverage
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_multisample_coverage.txt
+WGL_NV_multisample_coverage
+
+ WGL_COVERAGE_SAMPLES_NV 0x2042
+ WGL_COLOR_SAMPLES_NV 0x20B9
diff --git a/glew/auto/extensions/gl/WGL_NV_present_video b/glew/auto/extensions/gl/WGL_NV_present_video
new file mode 100644
index 0000000..3bc4f02
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_present_video
@@ -0,0 +1,9 @@
+WGL_NV_present_video
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_present_video.txt
+WGL_NV_present_video
+
+ WGL_NUM_VIDEO_SLOTS_NV 0x20F0
+ BOOL wglBindVideoDeviceNV (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int* piAttribList)
+ int wglEnumerateVideoDevicesNV (HDC hDc, HVIDEOOUTPUTDEVICENV* phDeviceList)
+ BOOL wglQueryCurrentContextNV (int iAttribute, int* piValue)
+ DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
diff --git a/glew/auto/extensions/gl/WGL_NV_render_depth_texture b/glew/auto/extensions/gl/WGL_NV_render_depth_texture
new file mode 100644
index 0000000..3f2aad6
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_render_depth_texture
@@ -0,0 +1,9 @@
+WGL_NV_render_depth_texture
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_render_depth_texture.txt
+WGL_NV_render_depth_texture
+
+ WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
+ WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
+ WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
+ WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
+ WGL_DEPTH_COMPONENT_NV 0x20A7
diff --git a/glew/auto/extensions/gl/WGL_NV_render_texture_rectangle b/glew/auto/extensions/gl/WGL_NV_render_texture_rectangle
new file mode 100644
index 0000000..1aaba98
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_render_texture_rectangle
@@ -0,0 +1,7 @@
+WGL_NV_render_texture_rectangle
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_render_texture_rectangle.txt
+WGL_NV_render_texture_rectangle
+
+ WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
+ WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
+ WGL_TEXTURE_RECTANGLE_NV 0x20A2
diff --git a/glew/auto/extensions/gl/WGL_NV_swap_group b/glew/auto/extensions/gl/WGL_NV_swap_group
new file mode 100644
index 0000000..af094b6
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_swap_group
@@ -0,0 +1,10 @@
+WGL_NV_swap_group
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_swap_group.txt
+WGL_NV_swap_group
+
+ BOOL wglBindSwapBarrierNV (GLuint group, GLuint barrier)
+ BOOL wglJoinSwapGroupNV (HDC hDC, GLuint group)
+ BOOL wglQueryFrameCountNV (HDC hDC, GLuint* count)
+ BOOL wglQueryMaxSwapGroupsNV (HDC hDC, GLuint* maxGroups, GLuint* maxBarriers)
+ BOOL wglQuerySwapGroupNV (HDC hDC, GLuint* group, GLuint* barrier)
+ BOOL wglResetFrameCountNV (HDC hDC)
diff --git a/glew/auto/extensions/gl/WGL_NV_vertex_array_range b/glew/auto/extensions/gl/WGL_NV_vertex_array_range
new file mode 100644
index 0000000..b51318d
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_vertex_array_range
@@ -0,0 +1,6 @@
+WGL_NV_vertex_array_range
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_vertex_array_range.txt
+WGL_NV_vertex_array_range
+
+ void* wglAllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority)
+ void wglFreeMemoryNV (void* pointer)
diff --git a/glew/auto/extensions/gl/WGL_NV_video_capture b/glew/auto/extensions/gl/WGL_NV_video_capture
new file mode 100644
index 0000000..5c33f9d
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_video_capture
@@ -0,0 +1,12 @@
+WGL_NV_video_capture
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_video_capture.txt
+WGL_NV_video_capture
+
+ WGL_UNIQUE_ID_NV 0x20CE
+ WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+ BOOL wglBindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice)
+ UINT wglEnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList)
+ BOOL wglLockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice)
+ BOOL wglQueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue)
+ BOOL wglReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice)
+ DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
diff --git a/glew/auto/extensions/gl/WGL_NV_video_output b/glew/auto/extensions/gl/WGL_NV_video_output
new file mode 100644
index 0000000..f7cc817
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_NV_video_output
@@ -0,0 +1,24 @@
+WGL_NV_video_output
+https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_video_output.txt
+WGL_NV_video_output
+
+ WGL_BIND_TO_VIDEO_RGB_NV 0x20C0
+ WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1
+ WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
+ WGL_VIDEO_OUT_COLOR_NV 0x20C3
+ WGL_VIDEO_OUT_ALPHA_NV 0x20C4
+ WGL_VIDEO_OUT_DEPTH_NV 0x20C5
+ WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+ WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+ WGL_VIDEO_OUT_FRAME 0x20C8
+ WGL_VIDEO_OUT_FIELD_1 0x20C9
+ WGL_VIDEO_OUT_FIELD_2 0x20CA
+ WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
+ WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
+ BOOL wglBindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer)
+ BOOL wglGetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice)
+ BOOL wglGetVideoInfoNV (HPVIDEODEV hpVideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo)
+ BOOL wglReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice)
+ BOOL wglReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer)
+ BOOL wglSendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, unsigned long* pulCounterPbuffer, BOOL bBlock)
+ DECLARE_HANDLE(HPVIDEODEV);
diff --git a/glew/auto/extensions/gl/WGL_OML_sync_control b/glew/auto/extensions/gl/WGL_OML_sync_control
new file mode 100644
index 0000000..6129270
--- /dev/null
+++ b/glew/auto/extensions/gl/WGL_OML_sync_control
@@ -0,0 +1,10 @@
+WGL_OML_sync_control
+https://www.khronos.org/registry/OpenGL/extensions/OML/WGL_OML_sync_control.txt
+WGL_OML_sync_control
+
+ BOOL wglGetMscRateOML (HDC hdc, INT32* numerator, INT32* denominator)
+ BOOL wglGetSyncValuesOML (HDC hdc, INT64* ust, INT64* msc, INT64* sbc)
+ INT64 wglSwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder)
+ INT64 wglSwapLayerBuffersMscOML (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder)
+ BOOL wglWaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64* msc, INT64* sbc)
+ BOOL wglWaitForSbcOML (HDC hdc, INT64 target_sbc, INT64* ust, INT64* msc, INT64* sbc)
diff --git a/glew/auto/src/eglew_head.h b/glew/auto/src/eglew_head.h
new file mode 100644
index 0000000..121efaf
--- /dev/null
+++ b/glew/auto/src/eglew_head.h
@@ -0,0 +1,98 @@
+#ifndef __eglew_h__
+#define __eglew_h__
+#define __EGLEW_H__
+
+#ifdef __eglext_h_
+#error eglext.h included before eglew.h
+#endif
+
+#if defined(__egl_h_)
+#error egl.h included before eglew.h
+#endif
+
+#define __eglext_h_
+
+#define __egl_h_
+
+#ifndef EGLAPIENTRY
+#define EGLAPIENTRY
+#endif
+#ifndef EGLAPI
+#define EGLAPI extern
+#endif
+
+/* EGL Types */
+#include <sys/types.h>
+
+#include <KHR/khrplatform.h>
+#include <EGL/eglplatform.h>
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int32_t EGLint;
+
+typedef unsigned int EGLBoolean;
+typedef void *EGLDisplay;
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+typedef void (*__eglMustCastToProperFunctionPointerType)(void);
+
+typedef unsigned int EGLenum;
+typedef void *EGLClientBuffer;
+
+typedef void *EGLSync;
+typedef intptr_t EGLAttrib;
+typedef khronos_utime_nanoseconds_t EGLTime;
+typedef void *EGLImage;
+
+typedef void *EGLSyncKHR;
+typedef intptr_t EGLAttribKHR;
+typedef void *EGLLabelKHR;
+typedef void *EGLObjectKHR;
+typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+typedef void *EGLImageKHR;
+typedef void *EGLStreamKHR;
+typedef khronos_uint64_t EGLuint64KHR;
+typedef int EGLNativeFileDescriptorKHR;
+typedef khronos_ssize_t EGLsizeiANDROID;
+typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
+typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
+typedef void *EGLDeviceEXT;
+typedef void *EGLOutputLayerEXT;
+typedef void *EGLOutputPortEXT;
+typedef void *EGLSyncNV;
+typedef khronos_utime_nanoseconds_t EGLTimeNV;
+typedef khronos_utime_nanoseconds_t EGLuint64NV;
+typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+
+struct EGLClientPixmapHI;
+struct AHardwareBuffer;
+
+/* Wayland types for WL_bind_wayland_display purposes */
+struct wl_buffer;
+struct wl_display;
+struct wl_resource;
+
+#define EGL_DONT_CARE ((EGLint)-1)
+
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_IMAGE ((EGLImage)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+#define EGL_NO_SYNC ((EGLSync)0)
+
+#define EGL_UNKNOWN ((EGLint)-1)
+
+#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
+
+EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
diff --git a/glew/auto/src/eglew_mid.h b/glew/auto/src/eglew_mid.h
new file mode 100644
index 0000000..f94a149
--- /dev/null
+++ b/glew/auto/src/eglew_mid.h
@@ -0,0 +1,4 @@
+/* ------------------------------------------------------------------------- */
+
+#define EGLEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define EGLEW_VAR_EXPORT GLEW_VAR_EXPORT
diff --git a/glew/auto/src/eglew_tail.h b/glew/auto/src/eglew_tail.h
new file mode 100644
index 0000000..a91a76e
--- /dev/null
+++ b/glew/auto/src/eglew_tail.h
@@ -0,0 +1,15 @@
+/* ------------------------------------------------------------------------ */
+
+GLEWAPI GLenum GLEWAPIENTRY eglewInit (EGLDisplay display);
+GLEWAPI GLboolean GLEWAPIENTRY eglewIsSupported (const char *name);
+
+#define EGLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#define EGLEW_GET_FUN(x) x
+
+GLEWAPI GLboolean GLEWAPIENTRY eglewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __eglew_h__ */
diff --git a/glew/auto/src/footer.html b/glew/auto/src/footer.html
new file mode 100644
index 0000000..3adb9c1
--- /dev/null
+++ b/glew/auto/src/footer.html
@@ -0,0 +1,4 @@
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/auto/src/glew_head.c b/glew/auto/src/glew_head.c
new file mode 100644
index 0000000..592cd0f
--- /dev/null
+++ b/glew/auto/src/glew_head.c
@@ -0,0 +1,289 @@
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#if defined(GLEW_OSMESA)
+# define GLAPI extern
+# include <GL/osmesa.h>
+#elif defined(GLEW_EGL)
+# include <GL/eglew.h>
+#elif defined(_WIN32)
+/*
+ * If NOGDI is defined, wingdi.h won't be included by windows.h, and thus
+ * wglGetProcAddress won't be declared. It will instead be implicitly declared,
+ * potentially incorrectly, which we don't want.
+ */
+# if defined(NOGDI)
+# undef NOGDI
+# endif
+# include <GL/wglew.h>
+#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))
+# include <GL/glxew.h>
+#endif
+
+#include <stddef.h> /* For size_t */
+
+#if defined(GLEW_EGL)
+#elif defined(GLEW_REGAL)
+
+/* In GLEW_REGAL mode we call directly into the linked
+ libRegal.so glGetProcAddressREGAL for looking up
+ the GL function pointers. */
+
+# undef glGetProcAddressREGAL
+# ifdef WIN32
+extern void * __stdcall glGetProcAddressREGAL(const GLchar *name);
+static void * (__stdcall * regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
+# else
+extern void * glGetProcAddressREGAL(const GLchar *name);
+static void * (*regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
+# endif
+# define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL)
+
+#elif defined(__sgi) || defined (__sun) || defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+void* dlGetProcAddress (const GLubyte* name)
+{
+ static void* h = NULL;
+ static void* gpa;
+
+ if (h == NULL)
+ {
+ if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL;
+ gpa = dlsym(h, "glXGetProcAddress");
+ }
+
+ if (gpa != NULL)
+ return ((void*(*)(const GLubyte*))gpa)(name);
+ else
+ return dlsym(h, (const char*)name);
+}
+#endif /* __sgi || __sun || GLEW_APPLE_GLX */
+
+#if defined(__APPLE__)
+#include <stdlib.h>
+#include <string.h>
+#include <AvailabilityMacros.h>
+
+#ifdef MAC_OS_X_VERSION_10_3
+
+#include <dlfcn.h>
+
+void* NSGLGetProcAddress (const GLubyte *name)
+{
+ static void* image = NULL;
+ void* addr;
+ if (NULL == image)
+ {
+ image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY);
+ }
+ if( !image ) return NULL;
+ addr = dlsym(image, (const char*)name);
+ if( addr ) return addr;
+#ifdef GLEW_APPLE_GLX
+ return dlGetProcAddress( name ); // try next for glx symbols
+#else
+ return NULL;
+#endif
+}
+#else
+
+#include <mach-o/dyld.h>
+
+void* NSGLGetProcAddress (const GLubyte *name)
+{
+ static const struct mach_header* image = NULL;
+ NSSymbol symbol;
+ char* symbolName;
+ if (NULL == image)
+ {
+ image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR);
+ }
+ /* prepend a '_' for the Unix C symbol mangling convention */
+ symbolName = malloc(strlen((const char*)name) + 2);
+ strcpy(symbolName+1, (const char*)name);
+ symbolName[0] = '_';
+ symbol = NULL;
+ /* if (NSIsSymbolNameDefined(symbolName))
+ symbol = NSLookupAndBindSymbol(symbolName); */
+ symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL;
+ free(symbolName);
+ if( symbol ) return NSAddressOfSymbol(symbol);
+#ifdef GLEW_APPLE_GLX
+ return dlGetProcAddress( name ); // try next for glx symbols
+#else
+ return NULL;
+#endif
+}
+#endif /* MAC_OS_X_VERSION_10_3 */
+#endif /* __APPLE__ */
+
+/*
+ * Define glewGetProcAddress.
+ */
+#if defined(GLEW_REGAL)
+# define glewGetProcAddress(name) regalGetProcAddress((const GLchar *)name)
+#elif defined(GLEW_OSMESA)
+# define glewGetProcAddress(name) OSMesaGetProcAddress((const char *)name)
+#elif defined(GLEW_EGL)
+# define glewGetProcAddress(name) eglGetProcAddress((const char *)name)
+#elif defined(_WIN32)
+# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+# define glewGetProcAddress(name) NSGLGetProcAddress(name)
+#elif defined(__sgi) || defined(__sun) || defined(__HAIKU__)
+# define glewGetProcAddress(name) dlGetProcAddress(name)
+#elif defined(__ANDROID__)
+# define glewGetProcAddress(name) NULL /* TODO */
+#elif defined(__native_client__)
+# define glewGetProcAddress(name) NULL /* TODO */
+#else /* __linux */
+# define glewGetProcAddress(name) (*glXGetProcAddressARB)(name)
+#endif
+
+/*
+ * Redefine GLEW_GET_VAR etc without const cast
+ */
+
+#undef GLEW_GET_VAR
+# define GLEW_GET_VAR(x) (x)
+
+#ifdef WGLEW_GET_VAR
+# undef WGLEW_GET_VAR
+# define WGLEW_GET_VAR(x) (x)
+#endif /* WGLEW_GET_VAR */
+
+#ifdef GLXEW_GET_VAR
+# undef GLXEW_GET_VAR
+# define GLXEW_GET_VAR(x) (x)
+#endif /* GLXEW_GET_VAR */
+
+#ifdef EGLEW_GET_VAR
+# undef EGLEW_GET_VAR
+# define EGLEW_GET_VAR(x) (x)
+#endif /* EGLEW_GET_VAR */
+
+/*
+ * GLEW, just like OpenGL or GLU, does not rely on the standard C library.
+ * These functions implement the functionality required in this file.
+ */
+
+static GLuint _glewStrLen (const GLubyte* s)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0') i++;
+ return i;
+}
+
+static GLuint _glewStrCLen (const GLubyte* s, GLubyte c)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0' && s[i] != c) i++;
+ return i;
+}
+
+static GLuint _glewStrCopy(char *d, const char *s, char c)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0' && s[i] != c) { d[i] = s[i]; i++; }
+ d[i] = '\0';
+ return i;
+}
+
+#if !defined(GLEW_OSMESA)
+#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n)
+{
+ GLuint i=0;
+ if(a == NULL || b == NULL)
+ return (a == NULL && b == NULL && n == 0) ? GL_TRUE : GL_FALSE;
+ while (i < n && a[i] != '\0' && b[i] != '\0' && a[i] == b[i]) i++;
+ return i == n ? GL_TRUE : GL_FALSE;
+}
+#endif
+#endif
+
+static GLboolean _glewStrSame1 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ while (*na > 0 && (**a == ' ' || **a == '\n' || **a == '\r' || **a == '\t'))
+ {
+ (*a)++;
+ (*na)--;
+ }
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if(i == nb)
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+static GLboolean _glewStrSame2 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if(i == nb)
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+static GLboolean _glewStrSame3 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\n' || (*a)[i] == '\r' || (*a)[i] == '\t'))
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+/*
+ * Search for name in the extensions string. Use of strstr()
+ * is not sufficient because extension names can be prefixes of
+ * other extension names. Could use strtok() but the constant
+ * string returned by glGetString might be in read-only memory.
+ */
+#if !defined(GLEW_OSMESA)
+#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+static GLboolean _glewSearchExtension (const char* name, const GLubyte *start, const GLubyte *end)
+{
+ const GLubyte* p;
+ GLuint len = _glewStrLen((const GLubyte*)name);
+ p = start;
+ while (p < end)
+ {
+ GLuint n = _glewStrCLen(p, ' ');
+ if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE;
+ p += n+1;
+ }
+ return GL_FALSE;
+}
+#endif
+#endif
diff --git a/glew/auto/src/glew_head.h b/glew/auto/src/glew_head.h
new file mode 100644
index 0000000..9277d2a
--- /dev/null
+++ b/glew/auto/src/glew_head.h
@@ -0,0 +1,1139 @@
+#ifndef __glew_h__
+#define __glew_h__
+#define __GLEW_H__
+
+#if defined(__gl_h_) || defined(__GL_H__) || defined(_GL_H) || defined(__gl_gl_h_) || defined(__X_GL_H)
+#error gl.h included before glew.h
+#endif
+#if defined(__gl2_h_)
+#error gl2.h included before glew.h
+#endif
+#if defined(__gltypes_h_)
+#error gltypes.h included before glew.h
+#endif
+#if defined(__REGAL_H__)
+#error Regal.h included before glew.h
+#endif
+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_)
+#error glext.h included before glew.h
+#endif
+#if defined(__gl_ATI_h_)
+#error glATI.h included before glew.h
+#endif
+
+#define __gl_h_
+#define __gl2_h_
+#define __GL_H__
+#define _GL_H
+#define __gl_gl_h_
+#define __gltypes_h_
+#define __REGAL_H__
+#define __X_GL_H
+#define __glext_h_
+#define __GLEXT_H_
+#define __gl_glext_h_
+#define __gl_ATI_h_
+
+#if defined(_WIN32)
+
+/*
+ * GLEW does not include <windows.h> to avoid name space pollution.
+ * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t
+ * defined properly.
+ */
+/* <windef.h> and <gl.h>*/
+#ifdef APIENTRY
+# ifndef GLAPIENTRY
+# define GLAPIENTRY APIENTRY
+# endif
+# ifndef GLEWAPIENTRY
+# define GLEWAPIENTRY APIENTRY
+# endif
+#else
+#define GLEW_APIENTRY_DEFINED
+# if defined(__MINGW32__) || defined(__CYGWIN__) || (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__)
+# define APIENTRY __stdcall
+# ifndef GLAPIENTRY
+# define GLAPIENTRY __stdcall
+# endif
+# ifndef GLEWAPIENTRY
+# define GLEWAPIENTRY __stdcall
+# endif
+# else
+# define APIENTRY
+# endif
+#endif
+/* <winnt.h> */
+#ifndef CALLBACK
+#define GLEW_CALLBACK_DEFINED
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# define CALLBACK __attribute__ ((__stdcall__))
+# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+# define CALLBACK __stdcall
+# else
+# define CALLBACK
+# endif
+#endif
+/* <wingdi.h> and <winnt.h> */
+#ifndef WINGDIAPI
+#define GLEW_WINGDIAPI_DEFINED
+#define WINGDIAPI __declspec(dllimport)
+#endif
+/* <ctype.h> */
+#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED)
+typedef unsigned short wchar_t;
+# define _WCHAR_T_DEFINED
+#endif
+/* <stddef.h> */
+#if !defined(_W64)
+# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300
+# define _W64 __w64
+# else
+# define _W64
+# endif
+#endif
+#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__)
+# ifdef _WIN64
+typedef __int64 ptrdiff_t;
+# else
+typedef _W64 int ptrdiff_t;
+# endif
+# define _PTRDIFF_T_DEFINED
+# define _PTRDIFF_T_
+#endif
+
+#ifndef GLAPI
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# define GLAPI extern
+# else
+# define GLAPI WINGDIAPI
+# endif
+#endif
+
+/*
+ * GLEW_STATIC is defined for static library.
+ * GLEW_BUILD is defined for building the DLL library.
+ */
+
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# ifdef GLEW_BUILD
+# define GLEWAPI extern __declspec(dllexport)
+# else
+# define GLEWAPI extern __declspec(dllimport)
+# endif
+#endif
+
+#else /* _UNIX */
+
+/*
+ * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO
+ * C. On my system, this amounts to _3 lines_ of included code, all of
+ * them pretty much harmless. If you know of a way of detecting 32 vs
+ * 64 _targets_ at compile time you are free to replace this with
+ * something that's portable. For now, _this_ is the portable solution.
+ * (mem, 2004-01-04)
+ */
+
+#if defined(__APPLE__) || defined(__linux__)
+# if defined(__cplusplus)
+# include <cstddef>
+# include <cstdint>
+# else
+# include <stddef.h>
+# include <stdint.h>
+# endif
+#else
+
+# include <stddef.h>
+
+/* SGI MIPSPro doesn't like stdint.h in C++ mode */
+/* ID: 3376260 Solaris 9 has inttypes.h, but not stdint.h */
+
+# if (defined(__sgi) || defined(__sun)) && !defined(__GNUC__)
+# include <inttypes.h>
+# else
+# include <stdint.h>
+# endif
+#endif
+
+#define GLEW_APIENTRY_DEFINED
+#define APIENTRY
+
+/*
+ * GLEW_STATIC is defined for static library.
+ */
+
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# if defined(__GNUC__) && __GNUC__>=4
+# define GLEWAPI extern __attribute__ ((visibility("default")))
+# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+# define GLEWAPI extern __global
+# else
+# define GLEWAPI extern
+# endif
+#endif
+
+/* <glu.h> */
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+#endif /* _WIN32 */
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY
+#endif
+
+#ifndef GLEWAPIENTRY
+#define GLEWAPIENTRY
+#endif
+
+#define GLEW_VAR_EXPORT GLEWAPI
+#define GLEW_FUN_EXPORT GLEWAPI
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ----------------------------- GL_VERSION_1_1 ---------------------------- */
+
+#ifndef GL_VERSION_1_1
+#define GL_VERSION_1_1 1
+
+typedef unsigned int GLenum;
+typedef unsigned int GLbitfield;
+typedef unsigned int GLuint;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLboolean;
+typedef signed char GLbyte;
+typedef short GLshort;
+typedef unsigned char GLubyte;
+typedef unsigned short GLushort;
+typedef unsigned long GLulong;
+typedef float GLfloat;
+typedef float GLclampf;
+typedef double GLdouble;
+typedef double GLclampd;
+typedef void GLvoid;
+#if defined(_MSC_VER) && _MSC_VER < 1400
+typedef __int64 GLint64EXT;
+typedef unsigned __int64 GLuint64EXT;
+#elif defined(_MSC_VER) || defined(__BORLANDC__)
+typedef signed long long GLint64EXT;
+typedef unsigned long long GLuint64EXT;
+#else
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+#include <inttypes.h>
+# endif
+typedef int64_t GLint64EXT;
+typedef uint64_t GLuint64EXT;
+#endif
+typedef GLint64EXT GLint64;
+typedef GLuint64EXT GLuint64;
+typedef struct __GLsync *GLsync;
+
+typedef char GLchar;
+
+typedef void *GLeglImageOES; /* GL_EXT_EGL_image_storage */
+
+#define GL_ZERO 0
+#define GL_FALSE 0
+#define GL_LOGIC_OP 0x0BF1
+#define GL_NONE 0
+#define GL_TEXTURE_COMPONENTS 0x1003
+#define GL_NO_ERROR 0
+#define GL_POINTS 0x0000
+#define GL_CURRENT_BIT 0x00000001
+#define GL_TRUE 1
+#define GL_ONE 1
+#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
+#define GL_LINES 0x0001
+#define GL_LINE_LOOP 0x0002
+#define GL_POINT_BIT 0x00000002
+#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
+#define GL_LINE_STRIP 0x0003
+#define GL_LINE_BIT 0x00000004
+#define GL_TRIANGLES 0x0004
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_QUADS 0x0007
+#define GL_QUAD_STRIP 0x0008
+#define GL_POLYGON_BIT 0x00000008
+#define GL_POLYGON 0x0009
+#define GL_POLYGON_STIPPLE_BIT 0x00000010
+#define GL_PIXEL_MODE_BIT 0x00000020
+#define GL_LIGHTING_BIT 0x00000040
+#define GL_FOG_BIT 0x00000080
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_ACCUM 0x0100
+#define GL_LOAD 0x0101
+#define GL_RETURN 0x0102
+#define GL_MULT 0x0103
+#define GL_ADD 0x0104
+#define GL_NEVER 0x0200
+#define GL_ACCUM_BUFFER_BIT 0x00000200
+#define GL_LESS 0x0201
+#define GL_EQUAL 0x0202
+#define GL_LEQUAL 0x0203
+#define GL_GREATER 0x0204
+#define GL_NOTEQUAL 0x0205
+#define GL_GEQUAL 0x0206
+#define GL_ALWAYS 0x0207
+#define GL_SRC_COLOR 0x0300
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_SRC_ALPHA 0x0302
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_DST_ALPHA 0x0304
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+#define GL_DST_COLOR 0x0306
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_SRC_ALPHA_SATURATE 0x0308
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_FRONT_LEFT 0x0400
+#define GL_FRONT_RIGHT 0x0401
+#define GL_BACK_LEFT 0x0402
+#define GL_BACK_RIGHT 0x0403
+#define GL_FRONT 0x0404
+#define GL_BACK 0x0405
+#define GL_LEFT 0x0406
+#define GL_RIGHT 0x0407
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_AUX0 0x0409
+#define GL_AUX1 0x040A
+#define GL_AUX2 0x040B
+#define GL_AUX3 0x040C
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVALID_OPERATION 0x0502
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_OUT_OF_MEMORY 0x0505
+#define GL_2D 0x0600
+#define GL_3D 0x0601
+#define GL_3D_COLOR 0x0602
+#define GL_3D_COLOR_TEXTURE 0x0603
+#define GL_4D_COLOR_TEXTURE 0x0604
+#define GL_PASS_THROUGH_TOKEN 0x0700
+#define GL_POINT_TOKEN 0x0701
+#define GL_LINE_TOKEN 0x0702
+#define GL_POLYGON_TOKEN 0x0703
+#define GL_BITMAP_TOKEN 0x0704
+#define GL_DRAW_PIXEL_TOKEN 0x0705
+#define GL_COPY_PIXEL_TOKEN 0x0706
+#define GL_LINE_RESET_TOKEN 0x0707
+#define GL_EXP 0x0800
+#define GL_VIEWPORT_BIT 0x00000800
+#define GL_EXP2 0x0801
+#define GL_CW 0x0900
+#define GL_CCW 0x0901
+#define GL_COEFF 0x0A00
+#define GL_ORDER 0x0A01
+#define GL_DOMAIN 0x0A02
+#define GL_CURRENT_COLOR 0x0B00
+#define GL_CURRENT_INDEX 0x0B01
+#define GL_CURRENT_NORMAL 0x0B02
+#define GL_CURRENT_TEXTURE_COORDS 0x0B03
+#define GL_CURRENT_RASTER_COLOR 0x0B04
+#define GL_CURRENT_RASTER_INDEX 0x0B05
+#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
+#define GL_CURRENT_RASTER_POSITION 0x0B07
+#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
+#define GL_CURRENT_RASTER_DISTANCE 0x0B09
+#define GL_POINT_SMOOTH 0x0B10
+#define GL_POINT_SIZE 0x0B11
+#define GL_POINT_SIZE_RANGE 0x0B12
+#define GL_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_LINE_SMOOTH 0x0B20
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINE_WIDTH_RANGE 0x0B22
+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_LINE_STIPPLE 0x0B24
+#define GL_LINE_STIPPLE_PATTERN 0x0B25
+#define GL_LINE_STIPPLE_REPEAT 0x0B26
+#define GL_LIST_MODE 0x0B30
+#define GL_MAX_LIST_NESTING 0x0B31
+#define GL_LIST_BASE 0x0B32
+#define GL_LIST_INDEX 0x0B33
+#define GL_POLYGON_MODE 0x0B40
+#define GL_POLYGON_SMOOTH 0x0B41
+#define GL_POLYGON_STIPPLE 0x0B42
+#define GL_EDGE_FLAG 0x0B43
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_FRONT_FACE 0x0B46
+#define GL_LIGHTING 0x0B50
+#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
+#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
+#define GL_LIGHT_MODEL_AMBIENT 0x0B53
+#define GL_SHADE_MODEL 0x0B54
+#define GL_COLOR_MATERIAL_FACE 0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
+#define GL_COLOR_MATERIAL 0x0B57
+#define GL_FOG 0x0B60
+#define GL_FOG_INDEX 0x0B61
+#define GL_FOG_DENSITY 0x0B62
+#define GL_FOG_START 0x0B63
+#define GL_FOG_END 0x0B64
+#define GL_FOG_MODE 0x0B65
+#define GL_FOG_COLOR 0x0B66
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_ACCUM_CLEAR_VALUE 0x0B80
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_MATRIX_MODE 0x0BA0
+#define GL_NORMALIZE 0x0BA1
+#define GL_VIEWPORT 0x0BA2
+#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
+#define GL_PROJECTION_STACK_DEPTH 0x0BA4
+#define GL_TEXTURE_STACK_DEPTH 0x0BA5
+#define GL_MODELVIEW_MATRIX 0x0BA6
+#define GL_PROJECTION_MATRIX 0x0BA7
+#define GL_TEXTURE_MATRIX 0x0BA8
+#define GL_ATTRIB_STACK_DEPTH 0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
+#define GL_ALPHA_TEST 0x0BC0
+#define GL_ALPHA_TEST_FUNC 0x0BC1
+#define GL_ALPHA_TEST_REF 0x0BC2
+#define GL_DITHER 0x0BD0
+#define GL_BLEND_DST 0x0BE0
+#define GL_BLEND_SRC 0x0BE1
+#define GL_BLEND 0x0BE2
+#define GL_LOGIC_OP_MODE 0x0BF0
+#define GL_INDEX_LOGIC_OP 0x0BF1
+#define GL_COLOR_LOGIC_OP 0x0BF2
+#define GL_AUX_BUFFERS 0x0C00
+#define GL_DRAW_BUFFER 0x0C01
+#define GL_READ_BUFFER 0x0C02
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_INDEX_CLEAR_VALUE 0x0C20
+#define GL_INDEX_WRITEMASK 0x0C21
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_INDEX_MODE 0x0C30
+#define GL_RGBA_MODE 0x0C31
+#define GL_DOUBLEBUFFER 0x0C32
+#define GL_STEREO 0x0C33
+#define GL_RENDER_MODE 0x0C40
+#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
+#define GL_POINT_SMOOTH_HINT 0x0C51
+#define GL_LINE_SMOOTH_HINT 0x0C52
+#define GL_POLYGON_SMOOTH_HINT 0x0C53
+#define GL_FOG_HINT 0x0C54
+#define GL_TEXTURE_GEN_S 0x0C60
+#define GL_TEXTURE_GEN_T 0x0C61
+#define GL_TEXTURE_GEN_R 0x0C62
+#define GL_TEXTURE_GEN_Q 0x0C63
+#define GL_PIXEL_MAP_I_TO_I 0x0C70
+#define GL_PIXEL_MAP_S_TO_S 0x0C71
+#define GL_PIXEL_MAP_I_TO_R 0x0C72
+#define GL_PIXEL_MAP_I_TO_G 0x0C73
+#define GL_PIXEL_MAP_I_TO_B 0x0C74
+#define GL_PIXEL_MAP_I_TO_A 0x0C75
+#define GL_PIXEL_MAP_R_TO_R 0x0C76
+#define GL_PIXEL_MAP_G_TO_G 0x0C77
+#define GL_PIXEL_MAP_B_TO_B 0x0C78
+#define GL_PIXEL_MAP_A_TO_A 0x0C79
+#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
+#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
+#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
+#define GL_UNPACK_SWAP_BYTES 0x0CF0
+#define GL_UNPACK_LSB_FIRST 0x0CF1
+#define GL_UNPACK_ROW_LENGTH 0x0CF2
+#define GL_UNPACK_SKIP_ROWS 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_PACK_SWAP_BYTES 0x0D00
+#define GL_PACK_LSB_FIRST 0x0D01
+#define GL_PACK_ROW_LENGTH 0x0D02
+#define GL_PACK_SKIP_ROWS 0x0D03
+#define GL_PACK_SKIP_PIXELS 0x0D04
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_MAP_COLOR 0x0D10
+#define GL_MAP_STENCIL 0x0D11
+#define GL_INDEX_SHIFT 0x0D12
+#define GL_INDEX_OFFSET 0x0D13
+#define GL_RED_SCALE 0x0D14
+#define GL_RED_BIAS 0x0D15
+#define GL_ZOOM_X 0x0D16
+#define GL_ZOOM_Y 0x0D17
+#define GL_GREEN_SCALE 0x0D18
+#define GL_GREEN_BIAS 0x0D19
+#define GL_BLUE_SCALE 0x0D1A
+#define GL_BLUE_BIAS 0x0D1B
+#define GL_ALPHA_SCALE 0x0D1C
+#define GL_ALPHA_BIAS 0x0D1D
+#define GL_DEPTH_SCALE 0x0D1E
+#define GL_DEPTH_BIAS 0x0D1F
+#define GL_MAX_EVAL_ORDER 0x0D30
+#define GL_MAX_LIGHTS 0x0D31
+#define GL_MAX_CLIP_PLANES 0x0D32
+#define GL_MAX_TEXTURE_SIZE 0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
+#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
+#define GL_MAX_NAME_STACK_DEPTH 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
+#define GL_SUBPIXEL_BITS 0x0D50
+#define GL_INDEX_BITS 0x0D51
+#define GL_RED_BITS 0x0D52
+#define GL_GREEN_BITS 0x0D53
+#define GL_BLUE_BITS 0x0D54
+#define GL_ALPHA_BITS 0x0D55
+#define GL_DEPTH_BITS 0x0D56
+#define GL_STENCIL_BITS 0x0D57
+#define GL_ACCUM_RED_BITS 0x0D58
+#define GL_ACCUM_GREEN_BITS 0x0D59
+#define GL_ACCUM_BLUE_BITS 0x0D5A
+#define GL_ACCUM_ALPHA_BITS 0x0D5B
+#define GL_NAME_STACK_DEPTH 0x0D70
+#define GL_AUTO_NORMAL 0x0D80
+#define GL_MAP1_COLOR_4 0x0D90
+#define GL_MAP1_INDEX 0x0D91
+#define GL_MAP1_NORMAL 0x0D92
+#define GL_MAP1_TEXTURE_COORD_1 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4 0x0D96
+#define GL_MAP1_VERTEX_3 0x0D97
+#define GL_MAP1_VERTEX_4 0x0D98
+#define GL_MAP2_COLOR_4 0x0DB0
+#define GL_MAP2_INDEX 0x0DB1
+#define GL_MAP2_NORMAL 0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
+#define GL_MAP2_VERTEX_3 0x0DB7
+#define GL_MAP2_VERTEX_4 0x0DB8
+#define GL_MAP1_GRID_DOMAIN 0x0DD0
+#define GL_MAP1_GRID_SEGMENTS 0x0DD1
+#define GL_MAP2_GRID_DOMAIN 0x0DD2
+#define GL_MAP2_GRID_SEGMENTS 0x0DD3
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
+#define GL_SELECTION_BUFFER_POINTER 0x0DF3
+#define GL_SELECTION_BUFFER_SIZE 0x0DF4
+#define GL_TEXTURE_WIDTH 0x1000
+#define GL_TRANSFORM_BIT 0x00001000
+#define GL_TEXTURE_HEIGHT 0x1001
+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
+#define GL_TEXTURE_BORDER_COLOR 0x1004
+#define GL_TEXTURE_BORDER 0x1005
+#define GL_DONT_CARE 0x1100
+#define GL_FASTEST 0x1101
+#define GL_NICEST 0x1102
+#define GL_AMBIENT 0x1200
+#define GL_DIFFUSE 0x1201
+#define GL_SPECULAR 0x1202
+#define GL_POSITION 0x1203
+#define GL_SPOT_DIRECTION 0x1204
+#define GL_SPOT_EXPONENT 0x1205
+#define GL_SPOT_CUTOFF 0x1206
+#define GL_CONSTANT_ATTENUATION 0x1207
+#define GL_LINEAR_ATTENUATION 0x1208
+#define GL_QUADRATIC_ATTENUATION 0x1209
+#define GL_COMPILE 0x1300
+#define GL_COMPILE_AND_EXECUTE 0x1301
+#define GL_BYTE 0x1400
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_SHORT 0x1402
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_INT 0x1404
+#define GL_UNSIGNED_INT 0x1405
+#define GL_FLOAT 0x1406
+#define GL_2_BYTES 0x1407
+#define GL_3_BYTES 0x1408
+#define GL_4_BYTES 0x1409
+#define GL_DOUBLE 0x140A
+#define GL_CLEAR 0x1500
+#define GL_AND 0x1501
+#define GL_AND_REVERSE 0x1502
+#define GL_COPY 0x1503
+#define GL_AND_INVERTED 0x1504
+#define GL_NOOP 0x1505
+#define GL_XOR 0x1506
+#define GL_OR 0x1507
+#define GL_NOR 0x1508
+#define GL_EQUIV 0x1509
+#define GL_INVERT 0x150A
+#define GL_OR_REVERSE 0x150B
+#define GL_COPY_INVERTED 0x150C
+#define GL_OR_INVERTED 0x150D
+#define GL_NAND 0x150E
+#define GL_SET 0x150F
+#define GL_EMISSION 0x1600
+#define GL_SHININESS 0x1601
+#define GL_AMBIENT_AND_DIFFUSE 0x1602
+#define GL_COLOR_INDEXES 0x1603
+#define GL_MODELVIEW 0x1700
+#define GL_PROJECTION 0x1701
+#define GL_TEXTURE 0x1702
+#define GL_COLOR 0x1800
+#define GL_DEPTH 0x1801
+#define GL_STENCIL 0x1802
+#define GL_COLOR_INDEX 0x1900
+#define GL_STENCIL_INDEX 0x1901
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RGB 0x1907
+#define GL_RGBA 0x1908
+#define GL_LUMINANCE 0x1909
+#define GL_LUMINANCE_ALPHA 0x190A
+#define GL_BITMAP 0x1A00
+#define GL_POINT 0x1B00
+#define GL_LINE 0x1B01
+#define GL_FILL 0x1B02
+#define GL_RENDER 0x1C00
+#define GL_FEEDBACK 0x1C01
+#define GL_SELECT 0x1C02
+#define GL_FLAT 0x1D00
+#define GL_SMOOTH 0x1D01
+#define GL_KEEP 0x1E00
+#define GL_REPLACE 0x1E01
+#define GL_INCR 0x1E02
+#define GL_DECR 0x1E03
+#define GL_VENDOR 0x1F00
+#define GL_RENDERER 0x1F01
+#define GL_VERSION 0x1F02
+#define GL_EXTENSIONS 0x1F03
+#define GL_S 0x2000
+#define GL_ENABLE_BIT 0x00002000
+#define GL_T 0x2001
+#define GL_R 0x2002
+#define GL_Q 0x2003
+#define GL_MODULATE 0x2100
+#define GL_DECAL 0x2101
+#define GL_TEXTURE_ENV_MODE 0x2200
+#define GL_TEXTURE_ENV_COLOR 0x2201
+#define GL_TEXTURE_ENV 0x2300
+#define GL_EYE_LINEAR 0x2400
+#define GL_OBJECT_LINEAR 0x2401
+#define GL_SPHERE_MAP 0x2402
+#define GL_TEXTURE_GEN_MODE 0x2500
+#define GL_OBJECT_PLANE 0x2501
+#define GL_EYE_PLANE 0x2502
+#define GL_NEAREST 0x2600
+#define GL_LINEAR 0x2601
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+#define GL_CLAMP 0x2900
+#define GL_REPEAT 0x2901
+#define GL_POLYGON_OFFSET_UNITS 0x2A00
+#define GL_POLYGON_OFFSET_POINT 0x2A01
+#define GL_POLYGON_OFFSET_LINE 0x2A02
+#define GL_R3_G3_B2 0x2A10
+#define GL_V2F 0x2A20
+#define GL_V3F 0x2A21
+#define GL_C4UB_V2F 0x2A22
+#define GL_C4UB_V3F 0x2A23
+#define GL_C3F_V3F 0x2A24
+#define GL_N3F_V3F 0x2A25
+#define GL_C4F_N3F_V3F 0x2A26
+#define GL_T2F_V3F 0x2A27
+#define GL_T4F_V4F 0x2A28
+#define GL_T2F_C4UB_V3F 0x2A29
+#define GL_T2F_C3F_V3F 0x2A2A
+#define GL_T2F_N3F_V3F 0x2A2B
+#define GL_T2F_C4F_N3F_V3F 0x2A2C
+#define GL_T4F_C4F_N3F_V4F 0x2A2D
+#define GL_CLIP_PLANE0 0x3000
+#define GL_CLIP_PLANE1 0x3001
+#define GL_CLIP_PLANE2 0x3002
+#define GL_CLIP_PLANE3 0x3003
+#define GL_CLIP_PLANE4 0x3004
+#define GL_CLIP_PLANE5 0x3005
+#define GL_LIGHT0 0x4000
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_LIGHT1 0x4001
+#define GL_LIGHT2 0x4002
+#define GL_LIGHT3 0x4003
+#define GL_LIGHT4 0x4004
+#define GL_LIGHT5 0x4005
+#define GL_LIGHT6 0x4006
+#define GL_LIGHT7 0x4007
+#define GL_HINT_BIT 0x00008000
+#define GL_POLYGON_OFFSET_FILL 0x8037
+#define GL_POLYGON_OFFSET_FACTOR 0x8038
+#define GL_ALPHA4 0x803B
+#define GL_ALPHA8 0x803C
+#define GL_ALPHA12 0x803D
+#define GL_ALPHA16 0x803E
+#define GL_LUMINANCE4 0x803F
+#define GL_LUMINANCE8 0x8040
+#define GL_LUMINANCE12 0x8041
+#define GL_LUMINANCE16 0x8042
+#define GL_LUMINANCE4_ALPHA4 0x8043
+#define GL_LUMINANCE6_ALPHA2 0x8044
+#define GL_LUMINANCE8_ALPHA8 0x8045
+#define GL_LUMINANCE12_ALPHA4 0x8046
+#define GL_LUMINANCE12_ALPHA12 0x8047
+#define GL_LUMINANCE16_ALPHA16 0x8048
+#define GL_INTENSITY 0x8049
+#define GL_INTENSITY4 0x804A
+#define GL_INTENSITY8 0x804B
+#define GL_INTENSITY12 0x804C
+#define GL_INTENSITY16 0x804D
+#define GL_RGB4 0x804F
+#define GL_RGB5 0x8050
+#define GL_RGB8 0x8051
+#define GL_RGB10 0x8052
+#define GL_RGB12 0x8053
+#define GL_RGB16 0x8054
+#define GL_RGBA2 0x8055
+#define GL_RGBA4 0x8056
+#define GL_RGB5_A1 0x8057
+#define GL_RGBA8 0x8058
+#define GL_RGB10_A2 0x8059
+#define GL_RGBA12 0x805A
+#define GL_RGBA16 0x805B
+#define GL_TEXTURE_RED_SIZE 0x805C
+#define GL_TEXTURE_GREEN_SIZE 0x805D
+#define GL_TEXTURE_BLUE_SIZE 0x805E
+#define GL_TEXTURE_ALPHA_SIZE 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE 0x8061
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_TEXTURE_PRIORITY 0x8066
+#define GL_TEXTURE_RESIDENT 0x8067
+#define GL_TEXTURE_BINDING_1D 0x8068
+#define GL_TEXTURE_BINDING_2D 0x8069
+#define GL_VERTEX_ARRAY 0x8074
+#define GL_NORMAL_ARRAY 0x8075
+#define GL_COLOR_ARRAY 0x8076
+#define GL_INDEX_ARRAY 0x8077
+#define GL_TEXTURE_COORD_ARRAY 0x8078
+#define GL_EDGE_FLAG_ARRAY 0x8079
+#define GL_VERTEX_ARRAY_SIZE 0x807A
+#define GL_VERTEX_ARRAY_TYPE 0x807B
+#define GL_VERTEX_ARRAY_STRIDE 0x807C
+#define GL_NORMAL_ARRAY_TYPE 0x807E
+#define GL_NORMAL_ARRAY_STRIDE 0x807F
+#define GL_COLOR_ARRAY_SIZE 0x8081
+#define GL_COLOR_ARRAY_TYPE 0x8082
+#define GL_COLOR_ARRAY_STRIDE 0x8083
+#define GL_INDEX_ARRAY_TYPE 0x8085
+#define GL_INDEX_ARRAY_STRIDE 0x8086
+#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
+#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
+#define GL_VERTEX_ARRAY_POINTER 0x808E
+#define GL_NORMAL_ARRAY_POINTER 0x808F
+#define GL_COLOR_ARRAY_POINTER 0x8090
+#define GL_INDEX_ARRAY_POINTER 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_EVAL_BIT 0x00010000
+#define GL_LIST_BIT 0x00020000
+#define GL_TEXTURE_BIT 0x00040000
+#define GL_SCISSOR_BIT 0x00080000
+#define GL_ALL_ATTRIB_BITS 0x000fffff
+#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff
+
+GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value);
+GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref);
+GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences);
+GLAPI void GLAPIENTRY glArrayElement (GLint i);
+GLAPI void GLAPIENTRY glBegin (GLenum mode);
+GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture);
+GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
+GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
+GLAPI void GLAPIENTRY glCallList (GLuint list);
+GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const void *lists);
+GLAPI void GLAPIENTRY glClear (GLbitfield mask);
+GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLAPI void GLAPIENTRY glClearDepth (GLclampd depth);
+GLAPI void GLAPIENTRY glClearIndex (GLfloat c);
+GLAPI void GLAPIENTRY glClearStencil (GLint s);
+GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation);
+GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue);
+GLAPI void GLAPIENTRY glColor3iv (const GLint *v);
+GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue);
+GLAPI void GLAPIENTRY glColor3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v);
+GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue);
+GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v);
+GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue);
+GLAPI void GLAPIENTRY glColor3usv (const GLushort *v);
+GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha);
+GLAPI void GLAPIENTRY glColor4iv (const GLint *v);
+GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha);
+GLAPI void GLAPIENTRY glColor4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v);
+GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v);
+GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha);
+GLAPI void GLAPIENTRY glColor4usv (const GLushort *v);
+GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode);
+GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void GLAPIENTRY glCullFace (GLenum mode);
+GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range);
+GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
+GLAPI void GLAPIENTRY glDepthFunc (GLenum func);
+GLAPI void GLAPIENTRY glDepthMask (GLboolean flag);
+GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar);
+GLAPI void GLAPIENTRY glDisable (GLenum cap);
+GLAPI void GLAPIENTRY glDisableClientState (GLenum array);
+GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
+GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode);
+GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
+GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag);
+GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag);
+GLAPI void GLAPIENTRY glEnable (GLenum cap);
+GLAPI void GLAPIENTRY glEnableClientState (GLenum array);
+GLAPI void GLAPIENTRY glEnd (void);
+GLAPI void GLAPIENTRY glEndList (void);
+GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u);
+GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u);
+GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u);
+GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u);
+GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v);
+GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u);
+GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v);
+GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u);
+GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2);
+GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+GLAPI void GLAPIENTRY glEvalPoint1 (GLint i);
+GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j);
+GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer);
+GLAPI void GLAPIENTRY glFinish (void);
+GLAPI void GLAPIENTRY glFlush (void);
+GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glFrontFace (GLenum mode);
+GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range);
+GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures);
+GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params);
+GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation);
+GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params);
+GLAPI GLenum GLAPIENTRY glGetError (void);
+GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v);
+GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v);
+GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v);
+GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values);
+GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values);
+GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values);
+GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, void* *params);
+GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask);
+GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name);
+GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params);
+GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode);
+GLAPI void GLAPIENTRY glIndexMask (GLuint mask);
+GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glIndexd (GLdouble c);
+GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c);
+GLAPI void GLAPIENTRY glIndexf (GLfloat c);
+GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c);
+GLAPI void GLAPIENTRY glIndexi (GLint c);
+GLAPI void GLAPIENTRY glIndexiv (const GLint *c);
+GLAPI void GLAPIENTRY glIndexs (GLshort c);
+GLAPI void GLAPIENTRY glIndexsv (const GLshort *c);
+GLAPI void GLAPIENTRY glIndexub (GLubyte c);
+GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c);
+GLAPI void GLAPIENTRY glInitNames (void);
+GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const void *pointer);
+GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap);
+GLAPI GLboolean GLAPIENTRY glIsList (GLuint list);
+GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture);
+GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern);
+GLAPI void GLAPIENTRY glLineWidth (GLfloat width);
+GLAPI void GLAPIENTRY glListBase (GLuint base);
+GLAPI void GLAPIENTRY glLoadIdentity (void);
+GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m);
+GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m);
+GLAPI void GLAPIENTRY glLoadName (GLuint name);
+GLAPI void GLAPIENTRY glLogicOp (GLenum opcode);
+GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
+GLAPI void GLAPIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2);
+GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2);
+GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glMatrixMode (GLenum mode);
+GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m);
+GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m);
+GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode);
+GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz);
+GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz);
+GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz);
+GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz);
+GLAPI void GLAPIENTRY glNormal3iv (const GLint *v);
+GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz);
+GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void GLAPIENTRY glPassThrough (GLfloat token);
+GLAPI void GLAPIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values);
+GLAPI void GLAPIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values);
+GLAPI void GLAPIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values);
+GLAPI void GLAPIENTRY glPixelStoref (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glPixelStorei (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glPixelTransferf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glPixelTransferi (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor);
+GLAPI void GLAPIENTRY glPointSize (GLfloat size);
+GLAPI void GLAPIENTRY glPolygonMode (GLenum face, GLenum mode);
+GLAPI void GLAPIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
+GLAPI void GLAPIENTRY glPolygonStipple (const GLubyte *mask);
+GLAPI void GLAPIENTRY glPopAttrib (void);
+GLAPI void GLAPIENTRY glPopClientAttrib (void);
+GLAPI void GLAPIENTRY glPopMatrix (void);
+GLAPI void GLAPIENTRY glPopName (void);
+GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask);
+GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask);
+GLAPI void GLAPIENTRY glPushMatrix (void);
+GLAPI void GLAPIENTRY glPushName (GLuint name);
+GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y);
+GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y);
+GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y);
+GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y);
+GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z);
+GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z);
+GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w);
+GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glReadBuffer (GLenum mode);
+GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
+GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2);
+GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2);
+GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2);
+GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2);
+GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2);
+GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode);
+GLAPI void GLAPIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer);
+GLAPI void GLAPIENTRY glShadeModel (GLenum mode);
+GLAPI void GLAPIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
+GLAPI void GLAPIENTRY glStencilMask (GLuint mask);
+GLAPI void GLAPIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
+GLAPI void GLAPIENTRY glTexCoord1d (GLdouble s);
+GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s);
+GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord1i (GLint s);
+GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord1s (GLshort s);
+GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t);
+GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t);
+GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t);
+GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t);
+GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r);
+GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r);
+GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r);
+GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r);
+GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q);
+GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param);
+GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params);
+GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y);
+GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y);
+GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y);
+GLAPI void GLAPIENTRY glVertex2iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y);
+GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z);
+GLAPI void GLAPIENTRY glVertex3iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z);
+GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w);
+GLAPI void GLAPIENTRY glVertex4iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1)
+
+#endif /* GL_VERSION_1_1 */
+
+/* ---------------------------------- GLU ---------------------------------- */
+
+#ifndef GLEW_NO_GLU
+# ifdef __APPLE__
+# include <Availability.h>
+# if defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
+# define GLEW_NO_GLU
+# endif
+# endif
+#endif
+
+#ifndef GLEW_NO_GLU
+/* this is where we can safely include GLU */
+# if defined(__APPLE__) && defined(__MACH__)
+# include <OpenGL/glu.h>
+# else
+# include <GL/glu.h>
+# endif
+#endif
+
diff --git a/glew/auto/src/glew_init_egl.c b/glew/auto/src/glew_init_egl.c
new file mode 100644
index 0000000..1502ef6
--- /dev/null
+++ b/glew/auto/src/glew_init_egl.c
@@ -0,0 +1,45 @@
+ /* ------------------------------------------------------------------------ */
+
+GLboolean eglewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+
+ start = (const GLubyte*) eglQueryString(eglGetCurrentDisplay(), EGL_EXTENSIONS);
+ if (0 == start) return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum eglewInit (EGLDisplay display)
+{
+ EGLint major, minor;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ PFNEGLINITIALIZEPROC initialize = NULL;
+ PFNEGLQUERYSTRINGPROC queryString = NULL;
+
+ /* Load necessary entry points */
+ initialize = (PFNEGLINITIALIZEPROC) glewGetProcAddress("eglInitialize");
+ queryString = (PFNEGLQUERYSTRINGPROC) glewGetProcAddress("eglQueryString");
+ if (!initialize || !queryString)
+ return 1;
+
+ /* query EGL version */
+ if (initialize(display, &major, &minor) != EGL_TRUE)
+ return 1;
+
+ EGLEW_VERSION_1_5 = ( major > 1 ) || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_4 = EGLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_3 = EGLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_2 = EGLEW_VERSION_1_3 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_1 = EGLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_0 = EGLEW_VERSION_1_1 == GL_TRUE || ( major == 1 && minor >= 0 ) ? GL_TRUE : GL_FALSE;
+
+ /* query EGL extension string */
+ extStart = (const GLubyte*) queryString(display, EGL_EXTENSIONS);
+ if (extStart == 0)
+ extStart = (const GLubyte *)"";
+ extEnd = extStart + _glewStrLen(extStart);
+
+ /* initialize extensions */
diff --git a/glew/auto/src/glew_init_gl.c b/glew/auto/src/glew_init_gl.c
new file mode 100644
index 0000000..53a5885
--- /dev/null
+++ b/glew/auto/src/glew_init_gl.c
@@ -0,0 +1,209 @@
+/* ------------------------------------------------------------------------- */
+
+static int _glewExtensionCompare(const char *s1, const char *s2)
+{
+ /* http://www.chanduthedev.com/2012/07/strcmp-implementation-in-c.html */
+ while (*s1 || *s2)
+ {
+ if (*s1 > *s2)
+ return 1;
+ if (*s1 < *s2)
+ return -1;
+ s1++;
+ s2++;
+ }
+ return 0;
+}
+
+static ptrdiff_t _glewBsearchExtension(const char* name)
+{
+ ptrdiff_t lo = 0, hi = sizeof(_glewExtensionLookup) / sizeof(char*) - 2;
+
+ while (lo <= hi)
+ {
+ ptrdiff_t mid = (lo + hi) / 2;
+ const int cmp = _glewExtensionCompare(name, _glewExtensionLookup[mid]);
+ if (cmp < 0) hi = mid - 1;
+ else if (cmp > 0) lo = mid + 1;
+ else return mid;
+ }
+ return -1;
+}
+
+static GLboolean *_glewGetExtensionString(const char *name)
+{
+ ptrdiff_t n = _glewBsearchExtension(name);
+ if (n >= 0) return &_glewExtensionString[n];
+ return NULL;
+}
+
+static GLboolean *_glewGetExtensionEnable(const char *name)
+{
+ ptrdiff_t n = _glewBsearchExtension(name);
+ if (n >= 0) return _glewExtensionEnabled[n];
+ return NULL;
+}
+
+static const char *_glewNextSpace(const char *i)
+{
+ const char *j = i;
+ if (j)
+ while (*j!=' ' && *j) ++j;
+ return j;
+}
+
+static const char *_glewNextNonSpace(const char *i)
+{
+ const char *j = i;
+ if (j)
+ while (*j==' ') ++j;
+ return j;
+}
+
+GLboolean GLEWAPIENTRY glewGetExtension (const char* name)
+{
+ GLboolean *enable = _glewGetExtensionString(name);
+ if (enable)
+ return *enable;
+ return GL_FALSE;
+}
+
+/* ------------------------------------------------------------------------- */
+
+typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);
+
+GLenum GLEWAPIENTRY glewContextInit (void)
+{
+ PFNGLGETSTRINGPROC getString;
+ const GLubyte* s;
+ GLuint dot;
+ GLint major, minor;
+
+ #ifdef _WIN32
+ getString = glGetString;
+ #else
+ getString = (PFNGLGETSTRINGPROC) glewGetProcAddress((const GLubyte*)"glGetString");
+ if (!getString)
+ return GLEW_ERROR_NO_GL_VERSION;
+ #endif
+
+ /* query opengl version */
+ s = getString(GL_VERSION);
+ dot = _glewStrCLen(s, '.');
+ if (dot == 0)
+ return GLEW_ERROR_NO_GL_VERSION;
+
+ major = s[dot-1]-'0';
+ minor = s[dot+1]-'0';
+
+ if (minor < 0 || minor > 9)
+ minor = 0;
+ if (major<0 || major>9)
+ return GLEW_ERROR_NO_GL_VERSION;
+
+ if (major == 1 && minor == 0)
+ {
+ return GLEW_ERROR_GL_VERSION_10_ONLY;
+ }
+ else
+ {
+ GLEW_VERSION_4_6 = ( major > 4 ) || ( major == 4 && minor >= 6 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_5 = GLEW_VERSION_4_6 == GL_TRUE || ( major == 4 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_4 = GLEW_VERSION_4_5 == GL_TRUE || ( major == 4 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_3 = GLEW_VERSION_4_4 == GL_TRUE || ( major == 4 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_2 = GLEW_VERSION_4_3 == GL_TRUE || ( major == 4 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_1 = GLEW_VERSION_4_2 == GL_TRUE || ( major == 4 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_0 = GLEW_VERSION_4_1 == GL_TRUE || ( major == 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_3 = GLEW_VERSION_4_0 == GL_TRUE || ( major == 3 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_2 = GLEW_VERSION_3_3 == GL_TRUE || ( major == 3 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_1 = GLEW_VERSION_3_2 == GL_TRUE || ( major == 3 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_0 = GLEW_VERSION_3_1 == GL_TRUE || ( major == 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_2_1 = GLEW_VERSION_3_0 == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_2_0 = GLEW_VERSION_2_1 == GL_TRUE || ( major == 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_5 = GLEW_VERSION_2_0 == GL_TRUE || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_4 = GLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_3 = GLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_2_1 = GLEW_VERSION_1_3 == GL_TRUE ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_2 = GLEW_VERSION_1_2_1 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_1 = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ }
+
+ {
+ size_t i;
+ for (i = 0; i < sizeof(_glewExtensionString) / sizeof(_glewExtensionString[0]); ++i)
+ _glewExtensionString[i] = GL_FALSE;
+ }
+
+ if (GLEW_VERSION_3_0)
+ {
+ GLint n = 0;
+ GLint i;
+ PFNGLGETINTEGERVPROC getIntegerv;
+ PFNGLGETSTRINGIPROC getStringi;
+ const char *ext;
+ GLboolean *enable;
+
+ #ifdef _WIN32
+ getIntegerv = glGetIntegerv;
+ #else
+ getIntegerv = (PFNGLGETINTEGERVPROC) glewGetProcAddress((const GLubyte*)"glGetIntegerv");
+ #endif
+
+ if (getIntegerv)
+ getIntegerv(GL_NUM_EXTENSIONS, &n);
+
+ /* glGetStringi is OpenGL 3.0 */
+ getStringi = (PFNGLGETSTRINGIPROC) glewGetProcAddress((const GLubyte*)"glGetStringi");
+ if (getStringi)
+ for (i = 0; i<n; ++i)
+ {
+ ext = (const char *) getStringi(GL_EXTENSIONS, i);
+
+ /* Based on extension string(s), glewGetExtension purposes */
+ enable = _glewGetExtensionString(ext);
+ if (enable)
+ *enable = GL_TRUE;
+
+ /* Based on extension string(s), experimental mode, glewIsSupported purposes */
+ enable = _glewGetExtensionEnable(ext);
+ if (enable)
+ *enable = GL_TRUE;
+ }
+ }
+ else
+ {
+ const char *extensions;
+ const char *end;
+ const char *i;
+ const char *j;
+ char ext[128];
+ GLboolean *enable;
+
+ extensions = (const char *) getString(GL_EXTENSIONS);
+
+ if (extensions)
+ {
+ end = extensions + _glewStrLen((const GLubyte *) extensions);
+ for (i=extensions; i<end; i = j + 1)
+ {
+ i = _glewNextNonSpace(i);
+ j = _glewNextSpace(i);
+
+ /* Copy extension into NUL terminated string */
+ if (j-i >= (ptrdiff_t) sizeof(ext))
+ continue;
+ _glewStrCopy(ext, i, ' ');
+
+ /* Based on extension string(s), glewGetExtension purposes */
+ enable = _glewGetExtensionString(ext);
+ if (enable)
+ *enable = GL_TRUE;
+
+ /* Based on extension string(s), experimental mode, glewIsSupported purposes */
+ enable = _glewGetExtensionEnable(ext);
+ if (enable)
+ *enable = GL_TRUE;
+ }
+ }
+ }
diff --git a/glew/auto/src/glew_init_glx.c b/glew/auto/src/glew_init_glx.c
new file mode 100644
index 0000000..8397827
--- /dev/null
+++ b/glew/auto/src/glew_init_glx.c
@@ -0,0 +1,57 @@
+/* ------------------------------------------------------------------------ */
+
+GLboolean glxewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+
+ if (glXGetCurrentDisplay == NULL) return GL_FALSE;
+ start = (const GLubyte*)glXGetClientString(glXGetCurrentDisplay(), GLX_EXTENSIONS);
+ if (0 == start) return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum glxewInit ()
+{
+ Display* display;
+ int major, minor;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ /* initialize core GLX 1.2 */
+ if (_glewInit_GLX_VERSION_1_2()) return GLEW_ERROR_GLX_VERSION_11_ONLY;
+ /* check for a display */
+ display = glXGetCurrentDisplay();
+ if (display == NULL) return GLEW_ERROR_NO_GLX_DISPLAY;
+ /* initialize flags */
+ GLXEW_VERSION_1_0 = GL_TRUE;
+ GLXEW_VERSION_1_1 = GL_TRUE;
+ GLXEW_VERSION_1_2 = GL_TRUE;
+ GLXEW_VERSION_1_3 = GL_TRUE;
+ GLXEW_VERSION_1_4 = GL_TRUE;
+ /* query GLX version */
+ glXQueryVersion(display, &major, &minor);
+ if (major == 1 && minor <= 3)
+ {
+ switch (minor)
+ {
+ case 3:
+ GLXEW_VERSION_1_4 = GL_FALSE;
+ break;
+ case 2:
+ GLXEW_VERSION_1_4 = GL_FALSE;
+ GLXEW_VERSION_1_3 = GL_FALSE;
+ break;
+ default:
+ return GLEW_ERROR_GLX_VERSION_11_ONLY;
+ break;
+ }
+ }
+ /* query GLX extension string */
+ extStart = 0;
+ if (glXGetCurrentDisplay != NULL)
+ extStart = (const GLubyte*)glXGetClientString(display, GLX_EXTENSIONS);
+ if (extStart == 0)
+ extStart = (const GLubyte *)"";
+ extEnd = extStart + _glewStrLen(extStart);
+ /* initialize extensions */
diff --git a/glew/auto/src/glew_init_tail.c b/glew/auto/src/glew_init_tail.c
new file mode 100644
index 0000000..94af367
--- /dev/null
+++ b/glew/auto/src/glew_init_tail.c
@@ -0,0 +1,68 @@
+/* ------------------------------------------------------------------------ */
+
+const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error)
+{
+ static const GLubyte* _glewErrorString[] =
+ {
+ (const GLubyte*)"No error",
+ (const GLubyte*)"Missing GL version",
+ (const GLubyte*)"GL 1.1 and up are not supported",
+ (const GLubyte*)"GLX 1.2 and up are not supported",
+ (const GLubyte*)"No GLX display",
+ (const GLubyte*)"Unknown error"
+ };
+ const size_t max_error = sizeof(_glewErrorString)/sizeof(*_glewErrorString) - 1;
+ return _glewErrorString[(size_t)error > max_error ? max_error : (size_t)error];
+}
+
+const GLubyte * GLEWAPIENTRY glewGetString (GLenum name)
+{
+ static const GLubyte* _glewString[] =
+ {
+ (const GLubyte*)NULL,
+ (const GLubyte*)"GLEW_VERSION_STRING",
+ (const GLubyte*)"GLEW_VERSION_MAJOR_STRING",
+ (const GLubyte*)"GLEW_VERSION_MINOR_STRING",
+ (const GLubyte*)"GLEW_VERSION_MICRO_STRING"
+ };
+ const size_t max_string = sizeof(_glewString)/sizeof(*_glewString) - 1;
+ return _glewString[(size_t)name > max_string ? 0 : (size_t)name];
+}
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glewExperimental = GL_FALSE;
+
+GLenum GLEWAPIENTRY glewInit (void)
+{
+ GLenum r;
+#if defined(GLEW_EGL)
+ PFNEGLGETCURRENTDISPLAYPROC getCurrentDisplay = NULL;
+#endif
+ r = glewContextInit();
+ if ( r != 0 ) return r;
+#if defined(GLEW_EGL)
+ getCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) glewGetProcAddress("eglGetCurrentDisplay");
+ return eglewInit(getCurrentDisplay());
+#elif defined(GLEW_OSMESA) || defined(__ANDROID__) || defined(__native_client__) || defined(__HAIKU__)
+ return r;
+#elif defined(_WIN32)
+ return wglewInit();
+#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) /* _UNIX */
+ return glxewInit();
+#else
+ return r;
+#endif /* _WIN32 */
+}
+
+#if defined(_WIN32) && defined(GLEW_BUILD) && defined(__GNUC__)
+/* GCC requires a DLL entry point even without any standard library included. */
+/* Types extracted from windows.h to avoid polluting the rest of the file. */
+int __stdcall DllMainCRTStartup(void* instance, unsigned reason, void* reserved)
+{
+ (void) instance;
+ (void) reason;
+ (void) reserved;
+ return 1;
+}
+#endif
diff --git a/glew/auto/src/glew_init_wgl.c b/glew/auto/src/glew_init_wgl.c
new file mode 100644
index 0000000..978cf3c
--- /dev/null
+++ b/glew/auto/src/glew_init_wgl.c
@@ -0,0 +1,41 @@
+/* ------------------------------------------------------------------------- */
+
+static PFNWGLGETEXTENSIONSSTRINGARBPROC _wglewGetExtensionsStringARB = NULL;
+static PFNWGLGETEXTENSIONSSTRINGEXTPROC _wglewGetExtensionsStringEXT = NULL;
+
+GLboolean GLEWAPIENTRY wglewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+ if (_wglewGetExtensionsStringARB == NULL)
+ if (_wglewGetExtensionsStringEXT == NULL)
+ return GL_FALSE;
+ else
+ start = (const GLubyte*)_wglewGetExtensionsStringEXT();
+ else
+ start = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());
+ if (start == 0)
+ return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum GLEWAPIENTRY wglewInit ()
+{
+ GLboolean crippled;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ /* find wgl extension string query functions */
+ _wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB");
+ _wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT");
+ /* query wgl extension string */
+ if (_wglewGetExtensionsStringARB == NULL)
+ if (_wglewGetExtensionsStringEXT == NULL)
+ extStart = (const GLubyte*)"";
+ else
+ extStart = (const GLubyte*)_wglewGetExtensionsStringEXT();
+ else
+ extStart = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());
+ extEnd = extStart + _glewStrLen(extStart);
+ /* initialize extensions */
+ crippled = _wglewGetExtensionsStringARB == NULL && _wglewGetExtensionsStringEXT == NULL;
diff --git a/glew/auto/src/glew_license.h b/glew/auto/src/glew_license.h
new file mode 100644
index 0000000..353640e
--- /dev/null
+++ b/glew/auto/src/glew_license.h
@@ -0,0 +1,32 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
diff --git a/glew/auto/src/glew_str_egl.c b/glew/auto/src/glew_str_egl.c
new file mode 100644
index 0000000..f0c52f9
--- /dev/null
+++ b/glew/auto/src/glew_str_egl.c
@@ -0,0 +1,17 @@
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#elif defined(GLEW_EGL)
+
+GLboolean eglewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if(_glewStrSame1(&pos, &len, (const GLubyte*)"EGL_", 4))
+ {
diff --git a/glew/auto/src/glew_str_glx.c b/glew/auto/src/glew_str_glx.c
new file mode 100644
index 0000000..893d741
--- /dev/null
+++ b/glew/auto/src/glew_str_glx.c
@@ -0,0 +1,17 @@
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#elif !defined(GLEW_OSMESA) && !defined(GLEW_EGL) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+
+GLboolean glxewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if(_glewStrSame1(&pos, &len, (const GLubyte*)"GLX_", 4))
+ {
diff --git a/glew/auto/src/glew_str_head.c b/glew/auto/src/glew_str_head.c
new file mode 100644
index 0000000..fed3a0f
--- /dev/null
+++ b/glew/auto/src/glew_str_head.c
@@ -0,0 +1,9 @@
+GLboolean GLEWAPIENTRY glewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if (_glewStrSame1(&pos, &len, (const GLubyte*)"GL_", 3))
+ {
diff --git a/glew/auto/src/glew_str_tail.c b/glew/auto/src/glew_str_tail.c
new file mode 100644
index 0000000..caa9572
--- /dev/null
+++ b/glew/auto/src/glew_str_tail.c
@@ -0,0 +1,7 @@
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#endif /* _WIN32 */
diff --git a/glew/auto/src/glew_str_wgl.c b/glew/auto/src/glew_str_wgl.c
new file mode 100644
index 0000000..db67b51
--- /dev/null
+++ b/glew/auto/src/glew_str_wgl.c
@@ -0,0 +1,17 @@
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
+
+GLboolean GLEWAPIENTRY wglewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if (_glewStrSame1(&pos, &len, (const GLubyte*)"WGL_", 4))
+ {
diff --git a/glew/auto/src/glew_tail.h b/glew/auto/src/glew_tail.h
new file mode 100644
index 0000000..65c449a
--- /dev/null
+++ b/glew/auto/src/glew_tail.h
@@ -0,0 +1,69 @@
+/* ------------------------------------------------------------------------- */
+
+/* error codes */
+#define GLEW_OK 0
+#define GLEW_NO_ERROR 0
+#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */
+#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* Need at least OpenGL 1.1 */
+#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* Need at least GLX 1.2 */
+#define GLEW_ERROR_NO_GLX_DISPLAY 4 /* Need GLX display for GLX support */
+
+/* string codes */
+#define GLEW_VERSION 1
+#define GLEW_VERSION_MAJOR 2
+#define GLEW_VERSION_MINOR 3
+#define GLEW_VERSION_MICRO 4
+
+/* ------------------------------------------------------------------------- */
+
+/* GLEW version info */
+
+/*
+VERSION GLEW_VERSION_STRING
+VERSION_MAJOR GLEW_VERSION_MAJOR_STRING
+VERSION_MINOR GLEW_VERSION_MINOR_STRING
+VERSION_MICRO GLEW_VERSION_MICRO_STRING
+*/
+
+/* API */
+GLEWAPI GLenum GLEWAPIENTRY glewInit (void);
+GLEWAPI GLenum GLEWAPIENTRY glewContextInit (void);
+GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name);
+#define glewIsExtensionSupported(x) glewIsSupported(x)
+
+#ifndef GLEW_GET_VAR
+#define GLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef GLEW_GET_FUN
+#define GLEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean glewExperimental;
+GLEWAPI GLboolean GLEWAPIENTRY glewGetExtension (const char *name);
+GLEWAPI const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error);
+GLEWAPI const GLubyte * GLEWAPIENTRY glewGetString (GLenum name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef GLEW_APIENTRY_DEFINED
+#undef GLEW_APIENTRY_DEFINED
+#undef APIENTRY
+#endif
+
+#ifdef GLEW_CALLBACK_DEFINED
+#undef GLEW_CALLBACK_DEFINED
+#undef CALLBACK
+#endif
+
+#ifdef GLEW_WINGDIAPI_DEFINED
+#undef GLEW_WINGDIAPI_DEFINED
+#undef WINGDIAPI
+#endif
+
+#undef GLAPI
+/* #undef GLEWAPI */
+
+#endif /* __glew_h__ */
diff --git a/glew/auto/src/glewinfo_egl.c b/glew/auto/src/glewinfo_egl.c
new file mode 100644
index 0000000..877e722
--- /dev/null
+++ b/glew/auto/src/glewinfo_egl.c
@@ -0,0 +1,6 @@
+}
+
+#elif defined(GLEW_EGL)
+
+static void eglewInfo ()
+{
diff --git a/glew/auto/src/glewinfo_gl.c b/glew/auto/src/glewinfo_gl.c
new file mode 100644
index 0000000..9d7835d
--- /dev/null
+++ b/glew/auto/src/glewinfo_gl.c
@@ -0,0 +1,7 @@
+/* ------------------------------------------------------------------------ */
+
+static void glewInfo (void)
+{
+#ifdef GL_VERSION_1_1
+ _glewInfo_GL_VERSION_1_1();
+#endif /* GL_VERSION_1_1 */
diff --git a/glew/auto/src/glewinfo_glx.c b/glew/auto/src/glewinfo_glx.c
new file mode 100644
index 0000000..e60b549
--- /dev/null
+++ b/glew/auto/src/glewinfo_glx.c
@@ -0,0 +1,6 @@
+}
+
+#elif !defined(GLEW_EGL) && !defined(GLEW_OSMESA) /* _UNIX */
+
+static void glxewInfo ()
+{
diff --git a/glew/auto/src/glewinfo_head.c b/glew/auto/src/glewinfo_head.c
new file mode 100644
index 0000000..79ed785
--- /dev/null
+++ b/glew/auto/src/glewinfo_head.c
@@ -0,0 +1,96 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <GL/glew.h>
+#if defined(GLEW_EGL)
+#include <GL/eglew.h>
+#elif defined(GLEW_OSMESA)
+#define GLAPI extern
+#include <GL/osmesa.h>
+#elif defined(_WIN32)
+#include <GL/wglew.h>
+#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+#include <GL/glxew.h>
+#endif
+
+#if defined(__APPLE__)
+#include <AvailabilityMacros.h>
+#endif
+
+#ifdef GLEW_REGAL
+#include <GL/Regal.h>
+#endif
+
+static FILE* f;
+
+/* Command-line parameters for GL context creation */
+
+struct createParams
+{
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ int pixelformat;
+#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+ const char* display;
+ int visual;
+#endif
+ int major, minor; /* GL context version number */
+
+ /* https://www.opengl.org/registry/specs/ARB/glx_create_context.txt */
+ int profile; /* core = 1, compatibility = 2 */
+ int flags; /* debug = 1, forward compatible = 2 */
+
+ /* GLEW experimental mode */
+ int experimental;
+};
+
+GLboolean glewCreateContext (struct createParams *params);
+
+GLboolean glewParseArgs (int argc, char** argv, struct createParams *);
+
+void glewDestroyContext ();
+
+/* ------------------------------------------------------------------------- */
+
+static GLboolean glewPrintExt (const char* name, GLboolean def1, GLboolean def2, GLboolean def3)
+{
+ unsigned int i;
+ fprintf(f, "\n%s:", name);
+ for (i=0; i<62-strlen(name); i++) fprintf(f, " ");
+ fprintf(f, "%s ", def1 ? "OK" : "MISSING");
+ if (def1 != def2)
+ fprintf(f, "[%s] ", def2 ? "OK" : "MISSING");
+ if (def1 != def3)
+ fprintf(f, "[%s]\n", def3 ? "OK" : "MISSING");
+ else
+ fprintf(f, "\n");
+ for (i=0; i<strlen(name)+1; i++) fprintf(f, "-");
+ fprintf(f, "\n");
+ fflush(f);
+ return def1 || def2 || def3 || glewExperimental; /* Enable per-function info too? */
+}
+
+static void glewInfoFunc (GLboolean fi, const char* name, GLint undefined)
+{
+ unsigned int i;
+ if (fi)
+ {
+ fprintf(f, " %s:", name);
+ for (i=0; i<60-strlen(name); i++) fprintf(f, " ");
+ fprintf(f, "%s\n", undefined ? "MISSING" : "OK");
+ fflush(f);
+ }
+}
+
+/* ----------------------------- GL_VERSION_1_1 ---------------------------- */
+
+#ifdef GL_VERSION_1_1
+
+static void _glewInfo_GL_VERSION_1_1 (void)
+{
+ glewPrintExt("GL_VERSION_1_1", GLEW_VERSION_1_1, GLEW_VERSION_1_1, GLEW_VERSION_1_1);
+}
+
+#endif /* GL_VERSION_1_1 */
+
diff --git a/glew/auto/src/glewinfo_tail.c b/glew/auto/src/glewinfo_tail.c
new file mode 100644
index 0000000..fe51168
--- /dev/null
+++ b/glew/auto/src/glewinfo_tail.c
@@ -0,0 +1,609 @@
+}
+
+#endif /* _WIN32 */
+
+/* ------------------------------------------------------------------------ */
+
+int main (int argc, char** argv)
+{
+ GLuint err;
+ struct createParams params =
+ {
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ -1, /* pixelformat */
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ "", /* display */
+ -1, /* visual */
+#endif
+ 0, /* major */
+ 0, /* minor */
+ 0, /* profile mask */
+ 0, /* flags */
+ 0 /* experimental */
+ };
+
+#if defined(GLEW_EGL)
+ typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
+ PFNGLGETSTRINGPROC getString;
+#endif
+
+ if (glewParseArgs(argc-1, argv+1, &params))
+ {
+ fprintf(stderr, "Usage: glewinfo "
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ "[-pf <pixelformat>] "
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ "[-display <display>] "
+ "[-visual <visual id>] "
+#endif
+ "[-version <OpenGL version>] "
+ "[-profile core|compatibility] "
+ "[-flag debug|forward] "
+ "[-experimental]"
+ "\n");
+ return 1;
+ }
+
+ if (GL_TRUE == glewCreateContext(&params))
+ {
+ fprintf(stderr, "Error: glewCreateContext failed\n");
+ glewDestroyContext();
+ return 1;
+ }
+ glewExperimental = params.experimental ? GL_TRUE : GL_FALSE;
+ err = glewInit();
+ if (GLEW_OK != err)
+ {
+ fprintf(stderr, "Error [main]: glewInit failed: %s\n", glewGetErrorString(err));
+ glewDestroyContext();
+ return 1;
+ }
+
+#if defined(GLEW_EGL)
+ getString = (PFNGLGETSTRINGPROC) eglGetProcAddress("glGetString");
+ if (!getString)
+ {
+ fprintf(stderr, "Error: eglGetProcAddress failed to fetch glGetString\n");
+ glewDestroyContext();
+ return 1;
+ }
+#endif
+
+#if defined(_WIN32)
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ if (fopen_s(&f, "glewinfo.txt", "w") != 0)
+ f = stdout;
+#else
+ f = fopen("glewinfo.txt", "w");
+#endif
+ if (f == NULL) f = stdout;
+#else
+ f = stdout;
+#endif
+ fprintf(f, "---------------------------\n");
+ fprintf(f, " GLEW Extension Info\n");
+ fprintf(f, "---------------------------\n\n");
+ fprintf(f, "GLEW version %s\n", glewGetString(GLEW_VERSION));
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ fprintf(f, "Reporting capabilities of pixelformat %d\n", params.pixelformat);
+#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ fprintf(f, "Reporting capabilities of display %s, visual 0x%x\n",
+ params.display == NULL ? getenv("DISPLAY") : params.display, params.visual);
+#endif
+#if defined(GLEW_EGL)
+ fprintf(f, "Running on a %s from %s\n",
+ getString(GL_RENDERER), getString(GL_VENDOR));
+ fprintf(f, "OpenGL version %s is supported\n", getString(GL_VERSION));
+#else
+ fprintf(f, "Running on a %s from %s\n",
+ glGetString(GL_RENDERER), glGetString(GL_VENDOR));
+ fprintf(f, "OpenGL version %s is supported\n", glGetString(GL_VERSION));
+#endif
+ glewInfo();
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+ eglewInfo();
+#elif defined(_WIN32)
+ wglewInfo();
+#else
+ glxewInfo();
+#endif
+ if (f != stdout) fclose(f);
+ glewDestroyContext();
+ return 0;
+}
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glewParseArgs (int argc, char** argv, struct createParams *params)
+{
+ int p = 0;
+ while (p < argc)
+ {
+ if (!strcmp(argv[p], "-version"))
+ {
+ if (++p >= argc) return GL_TRUE;
+#if defined(__STDC_LIB_EXT1__) || (defined(_MSC_VER) && (_MSC_VER >= 1400))
+ if (sscanf_s(argv[p++], "%d.%d", &params->major, &params->minor) != 2) return GL_TRUE;
+#else
+ if (sscanf(argv[p++], "%d.%d", &params->major, &params->minor) != 2) return GL_TRUE;
+#endif
+ }
+ else if (!strcmp(argv[p], "-profile"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ if (strcmp("core", argv[p]) == 0) params->profile |= 1;
+ else if (strcmp("compatibility",argv[p]) == 0) params->profile |= 2;
+ else return GL_TRUE;
+ ++p;
+ }
+ else if (!strcmp(argv[p], "-flag"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ if (strcmp("debug", argv[p]) == 0) params->flags |= 1;
+ else if (strcmp("forward",argv[p]) == 0) params->flags |= 2;
+ else return GL_TRUE;
+ ++p;
+ }
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ else if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->pixelformat = strtol(argv[p++], NULL, 0);
+ }
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ else if (!strcmp(argv[p], "-display"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->display = argv[p++];
+ }
+ else if (!strcmp(argv[p], "-visual"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->visual = (int)strtol(argv[p++], NULL, 0);
+ }
+#endif
+ else if (!strcmp(argv[p], "-experimental"))
+ {
+ params->experimental = 1;
+ ++p;
+ }
+ else
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(GLEW_EGL)
+EGLDisplay display;
+EGLContext ctx;
+
+/* See: http://stackoverflow.com/questions/12662227/opengl-es2-0-offscreen-context-for-fbo-rendering */
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ EGLDeviceEXT devices[1];
+ EGLint numDevices;
+ EGLSurface surface;
+ EGLint majorVersion, minorVersion;
+ EGLint configAttribs[] = {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
+ EGL_NONE
+ };
+ static const EGLint contextAttribs[] = {
+ EGL_CONTEXT_CLIENT_VERSION, 2,
+ EGL_NONE
+ };
+ static const EGLint pBufferAttribs[] = {
+ EGL_WIDTH, 128,
+ EGL_HEIGHT, 128,
+ EGL_NONE
+ };
+ EGLConfig config;
+ EGLint numConfig;
+ EGLBoolean pBuffer;
+
+ PFNEGLQUERYDEVICESEXTPROC queryDevices = NULL;
+ PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = NULL;
+ PFNEGLGETERRORPROC getError = NULL;
+ PFNEGLGETDISPLAYPROC getDisplay = NULL;
+ PFNEGLINITIALIZEPROC initialize = NULL;
+ PFNEGLBINDAPIPROC bindAPI = NULL;
+ PFNEGLCHOOSECONFIGPROC chooseConfig = NULL;
+ PFNEGLCREATEWINDOWSURFACEPROC createWindowSurface = NULL;
+ PFNEGLCREATECONTEXTPROC createContext = NULL;
+ PFNEGLMAKECURRENTPROC makeCurrent = NULL;
+ PFNEGLCREATEPBUFFERSURFACEPROC createPbufferSurface = NULL;
+
+ /* Load necessary entry points */
+ queryDevices = (PFNEGLQUERYDEVICESEXTPROC) eglGetProcAddress("eglQueryDevicesEXT");
+ getPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYEXTPROC) eglGetProcAddress("eglGetPlatformDisplayEXT");
+ getError = (PFNEGLGETERRORPROC) eglGetProcAddress("eglGetError");
+ getDisplay = (PFNEGLGETDISPLAYPROC) eglGetProcAddress("eglGetDisplay");
+ initialize = (PFNEGLINITIALIZEPROC) eglGetProcAddress("eglInitialize");
+ bindAPI = (PFNEGLBINDAPIPROC) eglGetProcAddress("eglBindAPI");
+ chooseConfig = (PFNEGLCHOOSECONFIGPROC) eglGetProcAddress("eglChooseConfig");
+ createWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC) eglGetProcAddress("eglCreateWindowSurface");
+ createPbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC) eglGetProcAddress("eglCreatePbufferSurface");
+ createContext = (PFNEGLCREATECONTEXTPROC) eglGetProcAddress("eglCreateContext");
+ makeCurrent = (PFNEGLMAKECURRENTPROC) eglGetProcAddress("eglMakeCurrent");
+ if (!getError || !getDisplay || !initialize || !bindAPI || !chooseConfig || !createWindowSurface || !createContext || !makeCurrent)
+ return GL_TRUE;
+
+ pBuffer = 0;
+ display = EGL_NO_DISPLAY;
+ if (queryDevices && getPlatformDisplay)
+ {
+ queryDevices(1, devices, &numDevices);
+ if (numDevices==1)
+ {
+ /* Nvidia EGL doesn't need X11 for p-buffer surface */
+ display = getPlatformDisplay(EGL_PLATFORM_DEVICE_EXT, devices[0], 0);
+ configAttribs[1] = EGL_PBUFFER_BIT;
+ pBuffer = 1;
+ }
+ }
+ if (display==EGL_NO_DISPLAY)
+ {
+ /* Fall-back to X11 surface, works on Mesa */
+ display = getDisplay(EGL_DEFAULT_DISPLAY);
+ }
+ if (display == EGL_NO_DISPLAY)
+ return GL_TRUE;
+
+ eglewInit(display);
+
+ if (bindAPI(EGL_OPENGL_API) != EGL_TRUE)
+ return GL_TRUE;
+
+ if (chooseConfig(display, configAttribs, &config, 1, &numConfig) != EGL_TRUE || (numConfig != 1))
+ return GL_TRUE;
+
+ ctx = createContext(display, config, EGL_NO_CONTEXT, pBuffer ? contextAttribs : NULL);
+ if (NULL == ctx)
+ return GL_TRUE;
+
+ surface = EGL_NO_SURFACE;
+ /* Create a p-buffer surface if possible */
+ if (pBuffer && createPbufferSurface)
+ {
+ surface = createPbufferSurface(display, config, pBufferAttribs);
+ }
+ /* Create a generic surface without a native window, if necessary */
+ if (surface==EGL_NO_SURFACE)
+ {
+ surface = createWindowSurface(display, config, (EGLNativeWindowType) NULL, NULL);
+ }
+#if 0
+ if (surface == EGL_NO_SURFACE)
+ return GL_TRUE;
+#endif
+
+ if (makeCurrent(display, surface, surface, ctx) != EGL_TRUE)
+ return GL_TRUE;
+
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != ctx) eglDestroyContext(display, ctx);
+}
+
+#elif defined(GLEW_OSMESA)
+OSMesaContext ctx;
+
+static const GLint osmFormat = GL_UNSIGNED_BYTE;
+static const GLint osmWidth = 640;
+static const GLint osmHeight = 480;
+static GLubyte *osmPixels = NULL;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);
+ if (NULL == ctx) return GL_TRUE;
+ if (NULL == osmPixels)
+ {
+ osmPixels = (GLubyte *) calloc(osmWidth*osmHeight*4, 1);
+ }
+ if (!OSMesaMakeCurrent(ctx, osmPixels, GL_UNSIGNED_BYTE, osmWidth, osmHeight))
+ {
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != ctx) OSMesaDestroyContext(ctx);
+}
+
+#elif defined(_WIN32)
+
+HWND wnd = NULL;
+HDC dc = NULL;
+HGLRC rc = NULL;
+
+GLboolean glewCreateContext (struct createParams* params)
+{
+ WNDCLASS wc;
+ PIXELFORMATDESCRIPTOR pfd;
+ /* register window class */
+ ZeroMemory(&wc, sizeof(WNDCLASS));
+ wc.hInstance = GetModuleHandle(NULL);
+ wc.lpfnWndProc = DefWindowProc;
+ wc.lpszClassName = "GLEW";
+ if (0 == RegisterClass(&wc)) return GL_TRUE;
+ /* create window */
+ wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, NULL, NULL, GetModuleHandle(NULL), NULL);
+ if (NULL == wnd) return GL_TRUE;
+ /* get the device context */
+ dc = GetDC(wnd);
+ if (NULL == dc) return GL_TRUE;
+ /* find pixel format */
+ ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
+ if (params->pixelformat == -1) /* find default */
+ {
+ pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
+ pfd.nVersion = 1;
+ pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+ params->pixelformat = ChoosePixelFormat(dc, &pfd);
+ if (params->pixelformat == 0) return GL_TRUE;
+ }
+ /* set the pixel format for the dc */
+ if (FALSE == SetPixelFormat(dc, params->pixelformat, &pfd)) return GL_TRUE;
+ /* create rendering context */
+ rc = wglCreateContext(dc);
+ if (NULL == rc) return GL_TRUE;
+ if (FALSE == wglMakeCurrent(dc, rc)) return GL_TRUE;
+ if (params->major || params->profile || params->flags)
+ {
+ HGLRC oldRC = rc;
+ int contextAttrs[20];
+ int i;
+
+ wglewInit();
+
+ /* Intel HD 3000 has WGL_ARB_create_context, but not WGL_ARB_create_context_profile */
+ if (!wglewGetExtension("WGL_ARB_create_context"))
+ return GL_TRUE;
+
+ i = 0;
+ if (params->major)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_MAJOR_VERSION_ARB;
+ contextAttrs[i++] = params->major;
+ contextAttrs[i++] = WGL_CONTEXT_MINOR_VERSION_ARB;
+ contextAttrs[i++] = params->minor;
+ }
+ if (params->profile)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_PROFILE_MASK_ARB;
+ contextAttrs[i++] = params->profile;
+ }
+ if (params->flags)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_FLAGS_ARB;
+ contextAttrs[i++] = params->flags;
+ }
+ contextAttrs[i++] = 0;
+ rc = wglCreateContextAttribsARB(dc, 0, contextAttrs);
+
+ if (NULL == rc) return GL_TRUE;
+ if (!wglMakeCurrent(dc, rc)) return GL_TRUE;
+
+ wglDeleteContext(oldRC);
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != rc) wglMakeCurrent(NULL, NULL);
+ if (NULL != rc) wglDeleteContext(rc);
+ if (NULL != wnd && NULL != dc) ReleaseDC(wnd, dc);
+ if (NULL != wnd) DestroyWindow(wnd);
+ UnregisterClass("GLEW", GetModuleHandle(NULL));
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLTypes.h>
+
+CGLContextObj ctx, octx;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ CGLPixelFormatAttribute contextAttrs[20];
+ int i;
+ CGLPixelFormatObj pf;
+ GLint npix;
+ CGLError error;
+
+ i = 0;
+ contextAttrs[i++] = kCGLPFAAccelerated; /* No software rendering */
+
+ /* MAC_OS_X_VERSION_10_7 == 1070 */
+ #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+ if (params->profile & GL_CONTEXT_CORE_PROFILE_BIT)
+ {
+ if ((params->major==3 && params->minor>=2) || params->major>3)
+ {
+ contextAttrs[i++] = kCGLPFAOpenGLProfile; /* OSX 10.7 Lion onwards */
+ contextAttrs[i++] = (CGLPixelFormatAttribute) kCGLOGLPVersion_3_2_Core; /* 3.2 Core Context */
+ }
+ }
+ #endif
+
+ contextAttrs[i++] = 0;
+
+ error = CGLChoosePixelFormat(contextAttrs, &pf, &npix);
+ if (error) return GL_TRUE;
+ error = CGLCreateContext(pf, NULL, &ctx);
+ if (error) return GL_TRUE;
+ CGLReleasePixelFormat(pf);
+ octx = CGLGetCurrentContext();
+ error = CGLSetCurrentContext(ctx);
+ if (error) return GL_TRUE;
+ /* Needed for Regal on the Mac */
+ #if defined(GLEW_REGAL) && defined(__APPLE__)
+ RegalMakeCurrent(ctx);
+ #endif
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ CGLSetCurrentContext(octx);
+ CGLReleaseContext(ctx);
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__HAIKU__)
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ /* TODO: Haiku: We need to call C++ code here */
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ /* TODO: Haiku: We need to call C++ code here */
+}
+
+/* ------------------------------------------------------------------------ */
+
+#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
+
+Display* dpy = NULL;
+XVisualInfo* vi = NULL;
+XVisualInfo* vis = NULL;
+GLXContext ctx = NULL;
+Window wnd = 0;
+Colormap cmap = 0;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None };
+ int erb, evb;
+ XSetWindowAttributes swa;
+ /* open display */
+ dpy = XOpenDisplay(params->display);
+ if (NULL == dpy) return GL_TRUE;
+ /* query for glx */
+ if (!glXQueryExtension(dpy, &erb, &evb)) return GL_TRUE;
+ /* choose visual */
+ if (params->visual == -1)
+ {
+ vi = glXChooseVisual(dpy, DefaultScreen(dpy), attrib);
+ if (NULL == vi) return GL_TRUE;
+ params->visual = (int)XVisualIDFromVisual(vi->visual);
+ }
+ else
+ {
+ int n_vis, i;
+ vis = XGetVisualInfo(dpy, 0, NULL, &n_vis);
+ for (i=0; i<n_vis; i++)
+ {
+ if ((int)XVisualIDFromVisual(vis[i].visual) == params->visual)
+ vi = &vis[i];
+ }
+ if (vi == NULL) return GL_TRUE;
+ }
+ /* create context */
+ ctx = glXCreateContext(dpy, vi, None, True);
+ if (NULL == ctx) return GL_TRUE;
+ /* create window */
+ /*wnd = XCreateSimpleWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 1, 1, 1, 0, 0);*/
+ cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), vi->visual, AllocNone);
+ swa.border_pixel = 0;
+ swa.colormap = cmap;
+ wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen),
+ 0, 0, 1, 1, 0, vi->depth, InputOutput, vi->visual,
+ CWBorderPixel | CWColormap, &swa);
+ /* make context current */
+ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;
+ if (params->major || params->profile || params->flags)
+ {
+ GLXContext oldCtx = ctx;
+ GLXFBConfig *FBConfigs;
+ int FBConfigAttrs[] = { GLX_FBCONFIG_ID, 0, None };
+ int contextAttrs[20];
+ int nelems, i;
+
+ glxewInit();
+
+ if (!glxewGetExtension("GLX_ARB_create_context"))
+ return GL_TRUE;
+
+ if (glXQueryContext(dpy, oldCtx, GLX_FBCONFIG_ID, &FBConfigAttrs[1]))
+ return GL_TRUE;
+ FBConfigs = glXChooseFBConfig(dpy, vi->screen, FBConfigAttrs, &nelems);
+
+ if (nelems < 1)
+ return GL_TRUE;
+
+ i = 0;
+ if (params->major)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_MAJOR_VERSION_ARB;
+ contextAttrs[i++] = params->major;
+ contextAttrs[i++] = GLX_CONTEXT_MINOR_VERSION_ARB;
+ contextAttrs[i++] = params->minor;
+ }
+ if (params->profile)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_PROFILE_MASK_ARB;
+ contextAttrs[i++] = params->profile;
+ }
+ if (params->flags)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_FLAGS_ARB;
+ contextAttrs[i++] = params->flags;
+ }
+ contextAttrs[i++] = None;
+ ctx = glXCreateContextAttribsARB(dpy, *FBConfigs, NULL, True, contextAttrs);
+
+ if (NULL == ctx) return GL_TRUE;
+ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;
+
+ glXDestroyContext(dpy, oldCtx);
+
+ XFree(FBConfigs);
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != dpy && NULL != ctx) glXDestroyContext(dpy, ctx);
+ if (NULL != dpy && 0 != wnd) XDestroyWindow(dpy, wnd);
+ if (NULL != dpy && 0 != cmap) XFreeColormap(dpy, cmap);
+ if (NULL != vis)
+ XFree(vis);
+ else if (NULL != vi)
+ XFree(vi);
+ if (NULL != dpy) XCloseDisplay(dpy);
+}
+
+#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
diff --git a/glew/auto/src/glewinfo_wgl.c b/glew/auto/src/glewinfo_wgl.c
new file mode 100644
index 0000000..9405667
--- /dev/null
+++ b/glew/auto/src/glewinfo_wgl.c
@@ -0,0 +1,8 @@
+}
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
+
+static void wglewInfo ()
+{
diff --git a/glew/auto/src/glxew_head.h b/glew/auto/src/glxew_head.h
new file mode 100644
index 0000000..414dc1b
--- /dev/null
+++ b/glew/auto/src/glxew_head.h
@@ -0,0 +1,111 @@
+#ifndef __glxew_h__
+#define __glxew_h__
+#define __GLXEW_H__
+
+#ifdef __glxext_h_
+#error glxext.h included before glxew.h
+#endif
+
+#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__)
+#error glx.h included before glxew.h
+#endif
+
+#define __glxext_h_
+
+#define GLX_H
+#define __GLX_glx_h__
+#define __glx_h__
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xmd.h>
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ---------------------------- GLX_VERSION_1_0 --------------------------- */
+
+#ifndef GLX_VERSION_1_0
+#define GLX_VERSION_1_0 1
+
+#define GLX_USE_GL 1
+#define GLX_BUFFER_SIZE 2
+#define GLX_LEVEL 3
+#define GLX_RGBA 4
+#define GLX_DOUBLEBUFFER 5
+#define GLX_STEREO 6
+#define GLX_AUX_BUFFERS 7
+#define GLX_RED_SIZE 8
+#define GLX_GREEN_SIZE 9
+#define GLX_BLUE_SIZE 10
+#define GLX_ALPHA_SIZE 11
+#define GLX_DEPTH_SIZE 12
+#define GLX_STENCIL_SIZE 13
+#define GLX_ACCUM_RED_SIZE 14
+#define GLX_ACCUM_GREEN_SIZE 15
+#define GLX_ACCUM_BLUE_SIZE 16
+#define GLX_ACCUM_ALPHA_SIZE 17
+#define GLX_BAD_SCREEN 1
+#define GLX_BAD_ATTRIBUTE 2
+#define GLX_NO_EXTENSION 3
+#define GLX_BAD_VISUAL 4
+#define GLX_BAD_CONTEXT 5
+#define GLX_BAD_VALUE 6
+#define GLX_BAD_ENUM 7
+
+typedef XID GLXDrawable;
+typedef XID GLXPixmap;
+#ifdef __sun
+typedef struct __glXContextRec *GLXContext;
+#else
+typedef struct __GLXcontextRec *GLXContext;
+#endif
+
+typedef unsigned int GLXVideoDeviceNV;
+
+extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase);
+extern Bool glXQueryVersion (Display *dpy, int *major, int *minor);
+extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value);
+extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList);
+extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap);
+extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix);
+extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct);
+extern void glXDestroyContext (Display *dpy, GLXContext ctx);
+extern Bool glXIsDirect (Display *dpy, GLXContext ctx);
+extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask);
+extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx);
+extern GLXContext glXGetCurrentContext (void);
+extern GLXDrawable glXGetCurrentDrawable (void);
+extern void glXWaitGL (void);
+extern void glXWaitX (void);
+extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable);
+extern void glXUseXFont (Font font, int first, int count, int listBase);
+
+#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0)
+
+#endif /* GLX_VERSION_1_0 */
+
+/* ---------------------------- GLX_VERSION_1_1 --------------------------- */
+
+#ifndef GLX_VERSION_1_1
+#define GLX_VERSION_1_1
+
+#define GLX_VENDOR 0x1
+#define GLX_VERSION 0x2
+#define GLX_EXTENSIONS 0x3
+
+extern const char* glXQueryExtensionsString (Display *dpy, int screen);
+extern const char* glXGetClientString (Display *dpy, int name);
+extern const char* glXQueryServerString (Display *dpy, int screen, int name);
+
+#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1)
+
+#endif /* GLX_VERSION_1_1 */
+
diff --git a/glew/auto/src/glxew_mid.h b/glew/auto/src/glxew_mid.h
new file mode 100644
index 0000000..7fcf5d6
--- /dev/null
+++ b/glew/auto/src/glxew_mid.h
@@ -0,0 +1,4 @@
+/* ------------------------------------------------------------------------- */
+
+#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define GLXEW_VAR_EXPORT GLEW_VAR_EXPORT
diff --git a/glew/auto/src/glxew_tail.h b/glew/auto/src/glxew_tail.h
new file mode 100644
index 0000000..05ff1b1
--- /dev/null
+++ b/glew/auto/src/glxew_tail.h
@@ -0,0 +1,20 @@
+/* ------------------------------------------------------------------------ */
+
+GLEWAPI GLenum GLEWAPIENTRY glxewInit ();
+GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name);
+
+#ifndef GLXEW_GET_VAR
+#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef GLXEW_GET_FUN
+#define GLXEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __glxew_h__ */
diff --git a/glew/auto/src/header.html b/glew/auto/src/header.html
new file mode 100644
index 0000000..3af7255
--- /dev/null
+++ b/glew/auto/src/header.html
@@ -0,0 +1,96 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
diff --git a/glew/auto/src/khronos_license.h b/glew/auto/src/khronos_license.h
new file mode 100644
index 0000000..420cd72
--- /dev/null
+++ b/glew/auto/src/khronos_license.h
@@ -0,0 +1,23 @@
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
diff --git a/glew/auto/src/mesa_license.h b/glew/auto/src/mesa_license.h
new file mode 100644
index 0000000..3350cca
--- /dev/null
+++ b/glew/auto/src/mesa_license.h
@@ -0,0 +1,24 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 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"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
diff --git a/glew/auto/src/wglew_head.h b/glew/auto/src/wglew_head.h
new file mode 100644
index 0000000..df88503
--- /dev/null
+++ b/glew/auto/src/wglew_head.h
@@ -0,0 +1,36 @@
+#ifndef __wglew_h__
+#define __wglew_h__
+#define __WGLEW_H__
+
+#ifdef __wglext_h_
+#error wglext.h included before wglew.h
+#endif
+
+#define __wglext_h_
+
+#if !defined(WINAPI)
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN 1
+# endif
+#include <windows.h>
+# undef WIN32_LEAN_AND_MEAN
+#endif
+
+/*
+ * GLEW_STATIC needs to be set when using the static version.
+ * GLEW_BUILD is set when building the DLL version.
+ */
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# ifdef GLEW_BUILD
+# define GLEWAPI extern __declspec(dllexport)
+# else
+# define GLEWAPI extern __declspec(dllimport)
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
diff --git a/glew/auto/src/wglew_mid.h b/glew/auto/src/wglew_mid.h
new file mode 100644
index 0000000..25b1037
--- /dev/null
+++ b/glew/auto/src/wglew_mid.h
@@ -0,0 +1,4 @@
+/* ------------------------------------------------------------------------- */
+
+#define WGLEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define WGLEW_VAR_EXPORT GLEW_VAR_EXPORT
diff --git a/glew/auto/src/wglew_tail.h b/glew/auto/src/wglew_tail.h
new file mode 100644
index 0000000..8971158
--- /dev/null
+++ b/glew/auto/src/wglew_tail.h
@@ -0,0 +1,22 @@
+/* ------------------------------------------------------------------------- */
+
+GLEWAPI GLenum GLEWAPIENTRY wglewInit ();
+GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name);
+
+#ifndef WGLEW_GET_VAR
+#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef WGLEW_GET_FUN
+#define WGLEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef GLEWAPI
+
+#endif /* __wglew_h__ */
diff --git a/glew/build/cmake/CMakeLists.txt b/glew/build/cmake/CMakeLists.txt
new file mode 100644
index 0000000..281eed8
--- /dev/null
+++ b/glew/build/cmake/CMakeLists.txt
@@ -0,0 +1,287 @@
+if ( NOT DEFINED CMAKE_BUILD_TYPE )
+ set( CMAKE_BUILD_TYPE Release CACHE STRING "Build type" )
+endif ()
+
+project (glew C)
+
+cmake_minimum_required (VERSION 2.8.12)
+
+include(GNUInstallDirs)
+
+if(POLICY CMP0003)
+ cmake_policy (SET CMP0003 NEW)
+endif()
+
+if(POLICY CMP0042)
+ cmake_policy (SET CMP0042 NEW)
+endif()
+
+if (POLICY CMP0072)
+ cmake_policy (SET CMP0072 NEW)
+endif(POLICY CMP0072)
+
+set(CMAKE_DEBUG_POSTFIX d)
+
+option (BUILD_UTILS "utilities" ON)
+option (GLEW_REGAL "Regal mode" OFF)
+option (GLEW_OSMESA "OSMesa mode" OFF)
+if (APPLE)
+ option (BUILD_FRAMEWORK "Build Framework bundle for OSX" OFF)
+endif ()
+option (GLEW_X11 "X11 mode" ON)
+option (GLEW_EGL "EGL mode" OFF)
+option (BUILD_SHARED_LIBS "install/link shared instead of static libs" ON)
+
+set (GLEW_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../..)
+
+# get version from config/version
+file (STRINGS ${GLEW_DIR}/config/version _VERSION_MAJOR_STRING REGEX "GLEW_MAJOR[ ]*=[ ]*[0-9]+.*")
+string (REGEX REPLACE "GLEW_MAJOR[ ]*=[ ]*([0-9]+)" "\\1" CPACK_PACKAGE_VERSION_MAJOR ${_VERSION_MAJOR_STRING})
+file (STRINGS ${GLEW_DIR}/config/version _VERSION_MINOR_STRING REGEX "GLEW_MINOR[ ]*=[ ]*[0-9]+.*")
+string (REGEX REPLACE "GLEW_MINOR[ ]*=[ ]*([0-9]+)" "\\1" CPACK_PACKAGE_VERSION_MINOR ${_VERSION_MINOR_STRING})
+file (STRINGS ${GLEW_DIR}/config/version _VERSION_PATCH_STRING REGEX "GLEW_MICRO[ ]*=[ ]*[0-9]+.*")
+string (REGEX REPLACE "GLEW_MICRO[ ]*=[ ]*([0-9]+)" "\\1" CPACK_PACKAGE_VERSION_PATCH ${_VERSION_PATCH_STRING})
+set (GLEW_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
+
+if (NOT GLEW_CUSTOM_OUTPUT_DIRS)
+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+endif()
+
+find_package (OpenGL REQUIRED)
+
+# cmake<3.10 doesn't detect EGL/GLX
+if (CMAKE_VERSION VERSION_LESS 3.10)
+ find_library(OPENGL_egl_LIBRARY NAMES EGL)
+ if (OPENGL_egl_LIBRARY)
+ set (OpenGL_EGL_FOUND TRUE)
+ endif ()
+endif ()
+
+# prefer GLVND
+if (OPENGL_opengl_LIBRARY)
+ set (GLEW_LIBRARIES ${OPENGL_opengl_LIBRARY})
+else ()
+ set (GLEW_LIBRARIES ${OPENGL_gl_LIBRARY})
+endif ()
+
+# X11 required except for Windows and Apple OSX platforms
+if (GLEW_X11 AND NOT WIN32 AND NOT APPLE)
+ find_package (X11)
+ list (APPEND GLEW_LIBRARIES ${OPENGL_glx_LIBRARY} ${X11_LIBRARIES})
+endif()
+
+if (WIN32)
+ set (GLEW_LIB_NAME glew32)
+else ()
+ set (GLEW_LIB_NAME GLEW)
+ set (DLL_PREFIX lib)
+endif ()
+
+add_definitions (-DGLEW_NO_GLU)
+
+#### Regal mode ####
+
+if (GLEW_REGAL)
+ if (WIN32)
+ set (REGAL_LIB_NAME regal32)
+ else ()
+ set (REGAL_LIB_NAME Regal)
+ endif ()
+ add_definitions (-DGLEW_REGAL)
+ set (GLEW_LIBRARIES ${REGAL_LIB_NAME})
+endif ()
+
+#### OSMesa mode ####
+
+if (GLEW_OSMESA)
+ if (WIN32)
+ set (OSMESA_LIB_NAME osmesa)
+ else ()
+ set (OSMESA_LIB_NAME OSMesa)
+ endif ()
+ add_definitions (-DGLEW_OSMESA)
+ list (APPEND GLEW_LIBRARIES ${OSMESA_LIB_NAME})
+ set (X11_LIBRARIES)
+endif ()
+
+#### EGL ####
+
+if (GLEW_EGL AND UNIX)
+ add_definitions (-DGLEW_EGL)
+ if (NOT OpenGL_EGL_FOUND)
+ message (FATAL_ERROR "EGL library set but not found.")
+ endif ()
+ list (APPEND GLEW_LIBRARIES ${OPENGL_egl_LIBRARY})
+endif ()
+
+#### GLEW ####
+
+include_directories (${GLEW_DIR}/include ${X11_INCLUDE_DIR})
+
+set (GLEW_PUBLIC_HEADERS_FILES
+ ${GLEW_DIR}/include/GL/wglew.h
+ ${GLEW_DIR}/include/GL/glew.h
+ ${GLEW_DIR}/include/GL/glxew.h
+ ${GLEW_DIR}/include/GL/eglew.h
+)
+set (GLEW_SRC_FILES ${GLEW_DIR}/src/glew.c)
+
+if (WIN32)
+ list (APPEND GLEW_SRC_FILES ${GLEW_DIR}/build/glew.rc)
+endif ()
+
+add_library (glew SHARED ${GLEW_PUBLIC_HEADERS_FILES} ${GLEW_SRC_FILES})
+set_target_properties (glew PROPERTIES COMPILE_DEFINITIONS "GLEW_BUILD" OUTPUT_NAME "${GLEW_LIB_NAME}" PREFIX "${DLL_PREFIX}"
+ VERSION ${GLEW_VERSION}
+ SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR})
+add_library (glew_s STATIC ${GLEW_PUBLIC_HEADERS_FILES} ${GLEW_SRC_FILES})
+set_target_properties (glew_s PROPERTIES COMPILE_DEFINITIONS "GLEW_STATIC" OUTPUT_NAME "${GLEW_LIB_NAME}" PREFIX lib)
+
+if (MSVC)
+ # add options from visual studio project
+ target_compile_definitions (glew PRIVATE "GLEW_BUILD;VC_EXTRALEAN")
+ target_compile_definitions (glew_s PRIVATE "GLEW_STATIC;VC_EXTRALEAN")
+ target_link_libraries (glew LINK_PRIVATE -BASE:0x62AA0000)
+ # kill security checks which are dependent on stdlib
+ target_compile_options (glew PRIVATE -GS-)
+ target_compile_options (glew_s PRIVATE -GS-)
+ # remove stdlib dependency
+ target_link_libraries (glew LINK_PRIVATE -nodefaultlib -noentry)
+ target_link_libraries (glew LINK_PRIVATE libvcruntime.lib)
+ target_link_libraries (glew LINK_PRIVATE msvcrt.lib )
+ string(REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
+elseif (WIN32 AND ((CMAKE_C_COMPILER_ID MATCHES "GNU") OR (CMAKE_C_COMPILER_ID MATCHES "Clang")))
+ # remove stdlib dependency on windows with GCC and Clang (for similar reasons
+ # as to MSVC - to allow it to be used with any Windows compiler)
+ target_compile_options (glew PRIVATE -fno-builtin -fno-stack-protector)
+ target_compile_options (glew_s PRIVATE -fno-builtin -fno-stack-protector)
+ target_link_libraries (glew LINK_PRIVATE -nostdlib)
+endif ()
+
+if (BUILD_FRAMEWORK)
+ set_target_properties(glew PROPERTIES
+ FRAMEWORK TRUE
+ FRAMEWORK_VERSION ${GLEW_VERSION}
+ MACOSX_FRAMEWORK_IDENTIFIER net.sourceforge.glew
+ MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${GLEW_VERSION}
+ MACOSX_FRAMEWORK_BUNDLE_VERSION ${GLEW_VERSION}
+ XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
+ PUBLIC_HEADER "${GLEW_PUBLIC_HEADERS_FILES}"
+ OUTPUT_NAME GLEW
+ )
+endif()
+
+target_link_libraries (glew LINK_PUBLIC ${GLEW_LIBRARIES})
+target_link_libraries (glew_s ${GLEW_LIBRARIES})
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ set(MAYBE_EXPORT "")
+else()
+ target_compile_definitions(glew_s INTERFACE "GLEW_STATIC")
+ foreach(t glew glew_s)
+ target_include_directories(${t} PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ endforeach()
+ set(MAYBE_EXPORT EXPORT glew-targets)
+endif()
+
+set(targets_to_install "")
+if(BUILD_SHARED_LIBS)
+ list(APPEND targets_to_install glew)
+else ()
+ list(APPEND targets_to_install glew_s)
+endif()
+
+install ( TARGETS ${targets_to_install}
+ ${MAYBE_EXPORT}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX}
+)
+
+if (BUILD_UTILS)
+ set (GLEWINFO_SRC_FILES ${GLEW_DIR}/src/glewinfo.c)
+ if (WIN32)
+ list (APPEND GLEWINFO_SRC_FILES ${GLEW_DIR}/build/glewinfo.rc)
+ endif ()
+ add_executable (glewinfo ${GLEWINFO_SRC_FILES})
+ if(BUILD_SHARED_LIBS)
+ target_link_libraries (glewinfo glew)
+ else()
+ target_link_libraries (glewinfo glew_s)
+ endif()
+ if (NOT WIN32)
+ target_link_libraries(glewinfo ${X11_LIBRARIES})
+ endif ()
+
+ set (VISUALINFO_SRC_FILES ${GLEW_DIR}/src/visualinfo.c)
+ if (WIN32)
+ list (APPEND VISUALINFO_SRC_FILES ${GLEW_DIR}/build/visualinfo.rc)
+ endif ()
+ add_executable (visualinfo ${VISUALINFO_SRC_FILES})
+ if(BUILD_SHARED_LIBS)
+ target_link_libraries (visualinfo glew)
+ else()
+ target_link_libraries (visualinfo glew_s)
+ endif()
+ if (NOT WIN32)
+ target_link_libraries(visualinfo ${X11_LIBRARIES})
+ endif ()
+
+ install ( TARGETS glewinfo visualinfo
+ DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif ()
+
+set (prefix ${CMAKE_INSTALL_PREFIX})
+set (exec_prefix ${CMAKE_INSTALL_PREFIX})
+set (libdir ${CMAKE_INSTALL_FULL_LIBDIR})
+set (includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
+set (version ${GLEW_VERSION})
+set (libname ${GLEW_LIB_NAME})
+set (cflags)
+set (requireslib glu)
+
+# Mac OSX has no glu.pc unless optional X11/GLX is installed
+if (APPLE)
+ set (requireslib)
+endif ()
+
+configure_file (${GLEW_DIR}/glew.pc.in ${CMAKE_CURRENT_BINARY_DIR}/glew.pc @ONLY)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/glew.pc
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
+)
+
+if(WIN32 AND MSVC AND (NOT MSVC_VERSION LESS 1600) AND (NOT CMAKE_VERSION VERSION_LESS "3.1"))
+ install(
+ FILES $<TARGET_PDB_FILE:glew>
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ CONFIGURATIONS Debug RelWithDebInfo
+ )
+endif()
+
+install (
+ FILES ${GLEW_PUBLIC_HEADERS_FILES}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/GL)
+
+if(MAYBE_EXPORT)
+ install(EXPORT glew-targets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/glew
+ NAMESPACE GLEW::)
+ install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/glew-config.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/CopyImportedTargetProperties.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/glew)
+endif()
+
+if(NOT TARGET uninstall)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
+ IMMEDIATE @ONLY)
+
+ add_custom_target(uninstall
+ COMMAND ${CMAKE_COMMAND} -P
+ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
+endif()
diff --git a/glew/build/cmake/CopyImportedTargetProperties.cmake b/glew/build/cmake/CopyImportedTargetProperties.cmake
new file mode 100644
index 0000000..a7ade98
--- /dev/null
+++ b/glew/build/cmake/CopyImportedTargetProperties.cmake
@@ -0,0 +1,88 @@
+#.rst:
+# CopyImportedTargetProperties
+# --------------------------
+#
+# Copies the `INTERFACE*` and `IMPORTED*` properties from a target
+# to another one.
+# This function can be used to duplicate an `IMPORTED` or an `ALIAS` library
+# with a different name since ``add_library(... ALIAS ...)`` does not work
+# for those targets.
+#
+# ::
+#
+# copy_imported_target_properties(<source-target> <destination-target>)
+#
+# The function copies all the `INTERFACE*` and `IMPORTED*` target
+# properties from `<source-target>` to `<destination-target>`.
+#
+# The function uses the `IMPORTED_CONFIGURATIONS` property to determine
+# which configuration-dependent properties should be copied
+# (`IMPORTED_LOCATION_<CONFIG>`, etc...)
+#
+# Example:
+#
+# Internally the CMake project of ZLIB builds the ``zlib`` and
+# ``zlibstatic`` targets which can be exported in the ``ZLIB::`` namespace
+# with the ``install(EXPORT ...)`` command.
+#
+# The config-module will then create the import libraries ``ZLIB::zlib`` and
+# ``ZLIB::zlibstatic``. To use ``ZLIB::zlibstatic`` under the standard
+# ``ZLIB::ZLIB`` name we need to create the ``ZLIB::ZLIB`` imported library
+# and copy the appropriate properties:
+#
+# add_library(ZLIB::ZLIB STATIC IMPORTED)
+# copy_imported_target_properties(ZLIB::zlibstatic ZLIB::ZLIB)
+#
+
+function(copy_imported_target_properties src_target dest_target)
+
+ set(config_dependent_props
+ IMPORTED_IMPLIB
+ IMPORTED_LINK_DEPENDENT_LIBRARIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES
+ IMPORTED_LINK_INTERFACE_LIBRARIES
+ IMPORTED_LINK_INTERFACE_MULTIPLICITY
+ IMPORTED_LOCATION
+ IMPORTED_NO_SONAME
+ IMPORTED_SONAME
+ )
+
+ # copy configuration-independent properties
+ foreach(prop
+ ${config_dependent_props}
+ IMPORTED_CONFIGURATIONS
+ INTERFACE_AUTOUIC_OPTIONS
+ INTERFACE_COMPILE_DEFINITIONS
+ INTERFACE_COMPILE_FEATURES
+ INTERFACE_COMPILE_OPTIONS
+ INTERFACE_INCLUDE_DIRECTORIES
+ INTERFACE_LINK_LIBRARIES
+ INTERFACE_POSITION_INDEPENDENT_CODE
+ INTERFACE_SOURCES
+ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
+ )
+ get_property(is_set TARGET ${src_target} PROPERTY ${prop} SET)
+ if(is_set)
+ get_target_property(v ${src_target} ${prop})
+ set_target_properties(${dest_target} PROPERTIES ${prop} "${v}")
+ # message(STATUS "set_target_properties(${dest_target} PROPERTIES ${prop} ${v})")
+ endif()
+ endforeach()
+
+ # copy configuration-dependent properties
+ get_target_property(imported_configs ${src_target}
+ IMPORTED_CONFIGURATIONS)
+
+ foreach(config ${imported_configs})
+ foreach(prop_prefix ${config_dependent_props})
+ set(prop ${prop_prefix}_${config})
+ get_property(is_set TARGET ${src_target} PROPERTY ${prop} SET)
+ if(is_set)
+ get_target_property(v ${src_target} ${prop})
+ set_target_properties(${dest_target}
+ PROPERTIES ${prop} "${v}")
+ # message(STATUS "set_target_properties(${dest_target} PROPERTIES ${prop} ${v})")
+ endif()
+ endforeach()
+ endforeach()
+endfunction()
diff --git a/glew/build/cmake/cmake_uninstall.cmake.in b/glew/build/cmake/cmake_uninstall.cmake.in
new file mode 100644
index 0000000..2517e99
--- /dev/null
+++ b/glew/build/cmake/cmake_uninstall.cmake.in
@@ -0,0 +1,26 @@
+if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
+ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
+endif(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
+
+if (NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
+endif ()
+ message(${CMAKE_INSTALL_PREFIX})
+
+file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+foreach(file ${files})
+ message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
+ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ exec_program(
+ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+ OUTPUT_VARIABLE rm_out
+ RETURN_VALUE rm_retval
+ )
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
+ endif(NOT "${rm_retval}" STREQUAL 0)
+ else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
+ endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+endforeach(file)
diff --git a/glew/build/cmake/glew-config.cmake b/glew/build/cmake/glew-config.cmake
new file mode 100644
index 0000000..0b79c0b
--- /dev/null
+++ b/glew/build/cmake/glew-config.cmake
@@ -0,0 +1,60 @@
+# This config-module creates the following import libraries:
+#
+# - GLEW::glew shared lib
+# - GLEW::glew_s static lib
+#
+# Additionally GLEW::GLEW will be created as an
+# copy of either the shared (default) or the static libs.
+#
+# Dependending on the setting of BUILD_SHARED_LIBS at GLEW build time
+# either the static or shared versions may not be available.
+#
+# Set GLEW_USE_STATIC_LIBS to OFF or ON to force using the shared
+# or static lib for GLEW::GLEW
+#
+
+include(${CMAKE_CURRENT_LIST_DIR}/glew-targets.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/CopyImportedTargetProperties.cmake)
+
+# decide which import library (glew/glew_s)
+# needs to be copied to GLEW::GLEW
+set(_glew_target_postfix "")
+set(_glew_target_type SHARED)
+if(DEFINED GLEW_USE_STATIC_LIBS)
+ # if defined, use only static or shared
+ if(GLEW_USE_STATIC_LIBS)
+ set(_glew_target_postfix "_s")
+ endif()
+ # else use static only if no shared
+elseif(NOT TARGET GLEW::glew AND TARGET GLEW::glew_s)
+ set(_glew_target_postfix "_s")
+endif()
+if(_glew_target_postfix STREQUAL "")
+ set(_glew_target_type SHARED)
+else()
+ set(_glew_target_type STATIC)
+endif()
+
+# CMake doesn't allow creating ALIAS lib for an IMPORTED lib
+# so create imported ones and copy the properties
+foreach(_glew_target glew)
+ set(_glew_src_target "GLEW::${_glew_target}${_glew_target_postfix}")
+ string(TOUPPER "GLEW::${_glew_target}" _glew_dest_target)
+ if(TARGET ${_glew_dest_target})
+ get_target_property(_glew_previous_src_target ${_glew_dest_target}
+ _GLEW_SRC_TARGET)
+ if(NOT _glew_previous_src_target STREQUAL _glew_src_target)
+ message(FATAL_ERROR "find_package(GLEW) was called the second time with "
+ "different GLEW_USE_STATIC_LIBS setting. Previously, "
+ "`glew-config.cmake` created ${_glew_dest_target} as a copy of "
+ "${_glew_previous_src_target}. Now it attempted to copy it from "
+ "${_glew_src_target}. ")
+ endif()
+ else()
+ add_library(${_glew_dest_target} ${_glew_target_type} IMPORTED)
+ # message(STATUS "add_library(${_glew_dest_target} ${_glew_target_type} IMPORTED)")
+ copy_imported_target_properties(${_glew_src_target} ${_glew_dest_target})
+ set_target_properties(${_glew_dest_target} PROPERTIES
+ _GLEW_SRC_TARGET ${_glew_src_target})
+ endif()
+endforeach()
diff --git a/glew/build/cmake/testbuild/CMakeLists.txt b/glew/build/cmake/testbuild/CMakeLists.txt
new file mode 100644
index 0000000..27bcf2d
--- /dev/null
+++ b/glew/build/cmake/testbuild/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 2.8.12)
+project(glew-cmake-test)
+
+find_package(GLEW REQUIRED CONFIG)
+find_package(GLEW REQUIRED CONFIG) # call twice to test multiple call
+find_package(OpenGL REQUIRED)
+
+add_executable(cmake-test main.c)
+set_target_properties(cmake-test PROPERTIES DEBUG_POSTFIX _d)
+target_link_libraries(cmake-test PRIVATE GLEW::GLEW ${OPENGL_LIBRARIES})
+target_include_directories(cmake-test PRIVATE ${OPENGL_INCLUDE_DIR})
+
+if(CMAKE_VERSION VERSION_LESS 3.0)
+ set(cgex $<CONFIGURATION>)
+else()
+ set(cgex $<CONFIG>)
+endif()
+
+target_compile_definitions(cmake-test PRIVATE
+ -DGLEW_CMAKE_TEST_CONFIG=${cgex}
+ -DGLEW_CMAKE_TEST_TARGET_FILE_NAME=$<TARGET_FILE_NAME:GLEW::GLEW>
+ -DGLEW_CMAKE_TEST_TARGET_TYPE=$<TARGET_PROPERTY:GLEW::GLEW,TYPE>
+ )
+
+install(TARGETS cmake-test DESTINATION bin)
diff --git a/glew/build/cmake/testbuild/main.c b/glew/build/cmake/testbuild/main.c
new file mode 100644
index 0000000..5975817
--- /dev/null
+++ b/glew/build/cmake/testbuild/main.c
@@ -0,0 +1,23 @@
+#include <GL/glew.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define S(x) SS(x)
+#define SS(x) #x
+
+int main(int argc, char* argv[]) {
+ printf("GLEW CMake test, %s build\n",
+ S(GLEW_CMAKE_TEST_CONFIG));
+ printf("-- linked to %s which is %s\n",
+ S(GLEW_CMAKE_TEST_TARGET_FILE_NAME),
+ S(GLEW_CMAKE_TEST_TARGET_TYPE));
+ const GLubyte* v = glewGetString(GLEW_VERSION);
+ if(v) {
+ printf("-- glewGetString(GLEW_VERSION) returns %s\n-- test passed.\n", v);
+ return EXIT_SUCCESS;
+ } else {
+ printf("-- glewGetString(GLEW_VERSION) returns NULL\n-- test failed.\n");
+ return EXIT_FAILURE;
+ }
+}
diff --git a/glew/build/vc10/common.props b/glew/build/vc10/common.props
new file mode 100644
index 0000000..83ef102
--- /dev/null
+++ b/glew/build/vc10/common.props
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros">
+ <INCLUDE_DIR>../../include</INCLUDE_DIR>
+ <LIB_DIR>../../lib</LIB_DIR>
+ <BIN_DIR>../../bin</BIN_DIR>
+ </PropertyGroup>
+ <PropertyGroup />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="INCLUDE_DIR">
+ <Value>$(INCLUDE_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="LIB_DIR">
+ <Value>$(LIB_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="BIN_DIR">
+ <Value>$(BIN_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/glew/build/vc12/common.props b/glew/build/vc12/common.props
new file mode 100644
index 0000000..8d53675
--- /dev/null
+++ b/glew/build/vc12/common.props
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros">
+ <INCLUDE_DIR>..\..\include</INCLUDE_DIR>
+ <LIB_DIR>..\..\lib</LIB_DIR>
+ <BIN_DIR>..\..\bin</BIN_DIR>
+ </PropertyGroup>
+ <PropertyGroup />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="INCLUDE_DIR">
+ <Value>$(INCLUDE_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="LIB_DIR">
+ <Value>$(LIB_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="BIN_DIR">
+ <Value>$(BIN_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/glew/build/vc14/common.props b/glew/build/vc14/common.props
new file mode 100644
index 0000000..8d53675
--- /dev/null
+++ b/glew/build/vc14/common.props
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros">
+ <INCLUDE_DIR>..\..\include</INCLUDE_DIR>
+ <LIB_DIR>..\..\lib</LIB_DIR>
+ <BIN_DIR>..\..\bin</BIN_DIR>
+ </PropertyGroup>
+ <PropertyGroup />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="INCLUDE_DIR">
+ <Value>$(INCLUDE_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="LIB_DIR">
+ <Value>$(LIB_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="BIN_DIR">
+ <Value>$(BIN_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/glew/build/vc15/common.props b/glew/build/vc15/common.props
new file mode 100644
index 0000000..8d53675
--- /dev/null
+++ b/glew/build/vc15/common.props
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ImportGroup Label="PropertySheets" />
+ <PropertyGroup Label="UserMacros">
+ <INCLUDE_DIR>..\..\include</INCLUDE_DIR>
+ <LIB_DIR>..\..\lib</LIB_DIR>
+ <BIN_DIR>..\..\bin</BIN_DIR>
+ </PropertyGroup>
+ <PropertyGroup />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="INCLUDE_DIR">
+ <Value>$(INCLUDE_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="LIB_DIR">
+ <Value>$(LIB_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ <BuildMacro Include="BIN_DIR">
+ <Value>$(BIN_DIR)</Value>
+ <EnvironmentVariable>true</EnvironmentVariable>
+ </BuildMacro>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/glew/build/vc6/glew.dsw b/glew/build/vc6/glew.dsw
new file mode 100644
index 0000000..c201779
--- /dev/null
+++ b/glew/build/vc6/glew.dsw
@@ -0,0 +1,71 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "glew_shared"=.\glew_shared.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "glew_static"=.\glew_static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "glewinfo"=.\glewinfo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name glew_static
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "visualinfo"=.\visualinfo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name glew_static
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/glew/build/vc6/glew_shared.dsp b/glew/build/vc6/glew_shared.dsp
new file mode 100644
index 0000000..8b576b8
--- /dev/null
+++ b/glew/build/vc6/glew_shared.dsp
@@ -0,0 +1,122 @@
+# Microsoft Developer Studio Project File - Name="glew_shared" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=glew_shared - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "glew_shared.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "glew_shared.mak" CFG="glew_shared - Win32 Debug MX"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "glew_shared - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "glew_shared - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "glew_shared - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../lib"
+# PROP Intermediate_Dir "shared/release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLEW_EXPORTS" /YX /FD /c /GS-
+# ADD CPP /nologo /W3 /O2 /I "../../include" /D "WIN32" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRALEAN" /D "GLEW_BUILD" /YX /FD /c /GS-
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 opengl32.lib /nologo /dll /pdb:none /machine:I386 /out:"../../bin/glew32.dll" /ignore:4089
+# ADD LINK32 /base:0x62AA0000 /nodefaultlib /noentry
+
+!ELSEIF "$(CFG)" == "glew_shared - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../lib"
+# PROP Intermediate_Dir "shared/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLEW_EXPORTS" /YX /FD /GZ /c /GS-
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "../../include" /D "WIN32" /D "WIN32_MEAN_AND_LEAN" /D "VC_EXTRALEAN" /D "GLEW_BUILD" /YX /FD /GZ /c /GS-
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 opengl32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"../../bin/glew32d.dll" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+# ADD LINK32 /base:0x62AA0000
+
+!ENDIF
+
+# Begin Target
+
+# Name "glew_shared - Win32 Release"
+# Name "glew_shared - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\glew.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\include\GL\glew.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\GL\wglew.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\glew.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/glew/build/vc6/glew_static.dsp b/glew/build/vc6/glew_static.dsp
new file mode 100644
index 0000000..d6bd3d6
--- /dev/null
+++ b/glew/build/vc6/glew_static.dsp
@@ -0,0 +1,112 @@
+# Microsoft Developer Studio Project File - Name="glew_static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=glew_static - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "glew_static.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "glew_static.mak" CFG="glew_static - Win32 Debug MX"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "glew_static - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "glew_static - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "glew_static - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../lib"
+# PROP Intermediate_Dir "static/release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c /GS-
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRALEAN" /D "GLEW_STATIC" /YX /FD /c /GS-
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG" /d "GLEW_STATIC"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../lib/glew32s.lib"
+
+!ELSEIF "$(CFG)" == "glew_static - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../lib"
+# PROP Intermediate_Dir "static/debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRALEAN" /D "GLEW_STATIC" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG" /d "GLEW_STATIC"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../lib/glew32sd.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "glew_static - Win32 Release"
+# Name "glew_static - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\glew.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\include\GL\glew.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\GL\wglew.h
+# End Source File
+# End Group
+# Begin Group "Resources"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\glew.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/glew/build/vc6/glewinfo.dsp b/glew/build/vc6/glewinfo.dsp
new file mode 100644
index 0000000..95a599d
--- /dev/null
+++ b/glew/build/vc6/glewinfo.dsp
@@ -0,0 +1,103 @@
+# Microsoft Developer Studio Project File - Name="glewinfo" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=glewinfo - Win32 Debug MX
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "glewinfo.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "glewinfo.mak" CFG="glewinfo - Win32 Debug MX"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "glewinfo - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "glewinfo - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "glewinfo - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../bin"
+# PROP Intermediate_Dir "static/release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "WIN32_MEAN_AND_LEAN" /D "VC_EXTRALEAN" /D "GLEW_STATIC" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ../../lib/glew32s.lib opengl32.lib gdi32.lib user32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "glewinfo - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../bin"
+# PROP Intermediate_Dir "static/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "WIN32" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "GLEW_STATIC" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ../../lib/glew32sd.lib opengl32.lib gdi32.lib user32.lib /nologo /subsystem:console /incremental:no /pdb:"static/debug/glewinfod.pdb" /debug /machine:I386 /out:"../../bin/glewinfod.exe" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "glewinfo - Win32 Release"
+# Name "glewinfo - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\glewinfo.c
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\glewinfo.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/glew/build/vc6/visualinfo.dsp b/glew/build/vc6/visualinfo.dsp
new file mode 100644
index 0000000..adcc814
--- /dev/null
+++ b/glew/build/vc6/visualinfo.dsp
@@ -0,0 +1,103 @@
+# Microsoft Developer Studio Project File - Name="visualinfo" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=visualinfo - Win32 Debug MX
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "visualinfo.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "visualinfo.mak" CFG="visualinfo - Win32 Debug MX"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "visualinfo - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "visualinfo - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "visualinfo - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../bin"
+# PROP Intermediate_Dir "static/release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "WIN32_MEAN_AND_LEAN" /D "VC_EXTRALEAN" /D "GLEW_STATIC" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ../../lib/glew32s.lib glu32.lib opengl32.lib gdi32.lib user32.lib kernel32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "visualinfo - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../bin"
+# PROP Intermediate_Dir "static/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "WIN32" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "GLEW_STATIC" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ../../lib/glew32sd.lib glu32.lib opengl32.lib gdi32.lib user32.lib kernel32.lib /nologo /subsystem:console /incremental:no /pdb:"static/debug/visualinfod.pdb" /debug /machine:I386 /out:"../../bin/visualinfod.exe" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "visualinfo - Win32 Release"
+# Name "visualinfo - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\visualinfo.c
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\visualinfo.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/glew/cmake-testbuild.sh b/glew/cmake-testbuild.sh
new file mode 100644
index 0000000..0dbbfd2
--- /dev/null
+++ b/glew/cmake-testbuild.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# This script tests the CMake build:
+#
+# - builds the main CMakeLists.txt
+# - builds and runs a small test app in a separate build tree so
+# the config-module is tested, too
+#
+# Options (environment variables):
+#
+# - The variable BUILD_SHARED_LIBS will be forwarded to the CMake project
+# that builds and installs the GLEW libraries. Set BUILD_SHARED_LIBS to
+# ON or OFF to install only static or shared libs. Leave it unset to
+# install both.
+#
+# Note: BUILD_SHARED_LIBS controls only what to install not what to build.
+#
+# - GLEW_USE_STATIC_LIBS will be forwarded to the test project that calls
+# `find_package` to find GLEW. Set GLEW_USE_STATIC LIBS to ON or OFF force
+# finding the shared or static versions of GLEW. Leave it unset to find
+# the shared or what is available.
+#
+# Examples:
+#
+# Build & install shared + static, find default (shared)
+#
+# ./cmake-testbuild.shh
+#
+# Build & install shared + static, find static
+#
+# GLEW_USE_STATIC_LIBS=ON ./cmake-testbuild.sh
+#
+# Install static only (still build both)
+#
+# BUILD_SHARED_LIBS=OFF ./cmake-testbuild.sh
+#
+
+set -ex
+
+rm -rf out/include
+rm -rf out/lib*
+rm -rf out/bin
+
+if [ -n "$BUILD_SHARED_LIBS" ]; then
+ bsl=-DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS
+else
+ bsl=-UBUILD_SHARED_LIBS
+fi
+
+if [ -n "$GLEW_USE_STATIC_LIBS" ]; then
+ gusl=-DGLEW_USE_STATIC_LIBS=$GLEW_USE_STATIC_LIBS
+else
+ gusl=-UGLEW_USE_STATIC_LIBS
+fi
+
+cmake -Hbuild/cmake -Bout/build/glew -DCMAKE_INSTALL_PREFIX=${PWD}/out -DCMAKE_BUILD_TYPE=Debug $bsl
+cmake --build out/build/glew --target install --config Debug
+cmake out/build/glew -DCMAKE_BUILD_TYPE=Release
+cmake --build out/build/glew --target install --config Release --clean-first
+
+cmake -Hbuild/cmake/testbuild -Bout/build/cmake-testbuild -DCMAKE_INSTALL_PREFIX=${PWD}/out -DCMAKE_PREFIX_PATH=${PWD}/out -DCMAKE_BUILD_TYPE=Debug $gusl
+cmake --build out/build/cmake-testbuild --target install --config Debug
+
+cmake out/build/cmake-testbuild -DCMAKE_BUILD_TYPE=Release
+cmake --build out/build/cmake-testbuild --target install --config Release --clean-first
+
+export LD_LIBRARY_PATH=${PWD}/out/lib:$LD_LIBRARY_PATH
+export DYLD_LIBRARY_PATH=${PWD}/out/lib:$DYLD_LIBRARY_PATH
+
+out/bin/cmake-test_d
+out/bin/cmake-test
diff --git a/glew/config/config.guess b/glew/config/config.guess
new file mode 100644
index 0000000..1972fda
--- /dev/null
+++ b/glew/config/config.guess
@@ -0,0 +1,1700 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright 1992-2021 Free Software Foundation, Inc.
+
+timestamp='2021-01-25'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
+#
+# Please send patches to <config-patches@gnu.org>.
+
+
+me=$(echo "$0" | sed -e 's,.*/,,')
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Options:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2021 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039
+ { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$driver"
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if test -f /.attbin/uname ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
+UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
+UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
+UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
+
+case "$UNAME_SYSTEM" in
+Linux|GNU|GNU/*)
+ LIBC=unknown
+
+ set_cc_for_build
+ cat <<-EOF > "$dummy.c"
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #elif defined(__GLIBC__)
+ LIBC=gnu
+ #else
+ #include <stdarg.h>
+ /* First heuristic to detect musl libc. */
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #endif
+ #endif
+ EOF
+ eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
+
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
+ fi
+ ;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ echo unknown))
+ case "$UNAME_MACHINE_ARCH" in
+ aarch64eb) machine=aarch64_be-unknown ;;
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ earmv*)
+ arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
+ endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
+ machine="${arch}${endian}"-unknown
+ ;;
+ *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently (or will in the future) and ABI.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ os=netbsdelf
+ ;;
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # Determine ABI tags.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "$UNAME_VERSION" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "$machine-${os}${release}${abi-}"
+ exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
+ echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
+ echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+ exit ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
+ echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+ exit ;;
+ *:MidnightBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
+ exit ;;
+ *:SolidBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
+ exit ;;
+ *:OS108:*:*)
+ echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
+ exit ;;
+ *:MirBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
+ exit ;;
+ *:Sortix:*:*)
+ echo "$UNAME_MACHINE"-unknown-sortix
+ exit ;;
+ *:Twizzler:*:*)
+ echo "$UNAME_MACHINE"-unknown-twizzler
+ exit ;;
+ *:Redox:*:*)
+ echo "$UNAME_MACHINE"-unknown-redox
+ exit ;;
+ mips:OSF1:*.*)
+ echo mips-dec-osf1
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
+ ;;
+ *5.*)
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1)
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE=alpha ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE=alpha ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE=alpha ;;
+ "EV5 (21164)")
+ UNAME_MACHINE=alphaev5 ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE=alphaev56 ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE=alphapca56 ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE=alphapca57 ;;
+ "EV6 (21264)")
+ UNAME_MACHINE=alphaev6 ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE=alphaev67 ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE=alphaev69 ;;
+ "EV7 (21364)")
+ UNAME_MACHINE=alphaev7 ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE=alphaev79 ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo "$UNAME_MACHINE"-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo "$UNAME_MACHINE"-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix"$UNAME_RELEASE"
+ exit ;;
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "$( (/bin/universe) 2>/dev/null)" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case $(/usr/bin/uname -p) in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux"$UNAME_RELEASE"
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ set_cc_for_build
+ SUN_ARCH=i386
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH=x86_64
+ fi
+ fi
+ echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "$(/usr/bin/arch -k)" in
+ Series*|S4*)
+ UNAME_RELEASE=$(uname -v)
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos"$UNAME_RELEASE"
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
+ case "$(/bin/arch)" in
+ sun3)
+ echo m68k-sun-sunos"$UNAME_RELEASE"
+ ;;
+ sun4)
+ echo sparc-sun-sunos"$UNAME_RELEASE"
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos"$UNAME_RELEASE"
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint"$UNAME_RELEASE"
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint"$UNAME_RELEASE"
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint"$UNAME_RELEASE"
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint"$UNAME_RELEASE"
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint"$UNAME_RELEASE"
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint"$UNAME_RELEASE"
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten"$UNAME_RELEASE"
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten"$UNAME_RELEASE"
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix"$UNAME_RELEASE"
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix"$UNAME_RELEASE"
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix"$UNAME_RELEASE"
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
+ SYSTEM_NAME=$("$dummy" "$dummyarg") &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos"$UNAME_RELEASE"
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
+ then
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
+ then
+ echo m88k-dg-dgux"$UNAME_RELEASE"
+ else
+ echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+ fi
+ else
+ echo i586-dg-dgux"$UNAME_RELEASE"
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if test -x /usr/bin/oslevel ; then
+ IBM_REV=$(/usr/bin/oslevel)
+ else
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ fi
+ echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if test -x /usr/bin/lslpp ; then
+ IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
+ else
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ fi
+ echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
+ case "$UNAME_MACHINE" in
+ 9000/31?) HP_ARCH=m68000 ;;
+ 9000/[34]??) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if test -x /usr/bin/getconf; then
+ sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
+ sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
+ case "$sc_cpu_version" in
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "$sc_kernel_bits" in
+ 32) HP_ARCH=hppa2.0n ;;
+ 64) HP_ARCH=hppa2.0w ;;
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if test "$HP_ARCH" = ""; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if test "$HP_ARCH" = hppa2.0w
+ then
+ set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH=hppa2.0w
+ else
+ HP_ARCH=hppa64
+ fi
+ fi
+ echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
+ echo ia64-hp-hpux"$HPUX_REV"
+ exit ;;
+ 3050*:HI-UX:*:*)
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if test -x /usr/sbin/sysversion ; then
+ echo "$UNAME_MACHINE"-unknown-osf1mk
+ else
+ echo "$UNAME_MACHINE"-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
+ FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
+ FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
+ FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi"$UNAME_RELEASE"
+ exit ;;
+ *:BSD/OS:*:*)
+ echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+ exit ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=$(uname -p)
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
+ else
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
+ fi
+ exit ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ case "$UNAME_PROCESSOR" in
+ amd64)
+ UNAME_PROCESSOR=x86_64 ;;
+ i386)
+ UNAME_PROCESSOR=i586 ;;
+ esac
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
+ exit ;;
+ i*:CYGWIN*:*)
+ echo "$UNAME_MACHINE"-pc-cygwin
+ exit ;;
+ *:MINGW64*:*)
+ echo "$UNAME_MACHINE"-pc-mingw64
+ exit ;;
+ *:MINGW*:*)
+ echo "$UNAME_MACHINE"-pc-mingw32
+ exit ;;
+ *:MSYS*:*)
+ echo "$UNAME_MACHINE"-pc-msys
+ exit ;;
+ i*:PW*:*)
+ echo "$UNAME_MACHINE"-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case "$UNAME_MACHINE" in
+ x86)
+ echo i586-pc-interix"$UNAME_RELEASE"
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix"$UNAME_RELEASE"
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix"$UNAME_RELEASE"
+ exit ;;
+ esac ;;
+ i*:UWIN*:*)
+ echo "$UNAME_MACHINE"-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-pc-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
+ exit ;;
+ *:Minix:*:*)
+ echo "$UNAME_MACHINE"-unknown-minix
+ exit ;;
+ aarch64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ alpha:Linux:*:*)
+ case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ arm*:Linux:*:*)
+ set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+ else
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+ fi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ cris:Linux:*:*)
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+ exit ;;
+ crisv32:Linux:*:*)
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+ exit ;;
+ e2k:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ frv:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ hexagon:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ i*86:Linux:*:*)
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+ exit ;;
+ ia64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ k1om:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ m32r*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ m68*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
+ sed 's/^ //' << EOF > "$dummy.c"
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ MIPS_ENDIAN=el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ MIPS_ENDIAN=
+ #else
+ MIPS_ENDIAN=
+ #endif
+ #endif
+EOF
+ eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
+ ;;
+ mips64el:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-"$LIBC"
+ exit ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-"$LIBC"
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-"$LIBC"
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
+ PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+ PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+ *) echo hppa-unknown-linux-"$LIBC" ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-"$LIBC"
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-"$LIBC"
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-"$LIBC"
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-"$LIBC"
+ exit ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
+ exit ;;
+ sh64*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ sh*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ tile*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ vax:Linux:*:*)
+ echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
+ exit ;;
+ x86_64:Linux:*:*)
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI="$LIBC"x32
+ fi
+ fi
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo "$UNAME_MACHINE"-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo "$UNAME_MACHINE"-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo "$UNAME_MACHINE"-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo "$UNAME_MACHINE"-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ i*86:*DOS:*:*)
+ echo "$UNAME_MACHINE"-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:*)
+ UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+ else
+ echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case $(/bin/uname -X | grep "^Machine") in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
+ echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+ else
+ echo "$UNAME_MACHINE"-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configure will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos"$UNAME_RELEASE"
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv"$UNAME_RELEASE"
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
+ echo "$UNAME_MACHINE"-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo "$UNAME_MACHINE"-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux"$UNAME_RELEASE"
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if test -d /usr/nec; then
+ echo mips-nec-sysv"$UNAME_RELEASE"
+ else
+ echo mips-unknown-sysv"$UNAME_RELEASE"
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-ACE:SUPER-UX:*:*)
+ echo sxace-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody"$UNAME_RELEASE"
+ exit ;;
+ *:Rhapsody:*:*)
+ echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
+ exit ;;
+ arm64:Darwin:*:*)
+ echo aarch64-apple-darwin"$UNAME_RELEASE"
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=$(uname -p)
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
+ fi
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
+ fi
+ echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=$(uname -p)
+ if test "$UNAME_PROCESSOR" = x86; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NEO-*:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSR-*:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSV-*:NONSTOP_KERNEL:*:*)
+ echo nsv-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSX-*:NONSTOP_KERNEL:*:*)
+ echo nsx-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ # shellcheck disable=SC2154
+ if test "$cputype" = 386; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo "$UNAME_MACHINE"-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux"$UNAME_RELEASE"
+ exit ;;
+ *:DragonFly:*:*)
+ echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
+ case "$UNAME_MACHINE" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
+ exit ;;
+ i*86:rdos:*:*)
+ echo "$UNAME_MACHINE"-pc-rdos
+ exit ;;
+ *:AROS:*:*)
+ echo "$UNAME_MACHINE"-unknown-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo "$UNAME_MACHINE"-unknown-esx
+ exit ;;
+ amd64:Isilon\ OneFS:*:*)
+ echo x86_64-unknown-onefs
+ exit ;;
+ *:Unleashed:*:*)
+ echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
+ exit ;;
+esac
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
+echo "$0: unable to guess system type" >&2
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+ mips:Linux | mips64:Linux)
+ # If we got here on MIPS GNU/Linux, output extra information.
+ cat >&2 <<EOF
+
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+ ;;
+esac
+
+cat >&2 <<EOF
+
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
+
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
+and
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+year=$(echo $timestamp | sed 's,-.*,,')
+# shellcheck disable=SC2003
+if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
+ cat >&2 <<EOF
+
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = $( (uname -m) 2>/dev/null || echo unknown)
+uname -r = $( (uname -r) 2>/dev/null || echo unknown)
+uname -s = $( (uname -s) 2>/dev/null || echo unknown)
+uname -v = $( (uname -v) 2>/dev/null || echo unknown)
+
+/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
+/bin/uname -X = $( (/bin/uname -X) 2>/dev/null)
+
+hostinfo = $( (hostinfo) 2>/dev/null)
+/bin/universe = $( (/bin/universe) 2>/dev/null)
+/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null)
+/bin/arch = $( (/bin/arch) 2>/dev/null)
+/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null)
+/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
+
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
+EOF
+fi
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/glew/config/version b/glew/config/version
new file mode 100644
index 0000000..10f22c3
--- /dev/null
+++ b/glew/config/version
@@ -0,0 +1,7 @@
+GLEW_MAJOR = 2
+GLEW_MINOR = 2
+GLEW_MICRO = 0
+GLEW_VERSION = $(GLEW_MAJOR).$(GLEW_MINOR).$(GLEW_MICRO)
+GLEW_NAME = GLEW
+SO_MAJOR = $(GLEW_MAJOR).$(GLEW_MINOR)
+SO_VERSION = $(GLEW_VERSION)
diff --git a/glew/doc/advanced.html b/glew/doc/advanced.html
new file mode 100644
index 0000000..4c219fc
--- /dev/null
+++ b/glew/doc/advanced.html
@@ -0,0 +1,230 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center">Source Generation</td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Automatic Code Generation</h2>
+
+<p>
+Starting from release 1.1.0, the source code and parts of the
+documentation are automatically generated from the extension
+specifications in a two-step process. In the first step,
+specification files from the OpenGL registry are downloaded and
+parsed. Skeleton descriptors are created for each extension. These
+descriptors contain all necessary information for creating the source
+code and documentation in a simple and compact format, including the
+name of the extension, url link to the specification, tokens, function
+declarations, typedefs and struct definitions. In the second step,
+the header files as well as the library and glewinfo source are
+generated from the descriptor files. The code generation scripts are
+located in the <tt>auto</tt> subdirectory.
+</p>
+
+<p>
+The code generation scripts require GNU make, wget, and perl. On
+Windows, the simplest way to get access to these tools is to install
+<a href="http://www.cygwin.com/">Cygwin</a>, but make sure that the
+root directory is mounted in binary mode. The makefile in the
+<tt>auto</tt> directory provides the following build targets:
+</p>
+
+<table border=0 cellpadding=0 cellspacing=5>
+<tr><td align="left" valign="top"><tt>make</tt></td>
+<td align=left>Create the source files from the descriptors.<br/> If the
+descriptors do not exist, create them from the spec files.<br/> If the spec
+files do not exist, download them from the OpenGL repository.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;clean</tt></td>
+<td align=left>Delete the source files.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;clobber</tt></td>
+<td align=left>Delete the source files and the descriptors.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;destroy</tt></td>
+<td align=left>Delete the source files, the descriptors, and the spec files.</td></tr>
+<tr><td align="left" valign="top"><tt>make&nbsp;custom</tt></td>
+<td align=left>Create the source files for the extensions
+listed in <tt>auto/custom.txt</tt>.<br/> See "Custom Code
+Generation" below for more details.</td></tr>
+</table>
+
+<h3>Adding a New Extension</h3>
+
+<p>
+To add a new extension, create a descriptor file for the extension in
+<tt>auto/core</tt> and rerun the code generation scripts by typing
+<tt>make clean; make</tt> in the <tt>auto</tt> directory.
+</p>
+
+<p>
+The format of the descriptor file is given below. Items in
+brackets are optional.
+</p>
+
+<p class="pre">
+&lt;Extension Name&gt;<br>
+[&lt;URL of Specification File&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br>
+<!-- &nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
+&nbsp;&nbsp;&nbsp;&nbsp;...<br> -->
+</p>
+
+<!--
+<p>
+Note that <tt>Function Definitions</tt> are copied to the header files
+without changes and have to be terminated with a semicolon. In
+contrast, <tt>Tokens</tt>, <tt>Function signatures</tt>, and
+<tt>Typedefs</tt> should not be terminated with a semicolon.
+</p>
+-->
+
+<p>
+Take a look at one of the files in <tt>auto/core</tt> for an
+example. Note that typedefs and function signatures should not be
+terminated with a semicolon.
+</p>
+
+<h3>Custom Code Generation</h3>
+<p>
+Starting from GLEW 1.3.0, it is possible to control which extensions
+to include in the library by specifying a list in
+<tt>auto/custom.txt</tt>. This is useful when you do not need all the
+extensions and would like to reduce the size of the source files.
+Type <tt>make clean; make custom</tt> in the <tt>auto</tt> directory
+to rerun the scripts with the custom list of extensions.
+</p>
+
+<p>
+For example, the following is the list of extensions needed to get GLEW and the
+utilities to compile.
+</p>
+
+<p class="pre">
+WGL_ARB_extensions_string<br>
+WGL_ARB_multisample<br>
+WGL_ARB_pixel_format<br>
+WGL_ARB_pbuffer<br>
+WGL_EXT_extensions_string<br>
+WGL_ATI_pixel_format_float<br>
+WGL_NV_float_buffer<br>
+</p>
+
+<h2>Separate Namespace</h2>
+
+<p>
+To avoid name clashes when linking with libraries that include the
+same symbols, extension entry points are declared in a separate
+namespace (release 1.1.0 and up). This is achieved by aliasing OpenGL
+function names to their GLEW equivalents. For instance,
+<tt>glFancyFunction</tt> is simply an alias to
+<tt>glewFancyFunction</tt>. The separate namespace does not effect
+token and function pointer definitions.
+</p>
+
+<h2>Known Issues</h2>
+
+<p>
+GLEW requires GLX 1.2 for compatibility with GLUT.
+</p>
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/basic.html b/glew/doc/basic.html
new file mode 100644
index 0000000..2372118
--- /dev/null
+++ b/glew/doc/basic.html
@@ -0,0 +1,280 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center">Usage</td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Initializing GLEW</h2>
+<p>
+First you need to create a valid OpenGL rendering context and call
+<tt>glewInit()</tt> to initialize the extension entry points. If
+<tt>glewInit()</tt> returns <tt>GLEW_OK</tt>, the initialization
+succeeded and you can use the available extensions as well as core
+OpenGL functionality. For example:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+...<br>
+glutInit(&amp;argc, argv);<br>
+glutCreateWindow("GLEW Test");<br>
+GLenum err = glewInit();<br>
+if (GLEW_OK != err)<br>
+{<br>
+&nbsp;&nbsp;/* Problem: glewInit failed, something is seriously wrong. */<br>
+&nbsp;&nbsp;fprintf(stderr, "Error: %s\n", glewGetErrorString(err));<br>
+&nbsp;&nbsp;...<br>
+}<br>
+fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));<br>
+</p>
+
+<h2>Checking for Extensions</h2>
+
+<p>
+Starting from GLEW 1.1.0, you can find out if a particular extension
+is available on your platform by querying globally defined variables
+of the form <tt>GLEW_{extension_name}</tt>:
+</p>
+
+<p class="pre">
+if (GLEW_ARB_vertex_program)<br>
+{<br>
+&nbsp;&nbsp;/* It is safe to use the ARB_vertex_program extension here. */<br>
+&nbsp;&nbsp;glGenProgramsARB(...);<br>
+}<br>
+</p>
+
+<p>
+<b>In GLEW 1.0.x, a global structure was used for this task. To ensure
+binary compatibility between releases, the struct was replaced with a
+set of variables.</b>
+</p>
+
+<p>
+You can also check for core OpenGL functionality. For example, to
+see if OpenGL 1.3 is supported, do the following:
+</p>
+
+<p class="pre">
+if (GLEW_VERSION_1_3)<br>
+{<br>
+&nbsp;&nbsp;/* Yay! OpenGL 1.3 is supported! */<br>
+}<br>
+</p>
+
+<p>
+In general, you can check if <tt>GLEW_{extension_name}</tt> or
+<tt>GLEW_VERSION_{version}</tt> is true or false.
+</p>
+
+<p>
+It is also possible to perform extension checks from string
+input. Starting from the 1.3.0 release, use <tt>glewIsSupported</tt>
+to check if the required core or extension functionality is
+available:
+</p>
+
+<p class="pre">
+if (glewIsSupported("GL_VERSION_1_4&nbsp;&nbsp;GL_ARB_point_sprite"))<br>
+{<br>
+&nbsp;&nbsp;/* Great, we have OpenGL 1.4 + point sprites. */<br>
+}<br>
+</p>
+
+<p>
+For extensions only, <tt>glewGetExtension</tt> provides a slower alternative
+(GLEW 1.0.x-1.2.x). <b>Note that in the 1.3.0 release </b>
+<tt>glewGetExtension</tt> <b>was replaced with </b>
+<tt>glewIsSupported</tt>.
+</p>
+
+<p class="pre">
+if (glewGetExtension("GL_ARB_fragment_program"))<br>
+{<br>
+&nbsp;&nbsp;/* Looks like ARB_fragment_program is supported. */<br>
+}<br>
+</p>
+
+<h2>Experimental Drivers</h2>
+
+<p>
+GLEW obtains information on the supported extensions from the graphics
+driver. Experimental or pre-release drivers, however, might not
+report every available extension through the standard mechanism, in
+which case GLEW will report it unsupported. To circumvent this
+situation, the <tt>glewExperimental</tt> global switch can be turned
+on by setting it to <tt>GL_TRUE</tt> before calling
+<tt>glewInit()</tt>, which ensures that all extensions with valid
+entry points will be exposed.
+</p>
+
+<h2>Platform Specific Extensions</h2>
+
+<p>
+Platform specific extensions are separated into two header files:
+<tt>wglew.h</tt> and <tt>glxew.h</tt>, which define the available
+<tt>WGL</tt> and <tt>GLX</tt> extensions. To determine if a certain
+extension is supported, query <tt>WGLEW_{extension name}</tt> or
+<tt>GLXEW_{extension_name}</tt>. For example:
+</p>
+
+<p class="pre">
+#include &lt;GL/wglew.h&gt;<br>
+<br>
+if (WGLEW_ARB_pbuffer)<br>
+{<br>
+&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
+}<br>
+else<br>
+{<br>
+&nbsp;&nbsp;/* Sorry, pbuffers will not work on this platform. */<br>
+}<br>
+</p>
+
+<p>
+Alternatively, use <tt>wglewIsSupported</tt> or
+<tt>glxewIsSupported</tt> to check for extensions from a string:
+</p>
+
+<p class="pre">
+if (wglewIsSupported("WGL_ARB_pbuffer"))<br>
+{<br>
+&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
+}<br>
+</p>
+
+<h2>Utilities</h2>
+
+<p>
+GLEW provides two command-line utilities: one for creating a list of
+available extensions and visuals; and another for verifying extension
+entry points.
+</p>
+
+<h3>visualinfo: extensions and visuals</h3>
+
+<p>
+<tt>visualinfo</tt> is an extended version of <tt>glxinfo</tt>. The
+Windows version creates a file called <tt>visualinfo.txt</tt>, which
+contains a list of available OpenGL, WGL, and GLU extensions as well
+as a table of visuals aka. pixel formats. Pbuffer and MRT capable
+visuals are also included. For additional usage information, type
+<tt>visualinfo -h</tt>.
+</p>
+
+<h3>glewinfo: extension verification utility</h3>
+
+<p>
+<tt>glewinfo</tt> allows you to verify the entry points for the
+extensions supported on your platform. The Windows version
+reports the results to a text file called <tt>glewinfo.txt</tt>. The
+Unix version prints the results to <tt>stdout</tt>.
+</p>
+
+<p>Windows usage:</p>
+ <blockquote><pre>glewinfo [-pf &lt;id&gt;]</pre></blockquote>
+
+<p>where <tt>&lt;id&gt;</tt> is the pixel format id for which the
+capabilities are displayed.</p>
+
+<p>Unix usage:</p>
+<blockquote><pre>glewinfo [-display &lt;dpy&gt;] [-visual &lt;id&gt;]</pre></blockquote>
+
+<p>where <tt>&lt;dpy&gt;</tt> is the X11 display and <tt>&lt;id&gt;</tt> is
+the visual id for which the capabilities are displayed.</p>
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/build.html b/glew/doc/build.html
new file mode 100644
index 0000000..491c521
--- /dev/null
+++ b/glew/doc/build.html
@@ -0,0 +1,149 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center">Building</td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Building GLEW</h2>
+
+<h3>Windows</h3>
+
+<p>A MS Visual Studio project is provided in the <tt>build/vc6</tt> directory.</p>
+<p>Pre-built shared and static libraries are also available for <a href="index.html">download</a>.</p>
+
+<h3>Makefile</h3>
+
+<p>For platforms other than MS Windows, the provided <tt>Makefile</tt> is used.</p>
+
+<h4>Command-line variables</h4>
+
+<table border=0 cellpadding=0 cellspacing=10>
+<tr><td valign=top><tt>SYSTEM</tt></td><td valign=top>auto</td>
+<td align=left>Target system to build: darwin, linux, solaris, etc.<br/>For a full list of supported targets: <tt>ls config/Makefile.*</tt><br/>
+<a href="http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree">config.guess</a> is used to auto detect, as necessary.</td></tr>
+<tr><td valign=top><tt>GLEW_DEST</tt></td><td valign=top><tt>/usr</tt></td>
+<td align=left>Base directory for installation.</td></tr>
+</table>
+
+<h4>Make targets</h4>
+
+<table border=0 cellpadding=0 cellspacing=10>
+<tr><td valign=top><tt>all</tt></td><td>Build everything.</td><tr>
+<tr><td valign=top><tt>glew.lib</tt></td><td>Build static and dynamic GLEW libraries.</td><tr>
+<tr><td valign=top><tt>glew.lib.mx</tt></td><td>Build static and dynamic GLEWmx libraries.</td><tr>
+<tr><td valign=top><tt>glew.bin</tt></td><td>Build <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
+<tr><td valign=top><tt>clean</tt></td><td>Delete temporary and built files.</td><tr>
+<tr><td valign=top><tt>install.all</tt></td><td>Install everything.</td><tr>
+<tr><td valign=top><tt>install</tt></td><td>Install GLEW libraries.</td><tr>
+<tr><td valign=top><tt>install.mx</tt></td><td>Install GLEWmx libraries.</td><tr>
+<tr><td valign=top><tt>install.bin</tt></td><td>Install <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
+<tr><td valign=top><tt>uninstall</tt></td><td>Delete installed files.</td><tr>
+</table>
+
+<h4>Requirements</h4>
+
+<ul>
+<li>GNU make</li>
+<li>perl</li>
+<li>wget</li>
+<li>GNU sed</li>
+<li>gcc compiler</li>
+<li>git</li>
+</ul>
+
+Ubuntu: <pre>sudo apt-get install libXmu-dev libXi-dev libgl-dev dos2unix git wget</pre>
+Fedora: <pre>sudo yum install libXmu-devel libXi-devel libGL-devel dos2unix git wget</pre>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/credits.html b/glew/doc/credits.html
new file mode 100644
index 0000000..0f5c18e
--- /dev/null
+++ b/glew/doc/credits.html
@@ -0,0 +1,102 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<p><a href="https://github.com/nigels-com/glew#copyright-and-licensing">
+Author, copyright and licensing information</a> on github.</p>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/github.png b/glew/doc/github.png
new file mode 100644
index 0000000..540f7c0
--- /dev/null
+++ b/glew/doc/github.png
Binary files differ
diff --git a/glew/doc/glew.css b/glew/doc/glew.css
new file mode 100644
index 0000000..1bb7dd1
--- /dev/null
+++ b/glew/doc/glew.css
@@ -0,0 +1,187 @@
+h1
+{
+ color: black;
+ font: 23px "Verdana", "Arial", "Helvetica", sans-serif;
+ font-weight: bold;
+ text-align: center;
+ margin-top: 12px;
+ margin-bottom: 18px;
+}
+
+h2
+{
+ color: black;
+ font: 18px "Verdana", "Arial", "Helvetica", sans-serif;
+ font-weight: bold;
+ text-align: left;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ margin-top: 18px;
+ margin-bottom: 12px;
+}
+
+h3
+{
+ color: black;
+ font: 17px "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: left;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+
+small
+{
+ font: 8pt "Verdana", "Arial", "Helvetica", sans-serif;
+}
+
+body
+{
+ color: black;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: left;
+}
+
+td
+{
+ color: black;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+}
+
+tt
+{
+ color: rgb(0,120,0);
+}
+/* color: maroon; */
+
+td.num
+{
+ color: lightgrey;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: right;
+}
+
+blockquote
+{
+ color: rgb(0,120,0);
+ background: #f0f0f0;
+ text-align: left;
+ margin-left: 40px;
+ margin-right: 40px;
+ margin-bottom: 6px;
+ padding-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+ border-top: 0px;
+ border-width: 0px;
+}
+
+pre
+{
+ color: rgb(0,120,0);
+ background: #f0f0f0;
+ text-align: left;
+ margin-left: 40px;
+ margin-right: 40px;
+ margin-bottom: 6px;
+ padding-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+ border-top: 0px;
+ border-width: 0px;
+}
+
+p
+{
+ color: black;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: left;
+ margin-bottom: 0px;
+ padding-bottom: 6px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+
+p.right
+{
+ color: black;
+ font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
+ text-align: right;
+ margin-bottom: 0px;
+ padding-bottom: 6px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+
+p.pre
+{
+ color: rgb(0,120,0);
+ font: 10pt "Courier New", "Courier", monospace;
+ background: #f0f0f0;
+ text-align: left;
+ margin-top: 0px;
+ margin-bottom: 6px;
+ margin-left: 40px;
+ margin-right: 40px;
+ padding-top: 0px;
+ padding-bottom: 6px;
+ padding-left: 6px;
+ padding-right: 6px;
+ border-top: 0px;
+ border-width: 0px;
+}
+
+a:link
+{
+ color: rgb(0,0,139);
+ text-decoration: none;
+}
+
+a:visited
+{
+ color: rgb(220,20,60);
+ text-decoration: none;
+}
+
+a:hover
+{
+ color: rgb(220,20,60);
+ text-decoration: underline;
+ background: "#e8e8e8";
+}
+
+ul
+{
+ list-style-type: disc;
+ text-align: left;
+ margin-left: 40px;
+ margin-top: 0px;
+ padding-top: 0px;
+ margin-bottom: 0px;
+ padding-bottom: 3px;
+}
+
+ul.none
+{
+ list-style-type: none;
+}
+
+ol
+{
+ text-align: left;
+ margin-left: 40px;
+ margin-top: 0px;
+ padding-top: 0px;
+ margin-bottom: 0px;
+ padding-bottom: 12px;
+}
+
+hr
+{
+ color: maroon;
+ background-color: maroon;
+ height: 1px;
+ border: 0px;
+ width: 80%;
+}
diff --git a/glew/doc/glew.html b/glew/doc/glew.html
new file mode 100644
index 0000000..8f2c900
--- /dev/null
+++ b/glew/doc/glew.html
@@ -0,0 +1,1071 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Supported OpenGL Extensions</h2>
+
+<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
+<tr><td class="num">1</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_multisample.txt">3DFX_multisample</a></td></tr>
+<tr><td class="num">2</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_tbuffer.txt">3DFX_tbuffer</a></td></tr>
+<tr><td class="num">3</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DFX/3DFX_texture_compression_FXT1.txt">3DFX_texture_compression_FXT1</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">4</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_blend_minmax_factor.txt">AMD_blend_minmax_factor</a></td></tr>
+<tr><td class="num">5</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_3DC_texture.txt">AMD_compressed_3DC_texture</a></td></tr>
+<tr><td class="num">6</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_ATC_texture.txt">AMD_compressed_ATC_texture</a></td></tr>
+<tr><td class="num">7</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_conservative_depth.txt">AMD_conservative_depth</a></td></tr>
+<tr><td class="num">8</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_debug_output.txt">AMD_debug_output</a></td></tr>
+<tr><td class="num">9</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_depth_clamp_separate.txt">AMD_depth_clamp_separate</a></td></tr>
+<tr><td class="num">10</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_draw_buffers_blend.txt">AMD_draw_buffers_blend</a></td></tr>
+<tr><td class="num">11</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_multisample_advanced.txt">AMD_framebuffer_multisample_advanced</a></td></tr>
+<tr><td class="num">12</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_sample_positions.txt">AMD_framebuffer_sample_positions</a></td></tr>
+<tr><td class="num">13</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gcn_shader.txt">AMD_gcn_shader</a></td></tr>
+<tr><td class="num">14</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_half_float.txt">AMD_gpu_shader_half_float</a></td></tr>
+<tr><td class="num">15</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_half_float_fetch.txt">AMD_gpu_shader_half_float_fetch</a></td></tr>
+<tr><td class="num">16</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_int16.txt">AMD_gpu_shader_int16</a></td></tr>
+<tr><td class="num">17</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_gpu_shader_int64.txt">AMD_gpu_shader_int64</a></td></tr>
+<tr><td class="num">18</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_interleaved_elements.txt">AMD_interleaved_elements</a></td></tr>
+<tr><td class="num">19</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_multi_draw_indirect.txt">AMD_multi_draw_indirect</a></td></tr>
+<tr><td class="num">20</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_name_gen_delete.txt">AMD_name_gen_delete</a></td></tr>
+<tr><td class="num">21</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_occlusion_query_event.txt">AMD_occlusion_query_event</a></td></tr>
+<tr><td class="num">22</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_performance_monitor.txt">AMD_performance_monitor</a></td></tr>
+<tr><td class="num">23</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_pinned_memory.txt">AMD_pinned_memory</a></td></tr>
+<tr><td class="num">24</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_program_binary_Z400.txt">AMD_program_binary_Z400</a></td></tr>
+<tr><td class="num">25</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_query_buffer_object.txt">AMD_query_buffer_object</a></td></tr>
+<tr><td class="num">26</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_sample_positions.txt">AMD_sample_positions</a></td></tr>
+<tr><td class="num">27</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_seamless_cubemap_per_texture.txt">AMD_seamless_cubemap_per_texture</a></td></tr>
+<tr><td class="num">28</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_atomic_counter_ops.txt">AMD_shader_atomic_counter_ops</a></td></tr>
+<tr><td class="num">29</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_ballot.txt">AMD_shader_ballot</a></td></tr>
+<tr><td class="num">30</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_explicit_vertex_parameter.txt">AMD_shader_explicit_vertex_parameter</a></td></tr>
+<tr><td class="num">31</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_image_load_store_lod.txt">AMD_shader_image_load_store_lod</a></td></tr>
+<tr><td class="num">32</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_stencil_export.txt">AMD_shader_stencil_export</a></td></tr>
+<tr><td class="num">33</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_stencil_value_export.txt">AMD_shader_stencil_value_export</a></td></tr>
+<tr><td class="num">34</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_trinary_minmax.txt">AMD_shader_trinary_minmax</a></td></tr>
+<tr><td class="num">35</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_sparse_texture.txt">AMD_sparse_texture</a></td></tr>
+<tr><td class="num">36</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_stencil_operation_extended.txt">AMD_stencil_operation_extended</a></td></tr>
+<tr><td class="num">37</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_texture_gather_bias_lod.txt">AMD_texture_gather_bias_lod</a></td></tr>
+<tr><td class="num">38</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_texture_texture4.txt">AMD_texture_texture4</a></td></tr>
+<tr><td class="num">39</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_transform_feedback3_lines_triangles.txt">AMD_transform_feedback3_lines_triangles</a></td></tr>
+<tr><td class="num">40</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_transform_feedback4.txt">AMD_transform_feedback4</a></td></tr>
+<tr><td class="num">41</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_layer.txt">AMD_vertex_shader_layer</a></td></tr>
+<tr><td class="num">42</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_tessellator.txt">AMD_vertex_shader_tessellator</a></td></tr>
+<tr><td class="num">43</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_viewport_index.txt">AMD_vertex_shader_viewport_index</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">44</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">ANDROID_extension_pack_es31a</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">45</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/depth_texture.txt">ANGLE_depth_texture</a></td></tr>
+<tr><td class="num">46</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/framebuffer_blit.txt">ANGLE_framebuffer_blit</a></td></tr>
+<tr><td class="num">47</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/framebuffer_multisample.txt">ANGLE_framebuffer_multisample</a></td></tr>
+<tr><td class="num">48</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/instanced_arrays.txt">ANGLE_instanced_arrays</a></td></tr>
+<tr><td class="num">49</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/pack_reverse_row_order.txt">ANGLE_pack_reverse_row_order</a></td></tr>
+<tr><td class="num">50</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/program_binary.txt">ANGLE_program_binary</a></td></tr>
+<tr><td class="num">51</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt">ANGLE_texture_compression_dxt1</a></td></tr>
+<tr><td class="num">52</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt">ANGLE_texture_compression_dxt3</a></td></tr>
+<tr><td class="num">53</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_compression_dxt.txt">ANGLE_texture_compression_dxt5</a></td></tr>
+<tr><td class="num">54</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/texture_usage.txt">ANGLE_texture_usage</a></td></tr>
+<tr><td class="num">55</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/timer_query.txt">ANGLE_timer_query</a></td></tr>
+<tr><td class="num">56</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ANGLE/translated_shader_source.txt">ANGLE_translated_shader_source</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">57</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_aux_depth_stencil.txt">APPLE_aux_depth_stencil</a></td></tr>
+<tr><td class="num">58</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_client_storage.txt">APPLE_client_storage</a></td></tr>
+<tr><td class="num">59</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_clip_distance.txt">APPLE_clip_distance</a></td></tr>
+<tr><td class="num">60</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_color_buffer_packed_float.txt">APPLE_color_buffer_packed_float</a></td></tr>
+<tr><td class="num">61</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_copy_texture_levels.txt">APPLE_copy_texture_levels</a></td></tr>
+<tr><td class="num">62</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_element_array.txt">APPLE_element_array</a></td></tr>
+<tr><td class="num">63</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_fence.txt">APPLE_fence</a></td></tr>
+<tr><td class="num">64</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/float_pixels.txt">APPLE_float_pixels</a></td></tr>
+<tr><td class="num">65</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_flush_buffer_range.txt">APPLE_flush_buffer_range</a></td></tr>
+<tr><td class="num">66</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_framebuffer_multisample.txt">APPLE_framebuffer_multisample</a></td></tr>
+<tr><td class="num">67</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_object_purgeable.txt">APPLE_object_purgeable</a></td></tr>
+<tr><td class="num">68</td><td>&nbsp;</td><td>APPLE_pixel_buffer</td></tr>
+<tr><td class="num">69</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_rgb_422.txt">APPLE_rgb_422</a></td></tr>
+<tr><td class="num">70</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_row_bytes.txt">APPLE_row_bytes</a></td></tr>
+<tr><td class="num">71</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_specular_vector.txt">APPLE_specular_vector</a></td></tr>
+<tr><td class="num">72</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_sync.txt">APPLE_sync</a></td></tr>
+<tr><td class="num">73</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_2D_limited_npot.txt">APPLE_texture_2D_limited_npot</a></td></tr>
+<tr><td class="num">74</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_format_BGRA8888.txt">APPLE_texture_format_BGRA8888</a></td></tr>
+<tr><td class="num">75</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_max_level.txt">APPLE_texture_max_level</a></td></tr>
+<tr><td class="num">76</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_texture_packed_float.txt">APPLE_texture_packed_float</a></td></tr>
+<tr><td class="num">77</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/texture_range.txt">APPLE_texture_range</a></td></tr>
+<tr><td class="num">78</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_transform_hint.txt">APPLE_transform_hint</a></td></tr>
+<tr><td class="num">79</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_array_object.txt">APPLE_vertex_array_object</a></td></tr>
+<tr><td class="num">80</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_array_range.txt">APPLE_vertex_array_range</a></td></tr>
+<tr><td class="num">81</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_vertex_program_evaluators.txt">APPLE_vertex_program_evaluators</a></td></tr>
+<tr><td class="num">82</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/APPLE/APPLE_ycbcr_422.txt">APPLE_ycbcr_422</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">83</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES2_compatibility.txt">ARB_ES2_compatibility</a></td></tr>
+<tr><td class="num">84</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_1_compatibility.txt">ARB_ES3_1_compatibility</a></td></tr>
+<tr><td class="num">85</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_2_compatibility.txt">ARB_ES3_2_compatibility</a></td></tr>
+<tr><td class="num">86</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_compatibility.txt">ARB_ES3_compatibility</a></td></tr>
+<tr><td class="num">87</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_arrays_of_arrays.txt">ARB_arrays_of_arrays</a></td></tr>
+<tr><td class="num">88</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_base_instance.txt">ARB_base_instance</a></td></tr>
+<tr><td class="num">89</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_bindless_texture.txt">ARB_bindless_texture</a></td></tr>
+<tr><td class="num">90</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_blend_func_extended.txt">ARB_blend_func_extended</a></td></tr>
+<tr><td class="num">91</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_buffer_storage.txt">ARB_buffer_storage</a></td></tr>
+<tr><td class="num">92</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cl_event.txt">ARB_cl_event</a></td></tr>
+<tr><td class="num">93</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_buffer_object.txt">ARB_clear_buffer_object</a></td></tr>
+<tr><td class="num">94</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_texture.txt">ARB_clear_texture</a></td></tr>
+<tr><td class="num">95</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clip_control.txt">ARB_clip_control</a></td></tr>
+<tr><td class="num">96</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_color_buffer_float.txt">ARB_color_buffer_float</a></td></tr>
+<tr><td class="num">97</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compatibility.txt">ARB_compatibility</a></td></tr>
+<tr><td class="num">98</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compressed_texture_pixel_storage.txt">ARB_compressed_texture_pixel_storage</a></td></tr>
+<tr><td class="num">99</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_shader.txt">ARB_compute_shader</a></td></tr>
+<tr><td class="num">100</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_variable_group_size.txt">ARB_compute_variable_group_size</a></td></tr>
+<tr><td class="num">101</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conditional_render_inverted.txt">ARB_conditional_render_inverted</a></td></tr>
+<tr><td class="num">102</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conservative_depth.txt">ARB_conservative_depth</a></td></tr>
+<tr><td class="num">103</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_buffer.txt">ARB_copy_buffer</a></td></tr>
+<tr><td class="num">104</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_image.txt">ARB_copy_image</a></td></tr>
+<tr><td class="num">105</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cull_distance.txt">ARB_cull_distance</a></td></tr>
+<tr><td class="num">106</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_debug_output.txt">ARB_debug_output</a></td></tr>
+<tr><td class="num">107</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_buffer_float.txt">ARB_depth_buffer_float</a></td></tr>
+<tr><td class="num">108</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt">ARB_depth_clamp</a></td></tr>
+<tr><td class="num">109</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_texture.txt">ARB_depth_texture</a></td></tr>
+<tr><td class="num">110</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_derivative_control.txt">ARB_derivative_control</a></td></tr>
+<tr><td class="num">111</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_direct_state_access.txt">ARB_direct_state_access</a></td></tr>
+<tr><td class="num">112</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers.txt">ARB_draw_buffers</a></td></tr>
+<tr><td class="num">113</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers_blend.txt">ARB_draw_buffers_blend</a></td></tr>
+<tr><td class="num">114</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_elements_base_vertex.txt">ARB_draw_elements_base_vertex</a></td></tr>
+<tr><td class="num">115</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_indirect.txt">ARB_draw_indirect</a></td></tr>
+<tr><td class="num">116</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/draw_instanced.txt">ARB_draw_instanced</a></td></tr>
+<tr><td class="num">117</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_enhanced_layouts.txt">ARB_enhanced_layouts</a></td></tr>
+<tr><td class="num">118</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_attrib_location.txt">ARB_explicit_attrib_location</a></td></tr>
+<tr><td class="num">119</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_uniform_location.txt">ARB_explicit_uniform_location</a></td></tr>
+<tr><td class="num">120</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_coord_conventions.txt">ARB_fragment_coord_conventions</a></td></tr>
+<tr><td class="num">121</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_layer_viewport.txt">ARB_fragment_layer_viewport</a></td></tr>
+<tr><td class="num">122</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_program.txt">ARB_fragment_program</a></td></tr>
+<tr><td class="num">123</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_program_shadow.txt">ARB_fragment_program_shadow</a></td></tr>
+<tr><td class="num">124</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader.txt">ARB_fragment_shader</a></td></tr>
+<tr><td class="num">125</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt">ARB_fragment_shader_interlock</a></td></tr>
+<tr><td class="num">126</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_no_attachments.txt">ARB_framebuffer_no_attachments</a></td></tr>
+<tr><td class="num">127</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_object.txt">ARB_framebuffer_object</a></td></tr>
+<tr><td class="num">128</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_sRGB.txt">ARB_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">129</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_geometry_shader4.txt">ARB_geometry_shader4</a></td></tr>
+<tr><td class="num">130</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_program_binary.txt">ARB_get_program_binary</a></td></tr>
+<tr><td class="num">131</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_texture_sub_image.txt">ARB_get_texture_sub_image</a></td></tr>
+<tr><td class="num">132</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gl_spirv.txt">ARB_gl_spirv</a></td></tr>
+<tr><td class="num">133</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader5.txt">ARB_gpu_shader5</a></td></tr>
+<tr><td class="num">134</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_fp64.txt">ARB_gpu_shader_fp64</a></td></tr>
+<tr><td class="num">135</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_int64.txt">ARB_gpu_shader_int64</a></td></tr>
+<tr><td class="num">136</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_pixel.txt">ARB_half_float_pixel</a></td></tr>
+<tr><td class="num">137</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_vertex.txt">ARB_half_float_vertex</a></td></tr>
+<tr><td class="num">138</td><td>&nbsp;</td><td>ARB_imaging</td></tr>
+<tr><td class="num">139</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_indirect_parameters.txt">ARB_indirect_parameters</a></td></tr>
+<tr><td class="num">140</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/instanced_arrays.txt">ARB_instanced_arrays</a></td></tr>
+<tr><td class="num">141</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_internalformat_query.txt">ARB_internalformat_query</a></td></tr>
+<tr><td class="num">142</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/internalformat_query2.txt">ARB_internalformat_query2</a></td></tr>
+<tr><td class="num">143</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_invalidate_subdata.txt">ARB_invalidate_subdata</a></td></tr>
+<tr><td class="num">144</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_alignment.txt">ARB_map_buffer_alignment</a></td></tr>
+<tr><td class="num">145</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_range.txt">ARB_map_buffer_range</a></td></tr>
+<tr><td class="num">146</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/matrix_palette.txt">ARB_matrix_palette</a></td></tr>
+<tr><td class="num">147</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_bind.txt">ARB_multi_bind</a></td></tr>
+<tr><td class="num">148</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_draw_indirect.txt">ARB_multi_draw_indirect</a></td></tr>
+<tr><td class="num">149</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multisample.txt">ARB_multisample</a></td></tr>
+<tr><td class="num">150</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/multitexture.txt">ARB_multitexture</a></td></tr>
+<tr><td class="num">151</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query.txt">ARB_occlusion_query</a></td></tr>
+<tr><td class="num">152</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query2.txt">ARB_occlusion_query2</a></td></tr>
+<tr><td class="num">153</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_parallel_shader_compile.txt">ARB_parallel_shader_compile</a></td></tr>
+<tr><td class="num">154</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pipeline_statistics_query.txt">ARB_pipeline_statistics_query</a></td></tr>
+<tr><td class="num">155</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pixel_buffer_object.txt">ARB_pixel_buffer_object</a></td></tr>
+<tr><td class="num">156</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_point_parameters.txt">ARB_point_parameters</a></td></tr>
+<tr><td class="num">157</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_point_sprite.txt">ARB_point_sprite</a></td></tr>
+<tr><td class="num">158</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_polygon_offset_clamp.txt">ARB_polygon_offset_clamp</a></td></tr>
+<tr><td class="num">159</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_post_depth_coverage.txt">ARB_post_depth_coverage</a></td></tr>
+<tr><td class="num">160</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_program_interface_query.txt">ARB_program_interface_query</a></td></tr>
+<tr><td class="num">161</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_provoking_vertex.txt">ARB_provoking_vertex</a></td></tr>
+<tr><td class="num">162</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_query_buffer_object.txt">ARB_query_buffer_object</a></td></tr>
+<tr><td class="num">163</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robust_buffer_access_behavior.txt">ARB_robust_buffer_access_behavior</a></td></tr>
+<tr><td class="num">164</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/robustness.txt">ARB_robustness</a></td></tr>
+<tr><td class="num">165</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robustness_application_isolation.txt">ARB_robustness_application_isolation</a></td></tr>
+<tr><td class="num">166</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robustness_application_isolation.txt">ARB_robustness_share_group_isolation</a></td></tr>
+<tr><td class="num">167</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_locations.txt">ARB_sample_locations</a></td></tr>
+<tr><td class="num">168</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_shading.txt">ARB_sample_shading</a></td></tr>
+<tr><td class="num">169</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sampler_objects.txt">ARB_sampler_objects</a></td></tr>
+<tr><td class="num">170</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cube_map.txt">ARB_seamless_cube_map</a></td></tr>
+<tr><td class="num">171</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cubemap_per_texture.txt">ARB_seamless_cubemap_per_texture</a></td></tr>
+<tr><td class="num">172</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/separate_shader_objects.txt">ARB_separate_shader_objects</a></td></tr>
+<tr><td class="num">173</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counter_ops.txt">ARB_shader_atomic_counter_ops</a></td></tr>
+<tr><td class="num">174</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counters.txt">ARB_shader_atomic_counters</a></td></tr>
+<tr><td class="num">175</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_ballot.txt">ARB_shader_ballot</a></td></tr>
+<tr><td class="num">176</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_bit_encoding.txt">ARB_shader_bit_encoding</a></td></tr>
+<tr><td class="num">177</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_clock.txt">ARB_shader_clock</a></td></tr>
+<tr><td class="num">178</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_draw_parameters.txt">ARB_shader_draw_parameters</a></td></tr>
+<tr><td class="num">179</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_group_vote.txt">ARB_shader_group_vote</a></td></tr>
+<tr><td class="num">180</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_load_store.txt">ARB_shader_image_load_store</a></td></tr>
+<tr><td class="num">181</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_size.txt">ARB_shader_image_size</a></td></tr>
+<tr><td class="num">182</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_objects.txt">ARB_shader_objects</a></td></tr>
+<tr><td class="num">183</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_precision.txt">ARB_shader_precision</a></td></tr>
+<tr><td class="num">184</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_stencil_export.txt">ARB_shader_stencil_export</a></td></tr>
+<tr><td class="num">185</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_storage_buffer_object.txt">ARB_shader_storage_buffer_object</a></td></tr>
+<tr><td class="num">186</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_subroutine.txt">ARB_shader_subroutine</a></td></tr>
+<tr><td class="num">187</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_image_samples.txt">ARB_shader_texture_image_samples</a></td></tr>
+<tr><td class="num">188</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_lod.txt">ARB_shader_texture_lod</a></td></tr>
+<tr><td class="num">189</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_viewport_layer_array.txt">ARB_shader_viewport_layer_array</a></td></tr>
+<tr><td class="num">190</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_100.txt">ARB_shading_language_100</a></td></tr>
+<tr><td class="num">191</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_420pack.txt">ARB_shading_language_420pack</a></td></tr>
+<tr><td class="num">192</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_include.txt">ARB_shading_language_include</a></td></tr>
+<tr><td class="num">193</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_packing.txt">ARB_shading_language_packing</a></td></tr>
+<tr><td class="num">194</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shadow.txt">ARB_shadow</a></td></tr>
+<tr><td class="num">195</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shadow_ambient.txt">ARB_shadow_ambient</a></td></tr>
+<tr><td class="num">196</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_buffer.txt">ARB_sparse_buffer</a></td></tr>
+<tr><td class="num">197</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture.txt">ARB_sparse_texture</a></td></tr>
+<tr><td class="num">198</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture2.txt">ARB_sparse_texture2</a></td></tr>
+<tr><td class="num">199</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture_clamp.txt">ARB_sparse_texture_clamp</a></td></tr>
+<tr><td class="num">200</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_spirv_extensions.txt">ARB_spirv_extensions</a></td></tr>
+<tr><td class="num">201</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_stencil_texturing.txt">ARB_stencil_texturing</a></td></tr>
+<tr><td class="num">202</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sync.txt">ARB_sync</a></td></tr>
+<tr><td class="num">203</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_tessellation_shader.txt">ARB_tessellation_shader</a></td></tr>
+<tr><td class="num">204</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_barrier.txt">ARB_texture_barrier</a></td></tr>
+<tr><td class="num">205</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_border_clamp.txt">ARB_texture_border_clamp</a></td></tr>
+<tr><td class="num">206</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object.txt">ARB_texture_buffer_object</a></td></tr>
+<tr><td class="num">207</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object_rgb32.txt">ARB_texture_buffer_object_rgb32</a></td></tr>
+<tr><td class="num">208</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_range.txt">ARB_texture_buffer_range</a></td></tr>
+<tr><td class="num">209</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression.txt">ARB_texture_compression</a></td></tr>
+<tr><td class="num">210</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_bptc.txt">ARB_texture_compression_bptc</a></td></tr>
+<tr><td class="num">211</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_rgtc.txt">ARB_texture_compression_rgtc</a></td></tr>
+<tr><td class="num">212</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map.txt">ARB_texture_cube_map</a></td></tr>
+<tr><td class="num">213</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map_array.txt">ARB_texture_cube_map_array</a></td></tr>
+<tr><td class="num">214</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_add.txt">ARB_texture_env_add</a></td></tr>
+<tr><td class="num">215</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_combine.txt">ARB_texture_env_combine</a></td></tr>
+<tr><td class="num">216</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_crossbar.txt">ARB_texture_env_crossbar</a></td></tr>
+<tr><td class="num">217</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_env_dot3.txt">ARB_texture_env_dot3</a></td></tr>
+<tr><td class="num">218</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_filter_anisotropic.txt">ARB_texture_filter_anisotropic</a></td></tr>
+<tr><td class="num">219</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_filter_minmax.txt">ARB_texture_filter_minmax</a></td></tr>
+<tr><td class="num">220</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_float.txt">ARB_texture_float</a></td></tr>
+<tr><td class="num">221</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_gather.txt">ARB_texture_gather</a></td></tr>
+<tr><td class="num">222</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirror_clamp_to_edge.txt">ARB_texture_mirror_clamp_to_edge</a></td></tr>
+<tr><td class="num">223</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirrored_repeat.txt">ARB_texture_mirrored_repeat</a></td></tr>
+<tr><td class="num">224</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_multisample.txt">ARB_texture_multisample</a></td></tr>
+<tr><td class="num">225</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_non_power_of_two.txt">ARB_texture_non_power_of_two</a></td></tr>
+<tr><td class="num">226</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_levels.txt">ARB_texture_query_levels</a></td></tr>
+<tr><td class="num">227</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_lod.txt">ARB_texture_query_lod</a></td></tr>
+<tr><td class="num">228</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rectangle.txt">ARB_texture_rectangle</a></td></tr>
+<tr><td class="num">229</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rg.txt">ARB_texture_rg</a></td></tr>
+<tr><td class="num">230</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rgb10_a2ui.txt">ARB_texture_rgb10_a2ui</a></td></tr>
+<tr><td class="num">231</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_stencil8.txt">ARB_texture_stencil8</a></td></tr>
+<tr><td class="num">232</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage.txt">ARB_texture_storage</a></td></tr>
+<tr><td class="num">233</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage_multisample.txt">ARB_texture_storage_multisample</a></td></tr>
+<tr><td class="num">234</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_swizzle.txt">ARB_texture_swizzle</a></td></tr>
+<tr><td class="num">235</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_view.txt">ARB_texture_view</a></td></tr>
+<tr><td class="num">236</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_timer_query.txt">ARB_timer_query</a></td></tr>
+<tr><td class="num">237</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback2.txt">ARB_transform_feedback2</a></td></tr>
+<tr><td class="num">238</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback3.txt">ARB_transform_feedback3</a></td></tr>
+<tr><td class="num">239</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_instanced.txt">ARB_transform_feedback_instanced</a></td></tr>
+<tr><td class="num">240</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_overflow_query.txt">ARB_transform_feedback_overflow_query</a></td></tr>
+<tr><td class="num">241</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transpose_matrix.txt">ARB_transpose_matrix</a></td></tr>
+<tr><td class="num">242</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_uniform_buffer_object.txt">ARB_uniform_buffer_object</a></td></tr>
+<tr><td class="num">243</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_bgra.txt">ARB_vertex_array_bgra</a></td></tr>
+<tr><td class="num">244</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_object.txt">ARB_vertex_array_object</a></td></tr>
+<tr><td class="num">245</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_attrib_64bit.txt">ARB_vertex_attrib_64bit</a></td></tr>
+<tr><td class="num">246</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_attrib_binding.txt">ARB_vertex_attrib_binding</a></td></tr>
+<tr><td class="num">247</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_blend.txt">ARB_vertex_blend</a></td></tr>
+<tr><td class="num">248</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_buffer_object.txt">ARB_vertex_buffer_object</a></td></tr>
+<tr><td class="num">249</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_program.txt">ARB_vertex_program</a></td></tr>
+<tr><td class="num">250</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_shader.txt">ARB_vertex_shader</a></td></tr>
+<tr><td class="num">251</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_10f_11f_11f_rev.txt">ARB_vertex_type_10f_11f_11f_rev</a></td></tr>
+<tr><td class="num">252</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_2_10_10_10_rev.txt">ARB_vertex_type_2_10_10_10_rev</a></td></tr>
+<tr><td class="num">253</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_viewport_array.txt">ARB_viewport_array</a></td></tr>
+<tr><td class="num">254</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_window_pos.txt">ARB_window_pos</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">255</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_mali_program_binary.txt">ARM_mali_program_binary</a></td></tr>
+<tr><td class="num">256</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_mali_shader_binary.txt">ARM_mali_shader_binary</a></td></tr>
+<tr><td class="num">257</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_rgba8.txt">ARM_rgba8</a></td></tr>
+<tr><td class="num">258</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fetch.txt">ARM_shader_framebuffer_fetch</a></td></tr>
+<tr><td class="num">259</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fetch_depth_stencil.txt">ARM_shader_framebuffer_fetch_depth_stencil</a></td></tr>
+<tr><td class="num">260</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_texture_unnormalized_coordinates.txt">ARM_texture_unnormalized_coordinates</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">261</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_point_sprites</a></td></tr>
+<tr><td class="num">262</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_texture_env_combine3</a></td></tr>
+<tr><td class="num">263</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/sdk/RadeonSDK/Html/Info/ATIX_texture_env_route.txt">ATIX_texture_env_route</a></td></tr>
+<tr><td class="num">264</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_vertex_shader_output_point_size</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">265</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_draw_buffers.txt">ATI_draw_buffers</a></td></tr>
+<tr><td class="num">266</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_element_array.txt">ATI_element_array</a></td></tr>
+<tr><td class="num">267</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ATI/envmap_bumpmap.txt">ATI_envmap_bumpmap</a></td></tr>
+<tr><td class="num">268</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_fragment_shader.txt">ATI_fragment_shader</a></td></tr>
+<tr><td class="num">269</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/map_object_buffer.txt">ATI_map_object_buffer</a></td></tr>
+<tr><td class="num">270</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_meminfo.txt">ATI_meminfo</a></td></tr>
+<tr><td class="num">271</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/pn_triangles.txt">ATI_pn_triangles</a></td></tr>
+<tr><td class="num">272</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/separate_stencil.txt">ATI_separate_stencil</a></td></tr>
+<tr><td class="num">273</td><td>&nbsp;</td><td>ATI_shader_texture_lod</td></tr>
+<tr><td class="num">274</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_text_fragment_shader.txt">ATI_text_fragment_shader</a></td></tr>
+<tr><td class="num">275</td><td>&nbsp;</td><td>ATI_texture_compression_3dc</td></tr>
+<tr><td class="num">276</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_env_combine3.txt">ATI_texture_env_combine3</a></td></tr>
+<tr><td class="num">277</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_float.txt">ATI_texture_float</a></td></tr>
+<tr><td class="num">278</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_texture_mirror_once.txt">ATI_texture_mirror_once</a></td></tr>
+<tr><td class="num">279</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_vertex_array_object.txt">ATI_vertex_array_object</a></td></tr>
+<tr><td class="num">280</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/ATI_vertex_attrib_array_object.txt">ATI_vertex_attrib_array_object</a></td></tr>
+<tr><td class="num">281</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/vertex_streams.txt">ATI_vertex_streams</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">282</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/DMP/DMP_program_binary.txt">DMP_program_binary</a></td></tr>
+<tr><td class="num">283</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/DMP/DMP_shader_binary.txt">DMP_shader_binary</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">284</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_422_pixels.txt">EXT_422_pixels</a></td></tr>
+<tr><td class="num">285</td><td>&nbsp;</td><td><a href="http://download.nvidia.com/developer/GLSL/GLSL%20Release%20Notes%20for%20Release%2060.pdf">EXT_Cg_shader</a></td></tr>
+<tr><td class="num">286</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_array.txt">EXT_EGL_image_array</a></td></tr>
+<tr><td class="num">287</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_external_wrap_modes.txt">EXT_EGL_image_external_wrap_modes</a></td></tr>
+<tr><td class="num">288</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_storage.txt">EXT_EGL_image_storage</a></td></tr>
+<tr><td class="num">289</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_storage_compression.txt">EXT_EGL_image_storage_compression</a></td></tr>
+<tr><td class="num">290</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_sync.txt">EXT_EGL_sync</a></td></tr>
+<tr><td class="num">291</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_YUV_target.txt">EXT_YUV_target</a></td></tr>
+<tr><td class="num">292</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_abgr.txt">EXT_abgr</a></td></tr>
+<tr><td class="num">293</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_base_instance.txt">EXT_base_instance</a></td></tr>
+<tr><td class="num">294</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_bgra.txt">EXT_bgra</a></td></tr>
+<tr><td class="num">295</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_bindable_uniform.txt">EXT_bindable_uniform</a></td></tr>
+<tr><td class="num">296</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_color.txt">EXT_blend_color</a></td></tr>
+<tr><td class="num">297</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_equation_separate.txt">EXT_blend_equation_separate</a></td></tr>
+<tr><td class="num">298</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_func_extended.txt">EXT_blend_func_extended</a></td></tr>
+<tr><td class="num">299</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_func_separate.txt">EXT_blend_func_separate</a></td></tr>
+<tr><td class="num">300</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_logic_op.txt">EXT_blend_logic_op</a></td></tr>
+<tr><td class="num">301</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_minmax.txt">EXT_blend_minmax</a></td></tr>
+<tr><td class="num">302</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_subtract.txt">EXT_blend_subtract</a></td></tr>
+<tr><td class="num">303</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_buffer_storage.txt">EXT_buffer_storage</a></td></tr>
+<tr><td class="num">304</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clear_texture.txt">EXT_clear_texture</a></td></tr>
+<tr><td class="num">305</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_control.txt">EXT_clip_control</a></td></tr>
+<tr><td class="num">306</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_cull_distance.txt">EXT_clip_cull_distance</a></td></tr>
+<tr><td class="num">307</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_volume_hint.txt">EXT_clip_volume_hint</a></td></tr>
+<tr><td class="num">308</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_cmyka.txt">EXT_cmyka</a></td></tr>
+<tr><td class="num">309</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_float.txt">EXT_color_buffer_float</a></td></tr>
+<tr><td class="num">310</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_half_float.txt">EXT_color_buffer_half_float</a></td></tr>
+<tr><td class="num">311</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_subtable.txt">EXT_color_subtable</a></td></tr>
+<tr><td class="num">312</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_compiled_vertex_array.txt">EXT_compiled_vertex_array</a></td></tr>
+<tr><td class="num">313</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_compressed_ETC1_RGB8_sub_texture.txt">EXT_compressed_ETC1_RGB8_sub_texture</a></td></tr>
+<tr><td class="num">314</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_conservative_depth.txt">EXT_conservative_depth</a></td></tr>
+<tr><td class="num">315</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_convolution.txt">EXT_convolution</a></td></tr>
+<tr><td class="num">316</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_coordinate_frame.txt">EXT_coordinate_frame</a></td></tr>
+<tr><td class="num">317</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_image.txt">EXT_copy_image</a></td></tr>
+<tr><td class="num">318</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_texture.txt">EXT_copy_texture</a></td></tr>
+<tr><td class="num">319</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_cull_vertex.txt">EXT_cull_vertex</a></td></tr>
+<tr><td class="num">320</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_debug_label.txt">EXT_debug_label</a></td></tr>
+<tr><td class="num">321</td><td>&nbsp;</td><td><a href="http://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt">EXT_debug_marker</a></td></tr>
+<tr><td class="num">322</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_depth_bounds_test.txt">EXT_depth_bounds_test</a></td></tr>
+<tr><td class="num">323</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_depth_clamp.txt">EXT_depth_clamp</a></td></tr>
+<tr><td class="num">324</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_direct_state_access.txt">EXT_direct_state_access</a></td></tr>
+<tr><td class="num">325</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_discard_framebuffer.txt">EXT_discard_framebuffer</a></td></tr>
+<tr><td class="num">326</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_disjoint_timer_query.txt">EXT_disjoint_timer_query</a></td></tr>
+<tr><td class="num">327</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers.txt">EXT_draw_buffers</a></td></tr>
+<tr><td class="num">328</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers2.txt">EXT_draw_buffers2</a></td></tr>
+<tr><td class="num">329</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers_indexed.txt">EXT_draw_buffers_indexed</a></td></tr>
+<tr><td class="num">330</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_elements_base_vertex.txt">EXT_draw_elements_base_vertex</a></td></tr>
+<tr><td class="num">331</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_draw_instanced.txt">EXT_draw_instanced</a></td></tr>
+<tr><td class="num">332</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/draw_range_elements.txt">EXT_draw_range_elements</a></td></tr>
+<tr><td class="num">333</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_transform_feedback.txt">EXT_draw_transform_feedback</a></td></tr>
+<tr><td class="num">334</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_buffer.txt">EXT_external_buffer</a></td></tr>
+<tr><td class="num">335</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_float_blend.txt">EXT_float_blend</a></td></tr>
+<tr><td class="num">336</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/fog_coord.txt">EXT_fog_coord</a></td></tr>
+<tr><td class="num">337</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_frag_depth.txt">EXT_frag_depth</a></td></tr>
+<tr><td class="num">338</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_fragment_lighting.txt">EXT_fragment_lighting</a></td></tr>
+<tr><td class="num">339</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_blit.txt">EXT_framebuffer_blit</a></td></tr>
+<tr><td class="num">340</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample.txt">EXT_framebuffer_multisample</a></td></tr>
+<tr><td class="num">341</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample_blit_scaled.txt">EXT_framebuffer_multisample_blit_scaled</a></td></tr>
+<tr><td class="num">342</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_object.txt">EXT_framebuffer_object</a></td></tr>
+<tr><td class="num">343</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_framebuffer_sRGB.txt">EXT_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">344</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_geometry_shader.txt">EXT_geometry_point_size</a></td></tr>
+<tr><td class="num">345</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_geometry_shader.txt">EXT_geometry_shader</a></td></tr>
+<tr><td class="num">346</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_geometry_shader4.txt">EXT_geometry_shader4</a></td></tr>
+<tr><td class="num">347</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_program_parameters.txt">EXT_gpu_program_parameters</a></td></tr>
+<tr><td class="num">348</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_shader4.txt">EXT_gpu_shader4</a></td></tr>
+<tr><td class="num">349</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_gpu_shader5.txt">EXT_gpu_shader5</a></td></tr>
+<tr><td class="num">350</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_histogram.txt">EXT_histogram</a></td></tr>
+<tr><td class="num">351</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_array_formats.txt">EXT_index_array_formats</a></td></tr>
+<tr><td class="num">352</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_func.txt">EXT_index_func</a></td></tr>
+<tr><td class="num">353</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_material.txt">EXT_index_material</a></td></tr>
+<tr><td class="num">354</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_index_texture.txt">EXT_index_texture</a></td></tr>
+<tr><td class="num">355</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_instanced_arrays.txt">EXT_instanced_arrays</a></td></tr>
+<tr><td class="num">356</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_light_texture.txt">EXT_light_texture</a></td></tr>
+<tr><td class="num">357</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_map_buffer_range.txt">EXT_map_buffer_range</a></td></tr>
+<tr><td class="num">358</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects.txt">EXT_memory_object</a></td></tr>
+<tr><td class="num">359</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects_fd.txt">EXT_memory_object_fd</a></td></tr>
+<tr><td class="num">360</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects_win32.txt">EXT_memory_object_win32</a></td></tr>
+<tr><td class="num">361</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_misc_attribute.txt">EXT_misc_attribute</a></td></tr>
+<tr><td class="num">362</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multi_draw_arrays.txt">EXT_multi_draw_arrays</a></td></tr>
+<tr><td class="num">363</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multi_draw_indirect.txt">EXT_multi_draw_indirect</a></td></tr>
+<tr><td class="num">364</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiple_textures.txt">EXT_multiple_textures</a></td></tr>
+<tr><td class="num">365</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_multisample.txt">EXT_multisample</a></td></tr>
+<tr><td class="num">366</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisample_compatibility.txt">EXT_multisample_compatibility</a></td></tr>
+<tr><td class="num">367</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt">EXT_multisampled_render_to_texture</a></td></tr>
+<tr><td class="num">368</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture2.txt">EXT_multisampled_render_to_texture2</a></td></tr>
+<tr><td class="num">369</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_draw_buffers.txt">EXT_multiview_draw_buffers</a></td></tr>
+<tr><td class="num">370</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_tessellation_geometry_shader.txt">EXT_multiview_tessellation_geometry_shader</a></td></tr>
+<tr><td class="num">371</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_texture_multisample.txt">EXT_multiview_texture_multisample</a></td></tr>
+<tr><td class="num">372</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multiview_timer_query.txt">EXT_multiview_timer_query</a></td></tr>
+<tr><td class="num">373</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_occlusion_query_boolean.txt">EXT_occlusion_query_boolean</a></td></tr>
+<tr><td class="num">374</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_depth_stencil.txt">EXT_packed_depth_stencil</a></td></tr>
+<tr><td class="num">375</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_packed_float.txt">EXT_packed_float</a></td></tr>
+<tr><td class="num">376</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_pixels.txt">EXT_packed_pixels</a></td></tr>
+<tr><td class="num">377</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_paletted_texture.txt">EXT_paletted_texture</a></td></tr>
+<tr><td class="num">378</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_pixel_buffer_object.txt">EXT_pixel_buffer_object</a></td></tr>
+<tr><td class="num">379</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_transform.txt">EXT_pixel_transform</a></td></tr>
+<tr><td class="num">380</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_transform_color_table.txt">EXT_pixel_transform_color_table</a></td></tr>
+<tr><td class="num">381</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_point_parameters.txt">EXT_point_parameters</a></td></tr>
+<tr><td class="num">382</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_polygon_offset.txt">EXT_polygon_offset</a></td></tr>
+<tr><td class="num">383</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_polygon_offset_clamp.txt">EXT_polygon_offset_clamp</a></td></tr>
+<tr><td class="num">384</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_post_depth_coverage.txt">EXT_post_depth_coverage</a></td></tr>
+<tr><td class="num">385</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_primitive_bounding_box.txt">EXT_primitive_bounding_box</a></td></tr>
+<tr><td class="num">386</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt">EXT_protected_textures</a></td></tr>
+<tr><td class="num">387</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_provoking_vertex.txt">EXT_provoking_vertex</a></td></tr>
+<tr><td class="num">388</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pvrtc_sRGB.txt">EXT_pvrtc_sRGB</a></td></tr>
+<tr><td class="num">389</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_mixed_samples.txt">EXT_raster_multisample</a></td></tr>
+<tr><td class="num">390</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_read_format_bgra.txt">EXT_read_format_bgra</a></td></tr>
+<tr><td class="num">391</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_render_snorm.txt">EXT_render_snorm</a></td></tr>
+<tr><td class="num">392</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_rescale_normal.txt">EXT_rescale_normal</a></td></tr>
+<tr><td class="num">393</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_robustness.txt">EXT_robustness</a></td></tr>
+<tr><td class="num">394</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sRGB.txt">EXT_sRGB</a></td></tr>
+<tr><td class="num">395</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sRGB_write_control.txt">EXT_sRGB_write_control</a></td></tr>
+<tr><td class="num">396</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_scene_marker.txt">EXT_scene_marker</a></td></tr>
+<tr><td class="num">397</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/secondary_color.txt">EXT_secondary_color</a></td></tr>
+<tr><td class="num">398</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects.txt">EXT_semaphore</a></td></tr>
+<tr><td class="num">399</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects_fd.txt">EXT_semaphore_fd</a></td></tr>
+<tr><td class="num">400</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/external_objects_win32.txt">EXT_semaphore_win32</a></td></tr>
+<tr><td class="num">401</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_depth_stencil.txt">EXT_separate_depth_stencil</a></td></tr>
+<tr><td class="num">402</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_shader_objects.gl.txt">EXT_separate_shader_objects</a></td></tr>
+<tr><td class="num">403</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_specular_color.txt">EXT_separate_specular_color</a></td></tr>
+<tr><td class="num">404</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt">EXT_shader_framebuffer_fetch</a></td></tr>
+<tr><td class="num">405</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt">EXT_shader_framebuffer_fetch_non_coherent</a></td></tr>
+<tr><td class="num">406</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_group_vote.txt">EXT_shader_group_vote</a></td></tr>
+<tr><td class="num">407</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_image_load_formatted.txt">EXT_shader_image_load_formatted</a></td></tr>
+<tr><td class="num">408</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_image_load_store.txt">EXT_shader_image_load_store</a></td></tr>
+<tr><td class="num">409</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_implicit_conversions.txt">EXT_shader_implicit_conversions</a></td></tr>
+<tr><td class="num">410</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_integer_mix.txt">EXT_shader_integer_mix</a></td></tr>
+<tr><td class="num">411</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_io_blocks.txt">EXT_shader_io_blocks</a></td></tr>
+<tr><td class="num">412</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_non_constant_global_initializers.txt">EXT_shader_non_constant_global_initializers</a></td></tr>
+<tr><td class="num">413</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage.txt">EXT_shader_pixel_local_storage</a></td></tr>
+<tr><td class="num">414</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage2.txt">EXT_shader_pixel_local_storage2</a></td></tr>
+<tr><td class="num">415</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_samples_identical.txt">EXT_shader_samples_identical</a></td></tr>
+<tr><td class="num">416</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_texture_lod.txt">EXT_shader_texture_lod</a></td></tr>
+<tr><td class="num">417</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_funcs.txt">EXT_shadow_funcs</a></td></tr>
+<tr><td class="num">418</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_samplers.txt">EXT_shadow_samplers</a></td></tr>
+<tr><td class="num">419</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shared_texture_palette.txt">EXT_shared_texture_palette</a></td></tr>
+<tr><td class="num">420</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sparse_texture.txt">EXT_sparse_texture</a></td></tr>
+<tr><td class="num">421</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_sparse_texture2.txt">EXT_sparse_texture2</a></td></tr>
+<tr><td class="num">422</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_static_vertex_array.txt">EXT_static_vertex_array</a></td></tr>
+<tr><td class="num">423</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_clear_tag.txt">EXT_stencil_clear_tag</a></td></tr>
+<tr><td class="num">424</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_two_side.txt">EXT_stencil_two_side</a></td></tr>
+<tr><td class="num">425</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_stencil_wrap.txt">EXT_stencil_wrap</a></td></tr>
+<tr><td class="num">426</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_subtexture.txt">EXT_subtexture</a></td></tr>
+<tr><td class="num">427</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_tessellation_shader.txt">EXT_tessellation_point_size</a></td></tr>
+<tr><td class="num">428</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_tessellation_shader.txt">EXT_tessellation_shader</a></td></tr>
+<tr><td class="num">429</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture.txt">EXT_texture</a></td></tr>
+<tr><td class="num">430</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture3D.txt">EXT_texture3D</a></td></tr>
+<tr><td class="num">431</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_array.txt">EXT_texture_array</a></td></tr>
+<tr><td class="num">432</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_border_clamp.txt">EXT_texture_border_clamp</a></td></tr>
+<tr><td class="num">433</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_buffer.txt">EXT_texture_buffer</a></td></tr>
+<tr><td class="num">434</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_buffer_object.txt">EXT_texture_buffer_object</a></td></tr>
+<tr><td class="num">435</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_astc_decode_mode.txt">EXT_texture_compression_astc_decode_mode</a></td></tr>
+<tr><td class="num">436</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_astc_decode_mode.txt">EXT_texture_compression_astc_decode_mode_rgb9e5</a></td></tr>
+<tr><td class="num">437</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_bptc.txt">EXT_texture_compression_bptc</a></td></tr>
+<tr><td class="num">438</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_dxt1.txt">EXT_texture_compression_dxt1</a></td></tr>
+<tr><td class="num">439</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_latc.txt">EXT_texture_compression_latc</a></td></tr>
+<tr><td class="num">440</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_rgtc.txt">EXT_texture_compression_rgtc</a></td></tr>
+<tr><td class="num">441</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_s3tc.txt">EXT_texture_compression_s3tc</a></td></tr>
+<tr><td class="num">442</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_s3tc_srgb.txt">EXT_texture_compression_s3tc_srgb</a></td></tr>
+<tr><td class="num">443</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_texture_cube_map.txt">EXT_texture_cube_map</a></td></tr>
+<tr><td class="num">444</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_cube_map_array.txt">EXT_texture_cube_map_array</a></td></tr>
+<tr><td class="num">445</td><td>&nbsp;</td><td><a href="http://www.opengl.org/developers/documentation/Version1.2/1.2specs/texture_edge_clamp.txt">EXT_texture_edge_clamp</a></td></tr>
+<tr><td class="num">446</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env.txt">EXT_texture_env</a></td></tr>
+<tr><td class="num">447</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_add.txt">EXT_texture_env_add</a></td></tr>
+<tr><td class="num">448</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_combine.txt">EXT_texture_env_combine</a></td></tr>
+<tr><td class="num">449</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_env_dot3.txt">EXT_texture_env_dot3</a></td></tr>
+<tr><td class="num">450</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_filter_anisotropic.txt">EXT_texture_filter_anisotropic</a></td></tr>
+<tr><td class="num">451</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_filter_minmax.txt">EXT_texture_filter_minmax</a></td></tr>
+<tr><td class="num">452</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_format_BGRA8888.txt">EXT_texture_format_BGRA8888</a></td></tr>
+<tr><td class="num">453</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_format_sRGB_override.txt">EXT_texture_format_sRGB_override</a></td></tr>
+<tr><td class="num">454</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_integer.txt">EXT_texture_integer</a></td></tr>
+<tr><td class="num">455</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_lod_bias.txt">EXT_texture_lod_bias</a></td></tr>
+<tr><td class="num">456</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_mirror_clamp.txt">EXT_texture_mirror_clamp</a></td></tr>
+<tr><td class="num">457</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_mirror_clamp_to_edge.txt">EXT_texture_mirror_clamp_to_edge</a></td></tr>
+<tr><td class="num">458</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_norm16.txt">EXT_texture_norm16</a></td></tr>
+<tr><td class="num">459</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_object.txt">EXT_texture_object</a></td></tr>
+<tr><td class="num">460</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_perturb_normal.txt">EXT_texture_perturb_normal</a></td></tr>
+<tr><td class="num">461</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_query_lod.txt">EXT_texture_query_lod</a></td></tr>
+<tr><td class="num">462</td><td>&nbsp;</td><td><a href="http://developer.apple.com/opengl/extensions/ext_texture_rectangle.html">EXT_texture_rectangle</a></td></tr>
+<tr><td class="num">463</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_rg.txt">EXT_texture_rg</a></td></tr>
+<tr><td class="num">464</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB.txt">EXT_texture_sRGB</a></td></tr>
+<tr><td class="num">465</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_R8.txt">EXT_texture_sRGB_R8</a></td></tr>
+<tr><td class="num">466</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_RG8.txt">EXT_texture_sRGB_RG8</a></td></tr>
+<tr><td class="num">467</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_decode.txt">EXT_texture_sRGB_decode</a></td></tr>
+<tr><td class="num">468</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_shadow_lod.txt">EXT_texture_shadow_lod</a></td></tr>
+<tr><td class="num">469</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_shared_exponent.txt">EXT_texture_shared_exponent</a></td></tr>
+<tr><td class="num">470</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_snorm.txt">EXT_texture_snorm</a></td></tr>
+<tr><td class="num">471</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_storage.txt">EXT_texture_storage</a></td></tr>
+<tr><td class="num">472</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_storage_compression.txt">EXT_texture_storage_compression</a></td></tr>
+<tr><td class="num">473</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_swizzle.txt">EXT_texture_swizzle</a></td></tr>
+<tr><td class="num">474</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_type_2_10_10_10_REV.txt">EXT_texture_type_2_10_10_10_REV</a></td></tr>
+<tr><td class="num">475</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_view.txt">EXT_texture_view</a></td></tr>
+<tr><td class="num">476</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_timer_query.txt">EXT_timer_query</a></td></tr>
+<tr><td class="num">477</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_transform_feedback.txt">EXT_transform_feedback</a></td></tr>
+<tr><td class="num">478</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_unpack_subimage.txt">EXT_unpack_subimage</a></td></tr>
+<tr><td class="num">479</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array.txt">EXT_vertex_array</a></td></tr>
+<tr><td class="num">480</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array_bgra.txt">EXT_vertex_array_bgra</a></td></tr>
+<tr><td class="num">481</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array_setXXX.txt">EXT_vertex_array_setXXX</a></td></tr>
+<tr><td class="num">482</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_attrib_64bit.txt">EXT_vertex_attrib_64bit</a></td></tr>
+<tr><td class="num">483</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/vertex_shader.txt">EXT_vertex_shader</a></td></tr>
+<tr><td class="num">484</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_weighting.txt">EXT_vertex_weighting</a></td></tr>
+<tr><td class="num">485</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_win32_keyed_mutex.txt">EXT_win32_keyed_mutex</a></td></tr>
+<tr><td class="num">486</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_window_rectangles.txt">EXT_window_rectangles</a></td></tr>
+<tr><td class="num">487</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_x11_sync_object.txt">EXT_x11_sync_object</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">488</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/FJ/FJ_shader_binary_GCCSO.txt">FJ_shader_binary_GCCSO</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">489</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_frame_terminator.txt">GREMEDY_frame_terminator</a></td></tr>
+<tr><td class="num">490</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_string_marker.txt">GREMEDY_string_marker</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">491</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/HP/HP_convolution_border_modes.txt">HP_convolution_border_modes</a></td></tr>
+<tr><td class="num">492</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/HP/HP_image_transform.txt">HP_image_transform</a></td></tr>
+<tr><td class="num">493</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/HP/HP_occlusion_test.txt">HP_occlusion_test</a></td></tr>
+<tr><td class="num">494</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/HP/HP_texture_lighting.txt">HP_texture_lighting</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">495</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_cull_vertex.txt">IBM_cull_vertex</a></td></tr>
+<tr><td class="num">496</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_multimode_draw_arrays.txt">IBM_multimode_draw_arrays</a></td></tr>
+<tr><td class="num">497</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_rasterpos_clip.txt">IBM_rasterpos_clip</a></td></tr>
+<tr><td class="num">498</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_static_data.txt">IBM_static_data</a></td></tr>
+<tr><td class="num">499</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_texture_mirrored_repeat.txt">IBM_texture_mirrored_repeat</a></td></tr>
+<tr><td class="num">500</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IBM/IBM_vertex_array_lists.txt">IBM_vertex_array_lists</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">501</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_bindless_texture.txt">IMG_bindless_texture</a></td></tr>
+<tr><td class="num">502</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_framebuffer_downsample.txt">IMG_framebuffer_downsample</a></td></tr>
+<tr><td class="num">503</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_multisampled_render_to_texture.txt">IMG_multisampled_render_to_texture</a></td></tr>
+<tr><td class="num">504</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_program_binary.txt">IMG_program_binary</a></td></tr>
+<tr><td class="num">505</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_read_format.txt">IMG_read_format</a></td></tr>
+<tr><td class="num">506</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_shader_binary.txt">IMG_shader_binary</a></td></tr>
+<tr><td class="num">507</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt">IMG_texture_compression_pvrtc</a></td></tr>
+<tr><td class="num">508</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc2.txt">IMG_texture_compression_pvrtc2</a></td></tr>
+<tr><td class="num">509</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_env_enhanced_fixed_function.txt">IMG_texture_env_enhanced_fixed_function</a></td></tr>
+<tr><td class="num">510</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_filter_cubic.txt">IMG_texture_filter_cubic</a></td></tr>
+<tr><td class="num">511</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_tile_region_protection.txt">IMG_tile_region_protection</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">512</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INGR/INGR_color_clamp.txt">INGR_color_clamp</a></td></tr>
+<tr><td class="num">513</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INGR/INGR_interlace_read.txt">INGR_interlace_read</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">514</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_blackhole_render.txt">INTEL_blackhole_render</a></td></tr>
+<tr><td class="num">515</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_conservative_rasterization.txt">INTEL_conservative_rasterization</a></td></tr>
+<tr><td class="num">516</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_fragment_shader_ordering.txt">INTEL_fragment_shader_ordering</a></td></tr>
+<tr><td class="num">517</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_framebuffer_CMAA.txt">INTEL_framebuffer_CMAA</a></td></tr>
+<tr><td class="num">518</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_map_texture.txt">INTEL_map_texture</a></td></tr>
+<tr><td class="num">519</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_parallel_arrays.txt">INTEL_parallel_arrays</a></td></tr>
+<tr><td class="num">520</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_performance_query.txt">INTEL_performance_query</a></td></tr>
+<tr><td class="num">521</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_shader_integer_functions2.txt">INTEL_shader_integer_functions2</a></td></tr>
+<tr><td class="num">522</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/INTEL/INTEL_texture_scissor.txt">INTEL_texture_scissor</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">523</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_blend_equation_advanced.txt">KHR_blend_equation_advanced</a></td></tr>
+<tr><td class="num">524</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_blend_equation_advanced.txt">KHR_blend_equation_advanced_coherent</a></td></tr>
+<tr><td class="num">525</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_context_flush_control.txt">KHR_context_flush_control</a></td></tr>
+<tr><td class="num">526</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt">KHR_debug</a></td></tr>
+<tr><td class="num">527</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_no_error.txt">KHR_no_error</a></td></tr>
+<tr><td class="num">528</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_parallel_shader_compile.txt">KHR_parallel_shader_compile</a></td></tr>
+<tr><td class="num">529</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robust_buffer_access_behavior.txt">KHR_robust_buffer_access_behavior</a></td></tr>
+<tr><td class="num">530</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robustness.txt">KHR_robustness</a></td></tr>
+<tr><td class="num">531</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_shader_subgroup.txt">KHR_shader_subgroup</a></td></tr>
+<tr><td class="num">532</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt">KHR_texture_compression_astc_hdr</a></td></tr>
+<tr><td class="num">533</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt">KHR_texture_compression_astc_ldr</a></td></tr>
+<tr><td class="num">534</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_texture_compression_astc_sliced_3d.txt">KHR_texture_compression_astc_sliced_3d</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">535</td><td>&nbsp;</td><td>KTX_buffer_region</td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">536</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESAX/MESAX_texture_stack.txt">MESAX_texture_stack</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">537</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_bgra.txt">MESA_bgra</a></td></tr>
+<tr><td class="num">538</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_flip_x.txt">MESA_framebuffer_flip_x</a></td></tr>
+<tr><td class="num">539</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_flip_y.txt">MESA_framebuffer_flip_y</a></td></tr>
+<tr><td class="num">540</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_framebuffer_swap_xy.txt">MESA_framebuffer_swap_xy</a></td></tr>
+<tr><td class="num">541</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_pack_invert.txt">MESA_pack_invert</a></td></tr>
+<tr><td class="num">542</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_program_binary_formats.txt">MESA_program_binary_formats</a></td></tr>
+<tr><td class="num">543</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_resize_buffers.txt">MESA_resize_buffers</a></td></tr>
+<tr><td class="num">544</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_shader_integer_functions.txt">MESA_shader_integer_functions</a></td></tr>
+<tr><td class="num">545</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_tile_raster_order.txt">MESA_tile_raster_order</a></td></tr>
+<tr><td class="num">546</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_window_pos.txt">MESA_window_pos</a></td></tr>
+<tr><td class="num">547</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/MESA/MESA_ycbcr_texture.txt">MESA_ycbcr_texture</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">548</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_blend_equation_advanced_multi_draw_buffers.txt">NVX_blend_equation_advanced_multi_draw_buffers</a></td></tr>
+<tr><td class="num">549</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_conditional_render.txt">NVX_conditional_render</a></td></tr>
+<tr><td class="num">550</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NVX_gpu_memory_info.txt">NVX_gpu_memory_info</a></td></tr>
+<tr><td class="num">551</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_gpu_multicast2.txt">NVX_gpu_multicast2</a></td></tr>
+<tr><td class="num">552</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_linked_gpu_multicast.txt">NVX_linked_gpu_multicast</a></td></tr>
+<tr><td class="num">553</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NVX/NVX_progress_fence.txt">NVX_progress_fence</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">554</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_3dvision_settings.txt">NV_3dvision_settings</a></td></tr>
+<tr><td class="num">555</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_EGL_stream_consumer_external.txt">NV_EGL_stream_consumer_external</a></td></tr>
+<tr><td class="num">556</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_alpha_to_coverage_dither_control.txt">NV_alpha_to_coverage_dither_control</a></td></tr>
+<tr><td class="num">557</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bgr.txt">NV_bgr</a></td></tr>
+<tr><td class="num">558</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_multi_draw_indirect.txt">NV_bindless_multi_draw_indirect</a></td></tr>
+<tr><td class="num">559</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_multi_draw_indirect_count.txt">NV_bindless_multi_draw_indirect_count</a></td></tr>
+<tr><td class="num">560</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_texture.txt">NV_bindless_texture</a></td></tr>
+<tr><td class="num">561</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_equation_advanced.txt">NV_blend_equation_advanced</a></td></tr>
+<tr><td class="num">562</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_equation_advanced.txt">NV_blend_equation_advanced_coherent</a></td></tr>
+<tr><td class="num">563</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_minmax_factor.txt">NV_blend_minmax_factor</a></td></tr>
+<tr><td class="num">564</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_blend_square.txt">NV_blend_square</a></td></tr>
+<tr><td class="num">565</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_clip_space_w_scaling.txt">NV_clip_space_w_scaling</a></td></tr>
+<tr><td class="num">566</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_command_list.txt">NV_command_list</a></td></tr>
+<tr><td class="num">567</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_compute_program5.txt">NV_compute_program5</a></td></tr>
+<tr><td class="num">568</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_compute_shader_derivatives.txt">NV_compute_shader_derivatives</a></td></tr>
+<tr><td class="num">569</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conditional_render.txt">NV_conditional_render</a></td></tr>
+<tr><td class="num">570</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster.txt">NV_conservative_raster</a></td></tr>
+<tr><td class="num">571</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_dilate.txt">NV_conservative_raster_dilate</a></td></tr>
+<tr><td class="num">572</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_pre_snap.txt">NV_conservative_raster_pre_snap</a></td></tr>
+<tr><td class="num">573</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_pre_snap_triangles.txt">NV_conservative_raster_pre_snap_triangles</a></td></tr>
+<tr><td class="num">574</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_underestimation.txt">NV_conservative_raster_underestimation</a></td></tr>
+<tr><td class="num">575</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_buffer.txt">NV_copy_buffer</a></td></tr>
+<tr><td class="num">576</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_depth_to_color.txt">NV_copy_depth_to_color</a></td></tr>
+<tr><td class="num">577</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_copy_image.txt">NV_copy_image</a></td></tr>
+<tr><td class="num">578</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_deep_texture3D.txt">NV_deep_texture3D</a></td></tr>
+<tr><td class="num">579</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_depth_buffer_float.txt">NV_depth_buffer_float</a></td></tr>
+<tr><td class="num">580</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_depth_clamp.txt">NV_depth_clamp</a></td></tr>
+<tr><td class="num">581</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/EGL_NV_depth_nonlinear.txt">NV_depth_nonlinear</a></td></tr>
+<tr><td class="num">582</td><td>&nbsp;</td><td>NV_depth_range_unclamped</td></tr>
+<tr><td class="num">583</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_buffers.txt">NV_draw_buffers</a></td></tr>
+<tr><td class="num">584</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_instanced.txt">NV_draw_instanced</a></td></tr>
+<tr><td class="num">585</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_texture.txt">NV_draw_texture</a></td></tr>
+<tr><td class="num">586</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_draw_vulkan_image.txt">NV_draw_vulkan_image</a></td></tr>
+<tr><td class="num">587</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_evaluators.txt">NV_evaluators</a></td></tr>
+<tr><td class="num">588</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_explicit_attrib_location.txt">NV_explicit_attrib_location</a></td></tr>
+<tr><td class="num">589</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_explicit_multisample.txt">NV_explicit_multisample</a></td></tr>
+<tr><td class="num">590</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fbo_color_attachments.txt">NV_fbo_color_attachments</a></td></tr>
+<tr><td class="num">591</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fence.txt">NV_fence</a></td></tr>
+<tr><td class="num">592</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fill_rectangle.txt">NV_fill_rectangle</a></td></tr>
+<tr><td class="num">593</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_float_buffer.txt">NV_float_buffer</a></td></tr>
+<tr><td class="num">594</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fog_distance.txt">NV_fog_distance</a></td></tr>
+<tr><td class="num">595</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_coverage_to_color.txt">NV_fragment_coverage_to_color</a></td></tr>
+<tr><td class="num">596</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_program.txt">NV_fragment_program</a></td></tr>
+<tr><td class="num">597</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program2.txt">NV_fragment_program2</a></td></tr>
+<tr><td class="num">598</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_fragment_program4.txt">NV_fragment_program4</a></td></tr>
+<tr><td class="num">599</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program_option.txt">NV_fragment_program_option</a></td></tr>
+<tr><td class="num">600</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_shader_barycentric.txt">NV_fragment_shader_barycentric</a></td></tr>
+<tr><td class="num">601</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_fragment_shader_interlock.txt">NV_fragment_shader_interlock</a></td></tr>
+<tr><td class="num">602</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_blit.txt">NV_framebuffer_blit</a></td></tr>
+<tr><td class="num">603</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_mixed_samples.txt">NV_framebuffer_mixed_samples</a></td></tr>
+<tr><td class="num">604</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_framebuffer_multisample.txt">NV_framebuffer_multisample</a></td></tr>
+<tr><td class="num">605</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_framebuffer_multisample_coverage.txt">NV_framebuffer_multisample_coverage</a></td></tr>
+<tr><td class="num">606</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_generate_mipmap_sRGB.txt">NV_generate_mipmap_sRGB</a></td></tr>
+<tr><td class="num">607</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_program4.txt">NV_geometry_program4</a></td></tr>
+<tr><td class="num">608</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_shader4.txt">NV_geometry_shader4</a></td></tr>
+<tr><td class="num">609</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_geometry_shader_passthrough.txt">NV_geometry_shader_passthrough</a></td></tr>
+<tr><td class="num">610</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_multicast.txt">NV_gpu_multicast</a></td></tr>
+<tr><td class="num">611</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_gpu_program4.txt">NV_gpu_program4</a></td></tr>
+<tr><td class="num">612</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/gpu_program5.txt">NV_gpu_program5</a></td></tr>
+<tr><td class="num">613</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_program5_mem_extended.txt">NV_gpu_program5_mem_extended</a></td></tr>
+<tr><td class="num">614</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_program5.txt">NV_gpu_program_fp64</a></td></tr>
+<tr><td class="num">615</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_shader5.txt">NV_gpu_shader5</a></td></tr>
+<tr><td class="num">616</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_half_float.txt">NV_half_float</a></td></tr>
+<tr><td class="num">617</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_image_formats.txt">NV_image_formats</a></td></tr>
+<tr><td class="num">618</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_instanced_arrays.txt">NV_instanced_arrays</a></td></tr>
+<tr><td class="num">619</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_internalformat_sample_query.txt">NV_internalformat_sample_query</a></td></tr>
+<tr><td class="num">620</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_light_max_exponent.txt">NV_light_max_exponent</a></td></tr>
+<tr><td class="num">621</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_memory_attachment.txt">NV_memory_attachment</a></td></tr>
+<tr><td class="num">622</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_memory_object_sparse.txt">NV_memory_object_sparse</a></td></tr>
+<tr><td class="num">623</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_mesh_shader.txt">NV_mesh_shader</a></td></tr>
+<tr><td class="num">624</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_multisample_coverage.txt">NV_multisample_coverage</a></td></tr>
+<tr><td class="num">625</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_multisample_filter_hint.txt">NV_multisample_filter_hint</a></td></tr>
+<tr><td class="num">626</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_non_square_matrices.txt">NV_non_square_matrices</a></td></tr>
+<tr><td class="num">627</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_occlusion_query.txt">NV_occlusion_query</a></td></tr>
+<tr><td class="num">628</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pack_subimage.txt">NV_pack_subimage</a></td></tr>
+<tr><td class="num">629</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_depth_stencil.txt">NV_packed_depth_stencil</a></td></tr>
+<tr><td class="num">630</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_float.txt">NV_packed_float</a></td></tr>
+<tr><td class="num">631</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_packed_float.txt">NV_packed_float_linear</a></td></tr>
+<tr><td class="num">632</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_parameter_buffer_object.txt">NV_parameter_buffer_object</a></td></tr>
+<tr><td class="num">633</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_parameter_buffer_object2.txt">NV_parameter_buffer_object2</a></td></tr>
+<tr><td class="num">634</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_path_rendering.txt">NV_path_rendering</a></td></tr>
+<tr><td class="num">635</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_path_rendering_shared_edge.txt">NV_path_rendering_shared_edge</a></td></tr>
+<tr><td class="num">636</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pixel_buffer_object.txt">NV_pixel_buffer_object</a></td></tr>
+<tr><td class="num">637</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_pixel_data_range.txt">NV_pixel_data_range</a></td></tr>
+<tr><td class="num">638</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_platform_binary.txt">NV_platform_binary</a></td></tr>
+<tr><td class="num">639</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_point_sprite.txt">NV_point_sprite</a></td></tr>
+<tr><td class="num">640</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_polygon_mode.txt">NV_polygon_mode</a></td></tr>
+<tr><td class="num">641</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/present_video.txt">NV_present_video</a></td></tr>
+<tr><td class="num">642</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_restart.txt">NV_primitive_restart</a></td></tr>
+<tr><td class="num">643</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_shading_rate.txt">NV_primitive_shading_rate</a></td></tr>
+<tr><td class="num">644</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_query_resource_tag.txt">NV_query_resource_tag</a></td></tr>
+<tr><td class="num">645</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_buffer.txt">NV_read_buffer</a></td></tr>
+<tr><td class="num">646</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_buffer.txt">NV_read_buffer_front</a></td></tr>
+<tr><td class="num">647</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt">NV_read_depth</a></td></tr>
+<tr><td class="num">648</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt">NV_read_depth_stencil</a></td></tr>
+<tr><td class="num">649</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_read_depth_stencil.txt">NV_read_stencil</a></td></tr>
+<tr><td class="num">650</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_register_combiners.txt">NV_register_combiners</a></td></tr>
+<tr><td class="num">651</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_register_combiners2.txt">NV_register_combiners2</a></td></tr>
+<tr><td class="num">652</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_representative_fragment_test.txt">NV_representative_fragment_test</a></td></tr>
+<tr><td class="num">653</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_robustness_video_memory_purge.txt">NV_robustness_video_memory_purge</a></td></tr>
+<tr><td class="num">654</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sRGB_formats.txt">NV_sRGB_formats</a></td></tr>
+<tr><td class="num">655</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_locations.txt">NV_sample_locations</a></td></tr>
+<tr><td class="num">656</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_mask_override_coverage.txt">NV_sample_mask_override_coverage</a></td></tr>
+<tr><td class="num">657</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_scissor_exclusive.txt">NV_scissor_exclusive</a></td></tr>
+<tr><td class="num">658</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_counters.txt">NV_shader_atomic_counters</a></td></tr>
+<tr><td class="num">659</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_float.txt">NV_shader_atomic_float</a></td></tr>
+<tr><td class="num">660</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_float64.txt">NV_shader_atomic_float64</a></td></tr>
+<tr><td class="num">661</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_fp16_vector.txt">NV_shader_atomic_fp16_vector</a></td></tr>
+<tr><td class="num">662</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_atomic_int64.txt">NV_shader_atomic_int64</a></td></tr>
+<tr><td class="num">663</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_buffer_load.txt">NV_shader_buffer_load</a></td></tr>
+<tr><td class="num">664</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_noperspective_interpolation.txt">NV_shader_noperspective_interpolation</a></td></tr>
+<tr><td class="num">665</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_storage_buffer_object.txt">NV_shader_storage_buffer_object</a></td></tr>
+<tr><td class="num">666</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_subgroup_partitioned.txt">NV_shader_subgroup_partitioned</a></td></tr>
+<tr><td class="num">667</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_texture_footprint.txt">NV_shader_texture_footprint</a></td></tr>
+<tr><td class="num">668</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt">NV_shader_thread_group</a></td></tr>
+<tr><td class="num">669</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_shuffle.txt">NV_shader_thread_shuffle</a></td></tr>
+<tr><td class="num">670</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shading_rate_image.txt">NV_shading_rate_image</a></td></tr>
+<tr><td class="num">671</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shadow_samplers_array.txt">NV_shadow_samplers_array</a></td></tr>
+<tr><td class="num">672</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shadow_samplers_cube.txt">NV_shadow_samplers_cube</a></td></tr>
+<tr><td class="num">673</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_stereo_view_rendering.txt">NV_stereo_view_rendering</a></td></tr>
+<tr><td class="num">674</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/tessellation_program5.txt">NV_tessellation_program5</a></td></tr>
+<tr><td class="num">675</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texgen_emboss.txt">NV_texgen_emboss</a></td></tr>
+<tr><td class="num">676</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texgen_reflection.txt">NV_texgen_reflection</a></td></tr>
+<tr><td class="num">677</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_array.txt">NV_texture_array</a></td></tr>
+<tr><td class="num">678</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_barrier.txt">NV_texture_barrier</a></td></tr>
+<tr><td class="num">679</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_border_clamp.txt">NV_texture_border_clamp</a></td></tr>
+<tr><td class="num">680</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_latc.txt">NV_texture_compression_latc</a></td></tr>
+<tr><td class="num">681</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_s3tc.txt">NV_texture_compression_s3tc</a></td></tr>
+<tr><td class="num">682</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_s3tc_update.txt">NV_texture_compression_s3tc_update</a></td></tr>
+<tr><td class="num">683</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_compression_vtc.txt">NV_texture_compression_vtc</a></td></tr>
+<tr><td class="num">684</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_env_combine4.txt">NV_texture_env_combine4</a></td></tr>
+<tr><td class="num">685</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_expand_normal.txt">NV_texture_expand_normal</a></td></tr>
+<tr><td class="num">686</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_multisample.txt">NV_texture_multisample</a></td></tr>
+<tr><td class="num">687</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_npot_2D_mipmap.txt">NV_texture_npot_2D_mipmap</a></td></tr>
+<tr><td class="num">688</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_rectangle.txt">NV_texture_rectangle</a></td></tr>
+<tr><td class="num">689</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_rectangle_compressed.txt">NV_texture_rectangle_compressed</a></td></tr>
+<tr><td class="num">690</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader.txt">NV_texture_shader</a></td></tr>
+<tr><td class="num">691</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader2.txt">NV_texture_shader2</a></td></tr>
+<tr><td class="num">692</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_shader3.txt">NV_texture_shader3</a></td></tr>
+<tr><td class="num">693</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_timeline_semaphore.txt">NV_timeline_semaphore</a></td></tr>
+<tr><td class="num">694</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_transform_feedback.txt">NV_transform_feedback</a></td></tr>
+<tr><td class="num">695</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_transform_feedback2.txt">NV_transform_feedback2</a></td></tr>
+<tr><td class="num">696</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_uniform_buffer_unified_memory.txt">NV_uniform_buffer_unified_memory</a></td></tr>
+<tr><td class="num">697</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vdpau_interop.txt">NV_vdpau_interop</a></td></tr>
+<tr><td class="num">698</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vdpau_interop2.txt">NV_vdpau_interop2</a></td></tr>
+<tr><td class="num">699</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
+<tr><td class="num">700</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_array_range2.txt">NV_vertex_array_range2</a></td></tr>
+<tr><td class="num">701</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_attrib_integer_64bit.txt">NV_vertex_attrib_integer_64bit</a></td></tr>
+<tr><td class="num">702</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_buffer_unified_memory.txt">NV_vertex_buffer_unified_memory</a></td></tr>
+<tr><td class="num">703</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program.txt">NV_vertex_program</a></td></tr>
+<tr><td class="num">704</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program1_1.txt">NV_vertex_program1_1</a></td></tr>
+<tr><td class="num">705</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program2.txt">NV_vertex_program2</a></td></tr>
+<tr><td class="num">706</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program2_option.txt">NV_vertex_program2_option</a></td></tr>
+<tr><td class="num">707</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program3.txt">NV_vertex_program3</a></td></tr>
+<tr><td class="num">708</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_vertex_program4.txt">NV_vertex_program4</a></td></tr>
+<tr><td class="num">709</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_video_capture.txt">NV_video_capture</a></td></tr>
+<tr><td class="num">710</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array.txt">NV_viewport_array</a></td></tr>
+<tr><td class="num">711</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt">NV_viewport_array2</a></td></tr>
+<tr><td class="num">712</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_swizzle.txt">NV_viewport_swizzle</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">713</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image.txt">OES_EGL_image</a></td></tr>
+<tr><td class="num">714</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt">OES_EGL_image_external</a></td></tr>
+<tr><td class="num">715</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external_essl3.txt">OES_EGL_image_external_essl3</a></td></tr>
+<tr><td class="num">716</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_equation_separate.txt">OES_blend_equation_separate</a></td></tr>
+<tr><td class="num">717</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_func_separate.txt">OES_blend_func_separate</a></td></tr>
+<tr><td class="num">718</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_blend_subtract.txt">OES_blend_subtract</a></td></tr>
+<tr><td class="num">719</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_byte_coordinates.txt">OES_byte_coordinates</a></td></tr>
+<tr><td class="num">720</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt">OES_compressed_ETC1_RGB8_texture</a></td></tr>
+<tr><td class="num">721</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_paletted_texture.txt">OES_compressed_paletted_texture</a></td></tr>
+<tr><td class="num">722</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_copy_image.txt">OES_copy_image</a></td></tr>
+<tr><td class="num">723</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth24.txt">OES_depth24</a></td></tr>
+<tr><td class="num">724</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth32.txt">OES_depth32</a></td></tr>
+<tr><td class="num">725</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt">OES_depth_texture</a></td></tr>
+<tr><td class="num">726</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture_cube_map.txt">OES_depth_texture_cube_map</a></td></tr>
+<tr><td class="num">727</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_buffers_indexed.txt">OES_draw_buffers_indexed</a></td></tr>
+<tr><td class="num">728</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_texture.txt">OES_draw_texture</a></td></tr>
+<tr><td class="num">729</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_element_index_uint.txt">OES_element_index_uint</a></td></tr>
+<tr><td class="num">730</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_extended_matrix_palette.txt">OES_extended_matrix_palette</a></td></tr>
+<tr><td class="num">731</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fbo_render_mipmap.txt">OES_fbo_render_mipmap</a></td></tr>
+<tr><td class="num">732</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fragment_precision_high.txt">OES_fragment_precision_high</a></td></tr>
+<tr><td class="num">733</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_framebuffer_object.txt">OES_framebuffer_object</a></td></tr>
+<tr><td class="num">734</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_geometry_shader.txt">OES_geometry_point_size</a></td></tr>
+<tr><td class="num">735</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_geometry_shader.txt">OES_geometry_shader</a></td></tr>
+<tr><td class="num">736</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_get_program_binary.txt">OES_get_program_binary</a></td></tr>
+<tr><td class="num">737</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_gpu_shader5.txt">OES_gpu_shader5</a></td></tr>
+<tr><td class="num">738</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_mapbuffer.txt">OES_mapbuffer</a></td></tr>
+<tr><td class="num">739</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_get.txt">OES_matrix_get</a></td></tr>
+<tr><td class="num">740</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_palette.txt">OES_matrix_palette</a></td></tr>
+<tr><td class="num">741</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_packed_depth_stencil.txt">OES_packed_depth_stencil</a></td></tr>
+<tr><td class="num">742</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_size_array.txt">OES_point_size_array</a></td></tr>
+<tr><td class="num">743</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_sprite.txt">OES_point_sprite</a></td></tr>
+<tr><td class="num">744</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_read_format.txt">OES_read_format</a></td></tr>
+<tr><td class="num">745</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_required_internalformat.txt">OES_required_internalformat</a></td></tr>
+<tr><td class="num">746</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_rgb8_rgba8.txt">OES_rgb8_rgba8</a></td></tr>
+<tr><td class="num">747</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_sample_shading.txt">OES_sample_shading</a></td></tr>
+<tr><td class="num">748</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_sample_variables.txt">OES_sample_variables</a></td></tr>
+<tr><td class="num">749</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_image_atomic.txt">OES_shader_image_atomic</a></td></tr>
+<tr><td class="num">750</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_io_blocks.txt">OES_shader_io_blocks</a></td></tr>
+<tr><td class="num">751</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_shader_multisample_interpolation.txt">OES_shader_multisample_interpolation</a></td></tr>
+<tr><td class="num">752</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_single_precision.txt">OES_single_precision</a></td></tr>
+<tr><td class="num">753</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_standard_derivatives.txt">OES_standard_derivatives</a></td></tr>
+<tr><td class="num">754</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil1.txt">OES_stencil1</a></td></tr>
+<tr><td class="num">755</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil4.txt">OES_stencil4</a></td></tr>
+<tr><td class="num">756</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_stencil8.txt">OES_stencil8</a></td></tr>
+<tr><td class="num">757</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_surfaceless_context.txt">OES_surfaceless_context</a></td></tr>
+<tr><td class="num">758</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_tessellation_shader.txt">OES_tessellation_point_size</a></td></tr>
+<tr><td class="num">759</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_tessellation_shader.txt">OES_tessellation_shader</a></td></tr>
+<tr><td class="num">760</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_3D.txt">OES_texture_3D</a></td></tr>
+<tr><td class="num">761</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_border_clamp.txt">OES_texture_border_clamp</a></td></tr>
+<tr><td class="num">762</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_buffer.txt">OES_texture_buffer</a></td></tr>
+<tr><td class="num">763</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_compression_astc.txt">OES_texture_compression_astc</a></td></tr>
+<tr><td class="num">764</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_cube_map.txt">OES_texture_cube_map</a></td></tr>
+<tr><td class="num">765</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_cube_map_array.txt">OES_texture_cube_map_array</a></td></tr>
+<tr><td class="num">766</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_env_crossbar.txt">OES_texture_env_crossbar</a></td></tr>
+<tr><td class="num">767</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_mirrored_repeat.txt">OES_texture_mirrored_repeat</a></td></tr>
+<tr><td class="num">768</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_npot.txt">OES_texture_npot</a></td></tr>
+<tr><td class="num">769</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_stencil8.txt">OES_texture_stencil8</a></td></tr>
+<tr><td class="num">770</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_storage_multisample_2d_array.txt">OES_texture_storage_multisample_2d_array</a></td></tr>
+<tr><td class="num">771</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_texture_view.txt">OES_texture_view</a></td></tr>
+<tr><td class="num">772</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_array_object.txt">OES_vertex_array_object</a></td></tr>
+<tr><td class="num">773</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_half_float.txt">OES_vertex_half_float</a></td></tr>
+<tr><td class="num">774</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_vertex_type_10_10_10_2.txt">OES_vertex_type_10_10_10_2</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">775</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OML/OML_interlace.txt">OML_interlace</a></td></tr>
+<tr><td class="num">776</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OML/OML_resample.txt">OML_resample</a></td></tr>
+<tr><td class="num">777</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OML/OML_subsample.txt">OML_subsample</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">778</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview.txt">OVR_multiview</a></td></tr>
+<tr><td class="num">779</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview2.txt">OVR_multiview2</a></td></tr>
+<tr><td class="num">780</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt">OVR_multiview_multisampled_render_to_texture</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">781</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/PGI/PGI_misc_hints.txt">PGI_misc_hints</a></td></tr>
+<tr><td class="num">782</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/PGI/PGI_vertex_hints.txt">PGI_vertex_hints</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">783</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_YUV_texture_gather.txt">QCOM_YUV_texture_gather</a></td></tr>
+<tr><td class="num">784</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_alpha_test.txt">QCOM_alpha_test</a></td></tr>
+<tr><td class="num">785</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_binning_control.txt">QCOM_binning_control</a></td></tr>
+<tr><td class="num">786</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_driver_control.txt">QCOM_driver_control</a></td></tr>
+<tr><td class="num">787</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_extended_get.txt">QCOM_extended_get</a></td></tr>
+<tr><td class="num">788</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_extended_get2.txt">QCOM_extended_get2</a></td></tr>
+<tr><td class="num">789</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_frame_extrapolation.txt">QCOM_frame_extrapolation</a></td></tr>
+<tr><td class="num">790</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_framebuffer_foveated.txt">QCOM_framebuffer_foveated</a></td></tr>
+<tr><td class="num">791</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_motion_estimation.txt">QCOM_motion_estimation</a></td></tr>
+<tr><td class="num">792</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_performance_monitor_global_mode.txt">QCOM_perfmon_global_mode</a></td></tr>
+<tr><td class="num">793</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_render_shared_exponent.txt">QCOM_render_shared_exponent</a></td></tr>
+<tr><td class="num">794</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shader_framebuffer_fetch_noncoherent.txt">QCOM_shader_framebuffer_fetch_noncoherent</a></td></tr>
+<tr><td class="num">795</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shader_framebuffer_fetch_rate.txt">QCOM_shader_framebuffer_fetch_rate</a></td></tr>
+<tr><td class="num">796</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_shading_rate.txt">QCOM_shading_rate</a></td></tr>
+<tr><td class="num">797</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated.txt">QCOM_texture_foveated</a></td></tr>
+<tr><td class="num">798</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated2.txt">QCOM_texture_foveated2</a></td></tr>
+<tr><td class="num">799</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_texture_foveated_subsampled_layout.txt">QCOM_texture_foveated_subsampled_layout</a></td></tr>
+<tr><td class="num">800</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_tiled_rendering.txt">QCOM_tiled_rendering</a></td></tr>
+<tr><td class="num">801</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/QCOM/QCOM_writeonly_rendering.txt">QCOM_writeonly_rendering</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">802</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/ES1_0_compatibility.txt">REGAL_ES1_0_compatibility</a></td></tr>
+<tr><td class="num">803</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/ES1_1_compatibility.txt">REGAL_ES1_1_compatibility</a></td></tr>
+<tr><td class="num">804</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/enable.txt">REGAL_enable</a></td></tr>
+<tr><td class="num">805</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/error_string.txt">REGAL_error_string</a></td></tr>
+<tr><td class="num">806</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/extension_query.txt">REGAL_extension_query</a></td></tr>
+<tr><td class="num">807</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/log.txt">REGAL_log</a></td></tr>
+<tr><td class="num">808</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REGAL/proc_address.txt">REGAL_proc_address</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">809</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/REND/REND_screen_coordinates.txt">REND_screen_coordinates</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">810</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/S3/S3_s3tc.txt">S3_s3tc</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">811</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_clip_band_hint.txt">SGIS_clip_band_hint</a></td></tr>
+<tr><td class="num">812</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/GLX_SGIS_color_range.txt">SGIS_color_range</a></td></tr>
+<tr><td class="num">813</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_detail_texture.txt">SGIS_detail_texture</a></td></tr>
+<tr><td class="num">814</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_fog_function.txt">SGIS_fog_function</a></td></tr>
+<tr><td class="num">815</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_generate_mipmap.txt">SGIS_generate_mipmap</a></td></tr>
+<tr><td class="num">816</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_line_texgen.txt">SGIS_line_texgen</a></td></tr>
+<tr><td class="num">817</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_multisample.txt">SGIS_multisample</a></td></tr>
+<tr><td class="num">818</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_multitexture.txt">SGIS_multitexture</a></td></tr>
+<tr><td class="num">819</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_pixel_texture.txt">SGIS_pixel_texture</a></td></tr>
+<tr><td class="num">820</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_point_line_texgen.txt">SGIS_point_line_texgen</a></td></tr>
+<tr><td class="num">821</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_shared_multisample.txt">SGIS_shared_multisample</a></td></tr>
+<tr><td class="num">822</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_sharpen_texture.txt">SGIS_sharpen_texture</a></td></tr>
+<tr><td class="num">823</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture4D.txt">SGIS_texture4D</a></td></tr>
+<tr><td class="num">824</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_border_clamp.txt">SGIS_texture_border_clamp</a></td></tr>
+<tr><td class="num">825</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_edge_clamp.txt">SGIS_texture_edge_clamp</a></td></tr>
+<tr><td class="num">826</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_filter4.txt">SGIS_texture_filter4</a></td></tr>
+<tr><td class="num">827</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_lod.txt">SGIS_texture_lod</a></td></tr>
+<tr><td class="num">828</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_select.txt">SGIS_texture_select</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">829</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async.txt">SGIX_async</a></td></tr>
+<tr><td class="num">830</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async_histogram.txt">SGIX_async_histogram</a></td></tr>
+<tr><td class="num">831</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_async_pixel.txt">SGIX_async_pixel</a></td></tr>
+<tr><td class="num">832</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_g_instruments.txt">SGIX_bali_g_instruments</a></td></tr>
+<tr><td class="num">833</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_r_instruments.txt">SGIX_bali_r_instruments</a></td></tr>
+<tr><td class="num">834</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_bali_timer_instruments.txt">SGIX_bali_timer_instruments</a></td></tr>
+<tr><td class="num">835</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_alpha_minmax.txt">SGIX_blend_alpha_minmax</a></td></tr>
+<tr><td class="num">836</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_cadd.txt">SGIX_blend_cadd</a></td></tr>
+<tr><td class="num">837</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_blend_cmultiply.txt">SGIX_blend_cmultiply</a></td></tr>
+<tr><td class="num">838</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_calligraphic_fragment.txt">SGIX_calligraphic_fragment</a></td></tr>
+<tr><td class="num">839</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_clipmap.txt">SGIX_clipmap</a></td></tr>
+<tr><td class="num">840</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_color_matrix_accuracy.txt">SGIX_color_matrix_accuracy</a></td></tr>
+<tr><td class="num">841</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_color_table_index_mode.txt">SGIX_color_table_index_mode</a></td></tr>
+<tr><td class="num">842</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_complex_polar.txt">SGIX_complex_polar</a></td></tr>
+<tr><td class="num">843</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_convolution_accuracy.txt">SGIX_convolution_accuracy</a></td></tr>
+<tr><td class="num">844</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_cube_map.txt">SGIX_cube_map</a></td></tr>
+<tr><td class="num">845</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_cylinder_texgen.txt">SGIX_cylinder_texgen</a></td></tr>
+<tr><td class="num">846</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_datapipe.txt">SGIX_datapipe</a></td></tr>
+<tr><td class="num">847</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_decimation.txt">SGIX_decimation</a></td></tr>
+<tr><td class="num">848</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_depth_pass_instrument.txt">SGIX_depth_pass_instrument</a></td></tr>
+<tr><td class="num">849</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_depth_texture.txt">SGIX_depth_texture</a></td></tr>
+<tr><td class="num">850</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_dvc.txt">SGIX_dvc</a></td></tr>
+<tr><td class="num">851</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_flush_raster.txt">SGIX_flush_raster</a></td></tr>
+<tr><td class="num">852</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_blend.txt">SGIX_fog_blend</a></td></tr>
+<tr><td class="num">853</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_factor_to_alpha.txt">SGIX_fog_factor_to_alpha</a></td></tr>
+<tr><td class="num">854</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_layers.txt">SGIX_fog_layers</a></td></tr>
+<tr><td class="num">855</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_offset.txt">SGIX_fog_offset</a></td></tr>
+<tr><td class="num">856</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_patchy.txt">SGIX_fog_patchy</a></td></tr>
+<tr><td class="num">857</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_scale.txt">SGIX_fog_scale</a></td></tr>
+<tr><td class="num">858</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fog_texture.txt">SGIX_fog_texture</a></td></tr>
+<tr><td class="num">859</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragment_lighting_space.txt">SGIX_fragment_lighting_space</a></td></tr>
+<tr><td class="num">860</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragment_specular_lighting.txt">SGIX_fragment_specular_lighting</a></td></tr>
+<tr><td class="num">861</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_fragments_instrument.txt">SGIX_fragments_instrument</a></td></tr>
+<tr><td class="num">862</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_framezoom.txt">SGIX_framezoom</a></td></tr>
+<tr><td class="num">863</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_icc_texture.txt">SGIX_icc_texture</a></td></tr>
+<tr><td class="num">864</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_igloo_interface.txt">SGIX_igloo_interface</a></td></tr>
+<tr><td class="num">865</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_image_compression.txt">SGIX_image_compression</a></td></tr>
+<tr><td class="num">866</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_impact_pixel_texture.txt">SGIX_impact_pixel_texture</a></td></tr>
+<tr><td class="num">867</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_instrument_error.txt">SGIX_instrument_error</a></td></tr>
+<tr><td class="num">868</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_interlace.txt">SGIX_interlace</a></td></tr>
+<tr><td class="num">869</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ir_instrument1.txt">SGIX_ir_instrument1</a></td></tr>
+<tr><td class="num">870</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_line_quality_hint.txt">SGIX_line_quality_hint</a></td></tr>
+<tr><td class="num">871</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_list_priority.txt">SGIX_list_priority</a></td></tr>
+<tr><td class="num">872</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_mpeg1.txt">SGIX_mpeg1</a></td></tr>
+<tr><td class="num">873</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_mpeg2.txt">SGIX_mpeg2</a></td></tr>
+<tr><td class="num">874</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_nonlinear_lighting_pervertex.txt">SGIX_nonlinear_lighting_pervertex</a></td></tr>
+<tr><td class="num">875</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_nurbs_eval.txt">SGIX_nurbs_eval</a></td></tr>
+<tr><td class="num">876</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_occlusion_instrument.txt">SGIX_occlusion_instrument</a></td></tr>
+<tr><td class="num">877</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_packed_6bytes.txt">SGIX_packed_6bytes</a></td></tr>
+<tr><td class="num">878</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture.txt">SGIX_pixel_texture</a></td></tr>
+<tr><td class="num">879</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture_bits.txt">SGIX_pixel_texture_bits</a></td></tr>
+<tr><td class="num">880</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_texture_lod.txt">SGIX_pixel_texture_lod</a></td></tr>
+<tr><td class="num">881</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_pixel_tiles.txt">SGIX_pixel_tiles</a></td></tr>
+<tr><td class="num">882</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_polynomial_ffd.txt">SGIX_polynomial_ffd</a></td></tr>
+<tr><td class="num">883</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_quad_mesh.txt">SGIX_quad_mesh</a></td></tr>
+<tr><td class="num">884</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_reference_plane.txt">SGIX_reference_plane</a></td></tr>
+<tr><td class="num">885</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_resample.txt">SGIX_resample</a></td></tr>
+<tr><td class="num">886</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_scalebias_hint.txt">SGIX_scalebias_hint</a></td></tr>
+<tr><td class="num">887</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/shadow.txt">SGIX_shadow</a></td></tr>
+<tr><td class="num">888</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_shadow_ambient.txt">SGIX_shadow_ambient</a></td></tr>
+<tr><td class="num">889</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_slim.txt">SGIX_slim</a></td></tr>
+<tr><td class="num">890</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_spotlight_cutoff.txt">SGIX_spotlight_cutoff</a></td></tr>
+<tr><td class="num">891</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_sprite.txt">SGIX_sprite</a></td></tr>
+<tr><td class="num">892</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_subdiv_patch.txt">SGIX_subdiv_patch</a></td></tr>
+<tr><td class="num">893</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_subsample.txt">SGIX_subsample</a></td></tr>
+<tr><td class="num">894</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_tag_sample_buffer.txt">SGIX_tag_sample_buffer</a></td></tr>
+<tr><td class="num">895</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_add_env.txt">SGIX_texture_add_env</a></td></tr>
+<tr><td class="num">896</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_coordinate_clamp.txt">SGIX_texture_coordinate_clamp</a></td></tr>
+<tr><td class="num">897</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_lod_bias.txt">SGIX_texture_lod_bias</a></td></tr>
+<tr><td class="num">898</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_mipmap_anisotropic.txt">SGIX_texture_mipmap_anisotropic</a></td></tr>
+<tr><td class="num">899</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_multi_buffer.txt">SGIX_texture_multi_buffer</a></td></tr>
+<tr><td class="num">900</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_phase.txt">SGIX_texture_phase</a></td></tr>
+<tr><td class="num">901</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_range.txt">SGIX_texture_range</a></td></tr>
+<tr><td class="num">902</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_scale_bias.txt">SGIX_texture_scale_bias</a></td></tr>
+<tr><td class="num">903</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_texture_supersample.txt">SGIX_texture_supersample</a></td></tr>
+<tr><td class="num">904</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vector_ops.txt">SGIX_vector_ops</a></td></tr>
+<tr><td class="num">905</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_array_object.txt">SGIX_vertex_array_object</a></td></tr>
+<tr><td class="num">906</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_preclip.txt">SGIX_vertex_preclip</a></td></tr>
+<tr><td class="num">907</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_vertex_preclip.txt">SGIX_vertex_preclip_hint</a></td></tr>
+<tr><td class="num">908</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcb.txt">SGIX_ycrcb</a></td></tr>
+<tr><td class="num">909</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcb_subsample.txt">SGIX_ycrcb_subsample</a></td></tr>
+<tr><td class="num">910</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIX/SGIX_ycrcba.txt">SGIX_ycrcba</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">911</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_color_matrix.txt">SGI_color_matrix</a></td></tr>
+<tr><td class="num">912</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_color_table.txt">SGI_color_table</a></td></tr>
+<tr><td class="num">913</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_complex.txt">SGI_complex</a></td></tr>
+<tr><td class="num">914</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_complex_type.txt">SGI_complex_type</a></td></tr>
+<tr><td class="num">915</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_fft.txt">SGI_fft</a></td></tr>
+<tr><td class="num">916</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGI/SGI_texture_color_table.txt">SGI_texture_color_table</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">917</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUNX/SUNX_constant_data.txt">SUNX_constant_data</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">918</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_convolution_border_modes.txt">SUN_convolution_border_modes</a></td></tr>
+<tr><td class="num">919</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_global_alpha.txt">SUN_global_alpha</a></td></tr>
+<tr><td class="num">920</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_mesh_array.txt">SUN_mesh_array</a></td></tr>
+<tr><td class="num">921</td><td>&nbsp;</td><td><a href="http://wwws.sun.com/software/graphics/opengl/extensions/gl_sun_read_video_pixels.txt">SUN_read_video_pixels</a></td></tr>
+<tr><td class="num">922</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_slice_accum.txt">SUN_slice_accum</a></td></tr>
+<tr><td class="num">923</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_triangle_list.txt">SUN_triangle_list</a></td></tr>
+<tr><td class="num">924</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SUN/SUN_vertex.txt">SUN_vertex</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">925</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/VIV/VIV_shader_binary.txt">VIV_shader_binary</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">926</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_phong_shading.txt">WIN_phong_shading</a></td></tr>
+<tr><td class="num">927</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_scene_markerXXX.txt">WIN_scene_markerXXX</a></td></tr>
+<tr><td class="num">928</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/WIN/WIN_specular_fog.txt">WIN_specular_fog</a></td></tr>
+<tr><td class="num">929</td><td>&nbsp;</td><td><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_16zy.asp">WIN_swap_hint</a></td></tr>
+</table>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/glew.png b/glew/doc/glew.png
new file mode 100644
index 0000000..d46550f
--- /dev/null
+++ b/glew/doc/glew.png
Binary files differ
diff --git a/glew/doc/glew.txt b/glew/doc/glew.txt
new file mode 100644
index 0000000..67b4aff
--- /dev/null
+++ b/glew/doc/glew.txt
@@ -0,0 +1,29 @@
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2016, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/glew/doc/glxew.html b/glew/doc/glxew.html
new file mode 100644
index 0000000..6054051
--- /dev/null
+++ b/glew/doc/glxew.html
@@ -0,0 +1,188 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Supported GLX Extensions</h2>
+
+<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
+<tr><td class="num">1</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">3DFX_multisample</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">2</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">AMD_gpu_association</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">3</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_context_flush_control</a></td></tr>
+<tr><td class="num">4</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_create_context</a></td></tr>
+<tr><td class="num">5</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_create_context_no_error</a></td></tr>
+<tr><td class="num">6</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_create_context_profile</a></td></tr>
+<tr><td class="num">7</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_create_context_robustness</a></td></tr>
+<tr><td class="num">8</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_fbconfig_float</a></td></tr>
+<tr><td class="num">9</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">10</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.txt">ARB_get_proc_address</a></td></tr>
+<tr><td class="num">11</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_multisample</a></td></tr>
+<tr><td class="num">12</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_robustness_application_isolation</a></td></tr>
+<tr><td class="num">13</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_robustness_share_group_isolation</a></td></tr>
+<tr><td class="num">14</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">ARB_vertex_buffer_object</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">15</td><td>&nbsp;</td><td>ATI_pixel_format_float</td></tr>
+<tr><td class="num">16</td><td>&nbsp;</td><td>ATI_render_texture</td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">17</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_buffer_age</a></td></tr>
+<tr><td class="num">18</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_context_priority</a></td></tr>
+<tr><td class="num">19</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_create_context_es2_profile</a></td></tr>
+<tr><td class="num">20</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_create_context_es_profile</a></td></tr>
+<tr><td class="num">21</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_fbconfig_packed_float</a></td></tr>
+<tr><td class="num">22</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">23</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_get_drawable_type</a></td></tr>
+<tr><td class="num">24</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_import_context</a></td></tr>
+<tr><td class="num">25</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_libglvnd</a></td></tr>
+<tr><td class="num">26</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_no_config_context</a></td></tr>
+<tr><td class="num">27</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_scene_marker.txt">EXT_scene_marker</a></td></tr>
+<tr><td class="num">28</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_stereo_tree</a></td></tr>
+<tr><td class="num">29</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_swap_control</a></td></tr>
+<tr><td class="num">30</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_swap_control_tear</a></td></tr>
+<tr><td class="num">31</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_texture_from_pixmap</a></td></tr>
+<tr><td class="num">32</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_visual_info</a></td></tr>
+<tr><td class="num">33</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">EXT_visual_rating</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">34</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">INTEL_swap_event</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">35</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_agp_offset</a></td></tr>
+<tr><td class="num">36</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_copy_sub_buffer</a></td></tr>
+<tr><td class="num">37</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_pixmap_colormap</a></td></tr>
+<tr><td class="num">38</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_query_renderer</a></td></tr>
+<tr><td class="num">39</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_release_buffers</a></td></tr>
+<tr><td class="num">40</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_set_3dfx_mode</a></td></tr>
+<tr><td class="num">41</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">MESA_swap_control</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">42</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_copy_buffer</a></td></tr>
+<tr><td class="num">43</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_copy_image</a></td></tr>
+<tr><td class="num">44</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_delay_before_swap</a></td></tr>
+<tr><td class="num">45</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_float_buffer</a></td></tr>
+<tr><td class="num">46</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_multigpu_context</a></td></tr>
+<tr><td class="num">47</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_multisample_coverage</a></td></tr>
+<tr><td class="num">48</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_present_video</a></td></tr>
+<tr><td class="num">49</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_robustness_video_memory_purge</a></td></tr>
+<tr><td class="num">50</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_swap_group</a></td></tr>
+<tr><td class="num">51</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/NV/vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
+<tr><td class="num">52</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_video_capture</a></td></tr>
+<tr><td class="num">53</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">NV_video_out</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">54</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">OML_swap_method</a></td></tr>
+<tr><td class="num">55</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">OML_sync_control</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">56</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIS_blended_overlay</a></td></tr>
+<tr><td class="num">57</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/SGIS/GLX_SGIS_color_range.txt">SGIS_color_range</a></td></tr>
+<tr><td class="num">58</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIS_multisample</a></td></tr>
+<tr><td class="num">59</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIS_shared_multisample</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">60</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_fbconfig</a></td></tr>
+<tr><td class="num">61</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/hyperpipe_group.txt">SGIX_hyperpipe</a></td></tr>
+<tr><td class="num">62</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_pbuffer</a></td></tr>
+<tr><td class="num">63</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_swap_barrier</a></td></tr>
+<tr><td class="num">64</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_swap_group</a></td></tr>
+<tr><td class="num">65</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_video_resize</a></td></tr>
+<tr><td class="num">66</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGIX_visual_select_group</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">67</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGI_cushion</a></td></tr>
+<tr><td class="num">68</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGI_make_current_read</a></td></tr>
+<tr><td class="num">69</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGI_swap_control</a></td></tr>
+<tr><td class="num">70</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SGI_video_sync</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">71</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf">SUN_get_transparent_index</a></td></tr>
+<tr><td class="num">72</td><td>&nbsp;</td><td><a href="http://wwws.sun.com/software/graphics/opengl/extensions/glx_sun_video_resize.txt">SUN_video_resize</a></td></tr>
+</table>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/gpl.txt b/glew/doc/gpl.txt
new file mode 100644
index 0000000..b7b5f53
--- /dev/null
+++ b/glew/doc/gpl.txt
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/glew/doc/index.html b/glew/doc/index.html
new file mode 100644
index 0000000..78ce7a1
--- /dev/null
+++ b/glew/doc/index.html
@@ -0,0 +1,213 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center">Download</td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<p>
+The OpenGL Extension Wrangler Library (GLEW) is a cross-platform
+open-source C/C++ extension loading library. GLEW provides efficient
+run-time mechanisms for determining which OpenGL extensions are
+supported on the target platform. OpenGL core and extension
+functionality is exposed in a single header file. GLEW has been
+tested on a variety of operating systems, including Windows, Linux,
+Mac OS X, FreeBSD, Irix, and Solaris.
+</p>
+
+<h2>Downloads</h2>
+<p>
+<a href="http://sourceforge.net/projects/glew/">GLEW</a> is distributed
+as source and precompiled binaries.<br/>
+The latest release is
+<a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a>[03-15-20]:
+</p>
+<p>
+</p>
+<p>
+<table border="1" cellpadding="5" cellspacing="0" bgcolor="#f0f0f0" align="center">
+<tr>
+<td>
+<table border="0" cellpadding="3" cellspacing="0">
+<tr>
+<td></td>
+<td align="right"><b>Source</b></td>
+<td></td>
+<td align="left">
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.zip">ZIP</a>&nbsp;|&nbsp;
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz">TGZ</a></td>
+<td></td>
+</tr>
+<tr>
+<td></td>
+<td align="right"><b>Binaries</b></td>
+<td></td>
+<td align="left">
+<a href="https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0-win32.zip">Windows 32-bit and 64-bit</a>
+</td>
+<td></td>
+</tr>
+</table>
+</tr>
+</table>
+
+<p></p>
+<p>
+An up-to-date copy is also available using <a href="http://git-scm.com/">git</a>:
+</p>
+<ul>
+<li><a href="https://github.com/nigels-com/glew">github</a><br/>
+<tt>git clone https://github.com/nigels-com/glew.git glew</tt><br/>&nbsp;</li>
+</ul>
+
+<h2>Supported Extensions</h2>
+<p>
+The latest release contains support for OpenGL 4.6, compatibility and forward-compatible contexts and the following extensions:
+</p>
+<ul>
+<li><a href="glew.html">OpenGL extensions</a>
+<li><a href="wglew.html">WGL extensions</a>
+<li><a href="glxew.html">GLX extensions</a>
+</ul>
+
+<h2>News</h2>
+<ul>
+<li>[03-15-20] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">GLEW 2.2.0</a> new extensions and minor bug fixes</li>
+<li>[07-31-17] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.1.0">GLEW 2.1.0</a> adds support for OpenGL 4.6, new extensions and minor bug fixes</li>
+<li>[07-24-16] <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.0.0">GLEW 2.0.0</a> adds support for forward-compatible contexts, adds new extensions, OSMesa and EGL support, MX discontinued and minor bug fixes</li>
+<li>[08-10-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.13.0/">GLEW 1.13.0</a> adds support for new extensions, fixes minor bugs</li>
+<li>[26-01-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.12.0/">GLEW 1.12.0</a> fixes minor bugs and adds new extensions</li>
+<li>[08-11-14] <a href="https://sourceforge.net/projects/glew/files/glew/1.11.0/">GLEW 1.11.0</a> adds support for OpenGL 4.5, new extensions</li>
+<li>[07-22-13] <a href="https://sourceforge.net/projects/glew/files/glew/1.10.0/">GLEW 1.10.0</a> adds support for OpenGL 4.4, new extensions</li>
+<li>[08-06-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.9.0/">GLEW 1.9.0</a> adds support for OpenGL 4.3, new extensions</li>
+<li>[07-17-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.8.0/">GLEW 1.8.0</a> fixes minor bugs and adds new extensions</li>
+<li>[08-26-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.7.0/">GLEW 1.7.0</a> adds support for OpenGL 4.2, new extensions, fixes bugs</li>
+<li>[04-27-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.6.0/">GLEW 1.6.0</a> fixes minor bugs and adds eight new extensions</li>
+<li>[01-31-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.8/">GLEW 1.5.8</a> fixes minor bugs and adds two new extensions</li>
+<li>[11-03-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.7/">GLEW 1.5.7</a> fixes minor bugs and adds one new extension</li>
+<li>[09-07-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.6/">GLEW 1.5.6</a> adds support for OpenGL 4.1, fixes bugs</li>
+<li>[07-13-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.5/">GLEW 1.5.5</a> fixes minor bugs and adds new extensions</li>
+<li>[04-21-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.4/">GLEW 1.5.4</a> adds support for OpenGL 3.3, OpenGL 4.0 and new extensions, fixes bugs</li>
+<li>[02-28-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.3/">GLEW 1.5.3</a> fixes minor bugs and adds three new extensions</li>
+<li>[12-31-09] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.2/">GLEW 1.5.2</a> adds support for OpenGL 3.1, OpenGL 3.2 and new extensions</li>
+<li>[11-03-08] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=637800">GLEW 1.5.1</a> adds support for OpenGL 3.0 and 31 new extensions</li>
+<li>[12-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=564464">GLEW 1.5.0</a> is released under less restrictive licenses</li>
+<li>[04-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=504079">GLEW 1.4.0</a> is released</li>
+<li>[03-08-07] GLEW is included in the <a href="http://developer.nvidia.com/object/sdk_home.html">NVIDIA OpenGL SDK</a></li>
+<li>[03-04-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=491113">GLEW 1.3.6</a> is released</li>
+<li>[02-28-07] <a href="http://glew.svn.sourceforge.net/svnroot/glew/trunk/glew/">Repository</a> is migrated to SVN</li>
+<li>[02-25-07] GLEW is included in the <a href="http://www.opengl.org/sdk/">OpenGL SDK</a></li>
+<li>[11-21-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=465334">GLEW 1.3.5</a> adds OpenGL 2.1 and NVIDIA G80 extensions</li>
+<li>[03-04-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=398455">GLEW 1.3.4</a> adds support for five new extensions</li>
+<li>[05-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=327647">GLEW 1.3.3</a> is released</li>
+<li>[03-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=313345">GLEW 1.3.2</a> adds support for GL_APPLE_pixel_buffer</li>
+<li>[02-11-05] <a href="http://gljava.sourceforge.net/">gljava</a> and <a href="http://sdljava.sourceforge.net/">sdljava</a> provide a Java binding to OpenGL via GLEW</li>
+<li>[02-02-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=302049">GLEW 1.3.1</a> adds support for <a href="http://www.opengl.org/documentation/extensions/EXT_framebuffer_object.txt">GL_EXT_framebuffer_object</a></li>
+<li>[01-04-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=294527">GLEW 1.3.0</a> adds core OpenGL 2.0 support plus many enhancements</li>
+<li>[12-22-04] <a href="http://glewpy.sf.net/">GLEWpy</a> Python wrapper announced</li>
+<li>[12-12-04] <a href="https://sourceforge.net/mail/?group_id=67586">Mailing lists</a> created on sourceforge</li>
+<li>[12-06-04] <a href="http://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=287948">GLEW 1.2.5</a> adds new extensions and support for FreeBSD</li>
+</ul>
+
+<h2>Links</h2>
+<ul>
+<li><a href="http://www.opengl.org/sdk/">OpenGL Software Development Kit</a></li>
+<li><a href="http://www.opengl.org/registry/">OpenGL Extension Registry</a></li>
+<li><a href="https://www.opengl.org/wiki/OpenGL_Extension">OpenGL Wiki: Extensions</a></li>
+<li><a href="http://developer.nvidia.com/nvidia-opengl-specs">NVIDIA OpenGL Extension Specifications</a></li>
+<li><a href="http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGLExtensionsGuide/Reference/reference.html">Apple OpenGL Extensions Guide</a></li>
+</ul>
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/install.html b/glew/doc/install.html
new file mode 100644
index 0000000..0fe901a
--- /dev/null
+++ b/glew/doc/install.html
@@ -0,0 +1,226 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center">Installation</td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Installation</h2>
+
+<p>
+To use the shared library version of GLEW, you need to copy the
+headers and libraries into their destination directories. On Windows
+this typically boils down to copying:
+</p>
+
+<table border="0" cellpadding="0" cellspacing="0" align="center"> <!-- bgcolor="#f0f0f0" -->
+<tr><td align="left"><tt>bin/glew32.dll</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>%SystemRoot%/system32</tt></td></tr>
+<tr><td align="left"><tt>lib/glew32.lib</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Lib</tt></td></tr>
+<tr><td align="left"><tt>include/GL/glew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
+<tr><td align="left"><tt>include/GL/wglew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
+<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
+</table>
+<p>
+</p>
+
+<p>
+where <tt>{VC Root}</tt> is the Visual C++ root directory, typically
+<tt>C:/Program Files/Microsoft Visual Studio/VC98</tt> for Visual
+Studio 6.0 or <tt>C:/Program Files/Microsoft Visual
+Studio .NET 2003/Vc7/PlatformSDK</tt> for Visual Studio .NET.
+</p>
+
+<p>
+On Unix, typing <tt>make install</tt> will attempt to install GLEW
+into <tt>/usr/include/GL</tt> and <tt>/usr/lib</tt>. You can
+customize the installation target via the <tt>GLEW_DEST</tt>
+environment variable if you do not have write access to these
+directories.
+</p>
+
+<h2>Building Your Project with GLEW</h2>
+<p>
+There are two ways to build your project with GLEW.
+</p>
+<h3>Including the source files / project file</h3>
+<p>
+The simpler but less flexible way is to include <tt>glew.h</tt> and
+<tt>glew.c</tt> into your project. On Windows, you also need to
+define the <tt>GLEW_STATIC</tt> preprocessor token when building a
+static library or executable, and the <tt>GLEW_BUILD</tt> preprocessor
+token when building a dll. You also need to replace
+<tt>&lt;GL/gl.h&gt;</tt> and <tt>&lt;GL/glu.h&gt;</tt> with
+<tt>&lt;glew.h&gt;</tt> in your code and set the appropriate include
+flag (<tt>-I</tt>) to tell the compiler where to look for it. For
+example:
+</p>
+<p class="pre">
+#include &lt;glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+&lt;gl, glu, and glut functionality is available here&gt;<br>
+</p>
+<p>
+Depending on where you put <tt>glew.h</tt> you may also need to change
+the include directives in <tt>glew.c</tt>. Note that if you are using
+GLEW together with GLUT, you have to include <tt>glew.h</tt> first.
+In addition, <tt>glew.h</tt> includes <tt>glu.h</tt>, so you do not
+need to include it separately.
+</p>
+<p>
+On Windows, you also have the option of adding the supplied project
+file <tt>glew_static.dsp</tt> to your workspace (solution) and compile
+it together with your other projects. In this case you also need to
+change the <tt>GLEW_BUILD</tt> preprocessor constant to
+<tt>GLEW_STATIC</tt> when building a static library or executable,
+otherwise you get build errors.
+</p>
+<p>
+<b>Note that GLEW does not use the C
+runtime library, so it does not matter which version (single-threaded,
+multi-threaded or multi-threaded DLL) it is linked with (without
+debugging information). It is, however, always a good idea to compile all
+your projects including GLEW with the same C runtime settings.</b>
+</p>
+
+<h3>Using GLEW as a shared library</h3>
+
+<p>
+Alternatively, you can use the provided project files / makefile to
+build a separate shared library you can link your projects with later.
+In this case the best practice is to install <tt>glew.h</tt>,
+<tt>glew32.lib</tt>, and <tt>glew32.dll</tt> / <tt>libGLEW.so</tt> to
+where the OpenGL equivalents <tt>gl.h</tt>, <tt>opengl32.lib</tt>, and
+<tt>opengl32.dll</tt> / <tt>libGL.so</tt> are located. Note that you
+need administrative privileges to do this. If you do not have
+administrator access and your system administrator will not do it for
+you, you can install GLEW into your own lib and include subdirectories
+and tell the compiler where to find it. Then you can just replace
+<tt>&lt;GL/gl.h&gt;</tt> with <tt>&lt;GL/glew.h&gt;</tt> in your
+program:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+#include &lt;GL/glut.h&gt;<br>
+&lt;gl, glu, and glut functionality is available here&gt;<br>
+</p>
+
+<p>
+or:
+</p>
+
+<p class="pre">
+#include &lt;GL/glew.h&gt;<br>
+&lt;gl and glu functionality is available here&gt;<br>
+</p>
+
+<p>
+Remember to link your project with <tt>glew32.lib</tt>,
+<tt>glu32.lib</tt>, and <tt>opengl32.lib</tt> on Windows and
+<tt>libGLEW.so</tt>, <tt>libGLU.so</tt>, and <tt>libGL.so</tt> on
+Unix (<tt>-lGLEW -lGLU -lGL</tt>).
+</p>
+
+<p>
+It is important to keep in mind that <tt>glew.h</tt> includes neither
+<tt>windows.h</tt> nor <tt>gl.h</tt>. Also, GLEW will warn you by
+issuing a preprocessor error in case you have included <tt>gl.h</tt>,
+<tt>glext.h</tt>, or <tt>glATI.h</tt> before <tt>glew.h</tt>.
+</p>
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/khronos.txt b/glew/doc/khronos.txt
new file mode 100644
index 0000000..ffc271c
--- /dev/null
+++ b/glew/doc/khronos.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2007 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
diff --git a/glew/doc/log.html b/glew/doc/log.html
new file mode 100644
index 0000000..939469b
--- /dev/null
+++ b/glew/doc/log.html
@@ -0,0 +1,1419 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center">Change Log</td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Change Log</h2>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.2.0</b> [03-15-20]
+
+<ul>
+<li> Bug fixes:
+<ul>
+<li> GL_EXT_semaphore constants
+<li> Some const pointer fixups in OpenGL API
+<li> Correction for GLEW_VERSION_4_5
+<li> Windows build updates and fixes
+</ul>
+</ul>
+
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_framebuffer_multisample_advanced
+<li> GL_AMD_gpu_shader_half_float_fetch
+<li> GL_AMD_shader_image_load_store_lod
+<li> GL_ARM_texture_unnormalized_coordinates
+<li> GL_DMP_program_binary
+<li> GL_DMP_shader_binary
+<li> GL_EXT_EGL_image_external_wrap_modes
+<li> GL_EXT_EGL_image_storage
+<li> GL_EXT_EGL_sync
+<li> GL_EXT_clip_control
+<li> GL_EXT_depth_clamp
+<li> GL_EXT_disjoint_timer_query
+<li> GL_EXT_draw_transform_feedback
+<li> GL_EXT_multiview_tessellation_geometry_shader
+<li> GL_EXT_multiview_texture_multisample
+<li> GL_EXT_multiview_timer_query
+<li> GL_EXT_occlusion_query_boolean
+<li> GL_EXT_primitive_bounding_box
+<li> GL_EXT_protected_textures
+<li> GL_EXT_robustness
+<li> GL_EXT_shader_framebuffer_fetch_non_coherent
+<li> GL_EXT_static_vertex_array
+<li> GL_EXT_tessellation_point_size
+<li> GL_EXT_tessellation_shader
+<li> GL_EXT_texture_border_clamp
+<li> GL_EXT_texture_buffer
+<li> GL_EXT_texture_compression_s3tc_srgb
+<li> GL_EXT_texture_format_sRGB_override
+<li> GL_EXT_texture_mirror_clamp_to_edge
+<li> GL_EXT_texture_query_lod
+<li> GL_EXT_texture_shadow_lod
+<li> GL_FJ_shader_binary_GCCSO
+<li> GL_IMG_bindless_texture
+<li> GL_IMG_framebuffer_downsample
+<li> GL_IMG_multisampled_render_to_texture
+<li> GL_IMG_program_binary
+<li> GL_IMG_read_format
+<li> GL_IMG_shader_binary
+<li> GL_IMG_texture_compression_pvrtc
+<li> GL_IMG_texture_compression_pvrtc2
+<li> GL_IMG_texture_env_enhanced_fixed_function
+<li> GL_IMG_texture_filter_cubic
+<li> GL_INTEL_blackhole_render
+<li> GL_INTEL_shader_integer_functions2
+<li> GL_KHR_shader_subgroup
+<li> GL_MESA_framebuffer_flip_y
+<li> GL_MESA_program_binary_formats
+<li> GL_MESA_tile_raster_order
+<li> GL_NVX_gpu_multicast2
+<li> GL_NVX_progress_fence
+<li> GL_NV_compute_shader_derivatives
+<li> GL_NV_conservative_raster_pre_snap
+<li> GL_NV_conservative_raster_underestimation
+<li> GL_NV_depth_nonlinear
+<li> GL_NV_fragment_shader_barycentric
+<li> GL_NV_memory_attachment
+<li> GL_NV_mesh_shader
+<li> GL_NV_query_resource_tag
+<li> GL_NV_read_buffer
+<li> GL_NV_read_buffer_front
+<li> GL_NV_representative_fragment_test
+<li> GL_NV_scissor_exclusive
+<li> GL_NV_shader_subgroup_partitioned
+<li> GL_NV_shader_texture_footprint
+<li> GL_NV_shading_rate_image
+<li> GL_NV_vdpau_interop2
+<li> GL_OES_EGL_image
+<li> GL_OES_EGL_image_external
+<li> GL_OES_EGL_image_external_essl3
+<li> GL_OES_blend_equation_separate
+<li> GL_OES_blend_func_separate
+<li> GL_OES_blend_subtract
+<li> GL_OES_compressed_ETC1_RGB8_texture
+<li> GL_OES_compressed_paletted_texture
+<li> GL_OES_copy_image
+<li> GL_OES_depth24
+<li> GL_OES_depth32
+<li> GL_OES_depth_texture
+<li> GL_OES_depth_texture_cube_map
+<li> GL_OES_draw_buffers_indexed
+<li> GL_OES_draw_texture
+<li> GL_OES_element_index_uint
+<li> GL_OES_extended_matrix_palette
+<li> GL_OES_fbo_render_mipmap
+<li> GL_OES_fragment_precision_high
+<li> GL_OES_framebuffer_object
+<li> GL_OES_geometry_point_size
+<li> GL_OES_geometry_shader
+<li> GL_OES_get_program_binary
+<li> GL_OES_gpu_shader5
+<li> GL_OES_mapbuffer
+<li> GL_OES_matrix_get
+<li> GL_OES_matrix_palette
+<li> GL_OES_packed_depth_stencil
+<li> GL_OES_point_size_array
+<li> GL_OES_point_sprite
+<li> GL_OES_read_format
+<li> GL_OES_required_internalformat
+<li> GL_OES_rgb8_rgba8
+<li> GL_OES_sample_shading
+<li> GL_OES_sample_variables
+<li> GL_OES_shader_image_atomic
+<li> GL_OES_shader_io_blocks
+<li> GL_OES_shader_multisample_interpolation
+<li> GL_OES_single_precision
+<li> GL_OES_standard_derivatives
+<li> GL_OES_stencil1
+<li> GL_OES_stencil4
+<li> GL_OES_stencil8
+<li> GL_OES_surfaceless_context
+<li> GL_OES_tessellation_point_size
+<li> GL_OES_tessellation_shader
+<li> GL_OES_texture_3D
+<li> GL_OES_texture_border_clamp
+<li> GL_OES_texture_buffer
+<li> GL_OES_texture_compression_astc
+<li> GL_OES_texture_cube_map
+<li> GL_OES_texture_cube_map_array
+<li> GL_OES_texture_env_crossbar
+<li> GL_OES_texture_mirrored_repeat
+<li> GL_OES_texture_npot
+<li> GL_OES_texture_stencil8
+<li> GL_OES_texture_storage_multisample_2d_array
+<li> GL_OES_texture_view
+<li> GL_OES_vertex_array_object
+<li> GL_OES_vertex_half_float
+<li> GL_OES_vertex_type_10_10_10_2
+<li> GL_QCOM_YUV_texture_gather
+<li> GL_QCOM_shader_framebuffer_fetch_rate
+<li> GL_QCOM_texture_foveated
+<li> GL_QCOM_texture_foveated_subsampled_layout
+<li> GL_VIV_shader_binary
+<li> EGL_ANDROID_GLES_layers
+<li> EGL_ANDROID_get_frame_timestamps
+<li> EGL_ANDROID_get_native_client_buffer
+<li> EGL_ARM_image_format
+<li> EGL_EXT_bind_to_front
+<li> EGL_EXT_client_sync
+<li> EGL_EXT_compositor
+<li> EGL_EXT_gl_colorspace_display_p3
+<li> EGL_EXT_gl_colorspace_display_p3_linear
+<li> EGL_EXT_gl_colorspace_display_p3_passthrough
+<li> EGL_EXT_gl_colorspace_scrgb
+<li> EGL_EXT_image_gl_colorspace
+<li> EGL_EXT_image_implicit_sync_control
+<li> EGL_EXT_surface_CTA861_3_metadata
+<li> EGL_EXT_sync_reuse
+<li> EGL_KHR_display_reference
+<li> EGL_MESA_query_driver
+<li> EGL_NV_context_priority_realtime
+<li> EGL_NV_quadruple_buffer
+<li> EGL_NV_stream_dma
+<li> EGL_NV_stream_flush
+<li> EGL_NV_stream_origin
+<li> EGL_NV_triple_buffer
+<li> EGL_WL_bind_wayland_display
+<li> EGL_WL_create_wayland_buffer_from_image
+<li> GLX_EXT_context_priority
+<li> GLX_EXT_no_config_context
+<li> GLX_NV_multigpu_context
+<li> WGL_NV_multigpu_context
+</ul>
+</ul>
+
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.1.0</b> [07-31-17]
+<ul>
+<li> Enhancements:
+<ul>
+<li> OpenGL 4.6 support added
+<li> Improved Mac OSX build support
+<li> Improved cmake build support
+</ul>
+</ul>
+
+<ul>
+<li> Bug fixes:
+<ul>
+<li> Resolved crash when glXGetCurrentDisplay() is NULL
+<li> CMake: only install PDB files with MSVC
+<li> wglGetProcAddress crash with NOGDI defined
+<li> Mac: using -Os rather than -O2
+</ul>
+</ul>
+
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_gpu_shader_half_float
+<li> GL_AMD_shader_ballot
+<li> GL_ARB_gl_spirv
+<li> GL_EGL_KHR_context_flush_control
+<li> GL_INTEL_conservative_rasterization
+<li> GL_MESA_shader_integer_functions
+<li> GL_NVX_blend_equation_advanced_multi_draw_buffers
+<li> GL_NV_gpu_multicast
+<li> EGL_ARM_implicit_external_sync
+<li> EGL_EXT_gl_colorspace_bt2020_linear
+<li> EGL_EXT_gl_colorspace_bt2020_pq
+<li> EGL_EXT_gl_colorspace_scrgb_linear
+<li> EGL_EXT_image_dma_buf_import_modifiers
+<li> EGL_EXT_pixel_format_float
+<li> EGL_EXT_surface_SMPTE2086_metadata
+<li> EGL_KHR_context_flush_control
+<li> EGL_KHR_no_config_context
+<li> EGL_KHR_stream_attrib
+<li> EGL_MESA_platform_surfaceless
+<li> EGL_NV_stream_cross_display
+<li> EGL_NV_stream_cross_object
+<li> EGL_NV_stream_cross_partition
+<li> EGL_NV_stream_cross_process
+<li> EGL_NV_stream_cross_system
+<li> EGL_NV_stream_fifo_next
+<li> EGL_NV_stream_fifo_synchronous
+<li> EGL_NV_stream_frame_limits
+<li> EGL_NV_stream_remote
+<li> EGL_NV_stream_reset
+<li> EGL_NV_stream_socket
+<li> EGL_NV_stream_socket_inet
+<li> EGL_NV_stream_socket_unix
+<li> WGL_EXT_colorspace
+</ul>
+</ul>
+
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>2.0.0</b> [07-24-16]
+<ul>
+<li> Enhancements:
+<ul>
+<li> Forward context support added
+<li> OSMesa support added
+<li> EGL support added
+<li> MX support discontinued
+<li> Improved cmake build support
+</ul>
+</ul>
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_shader_explicit_vertex_parameter
+<li> GL_ARB_gl_spirv
+<li> GL_EGL_NV_robustness_video_memory_purge
+<li> GL_EXT_window_rectangles
+<li> GL_INTEL_conservative_rasterization
+<li> GL_KHR_texture_compression_astc_sliced_3d
+<li> GL_MESA_shader_integer_functions
+<li> GL_NVX_blend_equation_advanced_multi_draw_buffers
+<li> GL_NVX_linked_gpu_multicast
+<li> GL_NV_clip_space_w_scaling
+<li> GL_NV_command_list
+<li> GL_NV_conservative_raster_pre_snap_triangles
+<li> GL_NV_draw_vulkan_image
+<li> GL_NV_gpu_multicast
+<li> GL_NV_robustness_video_memory_purge
+<li> GL_NV_shader_atomic_float64
+<li> GL_NV_stereo_view_rendering
+<li> GL_NV_viewport_swizzle
+<li> GLX_EXT_libglvnd
+<li> GLX_NV_robustness_video_memory_purge
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.13.0</b> [08-10-15]
+<ul>
+<li> Enhancements:
+<ul>
+<li> glxewInit, wglewInit
+<li> glewinfo adds support for -version, -profile core|compatibility and -flag debug|forward parameters
+<li> Improved cmake build support
+</ul>
+</ul>
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES3_2_compatibility
+<li> GL_ARB_fragment_shader_interlock
+<li> GL_ARB_gpu_shader_int64
+<li> GL_ARB_parallel_shader_compile
+<li> GL_ARB_post_depth_coverage
+<li> GL_ARB_sample_locations
+<li> GL_ARB_shader_atomic_counter_ops
+<li> GL_ARB_shader_ballot
+<li> GL_ARB_shader_clock
+<li> GL_ARB_shader_viewport_layer_array
+<li> GL_ARB_sparse_texture2
+<li> GL_ARB_sparse_texture_clamp
+<li> GL_ARB_texture_filter_minmax
+<li> GL_INTEL_framebuffer_CMAA
+<li> GL_KHR_no_error
+<li> GL_NV_conservative_raster_dilate
+<li> GL_OVR_multiview
+<li> GL_OVR_multiview2
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.13.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.12.0</b> [01-26-15]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_polygon_offset_clamp
+<li> GL_EXT_post_depth_coverage
+<li> GL_EXT_raster_multisample
+<li> GL_EXT_sparse_texture2
+<li> GL_EXT_texture_filter_minmax
+<li> GL_NV_conservative_raster
+<li> GL_NV_fill_rectangle
+<li> GL_NV_fragment_coverage_to_color
+<li> GL_NV_fragment_shader_interlock
+<li> GL_NV_framebuffer_mixed_samples
+<li> GL_NV_geometry_shader_passthrough
+<li> GL_NV_internalformat_sample_query
+<li> GL_NV_sample_locations
+<li> GL_NV_sample_mask_override_coverage
+<li> GL_NV_shader_atomic_fp16_vector
+<li> GL_NV_uniform_buffer_unified_memory
+<li> GL_NV_viewport_array2
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.12.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.11.0</b> [08-11-14]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.5
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_gcn_shader
+<li> GL_AMD_gpu_shader_int64
+<li> GL_AMD_occlusion_query_event
+<li> GL_AMD_shader_atomic_counter_ops
+<li> GL_AMD_shader_stencil_value_export
+<li> GL_AMD_transform_feedback4
+<li> GL_ARB_ES3_1_compatibility
+<li> GL_ARB_clip_control
+<li> GL_ARB_conditional_render_inverted
+<li> GL_ARB_cull_distance
+<li> GL_ARB_derivative_control
+<li> GL_ARB_direct_state_access
+<li> GL_ARB_get_texture_sub_image
+<li> GL_ARB_pipeline_statistics_query
+<li> GL_ARB_shader_texture_image_samples
+<li> GL_ARB_sparse_buffer
+<li> GL_ARB_texture_barrier
+<li> GL_ARB_transform_feedback_overflow_query
+<li> GL_EXT_debug_label
+<li> GL_EXT_shader_image_load_formatted
+<li> GL_EXT_shader_integer_mix
+<li> GL_INTEL_fragment_shader_ordering
+<li> GL_INTEL_performance_query
+<li> GL_KHR_blend_equation_advanced
+<li> GL_KHR_blend_equation_advanced_coherent
+<li> GL_KHR_context_flush_control
+<li> GL_KHR_robust_buffer_access_behavior
+<li> GL_KHR_robustness
+<li> GL_KHR_texture_compression_astc_hdr
+<li> GL_NV_bindless_multi_draw_indirect_count
+<li> GL_NV_shader_atomic_int64
+<li> GL_NV_shader_thread_group
+<li> GL_NV_shader_thread_shuffle
+<li> GL_REGAL_proc_address
+<li> GLX_ARB_context_flush_control
+<li> GLX_EXT_stereo_tree
+<li> GLX_MESA_query_renderer
+<li> GLX_NV_copy_buffer
+<li> GLX_NV_delay_before_swap
+<li> WGL_ARB_context_flush_control
+<li> WGL_NV_delay_before_swap
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.11.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.10.0</b> [07-22-13]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.4
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_interleaved_elements
+<li> GL_AMD_shader_trinary_minmax
+<li> GL_AMD_sparse_texture
+<li> GL_ANGLE_depth_texture
+<li> GL_ANGLE_framebuffer_blit
+<li> GL_ANGLE_framebuffer_multisample
+<li> GL_ANGLE_instanced_arrays
+<li> GL_ANGLE_pack_reverse_row_order
+<li> GL_ANGLE_program_binary
+<li> GL_ANGLE_texture_compression_dxt1
+<li> GL_ANGLE_texture_compression_dxt3
+<li> GL_ANGLE_texture_compression_dxt5
+<li> GL_ANGLE_texture_usage
+<li> GL_ANGLE_timer_query
+<li> GL_ANGLE_translated_shader_source
+<li> GL_ARB_bindless_texture
+<li> GL_ARB_buffer_storage
+<li> GL_ARB_clear_texture
+<li> GL_ARB_compute_variable_group_size
+<li> GL_ARB_enhanced_layouts
+<li> GL_ARB_indirect_parameters
+<li> GL_ARB_multi_bind
+<li> GL_ARB_query_buffer_object
+<li> GL_ARB_seamless_cubemap_per_texture
+<li> GL_ARB_shader_draw_parameters
+<li> GL_ARB_shader_group_vote
+<li> GL_ARB_sparse_texture
+<li> GL_ARB_texture_mirror_clamp_to_edge
+<li> GL_ARB_texture_stencil8
+<li> GL_ARB_vertex_type_10f_11f_11f_rev
+<li> GL_INTEL_map_texture
+<li> GL_NVX_conditional_render
+<li> GL_NV_bindless_multi_draw_indirect
+<li> GL_NV_blend_equation_advanced
+<li> GL_NV_compute_program5
+<li> GL_NV_deep_texture3D
+<li> GL_NV_draw_texture
+<li> GL_NV_shader_atomic_counters
+<li> GL_NV_shader_storage_buffer_object
+<li> GL_REGAL_ES1_0_compatibility
+<li> GL_REGAL_ES1_1_compatibility
+<li> GL_REGAL_enable
+<li> GLX_EXT_buffer_age
+<li> WGL_ARB_robustness_application_isolation
+<li> WGL_ARB_robustness_share_group_isolation
+</ul>
+<li> <a href="http://sourceforge.net/p/glew/bugs/milestone/1.10.0/">Bug fixes</a>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.9.0</b> [08-06-12]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.3 -
+ <a href="http://www.opengl.org/registry/doc/glspec43.compatibility.20120806.pdf">specification</a>,
+ <a href="http://www.khronos.org/assets/uploads/developers/library/overview/opengl_overview.pdf">overview</a>.
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES3_compatibility
+<li> GL_ARB_clear_buffer_object
+<li> GL_ARB_compute_shader
+<li> GL_ARB_copy_image
+<li> GL_ARB_explicit_uniform_location
+<li> GL_ARB_fragment_layer_viewport
+<li> GL_ARB_framebuffer_no_attachments
+<li> GL_ARB_internalformat_query2
+<li> GL_ARB_multi_draw_indirect
+<li> GL_ARB_program_interface_query
+<li> GL_ARB_robust_buffer_access_behavior
+<li> GL_ARB_robustness_application_isolation
+<li> GL_ARB_robustness_share_group_isolation
+<li> GL_ARB_shader_image_size
+<li> GL_ARB_shader_storage_buffer_object
+<li> GL_ARB_stencil_texturing
+<li> GL_ARB_texture_buffer_range
+<li> GL_ARB_texture_query_levels
+<li> GL_ARB_texture_storage_multisample
+<li> GL_ARB_texture_view
+<li> GL_ARB_vertex_attrib_binding
+<li> GL_EXT_debug_marker
+<li> GL_KHR_debug
+<li> GL_REGAL_error_string
+<li> GL_REGAL_extension_query
+<li> GL_REGAL_log
+<li> GLX_ARB_robustness_application_isolation
+<li> GLX_ARB_robustness_share_group_isolation
+<li> GLX_EXT_create_context_es_profile
+<li> WGL_EXT_create_context_es_profile
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Not using GLU library for Makefile builds.
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.8.0</b> [07-17-12]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_pinned_memory
+<li> GL_AMD_query_buffer_object
+<li> GL_AMD_stencil_operation_extended
+<li> GL_AMD_vertex_shader_layer
+<li> GL_AMD_vertex_shader_viewport_index
+<li> GL_NV_bindless_texture
+<li> GL_NV_shader_atomic_float
+<li> GLX_EXT_swap_control_tear
+<li> WGL_EXT_swap_control_tear
+<li> WGL_NV_DX_interop2
+</ul>
+<li> Bug fixes:
+<ul>
+<li> MS Visual Studio 2010 projects added
+<li> GLX_NV_video_out replaces GLX_NV_video_output
+<li> ANSI C prototype for glewInit
+<li> Improved CentOS build support
+<li> Improved GL_ARB_gpu_shader_fp64 support
+<li> ARB_texture_compression_bptc and ARB_copy_buffer constants
+<li> Linux needs to define GLEW_STATIC for static library builds
+<li> Custom code generation problem resolved
+<li> GLEWAPIENTRY added to glew.h for calling convention customization
+<li> Correction for glPathStencilDepthOffsetNV
+<li> Resolve OSX gcc warnings
+<li> Added build support for NetBSD
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.7.0</b> [08-26-11]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.2
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_multi_draw_indirect
+<li> GL_ARB_base_instance
+<li> GL_ARB_compressed_texture_pixel_storage
+<li> GL_ARB_conservative_depth
+<li> GL_ARB_internalformat_query
+<li> GL_ARB_map_buffer_alignment
+<li> GL_ARB_shader_atomic_counters
+<li> GL_ARB_shader_image_load_store
+<li> GL_ARB_shading_language_420pack
+<li> GL_ARB_shading_language_packing
+<li> GL_ARB_texture_storage
+<li> GL_ARB_transform_feedback_instanced
+<li> GL_EXT_framebuffer_multisample_blit_scaled
+<li> GL_NV_path_rendering
+<li> GL_NV_path_rendering
+<li> GLX_MESA_swap_control
+</ul>
+<li> Bug fixes:
+<ul>
+<li> const qualifiers for GL 1.4 MultiDrawArrays, MultiDrawElements
+<li> Add glGetGraphicsResetStatusARB to GL_ARB_robustness
+<li> Remove EXT suffix from GL_KTX_buffer_region entry points
+<li> Solaris needs inttypes.h
+<li> Add ERROR_INVALID_VERSION_ARB and ERROR_INVALID_PROFILE_ARB to WGL_ARB_create_context
+<li> Add GLX_MESA_swap_control
+<li> Set -install_name for OSX
+<li> Add 64-bit darwin build option (SYSTEM=darwin_x86-64)
+<li> Add GL_NV_path_rendering
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.6.0</b> [04-27-11]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_blend_minmax_factor
+<li> GL_AMD_sample_positions
+<li> GL_EXT_x11_sync_object
+<li> GL_NV_texture_multisample
+<li> GL_NV_video_capture
+<li> GLX_NV_video_capture
+<li> WGL_NV_DX_interop
+<li> WGL_NV_video_capture
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Define GLEW_NO_GLU for no glu dependency.
+<li> mx suffix for GLEW MX libraries, build both libraries by default.
+<li> Cygwin build improvements
+<li> Soname of GLEWmx shared libraries
+<li> Query GL extension string only once
+<li> GLX_OML_sync_control no longer requires C99
+<li> glDraw*InstancedARB moved from GL_ARB_draw_instanced to GL_ARB_instanced_arrays
+<li> glFramebufferTextureLayerEXT moved from GL_EXT_geometry_shader4 to GL_EXT_texture_array
+<li> Fixes for BSD build
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.8</b> [01-31-11]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_depth_clamp_separate
+<li> GL_EXT_texture_sRGB_decode
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Borland C++ fix for __int64
+<li> GL_DOUBLE_MATNxM enumerants for OpenGL 4.0
+<li> Correction to glGetTransformFeedbackVarying
+<li> Correction to glSecondaryColorPointer
+<li> Corrections to glGetVertexAttribPointerv and glGetShaderSource
+<li> Switched code repository from svn to git
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.7</b> [11-03-10]
+<ul>
+<li> New extension:
+<ul>
+<li> GL_NVX_gpu_memory_info
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Improved mingw32 build support
+<li> Improved cygwin build support
+<li> glGetPointervEXT fix
+<li> Add GLEW_VERSION_1_2_1
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.6</b> [09-07-10]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 4.1
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_ES2_compatibility
+<li> GL_ARB_cl_event
+<li> GL_ARB_debug_output
+<li> GL_ARB_get_program_binary
+<li> GL_ARB_robustness
+<li> GL_ARB_separate_shader_objects
+<li> GL_ARB_shader_precision
+<li> GL_ARB_shader_stencil_export
+<li> GL_ARB_vertex_attrib_64bit
+<li> GL_ARB_viewport_array
+<li> GLX_ARB_create_context_robustness
+<li> GLX_EXT_create_context_es2_profile
+<li> WGL_ARB_create_context_robustness
+<li> WGL_EXT_create_context_es2_profile
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.5</b> [07-13-10]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_debug_output
+<li> GL_AMD_name_gen_delete
+<li> GL_AMD_transform_feedback3_lines_triangles
+<li> GL_NV_multisample_coverage
+<li> GL_NV_vdpau_interop
+<li> GLX_AMD_gpu_association
+<li> GLX_NV_multisample_coverage
+<li> WGL_NV_multisample_coverage
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Compilation issue with GLX_SGI_video_sync
+<li> OpenGL 4.0 double-precision uniform functions added
+<li> Constness of glPointParameterfvARB and glPointParameterfvEXT
+<li> Added glVertexAttribDivisor
+<li> Compilation issue with Nvidia GLX headers
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.4</b> [04-21-10]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.3
+<li> Support for OpenGL 4.0
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_conservative_depth
+<li> GL_ARB_blend_func_extended
+<li> GL_ARB_draw_indirect
+<li> GL_ARB_explicit_attrib_location
+<li> GL_ARB_gpu_shader5
+<li> GL_ARB_gpu_shader_fp64
+<li> GL_ARB_occlusion_query2
+<li> GL_ARB_sampler_objects
+<li> GL_ARB_shader_bit_encoding
+<li> GL_ARB_shader_subroutine
+<li> GL_ARB_shading_language_include
+<li> GL_ARB_tessellation_shader
+<li> GL_ARB_texture_buffer_object_rgb32
+<li> GL_ARB_texture_compression_bptc
+<li> GL_ARB_texture_rgb10_a2ui
+<li> GL_ARB_texture_swizzle
+<li> GL_ARB_timer_query
+<li> GL_ARB_transform_feedback2
+<li> GL_ARB_transform_feedback3
+<li> GL_ARB_vertex_type_2_10_10_10_rev
+<li> GL_EXT_shader_image_load_store
+<li> GL_EXT_vertex_attrib_64bit
+<li> GL_NV_gpu_program5
+<li> GL_NV_gpu_program_fp64
+<li> GL_NV_gpu_shader5
+<li> GL_NV_tessellation_program5
+<li> GL_NV_vertex_attrib_integer_64bit
+<li> GLX_ARB_vertex_buffer_object
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Parameter constness fix for glPointParameteriv and glPointParameterfv
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.3</b> [02-28-10]
+<ul>
+<li> New extensions:
+<ul>
+<li> GLX_INTEL_swap_event
+<li> GL_AMD_seamless_cubemap_per_texture
+<li> GL_AMD_shader_stencil_export
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Correct version detection for GL 3.1 and 3.2
+<li> Missing 3.1 enumerants
+<li> Add glew.pc
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.2</b> [12-31-09]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.1
+<li> Support for OpenGL 3.2
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_AMD_draw_buffers_blend
+<li> GL_AMD_performance_monitor
+<li> GL_AMD_texture_texture4
+<li> GL_AMD_vertex_shader_tessellator
+<li> GL_APPLE_aux_depth_stencil
+<li> GL_APPLE_object_purgeable
+<li> GL_APPLE_rgb_422
+<li> GL_APPLE_row_bytes
+<li> GL_APPLE_vertex_program_evaluators
+<li> GL_ARB_compatibility
+<li> GL_ARB_copy_buffer
+<li> GL_ARB_depth_clamp
+<li> GL_ARB_draw_buffers_blend
+<li> GL_ARB_draw_elements_base_vertex
+<li> GL_ARB_fragment_coord_conventions
+<li> GL_ARB_provoking_vertex
+<li> GL_ARB_sample_shading
+<li> GL_ARB_seamless_cube_map
+<li> GL_ARB_shader_texture_lod
+<li> GL_ARB_sync
+<li> GL_ARB_texture_cube_map_array
+<li> GL_ARB_texture_gather
+<li> GL_ARB_texture_multisample
+<li> GL_ARB_texture_query_lod
+<li> GL_ARB_uniform_buffer_object
+<li> GL_ARB_vertex_array_bgra
+<li> GL_ATI_meminfo
+<li> GL_EXT_provoking_vertex
+<li> GL_EXT_separate_shader_objects
+<li> GL_EXT_texture_snorm
+<li> GL_NV_copy_image
+<li> GL_NV_parameter_buffer_object2
+<li> GL_NV_shader_buffer_load
+<li> GL_NV_texture_barrier
+<li> GL_NV_transform_feedback2
+<li> GL_NV_vertex_buffer_unified_memory
+<li> WGL_AMD_gpu_association
+<li> WGL_ARB_create_context_profile
+<li> WGL_NV_copy_image
+<li> GLX_ARB_create_context_profile
+<li> GLX_EXT_swap_control
+<li> GLX_NV_copy_image
+</ul>
+<li> Bug fixes:
+<ul>
+<li> DOS line endings for windows .zip archives only.
+<li> glTransformFeedbackVaryings arguments.
+<li> Resource leak in glewinfo and visualinfo tools.
+<li> WIN32_LEAN_AND_MEAN preprocessor pollution.
+<li> Fixed version detection for GLEW_VERSION_2_1 and GLEW_VERSION_3_0.
+<li> MesaGLUT glut.h GLAPIENTRY dependency.
+<li> glFramebufferTextureLayer correction.
+<li> OSX compiler warnings resolved.
+<li> Cygwin linking to opengl32 by default, rather than X11 OpenGL.
+<li> SnowLeopard (OSX 10.6) gl.h detection.
+<li> Use $(STRIP) consistently.
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.1</b> [11-03-08]
+<ul>
+<li> New features:
+<ul>
+<li> Support for OpenGL 3.0
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_ARB_depth_buffer_float
+<li> GL_ARB_draw_instance,
+<li> GL_ARB_framebuffer_object
+<li> GL_ARB_framebuffer_sRGB
+<li> GL_ARB_geometry_shader4
+<li> GL_ARB_half_float_pixel
+<li> GL_ARB_half_float_vertex
+<li> GL_ARB_instanced_arrays
+<li> GL_ARB_map_buffer_range
+<li> GL_ARB_texture_buffer_object
+<li> GL_ARB_texture_compression_rgtc
+<li> GL_ARB_vertex_array_object
+<li> GL_EXT_direct_state_access
+<li> GL_EXT_texture_swizzle
+<li> GL_EXT_transform_feedback
+<li> GL_EXT_vertex_array_bgra
+<li> GL_NV_conditional_render
+<li> GL_NV_explicit_multisample
+<li> GL_NV_present_video
+<li> GL_SGIS_point_line_texgen
+<li> GL_SGIX_convolution_accuracy
+<li> WGL_ARB_create_context
+<li> WGL_ARB_framebuffer_sRGB
+<li> WGL_NV_present_video
+<li> WGL_NV_swap_group
+<li> WGL_NV_video_output
+<li> GLX_ARB_create_context
+<li> GLX_ARB_framebuffer_sRGB
+<li> GLX_NV_present_video
+<li> GLX_NV_swap_group
+<li> GLX_NV_video_output
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Licensing issues with documentation
+<li> Problems with long long and _MSC_VER on MINGW
+<li> Incorrect parameter for glGetUniformLocation
+<li> glewGetExtension fails on last entry
+<li> Incomplete GL_NV_texture_shader tokens
+<li> Scripting problems on Cygwin
+<li> Incorrect definition for GLint on OS X
+</ul>
+</ul>
+</ul>
+
+<hr align="center">
+<ul class="none">
+<li><b>1.5.0</b> [12-27-07]
+<ul>
+<li> New features:
+<ul>
+<li> Licensing change (BSD, Mesa 3-D, Khronos)
+<li> Switch to using registry on <a href="http://www.opengl.org/registry/">www.opengl.org</a>
+<li> Support for major and minor version strings
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_APPLE_flush_buffer_range
+<li> GL_GREMEDY_frame_terminator
+<li> GLX_EXT_texture_from_pixmap
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect 64-bit type definitions
+<li> Do not strip static library on install
+<li> Missing tokens in GL_ATI_fragment_shader and WGL_{ARB,EXT}_make_current_read
+<li> Missing tokens in GL_VERSION_2_1
+<li> Missing functions in GL_VERSION_1_4
+<li> Incorrect parameter type for glXCopyContext
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.4.0</b> [04-27-07]
+<ul>
+<li> New features:
+<ul>
+<li> Extension variables are declared const to avoid possible
+corruption of their values
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_NV_depth_range_unclamped
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect tokens in GL_NV_transform_feedback and GL_NV_framebuffer_multisample_coverage
+<li> Incorrect function names in GL_EXT_gpu_program_parameters
+<li> Missing tokens in GL_EXT_framebuffer_multisample
+<li> GLEW_MX initialization problem for WGL_{ARB,EXT}_extensions_string
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.6</b> [03-04-07]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_ATI_shader_texture_lod
+<li> GL_EXT_gpu_program_parameters
+<li> GL_NV_geometry_shader4
+<li> WGL_NV_gpu_affinity
+<li> GLX_SGIX_hyperpipe
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing include guards in glxew.h
+<li> Makefile and install problems for Cygwin builds
+<li> Install problem for Linux AMD64 builds
+<li> Incorrect token in GL_ATI_texture_compression_3dc
+<li> Missing tokens from GL_ATIX_point_sprites
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.5</b> [11-21-06]
+<ul>
+<li> New features:
+<ul>
+<li> Support for core OpenGL 2.1
+<li> Debug support for glewIsSupported
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_bindable_uniform
+<li> GL_EXT_draw_buffers2
+<li> GL_EXT_draw_instanced
+<li> GL_EXT_framebuffer_sRGB
+<li> GL_EXT_geometry_shader4
+<li> GL_EXT_gpu_shader4
+<li> GL_EXT_packed_float
+<li> GL_EXT_texture_array
+<li> GL_EXT_texture_buffer_object
+<li> GL_EXT_texture_compression_latc
+<li> GL_EXT_texture_compression_rgtc
+<li> GL_EXT_texture_integer
+<li> GL_EXT_texture_shared_exponent
+<li> GL_EXT_timer_query
+<li> GL_NV_depth_buffer_float
+<li> GL_NV_fragment_program4
+<li> GL_NV_framebuffer_multisample_coverage
+<li> GL_NV_geometry_program4
+<li> GL_NV_gpu_program4
+<li> GL_NV_parameter_buffer_object
+<li> GL_NV_transform_feedback
+<li> GL_NV_vertex_program4
+<li> GL_OES_byte_coordinates
+<li> GL_OES_compressed_paletted_texture
+<li> GL_OES_read_format
+<li> GL_OES_single_precision
+<li> WGL_EXT_pixel_format_packed_float
+<li> WGL_EXT_framebuffer_sRGB
+<li> GLX_EXT_fbconfig_packed_float
+<li> GLX_EXT_framebuffer_sRGB
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Wrong GLXContext definition on Solaris
+<li> Makefile problem for parallel builds
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.4</b> [03-04-06]
+<ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_framebuffer_blit
+<li> GL_EXT_framebuffer_multisample
+<li> GL_EXT_packed_depth_stencil
+<li> GL_MESAX_texture_stack
+<li> WGL_3DL_stereo_control
+</ul>
+</ul>
+<ul>
+<li> Bug fixes:
+<ul>
+<li> glBlendEquation missing from GL_ARB_imaging
+<li> Wrong APIENTRY definition for Cygwin
+<li> Incorrect OS X OpenGL types
+<li> Unix 64-bit installation patch
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.3</b> [05-16-05]
+<ul>
+<li> New feature:
+<ul>
+<li> Code generation option to split source into multiple files
+</ul>
+</ul>
+<ul>
+<li> Bug fixes:
+<ul>
+<li> OpenGL 2.0 core initialization problems
+<li> Wrong value for token GL_SHADER_TYPE
+<li> Missing tokens in GL_ATI_fragment_shader
+<li> Missing entry points in GL_ARB_transpose_matrix
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.2</b> [03-16-05]
+<ul>
+<li> New extension:
+<ul>
+<li> GL_APPLE_pixel_buffer
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing OpenGL 2.0 entry points
+<li> Missing tokens in GL_SGIX_shadow
+<li> MinGW makefile problem
+<li> Check for incorrect OpenGL version string on SiS hardware
+<li> Documentation update to meet the HTML 4.01 Transitional specification
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.1</b> [02-02-05]
+<ul>
+<li> New features:
+<ul>
+<li> Consistent Unix and Windows versioning
+</ul>
+<li> New extensions:
+<ul>
+<li> GL_EXT_framebuffer_object
+<li> GL_ARB_pixel_buffer_object
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Missing OpenGL 2.0 tokens
+<li> Incorrect typedefs (GLhandleARB and GLhalf)
+<li> Borland compiler problems
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.3.0</b> [01-04-05]
+<ul>
+<li> New features:
+<ul>
+<li> Support for core OpenGL 2.0
+<li> <tt>glewIsSupported</tt> provides efficient string-based extension checks
+<li> Custom code generation from a list of extensions
+<li> Makefile changes
+</ul>
+<li> New extensions:
+<ul>
+<li> WGL_ATI_render_texture_rectangle
+</ul>
+<li> Bug fixes:
+<ul>
+<li> Incorrect function signature in OpenGL 1.5 core
+</ul>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.5</b> [12-06-04]
+<ul>
+<li> New extensions:
+<ul>
+<li>GL_ATI_texture_compression_3dc
+<li>GL_EXT_Cg_shader
+<li>GL_EXT_draw_range_elements
+<li>GL_KTX_buffer_region
+</ul>
+<li> Bug fixes:
+<ul>
+<li> OpenGL version detection bug
+<li> Problems with wxWindows and MinGW compilation
+<li> <tt>visualinfo</tt> compilation problem with GLEW_MX specified
+<li> Wrong token name in OpenGL 1.5 core
+</ul>
+<li> Support for FreeBSD
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.4</b> [09-06-04]
+<ul>
+<li> Added ARB_draw_buffers and ARB_texture_rectangle
+<li> Fixed bug in ARB_shader_objects
+<li> Replaced <tt>wglinfo</tt> with <tt>visualinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.3</b> [06-10-04]
+<ul>
+<li> Added GL_NV_fragment_program2, GL_NV_fragment_program_option, GL_NV_vertex_program2_option, GL_NV_vertex_program3
+<li> Bug fix in GL_ARB_vertex_blend
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.2</b> [05-08-04]
+<ul>
+<li> Added GL_EXT_pixel_buffer_object, removed GL_NV_element_array
+<li> Fixed GLEW_MX problems
+<li> Bug fix in GL_EXT_texture_rectangle and <tt>wglinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.1</b> [03-18-04]
+<ul>
+<li> Bug fix in OpenGL version query (early release of 1.2.0 contained this bug)
+<li> Bug fix in GL_ARB_shader_objects and temporary bug fix in GL_ARB_vertex_shader
+<li> Added flags on GDI support and multisampling to <tt>wglinfo</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.2.0</b> [02-19-04]
+<ul>
+<li> Added full OpenGL 1.5 support
+<li> Added support for multiple rendering contexts with different capabilities
+<li> Added command line flags to <tt>glewinfo</tt> for selecting displays and visuals
+<li> Added GLX_SGIS_multisample, GLX_SUN_video_resize, and GL_SUN_read_video_pixels
+<li> Added MinGW/MSYS support
+<li> Bug fixes in GL_ARB_shader_objects and the OS X build
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.4</b> [12-15-03]
+<ul>
+<li> Added GL_APPLE_float_pixels, GL_APPLE_texture_range,
+GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
+GLX_ATI_pixel_format_float, and GLX_ATI_render_texture
+<li> Bug fixes in GL_ATI_map_object_buffer and GL_ATI_fragment_shader
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.3</b> [10-28-03]
+<ul>
+<li> Added Solaris and Darwin support
+<li> Added GL_ARB_fragment_shader, GL_ARB_shader_objects, and GL_ARB_vertex_shader
+<li> Fixed bug in GL_WIN_swap_hint
+<li> Removed <tt>glewinfo</tt>'s dependency on <tt>GLUT</tt>
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.2</b> [09-15-03]
+<ul>
+<li> Removed dependency on WGL_{ARB,EXT}_extensions_string to make GLEW run on Matrox cards
+<li> Added glewGetString for querying the GLEW version string
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.1</b> [08-11-03]
+<ul>
+<li> Added GLX_NV_float_buffer, GL_ARB_shading_language_100, and GL_ARB_texture_non_power_of_two
+<li> Fixed bug in GL_ARB_vertex_buffer_object
+<li> Minor updates in documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.1.0</b> [07-08-03]
+<ul>
+<li> Added automatic code generation
+<li> Added almost every extension in the registry
+<li> Added separate namespace
+<li> Added Irix support
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.7</b> [06-29-03]
+<ul>
+<li> Added GL_EXT_depth_bounds_test
+<li> Fixed typos
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.6</b> [05-05-03]
+<ul>
+<li> Added ARB_vertex_buffer_object and NV_half_float
+<li> Updated <tt>wglinfo</tt>
+<li> Temporary Linux bug fixes (problems with SDL and MESA)
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.5</b> [02-17-03]
+<ul>
+<li> Bug fixes
+<li> Added <tt>wglinfo</tt>
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.4</b> [02-02-03]
+<ul>
+<li> Added NV_texture_expand_normal
+<li> Added mingw support
+<li> Updated documentation
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.3</b> [01-09-03]
+<ul>
+<li> Cleaned up ATI extensions
+<li> Changed function prototypes to match glext.h
+<li> Added EXT_texture3D
+<li> Fixed typos in ATI_vertex_attrib_array_object and ATI_draw_buffers
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.2</b> [12-21-02]
+<ul>
+<li> Added list of supported extensions to documentation
+<li> Added NV_half_float and NV_texgen_emboss
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.1</b> [12-17-02]
+<ul>
+<li> Bug fixes
+<li> Added glewGetExtension
+</ul>
+</ul>
+<hr align="center">
+<ul class="none">
+<li><b>1.0.0</b> [12-12-02]
+<ul>
+<li> Initial release
+</ul>
+</ul>
+<hr align="center">
+
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/doc/mesa.txt b/glew/doc/mesa.txt
new file mode 100644
index 0000000..a82dd4b
--- /dev/null
+++ b/glew/doc/mesa.txt
@@ -0,0 +1,21 @@
+Mesa 3-D graphics library
+Version: 7.0
+
+Copyright (C) 1999-2007 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"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/glew/doc/new.png b/glew/doc/new.png
new file mode 100644
index 0000000..7ce2b47
--- /dev/null
+++ b/glew/doc/new.png
Binary files differ
diff --git a/glew/doc/ogl_sm.jpg b/glew/doc/ogl_sm.jpg
new file mode 100644
index 0000000..f318d76
--- /dev/null
+++ b/glew/doc/ogl_sm.jpg
Binary files differ
diff --git a/glew/doc/travis.png b/glew/doc/travis.png
new file mode 100644
index 0000000..caf2607
--- /dev/null
+++ b/glew/doc/travis.png
Binary files differ
diff --git a/glew/doc/wglew.html b/glew/doc/wglew.html
new file mode 100644
index 0000000..1826b01
--- /dev/null
+++ b/glew/doc/wglew.html
@@ -0,0 +1,169 @@
+<!-- begin header.html -->
+<!--
+The OpenGL Extension Wrangler Library
+Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
+<html>
+<head>
+<title>GLEW: The OpenGL Extension Wrangler Library</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<link href="glew.css" type="text/css" rel="stylesheet">
+</head>
+<body bgcolor="#fff0d0">
+<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
+<tr>
+<td bgcolor="#ffffff" align="left" valign="top" width="200">
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr>
+<td valign="top">
+
+<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
+<tr><td align="center"><i>Latest Release: <a href="https://github.com/nigels-com/glew/releases/tag/glew-2.2.0">2.2.0</a></i></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
+<tr><td align="center"><br></td></tr>
+<tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" align="center">
+<tr><td align="center"><a href="index.html">Download</a></td></tr>
+<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
+<tr><td align="center"><a href="build.html">Building</a></td></tr>
+<tr><td align="center"><a href="install.html">Installation</a></td></tr>
+<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
+<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
+<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
+<tr><td align="center"><br></tr>
+<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
+</table>
+<tr><td align="center"><br></tr>
+</table>
+</td>
+</tr>
+<tr>
+
+<td valign="bottom">
+<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
+<tr><td align="center"><i>Last Update: 03-15-20</i></td></tr>
+<tr><td align="center">
+ <a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
+ <a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
+ <a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
+ <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+
+<td bgcolor="#ffffff" align="left" valign="top">
+
+<h1>The OpenGL Extension Wrangler Library</h1>
+
+<!-- end header.html -->
+
+
+<h2>Supported WGL Extensions</h2>
+
+<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
+<tr><td class="num">1</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DFX/WGL_3DFX_multisample.txt">3DFX_multisample</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">2</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/3DL/WGL_3DL_stereo_control.txt">3DL_stereo_control</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">3</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/AMD/WGL_AMD_gpu_association.txt">AMD_gpu_association</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">4</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_buffer_region.txt">ARB_buffer_region</a></td></tr>
+<tr><td class="num">5</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_context_flush_control.txt">ARB_context_flush_control</a></td></tr>
+<tr><td class="num">6</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context.txt">ARB_create_context</a></td></tr>
+<tr><td class="num">7</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_no_error.txt">ARB_create_context_no_error</a></td></tr>
+<tr><td class="num">8</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_profile.txt">ARB_create_context_profile</a></td></tr>
+<tr><td class="num">9</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_create_context_robustness.txt">ARB_create_context_robustness</a></td></tr>
+<tr><td class="num">10</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_extensions_string.txt">ARB_extensions_string</a></td></tr>
+<tr><td class="num">11</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_framebuffer_sRGB.txt">ARB_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">12</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_make_current_read.txt">ARB_make_current_read</a></td></tr>
+<tr><td class="num">13</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_multisample.txt">ARB_multisample</a></td></tr>
+<tr><td class="num">14</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pbuffer.txt">ARB_pbuffer</a></td></tr>
+<tr><td class="num">15</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pixel_format.txt">ARB_pixel_format</a></td></tr>
+<tr><td class="num">16</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_pixel_format_float.txt">ARB_pixel_format_float</a></td></tr>
+<tr><td class="num">17</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_render_texture.txt">ARB_render_texture</a></td></tr>
+<tr><td class="num">18</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_robustness_application_isolation.txt">ARB_robustness_application_isolation</a></td></tr>
+<tr><td class="num">19</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ARB/WGL_ARB_robustness_share_group_isolation.txt">ARB_robustness_share_group_isolation</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">20</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/WGL_ATI_pixel_format_float.txt">ATI_pixel_format_float</a></td></tr>
+<tr><td class="num">21</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/ATI/WGL_ATI_render_texture_rectangle.txt">ATI_render_texture_rectangle</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">22</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_colorspace.txt">EXT_colorspace</a></td></tr>
+<tr><td class="num">23</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_create_context_es2_profile.txt">EXT_create_context_es2_profile</a></td></tr>
+<tr><td class="num">24</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_create_context_es_profile.txt">EXT_create_context_es_profile</a></td></tr>
+<tr><td class="num">25</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_depth_float.txt">EXT_depth_float</a></td></tr>
+<tr><td class="num">26</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_display_color_table.txt">EXT_display_color_table</a></td></tr>
+<tr><td class="num">27</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_extensions_string.txt">EXT_extensions_string</a></td></tr>
+<tr><td class="num">28</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_framebuffer_sRGB.txt">EXT_framebuffer_sRGB</a></td></tr>
+<tr><td class="num">29</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_make_current_read.txt">EXT_make_current_read</a></td></tr>
+<tr><td class="num">30</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_multisample.txt">EXT_multisample</a></td></tr>
+<tr><td class="num">31</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pbuffer.txt">EXT_pbuffer</a></td></tr>
+<tr><td class="num">32</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pixel_format.txt">EXT_pixel_format</a></td></tr>
+<tr><td class="num">33</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_pixel_format_packed_float.txt">EXT_pixel_format_packed_float</a></td></tr>
+<tr><td class="num">34</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_swap_control.txt">EXT_swap_control</a></td></tr>
+<tr><td class="num">35</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/WGL_EXT_swap_control_tear.txt">EXT_swap_control_tear</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">36</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_digital_video_control.txt">I3D_digital_video_control</a></td></tr>
+<tr><td class="num">37</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_gamma.txt">I3D_gamma</a></td></tr>
+<tr><td class="num">38</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_genlock.txt">I3D_genlock</a></td></tr>
+<tr><td class="num">39</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_image_buffer.txt">I3D_image_buffer</a></td></tr>
+<tr><td class="num">40</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_swap_frame_lock.txt">I3D_swap_frame_lock</a></td></tr>
+<tr><td class="num">41</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/I3D/WGL_I3D_swap_frame_usage.txt">I3D_swap_frame_usage</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">42</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_DX_interop.txt">NV_DX_interop</a></td></tr>
+<tr><td class="num">43</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_DX_interop2.txt">NV_DX_interop2</a></td></tr>
+<tr><td class="num">44</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_copy_image.txt">NV_copy_image</a></td></tr>
+<tr><td class="num">45</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_delay_before_swap.txt">NV_delay_before_swap</a></td></tr>
+<tr><td class="num">46</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_float_buffer.txt">NV_float_buffer</a></td></tr>
+<tr><td class="num">47</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt">NV_gpu_affinity</a></td></tr>
+<tr><td class="num">48</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_multigpu_context.txt">NV_multigpu_context</a></td></tr>
+<tr><td class="num">49</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_multisample_coverage.txt">NV_multisample_coverage</a></td></tr>
+<tr><td class="num">50</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_present_video.txt">NV_present_video</a></td></tr>
+<tr><td class="num">51</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_render_depth_texture.txt">NV_render_depth_texture</a></td></tr>
+<tr><td class="num">52</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_render_texture_rectangle.txt">NV_render_texture_rectangle</a></td></tr>
+<tr><td class="num">53</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_swap_group.txt">NV_swap_group</a></td></tr>
+<tr><td class="num">54</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
+<tr><td class="num">55</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_video_capture.txt">NV_video_capture</a></td></tr>
+<tr><td class="num">56</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_video_output.txt">NV_video_output</a></td></tr>
+<tr><td><br></td><td></td><td></td></tr>
+<tr><td class="num">57</td><td>&nbsp;</td><td><a href="https://www.khronos.org/registry/OpenGL/extensions/OML/WGL_OML_sync_control.txt">OML_sync_control</a></td></tr>
+</table>
+<!-- begin footer.html -->
+</td></tr></table></body>
+<!-- end footer.html -->
+
diff --git a/glew/glew.pc.in b/glew/glew.pc.in
new file mode 100644
index 0000000..a892540
--- /dev/null
+++ b/glew/glew.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=@libdir@
+includedir=${prefix}/include
+
+Name: glew
+Description: The OpenGL Extension Wrangler library
+Version: @version@
+Cflags: -I${includedir} @cflags@
+Libs: -L${libdir} -l@libname@ @libgl@
+Requires: @requireslib@
diff --git a/glew/include/GL/eglew.h b/glew/include/GL/eglew.h
new file mode 100644
index 0000000..fdb90d9
--- /dev/null
+++ b/glew/include/GL/eglew.h
@@ -0,0 +1,3230 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 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"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#ifndef __eglew_h__
+#define __eglew_h__
+#define __EGLEW_H__
+
+#ifdef __eglext_h_
+#error eglext.h included before eglew.h
+#endif
+
+#if defined(__egl_h_)
+#error egl.h included before eglew.h
+#endif
+
+#define __eglext_h_
+
+#define __egl_h_
+
+#ifndef EGLAPIENTRY
+#define EGLAPIENTRY
+#endif
+#ifndef EGLAPI
+#define EGLAPI extern
+#endif
+
+/* EGL Types */
+#include <sys/types.h>
+
+#include <KHR/khrplatform.h>
+#include <EGL/eglplatform.h>
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int32_t EGLint;
+
+typedef unsigned int EGLBoolean;
+typedef void *EGLDisplay;
+typedef void *EGLConfig;
+typedef void *EGLSurface;
+typedef void *EGLContext;
+typedef void (*__eglMustCastToProperFunctionPointerType)(void);
+
+typedef unsigned int EGLenum;
+typedef void *EGLClientBuffer;
+
+typedef void *EGLSync;
+typedef intptr_t EGLAttrib;
+typedef khronos_utime_nanoseconds_t EGLTime;
+typedef void *EGLImage;
+
+typedef void *EGLSyncKHR;
+typedef intptr_t EGLAttribKHR;
+typedef void *EGLLabelKHR;
+typedef void *EGLObjectKHR;
+typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+typedef void *EGLImageKHR;
+typedef void *EGLStreamKHR;
+typedef khronos_uint64_t EGLuint64KHR;
+typedef int EGLNativeFileDescriptorKHR;
+typedef khronos_ssize_t EGLsizeiANDROID;
+typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
+typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
+typedef void *EGLDeviceEXT;
+typedef void *EGLOutputLayerEXT;
+typedef void *EGLOutputPortEXT;
+typedef void *EGLSyncNV;
+typedef khronos_utime_nanoseconds_t EGLTimeNV;
+typedef khronos_utime_nanoseconds_t EGLuint64NV;
+typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+
+struct EGLClientPixmapHI;
+struct AHardwareBuffer;
+
+/* Wayland types for WL_bind_wayland_display purposes */
+struct wl_buffer;
+struct wl_display;
+struct wl_resource;
+
+#define EGL_DONT_CARE ((EGLint)-1)
+
+#define EGL_NO_CONTEXT ((EGLContext)0)
+#define EGL_NO_DISPLAY ((EGLDisplay)0)
+#define EGL_NO_IMAGE ((EGLImage)0)
+#define EGL_NO_SURFACE ((EGLSurface)0)
+#define EGL_NO_SYNC ((EGLSync)0)
+
+#define EGL_UNKNOWN ((EGLint)-1)
+
+#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
+
+EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
+/* ---------------------------- EGL_VERSION_1_0 ---------------------------- */
+
+#ifndef EGL_VERSION_1_0
+#define EGL_VERSION_1_0 1
+
+#define EGL_FALSE 0
+#define EGL_PBUFFER_BIT 0x0001
+#define EGL_TRUE 1
+#define EGL_PIXMAP_BIT 0x0002
+#define EGL_WINDOW_BIT 0x0004
+#define EGL_SUCCESS 0x3000
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_RED_SIZE 0x3024
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_NONE 0x3038
+#define EGL_SLOW_CONFIG 0x3050
+#define EGL_NON_CONFORMANT_CONFIG 0x3051
+#define EGL_TRANSPARENT_RGB 0x3052
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+typedef EGLBoolean ( * PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint * attrib_list, EGLConfig * configs, EGLint config_size, EGLint * num_config);
+typedef EGLBoolean ( * PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+typedef EGLContext ( * PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint * attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx);
+typedef EGLBoolean ( * PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean ( * PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint * value);
+typedef EGLBoolean ( * PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig * configs, EGLint config_size, EGLint * num_config);
+typedef EGLDisplay ( * PFNEGLGETCURRENTDISPLAYPROC) ( void );
+typedef EGLSurface ( * PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw);
+typedef EGLDisplay ( * PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id);
+typedef EGLint ( * PFNEGLGETERRORPROC) ( void );
+typedef EGLBoolean ( * PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint * major, EGLint * minor);
+typedef EGLBoolean ( * PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+typedef EGLBoolean ( * PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint * value);
+typedef const char * ( * PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name);
+typedef EGLBoolean ( * PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint * value);
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean ( * PFNEGLTERMINATEPROC) (EGLDisplay dpy);
+typedef EGLBoolean ( * PFNEGLWAITGLPROC) ( void );
+typedef EGLBoolean ( * PFNEGLWAITNATIVEPROC) (EGLint engine);
+
+#define eglChooseConfig EGLEW_GET_FUN(__eglewChooseConfig)
+#define eglCopyBuffers EGLEW_GET_FUN(__eglewCopyBuffers)
+#define eglCreateContext EGLEW_GET_FUN(__eglewCreateContext)
+#define eglCreatePbufferSurface EGLEW_GET_FUN(__eglewCreatePbufferSurface)
+#define eglCreatePixmapSurface EGLEW_GET_FUN(__eglewCreatePixmapSurface)
+#define eglCreateWindowSurface EGLEW_GET_FUN(__eglewCreateWindowSurface)
+#define eglDestroyContext EGLEW_GET_FUN(__eglewDestroyContext)
+#define eglDestroySurface EGLEW_GET_FUN(__eglewDestroySurface)
+#define eglGetConfigAttrib EGLEW_GET_FUN(__eglewGetConfigAttrib)
+#define eglGetConfigs EGLEW_GET_FUN(__eglewGetConfigs)
+#define eglGetCurrentDisplay EGLEW_GET_FUN(__eglewGetCurrentDisplay)
+#define eglGetCurrentSurface EGLEW_GET_FUN(__eglewGetCurrentSurface)
+#define eglGetDisplay EGLEW_GET_FUN(__eglewGetDisplay)
+#define eglGetError EGLEW_GET_FUN(__eglewGetError)
+#define eglInitialize EGLEW_GET_FUN(__eglewInitialize)
+#define eglMakeCurrent EGLEW_GET_FUN(__eglewMakeCurrent)
+#define eglQueryContext EGLEW_GET_FUN(__eglewQueryContext)
+#define eglQueryString EGLEW_GET_FUN(__eglewQueryString)
+#define eglQuerySurface EGLEW_GET_FUN(__eglewQuerySurface)
+#define eglSwapBuffers EGLEW_GET_FUN(__eglewSwapBuffers)
+#define eglTerminate EGLEW_GET_FUN(__eglewTerminate)
+#define eglWaitGL EGLEW_GET_FUN(__eglewWaitGL)
+#define eglWaitNative EGLEW_GET_FUN(__eglewWaitNative)
+
+#define EGLEW_VERSION_1_0 EGLEW_GET_VAR(__EGLEW_VERSION_1_0)
+
+#endif /* EGL_VERSION_1_0 */
+
+/* ---------------------------- EGL_VERSION_1_1 ---------------------------- */
+
+#ifndef EGL_VERSION_1_1
+#define EGL_VERSION_1_1 1
+
+#define EGL_CONTEXT_LOST 0x300E
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_BACK_BUFFER 0x3084
+
+typedef EGLBoolean ( * PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean ( * PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean ( * PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+typedef EGLBoolean ( * PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval);
+
+#define eglBindTexImage EGLEW_GET_FUN(__eglewBindTexImage)
+#define eglReleaseTexImage EGLEW_GET_FUN(__eglewReleaseTexImage)
+#define eglSurfaceAttrib EGLEW_GET_FUN(__eglewSurfaceAttrib)
+#define eglSwapInterval EGLEW_GET_FUN(__eglewSwapInterval)
+
+#define EGLEW_VERSION_1_1 EGLEW_GET_VAR(__EGLEW_VERSION_1_1)
+
+#endif /* EGL_VERSION_1_1 */
+
+/* ---------------------------- EGL_VERSION_1_2 ---------------------------- */
+
+#ifndef EGL_VERSION_1_2
+#define EGL_VERSION_1_2 1
+
+#define EGL_OPENGL_ES_BIT 0x0001
+#define EGL_OPENVG_BIT 0x0002
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_RENDERABLE_TYPE 0x3040
+#define EGL_SINGLE_BUFFER 0x3085
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_COLORSPACE_LINEAR 0x308A
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_ALPHA_FORMAT_PRE 0x308C
+#define EGL_CLIENT_APIS 0x308D
+#define EGL_RGB_BUFFER 0x308E
+#define EGL_LUMINANCE_BUFFER 0x308F
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+#define EGL_BUFFER_PRESERVED 0x3094
+#define EGL_BUFFER_DESTROYED 0x3095
+#define EGL_OPENVG_IMAGE 0x3096
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+#define EGL_DISPLAY_SCALING 10000
+
+typedef EGLBoolean ( * PFNEGLBINDAPIPROC) (EGLenum api);
+typedef EGLSurface ( * PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint * attrib_list);
+typedef EGLenum ( * PFNEGLQUERYAPIPROC) ( void );
+typedef EGLBoolean ( * PFNEGLRELEASETHREADPROC) ( void );
+typedef EGLBoolean ( * PFNEGLWAITCLIENTPROC) ( void );
+
+#define eglBindAPI EGLEW_GET_FUN(__eglewBindAPI)
+#define eglCreatePbufferFromClientBuffer EGLEW_GET_FUN(__eglewCreatePbufferFromClientBuffer)
+#define eglQueryAPI EGLEW_GET_FUN(__eglewQueryAPI)
+#define eglReleaseThread EGLEW_GET_FUN(__eglewReleaseThread)
+#define eglWaitClient EGLEW_GET_FUN(__eglewWaitClient)
+
+#define EGLEW_VERSION_1_2 EGLEW_GET_VAR(__EGLEW_VERSION_1_2)
+
+#endif /* EGL_VERSION_1_2 */
+
+/* ---------------------------- EGL_VERSION_1_3 ---------------------------- */
+
+#ifndef EGL_VERSION_1_3
+#define EGL_VERSION_1_3 1
+
+#define EGL_OPENGL_ES2_BIT 0x0004
+#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
+#define EGL_MATCH_NATIVE_PIXMAP 0x3041
+#define EGL_CONFORMANT 0x3042
+#define EGL_VG_COLORSPACE 0x3087
+#define EGL_VG_ALPHA_FORMAT 0x3088
+#define EGL_VG_COLORSPACE_LINEAR 0x308A
+#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+
+#define EGLEW_VERSION_1_3 EGLEW_GET_VAR(__EGLEW_VERSION_1_3)
+
+#endif /* EGL_VERSION_1_3 */
+
+/* ---------------------------- EGL_VERSION_1_4 ---------------------------- */
+
+#ifndef EGL_VERSION_1_4
+#define EGL_VERSION_1_4 1
+
+#define EGL_OPENGL_BIT 0x0008
+#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
+#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
+#define EGL_MULTISAMPLE_RESOLVE 0x3099
+#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
+#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
+#define EGL_OPENGL_API 0x30A2
+
+typedef EGLContext ( * PFNEGLGETCURRENTCONTEXTPROC) ( void );
+
+#define eglGetCurrentContext EGLEW_GET_FUN(__eglewGetCurrentContext)
+
+#define EGLEW_VERSION_1_4 EGLEW_GET_VAR(__EGLEW_VERSION_1_4)
+
+#endif /* EGL_VERSION_1_4 */
+
+/* ---------------------------- EGL_VERSION_1_5 ---------------------------- */
+
+#ifndef EGL_VERSION_1_5
+#define EGL_VERSION_1_5 1
+
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
+#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define EGL_OPENGL_ES3_BIT 0x00000040
+#define EGL_GL_COLORSPACE_SRGB 0x3089
+#define EGL_GL_COLORSPACE_LINEAR 0x308A
+#define EGL_CONTEXT_MAJOR_VERSION 0x3098
+#define EGL_CL_EVENT_HANDLE 0x309C
+#define EGL_GL_COLORSPACE 0x309D
+#define EGL_GL_TEXTURE_2D 0x30B1
+#define EGL_GL_TEXTURE_3D 0x30B2
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
+#define EGL_GL_RENDERBUFFER 0x30B9
+#define EGL_GL_TEXTURE_LEVEL 0x30BC
+#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
+#define EGL_IMAGE_PRESERVED 0x30D2
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
+#define EGL_SYNC_STATUS 0x30F1
+#define EGL_SIGNALED 0x30F2
+#define EGL_UNSIGNALED 0x30F3
+#define EGL_TIMEOUT_EXPIRED 0x30F5
+#define EGL_CONDITION_SATISFIED 0x30F6
+#define EGL_SYNC_TYPE 0x30F7
+#define EGL_SYNC_CONDITION 0x30F8
+#define EGL_SYNC_FENCE 0x30F9
+#define EGL_CONTEXT_MINOR_VERSION 0x30FB
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
+#define EGL_SYNC_CL_EVENT 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
+#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
+#define EGL_NO_RESET_NOTIFICATION 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
+#define EGL_FOREVER 0xFFFFFFFFFFFFFFFF
+
+typedef EGLint ( * PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
+typedef EGLImage ( * PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLAttrib * attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void * native_window, const EGLAttrib * attrib_list);
+typedef EGLSync ( * PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image);
+typedef EGLBoolean ( * PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync);
+typedef EGLDisplay ( * PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void * native_display, const EGLAttrib * attrib_list);
+typedef EGLBoolean ( * PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib * value);
+typedef EGLBoolean ( * PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags);
+
+#define eglClientWaitSync EGLEW_GET_FUN(__eglewClientWaitSync)
+#define eglCreateImage EGLEW_GET_FUN(__eglewCreateImage)
+#define eglCreatePlatformPixmapSurface EGLEW_GET_FUN(__eglewCreatePlatformPixmapSurface)
+#define eglCreatePlatformWindowSurface EGLEW_GET_FUN(__eglewCreatePlatformWindowSurface)
+#define eglCreateSync EGLEW_GET_FUN(__eglewCreateSync)
+#define eglDestroyImage EGLEW_GET_FUN(__eglewDestroyImage)
+#define eglDestroySync EGLEW_GET_FUN(__eglewDestroySync)
+#define eglGetPlatformDisplay EGLEW_GET_FUN(__eglewGetPlatformDisplay)
+#define eglGetSyncAttrib EGLEW_GET_FUN(__eglewGetSyncAttrib)
+#define eglWaitSync EGLEW_GET_FUN(__eglewWaitSync)
+
+#define EGLEW_VERSION_1_5 EGLEW_GET_VAR(__EGLEW_VERSION_1_5)
+
+#endif /* EGL_VERSION_1_5 */
+
+/* ------------------------ EGL_ANDROID_GLES_layers ------------------------ */
+
+#ifndef EGL_ANDROID_GLES_layers
+#define EGL_ANDROID_GLES_layers 1
+
+#define EGLEW_ANDROID_GLES_layers EGLEW_GET_VAR(__EGLEW_ANDROID_GLES_layers)
+
+#endif /* EGL_ANDROID_GLES_layers */
+
+/* ------------------------- EGL_ANDROID_blob_cache ------------------------ */
+
+#ifndef EGL_ANDROID_blob_cache
+#define EGL_ANDROID_blob_cache 1
+
+typedef void ( * PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+
+#define eglSetBlobCacheFuncsANDROID EGLEW_GET_FUN(__eglewSetBlobCacheFuncsANDROID)
+
+#define EGLEW_ANDROID_blob_cache EGLEW_GET_VAR(__EGLEW_ANDROID_blob_cache)
+
+#endif /* EGL_ANDROID_blob_cache */
+
+/* ---------------- EGL_ANDROID_create_native_client_buffer ---------------- */
+
+#ifndef EGL_ANDROID_create_native_client_buffer
+#define EGL_ANDROID_create_native_client_buffer 1
+
+#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+
+typedef EGLClientBuffer ( * PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint* attrib_list);
+
+#define eglCreateNativeClientBufferANDROID EGLEW_GET_FUN(__eglewCreateNativeClientBufferANDROID)
+
+#define EGLEW_ANDROID_create_native_client_buffer EGLEW_GET_VAR(__EGLEW_ANDROID_create_native_client_buffer)
+
+#endif /* EGL_ANDROID_create_native_client_buffer */
+
+/* --------------------- EGL_ANDROID_framebuffer_target -------------------- */
+
+#ifndef EGL_ANDROID_framebuffer_target
+#define EGL_ANDROID_framebuffer_target 1
+
+#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
+
+#define EGLEW_ANDROID_framebuffer_target EGLEW_GET_VAR(__EGLEW_ANDROID_framebuffer_target)
+
+#endif /* EGL_ANDROID_framebuffer_target */
+
+/* ----------------- EGL_ANDROID_front_buffer_auto_refresh ----------------- */
+
+#ifndef EGL_ANDROID_front_buffer_auto_refresh
+#define EGL_ANDROID_front_buffer_auto_refresh 1
+
+#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
+
+#define EGLEW_ANDROID_front_buffer_auto_refresh EGLEW_GET_VAR(__EGLEW_ANDROID_front_buffer_auto_refresh)
+
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+
+/* -------------------- EGL_ANDROID_get_frame_timestamps ------------------- */
+
+#ifndef EGL_ANDROID_get_frame_timestamps
+#define EGL_ANDROID_get_frame_timestamps 1
+
+#define EGL_TIMESTAMPS_ANDROID 0x3430
+#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+#define EGL_READS_DONE_TIME_ANDROID 0x343C
+
+typedef EGLBoolean ( * PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint* names, EGLnsecsANDROID* values);
+typedef EGLBoolean ( * PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name);
+typedef EGLBoolean ( * PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
+typedef EGLBoolean ( * PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint* timestamps, EGLnsecsANDROID* values);
+typedef EGLBoolean ( * PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR* frameId);
+
+#define eglGetCompositorTimingANDROID EGLEW_GET_FUN(__eglewGetCompositorTimingANDROID)
+#define eglGetCompositorTimingSupportedANDROID EGLEW_GET_FUN(__eglewGetCompositorTimingSupportedANDROID)
+#define eglGetFrameTimestampSupportedANDROID EGLEW_GET_FUN(__eglewGetFrameTimestampSupportedANDROID)
+#define eglGetFrameTimestampsANDROID EGLEW_GET_FUN(__eglewGetFrameTimestampsANDROID)
+#define eglGetNextFrameIdANDROID EGLEW_GET_FUN(__eglewGetNextFrameIdANDROID)
+
+#define EGLEW_ANDROID_get_frame_timestamps EGLEW_GET_VAR(__EGLEW_ANDROID_get_frame_timestamps)
+
+#endif /* EGL_ANDROID_get_frame_timestamps */
+
+/* ------------------ EGL_ANDROID_get_native_client_buffer ----------------- */
+
+#ifndef EGL_ANDROID_get_native_client_buffer
+#define EGL_ANDROID_get_native_client_buffer 1
+
+typedef EGLClientBuffer ( * PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer* buffer);
+
+#define eglGetNativeClientBufferANDROID EGLEW_GET_FUN(__eglewGetNativeClientBufferANDROID)
+
+#define EGLEW_ANDROID_get_native_client_buffer EGLEW_GET_VAR(__EGLEW_ANDROID_get_native_client_buffer)
+
+#endif /* EGL_ANDROID_get_native_client_buffer */
+
+/* -------------------- EGL_ANDROID_image_native_buffer -------------------- */
+
+#ifndef EGL_ANDROID_image_native_buffer
+#define EGL_ANDROID_image_native_buffer 1
+
+#define EGL_NATIVE_BUFFER_ANDROID 0x3140
+
+#define EGLEW_ANDROID_image_native_buffer EGLEW_GET_VAR(__EGLEW_ANDROID_image_native_buffer)
+
+#endif /* EGL_ANDROID_image_native_buffer */
+
+/* --------------------- EGL_ANDROID_native_fence_sync --------------------- */
+
+#ifndef EGL_ANDROID_native_fence_sync
+#define EGL_ANDROID_native_fence_sync 1
+
+#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+
+typedef EGLint ( * PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
+
+#define eglDupNativeFenceFDANDROID EGLEW_GET_FUN(__eglewDupNativeFenceFDANDROID)
+
+#define EGLEW_ANDROID_native_fence_sync EGLEW_GET_VAR(__EGLEW_ANDROID_native_fence_sync)
+
+#endif /* EGL_ANDROID_native_fence_sync */
+
+/* --------------------- EGL_ANDROID_presentation_time --------------------- */
+
+#ifndef EGL_ANDROID_presentation_time
+#define EGL_ANDROID_presentation_time 1
+
+typedef EGLBoolean ( * PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
+
+#define eglPresentationTimeANDROID EGLEW_GET_FUN(__eglewPresentationTimeANDROID)
+
+#define EGLEW_ANDROID_presentation_time EGLEW_GET_VAR(__EGLEW_ANDROID_presentation_time)
+
+#endif /* EGL_ANDROID_presentation_time */
+
+/* ------------------------- EGL_ANDROID_recordable ------------------------ */
+
+#ifndef EGL_ANDROID_recordable
+#define EGL_ANDROID_recordable 1
+
+#define EGL_RECORDABLE_ANDROID 0x3142
+
+#define EGLEW_ANDROID_recordable EGLEW_GET_VAR(__EGLEW_ANDROID_recordable)
+
+#endif /* EGL_ANDROID_recordable */
+
+/* ---------------- EGL_ANGLE_d3d_share_handle_client_buffer --------------- */
+
+#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
+#define EGL_ANGLE_d3d_share_handle_client_buffer 1
+
+#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+
+#define EGLEW_ANGLE_d3d_share_handle_client_buffer EGLEW_GET_VAR(__EGLEW_ANGLE_d3d_share_handle_client_buffer)
+
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+
+/* -------------------------- EGL_ANGLE_device_d3d ------------------------- */
+
+#ifndef EGL_ANGLE_device_d3d
+#define EGL_ANGLE_device_d3d 1
+
+#define EGL_D3D9_DEVICE_ANGLE 0x33A0
+#define EGL_D3D11_DEVICE_ANGLE 0x33A1
+
+#define EGLEW_ANGLE_device_d3d EGLEW_GET_VAR(__EGLEW_ANGLE_device_d3d)
+
+#endif /* EGL_ANGLE_device_d3d */
+
+/* -------------------- EGL_ANGLE_query_surface_pointer -------------------- */
+
+#ifndef EGL_ANGLE_query_surface_pointer
+#define EGL_ANGLE_query_surface_pointer 1
+
+typedef EGLBoolean ( * PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void** value);
+
+#define eglQuerySurfacePointerANGLE EGLEW_GET_FUN(__eglewQuerySurfacePointerANGLE)
+
+#define EGLEW_ANGLE_query_surface_pointer EGLEW_GET_VAR(__EGLEW_ANGLE_query_surface_pointer)
+
+#endif /* EGL_ANGLE_query_surface_pointer */
+
+/* ------------- EGL_ANGLE_surface_d3d_texture_2d_share_handle ------------- */
+
+#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
+
+#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+
+#define EGLEW_ANGLE_surface_d3d_texture_2d_share_handle EGLEW_GET_VAR(__EGLEW_ANGLE_surface_d3d_texture_2d_share_handle)
+
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+
+/* ---------------------- EGL_ANGLE_sync_control_rate ---------------------- */
+
+#ifndef EGL_ANGLE_sync_control_rate
+#define EGL_ANGLE_sync_control_rate 1
+
+typedef EGLBoolean ( * PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint* numerator, EGLint* denominator);
+
+#define eglGetMscRateANGLE EGLEW_GET_FUN(__eglewGetMscRateANGLE)
+
+#define EGLEW_ANGLE_sync_control_rate EGLEW_GET_VAR(__EGLEW_ANGLE_sync_control_rate)
+
+#endif /* EGL_ANGLE_sync_control_rate */
+
+/* ---------------------- EGL_ANGLE_window_fixed_size ---------------------- */
+
+#ifndef EGL_ANGLE_window_fixed_size
+#define EGL_ANGLE_window_fixed_size 1
+
+#define EGL_FIXED_SIZE_ANGLE 0x3201
+
+#define EGLEW_ANGLE_window_fixed_size EGLEW_GET_VAR(__EGLEW_ANGLE_window_fixed_size)
+
+#endif /* EGL_ANGLE_window_fixed_size */
+
+/* -------------------------- EGL_ARM_image_format ------------------------- */
+
+#ifndef EGL_ARM_image_format
+#define EGL_ARM_image_format 1
+
+#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
+#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
+
+#define EGLEW_ARM_image_format EGLEW_GET_VAR(__EGLEW_ARM_image_format)
+
+#endif /* EGL_ARM_image_format */
+
+/* --------------------- EGL_ARM_implicit_external_sync -------------------- */
+
+#ifndef EGL_ARM_implicit_external_sync
+#define EGL_ARM_implicit_external_sync 1
+
+#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
+
+#define EGLEW_ARM_implicit_external_sync EGLEW_GET_VAR(__EGLEW_ARM_implicit_external_sync)
+
+#endif /* EGL_ARM_implicit_external_sync */
+
+/* ------------------- EGL_ARM_pixmap_multisample_discard ------------------ */
+
+#ifndef EGL_ARM_pixmap_multisample_discard
+#define EGL_ARM_pixmap_multisample_discard 1
+
+#define EGL_DISCARD_SAMPLES_ARM 0x3286
+
+#define EGLEW_ARM_pixmap_multisample_discard EGLEW_GET_VAR(__EGLEW_ARM_pixmap_multisample_discard)
+
+#endif /* EGL_ARM_pixmap_multisample_discard */
+
+/* ------------------------- EGL_EXT_bind_to_front ------------------------- */
+
+#ifndef EGL_EXT_bind_to_front
+#define EGL_EXT_bind_to_front 1
+
+#define EGL_FRONT_BUFFER_EXT 0x3464
+
+#define EGLEW_EXT_bind_to_front EGLEW_GET_VAR(__EGLEW_EXT_bind_to_front)
+
+#endif /* EGL_EXT_bind_to_front */
+
+/* --------------------------- EGL_EXT_buffer_age -------------------------- */
+
+#ifndef EGL_EXT_buffer_age
+#define EGL_EXT_buffer_age 1
+
+#define EGL_BUFFER_AGE_EXT 0x313D
+
+#define EGLEW_EXT_buffer_age EGLEW_GET_VAR(__EGLEW_EXT_buffer_age)
+
+#endif /* EGL_EXT_buffer_age */
+
+/* ----------------------- EGL_EXT_client_extensions ----------------------- */
+
+#ifndef EGL_EXT_client_extensions
+#define EGL_EXT_client_extensions 1
+
+#define EGLEW_EXT_client_extensions EGLEW_GET_VAR(__EGLEW_EXT_client_extensions)
+
+#endif /* EGL_EXT_client_extensions */
+
+/* -------------------------- EGL_EXT_client_sync -------------------------- */
+
+#ifndef EGL_EXT_client_sync
+#define EGL_EXT_client_sync 1
+
+#define EGL_SYNC_CLIENT_EXT 0x3364
+#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+
+typedef EGLBoolean ( * PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib* attrib_list);
+
+#define eglClientSignalSyncEXT EGLEW_GET_FUN(__eglewClientSignalSyncEXT)
+
+#define EGLEW_EXT_client_sync EGLEW_GET_VAR(__EGLEW_EXT_client_sync)
+
+#endif /* EGL_EXT_client_sync */
+
+/* --------------------------- EGL_EXT_compositor -------------------------- */
+
+#ifndef EGL_EXT_compositor
+#define EGL_EXT_compositor 1
+
+#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+#define EGL_EXTERNAL_REF_ID_EXT 0x3461
+#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+
+typedef EGLBoolean ( * PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint* context_attributes, EGLint num_entries);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint* external_ref_ids, EGLint num_entries);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint* window_attributes, EGLint num_entries);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint* external_win_ids, EGLint num_entries);
+typedef EGLBoolean ( * PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy);
+
+#define eglCompositorBindTexWindowEXT EGLEW_GET_FUN(__eglewCompositorBindTexWindowEXT)
+#define eglCompositorSetContextAttributesEXT EGLEW_GET_FUN(__eglewCompositorSetContextAttributesEXT)
+#define eglCompositorSetContextListEXT EGLEW_GET_FUN(__eglewCompositorSetContextListEXT)
+#define eglCompositorSetSizeEXT EGLEW_GET_FUN(__eglewCompositorSetSizeEXT)
+#define eglCompositorSetWindowAttributesEXT EGLEW_GET_FUN(__eglewCompositorSetWindowAttributesEXT)
+#define eglCompositorSetWindowListEXT EGLEW_GET_FUN(__eglewCompositorSetWindowListEXT)
+#define eglCompositorSwapPolicyEXT EGLEW_GET_FUN(__eglewCompositorSwapPolicyEXT)
+
+#define EGLEW_EXT_compositor EGLEW_GET_VAR(__EGLEW_EXT_compositor)
+
+#endif /* EGL_EXT_compositor */
+
+/* ---------------------- EGL_EXT_config_select_group ---------------------- */
+
+#ifndef EGL_EXT_config_select_group
+#define EGL_EXT_config_select_group 1
+
+#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
+
+#define EGLEW_EXT_config_select_group EGLEW_GET_VAR(__EGLEW_EXT_config_select_group)
+
+#endif /* EGL_EXT_config_select_group */
+
+/* ------------------- EGL_EXT_create_context_robustness ------------------- */
+
+#ifndef EGL_EXT_create_context_robustness
+#define EGL_EXT_create_context_robustness 1
+
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
+
+#define EGLEW_EXT_create_context_robustness EGLEW_GET_VAR(__EGLEW_EXT_create_context_robustness)
+
+#endif /* EGL_EXT_create_context_robustness */
+
+/* -------------------------- EGL_EXT_device_base -------------------------- */
+
+#ifndef EGL_EXT_device_base
+#define EGL_EXT_device_base 1
+
+#define EGL_BAD_DEVICE_EXT 0x322B
+#define EGL_DEVICE_EXT 0x322C
+
+#define EGLEW_EXT_device_base EGLEW_GET_VAR(__EGLEW_EXT_device_base)
+
+#endif /* EGL_EXT_device_base */
+
+/* --------------------------- EGL_EXT_device_drm -------------------------- */
+
+#ifndef EGL_EXT_device_drm
+#define EGL_EXT_device_drm 1
+
+#define EGL_DRM_DEVICE_FILE_EXT 0x3233
+#define EGL_DRM_MASTER_FD_EXT 0x333C
+
+#define EGLEW_EXT_device_drm EGLEW_GET_VAR(__EGLEW_EXT_device_drm)
+
+#endif /* EGL_EXT_device_drm */
+
+/* --------------------- EGL_EXT_device_drm_render_node -------------------- */
+
+#ifndef EGL_EXT_device_drm_render_node
+#define EGL_EXT_device_drm_render_node 1
+
+#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
+
+#define EGLEW_EXT_device_drm_render_node EGLEW_GET_VAR(__EGLEW_EXT_device_drm_render_node)
+
+#endif /* EGL_EXT_device_drm_render_node */
+
+/* ----------------------- EGL_EXT_device_enumeration ---------------------- */
+
+#ifndef EGL_EXT_device_enumeration
+#define EGL_EXT_device_enumeration 1
+
+typedef EGLBoolean ( * PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT* devices, EGLint* num_devices);
+
+#define eglQueryDevicesEXT EGLEW_GET_FUN(__eglewQueryDevicesEXT)
+
+#define EGLEW_EXT_device_enumeration EGLEW_GET_VAR(__EGLEW_EXT_device_enumeration)
+
+#endif /* EGL_EXT_device_enumeration */
+
+/* ------------------------- EGL_EXT_device_openwf ------------------------- */
+
+#ifndef EGL_EXT_device_openwf
+#define EGL_EXT_device_openwf 1
+
+#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
+#define EGL_OPENWF_DEVICE_EXT 0x333D
+
+#define EGLEW_EXT_device_openwf EGLEW_GET_VAR(__EGLEW_EXT_device_openwf)
+
+#endif /* EGL_EXT_device_openwf */
+
+/* ---------------------- EGL_EXT_device_persistent_id --------------------- */
+
+#ifndef EGL_EXT_device_persistent_id
+#define EGL_EXT_device_persistent_id 1
+
+#define EGL_DEVICE_UUID_EXT 0x335C
+#define EGL_DRIVER_UUID_EXT 0x335D
+#define EGL_DRIVER_NAME_EXT 0x335E
+
+typedef EGLBoolean ( * PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void* value, EGLint* size);
+
+#define eglQueryDeviceBinaryEXT EGLEW_GET_FUN(__eglewQueryDeviceBinaryEXT)
+
+#define EGLEW_EXT_device_persistent_id EGLEW_GET_VAR(__EGLEW_EXT_device_persistent_id)
+
+#endif /* EGL_EXT_device_persistent_id */
+
+/* -------------------------- EGL_EXT_device_query ------------------------- */
+
+#ifndef EGL_EXT_device_query
+#define EGL_EXT_device_query 1
+
+#define EGL_BAD_DEVICE_EXT 0x322B
+#define EGL_DEVICE_EXT 0x322C
+
+typedef EGLBoolean ( * PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib* value);
+typedef const char* ( * PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
+typedef EGLBoolean ( * PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib* value);
+
+#define eglQueryDeviceAttribEXT EGLEW_GET_FUN(__eglewQueryDeviceAttribEXT)
+#define eglQueryDeviceStringEXT EGLEW_GET_FUN(__eglewQueryDeviceStringEXT)
+#define eglQueryDisplayAttribEXT EGLEW_GET_FUN(__eglewQueryDisplayAttribEXT)
+
+#define EGLEW_EXT_device_query EGLEW_GET_VAR(__EGLEW_EXT_device_query)
+
+#endif /* EGL_EXT_device_query */
+
+/* ----------------------- EGL_EXT_device_query_name ----------------------- */
+
+#ifndef EGL_EXT_device_query_name
+#define EGL_EXT_device_query_name 1
+
+#define EGL_RENDERER_EXT 0x335F
+
+#define EGLEW_EXT_device_query_name EGLEW_GET_VAR(__EGLEW_EXT_device_query_name)
+
+#endif /* EGL_EXT_device_query_name */
+
+/* ------------------------ EGL_EXT_explicit_device ------------------------ */
+
+#ifndef EGL_EXT_explicit_device
+#define EGL_EXT_explicit_device 1
+
+#define EGL_DEVICE_EXT 0x322C
+
+#define EGLEW_EXT_explicit_device EGLEW_GET_VAR(__EGLEW_EXT_explicit_device)
+
+#endif /* EGL_EXT_explicit_device */
+
+/* ------------------ EGL_EXT_gl_colorspace_bt2020_linear ------------------ */
+
+#ifndef EGL_EXT_gl_colorspace_bt2020_linear
+#define EGL_EXT_gl_colorspace_bt2020_linear 1
+
+#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
+
+#define EGLEW_EXT_gl_colorspace_bt2020_linear EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_bt2020_linear)
+
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+
+/* -------------------- EGL_EXT_gl_colorspace_bt2020_pq -------------------- */
+
+#ifndef EGL_EXT_gl_colorspace_bt2020_pq
+#define EGL_EXT_gl_colorspace_bt2020_pq 1
+
+#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
+
+#define EGLEW_EXT_gl_colorspace_bt2020_pq EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_bt2020_pq)
+
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+
+/* -------------------- EGL_EXT_gl_colorspace_display_p3 ------------------- */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3
+#define EGL_EXT_gl_colorspace_display_p3 1
+
+#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
+
+#define EGLEW_EXT_gl_colorspace_display_p3 EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_display_p3)
+
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+
+/* ---------------- EGL_EXT_gl_colorspace_display_p3_linear ---------------- */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3_linear
+#define EGL_EXT_gl_colorspace_display_p3_linear 1
+
+#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
+
+#define EGLEW_EXT_gl_colorspace_display_p3_linear EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_display_p3_linear)
+
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+
+/* -------------- EGL_EXT_gl_colorspace_display_p3_passthrough ------------- */
+
+#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough
+#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
+
+#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
+
+#define EGLEW_EXT_gl_colorspace_display_p3_passthrough EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_display_p3_passthrough)
+
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+
+/* ---------------------- EGL_EXT_gl_colorspace_scrgb ---------------------- */
+
+#ifndef EGL_EXT_gl_colorspace_scrgb
+#define EGL_EXT_gl_colorspace_scrgb 1
+
+#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
+
+#define EGLEW_EXT_gl_colorspace_scrgb EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_scrgb)
+
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+
+/* ------------------- EGL_EXT_gl_colorspace_scrgb_linear ------------------ */
+
+#ifndef EGL_EXT_gl_colorspace_scrgb_linear
+#define EGL_EXT_gl_colorspace_scrgb_linear 1
+
+#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
+
+#define EGLEW_EXT_gl_colorspace_scrgb_linear EGLEW_GET_VAR(__EGLEW_EXT_gl_colorspace_scrgb_linear)
+
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+
+/* ---------------------- EGL_EXT_image_dma_buf_import --------------------- */
+
+#ifndef EGL_EXT_image_dma_buf_import
+#define EGL_EXT_image_dma_buf_import 1
+
+#define EGL_LINUX_DMA_BUF_EXT 0x3270
+#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
+#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+#define EGL_ITU_REC601_EXT 0x327F
+#define EGL_ITU_REC709_EXT 0x3280
+#define EGL_ITU_REC2020_EXT 0x3281
+#define EGL_YUV_FULL_RANGE_EXT 0x3282
+#define EGL_YUV_NARROW_RANGE_EXT 0x3283
+#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
+
+#define EGLEW_EXT_image_dma_buf_import EGLEW_GET_VAR(__EGLEW_EXT_image_dma_buf_import)
+
+#endif /* EGL_EXT_image_dma_buf_import */
+
+/* ----------------- EGL_EXT_image_dma_buf_import_modifiers ---------------- */
+
+#ifndef EGL_EXT_image_dma_buf_import_modifiers
+#define EGL_EXT_image_dma_buf_import_modifiers 1
+
+#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+
+typedef EGLBoolean ( * PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint* formats, EGLint* num_formats);
+typedef EGLBoolean ( * PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR* modifiers, EGLBoolean* external_only, EGLint* num_modifiers);
+
+#define eglQueryDmaBufFormatsEXT EGLEW_GET_FUN(__eglewQueryDmaBufFormatsEXT)
+#define eglQueryDmaBufModifiersEXT EGLEW_GET_FUN(__eglewQueryDmaBufModifiersEXT)
+
+#define EGLEW_EXT_image_dma_buf_import_modifiers EGLEW_GET_VAR(__EGLEW_EXT_image_dma_buf_import_modifiers)
+
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+
+/* ---------------------- EGL_EXT_image_gl_colorspace ---------------------- */
+
+#ifndef EGL_EXT_image_gl_colorspace
+#define EGL_EXT_image_gl_colorspace 1
+
+#define EGL_GL_COLORSPACE 0x309D
+#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
+
+#define EGLEW_EXT_image_gl_colorspace EGLEW_GET_VAR(__EGLEW_EXT_image_gl_colorspace)
+
+#endif /* EGL_EXT_image_gl_colorspace */
+
+/* ------------------ EGL_EXT_image_implicit_sync_control ------------------ */
+
+#ifndef EGL_EXT_image_implicit_sync_control
+#define EGL_EXT_image_implicit_sync_control 1
+
+#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
+
+#define EGLEW_EXT_image_implicit_sync_control EGLEW_GET_VAR(__EGLEW_EXT_image_implicit_sync_control)
+
+#endif /* EGL_EXT_image_implicit_sync_control */
+
+/* ------------------------ EGL_EXT_multiview_window ----------------------- */
+
+#ifndef EGL_EXT_multiview_window
+#define EGL_EXT_multiview_window 1
+
+#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
+
+#define EGLEW_EXT_multiview_window EGLEW_GET_VAR(__EGLEW_EXT_multiview_window)
+
+#endif /* EGL_EXT_multiview_window */
+
+/* -------------------------- EGL_EXT_output_base -------------------------- */
+
+#ifndef EGL_EXT_output_base
+#define EGL_EXT_output_base 1
+
+#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
+#define EGL_SWAP_INTERVAL_EXT 0x322F
+
+typedef EGLBoolean ( * PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib* attrib_list, EGLOutputLayerEXT* layers, EGLint max_layers, EGLint* num_layers);
+typedef EGLBoolean ( * PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib* attrib_list, EGLOutputPortEXT* ports, EGLint max_ports, EGLint* num_ports);
+typedef EGLBoolean ( * PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean ( * PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean ( * PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib* value);
+typedef const char* ( * PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
+typedef EGLBoolean ( * PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib* value);
+typedef const char* ( * PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
+
+#define eglGetOutputLayersEXT EGLEW_GET_FUN(__eglewGetOutputLayersEXT)
+#define eglGetOutputPortsEXT EGLEW_GET_FUN(__eglewGetOutputPortsEXT)
+#define eglOutputLayerAttribEXT EGLEW_GET_FUN(__eglewOutputLayerAttribEXT)
+#define eglOutputPortAttribEXT EGLEW_GET_FUN(__eglewOutputPortAttribEXT)
+#define eglQueryOutputLayerAttribEXT EGLEW_GET_FUN(__eglewQueryOutputLayerAttribEXT)
+#define eglQueryOutputLayerStringEXT EGLEW_GET_FUN(__eglewQueryOutputLayerStringEXT)
+#define eglQueryOutputPortAttribEXT EGLEW_GET_FUN(__eglewQueryOutputPortAttribEXT)
+#define eglQueryOutputPortStringEXT EGLEW_GET_FUN(__eglewQueryOutputPortStringEXT)
+
+#define EGLEW_EXT_output_base EGLEW_GET_VAR(__EGLEW_EXT_output_base)
+
+#endif /* EGL_EXT_output_base */
+
+/* --------------------------- EGL_EXT_output_drm -------------------------- */
+
+#ifndef EGL_EXT_output_drm
+#define EGL_EXT_output_drm 1
+
+#define EGL_DRM_CRTC_EXT 0x3234
+#define EGL_DRM_PLANE_EXT 0x3235
+#define EGL_DRM_CONNECTOR_EXT 0x3236
+
+#define EGLEW_EXT_output_drm EGLEW_GET_VAR(__EGLEW_EXT_output_drm)
+
+#endif /* EGL_EXT_output_drm */
+
+/* ------------------------- EGL_EXT_output_openwf ------------------------- */
+
+#ifndef EGL_EXT_output_openwf
+#define EGL_EXT_output_openwf 1
+
+#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+#define EGL_OPENWF_PORT_ID_EXT 0x3239
+
+#define EGLEW_EXT_output_openwf EGLEW_GET_VAR(__EGLEW_EXT_output_openwf)
+
+#endif /* EGL_EXT_output_openwf */
+
+/* ----------------------- EGL_EXT_pixel_format_float ---------------------- */
+
+#ifndef EGL_EXT_pixel_format_float
+#define EGL_EXT_pixel_format_float 1
+
+#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+
+#define EGLEW_EXT_pixel_format_float EGLEW_GET_VAR(__EGLEW_EXT_pixel_format_float)
+
+#endif /* EGL_EXT_pixel_format_float */
+
+/* ------------------------- EGL_EXT_platform_base ------------------------- */
+
+#ifndef EGL_EXT_platform_base
+#define EGL_EXT_platform_base 1
+
+typedef EGLSurface ( * PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void* native_pixmap, const EGLint* attrib_list);
+typedef EGLSurface ( * PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void* native_window, const EGLint* attrib_list);
+typedef EGLDisplay ( * PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void* native_display, const EGLint* attrib_list);
+
+#define eglCreatePlatformPixmapSurfaceEXT EGLEW_GET_FUN(__eglewCreatePlatformPixmapSurfaceEXT)
+#define eglCreatePlatformWindowSurfaceEXT EGLEW_GET_FUN(__eglewCreatePlatformWindowSurfaceEXT)
+#define eglGetPlatformDisplayEXT EGLEW_GET_FUN(__eglewGetPlatformDisplayEXT)
+
+#define EGLEW_EXT_platform_base EGLEW_GET_VAR(__EGLEW_EXT_platform_base)
+
+#endif /* EGL_EXT_platform_base */
+
+/* ------------------------ EGL_EXT_platform_device ------------------------ */
+
+#ifndef EGL_EXT_platform_device
+#define EGL_EXT_platform_device 1
+
+#define EGL_PLATFORM_DEVICE_EXT 0x313F
+
+#define EGLEW_EXT_platform_device EGLEW_GET_VAR(__EGLEW_EXT_platform_device)
+
+#endif /* EGL_EXT_platform_device */
+
+/* ------------------------ EGL_EXT_platform_wayland ----------------------- */
+
+#ifndef EGL_EXT_platform_wayland
+#define EGL_EXT_platform_wayland 1
+
+#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
+
+#define EGLEW_EXT_platform_wayland EGLEW_GET_VAR(__EGLEW_EXT_platform_wayland)
+
+#endif /* EGL_EXT_platform_wayland */
+
+/* -------------------------- EGL_EXT_platform_x11 ------------------------- */
+
+#ifndef EGL_EXT_platform_x11
+#define EGL_EXT_platform_x11 1
+
+#define EGL_PLATFORM_X11_EXT 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
+
+#define EGLEW_EXT_platform_x11 EGLEW_GET_VAR(__EGLEW_EXT_platform_x11)
+
+#endif /* EGL_EXT_platform_x11 */
+
+/* -------------------------- EGL_EXT_platform_xcb ------------------------- */
+
+#ifndef EGL_EXT_platform_xcb
+#define EGL_EXT_platform_xcb 1
+
+#define EGL_PLATFORM_XCB_EXT 0x31DC
+#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
+
+#define EGLEW_EXT_platform_xcb EGLEW_GET_VAR(__EGLEW_EXT_platform_xcb)
+
+#endif /* EGL_EXT_platform_xcb */
+
+/* ------------------------- EGL_EXT_present_opaque ------------------------ */
+
+#ifndef EGL_EXT_present_opaque
+#define EGL_EXT_present_opaque 1
+
+#define EGL_PRESENT_OPAQUE_EXT 0x31DF
+
+#define EGLEW_EXT_present_opaque EGLEW_GET_VAR(__EGLEW_EXT_present_opaque)
+
+#endif /* EGL_EXT_present_opaque */
+
+/* ----------------------- EGL_EXT_protected_content ----------------------- */
+
+#ifndef EGL_EXT_protected_content
+#define EGL_EXT_protected_content 1
+
+#define EGL_PROTECTED_CONTENT_EXT 0x32C0
+
+#define EGLEW_EXT_protected_content EGLEW_GET_VAR(__EGLEW_EXT_protected_content)
+
+#endif /* EGL_EXT_protected_content */
+
+/* ----------------------- EGL_EXT_protected_surface ----------------------- */
+
+#ifndef EGL_EXT_protected_surface
+#define EGL_EXT_protected_surface 1
+
+#define EGL_PROTECTED_CONTENT_EXT 0x32C0
+
+#define EGLEW_EXT_protected_surface EGLEW_GET_VAR(__EGLEW_EXT_protected_surface)
+
+#endif /* EGL_EXT_protected_surface */
+
+/* ------------------- EGL_EXT_stream_consumer_egloutput ------------------- */
+
+#ifndef EGL_EXT_stream_consumer_egloutput
+#define EGL_EXT_stream_consumer_egloutput 1
+
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
+
+#define eglStreamConsumerOutputEXT EGLEW_GET_FUN(__eglewStreamConsumerOutputEXT)
+
+#define EGLEW_EXT_stream_consumer_egloutput EGLEW_GET_VAR(__EGLEW_EXT_stream_consumer_egloutput)
+
+#endif /* EGL_EXT_stream_consumer_egloutput */
+
+/* ------------------- EGL_EXT_surface_CTA861_3_metadata ------------------- */
+
+#ifndef EGL_EXT_surface_CTA861_3_metadata
+#define EGL_EXT_surface_CTA861_3_metadata 1
+
+#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
+
+#define EGLEW_EXT_surface_CTA861_3_metadata EGLEW_GET_VAR(__EGLEW_EXT_surface_CTA861_3_metadata)
+
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+
+/* ------------------- EGL_EXT_surface_SMPTE2086_metadata ------------------ */
+
+#ifndef EGL_EXT_surface_SMPTE2086_metadata
+#define EGL_EXT_surface_SMPTE2086_metadata 1
+
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+#define EGL_METADATA_SCALING_EXT 50000
+
+#define EGLEW_EXT_surface_SMPTE2086_metadata EGLEW_GET_VAR(__EGLEW_EXT_surface_SMPTE2086_metadata)
+
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+
+/* ---------------------- EGL_EXT_surface_compression ---------------------- */
+
+#ifndef EGL_EXT_surface_compression
+#define EGL_EXT_surface_compression 1
+
+#define EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
+#define EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
+#define EGL_SURFACE_COMPRESSION_EXT 0x34B0
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
+#define EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
+
+typedef EGLBoolean ( * PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC) (EGLDisplay dpy, EGLConfig config, const EGLAttrib* attrib_list, EGLint* rates, EGLint rate_size, EGLint* num_rates);
+
+#define eglQuerySupportedCompressionRatesEXT EGLEW_GET_FUN(__eglewQuerySupportedCompressionRatesEXT)
+
+#define EGLEW_EXT_surface_compression EGLEW_GET_VAR(__EGLEW_EXT_surface_compression)
+
+#endif /* EGL_EXT_surface_compression */
+
+/* -------------------- EGL_EXT_swap_buffers_with_damage ------------------- */
+
+#ifndef EGL_EXT_swap_buffers_with_damage
+#define EGL_EXT_swap_buffers_with_damage 1
+
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint* rects, EGLint n_rects);
+
+#define eglSwapBuffersWithDamageEXT EGLEW_GET_FUN(__eglewSwapBuffersWithDamageEXT)
+
+#define EGLEW_EXT_swap_buffers_with_damage EGLEW_GET_VAR(__EGLEW_EXT_swap_buffers_with_damage)
+
+#endif /* EGL_EXT_swap_buffers_with_damage */
+
+/* --------------------------- EGL_EXT_sync_reuse -------------------------- */
+
+#ifndef EGL_EXT_sync_reuse
+#define EGL_EXT_sync_reuse 1
+
+typedef EGLBoolean ( * PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib* attrib_list);
+
+#define eglUnsignalSyncEXT EGLEW_GET_FUN(__eglewUnsignalSyncEXT)
+
+#define EGLEW_EXT_sync_reuse EGLEW_GET_VAR(__EGLEW_EXT_sync_reuse)
+
+#endif /* EGL_EXT_sync_reuse */
+
+/* -------------------------- EGL_EXT_yuv_surface -------------------------- */
+
+#ifndef EGL_EXT_yuv_surface
+#define EGL_EXT_yuv_surface 1
+
+#define EGL_YUV_BUFFER_EXT 0x3300
+#define EGL_YUV_ORDER_EXT 0x3301
+#define EGL_YUV_ORDER_YUV_EXT 0x3302
+#define EGL_YUV_ORDER_YVU_EXT 0x3303
+#define EGL_YUV_ORDER_YUYV_EXT 0x3304
+#define EGL_YUV_ORDER_UYVY_EXT 0x3305
+#define EGL_YUV_ORDER_YVYU_EXT 0x3306
+#define EGL_YUV_ORDER_VYUY_EXT 0x3307
+#define EGL_YUV_ORDER_AYUV_EXT 0x3308
+#define EGL_YUV_CSC_STANDARD_EXT 0x330A
+#define EGL_YUV_CSC_STANDARD_601_EXT 0x330B
+#define EGL_YUV_CSC_STANDARD_709_EXT 0x330C
+#define EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
+#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+#define EGL_YUV_SUBSAMPLE_EXT 0x3312
+#define EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
+#define EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
+#define EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
+#define EGL_YUV_DEPTH_RANGE_EXT 0x3317
+#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
+#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
+#define EGL_YUV_PLANE_BPP_EXT 0x331A
+#define EGL_YUV_PLANE_BPP_0_EXT 0x331B
+#define EGL_YUV_PLANE_BPP_8_EXT 0x331C
+#define EGL_YUV_PLANE_BPP_10_EXT 0x331D
+
+#define EGLEW_EXT_yuv_surface EGLEW_GET_VAR(__EGLEW_EXT_yuv_surface)
+
+#endif /* EGL_EXT_yuv_surface */
+
+/* -------------------------- EGL_HI_clientpixmap -------------------------- */
+
+#ifndef EGL_HI_clientpixmap
+#define EGL_HI_clientpixmap 1
+
+#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
+
+typedef EGLSurface ( * PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap);
+
+#define eglCreatePixmapSurfaceHI EGLEW_GET_FUN(__eglewCreatePixmapSurfaceHI)
+
+#define EGLEW_HI_clientpixmap EGLEW_GET_VAR(__EGLEW_HI_clientpixmap)
+
+#endif /* EGL_HI_clientpixmap */
+
+/* -------------------------- EGL_HI_colorformats -------------------------- */
+
+#ifndef EGL_HI_colorformats
+#define EGL_HI_colorformats 1
+
+#define EGL_COLOR_FORMAT_HI 0x8F70
+#define EGL_COLOR_RGB_HI 0x8F71
+#define EGL_COLOR_RGBA_HI 0x8F72
+#define EGL_COLOR_ARGB_HI 0x8F73
+
+#define EGLEW_HI_colorformats EGLEW_GET_VAR(__EGLEW_HI_colorformats)
+
+#endif /* EGL_HI_colorformats */
+
+/* ------------------------ EGL_IMG_context_priority ----------------------- */
+
+#ifndef EGL_IMG_context_priority
+#define EGL_IMG_context_priority 1
+
+#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
+
+#define EGLEW_IMG_context_priority EGLEW_GET_VAR(__EGLEW_IMG_context_priority)
+
+#endif /* EGL_IMG_context_priority */
+
+/* ---------------------- EGL_IMG_image_plane_attribs ---------------------- */
+
+#ifndef EGL_IMG_image_plane_attribs
+#define EGL_IMG_image_plane_attribs 1
+
+#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
+
+#define EGLEW_IMG_image_plane_attribs EGLEW_GET_VAR(__EGLEW_IMG_image_plane_attribs)
+
+#endif /* EGL_IMG_image_plane_attribs */
+
+/* ---------------------------- EGL_KHR_cl_event --------------------------- */
+
+#ifndef EGL_KHR_cl_event
+#define EGL_KHR_cl_event 1
+
+#define EGL_CL_EVENT_HANDLE_KHR 0x309C
+#define EGL_SYNC_CL_EVENT_KHR 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+
+#define EGLEW_KHR_cl_event EGLEW_GET_VAR(__EGLEW_KHR_cl_event)
+
+#endif /* EGL_KHR_cl_event */
+
+/* --------------------------- EGL_KHR_cl_event2 --------------------------- */
+
+#ifndef EGL_KHR_cl_event2
+#define EGL_KHR_cl_event2 1
+
+#define EGL_CL_EVENT_HANDLE_KHR 0x309C
+#define EGL_SYNC_CL_EVENT_KHR 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+
+typedef EGLSyncKHR ( * PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR* attrib_list);
+
+#define eglCreateSync64KHR EGLEW_GET_FUN(__eglewCreateSync64KHR)
+
+#define EGLEW_KHR_cl_event2 EGLEW_GET_VAR(__EGLEW_KHR_cl_event2)
+
+#endif /* EGL_KHR_cl_event2 */
+
+/* ----------------- EGL_KHR_client_get_all_proc_addresses ----------------- */
+
+#ifndef EGL_KHR_client_get_all_proc_addresses
+#define EGL_KHR_client_get_all_proc_addresses 1
+
+#define EGLEW_KHR_client_get_all_proc_addresses EGLEW_GET_VAR(__EGLEW_KHR_client_get_all_proc_addresses)
+
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+
+/* ------------------------- EGL_KHR_config_attribs ------------------------ */
+
+#ifndef EGL_KHR_config_attribs
+#define EGL_KHR_config_attribs 1
+
+#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+#define EGL_CONFORMANT_KHR 0x3042
+
+#define EGLEW_KHR_config_attribs EGLEW_GET_VAR(__EGLEW_KHR_config_attribs)
+
+#endif /* EGL_KHR_config_attribs */
+
+/* --------------------- EGL_KHR_context_flush_control --------------------- */
+
+#ifndef EGL_KHR_context_flush_control
+#define EGL_KHR_context_flush_control 1
+
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
+
+#define EGLEW_KHR_context_flush_control EGLEW_GET_VAR(__EGLEW_KHR_context_flush_control)
+
+#endif /* EGL_KHR_context_flush_control */
+
+/* ------------------------- EGL_KHR_create_context ------------------------ */
+
+#ifndef EGL_KHR_create_context
+#define EGL_KHR_create_context 1
+
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+#define EGL_OPENGL_ES3_BIT 0x00000040
+#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
+#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+#define EGL_CONTEXT_FLAGS_KHR 0x30FC
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
+
+#define EGLEW_KHR_create_context EGLEW_GET_VAR(__EGLEW_KHR_create_context)
+
+#endif /* EGL_KHR_create_context */
+
+/* -------------------- EGL_KHR_create_context_no_error -------------------- */
+
+#ifndef EGL_KHR_create_context_no_error
+#define EGL_KHR_create_context_no_error 1
+
+#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
+
+#define EGLEW_KHR_create_context_no_error EGLEW_GET_VAR(__EGLEW_KHR_create_context_no_error)
+
+#endif /* EGL_KHR_create_context_no_error */
+
+/* ----------------------------- EGL_KHR_debug ----------------------------- */
+
+#ifndef EGL_KHR_debug
+#define EGL_KHR_debug 1
+
+#define EGL_OBJECT_THREAD_KHR 0x33B0
+#define EGL_OBJECT_DISPLAY_KHR 0x33B1
+#define EGL_OBJECT_CONTEXT_KHR 0x33B2
+#define EGL_OBJECT_SURFACE_KHR 0x33B3
+#define EGL_OBJECT_IMAGE_KHR 0x33B4
+#define EGL_OBJECT_SYNC_KHR 0x33B5
+#define EGL_OBJECT_STREAM_KHR 0x33B6
+#define EGL_DEBUG_CALLBACK_KHR 0x33B8
+#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
+#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
+
+typedef EGLint ( * PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib* attrib_list);
+typedef EGLint ( * PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
+typedef EGLBoolean ( * PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib* value);
+
+#define eglDebugMessageControlKHR EGLEW_GET_FUN(__eglewDebugMessageControlKHR)
+#define eglLabelObjectKHR EGLEW_GET_FUN(__eglewLabelObjectKHR)
+#define eglQueryDebugKHR EGLEW_GET_FUN(__eglewQueryDebugKHR)
+
+#define EGLEW_KHR_debug EGLEW_GET_VAR(__EGLEW_KHR_debug)
+
+#endif /* EGL_KHR_debug */
+
+/* ----------------------- EGL_KHR_display_reference ----------------------- */
+
+#ifndef EGL_KHR_display_reference
+#define EGL_KHR_display_reference 1
+
+#define EGL_TRACK_REFERENCES_KHR 0x3352
+
+typedef EGLBoolean ( * PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib* value);
+
+#define eglQueryDisplayAttribKHR EGLEW_GET_FUN(__eglewQueryDisplayAttribKHR)
+
+#define EGLEW_KHR_display_reference EGLEW_GET_VAR(__EGLEW_KHR_display_reference)
+
+#endif /* EGL_KHR_display_reference */
+
+/* --------------------------- EGL_KHR_fence_sync -------------------------- */
+
+#ifndef EGL_KHR_fence_sync
+#define EGL_KHR_fence_sync 1
+
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+#define EGL_SYNC_CONDITION_KHR 0x30F8
+#define EGL_SYNC_FENCE_KHR 0x30F9
+
+#define EGLEW_KHR_fence_sync EGLEW_GET_VAR(__EGLEW_KHR_fence_sync)
+
+#endif /* EGL_KHR_fence_sync */
+
+/* --------------------- EGL_KHR_get_all_proc_addresses -------------------- */
+
+#ifndef EGL_KHR_get_all_proc_addresses
+#define EGL_KHR_get_all_proc_addresses 1
+
+#define EGLEW_KHR_get_all_proc_addresses EGLEW_GET_VAR(__EGLEW_KHR_get_all_proc_addresses)
+
+#endif /* EGL_KHR_get_all_proc_addresses */
+
+/* ------------------------- EGL_KHR_gl_colorspace ------------------------- */
+
+#ifndef EGL_KHR_gl_colorspace
+#define EGL_KHR_gl_colorspace 1
+
+#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+#define EGL_GL_COLORSPACE_KHR 0x309D
+
+#define EGLEW_KHR_gl_colorspace EGLEW_GET_VAR(__EGLEW_KHR_gl_colorspace)
+
+#endif /* EGL_KHR_gl_colorspace */
+
+/* --------------------- EGL_KHR_gl_renderbuffer_image --------------------- */
+
+#ifndef EGL_KHR_gl_renderbuffer_image
+#define EGL_KHR_gl_renderbuffer_image 1
+
+#define EGL_GL_RENDERBUFFER_KHR 0x30B9
+
+#define EGLEW_KHR_gl_renderbuffer_image EGLEW_GET_VAR(__EGLEW_KHR_gl_renderbuffer_image)
+
+#endif /* EGL_KHR_gl_renderbuffer_image */
+
+/* ---------------------- EGL_KHR_gl_texture_2D_image ---------------------- */
+
+#ifndef EGL_KHR_gl_texture_2D_image
+#define EGL_KHR_gl_texture_2D_image 1
+
+#define EGL_GL_TEXTURE_2D_KHR 0x30B1
+#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
+
+#define EGLEW_KHR_gl_texture_2D_image EGLEW_GET_VAR(__EGLEW_KHR_gl_texture_2D_image)
+
+#endif /* EGL_KHR_gl_texture_2D_image */
+
+/* ---------------------- EGL_KHR_gl_texture_3D_image ---------------------- */
+
+#ifndef EGL_KHR_gl_texture_3D_image
+#define EGL_KHR_gl_texture_3D_image 1
+
+#define EGL_GL_TEXTURE_3D_KHR 0x30B2
+#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
+
+#define EGLEW_KHR_gl_texture_3D_image EGLEW_GET_VAR(__EGLEW_KHR_gl_texture_3D_image)
+
+#endif /* EGL_KHR_gl_texture_3D_image */
+
+/* -------------------- EGL_KHR_gl_texture_cubemap_image ------------------- */
+
+#ifndef EGL_KHR_gl_texture_cubemap_image
+#define EGL_KHR_gl_texture_cubemap_image 1
+
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
+
+#define EGLEW_KHR_gl_texture_cubemap_image EGLEW_GET_VAR(__EGLEW_KHR_gl_texture_cubemap_image)
+
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+
+/* ----------------------------- EGL_KHR_image ----------------------------- */
+
+#ifndef EGL_KHR_image
+#define EGL_KHR_image 1
+
+#define EGL_NATIVE_PIXMAP_KHR 0x30B0
+
+typedef EGLImageKHR ( * PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
+
+#define eglCreateImageKHR EGLEW_GET_FUN(__eglewCreateImageKHR)
+#define eglDestroyImageKHR EGLEW_GET_FUN(__eglewDestroyImageKHR)
+
+#define EGLEW_KHR_image EGLEW_GET_VAR(__EGLEW_KHR_image)
+
+#endif /* EGL_KHR_image */
+
+/* --------------------------- EGL_KHR_image_base -------------------------- */
+
+#ifndef EGL_KHR_image_base
+#define EGL_KHR_image_base 1
+
+#define EGL_IMAGE_PRESERVED_KHR 0x30D2
+
+#define EGLEW_KHR_image_base EGLEW_GET_VAR(__EGLEW_KHR_image_base)
+
+#endif /* EGL_KHR_image_base */
+
+/* -------------------------- EGL_KHR_image_pixmap ------------------------- */
+
+#ifndef EGL_KHR_image_pixmap
+#define EGL_KHR_image_pixmap 1
+
+#define EGL_NATIVE_PIXMAP_KHR 0x30B0
+
+#define EGLEW_KHR_image_pixmap EGLEW_GET_VAR(__EGLEW_KHR_image_pixmap)
+
+#endif /* EGL_KHR_image_pixmap */
+
+/* -------------------------- EGL_KHR_lock_surface ------------------------- */
+
+#ifndef EGL_KHR_lock_surface
+#define EGL_KHR_lock_surface 1
+
+#define EGL_READ_SURFACE_BIT_KHR 0x0001
+#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
+#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
+#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+#define EGL_MATCH_FORMAT_KHR 0x3043
+#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+#define EGL_FORMAT_RGB_565_KHR 0x30C1
+#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
+#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
+#define EGL_BITMAP_POINTER_KHR 0x30C6
+#define EGL_BITMAP_PITCH_KHR 0x30C7
+#define EGL_BITMAP_ORIGIN_KHR 0x30C8
+#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+#define EGL_LOWER_LEFT_KHR 0x30CE
+#define EGL_UPPER_LEFT_KHR 0x30CF
+
+typedef EGLBoolean ( * PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
+
+#define eglLockSurfaceKHR EGLEW_GET_FUN(__eglewLockSurfaceKHR)
+#define eglUnlockSurfaceKHR EGLEW_GET_FUN(__eglewUnlockSurfaceKHR)
+
+#define EGLEW_KHR_lock_surface EGLEW_GET_VAR(__EGLEW_KHR_lock_surface)
+
+#endif /* EGL_KHR_lock_surface */
+
+/* ------------------------- EGL_KHR_lock_surface2 ------------------------- */
+
+#ifndef EGL_KHR_lock_surface2
+#define EGL_KHR_lock_surface2 1
+
+#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+#define EGLEW_KHR_lock_surface2 EGLEW_GET_VAR(__EGLEW_KHR_lock_surface2)
+
+#endif /* EGL_KHR_lock_surface2 */
+
+/* ------------------------- EGL_KHR_lock_surface3 ------------------------- */
+
+#ifndef EGL_KHR_lock_surface3
+#define EGL_KHR_lock_surface3 1
+
+#define EGL_READ_SURFACE_BIT_KHR 0x0001
+#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
+#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
+#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+#define EGL_MATCH_FORMAT_KHR 0x3043
+#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+#define EGL_FORMAT_RGB_565_KHR 0x30C1
+#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
+#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
+#define EGL_BITMAP_POINTER_KHR 0x30C6
+#define EGL_BITMAP_PITCH_KHR 0x30C7
+#define EGL_BITMAP_ORIGIN_KHR 0x30C8
+#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+#define EGL_LOWER_LEFT_KHR 0x30CE
+#define EGL_UPPER_LEFT_KHR 0x30CF
+#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+
+typedef EGLBoolean ( * PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR * value);
+
+#define eglQuerySurface64KHR EGLEW_GET_FUN(__eglewQuerySurface64KHR)
+
+#define EGLEW_KHR_lock_surface3 EGLEW_GET_VAR(__EGLEW_KHR_lock_surface3)
+
+#endif /* EGL_KHR_lock_surface3 */
+
+/* --------------------- EGL_KHR_mutable_render_buffer --------------------- */
+
+#ifndef EGL_KHR_mutable_render_buffer
+#define EGL_KHR_mutable_render_buffer 1
+
+#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
+
+#define EGLEW_KHR_mutable_render_buffer EGLEW_GET_VAR(__EGLEW_KHR_mutable_render_buffer)
+
+#endif /* EGL_KHR_mutable_render_buffer */
+
+/* ----------------------- EGL_KHR_no_config_context ----------------------- */
+
+#ifndef EGL_KHR_no_config_context
+#define EGL_KHR_no_config_context 1
+
+#define EGLEW_KHR_no_config_context EGLEW_GET_VAR(__EGLEW_KHR_no_config_context)
+
+#endif /* EGL_KHR_no_config_context */
+
+/* ------------------------- EGL_KHR_partial_update ------------------------ */
+
+#ifndef EGL_KHR_partial_update
+#define EGL_KHR_partial_update 1
+
+#define EGL_BUFFER_AGE_KHR 0x313D
+
+typedef EGLBoolean ( * PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint* rects, EGLint n_rects);
+
+#define eglSetDamageRegionKHR EGLEW_GET_FUN(__eglewSetDamageRegionKHR)
+
+#define EGLEW_KHR_partial_update EGLEW_GET_VAR(__EGLEW_KHR_partial_update)
+
+#endif /* EGL_KHR_partial_update */
+
+/* ------------------------ EGL_KHR_platform_android ----------------------- */
+
+#ifndef EGL_KHR_platform_android
+#define EGL_KHR_platform_android 1
+
+#define EGL_PLATFORM_ANDROID_KHR 0x3141
+
+#define EGLEW_KHR_platform_android EGLEW_GET_VAR(__EGLEW_KHR_platform_android)
+
+#endif /* EGL_KHR_platform_android */
+
+/* -------------------------- EGL_KHR_platform_gbm ------------------------- */
+
+#ifndef EGL_KHR_platform_gbm
+#define EGL_KHR_platform_gbm 1
+
+#define EGL_PLATFORM_GBM_KHR 0x31D7
+
+#define EGLEW_KHR_platform_gbm EGLEW_GET_VAR(__EGLEW_KHR_platform_gbm)
+
+#endif /* EGL_KHR_platform_gbm */
+
+/* ------------------------ EGL_KHR_platform_wayland ----------------------- */
+
+#ifndef EGL_KHR_platform_wayland
+#define EGL_KHR_platform_wayland 1
+
+#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
+
+#define EGLEW_KHR_platform_wayland EGLEW_GET_VAR(__EGLEW_KHR_platform_wayland)
+
+#endif /* EGL_KHR_platform_wayland */
+
+/* -------------------------- EGL_KHR_platform_x11 ------------------------- */
+
+#ifndef EGL_KHR_platform_x11
+#define EGL_KHR_platform_x11 1
+
+#define EGL_PLATFORM_X11_KHR 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
+
+#define EGLEW_KHR_platform_x11 EGLEW_GET_VAR(__EGLEW_KHR_platform_x11)
+
+#endif /* EGL_KHR_platform_x11 */
+
+/* ------------------------- EGL_KHR_reusable_sync ------------------------- */
+
+#ifndef EGL_KHR_reusable_sync
+#define EGL_KHR_reusable_sync 1
+
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+#define EGL_SYNC_STATUS_KHR 0x30F1
+#define EGL_SIGNALED_KHR 0x30F2
+#define EGL_UNSIGNALED_KHR 0x30F3
+#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+#define EGL_CONDITION_SATISFIED_KHR 0x30F6
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_REUSABLE_KHR 0x30FA
+#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFF
+
+typedef EGLint ( * PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+typedef EGLSyncKHR ( * PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
+typedef EGLBoolean ( * PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint* value);
+typedef EGLBoolean ( * PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
+
+#define eglClientWaitSyncKHR EGLEW_GET_FUN(__eglewClientWaitSyncKHR)
+#define eglCreateSyncKHR EGLEW_GET_FUN(__eglewCreateSyncKHR)
+#define eglDestroySyncKHR EGLEW_GET_FUN(__eglewDestroySyncKHR)
+#define eglGetSyncAttribKHR EGLEW_GET_FUN(__eglewGetSyncAttribKHR)
+#define eglSignalSyncKHR EGLEW_GET_FUN(__eglewSignalSyncKHR)
+
+#define EGLEW_KHR_reusable_sync EGLEW_GET_VAR(__EGLEW_KHR_reusable_sync)
+
+#endif /* EGL_KHR_reusable_sync */
+
+/* ----------------------------- EGL_KHR_stream ---------------------------- */
+
+#ifndef EGL_KHR_stream
+#define EGL_KHR_stream 1
+
+#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+#define EGL_PRODUCER_FRAME_KHR 0x3212
+#define EGL_CONSUMER_FRAME_KHR 0x3213
+#define EGL_STREAM_STATE_KHR 0x3214
+#define EGL_STREAM_STATE_CREATED_KHR 0x3215
+#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
+#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+#define EGL_BAD_STREAM_KHR 0x321B
+#define EGL_BAD_STATE_KHR 0x321C
+
+typedef EGLStreamKHR ( * PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint* value);
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR* value);
+typedef EGLBoolean ( * PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
+
+#define eglCreateStreamKHR EGLEW_GET_FUN(__eglewCreateStreamKHR)
+#define eglDestroyStreamKHR EGLEW_GET_FUN(__eglewDestroyStreamKHR)
+#define eglQueryStreamKHR EGLEW_GET_FUN(__eglewQueryStreamKHR)
+#define eglQueryStreamu64KHR EGLEW_GET_FUN(__eglewQueryStreamu64KHR)
+#define eglStreamAttribKHR EGLEW_GET_FUN(__eglewStreamAttribKHR)
+
+#define EGLEW_KHR_stream EGLEW_GET_VAR(__EGLEW_KHR_stream)
+
+#endif /* EGL_KHR_stream */
+
+/* ------------------------- EGL_KHR_stream_attrib ------------------------- */
+
+#ifndef EGL_KHR_stream_attrib
+#define EGL_KHR_stream_attrib 1
+
+#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+#define EGL_STREAM_STATE_KHR 0x3214
+#define EGL_STREAM_STATE_CREATED_KHR 0x3215
+#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+
+typedef EGLStreamKHR ( * PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib* attrib_list);
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib* value);
+typedef EGLBoolean ( * PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list);
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list);
+
+#define eglCreateStreamAttribKHR EGLEW_GET_FUN(__eglewCreateStreamAttribKHR)
+#define eglQueryStreamAttribKHR EGLEW_GET_FUN(__eglewQueryStreamAttribKHR)
+#define eglSetStreamAttribKHR EGLEW_GET_FUN(__eglewSetStreamAttribKHR)
+#define eglStreamConsumerAcquireAttribKHR EGLEW_GET_FUN(__eglewStreamConsumerAcquireAttribKHR)
+#define eglStreamConsumerReleaseAttribKHR EGLEW_GET_FUN(__eglewStreamConsumerReleaseAttribKHR)
+
+#define EGLEW_KHR_stream_attrib EGLEW_GET_VAR(__EGLEW_KHR_stream_attrib)
+
+#endif /* EGL_KHR_stream_attrib */
+
+/* ------------------- EGL_KHR_stream_consumer_gltexture ------------------- */
+
+#ifndef EGL_KHR_stream_consumer_gltexture
+#define EGL_KHR_stream_consumer_gltexture 1
+
+#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+
+#define eglStreamConsumerAcquireKHR EGLEW_GET_FUN(__eglewStreamConsumerAcquireKHR)
+#define eglStreamConsumerGLTextureExternalKHR EGLEW_GET_FUN(__eglewStreamConsumerGLTextureExternalKHR)
+#define eglStreamConsumerReleaseKHR EGLEW_GET_FUN(__eglewStreamConsumerReleaseKHR)
+
+#define EGLEW_KHR_stream_consumer_gltexture EGLEW_GET_VAR(__EGLEW_KHR_stream_consumer_gltexture)
+
+#endif /* EGL_KHR_stream_consumer_gltexture */
+
+/* -------------------- EGL_KHR_stream_cross_process_fd -------------------- */
+
+#ifndef EGL_KHR_stream_cross_process_fd
+#define EGL_KHR_stream_cross_process_fd 1
+
+typedef EGLStreamKHR ( * PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
+typedef EGLNativeFileDescriptorKHR ( * PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+
+#define eglCreateStreamFromFileDescriptorKHR EGLEW_GET_FUN(__eglewCreateStreamFromFileDescriptorKHR)
+#define eglGetStreamFileDescriptorKHR EGLEW_GET_FUN(__eglewGetStreamFileDescriptorKHR)
+
+#define EGLEW_KHR_stream_cross_process_fd EGLEW_GET_VAR(__EGLEW_KHR_stream_cross_process_fd)
+
+#endif /* EGL_KHR_stream_cross_process_fd */
+
+/* -------------------------- EGL_KHR_stream_fifo -------------------------- */
+
+#ifndef EGL_KHR_stream_fifo
+#define EGL_KHR_stream_fifo 1
+
+#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+#define EGL_STREAM_TIME_NOW_KHR 0x31FD
+#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR* value);
+
+#define eglQueryStreamTimeKHR EGLEW_GET_FUN(__eglewQueryStreamTimeKHR)
+
+#define EGLEW_KHR_stream_fifo EGLEW_GET_VAR(__EGLEW_KHR_stream_fifo)
+
+#endif /* EGL_KHR_stream_fifo */
+
+/* ----------------- EGL_KHR_stream_producer_aldatalocator ----------------- */
+
+#ifndef EGL_KHR_stream_producer_aldatalocator
+#define EGL_KHR_stream_producer_aldatalocator 1
+
+#define EGLEW_KHR_stream_producer_aldatalocator EGLEW_GET_VAR(__EGLEW_KHR_stream_producer_aldatalocator)
+
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+
+/* ------------------- EGL_KHR_stream_producer_eglsurface ------------------ */
+
+#ifndef EGL_KHR_stream_producer_eglsurface
+#define EGL_KHR_stream_producer_eglsurface 1
+
+#define EGL_STREAM_BIT_KHR 0x0800
+
+typedef EGLSurface ( * PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint* attrib_list);
+
+#define eglCreateStreamProducerSurfaceKHR EGLEW_GET_FUN(__eglewCreateStreamProducerSurfaceKHR)
+
+#define EGLEW_KHR_stream_producer_eglsurface EGLEW_GET_VAR(__EGLEW_KHR_stream_producer_eglsurface)
+
+#endif /* EGL_KHR_stream_producer_eglsurface */
+
+/* ---------------------- EGL_KHR_surfaceless_context ---------------------- */
+
+#ifndef EGL_KHR_surfaceless_context
+#define EGL_KHR_surfaceless_context 1
+
+#define EGLEW_KHR_surfaceless_context EGLEW_GET_VAR(__EGLEW_KHR_surfaceless_context)
+
+#endif /* EGL_KHR_surfaceless_context */
+
+/* -------------------- EGL_KHR_swap_buffers_with_damage ------------------- */
+
+#ifndef EGL_KHR_swap_buffers_with_damage
+#define EGL_KHR_swap_buffers_with_damage 1
+
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint* rects, EGLint n_rects);
+
+#define eglSwapBuffersWithDamageKHR EGLEW_GET_FUN(__eglewSwapBuffersWithDamageKHR)
+
+#define EGLEW_KHR_swap_buffers_with_damage EGLEW_GET_VAR(__EGLEW_KHR_swap_buffers_with_damage)
+
+#endif /* EGL_KHR_swap_buffers_with_damage */
+
+/* ------------------------ EGL_KHR_vg_parent_image ------------------------ */
+
+#ifndef EGL_KHR_vg_parent_image
+#define EGL_KHR_vg_parent_image 1
+
+#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
+
+#define EGLEW_KHR_vg_parent_image EGLEW_GET_VAR(__EGLEW_KHR_vg_parent_image)
+
+#endif /* EGL_KHR_vg_parent_image */
+
+/* --------------------------- EGL_KHR_wait_sync --------------------------- */
+
+#ifndef EGL_KHR_wait_sync
+#define EGL_KHR_wait_sync 1
+
+typedef EGLint ( * PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
+
+#define eglWaitSyncKHR EGLEW_GET_FUN(__eglewWaitSyncKHR)
+
+#define EGLEW_KHR_wait_sync EGLEW_GET_VAR(__EGLEW_KHR_wait_sync)
+
+#endif /* EGL_KHR_wait_sync */
+
+/* --------------------------- EGL_MESA_drm_image -------------------------- */
+
+#ifndef EGL_MESA_drm_image
+#define EGL_MESA_drm_image 1
+
+#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
+#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
+#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
+#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+#define EGL_DRM_BUFFER_USE_MESA 0x31D1
+#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+#define EGL_DRM_BUFFER_MESA 0x31D3
+#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+
+typedef EGLImageKHR ( * PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint* name, EGLint* handle, EGLint* stride);
+
+#define eglCreateDRMImageMESA EGLEW_GET_FUN(__eglewCreateDRMImageMESA)
+#define eglExportDRMImageMESA EGLEW_GET_FUN(__eglewExportDRMImageMESA)
+
+#define EGLEW_MESA_drm_image EGLEW_GET_VAR(__EGLEW_MESA_drm_image)
+
+#endif /* EGL_MESA_drm_image */
+
+/* --------------------- EGL_MESA_image_dma_buf_export --------------------- */
+
+#ifndef EGL_MESA_image_dma_buf_export
+#define EGL_MESA_image_dma_buf_export 1
+
+typedef EGLBoolean ( * PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int* fds, EGLint* strides, EGLint* offsets);
+typedef EGLBoolean ( * PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int* fourcc, int* num_planes, EGLuint64KHR* modifiers);
+
+#define eglExportDMABUFImageMESA EGLEW_GET_FUN(__eglewExportDMABUFImageMESA)
+#define eglExportDMABUFImageQueryMESA EGLEW_GET_FUN(__eglewExportDMABUFImageQueryMESA)
+
+#define EGLEW_MESA_image_dma_buf_export EGLEW_GET_VAR(__EGLEW_MESA_image_dma_buf_export)
+
+#endif /* EGL_MESA_image_dma_buf_export */
+
+/* ------------------------- EGL_MESA_platform_gbm ------------------------- */
+
+#ifndef EGL_MESA_platform_gbm
+#define EGL_MESA_platform_gbm 1
+
+#define EGL_PLATFORM_GBM_MESA 0x31D7
+
+#define EGLEW_MESA_platform_gbm EGLEW_GET_VAR(__EGLEW_MESA_platform_gbm)
+
+#endif /* EGL_MESA_platform_gbm */
+
+/* --------------------- EGL_MESA_platform_surfaceless --------------------- */
+
+#ifndef EGL_MESA_platform_surfaceless
+#define EGL_MESA_platform_surfaceless 1
+
+#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+
+#define EGLEW_MESA_platform_surfaceless EGLEW_GET_VAR(__EGLEW_MESA_platform_surfaceless)
+
+#endif /* EGL_MESA_platform_surfaceless */
+
+/* ------------------------- EGL_MESA_query_driver ------------------------- */
+
+#ifndef EGL_MESA_query_driver
+#define EGL_MESA_query_driver 1
+
+typedef char* ( * PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy);
+typedef const char* ( * PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy);
+
+#define eglGetDisplayDriverConfig EGLEW_GET_FUN(__eglewGetDisplayDriverConfig)
+#define eglGetDisplayDriverName EGLEW_GET_FUN(__eglewGetDisplayDriverName)
+
+#define EGLEW_MESA_query_driver EGLEW_GET_VAR(__EGLEW_MESA_query_driver)
+
+#endif /* EGL_MESA_query_driver */
+
+/* -------------------------- EGL_NOK_swap_region -------------------------- */
+
+#ifndef EGL_NOK_swap_region
+#define EGL_NOK_swap_region 1
+
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects);
+
+#define eglSwapBuffersRegionNOK EGLEW_GET_FUN(__eglewSwapBuffersRegionNOK)
+
+#define EGLEW_NOK_swap_region EGLEW_GET_VAR(__EGLEW_NOK_swap_region)
+
+#endif /* EGL_NOK_swap_region */
+
+/* -------------------------- EGL_NOK_swap_region2 ------------------------- */
+
+#ifndef EGL_NOK_swap_region2
+#define EGL_NOK_swap_region2 1
+
+typedef EGLBoolean ( * PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects);
+
+#define eglSwapBuffersRegion2NOK EGLEW_GET_FUN(__eglewSwapBuffersRegion2NOK)
+
+#define EGLEW_NOK_swap_region2 EGLEW_GET_VAR(__EGLEW_NOK_swap_region2)
+
+#endif /* EGL_NOK_swap_region2 */
+
+/* ---------------------- EGL_NOK_texture_from_pixmap ---------------------- */
+
+#ifndef EGL_NOK_texture_from_pixmap
+#define EGL_NOK_texture_from_pixmap 1
+
+#define EGL_Y_INVERTED_NOK 0x307F
+
+#define EGLEW_NOK_texture_from_pixmap EGLEW_GET_VAR(__EGLEW_NOK_texture_from_pixmap)
+
+#endif /* EGL_NOK_texture_from_pixmap */
+
+/* ------------------------ EGL_NV_3dvision_surface ------------------------ */
+
+#ifndef EGL_NV_3dvision_surface
+#define EGL_NV_3dvision_surface 1
+
+#define EGL_AUTO_STEREO_NV 0x3136
+
+#define EGLEW_NV_3dvision_surface EGLEW_GET_VAR(__EGLEW_NV_3dvision_surface)
+
+#endif /* EGL_NV_3dvision_surface */
+
+/* -------------------- EGL_NV_context_priority_realtime ------------------- */
+
+#ifndef EGL_NV_context_priority_realtime
+#define EGL_NV_context_priority_realtime 1
+
+#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
+
+#define EGLEW_NV_context_priority_realtime EGLEW_GET_VAR(__EGLEW_NV_context_priority_realtime)
+
+#endif /* EGL_NV_context_priority_realtime */
+
+/* ------------------------- EGL_NV_coverage_sample ------------------------ */
+
+#ifndef EGL_NV_coverage_sample
+#define EGL_NV_coverage_sample 1
+
+#define EGL_COVERAGE_BUFFERS_NV 0x30E0
+#define EGL_COVERAGE_SAMPLES_NV 0x30E1
+
+#define EGLEW_NV_coverage_sample EGLEW_GET_VAR(__EGLEW_NV_coverage_sample)
+
+#endif /* EGL_NV_coverage_sample */
+
+/* --------------------- EGL_NV_coverage_sample_resolve -------------------- */
+
+#ifndef EGL_NV_coverage_sample_resolve
+#define EGL_NV_coverage_sample_resolve 1
+
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
+
+#define EGLEW_NV_coverage_sample_resolve EGLEW_GET_VAR(__EGLEW_NV_coverage_sample_resolve)
+
+#endif /* EGL_NV_coverage_sample_resolve */
+
+/* --------------------------- EGL_NV_cuda_event --------------------------- */
+
+#ifndef EGL_NV_cuda_event
+#define EGL_NV_cuda_event 1
+
+#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
+#define EGL_SYNC_CUDA_EVENT_NV 0x323C
+#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
+
+#define EGLEW_NV_cuda_event EGLEW_GET_VAR(__EGLEW_NV_cuda_event)
+
+#endif /* EGL_NV_cuda_event */
+
+/* ------------------------- EGL_NV_depth_nonlinear ------------------------ */
+
+#ifndef EGL_NV_depth_nonlinear
+#define EGL_NV_depth_nonlinear 1
+
+#define EGL_DEPTH_ENCODING_NONE_NV 0
+#define EGL_DEPTH_ENCODING_NV 0x30E2
+#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
+
+#define EGLEW_NV_depth_nonlinear EGLEW_GET_VAR(__EGLEW_NV_depth_nonlinear)
+
+#endif /* EGL_NV_depth_nonlinear */
+
+/* --------------------------- EGL_NV_device_cuda -------------------------- */
+
+#ifndef EGL_NV_device_cuda
+#define EGL_NV_device_cuda 1
+
+#define EGL_CUDA_DEVICE_NV 0x323A
+
+#define EGLEW_NV_device_cuda EGLEW_GET_VAR(__EGLEW_NV_device_cuda)
+
+#endif /* EGL_NV_device_cuda */
+
+/* -------------------------- EGL_NV_native_query -------------------------- */
+
+#ifndef EGL_NV_native_query
+#define EGL_NV_native_query 1
+
+typedef EGLBoolean ( * PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType* display_id);
+typedef EGLBoolean ( * PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType* pixmap);
+typedef EGLBoolean ( * PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType* window);
+
+#define eglQueryNativeDisplayNV EGLEW_GET_FUN(__eglewQueryNativeDisplayNV)
+#define eglQueryNativePixmapNV EGLEW_GET_FUN(__eglewQueryNativePixmapNV)
+#define eglQueryNativeWindowNV EGLEW_GET_FUN(__eglewQueryNativeWindowNV)
+
+#define EGLEW_NV_native_query EGLEW_GET_VAR(__EGLEW_NV_native_query)
+
+#endif /* EGL_NV_native_query */
+
+/* ---------------------- EGL_NV_post_convert_rounding --------------------- */
+
+#ifndef EGL_NV_post_convert_rounding
+#define EGL_NV_post_convert_rounding 1
+
+#define EGLEW_NV_post_convert_rounding EGLEW_GET_VAR(__EGLEW_NV_post_convert_rounding)
+
+#endif /* EGL_NV_post_convert_rounding */
+
+/* ------------------------- EGL_NV_post_sub_buffer ------------------------ */
+
+#ifndef EGL_NV_post_sub_buffer
+#define EGL_NV_post_sub_buffer 1
+
+#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+
+typedef EGLBoolean ( * PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
+
+#define eglPostSubBufferNV EGLEW_GET_FUN(__eglewPostSubBufferNV)
+
+#define EGLEW_NV_post_sub_buffer EGLEW_GET_VAR(__EGLEW_NV_post_sub_buffer)
+
+#endif /* EGL_NV_post_sub_buffer */
+
+/* ------------------------ EGL_NV_quadruple_buffer ------------------------ */
+
+#ifndef EGL_NV_quadruple_buffer
+#define EGL_NV_quadruple_buffer 1
+
+#define EGL_QUADRUPLE_BUFFER_NV 0x3231
+
+#define EGLEW_NV_quadruple_buffer EGLEW_GET_VAR(__EGLEW_NV_quadruple_buffer)
+
+#endif /* EGL_NV_quadruple_buffer */
+
+/* ------------------ EGL_NV_robustness_video_memory_purge ----------------- */
+
+#ifndef EGL_NV_robustness_video_memory_purge
+#define EGL_NV_robustness_video_memory_purge 1
+
+#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
+
+#define EGLEW_NV_robustness_video_memory_purge EGLEW_GET_VAR(__EGLEW_NV_robustness_video_memory_purge)
+
+#endif /* EGL_NV_robustness_video_memory_purge */
+
+/* -------------------- EGL_NV_stream_consumer_eglimage -------------------- */
+
+#ifndef EGL_NV_stream_consumer_eglimage
+#define EGL_NV_stream_consumer_eglimage 1
+
+#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
+#define EGL_STREAM_IMAGE_ADD_NV 0x3374
+#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
+#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
+
+typedef EGLint ( * PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum* event, EGLAttrib* aux);
+typedef EGLBoolean ( * PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage* pImage, EGLSync sync);
+typedef EGLBoolean ( * PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR* modifiers, const EGLAttrib* attrib_list);
+typedef EGLBoolean ( * PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
+
+#define eglQueryStreamConsumerEventNV EGLEW_GET_FUN(__eglewQueryStreamConsumerEventNV)
+#define eglStreamAcquireImageNV EGLEW_GET_FUN(__eglewStreamAcquireImageNV)
+#define eglStreamImageConsumerConnectNV EGLEW_GET_FUN(__eglewStreamImageConsumerConnectNV)
+#define eglStreamReleaseImageNV EGLEW_GET_FUN(__eglewStreamReleaseImageNV)
+
+#define EGLEW_NV_stream_consumer_eglimage EGLEW_GET_VAR(__EGLEW_NV_stream_consumer_eglimage)
+
+#endif /* EGL_NV_stream_consumer_eglimage */
+
+/* ------------------ EGL_NV_stream_consumer_gltexture_yuv ----------------- */
+
+#ifndef EGL_NV_stream_consumer_gltexture_yuv
+#define EGL_NV_stream_consumer_gltexture_yuv 1
+
+#define EGL_YUV_BUFFER_EXT 0x3300
+#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+
+typedef EGLBoolean ( * PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib* attrib_list);
+
+#define eglStreamConsumerGLTextureExternalAttribsNV EGLEW_GET_FUN(__eglewStreamConsumerGLTextureExternalAttribsNV)
+
+#define EGLEW_NV_stream_consumer_gltexture_yuv EGLEW_GET_VAR(__EGLEW_NV_stream_consumer_gltexture_yuv)
+
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+
+/* ---------------------- EGL_NV_stream_cross_display ---------------------- */
+
+#ifndef EGL_NV_stream_cross_display
+#define EGL_NV_stream_cross_display 1
+
+#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
+
+#define EGLEW_NV_stream_cross_display EGLEW_GET_VAR(__EGLEW_NV_stream_cross_display)
+
+#endif /* EGL_NV_stream_cross_display */
+
+/* ----------------------- EGL_NV_stream_cross_object ---------------------- */
+
+#ifndef EGL_NV_stream_cross_object
+#define EGL_NV_stream_cross_object 1
+
+#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
+
+#define EGLEW_NV_stream_cross_object EGLEW_GET_VAR(__EGLEW_NV_stream_cross_object)
+
+#endif /* EGL_NV_stream_cross_object */
+
+/* --------------------- EGL_NV_stream_cross_partition --------------------- */
+
+#ifndef EGL_NV_stream_cross_partition
+#define EGL_NV_stream_cross_partition 1
+
+#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
+
+#define EGLEW_NV_stream_cross_partition EGLEW_GET_VAR(__EGLEW_NV_stream_cross_partition)
+
+#endif /* EGL_NV_stream_cross_partition */
+
+/* ---------------------- EGL_NV_stream_cross_process ---------------------- */
+
+#ifndef EGL_NV_stream_cross_process
+#define EGL_NV_stream_cross_process 1
+
+#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
+
+#define EGLEW_NV_stream_cross_process EGLEW_GET_VAR(__EGLEW_NV_stream_cross_process)
+
+#endif /* EGL_NV_stream_cross_process */
+
+/* ----------------------- EGL_NV_stream_cross_system ---------------------- */
+
+#ifndef EGL_NV_stream_cross_system
+#define EGL_NV_stream_cross_system 1
+
+#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
+
+#define EGLEW_NV_stream_cross_system EGLEW_GET_VAR(__EGLEW_NV_stream_cross_system)
+
+#endif /* EGL_NV_stream_cross_system */
+
+/* --------------------------- EGL_NV_stream_dma --------------------------- */
+
+#ifndef EGL_NV_stream_dma
+#define EGL_NV_stream_dma 1
+
+#define EGL_STREAM_DMA_NV 0x3371
+#define EGL_STREAM_DMA_SERVER_NV 0x3372
+
+#define EGLEW_NV_stream_dma EGLEW_GET_VAR(__EGLEW_NV_stream_dma)
+
+#endif /* EGL_NV_stream_dma */
+
+/* ------------------------ EGL_NV_stream_fifo_next ------------------------ */
+
+#ifndef EGL_NV_stream_fifo_next
+#define EGL_NV_stream_fifo_next 1
+
+#define EGL_PENDING_FRAME_NV 0x3329
+#define EGL_STREAM_TIME_PENDING_NV 0x332A
+
+#define EGLEW_NV_stream_fifo_next EGLEW_GET_VAR(__EGLEW_NV_stream_fifo_next)
+
+#endif /* EGL_NV_stream_fifo_next */
+
+/* --------------------- EGL_NV_stream_fifo_synchronous -------------------- */
+
+#ifndef EGL_NV_stream_fifo_synchronous
+#define EGL_NV_stream_fifo_synchronous 1
+
+#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
+
+#define EGLEW_NV_stream_fifo_synchronous EGLEW_GET_VAR(__EGLEW_NV_stream_fifo_synchronous)
+
+#endif /* EGL_NV_stream_fifo_synchronous */
+
+/* -------------------------- EGL_NV_stream_flush -------------------------- */
+
+#ifndef EGL_NV_stream_flush
+#define EGL_NV_stream_flush 1
+
+typedef EGLBoolean ( * PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+
+#define eglStreamFlushNV EGLEW_GET_FUN(__eglewStreamFlushNV)
+
+#define EGLEW_NV_stream_flush EGLEW_GET_VAR(__EGLEW_NV_stream_flush)
+
+#endif /* EGL_NV_stream_flush */
+
+/* ----------------------- EGL_NV_stream_frame_limits ---------------------- */
+
+#ifndef EGL_NV_stream_frame_limits
+#define EGL_NV_stream_frame_limits 1
+
+#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
+
+#define EGLEW_NV_stream_frame_limits EGLEW_GET_VAR(__EGLEW_NV_stream_frame_limits)
+
+#endif /* EGL_NV_stream_frame_limits */
+
+/* ------------------------- EGL_NV_stream_metadata ------------------------ */
+
+#ifndef EGL_NV_stream_metadata
+#define EGL_NV_stream_metadata 1
+
+#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+#define EGL_PRODUCER_METADATA_NV 0x3253
+#define EGL_CONSUMER_METADATA_NV 0x3254
+#define EGL_METADATA0_SIZE_NV 0x3255
+#define EGL_METADATA1_SIZE_NV 0x3256
+#define EGL_METADATA2_SIZE_NV 0x3257
+#define EGL_METADATA3_SIZE_NV 0x3258
+#define EGL_METADATA0_TYPE_NV 0x3259
+#define EGL_METADATA1_TYPE_NV 0x325A
+#define EGL_METADATA2_TYPE_NV 0x325B
+#define EGL_METADATA3_TYPE_NV 0x325C
+#define EGL_PENDING_METADATA_NV 0x3328
+
+typedef EGLBoolean ( * PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib* value);
+typedef EGLBoolean ( * PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void* data);
+typedef EGLBoolean ( * PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void* data);
+
+#define eglQueryDisplayAttribNV EGLEW_GET_FUN(__eglewQueryDisplayAttribNV)
+#define eglQueryStreamMetadataNV EGLEW_GET_FUN(__eglewQueryStreamMetadataNV)
+#define eglSetStreamMetadataNV EGLEW_GET_FUN(__eglewSetStreamMetadataNV)
+
+#define EGLEW_NV_stream_metadata EGLEW_GET_VAR(__EGLEW_NV_stream_metadata)
+
+#endif /* EGL_NV_stream_metadata */
+
+/* -------------------------- EGL_NV_stream_origin ------------------------- */
+
+#ifndef EGL_NV_stream_origin
+#define EGL_NV_stream_origin 1
+
+#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+#define EGL_LEFT_NV 0x336B
+#define EGL_RIGHT_NV 0x336C
+#define EGL_TOP_NV 0x336D
+#define EGL_BOTTOM_NV 0x336E
+#define EGL_X_AXIS_NV 0x336F
+#define EGL_Y_AXIS_NV 0x3370
+
+#define EGLEW_NV_stream_origin EGLEW_GET_VAR(__EGLEW_NV_stream_origin)
+
+#endif /* EGL_NV_stream_origin */
+
+/* -------------------------- EGL_NV_stream_remote ------------------------- */
+
+#ifndef EGL_NV_stream_remote
+#define EGL_NV_stream_remote 1
+
+#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+#define EGL_STREAM_TYPE_NV 0x3241
+#define EGL_STREAM_PROTOCOL_NV 0x3242
+#define EGL_STREAM_ENDPOINT_NV 0x3243
+#define EGL_STREAM_LOCAL_NV 0x3244
+#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
+#define EGL_STREAM_PRODUCER_NV 0x3247
+#define EGL_STREAM_CONSUMER_NV 0x3248
+
+#define EGLEW_NV_stream_remote EGLEW_GET_VAR(__EGLEW_NV_stream_remote)
+
+#endif /* EGL_NV_stream_remote */
+
+/* -------------------------- EGL_NV_stream_reset -------------------------- */
+
+#ifndef EGL_NV_stream_reset
+#define EGL_NV_stream_reset 1
+
+#define EGL_SUPPORT_RESET_NV 0x3334
+#define EGL_SUPPORT_REUSE_NV 0x3335
+
+typedef EGLBoolean ( * PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
+
+#define eglResetStreamNV EGLEW_GET_FUN(__eglewResetStreamNV)
+
+#define EGLEW_NV_stream_reset EGLEW_GET_VAR(__EGLEW_NV_stream_reset)
+
+#endif /* EGL_NV_stream_reset */
+
+/* -------------------------- EGL_NV_stream_socket ------------------------- */
+
+#ifndef EGL_NV_stream_socket
+#define EGL_NV_stream_socket 1
+
+#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+#define EGL_SOCKET_HANDLE_NV 0x324C
+#define EGL_SOCKET_TYPE_NV 0x324D
+
+#define EGLEW_NV_stream_socket EGLEW_GET_VAR(__EGLEW_NV_stream_socket)
+
+#endif /* EGL_NV_stream_socket */
+
+/* ----------------------- EGL_NV_stream_socket_inet ----------------------- */
+
+#ifndef EGL_NV_stream_socket_inet
+#define EGL_NV_stream_socket_inet 1
+
+#define EGL_SOCKET_TYPE_INET_NV 0x324F
+
+#define EGLEW_NV_stream_socket_inet EGLEW_GET_VAR(__EGLEW_NV_stream_socket_inet)
+
+#endif /* EGL_NV_stream_socket_inet */
+
+/* ----------------------- EGL_NV_stream_socket_unix ----------------------- */
+
+#ifndef EGL_NV_stream_socket_unix
+#define EGL_NV_stream_socket_unix 1
+
+#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
+
+#define EGLEW_NV_stream_socket_unix EGLEW_GET_VAR(__EGLEW_NV_stream_socket_unix)
+
+#endif /* EGL_NV_stream_socket_unix */
+
+/* --------------------------- EGL_NV_stream_sync -------------------------- */
+
+#ifndef EGL_NV_stream_sync
+#define EGL_NV_stream_sync 1
+
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_NEW_FRAME_NV 0x321F
+
+typedef EGLSyncKHR ( * PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint* attrib_list);
+
+#define eglCreateStreamSyncNV EGLEW_GET_FUN(__eglewCreateStreamSyncNV)
+
+#define EGLEW_NV_stream_sync EGLEW_GET_VAR(__EGLEW_NV_stream_sync)
+
+#endif /* EGL_NV_stream_sync */
+
+/* ------------------------------ EGL_NV_sync ------------------------------ */
+
+#ifndef EGL_NV_sync
+#define EGL_NV_sync 1
+
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+#define EGL_SYNC_STATUS_NV 0x30E7
+#define EGL_SIGNALED_NV 0x30E8
+#define EGL_UNSIGNALED_NV 0x30E9
+#define EGL_ALREADY_SIGNALED_NV 0x30EA
+#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
+#define EGL_CONDITION_SATISFIED_NV 0x30EC
+#define EGL_SYNC_TYPE_NV 0x30ED
+#define EGL_SYNC_CONDITION_NV 0x30EE
+#define EGL_SYNC_FENCE_NV 0x30EF
+#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFF
+
+typedef EGLint ( * PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+typedef EGLSyncNV ( * PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint* attrib_list);
+typedef EGLBoolean ( * PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
+typedef EGLBoolean ( * PFNEGLFENCENVPROC) (EGLSyncNV sync);
+typedef EGLBoolean ( * PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint* value);
+typedef EGLBoolean ( * PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
+
+#define eglClientWaitSyncNV EGLEW_GET_FUN(__eglewClientWaitSyncNV)
+#define eglCreateFenceSyncNV EGLEW_GET_FUN(__eglewCreateFenceSyncNV)
+#define eglDestroySyncNV EGLEW_GET_FUN(__eglewDestroySyncNV)
+#define eglFenceNV EGLEW_GET_FUN(__eglewFenceNV)
+#define eglGetSyncAttribNV EGLEW_GET_FUN(__eglewGetSyncAttribNV)
+#define eglSignalSyncNV EGLEW_GET_FUN(__eglewSignalSyncNV)
+
+#define EGLEW_NV_sync EGLEW_GET_VAR(__EGLEW_NV_sync)
+
+#endif /* EGL_NV_sync */
+
+/* --------------------------- EGL_NV_system_time -------------------------- */
+
+#ifndef EGL_NV_system_time
+#define EGL_NV_system_time 1
+
+typedef EGLuint64NV ( * PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
+typedef EGLuint64NV ( * PFNEGLGETSYSTEMTIMENVPROC) (void);
+
+#define eglGetSystemTimeFrequencyNV EGLEW_GET_FUN(__eglewGetSystemTimeFrequencyNV)
+#define eglGetSystemTimeNV EGLEW_GET_FUN(__eglewGetSystemTimeNV)
+
+#define EGLEW_NV_system_time EGLEW_GET_VAR(__EGLEW_NV_system_time)
+
+#endif /* EGL_NV_system_time */
+
+/* -------------------------- EGL_NV_triple_buffer ------------------------- */
+
+#ifndef EGL_NV_triple_buffer
+#define EGL_NV_triple_buffer 1
+
+#define EGL_TRIPLE_BUFFER_NV 0x3230
+
+#define EGLEW_NV_triple_buffer EGLEW_GET_VAR(__EGLEW_NV_triple_buffer)
+
+#endif /* EGL_NV_triple_buffer */
+
+/* --------------------- EGL_TIZEN_image_native_buffer --------------------- */
+
+#ifndef EGL_TIZEN_image_native_buffer
+#define EGL_TIZEN_image_native_buffer 1
+
+#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
+
+#define EGLEW_TIZEN_image_native_buffer EGLEW_GET_VAR(__EGLEW_TIZEN_image_native_buffer)
+
+#endif /* EGL_TIZEN_image_native_buffer */
+
+/* --------------------- EGL_TIZEN_image_native_surface -------------------- */
+
+#ifndef EGL_TIZEN_image_native_surface
+#define EGL_TIZEN_image_native_surface 1
+
+#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
+
+#define EGLEW_TIZEN_image_native_surface EGLEW_GET_VAR(__EGLEW_TIZEN_image_native_surface)
+
+#endif /* EGL_TIZEN_image_native_surface */
+
+/* ---------------------- EGL_WL_bind_wayland_display ---------------------- */
+
+#ifndef EGL_WL_bind_wayland_display
+#define EGL_WL_bind_wayland_display 1
+
+#define EGL_WAYLAND_BUFFER_WL 0x31D5
+#define EGL_WAYLAND_PLANE_WL 0x31D6
+#define EGL_TEXTURE_Y_U_V_WL 0x31D7
+#define EGL_TEXTURE_Y_UV_WL 0x31D8
+#define EGL_TEXTURE_Y_XUXV_WL 0x31D9
+#define EGL_TEXTURE_EXTERNAL_WL 0x31DA
+#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB
+
+typedef EGLBoolean ( * PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display* display);
+typedef EGLBoolean ( * PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource* buffer, EGLint attribute, EGLint* value);
+typedef EGLBoolean ( * PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display* display);
+
+#define eglBindWaylandDisplayWL EGLEW_GET_FUN(__eglewBindWaylandDisplayWL)
+#define eglQueryWaylandBufferWL EGLEW_GET_FUN(__eglewQueryWaylandBufferWL)
+#define eglUnbindWaylandDisplayWL EGLEW_GET_FUN(__eglewUnbindWaylandDisplayWL)
+
+#define EGLEW_WL_bind_wayland_display EGLEW_GET_VAR(__EGLEW_WL_bind_wayland_display)
+
+#endif /* EGL_WL_bind_wayland_display */
+
+/* ---------------- EGL_WL_create_wayland_buffer_from_image ---------------- */
+
+#ifndef EGL_WL_create_wayland_buffer_from_image
+#define EGL_WL_create_wayland_buffer_from_image 1
+
+typedef struct wl_buffer* ( * PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image);
+
+#define eglCreateWaylandBufferFromImageWL EGLEW_GET_FUN(__eglewCreateWaylandBufferFromImageWL)
+
+#define EGLEW_WL_create_wayland_buffer_from_image EGLEW_GET_VAR(__EGLEW_WL_create_wayland_buffer_from_image)
+
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+/* ------------------------------------------------------------------------- */
+
+#define EGLEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define EGLEW_VAR_EXPORT GLEW_VAR_EXPORT
+
+EGLEW_FUN_EXPORT PFNEGLCHOOSECONFIGPROC __eglewChooseConfig;
+EGLEW_FUN_EXPORT PFNEGLCOPYBUFFERSPROC __eglewCopyBuffers;
+EGLEW_FUN_EXPORT PFNEGLCREATECONTEXTPROC __eglewCreateContext;
+EGLEW_FUN_EXPORT PFNEGLCREATEPBUFFERSURFACEPROC __eglewCreatePbufferSurface;
+EGLEW_FUN_EXPORT PFNEGLCREATEPIXMAPSURFACEPROC __eglewCreatePixmapSurface;
+EGLEW_FUN_EXPORT PFNEGLCREATEWINDOWSURFACEPROC __eglewCreateWindowSurface;
+EGLEW_FUN_EXPORT PFNEGLDESTROYCONTEXTPROC __eglewDestroyContext;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSURFACEPROC __eglewDestroySurface;
+EGLEW_FUN_EXPORT PFNEGLGETCONFIGATTRIBPROC __eglewGetConfigAttrib;
+EGLEW_FUN_EXPORT PFNEGLGETCONFIGSPROC __eglewGetConfigs;
+EGLEW_FUN_EXPORT PFNEGLGETCURRENTDISPLAYPROC __eglewGetCurrentDisplay;
+EGLEW_FUN_EXPORT PFNEGLGETCURRENTSURFACEPROC __eglewGetCurrentSurface;
+EGLEW_FUN_EXPORT PFNEGLGETDISPLAYPROC __eglewGetDisplay;
+EGLEW_FUN_EXPORT PFNEGLGETERRORPROC __eglewGetError;
+EGLEW_FUN_EXPORT PFNEGLINITIALIZEPROC __eglewInitialize;
+EGLEW_FUN_EXPORT PFNEGLMAKECURRENTPROC __eglewMakeCurrent;
+EGLEW_FUN_EXPORT PFNEGLQUERYCONTEXTPROC __eglewQueryContext;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTRINGPROC __eglewQueryString;
+EGLEW_FUN_EXPORT PFNEGLQUERYSURFACEPROC __eglewQuerySurface;
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSPROC __eglewSwapBuffers;
+EGLEW_FUN_EXPORT PFNEGLTERMINATEPROC __eglewTerminate;
+EGLEW_FUN_EXPORT PFNEGLWAITGLPROC __eglewWaitGL;
+EGLEW_FUN_EXPORT PFNEGLWAITNATIVEPROC __eglewWaitNative;
+
+EGLEW_FUN_EXPORT PFNEGLBINDTEXIMAGEPROC __eglewBindTexImage;
+EGLEW_FUN_EXPORT PFNEGLRELEASETEXIMAGEPROC __eglewReleaseTexImage;
+EGLEW_FUN_EXPORT PFNEGLSURFACEATTRIBPROC __eglewSurfaceAttrib;
+EGLEW_FUN_EXPORT PFNEGLSWAPINTERVALPROC __eglewSwapInterval;
+
+EGLEW_FUN_EXPORT PFNEGLBINDAPIPROC __eglewBindAPI;
+EGLEW_FUN_EXPORT PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC __eglewCreatePbufferFromClientBuffer;
+EGLEW_FUN_EXPORT PFNEGLQUERYAPIPROC __eglewQueryAPI;
+EGLEW_FUN_EXPORT PFNEGLRELEASETHREADPROC __eglewReleaseThread;
+EGLEW_FUN_EXPORT PFNEGLWAITCLIENTPROC __eglewWaitClient;
+
+EGLEW_FUN_EXPORT PFNEGLGETCURRENTCONTEXTPROC __eglewGetCurrentContext;
+
+EGLEW_FUN_EXPORT PFNEGLCLIENTWAITSYNCPROC __eglewClientWaitSync;
+EGLEW_FUN_EXPORT PFNEGLCREATEIMAGEPROC __eglewCreateImage;
+EGLEW_FUN_EXPORT PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC __eglewCreatePlatformPixmapSurface;
+EGLEW_FUN_EXPORT PFNEGLCREATEPLATFORMWINDOWSURFACEPROC __eglewCreatePlatformWindowSurface;
+EGLEW_FUN_EXPORT PFNEGLCREATESYNCPROC __eglewCreateSync;
+EGLEW_FUN_EXPORT PFNEGLDESTROYIMAGEPROC __eglewDestroyImage;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSYNCPROC __eglewDestroySync;
+EGLEW_FUN_EXPORT PFNEGLGETPLATFORMDISPLAYPROC __eglewGetPlatformDisplay;
+EGLEW_FUN_EXPORT PFNEGLGETSYNCATTRIBPROC __eglewGetSyncAttrib;
+EGLEW_FUN_EXPORT PFNEGLWAITSYNCPROC __eglewWaitSync;
+
+EGLEW_FUN_EXPORT PFNEGLSETBLOBCACHEFUNCSANDROIDPROC __eglewSetBlobCacheFuncsANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC __eglewCreateNativeClientBufferANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLGETCOMPOSITORTIMINGANDROIDPROC __eglewGetCompositorTimingANDROID;
+EGLEW_FUN_EXPORT PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC __eglewGetCompositorTimingSupportedANDROID;
+EGLEW_FUN_EXPORT PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC __eglewGetFrameTimestampSupportedANDROID;
+EGLEW_FUN_EXPORT PFNEGLGETFRAMETIMESTAMPSANDROIDPROC __eglewGetFrameTimestampsANDROID;
+EGLEW_FUN_EXPORT PFNEGLGETNEXTFRAMEIDANDROIDPROC __eglewGetNextFrameIdANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC __eglewGetNativeClientBufferANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLDUPNATIVEFENCEFDANDROIDPROC __eglewDupNativeFenceFDANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLPRESENTATIONTIMEANDROIDPROC __eglewPresentationTimeANDROID;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSURFACEPOINTERANGLEPROC __eglewQuerySurfacePointerANGLE;
+
+EGLEW_FUN_EXPORT PFNEGLGETMSCRATEANGLEPROC __eglewGetMscRateANGLE;
+
+EGLEW_FUN_EXPORT PFNEGLCLIENTSIGNALSYNCEXTPROC __eglewClientSignalSyncEXT;
+
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC __eglewCompositorBindTexWindowEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC __eglewCompositorSetContextAttributesEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC __eglewCompositorSetContextListEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETSIZEEXTPROC __eglewCompositorSetSizeEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC __eglewCompositorSetWindowAttributesEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC __eglewCompositorSetWindowListEXT;
+EGLEW_FUN_EXPORT PFNEGLCOMPOSITORSWAPPOLICYEXTPROC __eglewCompositorSwapPolicyEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDEVICESEXTPROC __eglewQueryDevicesEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDEVICEBINARYEXTPROC __eglewQueryDeviceBinaryEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDEVICEATTRIBEXTPROC __eglewQueryDeviceAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYDEVICESTRINGEXTPROC __eglewQueryDeviceStringEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYDISPLAYATTRIBEXTPROC __eglewQueryDisplayAttribEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDMABUFFORMATSEXTPROC __eglewQueryDmaBufFormatsEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYDMABUFMODIFIERSEXTPROC __eglewQueryDmaBufModifiersEXT;
+
+EGLEW_FUN_EXPORT PFNEGLGETOUTPUTLAYERSEXTPROC __eglewGetOutputLayersEXT;
+EGLEW_FUN_EXPORT PFNEGLGETOUTPUTPORTSEXTPROC __eglewGetOutputPortsEXT;
+EGLEW_FUN_EXPORT PFNEGLOUTPUTLAYERATTRIBEXTPROC __eglewOutputLayerAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLOUTPUTPORTATTRIBEXTPROC __eglewOutputPortAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC __eglewQueryOutputLayerAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC __eglewQueryOutputLayerStringEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC __eglewQueryOutputPortAttribEXT;
+EGLEW_FUN_EXPORT PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC __eglewQueryOutputPortStringEXT;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC __eglewCreatePlatformPixmapSurfaceEXT;
+EGLEW_FUN_EXPORT PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC __eglewCreatePlatformWindowSurfaceEXT;
+EGLEW_FUN_EXPORT PFNEGLGETPLATFORMDISPLAYEXTPROC __eglewGetPlatformDisplayEXT;
+
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMEROUTPUTEXTPROC __eglewStreamConsumerOutputEXT;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC __eglewQuerySupportedCompressionRatesEXT;
+
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC __eglewSwapBuffersWithDamageEXT;
+
+EGLEW_FUN_EXPORT PFNEGLUNSIGNALSYNCEXTPROC __eglewUnsignalSyncEXT;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEPIXMAPSURFACEHIPROC __eglewCreatePixmapSurfaceHI;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESYNC64KHRPROC __eglewCreateSync64KHR;
+
+EGLEW_FUN_EXPORT PFNEGLDEBUGMESSAGECONTROLKHRPROC __eglewDebugMessageControlKHR;
+EGLEW_FUN_EXPORT PFNEGLLABELOBJECTKHRPROC __eglewLabelObjectKHR;
+EGLEW_FUN_EXPORT PFNEGLQUERYDEBUGKHRPROC __eglewQueryDebugKHR;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDISPLAYATTRIBKHRPROC __eglewQueryDisplayAttribKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEIMAGEKHRPROC __eglewCreateImageKHR;
+EGLEW_FUN_EXPORT PFNEGLDESTROYIMAGEKHRPROC __eglewDestroyImageKHR;
+
+EGLEW_FUN_EXPORT PFNEGLLOCKSURFACEKHRPROC __eglewLockSurfaceKHR;
+EGLEW_FUN_EXPORT PFNEGLUNLOCKSURFACEKHRPROC __eglewUnlockSurfaceKHR;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSURFACE64KHRPROC __eglewQuerySurface64KHR;
+
+EGLEW_FUN_EXPORT PFNEGLSETDAMAGEREGIONKHRPROC __eglewSetDamageRegionKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCLIENTWAITSYNCKHRPROC __eglewClientWaitSyncKHR;
+EGLEW_FUN_EXPORT PFNEGLCREATESYNCKHRPROC __eglewCreateSyncKHR;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSYNCKHRPROC __eglewDestroySyncKHR;
+EGLEW_FUN_EXPORT PFNEGLGETSYNCATTRIBKHRPROC __eglewGetSyncAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLSIGNALSYNCKHRPROC __eglewSignalSyncKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMKHRPROC __eglewCreateStreamKHR;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSTREAMKHRPROC __eglewDestroyStreamKHR;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMKHRPROC __eglewQueryStreamKHR;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMU64KHRPROC __eglewQueryStreamu64KHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMATTRIBKHRPROC __eglewStreamAttribKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMATTRIBKHRPROC __eglewCreateStreamAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMATTRIBKHRPROC __eglewQueryStreamAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLSETSTREAMATTRIBKHRPROC __eglewSetStreamAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC __eglewStreamConsumerAcquireAttribKHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC __eglewStreamConsumerReleaseAttribKHR;
+
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERACQUIREKHRPROC __eglewStreamConsumerAcquireKHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC __eglewStreamConsumerGLTextureExternalKHR;
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERRELEASEKHRPROC __eglewStreamConsumerReleaseKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC __eglewCreateStreamFromFileDescriptorKHR;
+EGLEW_FUN_EXPORT PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC __eglewGetStreamFileDescriptorKHR;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMTIMEKHRPROC __eglewQueryStreamTimeKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC __eglewCreateStreamProducerSurfaceKHR;
+
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC __eglewSwapBuffersWithDamageKHR;
+
+EGLEW_FUN_EXPORT PFNEGLWAITSYNCKHRPROC __eglewWaitSyncKHR;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEDRMIMAGEMESAPROC __eglewCreateDRMImageMESA;
+EGLEW_FUN_EXPORT PFNEGLEXPORTDRMIMAGEMESAPROC __eglewExportDRMImageMESA;
+
+EGLEW_FUN_EXPORT PFNEGLEXPORTDMABUFIMAGEMESAPROC __eglewExportDMABUFImageMESA;
+EGLEW_FUN_EXPORT PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC __eglewExportDMABUFImageQueryMESA;
+
+EGLEW_FUN_EXPORT PFNEGLGETDISPLAYDRIVERCONFIGPROC __eglewGetDisplayDriverConfig;
+EGLEW_FUN_EXPORT PFNEGLGETDISPLAYDRIVERNAMEPROC __eglewGetDisplayDriverName;
+
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSREGIONNOKPROC __eglewSwapBuffersRegionNOK;
+
+EGLEW_FUN_EXPORT PFNEGLSWAPBUFFERSREGION2NOKPROC __eglewSwapBuffersRegion2NOK;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYNATIVEDISPLAYNVPROC __eglewQueryNativeDisplayNV;
+EGLEW_FUN_EXPORT PFNEGLQUERYNATIVEPIXMAPNVPROC __eglewQueryNativePixmapNV;
+EGLEW_FUN_EXPORT PFNEGLQUERYNATIVEWINDOWNVPROC __eglewQueryNativeWindowNV;
+
+EGLEW_FUN_EXPORT PFNEGLPOSTSUBBUFFERNVPROC __eglewPostSubBufferNV;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC __eglewQueryStreamConsumerEventNV;
+EGLEW_FUN_EXPORT PFNEGLSTREAMACQUIREIMAGENVPROC __eglewStreamAcquireImageNV;
+EGLEW_FUN_EXPORT PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC __eglewStreamImageConsumerConnectNV;
+EGLEW_FUN_EXPORT PFNEGLSTREAMRELEASEIMAGENVPROC __eglewStreamReleaseImageNV;
+
+EGLEW_FUN_EXPORT PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC __eglewStreamConsumerGLTextureExternalAttribsNV;
+
+EGLEW_FUN_EXPORT PFNEGLSTREAMFLUSHNVPROC __eglewStreamFlushNV;
+
+EGLEW_FUN_EXPORT PFNEGLQUERYDISPLAYATTRIBNVPROC __eglewQueryDisplayAttribNV;
+EGLEW_FUN_EXPORT PFNEGLQUERYSTREAMMETADATANVPROC __eglewQueryStreamMetadataNV;
+EGLEW_FUN_EXPORT PFNEGLSETSTREAMMETADATANVPROC __eglewSetStreamMetadataNV;
+
+EGLEW_FUN_EXPORT PFNEGLRESETSTREAMNVPROC __eglewResetStreamNV;
+
+EGLEW_FUN_EXPORT PFNEGLCREATESTREAMSYNCNVPROC __eglewCreateStreamSyncNV;
+
+EGLEW_FUN_EXPORT PFNEGLCLIENTWAITSYNCNVPROC __eglewClientWaitSyncNV;
+EGLEW_FUN_EXPORT PFNEGLCREATEFENCESYNCNVPROC __eglewCreateFenceSyncNV;
+EGLEW_FUN_EXPORT PFNEGLDESTROYSYNCNVPROC __eglewDestroySyncNV;
+EGLEW_FUN_EXPORT PFNEGLFENCENVPROC __eglewFenceNV;
+EGLEW_FUN_EXPORT PFNEGLGETSYNCATTRIBNVPROC __eglewGetSyncAttribNV;
+EGLEW_FUN_EXPORT PFNEGLSIGNALSYNCNVPROC __eglewSignalSyncNV;
+
+EGLEW_FUN_EXPORT PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC __eglewGetSystemTimeFrequencyNV;
+EGLEW_FUN_EXPORT PFNEGLGETSYSTEMTIMENVPROC __eglewGetSystemTimeNV;
+
+EGLEW_FUN_EXPORT PFNEGLBINDWAYLANDDISPLAYWLPROC __eglewBindWaylandDisplayWL;
+EGLEW_FUN_EXPORT PFNEGLQUERYWAYLANDBUFFERWLPROC __eglewQueryWaylandBufferWL;
+EGLEW_FUN_EXPORT PFNEGLUNBINDWAYLANDDISPLAYWLPROC __eglewUnbindWaylandDisplayWL;
+
+EGLEW_FUN_EXPORT PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC __eglewCreateWaylandBufferFromImageWL;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_0;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_1;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_2;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_3;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_4;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_VERSION_1_5;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_GLES_layers;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_blob_cache;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_create_native_client_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_framebuffer_target;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_front_buffer_auto_refresh;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_get_frame_timestamps;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_get_native_client_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_image_native_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_native_fence_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_presentation_time;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANDROID_recordable;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_d3d_share_handle_client_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_device_d3d;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_query_surface_pointer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_surface_d3d_texture_2d_share_handle;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_sync_control_rate;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ANGLE_window_fixed_size;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ARM_image_format;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ARM_implicit_external_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_ARM_pixmap_multisample_discard;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_bind_to_front;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_buffer_age;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_client_extensions;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_client_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_compositor;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_config_select_group;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_create_context_robustness;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_base;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_drm;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_drm_render_node;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_enumeration;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_openwf;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_persistent_id;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_query;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_device_query_name;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_explicit_device;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_bt2020_linear;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_bt2020_pq;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_display_p3;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_display_p3_linear;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_display_p3_passthrough;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_scrgb;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_gl_colorspace_scrgb_linear;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_image_dma_buf_import;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_image_dma_buf_import_modifiers;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_image_gl_colorspace;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_image_implicit_sync_control;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_multiview_window;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_output_base;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_output_drm;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_output_openwf;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_pixel_format_float;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_base;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_device;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_wayland;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_x11;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_platform_xcb;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_present_opaque;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_protected_content;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_protected_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_stream_consumer_egloutput;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_surface_CTA861_3_metadata;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_surface_SMPTE2086_metadata;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_surface_compression;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_swap_buffers_with_damage;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_sync_reuse;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_EXT_yuv_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_HI_clientpixmap;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_HI_colorformats;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_IMG_context_priority;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_IMG_image_plane_attribs;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_cl_event;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_cl_event2;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_client_get_all_proc_addresses;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_config_attribs;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_context_flush_control;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_create_context;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_create_context_no_error;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_debug;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_display_reference;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_fence_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_get_all_proc_addresses;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_colorspace;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_renderbuffer_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_texture_2D_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_texture_3D_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_gl_texture_cubemap_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_image_base;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_image_pixmap;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_lock_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_lock_surface2;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_lock_surface3;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_mutable_render_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_no_config_context;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_partial_update;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_platform_android;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_platform_gbm;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_platform_wayland;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_platform_x11;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_reusable_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_attrib;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_consumer_gltexture;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_cross_process_fd;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_fifo;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_producer_aldatalocator;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_stream_producer_eglsurface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_surfaceless_context;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_swap_buffers_with_damage;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_vg_parent_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_KHR_wait_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_drm_image;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_image_dma_buf_export;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_platform_gbm;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_platform_surfaceless;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_MESA_query_driver;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NOK_swap_region;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NOK_swap_region2;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NOK_texture_from_pixmap;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_3dvision_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_context_priority_realtime;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_coverage_sample;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_coverage_sample_resolve;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_cuda_event;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_depth_nonlinear;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_device_cuda;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_native_query;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_post_convert_rounding;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_post_sub_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_quadruple_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_robustness_video_memory_purge;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_consumer_eglimage;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_consumer_gltexture_yuv;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_display;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_object;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_partition;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_process;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_cross_system;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_dma;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_fifo_next;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_fifo_synchronous;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_flush;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_frame_limits;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_metadata;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_origin;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_remote;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_reset;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_socket;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_socket_inet;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_socket_unix;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_stream_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_sync;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_system_time;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_NV_triple_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_TIZEN_image_native_buffer;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_TIZEN_image_native_surface;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_WL_bind_wayland_display;
+EGLEW_VAR_EXPORT GLboolean __EGLEW_WL_create_wayland_buffer_from_image;
+/* ------------------------------------------------------------------------ */
+
+GLEWAPI GLenum GLEWAPIENTRY eglewInit (EGLDisplay display);
+GLEWAPI GLboolean GLEWAPIENTRY eglewIsSupported (const char *name);
+
+#define EGLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#define EGLEW_GET_FUN(x) x
+
+GLEWAPI GLboolean GLEWAPIENTRY eglewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __eglew_h__ */
diff --git a/glew/include/GL/glew.h b/glew/include/GL/glew.h
new file mode 100644
index 0000000..a688f9c
--- /dev/null
+++ b/glew/include/GL/glew.h
@@ -0,0 +1,26719 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 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"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#ifndef __glew_h__
+#define __glew_h__
+#define __GLEW_H__
+
+#if defined(__gl_h_) || defined(__GL_H__) || defined(_GL_H) || defined(__gl_gl_h_) || defined(__X_GL_H)
+#error gl.h included before glew.h
+#endif
+#if defined(__gl2_h_)
+#error gl2.h included before glew.h
+#endif
+#if defined(__gltypes_h_)
+#error gltypes.h included before glew.h
+#endif
+#if defined(__REGAL_H__)
+#error Regal.h included before glew.h
+#endif
+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_)
+#error glext.h included before glew.h
+#endif
+#if defined(__gl_ATI_h_)
+#error glATI.h included before glew.h
+#endif
+
+#define __gl_h_
+#define __gl2_h_
+#define __GL_H__
+#define _GL_H
+#define __gl_gl_h_
+#define __gltypes_h_
+#define __REGAL_H__
+#define __X_GL_H
+#define __glext_h_
+#define __GLEXT_H_
+#define __gl_glext_h_
+#define __gl_ATI_h_
+
+#if defined(_WIN32)
+
+/*
+ * GLEW does not include <windows.h> to avoid name space pollution.
+ * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t
+ * defined properly.
+ */
+/* <windef.h> and <gl.h>*/
+#ifdef APIENTRY
+# ifndef GLAPIENTRY
+# define GLAPIENTRY APIENTRY
+# endif
+# ifndef GLEWAPIENTRY
+# define GLEWAPIENTRY APIENTRY
+# endif
+#else
+#define GLEW_APIENTRY_DEFINED
+# if defined(__MINGW32__) || defined(__CYGWIN__) || (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__)
+# define APIENTRY __stdcall
+# ifndef GLAPIENTRY
+# define GLAPIENTRY __stdcall
+# endif
+# ifndef GLEWAPIENTRY
+# define GLEWAPIENTRY __stdcall
+# endif
+# else
+# define APIENTRY
+# endif
+#endif
+/* <winnt.h> */
+#ifndef CALLBACK
+#define GLEW_CALLBACK_DEFINED
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# define CALLBACK __attribute__ ((__stdcall__))
+# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+# define CALLBACK __stdcall
+# else
+# define CALLBACK
+# endif
+#endif
+/* <wingdi.h> and <winnt.h> */
+#ifndef WINGDIAPI
+#define GLEW_WINGDIAPI_DEFINED
+#define WINGDIAPI __declspec(dllimport)
+#endif
+/* <ctype.h> */
+#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED)
+typedef unsigned short wchar_t;
+# define _WCHAR_T_DEFINED
+#endif
+/* <stddef.h> */
+#if !defined(_W64)
+# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300
+# define _W64 __w64
+# else
+# define _W64
+# endif
+#endif
+#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__)
+# ifdef _WIN64
+typedef __int64 ptrdiff_t;
+# else
+typedef _W64 int ptrdiff_t;
+# endif
+# define _PTRDIFF_T_DEFINED
+# define _PTRDIFF_T_
+#endif
+
+#ifndef GLAPI
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# define GLAPI extern
+# else
+# define GLAPI WINGDIAPI
+# endif
+#endif
+
+/*
+ * GLEW_STATIC is defined for static library.
+ * GLEW_BUILD is defined for building the DLL library.
+ */
+
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# ifdef GLEW_BUILD
+# define GLEWAPI extern __declspec(dllexport)
+# else
+# define GLEWAPI extern __declspec(dllimport)
+# endif
+#endif
+
+#else /* _UNIX */
+
+/*
+ * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO
+ * C. On my system, this amounts to _3 lines_ of included code, all of
+ * them pretty much harmless. If you know of a way of detecting 32 vs
+ * 64 _targets_ at compile time you are free to replace this with
+ * something that's portable. For now, _this_ is the portable solution.
+ * (mem, 2004-01-04)
+ */
+
+#if defined(__APPLE__) || defined(__linux__)
+# if defined(__cplusplus)
+# include <cstddef>
+# include <cstdint>
+# else
+# include <stddef.h>
+# include <stdint.h>
+# endif
+#else
+
+# include <stddef.h>
+
+/* SGI MIPSPro doesn't like stdint.h in C++ mode */
+/* ID: 3376260 Solaris 9 has inttypes.h, but not stdint.h */
+
+# if (defined(__sgi) || defined(__sun)) && !defined(__GNUC__)
+# include <inttypes.h>
+# else
+# include <stdint.h>
+# endif
+#endif
+
+#define GLEW_APIENTRY_DEFINED
+#define APIENTRY
+
+/*
+ * GLEW_STATIC is defined for static library.
+ */
+
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# if defined(__GNUC__) && __GNUC__>=4
+# define GLEWAPI extern __attribute__ ((visibility("default")))
+# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+# define GLEWAPI extern __global
+# else
+# define GLEWAPI extern
+# endif
+#endif
+
+/* <glu.h> */
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+#endif /* _WIN32 */
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY
+#endif
+
+#ifndef GLEWAPIENTRY
+#define GLEWAPIENTRY
+#endif
+
+#define GLEW_VAR_EXPORT GLEWAPI
+#define GLEW_FUN_EXPORT GLEWAPI
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ----------------------------- GL_VERSION_1_1 ---------------------------- */
+
+#ifndef GL_VERSION_1_1
+#define GL_VERSION_1_1 1
+
+typedef unsigned int GLenum;
+typedef unsigned int GLbitfield;
+typedef unsigned int GLuint;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLboolean;
+typedef signed char GLbyte;
+typedef short GLshort;
+typedef unsigned char GLubyte;
+typedef unsigned short GLushort;
+typedef unsigned long GLulong;
+typedef float GLfloat;
+typedef float GLclampf;
+typedef double GLdouble;
+typedef double GLclampd;
+typedef void GLvoid;
+#if defined(_MSC_VER) && _MSC_VER < 1400
+typedef __int64 GLint64EXT;
+typedef unsigned __int64 GLuint64EXT;
+#elif defined(_MSC_VER) || defined(__BORLANDC__)
+typedef signed long long GLint64EXT;
+typedef unsigned long long GLuint64EXT;
+#else
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+#include <inttypes.h>
+# endif
+typedef int64_t GLint64EXT;
+typedef uint64_t GLuint64EXT;
+#endif
+typedef GLint64EXT GLint64;
+typedef GLuint64EXT GLuint64;
+typedef struct __GLsync *GLsync;
+
+typedef char GLchar;
+
+typedef void *GLeglImageOES; /* GL_EXT_EGL_image_storage */
+
+#define GL_ZERO 0
+#define GL_FALSE 0
+#define GL_LOGIC_OP 0x0BF1
+#define GL_NONE 0
+#define GL_TEXTURE_COMPONENTS 0x1003
+#define GL_NO_ERROR 0
+#define GL_POINTS 0x0000
+#define GL_CURRENT_BIT 0x00000001
+#define GL_TRUE 1
+#define GL_ONE 1
+#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
+#define GL_LINES 0x0001
+#define GL_LINE_LOOP 0x0002
+#define GL_POINT_BIT 0x00000002
+#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
+#define GL_LINE_STRIP 0x0003
+#define GL_LINE_BIT 0x00000004
+#define GL_TRIANGLES 0x0004
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_QUADS 0x0007
+#define GL_QUAD_STRIP 0x0008
+#define GL_POLYGON_BIT 0x00000008
+#define GL_POLYGON 0x0009
+#define GL_POLYGON_STIPPLE_BIT 0x00000010
+#define GL_PIXEL_MODE_BIT 0x00000020
+#define GL_LIGHTING_BIT 0x00000040
+#define GL_FOG_BIT 0x00000080
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_ACCUM 0x0100
+#define GL_LOAD 0x0101
+#define GL_RETURN 0x0102
+#define GL_MULT 0x0103
+#define GL_ADD 0x0104
+#define GL_NEVER 0x0200
+#define GL_ACCUM_BUFFER_BIT 0x00000200
+#define GL_LESS 0x0201
+#define GL_EQUAL 0x0202
+#define GL_LEQUAL 0x0203
+#define GL_GREATER 0x0204
+#define GL_NOTEQUAL 0x0205
+#define GL_GEQUAL 0x0206
+#define GL_ALWAYS 0x0207
+#define GL_SRC_COLOR 0x0300
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_SRC_ALPHA 0x0302
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_DST_ALPHA 0x0304
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+#define GL_DST_COLOR 0x0306
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_SRC_ALPHA_SATURATE 0x0308
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_FRONT_LEFT 0x0400
+#define GL_FRONT_RIGHT 0x0401
+#define GL_BACK_LEFT 0x0402
+#define GL_BACK_RIGHT 0x0403
+#define GL_FRONT 0x0404
+#define GL_BACK 0x0405
+#define GL_LEFT 0x0406
+#define GL_RIGHT 0x0407
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_AUX0 0x0409
+#define GL_AUX1 0x040A
+#define GL_AUX2 0x040B
+#define GL_AUX3 0x040C
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVALID_OPERATION 0x0502
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_OUT_OF_MEMORY 0x0505
+#define GL_2D 0x0600
+#define GL_3D 0x0601
+#define GL_3D_COLOR 0x0602
+#define GL_3D_COLOR_TEXTURE 0x0603
+#define GL_4D_COLOR_TEXTURE 0x0604
+#define GL_PASS_THROUGH_TOKEN 0x0700
+#define GL_POINT_TOKEN 0x0701
+#define GL_LINE_TOKEN 0x0702
+#define GL_POLYGON_TOKEN 0x0703
+#define GL_BITMAP_TOKEN 0x0704
+#define GL_DRAW_PIXEL_TOKEN 0x0705
+#define GL_COPY_PIXEL_TOKEN 0x0706
+#define GL_LINE_RESET_TOKEN 0x0707
+#define GL_EXP 0x0800
+#define GL_VIEWPORT_BIT 0x00000800
+#define GL_EXP2 0x0801
+#define GL_CW 0x0900
+#define GL_CCW 0x0901
+#define GL_COEFF 0x0A00
+#define GL_ORDER 0x0A01
+#define GL_DOMAIN 0x0A02
+#define GL_CURRENT_COLOR 0x0B00
+#define GL_CURRENT_INDEX 0x0B01
+#define GL_CURRENT_NORMAL 0x0B02
+#define GL_CURRENT_TEXTURE_COORDS 0x0B03
+#define GL_CURRENT_RASTER_COLOR 0x0B04
+#define GL_CURRENT_RASTER_INDEX 0x0B05
+#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
+#define GL_CURRENT_RASTER_POSITION 0x0B07
+#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
+#define GL_CURRENT_RASTER_DISTANCE 0x0B09
+#define GL_POINT_SMOOTH 0x0B10
+#define GL_POINT_SIZE 0x0B11
+#define GL_POINT_SIZE_RANGE 0x0B12
+#define GL_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_LINE_SMOOTH 0x0B20
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINE_WIDTH_RANGE 0x0B22
+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_LINE_STIPPLE 0x0B24
+#define GL_LINE_STIPPLE_PATTERN 0x0B25
+#define GL_LINE_STIPPLE_REPEAT 0x0B26
+#define GL_LIST_MODE 0x0B30
+#define GL_MAX_LIST_NESTING 0x0B31
+#define GL_LIST_BASE 0x0B32
+#define GL_LIST_INDEX 0x0B33
+#define GL_POLYGON_MODE 0x0B40
+#define GL_POLYGON_SMOOTH 0x0B41
+#define GL_POLYGON_STIPPLE 0x0B42
+#define GL_EDGE_FLAG 0x0B43
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_FRONT_FACE 0x0B46
+#define GL_LIGHTING 0x0B50
+#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
+#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
+#define GL_LIGHT_MODEL_AMBIENT 0x0B53
+#define GL_SHADE_MODEL 0x0B54
+#define GL_COLOR_MATERIAL_FACE 0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
+#define GL_COLOR_MATERIAL 0x0B57
+#define GL_FOG 0x0B60
+#define GL_FOG_INDEX 0x0B61
+#define GL_FOG_DENSITY 0x0B62
+#define GL_FOG_START 0x0B63
+#define GL_FOG_END 0x0B64
+#define GL_FOG_MODE 0x0B65
+#define GL_FOG_COLOR 0x0B66
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_ACCUM_CLEAR_VALUE 0x0B80
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_MATRIX_MODE 0x0BA0
+#define GL_NORMALIZE 0x0BA1
+#define GL_VIEWPORT 0x0BA2
+#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
+#define GL_PROJECTION_STACK_DEPTH 0x0BA4
+#define GL_TEXTURE_STACK_DEPTH 0x0BA5
+#define GL_MODELVIEW_MATRIX 0x0BA6
+#define GL_PROJECTION_MATRIX 0x0BA7
+#define GL_TEXTURE_MATRIX 0x0BA8
+#define GL_ATTRIB_STACK_DEPTH 0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
+#define GL_ALPHA_TEST 0x0BC0
+#define GL_ALPHA_TEST_FUNC 0x0BC1
+#define GL_ALPHA_TEST_REF 0x0BC2
+#define GL_DITHER 0x0BD0
+#define GL_BLEND_DST 0x0BE0
+#define GL_BLEND_SRC 0x0BE1
+#define GL_BLEND 0x0BE2
+#define GL_LOGIC_OP_MODE 0x0BF0
+#define GL_INDEX_LOGIC_OP 0x0BF1
+#define GL_COLOR_LOGIC_OP 0x0BF2
+#define GL_AUX_BUFFERS 0x0C00
+#define GL_DRAW_BUFFER 0x0C01
+#define GL_READ_BUFFER 0x0C02
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_INDEX_CLEAR_VALUE 0x0C20
+#define GL_INDEX_WRITEMASK 0x0C21
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_INDEX_MODE 0x0C30
+#define GL_RGBA_MODE 0x0C31
+#define GL_DOUBLEBUFFER 0x0C32
+#define GL_STEREO 0x0C33
+#define GL_RENDER_MODE 0x0C40
+#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
+#define GL_POINT_SMOOTH_HINT 0x0C51
+#define GL_LINE_SMOOTH_HINT 0x0C52
+#define GL_POLYGON_SMOOTH_HINT 0x0C53
+#define GL_FOG_HINT 0x0C54
+#define GL_TEXTURE_GEN_S 0x0C60
+#define GL_TEXTURE_GEN_T 0x0C61
+#define GL_TEXTURE_GEN_R 0x0C62
+#define GL_TEXTURE_GEN_Q 0x0C63
+#define GL_PIXEL_MAP_I_TO_I 0x0C70
+#define GL_PIXEL_MAP_S_TO_S 0x0C71
+#define GL_PIXEL_MAP_I_TO_R 0x0C72
+#define GL_PIXEL_MAP_I_TO_G 0x0C73
+#define GL_PIXEL_MAP_I_TO_B 0x0C74
+#define GL_PIXEL_MAP_I_TO_A 0x0C75
+#define GL_PIXEL_MAP_R_TO_R 0x0C76
+#define GL_PIXEL_MAP_G_TO_G 0x0C77
+#define GL_PIXEL_MAP_B_TO_B 0x0C78
+#define GL_PIXEL_MAP_A_TO_A 0x0C79
+#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
+#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
+#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
+#define GL_UNPACK_SWAP_BYTES 0x0CF0
+#define GL_UNPACK_LSB_FIRST 0x0CF1
+#define GL_UNPACK_ROW_LENGTH 0x0CF2
+#define GL_UNPACK_SKIP_ROWS 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_PACK_SWAP_BYTES 0x0D00
+#define GL_PACK_LSB_FIRST 0x0D01
+#define GL_PACK_ROW_LENGTH 0x0D02
+#define GL_PACK_SKIP_ROWS 0x0D03
+#define GL_PACK_SKIP_PIXELS 0x0D04
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_MAP_COLOR 0x0D10
+#define GL_MAP_STENCIL 0x0D11
+#define GL_INDEX_SHIFT 0x0D12
+#define GL_INDEX_OFFSET 0x0D13
+#define GL_RED_SCALE 0x0D14
+#define GL_RED_BIAS 0x0D15
+#define GL_ZOOM_X 0x0D16
+#define GL_ZOOM_Y 0x0D17
+#define GL_GREEN_SCALE 0x0D18
+#define GL_GREEN_BIAS 0x0D19
+#define GL_BLUE_SCALE 0x0D1A
+#define GL_BLUE_BIAS 0x0D1B
+#define GL_ALPHA_SCALE 0x0D1C
+#define GL_ALPHA_BIAS 0x0D1D
+#define GL_DEPTH_SCALE 0x0D1E
+#define GL_DEPTH_BIAS 0x0D1F
+#define GL_MAX_EVAL_ORDER 0x0D30
+#define GL_MAX_LIGHTS 0x0D31
+#define GL_MAX_CLIP_PLANES 0x0D32
+#define GL_MAX_TEXTURE_SIZE 0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
+#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
+#define GL_MAX_NAME_STACK_DEPTH 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
+#define GL_SUBPIXEL_BITS 0x0D50
+#define GL_INDEX_BITS 0x0D51
+#define GL_RED_BITS 0x0D52
+#define GL_GREEN_BITS 0x0D53
+#define GL_BLUE_BITS 0x0D54
+#define GL_ALPHA_BITS 0x0D55
+#define GL_DEPTH_BITS 0x0D56
+#define GL_STENCIL_BITS 0x0D57
+#define GL_ACCUM_RED_BITS 0x0D58
+#define GL_ACCUM_GREEN_BITS 0x0D59
+#define GL_ACCUM_BLUE_BITS 0x0D5A
+#define GL_ACCUM_ALPHA_BITS 0x0D5B
+#define GL_NAME_STACK_DEPTH 0x0D70
+#define GL_AUTO_NORMAL 0x0D80
+#define GL_MAP1_COLOR_4 0x0D90
+#define GL_MAP1_INDEX 0x0D91
+#define GL_MAP1_NORMAL 0x0D92
+#define GL_MAP1_TEXTURE_COORD_1 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4 0x0D96
+#define GL_MAP1_VERTEX_3 0x0D97
+#define GL_MAP1_VERTEX_4 0x0D98
+#define GL_MAP2_COLOR_4 0x0DB0
+#define GL_MAP2_INDEX 0x0DB1
+#define GL_MAP2_NORMAL 0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
+#define GL_MAP2_VERTEX_3 0x0DB7
+#define GL_MAP2_VERTEX_4 0x0DB8
+#define GL_MAP1_GRID_DOMAIN 0x0DD0
+#define GL_MAP1_GRID_SEGMENTS 0x0DD1
+#define GL_MAP2_GRID_DOMAIN 0x0DD2
+#define GL_MAP2_GRID_SEGMENTS 0x0DD3
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
+#define GL_SELECTION_BUFFER_POINTER 0x0DF3
+#define GL_SELECTION_BUFFER_SIZE 0x0DF4
+#define GL_TEXTURE_WIDTH 0x1000
+#define GL_TRANSFORM_BIT 0x00001000
+#define GL_TEXTURE_HEIGHT 0x1001
+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
+#define GL_TEXTURE_BORDER_COLOR 0x1004
+#define GL_TEXTURE_BORDER 0x1005
+#define GL_DONT_CARE 0x1100
+#define GL_FASTEST 0x1101
+#define GL_NICEST 0x1102
+#define GL_AMBIENT 0x1200
+#define GL_DIFFUSE 0x1201
+#define GL_SPECULAR 0x1202
+#define GL_POSITION 0x1203
+#define GL_SPOT_DIRECTION 0x1204
+#define GL_SPOT_EXPONENT 0x1205
+#define GL_SPOT_CUTOFF 0x1206
+#define GL_CONSTANT_ATTENUATION 0x1207
+#define GL_LINEAR_ATTENUATION 0x1208
+#define GL_QUADRATIC_ATTENUATION 0x1209
+#define GL_COMPILE 0x1300
+#define GL_COMPILE_AND_EXECUTE 0x1301
+#define GL_BYTE 0x1400
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_SHORT 0x1402
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_INT 0x1404
+#define GL_UNSIGNED_INT 0x1405
+#define GL_FLOAT 0x1406
+#define GL_2_BYTES 0x1407
+#define GL_3_BYTES 0x1408
+#define GL_4_BYTES 0x1409
+#define GL_DOUBLE 0x140A
+#define GL_CLEAR 0x1500
+#define GL_AND 0x1501
+#define GL_AND_REVERSE 0x1502
+#define GL_COPY 0x1503
+#define GL_AND_INVERTED 0x1504
+#define GL_NOOP 0x1505
+#define GL_XOR 0x1506
+#define GL_OR 0x1507
+#define GL_NOR 0x1508
+#define GL_EQUIV 0x1509
+#define GL_INVERT 0x150A
+#define GL_OR_REVERSE 0x150B
+#define GL_COPY_INVERTED 0x150C
+#define GL_OR_INVERTED 0x150D
+#define GL_NAND 0x150E
+#define GL_SET 0x150F
+#define GL_EMISSION 0x1600
+#define GL_SHININESS 0x1601
+#define GL_AMBIENT_AND_DIFFUSE 0x1602
+#define GL_COLOR_INDEXES 0x1603
+#define GL_MODELVIEW 0x1700
+#define GL_PROJECTION 0x1701
+#define GL_TEXTURE 0x1702
+#define GL_COLOR 0x1800
+#define GL_DEPTH 0x1801
+#define GL_STENCIL 0x1802
+#define GL_COLOR_INDEX 0x1900
+#define GL_STENCIL_INDEX 0x1901
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RGB 0x1907
+#define GL_RGBA 0x1908
+#define GL_LUMINANCE 0x1909
+#define GL_LUMINANCE_ALPHA 0x190A
+#define GL_BITMAP 0x1A00
+#define GL_POINT 0x1B00
+#define GL_LINE 0x1B01
+#define GL_FILL 0x1B02
+#define GL_RENDER 0x1C00
+#define GL_FEEDBACK 0x1C01
+#define GL_SELECT 0x1C02
+#define GL_FLAT 0x1D00
+#define GL_SMOOTH 0x1D01
+#define GL_KEEP 0x1E00
+#define GL_REPLACE 0x1E01
+#define GL_INCR 0x1E02
+#define GL_DECR 0x1E03
+#define GL_VENDOR 0x1F00
+#define GL_RENDERER 0x1F01
+#define GL_VERSION 0x1F02
+#define GL_EXTENSIONS 0x1F03
+#define GL_S 0x2000
+#define GL_ENABLE_BIT 0x00002000
+#define GL_T 0x2001
+#define GL_R 0x2002
+#define GL_Q 0x2003
+#define GL_MODULATE 0x2100
+#define GL_DECAL 0x2101
+#define GL_TEXTURE_ENV_MODE 0x2200
+#define GL_TEXTURE_ENV_COLOR 0x2201
+#define GL_TEXTURE_ENV 0x2300
+#define GL_EYE_LINEAR 0x2400
+#define GL_OBJECT_LINEAR 0x2401
+#define GL_SPHERE_MAP 0x2402
+#define GL_TEXTURE_GEN_MODE 0x2500
+#define GL_OBJECT_PLANE 0x2501
+#define GL_EYE_PLANE 0x2502
+#define GL_NEAREST 0x2600
+#define GL_LINEAR 0x2601
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+#define GL_CLAMP 0x2900
+#define GL_REPEAT 0x2901
+#define GL_POLYGON_OFFSET_UNITS 0x2A00
+#define GL_POLYGON_OFFSET_POINT 0x2A01
+#define GL_POLYGON_OFFSET_LINE 0x2A02
+#define GL_R3_G3_B2 0x2A10
+#define GL_V2F 0x2A20
+#define GL_V3F 0x2A21
+#define GL_C4UB_V2F 0x2A22
+#define GL_C4UB_V3F 0x2A23
+#define GL_C3F_V3F 0x2A24
+#define GL_N3F_V3F 0x2A25
+#define GL_C4F_N3F_V3F 0x2A26
+#define GL_T2F_V3F 0x2A27
+#define GL_T4F_V4F 0x2A28
+#define GL_T2F_C4UB_V3F 0x2A29
+#define GL_T2F_C3F_V3F 0x2A2A
+#define GL_T2F_N3F_V3F 0x2A2B
+#define GL_T2F_C4F_N3F_V3F 0x2A2C
+#define GL_T4F_C4F_N3F_V4F 0x2A2D
+#define GL_CLIP_PLANE0 0x3000
+#define GL_CLIP_PLANE1 0x3001
+#define GL_CLIP_PLANE2 0x3002
+#define GL_CLIP_PLANE3 0x3003
+#define GL_CLIP_PLANE4 0x3004
+#define GL_CLIP_PLANE5 0x3005
+#define GL_LIGHT0 0x4000
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_LIGHT1 0x4001
+#define GL_LIGHT2 0x4002
+#define GL_LIGHT3 0x4003
+#define GL_LIGHT4 0x4004
+#define GL_LIGHT5 0x4005
+#define GL_LIGHT6 0x4006
+#define GL_LIGHT7 0x4007
+#define GL_HINT_BIT 0x00008000
+#define GL_POLYGON_OFFSET_FILL 0x8037
+#define GL_POLYGON_OFFSET_FACTOR 0x8038
+#define GL_ALPHA4 0x803B
+#define GL_ALPHA8 0x803C
+#define GL_ALPHA12 0x803D
+#define GL_ALPHA16 0x803E
+#define GL_LUMINANCE4 0x803F
+#define GL_LUMINANCE8 0x8040
+#define GL_LUMINANCE12 0x8041
+#define GL_LUMINANCE16 0x8042
+#define GL_LUMINANCE4_ALPHA4 0x8043
+#define GL_LUMINANCE6_ALPHA2 0x8044
+#define GL_LUMINANCE8_ALPHA8 0x8045
+#define GL_LUMINANCE12_ALPHA4 0x8046
+#define GL_LUMINANCE12_ALPHA12 0x8047
+#define GL_LUMINANCE16_ALPHA16 0x8048
+#define GL_INTENSITY 0x8049
+#define GL_INTENSITY4 0x804A
+#define GL_INTENSITY8 0x804B
+#define GL_INTENSITY12 0x804C
+#define GL_INTENSITY16 0x804D
+#define GL_RGB4 0x804F
+#define GL_RGB5 0x8050
+#define GL_RGB8 0x8051
+#define GL_RGB10 0x8052
+#define GL_RGB12 0x8053
+#define GL_RGB16 0x8054
+#define GL_RGBA2 0x8055
+#define GL_RGBA4 0x8056
+#define GL_RGB5_A1 0x8057
+#define GL_RGBA8 0x8058
+#define GL_RGB10_A2 0x8059
+#define GL_RGBA12 0x805A
+#define GL_RGBA16 0x805B
+#define GL_TEXTURE_RED_SIZE 0x805C
+#define GL_TEXTURE_GREEN_SIZE 0x805D
+#define GL_TEXTURE_BLUE_SIZE 0x805E
+#define GL_TEXTURE_ALPHA_SIZE 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE 0x8061
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_TEXTURE_PRIORITY 0x8066
+#define GL_TEXTURE_RESIDENT 0x8067
+#define GL_TEXTURE_BINDING_1D 0x8068
+#define GL_TEXTURE_BINDING_2D 0x8069
+#define GL_VERTEX_ARRAY 0x8074
+#define GL_NORMAL_ARRAY 0x8075
+#define GL_COLOR_ARRAY 0x8076
+#define GL_INDEX_ARRAY 0x8077
+#define GL_TEXTURE_COORD_ARRAY 0x8078
+#define GL_EDGE_FLAG_ARRAY 0x8079
+#define GL_VERTEX_ARRAY_SIZE 0x807A
+#define GL_VERTEX_ARRAY_TYPE 0x807B
+#define GL_VERTEX_ARRAY_STRIDE 0x807C
+#define GL_NORMAL_ARRAY_TYPE 0x807E
+#define GL_NORMAL_ARRAY_STRIDE 0x807F
+#define GL_COLOR_ARRAY_SIZE 0x8081
+#define GL_COLOR_ARRAY_TYPE 0x8082
+#define GL_COLOR_ARRAY_STRIDE 0x8083
+#define GL_INDEX_ARRAY_TYPE 0x8085
+#define GL_INDEX_ARRAY_STRIDE 0x8086
+#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
+#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
+#define GL_VERTEX_ARRAY_POINTER 0x808E
+#define GL_NORMAL_ARRAY_POINTER 0x808F
+#define GL_COLOR_ARRAY_POINTER 0x8090
+#define GL_INDEX_ARRAY_POINTER 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_EVAL_BIT 0x00010000
+#define GL_LIST_BIT 0x00020000
+#define GL_TEXTURE_BIT 0x00040000
+#define GL_SCISSOR_BIT 0x00080000
+#define GL_ALL_ATTRIB_BITS 0x000fffff
+#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff
+
+GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value);
+GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref);
+GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences);
+GLAPI void GLAPIENTRY glArrayElement (GLint i);
+GLAPI void GLAPIENTRY glBegin (GLenum mode);
+GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture);
+GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
+GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
+GLAPI void GLAPIENTRY glCallList (GLuint list);
+GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const void *lists);
+GLAPI void GLAPIENTRY glClear (GLbitfield mask);
+GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLAPI void GLAPIENTRY glClearDepth (GLclampd depth);
+GLAPI void GLAPIENTRY glClearIndex (GLfloat c);
+GLAPI void GLAPIENTRY glClearStencil (GLint s);
+GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation);
+GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue);
+GLAPI void GLAPIENTRY glColor3iv (const GLint *v);
+GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue);
+GLAPI void GLAPIENTRY glColor3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v);
+GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue);
+GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v);
+GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue);
+GLAPI void GLAPIENTRY glColor3usv (const GLushort *v);
+GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha);
+GLAPI void GLAPIENTRY glColor4iv (const GLint *v);
+GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha);
+GLAPI void GLAPIENTRY glColor4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v);
+GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v);
+GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha);
+GLAPI void GLAPIENTRY glColor4usv (const GLushort *v);
+GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode);
+GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void GLAPIENTRY glCullFace (GLenum mode);
+GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range);
+GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
+GLAPI void GLAPIENTRY glDepthFunc (GLenum func);
+GLAPI void GLAPIENTRY glDepthMask (GLboolean flag);
+GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar);
+GLAPI void GLAPIENTRY glDisable (GLenum cap);
+GLAPI void GLAPIENTRY glDisableClientState (GLenum array);
+GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
+GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode);
+GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
+GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag);
+GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag);
+GLAPI void GLAPIENTRY glEnable (GLenum cap);
+GLAPI void GLAPIENTRY glEnableClientState (GLenum array);
+GLAPI void GLAPIENTRY glEnd (void);
+GLAPI void GLAPIENTRY glEndList (void);
+GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u);
+GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u);
+GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u);
+GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u);
+GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v);
+GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u);
+GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v);
+GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u);
+GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2);
+GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+GLAPI void GLAPIENTRY glEvalPoint1 (GLint i);
+GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j);
+GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer);
+GLAPI void GLAPIENTRY glFinish (void);
+GLAPI void GLAPIENTRY glFlush (void);
+GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glFrontFace (GLenum mode);
+GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range);
+GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures);
+GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params);
+GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation);
+GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params);
+GLAPI GLenum GLAPIENTRY glGetError (void);
+GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v);
+GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v);
+GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v);
+GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values);
+GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values);
+GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values);
+GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, void* *params);
+GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask);
+GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name);
+GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params);
+GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode);
+GLAPI void GLAPIENTRY glIndexMask (GLuint mask);
+GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glIndexd (GLdouble c);
+GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c);
+GLAPI void GLAPIENTRY glIndexf (GLfloat c);
+GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c);
+GLAPI void GLAPIENTRY glIndexi (GLint c);
+GLAPI void GLAPIENTRY glIndexiv (const GLint *c);
+GLAPI void GLAPIENTRY glIndexs (GLshort c);
+GLAPI void GLAPIENTRY glIndexsv (const GLshort *c);
+GLAPI void GLAPIENTRY glIndexub (GLubyte c);
+GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c);
+GLAPI void GLAPIENTRY glInitNames (void);
+GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const void *pointer);
+GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap);
+GLAPI GLboolean GLAPIENTRY glIsList (GLuint list);
+GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture);
+GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern);
+GLAPI void GLAPIENTRY glLineWidth (GLfloat width);
+GLAPI void GLAPIENTRY glListBase (GLuint base);
+GLAPI void GLAPIENTRY glLoadIdentity (void);
+GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m);
+GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m);
+GLAPI void GLAPIENTRY glLoadName (GLuint name);
+GLAPI void GLAPIENTRY glLogicOp (GLenum opcode);
+GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
+GLAPI void GLAPIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2);
+GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2);
+GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glMatrixMode (GLenum mode);
+GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m);
+GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m);
+GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode);
+GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz);
+GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v);
+GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz);
+GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz);
+GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz);
+GLAPI void GLAPIENTRY glNormal3iv (const GLint *v);
+GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz);
+GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void GLAPIENTRY glPassThrough (GLfloat token);
+GLAPI void GLAPIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values);
+GLAPI void GLAPIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values);
+GLAPI void GLAPIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values);
+GLAPI void GLAPIENTRY glPixelStoref (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glPixelStorei (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glPixelTransferf (GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glPixelTransferi (GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor);
+GLAPI void GLAPIENTRY glPointSize (GLfloat size);
+GLAPI void GLAPIENTRY glPolygonMode (GLenum face, GLenum mode);
+GLAPI void GLAPIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
+GLAPI void GLAPIENTRY glPolygonStipple (const GLubyte *mask);
+GLAPI void GLAPIENTRY glPopAttrib (void);
+GLAPI void GLAPIENTRY glPopClientAttrib (void);
+GLAPI void GLAPIENTRY glPopMatrix (void);
+GLAPI void GLAPIENTRY glPopName (void);
+GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask);
+GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask);
+GLAPI void GLAPIENTRY glPushMatrix (void);
+GLAPI void GLAPIENTRY glPushName (GLuint name);
+GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y);
+GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y);
+GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y);
+GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y);
+GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z);
+GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z);
+GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w);
+GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v);
+GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glReadBuffer (GLenum mode);
+GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
+GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2);
+GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2);
+GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2);
+GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2);
+GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2);
+GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode);
+GLAPI void GLAPIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer);
+GLAPI void GLAPIENTRY glShadeModel (GLenum mode);
+GLAPI void GLAPIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
+GLAPI void GLAPIENTRY glStencilMask (GLuint mask);
+GLAPI void GLAPIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
+GLAPI void GLAPIENTRY glTexCoord1d (GLdouble s);
+GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s);
+GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord1i (GLint s);
+GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord1s (GLshort s);
+GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t);
+GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t);
+GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t);
+GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t);
+GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r);
+GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r);
+GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r);
+GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r);
+GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q);
+GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v);
+GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param);
+GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params);
+GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
+GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
+GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y);
+GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y);
+GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y);
+GLAPI void GLAPIENTRY glVertex2iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y);
+GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z);
+GLAPI void GLAPIENTRY glVertex3iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z);
+GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v);
+GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v);
+GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w);
+GLAPI void GLAPIENTRY glVertex4iv (const GLint *v);
+GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v);
+GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
+GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1)
+
+#endif /* GL_VERSION_1_1 */
+
+/* ---------------------------------- GLU ---------------------------------- */
+
+#ifndef GLEW_NO_GLU
+# ifdef __APPLE__
+# include <Availability.h>
+# if defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
+# define GLEW_NO_GLU
+# endif
+# endif
+#endif
+
+#ifndef GLEW_NO_GLU
+/* this is where we can safely include GLU */
+# if defined(__APPLE__) && defined(__MACH__)
+# include <OpenGL/glu.h>
+# else
+# include <GL/glu.h>
+# endif
+#endif
+
+/* ----------------------------- GL_VERSION_1_2 ---------------------------- */
+
+#ifndef GL_VERSION_1_2
+#define GL_VERSION_1_2 1
+
+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
+#define GL_RESCALE_NORMAL 0x803A
+#define GL_TEXTURE_BINDING_3D 0x806A
+#define GL_PACK_SKIP_IMAGES 0x806B
+#define GL_PACK_IMAGE_HEIGHT 0x806C
+#define GL_UNPACK_SKIP_IMAGES 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
+#define GL_TEXTURE_3D 0x806F
+#define GL_PROXY_TEXTURE_3D 0x8070
+#define GL_TEXTURE_DEPTH 0x8071
+#define GL_TEXTURE_WRAP_R 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
+#define GL_BGR 0x80E0
+#define GL_BGRA 0x80E1
+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
+#define GL_MAX_ELEMENTS_INDICES 0x80E9
+#define GL_CLAMP_TO_EDGE 0x812F
+#define GL_TEXTURE_MIN_LOD 0x813A
+#define GL_TEXTURE_MAX_LOD 0x813B
+#define GL_TEXTURE_BASE_LEVEL 0x813C
+#define GL_TEXTURE_MAX_LEVEL 0x813D
+#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
+#define GL_SINGLE_COLOR 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
+#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
+
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+
+#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D)
+#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements)
+#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D)
+#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D)
+
+#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2)
+
+#endif /* GL_VERSION_1_2 */
+
+/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */
+
+#ifndef GL_VERSION_1_2_1
+#define GL_VERSION_1_2_1 1
+
+#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1)
+
+#endif /* GL_VERSION_1_2_1 */
+
+/* ----------------------------- GL_VERSION_1_3 ---------------------------- */
+
+#ifndef GL_VERSION_1_3
+#define GL_VERSION_1_3 1
+
+#define GL_MULTISAMPLE 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
+#define GL_SAMPLE_COVERAGE 0x80A0
+#define GL_SAMPLE_BUFFERS 0x80A8
+#define GL_SAMPLES 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
+#define GL_CLAMP_TO_BORDER 0x812D
+#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE1 0x84C1
+#define GL_TEXTURE2 0x84C2
+#define GL_TEXTURE3 0x84C3
+#define GL_TEXTURE4 0x84C4
+#define GL_TEXTURE5 0x84C5
+#define GL_TEXTURE6 0x84C6
+#define GL_TEXTURE7 0x84C7
+#define GL_TEXTURE8 0x84C8
+#define GL_TEXTURE9 0x84C9
+#define GL_TEXTURE10 0x84CA
+#define GL_TEXTURE11 0x84CB
+#define GL_TEXTURE12 0x84CC
+#define GL_TEXTURE13 0x84CD
+#define GL_TEXTURE14 0x84CE
+#define GL_TEXTURE15 0x84CF
+#define GL_TEXTURE16 0x84D0
+#define GL_TEXTURE17 0x84D1
+#define GL_TEXTURE18 0x84D2
+#define GL_TEXTURE19 0x84D3
+#define GL_TEXTURE20 0x84D4
+#define GL_TEXTURE21 0x84D5
+#define GL_TEXTURE22 0x84D6
+#define GL_TEXTURE23 0x84D7
+#define GL_TEXTURE24 0x84D8
+#define GL_TEXTURE25 0x84D9
+#define GL_TEXTURE26 0x84DA
+#define GL_TEXTURE27 0x84DB
+#define GL_TEXTURE28 0x84DC
+#define GL_TEXTURE29 0x84DD
+#define GL_TEXTURE30 0x84DE
+#define GL_TEXTURE31 0x84DF
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
+#define GL_MAX_TEXTURE_UNITS 0x84E2
+#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
+#define GL_SUBTRACT 0x84E7
+#define GL_COMPRESSED_ALPHA 0x84E9
+#define GL_COMPRESSED_LUMINANCE 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
+#define GL_COMPRESSED_INTENSITY 0x84EC
+#define GL_COMPRESSED_RGB 0x84ED
+#define GL_COMPRESSED_RGBA 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
+#define GL_NORMAL_MAP 0x8511
+#define GL_REFLECTION_MAP 0x8512
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
+#define GL_COMBINE 0x8570
+#define GL_COMBINE_RGB 0x8571
+#define GL_COMBINE_ALPHA 0x8572
+#define GL_RGB_SCALE 0x8573
+#define GL_ADD_SIGNED 0x8574
+#define GL_INTERPOLATE 0x8575
+#define GL_CONSTANT 0x8576
+#define GL_PRIMARY_COLOR 0x8577
+#define GL_PREVIOUS 0x8578
+#define GL_SOURCE0_RGB 0x8580
+#define GL_SOURCE1_RGB 0x8581
+#define GL_SOURCE2_RGB 0x8582
+#define GL_SOURCE0_ALPHA 0x8588
+#define GL_SOURCE1_ALPHA 0x8589
+#define GL_SOURCE2_ALPHA 0x858A
+#define GL_OPERAND0_RGB 0x8590
+#define GL_OPERAND1_RGB 0x8591
+#define GL_OPERAND2_RGB 0x8592
+#define GL_OPERAND0_ALPHA 0x8598
+#define GL_OPERAND1_ALPHA 0x8599
+#define GL_OPERAND2_ALPHA 0x859A
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
+#define GL_TEXTURE_COMPRESSED 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
+#define GL_DOT3_RGB 0x86AE
+#define GL_DOT3_RGBA 0x86AF
+#define GL_MULTISAMPLE_BIT 0x20000000
+
+typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, void *img);
+typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]);
+typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
+
+#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture)
+#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture)
+#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D)
+#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D)
+#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D)
+#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D)
+#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D)
+#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D)
+#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage)
+#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd)
+#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf)
+#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd)
+#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf)
+#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d)
+#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv)
+#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f)
+#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv)
+#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i)
+#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv)
+#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s)
+#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv)
+#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d)
+#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv)
+#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f)
+#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv)
+#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i)
+#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv)
+#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s)
+#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv)
+#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d)
+#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv)
+#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f)
+#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv)
+#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i)
+#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv)
+#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s)
+#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv)
+#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d)
+#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv)
+#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f)
+#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv)
+#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i)
+#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv)
+#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s)
+#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv)
+#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage)
+
+#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3)
+
+#endif /* GL_VERSION_1_3 */
+
+/* ----------------------------- GL_VERSION_1_4 ---------------------------- */
+
+#ifndef GL_VERSION_1_4
+#define GL_VERSION_1_4 1
+
+#define GL_BLEND_DST_RGB 0x80C8
+#define GL_BLEND_SRC_RGB 0x80C9
+#define GL_BLEND_DST_ALPHA 0x80CA
+#define GL_BLEND_SRC_ALPHA 0x80CB
+#define GL_POINT_SIZE_MIN 0x8126
+#define GL_POINT_SIZE_MAX 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
+#define GL_POINT_DISTANCE_ATTENUATION 0x8129
+#define GL_GENERATE_MIPMAP 0x8191
+#define GL_GENERATE_MIPMAP_HINT 0x8192
+#define GL_DEPTH_COMPONENT16 0x81A5
+#define GL_DEPTH_COMPONENT24 0x81A6
+#define GL_DEPTH_COMPONENT32 0x81A7
+#define GL_MIRRORED_REPEAT 0x8370
+#define GL_FOG_COORDINATE_SOURCE 0x8450
+#define GL_FOG_COORDINATE 0x8451
+#define GL_FRAGMENT_DEPTH 0x8452
+#define GL_CURRENT_FOG_COORDINATE 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
+#define GL_FOG_COORDINATE_ARRAY 0x8457
+#define GL_COLOR_SUM 0x8458
+#define GL_CURRENT_SECONDARY_COLOR 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
+#define GL_SECONDARY_COLOR_ARRAY 0x845E
+#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
+#define GL_TEXTURE_FILTER_CONTROL 0x8500
+#define GL_TEXTURE_LOD_BIAS 0x8501
+#define GL_INCR_WRAP 0x8507
+#define GL_DECR_WRAP 0x8508
+#define GL_TEXTURE_DEPTH_SIZE 0x884A
+#define GL_DEPTH_TEXTURE_MODE 0x884B
+#define GL_TEXTURE_COMPARE_MODE 0x884C
+#define GL_TEXTURE_COMPARE_FUNC 0x884D
+#define GL_COMPARE_R_TO_TEXTURE 0x884E
+
+typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const* indices, GLsizei drawcount);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p);
+
+#define glBlendColor GLEW_GET_FUN(__glewBlendColor)
+#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation)
+#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate)
+#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer)
+#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd)
+#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv)
+#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf)
+#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv)
+#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays)
+#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements)
+#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf)
+#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv)
+#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri)
+#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv)
+#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b)
+#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv)
+#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d)
+#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv)
+#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f)
+#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv)
+#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i)
+#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv)
+#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s)
+#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv)
+#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub)
+#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv)
+#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui)
+#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv)
+#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us)
+#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv)
+#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer)
+#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d)
+#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv)
+#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f)
+#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv)
+#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i)
+#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv)
+#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s)
+#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv)
+#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d)
+#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv)
+#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f)
+#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv)
+#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i)
+#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv)
+#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s)
+#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv)
+
+#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4)
+
+#endif /* GL_VERSION_1_4 */
+
+/* ----------------------------- GL_VERSION_1_5 ---------------------------- */
+
+#ifndef GL_VERSION_1_5
+#define GL_VERSION_1_5 1
+
+#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
+#define GL_FOG_COORD GL_FOG_COORDINATE
+#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
+#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
+#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
+#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
+#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
+#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
+#define GL_SRC0_RGB GL_SOURCE0_RGB
+#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
+#define GL_SRC1_RGB GL_SOURCE1_RGB
+#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA
+#define GL_SRC2_RGB GL_SOURCE2_RGB
+#define GL_BUFFER_SIZE 0x8764
+#define GL_BUFFER_USAGE 0x8765
+#define GL_QUERY_COUNTER_BITS 0x8864
+#define GL_CURRENT_QUERY 0x8865
+#define GL_QUERY_RESULT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE 0x8867
+#define GL_ARRAY_BUFFER 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER 0x8893
+#define GL_ARRAY_BUFFER_BINDING 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
+#define GL_READ_ONLY 0x88B8
+#define GL_WRITE_ONLY 0x88B9
+#define GL_READ_WRITE 0x88BA
+#define GL_BUFFER_ACCESS 0x88BB
+#define GL_BUFFER_MAPPED 0x88BC
+#define GL_BUFFER_MAP_POINTER 0x88BD
+#define GL_STREAM_DRAW 0x88E0
+#define GL_STREAM_READ 0x88E1
+#define GL_STREAM_COPY 0x88E2
+#define GL_STATIC_DRAW 0x88E4
+#define GL_STATIC_READ 0x88E5
+#define GL_STATIC_COPY 0x88E6
+#define GL_DYNAMIC_DRAW 0x88E8
+#define GL_DYNAMIC_READ 0x88E9
+#define GL_DYNAMIC_COPY 0x88EA
+#define GL_SAMPLES_PASSED 0x8914
+
+typedef ptrdiff_t GLintptr;
+typedef ptrdiff_t GLsizeiptr;
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void* data, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void* data);
+typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void** params);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void* data);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer);
+typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id);
+typedef void* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target);
+
+#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery)
+#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer)
+#define glBufferData GLEW_GET_FUN(__glewBufferData)
+#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData)
+#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers)
+#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries)
+#define glEndQuery GLEW_GET_FUN(__glewEndQuery)
+#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers)
+#define glGenQueries GLEW_GET_FUN(__glewGenQueries)
+#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv)
+#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv)
+#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData)
+#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv)
+#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv)
+#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv)
+#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer)
+#define glIsQuery GLEW_GET_FUN(__glewIsQuery)
+#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer)
+#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer)
+
+#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5)
+
+#endif /* GL_VERSION_1_5 */
+
+/* ----------------------------- GL_VERSION_2_0 ---------------------------- */
+
+#ifndef GL_VERSION_2_0
+#define GL_VERSION_2_0 1
+
+#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB 0x8626
+#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
+#define GL_STENCIL_BACK_FUNC 0x8800
+#define GL_STENCIL_BACK_FAIL 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
+#define GL_MAX_DRAW_BUFFERS 0x8824
+#define GL_DRAW_BUFFER0 0x8825
+#define GL_DRAW_BUFFER1 0x8826
+#define GL_DRAW_BUFFER2 0x8827
+#define GL_DRAW_BUFFER3 0x8828
+#define GL_DRAW_BUFFER4 0x8829
+#define GL_DRAW_BUFFER5 0x882A
+#define GL_DRAW_BUFFER6 0x882B
+#define GL_DRAW_BUFFER7 0x882C
+#define GL_DRAW_BUFFER8 0x882D
+#define GL_DRAW_BUFFER9 0x882E
+#define GL_DRAW_BUFFER10 0x882F
+#define GL_DRAW_BUFFER11 0x8830
+#define GL_DRAW_BUFFER12 0x8831
+#define GL_DRAW_BUFFER13 0x8832
+#define GL_DRAW_BUFFER14 0x8833
+#define GL_DRAW_BUFFER15 0x8834
+#define GL_BLEND_EQUATION_ALPHA 0x883D
+#define GL_POINT_SPRITE 0x8861
+#define GL_COORD_REPLACE 0x8862
+#define GL_MAX_VERTEX_ATTRIBS 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
+#define GL_MAX_TEXTURE_COORDS 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
+#define GL_FRAGMENT_SHADER 0x8B30
+#define GL_VERTEX_SHADER 0x8B31
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
+#define GL_MAX_VARYING_FLOATS 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
+#define GL_SHADER_TYPE 0x8B4F
+#define GL_FLOAT_VEC2 0x8B50
+#define GL_FLOAT_VEC3 0x8B51
+#define GL_FLOAT_VEC4 0x8B52
+#define GL_INT_VEC2 0x8B53
+#define GL_INT_VEC3 0x8B54
+#define GL_INT_VEC4 0x8B55
+#define GL_BOOL 0x8B56
+#define GL_BOOL_VEC2 0x8B57
+#define GL_BOOL_VEC3 0x8B58
+#define GL_BOOL_VEC4 0x8B59
+#define GL_FLOAT_MAT2 0x8B5A
+#define GL_FLOAT_MAT3 0x8B5B
+#define GL_FLOAT_MAT4 0x8B5C
+#define GL_SAMPLER_1D 0x8B5D
+#define GL_SAMPLER_2D 0x8B5E
+#define GL_SAMPLER_3D 0x8B5F
+#define GL_SAMPLER_CUBE 0x8B60
+#define GL_SAMPLER_1D_SHADOW 0x8B61
+#define GL_SAMPLER_2D_SHADOW 0x8B62
+#define GL_DELETE_STATUS 0x8B80
+#define GL_COMPILE_STATUS 0x8B81
+#define GL_LINK_STATUS 0x8B82
+#define GL_VALIDATE_STATUS 0x8B83
+#define GL_INFO_LOG_LENGTH 0x8B84
+#define GL_ATTACHED_SHADERS 0x8B85
+#define GL_ACTIVE_UNIFORMS 0x8B86
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
+#define GL_SHADER_SOURCE_LENGTH 0x8B88
+#define GL_ACTIVE_ATTRIBUTES 0x8B89
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
+#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
+#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
+
+typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader);
+typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void);
+typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type);
+typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader);
+typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders);
+typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog);
+typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLuint obj, GLsizei maxLength, GLsizei* length, GLchar* source);
+typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param);
+typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void** pointer);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program);
+typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader);
+typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const* string, const GLint* length);
+typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer);
+
+#define glAttachShader GLEW_GET_FUN(__glewAttachShader)
+#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation)
+#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate)
+#define glCompileShader GLEW_GET_FUN(__glewCompileShader)
+#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram)
+#define glCreateShader GLEW_GET_FUN(__glewCreateShader)
+#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram)
+#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader)
+#define glDetachShader GLEW_GET_FUN(__glewDetachShader)
+#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray)
+#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers)
+#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray)
+#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib)
+#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform)
+#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders)
+#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation)
+#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog)
+#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv)
+#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog)
+#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource)
+#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv)
+#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation)
+#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv)
+#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv)
+#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv)
+#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv)
+#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv)
+#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv)
+#define glIsProgram GLEW_GET_FUN(__glewIsProgram)
+#define glIsShader GLEW_GET_FUN(__glewIsShader)
+#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram)
+#define glShaderSource GLEW_GET_FUN(__glewShaderSource)
+#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate)
+#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate)
+#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate)
+#define glUniform1f GLEW_GET_FUN(__glewUniform1f)
+#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv)
+#define glUniform1i GLEW_GET_FUN(__glewUniform1i)
+#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv)
+#define glUniform2f GLEW_GET_FUN(__glewUniform2f)
+#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv)
+#define glUniform2i GLEW_GET_FUN(__glewUniform2i)
+#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv)
+#define glUniform3f GLEW_GET_FUN(__glewUniform3f)
+#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv)
+#define glUniform3i GLEW_GET_FUN(__glewUniform3i)
+#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv)
+#define glUniform4f GLEW_GET_FUN(__glewUniform4f)
+#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv)
+#define glUniform4i GLEW_GET_FUN(__glewUniform4i)
+#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv)
+#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv)
+#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv)
+#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv)
+#define glUseProgram GLEW_GET_FUN(__glewUseProgram)
+#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram)
+#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d)
+#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv)
+#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f)
+#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv)
+#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s)
+#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv)
+#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d)
+#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv)
+#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f)
+#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv)
+#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s)
+#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv)
+#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d)
+#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv)
+#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f)
+#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv)
+#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s)
+#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv)
+#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv)
+#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv)
+#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv)
+#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub)
+#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv)
+#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv)
+#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv)
+#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv)
+#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d)
+#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv)
+#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f)
+#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv)
+#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv)
+#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s)
+#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv)
+#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv)
+#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv)
+#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv)
+#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer)
+
+#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0)
+
+#endif /* GL_VERSION_2_0 */
+
+/* ----------------------------- GL_VERSION_2_1 ---------------------------- */
+
+#ifndef GL_VERSION_2_1
+#define GL_VERSION_2_1 1
+
+#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
+#define GL_PIXEL_PACK_BUFFER 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
+#define GL_FLOAT_MAT2x3 0x8B65
+#define GL_FLOAT_MAT2x4 0x8B66
+#define GL_FLOAT_MAT3x2 0x8B67
+#define GL_FLOAT_MAT3x4 0x8B68
+#define GL_FLOAT_MAT4x2 0x8B69
+#define GL_FLOAT_MAT4x3 0x8B6A
+#define GL_SRGB 0x8C40
+#define GL_SRGB8 0x8C41
+#define GL_SRGB_ALPHA 0x8C42
+#define GL_SRGB8_ALPHA8 0x8C43
+#define GL_SLUMINANCE_ALPHA 0x8C44
+#define GL_SLUMINANCE8_ALPHA8 0x8C45
+#define GL_SLUMINANCE 0x8C46
+#define GL_SLUMINANCE8 0x8C47
+#define GL_COMPRESSED_SRGB 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
+#define GL_COMPRESSED_SLUMINANCE 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
+
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+
+#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv)
+#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv)
+#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv)
+#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv)
+#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv)
+#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv)
+
+#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1)
+
+#endif /* GL_VERSION_2_1 */
+
+/* ----------------------------- GL_VERSION_3_0 ---------------------------- */
+
+#ifndef GL_VERSION_3_0
+#define GL_VERSION_3_0 1
+
+#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0
+#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1
+#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2
+#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3
+#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4
+#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5
+#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB
+#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES
+#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS
+#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001
+#define GL_MAJOR_VERSION 0x821B
+#define GL_MINOR_VERSION 0x821C
+#define GL_NUM_EXTENSIONS 0x821D
+#define GL_CONTEXT_FLAGS 0x821E
+#define GL_DEPTH_BUFFER 0x8223
+#define GL_STENCIL_BUFFER 0x8224
+#define GL_RGBA32F 0x8814
+#define GL_RGB32F 0x8815
+#define GL_RGBA16F 0x881A
+#define GL_RGB16F 0x881B
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
+#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
+#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
+#define GL_CLAMP_VERTEX_COLOR 0x891A
+#define GL_CLAMP_FRAGMENT_COLOR 0x891B
+#define GL_CLAMP_READ_COLOR 0x891C
+#define GL_FIXED_ONLY 0x891D
+#define GL_TEXTURE_RED_TYPE 0x8C10
+#define GL_TEXTURE_GREEN_TYPE 0x8C11
+#define GL_TEXTURE_BLUE_TYPE 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE 0x8C13
+#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE 0x8C15
+#define GL_TEXTURE_DEPTH_TYPE 0x8C16
+#define GL_TEXTURE_1D_ARRAY 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19
+#define GL_TEXTURE_2D_ARRAY 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
+#define GL_R11F_G11F_B10F 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
+#define GL_RGB9_E5 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE 0x8C3F
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
+#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
+#define GL_PRIMITIVES_GENERATED 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
+#define GL_RASTERIZER_DISCARD 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS 0x8C8C
+#define GL_SEPARATE_ATTRIBS 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
+#define GL_RGBA32UI 0x8D70
+#define GL_RGB32UI 0x8D71
+#define GL_RGBA16UI 0x8D76
+#define GL_RGB16UI 0x8D77
+#define GL_RGBA8UI 0x8D7C
+#define GL_RGB8UI 0x8D7D
+#define GL_RGBA32I 0x8D82
+#define GL_RGB32I 0x8D83
+#define GL_RGBA16I 0x8D88
+#define GL_RGB16I 0x8D89
+#define GL_RGBA8I 0x8D8E
+#define GL_RGB8I 0x8D8F
+#define GL_RED_INTEGER 0x8D94
+#define GL_GREEN_INTEGER 0x8D95
+#define GL_BLUE_INTEGER 0x8D96
+#define GL_ALPHA_INTEGER 0x8D97
+#define GL_RGB_INTEGER 0x8D98
+#define GL_RGBA_INTEGER 0x8D99
+#define GL_BGR_INTEGER 0x8D9A
+#define GL_BGRA_INTEGER 0x8D9B
+#define GL_SAMPLER_1D_ARRAY 0x8DC0
+#define GL_SAMPLER_2D_ARRAY 0x8DC1
+#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
+#define GL_UNSIGNED_INT_VEC2 0x8DC6
+#define GL_UNSIGNED_INT_VEC3 0x8DC7
+#define GL_UNSIGNED_INT_VEC4 0x8DC8
+#define GL_INT_SAMPLER_1D 0x8DC9
+#define GL_INT_SAMPLER_2D 0x8DCA
+#define GL_INT_SAMPLER_3D 0x8DCB
+#define GL_INT_SAMPLER_CUBE 0x8DCC
+#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
+#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
+#define GL_QUERY_WAIT 0x8E13
+#define GL_QUERY_NO_WAIT 0x8E14
+#define GL_QUERY_BY_REGION_WAIT 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16
+
+typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint colorNumber, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawBuffer, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawBuffer, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawBuffer, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint buf, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum cap, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum cap, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void);
+typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum pname, GLuint index, GLboolean* data);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar* name);
+typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum cap, GLuint index);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint v0, GLint v1);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort* v0);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void*pointer);
+
+#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender)
+#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback)
+#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation)
+#define glClampColor GLEW_GET_FUN(__glewClampColor)
+#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi)
+#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv)
+#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv)
+#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv)
+#define glColorMaski GLEW_GET_FUN(__glewColorMaski)
+#define glDisablei GLEW_GET_FUN(__glewDisablei)
+#define glEnablei GLEW_GET_FUN(__glewEnablei)
+#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender)
+#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback)
+#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v)
+#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation)
+#define glGetStringi GLEW_GET_FUN(__glewGetStringi)
+#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv)
+#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv)
+#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying)
+#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv)
+#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv)
+#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv)
+#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi)
+#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv)
+#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv)
+#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings)
+#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui)
+#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv)
+#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui)
+#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv)
+#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui)
+#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv)
+#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui)
+#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv)
+#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i)
+#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv)
+#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui)
+#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv)
+#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i)
+#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv)
+#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui)
+#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv)
+#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i)
+#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv)
+#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui)
+#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv)
+#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv)
+#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i)
+#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv)
+#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv)
+#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv)
+#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui)
+#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv)
+#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv)
+#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer)
+
+#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0)
+
+#endif /* GL_VERSION_3_0 */
+
+/* ----------------------------- GL_VERSION_3_1 ---------------------------- */
+
+#ifndef GL_VERSION_3_1
+#define GL_VERSION_3_1 1
+
+#define GL_TEXTURE_RECTANGLE 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8
+#define GL_SAMPLER_2D_RECT 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64
+#define GL_TEXTURE_BUFFER 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E
+#define GL_SAMPLER_BUFFER 0x8DC2
+#define GL_INT_SAMPLER_2D_RECT 0x8DCD
+#define GL_INT_SAMPLER_BUFFER 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
+#define GL_RED_SNORM 0x8F90
+#define GL_RG_SNORM 0x8F91
+#define GL_RGB_SNORM 0x8F92
+#define GL_RGBA_SNORM 0x8F93
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGB8_SNORM 0x8F96
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM 0x8F98
+#define GL_RG16_SNORM 0x8F99
+#define GL_RGB16_SNORM 0x8F9A
+#define GL_RGBA16_SNORM 0x8F9B
+#define GL_SIGNED_NORMALIZED 0x8F9C
+#define GL_PRIMITIVE_RESTART 0x8F9D
+#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
+#define GL_BUFFER_ACCESS_FLAGS 0x911F
+#define GL_BUFFER_MAP_LENGTH 0x9120
+#define GL_BUFFER_MAP_OFFSET 0x9121
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalFormat, GLuint buffer);
+
+#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced)
+#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced)
+#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex)
+#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer)
+
+#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1)
+
+#endif /* GL_VERSION_3_1 */
+
+/* ----------------------------- GL_VERSION_3_2 ---------------------------- */
+
+#ifndef GL_VERSION_3_2
+#define GL_VERSION_3_2 1
+
+#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
+#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define GL_LINES_ADJACENCY 0x000A
+#define GL_LINE_STRIP_ADJACENCY 0x000B
+#define GL_TRIANGLES_ADJACENCY 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
+#define GL_PROGRAM_POINT_SIZE 0x8642
+#define GL_GEOMETRY_VERTICES_OUT 0x8916
+#define GL_GEOMETRY_INPUT_TYPE 0x8917
+#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
+#define GL_GEOMETRY_SHADER 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
+#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
+#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
+#define GL_CONTEXT_PROFILE_MASK 0x9126
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum value, GLint64 * data);
+typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum pname, GLuint index, GLint64 * data);
+
+#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture)
+#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v)
+#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v)
+
+#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2)
+
+#endif /* GL_VERSION_3_2 */
+
+/* ----------------------------- GL_VERSION_3_3 ---------------------------- */
+
+#ifndef GL_VERSION_3_3
+#define GL_VERSION_3_3 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
+#define GL_RGB10_A2UI 0x906F
+
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
+
+#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor)
+
+#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3)
+
+#endif /* GL_VERSION_3_3 */
+
+/* ----------------------------- GL_VERSION_4_0 ---------------------------- */
+
+#ifndef GL_VERSION_4_0
+#define GL_VERSION_4_0 1
+
+#define GL_SAMPLE_SHADING 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F
+#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
+
+#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei)
+#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi)
+#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei)
+#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci)
+#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading)
+
+#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0)
+
+#endif /* GL_VERSION_4_0 */
+
+/* ----------------------------- GL_VERSION_4_1 ---------------------------- */
+
+#ifndef GL_VERSION_4_1
+#define GL_VERSION_4_1 1
+
+#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1)
+
+#endif /* GL_VERSION_4_1 */
+
+/* ----------------------------- GL_VERSION_4_2 ---------------------------- */
+
+#ifndef GL_VERSION_4_2
+#define GL_VERSION_4_2 1
+
+#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
+#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
+#define GL_COPY_READ_BUFFER_BINDING 0x8F36
+#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
+
+#define GLEW_VERSION_4_2 GLEW_GET_VAR(__GLEW_VERSION_4_2)
+
+#endif /* GL_VERSION_4_2 */
+
+/* ----------------------------- GL_VERSION_4_3 ---------------------------- */
+
+#ifndef GL_VERSION_4_3
+#define GL_VERSION_4_3 1
+
+#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
+#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E
+
+#define GLEW_VERSION_4_3 GLEW_GET_VAR(__GLEW_VERSION_4_3)
+
+#endif /* GL_VERSION_4_3 */
+
+/* ----------------------------- GL_VERSION_4_4 ---------------------------- */
+
+#ifndef GL_VERSION_4_4
+#define GL_VERSION_4_4 1
+
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
+#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
+
+#define GLEW_VERSION_4_4 GLEW_GET_VAR(__GLEW_VERSION_4_4)
+
+#endif /* GL_VERSION_4_4 */
+
+/* ----------------------------- GL_VERSION_4_5 ---------------------------- */
+
+#ifndef GL_VERSION_4_5
+#define GL_VERSION_4_5 1
+
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
+
+typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *pixels);
+typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEPROC) (GLenum tex, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *pixels);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+
+#define glGetGraphicsResetStatus GLEW_GET_FUN(__glewGetGraphicsResetStatus)
+#define glGetnCompressedTexImage GLEW_GET_FUN(__glewGetnCompressedTexImage)
+#define glGetnTexImage GLEW_GET_FUN(__glewGetnTexImage)
+#define glGetnUniformdv GLEW_GET_FUN(__glewGetnUniformdv)
+
+#define GLEW_VERSION_4_5 GLEW_GET_VAR(__GLEW_VERSION_4_5)
+
+#endif /* GL_VERSION_4_5 */
+
+/* ----------------------------- GL_VERSION_4_6 ---------------------------- */
+
+#ifndef GL_VERSION_4_6
+#define GL_VERSION_4_6 1
+
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008
+#define GL_PARAMETER_BUFFER 0x80EE
+#define GL_PARAMETER_BUFFER_BINDING 0x80EF
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED
+#define GL_VERTICES_SUBMITTED 0x82EE
+#define GL_PRIMITIVES_SUBMITTED 0x82EF
+#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0
+#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3
+#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4
+#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5
+#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6
+#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7
+#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
+#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
+#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551
+#define GL_SPIR_V_BINARY 0x9552
+#define GL_SPIR_V_EXTENSIONS 0x9553
+#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const GLvoid *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const GLvoid *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
+
+#define glMultiDrawArraysIndirectCount GLEW_GET_FUN(__glewMultiDrawArraysIndirectCount)
+#define glMultiDrawElementsIndirectCount GLEW_GET_FUN(__glewMultiDrawElementsIndirectCount)
+#define glSpecializeShader GLEW_GET_FUN(__glewSpecializeShader)
+
+#define GLEW_VERSION_4_6 GLEW_GET_VAR(__GLEW_VERSION_4_6)
+
+#endif /* GL_VERSION_4_6 */
+
+/* -------------------------- GL_3DFX_multisample -------------------------- */
+
+#ifndef GL_3DFX_multisample
+#define GL_3DFX_multisample 1
+
+#define GL_MULTISAMPLE_3DFX 0x86B2
+#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
+#define GL_SAMPLES_3DFX 0x86B4
+#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
+
+#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample)
+
+#endif /* GL_3DFX_multisample */
+
+/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */
+
+#ifndef GL_3DFX_tbuffer
+#define GL_3DFX_tbuffer 1
+
+typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
+
+#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX)
+
+#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer)
+
+#endif /* GL_3DFX_tbuffer */
+
+/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */
+
+#ifndef GL_3DFX_texture_compression_FXT1
+#define GL_3DFX_texture_compression_FXT1 1
+
+#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
+#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
+
+#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1)
+
+#endif /* GL_3DFX_texture_compression_FXT1 */
+
+/* ----------------------- GL_AMD_blend_minmax_factor ---------------------- */
+
+#ifndef GL_AMD_blend_minmax_factor
+#define GL_AMD_blend_minmax_factor 1
+
+#define GL_FACTOR_MIN_AMD 0x901C
+#define GL_FACTOR_MAX_AMD 0x901D
+
+#define GLEW_AMD_blend_minmax_factor GLEW_GET_VAR(__GLEW_AMD_blend_minmax_factor)
+
+#endif /* GL_AMD_blend_minmax_factor */
+
+/* --------------------- GL_AMD_compressed_3DC_texture --------------------- */
+
+#ifndef GL_AMD_compressed_3DC_texture
+#define GL_AMD_compressed_3DC_texture 1
+
+#define GL_3DC_X_AMD 0x87F9
+#define GL_3DC_XY_AMD 0x87FA
+
+#define GLEW_AMD_compressed_3DC_texture GLEW_GET_VAR(__GLEW_AMD_compressed_3DC_texture)
+
+#endif /* GL_AMD_compressed_3DC_texture */
+
+/* --------------------- GL_AMD_compressed_ATC_texture --------------------- */
+
+#ifndef GL_AMD_compressed_ATC_texture
+#define GL_AMD_compressed_ATC_texture 1
+
+#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
+#define GL_ATC_RGB_AMD 0x8C92
+#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
+
+#define GLEW_AMD_compressed_ATC_texture GLEW_GET_VAR(__GLEW_AMD_compressed_ATC_texture)
+
+#endif /* GL_AMD_compressed_ATC_texture */
+
+/* ----------------------- GL_AMD_conservative_depth ----------------------- */
+
+#ifndef GL_AMD_conservative_depth
+#define GL_AMD_conservative_depth 1
+
+#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth)
+
+#endif /* GL_AMD_conservative_depth */
+
+/* -------------------------- GL_AMD_debug_output -------------------------- */
+
+#ifndef GL_AMD_debug_output
+#define GL_AMD_debug_output 1
+
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
+#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147
+#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148
+#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149
+#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
+#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
+#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
+#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
+#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
+#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
+#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150
+
+typedef void (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam);
+
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar* buf);
+typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, GLchar* message);
+
+#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD)
+#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD)
+#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD)
+#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD)
+
+#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output)
+
+#endif /* GL_AMD_debug_output */
+
+/* ---------------------- GL_AMD_depth_clamp_separate ---------------------- */
+
+#ifndef GL_AMD_depth_clamp_separate
+#define GL_AMD_depth_clamp_separate 1
+
+#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E
+#define GL_DEPTH_CLAMP_FAR_AMD 0x901F
+
+#define GLEW_AMD_depth_clamp_separate GLEW_GET_VAR(__GLEW_AMD_depth_clamp_separate)
+
+#endif /* GL_AMD_depth_clamp_separate */
+
+/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */
+
+#ifndef GL_AMD_draw_buffers_blend
+#define GL_AMD_draw_buffers_blend 1
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+
+#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD)
+#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD)
+#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD)
+#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD)
+
+#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend)
+
+#endif /* GL_AMD_draw_buffers_blend */
+
+/* ---------------- GL_AMD_framebuffer_multisample_advanced ---------------- */
+
+#ifndef GL_AMD_framebuffer_multisample_advanced
+#define GL_AMD_framebuffer_multisample_advanced 1
+
+#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2
+#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3
+#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4
+#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5
+#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6
+#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7
+
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glNamedRenderbufferStorageMultisampleAdvancedAMD GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleAdvancedAMD)
+#define glRenderbufferStorageMultisampleAdvancedAMD GLEW_GET_FUN(__glewRenderbufferStorageMultisampleAdvancedAMD)
+
+#define GLEW_AMD_framebuffer_multisample_advanced GLEW_GET_VAR(__GLEW_AMD_framebuffer_multisample_advanced)
+
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+
+/* ------------------ GL_AMD_framebuffer_sample_positions ------------------ */
+
+#ifndef GL_AMD_framebuffer_sample_positions
+#define GL_AMD_framebuffer_sample_positions 1
+
+#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE
+#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF
+#define GL_ALL_PIXELS_AMD 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC) (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC) (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat* values);
+
+#define glFramebufferSamplePositionsfvAMD GLEW_GET_FUN(__glewFramebufferSamplePositionsfvAMD)
+#define glGetFramebufferParameterfvAMD GLEW_GET_FUN(__glewGetFramebufferParameterfvAMD)
+#define glGetNamedFramebufferParameterfvAMD GLEW_GET_FUN(__glewGetNamedFramebufferParameterfvAMD)
+#define glNamedFramebufferSamplePositionsfvAMD GLEW_GET_FUN(__glewNamedFramebufferSamplePositionsfvAMD)
+
+#define GLEW_AMD_framebuffer_sample_positions GLEW_GET_VAR(__GLEW_AMD_framebuffer_sample_positions)
+
+#endif /* GL_AMD_framebuffer_sample_positions */
+
+/* --------------------------- GL_AMD_gcn_shader --------------------------- */
+
+#ifndef GL_AMD_gcn_shader
+#define GL_AMD_gcn_shader 1
+
+#define GLEW_AMD_gcn_shader GLEW_GET_VAR(__GLEW_AMD_gcn_shader)
+
+#endif /* GL_AMD_gcn_shader */
+
+/* ---------------------- GL_AMD_gpu_shader_half_float --------------------- */
+
+#ifndef GL_AMD_gpu_shader_half_float
+#define GL_AMD_gpu_shader_half_float 1
+
+#define GL_FLOAT16_NV 0x8FF8
+#define GL_FLOAT16_VEC2_NV 0x8FF9
+#define GL_FLOAT16_VEC3_NV 0x8FFA
+#define GL_FLOAT16_VEC4_NV 0x8FFB
+#define GL_FLOAT16_MAT2_AMD 0x91C5
+#define GL_FLOAT16_MAT3_AMD 0x91C6
+#define GL_FLOAT16_MAT4_AMD 0x91C7
+#define GL_FLOAT16_MAT2x3_AMD 0x91C8
+#define GL_FLOAT16_MAT2x4_AMD 0x91C9
+#define GL_FLOAT16_MAT3x2_AMD 0x91CA
+#define GL_FLOAT16_MAT3x4_AMD 0x91CB
+#define GL_FLOAT16_MAT4x2_AMD 0x91CC
+#define GL_FLOAT16_MAT4x3_AMD 0x91CD
+
+#define GLEW_AMD_gpu_shader_half_float GLEW_GET_VAR(__GLEW_AMD_gpu_shader_half_float)
+
+#endif /* GL_AMD_gpu_shader_half_float */
+
+/* ------------------- GL_AMD_gpu_shader_half_float_fetch ------------------ */
+
+#ifndef GL_AMD_gpu_shader_half_float_fetch
+#define GL_AMD_gpu_shader_half_float_fetch 1
+
+#define GL_FLOAT16_SAMPLER_1D_AMD 0x91CE
+#define GL_FLOAT16_SAMPLER_2D_AMD 0x91CF
+#define GL_FLOAT16_SAMPLER_3D_AMD 0x91D0
+#define GL_FLOAT16_SAMPLER_CUBE_AMD 0x91D1
+#define GL_FLOAT16_SAMPLER_2D_RECT_AMD 0x91D2
+#define GL_FLOAT16_SAMPLER_1D_ARRAY_AMD 0x91D3
+#define GL_FLOAT16_SAMPLER_2D_ARRAY_AMD 0x91D4
+#define GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD 0x91D5
+#define GL_FLOAT16_SAMPLER_BUFFER_AMD 0x91D6
+#define GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD 0x91D7
+#define GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD 0x91D8
+#define GL_FLOAT16_SAMPLER_1D_SHADOW_AMD 0x91D9
+#define GL_FLOAT16_SAMPLER_2D_SHADOW_AMD 0x91DA
+#define GL_FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD 0x91DB
+#define GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD 0x91DC
+#define GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD 0x91DD
+#define GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD 0x91DE
+#define GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD 0x91DF
+#define GL_FLOAT16_IMAGE_1D_AMD 0x91E0
+#define GL_FLOAT16_IMAGE_2D_AMD 0x91E1
+#define GL_FLOAT16_IMAGE_3D_AMD 0x91E2
+#define GL_FLOAT16_IMAGE_2D_RECT_AMD 0x91E3
+#define GL_FLOAT16_IMAGE_CUBE_AMD 0x91E4
+#define GL_FLOAT16_IMAGE_1D_ARRAY_AMD 0x91E5
+#define GL_FLOAT16_IMAGE_2D_ARRAY_AMD 0x91E6
+#define GL_FLOAT16_IMAGE_CUBE_MAP_ARRAY_AMD 0x91E7
+#define GL_FLOAT16_IMAGE_BUFFER_AMD 0x91E8
+#define GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD 0x91E9
+#define GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD 0x91EA
+
+#define GLEW_AMD_gpu_shader_half_float_fetch GLEW_GET_VAR(__GLEW_AMD_gpu_shader_half_float_fetch)
+
+#endif /* GL_AMD_gpu_shader_half_float_fetch */
+
+/* ------------------------ GL_AMD_gpu_shader_int16 ------------------------ */
+
+#ifndef GL_AMD_gpu_shader_int16
+#define GL_AMD_gpu_shader_int16 1
+
+#define GLEW_AMD_gpu_shader_int16 GLEW_GET_VAR(__GLEW_AMD_gpu_shader_int16)
+
+#endif /* GL_AMD_gpu_shader_int16 */
+
+/* ------------------------ GL_AMD_gpu_shader_int64 ------------------------ */
+
+#ifndef GL_AMD_gpu_shader_int64
+#define GL_AMD_gpu_shader_int64 1
+
+#define GLEW_AMD_gpu_shader_int64 GLEW_GET_VAR(__GLEW_AMD_gpu_shader_int64)
+
+#endif /* GL_AMD_gpu_shader_int64 */
+
+/* ---------------------- GL_AMD_interleaved_elements ---------------------- */
+
+#ifndef GL_AMD_interleaved_elements
+#define GL_AMD_interleaved_elements 1
+
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RG8UI 0x8238
+#define GL_RG16UI 0x823A
+#define GL_RGBA8UI 0x8D7C
+#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4
+#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5
+
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param);
+
+#define glVertexAttribParameteriAMD GLEW_GET_FUN(__glewVertexAttribParameteriAMD)
+
+#define GLEW_AMD_interleaved_elements GLEW_GET_VAR(__GLEW_AMD_interleaved_elements)
+
+#endif /* GL_AMD_interleaved_elements */
+
+/* ----------------------- GL_AMD_multi_draw_indirect ---------------------- */
+
+#ifndef GL_AMD_multi_draw_indirect
+#define GL_AMD_multi_draw_indirect 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
+
+#define glMultiDrawArraysIndirectAMD GLEW_GET_FUN(__glewMultiDrawArraysIndirectAMD)
+#define glMultiDrawElementsIndirectAMD GLEW_GET_FUN(__glewMultiDrawElementsIndirectAMD)
+
+#define GLEW_AMD_multi_draw_indirect GLEW_GET_VAR(__GLEW_AMD_multi_draw_indirect)
+
+#endif /* GL_AMD_multi_draw_indirect */
+
+/* ------------------------- GL_AMD_name_gen_delete ------------------------ */
+
+#ifndef GL_AMD_name_gen_delete
+#define GL_AMD_name_gen_delete 1
+
+#define GL_DATA_BUFFER_AMD 0x9151
+#define GL_PERFORMANCE_MONITOR_AMD 0x9152
+#define GL_QUERY_OBJECT_AMD 0x9153
+#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154
+#define GL_SAMPLER_OBJECT_AMD 0x9155
+
+typedef void (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names);
+typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names);
+typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);
+
+#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD)
+#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD)
+#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD)
+
+#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete)
+
+#endif /* GL_AMD_name_gen_delete */
+
+/* ---------------------- GL_AMD_occlusion_query_event --------------------- */
+
+#ifndef GL_AMD_occlusion_query_event
+#define GL_AMD_occlusion_query_event 1
+
+#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
+#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
+#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
+#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
+#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
+#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
+
+#define glQueryObjectParameteruiAMD GLEW_GET_FUN(__glewQueryObjectParameteruiAMD)
+
+#define GLEW_AMD_occlusion_query_event GLEW_GET_VAR(__GLEW_AMD_occlusion_query_event)
+
+#endif /* GL_AMD_occlusion_query_event */
+
+/* ----------------------- GL_AMD_performance_monitor ---------------------- */
+
+#ifndef GL_AMD_performance_monitor
+#define GL_AMD_performance_monitor 1
+
+#define GL_COUNTER_TYPE_AMD 0x8BC0
+#define GL_COUNTER_RANGE_AMD 0x8BC1
+#define GL_UNSIGNED_INT64_AMD 0x8BC2
+#define GL_PERCENTAGE_AMD 0x8BC3
+#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
+#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
+#define GL_PERFMON_RESULT_AMD 0x8BC6
+
+typedef void (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
+typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors);
+typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
+typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar *counterString);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, GLchar *groupString);
+typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups);
+typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList);
+
+#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD)
+#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD)
+#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD)
+#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD)
+#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD)
+#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD)
+#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD)
+#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD)
+#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD)
+#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD)
+#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD)
+
+#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor)
+
+#endif /* GL_AMD_performance_monitor */
+
+/* -------------------------- GL_AMD_pinned_memory ------------------------- */
+
+#ifndef GL_AMD_pinned_memory
+#define GL_AMD_pinned_memory 1
+
+#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
+
+#define GLEW_AMD_pinned_memory GLEW_GET_VAR(__GLEW_AMD_pinned_memory)
+
+#endif /* GL_AMD_pinned_memory */
+
+/* ----------------------- GL_AMD_program_binary_Z400 ---------------------- */
+
+#ifndef GL_AMD_program_binary_Z400
+#define GL_AMD_program_binary_Z400 1
+
+#define GL_Z400_BINARY_AMD 0x8740
+
+#define GLEW_AMD_program_binary_Z400 GLEW_GET_VAR(__GLEW_AMD_program_binary_Z400)
+
+#endif /* GL_AMD_program_binary_Z400 */
+
+/* ----------------------- GL_AMD_query_buffer_object ---------------------- */
+
+#ifndef GL_AMD_query_buffer_object
+#define GL_AMD_query_buffer_object 1
+
+#define GL_QUERY_BUFFER_AMD 0x9192
+#define GL_QUERY_BUFFER_BINDING_AMD 0x9193
+#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194
+
+#define GLEW_AMD_query_buffer_object GLEW_GET_VAR(__GLEW_AMD_query_buffer_object)
+
+#endif /* GL_AMD_query_buffer_object */
+
+/* ------------------------ GL_AMD_sample_positions ------------------------ */
+
+#ifndef GL_AMD_sample_positions
+#define GL_AMD_sample_positions 1
+
+#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+
+typedef void (GLAPIENTRY * PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat* val);
+
+#define glSetMultisamplefvAMD GLEW_GET_FUN(__glewSetMultisamplefvAMD)
+
+#define GLEW_AMD_sample_positions GLEW_GET_VAR(__GLEW_AMD_sample_positions)
+
+#endif /* GL_AMD_sample_positions */
+
+/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+#define GL_AMD_seamless_cubemap_per_texture 1
+
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+
+#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture)
+
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+
+/* -------------------- GL_AMD_shader_atomic_counter_ops ------------------- */
+
+#ifndef GL_AMD_shader_atomic_counter_ops
+#define GL_AMD_shader_atomic_counter_ops 1
+
+#define GLEW_AMD_shader_atomic_counter_ops GLEW_GET_VAR(__GLEW_AMD_shader_atomic_counter_ops)
+
+#endif /* GL_AMD_shader_atomic_counter_ops */
+
+/* -------------------------- GL_AMD_shader_ballot ------------------------- */
+
+#ifndef GL_AMD_shader_ballot
+#define GL_AMD_shader_ballot 1
+
+#define GLEW_AMD_shader_ballot GLEW_GET_VAR(__GLEW_AMD_shader_ballot)
+
+#endif /* GL_AMD_shader_ballot */
+
+/* ---------------- GL_AMD_shader_explicit_vertex_parameter ---------------- */
+
+#ifndef GL_AMD_shader_explicit_vertex_parameter
+#define GL_AMD_shader_explicit_vertex_parameter 1
+
+#define GLEW_AMD_shader_explicit_vertex_parameter GLEW_GET_VAR(__GLEW_AMD_shader_explicit_vertex_parameter)
+
+#endif /* GL_AMD_shader_explicit_vertex_parameter */
+
+/* ------------------- GL_AMD_shader_image_load_store_lod ------------------ */
+
+#ifndef GL_AMD_shader_image_load_store_lod
+#define GL_AMD_shader_image_load_store_lod 1
+
+#define GLEW_AMD_shader_image_load_store_lod GLEW_GET_VAR(__GLEW_AMD_shader_image_load_store_lod)
+
+#endif /* GL_AMD_shader_image_load_store_lod */
+
+/* ---------------------- GL_AMD_shader_stencil_export --------------------- */
+
+#ifndef GL_AMD_shader_stencil_export
+#define GL_AMD_shader_stencil_export 1
+
+#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export)
+
+#endif /* GL_AMD_shader_stencil_export */
+
+/* ------------------- GL_AMD_shader_stencil_value_export ------------------ */
+
+#ifndef GL_AMD_shader_stencil_value_export
+#define GL_AMD_shader_stencil_value_export 1
+
+#define GLEW_AMD_shader_stencil_value_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_value_export)
+
+#endif /* GL_AMD_shader_stencil_value_export */
+
+/* ---------------------- GL_AMD_shader_trinary_minmax --------------------- */
+
+#ifndef GL_AMD_shader_trinary_minmax
+#define GL_AMD_shader_trinary_minmax 1
+
+#define GLEW_AMD_shader_trinary_minmax GLEW_GET_VAR(__GLEW_AMD_shader_trinary_minmax)
+
+#endif /* GL_AMD_shader_trinary_minmax */
+
+/* ------------------------- GL_AMD_sparse_texture ------------------------- */
+
+#ifndef GL_AMD_sparse_texture
+#define GL_AMD_sparse_texture 1
+
+#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
+#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197
+#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
+#define GL_MIN_SPARSE_LEVEL_AMD 0x919B
+#define GL_MIN_LOD_WARNING_AMD 0x919C
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
+
+#define glTexStorageSparseAMD GLEW_GET_FUN(__glewTexStorageSparseAMD)
+#define glTextureStorageSparseAMD GLEW_GET_FUN(__glewTextureStorageSparseAMD)
+
+#define GLEW_AMD_sparse_texture GLEW_GET_VAR(__GLEW_AMD_sparse_texture)
+
+#endif /* GL_AMD_sparse_texture */
+
+/* ------------------- GL_AMD_stencil_operation_extended ------------------- */
+
+#ifndef GL_AMD_stencil_operation_extended
+#define GL_AMD_stencil_operation_extended 1
+
+#define GL_SET_AMD 0x874A
+#define GL_REPLACE_VALUE_AMD 0x874B
+#define GL_STENCIL_OP_VALUE_AMD 0x874C
+#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D
+
+typedef void (GLAPIENTRY * PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value);
+
+#define glStencilOpValueAMD GLEW_GET_FUN(__glewStencilOpValueAMD)
+
+#define GLEW_AMD_stencil_operation_extended GLEW_GET_VAR(__GLEW_AMD_stencil_operation_extended)
+
+#endif /* GL_AMD_stencil_operation_extended */
+
+/* --------------------- GL_AMD_texture_gather_bias_lod -------------------- */
+
+#ifndef GL_AMD_texture_gather_bias_lod
+#define GL_AMD_texture_gather_bias_lod 1
+
+#define GLEW_AMD_texture_gather_bias_lod GLEW_GET_VAR(__GLEW_AMD_texture_gather_bias_lod)
+
+#endif /* GL_AMD_texture_gather_bias_lod */
+
+/* ------------------------ GL_AMD_texture_texture4 ------------------------ */
+
+#ifndef GL_AMD_texture_texture4
+#define GL_AMD_texture_texture4 1
+
+#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4)
+
+#endif /* GL_AMD_texture_texture4 */
+
+/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */
+
+#ifndef GL_AMD_transform_feedback3_lines_triangles
+#define GL_AMD_transform_feedback3_lines_triangles 1
+
+#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles)
+
+#endif /* GL_AMD_transform_feedback3_lines_triangles */
+
+/* ----------------------- GL_AMD_transform_feedback4 ---------------------- */
+
+#ifndef GL_AMD_transform_feedback4
+#define GL_AMD_transform_feedback4 1
+
+#define GL_STREAM_RASTERIZATION_AMD 0x91A0
+
+#define GLEW_AMD_transform_feedback4 GLEW_GET_VAR(__GLEW_AMD_transform_feedback4)
+
+#endif /* GL_AMD_transform_feedback4 */
+
+/* ----------------------- GL_AMD_vertex_shader_layer ---------------------- */
+
+#ifndef GL_AMD_vertex_shader_layer
+#define GL_AMD_vertex_shader_layer 1
+
+#define GLEW_AMD_vertex_shader_layer GLEW_GET_VAR(__GLEW_AMD_vertex_shader_layer)
+
+#endif /* GL_AMD_vertex_shader_layer */
+
+/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */
+
+#ifndef GL_AMD_vertex_shader_tessellator
+#define GL_AMD_vertex_shader_tessellator 1
+
+#define GL_SAMPLER_BUFFER_AMD 0x9001
+#define GL_INT_SAMPLER_BUFFER_AMD 0x9002
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
+#define GL_TESSELLATION_MODE_AMD 0x9004
+#define GL_TESSELLATION_FACTOR_AMD 0x9005
+#define GL_DISCRETE_AMD 0x9006
+#define GL_CONTINUOUS_AMD 0x9007
+
+typedef void (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
+typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
+
+#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD)
+#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD)
+
+#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator)
+
+#endif /* GL_AMD_vertex_shader_tessellator */
+
+/* ------------------ GL_AMD_vertex_shader_viewport_index ------------------ */
+
+#ifndef GL_AMD_vertex_shader_viewport_index
+#define GL_AMD_vertex_shader_viewport_index 1
+
+#define GLEW_AMD_vertex_shader_viewport_index GLEW_GET_VAR(__GLEW_AMD_vertex_shader_viewport_index)
+
+#endif /* GL_AMD_vertex_shader_viewport_index */
+
+/* -------------------- GL_ANDROID_extension_pack_es31a -------------------- */
+
+#ifndef GL_ANDROID_extension_pack_es31a
+#define GL_ANDROID_extension_pack_es31a 1
+
+#define GLEW_ANDROID_extension_pack_es31a GLEW_GET_VAR(__GLEW_ANDROID_extension_pack_es31a)
+
+#endif /* GL_ANDROID_extension_pack_es31a */
+
+/* ------------------------- GL_ANGLE_depth_texture ------------------------ */
+
+#ifndef GL_ANGLE_depth_texture
+#define GL_ANGLE_depth_texture 1
+
+#define GLEW_ANGLE_depth_texture GLEW_GET_VAR(__GLEW_ANGLE_depth_texture)
+
+#endif /* GL_ANGLE_depth_texture */
+
+/* ----------------------- GL_ANGLE_framebuffer_blit ----------------------- */
+
+#ifndef GL_ANGLE_framebuffer_blit
+#define GL_ANGLE_framebuffer_blit 1
+
+#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
+#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
+
+typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+#define glBlitFramebufferANGLE GLEW_GET_FUN(__glewBlitFramebufferANGLE)
+
+#define GLEW_ANGLE_framebuffer_blit GLEW_GET_VAR(__GLEW_ANGLE_framebuffer_blit)
+
+#endif /* GL_ANGLE_framebuffer_blit */
+
+/* -------------------- GL_ANGLE_framebuffer_multisample ------------------- */
+
+#ifndef GL_ANGLE_framebuffer_multisample
+#define GL_ANGLE_framebuffer_multisample 1
+
+#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
+#define GL_MAX_SAMPLES_ANGLE 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glRenderbufferStorageMultisampleANGLE GLEW_GET_FUN(__glewRenderbufferStorageMultisampleANGLE)
+
+#define GLEW_ANGLE_framebuffer_multisample GLEW_GET_VAR(__GLEW_ANGLE_framebuffer_multisample)
+
+#endif /* GL_ANGLE_framebuffer_multisample */
+
+/* ----------------------- GL_ANGLE_instanced_arrays ----------------------- */
+
+#ifndef GL_ANGLE_instanced_arrays
+#define GL_ANGLE_instanced_arrays 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);
+
+#define glDrawArraysInstancedANGLE GLEW_GET_FUN(__glewDrawArraysInstancedANGLE)
+#define glDrawElementsInstancedANGLE GLEW_GET_FUN(__glewDrawElementsInstancedANGLE)
+#define glVertexAttribDivisorANGLE GLEW_GET_FUN(__glewVertexAttribDivisorANGLE)
+
+#define GLEW_ANGLE_instanced_arrays GLEW_GET_VAR(__GLEW_ANGLE_instanced_arrays)
+
+#endif /* GL_ANGLE_instanced_arrays */
+
+/* -------------------- GL_ANGLE_pack_reverse_row_order -------------------- */
+
+#ifndef GL_ANGLE_pack_reverse_row_order
+#define GL_ANGLE_pack_reverse_row_order 1
+
+#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4
+
+#define GLEW_ANGLE_pack_reverse_row_order GLEW_GET_VAR(__GLEW_ANGLE_pack_reverse_row_order)
+
+#endif /* GL_ANGLE_pack_reverse_row_order */
+
+/* ------------------------ GL_ANGLE_program_binary ------------------------ */
+
+#ifndef GL_ANGLE_program_binary
+#define GL_ANGLE_program_binary 1
+
+#define GL_PROGRAM_BINARY_ANGLE 0x93A6
+
+#define GLEW_ANGLE_program_binary GLEW_GET_VAR(__GLEW_ANGLE_program_binary)
+
+#endif /* GL_ANGLE_program_binary */
+
+/* ------------------- GL_ANGLE_texture_compression_dxt1 ------------------- */
+
+#ifndef GL_ANGLE_texture_compression_dxt1
+#define GL_ANGLE_texture_compression_dxt1 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
+
+#define GLEW_ANGLE_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt1)
+
+#endif /* GL_ANGLE_texture_compression_dxt1 */
+
+/* ------------------- GL_ANGLE_texture_compression_dxt3 ------------------- */
+
+#ifndef GL_ANGLE_texture_compression_dxt3
+#define GL_ANGLE_texture_compression_dxt3 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
+
+#define GLEW_ANGLE_texture_compression_dxt3 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt3)
+
+#endif /* GL_ANGLE_texture_compression_dxt3 */
+
+/* ------------------- GL_ANGLE_texture_compression_dxt5 ------------------- */
+
+#ifndef GL_ANGLE_texture_compression_dxt5
+#define GL_ANGLE_texture_compression_dxt5 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
+
+#define GLEW_ANGLE_texture_compression_dxt5 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt5)
+
+#endif /* GL_ANGLE_texture_compression_dxt5 */
+
+/* ------------------------- GL_ANGLE_texture_usage ------------------------ */
+
+#ifndef GL_ANGLE_texture_usage
+#define GL_ANGLE_texture_usage 1
+
+#define GL_TEXTURE_USAGE_ANGLE 0x93A2
+#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
+
+#define GLEW_ANGLE_texture_usage GLEW_GET_VAR(__GLEW_ANGLE_texture_usage)
+
+#endif /* GL_ANGLE_texture_usage */
+
+/* -------------------------- GL_ANGLE_timer_query ------------------------- */
+
+#ifndef GL_ANGLE_timer_query
+#define GL_ANGLE_timer_query 1
+
+#define GL_QUERY_COUNTER_BITS_ANGLE 0x8864
+#define GL_CURRENT_QUERY_ANGLE 0x8865
+#define GL_QUERY_RESULT_ANGLE 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_ANGLE 0x8867
+#define GL_TIME_ELAPSED_ANGLE 0x88BF
+#define GL_TIMESTAMP_ANGLE 0x8E28
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYANGLEPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEQUERIESANGLEPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDQUERYANGLEPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENQUERIESANGLEPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VANGLEPROC) (GLuint id, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVANGLEPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VANGLEPROC) (GLuint id, GLenum pname, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVANGLEPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYIVANGLEPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISQUERYANGLEPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERANGLEPROC) (GLuint id, GLenum target);
+
+#define glBeginQueryANGLE GLEW_GET_FUN(__glewBeginQueryANGLE)
+#define glDeleteQueriesANGLE GLEW_GET_FUN(__glewDeleteQueriesANGLE)
+#define glEndQueryANGLE GLEW_GET_FUN(__glewEndQueryANGLE)
+#define glGenQueriesANGLE GLEW_GET_FUN(__glewGenQueriesANGLE)
+#define glGetQueryObjecti64vANGLE GLEW_GET_FUN(__glewGetQueryObjecti64vANGLE)
+#define glGetQueryObjectivANGLE GLEW_GET_FUN(__glewGetQueryObjectivANGLE)
+#define glGetQueryObjectui64vANGLE GLEW_GET_FUN(__glewGetQueryObjectui64vANGLE)
+#define glGetQueryObjectuivANGLE GLEW_GET_FUN(__glewGetQueryObjectuivANGLE)
+#define glGetQueryivANGLE GLEW_GET_FUN(__glewGetQueryivANGLE)
+#define glIsQueryANGLE GLEW_GET_FUN(__glewIsQueryANGLE)
+#define glQueryCounterANGLE GLEW_GET_FUN(__glewQueryCounterANGLE)
+
+#define GLEW_ANGLE_timer_query GLEW_GET_VAR(__GLEW_ANGLE_timer_query)
+
+#endif /* GL_ANGLE_timer_query */
+
+/* ------------------- GL_ANGLE_translated_shader_source ------------------- */
+
+#ifndef GL_ANGLE_translated_shader_source
+#define GL_ANGLE_translated_shader_source 1
+
+#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
+
+typedef void (GLAPIENTRY * PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
+
+#define glGetTranslatedShaderSourceANGLE GLEW_GET_FUN(__glewGetTranslatedShaderSourceANGLE)
+
+#define GLEW_ANGLE_translated_shader_source GLEW_GET_VAR(__GLEW_ANGLE_translated_shader_source)
+
+#endif /* GL_ANGLE_translated_shader_source */
+
+/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */
+
+#ifndef GL_APPLE_aux_depth_stencil
+#define GL_APPLE_aux_depth_stencil 1
+
+#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14
+
+#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil)
+
+#endif /* GL_APPLE_aux_depth_stencil */
+
+/* ------------------------ GL_APPLE_client_storage ------------------------ */
+
+#ifndef GL_APPLE_client_storage
+#define GL_APPLE_client_storage 1
+
+#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
+
+#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage)
+
+#endif /* GL_APPLE_client_storage */
+
+/* ------------------------- GL_APPLE_clip_distance ------------------------ */
+
+#ifndef GL_APPLE_clip_distance
+#define GL_APPLE_clip_distance 1
+
+#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32
+#define GL_CLIP_DISTANCE0_APPLE 0x3000
+#define GL_CLIP_DISTANCE1_APPLE 0x3001
+#define GL_CLIP_DISTANCE2_APPLE 0x3002
+#define GL_CLIP_DISTANCE3_APPLE 0x3003
+#define GL_CLIP_DISTANCE4_APPLE 0x3004
+#define GL_CLIP_DISTANCE5_APPLE 0x3005
+#define GL_CLIP_DISTANCE6_APPLE 0x3006
+#define GL_CLIP_DISTANCE7_APPLE 0x3007
+
+#define GLEW_APPLE_clip_distance GLEW_GET_VAR(__GLEW_APPLE_clip_distance)
+
+#endif /* GL_APPLE_clip_distance */
+
+/* ------------------- GL_APPLE_color_buffer_packed_float ------------------ */
+
+#ifndef GL_APPLE_color_buffer_packed_float
+#define GL_APPLE_color_buffer_packed_float 1
+
+#define GLEW_APPLE_color_buffer_packed_float GLEW_GET_VAR(__GLEW_APPLE_color_buffer_packed_float)
+
+#endif /* GL_APPLE_color_buffer_packed_float */
+
+/* ---------------------- GL_APPLE_copy_texture_levels --------------------- */
+
+#ifndef GL_APPLE_copy_texture_levels
+#define GL_APPLE_copy_texture_levels 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
+
+#define glCopyTextureLevelsAPPLE GLEW_GET_FUN(__glewCopyTextureLevelsAPPLE)
+
+#define GLEW_APPLE_copy_texture_levels GLEW_GET_VAR(__GLEW_APPLE_copy_texture_levels)
+
+#endif /* GL_APPLE_copy_texture_levels */
+
+/* ------------------------- GL_APPLE_element_array ------------------------ */
+
+#ifndef GL_APPLE_element_array
+#define GL_APPLE_element_array 1
+
+#define GL_ELEMENT_ARRAY_APPLE 0x8A0C
+#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
+#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
+
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount);
+
+#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE)
+#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE)
+#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE)
+#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE)
+#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE)
+
+#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array)
+
+#endif /* GL_APPLE_element_array */
+
+/* ----------------------------- GL_APPLE_fence ---------------------------- */
+
+#ifndef GL_APPLE_fence
+#define GL_APPLE_fence 1
+
+#define GL_DRAW_PIXELS_APPLE 0x8A0A
+#define GL_FENCE_APPLE 0x8A0B
+
+typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences);
+typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
+typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
+typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences);
+typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence);
+typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
+typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
+
+#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE)
+#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE)
+#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE)
+#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE)
+#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE)
+#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE)
+#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE)
+#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE)
+
+#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence)
+
+#endif /* GL_APPLE_fence */
+
+/* ------------------------- GL_APPLE_float_pixels ------------------------- */
+
+#ifndef GL_APPLE_float_pixels
+#define GL_APPLE_float_pixels 1
+
+#define GL_HALF_APPLE 0x140B
+#define GL_RGBA_FLOAT32_APPLE 0x8814
+#define GL_RGB_FLOAT32_APPLE 0x8815
+#define GL_ALPHA_FLOAT32_APPLE 0x8816
+#define GL_INTENSITY_FLOAT32_APPLE 0x8817
+#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
+#define GL_RGBA_FLOAT16_APPLE 0x881A
+#define GL_RGB_FLOAT16_APPLE 0x881B
+#define GL_ALPHA_FLOAT16_APPLE 0x881C
+#define GL_INTENSITY_FLOAT16_APPLE 0x881D
+#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
+#define GL_COLOR_FLOAT_APPLE 0x8A0F
+
+#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels)
+
+#endif /* GL_APPLE_float_pixels */
+
+/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */
+
+#ifndef GL_APPLE_flush_buffer_range
+#define GL_APPLE_flush_buffer_range 1
+
+#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
+#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
+
+typedef void (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
+
+#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE)
+#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE)
+
+#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range)
+
+#endif /* GL_APPLE_flush_buffer_range */
+
+/* -------------------- GL_APPLE_framebuffer_multisample ------------------- */
+
+#ifndef GL_APPLE_framebuffer_multisample
+#define GL_APPLE_framebuffer_multisample 1
+
+#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6
+#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA
+#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56
+#define GL_MAX_SAMPLES_APPLE 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
+
+#define glRenderbufferStorageMultisampleAPPLE GLEW_GET_FUN(__glewRenderbufferStorageMultisampleAPPLE)
+#define glResolveMultisampleFramebufferAPPLE GLEW_GET_FUN(__glewResolveMultisampleFramebufferAPPLE)
+
+#define GLEW_APPLE_framebuffer_multisample GLEW_GET_VAR(__GLEW_APPLE_framebuffer_multisample)
+
+#endif /* GL_APPLE_framebuffer_multisample */
+
+/* ----------------------- GL_APPLE_object_purgeable ----------------------- */
+
+#ifndef GL_APPLE_object_purgeable
+#define GL_APPLE_object_purgeable 1
+
+#define GL_BUFFER_OBJECT_APPLE 0x85B3
+#define GL_RELEASED_APPLE 0x8A19
+#define GL_VOLATILE_APPLE 0x8A1A
+#define GL_RETAINED_APPLE 0x8A1B
+#define GL_UNDEFINED_APPLE 0x8A1C
+#define GL_PURGEABLE_APPLE 0x8A1D
+
+typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params);
+typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
+typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
+
+#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE)
+#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE)
+#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE)
+
+#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable)
+
+#endif /* GL_APPLE_object_purgeable */
+
+/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */
+
+#ifndef GL_APPLE_pixel_buffer
+#define GL_APPLE_pixel_buffer 1
+
+#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10
+
+#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer)
+
+#endif /* GL_APPLE_pixel_buffer */
+
+/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */
+
+#ifndef GL_APPLE_rgb_422
+#define GL_APPLE_rgb_422 1
+
+#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+#define GL_RGB_422_APPLE 0x8A1F
+#define GL_RGB_RAW_422_APPLE 0x8A51
+
+#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422)
+
+#endif /* GL_APPLE_rgb_422 */
+
+/* --------------------------- GL_APPLE_row_bytes -------------------------- */
+
+#ifndef GL_APPLE_row_bytes
+#define GL_APPLE_row_bytes 1
+
+#define GL_PACK_ROW_BYTES_APPLE 0x8A15
+#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16
+
+#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes)
+
+#endif /* GL_APPLE_row_bytes */
+
+/* ------------------------ GL_APPLE_specular_vector ----------------------- */
+
+#ifndef GL_APPLE_specular_vector
+#define GL_APPLE_specular_vector 1
+
+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
+
+#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector)
+
+#endif /* GL_APPLE_specular_vector */
+
+/* ----------------------------- GL_APPLE_sync ----------------------------- */
+
+#ifndef GL_APPLE_sync
+#define GL_APPLE_sync 1
+
+#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001
+#define GL_SYNC_OBJECT_APPLE 0x8A53
+#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111
+#define GL_OBJECT_TYPE_APPLE 0x9112
+#define GL_SYNC_CONDITION_APPLE 0x9113
+#define GL_SYNC_STATUS_APPLE 0x9114
+#define GL_SYNC_FLAGS_APPLE 0x9115
+#define GL_SYNC_FENCE_APPLE 0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117
+#define GL_UNSIGNALED_APPLE 0x9118
+#define GL_SIGNALED_APPLE 0x9119
+#define GL_ALREADY_SIGNALED_APPLE 0x911A
+#define GL_TIMEOUT_EXPIRED_APPLE 0x911B
+#define GL_CONDITION_SATISFIED_APPLE 0x911C
+#define GL_WAIT_FAILED_APPLE 0x911D
+#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull
+
+typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync GLsync, GLbitfield flags, GLuint64 timeout);
+typedef void (GLAPIENTRY * PFNGLDELETESYNCAPPLEPROC) (GLsync GLsync);
+typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETSYNCIVAPPLEPROC) (GLsync GLsync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values);
+typedef GLboolean (GLAPIENTRY * PFNGLISSYNCAPPLEPROC) (GLsync GLsync);
+typedef void (GLAPIENTRY * PFNGLWAITSYNCAPPLEPROC) (GLsync GLsync, GLbitfield flags, GLuint64 timeout);
+
+#define glClientWaitSyncAPPLE GLEW_GET_FUN(__glewClientWaitSyncAPPLE)
+#define glDeleteSyncAPPLE GLEW_GET_FUN(__glewDeleteSyncAPPLE)
+#define glFenceSyncAPPLE GLEW_GET_FUN(__glewFenceSyncAPPLE)
+#define glGetInteger64vAPPLE GLEW_GET_FUN(__glewGetInteger64vAPPLE)
+#define glGetSyncivAPPLE GLEW_GET_FUN(__glewGetSyncivAPPLE)
+#define glIsSyncAPPLE GLEW_GET_FUN(__glewIsSyncAPPLE)
+#define glWaitSyncAPPLE GLEW_GET_FUN(__glewWaitSyncAPPLE)
+
+#define GLEW_APPLE_sync GLEW_GET_VAR(__GLEW_APPLE_sync)
+
+#endif /* GL_APPLE_sync */
+
+/* -------------------- GL_APPLE_texture_2D_limited_npot ------------------- */
+
+#ifndef GL_APPLE_texture_2D_limited_npot
+#define GL_APPLE_texture_2D_limited_npot 1
+
+#define GLEW_APPLE_texture_2D_limited_npot GLEW_GET_VAR(__GLEW_APPLE_texture_2D_limited_npot)
+
+#endif /* GL_APPLE_texture_2D_limited_npot */
+
+/* -------------------- GL_APPLE_texture_format_BGRA8888 ------------------- */
+
+#ifndef GL_APPLE_texture_format_BGRA8888
+#define GL_APPLE_texture_format_BGRA8888 1
+
+#define GL_BGRA_EXT 0x80E1
+#define GL_BGRA8_EXT 0x93A1
+
+#define GLEW_APPLE_texture_format_BGRA8888 GLEW_GET_VAR(__GLEW_APPLE_texture_format_BGRA8888)
+
+#endif /* GL_APPLE_texture_format_BGRA8888 */
+
+/* ----------------------- GL_APPLE_texture_max_level ---------------------- */
+
+#ifndef GL_APPLE_texture_max_level
+#define GL_APPLE_texture_max_level 1
+
+#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D
+
+#define GLEW_APPLE_texture_max_level GLEW_GET_VAR(__GLEW_APPLE_texture_max_level)
+
+#endif /* GL_APPLE_texture_max_level */
+
+/* --------------------- GL_APPLE_texture_packed_float --------------------- */
+
+#ifndef GL_APPLE_texture_packed_float
+#define GL_APPLE_texture_packed_float 1
+
+#define GL_R11F_G11F_B10F_APPLE 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B
+#define GL_RGB9_E5_APPLE 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E
+
+#define GLEW_APPLE_texture_packed_float GLEW_GET_VAR(__GLEW_APPLE_texture_packed_float)
+
+#endif /* GL_APPLE_texture_packed_float */
+
+/* ------------------------- GL_APPLE_texture_range ------------------------ */
+
+#ifndef GL_APPLE_texture_range
+#define GL_APPLE_texture_range 1
+
+#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7
+#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8
+#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC
+#define GL_STORAGE_PRIVATE_APPLE 0x85BD
+#define GL_STORAGE_CACHED_APPLE 0x85BE
+#define GL_STORAGE_SHARED_APPLE 0x85BF
+
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params);
+typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, void *pointer);
+
+#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE)
+#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE)
+
+#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range)
+
+#endif /* GL_APPLE_texture_range */
+
+/* ------------------------ GL_APPLE_transform_hint ------------------------ */
+
+#ifndef GL_APPLE_transform_hint
+#define GL_APPLE_transform_hint 1
+
+#define GL_TRANSFORM_HINT_APPLE 0x85B1
+
+#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint)
+
+#endif /* GL_APPLE_transform_hint */
+
+/* ---------------------- GL_APPLE_vertex_array_object --------------------- */
+
+#ifndef GL_APPLE_vertex_array_object
+#define GL_APPLE_vertex_array_object 1
+
+#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
+
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
+
+#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE)
+#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE)
+#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE)
+#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE)
+
+#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object)
+
+#endif /* GL_APPLE_vertex_array_object */
+
+/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */
+
+#ifndef GL_APPLE_vertex_array_range
+#define GL_APPLE_vertex_array_range 1
+
+#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
+#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+#define GL_STORAGE_CLIENT_APPLE 0x85B4
+#define GL_STORAGE_CACHED_APPLE 0x85BE
+#define GL_STORAGE_SHARED_APPLE 0x85BF
+
+typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
+
+#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE)
+#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE)
+#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE)
+
+#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range)
+
+#endif /* GL_APPLE_vertex_array_range */
+
+/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */
+
+#ifndef GL_APPLE_vertex_program_evaluators
+#define GL_APPLE_vertex_program_evaluators 1
+
+#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00
+#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01
+#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02
+#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
+#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
+#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
+#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06
+#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
+#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
+#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
+
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);
+typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points);
+typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points);
+typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points);
+
+#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE)
+#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE)
+#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE)
+#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE)
+#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE)
+#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE)
+#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE)
+
+#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators)
+
+#endif /* GL_APPLE_vertex_program_evaluators */
+
+/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */
+
+#ifndef GL_APPLE_ycbcr_422
+#define GL_APPLE_ycbcr_422 1
+
+#define GL_YCBCR_422_APPLE 0x85B9
+
+#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422)
+
+#endif /* GL_APPLE_ycbcr_422 */
+
+/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */
+
+#ifndef GL_ARB_ES2_compatibility
+#define GL_ARB_ES2_compatibility 1
+
+#define GL_FIXED 0x140C
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
+#define GL_RGB565 0x8D62
+#define GL_LOW_FLOAT 0x8DF0
+#define GL_MEDIUM_FLOAT 0x8DF1
+#define GL_HIGH_FLOAT 0x8DF2
+#define GL_LOW_INT 0x8DF3
+#define GL_MEDIUM_INT 0x8DF4
+#define GL_HIGH_INT 0x8DF5
+#define GL_SHADER_BINARY_FORMATS 0x8DF8
+#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
+#define GL_SHADER_COMPILER 0x8DFA
+#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
+#define GL_MAX_VARYING_VECTORS 0x8DFC
+#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
+
+typedef int GLfixed;
+
+typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f);
+typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision);
+typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void);
+typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const void*binary, GLsizei length);
+
+#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf)
+#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef)
+#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat)
+#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler)
+#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary)
+
+#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility)
+
+#endif /* GL_ARB_ES2_compatibility */
+
+/* ----------------------- GL_ARB_ES3_1_compatibility ---------------------- */
+
+#ifndef GL_ARB_ES3_1_compatibility
+#define GL_ARB_ES3_1_compatibility 1
+
+typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers);
+
+#define glMemoryBarrierByRegion GLEW_GET_FUN(__glewMemoryBarrierByRegion)
+
+#define GLEW_ARB_ES3_1_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_1_compatibility)
+
+#endif /* GL_ARB_ES3_1_compatibility */
+
+/* ----------------------- GL_ARB_ES3_2_compatibility ---------------------- */
+
+#ifndef GL_ARB_ES3_2_compatibility
+#define GL_ARB_ES3_2_compatibility 1
+
+#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE
+#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381
+#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382
+
+typedef void (GLAPIENTRY * PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+
+#define glPrimitiveBoundingBoxARB GLEW_GET_FUN(__glewPrimitiveBoundingBoxARB)
+
+#define GLEW_ARB_ES3_2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_2_compatibility)
+
+#endif /* GL_ARB_ES3_2_compatibility */
+
+/* ------------------------ GL_ARB_ES3_compatibility ----------------------- */
+
+#ifndef GL_ARB_ES3_compatibility
+#define GL_ARB_ES3_compatibility 1
+
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
+#define GL_MAX_ELEMENT_INDEX 0x8D6B
+#define GL_COMPRESSED_R11_EAC 0x9270
+#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
+#define GL_COMPRESSED_RG11_EAC 0x9272
+#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
+#define GL_COMPRESSED_RGB8_ETC2 0x9274
+#define GL_COMPRESSED_SRGB8_ETC2 0x9275
+#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
+#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
+#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
+#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
+
+#define GLEW_ARB_ES3_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_compatibility)
+
+#endif /* GL_ARB_ES3_compatibility */
+
+/* ------------------------ GL_ARB_arrays_of_arrays ------------------------ */
+
+#ifndef GL_ARB_arrays_of_arrays
+#define GL_ARB_arrays_of_arrays 1
+
+#define GLEW_ARB_arrays_of_arrays GLEW_GET_VAR(__GLEW_ARB_arrays_of_arrays)
+
+#endif /* GL_ARB_arrays_of_arrays */
+
+/* -------------------------- GL_ARB_base_instance ------------------------- */
+
+#ifndef GL_ARB_base_instance
+#define GL_ARB_base_instance 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance);
+
+#define glDrawArraysInstancedBaseInstance GLEW_GET_FUN(__glewDrawArraysInstancedBaseInstance)
+#define glDrawElementsInstancedBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseInstance)
+#define glDrawElementsInstancedBaseVertexBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexBaseInstance)
+
+#define GLEW_ARB_base_instance GLEW_GET_VAR(__GLEW_ARB_base_instance)
+
+#endif /* GL_ARB_base_instance */
+
+/* ------------------------ GL_ARB_bindless_texture ------------------------ */
+
+#ifndef GL_ARB_bindless_texture
+#define GL_ARB_bindless_texture 1
+
+#define GL_UNSIGNED_INT64_ARB 0x140F
+
+typedef GLuint64 (GLAPIENTRY * PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
+typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT* v);
+
+#define glGetImageHandleARB GLEW_GET_FUN(__glewGetImageHandleARB)
+#define glGetTextureHandleARB GLEW_GET_FUN(__glewGetTextureHandleARB)
+#define glGetTextureSamplerHandleARB GLEW_GET_FUN(__glewGetTextureSamplerHandleARB)
+#define glGetVertexAttribLui64vARB GLEW_GET_FUN(__glewGetVertexAttribLui64vARB)
+#define glIsImageHandleResidentARB GLEW_GET_FUN(__glewIsImageHandleResidentARB)
+#define glIsTextureHandleResidentARB GLEW_GET_FUN(__glewIsTextureHandleResidentARB)
+#define glMakeImageHandleNonResidentARB GLEW_GET_FUN(__glewMakeImageHandleNonResidentARB)
+#define glMakeImageHandleResidentARB GLEW_GET_FUN(__glewMakeImageHandleResidentARB)
+#define glMakeTextureHandleNonResidentARB GLEW_GET_FUN(__glewMakeTextureHandleNonResidentARB)
+#define glMakeTextureHandleResidentARB GLEW_GET_FUN(__glewMakeTextureHandleResidentARB)
+#define glProgramUniformHandleui64ARB GLEW_GET_FUN(__glewProgramUniformHandleui64ARB)
+#define glProgramUniformHandleui64vARB GLEW_GET_FUN(__glewProgramUniformHandleui64vARB)
+#define glUniformHandleui64ARB GLEW_GET_FUN(__glewUniformHandleui64ARB)
+#define glUniformHandleui64vARB GLEW_GET_FUN(__glewUniformHandleui64vARB)
+#define glVertexAttribL1ui64ARB GLEW_GET_FUN(__glewVertexAttribL1ui64ARB)
+#define glVertexAttribL1ui64vARB GLEW_GET_FUN(__glewVertexAttribL1ui64vARB)
+
+#define GLEW_ARB_bindless_texture GLEW_GET_VAR(__GLEW_ARB_bindless_texture)
+
+#endif /* GL_ARB_bindless_texture */
+
+/* ----------------------- GL_ARB_blend_func_extended ---------------------- */
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_ARB_blend_func_extended 1
+
+#define GL_SRC1_COLOR 0x88F9
+#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar * name);
+
+#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed)
+#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex)
+
+#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended)
+
+#endif /* GL_ARB_blend_func_extended */
+
+/* ------------------------- GL_ARB_buffer_storage ------------------------- */
+
+#ifndef GL_ARB_buffer_storage
+#define GL_ARB_buffer_storage 1
+
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_PERSISTENT_BIT 0x00000040
+#define GL_MAP_COHERENT_BIT 0x00000080
+#define GL_DYNAMIC_STORAGE_BIT 0x0100
+#define GL_CLIENT_STORAGE_BIT 0x0200
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
+#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F
+#define GL_BUFFER_STORAGE_FLAGS 0x8220
+
+typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
+
+#define glBufferStorage GLEW_GET_FUN(__glewBufferStorage)
+
+#define GLEW_ARB_buffer_storage GLEW_GET_VAR(__GLEW_ARB_buffer_storage)
+
+#endif /* GL_ARB_buffer_storage */
+
+/* ---------------------------- GL_ARB_cl_event ---------------------------- */
+
+#ifndef GL_ARB_cl_event
+#define GL_ARB_cl_event 1
+
+#define GL_SYNC_CL_EVENT_ARB 0x8240
+#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
+
+typedef struct _cl_context *cl_context;
+typedef struct _cl_event *cl_event;
+
+typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags);
+
+#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB)
+
+#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event)
+
+#endif /* GL_ARB_cl_event */
+
+/* ----------------------- GL_ARB_clear_buffer_object ---------------------- */
+
+#ifndef GL_ARB_clear_buffer_object
+#define GL_ARB_clear_buffer_object 1
+
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+
+#define glClearBufferData GLEW_GET_FUN(__glewClearBufferData)
+#define glClearBufferSubData GLEW_GET_FUN(__glewClearBufferSubData)
+#define glClearNamedBufferDataEXT GLEW_GET_FUN(__glewClearNamedBufferDataEXT)
+#define glClearNamedBufferSubDataEXT GLEW_GET_FUN(__glewClearNamedBufferSubDataEXT)
+
+#define GLEW_ARB_clear_buffer_object GLEW_GET_VAR(__GLEW_ARB_clear_buffer_object)
+
+#endif /* GL_ARB_clear_buffer_object */
+
+/* -------------------------- GL_ARB_clear_texture ------------------------- */
+
+#ifndef GL_ARB_clear_texture
+#define GL_ARB_clear_texture 1
+
+#define GL_CLEAR_TEXTURE 0x9365
+
+typedef void (GLAPIENTRY * PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+
+#define glClearTexImage GLEW_GET_FUN(__glewClearTexImage)
+#define glClearTexSubImage GLEW_GET_FUN(__glewClearTexSubImage)
+
+#define GLEW_ARB_clear_texture GLEW_GET_VAR(__GLEW_ARB_clear_texture)
+
+#endif /* GL_ARB_clear_texture */
+
+/* -------------------------- GL_ARB_clip_control -------------------------- */
+
+#ifndef GL_ARB_clip_control
+#define GL_ARB_clip_control 1
+
+#define GL_LOWER_LEFT 0x8CA1
+#define GL_UPPER_LEFT 0x8CA2
+#define GL_CLIP_ORIGIN 0x935C
+#define GL_CLIP_DEPTH_MODE 0x935D
+#define GL_NEGATIVE_ONE_TO_ONE 0x935E
+#define GL_ZERO_TO_ONE 0x935F
+
+typedef void (GLAPIENTRY * PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth);
+
+#define glClipControl GLEW_GET_FUN(__glewClipControl)
+
+#define GLEW_ARB_clip_control GLEW_GET_VAR(__GLEW_ARB_clip_control)
+
+#endif /* GL_ARB_clip_control */
+
+/* ----------------------- GL_ARB_color_buffer_float ----------------------- */
+
+#ifndef GL_ARB_color_buffer_float
+#define GL_ARB_color_buffer_float 1
+
+#define GL_RGBA_FLOAT_MODE_ARB 0x8820
+#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
+#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
+#define GL_CLAMP_READ_COLOR_ARB 0x891C
+#define GL_FIXED_ONLY_ARB 0x891D
+
+typedef void (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
+
+#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB)
+
+#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float)
+
+#endif /* GL_ARB_color_buffer_float */
+
+/* -------------------------- GL_ARB_compatibility ------------------------- */
+
+#ifndef GL_ARB_compatibility
+#define GL_ARB_compatibility 1
+
+#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility)
+
+#endif /* GL_ARB_compatibility */
+
+/* ---------------- GL_ARB_compressed_texture_pixel_storage ---------------- */
+
+#ifndef GL_ARB_compressed_texture_pixel_storage
+#define GL_ARB_compressed_texture_pixel_storage 1
+
+#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
+#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
+#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
+#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
+#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
+#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
+#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
+#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
+
+#define GLEW_ARB_compressed_texture_pixel_storage GLEW_GET_VAR(__GLEW_ARB_compressed_texture_pixel_storage)
+
+#endif /* GL_ARB_compressed_texture_pixel_storage */
+
+/* ------------------------- GL_ARB_compute_shader ------------------------- */
+
+#ifndef GL_ARB_compute_shader
+#define GL_ARB_compute_shader 1
+
+#define GL_COMPUTE_SHADER_BIT 0x00000020
+#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
+#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
+#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
+#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
+#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
+#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267
+#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
+#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
+#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
+#define GL_COMPUTE_SHADER 0x91B9
+#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
+#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
+#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
+#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
+#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
+
+typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
+typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
+
+#define glDispatchCompute GLEW_GET_FUN(__glewDispatchCompute)
+#define glDispatchComputeIndirect GLEW_GET_FUN(__glewDispatchComputeIndirect)
+
+#define GLEW_ARB_compute_shader GLEW_GET_VAR(__GLEW_ARB_compute_shader)
+
+#endif /* GL_ARB_compute_shader */
+
+/* ------------------- GL_ARB_compute_variable_group_size ------------------ */
+
+#ifndef GL_ARB_compute_variable_group_size
+#define GL_ARB_compute_variable_group_size 1
+
+#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
+#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
+#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
+#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
+
+typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
+
+#define glDispatchComputeGroupSizeARB GLEW_GET_FUN(__glewDispatchComputeGroupSizeARB)
+
+#define GLEW_ARB_compute_variable_group_size GLEW_GET_VAR(__GLEW_ARB_compute_variable_group_size)
+
+#endif /* GL_ARB_compute_variable_group_size */
+
+/* ------------------- GL_ARB_conditional_render_inverted ------------------ */
+
+#ifndef GL_ARB_conditional_render_inverted
+#define GL_ARB_conditional_render_inverted 1
+
+#define GL_QUERY_WAIT_INVERTED 0x8E17
+#define GL_QUERY_NO_WAIT_INVERTED 0x8E18
+#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
+#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
+
+#define GLEW_ARB_conditional_render_inverted GLEW_GET_VAR(__GLEW_ARB_conditional_render_inverted)
+
+#endif /* GL_ARB_conditional_render_inverted */
+
+/* ----------------------- GL_ARB_conservative_depth ----------------------- */
+
+#ifndef GL_ARB_conservative_depth
+#define GL_ARB_conservative_depth 1
+
+#define GLEW_ARB_conservative_depth GLEW_GET_VAR(__GLEW_ARB_conservative_depth)
+
+#endif /* GL_ARB_conservative_depth */
+
+/* --------------------------- GL_ARB_copy_buffer -------------------------- */
+
+#ifndef GL_ARB_copy_buffer
+#define GL_ARB_copy_buffer 1
+
+#define GL_COPY_READ_BUFFER 0x8F36
+#define GL_COPY_WRITE_BUFFER 0x8F37
+
+typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size);
+
+#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData)
+
+#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer)
+
+#endif /* GL_ARB_copy_buffer */
+
+/* --------------------------- GL_ARB_copy_image --------------------------- */
+
+#ifndef GL_ARB_copy_image
+#define GL_ARB_copy_image 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+#define glCopyImageSubData GLEW_GET_FUN(__glewCopyImageSubData)
+
+#define GLEW_ARB_copy_image GLEW_GET_VAR(__GLEW_ARB_copy_image)
+
+#endif /* GL_ARB_copy_image */
+
+/* -------------------------- GL_ARB_cull_distance ------------------------- */
+
+#ifndef GL_ARB_cull_distance
+#define GL_ARB_cull_distance 1
+
+#define GL_MAX_CULL_DISTANCES 0x82F9
+#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
+
+#define GLEW_ARB_cull_distance GLEW_GET_VAR(__GLEW_ARB_cull_distance)
+
+#endif /* GL_ARB_cull_distance */
+
+/* -------------------------- GL_ARB_debug_output -------------------------- */
+
+#ifndef GL_ARB_debug_output
+#define GL_ARB_debug_output 1
+
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
+#define GL_DEBUG_SOURCE_API_ARB 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
+#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
+#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
+#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
+#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
+#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
+
+typedef void (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
+
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
+typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog);
+
+#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB)
+#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB)
+#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB)
+#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB)
+
+#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output)
+
+#endif /* GL_ARB_debug_output */
+
+/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */
+
+#ifndef GL_ARB_depth_buffer_float
+#define GL_ARB_depth_buffer_float 1
+
+#define GL_DEPTH_COMPONENT32F 0x8CAC
+#define GL_DEPTH32F_STENCIL8 0x8CAD
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
+
+#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float)
+
+#endif /* GL_ARB_depth_buffer_float */
+
+/* --------------------------- GL_ARB_depth_clamp -------------------------- */
+
+#ifndef GL_ARB_depth_clamp
+#define GL_ARB_depth_clamp 1
+
+#define GL_DEPTH_CLAMP 0x864F
+
+#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp)
+
+#endif /* GL_ARB_depth_clamp */
+
+/* -------------------------- GL_ARB_depth_texture ------------------------- */
+
+#ifndef GL_ARB_depth_texture
+#define GL_ARB_depth_texture 1
+
+#define GL_DEPTH_COMPONENT16_ARB 0x81A5
+#define GL_DEPTH_COMPONENT24_ARB 0x81A6
+#define GL_DEPTH_COMPONENT32_ARB 0x81A7
+#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
+#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
+
+#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture)
+
+#endif /* GL_ARB_depth_texture */
+
+/* ----------------------- GL_ARB_derivative_control ----------------------- */
+
+#ifndef GL_ARB_derivative_control
+#define GL_ARB_derivative_control 1
+
+#define GLEW_ARB_derivative_control GLEW_GET_VAR(__GLEW_ARB_derivative_control)
+
+#endif /* GL_ARB_derivative_control */
+
+/* ----------------------- GL_ARB_direct_state_access ---------------------- */
+
+#ifndef GL_ARB_direct_state_access
+#define GL_ARB_direct_state_access 1
+
+#define GL_TEXTURE_TARGET 0x1006
+#define GL_QUERY_TARGET 0x82EA
+
+typedef void (GLAPIENTRY * PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);
+typedef void (GLAPIENTRY * PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines);
+typedef void (GLAPIENTRY * PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint* samplers);
+typedef void (GLAPIENTRY * PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint* textures);
+typedef void (GLAPIENTRY * PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void** params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64* param);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments);
+typedef void (GLAPIENTRY * PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);
+typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat* param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint* param);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides);
+
+#define glBindTextureUnit GLEW_GET_FUN(__glewBindTextureUnit)
+#define glBlitNamedFramebuffer GLEW_GET_FUN(__glewBlitNamedFramebuffer)
+#define glCheckNamedFramebufferStatus GLEW_GET_FUN(__glewCheckNamedFramebufferStatus)
+#define glClearNamedBufferData GLEW_GET_FUN(__glewClearNamedBufferData)
+#define glClearNamedBufferSubData GLEW_GET_FUN(__glewClearNamedBufferSubData)
+#define glClearNamedFramebufferfi GLEW_GET_FUN(__glewClearNamedFramebufferfi)
+#define glClearNamedFramebufferfv GLEW_GET_FUN(__glewClearNamedFramebufferfv)
+#define glClearNamedFramebufferiv GLEW_GET_FUN(__glewClearNamedFramebufferiv)
+#define glClearNamedFramebufferuiv GLEW_GET_FUN(__glewClearNamedFramebufferuiv)
+#define glCompressedTextureSubImage1D GLEW_GET_FUN(__glewCompressedTextureSubImage1D)
+#define glCompressedTextureSubImage2D GLEW_GET_FUN(__glewCompressedTextureSubImage2D)
+#define glCompressedTextureSubImage3D GLEW_GET_FUN(__glewCompressedTextureSubImage3D)
+#define glCopyNamedBufferSubData GLEW_GET_FUN(__glewCopyNamedBufferSubData)
+#define glCopyTextureSubImage1D GLEW_GET_FUN(__glewCopyTextureSubImage1D)
+#define glCopyTextureSubImage2D GLEW_GET_FUN(__glewCopyTextureSubImage2D)
+#define glCopyTextureSubImage3D GLEW_GET_FUN(__glewCopyTextureSubImage3D)
+#define glCreateBuffers GLEW_GET_FUN(__glewCreateBuffers)
+#define glCreateFramebuffers GLEW_GET_FUN(__glewCreateFramebuffers)
+#define glCreateProgramPipelines GLEW_GET_FUN(__glewCreateProgramPipelines)
+#define glCreateQueries GLEW_GET_FUN(__glewCreateQueries)
+#define glCreateRenderbuffers GLEW_GET_FUN(__glewCreateRenderbuffers)
+#define glCreateSamplers GLEW_GET_FUN(__glewCreateSamplers)
+#define glCreateTextures GLEW_GET_FUN(__glewCreateTextures)
+#define glCreateTransformFeedbacks GLEW_GET_FUN(__glewCreateTransformFeedbacks)
+#define glCreateVertexArrays GLEW_GET_FUN(__glewCreateVertexArrays)
+#define glDisableVertexArrayAttrib GLEW_GET_FUN(__glewDisableVertexArrayAttrib)
+#define glEnableVertexArrayAttrib GLEW_GET_FUN(__glewEnableVertexArrayAttrib)
+#define glFlushMappedNamedBufferRange GLEW_GET_FUN(__glewFlushMappedNamedBufferRange)
+#define glGenerateTextureMipmap GLEW_GET_FUN(__glewGenerateTextureMipmap)
+#define glGetCompressedTextureImage GLEW_GET_FUN(__glewGetCompressedTextureImage)
+#define glGetNamedBufferParameteri64v GLEW_GET_FUN(__glewGetNamedBufferParameteri64v)
+#define glGetNamedBufferParameteriv GLEW_GET_FUN(__glewGetNamedBufferParameteriv)
+#define glGetNamedBufferPointerv GLEW_GET_FUN(__glewGetNamedBufferPointerv)
+#define glGetNamedBufferSubData GLEW_GET_FUN(__glewGetNamedBufferSubData)
+#define glGetNamedFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameteriv)
+#define glGetNamedFramebufferParameteriv GLEW_GET_FUN(__glewGetNamedFramebufferParameteriv)
+#define glGetNamedRenderbufferParameteriv GLEW_GET_FUN(__glewGetNamedRenderbufferParameteriv)
+#define glGetQueryBufferObjecti64v GLEW_GET_FUN(__glewGetQueryBufferObjecti64v)
+#define glGetQueryBufferObjectiv GLEW_GET_FUN(__glewGetQueryBufferObjectiv)
+#define glGetQueryBufferObjectui64v GLEW_GET_FUN(__glewGetQueryBufferObjectui64v)
+#define glGetQueryBufferObjectuiv GLEW_GET_FUN(__glewGetQueryBufferObjectuiv)
+#define glGetTextureImage GLEW_GET_FUN(__glewGetTextureImage)
+#define glGetTextureLevelParameterfv GLEW_GET_FUN(__glewGetTextureLevelParameterfv)
+#define glGetTextureLevelParameteriv GLEW_GET_FUN(__glewGetTextureLevelParameteriv)
+#define glGetTextureParameterIiv GLEW_GET_FUN(__glewGetTextureParameterIiv)
+#define glGetTextureParameterIuiv GLEW_GET_FUN(__glewGetTextureParameterIuiv)
+#define glGetTextureParameterfv GLEW_GET_FUN(__glewGetTextureParameterfv)
+#define glGetTextureParameteriv GLEW_GET_FUN(__glewGetTextureParameteriv)
+#define glGetTransformFeedbacki64_v GLEW_GET_FUN(__glewGetTransformFeedbacki64_v)
+#define glGetTransformFeedbacki_v GLEW_GET_FUN(__glewGetTransformFeedbacki_v)
+#define glGetTransformFeedbackiv GLEW_GET_FUN(__glewGetTransformFeedbackiv)
+#define glGetVertexArrayIndexed64iv GLEW_GET_FUN(__glewGetVertexArrayIndexed64iv)
+#define glGetVertexArrayIndexediv GLEW_GET_FUN(__glewGetVertexArrayIndexediv)
+#define glGetVertexArrayiv GLEW_GET_FUN(__glewGetVertexArrayiv)
+#define glInvalidateNamedFramebufferData GLEW_GET_FUN(__glewInvalidateNamedFramebufferData)
+#define glInvalidateNamedFramebufferSubData GLEW_GET_FUN(__glewInvalidateNamedFramebufferSubData)
+#define glMapNamedBuffer GLEW_GET_FUN(__glewMapNamedBuffer)
+#define glMapNamedBufferRange GLEW_GET_FUN(__glewMapNamedBufferRange)
+#define glNamedBufferData GLEW_GET_FUN(__glewNamedBufferData)
+#define glNamedBufferStorage GLEW_GET_FUN(__glewNamedBufferStorage)
+#define glNamedBufferSubData GLEW_GET_FUN(__glewNamedBufferSubData)
+#define glNamedFramebufferDrawBuffer GLEW_GET_FUN(__glewNamedFramebufferDrawBuffer)
+#define glNamedFramebufferDrawBuffers GLEW_GET_FUN(__glewNamedFramebufferDrawBuffers)
+#define glNamedFramebufferParameteri GLEW_GET_FUN(__glewNamedFramebufferParameteri)
+#define glNamedFramebufferReadBuffer GLEW_GET_FUN(__glewNamedFramebufferReadBuffer)
+#define glNamedFramebufferRenderbuffer GLEW_GET_FUN(__glewNamedFramebufferRenderbuffer)
+#define glNamedFramebufferTexture GLEW_GET_FUN(__glewNamedFramebufferTexture)
+#define glNamedFramebufferTextureLayer GLEW_GET_FUN(__glewNamedFramebufferTextureLayer)
+#define glNamedRenderbufferStorage GLEW_GET_FUN(__glewNamedRenderbufferStorage)
+#define glNamedRenderbufferStorageMultisample GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisample)
+#define glTextureBuffer GLEW_GET_FUN(__glewTextureBuffer)
+#define glTextureBufferRange GLEW_GET_FUN(__glewTextureBufferRange)
+#define glTextureParameterIiv GLEW_GET_FUN(__glewTextureParameterIiv)
+#define glTextureParameterIuiv GLEW_GET_FUN(__glewTextureParameterIuiv)
+#define glTextureParameterf GLEW_GET_FUN(__glewTextureParameterf)
+#define glTextureParameterfv GLEW_GET_FUN(__glewTextureParameterfv)
+#define glTextureParameteri GLEW_GET_FUN(__glewTextureParameteri)
+#define glTextureParameteriv GLEW_GET_FUN(__glewTextureParameteriv)
+#define glTextureStorage1D GLEW_GET_FUN(__glewTextureStorage1D)
+#define glTextureStorage2D GLEW_GET_FUN(__glewTextureStorage2D)
+#define glTextureStorage2DMultisample GLEW_GET_FUN(__glewTextureStorage2DMultisample)
+#define glTextureStorage3D GLEW_GET_FUN(__glewTextureStorage3D)
+#define glTextureStorage3DMultisample GLEW_GET_FUN(__glewTextureStorage3DMultisample)
+#define glTextureSubImage1D GLEW_GET_FUN(__glewTextureSubImage1D)
+#define glTextureSubImage2D GLEW_GET_FUN(__glewTextureSubImage2D)
+#define glTextureSubImage3D GLEW_GET_FUN(__glewTextureSubImage3D)
+#define glTransformFeedbackBufferBase GLEW_GET_FUN(__glewTransformFeedbackBufferBase)
+#define glTransformFeedbackBufferRange GLEW_GET_FUN(__glewTransformFeedbackBufferRange)
+#define glUnmapNamedBuffer GLEW_GET_FUN(__glewUnmapNamedBuffer)
+#define glVertexArrayAttribBinding GLEW_GET_FUN(__glewVertexArrayAttribBinding)
+#define glVertexArrayAttribFormat GLEW_GET_FUN(__glewVertexArrayAttribFormat)
+#define glVertexArrayAttribIFormat GLEW_GET_FUN(__glewVertexArrayAttribIFormat)
+#define glVertexArrayAttribLFormat GLEW_GET_FUN(__glewVertexArrayAttribLFormat)
+#define glVertexArrayBindingDivisor GLEW_GET_FUN(__glewVertexArrayBindingDivisor)
+#define glVertexArrayElementBuffer GLEW_GET_FUN(__glewVertexArrayElementBuffer)
+#define glVertexArrayVertexBuffer GLEW_GET_FUN(__glewVertexArrayVertexBuffer)
+#define glVertexArrayVertexBuffers GLEW_GET_FUN(__glewVertexArrayVertexBuffers)
+
+#define GLEW_ARB_direct_state_access GLEW_GET_VAR(__GLEW_ARB_direct_state_access)
+
+#endif /* GL_ARB_direct_state_access */
+
+/* -------------------------- GL_ARB_draw_buffers -------------------------- */
+
+#ifndef GL_ARB_draw_buffers
+#define GL_ARB_draw_buffers 1
+
+#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
+#define GL_DRAW_BUFFER0_ARB 0x8825
+#define GL_DRAW_BUFFER1_ARB 0x8826
+#define GL_DRAW_BUFFER2_ARB 0x8827
+#define GL_DRAW_BUFFER3_ARB 0x8828
+#define GL_DRAW_BUFFER4_ARB 0x8829
+#define GL_DRAW_BUFFER5_ARB 0x882A
+#define GL_DRAW_BUFFER6_ARB 0x882B
+#define GL_DRAW_BUFFER7_ARB 0x882C
+#define GL_DRAW_BUFFER8_ARB 0x882D
+#define GL_DRAW_BUFFER9_ARB 0x882E
+#define GL_DRAW_BUFFER10_ARB 0x882F
+#define GL_DRAW_BUFFER11_ARB 0x8830
+#define GL_DRAW_BUFFER12_ARB 0x8831
+#define GL_DRAW_BUFFER13_ARB 0x8832
+#define GL_DRAW_BUFFER14_ARB 0x8833
+#define GL_DRAW_BUFFER15_ARB 0x8834
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs);
+
+#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB)
+
+#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers)
+
+#endif /* GL_ARB_draw_buffers */
+
+/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */
+
+#ifndef GL_ARB_draw_buffers_blend
+#define GL_ARB_draw_buffers_blend 1
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
+
+#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB)
+#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB)
+#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB)
+#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB)
+
+#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend)
+
+#endif /* GL_ARB_draw_buffers_blend */
+
+/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */
+
+#ifndef GL_ARB_draw_elements_base_vertex
+#define GL_ARB_draw_elements_base_vertex 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei* count, GLenum type, const void*const *indices, GLsizei drawcount, const GLint *basevertex);
+
+#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex)
+#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex)
+#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex)
+#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex)
+
+#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex)
+
+#endif /* GL_ARB_draw_elements_base_vertex */
+
+/* -------------------------- GL_ARB_draw_indirect ------------------------- */
+
+#ifndef GL_ARB_draw_indirect
+#define GL_ARB_draw_indirect 1
+
+#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
+#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
+
+#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect)
+#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect)
+
+#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect)
+
+#endif /* GL_ARB_draw_indirect */
+
+/* ------------------------- GL_ARB_draw_instanced ------------------------- */
+
+#ifndef GL_ARB_draw_instanced
+#define GL_ARB_draw_instanced 1
+
+#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced)
+
+#endif /* GL_ARB_draw_instanced */
+
+/* ------------------------ GL_ARB_enhanced_layouts ------------------------ */
+
+#ifndef GL_ARB_enhanced_layouts
+#define GL_ARB_enhanced_layouts 1
+
+#define GL_LOCATION_COMPONENT 0x934A
+#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
+#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
+
+#define GLEW_ARB_enhanced_layouts GLEW_GET_VAR(__GLEW_ARB_enhanced_layouts)
+
+#endif /* GL_ARB_enhanced_layouts */
+
+/* -------------------- GL_ARB_explicit_attrib_location -------------------- */
+
+#ifndef GL_ARB_explicit_attrib_location
+#define GL_ARB_explicit_attrib_location 1
+
+#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location)
+
+#endif /* GL_ARB_explicit_attrib_location */
+
+/* -------------------- GL_ARB_explicit_uniform_location ------------------- */
+
+#ifndef GL_ARB_explicit_uniform_location
+#define GL_ARB_explicit_uniform_location 1
+
+#define GL_MAX_UNIFORM_LOCATIONS 0x826E
+
+#define GLEW_ARB_explicit_uniform_location GLEW_GET_VAR(__GLEW_ARB_explicit_uniform_location)
+
+#endif /* GL_ARB_explicit_uniform_location */
+
+/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */
+
+#ifndef GL_ARB_fragment_coord_conventions
+#define GL_ARB_fragment_coord_conventions 1
+
+#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions)
+
+#endif /* GL_ARB_fragment_coord_conventions */
+
+/* --------------------- GL_ARB_fragment_layer_viewport -------------------- */
+
+#ifndef GL_ARB_fragment_layer_viewport
+#define GL_ARB_fragment_layer_viewport 1
+
+#define GLEW_ARB_fragment_layer_viewport GLEW_GET_VAR(__GLEW_ARB_fragment_layer_viewport)
+
+#endif /* GL_ARB_fragment_layer_viewport */
+
+/* ------------------------ GL_ARB_fragment_program ------------------------ */
+
+#ifndef GL_ARB_fragment_program
+#define GL_ARB_fragment_program 1
+
+#define GL_FRAGMENT_PROGRAM_ARB 0x8804
+#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
+#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
+#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
+#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
+#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
+#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
+#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
+#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
+#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
+#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
+#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
+#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
+#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
+
+#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program)
+
+#endif /* GL_ARB_fragment_program */
+
+/* --------------------- GL_ARB_fragment_program_shadow -------------------- */
+
+#ifndef GL_ARB_fragment_program_shadow
+#define GL_ARB_fragment_program_shadow 1
+
+#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow)
+
+#endif /* GL_ARB_fragment_program_shadow */
+
+/* ------------------------- GL_ARB_fragment_shader ------------------------ */
+
+#ifndef GL_ARB_fragment_shader
+#define GL_ARB_fragment_shader 1
+
+#define GL_FRAGMENT_SHADER_ARB 0x8B30
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
+
+#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader)
+
+#endif /* GL_ARB_fragment_shader */
+
+/* -------------------- GL_ARB_fragment_shader_interlock ------------------- */
+
+#ifndef GL_ARB_fragment_shader_interlock
+#define GL_ARB_fragment_shader_interlock 1
+
+#define GLEW_ARB_fragment_shader_interlock GLEW_GET_VAR(__GLEW_ARB_fragment_shader_interlock)
+
+#endif /* GL_ARB_fragment_shader_interlock */
+
+/* ------------------- GL_ARB_framebuffer_no_attachments ------------------- */
+
+#ifndef GL_ARB_framebuffer_no_attachments
+#define GL_ARB_framebuffer_no_attachments 1
+
+#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
+#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
+#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
+#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
+#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315
+#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
+#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
+#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
+
+#define glFramebufferParameteri GLEW_GET_FUN(__glewFramebufferParameteri)
+#define glGetFramebufferParameteriv GLEW_GET_FUN(__glewGetFramebufferParameteriv)
+#define glGetNamedFramebufferParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferParameterivEXT)
+#define glNamedFramebufferParameteriEXT GLEW_GET_FUN(__glewNamedFramebufferParameteriEXT)
+
+#define GLEW_ARB_framebuffer_no_attachments GLEW_GET_VAR(__GLEW_ARB_framebuffer_no_attachments)
+
+#endif /* GL_ARB_framebuffer_no_attachments */
+
+/* ----------------------- GL_ARB_framebuffer_object ----------------------- */
+
+#ifndef GL_ARB_framebuffer_object
+#define GL_ARB_framebuffer_object 1
+
+#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
+#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
+#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
+#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
+#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
+#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
+#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
+#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
+#define GL_FRAMEBUFFER_DEFAULT 0x8218
+#define GL_FRAMEBUFFER_UNDEFINED 0x8219
+#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
+#define GL_INDEX 0x8222
+#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
+#define GL_DEPTH_STENCIL 0x84F9
+#define GL_UNSIGNED_INT_24_8 0x84FA
+#define GL_DEPTH24_STENCIL8 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE 0x88F1
+#define GL_UNSIGNED_NORMALIZED 0x8C17
+#define GL_SRGB 0x8C40
+#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_RENDERBUFFER_BINDING 0x8CA7
+#define GL_READ_FRAMEBUFFER 0x8CA8
+#define GL_DRAW_FRAMEBUFFER 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
+#define GL_RENDERBUFFER_SAMPLES 0x8CAB
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
+#define GL_COLOR_ATTACHMENT0 0x8CE0
+#define GL_COLOR_ATTACHMENT1 0x8CE1
+#define GL_COLOR_ATTACHMENT2 0x8CE2
+#define GL_COLOR_ATTACHMENT3 0x8CE3
+#define GL_COLOR_ATTACHMENT4 0x8CE4
+#define GL_COLOR_ATTACHMENT5 0x8CE5
+#define GL_COLOR_ATTACHMENT6 0x8CE6
+#define GL_COLOR_ATTACHMENT7 0x8CE7
+#define GL_COLOR_ATTACHMENT8 0x8CE8
+#define GL_COLOR_ATTACHMENT9 0x8CE9
+#define GL_COLOR_ATTACHMENT10 0x8CEA
+#define GL_COLOR_ATTACHMENT11 0x8CEB
+#define GL_COLOR_ATTACHMENT12 0x8CEC
+#define GL_COLOR_ATTACHMENT13 0x8CED
+#define GL_COLOR_ATTACHMENT14 0x8CEE
+#define GL_COLOR_ATTACHMENT15 0x8CEF
+#define GL_DEPTH_ATTACHMENT 0x8D00
+#define GL_STENCIL_ATTACHMENT 0x8D20
+#define GL_FRAMEBUFFER 0x8D40
+#define GL_RENDERBUFFER 0x8D41
+#define GL_RENDERBUFFER_WIDTH 0x8D42
+#define GL_RENDERBUFFER_HEIGHT 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
+#define GL_STENCIL_INDEX1 0x8D46
+#define GL_STENCIL_INDEX4 0x8D47
+#define GL_STENCIL_INDEX8 0x8D48
+#define GL_STENCIL_INDEX16 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
+#define GL_MAX_SAMPLES 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer);
+typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer)
+#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer)
+#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer)
+#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus)
+#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers)
+#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers)
+#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer)
+#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D)
+#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D)
+#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D)
+#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer)
+#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers)
+#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers)
+#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap)
+#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv)
+#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv)
+#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer)
+#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer)
+#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage)
+#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample)
+
+#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object)
+
+#endif /* GL_ARB_framebuffer_object */
+
+/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */
+
+#ifndef GL_ARB_framebuffer_sRGB
+#define GL_ARB_framebuffer_sRGB 1
+
+#define GL_FRAMEBUFFER_SRGB 0x8DB9
+
+#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB)
+
+#endif /* GL_ARB_framebuffer_sRGB */
+
+/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */
+
+#ifndef GL_ARB_geometry_shader4
+#define GL_ARB_geometry_shader4 1
+
+#define GL_LINES_ADJACENCY_ARB 0xA
+#define GL_LINE_STRIP_ADJACENCY_ARB 0xB
+#define GL_TRIANGLES_ADJACENCY_ARB 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD
+#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
+#define GL_GEOMETRY_SHADER_ARB 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
+
+#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB)
+#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB)
+#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB)
+#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB)
+
+#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4)
+
+#endif /* GL_ARB_geometry_shader4 */
+
+/* ----------------------- GL_ARB_get_program_binary ----------------------- */
+
+#ifndef GL_ARB_get_program_binary
+#define GL_ARB_get_program_binary 1
+
+#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
+#define GL_PROGRAM_BINARY_LENGTH 0x8741
+#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
+#define GL_PROGRAM_BINARY_FORMATS 0x87FF
+
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary);
+typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
+
+#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary)
+#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary)
+#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri)
+
+#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary)
+
+#endif /* GL_ARB_get_program_binary */
+
+/* ---------------------- GL_ARB_get_texture_sub_image --------------------- */
+
+#ifndef GL_ARB_get_texture_sub_image
+#define GL_ARB_get_texture_sub_image 1
+
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+
+#define glGetCompressedTextureSubImage GLEW_GET_FUN(__glewGetCompressedTextureSubImage)
+#define glGetTextureSubImage GLEW_GET_FUN(__glewGetTextureSubImage)
+
+#define GLEW_ARB_get_texture_sub_image GLEW_GET_VAR(__GLEW_ARB_get_texture_sub_image)
+
+#endif /* GL_ARB_get_texture_sub_image */
+
+/* ---------------------------- GL_ARB_gl_spirv ---------------------------- */
+
+#ifndef GL_ARB_gl_spirv
+#define GL_ARB_gl_spirv 1
+
+#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
+#define GL_SPIR_V_BINARY_ARB 0x9552
+
+typedef void (GLAPIENTRY * PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar* pEntryPoint, GLuint numSpecializationConstants, const GLuint* pConstantIndex, const GLuint* pConstantValue);
+
+#define glSpecializeShaderARB GLEW_GET_FUN(__glewSpecializeShaderARB)
+
+#define GLEW_ARB_gl_spirv GLEW_GET_VAR(__GLEW_ARB_gl_spirv)
+
+#endif /* GL_ARB_gl_spirv */
+
+/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */
+
+#ifndef GL_ARB_gpu_shader5
+#define GL_ARB_gpu_shader5 1
+
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+
+#define GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5)
+
+#endif /* GL_ARB_gpu_shader5 */
+
+/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */
+
+#ifndef GL_ARB_gpu_shader_fp64
+#define GL_ARB_gpu_shader_fp64 1
+
+#define GL_DOUBLE_MAT2 0x8F46
+#define GL_DOUBLE_MAT3 0x8F47
+#define GL_DOUBLE_MAT4 0x8F48
+#define GL_DOUBLE_MAT2x3 0x8F49
+#define GL_DOUBLE_MAT2x4 0x8F4A
+#define GL_DOUBLE_MAT3x2 0x8F4B
+#define GL_DOUBLE_MAT3x4 0x8F4C
+#define GL_DOUBLE_MAT4x2 0x8F4D
+#define GL_DOUBLE_MAT4x3 0x8F4E
+#define GL_DOUBLE_VEC2 0x8FFC
+#define GL_DOUBLE_VEC3 0x8FFD
+#define GL_DOUBLE_VEC4 0x8FFE
+
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+
+#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv)
+#define glUniform1d GLEW_GET_FUN(__glewUniform1d)
+#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv)
+#define glUniform2d GLEW_GET_FUN(__glewUniform2d)
+#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv)
+#define glUniform3d GLEW_GET_FUN(__glewUniform3d)
+#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv)
+#define glUniform4d GLEW_GET_FUN(__glewUniform4d)
+#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv)
+#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv)
+#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv)
+#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv)
+#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv)
+#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv)
+#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv)
+#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv)
+#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv)
+#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv)
+
+#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64)
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
+/* ------------------------ GL_ARB_gpu_shader_int64 ------------------------ */
+
+#ifndef GL_ARB_gpu_shader_int64
+#define GL_ARB_gpu_shader_int64 1
+
+#define GL_INT64_ARB 0x140E
+#define GL_UNSIGNED_INT64_ARB 0x140F
+#define GL_INT64_VEC2_ARB 0x8FE9
+#define GL_INT64_VEC3_ARB 0x8FEA
+#define GL_INT64_VEC4_ARB 0x8FEB
+#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7
+
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value);
+
+#define glGetUniformi64vARB GLEW_GET_FUN(__glewGetUniformi64vARB)
+#define glGetUniformui64vARB GLEW_GET_FUN(__glewGetUniformui64vARB)
+#define glGetnUniformi64vARB GLEW_GET_FUN(__glewGetnUniformi64vARB)
+#define glGetnUniformui64vARB GLEW_GET_FUN(__glewGetnUniformui64vARB)
+#define glProgramUniform1i64ARB GLEW_GET_FUN(__glewProgramUniform1i64ARB)
+#define glProgramUniform1i64vARB GLEW_GET_FUN(__glewProgramUniform1i64vARB)
+#define glProgramUniform1ui64ARB GLEW_GET_FUN(__glewProgramUniform1ui64ARB)
+#define glProgramUniform1ui64vARB GLEW_GET_FUN(__glewProgramUniform1ui64vARB)
+#define glProgramUniform2i64ARB GLEW_GET_FUN(__glewProgramUniform2i64ARB)
+#define glProgramUniform2i64vARB GLEW_GET_FUN(__glewProgramUniform2i64vARB)
+#define glProgramUniform2ui64ARB GLEW_GET_FUN(__glewProgramUniform2ui64ARB)
+#define glProgramUniform2ui64vARB GLEW_GET_FUN(__glewProgramUniform2ui64vARB)
+#define glProgramUniform3i64ARB GLEW_GET_FUN(__glewProgramUniform3i64ARB)
+#define glProgramUniform3i64vARB GLEW_GET_FUN(__glewProgramUniform3i64vARB)
+#define glProgramUniform3ui64ARB GLEW_GET_FUN(__glewProgramUniform3ui64ARB)
+#define glProgramUniform3ui64vARB GLEW_GET_FUN(__glewProgramUniform3ui64vARB)
+#define glProgramUniform4i64ARB GLEW_GET_FUN(__glewProgramUniform4i64ARB)
+#define glProgramUniform4i64vARB GLEW_GET_FUN(__glewProgramUniform4i64vARB)
+#define glProgramUniform4ui64ARB GLEW_GET_FUN(__glewProgramUniform4ui64ARB)
+#define glProgramUniform4ui64vARB GLEW_GET_FUN(__glewProgramUniform4ui64vARB)
+#define glUniform1i64ARB GLEW_GET_FUN(__glewUniform1i64ARB)
+#define glUniform1i64vARB GLEW_GET_FUN(__glewUniform1i64vARB)
+#define glUniform1ui64ARB GLEW_GET_FUN(__glewUniform1ui64ARB)
+#define glUniform1ui64vARB GLEW_GET_FUN(__glewUniform1ui64vARB)
+#define glUniform2i64ARB GLEW_GET_FUN(__glewUniform2i64ARB)
+#define glUniform2i64vARB GLEW_GET_FUN(__glewUniform2i64vARB)
+#define glUniform2ui64ARB GLEW_GET_FUN(__glewUniform2ui64ARB)
+#define glUniform2ui64vARB GLEW_GET_FUN(__glewUniform2ui64vARB)
+#define glUniform3i64ARB GLEW_GET_FUN(__glewUniform3i64ARB)
+#define glUniform3i64vARB GLEW_GET_FUN(__glewUniform3i64vARB)
+#define glUniform3ui64ARB GLEW_GET_FUN(__glewUniform3ui64ARB)
+#define glUniform3ui64vARB GLEW_GET_FUN(__glewUniform3ui64vARB)
+#define glUniform4i64ARB GLEW_GET_FUN(__glewUniform4i64ARB)
+#define glUniform4i64vARB GLEW_GET_FUN(__glewUniform4i64vARB)
+#define glUniform4ui64ARB GLEW_GET_FUN(__glewUniform4ui64ARB)
+#define glUniform4ui64vARB GLEW_GET_FUN(__glewUniform4ui64vARB)
+
+#define GLEW_ARB_gpu_shader_int64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_int64)
+
+#endif /* GL_ARB_gpu_shader_int64 */
+
+/* ------------------------ GL_ARB_half_float_pixel ------------------------ */
+
+#ifndef GL_ARB_half_float_pixel
+#define GL_ARB_half_float_pixel 1
+
+#define GL_HALF_FLOAT_ARB 0x140B
+
+#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel)
+
+#endif /* GL_ARB_half_float_pixel */
+
+/* ------------------------ GL_ARB_half_float_vertex ----------------------- */
+
+#ifndef GL_ARB_half_float_vertex
+#define GL_ARB_half_float_vertex 1
+
+#define GL_HALF_FLOAT 0x140B
+
+#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex)
+
+#endif /* GL_ARB_half_float_vertex */
+
+/* ----------------------------- GL_ARB_imaging ---------------------------- */
+
+#ifndef GL_ARB_imaging
+#define GL_ARB_imaging 1
+
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_BLEND_COLOR 0x8005
+#define GL_FUNC_ADD 0x8006
+#define GL_MIN 0x8007
+#define GL_MAX 0x8008
+#define GL_BLEND_EQUATION 0x8009
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#define GL_CONVOLUTION_1D 0x8010
+#define GL_CONVOLUTION_2D 0x8011
+#define GL_SEPARABLE_2D 0x8012
+#define GL_CONVOLUTION_BORDER_MODE 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
+#define GL_REDUCE 0x8016
+#define GL_CONVOLUTION_FORMAT 0x8017
+#define GL_CONVOLUTION_WIDTH 0x8018
+#define GL_CONVOLUTION_HEIGHT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+#define GL_HISTOGRAM 0x8024
+#define GL_PROXY_HISTOGRAM 0x8025
+#define GL_HISTOGRAM_WIDTH 0x8026
+#define GL_HISTOGRAM_FORMAT 0x8027
+#define GL_HISTOGRAM_RED_SIZE 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+#define GL_HISTOGRAM_SINK 0x802D
+#define GL_MINMAX 0x802E
+#define GL_MINMAX_FORMAT 0x802F
+#define GL_MINMAX_SINK 0x8030
+#define GL_TABLE_TOO_LARGE 0x8031
+#define GL_COLOR_MATRIX 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+#define GL_COLOR_TABLE 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+#define GL_PROXY_COLOR_TABLE 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_COLOR_TABLE_SCALE 0x80D6
+#define GL_COLOR_TABLE_BIAS 0x80D7
+#define GL_COLOR_TABLE_FORMAT 0x80D8
+#define GL_COLOR_TABLE_WIDTH 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+#define GL_IGNORE_BORDER 0x8150
+#define GL_CONSTANT_BORDER 0x8151
+#define GL_WRAP_BORDER 0x8152
+#define GL_REPLICATE_BORDER 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
+
+typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, void *values);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
+typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
+
+#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable)
+#define glColorTable GLEW_GET_FUN(__glewColorTable)
+#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv)
+#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv)
+#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D)
+#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D)
+#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf)
+#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv)
+#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri)
+#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv)
+#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable)
+#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable)
+#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D)
+#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D)
+#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable)
+#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv)
+#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv)
+#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter)
+#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv)
+#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv)
+#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram)
+#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv)
+#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv)
+#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax)
+#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv)
+#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv)
+#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter)
+#define glHistogram GLEW_GET_FUN(__glewHistogram)
+#define glMinmax GLEW_GET_FUN(__glewMinmax)
+#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram)
+#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax)
+#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D)
+
+#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging)
+
+#endif /* GL_ARB_imaging */
+
+/* ----------------------- GL_ARB_indirect_parameters ---------------------- */
+
+#ifndef GL_ARB_indirect_parameters
+#define GL_ARB_indirect_parameters 1
+
+#define GL_PARAMETER_BUFFER_ARB 0x80EE
+#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+
+#define glMultiDrawArraysIndirectCountARB GLEW_GET_FUN(__glewMultiDrawArraysIndirectCountARB)
+#define glMultiDrawElementsIndirectCountARB GLEW_GET_FUN(__glewMultiDrawElementsIndirectCountARB)
+
+#define GLEW_ARB_indirect_parameters GLEW_GET_VAR(__GLEW_ARB_indirect_parameters)
+
+#endif /* GL_ARB_indirect_parameters */
+
+/* ------------------------ GL_ARB_instanced_arrays ------------------------ */
+
+#ifndef GL_ARB_instanced_arrays
+#define GL_ARB_instanced_arrays 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
+
+#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB)
+#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB)
+#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB)
+
+#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays)
+
+#endif /* GL_ARB_instanced_arrays */
+
+/* ---------------------- GL_ARB_internalformat_query ---------------------- */
+
+#ifndef GL_ARB_internalformat_query
+#define GL_ARB_internalformat_query 1
+
+#define GL_NUM_SAMPLE_COUNTS 0x9380
+
+typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params);
+
+#define glGetInternalformativ GLEW_GET_FUN(__glewGetInternalformativ)
+
+#define GLEW_ARB_internalformat_query GLEW_GET_VAR(__GLEW_ARB_internalformat_query)
+
+#endif /* GL_ARB_internalformat_query */
+
+/* ---------------------- GL_ARB_internalformat_query2 --------------------- */
+
+#ifndef GL_ARB_internalformat_query2
+#define GL_ARB_internalformat_query2 1
+
+#define GL_INTERNALFORMAT_SUPPORTED 0x826F
+#define GL_INTERNALFORMAT_PREFERRED 0x8270
+#define GL_INTERNALFORMAT_RED_SIZE 0x8271
+#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272
+#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273
+#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
+#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
+#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
+#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277
+#define GL_INTERNALFORMAT_RED_TYPE 0x8278
+#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279
+#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A
+#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
+#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
+#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
+#define GL_MAX_WIDTH 0x827E
+#define GL_MAX_HEIGHT 0x827F
+#define GL_MAX_DEPTH 0x8280
+#define GL_MAX_LAYERS 0x8281
+#define GL_MAX_COMBINED_DIMENSIONS 0x8282
+#define GL_COLOR_COMPONENTS 0x8283
+#define GL_DEPTH_COMPONENTS 0x8284
+#define GL_STENCIL_COMPONENTS 0x8285
+#define GL_COLOR_RENDERABLE 0x8286
+#define GL_DEPTH_RENDERABLE 0x8287
+#define GL_STENCIL_RENDERABLE 0x8288
+#define GL_FRAMEBUFFER_RENDERABLE 0x8289
+#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
+#define GL_FRAMEBUFFER_BLEND 0x828B
+#define GL_READ_PIXELS 0x828C
+#define GL_READ_PIXELS_FORMAT 0x828D
+#define GL_READ_PIXELS_TYPE 0x828E
+#define GL_TEXTURE_IMAGE_FORMAT 0x828F
+#define GL_TEXTURE_IMAGE_TYPE 0x8290
+#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
+#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292
+#define GL_MIPMAP 0x8293
+#define GL_MANUAL_GENERATE_MIPMAP 0x8294
+#define GL_AUTO_GENERATE_MIPMAP 0x8295
+#define GL_COLOR_ENCODING 0x8296
+#define GL_SRGB_READ 0x8297
+#define GL_SRGB_WRITE 0x8298
+#define GL_SRGB_DECODE_ARB 0x8299
+#define GL_FILTER 0x829A
+#define GL_VERTEX_TEXTURE 0x829B
+#define GL_TESS_CONTROL_TEXTURE 0x829C
+#define GL_TESS_EVALUATION_TEXTURE 0x829D
+#define GL_GEOMETRY_TEXTURE 0x829E
+#define GL_FRAGMENT_TEXTURE 0x829F
+#define GL_COMPUTE_TEXTURE 0x82A0
+#define GL_TEXTURE_SHADOW 0x82A1
+#define GL_TEXTURE_GATHER 0x82A2
+#define GL_TEXTURE_GATHER_SHADOW 0x82A3
+#define GL_SHADER_IMAGE_LOAD 0x82A4
+#define GL_SHADER_IMAGE_STORE 0x82A5
+#define GL_SHADER_IMAGE_ATOMIC 0x82A6
+#define GL_IMAGE_TEXEL_SIZE 0x82A7
+#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
+#define GL_IMAGE_PIXEL_FORMAT 0x82A9
+#define GL_IMAGE_PIXEL_TYPE 0x82AA
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
+#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
+#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
+#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
+#define GL_CLEAR_BUFFER 0x82B4
+#define GL_TEXTURE_VIEW 0x82B5
+#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6
+#define GL_FULL_SUPPORT 0x82B7
+#define GL_CAVEAT_SUPPORT 0x82B8
+#define GL_IMAGE_CLASS_4_X_32 0x82B9
+#define GL_IMAGE_CLASS_2_X_32 0x82BA
+#define GL_IMAGE_CLASS_1_X_32 0x82BB
+#define GL_IMAGE_CLASS_4_X_16 0x82BC
+#define GL_IMAGE_CLASS_2_X_16 0x82BD
+#define GL_IMAGE_CLASS_1_X_16 0x82BE
+#define GL_IMAGE_CLASS_4_X_8 0x82BF
+#define GL_IMAGE_CLASS_2_X_8 0x82C0
+#define GL_IMAGE_CLASS_1_X_8 0x82C1
+#define GL_IMAGE_CLASS_11_11_10 0x82C2
+#define GL_IMAGE_CLASS_10_10_10_2 0x82C3
+#define GL_VIEW_CLASS_128_BITS 0x82C4
+#define GL_VIEW_CLASS_96_BITS 0x82C5
+#define GL_VIEW_CLASS_64_BITS 0x82C6
+#define GL_VIEW_CLASS_48_BITS 0x82C7
+#define GL_VIEW_CLASS_32_BITS 0x82C8
+#define GL_VIEW_CLASS_24_BITS 0x82C9
+#define GL_VIEW_CLASS_16_BITS 0x82CA
+#define GL_VIEW_CLASS_8_BITS 0x82CB
+#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
+#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
+#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
+#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
+#define GL_VIEW_CLASS_RGTC1_RED 0x82D0
+#define GL_VIEW_CLASS_RGTC2_RG 0x82D1
+#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2
+#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
+
+typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64* params);
+
+#define glGetInternalformati64v GLEW_GET_FUN(__glewGetInternalformati64v)
+
+#define GLEW_ARB_internalformat_query2 GLEW_GET_VAR(__GLEW_ARB_internalformat_query2)
+
+#endif /* GL_ARB_internalformat_query2 */
+
+/* ----------------------- GL_ARB_invalidate_subdata ----------------------- */
+
+#ifndef GL_ARB_invalidate_subdata
+#define GL_ARB_invalidate_subdata 1
+
+typedef void (GLAPIENTRY * PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY * PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments);
+typedef void (GLAPIENTRY * PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glInvalidateBufferData GLEW_GET_FUN(__glewInvalidateBufferData)
+#define glInvalidateBufferSubData GLEW_GET_FUN(__glewInvalidateBufferSubData)
+#define glInvalidateFramebuffer GLEW_GET_FUN(__glewInvalidateFramebuffer)
+#define glInvalidateSubFramebuffer GLEW_GET_FUN(__glewInvalidateSubFramebuffer)
+#define glInvalidateTexImage GLEW_GET_FUN(__glewInvalidateTexImage)
+#define glInvalidateTexSubImage GLEW_GET_FUN(__glewInvalidateTexSubImage)
+
+#define GLEW_ARB_invalidate_subdata GLEW_GET_VAR(__GLEW_ARB_invalidate_subdata)
+
+#endif /* GL_ARB_invalidate_subdata */
+
+/* ---------------------- GL_ARB_map_buffer_alignment ---------------------- */
+
+#ifndef GL_ARB_map_buffer_alignment
+#define GL_ARB_map_buffer_alignment 1
+
+#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
+
+#define GLEW_ARB_map_buffer_alignment GLEW_GET_VAR(__GLEW_ARB_map_buffer_alignment)
+
+#endif /* GL_ARB_map_buffer_alignment */
+
+/* ------------------------ GL_ARB_map_buffer_range ------------------------ */
+
+#ifndef GL_ARB_map_buffer_range
+#define GL_ARB_map_buffer_range 1
+
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
+#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
+#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
+#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
+
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
+typedef void * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+
+#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange)
+#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange)
+
+#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range)
+
+#endif /* GL_ARB_map_buffer_range */
+
+/* ------------------------- GL_ARB_matrix_palette ------------------------- */
+
+#ifndef GL_ARB_matrix_palette
+#define GL_ARB_matrix_palette 1
+
+#define GL_MATRIX_PALETTE_ARB 0x8840
+#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
+#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
+#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
+#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
+#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
+#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
+
+typedef void (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices);
+
+#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB)
+#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB)
+#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB)
+#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB)
+#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB)
+
+#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette)
+
+#endif /* GL_ARB_matrix_palette */
+
+/* --------------------------- GL_ARB_multi_bind --------------------------- */
+
+#ifndef GL_ARB_multi_bind
+#define GL_ARB_multi_bind 1
+
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
+typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint* textures);
+typedef void (GLAPIENTRY * PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint* samplers);
+typedef void (GLAPIENTRY * PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint* textures);
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides);
+
+#define glBindBuffersBase GLEW_GET_FUN(__glewBindBuffersBase)
+#define glBindBuffersRange GLEW_GET_FUN(__glewBindBuffersRange)
+#define glBindImageTextures GLEW_GET_FUN(__glewBindImageTextures)
+#define glBindSamplers GLEW_GET_FUN(__glewBindSamplers)
+#define glBindTextures GLEW_GET_FUN(__glewBindTextures)
+#define glBindVertexBuffers GLEW_GET_FUN(__glewBindVertexBuffers)
+
+#define GLEW_ARB_multi_bind GLEW_GET_VAR(__GLEW_ARB_multi_bind)
+
+#endif /* GL_ARB_multi_bind */
+
+/* ----------------------- GL_ARB_multi_draw_indirect ---------------------- */
+
+#ifndef GL_ARB_multi_draw_indirect
+#define GL_ARB_multi_draw_indirect 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
+
+#define glMultiDrawArraysIndirect GLEW_GET_FUN(__glewMultiDrawArraysIndirect)
+#define glMultiDrawElementsIndirect GLEW_GET_FUN(__glewMultiDrawElementsIndirect)
+
+#define GLEW_ARB_multi_draw_indirect GLEW_GET_VAR(__GLEW_ARB_multi_draw_indirect)
+
+#endif /* GL_ARB_multi_draw_indirect */
+
+/* --------------------------- GL_ARB_multisample -------------------------- */
+
+#ifndef GL_ARB_multisample
+#define GL_ARB_multisample 1
+
+#define GL_MULTISAMPLE_ARB 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
+#define GL_SAMPLE_COVERAGE_ARB 0x80A0
+#define GL_SAMPLE_BUFFERS_ARB 0x80A8
+#define GL_SAMPLES_ARB 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
+#define GL_MULTISAMPLE_BIT_ARB 0x20000000
+
+typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
+
+#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB)
+
+#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample)
+
+#endif /* GL_ARB_multisample */
+
+/* -------------------------- GL_ARB_multitexture -------------------------- */
+
+#ifndef GL_ARB_multitexture
+#define GL_ARB_multitexture 1
+
+#define GL_TEXTURE0_ARB 0x84C0
+#define GL_TEXTURE1_ARB 0x84C1
+#define GL_TEXTURE2_ARB 0x84C2
+#define GL_TEXTURE3_ARB 0x84C3
+#define GL_TEXTURE4_ARB 0x84C4
+#define GL_TEXTURE5_ARB 0x84C5
+#define GL_TEXTURE6_ARB 0x84C6
+#define GL_TEXTURE7_ARB 0x84C7
+#define GL_TEXTURE8_ARB 0x84C8
+#define GL_TEXTURE9_ARB 0x84C9
+#define GL_TEXTURE10_ARB 0x84CA
+#define GL_TEXTURE11_ARB 0x84CB
+#define GL_TEXTURE12_ARB 0x84CC
+#define GL_TEXTURE13_ARB 0x84CD
+#define GL_TEXTURE14_ARB 0x84CE
+#define GL_TEXTURE15_ARB 0x84CF
+#define GL_TEXTURE16_ARB 0x84D0
+#define GL_TEXTURE17_ARB 0x84D1
+#define GL_TEXTURE18_ARB 0x84D2
+#define GL_TEXTURE19_ARB 0x84D3
+#define GL_TEXTURE20_ARB 0x84D4
+#define GL_TEXTURE21_ARB 0x84D5
+#define GL_TEXTURE22_ARB 0x84D6
+#define GL_TEXTURE23_ARB 0x84D7
+#define GL_TEXTURE24_ARB 0x84D8
+#define GL_TEXTURE25_ARB 0x84D9
+#define GL_TEXTURE26_ARB 0x84DA
+#define GL_TEXTURE27_ARB 0x84DB
+#define GL_TEXTURE28_ARB 0x84DC
+#define GL_TEXTURE29_ARB 0x84DD
+#define GL_TEXTURE30_ARB 0x84DE
+#define GL_TEXTURE31_ARB 0x84DF
+#define GL_ACTIVE_TEXTURE_ARB 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
+
+typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
+
+#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB)
+#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB)
+#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB)
+#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB)
+#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB)
+#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB)
+#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB)
+#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB)
+#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB)
+#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB)
+#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB)
+#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB)
+#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB)
+#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB)
+#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB)
+#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB)
+#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB)
+#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB)
+#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB)
+#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB)
+#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB)
+#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB)
+#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB)
+#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB)
+#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB)
+#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB)
+#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB)
+#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB)
+#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB)
+#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB)
+#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB)
+#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB)
+#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB)
+#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB)
+
+#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture)
+
+#endif /* GL_ARB_multitexture */
+
+/* ------------------------- GL_ARB_occlusion_query ------------------------ */
+
+#ifndef GL_ARB_occlusion_query
+#define GL_ARB_occlusion_query 1
+
+#define GL_QUERY_COUNTER_BITS_ARB 0x8864
+#define GL_CURRENT_QUERY_ARB 0x8865
+#define GL_QUERY_RESULT_ARB 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
+#define GL_SAMPLES_PASSED_ARB 0x8914
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id);
+
+#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB)
+#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB)
+#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB)
+#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB)
+#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB)
+#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB)
+#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB)
+#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB)
+
+#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query)
+
+#endif /* GL_ARB_occlusion_query */
+
+/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */
+
+#ifndef GL_ARB_occlusion_query2
+#define GL_ARB_occlusion_query2 1
+
+#define GL_ANY_SAMPLES_PASSED 0x8C2F
+
+#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2)
+
+#endif /* GL_ARB_occlusion_query2 */
+
+/* --------------------- GL_ARB_parallel_shader_compile -------------------- */
+
+#ifndef GL_ARB_parallel_shader_compile
+#define GL_ARB_parallel_shader_compile 1
+
+#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
+#define GL_COMPLETION_STATUS_ARB 0x91B1
+
+typedef void (GLAPIENTRY * PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count);
+
+#define glMaxShaderCompilerThreadsARB GLEW_GET_FUN(__glewMaxShaderCompilerThreadsARB)
+
+#define GLEW_ARB_parallel_shader_compile GLEW_GET_VAR(__GLEW_ARB_parallel_shader_compile)
+
+#endif /* GL_ARB_parallel_shader_compile */
+
+/* -------------------- GL_ARB_pipeline_statistics_query ------------------- */
+
+#ifndef GL_ARB_pipeline_statistics_query
+#define GL_ARB_pipeline_statistics_query 1
+
+#define GL_VERTICES_SUBMITTED_ARB 0x82EE
+#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF
+#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0
+#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3
+#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4
+#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5
+#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6
+#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+
+#define GLEW_ARB_pipeline_statistics_query GLEW_GET_VAR(__GLEW_ARB_pipeline_statistics_query)
+
+#endif /* GL_ARB_pipeline_statistics_query */
+
+/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_ARB_pixel_buffer_object 1
+
+#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
+
+#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object)
+
+#endif /* GL_ARB_pixel_buffer_object */
+
+/* ------------------------ GL_ARB_point_parameters ------------------------ */
+
+#ifndef GL_ARB_point_parameters
+#define GL_ARB_point_parameters 1
+
+#define GL_POINT_SIZE_MIN_ARB 0x8126
+#define GL_POINT_SIZE_MAX_ARB 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
+#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params);
+
+#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB)
+#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB)
+
+#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters)
+
+#endif /* GL_ARB_point_parameters */
+
+/* -------------------------- GL_ARB_point_sprite -------------------------- */
+
+#ifndef GL_ARB_point_sprite
+#define GL_ARB_point_sprite 1
+
+#define GL_POINT_SPRITE_ARB 0x8861
+#define GL_COORD_REPLACE_ARB 0x8862
+
+#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite)
+
+#endif /* GL_ARB_point_sprite */
+
+/* ---------------------- GL_ARB_polygon_offset_clamp ---------------------- */
+
+#ifndef GL_ARB_polygon_offset_clamp
+#define GL_ARB_polygon_offset_clamp 1
+
+#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
+
+typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
+
+#define glPolygonOffsetClamp GLEW_GET_FUN(__glewPolygonOffsetClamp)
+
+#define GLEW_ARB_polygon_offset_clamp GLEW_GET_VAR(__GLEW_ARB_polygon_offset_clamp)
+
+#endif /* GL_ARB_polygon_offset_clamp */
+
+/* ----------------------- GL_ARB_post_depth_coverage ---------------------- */
+
+#ifndef GL_ARB_post_depth_coverage
+#define GL_ARB_post_depth_coverage 1
+
+#define GLEW_ARB_post_depth_coverage GLEW_GET_VAR(__GLEW_ARB_post_depth_coverage)
+
+#endif /* GL_ARB_post_depth_coverage */
+
+/* --------------------- GL_ARB_program_interface_query -------------------- */
+
+#ifndef GL_ARB_program_interface_query
+#define GL_ARB_program_interface_query 1
+
+#define GL_UNIFORM 0x92E1
+#define GL_UNIFORM_BLOCK 0x92E2
+#define GL_PROGRAM_INPUT 0x92E3
+#define GL_PROGRAM_OUTPUT 0x92E4
+#define GL_BUFFER_VARIABLE 0x92E5
+#define GL_SHADER_STORAGE_BLOCK 0x92E6
+#define GL_IS_PER_PATCH 0x92E7
+#define GL_VERTEX_SUBROUTINE 0x92E8
+#define GL_TESS_CONTROL_SUBROUTINE 0x92E9
+#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
+#define GL_GEOMETRY_SUBROUTINE 0x92EB
+#define GL_FRAGMENT_SUBROUTINE 0x92EC
+#define GL_COMPUTE_SUBROUTINE 0x92ED
+#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
+#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
+#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
+#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
+#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
+#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
+#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
+#define GL_ACTIVE_RESOURCES 0x92F5
+#define GL_MAX_NAME_LENGTH 0x92F6
+#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
+#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
+#define GL_NAME_LENGTH 0x92F9
+#define GL_TYPE 0x92FA
+#define GL_ARRAY_SIZE 0x92FB
+#define GL_OFFSET 0x92FC
+#define GL_BLOCK_INDEX 0x92FD
+#define GL_ARRAY_STRIDE 0x92FE
+#define GL_MATRIX_STRIDE 0x92FF
+#define GL_IS_ROW_MAJOR 0x9300
+#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
+#define GL_BUFFER_BINDING 0x9302
+#define GL_BUFFER_DATA_SIZE 0x9303
+#define GL_NUM_ACTIVE_VARIABLES 0x9304
+#define GL_ACTIVE_VARIABLES 0x9305
+#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
+#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
+#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
+#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
+#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
+#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
+#define GL_LOCATION 0x930E
+#define GL_LOCATION_INDEX 0x930F
+
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint* params);
+typedef GLuint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar* name);
+typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar* name);
+typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params);
+
+#define glGetProgramInterfaceiv GLEW_GET_FUN(__glewGetProgramInterfaceiv)
+#define glGetProgramResourceIndex GLEW_GET_FUN(__glewGetProgramResourceIndex)
+#define glGetProgramResourceLocation GLEW_GET_FUN(__glewGetProgramResourceLocation)
+#define glGetProgramResourceLocationIndex GLEW_GET_FUN(__glewGetProgramResourceLocationIndex)
+#define glGetProgramResourceName GLEW_GET_FUN(__glewGetProgramResourceName)
+#define glGetProgramResourceiv GLEW_GET_FUN(__glewGetProgramResourceiv)
+
+#define GLEW_ARB_program_interface_query GLEW_GET_VAR(__GLEW_ARB_program_interface_query)
+
+#endif /* GL_ARB_program_interface_query */
+
+/* ------------------------ GL_ARB_provoking_vertex ------------------------ */
+
+#ifndef GL_ARB_provoking_vertex
+#define GL_ARB_provoking_vertex 1
+
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
+#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION 0x8E4E
+#define GL_PROVOKING_VERTEX 0x8E4F
+
+typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
+
+#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex)
+
+#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex)
+
+#endif /* GL_ARB_provoking_vertex */
+
+/* ----------------------- GL_ARB_query_buffer_object ---------------------- */
+
+#ifndef GL_ARB_query_buffer_object
+#define GL_ARB_query_buffer_object 1
+
+#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
+#define GL_QUERY_BUFFER 0x9192
+#define GL_QUERY_BUFFER_BINDING 0x9193
+#define GL_QUERY_RESULT_NO_WAIT 0x9194
+
+#define GLEW_ARB_query_buffer_object GLEW_GET_VAR(__GLEW_ARB_query_buffer_object)
+
+#endif /* GL_ARB_query_buffer_object */
+
+/* ------------------ GL_ARB_robust_buffer_access_behavior ----------------- */
+
+#ifndef GL_ARB_robust_buffer_access_behavior
+#define GL_ARB_robust_buffer_access_behavior 1
+
+#define GLEW_ARB_robust_buffer_access_behavior GLEW_GET_VAR(__GLEW_ARB_robust_buffer_access_behavior)
+
+#endif /* GL_ARB_robust_buffer_access_behavior */
+
+/* --------------------------- GL_ARB_robustness --------------------------- */
+
+#ifndef GL_ARB_robustness
+#define GL_ARB_robustness 1
+
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
+#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GL_NO_RESET_NOTIFICATION_ARB 0x8261
+
+typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table);
+typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img);
+typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image);
+typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values);
+typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v);
+typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values);
+typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values);
+typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values);
+typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern);
+typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, void*column, void*span);
+typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data);
+
+#define glGetGraphicsResetStatusARB GLEW_GET_FUN(__glewGetGraphicsResetStatusARB)
+#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB)
+#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB)
+#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB)
+#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB)
+#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB)
+#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB)
+#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB)
+#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB)
+#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB)
+#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB)
+#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB)
+#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB)
+#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB)
+#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB)
+#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB)
+#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB)
+#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB)
+#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB)
+#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB)
+
+#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness)
+
+#endif /* GL_ARB_robustness */
+
+/* ---------------- GL_ARB_robustness_application_isolation ---------------- */
+
+#ifndef GL_ARB_robustness_application_isolation
+#define GL_ARB_robustness_application_isolation 1
+
+#define GLEW_ARB_robustness_application_isolation GLEW_GET_VAR(__GLEW_ARB_robustness_application_isolation)
+
+#endif /* GL_ARB_robustness_application_isolation */
+
+/* ---------------- GL_ARB_robustness_share_group_isolation ---------------- */
+
+#ifndef GL_ARB_robustness_share_group_isolation
+#define GL_ARB_robustness_share_group_isolation 1
+
+#define GLEW_ARB_robustness_share_group_isolation GLEW_GET_VAR(__GLEW_ARB_robustness_share_group_isolation)
+
+#endif /* GL_ARB_robustness_share_group_isolation */
+
+/* ------------------------ GL_ARB_sample_locations ------------------------ */
+
+#ifndef GL_ARB_sample_locations
+#define GL_ARB_sample_locations 1
+
+#define GL_SAMPLE_LOCATION_ARB 0x8E50
+#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341
+#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342
+#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343
+
+typedef void (GLAPIENTRY * PFNGLEVALUATEDEPTHVALUESARBPROC) (void);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
+
+#define glEvaluateDepthValuesARB GLEW_GET_FUN(__glewEvaluateDepthValuesARB)
+#define glFramebufferSampleLocationsfvARB GLEW_GET_FUN(__glewFramebufferSampleLocationsfvARB)
+#define glNamedFramebufferSampleLocationsfvARB GLEW_GET_FUN(__glewNamedFramebufferSampleLocationsfvARB)
+
+#define GLEW_ARB_sample_locations GLEW_GET_VAR(__GLEW_ARB_sample_locations)
+
+#endif /* GL_ARB_sample_locations */
+
+/* ------------------------- GL_ARB_sample_shading ------------------------- */
+
+#ifndef GL_ARB_sample_shading
+#define GL_ARB_sample_shading 1
+
+#define GL_SAMPLE_SHADING_ARB 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
+
+typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value);
+
+#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB)
+
+#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading)
+
+#endif /* GL_ARB_sample_shading */
+
+/* ------------------------- GL_ARB_sampler_objects ------------------------ */
+
+#ifndef GL_ARB_sampler_objects
+#define GL_ARB_sampler_objects 1
+
+#define GL_SAMPLER_BINDING 0x8919
+
+typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers);
+typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params);
+
+#define glBindSampler GLEW_GET_FUN(__glewBindSampler)
+#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers)
+#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers)
+#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv)
+#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv)
+#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv)
+#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv)
+#define glIsSampler GLEW_GET_FUN(__glewIsSampler)
+#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv)
+#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv)
+#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf)
+#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv)
+#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri)
+#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv)
+
+#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects)
+
+#endif /* GL_ARB_sampler_objects */
+
+/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */
+
+#ifndef GL_ARB_seamless_cube_map
+#define GL_ARB_seamless_cube_map 1
+
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+
+#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map)
+
+#endif /* GL_ARB_seamless_cube_map */
+
+/* ------------------ GL_ARB_seamless_cubemap_per_texture ------------------ */
+
+#ifndef GL_ARB_seamless_cubemap_per_texture
+#define GL_ARB_seamless_cubemap_per_texture 1
+
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+
+#define GLEW_ARB_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_ARB_seamless_cubemap_per_texture)
+
+#endif /* GL_ARB_seamless_cubemap_per_texture */
+
+/* --------------------- GL_ARB_separate_shader_objects -------------------- */
+
+#ifndef GL_ARB_separate_shader_objects
+#define GL_ARB_separate_shader_objects 1
+
+#define GL_VERTEX_SHADER_BIT 0x00000001
+#define GL_FRAGMENT_SHADER_BIT 0x00000002
+#define GL_GEOMETRY_SHADER_BIT 0x00000004
+#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
+#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
+#define GL_PROGRAM_SEPARABLE 0x8258
+#define GL_ACTIVE_PROGRAM 0x8259
+#define GL_PROGRAM_PIPELINE_BINDING 0x825A
+#define GL_ALL_SHADER_BITS 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
+typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar * const * strings);
+typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines);
+typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar *infoLog);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
+typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
+
+#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram)
+#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline)
+#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv)
+#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines)
+#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines)
+#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog)
+#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv)
+#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline)
+#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d)
+#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv)
+#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f)
+#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv)
+#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i)
+#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv)
+#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui)
+#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv)
+#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d)
+#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv)
+#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f)
+#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv)
+#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i)
+#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv)
+#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui)
+#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv)
+#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d)
+#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv)
+#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f)
+#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv)
+#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i)
+#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv)
+#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui)
+#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv)
+#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d)
+#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv)
+#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f)
+#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv)
+#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i)
+#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv)
+#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui)
+#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv)
+#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv)
+#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv)
+#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv)
+#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv)
+#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv)
+#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv)
+#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv)
+#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv)
+#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv)
+#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv)
+#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv)
+#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv)
+#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv)
+#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv)
+#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv)
+#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv)
+#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv)
+#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv)
+#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages)
+#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline)
+
+#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects)
+
+#endif /* GL_ARB_separate_shader_objects */
+
+/* -------------------- GL_ARB_shader_atomic_counter_ops ------------------- */
+
+#ifndef GL_ARB_shader_atomic_counter_ops
+#define GL_ARB_shader_atomic_counter_ops 1
+
+#define GLEW_ARB_shader_atomic_counter_ops GLEW_GET_VAR(__GLEW_ARB_shader_atomic_counter_ops)
+
+#endif /* GL_ARB_shader_atomic_counter_ops */
+
+/* --------------------- GL_ARB_shader_atomic_counters --------------------- */
+
+#ifndef GL_ARB_shader_atomic_counters
+#define GL_ARB_shader_atomic_counters 1
+
+#define GL_ATOMIC_COUNTER_BUFFER 0x92C0
+#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
+#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
+#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
+#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
+#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
+#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
+#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
+#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
+#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
+#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
+#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
+#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
+#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
+#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
+#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
+#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
+#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
+
+typedef void (GLAPIENTRY * PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params);
+
+#define glGetActiveAtomicCounterBufferiv GLEW_GET_FUN(__glewGetActiveAtomicCounterBufferiv)
+
+#define GLEW_ARB_shader_atomic_counters GLEW_GET_VAR(__GLEW_ARB_shader_atomic_counters)
+
+#endif /* GL_ARB_shader_atomic_counters */
+
+/* -------------------------- GL_ARB_shader_ballot ------------------------- */
+
+#ifndef GL_ARB_shader_ballot
+#define GL_ARB_shader_ballot 1
+
+#define GLEW_ARB_shader_ballot GLEW_GET_VAR(__GLEW_ARB_shader_ballot)
+
+#endif /* GL_ARB_shader_ballot */
+
+/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */
+
+#ifndef GL_ARB_shader_bit_encoding
+#define GL_ARB_shader_bit_encoding 1
+
+#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding)
+
+#endif /* GL_ARB_shader_bit_encoding */
+
+/* -------------------------- GL_ARB_shader_clock -------------------------- */
+
+#ifndef GL_ARB_shader_clock
+#define GL_ARB_shader_clock 1
+
+#define GLEW_ARB_shader_clock GLEW_GET_VAR(__GLEW_ARB_shader_clock)
+
+#endif /* GL_ARB_shader_clock */
+
+/* --------------------- GL_ARB_shader_draw_parameters --------------------- */
+
+#ifndef GL_ARB_shader_draw_parameters
+#define GL_ARB_shader_draw_parameters 1
+
+#define GLEW_ARB_shader_draw_parameters GLEW_GET_VAR(__GLEW_ARB_shader_draw_parameters)
+
+#endif /* GL_ARB_shader_draw_parameters */
+
+/* ------------------------ GL_ARB_shader_group_vote ----------------------- */
+
+#ifndef GL_ARB_shader_group_vote
+#define GL_ARB_shader_group_vote 1
+
+#define GLEW_ARB_shader_group_vote GLEW_GET_VAR(__GLEW_ARB_shader_group_vote)
+
+#endif /* GL_ARB_shader_group_vote */
+
+/* --------------------- GL_ARB_shader_image_load_store -------------------- */
+
+#ifndef GL_ARB_shader_image_load_store
+#define GL_ARB_shader_image_load_store 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
+#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
+#define GL_UNIFORM_BARRIER_BIT 0x00000004
+#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
+#define GL_COMMAND_BARRIER_BIT 0x00000040
+#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
+#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
+#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
+#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
+#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
+#define GL_MAX_IMAGE_UNITS 0x8F38
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
+#define GL_IMAGE_BINDING_NAME 0x8F3A
+#define GL_IMAGE_BINDING_LEVEL 0x8F3B
+#define GL_IMAGE_BINDING_LAYERED 0x8F3C
+#define GL_IMAGE_BINDING_LAYER 0x8F3D
+#define GL_IMAGE_BINDING_ACCESS 0x8F3E
+#define GL_IMAGE_1D 0x904C
+#define GL_IMAGE_2D 0x904D
+#define GL_IMAGE_3D 0x904E
+#define GL_IMAGE_2D_RECT 0x904F
+#define GL_IMAGE_CUBE 0x9050
+#define GL_IMAGE_BUFFER 0x9051
+#define GL_IMAGE_1D_ARRAY 0x9052
+#define GL_IMAGE_2D_ARRAY 0x9053
+#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
+#define GL_IMAGE_2D_MULTISAMPLE 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
+#define GL_INT_IMAGE_1D 0x9057
+#define GL_INT_IMAGE_2D 0x9058
+#define GL_INT_IMAGE_3D 0x9059
+#define GL_INT_IMAGE_2D_RECT 0x905A
+#define GL_INT_IMAGE_CUBE 0x905B
+#define GL_INT_IMAGE_BUFFER 0x905C
+#define GL_INT_IMAGE_1D_ARRAY 0x905D
+#define GL_INT_IMAGE_2D_ARRAY 0x905E
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
+#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
+#define GL_UNSIGNED_INT_IMAGE_1D 0x9062
+#define GL_UNSIGNED_INT_IMAGE_2D 0x9063
+#define GL_UNSIGNED_INT_IMAGE_3D 0x9064
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
+#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
+#define GL_MAX_IMAGE_SAMPLES 0x906D
+#define GL_IMAGE_BINDING_FORMAT 0x906E
+#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
+#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
+#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
+#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
+#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
+#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
+#define GL_ALL_BARRIER_BITS 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
+typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
+
+#define glBindImageTexture GLEW_GET_FUN(__glewBindImageTexture)
+#define glMemoryBarrier GLEW_GET_FUN(__glewMemoryBarrier)
+
+#define GLEW_ARB_shader_image_load_store GLEW_GET_VAR(__GLEW_ARB_shader_image_load_store)
+
+#endif /* GL_ARB_shader_image_load_store */
+
+/* ------------------------ GL_ARB_shader_image_size ----------------------- */
+
+#ifndef GL_ARB_shader_image_size
+#define GL_ARB_shader_image_size 1
+
+#define GLEW_ARB_shader_image_size GLEW_GET_VAR(__GLEW_ARB_shader_image_size)
+
+#endif /* GL_ARB_shader_image_size */
+
+/* ------------------------- GL_ARB_shader_objects ------------------------- */
+
+#ifndef GL_ARB_shader_objects
+#define GL_ARB_shader_objects 1
+
+#define GL_PROGRAM_OBJECT_ARB 0x8B40
+#define GL_SHADER_OBJECT_ARB 0x8B48
+#define GL_OBJECT_TYPE_ARB 0x8B4E
+#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
+#define GL_FLOAT_VEC2_ARB 0x8B50
+#define GL_FLOAT_VEC3_ARB 0x8B51
+#define GL_FLOAT_VEC4_ARB 0x8B52
+#define GL_INT_VEC2_ARB 0x8B53
+#define GL_INT_VEC3_ARB 0x8B54
+#define GL_INT_VEC4_ARB 0x8B55
+#define GL_BOOL_ARB 0x8B56
+#define GL_BOOL_VEC2_ARB 0x8B57
+#define GL_BOOL_VEC3_ARB 0x8B58
+#define GL_BOOL_VEC4_ARB 0x8B59
+#define GL_FLOAT_MAT2_ARB 0x8B5A
+#define GL_FLOAT_MAT3_ARB 0x8B5B
+#define GL_FLOAT_MAT4_ARB 0x8B5C
+#define GL_SAMPLER_1D_ARB 0x8B5D
+#define GL_SAMPLER_2D_ARB 0x8B5E
+#define GL_SAMPLER_3D_ARB 0x8B5F
+#define GL_SAMPLER_CUBE_ARB 0x8B60
+#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
+#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
+#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
+#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
+#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
+#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
+#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
+#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
+#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
+#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
+
+typedef char GLcharARB;
+typedef unsigned int GLhandleARB;
+
+typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
+typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
+typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
+typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
+typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
+typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name);
+typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj);
+typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname);
+typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source);
+typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params);
+typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
+typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
+
+#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB)
+#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB)
+#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB)
+#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB)
+#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB)
+#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB)
+#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB)
+#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB)
+#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB)
+#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB)
+#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB)
+#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB)
+#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB)
+#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB)
+#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB)
+#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB)
+#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB)
+#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB)
+#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB)
+#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB)
+#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB)
+#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB)
+#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB)
+#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB)
+#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB)
+#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB)
+#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB)
+#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB)
+#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB)
+#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB)
+#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB)
+#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB)
+#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB)
+#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB)
+#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB)
+#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB)
+#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB)
+#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB)
+#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB)
+
+#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects)
+
+#endif /* GL_ARB_shader_objects */
+
+/* ------------------------ GL_ARB_shader_precision ------------------------ */
+
+#ifndef GL_ARB_shader_precision
+#define GL_ARB_shader_precision 1
+
+#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision)
+
+#endif /* GL_ARB_shader_precision */
+
+/* ---------------------- GL_ARB_shader_stencil_export --------------------- */
+
+#ifndef GL_ARB_shader_stencil_export
+#define GL_ARB_shader_stencil_export 1
+
+#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export)
+
+#endif /* GL_ARB_shader_stencil_export */
+
+/* ------------------ GL_ARB_shader_storage_buffer_object ------------------ */
+
+#ifndef GL_ARB_shader_storage_buffer_object
+#define GL_ARB_shader_storage_buffer_object 1
+
+#define GL_SHADER_STORAGE_BARRIER_BIT 0x2000
+#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
+#define GL_SHADER_STORAGE_BUFFER 0x90D2
+#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
+#define GL_SHADER_STORAGE_BUFFER_START 0x90D4
+#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
+#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
+#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
+#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
+#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
+#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
+#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
+#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
+
+typedef void (GLAPIENTRY * PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
+
+#define glShaderStorageBlockBinding GLEW_GET_FUN(__glewShaderStorageBlockBinding)
+
+#define GLEW_ARB_shader_storage_buffer_object GLEW_GET_VAR(__GLEW_ARB_shader_storage_buffer_object)
+
+#endif /* GL_ARB_shader_storage_buffer_object */
+
+/* ------------------------ GL_ARB_shader_subroutine ----------------------- */
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ARB_shader_subroutine 1
+
+#define GL_ACTIVE_SUBROUTINES 0x8DE5
+#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+#define GL_MAX_SUBROUTINES 0x8DE7
+#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
+
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values);
+typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar* name);
+typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices);
+
+#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName)
+#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName)
+#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv)
+#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv)
+#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex)
+#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation)
+#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv)
+#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv)
+
+#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine)
+
+#endif /* GL_ARB_shader_subroutine */
+
+/* ------------------ GL_ARB_shader_texture_image_samples ------------------ */
+
+#ifndef GL_ARB_shader_texture_image_samples
+#define GL_ARB_shader_texture_image_samples 1
+
+#define GLEW_ARB_shader_texture_image_samples GLEW_GET_VAR(__GLEW_ARB_shader_texture_image_samples)
+
+#endif /* GL_ARB_shader_texture_image_samples */
+
+/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */
+
+#ifndef GL_ARB_shader_texture_lod
+#define GL_ARB_shader_texture_lod 1
+
+#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod)
+
+#endif /* GL_ARB_shader_texture_lod */
+
+/* ------------------- GL_ARB_shader_viewport_layer_array ------------------ */
+
+#ifndef GL_ARB_shader_viewport_layer_array
+#define GL_ARB_shader_viewport_layer_array 1
+
+#define GLEW_ARB_shader_viewport_layer_array GLEW_GET_VAR(__GLEW_ARB_shader_viewport_layer_array)
+
+#endif /* GL_ARB_shader_viewport_layer_array */
+
+/* ---------------------- GL_ARB_shading_language_100 ---------------------- */
+
+#ifndef GL_ARB_shading_language_100
+#define GL_ARB_shading_language_100 1
+
+#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
+
+#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100)
+
+#endif /* GL_ARB_shading_language_100 */
+
+/* -------------------- GL_ARB_shading_language_420pack -------------------- */
+
+#ifndef GL_ARB_shading_language_420pack
+#define GL_ARB_shading_language_420pack 1
+
+#define GLEW_ARB_shading_language_420pack GLEW_GET_VAR(__GLEW_ARB_shading_language_420pack)
+
+#endif /* GL_ARB_shading_language_420pack */
+
+/* -------------------- GL_ARB_shading_language_include -------------------- */
+
+#ifndef GL_ARB_shading_language_include
+#define GL_ARB_shading_language_include 1
+
+#define GL_SHADER_INCLUDE_ARB 0x8DAE
+#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
+
+typedef void (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* const *path, const GLint *length);
+typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar* name, GLenum pname, GLint *params);
+typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar* name, GLint stringlen, const GLchar *string);
+
+#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB)
+#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB)
+#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB)
+#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB)
+#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB)
+#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB)
+
+#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include)
+
+#endif /* GL_ARB_shading_language_include */
+
+/* -------------------- GL_ARB_shading_language_packing -------------------- */
+
+#ifndef GL_ARB_shading_language_packing
+#define GL_ARB_shading_language_packing 1
+
+#define GLEW_ARB_shading_language_packing GLEW_GET_VAR(__GLEW_ARB_shading_language_packing)
+
+#endif /* GL_ARB_shading_language_packing */
+
+/* ----------------------------- GL_ARB_shadow ----------------------------- */
+
+#ifndef GL_ARB_shadow
+#define GL_ARB_shadow 1
+
+#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
+#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
+#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
+
+#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow)
+
+#endif /* GL_ARB_shadow */
+
+/* ------------------------- GL_ARB_shadow_ambient ------------------------- */
+
+#ifndef GL_ARB_shadow_ambient
+#define GL_ARB_shadow_ambient 1
+
+#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
+
+#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient)
+
+#endif /* GL_ARB_shadow_ambient */
+
+/* -------------------------- GL_ARB_sparse_buffer ------------------------- */
+
+#ifndef GL_ARB_sparse_buffer
+#define GL_ARB_sparse_buffer 1
+
+#define GL_SPARSE_STORAGE_BIT_ARB 0x0400
+#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
+
+typedef void (GLAPIENTRY * PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
+
+#define glBufferPageCommitmentARB GLEW_GET_FUN(__glewBufferPageCommitmentARB)
+
+#define GLEW_ARB_sparse_buffer GLEW_GET_VAR(__GLEW_ARB_sparse_buffer)
+
+#endif /* GL_ARB_sparse_buffer */
+
+/* ------------------------- GL_ARB_sparse_texture ------------------------- */
+
+#ifndef GL_ARB_sparse_texture
+#define GL_ARB_sparse_texture 1
+
+#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
+#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
+#define GL_TEXTURE_SPARSE_ARB 0x91A6
+#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
+#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
+#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
+#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA
+
+typedef void (GLAPIENTRY * PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+
+#define glTexPageCommitmentARB GLEW_GET_FUN(__glewTexPageCommitmentARB)
+
+#define GLEW_ARB_sparse_texture GLEW_GET_VAR(__GLEW_ARB_sparse_texture)
+
+#endif /* GL_ARB_sparse_texture */
+
+/* ------------------------- GL_ARB_sparse_texture2 ------------------------ */
+
+#ifndef GL_ARB_sparse_texture2
+#define GL_ARB_sparse_texture2 1
+
+#define GLEW_ARB_sparse_texture2 GLEW_GET_VAR(__GLEW_ARB_sparse_texture2)
+
+#endif /* GL_ARB_sparse_texture2 */
+
+/* ---------------------- GL_ARB_sparse_texture_clamp ---------------------- */
+
+#ifndef GL_ARB_sparse_texture_clamp
+#define GL_ARB_sparse_texture_clamp 1
+
+#define GLEW_ARB_sparse_texture_clamp GLEW_GET_VAR(__GLEW_ARB_sparse_texture_clamp)
+
+#endif /* GL_ARB_sparse_texture_clamp */
+
+/* ------------------------ GL_ARB_spirv_extensions ------------------------ */
+
+#ifndef GL_ARB_spirv_extensions
+#define GL_ARB_spirv_extensions 1
+
+#define GL_SPIR_V_EXTENSIONS 0x9553
+#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
+
+#define GLEW_ARB_spirv_extensions GLEW_GET_VAR(__GLEW_ARB_spirv_extensions)
+
+#endif /* GL_ARB_spirv_extensions */
+
+/* ------------------------ GL_ARB_stencil_texturing ----------------------- */
+
+#ifndef GL_ARB_stencil_texturing
+#define GL_ARB_stencil_texturing 1
+
+#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
+
+#define GLEW_ARB_stencil_texturing GLEW_GET_VAR(__GLEW_ARB_stencil_texturing)
+
+#endif /* GL_ARB_stencil_texturing */
+
+/* ------------------------------ GL_ARB_sync ------------------------------ */
+
+#ifndef GL_ARB_sync
+#define GL_ARB_sync 1
+
+#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
+#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
+#define GL_OBJECT_TYPE 0x9112
+#define GL_SYNC_CONDITION 0x9113
+#define GL_SYNC_STATUS 0x9114
+#define GL_SYNC_FLAGS 0x9115
+#define GL_SYNC_FENCE 0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
+#define GL_UNSIGNALED 0x9118
+#define GL_SIGNALED 0x9119
+#define GL_ALREADY_SIGNALED 0x911A
+#define GL_TIMEOUT_EXPIRED 0x911B
+#define GL_CONDITION_SATISFIED 0x911C
+#define GL_WAIT_FAILED 0x911D
+#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
+
+typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout);
+typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync);
+typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values);
+typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync);
+typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout);
+
+#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync)
+#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync)
+#define glFenceSync GLEW_GET_FUN(__glewFenceSync)
+#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v)
+#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv)
+#define glIsSync GLEW_GET_FUN(__glewIsSync)
+#define glWaitSync GLEW_GET_FUN(__glewWaitSync)
+
+#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync)
+
+#endif /* GL_ARB_sync */
+
+/* ----------------------- GL_ARB_tessellation_shader ---------------------- */
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_ARB_tessellation_shader 1
+
+#define GL_PATCHES 0xE
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+#define GL_PATCH_VERTICES 0x8E72
+#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
+#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
+#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
+#define GL_TESS_GEN_MODE 0x8E76
+#define GL_TESS_GEN_SPACING 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
+#define GL_TESS_GEN_POINT_MODE 0x8E79
+#define GL_ISOLINES 0x8E7A
+#define GL_FRACTIONAL_ODD 0x8E7B
+#define GL_FRACTIONAL_EVEN 0x8E7C
+#define GL_MAX_PATCH_VERTICES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+#define GL_TESS_EVALUATION_SHADER 0x8E87
+#define GL_TESS_CONTROL_SHADER 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+
+typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
+
+#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv)
+#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri)
+
+#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader)
+
+#endif /* GL_ARB_tessellation_shader */
+
+/* ------------------------- GL_ARB_texture_barrier ------------------------ */
+
+#ifndef GL_ARB_texture_barrier
+#define GL_ARB_texture_barrier 1
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERPROC) (void);
+
+#define glTextureBarrier GLEW_GET_FUN(__glewTextureBarrier)
+
+#define GLEW_ARB_texture_barrier GLEW_GET_VAR(__GLEW_ARB_texture_barrier)
+
+#endif /* GL_ARB_texture_barrier */
+
+/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */
+
+#ifndef GL_ARB_texture_border_clamp
+#define GL_ARB_texture_border_clamp 1
+
+#define GL_CLAMP_TO_BORDER_ARB 0x812D
+
+#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp)
+
+#endif /* GL_ARB_texture_border_clamp */
+
+/* ---------------------- GL_ARB_texture_buffer_object --------------------- */
+
+#ifndef GL_ARB_texture_buffer_object
+#define GL_ARB_texture_buffer_object 1
+
+#define GL_TEXTURE_BUFFER_ARB 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
+
+typedef void (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+
+#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB)
+
+#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object)
+
+#endif /* GL_ARB_texture_buffer_object */
+
+/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */
+
+#ifndef GL_ARB_texture_buffer_object_rgb32
+#define GL_ARB_texture_buffer_object_rgb32 1
+
+#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32)
+
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+
+/* ---------------------- GL_ARB_texture_buffer_range ---------------------- */
+
+#ifndef GL_ARB_texture_buffer_range
+#define GL_ARB_texture_buffer_range 1
+
+#define GL_TEXTURE_BUFFER_OFFSET 0x919D
+#define GL_TEXTURE_BUFFER_SIZE 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
+
+typedef void (GLAPIENTRY * PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+#define glTexBufferRange GLEW_GET_FUN(__glewTexBufferRange)
+#define glTextureBufferRangeEXT GLEW_GET_FUN(__glewTextureBufferRangeEXT)
+
+#define GLEW_ARB_texture_buffer_range GLEW_GET_VAR(__GLEW_ARB_texture_buffer_range)
+
+#endif /* GL_ARB_texture_buffer_range */
+
+/* ----------------------- GL_ARB_texture_compression ---------------------- */
+
+#ifndef GL_ARB_texture_compression
+#define GL_ARB_texture_compression 1
+
+#define GL_COMPRESSED_ALPHA_ARB 0x84E9
+#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
+#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
+#define GL_COMPRESSED_RGB_ARB 0x84ED
+#define GL_COMPRESSED_RGBA_ARB 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
+#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
+
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void *img);
+
+#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB)
+#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB)
+#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB)
+#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB)
+#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB)
+#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB)
+#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB)
+
+#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression)
+
+#endif /* GL_ARB_texture_compression */
+
+/* -------------------- GL_ARB_texture_compression_bptc -------------------- */
+
+#ifndef GL_ARB_texture_compression_bptc
+#define GL_ARB_texture_compression_bptc 1
+
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
+
+#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc)
+
+#endif /* GL_ARB_texture_compression_bptc */
+
+/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */
+
+#ifndef GL_ARB_texture_compression_rgtc
+#define GL_ARB_texture_compression_rgtc 1
+
+#define GL_COMPRESSED_RED_RGTC1 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
+#define GL_COMPRESSED_RG_RGTC2 0x8DBD
+#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
+
+#define GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc)
+
+#endif /* GL_ARB_texture_compression_rgtc */
+
+/* ------------------------ GL_ARB_texture_cube_map ------------------------ */
+
+#ifndef GL_ARB_texture_cube_map
+#define GL_ARB_texture_cube_map 1
+
+#define GL_NORMAL_MAP_ARB 0x8511
+#define GL_REFLECTION_MAP_ARB 0x8512
+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
+
+#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map)
+
+#endif /* GL_ARB_texture_cube_map */
+
+/* --------------------- GL_ARB_texture_cube_map_array --------------------- */
+
+#ifndef GL_ARB_texture_cube_map_array
+#define GL_ARB_texture_cube_map_array 1
+
+#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
+
+#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array)
+
+#endif /* GL_ARB_texture_cube_map_array */
+
+/* ------------------------- GL_ARB_texture_env_add ------------------------ */
+
+#ifndef GL_ARB_texture_env_add
+#define GL_ARB_texture_env_add 1
+
+#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add)
+
+#endif /* GL_ARB_texture_env_add */
+
+/* ----------------------- GL_ARB_texture_env_combine ---------------------- */
+
+#ifndef GL_ARB_texture_env_combine
+#define GL_ARB_texture_env_combine 1
+
+#define GL_SUBTRACT_ARB 0x84E7
+#define GL_COMBINE_ARB 0x8570
+#define GL_COMBINE_RGB_ARB 0x8571
+#define GL_COMBINE_ALPHA_ARB 0x8572
+#define GL_RGB_SCALE_ARB 0x8573
+#define GL_ADD_SIGNED_ARB 0x8574
+#define GL_INTERPOLATE_ARB 0x8575
+#define GL_CONSTANT_ARB 0x8576
+#define GL_PRIMARY_COLOR_ARB 0x8577
+#define GL_PREVIOUS_ARB 0x8578
+#define GL_SOURCE0_RGB_ARB 0x8580
+#define GL_SOURCE1_RGB_ARB 0x8581
+#define GL_SOURCE2_RGB_ARB 0x8582
+#define GL_SOURCE0_ALPHA_ARB 0x8588
+#define GL_SOURCE1_ALPHA_ARB 0x8589
+#define GL_SOURCE2_ALPHA_ARB 0x858A
+#define GL_OPERAND0_RGB_ARB 0x8590
+#define GL_OPERAND1_RGB_ARB 0x8591
+#define GL_OPERAND2_RGB_ARB 0x8592
+#define GL_OPERAND0_ALPHA_ARB 0x8598
+#define GL_OPERAND1_ALPHA_ARB 0x8599
+#define GL_OPERAND2_ALPHA_ARB 0x859A
+
+#define GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine)
+
+#endif /* GL_ARB_texture_env_combine */
+
+/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */
+
+#ifndef GL_ARB_texture_env_crossbar
+#define GL_ARB_texture_env_crossbar 1
+
+#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar)
+
+#endif /* GL_ARB_texture_env_crossbar */
+
+/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */
+
+#ifndef GL_ARB_texture_env_dot3
+#define GL_ARB_texture_env_dot3 1
+
+#define GL_DOT3_RGB_ARB 0x86AE
+#define GL_DOT3_RGBA_ARB 0x86AF
+
+#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3)
+
+#endif /* GL_ARB_texture_env_dot3 */
+
+/* ------------------- GL_ARB_texture_filter_anisotropic ------------------- */
+
+#ifndef GL_ARB_texture_filter_anisotropic
+#define GL_ARB_texture_filter_anisotropic 1
+
+#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
+
+#define GLEW_ARB_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_ARB_texture_filter_anisotropic)
+
+#endif /* GL_ARB_texture_filter_anisotropic */
+
+/* ---------------------- GL_ARB_texture_filter_minmax --------------------- */
+
+#ifndef GL_ARB_texture_filter_minmax
+#define GL_ARB_texture_filter_minmax 1
+
+#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366
+#define GL_WEIGHTED_AVERAGE_ARB 0x9367
+
+#define GLEW_ARB_texture_filter_minmax GLEW_GET_VAR(__GLEW_ARB_texture_filter_minmax)
+
+#endif /* GL_ARB_texture_filter_minmax */
+
+/* -------------------------- GL_ARB_texture_float ------------------------- */
+
+#ifndef GL_ARB_texture_float
+#define GL_ARB_texture_float 1
+
+#define GL_RGBA32F_ARB 0x8814
+#define GL_RGB32F_ARB 0x8815
+#define GL_ALPHA32F_ARB 0x8816
+#define GL_INTENSITY32F_ARB 0x8817
+#define GL_LUMINANCE32F_ARB 0x8818
+#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
+#define GL_RGBA16F_ARB 0x881A
+#define GL_RGB16F_ARB 0x881B
+#define GL_ALPHA16F_ARB 0x881C
+#define GL_INTENSITY16F_ARB 0x881D
+#define GL_LUMINANCE16F_ARB 0x881E
+#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
+#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
+#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
+#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
+#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
+#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
+#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
+
+#define GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float)
+
+#endif /* GL_ARB_texture_float */
+
+/* ------------------------- GL_ARB_texture_gather ------------------------- */
+
+#ifndef GL_ARB_texture_gather
+#define GL_ARB_texture_gather 1
+
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
+
+#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather)
+
+#endif /* GL_ARB_texture_gather */
+
+/* ------------------ GL_ARB_texture_mirror_clamp_to_edge ------------------ */
+
+#ifndef GL_ARB_texture_mirror_clamp_to_edge
+#define GL_ARB_texture_mirror_clamp_to_edge 1
+
+#define GL_MIRROR_CLAMP_TO_EDGE 0x8743
+
+#define GLEW_ARB_texture_mirror_clamp_to_edge GLEW_GET_VAR(__GLEW_ARB_texture_mirror_clamp_to_edge)
+
+#endif /* GL_ARB_texture_mirror_clamp_to_edge */
+
+/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */
+
+#ifndef GL_ARB_texture_mirrored_repeat
+#define GL_ARB_texture_mirrored_repeat 1
+
+#define GL_MIRRORED_REPEAT_ARB 0x8370
+
+#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat)
+
+#endif /* GL_ARB_texture_mirrored_repeat */
+
+/* ----------------------- GL_ARB_texture_multisample ---------------------- */
+
+#ifndef GL_ARB_texture_multisample
+#define GL_ARB_texture_multisample 1
+
+#define GL_SAMPLE_POSITION 0x8E50
+#define GL_SAMPLE_MASK 0x8E51
+#define GL_SAMPLE_MASK_VALUE 0x8E52
+#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
+#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
+#define GL_TEXTURE_SAMPLES 0x9106
+#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
+#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
+#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
+#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
+#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
+#define GL_MAX_INTEGER_SAMPLES 0x9110
+
+typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val);
+typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv)
+#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski)
+#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample)
+#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample)
+
+#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample)
+
+#endif /* GL_ARB_texture_multisample */
+
+/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */
+
+#ifndef GL_ARB_texture_non_power_of_two
+#define GL_ARB_texture_non_power_of_two 1
+
+#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two)
+
+#endif /* GL_ARB_texture_non_power_of_two */
+
+/* ---------------------- GL_ARB_texture_query_levels ---------------------- */
+
+#ifndef GL_ARB_texture_query_levels
+#define GL_ARB_texture_query_levels 1
+
+#define GLEW_ARB_texture_query_levels GLEW_GET_VAR(__GLEW_ARB_texture_query_levels)
+
+#endif /* GL_ARB_texture_query_levels */
+
+/* ------------------------ GL_ARB_texture_query_lod ----------------------- */
+
+#ifndef GL_ARB_texture_query_lod
+#define GL_ARB_texture_query_lod 1
+
+#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod)
+
+#endif /* GL_ARB_texture_query_lod */
+
+/* ------------------------ GL_ARB_texture_rectangle ----------------------- */
+
+#ifndef GL_ARB_texture_rectangle
+#define GL_ARB_texture_rectangle 1
+
+#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+
+#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle)
+
+#endif /* GL_ARB_texture_rectangle */
+
+/* --------------------------- GL_ARB_texture_rg --------------------------- */
+
+#ifndef GL_ARB_texture_rg
+#define GL_ARB_texture_rg 1
+
+#define GL_COMPRESSED_RED 0x8225
+#define GL_COMPRESSED_RG 0x8226
+#define GL_RG 0x8227
+#define GL_RG_INTEGER 0x8228
+#define GL_R8 0x8229
+#define GL_R16 0x822A
+#define GL_RG8 0x822B
+#define GL_RG16 0x822C
+#define GL_R16F 0x822D
+#define GL_R32F 0x822E
+#define GL_RG16F 0x822F
+#define GL_RG32F 0x8230
+#define GL_R8I 0x8231
+#define GL_R8UI 0x8232
+#define GL_R16I 0x8233
+#define GL_R16UI 0x8234
+#define GL_R32I 0x8235
+#define GL_R32UI 0x8236
+#define GL_RG8I 0x8237
+#define GL_RG8UI 0x8238
+#define GL_RG16I 0x8239
+#define GL_RG16UI 0x823A
+#define GL_RG32I 0x823B
+#define GL_RG32UI 0x823C
+
+#define GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg)
+
+#endif /* GL_ARB_texture_rg */
+
+/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */
+
+#ifndef GL_ARB_texture_rgb10_a2ui
+#define GL_ARB_texture_rgb10_a2ui 1
+
+#define GL_RGB10_A2UI 0x906F
+
+#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui)
+
+#endif /* GL_ARB_texture_rgb10_a2ui */
+
+/* ------------------------ GL_ARB_texture_stencil8 ------------------------ */
+
+#ifndef GL_ARB_texture_stencil8
+#define GL_ARB_texture_stencil8 1
+
+#define GL_STENCIL_INDEX 0x1901
+#define GL_STENCIL_INDEX8 0x8D48
+
+#define GLEW_ARB_texture_stencil8 GLEW_GET_VAR(__GLEW_ARB_texture_stencil8)
+
+#endif /* GL_ARB_texture_stencil8 */
+
+/* ------------------------- GL_ARB_texture_storage ------------------------ */
+
+#ifndef GL_ARB_texture_storage
+#define GL_ARB_texture_storage 1
+
+#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glTexStorage1D GLEW_GET_FUN(__glewTexStorage1D)
+#define glTexStorage2D GLEW_GET_FUN(__glewTexStorage2D)
+#define glTexStorage3D GLEW_GET_FUN(__glewTexStorage3D)
+
+#define GLEW_ARB_texture_storage GLEW_GET_VAR(__GLEW_ARB_texture_storage)
+
+#endif /* GL_ARB_texture_storage */
+
+/* ------------------- GL_ARB_texture_storage_multisample ------------------ */
+
+#ifndef GL_ARB_texture_storage_multisample
+#define GL_ARB_texture_storage_multisample 1
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+#define glTexStorage2DMultisample GLEW_GET_FUN(__glewTexStorage2DMultisample)
+#define glTexStorage3DMultisample GLEW_GET_FUN(__glewTexStorage3DMultisample)
+#define glTextureStorage2DMultisampleEXT GLEW_GET_FUN(__glewTextureStorage2DMultisampleEXT)
+#define glTextureStorage3DMultisampleEXT GLEW_GET_FUN(__glewTextureStorage3DMultisampleEXT)
+
+#define GLEW_ARB_texture_storage_multisample GLEW_GET_VAR(__GLEW_ARB_texture_storage_multisample)
+
+#endif /* GL_ARB_texture_storage_multisample */
+
+/* ------------------------- GL_ARB_texture_swizzle ------------------------ */
+
+#ifndef GL_ARB_texture_swizzle
+#define GL_ARB_texture_swizzle 1
+
+#define GL_TEXTURE_SWIZZLE_R 0x8E42
+#define GL_TEXTURE_SWIZZLE_G 0x8E43
+#define GL_TEXTURE_SWIZZLE_B 0x8E44
+#define GL_TEXTURE_SWIZZLE_A 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
+
+#define GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle)
+
+#endif /* GL_ARB_texture_swizzle */
+
+/* -------------------------- GL_ARB_texture_view -------------------------- */
+
+#ifndef GL_ARB_texture_view
+#define GL_ARB_texture_view 1
+
+#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+#define glTextureView GLEW_GET_FUN(__glewTextureView)
+
+#define GLEW_ARB_texture_view GLEW_GET_VAR(__GLEW_ARB_texture_view)
+
+#endif /* GL_ARB_texture_view */
+
+/* --------------------------- GL_ARB_timer_query -------------------------- */
+
+#ifndef GL_ARB_timer_query
+#define GL_ARB_timer_query 1
+
+#define GL_TIME_ELAPSED 0x88BF
+#define GL_TIMESTAMP 0x8E28
+
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
+
+#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v)
+#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v)
+#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter)
+
+#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query)
+
+#endif /* GL_ARB_timer_query */
+
+/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_ARB_transform_feedback2 1
+
+#define GL_TRANSFORM_FEEDBACK 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
+
+typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
+typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids);
+typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
+typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
+
+#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback)
+#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks)
+#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback)
+#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks)
+#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback)
+#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback)
+#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback)
+
+#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2)
+
+#endif /* GL_ARB_transform_feedback2 */
+
+/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_ARB_transform_feedback3 1
+
+#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
+typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params);
+
+#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed)
+#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream)
+#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed)
+#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv)
+
+#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3)
+
+#endif /* GL_ARB_transform_feedback3 */
+
+/* ------------------ GL_ARB_transform_feedback_instanced ------------------ */
+
+#ifndef GL_ARB_transform_feedback_instanced
+#define GL_ARB_transform_feedback_instanced 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount);
+
+#define glDrawTransformFeedbackInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackInstanced)
+#define glDrawTransformFeedbackStreamInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackStreamInstanced)
+
+#define GLEW_ARB_transform_feedback_instanced GLEW_GET_VAR(__GLEW_ARB_transform_feedback_instanced)
+
+#endif /* GL_ARB_transform_feedback_instanced */
+
+/* ---------------- GL_ARB_transform_feedback_overflow_query --------------- */
+
+#ifndef GL_ARB_transform_feedback_overflow_query
+#define GL_ARB_transform_feedback_overflow_query 1
+
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
+
+#define GLEW_ARB_transform_feedback_overflow_query GLEW_GET_VAR(__GLEW_ARB_transform_feedback_overflow_query)
+
+#endif /* GL_ARB_transform_feedback_overflow_query */
+
+/* ------------------------ GL_ARB_transpose_matrix ------------------------ */
+
+#ifndef GL_ARB_transpose_matrix
+#define GL_ARB_transpose_matrix 1
+
+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
+
+typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]);
+typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]);
+typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]);
+
+#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB)
+#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB)
+#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB)
+#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB)
+
+#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix)
+
+#endif /* GL_ARB_transpose_matrix */
+
+/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */
+
+#ifndef GL_ARB_uniform_buffer_object
+#define GL_ARB_uniform_buffer_object 1
+
+#define GL_UNIFORM_BUFFER 0x8A11
+#define GL_UNIFORM_BUFFER_BINDING 0x8A28
+#define GL_UNIFORM_BUFFER_START 0x8A29
+#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
+#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
+#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
+#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
+#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
+#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
+#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
+#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
+#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
+#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
+#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
+#define GL_UNIFORM_TYPE 0x8A37
+#define GL_UNIFORM_SIZE 0x8A38
+#define GL_UNIFORM_NAME_LENGTH 0x8A39
+#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
+#define GL_UNIFORM_OFFSET 0x8A3B
+#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
+#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
+#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
+#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
+#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
+#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
+#define GL_INVALID_INDEX 0xFFFFFFFFu
+
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data);
+typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar* uniformBlockName);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const * uniformNames, GLuint* uniformIndices);
+typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+
+#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase)
+#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange)
+#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName)
+#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv)
+#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName)
+#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv)
+#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v)
+#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex)
+#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices)
+#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding)
+
+#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object)
+
+#endif /* GL_ARB_uniform_buffer_object */
+
+/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */
+
+#ifndef GL_ARB_vertex_array_bgra
+#define GL_ARB_vertex_array_bgra 1
+
+#define GL_BGRA 0x80E1
+
+#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra)
+
+#endif /* GL_ARB_vertex_array_bgra */
+
+/* ----------------------- GL_ARB_vertex_array_object ---------------------- */
+
+#ifndef GL_ARB_vertex_array_object
+#define GL_ARB_vertex_array_object 1
+
+#define GL_VERTEX_ARRAY_BINDING 0x85B5
+
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array);
+
+#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray)
+#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays)
+#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays)
+#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray)
+
+#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object)
+
+#endif /* GL_ARB_vertex_array_object */
+
+/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */
+
+#ifndef GL_ARB_vertex_attrib_64bit
+#define GL_ARB_vertex_attrib_64bit 1
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer);
+
+#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv)
+#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d)
+#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv)
+#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d)
+#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv)
+#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d)
+#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv)
+#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d)
+#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv)
+#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer)
+
+#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit)
+
+#endif /* GL_ARB_vertex_attrib_64bit */
+
+/* ---------------------- GL_ARB_vertex_attrib_binding --------------------- */
+
+#ifndef GL_ARB_vertex_attrib_binding
+#define GL_ARB_vertex_attrib_binding 1
+
+#define GL_VERTEX_ATTRIB_BINDING 0x82D4
+#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
+#define GL_VERTEX_BINDING_DIVISOR 0x82D6
+#define GL_VERTEX_BINDING_OFFSET 0x82D7
+#define GL_VERTEX_BINDING_STRIDE 0x82D8
+#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
+#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
+#define GL_VERTEX_BINDING_BUFFER 0x8F4F
+
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY * PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
+
+#define glBindVertexBuffer GLEW_GET_FUN(__glewBindVertexBuffer)
+#define glVertexArrayBindVertexBufferEXT GLEW_GET_FUN(__glewVertexArrayBindVertexBufferEXT)
+#define glVertexArrayVertexAttribBindingEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribBindingEXT)
+#define glVertexArrayVertexAttribFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribFormatEXT)
+#define glVertexArrayVertexAttribIFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIFormatEXT)
+#define glVertexArrayVertexAttribLFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLFormatEXT)
+#define glVertexArrayVertexBindingDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexBindingDivisorEXT)
+#define glVertexAttribBinding GLEW_GET_FUN(__glewVertexAttribBinding)
+#define glVertexAttribFormat GLEW_GET_FUN(__glewVertexAttribFormat)
+#define glVertexAttribIFormat GLEW_GET_FUN(__glewVertexAttribIFormat)
+#define glVertexAttribLFormat GLEW_GET_FUN(__glewVertexAttribLFormat)
+#define glVertexBindingDivisor GLEW_GET_FUN(__glewVertexBindingDivisor)
+
+#define GLEW_ARB_vertex_attrib_binding GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_binding)
+
+#endif /* GL_ARB_vertex_attrib_binding */
+
+/* -------------------------- GL_ARB_vertex_blend -------------------------- */
+
+#ifndef GL_ARB_vertex_blend
+#define GL_ARB_vertex_blend 1
+
+#define GL_MODELVIEW0_ARB 0x1700
+#define GL_MODELVIEW1_ARB 0x850A
+#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
+#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
+#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
+#define GL_VERTEX_BLEND_ARB 0x86A7
+#define GL_CURRENT_WEIGHT_ARB 0x86A8
+#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
+#define GL_WEIGHT_ARRAY_ARB 0x86AD
+#define GL_MODELVIEW2_ARB 0x8722
+#define GL_MODELVIEW3_ARB 0x8723
+#define GL_MODELVIEW4_ARB 0x8724
+#define GL_MODELVIEW5_ARB 0x8725
+#define GL_MODELVIEW6_ARB 0x8726
+#define GL_MODELVIEW7_ARB 0x8727
+#define GL_MODELVIEW8_ARB 0x8728
+#define GL_MODELVIEW9_ARB 0x8729
+#define GL_MODELVIEW10_ARB 0x872A
+#define GL_MODELVIEW11_ARB 0x872B
+#define GL_MODELVIEW12_ARB 0x872C
+#define GL_MODELVIEW13_ARB 0x872D
+#define GL_MODELVIEW14_ARB 0x872E
+#define GL_MODELVIEW15_ARB 0x872F
+#define GL_MODELVIEW16_ARB 0x8730
+#define GL_MODELVIEW17_ARB 0x8731
+#define GL_MODELVIEW18_ARB 0x8732
+#define GL_MODELVIEW19_ARB 0x8733
+#define GL_MODELVIEW20_ARB 0x8734
+#define GL_MODELVIEW21_ARB 0x8735
+#define GL_MODELVIEW22_ARB 0x8736
+#define GL_MODELVIEW23_ARB 0x8737
+#define GL_MODELVIEW24_ARB 0x8738
+#define GL_MODELVIEW25_ARB 0x8739
+#define GL_MODELVIEW26_ARB 0x873A
+#define GL_MODELVIEW27_ARB 0x873B
+#define GL_MODELVIEW28_ARB 0x873C
+#define GL_MODELVIEW29_ARB 0x873D
+#define GL_MODELVIEW30_ARB 0x873E
+#define GL_MODELVIEW31_ARB 0x873F
+
+typedef void (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count);
+typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights);
+typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights);
+
+#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB)
+#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB)
+#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB)
+#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB)
+#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB)
+#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB)
+#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB)
+#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB)
+#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB)
+#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB)
+
+#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend)
+
+#endif /* GL_ARB_vertex_blend */
+
+/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */
+
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_ARB_vertex_buffer_object 1
+
+#define GL_BUFFER_SIZE_ARB 0x8764
+#define GL_BUFFER_USAGE_ARB 0x8765
+#define GL_ARRAY_BUFFER_ARB 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
+#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
+#define GL_READ_ONLY_ARB 0x88B8
+#define GL_WRITE_ONLY_ARB 0x88B9
+#define GL_READ_WRITE_ARB 0x88BA
+#define GL_BUFFER_ACCESS_ARB 0x88BB
+#define GL_BUFFER_MAPPED_ARB 0x88BC
+#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
+#define GL_STREAM_DRAW_ARB 0x88E0
+#define GL_STREAM_READ_ARB 0x88E1
+#define GL_STREAM_COPY_ARB 0x88E2
+#define GL_STATIC_DRAW_ARB 0x88E4
+#define GL_STATIC_READ_ARB 0x88E5
+#define GL_STATIC_COPY_ARB 0x88E6
+#define GL_DYNAMIC_DRAW_ARB 0x88E8
+#define GL_DYNAMIC_READ_ARB 0x88E9
+#define GL_DYNAMIC_COPY_ARB 0x88EA
+
+typedef ptrdiff_t GLintptrARB;
+typedef ptrdiff_t GLsizeiptrARB;
+
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
+typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void** params);
+typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
+typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer);
+typedef void * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target);
+
+#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB)
+#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB)
+#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB)
+#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB)
+#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB)
+#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB)
+#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB)
+#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB)
+#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB)
+#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB)
+#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB)
+
+#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object)
+
+#endif /* GL_ARB_vertex_buffer_object */
+
+/* ------------------------- GL_ARB_vertex_program ------------------------- */
+
+#ifndef GL_ARB_vertex_program
+#define GL_ARB_vertex_program 1
+
+#define GL_COLOR_SUM_ARB 0x8458
+#define GL_VERTEX_PROGRAM_ARB 0x8620
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
+#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
+#define GL_PROGRAM_LENGTH_ARB 0x8627
+#define GL_PROGRAM_STRING_ARB 0x8628
+#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
+#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
+#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
+#define GL_CURRENT_MATRIX_ARB 0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
+#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
+#define GL_PROGRAM_BINDING_ARB 0x8677
+#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
+#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
+#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
+#define GL_PROGRAM_FORMAT_ARB 0x8876
+#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
+#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
+#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
+#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
+#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
+#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
+#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
+#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
+#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
+#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
+#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
+#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
+#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
+#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
+#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
+#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
+#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
+#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
+#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
+#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
+#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
+#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
+#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
+#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
+#define GL_MATRIX0_ARB 0x88C0
+#define GL_MATRIX1_ARB 0x88C1
+#define GL_MATRIX2_ARB 0x88C2
+#define GL_MATRIX3_ARB 0x88C3
+#define GL_MATRIX4_ARB 0x88C4
+#define GL_MATRIX5_ARB 0x88C5
+#define GL_MATRIX6_ARB 0x88C6
+#define GL_MATRIX7_ARB 0x88C7
+#define GL_MATRIX8_ARB 0x88C8
+#define GL_MATRIX9_ARB 0x88C9
+#define GL_MATRIX10_ARB 0x88CA
+#define GL_MATRIX11_ARB 0x88CB
+#define GL_MATRIX12_ARB 0x88CC
+#define GL_MATRIX13_ARB 0x88CD
+#define GL_MATRIX14_ARB 0x88CE
+#define GL_MATRIX15_ARB 0x88CF
+#define GL_MATRIX16_ARB 0x88D0
+#define GL_MATRIX17_ARB 0x88D1
+#define GL_MATRIX18_ARB 0x88D2
+#define GL_MATRIX19_ARB 0x88D3
+#define GL_MATRIX20_ARB 0x88D4
+#define GL_MATRIX21_ARB 0x88D5
+#define GL_MATRIX22_ARB 0x88D6
+#define GL_MATRIX23_ARB 0x88D7
+#define GL_MATRIX24_ARB 0x88D8
+#define GL_MATRIX25_ARB 0x88D9
+#define GL_MATRIX26_ARB 0x88DA
+#define GL_MATRIX27_ARB 0x88DB
+#define GL_MATRIX28_ARB 0x88DC
+#define GL_MATRIX29_ARB 0x88DD
+#define GL_MATRIX30_ARB 0x88DE
+#define GL_MATRIX31_ARB 0x88DF
+
+typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
+typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void** pointer);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
+
+#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB)
+#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB)
+#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB)
+#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB)
+#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB)
+#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB)
+#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB)
+#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB)
+#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB)
+#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB)
+#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB)
+#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB)
+#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB)
+#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB)
+#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB)
+#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB)
+#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB)
+#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB)
+#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB)
+#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB)
+#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB)
+#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB)
+#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB)
+#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB)
+#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB)
+#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB)
+#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB)
+#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB)
+#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB)
+#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB)
+#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB)
+#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB)
+#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB)
+#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB)
+#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB)
+#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB)
+#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB)
+#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB)
+#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB)
+#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB)
+#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB)
+#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB)
+#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB)
+#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB)
+#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB)
+#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB)
+#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB)
+#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB)
+#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB)
+#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB)
+#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB)
+#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB)
+#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB)
+#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB)
+#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB)
+#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB)
+#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB)
+#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB)
+#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB)
+#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB)
+#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB)
+#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB)
+
+#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program)
+
+#endif /* GL_ARB_vertex_program */
+
+/* -------------------------- GL_ARB_vertex_shader ------------------------- */
+
+#ifndef GL_ARB_vertex_shader
+#define GL_ARB_vertex_shader 1
+
+#define GL_VERTEX_SHADER_ARB 0x8B31
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
+#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
+#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
+#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
+
+typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name);
+typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name);
+
+#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB)
+#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB)
+#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB)
+
+#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader)
+
+#endif /* GL_ARB_vertex_shader */
+
+/* ------------------- GL_ARB_vertex_type_10f_11f_11f_rev ------------------ */
+
+#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
+#define GL_ARB_vertex_type_10f_11f_11f_rev 1
+
+#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
+
+#define GLEW_ARB_vertex_type_10f_11f_11f_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_10f_11f_11f_rev)
+
+#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
+
+/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+#define GL_ARB_vertex_type_2_10_10_10_rev 1
+
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+#define GL_INT_2_10_10_10_REV 0x8D9F
+
+typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value);
+
+#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui)
+#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv)
+#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui)
+#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv)
+#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui)
+#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv)
+#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui)
+#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv)
+#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui)
+#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv)
+#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui)
+#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv)
+#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui)
+#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv)
+#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui)
+#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv)
+#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui)
+#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv)
+#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui)
+#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv)
+#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui)
+#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv)
+#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui)
+#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv)
+#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui)
+#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv)
+#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui)
+#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv)
+#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui)
+#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv)
+#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui)
+#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv)
+#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui)
+#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv)
+#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui)
+#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv)
+#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui)
+#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv)
+
+#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev)
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
+/* ------------------------- GL_ARB_viewport_array ------------------------- */
+
+#ifndef GL_ARB_viewport_array
+#define GL_ARB_viewport_array 1
+
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_VIEWPORT 0x0BA2
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_MAX_VIEWPORTS 0x825B
+#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C
+#define GL_VIEWPORT_BOUNDS_RANGE 0x825D
+#define GL_LAYER_PROVOKING_VERTEX 0x825E
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
+#define GL_UNDEFINED_VERTEX 0x8260
+#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION 0x8E4E
+#define GL_PROVOKING_VERTEX 0x8E4F
+
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f);
+typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data);
+typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data);
+typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v);
+
+#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv)
+#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed)
+#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v)
+#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v)
+#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv)
+#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed)
+#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv)
+#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv)
+#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf)
+#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv)
+
+#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array)
+
+#endif /* GL_ARB_viewport_array */
+
+/* --------------------------- GL_ARB_window_pos --------------------------- */
+
+#ifndef GL_ARB_window_pos
+#define GL_ARB_window_pos 1
+
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p);
+
+#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB)
+#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB)
+#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB)
+#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB)
+#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB)
+#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB)
+#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB)
+#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB)
+#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB)
+#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB)
+#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB)
+#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB)
+#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB)
+#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB)
+#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB)
+#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB)
+
+#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos)
+
+#endif /* GL_ARB_window_pos */
+
+/* ----------------------- GL_ARM_mali_program_binary ---------------------- */
+
+#ifndef GL_ARM_mali_program_binary
+#define GL_ARM_mali_program_binary 1
+
+#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61
+
+#define GLEW_ARM_mali_program_binary GLEW_GET_VAR(__GLEW_ARM_mali_program_binary)
+
+#endif /* GL_ARM_mali_program_binary */
+
+/* ----------------------- GL_ARM_mali_shader_binary ----------------------- */
+
+#ifndef GL_ARM_mali_shader_binary
+#define GL_ARM_mali_shader_binary 1
+
+#define GL_MALI_SHADER_BINARY_ARM 0x8F60
+
+#define GLEW_ARM_mali_shader_binary GLEW_GET_VAR(__GLEW_ARM_mali_shader_binary)
+
+#endif /* GL_ARM_mali_shader_binary */
+
+/* ------------------------------ GL_ARM_rgba8 ----------------------------- */
+
+#ifndef GL_ARM_rgba8
+#define GL_ARM_rgba8 1
+
+#define GL_RGBA8_OES 0x8058
+
+#define GLEW_ARM_rgba8 GLEW_GET_VAR(__GLEW_ARM_rgba8)
+
+#endif /* GL_ARM_rgba8 */
+
+/* -------------------- GL_ARM_shader_framebuffer_fetch -------------------- */
+
+#ifndef GL_ARM_shader_framebuffer_fetch
+#define GL_ARM_shader_framebuffer_fetch 1
+
+#define GL_FETCH_PER_SAMPLE_ARM 0x8F65
+#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66
+
+#define GLEW_ARM_shader_framebuffer_fetch GLEW_GET_VAR(__GLEW_ARM_shader_framebuffer_fetch)
+
+#endif /* GL_ARM_shader_framebuffer_fetch */
+
+/* ------------- GL_ARM_shader_framebuffer_fetch_depth_stencil ------------- */
+
+#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil
+#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1
+
+#define GLEW_ARM_shader_framebuffer_fetch_depth_stencil GLEW_GET_VAR(__GLEW_ARM_shader_framebuffer_fetch_depth_stencil)
+
+#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */
+
+/* ---------------- GL_ARM_texture_unnormalized_coordinates ---------------- */
+
+#ifndef GL_ARM_texture_unnormalized_coordinates
+#define GL_ARM_texture_unnormalized_coordinates 1
+
+#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A
+
+#define GLEW_ARM_texture_unnormalized_coordinates GLEW_GET_VAR(__GLEW_ARM_texture_unnormalized_coordinates)
+
+#endif /* GL_ARM_texture_unnormalized_coordinates */
+
+/* ------------------------- GL_ATIX_point_sprites ------------------------- */
+
+#ifndef GL_ATIX_point_sprites
+#define GL_ATIX_point_sprites 1
+
+#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0
+#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1
+#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2
+#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3
+#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4
+#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5
+
+#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites)
+
+#endif /* GL_ATIX_point_sprites */
+
+/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */
+
+#ifndef GL_ATIX_texture_env_combine3
+#define GL_ATIX_texture_env_combine3 1
+
+#define GL_MODULATE_ADD_ATIX 0x8744
+#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745
+#define GL_MODULATE_SUBTRACT_ATIX 0x8746
+
+#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3)
+
+#endif /* GL_ATIX_texture_env_combine3 */
+
+/* ----------------------- GL_ATIX_texture_env_route ----------------------- */
+
+#ifndef GL_ATIX_texture_env_route
+#define GL_ATIX_texture_env_route 1
+
+#define GL_SECONDARY_COLOR_ATIX 0x8747
+#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748
+#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749
+
+#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route)
+
+#endif /* GL_ATIX_texture_env_route */
+
+/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */
+
+#ifndef GL_ATIX_vertex_shader_output_point_size
+#define GL_ATIX_vertex_shader_output_point_size 1
+
+#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E
+
+#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size)
+
+#endif /* GL_ATIX_vertex_shader_output_point_size */
+
+/* -------------------------- GL_ATI_draw_buffers -------------------------- */
+
+#ifndef GL_ATI_draw_buffers
+#define GL_ATI_draw_buffers 1
+
+#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
+#define GL_DRAW_BUFFER0_ATI 0x8825
+#define GL_DRAW_BUFFER1_ATI 0x8826
+#define GL_DRAW_BUFFER2_ATI 0x8827
+#define GL_DRAW_BUFFER3_ATI 0x8828
+#define GL_DRAW_BUFFER4_ATI 0x8829
+#define GL_DRAW_BUFFER5_ATI 0x882A
+#define GL_DRAW_BUFFER6_ATI 0x882B
+#define GL_DRAW_BUFFER7_ATI 0x882C
+#define GL_DRAW_BUFFER8_ATI 0x882D
+#define GL_DRAW_BUFFER9_ATI 0x882E
+#define GL_DRAW_BUFFER10_ATI 0x882F
+#define GL_DRAW_BUFFER11_ATI 0x8830
+#define GL_DRAW_BUFFER12_ATI 0x8831
+#define GL_DRAW_BUFFER13_ATI 0x8832
+#define GL_DRAW_BUFFER14_ATI 0x8833
+#define GL_DRAW_BUFFER15_ATI 0x8834
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs);
+
+#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI)
+
+#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers)
+
+#endif /* GL_ATI_draw_buffers */
+
+/* -------------------------- GL_ATI_element_array ------------------------- */
+
+#ifndef GL_ATI_element_array
+#define GL_ATI_element_array 1
+
+#define GL_ELEMENT_ARRAY_ATI 0x8768
+#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
+#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
+
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer);
+
+#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI)
+#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI)
+#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI)
+
+#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array)
+
+#endif /* GL_ATI_element_array */
+
+/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */
+
+#ifndef GL_ATI_envmap_bumpmap
+#define GL_ATI_envmap_bumpmap 1
+
+#define GL_BUMP_ROT_MATRIX_ATI 0x8775
+#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
+#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
+#define GL_BUMP_TEX_UNITS_ATI 0x8778
+#define GL_DUDV_ATI 0x8779
+#define GL_DU8DV8_ATI 0x877A
+#define GL_BUMP_ENVMAP_ATI 0x877B
+#define GL_BUMP_TARGET_ATI 0x877C
+
+typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
+typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
+typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
+typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
+
+#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI)
+#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI)
+#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI)
+#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI)
+
+#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap)
+
+#endif /* GL_ATI_envmap_bumpmap */
+
+/* ------------------------- GL_ATI_fragment_shader ------------------------ */
+
+#ifndef GL_ATI_fragment_shader
+#define GL_ATI_fragment_shader 1
+
+#define GL_2X_BIT_ATI 0x00000001
+#define GL_RED_BIT_ATI 0x00000001
+#define GL_4X_BIT_ATI 0x00000002
+#define GL_COMP_BIT_ATI 0x00000002
+#define GL_GREEN_BIT_ATI 0x00000002
+#define GL_8X_BIT_ATI 0x00000004
+#define GL_BLUE_BIT_ATI 0x00000004
+#define GL_NEGATE_BIT_ATI 0x00000004
+#define GL_BIAS_BIT_ATI 0x00000008
+#define GL_HALF_BIT_ATI 0x00000008
+#define GL_QUARTER_BIT_ATI 0x00000010
+#define GL_EIGHTH_BIT_ATI 0x00000020
+#define GL_SATURATE_BIT_ATI 0x00000040
+#define GL_FRAGMENT_SHADER_ATI 0x8920
+#define GL_REG_0_ATI 0x8921
+#define GL_REG_1_ATI 0x8922
+#define GL_REG_2_ATI 0x8923
+#define GL_REG_3_ATI 0x8924
+#define GL_REG_4_ATI 0x8925
+#define GL_REG_5_ATI 0x8926
+#define GL_CON_0_ATI 0x8941
+#define GL_CON_1_ATI 0x8942
+#define GL_CON_2_ATI 0x8943
+#define GL_CON_3_ATI 0x8944
+#define GL_CON_4_ATI 0x8945
+#define GL_CON_5_ATI 0x8946
+#define GL_CON_6_ATI 0x8947
+#define GL_CON_7_ATI 0x8948
+#define GL_MOV_ATI 0x8961
+#define GL_ADD_ATI 0x8963
+#define GL_MUL_ATI 0x8964
+#define GL_SUB_ATI 0x8965
+#define GL_DOT3_ATI 0x8966
+#define GL_DOT4_ATI 0x8967
+#define GL_MAD_ATI 0x8968
+#define GL_LERP_ATI 0x8969
+#define GL_CND_ATI 0x896A
+#define GL_CND0_ATI 0x896B
+#define GL_DOT2_ADD_ATI 0x896C
+#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
+#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+#define GL_NUM_PASSES_ATI 0x8970
+#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+#define GL_SWIZZLE_STR_ATI 0x8976
+#define GL_SWIZZLE_STQ_ATI 0x8977
+#define GL_SWIZZLE_STR_DR_ATI 0x8978
+#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
+#define GL_SWIZZLE_STRQ_ATI 0x897A
+#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
+
+typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
+typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void);
+typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
+typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
+typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
+typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value);
+
+#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI)
+#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI)
+#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI)
+#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI)
+#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI)
+#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI)
+#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI)
+#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI)
+#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI)
+#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI)
+#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI)
+#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI)
+#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI)
+#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI)
+
+#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader)
+
+#endif /* GL_ATI_fragment_shader */
+
+/* ------------------------ GL_ATI_map_object_buffer ----------------------- */
+
+#ifndef GL_ATI_map_object_buffer
+#define GL_ATI_map_object_buffer 1
+
+typedef void * (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
+
+#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI)
+#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI)
+
+#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer)
+
+#endif /* GL_ATI_map_object_buffer */
+
+/* ----------------------------- GL_ATI_meminfo ---------------------------- */
+
+#ifndef GL_ATI_meminfo
+#define GL_ATI_meminfo 1
+
+#define GL_VBO_FREE_MEMORY_ATI 0x87FB
+#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
+#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
+
+#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo)
+
+#endif /* GL_ATI_meminfo */
+
+/* -------------------------- GL_ATI_pn_triangles -------------------------- */
+
+#ifndef GL_ATI_pn_triangles
+#define GL_ATI_pn_triangles 1
+
+#define GL_PN_TRIANGLES_ATI 0x87F0
+#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
+#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
+#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
+#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
+#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
+#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
+#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
+#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
+
+typedef void (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
+
+#define glPNTrianglesfATI GLEW_GET_FUN(__glewPNTrianglesfATI)
+#define glPNTrianglesiATI GLEW_GET_FUN(__glewPNTrianglesiATI)
+
+#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles)
+
+#endif /* GL_ATI_pn_triangles */
+
+/* ------------------------ GL_ATI_separate_stencil ------------------------ */
+
+#ifndef GL_ATI_separate_stencil
+#define GL_ATI_separate_stencil 1
+
+#define GL_STENCIL_BACK_FUNC_ATI 0x8800
+#define GL_STENCIL_BACK_FAIL_ATI 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
+
+typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+
+#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI)
+#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI)
+
+#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil)
+
+#endif /* GL_ATI_separate_stencil */
+
+/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */
+
+#ifndef GL_ATI_shader_texture_lod
+#define GL_ATI_shader_texture_lod 1
+
+#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod)
+
+#endif /* GL_ATI_shader_texture_lod */
+
+/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */
+
+#ifndef GL_ATI_text_fragment_shader
+#define GL_ATI_text_fragment_shader 1
+
+#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
+
+#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader)
+
+#endif /* GL_ATI_text_fragment_shader */
+
+/* --------------------- GL_ATI_texture_compression_3dc -------------------- */
+
+#ifndef GL_ATI_texture_compression_3dc
+#define GL_ATI_texture_compression_3dc 1
+
+#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837
+
+#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc)
+
+#endif /* GL_ATI_texture_compression_3dc */
+
+/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */
+
+#ifndef GL_ATI_texture_env_combine3
+#define GL_ATI_texture_env_combine3 1
+
+#define GL_MODULATE_ADD_ATI 0x8744
+#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
+#define GL_MODULATE_SUBTRACT_ATI 0x8746
+
+#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3)
+
+#endif /* GL_ATI_texture_env_combine3 */
+
+/* -------------------------- GL_ATI_texture_float ------------------------- */
+
+#ifndef GL_ATI_texture_float
+#define GL_ATI_texture_float 1
+
+#define GL_RGBA_FLOAT32_ATI 0x8814
+#define GL_RGB_FLOAT32_ATI 0x8815
+#define GL_ALPHA_FLOAT32_ATI 0x8816
+#define GL_INTENSITY_FLOAT32_ATI 0x8817
+#define GL_LUMINANCE_FLOAT32_ATI 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
+#define GL_RGBA_FLOAT16_ATI 0x881A
+#define GL_RGB_FLOAT16_ATI 0x881B
+#define GL_ALPHA_FLOAT16_ATI 0x881C
+#define GL_INTENSITY_FLOAT16_ATI 0x881D
+#define GL_LUMINANCE_FLOAT16_ATI 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
+
+#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float)
+
+#endif /* GL_ATI_texture_float */
+
+/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */
+
+#ifndef GL_ATI_texture_mirror_once
+#define GL_ATI_texture_mirror_once 1
+
+#define GL_MIRROR_CLAMP_ATI 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
+
+#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once)
+
+#endif /* GL_ATI_texture_mirror_once */
+
+/* ----------------------- GL_ATI_vertex_array_object ---------------------- */
+
+#ifndef GL_ATI_vertex_array_object
+#define GL_ATI_vertex_array_object 1
+
+#define GL_STATIC_ATI 0x8760
+#define GL_DYNAMIC_ATI 0x8761
+#define GL_PRESERVE_ATI 0x8762
+#define GL_DISCARD_ATI 0x8763
+#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
+#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
+#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
+#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
+
+typedef void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
+typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
+typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+
+#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI)
+#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI)
+#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI)
+#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI)
+#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI)
+#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI)
+#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI)
+#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI)
+#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI)
+#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI)
+#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI)
+#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI)
+
+#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object)
+
+#endif /* GL_ATI_vertex_array_object */
+
+/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */
+
+#ifndef GL_ATI_vertex_attrib_array_object
+#define GL_ATI_vertex_attrib_array_object 1
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+
+#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI)
+#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI)
+#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI)
+
+#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object)
+
+#endif /* GL_ATI_vertex_attrib_array_object */
+
+/* ------------------------- GL_ATI_vertex_streams ------------------------- */
+
+#ifndef GL_ATI_vertex_streams
+#define GL_ATI_vertex_streams 1
+
+#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
+#define GL_VERTEX_SOURCE_ATI 0x876C
+#define GL_VERTEX_STREAM0_ATI 0x876D
+#define GL_VERTEX_STREAM1_ATI 0x876E
+#define GL_VERTEX_STREAM2_ATI 0x876F
+#define GL_VERTEX_STREAM3_ATI 0x8770
+#define GL_VERTEX_STREAM4_ATI 0x8771
+#define GL_VERTEX_STREAM5_ATI 0x8772
+#define GL_VERTEX_STREAM6_ATI 0x8773
+#define GL_VERTEX_STREAM7_ATI 0x8774
+
+typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
+
+#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI)
+#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI)
+#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI)
+#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI)
+#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI)
+#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI)
+#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI)
+#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI)
+#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI)
+#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI)
+#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI)
+#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI)
+#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI)
+#define glVertexStream1dATI GLEW_GET_FUN(__glewVertexStream1dATI)
+#define glVertexStream1dvATI GLEW_GET_FUN(__glewVertexStream1dvATI)
+#define glVertexStream1fATI GLEW_GET_FUN(__glewVertexStream1fATI)
+#define glVertexStream1fvATI GLEW_GET_FUN(__glewVertexStream1fvATI)
+#define glVertexStream1iATI GLEW_GET_FUN(__glewVertexStream1iATI)
+#define glVertexStream1ivATI GLEW_GET_FUN(__glewVertexStream1ivATI)
+#define glVertexStream1sATI GLEW_GET_FUN(__glewVertexStream1sATI)
+#define glVertexStream1svATI GLEW_GET_FUN(__glewVertexStream1svATI)
+#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI)
+#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI)
+#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI)
+#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI)
+#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI)
+#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI)
+#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI)
+#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI)
+#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI)
+#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI)
+#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI)
+#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI)
+#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI)
+#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI)
+#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI)
+#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI)
+#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI)
+#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI)
+#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI)
+#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI)
+#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI)
+#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI)
+#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI)
+#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI)
+
+#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams)
+
+#endif /* GL_ATI_vertex_streams */
+
+/* ------------------------- GL_DMP_program_binary ------------------------- */
+
+#ifndef GL_DMP_program_binary
+#define GL_DMP_program_binary 1
+
+#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251
+#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252
+#define GL_DMP_PROGRAM_BINARY_DMP 0x9253
+
+#define GLEW_DMP_program_binary GLEW_GET_VAR(__GLEW_DMP_program_binary)
+
+#endif /* GL_DMP_program_binary */
+
+/* -------------------------- GL_DMP_shader_binary ------------------------- */
+
+#ifndef GL_DMP_shader_binary
+#define GL_DMP_shader_binary 1
+
+#define GL_SHADER_BINARY_DMP 0x9250
+
+#define GLEW_DMP_shader_binary GLEW_GET_VAR(__GLEW_DMP_shader_binary)
+
+#endif /* GL_DMP_shader_binary */
+
+/* --------------------------- GL_EXT_422_pixels --------------------------- */
+
+#ifndef GL_EXT_422_pixels
+#define GL_EXT_422_pixels 1
+
+#define GL_422_EXT 0x80CC
+#define GL_422_REV_EXT 0x80CD
+#define GL_422_AVERAGE_EXT 0x80CE
+#define GL_422_REV_AVERAGE_EXT 0x80CF
+
+#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels)
+
+#endif /* GL_EXT_422_pixels */
+
+/* ---------------------------- GL_EXT_Cg_shader --------------------------- */
+
+#ifndef GL_EXT_Cg_shader
+#define GL_EXT_Cg_shader 1
+
+#define GL_CG_VERTEX_SHADER_EXT 0x890E
+#define GL_CG_FRAGMENT_SHADER_EXT 0x890F
+
+#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader)
+
+#endif /* GL_EXT_Cg_shader */
+
+/* ------------------------- GL_EXT_EGL_image_array ------------------------ */
+
+#ifndef GL_EXT_EGL_image_array
+#define GL_EXT_EGL_image_array 1
+
+#define GLEW_EXT_EGL_image_array GLEW_GET_VAR(__GLEW_EXT_EGL_image_array)
+
+#endif /* GL_EXT_EGL_image_array */
+
+/* ------------------ GL_EXT_EGL_image_external_wrap_modes ----------------- */
+
+#ifndef GL_EXT_EGL_image_external_wrap_modes
+#define GL_EXT_EGL_image_external_wrap_modes 1
+
+#define GLEW_EXT_EGL_image_external_wrap_modes GLEW_GET_VAR(__GLEW_EXT_EGL_image_external_wrap_modes)
+
+#endif /* GL_EXT_EGL_image_external_wrap_modes */
+
+/* ------------------------ GL_EXT_EGL_image_storage ----------------------- */
+
+#ifndef GL_EXT_EGL_image_storage
+#define GL_EXT_EGL_image_storage 1
+
+typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list);
+typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list);
+
+#define glEGLImageTargetTexStorageEXT GLEW_GET_FUN(__glewEGLImageTargetTexStorageEXT)
+#define glEGLImageTargetTextureStorageEXT GLEW_GET_FUN(__glewEGLImageTargetTextureStorageEXT)
+
+#define GLEW_EXT_EGL_image_storage GLEW_GET_VAR(__GLEW_EXT_EGL_image_storage)
+
+#endif /* GL_EXT_EGL_image_storage */
+
+/* ------------------ GL_EXT_EGL_image_storage_compression ----------------- */
+
+#ifndef GL_EXT_EGL_image_storage_compression
+#define GL_EXT_EGL_image_storage_compression 1
+
+#define GL_SURFACE_COMPRESSION_EXT 0x96C0
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
+
+#define GLEW_EXT_EGL_image_storage_compression GLEW_GET_VAR(__GLEW_EXT_EGL_image_storage_compression)
+
+#endif /* GL_EXT_EGL_image_storage_compression */
+
+/* ---------------------------- GL_EXT_EGL_sync ---------------------------- */
+
+#ifndef GL_EXT_EGL_sync
+#define GL_EXT_EGL_sync 1
+
+#define GLEW_EXT_EGL_sync GLEW_GET_VAR(__GLEW_EXT_EGL_sync)
+
+#endif /* GL_EXT_EGL_sync */
+
+/* --------------------------- GL_EXT_YUV_target --------------------------- */
+
+#ifndef GL_EXT_YUV_target
+#define GL_EXT_YUV_target 1
+
+#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7
+
+#define GLEW_EXT_YUV_target GLEW_GET_VAR(__GLEW_EXT_YUV_target)
+
+#endif /* GL_EXT_YUV_target */
+
+/* ------------------------------ GL_EXT_abgr ------------------------------ */
+
+#ifndef GL_EXT_abgr
+#define GL_EXT_abgr 1
+
+#define GL_ABGR_EXT 0x8000
+
+#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr)
+
+#endif /* GL_EXT_abgr */
+
+/* -------------------------- GL_EXT_base_instance ------------------------- */
+
+#ifndef GL_EXT_base_instance
+#define GL_EXT_base_instance 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+
+#define glDrawArraysInstancedBaseInstanceEXT GLEW_GET_FUN(__glewDrawArraysInstancedBaseInstanceEXT)
+#define glDrawElementsInstancedBaseInstanceEXT GLEW_GET_FUN(__glewDrawElementsInstancedBaseInstanceEXT)
+#define glDrawElementsInstancedBaseVertexBaseInstanceEXT GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexBaseInstanceEXT)
+
+#define GLEW_EXT_base_instance GLEW_GET_VAR(__GLEW_EXT_base_instance)
+
+#endif /* GL_EXT_base_instance */
+
+/* ------------------------------ GL_EXT_bgra ------------------------------ */
+
+#ifndef GL_EXT_bgra
+#define GL_EXT_bgra 1
+
+#define GL_BGR_EXT 0x80E0
+#define GL_BGRA_EXT 0x80E1
+
+#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra)
+
+#endif /* GL_EXT_bgra */
+
+/* ------------------------ GL_EXT_bindable_uniform ------------------------ */
+
+#ifndef GL_EXT_bindable_uniform
+#define GL_EXT_bindable_uniform 1
+
+#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
+#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
+#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
+#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
+#define GL_UNIFORM_BUFFER_EXT 0x8DEE
+#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
+
+typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
+typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
+typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
+
+#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT)
+#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT)
+#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT)
+
+#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform)
+
+#endif /* GL_EXT_bindable_uniform */
+
+/* --------------------------- GL_EXT_blend_color -------------------------- */
+
+#ifndef GL_EXT_blend_color
+#define GL_EXT_blend_color 1
+
+#define GL_CONSTANT_COLOR_EXT 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
+#define GL_CONSTANT_ALPHA_EXT 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
+#define GL_BLEND_COLOR_EXT 0x8005
+
+typedef void (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+
+#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT)
+
+#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color)
+
+#endif /* GL_EXT_blend_color */
+
+/* --------------------- GL_EXT_blend_equation_separate -------------------- */
+
+#ifndef GL_EXT_blend_equation_separate
+#define GL_EXT_blend_equation_separate 1
+
+#define GL_BLEND_EQUATION_RGB_EXT 0x8009
+#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
+
+#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT)
+
+#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate)
+
+#endif /* GL_EXT_blend_equation_separate */
+
+/* ----------------------- GL_EXT_blend_func_extended ---------------------- */
+
+#ifndef GL_EXT_blend_func_extended
+#define GL_EXT_blend_func_extended 1
+
+#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
+#define GL_SRC1_ALPHA_EXT 0x8589
+#define GL_SRC1_COLOR_EXT 0x88F9
+#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
+#define GL_LOCATION_INDEX_EXT 0x930F
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar * name);
+typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar* name);
+
+#define glBindFragDataLocationIndexedEXT GLEW_GET_FUN(__glewBindFragDataLocationIndexedEXT)
+#define glGetFragDataIndexEXT GLEW_GET_FUN(__glewGetFragDataIndexEXT)
+#define glGetProgramResourceLocationIndexEXT GLEW_GET_FUN(__glewGetProgramResourceLocationIndexEXT)
+
+#define GLEW_EXT_blend_func_extended GLEW_GET_VAR(__GLEW_EXT_blend_func_extended)
+
+#endif /* GL_EXT_blend_func_extended */
+
+/* ----------------------- GL_EXT_blend_func_separate ---------------------- */
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_EXT_blend_func_separate 1
+
+#define GL_BLEND_DST_RGB_EXT 0x80C8
+#define GL_BLEND_SRC_RGB_EXT 0x80C9
+#define GL_BLEND_DST_ALPHA_EXT 0x80CA
+#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
+
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+
+#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT)
+
+#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate)
+
+#endif /* GL_EXT_blend_func_separate */
+
+/* ------------------------- GL_EXT_blend_logic_op ------------------------- */
+
+#ifndef GL_EXT_blend_logic_op
+#define GL_EXT_blend_logic_op 1
+
+#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op)
+
+#endif /* GL_EXT_blend_logic_op */
+
+/* -------------------------- GL_EXT_blend_minmax -------------------------- */
+
+#ifndef GL_EXT_blend_minmax
+#define GL_EXT_blend_minmax 1
+
+#define GL_FUNC_ADD_EXT 0x8006
+#define GL_MIN_EXT 0x8007
+#define GL_MAX_EXT 0x8008
+#define GL_BLEND_EQUATION_EXT 0x8009
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
+
+#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT)
+
+#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax)
+
+#endif /* GL_EXT_blend_minmax */
+
+/* ------------------------- GL_EXT_blend_subtract ------------------------- */
+
+#ifndef GL_EXT_blend_subtract
+#define GL_EXT_blend_subtract 1
+
+#define GL_FUNC_SUBTRACT_EXT 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
+
+#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract)
+
+#endif /* GL_EXT_blend_subtract */
+
+/* ------------------------- GL_EXT_buffer_storage ------------------------- */
+
+#ifndef GL_EXT_buffer_storage
+#define GL_EXT_buffer_storage 1
+
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_PERSISTENT_BIT_EXT 0x0040
+#define GL_MAP_COHERENT_BIT_EXT 0x0080
+#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100
+#define GL_CLIENT_STORAGE_BIT_EXT 0x0200
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000
+#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F
+#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220
+
+typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+
+#define glBufferStorageEXT GLEW_GET_FUN(__glewBufferStorageEXT)
+#define glNamedBufferStorageEXT GLEW_GET_FUN(__glewNamedBufferStorageEXT)
+
+#define GLEW_EXT_buffer_storage GLEW_GET_VAR(__GLEW_EXT_buffer_storage)
+
+#endif /* GL_EXT_buffer_storage */
+
+/* -------------------------- GL_EXT_clear_texture ------------------------- */
+
+#ifndef GL_EXT_clear_texture
+#define GL_EXT_clear_texture 1
+
+typedef void (GLAPIENTRY * PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+
+#define glClearTexImageEXT GLEW_GET_FUN(__glewClearTexImageEXT)
+#define glClearTexSubImageEXT GLEW_GET_FUN(__glewClearTexSubImageEXT)
+
+#define GLEW_EXT_clear_texture GLEW_GET_VAR(__GLEW_EXT_clear_texture)
+
+#endif /* GL_EXT_clear_texture */
+
+/* -------------------------- GL_EXT_clip_control -------------------------- */
+
+#ifndef GL_EXT_clip_control
+#define GL_EXT_clip_control 1
+
+#define GL_LOWER_LEFT_EXT 0x8CA1
+#define GL_UPPER_LEFT_EXT 0x8CA2
+#define GL_CLIP_ORIGIN_EXT 0x935C
+#define GL_CLIP_DEPTH_MODE_EXT 0x935D
+#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
+#define GL_ZERO_TO_ONE_EXT 0x935F
+
+typedef void (GLAPIENTRY * PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth);
+
+#define glClipControlEXT GLEW_GET_FUN(__glewClipControlEXT)
+
+#define GLEW_EXT_clip_control GLEW_GET_VAR(__GLEW_EXT_clip_control)
+
+#endif /* GL_EXT_clip_control */
+
+/* ----------------------- GL_EXT_clip_cull_distance ----------------------- */
+
+#ifndef GL_EXT_clip_cull_distance
+#define GL_EXT_clip_cull_distance 1
+
+#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32
+#define GL_CLIP_DISTANCE0_EXT 0x3000
+#define GL_CLIP_DISTANCE1_EXT 0x3001
+#define GL_CLIP_DISTANCE2_EXT 0x3002
+#define GL_CLIP_DISTANCE3_EXT 0x3003
+#define GL_CLIP_DISTANCE4_EXT 0x3004
+#define GL_CLIP_DISTANCE5_EXT 0x3005
+#define GL_CLIP_DISTANCE6_EXT 0x3006
+#define GL_CLIP_DISTANCE7_EXT 0x3007
+#define GL_MAX_CULL_DISTANCES_EXT 0x82F9
+#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA
+
+#define GLEW_EXT_clip_cull_distance GLEW_GET_VAR(__GLEW_EXT_clip_cull_distance)
+
+#endif /* GL_EXT_clip_cull_distance */
+
+/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */
+
+#ifndef GL_EXT_clip_volume_hint
+#define GL_EXT_clip_volume_hint 1
+
+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
+
+#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint)
+
+#endif /* GL_EXT_clip_volume_hint */
+
+/* ------------------------------ GL_EXT_cmyka ----------------------------- */
+
+#ifndef GL_EXT_cmyka
+#define GL_EXT_cmyka 1
+
+#define GL_CMYK_EXT 0x800C
+#define GL_CMYKA_EXT 0x800D
+#define GL_PACK_CMYK_HINT_EXT 0x800E
+#define GL_UNPACK_CMYK_HINT_EXT 0x800F
+
+#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka)
+
+#endif /* GL_EXT_cmyka */
+
+/* ----------------------- GL_EXT_color_buffer_float ----------------------- */
+
+#ifndef GL_EXT_color_buffer_float
+#define GL_EXT_color_buffer_float 1
+
+#define GLEW_EXT_color_buffer_float GLEW_GET_VAR(__GLEW_EXT_color_buffer_float)
+
+#endif /* GL_EXT_color_buffer_float */
+
+/* --------------------- GL_EXT_color_buffer_half_float -------------------- */
+
+#ifndef GL_EXT_color_buffer_half_float
+#define GL_EXT_color_buffer_half_float 1
+
+#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211
+#define GL_R16F_EXT 0x822D
+#define GL_RG16F_EXT 0x822F
+#define GL_RGBA16F_EXT 0x881A
+#define GL_RGB16F_EXT 0x881B
+#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17
+
+#define GLEW_EXT_color_buffer_half_float GLEW_GET_VAR(__GLEW_EXT_color_buffer_half_float)
+
+#endif /* GL_EXT_color_buffer_half_float */
+
+/* ------------------------- GL_EXT_color_subtable ------------------------- */
+
+#ifndef GL_EXT_color_subtable
+#define GL_EXT_color_subtable 1
+
+typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+
+#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT)
+#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT)
+
+#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable)
+
+#endif /* GL_EXT_color_subtable */
+
+/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_EXT_compiled_vertex_array 1
+
+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
+
+typedef void (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void);
+
+#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT)
+#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT)
+
+#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array)
+
+#endif /* GL_EXT_compiled_vertex_array */
+
+/* ---------------- GL_EXT_compressed_ETC1_RGB8_sub_texture ---------------- */
+
+#ifndef GL_EXT_compressed_ETC1_RGB8_sub_texture
+#define GL_EXT_compressed_ETC1_RGB8_sub_texture 1
+
+#define GLEW_EXT_compressed_ETC1_RGB8_sub_texture GLEW_GET_VAR(__GLEW_EXT_compressed_ETC1_RGB8_sub_texture)
+
+#endif /* GL_EXT_compressed_ETC1_RGB8_sub_texture */
+
+/* ----------------------- GL_EXT_conservative_depth ----------------------- */
+
+#ifndef GL_EXT_conservative_depth
+#define GL_EXT_conservative_depth 1
+
+#define GLEW_EXT_conservative_depth GLEW_GET_VAR(__GLEW_EXT_conservative_depth)
+
+#endif /* GL_EXT_conservative_depth */
+
+/* --------------------------- GL_EXT_convolution -------------------------- */
+
+#ifndef GL_EXT_convolution
+#define GL_EXT_convolution 1
+
+#define GL_CONVOLUTION_1D_EXT 0x8010
+#define GL_CONVOLUTION_2D_EXT 0x8011
+#define GL_SEPARABLE_2D_EXT 0x8012
+#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
+#define GL_REDUCE_EXT 0x8016
+#define GL_CONVOLUTION_FORMAT_EXT 0x8017
+#define GL_CONVOLUTION_WIDTH_EXT 0x8018
+#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
+
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
+typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
+
+#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT)
+#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT)
+#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT)
+#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT)
+#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT)
+#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT)
+#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT)
+#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT)
+#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT)
+#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT)
+#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT)
+#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT)
+#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT)
+
+#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution)
+
+#endif /* GL_EXT_convolution */
+
+/* ------------------------ GL_EXT_coordinate_frame ------------------------ */
+
+#ifndef GL_EXT_coordinate_frame
+#define GL_EXT_coordinate_frame 1
+
+#define GL_TANGENT_ARRAY_EXT 0x8439
+#define GL_BINORMAL_ARRAY_EXT 0x843A
+#define GL_CURRENT_TANGENT_EXT 0x843B
+#define GL_CURRENT_BINORMAL_EXT 0x843C
+#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
+#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
+#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
+#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
+#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
+#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
+#define GL_MAP1_TANGENT_EXT 0x8444
+#define GL_MAP2_TANGENT_EXT 0x8445
+#define GL_MAP1_BINORMAL_EXT 0x8446
+#define GL_MAP2_BINORMAL_EXT 0x8447
+
+typedef void (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void *pointer);
+
+#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT)
+#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT)
+
+#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame)
+
+#endif /* GL_EXT_coordinate_frame */
+
+/* --------------------------- GL_EXT_copy_image --------------------------- */
+
+#ifndef GL_EXT_copy_image
+#define GL_EXT_copy_image 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATAEXTPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+#define glCopyImageSubDataEXT GLEW_GET_FUN(__glewCopyImageSubDataEXT)
+
+#define GLEW_EXT_copy_image GLEW_GET_VAR(__GLEW_EXT_copy_image)
+
+#endif /* GL_EXT_copy_image */
+
+/* -------------------------- GL_EXT_copy_texture -------------------------- */
+
+#ifndef GL_EXT_copy_texture
+#define GL_EXT_copy_texture 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT)
+#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT)
+#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT)
+#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT)
+#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT)
+
+#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture)
+
+#endif /* GL_EXT_copy_texture */
+
+/* --------------------------- GL_EXT_cull_vertex -------------------------- */
+
+#ifndef GL_EXT_cull_vertex
+#define GL_EXT_cull_vertex 1
+
+#define GL_CULL_VERTEX_EXT 0x81AA
+#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+
+typedef void (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params);
+
+#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT)
+#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT)
+
+#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex)
+
+#endif /* GL_EXT_cull_vertex */
+
+/* --------------------------- GL_EXT_debug_label -------------------------- */
+
+#ifndef GL_EXT_debug_label
+#define GL_EXT_debug_label 1
+
+#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
+#define GL_PROGRAM_OBJECT_EXT 0x8B40
+#define GL_SHADER_OBJECT_EXT 0x8B48
+#define GL_BUFFER_OBJECT_EXT 0x9151
+#define GL_QUERY_OBJECT_EXT 0x9153
+#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
+
+typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei* length, GLchar *label);
+typedef void (GLAPIENTRY * PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar* label);
+
+#define glGetObjectLabelEXT GLEW_GET_FUN(__glewGetObjectLabelEXT)
+#define glLabelObjectEXT GLEW_GET_FUN(__glewLabelObjectEXT)
+
+#define GLEW_EXT_debug_label GLEW_GET_VAR(__GLEW_EXT_debug_label)
+
+#endif /* GL_EXT_debug_label */
+
+/* -------------------------- GL_EXT_debug_marker -------------------------- */
+
+#ifndef GL_EXT_debug_marker
+#define GL_EXT_debug_marker 1
+
+typedef void (GLAPIENTRY * PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar* marker);
+typedef void (GLAPIENTRY * PFNGLPOPGROUPMARKEREXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar* marker);
+
+#define glInsertEventMarkerEXT GLEW_GET_FUN(__glewInsertEventMarkerEXT)
+#define glPopGroupMarkerEXT GLEW_GET_FUN(__glewPopGroupMarkerEXT)
+#define glPushGroupMarkerEXT GLEW_GET_FUN(__glewPushGroupMarkerEXT)
+
+#define GLEW_EXT_debug_marker GLEW_GET_VAR(__GLEW_EXT_debug_marker)
+
+#endif /* GL_EXT_debug_marker */
+
+/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */
+
+#ifndef GL_EXT_depth_bounds_test
+#define GL_EXT_depth_bounds_test 1
+
+#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
+#define GL_DEPTH_BOUNDS_EXT 0x8891
+
+typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
+
+#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT)
+
+#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test)
+
+#endif /* GL_EXT_depth_bounds_test */
+
+/* --------------------------- GL_EXT_depth_clamp -------------------------- */
+
+#ifndef GL_EXT_depth_clamp
+#define GL_EXT_depth_clamp 1
+
+#define GL_DEPTH_CLAMP_EXT 0x864F
+
+#define GLEW_EXT_depth_clamp GLEW_GET_VAR(__GLEW_EXT_depth_clamp)
+
+#endif /* GL_EXT_depth_clamp */
+
+/* ----------------------- GL_EXT_direct_state_access ---------------------- */
+
+#ifndef GL_EXT_direct_state_access
+#define GL_EXT_direct_state_access 1
+
+#define GL_PROGRAM_MATRIX_EXT 0x8E2D
+#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
+#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
+
+typedef void (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
+typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
+typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void *img);
+typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void *img);
+typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void** params);
+typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void** params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void** param);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void** param);
+typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
+typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f);
+typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode);
+typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode);
+typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param);
+typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param);
+typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT)
+#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT)
+#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT)
+#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT)
+#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT)
+#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT)
+#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT)
+#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT)
+#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT)
+#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT)
+#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT)
+#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT)
+#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT)
+#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT)
+#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT)
+#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT)
+#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT)
+#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT)
+#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT)
+#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT)
+#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT)
+#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT)
+#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT)
+#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT)
+#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT)
+#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT)
+#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT)
+#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT)
+#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT)
+#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT)
+#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT)
+#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT)
+#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT)
+#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT)
+#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT)
+#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT)
+#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT)
+#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT)
+#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT)
+#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT)
+#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT)
+#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT)
+#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT)
+#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT)
+#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT)
+#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT)
+#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT)
+#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT)
+#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT)
+#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT)
+#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT)
+#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT)
+#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT)
+#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT)
+#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT)
+#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT)
+#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT)
+#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT)
+#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT)
+#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT)
+#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT)
+#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT)
+#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT)
+#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT)
+#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT)
+#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT)
+#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT)
+#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT)
+#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT)
+#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT)
+#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT)
+#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT)
+#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT)
+#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT)
+#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT)
+#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT)
+#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT)
+#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT)
+#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT)
+#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT)
+#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT)
+#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT)
+#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT)
+#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT)
+#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT)
+#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT)
+#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT)
+#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT)
+#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT)
+#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT)
+#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT)
+#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT)
+#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT)
+#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT)
+#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT)
+#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT)
+#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT)
+#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT)
+#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT)
+#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT)
+#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT)
+#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT)
+#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT)
+#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT)
+#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT)
+#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT)
+#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT)
+#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT)
+#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT)
+#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT)
+#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT)
+#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT)
+#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT)
+#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT)
+#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT)
+#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT)
+#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT)
+#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT)
+#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT)
+#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT)
+#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT)
+#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT)
+#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT)
+#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT)
+#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT)
+#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT)
+#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT)
+#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT)
+#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT)
+#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT)
+#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT)
+#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT)
+#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT)
+#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT)
+#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT)
+#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT)
+#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT)
+#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT)
+#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT)
+#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT)
+#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT)
+#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT)
+#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT)
+#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT)
+#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT)
+#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT)
+#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT)
+#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT)
+#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT)
+#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT)
+#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT)
+#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT)
+#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT)
+#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT)
+#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT)
+#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT)
+#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT)
+#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT)
+#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT)
+#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT)
+#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT)
+#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT)
+#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT)
+#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT)
+#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT)
+#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT)
+#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT)
+#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT)
+#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT)
+#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT)
+#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT)
+#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT)
+#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT)
+#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT)
+#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT)
+#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT)
+#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT)
+#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT)
+#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT)
+#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT)
+#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT)
+#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT)
+#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT)
+#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT)
+#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT)
+#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT)
+#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT)
+#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT)
+#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT)
+#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT)
+#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT)
+#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT)
+#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT)
+#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT)
+#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT)
+#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT)
+#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT)
+#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT)
+#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT)
+#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT)
+#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT)
+#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT)
+#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT)
+#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT)
+#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT)
+#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT)
+#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT)
+#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT)
+#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT)
+#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT)
+#define glVertexArrayVertexAttribDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribDivisorEXT)
+#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT)
+#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT)
+#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT)
+
+#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access)
+
+#endif /* GL_EXT_direct_state_access */
+
+/* ----------------------- GL_EXT_discard_framebuffer ---------------------- */
+
+#ifndef GL_EXT_discard_framebuffer
+#define GL_EXT_discard_framebuffer 1
+
+#define GL_COLOR_EXT 0x1800
+#define GL_DEPTH_EXT 0x1801
+#define GL_STENCIL_EXT 0x1802
+
+typedef void (GLAPIENTRY * PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments);
+
+#define glDiscardFramebufferEXT GLEW_GET_FUN(__glewDiscardFramebufferEXT)
+
+#define GLEW_EXT_discard_framebuffer GLEW_GET_VAR(__GLEW_EXT_discard_framebuffer)
+
+#endif /* GL_EXT_discard_framebuffer */
+
+/* ---------------------- GL_EXT_disjoint_timer_query ---------------------- */
+
+#ifndef GL_EXT_disjoint_timer_query
+#define GL_EXT_disjoint_timer_query 1
+
+#define GL_QUERY_COUNTER_BITS_EXT 0x8864
+#define GL_CURRENT_QUERY_EXT 0x8865
+#define GL_QUERY_RESULT_EXT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+#define GL_TIME_ELAPSED_EXT 0x88BF
+#define GL_TIMESTAMP_EXT 0x8E28
+#define GL_GPU_DISJOINT_EXT 0x8FBB
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDQUERYEXTPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64* data);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISQUERYEXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target);
+
+#define glBeginQueryEXT GLEW_GET_FUN(__glewBeginQueryEXT)
+#define glDeleteQueriesEXT GLEW_GET_FUN(__glewDeleteQueriesEXT)
+#define glEndQueryEXT GLEW_GET_FUN(__glewEndQueryEXT)
+#define glGenQueriesEXT GLEW_GET_FUN(__glewGenQueriesEXT)
+#define glGetInteger64vEXT GLEW_GET_FUN(__glewGetInteger64vEXT)
+#define glGetQueryObjectivEXT GLEW_GET_FUN(__glewGetQueryObjectivEXT)
+#define glGetQueryObjectuivEXT GLEW_GET_FUN(__glewGetQueryObjectuivEXT)
+#define glGetQueryivEXT GLEW_GET_FUN(__glewGetQueryivEXT)
+#define glIsQueryEXT GLEW_GET_FUN(__glewIsQueryEXT)
+#define glQueryCounterEXT GLEW_GET_FUN(__glewQueryCounterEXT)
+
+#define GLEW_EXT_disjoint_timer_query GLEW_GET_VAR(__GLEW_EXT_disjoint_timer_query)
+
+#endif /* GL_EXT_disjoint_timer_query */
+
+/* -------------------------- GL_EXT_draw_buffers -------------------------- */
+
+#ifndef GL_EXT_draw_buffers
+#define GL_EXT_draw_buffers 1
+
+#define GL_MAX_DRAW_BUFFERS_EXT 0x8824
+#define GL_DRAW_BUFFER0_EXT 0x8825
+#define GL_DRAW_BUFFER1_EXT 0x8826
+#define GL_DRAW_BUFFER2_EXT 0x8827
+#define GL_DRAW_BUFFER3_EXT 0x8828
+#define GL_DRAW_BUFFER4_EXT 0x8829
+#define GL_DRAW_BUFFER5_EXT 0x882A
+#define GL_DRAW_BUFFER6_EXT 0x882B
+#define GL_DRAW_BUFFER7_EXT 0x882C
+#define GL_DRAW_BUFFER8_EXT 0x882D
+#define GL_DRAW_BUFFER9_EXT 0x882E
+#define GL_DRAW_BUFFER10_EXT 0x882F
+#define GL_DRAW_BUFFER11_EXT 0x8830
+#define GL_DRAW_BUFFER12_EXT 0x8831
+#define GL_DRAW_BUFFER13_EXT 0x8832
+#define GL_DRAW_BUFFER14_EXT 0x8833
+#define GL_DRAW_BUFFER15_EXT 0x8834
+#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
+#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum* bufs);
+
+#define glDrawBuffersEXT GLEW_GET_FUN(__glewDrawBuffersEXT)
+
+#define GLEW_EXT_draw_buffers GLEW_GET_VAR(__GLEW_EXT_draw_buffers)
+
+#endif /* GL_EXT_draw_buffers */
+
+/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */
+
+#ifndef GL_EXT_draw_buffers2
+#define GL_EXT_draw_buffers2 1
+
+typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
+
+#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT)
+#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT)
+#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT)
+#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT)
+#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT)
+#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT)
+
+#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2)
+
+#endif /* GL_EXT_draw_buffers2 */
+
+/* ---------------------- GL_EXT_draw_buffers_indexed ---------------------- */
+
+#ifndef GL_EXT_draw_buffers_indexed
+#define GL_EXT_draw_buffers_indexed 1
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLCOLORMASKIEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY * PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEIEXTPROC) (GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index);
+
+#define glBlendEquationSeparateiEXT GLEW_GET_FUN(__glewBlendEquationSeparateiEXT)
+#define glBlendEquationiEXT GLEW_GET_FUN(__glewBlendEquationiEXT)
+#define glBlendFuncSeparateiEXT GLEW_GET_FUN(__glewBlendFuncSeparateiEXT)
+#define glBlendFunciEXT GLEW_GET_FUN(__glewBlendFunciEXT)
+#define glColorMaskiEXT GLEW_GET_FUN(__glewColorMaskiEXT)
+#define glDisableiEXT GLEW_GET_FUN(__glewDisableiEXT)
+#define glEnableiEXT GLEW_GET_FUN(__glewEnableiEXT)
+#define glIsEnablediEXT GLEW_GET_FUN(__glewIsEnablediEXT)
+
+#define GLEW_EXT_draw_buffers_indexed GLEW_GET_VAR(__GLEW_EXT_draw_buffers_indexed)
+
+#endif /* GL_EXT_draw_buffers_indexed */
+
+/* -------------------- GL_EXT_draw_elements_base_vertex ------------------- */
+
+#ifndef GL_EXT_draw_elements_base_vertex
+#define GL_EXT_draw_elements_base_vertex 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei* count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex);
+
+#define glDrawElementsBaseVertexEXT GLEW_GET_FUN(__glewDrawElementsBaseVertexEXT)
+#define glDrawElementsInstancedBaseVertexEXT GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexEXT)
+#define glDrawRangeElementsBaseVertexEXT GLEW_GET_FUN(__glewDrawRangeElementsBaseVertexEXT)
+#define glMultiDrawElementsBaseVertexEXT GLEW_GET_FUN(__glewMultiDrawElementsBaseVertexEXT)
+
+#define GLEW_EXT_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_EXT_draw_elements_base_vertex)
+
+#endif /* GL_EXT_draw_elements_base_vertex */
+
+/* ------------------------- GL_EXT_draw_instanced ------------------------- */
+
+#ifndef GL_EXT_draw_instanced
+#define GL_EXT_draw_instanced 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+
+#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT)
+#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT)
+
+#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced)
+
+#endif /* GL_EXT_draw_instanced */
+
+/* ----------------------- GL_EXT_draw_range_elements ---------------------- */
+
+#ifndef GL_EXT_draw_range_elements
+#define GL_EXT_draw_range_elements 1
+
+#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
+#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
+
+typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
+
+#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT)
+
+#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements)
+
+#endif /* GL_EXT_draw_range_elements */
+
+/* --------------------- GL_EXT_draw_transform_feedback -------------------- */
+
+#ifndef GL_EXT_draw_transform_feedback
+#define GL_EXT_draw_transform_feedback 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount);
+
+#define glDrawTransformFeedbackEXT GLEW_GET_FUN(__glewDrawTransformFeedbackEXT)
+#define glDrawTransformFeedbackInstancedEXT GLEW_GET_FUN(__glewDrawTransformFeedbackInstancedEXT)
+
+#define GLEW_EXT_draw_transform_feedback GLEW_GET_VAR(__GLEW_EXT_draw_transform_feedback)
+
+#endif /* GL_EXT_draw_transform_feedback */
+
+/* ------------------------- GL_EXT_external_buffer ------------------------ */
+
+#ifndef GL_EXT_external_buffer
+#define GL_EXT_external_buffer 1
+
+typedef void* GLeglClientBufferEXT;
+
+typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
+
+#define glBufferStorageExternalEXT GLEW_GET_FUN(__glewBufferStorageExternalEXT)
+#define glNamedBufferStorageExternalEXT GLEW_GET_FUN(__glewNamedBufferStorageExternalEXT)
+
+#define GLEW_EXT_external_buffer GLEW_GET_VAR(__GLEW_EXT_external_buffer)
+
+#endif /* GL_EXT_external_buffer */
+
+/* --------------------------- GL_EXT_float_blend -------------------------- */
+
+#ifndef GL_EXT_float_blend
+#define GL_EXT_float_blend 1
+
+#define GLEW_EXT_float_blend GLEW_GET_VAR(__GLEW_EXT_float_blend)
+
+#endif /* GL_EXT_float_blend */
+
+/* ---------------------------- GL_EXT_fog_coord --------------------------- */
+
+#ifndef GL_EXT_fog_coord
+#define GL_EXT_fog_coord 1
+
+#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
+#define GL_FOG_COORDINATE_EXT 0x8451
+#define GL_FRAGMENT_DEPTH_EXT 0x8452
+#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
+#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
+
+typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
+
+#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT)
+#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT)
+#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT)
+#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT)
+#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT)
+
+#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord)
+
+#endif /* GL_EXT_fog_coord */
+
+/* --------------------------- GL_EXT_frag_depth --------------------------- */
+
+#ifndef GL_EXT_frag_depth
+#define GL_EXT_frag_depth 1
+
+#define GLEW_EXT_frag_depth GLEW_GET_VAR(__GLEW_EXT_frag_depth)
+
+#endif /* GL_EXT_frag_depth */
+
+/* ------------------------ GL_EXT_fragment_lighting ----------------------- */
+
+#ifndef GL_EXT_fragment_lighting
+#define GL_EXT_fragment_lighting 1
+
+#define GL_FRAGMENT_LIGHTING_EXT 0x8400
+#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403
+#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404
+#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405
+#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406
+#define GL_LIGHT_ENV_MODE_EXT 0x8407
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B
+#define GL_FRAGMENT_LIGHT0_EXT 0x840C
+#define GL_FRAGMENT_LIGHT7_EXT 0x8413
+
+typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param);
+
+#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT)
+#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT)
+#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT)
+#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT)
+#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT)
+#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT)
+#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT)
+#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT)
+#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT)
+#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT)
+#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT)
+#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT)
+#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT)
+#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT)
+#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT)
+#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT)
+#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT)
+#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT)
+
+#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting)
+
+#endif /* GL_EXT_fragment_lighting */
+
+/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */
+
+#ifndef GL_EXT_framebuffer_blit
+#define GL_EXT_framebuffer_blit 1
+
+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
+#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
+
+typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT)
+
+#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit)
+
+#endif /* GL_EXT_framebuffer_blit */
+
+/* --------------------- GL_EXT_framebuffer_multisample -------------------- */
+
+#ifndef GL_EXT_framebuffer_multisample
+#define GL_EXT_framebuffer_multisample 1
+
+#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+#define GL_MAX_SAMPLES_EXT 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT)
+
+#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample)
+
+#endif /* GL_EXT_framebuffer_multisample */
+
+/* --------------- GL_EXT_framebuffer_multisample_blit_scaled -------------- */
+
+#ifndef GL_EXT_framebuffer_multisample_blit_scaled
+#define GL_EXT_framebuffer_multisample_blit_scaled 1
+
+#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA
+#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB
+
+#define GLEW_EXT_framebuffer_multisample_blit_scaled GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample_blit_scaled)
+
+#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
+
+/* ----------------------- GL_EXT_framebuffer_object ----------------------- */
+
+#ifndef GL_EXT_framebuffer_object
+#define GL_EXT_framebuffer_object 1
+
+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
+#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
+#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
+#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
+#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
+#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
+#define GL_FRAMEBUFFER_EXT 0x8D40
+#define GL_RENDERBUFFER_EXT 0x8D41
+#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
+#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
+#define GL_STENCIL_INDEX1_EXT 0x8D46
+#define GL_STENCIL_INDEX4_EXT 0x8D47
+#define GL_STENCIL_INDEX8_EXT 0x8D48
+#define GL_STENCIL_INDEX16_EXT 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT)
+#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT)
+#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT)
+#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT)
+#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT)
+#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT)
+#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT)
+#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT)
+#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT)
+#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT)
+#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT)
+#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT)
+#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT)
+#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT)
+#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT)
+#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT)
+#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT)
+
+#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object)
+
+#endif /* GL_EXT_framebuffer_object */
+
+/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */
+
+#ifndef GL_EXT_framebuffer_sRGB
+#define GL_EXT_framebuffer_sRGB 1
+
+#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
+
+#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB)
+
+#endif /* GL_EXT_framebuffer_sRGB */
+
+/* ----------------------- GL_EXT_geometry_point_size ---------------------- */
+
+#ifndef GL_EXT_geometry_point_size
+#define GL_EXT_geometry_point_size 1
+
+#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+#define GL_LINES_ADJACENCY_EXT 0xA
+#define GL_LINE_STRIP_ADJACENCY_EXT 0xB
+#define GL_TRIANGLES_ADJACENCY_EXT 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+#define GL_UNDEFINED_VERTEX_EXT 0x8260
+#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
+
+#define GLEW_EXT_geometry_point_size GLEW_GET_VAR(__GLEW_EXT_geometry_point_size)
+
+#endif /* GL_EXT_geometry_point_size */
+
+/* ------------------------- GL_EXT_geometry_shader ------------------------ */
+
+#ifndef GL_EXT_geometry_shader
+#define GL_EXT_geometry_shader 1
+
+#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+#define GL_LINES_ADJACENCY_EXT 0xA
+#define GL_LINE_STRIP_ADJACENCY_EXT 0xB
+#define GL_TRIANGLES_ADJACENCY_EXT 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+#define GL_UNDEFINED_VERTEX_EXT 0x8260
+#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
+
+#define GLEW_EXT_geometry_shader GLEW_GET_VAR(__GLEW_EXT_geometry_shader)
+
+#endif /* GL_EXT_geometry_shader */
+
+/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */
+
+#ifndef GL_EXT_geometry_shader4
+#define GL_EXT_geometry_shader4 1
+
+#define GL_LINES_ADJACENCY_EXT 0xA
+#define GL_LINE_STRIP_ADJACENCY_EXT 0xB
+#define GL_TRIANGLES_ADJACENCY_EXT 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD
+#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
+#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
+
+#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT)
+#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT)
+#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT)
+
+#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4)
+
+#endif /* GL_EXT_geometry_shader4 */
+
+/* --------------------- GL_EXT_gpu_program_parameters --------------------- */
+
+#ifndef GL_EXT_gpu_program_parameters
+#define GL_EXT_gpu_program_parameters 1
+
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params);
+
+#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT)
+#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT)
+
+#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters)
+
+#endif /* GL_EXT_gpu_program_parameters */
+
+/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */
+
+#ifndef GL_EXT_gpu_shader4
+#define GL_EXT_gpu_shader4 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
+#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
+#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
+#define GL_SAMPLER_BUFFER_EXT 0x8DC2
+#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
+#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
+#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
+#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
+#define GL_INT_SAMPLER_1D_EXT 0x8DC9
+#define GL_INT_SAMPLER_2D_EXT 0x8DCA
+#define GL_INT_SAMPLER_3D_EXT 0x8DCB
+#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
+#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
+#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
+#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+
+#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT)
+#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT)
+#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT)
+#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT)
+#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT)
+#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT)
+#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT)
+#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT)
+#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT)
+#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT)
+#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT)
+#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT)
+#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT)
+#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT)
+#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT)
+#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT)
+#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT)
+#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT)
+#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT)
+#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT)
+#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT)
+#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT)
+#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT)
+#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT)
+#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT)
+#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT)
+#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT)
+#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT)
+#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT)
+#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT)
+#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT)
+#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT)
+#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT)
+#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT)
+
+#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4)
+
+#endif /* GL_EXT_gpu_shader4 */
+
+/* --------------------------- GL_EXT_gpu_shader5 -------------------------- */
+
+#ifndef GL_EXT_gpu_shader5
+#define GL_EXT_gpu_shader5 1
+
+#define GLEW_EXT_gpu_shader5 GLEW_GET_VAR(__GLEW_EXT_gpu_shader5)
+
+#endif /* GL_EXT_gpu_shader5 */
+
+/* ---------------------------- GL_EXT_histogram --------------------------- */
+
+#ifndef GL_EXT_histogram
+#define GL_EXT_histogram 1
+
+#define GL_HISTOGRAM_EXT 0x8024
+#define GL_PROXY_HISTOGRAM_EXT 0x8025
+#define GL_HISTOGRAM_WIDTH_EXT 0x8026
+#define GL_HISTOGRAM_FORMAT_EXT 0x8027
+#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
+#define GL_HISTOGRAM_SINK_EXT 0x802D
+#define GL_MINMAX_EXT 0x802E
+#define GL_MINMAX_FORMAT_EXT 0x802F
+#define GL_MINMAX_SINK_EXT 0x8030
+
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target);
+
+#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT)
+#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT)
+#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT)
+#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT)
+#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT)
+#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT)
+#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT)
+#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT)
+#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT)
+#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT)
+
+#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram)
+
+#endif /* GL_EXT_histogram */
+
+/* ----------------------- GL_EXT_index_array_formats ---------------------- */
+
+#ifndef GL_EXT_index_array_formats
+#define GL_EXT_index_array_formats 1
+
+#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats)
+
+#endif /* GL_EXT_index_array_formats */
+
+/* --------------------------- GL_EXT_index_func --------------------------- */
+
+#ifndef GL_EXT_index_func
+#define GL_EXT_index_func 1
+
+typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref);
+
+#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT)
+
+#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func)
+
+#endif /* GL_EXT_index_func */
+
+/* ------------------------- GL_EXT_index_material ------------------------- */
+
+#ifndef GL_EXT_index_material
+#define GL_EXT_index_material 1
+
+typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
+
+#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT)
+
+#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material)
+
+#endif /* GL_EXT_index_material */
+
+/* -------------------------- GL_EXT_index_texture ------------------------- */
+
+#ifndef GL_EXT_index_texture
+#define GL_EXT_index_texture 1
+
+#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture)
+
+#endif /* GL_EXT_index_texture */
+
+/* ------------------------ GL_EXT_instanced_arrays ------------------------ */
+
+#ifndef GL_EXT_instanced_arrays
+#define GL_EXT_instanced_arrays 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE
+
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor);
+
+#define glVertexAttribDivisorEXT GLEW_GET_FUN(__glewVertexAttribDivisorEXT)
+
+#define GLEW_EXT_instanced_arrays GLEW_GET_VAR(__GLEW_EXT_instanced_arrays)
+
+#endif /* GL_EXT_instanced_arrays */
+
+/* -------------------------- GL_EXT_light_texture ------------------------- */
+
+#ifndef GL_EXT_light_texture
+#define GL_EXT_light_texture 1
+
+#define GL_FRAGMENT_MATERIAL_EXT 0x8349
+#define GL_FRAGMENT_NORMAL_EXT 0x834A
+#define GL_FRAGMENT_COLOR_EXT 0x834C
+#define GL_ATTENUATION_EXT 0x834D
+#define GL_SHADOW_ATTENUATION_EXT 0x834E
+#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
+#define GL_TEXTURE_LIGHT_EXT 0x8350
+#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
+
+typedef void (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
+typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
+typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
+
+#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT)
+#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT)
+#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT)
+
+#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture)
+
+#endif /* GL_EXT_light_texture */
+
+/* ------------------------ GL_EXT_map_buffer_range ------------------------ */
+
+#ifndef GL_EXT_map_buffer_range
+#define GL_EXT_map_buffer_range 1
+
+#define GL_MAP_READ_BIT_EXT 0x0001
+#define GL_MAP_WRITE_BIT_EXT 0x0002
+#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004
+#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008
+#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010
+#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020
+
+typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
+typedef void * (GLAPIENTRY * PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+
+#define glFlushMappedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedBufferRangeEXT)
+#define glMapBufferRangeEXT GLEW_GET_FUN(__glewMapBufferRangeEXT)
+
+#define GLEW_EXT_map_buffer_range GLEW_GET_VAR(__GLEW_EXT_map_buffer_range)
+
+#endif /* GL_EXT_map_buffer_range */
+
+/* -------------------------- GL_EXT_memory_object ------------------------- */
+
+#ifndef GL_EXT_memory_object
+#define GL_EXT_memory_object 1
+
+#define GL_UUID_SIZE_EXT 16
+#define GL_TEXTURE_TILING_EXT 0x9580
+#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
+#define GL_NUM_TILING_TYPES_EXT 0x9582
+#define GL_TILING_TYPES_EXT 0x9583
+#define GL_OPTIMAL_TILING_EXT 0x9584
+#define GL_LINEAR_TILING_EXT 0x9585
+#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
+#define GL_DEVICE_UUID_EXT 0x9597
+#define GL_DRIVER_UUID_EXT 0x9598
+#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
+
+typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint* memoryObjects);
+typedef void (GLAPIENTRY * PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint* memoryObjects);
+typedef void (GLAPIENTRY * PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte* data);
+typedef void (GLAPIENTRY * PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte* data);
+typedef GLboolean (GLAPIENTRY * PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject);
+typedef void (GLAPIENTRY * PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM1DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+
+#define glBufferStorageMemEXT GLEW_GET_FUN(__glewBufferStorageMemEXT)
+#define glCreateMemoryObjectsEXT GLEW_GET_FUN(__glewCreateMemoryObjectsEXT)
+#define glDeleteMemoryObjectsEXT GLEW_GET_FUN(__glewDeleteMemoryObjectsEXT)
+#define glGetMemoryObjectParameterivEXT GLEW_GET_FUN(__glewGetMemoryObjectParameterivEXT)
+#define glGetUnsignedBytei_vEXT GLEW_GET_FUN(__glewGetUnsignedBytei_vEXT)
+#define glGetUnsignedBytevEXT GLEW_GET_FUN(__glewGetUnsignedBytevEXT)
+#define glIsMemoryObjectEXT GLEW_GET_FUN(__glewIsMemoryObjectEXT)
+#define glMemoryObjectParameterivEXT GLEW_GET_FUN(__glewMemoryObjectParameterivEXT)
+#define glNamedBufferStorageMemEXT GLEW_GET_FUN(__glewNamedBufferStorageMemEXT)
+#define glTexStorageMem1DEXT GLEW_GET_FUN(__glewTexStorageMem1DEXT)
+#define glTexStorageMem2DEXT GLEW_GET_FUN(__glewTexStorageMem2DEXT)
+#define glTexStorageMem2DMultisampleEXT GLEW_GET_FUN(__glewTexStorageMem2DMultisampleEXT)
+#define glTexStorageMem3DEXT GLEW_GET_FUN(__glewTexStorageMem3DEXT)
+#define glTexStorageMem3DMultisampleEXT GLEW_GET_FUN(__glewTexStorageMem3DMultisampleEXT)
+#define glTextureStorageMem1DEXT GLEW_GET_FUN(__glewTextureStorageMem1DEXT)
+#define glTextureStorageMem2DEXT GLEW_GET_FUN(__glewTextureStorageMem2DEXT)
+#define glTextureStorageMem2DMultisampleEXT GLEW_GET_FUN(__glewTextureStorageMem2DMultisampleEXT)
+#define glTextureStorageMem3DEXT GLEW_GET_FUN(__glewTextureStorageMem3DEXT)
+#define glTextureStorageMem3DMultisampleEXT GLEW_GET_FUN(__glewTextureStorageMem3DMultisampleEXT)
+
+#define GLEW_EXT_memory_object GLEW_GET_VAR(__GLEW_EXT_memory_object)
+
+#endif /* GL_EXT_memory_object */
+
+/* ------------------------ GL_EXT_memory_object_fd ------------------------ */
+
+#ifndef GL_EXT_memory_object_fd
+#define GL_EXT_memory_object_fd 1
+
+#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
+
+typedef void (GLAPIENTRY * PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);
+
+#define glImportMemoryFdEXT GLEW_GET_FUN(__glewImportMemoryFdEXT)
+
+#define GLEW_EXT_memory_object_fd GLEW_GET_VAR(__GLEW_EXT_memory_object_fd)
+
+#endif /* GL_EXT_memory_object_fd */
+
+/* ----------------------- GL_EXT_memory_object_win32 ---------------------- */
+
+#ifndef GL_EXT_memory_object_win32
+#define GL_EXT_memory_object_win32 1
+
+#define GL_LUID_SIZE_EXT 8
+#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
+#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
+#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
+#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
+#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
+#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
+#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
+#define GL_D3D12_FENCE_VALUE_EXT 0x9595
+#define GL_DEVICE_LUID_EXT 0x9599
+#define GL_DEVICE_NODE_MASK_EXT 0x959A
+
+typedef void (GLAPIENTRY * PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle);
+typedef void (GLAPIENTRY * PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name);
+
+#define glImportMemoryWin32HandleEXT GLEW_GET_FUN(__glewImportMemoryWin32HandleEXT)
+#define glImportMemoryWin32NameEXT GLEW_GET_FUN(__glewImportMemoryWin32NameEXT)
+
+#define GLEW_EXT_memory_object_win32 GLEW_GET_VAR(__GLEW_EXT_memory_object_win32)
+
+#endif /* GL_EXT_memory_object_win32 */
+
+/* ------------------------- GL_EXT_misc_attribute ------------------------- */
+
+#ifndef GL_EXT_misc_attribute
+#define GL_EXT_misc_attribute 1
+
+#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute)
+
+#endif /* GL_EXT_misc_attribute */
+
+/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */
+
+#ifndef GL_EXT_multi_draw_arrays
+#define GL_EXT_multi_draw_arrays 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const void *const *indices, GLsizei primcount);
+
+#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT)
+#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT)
+
+#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays)
+
+#endif /* GL_EXT_multi_draw_arrays */
+
+/* ----------------------- GL_EXT_multi_draw_indirect ---------------------- */
+
+#ifndef GL_EXT_multi_draw_indirect
+#define GL_EXT_multi_draw_indirect 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
+
+#define glMultiDrawArraysIndirectEXT GLEW_GET_FUN(__glewMultiDrawArraysIndirectEXT)
+#define glMultiDrawElementsIndirectEXT GLEW_GET_FUN(__glewMultiDrawElementsIndirectEXT)
+
+#define GLEW_EXT_multi_draw_indirect GLEW_GET_VAR(__GLEW_EXT_multi_draw_indirect)
+
+#endif /* GL_EXT_multi_draw_indirect */
+
+/* ------------------------ GL_EXT_multiple_textures ----------------------- */
+
+#ifndef GL_EXT_multiple_textures
+#define GL_EXT_multiple_textures 1
+
+#define GLEW_EXT_multiple_textures GLEW_GET_VAR(__GLEW_EXT_multiple_textures)
+
+#endif /* GL_EXT_multiple_textures */
+
+/* --------------------------- GL_EXT_multisample -------------------------- */
+
+#ifndef GL_EXT_multisample
+#define GL_EXT_multisample 1
+
+#define GL_MULTISAMPLE_EXT 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+#define GL_SAMPLE_MASK_EXT 0x80A0
+#define GL_1PASS_EXT 0x80A1
+#define GL_2PASS_0_EXT 0x80A2
+#define GL_2PASS_1_EXT 0x80A3
+#define GL_4PASS_0_EXT 0x80A4
+#define GL_4PASS_1_EXT 0x80A5
+#define GL_4PASS_2_EXT 0x80A6
+#define GL_4PASS_3_EXT 0x80A7
+#define GL_SAMPLE_BUFFERS_EXT 0x80A8
+#define GL_SAMPLES_EXT 0x80A9
+#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
+#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
+#define GL_SAMPLE_PATTERN_EXT 0x80AC
+#define GL_MULTISAMPLE_BIT_EXT 0x20000000
+
+typedef void (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
+typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
+
+#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT)
+#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT)
+
+#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample)
+
+#endif /* GL_EXT_multisample */
+
+/* -------------------- GL_EXT_multisample_compatibility ------------------- */
+
+#ifndef GL_EXT_multisample_compatibility
+#define GL_EXT_multisample_compatibility 1
+
+#define GL_MULTISAMPLE_EXT 0x809D
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+
+#define GLEW_EXT_multisample_compatibility GLEW_GET_VAR(__GLEW_EXT_multisample_compatibility)
+
+#endif /* GL_EXT_multisample_compatibility */
+
+/* ----------------- GL_EXT_multisampled_render_to_texture ----------------- */
+
+#ifndef GL_EXT_multisampled_render_to_texture
+#define GL_EXT_multisampled_render_to_texture 1
+
+#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+#define GL_MAX_SAMPLES_EXT 0x8D57
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+
+#define glFramebufferTexture2DMultisampleEXT GLEW_GET_FUN(__glewFramebufferTexture2DMultisampleEXT)
+
+#define GLEW_EXT_multisampled_render_to_texture GLEW_GET_VAR(__GLEW_EXT_multisampled_render_to_texture)
+
+#endif /* GL_EXT_multisampled_render_to_texture */
+
+/* ----------------- GL_EXT_multisampled_render_to_texture2 ---------------- */
+
+#ifndef GL_EXT_multisampled_render_to_texture2
+#define GL_EXT_multisampled_render_to_texture2 1
+
+#define GLEW_EXT_multisampled_render_to_texture2 GLEW_GET_VAR(__GLEW_EXT_multisampled_render_to_texture2)
+
+#endif /* GL_EXT_multisampled_render_to_texture2 */
+
+/* --------------------- GL_EXT_multiview_draw_buffers --------------------- */
+
+#ifndef GL_EXT_multiview_draw_buffers
+#define GL_EXT_multiview_draw_buffers 1
+
+#define GL_DRAW_BUFFER_EXT 0x0C01
+#define GL_READ_BUFFER_EXT 0x0C02
+#define GL_COLOR_ATTACHMENT_EXT 0x90F0
+#define GL_MULTIVIEW_EXT 0x90F1
+#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum* location, const GLint *indices);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint* data);
+typedef void (GLAPIENTRY * PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index);
+
+#define glDrawBuffersIndexedEXT GLEW_GET_FUN(__glewDrawBuffersIndexedEXT)
+#define glGetIntegeri_vEXT GLEW_GET_FUN(__glewGetIntegeri_vEXT)
+#define glReadBufferIndexedEXT GLEW_GET_FUN(__glewReadBufferIndexedEXT)
+
+#define GLEW_EXT_multiview_draw_buffers GLEW_GET_VAR(__GLEW_EXT_multiview_draw_buffers)
+
+#endif /* GL_EXT_multiview_draw_buffers */
+
+/* ------------- GL_EXT_multiview_tessellation_geometry_shader ------------- */
+
+#ifndef GL_EXT_multiview_tessellation_geometry_shader
+#define GL_EXT_multiview_tessellation_geometry_shader 1
+
+#define GLEW_EXT_multiview_tessellation_geometry_shader GLEW_GET_VAR(__GLEW_EXT_multiview_tessellation_geometry_shader)
+
+#endif /* GL_EXT_multiview_tessellation_geometry_shader */
+
+/* ------------------ GL_EXT_multiview_texture_multisample ----------------- */
+
+#ifndef GL_EXT_multiview_texture_multisample
+#define GL_EXT_multiview_texture_multisample 1
+
+#define GLEW_EXT_multiview_texture_multisample GLEW_GET_VAR(__GLEW_EXT_multiview_texture_multisample)
+
+#endif /* GL_EXT_multiview_texture_multisample */
+
+/* ---------------------- GL_EXT_multiview_timer_query --------------------- */
+
+#ifndef GL_EXT_multiview_timer_query
+#define GL_EXT_multiview_timer_query 1
+
+#define GLEW_EXT_multiview_timer_query GLEW_GET_VAR(__GLEW_EXT_multiview_timer_query)
+
+#endif /* GL_EXT_multiview_timer_query */
+
+/* --------------------- GL_EXT_occlusion_query_boolean -------------------- */
+
+#ifndef GL_EXT_occlusion_query_boolean
+#define GL_EXT_occlusion_query_boolean 1
+
+#define GL_CURRENT_QUERY_EXT 0x8865
+#define GL_QUERY_RESULT_EXT 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
+
+#define GLEW_EXT_occlusion_query_boolean GLEW_GET_VAR(__GLEW_EXT_occlusion_query_boolean)
+
+#endif /* GL_EXT_occlusion_query_boolean */
+
+/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */
+
+#ifndef GL_EXT_packed_depth_stencil
+#define GL_EXT_packed_depth_stencil 1
+
+#define GL_DEPTH_STENCIL_EXT 0x84F9
+#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
+#define GL_DEPTH24_STENCIL8_EXT 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
+
+#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil)
+
+#endif /* GL_EXT_packed_depth_stencil */
+
+/* -------------------------- GL_EXT_packed_float -------------------------- */
+
+#ifndef GL_EXT_packed_float
+#define GL_EXT_packed_float 1
+
+#define GL_R11F_G11F_B10F_EXT 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
+#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
+
+#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float)
+
+#endif /* GL_EXT_packed_float */
+
+/* -------------------------- GL_EXT_packed_pixels ------------------------- */
+
+#ifndef GL_EXT_packed_pixels
+#define GL_EXT_packed_pixels 1
+
+#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
+
+#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels)
+
+#endif /* GL_EXT_packed_pixels */
+
+/* ------------------------ GL_EXT_paletted_texture ------------------------ */
+
+#ifndef GL_EXT_paletted_texture
+#define GL_EXT_paletted_texture 1
+
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8
+#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params);
+
+#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT)
+#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT)
+#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT)
+#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT)
+
+#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture)
+
+#endif /* GL_EXT_paletted_texture */
+
+/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */
+
+#ifndef GL_EXT_pixel_buffer_object
+#define GL_EXT_pixel_buffer_object 1
+
+#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
+
+#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object)
+
+#endif /* GL_EXT_pixel_buffer_object */
+
+/* ------------------------- GL_EXT_pixel_transform ------------------------ */
+
+#ifndef GL_EXT_pixel_transform
+#define GL_EXT_pixel_transform 1
+
+#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
+#define GL_PIXEL_MAG_FILTER_EXT 0x8331
+#define GL_PIXEL_MIN_FILTER_EXT 0x8332
+#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
+#define GL_CUBIC_EXT 0x8334
+#define GL_AVERAGE_EXT 0x8335
+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
+
+typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params);
+
+#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT)
+#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT)
+#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT)
+#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT)
+#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT)
+#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT)
+
+#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform)
+
+#endif /* GL_EXT_pixel_transform */
+
+/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */
+
+#ifndef GL_EXT_pixel_transform_color_table
+#define GL_EXT_pixel_transform_color_table 1
+
+#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table)
+
+#endif /* GL_EXT_pixel_transform_color_table */
+
+/* ------------------------ GL_EXT_point_parameters ------------------------ */
+
+#ifndef GL_EXT_point_parameters
+#define GL_EXT_point_parameters 1
+
+#define GL_POINT_SIZE_MIN_EXT 0x8126
+#define GL_POINT_SIZE_MAX_EXT 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
+#define GL_DISTANCE_ATTENUATION_EXT 0x8129
+
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params);
+
+#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT)
+#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT)
+
+#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters)
+
+#endif /* GL_EXT_point_parameters */
+
+/* ------------------------- GL_EXT_polygon_offset ------------------------- */
+
+#ifndef GL_EXT_polygon_offset
+#define GL_EXT_polygon_offset 1
+
+#define GL_POLYGON_OFFSET_EXT 0x8037
+#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
+#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
+
+typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
+
+#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT)
+
+#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset)
+
+#endif /* GL_EXT_polygon_offset */
+
+/* ---------------------- GL_EXT_polygon_offset_clamp ---------------------- */
+
+#ifndef GL_EXT_polygon_offset_clamp
+#define GL_EXT_polygon_offset_clamp 1
+
+#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
+
+typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);
+
+#define glPolygonOffsetClampEXT GLEW_GET_FUN(__glewPolygonOffsetClampEXT)
+
+#define GLEW_EXT_polygon_offset_clamp GLEW_GET_VAR(__GLEW_EXT_polygon_offset_clamp)
+
+#endif /* GL_EXT_polygon_offset_clamp */
+
+/* ----------------------- GL_EXT_post_depth_coverage ---------------------- */
+
+#ifndef GL_EXT_post_depth_coverage
+#define GL_EXT_post_depth_coverage 1
+
+#define GLEW_EXT_post_depth_coverage GLEW_GET_VAR(__GLEW_EXT_post_depth_coverage)
+
+#endif /* GL_EXT_post_depth_coverage */
+
+/* --------------------- GL_EXT_primitive_bounding_box --------------------- */
+
+#ifndef GL_EXT_primitive_bounding_box
+#define GL_EXT_primitive_bounding_box 1
+
+#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE
+
+typedef void (GLAPIENTRY * PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+
+#define glPrimitiveBoundingBoxEXT GLEW_GET_FUN(__glewPrimitiveBoundingBoxEXT)
+
+#define GLEW_EXT_primitive_bounding_box GLEW_GET_VAR(__GLEW_EXT_primitive_bounding_box)
+
+#endif /* GL_EXT_primitive_bounding_box */
+
+/* ----------------------- GL_EXT_protected_textures ----------------------- */
+
+#ifndef GL_EXT_protected_textures
+#define GL_EXT_protected_textures 1
+
+#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010
+#define GL_TEXTURE_PROTECTED_EXT 0x8BFA
+
+#define GLEW_EXT_protected_textures GLEW_GET_VAR(__GLEW_EXT_protected_textures)
+
+#endif /* GL_EXT_protected_textures */
+
+/* ------------------------ GL_EXT_provoking_vertex ------------------------ */
+
+#ifndef GL_EXT_provoking_vertex
+#define GL_EXT_provoking_vertex 1
+
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
+#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+#define GL_PROVOKING_VERTEX_EXT 0x8E4F
+
+typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
+
+#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT)
+
+#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex)
+
+#endif /* GL_EXT_provoking_vertex */
+
+/* --------------------------- GL_EXT_pvrtc_sRGB --------------------------- */
+
+#ifndef GL_EXT_pvrtc_sRGB
+#define GL_EXT_pvrtc_sRGB 1
+
+#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
+#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
+#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
+#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
+
+#define GLEW_EXT_pvrtc_sRGB GLEW_GET_VAR(__GLEW_EXT_pvrtc_sRGB)
+
+#endif /* GL_EXT_pvrtc_sRGB */
+
+/* ----------------------- GL_EXT_raster_multisample ----------------------- */
+
+#ifndef GL_EXT_raster_multisample
+#define GL_EXT_raster_multisample 1
+
+#define GL_COLOR_SAMPLES_NV 0x8E20
+#define GL_RASTER_MULTISAMPLE_EXT 0x9327
+#define GL_RASTER_SAMPLES_EXT 0x9328
+#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
+#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+#define GL_DEPTH_SAMPLES_NV 0x932D
+#define GL_STENCIL_SAMPLES_NV 0x932E
+#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+#define GL_COVERAGE_MODULATION_NV 0x9332
+#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
+
+typedef void (GLAPIENTRY * PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components);
+typedef void (GLAPIENTRY * PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufsize, GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations);
+
+#define glCoverageModulationNV GLEW_GET_FUN(__glewCoverageModulationNV)
+#define glCoverageModulationTableNV GLEW_GET_FUN(__glewCoverageModulationTableNV)
+#define glGetCoverageModulationTableNV GLEW_GET_FUN(__glewGetCoverageModulationTableNV)
+#define glRasterSamplesEXT GLEW_GET_FUN(__glewRasterSamplesEXT)
+
+#define GLEW_EXT_raster_multisample GLEW_GET_VAR(__GLEW_EXT_raster_multisample)
+
+#endif /* GL_EXT_raster_multisample */
+
+/* ------------------------ GL_EXT_read_format_bgra ------------------------ */
+
+#ifndef GL_EXT_read_format_bgra
+#define GL_EXT_read_format_bgra 1
+
+#define GL_BGRA_EXT 0x80E1
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366
+
+#define GLEW_EXT_read_format_bgra GLEW_GET_VAR(__GLEW_EXT_read_format_bgra)
+
+#endif /* GL_EXT_read_format_bgra */
+
+/* -------------------------- GL_EXT_render_snorm -------------------------- */
+
+#ifndef GL_EXT_render_snorm
+#define GL_EXT_render_snorm 1
+
+#define GL_BYTE 0x1400
+#define GL_SHORT 0x1402
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM_EXT 0x8F98
+#define GL_RG16_SNORM_EXT 0x8F99
+#define GL_RGBA16_SNORM_EXT 0x8F9B
+
+#define GLEW_EXT_render_snorm GLEW_GET_VAR(__GLEW_EXT_render_snorm)
+
+#endif /* GL_EXT_render_snorm */
+
+/* ------------------------- GL_EXT_rescale_normal ------------------------- */
+
+#ifndef GL_EXT_rescale_normal
+#define GL_EXT_rescale_normal 1
+
+#define GL_RESCALE_NORMAL_EXT 0x803A
+
+#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal)
+
+#endif /* GL_EXT_rescale_normal */
+
+/* --------------------------- GL_EXT_robustness --------------------------- */
+
+#ifndef GL_EXT_robustness
+#define GL_EXT_robustness 1
+
+#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252
+#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253
+#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256
+#define GL_NO_RESET_NOTIFICATION_EXT 0x8261
+#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3
+
+typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params);
+typedef void (GLAPIENTRY * PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+
+#define glGetGraphicsResetStatusEXT GLEW_GET_FUN(__glewGetGraphicsResetStatusEXT)
+#define glGetnUniformfvEXT GLEW_GET_FUN(__glewGetnUniformfvEXT)
+#define glGetnUniformivEXT GLEW_GET_FUN(__glewGetnUniformivEXT)
+#define glReadnPixelsEXT GLEW_GET_FUN(__glewReadnPixelsEXT)
+
+#define GLEW_EXT_robustness GLEW_GET_VAR(__GLEW_EXT_robustness)
+
+#endif /* GL_EXT_robustness */
+
+/* ------------------------------ GL_EXT_sRGB ------------------------------ */
+
+#ifndef GL_EXT_sRGB
+#define GL_EXT_sRGB 1
+
+#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
+#define GL_SRGB_EXT 0x8C40
+#define GL_SRGB_ALPHA_EXT 0x8C42
+#define GL_SRGB8_ALPHA8_EXT 0x8C43
+
+#define GLEW_EXT_sRGB GLEW_GET_VAR(__GLEW_EXT_sRGB)
+
+#endif /* GL_EXT_sRGB */
+
+/* ----------------------- GL_EXT_sRGB_write_control ----------------------- */
+
+#ifndef GL_EXT_sRGB_write_control
+#define GL_EXT_sRGB_write_control 1
+
+#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+
+#define GLEW_EXT_sRGB_write_control GLEW_GET_VAR(__GLEW_EXT_sRGB_write_control)
+
+#endif /* GL_EXT_sRGB_write_control */
+
+/* -------------------------- GL_EXT_scene_marker -------------------------- */
+
+#ifndef GL_EXT_scene_marker
+#define GL_EXT_scene_marker 1
+
+typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void);
+
+#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT)
+#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT)
+
+#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker)
+
+#endif /* GL_EXT_scene_marker */
+
+/* ------------------------- GL_EXT_secondary_color ------------------------ */
+
+#ifndef GL_EXT_secondary_color
+#define GL_EXT_secondary_color 1
+
+#define GL_COLOR_SUM_EXT 0x8458
+#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
+
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
+
+#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT)
+#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT)
+#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT)
+#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT)
+#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT)
+#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT)
+#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT)
+#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT)
+#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT)
+#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT)
+#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT)
+#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT)
+#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT)
+#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT)
+#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT)
+#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT)
+#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT)
+
+#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color)
+
+#endif /* GL_EXT_secondary_color */
+
+/* ---------------------------- GL_EXT_semaphore --------------------------- */
+
+#ifndef GL_EXT_semaphore
+#define GL_EXT_semaphore 1
+
+#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
+#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
+#define GL_LAYOUT_GENERAL_EXT 0x958D
+#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
+#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
+#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
+#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
+#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
+#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593
+
+typedef void (GLAPIENTRY * PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint* semaphores);
+typedef void (GLAPIENTRY * PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint* semaphores);
+typedef void (GLAPIENTRY * PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore);
+typedef void (GLAPIENTRY * PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint* buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);
+typedef void (GLAPIENTRY * PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint* buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);
+
+#define glDeleteSemaphoresEXT GLEW_GET_FUN(__glewDeleteSemaphoresEXT)
+#define glGenSemaphoresEXT GLEW_GET_FUN(__glewGenSemaphoresEXT)
+#define glGetSemaphoreParameterui64vEXT GLEW_GET_FUN(__glewGetSemaphoreParameterui64vEXT)
+#define glIsSemaphoreEXT GLEW_GET_FUN(__glewIsSemaphoreEXT)
+#define glSemaphoreParameterui64vEXT GLEW_GET_FUN(__glewSemaphoreParameterui64vEXT)
+#define glSignalSemaphoreEXT GLEW_GET_FUN(__glewSignalSemaphoreEXT)
+#define glWaitSemaphoreEXT GLEW_GET_FUN(__glewWaitSemaphoreEXT)
+
+#define GLEW_EXT_semaphore GLEW_GET_VAR(__GLEW_EXT_semaphore)
+
+#endif /* GL_EXT_semaphore */
+
+/* -------------------------- GL_EXT_semaphore_fd -------------------------- */
+
+#ifndef GL_EXT_semaphore_fd
+#define GL_EXT_semaphore_fd 1
+
+typedef void (GLAPIENTRY * PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd);
+
+#define glImportSemaphoreFdEXT GLEW_GET_FUN(__glewImportSemaphoreFdEXT)
+
+#define GLEW_EXT_semaphore_fd GLEW_GET_VAR(__GLEW_EXT_semaphore_fd)
+
+#endif /* GL_EXT_semaphore_fd */
+
+/* ------------------------- GL_EXT_semaphore_win32 ------------------------ */
+
+#ifndef GL_EXT_semaphore_win32
+#define GL_EXT_semaphore_win32 1
+
+typedef void (GLAPIENTRY * PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle);
+typedef void (GLAPIENTRY * PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name);
+
+#define glImportSemaphoreWin32HandleEXT GLEW_GET_FUN(__glewImportSemaphoreWin32HandleEXT)
+#define glImportSemaphoreWin32NameEXT GLEW_GET_FUN(__glewImportSemaphoreWin32NameEXT)
+
+#define GLEW_EXT_semaphore_win32 GLEW_GET_VAR(__GLEW_EXT_semaphore_win32)
+
+#endif /* GL_EXT_semaphore_win32 */
+
+/* --------------------- GL_EXT_separate_depth_stencil --------------------- */
+
+#ifndef GL_EXT_separate_depth_stencil
+#define GL_EXT_separate_depth_stencil 1
+
+#define GLEW_EXT_separate_depth_stencil GLEW_GET_VAR(__GLEW_EXT_separate_depth_stencil)
+
+#endif /* GL_EXT_separate_depth_stencil */
+
+/* --------------------- GL_EXT_separate_shader_objects -------------------- */
+
+#ifndef GL_EXT_separate_shader_objects
+#define GL_EXT_separate_shader_objects 1
+
+#define GL_ACTIVE_PROGRAM_EXT 0x8B8D
+
+typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
+typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar* string);
+typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
+
+#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT)
+#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT)
+#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT)
+
+#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects)
+
+#endif /* GL_EXT_separate_shader_objects */
+
+/* --------------------- GL_EXT_separate_specular_color -------------------- */
+
+#ifndef GL_EXT_separate_specular_color
+#define GL_EXT_separate_specular_color 1
+
+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
+#define GL_SINGLE_COLOR_EXT 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
+
+#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color)
+
+#endif /* GL_EXT_separate_specular_color */
+
+/* -------------------- GL_EXT_shader_framebuffer_fetch -------------------- */
+
+#ifndef GL_EXT_shader_framebuffer_fetch
+#define GL_EXT_shader_framebuffer_fetch 1
+
+#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void);
+
+#define glFramebufferFetchBarrierEXT GLEW_GET_FUN(__glewFramebufferFetchBarrierEXT)
+
+#define GLEW_EXT_shader_framebuffer_fetch GLEW_GET_VAR(__GLEW_EXT_shader_framebuffer_fetch)
+
+#endif /* GL_EXT_shader_framebuffer_fetch */
+
+/* -------------- GL_EXT_shader_framebuffer_fetch_non_coherent ------------- */
+
+#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent
+#define GL_EXT_shader_framebuffer_fetch_non_coherent 1
+
+#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
+
+#define GLEW_EXT_shader_framebuffer_fetch_non_coherent GLEW_GET_VAR(__GLEW_EXT_shader_framebuffer_fetch_non_coherent)
+
+#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
+
+/* ------------------------ GL_EXT_shader_group_vote ----------------------- */
+
+#ifndef GL_EXT_shader_group_vote
+#define GL_EXT_shader_group_vote 1
+
+#define GLEW_EXT_shader_group_vote GLEW_GET_VAR(__GLEW_EXT_shader_group_vote)
+
+#endif /* GL_EXT_shader_group_vote */
+
+/* ------------------- GL_EXT_shader_image_load_formatted ------------------ */
+
+#ifndef GL_EXT_shader_image_load_formatted
+#define GL_EXT_shader_image_load_formatted 1
+
+#define GLEW_EXT_shader_image_load_formatted GLEW_GET_VAR(__GLEW_EXT_shader_image_load_formatted)
+
+#endif /* GL_EXT_shader_image_load_formatted */
+
+/* --------------------- GL_EXT_shader_image_load_store -------------------- */
+
+#ifndef GL_EXT_shader_image_load_store
+#define GL_EXT_shader_image_load_store 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
+#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
+#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
+#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
+#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040
+#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
+#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
+#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
+#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
+#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
+#define GL_MAX_IMAGE_UNITS_EXT 0x8F38
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
+#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A
+#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
+#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
+#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
+#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
+#define GL_IMAGE_1D_EXT 0x904C
+#define GL_IMAGE_2D_EXT 0x904D
+#define GL_IMAGE_3D_EXT 0x904E
+#define GL_IMAGE_2D_RECT_EXT 0x904F
+#define GL_IMAGE_CUBE_EXT 0x9050
+#define GL_IMAGE_BUFFER_EXT 0x9051
+#define GL_IMAGE_1D_ARRAY_EXT 0x9052
+#define GL_IMAGE_2D_ARRAY_EXT 0x9053
+#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
+#define GL_INT_IMAGE_1D_EXT 0x9057
+#define GL_INT_IMAGE_2D_EXT 0x9058
+#define GL_INT_IMAGE_3D_EXT 0x9059
+#define GL_INT_IMAGE_2D_RECT_EXT 0x905A
+#define GL_INT_IMAGE_CUBE_EXT 0x905B
+#define GL_INT_IMAGE_BUFFER_EXT 0x905C
+#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
+#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
+#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
+#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
+#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
+#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D
+#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E
+#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
+typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
+
+#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT)
+#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT)
+
+#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store)
+
+#endif /* GL_EXT_shader_image_load_store */
+
+/* ------------------- GL_EXT_shader_implicit_conversions ------------------ */
+
+#ifndef GL_EXT_shader_implicit_conversions
+#define GL_EXT_shader_implicit_conversions 1
+
+#define GLEW_EXT_shader_implicit_conversions GLEW_GET_VAR(__GLEW_EXT_shader_implicit_conversions)
+
+#endif /* GL_EXT_shader_implicit_conversions */
+
+/* ----------------------- GL_EXT_shader_integer_mix ----------------------- */
+
+#ifndef GL_EXT_shader_integer_mix
+#define GL_EXT_shader_integer_mix 1
+
+#define GLEW_EXT_shader_integer_mix GLEW_GET_VAR(__GLEW_EXT_shader_integer_mix)
+
+#endif /* GL_EXT_shader_integer_mix */
+
+/* ------------------------ GL_EXT_shader_io_blocks ------------------------ */
+
+#ifndef GL_EXT_shader_io_blocks
+#define GL_EXT_shader_io_blocks 1
+
+#define GLEW_EXT_shader_io_blocks GLEW_GET_VAR(__GLEW_EXT_shader_io_blocks)
+
+#endif /* GL_EXT_shader_io_blocks */
+
+/* ------------- GL_EXT_shader_non_constant_global_initializers ------------ */
+
+#ifndef GL_EXT_shader_non_constant_global_initializers
+#define GL_EXT_shader_non_constant_global_initializers 1
+
+#define GLEW_EXT_shader_non_constant_global_initializers GLEW_GET_VAR(__GLEW_EXT_shader_non_constant_global_initializers)
+
+#endif /* GL_EXT_shader_non_constant_global_initializers */
+
+/* ------------------- GL_EXT_shader_pixel_local_storage ------------------- */
+
+#ifndef GL_EXT_shader_pixel_local_storage
+#define GL_EXT_shader_pixel_local_storage 1
+
+#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63
+#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64
+#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67
+
+#define GLEW_EXT_shader_pixel_local_storage GLEW_GET_VAR(__GLEW_EXT_shader_pixel_local_storage)
+
+#endif /* GL_EXT_shader_pixel_local_storage */
+
+/* ------------------- GL_EXT_shader_pixel_local_storage2 ------------------ */
+
+#ifndef GL_EXT_shader_pixel_local_storage2
+#define GL_EXT_shader_pixel_local_storage2 1
+
+#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650
+#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651
+#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652
+
+typedef void (GLAPIENTRY * PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint* values);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size);
+typedef GLsizei (GLAPIENTRY * PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target);
+
+#define glClearPixelLocalStorageuiEXT GLEW_GET_FUN(__glewClearPixelLocalStorageuiEXT)
+#define glFramebufferPixelLocalStorageSizeEXT GLEW_GET_FUN(__glewFramebufferPixelLocalStorageSizeEXT)
+#define glGetFramebufferPixelLocalStorageSizeEXT GLEW_GET_FUN(__glewGetFramebufferPixelLocalStorageSizeEXT)
+
+#define GLEW_EXT_shader_pixel_local_storage2 GLEW_GET_VAR(__GLEW_EXT_shader_pixel_local_storage2)
+
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+
+/* -------------------- GL_EXT_shader_samples_identical -------------------- */
+
+#ifndef GL_EXT_shader_samples_identical
+#define GL_EXT_shader_samples_identical 1
+
+#define GLEW_EXT_shader_samples_identical GLEW_GET_VAR(__GLEW_EXT_shader_samples_identical)
+
+#endif /* GL_EXT_shader_samples_identical */
+
+/* ----------------------- GL_EXT_shader_texture_lod ----------------------- */
+
+#ifndef GL_EXT_shader_texture_lod
+#define GL_EXT_shader_texture_lod 1
+
+#define GLEW_EXT_shader_texture_lod GLEW_GET_VAR(__GLEW_EXT_shader_texture_lod)
+
+#endif /* GL_EXT_shader_texture_lod */
+
+/* -------------------------- GL_EXT_shadow_funcs -------------------------- */
+
+#ifndef GL_EXT_shadow_funcs
+#define GL_EXT_shadow_funcs 1
+
+#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs)
+
+#endif /* GL_EXT_shadow_funcs */
+
+/* ------------------------- GL_EXT_shadow_samplers ------------------------ */
+
+#ifndef GL_EXT_shadow_samplers
+#define GL_EXT_shadow_samplers 1
+
+#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C
+#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D
+#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E
+#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62
+
+#define GLEW_EXT_shadow_samplers GLEW_GET_VAR(__GLEW_EXT_shadow_samplers)
+
+#endif /* GL_EXT_shadow_samplers */
+
+/* --------------------- GL_EXT_shared_texture_palette --------------------- */
+
+#ifndef GL_EXT_shared_texture_palette
+#define GL_EXT_shared_texture_palette 1
+
+#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
+
+#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette)
+
+#endif /* GL_EXT_shared_texture_palette */
+
+/* ------------------------- GL_EXT_sparse_texture ------------------------- */
+
+#ifndef GL_EXT_sparse_texture
+#define GL_EXT_sparse_texture 1
+
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_TEXTURE_3D 0x806F
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_2D_ARRAY 0x8C1A
+#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197
+#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A
+#define GL_TEXTURE_SPARSE_EXT 0x91A6
+#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7
+#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8
+#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9
+#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA
+
+typedef void (GLAPIENTRY * PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+
+#define glTexPageCommitmentEXT GLEW_GET_FUN(__glewTexPageCommitmentEXT)
+#define glTexturePageCommitmentEXT GLEW_GET_FUN(__glewTexturePageCommitmentEXT)
+
+#define GLEW_EXT_sparse_texture GLEW_GET_VAR(__GLEW_EXT_sparse_texture)
+
+#endif /* GL_EXT_sparse_texture */
+
+/* ------------------------- GL_EXT_sparse_texture2 ------------------------ */
+
+#ifndef GL_EXT_sparse_texture2
+#define GL_EXT_sparse_texture2 1
+
+#define GLEW_EXT_sparse_texture2 GLEW_GET_VAR(__GLEW_EXT_sparse_texture2)
+
+#endif /* GL_EXT_sparse_texture2 */
+
+/* ----------------------- GL_EXT_static_vertex_array ---------------------- */
+
+#ifndef GL_EXT_static_vertex_array
+#define GL_EXT_static_vertex_array 1
+
+#define GLEW_EXT_static_vertex_array GLEW_GET_VAR(__GLEW_EXT_static_vertex_array)
+
+#endif /* GL_EXT_static_vertex_array */
+
+/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */
+
+#ifndef GL_EXT_stencil_clear_tag
+#define GL_EXT_stencil_clear_tag 1
+
+#define GL_STENCIL_TAG_BITS_EXT 0x88F2
+#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
+
+#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag)
+
+#endif /* GL_EXT_stencil_clear_tag */
+
+/* ------------------------ GL_EXT_stencil_two_side ------------------------ */
+
+#ifndef GL_EXT_stencil_two_side
+#define GL_EXT_stencil_two_side 1
+
+#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
+#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
+
+typedef void (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
+
+#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT)
+
+#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side)
+
+#endif /* GL_EXT_stencil_two_side */
+
+/* -------------------------- GL_EXT_stencil_wrap -------------------------- */
+
+#ifndef GL_EXT_stencil_wrap
+#define GL_EXT_stencil_wrap 1
+
+#define GL_INCR_WRAP_EXT 0x8507
+#define GL_DECR_WRAP_EXT 0x8508
+
+#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap)
+
+#endif /* GL_EXT_stencil_wrap */
+
+/* --------------------------- GL_EXT_subtexture --------------------------- */
+
+#ifndef GL_EXT_subtexture
+#define GL_EXT_subtexture 1
+
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+
+#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT)
+#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT)
+#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT)
+
+#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture)
+
+#endif /* GL_EXT_subtexture */
+
+/* --------------------- GL_EXT_tessellation_point_size -------------------- */
+
+#ifndef GL_EXT_tessellation_point_size
+#define GL_EXT_tessellation_point_size 1
+
+#define GL_QUADS_EXT 0x0007
+#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+#define GL_PATCHES_EXT 0xE
+#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+#define GL_PATCH_VERTICES_EXT 0x8E72
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+#define GL_TESS_GEN_MODE_EXT 0x8E76
+#define GL_TESS_GEN_SPACING_EXT 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+#define GL_ISOLINES_EXT 0x8E7A
+#define GL_FRACTIONAL_ODD_EXT 0x8E7B
+#define GL_FRACTIONAL_EVEN_EXT 0x8E7C
+#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+#define GL_TESS_CONTROL_SHADER_EXT 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+#define GL_IS_PER_PATCH_EXT 0x92E7
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
+
+typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value);
+
+#define glPatchParameteriEXT GLEW_GET_FUN(__glewPatchParameteriEXT)
+
+#define GLEW_EXT_tessellation_point_size GLEW_GET_VAR(__GLEW_EXT_tessellation_point_size)
+
+#endif /* GL_EXT_tessellation_point_size */
+
+/* ----------------------- GL_EXT_tessellation_shader ---------------------- */
+
+#ifndef GL_EXT_tessellation_shader
+#define GL_EXT_tessellation_shader 1
+
+#define GL_QUADS_EXT 0x0007
+#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+#define GL_PATCHES_EXT 0xE
+#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+#define GL_PATCH_VERTICES_EXT 0x8E72
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+#define GL_TESS_GEN_MODE_EXT 0x8E76
+#define GL_TESS_GEN_SPACING_EXT 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+#define GL_ISOLINES_EXT 0x8E7A
+#define GL_FRACTIONAL_ODD_EXT 0x8E7B
+#define GL_FRACTIONAL_EVEN_EXT 0x8E7C
+#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+#define GL_TESS_CONTROL_SHADER_EXT 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+#define GL_IS_PER_PATCH_EXT 0x92E7
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
+
+#define GLEW_EXT_tessellation_shader GLEW_GET_VAR(__GLEW_EXT_tessellation_shader)
+
+#endif /* GL_EXT_tessellation_shader */
+
+/* ----------------------------- GL_EXT_texture ---------------------------- */
+
+#ifndef GL_EXT_texture
+#define GL_EXT_texture 1
+
+#define GL_ALPHA4_EXT 0x803B
+#define GL_ALPHA8_EXT 0x803C
+#define GL_ALPHA12_EXT 0x803D
+#define GL_ALPHA16_EXT 0x803E
+#define GL_LUMINANCE4_EXT 0x803F
+#define GL_LUMINANCE8_EXT 0x8040
+#define GL_LUMINANCE12_EXT 0x8041
+#define GL_LUMINANCE16_EXT 0x8042
+#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
+#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
+#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
+#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
+#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
+#define GL_INTENSITY_EXT 0x8049
+#define GL_INTENSITY4_EXT 0x804A
+#define GL_INTENSITY8_EXT 0x804B
+#define GL_INTENSITY12_EXT 0x804C
+#define GL_INTENSITY16_EXT 0x804D
+#define GL_RGB2_EXT 0x804E
+#define GL_RGB4_EXT 0x804F
+#define GL_RGB5_EXT 0x8050
+#define GL_RGB8_EXT 0x8051
+#define GL_RGB10_EXT 0x8052
+#define GL_RGB12_EXT 0x8053
+#define GL_RGB16_EXT 0x8054
+#define GL_RGBA2_EXT 0x8055
+#define GL_RGBA4_EXT 0x8056
+#define GL_RGB5_A1_EXT 0x8057
+#define GL_RGBA8_EXT 0x8058
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_RGBA12_EXT 0x805A
+#define GL_RGBA16_EXT 0x805B
+#define GL_TEXTURE_RED_SIZE_EXT 0x805C
+#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
+#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
+#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
+#define GL_REPLACE_EXT 0x8062
+#define GL_PROXY_TEXTURE_1D_EXT 0x8063
+#define GL_PROXY_TEXTURE_2D_EXT 0x8064
+
+#define GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture)
+
+#endif /* GL_EXT_texture */
+
+/* ---------------------------- GL_EXT_texture3D --------------------------- */
+
+#ifndef GL_EXT_texture3D
+#define GL_EXT_texture3D 1
+
+#define GL_PACK_SKIP_IMAGES_EXT 0x806B
+#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
+#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
+#define GL_TEXTURE_3D_EXT 0x806F
+#define GL_PROXY_TEXTURE_3D_EXT 0x8070
+#define GL_TEXTURE_DEPTH_EXT 0x8071
+#define GL_TEXTURE_WRAP_R_EXT 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
+
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+
+#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT)
+
+#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D)
+
+#endif /* GL_EXT_texture3D */
+
+/* -------------------------- GL_EXT_texture_array ------------------------- */
+
+#ifndef GL_EXT_texture_array
+#define GL_EXT_texture_array 1
+
+#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
+#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
+#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
+#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+
+#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT)
+
+#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array)
+
+#endif /* GL_EXT_texture_array */
+
+/* ---------------------- GL_EXT_texture_border_clamp ---------------------- */
+
+#ifndef GL_EXT_texture_border_clamp
+#define GL_EXT_texture_border_clamp 1
+
+#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004
+#define GL_CLAMP_TO_BORDER_EXT 0x812D
+
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint* params);
+
+#define glGetSamplerParameterIivEXT GLEW_GET_FUN(__glewGetSamplerParameterIivEXT)
+#define glGetSamplerParameterIuivEXT GLEW_GET_FUN(__glewGetSamplerParameterIuivEXT)
+#define glSamplerParameterIivEXT GLEW_GET_FUN(__glewSamplerParameterIivEXT)
+#define glSamplerParameterIuivEXT GLEW_GET_FUN(__glewSamplerParameterIuivEXT)
+
+#define GLEW_EXT_texture_border_clamp GLEW_GET_VAR(__GLEW_EXT_texture_border_clamp)
+
+#endif /* GL_EXT_texture_border_clamp */
+
+/* ------------------------- GL_EXT_texture_buffer ------------------------- */
+
+#ifndef GL_EXT_texture_buffer
+#define GL_EXT_texture_buffer 1
+
+#define GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A
+#define GL_TEXTURE_BUFFER_EXT 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+#define GL_SAMPLER_BUFFER_EXT 0x8DC2
+#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+#define GL_IMAGE_BUFFER_EXT 0x9051
+#define GL_INT_IMAGE_BUFFER_EXT 0x905C
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D
+#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F
+
+#define GLEW_EXT_texture_buffer GLEW_GET_VAR(__GLEW_EXT_texture_buffer)
+
+#endif /* GL_EXT_texture_buffer */
+
+/* ---------------------- GL_EXT_texture_buffer_object --------------------- */
+
+#ifndef GL_EXT_texture_buffer_object
+#define GL_EXT_texture_buffer_object 1
+
+#define GL_TEXTURE_BUFFER_EXT 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
+
+typedef void (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+
+#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT)
+
+#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object)
+
+#endif /* GL_EXT_texture_buffer_object */
+
+/* -------------- GL_EXT_texture_compression_astc_decode_mode -------------- */
+
+#ifndef GL_EXT_texture_compression_astc_decode_mode
+#define GL_EXT_texture_compression_astc_decode_mode 1
+
+#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
+
+#define GLEW_EXT_texture_compression_astc_decode_mode GLEW_GET_VAR(__GLEW_EXT_texture_compression_astc_decode_mode)
+
+#endif /* GL_EXT_texture_compression_astc_decode_mode */
+
+/* ----------- GL_EXT_texture_compression_astc_decode_mode_rgb9e5 ---------- */
+
+#ifndef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+#define GL_EXT_texture_compression_astc_decode_mode_rgb9e5 1
+
+#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
+
+#define GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5 GLEW_GET_VAR(__GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5)
+
+#endif /* GL_EXT_texture_compression_astc_decode_mode_rgb9e5 */
+
+/* -------------------- GL_EXT_texture_compression_bptc -------------------- */
+
+#ifndef GL_EXT_texture_compression_bptc
+#define GL_EXT_texture_compression_bptc 1
+
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F
+
+#define GLEW_EXT_texture_compression_bptc GLEW_GET_VAR(__GLEW_EXT_texture_compression_bptc)
+
+#endif /* GL_EXT_texture_compression_bptc */
+
+/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */
+
+#ifndef GL_EXT_texture_compression_dxt1
+#define GL_EXT_texture_compression_dxt1 1
+
+#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1)
+
+#endif /* GL_EXT_texture_compression_dxt1 */
+
+/* -------------------- GL_EXT_texture_compression_latc -------------------- */
+
+#ifndef GL_EXT_texture_compression_latc
+#define GL_EXT_texture_compression_latc 1
+
+#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
+
+#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc)
+
+#endif /* GL_EXT_texture_compression_latc */
+
+/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */
+
+#ifndef GL_EXT_texture_compression_rgtc
+#define GL_EXT_texture_compression_rgtc 1
+
+#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
+#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
+
+#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc)
+
+#endif /* GL_EXT_texture_compression_rgtc */
+
+/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */
+
+#ifndef GL_EXT_texture_compression_s3tc
+#define GL_EXT_texture_compression_s3tc 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
+
+#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc)
+
+#endif /* GL_EXT_texture_compression_s3tc */
+
+/* ------------------ GL_EXT_texture_compression_s3tc_srgb ----------------- */
+
+#ifndef GL_EXT_texture_compression_s3tc_srgb
+#define GL_EXT_texture_compression_s3tc_srgb 1
+
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+
+#define GLEW_EXT_texture_compression_s3tc_srgb GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc_srgb)
+
+#endif /* GL_EXT_texture_compression_s3tc_srgb */
+
+/* ------------------------ GL_EXT_texture_cube_map ------------------------ */
+
+#ifndef GL_EXT_texture_cube_map
+#define GL_EXT_texture_cube_map 1
+
+#define GL_NORMAL_MAP_EXT 0x8511
+#define GL_REFLECTION_MAP_EXT 0x8512
+#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
+
+#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map)
+
+#endif /* GL_EXT_texture_cube_map */
+
+/* --------------------- GL_EXT_texture_cube_map_array --------------------- */
+
+#ifndef GL_EXT_texture_cube_map_array
+#define GL_EXT_texture_cube_map_array 1
+
+#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A
+#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F
+#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+
+#define GLEW_EXT_texture_cube_map_array GLEW_GET_VAR(__GLEW_EXT_texture_cube_map_array)
+
+#endif /* GL_EXT_texture_cube_map_array */
+
+/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */
+
+#ifndef GL_EXT_texture_edge_clamp
+#define GL_EXT_texture_edge_clamp 1
+
+#define GL_CLAMP_TO_EDGE_EXT 0x812F
+
+#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp)
+
+#endif /* GL_EXT_texture_edge_clamp */
+
+/* --------------------------- GL_EXT_texture_env -------------------------- */
+
+#ifndef GL_EXT_texture_env
+#define GL_EXT_texture_env 1
+
+#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env)
+
+#endif /* GL_EXT_texture_env */
+
+/* ------------------------- GL_EXT_texture_env_add ------------------------ */
+
+#ifndef GL_EXT_texture_env_add
+#define GL_EXT_texture_env_add 1
+
+#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add)
+
+#endif /* GL_EXT_texture_env_add */
+
+/* ----------------------- GL_EXT_texture_env_combine ---------------------- */
+
+#ifndef GL_EXT_texture_env_combine
+#define GL_EXT_texture_env_combine 1
+
+#define GL_COMBINE_EXT 0x8570
+#define GL_COMBINE_RGB_EXT 0x8571
+#define GL_COMBINE_ALPHA_EXT 0x8572
+#define GL_RGB_SCALE_EXT 0x8573
+#define GL_ADD_SIGNED_EXT 0x8574
+#define GL_INTERPOLATE_EXT 0x8575
+#define GL_CONSTANT_EXT 0x8576
+#define GL_PRIMARY_COLOR_EXT 0x8577
+#define GL_PREVIOUS_EXT 0x8578
+#define GL_SOURCE0_RGB_EXT 0x8580
+#define GL_SOURCE1_RGB_EXT 0x8581
+#define GL_SOURCE2_RGB_EXT 0x8582
+#define GL_SOURCE0_ALPHA_EXT 0x8588
+#define GL_SOURCE1_ALPHA_EXT 0x8589
+#define GL_SOURCE2_ALPHA_EXT 0x858A
+#define GL_OPERAND0_RGB_EXT 0x8590
+#define GL_OPERAND1_RGB_EXT 0x8591
+#define GL_OPERAND2_RGB_EXT 0x8592
+#define GL_OPERAND0_ALPHA_EXT 0x8598
+#define GL_OPERAND1_ALPHA_EXT 0x8599
+#define GL_OPERAND2_ALPHA_EXT 0x859A
+
+#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine)
+
+#endif /* GL_EXT_texture_env_combine */
+
+/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */
+
+#ifndef GL_EXT_texture_env_dot3
+#define GL_EXT_texture_env_dot3 1
+
+#define GL_DOT3_RGB_EXT 0x8740
+#define GL_DOT3_RGBA_EXT 0x8741
+
+#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3)
+
+#endif /* GL_EXT_texture_env_dot3 */
+
+/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */
+
+#ifndef GL_EXT_texture_filter_anisotropic
+#define GL_EXT_texture_filter_anisotropic 1
+
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+
+#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic)
+
+#endif /* GL_EXT_texture_filter_anisotropic */
+
+/* ---------------------- GL_EXT_texture_filter_minmax --------------------- */
+
+#ifndef GL_EXT_texture_filter_minmax
+#define GL_EXT_texture_filter_minmax 1
+
+#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
+#define GL_WEIGHTED_AVERAGE_EXT 0x9367
+
+#define GLEW_EXT_texture_filter_minmax GLEW_GET_VAR(__GLEW_EXT_texture_filter_minmax)
+
+#endif /* GL_EXT_texture_filter_minmax */
+
+/* --------------------- GL_EXT_texture_format_BGRA8888 -------------------- */
+
+#ifndef GL_EXT_texture_format_BGRA8888
+#define GL_EXT_texture_format_BGRA8888 1
+
+#define GL_BGRA_EXT 0x80E1
+
+#define GLEW_EXT_texture_format_BGRA8888 GLEW_GET_VAR(__GLEW_EXT_texture_format_BGRA8888)
+
+#endif /* GL_EXT_texture_format_BGRA8888 */
+
+/* ------------------ GL_EXT_texture_format_sRGB_override ------------------ */
+
+#ifndef GL_EXT_texture_format_sRGB_override
+#define GL_EXT_texture_format_sRGB_override 1
+
+#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF
+
+#define GLEW_EXT_texture_format_sRGB_override GLEW_GET_VAR(__GLEW_EXT_texture_format_sRGB_override)
+
+#endif /* GL_EXT_texture_format_sRGB_override */
+
+/* ------------------------- GL_EXT_texture_integer ------------------------ */
+
+#ifndef GL_EXT_texture_integer
+#define GL_EXT_texture_integer 1
+
+#define GL_RGBA32UI_EXT 0x8D70
+#define GL_RGB32UI_EXT 0x8D71
+#define GL_ALPHA32UI_EXT 0x8D72
+#define GL_INTENSITY32UI_EXT 0x8D73
+#define GL_LUMINANCE32UI_EXT 0x8D74
+#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
+#define GL_RGBA16UI_EXT 0x8D76
+#define GL_RGB16UI_EXT 0x8D77
+#define GL_ALPHA16UI_EXT 0x8D78
+#define GL_INTENSITY16UI_EXT 0x8D79
+#define GL_LUMINANCE16UI_EXT 0x8D7A
+#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
+#define GL_RGBA8UI_EXT 0x8D7C
+#define GL_RGB8UI_EXT 0x8D7D
+#define GL_ALPHA8UI_EXT 0x8D7E
+#define GL_INTENSITY8UI_EXT 0x8D7F
+#define GL_LUMINANCE8UI_EXT 0x8D80
+#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
+#define GL_RGBA32I_EXT 0x8D82
+#define GL_RGB32I_EXT 0x8D83
+#define GL_ALPHA32I_EXT 0x8D84
+#define GL_INTENSITY32I_EXT 0x8D85
+#define GL_LUMINANCE32I_EXT 0x8D86
+#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
+#define GL_RGBA16I_EXT 0x8D88
+#define GL_RGB16I_EXT 0x8D89
+#define GL_ALPHA16I_EXT 0x8D8A
+#define GL_INTENSITY16I_EXT 0x8D8B
+#define GL_LUMINANCE16I_EXT 0x8D8C
+#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
+#define GL_RGBA8I_EXT 0x8D8E
+#define GL_RGB8I_EXT 0x8D8F
+#define GL_ALPHA8I_EXT 0x8D90
+#define GL_INTENSITY8I_EXT 0x8D91
+#define GL_LUMINANCE8I_EXT 0x8D92
+#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
+#define GL_RED_INTEGER_EXT 0x8D94
+#define GL_GREEN_INTEGER_EXT 0x8D95
+#define GL_BLUE_INTEGER_EXT 0x8D96
+#define GL_ALPHA_INTEGER_EXT 0x8D97
+#define GL_RGB_INTEGER_EXT 0x8D98
+#define GL_RGBA_INTEGER_EXT 0x8D99
+#define GL_BGR_INTEGER_EXT 0x8D9A
+#define GL_BGRA_INTEGER_EXT 0x8D9B
+#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
+#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
+#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
+
+typedef void (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
+typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
+
+#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT)
+#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT)
+#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT)
+#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT)
+#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT)
+#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT)
+
+#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer)
+
+#endif /* GL_EXT_texture_integer */
+
+/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */
+
+#ifndef GL_EXT_texture_lod_bias
+#define GL_EXT_texture_lod_bias 1
+
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
+#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
+#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
+
+#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias)
+
+#endif /* GL_EXT_texture_lod_bias */
+
+/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */
+
+#ifndef GL_EXT_texture_mirror_clamp
+#define GL_EXT_texture_mirror_clamp 1
+
+#define GL_MIRROR_CLAMP_EXT 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
+
+#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp)
+
+#endif /* GL_EXT_texture_mirror_clamp */
+
+/* ------------------ GL_EXT_texture_mirror_clamp_to_edge ------------------ */
+
+#ifndef GL_EXT_texture_mirror_clamp_to_edge
+#define GL_EXT_texture_mirror_clamp_to_edge 1
+
+#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+
+#define GLEW_EXT_texture_mirror_clamp_to_edge GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp_to_edge)
+
+#endif /* GL_EXT_texture_mirror_clamp_to_edge */
+
+/* ------------------------- GL_EXT_texture_norm16 ------------------------- */
+
+#ifndef GL_EXT_texture_norm16
+#define GL_EXT_texture_norm16 1
+
+#define GL_RGB16_EXT 0x8054
+#define GL_RGBA16_EXT 0x805B
+#define GL_R16_EXT 0x822A
+#define GL_RG16_EXT 0x822C
+#define GL_R16_SNORM_EXT 0x8F98
+#define GL_RG16_SNORM_EXT 0x8F99
+#define GL_RGB16_SNORM_EXT 0x8F9A
+#define GL_RGBA16_SNORM_EXT 0x8F9B
+
+#define GLEW_EXT_texture_norm16 GLEW_GET_VAR(__GLEW_EXT_texture_norm16)
+
+#endif /* GL_EXT_texture_norm16 */
+
+/* ------------------------- GL_EXT_texture_object ------------------------- */
+
+#ifndef GL_EXT_texture_object
+#define GL_EXT_texture_object 1
+
+#define GL_TEXTURE_PRIORITY_EXT 0x8066
+#define GL_TEXTURE_RESIDENT_EXT 0x8067
+#define GL_TEXTURE_1D_BINDING_EXT 0x8068
+#define GL_TEXTURE_2D_BINDING_EXT 0x8069
+#define GL_TEXTURE_3D_BINDING_EXT 0x806A
+
+typedef GLboolean (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences);
+typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
+typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures);
+typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures);
+typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture);
+typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities);
+
+#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT)
+#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT)
+#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT)
+#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT)
+#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT)
+#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT)
+
+#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object)
+
+#endif /* GL_EXT_texture_object */
+
+/* --------------------- GL_EXT_texture_perturb_normal --------------------- */
+
+#ifndef GL_EXT_texture_perturb_normal
+#define GL_EXT_texture_perturb_normal 1
+
+#define GL_PERTURB_EXT 0x85AE
+#define GL_TEXTURE_NORMAL_EXT 0x85AF
+
+typedef void (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
+
+#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT)
+
+#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal)
+
+#endif /* GL_EXT_texture_perturb_normal */
+
+/* ------------------------ GL_EXT_texture_query_lod ----------------------- */
+
+#ifndef GL_EXT_texture_query_lod
+#define GL_EXT_texture_query_lod 1
+
+#define GLEW_EXT_texture_query_lod GLEW_GET_VAR(__GLEW_EXT_texture_query_lod)
+
+#endif /* GL_EXT_texture_query_lod */
+
+/* ------------------------ GL_EXT_texture_rectangle ----------------------- */
+
+#ifndef GL_EXT_texture_rectangle
+#define GL_EXT_texture_rectangle 1
+
+#define GL_TEXTURE_RECTANGLE_EXT 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8
+
+#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle)
+
+#endif /* GL_EXT_texture_rectangle */
+
+/* --------------------------- GL_EXT_texture_rg --------------------------- */
+
+#ifndef GL_EXT_texture_rg
+#define GL_EXT_texture_rg 1
+
+#define GL_RED_EXT 0x1903
+#define GL_RG_EXT 0x8227
+#define GL_R8_EXT 0x8229
+#define GL_RG8_EXT 0x822B
+
+#define GLEW_EXT_texture_rg GLEW_GET_VAR(__GLEW_EXT_texture_rg)
+
+#endif /* GL_EXT_texture_rg */
+
+/* -------------------------- GL_EXT_texture_sRGB -------------------------- */
+
+#ifndef GL_EXT_texture_sRGB
+#define GL_EXT_texture_sRGB 1
+
+#define GL_SRGB_EXT 0x8C40
+#define GL_SRGB8_EXT 0x8C41
+#define GL_SRGB_ALPHA_EXT 0x8C42
+#define GL_SRGB8_ALPHA8_EXT 0x8C43
+#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
+#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
+#define GL_SLUMINANCE_EXT 0x8C46
+#define GL_SLUMINANCE8_EXT 0x8C47
+#define GL_COMPRESSED_SRGB_EXT 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
+#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+
+#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB)
+
+#endif /* GL_EXT_texture_sRGB */
+
+/* ------------------------- GL_EXT_texture_sRGB_R8 ------------------------ */
+
+#ifndef GL_EXT_texture_sRGB_R8
+#define GL_EXT_texture_sRGB_R8 1
+
+#define GL_SR8_EXT 0x8FBD
+
+#define GLEW_EXT_texture_sRGB_R8 GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_R8)
+
+#endif /* GL_EXT_texture_sRGB_R8 */
+
+/* ------------------------ GL_EXT_texture_sRGB_RG8 ------------------------ */
+
+#ifndef GL_EXT_texture_sRGB_RG8
+#define GL_EXT_texture_sRGB_RG8 1
+
+#define GL_SRG8_EXT 0x8FBE
+
+#define GLEW_EXT_texture_sRGB_RG8 GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_RG8)
+
+#endif /* GL_EXT_texture_sRGB_RG8 */
+
+/* ----------------------- GL_EXT_texture_sRGB_decode ---------------------- */
+
+#ifndef GL_EXT_texture_sRGB_decode
+#define GL_EXT_texture_sRGB_decode 1
+
+#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
+#define GL_DECODE_EXT 0x8A49
+#define GL_SKIP_DECODE_EXT 0x8A4A
+
+#define GLEW_EXT_texture_sRGB_decode GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_decode)
+
+#endif /* GL_EXT_texture_sRGB_decode */
+
+/* ----------------------- GL_EXT_texture_shadow_lod ----------------------- */
+
+#ifndef GL_EXT_texture_shadow_lod
+#define GL_EXT_texture_shadow_lod 1
+
+#define GLEW_EXT_texture_shadow_lod GLEW_GET_VAR(__GLEW_EXT_texture_shadow_lod)
+
+#endif /* GL_EXT_texture_shadow_lod */
+
+/* --------------------- GL_EXT_texture_shared_exponent -------------------- */
+
+#ifndef GL_EXT_texture_shared_exponent
+#define GL_EXT_texture_shared_exponent 1
+
+#define GL_RGB9_E5_EXT 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
+
+#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent)
+
+#endif /* GL_EXT_texture_shared_exponent */
+
+/* -------------------------- GL_EXT_texture_snorm ------------------------- */
+
+#ifndef GL_EXT_texture_snorm
+#define GL_EXT_texture_snorm 1
+
+#define GL_RED_SNORM 0x8F90
+#define GL_RG_SNORM 0x8F91
+#define GL_RGB_SNORM 0x8F92
+#define GL_RGBA_SNORM 0x8F93
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGB8_SNORM 0x8F96
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM 0x8F98
+#define GL_RG16_SNORM 0x8F99
+#define GL_RGB16_SNORM 0x8F9A
+#define GL_RGBA16_SNORM 0x8F9B
+#define GL_SIGNED_NORMALIZED 0x8F9C
+#define GL_ALPHA_SNORM 0x9010
+#define GL_LUMINANCE_SNORM 0x9011
+#define GL_LUMINANCE_ALPHA_SNORM 0x9012
+#define GL_INTENSITY_SNORM 0x9013
+#define GL_ALPHA8_SNORM 0x9014
+#define GL_LUMINANCE8_SNORM 0x9015
+#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016
+#define GL_INTENSITY8_SNORM 0x9017
+#define GL_ALPHA16_SNORM 0x9018
+#define GL_LUMINANCE16_SNORM 0x9019
+#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A
+#define GL_INTENSITY16_SNORM 0x901B
+
+#define GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm)
+
+#endif /* GL_EXT_texture_snorm */
+
+/* ------------------------- GL_EXT_texture_storage ------------------------ */
+
+#ifndef GL_EXT_texture_storage
+#define GL_EXT_texture_storage 1
+
+#define GL_ALPHA8_EXT 0x803C
+#define GL_LUMINANCE8_EXT 0x8040
+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
+#define GL_RGB10_EXT 0x8052
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_R8_EXT 0x8229
+#define GL_RG8_EXT 0x822B
+#define GL_R16F_EXT 0x822D
+#define GL_R32F_EXT 0x822E
+#define GL_RG16F_EXT 0x822F
+#define GL_RG32F_EXT 0x8230
+#define GL_RGBA32F_EXT 0x8814
+#define GL_RGB32F_EXT 0x8815
+#define GL_ALPHA32F_EXT 0x8816
+#define GL_LUMINANCE32F_EXT 0x8818
+#define GL_LUMINANCE_ALPHA32F_EXT 0x8819
+#define GL_RGBA16F_EXT 0x881A
+#define GL_RGB16F_EXT 0x881B
+#define GL_ALPHA16F_EXT 0x881C
+#define GL_LUMINANCE16F_EXT 0x881E
+#define GL_LUMINANCE_ALPHA16F_EXT 0x881F
+#define GL_RGB_RAW_422_APPLE 0x8A51
+#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
+#define GL_BGRA8_EXT 0x93A1
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glTexStorage1DEXT GLEW_GET_FUN(__glewTexStorage1DEXT)
+#define glTexStorage2DEXT GLEW_GET_FUN(__glewTexStorage2DEXT)
+#define glTexStorage3DEXT GLEW_GET_FUN(__glewTexStorage3DEXT)
+#define glTextureStorage1DEXT GLEW_GET_FUN(__glewTextureStorage1DEXT)
+#define glTextureStorage2DEXT GLEW_GET_FUN(__glewTextureStorage2DEXT)
+#define glTextureStorage3DEXT GLEW_GET_FUN(__glewTextureStorage3DEXT)
+
+#define GLEW_EXT_texture_storage GLEW_GET_VAR(__GLEW_EXT_texture_storage)
+
+#endif /* GL_EXT_texture_storage */
+
+/* ------------------- GL_EXT_texture_storage_compression ------------------ */
+
+#ifndef GL_EXT_texture_storage_compression
+#define GL_EXT_texture_storage_compression 1
+
+#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E
+#define GL_SURFACE_COMPRESSION_EXT 0x96C0
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list);
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list);
+
+#define glTexStorageAttribs2DEXT GLEW_GET_FUN(__glewTexStorageAttribs2DEXT)
+#define glTexStorageAttribs3DEXT GLEW_GET_FUN(__glewTexStorageAttribs3DEXT)
+
+#define GLEW_EXT_texture_storage_compression GLEW_GET_VAR(__GLEW_EXT_texture_storage_compression)
+
+#endif /* GL_EXT_texture_storage_compression */
+
+/* ------------------------- GL_EXT_texture_swizzle ------------------------ */
+
+#ifndef GL_EXT_texture_swizzle
+#define GL_EXT_texture_swizzle 1
+
+#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
+#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43
+#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44
+#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46
+
+#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle)
+
+#endif /* GL_EXT_texture_swizzle */
+
+/* ------------------- GL_EXT_texture_type_2_10_10_10_REV ------------------ */
+
+#ifndef GL_EXT_texture_type_2_10_10_10_REV
+#define GL_EXT_texture_type_2_10_10_10_REV 1
+
+#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
+
+#define GLEW_EXT_texture_type_2_10_10_10_REV GLEW_GET_VAR(__GLEW_EXT_texture_type_2_10_10_10_REV)
+
+#endif /* GL_EXT_texture_type_2_10_10_10_REV */
+
+/* -------------------------- GL_EXT_texture_view -------------------------- */
+
+#ifndef GL_EXT_texture_view
+#define GL_EXT_texture_view 1
+
+#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+#define glTextureViewEXT GLEW_GET_FUN(__glewTextureViewEXT)
+
+#define GLEW_EXT_texture_view GLEW_GET_VAR(__GLEW_EXT_texture_view)
+
+#endif /* GL_EXT_texture_view */
+
+/* --------------------------- GL_EXT_timer_query -------------------------- */
+
+#ifndef GL_EXT_timer_query
+#define GL_EXT_timer_query 1
+
+#define GL_TIME_ELAPSED_EXT 0x88BF
+
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params);
+
+#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT)
+#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT)
+
+#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query)
+
+#endif /* GL_EXT_timer_query */
+
+/* ----------------------- GL_EXT_transform_feedback ----------------------- */
+
+#ifndef GL_EXT_transform_feedback
+#define GL_EXT_transform_feedback 1
+
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
+#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
+#define GL_RASTERIZER_DISCARD_EXT 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C
+#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
+
+typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar * const* varyings, GLenum bufferMode);
+
+#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT)
+#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT)
+#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT)
+#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT)
+#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT)
+#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT)
+#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT)
+
+#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback)
+
+#endif /* GL_EXT_transform_feedback */
+
+/* ------------------------- GL_EXT_unpack_subimage ------------------------ */
+
+#ifndef GL_EXT_unpack_subimage
+#define GL_EXT_unpack_subimage 1
+
+#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2
+#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4
+
+#define GLEW_EXT_unpack_subimage GLEW_GET_VAR(__GLEW_EXT_unpack_subimage)
+
+#endif /* GL_EXT_unpack_subimage */
+
+/* -------------------------- GL_EXT_vertex_array -------------------------- */
+
+#ifndef GL_EXT_vertex_array
+#define GL_EXT_vertex_array 1
+
+#define GL_DOUBLE_EXT 0x140A
+#define GL_VERTEX_ARRAY_EXT 0x8074
+#define GL_NORMAL_ARRAY_EXT 0x8075
+#define GL_COLOR_ARRAY_EXT 0x8076
+#define GL_INDEX_ARRAY_EXT 0x8077
+#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
+#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
+#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
+#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
+#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
+#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
+#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
+#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
+#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
+#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
+#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
+#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
+#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
+#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
+#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
+#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
+#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
+#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
+#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
+#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
+
+typedef void (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i);
+typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer);
+typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
+
+#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT)
+#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT)
+#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT)
+#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT)
+#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT)
+#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT)
+#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT)
+#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT)
+
+#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array)
+
+#endif /* GL_EXT_vertex_array */
+
+/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */
+
+#ifndef GL_EXT_vertex_array_bgra
+#define GL_EXT_vertex_array_bgra 1
+
+#define GL_BGRA 0x80E1
+
+#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra)
+
+#endif /* GL_EXT_vertex_array_bgra */
+
+/* ----------------------- GL_EXT_vertex_array_setXXX ---------------------- */
+
+#ifndef GL_EXT_vertex_array_setXXX
+#define GL_EXT_vertex_array_setXXX 1
+
+typedef void (GLAPIENTRY * PFNGLBINDARRAYSETEXTPROC) (const void *arrayset);
+typedef const void * (GLAPIENTRY * PFNGLCREATEARRAYSETEXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLDELETEARRAYSETSEXTPROC) (GLsizei n, const void *arrayset[]);
+
+#define glBindArraySetEXT GLEW_GET_FUN(__glewBindArraySetEXT)
+#define glCreateArraySetExt GLEW_GET_FUN(__glewCreateArraySetExt)
+#define glDeleteArraySetsEXT GLEW_GET_FUN(__glewDeleteArraySetsEXT)
+
+#define GLEW_EXT_vertex_array_setXXX GLEW_GET_VAR(__GLEW_EXT_vertex_array_setXXX)
+
+#endif /* GL_EXT_vertex_array_setXXX */
+
+/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */
+
+#ifndef GL_EXT_vertex_attrib_64bit
+#define GL_EXT_vertex_attrib_64bit 1
+
+#define GL_DOUBLE_MAT2_EXT 0x8F46
+#define GL_DOUBLE_MAT3_EXT 0x8F47
+#define GL_DOUBLE_MAT4_EXT 0x8F48
+#define GL_DOUBLE_MAT2x3_EXT 0x8F49
+#define GL_DOUBLE_MAT2x4_EXT 0x8F4A
+#define GL_DOUBLE_MAT3x2_EXT 0x8F4B
+#define GL_DOUBLE_MAT3x4_EXT 0x8F4C
+#define GL_DOUBLE_MAT4x2_EXT 0x8F4D
+#define GL_DOUBLE_MAT4x3_EXT 0x8F4E
+#define GL_DOUBLE_VEC2_EXT 0x8FFC
+#define GL_DOUBLE_VEC3_EXT 0x8FFD
+#define GL_DOUBLE_VEC4_EXT 0x8FFE
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+
+#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT)
+#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT)
+#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT)
+#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT)
+#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT)
+#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT)
+#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT)
+#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT)
+#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT)
+#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT)
+#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT)
+
+#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit)
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
+/* -------------------------- GL_EXT_vertex_shader ------------------------- */
+
+#ifndef GL_EXT_vertex_shader
+#define GL_EXT_vertex_shader 1
+
+#define GL_VERTEX_SHADER_EXT 0x8780
+#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
+#define GL_OP_INDEX_EXT 0x8782
+#define GL_OP_NEGATE_EXT 0x8783
+#define GL_OP_DOT3_EXT 0x8784
+#define GL_OP_DOT4_EXT 0x8785
+#define GL_OP_MUL_EXT 0x8786
+#define GL_OP_ADD_EXT 0x8787
+#define GL_OP_MADD_EXT 0x8788
+#define GL_OP_FRAC_EXT 0x8789
+#define GL_OP_MAX_EXT 0x878A
+#define GL_OP_MIN_EXT 0x878B
+#define GL_OP_SET_GE_EXT 0x878C
+#define GL_OP_SET_LT_EXT 0x878D
+#define GL_OP_CLAMP_EXT 0x878E
+#define GL_OP_FLOOR_EXT 0x878F
+#define GL_OP_ROUND_EXT 0x8790
+#define GL_OP_EXP_BASE_2_EXT 0x8791
+#define GL_OP_LOG_BASE_2_EXT 0x8792
+#define GL_OP_POWER_EXT 0x8793
+#define GL_OP_RECIP_EXT 0x8794
+#define GL_OP_RECIP_SQRT_EXT 0x8795
+#define GL_OP_SUB_EXT 0x8796
+#define GL_OP_CROSS_PRODUCT_EXT 0x8797
+#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
+#define GL_OP_MOV_EXT 0x8799
+#define GL_OUTPUT_VERTEX_EXT 0x879A
+#define GL_OUTPUT_COLOR0_EXT 0x879B
+#define GL_OUTPUT_COLOR1_EXT 0x879C
+#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
+#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
+#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
+#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
+#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
+#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
+#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
+#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
+#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
+#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
+#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
+#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
+#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
+#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
+#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
+#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
+#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
+#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
+#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
+#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
+#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
+#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
+#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
+#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
+#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
+#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
+#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
+#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
+#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
+#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
+#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
+#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
+#define GL_OUTPUT_FOG_EXT 0x87BD
+#define GL_SCALAR_EXT 0x87BE
+#define GL_VECTOR_EXT 0x87BF
+#define GL_MATRIX_EXT 0x87C0
+#define GL_VARIANT_EXT 0x87C1
+#define GL_INVARIANT_EXT 0x87C2
+#define GL_LOCAL_CONSTANT_EXT 0x87C3
+#define GL_LOCAL_EXT 0x87C4
+#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
+#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
+#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
+#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
+#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CC
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CD
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
+#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
+#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
+#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
+#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
+#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
+#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
+#define GL_X_EXT 0x87D5
+#define GL_Y_EXT 0x87D6
+#define GL_Z_EXT 0x87D7
+#define GL_W_EXT 0x87D8
+#define GL_NEGATIVE_X_EXT 0x87D9
+#define GL_NEGATIVE_Y_EXT 0x87DA
+#define GL_NEGATIVE_Z_EXT 0x87DB
+#define GL_NEGATIVE_W_EXT 0x87DC
+#define GL_ZERO_EXT 0x87DD
+#define GL_ONE_EXT 0x87DE
+#define GL_NEGATIVE_ONE_EXT 0x87DF
+#define GL_NORMALIZED_RANGE_EXT 0x87E0
+#define GL_FULL_RANGE_EXT 0x87E1
+#define GL_CURRENT_VERTEX_EXT 0x87E2
+#define GL_MVP_MATRIX_EXT 0x87E3
+#define GL_VARIANT_VALUE_EXT 0x87E4
+#define GL_VARIANT_DATATYPE_EXT 0x87E5
+#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
+#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
+#define GL_VARIANT_ARRAY_EXT 0x87E8
+#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
+#define GL_INVARIANT_VALUE_EXT 0x87EA
+#define GL_INVARIANT_DATATYPE_EXT 0x87EB
+#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
+#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
+
+typedef void (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void);
+typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
+typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
+typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value);
+typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
+typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void);
+typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components);
+typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
+typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
+typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data);
+typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
+typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
+typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, void *addr);
+typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, void *addr);
+typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
+typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, void *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr);
+typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr);
+typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+
+#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT)
+#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT)
+#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT)
+#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT)
+#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT)
+#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT)
+#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT)
+#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT)
+#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT)
+#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT)
+#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT)
+#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT)
+#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT)
+#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT)
+#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT)
+#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT)
+#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT)
+#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT)
+#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT)
+#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT)
+#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT)
+#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT)
+#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT)
+#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT)
+#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT)
+#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT)
+#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT)
+#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT)
+#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT)
+#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT)
+#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT)
+#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT)
+#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT)
+#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT)
+#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT)
+#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT)
+#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT)
+#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT)
+#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT)
+#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT)
+#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT)
+#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT)
+
+#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader)
+
+#endif /* GL_EXT_vertex_shader */
+
+/* ------------------------ GL_EXT_vertex_weighting ------------------------ */
+
+#ifndef GL_EXT_vertex_weighting
+#define GL_EXT_vertex_weighting 1
+
+#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3
+#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6
+#define GL_MODELVIEW0_EXT 0x1700
+#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
+#define GL_MODELVIEW1_MATRIX_EXT 0x8506
+#define GL_VERTEX_WEIGHTING_EXT 0x8509
+#define GL_MODELVIEW1_EXT 0x850A
+#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
+#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
+
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight);
+
+#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT)
+#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT)
+#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT)
+
+#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting)
+
+#endif /* GL_EXT_vertex_weighting */
+
+/* ------------------------ GL_EXT_win32_keyed_mutex ----------------------- */
+
+#ifndef GL_EXT_win32_keyed_mutex
+#define GL_EXT_win32_keyed_mutex 1
+
+typedef GLboolean (GLAPIENTRY * PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout);
+typedef GLboolean (GLAPIENTRY * PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key);
+
+#define glAcquireKeyedMutexWin32EXT GLEW_GET_FUN(__glewAcquireKeyedMutexWin32EXT)
+#define glReleaseKeyedMutexWin32EXT GLEW_GET_FUN(__glewReleaseKeyedMutexWin32EXT)
+
+#define GLEW_EXT_win32_keyed_mutex GLEW_GET_VAR(__GLEW_EXT_win32_keyed_mutex)
+
+#endif /* GL_EXT_win32_keyed_mutex */
+
+/* ------------------------ GL_EXT_window_rectangles ----------------------- */
+
+#ifndef GL_EXT_window_rectangles
+#define GL_EXT_window_rectangles 1
+
+#define GL_INCLUSIVE_EXT 0x8F10
+#define GL_EXCLUSIVE_EXT 0x8F11
+#define GL_WINDOW_RECTANGLE_EXT 0x8F12
+#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
+#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
+#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
+
+typedef void (GLAPIENTRY * PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint box[]);
+
+#define glWindowRectanglesEXT GLEW_GET_FUN(__glewWindowRectanglesEXT)
+
+#define GLEW_EXT_window_rectangles GLEW_GET_VAR(__GLEW_EXT_window_rectangles)
+
+#endif /* GL_EXT_window_rectangles */
+
+/* ------------------------- GL_EXT_x11_sync_object ------------------------ */
+
+#ifndef GL_EXT_x11_sync_object
+#define GL_EXT_x11_sync_object 1
+
+#define GL_SYNC_X11_FENCE_EXT 0x90E1
+
+typedef GLsync (GLAPIENTRY * PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
+
+#define glImportSyncEXT GLEW_GET_FUN(__glewImportSyncEXT)
+
+#define GLEW_EXT_x11_sync_object GLEW_GET_VAR(__GLEW_EXT_x11_sync_object)
+
+#endif /* GL_EXT_x11_sync_object */
+
+/* ----------------------- GL_FJ_shader_binary_GCCSO ----------------------- */
+
+#ifndef GL_FJ_shader_binary_GCCSO
+#define GL_FJ_shader_binary_GCCSO 1
+
+#define GL_GCCSO_SHADER_BINARY_FJ 0x9260
+
+#define GLEW_FJ_shader_binary_GCCSO GLEW_GET_VAR(__GLEW_FJ_shader_binary_GCCSO)
+
+#endif /* GL_FJ_shader_binary_GCCSO */
+
+/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */
+
+#ifndef GL_GREMEDY_frame_terminator
+#define GL_GREMEDY_frame_terminator 1
+
+typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void);
+
+#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY)
+
+#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator)
+
+#endif /* GL_GREMEDY_frame_terminator */
+
+/* ------------------------ GL_GREMEDY_string_marker ----------------------- */
+
+#ifndef GL_GREMEDY_string_marker
+#define GL_GREMEDY_string_marker 1
+
+typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string);
+
+#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY)
+
+#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker)
+
+#endif /* GL_GREMEDY_string_marker */
+
+/* --------------------- GL_HP_convolution_border_modes -------------------- */
+
+#ifndef GL_HP_convolution_border_modes
+#define GL_HP_convolution_border_modes 1
+
+#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes)
+
+#endif /* GL_HP_convolution_border_modes */
+
+/* ------------------------- GL_HP_image_transform ------------------------- */
+
+#ifndef GL_HP_image_transform
+#define GL_HP_image_transform 1
+
+typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param);
+typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param);
+typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params);
+
+#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP)
+#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP)
+#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP)
+#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP)
+#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP)
+#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP)
+
+#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform)
+
+#endif /* GL_HP_image_transform */
+
+/* -------------------------- GL_HP_occlusion_test ------------------------- */
+
+#ifndef GL_HP_occlusion_test
+#define GL_HP_occlusion_test 1
+
+#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test)
+
+#endif /* GL_HP_occlusion_test */
+
+/* ------------------------- GL_HP_texture_lighting ------------------------ */
+
+#ifndef GL_HP_texture_lighting
+#define GL_HP_texture_lighting 1
+
+#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting)
+
+#endif /* GL_HP_texture_lighting */
+
+/* --------------------------- GL_IBM_cull_vertex -------------------------- */
+
+#ifndef GL_IBM_cull_vertex
+#define GL_IBM_cull_vertex 1
+
+#define GL_CULL_VERTEX_IBM 103050
+
+#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex)
+
+#endif /* GL_IBM_cull_vertex */
+
+/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */
+
+#ifndef GL_IBM_multimode_draw_arrays
+#define GL_IBM_multimode_draw_arrays 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
+typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride);
+
+#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM)
+#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM)
+
+#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays)
+
+#endif /* GL_IBM_multimode_draw_arrays */
+
+/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */
+
+#ifndef GL_IBM_rasterpos_clip
+#define GL_IBM_rasterpos_clip 1
+
+#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010
+
+#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip)
+
+#endif /* GL_IBM_rasterpos_clip */
+
+/* --------------------------- GL_IBM_static_data -------------------------- */
+
+#ifndef GL_IBM_static_data
+#define GL_IBM_static_data 1
+
+#define GL_ALL_STATIC_DATA_IBM 103060
+#define GL_STATIC_VERTEX_ARRAY_IBM 103061
+
+#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data)
+
+#endif /* GL_IBM_static_data */
+
+/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */
+
+#ifndef GL_IBM_texture_mirrored_repeat
+#define GL_IBM_texture_mirrored_repeat 1
+
+#define GL_MIRRORED_REPEAT_IBM 0x8370
+
+#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat)
+
+#endif /* GL_IBM_texture_mirrored_repeat */
+
+/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */
+
+#ifndef GL_IBM_vertex_array_lists
+#define GL_IBM_vertex_array_lists 1
+
+#define GL_VERTEX_ARRAY_LIST_IBM 103070
+#define GL_NORMAL_ARRAY_LIST_IBM 103071
+#define GL_COLOR_ARRAY_LIST_IBM 103072
+#define GL_INDEX_ARRAY_LIST_IBM 103073
+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
+#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
+
+typedef void (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride);
+
+#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM)
+#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM)
+#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM)
+#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM)
+#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM)
+#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM)
+#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM)
+#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM)
+
+#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists)
+
+#endif /* GL_IBM_vertex_array_lists */
+
+/* ------------------------ GL_IMG_bindless_texture ------------------------ */
+
+#ifndef GL_IMG_bindless_texture
+#define GL_IMG_bindless_texture 1
+
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64* value);
+
+#define glGetTextureHandleIMG GLEW_GET_FUN(__glewGetTextureHandleIMG)
+#define glGetTextureSamplerHandleIMG GLEW_GET_FUN(__glewGetTextureSamplerHandleIMG)
+#define glProgramUniformHandleui64IMG GLEW_GET_FUN(__glewProgramUniformHandleui64IMG)
+#define glProgramUniformHandleui64vIMG GLEW_GET_FUN(__glewProgramUniformHandleui64vIMG)
+#define glUniformHandleui64IMG GLEW_GET_FUN(__glewUniformHandleui64IMG)
+#define glUniformHandleui64vIMG GLEW_GET_FUN(__glewUniformHandleui64vIMG)
+
+#define GLEW_IMG_bindless_texture GLEW_GET_VAR(__GLEW_IMG_bindless_texture)
+
+#endif /* GL_IMG_bindless_texture */
+
+/* --------------------- GL_IMG_framebuffer_downsample --------------------- */
+
+#ifndef GL_IMG_framebuffer_downsample
+#define GL_IMG_framebuffer_downsample 1
+
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C
+#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D
+#define GL_DOWNSAMPLE_SCALES_IMG 0x913E
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
+
+#define glFramebufferTexture2DDownsampleIMG GLEW_GET_FUN(__glewFramebufferTexture2DDownsampleIMG)
+#define glFramebufferTextureLayerDownsampleIMG GLEW_GET_FUN(__glewFramebufferTextureLayerDownsampleIMG)
+
+#define GLEW_IMG_framebuffer_downsample GLEW_GET_VAR(__GLEW_IMG_framebuffer_downsample)
+
+#endif /* GL_IMG_framebuffer_downsample */
+
+/* ----------------- GL_IMG_multisampled_render_to_texture ----------------- */
+
+#ifndef GL_IMG_multisampled_render_to_texture
+#define GL_IMG_multisampled_render_to_texture 1
+
+#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
+#define GL_MAX_SAMPLES_IMG 0x9135
+#define GL_TEXTURE_SAMPLES_IMG 0x9136
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glFramebufferTexture2DMultisampleIMG GLEW_GET_FUN(__glewFramebufferTexture2DMultisampleIMG)
+#define glRenderbufferStorageMultisampleIMG GLEW_GET_FUN(__glewRenderbufferStorageMultisampleIMG)
+
+#define GLEW_IMG_multisampled_render_to_texture GLEW_GET_VAR(__GLEW_IMG_multisampled_render_to_texture)
+
+#endif /* GL_IMG_multisampled_render_to_texture */
+
+/* ------------------------- GL_IMG_program_binary ------------------------- */
+
+#ifndef GL_IMG_program_binary
+#define GL_IMG_program_binary 1
+
+#define GL_SGX_PROGRAM_BINARY_IMG 0x9130
+
+#define GLEW_IMG_program_binary GLEW_GET_VAR(__GLEW_IMG_program_binary)
+
+#endif /* GL_IMG_program_binary */
+
+/* --------------------------- GL_IMG_read_format -------------------------- */
+
+#ifndef GL_IMG_read_format
+#define GL_IMG_read_format 1
+
+#define GL_BGRA_IMG 0x80E1
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365
+
+#define GLEW_IMG_read_format GLEW_GET_VAR(__GLEW_IMG_read_format)
+
+#endif /* GL_IMG_read_format */
+
+/* -------------------------- GL_IMG_shader_binary ------------------------- */
+
+#ifndef GL_IMG_shader_binary
+#define GL_IMG_shader_binary 1
+
+#define GL_SGX_BINARY_IMG 0x8C0A
+
+#define GLEW_IMG_shader_binary GLEW_GET_VAR(__GLEW_IMG_shader_binary)
+
+#endif /* GL_IMG_shader_binary */
+
+/* -------------------- GL_IMG_texture_compression_pvrtc ------------------- */
+
+#ifndef GL_IMG_texture_compression_pvrtc
+#define GL_IMG_texture_compression_pvrtc 1
+
+#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
+#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
+#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
+#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
+
+#define GLEW_IMG_texture_compression_pvrtc GLEW_GET_VAR(__GLEW_IMG_texture_compression_pvrtc)
+
+#endif /* GL_IMG_texture_compression_pvrtc */
+
+/* ------------------- GL_IMG_texture_compression_pvrtc2 ------------------- */
+
+#ifndef GL_IMG_texture_compression_pvrtc2
+#define GL_IMG_texture_compression_pvrtc2 1
+
+#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
+#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
+
+#define GLEW_IMG_texture_compression_pvrtc2 GLEW_GET_VAR(__GLEW_IMG_texture_compression_pvrtc2)
+
+#endif /* GL_IMG_texture_compression_pvrtc2 */
+
+/* --------------- GL_IMG_texture_env_enhanced_fixed_function -------------- */
+
+#ifndef GL_IMG_texture_env_enhanced_fixed_function
+#define GL_IMG_texture_env_enhanced_fixed_function 1
+
+#define GL_DOT3_RGBA_IMG 0x86AF
+#define GL_MODULATE_COLOR_IMG 0x8C04
+#define GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05
+#define GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06
+#define GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07
+#define GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08
+#define GL_ADD_BLEND_IMG 0x8C09
+
+#define GLEW_IMG_texture_env_enhanced_fixed_function GLEW_GET_VAR(__GLEW_IMG_texture_env_enhanced_fixed_function)
+
+#endif /* GL_IMG_texture_env_enhanced_fixed_function */
+
+/* ---------------------- GL_IMG_texture_filter_cubic ---------------------- */
+
+#ifndef GL_IMG_texture_filter_cubic
+#define GL_IMG_texture_filter_cubic 1
+
+#define GL_CUBIC_IMG 0x9139
+#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A
+#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B
+
+#define GLEW_IMG_texture_filter_cubic GLEW_GET_VAR(__GLEW_IMG_texture_filter_cubic)
+
+#endif /* GL_IMG_texture_filter_cubic */
+
+/* --------------------- GL_IMG_tile_region_protection --------------------- */
+
+#ifndef GL_IMG_tile_region_protection
+#define GL_IMG_tile_region_protection 1
+
+#define GL_TRP_IMG 0x8EA0
+#define GL_TRP_ERROR_CONTEXT_RESET_IMG 0x8EA1
+#define GL_TRP_UNSUPPORTED_CONTEXT_IMG 0x8EA2
+
+#define GLEW_IMG_tile_region_protection GLEW_GET_VAR(__GLEW_IMG_tile_region_protection)
+
+#endif /* GL_IMG_tile_region_protection */
+
+/* -------------------------- GL_INGR_color_clamp -------------------------- */
+
+#ifndef GL_INGR_color_clamp
+#define GL_INGR_color_clamp 1
+
+#define GL_RED_MIN_CLAMP_INGR 0x8560
+#define GL_GREEN_MIN_CLAMP_INGR 0x8561
+#define GL_BLUE_MIN_CLAMP_INGR 0x8562
+#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
+#define GL_RED_MAX_CLAMP_INGR 0x8564
+#define GL_GREEN_MAX_CLAMP_INGR 0x8565
+#define GL_BLUE_MAX_CLAMP_INGR 0x8566
+#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
+
+#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp)
+
+#endif /* GL_INGR_color_clamp */
+
+/* ------------------------- GL_INGR_interlace_read ------------------------ */
+
+#ifndef GL_INGR_interlace_read
+#define GL_INGR_interlace_read 1
+
+#define GL_INTERLACE_READ_INGR 0x8568
+
+#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read)
+
+#endif /* GL_INGR_interlace_read */
+
+/* ----------------------- GL_INTEL_blackhole_render ----------------------- */
+
+#ifndef GL_INTEL_blackhole_render
+#define GL_INTEL_blackhole_render 1
+
+#define GL_BLACKHOLE_RENDER_INTEL 0x83FC
+
+#define GLEW_INTEL_blackhole_render GLEW_GET_VAR(__GLEW_INTEL_blackhole_render)
+
+#endif /* GL_INTEL_blackhole_render */
+
+/* ------------------ GL_INTEL_conservative_rasterization ------------------ */
+
+#ifndef GL_INTEL_conservative_rasterization
+#define GL_INTEL_conservative_rasterization 1
+
+#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
+
+#define GLEW_INTEL_conservative_rasterization GLEW_GET_VAR(__GLEW_INTEL_conservative_rasterization)
+
+#endif /* GL_INTEL_conservative_rasterization */
+
+/* ------------------- GL_INTEL_fragment_shader_ordering ------------------- */
+
+#ifndef GL_INTEL_fragment_shader_ordering
+#define GL_INTEL_fragment_shader_ordering 1
+
+#define GLEW_INTEL_fragment_shader_ordering GLEW_GET_VAR(__GLEW_INTEL_fragment_shader_ordering)
+
+#endif /* GL_INTEL_fragment_shader_ordering */
+
+/* ----------------------- GL_INTEL_framebuffer_CMAA ----------------------- */
+
+#ifndef GL_INTEL_framebuffer_CMAA
+#define GL_INTEL_framebuffer_CMAA 1
+
+typedef void (GLAPIENTRY * PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);
+
+#define glApplyFramebufferAttachmentCMAAINTEL GLEW_GET_FUN(__glewApplyFramebufferAttachmentCMAAINTEL)
+
+#define GLEW_INTEL_framebuffer_CMAA GLEW_GET_VAR(__GLEW_INTEL_framebuffer_CMAA)
+
+#endif /* GL_INTEL_framebuffer_CMAA */
+
+/* -------------------------- GL_INTEL_map_texture ------------------------- */
+
+#ifndef GL_INTEL_map_texture
+#define GL_INTEL_map_texture 1
+
+#define GL_LAYOUT_DEFAULT_INTEL 0
+#define GL_LAYOUT_LINEAR_INTEL 1
+#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
+#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF
+
+typedef void * (GLAPIENTRY * PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint* stride, GLenum *layout);
+typedef void (GLAPIENTRY * PFNGLSYNCTEXTUREINTELPROC) (GLuint texture);
+typedef void (GLAPIENTRY * PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level);
+
+#define glMapTexture2DINTEL GLEW_GET_FUN(__glewMapTexture2DINTEL)
+#define glSyncTextureINTEL GLEW_GET_FUN(__glewSyncTextureINTEL)
+#define glUnmapTexture2DINTEL GLEW_GET_FUN(__glewUnmapTexture2DINTEL)
+
+#define GLEW_INTEL_map_texture GLEW_GET_VAR(__GLEW_INTEL_map_texture)
+
+#endif /* GL_INTEL_map_texture */
+
+/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */
+
+#ifndef GL_INTEL_parallel_arrays
+#define GL_INTEL_parallel_arrays 1
+
+#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
+
+typedef void (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer);
+typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer);
+
+#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL)
+#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL)
+#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL)
+#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL)
+
+#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays)
+
+#endif /* GL_INTEL_parallel_arrays */
+
+/* ----------------------- GL_INTEL_performance_query ---------------------- */
+
+#ifndef GL_INTEL_performance_query
+#define GL_INTEL_performance_query 1
+
+#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x0000
+#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x0001
+#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
+#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
+#define GL_PERFQUERY_WAIT_INTEL 0x83FB
+#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
+#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
+#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
+#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
+#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
+#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
+#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
+#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
+#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
+#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
+#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
+#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
+#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
+#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
+#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
+
+typedef void (GLAPIENTRY * PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (GLAPIENTRY * PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint* queryHandle);
+typedef void (GLAPIENTRY * PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (GLAPIENTRY * PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (GLAPIENTRY * PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint* queryId);
+typedef void (GLAPIENTRY * PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint* nextQueryId);
+typedef void (GLAPIENTRY * PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar* counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
+typedef void (GLAPIENTRY * PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);
+typedef void (GLAPIENTRY * PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar* queryName, GLuint *queryId);
+typedef void (GLAPIENTRY * PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar* queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
+
+#define glBeginPerfQueryINTEL GLEW_GET_FUN(__glewBeginPerfQueryINTEL)
+#define glCreatePerfQueryINTEL GLEW_GET_FUN(__glewCreatePerfQueryINTEL)
+#define glDeletePerfQueryINTEL GLEW_GET_FUN(__glewDeletePerfQueryINTEL)
+#define glEndPerfQueryINTEL GLEW_GET_FUN(__glewEndPerfQueryINTEL)
+#define glGetFirstPerfQueryIdINTEL GLEW_GET_FUN(__glewGetFirstPerfQueryIdINTEL)
+#define glGetNextPerfQueryIdINTEL GLEW_GET_FUN(__glewGetNextPerfQueryIdINTEL)
+#define glGetPerfCounterInfoINTEL GLEW_GET_FUN(__glewGetPerfCounterInfoINTEL)
+#define glGetPerfQueryDataINTEL GLEW_GET_FUN(__glewGetPerfQueryDataINTEL)
+#define glGetPerfQueryIdByNameINTEL GLEW_GET_FUN(__glewGetPerfQueryIdByNameINTEL)
+#define glGetPerfQueryInfoINTEL GLEW_GET_FUN(__glewGetPerfQueryInfoINTEL)
+
+#define GLEW_INTEL_performance_query GLEW_GET_VAR(__GLEW_INTEL_performance_query)
+
+#endif /* GL_INTEL_performance_query */
+
+/* ------------------- GL_INTEL_shader_integer_functions2 ------------------ */
+
+#ifndef GL_INTEL_shader_integer_functions2
+#define GL_INTEL_shader_integer_functions2 1
+
+#define GLEW_INTEL_shader_integer_functions2 GLEW_GET_VAR(__GLEW_INTEL_shader_integer_functions2)
+
+#endif /* GL_INTEL_shader_integer_functions2 */
+
+/* ------------------------ GL_INTEL_texture_scissor ----------------------- */
+
+#ifndef GL_INTEL_texture_scissor
+#define GL_INTEL_texture_scissor 1
+
+typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc);
+typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh);
+
+#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL)
+#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL)
+
+#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor)
+
+#endif /* GL_INTEL_texture_scissor */
+
+/* --------------------- GL_KHR_blend_equation_advanced -------------------- */
+
+#ifndef GL_KHR_blend_equation_advanced
+#define GL_KHR_blend_equation_advanced 1
+
+#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
+#define GL_MULTIPLY_KHR 0x9294
+#define GL_SCREEN_KHR 0x9295
+#define GL_OVERLAY_KHR 0x9296
+#define GL_DARKEN_KHR 0x9297
+#define GL_LIGHTEN_KHR 0x9298
+#define GL_COLORDODGE_KHR 0x9299
+#define GL_COLORBURN_KHR 0x929A
+#define GL_HARDLIGHT_KHR 0x929B
+#define GL_SOFTLIGHT_KHR 0x929C
+#define GL_DIFFERENCE_KHR 0x929E
+#define GL_EXCLUSION_KHR 0x92A0
+#define GL_HSL_HUE_KHR 0x92AD
+#define GL_HSL_SATURATION_KHR 0x92AE
+#define GL_HSL_COLOR_KHR 0x92AF
+#define GL_HSL_LUMINOSITY_KHR 0x92B0
+
+typedef void (GLAPIENTRY * PFNGLBLENDBARRIERKHRPROC) (void);
+
+#define glBlendBarrierKHR GLEW_GET_FUN(__glewBlendBarrierKHR)
+
+#define GLEW_KHR_blend_equation_advanced GLEW_GET_VAR(__GLEW_KHR_blend_equation_advanced)
+
+#endif /* GL_KHR_blend_equation_advanced */
+
+/* ---------------- GL_KHR_blend_equation_advanced_coherent ---------------- */
+
+#ifndef GL_KHR_blend_equation_advanced_coherent
+#define GL_KHR_blend_equation_advanced_coherent 1
+
+#define GLEW_KHR_blend_equation_advanced_coherent GLEW_GET_VAR(__GLEW_KHR_blend_equation_advanced_coherent)
+
+#endif /* GL_KHR_blend_equation_advanced_coherent */
+
+/* ---------------------- GL_KHR_context_flush_control --------------------- */
+
+#ifndef GL_KHR_context_flush_control
+#define GL_KHR_context_flush_control 1
+
+#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
+#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
+
+#define GLEW_KHR_context_flush_control GLEW_GET_VAR(__GLEW_KHR_context_flush_control)
+
+#endif /* GL_KHR_context_flush_control */
+
+/* ------------------------------ GL_KHR_debug ----------------------------- */
+
+#ifndef GL_KHR_debug
+#define GL_KHR_debug 1
+
+#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
+#define GL_DEBUG_SOURCE_API 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION 0x824A
+#define GL_DEBUG_SOURCE_OTHER 0x824B
+#define GL_DEBUG_TYPE_ERROR 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
+#define GL_DEBUG_TYPE_OTHER 0x8251
+#define GL_DEBUG_TYPE_MARKER 0x8268
+#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
+#define GL_DEBUG_TYPE_POP_GROUP 0x826A
+#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
+#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
+#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
+#define GL_BUFFER 0x82E0
+#define GL_SHADER 0x82E1
+#define GL_PROGRAM 0x82E2
+#define GL_QUERY 0x82E3
+#define GL_PROGRAM_PIPELINE 0x82E4
+#define GL_SAMPLER 0x82E6
+#define GL_DISPLAY_LIST 0x82E7
+#define GL_MAX_LABEL_LENGTH 0x82E8
+#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES 0x9145
+#define GL_DEBUG_SEVERITY_HIGH 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
+#define GL_DEBUG_SEVERITY_LOW 0x9148
+#define GL_DEBUG_OUTPUT 0x92E0
+
+typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
+
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
+typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
+typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label);
+typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELPROC) (void* ptr, GLsizei bufSize, GLsizei* length, GLchar *label);
+typedef void (GLAPIENTRY * PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar* label);
+typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELPROC) (void* ptr, GLsizei length, const GLchar* label);
+typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPPROC) (void);
+typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar * message);
+
+#define glDebugMessageCallback GLEW_GET_FUN(__glewDebugMessageCallback)
+#define glDebugMessageControl GLEW_GET_FUN(__glewDebugMessageControl)
+#define glDebugMessageInsert GLEW_GET_FUN(__glewDebugMessageInsert)
+#define glGetDebugMessageLog GLEW_GET_FUN(__glewGetDebugMessageLog)
+#define glGetObjectLabel GLEW_GET_FUN(__glewGetObjectLabel)
+#define glGetObjectPtrLabel GLEW_GET_FUN(__glewGetObjectPtrLabel)
+#define glObjectLabel GLEW_GET_FUN(__glewObjectLabel)
+#define glObjectPtrLabel GLEW_GET_FUN(__glewObjectPtrLabel)
+#define glPopDebugGroup GLEW_GET_FUN(__glewPopDebugGroup)
+#define glPushDebugGroup GLEW_GET_FUN(__glewPushDebugGroup)
+
+#define GLEW_KHR_debug GLEW_GET_VAR(__GLEW_KHR_debug)
+
+#endif /* GL_KHR_debug */
+
+/* ---------------------------- GL_KHR_no_error ---------------------------- */
+
+#ifndef GL_KHR_no_error
+#define GL_KHR_no_error 1
+
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
+
+#define GLEW_KHR_no_error GLEW_GET_VAR(__GLEW_KHR_no_error)
+
+#endif /* GL_KHR_no_error */
+
+/* --------------------- GL_KHR_parallel_shader_compile -------------------- */
+
+#ifndef GL_KHR_parallel_shader_compile
+#define GL_KHR_parallel_shader_compile 1
+
+#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
+#define GL_COMPLETION_STATUS_KHR 0x91B1
+
+typedef void (GLAPIENTRY * PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count);
+
+#define glMaxShaderCompilerThreadsKHR GLEW_GET_FUN(__glewMaxShaderCompilerThreadsKHR)
+
+#define GLEW_KHR_parallel_shader_compile GLEW_GET_VAR(__GLEW_KHR_parallel_shader_compile)
+
+#endif /* GL_KHR_parallel_shader_compile */
+
+/* ------------------ GL_KHR_robust_buffer_access_behavior ----------------- */
+
+#ifndef GL_KHR_robust_buffer_access_behavior
+#define GL_KHR_robust_buffer_access_behavior 1
+
+#define GLEW_KHR_robust_buffer_access_behavior GLEW_GET_VAR(__GLEW_KHR_robust_buffer_access_behavior)
+
+#endif /* GL_KHR_robust_buffer_access_behavior */
+
+/* --------------------------- GL_KHR_robustness --------------------------- */
+
+#ifndef GL_KHR_robustness
+#define GL_KHR_robustness 1
+
+#define GL_CONTEXT_LOST 0x0507
+#define GL_LOSE_CONTEXT_ON_RESET 0x8252
+#define GL_GUILTY_CONTEXT_RESET 0x8253
+#define GL_INNOCENT_CONTEXT_RESET 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
+#define GL_NO_RESET_NOTIFICATION 0x8261
+#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
+
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+
+#define glGetnUniformfv GLEW_GET_FUN(__glewGetnUniformfv)
+#define glGetnUniformiv GLEW_GET_FUN(__glewGetnUniformiv)
+#define glGetnUniformuiv GLEW_GET_FUN(__glewGetnUniformuiv)
+#define glReadnPixels GLEW_GET_FUN(__glewReadnPixels)
+
+#define GLEW_KHR_robustness GLEW_GET_VAR(__GLEW_KHR_robustness)
+
+#endif /* GL_KHR_robustness */
+
+/* ------------------------- GL_KHR_shader_subgroup ------------------------ */
+
+#ifndef GL_KHR_shader_subgroup
+#define GL_KHR_shader_subgroup 1
+
+#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
+#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002
+#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
+#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
+#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
+#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
+#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
+#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080
+#define GL_SUBGROUP_SIZE_KHR 0x9532
+#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533
+#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
+#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535
+
+#define GLEW_KHR_shader_subgroup GLEW_GET_VAR(__GLEW_KHR_shader_subgroup)
+
+#endif /* GL_KHR_shader_subgroup */
+
+/* ------------------ GL_KHR_texture_compression_astc_hdr ------------------ */
+
+#ifndef GL_KHR_texture_compression_astc_hdr
+#define GL_KHR_texture_compression_astc_hdr 1
+
+#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
+
+#define GLEW_KHR_texture_compression_astc_hdr GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_hdr)
+
+#endif /* GL_KHR_texture_compression_astc_hdr */
+
+/* ------------------ GL_KHR_texture_compression_astc_ldr ------------------ */
+
+#ifndef GL_KHR_texture_compression_astc_ldr
+#define GL_KHR_texture_compression_astc_ldr 1
+
+#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
+
+#define GLEW_KHR_texture_compression_astc_ldr GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_ldr)
+
+#endif /* GL_KHR_texture_compression_astc_ldr */
+
+/* --------------- GL_KHR_texture_compression_astc_sliced_3d --------------- */
+
+#ifndef GL_KHR_texture_compression_astc_sliced_3d
+#define GL_KHR_texture_compression_astc_sliced_3d 1
+
+#define GLEW_KHR_texture_compression_astc_sliced_3d GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_sliced_3d)
+
+#endif /* GL_KHR_texture_compression_astc_sliced_3d */
+
+/* -------------------------- GL_KTX_buffer_region ------------------------- */
+
+#ifndef GL_KTX_buffer_region
+#define GL_KTX_buffer_region 1
+
+#define GL_KTX_FRONT_REGION 0x0
+#define GL_KTX_BACK_REGION 0x1
+#define GL_KTX_Z_REGION 0x2
+#define GL_KTX_STENCIL_REGION 0x3
+
+typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDPROC) (void);
+typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONPROC) (GLenum region);
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest);
+typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONPROC) (GLenum region);
+typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define glBufferRegionEnabled GLEW_GET_FUN(__glewBufferRegionEnabled)
+#define glDeleteBufferRegion GLEW_GET_FUN(__glewDeleteBufferRegion)
+#define glDrawBufferRegion GLEW_GET_FUN(__glewDrawBufferRegion)
+#define glNewBufferRegion GLEW_GET_FUN(__glewNewBufferRegion)
+#define glReadBufferRegion GLEW_GET_FUN(__glewReadBufferRegion)
+
+#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region)
+
+#endif /* GL_KTX_buffer_region */
+
+/* ------------------------- GL_MESAX_texture_stack ------------------------ */
+
+#ifndef GL_MESAX_texture_stack
+#define GL_MESAX_texture_stack 1
+
+#define GL_TEXTURE_1D_STACK_MESAX 0x8759
+#define GL_TEXTURE_2D_STACK_MESAX 0x875A
+#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
+#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
+#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
+#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
+
+#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack)
+
+#endif /* GL_MESAX_texture_stack */
+
+/* ------------------------------ GL_MESA_bgra ----------------------------- */
+
+#ifndef GL_MESA_bgra
+#define GL_MESA_bgra 1
+
+#define GL_BGR_EXT 0x80E0
+#define GL_BGRA_EXT 0x80E1
+
+#define GLEW_MESA_bgra GLEW_GET_VAR(__GLEW_MESA_bgra)
+
+#endif /* GL_MESA_bgra */
+
+/* ----------------------- GL_MESA_framebuffer_flip_x ---------------------- */
+
+#ifndef GL_MESA_framebuffer_flip_x
+#define GL_MESA_framebuffer_flip_x 1
+
+#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC
+
+#define GLEW_MESA_framebuffer_flip_x GLEW_GET_VAR(__GLEW_MESA_framebuffer_flip_x)
+
+#endif /* GL_MESA_framebuffer_flip_x */
+
+/* ----------------------- GL_MESA_framebuffer_flip_y ---------------------- */
+
+#ifndef GL_MESA_framebuffer_flip_y
+#define GL_MESA_framebuffer_flip_y 1
+
+#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint* params);
+
+#define glFramebufferParameteriMESA GLEW_GET_FUN(__glewFramebufferParameteriMESA)
+#define glGetFramebufferParameterivMESA GLEW_GET_FUN(__glewGetFramebufferParameterivMESA)
+
+#define GLEW_MESA_framebuffer_flip_y GLEW_GET_VAR(__GLEW_MESA_framebuffer_flip_y)
+
+#endif /* GL_MESA_framebuffer_flip_y */
+
+/* ---------------------- GL_MESA_framebuffer_swap_xy ---------------------- */
+
+#ifndef GL_MESA_framebuffer_swap_xy
+#define GL_MESA_framebuffer_swap_xy 1
+
+#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD
+
+#define GLEW_MESA_framebuffer_swap_xy GLEW_GET_VAR(__GLEW_MESA_framebuffer_swap_xy)
+
+#endif /* GL_MESA_framebuffer_swap_xy */
+
+/* -------------------------- GL_MESA_pack_invert -------------------------- */
+
+#ifndef GL_MESA_pack_invert
+#define GL_MESA_pack_invert 1
+
+#define GL_PACK_INVERT_MESA 0x8758
+
+#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert)
+
+#endif /* GL_MESA_pack_invert */
+
+/* --------------------- GL_MESA_program_binary_formats -------------------- */
+
+#ifndef GL_MESA_program_binary_formats
+#define GL_MESA_program_binary_formats 1
+
+#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
+
+#define GLEW_MESA_program_binary_formats GLEW_GET_VAR(__GLEW_MESA_program_binary_formats)
+
+#endif /* GL_MESA_program_binary_formats */
+
+/* ------------------------- GL_MESA_resize_buffers ------------------------ */
+
+#ifndef GL_MESA_resize_buffers
+#define GL_MESA_resize_buffers 1
+
+typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void);
+
+#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA)
+
+#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers)
+
+#endif /* GL_MESA_resize_buffers */
+
+/* -------------------- GL_MESA_shader_integer_functions ------------------- */
+
+#ifndef GL_MESA_shader_integer_functions
+#define GL_MESA_shader_integer_functions 1
+
+#define GLEW_MESA_shader_integer_functions GLEW_GET_VAR(__GLEW_MESA_shader_integer_functions)
+
+#endif /* GL_MESA_shader_integer_functions */
+
+/* ----------------------- GL_MESA_tile_raster_order ----------------------- */
+
+#ifndef GL_MESA_tile_raster_order
+#define GL_MESA_tile_raster_order 1
+
+#define GLEW_MESA_tile_raster_order GLEW_GET_VAR(__GLEW_MESA_tile_raster_order)
+
+#endif /* GL_MESA_tile_raster_order */
+
+/* --------------------------- GL_MESA_window_pos -------------------------- */
+
+#ifndef GL_MESA_window_pos
+#define GL_MESA_window_pos 1
+
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p);
+
+#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA)
+#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA)
+#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA)
+#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA)
+#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA)
+#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA)
+#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA)
+#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA)
+#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA)
+#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA)
+#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA)
+#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA)
+#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA)
+#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA)
+#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA)
+#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA)
+#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA)
+#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA)
+#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA)
+#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA)
+#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA)
+#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA)
+#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA)
+#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA)
+
+#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos)
+
+#endif /* GL_MESA_window_pos */
+
+/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */
+
+#ifndef GL_MESA_ycbcr_texture
+#define GL_MESA_ycbcr_texture 1
+
+#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
+#define GL_YCBCR_MESA 0x8757
+
+#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture)
+
+#endif /* GL_MESA_ycbcr_texture */
+
+/* ----------- GL_NVX_blend_equation_advanced_multi_draw_buffers ----------- */
+
+#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers
+#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1
+
+#define GLEW_NVX_blend_equation_advanced_multi_draw_buffers GLEW_GET_VAR(__GLEW_NVX_blend_equation_advanced_multi_draw_buffers)
+
+#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */
+
+/* ----------------------- GL_NVX_conditional_render ----------------------- */
+
+#ifndef GL_NVX_conditional_render
+#define GL_NVX_conditional_render 1
+
+typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVXPROC) (void);
+
+#define glBeginConditionalRenderNVX GLEW_GET_FUN(__glewBeginConditionalRenderNVX)
+#define glEndConditionalRenderNVX GLEW_GET_FUN(__glewEndConditionalRenderNVX)
+
+#define GLEW_NVX_conditional_render GLEW_GET_VAR(__GLEW_NVX_conditional_render)
+
+#endif /* GL_NVX_conditional_render */
+
+/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */
+
+#ifndef GL_NVX_gpu_memory_info
+#define GL_NVX_gpu_memory_info 1
+
+#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
+#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
+#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
+#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
+#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
+
+#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info)
+
+#endif /* GL_NVX_gpu_memory_info */
+
+/* ------------------------- GL_NVX_gpu_multicast2 ------------------------- */
+
+#ifndef GL_NVX_gpu_multicast2
+#define GL_NVX_gpu_multicast2 1
+
+#define GL_UPLOAD_GPU_MASK_NVX 0x954A
+
+typedef GLsync (GLAPIENTRY * PFNGLASYNCCOPYBUFFERSUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint* waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);
+typedef GLuint (GLAPIENTRY * PFNGLASYNCCOPYIMAGESUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint* waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);
+typedef void (GLAPIENTRY * PFNGLMULTICASTSCISSORARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLMULTICASTVIEWPORTARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC) (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+typedef void (GLAPIENTRY * PFNGLUPLOADGPUMASKNVXPROC) (GLbitfield mask);
+
+#define glAsyncCopyBufferSubDataNVX GLEW_GET_FUN(__glewAsyncCopyBufferSubDataNVX)
+#define glAsyncCopyImageSubDataNVX GLEW_GET_FUN(__glewAsyncCopyImageSubDataNVX)
+#define glMulticastScissorArrayvNVX GLEW_GET_FUN(__glewMulticastScissorArrayvNVX)
+#define glMulticastViewportArrayvNVX GLEW_GET_FUN(__glewMulticastViewportArrayvNVX)
+#define glMulticastViewportPositionWScaleNVX GLEW_GET_FUN(__glewMulticastViewportPositionWScaleNVX)
+#define glUploadGpuMaskNVX GLEW_GET_FUN(__glewUploadGpuMaskNVX)
+
+#define GLEW_NVX_gpu_multicast2 GLEW_GET_VAR(__GLEW_NVX_gpu_multicast2)
+
+#endif /* GL_NVX_gpu_multicast2 */
+
+/* ---------------------- GL_NVX_linked_gpu_multicast ---------------------- */
+
+#ifndef GL_NVX_linked_gpu_multicast
+#define GL_NVX_linked_gpu_multicast 1
+
+#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800
+#define GL_MAX_LGPU_GPUS_NVX 0x92BA
+
+typedef void (GLAPIENTRY * PFNGLLGPUCOPYIMAGESUBDATANVXPROC) (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY * PFNGLLGPUINTERLOCKNVXPROC) (void);
+typedef void (GLAPIENTRY * PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+
+#define glLGPUCopyImageSubDataNVX GLEW_GET_FUN(__glewLGPUCopyImageSubDataNVX)
+#define glLGPUInterlockNVX GLEW_GET_FUN(__glewLGPUInterlockNVX)
+#define glLGPUNamedBufferSubDataNVX GLEW_GET_FUN(__glewLGPUNamedBufferSubDataNVX)
+
+#define GLEW_NVX_linked_gpu_multicast GLEW_GET_VAR(__GLEW_NVX_linked_gpu_multicast)
+
+#endif /* GL_NVX_linked_gpu_multicast */
+
+/* ------------------------- GL_NVX_progress_fence ------------------------- */
+
+#ifndef GL_NVX_progress_fence
+#define GL_NVX_progress_fence 1
+
+typedef void (GLAPIENTRY * PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC) (GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray);
+typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRESSFENCENVXPROC) (void);
+typedef void (GLAPIENTRY * PFNGLSIGNALSEMAPHOREUI64NVXPROC) (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray);
+typedef void (GLAPIENTRY * PFNGLWAITSEMAPHOREUI64NVXPROC) (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint* semaphoreArray, const GLuint64 *fenceValueArray);
+
+#define glClientWaitSemaphoreui64NVX GLEW_GET_FUN(__glewClientWaitSemaphoreui64NVX)
+#define glCreateProgressFenceNVX GLEW_GET_FUN(__glewCreateProgressFenceNVX)
+#define glSignalSemaphoreui64NVX GLEW_GET_FUN(__glewSignalSemaphoreui64NVX)
+#define glWaitSemaphoreui64NVX GLEW_GET_FUN(__glewWaitSemaphoreui64NVX)
+
+#define GLEW_NVX_progress_fence GLEW_GET_VAR(__GLEW_NVX_progress_fence)
+
+#endif /* GL_NVX_progress_fence */
+
+/* ------------------------ GL_NV_3dvision_settings ------------------------ */
+
+#ifndef GL_NV_3dvision_settings
+#define GL_NV_3dvision_settings 1
+
+#define GL_3DVISION_STEREO_NV 0x90F4
+#define GL_STEREO_SEPARATION_NV 0x90F5
+#define GL_STEREO_CONVERGENCE_NV 0x90F6
+#define GL_STEREO_CUTOFF_NV 0x90F7
+#define GL_STEREO_PROJECTION_NV 0x90F8
+#define GL_STEREO_PROJECTION_PERSPECTIVE_NV 0x90F9
+#define GL_STEREO_PROJECTION_ORTHO_NV 0x90FA
+
+typedef void (GLAPIENTRY * PFNGLSTEREOPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLSTEREOPARAMETERINVPROC) (GLenum pname, GLint param);
+
+#define glStereoParameterfNV GLEW_GET_FUN(__glewStereoParameterfNV)
+#define glStereoParameteriNV GLEW_GET_FUN(__glewStereoParameteriNV)
+
+#define GLEW_NV_3dvision_settings GLEW_GET_VAR(__GLEW_NV_3dvision_settings)
+
+#endif /* GL_NV_3dvision_settings */
+
+/* ------------------- GL_NV_EGL_stream_consumer_external ------------------ */
+
+#ifndef GL_NV_EGL_stream_consumer_external
+#define GL_NV_EGL_stream_consumer_external 1
+
+#define GL_TEXTURE_EXTERNAL_OES 0x8D65
+#define GL_SAMPLER_EXTERNAL_OES 0x8D66
+#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
+
+#define GLEW_NV_EGL_stream_consumer_external GLEW_GET_VAR(__GLEW_NV_EGL_stream_consumer_external)
+
+#endif /* GL_NV_EGL_stream_consumer_external */
+
+/* ----------------- GL_NV_alpha_to_coverage_dither_control ---------------- */
+
+#ifndef GL_NV_alpha_to_coverage_dither_control
+#define GL_NV_alpha_to_coverage_dither_control 1
+
+#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF
+#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D
+#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E
+#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F
+
+typedef void (GLAPIENTRY * PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC) (GLenum mode);
+
+#define glAlphaToCoverageDitherControlNV GLEW_GET_FUN(__glewAlphaToCoverageDitherControlNV)
+
+#define GLEW_NV_alpha_to_coverage_dither_control GLEW_GET_VAR(__GLEW_NV_alpha_to_coverage_dither_control)
+
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+
+/* ------------------------------- GL_NV_bgr ------------------------------- */
+
+#ifndef GL_NV_bgr
+#define GL_NV_bgr 1
+
+#define GL_BGR_NV 0x80E0
+
+#define GLEW_NV_bgr GLEW_GET_VAR(__GLEW_NV_bgr)
+
+#endif /* GL_NV_bgr */
+
+/* ------------------- GL_NV_bindless_multi_draw_indirect ------------------ */
+
+#ifndef GL_NV_bindless_multi_draw_indirect
+#define GL_NV_bindless_multi_draw_indirect 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+
+#define glMultiDrawArraysIndirectBindlessNV GLEW_GET_FUN(__glewMultiDrawArraysIndirectBindlessNV)
+#define glMultiDrawElementsIndirectBindlessNV GLEW_GET_FUN(__glewMultiDrawElementsIndirectBindlessNV)
+
+#define GLEW_NV_bindless_multi_draw_indirect GLEW_GET_VAR(__GLEW_NV_bindless_multi_draw_indirect)
+
+#endif /* GL_NV_bindless_multi_draw_indirect */
+
+/* ---------------- GL_NV_bindless_multi_draw_indirect_count --------------- */
+
+#ifndef GL_NV_bindless_multi_draw_indirect_count
+#define GL_NV_bindless_multi_draw_indirect_count 1
+
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+
+#define glMultiDrawArraysIndirectBindlessCountNV GLEW_GET_FUN(__glewMultiDrawArraysIndirectBindlessCountNV)
+#define glMultiDrawElementsIndirectBindlessCountNV GLEW_GET_FUN(__glewMultiDrawElementsIndirectBindlessCountNV)
+
+#define GLEW_NV_bindless_multi_draw_indirect_count GLEW_GET_VAR(__GLEW_NV_bindless_multi_draw_indirect_count)
+
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+
+/* ------------------------- GL_NV_bindless_texture ------------------------ */
+
+#ifndef GL_NV_bindless_texture
+#define GL_NV_bindless_texture 1
+
+typedef GLuint64 (GLAPIENTRY * PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
+typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
+typedef GLboolean (GLAPIENTRY * PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
+typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
+typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64* value);
+
+#define glGetImageHandleNV GLEW_GET_FUN(__glewGetImageHandleNV)
+#define glGetTextureHandleNV GLEW_GET_FUN(__glewGetTextureHandleNV)
+#define glGetTextureSamplerHandleNV GLEW_GET_FUN(__glewGetTextureSamplerHandleNV)
+#define glIsImageHandleResidentNV GLEW_GET_FUN(__glewIsImageHandleResidentNV)
+#define glIsTextureHandleResidentNV GLEW_GET_FUN(__glewIsTextureHandleResidentNV)
+#define glMakeImageHandleNonResidentNV GLEW_GET_FUN(__glewMakeImageHandleNonResidentNV)
+#define glMakeImageHandleResidentNV GLEW_GET_FUN(__glewMakeImageHandleResidentNV)
+#define glMakeTextureHandleNonResidentNV GLEW_GET_FUN(__glewMakeTextureHandleNonResidentNV)
+#define glMakeTextureHandleResidentNV GLEW_GET_FUN(__glewMakeTextureHandleResidentNV)
+#define glProgramUniformHandleui64NV GLEW_GET_FUN(__glewProgramUniformHandleui64NV)
+#define glProgramUniformHandleui64vNV GLEW_GET_FUN(__glewProgramUniformHandleui64vNV)
+#define glUniformHandleui64NV GLEW_GET_FUN(__glewUniformHandleui64NV)
+#define glUniformHandleui64vNV GLEW_GET_FUN(__glewUniformHandleui64vNV)
+
+#define GLEW_NV_bindless_texture GLEW_GET_VAR(__GLEW_NV_bindless_texture)
+
+#endif /* GL_NV_bindless_texture */
+
+/* --------------------- GL_NV_blend_equation_advanced --------------------- */
+
+#ifndef GL_NV_blend_equation_advanced
+#define GL_NV_blend_equation_advanced 1
+
+#define GL_XOR_NV 0x1506
+#define GL_RED_NV 0x1903
+#define GL_GREEN_NV 0x1904
+#define GL_BLUE_NV 0x1905
+#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
+#define GL_BLEND_OVERLAP_NV 0x9281
+#define GL_UNCORRELATED_NV 0x9282
+#define GL_DISJOINT_NV 0x9283
+#define GL_CONJOINT_NV 0x9284
+#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
+#define GL_SRC_NV 0x9286
+#define GL_DST_NV 0x9287
+#define GL_SRC_OVER_NV 0x9288
+#define GL_DST_OVER_NV 0x9289
+#define GL_SRC_IN_NV 0x928A
+#define GL_DST_IN_NV 0x928B
+#define GL_SRC_OUT_NV 0x928C
+#define GL_DST_OUT_NV 0x928D
+#define GL_SRC_ATOP_NV 0x928E
+#define GL_DST_ATOP_NV 0x928F
+#define GL_PLUS_NV 0x9291
+#define GL_PLUS_DARKER_NV 0x9292
+#define GL_MULTIPLY_NV 0x9294
+#define GL_SCREEN_NV 0x9295
+#define GL_OVERLAY_NV 0x9296
+#define GL_DARKEN_NV 0x9297
+#define GL_LIGHTEN_NV 0x9298
+#define GL_COLORDODGE_NV 0x9299
+#define GL_COLORBURN_NV 0x929A
+#define GL_HARDLIGHT_NV 0x929B
+#define GL_SOFTLIGHT_NV 0x929C
+#define GL_DIFFERENCE_NV 0x929E
+#define GL_MINUS_NV 0x929F
+#define GL_EXCLUSION_NV 0x92A0
+#define GL_CONTRAST_NV 0x92A1
+#define GL_INVERT_RGB_NV 0x92A3
+#define GL_LINEARDODGE_NV 0x92A4
+#define GL_LINEARBURN_NV 0x92A5
+#define GL_VIVIDLIGHT_NV 0x92A6
+#define GL_LINEARLIGHT_NV 0x92A7
+#define GL_PINLIGHT_NV 0x92A8
+#define GL_HARDMIX_NV 0x92A9
+#define GL_HSL_HUE_NV 0x92AD
+#define GL_HSL_SATURATION_NV 0x92AE
+#define GL_HSL_COLOR_NV 0x92AF
+#define GL_HSL_LUMINOSITY_NV 0x92B0
+#define GL_PLUS_CLAMPED_NV 0x92B1
+#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
+#define GL_MINUS_CLAMPED_NV 0x92B3
+#define GL_INVERT_OVG_NV 0x92B4
+
+typedef void (GLAPIENTRY * PFNGLBLENDBARRIERNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
+
+#define glBlendBarrierNV GLEW_GET_FUN(__glewBlendBarrierNV)
+#define glBlendParameteriNV GLEW_GET_FUN(__glewBlendParameteriNV)
+
+#define GLEW_NV_blend_equation_advanced GLEW_GET_VAR(__GLEW_NV_blend_equation_advanced)
+
+#endif /* GL_NV_blend_equation_advanced */
+
+/* ----------------- GL_NV_blend_equation_advanced_coherent ---------------- */
+
+#ifndef GL_NV_blend_equation_advanced_coherent
+#define GL_NV_blend_equation_advanced_coherent 1
+
+#define GLEW_NV_blend_equation_advanced_coherent GLEW_GET_VAR(__GLEW_NV_blend_equation_advanced_coherent)
+
+#endif /* GL_NV_blend_equation_advanced_coherent */
+
+/* ----------------------- GL_NV_blend_minmax_factor ----------------------- */
+
+#ifndef GL_NV_blend_minmax_factor
+#define GL_NV_blend_minmax_factor 1
+
+#define GL_FACTOR_MIN_AMD 0x901C
+#define GL_FACTOR_MAX_AMD 0x901D
+
+#define GLEW_NV_blend_minmax_factor GLEW_GET_VAR(__GLEW_NV_blend_minmax_factor)
+
+#endif /* GL_NV_blend_minmax_factor */
+
+/* --------------------------- GL_NV_blend_square -------------------------- */
+
+#ifndef GL_NV_blend_square
+#define GL_NV_blend_square 1
+
+#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square)
+
+#endif /* GL_NV_blend_square */
+
+/* ----------------------- GL_NV_clip_space_w_scaling ---------------------- */
+
+#ifndef GL_NV_clip_space_w_scaling
+#define GL_NV_clip_space_w_scaling 1
+
+#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
+#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
+#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
+
+typedef void (GLAPIENTRY * PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+
+#define glViewportPositionWScaleNV GLEW_GET_FUN(__glewViewportPositionWScaleNV)
+
+#define GLEW_NV_clip_space_w_scaling GLEW_GET_VAR(__GLEW_NV_clip_space_w_scaling)
+
+#endif /* GL_NV_clip_space_w_scaling */
+
+/* --------------------------- GL_NV_command_list -------------------------- */
+
+#ifndef GL_NV_command_list
+#define GL_NV_command_list 1
+
+#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
+#define GL_NOP_COMMAND_NV 0x0001
+#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002
+#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003
+#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004
+#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005
+#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006
+#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007
+#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008
+#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009
+#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000a
+#define GL_BLEND_COLOR_COMMAND_NV 0x000b
+#define GL_STENCIL_REF_COMMAND_NV 0x000c
+#define GL_LINE_WIDTH_COMMAND_NV 0x000d
+#define GL_POLYGON_OFFSET_COMMAND_NV 0x000e
+#define GL_ALPHA_REF_COMMAND_NV 0x000f
+#define GL_VIEWPORT_COMMAND_NV 0x0010
+#define GL_SCISSOR_COMMAND_NV 0x0011
+#define GL_FRONT_FACE_COMMAND_NV 0x0012
+
+typedef void (GLAPIENTRY * PFNGLCALLCOMMANDLISTNVPROC) (GLuint list);
+typedef void (GLAPIENTRY * PFNGLCOMMANDLISTSEGMENTSNVPROC) (GLuint list, GLuint segments);
+typedef void (GLAPIENTRY * PFNGLCOMPILECOMMANDLISTNVPROC) (GLuint list);
+typedef void (GLAPIENTRY * PFNGLCREATECOMMANDLISTSNVPROC) (GLsizei n, GLuint* lists);
+typedef void (GLAPIENTRY * PFNGLCREATESTATESNVPROC) (GLsizei n, GLuint* states);
+typedef void (GLAPIENTRY * PFNGLDELETECOMMANDLISTSNVPROC) (GLsizei n, const GLuint* lists);
+typedef void (GLAPIENTRY * PFNGLDELETESTATESNVPROC) (GLsizei n, const GLuint* states);
+typedef void (GLAPIENTRY * PFNGLDRAWCOMMANDSADDRESSNVPROC) (GLenum primitiveMode, const GLuint64* indirects, const GLsizei* sizes, GLuint count);
+typedef void (GLAPIENTRY * PFNGLDRAWCOMMANDSNVPROC) (GLenum primitiveMode, GLuint buffer, const GLintptr* indirects, const GLsizei* sizes, GLuint count);
+typedef void (GLAPIENTRY * PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC) (const GLuint64* indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count);
+typedef void (GLAPIENTRY * PFNGLDRAWCOMMANDSSTATESNVPROC) (GLuint buffer, const GLintptr* indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count);
+typedef GLuint (GLAPIENTRY * PFNGLGETCOMMANDHEADERNVPROC) (GLenum tokenID, GLuint size);
+typedef GLushort (GLAPIENTRY * PFNGLGETSTAGEINDEXNVPROC) (GLenum shadertype);
+typedef GLboolean (GLAPIENTRY * PFNGLISCOMMANDLISTNVPROC) (GLuint list);
+typedef GLboolean (GLAPIENTRY * PFNGLISSTATENVPROC) (GLuint state);
+typedef void (GLAPIENTRY * PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC) (GLuint list, GLuint segment, const void** indirects, const GLsizei* sizes, const GLuint* states, const GLuint* fbos, GLuint count);
+typedef void (GLAPIENTRY * PFNGLSTATECAPTURENVPROC) (GLuint state, GLenum mode);
+
+#define glCallCommandListNV GLEW_GET_FUN(__glewCallCommandListNV)
+#define glCommandListSegmentsNV GLEW_GET_FUN(__glewCommandListSegmentsNV)
+#define glCompileCommandListNV GLEW_GET_FUN(__glewCompileCommandListNV)
+#define glCreateCommandListsNV GLEW_GET_FUN(__glewCreateCommandListsNV)
+#define glCreateStatesNV GLEW_GET_FUN(__glewCreateStatesNV)
+#define glDeleteCommandListsNV GLEW_GET_FUN(__glewDeleteCommandListsNV)
+#define glDeleteStatesNV GLEW_GET_FUN(__glewDeleteStatesNV)
+#define glDrawCommandsAddressNV GLEW_GET_FUN(__glewDrawCommandsAddressNV)
+#define glDrawCommandsNV GLEW_GET_FUN(__glewDrawCommandsNV)
+#define glDrawCommandsStatesAddressNV GLEW_GET_FUN(__glewDrawCommandsStatesAddressNV)
+#define glDrawCommandsStatesNV GLEW_GET_FUN(__glewDrawCommandsStatesNV)
+#define glGetCommandHeaderNV GLEW_GET_FUN(__glewGetCommandHeaderNV)
+#define glGetStageIndexNV GLEW_GET_FUN(__glewGetStageIndexNV)
+#define glIsCommandListNV GLEW_GET_FUN(__glewIsCommandListNV)
+#define glIsStateNV GLEW_GET_FUN(__glewIsStateNV)
+#define glListDrawCommandsStatesClientNV GLEW_GET_FUN(__glewListDrawCommandsStatesClientNV)
+#define glStateCaptureNV GLEW_GET_FUN(__glewStateCaptureNV)
+
+#define GLEW_NV_command_list GLEW_GET_VAR(__GLEW_NV_command_list)
+
+#endif /* GL_NV_command_list */
+
+/* ------------------------- GL_NV_compute_program5 ------------------------ */
+
+#ifndef GL_NV_compute_program5
+#define GL_NV_compute_program5 1
+
+#define GL_COMPUTE_PROGRAM_NV 0x90FB
+#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
+
+#define GLEW_NV_compute_program5 GLEW_GET_VAR(__GLEW_NV_compute_program5)
+
+#endif /* GL_NV_compute_program5 */
+
+/* -------------------- GL_NV_compute_shader_derivatives ------------------- */
+
+#ifndef GL_NV_compute_shader_derivatives
+#define GL_NV_compute_shader_derivatives 1
+
+#define GLEW_NV_compute_shader_derivatives GLEW_GET_VAR(__GLEW_NV_compute_shader_derivatives)
+
+#endif /* GL_NV_compute_shader_derivatives */
+
+/* ------------------------ GL_NV_conditional_render ----------------------- */
+
+#ifndef GL_NV_conditional_render
+#define GL_NV_conditional_render 1
+
+#define GL_QUERY_WAIT_NV 0x8E13
+#define GL_QUERY_NO_WAIT_NV 0x8E14
+#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
+
+typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void);
+
+#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV)
+#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV)
+
+#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render)
+
+#endif /* GL_NV_conditional_render */
+
+/* ----------------------- GL_NV_conservative_raster ----------------------- */
+
+#ifndef GL_NV_conservative_raster
+#define GL_NV_conservative_raster 1
+
+#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
+#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
+#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
+#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
+
+typedef void (GLAPIENTRY * PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits);
+
+#define glSubpixelPrecisionBiasNV GLEW_GET_FUN(__glewSubpixelPrecisionBiasNV)
+
+#define GLEW_NV_conservative_raster GLEW_GET_VAR(__GLEW_NV_conservative_raster)
+
+#endif /* GL_NV_conservative_raster */
+
+/* -------------------- GL_NV_conservative_raster_dilate ------------------- */
+
+#ifndef GL_NV_conservative_raster_dilate
+#define GL_NV_conservative_raster_dilate 1
+
+#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379
+#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
+#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
+
+typedef void (GLAPIENTRY * PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value);
+
+#define glConservativeRasterParameterfNV GLEW_GET_FUN(__glewConservativeRasterParameterfNV)
+
+#define GLEW_NV_conservative_raster_dilate GLEW_GET_VAR(__GLEW_NV_conservative_raster_dilate)
+
+#endif /* GL_NV_conservative_raster_dilate */
+
+/* ------------------- GL_NV_conservative_raster_pre_snap ------------------ */
+
+#ifndef GL_NV_conservative_raster_pre_snap
+#define GL_NV_conservative_raster_pre_snap 1
+
+#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
+
+#define GLEW_NV_conservative_raster_pre_snap GLEW_GET_VAR(__GLEW_NV_conservative_raster_pre_snap)
+
+#endif /* GL_NV_conservative_raster_pre_snap */
+
+/* -------------- GL_NV_conservative_raster_pre_snap_triangles ------------- */
+
+#ifndef GL_NV_conservative_raster_pre_snap_triangles
+#define GL_NV_conservative_raster_pre_snap_triangles 1
+
+#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
+#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
+#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
+
+typedef void (GLAPIENTRY * PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
+
+#define glConservativeRasterParameteriNV GLEW_GET_FUN(__glewConservativeRasterParameteriNV)
+
+#define GLEW_NV_conservative_raster_pre_snap_triangles GLEW_GET_VAR(__GLEW_NV_conservative_raster_pre_snap_triangles)
+
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+
+/* --------------- GL_NV_conservative_raster_underestimation --------------- */
+
+#ifndef GL_NV_conservative_raster_underestimation
+#define GL_NV_conservative_raster_underestimation 1
+
+#define GLEW_NV_conservative_raster_underestimation GLEW_GET_VAR(__GLEW_NV_conservative_raster_underestimation)
+
+#endif /* GL_NV_conservative_raster_underestimation */
+
+/* --------------------------- GL_NV_copy_buffer --------------------------- */
+
+#ifndef GL_NV_copy_buffer
+#define GL_NV_copy_buffer 1
+
+#define GL_COPY_READ_BUFFER_NV 0x8F36
+#define GL_COPY_WRITE_BUFFER_NV 0x8F37
+
+typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size);
+
+#define glCopyBufferSubDataNV GLEW_GET_FUN(__glewCopyBufferSubDataNV)
+
+#define GLEW_NV_copy_buffer GLEW_GET_VAR(__GLEW_NV_copy_buffer)
+
+#endif /* GL_NV_copy_buffer */
+
+/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */
+
+#ifndef GL_NV_copy_depth_to_color
+#define GL_NV_copy_depth_to_color 1
+
+#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
+#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
+
+#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color)
+
+#endif /* GL_NV_copy_depth_to_color */
+
+/* ---------------------------- GL_NV_copy_image --------------------------- */
+
+#ifndef GL_NV_copy_image
+#define GL_NV_copy_image 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV)
+
+#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image)
+
+#endif /* GL_NV_copy_image */
+
+/* -------------------------- GL_NV_deep_texture3D ------------------------- */
+
+#ifndef GL_NV_deep_texture3D
+#define GL_NV_deep_texture3D 1
+
+#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
+#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1
+
+#define GLEW_NV_deep_texture3D GLEW_GET_VAR(__GLEW_NV_deep_texture3D)
+
+#endif /* GL_NV_deep_texture3D */
+
+/* ------------------------ GL_NV_depth_buffer_float ----------------------- */
+
+#ifndef GL_NV_depth_buffer_float
+#define GL_NV_depth_buffer_float 1
+
+#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
+#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
+#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
+
+typedef void (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
+typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
+
+#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV)
+#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV)
+#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV)
+
+#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float)
+
+#endif /* GL_NV_depth_buffer_float */
+
+/* --------------------------- GL_NV_depth_clamp --------------------------- */
+
+#ifndef GL_NV_depth_clamp
+#define GL_NV_depth_clamp 1
+
+#define GL_DEPTH_CLAMP_NV 0x864F
+
+#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp)
+
+#endif /* GL_NV_depth_clamp */
+
+/* ------------------------- GL_NV_depth_nonlinear ------------------------- */
+
+#ifndef GL_NV_depth_nonlinear
+#define GL_NV_depth_nonlinear 1
+
+#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
+
+#define GLEW_NV_depth_nonlinear GLEW_GET_VAR(__GLEW_NV_depth_nonlinear)
+
+#endif /* GL_NV_depth_nonlinear */
+
+/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */
+
+#ifndef GL_NV_depth_range_unclamped
+#define GL_NV_depth_range_unclamped 1
+
+#define GL_SAMPLE_COUNT_BITS_NV 0x8864
+#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865
+#define GL_QUERY_RESULT_NV 0x8866
+#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867
+#define GL_SAMPLE_COUNT_NV 0x8914
+
+#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped)
+
+#endif /* GL_NV_depth_range_unclamped */
+
+/* --------------------------- GL_NV_draw_buffers -------------------------- */
+
+#ifndef GL_NV_draw_buffers
+#define GL_NV_draw_buffers 1
+
+#define GL_MAX_DRAW_BUFFERS_NV 0x8824
+#define GL_DRAW_BUFFER0_NV 0x8825
+#define GL_DRAW_BUFFER1_NV 0x8826
+#define GL_DRAW_BUFFER2_NV 0x8827
+#define GL_DRAW_BUFFER3_NV 0x8828
+#define GL_DRAW_BUFFER4_NV 0x8829
+#define GL_DRAW_BUFFER5_NV 0x882A
+#define GL_DRAW_BUFFER6_NV 0x882B
+#define GL_DRAW_BUFFER7_NV 0x882C
+#define GL_DRAW_BUFFER8_NV 0x882D
+#define GL_DRAW_BUFFER9_NV 0x882E
+#define GL_DRAW_BUFFER10_NV 0x882F
+#define GL_DRAW_BUFFER11_NV 0x8830
+#define GL_DRAW_BUFFER12_NV 0x8831
+#define GL_DRAW_BUFFER13_NV 0x8832
+#define GL_DRAW_BUFFER14_NV 0x8833
+#define GL_DRAW_BUFFER15_NV 0x8834
+#define GL_COLOR_ATTACHMENT0_NV 0x8CE0
+#define GL_COLOR_ATTACHMENT1_NV 0x8CE1
+#define GL_COLOR_ATTACHMENT2_NV 0x8CE2
+#define GL_COLOR_ATTACHMENT3_NV 0x8CE3
+#define GL_COLOR_ATTACHMENT4_NV 0x8CE4
+#define GL_COLOR_ATTACHMENT5_NV 0x8CE5
+#define GL_COLOR_ATTACHMENT6_NV 0x8CE6
+#define GL_COLOR_ATTACHMENT7_NV 0x8CE7
+#define GL_COLOR_ATTACHMENT8_NV 0x8CE8
+#define GL_COLOR_ATTACHMENT9_NV 0x8CE9
+#define GL_COLOR_ATTACHMENT10_NV 0x8CEA
+#define GL_COLOR_ATTACHMENT11_NV 0x8CEB
+#define GL_COLOR_ATTACHMENT12_NV 0x8CEC
+#define GL_COLOR_ATTACHMENT13_NV 0x8CED
+#define GL_COLOR_ATTACHMENT14_NV 0x8CEE
+#define GL_COLOR_ATTACHMENT15_NV 0x8CEF
+
+typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum* bufs);
+
+#define glDrawBuffersNV GLEW_GET_FUN(__glewDrawBuffersNV)
+
+#define GLEW_NV_draw_buffers GLEW_GET_VAR(__GLEW_NV_draw_buffers)
+
+#endif /* GL_NV_draw_buffers */
+
+/* -------------------------- GL_NV_draw_instanced ------------------------- */
+
+#ifndef GL_NV_draw_instanced
+#define GL_NV_draw_instanced 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
+
+#define glDrawArraysInstancedNV GLEW_GET_FUN(__glewDrawArraysInstancedNV)
+#define glDrawElementsInstancedNV GLEW_GET_FUN(__glewDrawElementsInstancedNV)
+
+#define GLEW_NV_draw_instanced GLEW_GET_VAR(__GLEW_NV_draw_instanced)
+
+#endif /* GL_NV_draw_instanced */
+
+/* --------------------------- GL_NV_draw_texture -------------------------- */
+
+#ifndef GL_NV_draw_texture
+#define GL_NV_draw_texture 1
+
+typedef void (GLAPIENTRY * PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+
+#define glDrawTextureNV GLEW_GET_FUN(__glewDrawTextureNV)
+
+#define GLEW_NV_draw_texture GLEW_GET_VAR(__GLEW_NV_draw_texture)
+
+#endif /* GL_NV_draw_texture */
+
+/* ------------------------ GL_NV_draw_vulkan_image ------------------------ */
+
+#ifndef GL_NV_draw_vulkan_image
+#define GL_NV_draw_vulkan_image 1
+
+typedef void (APIENTRY *GLVULKANPROCNV)(void);
+
+typedef void (GLAPIENTRY * PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+typedef GLVULKANPROCNV (GLAPIENTRY * PFNGLGETVKPROCADDRNVPROC) (const GLchar* name);
+typedef void (GLAPIENTRY * PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence);
+typedef void (GLAPIENTRY * PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
+typedef void (GLAPIENTRY * PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);
+
+#define glDrawVkImageNV GLEW_GET_FUN(__glewDrawVkImageNV)
+#define glGetVkProcAddrNV GLEW_GET_FUN(__glewGetVkProcAddrNV)
+#define glSignalVkFenceNV GLEW_GET_FUN(__glewSignalVkFenceNV)
+#define glSignalVkSemaphoreNV GLEW_GET_FUN(__glewSignalVkSemaphoreNV)
+#define glWaitVkSemaphoreNV GLEW_GET_FUN(__glewWaitVkSemaphoreNV)
+
+#define GLEW_NV_draw_vulkan_image GLEW_GET_VAR(__GLEW_NV_draw_vulkan_image)
+
+#endif /* GL_NV_draw_vulkan_image */
+
+/* ---------------------------- GL_NV_evaluators --------------------------- */
+
+#ifndef GL_NV_evaluators
+#define GL_NV_evaluators 1
+
+#define GL_EVAL_2D_NV 0x86C0
+#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
+#define GL_MAP_TESSELLATION_NV 0x86C2
+#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
+#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
+#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
+#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
+#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
+#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
+#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
+#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
+#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
+#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
+#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
+#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
+#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
+#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
+#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
+#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
+#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
+#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
+#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
+#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
+#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
+
+typedef void (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
+typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
+typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params);
+
+#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV)
+#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV)
+#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV)
+#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV)
+#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV)
+#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV)
+#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV)
+#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV)
+#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV)
+
+#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators)
+
+#endif /* GL_NV_evaluators */
+
+/* --------------------- GL_NV_explicit_attrib_location -------------------- */
+
+#ifndef GL_NV_explicit_attrib_location
+#define GL_NV_explicit_attrib_location 1
+
+#define GLEW_NV_explicit_attrib_location GLEW_GET_VAR(__GLEW_NV_explicit_attrib_location)
+
+#endif /* GL_NV_explicit_attrib_location */
+
+/* ----------------------- GL_NV_explicit_multisample ---------------------- */
+
+#ifndef GL_NV_explicit_multisample
+#define GL_NV_explicit_multisample 1
+
+#define GL_SAMPLE_POSITION_NV 0x8E50
+#define GL_SAMPLE_MASK_NV 0x8E51
+#define GL_SAMPLE_MASK_VALUE_NV 0x8E52
+#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
+#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
+#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55
+#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56
+#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57
+#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
+#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59
+
+typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val);
+typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);
+
+#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV)
+#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV)
+#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV)
+
+#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample)
+
+#endif /* GL_NV_explicit_multisample */
+
+/* ---------------------- GL_NV_fbo_color_attachments ---------------------- */
+
+#ifndef GL_NV_fbo_color_attachments
+#define GL_NV_fbo_color_attachments 1
+
+#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF
+#define GL_COLOR_ATTACHMENT0_NV 0x8CE0
+#define GL_COLOR_ATTACHMENT1_NV 0x8CE1
+#define GL_COLOR_ATTACHMENT2_NV 0x8CE2
+#define GL_COLOR_ATTACHMENT3_NV 0x8CE3
+#define GL_COLOR_ATTACHMENT4_NV 0x8CE4
+#define GL_COLOR_ATTACHMENT5_NV 0x8CE5
+#define GL_COLOR_ATTACHMENT6_NV 0x8CE6
+#define GL_COLOR_ATTACHMENT7_NV 0x8CE7
+#define GL_COLOR_ATTACHMENT8_NV 0x8CE8
+#define GL_COLOR_ATTACHMENT9_NV 0x8CE9
+#define GL_COLOR_ATTACHMENT10_NV 0x8CEA
+#define GL_COLOR_ATTACHMENT11_NV 0x8CEB
+#define GL_COLOR_ATTACHMENT12_NV 0x8CEC
+#define GL_COLOR_ATTACHMENT13_NV 0x8CED
+#define GL_COLOR_ATTACHMENT14_NV 0x8CEE
+#define GL_COLOR_ATTACHMENT15_NV 0x8CEF
+
+#define GLEW_NV_fbo_color_attachments GLEW_GET_VAR(__GLEW_NV_fbo_color_attachments)
+
+#endif /* GL_NV_fbo_color_attachments */
+
+/* ------------------------------ GL_NV_fence ------------------------------ */
+
+#ifndef GL_NV_fence
+#define GL_NV_fence 1
+
+#define GL_ALL_COMPLETED_NV 0x84F2
+#define GL_FENCE_STATUS_NV 0x84F3
+#define GL_FENCE_CONDITION_NV 0x84F4
+
+typedef void (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences);
+typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence);
+typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences);
+typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence);
+typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
+typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence);
+
+#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV)
+#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV)
+#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV)
+#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV)
+#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV)
+#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV)
+#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV)
+
+#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence)
+
+#endif /* GL_NV_fence */
+
+/* -------------------------- GL_NV_fill_rectangle ------------------------- */
+
+#ifndef GL_NV_fill_rectangle
+#define GL_NV_fill_rectangle 1
+
+#define GL_FILL_RECTANGLE_NV 0x933C
+
+#define GLEW_NV_fill_rectangle GLEW_GET_VAR(__GLEW_NV_fill_rectangle)
+
+#endif /* GL_NV_fill_rectangle */
+
+/* --------------------------- GL_NV_float_buffer -------------------------- */
+
+#ifndef GL_NV_float_buffer
+#define GL_NV_float_buffer 1
+
+#define GL_FLOAT_R_NV 0x8880
+#define GL_FLOAT_RG_NV 0x8881
+#define GL_FLOAT_RGB_NV 0x8882
+#define GL_FLOAT_RGBA_NV 0x8883
+#define GL_FLOAT_R16_NV 0x8884
+#define GL_FLOAT_R32_NV 0x8885
+#define GL_FLOAT_RG16_NV 0x8886
+#define GL_FLOAT_RG32_NV 0x8887
+#define GL_FLOAT_RGB16_NV 0x8888
+#define GL_FLOAT_RGB32_NV 0x8889
+#define GL_FLOAT_RGBA16_NV 0x888A
+#define GL_FLOAT_RGBA32_NV 0x888B
+#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
+#define GL_FLOAT_RGBA_MODE_NV 0x888E
+
+#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer)
+
+#endif /* GL_NV_float_buffer */
+
+/* --------------------------- GL_NV_fog_distance -------------------------- */
+
+#ifndef GL_NV_fog_distance
+#define GL_NV_fog_distance 1
+
+#define GL_FOG_DISTANCE_MODE_NV 0x855A
+#define GL_EYE_RADIAL_NV 0x855B
+#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
+
+#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance)
+
+#endif /* GL_NV_fog_distance */
+
+/* -------------------- GL_NV_fragment_coverage_to_color ------------------- */
+
+#ifndef GL_NV_fragment_coverage_to_color
+#define GL_NV_fragment_coverage_to_color 1
+
+#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
+#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
+
+typedef void (GLAPIENTRY * PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color);
+
+#define glFragmentCoverageColorNV GLEW_GET_FUN(__glewFragmentCoverageColorNV)
+
+#define GLEW_NV_fragment_coverage_to_color GLEW_GET_VAR(__GLEW_NV_fragment_coverage_to_color)
+
+#endif /* GL_NV_fragment_coverage_to_color */
+
+/* ------------------------- GL_NV_fragment_program ------------------------ */
+
+#ifndef GL_NV_fragment_program
+#define GL_NV_fragment_program 1
+
+#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
+#define GL_FRAGMENT_PROGRAM_NV 0x8870
+#define GL_MAX_TEXTURE_COORDS_NV 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
+#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
+#define GL_PROGRAM_ERROR_STRING_NV 0x8874
+
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]);
+typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]);
+
+#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV)
+#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV)
+#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV)
+#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV)
+#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV)
+#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV)
+
+#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program)
+
+#endif /* GL_NV_fragment_program */
+
+/* ------------------------ GL_NV_fragment_program2 ------------------------ */
+
+#ifndef GL_NV_fragment_program2
+#define GL_NV_fragment_program2 1
+
+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
+#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
+#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
+
+#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2)
+
+#endif /* GL_NV_fragment_program2 */
+
+/* ------------------------ GL_NV_fragment_program4 ------------------------ */
+
+#ifndef GL_NV_fragment_program4
+#define GL_NV_fragment_program4 1
+
+#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4)
+
+#endif /* GL_NV_fragment_program4 */
+
+/* --------------------- GL_NV_fragment_program_option --------------------- */
+
+#ifndef GL_NV_fragment_program_option
+#define GL_NV_fragment_program_option 1
+
+#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option)
+
+#endif /* GL_NV_fragment_program_option */
+
+/* ------------------- GL_NV_fragment_shader_barycentric ------------------- */
+
+#ifndef GL_NV_fragment_shader_barycentric
+#define GL_NV_fragment_shader_barycentric 1
+
+#define GLEW_NV_fragment_shader_barycentric GLEW_GET_VAR(__GLEW_NV_fragment_shader_barycentric)
+
+#endif /* GL_NV_fragment_shader_barycentric */
+
+/* -------------------- GL_NV_fragment_shader_interlock -------------------- */
+
+#ifndef GL_NV_fragment_shader_interlock
+#define GL_NV_fragment_shader_interlock 1
+
+#define GLEW_NV_fragment_shader_interlock GLEW_GET_VAR(__GLEW_NV_fragment_shader_interlock)
+
+#endif /* GL_NV_fragment_shader_interlock */
+
+/* ------------------------- GL_NV_framebuffer_blit ------------------------ */
+
+#ifndef GL_NV_framebuffer_blit
+#define GL_NV_framebuffer_blit 1
+
+#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6
+#define GL_READ_FRAMEBUFFER_NV 0x8CA8
+#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA
+
+typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+#define glBlitFramebufferNV GLEW_GET_FUN(__glewBlitFramebufferNV)
+
+#define GLEW_NV_framebuffer_blit GLEW_GET_VAR(__GLEW_NV_framebuffer_blit)
+
+#endif /* GL_NV_framebuffer_blit */
+
+/* -------------------- GL_NV_framebuffer_mixed_samples -------------------- */
+
+#ifndef GL_NV_framebuffer_mixed_samples
+#define GL_NV_framebuffer_mixed_samples 1
+
+#define GL_COLOR_SAMPLES_NV 0x8E20
+#define GL_RASTER_MULTISAMPLE_EXT 0x9327
+#define GL_RASTER_SAMPLES_EXT 0x9328
+#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
+#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+#define GL_DEPTH_SAMPLES_NV 0x932D
+#define GL_STENCIL_SAMPLES_NV 0x932E
+#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+#define GL_COVERAGE_MODULATION_NV 0x9332
+#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
+
+#define GLEW_NV_framebuffer_mixed_samples GLEW_GET_VAR(__GLEW_NV_framebuffer_mixed_samples)
+
+#endif /* GL_NV_framebuffer_mixed_samples */
+
+/* --------------------- GL_NV_framebuffer_multisample --------------------- */
+
+#ifndef GL_NV_framebuffer_multisample
+#define GL_NV_framebuffer_multisample 1
+
+#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56
+#define GL_MAX_SAMPLES_NV 0x8D57
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glRenderbufferStorageMultisampleNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleNV)
+
+#define GLEW_NV_framebuffer_multisample GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample)
+
+#endif /* GL_NV_framebuffer_multisample */
+
+/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */
+
+#ifndef GL_NV_framebuffer_multisample_coverage
+#define GL_NV_framebuffer_multisample_coverage 1
+
+#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
+#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
+#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
+#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
+
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV)
+
+#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage)
+
+#endif /* GL_NV_framebuffer_multisample_coverage */
+
+/* ----------------------- GL_NV_generate_mipmap_sRGB ---------------------- */
+
+#ifndef GL_NV_generate_mipmap_sRGB
+#define GL_NV_generate_mipmap_sRGB 1
+
+#define GLEW_NV_generate_mipmap_sRGB GLEW_GET_VAR(__GLEW_NV_generate_mipmap_sRGB)
+
+#endif /* GL_NV_generate_mipmap_sRGB */
+
+/* ------------------------ GL_NV_geometry_program4 ------------------------ */
+
+#ifndef GL_NV_geometry_program4
+#define GL_NV_geometry_program4 1
+
+#define GL_GEOMETRY_PROGRAM_NV 0x8C26
+#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
+#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
+
+typedef void (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
+
+#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV)
+
+#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4)
+
+#endif /* GL_NV_geometry_program4 */
+
+/* ------------------------- GL_NV_geometry_shader4 ------------------------ */
+
+#ifndef GL_NV_geometry_shader4
+#define GL_NV_geometry_shader4 1
+
+#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4)
+
+#endif /* GL_NV_geometry_shader4 */
+
+/* ------------------- GL_NV_geometry_shader_passthrough ------------------- */
+
+#ifndef GL_NV_geometry_shader_passthrough
+#define GL_NV_geometry_shader_passthrough 1
+
+#define GLEW_NV_geometry_shader_passthrough GLEW_GET_VAR(__GLEW_NV_geometry_shader_passthrough)
+
+#endif /* GL_NV_geometry_shader_passthrough */
+
+/* -------------------------- GL_NV_gpu_multicast -------------------------- */
+
+#ifndef GL_NV_gpu_multicast
+#define GL_NV_gpu_multicast 1
+
+#define GL_PER_GPU_STORAGE_BIT_NV 0x0800
+#define GL_MULTICAST_GPUS_NV 0x92BA
+#define GL_PER_GPU_STORAGE_NV 0x9548
+#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549
+#define GL_RENDER_GPU_MASK_NV 0x9558
+
+typedef void (GLAPIENTRY * PFNGLMULTICASTBARRIERNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLMULTICASTBLITFRAMEBUFFERNVPROC) (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (GLAPIENTRY * PFNGLMULTICASTBUFFERSUBDATANVPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (GLAPIENTRY * PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC) (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLMULTICASTCOPYIMAGESUBDATANVPROC) (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+typedef void (GLAPIENTRY * PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLMULTICASTGETQUERYOBJECTIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLMULTICASTWAITSYNCNVPROC) (GLuint signalGpu, GLbitfield waitGpuMask);
+typedef void (GLAPIENTRY * PFNGLRENDERGPUMASKNVPROC) (GLbitfield mask);
+
+#define glMulticastBarrierNV GLEW_GET_FUN(__glewMulticastBarrierNV)
+#define glMulticastBlitFramebufferNV GLEW_GET_FUN(__glewMulticastBlitFramebufferNV)
+#define glMulticastBufferSubDataNV GLEW_GET_FUN(__glewMulticastBufferSubDataNV)
+#define glMulticastCopyBufferSubDataNV GLEW_GET_FUN(__glewMulticastCopyBufferSubDataNV)
+#define glMulticastCopyImageSubDataNV GLEW_GET_FUN(__glewMulticastCopyImageSubDataNV)
+#define glMulticastFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewMulticastFramebufferSampleLocationsfvNV)
+#define glMulticastGetQueryObjecti64vNV GLEW_GET_FUN(__glewMulticastGetQueryObjecti64vNV)
+#define glMulticastGetQueryObjectivNV GLEW_GET_FUN(__glewMulticastGetQueryObjectivNV)
+#define glMulticastGetQueryObjectui64vNV GLEW_GET_FUN(__glewMulticastGetQueryObjectui64vNV)
+#define glMulticastGetQueryObjectuivNV GLEW_GET_FUN(__glewMulticastGetQueryObjectuivNV)
+#define glMulticastWaitSyncNV GLEW_GET_FUN(__glewMulticastWaitSyncNV)
+#define glRenderGpuMaskNV GLEW_GET_FUN(__glewRenderGpuMaskNV)
+
+#define GLEW_NV_gpu_multicast GLEW_GET_VAR(__GLEW_NV_gpu_multicast)
+
+#endif /* GL_NV_gpu_multicast */
+
+/* --------------------------- GL_NV_gpu_program4 -------------------------- */
+
+#ifndef GL_NV_gpu_program4
+#define GL_NV_gpu_program4 1
+
+#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
+#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
+#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
+#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
+#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
+#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
+#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
+
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+
+#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV)
+#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV)
+#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV)
+#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV)
+#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV)
+#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV)
+#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV)
+#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV)
+#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV)
+#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV)
+#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV)
+#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV)
+
+#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4)
+
+#endif /* GL_NV_gpu_program4 */
+
+/* --------------------------- GL_NV_gpu_program5 -------------------------- */
+
+#ifndef GL_NV_gpu_program5
+#define GL_NV_gpu_program5 1
+
+#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
+#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
+
+#define GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5)
+
+#endif /* GL_NV_gpu_program5 */
+
+/* -------------------- GL_NV_gpu_program5_mem_extended -------------------- */
+
+#ifndef GL_NV_gpu_program5_mem_extended
+#define GL_NV_gpu_program5_mem_extended 1
+
+#define GLEW_NV_gpu_program5_mem_extended GLEW_GET_VAR(__GLEW_NV_gpu_program5_mem_extended)
+
+#endif /* GL_NV_gpu_program5_mem_extended */
+
+/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */
+
+#ifndef GL_NV_gpu_program_fp64
+#define GL_NV_gpu_program_fp64 1
+
+#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64)
+
+#endif /* GL_NV_gpu_program_fp64 */
+
+/* --------------------------- GL_NV_gpu_shader5 --------------------------- */
+
+#ifndef GL_NV_gpu_shader5
+#define GL_NV_gpu_shader5 1
+
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_NV 0x140F
+#define GL_INT8_NV 0x8FE0
+#define GL_INT8_VEC2_NV 0x8FE1
+#define GL_INT8_VEC3_NV 0x8FE2
+#define GL_INT8_VEC4_NV 0x8FE3
+#define GL_INT16_NV 0x8FE4
+#define GL_INT16_VEC2_NV 0x8FE5
+#define GL_INT16_VEC3_NV 0x8FE6
+#define GL_INT16_VEC4_NV 0x8FE7
+#define GL_INT64_VEC2_NV 0x8FE9
+#define GL_INT64_VEC3_NV 0x8FEA
+#define GL_INT64_VEC4_NV 0x8FEB
+#define GL_UNSIGNED_INT8_NV 0x8FEC
+#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
+#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
+#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
+#define GL_UNSIGNED_INT16_NV 0x8FF0
+#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
+#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
+#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
+#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
+#define GL_FLOAT16_NV 0x8FF8
+#define GL_FLOAT16_VEC2_NV 0x8FF9
+#define GL_FLOAT16_VEC3_NV 0x8FFA
+#define GL_FLOAT16_VEC4_NV 0x8FFB
+
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+
+#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV)
+#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV)
+#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV)
+#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV)
+#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV)
+#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV)
+#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV)
+#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV)
+#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV)
+#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV)
+#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV)
+#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV)
+#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV)
+#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV)
+#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV)
+#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV)
+#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV)
+#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV)
+#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV)
+#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV)
+#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV)
+#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV)
+#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV)
+#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV)
+#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV)
+#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV)
+#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV)
+#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV)
+#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV)
+#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV)
+#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV)
+#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV)
+#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV)
+#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV)
+
+#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5)
+
+#endif /* GL_NV_gpu_shader5 */
+
+/* ---------------------------- GL_NV_half_float --------------------------- */
+
+#ifndef GL_NV_half_float
+#define GL_NV_half_float 1
+
+#define GL_HALF_FLOAT_NV 0x140B
+
+typedef unsigned short GLhalf;
+
+typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue);
+typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha);
+typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz);
+typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y);
+typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z);
+typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w);
+typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight);
+typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight);
+
+#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV)
+#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV)
+#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV)
+#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV)
+#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV)
+#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV)
+#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV)
+#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV)
+#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV)
+#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV)
+#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV)
+#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV)
+#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV)
+#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV)
+#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV)
+#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV)
+#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV)
+#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV)
+#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV)
+#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV)
+#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV)
+#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV)
+#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV)
+#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV)
+#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV)
+#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV)
+#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV)
+#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV)
+#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV)
+#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV)
+#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV)
+#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV)
+#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV)
+#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV)
+#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV)
+#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV)
+#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV)
+#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV)
+#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV)
+#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV)
+#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV)
+#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV)
+#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV)
+#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV)
+#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV)
+#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV)
+
+#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float)
+
+#endif /* GL_NV_half_float */
+
+/* -------------------------- GL_NV_image_formats -------------------------- */
+
+#ifndef GL_NV_image_formats
+#define GL_NV_image_formats 1
+
+#define GLEW_NV_image_formats GLEW_GET_VAR(__GLEW_NV_image_formats)
+
+#endif /* GL_NV_image_formats */
+
+/* ------------------------- GL_NV_instanced_arrays ------------------------ */
+
+#ifndef GL_NV_instanced_arrays
+#define GL_NV_instanced_arrays 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE
+
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor);
+
+#define glVertexAttribDivisorNV GLEW_GET_FUN(__glewVertexAttribDivisorNV)
+
+#define GLEW_NV_instanced_arrays GLEW_GET_VAR(__GLEW_NV_instanced_arrays)
+
+#endif /* GL_NV_instanced_arrays */
+
+/* ------------------- GL_NV_internalformat_sample_query ------------------- */
+
+#ifndef GL_NV_internalformat_sample_query
+#define GL_NV_internalformat_sample_query 1
+
+#define GL_MULTISAMPLES_NV 0x9371
+#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372
+#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
+#define GL_CONFORMANT_NV 0x9374
+
+typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params);
+
+#define glGetInternalformatSampleivNV GLEW_GET_FUN(__glewGetInternalformatSampleivNV)
+
+#define GLEW_NV_internalformat_sample_query GLEW_GET_VAR(__GLEW_NV_internalformat_sample_query)
+
+#endif /* GL_NV_internalformat_sample_query */
+
+/* ------------------------ GL_NV_light_max_exponent ----------------------- */
+
+#ifndef GL_NV_light_max_exponent
+#define GL_NV_light_max_exponent 1
+
+#define GL_MAX_SHININESS_NV 0x8504
+#define GL_MAX_SPOT_EXPONENT_NV 0x8505
+
+#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent)
+
+#endif /* GL_NV_light_max_exponent */
+
+/* ------------------------ GL_NV_memory_attachment ------------------------ */
+
+#ifndef GL_NV_memory_attachment
+#define GL_NV_memory_attachment 1
+
+#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4
+#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5
+#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6
+#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7
+#define GL_MEMORY_ATTACHABLE_NV 0x95A8
+#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9
+#define GL_DETACHED_TEXTURES_NV 0x95AA
+#define GL_DETACHED_BUFFERS_NV 0x95AB
+#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC
+#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD
+
+typedef void (GLAPIENTRY * PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname);
+typedef void (GLAPIENTRY * PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY * PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset);
+
+#define glBufferAttachMemoryNV GLEW_GET_FUN(__glewBufferAttachMemoryNV)
+#define glGetMemoryObjectDetachedResourcesuivNV GLEW_GET_FUN(__glewGetMemoryObjectDetachedResourcesuivNV)
+#define glNamedBufferAttachMemoryNV GLEW_GET_FUN(__glewNamedBufferAttachMemoryNV)
+#define glResetMemoryObjectParameterNV GLEW_GET_FUN(__glewResetMemoryObjectParameterNV)
+#define glTexAttachMemoryNV GLEW_GET_FUN(__glewTexAttachMemoryNV)
+#define glTextureAttachMemoryNV GLEW_GET_FUN(__glewTextureAttachMemoryNV)
+
+#define GLEW_NV_memory_attachment GLEW_GET_VAR(__GLEW_NV_memory_attachment)
+
+#endif /* GL_NV_memory_attachment */
+
+/* ----------------------- GL_NV_memory_object_sparse ---------------------- */
+
+#ifndef GL_NV_memory_object_sparse
+#define GL_NV_memory_object_sparse 1
+
+typedef void (GLAPIENTRY * PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (GLAPIENTRY * PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+typedef void (GLAPIENTRY * PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+
+#define glBufferPageCommitmentMemNV GLEW_GET_FUN(__glewBufferPageCommitmentMemNV)
+#define glNamedBufferPageCommitmentMemNV GLEW_GET_FUN(__glewNamedBufferPageCommitmentMemNV)
+#define glTexPageCommitmentMemNV GLEW_GET_FUN(__glewTexPageCommitmentMemNV)
+#define glTexturePageCommitmentMemNV GLEW_GET_FUN(__glewTexturePageCommitmentMemNV)
+
+#define GLEW_NV_memory_object_sparse GLEW_GET_VAR(__GLEW_NV_memory_object_sparse)
+
+#endif /* GL_NV_memory_object_sparse */
+
+/* --------------------------- GL_NV_mesh_shader --------------------------- */
+
+#ifndef GL_NV_mesh_shader
+#define GL_NV_mesh_shader 1
+
+#define GL_MESH_SHADER_BIT_NV 0x00000040
+#define GL_TASK_SHADER_BIT_NV 0x00000080
+#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60
+#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61
+#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62
+#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63
+#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64
+#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65
+#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66
+#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67
+#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68
+#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69
+#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A
+#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B
+#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C
+#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D
+#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E
+#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F
+#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF
+#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536
+#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537
+#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538
+#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539
+#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A
+#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B
+#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C
+#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D
+#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E
+#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F
+#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543
+#define GL_MAX_MESH_VIEWS_NV 0x9557
+#define GL_MESH_SHADER_NV 0x9559
+#define GL_TASK_SHADER_NV 0x955A
+#define GL_MESH_VERTICES_OUT_NV 0x9579
+#define GL_MESH_PRIMITIVES_OUT_NV 0x957A
+#define GL_MESH_OUTPUT_TYPE_NV 0x957B
+#define GL_MESH_SUBROUTINE_NV 0x957C
+#define GL_TASK_SUBROUTINE_NV 0x957D
+#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E
+#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F
+#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0
+#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1
+#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2
+#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3
+
+typedef void (GLAPIENTRY * PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect);
+typedef void (GLAPIENTRY * PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride);
+
+#define glDrawMeshTasksIndirectNV GLEW_GET_FUN(__glewDrawMeshTasksIndirectNV)
+#define glDrawMeshTasksNV GLEW_GET_FUN(__glewDrawMeshTasksNV)
+#define glMultiDrawMeshTasksIndirectCountNV GLEW_GET_FUN(__glewMultiDrawMeshTasksIndirectCountNV)
+#define glMultiDrawMeshTasksIndirectNV GLEW_GET_FUN(__glewMultiDrawMeshTasksIndirectNV)
+
+#define GLEW_NV_mesh_shader GLEW_GET_VAR(__GLEW_NV_mesh_shader)
+
+#endif /* GL_NV_mesh_shader */
+
+/* ----------------------- GL_NV_multisample_coverage ---------------------- */
+
+#ifndef GL_NV_multisample_coverage
+#define GL_NV_multisample_coverage 1
+
+#define GL_COLOR_SAMPLES_NV 0x8E20
+
+#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage)
+
+#endif /* GL_NV_multisample_coverage */
+
+/* --------------------- GL_NV_multisample_filter_hint --------------------- */
+
+#ifndef GL_NV_multisample_filter_hint
+#define GL_NV_multisample_filter_hint 1
+
+#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
+
+#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint)
+
+#endif /* GL_NV_multisample_filter_hint */
+
+/* ----------------------- GL_NV_non_square_matrices ----------------------- */
+
+#ifndef GL_NV_non_square_matrices
+#define GL_NV_non_square_matrices 1
+
+#define GL_FLOAT_MAT2x3_NV 0x8B65
+#define GL_FLOAT_MAT2x4_NV 0x8B66
+#define GL_FLOAT_MAT3x2_NV 0x8B67
+#define GL_FLOAT_MAT3x4_NV 0x8B68
+#define GL_FLOAT_MAT4x2_NV 0x8B69
+#define GL_FLOAT_MAT4x3_NV 0x8B6A
+
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+
+#define glUniformMatrix2x3fvNV GLEW_GET_FUN(__glewUniformMatrix2x3fvNV)
+#define glUniformMatrix2x4fvNV GLEW_GET_FUN(__glewUniformMatrix2x4fvNV)
+#define glUniformMatrix3x2fvNV GLEW_GET_FUN(__glewUniformMatrix3x2fvNV)
+#define glUniformMatrix3x4fvNV GLEW_GET_FUN(__glewUniformMatrix3x4fvNV)
+#define glUniformMatrix4x2fvNV GLEW_GET_FUN(__glewUniformMatrix4x2fvNV)
+#define glUniformMatrix4x3fvNV GLEW_GET_FUN(__glewUniformMatrix4x3fvNV)
+
+#define GLEW_NV_non_square_matrices GLEW_GET_VAR(__GLEW_NV_non_square_matrices)
+
+#endif /* GL_NV_non_square_matrices */
+
+/* ------------------------- GL_NV_occlusion_query ------------------------- */
+
+#ifndef GL_NV_occlusion_query
+#define GL_NV_occlusion_query 1
+
+#define GL_PIXEL_COUNTER_BITS_NV 0x8864
+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
+#define GL_PIXEL_COUNT_NV 0x8866
+#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
+
+typedef void (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
+
+#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV)
+#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV)
+#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV)
+#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV)
+#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV)
+#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV)
+#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV)
+
+#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query)
+
+#endif /* GL_NV_occlusion_query */
+
+/* -------------------------- GL_NV_pack_subimage -------------------------- */
+
+#ifndef GL_NV_pack_subimage
+#define GL_NV_pack_subimage 1
+
+#define GL_PACK_ROW_LENGTH_NV 0x0D02
+#define GL_PACK_SKIP_ROWS_NV 0x0D03
+#define GL_PACK_SKIP_PIXELS_NV 0x0D04
+
+#define GLEW_NV_pack_subimage GLEW_GET_VAR(__GLEW_NV_pack_subimage)
+
+#endif /* GL_NV_pack_subimage */
+
+/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */
+
+#ifndef GL_NV_packed_depth_stencil
+#define GL_NV_packed_depth_stencil 1
+
+#define GL_DEPTH_STENCIL_NV 0x84F9
+#define GL_UNSIGNED_INT_24_8_NV 0x84FA
+
+#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil)
+
+#endif /* GL_NV_packed_depth_stencil */
+
+/* --------------------------- GL_NV_packed_float -------------------------- */
+
+#ifndef GL_NV_packed_float
+#define GL_NV_packed_float 1
+
+#define GL_R11F_G11F_B10F_NV 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_NV 0x8C3B
+
+#define GLEW_NV_packed_float GLEW_GET_VAR(__GLEW_NV_packed_float)
+
+#endif /* GL_NV_packed_float */
+
+/* ----------------------- GL_NV_packed_float_linear ----------------------- */
+
+#ifndef GL_NV_packed_float_linear
+#define GL_NV_packed_float_linear 1
+
+#define GL_R11F_G11F_B10F_NV 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_NV 0x8C3B
+
+#define GLEW_NV_packed_float_linear GLEW_GET_VAR(__GLEW_NV_packed_float_linear)
+
+#endif /* GL_NV_packed_float_linear */
+
+/* --------------------- GL_NV_parameter_buffer_object --------------------- */
+
+#ifndef GL_NV_parameter_buffer_object
+#define GL_NV_parameter_buffer_object 1
+
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
+#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
+#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
+#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
+
+typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
+
+#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV)
+#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV)
+#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV)
+
+#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object)
+
+#endif /* GL_NV_parameter_buffer_object */
+
+/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */
+
+#ifndef GL_NV_parameter_buffer_object2
+#define GL_NV_parameter_buffer_object2 1
+
+#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2)
+
+#endif /* GL_NV_parameter_buffer_object2 */
+
+/* -------------------------- GL_NV_path_rendering ------------------------- */
+
+#ifndef GL_NV_path_rendering
+#define GL_NV_path_rendering 1
+
+#define GL_CLOSE_PATH_NV 0x00
+#define GL_BOLD_BIT_NV 0x01
+#define GL_GLYPH_WIDTH_BIT_NV 0x01
+#define GL_GLYPH_HEIGHT_BIT_NV 0x02
+#define GL_ITALIC_BIT_NV 0x02
+#define GL_MOVE_TO_NV 0x02
+#define GL_RELATIVE_MOVE_TO_NV 0x03
+#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
+#define GL_LINE_TO_NV 0x04
+#define GL_RELATIVE_LINE_TO_NV 0x05
+#define GL_HORIZONTAL_LINE_TO_NV 0x06
+#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
+#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
+#define GL_VERTICAL_LINE_TO_NV 0x08
+#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
+#define GL_QUADRATIC_CURVE_TO_NV 0x0A
+#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
+#define GL_CUBIC_CURVE_TO_NV 0x0C
+#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
+#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
+#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
+#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
+#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
+#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
+#define GL_SMALL_CCW_ARC_TO_NV 0x12
+#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
+#define GL_SMALL_CW_ARC_TO_NV 0x14
+#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
+#define GL_LARGE_CCW_ARC_TO_NV 0x16
+#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
+#define GL_LARGE_CW_ARC_TO_NV 0x18
+#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
+#define GL_CONIC_CURVE_TO_NV 0x1A
+#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
+#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
+#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
+#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
+#define GL_ROUNDED_RECT_NV 0xE8
+#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9
+#define GL_ROUNDED_RECT2_NV 0xEA
+#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
+#define GL_ROUNDED_RECT4_NV 0xEC
+#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED
+#define GL_ROUNDED_RECT8_NV 0xEE
+#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
+#define GL_RESTART_PATH_NV 0xF0
+#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
+#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
+#define GL_RECT_NV 0xF6
+#define GL_RELATIVE_RECT_NV 0xF7
+#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
+#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA
+#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
+#define GL_ARC_TO_NV 0xFE
+#define GL_RELATIVE_ARC_TO_NV 0xFF
+#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100
+#define GL_PRIMARY_COLOR_NV 0x852C
+#define GL_SECONDARY_COLOR_NV 0x852D
+#define GL_PRIMARY_COLOR 0x8577
+#define GL_PATH_FORMAT_SVG_NV 0x9070
+#define GL_PATH_FORMAT_PS_NV 0x9071
+#define GL_STANDARD_FONT_NAME_NV 0x9072
+#define GL_SYSTEM_FONT_NAME_NV 0x9073
+#define GL_FILE_NAME_NV 0x9074
+#define GL_PATH_STROKE_WIDTH_NV 0x9075
+#define GL_PATH_END_CAPS_NV 0x9076
+#define GL_PATH_INITIAL_END_CAP_NV 0x9077
+#define GL_PATH_TERMINAL_END_CAP_NV 0x9078
+#define GL_PATH_JOIN_STYLE_NV 0x9079
+#define GL_PATH_MITER_LIMIT_NV 0x907A
+#define GL_PATH_DASH_CAPS_NV 0x907B
+#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C
+#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
+#define GL_PATH_DASH_OFFSET_NV 0x907E
+#define GL_PATH_CLIENT_LENGTH_NV 0x907F
+#define GL_PATH_FILL_MODE_NV 0x9080
+#define GL_PATH_FILL_MASK_NV 0x9081
+#define GL_PATH_FILL_COVER_MODE_NV 0x9082
+#define GL_PATH_STROKE_COVER_MODE_NV 0x9083
+#define GL_PATH_STROKE_MASK_NV 0x9084
+#define GL_PATH_STROKE_BOUND_NV 0x9086
+#define GL_COUNT_UP_NV 0x9088
+#define GL_COUNT_DOWN_NV 0x9089
+#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
+#define GL_CONVEX_HULL_NV 0x908B
+#define GL_BOUNDING_BOX_NV 0x908D
+#define GL_TRANSLATE_X_NV 0x908E
+#define GL_TRANSLATE_Y_NV 0x908F
+#define GL_TRANSLATE_2D_NV 0x9090
+#define GL_TRANSLATE_3D_NV 0x9091
+#define GL_AFFINE_2D_NV 0x9092
+#define GL_AFFINE_3D_NV 0x9094
+#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096
+#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098
+#define GL_UTF8_NV 0x909A
+#define GL_UTF16_NV 0x909B
+#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
+#define GL_PATH_COMMAND_COUNT_NV 0x909D
+#define GL_PATH_COORD_COUNT_NV 0x909E
+#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
+#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0
+#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
+#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
+#define GL_SQUARE_NV 0x90A3
+#define GL_ROUND_NV 0x90A4
+#define GL_TRIANGULAR_NV 0x90A5
+#define GL_BEVEL_NV 0x90A6
+#define GL_MITER_REVERT_NV 0x90A7
+#define GL_MITER_TRUNCATE_NV 0x90A8
+#define GL_SKIP_MISSING_GLYPH_NV 0x90A9
+#define GL_USE_MISSING_GLYPH_NV 0x90AA
+#define GL_PATH_ERROR_POSITION_NV 0x90AB
+#define GL_PATH_FOG_GEN_MODE_NV 0x90AC
+#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
+#define GL_ADJACENT_PAIRS_NV 0x90AE
+#define GL_FIRST_TO_REST_NV 0x90AF
+#define GL_PATH_GEN_MODE_NV 0x90B0
+#define GL_PATH_GEN_COEFF_NV 0x90B1
+#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2
+#define GL_PATH_GEN_COMPONENTS_NV 0x90B3
+#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
+#define GL_MOVE_TO_RESETS_NV 0x90B5
+#define GL_MOVE_TO_CONTINUES_NV 0x90B6
+#define GL_PATH_STENCIL_FUNC_NV 0x90B7
+#define GL_PATH_STENCIL_REF_NV 0x90B8
+#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
+#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
+#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
+#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
+#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
+#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
+#define GL_FONT_UNAVAILABLE_NV 0x936A
+#define GL_FONT_UNINTELLIGIBLE_NV 0x936B
+#define GL_STANDARD_FONT_FORMAT_NV 0x936C
+#define GL_FRAGMENT_INPUT_NV 0x936D
+#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
+#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
+#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
+#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
+#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
+#define GL_FONT_ASCENDER_BIT_NV 0x00200000
+#define GL_FONT_DESCENDER_BIT_NV 0x00400000
+#define GL_FONT_HEIGHT_BIT_NV 0x00800000
+#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
+#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
+#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
+#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
+#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000
+#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
+
+typedef void (GLAPIENTRY * PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
+typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
+typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
+typedef void (GLAPIENTRY * PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
+typedef GLuint (GLAPIENTRY * PFNGLGENPATHSNVPROC) (GLsizei range);
+typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte* commands);
+typedef void (GLAPIENTRY * PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat* coords);
+typedef void (GLAPIENTRY * PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat* dashArray);
+typedef GLfloat (GLAPIENTRY * PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
+typedef void (GLAPIENTRY * PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics);
+typedef void (GLAPIENTRY * PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
+typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
+typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint* value);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
+typedef GLboolean (GLAPIENTRY * PFNGLISPATHNVPROC) (GLuint path);
+typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
+typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat* m);
+typedef void (GLAPIENTRY * PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs);
+typedef void (GLAPIENTRY * PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
+typedef void (GLAPIENTRY * PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
+typedef void (GLAPIENTRY * PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum zfunc);
+typedef void (GLAPIENTRY * PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat* dashArray);
+typedef void (GLAPIENTRY * PFNGLPATHFOGGENNVPROC) (GLenum genMode);
+typedef GLenum (GLAPIENTRY * PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef GLenum (GLAPIENTRY * PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint* baseAndCount);
+typedef void (GLAPIENTRY * PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (GLAPIENTRY * PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef GLenum (GLAPIENTRY * PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
+typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat* value);
+typedef void (GLAPIENTRY * PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
+typedef void (GLAPIENTRY * PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint* value);
+typedef void (GLAPIENTRY * PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
+typedef void (GLAPIENTRY * PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
+typedef void (GLAPIENTRY * PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords);
+typedef void (GLAPIENTRY * PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
+typedef void (GLAPIENTRY * PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs);
+typedef GLboolean (GLAPIENTRY * PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs);
+typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
+typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
+typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
+typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues);
+typedef void (GLAPIENTRY * PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]);
+
+#define glCopyPathNV GLEW_GET_FUN(__glewCopyPathNV)
+#define glCoverFillPathInstancedNV GLEW_GET_FUN(__glewCoverFillPathInstancedNV)
+#define glCoverFillPathNV GLEW_GET_FUN(__glewCoverFillPathNV)
+#define glCoverStrokePathInstancedNV GLEW_GET_FUN(__glewCoverStrokePathInstancedNV)
+#define glCoverStrokePathNV GLEW_GET_FUN(__glewCoverStrokePathNV)
+#define glDeletePathsNV GLEW_GET_FUN(__glewDeletePathsNV)
+#define glGenPathsNV GLEW_GET_FUN(__glewGenPathsNV)
+#define glGetPathColorGenfvNV GLEW_GET_FUN(__glewGetPathColorGenfvNV)
+#define glGetPathColorGenivNV GLEW_GET_FUN(__glewGetPathColorGenivNV)
+#define glGetPathCommandsNV GLEW_GET_FUN(__glewGetPathCommandsNV)
+#define glGetPathCoordsNV GLEW_GET_FUN(__glewGetPathCoordsNV)
+#define glGetPathDashArrayNV GLEW_GET_FUN(__glewGetPathDashArrayNV)
+#define glGetPathLengthNV GLEW_GET_FUN(__glewGetPathLengthNV)
+#define glGetPathMetricRangeNV GLEW_GET_FUN(__glewGetPathMetricRangeNV)
+#define glGetPathMetricsNV GLEW_GET_FUN(__glewGetPathMetricsNV)
+#define glGetPathParameterfvNV GLEW_GET_FUN(__glewGetPathParameterfvNV)
+#define glGetPathParameterivNV GLEW_GET_FUN(__glewGetPathParameterivNV)
+#define glGetPathSpacingNV GLEW_GET_FUN(__glewGetPathSpacingNV)
+#define glGetPathTexGenfvNV GLEW_GET_FUN(__glewGetPathTexGenfvNV)
+#define glGetPathTexGenivNV GLEW_GET_FUN(__glewGetPathTexGenivNV)
+#define glGetProgramResourcefvNV GLEW_GET_FUN(__glewGetProgramResourcefvNV)
+#define glInterpolatePathsNV GLEW_GET_FUN(__glewInterpolatePathsNV)
+#define glIsPathNV GLEW_GET_FUN(__glewIsPathNV)
+#define glIsPointInFillPathNV GLEW_GET_FUN(__glewIsPointInFillPathNV)
+#define glIsPointInStrokePathNV GLEW_GET_FUN(__glewIsPointInStrokePathNV)
+#define glMatrixLoad3x2fNV GLEW_GET_FUN(__glewMatrixLoad3x2fNV)
+#define glMatrixLoad3x3fNV GLEW_GET_FUN(__glewMatrixLoad3x3fNV)
+#define glMatrixLoadTranspose3x3fNV GLEW_GET_FUN(__glewMatrixLoadTranspose3x3fNV)
+#define glMatrixMult3x2fNV GLEW_GET_FUN(__glewMatrixMult3x2fNV)
+#define glMatrixMult3x3fNV GLEW_GET_FUN(__glewMatrixMult3x3fNV)
+#define glMatrixMultTranspose3x3fNV GLEW_GET_FUN(__glewMatrixMultTranspose3x3fNV)
+#define glPathColorGenNV GLEW_GET_FUN(__glewPathColorGenNV)
+#define glPathCommandsNV GLEW_GET_FUN(__glewPathCommandsNV)
+#define glPathCoordsNV GLEW_GET_FUN(__glewPathCoordsNV)
+#define glPathCoverDepthFuncNV GLEW_GET_FUN(__glewPathCoverDepthFuncNV)
+#define glPathDashArrayNV GLEW_GET_FUN(__glewPathDashArrayNV)
+#define glPathFogGenNV GLEW_GET_FUN(__glewPathFogGenNV)
+#define glPathGlyphIndexArrayNV GLEW_GET_FUN(__glewPathGlyphIndexArrayNV)
+#define glPathGlyphIndexRangeNV GLEW_GET_FUN(__glewPathGlyphIndexRangeNV)
+#define glPathGlyphRangeNV GLEW_GET_FUN(__glewPathGlyphRangeNV)
+#define glPathGlyphsNV GLEW_GET_FUN(__glewPathGlyphsNV)
+#define glPathMemoryGlyphIndexArrayNV GLEW_GET_FUN(__glewPathMemoryGlyphIndexArrayNV)
+#define glPathParameterfNV GLEW_GET_FUN(__glewPathParameterfNV)
+#define glPathParameterfvNV GLEW_GET_FUN(__glewPathParameterfvNV)
+#define glPathParameteriNV GLEW_GET_FUN(__glewPathParameteriNV)
+#define glPathParameterivNV GLEW_GET_FUN(__glewPathParameterivNV)
+#define glPathStencilDepthOffsetNV GLEW_GET_FUN(__glewPathStencilDepthOffsetNV)
+#define glPathStencilFuncNV GLEW_GET_FUN(__glewPathStencilFuncNV)
+#define glPathStringNV GLEW_GET_FUN(__glewPathStringNV)
+#define glPathSubCommandsNV GLEW_GET_FUN(__glewPathSubCommandsNV)
+#define glPathSubCoordsNV GLEW_GET_FUN(__glewPathSubCoordsNV)
+#define glPathTexGenNV GLEW_GET_FUN(__glewPathTexGenNV)
+#define glPointAlongPathNV GLEW_GET_FUN(__glewPointAlongPathNV)
+#define glProgramPathFragmentInputGenNV GLEW_GET_FUN(__glewProgramPathFragmentInputGenNV)
+#define glStencilFillPathInstancedNV GLEW_GET_FUN(__glewStencilFillPathInstancedNV)
+#define glStencilFillPathNV GLEW_GET_FUN(__glewStencilFillPathNV)
+#define glStencilStrokePathInstancedNV GLEW_GET_FUN(__glewStencilStrokePathInstancedNV)
+#define glStencilStrokePathNV GLEW_GET_FUN(__glewStencilStrokePathNV)
+#define glStencilThenCoverFillPathInstancedNV GLEW_GET_FUN(__glewStencilThenCoverFillPathInstancedNV)
+#define glStencilThenCoverFillPathNV GLEW_GET_FUN(__glewStencilThenCoverFillPathNV)
+#define glStencilThenCoverStrokePathInstancedNV GLEW_GET_FUN(__glewStencilThenCoverStrokePathInstancedNV)
+#define glStencilThenCoverStrokePathNV GLEW_GET_FUN(__glewStencilThenCoverStrokePathNV)
+#define glTransformPathNV GLEW_GET_FUN(__glewTransformPathNV)
+#define glWeightPathsNV GLEW_GET_FUN(__glewWeightPathsNV)
+
+#define GLEW_NV_path_rendering GLEW_GET_VAR(__GLEW_NV_path_rendering)
+
+#endif /* GL_NV_path_rendering */
+
+/* -------------------- GL_NV_path_rendering_shared_edge ------------------- */
+
+#ifndef GL_NV_path_rendering_shared_edge
+#define GL_NV_path_rendering_shared_edge 1
+
+#define GL_SHARED_EDGE_NV 0xC0
+
+#define GLEW_NV_path_rendering_shared_edge GLEW_GET_VAR(__GLEW_NV_path_rendering_shared_edge)
+
+#endif /* GL_NV_path_rendering_shared_edge */
+
+/* ----------------------- GL_NV_pixel_buffer_object ----------------------- */
+
+#ifndef GL_NV_pixel_buffer_object
+#define GL_NV_pixel_buffer_object 1
+
+#define GL_PIXEL_PACK_BUFFER_NV 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF
+
+#define GLEW_NV_pixel_buffer_object GLEW_GET_VAR(__GLEW_NV_pixel_buffer_object)
+
+#endif /* GL_NV_pixel_buffer_object */
+
+/* ------------------------- GL_NV_pixel_data_range ------------------------ */
+
+#ifndef GL_NV_pixel_data_range
+#define GL_NV_pixel_data_range 1
+
+#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
+#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
+#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
+#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
+#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
+#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
+
+typedef void (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void *pointer);
+
+#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV)
+#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV)
+
+#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range)
+
+#endif /* GL_NV_pixel_data_range */
+
+/* ------------------------- GL_NV_platform_binary ------------------------- */
+
+#ifndef GL_NV_platform_binary
+#define GL_NV_platform_binary 1
+
+#define GL_NVIDIA_PLATFORM_BINARY_NV 0x890B
+
+#define GLEW_NV_platform_binary GLEW_GET_VAR(__GLEW_NV_platform_binary)
+
+#endif /* GL_NV_platform_binary */
+
+/* --------------------------- GL_NV_point_sprite -------------------------- */
+
+#ifndef GL_NV_point_sprite
+#define GL_NV_point_sprite 1
+
+#define GL_POINT_SPRITE_NV 0x8861
+#define GL_COORD_REPLACE_NV 0x8862
+#define GL_POINT_SPRITE_R_MODE_NV 0x8863
+
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params);
+
+#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV)
+#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV)
+
+#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite)
+
+#endif /* GL_NV_point_sprite */
+
+/* --------------------------- GL_NV_polygon_mode -------------------------- */
+
+#ifndef GL_NV_polygon_mode
+#define GL_NV_polygon_mode 1
+
+#define GL_POLYGON_MODE_NV 0x0B40
+#define GL_POINT_NV 0x1B00
+#define GL_LINE_NV 0x1B01
+#define GL_FILL_NV 0x1B02
+#define GL_POLYGON_OFFSET_POINT_NV 0x2A01
+#define GL_POLYGON_OFFSET_LINE_NV 0x2A02
+
+typedef void (GLAPIENTRY * PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode);
+
+#define glPolygonModeNV GLEW_GET_FUN(__glewPolygonModeNV)
+
+#define GLEW_NV_polygon_mode GLEW_GET_VAR(__GLEW_NV_polygon_mode)
+
+#endif /* GL_NV_polygon_mode */
+
+/* -------------------------- GL_NV_present_video -------------------------- */
+
+#ifndef GL_NV_present_video
+#define GL_NV_present_video 1
+
+#define GL_FRAME_NV 0x8E26
+#define GL_FIELDS_NV 0x8E27
+#define GL_CURRENT_TIME_NV 0x8E28
+#define GL_NUM_FILL_STREAMS_NV 0x8E29
+#define GL_PRESENT_TIME_NV 0x8E2A
+#define GL_PRESENT_DURATION_NV 0x8E2B
+
+typedef void (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
+typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
+
+#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV)
+#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV)
+#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV)
+#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV)
+#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV)
+#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV)
+
+#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video)
+
+#endif /* GL_NV_present_video */
+
+/* ------------------------ GL_NV_primitive_restart ------------------------ */
+
+#ifndef GL_NV_primitive_restart
+#define GL_NV_primitive_restart 1
+
+#define GL_PRIMITIVE_RESTART_NV 0x8558
+#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
+
+typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void);
+
+#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV)
+#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV)
+
+#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart)
+
+#endif /* GL_NV_primitive_restart */
+
+/* ---------------------- GL_NV_primitive_shading_rate --------------------- */
+
+#ifndef GL_NV_primitive_shading_rate
+#define GL_NV_primitive_shading_rate 1
+
+#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
+
+#define GLEW_NV_primitive_shading_rate GLEW_GET_VAR(__GLEW_NV_primitive_shading_rate)
+
+#endif /* GL_NV_primitive_shading_rate */
+
+/* ------------------------ GL_NV_query_resource_tag ----------------------- */
+
+#ifndef GL_NV_query_resource_tag
+#define GL_NV_query_resource_tag 1
+
+#define GLEW_NV_query_resource_tag GLEW_GET_VAR(__GLEW_NV_query_resource_tag)
+
+#endif /* GL_NV_query_resource_tag */
+
+/* --------------------------- GL_NV_read_buffer --------------------------- */
+
+#ifndef GL_NV_read_buffer
+#define GL_NV_read_buffer 1
+
+#define GL_READ_BUFFER_NV 0x0C02
+
+typedef void (GLAPIENTRY * PFNGLREADBUFFERNVPROC) (GLenum mode);
+
+#define glReadBufferNV GLEW_GET_FUN(__glewReadBufferNV)
+
+#define GLEW_NV_read_buffer GLEW_GET_VAR(__GLEW_NV_read_buffer)
+
+#endif /* GL_NV_read_buffer */
+
+/* ------------------------ GL_NV_read_buffer_front ------------------------ */
+
+#ifndef GL_NV_read_buffer_front
+#define GL_NV_read_buffer_front 1
+
+#define GL_READ_BUFFER_NV 0x0C02
+
+#define GLEW_NV_read_buffer_front GLEW_GET_VAR(__GLEW_NV_read_buffer_front)
+
+#endif /* GL_NV_read_buffer_front */
+
+/* ---------------------------- GL_NV_read_depth --------------------------- */
+
+#ifndef GL_NV_read_depth
+#define GL_NV_read_depth 1
+
+#define GLEW_NV_read_depth GLEW_GET_VAR(__GLEW_NV_read_depth)
+
+#endif /* GL_NV_read_depth */
+
+/* ------------------------ GL_NV_read_depth_stencil ----------------------- */
+
+#ifndef GL_NV_read_depth_stencil
+#define GL_NV_read_depth_stencil 1
+
+#define GLEW_NV_read_depth_stencil GLEW_GET_VAR(__GLEW_NV_read_depth_stencil)
+
+#endif /* GL_NV_read_depth_stencil */
+
+/* --------------------------- GL_NV_read_stencil -------------------------- */
+
+#ifndef GL_NV_read_stencil
+#define GL_NV_read_stencil 1
+
+#define GLEW_NV_read_stencil GLEW_GET_VAR(__GLEW_NV_read_stencil)
+
+#endif /* GL_NV_read_stencil */
+
+/* ------------------------ GL_NV_register_combiners ----------------------- */
+
+#ifndef GL_NV_register_combiners
+#define GL_NV_register_combiners 1
+
+#define GL_REGISTER_COMBINERS_NV 0x8522
+#define GL_VARIABLE_A_NV 0x8523
+#define GL_VARIABLE_B_NV 0x8524
+#define GL_VARIABLE_C_NV 0x8525
+#define GL_VARIABLE_D_NV 0x8526
+#define GL_VARIABLE_E_NV 0x8527
+#define GL_VARIABLE_F_NV 0x8528
+#define GL_VARIABLE_G_NV 0x8529
+#define GL_CONSTANT_COLOR0_NV 0x852A
+#define GL_CONSTANT_COLOR1_NV 0x852B
+#define GL_PRIMARY_COLOR_NV 0x852C
+#define GL_SECONDARY_COLOR_NV 0x852D
+#define GL_SPARE0_NV 0x852E
+#define GL_SPARE1_NV 0x852F
+#define GL_DISCARD_NV 0x8530
+#define GL_E_TIMES_F_NV 0x8531
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+#define GL_UNSIGNED_IDENTITY_NV 0x8536
+#define GL_UNSIGNED_INVERT_NV 0x8537
+#define GL_EXPAND_NORMAL_NV 0x8538
+#define GL_EXPAND_NEGATE_NV 0x8539
+#define GL_HALF_BIAS_NORMAL_NV 0x853A
+#define GL_HALF_BIAS_NEGATE_NV 0x853B
+#define GL_SIGNED_IDENTITY_NV 0x853C
+#define GL_SIGNED_NEGATE_NV 0x853D
+#define GL_SCALE_BY_TWO_NV 0x853E
+#define GL_SCALE_BY_FOUR_NV 0x853F
+#define GL_SCALE_BY_ONE_HALF_NV 0x8540
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
+#define GL_COMBINER_INPUT_NV 0x8542
+#define GL_COMBINER_MAPPING_NV 0x8543
+#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
+#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
+#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
+#define GL_COMBINER_MUX_SUM_NV 0x8547
+#define GL_COMBINER_SCALE_NV 0x8548
+#define GL_COMBINER_BIAS_NV 0x8549
+#define GL_COMBINER_AB_OUTPUT_NV 0x854A
+#define GL_COMBINER_CD_OUTPUT_NV 0x854B
+#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
+#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
+#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
+#define GL_COLOR_SUM_CLAMP_NV 0x854F
+#define GL_COMBINER0_NV 0x8550
+#define GL_COMBINER1_NV 0x8551
+#define GL_COMBINER2_NV 0x8552
+#define GL_COMBINER3_NV 0x8553
+#define GL_COMBINER4_NV 0x8554
+#define GL_COMBINER5_NV 0x8555
+#define GL_COMBINER6_NV 0x8556
+#define GL_COMBINER7_NV 0x8557
+
+typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params);
+
+#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV)
+#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV)
+#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV)
+#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV)
+#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV)
+#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV)
+#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV)
+#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV)
+#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV)
+#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV)
+#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV)
+#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV)
+#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV)
+
+#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners)
+
+#endif /* GL_NV_register_combiners */
+
+/* ----------------------- GL_NV_register_combiners2 ----------------------- */
+
+#ifndef GL_NV_register_combiners2
+#define GL_NV_register_combiners2 1
+
+#define GL_PER_STAGE_CONSTANTS_NV 0x8535
+
+typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params);
+
+#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV)
+#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV)
+
+#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2)
+
+#endif /* GL_NV_register_combiners2 */
+
+/* ------------------- GL_NV_representative_fragment_test ------------------ */
+
+#ifndef GL_NV_representative_fragment_test
+#define GL_NV_representative_fragment_test 1
+
+#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
+
+#define GLEW_NV_representative_fragment_test GLEW_GET_VAR(__GLEW_NV_representative_fragment_test)
+
+#endif /* GL_NV_representative_fragment_test */
+
+/* ------------------ GL_NV_robustness_video_memory_purge ------------------ */
+
+#ifndef GL_NV_robustness_video_memory_purge
+#define GL_NV_robustness_video_memory_purge 1
+
+#define GL_PURGED_CONTEXT_RESET_NV 0x92BB
+
+#define GLEW_NV_robustness_video_memory_purge GLEW_GET_VAR(__GLEW_NV_robustness_video_memory_purge)
+
+#endif /* GL_NV_robustness_video_memory_purge */
+
+/* --------------------------- GL_NV_sRGB_formats -------------------------- */
+
+#ifndef GL_NV_sRGB_formats
+#define GL_NV_sRGB_formats 1
+
+#define GL_ETC1_SRGB8_NV 0x88EE
+#define GL_SRGB8_NV 0x8C41
+#define GL_SLUMINANCE_ALPHA_NV 0x8C44
+#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45
+#define GL_SLUMINANCE_NV 0x8C46
+#define GL_SLUMINANCE8_NV 0x8C47
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
+
+#define GLEW_NV_sRGB_formats GLEW_GET_VAR(__GLEW_NV_sRGB_formats)
+
+#endif /* GL_NV_sRGB_formats */
+
+/* ------------------------- GL_NV_sample_locations ------------------------ */
+
+#ifndef GL_NV_sample_locations
+#define GL_NV_sample_locations 1
+
+#define GL_SAMPLE_LOCATION_NV 0x8E50
+#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
+#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
+#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLRESOLVEDEPTHVALUESNVPROC) (void);
+
+#define glFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewFramebufferSampleLocationsfvNV)
+#define glNamedFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewNamedFramebufferSampleLocationsfvNV)
+#define glResolveDepthValuesNV GLEW_GET_FUN(__glewResolveDepthValuesNV)
+
+#define GLEW_NV_sample_locations GLEW_GET_VAR(__GLEW_NV_sample_locations)
+
+#endif /* GL_NV_sample_locations */
+
+/* ------------------ GL_NV_sample_mask_override_coverage ------------------ */
+
+#ifndef GL_NV_sample_mask_override_coverage
+#define GL_NV_sample_mask_override_coverage 1
+
+#define GLEW_NV_sample_mask_override_coverage GLEW_GET_VAR(__GLEW_NV_sample_mask_override_coverage)
+
+#endif /* GL_NV_sample_mask_override_coverage */
+
+/* ------------------------ GL_NV_scissor_exclusive ------------------------ */
+
+#ifndef GL_NV_scissor_exclusive
+#define GL_NV_scissor_exclusive 1
+
+#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555
+#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556
+
+typedef void (GLAPIENTRY * PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint* v);
+typedef void (GLAPIENTRY * PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define glScissorExclusiveArrayvNV GLEW_GET_FUN(__glewScissorExclusiveArrayvNV)
+#define glScissorExclusiveNV GLEW_GET_FUN(__glewScissorExclusiveNV)
+
+#define GLEW_NV_scissor_exclusive GLEW_GET_VAR(__GLEW_NV_scissor_exclusive)
+
+#endif /* GL_NV_scissor_exclusive */
+
+/* ---------------------- GL_NV_shader_atomic_counters --------------------- */
+
+#ifndef GL_NV_shader_atomic_counters
+#define GL_NV_shader_atomic_counters 1
+
+#define GLEW_NV_shader_atomic_counters GLEW_GET_VAR(__GLEW_NV_shader_atomic_counters)
+
+#endif /* GL_NV_shader_atomic_counters */
+
+/* ----------------------- GL_NV_shader_atomic_float ----------------------- */
+
+#ifndef GL_NV_shader_atomic_float
+#define GL_NV_shader_atomic_float 1
+
+#define GLEW_NV_shader_atomic_float GLEW_GET_VAR(__GLEW_NV_shader_atomic_float)
+
+#endif /* GL_NV_shader_atomic_float */
+
+/* ---------------------- GL_NV_shader_atomic_float64 ---------------------- */
+
+#ifndef GL_NV_shader_atomic_float64
+#define GL_NV_shader_atomic_float64 1
+
+#define GLEW_NV_shader_atomic_float64 GLEW_GET_VAR(__GLEW_NV_shader_atomic_float64)
+
+#endif /* GL_NV_shader_atomic_float64 */
+
+/* -------------------- GL_NV_shader_atomic_fp16_vector -------------------- */
+
+#ifndef GL_NV_shader_atomic_fp16_vector
+#define GL_NV_shader_atomic_fp16_vector 1
+
+#define GLEW_NV_shader_atomic_fp16_vector GLEW_GET_VAR(__GLEW_NV_shader_atomic_fp16_vector)
+
+#endif /* GL_NV_shader_atomic_fp16_vector */
+
+/* ----------------------- GL_NV_shader_atomic_int64 ----------------------- */
+
+#ifndef GL_NV_shader_atomic_int64
+#define GL_NV_shader_atomic_int64 1
+
+#define GLEW_NV_shader_atomic_int64 GLEW_GET_VAR(__GLEW_NV_shader_atomic_int64)
+
+#endif /* GL_NV_shader_atomic_int64 */
+
+/* ------------------------ GL_NV_shader_buffer_load ----------------------- */
+
+#ifndef GL_NV_shader_buffer_load
+#define GL_NV_shader_buffer_load 1
+
+#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
+#define GL_GPU_ADDRESS_NV 0x8F34
+#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
+
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
+typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
+typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
+typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+
+#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV)
+#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV)
+#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV)
+#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV)
+#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV)
+#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV)
+#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV)
+#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV)
+#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV)
+#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV)
+#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV)
+#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV)
+#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV)
+
+#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load)
+
+#endif /* GL_NV_shader_buffer_load */
+
+/* ---------------- GL_NV_shader_noperspective_interpolation --------------- */
+
+#ifndef GL_NV_shader_noperspective_interpolation
+#define GL_NV_shader_noperspective_interpolation 1
+
+#define GLEW_NV_shader_noperspective_interpolation GLEW_GET_VAR(__GLEW_NV_shader_noperspective_interpolation)
+
+#endif /* GL_NV_shader_noperspective_interpolation */
+
+/* ------------------- GL_NV_shader_storage_buffer_object ------------------ */
+
+#ifndef GL_NV_shader_storage_buffer_object
+#define GL_NV_shader_storage_buffer_object 1
+
+#define GLEW_NV_shader_storage_buffer_object GLEW_GET_VAR(__GLEW_NV_shader_storage_buffer_object)
+
+#endif /* GL_NV_shader_storage_buffer_object */
+
+/* ------------------- GL_NV_shader_subgroup_partitioned ------------------- */
+
+#ifndef GL_NV_shader_subgroup_partitioned
+#define GL_NV_shader_subgroup_partitioned 1
+
+#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
+
+#define GLEW_NV_shader_subgroup_partitioned GLEW_GET_VAR(__GLEW_NV_shader_subgroup_partitioned)
+
+#endif /* GL_NV_shader_subgroup_partitioned */
+
+/* --------------------- GL_NV_shader_texture_footprint -------------------- */
+
+#ifndef GL_NV_shader_texture_footprint
+#define GL_NV_shader_texture_footprint 1
+
+#define GLEW_NV_shader_texture_footprint GLEW_GET_VAR(__GLEW_NV_shader_texture_footprint)
+
+#endif /* GL_NV_shader_texture_footprint */
+
+/* ----------------------- GL_NV_shader_thread_group ----------------------- */
+
+#ifndef GL_NV_shader_thread_group
+#define GL_NV_shader_thread_group 1
+
+#define GL_WARP_SIZE_NV 0x9339
+#define GL_WARPS_PER_SM_NV 0x933A
+#define GL_SM_COUNT_NV 0x933B
+
+#define GLEW_NV_shader_thread_group GLEW_GET_VAR(__GLEW_NV_shader_thread_group)
+
+#endif /* GL_NV_shader_thread_group */
+
+/* ---------------------- GL_NV_shader_thread_shuffle ---------------------- */
+
+#ifndef GL_NV_shader_thread_shuffle
+#define GL_NV_shader_thread_shuffle 1
+
+#define GLEW_NV_shader_thread_shuffle GLEW_GET_VAR(__GLEW_NV_shader_thread_shuffle)
+
+#endif /* GL_NV_shader_thread_shuffle */
+
+/* ------------------------ GL_NV_shading_rate_image ----------------------- */
+
+#ifndef GL_NV_shading_rate_image
+#define GL_NV_shading_rate_image 1
+
+#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B
+#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C
+#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D
+#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E
+#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F
+#define GL_SHADING_RATE_IMAGE_NV 0x9563
+#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564
+#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565
+#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569
+#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A
+#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B
+#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C
+#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D
+#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E
+#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F
+#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE
+#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF
+#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0
+
+typedef void (GLAPIENTRY * PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture);
+typedef void (GLAPIENTRY * PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum* rate);
+typedef void (GLAPIENTRY * PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint* location);
+typedef void (GLAPIENTRY * PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize);
+typedef void (GLAPIENTRY * PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum* rates);
+typedef void (GLAPIENTRY * PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint* locations);
+typedef void (GLAPIENTRY * PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order);
+
+#define glBindShadingRateImageNV GLEW_GET_FUN(__glewBindShadingRateImageNV)
+#define glGetShadingRateImagePaletteNV GLEW_GET_FUN(__glewGetShadingRateImagePaletteNV)
+#define glGetShadingRateSampleLocationivNV GLEW_GET_FUN(__glewGetShadingRateSampleLocationivNV)
+#define glShadingRateImageBarrierNV GLEW_GET_FUN(__glewShadingRateImageBarrierNV)
+#define glShadingRateImagePaletteNV GLEW_GET_FUN(__glewShadingRateImagePaletteNV)
+#define glShadingRateSampleOrderCustomNV GLEW_GET_FUN(__glewShadingRateSampleOrderCustomNV)
+#define glShadingRateSampleOrderNV GLEW_GET_FUN(__glewShadingRateSampleOrderNV)
+
+#define GLEW_NV_shading_rate_image GLEW_GET_VAR(__GLEW_NV_shading_rate_image)
+
+#endif /* GL_NV_shading_rate_image */
+
+/* ---------------------- GL_NV_shadow_samplers_array ---------------------- */
+
+#ifndef GL_NV_shadow_samplers_array
+#define GL_NV_shadow_samplers_array 1
+
+#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4
+
+#define GLEW_NV_shadow_samplers_array GLEW_GET_VAR(__GLEW_NV_shadow_samplers_array)
+
+#endif /* GL_NV_shadow_samplers_array */
+
+/* ----------------------- GL_NV_shadow_samplers_cube ---------------------- */
+
+#ifndef GL_NV_shadow_samplers_cube
+#define GL_NV_shadow_samplers_cube 1
+
+#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5
+
+#define GLEW_NV_shadow_samplers_cube GLEW_GET_VAR(__GLEW_NV_shadow_samplers_cube)
+
+#endif /* GL_NV_shadow_samplers_cube */
+
+/* ---------------------- GL_NV_stereo_view_rendering ---------------------- */
+
+#ifndef GL_NV_stereo_view_rendering
+#define GL_NV_stereo_view_rendering 1
+
+#define GLEW_NV_stereo_view_rendering GLEW_GET_VAR(__GLEW_NV_stereo_view_rendering)
+
+#endif /* GL_NV_stereo_view_rendering */
+
+/* ---------------------- GL_NV_tessellation_program5 ---------------------- */
+
+#ifndef GL_NV_tessellation_program5
+#define GL_NV_tessellation_program5 1
+
+#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
+#define GL_TESS_CONTROL_PROGRAM_NV 0x891E
+#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F
+#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
+#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
+
+#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5)
+
+#endif /* GL_NV_tessellation_program5 */
+
+/* -------------------------- GL_NV_texgen_emboss -------------------------- */
+
+#ifndef GL_NV_texgen_emboss
+#define GL_NV_texgen_emboss 1
+
+#define GL_EMBOSS_LIGHT_NV 0x855D
+#define GL_EMBOSS_CONSTANT_NV 0x855E
+#define GL_EMBOSS_MAP_NV 0x855F
+
+#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss)
+
+#endif /* GL_NV_texgen_emboss */
+
+/* ------------------------ GL_NV_texgen_reflection ------------------------ */
+
+#ifndef GL_NV_texgen_reflection
+#define GL_NV_texgen_reflection 1
+
+#define GL_NORMAL_MAP_NV 0x8511
+#define GL_REFLECTION_MAP_NV 0x8512
+
+#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection)
+
+#endif /* GL_NV_texgen_reflection */
+
+/* -------------------------- GL_NV_texture_array -------------------------- */
+
+#ifndef GL_NV_texture_array
+#define GL_NV_texture_array 1
+
+#define GL_UNPACK_SKIP_IMAGES_NV 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT_NV 0x806E
+#define GL_MAX_ARRAY_TEXTURE_LAYERS_NV 0x88FF
+#define GL_TEXTURE_2D_ARRAY_NV 0x8C1A
+#define GL_TEXTURE_BINDING_2D_ARRAY_NV 0x8C1D
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_NV 0x8CD4
+#define GL_SAMPLER_2D_ARRAY_NV 0x8DC1
+
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DNVPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DNVPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERNVPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DNVPROC) (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DNVPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+
+#define glCompressedTexImage3DNV GLEW_GET_FUN(__glewCompressedTexImage3DNV)
+#define glCompressedTexSubImage3DNV GLEW_GET_FUN(__glewCompressedTexSubImage3DNV)
+#define glCopyTexSubImage3DNV GLEW_GET_FUN(__glewCopyTexSubImage3DNV)
+#define glFramebufferTextureLayerNV GLEW_GET_FUN(__glewFramebufferTextureLayerNV)
+#define glTexImage3DNV GLEW_GET_FUN(__glewTexImage3DNV)
+#define glTexSubImage3DNV GLEW_GET_FUN(__glewTexSubImage3DNV)
+
+#define GLEW_NV_texture_array GLEW_GET_VAR(__GLEW_NV_texture_array)
+
+#endif /* GL_NV_texture_array */
+
+/* ------------------------- GL_NV_texture_barrier ------------------------- */
+
+#ifndef GL_NV_texture_barrier
+#define GL_NV_texture_barrier 1
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void);
+
+#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV)
+
+#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier)
+
+#endif /* GL_NV_texture_barrier */
+
+/* ----------------------- GL_NV_texture_border_clamp ---------------------- */
+
+#ifndef GL_NV_texture_border_clamp
+#define GL_NV_texture_border_clamp 1
+
+#define GL_TEXTURE_BORDER_COLOR_NV 0x1004
+#define GL_CLAMP_TO_BORDER_NV 0x812D
+
+#define GLEW_NV_texture_border_clamp GLEW_GET_VAR(__GLEW_NV_texture_border_clamp)
+
+#endif /* GL_NV_texture_border_clamp */
+
+/* --------------------- GL_NV_texture_compression_latc -------------------- */
+
+#ifndef GL_NV_texture_compression_latc
+#define GL_NV_texture_compression_latc 1
+
+#define GL_COMPRESSED_LUMINANCE_LATC1_NV 0x8C70
+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_NV 0x8C71
+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_NV 0x8C72
+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_NV 0x8C73
+
+#define GLEW_NV_texture_compression_latc GLEW_GET_VAR(__GLEW_NV_texture_compression_latc)
+
+#endif /* GL_NV_texture_compression_latc */
+
+/* --------------------- GL_NV_texture_compression_s3tc -------------------- */
+
+#ifndef GL_NV_texture_compression_s3tc
+#define GL_NV_texture_compression_s3tc 1
+
+#define GL_COMPRESSED_RGB_S3TC_DXT1_NV 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_NV 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_NV 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_NV 0x83F3
+
+#define GLEW_NV_texture_compression_s3tc GLEW_GET_VAR(__GLEW_NV_texture_compression_s3tc)
+
+#endif /* GL_NV_texture_compression_s3tc */
+
+/* ----------------- GL_NV_texture_compression_s3tc_update ----------------- */
+
+#ifndef GL_NV_texture_compression_s3tc_update
+#define GL_NV_texture_compression_s3tc_update 1
+
+#define GLEW_NV_texture_compression_s3tc_update GLEW_GET_VAR(__GLEW_NV_texture_compression_s3tc_update)
+
+#endif /* GL_NV_texture_compression_s3tc_update */
+
+/* --------------------- GL_NV_texture_compression_vtc --------------------- */
+
+#ifndef GL_NV_texture_compression_vtc
+#define GL_NV_texture_compression_vtc 1
+
+#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc)
+
+#endif /* GL_NV_texture_compression_vtc */
+
+/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */
+
+#ifndef GL_NV_texture_env_combine4
+#define GL_NV_texture_env_combine4 1
+
+#define GL_COMBINE4_NV 0x8503
+#define GL_SOURCE3_RGB_NV 0x8583
+#define GL_SOURCE3_ALPHA_NV 0x858B
+#define GL_OPERAND3_RGB_NV 0x8593
+#define GL_OPERAND3_ALPHA_NV 0x859B
+
+#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4)
+
+#endif /* GL_NV_texture_env_combine4 */
+
+/* ---------------------- GL_NV_texture_expand_normal ---------------------- */
+
+#ifndef GL_NV_texture_expand_normal
+#define GL_NV_texture_expand_normal 1
+
+#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
+
+#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal)
+
+#endif /* GL_NV_texture_expand_normal */
+
+/* ----------------------- GL_NV_texture_multisample ----------------------- */
+
+#ifndef GL_NV_texture_multisample
+#define GL_NV_texture_multisample 1
+
+#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045
+#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046
+
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+
+#define glTexImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage2DMultisampleCoverageNV)
+#define glTexImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage3DMultisampleCoverageNV)
+#define glTextureImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage2DMultisampleCoverageNV)
+#define glTextureImage2DMultisampleNV GLEW_GET_FUN(__glewTextureImage2DMultisampleNV)
+#define glTextureImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage3DMultisampleCoverageNV)
+#define glTextureImage3DMultisampleNV GLEW_GET_FUN(__glewTextureImage3DMultisampleNV)
+
+#define GLEW_NV_texture_multisample GLEW_GET_VAR(__GLEW_NV_texture_multisample)
+
+#endif /* GL_NV_texture_multisample */
+
+/* ---------------------- GL_NV_texture_npot_2D_mipmap --------------------- */
+
+#ifndef GL_NV_texture_npot_2D_mipmap
+#define GL_NV_texture_npot_2D_mipmap 1
+
+#define GLEW_NV_texture_npot_2D_mipmap GLEW_GET_VAR(__GLEW_NV_texture_npot_2D_mipmap)
+
+#endif /* GL_NV_texture_npot_2D_mipmap */
+
+/* ------------------------ GL_NV_texture_rectangle ------------------------ */
+
+#ifndef GL_NV_texture_rectangle
+#define GL_NV_texture_rectangle 1
+
+#define GL_TEXTURE_RECTANGLE_NV 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
+
+#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle)
+
+#endif /* GL_NV_texture_rectangle */
+
+/* ------------------- GL_NV_texture_rectangle_compressed ------------------ */
+
+#ifndef GL_NV_texture_rectangle_compressed
+#define GL_NV_texture_rectangle_compressed 1
+
+#define GLEW_NV_texture_rectangle_compressed GLEW_GET_VAR(__GLEW_NV_texture_rectangle_compressed)
+
+#endif /* GL_NV_texture_rectangle_compressed */
+
+/* -------------------------- GL_NV_texture_shader ------------------------- */
+
+#ifndef GL_NV_texture_shader
+#define GL_NV_texture_shader 1
+
+#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
+#define GL_SHADER_CONSISTENT_NV 0x86DD
+#define GL_TEXTURE_SHADER_NV 0x86DE
+#define GL_SHADER_OPERATION_NV 0x86DF
+#define GL_CULL_MODES_NV 0x86E0
+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
+#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
+#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
+#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
+#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
+#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
+#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
+#define GL_CONST_EYE_NV 0x86E5
+#define GL_PASS_THROUGH_NV 0x86E6
+#define GL_CULL_FRAGMENT_NV 0x86E7
+#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
+#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
+#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
+#define GL_DOT_PRODUCT_NV 0x86EC
+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
+#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+#define GL_HILO_NV 0x86F4
+#define GL_DSDT_NV 0x86F5
+#define GL_DSDT_MAG_NV 0x86F6
+#define GL_DSDT_MAG_VIB_NV 0x86F7
+#define GL_HILO16_NV 0x86F8
+#define GL_SIGNED_HILO_NV 0x86F9
+#define GL_SIGNED_HILO16_NV 0x86FA
+#define GL_SIGNED_RGBA_NV 0x86FB
+#define GL_SIGNED_RGBA8_NV 0x86FC
+#define GL_SIGNED_RGB_NV 0x86FE
+#define GL_SIGNED_RGB8_NV 0x86FF
+#define GL_SIGNED_LUMINANCE_NV 0x8701
+#define GL_SIGNED_LUMINANCE8_NV 0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+#define GL_SIGNED_ALPHA_NV 0x8705
+#define GL_SIGNED_ALPHA8_NV 0x8706
+#define GL_SIGNED_INTENSITY_NV 0x8707
+#define GL_SIGNED_INTENSITY8_NV 0x8708
+#define GL_DSDT8_NV 0x8709
+#define GL_DSDT8_MAG8_NV 0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+#define GL_HI_SCALE_NV 0x870E
+#define GL_LO_SCALE_NV 0x870F
+#define GL_DS_SCALE_NV 0x8710
+#define GL_DT_SCALE_NV 0x8711
+#define GL_MAGNITUDE_SCALE_NV 0x8712
+#define GL_VIBRANCE_SCALE_NV 0x8713
+#define GL_HI_BIAS_NV 0x8714
+#define GL_LO_BIAS_NV 0x8715
+#define GL_DS_BIAS_NV 0x8716
+#define GL_DT_BIAS_NV 0x8717
+#define GL_MAGNITUDE_BIAS_NV 0x8718
+#define GL_VIBRANCE_BIAS_NV 0x8719
+#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
+#define GL_TEXTURE_HI_SIZE_NV 0x871B
+#define GL_TEXTURE_LO_SIZE_NV 0x871C
+#define GL_TEXTURE_DS_SIZE_NV 0x871D
+#define GL_TEXTURE_DT_SIZE_NV 0x871E
+#define GL_TEXTURE_MAG_SIZE_NV 0x871F
+
+#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader)
+
+#endif /* GL_NV_texture_shader */
+
+/* ------------------------- GL_NV_texture_shader2 ------------------------- */
+
+#ifndef GL_NV_texture_shader2
+#define GL_NV_texture_shader2 1
+
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
+#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
+#define GL_HILO_NV 0x86F4
+#define GL_DSDT_NV 0x86F5
+#define GL_DSDT_MAG_NV 0x86F6
+#define GL_DSDT_MAG_VIB_NV 0x86F7
+#define GL_HILO16_NV 0x86F8
+#define GL_SIGNED_HILO_NV 0x86F9
+#define GL_SIGNED_HILO16_NV 0x86FA
+#define GL_SIGNED_RGBA_NV 0x86FB
+#define GL_SIGNED_RGBA8_NV 0x86FC
+#define GL_SIGNED_RGB_NV 0x86FE
+#define GL_SIGNED_RGB8_NV 0x86FF
+#define GL_SIGNED_LUMINANCE_NV 0x8701
+#define GL_SIGNED_LUMINANCE8_NV 0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+#define GL_SIGNED_ALPHA_NV 0x8705
+#define GL_SIGNED_ALPHA8_NV 0x8706
+#define GL_SIGNED_INTENSITY_NV 0x8707
+#define GL_SIGNED_INTENSITY8_NV 0x8708
+#define GL_DSDT8_NV 0x8709
+#define GL_DSDT8_MAG8_NV 0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+
+#define GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2)
+
+#endif /* GL_NV_texture_shader2 */
+
+/* ------------------------- GL_NV_texture_shader3 ------------------------- */
+
+#ifndef GL_NV_texture_shader3
+#define GL_NV_texture_shader3 1
+
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
+#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+#define GL_HILO8_NV 0x885E
+#define GL_SIGNED_HILO8_NV 0x885F
+#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
+
+#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3)
+
+#endif /* GL_NV_texture_shader3 */
+
+/* ------------------------ GL_NV_timeline_semaphore ----------------------- */
+
+#ifndef GL_NV_timeline_semaphore
+#define GL_NV_timeline_semaphore 1
+
+#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595
+#define GL_SEMAPHORE_TYPE_NV 0x95B3
+#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4
+#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5
+#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6
+
+typedef void (GLAPIENTRY * PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint* semaphores);
+typedef void (GLAPIENTRY * PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint* params);
+
+#define glCreateSemaphoresNV GLEW_GET_FUN(__glewCreateSemaphoresNV)
+#define glGetSemaphoreParameterivNV GLEW_GET_FUN(__glewGetSemaphoreParameterivNV)
+#define glSemaphoreParameterivNV GLEW_GET_FUN(__glewSemaphoreParameterivNV)
+
+#define GLEW_NV_timeline_semaphore GLEW_GET_VAR(__GLEW_NV_timeline_semaphore)
+
+#endif /* GL_NV_timeline_semaphore */
+
+/* ------------------------ GL_NV_transform_feedback ----------------------- */
+
+#ifndef GL_NV_transform_feedback
+#define GL_NV_transform_feedback 1
+
+#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
+#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
+#define GL_TEXTURE_COORD_NV 0x8C79
+#define GL_CLIP_DISTANCE_NV 0x8C7A
+#define GL_VERTEX_ID_NV 0x8C7B
+#define GL_PRIMITIVE_ID_NV 0x8C7C
+#define GL_GENERIC_ATTRIB_NV 0x8C7D
+#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
+#define GL_ACTIVE_VARYINGS_NV 0x8C81
+#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
+#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
+#define GL_PRIMITIVES_GENERATED_NV 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
+#define GL_RASTERIZER_DISCARD_NV 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
+#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
+
+typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
+typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
+typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
+typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
+
+#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV)
+#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV)
+#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV)
+#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV)
+#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV)
+#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV)
+#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV)
+#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV)
+#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV)
+#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV)
+#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV)
+
+#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback)
+
+#endif /* GL_NV_transform_feedback */
+
+/* ----------------------- GL_NV_transform_feedback2 ----------------------- */
+
+#ifndef GL_NV_transform_feedback2
+#define GL_NV_transform_feedback2 1
+
+#define GL_TRANSFORM_FEEDBACK_NV 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25
+
+typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);
+typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids);
+typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);
+
+#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV)
+#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV)
+#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV)
+#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV)
+#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV)
+#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV)
+#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV)
+
+#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2)
+
+#endif /* GL_NV_transform_feedback2 */
+
+/* ------------------ GL_NV_uniform_buffer_unified_memory ------------------ */
+
+#ifndef GL_NV_uniform_buffer_unified_memory
+#define GL_NV_uniform_buffer_unified_memory 1
+
+#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
+#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F
+#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370
+
+#define GLEW_NV_uniform_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_uniform_buffer_unified_memory)
+
+#endif /* GL_NV_uniform_buffer_unified_memory */
+
+/* -------------------------- GL_NV_vdpau_interop -------------------------- */
+
+#ifndef GL_NV_vdpau_interop
+#define GL_NV_vdpau_interop 1
+
+#define GL_SURFACE_STATE_NV 0x86EB
+#define GL_SURFACE_REGISTERED_NV 0x86FD
+#define GL_SURFACE_MAPPED_NV 0x8700
+#define GL_WRITE_DISCARD_NV 0x88BE
+
+typedef GLintptr GLvdpauSurfaceNV;
+
+typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values);
+typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const void*getProcAddress);
+typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
+typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces);
+typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
+typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
+typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
+typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces);
+typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
+
+#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV)
+#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV)
+#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV)
+#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV)
+#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV)
+#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV)
+#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV)
+#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV)
+#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV)
+#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV)
+
+#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop)
+
+#endif /* GL_NV_vdpau_interop */
+
+/* -------------------------- GL_NV_vdpau_interop2 ------------------------- */
+
+#ifndef GL_NV_vdpau_interop2
+#define GL_NV_vdpau_interop2 1
+
+typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure);
+
+#define glVDPAURegisterVideoSurfaceWithPictureStructureNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceWithPictureStructureNV)
+
+#define GLEW_NV_vdpau_interop2 GLEW_GET_VAR(__GLEW_NV_vdpau_interop2)
+
+#endif /* GL_NV_vdpau_interop2 */
+
+/* ------------------------ GL_NV_vertex_array_range ----------------------- */
+
+#ifndef GL_NV_vertex_array_range
+#define GL_NV_vertex_array_range 1
+
+#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
+#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
+
+typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void *pointer);
+
+#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV)
+#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV)
+
+#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range)
+
+#endif /* GL_NV_vertex_array_range */
+
+/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */
+
+#ifndef GL_NV_vertex_array_range2
+#define GL_NV_vertex_array_range2 1
+
+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
+
+#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2)
+
+#endif /* GL_NV_vertex_array_range2 */
+
+/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */
+
+#ifndef GL_NV_vertex_attrib_integer_64bit
+#define GL_NV_vertex_attrib_integer_64bit 1
+
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_NV 0x140F
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+
+#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV)
+#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV)
+#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV)
+#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV)
+#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV)
+#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV)
+#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV)
+#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV)
+#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV)
+#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV)
+#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV)
+#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV)
+#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV)
+#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV)
+#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV)
+#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV)
+#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV)
+#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV)
+#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV)
+
+#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit)
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
+/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */
+
+#ifndef GL_NV_vertex_buffer_unified_memory
+#define GL_NV_vertex_buffer_unified_memory 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
+#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
+#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
+#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
+#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
+#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
+#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
+#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
+#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
+#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
+#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
+#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
+#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
+#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
+#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
+#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
+#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
+#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
+#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
+#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
+#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
+#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
+#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
+
+typedef void (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]);
+typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
+
+#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV)
+#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV)
+#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV)
+#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV)
+#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV)
+#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV)
+#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV)
+#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV)
+#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV)
+#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV)
+#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV)
+#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV)
+
+#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory)
+
+#endif /* GL_NV_vertex_buffer_unified_memory */
+
+/* -------------------------- GL_NV_vertex_program ------------------------- */
+
+#ifndef GL_NV_vertex_program
+#define GL_NV_vertex_program 1
+
+#define GL_VERTEX_PROGRAM_NV 0x8620
+#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
+#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
+#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
+#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
+#define GL_CURRENT_ATTRIB_NV 0x8626
+#define GL_PROGRAM_LENGTH_NV 0x8627
+#define GL_PROGRAM_STRING_NV 0x8628
+#define GL_MODELVIEW_PROJECTION_NV 0x8629
+#define GL_IDENTITY_NV 0x862A
+#define GL_INVERSE_NV 0x862B
+#define GL_TRANSPOSE_NV 0x862C
+#define GL_INVERSE_TRANSPOSE_NV 0x862D
+#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
+#define GL_MAX_TRACK_MATRICES_NV 0x862F
+#define GL_MATRIX0_NV 0x8630
+#define GL_MATRIX1_NV 0x8631
+#define GL_MATRIX2_NV 0x8632
+#define GL_MATRIX3_NV 0x8633
+#define GL_MATRIX4_NV 0x8634
+#define GL_MATRIX5_NV 0x8635
+#define GL_MATRIX6_NV 0x8636
+#define GL_MATRIX7_NV 0x8637
+#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
+#define GL_CURRENT_MATRIX_NV 0x8641
+#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
+#define GL_PROGRAM_PARAMETER_NV 0x8644
+#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
+#define GL_PROGRAM_TARGET_NV 0x8646
+#define GL_PROGRAM_RESIDENT_NV 0x8647
+#define GL_TRACK_MATRIX_NV 0x8648
+#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
+#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
+#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
+#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
+#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
+#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
+#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
+#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
+#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
+#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
+#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
+#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
+#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
+#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
+#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
+#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
+#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
+#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
+#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
+#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
+#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
+#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
+#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
+#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
+#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
+#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
+#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
+#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
+#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
+#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
+#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
+#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
+#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
+#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
+#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
+#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
+#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
+#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
+#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
+#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
+#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
+#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
+#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
+#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
+#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
+#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
+#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
+#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
+#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
+#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
+#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
+
+typedef GLboolean (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences);
+typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void** pointer);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v);
+
+#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV)
+#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV)
+#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV)
+#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV)
+#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV)
+#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV)
+#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV)
+#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV)
+#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV)
+#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV)
+#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV)
+#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV)
+#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV)
+#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV)
+#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV)
+#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV)
+#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV)
+#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV)
+#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV)
+#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV)
+#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV)
+#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV)
+#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV)
+#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV)
+#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV)
+#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV)
+#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV)
+#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV)
+#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV)
+#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV)
+#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV)
+#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV)
+#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV)
+#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV)
+#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV)
+#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV)
+#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV)
+#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV)
+#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV)
+#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV)
+#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV)
+#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV)
+#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV)
+#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV)
+#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV)
+#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV)
+#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV)
+#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV)
+#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV)
+#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV)
+#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV)
+#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV)
+#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV)
+#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV)
+#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV)
+#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV)
+#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV)
+#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV)
+#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV)
+#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV)
+#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV)
+#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV)
+#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV)
+#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV)
+
+#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program)
+
+#endif /* GL_NV_vertex_program */
+
+/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */
+
+#ifndef GL_NV_vertex_program1_1
+#define GL_NV_vertex_program1_1 1
+
+#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1)
+
+#endif /* GL_NV_vertex_program1_1 */
+
+/* ------------------------- GL_NV_vertex_program2 ------------------------- */
+
+#ifndef GL_NV_vertex_program2
+#define GL_NV_vertex_program2 1
+
+#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2)
+
+#endif /* GL_NV_vertex_program2 */
+
+/* ---------------------- GL_NV_vertex_program2_option --------------------- */
+
+#ifndef GL_NV_vertex_program2_option
+#define GL_NV_vertex_program2_option 1
+
+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+
+#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option)
+
+#endif /* GL_NV_vertex_program2_option */
+
+/* ------------------------- GL_NV_vertex_program3 ------------------------- */
+
+#ifndef GL_NV_vertex_program3
+#define GL_NV_vertex_program3 1
+
+#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+
+#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3)
+
+#endif /* GL_NV_vertex_program3 */
+
+/* ------------------------- GL_NV_vertex_program4 ------------------------- */
+
+#ifndef GL_NV_vertex_program4
+#define GL_NV_vertex_program4 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
+
+#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4)
+
+#endif /* GL_NV_vertex_program4 */
+
+/* -------------------------- GL_NV_video_capture -------------------------- */
+
+#ifndef GL_NV_video_capture
+#define GL_NV_video_capture 1
+
+#define GL_VIDEO_BUFFER_NV 0x9020
+#define GL_VIDEO_BUFFER_BINDING_NV 0x9021
+#define GL_FIELD_UPPER_NV 0x9022
+#define GL_FIELD_LOWER_NV 0x9023
+#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024
+#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
+#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
+#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027
+#define GL_VIDEO_BUFFER_PITCH_NV 0x9028
+#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
+#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A
+#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B
+#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
+#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
+#define GL_PARTIAL_SUCCESS_NV 0x902E
+#define GL_SUCCESS_NV 0x902F
+#define GL_FAILURE_NV 0x9030
+#define GL_YCBYCR8_422_NV 0x9031
+#define GL_YCBAYCR8A_4224_NV 0x9032
+#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033
+#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
+#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035
+#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
+#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037
+#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038
+#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039
+#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
+#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
+#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
+
+typedef void (GLAPIENTRY * PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
+typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
+typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
+typedef void (GLAPIENTRY * PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint* params);
+typedef GLenum (GLAPIENTRY * PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT *capture_time);
+typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params);
+
+#define glBeginVideoCaptureNV GLEW_GET_FUN(__glewBeginVideoCaptureNV)
+#define glBindVideoCaptureStreamBufferNV GLEW_GET_FUN(__glewBindVideoCaptureStreamBufferNV)
+#define glBindVideoCaptureStreamTextureNV GLEW_GET_FUN(__glewBindVideoCaptureStreamTextureNV)
+#define glEndVideoCaptureNV GLEW_GET_FUN(__glewEndVideoCaptureNV)
+#define glGetVideoCaptureStreamdvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamdvNV)
+#define glGetVideoCaptureStreamfvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamfvNV)
+#define glGetVideoCaptureStreamivNV GLEW_GET_FUN(__glewGetVideoCaptureStreamivNV)
+#define glGetVideoCaptureivNV GLEW_GET_FUN(__glewGetVideoCaptureivNV)
+#define glVideoCaptureNV GLEW_GET_FUN(__glewVideoCaptureNV)
+#define glVideoCaptureStreamParameterdvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterdvNV)
+#define glVideoCaptureStreamParameterfvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterfvNV)
+#define glVideoCaptureStreamParameterivNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterivNV)
+
+#define GLEW_NV_video_capture GLEW_GET_VAR(__GLEW_NV_video_capture)
+
+#endif /* GL_NV_video_capture */
+
+/* -------------------------- GL_NV_viewport_array ------------------------- */
+
+#ifndef GL_NV_viewport_array
+#define GL_NV_viewport_array 1
+
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_VIEWPORT 0x0BA2
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_MAX_VIEWPORTS_NV 0x825B
+#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C
+#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F
+
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY * PFNGLDISABLEINVPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEINVPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat* data);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINVPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint * v);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat * v);
+
+#define glDepthRangeArrayfvNV GLEW_GET_FUN(__glewDepthRangeArrayfvNV)
+#define glDepthRangeIndexedfNV GLEW_GET_FUN(__glewDepthRangeIndexedfNV)
+#define glDisableiNV GLEW_GET_FUN(__glewDisableiNV)
+#define glEnableiNV GLEW_GET_FUN(__glewEnableiNV)
+#define glGetFloati_vNV GLEW_GET_FUN(__glewGetFloati_vNV)
+#define glIsEnablediNV GLEW_GET_FUN(__glewIsEnablediNV)
+#define glScissorArrayvNV GLEW_GET_FUN(__glewScissorArrayvNV)
+#define glScissorIndexedNV GLEW_GET_FUN(__glewScissorIndexedNV)
+#define glScissorIndexedvNV GLEW_GET_FUN(__glewScissorIndexedvNV)
+#define glViewportArrayvNV GLEW_GET_FUN(__glewViewportArrayvNV)
+#define glViewportIndexedfNV GLEW_GET_FUN(__glewViewportIndexedfNV)
+#define glViewportIndexedfvNV GLEW_GET_FUN(__glewViewportIndexedfvNV)
+
+#define GLEW_NV_viewport_array GLEW_GET_VAR(__GLEW_NV_viewport_array)
+
+#endif /* GL_NV_viewport_array */
+
+/* ------------------------- GL_NV_viewport_array2 ------------------------- */
+
+#ifndef GL_NV_viewport_array2
+#define GL_NV_viewport_array2 1
+
+#define GLEW_NV_viewport_array2 GLEW_GET_VAR(__GLEW_NV_viewport_array2)
+
+#endif /* GL_NV_viewport_array2 */
+
+/* ------------------------- GL_NV_viewport_swizzle ------------------------ */
+
+#ifndef GL_NV_viewport_swizzle
+#define GL_NV_viewport_swizzle 1
+
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
+#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
+#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
+#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
+#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
+
+typedef void (GLAPIENTRY * PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
+
+#define glViewportSwizzleNV GLEW_GET_FUN(__glewViewportSwizzleNV)
+
+#define GLEW_NV_viewport_swizzle GLEW_GET_VAR(__GLEW_NV_viewport_swizzle)
+
+#endif /* GL_NV_viewport_swizzle */
+
+/* ---------------------------- GL_OES_EGL_image --------------------------- */
+
+#ifndef GL_OES_EGL_image
+#define GL_OES_EGL_image 1
+
+typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
+typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
+
+#define glEGLImageTargetRenderbufferStorageOES GLEW_GET_FUN(__glewEGLImageTargetRenderbufferStorageOES)
+#define glEGLImageTargetTexture2DOES GLEW_GET_FUN(__glewEGLImageTargetTexture2DOES)
+
+#define GLEW_OES_EGL_image GLEW_GET_VAR(__GLEW_OES_EGL_image)
+
+#endif /* GL_OES_EGL_image */
+
+/* ----------------------- GL_OES_EGL_image_external ----------------------- */
+
+#ifndef GL_OES_EGL_image_external
+#define GL_OES_EGL_image_external 1
+
+#define GL_TEXTURE_EXTERNAL_OES 0x8D65
+#define GL_SAMPLER_EXTERNAL_OES 0x8D66
+#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
+
+#define GLEW_OES_EGL_image_external GLEW_GET_VAR(__GLEW_OES_EGL_image_external)
+
+#endif /* GL_OES_EGL_image_external */
+
+/* -------------------- GL_OES_EGL_image_external_essl3 -------------------- */
+
+#ifndef GL_OES_EGL_image_external_essl3
+#define GL_OES_EGL_image_external_essl3 1
+
+#define GLEW_OES_EGL_image_external_essl3 GLEW_GET_VAR(__GLEW_OES_EGL_image_external_essl3)
+
+#endif /* GL_OES_EGL_image_external_essl3 */
+
+/* --------------------- GL_OES_blend_equation_separate -------------------- */
+
+#ifndef GL_OES_blend_equation_separate
+#define GL_OES_blend_equation_separate 1
+
+#define GL_BLEND_EQUATION_RGB_OES 0x8009
+#define GL_BLEND_EQUATION_ALPHA_OES 0x883D
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEOESPROC) (GLenum modeRGB, GLenum modeAlpha);
+
+#define glBlendEquationSeparateOES GLEW_GET_FUN(__glewBlendEquationSeparateOES)
+
+#define GLEW_OES_blend_equation_separate GLEW_GET_VAR(__GLEW_OES_blend_equation_separate)
+
+#endif /* GL_OES_blend_equation_separate */
+
+/* ----------------------- GL_OES_blend_func_separate ---------------------- */
+
+#ifndef GL_OES_blend_func_separate
+#define GL_OES_blend_func_separate 1
+
+#define GL_BLEND_DST_RGB_OES 0x80C8
+#define GL_BLEND_SRC_RGB_OES 0x80C9
+#define GL_BLEND_DST_ALPHA_OES 0x80CA
+#define GL_BLEND_SRC_ALPHA_OES 0x80CB
+
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEOESPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+
+#define glBlendFuncSeparateOES GLEW_GET_FUN(__glewBlendFuncSeparateOES)
+
+#define GLEW_OES_blend_func_separate GLEW_GET_VAR(__GLEW_OES_blend_func_separate)
+
+#endif /* GL_OES_blend_func_separate */
+
+/* ------------------------- GL_OES_blend_subtract ------------------------- */
+
+#ifndef GL_OES_blend_subtract
+#define GL_OES_blend_subtract 1
+
+#define GL_FUNC_ADD_OES 0x8006
+#define GL_BLEND_EQUATION_OES 0x8009
+#define GL_FUNC_SUBTRACT_OES 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT_OES 0x800B
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONOESPROC) (GLenum mode);
+
+#define glBlendEquationOES GLEW_GET_FUN(__glewBlendEquationOES)
+
+#define GLEW_OES_blend_subtract GLEW_GET_VAR(__GLEW_OES_blend_subtract)
+
+#endif /* GL_OES_blend_subtract */
+
+/* ------------------------ GL_OES_byte_coordinates ------------------------ */
+
+#ifndef GL_OES_byte_coordinates
+#define GL_OES_byte_coordinates 1
+
+#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates)
+
+#endif /* GL_OES_byte_coordinates */
+
+/* ------------------ GL_OES_compressed_ETC1_RGB8_texture ------------------ */
+
+#ifndef GL_OES_compressed_ETC1_RGB8_texture
+#define GL_OES_compressed_ETC1_RGB8_texture 1
+
+#define GL_ETC1_RGB8_OES 0x8D64
+
+#define GLEW_OES_compressed_ETC1_RGB8_texture GLEW_GET_VAR(__GLEW_OES_compressed_ETC1_RGB8_texture)
+
+#endif /* GL_OES_compressed_ETC1_RGB8_texture */
+
+/* ------------------- GL_OES_compressed_paletted_texture ------------------ */
+
+#ifndef GL_OES_compressed_paletted_texture
+#define GL_OES_compressed_paletted_texture 1
+
+#define GL_PALETTE4_RGB8_OES 0x8B90
+#define GL_PALETTE4_RGBA8_OES 0x8B91
+#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
+#define GL_PALETTE4_RGBA4_OES 0x8B93
+#define GL_PALETTE4_RGB5_A1_OES 0x8B94
+#define GL_PALETTE8_RGB8_OES 0x8B95
+#define GL_PALETTE8_RGBA8_OES 0x8B96
+#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
+#define GL_PALETTE8_RGBA4_OES 0x8B98
+#define GL_PALETTE8_RGB5_A1_OES 0x8B99
+
+#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture)
+
+#endif /* GL_OES_compressed_paletted_texture */
+
+/* --------------------------- GL_OES_copy_image --------------------------- */
+
+#ifndef GL_OES_copy_image
+#define GL_OES_copy_image 1
+
+typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATAOESPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+#define glCopyImageSubDataOES GLEW_GET_FUN(__glewCopyImageSubDataOES)
+
+#define GLEW_OES_copy_image GLEW_GET_VAR(__GLEW_OES_copy_image)
+
+#endif /* GL_OES_copy_image */
+
+/* ----------------------------- GL_OES_depth24 ---------------------------- */
+
+#ifndef GL_OES_depth24
+#define GL_OES_depth24 1
+
+#define GL_DEPTH_COMPONENT24_OES 0x81A6
+
+#define GLEW_OES_depth24 GLEW_GET_VAR(__GLEW_OES_depth24)
+
+#endif /* GL_OES_depth24 */
+
+/* ----------------------------- GL_OES_depth32 ---------------------------- */
+
+#ifndef GL_OES_depth32
+#define GL_OES_depth32 1
+
+#define GL_DEPTH_COMPONENT32_OES 0x81A7
+
+#define GLEW_OES_depth32 GLEW_GET_VAR(__GLEW_OES_depth32)
+
+#endif /* GL_OES_depth32 */
+
+/* -------------------------- GL_OES_depth_texture ------------------------- */
+
+#ifndef GL_OES_depth_texture
+#define GL_OES_depth_texture 1
+
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_UNSIGNED_INT 0x1405
+#define GL_DEPTH_COMPONENT 0x1902
+
+#define GLEW_OES_depth_texture GLEW_GET_VAR(__GLEW_OES_depth_texture)
+
+#endif /* GL_OES_depth_texture */
+
+/* --------------------- GL_OES_depth_texture_cube_map --------------------- */
+
+#ifndef GL_OES_depth_texture_cube_map
+#define GL_OES_depth_texture_cube_map 1
+
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_UNSIGNED_INT 0x1405
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_DEPTH_STENCIL_OES 0x84F9
+#define GL_DEPTH24_STENCIL8_OES 0x88F0
+
+#define GLEW_OES_depth_texture_cube_map GLEW_GET_VAR(__GLEW_OES_depth_texture_cube_map)
+
+#endif /* GL_OES_depth_texture_cube_map */
+
+/* ---------------------- GL_OES_draw_buffers_indexed ---------------------- */
+
+#ifndef GL_OES_draw_buffers_indexed
+#define GL_OES_draw_buffers_indexed 1
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLCOLORMASKIOESPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY * PFNGLDISABLEIOESPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLENABLEIOESPROC) (GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index);
+
+#define glBlendEquationSeparateiOES GLEW_GET_FUN(__glewBlendEquationSeparateiOES)
+#define glBlendEquationiOES GLEW_GET_FUN(__glewBlendEquationiOES)
+#define glBlendFuncSeparateiOES GLEW_GET_FUN(__glewBlendFuncSeparateiOES)
+#define glBlendFunciOES GLEW_GET_FUN(__glewBlendFunciOES)
+#define glColorMaskiOES GLEW_GET_FUN(__glewColorMaskiOES)
+#define glDisableiOES GLEW_GET_FUN(__glewDisableiOES)
+#define glEnableiOES GLEW_GET_FUN(__glewEnableiOES)
+#define glIsEnablediOES GLEW_GET_FUN(__glewIsEnablediOES)
+
+#define GLEW_OES_draw_buffers_indexed GLEW_GET_VAR(__GLEW_OES_draw_buffers_indexed)
+
+#endif /* GL_OES_draw_buffers_indexed */
+
+/* -------------------------- GL_OES_draw_texture -------------------------- */
+
+#ifndef GL_OES_draw_texture
+#define GL_OES_draw_texture 1
+
+#define GL_TEXTURE_CROP_RECT_OES 0x8B9D
+
+#define GLEW_OES_draw_texture GLEW_GET_VAR(__GLEW_OES_draw_texture)
+
+#endif /* GL_OES_draw_texture */
+
+/* ----------------------- GL_OES_element_index_uint ----------------------- */
+
+#ifndef GL_OES_element_index_uint
+#define GL_OES_element_index_uint 1
+
+#define GL_UNSIGNED_INT 0x1405
+
+#define GLEW_OES_element_index_uint GLEW_GET_VAR(__GLEW_OES_element_index_uint)
+
+#endif /* GL_OES_element_index_uint */
+
+/* --------------------- GL_OES_extended_matrix_palette -------------------- */
+
+#ifndef GL_OES_extended_matrix_palette
+#define GL_OES_extended_matrix_palette 1
+
+#define GLEW_OES_extended_matrix_palette GLEW_GET_VAR(__GLEW_OES_extended_matrix_palette)
+
+#endif /* GL_OES_extended_matrix_palette */
+
+/* ------------------------ GL_OES_fbo_render_mipmap ----------------------- */
+
+#ifndef GL_OES_fbo_render_mipmap
+#define GL_OES_fbo_render_mipmap 1
+
+#define GLEW_OES_fbo_render_mipmap GLEW_GET_VAR(__GLEW_OES_fbo_render_mipmap)
+
+#endif /* GL_OES_fbo_render_mipmap */
+
+/* --------------------- GL_OES_fragment_precision_high -------------------- */
+
+#ifndef GL_OES_fragment_precision_high
+#define GL_OES_fragment_precision_high 1
+
+#define GLEW_OES_fragment_precision_high GLEW_GET_VAR(__GLEW_OES_fragment_precision_high)
+
+#endif /* GL_OES_fragment_precision_high */
+
+/* ----------------------- GL_OES_framebuffer_object ----------------------- */
+
+#ifndef GL_OES_framebuffer_object
+#define GL_OES_framebuffer_object 1
+
+#define GL_NONE_OES 0
+#define GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506
+#define GL_RGBA4_OES 0x8056
+#define GL_RGB5_A1_OES 0x8057
+#define GL_DEPTH_COMPONENT16_OES 0x81A5
+#define GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8
+#define GL_FRAMEBUFFER_BINDING_OES 0x8CA6
+#define GL_RENDERBUFFER_BINDING_OES 0x8CA7
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD
+#define GL_COLOR_ATTACHMENT0_OES 0x8CE0
+#define GL_DEPTH_ATTACHMENT_OES 0x8D00
+#define GL_STENCIL_ATTACHMENT_OES 0x8D20
+#define GL_FRAMEBUFFER_OES 0x8D40
+#define GL_RENDERBUFFER_OES 0x8D41
+#define GL_RENDERBUFFER_WIDTH_OES 0x8D42
+#define GL_RENDERBUFFER_HEIGHT_OES 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44
+#define GL_STENCIL_INDEX1_OES 0x8D46
+#define GL_STENCIL_INDEX4_OES 0x8D47
+#define GL_STENCIL_INDEX8_OES 0x8D48
+#define GL_RENDERBUFFER_RED_SIZE_OES 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55
+#define GL_RGB565_OES 0x8D62
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer);
+typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers);
+typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers);
+typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPOESPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer);
+typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+
+#define glBindFramebufferOES GLEW_GET_FUN(__glewBindFramebufferOES)
+#define glBindRenderbufferOES GLEW_GET_FUN(__glewBindRenderbufferOES)
+#define glCheckFramebufferStatusOES GLEW_GET_FUN(__glewCheckFramebufferStatusOES)
+#define glDeleteFramebuffersOES GLEW_GET_FUN(__glewDeleteFramebuffersOES)
+#define glDeleteRenderbuffersOES GLEW_GET_FUN(__glewDeleteRenderbuffersOES)
+#define glFramebufferRenderbufferOES GLEW_GET_FUN(__glewFramebufferRenderbufferOES)
+#define glFramebufferTexture2DOES GLEW_GET_FUN(__glewFramebufferTexture2DOES)
+#define glGenFramebuffersOES GLEW_GET_FUN(__glewGenFramebuffersOES)
+#define glGenRenderbuffersOES GLEW_GET_FUN(__glewGenRenderbuffersOES)
+#define glGenerateMipmapOES GLEW_GET_FUN(__glewGenerateMipmapOES)
+#define glGetFramebufferAttachmentParameterivOES GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivOES)
+#define glGetRenderbufferParameterivOES GLEW_GET_FUN(__glewGetRenderbufferParameterivOES)
+#define glIsFramebufferOES GLEW_GET_FUN(__glewIsFramebufferOES)
+#define glIsRenderbufferOES GLEW_GET_FUN(__glewIsRenderbufferOES)
+#define glRenderbufferStorageOES GLEW_GET_FUN(__glewRenderbufferStorageOES)
+
+#define GLEW_OES_framebuffer_object GLEW_GET_VAR(__GLEW_OES_framebuffer_object)
+
+#endif /* GL_OES_framebuffer_object */
+
+/* ----------------------- GL_OES_geometry_point_size ---------------------- */
+
+#ifndef GL_OES_geometry_point_size
+#define GL_OES_geometry_point_size 1
+
+#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+#define GL_LINES_ADJACENCY_OES 0xA
+#define GL_LINE_STRIP_ADJACENCY_OES 0xB
+#define GL_TRIANGLES_ADJACENCY_OES 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0xD
+#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+#define GL_UNDEFINED_VERTEX_OES 0x8260
+#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+#define GL_PRIMITIVES_GENERATED_OES 0x8C87
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+#define GL_GEOMETRY_SHADER_OES 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
+
+#define GLEW_OES_geometry_point_size GLEW_GET_VAR(__GLEW_OES_geometry_point_size)
+
+#endif /* GL_OES_geometry_point_size */
+
+/* ------------------------- GL_OES_geometry_shader ------------------------ */
+
+#ifndef GL_OES_geometry_shader
+#define GL_OES_geometry_shader 1
+
+#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+#define GL_LINES_ADJACENCY_OES 0xA
+#define GL_LINE_STRIP_ADJACENCY_OES 0xB
+#define GL_TRIANGLES_ADJACENCY_OES 0xC
+#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0xD
+#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+#define GL_UNDEFINED_VERTEX_OES 0x8260
+#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+#define GL_PRIMITIVES_GENERATED_OES 0x8C87
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+#define GL_GEOMETRY_SHADER_OES 0x8DD9
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
+
+#define GLEW_OES_geometry_shader GLEW_GET_VAR(__GLEW_OES_geometry_shader)
+
+#endif /* GL_OES_geometry_shader */
+
+/* ----------------------- GL_OES_get_program_binary ----------------------- */
+
+#ifndef GL_OES_get_program_binary
+#define GL_OES_get_program_binary 1
+
+#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741
+#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
+#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
+
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary);
+typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length);
+
+#define glGetProgramBinaryOES GLEW_GET_FUN(__glewGetProgramBinaryOES)
+#define glProgramBinaryOES GLEW_GET_FUN(__glewProgramBinaryOES)
+
+#define GLEW_OES_get_program_binary GLEW_GET_VAR(__GLEW_OES_get_program_binary)
+
+#endif /* GL_OES_get_program_binary */
+
+/* --------------------------- GL_OES_gpu_shader5 -------------------------- */
+
+#ifndef GL_OES_gpu_shader5
+#define GL_OES_gpu_shader5 1
+
+#define GLEW_OES_gpu_shader5 GLEW_GET_VAR(__GLEW_OES_gpu_shader5)
+
+#endif /* GL_OES_gpu_shader5 */
+
+/* ---------------------------- GL_OES_mapbuffer --------------------------- */
+
+#ifndef GL_OES_mapbuffer
+#define GL_OES_mapbuffer 1
+
+#define GL_WRITE_ONLY_OES 0x88B9
+#define GL_BUFFER_ACCESS_OES 0x88BB
+#define GL_BUFFER_MAPPED_OES 0x88BC
+#define GL_BUFFER_MAP_POINTER_OES 0x88BD
+
+typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void** params);
+typedef void * (GLAPIENTRY * PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
+typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFEROESPROC) (GLenum target);
+
+#define glGetBufferPointervOES GLEW_GET_FUN(__glewGetBufferPointervOES)
+#define glMapBufferOES GLEW_GET_FUN(__glewMapBufferOES)
+#define glUnmapBufferOES GLEW_GET_FUN(__glewUnmapBufferOES)
+
+#define GLEW_OES_mapbuffer GLEW_GET_VAR(__GLEW_OES_mapbuffer)
+
+#endif /* GL_OES_mapbuffer */
+
+/* --------------------------- GL_OES_matrix_get --------------------------- */
+
+#ifndef GL_OES_matrix_get
+#define GL_OES_matrix_get 1
+
+#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898d
+#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898e
+#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898f
+
+#define GLEW_OES_matrix_get GLEW_GET_VAR(__GLEW_OES_matrix_get)
+
+#endif /* GL_OES_matrix_get */
+
+/* ------------------------- GL_OES_matrix_palette ------------------------- */
+
+#ifndef GL_OES_matrix_palette
+#define GL_OES_matrix_palette 1
+
+#define GL_MAX_VERTEX_UNITS_OES 0x86A4
+#define GL_WEIGHT_ARRAY_TYPE_OES 0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_OES 0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_OES 0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_OES 0x86AC
+#define GL_WEIGHT_ARRAY_OES 0x86AD
+#define GL_MATRIX_PALETTE_OES 0x8840
+#define GL_MAX_PALETTE_MATRICES_OES 0x8842
+#define GL_CURRENT_PALETTE_MATRIX_OES 0x8843
+#define GL_MATRIX_INDEX_ARRAY_OES 0x8844
+#define GL_MATRIX_INDEX_ARRAY_SIZE_OES 0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_OES 0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES 0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_OES 0x8849
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES 0x889E
+#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES 0x8B9E
+
+typedef void (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXOESPROC) (GLuint index);
+typedef void (GLAPIENTRY * PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC) (void);
+typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, void *pointer);
+
+#define glCurrentPaletteMatrixOES GLEW_GET_FUN(__glewCurrentPaletteMatrixOES)
+#define glLoadPaletteFromModelViewMatrixOES GLEW_GET_FUN(__glewLoadPaletteFromModelViewMatrixOES)
+#define glMatrixIndexPointerOES GLEW_GET_FUN(__glewMatrixIndexPointerOES)
+#define glWeightPointerOES GLEW_GET_FUN(__glewWeightPointerOES)
+
+#define GLEW_OES_matrix_palette GLEW_GET_VAR(__GLEW_OES_matrix_palette)
+
+#endif /* GL_OES_matrix_palette */
+
+/* ---------------------- GL_OES_packed_depth_stencil ---------------------- */
+
+#ifndef GL_OES_packed_depth_stencil
+#define GL_OES_packed_depth_stencil 1
+
+#define GL_DEPTH_STENCIL_OES 0x84F9
+#define GL_UNSIGNED_INT_24_8_OES 0x84FA
+#define GL_DEPTH24_STENCIL8_OES 0x88F0
+
+#define GLEW_OES_packed_depth_stencil GLEW_GET_VAR(__GLEW_OES_packed_depth_stencil)
+
+#endif /* GL_OES_packed_depth_stencil */
+
+/* ------------------------ GL_OES_point_size_array ------------------------ */
+
+#ifndef GL_OES_point_size_array
+#define GL_OES_point_size_array 1
+
+#define GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A
+#define GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B
+#define GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C
+#define GL_POINT_SIZE_ARRAY_OES 0x8B9C
+#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F
+
+#define GLEW_OES_point_size_array GLEW_GET_VAR(__GLEW_OES_point_size_array)
+
+#endif /* GL_OES_point_size_array */
+
+/* -------------------------- GL_OES_point_sprite -------------------------- */
+
+#ifndef GL_OES_point_sprite
+#define GL_OES_point_sprite 1
+
+#define GL_POINT_SPRITE_OES 0x8861
+#define GL_COORD_REPLACE_OES 0x8862
+
+#define GLEW_OES_point_sprite GLEW_GET_VAR(__GLEW_OES_point_sprite)
+
+#endif /* GL_OES_point_sprite */
+
+/* --------------------------- GL_OES_read_format -------------------------- */
+
+#ifndef GL_OES_read_format
+#define GL_OES_read_format 1
+
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
+
+#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format)
+
+#endif /* GL_OES_read_format */
+
+/* --------------------- GL_OES_required_internalformat -------------------- */
+
+#ifndef GL_OES_required_internalformat
+#define GL_OES_required_internalformat 1
+
+#define GL_ALPHA8_OES 0x803C
+#define GL_LUMINANCE8_OES 0x8040
+#define GL_LUMINANCE4_ALPHA4_OES 0x8043
+#define GL_LUMINANCE8_ALPHA8_OES 0x8045
+#define GL_RGB8_OES 0x8051
+#define GL_RGB10_EXT 0x8052
+#define GL_RGBA4_OES 0x8056
+#define GL_RGB5_A1_OES 0x8057
+#define GL_RGBA8_OES 0x8058
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_DEPTH_COMPONENT16_OES 0x81A5
+#define GL_DEPTH_COMPONENT24_OES 0x81A6
+#define GL_DEPTH_COMPONENT32_OES 0x81A7
+#define GL_DEPTH24_STENCIL8_OES 0x88F0
+#define GL_RGB565_OES 0x8D62
+
+#define GLEW_OES_required_internalformat GLEW_GET_VAR(__GLEW_OES_required_internalformat)
+
+#endif /* GL_OES_required_internalformat */
+
+/* --------------------------- GL_OES_rgb8_rgba8 --------------------------- */
+
+#ifndef GL_OES_rgb8_rgba8
+#define GL_OES_rgb8_rgba8 1
+
+#define GL_RGB8_OES 0x8051
+#define GL_RGBA8_OES 0x8058
+
+#define GLEW_OES_rgb8_rgba8 GLEW_GET_VAR(__GLEW_OES_rgb8_rgba8)
+
+#endif /* GL_OES_rgb8_rgba8 */
+
+/* ------------------------- GL_OES_sample_shading ------------------------- */
+
+#ifndef GL_OES_sample_shading
+#define GL_OES_sample_shading 1
+
+#define GL_SAMPLE_SHADING_OES 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37
+
+typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value);
+
+#define glMinSampleShadingOES GLEW_GET_FUN(__glewMinSampleShadingOES)
+
+#define GLEW_OES_sample_shading GLEW_GET_VAR(__GLEW_OES_sample_shading)
+
+#endif /* GL_OES_sample_shading */
+
+/* ------------------------ GL_OES_sample_variables ------------------------ */
+
+#ifndef GL_OES_sample_variables
+#define GL_OES_sample_variables 1
+
+#define GLEW_OES_sample_variables GLEW_GET_VAR(__GLEW_OES_sample_variables)
+
+#endif /* GL_OES_sample_variables */
+
+/* ----------------------- GL_OES_shader_image_atomic ---------------------- */
+
+#ifndef GL_OES_shader_image_atomic
+#define GL_OES_shader_image_atomic 1
+
+#define GLEW_OES_shader_image_atomic GLEW_GET_VAR(__GLEW_OES_shader_image_atomic)
+
+#endif /* GL_OES_shader_image_atomic */
+
+/* ------------------------ GL_OES_shader_io_blocks ------------------------ */
+
+#ifndef GL_OES_shader_io_blocks
+#define GL_OES_shader_io_blocks 1
+
+#define GLEW_OES_shader_io_blocks GLEW_GET_VAR(__GLEW_OES_shader_io_blocks)
+
+#endif /* GL_OES_shader_io_blocks */
+
+/* ---------------- GL_OES_shader_multisample_interpolation ---------------- */
+
+#ifndef GL_OES_shader_multisample_interpolation
+#define GL_OES_shader_multisample_interpolation 1
+
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D
+
+#define GLEW_OES_shader_multisample_interpolation GLEW_GET_VAR(__GLEW_OES_shader_multisample_interpolation)
+
+#endif /* GL_OES_shader_multisample_interpolation */
+
+/* ------------------------ GL_OES_single_precision ------------------------ */
+
+#ifndef GL_OES_single_precision
+#define GL_OES_single_precision 1
+
+typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);
+typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);
+typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation);
+typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+
+#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES)
+#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES)
+#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES)
+#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES)
+#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES)
+#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES)
+
+#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision)
+
+#endif /* GL_OES_single_precision */
+
+/* ---------------------- GL_OES_standard_derivatives ---------------------- */
+
+#ifndef GL_OES_standard_derivatives
+#define GL_OES_standard_derivatives 1
+
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
+
+#define GLEW_OES_standard_derivatives GLEW_GET_VAR(__GLEW_OES_standard_derivatives)
+
+#endif /* GL_OES_standard_derivatives */
+
+/* ---------------------------- GL_OES_stencil1 ---------------------------- */
+
+#ifndef GL_OES_stencil1
+#define GL_OES_stencil1 1
+
+#define GL_STENCIL_INDEX1_OES 0x8D46
+
+#define GLEW_OES_stencil1 GLEW_GET_VAR(__GLEW_OES_stencil1)
+
+#endif /* GL_OES_stencil1 */
+
+/* ---------------------------- GL_OES_stencil4 ---------------------------- */
+
+#ifndef GL_OES_stencil4
+#define GL_OES_stencil4 1
+
+#define GL_STENCIL_INDEX4_OES 0x8D47
+
+#define GLEW_OES_stencil4 GLEW_GET_VAR(__GLEW_OES_stencil4)
+
+#endif /* GL_OES_stencil4 */
+
+/* ---------------------------- GL_OES_stencil8 ---------------------------- */
+
+#ifndef GL_OES_stencil8
+#define GL_OES_stencil8 1
+
+#define GL_STENCIL_INDEX8_OES 0x8D48
+
+#define GLEW_OES_stencil8 GLEW_GET_VAR(__GLEW_OES_stencil8)
+
+#endif /* GL_OES_stencil8 */
+
+/* ----------------------- GL_OES_surfaceless_context ---------------------- */
+
+#ifndef GL_OES_surfaceless_context
+#define GL_OES_surfaceless_context 1
+
+#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219
+
+#define GLEW_OES_surfaceless_context GLEW_GET_VAR(__GLEW_OES_surfaceless_context)
+
+#endif /* GL_OES_surfaceless_context */
+
+/* --------------------- GL_OES_tessellation_point_size -------------------- */
+
+#ifndef GL_OES_tessellation_point_size
+#define GL_OES_tessellation_point_size 1
+
+#define GL_QUADS_OES 0x0007
+#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+#define GL_PATCHES_OES 0xE
+#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+#define GL_PATCH_VERTICES_OES 0x8E72
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+#define GL_TESS_GEN_MODE_OES 0x8E76
+#define GL_TESS_GEN_SPACING_OES 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+#define GL_TESS_GEN_POINT_MODE_OES 0x8E79
+#define GL_ISOLINES_OES 0x8E7A
+#define GL_FRACTIONAL_ODD_OES 0x8E7B
+#define GL_FRACTIONAL_EVEN_OES 0x8E7C
+#define GL_MAX_PATCH_VERTICES_OES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+#define GL_TESS_EVALUATION_SHADER_OES 0x8E87
+#define GL_TESS_CONTROL_SHADER_OES 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+#define GL_IS_PER_PATCH_OES 0x92E7
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
+
+#define GLEW_OES_tessellation_point_size GLEW_GET_VAR(__GLEW_OES_tessellation_point_size)
+
+#endif /* GL_OES_tessellation_point_size */
+
+/* ----------------------- GL_OES_tessellation_shader ---------------------- */
+
+#ifndef GL_OES_tessellation_shader
+#define GL_OES_tessellation_shader 1
+
+#define GL_QUADS_OES 0x0007
+#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+#define GL_PATCHES_OES 0xE
+#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+#define GL_PATCH_VERTICES_OES 0x8E72
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+#define GL_TESS_GEN_MODE_OES 0x8E76
+#define GL_TESS_GEN_SPACING_OES 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+#define GL_TESS_GEN_POINT_MODE_OES 0x8E79
+#define GL_ISOLINES_OES 0x8E7A
+#define GL_FRACTIONAL_ODD_OES 0x8E7B
+#define GL_FRACTIONAL_EVEN_OES 0x8E7C
+#define GL_MAX_PATCH_VERTICES_OES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+#define GL_TESS_EVALUATION_SHADER_OES 0x8E87
+#define GL_TESS_CONTROL_SHADER_OES 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+#define GL_IS_PER_PATCH_OES 0x92E7
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
+
+#define GLEW_OES_tessellation_shader GLEW_GET_VAR(__GLEW_OES_tessellation_shader)
+
+#endif /* GL_OES_tessellation_shader */
+
+/* --------------------------- GL_OES_texture_3D --------------------------- */
+
+#ifndef GL_OES_texture_3D
+#define GL_OES_texture_3D 1
+
+#define GL_TEXTURE_BINDING_3D_OES 0x806A
+#define GL_TEXTURE_3D_OES 0x806F
+#define GL_TEXTURE_WRAP_R_OES 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073
+
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+
+#define glCompressedTexImage3DOES GLEW_GET_FUN(__glewCompressedTexImage3DOES)
+#define glCompressedTexSubImage3DOES GLEW_GET_FUN(__glewCompressedTexSubImage3DOES)
+#define glCopyTexSubImage3DOES GLEW_GET_FUN(__glewCopyTexSubImage3DOES)
+#define glFramebufferTexture3DOES GLEW_GET_FUN(__glewFramebufferTexture3DOES)
+#define glTexImage3DOES GLEW_GET_FUN(__glewTexImage3DOES)
+#define glTexSubImage3DOES GLEW_GET_FUN(__glewTexSubImage3DOES)
+
+#define GLEW_OES_texture_3D GLEW_GET_VAR(__GLEW_OES_texture_3D)
+
+#endif /* GL_OES_texture_3D */
+
+/* ---------------------- GL_OES_texture_border_clamp ---------------------- */
+
+#ifndef GL_OES_texture_border_clamp
+#define GL_OES_texture_border_clamp 1
+
+#define GL_TEXTURE_BORDER_COLOR_OES 0x1004
+#define GL_CLAMP_TO_BORDER_OES 0x812D
+
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint* params);
+
+#define glGetSamplerParameterIivOES GLEW_GET_FUN(__glewGetSamplerParameterIivOES)
+#define glGetSamplerParameterIuivOES GLEW_GET_FUN(__glewGetSamplerParameterIuivOES)
+#define glGetTexParameterIivOES GLEW_GET_FUN(__glewGetTexParameterIivOES)
+#define glGetTexParameterIuivOES GLEW_GET_FUN(__glewGetTexParameterIuivOES)
+#define glSamplerParameterIivOES GLEW_GET_FUN(__glewSamplerParameterIivOES)
+#define glSamplerParameterIuivOES GLEW_GET_FUN(__glewSamplerParameterIuivOES)
+#define glTexParameterIivOES GLEW_GET_FUN(__glewTexParameterIivOES)
+#define glTexParameterIuivOES GLEW_GET_FUN(__glewTexParameterIuivOES)
+
+#define GLEW_OES_texture_border_clamp GLEW_GET_VAR(__GLEW_OES_texture_border_clamp)
+
+#endif /* GL_OES_texture_border_clamp */
+
+/* ------------------------- GL_OES_texture_buffer ------------------------- */
+
+#ifndef GL_OES_texture_buffer
+#define GL_OES_texture_buffer 1
+
+#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A
+#define GL_TEXTURE_BUFFER_OES 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D
+#define GL_SAMPLER_BUFFER_OES 0x8DC2
+#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8
+#define GL_IMAGE_BUFFER_OES 0x9051
+#define GL_INT_IMAGE_BUFFER_OES 0x905C
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067
+#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D
+#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F
+
+typedef void (GLAPIENTRY * PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY * PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+#define glTexBufferOES GLEW_GET_FUN(__glewTexBufferOES)
+#define glTexBufferRangeOES GLEW_GET_FUN(__glewTexBufferRangeOES)
+
+#define GLEW_OES_texture_buffer GLEW_GET_VAR(__GLEW_OES_texture_buffer)
+
+#endif /* GL_OES_texture_buffer */
+
+/* -------------------- GL_OES_texture_compression_astc -------------------- */
+
+#ifndef GL_OES_texture_compression_astc
+#define GL_OES_texture_compression_astc 1
+
+#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
+
+#define GLEW_OES_texture_compression_astc GLEW_GET_VAR(__GLEW_OES_texture_compression_astc)
+
+#endif /* GL_OES_texture_compression_astc */
+
+/* ------------------------ GL_OES_texture_cube_map ------------------------ */
+
+#ifndef GL_OES_texture_cube_map
+#define GL_OES_texture_cube_map 1
+
+#define GL_TEXTURE_GEN_MODE_OES 0x2500
+#define GL_NORMAL_MAP_OES 0x8511
+#define GL_REFLECTION_MAP_OES 0x8512
+#define GL_TEXTURE_CUBE_MAP_OES 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP_OES 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES 0x851A
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES 0x851C
+#define GL_TEXTURE_GEN_STR_OES 0x8D60
+
+typedef void (GLAPIENTRY * PFNGLGETTEXGENFVOESPROC) (GLenum coord, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXGENIVOESPROC) (GLenum coord, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLTEXGENFOESPROC) (GLenum coord, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLTEXGENFVOESPROC) (GLenum coord, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLTEXGENIOESPROC) (GLenum coord, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLTEXGENIVOESPROC) (GLenum coord, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed* params);
+
+#define glGetTexGenfvOES GLEW_GET_FUN(__glewGetTexGenfvOES)
+#define glGetTexGenivOES GLEW_GET_FUN(__glewGetTexGenivOES)
+#define glGetTexGenxvOES GLEW_GET_FUN(__glewGetTexGenxvOES)
+#define glTexGenfOES GLEW_GET_FUN(__glewTexGenfOES)
+#define glTexGenfvOES GLEW_GET_FUN(__glewTexGenfvOES)
+#define glTexGeniOES GLEW_GET_FUN(__glewTexGeniOES)
+#define glTexGenivOES GLEW_GET_FUN(__glewTexGenivOES)
+#define glTexGenxOES GLEW_GET_FUN(__glewTexGenxOES)
+#define glTexGenxvOES GLEW_GET_FUN(__glewTexGenxvOES)
+
+#define GLEW_OES_texture_cube_map GLEW_GET_VAR(__GLEW_OES_texture_cube_map)
+
+#endif /* GL_OES_texture_cube_map */
+
+/* --------------------- GL_OES_texture_cube_map_array --------------------- */
+
+#ifndef GL_OES_texture_cube_map_array
+#define GL_OES_texture_cube_map_array 1
+
+#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A
+#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F
+#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A
+
+#define GLEW_OES_texture_cube_map_array GLEW_GET_VAR(__GLEW_OES_texture_cube_map_array)
+
+#endif /* GL_OES_texture_cube_map_array */
+
+/* ---------------------- GL_OES_texture_env_crossbar ---------------------- */
+
+#ifndef GL_OES_texture_env_crossbar
+#define GL_OES_texture_env_crossbar 1
+
+#define GLEW_OES_texture_env_crossbar GLEW_GET_VAR(__GLEW_OES_texture_env_crossbar)
+
+#endif /* GL_OES_texture_env_crossbar */
+
+/* --------------------- GL_OES_texture_mirrored_repeat -------------------- */
+
+#ifndef GL_OES_texture_mirrored_repeat
+#define GL_OES_texture_mirrored_repeat 1
+
+#define GL_MIRRORED_REPEAT 0x8370
+
+#define GLEW_OES_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_OES_texture_mirrored_repeat)
+
+#endif /* GL_OES_texture_mirrored_repeat */
+
+/* -------------------------- GL_OES_texture_npot -------------------------- */
+
+#ifndef GL_OES_texture_npot
+#define GL_OES_texture_npot 1
+
+#define GLEW_OES_texture_npot GLEW_GET_VAR(__GLEW_OES_texture_npot)
+
+#endif /* GL_OES_texture_npot */
+
+/* ------------------------ GL_OES_texture_stencil8 ------------------------ */
+
+#ifndef GL_OES_texture_stencil8
+#define GL_OES_texture_stencil8 1
+
+#define GL_STENCIL_INDEX 0x1901
+#define GL_STENCIL_INDEX8 0x8D48
+
+#define GLEW_OES_texture_stencil8 GLEW_GET_VAR(__GLEW_OES_texture_stencil8)
+
+#endif /* GL_OES_texture_stencil8 */
+
+/* -------------- GL_OES_texture_storage_multisample_2d_array -------------- */
+
+#ifndef GL_OES_texture_storage_multisample_2d_array
+#define GL_OES_texture_storage_multisample_2d_array 1
+
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D
+
+typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+#define glTexStorage3DMultisampleOES GLEW_GET_FUN(__glewTexStorage3DMultisampleOES)
+
+#define GLEW_OES_texture_storage_multisample_2d_array GLEW_GET_VAR(__GLEW_OES_texture_storage_multisample_2d_array)
+
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+
+/* -------------------------- GL_OES_texture_view -------------------------- */
+
+#ifndef GL_OES_texture_view
+#define GL_OES_texture_view 1
+
+#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+#define glTextureViewOES GLEW_GET_FUN(__glewTextureViewOES)
+
+#define GLEW_OES_texture_view GLEW_GET_VAR(__GLEW_OES_texture_view)
+
+#endif /* GL_OES_texture_view */
+
+/* ----------------------- GL_OES_vertex_array_object ---------------------- */
+
+#ifndef GL_OES_vertex_array_object
+#define GL_OES_vertex_array_object 1
+
+#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5
+
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint* arrays);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYOESPROC) (GLuint array);
+
+#define glBindVertexArrayOES GLEW_GET_FUN(__glewBindVertexArrayOES)
+#define glDeleteVertexArraysOES GLEW_GET_FUN(__glewDeleteVertexArraysOES)
+#define glGenVertexArraysOES GLEW_GET_FUN(__glewGenVertexArraysOES)
+#define glIsVertexArrayOES GLEW_GET_FUN(__glewIsVertexArrayOES)
+
+#define GLEW_OES_vertex_array_object GLEW_GET_VAR(__GLEW_OES_vertex_array_object)
+
+#endif /* GL_OES_vertex_array_object */
+
+/* ------------------------ GL_OES_vertex_half_float ----------------------- */
+
+#ifndef GL_OES_vertex_half_float
+#define GL_OES_vertex_half_float 1
+
+#define GL_HALF_FLOAT_OES 0x8D61
+
+#define GLEW_OES_vertex_half_float GLEW_GET_VAR(__GLEW_OES_vertex_half_float)
+
+#endif /* GL_OES_vertex_half_float */
+
+/* --------------------- GL_OES_vertex_type_10_10_10_2 --------------------- */
+
+#ifndef GL_OES_vertex_type_10_10_10_2
+#define GL_OES_vertex_type_10_10_10_2 1
+
+#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6
+#define GL_INT_10_10_10_2_OES 0x8DF7
+
+#define GLEW_OES_vertex_type_10_10_10_2 GLEW_GET_VAR(__GLEW_OES_vertex_type_10_10_10_2)
+
+#endif /* GL_OES_vertex_type_10_10_10_2 */
+
+/* ---------------------------- GL_OML_interlace --------------------------- */
+
+#ifndef GL_OML_interlace
+#define GL_OML_interlace 1
+
+#define GL_INTERLACE_OML 0x8980
+#define GL_INTERLACE_READ_OML 0x8981
+
+#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace)
+
+#endif /* GL_OML_interlace */
+
+/* ---------------------------- GL_OML_resample ---------------------------- */
+
+#ifndef GL_OML_resample
+#define GL_OML_resample 1
+
+#define GL_PACK_RESAMPLE_OML 0x8984
+#define GL_UNPACK_RESAMPLE_OML 0x8985
+#define GL_RESAMPLE_REPLICATE_OML 0x8986
+#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
+#define GL_RESAMPLE_AVERAGE_OML 0x8988
+#define GL_RESAMPLE_DECIMATE_OML 0x8989
+
+#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample)
+
+#endif /* GL_OML_resample */
+
+/* ---------------------------- GL_OML_subsample --------------------------- */
+
+#ifndef GL_OML_subsample
+#define GL_OML_subsample 1
+
+#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
+#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
+
+#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample)
+
+#endif /* GL_OML_subsample */
+
+/* ---------------------------- GL_OVR_multiview --------------------------- */
+
+#ifndef GL_OVR_multiview
+#define GL_OVR_multiview 1
+
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
+#define GL_MAX_VIEWS_OVR 0x9631
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
+#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
+typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
+
+#define glFramebufferTextureMultiviewOVR GLEW_GET_FUN(__glewFramebufferTextureMultiviewOVR)
+#define glNamedFramebufferTextureMultiviewOVR GLEW_GET_FUN(__glewNamedFramebufferTextureMultiviewOVR)
+
+#define GLEW_OVR_multiview GLEW_GET_VAR(__GLEW_OVR_multiview)
+
+#endif /* GL_OVR_multiview */
+
+/* --------------------------- GL_OVR_multiview2 --------------------------- */
+
+#ifndef GL_OVR_multiview2
+#define GL_OVR_multiview2 1
+
+#define GLEW_OVR_multiview2 GLEW_GET_VAR(__GLEW_OVR_multiview2)
+
+#endif /* GL_OVR_multiview2 */
+
+/* ------------ GL_OVR_multiview_multisampled_render_to_texture ------------ */
+
+#ifndef GL_OVR_multiview_multisampled_render_to_texture
+#define GL_OVR_multiview_multisampled_render_to_texture 1
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
+
+#define glFramebufferTextureMultisampleMultiviewOVR GLEW_GET_FUN(__glewFramebufferTextureMultisampleMultiviewOVR)
+
+#define GLEW_OVR_multiview_multisampled_render_to_texture GLEW_GET_VAR(__GLEW_OVR_multiview_multisampled_render_to_texture)
+
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+
+/* --------------------------- GL_PGI_misc_hints --------------------------- */
+
+#ifndef GL_PGI_misc_hints
+#define GL_PGI_misc_hints 1
+
+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000
+#define GL_CONSERVE_MEMORY_HINT_PGI 107005
+#define GL_RECLAIM_MEMORY_HINT_PGI 107006
+#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010
+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011
+#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012
+#define GL_ALWAYS_FAST_HINT_PGI 107020
+#define GL_ALWAYS_SOFT_HINT_PGI 107021
+#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022
+#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023
+#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024
+#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025
+#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030
+#define GL_STRICT_LIGHTING_HINT_PGI 107031
+#define GL_STRICT_SCISSOR_HINT_PGI 107032
+#define GL_FULL_STIPPLE_HINT_PGI 107033
+#define GL_CLIP_NEAR_HINT_PGI 107040
+#define GL_CLIP_FAR_HINT_PGI 107041
+#define GL_WIDE_LINE_HINT_PGI 107042
+#define GL_BACK_NORMALS_HINT_PGI 107043
+
+#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints)
+
+#endif /* GL_PGI_misc_hints */
+
+/* -------------------------- GL_PGI_vertex_hints -------------------------- */
+
+#ifndef GL_PGI_vertex_hints
+#define GL_PGI_vertex_hints 1
+
+#define GL_VERTEX23_BIT_PGI 0x00000004
+#define GL_VERTEX4_BIT_PGI 0x00000008
+#define GL_COLOR3_BIT_PGI 0x00010000
+#define GL_COLOR4_BIT_PGI 0x00020000
+#define GL_EDGEFLAG_BIT_PGI 0x00040000
+#define GL_INDEX_BIT_PGI 0x00080000
+#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
+#define GL_VERTEX_DATA_HINT_PGI 107050
+#define GL_VERTEX_CONSISTENT_HINT_PGI 107051
+#define GL_MATERIAL_SIDE_HINT_PGI 107052
+#define GL_MAX_VERTEX_HINT_PGI 107053
+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
+#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
+#define GL_MAT_EMISSION_BIT_PGI 0x00800000
+#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
+#define GL_MAT_SHININESS_BIT_PGI 0x02000000
+#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
+#define GL_NORMAL_BIT_PGI 0x08000000
+#define GL_TEXCOORD1_BIT_PGI 0x10000000
+#define GL_TEXCOORD2_BIT_PGI 0x20000000
+#define GL_TEXCOORD3_BIT_PGI 0x40000000
+#define GL_TEXCOORD4_BIT_PGI 0x80000000
+
+#define GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints)
+
+#endif /* GL_PGI_vertex_hints */
+
+/* ----------------------- GL_QCOM_YUV_texture_gather ---------------------- */
+
+#ifndef GL_QCOM_YUV_texture_gather
+#define GL_QCOM_YUV_texture_gather 1
+
+#define GLEW_QCOM_YUV_texture_gather GLEW_GET_VAR(__GLEW_QCOM_YUV_texture_gather)
+
+#endif /* GL_QCOM_YUV_texture_gather */
+
+/* --------------------------- GL_QCOM_alpha_test -------------------------- */
+
+#ifndef GL_QCOM_alpha_test
+#define GL_QCOM_alpha_test 1
+
+#define GL_ALPHA_TEST_QCOM 0x0BC0
+#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1
+#define GL_ALPHA_TEST_REF_QCOM 0x0BC2
+
+typedef void (GLAPIENTRY * PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref);
+
+#define glAlphaFuncQCOM GLEW_GET_FUN(__glewAlphaFuncQCOM)
+
+#define GLEW_QCOM_alpha_test GLEW_GET_VAR(__GLEW_QCOM_alpha_test)
+
+#endif /* GL_QCOM_alpha_test */
+
+/* ------------------------ GL_QCOM_binning_control ------------------------ */
+
+#ifndef GL_QCOM_binning_control
+#define GL_QCOM_binning_control 1
+
+#define GL_DONT_CARE 0x1100
+#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0
+#define GL_CPU_OPTIMIZED_QCOM 0x8FB1
+#define GL_GPU_OPTIMIZED_QCOM 0x8FB2
+#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3
+
+#define GLEW_QCOM_binning_control GLEW_GET_VAR(__GLEW_QCOM_binning_control)
+
+#endif /* GL_QCOM_binning_control */
+
+/* ------------------------- GL_QCOM_driver_control ------------------------ */
+
+#ifndef GL_QCOM_driver_control
+#define GL_QCOM_driver_control 1
+
+typedef void (GLAPIENTRY * PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
+typedef void (GLAPIENTRY * PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
+typedef void (GLAPIENTRY * PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar *driverControlString);
+typedef void (GLAPIENTRY * PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint* num, GLsizei size, GLuint *driverControls);
+
+#define glDisableDriverControlQCOM GLEW_GET_FUN(__glewDisableDriverControlQCOM)
+#define glEnableDriverControlQCOM GLEW_GET_FUN(__glewEnableDriverControlQCOM)
+#define glGetDriverControlStringQCOM GLEW_GET_FUN(__glewGetDriverControlStringQCOM)
+#define glGetDriverControlsQCOM GLEW_GET_FUN(__glewGetDriverControlsQCOM)
+
+#define GLEW_QCOM_driver_control GLEW_GET_VAR(__GLEW_QCOM_driver_control)
+
+#endif /* GL_QCOM_driver_control */
+
+/* -------------------------- GL_QCOM_extended_get ------------------------- */
+
+#ifndef GL_QCOM_extended_get
+#define GL_QCOM_extended_get 1
+
+#define GL_TEXTURE_WIDTH_QCOM 0x8BD2
+#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3
+#define GL_TEXTURE_DEPTH_QCOM 0x8BD4
+#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5
+#define GL_TEXTURE_FORMAT_QCOM 0x8BD6
+#define GL_TEXTURE_TYPE_QCOM 0x8BD7
+#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8
+#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9
+#define GL_TEXTURE_TARGET_QCOM 0x8BDA
+#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB
+#define GL_STATE_RESTORE 0x8BDC
+
+typedef void (GLAPIENTRY * PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void** params);
+typedef void (GLAPIENTRY * PFNGLEXTGETBUFFERSQCOMPROC) (GLuint* buffers, GLint maxBuffers, GLint* numBuffers);
+typedef void (GLAPIENTRY * PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers);
+typedef void (GLAPIENTRY * PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers);
+typedef void (GLAPIENTRY * PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels);
+typedef void (GLAPIENTRY * PFNGLEXTGETTEXTURESQCOMPROC) (GLuint* textures, GLint maxTextures, GLint* numTextures);
+typedef void (GLAPIENTRY * PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
+
+#define glExtGetBufferPointervQCOM GLEW_GET_FUN(__glewExtGetBufferPointervQCOM)
+#define glExtGetBuffersQCOM GLEW_GET_FUN(__glewExtGetBuffersQCOM)
+#define glExtGetFramebuffersQCOM GLEW_GET_FUN(__glewExtGetFramebuffersQCOM)
+#define glExtGetRenderbuffersQCOM GLEW_GET_FUN(__glewExtGetRenderbuffersQCOM)
+#define glExtGetTexLevelParameterivQCOM GLEW_GET_FUN(__glewExtGetTexLevelParameterivQCOM)
+#define glExtGetTexSubImageQCOM GLEW_GET_FUN(__glewExtGetTexSubImageQCOM)
+#define glExtGetTexturesQCOM GLEW_GET_FUN(__glewExtGetTexturesQCOM)
+#define glExtTexObjectStateOverrideiQCOM GLEW_GET_FUN(__glewExtTexObjectStateOverrideiQCOM)
+
+#define GLEW_QCOM_extended_get GLEW_GET_VAR(__GLEW_QCOM_extended_get)
+
+#endif /* GL_QCOM_extended_get */
+
+/* ------------------------- GL_QCOM_extended_get2 ------------------------- */
+
+#ifndef GL_QCOM_extended_get2
+#define GL_QCOM_extended_get2 1
+
+typedef void (GLAPIENTRY * PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar* source, GLint* length);
+typedef void (GLAPIENTRY * PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint* programs, GLint maxPrograms, GLint* numPrograms);
+typedef void (GLAPIENTRY * PFNGLEXTGETSHADERSQCOMPROC) (GLuint* shaders, GLint maxShaders, GLint* numShaders);
+typedef GLboolean (GLAPIENTRY * PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
+
+#define glExtGetProgramBinarySourceQCOM GLEW_GET_FUN(__glewExtGetProgramBinarySourceQCOM)
+#define glExtGetProgramsQCOM GLEW_GET_FUN(__glewExtGetProgramsQCOM)
+#define glExtGetShadersQCOM GLEW_GET_FUN(__glewExtGetShadersQCOM)
+#define glExtIsProgramBinaryQCOM GLEW_GET_FUN(__glewExtIsProgramBinaryQCOM)
+
+#define GLEW_QCOM_extended_get2 GLEW_GET_VAR(__GLEW_QCOM_extended_get2)
+
+#endif /* GL_QCOM_extended_get2 */
+
+/* ---------------------- GL_QCOM_frame_extrapolation ---------------------- */
+
+#ifndef GL_QCOM_frame_extrapolation
+#define GL_QCOM_frame_extrapolation 1
+
+typedef void (GLAPIENTRY * PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);
+
+#define glExtrapolateTex2DQCOM GLEW_GET_FUN(__glewExtrapolateTex2DQCOM)
+
+#define GLEW_QCOM_frame_extrapolation GLEW_GET_VAR(__GLEW_QCOM_frame_extrapolation)
+
+#endif /* GL_QCOM_frame_extrapolation */
+
+/* ---------------------- GL_QCOM_framebuffer_foveated --------------------- */
+
+#ifndef GL_QCOM_framebuffer_foveated
+#define GL_QCOM_framebuffer_foveated 1
+
+#define GL_FOVEATION_ENABLE_BIT_QCOM 0x1
+#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x2
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint fbo, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint* providedFeatures);
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint fbo, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
+
+#define glFramebufferFoveationConfigQCOM GLEW_GET_FUN(__glewFramebufferFoveationConfigQCOM)
+#define glFramebufferFoveationParametersQCOM GLEW_GET_FUN(__glewFramebufferFoveationParametersQCOM)
+
+#define GLEW_QCOM_framebuffer_foveated GLEW_GET_VAR(__GLEW_QCOM_framebuffer_foveated)
+
+#endif /* GL_QCOM_framebuffer_foveated */
+
+/* ----------------------- GL_QCOM_motion_estimation ----------------------- */
+
+#ifndef GL_QCOM_motion_estimation
+#define GL_QCOM_motion_estimation 1
+
+#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90
+#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91
+
+typedef void (GLAPIENTRY * PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output);
+typedef void (GLAPIENTRY * PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask);
+
+#define glTexEstimateMotionQCOM GLEW_GET_FUN(__glewTexEstimateMotionQCOM)
+#define glTexEstimateMotionRegionsQCOM GLEW_GET_FUN(__glewTexEstimateMotionRegionsQCOM)
+
+#define GLEW_QCOM_motion_estimation GLEW_GET_VAR(__GLEW_QCOM_motion_estimation)
+
+#endif /* GL_QCOM_motion_estimation */
+
+/* ---------------------- GL_QCOM_perfmon_global_mode ---------------------- */
+
+#ifndef GL_QCOM_perfmon_global_mode
+#define GL_QCOM_perfmon_global_mode 1
+
+#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0
+
+#define GLEW_QCOM_perfmon_global_mode GLEW_GET_VAR(__GLEW_QCOM_perfmon_global_mode)
+
+#endif /* GL_QCOM_perfmon_global_mode */
+
+/* --------------------- GL_QCOM_render_shared_exponent -------------------- */
+
+#ifndef GL_QCOM_render_shared_exponent
+#define GL_QCOM_render_shared_exponent 1
+
+#define GL_RGB9_E5 0x8C3D
+
+#define GLEW_QCOM_render_shared_exponent GLEW_GET_VAR(__GLEW_QCOM_render_shared_exponent)
+
+#endif /* GL_QCOM_render_shared_exponent */
+
+/* -------------- GL_QCOM_shader_framebuffer_fetch_noncoherent ------------- */
+
+#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent
+#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1
+
+#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2
+
+typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void);
+
+#define glFramebufferFetchBarrierQCOM GLEW_GET_FUN(__glewFramebufferFetchBarrierQCOM)
+
+#define GLEW_QCOM_shader_framebuffer_fetch_noncoherent GLEW_GET_VAR(__GLEW_QCOM_shader_framebuffer_fetch_noncoherent)
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+
+/* ----------------- GL_QCOM_shader_framebuffer_fetch_rate ----------------- */
+
+#ifndef GL_QCOM_shader_framebuffer_fetch_rate
+#define GL_QCOM_shader_framebuffer_fetch_rate 1
+
+#define GLEW_QCOM_shader_framebuffer_fetch_rate GLEW_GET_VAR(__GLEW_QCOM_shader_framebuffer_fetch_rate)
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_rate */
+
+/* -------------------------- GL_QCOM_shading_rate ------------------------- */
+
+#ifndef GL_QCOM_shading_rate
+#define GL_QCOM_shading_rate 1
+
+#define GL_SHADING_RATE_QCOM 0x96A4
+#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5
+#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6
+#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7
+#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8
+#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9
+#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC
+#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE
+
+typedef void (GLAPIENTRY * PFNGLSHADINGRATEQCOMPROC) (GLenum rate);
+
+#define glShadingRateQCOM GLEW_GET_FUN(__glewShadingRateQCOM)
+
+#define GLEW_QCOM_shading_rate GLEW_GET_VAR(__GLEW_QCOM_shading_rate)
+
+#endif /* GL_QCOM_shading_rate */
+
+/* ------------------------ GL_QCOM_texture_foveated ----------------------- */
+
+#ifndef GL_QCOM_texture_foveated
+#define GL_QCOM_texture_foveated 1
+
+#define GL_FOVEATION_ENABLE_BIT_QCOM 0x1
+#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x2
+#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB
+#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC
+#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD
+#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE
+#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
+
+#define glTextureFoveationParametersQCOM GLEW_GET_FUN(__glewTextureFoveationParametersQCOM)
+
+#define GLEW_QCOM_texture_foveated GLEW_GET_VAR(__GLEW_QCOM_texture_foveated)
+
+#endif /* GL_QCOM_texture_foveated */
+
+/* ----------------------- GL_QCOM_texture_foveated2 ----------------------- */
+
+#ifndef GL_QCOM_texture_foveated2
+#define GL_QCOM_texture_foveated2 1
+
+#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0
+
+#define GLEW_QCOM_texture_foveated2 GLEW_GET_VAR(__GLEW_QCOM_texture_foveated2)
+
+#endif /* GL_QCOM_texture_foveated2 */
+
+/* --------------- GL_QCOM_texture_foveated_subsampled_layout -------------- */
+
+#ifndef GL_QCOM_texture_foveated_subsampled_layout
+#define GL_QCOM_texture_foveated_subsampled_layout 1
+
+#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x4
+#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1
+
+#define GLEW_QCOM_texture_foveated_subsampled_layout GLEW_GET_VAR(__GLEW_QCOM_texture_foveated_subsampled_layout)
+
+#endif /* GL_QCOM_texture_foveated_subsampled_layout */
+
+/* ------------------------ GL_QCOM_tiled_rendering ------------------------ */
+
+#ifndef GL_QCOM_tiled_rendering
+#define GL_QCOM_tiled_rendering 1
+
+#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001
+#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002
+#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004
+#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008
+#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010
+#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020
+#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040
+#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080
+#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100
+#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200
+#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400
+#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800
+#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000
+#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000
+#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000
+#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000
+#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000
+#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000
+#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000
+#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000
+#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000
+#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000
+#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000
+#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000
+#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000
+#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000
+#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000
+#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000
+#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000
+#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000
+#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000
+#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000
+
+typedef void (GLAPIENTRY * PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
+typedef void (GLAPIENTRY * PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+
+#define glEndTilingQCOM GLEW_GET_FUN(__glewEndTilingQCOM)
+#define glStartTilingQCOM GLEW_GET_FUN(__glewStartTilingQCOM)
+
+#define GLEW_QCOM_tiled_rendering GLEW_GET_VAR(__GLEW_QCOM_tiled_rendering)
+
+#endif /* GL_QCOM_tiled_rendering */
+
+/* ---------------------- GL_QCOM_writeonly_rendering ---------------------- */
+
+#ifndef GL_QCOM_writeonly_rendering
+#define GL_QCOM_writeonly_rendering 1
+
+#define GL_WRITEONLY_RENDERING_QCOM 0x8823
+
+#define GLEW_QCOM_writeonly_rendering GLEW_GET_VAR(__GLEW_QCOM_writeonly_rendering)
+
+#endif /* GL_QCOM_writeonly_rendering */
+
+/* ---------------------- GL_REGAL_ES1_0_compatibility --------------------- */
+
+#ifndef GL_REGAL_ES1_0_compatibility
+#define GL_REGAL_ES1_0_compatibility 1
+
+typedef int GLclampx;
+
+typedef void (GLAPIENTRY * PFNGLALPHAFUNCXPROC) (GLenum func, GLclampx ref);
+typedef void (GLAPIENTRY * PFNGLCLEARCOLORXPROC) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+typedef void (GLAPIENTRY * PFNGLCLEARDEPTHXPROC) (GLclampx depth);
+typedef void (GLAPIENTRY * PFNGLCOLOR4XPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+typedef void (GLAPIENTRY * PFNGLDEPTHRANGEXPROC) (GLclampx zNear, GLclampx zFar);
+typedef void (GLAPIENTRY * PFNGLFOGXPROC) (GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLFOGXVPROC) (GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLFRUSTUMFPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+typedef void (GLAPIENTRY * PFNGLFRUSTUMXPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+typedef void (GLAPIENTRY * PFNGLLIGHTMODELXPROC) (GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLLIGHTMODELXVPROC) (GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLLIGHTXPROC) (GLenum light, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLLIGHTXVPROC) (GLenum light, GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLLINEWIDTHXPROC) (GLfixed width);
+typedef void (GLAPIENTRY * PFNGLLOADMATRIXXPROC) (const GLfixed* m);
+typedef void (GLAPIENTRY * PFNGLMATERIALXPROC) (GLenum face, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLMATERIALXVPROC) (GLenum face, GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLMULTMATRIXXPROC) (const GLfixed* m);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4XPROC) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+typedef void (GLAPIENTRY * PFNGLNORMAL3XPROC) (GLfixed nx, GLfixed ny, GLfixed nz);
+typedef void (GLAPIENTRY * PFNGLORTHOFPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+typedef void (GLAPIENTRY * PFNGLORTHOXPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+typedef void (GLAPIENTRY * PFNGLPOINTSIZEXPROC) (GLfixed size);
+typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETXPROC) (GLfixed factor, GLfixed units);
+typedef void (GLAPIENTRY * PFNGLROTATEXPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEXPROC) (GLclampx value, GLboolean invert);
+typedef void (GLAPIENTRY * PFNGLSCALEXPROC) (GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY * PFNGLTEXENVXPROC) (GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLTEXENVXVPROC) (GLenum target, GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERXPROC) (GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLTRANSLATEXPROC) (GLfixed x, GLfixed y, GLfixed z);
+
+#define glAlphaFuncx GLEW_GET_FUN(__glewAlphaFuncx)
+#define glClearColorx GLEW_GET_FUN(__glewClearColorx)
+#define glClearDepthx GLEW_GET_FUN(__glewClearDepthx)
+#define glColor4x GLEW_GET_FUN(__glewColor4x)
+#define glDepthRangex GLEW_GET_FUN(__glewDepthRangex)
+#define glFogx GLEW_GET_FUN(__glewFogx)
+#define glFogxv GLEW_GET_FUN(__glewFogxv)
+#define glFrustumf GLEW_GET_FUN(__glewFrustumf)
+#define glFrustumx GLEW_GET_FUN(__glewFrustumx)
+#define glLightModelx GLEW_GET_FUN(__glewLightModelx)
+#define glLightModelxv GLEW_GET_FUN(__glewLightModelxv)
+#define glLightx GLEW_GET_FUN(__glewLightx)
+#define glLightxv GLEW_GET_FUN(__glewLightxv)
+#define glLineWidthx GLEW_GET_FUN(__glewLineWidthx)
+#define glLoadMatrixx GLEW_GET_FUN(__glewLoadMatrixx)
+#define glMaterialx GLEW_GET_FUN(__glewMaterialx)
+#define glMaterialxv GLEW_GET_FUN(__glewMaterialxv)
+#define glMultMatrixx GLEW_GET_FUN(__glewMultMatrixx)
+#define glMultiTexCoord4x GLEW_GET_FUN(__glewMultiTexCoord4x)
+#define glNormal3x GLEW_GET_FUN(__glewNormal3x)
+#define glOrthof GLEW_GET_FUN(__glewOrthof)
+#define glOrthox GLEW_GET_FUN(__glewOrthox)
+#define glPointSizex GLEW_GET_FUN(__glewPointSizex)
+#define glPolygonOffsetx GLEW_GET_FUN(__glewPolygonOffsetx)
+#define glRotatex GLEW_GET_FUN(__glewRotatex)
+#define glSampleCoveragex GLEW_GET_FUN(__glewSampleCoveragex)
+#define glScalex GLEW_GET_FUN(__glewScalex)
+#define glTexEnvx GLEW_GET_FUN(__glewTexEnvx)
+#define glTexEnvxv GLEW_GET_FUN(__glewTexEnvxv)
+#define glTexParameterx GLEW_GET_FUN(__glewTexParameterx)
+#define glTranslatex GLEW_GET_FUN(__glewTranslatex)
+
+#define GLEW_REGAL_ES1_0_compatibility GLEW_GET_VAR(__GLEW_REGAL_ES1_0_compatibility)
+
+#endif /* GL_REGAL_ES1_0_compatibility */
+
+/* ---------------------- GL_REGAL_ES1_1_compatibility --------------------- */
+
+#ifndef GL_REGAL_ES1_1_compatibility
+#define GL_REGAL_ES1_1_compatibility 1
+
+typedef void (GLAPIENTRY * PFNGLCLIPPLANEFPROC) (GLenum plane, const GLfloat* equation);
+typedef void (GLAPIENTRY * PFNGLCLIPPLANEXPROC) (GLenum plane, const GLfixed* equation);
+typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFPROC) (GLenum pname, GLfloat eqn[4]);
+typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEXPROC) (GLenum pname, GLfixed eqn[4]);
+typedef void (GLAPIENTRY * PFNGLGETFIXEDVPROC) (GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLGETLIGHTXVPROC) (GLenum light, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLGETMATERIALXVPROC) (GLenum face, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXENVXVPROC) (GLenum env, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERXVPROC) (GLenum target, GLenum pname, GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERXPROC) (GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERXVPROC) (GLenum pname, const GLfixed* params);
+typedef void (GLAPIENTRY * PFNGLPOINTSIZEPOINTEROESPROC) (GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLTEXPARAMETERXVPROC) (GLenum target, GLenum pname, const GLfixed* params);
+
+#define glClipPlanef GLEW_GET_FUN(__glewClipPlanef)
+#define glClipPlanex GLEW_GET_FUN(__glewClipPlanex)
+#define glGetClipPlanef GLEW_GET_FUN(__glewGetClipPlanef)
+#define glGetClipPlanex GLEW_GET_FUN(__glewGetClipPlanex)
+#define glGetFixedv GLEW_GET_FUN(__glewGetFixedv)
+#define glGetLightxv GLEW_GET_FUN(__glewGetLightxv)
+#define glGetMaterialxv GLEW_GET_FUN(__glewGetMaterialxv)
+#define glGetTexEnvxv GLEW_GET_FUN(__glewGetTexEnvxv)
+#define glGetTexParameterxv GLEW_GET_FUN(__glewGetTexParameterxv)
+#define glPointParameterx GLEW_GET_FUN(__glewPointParameterx)
+#define glPointParameterxv GLEW_GET_FUN(__glewPointParameterxv)
+#define glPointSizePointerOES GLEW_GET_FUN(__glewPointSizePointerOES)
+#define glTexParameterxv GLEW_GET_FUN(__glewTexParameterxv)
+
+#define GLEW_REGAL_ES1_1_compatibility GLEW_GET_VAR(__GLEW_REGAL_ES1_1_compatibility)
+
+#endif /* GL_REGAL_ES1_1_compatibility */
+
+/* ---------------------------- GL_REGAL_enable ---------------------------- */
+
+#ifndef GL_REGAL_enable
+#define GL_REGAL_enable 1
+
+#define GL_ERROR_REGAL 0x9322
+#define GL_DEBUG_REGAL 0x9323
+#define GL_LOG_REGAL 0x9324
+#define GL_EMULATION_REGAL 0x9325
+#define GL_DRIVER_REGAL 0x9326
+#define GL_MISSING_REGAL 0x9360
+#define GL_TRACE_REGAL 0x9361
+#define GL_CACHE_REGAL 0x9362
+#define GL_CODE_REGAL 0x9363
+#define GL_STATISTICS_REGAL 0x9364
+
+#define GLEW_REGAL_enable GLEW_GET_VAR(__GLEW_REGAL_enable)
+
+#endif /* GL_REGAL_enable */
+
+/* ------------------------- GL_REGAL_error_string ------------------------- */
+
+#ifndef GL_REGAL_error_string
+#define GL_REGAL_error_string 1
+
+typedef const GLchar* (GLAPIENTRY * PFNGLERRORSTRINGREGALPROC) (GLenum error);
+
+#define glErrorStringREGAL GLEW_GET_FUN(__glewErrorStringREGAL)
+
+#define GLEW_REGAL_error_string GLEW_GET_VAR(__GLEW_REGAL_error_string)
+
+#endif /* GL_REGAL_error_string */
+
+/* ------------------------ GL_REGAL_extension_query ----------------------- */
+
+#ifndef GL_REGAL_extension_query
+#define GL_REGAL_extension_query 1
+
+typedef GLboolean (GLAPIENTRY * PFNGLGETEXTENSIONREGALPROC) (const GLchar* ext);
+typedef GLboolean (GLAPIENTRY * PFNGLISSUPPORTEDREGALPROC) (const GLchar* ext);
+
+#define glGetExtensionREGAL GLEW_GET_FUN(__glewGetExtensionREGAL)
+#define glIsSupportedREGAL GLEW_GET_FUN(__glewIsSupportedREGAL)
+
+#define GLEW_REGAL_extension_query GLEW_GET_VAR(__GLEW_REGAL_extension_query)
+
+#endif /* GL_REGAL_extension_query */
+
+/* ------------------------------ GL_REGAL_log ----------------------------- */
+
+#ifndef GL_REGAL_log
+#define GL_REGAL_log 1
+
+#define GL_LOG_ERROR_REGAL 0x9319
+#define GL_LOG_WARNING_REGAL 0x931A
+#define GL_LOG_INFO_REGAL 0x931B
+#define GL_LOG_APP_REGAL 0x931C
+#define GL_LOG_DRIVER_REGAL 0x931D
+#define GL_LOG_INTERNAL_REGAL 0x931E
+#define GL_LOG_DEBUG_REGAL 0x931F
+#define GL_LOG_STATUS_REGAL 0x9320
+#define GL_LOG_HTTP_REGAL 0x9321
+
+typedef void (APIENTRY *GLLOGPROCREGAL)(GLenum stream, GLsizei length, const GLchar *message, void *context);
+
+typedef void (GLAPIENTRY * PFNGLLOGMESSAGECALLBACKREGALPROC) (GLLOGPROCREGAL callback);
+
+#define glLogMessageCallbackREGAL GLEW_GET_FUN(__glewLogMessageCallbackREGAL)
+
+#define GLEW_REGAL_log GLEW_GET_VAR(__GLEW_REGAL_log)
+
+#endif /* GL_REGAL_log */
+
+/* ------------------------- GL_REGAL_proc_address ------------------------- */
+
+#ifndef GL_REGAL_proc_address
+#define GL_REGAL_proc_address 1
+
+typedef void * (GLAPIENTRY * PFNGLGETPROCADDRESSREGALPROC) (const GLchar *name);
+
+#define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL)
+
+#define GLEW_REGAL_proc_address GLEW_GET_VAR(__GLEW_REGAL_proc_address)
+
+#endif /* GL_REGAL_proc_address */
+
+/* ----------------------- GL_REND_screen_coordinates ---------------------- */
+
+#ifndef GL_REND_screen_coordinates
+#define GL_REND_screen_coordinates 1
+
+#define GL_SCREEN_COORDINATES_REND 0x8490
+#define GL_INVERTED_SCREEN_W_REND 0x8491
+
+#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates)
+
+#endif /* GL_REND_screen_coordinates */
+
+/* ------------------------------- GL_S3_s3tc ------------------------------ */
+
+#ifndef GL_S3_s3tc
+#define GL_S3_s3tc 1
+
+#define GL_RGB_S3TC 0x83A0
+#define GL_RGB4_S3TC 0x83A1
+#define GL_RGBA_S3TC 0x83A2
+#define GL_RGBA4_S3TC 0x83A3
+#define GL_RGBA_DXT5_S3TC 0x83A4
+#define GL_RGBA4_DXT5_S3TC 0x83A5
+
+#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc)
+
+#endif /* GL_S3_s3tc */
+
+/* ------------------------- GL_SGIS_clip_band_hint ------------------------ */
+
+#ifndef GL_SGIS_clip_band_hint
+#define GL_SGIS_clip_band_hint 1
+
+#define GLEW_SGIS_clip_band_hint GLEW_GET_VAR(__GLEW_SGIS_clip_band_hint)
+
+#endif /* GL_SGIS_clip_band_hint */
+
+/* -------------------------- GL_SGIS_color_range -------------------------- */
+
+#ifndef GL_SGIS_color_range
+#define GL_SGIS_color_range 1
+
+#define GL_EXTENDED_RANGE_SGIS 0x85A5
+#define GL_MIN_RED_SGIS 0x85A6
+#define GL_MAX_RED_SGIS 0x85A7
+#define GL_MIN_GREEN_SGIS 0x85A8
+#define GL_MAX_GREEN_SGIS 0x85A9
+#define GL_MIN_BLUE_SGIS 0x85AA
+#define GL_MAX_BLUE_SGIS 0x85AB
+#define GL_MIN_ALPHA_SGIS 0x85AC
+#define GL_MAX_ALPHA_SGIS 0x85AD
+
+#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range)
+
+#endif /* GL_SGIS_color_range */
+
+/* ------------------------- GL_SGIS_detail_texture ------------------------ */
+
+#ifndef GL_SGIS_detail_texture
+#define GL_SGIS_detail_texture 1
+
+typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points);
+
+#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS)
+#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS)
+
+#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture)
+
+#endif /* GL_SGIS_detail_texture */
+
+/* -------------------------- GL_SGIS_fog_function ------------------------- */
+
+#ifndef GL_SGIS_fog_function
+#define GL_SGIS_fog_function 1
+
+typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points);
+
+#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS)
+#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS)
+
+#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function)
+
+#endif /* GL_SGIS_fog_function */
+
+/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */
+
+#ifndef GL_SGIS_generate_mipmap
+#define GL_SGIS_generate_mipmap 1
+
+#define GL_GENERATE_MIPMAP_SGIS 0x8191
+#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
+
+#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap)
+
+#endif /* GL_SGIS_generate_mipmap */
+
+/* -------------------------- GL_SGIS_line_texgen -------------------------- */
+
+#ifndef GL_SGIS_line_texgen
+#define GL_SGIS_line_texgen 1
+
+#define GLEW_SGIS_line_texgen GLEW_GET_VAR(__GLEW_SGIS_line_texgen)
+
+#endif /* GL_SGIS_line_texgen */
+
+/* -------------------------- GL_SGIS_multisample -------------------------- */
+
+#ifndef GL_SGIS_multisample
+#define GL_SGIS_multisample 1
+
+#define GL_MULTISAMPLE_SGIS 0x809D
+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
+#define GL_SAMPLE_MASK_SGIS 0x80A0
+#define GL_1PASS_SGIS 0x80A1
+#define GL_2PASS_0_SGIS 0x80A2
+#define GL_2PASS_1_SGIS 0x80A3
+#define GL_4PASS_0_SGIS 0x80A4
+#define GL_4PASS_1_SGIS 0x80A5
+#define GL_4PASS_2_SGIS 0x80A6
+#define GL_4PASS_3_SGIS 0x80A7
+#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
+#define GL_SAMPLES_SGIS 0x80A9
+#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
+#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
+#define GL_SAMPLE_PATTERN_SGIS 0x80AC
+
+typedef void (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
+typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
+
+#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS)
+#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS)
+
+#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample)
+
+#endif /* GL_SGIS_multisample */
+
+/* -------------------------- GL_SGIS_multitexture ------------------------- */
+
+#ifndef GL_SGIS_multitexture
+#define GL_SGIS_multitexture 1
+
+#define GL_SELECTED_TEXTURE_SGIS 0x83C0
+#define GL_SELECTED_TEXTURE_COORD_SET_SGIS 0x83C1
+#define GL_SELECTED_TEXTURE_TRANSFORM_SGIS 0x83C2
+#define GL_MAX_TEXTURES_SGIS 0x83C3
+#define GL_MAX_TEXTURE_COORD_SETS_SGIS 0x83C4
+#define GL_TEXTURE_COORD_SET_INTERLEAVE_FACTOR_SGIS 0x83C5
+#define GL_TEXTURE_ENV_COORD_SET_SGIS 0x83C6
+#define GL_TEXTURE0_SGIS 0x83C7
+#define GL_TEXTURE1_SGIS 0x83C8
+#define GL_TEXTURE2_SGIS 0x83C9
+#define GL_TEXTURE3_SGIS 0x83CA
+
+typedef void (GLAPIENTRY * PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC) (GLint factor);
+typedef void (GLAPIENTRY * PFNGLSELECTTEXTURECOORDSETSGISPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLSELECTTEXTURESGISPROC) (GLenum target);
+typedef void (GLAPIENTRY * PFNGLSELECTTEXTURETRANSFORMSGISPROC) (GLenum target);
+
+#define glInterleavedTextureCoordSetsSGIS GLEW_GET_FUN(__glewInterleavedTextureCoordSetsSGIS)
+#define glSelectTextureCoordSetSGIS GLEW_GET_FUN(__glewSelectTextureCoordSetSGIS)
+#define glSelectTextureSGIS GLEW_GET_FUN(__glewSelectTextureSGIS)
+#define glSelectTextureTransformSGIS GLEW_GET_FUN(__glewSelectTextureTransformSGIS)
+
+#define GLEW_SGIS_multitexture GLEW_GET_VAR(__GLEW_SGIS_multitexture)
+
+#endif /* GL_SGIS_multitexture */
+
+/* ------------------------- GL_SGIS_pixel_texture ------------------------- */
+
+#ifndef GL_SGIS_pixel_texture
+#define GL_SGIS_pixel_texture 1
+
+#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture)
+
+#endif /* GL_SGIS_pixel_texture */
+
+/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */
+
+#ifndef GL_SGIS_point_line_texgen
+#define GL_SGIS_point_line_texgen 1
+
+#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
+#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
+#define GL_EYE_POINT_SGIS 0x81F4
+#define GL_OBJECT_POINT_SGIS 0x81F5
+#define GL_EYE_LINE_SGIS 0x81F6
+#define GL_OBJECT_LINE_SGIS 0x81F7
+
+#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen)
+
+#endif /* GL_SGIS_point_line_texgen */
+
+/* ----------------------- GL_SGIS_shared_multisample ---------------------- */
+
+#ifndef GL_SGIS_shared_multisample
+#define GL_SGIS_shared_multisample 1
+
+typedef void (GLAPIENTRY * PFNGLMULTISAMPLESUBRECTPOSSGISPROC) (GLint x, GLint y);
+
+#define glMultisampleSubRectPosSGIS GLEW_GET_FUN(__glewMultisampleSubRectPosSGIS)
+
+#define GLEW_SGIS_shared_multisample GLEW_GET_VAR(__GLEW_SGIS_shared_multisample)
+
+#endif /* GL_SGIS_shared_multisample */
+
+/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */
+
+#ifndef GL_SGIS_sharpen_texture
+#define GL_SGIS_sharpen_texture 1
+
+typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points);
+
+#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS)
+#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS)
+
+#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture)
+
+#endif /* GL_SGIS_sharpen_texture */
+
+/* --------------------------- GL_SGIS_texture4D --------------------------- */
+
+#ifndef GL_SGIS_texture4D
+#define GL_SGIS_texture4D 1
+
+typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels);
+typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void *pixels);
+
+#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS)
+#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS)
+
+#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D)
+
+#endif /* GL_SGIS_texture4D */
+
+/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */
+
+#ifndef GL_SGIS_texture_border_clamp
+#define GL_SGIS_texture_border_clamp 1
+
+#define GL_CLAMP_TO_BORDER_SGIS 0x812D
+
+#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp)
+
+#endif /* GL_SGIS_texture_border_clamp */
+
+/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */
+
+#ifndef GL_SGIS_texture_edge_clamp
+#define GL_SGIS_texture_edge_clamp 1
+
+#define GL_CLAMP_TO_EDGE_SGIS 0x812F
+
+#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp)
+
+#endif /* GL_SGIS_texture_edge_clamp */
+
+/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */
+
+#ifndef GL_SGIS_texture_filter4
+#define GL_SGIS_texture_filter4 1
+
+typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights);
+typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights);
+
+#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS)
+#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS)
+
+#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4)
+
+#endif /* GL_SGIS_texture_filter4 */
+
+/* -------------------------- GL_SGIS_texture_lod -------------------------- */
+
+#ifndef GL_SGIS_texture_lod
+#define GL_SGIS_texture_lod 1
+
+#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
+#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
+#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
+#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
+
+#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod)
+
+#endif /* GL_SGIS_texture_lod */
+
+/* ------------------------- GL_SGIS_texture_select ------------------------ */
+
+#ifndef GL_SGIS_texture_select
+#define GL_SGIS_texture_select 1
+
+#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select)
+
+#endif /* GL_SGIS_texture_select */
+
+/* ----------------------------- GL_SGIX_async ----------------------------- */
+
+#ifndef GL_SGIX_async
+#define GL_SGIX_async 1
+
+#define GL_ASYNC_MARKER_SGIX 0x8329
+
+typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
+typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
+typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp);
+typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
+typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
+typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp);
+
+#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX)
+#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX)
+#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX)
+#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX)
+#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX)
+#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX)
+
+#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async)
+
+#endif /* GL_SGIX_async */
+
+/* ------------------------ GL_SGIX_async_histogram ------------------------ */
+
+#ifndef GL_SGIX_async_histogram
+#define GL_SGIX_async_histogram 1
+
+#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
+#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
+
+#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram)
+
+#endif /* GL_SGIX_async_histogram */
+
+/* -------------------------- GL_SGIX_async_pixel -------------------------- */
+
+#ifndef GL_SGIX_async_pixel
+#define GL_SGIX_async_pixel 1
+
+#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
+#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
+#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
+#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
+
+#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel)
+
+#endif /* GL_SGIX_async_pixel */
+
+/* ----------------------- GL_SGIX_bali_g_instruments ---------------------- */
+
+#ifndef GL_SGIX_bali_g_instruments
+#define GL_SGIX_bali_g_instruments 1
+
+#define GL_BALI_NUM_TRIS_CULLED_INSTRUMENT 0x6080
+#define GL_BALI_NUM_PRIMS_CLIPPED_INSTRUMENT 0x6081
+#define GL_BALI_NUM_PRIMS_REJECT_INSTRUMENT 0x6082
+#define GL_BALI_NUM_PRIMS_CLIP_RESULT_INSTRUMENT 0x6083
+
+#define GLEW_SGIX_bali_g_instruments GLEW_GET_VAR(__GLEW_SGIX_bali_g_instruments)
+
+#endif /* GL_SGIX_bali_g_instruments */
+
+/* ----------------------- GL_SGIX_bali_r_instruments ---------------------- */
+
+#ifndef GL_SGIX_bali_r_instruments
+#define GL_SGIX_bali_r_instruments 1
+
+#define GL_BALI_FRAGMENTS_GENERATED_INSTRUMENT 0x6090
+#define GL_BALI_DEPTH_PASS_INSTRUMENT 0x6091
+#define GL_BALI_R_CHIP_COUNT 0x6092
+
+#define GLEW_SGIX_bali_r_instruments GLEW_GET_VAR(__GLEW_SGIX_bali_r_instruments)
+
+#endif /* GL_SGIX_bali_r_instruments */
+
+/* --------------------- GL_SGIX_bali_timer_instruments -------------------- */
+
+#ifndef GL_SGIX_bali_timer_instruments
+#define GL_SGIX_bali_timer_instruments 1
+
+#define GLEW_SGIX_bali_timer_instruments GLEW_GET_VAR(__GLEW_SGIX_bali_timer_instruments)
+
+#endif /* GL_SGIX_bali_timer_instruments */
+
+/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */
+
+#ifndef GL_SGIX_blend_alpha_minmax
+#define GL_SGIX_blend_alpha_minmax 1
+
+#define GL_ALPHA_MIN_SGIX 0x8320
+#define GL_ALPHA_MAX_SGIX 0x8321
+
+#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax)
+
+#endif /* GL_SGIX_blend_alpha_minmax */
+
+/* --------------------------- GL_SGIX_blend_cadd -------------------------- */
+
+#ifndef GL_SGIX_blend_cadd
+#define GL_SGIX_blend_cadd 1
+
+#define GL_FUNC_COMPLEX_ADD_EXT 0x601C
+
+#define GLEW_SGIX_blend_cadd GLEW_GET_VAR(__GLEW_SGIX_blend_cadd)
+
+#endif /* GL_SGIX_blend_cadd */
+
+/* ------------------------ GL_SGIX_blend_cmultiply ------------------------ */
+
+#ifndef GL_SGIX_blend_cmultiply
+#define GL_SGIX_blend_cmultiply 1
+
+#define GL_FUNC_COMPLEX_MULTIPLY_EXT 0x601B
+
+#define GLEW_SGIX_blend_cmultiply GLEW_GET_VAR(__GLEW_SGIX_blend_cmultiply)
+
+#endif /* GL_SGIX_blend_cmultiply */
+
+/* --------------------- GL_SGIX_calligraphic_fragment --------------------- */
+
+#ifndef GL_SGIX_calligraphic_fragment
+#define GL_SGIX_calligraphic_fragment 1
+
+#define GLEW_SGIX_calligraphic_fragment GLEW_GET_VAR(__GLEW_SGIX_calligraphic_fragment)
+
+#endif /* GL_SGIX_calligraphic_fragment */
+
+/* ---------------------------- GL_SGIX_clipmap ---------------------------- */
+
+#ifndef GL_SGIX_clipmap
+#define GL_SGIX_clipmap 1
+
+#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap)
+
+#endif /* GL_SGIX_clipmap */
+
+/* --------------------- GL_SGIX_color_matrix_accuracy --------------------- */
+
+#ifndef GL_SGIX_color_matrix_accuracy
+#define GL_SGIX_color_matrix_accuracy 1
+
+#define GL_COLOR_MATRIX_HINT 0x8317
+
+#define GLEW_SGIX_color_matrix_accuracy GLEW_GET_VAR(__GLEW_SGIX_color_matrix_accuracy)
+
+#endif /* GL_SGIX_color_matrix_accuracy */
+
+/* --------------------- GL_SGIX_color_table_index_mode -------------------- */
+
+#ifndef GL_SGIX_color_table_index_mode
+#define GL_SGIX_color_table_index_mode 1
+
+#define GLEW_SGIX_color_table_index_mode GLEW_GET_VAR(__GLEW_SGIX_color_table_index_mode)
+
+#endif /* GL_SGIX_color_table_index_mode */
+
+/* ------------------------- GL_SGIX_complex_polar ------------------------- */
+
+#ifndef GL_SGIX_complex_polar
+#define GL_SGIX_complex_polar 1
+
+#define GLEW_SGIX_complex_polar GLEW_GET_VAR(__GLEW_SGIX_complex_polar)
+
+#endif /* GL_SGIX_complex_polar */
+
+/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */
+
+#ifndef GL_SGIX_convolution_accuracy
+#define GL_SGIX_convolution_accuracy 1
+
+#define GL_CONVOLUTION_HINT_SGIX 0x8316
+
+#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy)
+
+#endif /* GL_SGIX_convolution_accuracy */
+
+/* ---------------------------- GL_SGIX_cube_map --------------------------- */
+
+#ifndef GL_SGIX_cube_map
+#define GL_SGIX_cube_map 1
+
+#define GL_ENV_MAP_SGIX 0x8340
+#define GL_CUBE_MAP_SGIX 0x8341
+#define GL_CUBE_MAP_ZP_SGIX 0x8342
+#define GL_CUBE_MAP_ZN_SGIX 0x8343
+#define GL_CUBE_MAP_XN_SGIX 0x8344
+#define GL_CUBE_MAP_XP_SGIX 0x8345
+#define GL_CUBE_MAP_YN_SGIX 0x8346
+#define GL_CUBE_MAP_YP_SGIX 0x8347
+#define GL_CUBE_MAP_BINDING_SGIX 0x8348
+
+#define GLEW_SGIX_cube_map GLEW_GET_VAR(__GLEW_SGIX_cube_map)
+
+#endif /* GL_SGIX_cube_map */
+
+/* ------------------------ GL_SGIX_cylinder_texgen ------------------------ */
+
+#ifndef GL_SGIX_cylinder_texgen
+#define GL_SGIX_cylinder_texgen 1
+
+#define GLEW_SGIX_cylinder_texgen GLEW_GET_VAR(__GLEW_SGIX_cylinder_texgen)
+
+#endif /* GL_SGIX_cylinder_texgen */
+
+/* ---------------------------- GL_SGIX_datapipe --------------------------- */
+
+#ifndef GL_SGIX_datapipe
+#define GL_SGIX_datapipe 1
+
+#define GL_GEOMETRY_BIT 0x1
+#define GL_IMAGE_BIT 0x2
+
+typedef void (GLAPIENTRY * PFNGLADDRESSSPACEPROC) (GLenum space, GLbitfield mask);
+typedef GLint (GLAPIENTRY * PFNGLDATAPIPEPROC) (GLenum space);
+
+#define glAddressSpace GLEW_GET_FUN(__glewAddressSpace)
+#define glDataPipe GLEW_GET_FUN(__glewDataPipe)
+
+#define GLEW_SGIX_datapipe GLEW_GET_VAR(__GLEW_SGIX_datapipe)
+
+#endif /* GL_SGIX_datapipe */
+
+/* --------------------------- GL_SGIX_decimation -------------------------- */
+
+#ifndef GL_SGIX_decimation
+#define GL_SGIX_decimation 1
+
+#define GLEW_SGIX_decimation GLEW_GET_VAR(__GLEW_SGIX_decimation)
+
+#endif /* GL_SGIX_decimation */
+
+/* --------------------- GL_SGIX_depth_pass_instrument --------------------- */
+
+#ifndef GL_SGIX_depth_pass_instrument
+#define GL_SGIX_depth_pass_instrument 1
+
+#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
+
+#define GLEW_SGIX_depth_pass_instrument GLEW_GET_VAR(__GLEW_SGIX_depth_pass_instrument)
+
+#endif /* GL_SGIX_depth_pass_instrument */
+
+/* ------------------------- GL_SGIX_depth_texture ------------------------- */
+
+#ifndef GL_SGIX_depth_texture
+#define GL_SGIX_depth_texture 1
+
+#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
+#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
+#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
+
+#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture)
+
+#endif /* GL_SGIX_depth_texture */
+
+/* ------------------------------ GL_SGIX_dvc ------------------------------ */
+
+#ifndef GL_SGIX_dvc
+#define GL_SGIX_dvc 1
+
+#define GLEW_SGIX_dvc GLEW_GET_VAR(__GLEW_SGIX_dvc)
+
+#endif /* GL_SGIX_dvc */
+
+/* -------------------------- GL_SGIX_flush_raster ------------------------- */
+
+#ifndef GL_SGIX_flush_raster
+#define GL_SGIX_flush_raster 1
+
+typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void);
+
+#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX)
+
+#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster)
+
+#endif /* GL_SGIX_flush_raster */
+
+/* --------------------------- GL_SGIX_fog_blend --------------------------- */
+
+#ifndef GL_SGIX_fog_blend
+#define GL_SGIX_fog_blend 1
+
+#define GL_FOG_BLEND_ALPHA_SGIX 0x81FE
+#define GL_FOG_BLEND_COLOR_SGIX 0x81FF
+
+#define GLEW_SGIX_fog_blend GLEW_GET_VAR(__GLEW_SGIX_fog_blend)
+
+#endif /* GL_SGIX_fog_blend */
+
+/* ---------------------- GL_SGIX_fog_factor_to_alpha ---------------------- */
+
+#ifndef GL_SGIX_fog_factor_to_alpha
+#define GL_SGIX_fog_factor_to_alpha 1
+
+#define GLEW_SGIX_fog_factor_to_alpha GLEW_GET_VAR(__GLEW_SGIX_fog_factor_to_alpha)
+
+#endif /* GL_SGIX_fog_factor_to_alpha */
+
+/* --------------------------- GL_SGIX_fog_layers -------------------------- */
+
+#ifndef GL_SGIX_fog_layers
+#define GL_SGIX_fog_layers 1
+
+#define GL_FOG_TYPE_SGIX 0x8323
+#define GL_UNIFORM_SGIX 0x8324
+#define GL_LAYERED_SGIX 0x8325
+#define GL_FOG_GROUND_PLANE_SGIX 0x8326
+#define GL_FOG_LAYERS_POINTS_SGIX 0x8327
+#define GL_MAX_FOG_LAYERS_POINTS_SGIX 0x8328
+
+typedef void (GLAPIENTRY * PFNGLFOGLAYERSSGIXPROC) (GLsizei n, const GLfloat* points);
+typedef void (GLAPIENTRY * PFNGLGETFOGLAYERSSGIXPROC) (GLfloat* points);
+
+#define glFogLayersSGIX GLEW_GET_FUN(__glewFogLayersSGIX)
+#define glGetFogLayersSGIX GLEW_GET_FUN(__glewGetFogLayersSGIX)
+
+#define GLEW_SGIX_fog_layers GLEW_GET_VAR(__GLEW_SGIX_fog_layers)
+
+#endif /* GL_SGIX_fog_layers */
+
+/* --------------------------- GL_SGIX_fog_offset -------------------------- */
+
+#ifndef GL_SGIX_fog_offset
+#define GL_SGIX_fog_offset 1
+
+#define GL_FOG_OFFSET_SGIX 0x8198
+#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
+
+#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset)
+
+#endif /* GL_SGIX_fog_offset */
+
+/* --------------------------- GL_SGIX_fog_patchy -------------------------- */
+
+#ifndef GL_SGIX_fog_patchy
+#define GL_SGIX_fog_patchy 1
+
+#define GLEW_SGIX_fog_patchy GLEW_GET_VAR(__GLEW_SGIX_fog_patchy)
+
+#endif /* GL_SGIX_fog_patchy */
+
+/* --------------------------- GL_SGIX_fog_scale --------------------------- */
+
+#ifndef GL_SGIX_fog_scale
+#define GL_SGIX_fog_scale 1
+
+#define GL_FOG_SCALE_SGIX 0x81FC
+#define GL_FOG_SCALE_VALUE_SGIX 0x81FD
+
+#define GLEW_SGIX_fog_scale GLEW_GET_VAR(__GLEW_SGIX_fog_scale)
+
+#endif /* GL_SGIX_fog_scale */
+
+/* -------------------------- GL_SGIX_fog_texture -------------------------- */
+
+#ifndef GL_SGIX_fog_texture
+#define GL_SGIX_fog_texture 1
+
+typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname);
+
+#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX)
+
+#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture)
+
+#endif /* GL_SGIX_fog_texture */
+
+/* -------------------- GL_SGIX_fragment_lighting_space -------------------- */
+
+#ifndef GL_SGIX_fragment_lighting_space
+#define GL_SGIX_fragment_lighting_space 1
+
+#define GL_EYE_SPACE_SGIX 0x8436
+#define GL_TANGENT_SPACE_SGIX 0x8437
+#define GL_OBJECT_SPACE_SGIX 0x8438
+#define GL_FRAGMENT_LIGHT_SPACE_SGIX 0x843D
+
+#define GLEW_SGIX_fragment_lighting_space GLEW_GET_VAR(__GLEW_SGIX_fragment_lighting_space)
+
+#endif /* GL_SGIX_fragment_lighting_space */
+
+/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */
+
+#ifndef GL_SGIX_fragment_specular_lighting
+#define GL_SGIX_fragment_specular_lighting 1
+
+typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param);
+typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat* data);
+typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint* data);
+
+#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX)
+#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX)
+#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX)
+#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX)
+#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX)
+#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX)
+#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX)
+#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX)
+#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX)
+#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX)
+#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX)
+#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX)
+#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX)
+#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX)
+#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX)
+#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX)
+#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX)
+
+#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting)
+
+#endif /* GL_SGIX_fragment_specular_lighting */
+
+/* ---------------------- GL_SGIX_fragments_instrument --------------------- */
+
+#ifndef GL_SGIX_fragments_instrument
+#define GL_SGIX_fragments_instrument 1
+
+#define GL_FRAGMENTS_INSTRUMENT_SGIX 0x8313
+#define GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX 0x8314
+#define GL_FRAGMENTS_INSTRUMENT_MAX_SGIX 0x8315
+
+#define GLEW_SGIX_fragments_instrument GLEW_GET_VAR(__GLEW_SGIX_fragments_instrument)
+
+#endif /* GL_SGIX_fragments_instrument */
+
+/* --------------------------- GL_SGIX_framezoom --------------------------- */
+
+#ifndef GL_SGIX_framezoom
+#define GL_SGIX_framezoom 1
+
+typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
+
+#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX)
+
+#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom)
+
+#endif /* GL_SGIX_framezoom */
+
+/* -------------------------- GL_SGIX_icc_texture -------------------------- */
+
+#ifndef GL_SGIX_icc_texture
+#define GL_SGIX_icc_texture 1
+
+#define GL_RGB_ICC_SGIX 0x8460
+#define GL_RGBA_ICC_SGIX 0x8461
+#define GL_ALPHA_ICC_SGIX 0x8462
+#define GL_LUMINANCE_ICC_SGIX 0x8463
+#define GL_INTENSITY_ICC_SGIX 0x8464
+#define GL_LUMINANCE_ALPHA_ICC_SGIX 0x8465
+#define GL_R5_G6_B5_ICC_SGIX 0x8466
+#define GL_R5_G6_B5_A8_ICC_SGIX 0x8467
+#define GL_ALPHA16_ICC_SGIX 0x8468
+#define GL_LUMINANCE16_ICC_SGIX 0x8469
+#define GL_INTENSITY16_ICC_SGIX 0x846A
+#define GL_LUMINANCE16_ALPHA8_ICC_SGIX 0x846B
+
+#define GLEW_SGIX_icc_texture GLEW_GET_VAR(__GLEW_SGIX_icc_texture)
+
+#endif /* GL_SGIX_icc_texture */
+
+/* ------------------------ GL_SGIX_igloo_interface ------------------------ */
+
+#ifndef GL_SGIX_igloo_interface
+#define GL_SGIX_igloo_interface 1
+
+#define GL_IGLOO_FULLSCREEN_SGIX 0x819E
+#define GL_IGLOO_VIEWPORT_OFFSET_SGIX 0x819F
+#define GL_IGLOO_SWAPTMESH_SGIX 0x81A0
+#define GL_IGLOO_COLORNORMAL_SGIX 0x81A1
+#define GL_IGLOO_IRISGL_MODE_SGIX 0x81A2
+#define GL_IGLOO_LMC_COLOR_SGIX 0x81A3
+#define GL_IGLOO_TMESHMODE_SGIX 0x81A4
+#define GL_LIGHT31 0xBEAD
+
+typedef void (GLAPIENTRY * PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, void *param);
+
+#define glIglooInterfaceSGIX GLEW_GET_FUN(__glewIglooInterfaceSGIX)
+
+#define GLEW_SGIX_igloo_interface GLEW_GET_VAR(__GLEW_SGIX_igloo_interface)
+
+#endif /* GL_SGIX_igloo_interface */
+
+/* ----------------------- GL_SGIX_image_compression ----------------------- */
+
+#ifndef GL_SGIX_image_compression
+#define GL_SGIX_image_compression 1
+
+#define GLEW_SGIX_image_compression GLEW_GET_VAR(__GLEW_SGIX_image_compression)
+
+#endif /* GL_SGIX_image_compression */
+
+/* ---------------------- GL_SGIX_impact_pixel_texture --------------------- */
+
+#ifndef GL_SGIX_impact_pixel_texture
+#define GL_SGIX_impact_pixel_texture 1
+
+#define GLEW_SGIX_impact_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_impact_pixel_texture)
+
+#endif /* GL_SGIX_impact_pixel_texture */
+
+/* ------------------------ GL_SGIX_instrument_error ----------------------- */
+
+#ifndef GL_SGIX_instrument_error
+#define GL_SGIX_instrument_error 1
+
+#define GLEW_SGIX_instrument_error GLEW_GET_VAR(__GLEW_SGIX_instrument_error)
+
+#endif /* GL_SGIX_instrument_error */
+
+/* --------------------------- GL_SGIX_interlace --------------------------- */
+
+#ifndef GL_SGIX_interlace
+#define GL_SGIX_interlace 1
+
+#define GL_INTERLACE_SGIX 0x8094
+
+#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace)
+
+#endif /* GL_SGIX_interlace */
+
+/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */
+
+#ifndef GL_SGIX_ir_instrument1
+#define GL_SGIX_ir_instrument1 1
+
+#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1)
+
+#endif /* GL_SGIX_ir_instrument1 */
+
+/* ----------------------- GL_SGIX_line_quality_hint ----------------------- */
+
+#ifndef GL_SGIX_line_quality_hint
+#define GL_SGIX_line_quality_hint 1
+
+#define GL_LINE_QUALITY_HINT_SGIX 0x835B
+
+#define GLEW_SGIX_line_quality_hint GLEW_GET_VAR(__GLEW_SGIX_line_quality_hint)
+
+#endif /* GL_SGIX_line_quality_hint */
+
+/* ------------------------- GL_SGIX_list_priority ------------------------- */
+
+#ifndef GL_SGIX_list_priority
+#define GL_SGIX_list_priority 1
+
+#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority)
+
+#endif /* GL_SGIX_list_priority */
+
+/* ----------------------------- GL_SGIX_mpeg1 ----------------------------- */
+
+#ifndef GL_SGIX_mpeg1
+#define GL_SGIX_mpeg1 1
+
+typedef void (GLAPIENTRY * PFNGLALLOCMPEGPREDICTORSSGIXPROC) (GLsizei width, GLsizei height, GLsizei n, GLuint* predictors);
+typedef void (GLAPIENTRY * PFNGLDELETEMPEGPREDICTORSSGIXPROC) (GLsizei n, GLuint* predictors);
+typedef void (GLAPIENTRY * PFNGLGENMPEGPREDICTORSSGIXPROC) (GLsizei n, GLuint* predictors);
+typedef void (GLAPIENTRY * PFNGLGETMPEGPARAMETERFVSGIXPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETMPEGPARAMETERIVSGIXPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETMPEGPREDICTORSGIXPROC) (GLenum target, GLenum format, GLenum type, void *pixels);
+typedef void (GLAPIENTRY * PFNGLGETMPEGQUANTTABLEUBVPROC) (GLenum target, GLubyte* values);
+typedef GLboolean (GLAPIENTRY * PFNGLISMPEGPREDICTORSGIXPROC) (GLuint predictor);
+typedef void (GLAPIENTRY * PFNGLMPEGPREDICTORSGIXPROC) (GLenum target, GLenum format, GLenum type, void *pixels);
+typedef void (GLAPIENTRY * PFNGLMPEGQUANTTABLEUBVPROC) (GLenum target, GLubyte* values);
+typedef void (GLAPIENTRY * PFNGLSWAPMPEGPREDICTORSSGIXPROC) (GLenum target0, GLenum target1);
+
+#define glAllocMPEGPredictorsSGIX GLEW_GET_FUN(__glewAllocMPEGPredictorsSGIX)
+#define glDeleteMPEGPredictorsSGIX GLEW_GET_FUN(__glewDeleteMPEGPredictorsSGIX)
+#define glGenMPEGPredictorsSGIX GLEW_GET_FUN(__glewGenMPEGPredictorsSGIX)
+#define glGetMPEGParameterfvSGIX GLEW_GET_FUN(__glewGetMPEGParameterfvSGIX)
+#define glGetMPEGParameterivSGIX GLEW_GET_FUN(__glewGetMPEGParameterivSGIX)
+#define glGetMPEGPredictorSGIX GLEW_GET_FUN(__glewGetMPEGPredictorSGIX)
+#define glGetMPEGQuantTableubv GLEW_GET_FUN(__glewGetMPEGQuantTableubv)
+#define glIsMPEGPredictorSGIX GLEW_GET_FUN(__glewIsMPEGPredictorSGIX)
+#define glMPEGPredictorSGIX GLEW_GET_FUN(__glewMPEGPredictorSGIX)
+#define glMPEGQuantTableubv GLEW_GET_FUN(__glewMPEGQuantTableubv)
+#define glSwapMPEGPredictorsSGIX GLEW_GET_FUN(__glewSwapMPEGPredictorsSGIX)
+
+#define GLEW_SGIX_mpeg1 GLEW_GET_VAR(__GLEW_SGIX_mpeg1)
+
+#endif /* GL_SGIX_mpeg1 */
+
+/* ----------------------------- GL_SGIX_mpeg2 ----------------------------- */
+
+#ifndef GL_SGIX_mpeg2
+#define GL_SGIX_mpeg2 1
+
+#define GLEW_SGIX_mpeg2 GLEW_GET_VAR(__GLEW_SGIX_mpeg2)
+
+#endif /* GL_SGIX_mpeg2 */
+
+/* ------------------ GL_SGIX_nonlinear_lighting_pervertex ----------------- */
+
+#ifndef GL_SGIX_nonlinear_lighting_pervertex
+#define GL_SGIX_nonlinear_lighting_pervertex 1
+
+typedef void (GLAPIENTRY * PFNGLGETNONLINLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLint* terms, GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLGETNONLINMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLint* terms, const GLfloat *data);
+typedef void (GLAPIENTRY * PFNGLNONLINLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLint terms, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLNONLINMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLint terms, const GLfloat* params);
+
+#define glGetNonlinLightfvSGIX GLEW_GET_FUN(__glewGetNonlinLightfvSGIX)
+#define glGetNonlinMaterialfvSGIX GLEW_GET_FUN(__glewGetNonlinMaterialfvSGIX)
+#define glNonlinLightfvSGIX GLEW_GET_FUN(__glewNonlinLightfvSGIX)
+#define glNonlinMaterialfvSGIX GLEW_GET_FUN(__glewNonlinMaterialfvSGIX)
+
+#define GLEW_SGIX_nonlinear_lighting_pervertex GLEW_GET_VAR(__GLEW_SGIX_nonlinear_lighting_pervertex)
+
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+
+/* --------------------------- GL_SGIX_nurbs_eval -------------------------- */
+
+#ifndef GL_SGIX_nurbs_eval
+#define GL_SGIX_nurbs_eval 1
+
+#define GL_MAP1_VERTEX_3_NURBS_SGIX 0x81CB
+#define GL_MAP1_VERTEX_4_NURBS_SGIX 0x81CC
+#define GL_MAP1_INDEX_NURBS_SGIX 0x81CD
+#define GL_MAP1_COLOR_4_NURBS_SGIX 0x81CE
+#define GL_MAP1_NORMAL_NURBS_SGIX 0x81CF
+#define GL_MAP1_TEXTURE_COORD_1_NURBS_SGIX 0x81E0
+#define GL_MAP1_TEXTURE_COORD_2_NURBS_SGIX 0x81E1
+#define GL_MAP1_TEXTURE_COORD_3_NURBS_SGIX 0x81E2
+#define GL_MAP1_TEXTURE_COORD_4_NURBS_SGIX 0x81E3
+#define GL_MAP2_VERTEX_3_NURBS_SGIX 0x81E4
+#define GL_MAP2_VERTEX_4_NURBS_SGIX 0x81E5
+#define GL_MAP2_INDEX_NURBS_SGIX 0x81E6
+#define GL_MAP2_COLOR_4_NURBS_SGIX 0x81E7
+#define GL_MAP2_NORMAL_NURBS_SGIX 0x81E8
+#define GL_MAP2_TEXTURE_COORD_1_NURBS_SGIX 0x81E9
+#define GL_MAP2_TEXTURE_COORD_2_NURBS_SGIX 0x81EA
+#define GL_MAP2_TEXTURE_COORD_3_NURBS_SGIX 0x81EB
+#define GL_MAP2_TEXTURE_COORD_4_NURBS_SGIX 0x81EC
+#define GL_NURBS_KNOT_COUNT_SGIX 0x81ED
+#define GL_NURBS_KNOT_VECTOR_SGIX 0x81EE
+
+#define GLEW_SGIX_nurbs_eval GLEW_GET_VAR(__GLEW_SGIX_nurbs_eval)
+
+#endif /* GL_SGIX_nurbs_eval */
+
+/* ---------------------- GL_SGIX_occlusion_instrument --------------------- */
+
+#ifndef GL_SGIX_occlusion_instrument
+#define GL_SGIX_occlusion_instrument 1
+
+#define GL_OCCLUSION_INSTRUMENT_SGIX 0x6060
+
+#define GLEW_SGIX_occlusion_instrument GLEW_GET_VAR(__GLEW_SGIX_occlusion_instrument)
+
+#endif /* GL_SGIX_occlusion_instrument */
+
+/* ------------------------- GL_SGIX_packed_6bytes ------------------------- */
+
+#ifndef GL_SGIX_packed_6bytes
+#define GL_SGIX_packed_6bytes 1
+
+#define GLEW_SGIX_packed_6bytes GLEW_GET_VAR(__GLEW_SGIX_packed_6bytes)
+
+#endif /* GL_SGIX_packed_6bytes */
+
+/* ------------------------- GL_SGIX_pixel_texture ------------------------- */
+
+#ifndef GL_SGIX_pixel_texture
+#define GL_SGIX_pixel_texture 1
+
+typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
+
+#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX)
+
+#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture)
+
+#endif /* GL_SGIX_pixel_texture */
+
+/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */
+
+#ifndef GL_SGIX_pixel_texture_bits
+#define GL_SGIX_pixel_texture_bits 1
+
+#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits)
+
+#endif /* GL_SGIX_pixel_texture_bits */
+
+/* ----------------------- GL_SGIX_pixel_texture_lod ----------------------- */
+
+#ifndef GL_SGIX_pixel_texture_lod
+#define GL_SGIX_pixel_texture_lod 1
+
+#define GLEW_SGIX_pixel_texture_lod GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_lod)
+
+#endif /* GL_SGIX_pixel_texture_lod */
+
+/* -------------------------- GL_SGIX_pixel_tiles -------------------------- */
+
+#ifndef GL_SGIX_pixel_tiles
+#define GL_SGIX_pixel_tiles 1
+
+#define GLEW_SGIX_pixel_tiles GLEW_GET_VAR(__GLEW_SGIX_pixel_tiles)
+
+#endif /* GL_SGIX_pixel_tiles */
+
+/* ------------------------- GL_SGIX_polynomial_ffd ------------------------ */
+
+#ifndef GL_SGIX_polynomial_ffd
+#define GL_SGIX_polynomial_ffd 1
+
+#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x1
+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x2
+
+typedef void (GLAPIENTRY * PFNGLDEFORMSGIXPROC) (GLbitfield mask);
+typedef void (GLAPIENTRY * PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
+
+#define glDeformSGIX GLEW_GET_FUN(__glewDeformSGIX)
+#define glLoadIdentityDeformationMapSGIX GLEW_GET_FUN(__glewLoadIdentityDeformationMapSGIX)
+
+#define GLEW_SGIX_polynomial_ffd GLEW_GET_VAR(__GLEW_SGIX_polynomial_ffd)
+
+#endif /* GL_SGIX_polynomial_ffd */
+
+/* --------------------------- GL_SGIX_quad_mesh --------------------------- */
+
+#ifndef GL_SGIX_quad_mesh
+#define GL_SGIX_quad_mesh 1
+
+typedef void (GLAPIENTRY * PFNGLMESHBREADTHSGIXPROC) (GLint breadth);
+typedef void (GLAPIENTRY * PFNGLMESHSTRIDESGIXPROC) (GLint stride);
+
+#define glMeshBreadthSGIX GLEW_GET_FUN(__glewMeshBreadthSGIX)
+#define glMeshStrideSGIX GLEW_GET_FUN(__glewMeshStrideSGIX)
+
+#define GLEW_SGIX_quad_mesh GLEW_GET_VAR(__GLEW_SGIX_quad_mesh)
+
+#endif /* GL_SGIX_quad_mesh */
+
+/* ------------------------ GL_SGIX_reference_plane ------------------------ */
+
+#ifndef GL_SGIX_reference_plane
+#define GL_SGIX_reference_plane 1
+
+typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation);
+
+#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX)
+
+#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane)
+
+#endif /* GL_SGIX_reference_plane */
+
+/* ---------------------------- GL_SGIX_resample --------------------------- */
+
+#ifndef GL_SGIX_resample
+#define GL_SGIX_resample 1
+
+#define GL_PACK_RESAMPLE_SGIX 0x842E
+#define GL_UNPACK_RESAMPLE_SGIX 0x842F
+#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
+#define GL_RESAMPLE_REPLICATE_SGIX 0x8433
+#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434
+
+#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample)
+
+#endif /* GL_SGIX_resample */
+
+/* ------------------------- GL_SGIX_scalebias_hint ------------------------ */
+
+#ifndef GL_SGIX_scalebias_hint
+#define GL_SGIX_scalebias_hint 1
+
+#define GL_SCALEBIAS_HINT_SGIX 0x8322
+
+#define GLEW_SGIX_scalebias_hint GLEW_GET_VAR(__GLEW_SGIX_scalebias_hint)
+
+#endif /* GL_SGIX_scalebias_hint */
+
+/* ----------------------------- GL_SGIX_shadow ---------------------------- */
+
+#ifndef GL_SGIX_shadow
+#define GL_SGIX_shadow 1
+
+#define GL_TEXTURE_COMPARE_SGIX 0x819A
+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
+#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
+#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
+
+#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow)
+
+#endif /* GL_SGIX_shadow */
+
+/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */
+
+#ifndef GL_SGIX_shadow_ambient
+#define GL_SGIX_shadow_ambient 1
+
+#define GL_SHADOW_AMBIENT_SGIX 0x80BF
+
+#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient)
+
+#endif /* GL_SGIX_shadow_ambient */
+
+/* ------------------------------ GL_SGIX_slim ----------------------------- */
+
+#ifndef GL_SGIX_slim
+#define GL_SGIX_slim 1
+
+#define GL_PACK_MAX_COMPRESSED_SIZE_SGIX 0x831B
+#define GL_SLIM8U_SGIX 0x831D
+#define GL_SLIM10U_SGIX 0x831E
+#define GL_SLIM12S_SGIX 0x831F
+
+#define GLEW_SGIX_slim GLEW_GET_VAR(__GLEW_SGIX_slim)
+
+#endif /* GL_SGIX_slim */
+
+/* ------------------------ GL_SGIX_spotlight_cutoff ----------------------- */
+
+#ifndef GL_SGIX_spotlight_cutoff
+#define GL_SGIX_spotlight_cutoff 1
+
+#define GL_SPOT_CUTOFF_DELTA_SGIX 0x8193
+
+#define GLEW_SGIX_spotlight_cutoff GLEW_GET_VAR(__GLEW_SGIX_spotlight_cutoff)
+
+#endif /* GL_SGIX_spotlight_cutoff */
+
+/* ----------------------------- GL_SGIX_sprite ---------------------------- */
+
+#ifndef GL_SGIX_sprite
+#define GL_SGIX_sprite 1
+
+typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params);
+
+#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX)
+#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX)
+#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX)
+#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX)
+
+#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite)
+
+#endif /* GL_SGIX_sprite */
+
+/* -------------------------- GL_SGIX_subdiv_patch ------------------------- */
+
+#ifndef GL_SGIX_subdiv_patch
+#define GL_SGIX_subdiv_patch 1
+
+#define GLEW_SGIX_subdiv_patch GLEW_GET_VAR(__GLEW_SGIX_subdiv_patch)
+
+#endif /* GL_SGIX_subdiv_patch */
+
+/* --------------------------- GL_SGIX_subsample --------------------------- */
+
+#ifndef GL_SGIX_subsample
+#define GL_SGIX_subsample 1
+
+#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
+#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
+#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
+#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
+
+#define GLEW_SGIX_subsample GLEW_GET_VAR(__GLEW_SGIX_subsample)
+
+#endif /* GL_SGIX_subsample */
+
+/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */
+
+#ifndef GL_SGIX_tag_sample_buffer
+#define GL_SGIX_tag_sample_buffer 1
+
+typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
+
+#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX)
+
+#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer)
+
+#endif /* GL_SGIX_tag_sample_buffer */
+
+/* ------------------------ GL_SGIX_texture_add_env ------------------------ */
+
+#ifndef GL_SGIX_texture_add_env
+#define GL_SGIX_texture_add_env 1
+
+#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env)
+
+#endif /* GL_SGIX_texture_add_env */
+
+/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */
+
+#ifndef GL_SGIX_texture_coordinate_clamp
+#define GL_SGIX_texture_coordinate_clamp 1
+
+#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
+#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
+#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
+
+#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp)
+
+#endif /* GL_SGIX_texture_coordinate_clamp */
+
+/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */
+
+#ifndef GL_SGIX_texture_lod_bias
+#define GL_SGIX_texture_lod_bias 1
+
+#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias)
+
+#endif /* GL_SGIX_texture_lod_bias */
+
+/* ------------------- GL_SGIX_texture_mipmap_anisotropic ------------------ */
+
+#ifndef GL_SGIX_texture_mipmap_anisotropic
+#define GL_SGIX_texture_mipmap_anisotropic 1
+
+#define GL_TEXTURE_MIPMAP_ANISOTROPY_SGIX 0x832E
+#define GL_MAX_MIPMAP_ANISOTROPY_SGIX 0x832F
+
+#define GLEW_SGIX_texture_mipmap_anisotropic GLEW_GET_VAR(__GLEW_SGIX_texture_mipmap_anisotropic)
+
+#endif /* GL_SGIX_texture_mipmap_anisotropic */
+
+/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */
+
+#ifndef GL_SGIX_texture_multi_buffer
+#define GL_SGIX_texture_multi_buffer 1
+
+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
+
+#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer)
+
+#endif /* GL_SGIX_texture_multi_buffer */
+
+/* ------------------------- GL_SGIX_texture_phase ------------------------- */
+
+#ifndef GL_SGIX_texture_phase
+#define GL_SGIX_texture_phase 1
+
+#define GL_PHASE_SGIX 0x832A
+
+#define GLEW_SGIX_texture_phase GLEW_GET_VAR(__GLEW_SGIX_texture_phase)
+
+#endif /* GL_SGIX_texture_phase */
+
+/* ------------------------- GL_SGIX_texture_range ------------------------- */
+
+#ifndef GL_SGIX_texture_range
+#define GL_SGIX_texture_range 1
+
+#define GL_RGB_SIGNED_SGIX 0x85E0
+#define GL_RGBA_SIGNED_SGIX 0x85E1
+#define GL_ALPHA_SIGNED_SGIX 0x85E2
+#define GL_LUMINANCE_SIGNED_SGIX 0x85E3
+#define GL_INTENSITY_SIGNED_SGIX 0x85E4
+#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5
+#define GL_RGB16_SIGNED_SGIX 0x85E6
+#define GL_RGBA16_SIGNED_SGIX 0x85E7
+#define GL_ALPHA16_SIGNED_SGIX 0x85E8
+#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9
+#define GL_INTENSITY16_SIGNED_SGIX 0x85EA
+#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB
+#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC
+#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED
+#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE
+#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF
+#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0
+#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1
+#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2
+#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3
+#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4
+#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5
+#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6
+#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7
+#define GL_MIN_LUMINANCE_SGIS 0x85F8
+#define GL_MAX_LUMINANCE_SGIS 0x85F9
+#define GL_MIN_INTENSITY_SGIS 0x85FA
+#define GL_MAX_INTENSITY_SGIS 0x85FB
+
+#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range)
+
+#endif /* GL_SGIX_texture_range */
+
+/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */
+
+#ifndef GL_SGIX_texture_scale_bias
+#define GL_SGIX_texture_scale_bias 1
+
+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
+
+#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias)
+
+#endif /* GL_SGIX_texture_scale_bias */
+
+/* ---------------------- GL_SGIX_texture_supersample ---------------------- */
+
+#ifndef GL_SGIX_texture_supersample
+#define GL_SGIX_texture_supersample 1
+
+#define GLEW_SGIX_texture_supersample GLEW_GET_VAR(__GLEW_SGIX_texture_supersample)
+
+#endif /* GL_SGIX_texture_supersample */
+
+/* --------------------------- GL_SGIX_vector_ops -------------------------- */
+
+#ifndef GL_SGIX_vector_ops
+#define GL_SGIX_vector_ops 1
+
+typedef void (GLAPIENTRY * PFNGLGETVECTOROPERATIONSGIXPROC) (GLenum operation);
+typedef void (GLAPIENTRY * PFNGLVECTOROPERATIONSGIXPROC) (GLenum operation);
+
+#define glGetVectorOperationSGIX GLEW_GET_FUN(__glewGetVectorOperationSGIX)
+#define glVectorOperationSGIX GLEW_GET_FUN(__glewVectorOperationSGIX)
+
+#define GLEW_SGIX_vector_ops GLEW_GET_VAR(__GLEW_SGIX_vector_ops)
+
+#endif /* GL_SGIX_vector_ops */
+
+/* ---------------------- GL_SGIX_vertex_array_object ---------------------- */
+
+#ifndef GL_SGIX_vertex_array_object
+#define GL_SGIX_vertex_array_object 1
+
+typedef GLboolean (GLAPIENTRY * PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC) (GLsizei n, const GLuint* arrays, GLboolean* residences);
+typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYSGIXPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSSGIXPROC) (GLsizei n, const GLuint* arrays);
+typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSSGIXPROC) (GLsizei n, GLuint* arrays);
+typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYSGIXPROC) (GLuint array);
+typedef void (GLAPIENTRY * PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC) (GLsizei n, const GLuint* arrays, const GLclampf* priorities);
+
+#define glAreVertexArraysResidentSGIX GLEW_GET_FUN(__glewAreVertexArraysResidentSGIX)
+#define glBindVertexArraySGIX GLEW_GET_FUN(__glewBindVertexArraySGIX)
+#define glDeleteVertexArraysSGIX GLEW_GET_FUN(__glewDeleteVertexArraysSGIX)
+#define glGenVertexArraysSGIX GLEW_GET_FUN(__glewGenVertexArraysSGIX)
+#define glIsVertexArraySGIX GLEW_GET_FUN(__glewIsVertexArraySGIX)
+#define glPrioritizeVertexArraysSGIX GLEW_GET_FUN(__glewPrioritizeVertexArraysSGIX)
+
+#define GLEW_SGIX_vertex_array_object GLEW_GET_VAR(__GLEW_SGIX_vertex_array_object)
+
+#endif /* GL_SGIX_vertex_array_object */
+
+/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */
+
+#ifndef GL_SGIX_vertex_preclip
+#define GL_SGIX_vertex_preclip 1
+
+#define GL_VERTEX_PRECLIP_SGIX 0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
+
+#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip)
+
+#endif /* GL_SGIX_vertex_preclip */
+
+/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */
+
+#ifndef GL_SGIX_vertex_preclip_hint
+#define GL_SGIX_vertex_preclip_hint 1
+
+#define GL_VERTEX_PRECLIP_SGIX 0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
+
+#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint)
+
+#endif /* GL_SGIX_vertex_preclip_hint */
+
+/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */
+
+#ifndef GL_SGIX_ycrcb
+#define GL_SGIX_ycrcb 1
+
+#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb)
+
+#endif /* GL_SGIX_ycrcb */
+
+/* ------------------------ GL_SGIX_ycrcb_subsample ------------------------ */
+
+#ifndef GL_SGIX_ycrcb_subsample
+#define GL_SGIX_ycrcb_subsample 1
+
+#define GLEW_SGIX_ycrcb_subsample GLEW_GET_VAR(__GLEW_SGIX_ycrcb_subsample)
+
+#endif /* GL_SGIX_ycrcb_subsample */
+
+/* ----------------------------- GL_SGIX_ycrcba ---------------------------- */
+
+#ifndef GL_SGIX_ycrcba
+#define GL_SGIX_ycrcba 1
+
+#define GL_YCRCB_SGIX 0x8318
+#define GL_YCRCBA_SGIX 0x8319
+
+#define GLEW_SGIX_ycrcba GLEW_GET_VAR(__GLEW_SGIX_ycrcba)
+
+#endif /* GL_SGIX_ycrcba */
+
+/* -------------------------- GL_SGI_color_matrix -------------------------- */
+
+#ifndef GL_SGI_color_matrix
+#define GL_SGI_color_matrix 1
+
+#define GL_COLOR_MATRIX_SGI 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
+
+#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix)
+
+#endif /* GL_SGI_color_matrix */
+
+/* --------------------------- GL_SGI_color_table -------------------------- */
+
+#ifndef GL_SGI_color_table
+#define GL_SGI_color_table 1
+
+#define GL_COLOR_TABLE_SGI 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
+#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
+#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
+#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
+#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
+#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
+
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
+typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table);
+
+#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI)
+#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI)
+#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI)
+#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI)
+#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI)
+#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI)
+#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI)
+
+#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table)
+
+#endif /* GL_SGI_color_table */
+
+/* ----------------------------- GL_SGI_complex ---------------------------- */
+
+#ifndef GL_SGI_complex
+#define GL_SGI_complex 1
+
+#define GLEW_SGI_complex GLEW_GET_VAR(__GLEW_SGI_complex)
+
+#endif /* GL_SGI_complex */
+
+/* -------------------------- GL_SGI_complex_type -------------------------- */
+
+#ifndef GL_SGI_complex_type
+#define GL_SGI_complex_type 1
+
+#define GL_COMPLEX_UNSIGNED_BYTE_SGI 0x81BD
+#define GL_COMPLEX_BYTE_SGI 0x81BE
+#define GL_COMPLEX_UNSIGNED_SHORT_SGI 0x81BF
+#define GL_COMPLEX_SHORT_SGI 0x81C0
+#define GL_COMPLEX_UNSIGNED_INT_SGI 0x81C1
+#define GL_COMPLEX_INT_SGI 0x81C2
+#define GL_COMPLEX_FLOAT_SGI 0x81C3
+
+#define GLEW_SGI_complex_type GLEW_GET_VAR(__GLEW_SGI_complex_type)
+
+#endif /* GL_SGI_complex_type */
+
+/* ------------------------------- GL_SGI_fft ------------------------------ */
+
+#ifndef GL_SGI_fft
+#define GL_SGI_fft 1
+
+#define GL_PIXEL_TRANSFORM_OPERATOR_SGI 0x81C4
+#define GL_CONVOLUTION_SGI 0x81C5
+#define GL_FFT_1D_SGI 0x81C6
+#define GL_PIXEL_TRANSFORM_SGI 0x81C7
+#define GL_MAX_FFT_WIDTH_SGI 0x81C8
+
+typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFSGIPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERISGIPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMSGIPROC) (GLenum target);
+
+#define glGetPixelTransformParameterfvSGI GLEW_GET_FUN(__glewGetPixelTransformParameterfvSGI)
+#define glGetPixelTransformParameterivSGI GLEW_GET_FUN(__glewGetPixelTransformParameterivSGI)
+#define glPixelTransformParameterfSGI GLEW_GET_FUN(__glewPixelTransformParameterfSGI)
+#define glPixelTransformParameterfvSGI GLEW_GET_FUN(__glewPixelTransformParameterfvSGI)
+#define glPixelTransformParameteriSGI GLEW_GET_FUN(__glewPixelTransformParameteriSGI)
+#define glPixelTransformParameterivSGI GLEW_GET_FUN(__glewPixelTransformParameterivSGI)
+#define glPixelTransformSGI GLEW_GET_FUN(__glewPixelTransformSGI)
+
+#define GLEW_SGI_fft GLEW_GET_VAR(__GLEW_SGI_fft)
+
+#endif /* GL_SGI_fft */
+
+/* ----------------------- GL_SGI_texture_color_table ---------------------- */
+
+#ifndef GL_SGI_texture_color_table
+#define GL_SGI_texture_color_table 1
+
+#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
+
+#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table)
+
+#endif /* GL_SGI_texture_color_table */
+
+/* ------------------------- GL_SUNX_constant_data ------------------------- */
+
+#ifndef GL_SUNX_constant_data
+#define GL_SUNX_constant_data 1
+
+#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
+#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
+
+typedef void (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void);
+
+#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX)
+
+#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data)
+
+#endif /* GL_SUNX_constant_data */
+
+/* -------------------- GL_SUN_convolution_border_modes -------------------- */
+
+#ifndef GL_SUN_convolution_border_modes
+#define GL_SUN_convolution_border_modes 1
+
+#define GL_WRAP_BORDER_SUN 0x81D4
+
+#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes)
+
+#endif /* GL_SUN_convolution_border_modes */
+
+/* -------------------------- GL_SUN_global_alpha -------------------------- */
+
+#ifndef GL_SUN_global_alpha
+#define GL_SUN_global_alpha 1
+
+#define GL_GLOBAL_ALPHA_SUN 0x81D9
+#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
+
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
+typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
+
+#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN)
+#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN)
+#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN)
+#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN)
+#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN)
+#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN)
+#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN)
+#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN)
+
+#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha)
+
+#endif /* GL_SUN_global_alpha */
+
+/* --------------------------- GL_SUN_mesh_array --------------------------- */
+
+#ifndef GL_SUN_mesh_array
+#define GL_SUN_mesh_array 1
+
+#define GL_QUAD_MESH_SUN 0x8614
+#define GL_TRIANGLE_MESH_SUN 0x8615
+
+#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array)
+
+#endif /* GL_SUN_mesh_array */
+
+/* ------------------------ GL_SUN_read_video_pixels ----------------------- */
+
+#ifndef GL_SUN_read_video_pixels
+#define GL_SUN_read_video_pixels 1
+
+typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels);
+
+#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN)
+
+#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels)
+
+#endif /* GL_SUN_read_video_pixels */
+
+/* --------------------------- GL_SUN_slice_accum -------------------------- */
+
+#ifndef GL_SUN_slice_accum
+#define GL_SUN_slice_accum 1
+
+#define GL_SLICE_ACCUM_SUN 0x85CC
+
+#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum)
+
+#endif /* GL_SUN_slice_accum */
+
+/* -------------------------- GL_SUN_triangle_list ------------------------- */
+
+#ifndef GL_SUN_triangle_list
+#define GL_SUN_triangle_list 1
+
+#define GL_RESTART_SUN 0x01
+#define GL_REPLACE_MIDDLE_SUN 0x02
+#define GL_REPLACE_OLDEST_SUN 0x03
+#define GL_TRIANGLE_LIST_SUN 0x81D7
+#define GL_REPLACEMENT_CODE_SUN 0x81D8
+#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
+#define GL_R1UI_V3F_SUN 0x85C4
+#define GL_R1UI_C4UB_V3F_SUN 0x85C5
+#define GL_R1UI_C3F_V3F_SUN 0x85C6
+#define GL_R1UI_N3F_V3F_SUN 0x85C7
+#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
+#define GL_R1UI_T2F_V3F_SUN 0x85C9
+#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
+
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void *pointer);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code);
+
+#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN)
+#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN)
+#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN)
+#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN)
+#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN)
+#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN)
+#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN)
+
+#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list)
+
+#endif /* GL_SUN_triangle_list */
+
+/* ----------------------------- GL_SUN_vertex ----------------------------- */
+
+#ifndef GL_SUN_vertex
+#define GL_SUN_vertex 1
+
+typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v);
+
+#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN)
+#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN)
+#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN)
+#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN)
+#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN)
+#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN)
+#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN)
+#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN)
+#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN)
+#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN)
+#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN)
+#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN)
+#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN)
+#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN)
+#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN)
+#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN)
+#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN)
+#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN)
+#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN)
+#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN)
+#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN)
+#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN)
+#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN)
+#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN)
+#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN)
+#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN)
+#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN)
+#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN)
+#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN)
+#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN)
+#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN)
+#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN)
+#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN)
+
+#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex)
+
+#endif /* GL_SUN_vertex */
+
+/* -------------------------- GL_VIV_shader_binary ------------------------- */
+
+#ifndef GL_VIV_shader_binary
+#define GL_VIV_shader_binary 1
+
+#define GL_SHADER_BINARY_VIV 0x8FC4
+
+#define GLEW_VIV_shader_binary GLEW_GET_VAR(__GLEW_VIV_shader_binary)
+
+#endif /* GL_VIV_shader_binary */
+
+/* -------------------------- GL_WIN_phong_shading ------------------------- */
+
+#ifndef GL_WIN_phong_shading
+#define GL_WIN_phong_shading 1
+
+#define GL_PHONG_WIN 0x80EA
+#define GL_PHONG_HINT_WIN 0x80EB
+
+#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading)
+
+#endif /* GL_WIN_phong_shading */
+
+/* ------------------------- GL_WIN_scene_markerXXX ------------------------ */
+
+#ifndef GL_WIN_scene_markerXXX
+#define GL_WIN_scene_markerXXX 1
+
+#define GLEW_WIN_scene_markerXXX GLEW_GET_VAR(__GLEW_WIN_scene_markerXXX)
+
+#endif /* GL_WIN_scene_markerXXX */
+
+/* -------------------------- GL_WIN_specular_fog -------------------------- */
+
+#ifndef GL_WIN_specular_fog
+#define GL_WIN_specular_fog 1
+
+#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
+
+#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog)
+
+#endif /* GL_WIN_specular_fog */
+
+/* ---------------------------- GL_WIN_swap_hint --------------------------- */
+
+#ifndef GL_WIN_swap_hint
+#define GL_WIN_swap_hint 1
+
+typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN)
+
+#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint)
+
+#endif /* GL_WIN_swap_hint */
+
+/* ------------------------------------------------------------------------- */
+
+
+
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D;
+
+GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture;
+GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage;
+GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd;
+GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf;
+GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd;
+GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv;
+GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage;
+
+GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate;
+GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer;
+GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd;
+GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer;
+GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData;
+GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData;
+GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers;
+GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries;
+GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery;
+GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers;
+GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv;
+GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv;
+GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv;
+GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer;
+GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery;
+GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer;
+GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer;
+
+GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader;
+GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate;
+GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader;
+GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram;
+GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader;
+GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram;
+GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader;
+GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray;
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray;
+GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform;
+GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders;
+GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv;
+GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog;
+GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource;
+GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv;
+GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram;
+GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader;
+GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram;
+GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource;
+GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate;
+GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate;
+GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate;
+GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f;
+GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv;
+GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i;
+GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv;
+GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f;
+GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv;
+GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i;
+GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv;
+GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f;
+GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv;
+GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i;
+GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv;
+GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f;
+GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv;
+GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i;
+GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv;
+GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram;
+GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer;
+
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv;
+
+GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender;
+GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback;
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation;
+GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv;
+GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski;
+GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei;
+GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei;
+GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender;
+GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback;
+GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation;
+GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv;
+GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced;
+GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex;
+GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v;
+GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v;
+
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci;
+GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading;
+
+GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSPROC __glewGetGraphicsResetStatus;
+GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEPROC __glewGetnCompressedTexImage;
+GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEPROC __glewGetnTexImage;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVPROC __glewGetnUniformdv;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC __glewMultiDrawArraysIndirectCount;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC __glewMultiDrawElementsIndirectCount;
+GLEW_FUN_EXPORT PFNGLSPECIALIZESHADERPROC __glewSpecializeShader;
+
+GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX;
+
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD;
+GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD;
+
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC __glewNamedRenderbufferStorageMultisampleAdvancedAMD;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC __glewRenderbufferStorageMultisampleAdvancedAMD;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewFramebufferSamplePositionsfvAMD;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC __glewGetFramebufferParameterfvAMD;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC __glewGetNamedFramebufferParameterfvAMD;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewNamedFramebufferSamplePositionsfvAMD;
+
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPARAMETERIAMDPROC __glewVertexAttribParameteriAMD;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD;
+
+GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD;
+GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD;
+GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD;
+
+GLEW_FUN_EXPORT PFNGLQUERYOBJECTPARAMETERUIAMDPROC __glewQueryObjectParameteruiAMD;
+
+GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD;
+GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD;
+GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD;
+GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD;
+GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD;
+GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD;
+
+GLEW_FUN_EXPORT PFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGESPARSEAMDPROC __glewTexStorageSparseAMD;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGESPARSEAMDPROC __glewTextureStorageSparseAMD;
+
+GLEW_FUN_EXPORT PFNGLSTENCILOPVALUEAMDPROC __glewStencilOpValueAMD;
+
+GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD;
+GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD;
+
+GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERANGLEPROC __glewBlitFramebufferANGLE;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC __glewRenderbufferStorageMultisampleANGLE;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDANGLEPROC __glewDrawArraysInstancedANGLE;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDANGLEPROC __glewDrawElementsInstancedANGLE;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORANGLEPROC __glewVertexAttribDivisorANGLE;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYANGLEPROC __glewBeginQueryANGLE;
+GLEW_FUN_EXPORT PFNGLDELETEQUERIESANGLEPROC __glewDeleteQueriesANGLE;
+GLEW_FUN_EXPORT PFNGLENDQUERYANGLEPROC __glewEndQueryANGLE;
+GLEW_FUN_EXPORT PFNGLGENQUERIESANGLEPROC __glewGenQueriesANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VANGLEPROC __glewGetQueryObjecti64vANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVANGLEPROC __glewGetQueryObjectivANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VANGLEPROC __glewGetQueryObjectui64vANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVANGLEPROC __glewGetQueryObjectuivANGLE;
+GLEW_FUN_EXPORT PFNGLGETQUERYIVANGLEPROC __glewGetQueryivANGLE;
+GLEW_FUN_EXPORT PFNGLISQUERYANGLEPROC __glewIsQueryANGLE;
+GLEW_FUN_EXPORT PFNGLQUERYCOUNTERANGLEPROC __glewQueryCounterANGLE;
+
+GLEW_FUN_EXPORT PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC __glewGetTranslatedShaderSourceANGLE;
+
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURELEVELSAPPLEPROC __glewCopyTextureLevelsAPPLE;
+
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE;
+GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE;
+
+GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE;
+GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE;
+GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE;
+GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE;
+GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE;
+GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE;
+GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE;
+GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE;
+
+GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE;
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __glewRenderbufferStorageMultisampleAPPLE;
+GLEW_FUN_EXPORT PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __glewResolveMultisampleFramebufferAPPLE;
+
+GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE;
+GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE;
+GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE;
+
+GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCAPPLEPROC __glewClientWaitSyncAPPLE;
+GLEW_FUN_EXPORT PFNGLDELETESYNCAPPLEPROC __glewDeleteSyncAPPLE;
+GLEW_FUN_EXPORT PFNGLFENCESYNCAPPLEPROC __glewFenceSyncAPPLE;
+GLEW_FUN_EXPORT PFNGLGETINTEGER64VAPPLEPROC __glewGetInteger64vAPPLE;
+GLEW_FUN_EXPORT PFNGLGETSYNCIVAPPLEPROC __glewGetSyncivAPPLE;
+GLEW_FUN_EXPORT PFNGLISSYNCAPPLEPROC __glewIsSyncAPPLE;
+GLEW_FUN_EXPORT PFNGLWAITSYNCAPPLEPROC __glewWaitSyncAPPLE;
+
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE;
+GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE;
+
+GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE;
+GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE;
+GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE;
+
+GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE;
+
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE;
+GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE;
+GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE;
+GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE;
+GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE;
+GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE;
+
+GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef;
+GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat;
+GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler;
+GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary;
+
+GLEW_FUN_EXPORT PFNGLMEMORYBARRIERBYREGIONPROC __glewMemoryBarrierByRegion;
+
+GLEW_FUN_EXPORT PFNGLPRIMITIVEBOUNDINGBOXARBPROC __glewPrimitiveBoundingBoxARB;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance;
+
+GLEW_FUN_EXPORT PFNGLGETIMAGEHANDLEARBPROC __glewGetImageHandleARB;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLEARBPROC __glewGetTextureHandleARB;
+GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLEARBPROC __glewGetTextureSamplerHandleARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VARBPROC __glewGetVertexAttribLui64vARB;
+GLEW_FUN_EXPORT PFNGLISIMAGEHANDLERESIDENTARBPROC __glewIsImageHandleResidentARB;
+GLEW_FUN_EXPORT PFNGLISTEXTUREHANDLERESIDENTARBPROC __glewIsTextureHandleResidentARB;
+GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC __glewMakeImageHandleNonResidentARB;
+GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLERESIDENTARBPROC __glewMakeImageHandleResidentARB;
+GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC __glewMakeTextureHandleNonResidentARB;
+GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLERESIDENTARBPROC __glewMakeTextureHandleResidentARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC __glewProgramUniformHandleui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC __glewProgramUniformHandleui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64ARBPROC __glewUniformHandleui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VARBPROC __glewUniformHandleui64vARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64ARBPROC __glewVertexAttribL1ui64ARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VARBPROC __glewVertexAttribL1ui64vARB;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex;
+
+GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEPROC __glewBufferStorage;
+
+GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB;
+
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERDATAPROC __glewClearBufferData;
+GLEW_FUN_EXPORT PFNGLCLEARBUFFERSUBDATAPROC __glewClearBufferSubData;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERDATAEXTPROC __glewClearNamedBufferDataEXT;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC __glewClearNamedBufferSubDataEXT;
+
+GLEW_FUN_EXPORT PFNGLCLEARTEXIMAGEPROC __glewClearTexImage;
+GLEW_FUN_EXPORT PFNGLCLEARTEXSUBIMAGEPROC __glewClearTexSubImage;
+
+GLEW_FUN_EXPORT PFNGLCLIPCONTROLPROC __glewClipControl;
+
+GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB;
+
+GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEPROC __glewDispatchCompute;
+GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEINDIRECTPROC __glewDispatchComputeIndirect;
+
+GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC __glewDispatchComputeGroupSizeARB;
+
+GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData;
+
+GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATAPROC __glewCopyImageSubData;
+
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB;
+GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB;
+
+GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPROC __glewBindTextureUnit;
+GLEW_FUN_EXPORT PFNGLBLITNAMEDFRAMEBUFFERPROC __glewBlitNamedFramebuffer;
+GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC __glewCheckNamedFramebufferStatus;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERDATAPROC __glewClearNamedBufferData;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERSUBDATAPROC __glewClearNamedBufferSubData;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERFIPROC __glewClearNamedFramebufferfi;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERFVPROC __glewClearNamedFramebufferfv;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERIVPROC __glewClearNamedFramebufferiv;
+GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC __glewClearNamedFramebufferuiv;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC __glewCompressedTextureSubImage1D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC __glewCompressedTextureSubImage2D;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC __glewCompressedTextureSubImage3D;
+GLEW_FUN_EXPORT PFNGLCOPYNAMEDBUFFERSUBDATAPROC __glewCopyNamedBufferSubData;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DPROC __glewCopyTextureSubImage1D;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DPROC __glewCopyTextureSubImage2D;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DPROC __glewCopyTextureSubImage3D;
+GLEW_FUN_EXPORT PFNGLCREATEBUFFERSPROC __glewCreateBuffers;
+GLEW_FUN_EXPORT PFNGLCREATEFRAMEBUFFERSPROC __glewCreateFramebuffers;
+GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPIPELINESPROC __glewCreateProgramPipelines;
+GLEW_FUN_EXPORT PFNGLCREATEQUERIESPROC __glewCreateQueries;
+GLEW_FUN_EXPORT PFNGLCREATERENDERBUFFERSPROC __glewCreateRenderbuffers;
+GLEW_FUN_EXPORT PFNGLCREATESAMPLERSPROC __glewCreateSamplers;
+GLEW_FUN_EXPORT PFNGLCREATETEXTURESPROC __glewCreateTextures;
+GLEW_FUN_EXPORT PFNGLCREATETRANSFORMFEEDBACKSPROC __glewCreateTransformFeedbacks;
+GLEW_FUN_EXPORT PFNGLCREATEVERTEXARRAYSPROC __glewCreateVertexArrays;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBPROC __glewDisableVertexArrayAttrib;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBPROC __glewEnableVertexArrayAttrib;
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC __glewFlushMappedNamedBufferRange;
+GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPPROC __glewGenerateTextureMipmap;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC __glewGetCompressedTextureImage;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERI64VPROC __glewGetNamedBufferParameteri64v;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVPROC __glewGetNamedBufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVPROC __glewGetNamedBufferPointerv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAPROC __glewGetNamedBufferSubData;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetNamedFramebufferAttachmentParameteriv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC __glewGetNamedFramebufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC __glewGetNamedRenderbufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTI64VPROC __glewGetQueryBufferObjecti64v;
+GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTIVPROC __glewGetQueryBufferObjectiv;
+GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTUI64VPROC __glewGetQueryBufferObjectui64v;
+GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTUIVPROC __glewGetQueryBufferObjectuiv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEPROC __glewGetTextureImage;
+GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVPROC __glewGetTextureLevelParameterfv;
+GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVPROC __glewGetTextureLevelParameteriv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVPROC __glewGetTextureParameterIiv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVPROC __glewGetTextureParameterIuiv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVPROC __glewGetTextureParameterfv;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVPROC __glewGetTextureParameteriv;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKI64_VPROC __glewGetTransformFeedbacki64_v;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKI_VPROC __glewGetTransformFeedbacki_v;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKIVPROC __glewGetTransformFeedbackiv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINDEXED64IVPROC __glewGetVertexArrayIndexed64iv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINDEXEDIVPROC __glewGetVertexArrayIndexediv;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYIVPROC __glewGetVertexArrayiv;
+GLEW_FUN_EXPORT PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC __glewInvalidateNamedFramebufferData;
+GLEW_FUN_EXPORT PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC __glewInvalidateNamedFramebufferSubData;
+GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERPROC __glewMapNamedBuffer;
+GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEPROC __glewMapNamedBufferRange;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAPROC __glewNamedBufferData;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEPROC __glewNamedBufferStorage;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAPROC __glewNamedBufferSubData;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC __glewNamedFramebufferDrawBuffer;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC __glewNamedFramebufferDrawBuffers;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC __glewNamedFramebufferParameteri;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC __glewNamedFramebufferReadBuffer;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC __glewNamedFramebufferRenderbuffer;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREPROC __glewNamedFramebufferTexture;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC __glewNamedFramebufferTextureLayer;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEPROC __glewNamedRenderbufferStorage;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewNamedRenderbufferStorageMultisample;
+GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERPROC __glewTextureBuffer;
+GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERRANGEPROC __glewTextureBufferRange;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVPROC __glewTextureParameterIiv;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVPROC __glewTextureParameterIuiv;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFPROC __glewTextureParameterf;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVPROC __glewTextureParameterfv;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIPROC __glewTextureParameteri;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVPROC __glewTextureParameteriv;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DPROC __glewTextureStorage1D;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DPROC __glewTextureStorage2D;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC __glewTextureStorage2DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DPROC __glewTextureStorage3D;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC __glewTextureStorage3DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DPROC __glewTextureSubImage1D;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DPROC __glewTextureSubImage2D;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DPROC __glewTextureSubImage3D;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC __glewTransformFeedbackBufferBase;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC __glewTransformFeedbackBufferRange;
+GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFERPROC __glewUnmapNamedBuffer;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBBINDINGPROC __glewVertexArrayAttribBinding;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBFORMATPROC __glewVertexArrayAttribFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBIFORMATPROC __glewVertexArrayAttribIFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBLFORMATPROC __glewVertexArrayAttribLFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYBINDINGDIVISORPROC __glewVertexArrayBindingDivisor;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYELEMENTBUFFERPROC __glewVertexArrayElementBuffer;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBUFFERPROC __glewVertexArrayVertexBuffer;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBUFFERSPROC __glewVertexArrayVertexBuffers;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB;
+
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERPARAMETERIPROC __glewFramebufferParameteri;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVPROC __glewGetFramebufferParameteriv;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC __glewGetNamedFramebufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC __glewNamedFramebufferParameteriEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer;
+GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer;
+GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer;
+GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus;
+GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers;
+GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer;
+GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers;
+GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers;
+GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv;
+GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv;
+GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer;
+GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB;
+
+GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary;
+GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri;
+
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC __glewGetCompressedTextureSubImage;
+GLEW_FUN_EXPORT PFNGLGETTEXTURESUBIMAGEPROC __glewGetTextureSubImage;
+
+GLEW_FUN_EXPORT PFNGLSPECIALIZESHADERARBPROC __glewSpecializeShaderARB;
+
+GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv;
+GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d;
+GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv;
+GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d;
+GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv;
+GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d;
+GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv;
+GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d;
+GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv;
+
+GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VARBPROC __glewGetUniformi64vARB;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VARBPROC __glewGetUniformui64vARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMI64VARBPROC __glewGetnUniformi64vARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMUI64VARBPROC __glewGetnUniformui64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64ARBPROC __glewProgramUniform1i64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VARBPROC __glewProgramUniform1i64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64ARBPROC __glewProgramUniform1ui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VARBPROC __glewProgramUniform1ui64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64ARBPROC __glewProgramUniform2i64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VARBPROC __glewProgramUniform2i64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64ARBPROC __glewProgramUniform2ui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VARBPROC __glewProgramUniform2ui64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64ARBPROC __glewProgramUniform3i64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VARBPROC __glewProgramUniform3i64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64ARBPROC __glewProgramUniform3ui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VARBPROC __glewProgramUniform3ui64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64ARBPROC __glewProgramUniform4i64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VARBPROC __glewProgramUniform4i64vARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64ARBPROC __glewProgramUniform4ui64ARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VARBPROC __glewProgramUniform4ui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64ARBPROC __glewUniform1i64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64VARBPROC __glewUniform1i64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64ARBPROC __glewUniform1ui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VARBPROC __glewUniform1ui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64ARBPROC __glewUniform2i64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64VARBPROC __glewUniform2i64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64ARBPROC __glewUniform2ui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VARBPROC __glewUniform2ui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64ARBPROC __glewUniform3i64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64VARBPROC __glewUniform3i64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64ARBPROC __glewUniform3ui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VARBPROC __glewUniform3ui64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64ARBPROC __glewUniform4i64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64VARBPROC __glewUniform4i64vARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64ARBPROC __glewUniform4ui64ARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VARBPROC __glewUniform4ui64vARB;
+
+GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable;
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable;
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv;
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv;
+GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable;
+GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable;
+GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D;
+GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv;
+GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter;
+GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram;
+GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax;
+GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram;
+GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax;
+GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __glewMultiDrawArraysIndirectCountARB;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __glewMultiDrawElementsIndirectCountARB;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB;
+
+GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ;
+
+GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATI64VPROC __glewGetInternalformati64v;
+
+GLEW_FUN_EXPORT PFNGLINVALIDATEBUFFERDATAPROC __glewInvalidateBufferData;
+GLEW_FUN_EXPORT PFNGLINVALIDATEBUFFERSUBDATAPROC __glewInvalidateBufferSubData;
+GLEW_FUN_EXPORT PFNGLINVALIDATEFRAMEBUFFERPROC __glewInvalidateFramebuffer;
+GLEW_FUN_EXPORT PFNGLINVALIDATESUBFRAMEBUFFERPROC __glewInvalidateSubFramebuffer;
+GLEW_FUN_EXPORT PFNGLINVALIDATETEXIMAGEPROC __glewInvalidateTexImage;
+GLEW_FUN_EXPORT PFNGLINVALIDATETEXSUBIMAGEPROC __glewInvalidateTexSubImage;
+
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange;
+GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange;
+
+GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB;
+
+GLEW_FUN_EXPORT PFNGLBINDBUFFERSBASEPROC __glewBindBuffersBase;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERSRANGEPROC __glewBindBuffersRange;
+GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTURESPROC __glewBindImageTextures;
+GLEW_FUN_EXPORT PFNGLBINDSAMPLERSPROC __glewBindSamplers;
+GLEW_FUN_EXPORT PFNGLBINDTEXTURESPROC __glewBindTextures;
+GLEW_FUN_EXPORT PFNGLBINDVERTEXBUFFERSPROC __glewBindVertexBuffers;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTPROC __glewMultiDrawArraysIndirect;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTPROC __glewMultiDrawElementsIndirect;
+
+GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB;
+
+GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB;
+GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB;
+GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB;
+GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB;
+GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB;
+GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB;
+GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB;
+
+GLEW_FUN_EXPORT PFNGLMAXSHADERCOMPILERTHREADSARBPROC __glewMaxShaderCompilerThreadsARB;
+
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB;
+
+GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETCLAMPPROC __glewPolygonOffsetClamp;
+
+GLEW_FUN_EXPORT PFNGLGETPROGRAMINTERFACEIVPROC __glewGetProgramInterfaceiv;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEINDEXPROC __glewGetProgramResourceIndex;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONPROC __glewGetProgramResourceLocation;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC __glewGetProgramResourceLocationIndex;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCENAMEPROC __glewGetProgramResourceName;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEIVPROC __glewGetProgramResourceiv;
+
+GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex;
+
+GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB;
+GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB;
+GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB;
+GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB;
+GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB;
+GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB;
+GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB;
+GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB;
+GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB;
+GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB;
+GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB;
+GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB;
+GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB;
+GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB;
+GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB;
+GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB;
+
+GLEW_FUN_EXPORT PFNGLEVALUATEDEPTHVALUESARBPROC __glewEvaluateDepthValuesARB;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewFramebufferSampleLocationsfvARB;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewNamedFramebufferSampleLocationsfvARB;
+
+GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB;
+
+GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler;
+GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers;
+GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv;
+GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv;
+
+GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram;
+GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline;
+GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv;
+GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines;
+GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv;
+GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv;
+GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages;
+GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline;
+
+GLEW_FUN_EXPORT PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv;
+
+GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture;
+GLEW_FUN_EXPORT PFNGLMEMORYBARRIERPROC __glewMemoryBarrier;
+
+GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB;
+GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB;
+GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB;
+GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB;
+GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB;
+GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB;
+GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB;
+GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB;
+GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB;
+GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB;
+GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB;
+GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB;
+GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB;
+GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB;
+GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB;
+GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB;
+GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB;
+
+GLEW_FUN_EXPORT PFNGLSHADERSTORAGEBLOCKBINDINGPROC __glewShaderStorageBlockBinding;
+
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName;
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName;
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv;
+GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex;
+GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv;
+GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv;
+
+GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB;
+GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB;
+GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB;
+GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB;
+GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB;
+GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB;
+
+GLEW_FUN_EXPORT PFNGLBUFFERPAGECOMMITMENTARBPROC __glewBufferPageCommitmentARB;
+
+GLEW_FUN_EXPORT PFNGLTEXPAGECOMMITMENTARBPROC __glewTexPageCommitmentARB;
+
+GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync;
+GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync;
+GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync;
+GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v;
+GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv;
+GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync;
+GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync;
+
+GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv;
+GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERPROC __glewTextureBarrier;
+
+GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB;
+
+GLEW_FUN_EXPORT PFNGLTEXBUFFERRANGEPROC __glewTexBufferRange;
+GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERRANGEEXTPROC __glewTextureBufferRangeEXT;
+
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB;
+
+GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv;
+GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE1DPROC __glewTexStorage1D;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DPROC __glewTexStorage2D;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DPROC __glewTexStorage3D;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DMULTISAMPLEPROC __glewTexStorage2DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DMULTISAMPLEPROC __glewTexStorage3DMultisample;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC __glewTextureStorage2DMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC __glewTextureStorage3DMultisampleEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREVIEWPROC __glewTextureView;
+
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v;
+GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter;
+
+GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback;
+GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback;
+GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks;
+GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback;
+GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback;
+GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream;
+GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed;
+GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv;
+
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced;
+
+GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB;
+GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB;
+GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB;
+GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB;
+
+GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName;
+GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv;
+GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices;
+GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding;
+
+GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays;
+GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays;
+GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray;
+
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer;
+
+GLEW_FUN_EXPORT PFNGLBINDVERTEXBUFFERPROC __glewBindVertexBuffer;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC __glewVertexArrayBindVertexBufferEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC __glewVertexArrayVertexAttribBindingEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC __glewVertexArrayVertexAttribFormatEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC __glewVertexArrayVertexAttribIFormatEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC __glewVertexArrayVertexAttribLFormatEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC __glewVertexArrayVertexBindingDivisorEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBBINDINGPROC __glewVertexAttribBinding;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATPROC __glewVertexAttribFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATPROC __glewVertexAttribIFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATPROC __glewVertexAttribLFormat;
+GLEW_FUN_EXPORT PFNGLVERTEXBINDINGDIVISORPROC __glewVertexBindingDivisor;
+
+GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB;
+GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB;
+
+GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB;
+GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB;
+GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB;
+GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB;
+GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB;
+GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB;
+GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB;
+GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB;
+GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB;
+GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB;
+
+GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB;
+GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB;
+GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB;
+GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB;
+GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB;
+
+GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB;
+GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB;
+GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB;
+
+GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui;
+GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv;
+GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui;
+GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv;
+GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui;
+GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv;
+
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed;
+GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v;
+GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v;
+GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv;
+GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed;
+GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv;
+GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv;
+GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf;
+GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv;
+
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI;
+
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI;
+GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI;
+
+GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI;
+GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI;
+GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI;
+GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI;
+
+GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI;
+GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI;
+GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI;
+GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI;
+GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI;
+GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI;
+GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI;
+GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI;
+GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI;
+GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI;
+GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI;
+GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI;
+GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI;
+GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI;
+
+GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI;
+
+GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI;
+GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI;
+
+GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI;
+GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI;
+
+GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI;
+GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI;
+GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI;
+GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI;
+GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI;
+GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI;
+GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI;
+GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI;
+GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI;
+
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI;
+
+GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI;
+GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI;
+GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI;
+GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1DATIPROC __glewVertexStream1dATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1DVATIPROC __glewVertexStream1dvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1FATIPROC __glewVertexStream1fATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1FVATIPROC __glewVertexStream1fvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1IATIPROC __glewVertexStream1iATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1IVATIPROC __glewVertexStream1ivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1SATIPROC __glewVertexStream1sATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1SVATIPROC __glewVertexStream1svATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI;
+GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI;
+
+GLEW_FUN_EXPORT PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC __glewEGLImageTargetTexStorageEXT;
+GLEW_FUN_EXPORT PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC __glewEGLImageTargetTextureStorageEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __glewDrawArraysInstancedBaseInstanceEXT;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseInstanceEXT;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseVertexBaseInstanceEXT;
+
+GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __glewBindFragDataLocationIndexedEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXEXTPROC __glewGetFragDataIndexEXT;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __glewGetProgramResourceLocationIndexEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT;
+
+GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEEXTPROC __glewBufferStorageEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEEXTPROC __glewNamedBufferStorageEXT;
+
+GLEW_FUN_EXPORT PFNGLCLEARTEXIMAGEEXTPROC __glewClearTexImageEXT;
+GLEW_FUN_EXPORT PFNGLCLEARTEXSUBIMAGEEXTPROC __glewClearTexSubImageEXT;
+
+GLEW_FUN_EXPORT PFNGLCLIPCONTROLEXTPROC __glewClipControlEXT;
+
+GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT;
+GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT;
+
+GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT;
+GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT;
+
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT;
+GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT;
+GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT;
+GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT;
+
+GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT;
+GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATAEXTPROC __glewCopyImageSubDataEXT;
+
+GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT;
+
+GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT;
+GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT;
+
+GLEW_FUN_EXPORT PFNGLGETOBJECTLABELEXTPROC __glewGetObjectLabelEXT;
+GLEW_FUN_EXPORT PFNGLLABELOBJECTEXTPROC __glewLabelObjectEXT;
+
+GLEW_FUN_EXPORT PFNGLINSERTEVENTMARKEREXTPROC __glewInsertEventMarkerEXT;
+GLEW_FUN_EXPORT PFNGLPOPGROUPMARKEREXTPROC __glewPopGroupMarkerEXT;
+GLEW_FUN_EXPORT PFNGLPUSHGROUPMARKEREXTPROC __glewPushGroupMarkerEXT;
+
+GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT;
+GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT;
+GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT;
+GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT;
+GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT;
+GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT;
+GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT;
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT;
+GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT;
+GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT;
+GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT;
+GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT;
+GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT;
+GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT;
+GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT;
+GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT;
+GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT;
+GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT;
+GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC __glewVertexArrayVertexAttribDivisorEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT;
+
+GLEW_FUN_EXPORT PFNGLDISCARDFRAMEBUFFEREXTPROC __glewDiscardFramebufferEXT;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYEXTPROC __glewBeginQueryEXT;
+GLEW_FUN_EXPORT PFNGLDELETEQUERIESEXTPROC __glewDeleteQueriesEXT;
+GLEW_FUN_EXPORT PFNGLENDQUERYEXTPROC __glewEndQueryEXT;
+GLEW_FUN_EXPORT PFNGLGENQUERIESEXTPROC __glewGenQueriesEXT;
+GLEW_FUN_EXPORT PFNGLGETINTEGER64VEXTPROC __glewGetInteger64vEXT;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVEXTPROC __glewGetQueryObjectivEXT;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVEXTPROC __glewGetQueryObjectuivEXT;
+GLEW_FUN_EXPORT PFNGLGETQUERYIVEXTPROC __glewGetQueryivEXT;
+GLEW_FUN_EXPORT PFNGLISQUERYEXTPROC __glewIsQueryEXT;
+GLEW_FUN_EXPORT PFNGLQUERYCOUNTEREXTPROC __glewQueryCounterEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSEXTPROC __glewDrawBuffersEXT;
+
+GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT;
+GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT;
+GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT;
+GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIEXTPROC __glewBlendEquationSeparateiEXT;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIEXTPROC __glewBlendEquationiEXT;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIEXTPROC __glewBlendFuncSeparateiEXT;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIEXTPROC __glewBlendFunciEXT;
+GLEW_FUN_EXPORT PFNGLCOLORMASKIEXTPROC __glewColorMaskiEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEIEXTPROC __glewDisableiEXT;
+GLEW_FUN_EXPORT PFNGLENABLEIEXTPROC __glewEnableiEXT;
+GLEW_FUN_EXPORT PFNGLISENABLEDIEXTPROC __glewIsEnablediEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXEXTPROC __glewDrawElementsBaseVertexEXT;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __glewDrawElementsInstancedBaseVertexEXT;
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __glewDrawRangeElementsBaseVertexEXT;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __glewMultiDrawElementsBaseVertexEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKEXTPROC __glewDrawTransformFeedbackEXT;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC __glewDrawTransformFeedbackInstancedEXT;
+
+GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEEXTERNALEXTPROC __glewBufferStorageExternalEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC __glewNamedBufferStorageExternalEXT;
+
+GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT;
+GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT;
+GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT;
+GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT;
+
+GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT;
+GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT;
+GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT;
+GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT;
+GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT;
+GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT;
+GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT;
+GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT;
+GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT;
+
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT;
+GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT;
+GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT;
+GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT;
+GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT;
+
+GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT;
+
+GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT;
+
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISOREXTPROC __glewVertexAttribDivisorEXT;
+
+GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT;
+
+GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC __glewFlushMappedBufferRangeEXT;
+GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEEXTPROC __glewMapBufferRangeEXT;
+
+GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEMEMEXTPROC __glewBufferStorageMemEXT;
+GLEW_FUN_EXPORT PFNGLCREATEMEMORYOBJECTSEXTPROC __glewCreateMemoryObjectsEXT;
+GLEW_FUN_EXPORT PFNGLDELETEMEMORYOBJECTSEXTPROC __glewDeleteMemoryObjectsEXT;
+GLEW_FUN_EXPORT PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC __glewGetMemoryObjectParameterivEXT;
+GLEW_FUN_EXPORT PFNGLGETUNSIGNEDBYTEI_VEXTPROC __glewGetUnsignedBytei_vEXT;
+GLEW_FUN_EXPORT PFNGLGETUNSIGNEDBYTEVEXTPROC __glewGetUnsignedBytevEXT;
+GLEW_FUN_EXPORT PFNGLISMEMORYOBJECTEXTPROC __glewIsMemoryObjectEXT;
+GLEW_FUN_EXPORT PFNGLMEMORYOBJECTPARAMETERIVEXTPROC __glewMemoryObjectParameterivEXT;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC __glewNamedBufferStorageMemEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM1DEXTPROC __glewTexStorageMem1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM2DEXTPROC __glewTexStorageMem2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC __glewTexStorageMem2DMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM3DEXTPROC __glewTexStorageMem3DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC __glewTexStorageMem3DMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM1DEXTPROC __glewTextureStorageMem1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM2DEXTPROC __glewTextureStorageMem2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC __glewTextureStorageMem2DMultisampleEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM3DEXTPROC __glewTextureStorageMem3DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC __glewTextureStorageMem3DMultisampleEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTMEMORYFDEXTPROC __glewImportMemoryFdEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC __glewImportMemoryWin32HandleEXT;
+GLEW_FUN_EXPORT PFNGLIMPORTMEMORYWIN32NAMEEXTPROC __glewImportMemoryWin32NameEXT;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC __glewMultiDrawArraysIndirectEXT;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC __glewMultiDrawElementsIndirectEXT;
+
+GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT;
+GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __glewFramebufferTexture2DMultisampleEXT;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSINDEXEDEXTPROC __glewDrawBuffersIndexedEXT;
+GLEW_FUN_EXPORT PFNGLGETINTEGERI_VEXTPROC __glewGetIntegeri_vEXT;
+GLEW_FUN_EXPORT PFNGLREADBUFFERINDEXEDEXTPROC __glewReadBufferIndexedEXT;
+
+GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT;
+
+GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT;
+
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT;
+
+GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT;
+
+GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETCLAMPEXTPROC __glewPolygonOffsetClampEXT;
+
+GLEW_FUN_EXPORT PFNGLPRIMITIVEBOUNDINGBOXEXTPROC __glewPrimitiveBoundingBoxEXT;
+
+GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT;
+
+GLEW_FUN_EXPORT PFNGLCOVERAGEMODULATIONNVPROC __glewCoverageModulationNV;
+GLEW_FUN_EXPORT PFNGLCOVERAGEMODULATIONTABLENVPROC __glewCoverageModulationTableNV;
+GLEW_FUN_EXPORT PFNGLGETCOVERAGEMODULATIONTABLENVPROC __glewGetCoverageModulationTableNV;
+GLEW_FUN_EXPORT PFNGLRASTERSAMPLESEXTPROC __glewRasterSamplesEXT;
+
+GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSEXTPROC __glewGetGraphicsResetStatusEXT;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVEXTPROC __glewGetnUniformfvEXT;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVEXTPROC __glewGetnUniformivEXT;
+GLEW_FUN_EXPORT PFNGLREADNPIXELSEXTPROC __glewReadnPixelsEXT;
+
+GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT;
+GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT;
+
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLDELETESEMAPHORESEXTPROC __glewDeleteSemaphoresEXT;
+GLEW_FUN_EXPORT PFNGLGENSEMAPHORESEXTPROC __glewGenSemaphoresEXT;
+GLEW_FUN_EXPORT PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC __glewGetSemaphoreParameterui64vEXT;
+GLEW_FUN_EXPORT PFNGLISSEMAPHOREEXTPROC __glewIsSemaphoreEXT;
+GLEW_FUN_EXPORT PFNGLSEMAPHOREPARAMETERUI64VEXTPROC __glewSemaphoreParameterui64vEXT;
+GLEW_FUN_EXPORT PFNGLSIGNALSEMAPHOREEXTPROC __glewSignalSemaphoreEXT;
+GLEW_FUN_EXPORT PFNGLWAITSEMAPHOREEXTPROC __glewWaitSemaphoreEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTSEMAPHOREFDEXTPROC __glewImportSemaphoreFdEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC __glewImportSemaphoreWin32HandleEXT;
+GLEW_FUN_EXPORT PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC __glewImportSemaphoreWin32NameEXT;
+
+GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT;
+GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT;
+GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC __glewFramebufferFetchBarrierEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT;
+GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT;
+
+GLEW_FUN_EXPORT PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC __glewClearPixelLocalStorageuiEXT;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewFramebufferPixelLocalStorageSizeEXT;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewGetFramebufferPixelLocalStorageSizeEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXPAGECOMMITMENTEXTPROC __glewTexPageCommitmentEXT;
+GLEW_FUN_EXPORT PFNGLTEXTUREPAGECOMMITMENTEXTPROC __glewTexturePageCommitmentEXT;
+
+GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT;
+
+GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIEXTPROC __glewPatchParameteriEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT;
+
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVEXTPROC __glewGetSamplerParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVEXTPROC __glewGetSamplerParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVEXTPROC __glewSamplerParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVEXTPROC __glewSamplerParameterIuivEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT;
+
+GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT;
+GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT;
+
+GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT;
+GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT;
+GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT;
+GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT;
+GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT;
+GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE1DEXTPROC __glewTexStorage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DEXTPROC __glewTexStorage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DEXTPROC __glewTexStorage3DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEATTRIBS2DEXTPROC __glewTexStorageAttribs2DEXT;
+GLEW_FUN_EXPORT PFNGLTEXSTORAGEATTRIBS3DEXTPROC __glewTexStorageAttribs3DEXT;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREVIEWEXTPROC __glewTextureViewEXT;
+
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT;
+
+GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT;
+GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT;
+GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT;
+
+GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT;
+GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT;
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT;
+GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT;
+GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT;
+GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT;
+GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLBINDARRAYSETEXTPROC __glewBindArraySetEXT;
+GLEW_FUN_EXPORT PFNGLCREATEARRAYSETEXTPROC __glewCreateArraySetExt;
+GLEW_FUN_EXPORT PFNGLDELETEARRAYSETSEXTPROC __glewDeleteArraySetsEXT;
+
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT;
+
+GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT;
+GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT;
+GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT;
+GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT;
+GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT;
+GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT;
+GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT;
+GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT;
+GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT;
+GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT;
+GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT;
+GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT;
+GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT;
+GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT;
+GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT;
+GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT;
+GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT;
+GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT;
+GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT;
+GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT;
+GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT;
+GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT;
+GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT;
+GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT;
+GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT;
+GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT;
+GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT;
+GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT;
+GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT;
+
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT;
+
+GLEW_FUN_EXPORT PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC __glewAcquireKeyedMutexWin32EXT;
+GLEW_FUN_EXPORT PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC __glewReleaseKeyedMutexWin32EXT;
+
+GLEW_FUN_EXPORT PFNGLWINDOWRECTANGLESEXTPROC __glewWindowRectanglesEXT;
+
+GLEW_FUN_EXPORT PFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT;
+
+GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY;
+
+GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY;
+
+GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP;
+GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP;
+GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP;
+GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP;
+GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP;
+GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP;
+
+GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM;
+GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM;
+
+GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM;
+GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM;
+GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM;
+GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM;
+GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM;
+GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM;
+GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM;
+
+GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLEIMGPROC __glewGetTextureHandleIMG;
+GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLEIMGPROC __glewGetTextureSamplerHandleIMG;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC __glewProgramUniformHandleui64IMG;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC __glewProgramUniformHandleui64vIMG;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64IMGPROC __glewUniformHandleui64IMG;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VIMGPROC __glewUniformHandleui64vIMG;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC __glewFramebufferTexture2DDownsampleIMG;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC __glewFramebufferTextureLayerDownsampleIMG;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC __glewFramebufferTexture2DMultisampleIMG;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC __glewRenderbufferStorageMultisampleIMG;
+
+GLEW_FUN_EXPORT PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC __glewApplyFramebufferAttachmentCMAAINTEL;
+
+GLEW_FUN_EXPORT PFNGLMAPTEXTURE2DINTELPROC __glewMapTexture2DINTEL;
+GLEW_FUN_EXPORT PFNGLSYNCTEXTUREINTELPROC __glewSyncTextureINTEL;
+GLEW_FUN_EXPORT PFNGLUNMAPTEXTURE2DINTELPROC __glewUnmapTexture2DINTEL;
+
+GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL;
+GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL;
+GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL;
+GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL;
+
+GLEW_FUN_EXPORT PFNGLBEGINPERFQUERYINTELPROC __glewBeginPerfQueryINTEL;
+GLEW_FUN_EXPORT PFNGLCREATEPERFQUERYINTELPROC __glewCreatePerfQueryINTEL;
+GLEW_FUN_EXPORT PFNGLDELETEPERFQUERYINTELPROC __glewDeletePerfQueryINTEL;
+GLEW_FUN_EXPORT PFNGLENDPERFQUERYINTELPROC __glewEndPerfQueryINTEL;
+GLEW_FUN_EXPORT PFNGLGETFIRSTPERFQUERYIDINTELPROC __glewGetFirstPerfQueryIdINTEL;
+GLEW_FUN_EXPORT PFNGLGETNEXTPERFQUERYIDINTELPROC __glewGetNextPerfQueryIdINTEL;
+GLEW_FUN_EXPORT PFNGLGETPERFCOUNTERINFOINTELPROC __glewGetPerfCounterInfoINTEL;
+GLEW_FUN_EXPORT PFNGLGETPERFQUERYDATAINTELPROC __glewGetPerfQueryDataINTEL;
+GLEW_FUN_EXPORT PFNGLGETPERFQUERYIDBYNAMEINTELPROC __glewGetPerfQueryIdByNameINTEL;
+GLEW_FUN_EXPORT PFNGLGETPERFQUERYINFOINTELPROC __glewGetPerfQueryInfoINTEL;
+
+GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL;
+GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL;
+
+GLEW_FUN_EXPORT PFNGLBLENDBARRIERKHRPROC __glewBlendBarrierKHR;
+
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKPROC __glewDebugMessageCallback;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLPROC __glewDebugMessageControl;
+GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTPROC __glewDebugMessageInsert;
+GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGPROC __glewGetDebugMessageLog;
+GLEW_FUN_EXPORT PFNGLGETOBJECTLABELPROC __glewGetObjectLabel;
+GLEW_FUN_EXPORT PFNGLGETOBJECTPTRLABELPROC __glewGetObjectPtrLabel;
+GLEW_FUN_EXPORT PFNGLOBJECTLABELPROC __glewObjectLabel;
+GLEW_FUN_EXPORT PFNGLOBJECTPTRLABELPROC __glewObjectPtrLabel;
+GLEW_FUN_EXPORT PFNGLPOPDEBUGGROUPPROC __glewPopDebugGroup;
+GLEW_FUN_EXPORT PFNGLPUSHDEBUGGROUPPROC __glewPushDebugGroup;
+
+GLEW_FUN_EXPORT PFNGLMAXSHADERCOMPILERTHREADSKHRPROC __glewMaxShaderCompilerThreadsKHR;
+
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVPROC __glewGetnUniformfv;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVPROC __glewGetnUniformiv;
+GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVPROC __glewGetnUniformuiv;
+GLEW_FUN_EXPORT PFNGLREADNPIXELSPROC __glewReadnPixels;
+
+GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled;
+GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion;
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion;
+GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion;
+GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONPROC __glewReadBufferRegion;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERPARAMETERIMESAPROC __glewFramebufferParameteriMESA;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC __glewGetFramebufferParameterivMESA;
+
+GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA;
+
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA;
+GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA;
+
+GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVXPROC __glewBeginConditionalRenderNVX;
+GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVXPROC __glewEndConditionalRenderNVX;
+
+GLEW_FUN_EXPORT PFNGLASYNCCOPYBUFFERSUBDATANVXPROC __glewAsyncCopyBufferSubDataNVX;
+GLEW_FUN_EXPORT PFNGLASYNCCOPYIMAGESUBDATANVXPROC __glewAsyncCopyImageSubDataNVX;
+GLEW_FUN_EXPORT PFNGLMULTICASTSCISSORARRAYVNVXPROC __glewMulticastScissorArrayvNVX;
+GLEW_FUN_EXPORT PFNGLMULTICASTVIEWPORTARRAYVNVXPROC __glewMulticastViewportArrayvNVX;
+GLEW_FUN_EXPORT PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC __glewMulticastViewportPositionWScaleNVX;
+GLEW_FUN_EXPORT PFNGLUPLOADGPUMASKNVXPROC __glewUploadGpuMaskNVX;
+
+GLEW_FUN_EXPORT PFNGLLGPUCOPYIMAGESUBDATANVXPROC __glewLGPUCopyImageSubDataNVX;
+GLEW_FUN_EXPORT PFNGLLGPUINTERLOCKNVXPROC __glewLGPUInterlockNVX;
+GLEW_FUN_EXPORT PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC __glewLGPUNamedBufferSubDataNVX;
+
+GLEW_FUN_EXPORT PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC __glewClientWaitSemaphoreui64NVX;
+GLEW_FUN_EXPORT PFNGLCREATEPROGRESSFENCENVXPROC __glewCreateProgressFenceNVX;
+GLEW_FUN_EXPORT PFNGLSIGNALSEMAPHOREUI64NVXPROC __glewSignalSemaphoreui64NVX;
+GLEW_FUN_EXPORT PFNGLWAITSEMAPHOREUI64NVXPROC __glewWaitSemaphoreui64NVX;
+
+GLEW_FUN_EXPORT PFNGLSTEREOPARAMETERFNVPROC __glewStereoParameterfNV;
+GLEW_FUN_EXPORT PFNGLSTEREOPARAMETERINVPROC __glewStereoParameteriNV;
+
+GLEW_FUN_EXPORT PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC __glewAlphaToCoverageDitherControlNV;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC __glewMultiDrawArraysIndirectBindlessNV;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC __glewMultiDrawElementsIndirectBindlessNV;
+
+GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawArraysIndirectBindlessCountNV;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawElementsIndirectBindlessCountNV;
+
+GLEW_FUN_EXPORT PFNGLGETIMAGEHANDLENVPROC __glewGetImageHandleNV;
+GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLENVPROC __glewGetTextureHandleNV;
+GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLENVPROC __glewGetTextureSamplerHandleNV;
+GLEW_FUN_EXPORT PFNGLISIMAGEHANDLERESIDENTNVPROC __glewIsImageHandleResidentNV;
+GLEW_FUN_EXPORT PFNGLISTEXTUREHANDLERESIDENTNVPROC __glewIsTextureHandleResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC __glewMakeImageHandleNonResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLERESIDENTNVPROC __glewMakeImageHandleResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC __glewMakeTextureHandleNonResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLERESIDENTNVPROC __glewMakeTextureHandleResidentNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC __glewProgramUniformHandleui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC __glewProgramUniformHandleui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64NVPROC __glewUniformHandleui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VNVPROC __glewUniformHandleui64vNV;
+
+GLEW_FUN_EXPORT PFNGLBLENDBARRIERNVPROC __glewBlendBarrierNV;
+GLEW_FUN_EXPORT PFNGLBLENDPARAMETERINVPROC __glewBlendParameteriNV;
+
+GLEW_FUN_EXPORT PFNGLVIEWPORTPOSITIONWSCALENVPROC __glewViewportPositionWScaleNV;
+
+GLEW_FUN_EXPORT PFNGLCALLCOMMANDLISTNVPROC __glewCallCommandListNV;
+GLEW_FUN_EXPORT PFNGLCOMMANDLISTSEGMENTSNVPROC __glewCommandListSegmentsNV;
+GLEW_FUN_EXPORT PFNGLCOMPILECOMMANDLISTNVPROC __glewCompileCommandListNV;
+GLEW_FUN_EXPORT PFNGLCREATECOMMANDLISTSNVPROC __glewCreateCommandListsNV;
+GLEW_FUN_EXPORT PFNGLCREATESTATESNVPROC __glewCreateStatesNV;
+GLEW_FUN_EXPORT PFNGLDELETECOMMANDLISTSNVPROC __glewDeleteCommandListsNV;
+GLEW_FUN_EXPORT PFNGLDELETESTATESNVPROC __glewDeleteStatesNV;
+GLEW_FUN_EXPORT PFNGLDRAWCOMMANDSADDRESSNVPROC __glewDrawCommandsAddressNV;
+GLEW_FUN_EXPORT PFNGLDRAWCOMMANDSNVPROC __glewDrawCommandsNV;
+GLEW_FUN_EXPORT PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC __glewDrawCommandsStatesAddressNV;
+GLEW_FUN_EXPORT PFNGLDRAWCOMMANDSSTATESNVPROC __glewDrawCommandsStatesNV;
+GLEW_FUN_EXPORT PFNGLGETCOMMANDHEADERNVPROC __glewGetCommandHeaderNV;
+GLEW_FUN_EXPORT PFNGLGETSTAGEINDEXNVPROC __glewGetStageIndexNV;
+GLEW_FUN_EXPORT PFNGLISCOMMANDLISTNVPROC __glewIsCommandListNV;
+GLEW_FUN_EXPORT PFNGLISSTATENVPROC __glewIsStateNV;
+GLEW_FUN_EXPORT PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC __glewListDrawCommandsStatesClientNV;
+GLEW_FUN_EXPORT PFNGLSTATECAPTURENVPROC __glewStateCaptureNV;
+
+GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV;
+GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV;
+
+GLEW_FUN_EXPORT PFNGLSUBPIXELPRECISIONBIASNVPROC __glewSubpixelPrecisionBiasNV;
+
+GLEW_FUN_EXPORT PFNGLCONSERVATIVERASTERPARAMETERFNVPROC __glewConservativeRasterParameterfNV;
+
+GLEW_FUN_EXPORT PFNGLCONSERVATIVERASTERPARAMETERINVPROC __glewConservativeRasterParameteriNV;
+
+GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATANVPROC __glewCopyBufferSubDataNV;
+
+GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV;
+
+GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV;
+GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWBUFFERSNVPROC __glewDrawBuffersNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDNVPROC __glewDrawArraysInstancedNV;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDNVPROC __glewDrawElementsInstancedNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWTEXTURENVPROC __glewDrawTextureNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWVKIMAGENVPROC __glewDrawVkImageNV;
+GLEW_FUN_EXPORT PFNGLGETVKPROCADDRNVPROC __glewGetVkProcAddrNV;
+GLEW_FUN_EXPORT PFNGLSIGNALVKFENCENVPROC __glewSignalVkFenceNV;
+GLEW_FUN_EXPORT PFNGLSIGNALVKSEMAPHORENVPROC __glewSignalVkSemaphoreNV;
+GLEW_FUN_EXPORT PFNGLWAITVKSEMAPHORENVPROC __glewWaitVkSemaphoreNV;
+
+GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV;
+GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV;
+GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV;
+GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV;
+GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV;
+GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV;
+GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV;
+GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV;
+GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV;
+
+GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV;
+GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV;
+GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV;
+GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV;
+GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV;
+GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV;
+GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV;
+
+GLEW_FUN_EXPORT PFNGLFRAGMENTCOVERAGECOLORNVPROC __glewFragmentCoverageColorNV;
+
+GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV;
+
+GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERNVPROC __glewBlitFramebufferNV;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC __glewRenderbufferStorageMultisampleNV;
+
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV;
+
+GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV;
+
+GLEW_FUN_EXPORT PFNGLMULTICASTBARRIERNVPROC __glewMulticastBarrierNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTBLITFRAMEBUFFERNVPROC __glewMulticastBlitFramebufferNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTBUFFERSUBDATANVPROC __glewMulticastBufferSubDataNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC __glewMulticastCopyBufferSubDataNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTCOPYIMAGESUBDATANVPROC __glewMulticastCopyImageSubDataNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewMulticastFramebufferSampleLocationsfvNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC __glewMulticastGetQueryObjecti64vNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTGETQUERYOBJECTIVNVPROC __glewMulticastGetQueryObjectivNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC __glewMulticastGetQueryObjectui64vNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC __glewMulticastGetQueryObjectuivNV;
+GLEW_FUN_EXPORT PFNGLMULTICASTWAITSYNCNVPROC __glewMulticastWaitSyncNV;
+GLEW_FUN_EXPORT PFNGLRENDERGPUMASKNVPROC __glewRenderGpuMaskNV;
+
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV;
+
+GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV;
+
+GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV;
+GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV;
+GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV;
+GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV;
+GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV;
+GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV;
+GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV;
+GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV;
+GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV;
+GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV;
+GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV;
+GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV;
+
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORNVPROC __glewVertexAttribDivisorNV;
+
+GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATSAMPLEIVNVPROC __glewGetInternalformatSampleivNV;
+
+GLEW_FUN_EXPORT PFNGLBUFFERATTACHMEMORYNVPROC __glewBufferAttachMemoryNV;
+GLEW_FUN_EXPORT PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC __glewGetMemoryObjectDetachedResourcesuivNV;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERATTACHMEMORYNVPROC __glewNamedBufferAttachMemoryNV;
+GLEW_FUN_EXPORT PFNGLRESETMEMORYOBJECTPARAMETERNVPROC __glewResetMemoryObjectParameterNV;
+GLEW_FUN_EXPORT PFNGLTEXATTACHMEMORYNVPROC __glewTexAttachMemoryNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREATTACHMEMORYNVPROC __glewTextureAttachMemoryNV;
+
+GLEW_FUN_EXPORT PFNGLBUFFERPAGECOMMITMENTMEMNVPROC __glewBufferPageCommitmentMemNV;
+GLEW_FUN_EXPORT PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC __glewNamedBufferPageCommitmentMemNV;
+GLEW_FUN_EXPORT PFNGLTEXPAGECOMMITMENTMEMNVPROC __glewTexPageCommitmentMemNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC __glewTexturePageCommitmentMemNV;
+
+GLEW_FUN_EXPORT PFNGLDRAWMESHTASKSINDIRECTNVPROC __glewDrawMeshTasksIndirectNV;
+GLEW_FUN_EXPORT PFNGLDRAWMESHTASKSNVPROC __glewDrawMeshTasksNV;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC __glewMultiDrawMeshTasksIndirectCountNV;
+GLEW_FUN_EXPORT PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC __glewMultiDrawMeshTasksIndirectNV;
+
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVNVPROC __glewUniformMatrix2x3fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVNVPROC __glewUniformMatrix2x4fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVNVPROC __glewUniformMatrix3x2fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVNVPROC __glewUniformMatrix3x4fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVNVPROC __glewUniformMatrix4x2fvNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVNVPROC __glewUniformMatrix4x3fvNV;
+
+GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV;
+GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV;
+GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV;
+GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV;
+GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV;
+GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV;
+GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV;
+
+GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV;
+
+GLEW_FUN_EXPORT PFNGLCOPYPATHNVPROC __glewCopyPathNV;
+GLEW_FUN_EXPORT PFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV;
+GLEW_FUN_EXPORT PFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV;
+GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV;
+GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV;
+GLEW_FUN_EXPORT PFNGLDELETEPATHSNVPROC __glewDeletePathsNV;
+GLEW_FUN_EXPORT PFNGLGENPATHSNVPROC __glewGenPathsNV;
+GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV;
+GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV;
+GLEW_FUN_EXPORT PFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV;
+GLEW_FUN_EXPORT PFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV;
+GLEW_FUN_EXPORT PFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV;
+GLEW_FUN_EXPORT PFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV;
+GLEW_FUN_EXPORT PFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV;
+GLEW_FUN_EXPORT PFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV;
+GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV;
+GLEW_FUN_EXPORT PFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV;
+GLEW_FUN_EXPORT PFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV;
+GLEW_FUN_EXPORT PFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEFVNVPROC __glewGetProgramResourcefvNV;
+GLEW_FUN_EXPORT PFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV;
+GLEW_FUN_EXPORT PFNGLISPATHNVPROC __glewIsPathNV;
+GLEW_FUN_EXPORT PFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV;
+GLEW_FUN_EXPORT PFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV;
+GLEW_FUN_EXPORT PFNGLMATRIXLOAD3X2FNVPROC __glewMatrixLoad3x2fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXLOAD3X3FNVPROC __glewMatrixLoad3x3fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC __glewMatrixLoadTranspose3x3fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXMULT3X2FNVPROC __glewMatrixMult3x2fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXMULT3X3FNVPROC __glewMatrixMult3x3fNV;
+GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC __glewMatrixMultTranspose3x3fNV;
+GLEW_FUN_EXPORT PFNGLPATHCOLORGENNVPROC __glewPathColorGenNV;
+GLEW_FUN_EXPORT PFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV;
+GLEW_FUN_EXPORT PFNGLPATHCOORDSNVPROC __glewPathCoordsNV;
+GLEW_FUN_EXPORT PFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV;
+GLEW_FUN_EXPORT PFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV;
+GLEW_FUN_EXPORT PFNGLPATHFOGGENNVPROC __glewPathFogGenNV;
+GLEW_FUN_EXPORT PFNGLPATHGLYPHINDEXARRAYNVPROC __glewPathGlyphIndexArrayNV;
+GLEW_FUN_EXPORT PFNGLPATHGLYPHINDEXRANGENVPROC __glewPathGlyphIndexRangeNV;
+GLEW_FUN_EXPORT PFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV;
+GLEW_FUN_EXPORT PFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV;
+GLEW_FUN_EXPORT PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC __glewPathMemoryGlyphIndexArrayNV;
+GLEW_FUN_EXPORT PFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV;
+GLEW_FUN_EXPORT PFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV;
+GLEW_FUN_EXPORT PFNGLPATHPARAMETERINVPROC __glewPathParameteriNV;
+GLEW_FUN_EXPORT PFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV;
+GLEW_FUN_EXPORT PFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV;
+GLEW_FUN_EXPORT PFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV;
+GLEW_FUN_EXPORT PFNGLPATHSTRINGNVPROC __glewPathStringNV;
+GLEW_FUN_EXPORT PFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV;
+GLEW_FUN_EXPORT PFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV;
+GLEW_FUN_EXPORT PFNGLPATHTEXGENNVPROC __glewPathTexGenNV;
+GLEW_FUN_EXPORT PFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC __glewProgramPathFragmentInputGenNV;
+GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV;
+GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV;
+GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV;
+GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV;
+GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC __glewStencilThenCoverFillPathInstancedNV;
+GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERFILLPATHNVPROC __glewStencilThenCoverFillPathNV;
+GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC __glewStencilThenCoverStrokePathInstancedNV;
+GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC __glewStencilThenCoverStrokePathNV;
+GLEW_FUN_EXPORT PFNGLTRANSFORMPATHNVPROC __glewTransformPathNV;
+GLEW_FUN_EXPORT PFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV;
+
+GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV;
+GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV;
+
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLPOLYGONMODENVPROC __glewPolygonModeNV;
+
+GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV;
+GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV;
+GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV;
+
+GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV;
+GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV;
+
+GLEW_FUN_EXPORT PFNGLREADBUFFERNVPROC __glewReadBufferNV;
+
+GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV;
+GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV;
+GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV;
+GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV;
+GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV;
+GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV;
+GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV;
+GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewFramebufferSampleLocationsfvNV;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewNamedFramebufferSampleLocationsfvNV;
+GLEW_FUN_EXPORT PFNGLRESOLVEDEPTHVALUESNVPROC __glewResolveDepthValuesNV;
+
+GLEW_FUN_EXPORT PFNGLSCISSOREXCLUSIVEARRAYVNVPROC __glewScissorExclusiveArrayvNV;
+GLEW_FUN_EXPORT PFNGLSCISSOREXCLUSIVENVPROC __glewScissorExclusiveNV;
+
+GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV;
+GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV;
+GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV;
+GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV;
+GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV;
+GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV;
+
+GLEW_FUN_EXPORT PFNGLBINDSHADINGRATEIMAGENVPROC __glewBindShadingRateImageNV;
+GLEW_FUN_EXPORT PFNGLGETSHADINGRATEIMAGEPALETTENVPROC __glewGetShadingRateImagePaletteNV;
+GLEW_FUN_EXPORT PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC __glewGetShadingRateSampleLocationivNV;
+GLEW_FUN_EXPORT PFNGLSHADINGRATEIMAGEBARRIERNVPROC __glewShadingRateImageBarrierNV;
+GLEW_FUN_EXPORT PFNGLSHADINGRATEIMAGEPALETTENVPROC __glewShadingRateImagePaletteNV;
+GLEW_FUN_EXPORT PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC __glewShadingRateSampleOrderCustomNV;
+GLEW_FUN_EXPORT PFNGLSHADINGRATESAMPLEORDERNVPROC __glewShadingRateSampleOrderNV;
+
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DNVPROC __glewCompressedTexImage3DNV;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC __glewCompressedTexSubImage3DNV;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DNVPROC __glewCopyTexSubImage3DNV;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERNVPROC __glewFramebufferTextureLayerNV;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DNVPROC __glewTexImage3DNV;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DNVPROC __glewTexSubImage3DNV;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV;
+
+GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV;
+GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV;
+
+GLEW_FUN_EXPORT PFNGLCREATESEMAPHORESNVPROC __glewCreateSemaphoresNV;
+GLEW_FUN_EXPORT PFNGLGETSEMAPHOREPARAMETERIVNVPROC __glewGetSemaphoreParameterivNV;
+GLEW_FUN_EXPORT PFNGLSEMAPHOREPARAMETERIVNVPROC __glewSemaphoreParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV;
+GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV;
+GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV;
+GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV;
+GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV;
+GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV;
+GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV;
+GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV;
+
+GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV;
+GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV;
+GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV;
+
+GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV;
+GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV;
+GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV;
+GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV;
+GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV;
+GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV;
+GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV;
+GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV;
+GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV;
+GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV;
+
+GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC __glewVDPAURegisterVideoSurfaceWithPictureStructureNV;
+
+GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV;
+
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV;
+
+GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV;
+GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV;
+GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV;
+GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV;
+GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV;
+GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV;
+GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV;
+GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV;
+GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV;
+
+GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV;
+GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV;
+GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV;
+GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV;
+GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV;
+GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV;
+GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV;
+GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV;
+GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV;
+GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV;
+
+GLEW_FUN_EXPORT PFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV;
+GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV;
+GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV;
+GLEW_FUN_EXPORT PFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV;
+GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV;
+GLEW_FUN_EXPORT PFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV;
+GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV;
+GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV;
+GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV;
+
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYFVNVPROC __glewDepthRangeArrayfvNV;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDFNVPROC __glewDepthRangeIndexedfNV;
+GLEW_FUN_EXPORT PFNGLDISABLEINVPROC __glewDisableiNV;
+GLEW_FUN_EXPORT PFNGLENABLEINVPROC __glewEnableiNV;
+GLEW_FUN_EXPORT PFNGLGETFLOATI_VNVPROC __glewGetFloati_vNV;
+GLEW_FUN_EXPORT PFNGLISENABLEDINVPROC __glewIsEnablediNV;
+GLEW_FUN_EXPORT PFNGLSCISSORARRAYVNVPROC __glewScissorArrayvNV;
+GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDNVPROC __glewScissorIndexedNV;
+GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVNVPROC __glewScissorIndexedvNV;
+GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVNVPROC __glewViewportArrayvNV;
+GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFNVPROC __glewViewportIndexedfNV;
+GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVNVPROC __glewViewportIndexedfvNV;
+
+GLEW_FUN_EXPORT PFNGLVIEWPORTSWIZZLENVPROC __glewViewportSwizzleNV;
+
+GLEW_FUN_EXPORT PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __glewEGLImageTargetRenderbufferStorageOES;
+GLEW_FUN_EXPORT PFNGLEGLIMAGETARGETTEXTURE2DOESPROC __glewEGLImageTargetTexture2DOES;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEOESPROC __glewBlendEquationSeparateOES;
+
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEOESPROC __glewBlendFuncSeparateOES;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONOESPROC __glewBlendEquationOES;
+
+GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATAOESPROC __glewCopyImageSubDataOES;
+
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIOESPROC __glewBlendEquationSeparateiOES;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIOESPROC __glewBlendEquationiOES;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIOESPROC __glewBlendFuncSeparateiOES;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIOESPROC __glewBlendFunciOES;
+GLEW_FUN_EXPORT PFNGLCOLORMASKIOESPROC __glewColorMaskiOES;
+GLEW_FUN_EXPORT PFNGLDISABLEIOESPROC __glewDisableiOES;
+GLEW_FUN_EXPORT PFNGLENABLEIOESPROC __glewEnableiOES;
+GLEW_FUN_EXPORT PFNGLISENABLEDIOESPROC __glewIsEnablediOES;
+
+GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEROESPROC __glewBindFramebufferOES;
+GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEROESPROC __glewBindRenderbufferOES;
+GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSOESPROC __glewCheckFramebufferStatusOES;
+GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSOESPROC __glewDeleteFramebuffersOES;
+GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSOESPROC __glewDeleteRenderbuffersOES;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEROESPROC __glewFramebufferRenderbufferOES;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DOESPROC __glewFramebufferTexture2DOES;
+GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSOESPROC __glewGenFramebuffersOES;
+GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSOESPROC __glewGenRenderbuffersOES;
+GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPOESPROC __glewGenerateMipmapOES;
+GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC __glewGetFramebufferAttachmentParameterivOES;
+GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVOESPROC __glewGetRenderbufferParameterivOES;
+GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEROESPROC __glewIsFramebufferOES;
+GLEW_FUN_EXPORT PFNGLISRENDERBUFFEROESPROC __glewIsRenderbufferOES;
+GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEOESPROC __glewRenderbufferStorageOES;
+
+GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYOESPROC __glewGetProgramBinaryOES;
+GLEW_FUN_EXPORT PFNGLPROGRAMBINARYOESPROC __glewProgramBinaryOES;
+
+GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVOESPROC __glewGetBufferPointervOES;
+GLEW_FUN_EXPORT PFNGLMAPBUFFEROESPROC __glewMapBufferOES;
+GLEW_FUN_EXPORT PFNGLUNMAPBUFFEROESPROC __glewUnmapBufferOES;
+
+GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXOESPROC __glewCurrentPaletteMatrixOES;
+GLEW_FUN_EXPORT PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC __glewLoadPaletteFromModelViewMatrixOES;
+GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTEROESPROC __glewMatrixIndexPointerOES;
+GLEW_FUN_EXPORT PFNGLWEIGHTPOINTEROESPROC __glewWeightPointerOES;
+
+GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGOESPROC __glewMinSampleShadingOES;
+
+GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES;
+GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES;
+GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES;
+GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES;
+GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES;
+
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DOESPROC __glewCompressedTexImage3DOES;
+GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __glewCompressedTexSubImage3DOES;
+GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DOESPROC __glewCopyTexSubImage3DOES;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DOESPROC __glewFramebufferTexture3DOES;
+GLEW_FUN_EXPORT PFNGLTEXIMAGE3DOESPROC __glewTexImage3DOES;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DOESPROC __glewTexSubImage3DOES;
+
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVOESPROC __glewGetSamplerParameterIivOES;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVOESPROC __glewGetSamplerParameterIuivOES;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVOESPROC __glewGetTexParameterIivOES;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVOESPROC __glewGetTexParameterIuivOES;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVOESPROC __glewSamplerParameterIivOES;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVOESPROC __glewSamplerParameterIuivOES;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVOESPROC __glewTexParameterIivOES;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVOESPROC __glewTexParameterIuivOES;
+
+GLEW_FUN_EXPORT PFNGLTEXBUFFEROESPROC __glewTexBufferOES;
+GLEW_FUN_EXPORT PFNGLTEXBUFFERRANGEOESPROC __glewTexBufferRangeOES;
+
+GLEW_FUN_EXPORT PFNGLGETTEXGENFVOESPROC __glewGetTexGenfvOES;
+GLEW_FUN_EXPORT PFNGLGETTEXGENIVOESPROC __glewGetTexGenivOES;
+GLEW_FUN_EXPORT PFNGLGETTEXGENXVOESPROC __glewGetTexGenxvOES;
+GLEW_FUN_EXPORT PFNGLTEXGENFOESPROC __glewTexGenfOES;
+GLEW_FUN_EXPORT PFNGLTEXGENFVOESPROC __glewTexGenfvOES;
+GLEW_FUN_EXPORT PFNGLTEXGENIOESPROC __glewTexGeniOES;
+GLEW_FUN_EXPORT PFNGLTEXGENIVOESPROC __glewTexGenivOES;
+GLEW_FUN_EXPORT PFNGLTEXGENXOESPROC __glewTexGenxOES;
+GLEW_FUN_EXPORT PFNGLTEXGENXVOESPROC __glewTexGenxvOES;
+
+GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC __glewTexStorage3DMultisampleOES;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREVIEWOESPROC __glewTextureViewOES;
+
+GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYOESPROC __glewBindVertexArrayOES;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSOESPROC __glewDeleteVertexArraysOES;
+GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSOESPROC __glewGenVertexArraysOES;
+GLEW_FUN_EXPORT PFNGLISVERTEXARRAYOESPROC __glewIsVertexArrayOES;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewFramebufferTextureMultiviewOVR;
+GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewNamedFramebufferTextureMultiviewOVR;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __glewFramebufferTextureMultisampleMultiviewOVR;
+
+GLEW_FUN_EXPORT PFNGLALPHAFUNCQCOMPROC __glewAlphaFuncQCOM;
+
+GLEW_FUN_EXPORT PFNGLDISABLEDRIVERCONTROLQCOMPROC __glewDisableDriverControlQCOM;
+GLEW_FUN_EXPORT PFNGLENABLEDRIVERCONTROLQCOMPROC __glewEnableDriverControlQCOM;
+GLEW_FUN_EXPORT PFNGLGETDRIVERCONTROLSTRINGQCOMPROC __glewGetDriverControlStringQCOM;
+GLEW_FUN_EXPORT PFNGLGETDRIVERCONTROLSQCOMPROC __glewGetDriverControlsQCOM;
+
+GLEW_FUN_EXPORT PFNGLEXTGETBUFFERPOINTERVQCOMPROC __glewExtGetBufferPointervQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETBUFFERSQCOMPROC __glewExtGetBuffersQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETFRAMEBUFFERSQCOMPROC __glewExtGetFramebuffersQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETRENDERBUFFERSQCOMPROC __glewExtGetRenderbuffersQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC __glewExtGetTexLevelParameterivQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETTEXSUBIMAGEQCOMPROC __glewExtGetTexSubImageQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETTEXTURESQCOMPROC __glewExtGetTexturesQCOM;
+GLEW_FUN_EXPORT PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC __glewExtTexObjectStateOverrideiQCOM;
+
+GLEW_FUN_EXPORT PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC __glewExtGetProgramBinarySourceQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETPROGRAMSQCOMPROC __glewExtGetProgramsQCOM;
+GLEW_FUN_EXPORT PFNGLEXTGETSHADERSQCOMPROC __glewExtGetShadersQCOM;
+GLEW_FUN_EXPORT PFNGLEXTISPROGRAMBINARYQCOMPROC __glewExtIsProgramBinaryQCOM;
+
+GLEW_FUN_EXPORT PFNGLEXTRAPOLATETEX2DQCOMPROC __glewExtrapolateTex2DQCOM;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC __glewFramebufferFoveationConfigQCOM;
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC __glewFramebufferFoveationParametersQCOM;
+
+GLEW_FUN_EXPORT PFNGLTEXESTIMATEMOTIONQCOMPROC __glewTexEstimateMotionQCOM;
+GLEW_FUN_EXPORT PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC __glewTexEstimateMotionRegionsQCOM;
+
+GLEW_FUN_EXPORT PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC __glewFramebufferFetchBarrierQCOM;
+
+GLEW_FUN_EXPORT PFNGLSHADINGRATEQCOMPROC __glewShadingRateQCOM;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC __glewTextureFoveationParametersQCOM;
+
+GLEW_FUN_EXPORT PFNGLENDTILINGQCOMPROC __glewEndTilingQCOM;
+GLEW_FUN_EXPORT PFNGLSTARTTILINGQCOMPROC __glewStartTilingQCOM;
+
+GLEW_FUN_EXPORT PFNGLALPHAFUNCXPROC __glewAlphaFuncx;
+GLEW_FUN_EXPORT PFNGLCLEARCOLORXPROC __glewClearColorx;
+GLEW_FUN_EXPORT PFNGLCLEARDEPTHXPROC __glewClearDepthx;
+GLEW_FUN_EXPORT PFNGLCOLOR4XPROC __glewColor4x;
+GLEW_FUN_EXPORT PFNGLDEPTHRANGEXPROC __glewDepthRangex;
+GLEW_FUN_EXPORT PFNGLFOGXPROC __glewFogx;
+GLEW_FUN_EXPORT PFNGLFOGXVPROC __glewFogxv;
+GLEW_FUN_EXPORT PFNGLFRUSTUMFPROC __glewFrustumf;
+GLEW_FUN_EXPORT PFNGLFRUSTUMXPROC __glewFrustumx;
+GLEW_FUN_EXPORT PFNGLLIGHTMODELXPROC __glewLightModelx;
+GLEW_FUN_EXPORT PFNGLLIGHTMODELXVPROC __glewLightModelxv;
+GLEW_FUN_EXPORT PFNGLLIGHTXPROC __glewLightx;
+GLEW_FUN_EXPORT PFNGLLIGHTXVPROC __glewLightxv;
+GLEW_FUN_EXPORT PFNGLLINEWIDTHXPROC __glewLineWidthx;
+GLEW_FUN_EXPORT PFNGLLOADMATRIXXPROC __glewLoadMatrixx;
+GLEW_FUN_EXPORT PFNGLMATERIALXPROC __glewMaterialx;
+GLEW_FUN_EXPORT PFNGLMATERIALXVPROC __glewMaterialxv;
+GLEW_FUN_EXPORT PFNGLMULTMATRIXXPROC __glewMultMatrixx;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4XPROC __glewMultiTexCoord4x;
+GLEW_FUN_EXPORT PFNGLNORMAL3XPROC __glewNormal3x;
+GLEW_FUN_EXPORT PFNGLORTHOFPROC __glewOrthof;
+GLEW_FUN_EXPORT PFNGLORTHOXPROC __glewOrthox;
+GLEW_FUN_EXPORT PFNGLPOINTSIZEXPROC __glewPointSizex;
+GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETXPROC __glewPolygonOffsetx;
+GLEW_FUN_EXPORT PFNGLROTATEXPROC __glewRotatex;
+GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEXPROC __glewSampleCoveragex;
+GLEW_FUN_EXPORT PFNGLSCALEXPROC __glewScalex;
+GLEW_FUN_EXPORT PFNGLTEXENVXPROC __glewTexEnvx;
+GLEW_FUN_EXPORT PFNGLTEXENVXVPROC __glewTexEnvxv;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERXPROC __glewTexParameterx;
+GLEW_FUN_EXPORT PFNGLTRANSLATEXPROC __glewTranslatex;
+
+GLEW_FUN_EXPORT PFNGLCLIPPLANEFPROC __glewClipPlanef;
+GLEW_FUN_EXPORT PFNGLCLIPPLANEXPROC __glewClipPlanex;
+GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFPROC __glewGetClipPlanef;
+GLEW_FUN_EXPORT PFNGLGETCLIPPLANEXPROC __glewGetClipPlanex;
+GLEW_FUN_EXPORT PFNGLGETFIXEDVPROC __glewGetFixedv;
+GLEW_FUN_EXPORT PFNGLGETLIGHTXVPROC __glewGetLightxv;
+GLEW_FUN_EXPORT PFNGLGETMATERIALXVPROC __glewGetMaterialxv;
+GLEW_FUN_EXPORT PFNGLGETTEXENVXVPROC __glewGetTexEnvxv;
+GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERXVPROC __glewGetTexParameterxv;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERXPROC __glewPointParameterx;
+GLEW_FUN_EXPORT PFNGLPOINTPARAMETERXVPROC __glewPointParameterxv;
+GLEW_FUN_EXPORT PFNGLPOINTSIZEPOINTEROESPROC __glewPointSizePointerOES;
+GLEW_FUN_EXPORT PFNGLTEXPARAMETERXVPROC __glewTexParameterxv;
+
+GLEW_FUN_EXPORT PFNGLERRORSTRINGREGALPROC __glewErrorStringREGAL;
+
+GLEW_FUN_EXPORT PFNGLGETEXTENSIONREGALPROC __glewGetExtensionREGAL;
+GLEW_FUN_EXPORT PFNGLISSUPPORTEDREGALPROC __glewIsSupportedREGAL;
+
+GLEW_FUN_EXPORT PFNGLLOGMESSAGECALLBACKREGALPROC __glewLogMessageCallbackREGAL;
+
+GLEW_FUN_EXPORT PFNGLGETPROCADDRESSREGALPROC __glewGetProcAddressREGAL;
+
+GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS;
+GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS;
+
+GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS;
+GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS;
+
+GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS;
+GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS;
+
+GLEW_FUN_EXPORT PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC __glewInterleavedTextureCoordSetsSGIS;
+GLEW_FUN_EXPORT PFNGLSELECTTEXTURECOORDSETSGISPROC __glewSelectTextureCoordSetSGIS;
+GLEW_FUN_EXPORT PFNGLSELECTTEXTURESGISPROC __glewSelectTextureSGIS;
+GLEW_FUN_EXPORT PFNGLSELECTTEXTURETRANSFORMSGISPROC __glewSelectTextureTransformSGIS;
+
+GLEW_FUN_EXPORT PFNGLMULTISAMPLESUBRECTPOSSGISPROC __glewMultisampleSubRectPosSGIS;
+
+GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS;
+GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS;
+
+GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS;
+GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS;
+
+GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS;
+GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS;
+
+GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX;
+GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX;
+GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX;
+GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX;
+GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX;
+GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX;
+
+GLEW_FUN_EXPORT PFNGLADDRESSSPACEPROC __glewAddressSpace;
+GLEW_FUN_EXPORT PFNGLDATAPIPEPROC __glewDataPipe;
+
+GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX;
+
+GLEW_FUN_EXPORT PFNGLFOGLAYERSSGIXPROC __glewFogLayersSGIX;
+GLEW_FUN_EXPORT PFNGLGETFOGLAYERSSGIXPROC __glewGetFogLayersSGIX;
+
+GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX;
+
+GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX;
+GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX;
+GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX;
+
+GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX;
+
+GLEW_FUN_EXPORT PFNGLIGLOOINTERFACESGIXPROC __glewIglooInterfaceSGIX;
+
+GLEW_FUN_EXPORT PFNGLALLOCMPEGPREDICTORSSGIXPROC __glewAllocMPEGPredictorsSGIX;
+GLEW_FUN_EXPORT PFNGLDELETEMPEGPREDICTORSSGIXPROC __glewDeleteMPEGPredictorsSGIX;
+GLEW_FUN_EXPORT PFNGLGENMPEGPREDICTORSSGIXPROC __glewGenMPEGPredictorsSGIX;
+GLEW_FUN_EXPORT PFNGLGETMPEGPARAMETERFVSGIXPROC __glewGetMPEGParameterfvSGIX;
+GLEW_FUN_EXPORT PFNGLGETMPEGPARAMETERIVSGIXPROC __glewGetMPEGParameterivSGIX;
+GLEW_FUN_EXPORT PFNGLGETMPEGPREDICTORSGIXPROC __glewGetMPEGPredictorSGIX;
+GLEW_FUN_EXPORT PFNGLGETMPEGQUANTTABLEUBVPROC __glewGetMPEGQuantTableubv;
+GLEW_FUN_EXPORT PFNGLISMPEGPREDICTORSGIXPROC __glewIsMPEGPredictorSGIX;
+GLEW_FUN_EXPORT PFNGLMPEGPREDICTORSGIXPROC __glewMPEGPredictorSGIX;
+GLEW_FUN_EXPORT PFNGLMPEGQUANTTABLEUBVPROC __glewMPEGQuantTableubv;
+GLEW_FUN_EXPORT PFNGLSWAPMPEGPREDICTORSSGIXPROC __glewSwapMPEGPredictorsSGIX;
+
+GLEW_FUN_EXPORT PFNGLGETNONLINLIGHTFVSGIXPROC __glewGetNonlinLightfvSGIX;
+GLEW_FUN_EXPORT PFNGLGETNONLINMATERIALFVSGIXPROC __glewGetNonlinMaterialfvSGIX;
+GLEW_FUN_EXPORT PFNGLNONLINLIGHTFVSGIXPROC __glewNonlinLightfvSGIX;
+GLEW_FUN_EXPORT PFNGLNONLINMATERIALFVSGIXPROC __glewNonlinMaterialfvSGIX;
+
+GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX;
+
+GLEW_FUN_EXPORT PFNGLDEFORMSGIXPROC __glewDeformSGIX;
+GLEW_FUN_EXPORT PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC __glewLoadIdentityDeformationMapSGIX;
+
+GLEW_FUN_EXPORT PFNGLMESHBREADTHSGIXPROC __glewMeshBreadthSGIX;
+GLEW_FUN_EXPORT PFNGLMESHSTRIDESGIXPROC __glewMeshStrideSGIX;
+
+GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX;
+
+GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX;
+GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX;
+GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX;
+GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX;
+
+GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX;
+
+GLEW_FUN_EXPORT PFNGLGETVECTOROPERATIONSGIXPROC __glewGetVectorOperationSGIX;
+GLEW_FUN_EXPORT PFNGLVECTOROPERATIONSGIXPROC __glewVectorOperationSGIX;
+
+GLEW_FUN_EXPORT PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC __glewAreVertexArraysResidentSGIX;
+GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYSGIXPROC __glewBindVertexArraySGIX;
+GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSSGIXPROC __glewDeleteVertexArraysSGIX;
+GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSSGIXPROC __glewGenVertexArraysSGIX;
+GLEW_FUN_EXPORT PFNGLISVERTEXARRAYSGIXPROC __glewIsVertexArraySGIX;
+GLEW_FUN_EXPORT PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC __glewPrioritizeVertexArraysSGIX;
+
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI;
+GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI;
+GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI;
+GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI;
+GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI;
+
+GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC __glewGetPixelTransformParameterfvSGI;
+GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC __glewGetPixelTransformParameterivSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFSGIPROC __glewPixelTransformParameterfSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC __glewPixelTransformParameterfvSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERISGIPROC __glewPixelTransformParameteriSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC __glewPixelTransformParameterivSGI;
+GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMSGIPROC __glewPixelTransformSGI;
+
+GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX;
+
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN;
+GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN;
+
+GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN;
+
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN;
+
+GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN;
+GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN;
+
+GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_3;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_4;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_5;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_6;
+GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_blend_minmax_factor;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_compressed_3DC_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_compressed_ATC_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_depth_clamp_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_framebuffer_multisample_advanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_framebuffer_sample_positions;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gcn_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_half_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_half_float_fetch;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_int16;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_int64;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_interleaved_elements;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_multi_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_occlusion_query_event;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_pinned_memory;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_program_binary_Z400;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_query_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sample_positions;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_atomic_counter_ops;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_ballot;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_explicit_vertex_parameter;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_image_load_store_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_value_export;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_trinary_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sparse_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_stencil_operation_extended;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_gather_bias_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback4;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_layer;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_viewport_index;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANDROID_extension_pack_es31a;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_depth_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_framebuffer_blit;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_framebuffer_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_instanced_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_pack_reverse_row_order;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt1;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt5;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_usage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_translated_shader_source;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_clip_distance;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_color_buffer_packed_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_copy_texture_levels;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_framebuffer_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_sync;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_2D_limited_npot;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_format_BGRA8888;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_max_level;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_packed_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators;
+GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_1_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_2_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_arrays_of_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_base_instance;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_bindless_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_buffer_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clear_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clear_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clip_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compressed_texture_pixel_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compute_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compute_variable_group_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conditional_render_inverted;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conservative_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cull_distance;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_derivative_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_direct_state_access;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_enhanced_layouts;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_uniform_location;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_layer_viewport;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader_interlock;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_no_attachments;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_texture_sub_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gl_spirv;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_int64;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_indirect_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_invalidate_subdata;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_alignment;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multi_bind;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multi_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_parallel_shader_compile;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pipeline_statistics_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_polygon_offset_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_post_depth_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_program_interface_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_query_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robust_buffer_access_behavior;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness_application_isolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness_share_group_isolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_locations;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cubemap_per_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_atomic_counter_ops;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_atomic_counters;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_ballot;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_clock;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_draw_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_group_vote;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_load_store;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_storage_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_image_samples;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_viewport_layer_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_420pack;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_packing;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_texture2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_texture_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_spirv_extensions;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_stencil_texturing;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_barrier;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_filter_anisotropic;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_filter_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirror_clamp_to_edge;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_levels;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_stencil8;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_view;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_overflow_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_binding;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_10f_11f_11f_rev;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_mali_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_mali_shader_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_rgba8;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_shader_framebuffer_fetch;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_shader_framebuffer_fetch_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARM_texture_unnormalized_coordinates;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams;
+GLEW_VAR_EXPORT GLboolean __GLEW_DMP_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_DMP_shader_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_image_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_image_external_wrap_modes;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_image_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_image_storage_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_EGL_sync;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_YUV_target;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_base_instance;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_extended;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_buffer_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clear_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_cull_distance;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_buffer_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_buffer_half_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compressed_ETC1_RGB8_sub_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_conservative_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_debug_label;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_debug_marker;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_discard_framebuffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_disjoint_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers_indexed;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_elements_base_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_transform_feedback;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_external_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_float_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_frag_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_instanced_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_map_buffer_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_memory_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_memory_object_fd;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_memory_object_win32;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiple_textures;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisampled_render_to_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisampled_render_to_texture2;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiview_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiview_tessellation_geometry_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiview_texture_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multiview_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_occlusion_query_boolean;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_post_depth_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_primitive_bounding_box;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_protected_textures;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pvrtc_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_raster_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_read_format_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_render_snorm;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_robustness;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sRGB_write_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_semaphore;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_semaphore_fd;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_semaphore_win32;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_framebuffer_fetch;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_framebuffer_fetch_non_coherent;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_group_vote;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_formatted;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_implicit_conversions;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_integer_mix;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_io_blocks;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_non_constant_global_initializers;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_pixel_local_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_pixel_local_storage2;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_samples_identical;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_samplers;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sparse_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sparse_texture2;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_static_vertex_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_tessellation_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_tessellation_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_astc_decode_mode;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_bptc;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc_srgb;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_format_BGRA8888;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_format_sRGB_override;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp_to_edge;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_norm16;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_query_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rg;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_R8;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_RG8;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_decode;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shadow_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_storage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_storage_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_type_2_10_10_10_REV;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_view;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_unpack_subimage;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_setXXX;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_win32_keyed_mutex;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_window_rectangles;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_x11_sync_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_FJ_shader_binary_GCCSO;
+GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator;
+GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker;
+GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes;
+GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform;
+GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test;
+GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat;
+GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_bindless_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_framebuffer_downsample;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_multisampled_render_to_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_read_format;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_shader_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_texture_compression_pvrtc;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_texture_compression_pvrtc2;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_texture_env_enhanced_fixed_function;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_texture_filter_cubic;
+GLEW_VAR_EXPORT GLboolean __GLEW_IMG_tile_region_protection;
+GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_blackhole_render;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_conservative_rasterization;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_fragment_shader_ordering;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_framebuffer_CMAA;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_map_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_performance_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_shader_integer_functions2;
+GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_blend_equation_advanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_blend_equation_advanced_coherent;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_context_flush_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_debug;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_no_error;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_parallel_shader_compile;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_robust_buffer_access_behavior;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_robustness;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_shader_subgroup;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_hdr;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_ldr;
+GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_sliced_3d;
+GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_framebuffer_flip_x;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_framebuffer_flip_y;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_framebuffer_swap_xy;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_program_binary_formats;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_shader_integer_functions;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_tile_raster_order;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos;
+GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_blend_equation_advanced_multi_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_conditional_render;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_multicast2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_linked_gpu_multicast;
+GLEW_VAR_EXPORT GLboolean __GLEW_NVX_progress_fence;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_3dvision_settings;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_EGL_stream_consumer_external;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_alpha_to_coverage_dither_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_bgr;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_multi_draw_indirect;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_multi_draw_indirect_count;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_equation_advanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_equation_advanced_coherent;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_minmax_factor;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_clip_space_w_scaling;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_command_list;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_compute_program5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_compute_shader_derivatives;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster_dilate;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster_pre_snap;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster_pre_snap_triangles;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster_underestimation;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_deep_texture3D;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_nonlinear;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_buffers;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_vulkan_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_attrib_location;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fbo_color_attachments;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fill_rectangle;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_coverage_to_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_shader_barycentric;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_shader_interlock;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_blit;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_mixed_samples;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_generate_mipmap_sRGB;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader_passthrough;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_multicast;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5_mem_extended;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_image_formats;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_instanced_arrays;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_internalformat_sample_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_memory_attachment;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_memory_object_sparse;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_mesh_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_non_square_matrices;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_pack_subimage;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_float_linear;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering_shared_edge;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_platform_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_polygon_mode;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_shading_rate;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_query_resource_tag;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_buffer_front;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_depth;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_read_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_representative_fragment_test;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_robustness_video_memory_purge;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_sRGB_formats;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_sample_locations;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_sample_mask_override_coverage;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_scissor_exclusive;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_counters;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_float64;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_fp16_vector;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_int64;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_noperspective_interpolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_storage_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_subgroup_partitioned;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_texture_footprint;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_group;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_shuffle;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shading_rate_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shadow_samplers_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_shadow_samplers_cube;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_stereo_view_rendering;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_latc;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_s3tc;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_s3tc_update;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_npot_2D_mipmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle_compressed;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_timeline_semaphore;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_uniform_buffer_unified_memory;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_video_capture;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_viewport_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_viewport_array2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_viewport_swizzle;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_EGL_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_EGL_image_external;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_EGL_image_external_essl3;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_blend_equation_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_blend_func_separate;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_blend_subtract;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_ETC1_RGB8_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_copy_image;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_depth24;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_depth32;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_depth_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_depth_texture_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_draw_buffers_indexed;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_draw_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_element_index_uint;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_extended_matrix_palette;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_fbo_render_mipmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_fragment_precision_high;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_framebuffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_geometry_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_geometry_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_get_program_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_mapbuffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_matrix_get;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_matrix_palette;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_packed_depth_stencil;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_point_size_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_point_sprite;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_required_internalformat;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_rgb8_rgba8;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_sample_shading;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_sample_variables;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_shader_image_atomic;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_shader_io_blocks;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_shader_multisample_interpolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_standard_derivatives;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_stencil1;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_stencil4;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_stencil8;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_surfaceless_context;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_tessellation_point_size;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_tessellation_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_3D;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_compression_astc;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_cube_map_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_env_crossbar;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_mirrored_repeat;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_npot;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_stencil8;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_storage_multisample_2d_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_texture_view;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_vertex_half_float;
+GLEW_VAR_EXPORT GLboolean __GLEW_OES_vertex_type_10_10_10_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace;
+GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample;
+GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample;
+GLEW_VAR_EXPORT GLboolean __GLEW_OVR_multiview;
+GLEW_VAR_EXPORT GLboolean __GLEW_OVR_multiview2;
+GLEW_VAR_EXPORT GLboolean __GLEW_OVR_multiview_multisampled_render_to_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints;
+GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_YUV_texture_gather;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_alpha_test;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_binning_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_driver_control;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_extended_get;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_extended_get2;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_frame_extrapolation;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_framebuffer_foveated;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_motion_estimation;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_perfmon_global_mode;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_render_shared_exponent;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_shader_framebuffer_fetch_noncoherent;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_shader_framebuffer_fetch_rate;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_shading_rate;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_texture_foveated;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_texture_foveated2;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_texture_foveated_subsampled_layout;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_tiled_rendering;
+GLEW_VAR_EXPORT GLboolean __GLEW_QCOM_writeonly_rendering;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_ES1_0_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_ES1_1_compatibility;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_enable;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_error_string;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_extension_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_log;
+GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_proc_address;
+GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates;
+GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_clip_band_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_line_texgen;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multitexture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_shared_multisample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_bali_g_instruments;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_bali_r_instruments;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_bali_timer_instruments;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_cadd;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_cmultiply;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_calligraphic_fragment;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_color_matrix_accuracy;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_color_table_index_mode;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_complex_polar;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_cylinder_texgen;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_datapipe;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_decimation;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_pass_instrument;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_dvc;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_blend;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_factor_to_alpha;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_layers;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_patchy;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_scale;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_lighting_space;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragments_instrument;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_icc_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_igloo_interface;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_image_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_impact_pixel_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_instrument_error;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_line_quality_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_mpeg1;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_mpeg2;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_nonlinear_lighting_pervertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_nurbs_eval;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_occlusion_instrument;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_packed_6bytes;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_lod;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_tiles;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_polynomial_ffd;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_quad_mesh;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_scalebias_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_slim;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_spotlight_cutoff;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_subdiv_patch;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_subsample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_mipmap_anisotropic;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_phase;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_supersample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vector_ops;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_array_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb_subsample;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcba;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_complex;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_complex_type;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_fft;
+GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list;
+GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_VIV_shader_binary;
+GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading;
+GLEW_VAR_EXPORT GLboolean __GLEW_WIN_scene_markerXXX;
+GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog;
+GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint;
+/* ------------------------------------------------------------------------- */
+
+/* error codes */
+#define GLEW_OK 0
+#define GLEW_NO_ERROR 0
+#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */
+#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* Need at least OpenGL 1.1 */
+#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* Need at least GLX 1.2 */
+#define GLEW_ERROR_NO_GLX_DISPLAY 4 /* Need GLX display for GLX support */
+
+/* string codes */
+#define GLEW_VERSION 1
+#define GLEW_VERSION_MAJOR 2
+#define GLEW_VERSION_MINOR 3
+#define GLEW_VERSION_MICRO 4
+
+/* ------------------------------------------------------------------------- */
+
+/* GLEW version info */
+
+/*
+VERSION 2.2.0
+VERSION_MAJOR 2
+VERSION_MINOR 2
+VERSION_MICRO 0
+*/
+
+/* API */
+GLEWAPI GLenum GLEWAPIENTRY glewInit (void);
+GLEWAPI GLenum GLEWAPIENTRY glewContextInit (void);
+GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name);
+#define glewIsExtensionSupported(x) glewIsSupported(x)
+
+#ifndef GLEW_GET_VAR
+#define GLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef GLEW_GET_FUN
+#define GLEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean glewExperimental;
+GLEWAPI GLboolean GLEWAPIENTRY glewGetExtension (const char *name);
+GLEWAPI const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error);
+GLEWAPI const GLubyte * GLEWAPIENTRY glewGetString (GLenum name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef GLEW_APIENTRY_DEFINED
+#undef GLEW_APIENTRY_DEFINED
+#undef APIENTRY
+#endif
+
+#ifdef GLEW_CALLBACK_DEFINED
+#undef GLEW_CALLBACK_DEFINED
+#undef CALLBACK
+#endif
+
+#ifdef GLEW_WINGDIAPI_DEFINED
+#undef GLEW_WINGDIAPI_DEFINED
+#undef WINGDIAPI
+#endif
+
+#undef GLAPI
+/* #undef GLEWAPI */
+
+#endif /* __glew_h__ */
diff --git a/glew/include/GL/glxew.h b/glew/include/GL/glxew.h
new file mode 100644
index 0000000..bb3c45b
--- /dev/null
+++ b/glew/include/GL/glxew.h
@@ -0,0 +1,1843 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 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"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#ifndef __glxew_h__
+#define __glxew_h__
+#define __GLXEW_H__
+
+#ifdef __glxext_h_
+#error glxext.h included before glxew.h
+#endif
+
+#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__)
+#error glx.h included before glxew.h
+#endif
+
+#define __glxext_h_
+
+#define GLX_H
+#define __GLX_glx_h__
+#define __glx_h__
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xmd.h>
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ---------------------------- GLX_VERSION_1_0 --------------------------- */
+
+#ifndef GLX_VERSION_1_0
+#define GLX_VERSION_1_0 1
+
+#define GLX_USE_GL 1
+#define GLX_BUFFER_SIZE 2
+#define GLX_LEVEL 3
+#define GLX_RGBA 4
+#define GLX_DOUBLEBUFFER 5
+#define GLX_STEREO 6
+#define GLX_AUX_BUFFERS 7
+#define GLX_RED_SIZE 8
+#define GLX_GREEN_SIZE 9
+#define GLX_BLUE_SIZE 10
+#define GLX_ALPHA_SIZE 11
+#define GLX_DEPTH_SIZE 12
+#define GLX_STENCIL_SIZE 13
+#define GLX_ACCUM_RED_SIZE 14
+#define GLX_ACCUM_GREEN_SIZE 15
+#define GLX_ACCUM_BLUE_SIZE 16
+#define GLX_ACCUM_ALPHA_SIZE 17
+#define GLX_BAD_SCREEN 1
+#define GLX_BAD_ATTRIBUTE 2
+#define GLX_NO_EXTENSION 3
+#define GLX_BAD_VISUAL 4
+#define GLX_BAD_CONTEXT 5
+#define GLX_BAD_VALUE 6
+#define GLX_BAD_ENUM 7
+
+typedef XID GLXDrawable;
+typedef XID GLXPixmap;
+#ifdef __sun
+typedef struct __glXContextRec *GLXContext;
+#else
+typedef struct __GLXcontextRec *GLXContext;
+#endif
+
+typedef unsigned int GLXVideoDeviceNV;
+
+extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase);
+extern Bool glXQueryVersion (Display *dpy, int *major, int *minor);
+extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value);
+extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList);
+extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap);
+extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix);
+extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct);
+extern void glXDestroyContext (Display *dpy, GLXContext ctx);
+extern Bool glXIsDirect (Display *dpy, GLXContext ctx);
+extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask);
+extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx);
+extern GLXContext glXGetCurrentContext (void);
+extern GLXDrawable glXGetCurrentDrawable (void);
+extern void glXWaitGL (void);
+extern void glXWaitX (void);
+extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable);
+extern void glXUseXFont (Font font, int first, int count, int listBase);
+
+#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0)
+
+#endif /* GLX_VERSION_1_0 */
+
+/* ---------------------------- GLX_VERSION_1_1 --------------------------- */
+
+#ifndef GLX_VERSION_1_1
+#define GLX_VERSION_1_1
+
+#define GLX_VENDOR 0x1
+#define GLX_VERSION 0x2
+#define GLX_EXTENSIONS 0x3
+
+extern const char* glXQueryExtensionsString (Display *dpy, int screen);
+extern const char* glXGetClientString (Display *dpy, int name);
+extern const char* glXQueryServerString (Display *dpy, int screen, int name);
+
+#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1)
+
+#endif /* GLX_VERSION_1_1 */
+
+/* ---------------------------- GLX_VERSION_1_2 ---------------------------- */
+
+#ifndef GLX_VERSION_1_2
+#define GLX_VERSION_1_2 1
+
+typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
+
+#define glXGetCurrentDisplay GLXEW_GET_FUN(__glewXGetCurrentDisplay)
+
+#define GLXEW_VERSION_1_2 GLXEW_GET_VAR(__GLXEW_VERSION_1_2)
+
+#endif /* GLX_VERSION_1_2 */
+
+/* ---------------------------- GLX_VERSION_1_3 ---------------------------- */
+
+#ifndef GLX_VERSION_1_3
+#define GLX_VERSION_1_3 1
+
+#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
+#define GLX_RGBA_BIT 0x00000001
+#define GLX_WINDOW_BIT 0x00000001
+#define GLX_COLOR_INDEX_BIT 0x00000002
+#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
+#define GLX_PIXMAP_BIT 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
+#define GLX_PBUFFER_BIT 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
+#define GLX_AUX_BUFFERS_BIT 0x00000010
+#define GLX_CONFIG_CAVEAT 0x20
+#define GLX_DEPTH_BUFFER_BIT 0x00000020
+#define GLX_X_VISUAL_TYPE 0x22
+#define GLX_TRANSPARENT_TYPE 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
+#define GLX_TRANSPARENT_RED_VALUE 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
+#define GLX_STENCIL_BUFFER_BIT 0x00000040
+#define GLX_ACCUM_BUFFER_BIT 0x00000080
+#define GLX_NONE 0x8000
+#define GLX_SLOW_CONFIG 0x8001
+#define GLX_TRUE_COLOR 0x8002
+#define GLX_DIRECT_COLOR 0x8003
+#define GLX_PSEUDO_COLOR 0x8004
+#define GLX_STATIC_COLOR 0x8005
+#define GLX_GRAY_SCALE 0x8006
+#define GLX_STATIC_GRAY 0x8007
+#define GLX_TRANSPARENT_RGB 0x8008
+#define GLX_TRANSPARENT_INDEX 0x8009
+#define GLX_VISUAL_ID 0x800B
+#define GLX_SCREEN 0x800C
+#define GLX_NON_CONFORMANT_CONFIG 0x800D
+#define GLX_DRAWABLE_TYPE 0x8010
+#define GLX_RENDER_TYPE 0x8011
+#define GLX_X_RENDERABLE 0x8012
+#define GLX_FBCONFIG_ID 0x8013
+#define GLX_RGBA_TYPE 0x8014
+#define GLX_COLOR_INDEX_TYPE 0x8015
+#define GLX_MAX_PBUFFER_WIDTH 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT 0x8017
+#define GLX_MAX_PBUFFER_PIXELS 0x8018
+#define GLX_PRESERVED_CONTENTS 0x801B
+#define GLX_LARGEST_PBUFFER 0x801C
+#define GLX_WIDTH 0x801D
+#define GLX_HEIGHT 0x801E
+#define GLX_EVENT_MASK 0x801F
+#define GLX_DAMAGED 0x8020
+#define GLX_SAVED 0x8021
+#define GLX_WINDOW 0x8022
+#define GLX_PBUFFER 0x8023
+#define GLX_PBUFFER_HEIGHT 0x8040
+#define GLX_PBUFFER_WIDTH 0x8041
+#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
+#define GLX_DONT_CARE 0xFFFFFFFF
+
+typedef XID GLXFBConfigID;
+typedef XID GLXPbuffer;
+typedef XID GLXWindow;
+typedef struct __GLXFBConfigRec *GLXFBConfig;
+
+typedef struct {
+ int event_type;
+ int draw_type;
+ unsigned long serial;
+ Bool send_event;
+ Display *display;
+ GLXDrawable drawable;
+ unsigned int buffer_mask;
+ unsigned int aux_buffer;
+ int x, y;
+ int width, height;
+ int count;
+} GLXPbufferClobberEvent;
+typedef union __GLXEvent {
+ GLXPbufferClobberEvent glxpbufferclobber;
+ long pad[24];
+} GLXEvent;
+
+typedef GLXFBConfig* ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
+typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
+typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
+typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
+typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
+typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
+typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
+typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
+typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
+typedef GLXFBConfig* ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
+typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
+typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
+typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
+typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
+typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
+
+#define glXChooseFBConfig GLXEW_GET_FUN(__glewXChooseFBConfig)
+#define glXCreateNewContext GLXEW_GET_FUN(__glewXCreateNewContext)
+#define glXCreatePbuffer GLXEW_GET_FUN(__glewXCreatePbuffer)
+#define glXCreatePixmap GLXEW_GET_FUN(__glewXCreatePixmap)
+#define glXCreateWindow GLXEW_GET_FUN(__glewXCreateWindow)
+#define glXDestroyPbuffer GLXEW_GET_FUN(__glewXDestroyPbuffer)
+#define glXDestroyPixmap GLXEW_GET_FUN(__glewXDestroyPixmap)
+#define glXDestroyWindow GLXEW_GET_FUN(__glewXDestroyWindow)
+#define glXGetCurrentReadDrawable GLXEW_GET_FUN(__glewXGetCurrentReadDrawable)
+#define glXGetFBConfigAttrib GLXEW_GET_FUN(__glewXGetFBConfigAttrib)
+#define glXGetFBConfigs GLXEW_GET_FUN(__glewXGetFBConfigs)
+#define glXGetSelectedEvent GLXEW_GET_FUN(__glewXGetSelectedEvent)
+#define glXGetVisualFromFBConfig GLXEW_GET_FUN(__glewXGetVisualFromFBConfig)
+#define glXMakeContextCurrent GLXEW_GET_FUN(__glewXMakeContextCurrent)
+#define glXQueryContext GLXEW_GET_FUN(__glewXQueryContext)
+#define glXQueryDrawable GLXEW_GET_FUN(__glewXQueryDrawable)
+#define glXSelectEvent GLXEW_GET_FUN(__glewXSelectEvent)
+
+#define GLXEW_VERSION_1_3 GLXEW_GET_VAR(__GLXEW_VERSION_1_3)
+
+#endif /* GLX_VERSION_1_3 */
+
+/* ---------------------------- GLX_VERSION_1_4 ---------------------------- */
+
+#ifndef GLX_VERSION_1_4
+#define GLX_VERSION_1_4 1
+
+#define GLX_SAMPLE_BUFFERS 100000
+#define GLX_SAMPLES 100001
+
+extern void ( * glXGetProcAddress (const GLubyte *procName)) (void);
+
+#define GLXEW_VERSION_1_4 GLXEW_GET_VAR(__GLXEW_VERSION_1_4)
+
+#endif /* GLX_VERSION_1_4 */
+
+/* -------------------------- GLX_3DFX_multisample ------------------------- */
+
+#ifndef GLX_3DFX_multisample
+#define GLX_3DFX_multisample 1
+
+#define GLX_SAMPLE_BUFFERS_3DFX 0x8050
+#define GLX_SAMPLES_3DFX 0x8051
+
+#define GLXEW_3DFX_multisample GLXEW_GET_VAR(__GLXEW_3DFX_multisample)
+
+#endif /* GLX_3DFX_multisample */
+
+/* ------------------------ GLX_AMD_gpu_association ------------------------ */
+
+#ifndef GLX_AMD_gpu_association
+#define GLX_AMD_gpu_association 1
+
+#define GLX_GPU_VENDOR_AMD 0x1F00
+#define GLX_GPU_RENDERER_STRING_AMD 0x1F01
+#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+#define GLX_GPU_RAM_AMD 0x21A3
+#define GLX_GPU_CLOCK_AMD 0x21A4
+#define GLX_GPU_NUM_PIPES_AMD 0x21A5
+#define GLX_GPU_NUM_SIMD_AMD 0x21A6
+#define GLX_GPU_NUM_RB_AMD 0x21A7
+#define GLX_GPU_NUM_SPI_AMD 0x21A8
+
+typedef void ( * PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC) (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC) (unsigned int id, GLXContext share_list);
+typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (unsigned int id, GLXContext share_context, const int* attribList);
+typedef Bool ( * PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC) (GLXContext ctx);
+typedef unsigned int ( * PFNGLXGETCONTEXTGPUIDAMDPROC) (GLXContext ctx);
+typedef GLXContext ( * PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
+typedef unsigned int ( * PFNGLXGETGPUIDSAMDPROC) (unsigned int maxCount, unsigned int* ids);
+typedef int ( * PFNGLXGETGPUINFOAMDPROC) (unsigned int id, int property, GLenum dataType, unsigned int size, void* data);
+typedef Bool ( * PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (GLXContext ctx);
+
+#define glXBlitContextFramebufferAMD GLXEW_GET_FUN(__glewXBlitContextFramebufferAMD)
+#define glXCreateAssociatedContextAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAMD)
+#define glXCreateAssociatedContextAttribsAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAttribsAMD)
+#define glXDeleteAssociatedContextAMD GLXEW_GET_FUN(__glewXDeleteAssociatedContextAMD)
+#define glXGetContextGPUIDAMD GLXEW_GET_FUN(__glewXGetContextGPUIDAMD)
+#define glXGetCurrentAssociatedContextAMD GLXEW_GET_FUN(__glewXGetCurrentAssociatedContextAMD)
+#define glXGetGPUIDsAMD GLXEW_GET_FUN(__glewXGetGPUIDsAMD)
+#define glXGetGPUInfoAMD GLXEW_GET_FUN(__glewXGetGPUInfoAMD)
+#define glXMakeAssociatedContextCurrentAMD GLXEW_GET_FUN(__glewXMakeAssociatedContextCurrentAMD)
+
+#define GLXEW_AMD_gpu_association GLXEW_GET_VAR(__GLXEW_AMD_gpu_association)
+
+#endif /* GLX_AMD_gpu_association */
+
+/* --------------------- GLX_ARB_context_flush_control --------------------- */
+
+#ifndef GLX_ARB_context_flush_control
+#define GLX_ARB_context_flush_control 1
+
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
+
+#define GLXEW_ARB_context_flush_control GLXEW_GET_VAR(__GLXEW_ARB_context_flush_control)
+
+#endif /* GLX_ARB_context_flush_control */
+
+/* ------------------------- GLX_ARB_create_context ------------------------ */
+
+#ifndef GLX_ARB_create_context
+#define GLX_ARB_create_context 1
+
+#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
+#define GLX_CONTEXT_FLAGS_ARB 0x2094
+
+typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int* attrib_list);
+
+#define glXCreateContextAttribsARB GLXEW_GET_FUN(__glewXCreateContextAttribsARB)
+
+#define GLXEW_ARB_create_context GLXEW_GET_VAR(__GLXEW_ARB_create_context)
+
+#endif /* GLX_ARB_create_context */
+
+/* -------------------- GLX_ARB_create_context_no_error -------------------- */
+
+#ifndef GLX_ARB_create_context_no_error
+#define GLX_ARB_create_context_no_error 1
+
+#define GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
+
+#define GLXEW_ARB_create_context_no_error GLXEW_GET_VAR(__GLXEW_ARB_create_context_no_error)
+
+#endif /* GLX_ARB_create_context_no_error */
+
+/* --------------------- GLX_ARB_create_context_profile -------------------- */
+
+#ifndef GLX_ARB_create_context_profile
+#define GLX_ARB_create_context_profile 1
+
+#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
+
+#define GLXEW_ARB_create_context_profile GLXEW_GET_VAR(__GLXEW_ARB_create_context_profile)
+
+#endif /* GLX_ARB_create_context_profile */
+
+/* ------------------- GLX_ARB_create_context_robustness ------------------- */
+
+#ifndef GLX_ARB_create_context_robustness
+#define GLX_ARB_create_context_robustness 1
+
+#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261
+
+#define GLXEW_ARB_create_context_robustness GLXEW_GET_VAR(__GLXEW_ARB_create_context_robustness)
+
+#endif /* GLX_ARB_create_context_robustness */
+
+/* ------------------------- GLX_ARB_fbconfig_float ------------------------ */
+
+#ifndef GLX_ARB_fbconfig_float
+#define GLX_ARB_fbconfig_float 1
+
+#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004
+#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
+
+#define GLXEW_ARB_fbconfig_float GLXEW_GET_VAR(__GLXEW_ARB_fbconfig_float)
+
+#endif /* GLX_ARB_fbconfig_float */
+
+/* ------------------------ GLX_ARB_framebuffer_sRGB ----------------------- */
+
+#ifndef GLX_ARB_framebuffer_sRGB
+#define GLX_ARB_framebuffer_sRGB 1
+
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2
+
+#define GLXEW_ARB_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_ARB_framebuffer_sRGB)
+
+#endif /* GLX_ARB_framebuffer_sRGB */
+
+/* ------------------------ GLX_ARB_get_proc_address ----------------------- */
+
+#ifndef GLX_ARB_get_proc_address
+#define GLX_ARB_get_proc_address 1
+
+extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void);
+
+#define GLXEW_ARB_get_proc_address GLXEW_GET_VAR(__GLXEW_ARB_get_proc_address)
+
+#endif /* GLX_ARB_get_proc_address */
+
+/* -------------------------- GLX_ARB_multisample -------------------------- */
+
+#ifndef GLX_ARB_multisample
+#define GLX_ARB_multisample 1
+
+#define GLX_SAMPLE_BUFFERS_ARB 100000
+#define GLX_SAMPLES_ARB 100001
+
+#define GLXEW_ARB_multisample GLXEW_GET_VAR(__GLXEW_ARB_multisample)
+
+#endif /* GLX_ARB_multisample */
+
+/* ---------------- GLX_ARB_robustness_application_isolation --------------- */
+
+#ifndef GLX_ARB_robustness_application_isolation
+#define GLX_ARB_robustness_application_isolation 1
+
+#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+
+#define GLXEW_ARB_robustness_application_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_application_isolation)
+
+#endif /* GLX_ARB_robustness_application_isolation */
+
+/* ---------------- GLX_ARB_robustness_share_group_isolation --------------- */
+
+#ifndef GLX_ARB_robustness_share_group_isolation
+#define GLX_ARB_robustness_share_group_isolation 1
+
+#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+
+#define GLXEW_ARB_robustness_share_group_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_share_group_isolation)
+
+#endif /* GLX_ARB_robustness_share_group_isolation */
+
+/* ---------------------- GLX_ARB_vertex_buffer_object --------------------- */
+
+#ifndef GLX_ARB_vertex_buffer_object
+#define GLX_ARB_vertex_buffer_object 1
+
+#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
+
+#define GLXEW_ARB_vertex_buffer_object GLXEW_GET_VAR(__GLXEW_ARB_vertex_buffer_object)
+
+#endif /* GLX_ARB_vertex_buffer_object */
+
+/* ----------------------- GLX_ATI_pixel_format_float ---------------------- */
+
+#ifndef GLX_ATI_pixel_format_float
+#define GLX_ATI_pixel_format_float 1
+
+#define GLX_RGBA_FLOAT_ATI_BIT 0x00000100
+
+#define GLXEW_ATI_pixel_format_float GLXEW_GET_VAR(__GLXEW_ATI_pixel_format_float)
+
+#endif /* GLX_ATI_pixel_format_float */
+
+/* ------------------------- GLX_ATI_render_texture ------------------------ */
+
+#ifndef GLX_ATI_render_texture
+#define GLX_ATI_render_texture 1
+
+#define GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800
+#define GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801
+#define GLX_TEXTURE_FORMAT_ATI 0x9802
+#define GLX_TEXTURE_TARGET_ATI 0x9803
+#define GLX_MIPMAP_TEXTURE_ATI 0x9804
+#define GLX_TEXTURE_RGB_ATI 0x9805
+#define GLX_TEXTURE_RGBA_ATI 0x9806
+#define GLX_NO_TEXTURE_ATI 0x9807
+#define GLX_TEXTURE_CUBE_MAP_ATI 0x9808
+#define GLX_TEXTURE_1D_ATI 0x9809
+#define GLX_TEXTURE_2D_ATI 0x980A
+#define GLX_MIPMAP_LEVEL_ATI 0x980B
+#define GLX_CUBE_MAP_FACE_ATI 0x980C
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810
+#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811
+#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812
+#define GLX_FRONT_LEFT_ATI 0x9813
+#define GLX_FRONT_RIGHT_ATI 0x9814
+#define GLX_BACK_LEFT_ATI 0x9815
+#define GLX_BACK_RIGHT_ATI 0x9816
+#define GLX_AUX0_ATI 0x9817
+#define GLX_AUX1_ATI 0x9818
+#define GLX_AUX2_ATI 0x9819
+#define GLX_AUX3_ATI 0x981A
+#define GLX_AUX4_ATI 0x981B
+#define GLX_AUX5_ATI 0x981C
+#define GLX_AUX6_ATI 0x981D
+#define GLX_AUX7_ATI 0x981E
+#define GLX_AUX8_ATI 0x981F
+#define GLX_AUX9_ATI 0x9820
+#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821
+#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822
+
+typedef void ( * PFNGLXBINDTEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer);
+typedef void ( * PFNGLXDRAWABLEATTRIBATIPROC) (Display *dpy, GLXDrawable draw, const int *attrib_list);
+typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer);
+
+#define glXBindTexImageATI GLXEW_GET_FUN(__glewXBindTexImageATI)
+#define glXDrawableAttribATI GLXEW_GET_FUN(__glewXDrawableAttribATI)
+#define glXReleaseTexImageATI GLXEW_GET_FUN(__glewXReleaseTexImageATI)
+
+#define GLXEW_ATI_render_texture GLXEW_GET_VAR(__GLXEW_ATI_render_texture)
+
+#endif /* GLX_ATI_render_texture */
+
+/* --------------------------- GLX_EXT_buffer_age -------------------------- */
+
+#ifndef GLX_EXT_buffer_age
+#define GLX_EXT_buffer_age 1
+
+#define GLX_BACK_BUFFER_AGE_EXT 0x20F4
+
+#define GLXEW_EXT_buffer_age GLXEW_GET_VAR(__GLXEW_EXT_buffer_age)
+
+#endif /* GLX_EXT_buffer_age */
+
+/* ------------------------ GLX_EXT_context_priority ----------------------- */
+
+#ifndef GLX_EXT_context_priority
+#define GLX_EXT_context_priority 1
+
+#define GLX_CONTEXT_PRIORITY_LEVEL_EXT 0x3100
+#define GLX_CONTEXT_PRIORITY_HIGH_EXT 0x3101
+#define GLX_CONTEXT_PRIORITY_MEDIUM_EXT 0x3102
+#define GLX_CONTEXT_PRIORITY_LOW_EXT 0x3103
+
+#define GLXEW_EXT_context_priority GLXEW_GET_VAR(__GLXEW_EXT_context_priority)
+
+#endif /* GLX_EXT_context_priority */
+
+/* ------------------- GLX_EXT_create_context_es2_profile ------------------ */
+
+#ifndef GLX_EXT_create_context_es2_profile
+#define GLX_EXT_create_context_es2_profile 1
+
+#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
+
+#define GLXEW_EXT_create_context_es2_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es2_profile)
+
+#endif /* GLX_EXT_create_context_es2_profile */
+
+/* ------------------- GLX_EXT_create_context_es_profile ------------------- */
+
+#ifndef GLX_EXT_create_context_es_profile
+#define GLX_EXT_create_context_es_profile 1
+
+#define GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
+
+#define GLXEW_EXT_create_context_es_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es_profile)
+
+#endif /* GLX_EXT_create_context_es_profile */
+
+/* --------------------- GLX_EXT_fbconfig_packed_float --------------------- */
+
+#ifndef GLX_EXT_fbconfig_packed_float
+#define GLX_EXT_fbconfig_packed_float 1
+
+#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
+#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
+
+#define GLXEW_EXT_fbconfig_packed_float GLXEW_GET_VAR(__GLXEW_EXT_fbconfig_packed_float)
+
+#endif /* GLX_EXT_fbconfig_packed_float */
+
+/* ------------------------ GLX_EXT_framebuffer_sRGB ----------------------- */
+
+#ifndef GLX_EXT_framebuffer_sRGB
+#define GLX_EXT_framebuffer_sRGB 1
+
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
+
+#define GLXEW_EXT_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_EXT_framebuffer_sRGB)
+
+#endif /* GLX_EXT_framebuffer_sRGB */
+
+/* ----------------------- GLX_EXT_get_drawable_type ----------------------- */
+
+#ifndef GLX_EXT_get_drawable_type
+#define GLX_EXT_get_drawable_type 1
+
+#define GLX_DRAWABLE_TYPE 0x8010
+
+#define GLXEW_EXT_get_drawable_type GLXEW_GET_VAR(__GLXEW_EXT_get_drawable_type)
+
+#endif /* GLX_EXT_get_drawable_type */
+
+/* ------------------------- GLX_EXT_import_context ------------------------ */
+
+#ifndef GLX_EXT_import_context
+#define GLX_EXT_import_context 1
+
+#define GLX_SHARE_CONTEXT_EXT 0x800A
+#define GLX_VISUAL_ID_EXT 0x800B
+#define GLX_SCREEN_EXT 0x800C
+
+typedef XID GLXContextID;
+
+typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display* dpy, GLXContext context);
+typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
+typedef Display* ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void);
+typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display* dpy, GLXContextID contextID);
+typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display* dpy, GLXContext context, int attribute, int* value);
+
+#define glXFreeContextEXT GLXEW_GET_FUN(__glewXFreeContextEXT)
+#define glXGetContextIDEXT GLXEW_GET_FUN(__glewXGetContextIDEXT)
+#define glXGetCurrentDisplayEXT GLXEW_GET_FUN(__glewXGetCurrentDisplayEXT)
+#define glXImportContextEXT GLXEW_GET_FUN(__glewXImportContextEXT)
+#define glXQueryContextInfoEXT GLXEW_GET_FUN(__glewXQueryContextInfoEXT)
+
+#define GLXEW_EXT_import_context GLXEW_GET_VAR(__GLXEW_EXT_import_context)
+
+#endif /* GLX_EXT_import_context */
+
+/* ---------------------------- GLX_EXT_libglvnd --------------------------- */
+
+#ifndef GLX_EXT_libglvnd
+#define GLX_EXT_libglvnd 1
+
+#define GLX_VENDOR_NAMES_EXT 0x20F6
+
+#define GLXEW_EXT_libglvnd GLXEW_GET_VAR(__GLXEW_EXT_libglvnd)
+
+#endif /* GLX_EXT_libglvnd */
+
+/* ----------------------- GLX_EXT_no_config_context ----------------------- */
+
+#ifndef GLX_EXT_no_config_context
+#define GLX_EXT_no_config_context 1
+
+#define GLXEW_EXT_no_config_context GLXEW_GET_VAR(__GLXEW_EXT_no_config_context)
+
+#endif /* GLX_EXT_no_config_context */
+
+/* -------------------------- GLX_EXT_scene_marker ------------------------- */
+
+#ifndef GLX_EXT_scene_marker
+#define GLX_EXT_scene_marker 1
+
+#define GLXEW_EXT_scene_marker GLXEW_GET_VAR(__GLXEW_EXT_scene_marker)
+
+#endif /* GLX_EXT_scene_marker */
+
+/* -------------------------- GLX_EXT_stereo_tree -------------------------- */
+
+#ifndef GLX_EXT_stereo_tree
+#define GLX_EXT_stereo_tree 1
+
+#define GLX_STEREO_NOTIFY_EXT 0x00000000
+#define GLX_STEREO_NOTIFY_MASK_EXT 0x00000001
+#define GLX_STEREO_TREE_EXT 0x20F5
+
+#define GLXEW_EXT_stereo_tree GLXEW_GET_VAR(__GLXEW_EXT_stereo_tree)
+
+#endif /* GLX_EXT_stereo_tree */
+
+/* -------------------------- GLX_EXT_swap_control ------------------------- */
+
+#ifndef GLX_EXT_swap_control
+#define GLX_EXT_swap_control 1
+
+#define GLX_SWAP_INTERVAL_EXT 0x20F1
+#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2
+
+typedef void ( * PFNGLXSWAPINTERVALEXTPROC) (Display* dpy, GLXDrawable drawable, int interval);
+
+#define glXSwapIntervalEXT GLXEW_GET_FUN(__glewXSwapIntervalEXT)
+
+#define GLXEW_EXT_swap_control GLXEW_GET_VAR(__GLXEW_EXT_swap_control)
+
+#endif /* GLX_EXT_swap_control */
+
+/* ----------------------- GLX_EXT_swap_control_tear ----------------------- */
+
+#ifndef GLX_EXT_swap_control_tear
+#define GLX_EXT_swap_control_tear 1
+
+#define GLX_LATE_SWAPS_TEAR_EXT 0x20F3
+
+#define GLXEW_EXT_swap_control_tear GLXEW_GET_VAR(__GLXEW_EXT_swap_control_tear)
+
+#endif /* GLX_EXT_swap_control_tear */
+
+/* ---------------------- GLX_EXT_texture_from_pixmap ---------------------- */
+
+#ifndef GLX_EXT_texture_from_pixmap
+#define GLX_EXT_texture_from_pixmap 1
+
+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+#define GLX_Y_INVERTED_EXT 0x20D4
+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
+#define GLX_TEXTURE_TARGET_EXT 0x20D6
+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+#define GLX_TEXTURE_1D_EXT 0x20DB
+#define GLX_TEXTURE_2D_EXT 0x20DC
+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+#define GLX_FRONT_EXT 0x20DE
+#define GLX_FRONT_LEFT_EXT 0x20DE
+#define GLX_FRONT_RIGHT_EXT 0x20DF
+#define GLX_BACK_EXT 0x20E0
+#define GLX_BACK_LEFT_EXT 0x20E0
+#define GLX_BACK_RIGHT_EXT 0x20E1
+#define GLX_AUX0_EXT 0x20E2
+#define GLX_AUX1_EXT 0x20E3
+#define GLX_AUX2_EXT 0x20E4
+#define GLX_AUX3_EXT 0x20E5
+#define GLX_AUX4_EXT 0x20E6
+#define GLX_AUX5_EXT 0x20E7
+#define GLX_AUX6_EXT 0x20E8
+#define GLX_AUX7_EXT 0x20E9
+#define GLX_AUX8_EXT 0x20EA
+#define GLX_AUX9_EXT 0x20EB
+
+typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display* dpy, GLXDrawable drawable, int buffer, const int* attrib_list);
+typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display* dpy, GLXDrawable drawable, int buffer);
+
+#define glXBindTexImageEXT GLXEW_GET_FUN(__glewXBindTexImageEXT)
+#define glXReleaseTexImageEXT GLXEW_GET_FUN(__glewXReleaseTexImageEXT)
+
+#define GLXEW_EXT_texture_from_pixmap GLXEW_GET_VAR(__GLXEW_EXT_texture_from_pixmap)
+
+#endif /* GLX_EXT_texture_from_pixmap */
+
+/* -------------------------- GLX_EXT_visual_info -------------------------- */
+
+#ifndef GLX_EXT_visual_info
+#define GLX_EXT_visual_info 1
+
+#define GLX_X_VISUAL_TYPE_EXT 0x22
+#define GLX_TRANSPARENT_TYPE_EXT 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
+#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
+#define GLX_NONE_EXT 0x8000
+#define GLX_TRUE_COLOR_EXT 0x8002
+#define GLX_DIRECT_COLOR_EXT 0x8003
+#define GLX_PSEUDO_COLOR_EXT 0x8004
+#define GLX_STATIC_COLOR_EXT 0x8005
+#define GLX_GRAY_SCALE_EXT 0x8006
+#define GLX_STATIC_GRAY_EXT 0x8007
+#define GLX_TRANSPARENT_RGB_EXT 0x8008
+#define GLX_TRANSPARENT_INDEX_EXT 0x8009
+
+#define GLXEW_EXT_visual_info GLXEW_GET_VAR(__GLXEW_EXT_visual_info)
+
+#endif /* GLX_EXT_visual_info */
+
+/* ------------------------- GLX_EXT_visual_rating ------------------------- */
+
+#ifndef GLX_EXT_visual_rating
+#define GLX_EXT_visual_rating 1
+
+#define GLX_VISUAL_CAVEAT_EXT 0x20
+#define GLX_SLOW_VISUAL_EXT 0x8001
+#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
+
+#define GLXEW_EXT_visual_rating GLXEW_GET_VAR(__GLXEW_EXT_visual_rating)
+
+#endif /* GLX_EXT_visual_rating */
+
+/* -------------------------- GLX_INTEL_swap_event ------------------------- */
+
+#ifndef GLX_INTEL_swap_event
+#define GLX_INTEL_swap_event 1
+
+#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180
+#define GLX_COPY_COMPLETE_INTEL 0x8181
+#define GLX_FLIP_COMPLETE_INTEL 0x8182
+#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000
+
+#define GLXEW_INTEL_swap_event GLXEW_GET_VAR(__GLXEW_INTEL_swap_event)
+
+#endif /* GLX_INTEL_swap_event */
+
+/* -------------------------- GLX_MESA_agp_offset -------------------------- */
+
+#ifndef GLX_MESA_agp_offset
+#define GLX_MESA_agp_offset 1
+
+typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void* pointer);
+
+#define glXGetAGPOffsetMESA GLXEW_GET_FUN(__glewXGetAGPOffsetMESA)
+
+#define GLXEW_MESA_agp_offset GLXEW_GET_VAR(__GLXEW_MESA_agp_offset)
+
+#endif /* GLX_MESA_agp_offset */
+
+/* ------------------------ GLX_MESA_copy_sub_buffer ----------------------- */
+
+#ifndef GLX_MESA_copy_sub_buffer
+#define GLX_MESA_copy_sub_buffer 1
+
+typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height);
+
+#define glXCopySubBufferMESA GLXEW_GET_FUN(__glewXCopySubBufferMESA)
+
+#define GLXEW_MESA_copy_sub_buffer GLXEW_GET_VAR(__GLXEW_MESA_copy_sub_buffer)
+
+#endif /* GLX_MESA_copy_sub_buffer */
+
+/* ------------------------ GLX_MESA_pixmap_colormap ----------------------- */
+
+#ifndef GLX_MESA_pixmap_colormap
+#define GLX_MESA_pixmap_colormap 1
+
+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display* dpy, XVisualInfo* visual, Pixmap pixmap, Colormap cmap);
+
+#define glXCreateGLXPixmapMESA GLXEW_GET_FUN(__glewXCreateGLXPixmapMESA)
+
+#define GLXEW_MESA_pixmap_colormap GLXEW_GET_VAR(__GLXEW_MESA_pixmap_colormap)
+
+#endif /* GLX_MESA_pixmap_colormap */
+
+/* ------------------------ GLX_MESA_query_renderer ------------------------ */
+
+#ifndef GLX_MESA_query_renderer
+#define GLX_MESA_query_renderer 1
+
+#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
+#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
+#define GLX_RENDERER_VERSION_MESA 0x8185
+#define GLX_RENDERER_ACCELERATED_MESA 0x8186
+#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
+#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
+#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
+#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
+#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
+#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
+#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
+
+typedef Bool ( * PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int* value);
+typedef const char* ( * PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute);
+typedef Bool ( * PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display* dpy, int screen, int renderer, int attribute, unsigned int* value);
+typedef const char* ( * PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display* dpy, int screen, int renderer, int attribute);
+
+#define glXQueryCurrentRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererIntegerMESA)
+#define glXQueryCurrentRendererStringMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererStringMESA)
+#define glXQueryRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryRendererIntegerMESA)
+#define glXQueryRendererStringMESA GLXEW_GET_FUN(__glewXQueryRendererStringMESA)
+
+#define GLXEW_MESA_query_renderer GLXEW_GET_VAR(__GLXEW_MESA_query_renderer)
+
+#endif /* GLX_MESA_query_renderer */
+
+/* ------------------------ GLX_MESA_release_buffers ----------------------- */
+
+#ifndef GLX_MESA_release_buffers
+#define GLX_MESA_release_buffers 1
+
+typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display* dpy, GLXDrawable drawable);
+
+#define glXReleaseBuffersMESA GLXEW_GET_FUN(__glewXReleaseBuffersMESA)
+
+#define GLXEW_MESA_release_buffers GLXEW_GET_VAR(__GLXEW_MESA_release_buffers)
+
+#endif /* GLX_MESA_release_buffers */
+
+/* ------------------------- GLX_MESA_set_3dfx_mode ------------------------ */
+
+#ifndef GLX_MESA_set_3dfx_mode
+#define GLX_MESA_set_3dfx_mode 1
+
+#define GLX_3DFX_WINDOW_MODE_MESA 0x1
+#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
+
+typedef GLboolean ( * PFNGLXSET3DFXMODEMESAPROC) (GLint mode);
+
+#define glXSet3DfxModeMESA GLXEW_GET_FUN(__glewXSet3DfxModeMESA)
+
+#define GLXEW_MESA_set_3dfx_mode GLXEW_GET_VAR(__GLXEW_MESA_set_3dfx_mode)
+
+#endif /* GLX_MESA_set_3dfx_mode */
+
+/* ------------------------- GLX_MESA_swap_control ------------------------- */
+
+#ifndef GLX_MESA_swap_control
+#define GLX_MESA_swap_control 1
+
+typedef int ( * PFNGLXGETSWAPINTERVALMESAPROC) (void);
+typedef int ( * PFNGLXSWAPINTERVALMESAPROC) (unsigned int interval);
+
+#define glXGetSwapIntervalMESA GLXEW_GET_FUN(__glewXGetSwapIntervalMESA)
+#define glXSwapIntervalMESA GLXEW_GET_FUN(__glewXSwapIntervalMESA)
+
+#define GLXEW_MESA_swap_control GLXEW_GET_VAR(__GLXEW_MESA_swap_control)
+
+#endif /* GLX_MESA_swap_control */
+
+/* --------------------------- GLX_NV_copy_buffer -------------------------- */
+
+#ifndef GLX_NV_copy_buffer
+#define GLX_NV_copy_buffer 1
+
+typedef void ( * PFNGLXCOPYBUFFERSUBDATANVPROC) (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void ( * PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC) (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+#define glXCopyBufferSubDataNV GLXEW_GET_FUN(__glewXCopyBufferSubDataNV)
+#define glXNamedCopyBufferSubDataNV GLXEW_GET_FUN(__glewXNamedCopyBufferSubDataNV)
+
+#define GLXEW_NV_copy_buffer GLXEW_GET_VAR(__GLXEW_NV_copy_buffer)
+
+#endif /* GLX_NV_copy_buffer */
+
+/* --------------------------- GLX_NV_copy_image --------------------------- */
+
+#ifndef GLX_NV_copy_image
+#define GLX_NV_copy_image 1
+
+typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+#define glXCopyImageSubDataNV GLXEW_GET_FUN(__glewXCopyImageSubDataNV)
+
+#define GLXEW_NV_copy_image GLXEW_GET_VAR(__GLXEW_NV_copy_image)
+
+#endif /* GLX_NV_copy_image */
+
+/* ------------------------ GLX_NV_delay_before_swap ----------------------- */
+
+#ifndef GLX_NV_delay_before_swap
+#define GLX_NV_delay_before_swap 1
+
+typedef Bool ( * PFNGLXDELAYBEFORESWAPNVPROC) (Display* dpy, GLXDrawable drawable, GLfloat seconds);
+
+#define glXDelayBeforeSwapNV GLXEW_GET_FUN(__glewXDelayBeforeSwapNV)
+
+#define GLXEW_NV_delay_before_swap GLXEW_GET_VAR(__GLXEW_NV_delay_before_swap)
+
+#endif /* GLX_NV_delay_before_swap */
+
+/* -------------------------- GLX_NV_float_buffer -------------------------- */
+
+#ifndef GLX_NV_float_buffer
+#define GLX_NV_float_buffer 1
+
+#define GLX_FLOAT_COMPONENTS_NV 0x20B0
+
+#define GLXEW_NV_float_buffer GLXEW_GET_VAR(__GLXEW_NV_float_buffer)
+
+#endif /* GLX_NV_float_buffer */
+
+/* ------------------------ GLX_NV_multigpu_context ------------------------ */
+
+#ifndef GLX_NV_multigpu_context
+#define GLX_NV_multigpu_context 1
+
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
+
+#define GLXEW_NV_multigpu_context GLXEW_GET_VAR(__GLXEW_NV_multigpu_context)
+
+#endif /* GLX_NV_multigpu_context */
+
+/* ---------------------- GLX_NV_multisample_coverage ---------------------- */
+
+#ifndef GLX_NV_multisample_coverage
+#define GLX_NV_multisample_coverage 1
+
+#define GLX_COLOR_SAMPLES_NV 0x20B3
+#define GLX_COVERAGE_SAMPLES_NV 100001
+
+#define GLXEW_NV_multisample_coverage GLXEW_GET_VAR(__GLXEW_NV_multisample_coverage)
+
+#endif /* GLX_NV_multisample_coverage */
+
+/* -------------------------- GLX_NV_present_video ------------------------- */
+
+#ifndef GLX_NV_present_video
+#define GLX_NV_present_video 1
+
+#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0
+
+typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display* dpy, unsigned int video_slot, unsigned int video_device, const int* attrib_list);
+typedef unsigned int* ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display* dpy, int screen, int* nelements);
+
+#define glXBindVideoDeviceNV GLXEW_GET_FUN(__glewXBindVideoDeviceNV)
+#define glXEnumerateVideoDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoDevicesNV)
+
+#define GLXEW_NV_present_video GLXEW_GET_VAR(__GLXEW_NV_present_video)
+
+#endif /* GLX_NV_present_video */
+
+/* ------------------ GLX_NV_robustness_video_memory_purge ----------------- */
+
+#ifndef GLX_NV_robustness_video_memory_purge
+#define GLX_NV_robustness_video_memory_purge 1
+
+#define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
+
+#define GLXEW_NV_robustness_video_memory_purge GLXEW_GET_VAR(__GLXEW_NV_robustness_video_memory_purge)
+
+#endif /* GLX_NV_robustness_video_memory_purge */
+
+/* --------------------------- GLX_NV_swap_group --------------------------- */
+
+#ifndef GLX_NV_swap_group
+#define GLX_NV_swap_group 1
+
+typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display* dpy, GLuint group, GLuint barrier);
+typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint group);
+typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display* dpy, int screen, GLuint* count);
+typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display* dpy, int screen, GLuint* maxGroups, GLuint* maxBarriers);
+typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint* group, GLuint* barrier);
+typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display* dpy, int screen);
+
+#define glXBindSwapBarrierNV GLXEW_GET_FUN(__glewXBindSwapBarrierNV)
+#define glXJoinSwapGroupNV GLXEW_GET_FUN(__glewXJoinSwapGroupNV)
+#define glXQueryFrameCountNV GLXEW_GET_FUN(__glewXQueryFrameCountNV)
+#define glXQueryMaxSwapGroupsNV GLXEW_GET_FUN(__glewXQueryMaxSwapGroupsNV)
+#define glXQuerySwapGroupNV GLXEW_GET_FUN(__glewXQuerySwapGroupNV)
+#define glXResetFrameCountNV GLXEW_GET_FUN(__glewXResetFrameCountNV)
+
+#define GLXEW_NV_swap_group GLXEW_GET_VAR(__GLXEW_NV_swap_group)
+
+#endif /* GLX_NV_swap_group */
+
+/* ----------------------- GLX_NV_vertex_array_range ----------------------- */
+
+#ifndef GLX_NV_vertex_array_range
+#define GLX_NV_vertex_array_range 1
+
+typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority);
+typedef void ( * PFNGLXFREEMEMORYNVPROC) (void *pointer);
+
+#define glXAllocateMemoryNV GLXEW_GET_FUN(__glewXAllocateMemoryNV)
+#define glXFreeMemoryNV GLXEW_GET_FUN(__glewXFreeMemoryNV)
+
+#define GLXEW_NV_vertex_array_range GLXEW_GET_VAR(__GLXEW_NV_vertex_array_range)
+
+#endif /* GLX_NV_vertex_array_range */
+
+/* -------------------------- GLX_NV_video_capture ------------------------- */
+
+#ifndef GLX_NV_video_capture
+#define GLX_NV_video_capture 1
+
+#define GLX_DEVICE_ID_NV 0x20CD
+#define GLX_UNIQUE_ID_NV 0x20CE
+#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+
+typedef XID GLXVideoCaptureDeviceNV;
+
+typedef int ( * PFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
+typedef GLXVideoCaptureDeviceNV* ( * PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display* dpy, int screen, int* nelements);
+typedef void ( * PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device);
+typedef int ( * PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int* value);
+typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device);
+
+#define glXBindVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXBindVideoCaptureDeviceNV)
+#define glXEnumerateVideoCaptureDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoCaptureDevicesNV)
+#define glXLockVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXLockVideoCaptureDeviceNV)
+#define glXQueryVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXQueryVideoCaptureDeviceNV)
+#define glXReleaseVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoCaptureDeviceNV)
+
+#define GLXEW_NV_video_capture GLXEW_GET_VAR(__GLXEW_NV_video_capture)
+
+#endif /* GLX_NV_video_capture */
+
+/* ---------------------------- GLX_NV_video_out --------------------------- */
+
+#ifndef GLX_NV_video_out
+#define GLX_NV_video_out 1
+
+#define GLX_VIDEO_OUT_COLOR_NV 0x20C3
+#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4
+#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5
+#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+#define GLX_VIDEO_OUT_FRAME_NV 0x20C8
+#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9
+#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA
+#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB
+#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC
+
+typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer);
+typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV* pVideoDevice);
+typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo);
+typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice);
+typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display* dpy, GLXPbuffer pbuf);
+typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long* pulCounterPbuffer, GLboolean bBlock);
+
+#define glXBindVideoImageNV GLXEW_GET_FUN(__glewXBindVideoImageNV)
+#define glXGetVideoDeviceNV GLXEW_GET_FUN(__glewXGetVideoDeviceNV)
+#define glXGetVideoInfoNV GLXEW_GET_FUN(__glewXGetVideoInfoNV)
+#define glXReleaseVideoDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoDeviceNV)
+#define glXReleaseVideoImageNV GLXEW_GET_FUN(__glewXReleaseVideoImageNV)
+#define glXSendPbufferToVideoNV GLXEW_GET_FUN(__glewXSendPbufferToVideoNV)
+
+#define GLXEW_NV_video_out GLXEW_GET_VAR(__GLXEW_NV_video_out)
+
+#endif /* GLX_NV_video_out */
+
+/* -------------------------- GLX_OML_swap_method -------------------------- */
+
+#ifndef GLX_OML_swap_method
+#define GLX_OML_swap_method 1
+
+#define GLX_SWAP_METHOD_OML 0x8060
+#define GLX_SWAP_EXCHANGE_OML 0x8061
+#define GLX_SWAP_COPY_OML 0x8062
+#define GLX_SWAP_UNDEFINED_OML 0x8063
+
+#define GLXEW_OML_swap_method GLXEW_GET_VAR(__GLXEW_OML_swap_method)
+
+#endif /* GLX_OML_swap_method */
+
+/* -------------------------- GLX_OML_sync_control ------------------------- */
+
+#ifndef GLX_OML_sync_control
+#define GLX_OML_sync_control 1
+
+typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator);
+typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc);
+typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
+typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc);
+typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc);
+
+#define glXGetMscRateOML GLXEW_GET_FUN(__glewXGetMscRateOML)
+#define glXGetSyncValuesOML GLXEW_GET_FUN(__glewXGetSyncValuesOML)
+#define glXSwapBuffersMscOML GLXEW_GET_FUN(__glewXSwapBuffersMscOML)
+#define glXWaitForMscOML GLXEW_GET_FUN(__glewXWaitForMscOML)
+#define glXWaitForSbcOML GLXEW_GET_FUN(__glewXWaitForSbcOML)
+
+#define GLXEW_OML_sync_control GLXEW_GET_VAR(__GLXEW_OML_sync_control)
+
+#endif /* GLX_OML_sync_control */
+
+/* ------------------------ GLX_SGIS_blended_overlay ----------------------- */
+
+#ifndef GLX_SGIS_blended_overlay
+#define GLX_SGIS_blended_overlay 1
+
+#define GLX_BLENDED_RGBA_SGIS 0x8025
+
+#define GLXEW_SGIS_blended_overlay GLXEW_GET_VAR(__GLXEW_SGIS_blended_overlay)
+
+#endif /* GLX_SGIS_blended_overlay */
+
+/* -------------------------- GLX_SGIS_color_range ------------------------- */
+
+#ifndef GLX_SGIS_color_range
+#define GLX_SGIS_color_range 1
+
+#define GLXEW_SGIS_color_range GLXEW_GET_VAR(__GLXEW_SGIS_color_range)
+
+#endif /* GLX_SGIS_color_range */
+
+/* -------------------------- GLX_SGIS_multisample ------------------------- */
+
+#ifndef GLX_SGIS_multisample
+#define GLX_SGIS_multisample 1
+
+#define GLX_SAMPLE_BUFFERS_SGIS 100000
+#define GLX_SAMPLES_SGIS 100001
+
+#define GLXEW_SGIS_multisample GLXEW_GET_VAR(__GLXEW_SGIS_multisample)
+
+#endif /* GLX_SGIS_multisample */
+
+/* ---------------------- GLX_SGIS_shared_multisample ---------------------- */
+
+#ifndef GLX_SGIS_shared_multisample
+#define GLX_SGIS_shared_multisample 1
+
+#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
+#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
+
+#define GLXEW_SGIS_shared_multisample GLXEW_GET_VAR(__GLXEW_SGIS_shared_multisample)
+
+#endif /* GLX_SGIS_shared_multisample */
+
+/* --------------------------- GLX_SGIX_fbconfig --------------------------- */
+
+#ifndef GLX_SGIX_fbconfig
+#define GLX_SGIX_fbconfig 1
+
+#define GLX_RGBA_BIT_SGIX 0x00000001
+#define GLX_WINDOW_BIT_SGIX 0x00000001
+#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
+#define GLX_PIXMAP_BIT_SGIX 0x00000002
+#define GLX_SCREEN_EXT 0x800C
+#define GLX_DRAWABLE_TYPE_SGIX 0x8010
+#define GLX_RENDER_TYPE_SGIX 0x8011
+#define GLX_X_RENDERABLE_SGIX 0x8012
+#define GLX_FBCONFIG_ID_SGIX 0x8013
+#define GLX_RGBA_TYPE_SGIX 0x8014
+#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015
+
+typedef XID GLXFBConfigIDSGIX;
+typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+
+typedef GLXFBConfigSGIX* ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display* dpy, int screen, int* attrib_list, int* nelements);
+typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
+typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, Pixmap pixmap);
+typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int attribute, int* value);
+typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display* dpy, XVisualInfo* vis);
+typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display* dpy, GLXFBConfigSGIX config);
+
+#define glXChooseFBConfigSGIX GLXEW_GET_FUN(__glewXChooseFBConfigSGIX)
+#define glXCreateContextWithConfigSGIX GLXEW_GET_FUN(__glewXCreateContextWithConfigSGIX)
+#define glXCreateGLXPixmapWithConfigSGIX GLXEW_GET_FUN(__glewXCreateGLXPixmapWithConfigSGIX)
+#define glXGetFBConfigAttribSGIX GLXEW_GET_FUN(__glewXGetFBConfigAttribSGIX)
+#define glXGetFBConfigFromVisualSGIX GLXEW_GET_FUN(__glewXGetFBConfigFromVisualSGIX)
+#define glXGetVisualFromFBConfigSGIX GLXEW_GET_FUN(__glewXGetVisualFromFBConfigSGIX)
+
+#define GLXEW_SGIX_fbconfig GLXEW_GET_VAR(__GLXEW_SGIX_fbconfig)
+
+#endif /* GLX_SGIX_fbconfig */
+
+/* --------------------------- GLX_SGIX_hyperpipe -------------------------- */
+
+#ifndef GLX_SGIX_hyperpipe
+#define GLX_SGIX_hyperpipe 1
+
+#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
+#define GLX_PIPE_RECT_SGIX 0x00000001
+#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
+#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
+#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
+#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
+#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
+#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
+#define GLX_BAD_HYPERPIPE_SGIX 92
+#define GLX_HYPERPIPE_ID_SGIX 0x8030
+
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int networkId;
+} GLXHyperpipeNetworkSGIX;
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int XOrigin;
+ int YOrigin;
+ int maxHeight;
+ int maxWidth;
+} GLXPipeRectLimits;
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int channel;
+ unsigned int participationType;
+ int timeSlice;
+} GLXHyperpipeConfigSGIX;
+typedef struct {
+ char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+ int srcXOrigin;
+ int srcYOrigin;
+ int srcWidth;
+ int srcHeight;
+ int destXOrigin;
+ int destYOrigin;
+ int destWidth;
+ int destHeight;
+} GLXPipeRect;
+
+typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId);
+typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId);
+typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList);
+typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId);
+typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList);
+typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList);
+typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes);
+typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes);
+
+#define glXBindHyperpipeSGIX GLXEW_GET_FUN(__glewXBindHyperpipeSGIX)
+#define glXDestroyHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXDestroyHyperpipeConfigSGIX)
+#define glXHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXHyperpipeAttribSGIX)
+#define glXHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXHyperpipeConfigSGIX)
+#define glXQueryHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeAttribSGIX)
+#define glXQueryHyperpipeBestAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeBestAttribSGIX)
+#define glXQueryHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeConfigSGIX)
+#define glXQueryHyperpipeNetworkSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeNetworkSGIX)
+
+#define GLXEW_SGIX_hyperpipe GLXEW_GET_VAR(__GLXEW_SGIX_hyperpipe)
+
+#endif /* GLX_SGIX_hyperpipe */
+
+/* ---------------------------- GLX_SGIX_pbuffer --------------------------- */
+
+#ifndef GLX_SGIX_pbuffer
+#define GLX_SGIX_pbuffer 1
+
+#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
+#define GLX_PBUFFER_BIT_SGIX 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
+#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
+#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
+#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
+#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
+#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
+#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
+#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
+#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
+#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
+#define GLX_PRESERVED_CONTENTS_SGIX 0x801B
+#define GLX_LARGEST_PBUFFER_SGIX 0x801C
+#define GLX_WIDTH_SGIX 0x801D
+#define GLX_HEIGHT_SGIX 0x801E
+#define GLX_EVENT_MASK_SGIX 0x801F
+#define GLX_DAMAGED_SGIX 0x8020
+#define GLX_SAVED_SGIX 0x8021
+#define GLX_WINDOW_SGIX 0x8022
+#define GLX_PBUFFER_SGIX 0x8023
+#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
+
+typedef XID GLXPbufferSGIX;
+typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX;
+
+typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int* attrib_list);
+typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbufferSGIX pbuf);
+typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long* mask);
+typedef void ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int* value);
+typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long mask);
+
+#define glXCreateGLXPbufferSGIX GLXEW_GET_FUN(__glewXCreateGLXPbufferSGIX)
+#define glXDestroyGLXPbufferSGIX GLXEW_GET_FUN(__glewXDestroyGLXPbufferSGIX)
+#define glXGetSelectedEventSGIX GLXEW_GET_FUN(__glewXGetSelectedEventSGIX)
+#define glXQueryGLXPbufferSGIX GLXEW_GET_FUN(__glewXQueryGLXPbufferSGIX)
+#define glXSelectEventSGIX GLXEW_GET_FUN(__glewXSelectEventSGIX)
+
+#define GLXEW_SGIX_pbuffer GLXEW_GET_VAR(__GLXEW_SGIX_pbuffer)
+
+#endif /* GLX_SGIX_pbuffer */
+
+/* ------------------------- GLX_SGIX_swap_barrier ------------------------- */
+
+#ifndef GLX_SGIX_swap_barrier
+#define GLX_SGIX_swap_barrier 1
+
+typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display* dpy, GLXDrawable drawable, int barrier);
+typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display* dpy, int screen, int* max);
+
+#define glXBindSwapBarrierSGIX GLXEW_GET_FUN(__glewXBindSwapBarrierSGIX)
+#define glXQueryMaxSwapBarriersSGIX GLXEW_GET_FUN(__glewXQueryMaxSwapBarriersSGIX)
+
+#define GLXEW_SGIX_swap_barrier GLXEW_GET_VAR(__GLXEW_SGIX_swap_barrier)
+
+#endif /* GLX_SGIX_swap_barrier */
+
+/* -------------------------- GLX_SGIX_swap_group -------------------------- */
+
+#ifndef GLX_SGIX_swap_group
+#define GLX_SGIX_swap_group 1
+
+typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display* dpy, GLXDrawable drawable, GLXDrawable member);
+
+#define glXJoinSwapGroupSGIX GLXEW_GET_FUN(__glewXJoinSwapGroupSGIX)
+
+#define GLXEW_SGIX_swap_group GLXEW_GET_VAR(__GLXEW_SGIX_swap_group)
+
+#endif /* GLX_SGIX_swap_group */
+
+/* ------------------------- GLX_SGIX_video_resize ------------------------- */
+
+#ifndef GLX_SGIX_video_resize
+#define GLX_SGIX_video_resize 1
+
+#define GLX_SYNC_FRAME_SGIX 0x00000000
+#define GLX_SYNC_SWAP_SGIX 0x00000001
+
+typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display* display, int screen, int channel, Window window);
+typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int x, int y, int w, int h);
+typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display* display, int screen, int channel, GLenum synctype);
+typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display* display, int screen, int channel, int* x, int* y, int* w, int* h);
+typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int* dx, int* dy, int* dw, int* dh);
+
+#define glXBindChannelToWindowSGIX GLXEW_GET_FUN(__glewXBindChannelToWindowSGIX)
+#define glXChannelRectSGIX GLXEW_GET_FUN(__glewXChannelRectSGIX)
+#define glXChannelRectSyncSGIX GLXEW_GET_FUN(__glewXChannelRectSyncSGIX)
+#define glXQueryChannelDeltasSGIX GLXEW_GET_FUN(__glewXQueryChannelDeltasSGIX)
+#define glXQueryChannelRectSGIX GLXEW_GET_FUN(__glewXQueryChannelRectSGIX)
+
+#define GLXEW_SGIX_video_resize GLXEW_GET_VAR(__GLXEW_SGIX_video_resize)
+
+#endif /* GLX_SGIX_video_resize */
+
+/* ---------------------- GLX_SGIX_visual_select_group --------------------- */
+
+#ifndef GLX_SGIX_visual_select_group
+#define GLX_SGIX_visual_select_group 1
+
+#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
+
+#define GLXEW_SGIX_visual_select_group GLXEW_GET_VAR(__GLXEW_SGIX_visual_select_group)
+
+#endif /* GLX_SGIX_visual_select_group */
+
+/* ---------------------------- GLX_SGI_cushion ---------------------------- */
+
+#ifndef GLX_SGI_cushion
+#define GLX_SGI_cushion 1
+
+typedef void ( * PFNGLXCUSHIONSGIPROC) (Display* dpy, Window window, float cushion);
+
+#define glXCushionSGI GLXEW_GET_FUN(__glewXCushionSGI)
+
+#define GLXEW_SGI_cushion GLXEW_GET_VAR(__GLXEW_SGI_cushion)
+
+#endif /* GLX_SGI_cushion */
+
+/* ----------------------- GLX_SGI_make_current_read ----------------------- */
+
+#ifndef GLX_SGI_make_current_read
+#define GLX_SGI_make_current_read 1
+
+typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void);
+typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+
+#define glXGetCurrentReadDrawableSGI GLXEW_GET_FUN(__glewXGetCurrentReadDrawableSGI)
+#define glXMakeCurrentReadSGI GLXEW_GET_FUN(__glewXMakeCurrentReadSGI)
+
+#define GLXEW_SGI_make_current_read GLXEW_GET_VAR(__GLXEW_SGI_make_current_read)
+
+#endif /* GLX_SGI_make_current_read */
+
+/* -------------------------- GLX_SGI_swap_control ------------------------- */
+
+#ifndef GLX_SGI_swap_control
+#define GLX_SGI_swap_control 1
+
+typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
+
+#define glXSwapIntervalSGI GLXEW_GET_FUN(__glewXSwapIntervalSGI)
+
+#define GLXEW_SGI_swap_control GLXEW_GET_VAR(__GLXEW_SGI_swap_control)
+
+#endif /* GLX_SGI_swap_control */
+
+/* --------------------------- GLX_SGI_video_sync -------------------------- */
+
+#ifndef GLX_SGI_video_sync
+#define GLX_SGI_video_sync 1
+
+typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int* count);
+typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int* count);
+
+#define glXGetVideoSyncSGI GLXEW_GET_FUN(__glewXGetVideoSyncSGI)
+#define glXWaitVideoSyncSGI GLXEW_GET_FUN(__glewXWaitVideoSyncSGI)
+
+#define GLXEW_SGI_video_sync GLXEW_GET_VAR(__GLXEW_SGI_video_sync)
+
+#endif /* GLX_SGI_video_sync */
+
+/* --------------------- GLX_SUN_get_transparent_index --------------------- */
+
+#ifndef GLX_SUN_get_transparent_index
+#define GLX_SUN_get_transparent_index 1
+
+typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display* dpy, Window overlay, Window underlay, unsigned long* pTransparentIndex);
+
+#define glXGetTransparentIndexSUN GLXEW_GET_FUN(__glewXGetTransparentIndexSUN)
+
+#define GLXEW_SUN_get_transparent_index GLXEW_GET_VAR(__GLXEW_SUN_get_transparent_index)
+
+#endif /* GLX_SUN_get_transparent_index */
+
+/* -------------------------- GLX_SUN_video_resize ------------------------- */
+
+#ifndef GLX_SUN_video_resize
+#define GLX_SUN_video_resize 1
+
+#define GLX_VIDEO_RESIZE_SUN 0x8171
+#define GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD
+
+typedef int ( * PFNGLXGETVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float* factor);
+typedef int ( * PFNGLXVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float factor);
+
+#define glXGetVideoResizeSUN GLXEW_GET_FUN(__glewXGetVideoResizeSUN)
+#define glXVideoResizeSUN GLXEW_GET_FUN(__glewXVideoResizeSUN)
+
+#define GLXEW_SUN_video_resize GLXEW_GET_VAR(__GLXEW_SUN_video_resize)
+
+#endif /* GLX_SUN_video_resize */
+
+/* ------------------------------------------------------------------------- */
+
+#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define GLXEW_VAR_EXPORT GLEW_VAR_EXPORT
+
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay;
+
+GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig;
+GLXEW_FUN_EXPORT PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext;
+GLXEW_FUN_EXPORT PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer;
+GLXEW_FUN_EXPORT PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap;
+GLXEW_FUN_EXPORT PFNGLXCREATEWINDOWPROC __glewXCreateWindow;
+GLXEW_FUN_EXPORT PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer;
+GLXEW_FUN_EXPORT PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap;
+GLXEW_FUN_EXPORT PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow;
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable;
+GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib;
+GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs;
+GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent;
+GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig;
+GLXEW_FUN_EXPORT PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent;
+GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTPROC __glewXQueryContext;
+GLXEW_FUN_EXPORT PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable;
+GLXEW_FUN_EXPORT PFNGLXSELECTEVENTPROC __glewXSelectEvent;
+
+GLXEW_FUN_EXPORT PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC __glewXBlitContextFramebufferAMD;
+GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC __glewXCreateAssociatedContextAMD;
+GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __glewXCreateAssociatedContextAttribsAMD;
+GLXEW_FUN_EXPORT PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC __glewXDeleteAssociatedContextAMD;
+GLXEW_FUN_EXPORT PFNGLXGETCONTEXTGPUIDAMDPROC __glewXGetContextGPUIDAMD;
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC __glewXGetCurrentAssociatedContextAMD;
+GLXEW_FUN_EXPORT PFNGLXGETGPUIDSAMDPROC __glewXGetGPUIDsAMD;
+GLXEW_FUN_EXPORT PFNGLXGETGPUINFOAMDPROC __glewXGetGPUInfoAMD;
+GLXEW_FUN_EXPORT PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __glewXMakeAssociatedContextCurrentAMD;
+
+GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB;
+
+GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI;
+GLXEW_FUN_EXPORT PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI;
+GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI;
+
+GLXEW_FUN_EXPORT PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT;
+GLXEW_FUN_EXPORT PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT;
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTDISPLAYEXTPROC __glewXGetCurrentDisplayEXT;
+GLXEW_FUN_EXPORT PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT;
+GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT;
+
+GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT;
+
+GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT;
+GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT;
+
+GLXEW_FUN_EXPORT PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA;
+
+GLXEW_FUN_EXPORT PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA;
+
+GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA;
+
+GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC __glewXQueryCurrentRendererIntegerMESA;
+GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC __glewXQueryCurrentRendererStringMESA;
+GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERINTEGERMESAPROC __glewXQueryRendererIntegerMESA;
+GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERSTRINGMESAPROC __glewXQueryRendererStringMESA;
+
+GLXEW_FUN_EXPORT PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA;
+
+GLXEW_FUN_EXPORT PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA;
+
+GLXEW_FUN_EXPORT PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA;
+GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA;
+
+GLXEW_FUN_EXPORT PFNGLXCOPYBUFFERSUBDATANVPROC __glewXCopyBufferSubDataNV;
+GLXEW_FUN_EXPORT PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC __glewXNamedCopyBufferSubDataNV;
+
+GLXEW_FUN_EXPORT PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV;
+
+GLXEW_FUN_EXPORT PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV;
+
+GLXEW_FUN_EXPORT PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV;
+
+GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV;
+GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV;
+GLXEW_FUN_EXPORT PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV;
+GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV;
+GLXEW_FUN_EXPORT PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV;
+GLXEW_FUN_EXPORT PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV;
+
+GLXEW_FUN_EXPORT PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV;
+GLXEW_FUN_EXPORT PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV;
+
+GLXEW_FUN_EXPORT PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV;
+GLXEW_FUN_EXPORT PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV;
+
+GLXEW_FUN_EXPORT PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV;
+GLXEW_FUN_EXPORT PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV;
+GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV;
+GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV;
+GLXEW_FUN_EXPORT PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV;
+
+GLXEW_FUN_EXPORT PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML;
+GLXEW_FUN_EXPORT PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML;
+GLXEW_FUN_EXPORT PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML;
+GLXEW_FUN_EXPORT PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML;
+GLXEW_FUN_EXPORT PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML;
+
+GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX;
+GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX;
+GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX;
+GLXEW_FUN_EXPORT PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX;
+GLXEW_FUN_EXPORT PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX;
+GLXEW_FUN_EXPORT PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX;
+GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX;
+GLXEW_FUN_EXPORT PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX;
+GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX;
+GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX;
+GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX;
+
+GLXEW_FUN_EXPORT PFNGLXCUSHIONSGIPROC __glewXCushionSGI;
+
+GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI;
+GLXEW_FUN_EXPORT PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI;
+
+GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI;
+
+GLXEW_FUN_EXPORT PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI;
+GLXEW_FUN_EXPORT PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI;
+
+GLXEW_FUN_EXPORT PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN;
+
+GLXEW_FUN_EXPORT PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN;
+GLXEW_FUN_EXPORT PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_0;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_1;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_2;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_3;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_4;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_3DFX_multisample;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_AMD_gpu_association;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_context_flush_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_no_error;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_profile;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_robustness;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_fbconfig_float;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_get_proc_address;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_multisample;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_application_isolation;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_share_group_isolation;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_pixel_format_float;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_render_texture;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_buffer_age;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_context_priority;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es2_profile;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es_profile;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_get_drawable_type;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_import_context;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_libglvnd;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_no_config_context;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_scene_marker;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_stereo_tree;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control_tear;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_info;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_rating;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_INTEL_swap_event;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_agp_offset;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_query_renderer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_release_buffers;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_swap_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_buffer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_image;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_delay_before_swap;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_float_buffer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multigpu_context;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multisample_coverage;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_present_video;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_robustness_video_memory_purge;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_swap_group;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_vertex_array_range;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_capture;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_out;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_swap_method;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_sync_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_blended_overlay;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_color_range;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_multisample;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_shared_multisample;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_fbconfig;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_hyperpipe;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_pbuffer;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_barrier;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_group;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_video_resize;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_visual_select_group;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_cushion;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_make_current_read;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_swap_control;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_video_sync;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_get_transparent_index;
+GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_video_resize;
+/* ------------------------------------------------------------------------ */
+
+GLEWAPI GLenum GLEWAPIENTRY glxewInit ();
+GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name);
+
+#ifndef GLXEW_GET_VAR
+#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef GLXEW_GET_FUN
+#define GLXEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __glxew_h__ */
diff --git a/glew/include/GL/wglew.h b/glew/include/GL/wglew.h
new file mode 100644
index 0000000..7e2d090
--- /dev/null
+++ b/glew/include/GL/wglew.h
@@ -0,0 +1,1468 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+** Copyright (c) 2007 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#ifndef __wglew_h__
+#define __wglew_h__
+#define __WGLEW_H__
+
+#ifdef __wglext_h_
+#error wglext.h included before wglew.h
+#endif
+
+#define __wglext_h_
+
+#if !defined(WINAPI)
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN 1
+# endif
+#include <windows.h>
+# undef WIN32_LEAN_AND_MEAN
+#endif
+
+/*
+ * GLEW_STATIC needs to be set when using the static version.
+ * GLEW_BUILD is set when building the DLL version.
+ */
+#ifdef GLEW_STATIC
+# define GLEWAPI extern
+#else
+# ifdef GLEW_BUILD
+# define GLEWAPI extern __declspec(dllexport)
+# else
+# define GLEWAPI extern __declspec(dllimport)
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -------------------------- WGL_3DFX_multisample ------------------------- */
+
+#ifndef WGL_3DFX_multisample
+#define WGL_3DFX_multisample 1
+
+#define WGL_SAMPLE_BUFFERS_3DFX 0x2060
+#define WGL_SAMPLES_3DFX 0x2061
+
+#define WGLEW_3DFX_multisample WGLEW_GET_VAR(__WGLEW_3DFX_multisample)
+
+#endif /* WGL_3DFX_multisample */
+
+/* ------------------------- WGL_3DL_stereo_control ------------------------ */
+
+#ifndef WGL_3DL_stereo_control
+#define WGL_3DL_stereo_control 1
+
+#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
+#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
+#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
+#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058
+
+typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState);
+
+#define wglSetStereoEmitterState3DL WGLEW_GET_FUN(__wglewSetStereoEmitterState3DL)
+
+#define WGLEW_3DL_stereo_control WGLEW_GET_VAR(__WGLEW_3DL_stereo_control)
+
+#endif /* WGL_3DL_stereo_control */
+
+/* ------------------------ WGL_AMD_gpu_association ------------------------ */
+
+#ifndef WGL_AMD_gpu_association
+#define WGL_AMD_gpu_association 1
+
+#define WGL_GPU_VENDOR_AMD 0x1F00
+#define WGL_GPU_RENDERER_STRING_AMD 0x1F01
+#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+#define WGL_GPU_RAM_AMD 0x21A3
+#define WGL_GPU_CLOCK_AMD 0x21A4
+#define WGL_GPU_NUM_PIPES_AMD 0x21A5
+#define WGL_GPU_NUM_SIMD_AMD 0x21A6
+#define WGL_GPU_NUM_RB_AMD 0x21A7
+#define WGL_GPU_NUM_SPI_AMD 0x21A8
+
+typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id);
+typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int* attribList);
+typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc);
+typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc);
+typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
+typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT* ids);
+typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void* data);
+typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc);
+
+#define wglBlitContextFramebufferAMD WGLEW_GET_FUN(__wglewBlitContextFramebufferAMD)
+#define wglCreateAssociatedContextAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAMD)
+#define wglCreateAssociatedContextAttribsAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAttribsAMD)
+#define wglDeleteAssociatedContextAMD WGLEW_GET_FUN(__wglewDeleteAssociatedContextAMD)
+#define wglGetContextGPUIDAMD WGLEW_GET_FUN(__wglewGetContextGPUIDAMD)
+#define wglGetCurrentAssociatedContextAMD WGLEW_GET_FUN(__wglewGetCurrentAssociatedContextAMD)
+#define wglGetGPUIDsAMD WGLEW_GET_FUN(__wglewGetGPUIDsAMD)
+#define wglGetGPUInfoAMD WGLEW_GET_FUN(__wglewGetGPUInfoAMD)
+#define wglMakeAssociatedContextCurrentAMD WGLEW_GET_FUN(__wglewMakeAssociatedContextCurrentAMD)
+
+#define WGLEW_AMD_gpu_association WGLEW_GET_VAR(__WGLEW_AMD_gpu_association)
+
+#endif /* WGL_AMD_gpu_association */
+
+/* ------------------------- WGL_ARB_buffer_region ------------------------- */
+
+#ifndef WGL_ARB_buffer_region
+#define WGL_ARB_buffer_region 1
+
+#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
+#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
+#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
+#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
+
+typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
+typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
+typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
+typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
+
+#define wglCreateBufferRegionARB WGLEW_GET_FUN(__wglewCreateBufferRegionARB)
+#define wglDeleteBufferRegionARB WGLEW_GET_FUN(__wglewDeleteBufferRegionARB)
+#define wglRestoreBufferRegionARB WGLEW_GET_FUN(__wglewRestoreBufferRegionARB)
+#define wglSaveBufferRegionARB WGLEW_GET_FUN(__wglewSaveBufferRegionARB)
+
+#define WGLEW_ARB_buffer_region WGLEW_GET_VAR(__WGLEW_ARB_buffer_region)
+
+#endif /* WGL_ARB_buffer_region */
+
+/* --------------------- WGL_ARB_context_flush_control --------------------- */
+
+#ifndef WGL_ARB_context_flush_control
+#define WGL_ARB_context_flush_control 1
+
+#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
+
+#define WGLEW_ARB_context_flush_control WGLEW_GET_VAR(__WGLEW_ARB_context_flush_control)
+
+#endif /* WGL_ARB_context_flush_control */
+
+/* ------------------------- WGL_ARB_create_context ------------------------ */
+
+#ifndef WGL_ARB_create_context
+#define WGL_ARB_create_context 1
+
+#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
+#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
+#define WGL_CONTEXT_FLAGS_ARB 0x2094
+#define ERROR_INVALID_VERSION_ARB 0x2095
+
+typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int* attribList);
+
+#define wglCreateContextAttribsARB WGLEW_GET_FUN(__wglewCreateContextAttribsARB)
+
+#define WGLEW_ARB_create_context WGLEW_GET_VAR(__WGLEW_ARB_create_context)
+
+#endif /* WGL_ARB_create_context */
+
+/* -------------------- WGL_ARB_create_context_no_error -------------------- */
+
+#ifndef WGL_ARB_create_context_no_error
+#define WGL_ARB_create_context_no_error 1
+
+#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
+
+#define WGLEW_ARB_create_context_no_error WGLEW_GET_VAR(__WGLEW_ARB_create_context_no_error)
+
+#endif /* WGL_ARB_create_context_no_error */
+
+/* --------------------- WGL_ARB_create_context_profile -------------------- */
+
+#ifndef WGL_ARB_create_context_profile
+#define WGL_ARB_create_context_profile 1
+
+#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+#define ERROR_INVALID_PROFILE_ARB 0x2096
+#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
+
+#define WGLEW_ARB_create_context_profile WGLEW_GET_VAR(__WGLEW_ARB_create_context_profile)
+
+#endif /* WGL_ARB_create_context_profile */
+
+/* ------------------- WGL_ARB_create_context_robustness ------------------- */
+
+#ifndef WGL_ARB_create_context_robustness
+#define WGL_ARB_create_context_robustness 1
+
+#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
+
+#define WGLEW_ARB_create_context_robustness WGLEW_GET_VAR(__WGLEW_ARB_create_context_robustness)
+
+#endif /* WGL_ARB_create_context_robustness */
+
+/* ----------------------- WGL_ARB_extensions_string ----------------------- */
+
+#ifndef WGL_ARB_extensions_string
+#define WGL_ARB_extensions_string 1
+
+typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
+
+#define wglGetExtensionsStringARB WGLEW_GET_FUN(__wglewGetExtensionsStringARB)
+
+#define WGLEW_ARB_extensions_string WGLEW_GET_VAR(__WGLEW_ARB_extensions_string)
+
+#endif /* WGL_ARB_extensions_string */
+
+/* ------------------------ WGL_ARB_framebuffer_sRGB ----------------------- */
+
+#ifndef WGL_ARB_framebuffer_sRGB
+#define WGL_ARB_framebuffer_sRGB 1
+
+#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
+
+#define WGLEW_ARB_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_ARB_framebuffer_sRGB)
+
+#endif /* WGL_ARB_framebuffer_sRGB */
+
+/* ----------------------- WGL_ARB_make_current_read ----------------------- */
+
+#ifndef WGL_ARB_make_current_read
+#define WGL_ARB_make_current_read 1
+
+#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
+#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
+
+typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
+typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+
+#define wglGetCurrentReadDCARB WGLEW_GET_FUN(__wglewGetCurrentReadDCARB)
+#define wglMakeContextCurrentARB WGLEW_GET_FUN(__wglewMakeContextCurrentARB)
+
+#define WGLEW_ARB_make_current_read WGLEW_GET_VAR(__WGLEW_ARB_make_current_read)
+
+#endif /* WGL_ARB_make_current_read */
+
+/* -------------------------- WGL_ARB_multisample -------------------------- */
+
+#ifndef WGL_ARB_multisample
+#define WGL_ARB_multisample 1
+
+#define WGL_SAMPLE_BUFFERS_ARB 0x2041
+#define WGL_SAMPLES_ARB 0x2042
+
+#define WGLEW_ARB_multisample WGLEW_GET_VAR(__WGLEW_ARB_multisample)
+
+#endif /* WGL_ARB_multisample */
+
+/* ---------------------------- WGL_ARB_pbuffer ---------------------------- */
+
+#ifndef WGL_ARB_pbuffer
+#define WGL_ARB_pbuffer 1
+
+#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
+#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
+#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
+#define WGL_PBUFFER_LARGEST_ARB 0x2033
+#define WGL_PBUFFER_WIDTH_ARB 0x2034
+#define WGL_PBUFFER_HEIGHT_ARB 0x2035
+#define WGL_PBUFFER_LOST_ARB 0x2036
+
+DECLARE_HANDLE(HPBUFFERARB);
+
+typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList);
+typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
+typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
+typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int* piValue);
+typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
+
+#define wglCreatePbufferARB WGLEW_GET_FUN(__wglewCreatePbufferARB)
+#define wglDestroyPbufferARB WGLEW_GET_FUN(__wglewDestroyPbufferARB)
+#define wglGetPbufferDCARB WGLEW_GET_FUN(__wglewGetPbufferDCARB)
+#define wglQueryPbufferARB WGLEW_GET_FUN(__wglewQueryPbufferARB)
+#define wglReleasePbufferDCARB WGLEW_GET_FUN(__wglewReleasePbufferDCARB)
+
+#define WGLEW_ARB_pbuffer WGLEW_GET_VAR(__WGLEW_ARB_pbuffer)
+
+#endif /* WGL_ARB_pbuffer */
+
+/* -------------------------- WGL_ARB_pixel_format ------------------------- */
+
+#ifndef WGL_ARB_pixel_format
+#define WGL_ARB_pixel_format 1
+
+#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
+#define WGL_DRAW_TO_WINDOW_ARB 0x2001
+#define WGL_DRAW_TO_BITMAP_ARB 0x2002
+#define WGL_ACCELERATION_ARB 0x2003
+#define WGL_NEED_PALETTE_ARB 0x2004
+#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
+#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
+#define WGL_SWAP_METHOD_ARB 0x2007
+#define WGL_NUMBER_OVERLAYS_ARB 0x2008
+#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
+#define WGL_TRANSPARENT_ARB 0x200A
+#define WGL_SHARE_DEPTH_ARB 0x200C
+#define WGL_SHARE_STENCIL_ARB 0x200D
+#define WGL_SHARE_ACCUM_ARB 0x200E
+#define WGL_SUPPORT_GDI_ARB 0x200F
+#define WGL_SUPPORT_OPENGL_ARB 0x2010
+#define WGL_DOUBLE_BUFFER_ARB 0x2011
+#define WGL_STEREO_ARB 0x2012
+#define WGL_PIXEL_TYPE_ARB 0x2013
+#define WGL_COLOR_BITS_ARB 0x2014
+#define WGL_RED_BITS_ARB 0x2015
+#define WGL_RED_SHIFT_ARB 0x2016
+#define WGL_GREEN_BITS_ARB 0x2017
+#define WGL_GREEN_SHIFT_ARB 0x2018
+#define WGL_BLUE_BITS_ARB 0x2019
+#define WGL_BLUE_SHIFT_ARB 0x201A
+#define WGL_ALPHA_BITS_ARB 0x201B
+#define WGL_ALPHA_SHIFT_ARB 0x201C
+#define WGL_ACCUM_BITS_ARB 0x201D
+#define WGL_ACCUM_RED_BITS_ARB 0x201E
+#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
+#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
+#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
+#define WGL_DEPTH_BITS_ARB 0x2022
+#define WGL_STENCIL_BITS_ARB 0x2023
+#define WGL_AUX_BUFFERS_ARB 0x2024
+#define WGL_NO_ACCELERATION_ARB 0x2025
+#define WGL_GENERIC_ACCELERATION_ARB 0x2026
+#define WGL_FULL_ACCELERATION_ARB 0x2027
+#define WGL_SWAP_EXCHANGE_ARB 0x2028
+#define WGL_SWAP_COPY_ARB 0x2029
+#define WGL_SWAP_UNDEFINED_ARB 0x202A
+#define WGL_TYPE_RGBA_ARB 0x202B
+#define WGL_TYPE_COLORINDEX_ARB 0x202C
+#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
+#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
+#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
+#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
+#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
+
+typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT* pfValues);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int* piValues);
+
+#define wglChoosePixelFormatARB WGLEW_GET_FUN(__wglewChoosePixelFormatARB)
+#define wglGetPixelFormatAttribfvARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvARB)
+#define wglGetPixelFormatAttribivARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribivARB)
+
+#define WGLEW_ARB_pixel_format WGLEW_GET_VAR(__WGLEW_ARB_pixel_format)
+
+#endif /* WGL_ARB_pixel_format */
+
+/* ----------------------- WGL_ARB_pixel_format_float ---------------------- */
+
+#ifndef WGL_ARB_pixel_format_float
+#define WGL_ARB_pixel_format_float 1
+
+#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
+
+#define WGLEW_ARB_pixel_format_float WGLEW_GET_VAR(__WGLEW_ARB_pixel_format_float)
+
+#endif /* WGL_ARB_pixel_format_float */
+
+/* ------------------------- WGL_ARB_render_texture ------------------------ */
+
+#ifndef WGL_ARB_render_texture
+#define WGL_ARB_render_texture 1
+
+#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
+#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
+#define WGL_TEXTURE_FORMAT_ARB 0x2072
+#define WGL_TEXTURE_TARGET_ARB 0x2073
+#define WGL_MIPMAP_TEXTURE_ARB 0x2074
+#define WGL_TEXTURE_RGB_ARB 0x2075
+#define WGL_TEXTURE_RGBA_ARB 0x2076
+#define WGL_NO_TEXTURE_ARB 0x2077
+#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078
+#define WGL_TEXTURE_1D_ARB 0x2079
+#define WGL_TEXTURE_2D_ARB 0x207A
+#define WGL_MIPMAP_LEVEL_ARB 0x207B
+#define WGL_CUBE_MAP_FACE_ARB 0x207C
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
+#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
+#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
+#define WGL_FRONT_LEFT_ARB 0x2083
+#define WGL_FRONT_RIGHT_ARB 0x2084
+#define WGL_BACK_LEFT_ARB 0x2085
+#define WGL_BACK_RIGHT_ARB 0x2086
+#define WGL_AUX0_ARB 0x2087
+#define WGL_AUX1_ARB 0x2088
+#define WGL_AUX2_ARB 0x2089
+#define WGL_AUX3_ARB 0x208A
+#define WGL_AUX4_ARB 0x208B
+#define WGL_AUX5_ARB 0x208C
+#define WGL_AUX6_ARB 0x208D
+#define WGL_AUX7_ARB 0x208E
+#define WGL_AUX8_ARB 0x208F
+#define WGL_AUX9_ARB 0x2090
+
+typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
+typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
+typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int* piAttribList);
+
+#define wglBindTexImageARB WGLEW_GET_FUN(__wglewBindTexImageARB)
+#define wglReleaseTexImageARB WGLEW_GET_FUN(__wglewReleaseTexImageARB)
+#define wglSetPbufferAttribARB WGLEW_GET_FUN(__wglewSetPbufferAttribARB)
+
+#define WGLEW_ARB_render_texture WGLEW_GET_VAR(__WGLEW_ARB_render_texture)
+
+#endif /* WGL_ARB_render_texture */
+
+/* ---------------- WGL_ARB_robustness_application_isolation --------------- */
+
+#ifndef WGL_ARB_robustness_application_isolation
+#define WGL_ARB_robustness_application_isolation 1
+
+#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+
+#define WGLEW_ARB_robustness_application_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_application_isolation)
+
+#endif /* WGL_ARB_robustness_application_isolation */
+
+/* ---------------- WGL_ARB_robustness_share_group_isolation --------------- */
+
+#ifndef WGL_ARB_robustness_share_group_isolation
+#define WGL_ARB_robustness_share_group_isolation 1
+
+#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+
+#define WGLEW_ARB_robustness_share_group_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_share_group_isolation)
+
+#endif /* WGL_ARB_robustness_share_group_isolation */
+
+/* ----------------------- WGL_ATI_pixel_format_float ---------------------- */
+
+#ifndef WGL_ATI_pixel_format_float
+#define WGL_ATI_pixel_format_float 1
+
+#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
+#define GL_RGBA_FLOAT_MODE_ATI 0x8820
+#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
+
+#define WGLEW_ATI_pixel_format_float WGLEW_GET_VAR(__WGLEW_ATI_pixel_format_float)
+
+#endif /* WGL_ATI_pixel_format_float */
+
+/* -------------------- WGL_ATI_render_texture_rectangle ------------------- */
+
+#ifndef WGL_ATI_render_texture_rectangle
+#define WGL_ATI_render_texture_rectangle 1
+
+#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5
+
+#define WGLEW_ATI_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_ATI_render_texture_rectangle)
+
+#endif /* WGL_ATI_render_texture_rectangle */
+
+/* --------------------------- WGL_EXT_colorspace -------------------------- */
+
+#ifndef WGL_EXT_colorspace
+#define WGL_EXT_colorspace 1
+
+#define WGL_COLORSPACE_SRGB_EXT 0x3089
+#define WGL_COLORSPACE_LINEAR_EXT 0x308A
+#define WGL_COLORSPACE_EXT 0x309D
+
+#define WGLEW_EXT_colorspace WGLEW_GET_VAR(__WGLEW_EXT_colorspace)
+
+#endif /* WGL_EXT_colorspace */
+
+/* ------------------- WGL_EXT_create_context_es2_profile ------------------ */
+
+#ifndef WGL_EXT_create_context_es2_profile
+#define WGL_EXT_create_context_es2_profile 1
+
+#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
+
+#define WGLEW_EXT_create_context_es2_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es2_profile)
+
+#endif /* WGL_EXT_create_context_es2_profile */
+
+/* ------------------- WGL_EXT_create_context_es_profile ------------------- */
+
+#ifndef WGL_EXT_create_context_es_profile
+#define WGL_EXT_create_context_es_profile 1
+
+#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
+
+#define WGLEW_EXT_create_context_es_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es_profile)
+
+#endif /* WGL_EXT_create_context_es_profile */
+
+/* -------------------------- WGL_EXT_depth_float -------------------------- */
+
+#ifndef WGL_EXT_depth_float
+#define WGL_EXT_depth_float 1
+
+#define WGL_DEPTH_FLOAT_EXT 0x2040
+
+#define WGLEW_EXT_depth_float WGLEW_GET_VAR(__WGLEW_EXT_depth_float)
+
+#endif /* WGL_EXT_depth_float */
+
+/* ---------------------- WGL_EXT_display_color_table ---------------------- */
+
+#ifndef WGL_EXT_display_color_table
+#define WGL_EXT_display_color_table 1
+
+typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
+typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort* table, GLuint length);
+
+#define wglBindDisplayColorTableEXT WGLEW_GET_FUN(__wglewBindDisplayColorTableEXT)
+#define wglCreateDisplayColorTableEXT WGLEW_GET_FUN(__wglewCreateDisplayColorTableEXT)
+#define wglDestroyDisplayColorTableEXT WGLEW_GET_FUN(__wglewDestroyDisplayColorTableEXT)
+#define wglLoadDisplayColorTableEXT WGLEW_GET_FUN(__wglewLoadDisplayColorTableEXT)
+
+#define WGLEW_EXT_display_color_table WGLEW_GET_VAR(__WGLEW_EXT_display_color_table)
+
+#endif /* WGL_EXT_display_color_table */
+
+/* ----------------------- WGL_EXT_extensions_string ----------------------- */
+
+#ifndef WGL_EXT_extensions_string
+#define WGL_EXT_extensions_string 1
+
+typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
+
+#define wglGetExtensionsStringEXT WGLEW_GET_FUN(__wglewGetExtensionsStringEXT)
+
+#define WGLEW_EXT_extensions_string WGLEW_GET_VAR(__WGLEW_EXT_extensions_string)
+
+#endif /* WGL_EXT_extensions_string */
+
+/* ------------------------ WGL_EXT_framebuffer_sRGB ----------------------- */
+
+#ifndef WGL_EXT_framebuffer_sRGB
+#define WGL_EXT_framebuffer_sRGB 1
+
+#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
+
+#define WGLEW_EXT_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_EXT_framebuffer_sRGB)
+
+#endif /* WGL_EXT_framebuffer_sRGB */
+
+/* ----------------------- WGL_EXT_make_current_read ----------------------- */
+
+#ifndef WGL_EXT_make_current_read
+#define WGL_EXT_make_current_read 1
+
+#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
+
+typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
+typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
+
+#define wglGetCurrentReadDCEXT WGLEW_GET_FUN(__wglewGetCurrentReadDCEXT)
+#define wglMakeContextCurrentEXT WGLEW_GET_FUN(__wglewMakeContextCurrentEXT)
+
+#define WGLEW_EXT_make_current_read WGLEW_GET_VAR(__WGLEW_EXT_make_current_read)
+
+#endif /* WGL_EXT_make_current_read */
+
+/* -------------------------- WGL_EXT_multisample -------------------------- */
+
+#ifndef WGL_EXT_multisample
+#define WGL_EXT_multisample 1
+
+#define WGL_SAMPLE_BUFFERS_EXT 0x2041
+#define WGL_SAMPLES_EXT 0x2042
+
+#define WGLEW_EXT_multisample WGLEW_GET_VAR(__WGLEW_EXT_multisample)
+
+#endif /* WGL_EXT_multisample */
+
+/* ---------------------------- WGL_EXT_pbuffer ---------------------------- */
+
+#ifndef WGL_EXT_pbuffer
+#define WGL_EXT_pbuffer 1
+
+#define WGL_DRAW_TO_PBUFFER_EXT 0x202D
+#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
+#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
+#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
+#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
+#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
+#define WGL_PBUFFER_LARGEST_EXT 0x2033
+#define WGL_PBUFFER_WIDTH_EXT 0x2034
+#define WGL_PBUFFER_HEIGHT_EXT 0x2035
+
+DECLARE_HANDLE(HPBUFFEREXT);
+
+typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList);
+typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
+typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
+typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue);
+typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
+
+#define wglCreatePbufferEXT WGLEW_GET_FUN(__wglewCreatePbufferEXT)
+#define wglDestroyPbufferEXT WGLEW_GET_FUN(__wglewDestroyPbufferEXT)
+#define wglGetPbufferDCEXT WGLEW_GET_FUN(__wglewGetPbufferDCEXT)
+#define wglQueryPbufferEXT WGLEW_GET_FUN(__wglewQueryPbufferEXT)
+#define wglReleasePbufferDCEXT WGLEW_GET_FUN(__wglewReleasePbufferDCEXT)
+
+#define WGLEW_EXT_pbuffer WGLEW_GET_VAR(__WGLEW_EXT_pbuffer)
+
+#endif /* WGL_EXT_pbuffer */
+
+/* -------------------------- WGL_EXT_pixel_format ------------------------- */
+
+#ifndef WGL_EXT_pixel_format
+#define WGL_EXT_pixel_format 1
+
+#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
+#define WGL_DRAW_TO_WINDOW_EXT 0x2001
+#define WGL_DRAW_TO_BITMAP_EXT 0x2002
+#define WGL_ACCELERATION_EXT 0x2003
+#define WGL_NEED_PALETTE_EXT 0x2004
+#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
+#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
+#define WGL_SWAP_METHOD_EXT 0x2007
+#define WGL_NUMBER_OVERLAYS_EXT 0x2008
+#define WGL_NUMBER_UNDERLAYS_EXT 0x2009
+#define WGL_TRANSPARENT_EXT 0x200A
+#define WGL_TRANSPARENT_VALUE_EXT 0x200B
+#define WGL_SHARE_DEPTH_EXT 0x200C
+#define WGL_SHARE_STENCIL_EXT 0x200D
+#define WGL_SHARE_ACCUM_EXT 0x200E
+#define WGL_SUPPORT_GDI_EXT 0x200F
+#define WGL_SUPPORT_OPENGL_EXT 0x2010
+#define WGL_DOUBLE_BUFFER_EXT 0x2011
+#define WGL_STEREO_EXT 0x2012
+#define WGL_PIXEL_TYPE_EXT 0x2013
+#define WGL_COLOR_BITS_EXT 0x2014
+#define WGL_RED_BITS_EXT 0x2015
+#define WGL_RED_SHIFT_EXT 0x2016
+#define WGL_GREEN_BITS_EXT 0x2017
+#define WGL_GREEN_SHIFT_EXT 0x2018
+#define WGL_BLUE_BITS_EXT 0x2019
+#define WGL_BLUE_SHIFT_EXT 0x201A
+#define WGL_ALPHA_BITS_EXT 0x201B
+#define WGL_ALPHA_SHIFT_EXT 0x201C
+#define WGL_ACCUM_BITS_EXT 0x201D
+#define WGL_ACCUM_RED_BITS_EXT 0x201E
+#define WGL_ACCUM_GREEN_BITS_EXT 0x201F
+#define WGL_ACCUM_BLUE_BITS_EXT 0x2020
+#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021
+#define WGL_DEPTH_BITS_EXT 0x2022
+#define WGL_STENCIL_BITS_EXT 0x2023
+#define WGL_AUX_BUFFERS_EXT 0x2024
+#define WGL_NO_ACCELERATION_EXT 0x2025
+#define WGL_GENERIC_ACCELERATION_EXT 0x2026
+#define WGL_FULL_ACCELERATION_EXT 0x2027
+#define WGL_SWAP_EXCHANGE_EXT 0x2028
+#define WGL_SWAP_COPY_EXT 0x2029
+#define WGL_SWAP_UNDEFINED_EXT 0x202A
+#define WGL_TYPE_RGBA_EXT 0x202B
+#define WGL_TYPE_COLORINDEX_EXT 0x202C
+
+typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT* pfValues);
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int* piValues);
+
+#define wglChoosePixelFormatEXT WGLEW_GET_FUN(__wglewChoosePixelFormatEXT)
+#define wglGetPixelFormatAttribfvEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvEXT)
+#define wglGetPixelFormatAttribivEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribivEXT)
+
+#define WGLEW_EXT_pixel_format WGLEW_GET_VAR(__WGLEW_EXT_pixel_format)
+
+#endif /* WGL_EXT_pixel_format */
+
+/* ------------------- WGL_EXT_pixel_format_packed_float ------------------- */
+
+#ifndef WGL_EXT_pixel_format_packed_float
+#define WGL_EXT_pixel_format_packed_float 1
+
+#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
+
+#define WGLEW_EXT_pixel_format_packed_float WGLEW_GET_VAR(__WGLEW_EXT_pixel_format_packed_float)
+
+#endif /* WGL_EXT_pixel_format_packed_float */
+
+/* -------------------------- WGL_EXT_swap_control ------------------------- */
+
+#ifndef WGL_EXT_swap_control
+#define WGL_EXT_swap_control 1
+
+typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
+typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
+
+#define wglGetSwapIntervalEXT WGLEW_GET_FUN(__wglewGetSwapIntervalEXT)
+#define wglSwapIntervalEXT WGLEW_GET_FUN(__wglewSwapIntervalEXT)
+
+#define WGLEW_EXT_swap_control WGLEW_GET_VAR(__WGLEW_EXT_swap_control)
+
+#endif /* WGL_EXT_swap_control */
+
+/* ----------------------- WGL_EXT_swap_control_tear ----------------------- */
+
+#ifndef WGL_EXT_swap_control_tear
+#define WGL_EXT_swap_control_tear 1
+
+#define WGLEW_EXT_swap_control_tear WGLEW_GET_VAR(__WGLEW_EXT_swap_control_tear)
+
+#endif /* WGL_EXT_swap_control_tear */
+
+/* --------------------- WGL_I3D_digital_video_control --------------------- */
+
+#ifndef WGL_I3D_digital_video_control
+#define WGL_I3D_digital_video_control 1
+
+#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
+#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
+#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
+#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
+
+typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue);
+typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue);
+
+#define wglGetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewGetDigitalVideoParametersI3D)
+#define wglSetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewSetDigitalVideoParametersI3D)
+
+#define WGLEW_I3D_digital_video_control WGLEW_GET_VAR(__WGLEW_I3D_digital_video_control)
+
+#endif /* WGL_I3D_digital_video_control */
+
+/* ----------------------------- WGL_I3D_gamma ----------------------------- */
+
+#ifndef WGL_I3D_gamma
+#define WGL_I3D_gamma 1
+
+#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E
+#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
+
+typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT* puRed, USHORT* puGreen, USHORT* puBlue);
+typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue);
+typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT* puRed, const USHORT* puGreen, const USHORT* puBlue);
+typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue);
+
+#define wglGetGammaTableI3D WGLEW_GET_FUN(__wglewGetGammaTableI3D)
+#define wglGetGammaTableParametersI3D WGLEW_GET_FUN(__wglewGetGammaTableParametersI3D)
+#define wglSetGammaTableI3D WGLEW_GET_FUN(__wglewSetGammaTableI3D)
+#define wglSetGammaTableParametersI3D WGLEW_GET_FUN(__wglewSetGammaTableParametersI3D)
+
+#define WGLEW_I3D_gamma WGLEW_GET_VAR(__WGLEW_I3D_gamma)
+
+#endif /* WGL_I3D_gamma */
+
+/* ---------------------------- WGL_I3D_genlock ---------------------------- */
+
+#ifndef WGL_I3D_genlock
+#define WGL_I3D_genlock 1
+
+#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
+#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045
+#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046
+#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047
+#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
+#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
+#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
+#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
+#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
+
+typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
+typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
+typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT* uRate);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT* uDelay);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT* uEdge);
+typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT* uSource);
+typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL* pFlag);
+typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT* uMaxLineDelay, UINT* uMaxPixelDelay);
+
+#define wglDisableGenlockI3D WGLEW_GET_FUN(__wglewDisableGenlockI3D)
+#define wglEnableGenlockI3D WGLEW_GET_FUN(__wglewEnableGenlockI3D)
+#define wglGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGenlockSampleRateI3D)
+#define wglGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGenlockSourceDelayI3D)
+#define wglGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGenlockSourceEdgeI3D)
+#define wglGenlockSourceI3D WGLEW_GET_FUN(__wglewGenlockSourceI3D)
+#define wglGetGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGetGenlockSampleRateI3D)
+#define wglGetGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGetGenlockSourceDelayI3D)
+#define wglGetGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGetGenlockSourceEdgeI3D)
+#define wglGetGenlockSourceI3D WGLEW_GET_FUN(__wglewGetGenlockSourceI3D)
+#define wglIsEnabledGenlockI3D WGLEW_GET_FUN(__wglewIsEnabledGenlockI3D)
+#define wglQueryGenlockMaxSourceDelayI3D WGLEW_GET_FUN(__wglewQueryGenlockMaxSourceDelayI3D)
+
+#define WGLEW_I3D_genlock WGLEW_GET_VAR(__WGLEW_I3D_genlock)
+
+#endif /* WGL_I3D_genlock */
+
+/* -------------------------- WGL_I3D_image_buffer ------------------------- */
+
+#ifndef WGL_I3D_image_buffer
+#define WGL_I3D_image_buffer 1
+
+#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
+#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
+
+typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE* pEvent, const LPVOID* pAddress, const DWORD* pSize, UINT count);
+typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
+typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
+typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID* pAddress, UINT count);
+
+#define wglAssociateImageBufferEventsI3D WGLEW_GET_FUN(__wglewAssociateImageBufferEventsI3D)
+#define wglCreateImageBufferI3D WGLEW_GET_FUN(__wglewCreateImageBufferI3D)
+#define wglDestroyImageBufferI3D WGLEW_GET_FUN(__wglewDestroyImageBufferI3D)
+#define wglReleaseImageBufferEventsI3D WGLEW_GET_FUN(__wglewReleaseImageBufferEventsI3D)
+
+#define WGLEW_I3D_image_buffer WGLEW_GET_VAR(__WGLEW_I3D_image_buffer)
+
+#endif /* WGL_I3D_image_buffer */
+
+/* ------------------------ WGL_I3D_swap_frame_lock ------------------------ */
+
+#ifndef WGL_I3D_swap_frame_lock
+#define WGL_I3D_swap_frame_lock 1
+
+typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL* pFlag);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL* pFlag);
+
+#define wglDisableFrameLockI3D WGLEW_GET_FUN(__wglewDisableFrameLockI3D)
+#define wglEnableFrameLockI3D WGLEW_GET_FUN(__wglewEnableFrameLockI3D)
+#define wglIsEnabledFrameLockI3D WGLEW_GET_FUN(__wglewIsEnabledFrameLockI3D)
+#define wglQueryFrameLockMasterI3D WGLEW_GET_FUN(__wglewQueryFrameLockMasterI3D)
+
+#define WGLEW_I3D_swap_frame_lock WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_lock)
+
+#endif /* WGL_I3D_swap_frame_lock */
+
+/* ------------------------ WGL_I3D_swap_frame_usage ----------------------- */
+
+#ifndef WGL_I3D_swap_frame_usage
+#define WGL_I3D_swap_frame_usage 1
+
+typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void);
+typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float* pUsage);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD* pFrameCount, DWORD* pMissedFrames, float* pLastMissedUsage);
+
+#define wglBeginFrameTrackingI3D WGLEW_GET_FUN(__wglewBeginFrameTrackingI3D)
+#define wglEndFrameTrackingI3D WGLEW_GET_FUN(__wglewEndFrameTrackingI3D)
+#define wglGetFrameUsageI3D WGLEW_GET_FUN(__wglewGetFrameUsageI3D)
+#define wglQueryFrameTrackingI3D WGLEW_GET_FUN(__wglewQueryFrameTrackingI3D)
+
+#define WGLEW_I3D_swap_frame_usage WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_usage)
+
+#endif /* WGL_I3D_swap_frame_usage */
+
+/* --------------------------- WGL_NV_DX_interop --------------------------- */
+
+#ifndef WGL_NV_DX_interop
+#define WGL_NV_DX_interop 1
+
+#define WGL_ACCESS_READ_ONLY_NV 0x00000000
+#define WGL_ACCESS_READ_WRITE_NV 0x00000001
+#define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002
+
+typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice);
+typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects);
+typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access);
+typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void* dxDevice);
+typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access);
+typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void* dxObject, HANDLE shareHandle);
+typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects);
+typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject);
+
+#define wglDXCloseDeviceNV WGLEW_GET_FUN(__wglewDXCloseDeviceNV)
+#define wglDXLockObjectsNV WGLEW_GET_FUN(__wglewDXLockObjectsNV)
+#define wglDXObjectAccessNV WGLEW_GET_FUN(__wglewDXObjectAccessNV)
+#define wglDXOpenDeviceNV WGLEW_GET_FUN(__wglewDXOpenDeviceNV)
+#define wglDXRegisterObjectNV WGLEW_GET_FUN(__wglewDXRegisterObjectNV)
+#define wglDXSetResourceShareHandleNV WGLEW_GET_FUN(__wglewDXSetResourceShareHandleNV)
+#define wglDXUnlockObjectsNV WGLEW_GET_FUN(__wglewDXUnlockObjectsNV)
+#define wglDXUnregisterObjectNV WGLEW_GET_FUN(__wglewDXUnregisterObjectNV)
+
+#define WGLEW_NV_DX_interop WGLEW_GET_VAR(__WGLEW_NV_DX_interop)
+
+#endif /* WGL_NV_DX_interop */
+
+/* --------------------------- WGL_NV_DX_interop2 -------------------------- */
+
+#ifndef WGL_NV_DX_interop2
+#define WGL_NV_DX_interop2 1
+
+#define WGLEW_NV_DX_interop2 WGLEW_GET_VAR(__WGLEW_NV_DX_interop2)
+
+#endif /* WGL_NV_DX_interop2 */
+
+/* --------------------------- WGL_NV_copy_image --------------------------- */
+
+#ifndef WGL_NV_copy_image
+#define WGL_NV_copy_image 1
+
+typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+#define wglCopyImageSubDataNV WGLEW_GET_FUN(__wglewCopyImageSubDataNV)
+
+#define WGLEW_NV_copy_image WGLEW_GET_VAR(__WGLEW_NV_copy_image)
+
+#endif /* WGL_NV_copy_image */
+
+/* ------------------------ WGL_NV_delay_before_swap ----------------------- */
+
+#ifndef WGL_NV_delay_before_swap
+#define WGL_NV_delay_before_swap 1
+
+typedef BOOL (WINAPI * PFNWGLDELAYBEFORESWAPNVPROC) (HDC hDC, GLfloat seconds);
+
+#define wglDelayBeforeSwapNV WGLEW_GET_FUN(__wglewDelayBeforeSwapNV)
+
+#define WGLEW_NV_delay_before_swap WGLEW_GET_VAR(__WGLEW_NV_delay_before_swap)
+
+#endif /* WGL_NV_delay_before_swap */
+
+/* -------------------------- WGL_NV_float_buffer -------------------------- */
+
+#ifndef WGL_NV_float_buffer
+#define WGL_NV_float_buffer 1
+
+#define WGL_FLOAT_COMPONENTS_NV 0x20B0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
+#define WGL_TEXTURE_FLOAT_R_NV 0x20B5
+#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6
+#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
+#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
+
+#define WGLEW_NV_float_buffer WGLEW_GET_VAR(__WGLEW_NV_float_buffer)
+
+#endif /* WGL_NV_float_buffer */
+
+/* -------------------------- WGL_NV_gpu_affinity -------------------------- */
+
+#ifndef WGL_NV_gpu_affinity
+#define WGL_NV_gpu_affinity 1
+
+#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
+#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
+
+DECLARE_HANDLE(HGPUNV);
+typedef struct _GPU_DEVICE {
+ DWORD cb;
+ CHAR DeviceName[32];
+ CHAR DeviceString[128];
+ DWORD Flags;
+ RECT rcVirtualScreen;
+} GPU_DEVICE, *PGPU_DEVICE;
+
+typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList);
+typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc);
+typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
+typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
+typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu);
+
+#define wglCreateAffinityDCNV WGLEW_GET_FUN(__wglewCreateAffinityDCNV)
+#define wglDeleteDCNV WGLEW_GET_FUN(__wglewDeleteDCNV)
+#define wglEnumGpuDevicesNV WGLEW_GET_FUN(__wglewEnumGpuDevicesNV)
+#define wglEnumGpusFromAffinityDCNV WGLEW_GET_FUN(__wglewEnumGpusFromAffinityDCNV)
+#define wglEnumGpusNV WGLEW_GET_FUN(__wglewEnumGpusNV)
+
+#define WGLEW_NV_gpu_affinity WGLEW_GET_VAR(__WGLEW_NV_gpu_affinity)
+
+#endif /* WGL_NV_gpu_affinity */
+
+/* ------------------------ WGL_NV_multigpu_context ------------------------ */
+
+#ifndef WGL_NV_multigpu_context
+#define WGL_NV_multigpu_context 1
+
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
+
+#define WGLEW_NV_multigpu_context WGLEW_GET_VAR(__WGLEW_NV_multigpu_context)
+
+#endif /* WGL_NV_multigpu_context */
+
+/* ---------------------- WGL_NV_multisample_coverage ---------------------- */
+
+#ifndef WGL_NV_multisample_coverage
+#define WGL_NV_multisample_coverage 1
+
+#define WGL_COVERAGE_SAMPLES_NV 0x2042
+#define WGL_COLOR_SAMPLES_NV 0x20B9
+
+#define WGLEW_NV_multisample_coverage WGLEW_GET_VAR(__WGLEW_NV_multisample_coverage)
+
+#endif /* WGL_NV_multisample_coverage */
+
+/* -------------------------- WGL_NV_present_video ------------------------- */
+
+#ifndef WGL_NV_present_video
+#define WGL_NV_present_video 1
+
+#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0
+
+DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
+
+typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int* piAttribList);
+typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV* phDeviceList);
+typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int* piValue);
+
+#define wglBindVideoDeviceNV WGLEW_GET_FUN(__wglewBindVideoDeviceNV)
+#define wglEnumerateVideoDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoDevicesNV)
+#define wglQueryCurrentContextNV WGLEW_GET_FUN(__wglewQueryCurrentContextNV)
+
+#define WGLEW_NV_present_video WGLEW_GET_VAR(__WGLEW_NV_present_video)
+
+#endif /* WGL_NV_present_video */
+
+/* ---------------------- WGL_NV_render_depth_texture ---------------------- */
+
+#ifndef WGL_NV_render_depth_texture
+#define WGL_NV_render_depth_texture 1
+
+#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
+#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
+#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
+#define WGL_DEPTH_COMPONENT_NV 0x20A7
+
+#define WGLEW_NV_render_depth_texture WGLEW_GET_VAR(__WGLEW_NV_render_depth_texture)
+
+#endif /* WGL_NV_render_depth_texture */
+
+/* -------------------- WGL_NV_render_texture_rectangle -------------------- */
+
+#ifndef WGL_NV_render_texture_rectangle
+#define WGL_NV_render_texture_rectangle 1
+
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
+#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
+#define WGL_TEXTURE_RECTANGLE_NV 0x20A2
+
+#define WGLEW_NV_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_NV_render_texture_rectangle)
+
+#endif /* WGL_NV_render_texture_rectangle */
+
+/* --------------------------- WGL_NV_swap_group --------------------------- */
+
+#ifndef WGL_NV_swap_group
+#define WGL_NV_swap_group 1
+
+typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier);
+typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group);
+typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint* count);
+typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint* maxGroups, GLuint* maxBarriers);
+typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint* group, GLuint* barrier);
+typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC);
+
+#define wglBindSwapBarrierNV WGLEW_GET_FUN(__wglewBindSwapBarrierNV)
+#define wglJoinSwapGroupNV WGLEW_GET_FUN(__wglewJoinSwapGroupNV)
+#define wglQueryFrameCountNV WGLEW_GET_FUN(__wglewQueryFrameCountNV)
+#define wglQueryMaxSwapGroupsNV WGLEW_GET_FUN(__wglewQueryMaxSwapGroupsNV)
+#define wglQuerySwapGroupNV WGLEW_GET_FUN(__wglewQuerySwapGroupNV)
+#define wglResetFrameCountNV WGLEW_GET_FUN(__wglewResetFrameCountNV)
+
+#define WGLEW_NV_swap_group WGLEW_GET_VAR(__WGLEW_NV_swap_group)
+
+#endif /* WGL_NV_swap_group */
+
+/* ----------------------- WGL_NV_vertex_array_range ----------------------- */
+
+#ifndef WGL_NV_vertex_array_range
+#define WGL_NV_vertex_array_range 1
+
+typedef void* (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void* pointer);
+
+#define wglAllocateMemoryNV WGLEW_GET_FUN(__wglewAllocateMemoryNV)
+#define wglFreeMemoryNV WGLEW_GET_FUN(__wglewFreeMemoryNV)
+
+#define WGLEW_NV_vertex_array_range WGLEW_GET_VAR(__WGLEW_NV_vertex_array_range)
+
+#endif /* WGL_NV_vertex_array_range */
+
+/* -------------------------- WGL_NV_video_capture ------------------------- */
+
+#ifndef WGL_NV_video_capture
+#define WGL_NV_video_capture 1
+
+#define WGL_UNIQUE_ID_NV 0x20CE
+#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+
+DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
+
+typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
+typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList);
+typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
+typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
+
+#define wglBindVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewBindVideoCaptureDeviceNV)
+#define wglEnumerateVideoCaptureDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoCaptureDevicesNV)
+#define wglLockVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewLockVideoCaptureDeviceNV)
+#define wglQueryVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewQueryVideoCaptureDeviceNV)
+#define wglReleaseVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoCaptureDeviceNV)
+
+#define WGLEW_NV_video_capture WGLEW_GET_VAR(__WGLEW_NV_video_capture)
+
+#endif /* WGL_NV_video_capture */
+
+/* -------------------------- WGL_NV_video_output -------------------------- */
+
+#ifndef WGL_NV_video_output
+#define WGL_NV_video_output 1
+
+#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0
+#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1
+#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
+#define WGL_VIDEO_OUT_COLOR_NV 0x20C3
+#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4
+#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5
+#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+#define WGL_VIDEO_OUT_FRAME 0x20C8
+#define WGL_VIDEO_OUT_FIELD_1 0x20C9
+#define WGL_VIDEO_OUT_FIELD_2 0x20CA
+#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
+#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
+
+DECLARE_HANDLE(HPVIDEODEV);
+
+typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
+typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice);
+typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice);
+typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer);
+typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long* pulCounterPbuffer, BOOL bBlock);
+
+#define wglBindVideoImageNV WGLEW_GET_FUN(__wglewBindVideoImageNV)
+#define wglGetVideoDeviceNV WGLEW_GET_FUN(__wglewGetVideoDeviceNV)
+#define wglGetVideoInfoNV WGLEW_GET_FUN(__wglewGetVideoInfoNV)
+#define wglReleaseVideoDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoDeviceNV)
+#define wglReleaseVideoImageNV WGLEW_GET_FUN(__wglewReleaseVideoImageNV)
+#define wglSendPbufferToVideoNV WGLEW_GET_FUN(__wglewSendPbufferToVideoNV)
+
+#define WGLEW_NV_video_output WGLEW_GET_VAR(__WGLEW_NV_video_output)
+
+#endif /* WGL_NV_video_output */
+
+/* -------------------------- WGL_OML_sync_control ------------------------- */
+
+#ifndef WGL_OML_sync_control
+#define WGL_OML_sync_control 1
+
+typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32* numerator, INT32* denominator);
+typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64* ust, INT64* msc, INT64* sbc);
+typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
+typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
+typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64* msc, INT64* sbc);
+typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64* ust, INT64* msc, INT64* sbc);
+
+#define wglGetMscRateOML WGLEW_GET_FUN(__wglewGetMscRateOML)
+#define wglGetSyncValuesOML WGLEW_GET_FUN(__wglewGetSyncValuesOML)
+#define wglSwapBuffersMscOML WGLEW_GET_FUN(__wglewSwapBuffersMscOML)
+#define wglSwapLayerBuffersMscOML WGLEW_GET_FUN(__wglewSwapLayerBuffersMscOML)
+#define wglWaitForMscOML WGLEW_GET_FUN(__wglewWaitForMscOML)
+#define wglWaitForSbcOML WGLEW_GET_FUN(__wglewWaitForSbcOML)
+
+#define WGLEW_OML_sync_control WGLEW_GET_VAR(__WGLEW_OML_sync_control)
+
+#endif /* WGL_OML_sync_control */
+
+/* ------------------------------------------------------------------------- */
+
+#define WGLEW_FUN_EXPORT GLEW_FUN_EXPORT
+#define WGLEW_VAR_EXPORT GLEW_VAR_EXPORT
+
+WGLEW_FUN_EXPORT PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL;
+
+WGLEW_FUN_EXPORT PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD;
+WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD;
+WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD;
+WGLEW_FUN_EXPORT PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD;
+WGLEW_FUN_EXPORT PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD;
+WGLEW_FUN_EXPORT PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD;
+WGLEW_FUN_EXPORT PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD;
+WGLEW_FUN_EXPORT PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD;
+WGLEW_FUN_EXPORT PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD;
+
+WGLEW_FUN_EXPORT PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB;
+WGLEW_FUN_EXPORT PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB;
+WGLEW_FUN_EXPORT PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB;
+WGLEW_FUN_EXPORT PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB;
+
+WGLEW_FUN_EXPORT PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB;
+
+WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB;
+
+WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB;
+WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB;
+
+WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB;
+WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB;
+WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB;
+WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB;
+WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB;
+
+WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB;
+WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB;
+WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB;
+
+WGLEW_FUN_EXPORT PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB;
+WGLEW_FUN_EXPORT PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB;
+WGLEW_FUN_EXPORT PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB;
+
+WGLEW_FUN_EXPORT PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT;
+WGLEW_FUN_EXPORT PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT;
+WGLEW_FUN_EXPORT PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT;
+WGLEW_FUN_EXPORT PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT;
+
+WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT;
+
+WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT;
+WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT;
+
+WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT;
+WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT;
+WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT;
+WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT;
+WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT;
+
+WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT;
+WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT;
+WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT;
+
+WGLEW_FUN_EXPORT PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT;
+WGLEW_FUN_EXPORT PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT;
+
+WGLEW_FUN_EXPORT PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D;
+WGLEW_FUN_EXPORT PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D;
+
+WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D;
+WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D;
+WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D;
+
+WGLEW_FUN_EXPORT PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D;
+WGLEW_FUN_EXPORT PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D;
+WGLEW_FUN_EXPORT PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D;
+WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D;
+WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D;
+WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D;
+WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D;
+WGLEW_FUN_EXPORT PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D;
+WGLEW_FUN_EXPORT PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D;
+
+WGLEW_FUN_EXPORT PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D;
+WGLEW_FUN_EXPORT PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D;
+WGLEW_FUN_EXPORT PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D;
+WGLEW_FUN_EXPORT PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D;
+
+WGLEW_FUN_EXPORT PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D;
+WGLEW_FUN_EXPORT PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D;
+WGLEW_FUN_EXPORT PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D;
+WGLEW_FUN_EXPORT PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D;
+
+WGLEW_FUN_EXPORT PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D;
+WGLEW_FUN_EXPORT PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D;
+WGLEW_FUN_EXPORT PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D;
+WGLEW_FUN_EXPORT PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D;
+
+WGLEW_FUN_EXPORT PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV;
+WGLEW_FUN_EXPORT PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV;
+WGLEW_FUN_EXPORT PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV;
+WGLEW_FUN_EXPORT PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV;
+WGLEW_FUN_EXPORT PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV;
+WGLEW_FUN_EXPORT PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV;
+
+WGLEW_FUN_EXPORT PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV;
+
+WGLEW_FUN_EXPORT PFNWGLDELAYBEFORESWAPNVPROC __wglewDelayBeforeSwapNV;
+
+WGLEW_FUN_EXPORT PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV;
+WGLEW_FUN_EXPORT PFNWGLDELETEDCNVPROC __wglewDeleteDCNV;
+WGLEW_FUN_EXPORT PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV;
+WGLEW_FUN_EXPORT PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV;
+WGLEW_FUN_EXPORT PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV;
+
+WGLEW_FUN_EXPORT PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV;
+
+WGLEW_FUN_EXPORT PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV;
+WGLEW_FUN_EXPORT PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV;
+WGLEW_FUN_EXPORT PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV;
+
+WGLEW_FUN_EXPORT PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV;
+WGLEW_FUN_EXPORT PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV;
+
+WGLEW_FUN_EXPORT PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV;
+WGLEW_FUN_EXPORT PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV;
+
+WGLEW_FUN_EXPORT PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV;
+WGLEW_FUN_EXPORT PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV;
+WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV;
+WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV;
+WGLEW_FUN_EXPORT PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV;
+
+WGLEW_FUN_EXPORT PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML;
+WGLEW_FUN_EXPORT PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML;
+WGLEW_FUN_EXPORT PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML;
+WGLEW_FUN_EXPORT PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML;
+WGLEW_FUN_EXPORT PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML;
+WGLEW_FUN_EXPORT PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_3DFX_multisample;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_3DL_stereo_control;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_AMD_gpu_association;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_buffer_region;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_context_flush_control;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_no_error;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_profile;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_robustness;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_extensions_string;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_framebuffer_sRGB;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_make_current_read;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_multisample;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pbuffer;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format_float;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_render_texture;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_application_isolation;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_share_group_isolation;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_pixel_format_float;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_render_texture_rectangle;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_colorspace;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es2_profile;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es_profile;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_depth_float;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_display_color_table;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_extensions_string;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_framebuffer_sRGB;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_make_current_read;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_multisample;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pbuffer;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format_packed_float;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control_tear;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_digital_video_control;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_gamma;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_genlock;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_image_buffer;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_lock;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_usage;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop2;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_copy_image;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_delay_before_swap;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_float_buffer;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_gpu_affinity;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_multigpu_context;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_multisample_coverage;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_present_video;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_depth_texture;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_texture_rectangle;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_swap_group;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_vertex_array_range;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_capture;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_output;
+WGLEW_VAR_EXPORT GLboolean __WGLEW_OML_sync_control;
+/* ------------------------------------------------------------------------- */
+
+GLEWAPI GLenum GLEWAPIENTRY wglewInit ();
+GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name);
+
+#ifndef WGLEW_GET_VAR
+#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x)
+#endif
+
+#ifndef WGLEW_GET_FUN
+#define WGLEW_GET_FUN(x) x
+#endif
+
+GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef GLEWAPI
+
+#endif /* __wglew_h__ */
diff --git a/glew/original-readme.md b/glew/original-readme.md
new file mode 100644
index 0000000..e31eb73
--- /dev/null
+++ b/glew/original-readme.md
@@ -0,0 +1,255 @@
+# GLEW - The OpenGL Extension Wrangler Library
+
+The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library. GLEW provides efficient run-time mechanisms for determining which OpenGL extensions are supported on the target platform. OpenGL core and extension functionality is exposed in a single header file. GLEW has been tested on a variety of operating systems, including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris.
+
+![](http://glew.sourceforge.net/glew.png)
+
+http://glew.sourceforge.net/
+
+https://github.com/nigels-com/glew
+
+[![Gitter](https://badges.gitter.im/nigels-com/glew.svg)](https://gitter.im/nigels-com/glew?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
+[![Download](https://img.shields.io/sourceforge/dm/glew.svg)](https://sourceforge.net/projects/glew/files/latest/download)
+
+## Table of Contents
+
+* [Downloads](#downloads)
+ * [Recent snapshots](#recent-snapshots)
+* [Build](#build)
+ * [Linux and Mac](#linux-and-mac)
+ * [Using GNU Make](#using-gnu-make)
+ * [Install build tools](#install-build-tools)
+ * [Build](#build-1)
+ * [Linux EGL](#linux-egl)
+ * [Linux OSMesa](#linux-osmesa)
+ * [Linux mingw-w64](#linux-mingw-w64)
+ * [Using cmake](#using-cmake)
+ * [Install build tools](#install-build-tools-1)
+ * [Build](#build-2)
+ * [Windows](#windows)
+ * [Visual Studio](#visual-studio)
+ * [MSYS/Mingw](#msysmingw)
+ * [MSYS2/Mingw-w64](#msys2mingw-w64)
+* [glewinfo](#glewinfo)
+* [Code Generation](#code-generation)
+* [Authors](#authors)
+* [Contributions](#contributions)
+* [Copyright and Licensing](#copyright-and-licensing)
+
+## Downloads
+
+Current release is [2.2.0](https://github.com/nigels-com/glew/releases/tag/glew-2.2.0).
+[(Change Log)](http://glew.sourceforge.net/log.html)
+
+Sources available as
+[ZIP](https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.zip) or
+[TGZ](https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz).
+
+Windows binaries for [32-bit and 64-bit](https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0-win32.zip).
+
+### Recent snapshots
+
+Snapshots may contain new features, bug-fixes or new OpenGL extensions ahead of tested, official releases.
+
+[glew-20220402.tgz](https://sourceforge.net/projects/glew/files/glew/snapshots/glew-20220402.tgz/download) *GLEW 2.2.0 - with fix for glCreateProgressFenceNVX*
+
+## Build
+
+It is highly recommended to build from a tgz or zip release snapshot.
+The code generation workflow is a complex brew of gnu make, perl and python, that works best on Linux or Mac.
+The code generation is known to work on Windows using [MSYS2](https://www.msys2.org/).
+For most end-users of GLEW the official releases are the best choice, with first class support.
+
+### Linux and Mac
+
+#### Using GNU Make
+
+GNU make is the primary build system for GLEW, historically.
+It includes targets for building the sources and headers, for maintenance purposes.
+
+##### Install build tools
+
+Debian/Ubuntu/Mint: `$ sudo apt-get install build-essential libxmu-dev libxi-dev libgl-dev`
+
+RedHat/CentOS/Fedora: `$ sudo yum install libXmu-devel libXi-devel libGL-devel`
+
+FreeBSD: `# pkg install xorg lang/gcc git cmake gmake bash python perl5`
+
+##### Build
+
+ $ make
+ $ sudo make install
+ $ make clean
+
+Targets: `all, glew.lib (sub-targets: glew.lib.shared, glew.lib.static), glew.bin, clean, install, uninstall`
+
+Variables: `SYSTEM=linux-clang, GLEW_DEST=/usr/local, STRIP=`
+
+_Note: you may need to call `make` in the **auto** folder first_
+
+##### Linux EGL
+
+ $ sudo apt install libegl1-mesa-dev
+ $ make SYSTEM=linux-egl
+
+##### Linux OSMesa
+
+ $ sudo apt install libosmesa-dev
+ $ make SYSTEM=linux-osmesa
+
+##### Linux mingw-w64
+
+ $ sudo apt install mingw-w64
+ $ make SYSTEM=linux-mingw32
+ $ make SYSTEM=linux-mingw64
+
+#### Using cmake
+
+The cmake build is mostly contributor maintained.
+Due to the multitude of use cases this is maintained on a _best effort_ basis.
+Pull requests are welcome.
+
+*CMake 2.8.12 or higher is required.*
+
+##### Install build tools
+
+Debian/Ubuntu/Mint: `$ sudo apt-get install build-essential libxmu-dev libxi-dev libgl-dev cmake git`
+
+RedHat/CentOS/Fedora: `$ sudo yum install libXmu-devel libXi-devel libGL-devel cmake git`
+
+##### Build
+
+ $ cd build
+ $ cmake ./cmake
+ $ make -j4
+
+| Target | Description |
+| ---------- | ----------- |
+| glew | Build the glew shared library. |
+| glew_s | Build the glew static library. |
+| glewinfo | Build the `glewinfo` executable (requires `BUILD_UTILS` to be `ON`). |
+| visualinfo | Build the `visualinfo` executable (requires `BUILD_UTILS` to be `ON`). |
+| install | Install all enabled targets into `CMAKE_INSTALL_PREFIX`. |
+| clean | Clean up build artifacts. |
+| all | Build all enabled targets (default target). |
+
+| Variables | Description |
+| --------------- | ----------- |
+| BUILD_UTILS | Build the `glewinfo` and `visualinfo` executables. |
+| GLEW_REGAL | Build in Regal mode. |
+| GLEW_OSMESA | Build in off-screen Mesa mode. |
+| BUILD_FRAMEWORK | Build as MacOSX Framework. Setting `CMAKE_INSTALL_PREFIX` to `/Library/Frameworks` is recommended. |
+
+### Windows
+
+#### Visual Studio
+
+Use the provided Visual Studio project file in build/vc15/
+
+Projects for vc6, vc10, vc12 and vc14 are also provided
+
+#### MSYS/Mingw
+
+Available from [Mingw](http://www.mingw.org/)
+
+Requirements: bash, make, gcc
+
+ $ mingw32-make
+ $ mingw32-make install
+ $ mingw32-make install.all
+
+Alternative toolchain: `SYSTEM=mingw-win32`
+
+#### MSYS2/Mingw-w64
+
+Available from [Msys2](http://msys2.github.io/) and/or [Mingw-w64](http://mingw-w64.org/)
+
+Requirements: bash, make, gcc
+
+ $ pacman -S gcc make mingw-w64-i686-gcc mingw-w64-x86_64-gcc
+ $ make
+ $ make install
+ $ make install.all
+
+Alternative toolchain: `SYSTEM=msys, SYSTEM=msys-win32, SYSTEM=msys-win64`
+
+## glewinfo
+
+`glewinfo` is a command-line tool useful for inspecting the capabilities of an
+OpenGL implementation and GLEW support for that. Please include `glewinfo.txt`
+with bug reports, as appropriate.
+
+ ---------------------------
+ GLEW Extension Info
+ ---------------------------
+
+ GLEW version 2.0.0
+ Reporting capabilities of pixelformat 3
+ Running on a Intel(R) HD Graphics 3000 from Intel
+ OpenGL version 3.1.0 - Build 9.17.10.4229 is supported
+
+ GL_VERSION_1_1: OK
+ ---------------
+
+ GL_VERSION_1_2: OK
+ ---------------
+ glCopyTexSubImage3D: OK
+ glDrawRangeElements: OK
+ glTexImage3D: OK
+ glTexSubImage3D: OK
+
+ ...
+
+## Code Generation
+
+A Unix or Mac environment is needed for building GLEW from scratch to
+include new extensions, or customize the code generation. The extension
+data is regenerated from the top level source directory with:
+
+ make extensions
+
+An alternative to generating the GLEW sources from scratch is to
+download a pre-generated (unsupported) snapshot:
+
+https://sourceforge.net/projects/glew/files/glew/snapshots/
+
+## Authors
+
+GLEW is currently maintained by [Nigel Stewart](https://github.com/nigels-com)
+with bug fixes, new OpenGL extension support and new releases.
+
+GLEW was developed by [Milan Ikits](http://www.cs.utah.edu/~ikits/)
+and [Marcelo Magallon](http://wwwvis.informatik.uni-stuttgart.de/~magallon/).
+Aaron Lefohn, Joe Kniss, and Chris Wyman were the first users and also
+assisted with the design and debugging process.
+
+The acronym GLEW originates from Aaron Lefohn.
+Pasi K&auml;rkk&auml;inen identified and fixed several problems with
+GLX and SDL. Nate Robins created the `wglinfo` utility, to
+which modifications were made by Michael Wimmer.
+
+## Contributions
+
+GLEW welcomes community contributions. Typically these are co-ordinated
+via [Issues](https://github.com/nigels-com/glew/issues) or
+[Pull Requests](https://github.com/nigels-com/glew/pulls) in the
+GitHub web interface.
+
+Be sure to mention platform and compiler toolchain details when filing
+a bug report. The output of `glewinfo` can be quite useful for discussion
+also.
+
+Generally GLEW is usually released once a year, around the time of the Siggraph
+computer graphics conference. If you're not using the current release
+version of GLEW, be sure to check if the issue or bug is fixed there.
+
+## Copyright and Licensing
+
+GLEW is originally derived from the EXTGL project by Lev Povalahev.
+The source code is licensed under the
+[Modified BSD License](http://glew.sourceforge.net/glew.txt), the
+[Mesa 3-D License](http://glew.sourceforge.net/mesa.txt) (MIT) and the
+[Khronos License](http://glew.sourceforge.net/khronos.txt) (MIT).
+
+The automatic code generation scripts are released under the
+[GNU GPL](http://glew.sourceforge.net/gpl.txt).
diff --git a/glew/src/glew.c b/glew/src/glew.c
new file mode 100644
index 0000000..7d9fb02
--- /dev/null
+++ b/glew/src/glew.c
@@ -0,0 +1,32522 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef GLEW_INCLUDE
+# include <GL/glew.h>
+#else
+# include GLEW_INCLUDE
+#endif
+
+#if defined(GLEW_OSMESA)
+# define GLAPI extern
+# include <GL/osmesa.h>
+#elif defined(GLEW_EGL)
+# include <GL/eglew.h>
+#elif defined(_WIN32)
+/*
+ * If NOGDI is defined, wingdi.h won't be included by windows.h, and thus
+ * wglGetProcAddress won't be declared. It will instead be implicitly declared,
+ * potentially incorrectly, which we don't want.
+ */
+# if defined(NOGDI)
+# undef NOGDI
+# endif
+# include <GL/wglew.h>
+#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))
+# include <GL/glxew.h>
+#endif
+
+#include <stddef.h> /* For size_t */
+
+#if defined(GLEW_EGL)
+#elif defined(GLEW_REGAL)
+
+/* In GLEW_REGAL mode we call directly into the linked
+ libRegal.so glGetProcAddressREGAL for looking up
+ the GL function pointers. */
+
+# undef glGetProcAddressREGAL
+# ifdef WIN32
+extern void * __stdcall glGetProcAddressREGAL(const GLchar *name);
+static void * (__stdcall * regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
+# else
+extern void * glGetProcAddressREGAL(const GLchar *name);
+static void * (*regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
+# endif
+# define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL)
+
+#elif defined(__sgi) || defined (__sun) || defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+void* dlGetProcAddress (const GLubyte* name)
+{
+ static void* h = NULL;
+ static void* gpa;
+
+ if (h == NULL)
+ {
+ if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL;
+ gpa = dlsym(h, "glXGetProcAddress");
+ }
+
+ if (gpa != NULL)
+ return ((void*(*)(const GLubyte*))gpa)(name);
+ else
+ return dlsym(h, (const char*)name);
+}
+#endif /* __sgi || __sun || GLEW_APPLE_GLX */
+
+#if defined(__APPLE__)
+#include <stdlib.h>
+#include <string.h>
+#include <AvailabilityMacros.h>
+
+#ifdef MAC_OS_X_VERSION_10_3
+
+#include <dlfcn.h>
+
+void* NSGLGetProcAddress (const GLubyte *name)
+{
+ static void* image = NULL;
+ void* addr;
+ if (NULL == image)
+ {
+ image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY);
+ }
+ if( !image ) return NULL;
+ addr = dlsym(image, (const char*)name);
+ if( addr ) return addr;
+#ifdef GLEW_APPLE_GLX
+ return dlGetProcAddress( name ); // try next for glx symbols
+#else
+ return NULL;
+#endif
+}
+#else
+
+#include <mach-o/dyld.h>
+
+void* NSGLGetProcAddress (const GLubyte *name)
+{
+ static const struct mach_header* image = NULL;
+ NSSymbol symbol;
+ char* symbolName;
+ if (NULL == image)
+ {
+ image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR);
+ }
+ /* prepend a '_' for the Unix C symbol mangling convention */
+ symbolName = malloc(strlen((const char*)name) + 2);
+ strcpy(symbolName+1, (const char*)name);
+ symbolName[0] = '_';
+ symbol = NULL;
+ /* if (NSIsSymbolNameDefined(symbolName))
+ symbol = NSLookupAndBindSymbol(symbolName); */
+ symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL;
+ free(symbolName);
+ if( symbol ) return NSAddressOfSymbol(symbol);
+#ifdef GLEW_APPLE_GLX
+ return dlGetProcAddress( name ); // try next for glx symbols
+#else
+ return NULL;
+#endif
+}
+#endif /* MAC_OS_X_VERSION_10_3 */
+#endif /* __APPLE__ */
+
+/*
+ * Define glewGetProcAddress.
+ */
+#if defined(GLEW_REGAL)
+# define glewGetProcAddress(name) regalGetProcAddress((const GLchar *)name)
+#elif defined(GLEW_OSMESA)
+# define glewGetProcAddress(name) OSMesaGetProcAddress((const char *)name)
+#elif defined(GLEW_EGL)
+# define glewGetProcAddress(name) eglGetProcAddress((const char *)name)
+#elif defined(_WIN32)
+# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+# define glewGetProcAddress(name) NSGLGetProcAddress(name)
+#elif defined(__sgi) || defined(__sun) || defined(__HAIKU__)
+# define glewGetProcAddress(name) dlGetProcAddress(name)
+#elif defined(__ANDROID__)
+# define glewGetProcAddress(name) NULL /* TODO */
+#elif defined(__native_client__)
+# define glewGetProcAddress(name) NULL /* TODO */
+#else /* __linux */
+# define glewGetProcAddress(name) (*glXGetProcAddressARB)(name)
+#endif
+
+/*
+ * Redefine GLEW_GET_VAR etc without const cast
+ */
+
+#undef GLEW_GET_VAR
+# define GLEW_GET_VAR(x) (x)
+
+#ifdef WGLEW_GET_VAR
+# undef WGLEW_GET_VAR
+# define WGLEW_GET_VAR(x) (x)
+#endif /* WGLEW_GET_VAR */
+
+#ifdef GLXEW_GET_VAR
+# undef GLXEW_GET_VAR
+# define GLXEW_GET_VAR(x) (x)
+#endif /* GLXEW_GET_VAR */
+
+#ifdef EGLEW_GET_VAR
+# undef EGLEW_GET_VAR
+# define EGLEW_GET_VAR(x) (x)
+#endif /* EGLEW_GET_VAR */
+
+/*
+ * GLEW, just like OpenGL or GLU, does not rely on the standard C library.
+ * These functions implement the functionality required in this file.
+ */
+
+static GLuint _glewStrLen (const GLubyte* s)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0') i++;
+ return i;
+}
+
+static GLuint _glewStrCLen (const GLubyte* s, GLubyte c)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0' && s[i] != c) i++;
+ return i;
+}
+
+static GLuint _glewStrCopy(char *d, const char *s, char c)
+{
+ GLuint i=0;
+ if (s == NULL) return 0;
+ while (s[i] != '\0' && s[i] != c) { d[i] = s[i]; i++; }
+ d[i] = '\0';
+ return i;
+}
+
+#if !defined(GLEW_OSMESA)
+#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n)
+{
+ GLuint i=0;
+ if(a == NULL || b == NULL)
+ return (a == NULL && b == NULL && n == 0) ? GL_TRUE : GL_FALSE;
+ while (i < n && a[i] != '\0' && b[i] != '\0' && a[i] == b[i]) i++;
+ return i == n ? GL_TRUE : GL_FALSE;
+}
+#endif
+#endif
+
+static GLboolean _glewStrSame1 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ while (*na > 0 && (**a == ' ' || **a == '\n' || **a == '\r' || **a == '\t'))
+ {
+ (*a)++;
+ (*na)--;
+ }
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if(i == nb)
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+static GLboolean _glewStrSame2 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if(i == nb)
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+static GLboolean _glewStrSame3 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)
+{
+ if(*na >= nb)
+ {
+ GLuint i=0;
+ while (i < nb && (*a)[i] == b[i]) i++;
+ if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\n' || (*a)[i] == '\r' || (*a)[i] == '\t'))
+ {
+ *a = *a + nb;
+ *na = *na - nb;
+ return GL_TRUE;
+ }
+ }
+ return GL_FALSE;
+}
+
+/*
+ * Search for name in the extensions string. Use of strstr()
+ * is not sufficient because extension names can be prefixes of
+ * other extension names. Could use strtok() but the constant
+ * string returned by glGetString might be in read-only memory.
+ */
+#if !defined(GLEW_OSMESA)
+#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+static GLboolean _glewSearchExtension (const char* name, const GLubyte *start, const GLubyte *end)
+{
+ const GLubyte* p;
+ GLuint len = _glewStrLen((const GLubyte*)name);
+ p = start;
+ while (p < end)
+ {
+ GLuint n = _glewStrCLen(p, ' ');
+ if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE;
+ p += n+1;
+ }
+ return GL_FALSE;
+}
+#endif
+#endif
+
+PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D = NULL;
+PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements = NULL;
+PFNGLTEXIMAGE3DPROC __glewTexImage3D = NULL;
+PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D = NULL;
+
+PFNGLACTIVETEXTUREPROC __glewActiveTexture = NULL;
+PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture = NULL;
+PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D = NULL;
+PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D = NULL;
+PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D = NULL;
+PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage = NULL;
+PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd = NULL;
+PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf = NULL;
+PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd = NULL;
+PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf = NULL;
+PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d = NULL;
+PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv = NULL;
+PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f = NULL;
+PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv = NULL;
+PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i = NULL;
+PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv = NULL;
+PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s = NULL;
+PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv = NULL;
+PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d = NULL;
+PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv = NULL;
+PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f = NULL;
+PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv = NULL;
+PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i = NULL;
+PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv = NULL;
+PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s = NULL;
+PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv = NULL;
+PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d = NULL;
+PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv = NULL;
+PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f = NULL;
+PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv = NULL;
+PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i = NULL;
+PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv = NULL;
+PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s = NULL;
+PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv = NULL;
+PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d = NULL;
+PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv = NULL;
+PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f = NULL;
+PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv = NULL;
+PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i = NULL;
+PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv = NULL;
+PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s = NULL;
+PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv = NULL;
+PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage = NULL;
+
+PFNGLBLENDCOLORPROC __glewBlendColor = NULL;
+PFNGLBLENDEQUATIONPROC __glewBlendEquation = NULL;
+PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate = NULL;
+PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer = NULL;
+PFNGLFOGCOORDDPROC __glewFogCoordd = NULL;
+PFNGLFOGCOORDDVPROC __glewFogCoorddv = NULL;
+PFNGLFOGCOORDFPROC __glewFogCoordf = NULL;
+PFNGLFOGCOORDFVPROC __glewFogCoordfv = NULL;
+PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays = NULL;
+PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements = NULL;
+PFNGLPOINTPARAMETERFPROC __glewPointParameterf = NULL;
+PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv = NULL;
+PFNGLPOINTPARAMETERIPROC __glewPointParameteri = NULL;
+PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv = NULL;
+PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b = NULL;
+PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv = NULL;
+PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d = NULL;
+PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv = NULL;
+PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f = NULL;
+PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv = NULL;
+PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i = NULL;
+PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv = NULL;
+PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s = NULL;
+PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv = NULL;
+PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub = NULL;
+PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv = NULL;
+PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui = NULL;
+PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv = NULL;
+PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us = NULL;
+PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv = NULL;
+PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer = NULL;
+PFNGLWINDOWPOS2DPROC __glewWindowPos2d = NULL;
+PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv = NULL;
+PFNGLWINDOWPOS2FPROC __glewWindowPos2f = NULL;
+PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv = NULL;
+PFNGLWINDOWPOS2IPROC __glewWindowPos2i = NULL;
+PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv = NULL;
+PFNGLWINDOWPOS2SPROC __glewWindowPos2s = NULL;
+PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv = NULL;
+PFNGLWINDOWPOS3DPROC __glewWindowPos3d = NULL;
+PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv = NULL;
+PFNGLWINDOWPOS3FPROC __glewWindowPos3f = NULL;
+PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv = NULL;
+PFNGLWINDOWPOS3IPROC __glewWindowPos3i = NULL;
+PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv = NULL;
+PFNGLWINDOWPOS3SPROC __glewWindowPos3s = NULL;
+PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv = NULL;
+
+PFNGLBEGINQUERYPROC __glewBeginQuery = NULL;
+PFNGLBINDBUFFERPROC __glewBindBuffer = NULL;
+PFNGLBUFFERDATAPROC __glewBufferData = NULL;
+PFNGLBUFFERSUBDATAPROC __glewBufferSubData = NULL;
+PFNGLDELETEBUFFERSPROC __glewDeleteBuffers = NULL;
+PFNGLDELETEQUERIESPROC __glewDeleteQueries = NULL;
+PFNGLENDQUERYPROC __glewEndQuery = NULL;
+PFNGLGENBUFFERSPROC __glewGenBuffers = NULL;
+PFNGLGENQUERIESPROC __glewGenQueries = NULL;
+PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv = NULL;
+PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv = NULL;
+PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData = NULL;
+PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv = NULL;
+PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv = NULL;
+PFNGLGETQUERYIVPROC __glewGetQueryiv = NULL;
+PFNGLISBUFFERPROC __glewIsBuffer = NULL;
+PFNGLISQUERYPROC __glewIsQuery = NULL;
+PFNGLMAPBUFFERPROC __glewMapBuffer = NULL;
+PFNGLUNMAPBUFFERPROC __glewUnmapBuffer = NULL;
+
+PFNGLATTACHSHADERPROC __glewAttachShader = NULL;
+PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation = NULL;
+PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate = NULL;
+PFNGLCOMPILESHADERPROC __glewCompileShader = NULL;
+PFNGLCREATEPROGRAMPROC __glewCreateProgram = NULL;
+PFNGLCREATESHADERPROC __glewCreateShader = NULL;
+PFNGLDELETEPROGRAMPROC __glewDeleteProgram = NULL;
+PFNGLDELETESHADERPROC __glewDeleteShader = NULL;
+PFNGLDETACHSHADERPROC __glewDetachShader = NULL;
+PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray = NULL;
+PFNGLDRAWBUFFERSPROC __glewDrawBuffers = NULL;
+PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray = NULL;
+PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib = NULL;
+PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform = NULL;
+PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders = NULL;
+PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation = NULL;
+PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog = NULL;
+PFNGLGETPROGRAMIVPROC __glewGetProgramiv = NULL;
+PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog = NULL;
+PFNGLGETSHADERSOURCEPROC __glewGetShaderSource = NULL;
+PFNGLGETSHADERIVPROC __glewGetShaderiv = NULL;
+PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation = NULL;
+PFNGLGETUNIFORMFVPROC __glewGetUniformfv = NULL;
+PFNGLGETUNIFORMIVPROC __glewGetUniformiv = NULL;
+PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv = NULL;
+PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv = NULL;
+PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv = NULL;
+PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv = NULL;
+PFNGLISPROGRAMPROC __glewIsProgram = NULL;
+PFNGLISSHADERPROC __glewIsShader = NULL;
+PFNGLLINKPROGRAMPROC __glewLinkProgram = NULL;
+PFNGLSHADERSOURCEPROC __glewShaderSource = NULL;
+PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate = NULL;
+PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate = NULL;
+PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate = NULL;
+PFNGLUNIFORM1FPROC __glewUniform1f = NULL;
+PFNGLUNIFORM1FVPROC __glewUniform1fv = NULL;
+PFNGLUNIFORM1IPROC __glewUniform1i = NULL;
+PFNGLUNIFORM1IVPROC __glewUniform1iv = NULL;
+PFNGLUNIFORM2FPROC __glewUniform2f = NULL;
+PFNGLUNIFORM2FVPROC __glewUniform2fv = NULL;
+PFNGLUNIFORM2IPROC __glewUniform2i = NULL;
+PFNGLUNIFORM2IVPROC __glewUniform2iv = NULL;
+PFNGLUNIFORM3FPROC __glewUniform3f = NULL;
+PFNGLUNIFORM3FVPROC __glewUniform3fv = NULL;
+PFNGLUNIFORM3IPROC __glewUniform3i = NULL;
+PFNGLUNIFORM3IVPROC __glewUniform3iv = NULL;
+PFNGLUNIFORM4FPROC __glewUniform4f = NULL;
+PFNGLUNIFORM4FVPROC __glewUniform4fv = NULL;
+PFNGLUNIFORM4IPROC __glewUniform4i = NULL;
+PFNGLUNIFORM4IVPROC __glewUniform4iv = NULL;
+PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv = NULL;
+PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv = NULL;
+PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv = NULL;
+PFNGLUSEPROGRAMPROC __glewUseProgram = NULL;
+PFNGLVALIDATEPROGRAMPROC __glewValidateProgram = NULL;
+PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d = NULL;
+PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv = NULL;
+PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f = NULL;
+PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv = NULL;
+PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s = NULL;
+PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv = NULL;
+PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d = NULL;
+PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv = NULL;
+PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f = NULL;
+PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv = NULL;
+PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s = NULL;
+PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv = NULL;
+PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d = NULL;
+PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv = NULL;
+PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f = NULL;
+PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv = NULL;
+PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s = NULL;
+PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv = NULL;
+PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv = NULL;
+PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv = NULL;
+PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv = NULL;
+PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub = NULL;
+PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv = NULL;
+PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv = NULL;
+PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv = NULL;
+PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv = NULL;
+PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d = NULL;
+PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv = NULL;
+PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f = NULL;
+PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv = NULL;
+PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv = NULL;
+PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s = NULL;
+PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv = NULL;
+PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv = NULL;
+PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv = NULL;
+PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv = NULL;
+PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer = NULL;
+
+PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv = NULL;
+PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv = NULL;
+PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv = NULL;
+PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv = NULL;
+PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv = NULL;
+PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv = NULL;
+
+PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender = NULL;
+PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback = NULL;
+PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation = NULL;
+PFNGLCLAMPCOLORPROC __glewClampColor = NULL;
+PFNGLCLEARBUFFERFIPROC __glewClearBufferfi = NULL;
+PFNGLCLEARBUFFERFVPROC __glewClearBufferfv = NULL;
+PFNGLCLEARBUFFERIVPROC __glewClearBufferiv = NULL;
+PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv = NULL;
+PFNGLCOLORMASKIPROC __glewColorMaski = NULL;
+PFNGLDISABLEIPROC __glewDisablei = NULL;
+PFNGLENABLEIPROC __glewEnablei = NULL;
+PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender = NULL;
+PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback = NULL;
+PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v = NULL;
+PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation = NULL;
+PFNGLGETSTRINGIPROC __glewGetStringi = NULL;
+PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv = NULL;
+PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv = NULL;
+PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying = NULL;
+PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv = NULL;
+PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv = NULL;
+PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv = NULL;
+PFNGLISENABLEDIPROC __glewIsEnabledi = NULL;
+PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv = NULL;
+PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv = NULL;
+PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings = NULL;
+PFNGLUNIFORM1UIPROC __glewUniform1ui = NULL;
+PFNGLUNIFORM1UIVPROC __glewUniform1uiv = NULL;
+PFNGLUNIFORM2UIPROC __glewUniform2ui = NULL;
+PFNGLUNIFORM2UIVPROC __glewUniform2uiv = NULL;
+PFNGLUNIFORM3UIPROC __glewUniform3ui = NULL;
+PFNGLUNIFORM3UIVPROC __glewUniform3uiv = NULL;
+PFNGLUNIFORM4UIPROC __glewUniform4ui = NULL;
+PFNGLUNIFORM4UIVPROC __glewUniform4uiv = NULL;
+PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i = NULL;
+PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv = NULL;
+PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui = NULL;
+PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv = NULL;
+PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i = NULL;
+PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv = NULL;
+PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui = NULL;
+PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv = NULL;
+PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i = NULL;
+PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv = NULL;
+PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui = NULL;
+PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv = NULL;
+PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv = NULL;
+PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i = NULL;
+PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv = NULL;
+PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv = NULL;
+PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv = NULL;
+PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui = NULL;
+PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv = NULL;
+PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv = NULL;
+PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced = NULL;
+PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced = NULL;
+PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex = NULL;
+PFNGLTEXBUFFERPROC __glewTexBuffer = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture = NULL;
+PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v = NULL;
+PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v = NULL;
+
+PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei = NULL;
+PFNGLBLENDEQUATIONIPROC __glewBlendEquationi = NULL;
+PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei = NULL;
+PFNGLBLENDFUNCIPROC __glewBlendFunci = NULL;
+PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading = NULL;
+
+PFNGLGETGRAPHICSRESETSTATUSPROC __glewGetGraphicsResetStatus = NULL;
+PFNGLGETNCOMPRESSEDTEXIMAGEPROC __glewGetnCompressedTexImage = NULL;
+PFNGLGETNTEXIMAGEPROC __glewGetnTexImage = NULL;
+PFNGLGETNUNIFORMDVPROC __glewGetnUniformdv = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC __glewMultiDrawArraysIndirectCount = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC __glewMultiDrawElementsIndirectCount = NULL;
+PFNGLSPECIALIZESHADERPROC __glewSpecializeShader = NULL;
+
+PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX = NULL;
+
+PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD = NULL;
+PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD = NULL;
+PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD = NULL;
+PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD = NULL;
+
+PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD = NULL;
+PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD = NULL;
+PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD = NULL;
+PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD = NULL;
+
+PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC __glewNamedRenderbufferStorageMultisampleAdvancedAMD = NULL;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC __glewRenderbufferStorageMultisampleAdvancedAMD = NULL;
+
+PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewFramebufferSamplePositionsfvAMD = NULL;
+PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC __glewGetFramebufferParameterfvAMD = NULL;
+PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC __glewGetNamedFramebufferParameterfvAMD = NULL;
+PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewNamedFramebufferSamplePositionsfvAMD = NULL;
+
+PFNGLVERTEXATTRIBPARAMETERIAMDPROC __glewVertexAttribParameteriAMD = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD = NULL;
+
+PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD = NULL;
+PFNGLGENNAMESAMDPROC __glewGenNamesAMD = NULL;
+PFNGLISNAMEAMDPROC __glewIsNameAMD = NULL;
+
+PFNGLQUERYOBJECTPARAMETERUIAMDPROC __glewQueryObjectParameteruiAMD = NULL;
+
+PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD = NULL;
+PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD = NULL;
+PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD = NULL;
+PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD = NULL;
+PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD = NULL;
+PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD = NULL;
+PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD = NULL;
+PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD = NULL;
+PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD = NULL;
+PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD = NULL;
+PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD = NULL;
+
+PFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD = NULL;
+
+PFNGLTEXSTORAGESPARSEAMDPROC __glewTexStorageSparseAMD = NULL;
+PFNGLTEXTURESTORAGESPARSEAMDPROC __glewTextureStorageSparseAMD = NULL;
+
+PFNGLSTENCILOPVALUEAMDPROC __glewStencilOpValueAMD = NULL;
+
+PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD = NULL;
+PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD = NULL;
+
+PFNGLBLITFRAMEBUFFERANGLEPROC __glewBlitFramebufferANGLE = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC __glewRenderbufferStorageMultisampleANGLE = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDANGLEPROC __glewDrawArraysInstancedANGLE = NULL;
+PFNGLDRAWELEMENTSINSTANCEDANGLEPROC __glewDrawElementsInstancedANGLE = NULL;
+PFNGLVERTEXATTRIBDIVISORANGLEPROC __glewVertexAttribDivisorANGLE = NULL;
+
+PFNGLBEGINQUERYANGLEPROC __glewBeginQueryANGLE = NULL;
+PFNGLDELETEQUERIESANGLEPROC __glewDeleteQueriesANGLE = NULL;
+PFNGLENDQUERYANGLEPROC __glewEndQueryANGLE = NULL;
+PFNGLGENQUERIESANGLEPROC __glewGenQueriesANGLE = NULL;
+PFNGLGETQUERYOBJECTI64VANGLEPROC __glewGetQueryObjecti64vANGLE = NULL;
+PFNGLGETQUERYOBJECTIVANGLEPROC __glewGetQueryObjectivANGLE = NULL;
+PFNGLGETQUERYOBJECTUI64VANGLEPROC __glewGetQueryObjectui64vANGLE = NULL;
+PFNGLGETQUERYOBJECTUIVANGLEPROC __glewGetQueryObjectuivANGLE = NULL;
+PFNGLGETQUERYIVANGLEPROC __glewGetQueryivANGLE = NULL;
+PFNGLISQUERYANGLEPROC __glewIsQueryANGLE = NULL;
+PFNGLQUERYCOUNTERANGLEPROC __glewQueryCounterANGLE = NULL;
+
+PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC __glewGetTranslatedShaderSourceANGLE = NULL;
+
+PFNGLCOPYTEXTURELEVELSAPPLEPROC __glewCopyTextureLevelsAPPLE = NULL;
+
+PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE = NULL;
+PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE = NULL;
+PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE = NULL;
+PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE = NULL;
+PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE = NULL;
+
+PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE = NULL;
+PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE = NULL;
+PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE = NULL;
+PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE = NULL;
+PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE = NULL;
+PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE = NULL;
+PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE = NULL;
+PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE = NULL;
+
+PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE = NULL;
+PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __glewRenderbufferStorageMultisampleAPPLE = NULL;
+PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __glewResolveMultisampleFramebufferAPPLE = NULL;
+
+PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE = NULL;
+PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE = NULL;
+PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE = NULL;
+
+PFNGLCLIENTWAITSYNCAPPLEPROC __glewClientWaitSyncAPPLE = NULL;
+PFNGLDELETESYNCAPPLEPROC __glewDeleteSyncAPPLE = NULL;
+PFNGLFENCESYNCAPPLEPROC __glewFenceSyncAPPLE = NULL;
+PFNGLGETINTEGER64VAPPLEPROC __glewGetInteger64vAPPLE = NULL;
+PFNGLGETSYNCIVAPPLEPROC __glewGetSyncivAPPLE = NULL;
+PFNGLISSYNCAPPLEPROC __glewIsSyncAPPLE = NULL;
+PFNGLWAITSYNCAPPLEPROC __glewWaitSyncAPPLE = NULL;
+
+PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE = NULL;
+PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE = NULL;
+
+PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE = NULL;
+PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE = NULL;
+PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE = NULL;
+PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE = NULL;
+
+PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE = NULL;
+PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE = NULL;
+PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE = NULL;
+
+PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE = NULL;
+PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE = NULL;
+PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE = NULL;
+PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE = NULL;
+PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE = NULL;
+PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE = NULL;
+PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE = NULL;
+
+PFNGLCLEARDEPTHFPROC __glewClearDepthf = NULL;
+PFNGLDEPTHRANGEFPROC __glewDepthRangef = NULL;
+PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat = NULL;
+PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler = NULL;
+PFNGLSHADERBINARYPROC __glewShaderBinary = NULL;
+
+PFNGLMEMORYBARRIERBYREGIONPROC __glewMemoryBarrierByRegion = NULL;
+
+PFNGLPRIMITIVEBOUNDINGBOXARBPROC __glewPrimitiveBoundingBoxARB = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance = NULL;
+
+PFNGLGETIMAGEHANDLEARBPROC __glewGetImageHandleARB = NULL;
+PFNGLGETTEXTUREHANDLEARBPROC __glewGetTextureHandleARB = NULL;
+PFNGLGETTEXTURESAMPLERHANDLEARBPROC __glewGetTextureSamplerHandleARB = NULL;
+PFNGLGETVERTEXATTRIBLUI64VARBPROC __glewGetVertexAttribLui64vARB = NULL;
+PFNGLISIMAGEHANDLERESIDENTARBPROC __glewIsImageHandleResidentARB = NULL;
+PFNGLISTEXTUREHANDLERESIDENTARBPROC __glewIsTextureHandleResidentARB = NULL;
+PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC __glewMakeImageHandleNonResidentARB = NULL;
+PFNGLMAKEIMAGEHANDLERESIDENTARBPROC __glewMakeImageHandleResidentARB = NULL;
+PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC __glewMakeTextureHandleNonResidentARB = NULL;
+PFNGLMAKETEXTUREHANDLERESIDENTARBPROC __glewMakeTextureHandleResidentARB = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC __glewProgramUniformHandleui64ARB = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC __glewProgramUniformHandleui64vARB = NULL;
+PFNGLUNIFORMHANDLEUI64ARBPROC __glewUniformHandleui64ARB = NULL;
+PFNGLUNIFORMHANDLEUI64VARBPROC __glewUniformHandleui64vARB = NULL;
+PFNGLVERTEXATTRIBL1UI64ARBPROC __glewVertexAttribL1ui64ARB = NULL;
+PFNGLVERTEXATTRIBL1UI64VARBPROC __glewVertexAttribL1ui64vARB = NULL;
+
+PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed = NULL;
+PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex = NULL;
+
+PFNGLBUFFERSTORAGEPROC __glewBufferStorage = NULL;
+
+PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB = NULL;
+
+PFNGLCLEARBUFFERDATAPROC __glewClearBufferData = NULL;
+PFNGLCLEARBUFFERSUBDATAPROC __glewClearBufferSubData = NULL;
+PFNGLCLEARNAMEDBUFFERDATAEXTPROC __glewClearNamedBufferDataEXT = NULL;
+PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC __glewClearNamedBufferSubDataEXT = NULL;
+
+PFNGLCLEARTEXIMAGEPROC __glewClearTexImage = NULL;
+PFNGLCLEARTEXSUBIMAGEPROC __glewClearTexSubImage = NULL;
+
+PFNGLCLIPCONTROLPROC __glewClipControl = NULL;
+
+PFNGLCLAMPCOLORARBPROC __glewClampColorARB = NULL;
+
+PFNGLDISPATCHCOMPUTEPROC __glewDispatchCompute = NULL;
+PFNGLDISPATCHCOMPUTEINDIRECTPROC __glewDispatchComputeIndirect = NULL;
+
+PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC __glewDispatchComputeGroupSizeARB = NULL;
+
+PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData = NULL;
+
+PFNGLCOPYIMAGESUBDATAPROC __glewCopyImageSubData = NULL;
+
+PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB = NULL;
+PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB = NULL;
+PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB = NULL;
+PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB = NULL;
+
+PFNGLBINDTEXTUREUNITPROC __glewBindTextureUnit = NULL;
+PFNGLBLITNAMEDFRAMEBUFFERPROC __glewBlitNamedFramebuffer = NULL;
+PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC __glewCheckNamedFramebufferStatus = NULL;
+PFNGLCLEARNAMEDBUFFERDATAPROC __glewClearNamedBufferData = NULL;
+PFNGLCLEARNAMEDBUFFERSUBDATAPROC __glewClearNamedBufferSubData = NULL;
+PFNGLCLEARNAMEDFRAMEBUFFERFIPROC __glewClearNamedFramebufferfi = NULL;
+PFNGLCLEARNAMEDFRAMEBUFFERFVPROC __glewClearNamedFramebufferfv = NULL;
+PFNGLCLEARNAMEDFRAMEBUFFERIVPROC __glewClearNamedFramebufferiv = NULL;
+PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC __glewClearNamedFramebufferuiv = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC __glewCompressedTextureSubImage1D = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC __glewCompressedTextureSubImage2D = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC __glewCompressedTextureSubImage3D = NULL;
+PFNGLCOPYNAMEDBUFFERSUBDATAPROC __glewCopyNamedBufferSubData = NULL;
+PFNGLCOPYTEXTURESUBIMAGE1DPROC __glewCopyTextureSubImage1D = NULL;
+PFNGLCOPYTEXTURESUBIMAGE2DPROC __glewCopyTextureSubImage2D = NULL;
+PFNGLCOPYTEXTURESUBIMAGE3DPROC __glewCopyTextureSubImage3D = NULL;
+PFNGLCREATEBUFFERSPROC __glewCreateBuffers = NULL;
+PFNGLCREATEFRAMEBUFFERSPROC __glewCreateFramebuffers = NULL;
+PFNGLCREATEPROGRAMPIPELINESPROC __glewCreateProgramPipelines = NULL;
+PFNGLCREATEQUERIESPROC __glewCreateQueries = NULL;
+PFNGLCREATERENDERBUFFERSPROC __glewCreateRenderbuffers = NULL;
+PFNGLCREATESAMPLERSPROC __glewCreateSamplers = NULL;
+PFNGLCREATETEXTURESPROC __glewCreateTextures = NULL;
+PFNGLCREATETRANSFORMFEEDBACKSPROC __glewCreateTransformFeedbacks = NULL;
+PFNGLCREATEVERTEXARRAYSPROC __glewCreateVertexArrays = NULL;
+PFNGLDISABLEVERTEXARRAYATTRIBPROC __glewDisableVertexArrayAttrib = NULL;
+PFNGLENABLEVERTEXARRAYATTRIBPROC __glewEnableVertexArrayAttrib = NULL;
+PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC __glewFlushMappedNamedBufferRange = NULL;
+PFNGLGENERATETEXTUREMIPMAPPROC __glewGenerateTextureMipmap = NULL;
+PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC __glewGetCompressedTextureImage = NULL;
+PFNGLGETNAMEDBUFFERPARAMETERI64VPROC __glewGetNamedBufferParameteri64v = NULL;
+PFNGLGETNAMEDBUFFERPARAMETERIVPROC __glewGetNamedBufferParameteriv = NULL;
+PFNGLGETNAMEDBUFFERPOINTERVPROC __glewGetNamedBufferPointerv = NULL;
+PFNGLGETNAMEDBUFFERSUBDATAPROC __glewGetNamedBufferSubData = NULL;
+PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetNamedFramebufferAttachmentParameteriv = NULL;
+PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC __glewGetNamedFramebufferParameteriv = NULL;
+PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC __glewGetNamedRenderbufferParameteriv = NULL;
+PFNGLGETQUERYBUFFEROBJECTI64VPROC __glewGetQueryBufferObjecti64v = NULL;
+PFNGLGETQUERYBUFFEROBJECTIVPROC __glewGetQueryBufferObjectiv = NULL;
+PFNGLGETQUERYBUFFEROBJECTUI64VPROC __glewGetQueryBufferObjectui64v = NULL;
+PFNGLGETQUERYBUFFEROBJECTUIVPROC __glewGetQueryBufferObjectuiv = NULL;
+PFNGLGETTEXTUREIMAGEPROC __glewGetTextureImage = NULL;
+PFNGLGETTEXTURELEVELPARAMETERFVPROC __glewGetTextureLevelParameterfv = NULL;
+PFNGLGETTEXTURELEVELPARAMETERIVPROC __glewGetTextureLevelParameteriv = NULL;
+PFNGLGETTEXTUREPARAMETERIIVPROC __glewGetTextureParameterIiv = NULL;
+PFNGLGETTEXTUREPARAMETERIUIVPROC __glewGetTextureParameterIuiv = NULL;
+PFNGLGETTEXTUREPARAMETERFVPROC __glewGetTextureParameterfv = NULL;
+PFNGLGETTEXTUREPARAMETERIVPROC __glewGetTextureParameteriv = NULL;
+PFNGLGETTRANSFORMFEEDBACKI64_VPROC __glewGetTransformFeedbacki64_v = NULL;
+PFNGLGETTRANSFORMFEEDBACKI_VPROC __glewGetTransformFeedbacki_v = NULL;
+PFNGLGETTRANSFORMFEEDBACKIVPROC __glewGetTransformFeedbackiv = NULL;
+PFNGLGETVERTEXARRAYINDEXED64IVPROC __glewGetVertexArrayIndexed64iv = NULL;
+PFNGLGETVERTEXARRAYINDEXEDIVPROC __glewGetVertexArrayIndexediv = NULL;
+PFNGLGETVERTEXARRAYIVPROC __glewGetVertexArrayiv = NULL;
+PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC __glewInvalidateNamedFramebufferData = NULL;
+PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC __glewInvalidateNamedFramebufferSubData = NULL;
+PFNGLMAPNAMEDBUFFERPROC __glewMapNamedBuffer = NULL;
+PFNGLMAPNAMEDBUFFERRANGEPROC __glewMapNamedBufferRange = NULL;
+PFNGLNAMEDBUFFERDATAPROC __glewNamedBufferData = NULL;
+PFNGLNAMEDBUFFERSTORAGEPROC __glewNamedBufferStorage = NULL;
+PFNGLNAMEDBUFFERSUBDATAPROC __glewNamedBufferSubData = NULL;
+PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC __glewNamedFramebufferDrawBuffer = NULL;
+PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC __glewNamedFramebufferDrawBuffers = NULL;
+PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC __glewNamedFramebufferParameteri = NULL;
+PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC __glewNamedFramebufferReadBuffer = NULL;
+PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC __glewNamedFramebufferRenderbuffer = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTUREPROC __glewNamedFramebufferTexture = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC __glewNamedFramebufferTextureLayer = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEPROC __glewNamedRenderbufferStorage = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewNamedRenderbufferStorageMultisample = NULL;
+PFNGLTEXTUREBUFFERPROC __glewTextureBuffer = NULL;
+PFNGLTEXTUREBUFFERRANGEPROC __glewTextureBufferRange = NULL;
+PFNGLTEXTUREPARAMETERIIVPROC __glewTextureParameterIiv = NULL;
+PFNGLTEXTUREPARAMETERIUIVPROC __glewTextureParameterIuiv = NULL;
+PFNGLTEXTUREPARAMETERFPROC __glewTextureParameterf = NULL;
+PFNGLTEXTUREPARAMETERFVPROC __glewTextureParameterfv = NULL;
+PFNGLTEXTUREPARAMETERIPROC __glewTextureParameteri = NULL;
+PFNGLTEXTUREPARAMETERIVPROC __glewTextureParameteriv = NULL;
+PFNGLTEXTURESTORAGE1DPROC __glewTextureStorage1D = NULL;
+PFNGLTEXTURESTORAGE2DPROC __glewTextureStorage2D = NULL;
+PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC __glewTextureStorage2DMultisample = NULL;
+PFNGLTEXTURESTORAGE3DPROC __glewTextureStorage3D = NULL;
+PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC __glewTextureStorage3DMultisample = NULL;
+PFNGLTEXTURESUBIMAGE1DPROC __glewTextureSubImage1D = NULL;
+PFNGLTEXTURESUBIMAGE2DPROC __glewTextureSubImage2D = NULL;
+PFNGLTEXTURESUBIMAGE3DPROC __glewTextureSubImage3D = NULL;
+PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC __glewTransformFeedbackBufferBase = NULL;
+PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC __glewTransformFeedbackBufferRange = NULL;
+PFNGLUNMAPNAMEDBUFFERPROC __glewUnmapNamedBuffer = NULL;
+PFNGLVERTEXARRAYATTRIBBINDINGPROC __glewVertexArrayAttribBinding = NULL;
+PFNGLVERTEXARRAYATTRIBFORMATPROC __glewVertexArrayAttribFormat = NULL;
+PFNGLVERTEXARRAYATTRIBIFORMATPROC __glewVertexArrayAttribIFormat = NULL;
+PFNGLVERTEXARRAYATTRIBLFORMATPROC __glewVertexArrayAttribLFormat = NULL;
+PFNGLVERTEXARRAYBINDINGDIVISORPROC __glewVertexArrayBindingDivisor = NULL;
+PFNGLVERTEXARRAYELEMENTBUFFERPROC __glewVertexArrayElementBuffer = NULL;
+PFNGLVERTEXARRAYVERTEXBUFFERPROC __glewVertexArrayVertexBuffer = NULL;
+PFNGLVERTEXARRAYVERTEXBUFFERSPROC __glewVertexArrayVertexBuffers = NULL;
+
+PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB = NULL;
+PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB = NULL;
+PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB = NULL;
+PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB = NULL;
+
+PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex = NULL;
+PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex = NULL;
+PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex = NULL;
+
+PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect = NULL;
+PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect = NULL;
+
+PFNGLFRAMEBUFFERPARAMETERIPROC __glewFramebufferParameteri = NULL;
+PFNGLGETFRAMEBUFFERPARAMETERIVPROC __glewGetFramebufferParameteriv = NULL;
+PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC __glewGetNamedFramebufferParameterivEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC __glewNamedFramebufferParameteriEXT = NULL;
+
+PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer = NULL;
+PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer = NULL;
+PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer = NULL;
+PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus = NULL;
+PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers = NULL;
+PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers = NULL;
+PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer = NULL;
+PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D = NULL;
+PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D = NULL;
+PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer = NULL;
+PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers = NULL;
+PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers = NULL;
+PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap = NULL;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv = NULL;
+PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv = NULL;
+PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer = NULL;
+PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer = NULL;
+PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage = NULL;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB = NULL;
+PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB = NULL;
+PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB = NULL;
+
+PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary = NULL;
+PFNGLPROGRAMBINARYPROC __glewProgramBinary = NULL;
+PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri = NULL;
+
+PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC __glewGetCompressedTextureSubImage = NULL;
+PFNGLGETTEXTURESUBIMAGEPROC __glewGetTextureSubImage = NULL;
+
+PFNGLSPECIALIZESHADERARBPROC __glewSpecializeShaderARB = NULL;
+
+PFNGLGETUNIFORMDVPROC __glewGetUniformdv = NULL;
+PFNGLUNIFORM1DPROC __glewUniform1d = NULL;
+PFNGLUNIFORM1DVPROC __glewUniform1dv = NULL;
+PFNGLUNIFORM2DPROC __glewUniform2d = NULL;
+PFNGLUNIFORM2DVPROC __glewUniform2dv = NULL;
+PFNGLUNIFORM3DPROC __glewUniform3d = NULL;
+PFNGLUNIFORM3DVPROC __glewUniform3dv = NULL;
+PFNGLUNIFORM4DPROC __glewUniform4d = NULL;
+PFNGLUNIFORM4DVPROC __glewUniform4dv = NULL;
+PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv = NULL;
+PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv = NULL;
+PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv = NULL;
+PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv = NULL;
+PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv = NULL;
+PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv = NULL;
+PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv = NULL;
+PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv = NULL;
+PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv = NULL;
+
+PFNGLGETUNIFORMI64VARBPROC __glewGetUniformi64vARB = NULL;
+PFNGLGETUNIFORMUI64VARBPROC __glewGetUniformui64vARB = NULL;
+PFNGLGETNUNIFORMI64VARBPROC __glewGetnUniformi64vARB = NULL;
+PFNGLGETNUNIFORMUI64VARBPROC __glewGetnUniformui64vARB = NULL;
+PFNGLPROGRAMUNIFORM1I64ARBPROC __glewProgramUniform1i64ARB = NULL;
+PFNGLPROGRAMUNIFORM1I64VARBPROC __glewProgramUniform1i64vARB = NULL;
+PFNGLPROGRAMUNIFORM1UI64ARBPROC __glewProgramUniform1ui64ARB = NULL;
+PFNGLPROGRAMUNIFORM1UI64VARBPROC __glewProgramUniform1ui64vARB = NULL;
+PFNGLPROGRAMUNIFORM2I64ARBPROC __glewProgramUniform2i64ARB = NULL;
+PFNGLPROGRAMUNIFORM2I64VARBPROC __glewProgramUniform2i64vARB = NULL;
+PFNGLPROGRAMUNIFORM2UI64ARBPROC __glewProgramUniform2ui64ARB = NULL;
+PFNGLPROGRAMUNIFORM2UI64VARBPROC __glewProgramUniform2ui64vARB = NULL;
+PFNGLPROGRAMUNIFORM3I64ARBPROC __glewProgramUniform3i64ARB = NULL;
+PFNGLPROGRAMUNIFORM3I64VARBPROC __glewProgramUniform3i64vARB = NULL;
+PFNGLPROGRAMUNIFORM3UI64ARBPROC __glewProgramUniform3ui64ARB = NULL;
+PFNGLPROGRAMUNIFORM3UI64VARBPROC __glewProgramUniform3ui64vARB = NULL;
+PFNGLPROGRAMUNIFORM4I64ARBPROC __glewProgramUniform4i64ARB = NULL;
+PFNGLPROGRAMUNIFORM4I64VARBPROC __glewProgramUniform4i64vARB = NULL;
+PFNGLPROGRAMUNIFORM4UI64ARBPROC __glewProgramUniform4ui64ARB = NULL;
+PFNGLPROGRAMUNIFORM4UI64VARBPROC __glewProgramUniform4ui64vARB = NULL;
+PFNGLUNIFORM1I64ARBPROC __glewUniform1i64ARB = NULL;
+PFNGLUNIFORM1I64VARBPROC __glewUniform1i64vARB = NULL;
+PFNGLUNIFORM1UI64ARBPROC __glewUniform1ui64ARB = NULL;
+PFNGLUNIFORM1UI64VARBPROC __glewUniform1ui64vARB = NULL;
+PFNGLUNIFORM2I64ARBPROC __glewUniform2i64ARB = NULL;
+PFNGLUNIFORM2I64VARBPROC __glewUniform2i64vARB = NULL;
+PFNGLUNIFORM2UI64ARBPROC __glewUniform2ui64ARB = NULL;
+PFNGLUNIFORM2UI64VARBPROC __glewUniform2ui64vARB = NULL;
+PFNGLUNIFORM3I64ARBPROC __glewUniform3i64ARB = NULL;
+PFNGLUNIFORM3I64VARBPROC __glewUniform3i64vARB = NULL;
+PFNGLUNIFORM3UI64ARBPROC __glewUniform3ui64ARB = NULL;
+PFNGLUNIFORM3UI64VARBPROC __glewUniform3ui64vARB = NULL;
+PFNGLUNIFORM4I64ARBPROC __glewUniform4i64ARB = NULL;
+PFNGLUNIFORM4I64VARBPROC __glewUniform4i64vARB = NULL;
+PFNGLUNIFORM4UI64ARBPROC __glewUniform4ui64ARB = NULL;
+PFNGLUNIFORM4UI64VARBPROC __glewUniform4ui64vARB = NULL;
+
+PFNGLCOLORSUBTABLEPROC __glewColorSubTable = NULL;
+PFNGLCOLORTABLEPROC __glewColorTable = NULL;
+PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv = NULL;
+PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv = NULL;
+PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D = NULL;
+PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D = NULL;
+PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf = NULL;
+PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv = NULL;
+PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri = NULL;
+PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv = NULL;
+PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable = NULL;
+PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable = NULL;
+PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D = NULL;
+PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D = NULL;
+PFNGLGETCOLORTABLEPROC __glewGetColorTable = NULL;
+PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv = NULL;
+PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv = NULL;
+PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter = NULL;
+PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv = NULL;
+PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv = NULL;
+PFNGLGETHISTOGRAMPROC __glewGetHistogram = NULL;
+PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv = NULL;
+PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv = NULL;
+PFNGLGETMINMAXPROC __glewGetMinmax = NULL;
+PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv = NULL;
+PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv = NULL;
+PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter = NULL;
+PFNGLHISTOGRAMPROC __glewHistogram = NULL;
+PFNGLMINMAXPROC __glewMinmax = NULL;
+PFNGLRESETHISTOGRAMPROC __glewResetHistogram = NULL;
+PFNGLRESETMINMAXPROC __glewResetMinmax = NULL;
+PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __glewMultiDrawArraysIndirectCountARB = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __glewMultiDrawElementsIndirectCountARB = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB = NULL;
+PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB = NULL;
+PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB = NULL;
+
+PFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ = NULL;
+
+PFNGLGETINTERNALFORMATI64VPROC __glewGetInternalformati64v = NULL;
+
+PFNGLINVALIDATEBUFFERDATAPROC __glewInvalidateBufferData = NULL;
+PFNGLINVALIDATEBUFFERSUBDATAPROC __glewInvalidateBufferSubData = NULL;
+PFNGLINVALIDATEFRAMEBUFFERPROC __glewInvalidateFramebuffer = NULL;
+PFNGLINVALIDATESUBFRAMEBUFFERPROC __glewInvalidateSubFramebuffer = NULL;
+PFNGLINVALIDATETEXIMAGEPROC __glewInvalidateTexImage = NULL;
+PFNGLINVALIDATETEXSUBIMAGEPROC __glewInvalidateTexSubImage = NULL;
+
+PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange = NULL;
+PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange = NULL;
+
+PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB = NULL;
+PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB = NULL;
+PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB = NULL;
+PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB = NULL;
+PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB = NULL;
+
+PFNGLBINDBUFFERSBASEPROC __glewBindBuffersBase = NULL;
+PFNGLBINDBUFFERSRANGEPROC __glewBindBuffersRange = NULL;
+PFNGLBINDIMAGETEXTURESPROC __glewBindImageTextures = NULL;
+PFNGLBINDSAMPLERSPROC __glewBindSamplers = NULL;
+PFNGLBINDTEXTURESPROC __glewBindTextures = NULL;
+PFNGLBINDVERTEXBUFFERSPROC __glewBindVertexBuffers = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTPROC __glewMultiDrawArraysIndirect = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTPROC __glewMultiDrawElementsIndirect = NULL;
+
+PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB = NULL;
+
+PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB = NULL;
+PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB = NULL;
+PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB = NULL;
+PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB = NULL;
+PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB = NULL;
+PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB = NULL;
+PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB = NULL;
+PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB = NULL;
+PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB = NULL;
+PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB = NULL;
+PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB = NULL;
+PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB = NULL;
+PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB = NULL;
+PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB = NULL;
+PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB = NULL;
+PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB = NULL;
+PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB = NULL;
+PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB = NULL;
+PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB = NULL;
+PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB = NULL;
+PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB = NULL;
+PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB = NULL;
+PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB = NULL;
+PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB = NULL;
+PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB = NULL;
+PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB = NULL;
+PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB = NULL;
+PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB = NULL;
+PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB = NULL;
+PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB = NULL;
+PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB = NULL;
+PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB = NULL;
+PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB = NULL;
+PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB = NULL;
+
+PFNGLBEGINQUERYARBPROC __glewBeginQueryARB = NULL;
+PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB = NULL;
+PFNGLENDQUERYARBPROC __glewEndQueryARB = NULL;
+PFNGLGENQUERIESARBPROC __glewGenQueriesARB = NULL;
+PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB = NULL;
+PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB = NULL;
+PFNGLGETQUERYIVARBPROC __glewGetQueryivARB = NULL;
+PFNGLISQUERYARBPROC __glewIsQueryARB = NULL;
+
+PFNGLMAXSHADERCOMPILERTHREADSARBPROC __glewMaxShaderCompilerThreadsARB = NULL;
+
+PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB = NULL;
+PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB = NULL;
+
+PFNGLPOLYGONOFFSETCLAMPPROC __glewPolygonOffsetClamp = NULL;
+
+PFNGLGETPROGRAMINTERFACEIVPROC __glewGetProgramInterfaceiv = NULL;
+PFNGLGETPROGRAMRESOURCEINDEXPROC __glewGetProgramResourceIndex = NULL;
+PFNGLGETPROGRAMRESOURCELOCATIONPROC __glewGetProgramResourceLocation = NULL;
+PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC __glewGetProgramResourceLocationIndex = NULL;
+PFNGLGETPROGRAMRESOURCENAMEPROC __glewGetProgramResourceName = NULL;
+PFNGLGETPROGRAMRESOURCEIVPROC __glewGetProgramResourceiv = NULL;
+
+PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex = NULL;
+
+PFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB = NULL;
+PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB = NULL;
+PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB = NULL;
+PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB = NULL;
+PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB = NULL;
+PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB = NULL;
+PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB = NULL;
+PFNGLGETNMAPIVARBPROC __glewGetnMapivARB = NULL;
+PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB = NULL;
+PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB = NULL;
+PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB = NULL;
+PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB = NULL;
+PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB = NULL;
+PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB = NULL;
+PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB = NULL;
+PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB = NULL;
+PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB = NULL;
+PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB = NULL;
+PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB = NULL;
+PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB = NULL;
+
+PFNGLEVALUATEDEPTHVALUESARBPROC __glewEvaluateDepthValuesARB = NULL;
+PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewFramebufferSampleLocationsfvARB = NULL;
+PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewNamedFramebufferSampleLocationsfvARB = NULL;
+
+PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB = NULL;
+
+PFNGLBINDSAMPLERPROC __glewBindSampler = NULL;
+PFNGLDELETESAMPLERSPROC __glewDeleteSamplers = NULL;
+PFNGLGENSAMPLERSPROC __glewGenSamplers = NULL;
+PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv = NULL;
+PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv = NULL;
+PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv = NULL;
+PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv = NULL;
+PFNGLISSAMPLERPROC __glewIsSampler = NULL;
+PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv = NULL;
+PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv = NULL;
+PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf = NULL;
+PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv = NULL;
+PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri = NULL;
+PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv = NULL;
+
+PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram = NULL;
+PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline = NULL;
+PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv = NULL;
+PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines = NULL;
+PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines = NULL;
+PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog = NULL;
+PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv = NULL;
+PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline = NULL;
+PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d = NULL;
+PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv = NULL;
+PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f = NULL;
+PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv = NULL;
+PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i = NULL;
+PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv = NULL;
+PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui = NULL;
+PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv = NULL;
+PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d = NULL;
+PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv = NULL;
+PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f = NULL;
+PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv = NULL;
+PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i = NULL;
+PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv = NULL;
+PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui = NULL;
+PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv = NULL;
+PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d = NULL;
+PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv = NULL;
+PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f = NULL;
+PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv = NULL;
+PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i = NULL;
+PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv = NULL;
+PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui = NULL;
+PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv = NULL;
+PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d = NULL;
+PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv = NULL;
+PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f = NULL;
+PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv = NULL;
+PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i = NULL;
+PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv = NULL;
+PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui = NULL;
+PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv = NULL;
+PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages = NULL;
+PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline = NULL;
+
+PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv = NULL;
+
+PFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture = NULL;
+PFNGLMEMORYBARRIERPROC __glewMemoryBarrier = NULL;
+
+PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB = NULL;
+PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB = NULL;
+PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB = NULL;
+PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB = NULL;
+PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB = NULL;
+PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB = NULL;
+PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB = NULL;
+PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB = NULL;
+PFNGLGETHANDLEARBPROC __glewGetHandleARB = NULL;
+PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB = NULL;
+PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB = NULL;
+PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB = NULL;
+PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB = NULL;
+PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB = NULL;
+PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB = NULL;
+PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB = NULL;
+PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB = NULL;
+PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB = NULL;
+PFNGLUNIFORM1FARBPROC __glewUniform1fARB = NULL;
+PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB = NULL;
+PFNGLUNIFORM1IARBPROC __glewUniform1iARB = NULL;
+PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB = NULL;
+PFNGLUNIFORM2FARBPROC __glewUniform2fARB = NULL;
+PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB = NULL;
+PFNGLUNIFORM2IARBPROC __glewUniform2iARB = NULL;
+PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB = NULL;
+PFNGLUNIFORM3FARBPROC __glewUniform3fARB = NULL;
+PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB = NULL;
+PFNGLUNIFORM3IARBPROC __glewUniform3iARB = NULL;
+PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB = NULL;
+PFNGLUNIFORM4FARBPROC __glewUniform4fARB = NULL;
+PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB = NULL;
+PFNGLUNIFORM4IARBPROC __glewUniform4iARB = NULL;
+PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB = NULL;
+PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB = NULL;
+PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB = NULL;
+PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB = NULL;
+PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB = NULL;
+PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB = NULL;
+
+PFNGLSHADERSTORAGEBLOCKBINDINGPROC __glewShaderStorageBlockBinding = NULL;
+
+PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName = NULL;
+PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName = NULL;
+PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv = NULL;
+PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv = NULL;
+PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex = NULL;
+PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation = NULL;
+PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv = NULL;
+PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv = NULL;
+
+PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB = NULL;
+PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB = NULL;
+PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB = NULL;
+PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB = NULL;
+PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB = NULL;
+PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB = NULL;
+
+PFNGLBUFFERPAGECOMMITMENTARBPROC __glewBufferPageCommitmentARB = NULL;
+
+PFNGLTEXPAGECOMMITMENTARBPROC __glewTexPageCommitmentARB = NULL;
+
+PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync = NULL;
+PFNGLDELETESYNCPROC __glewDeleteSync = NULL;
+PFNGLFENCESYNCPROC __glewFenceSync = NULL;
+PFNGLGETINTEGER64VPROC __glewGetInteger64v = NULL;
+PFNGLGETSYNCIVPROC __glewGetSynciv = NULL;
+PFNGLISSYNCPROC __glewIsSync = NULL;
+PFNGLWAITSYNCPROC __glewWaitSync = NULL;
+
+PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv = NULL;
+PFNGLPATCHPARAMETERIPROC __glewPatchParameteri = NULL;
+
+PFNGLTEXTUREBARRIERPROC __glewTextureBarrier = NULL;
+
+PFNGLTEXBUFFERARBPROC __glewTexBufferARB = NULL;
+
+PFNGLTEXBUFFERRANGEPROC __glewTexBufferRange = NULL;
+PFNGLTEXTUREBUFFERRANGEEXTPROC __glewTextureBufferRangeEXT = NULL;
+
+PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB = NULL;
+PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB = NULL;
+PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB = NULL;
+PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB = NULL;
+
+PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv = NULL;
+PFNGLSAMPLEMASKIPROC __glewSampleMaski = NULL;
+PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample = NULL;
+PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample = NULL;
+
+PFNGLTEXSTORAGE1DPROC __glewTexStorage1D = NULL;
+PFNGLTEXSTORAGE2DPROC __glewTexStorage2D = NULL;
+PFNGLTEXSTORAGE3DPROC __glewTexStorage3D = NULL;
+
+PFNGLTEXSTORAGE2DMULTISAMPLEPROC __glewTexStorage2DMultisample = NULL;
+PFNGLTEXSTORAGE3DMULTISAMPLEPROC __glewTexStorage3DMultisample = NULL;
+PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC __glewTextureStorage2DMultisampleEXT = NULL;
+PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC __glewTextureStorage3DMultisampleEXT = NULL;
+
+PFNGLTEXTUREVIEWPROC __glewTextureView = NULL;
+
+PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v = NULL;
+PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v = NULL;
+PFNGLQUERYCOUNTERPROC __glewQueryCounter = NULL;
+
+PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback = NULL;
+PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback = NULL;
+PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks = NULL;
+PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback = NULL;
+PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback = NULL;
+PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback = NULL;
+
+PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream = NULL;
+PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed = NULL;
+PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv = NULL;
+
+PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced = NULL;
+
+PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB = NULL;
+PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB = NULL;
+PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB = NULL;
+PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB = NULL;
+
+PFNGLBINDBUFFERBASEPROC __glewBindBufferBase = NULL;
+PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange = NULL;
+PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName = NULL;
+PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv = NULL;
+PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName = NULL;
+PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv = NULL;
+PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v = NULL;
+PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex = NULL;
+PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices = NULL;
+PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding = NULL;
+
+PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray = NULL;
+PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays = NULL;
+PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays = NULL;
+PFNGLISVERTEXARRAYPROC __glewIsVertexArray = NULL;
+
+PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv = NULL;
+PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d = NULL;
+PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv = NULL;
+PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d = NULL;
+PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv = NULL;
+PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d = NULL;
+PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv = NULL;
+PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d = NULL;
+PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv = NULL;
+PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer = NULL;
+
+PFNGLBINDVERTEXBUFFERPROC __glewBindVertexBuffer = NULL;
+PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC __glewVertexArrayBindVertexBufferEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC __glewVertexArrayVertexAttribBindingEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC __glewVertexArrayVertexAttribFormatEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC __glewVertexArrayVertexAttribIFormatEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC __glewVertexArrayVertexAttribLFormatEXT = NULL;
+PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC __glewVertexArrayVertexBindingDivisorEXT = NULL;
+PFNGLVERTEXATTRIBBINDINGPROC __glewVertexAttribBinding = NULL;
+PFNGLVERTEXATTRIBFORMATPROC __glewVertexAttribFormat = NULL;
+PFNGLVERTEXATTRIBIFORMATPROC __glewVertexAttribIFormat = NULL;
+PFNGLVERTEXATTRIBLFORMATPROC __glewVertexAttribLFormat = NULL;
+PFNGLVERTEXBINDINGDIVISORPROC __glewVertexBindingDivisor = NULL;
+
+PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB = NULL;
+PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB = NULL;
+PFNGLWEIGHTBVARBPROC __glewWeightbvARB = NULL;
+PFNGLWEIGHTDVARBPROC __glewWeightdvARB = NULL;
+PFNGLWEIGHTFVARBPROC __glewWeightfvARB = NULL;
+PFNGLWEIGHTIVARBPROC __glewWeightivARB = NULL;
+PFNGLWEIGHTSVARBPROC __glewWeightsvARB = NULL;
+PFNGLWEIGHTUBVARBPROC __glewWeightubvARB = NULL;
+PFNGLWEIGHTUIVARBPROC __glewWeightuivARB = NULL;
+PFNGLWEIGHTUSVARBPROC __glewWeightusvARB = NULL;
+
+PFNGLBINDBUFFERARBPROC __glewBindBufferARB = NULL;
+PFNGLBUFFERDATAARBPROC __glewBufferDataARB = NULL;
+PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB = NULL;
+PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB = NULL;
+PFNGLGENBUFFERSARBPROC __glewGenBuffersARB = NULL;
+PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB = NULL;
+PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB = NULL;
+PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB = NULL;
+PFNGLISBUFFERARBPROC __glewIsBufferARB = NULL;
+PFNGLMAPBUFFERARBPROC __glewMapBufferARB = NULL;
+PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB = NULL;
+
+PFNGLBINDPROGRAMARBPROC __glewBindProgramARB = NULL;
+PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB = NULL;
+PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB = NULL;
+PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB = NULL;
+PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB = NULL;
+PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB = NULL;
+PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB = NULL;
+PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB = NULL;
+PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB = NULL;
+PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB = NULL;
+PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB = NULL;
+PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB = NULL;
+PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB = NULL;
+PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB = NULL;
+PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB = NULL;
+PFNGLISPROGRAMARBPROC __glewIsProgramARB = NULL;
+PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB = NULL;
+PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB = NULL;
+PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB = NULL;
+PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB = NULL;
+PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB = NULL;
+PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB = NULL;
+PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB = NULL;
+PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB = NULL;
+PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB = NULL;
+PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB = NULL;
+PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB = NULL;
+PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB = NULL;
+PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB = NULL;
+PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB = NULL;
+PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB = NULL;
+PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB = NULL;
+PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB = NULL;
+PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB = NULL;
+PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB = NULL;
+PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB = NULL;
+PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB = NULL;
+PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB = NULL;
+PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB = NULL;
+PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB = NULL;
+PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB = NULL;
+PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB = NULL;
+PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB = NULL;
+PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB = NULL;
+PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB = NULL;
+PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB = NULL;
+PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB = NULL;
+PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB = NULL;
+PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB = NULL;
+PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB = NULL;
+PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB = NULL;
+PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB = NULL;
+PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB = NULL;
+PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB = NULL;
+PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB = NULL;
+PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB = NULL;
+PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB = NULL;
+PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB = NULL;
+PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB = NULL;
+PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB = NULL;
+PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB = NULL;
+PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB = NULL;
+
+PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB = NULL;
+PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB = NULL;
+PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB = NULL;
+
+PFNGLCOLORP3UIPROC __glewColorP3ui = NULL;
+PFNGLCOLORP3UIVPROC __glewColorP3uiv = NULL;
+PFNGLCOLORP4UIPROC __glewColorP4ui = NULL;
+PFNGLCOLORP4UIVPROC __glewColorP4uiv = NULL;
+PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui = NULL;
+PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv = NULL;
+PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui = NULL;
+PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv = NULL;
+PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui = NULL;
+PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv = NULL;
+PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui = NULL;
+PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv = NULL;
+PFNGLNORMALP3UIPROC __glewNormalP3ui = NULL;
+PFNGLNORMALP3UIVPROC __glewNormalP3uiv = NULL;
+PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui = NULL;
+PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv = NULL;
+PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui = NULL;
+PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv = NULL;
+PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui = NULL;
+PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv = NULL;
+PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui = NULL;
+PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv = NULL;
+PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui = NULL;
+PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv = NULL;
+PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui = NULL;
+PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv = NULL;
+PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui = NULL;
+PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv = NULL;
+PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui = NULL;
+PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv = NULL;
+PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui = NULL;
+PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv = NULL;
+PFNGLVERTEXP2UIPROC __glewVertexP2ui = NULL;
+PFNGLVERTEXP2UIVPROC __glewVertexP2uiv = NULL;
+PFNGLVERTEXP3UIPROC __glewVertexP3ui = NULL;
+PFNGLVERTEXP3UIVPROC __glewVertexP3uiv = NULL;
+PFNGLVERTEXP4UIPROC __glewVertexP4ui = NULL;
+PFNGLVERTEXP4UIVPROC __glewVertexP4uiv = NULL;
+
+PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv = NULL;
+PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed = NULL;
+PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v = NULL;
+PFNGLGETFLOATI_VPROC __glewGetFloati_v = NULL;
+PFNGLSCISSORARRAYVPROC __glewScissorArrayv = NULL;
+PFNGLSCISSORINDEXEDPROC __glewScissorIndexed = NULL;
+PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv = NULL;
+PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv = NULL;
+PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf = NULL;
+PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv = NULL;
+
+PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB = NULL;
+PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB = NULL;
+PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB = NULL;
+PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB = NULL;
+PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB = NULL;
+PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB = NULL;
+PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB = NULL;
+PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB = NULL;
+PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB = NULL;
+PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB = NULL;
+PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB = NULL;
+PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB = NULL;
+PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB = NULL;
+PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB = NULL;
+PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB = NULL;
+PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB = NULL;
+
+PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI = NULL;
+
+PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI = NULL;
+PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI = NULL;
+PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI = NULL;
+
+PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI = NULL;
+PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI = NULL;
+PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI = NULL;
+PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI = NULL;
+
+PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI = NULL;
+PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI = NULL;
+PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI = NULL;
+PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI = NULL;
+PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI = NULL;
+PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI = NULL;
+PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI = NULL;
+PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI = NULL;
+PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI = NULL;
+PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI = NULL;
+PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI = NULL;
+PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI = NULL;
+PFNGLSAMPLEMAPATIPROC __glewSampleMapATI = NULL;
+PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI = NULL;
+
+PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI = NULL;
+PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI = NULL;
+
+PFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI = NULL;
+PFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI = NULL;
+
+PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI = NULL;
+PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI = NULL;
+
+PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI = NULL;
+PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI = NULL;
+PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI = NULL;
+PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI = NULL;
+PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI = NULL;
+PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI = NULL;
+PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI = NULL;
+PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI = NULL;
+PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI = NULL;
+PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI = NULL;
+PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI = NULL;
+PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI = NULL;
+
+PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI = NULL;
+PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI = NULL;
+PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI = NULL;
+
+PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI = NULL;
+PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI = NULL;
+PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI = NULL;
+PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI = NULL;
+PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI = NULL;
+PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI = NULL;
+PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI = NULL;
+PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI = NULL;
+PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI = NULL;
+PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI = NULL;
+PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI = NULL;
+PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI = NULL;
+PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI = NULL;
+PFNGLVERTEXSTREAM1DATIPROC __glewVertexStream1dATI = NULL;
+PFNGLVERTEXSTREAM1DVATIPROC __glewVertexStream1dvATI = NULL;
+PFNGLVERTEXSTREAM1FATIPROC __glewVertexStream1fATI = NULL;
+PFNGLVERTEXSTREAM1FVATIPROC __glewVertexStream1fvATI = NULL;
+PFNGLVERTEXSTREAM1IATIPROC __glewVertexStream1iATI = NULL;
+PFNGLVERTEXSTREAM1IVATIPROC __glewVertexStream1ivATI = NULL;
+PFNGLVERTEXSTREAM1SATIPROC __glewVertexStream1sATI = NULL;
+PFNGLVERTEXSTREAM1SVATIPROC __glewVertexStream1svATI = NULL;
+PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI = NULL;
+PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI = NULL;
+PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI = NULL;
+PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI = NULL;
+PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI = NULL;
+PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI = NULL;
+PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI = NULL;
+PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI = NULL;
+PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI = NULL;
+PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI = NULL;
+PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI = NULL;
+PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI = NULL;
+PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI = NULL;
+PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI = NULL;
+PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI = NULL;
+PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI = NULL;
+PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI = NULL;
+PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI = NULL;
+PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI = NULL;
+PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI = NULL;
+PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI = NULL;
+PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI = NULL;
+PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI = NULL;
+PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI = NULL;
+
+PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC __glewEGLImageTargetTexStorageEXT = NULL;
+PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC __glewEGLImageTargetTextureStorageEXT = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __glewDrawArraysInstancedBaseInstanceEXT = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseInstanceEXT = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseVertexBaseInstanceEXT = NULL;
+
+PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT = NULL;
+PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT = NULL;
+PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT = NULL;
+
+PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT = NULL;
+
+PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __glewBindFragDataLocationIndexedEXT = NULL;
+PFNGLGETFRAGDATAINDEXEXTPROC __glewGetFragDataIndexEXT = NULL;
+PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __glewGetProgramResourceLocationIndexEXT = NULL;
+
+PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT = NULL;
+
+PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT = NULL;
+
+PFNGLBUFFERSTORAGEEXTPROC __glewBufferStorageEXT = NULL;
+PFNGLNAMEDBUFFERSTORAGEEXTPROC __glewNamedBufferStorageEXT = NULL;
+
+PFNGLCLEARTEXIMAGEEXTPROC __glewClearTexImageEXT = NULL;
+PFNGLCLEARTEXSUBIMAGEEXTPROC __glewClearTexSubImageEXT = NULL;
+
+PFNGLCLIPCONTROLEXTPROC __glewClipControlEXT = NULL;
+
+PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT = NULL;
+PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT = NULL;
+
+PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT = NULL;
+PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT = NULL;
+
+PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT = NULL;
+PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT = NULL;
+PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT = NULL;
+PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT = NULL;
+PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT = NULL;
+PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT = NULL;
+PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT = NULL;
+PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT = NULL;
+PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT = NULL;
+PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT = NULL;
+PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT = NULL;
+PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT = NULL;
+PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT = NULL;
+
+PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT = NULL;
+PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT = NULL;
+
+PFNGLCOPYIMAGESUBDATAEXTPROC __glewCopyImageSubDataEXT = NULL;
+
+PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT = NULL;
+PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT = NULL;
+PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT = NULL;
+PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT = NULL;
+PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT = NULL;
+
+PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT = NULL;
+PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT = NULL;
+
+PFNGLGETOBJECTLABELEXTPROC __glewGetObjectLabelEXT = NULL;
+PFNGLLABELOBJECTEXTPROC __glewLabelObjectEXT = NULL;
+
+PFNGLINSERTEVENTMARKEREXTPROC __glewInsertEventMarkerEXT = NULL;
+PFNGLPOPGROUPMARKEREXTPROC __glewPopGroupMarkerEXT = NULL;
+PFNGLPUSHGROUPMARKEREXTPROC __glewPushGroupMarkerEXT = NULL;
+
+PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT = NULL;
+
+PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT = NULL;
+PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT = NULL;
+PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT = NULL;
+PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT = NULL;
+PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT = NULL;
+PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT = NULL;
+PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT = NULL;
+PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT = NULL;
+PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT = NULL;
+PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT = NULL;
+PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT = NULL;
+PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT = NULL;
+PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT = NULL;
+PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT = NULL;
+PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT = NULL;
+PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT = NULL;
+PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT = NULL;
+PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT = NULL;
+PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT = NULL;
+PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT = NULL;
+PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT = NULL;
+PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT = NULL;
+PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT = NULL;
+PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT = NULL;
+PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT = NULL;
+PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT = NULL;
+PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT = NULL;
+PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT = NULL;
+PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT = NULL;
+PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT = NULL;
+PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT = NULL;
+PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT = NULL;
+PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT = NULL;
+PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT = NULL;
+PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT = NULL;
+PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT = NULL;
+PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT = NULL;
+PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT = NULL;
+PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT = NULL;
+PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT = NULL;
+PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT = NULL;
+PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT = NULL;
+PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT = NULL;
+PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT = NULL;
+PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT = NULL;
+PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT = NULL;
+PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT = NULL;
+PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT = NULL;
+PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT = NULL;
+PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT = NULL;
+PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT = NULL;
+PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT = NULL;
+PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT = NULL;
+PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT = NULL;
+PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT = NULL;
+PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT = NULL;
+PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT = NULL;
+PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT = NULL;
+PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT = NULL;
+PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT = NULL;
+PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT = NULL;
+PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT = NULL;
+PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT = NULL;
+PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT = NULL;
+PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT = NULL;
+PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT = NULL;
+PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT = NULL;
+PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT = NULL;
+PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT = NULL;
+PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT = NULL;
+PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT = NULL;
+PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT = NULL;
+PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT = NULL;
+PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT = NULL;
+PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT = NULL;
+PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT = NULL;
+PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT = NULL;
+PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT = NULL;
+PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT = NULL;
+PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT = NULL;
+PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT = NULL;
+PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT = NULL;
+PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT = NULL;
+PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT = NULL;
+PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT = NULL;
+PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT = NULL;
+PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT = NULL;
+PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT = NULL;
+PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT = NULL;
+PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT = NULL;
+PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT = NULL;
+PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT = NULL;
+PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT = NULL;
+PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT = NULL;
+PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT = NULL;
+PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT = NULL;
+PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT = NULL;
+PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT = NULL;
+PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT = NULL;
+PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT = NULL;
+PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT = NULL;
+PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT = NULL;
+PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT = NULL;
+PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT = NULL;
+PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT = NULL;
+PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT = NULL;
+PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT = NULL;
+PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT = NULL;
+PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT = NULL;
+PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT = NULL;
+PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT = NULL;
+PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT = NULL;
+PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT = NULL;
+PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT = NULL;
+PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT = NULL;
+PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT = NULL;
+PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT = NULL;
+PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT = NULL;
+PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT = NULL;
+PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT = NULL;
+PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT = NULL;
+PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT = NULL;
+PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT = NULL;
+PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT = NULL;
+PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT = NULL;
+PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT = NULL;
+PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT = NULL;
+PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT = NULL;
+PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT = NULL;
+PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT = NULL;
+PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT = NULL;
+PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT = NULL;
+PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT = NULL;
+PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT = NULL;
+PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT = NULL;
+PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT = NULL;
+PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT = NULL;
+PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT = NULL;
+PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT = NULL;
+PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT = NULL;
+PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT = NULL;
+PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT = NULL;
+PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT = NULL;
+PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT = NULL;
+PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT = NULL;
+PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT = NULL;
+PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT = NULL;
+PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT = NULL;
+PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT = NULL;
+PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT = NULL;
+PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT = NULL;
+PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT = NULL;
+PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT = NULL;
+PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT = NULL;
+PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT = NULL;
+PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT = NULL;
+PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT = NULL;
+PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT = NULL;
+PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT = NULL;
+PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT = NULL;
+PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT = NULL;
+PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT = NULL;
+PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT = NULL;
+PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT = NULL;
+PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT = NULL;
+PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT = NULL;
+PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT = NULL;
+PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT = NULL;
+PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT = NULL;
+PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT = NULL;
+PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT = NULL;
+PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT = NULL;
+PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT = NULL;
+PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT = NULL;
+PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT = NULL;
+PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC __glewVertexArrayVertexAttribDivisorEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT = NULL;
+PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT = NULL;
+
+PFNGLDISCARDFRAMEBUFFEREXTPROC __glewDiscardFramebufferEXT = NULL;
+
+PFNGLBEGINQUERYEXTPROC __glewBeginQueryEXT = NULL;
+PFNGLDELETEQUERIESEXTPROC __glewDeleteQueriesEXT = NULL;
+PFNGLENDQUERYEXTPROC __glewEndQueryEXT = NULL;
+PFNGLGENQUERIESEXTPROC __glewGenQueriesEXT = NULL;
+PFNGLGETINTEGER64VEXTPROC __glewGetInteger64vEXT = NULL;
+PFNGLGETQUERYOBJECTIVEXTPROC __glewGetQueryObjectivEXT = NULL;
+PFNGLGETQUERYOBJECTUIVEXTPROC __glewGetQueryObjectuivEXT = NULL;
+PFNGLGETQUERYIVEXTPROC __glewGetQueryivEXT = NULL;
+PFNGLISQUERYEXTPROC __glewIsQueryEXT = NULL;
+PFNGLQUERYCOUNTEREXTPROC __glewQueryCounterEXT = NULL;
+
+PFNGLDRAWBUFFERSEXTPROC __glewDrawBuffersEXT = NULL;
+
+PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT = NULL;
+PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT = NULL;
+PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT = NULL;
+PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT = NULL;
+PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT = NULL;
+PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEIEXTPROC __glewBlendEquationSeparateiEXT = NULL;
+PFNGLBLENDEQUATIONIEXTPROC __glewBlendEquationiEXT = NULL;
+PFNGLBLENDFUNCSEPARATEIEXTPROC __glewBlendFuncSeparateiEXT = NULL;
+PFNGLBLENDFUNCIEXTPROC __glewBlendFunciEXT = NULL;
+PFNGLCOLORMASKIEXTPROC __glewColorMaskiEXT = NULL;
+PFNGLDISABLEIEXTPROC __glewDisableiEXT = NULL;
+PFNGLENABLEIEXTPROC __glewEnableiEXT = NULL;
+PFNGLISENABLEDIEXTPROC __glewIsEnablediEXT = NULL;
+
+PFNGLDRAWELEMENTSBASEVERTEXEXTPROC __glewDrawElementsBaseVertexEXT = NULL;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __glewDrawElementsInstancedBaseVertexEXT = NULL;
+PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __glewDrawRangeElementsBaseVertexEXT = NULL;
+PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __glewMultiDrawElementsBaseVertexEXT = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT = NULL;
+PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT = NULL;
+
+PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT = NULL;
+
+PFNGLDRAWTRANSFORMFEEDBACKEXTPROC __glewDrawTransformFeedbackEXT = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC __glewDrawTransformFeedbackInstancedEXT = NULL;
+
+PFNGLBUFFERSTORAGEEXTERNALEXTPROC __glewBufferStorageExternalEXT = NULL;
+PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC __glewNamedBufferStorageExternalEXT = NULL;
+
+PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT = NULL;
+PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT = NULL;
+PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT = NULL;
+PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT = NULL;
+PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT = NULL;
+
+PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT = NULL;
+PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT = NULL;
+PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT = NULL;
+PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT = NULL;
+PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT = NULL;
+PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT = NULL;
+PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT = NULL;
+PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT = NULL;
+PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT = NULL;
+PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT = NULL;
+PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT = NULL;
+PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT = NULL;
+PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT = NULL;
+PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT = NULL;
+PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT = NULL;
+PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT = NULL;
+PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT = NULL;
+PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT = NULL;
+
+PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT = NULL;
+
+PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT = NULL;
+PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT = NULL;
+PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT = NULL;
+PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT = NULL;
+PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT = NULL;
+PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT = NULL;
+PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT = NULL;
+PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT = NULL;
+PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT = NULL;
+PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT = NULL;
+PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT = NULL;
+PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT = NULL;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT = NULL;
+PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT = NULL;
+PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT = NULL;
+PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT = NULL;
+PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT = NULL;
+PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT = NULL;
+PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT = NULL;
+
+PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT = NULL;
+PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT = NULL;
+
+PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT = NULL;
+PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT = NULL;
+PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT = NULL;
+PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT = NULL;
+PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT = NULL;
+PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT = NULL;
+PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT = NULL;
+PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT = NULL;
+PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT = NULL;
+PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT = NULL;
+PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT = NULL;
+PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT = NULL;
+PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT = NULL;
+PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT = NULL;
+PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT = NULL;
+PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT = NULL;
+PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT = NULL;
+PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT = NULL;
+PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT = NULL;
+PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT = NULL;
+PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT = NULL;
+PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT = NULL;
+PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT = NULL;
+PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT = NULL;
+PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT = NULL;
+PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT = NULL;
+PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT = NULL;
+PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT = NULL;
+PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT = NULL;
+PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT = NULL;
+PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT = NULL;
+PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT = NULL;
+PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT = NULL;
+PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT = NULL;
+
+PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT = NULL;
+PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT = NULL;
+PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT = NULL;
+PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT = NULL;
+PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT = NULL;
+PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT = NULL;
+PFNGLHISTOGRAMEXTPROC __glewHistogramEXT = NULL;
+PFNGLMINMAXEXTPROC __glewMinmaxEXT = NULL;
+PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT = NULL;
+PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT = NULL;
+
+PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT = NULL;
+
+PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT = NULL;
+
+PFNGLVERTEXATTRIBDIVISOREXTPROC __glewVertexAttribDivisorEXT = NULL;
+
+PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT = NULL;
+PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT = NULL;
+PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT = NULL;
+
+PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC __glewFlushMappedBufferRangeEXT = NULL;
+PFNGLMAPBUFFERRANGEEXTPROC __glewMapBufferRangeEXT = NULL;
+
+PFNGLBUFFERSTORAGEMEMEXTPROC __glewBufferStorageMemEXT = NULL;
+PFNGLCREATEMEMORYOBJECTSEXTPROC __glewCreateMemoryObjectsEXT = NULL;
+PFNGLDELETEMEMORYOBJECTSEXTPROC __glewDeleteMemoryObjectsEXT = NULL;
+PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC __glewGetMemoryObjectParameterivEXT = NULL;
+PFNGLGETUNSIGNEDBYTEI_VEXTPROC __glewGetUnsignedBytei_vEXT = NULL;
+PFNGLGETUNSIGNEDBYTEVEXTPROC __glewGetUnsignedBytevEXT = NULL;
+PFNGLISMEMORYOBJECTEXTPROC __glewIsMemoryObjectEXT = NULL;
+PFNGLMEMORYOBJECTPARAMETERIVEXTPROC __glewMemoryObjectParameterivEXT = NULL;
+PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC __glewNamedBufferStorageMemEXT = NULL;
+PFNGLTEXSTORAGEMEM1DEXTPROC __glewTexStorageMem1DEXT = NULL;
+PFNGLTEXSTORAGEMEM2DEXTPROC __glewTexStorageMem2DEXT = NULL;
+PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC __glewTexStorageMem2DMultisampleEXT = NULL;
+PFNGLTEXSTORAGEMEM3DEXTPROC __glewTexStorageMem3DEXT = NULL;
+PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC __glewTexStorageMem3DMultisampleEXT = NULL;
+PFNGLTEXTURESTORAGEMEM1DEXTPROC __glewTextureStorageMem1DEXT = NULL;
+PFNGLTEXTURESTORAGEMEM2DEXTPROC __glewTextureStorageMem2DEXT = NULL;
+PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC __glewTextureStorageMem2DMultisampleEXT = NULL;
+PFNGLTEXTURESTORAGEMEM3DEXTPROC __glewTextureStorageMem3DEXT = NULL;
+PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC __glewTextureStorageMem3DMultisampleEXT = NULL;
+
+PFNGLIMPORTMEMORYFDEXTPROC __glewImportMemoryFdEXT = NULL;
+
+PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC __glewImportMemoryWin32HandleEXT = NULL;
+PFNGLIMPORTMEMORYWIN32NAMEEXTPROC __glewImportMemoryWin32NameEXT = NULL;
+
+PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT = NULL;
+PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC __glewMultiDrawArraysIndirectEXT = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC __glewMultiDrawElementsIndirectEXT = NULL;
+
+PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT = NULL;
+PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT = NULL;
+
+PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __glewFramebufferTexture2DMultisampleEXT = NULL;
+
+PFNGLDRAWBUFFERSINDEXEDEXTPROC __glewDrawBuffersIndexedEXT = NULL;
+PFNGLGETINTEGERI_VEXTPROC __glewGetIntegeri_vEXT = NULL;
+PFNGLREADBUFFERINDEXEDEXTPROC __glewReadBufferIndexedEXT = NULL;
+
+PFNGLCOLORTABLEEXTPROC __glewColorTableEXT = NULL;
+PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT = NULL;
+PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT = NULL;
+PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT = NULL;
+
+PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT = NULL;
+PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT = NULL;
+PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT = NULL;
+PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT = NULL;
+PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT = NULL;
+PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT = NULL;
+
+PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT = NULL;
+PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT = NULL;
+
+PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT = NULL;
+
+PFNGLPOLYGONOFFSETCLAMPEXTPROC __glewPolygonOffsetClampEXT = NULL;
+
+PFNGLPRIMITIVEBOUNDINGBOXEXTPROC __glewPrimitiveBoundingBoxEXT = NULL;
+
+PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT = NULL;
+
+PFNGLCOVERAGEMODULATIONNVPROC __glewCoverageModulationNV = NULL;
+PFNGLCOVERAGEMODULATIONTABLENVPROC __glewCoverageModulationTableNV = NULL;
+PFNGLGETCOVERAGEMODULATIONTABLENVPROC __glewGetCoverageModulationTableNV = NULL;
+PFNGLRASTERSAMPLESEXTPROC __glewRasterSamplesEXT = NULL;
+
+PFNGLGETGRAPHICSRESETSTATUSEXTPROC __glewGetGraphicsResetStatusEXT = NULL;
+PFNGLGETNUNIFORMFVEXTPROC __glewGetnUniformfvEXT = NULL;
+PFNGLGETNUNIFORMIVEXTPROC __glewGetnUniformivEXT = NULL;
+PFNGLREADNPIXELSEXTPROC __glewReadnPixelsEXT = NULL;
+
+PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT = NULL;
+PFNGLENDSCENEEXTPROC __glewEndSceneEXT = NULL;
+
+PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT = NULL;
+PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT = NULL;
+PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT = NULL;
+PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT = NULL;
+PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT = NULL;
+PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT = NULL;
+PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT = NULL;
+PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT = NULL;
+PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT = NULL;
+PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT = NULL;
+PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT = NULL;
+PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT = NULL;
+PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT = NULL;
+PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT = NULL;
+PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT = NULL;
+PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT = NULL;
+PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT = NULL;
+
+PFNGLDELETESEMAPHORESEXTPROC __glewDeleteSemaphoresEXT = NULL;
+PFNGLGENSEMAPHORESEXTPROC __glewGenSemaphoresEXT = NULL;
+PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC __glewGetSemaphoreParameterui64vEXT = NULL;
+PFNGLISSEMAPHOREEXTPROC __glewIsSemaphoreEXT = NULL;
+PFNGLSEMAPHOREPARAMETERUI64VEXTPROC __glewSemaphoreParameterui64vEXT = NULL;
+PFNGLSIGNALSEMAPHOREEXTPROC __glewSignalSemaphoreEXT = NULL;
+PFNGLWAITSEMAPHOREEXTPROC __glewWaitSemaphoreEXT = NULL;
+
+PFNGLIMPORTSEMAPHOREFDEXTPROC __glewImportSemaphoreFdEXT = NULL;
+
+PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC __glewImportSemaphoreWin32HandleEXT = NULL;
+PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC __glewImportSemaphoreWin32NameEXT = NULL;
+
+PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT = NULL;
+PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT = NULL;
+PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT = NULL;
+
+PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC __glewFramebufferFetchBarrierEXT = NULL;
+
+PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT = NULL;
+PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT = NULL;
+
+PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC __glewClearPixelLocalStorageuiEXT = NULL;
+PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewFramebufferPixelLocalStorageSizeEXT = NULL;
+PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewGetFramebufferPixelLocalStorageSizeEXT = NULL;
+
+PFNGLTEXPAGECOMMITMENTEXTPROC __glewTexPageCommitmentEXT = NULL;
+PFNGLTEXTUREPAGECOMMITMENTEXTPROC __glewTexturePageCommitmentEXT = NULL;
+
+PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT = NULL;
+
+PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT = NULL;
+PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT = NULL;
+PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT = NULL;
+
+PFNGLPATCHPARAMETERIEXTPROC __glewPatchParameteriEXT = NULL;
+
+PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT = NULL;
+
+PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT = NULL;
+
+PFNGLGETSAMPLERPARAMETERIIVEXTPROC __glewGetSamplerParameterIivEXT = NULL;
+PFNGLGETSAMPLERPARAMETERIUIVEXTPROC __glewGetSamplerParameterIuivEXT = NULL;
+PFNGLSAMPLERPARAMETERIIVEXTPROC __glewSamplerParameterIivEXT = NULL;
+PFNGLSAMPLERPARAMETERIUIVEXTPROC __glewSamplerParameterIuivEXT = NULL;
+
+PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT = NULL;
+
+PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT = NULL;
+PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT = NULL;
+PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT = NULL;
+PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT = NULL;
+PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT = NULL;
+PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT = NULL;
+
+PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT = NULL;
+PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT = NULL;
+PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT = NULL;
+PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT = NULL;
+PFNGLISTEXTUREEXTPROC __glewIsTextureEXT = NULL;
+PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT = NULL;
+
+PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT = NULL;
+
+PFNGLTEXSTORAGE1DEXTPROC __glewTexStorage1DEXT = NULL;
+PFNGLTEXSTORAGE2DEXTPROC __glewTexStorage2DEXT = NULL;
+PFNGLTEXSTORAGE3DEXTPROC __glewTexStorage3DEXT = NULL;
+PFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT = NULL;
+PFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT = NULL;
+PFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT = NULL;
+
+PFNGLTEXSTORAGEATTRIBS2DEXTPROC __glewTexStorageAttribs2DEXT = NULL;
+PFNGLTEXSTORAGEATTRIBS3DEXTPROC __glewTexStorageAttribs3DEXT = NULL;
+
+PFNGLTEXTUREVIEWEXTPROC __glewTextureViewEXT = NULL;
+
+PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT = NULL;
+PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT = NULL;
+
+PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT = NULL;
+PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT = NULL;
+PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT = NULL;
+PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT = NULL;
+PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT = NULL;
+PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT = NULL;
+PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT = NULL;
+
+PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT = NULL;
+PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT = NULL;
+PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT = NULL;
+PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT = NULL;
+PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT = NULL;
+PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT = NULL;
+PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT = NULL;
+PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT = NULL;
+
+PFNGLBINDARRAYSETEXTPROC __glewBindArraySetEXT = NULL;
+PFNGLCREATEARRAYSETEXTPROC __glewCreateArraySetExt = NULL;
+PFNGLDELETEARRAYSETSEXTPROC __glewDeleteArraySetsEXT = NULL;
+
+PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT = NULL;
+PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT = NULL;
+PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT = NULL;
+PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT = NULL;
+PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT = NULL;
+PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT = NULL;
+PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT = NULL;
+PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT = NULL;
+PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT = NULL;
+PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT = NULL;
+
+PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT = NULL;
+PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT = NULL;
+PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT = NULL;
+PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT = NULL;
+PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT = NULL;
+PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT = NULL;
+PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT = NULL;
+PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT = NULL;
+PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT = NULL;
+PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT = NULL;
+PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT = NULL;
+PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT = NULL;
+PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT = NULL;
+PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT = NULL;
+PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT = NULL;
+PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT = NULL;
+PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT = NULL;
+PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT = NULL;
+PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT = NULL;
+PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT = NULL;
+PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT = NULL;
+PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT = NULL;
+PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT = NULL;
+PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT = NULL;
+PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT = NULL;
+PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT = NULL;
+PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT = NULL;
+PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT = NULL;
+PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT = NULL;
+PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT = NULL;
+PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT = NULL;
+PFNGLSWIZZLEEXTPROC __glewSwizzleEXT = NULL;
+PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT = NULL;
+PFNGLVARIANTBVEXTPROC __glewVariantbvEXT = NULL;
+PFNGLVARIANTDVEXTPROC __glewVariantdvEXT = NULL;
+PFNGLVARIANTFVEXTPROC __glewVariantfvEXT = NULL;
+PFNGLVARIANTIVEXTPROC __glewVariantivEXT = NULL;
+PFNGLVARIANTSVEXTPROC __glewVariantsvEXT = NULL;
+PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT = NULL;
+PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT = NULL;
+PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT = NULL;
+PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT = NULL;
+
+PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT = NULL;
+PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT = NULL;
+PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT = NULL;
+
+PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC __glewAcquireKeyedMutexWin32EXT = NULL;
+PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC __glewReleaseKeyedMutexWin32EXT = NULL;
+
+PFNGLWINDOWRECTANGLESEXTPROC __glewWindowRectanglesEXT = NULL;
+
+PFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT = NULL;
+
+PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY = NULL;
+
+PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY = NULL;
+
+PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP = NULL;
+PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP = NULL;
+PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP = NULL;
+PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP = NULL;
+PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP = NULL;
+PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP = NULL;
+
+PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM = NULL;
+PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM = NULL;
+
+PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM = NULL;
+PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM = NULL;
+PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM = NULL;
+PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM = NULL;
+PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM = NULL;
+PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM = NULL;
+PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM = NULL;
+PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM = NULL;
+
+PFNGLGETTEXTUREHANDLEIMGPROC __glewGetTextureHandleIMG = NULL;
+PFNGLGETTEXTURESAMPLERHANDLEIMGPROC __glewGetTextureSamplerHandleIMG = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC __glewProgramUniformHandleui64IMG = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC __glewProgramUniformHandleui64vIMG = NULL;
+PFNGLUNIFORMHANDLEUI64IMGPROC __glewUniformHandleui64IMG = NULL;
+PFNGLUNIFORMHANDLEUI64VIMGPROC __glewUniformHandleui64vIMG = NULL;
+
+PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC __glewFramebufferTexture2DDownsampleIMG = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC __glewFramebufferTextureLayerDownsampleIMG = NULL;
+
+PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC __glewFramebufferTexture2DMultisampleIMG = NULL;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC __glewRenderbufferStorageMultisampleIMG = NULL;
+
+PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC __glewApplyFramebufferAttachmentCMAAINTEL = NULL;
+
+PFNGLMAPTEXTURE2DINTELPROC __glewMapTexture2DINTEL = NULL;
+PFNGLSYNCTEXTUREINTELPROC __glewSyncTextureINTEL = NULL;
+PFNGLUNMAPTEXTURE2DINTELPROC __glewUnmapTexture2DINTEL = NULL;
+
+PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL = NULL;
+PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL = NULL;
+PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL = NULL;
+PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL = NULL;
+
+PFNGLBEGINPERFQUERYINTELPROC __glewBeginPerfQueryINTEL = NULL;
+PFNGLCREATEPERFQUERYINTELPROC __glewCreatePerfQueryINTEL = NULL;
+PFNGLDELETEPERFQUERYINTELPROC __glewDeletePerfQueryINTEL = NULL;
+PFNGLENDPERFQUERYINTELPROC __glewEndPerfQueryINTEL = NULL;
+PFNGLGETFIRSTPERFQUERYIDINTELPROC __glewGetFirstPerfQueryIdINTEL = NULL;
+PFNGLGETNEXTPERFQUERYIDINTELPROC __glewGetNextPerfQueryIdINTEL = NULL;
+PFNGLGETPERFCOUNTERINFOINTELPROC __glewGetPerfCounterInfoINTEL = NULL;
+PFNGLGETPERFQUERYDATAINTELPROC __glewGetPerfQueryDataINTEL = NULL;
+PFNGLGETPERFQUERYIDBYNAMEINTELPROC __glewGetPerfQueryIdByNameINTEL = NULL;
+PFNGLGETPERFQUERYINFOINTELPROC __glewGetPerfQueryInfoINTEL = NULL;
+
+PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL = NULL;
+PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL = NULL;
+
+PFNGLBLENDBARRIERKHRPROC __glewBlendBarrierKHR = NULL;
+
+PFNGLDEBUGMESSAGECALLBACKPROC __glewDebugMessageCallback = NULL;
+PFNGLDEBUGMESSAGECONTROLPROC __glewDebugMessageControl = NULL;
+PFNGLDEBUGMESSAGEINSERTPROC __glewDebugMessageInsert = NULL;
+PFNGLGETDEBUGMESSAGELOGPROC __glewGetDebugMessageLog = NULL;
+PFNGLGETOBJECTLABELPROC __glewGetObjectLabel = NULL;
+PFNGLGETOBJECTPTRLABELPROC __glewGetObjectPtrLabel = NULL;
+PFNGLOBJECTLABELPROC __glewObjectLabel = NULL;
+PFNGLOBJECTPTRLABELPROC __glewObjectPtrLabel = NULL;
+PFNGLPOPDEBUGGROUPPROC __glewPopDebugGroup = NULL;
+PFNGLPUSHDEBUGGROUPPROC __glewPushDebugGroup = NULL;
+
+PFNGLMAXSHADERCOMPILERTHREADSKHRPROC __glewMaxShaderCompilerThreadsKHR = NULL;
+
+PFNGLGETNUNIFORMFVPROC __glewGetnUniformfv = NULL;
+PFNGLGETNUNIFORMIVPROC __glewGetnUniformiv = NULL;
+PFNGLGETNUNIFORMUIVPROC __glewGetnUniformuiv = NULL;
+PFNGLREADNPIXELSPROC __glewReadnPixels = NULL;
+
+PFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled = NULL;
+PFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion = NULL;
+PFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion = NULL;
+PFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion = NULL;
+PFNGLREADBUFFERREGIONPROC __glewReadBufferRegion = NULL;
+
+PFNGLFRAMEBUFFERPARAMETERIMESAPROC __glewFramebufferParameteriMESA = NULL;
+PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC __glewGetFramebufferParameterivMESA = NULL;
+
+PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA = NULL;
+
+PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA = NULL;
+PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA = NULL;
+PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA = NULL;
+PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA = NULL;
+PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA = NULL;
+PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA = NULL;
+PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA = NULL;
+PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA = NULL;
+PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA = NULL;
+PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA = NULL;
+PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA = NULL;
+PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA = NULL;
+PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA = NULL;
+PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA = NULL;
+PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA = NULL;
+PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA = NULL;
+PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA = NULL;
+PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA = NULL;
+PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA = NULL;
+PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA = NULL;
+PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA = NULL;
+PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA = NULL;
+PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA = NULL;
+PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA = NULL;
+
+PFNGLBEGINCONDITIONALRENDERNVXPROC __glewBeginConditionalRenderNVX = NULL;
+PFNGLENDCONDITIONALRENDERNVXPROC __glewEndConditionalRenderNVX = NULL;
+
+PFNGLASYNCCOPYBUFFERSUBDATANVXPROC __glewAsyncCopyBufferSubDataNVX = NULL;
+PFNGLASYNCCOPYIMAGESUBDATANVXPROC __glewAsyncCopyImageSubDataNVX = NULL;
+PFNGLMULTICASTSCISSORARRAYVNVXPROC __glewMulticastScissorArrayvNVX = NULL;
+PFNGLMULTICASTVIEWPORTARRAYVNVXPROC __glewMulticastViewportArrayvNVX = NULL;
+PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC __glewMulticastViewportPositionWScaleNVX = NULL;
+PFNGLUPLOADGPUMASKNVXPROC __glewUploadGpuMaskNVX = NULL;
+
+PFNGLLGPUCOPYIMAGESUBDATANVXPROC __glewLGPUCopyImageSubDataNVX = NULL;
+PFNGLLGPUINTERLOCKNVXPROC __glewLGPUInterlockNVX = NULL;
+PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC __glewLGPUNamedBufferSubDataNVX = NULL;
+
+PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC __glewClientWaitSemaphoreui64NVX = NULL;
+PFNGLCREATEPROGRESSFENCENVXPROC __glewCreateProgressFenceNVX = NULL;
+PFNGLSIGNALSEMAPHOREUI64NVXPROC __glewSignalSemaphoreui64NVX = NULL;
+PFNGLWAITSEMAPHOREUI64NVXPROC __glewWaitSemaphoreui64NVX = NULL;
+
+PFNGLSTEREOPARAMETERFNVPROC __glewStereoParameterfNV = NULL;
+PFNGLSTEREOPARAMETERINVPROC __glewStereoParameteriNV = NULL;
+
+PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC __glewAlphaToCoverageDitherControlNV = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC __glewMultiDrawArraysIndirectBindlessNV = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC __glewMultiDrawElementsIndirectBindlessNV = NULL;
+
+PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawArraysIndirectBindlessCountNV = NULL;
+PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawElementsIndirectBindlessCountNV = NULL;
+
+PFNGLGETIMAGEHANDLENVPROC __glewGetImageHandleNV = NULL;
+PFNGLGETTEXTUREHANDLENVPROC __glewGetTextureHandleNV = NULL;
+PFNGLGETTEXTURESAMPLERHANDLENVPROC __glewGetTextureSamplerHandleNV = NULL;
+PFNGLISIMAGEHANDLERESIDENTNVPROC __glewIsImageHandleResidentNV = NULL;
+PFNGLISTEXTUREHANDLERESIDENTNVPROC __glewIsTextureHandleResidentNV = NULL;
+PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC __glewMakeImageHandleNonResidentNV = NULL;
+PFNGLMAKEIMAGEHANDLERESIDENTNVPROC __glewMakeImageHandleResidentNV = NULL;
+PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC __glewMakeTextureHandleNonResidentNV = NULL;
+PFNGLMAKETEXTUREHANDLERESIDENTNVPROC __glewMakeTextureHandleResidentNV = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC __glewProgramUniformHandleui64NV = NULL;
+PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC __glewProgramUniformHandleui64vNV = NULL;
+PFNGLUNIFORMHANDLEUI64NVPROC __glewUniformHandleui64NV = NULL;
+PFNGLUNIFORMHANDLEUI64VNVPROC __glewUniformHandleui64vNV = NULL;
+
+PFNGLBLENDBARRIERNVPROC __glewBlendBarrierNV = NULL;
+PFNGLBLENDPARAMETERINVPROC __glewBlendParameteriNV = NULL;
+
+PFNGLVIEWPORTPOSITIONWSCALENVPROC __glewViewportPositionWScaleNV = NULL;
+
+PFNGLCALLCOMMANDLISTNVPROC __glewCallCommandListNV = NULL;
+PFNGLCOMMANDLISTSEGMENTSNVPROC __glewCommandListSegmentsNV = NULL;
+PFNGLCOMPILECOMMANDLISTNVPROC __glewCompileCommandListNV = NULL;
+PFNGLCREATECOMMANDLISTSNVPROC __glewCreateCommandListsNV = NULL;
+PFNGLCREATESTATESNVPROC __glewCreateStatesNV = NULL;
+PFNGLDELETECOMMANDLISTSNVPROC __glewDeleteCommandListsNV = NULL;
+PFNGLDELETESTATESNVPROC __glewDeleteStatesNV = NULL;
+PFNGLDRAWCOMMANDSADDRESSNVPROC __glewDrawCommandsAddressNV = NULL;
+PFNGLDRAWCOMMANDSNVPROC __glewDrawCommandsNV = NULL;
+PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC __glewDrawCommandsStatesAddressNV = NULL;
+PFNGLDRAWCOMMANDSSTATESNVPROC __glewDrawCommandsStatesNV = NULL;
+PFNGLGETCOMMANDHEADERNVPROC __glewGetCommandHeaderNV = NULL;
+PFNGLGETSTAGEINDEXNVPROC __glewGetStageIndexNV = NULL;
+PFNGLISCOMMANDLISTNVPROC __glewIsCommandListNV = NULL;
+PFNGLISSTATENVPROC __glewIsStateNV = NULL;
+PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC __glewListDrawCommandsStatesClientNV = NULL;
+PFNGLSTATECAPTURENVPROC __glewStateCaptureNV = NULL;
+
+PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV = NULL;
+PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV = NULL;
+
+PFNGLSUBPIXELPRECISIONBIASNVPROC __glewSubpixelPrecisionBiasNV = NULL;
+
+PFNGLCONSERVATIVERASTERPARAMETERFNVPROC __glewConservativeRasterParameterfNV = NULL;
+
+PFNGLCONSERVATIVERASTERPARAMETERINVPROC __glewConservativeRasterParameteriNV = NULL;
+
+PFNGLCOPYBUFFERSUBDATANVPROC __glewCopyBufferSubDataNV = NULL;
+
+PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV = NULL;
+
+PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV = NULL;
+PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV = NULL;
+PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV = NULL;
+
+PFNGLDRAWBUFFERSNVPROC __glewDrawBuffersNV = NULL;
+
+PFNGLDRAWARRAYSINSTANCEDNVPROC __glewDrawArraysInstancedNV = NULL;
+PFNGLDRAWELEMENTSINSTANCEDNVPROC __glewDrawElementsInstancedNV = NULL;
+
+PFNGLDRAWTEXTURENVPROC __glewDrawTextureNV = NULL;
+
+PFNGLDRAWVKIMAGENVPROC __glewDrawVkImageNV = NULL;
+PFNGLGETVKPROCADDRNVPROC __glewGetVkProcAddrNV = NULL;
+PFNGLSIGNALVKFENCENVPROC __glewSignalVkFenceNV = NULL;
+PFNGLSIGNALVKSEMAPHORENVPROC __glewSignalVkSemaphoreNV = NULL;
+PFNGLWAITVKSEMAPHORENVPROC __glewWaitVkSemaphoreNV = NULL;
+
+PFNGLEVALMAPSNVPROC __glewEvalMapsNV = NULL;
+PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV = NULL;
+PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV = NULL;
+PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV = NULL;
+PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV = NULL;
+PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV = NULL;
+PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV = NULL;
+PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV = NULL;
+PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV = NULL;
+
+PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV = NULL;
+PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV = NULL;
+PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV = NULL;
+
+PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV = NULL;
+PFNGLFINISHFENCENVPROC __glewFinishFenceNV = NULL;
+PFNGLGENFENCESNVPROC __glewGenFencesNV = NULL;
+PFNGLGETFENCEIVNVPROC __glewGetFenceivNV = NULL;
+PFNGLISFENCENVPROC __glewIsFenceNV = NULL;
+PFNGLSETFENCENVPROC __glewSetFenceNV = NULL;
+PFNGLTESTFENCENVPROC __glewTestFenceNV = NULL;
+
+PFNGLFRAGMENTCOVERAGECOLORNVPROC __glewFragmentCoverageColorNV = NULL;
+
+PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV = NULL;
+PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV = NULL;
+PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV = NULL;
+PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV = NULL;
+PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV = NULL;
+PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV = NULL;
+
+PFNGLBLITFRAMEBUFFERNVPROC __glewBlitFramebufferNV = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC __glewRenderbufferStorageMultisampleNV = NULL;
+
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV = NULL;
+
+PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV = NULL;
+
+PFNGLMULTICASTBARRIERNVPROC __glewMulticastBarrierNV = NULL;
+PFNGLMULTICASTBLITFRAMEBUFFERNVPROC __glewMulticastBlitFramebufferNV = NULL;
+PFNGLMULTICASTBUFFERSUBDATANVPROC __glewMulticastBufferSubDataNV = NULL;
+PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC __glewMulticastCopyBufferSubDataNV = NULL;
+PFNGLMULTICASTCOPYIMAGESUBDATANVPROC __glewMulticastCopyImageSubDataNV = NULL;
+PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewMulticastFramebufferSampleLocationsfvNV = NULL;
+PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC __glewMulticastGetQueryObjecti64vNV = NULL;
+PFNGLMULTICASTGETQUERYOBJECTIVNVPROC __glewMulticastGetQueryObjectivNV = NULL;
+PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC __glewMulticastGetQueryObjectui64vNV = NULL;
+PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC __glewMulticastGetQueryObjectuivNV = NULL;
+PFNGLMULTICASTWAITSYNCNVPROC __glewMulticastWaitSyncNV = NULL;
+PFNGLRENDERGPUMASKNVPROC __glewRenderGpuMaskNV = NULL;
+
+PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV = NULL;
+PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV = NULL;
+PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV = NULL;
+PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV = NULL;
+PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV = NULL;
+PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV = NULL;
+PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV = NULL;
+
+PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV = NULL;
+PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV = NULL;
+PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV = NULL;
+PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV = NULL;
+PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV = NULL;
+PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV = NULL;
+PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV = NULL;
+PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV = NULL;
+PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV = NULL;
+PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV = NULL;
+PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV = NULL;
+PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV = NULL;
+PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV = NULL;
+PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV = NULL;
+PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV = NULL;
+PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV = NULL;
+PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV = NULL;
+PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV = NULL;
+PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV = NULL;
+PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV = NULL;
+PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV = NULL;
+PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV = NULL;
+PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV = NULL;
+PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV = NULL;
+PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV = NULL;
+PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV = NULL;
+PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV = NULL;
+PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV = NULL;
+PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV = NULL;
+PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV = NULL;
+PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV = NULL;
+
+PFNGLCOLOR3HNVPROC __glewColor3hNV = NULL;
+PFNGLCOLOR3HVNVPROC __glewColor3hvNV = NULL;
+PFNGLCOLOR4HNVPROC __glewColor4hNV = NULL;
+PFNGLCOLOR4HVNVPROC __glewColor4hvNV = NULL;
+PFNGLFOGCOORDHNVPROC __glewFogCoordhNV = NULL;
+PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV = NULL;
+PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV = NULL;
+PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV = NULL;
+PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV = NULL;
+PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV = NULL;
+PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV = NULL;
+PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV = NULL;
+PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV = NULL;
+PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV = NULL;
+PFNGLNORMAL3HNVPROC __glewNormal3hNV = NULL;
+PFNGLNORMAL3HVNVPROC __glewNormal3hvNV = NULL;
+PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV = NULL;
+PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV = NULL;
+PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV = NULL;
+PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV = NULL;
+PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV = NULL;
+PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV = NULL;
+PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV = NULL;
+PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV = NULL;
+PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV = NULL;
+PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV = NULL;
+PFNGLVERTEX2HNVPROC __glewVertex2hNV = NULL;
+PFNGLVERTEX2HVNVPROC __glewVertex2hvNV = NULL;
+PFNGLVERTEX3HNVPROC __glewVertex3hNV = NULL;
+PFNGLVERTEX3HVNVPROC __glewVertex3hvNV = NULL;
+PFNGLVERTEX4HNVPROC __glewVertex4hNV = NULL;
+PFNGLVERTEX4HVNVPROC __glewVertex4hvNV = NULL;
+PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV = NULL;
+PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV = NULL;
+PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV = NULL;
+PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV = NULL;
+PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV = NULL;
+PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV = NULL;
+PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV = NULL;
+PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV = NULL;
+PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV = NULL;
+PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV = NULL;
+PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV = NULL;
+PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV = NULL;
+PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV = NULL;
+PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV = NULL;
+
+PFNGLVERTEXATTRIBDIVISORNVPROC __glewVertexAttribDivisorNV = NULL;
+
+PFNGLGETINTERNALFORMATSAMPLEIVNVPROC __glewGetInternalformatSampleivNV = NULL;
+
+PFNGLBUFFERATTACHMEMORYNVPROC __glewBufferAttachMemoryNV = NULL;
+PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC __glewGetMemoryObjectDetachedResourcesuivNV = NULL;
+PFNGLNAMEDBUFFERATTACHMEMORYNVPROC __glewNamedBufferAttachMemoryNV = NULL;
+PFNGLRESETMEMORYOBJECTPARAMETERNVPROC __glewResetMemoryObjectParameterNV = NULL;
+PFNGLTEXATTACHMEMORYNVPROC __glewTexAttachMemoryNV = NULL;
+PFNGLTEXTUREATTACHMEMORYNVPROC __glewTextureAttachMemoryNV = NULL;
+
+PFNGLBUFFERPAGECOMMITMENTMEMNVPROC __glewBufferPageCommitmentMemNV = NULL;
+PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC __glewNamedBufferPageCommitmentMemNV = NULL;
+PFNGLTEXPAGECOMMITMENTMEMNVPROC __glewTexPageCommitmentMemNV = NULL;
+PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC __glewTexturePageCommitmentMemNV = NULL;
+
+PFNGLDRAWMESHTASKSINDIRECTNVPROC __glewDrawMeshTasksIndirectNV = NULL;
+PFNGLDRAWMESHTASKSNVPROC __glewDrawMeshTasksNV = NULL;
+PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC __glewMultiDrawMeshTasksIndirectCountNV = NULL;
+PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC __glewMultiDrawMeshTasksIndirectNV = NULL;
+
+PFNGLUNIFORMMATRIX2X3FVNVPROC __glewUniformMatrix2x3fvNV = NULL;
+PFNGLUNIFORMMATRIX2X4FVNVPROC __glewUniformMatrix2x4fvNV = NULL;
+PFNGLUNIFORMMATRIX3X2FVNVPROC __glewUniformMatrix3x2fvNV = NULL;
+PFNGLUNIFORMMATRIX3X4FVNVPROC __glewUniformMatrix3x4fvNV = NULL;
+PFNGLUNIFORMMATRIX4X2FVNVPROC __glewUniformMatrix4x2fvNV = NULL;
+PFNGLUNIFORMMATRIX4X3FVNVPROC __glewUniformMatrix4x3fvNV = NULL;
+
+PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV = NULL;
+PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV = NULL;
+PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV = NULL;
+PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV = NULL;
+PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV = NULL;
+PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV = NULL;
+PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV = NULL;
+
+PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV = NULL;
+PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV = NULL;
+PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV = NULL;
+
+PFNGLCOPYPATHNVPROC __glewCopyPathNV = NULL;
+PFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV = NULL;
+PFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV = NULL;
+PFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV = NULL;
+PFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV = NULL;
+PFNGLDELETEPATHSNVPROC __glewDeletePathsNV = NULL;
+PFNGLGENPATHSNVPROC __glewGenPathsNV = NULL;
+PFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV = NULL;
+PFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV = NULL;
+PFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV = NULL;
+PFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV = NULL;
+PFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV = NULL;
+PFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV = NULL;
+PFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV = NULL;
+PFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV = NULL;
+PFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV = NULL;
+PFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV = NULL;
+PFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV = NULL;
+PFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV = NULL;
+PFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV = NULL;
+PFNGLGETPROGRAMRESOURCEFVNVPROC __glewGetProgramResourcefvNV = NULL;
+PFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV = NULL;
+PFNGLISPATHNVPROC __glewIsPathNV = NULL;
+PFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV = NULL;
+PFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV = NULL;
+PFNGLMATRIXLOAD3X2FNVPROC __glewMatrixLoad3x2fNV = NULL;
+PFNGLMATRIXLOAD3X3FNVPROC __glewMatrixLoad3x3fNV = NULL;
+PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC __glewMatrixLoadTranspose3x3fNV = NULL;
+PFNGLMATRIXMULT3X2FNVPROC __glewMatrixMult3x2fNV = NULL;
+PFNGLMATRIXMULT3X3FNVPROC __glewMatrixMult3x3fNV = NULL;
+PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC __glewMatrixMultTranspose3x3fNV = NULL;
+PFNGLPATHCOLORGENNVPROC __glewPathColorGenNV = NULL;
+PFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV = NULL;
+PFNGLPATHCOORDSNVPROC __glewPathCoordsNV = NULL;
+PFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV = NULL;
+PFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV = NULL;
+PFNGLPATHFOGGENNVPROC __glewPathFogGenNV = NULL;
+PFNGLPATHGLYPHINDEXARRAYNVPROC __glewPathGlyphIndexArrayNV = NULL;
+PFNGLPATHGLYPHINDEXRANGENVPROC __glewPathGlyphIndexRangeNV = NULL;
+PFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV = NULL;
+PFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV = NULL;
+PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC __glewPathMemoryGlyphIndexArrayNV = NULL;
+PFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV = NULL;
+PFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV = NULL;
+PFNGLPATHPARAMETERINVPROC __glewPathParameteriNV = NULL;
+PFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV = NULL;
+PFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV = NULL;
+PFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV = NULL;
+PFNGLPATHSTRINGNVPROC __glewPathStringNV = NULL;
+PFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV = NULL;
+PFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV = NULL;
+PFNGLPATHTEXGENNVPROC __glewPathTexGenNV = NULL;
+PFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV = NULL;
+PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC __glewProgramPathFragmentInputGenNV = NULL;
+PFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV = NULL;
+PFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV = NULL;
+PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV = NULL;
+PFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV = NULL;
+PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC __glewStencilThenCoverFillPathInstancedNV = NULL;
+PFNGLSTENCILTHENCOVERFILLPATHNVPROC __glewStencilThenCoverFillPathNV = NULL;
+PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC __glewStencilThenCoverStrokePathInstancedNV = NULL;
+PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC __glewStencilThenCoverStrokePathNV = NULL;
+PFNGLTRANSFORMPATHNVPROC __glewTransformPathNV = NULL;
+PFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV = NULL;
+
+PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV = NULL;
+PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV = NULL;
+
+PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV = NULL;
+PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV = NULL;
+
+PFNGLPOLYGONMODENVPROC __glewPolygonModeNV = NULL;
+
+PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV = NULL;
+PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV = NULL;
+PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV = NULL;
+PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV = NULL;
+PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV = NULL;
+PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV = NULL;
+
+PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV = NULL;
+PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV = NULL;
+
+PFNGLREADBUFFERNVPROC __glewReadBufferNV = NULL;
+
+PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV = NULL;
+PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV = NULL;
+PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV = NULL;
+PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV = NULL;
+PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV = NULL;
+PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV = NULL;
+PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV = NULL;
+PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV = NULL;
+PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV = NULL;
+PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV = NULL;
+PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV = NULL;
+PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV = NULL;
+PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV = NULL;
+
+PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV = NULL;
+PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV = NULL;
+
+PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewFramebufferSampleLocationsfvNV = NULL;
+PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewNamedFramebufferSampleLocationsfvNV = NULL;
+PFNGLRESOLVEDEPTHVALUESNVPROC __glewResolveDepthValuesNV = NULL;
+
+PFNGLSCISSOREXCLUSIVEARRAYVNVPROC __glewScissorExclusiveArrayvNV = NULL;
+PFNGLSCISSOREXCLUSIVENVPROC __glewScissorExclusiveNV = NULL;
+
+PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV = NULL;
+PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV = NULL;
+PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV = NULL;
+PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV = NULL;
+PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV = NULL;
+PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV = NULL;
+PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV = NULL;
+PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV = NULL;
+PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV = NULL;
+PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV = NULL;
+PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV = NULL;
+PFNGLUNIFORMUI64NVPROC __glewUniformui64NV = NULL;
+PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV = NULL;
+
+PFNGLBINDSHADINGRATEIMAGENVPROC __glewBindShadingRateImageNV = NULL;
+PFNGLGETSHADINGRATEIMAGEPALETTENVPROC __glewGetShadingRateImagePaletteNV = NULL;
+PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC __glewGetShadingRateSampleLocationivNV = NULL;
+PFNGLSHADINGRATEIMAGEBARRIERNVPROC __glewShadingRateImageBarrierNV = NULL;
+PFNGLSHADINGRATEIMAGEPALETTENVPROC __glewShadingRateImagePaletteNV = NULL;
+PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC __glewShadingRateSampleOrderCustomNV = NULL;
+PFNGLSHADINGRATESAMPLEORDERNVPROC __glewShadingRateSampleOrderNV = NULL;
+
+PFNGLCOMPRESSEDTEXIMAGE3DNVPROC __glewCompressedTexImage3DNV = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC __glewCompressedTexSubImage3DNV = NULL;
+PFNGLCOPYTEXSUBIMAGE3DNVPROC __glewCopyTexSubImage3DNV = NULL;
+PFNGLFRAMEBUFFERTEXTURELAYERNVPROC __glewFramebufferTextureLayerNV = NULL;
+PFNGLTEXIMAGE3DNVPROC __glewTexImage3DNV = NULL;
+PFNGLTEXSUBIMAGE3DNVPROC __glewTexSubImage3DNV = NULL;
+
+PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV = NULL;
+
+PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV = NULL;
+PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV = NULL;
+PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV = NULL;
+PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV = NULL;
+PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV = NULL;
+PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV = NULL;
+
+PFNGLCREATESEMAPHORESNVPROC __glewCreateSemaphoresNV = NULL;
+PFNGLGETSEMAPHOREPARAMETERIVNVPROC __glewGetSemaphoreParameterivNV = NULL;
+PFNGLSEMAPHOREPARAMETERIVNVPROC __glewSemaphoreParameterivNV = NULL;
+
+PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV = NULL;
+PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV = NULL;
+PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV = NULL;
+PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV = NULL;
+PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV = NULL;
+PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV = NULL;
+PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV = NULL;
+PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV = NULL;
+PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV = NULL;
+PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV = NULL;
+PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV = NULL;
+
+PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV = NULL;
+PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV = NULL;
+PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV = NULL;
+PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV = NULL;
+PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV = NULL;
+PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV = NULL;
+
+PFNGLVDPAUFININVPROC __glewVDPAUFiniNV = NULL;
+PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV = NULL;
+PFNGLVDPAUINITNVPROC __glewVDPAUInitNV = NULL;
+PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV = NULL;
+PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV = NULL;
+PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV = NULL;
+PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV = NULL;
+PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV = NULL;
+PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV = NULL;
+PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV = NULL;
+
+PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC __glewVDPAURegisterVideoSurfaceWithPictureStructureNV = NULL;
+
+PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV = NULL;
+PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV = NULL;
+
+PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV = NULL;
+PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV = NULL;
+PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV = NULL;
+PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV = NULL;
+PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV = NULL;
+PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV = NULL;
+PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV = NULL;
+PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV = NULL;
+PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV = NULL;
+PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV = NULL;
+PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV = NULL;
+PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV = NULL;
+PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV = NULL;
+PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV = NULL;
+PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV = NULL;
+PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV = NULL;
+PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV = NULL;
+PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV = NULL;
+PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV = NULL;
+
+PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV = NULL;
+PFNGLCOLORFORMATNVPROC __glewColorFormatNV = NULL;
+PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV = NULL;
+PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV = NULL;
+PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV = NULL;
+PFNGLINDEXFORMATNVPROC __glewIndexFormatNV = NULL;
+PFNGLNORMALFORMATNVPROC __glewNormalFormatNV = NULL;
+PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV = NULL;
+PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV = NULL;
+PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV = NULL;
+PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV = NULL;
+PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV = NULL;
+
+PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV = NULL;
+PFNGLBINDPROGRAMNVPROC __glewBindProgramNV = NULL;
+PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV = NULL;
+PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV = NULL;
+PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV = NULL;
+PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV = NULL;
+PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV = NULL;
+PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV = NULL;
+PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV = NULL;
+PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV = NULL;
+PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV = NULL;
+PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV = NULL;
+PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV = NULL;
+PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV = NULL;
+PFNGLISPROGRAMNVPROC __glewIsProgramNV = NULL;
+PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV = NULL;
+PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV = NULL;
+PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV = NULL;
+PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV = NULL;
+PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV = NULL;
+PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV = NULL;
+PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV = NULL;
+PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV = NULL;
+PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV = NULL;
+PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV = NULL;
+PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV = NULL;
+PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV = NULL;
+PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV = NULL;
+PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV = NULL;
+PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV = NULL;
+PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV = NULL;
+PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV = NULL;
+PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV = NULL;
+PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV = NULL;
+PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV = NULL;
+PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV = NULL;
+PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV = NULL;
+PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV = NULL;
+PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV = NULL;
+PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV = NULL;
+PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV = NULL;
+PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV = NULL;
+PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV = NULL;
+PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV = NULL;
+PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV = NULL;
+PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV = NULL;
+PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV = NULL;
+PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV = NULL;
+PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV = NULL;
+PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV = NULL;
+PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV = NULL;
+PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV = NULL;
+PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV = NULL;
+PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV = NULL;
+PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV = NULL;
+PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV = NULL;
+PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV = NULL;
+PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV = NULL;
+PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV = NULL;
+PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV = NULL;
+PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV = NULL;
+PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV = NULL;
+PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV = NULL;
+PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV = NULL;
+
+PFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV = NULL;
+PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV = NULL;
+PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV = NULL;
+PFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV = NULL;
+PFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV = NULL;
+PFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV = NULL;
+PFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV = NULL;
+PFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV = NULL;
+PFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV = NULL;
+PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV = NULL;
+PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV = NULL;
+PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV = NULL;
+
+PFNGLDEPTHRANGEARRAYFVNVPROC __glewDepthRangeArrayfvNV = NULL;
+PFNGLDEPTHRANGEINDEXEDFNVPROC __glewDepthRangeIndexedfNV = NULL;
+PFNGLDISABLEINVPROC __glewDisableiNV = NULL;
+PFNGLENABLEINVPROC __glewEnableiNV = NULL;
+PFNGLGETFLOATI_VNVPROC __glewGetFloati_vNV = NULL;
+PFNGLISENABLEDINVPROC __glewIsEnablediNV = NULL;
+PFNGLSCISSORARRAYVNVPROC __glewScissorArrayvNV = NULL;
+PFNGLSCISSORINDEXEDNVPROC __glewScissorIndexedNV = NULL;
+PFNGLSCISSORINDEXEDVNVPROC __glewScissorIndexedvNV = NULL;
+PFNGLVIEWPORTARRAYVNVPROC __glewViewportArrayvNV = NULL;
+PFNGLVIEWPORTINDEXEDFNVPROC __glewViewportIndexedfNV = NULL;
+PFNGLVIEWPORTINDEXEDFVNVPROC __glewViewportIndexedfvNV = NULL;
+
+PFNGLVIEWPORTSWIZZLENVPROC __glewViewportSwizzleNV = NULL;
+
+PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __glewEGLImageTargetRenderbufferStorageOES = NULL;
+PFNGLEGLIMAGETARGETTEXTURE2DOESPROC __glewEGLImageTargetTexture2DOES = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEOESPROC __glewBlendEquationSeparateOES = NULL;
+
+PFNGLBLENDFUNCSEPARATEOESPROC __glewBlendFuncSeparateOES = NULL;
+
+PFNGLBLENDEQUATIONOESPROC __glewBlendEquationOES = NULL;
+
+PFNGLCOPYIMAGESUBDATAOESPROC __glewCopyImageSubDataOES = NULL;
+
+PFNGLBLENDEQUATIONSEPARATEIOESPROC __glewBlendEquationSeparateiOES = NULL;
+PFNGLBLENDEQUATIONIOESPROC __glewBlendEquationiOES = NULL;
+PFNGLBLENDFUNCSEPARATEIOESPROC __glewBlendFuncSeparateiOES = NULL;
+PFNGLBLENDFUNCIOESPROC __glewBlendFunciOES = NULL;
+PFNGLCOLORMASKIOESPROC __glewColorMaskiOES = NULL;
+PFNGLDISABLEIOESPROC __glewDisableiOES = NULL;
+PFNGLENABLEIOESPROC __glewEnableiOES = NULL;
+PFNGLISENABLEDIOESPROC __glewIsEnablediOES = NULL;
+
+PFNGLBINDFRAMEBUFFEROESPROC __glewBindFramebufferOES = NULL;
+PFNGLBINDRENDERBUFFEROESPROC __glewBindRenderbufferOES = NULL;
+PFNGLCHECKFRAMEBUFFERSTATUSOESPROC __glewCheckFramebufferStatusOES = NULL;
+PFNGLDELETEFRAMEBUFFERSOESPROC __glewDeleteFramebuffersOES = NULL;
+PFNGLDELETERENDERBUFFERSOESPROC __glewDeleteRenderbuffersOES = NULL;
+PFNGLFRAMEBUFFERRENDERBUFFEROESPROC __glewFramebufferRenderbufferOES = NULL;
+PFNGLFRAMEBUFFERTEXTURE2DOESPROC __glewFramebufferTexture2DOES = NULL;
+PFNGLGENFRAMEBUFFERSOESPROC __glewGenFramebuffersOES = NULL;
+PFNGLGENRENDERBUFFERSOESPROC __glewGenRenderbuffersOES = NULL;
+PFNGLGENERATEMIPMAPOESPROC __glewGenerateMipmapOES = NULL;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC __glewGetFramebufferAttachmentParameterivOES = NULL;
+PFNGLGETRENDERBUFFERPARAMETERIVOESPROC __glewGetRenderbufferParameterivOES = NULL;
+PFNGLISFRAMEBUFFEROESPROC __glewIsFramebufferOES = NULL;
+PFNGLISRENDERBUFFEROESPROC __glewIsRenderbufferOES = NULL;
+PFNGLRENDERBUFFERSTORAGEOESPROC __glewRenderbufferStorageOES = NULL;
+
+PFNGLGETPROGRAMBINARYOESPROC __glewGetProgramBinaryOES = NULL;
+PFNGLPROGRAMBINARYOESPROC __glewProgramBinaryOES = NULL;
+
+PFNGLGETBUFFERPOINTERVOESPROC __glewGetBufferPointervOES = NULL;
+PFNGLMAPBUFFEROESPROC __glewMapBufferOES = NULL;
+PFNGLUNMAPBUFFEROESPROC __glewUnmapBufferOES = NULL;
+
+PFNGLCURRENTPALETTEMATRIXOESPROC __glewCurrentPaletteMatrixOES = NULL;
+PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC __glewLoadPaletteFromModelViewMatrixOES = NULL;
+PFNGLMATRIXINDEXPOINTEROESPROC __glewMatrixIndexPointerOES = NULL;
+PFNGLWEIGHTPOINTEROESPROC __glewWeightPointerOES = NULL;
+
+PFNGLMINSAMPLESHADINGOESPROC __glewMinSampleShadingOES = NULL;
+
+PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES = NULL;
+PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES = NULL;
+PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES = NULL;
+PFNGLFRUSTUMFOESPROC __glewFrustumfOES = NULL;
+PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES = NULL;
+PFNGLORTHOFOESPROC __glewOrthofOES = NULL;
+
+PFNGLCOMPRESSEDTEXIMAGE3DOESPROC __glewCompressedTexImage3DOES = NULL;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __glewCompressedTexSubImage3DOES = NULL;
+PFNGLCOPYTEXSUBIMAGE3DOESPROC __glewCopyTexSubImage3DOES = NULL;
+PFNGLFRAMEBUFFERTEXTURE3DOESPROC __glewFramebufferTexture3DOES = NULL;
+PFNGLTEXIMAGE3DOESPROC __glewTexImage3DOES = NULL;
+PFNGLTEXSUBIMAGE3DOESPROC __glewTexSubImage3DOES = NULL;
+
+PFNGLGETSAMPLERPARAMETERIIVOESPROC __glewGetSamplerParameterIivOES = NULL;
+PFNGLGETSAMPLERPARAMETERIUIVOESPROC __glewGetSamplerParameterIuivOES = NULL;
+PFNGLGETTEXPARAMETERIIVOESPROC __glewGetTexParameterIivOES = NULL;
+PFNGLGETTEXPARAMETERIUIVOESPROC __glewGetTexParameterIuivOES = NULL;
+PFNGLSAMPLERPARAMETERIIVOESPROC __glewSamplerParameterIivOES = NULL;
+PFNGLSAMPLERPARAMETERIUIVOESPROC __glewSamplerParameterIuivOES = NULL;
+PFNGLTEXPARAMETERIIVOESPROC __glewTexParameterIivOES = NULL;
+PFNGLTEXPARAMETERIUIVOESPROC __glewTexParameterIuivOES = NULL;
+
+PFNGLTEXBUFFEROESPROC __glewTexBufferOES = NULL;
+PFNGLTEXBUFFERRANGEOESPROC __glewTexBufferRangeOES = NULL;
+
+PFNGLGETTEXGENFVOESPROC __glewGetTexGenfvOES = NULL;
+PFNGLGETTEXGENIVOESPROC __glewGetTexGenivOES = NULL;
+PFNGLGETTEXGENXVOESPROC __glewGetTexGenxvOES = NULL;
+PFNGLTEXGENFOESPROC __glewTexGenfOES = NULL;
+PFNGLTEXGENFVOESPROC __glewTexGenfvOES = NULL;
+PFNGLTEXGENIOESPROC __glewTexGeniOES = NULL;
+PFNGLTEXGENIVOESPROC __glewTexGenivOES = NULL;
+PFNGLTEXGENXOESPROC __glewTexGenxOES = NULL;
+PFNGLTEXGENXVOESPROC __glewTexGenxvOES = NULL;
+
+PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC __glewTexStorage3DMultisampleOES = NULL;
+
+PFNGLTEXTUREVIEWOESPROC __glewTextureViewOES = NULL;
+
+PFNGLBINDVERTEXARRAYOESPROC __glewBindVertexArrayOES = NULL;
+PFNGLDELETEVERTEXARRAYSOESPROC __glewDeleteVertexArraysOES = NULL;
+PFNGLGENVERTEXARRAYSOESPROC __glewGenVertexArraysOES = NULL;
+PFNGLISVERTEXARRAYOESPROC __glewIsVertexArrayOES = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewFramebufferTextureMultiviewOVR = NULL;
+PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewNamedFramebufferTextureMultiviewOVR = NULL;
+
+PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __glewFramebufferTextureMultisampleMultiviewOVR = NULL;
+
+PFNGLALPHAFUNCQCOMPROC __glewAlphaFuncQCOM = NULL;
+
+PFNGLDISABLEDRIVERCONTROLQCOMPROC __glewDisableDriverControlQCOM = NULL;
+PFNGLENABLEDRIVERCONTROLQCOMPROC __glewEnableDriverControlQCOM = NULL;
+PFNGLGETDRIVERCONTROLSTRINGQCOMPROC __glewGetDriverControlStringQCOM = NULL;
+PFNGLGETDRIVERCONTROLSQCOMPROC __glewGetDriverControlsQCOM = NULL;
+
+PFNGLEXTGETBUFFERPOINTERVQCOMPROC __glewExtGetBufferPointervQCOM = NULL;
+PFNGLEXTGETBUFFERSQCOMPROC __glewExtGetBuffersQCOM = NULL;
+PFNGLEXTGETFRAMEBUFFERSQCOMPROC __glewExtGetFramebuffersQCOM = NULL;
+PFNGLEXTGETRENDERBUFFERSQCOMPROC __glewExtGetRenderbuffersQCOM = NULL;
+PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC __glewExtGetTexLevelParameterivQCOM = NULL;
+PFNGLEXTGETTEXSUBIMAGEQCOMPROC __glewExtGetTexSubImageQCOM = NULL;
+PFNGLEXTGETTEXTURESQCOMPROC __glewExtGetTexturesQCOM = NULL;
+PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC __glewExtTexObjectStateOverrideiQCOM = NULL;
+
+PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC __glewExtGetProgramBinarySourceQCOM = NULL;
+PFNGLEXTGETPROGRAMSQCOMPROC __glewExtGetProgramsQCOM = NULL;
+PFNGLEXTGETSHADERSQCOMPROC __glewExtGetShadersQCOM = NULL;
+PFNGLEXTISPROGRAMBINARYQCOMPROC __glewExtIsProgramBinaryQCOM = NULL;
+
+PFNGLEXTRAPOLATETEX2DQCOMPROC __glewExtrapolateTex2DQCOM = NULL;
+
+PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC __glewFramebufferFoveationConfigQCOM = NULL;
+PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC __glewFramebufferFoveationParametersQCOM = NULL;
+
+PFNGLTEXESTIMATEMOTIONQCOMPROC __glewTexEstimateMotionQCOM = NULL;
+PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC __glewTexEstimateMotionRegionsQCOM = NULL;
+
+PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC __glewFramebufferFetchBarrierQCOM = NULL;
+
+PFNGLSHADINGRATEQCOMPROC __glewShadingRateQCOM = NULL;
+
+PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC __glewTextureFoveationParametersQCOM = NULL;
+
+PFNGLENDTILINGQCOMPROC __glewEndTilingQCOM = NULL;
+PFNGLSTARTTILINGQCOMPROC __glewStartTilingQCOM = NULL;
+
+PFNGLALPHAFUNCXPROC __glewAlphaFuncx = NULL;
+PFNGLCLEARCOLORXPROC __glewClearColorx = NULL;
+PFNGLCLEARDEPTHXPROC __glewClearDepthx = NULL;
+PFNGLCOLOR4XPROC __glewColor4x = NULL;
+PFNGLDEPTHRANGEXPROC __glewDepthRangex = NULL;
+PFNGLFOGXPROC __glewFogx = NULL;
+PFNGLFOGXVPROC __glewFogxv = NULL;
+PFNGLFRUSTUMFPROC __glewFrustumf = NULL;
+PFNGLFRUSTUMXPROC __glewFrustumx = NULL;
+PFNGLLIGHTMODELXPROC __glewLightModelx = NULL;
+PFNGLLIGHTMODELXVPROC __glewLightModelxv = NULL;
+PFNGLLIGHTXPROC __glewLightx = NULL;
+PFNGLLIGHTXVPROC __glewLightxv = NULL;
+PFNGLLINEWIDTHXPROC __glewLineWidthx = NULL;
+PFNGLLOADMATRIXXPROC __glewLoadMatrixx = NULL;
+PFNGLMATERIALXPROC __glewMaterialx = NULL;
+PFNGLMATERIALXVPROC __glewMaterialxv = NULL;
+PFNGLMULTMATRIXXPROC __glewMultMatrixx = NULL;
+PFNGLMULTITEXCOORD4XPROC __glewMultiTexCoord4x = NULL;
+PFNGLNORMAL3XPROC __glewNormal3x = NULL;
+PFNGLORTHOFPROC __glewOrthof = NULL;
+PFNGLORTHOXPROC __glewOrthox = NULL;
+PFNGLPOINTSIZEXPROC __glewPointSizex = NULL;
+PFNGLPOLYGONOFFSETXPROC __glewPolygonOffsetx = NULL;
+PFNGLROTATEXPROC __glewRotatex = NULL;
+PFNGLSAMPLECOVERAGEXPROC __glewSampleCoveragex = NULL;
+PFNGLSCALEXPROC __glewScalex = NULL;
+PFNGLTEXENVXPROC __glewTexEnvx = NULL;
+PFNGLTEXENVXVPROC __glewTexEnvxv = NULL;
+PFNGLTEXPARAMETERXPROC __glewTexParameterx = NULL;
+PFNGLTRANSLATEXPROC __glewTranslatex = NULL;
+
+PFNGLCLIPPLANEFPROC __glewClipPlanef = NULL;
+PFNGLCLIPPLANEXPROC __glewClipPlanex = NULL;
+PFNGLGETCLIPPLANEFPROC __glewGetClipPlanef = NULL;
+PFNGLGETCLIPPLANEXPROC __glewGetClipPlanex = NULL;
+PFNGLGETFIXEDVPROC __glewGetFixedv = NULL;
+PFNGLGETLIGHTXVPROC __glewGetLightxv = NULL;
+PFNGLGETMATERIALXVPROC __glewGetMaterialxv = NULL;
+PFNGLGETTEXENVXVPROC __glewGetTexEnvxv = NULL;
+PFNGLGETTEXPARAMETERXVPROC __glewGetTexParameterxv = NULL;
+PFNGLPOINTPARAMETERXPROC __glewPointParameterx = NULL;
+PFNGLPOINTPARAMETERXVPROC __glewPointParameterxv = NULL;
+PFNGLPOINTSIZEPOINTEROESPROC __glewPointSizePointerOES = NULL;
+PFNGLTEXPARAMETERXVPROC __glewTexParameterxv = NULL;
+
+PFNGLERRORSTRINGREGALPROC __glewErrorStringREGAL = NULL;
+
+PFNGLGETEXTENSIONREGALPROC __glewGetExtensionREGAL = NULL;
+PFNGLISSUPPORTEDREGALPROC __glewIsSupportedREGAL = NULL;
+
+PFNGLLOGMESSAGECALLBACKREGALPROC __glewLogMessageCallbackREGAL = NULL;
+
+PFNGLGETPROCADDRESSREGALPROC __glewGetProcAddressREGAL = NULL;
+
+PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS = NULL;
+PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS = NULL;
+
+PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS = NULL;
+PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS = NULL;
+
+PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS = NULL;
+PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS = NULL;
+
+PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC __glewInterleavedTextureCoordSetsSGIS = NULL;
+PFNGLSELECTTEXTURECOORDSETSGISPROC __glewSelectTextureCoordSetSGIS = NULL;
+PFNGLSELECTTEXTURESGISPROC __glewSelectTextureSGIS = NULL;
+PFNGLSELECTTEXTURETRANSFORMSGISPROC __glewSelectTextureTransformSGIS = NULL;
+
+PFNGLMULTISAMPLESUBRECTPOSSGISPROC __glewMultisampleSubRectPosSGIS = NULL;
+
+PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS = NULL;
+PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS = NULL;
+
+PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS = NULL;
+PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS = NULL;
+
+PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS = NULL;
+PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS = NULL;
+
+PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX = NULL;
+PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX = NULL;
+PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX = NULL;
+PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX = NULL;
+PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX = NULL;
+PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX = NULL;
+
+PFNGLADDRESSSPACEPROC __glewAddressSpace = NULL;
+PFNGLDATAPIPEPROC __glewDataPipe = NULL;
+
+PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX = NULL;
+
+PFNGLFOGLAYERSSGIXPROC __glewFogLayersSGIX = NULL;
+PFNGLGETFOGLAYERSSGIXPROC __glewGetFogLayersSGIX = NULL;
+
+PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX = NULL;
+
+PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX = NULL;
+PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX = NULL;
+PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX = NULL;
+PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX = NULL;
+PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX = NULL;
+PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX = NULL;
+PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX = NULL;
+PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX = NULL;
+PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX = NULL;
+PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX = NULL;
+PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX = NULL;
+PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX = NULL;
+PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX = NULL;
+PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX = NULL;
+PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX = NULL;
+PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX = NULL;
+PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX = NULL;
+
+PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX = NULL;
+
+PFNGLIGLOOINTERFACESGIXPROC __glewIglooInterfaceSGIX = NULL;
+
+PFNGLALLOCMPEGPREDICTORSSGIXPROC __glewAllocMPEGPredictorsSGIX = NULL;
+PFNGLDELETEMPEGPREDICTORSSGIXPROC __glewDeleteMPEGPredictorsSGIX = NULL;
+PFNGLGENMPEGPREDICTORSSGIXPROC __glewGenMPEGPredictorsSGIX = NULL;
+PFNGLGETMPEGPARAMETERFVSGIXPROC __glewGetMPEGParameterfvSGIX = NULL;
+PFNGLGETMPEGPARAMETERIVSGIXPROC __glewGetMPEGParameterivSGIX = NULL;
+PFNGLGETMPEGPREDICTORSGIXPROC __glewGetMPEGPredictorSGIX = NULL;
+PFNGLGETMPEGQUANTTABLEUBVPROC __glewGetMPEGQuantTableubv = NULL;
+PFNGLISMPEGPREDICTORSGIXPROC __glewIsMPEGPredictorSGIX = NULL;
+PFNGLMPEGPREDICTORSGIXPROC __glewMPEGPredictorSGIX = NULL;
+PFNGLMPEGQUANTTABLEUBVPROC __glewMPEGQuantTableubv = NULL;
+PFNGLSWAPMPEGPREDICTORSSGIXPROC __glewSwapMPEGPredictorsSGIX = NULL;
+
+PFNGLGETNONLINLIGHTFVSGIXPROC __glewGetNonlinLightfvSGIX = NULL;
+PFNGLGETNONLINMATERIALFVSGIXPROC __glewGetNonlinMaterialfvSGIX = NULL;
+PFNGLNONLINLIGHTFVSGIXPROC __glewNonlinLightfvSGIX = NULL;
+PFNGLNONLINMATERIALFVSGIXPROC __glewNonlinMaterialfvSGIX = NULL;
+
+PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX = NULL;
+
+PFNGLDEFORMSGIXPROC __glewDeformSGIX = NULL;
+PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC __glewLoadIdentityDeformationMapSGIX = NULL;
+
+PFNGLMESHBREADTHSGIXPROC __glewMeshBreadthSGIX = NULL;
+PFNGLMESHSTRIDESGIXPROC __glewMeshStrideSGIX = NULL;
+
+PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX = NULL;
+
+PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX = NULL;
+PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX = NULL;
+PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX = NULL;
+PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX = NULL;
+
+PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX = NULL;
+
+PFNGLGETVECTOROPERATIONSGIXPROC __glewGetVectorOperationSGIX = NULL;
+PFNGLVECTOROPERATIONSGIXPROC __glewVectorOperationSGIX = NULL;
+
+PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC __glewAreVertexArraysResidentSGIX = NULL;
+PFNGLBINDVERTEXARRAYSGIXPROC __glewBindVertexArraySGIX = NULL;
+PFNGLDELETEVERTEXARRAYSSGIXPROC __glewDeleteVertexArraysSGIX = NULL;
+PFNGLGENVERTEXARRAYSSGIXPROC __glewGenVertexArraysSGIX = NULL;
+PFNGLISVERTEXARRAYSGIXPROC __glewIsVertexArraySGIX = NULL;
+PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC __glewPrioritizeVertexArraysSGIX = NULL;
+
+PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI = NULL;
+PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI = NULL;
+PFNGLCOLORTABLESGIPROC __glewColorTableSGI = NULL;
+PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI = NULL;
+PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI = NULL;
+PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI = NULL;
+PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI = NULL;
+
+PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC __glewGetPixelTransformParameterfvSGI = NULL;
+PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC __glewGetPixelTransformParameterivSGI = NULL;
+PFNGLPIXELTRANSFORMPARAMETERFSGIPROC __glewPixelTransformParameterfSGI = NULL;
+PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC __glewPixelTransformParameterfvSGI = NULL;
+PFNGLPIXELTRANSFORMPARAMETERISGIPROC __glewPixelTransformParameteriSGI = NULL;
+PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC __glewPixelTransformParameterivSGI = NULL;
+PFNGLPIXELTRANSFORMSGIPROC __glewPixelTransformSGI = NULL;
+
+PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX = NULL;
+
+PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN = NULL;
+PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN = NULL;
+PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN = NULL;
+PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN = NULL;
+PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN = NULL;
+PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN = NULL;
+PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN = NULL;
+PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN = NULL;
+
+PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN = NULL;
+
+PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN = NULL;
+PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN = NULL;
+PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN = NULL;
+PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN = NULL;
+PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN = NULL;
+PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN = NULL;
+PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN = NULL;
+
+PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN = NULL;
+PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN = NULL;
+PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN = NULL;
+PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN = NULL;
+PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN = NULL;
+PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN = NULL;
+PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN = NULL;
+PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN = NULL;
+PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN = NULL;
+PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN = NULL;
+PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN = NULL;
+PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN = NULL;
+PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN = NULL;
+PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN = NULL;
+PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN = NULL;
+PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN = NULL;
+PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN = NULL;
+PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN = NULL;
+PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN = NULL;
+PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN = NULL;
+PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN = NULL;
+PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN = NULL;
+
+PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN = NULL;
+
+GLboolean __GLEW_VERSION_1_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_2 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_2_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_3 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_4 = GL_FALSE;
+GLboolean __GLEW_VERSION_1_5 = GL_FALSE;
+GLboolean __GLEW_VERSION_2_0 = GL_FALSE;
+GLboolean __GLEW_VERSION_2_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_0 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_2 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_3 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_0 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_1 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_2 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_3 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_4 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_5 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_6 = GL_FALSE;
+GLboolean __GLEW_3DFX_multisample = GL_FALSE;
+GLboolean __GLEW_3DFX_tbuffer = GL_FALSE;
+GLboolean __GLEW_3DFX_texture_compression_FXT1 = GL_FALSE;
+GLboolean __GLEW_AMD_blend_minmax_factor = GL_FALSE;
+GLboolean __GLEW_AMD_compressed_3DC_texture = GL_FALSE;
+GLboolean __GLEW_AMD_compressed_ATC_texture = GL_FALSE;
+GLboolean __GLEW_AMD_conservative_depth = GL_FALSE;
+GLboolean __GLEW_AMD_debug_output = GL_FALSE;
+GLboolean __GLEW_AMD_depth_clamp_separate = GL_FALSE;
+GLboolean __GLEW_AMD_draw_buffers_blend = GL_FALSE;
+GLboolean __GLEW_AMD_framebuffer_multisample_advanced = GL_FALSE;
+GLboolean __GLEW_AMD_framebuffer_sample_positions = GL_FALSE;
+GLboolean __GLEW_AMD_gcn_shader = GL_FALSE;
+GLboolean __GLEW_AMD_gpu_shader_half_float = GL_FALSE;
+GLboolean __GLEW_AMD_gpu_shader_half_float_fetch = GL_FALSE;
+GLboolean __GLEW_AMD_gpu_shader_int16 = GL_FALSE;
+GLboolean __GLEW_AMD_gpu_shader_int64 = GL_FALSE;
+GLboolean __GLEW_AMD_interleaved_elements = GL_FALSE;
+GLboolean __GLEW_AMD_multi_draw_indirect = GL_FALSE;
+GLboolean __GLEW_AMD_name_gen_delete = GL_FALSE;
+GLboolean __GLEW_AMD_occlusion_query_event = GL_FALSE;
+GLboolean __GLEW_AMD_performance_monitor = GL_FALSE;
+GLboolean __GLEW_AMD_pinned_memory = GL_FALSE;
+GLboolean __GLEW_AMD_program_binary_Z400 = GL_FALSE;
+GLboolean __GLEW_AMD_query_buffer_object = GL_FALSE;
+GLboolean __GLEW_AMD_sample_positions = GL_FALSE;
+GLboolean __GLEW_AMD_seamless_cubemap_per_texture = GL_FALSE;
+GLboolean __GLEW_AMD_shader_atomic_counter_ops = GL_FALSE;
+GLboolean __GLEW_AMD_shader_ballot = GL_FALSE;
+GLboolean __GLEW_AMD_shader_explicit_vertex_parameter = GL_FALSE;
+GLboolean __GLEW_AMD_shader_image_load_store_lod = GL_FALSE;
+GLboolean __GLEW_AMD_shader_stencil_export = GL_FALSE;
+GLboolean __GLEW_AMD_shader_stencil_value_export = GL_FALSE;
+GLboolean __GLEW_AMD_shader_trinary_minmax = GL_FALSE;
+GLboolean __GLEW_AMD_sparse_texture = GL_FALSE;
+GLboolean __GLEW_AMD_stencil_operation_extended = GL_FALSE;
+GLboolean __GLEW_AMD_texture_gather_bias_lod = GL_FALSE;
+GLboolean __GLEW_AMD_texture_texture4 = GL_FALSE;
+GLboolean __GLEW_AMD_transform_feedback3_lines_triangles = GL_FALSE;
+GLboolean __GLEW_AMD_transform_feedback4 = GL_FALSE;
+GLboolean __GLEW_AMD_vertex_shader_layer = GL_FALSE;
+GLboolean __GLEW_AMD_vertex_shader_tessellator = GL_FALSE;
+GLboolean __GLEW_AMD_vertex_shader_viewport_index = GL_FALSE;
+GLboolean __GLEW_ANDROID_extension_pack_es31a = GL_FALSE;
+GLboolean __GLEW_ANGLE_depth_texture = GL_FALSE;
+GLboolean __GLEW_ANGLE_framebuffer_blit = GL_FALSE;
+GLboolean __GLEW_ANGLE_framebuffer_multisample = GL_FALSE;
+GLboolean __GLEW_ANGLE_instanced_arrays = GL_FALSE;
+GLboolean __GLEW_ANGLE_pack_reverse_row_order = GL_FALSE;
+GLboolean __GLEW_ANGLE_program_binary = GL_FALSE;
+GLboolean __GLEW_ANGLE_texture_compression_dxt1 = GL_FALSE;
+GLboolean __GLEW_ANGLE_texture_compression_dxt3 = GL_FALSE;
+GLboolean __GLEW_ANGLE_texture_compression_dxt5 = GL_FALSE;
+GLboolean __GLEW_ANGLE_texture_usage = GL_FALSE;
+GLboolean __GLEW_ANGLE_timer_query = GL_FALSE;
+GLboolean __GLEW_ANGLE_translated_shader_source = GL_FALSE;
+GLboolean __GLEW_APPLE_aux_depth_stencil = GL_FALSE;
+GLboolean __GLEW_APPLE_client_storage = GL_FALSE;
+GLboolean __GLEW_APPLE_clip_distance = GL_FALSE;
+GLboolean __GLEW_APPLE_color_buffer_packed_float = GL_FALSE;
+GLboolean __GLEW_APPLE_copy_texture_levels = GL_FALSE;
+GLboolean __GLEW_APPLE_element_array = GL_FALSE;
+GLboolean __GLEW_APPLE_fence = GL_FALSE;
+GLboolean __GLEW_APPLE_float_pixels = GL_FALSE;
+GLboolean __GLEW_APPLE_flush_buffer_range = GL_FALSE;
+GLboolean __GLEW_APPLE_framebuffer_multisample = GL_FALSE;
+GLboolean __GLEW_APPLE_object_purgeable = GL_FALSE;
+GLboolean __GLEW_APPLE_pixel_buffer = GL_FALSE;
+GLboolean __GLEW_APPLE_rgb_422 = GL_FALSE;
+GLboolean __GLEW_APPLE_row_bytes = GL_FALSE;
+GLboolean __GLEW_APPLE_specular_vector = GL_FALSE;
+GLboolean __GLEW_APPLE_sync = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_2D_limited_npot = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_format_BGRA8888 = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_max_level = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_packed_float = GL_FALSE;
+GLboolean __GLEW_APPLE_texture_range = GL_FALSE;
+GLboolean __GLEW_APPLE_transform_hint = GL_FALSE;
+GLboolean __GLEW_APPLE_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_APPLE_vertex_array_range = GL_FALSE;
+GLboolean __GLEW_APPLE_vertex_program_evaluators = GL_FALSE;
+GLboolean __GLEW_APPLE_ycbcr_422 = GL_FALSE;
+GLboolean __GLEW_ARB_ES2_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_ES3_1_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_ES3_2_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_ES3_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_arrays_of_arrays = GL_FALSE;
+GLboolean __GLEW_ARB_base_instance = GL_FALSE;
+GLboolean __GLEW_ARB_bindless_texture = GL_FALSE;
+GLboolean __GLEW_ARB_blend_func_extended = GL_FALSE;
+GLboolean __GLEW_ARB_buffer_storage = GL_FALSE;
+GLboolean __GLEW_ARB_cl_event = GL_FALSE;
+GLboolean __GLEW_ARB_clear_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_clear_texture = GL_FALSE;
+GLboolean __GLEW_ARB_clip_control = GL_FALSE;
+GLboolean __GLEW_ARB_color_buffer_float = GL_FALSE;
+GLboolean __GLEW_ARB_compatibility = GL_FALSE;
+GLboolean __GLEW_ARB_compressed_texture_pixel_storage = GL_FALSE;
+GLboolean __GLEW_ARB_compute_shader = GL_FALSE;
+GLboolean __GLEW_ARB_compute_variable_group_size = GL_FALSE;
+GLboolean __GLEW_ARB_conditional_render_inverted = GL_FALSE;
+GLboolean __GLEW_ARB_conservative_depth = GL_FALSE;
+GLboolean __GLEW_ARB_copy_buffer = GL_FALSE;
+GLboolean __GLEW_ARB_copy_image = GL_FALSE;
+GLboolean __GLEW_ARB_cull_distance = GL_FALSE;
+GLboolean __GLEW_ARB_debug_output = GL_FALSE;
+GLboolean __GLEW_ARB_depth_buffer_float = GL_FALSE;
+GLboolean __GLEW_ARB_depth_clamp = GL_FALSE;
+GLboolean __GLEW_ARB_depth_texture = GL_FALSE;
+GLboolean __GLEW_ARB_derivative_control = GL_FALSE;
+GLboolean __GLEW_ARB_direct_state_access = GL_FALSE;
+GLboolean __GLEW_ARB_draw_buffers = GL_FALSE;
+GLboolean __GLEW_ARB_draw_buffers_blend = GL_FALSE;
+GLboolean __GLEW_ARB_draw_elements_base_vertex = GL_FALSE;
+GLboolean __GLEW_ARB_draw_indirect = GL_FALSE;
+GLboolean __GLEW_ARB_draw_instanced = GL_FALSE;
+GLboolean __GLEW_ARB_enhanced_layouts = GL_FALSE;
+GLboolean __GLEW_ARB_explicit_attrib_location = GL_FALSE;
+GLboolean __GLEW_ARB_explicit_uniform_location = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_coord_conventions = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_layer_viewport = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_program = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_program_shadow = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_shader = GL_FALSE;
+GLboolean __GLEW_ARB_fragment_shader_interlock = GL_FALSE;
+GLboolean __GLEW_ARB_framebuffer_no_attachments = GL_FALSE;
+GLboolean __GLEW_ARB_framebuffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_framebuffer_sRGB = GL_FALSE;
+GLboolean __GLEW_ARB_geometry_shader4 = GL_FALSE;
+GLboolean __GLEW_ARB_get_program_binary = GL_FALSE;
+GLboolean __GLEW_ARB_get_texture_sub_image = GL_FALSE;
+GLboolean __GLEW_ARB_gl_spirv = GL_FALSE;
+GLboolean __GLEW_ARB_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_ARB_gpu_shader_fp64 = GL_FALSE;
+GLboolean __GLEW_ARB_gpu_shader_int64 = GL_FALSE;
+GLboolean __GLEW_ARB_half_float_pixel = GL_FALSE;
+GLboolean __GLEW_ARB_half_float_vertex = GL_FALSE;
+GLboolean __GLEW_ARB_imaging = GL_FALSE;
+GLboolean __GLEW_ARB_indirect_parameters = GL_FALSE;
+GLboolean __GLEW_ARB_instanced_arrays = GL_FALSE;
+GLboolean __GLEW_ARB_internalformat_query = GL_FALSE;
+GLboolean __GLEW_ARB_internalformat_query2 = GL_FALSE;
+GLboolean __GLEW_ARB_invalidate_subdata = GL_FALSE;
+GLboolean __GLEW_ARB_map_buffer_alignment = GL_FALSE;
+GLboolean __GLEW_ARB_map_buffer_range = GL_FALSE;
+GLboolean __GLEW_ARB_matrix_palette = GL_FALSE;
+GLboolean __GLEW_ARB_multi_bind = GL_FALSE;
+GLboolean __GLEW_ARB_multi_draw_indirect = GL_FALSE;
+GLboolean __GLEW_ARB_multisample = GL_FALSE;
+GLboolean __GLEW_ARB_multitexture = GL_FALSE;
+GLboolean __GLEW_ARB_occlusion_query = GL_FALSE;
+GLboolean __GLEW_ARB_occlusion_query2 = GL_FALSE;
+GLboolean __GLEW_ARB_parallel_shader_compile = GL_FALSE;
+GLboolean __GLEW_ARB_pipeline_statistics_query = GL_FALSE;
+GLboolean __GLEW_ARB_pixel_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_point_parameters = GL_FALSE;
+GLboolean __GLEW_ARB_point_sprite = GL_FALSE;
+GLboolean __GLEW_ARB_polygon_offset_clamp = GL_FALSE;
+GLboolean __GLEW_ARB_post_depth_coverage = GL_FALSE;
+GLboolean __GLEW_ARB_program_interface_query = GL_FALSE;
+GLboolean __GLEW_ARB_provoking_vertex = GL_FALSE;
+GLboolean __GLEW_ARB_query_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_robust_buffer_access_behavior = GL_FALSE;
+GLboolean __GLEW_ARB_robustness = GL_FALSE;
+GLboolean __GLEW_ARB_robustness_application_isolation = GL_FALSE;
+GLboolean __GLEW_ARB_robustness_share_group_isolation = GL_FALSE;
+GLboolean __GLEW_ARB_sample_locations = GL_FALSE;
+GLboolean __GLEW_ARB_sample_shading = GL_FALSE;
+GLboolean __GLEW_ARB_sampler_objects = GL_FALSE;
+GLboolean __GLEW_ARB_seamless_cube_map = GL_FALSE;
+GLboolean __GLEW_ARB_seamless_cubemap_per_texture = GL_FALSE;
+GLboolean __GLEW_ARB_separate_shader_objects = GL_FALSE;
+GLboolean __GLEW_ARB_shader_atomic_counter_ops = GL_FALSE;
+GLboolean __GLEW_ARB_shader_atomic_counters = GL_FALSE;
+GLboolean __GLEW_ARB_shader_ballot = GL_FALSE;
+GLboolean __GLEW_ARB_shader_bit_encoding = GL_FALSE;
+GLboolean __GLEW_ARB_shader_clock = GL_FALSE;
+GLboolean __GLEW_ARB_shader_draw_parameters = GL_FALSE;
+GLboolean __GLEW_ARB_shader_group_vote = GL_FALSE;
+GLboolean __GLEW_ARB_shader_image_load_store = GL_FALSE;
+GLboolean __GLEW_ARB_shader_image_size = GL_FALSE;
+GLboolean __GLEW_ARB_shader_objects = GL_FALSE;
+GLboolean __GLEW_ARB_shader_precision = GL_FALSE;
+GLboolean __GLEW_ARB_shader_stencil_export = GL_FALSE;
+GLboolean __GLEW_ARB_shader_storage_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_shader_subroutine = GL_FALSE;
+GLboolean __GLEW_ARB_shader_texture_image_samples = GL_FALSE;
+GLboolean __GLEW_ARB_shader_texture_lod = GL_FALSE;
+GLboolean __GLEW_ARB_shader_viewport_layer_array = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_100 = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_420pack = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_include = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_packing = GL_FALSE;
+GLboolean __GLEW_ARB_shadow = GL_FALSE;
+GLboolean __GLEW_ARB_shadow_ambient = GL_FALSE;
+GLboolean __GLEW_ARB_sparse_buffer = GL_FALSE;
+GLboolean __GLEW_ARB_sparse_texture = GL_FALSE;
+GLboolean __GLEW_ARB_sparse_texture2 = GL_FALSE;
+GLboolean __GLEW_ARB_sparse_texture_clamp = GL_FALSE;
+GLboolean __GLEW_ARB_spirv_extensions = GL_FALSE;
+GLboolean __GLEW_ARB_stencil_texturing = GL_FALSE;
+GLboolean __GLEW_ARB_sync = GL_FALSE;
+GLboolean __GLEW_ARB_tessellation_shader = GL_FALSE;
+GLboolean __GLEW_ARB_texture_barrier = GL_FALSE;
+GLboolean __GLEW_ARB_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_ARB_texture_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_texture_buffer_object_rgb32 = GL_FALSE;
+GLboolean __GLEW_ARB_texture_buffer_range = GL_FALSE;
+GLboolean __GLEW_ARB_texture_compression = GL_FALSE;
+GLboolean __GLEW_ARB_texture_compression_bptc = GL_FALSE;
+GLboolean __GLEW_ARB_texture_compression_rgtc = GL_FALSE;
+GLboolean __GLEW_ARB_texture_cube_map = GL_FALSE;
+GLboolean __GLEW_ARB_texture_cube_map_array = GL_FALSE;
+GLboolean __GLEW_ARB_texture_env_add = GL_FALSE;
+GLboolean __GLEW_ARB_texture_env_combine = GL_FALSE;
+GLboolean __GLEW_ARB_texture_env_crossbar = GL_FALSE;
+GLboolean __GLEW_ARB_texture_env_dot3 = GL_FALSE;
+GLboolean __GLEW_ARB_texture_filter_anisotropic = GL_FALSE;
+GLboolean __GLEW_ARB_texture_filter_minmax = GL_FALSE;
+GLboolean __GLEW_ARB_texture_float = GL_FALSE;
+GLboolean __GLEW_ARB_texture_gather = GL_FALSE;
+GLboolean __GLEW_ARB_texture_mirror_clamp_to_edge = GL_FALSE;
+GLboolean __GLEW_ARB_texture_mirrored_repeat = GL_FALSE;
+GLboolean __GLEW_ARB_texture_multisample = GL_FALSE;
+GLboolean __GLEW_ARB_texture_non_power_of_two = GL_FALSE;
+GLboolean __GLEW_ARB_texture_query_levels = GL_FALSE;
+GLboolean __GLEW_ARB_texture_query_lod = GL_FALSE;
+GLboolean __GLEW_ARB_texture_rectangle = GL_FALSE;
+GLboolean __GLEW_ARB_texture_rg = GL_FALSE;
+GLboolean __GLEW_ARB_texture_rgb10_a2ui = GL_FALSE;
+GLboolean __GLEW_ARB_texture_stencil8 = GL_FALSE;
+GLboolean __GLEW_ARB_texture_storage = GL_FALSE;
+GLboolean __GLEW_ARB_texture_storage_multisample = GL_FALSE;
+GLboolean __GLEW_ARB_texture_swizzle = GL_FALSE;
+GLboolean __GLEW_ARB_texture_view = GL_FALSE;
+GLboolean __GLEW_ARB_timer_query = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback2 = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback3 = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback_instanced = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback_overflow_query = GL_FALSE;
+GLboolean __GLEW_ARB_transpose_matrix = GL_FALSE;
+GLboolean __GLEW_ARB_uniform_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_array_bgra = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_attrib_64bit = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_attrib_binding = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_blend = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_program = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_shader = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_type_10f_11f_11f_rev = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev = GL_FALSE;
+GLboolean __GLEW_ARB_viewport_array = GL_FALSE;
+GLboolean __GLEW_ARB_window_pos = GL_FALSE;
+GLboolean __GLEW_ARM_mali_program_binary = GL_FALSE;
+GLboolean __GLEW_ARM_mali_shader_binary = GL_FALSE;
+GLboolean __GLEW_ARM_rgba8 = GL_FALSE;
+GLboolean __GLEW_ARM_shader_framebuffer_fetch = GL_FALSE;
+GLboolean __GLEW_ARM_shader_framebuffer_fetch_depth_stencil = GL_FALSE;
+GLboolean __GLEW_ARM_texture_unnormalized_coordinates = GL_FALSE;
+GLboolean __GLEW_ATIX_point_sprites = GL_FALSE;
+GLboolean __GLEW_ATIX_texture_env_combine3 = GL_FALSE;
+GLboolean __GLEW_ATIX_texture_env_route = GL_FALSE;
+GLboolean __GLEW_ATIX_vertex_shader_output_point_size = GL_FALSE;
+GLboolean __GLEW_ATI_draw_buffers = GL_FALSE;
+GLboolean __GLEW_ATI_element_array = GL_FALSE;
+GLboolean __GLEW_ATI_envmap_bumpmap = GL_FALSE;
+GLboolean __GLEW_ATI_fragment_shader = GL_FALSE;
+GLboolean __GLEW_ATI_map_object_buffer = GL_FALSE;
+GLboolean __GLEW_ATI_meminfo = GL_FALSE;
+GLboolean __GLEW_ATI_pn_triangles = GL_FALSE;
+GLboolean __GLEW_ATI_separate_stencil = GL_FALSE;
+GLboolean __GLEW_ATI_shader_texture_lod = GL_FALSE;
+GLboolean __GLEW_ATI_text_fragment_shader = GL_FALSE;
+GLboolean __GLEW_ATI_texture_compression_3dc = GL_FALSE;
+GLboolean __GLEW_ATI_texture_env_combine3 = GL_FALSE;
+GLboolean __GLEW_ATI_texture_float = GL_FALSE;
+GLboolean __GLEW_ATI_texture_mirror_once = GL_FALSE;
+GLboolean __GLEW_ATI_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_ATI_vertex_attrib_array_object = GL_FALSE;
+GLboolean __GLEW_ATI_vertex_streams = GL_FALSE;
+GLboolean __GLEW_DMP_program_binary = GL_FALSE;
+GLboolean __GLEW_DMP_shader_binary = GL_FALSE;
+GLboolean __GLEW_EXT_422_pixels = GL_FALSE;
+GLboolean __GLEW_EXT_Cg_shader = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_image_array = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_image_external_wrap_modes = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_image_storage = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_image_storage_compression = GL_FALSE;
+GLboolean __GLEW_EXT_EGL_sync = GL_FALSE;
+GLboolean __GLEW_EXT_YUV_target = GL_FALSE;
+GLboolean __GLEW_EXT_abgr = GL_FALSE;
+GLboolean __GLEW_EXT_base_instance = GL_FALSE;
+GLboolean __GLEW_EXT_bgra = GL_FALSE;
+GLboolean __GLEW_EXT_bindable_uniform = GL_FALSE;
+GLboolean __GLEW_EXT_blend_color = GL_FALSE;
+GLboolean __GLEW_EXT_blend_equation_separate = GL_FALSE;
+GLboolean __GLEW_EXT_blend_func_extended = GL_FALSE;
+GLboolean __GLEW_EXT_blend_func_separate = GL_FALSE;
+GLboolean __GLEW_EXT_blend_logic_op = GL_FALSE;
+GLboolean __GLEW_EXT_blend_minmax = GL_FALSE;
+GLboolean __GLEW_EXT_blend_subtract = GL_FALSE;
+GLboolean __GLEW_EXT_buffer_storage = GL_FALSE;
+GLboolean __GLEW_EXT_clear_texture = GL_FALSE;
+GLboolean __GLEW_EXT_clip_control = GL_FALSE;
+GLboolean __GLEW_EXT_clip_cull_distance = GL_FALSE;
+GLboolean __GLEW_EXT_clip_volume_hint = GL_FALSE;
+GLboolean __GLEW_EXT_cmyka = GL_FALSE;
+GLboolean __GLEW_EXT_color_buffer_float = GL_FALSE;
+GLboolean __GLEW_EXT_color_buffer_half_float = GL_FALSE;
+GLboolean __GLEW_EXT_color_subtable = GL_FALSE;
+GLboolean __GLEW_EXT_compiled_vertex_array = GL_FALSE;
+GLboolean __GLEW_EXT_compressed_ETC1_RGB8_sub_texture = GL_FALSE;
+GLboolean __GLEW_EXT_conservative_depth = GL_FALSE;
+GLboolean __GLEW_EXT_convolution = GL_FALSE;
+GLboolean __GLEW_EXT_coordinate_frame = GL_FALSE;
+GLboolean __GLEW_EXT_copy_image = GL_FALSE;
+GLboolean __GLEW_EXT_copy_texture = GL_FALSE;
+GLboolean __GLEW_EXT_cull_vertex = GL_FALSE;
+GLboolean __GLEW_EXT_debug_label = GL_FALSE;
+GLboolean __GLEW_EXT_debug_marker = GL_FALSE;
+GLboolean __GLEW_EXT_depth_bounds_test = GL_FALSE;
+GLboolean __GLEW_EXT_depth_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_direct_state_access = GL_FALSE;
+GLboolean __GLEW_EXT_discard_framebuffer = GL_FALSE;
+GLboolean __GLEW_EXT_disjoint_timer_query = GL_FALSE;
+GLboolean __GLEW_EXT_draw_buffers = GL_FALSE;
+GLboolean __GLEW_EXT_draw_buffers2 = GL_FALSE;
+GLboolean __GLEW_EXT_draw_buffers_indexed = GL_FALSE;
+GLboolean __GLEW_EXT_draw_elements_base_vertex = GL_FALSE;
+GLboolean __GLEW_EXT_draw_instanced = GL_FALSE;
+GLboolean __GLEW_EXT_draw_range_elements = GL_FALSE;
+GLboolean __GLEW_EXT_draw_transform_feedback = GL_FALSE;
+GLboolean __GLEW_EXT_external_buffer = GL_FALSE;
+GLboolean __GLEW_EXT_float_blend = GL_FALSE;
+GLboolean __GLEW_EXT_fog_coord = GL_FALSE;
+GLboolean __GLEW_EXT_frag_depth = GL_FALSE;
+GLboolean __GLEW_EXT_fragment_lighting = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_blit = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_multisample = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_object = GL_FALSE;
+GLboolean __GLEW_EXT_framebuffer_sRGB = GL_FALSE;
+GLboolean __GLEW_EXT_geometry_point_size = GL_FALSE;
+GLboolean __GLEW_EXT_geometry_shader = GL_FALSE;
+GLboolean __GLEW_EXT_geometry_shader4 = GL_FALSE;
+GLboolean __GLEW_EXT_gpu_program_parameters = GL_FALSE;
+GLboolean __GLEW_EXT_gpu_shader4 = GL_FALSE;
+GLboolean __GLEW_EXT_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_EXT_histogram = GL_FALSE;
+GLboolean __GLEW_EXT_index_array_formats = GL_FALSE;
+GLboolean __GLEW_EXT_index_func = GL_FALSE;
+GLboolean __GLEW_EXT_index_material = GL_FALSE;
+GLboolean __GLEW_EXT_index_texture = GL_FALSE;
+GLboolean __GLEW_EXT_instanced_arrays = GL_FALSE;
+GLboolean __GLEW_EXT_light_texture = GL_FALSE;
+GLboolean __GLEW_EXT_map_buffer_range = GL_FALSE;
+GLboolean __GLEW_EXT_memory_object = GL_FALSE;
+GLboolean __GLEW_EXT_memory_object_fd = GL_FALSE;
+GLboolean __GLEW_EXT_memory_object_win32 = GL_FALSE;
+GLboolean __GLEW_EXT_misc_attribute = GL_FALSE;
+GLboolean __GLEW_EXT_multi_draw_arrays = GL_FALSE;
+GLboolean __GLEW_EXT_multi_draw_indirect = GL_FALSE;
+GLboolean __GLEW_EXT_multiple_textures = GL_FALSE;
+GLboolean __GLEW_EXT_multisample = GL_FALSE;
+GLboolean __GLEW_EXT_multisample_compatibility = GL_FALSE;
+GLboolean __GLEW_EXT_multisampled_render_to_texture = GL_FALSE;
+GLboolean __GLEW_EXT_multisampled_render_to_texture2 = GL_FALSE;
+GLboolean __GLEW_EXT_multiview_draw_buffers = GL_FALSE;
+GLboolean __GLEW_EXT_multiview_tessellation_geometry_shader = GL_FALSE;
+GLboolean __GLEW_EXT_multiview_texture_multisample = GL_FALSE;
+GLboolean __GLEW_EXT_multiview_timer_query = GL_FALSE;
+GLboolean __GLEW_EXT_occlusion_query_boolean = GL_FALSE;
+GLboolean __GLEW_EXT_packed_depth_stencil = GL_FALSE;
+GLboolean __GLEW_EXT_packed_float = GL_FALSE;
+GLboolean __GLEW_EXT_packed_pixels = GL_FALSE;
+GLboolean __GLEW_EXT_paletted_texture = GL_FALSE;
+GLboolean __GLEW_EXT_pixel_buffer_object = GL_FALSE;
+GLboolean __GLEW_EXT_pixel_transform = GL_FALSE;
+GLboolean __GLEW_EXT_pixel_transform_color_table = GL_FALSE;
+GLboolean __GLEW_EXT_point_parameters = GL_FALSE;
+GLboolean __GLEW_EXT_polygon_offset = GL_FALSE;
+GLboolean __GLEW_EXT_polygon_offset_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_post_depth_coverage = GL_FALSE;
+GLboolean __GLEW_EXT_primitive_bounding_box = GL_FALSE;
+GLboolean __GLEW_EXT_protected_textures = GL_FALSE;
+GLboolean __GLEW_EXT_provoking_vertex = GL_FALSE;
+GLboolean __GLEW_EXT_pvrtc_sRGB = GL_FALSE;
+GLboolean __GLEW_EXT_raster_multisample = GL_FALSE;
+GLboolean __GLEW_EXT_read_format_bgra = GL_FALSE;
+GLboolean __GLEW_EXT_render_snorm = GL_FALSE;
+GLboolean __GLEW_EXT_rescale_normal = GL_FALSE;
+GLboolean __GLEW_EXT_robustness = GL_FALSE;
+GLboolean __GLEW_EXT_sRGB = GL_FALSE;
+GLboolean __GLEW_EXT_sRGB_write_control = GL_FALSE;
+GLboolean __GLEW_EXT_scene_marker = GL_FALSE;
+GLboolean __GLEW_EXT_secondary_color = GL_FALSE;
+GLboolean __GLEW_EXT_semaphore = GL_FALSE;
+GLboolean __GLEW_EXT_semaphore_fd = GL_FALSE;
+GLboolean __GLEW_EXT_semaphore_win32 = GL_FALSE;
+GLboolean __GLEW_EXT_separate_depth_stencil = GL_FALSE;
+GLboolean __GLEW_EXT_separate_shader_objects = GL_FALSE;
+GLboolean __GLEW_EXT_separate_specular_color = GL_FALSE;
+GLboolean __GLEW_EXT_shader_framebuffer_fetch = GL_FALSE;
+GLboolean __GLEW_EXT_shader_framebuffer_fetch_non_coherent = GL_FALSE;
+GLboolean __GLEW_EXT_shader_group_vote = GL_FALSE;
+GLboolean __GLEW_EXT_shader_image_load_formatted = GL_FALSE;
+GLboolean __GLEW_EXT_shader_image_load_store = GL_FALSE;
+GLboolean __GLEW_EXT_shader_implicit_conversions = GL_FALSE;
+GLboolean __GLEW_EXT_shader_integer_mix = GL_FALSE;
+GLboolean __GLEW_EXT_shader_io_blocks = GL_FALSE;
+GLboolean __GLEW_EXT_shader_non_constant_global_initializers = GL_FALSE;
+GLboolean __GLEW_EXT_shader_pixel_local_storage = GL_FALSE;
+GLboolean __GLEW_EXT_shader_pixel_local_storage2 = GL_FALSE;
+GLboolean __GLEW_EXT_shader_samples_identical = GL_FALSE;
+GLboolean __GLEW_EXT_shader_texture_lod = GL_FALSE;
+GLboolean __GLEW_EXT_shadow_funcs = GL_FALSE;
+GLboolean __GLEW_EXT_shadow_samplers = GL_FALSE;
+GLboolean __GLEW_EXT_shared_texture_palette = GL_FALSE;
+GLboolean __GLEW_EXT_sparse_texture = GL_FALSE;
+GLboolean __GLEW_EXT_sparse_texture2 = GL_FALSE;
+GLboolean __GLEW_EXT_static_vertex_array = GL_FALSE;
+GLboolean __GLEW_EXT_stencil_clear_tag = GL_FALSE;
+GLboolean __GLEW_EXT_stencil_two_side = GL_FALSE;
+GLboolean __GLEW_EXT_stencil_wrap = GL_FALSE;
+GLboolean __GLEW_EXT_subtexture = GL_FALSE;
+GLboolean __GLEW_EXT_tessellation_point_size = GL_FALSE;
+GLboolean __GLEW_EXT_tessellation_shader = GL_FALSE;
+GLboolean __GLEW_EXT_texture = GL_FALSE;
+GLboolean __GLEW_EXT_texture3D = GL_FALSE;
+GLboolean __GLEW_EXT_texture_array = GL_FALSE;
+GLboolean __GLEW_EXT_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_texture_buffer = GL_FALSE;
+GLboolean __GLEW_EXT_texture_buffer_object = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_astc_decode_mode = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_bptc = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_dxt1 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_latc = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_rgtc = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_s3tc = GL_FALSE;
+GLboolean __GLEW_EXT_texture_compression_s3tc_srgb = GL_FALSE;
+GLboolean __GLEW_EXT_texture_cube_map = GL_FALSE;
+GLboolean __GLEW_EXT_texture_cube_map_array = GL_FALSE;
+GLboolean __GLEW_EXT_texture_edge_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_texture_env = GL_FALSE;
+GLboolean __GLEW_EXT_texture_env_add = GL_FALSE;
+GLboolean __GLEW_EXT_texture_env_combine = GL_FALSE;
+GLboolean __GLEW_EXT_texture_env_dot3 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_filter_anisotropic = GL_FALSE;
+GLboolean __GLEW_EXT_texture_filter_minmax = GL_FALSE;
+GLboolean __GLEW_EXT_texture_format_BGRA8888 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_format_sRGB_override = GL_FALSE;
+GLboolean __GLEW_EXT_texture_integer = GL_FALSE;
+GLboolean __GLEW_EXT_texture_lod_bias = GL_FALSE;
+GLboolean __GLEW_EXT_texture_mirror_clamp = GL_FALSE;
+GLboolean __GLEW_EXT_texture_mirror_clamp_to_edge = GL_FALSE;
+GLboolean __GLEW_EXT_texture_norm16 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_object = GL_FALSE;
+GLboolean __GLEW_EXT_texture_perturb_normal = GL_FALSE;
+GLboolean __GLEW_EXT_texture_query_lod = GL_FALSE;
+GLboolean __GLEW_EXT_texture_rectangle = GL_FALSE;
+GLboolean __GLEW_EXT_texture_rg = GL_FALSE;
+GLboolean __GLEW_EXT_texture_sRGB = GL_FALSE;
+GLboolean __GLEW_EXT_texture_sRGB_R8 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_sRGB_RG8 = GL_FALSE;
+GLboolean __GLEW_EXT_texture_sRGB_decode = GL_FALSE;
+GLboolean __GLEW_EXT_texture_shadow_lod = GL_FALSE;
+GLboolean __GLEW_EXT_texture_shared_exponent = GL_FALSE;
+GLboolean __GLEW_EXT_texture_snorm = GL_FALSE;
+GLboolean __GLEW_EXT_texture_storage = GL_FALSE;
+GLboolean __GLEW_EXT_texture_storage_compression = GL_FALSE;
+GLboolean __GLEW_EXT_texture_swizzle = GL_FALSE;
+GLboolean __GLEW_EXT_texture_type_2_10_10_10_REV = GL_FALSE;
+GLboolean __GLEW_EXT_texture_view = GL_FALSE;
+GLboolean __GLEW_EXT_timer_query = GL_FALSE;
+GLboolean __GLEW_EXT_transform_feedback = GL_FALSE;
+GLboolean __GLEW_EXT_unpack_subimage = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_array = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_array_bgra = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_array_setXXX = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_attrib_64bit = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_shader = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_weighting = GL_FALSE;
+GLboolean __GLEW_EXT_win32_keyed_mutex = GL_FALSE;
+GLboolean __GLEW_EXT_window_rectangles = GL_FALSE;
+GLboolean __GLEW_EXT_x11_sync_object = GL_FALSE;
+GLboolean __GLEW_FJ_shader_binary_GCCSO = GL_FALSE;
+GLboolean __GLEW_GREMEDY_frame_terminator = GL_FALSE;
+GLboolean __GLEW_GREMEDY_string_marker = GL_FALSE;
+GLboolean __GLEW_HP_convolution_border_modes = GL_FALSE;
+GLboolean __GLEW_HP_image_transform = GL_FALSE;
+GLboolean __GLEW_HP_occlusion_test = GL_FALSE;
+GLboolean __GLEW_HP_texture_lighting = GL_FALSE;
+GLboolean __GLEW_IBM_cull_vertex = GL_FALSE;
+GLboolean __GLEW_IBM_multimode_draw_arrays = GL_FALSE;
+GLboolean __GLEW_IBM_rasterpos_clip = GL_FALSE;
+GLboolean __GLEW_IBM_static_data = GL_FALSE;
+GLboolean __GLEW_IBM_texture_mirrored_repeat = GL_FALSE;
+GLboolean __GLEW_IBM_vertex_array_lists = GL_FALSE;
+GLboolean __GLEW_IMG_bindless_texture = GL_FALSE;
+GLboolean __GLEW_IMG_framebuffer_downsample = GL_FALSE;
+GLboolean __GLEW_IMG_multisampled_render_to_texture = GL_FALSE;
+GLboolean __GLEW_IMG_program_binary = GL_FALSE;
+GLboolean __GLEW_IMG_read_format = GL_FALSE;
+GLboolean __GLEW_IMG_shader_binary = GL_FALSE;
+GLboolean __GLEW_IMG_texture_compression_pvrtc = GL_FALSE;
+GLboolean __GLEW_IMG_texture_compression_pvrtc2 = GL_FALSE;
+GLboolean __GLEW_IMG_texture_env_enhanced_fixed_function = GL_FALSE;
+GLboolean __GLEW_IMG_texture_filter_cubic = GL_FALSE;
+GLboolean __GLEW_IMG_tile_region_protection = GL_FALSE;
+GLboolean __GLEW_INGR_color_clamp = GL_FALSE;
+GLboolean __GLEW_INGR_interlace_read = GL_FALSE;
+GLboolean __GLEW_INTEL_blackhole_render = GL_FALSE;
+GLboolean __GLEW_INTEL_conservative_rasterization = GL_FALSE;
+GLboolean __GLEW_INTEL_fragment_shader_ordering = GL_FALSE;
+GLboolean __GLEW_INTEL_framebuffer_CMAA = GL_FALSE;
+GLboolean __GLEW_INTEL_map_texture = GL_FALSE;
+GLboolean __GLEW_INTEL_parallel_arrays = GL_FALSE;
+GLboolean __GLEW_INTEL_performance_query = GL_FALSE;
+GLboolean __GLEW_INTEL_shader_integer_functions2 = GL_FALSE;
+GLboolean __GLEW_INTEL_texture_scissor = GL_FALSE;
+GLboolean __GLEW_KHR_blend_equation_advanced = GL_FALSE;
+GLboolean __GLEW_KHR_blend_equation_advanced_coherent = GL_FALSE;
+GLboolean __GLEW_KHR_context_flush_control = GL_FALSE;
+GLboolean __GLEW_KHR_debug = GL_FALSE;
+GLboolean __GLEW_KHR_no_error = GL_FALSE;
+GLboolean __GLEW_KHR_parallel_shader_compile = GL_FALSE;
+GLboolean __GLEW_KHR_robust_buffer_access_behavior = GL_FALSE;
+GLboolean __GLEW_KHR_robustness = GL_FALSE;
+GLboolean __GLEW_KHR_shader_subgroup = GL_FALSE;
+GLboolean __GLEW_KHR_texture_compression_astc_hdr = GL_FALSE;
+GLboolean __GLEW_KHR_texture_compression_astc_ldr = GL_FALSE;
+GLboolean __GLEW_KHR_texture_compression_astc_sliced_3d = GL_FALSE;
+GLboolean __GLEW_KTX_buffer_region = GL_FALSE;
+GLboolean __GLEW_MESAX_texture_stack = GL_FALSE;
+GLboolean __GLEW_MESA_bgra = GL_FALSE;
+GLboolean __GLEW_MESA_framebuffer_flip_x = GL_FALSE;
+GLboolean __GLEW_MESA_framebuffer_flip_y = GL_FALSE;
+GLboolean __GLEW_MESA_framebuffer_swap_xy = GL_FALSE;
+GLboolean __GLEW_MESA_pack_invert = GL_FALSE;
+GLboolean __GLEW_MESA_program_binary_formats = GL_FALSE;
+GLboolean __GLEW_MESA_resize_buffers = GL_FALSE;
+GLboolean __GLEW_MESA_shader_integer_functions = GL_FALSE;
+GLboolean __GLEW_MESA_tile_raster_order = GL_FALSE;
+GLboolean __GLEW_MESA_window_pos = GL_FALSE;
+GLboolean __GLEW_MESA_ycbcr_texture = GL_FALSE;
+GLboolean __GLEW_NVX_blend_equation_advanced_multi_draw_buffers = GL_FALSE;
+GLboolean __GLEW_NVX_conditional_render = GL_FALSE;
+GLboolean __GLEW_NVX_gpu_memory_info = GL_FALSE;
+GLboolean __GLEW_NVX_gpu_multicast2 = GL_FALSE;
+GLboolean __GLEW_NVX_linked_gpu_multicast = GL_FALSE;
+GLboolean __GLEW_NVX_progress_fence = GL_FALSE;
+GLboolean __GLEW_NV_3dvision_settings = GL_FALSE;
+GLboolean __GLEW_NV_EGL_stream_consumer_external = GL_FALSE;
+GLboolean __GLEW_NV_alpha_to_coverage_dither_control = GL_FALSE;
+GLboolean __GLEW_NV_bgr = GL_FALSE;
+GLboolean __GLEW_NV_bindless_multi_draw_indirect = GL_FALSE;
+GLboolean __GLEW_NV_bindless_multi_draw_indirect_count = GL_FALSE;
+GLboolean __GLEW_NV_bindless_texture = GL_FALSE;
+GLboolean __GLEW_NV_blend_equation_advanced = GL_FALSE;
+GLboolean __GLEW_NV_blend_equation_advanced_coherent = GL_FALSE;
+GLboolean __GLEW_NV_blend_minmax_factor = GL_FALSE;
+GLboolean __GLEW_NV_blend_square = GL_FALSE;
+GLboolean __GLEW_NV_clip_space_w_scaling = GL_FALSE;
+GLboolean __GLEW_NV_command_list = GL_FALSE;
+GLboolean __GLEW_NV_compute_program5 = GL_FALSE;
+GLboolean __GLEW_NV_compute_shader_derivatives = GL_FALSE;
+GLboolean __GLEW_NV_conditional_render = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster_dilate = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster_pre_snap = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster_pre_snap_triangles = GL_FALSE;
+GLboolean __GLEW_NV_conservative_raster_underestimation = GL_FALSE;
+GLboolean __GLEW_NV_copy_buffer = GL_FALSE;
+GLboolean __GLEW_NV_copy_depth_to_color = GL_FALSE;
+GLboolean __GLEW_NV_copy_image = GL_FALSE;
+GLboolean __GLEW_NV_deep_texture3D = GL_FALSE;
+GLboolean __GLEW_NV_depth_buffer_float = GL_FALSE;
+GLboolean __GLEW_NV_depth_clamp = GL_FALSE;
+GLboolean __GLEW_NV_depth_nonlinear = GL_FALSE;
+GLboolean __GLEW_NV_depth_range_unclamped = GL_FALSE;
+GLboolean __GLEW_NV_draw_buffers = GL_FALSE;
+GLboolean __GLEW_NV_draw_instanced = GL_FALSE;
+GLboolean __GLEW_NV_draw_texture = GL_FALSE;
+GLboolean __GLEW_NV_draw_vulkan_image = GL_FALSE;
+GLboolean __GLEW_NV_evaluators = GL_FALSE;
+GLboolean __GLEW_NV_explicit_attrib_location = GL_FALSE;
+GLboolean __GLEW_NV_explicit_multisample = GL_FALSE;
+GLboolean __GLEW_NV_fbo_color_attachments = GL_FALSE;
+GLboolean __GLEW_NV_fence = GL_FALSE;
+GLboolean __GLEW_NV_fill_rectangle = GL_FALSE;
+GLboolean __GLEW_NV_float_buffer = GL_FALSE;
+GLboolean __GLEW_NV_fog_distance = GL_FALSE;
+GLboolean __GLEW_NV_fragment_coverage_to_color = GL_FALSE;
+GLboolean __GLEW_NV_fragment_program = GL_FALSE;
+GLboolean __GLEW_NV_fragment_program2 = GL_FALSE;
+GLboolean __GLEW_NV_fragment_program4 = GL_FALSE;
+GLboolean __GLEW_NV_fragment_program_option = GL_FALSE;
+GLboolean __GLEW_NV_fragment_shader_barycentric = GL_FALSE;
+GLboolean __GLEW_NV_fragment_shader_interlock = GL_FALSE;
+GLboolean __GLEW_NV_framebuffer_blit = GL_FALSE;
+GLboolean __GLEW_NV_framebuffer_mixed_samples = GL_FALSE;
+GLboolean __GLEW_NV_framebuffer_multisample = GL_FALSE;
+GLboolean __GLEW_NV_framebuffer_multisample_coverage = GL_FALSE;
+GLboolean __GLEW_NV_generate_mipmap_sRGB = GL_FALSE;
+GLboolean __GLEW_NV_geometry_program4 = GL_FALSE;
+GLboolean __GLEW_NV_geometry_shader4 = GL_FALSE;
+GLboolean __GLEW_NV_geometry_shader_passthrough = GL_FALSE;
+GLboolean __GLEW_NV_gpu_multicast = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program4 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program5 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program5_mem_extended = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program_fp64 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_NV_half_float = GL_FALSE;
+GLboolean __GLEW_NV_image_formats = GL_FALSE;
+GLboolean __GLEW_NV_instanced_arrays = GL_FALSE;
+GLboolean __GLEW_NV_internalformat_sample_query = GL_FALSE;
+GLboolean __GLEW_NV_light_max_exponent = GL_FALSE;
+GLboolean __GLEW_NV_memory_attachment = GL_FALSE;
+GLboolean __GLEW_NV_memory_object_sparse = GL_FALSE;
+GLboolean __GLEW_NV_mesh_shader = GL_FALSE;
+GLboolean __GLEW_NV_multisample_coverage = GL_FALSE;
+GLboolean __GLEW_NV_multisample_filter_hint = GL_FALSE;
+GLboolean __GLEW_NV_non_square_matrices = GL_FALSE;
+GLboolean __GLEW_NV_occlusion_query = GL_FALSE;
+GLboolean __GLEW_NV_pack_subimage = GL_FALSE;
+GLboolean __GLEW_NV_packed_depth_stencil = GL_FALSE;
+GLboolean __GLEW_NV_packed_float = GL_FALSE;
+GLboolean __GLEW_NV_packed_float_linear = GL_FALSE;
+GLboolean __GLEW_NV_parameter_buffer_object = GL_FALSE;
+GLboolean __GLEW_NV_parameter_buffer_object2 = GL_FALSE;
+GLboolean __GLEW_NV_path_rendering = GL_FALSE;
+GLboolean __GLEW_NV_path_rendering_shared_edge = GL_FALSE;
+GLboolean __GLEW_NV_pixel_buffer_object = GL_FALSE;
+GLboolean __GLEW_NV_pixel_data_range = GL_FALSE;
+GLboolean __GLEW_NV_platform_binary = GL_FALSE;
+GLboolean __GLEW_NV_point_sprite = GL_FALSE;
+GLboolean __GLEW_NV_polygon_mode = GL_FALSE;
+GLboolean __GLEW_NV_present_video = GL_FALSE;
+GLboolean __GLEW_NV_primitive_restart = GL_FALSE;
+GLboolean __GLEW_NV_primitive_shading_rate = GL_FALSE;
+GLboolean __GLEW_NV_query_resource_tag = GL_FALSE;
+GLboolean __GLEW_NV_read_buffer = GL_FALSE;
+GLboolean __GLEW_NV_read_buffer_front = GL_FALSE;
+GLboolean __GLEW_NV_read_depth = GL_FALSE;
+GLboolean __GLEW_NV_read_depth_stencil = GL_FALSE;
+GLboolean __GLEW_NV_read_stencil = GL_FALSE;
+GLboolean __GLEW_NV_register_combiners = GL_FALSE;
+GLboolean __GLEW_NV_register_combiners2 = GL_FALSE;
+GLboolean __GLEW_NV_representative_fragment_test = GL_FALSE;
+GLboolean __GLEW_NV_robustness_video_memory_purge = GL_FALSE;
+GLboolean __GLEW_NV_sRGB_formats = GL_FALSE;
+GLboolean __GLEW_NV_sample_locations = GL_FALSE;
+GLboolean __GLEW_NV_sample_mask_override_coverage = GL_FALSE;
+GLboolean __GLEW_NV_scissor_exclusive = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_counters = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_float = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_float64 = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_fp16_vector = GL_FALSE;
+GLboolean __GLEW_NV_shader_atomic_int64 = GL_FALSE;
+GLboolean __GLEW_NV_shader_buffer_load = GL_FALSE;
+GLboolean __GLEW_NV_shader_noperspective_interpolation = GL_FALSE;
+GLboolean __GLEW_NV_shader_storage_buffer_object = GL_FALSE;
+GLboolean __GLEW_NV_shader_subgroup_partitioned = GL_FALSE;
+GLboolean __GLEW_NV_shader_texture_footprint = GL_FALSE;
+GLboolean __GLEW_NV_shader_thread_group = GL_FALSE;
+GLboolean __GLEW_NV_shader_thread_shuffle = GL_FALSE;
+GLboolean __GLEW_NV_shading_rate_image = GL_FALSE;
+GLboolean __GLEW_NV_shadow_samplers_array = GL_FALSE;
+GLboolean __GLEW_NV_shadow_samplers_cube = GL_FALSE;
+GLboolean __GLEW_NV_stereo_view_rendering = GL_FALSE;
+GLboolean __GLEW_NV_tessellation_program5 = GL_FALSE;
+GLboolean __GLEW_NV_texgen_emboss = GL_FALSE;
+GLboolean __GLEW_NV_texgen_reflection = GL_FALSE;
+GLboolean __GLEW_NV_texture_array = GL_FALSE;
+GLboolean __GLEW_NV_texture_barrier = GL_FALSE;
+GLboolean __GLEW_NV_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_NV_texture_compression_latc = GL_FALSE;
+GLboolean __GLEW_NV_texture_compression_s3tc = GL_FALSE;
+GLboolean __GLEW_NV_texture_compression_s3tc_update = GL_FALSE;
+GLboolean __GLEW_NV_texture_compression_vtc = GL_FALSE;
+GLboolean __GLEW_NV_texture_env_combine4 = GL_FALSE;
+GLboolean __GLEW_NV_texture_expand_normal = GL_FALSE;
+GLboolean __GLEW_NV_texture_multisample = GL_FALSE;
+GLboolean __GLEW_NV_texture_npot_2D_mipmap = GL_FALSE;
+GLboolean __GLEW_NV_texture_rectangle = GL_FALSE;
+GLboolean __GLEW_NV_texture_rectangle_compressed = GL_FALSE;
+GLboolean __GLEW_NV_texture_shader = GL_FALSE;
+GLboolean __GLEW_NV_texture_shader2 = GL_FALSE;
+GLboolean __GLEW_NV_texture_shader3 = GL_FALSE;
+GLboolean __GLEW_NV_timeline_semaphore = GL_FALSE;
+GLboolean __GLEW_NV_transform_feedback = GL_FALSE;
+GLboolean __GLEW_NV_transform_feedback2 = GL_FALSE;
+GLboolean __GLEW_NV_uniform_buffer_unified_memory = GL_FALSE;
+GLboolean __GLEW_NV_vdpau_interop = GL_FALSE;
+GLboolean __GLEW_NV_vdpau_interop2 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_array_range = GL_FALSE;
+GLboolean __GLEW_NV_vertex_array_range2 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_attrib_integer_64bit = GL_FALSE;
+GLboolean __GLEW_NV_vertex_buffer_unified_memory = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program1_1 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program2 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program2_option = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program3 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_program4 = GL_FALSE;
+GLboolean __GLEW_NV_video_capture = GL_FALSE;
+GLboolean __GLEW_NV_viewport_array = GL_FALSE;
+GLboolean __GLEW_NV_viewport_array2 = GL_FALSE;
+GLboolean __GLEW_NV_viewport_swizzle = GL_FALSE;
+GLboolean __GLEW_OES_EGL_image = GL_FALSE;
+GLboolean __GLEW_OES_EGL_image_external = GL_FALSE;
+GLboolean __GLEW_OES_EGL_image_external_essl3 = GL_FALSE;
+GLboolean __GLEW_OES_blend_equation_separate = GL_FALSE;
+GLboolean __GLEW_OES_blend_func_separate = GL_FALSE;
+GLboolean __GLEW_OES_blend_subtract = GL_FALSE;
+GLboolean __GLEW_OES_byte_coordinates = GL_FALSE;
+GLboolean __GLEW_OES_compressed_ETC1_RGB8_texture = GL_FALSE;
+GLboolean __GLEW_OES_compressed_paletted_texture = GL_FALSE;
+GLboolean __GLEW_OES_copy_image = GL_FALSE;
+GLboolean __GLEW_OES_depth24 = GL_FALSE;
+GLboolean __GLEW_OES_depth32 = GL_FALSE;
+GLboolean __GLEW_OES_depth_texture = GL_FALSE;
+GLboolean __GLEW_OES_depth_texture_cube_map = GL_FALSE;
+GLboolean __GLEW_OES_draw_buffers_indexed = GL_FALSE;
+GLboolean __GLEW_OES_draw_texture = GL_FALSE;
+GLboolean __GLEW_OES_element_index_uint = GL_FALSE;
+GLboolean __GLEW_OES_extended_matrix_palette = GL_FALSE;
+GLboolean __GLEW_OES_fbo_render_mipmap = GL_FALSE;
+GLboolean __GLEW_OES_fragment_precision_high = GL_FALSE;
+GLboolean __GLEW_OES_framebuffer_object = GL_FALSE;
+GLboolean __GLEW_OES_geometry_point_size = GL_FALSE;
+GLboolean __GLEW_OES_geometry_shader = GL_FALSE;
+GLboolean __GLEW_OES_get_program_binary = GL_FALSE;
+GLboolean __GLEW_OES_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_OES_mapbuffer = GL_FALSE;
+GLboolean __GLEW_OES_matrix_get = GL_FALSE;
+GLboolean __GLEW_OES_matrix_palette = GL_FALSE;
+GLboolean __GLEW_OES_packed_depth_stencil = GL_FALSE;
+GLboolean __GLEW_OES_point_size_array = GL_FALSE;
+GLboolean __GLEW_OES_point_sprite = GL_FALSE;
+GLboolean __GLEW_OES_read_format = GL_FALSE;
+GLboolean __GLEW_OES_required_internalformat = GL_FALSE;
+GLboolean __GLEW_OES_rgb8_rgba8 = GL_FALSE;
+GLboolean __GLEW_OES_sample_shading = GL_FALSE;
+GLboolean __GLEW_OES_sample_variables = GL_FALSE;
+GLboolean __GLEW_OES_shader_image_atomic = GL_FALSE;
+GLboolean __GLEW_OES_shader_io_blocks = GL_FALSE;
+GLboolean __GLEW_OES_shader_multisample_interpolation = GL_FALSE;
+GLboolean __GLEW_OES_single_precision = GL_FALSE;
+GLboolean __GLEW_OES_standard_derivatives = GL_FALSE;
+GLboolean __GLEW_OES_stencil1 = GL_FALSE;
+GLboolean __GLEW_OES_stencil4 = GL_FALSE;
+GLboolean __GLEW_OES_stencil8 = GL_FALSE;
+GLboolean __GLEW_OES_surfaceless_context = GL_FALSE;
+GLboolean __GLEW_OES_tessellation_point_size = GL_FALSE;
+GLboolean __GLEW_OES_tessellation_shader = GL_FALSE;
+GLboolean __GLEW_OES_texture_3D = GL_FALSE;
+GLboolean __GLEW_OES_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_OES_texture_buffer = GL_FALSE;
+GLboolean __GLEW_OES_texture_compression_astc = GL_FALSE;
+GLboolean __GLEW_OES_texture_cube_map = GL_FALSE;
+GLboolean __GLEW_OES_texture_cube_map_array = GL_FALSE;
+GLboolean __GLEW_OES_texture_env_crossbar = GL_FALSE;
+GLboolean __GLEW_OES_texture_mirrored_repeat = GL_FALSE;
+GLboolean __GLEW_OES_texture_npot = GL_FALSE;
+GLboolean __GLEW_OES_texture_stencil8 = GL_FALSE;
+GLboolean __GLEW_OES_texture_storage_multisample_2d_array = GL_FALSE;
+GLboolean __GLEW_OES_texture_view = GL_FALSE;
+GLboolean __GLEW_OES_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_OES_vertex_half_float = GL_FALSE;
+GLboolean __GLEW_OES_vertex_type_10_10_10_2 = GL_FALSE;
+GLboolean __GLEW_OML_interlace = GL_FALSE;
+GLboolean __GLEW_OML_resample = GL_FALSE;
+GLboolean __GLEW_OML_subsample = GL_FALSE;
+GLboolean __GLEW_OVR_multiview = GL_FALSE;
+GLboolean __GLEW_OVR_multiview2 = GL_FALSE;
+GLboolean __GLEW_OVR_multiview_multisampled_render_to_texture = GL_FALSE;
+GLboolean __GLEW_PGI_misc_hints = GL_FALSE;
+GLboolean __GLEW_PGI_vertex_hints = GL_FALSE;
+GLboolean __GLEW_QCOM_YUV_texture_gather = GL_FALSE;
+GLboolean __GLEW_QCOM_alpha_test = GL_FALSE;
+GLboolean __GLEW_QCOM_binning_control = GL_FALSE;
+GLboolean __GLEW_QCOM_driver_control = GL_FALSE;
+GLboolean __GLEW_QCOM_extended_get = GL_FALSE;
+GLboolean __GLEW_QCOM_extended_get2 = GL_FALSE;
+GLboolean __GLEW_QCOM_frame_extrapolation = GL_FALSE;
+GLboolean __GLEW_QCOM_framebuffer_foveated = GL_FALSE;
+GLboolean __GLEW_QCOM_motion_estimation = GL_FALSE;
+GLboolean __GLEW_QCOM_perfmon_global_mode = GL_FALSE;
+GLboolean __GLEW_QCOM_render_shared_exponent = GL_FALSE;
+GLboolean __GLEW_QCOM_shader_framebuffer_fetch_noncoherent = GL_FALSE;
+GLboolean __GLEW_QCOM_shader_framebuffer_fetch_rate = GL_FALSE;
+GLboolean __GLEW_QCOM_shading_rate = GL_FALSE;
+GLboolean __GLEW_QCOM_texture_foveated = GL_FALSE;
+GLboolean __GLEW_QCOM_texture_foveated2 = GL_FALSE;
+GLboolean __GLEW_QCOM_texture_foveated_subsampled_layout = GL_FALSE;
+GLboolean __GLEW_QCOM_tiled_rendering = GL_FALSE;
+GLboolean __GLEW_QCOM_writeonly_rendering = GL_FALSE;
+GLboolean __GLEW_REGAL_ES1_0_compatibility = GL_FALSE;
+GLboolean __GLEW_REGAL_ES1_1_compatibility = GL_FALSE;
+GLboolean __GLEW_REGAL_enable = GL_FALSE;
+GLboolean __GLEW_REGAL_error_string = GL_FALSE;
+GLboolean __GLEW_REGAL_extension_query = GL_FALSE;
+GLboolean __GLEW_REGAL_log = GL_FALSE;
+GLboolean __GLEW_REGAL_proc_address = GL_FALSE;
+GLboolean __GLEW_REND_screen_coordinates = GL_FALSE;
+GLboolean __GLEW_S3_s3tc = GL_FALSE;
+GLboolean __GLEW_SGIS_clip_band_hint = GL_FALSE;
+GLboolean __GLEW_SGIS_color_range = GL_FALSE;
+GLboolean __GLEW_SGIS_detail_texture = GL_FALSE;
+GLboolean __GLEW_SGIS_fog_function = GL_FALSE;
+GLboolean __GLEW_SGIS_generate_mipmap = GL_FALSE;
+GLboolean __GLEW_SGIS_line_texgen = GL_FALSE;
+GLboolean __GLEW_SGIS_multisample = GL_FALSE;
+GLboolean __GLEW_SGIS_multitexture = GL_FALSE;
+GLboolean __GLEW_SGIS_pixel_texture = GL_FALSE;
+GLboolean __GLEW_SGIS_point_line_texgen = GL_FALSE;
+GLboolean __GLEW_SGIS_shared_multisample = GL_FALSE;
+GLboolean __GLEW_SGIS_sharpen_texture = GL_FALSE;
+GLboolean __GLEW_SGIS_texture4D = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_border_clamp = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_edge_clamp = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_filter4 = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_lod = GL_FALSE;
+GLboolean __GLEW_SGIS_texture_select = GL_FALSE;
+GLboolean __GLEW_SGIX_async = GL_FALSE;
+GLboolean __GLEW_SGIX_async_histogram = GL_FALSE;
+GLboolean __GLEW_SGIX_async_pixel = GL_FALSE;
+GLboolean __GLEW_SGIX_bali_g_instruments = GL_FALSE;
+GLboolean __GLEW_SGIX_bali_r_instruments = GL_FALSE;
+GLboolean __GLEW_SGIX_bali_timer_instruments = GL_FALSE;
+GLboolean __GLEW_SGIX_blend_alpha_minmax = GL_FALSE;
+GLboolean __GLEW_SGIX_blend_cadd = GL_FALSE;
+GLboolean __GLEW_SGIX_blend_cmultiply = GL_FALSE;
+GLboolean __GLEW_SGIX_calligraphic_fragment = GL_FALSE;
+GLboolean __GLEW_SGIX_clipmap = GL_FALSE;
+GLboolean __GLEW_SGIX_color_matrix_accuracy = GL_FALSE;
+GLboolean __GLEW_SGIX_color_table_index_mode = GL_FALSE;
+GLboolean __GLEW_SGIX_complex_polar = GL_FALSE;
+GLboolean __GLEW_SGIX_convolution_accuracy = GL_FALSE;
+GLboolean __GLEW_SGIX_cube_map = GL_FALSE;
+GLboolean __GLEW_SGIX_cylinder_texgen = GL_FALSE;
+GLboolean __GLEW_SGIX_datapipe = GL_FALSE;
+GLboolean __GLEW_SGIX_decimation = GL_FALSE;
+GLboolean __GLEW_SGIX_depth_pass_instrument = GL_FALSE;
+GLboolean __GLEW_SGIX_depth_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_dvc = GL_FALSE;
+GLboolean __GLEW_SGIX_flush_raster = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_blend = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_factor_to_alpha = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_layers = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_offset = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_patchy = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_scale = GL_FALSE;
+GLboolean __GLEW_SGIX_fog_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_fragment_lighting_space = GL_FALSE;
+GLboolean __GLEW_SGIX_fragment_specular_lighting = GL_FALSE;
+GLboolean __GLEW_SGIX_fragments_instrument = GL_FALSE;
+GLboolean __GLEW_SGIX_framezoom = GL_FALSE;
+GLboolean __GLEW_SGIX_icc_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_igloo_interface = GL_FALSE;
+GLboolean __GLEW_SGIX_image_compression = GL_FALSE;
+GLboolean __GLEW_SGIX_impact_pixel_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_instrument_error = GL_FALSE;
+GLboolean __GLEW_SGIX_interlace = GL_FALSE;
+GLboolean __GLEW_SGIX_ir_instrument1 = GL_FALSE;
+GLboolean __GLEW_SGIX_line_quality_hint = GL_FALSE;
+GLboolean __GLEW_SGIX_list_priority = GL_FALSE;
+GLboolean __GLEW_SGIX_mpeg1 = GL_FALSE;
+GLboolean __GLEW_SGIX_mpeg2 = GL_FALSE;
+GLboolean __GLEW_SGIX_nonlinear_lighting_pervertex = GL_FALSE;
+GLboolean __GLEW_SGIX_nurbs_eval = GL_FALSE;
+GLboolean __GLEW_SGIX_occlusion_instrument = GL_FALSE;
+GLboolean __GLEW_SGIX_packed_6bytes = GL_FALSE;
+GLboolean __GLEW_SGIX_pixel_texture = GL_FALSE;
+GLboolean __GLEW_SGIX_pixel_texture_bits = GL_FALSE;
+GLboolean __GLEW_SGIX_pixel_texture_lod = GL_FALSE;
+GLboolean __GLEW_SGIX_pixel_tiles = GL_FALSE;
+GLboolean __GLEW_SGIX_polynomial_ffd = GL_FALSE;
+GLboolean __GLEW_SGIX_quad_mesh = GL_FALSE;
+GLboolean __GLEW_SGIX_reference_plane = GL_FALSE;
+GLboolean __GLEW_SGIX_resample = GL_FALSE;
+GLboolean __GLEW_SGIX_scalebias_hint = GL_FALSE;
+GLboolean __GLEW_SGIX_shadow = GL_FALSE;
+GLboolean __GLEW_SGIX_shadow_ambient = GL_FALSE;
+GLboolean __GLEW_SGIX_slim = GL_FALSE;
+GLboolean __GLEW_SGIX_spotlight_cutoff = GL_FALSE;
+GLboolean __GLEW_SGIX_sprite = GL_FALSE;
+GLboolean __GLEW_SGIX_subdiv_patch = GL_FALSE;
+GLboolean __GLEW_SGIX_subsample = GL_FALSE;
+GLboolean __GLEW_SGIX_tag_sample_buffer = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_add_env = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_coordinate_clamp = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_lod_bias = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_mipmap_anisotropic = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_multi_buffer = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_phase = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_range = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_scale_bias = GL_FALSE;
+GLboolean __GLEW_SGIX_texture_supersample = GL_FALSE;
+GLboolean __GLEW_SGIX_vector_ops = GL_FALSE;
+GLboolean __GLEW_SGIX_vertex_array_object = GL_FALSE;
+GLboolean __GLEW_SGIX_vertex_preclip = GL_FALSE;
+GLboolean __GLEW_SGIX_vertex_preclip_hint = GL_FALSE;
+GLboolean __GLEW_SGIX_ycrcb = GL_FALSE;
+GLboolean __GLEW_SGIX_ycrcb_subsample = GL_FALSE;
+GLboolean __GLEW_SGIX_ycrcba = GL_FALSE;
+GLboolean __GLEW_SGI_color_matrix = GL_FALSE;
+GLboolean __GLEW_SGI_color_table = GL_FALSE;
+GLboolean __GLEW_SGI_complex = GL_FALSE;
+GLboolean __GLEW_SGI_complex_type = GL_FALSE;
+GLboolean __GLEW_SGI_fft = GL_FALSE;
+GLboolean __GLEW_SGI_texture_color_table = GL_FALSE;
+GLboolean __GLEW_SUNX_constant_data = GL_FALSE;
+GLboolean __GLEW_SUN_convolution_border_modes = GL_FALSE;
+GLboolean __GLEW_SUN_global_alpha = GL_FALSE;
+GLboolean __GLEW_SUN_mesh_array = GL_FALSE;
+GLboolean __GLEW_SUN_read_video_pixels = GL_FALSE;
+GLboolean __GLEW_SUN_slice_accum = GL_FALSE;
+GLboolean __GLEW_SUN_triangle_list = GL_FALSE;
+GLboolean __GLEW_SUN_vertex = GL_FALSE;
+GLboolean __GLEW_VIV_shader_binary = GL_FALSE;
+GLboolean __GLEW_WIN_phong_shading = GL_FALSE;
+GLboolean __GLEW_WIN_scene_markerXXX = GL_FALSE;
+GLboolean __GLEW_WIN_specular_fog = GL_FALSE;
+GLboolean __GLEW_WIN_swap_hint = GL_FALSE;
+
+static const char * _glewExtensionLookup[] = {
+#ifdef GL_3DFX_multisample
+ "GL_3DFX_multisample",
+#endif
+#ifdef GL_3DFX_tbuffer
+ "GL_3DFX_tbuffer",
+#endif
+#ifdef GL_3DFX_texture_compression_FXT1
+ "GL_3DFX_texture_compression_FXT1",
+#endif
+#ifdef GL_AMD_blend_minmax_factor
+ "GL_AMD_blend_minmax_factor",
+#endif
+#ifdef GL_AMD_compressed_3DC_texture
+ "GL_AMD_compressed_3DC_texture",
+#endif
+#ifdef GL_AMD_compressed_ATC_texture
+ "GL_AMD_compressed_ATC_texture",
+#endif
+#ifdef GL_AMD_conservative_depth
+ "GL_AMD_conservative_depth",
+#endif
+#ifdef GL_AMD_debug_output
+ "GL_AMD_debug_output",
+#endif
+#ifdef GL_AMD_depth_clamp_separate
+ "GL_AMD_depth_clamp_separate",
+#endif
+#ifdef GL_AMD_draw_buffers_blend
+ "GL_AMD_draw_buffers_blend",
+#endif
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ "GL_AMD_framebuffer_multisample_advanced",
+#endif
+#ifdef GL_AMD_framebuffer_sample_positions
+ "GL_AMD_framebuffer_sample_positions",
+#endif
+#ifdef GL_AMD_gcn_shader
+ "GL_AMD_gcn_shader",
+#endif
+#ifdef GL_AMD_gpu_shader_half_float
+ "GL_AMD_gpu_shader_half_float",
+#endif
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+ "GL_AMD_gpu_shader_half_float_fetch",
+#endif
+#ifdef GL_AMD_gpu_shader_int16
+ "GL_AMD_gpu_shader_int16",
+#endif
+#ifdef GL_AMD_gpu_shader_int64
+ "GL_AMD_gpu_shader_int64",
+#endif
+#ifdef GL_AMD_interleaved_elements
+ "GL_AMD_interleaved_elements",
+#endif
+#ifdef GL_AMD_multi_draw_indirect
+ "GL_AMD_multi_draw_indirect",
+#endif
+#ifdef GL_AMD_name_gen_delete
+ "GL_AMD_name_gen_delete",
+#endif
+#ifdef GL_AMD_occlusion_query_event
+ "GL_AMD_occlusion_query_event",
+#endif
+#ifdef GL_AMD_performance_monitor
+ "GL_AMD_performance_monitor",
+#endif
+#ifdef GL_AMD_pinned_memory
+ "GL_AMD_pinned_memory",
+#endif
+#ifdef GL_AMD_program_binary_Z400
+ "GL_AMD_program_binary_Z400",
+#endif
+#ifdef GL_AMD_query_buffer_object
+ "GL_AMD_query_buffer_object",
+#endif
+#ifdef GL_AMD_sample_positions
+ "GL_AMD_sample_positions",
+#endif
+#ifdef GL_AMD_seamless_cubemap_per_texture
+ "GL_AMD_seamless_cubemap_per_texture",
+#endif
+#ifdef GL_AMD_shader_atomic_counter_ops
+ "GL_AMD_shader_atomic_counter_ops",
+#endif
+#ifdef GL_AMD_shader_ballot
+ "GL_AMD_shader_ballot",
+#endif
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+ "GL_AMD_shader_explicit_vertex_parameter",
+#endif
+#ifdef GL_AMD_shader_image_load_store_lod
+ "GL_AMD_shader_image_load_store_lod",
+#endif
+#ifdef GL_AMD_shader_stencil_export
+ "GL_AMD_shader_stencil_export",
+#endif
+#ifdef GL_AMD_shader_stencil_value_export
+ "GL_AMD_shader_stencil_value_export",
+#endif
+#ifdef GL_AMD_shader_trinary_minmax
+ "GL_AMD_shader_trinary_minmax",
+#endif
+#ifdef GL_AMD_sparse_texture
+ "GL_AMD_sparse_texture",
+#endif
+#ifdef GL_AMD_stencil_operation_extended
+ "GL_AMD_stencil_operation_extended",
+#endif
+#ifdef GL_AMD_texture_gather_bias_lod
+ "GL_AMD_texture_gather_bias_lod",
+#endif
+#ifdef GL_AMD_texture_texture4
+ "GL_AMD_texture_texture4",
+#endif
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+ "GL_AMD_transform_feedback3_lines_triangles",
+#endif
+#ifdef GL_AMD_transform_feedback4
+ "GL_AMD_transform_feedback4",
+#endif
+#ifdef GL_AMD_vertex_shader_layer
+ "GL_AMD_vertex_shader_layer",
+#endif
+#ifdef GL_AMD_vertex_shader_tessellator
+ "GL_AMD_vertex_shader_tessellator",
+#endif
+#ifdef GL_AMD_vertex_shader_viewport_index
+ "GL_AMD_vertex_shader_viewport_index",
+#endif
+#ifdef GL_ANDROID_extension_pack_es31a
+ "GL_ANDROID_extension_pack_es31a",
+#endif
+#ifdef GL_ANGLE_depth_texture
+ "GL_ANGLE_depth_texture",
+#endif
+#ifdef GL_ANGLE_framebuffer_blit
+ "GL_ANGLE_framebuffer_blit",
+#endif
+#ifdef GL_ANGLE_framebuffer_multisample
+ "GL_ANGLE_framebuffer_multisample",
+#endif
+#ifdef GL_ANGLE_instanced_arrays
+ "GL_ANGLE_instanced_arrays",
+#endif
+#ifdef GL_ANGLE_pack_reverse_row_order
+ "GL_ANGLE_pack_reverse_row_order",
+#endif
+#ifdef GL_ANGLE_program_binary
+ "GL_ANGLE_program_binary",
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt1
+ "GL_ANGLE_texture_compression_dxt1",
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt3
+ "GL_ANGLE_texture_compression_dxt3",
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt5
+ "GL_ANGLE_texture_compression_dxt5",
+#endif
+#ifdef GL_ANGLE_texture_usage
+ "GL_ANGLE_texture_usage",
+#endif
+#ifdef GL_ANGLE_timer_query
+ "GL_ANGLE_timer_query",
+#endif
+#ifdef GL_ANGLE_translated_shader_source
+ "GL_ANGLE_translated_shader_source",
+#endif
+#ifdef GL_APPLE_aux_depth_stencil
+ "GL_APPLE_aux_depth_stencil",
+#endif
+#ifdef GL_APPLE_client_storage
+ "GL_APPLE_client_storage",
+#endif
+#ifdef GL_APPLE_clip_distance
+ "GL_APPLE_clip_distance",
+#endif
+#ifdef GL_APPLE_color_buffer_packed_float
+ "GL_APPLE_color_buffer_packed_float",
+#endif
+#ifdef GL_APPLE_copy_texture_levels
+ "GL_APPLE_copy_texture_levels",
+#endif
+#ifdef GL_APPLE_element_array
+ "GL_APPLE_element_array",
+#endif
+#ifdef GL_APPLE_fence
+ "GL_APPLE_fence",
+#endif
+#ifdef GL_APPLE_float_pixels
+ "GL_APPLE_float_pixels",
+#endif
+#ifdef GL_APPLE_flush_buffer_range
+ "GL_APPLE_flush_buffer_range",
+#endif
+#ifdef GL_APPLE_framebuffer_multisample
+ "GL_APPLE_framebuffer_multisample",
+#endif
+#ifdef GL_APPLE_object_purgeable
+ "GL_APPLE_object_purgeable",
+#endif
+#ifdef GL_APPLE_pixel_buffer
+ "GL_APPLE_pixel_buffer",
+#endif
+#ifdef GL_APPLE_rgb_422
+ "GL_APPLE_rgb_422",
+#endif
+#ifdef GL_APPLE_row_bytes
+ "GL_APPLE_row_bytes",
+#endif
+#ifdef GL_APPLE_specular_vector
+ "GL_APPLE_specular_vector",
+#endif
+#ifdef GL_APPLE_sync
+ "GL_APPLE_sync",
+#endif
+#ifdef GL_APPLE_texture_2D_limited_npot
+ "GL_APPLE_texture_2D_limited_npot",
+#endif
+#ifdef GL_APPLE_texture_format_BGRA8888
+ "GL_APPLE_texture_format_BGRA8888",
+#endif
+#ifdef GL_APPLE_texture_max_level
+ "GL_APPLE_texture_max_level",
+#endif
+#ifdef GL_APPLE_texture_packed_float
+ "GL_APPLE_texture_packed_float",
+#endif
+#ifdef GL_APPLE_texture_range
+ "GL_APPLE_texture_range",
+#endif
+#ifdef GL_APPLE_transform_hint
+ "GL_APPLE_transform_hint",
+#endif
+#ifdef GL_APPLE_vertex_array_object
+ "GL_APPLE_vertex_array_object",
+#endif
+#ifdef GL_APPLE_vertex_array_range
+ "GL_APPLE_vertex_array_range",
+#endif
+#ifdef GL_APPLE_vertex_program_evaluators
+ "GL_APPLE_vertex_program_evaluators",
+#endif
+#ifdef GL_APPLE_ycbcr_422
+ "GL_APPLE_ycbcr_422",
+#endif
+#ifdef GL_ARB_ES2_compatibility
+ "GL_ARB_ES2_compatibility",
+#endif
+#ifdef GL_ARB_ES3_1_compatibility
+ "GL_ARB_ES3_1_compatibility",
+#endif
+#ifdef GL_ARB_ES3_2_compatibility
+ "GL_ARB_ES3_2_compatibility",
+#endif
+#ifdef GL_ARB_ES3_compatibility
+ "GL_ARB_ES3_compatibility",
+#endif
+#ifdef GL_ARB_arrays_of_arrays
+ "GL_ARB_arrays_of_arrays",
+#endif
+#ifdef GL_ARB_base_instance
+ "GL_ARB_base_instance",
+#endif
+#ifdef GL_ARB_bindless_texture
+ "GL_ARB_bindless_texture",
+#endif
+#ifdef GL_ARB_blend_func_extended
+ "GL_ARB_blend_func_extended",
+#endif
+#ifdef GL_ARB_buffer_storage
+ "GL_ARB_buffer_storage",
+#endif
+#ifdef GL_ARB_cl_event
+ "GL_ARB_cl_event",
+#endif
+#ifdef GL_ARB_clear_buffer_object
+ "GL_ARB_clear_buffer_object",
+#endif
+#ifdef GL_ARB_clear_texture
+ "GL_ARB_clear_texture",
+#endif
+#ifdef GL_ARB_clip_control
+ "GL_ARB_clip_control",
+#endif
+#ifdef GL_ARB_color_buffer_float
+ "GL_ARB_color_buffer_float",
+#endif
+#ifdef GL_ARB_compatibility
+ "GL_ARB_compatibility",
+#endif
+#ifdef GL_ARB_compressed_texture_pixel_storage
+ "GL_ARB_compressed_texture_pixel_storage",
+#endif
+#ifdef GL_ARB_compute_shader
+ "GL_ARB_compute_shader",
+#endif
+#ifdef GL_ARB_compute_variable_group_size
+ "GL_ARB_compute_variable_group_size",
+#endif
+#ifdef GL_ARB_conditional_render_inverted
+ "GL_ARB_conditional_render_inverted",
+#endif
+#ifdef GL_ARB_conservative_depth
+ "GL_ARB_conservative_depth",
+#endif
+#ifdef GL_ARB_copy_buffer
+ "GL_ARB_copy_buffer",
+#endif
+#ifdef GL_ARB_copy_image
+ "GL_ARB_copy_image",
+#endif
+#ifdef GL_ARB_cull_distance
+ "GL_ARB_cull_distance",
+#endif
+#ifdef GL_ARB_debug_output
+ "GL_ARB_debug_output",
+#endif
+#ifdef GL_ARB_depth_buffer_float
+ "GL_ARB_depth_buffer_float",
+#endif
+#ifdef GL_ARB_depth_clamp
+ "GL_ARB_depth_clamp",
+#endif
+#ifdef GL_ARB_depth_texture
+ "GL_ARB_depth_texture",
+#endif
+#ifdef GL_ARB_derivative_control
+ "GL_ARB_derivative_control",
+#endif
+#ifdef GL_ARB_direct_state_access
+ "GL_ARB_direct_state_access",
+#endif
+#ifdef GL_ARB_draw_buffers
+ "GL_ARB_draw_buffers",
+#endif
+#ifdef GL_ARB_draw_buffers_blend
+ "GL_ARB_draw_buffers_blend",
+#endif
+#ifdef GL_ARB_draw_elements_base_vertex
+ "GL_ARB_draw_elements_base_vertex",
+#endif
+#ifdef GL_ARB_draw_indirect
+ "GL_ARB_draw_indirect",
+#endif
+#ifdef GL_ARB_draw_instanced
+ "GL_ARB_draw_instanced",
+#endif
+#ifdef GL_ARB_enhanced_layouts
+ "GL_ARB_enhanced_layouts",
+#endif
+#ifdef GL_ARB_explicit_attrib_location
+ "GL_ARB_explicit_attrib_location",
+#endif
+#ifdef GL_ARB_explicit_uniform_location
+ "GL_ARB_explicit_uniform_location",
+#endif
+#ifdef GL_ARB_fragment_coord_conventions
+ "GL_ARB_fragment_coord_conventions",
+#endif
+#ifdef GL_ARB_fragment_layer_viewport
+ "GL_ARB_fragment_layer_viewport",
+#endif
+#ifdef GL_ARB_fragment_program
+ "GL_ARB_fragment_program",
+#endif
+#ifdef GL_ARB_fragment_program_shadow
+ "GL_ARB_fragment_program_shadow",
+#endif
+#ifdef GL_ARB_fragment_shader
+ "GL_ARB_fragment_shader",
+#endif
+#ifdef GL_ARB_fragment_shader_interlock
+ "GL_ARB_fragment_shader_interlock",
+#endif
+#ifdef GL_ARB_framebuffer_no_attachments
+ "GL_ARB_framebuffer_no_attachments",
+#endif
+#ifdef GL_ARB_framebuffer_object
+ "GL_ARB_framebuffer_object",
+#endif
+#ifdef GL_ARB_framebuffer_sRGB
+ "GL_ARB_framebuffer_sRGB",
+#endif
+#ifdef GL_ARB_geometry_shader4
+ "GL_ARB_geometry_shader4",
+#endif
+#ifdef GL_ARB_get_program_binary
+ "GL_ARB_get_program_binary",
+#endif
+#ifdef GL_ARB_get_texture_sub_image
+ "GL_ARB_get_texture_sub_image",
+#endif
+#ifdef GL_ARB_gl_spirv
+ "GL_ARB_gl_spirv",
+#endif
+#ifdef GL_ARB_gpu_shader5
+ "GL_ARB_gpu_shader5",
+#endif
+#ifdef GL_ARB_gpu_shader_fp64
+ "GL_ARB_gpu_shader_fp64",
+#endif
+#ifdef GL_ARB_gpu_shader_int64
+ "GL_ARB_gpu_shader_int64",
+#endif
+#ifdef GL_ARB_half_float_pixel
+ "GL_ARB_half_float_pixel",
+#endif
+#ifdef GL_ARB_half_float_vertex
+ "GL_ARB_half_float_vertex",
+#endif
+#ifdef GL_ARB_imaging
+ "GL_ARB_imaging",
+#endif
+#ifdef GL_ARB_indirect_parameters
+ "GL_ARB_indirect_parameters",
+#endif
+#ifdef GL_ARB_instanced_arrays
+ "GL_ARB_instanced_arrays",
+#endif
+#ifdef GL_ARB_internalformat_query
+ "GL_ARB_internalformat_query",
+#endif
+#ifdef GL_ARB_internalformat_query2
+ "GL_ARB_internalformat_query2",
+#endif
+#ifdef GL_ARB_invalidate_subdata
+ "GL_ARB_invalidate_subdata",
+#endif
+#ifdef GL_ARB_map_buffer_alignment
+ "GL_ARB_map_buffer_alignment",
+#endif
+#ifdef GL_ARB_map_buffer_range
+ "GL_ARB_map_buffer_range",
+#endif
+#ifdef GL_ARB_matrix_palette
+ "GL_ARB_matrix_palette",
+#endif
+#ifdef GL_ARB_multi_bind
+ "GL_ARB_multi_bind",
+#endif
+#ifdef GL_ARB_multi_draw_indirect
+ "GL_ARB_multi_draw_indirect",
+#endif
+#ifdef GL_ARB_multisample
+ "GL_ARB_multisample",
+#endif
+#ifdef GL_ARB_multitexture
+ "GL_ARB_multitexture",
+#endif
+#ifdef GL_ARB_occlusion_query
+ "GL_ARB_occlusion_query",
+#endif
+#ifdef GL_ARB_occlusion_query2
+ "GL_ARB_occlusion_query2",
+#endif
+#ifdef GL_ARB_parallel_shader_compile
+ "GL_ARB_parallel_shader_compile",
+#endif
+#ifdef GL_ARB_pipeline_statistics_query
+ "GL_ARB_pipeline_statistics_query",
+#endif
+#ifdef GL_ARB_pixel_buffer_object
+ "GL_ARB_pixel_buffer_object",
+#endif
+#ifdef GL_ARB_point_parameters
+ "GL_ARB_point_parameters",
+#endif
+#ifdef GL_ARB_point_sprite
+ "GL_ARB_point_sprite",
+#endif
+#ifdef GL_ARB_polygon_offset_clamp
+ "GL_ARB_polygon_offset_clamp",
+#endif
+#ifdef GL_ARB_post_depth_coverage
+ "GL_ARB_post_depth_coverage",
+#endif
+#ifdef GL_ARB_program_interface_query
+ "GL_ARB_program_interface_query",
+#endif
+#ifdef GL_ARB_provoking_vertex
+ "GL_ARB_provoking_vertex",
+#endif
+#ifdef GL_ARB_query_buffer_object
+ "GL_ARB_query_buffer_object",
+#endif
+#ifdef GL_ARB_robust_buffer_access_behavior
+ "GL_ARB_robust_buffer_access_behavior",
+#endif
+#ifdef GL_ARB_robustness
+ "GL_ARB_robustness",
+#endif
+#ifdef GL_ARB_robustness_application_isolation
+ "GL_ARB_robustness_application_isolation",
+#endif
+#ifdef GL_ARB_robustness_share_group_isolation
+ "GL_ARB_robustness_share_group_isolation",
+#endif
+#ifdef GL_ARB_sample_locations
+ "GL_ARB_sample_locations",
+#endif
+#ifdef GL_ARB_sample_shading
+ "GL_ARB_sample_shading",
+#endif
+#ifdef GL_ARB_sampler_objects
+ "GL_ARB_sampler_objects",
+#endif
+#ifdef GL_ARB_seamless_cube_map
+ "GL_ARB_seamless_cube_map",
+#endif
+#ifdef GL_ARB_seamless_cubemap_per_texture
+ "GL_ARB_seamless_cubemap_per_texture",
+#endif
+#ifdef GL_ARB_separate_shader_objects
+ "GL_ARB_separate_shader_objects",
+#endif
+#ifdef GL_ARB_shader_atomic_counter_ops
+ "GL_ARB_shader_atomic_counter_ops",
+#endif
+#ifdef GL_ARB_shader_atomic_counters
+ "GL_ARB_shader_atomic_counters",
+#endif
+#ifdef GL_ARB_shader_ballot
+ "GL_ARB_shader_ballot",
+#endif
+#ifdef GL_ARB_shader_bit_encoding
+ "GL_ARB_shader_bit_encoding",
+#endif
+#ifdef GL_ARB_shader_clock
+ "GL_ARB_shader_clock",
+#endif
+#ifdef GL_ARB_shader_draw_parameters
+ "GL_ARB_shader_draw_parameters",
+#endif
+#ifdef GL_ARB_shader_group_vote
+ "GL_ARB_shader_group_vote",
+#endif
+#ifdef GL_ARB_shader_image_load_store
+ "GL_ARB_shader_image_load_store",
+#endif
+#ifdef GL_ARB_shader_image_size
+ "GL_ARB_shader_image_size",
+#endif
+#ifdef GL_ARB_shader_objects
+ "GL_ARB_shader_objects",
+#endif
+#ifdef GL_ARB_shader_precision
+ "GL_ARB_shader_precision",
+#endif
+#ifdef GL_ARB_shader_stencil_export
+ "GL_ARB_shader_stencil_export",
+#endif
+#ifdef GL_ARB_shader_storage_buffer_object
+ "GL_ARB_shader_storage_buffer_object",
+#endif
+#ifdef GL_ARB_shader_subroutine
+ "GL_ARB_shader_subroutine",
+#endif
+#ifdef GL_ARB_shader_texture_image_samples
+ "GL_ARB_shader_texture_image_samples",
+#endif
+#ifdef GL_ARB_shader_texture_lod
+ "GL_ARB_shader_texture_lod",
+#endif
+#ifdef GL_ARB_shader_viewport_layer_array
+ "GL_ARB_shader_viewport_layer_array",
+#endif
+#ifdef GL_ARB_shading_language_100
+ "GL_ARB_shading_language_100",
+#endif
+#ifdef GL_ARB_shading_language_420pack
+ "GL_ARB_shading_language_420pack",
+#endif
+#ifdef GL_ARB_shading_language_include
+ "GL_ARB_shading_language_include",
+#endif
+#ifdef GL_ARB_shading_language_packing
+ "GL_ARB_shading_language_packing",
+#endif
+#ifdef GL_ARB_shadow
+ "GL_ARB_shadow",
+#endif
+#ifdef GL_ARB_shadow_ambient
+ "GL_ARB_shadow_ambient",
+#endif
+#ifdef GL_ARB_sparse_buffer
+ "GL_ARB_sparse_buffer",
+#endif
+#ifdef GL_ARB_sparse_texture
+ "GL_ARB_sparse_texture",
+#endif
+#ifdef GL_ARB_sparse_texture2
+ "GL_ARB_sparse_texture2",
+#endif
+#ifdef GL_ARB_sparse_texture_clamp
+ "GL_ARB_sparse_texture_clamp",
+#endif
+#ifdef GL_ARB_spirv_extensions
+ "GL_ARB_spirv_extensions",
+#endif
+#ifdef GL_ARB_stencil_texturing
+ "GL_ARB_stencil_texturing",
+#endif
+#ifdef GL_ARB_sync
+ "GL_ARB_sync",
+#endif
+#ifdef GL_ARB_tessellation_shader
+ "GL_ARB_tessellation_shader",
+#endif
+#ifdef GL_ARB_texture_barrier
+ "GL_ARB_texture_barrier",
+#endif
+#ifdef GL_ARB_texture_border_clamp
+ "GL_ARB_texture_border_clamp",
+#endif
+#ifdef GL_ARB_texture_buffer_object
+ "GL_ARB_texture_buffer_object",
+#endif
+#ifdef GL_ARB_texture_buffer_object_rgb32
+ "GL_ARB_texture_buffer_object_rgb32",
+#endif
+#ifdef GL_ARB_texture_buffer_range
+ "GL_ARB_texture_buffer_range",
+#endif
+#ifdef GL_ARB_texture_compression
+ "GL_ARB_texture_compression",
+#endif
+#ifdef GL_ARB_texture_compression_bptc
+ "GL_ARB_texture_compression_bptc",
+#endif
+#ifdef GL_ARB_texture_compression_rgtc
+ "GL_ARB_texture_compression_rgtc",
+#endif
+#ifdef GL_ARB_texture_cube_map
+ "GL_ARB_texture_cube_map",
+#endif
+#ifdef GL_ARB_texture_cube_map_array
+ "GL_ARB_texture_cube_map_array",
+#endif
+#ifdef GL_ARB_texture_env_add
+ "GL_ARB_texture_env_add",
+#endif
+#ifdef GL_ARB_texture_env_combine
+ "GL_ARB_texture_env_combine",
+#endif
+#ifdef GL_ARB_texture_env_crossbar
+ "GL_ARB_texture_env_crossbar",
+#endif
+#ifdef GL_ARB_texture_env_dot3
+ "GL_ARB_texture_env_dot3",
+#endif
+#ifdef GL_ARB_texture_filter_anisotropic
+ "GL_ARB_texture_filter_anisotropic",
+#endif
+#ifdef GL_ARB_texture_filter_minmax
+ "GL_ARB_texture_filter_minmax",
+#endif
+#ifdef GL_ARB_texture_float
+ "GL_ARB_texture_float",
+#endif
+#ifdef GL_ARB_texture_gather
+ "GL_ARB_texture_gather",
+#endif
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+ "GL_ARB_texture_mirror_clamp_to_edge",
+#endif
+#ifdef GL_ARB_texture_mirrored_repeat
+ "GL_ARB_texture_mirrored_repeat",
+#endif
+#ifdef GL_ARB_texture_multisample
+ "GL_ARB_texture_multisample",
+#endif
+#ifdef GL_ARB_texture_non_power_of_two
+ "GL_ARB_texture_non_power_of_two",
+#endif
+#ifdef GL_ARB_texture_query_levels
+ "GL_ARB_texture_query_levels",
+#endif
+#ifdef GL_ARB_texture_query_lod
+ "GL_ARB_texture_query_lod",
+#endif
+#ifdef GL_ARB_texture_rectangle
+ "GL_ARB_texture_rectangle",
+#endif
+#ifdef GL_ARB_texture_rg
+ "GL_ARB_texture_rg",
+#endif
+#ifdef GL_ARB_texture_rgb10_a2ui
+ "GL_ARB_texture_rgb10_a2ui",
+#endif
+#ifdef GL_ARB_texture_stencil8
+ "GL_ARB_texture_stencil8",
+#endif
+#ifdef GL_ARB_texture_storage
+ "GL_ARB_texture_storage",
+#endif
+#ifdef GL_ARB_texture_storage_multisample
+ "GL_ARB_texture_storage_multisample",
+#endif
+#ifdef GL_ARB_texture_swizzle
+ "GL_ARB_texture_swizzle",
+#endif
+#ifdef GL_ARB_texture_view
+ "GL_ARB_texture_view",
+#endif
+#ifdef GL_ARB_timer_query
+ "GL_ARB_timer_query",
+#endif
+#ifdef GL_ARB_transform_feedback2
+ "GL_ARB_transform_feedback2",
+#endif
+#ifdef GL_ARB_transform_feedback3
+ "GL_ARB_transform_feedback3",
+#endif
+#ifdef GL_ARB_transform_feedback_instanced
+ "GL_ARB_transform_feedback_instanced",
+#endif
+#ifdef GL_ARB_transform_feedback_overflow_query
+ "GL_ARB_transform_feedback_overflow_query",
+#endif
+#ifdef GL_ARB_transpose_matrix
+ "GL_ARB_transpose_matrix",
+#endif
+#ifdef GL_ARB_uniform_buffer_object
+ "GL_ARB_uniform_buffer_object",
+#endif
+#ifdef GL_ARB_vertex_array_bgra
+ "GL_ARB_vertex_array_bgra",
+#endif
+#ifdef GL_ARB_vertex_array_object
+ "GL_ARB_vertex_array_object",
+#endif
+#ifdef GL_ARB_vertex_attrib_64bit
+ "GL_ARB_vertex_attrib_64bit",
+#endif
+#ifdef GL_ARB_vertex_attrib_binding
+ "GL_ARB_vertex_attrib_binding",
+#endif
+#ifdef GL_ARB_vertex_blend
+ "GL_ARB_vertex_blend",
+#endif
+#ifdef GL_ARB_vertex_buffer_object
+ "GL_ARB_vertex_buffer_object",
+#endif
+#ifdef GL_ARB_vertex_program
+ "GL_ARB_vertex_program",
+#endif
+#ifdef GL_ARB_vertex_shader
+ "GL_ARB_vertex_shader",
+#endif
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+ "GL_ARB_vertex_type_10f_11f_11f_rev",
+#endif
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ "GL_ARB_vertex_type_2_10_10_10_rev",
+#endif
+#ifdef GL_ARB_viewport_array
+ "GL_ARB_viewport_array",
+#endif
+#ifdef GL_ARB_window_pos
+ "GL_ARB_window_pos",
+#endif
+#ifdef GL_ARM_mali_program_binary
+ "GL_ARM_mali_program_binary",
+#endif
+#ifdef GL_ARM_mali_shader_binary
+ "GL_ARM_mali_shader_binary",
+#endif
+#ifdef GL_ARM_rgba8
+ "GL_ARM_rgba8",
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch
+ "GL_ARM_shader_framebuffer_fetch",
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+ "GL_ARM_shader_framebuffer_fetch_depth_stencil",
+#endif
+#ifdef GL_ARM_texture_unnormalized_coordinates
+ "GL_ARM_texture_unnormalized_coordinates",
+#endif
+#ifdef GL_ATIX_point_sprites
+ "GL_ATIX_point_sprites",
+#endif
+#ifdef GL_ATIX_texture_env_combine3
+ "GL_ATIX_texture_env_combine3",
+#endif
+#ifdef GL_ATIX_texture_env_route
+ "GL_ATIX_texture_env_route",
+#endif
+#ifdef GL_ATIX_vertex_shader_output_point_size
+ "GL_ATIX_vertex_shader_output_point_size",
+#endif
+#ifdef GL_ATI_draw_buffers
+ "GL_ATI_draw_buffers",
+#endif
+#ifdef GL_ATI_element_array
+ "GL_ATI_element_array",
+#endif
+#ifdef GL_ATI_envmap_bumpmap
+ "GL_ATI_envmap_bumpmap",
+#endif
+#ifdef GL_ATI_fragment_shader
+ "GL_ATI_fragment_shader",
+#endif
+#ifdef GL_ATI_map_object_buffer
+ "GL_ATI_map_object_buffer",
+#endif
+#ifdef GL_ATI_meminfo
+ "GL_ATI_meminfo",
+#endif
+#ifdef GL_ATI_pn_triangles
+ "GL_ATI_pn_triangles",
+#endif
+#ifdef GL_ATI_separate_stencil
+ "GL_ATI_separate_stencil",
+#endif
+#ifdef GL_ATI_shader_texture_lod
+ "GL_ATI_shader_texture_lod",
+#endif
+#ifdef GL_ATI_text_fragment_shader
+ "GL_ATI_text_fragment_shader",
+#endif
+#ifdef GL_ATI_texture_compression_3dc
+ "GL_ATI_texture_compression_3dc",
+#endif
+#ifdef GL_ATI_texture_env_combine3
+ "GL_ATI_texture_env_combine3",
+#endif
+#ifdef GL_ATI_texture_float
+ "GL_ATI_texture_float",
+#endif
+#ifdef GL_ATI_texture_mirror_once
+ "GL_ATI_texture_mirror_once",
+#endif
+#ifdef GL_ATI_vertex_array_object
+ "GL_ATI_vertex_array_object",
+#endif
+#ifdef GL_ATI_vertex_attrib_array_object
+ "GL_ATI_vertex_attrib_array_object",
+#endif
+#ifdef GL_ATI_vertex_streams
+ "GL_ATI_vertex_streams",
+#endif
+#ifdef GL_DMP_program_binary
+ "GL_DMP_program_binary",
+#endif
+#ifdef GL_DMP_shader_binary
+ "GL_DMP_shader_binary",
+#endif
+#ifdef GL_EXT_422_pixels
+ "GL_EXT_422_pixels",
+#endif
+#ifdef GL_EXT_Cg_shader
+ "GL_EXT_Cg_shader",
+#endif
+#ifdef GL_EXT_EGL_image_array
+ "GL_EXT_EGL_image_array",
+#endif
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+ "GL_EXT_EGL_image_external_wrap_modes",
+#endif
+#ifdef GL_EXT_EGL_image_storage
+ "GL_EXT_EGL_image_storage",
+#endif
+#ifdef GL_EXT_EGL_image_storage_compression
+ "GL_EXT_EGL_image_storage_compression",
+#endif
+#ifdef GL_EXT_EGL_sync
+ "GL_EXT_EGL_sync",
+#endif
+#ifdef GL_EXT_YUV_target
+ "GL_EXT_YUV_target",
+#endif
+#ifdef GL_EXT_abgr
+ "GL_EXT_abgr",
+#endif
+#ifdef GL_EXT_base_instance
+ "GL_EXT_base_instance",
+#endif
+#ifdef GL_EXT_bgra
+ "GL_EXT_bgra",
+#endif
+#ifdef GL_EXT_bindable_uniform
+ "GL_EXT_bindable_uniform",
+#endif
+#ifdef GL_EXT_blend_color
+ "GL_EXT_blend_color",
+#endif
+#ifdef GL_EXT_blend_equation_separate
+ "GL_EXT_blend_equation_separate",
+#endif
+#ifdef GL_EXT_blend_func_extended
+ "GL_EXT_blend_func_extended",
+#endif
+#ifdef GL_EXT_blend_func_separate
+ "GL_EXT_blend_func_separate",
+#endif
+#ifdef GL_EXT_blend_logic_op
+ "GL_EXT_blend_logic_op",
+#endif
+#ifdef GL_EXT_blend_minmax
+ "GL_EXT_blend_minmax",
+#endif
+#ifdef GL_EXT_blend_subtract
+ "GL_EXT_blend_subtract",
+#endif
+#ifdef GL_EXT_buffer_storage
+ "GL_EXT_buffer_storage",
+#endif
+#ifdef GL_EXT_clear_texture
+ "GL_EXT_clear_texture",
+#endif
+#ifdef GL_EXT_clip_control
+ "GL_EXT_clip_control",
+#endif
+#ifdef GL_EXT_clip_cull_distance
+ "GL_EXT_clip_cull_distance",
+#endif
+#ifdef GL_EXT_clip_volume_hint
+ "GL_EXT_clip_volume_hint",
+#endif
+#ifdef GL_EXT_cmyka
+ "GL_EXT_cmyka",
+#endif
+#ifdef GL_EXT_color_buffer_float
+ "GL_EXT_color_buffer_float",
+#endif
+#ifdef GL_EXT_color_buffer_half_float
+ "GL_EXT_color_buffer_half_float",
+#endif
+#ifdef GL_EXT_color_subtable
+ "GL_EXT_color_subtable",
+#endif
+#ifdef GL_EXT_compiled_vertex_array
+ "GL_EXT_compiled_vertex_array",
+#endif
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+ "GL_EXT_compressed_ETC1_RGB8_sub_texture",
+#endif
+#ifdef GL_EXT_conservative_depth
+ "GL_EXT_conservative_depth",
+#endif
+#ifdef GL_EXT_convolution
+ "GL_EXT_convolution",
+#endif
+#ifdef GL_EXT_coordinate_frame
+ "GL_EXT_coordinate_frame",
+#endif
+#ifdef GL_EXT_copy_image
+ "GL_EXT_copy_image",
+#endif
+#ifdef GL_EXT_copy_texture
+ "GL_EXT_copy_texture",
+#endif
+#ifdef GL_EXT_cull_vertex
+ "GL_EXT_cull_vertex",
+#endif
+#ifdef GL_EXT_debug_label
+ "GL_EXT_debug_label",
+#endif
+#ifdef GL_EXT_debug_marker
+ "GL_EXT_debug_marker",
+#endif
+#ifdef GL_EXT_depth_bounds_test
+ "GL_EXT_depth_bounds_test",
+#endif
+#ifdef GL_EXT_depth_clamp
+ "GL_EXT_depth_clamp",
+#endif
+#ifdef GL_EXT_direct_state_access
+ "GL_EXT_direct_state_access",
+#endif
+#ifdef GL_EXT_discard_framebuffer
+ "GL_EXT_discard_framebuffer",
+#endif
+#ifdef GL_EXT_disjoint_timer_query
+ "GL_EXT_disjoint_timer_query",
+#endif
+#ifdef GL_EXT_draw_buffers
+ "GL_EXT_draw_buffers",
+#endif
+#ifdef GL_EXT_draw_buffers2
+ "GL_EXT_draw_buffers2",
+#endif
+#ifdef GL_EXT_draw_buffers_indexed
+ "GL_EXT_draw_buffers_indexed",
+#endif
+#ifdef GL_EXT_draw_elements_base_vertex
+ "GL_EXT_draw_elements_base_vertex",
+#endif
+#ifdef GL_EXT_draw_instanced
+ "GL_EXT_draw_instanced",
+#endif
+#ifdef GL_EXT_draw_range_elements
+ "GL_EXT_draw_range_elements",
+#endif
+#ifdef GL_EXT_draw_transform_feedback
+ "GL_EXT_draw_transform_feedback",
+#endif
+#ifdef GL_EXT_external_buffer
+ "GL_EXT_external_buffer",
+#endif
+#ifdef GL_EXT_float_blend
+ "GL_EXT_float_blend",
+#endif
+#ifdef GL_EXT_fog_coord
+ "GL_EXT_fog_coord",
+#endif
+#ifdef GL_EXT_frag_depth
+ "GL_EXT_frag_depth",
+#endif
+#ifdef GL_EXT_fragment_lighting
+ "GL_EXT_fragment_lighting",
+#endif
+#ifdef GL_EXT_framebuffer_blit
+ "GL_EXT_framebuffer_blit",
+#endif
+#ifdef GL_EXT_framebuffer_multisample
+ "GL_EXT_framebuffer_multisample",
+#endif
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+ "GL_EXT_framebuffer_multisample_blit_scaled",
+#endif
+#ifdef GL_EXT_framebuffer_object
+ "GL_EXT_framebuffer_object",
+#endif
+#ifdef GL_EXT_framebuffer_sRGB
+ "GL_EXT_framebuffer_sRGB",
+#endif
+#ifdef GL_EXT_geometry_point_size
+ "GL_EXT_geometry_point_size",
+#endif
+#ifdef GL_EXT_geometry_shader
+ "GL_EXT_geometry_shader",
+#endif
+#ifdef GL_EXT_geometry_shader4
+ "GL_EXT_geometry_shader4",
+#endif
+#ifdef GL_EXT_gpu_program_parameters
+ "GL_EXT_gpu_program_parameters",
+#endif
+#ifdef GL_EXT_gpu_shader4
+ "GL_EXT_gpu_shader4",
+#endif
+#ifdef GL_EXT_gpu_shader5
+ "GL_EXT_gpu_shader5",
+#endif
+#ifdef GL_EXT_histogram
+ "GL_EXT_histogram",
+#endif
+#ifdef GL_EXT_index_array_formats
+ "GL_EXT_index_array_formats",
+#endif
+#ifdef GL_EXT_index_func
+ "GL_EXT_index_func",
+#endif
+#ifdef GL_EXT_index_material
+ "GL_EXT_index_material",
+#endif
+#ifdef GL_EXT_index_texture
+ "GL_EXT_index_texture",
+#endif
+#ifdef GL_EXT_instanced_arrays
+ "GL_EXT_instanced_arrays",
+#endif
+#ifdef GL_EXT_light_texture
+ "GL_EXT_light_texture",
+#endif
+#ifdef GL_EXT_map_buffer_range
+ "GL_EXT_map_buffer_range",
+#endif
+#ifdef GL_EXT_memory_object
+ "GL_EXT_memory_object",
+#endif
+#ifdef GL_EXT_memory_object_fd
+ "GL_EXT_memory_object_fd",
+#endif
+#ifdef GL_EXT_memory_object_win32
+ "GL_EXT_memory_object_win32",
+#endif
+#ifdef GL_EXT_misc_attribute
+ "GL_EXT_misc_attribute",
+#endif
+#ifdef GL_EXT_multi_draw_arrays
+ "GL_EXT_multi_draw_arrays",
+#endif
+#ifdef GL_EXT_multi_draw_indirect
+ "GL_EXT_multi_draw_indirect",
+#endif
+#ifdef GL_EXT_multiple_textures
+ "GL_EXT_multiple_textures",
+#endif
+#ifdef GL_EXT_multisample
+ "GL_EXT_multisample",
+#endif
+#ifdef GL_EXT_multisample_compatibility
+ "GL_EXT_multisample_compatibility",
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture
+ "GL_EXT_multisampled_render_to_texture",
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture2
+ "GL_EXT_multisampled_render_to_texture2",
+#endif
+#ifdef GL_EXT_multiview_draw_buffers
+ "GL_EXT_multiview_draw_buffers",
+#endif
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+ "GL_EXT_multiview_tessellation_geometry_shader",
+#endif
+#ifdef GL_EXT_multiview_texture_multisample
+ "GL_EXT_multiview_texture_multisample",
+#endif
+#ifdef GL_EXT_multiview_timer_query
+ "GL_EXT_multiview_timer_query",
+#endif
+#ifdef GL_EXT_occlusion_query_boolean
+ "GL_EXT_occlusion_query_boolean",
+#endif
+#ifdef GL_EXT_packed_depth_stencil
+ "GL_EXT_packed_depth_stencil",
+#endif
+#ifdef GL_EXT_packed_float
+ "GL_EXT_packed_float",
+#endif
+#ifdef GL_EXT_packed_pixels
+ "GL_EXT_packed_pixels",
+#endif
+#ifdef GL_EXT_paletted_texture
+ "GL_EXT_paletted_texture",
+#endif
+#ifdef GL_EXT_pixel_buffer_object
+ "GL_EXT_pixel_buffer_object",
+#endif
+#ifdef GL_EXT_pixel_transform
+ "GL_EXT_pixel_transform",
+#endif
+#ifdef GL_EXT_pixel_transform_color_table
+ "GL_EXT_pixel_transform_color_table",
+#endif
+#ifdef GL_EXT_point_parameters
+ "GL_EXT_point_parameters",
+#endif
+#ifdef GL_EXT_polygon_offset
+ "GL_EXT_polygon_offset",
+#endif
+#ifdef GL_EXT_polygon_offset_clamp
+ "GL_EXT_polygon_offset_clamp",
+#endif
+#ifdef GL_EXT_post_depth_coverage
+ "GL_EXT_post_depth_coverage",
+#endif
+#ifdef GL_EXT_primitive_bounding_box
+ "GL_EXT_primitive_bounding_box",
+#endif
+#ifdef GL_EXT_protected_textures
+ "GL_EXT_protected_textures",
+#endif
+#ifdef GL_EXT_provoking_vertex
+ "GL_EXT_provoking_vertex",
+#endif
+#ifdef GL_EXT_pvrtc_sRGB
+ "GL_EXT_pvrtc_sRGB",
+#endif
+#ifdef GL_EXT_raster_multisample
+ "GL_EXT_raster_multisample",
+#endif
+#ifdef GL_EXT_read_format_bgra
+ "GL_EXT_read_format_bgra",
+#endif
+#ifdef GL_EXT_render_snorm
+ "GL_EXT_render_snorm",
+#endif
+#ifdef GL_EXT_rescale_normal
+ "GL_EXT_rescale_normal",
+#endif
+#ifdef GL_EXT_robustness
+ "GL_EXT_robustness",
+#endif
+#ifdef GL_EXT_sRGB
+ "GL_EXT_sRGB",
+#endif
+#ifdef GL_EXT_sRGB_write_control
+ "GL_EXT_sRGB_write_control",
+#endif
+#ifdef GL_EXT_scene_marker
+ "GL_EXT_scene_marker",
+#endif
+#ifdef GL_EXT_secondary_color
+ "GL_EXT_secondary_color",
+#endif
+#ifdef GL_EXT_semaphore
+ "GL_EXT_semaphore",
+#endif
+#ifdef GL_EXT_semaphore_fd
+ "GL_EXT_semaphore_fd",
+#endif
+#ifdef GL_EXT_semaphore_win32
+ "GL_EXT_semaphore_win32",
+#endif
+#ifdef GL_EXT_separate_depth_stencil
+ "GL_EXT_separate_depth_stencil",
+#endif
+#ifdef GL_EXT_separate_shader_objects
+ "GL_EXT_separate_shader_objects",
+#endif
+#ifdef GL_EXT_separate_specular_color
+ "GL_EXT_separate_specular_color",
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch
+ "GL_EXT_shader_framebuffer_fetch",
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+ "GL_EXT_shader_framebuffer_fetch_non_coherent",
+#endif
+#ifdef GL_EXT_shader_group_vote
+ "GL_EXT_shader_group_vote",
+#endif
+#ifdef GL_EXT_shader_image_load_formatted
+ "GL_EXT_shader_image_load_formatted",
+#endif
+#ifdef GL_EXT_shader_image_load_store
+ "GL_EXT_shader_image_load_store",
+#endif
+#ifdef GL_EXT_shader_implicit_conversions
+ "GL_EXT_shader_implicit_conversions",
+#endif
+#ifdef GL_EXT_shader_integer_mix
+ "GL_EXT_shader_integer_mix",
+#endif
+#ifdef GL_EXT_shader_io_blocks
+ "GL_EXT_shader_io_blocks",
+#endif
+#ifdef GL_EXT_shader_non_constant_global_initializers
+ "GL_EXT_shader_non_constant_global_initializers",
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage
+ "GL_EXT_shader_pixel_local_storage",
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage2
+ "GL_EXT_shader_pixel_local_storage2",
+#endif
+#ifdef GL_EXT_shader_samples_identical
+ "GL_EXT_shader_samples_identical",
+#endif
+#ifdef GL_EXT_shader_texture_lod
+ "GL_EXT_shader_texture_lod",
+#endif
+#ifdef GL_EXT_shadow_funcs
+ "GL_EXT_shadow_funcs",
+#endif
+#ifdef GL_EXT_shadow_samplers
+ "GL_EXT_shadow_samplers",
+#endif
+#ifdef GL_EXT_shared_texture_palette
+ "GL_EXT_shared_texture_palette",
+#endif
+#ifdef GL_EXT_sparse_texture
+ "GL_EXT_sparse_texture",
+#endif
+#ifdef GL_EXT_sparse_texture2
+ "GL_EXT_sparse_texture2",
+#endif
+#ifdef GL_EXT_static_vertex_array
+ "GL_EXT_static_vertex_array",
+#endif
+#ifdef GL_EXT_stencil_clear_tag
+ "GL_EXT_stencil_clear_tag",
+#endif
+#ifdef GL_EXT_stencil_two_side
+ "GL_EXT_stencil_two_side",
+#endif
+#ifdef GL_EXT_stencil_wrap
+ "GL_EXT_stencil_wrap",
+#endif
+#ifdef GL_EXT_subtexture
+ "GL_EXT_subtexture",
+#endif
+#ifdef GL_EXT_tessellation_point_size
+ "GL_EXT_tessellation_point_size",
+#endif
+#ifdef GL_EXT_tessellation_shader
+ "GL_EXT_tessellation_shader",
+#endif
+#ifdef GL_EXT_texture
+ "GL_EXT_texture",
+#endif
+#ifdef GL_EXT_texture3D
+ "GL_EXT_texture3D",
+#endif
+#ifdef GL_EXT_texture_array
+ "GL_EXT_texture_array",
+#endif
+#ifdef GL_EXT_texture_border_clamp
+ "GL_EXT_texture_border_clamp",
+#endif
+#ifdef GL_EXT_texture_buffer
+ "GL_EXT_texture_buffer",
+#endif
+#ifdef GL_EXT_texture_buffer_object
+ "GL_EXT_texture_buffer_object",
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+ "GL_EXT_texture_compression_astc_decode_mode",
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+ "GL_EXT_texture_compression_astc_decode_mode_rgb9e5",
+#endif
+#ifdef GL_EXT_texture_compression_bptc
+ "GL_EXT_texture_compression_bptc",
+#endif
+#ifdef GL_EXT_texture_compression_dxt1
+ "GL_EXT_texture_compression_dxt1",
+#endif
+#ifdef GL_EXT_texture_compression_latc
+ "GL_EXT_texture_compression_latc",
+#endif
+#ifdef GL_EXT_texture_compression_rgtc
+ "GL_EXT_texture_compression_rgtc",
+#endif
+#ifdef GL_EXT_texture_compression_s3tc
+ "GL_EXT_texture_compression_s3tc",
+#endif
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+ "GL_EXT_texture_compression_s3tc_srgb",
+#endif
+#ifdef GL_EXT_texture_cube_map
+ "GL_EXT_texture_cube_map",
+#endif
+#ifdef GL_EXT_texture_cube_map_array
+ "GL_EXT_texture_cube_map_array",
+#endif
+#ifdef GL_EXT_texture_edge_clamp
+ "GL_EXT_texture_edge_clamp",
+#endif
+#ifdef GL_EXT_texture_env
+ "GL_EXT_texture_env",
+#endif
+#ifdef GL_EXT_texture_env_add
+ "GL_EXT_texture_env_add",
+#endif
+#ifdef GL_EXT_texture_env_combine
+ "GL_EXT_texture_env_combine",
+#endif
+#ifdef GL_EXT_texture_env_dot3
+ "GL_EXT_texture_env_dot3",
+#endif
+#ifdef GL_EXT_texture_filter_anisotropic
+ "GL_EXT_texture_filter_anisotropic",
+#endif
+#ifdef GL_EXT_texture_filter_minmax
+ "GL_EXT_texture_filter_minmax",
+#endif
+#ifdef GL_EXT_texture_format_BGRA8888
+ "GL_EXT_texture_format_BGRA8888",
+#endif
+#ifdef GL_EXT_texture_format_sRGB_override
+ "GL_EXT_texture_format_sRGB_override",
+#endif
+#ifdef GL_EXT_texture_integer
+ "GL_EXT_texture_integer",
+#endif
+#ifdef GL_EXT_texture_lod_bias
+ "GL_EXT_texture_lod_bias",
+#endif
+#ifdef GL_EXT_texture_mirror_clamp
+ "GL_EXT_texture_mirror_clamp",
+#endif
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+ "GL_EXT_texture_mirror_clamp_to_edge",
+#endif
+#ifdef GL_EXT_texture_norm16
+ "GL_EXT_texture_norm16",
+#endif
+#ifdef GL_EXT_texture_object
+ "GL_EXT_texture_object",
+#endif
+#ifdef GL_EXT_texture_perturb_normal
+ "GL_EXT_texture_perturb_normal",
+#endif
+#ifdef GL_EXT_texture_query_lod
+ "GL_EXT_texture_query_lod",
+#endif
+#ifdef GL_EXT_texture_rectangle
+ "GL_EXT_texture_rectangle",
+#endif
+#ifdef GL_EXT_texture_rg
+ "GL_EXT_texture_rg",
+#endif
+#ifdef GL_EXT_texture_sRGB
+ "GL_EXT_texture_sRGB",
+#endif
+#ifdef GL_EXT_texture_sRGB_R8
+ "GL_EXT_texture_sRGB_R8",
+#endif
+#ifdef GL_EXT_texture_sRGB_RG8
+ "GL_EXT_texture_sRGB_RG8",
+#endif
+#ifdef GL_EXT_texture_sRGB_decode
+ "GL_EXT_texture_sRGB_decode",
+#endif
+#ifdef GL_EXT_texture_shadow_lod
+ "GL_EXT_texture_shadow_lod",
+#endif
+#ifdef GL_EXT_texture_shared_exponent
+ "GL_EXT_texture_shared_exponent",
+#endif
+#ifdef GL_EXT_texture_snorm
+ "GL_EXT_texture_snorm",
+#endif
+#ifdef GL_EXT_texture_storage
+ "GL_EXT_texture_storage",
+#endif
+#ifdef GL_EXT_texture_storage_compression
+ "GL_EXT_texture_storage_compression",
+#endif
+#ifdef GL_EXT_texture_swizzle
+ "GL_EXT_texture_swizzle",
+#endif
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+ "GL_EXT_texture_type_2_10_10_10_REV",
+#endif
+#ifdef GL_EXT_texture_view
+ "GL_EXT_texture_view",
+#endif
+#ifdef GL_EXT_timer_query
+ "GL_EXT_timer_query",
+#endif
+#ifdef GL_EXT_transform_feedback
+ "GL_EXT_transform_feedback",
+#endif
+#ifdef GL_EXT_unpack_subimage
+ "GL_EXT_unpack_subimage",
+#endif
+#ifdef GL_EXT_vertex_array
+ "GL_EXT_vertex_array",
+#endif
+#ifdef GL_EXT_vertex_array_bgra
+ "GL_EXT_vertex_array_bgra",
+#endif
+#ifdef GL_EXT_vertex_array_setXXX
+ "GL_EXT_vertex_array_setXXX",
+#endif
+#ifdef GL_EXT_vertex_attrib_64bit
+ "GL_EXT_vertex_attrib_64bit",
+#endif
+#ifdef GL_EXT_vertex_shader
+ "GL_EXT_vertex_shader",
+#endif
+#ifdef GL_EXT_vertex_weighting
+ "GL_EXT_vertex_weighting",
+#endif
+#ifdef GL_EXT_win32_keyed_mutex
+ "GL_EXT_win32_keyed_mutex",
+#endif
+#ifdef GL_EXT_window_rectangles
+ "GL_EXT_window_rectangles",
+#endif
+#ifdef GL_EXT_x11_sync_object
+ "GL_EXT_x11_sync_object",
+#endif
+#ifdef GL_FJ_shader_binary_GCCSO
+ "GL_FJ_shader_binary_GCCSO",
+#endif
+#ifdef GL_GREMEDY_frame_terminator
+ "GL_GREMEDY_frame_terminator",
+#endif
+#ifdef GL_GREMEDY_string_marker
+ "GL_GREMEDY_string_marker",
+#endif
+#ifdef GL_HP_convolution_border_modes
+ "GL_HP_convolution_border_modes",
+#endif
+#ifdef GL_HP_image_transform
+ "GL_HP_image_transform",
+#endif
+#ifdef GL_HP_occlusion_test
+ "GL_HP_occlusion_test",
+#endif
+#ifdef GL_HP_texture_lighting
+ "GL_HP_texture_lighting",
+#endif
+#ifdef GL_IBM_cull_vertex
+ "GL_IBM_cull_vertex",
+#endif
+#ifdef GL_IBM_multimode_draw_arrays
+ "GL_IBM_multimode_draw_arrays",
+#endif
+#ifdef GL_IBM_rasterpos_clip
+ "GL_IBM_rasterpos_clip",
+#endif
+#ifdef GL_IBM_static_data
+ "GL_IBM_static_data",
+#endif
+#ifdef GL_IBM_texture_mirrored_repeat
+ "GL_IBM_texture_mirrored_repeat",
+#endif
+#ifdef GL_IBM_vertex_array_lists
+ "GL_IBM_vertex_array_lists",
+#endif
+#ifdef GL_IMG_bindless_texture
+ "GL_IMG_bindless_texture",
+#endif
+#ifdef GL_IMG_framebuffer_downsample
+ "GL_IMG_framebuffer_downsample",
+#endif
+#ifdef GL_IMG_multisampled_render_to_texture
+ "GL_IMG_multisampled_render_to_texture",
+#endif
+#ifdef GL_IMG_program_binary
+ "GL_IMG_program_binary",
+#endif
+#ifdef GL_IMG_read_format
+ "GL_IMG_read_format",
+#endif
+#ifdef GL_IMG_shader_binary
+ "GL_IMG_shader_binary",
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc
+ "GL_IMG_texture_compression_pvrtc",
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc2
+ "GL_IMG_texture_compression_pvrtc2",
+#endif
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+ "GL_IMG_texture_env_enhanced_fixed_function",
+#endif
+#ifdef GL_IMG_texture_filter_cubic
+ "GL_IMG_texture_filter_cubic",
+#endif
+#ifdef GL_IMG_tile_region_protection
+ "GL_IMG_tile_region_protection",
+#endif
+#ifdef GL_INGR_color_clamp
+ "GL_INGR_color_clamp",
+#endif
+#ifdef GL_INGR_interlace_read
+ "GL_INGR_interlace_read",
+#endif
+#ifdef GL_INTEL_blackhole_render
+ "GL_INTEL_blackhole_render",
+#endif
+#ifdef GL_INTEL_conservative_rasterization
+ "GL_INTEL_conservative_rasterization",
+#endif
+#ifdef GL_INTEL_fragment_shader_ordering
+ "GL_INTEL_fragment_shader_ordering",
+#endif
+#ifdef GL_INTEL_framebuffer_CMAA
+ "GL_INTEL_framebuffer_CMAA",
+#endif
+#ifdef GL_INTEL_map_texture
+ "GL_INTEL_map_texture",
+#endif
+#ifdef GL_INTEL_parallel_arrays
+ "GL_INTEL_parallel_arrays",
+#endif
+#ifdef GL_INTEL_performance_query
+ "GL_INTEL_performance_query",
+#endif
+#ifdef GL_INTEL_shader_integer_functions2
+ "GL_INTEL_shader_integer_functions2",
+#endif
+#ifdef GL_INTEL_texture_scissor
+ "GL_INTEL_texture_scissor",
+#endif
+#ifdef GL_KHR_blend_equation_advanced
+ "GL_KHR_blend_equation_advanced",
+#endif
+#ifdef GL_KHR_blend_equation_advanced_coherent
+ "GL_KHR_blend_equation_advanced_coherent",
+#endif
+#ifdef GL_KHR_context_flush_control
+ "GL_KHR_context_flush_control",
+#endif
+#ifdef GL_KHR_debug
+ "GL_KHR_debug",
+#endif
+#ifdef GL_KHR_no_error
+ "GL_KHR_no_error",
+#endif
+#ifdef GL_KHR_parallel_shader_compile
+ "GL_KHR_parallel_shader_compile",
+#endif
+#ifdef GL_KHR_robust_buffer_access_behavior
+ "GL_KHR_robust_buffer_access_behavior",
+#endif
+#ifdef GL_KHR_robustness
+ "GL_KHR_robustness",
+#endif
+#ifdef GL_KHR_shader_subgroup
+ "GL_KHR_shader_subgroup",
+#endif
+#ifdef GL_KHR_texture_compression_astc_hdr
+ "GL_KHR_texture_compression_astc_hdr",
+#endif
+#ifdef GL_KHR_texture_compression_astc_ldr
+ "GL_KHR_texture_compression_astc_ldr",
+#endif
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+ "GL_KHR_texture_compression_astc_sliced_3d",
+#endif
+#ifdef GL_KTX_buffer_region
+ "GL_KTX_buffer_region",
+#endif
+#ifdef GL_MESAX_texture_stack
+ "GL_MESAX_texture_stack",
+#endif
+#ifdef GL_MESA_bgra
+ "GL_MESA_bgra",
+#endif
+#ifdef GL_MESA_framebuffer_flip_x
+ "GL_MESA_framebuffer_flip_x",
+#endif
+#ifdef GL_MESA_framebuffer_flip_y
+ "GL_MESA_framebuffer_flip_y",
+#endif
+#ifdef GL_MESA_framebuffer_swap_xy
+ "GL_MESA_framebuffer_swap_xy",
+#endif
+#ifdef GL_MESA_pack_invert
+ "GL_MESA_pack_invert",
+#endif
+#ifdef GL_MESA_program_binary_formats
+ "GL_MESA_program_binary_formats",
+#endif
+#ifdef GL_MESA_resize_buffers
+ "GL_MESA_resize_buffers",
+#endif
+#ifdef GL_MESA_shader_integer_functions
+ "GL_MESA_shader_integer_functions",
+#endif
+#ifdef GL_MESA_tile_raster_order
+ "GL_MESA_tile_raster_order",
+#endif
+#ifdef GL_MESA_window_pos
+ "GL_MESA_window_pos",
+#endif
+#ifdef GL_MESA_ycbcr_texture
+ "GL_MESA_ycbcr_texture",
+#endif
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+ "GL_NVX_blend_equation_advanced_multi_draw_buffers",
+#endif
+#ifdef GL_NVX_conditional_render
+ "GL_NVX_conditional_render",
+#endif
+#ifdef GL_NVX_gpu_memory_info
+ "GL_NVX_gpu_memory_info",
+#endif
+#ifdef GL_NVX_gpu_multicast2
+ "GL_NVX_gpu_multicast2",
+#endif
+#ifdef GL_NVX_linked_gpu_multicast
+ "GL_NVX_linked_gpu_multicast",
+#endif
+#ifdef GL_NVX_progress_fence
+ "GL_NVX_progress_fence",
+#endif
+#ifdef GL_NV_3dvision_settings
+ "GL_NV_3dvision_settings",
+#endif
+#ifdef GL_NV_EGL_stream_consumer_external
+ "GL_NV_EGL_stream_consumer_external",
+#endif
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ "GL_NV_alpha_to_coverage_dither_control",
+#endif
+#ifdef GL_NV_bgr
+ "GL_NV_bgr",
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect
+ "GL_NV_bindless_multi_draw_indirect",
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ "GL_NV_bindless_multi_draw_indirect_count",
+#endif
+#ifdef GL_NV_bindless_texture
+ "GL_NV_bindless_texture",
+#endif
+#ifdef GL_NV_blend_equation_advanced
+ "GL_NV_blend_equation_advanced",
+#endif
+#ifdef GL_NV_blend_equation_advanced_coherent
+ "GL_NV_blend_equation_advanced_coherent",
+#endif
+#ifdef GL_NV_blend_minmax_factor
+ "GL_NV_blend_minmax_factor",
+#endif
+#ifdef GL_NV_blend_square
+ "GL_NV_blend_square",
+#endif
+#ifdef GL_NV_clip_space_w_scaling
+ "GL_NV_clip_space_w_scaling",
+#endif
+#ifdef GL_NV_command_list
+ "GL_NV_command_list",
+#endif
+#ifdef GL_NV_compute_program5
+ "GL_NV_compute_program5",
+#endif
+#ifdef GL_NV_compute_shader_derivatives
+ "GL_NV_compute_shader_derivatives",
+#endif
+#ifdef GL_NV_conditional_render
+ "GL_NV_conditional_render",
+#endif
+#ifdef GL_NV_conservative_raster
+ "GL_NV_conservative_raster",
+#endif
+#ifdef GL_NV_conservative_raster_dilate
+ "GL_NV_conservative_raster_dilate",
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap
+ "GL_NV_conservative_raster_pre_snap",
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ "GL_NV_conservative_raster_pre_snap_triangles",
+#endif
+#ifdef GL_NV_conservative_raster_underestimation
+ "GL_NV_conservative_raster_underestimation",
+#endif
+#ifdef GL_NV_copy_buffer
+ "GL_NV_copy_buffer",
+#endif
+#ifdef GL_NV_copy_depth_to_color
+ "GL_NV_copy_depth_to_color",
+#endif
+#ifdef GL_NV_copy_image
+ "GL_NV_copy_image",
+#endif
+#ifdef GL_NV_deep_texture3D
+ "GL_NV_deep_texture3D",
+#endif
+#ifdef GL_NV_depth_buffer_float
+ "GL_NV_depth_buffer_float",
+#endif
+#ifdef GL_NV_depth_clamp
+ "GL_NV_depth_clamp",
+#endif
+#ifdef GL_NV_depth_nonlinear
+ "GL_NV_depth_nonlinear",
+#endif
+#ifdef GL_NV_depth_range_unclamped
+ "GL_NV_depth_range_unclamped",
+#endif
+#ifdef GL_NV_draw_buffers
+ "GL_NV_draw_buffers",
+#endif
+#ifdef GL_NV_draw_instanced
+ "GL_NV_draw_instanced",
+#endif
+#ifdef GL_NV_draw_texture
+ "GL_NV_draw_texture",
+#endif
+#ifdef GL_NV_draw_vulkan_image
+ "GL_NV_draw_vulkan_image",
+#endif
+#ifdef GL_NV_evaluators
+ "GL_NV_evaluators",
+#endif
+#ifdef GL_NV_explicit_attrib_location
+ "GL_NV_explicit_attrib_location",
+#endif
+#ifdef GL_NV_explicit_multisample
+ "GL_NV_explicit_multisample",
+#endif
+#ifdef GL_NV_fbo_color_attachments
+ "GL_NV_fbo_color_attachments",
+#endif
+#ifdef GL_NV_fence
+ "GL_NV_fence",
+#endif
+#ifdef GL_NV_fill_rectangle
+ "GL_NV_fill_rectangle",
+#endif
+#ifdef GL_NV_float_buffer
+ "GL_NV_float_buffer",
+#endif
+#ifdef GL_NV_fog_distance
+ "GL_NV_fog_distance",
+#endif
+#ifdef GL_NV_fragment_coverage_to_color
+ "GL_NV_fragment_coverage_to_color",
+#endif
+#ifdef GL_NV_fragment_program
+ "GL_NV_fragment_program",
+#endif
+#ifdef GL_NV_fragment_program2
+ "GL_NV_fragment_program2",
+#endif
+#ifdef GL_NV_fragment_program4
+ "GL_NV_fragment_program4",
+#endif
+#ifdef GL_NV_fragment_program_option
+ "GL_NV_fragment_program_option",
+#endif
+#ifdef GL_NV_fragment_shader_barycentric
+ "GL_NV_fragment_shader_barycentric",
+#endif
+#ifdef GL_NV_fragment_shader_interlock
+ "GL_NV_fragment_shader_interlock",
+#endif
+#ifdef GL_NV_framebuffer_blit
+ "GL_NV_framebuffer_blit",
+#endif
+#ifdef GL_NV_framebuffer_mixed_samples
+ "GL_NV_framebuffer_mixed_samples",
+#endif
+#ifdef GL_NV_framebuffer_multisample
+ "GL_NV_framebuffer_multisample",
+#endif
+#ifdef GL_NV_framebuffer_multisample_coverage
+ "GL_NV_framebuffer_multisample_coverage",
+#endif
+#ifdef GL_NV_generate_mipmap_sRGB
+ "GL_NV_generate_mipmap_sRGB",
+#endif
+#ifdef GL_NV_geometry_program4
+ "GL_NV_geometry_program4",
+#endif
+#ifdef GL_NV_geometry_shader4
+ "GL_NV_geometry_shader4",
+#endif
+#ifdef GL_NV_geometry_shader_passthrough
+ "GL_NV_geometry_shader_passthrough",
+#endif
+#ifdef GL_NV_gpu_multicast
+ "GL_NV_gpu_multicast",
+#endif
+#ifdef GL_NV_gpu_program4
+ "GL_NV_gpu_program4",
+#endif
+#ifdef GL_NV_gpu_program5
+ "GL_NV_gpu_program5",
+#endif
+#ifdef GL_NV_gpu_program5_mem_extended
+ "GL_NV_gpu_program5_mem_extended",
+#endif
+#ifdef GL_NV_gpu_program_fp64
+ "GL_NV_gpu_program_fp64",
+#endif
+#ifdef GL_NV_gpu_shader5
+ "GL_NV_gpu_shader5",
+#endif
+#ifdef GL_NV_half_float
+ "GL_NV_half_float",
+#endif
+#ifdef GL_NV_image_formats
+ "GL_NV_image_formats",
+#endif
+#ifdef GL_NV_instanced_arrays
+ "GL_NV_instanced_arrays",
+#endif
+#ifdef GL_NV_internalformat_sample_query
+ "GL_NV_internalformat_sample_query",
+#endif
+#ifdef GL_NV_light_max_exponent
+ "GL_NV_light_max_exponent",
+#endif
+#ifdef GL_NV_memory_attachment
+ "GL_NV_memory_attachment",
+#endif
+#ifdef GL_NV_memory_object_sparse
+ "GL_NV_memory_object_sparse",
+#endif
+#ifdef GL_NV_mesh_shader
+ "GL_NV_mesh_shader",
+#endif
+#ifdef GL_NV_multisample_coverage
+ "GL_NV_multisample_coverage",
+#endif
+#ifdef GL_NV_multisample_filter_hint
+ "GL_NV_multisample_filter_hint",
+#endif
+#ifdef GL_NV_non_square_matrices
+ "GL_NV_non_square_matrices",
+#endif
+#ifdef GL_NV_occlusion_query
+ "GL_NV_occlusion_query",
+#endif
+#ifdef GL_NV_pack_subimage
+ "GL_NV_pack_subimage",
+#endif
+#ifdef GL_NV_packed_depth_stencil
+ "GL_NV_packed_depth_stencil",
+#endif
+#ifdef GL_NV_packed_float
+ "GL_NV_packed_float",
+#endif
+#ifdef GL_NV_packed_float_linear
+ "GL_NV_packed_float_linear",
+#endif
+#ifdef GL_NV_parameter_buffer_object
+ "GL_NV_parameter_buffer_object",
+#endif
+#ifdef GL_NV_parameter_buffer_object2
+ "GL_NV_parameter_buffer_object2",
+#endif
+#ifdef GL_NV_path_rendering
+ "GL_NV_path_rendering",
+#endif
+#ifdef GL_NV_path_rendering_shared_edge
+ "GL_NV_path_rendering_shared_edge",
+#endif
+#ifdef GL_NV_pixel_buffer_object
+ "GL_NV_pixel_buffer_object",
+#endif
+#ifdef GL_NV_pixel_data_range
+ "GL_NV_pixel_data_range",
+#endif
+#ifdef GL_NV_platform_binary
+ "GL_NV_platform_binary",
+#endif
+#ifdef GL_NV_point_sprite
+ "GL_NV_point_sprite",
+#endif
+#ifdef GL_NV_polygon_mode
+ "GL_NV_polygon_mode",
+#endif
+#ifdef GL_NV_present_video
+ "GL_NV_present_video",
+#endif
+#ifdef GL_NV_primitive_restart
+ "GL_NV_primitive_restart",
+#endif
+#ifdef GL_NV_primitive_shading_rate
+ "GL_NV_primitive_shading_rate",
+#endif
+#ifdef GL_NV_query_resource_tag
+ "GL_NV_query_resource_tag",
+#endif
+#ifdef GL_NV_read_buffer
+ "GL_NV_read_buffer",
+#endif
+#ifdef GL_NV_read_buffer_front
+ "GL_NV_read_buffer_front",
+#endif
+#ifdef GL_NV_read_depth
+ "GL_NV_read_depth",
+#endif
+#ifdef GL_NV_read_depth_stencil
+ "GL_NV_read_depth_stencil",
+#endif
+#ifdef GL_NV_read_stencil
+ "GL_NV_read_stencil",
+#endif
+#ifdef GL_NV_register_combiners
+ "GL_NV_register_combiners",
+#endif
+#ifdef GL_NV_register_combiners2
+ "GL_NV_register_combiners2",
+#endif
+#ifdef GL_NV_representative_fragment_test
+ "GL_NV_representative_fragment_test",
+#endif
+#ifdef GL_NV_robustness_video_memory_purge
+ "GL_NV_robustness_video_memory_purge",
+#endif
+#ifdef GL_NV_sRGB_formats
+ "GL_NV_sRGB_formats",
+#endif
+#ifdef GL_NV_sample_locations
+ "GL_NV_sample_locations",
+#endif
+#ifdef GL_NV_sample_mask_override_coverage
+ "GL_NV_sample_mask_override_coverage",
+#endif
+#ifdef GL_NV_scissor_exclusive
+ "GL_NV_scissor_exclusive",
+#endif
+#ifdef GL_NV_shader_atomic_counters
+ "GL_NV_shader_atomic_counters",
+#endif
+#ifdef GL_NV_shader_atomic_float
+ "GL_NV_shader_atomic_float",
+#endif
+#ifdef GL_NV_shader_atomic_float64
+ "GL_NV_shader_atomic_float64",
+#endif
+#ifdef GL_NV_shader_atomic_fp16_vector
+ "GL_NV_shader_atomic_fp16_vector",
+#endif
+#ifdef GL_NV_shader_atomic_int64
+ "GL_NV_shader_atomic_int64",
+#endif
+#ifdef GL_NV_shader_buffer_load
+ "GL_NV_shader_buffer_load",
+#endif
+#ifdef GL_NV_shader_noperspective_interpolation
+ "GL_NV_shader_noperspective_interpolation",
+#endif
+#ifdef GL_NV_shader_storage_buffer_object
+ "GL_NV_shader_storage_buffer_object",
+#endif
+#ifdef GL_NV_shader_subgroup_partitioned
+ "GL_NV_shader_subgroup_partitioned",
+#endif
+#ifdef GL_NV_shader_texture_footprint
+ "GL_NV_shader_texture_footprint",
+#endif
+#ifdef GL_NV_shader_thread_group
+ "GL_NV_shader_thread_group",
+#endif
+#ifdef GL_NV_shader_thread_shuffle
+ "GL_NV_shader_thread_shuffle",
+#endif
+#ifdef GL_NV_shading_rate_image
+ "GL_NV_shading_rate_image",
+#endif
+#ifdef GL_NV_shadow_samplers_array
+ "GL_NV_shadow_samplers_array",
+#endif
+#ifdef GL_NV_shadow_samplers_cube
+ "GL_NV_shadow_samplers_cube",
+#endif
+#ifdef GL_NV_stereo_view_rendering
+ "GL_NV_stereo_view_rendering",
+#endif
+#ifdef GL_NV_tessellation_program5
+ "GL_NV_tessellation_program5",
+#endif
+#ifdef GL_NV_texgen_emboss
+ "GL_NV_texgen_emboss",
+#endif
+#ifdef GL_NV_texgen_reflection
+ "GL_NV_texgen_reflection",
+#endif
+#ifdef GL_NV_texture_array
+ "GL_NV_texture_array",
+#endif
+#ifdef GL_NV_texture_barrier
+ "GL_NV_texture_barrier",
+#endif
+#ifdef GL_NV_texture_border_clamp
+ "GL_NV_texture_border_clamp",
+#endif
+#ifdef GL_NV_texture_compression_latc
+ "GL_NV_texture_compression_latc",
+#endif
+#ifdef GL_NV_texture_compression_s3tc
+ "GL_NV_texture_compression_s3tc",
+#endif
+#ifdef GL_NV_texture_compression_s3tc_update
+ "GL_NV_texture_compression_s3tc_update",
+#endif
+#ifdef GL_NV_texture_compression_vtc
+ "GL_NV_texture_compression_vtc",
+#endif
+#ifdef GL_NV_texture_env_combine4
+ "GL_NV_texture_env_combine4",
+#endif
+#ifdef GL_NV_texture_expand_normal
+ "GL_NV_texture_expand_normal",
+#endif
+#ifdef GL_NV_texture_multisample
+ "GL_NV_texture_multisample",
+#endif
+#ifdef GL_NV_texture_npot_2D_mipmap
+ "GL_NV_texture_npot_2D_mipmap",
+#endif
+#ifdef GL_NV_texture_rectangle
+ "GL_NV_texture_rectangle",
+#endif
+#ifdef GL_NV_texture_rectangle_compressed
+ "GL_NV_texture_rectangle_compressed",
+#endif
+#ifdef GL_NV_texture_shader
+ "GL_NV_texture_shader",
+#endif
+#ifdef GL_NV_texture_shader2
+ "GL_NV_texture_shader2",
+#endif
+#ifdef GL_NV_texture_shader3
+ "GL_NV_texture_shader3",
+#endif
+#ifdef GL_NV_timeline_semaphore
+ "GL_NV_timeline_semaphore",
+#endif
+#ifdef GL_NV_transform_feedback
+ "GL_NV_transform_feedback",
+#endif
+#ifdef GL_NV_transform_feedback2
+ "GL_NV_transform_feedback2",
+#endif
+#ifdef GL_NV_uniform_buffer_unified_memory
+ "GL_NV_uniform_buffer_unified_memory",
+#endif
+#ifdef GL_NV_vdpau_interop
+ "GL_NV_vdpau_interop",
+#endif
+#ifdef GL_NV_vdpau_interop2
+ "GL_NV_vdpau_interop2",
+#endif
+#ifdef GL_NV_vertex_array_range
+ "GL_NV_vertex_array_range",
+#endif
+#ifdef GL_NV_vertex_array_range2
+ "GL_NV_vertex_array_range2",
+#endif
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ "GL_NV_vertex_attrib_integer_64bit",
+#endif
+#ifdef GL_NV_vertex_buffer_unified_memory
+ "GL_NV_vertex_buffer_unified_memory",
+#endif
+#ifdef GL_NV_vertex_program
+ "GL_NV_vertex_program",
+#endif
+#ifdef GL_NV_vertex_program1_1
+ "GL_NV_vertex_program1_1",
+#endif
+#ifdef GL_NV_vertex_program2
+ "GL_NV_vertex_program2",
+#endif
+#ifdef GL_NV_vertex_program2_option
+ "GL_NV_vertex_program2_option",
+#endif
+#ifdef GL_NV_vertex_program3
+ "GL_NV_vertex_program3",
+#endif
+#ifdef GL_NV_vertex_program4
+ "GL_NV_vertex_program4",
+#endif
+#ifdef GL_NV_video_capture
+ "GL_NV_video_capture",
+#endif
+#ifdef GL_NV_viewport_array
+ "GL_NV_viewport_array",
+#endif
+#ifdef GL_NV_viewport_array2
+ "GL_NV_viewport_array2",
+#endif
+#ifdef GL_NV_viewport_swizzle
+ "GL_NV_viewport_swizzle",
+#endif
+#ifdef GL_OES_EGL_image
+ "GL_OES_EGL_image",
+#endif
+#ifdef GL_OES_EGL_image_external
+ "GL_OES_EGL_image_external",
+#endif
+#ifdef GL_OES_EGL_image_external_essl3
+ "GL_OES_EGL_image_external_essl3",
+#endif
+#ifdef GL_OES_blend_equation_separate
+ "GL_OES_blend_equation_separate",
+#endif
+#ifdef GL_OES_blend_func_separate
+ "GL_OES_blend_func_separate",
+#endif
+#ifdef GL_OES_blend_subtract
+ "GL_OES_blend_subtract",
+#endif
+#ifdef GL_OES_byte_coordinates
+ "GL_OES_byte_coordinates",
+#endif
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+ "GL_OES_compressed_ETC1_RGB8_texture",
+#endif
+#ifdef GL_OES_compressed_paletted_texture
+ "GL_OES_compressed_paletted_texture",
+#endif
+#ifdef GL_OES_copy_image
+ "GL_OES_copy_image",
+#endif
+#ifdef GL_OES_depth24
+ "GL_OES_depth24",
+#endif
+#ifdef GL_OES_depth32
+ "GL_OES_depth32",
+#endif
+#ifdef GL_OES_depth_texture
+ "GL_OES_depth_texture",
+#endif
+#ifdef GL_OES_depth_texture_cube_map
+ "GL_OES_depth_texture_cube_map",
+#endif
+#ifdef GL_OES_draw_buffers_indexed
+ "GL_OES_draw_buffers_indexed",
+#endif
+#ifdef GL_OES_draw_texture
+ "GL_OES_draw_texture",
+#endif
+#ifdef GL_OES_element_index_uint
+ "GL_OES_element_index_uint",
+#endif
+#ifdef GL_OES_extended_matrix_palette
+ "GL_OES_extended_matrix_palette",
+#endif
+#ifdef GL_OES_fbo_render_mipmap
+ "GL_OES_fbo_render_mipmap",
+#endif
+#ifdef GL_OES_fragment_precision_high
+ "GL_OES_fragment_precision_high",
+#endif
+#ifdef GL_OES_framebuffer_object
+ "GL_OES_framebuffer_object",
+#endif
+#ifdef GL_OES_geometry_point_size
+ "GL_OES_geometry_point_size",
+#endif
+#ifdef GL_OES_geometry_shader
+ "GL_OES_geometry_shader",
+#endif
+#ifdef GL_OES_get_program_binary
+ "GL_OES_get_program_binary",
+#endif
+#ifdef GL_OES_gpu_shader5
+ "GL_OES_gpu_shader5",
+#endif
+#ifdef GL_OES_mapbuffer
+ "GL_OES_mapbuffer",
+#endif
+#ifdef GL_OES_matrix_get
+ "GL_OES_matrix_get",
+#endif
+#ifdef GL_OES_matrix_palette
+ "GL_OES_matrix_palette",
+#endif
+#ifdef GL_OES_packed_depth_stencil
+ "GL_OES_packed_depth_stencil",
+#endif
+#ifdef GL_OES_point_size_array
+ "GL_OES_point_size_array",
+#endif
+#ifdef GL_OES_point_sprite
+ "GL_OES_point_sprite",
+#endif
+#ifdef GL_OES_read_format
+ "GL_OES_read_format",
+#endif
+#ifdef GL_OES_required_internalformat
+ "GL_OES_required_internalformat",
+#endif
+#ifdef GL_OES_rgb8_rgba8
+ "GL_OES_rgb8_rgba8",
+#endif
+#ifdef GL_OES_sample_shading
+ "GL_OES_sample_shading",
+#endif
+#ifdef GL_OES_sample_variables
+ "GL_OES_sample_variables",
+#endif
+#ifdef GL_OES_shader_image_atomic
+ "GL_OES_shader_image_atomic",
+#endif
+#ifdef GL_OES_shader_io_blocks
+ "GL_OES_shader_io_blocks",
+#endif
+#ifdef GL_OES_shader_multisample_interpolation
+ "GL_OES_shader_multisample_interpolation",
+#endif
+#ifdef GL_OES_single_precision
+ "GL_OES_single_precision",
+#endif
+#ifdef GL_OES_standard_derivatives
+ "GL_OES_standard_derivatives",
+#endif
+#ifdef GL_OES_stencil1
+ "GL_OES_stencil1",
+#endif
+#ifdef GL_OES_stencil4
+ "GL_OES_stencil4",
+#endif
+#ifdef GL_OES_stencil8
+ "GL_OES_stencil8",
+#endif
+#ifdef GL_OES_surfaceless_context
+ "GL_OES_surfaceless_context",
+#endif
+#ifdef GL_OES_tessellation_point_size
+ "GL_OES_tessellation_point_size",
+#endif
+#ifdef GL_OES_tessellation_shader
+ "GL_OES_tessellation_shader",
+#endif
+#ifdef GL_OES_texture_3D
+ "GL_OES_texture_3D",
+#endif
+#ifdef GL_OES_texture_border_clamp
+ "GL_OES_texture_border_clamp",
+#endif
+#ifdef GL_OES_texture_buffer
+ "GL_OES_texture_buffer",
+#endif
+#ifdef GL_OES_texture_compression_astc
+ "GL_OES_texture_compression_astc",
+#endif
+#ifdef GL_OES_texture_cube_map
+ "GL_OES_texture_cube_map",
+#endif
+#ifdef GL_OES_texture_cube_map_array
+ "GL_OES_texture_cube_map_array",
+#endif
+#ifdef GL_OES_texture_env_crossbar
+ "GL_OES_texture_env_crossbar",
+#endif
+#ifdef GL_OES_texture_mirrored_repeat
+ "GL_OES_texture_mirrored_repeat",
+#endif
+#ifdef GL_OES_texture_npot
+ "GL_OES_texture_npot",
+#endif
+#ifdef GL_OES_texture_stencil8
+ "GL_OES_texture_stencil8",
+#endif
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ "GL_OES_texture_storage_multisample_2d_array",
+#endif
+#ifdef GL_OES_texture_view
+ "GL_OES_texture_view",
+#endif
+#ifdef GL_OES_vertex_array_object
+ "GL_OES_vertex_array_object",
+#endif
+#ifdef GL_OES_vertex_half_float
+ "GL_OES_vertex_half_float",
+#endif
+#ifdef GL_OES_vertex_type_10_10_10_2
+ "GL_OES_vertex_type_10_10_10_2",
+#endif
+#ifdef GL_OML_interlace
+ "GL_OML_interlace",
+#endif
+#ifdef GL_OML_resample
+ "GL_OML_resample",
+#endif
+#ifdef GL_OML_subsample
+ "GL_OML_subsample",
+#endif
+#ifdef GL_OVR_multiview
+ "GL_OVR_multiview",
+#endif
+#ifdef GL_OVR_multiview2
+ "GL_OVR_multiview2",
+#endif
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ "GL_OVR_multiview_multisampled_render_to_texture",
+#endif
+#ifdef GL_PGI_misc_hints
+ "GL_PGI_misc_hints",
+#endif
+#ifdef GL_PGI_vertex_hints
+ "GL_PGI_vertex_hints",
+#endif
+#ifdef GL_QCOM_YUV_texture_gather
+ "GL_QCOM_YUV_texture_gather",
+#endif
+#ifdef GL_QCOM_alpha_test
+ "GL_QCOM_alpha_test",
+#endif
+#ifdef GL_QCOM_binning_control
+ "GL_QCOM_binning_control",
+#endif
+#ifdef GL_QCOM_driver_control
+ "GL_QCOM_driver_control",
+#endif
+#ifdef GL_QCOM_extended_get
+ "GL_QCOM_extended_get",
+#endif
+#ifdef GL_QCOM_extended_get2
+ "GL_QCOM_extended_get2",
+#endif
+#ifdef GL_QCOM_frame_extrapolation
+ "GL_QCOM_frame_extrapolation",
+#endif
+#ifdef GL_QCOM_framebuffer_foveated
+ "GL_QCOM_framebuffer_foveated",
+#endif
+#ifdef GL_QCOM_motion_estimation
+ "GL_QCOM_motion_estimation",
+#endif
+#ifdef GL_QCOM_perfmon_global_mode
+ "GL_QCOM_perfmon_global_mode",
+#endif
+#ifdef GL_QCOM_render_shared_exponent
+ "GL_QCOM_render_shared_exponent",
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ "GL_QCOM_shader_framebuffer_fetch_noncoherent",
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+ "GL_QCOM_shader_framebuffer_fetch_rate",
+#endif
+#ifdef GL_QCOM_shading_rate
+ "GL_QCOM_shading_rate",
+#endif
+#ifdef GL_QCOM_texture_foveated
+ "GL_QCOM_texture_foveated",
+#endif
+#ifdef GL_QCOM_texture_foveated2
+ "GL_QCOM_texture_foveated2",
+#endif
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+ "GL_QCOM_texture_foveated_subsampled_layout",
+#endif
+#ifdef GL_QCOM_tiled_rendering
+ "GL_QCOM_tiled_rendering",
+#endif
+#ifdef GL_QCOM_writeonly_rendering
+ "GL_QCOM_writeonly_rendering",
+#endif
+#ifdef GL_REGAL_ES1_0_compatibility
+ "GL_REGAL_ES1_0_compatibility",
+#endif
+#ifdef GL_REGAL_ES1_1_compatibility
+ "GL_REGAL_ES1_1_compatibility",
+#endif
+#ifdef GL_REGAL_enable
+ "GL_REGAL_enable",
+#endif
+#ifdef GL_REGAL_error_string
+ "GL_REGAL_error_string",
+#endif
+#ifdef GL_REGAL_extension_query
+ "GL_REGAL_extension_query",
+#endif
+#ifdef GL_REGAL_log
+ "GL_REGAL_log",
+#endif
+#ifdef GL_REGAL_proc_address
+ "GL_REGAL_proc_address",
+#endif
+#ifdef GL_REND_screen_coordinates
+ "GL_REND_screen_coordinates",
+#endif
+#ifdef GL_S3_s3tc
+ "GL_S3_s3tc",
+#endif
+#ifdef GL_SGIS_clip_band_hint
+ "GL_SGIS_clip_band_hint",
+#endif
+#ifdef GL_SGIS_color_range
+ "GL_SGIS_color_range",
+#endif
+#ifdef GL_SGIS_detail_texture
+ "GL_SGIS_detail_texture",
+#endif
+#ifdef GL_SGIS_fog_function
+ "GL_SGIS_fog_function",
+#endif
+#ifdef GL_SGIS_generate_mipmap
+ "GL_SGIS_generate_mipmap",
+#endif
+#ifdef GL_SGIS_line_texgen
+ "GL_SGIS_line_texgen",
+#endif
+#ifdef GL_SGIS_multisample
+ "GL_SGIS_multisample",
+#endif
+#ifdef GL_SGIS_multitexture
+ "GL_SGIS_multitexture",
+#endif
+#ifdef GL_SGIS_pixel_texture
+ "GL_SGIS_pixel_texture",
+#endif
+#ifdef GL_SGIS_point_line_texgen
+ "GL_SGIS_point_line_texgen",
+#endif
+#ifdef GL_SGIS_shared_multisample
+ "GL_SGIS_shared_multisample",
+#endif
+#ifdef GL_SGIS_sharpen_texture
+ "GL_SGIS_sharpen_texture",
+#endif
+#ifdef GL_SGIS_texture4D
+ "GL_SGIS_texture4D",
+#endif
+#ifdef GL_SGIS_texture_border_clamp
+ "GL_SGIS_texture_border_clamp",
+#endif
+#ifdef GL_SGIS_texture_edge_clamp
+ "GL_SGIS_texture_edge_clamp",
+#endif
+#ifdef GL_SGIS_texture_filter4
+ "GL_SGIS_texture_filter4",
+#endif
+#ifdef GL_SGIS_texture_lod
+ "GL_SGIS_texture_lod",
+#endif
+#ifdef GL_SGIS_texture_select
+ "GL_SGIS_texture_select",
+#endif
+#ifdef GL_SGIX_async
+ "GL_SGIX_async",
+#endif
+#ifdef GL_SGIX_async_histogram
+ "GL_SGIX_async_histogram",
+#endif
+#ifdef GL_SGIX_async_pixel
+ "GL_SGIX_async_pixel",
+#endif
+#ifdef GL_SGIX_bali_g_instruments
+ "GL_SGIX_bali_g_instruments",
+#endif
+#ifdef GL_SGIX_bali_r_instruments
+ "GL_SGIX_bali_r_instruments",
+#endif
+#ifdef GL_SGIX_bali_timer_instruments
+ "GL_SGIX_bali_timer_instruments",
+#endif
+#ifdef GL_SGIX_blend_alpha_minmax
+ "GL_SGIX_blend_alpha_minmax",
+#endif
+#ifdef GL_SGIX_blend_cadd
+ "GL_SGIX_blend_cadd",
+#endif
+#ifdef GL_SGIX_blend_cmultiply
+ "GL_SGIX_blend_cmultiply",
+#endif
+#ifdef GL_SGIX_calligraphic_fragment
+ "GL_SGIX_calligraphic_fragment",
+#endif
+#ifdef GL_SGIX_clipmap
+ "GL_SGIX_clipmap",
+#endif
+#ifdef GL_SGIX_color_matrix_accuracy
+ "GL_SGIX_color_matrix_accuracy",
+#endif
+#ifdef GL_SGIX_color_table_index_mode
+ "GL_SGIX_color_table_index_mode",
+#endif
+#ifdef GL_SGIX_complex_polar
+ "GL_SGIX_complex_polar",
+#endif
+#ifdef GL_SGIX_convolution_accuracy
+ "GL_SGIX_convolution_accuracy",
+#endif
+#ifdef GL_SGIX_cube_map
+ "GL_SGIX_cube_map",
+#endif
+#ifdef GL_SGIX_cylinder_texgen
+ "GL_SGIX_cylinder_texgen",
+#endif
+#ifdef GL_SGIX_datapipe
+ "GL_SGIX_datapipe",
+#endif
+#ifdef GL_SGIX_decimation
+ "GL_SGIX_decimation",
+#endif
+#ifdef GL_SGIX_depth_pass_instrument
+ "GL_SGIX_depth_pass_instrument",
+#endif
+#ifdef GL_SGIX_depth_texture
+ "GL_SGIX_depth_texture",
+#endif
+#ifdef GL_SGIX_dvc
+ "GL_SGIX_dvc",
+#endif
+#ifdef GL_SGIX_flush_raster
+ "GL_SGIX_flush_raster",
+#endif
+#ifdef GL_SGIX_fog_blend
+ "GL_SGIX_fog_blend",
+#endif
+#ifdef GL_SGIX_fog_factor_to_alpha
+ "GL_SGIX_fog_factor_to_alpha",
+#endif
+#ifdef GL_SGIX_fog_layers
+ "GL_SGIX_fog_layers",
+#endif
+#ifdef GL_SGIX_fog_offset
+ "GL_SGIX_fog_offset",
+#endif
+#ifdef GL_SGIX_fog_patchy
+ "GL_SGIX_fog_patchy",
+#endif
+#ifdef GL_SGIX_fog_scale
+ "GL_SGIX_fog_scale",
+#endif
+#ifdef GL_SGIX_fog_texture
+ "GL_SGIX_fog_texture",
+#endif
+#ifdef GL_SGIX_fragment_lighting_space
+ "GL_SGIX_fragment_lighting_space",
+#endif
+#ifdef GL_SGIX_fragment_specular_lighting
+ "GL_SGIX_fragment_specular_lighting",
+#endif
+#ifdef GL_SGIX_fragments_instrument
+ "GL_SGIX_fragments_instrument",
+#endif
+#ifdef GL_SGIX_framezoom
+ "GL_SGIX_framezoom",
+#endif
+#ifdef GL_SGIX_icc_texture
+ "GL_SGIX_icc_texture",
+#endif
+#ifdef GL_SGIX_igloo_interface
+ "GL_SGIX_igloo_interface",
+#endif
+#ifdef GL_SGIX_image_compression
+ "GL_SGIX_image_compression",
+#endif
+#ifdef GL_SGIX_impact_pixel_texture
+ "GL_SGIX_impact_pixel_texture",
+#endif
+#ifdef GL_SGIX_instrument_error
+ "GL_SGIX_instrument_error",
+#endif
+#ifdef GL_SGIX_interlace
+ "GL_SGIX_interlace",
+#endif
+#ifdef GL_SGIX_ir_instrument1
+ "GL_SGIX_ir_instrument1",
+#endif
+#ifdef GL_SGIX_line_quality_hint
+ "GL_SGIX_line_quality_hint",
+#endif
+#ifdef GL_SGIX_list_priority
+ "GL_SGIX_list_priority",
+#endif
+#ifdef GL_SGIX_mpeg1
+ "GL_SGIX_mpeg1",
+#endif
+#ifdef GL_SGIX_mpeg2
+ "GL_SGIX_mpeg2",
+#endif
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ "GL_SGIX_nonlinear_lighting_pervertex",
+#endif
+#ifdef GL_SGIX_nurbs_eval
+ "GL_SGIX_nurbs_eval",
+#endif
+#ifdef GL_SGIX_occlusion_instrument
+ "GL_SGIX_occlusion_instrument",
+#endif
+#ifdef GL_SGIX_packed_6bytes
+ "GL_SGIX_packed_6bytes",
+#endif
+#ifdef GL_SGIX_pixel_texture
+ "GL_SGIX_pixel_texture",
+#endif
+#ifdef GL_SGIX_pixel_texture_bits
+ "GL_SGIX_pixel_texture_bits",
+#endif
+#ifdef GL_SGIX_pixel_texture_lod
+ "GL_SGIX_pixel_texture_lod",
+#endif
+#ifdef GL_SGIX_pixel_tiles
+ "GL_SGIX_pixel_tiles",
+#endif
+#ifdef GL_SGIX_polynomial_ffd
+ "GL_SGIX_polynomial_ffd",
+#endif
+#ifdef GL_SGIX_quad_mesh
+ "GL_SGIX_quad_mesh",
+#endif
+#ifdef GL_SGIX_reference_plane
+ "GL_SGIX_reference_plane",
+#endif
+#ifdef GL_SGIX_resample
+ "GL_SGIX_resample",
+#endif
+#ifdef GL_SGIX_scalebias_hint
+ "GL_SGIX_scalebias_hint",
+#endif
+#ifdef GL_SGIX_shadow
+ "GL_SGIX_shadow",
+#endif
+#ifdef GL_SGIX_shadow_ambient
+ "GL_SGIX_shadow_ambient",
+#endif
+#ifdef GL_SGIX_slim
+ "GL_SGIX_slim",
+#endif
+#ifdef GL_SGIX_spotlight_cutoff
+ "GL_SGIX_spotlight_cutoff",
+#endif
+#ifdef GL_SGIX_sprite
+ "GL_SGIX_sprite",
+#endif
+#ifdef GL_SGIX_subdiv_patch
+ "GL_SGIX_subdiv_patch",
+#endif
+#ifdef GL_SGIX_subsample
+ "GL_SGIX_subsample",
+#endif
+#ifdef GL_SGIX_tag_sample_buffer
+ "GL_SGIX_tag_sample_buffer",
+#endif
+#ifdef GL_SGIX_texture_add_env
+ "GL_SGIX_texture_add_env",
+#endif
+#ifdef GL_SGIX_texture_coordinate_clamp
+ "GL_SGIX_texture_coordinate_clamp",
+#endif
+#ifdef GL_SGIX_texture_lod_bias
+ "GL_SGIX_texture_lod_bias",
+#endif
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+ "GL_SGIX_texture_mipmap_anisotropic",
+#endif
+#ifdef GL_SGIX_texture_multi_buffer
+ "GL_SGIX_texture_multi_buffer",
+#endif
+#ifdef GL_SGIX_texture_phase
+ "GL_SGIX_texture_phase",
+#endif
+#ifdef GL_SGIX_texture_range
+ "GL_SGIX_texture_range",
+#endif
+#ifdef GL_SGIX_texture_scale_bias
+ "GL_SGIX_texture_scale_bias",
+#endif
+#ifdef GL_SGIX_texture_supersample
+ "GL_SGIX_texture_supersample",
+#endif
+#ifdef GL_SGIX_vector_ops
+ "GL_SGIX_vector_ops",
+#endif
+#ifdef GL_SGIX_vertex_array_object
+ "GL_SGIX_vertex_array_object",
+#endif
+#ifdef GL_SGIX_vertex_preclip
+ "GL_SGIX_vertex_preclip",
+#endif
+#ifdef GL_SGIX_vertex_preclip_hint
+ "GL_SGIX_vertex_preclip_hint",
+#endif
+#ifdef GL_SGIX_ycrcb
+ "GL_SGIX_ycrcb",
+#endif
+#ifdef GL_SGIX_ycrcb_subsample
+ "GL_SGIX_ycrcb_subsample",
+#endif
+#ifdef GL_SGIX_ycrcba
+ "GL_SGIX_ycrcba",
+#endif
+#ifdef GL_SGI_color_matrix
+ "GL_SGI_color_matrix",
+#endif
+#ifdef GL_SGI_color_table
+ "GL_SGI_color_table",
+#endif
+#ifdef GL_SGI_complex
+ "GL_SGI_complex",
+#endif
+#ifdef GL_SGI_complex_type
+ "GL_SGI_complex_type",
+#endif
+#ifdef GL_SGI_fft
+ "GL_SGI_fft",
+#endif
+#ifdef GL_SGI_texture_color_table
+ "GL_SGI_texture_color_table",
+#endif
+#ifdef GL_SUNX_constant_data
+ "GL_SUNX_constant_data",
+#endif
+#ifdef GL_SUN_convolution_border_modes
+ "GL_SUN_convolution_border_modes",
+#endif
+#ifdef GL_SUN_global_alpha
+ "GL_SUN_global_alpha",
+#endif
+#ifdef GL_SUN_mesh_array
+ "GL_SUN_mesh_array",
+#endif
+#ifdef GL_SUN_read_video_pixels
+ "GL_SUN_read_video_pixels",
+#endif
+#ifdef GL_SUN_slice_accum
+ "GL_SUN_slice_accum",
+#endif
+#ifdef GL_SUN_triangle_list
+ "GL_SUN_triangle_list",
+#endif
+#ifdef GL_SUN_vertex
+ "GL_SUN_vertex",
+#endif
+#ifdef GL_VERSION_1_2
+ "GL_VERSION_1_2",
+#endif
+#ifdef GL_VERSION_1_2_1
+ "GL_VERSION_1_2_1",
+#endif
+#ifdef GL_VERSION_1_3
+ "GL_VERSION_1_3",
+#endif
+#ifdef GL_VERSION_1_4
+ "GL_VERSION_1_4",
+#endif
+#ifdef GL_VERSION_1_5
+ "GL_VERSION_1_5",
+#endif
+#ifdef GL_VERSION_2_0
+ "GL_VERSION_2_0",
+#endif
+#ifdef GL_VERSION_2_1
+ "GL_VERSION_2_1",
+#endif
+#ifdef GL_VERSION_3_0
+ "GL_VERSION_3_0",
+#endif
+#ifdef GL_VERSION_3_1
+ "GL_VERSION_3_1",
+#endif
+#ifdef GL_VERSION_3_2
+ "GL_VERSION_3_2",
+#endif
+#ifdef GL_VERSION_3_3
+ "GL_VERSION_3_3",
+#endif
+#ifdef GL_VERSION_4_0
+ "GL_VERSION_4_0",
+#endif
+#ifdef GL_VERSION_4_1
+ "GL_VERSION_4_1",
+#endif
+#ifdef GL_VERSION_4_2
+ "GL_VERSION_4_2",
+#endif
+#ifdef GL_VERSION_4_3
+ "GL_VERSION_4_3",
+#endif
+#ifdef GL_VERSION_4_4
+ "GL_VERSION_4_4",
+#endif
+#ifdef GL_VERSION_4_5
+ "GL_VERSION_4_5",
+#endif
+#ifdef GL_VERSION_4_6
+ "GL_VERSION_4_6",
+#endif
+#ifdef GL_VIV_shader_binary
+ "GL_VIV_shader_binary",
+#endif
+#ifdef GL_WIN_phong_shading
+ "GL_WIN_phong_shading",
+#endif
+#ifdef GL_WIN_scene_markerXXX
+ "GL_WIN_scene_markerXXX",
+#endif
+#ifdef GL_WIN_specular_fog
+ "GL_WIN_specular_fog",
+#endif
+#ifdef GL_WIN_swap_hint
+ "GL_WIN_swap_hint",
+#endif
+ NULL
+};
+
+
+/* Detected in the extension string or strings */
+static GLboolean _glewExtensionString[947];
+/* Detected via extension string or experimental mode */
+static GLboolean* _glewExtensionEnabled[] = {
+#ifdef GL_3DFX_multisample
+ &__GLEW_3DFX_multisample,
+#endif
+#ifdef GL_3DFX_tbuffer
+ &__GLEW_3DFX_tbuffer,
+#endif
+#ifdef GL_3DFX_texture_compression_FXT1
+ &__GLEW_3DFX_texture_compression_FXT1,
+#endif
+#ifdef GL_AMD_blend_minmax_factor
+ &__GLEW_AMD_blend_minmax_factor,
+#endif
+#ifdef GL_AMD_compressed_3DC_texture
+ &__GLEW_AMD_compressed_3DC_texture,
+#endif
+#ifdef GL_AMD_compressed_ATC_texture
+ &__GLEW_AMD_compressed_ATC_texture,
+#endif
+#ifdef GL_AMD_conservative_depth
+ &__GLEW_AMD_conservative_depth,
+#endif
+#ifdef GL_AMD_debug_output
+ &__GLEW_AMD_debug_output,
+#endif
+#ifdef GL_AMD_depth_clamp_separate
+ &__GLEW_AMD_depth_clamp_separate,
+#endif
+#ifdef GL_AMD_draw_buffers_blend
+ &__GLEW_AMD_draw_buffers_blend,
+#endif
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ &__GLEW_AMD_framebuffer_multisample_advanced,
+#endif
+#ifdef GL_AMD_framebuffer_sample_positions
+ &__GLEW_AMD_framebuffer_sample_positions,
+#endif
+#ifdef GL_AMD_gcn_shader
+ &__GLEW_AMD_gcn_shader,
+#endif
+#ifdef GL_AMD_gpu_shader_half_float
+ &__GLEW_AMD_gpu_shader_half_float,
+#endif
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+ &__GLEW_AMD_gpu_shader_half_float_fetch,
+#endif
+#ifdef GL_AMD_gpu_shader_int16
+ &__GLEW_AMD_gpu_shader_int16,
+#endif
+#ifdef GL_AMD_gpu_shader_int64
+ &__GLEW_AMD_gpu_shader_int64,
+#endif
+#ifdef GL_AMD_interleaved_elements
+ &__GLEW_AMD_interleaved_elements,
+#endif
+#ifdef GL_AMD_multi_draw_indirect
+ &__GLEW_AMD_multi_draw_indirect,
+#endif
+#ifdef GL_AMD_name_gen_delete
+ &__GLEW_AMD_name_gen_delete,
+#endif
+#ifdef GL_AMD_occlusion_query_event
+ &__GLEW_AMD_occlusion_query_event,
+#endif
+#ifdef GL_AMD_performance_monitor
+ &__GLEW_AMD_performance_monitor,
+#endif
+#ifdef GL_AMD_pinned_memory
+ &__GLEW_AMD_pinned_memory,
+#endif
+#ifdef GL_AMD_program_binary_Z400
+ &__GLEW_AMD_program_binary_Z400,
+#endif
+#ifdef GL_AMD_query_buffer_object
+ &__GLEW_AMD_query_buffer_object,
+#endif
+#ifdef GL_AMD_sample_positions
+ &__GLEW_AMD_sample_positions,
+#endif
+#ifdef GL_AMD_seamless_cubemap_per_texture
+ &__GLEW_AMD_seamless_cubemap_per_texture,
+#endif
+#ifdef GL_AMD_shader_atomic_counter_ops
+ &__GLEW_AMD_shader_atomic_counter_ops,
+#endif
+#ifdef GL_AMD_shader_ballot
+ &__GLEW_AMD_shader_ballot,
+#endif
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+ &__GLEW_AMD_shader_explicit_vertex_parameter,
+#endif
+#ifdef GL_AMD_shader_image_load_store_lod
+ &__GLEW_AMD_shader_image_load_store_lod,
+#endif
+#ifdef GL_AMD_shader_stencil_export
+ &__GLEW_AMD_shader_stencil_export,
+#endif
+#ifdef GL_AMD_shader_stencil_value_export
+ &__GLEW_AMD_shader_stencil_value_export,
+#endif
+#ifdef GL_AMD_shader_trinary_minmax
+ &__GLEW_AMD_shader_trinary_minmax,
+#endif
+#ifdef GL_AMD_sparse_texture
+ &__GLEW_AMD_sparse_texture,
+#endif
+#ifdef GL_AMD_stencil_operation_extended
+ &__GLEW_AMD_stencil_operation_extended,
+#endif
+#ifdef GL_AMD_texture_gather_bias_lod
+ &__GLEW_AMD_texture_gather_bias_lod,
+#endif
+#ifdef GL_AMD_texture_texture4
+ &__GLEW_AMD_texture_texture4,
+#endif
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+ &__GLEW_AMD_transform_feedback3_lines_triangles,
+#endif
+#ifdef GL_AMD_transform_feedback4
+ &__GLEW_AMD_transform_feedback4,
+#endif
+#ifdef GL_AMD_vertex_shader_layer
+ &__GLEW_AMD_vertex_shader_layer,
+#endif
+#ifdef GL_AMD_vertex_shader_tessellator
+ &__GLEW_AMD_vertex_shader_tessellator,
+#endif
+#ifdef GL_AMD_vertex_shader_viewport_index
+ &__GLEW_AMD_vertex_shader_viewport_index,
+#endif
+#ifdef GL_ANDROID_extension_pack_es31a
+ &__GLEW_ANDROID_extension_pack_es31a,
+#endif
+#ifdef GL_ANGLE_depth_texture
+ &__GLEW_ANGLE_depth_texture,
+#endif
+#ifdef GL_ANGLE_framebuffer_blit
+ &__GLEW_ANGLE_framebuffer_blit,
+#endif
+#ifdef GL_ANGLE_framebuffer_multisample
+ &__GLEW_ANGLE_framebuffer_multisample,
+#endif
+#ifdef GL_ANGLE_instanced_arrays
+ &__GLEW_ANGLE_instanced_arrays,
+#endif
+#ifdef GL_ANGLE_pack_reverse_row_order
+ &__GLEW_ANGLE_pack_reverse_row_order,
+#endif
+#ifdef GL_ANGLE_program_binary
+ &__GLEW_ANGLE_program_binary,
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt1
+ &__GLEW_ANGLE_texture_compression_dxt1,
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt3
+ &__GLEW_ANGLE_texture_compression_dxt3,
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt5
+ &__GLEW_ANGLE_texture_compression_dxt5,
+#endif
+#ifdef GL_ANGLE_texture_usage
+ &__GLEW_ANGLE_texture_usage,
+#endif
+#ifdef GL_ANGLE_timer_query
+ &__GLEW_ANGLE_timer_query,
+#endif
+#ifdef GL_ANGLE_translated_shader_source
+ &__GLEW_ANGLE_translated_shader_source,
+#endif
+#ifdef GL_APPLE_aux_depth_stencil
+ &__GLEW_APPLE_aux_depth_stencil,
+#endif
+#ifdef GL_APPLE_client_storage
+ &__GLEW_APPLE_client_storage,
+#endif
+#ifdef GL_APPLE_clip_distance
+ &__GLEW_APPLE_clip_distance,
+#endif
+#ifdef GL_APPLE_color_buffer_packed_float
+ &__GLEW_APPLE_color_buffer_packed_float,
+#endif
+#ifdef GL_APPLE_copy_texture_levels
+ &__GLEW_APPLE_copy_texture_levels,
+#endif
+#ifdef GL_APPLE_element_array
+ &__GLEW_APPLE_element_array,
+#endif
+#ifdef GL_APPLE_fence
+ &__GLEW_APPLE_fence,
+#endif
+#ifdef GL_APPLE_float_pixels
+ &__GLEW_APPLE_float_pixels,
+#endif
+#ifdef GL_APPLE_flush_buffer_range
+ &__GLEW_APPLE_flush_buffer_range,
+#endif
+#ifdef GL_APPLE_framebuffer_multisample
+ &__GLEW_APPLE_framebuffer_multisample,
+#endif
+#ifdef GL_APPLE_object_purgeable
+ &__GLEW_APPLE_object_purgeable,
+#endif
+#ifdef GL_APPLE_pixel_buffer
+ &__GLEW_APPLE_pixel_buffer,
+#endif
+#ifdef GL_APPLE_rgb_422
+ &__GLEW_APPLE_rgb_422,
+#endif
+#ifdef GL_APPLE_row_bytes
+ &__GLEW_APPLE_row_bytes,
+#endif
+#ifdef GL_APPLE_specular_vector
+ &__GLEW_APPLE_specular_vector,
+#endif
+#ifdef GL_APPLE_sync
+ &__GLEW_APPLE_sync,
+#endif
+#ifdef GL_APPLE_texture_2D_limited_npot
+ &__GLEW_APPLE_texture_2D_limited_npot,
+#endif
+#ifdef GL_APPLE_texture_format_BGRA8888
+ &__GLEW_APPLE_texture_format_BGRA8888,
+#endif
+#ifdef GL_APPLE_texture_max_level
+ &__GLEW_APPLE_texture_max_level,
+#endif
+#ifdef GL_APPLE_texture_packed_float
+ &__GLEW_APPLE_texture_packed_float,
+#endif
+#ifdef GL_APPLE_texture_range
+ &__GLEW_APPLE_texture_range,
+#endif
+#ifdef GL_APPLE_transform_hint
+ &__GLEW_APPLE_transform_hint,
+#endif
+#ifdef GL_APPLE_vertex_array_object
+ &__GLEW_APPLE_vertex_array_object,
+#endif
+#ifdef GL_APPLE_vertex_array_range
+ &__GLEW_APPLE_vertex_array_range,
+#endif
+#ifdef GL_APPLE_vertex_program_evaluators
+ &__GLEW_APPLE_vertex_program_evaluators,
+#endif
+#ifdef GL_APPLE_ycbcr_422
+ &__GLEW_APPLE_ycbcr_422,
+#endif
+#ifdef GL_ARB_ES2_compatibility
+ &__GLEW_ARB_ES2_compatibility,
+#endif
+#ifdef GL_ARB_ES3_1_compatibility
+ &__GLEW_ARB_ES3_1_compatibility,
+#endif
+#ifdef GL_ARB_ES3_2_compatibility
+ &__GLEW_ARB_ES3_2_compatibility,
+#endif
+#ifdef GL_ARB_ES3_compatibility
+ &__GLEW_ARB_ES3_compatibility,
+#endif
+#ifdef GL_ARB_arrays_of_arrays
+ &__GLEW_ARB_arrays_of_arrays,
+#endif
+#ifdef GL_ARB_base_instance
+ &__GLEW_ARB_base_instance,
+#endif
+#ifdef GL_ARB_bindless_texture
+ &__GLEW_ARB_bindless_texture,
+#endif
+#ifdef GL_ARB_blend_func_extended
+ &__GLEW_ARB_blend_func_extended,
+#endif
+#ifdef GL_ARB_buffer_storage
+ &__GLEW_ARB_buffer_storage,
+#endif
+#ifdef GL_ARB_cl_event
+ &__GLEW_ARB_cl_event,
+#endif
+#ifdef GL_ARB_clear_buffer_object
+ &__GLEW_ARB_clear_buffer_object,
+#endif
+#ifdef GL_ARB_clear_texture
+ &__GLEW_ARB_clear_texture,
+#endif
+#ifdef GL_ARB_clip_control
+ &__GLEW_ARB_clip_control,
+#endif
+#ifdef GL_ARB_color_buffer_float
+ &__GLEW_ARB_color_buffer_float,
+#endif
+#ifdef GL_ARB_compatibility
+ &__GLEW_ARB_compatibility,
+#endif
+#ifdef GL_ARB_compressed_texture_pixel_storage
+ &__GLEW_ARB_compressed_texture_pixel_storage,
+#endif
+#ifdef GL_ARB_compute_shader
+ &__GLEW_ARB_compute_shader,
+#endif
+#ifdef GL_ARB_compute_variable_group_size
+ &__GLEW_ARB_compute_variable_group_size,
+#endif
+#ifdef GL_ARB_conditional_render_inverted
+ &__GLEW_ARB_conditional_render_inverted,
+#endif
+#ifdef GL_ARB_conservative_depth
+ &__GLEW_ARB_conservative_depth,
+#endif
+#ifdef GL_ARB_copy_buffer
+ &__GLEW_ARB_copy_buffer,
+#endif
+#ifdef GL_ARB_copy_image
+ &__GLEW_ARB_copy_image,
+#endif
+#ifdef GL_ARB_cull_distance
+ &__GLEW_ARB_cull_distance,
+#endif
+#ifdef GL_ARB_debug_output
+ &__GLEW_ARB_debug_output,
+#endif
+#ifdef GL_ARB_depth_buffer_float
+ &__GLEW_ARB_depth_buffer_float,
+#endif
+#ifdef GL_ARB_depth_clamp
+ &__GLEW_ARB_depth_clamp,
+#endif
+#ifdef GL_ARB_depth_texture
+ &__GLEW_ARB_depth_texture,
+#endif
+#ifdef GL_ARB_derivative_control
+ &__GLEW_ARB_derivative_control,
+#endif
+#ifdef GL_ARB_direct_state_access
+ &__GLEW_ARB_direct_state_access,
+#endif
+#ifdef GL_ARB_draw_buffers
+ &__GLEW_ARB_draw_buffers,
+#endif
+#ifdef GL_ARB_draw_buffers_blend
+ &__GLEW_ARB_draw_buffers_blend,
+#endif
+#ifdef GL_ARB_draw_elements_base_vertex
+ &__GLEW_ARB_draw_elements_base_vertex,
+#endif
+#ifdef GL_ARB_draw_indirect
+ &__GLEW_ARB_draw_indirect,
+#endif
+#ifdef GL_ARB_draw_instanced
+ &__GLEW_ARB_draw_instanced,
+#endif
+#ifdef GL_ARB_enhanced_layouts
+ &__GLEW_ARB_enhanced_layouts,
+#endif
+#ifdef GL_ARB_explicit_attrib_location
+ &__GLEW_ARB_explicit_attrib_location,
+#endif
+#ifdef GL_ARB_explicit_uniform_location
+ &__GLEW_ARB_explicit_uniform_location,
+#endif
+#ifdef GL_ARB_fragment_coord_conventions
+ &__GLEW_ARB_fragment_coord_conventions,
+#endif
+#ifdef GL_ARB_fragment_layer_viewport
+ &__GLEW_ARB_fragment_layer_viewport,
+#endif
+#ifdef GL_ARB_fragment_program
+ &__GLEW_ARB_fragment_program,
+#endif
+#ifdef GL_ARB_fragment_program_shadow
+ &__GLEW_ARB_fragment_program_shadow,
+#endif
+#ifdef GL_ARB_fragment_shader
+ &__GLEW_ARB_fragment_shader,
+#endif
+#ifdef GL_ARB_fragment_shader_interlock
+ &__GLEW_ARB_fragment_shader_interlock,
+#endif
+#ifdef GL_ARB_framebuffer_no_attachments
+ &__GLEW_ARB_framebuffer_no_attachments,
+#endif
+#ifdef GL_ARB_framebuffer_object
+ &__GLEW_ARB_framebuffer_object,
+#endif
+#ifdef GL_ARB_framebuffer_sRGB
+ &__GLEW_ARB_framebuffer_sRGB,
+#endif
+#ifdef GL_ARB_geometry_shader4
+ &__GLEW_ARB_geometry_shader4,
+#endif
+#ifdef GL_ARB_get_program_binary
+ &__GLEW_ARB_get_program_binary,
+#endif
+#ifdef GL_ARB_get_texture_sub_image
+ &__GLEW_ARB_get_texture_sub_image,
+#endif
+#ifdef GL_ARB_gl_spirv
+ &__GLEW_ARB_gl_spirv,
+#endif
+#ifdef GL_ARB_gpu_shader5
+ &__GLEW_ARB_gpu_shader5,
+#endif
+#ifdef GL_ARB_gpu_shader_fp64
+ &__GLEW_ARB_gpu_shader_fp64,
+#endif
+#ifdef GL_ARB_gpu_shader_int64
+ &__GLEW_ARB_gpu_shader_int64,
+#endif
+#ifdef GL_ARB_half_float_pixel
+ &__GLEW_ARB_half_float_pixel,
+#endif
+#ifdef GL_ARB_half_float_vertex
+ &__GLEW_ARB_half_float_vertex,
+#endif
+#ifdef GL_ARB_imaging
+ &__GLEW_ARB_imaging,
+#endif
+#ifdef GL_ARB_indirect_parameters
+ &__GLEW_ARB_indirect_parameters,
+#endif
+#ifdef GL_ARB_instanced_arrays
+ &__GLEW_ARB_instanced_arrays,
+#endif
+#ifdef GL_ARB_internalformat_query
+ &__GLEW_ARB_internalformat_query,
+#endif
+#ifdef GL_ARB_internalformat_query2
+ &__GLEW_ARB_internalformat_query2,
+#endif
+#ifdef GL_ARB_invalidate_subdata
+ &__GLEW_ARB_invalidate_subdata,
+#endif
+#ifdef GL_ARB_map_buffer_alignment
+ &__GLEW_ARB_map_buffer_alignment,
+#endif
+#ifdef GL_ARB_map_buffer_range
+ &__GLEW_ARB_map_buffer_range,
+#endif
+#ifdef GL_ARB_matrix_palette
+ &__GLEW_ARB_matrix_palette,
+#endif
+#ifdef GL_ARB_multi_bind
+ &__GLEW_ARB_multi_bind,
+#endif
+#ifdef GL_ARB_multi_draw_indirect
+ &__GLEW_ARB_multi_draw_indirect,
+#endif
+#ifdef GL_ARB_multisample
+ &__GLEW_ARB_multisample,
+#endif
+#ifdef GL_ARB_multitexture
+ &__GLEW_ARB_multitexture,
+#endif
+#ifdef GL_ARB_occlusion_query
+ &__GLEW_ARB_occlusion_query,
+#endif
+#ifdef GL_ARB_occlusion_query2
+ &__GLEW_ARB_occlusion_query2,
+#endif
+#ifdef GL_ARB_parallel_shader_compile
+ &__GLEW_ARB_parallel_shader_compile,
+#endif
+#ifdef GL_ARB_pipeline_statistics_query
+ &__GLEW_ARB_pipeline_statistics_query,
+#endif
+#ifdef GL_ARB_pixel_buffer_object
+ &__GLEW_ARB_pixel_buffer_object,
+#endif
+#ifdef GL_ARB_point_parameters
+ &__GLEW_ARB_point_parameters,
+#endif
+#ifdef GL_ARB_point_sprite
+ &__GLEW_ARB_point_sprite,
+#endif
+#ifdef GL_ARB_polygon_offset_clamp
+ &__GLEW_ARB_polygon_offset_clamp,
+#endif
+#ifdef GL_ARB_post_depth_coverage
+ &__GLEW_ARB_post_depth_coverage,
+#endif
+#ifdef GL_ARB_program_interface_query
+ &__GLEW_ARB_program_interface_query,
+#endif
+#ifdef GL_ARB_provoking_vertex
+ &__GLEW_ARB_provoking_vertex,
+#endif
+#ifdef GL_ARB_query_buffer_object
+ &__GLEW_ARB_query_buffer_object,
+#endif
+#ifdef GL_ARB_robust_buffer_access_behavior
+ &__GLEW_ARB_robust_buffer_access_behavior,
+#endif
+#ifdef GL_ARB_robustness
+ &__GLEW_ARB_robustness,
+#endif
+#ifdef GL_ARB_robustness_application_isolation
+ &__GLEW_ARB_robustness_application_isolation,
+#endif
+#ifdef GL_ARB_robustness_share_group_isolation
+ &__GLEW_ARB_robustness_share_group_isolation,
+#endif
+#ifdef GL_ARB_sample_locations
+ &__GLEW_ARB_sample_locations,
+#endif
+#ifdef GL_ARB_sample_shading
+ &__GLEW_ARB_sample_shading,
+#endif
+#ifdef GL_ARB_sampler_objects
+ &__GLEW_ARB_sampler_objects,
+#endif
+#ifdef GL_ARB_seamless_cube_map
+ &__GLEW_ARB_seamless_cube_map,
+#endif
+#ifdef GL_ARB_seamless_cubemap_per_texture
+ &__GLEW_ARB_seamless_cubemap_per_texture,
+#endif
+#ifdef GL_ARB_separate_shader_objects
+ &__GLEW_ARB_separate_shader_objects,
+#endif
+#ifdef GL_ARB_shader_atomic_counter_ops
+ &__GLEW_ARB_shader_atomic_counter_ops,
+#endif
+#ifdef GL_ARB_shader_atomic_counters
+ &__GLEW_ARB_shader_atomic_counters,
+#endif
+#ifdef GL_ARB_shader_ballot
+ &__GLEW_ARB_shader_ballot,
+#endif
+#ifdef GL_ARB_shader_bit_encoding
+ &__GLEW_ARB_shader_bit_encoding,
+#endif
+#ifdef GL_ARB_shader_clock
+ &__GLEW_ARB_shader_clock,
+#endif
+#ifdef GL_ARB_shader_draw_parameters
+ &__GLEW_ARB_shader_draw_parameters,
+#endif
+#ifdef GL_ARB_shader_group_vote
+ &__GLEW_ARB_shader_group_vote,
+#endif
+#ifdef GL_ARB_shader_image_load_store
+ &__GLEW_ARB_shader_image_load_store,
+#endif
+#ifdef GL_ARB_shader_image_size
+ &__GLEW_ARB_shader_image_size,
+#endif
+#ifdef GL_ARB_shader_objects
+ &__GLEW_ARB_shader_objects,
+#endif
+#ifdef GL_ARB_shader_precision
+ &__GLEW_ARB_shader_precision,
+#endif
+#ifdef GL_ARB_shader_stencil_export
+ &__GLEW_ARB_shader_stencil_export,
+#endif
+#ifdef GL_ARB_shader_storage_buffer_object
+ &__GLEW_ARB_shader_storage_buffer_object,
+#endif
+#ifdef GL_ARB_shader_subroutine
+ &__GLEW_ARB_shader_subroutine,
+#endif
+#ifdef GL_ARB_shader_texture_image_samples
+ &__GLEW_ARB_shader_texture_image_samples,
+#endif
+#ifdef GL_ARB_shader_texture_lod
+ &__GLEW_ARB_shader_texture_lod,
+#endif
+#ifdef GL_ARB_shader_viewport_layer_array
+ &__GLEW_ARB_shader_viewport_layer_array,
+#endif
+#ifdef GL_ARB_shading_language_100
+ &__GLEW_ARB_shading_language_100,
+#endif
+#ifdef GL_ARB_shading_language_420pack
+ &__GLEW_ARB_shading_language_420pack,
+#endif
+#ifdef GL_ARB_shading_language_include
+ &__GLEW_ARB_shading_language_include,
+#endif
+#ifdef GL_ARB_shading_language_packing
+ &__GLEW_ARB_shading_language_packing,
+#endif
+#ifdef GL_ARB_shadow
+ &__GLEW_ARB_shadow,
+#endif
+#ifdef GL_ARB_shadow_ambient
+ &__GLEW_ARB_shadow_ambient,
+#endif
+#ifdef GL_ARB_sparse_buffer
+ &__GLEW_ARB_sparse_buffer,
+#endif
+#ifdef GL_ARB_sparse_texture
+ &__GLEW_ARB_sparse_texture,
+#endif
+#ifdef GL_ARB_sparse_texture2
+ &__GLEW_ARB_sparse_texture2,
+#endif
+#ifdef GL_ARB_sparse_texture_clamp
+ &__GLEW_ARB_sparse_texture_clamp,
+#endif
+#ifdef GL_ARB_spirv_extensions
+ &__GLEW_ARB_spirv_extensions,
+#endif
+#ifdef GL_ARB_stencil_texturing
+ &__GLEW_ARB_stencil_texturing,
+#endif
+#ifdef GL_ARB_sync
+ &__GLEW_ARB_sync,
+#endif
+#ifdef GL_ARB_tessellation_shader
+ &__GLEW_ARB_tessellation_shader,
+#endif
+#ifdef GL_ARB_texture_barrier
+ &__GLEW_ARB_texture_barrier,
+#endif
+#ifdef GL_ARB_texture_border_clamp
+ &__GLEW_ARB_texture_border_clamp,
+#endif
+#ifdef GL_ARB_texture_buffer_object
+ &__GLEW_ARB_texture_buffer_object,
+#endif
+#ifdef GL_ARB_texture_buffer_object_rgb32
+ &__GLEW_ARB_texture_buffer_object_rgb32,
+#endif
+#ifdef GL_ARB_texture_buffer_range
+ &__GLEW_ARB_texture_buffer_range,
+#endif
+#ifdef GL_ARB_texture_compression
+ &__GLEW_ARB_texture_compression,
+#endif
+#ifdef GL_ARB_texture_compression_bptc
+ &__GLEW_ARB_texture_compression_bptc,
+#endif
+#ifdef GL_ARB_texture_compression_rgtc
+ &__GLEW_ARB_texture_compression_rgtc,
+#endif
+#ifdef GL_ARB_texture_cube_map
+ &__GLEW_ARB_texture_cube_map,
+#endif
+#ifdef GL_ARB_texture_cube_map_array
+ &__GLEW_ARB_texture_cube_map_array,
+#endif
+#ifdef GL_ARB_texture_env_add
+ &__GLEW_ARB_texture_env_add,
+#endif
+#ifdef GL_ARB_texture_env_combine
+ &__GLEW_ARB_texture_env_combine,
+#endif
+#ifdef GL_ARB_texture_env_crossbar
+ &__GLEW_ARB_texture_env_crossbar,
+#endif
+#ifdef GL_ARB_texture_env_dot3
+ &__GLEW_ARB_texture_env_dot3,
+#endif
+#ifdef GL_ARB_texture_filter_anisotropic
+ &__GLEW_ARB_texture_filter_anisotropic,
+#endif
+#ifdef GL_ARB_texture_filter_minmax
+ &__GLEW_ARB_texture_filter_minmax,
+#endif
+#ifdef GL_ARB_texture_float
+ &__GLEW_ARB_texture_float,
+#endif
+#ifdef GL_ARB_texture_gather
+ &__GLEW_ARB_texture_gather,
+#endif
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+ &__GLEW_ARB_texture_mirror_clamp_to_edge,
+#endif
+#ifdef GL_ARB_texture_mirrored_repeat
+ &__GLEW_ARB_texture_mirrored_repeat,
+#endif
+#ifdef GL_ARB_texture_multisample
+ &__GLEW_ARB_texture_multisample,
+#endif
+#ifdef GL_ARB_texture_non_power_of_two
+ &__GLEW_ARB_texture_non_power_of_two,
+#endif
+#ifdef GL_ARB_texture_query_levels
+ &__GLEW_ARB_texture_query_levels,
+#endif
+#ifdef GL_ARB_texture_query_lod
+ &__GLEW_ARB_texture_query_lod,
+#endif
+#ifdef GL_ARB_texture_rectangle
+ &__GLEW_ARB_texture_rectangle,
+#endif
+#ifdef GL_ARB_texture_rg
+ &__GLEW_ARB_texture_rg,
+#endif
+#ifdef GL_ARB_texture_rgb10_a2ui
+ &__GLEW_ARB_texture_rgb10_a2ui,
+#endif
+#ifdef GL_ARB_texture_stencil8
+ &__GLEW_ARB_texture_stencil8,
+#endif
+#ifdef GL_ARB_texture_storage
+ &__GLEW_ARB_texture_storage,
+#endif
+#ifdef GL_ARB_texture_storage_multisample
+ &__GLEW_ARB_texture_storage_multisample,
+#endif
+#ifdef GL_ARB_texture_swizzle
+ &__GLEW_ARB_texture_swizzle,
+#endif
+#ifdef GL_ARB_texture_view
+ &__GLEW_ARB_texture_view,
+#endif
+#ifdef GL_ARB_timer_query
+ &__GLEW_ARB_timer_query,
+#endif
+#ifdef GL_ARB_transform_feedback2
+ &__GLEW_ARB_transform_feedback2,
+#endif
+#ifdef GL_ARB_transform_feedback3
+ &__GLEW_ARB_transform_feedback3,
+#endif
+#ifdef GL_ARB_transform_feedback_instanced
+ &__GLEW_ARB_transform_feedback_instanced,
+#endif
+#ifdef GL_ARB_transform_feedback_overflow_query
+ &__GLEW_ARB_transform_feedback_overflow_query,
+#endif
+#ifdef GL_ARB_transpose_matrix
+ &__GLEW_ARB_transpose_matrix,
+#endif
+#ifdef GL_ARB_uniform_buffer_object
+ &__GLEW_ARB_uniform_buffer_object,
+#endif
+#ifdef GL_ARB_vertex_array_bgra
+ &__GLEW_ARB_vertex_array_bgra,
+#endif
+#ifdef GL_ARB_vertex_array_object
+ &__GLEW_ARB_vertex_array_object,
+#endif
+#ifdef GL_ARB_vertex_attrib_64bit
+ &__GLEW_ARB_vertex_attrib_64bit,
+#endif
+#ifdef GL_ARB_vertex_attrib_binding
+ &__GLEW_ARB_vertex_attrib_binding,
+#endif
+#ifdef GL_ARB_vertex_blend
+ &__GLEW_ARB_vertex_blend,
+#endif
+#ifdef GL_ARB_vertex_buffer_object
+ &__GLEW_ARB_vertex_buffer_object,
+#endif
+#ifdef GL_ARB_vertex_program
+ &__GLEW_ARB_vertex_program,
+#endif
+#ifdef GL_ARB_vertex_shader
+ &__GLEW_ARB_vertex_shader,
+#endif
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+ &__GLEW_ARB_vertex_type_10f_11f_11f_rev,
+#endif
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ &__GLEW_ARB_vertex_type_2_10_10_10_rev,
+#endif
+#ifdef GL_ARB_viewport_array
+ &__GLEW_ARB_viewport_array,
+#endif
+#ifdef GL_ARB_window_pos
+ &__GLEW_ARB_window_pos,
+#endif
+#ifdef GL_ARM_mali_program_binary
+ &__GLEW_ARM_mali_program_binary,
+#endif
+#ifdef GL_ARM_mali_shader_binary
+ &__GLEW_ARM_mali_shader_binary,
+#endif
+#ifdef GL_ARM_rgba8
+ &__GLEW_ARM_rgba8,
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch
+ &__GLEW_ARM_shader_framebuffer_fetch,
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+ &__GLEW_ARM_shader_framebuffer_fetch_depth_stencil,
+#endif
+#ifdef GL_ARM_texture_unnormalized_coordinates
+ &__GLEW_ARM_texture_unnormalized_coordinates,
+#endif
+#ifdef GL_ATIX_point_sprites
+ &__GLEW_ATIX_point_sprites,
+#endif
+#ifdef GL_ATIX_texture_env_combine3
+ &__GLEW_ATIX_texture_env_combine3,
+#endif
+#ifdef GL_ATIX_texture_env_route
+ &__GLEW_ATIX_texture_env_route,
+#endif
+#ifdef GL_ATIX_vertex_shader_output_point_size
+ &__GLEW_ATIX_vertex_shader_output_point_size,
+#endif
+#ifdef GL_ATI_draw_buffers
+ &__GLEW_ATI_draw_buffers,
+#endif
+#ifdef GL_ATI_element_array
+ &__GLEW_ATI_element_array,
+#endif
+#ifdef GL_ATI_envmap_bumpmap
+ &__GLEW_ATI_envmap_bumpmap,
+#endif
+#ifdef GL_ATI_fragment_shader
+ &__GLEW_ATI_fragment_shader,
+#endif
+#ifdef GL_ATI_map_object_buffer
+ &__GLEW_ATI_map_object_buffer,
+#endif
+#ifdef GL_ATI_meminfo
+ &__GLEW_ATI_meminfo,
+#endif
+#ifdef GL_ATI_pn_triangles
+ &__GLEW_ATI_pn_triangles,
+#endif
+#ifdef GL_ATI_separate_stencil
+ &__GLEW_ATI_separate_stencil,
+#endif
+#ifdef GL_ATI_shader_texture_lod
+ &__GLEW_ATI_shader_texture_lod,
+#endif
+#ifdef GL_ATI_text_fragment_shader
+ &__GLEW_ATI_text_fragment_shader,
+#endif
+#ifdef GL_ATI_texture_compression_3dc
+ &__GLEW_ATI_texture_compression_3dc,
+#endif
+#ifdef GL_ATI_texture_env_combine3
+ &__GLEW_ATI_texture_env_combine3,
+#endif
+#ifdef GL_ATI_texture_float
+ &__GLEW_ATI_texture_float,
+#endif
+#ifdef GL_ATI_texture_mirror_once
+ &__GLEW_ATI_texture_mirror_once,
+#endif
+#ifdef GL_ATI_vertex_array_object
+ &__GLEW_ATI_vertex_array_object,
+#endif
+#ifdef GL_ATI_vertex_attrib_array_object
+ &__GLEW_ATI_vertex_attrib_array_object,
+#endif
+#ifdef GL_ATI_vertex_streams
+ &__GLEW_ATI_vertex_streams,
+#endif
+#ifdef GL_DMP_program_binary
+ &__GLEW_DMP_program_binary,
+#endif
+#ifdef GL_DMP_shader_binary
+ &__GLEW_DMP_shader_binary,
+#endif
+#ifdef GL_EXT_422_pixels
+ &__GLEW_EXT_422_pixels,
+#endif
+#ifdef GL_EXT_Cg_shader
+ &__GLEW_EXT_Cg_shader,
+#endif
+#ifdef GL_EXT_EGL_image_array
+ &__GLEW_EXT_EGL_image_array,
+#endif
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+ &__GLEW_EXT_EGL_image_external_wrap_modes,
+#endif
+#ifdef GL_EXT_EGL_image_storage
+ &__GLEW_EXT_EGL_image_storage,
+#endif
+#ifdef GL_EXT_EGL_image_storage_compression
+ &__GLEW_EXT_EGL_image_storage_compression,
+#endif
+#ifdef GL_EXT_EGL_sync
+ &__GLEW_EXT_EGL_sync,
+#endif
+#ifdef GL_EXT_YUV_target
+ &__GLEW_EXT_YUV_target,
+#endif
+#ifdef GL_EXT_abgr
+ &__GLEW_EXT_abgr,
+#endif
+#ifdef GL_EXT_base_instance
+ &__GLEW_EXT_base_instance,
+#endif
+#ifdef GL_EXT_bgra
+ &__GLEW_EXT_bgra,
+#endif
+#ifdef GL_EXT_bindable_uniform
+ &__GLEW_EXT_bindable_uniform,
+#endif
+#ifdef GL_EXT_blend_color
+ &__GLEW_EXT_blend_color,
+#endif
+#ifdef GL_EXT_blend_equation_separate
+ &__GLEW_EXT_blend_equation_separate,
+#endif
+#ifdef GL_EXT_blend_func_extended
+ &__GLEW_EXT_blend_func_extended,
+#endif
+#ifdef GL_EXT_blend_func_separate
+ &__GLEW_EXT_blend_func_separate,
+#endif
+#ifdef GL_EXT_blend_logic_op
+ &__GLEW_EXT_blend_logic_op,
+#endif
+#ifdef GL_EXT_blend_minmax
+ &__GLEW_EXT_blend_minmax,
+#endif
+#ifdef GL_EXT_blend_subtract
+ &__GLEW_EXT_blend_subtract,
+#endif
+#ifdef GL_EXT_buffer_storage
+ &__GLEW_EXT_buffer_storage,
+#endif
+#ifdef GL_EXT_clear_texture
+ &__GLEW_EXT_clear_texture,
+#endif
+#ifdef GL_EXT_clip_control
+ &__GLEW_EXT_clip_control,
+#endif
+#ifdef GL_EXT_clip_cull_distance
+ &__GLEW_EXT_clip_cull_distance,
+#endif
+#ifdef GL_EXT_clip_volume_hint
+ &__GLEW_EXT_clip_volume_hint,
+#endif
+#ifdef GL_EXT_cmyka
+ &__GLEW_EXT_cmyka,
+#endif
+#ifdef GL_EXT_color_buffer_float
+ &__GLEW_EXT_color_buffer_float,
+#endif
+#ifdef GL_EXT_color_buffer_half_float
+ &__GLEW_EXT_color_buffer_half_float,
+#endif
+#ifdef GL_EXT_color_subtable
+ &__GLEW_EXT_color_subtable,
+#endif
+#ifdef GL_EXT_compiled_vertex_array
+ &__GLEW_EXT_compiled_vertex_array,
+#endif
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+ &__GLEW_EXT_compressed_ETC1_RGB8_sub_texture,
+#endif
+#ifdef GL_EXT_conservative_depth
+ &__GLEW_EXT_conservative_depth,
+#endif
+#ifdef GL_EXT_convolution
+ &__GLEW_EXT_convolution,
+#endif
+#ifdef GL_EXT_coordinate_frame
+ &__GLEW_EXT_coordinate_frame,
+#endif
+#ifdef GL_EXT_copy_image
+ &__GLEW_EXT_copy_image,
+#endif
+#ifdef GL_EXT_copy_texture
+ &__GLEW_EXT_copy_texture,
+#endif
+#ifdef GL_EXT_cull_vertex
+ &__GLEW_EXT_cull_vertex,
+#endif
+#ifdef GL_EXT_debug_label
+ &__GLEW_EXT_debug_label,
+#endif
+#ifdef GL_EXT_debug_marker
+ &__GLEW_EXT_debug_marker,
+#endif
+#ifdef GL_EXT_depth_bounds_test
+ &__GLEW_EXT_depth_bounds_test,
+#endif
+#ifdef GL_EXT_depth_clamp
+ &__GLEW_EXT_depth_clamp,
+#endif
+#ifdef GL_EXT_direct_state_access
+ &__GLEW_EXT_direct_state_access,
+#endif
+#ifdef GL_EXT_discard_framebuffer
+ &__GLEW_EXT_discard_framebuffer,
+#endif
+#ifdef GL_EXT_disjoint_timer_query
+ &__GLEW_EXT_disjoint_timer_query,
+#endif
+#ifdef GL_EXT_draw_buffers
+ &__GLEW_EXT_draw_buffers,
+#endif
+#ifdef GL_EXT_draw_buffers2
+ &__GLEW_EXT_draw_buffers2,
+#endif
+#ifdef GL_EXT_draw_buffers_indexed
+ &__GLEW_EXT_draw_buffers_indexed,
+#endif
+#ifdef GL_EXT_draw_elements_base_vertex
+ &__GLEW_EXT_draw_elements_base_vertex,
+#endif
+#ifdef GL_EXT_draw_instanced
+ &__GLEW_EXT_draw_instanced,
+#endif
+#ifdef GL_EXT_draw_range_elements
+ &__GLEW_EXT_draw_range_elements,
+#endif
+#ifdef GL_EXT_draw_transform_feedback
+ &__GLEW_EXT_draw_transform_feedback,
+#endif
+#ifdef GL_EXT_external_buffer
+ &__GLEW_EXT_external_buffer,
+#endif
+#ifdef GL_EXT_float_blend
+ &__GLEW_EXT_float_blend,
+#endif
+#ifdef GL_EXT_fog_coord
+ &__GLEW_EXT_fog_coord,
+#endif
+#ifdef GL_EXT_frag_depth
+ &__GLEW_EXT_frag_depth,
+#endif
+#ifdef GL_EXT_fragment_lighting
+ &__GLEW_EXT_fragment_lighting,
+#endif
+#ifdef GL_EXT_framebuffer_blit
+ &__GLEW_EXT_framebuffer_blit,
+#endif
+#ifdef GL_EXT_framebuffer_multisample
+ &__GLEW_EXT_framebuffer_multisample,
+#endif
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+ &__GLEW_EXT_framebuffer_multisample_blit_scaled,
+#endif
+#ifdef GL_EXT_framebuffer_object
+ &__GLEW_EXT_framebuffer_object,
+#endif
+#ifdef GL_EXT_framebuffer_sRGB
+ &__GLEW_EXT_framebuffer_sRGB,
+#endif
+#ifdef GL_EXT_geometry_point_size
+ &__GLEW_EXT_geometry_point_size,
+#endif
+#ifdef GL_EXT_geometry_shader
+ &__GLEW_EXT_geometry_shader,
+#endif
+#ifdef GL_EXT_geometry_shader4
+ &__GLEW_EXT_geometry_shader4,
+#endif
+#ifdef GL_EXT_gpu_program_parameters
+ &__GLEW_EXT_gpu_program_parameters,
+#endif
+#ifdef GL_EXT_gpu_shader4
+ &__GLEW_EXT_gpu_shader4,
+#endif
+#ifdef GL_EXT_gpu_shader5
+ &__GLEW_EXT_gpu_shader5,
+#endif
+#ifdef GL_EXT_histogram
+ &__GLEW_EXT_histogram,
+#endif
+#ifdef GL_EXT_index_array_formats
+ &__GLEW_EXT_index_array_formats,
+#endif
+#ifdef GL_EXT_index_func
+ &__GLEW_EXT_index_func,
+#endif
+#ifdef GL_EXT_index_material
+ &__GLEW_EXT_index_material,
+#endif
+#ifdef GL_EXT_index_texture
+ &__GLEW_EXT_index_texture,
+#endif
+#ifdef GL_EXT_instanced_arrays
+ &__GLEW_EXT_instanced_arrays,
+#endif
+#ifdef GL_EXT_light_texture
+ &__GLEW_EXT_light_texture,
+#endif
+#ifdef GL_EXT_map_buffer_range
+ &__GLEW_EXT_map_buffer_range,
+#endif
+#ifdef GL_EXT_memory_object
+ &__GLEW_EXT_memory_object,
+#endif
+#ifdef GL_EXT_memory_object_fd
+ &__GLEW_EXT_memory_object_fd,
+#endif
+#ifdef GL_EXT_memory_object_win32
+ &__GLEW_EXT_memory_object_win32,
+#endif
+#ifdef GL_EXT_misc_attribute
+ &__GLEW_EXT_misc_attribute,
+#endif
+#ifdef GL_EXT_multi_draw_arrays
+ &__GLEW_EXT_multi_draw_arrays,
+#endif
+#ifdef GL_EXT_multi_draw_indirect
+ &__GLEW_EXT_multi_draw_indirect,
+#endif
+#ifdef GL_EXT_multiple_textures
+ &__GLEW_EXT_multiple_textures,
+#endif
+#ifdef GL_EXT_multisample
+ &__GLEW_EXT_multisample,
+#endif
+#ifdef GL_EXT_multisample_compatibility
+ &__GLEW_EXT_multisample_compatibility,
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture
+ &__GLEW_EXT_multisampled_render_to_texture,
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture2
+ &__GLEW_EXT_multisampled_render_to_texture2,
+#endif
+#ifdef GL_EXT_multiview_draw_buffers
+ &__GLEW_EXT_multiview_draw_buffers,
+#endif
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+ &__GLEW_EXT_multiview_tessellation_geometry_shader,
+#endif
+#ifdef GL_EXT_multiview_texture_multisample
+ &__GLEW_EXT_multiview_texture_multisample,
+#endif
+#ifdef GL_EXT_multiview_timer_query
+ &__GLEW_EXT_multiview_timer_query,
+#endif
+#ifdef GL_EXT_occlusion_query_boolean
+ &__GLEW_EXT_occlusion_query_boolean,
+#endif
+#ifdef GL_EXT_packed_depth_stencil
+ &__GLEW_EXT_packed_depth_stencil,
+#endif
+#ifdef GL_EXT_packed_float
+ &__GLEW_EXT_packed_float,
+#endif
+#ifdef GL_EXT_packed_pixels
+ &__GLEW_EXT_packed_pixels,
+#endif
+#ifdef GL_EXT_paletted_texture
+ &__GLEW_EXT_paletted_texture,
+#endif
+#ifdef GL_EXT_pixel_buffer_object
+ &__GLEW_EXT_pixel_buffer_object,
+#endif
+#ifdef GL_EXT_pixel_transform
+ &__GLEW_EXT_pixel_transform,
+#endif
+#ifdef GL_EXT_pixel_transform_color_table
+ &__GLEW_EXT_pixel_transform_color_table,
+#endif
+#ifdef GL_EXT_point_parameters
+ &__GLEW_EXT_point_parameters,
+#endif
+#ifdef GL_EXT_polygon_offset
+ &__GLEW_EXT_polygon_offset,
+#endif
+#ifdef GL_EXT_polygon_offset_clamp
+ &__GLEW_EXT_polygon_offset_clamp,
+#endif
+#ifdef GL_EXT_post_depth_coverage
+ &__GLEW_EXT_post_depth_coverage,
+#endif
+#ifdef GL_EXT_primitive_bounding_box
+ &__GLEW_EXT_primitive_bounding_box,
+#endif
+#ifdef GL_EXT_protected_textures
+ &__GLEW_EXT_protected_textures,
+#endif
+#ifdef GL_EXT_provoking_vertex
+ &__GLEW_EXT_provoking_vertex,
+#endif
+#ifdef GL_EXT_pvrtc_sRGB
+ &__GLEW_EXT_pvrtc_sRGB,
+#endif
+#ifdef GL_EXT_raster_multisample
+ &__GLEW_EXT_raster_multisample,
+#endif
+#ifdef GL_EXT_read_format_bgra
+ &__GLEW_EXT_read_format_bgra,
+#endif
+#ifdef GL_EXT_render_snorm
+ &__GLEW_EXT_render_snorm,
+#endif
+#ifdef GL_EXT_rescale_normal
+ &__GLEW_EXT_rescale_normal,
+#endif
+#ifdef GL_EXT_robustness
+ &__GLEW_EXT_robustness,
+#endif
+#ifdef GL_EXT_sRGB
+ &__GLEW_EXT_sRGB,
+#endif
+#ifdef GL_EXT_sRGB_write_control
+ &__GLEW_EXT_sRGB_write_control,
+#endif
+#ifdef GL_EXT_scene_marker
+ &__GLEW_EXT_scene_marker,
+#endif
+#ifdef GL_EXT_secondary_color
+ &__GLEW_EXT_secondary_color,
+#endif
+#ifdef GL_EXT_semaphore
+ &__GLEW_EXT_semaphore,
+#endif
+#ifdef GL_EXT_semaphore_fd
+ &__GLEW_EXT_semaphore_fd,
+#endif
+#ifdef GL_EXT_semaphore_win32
+ &__GLEW_EXT_semaphore_win32,
+#endif
+#ifdef GL_EXT_separate_depth_stencil
+ &__GLEW_EXT_separate_depth_stencil,
+#endif
+#ifdef GL_EXT_separate_shader_objects
+ &__GLEW_EXT_separate_shader_objects,
+#endif
+#ifdef GL_EXT_separate_specular_color
+ &__GLEW_EXT_separate_specular_color,
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch
+ &__GLEW_EXT_shader_framebuffer_fetch,
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+ &__GLEW_EXT_shader_framebuffer_fetch_non_coherent,
+#endif
+#ifdef GL_EXT_shader_group_vote
+ &__GLEW_EXT_shader_group_vote,
+#endif
+#ifdef GL_EXT_shader_image_load_formatted
+ &__GLEW_EXT_shader_image_load_formatted,
+#endif
+#ifdef GL_EXT_shader_image_load_store
+ &__GLEW_EXT_shader_image_load_store,
+#endif
+#ifdef GL_EXT_shader_implicit_conversions
+ &__GLEW_EXT_shader_implicit_conversions,
+#endif
+#ifdef GL_EXT_shader_integer_mix
+ &__GLEW_EXT_shader_integer_mix,
+#endif
+#ifdef GL_EXT_shader_io_blocks
+ &__GLEW_EXT_shader_io_blocks,
+#endif
+#ifdef GL_EXT_shader_non_constant_global_initializers
+ &__GLEW_EXT_shader_non_constant_global_initializers,
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage
+ &__GLEW_EXT_shader_pixel_local_storage,
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage2
+ &__GLEW_EXT_shader_pixel_local_storage2,
+#endif
+#ifdef GL_EXT_shader_samples_identical
+ &__GLEW_EXT_shader_samples_identical,
+#endif
+#ifdef GL_EXT_shader_texture_lod
+ &__GLEW_EXT_shader_texture_lod,
+#endif
+#ifdef GL_EXT_shadow_funcs
+ &__GLEW_EXT_shadow_funcs,
+#endif
+#ifdef GL_EXT_shadow_samplers
+ &__GLEW_EXT_shadow_samplers,
+#endif
+#ifdef GL_EXT_shared_texture_palette
+ &__GLEW_EXT_shared_texture_palette,
+#endif
+#ifdef GL_EXT_sparse_texture
+ &__GLEW_EXT_sparse_texture,
+#endif
+#ifdef GL_EXT_sparse_texture2
+ &__GLEW_EXT_sparse_texture2,
+#endif
+#ifdef GL_EXT_static_vertex_array
+ &__GLEW_EXT_static_vertex_array,
+#endif
+#ifdef GL_EXT_stencil_clear_tag
+ &__GLEW_EXT_stencil_clear_tag,
+#endif
+#ifdef GL_EXT_stencil_two_side
+ &__GLEW_EXT_stencil_two_side,
+#endif
+#ifdef GL_EXT_stencil_wrap
+ &__GLEW_EXT_stencil_wrap,
+#endif
+#ifdef GL_EXT_subtexture
+ &__GLEW_EXT_subtexture,
+#endif
+#ifdef GL_EXT_tessellation_point_size
+ &__GLEW_EXT_tessellation_point_size,
+#endif
+#ifdef GL_EXT_tessellation_shader
+ &__GLEW_EXT_tessellation_shader,
+#endif
+#ifdef GL_EXT_texture
+ &__GLEW_EXT_texture,
+#endif
+#ifdef GL_EXT_texture3D
+ &__GLEW_EXT_texture3D,
+#endif
+#ifdef GL_EXT_texture_array
+ &__GLEW_EXT_texture_array,
+#endif
+#ifdef GL_EXT_texture_border_clamp
+ &__GLEW_EXT_texture_border_clamp,
+#endif
+#ifdef GL_EXT_texture_buffer
+ &__GLEW_EXT_texture_buffer,
+#endif
+#ifdef GL_EXT_texture_buffer_object
+ &__GLEW_EXT_texture_buffer_object,
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+ &__GLEW_EXT_texture_compression_astc_decode_mode,
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+ &__GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5,
+#endif
+#ifdef GL_EXT_texture_compression_bptc
+ &__GLEW_EXT_texture_compression_bptc,
+#endif
+#ifdef GL_EXT_texture_compression_dxt1
+ &__GLEW_EXT_texture_compression_dxt1,
+#endif
+#ifdef GL_EXT_texture_compression_latc
+ &__GLEW_EXT_texture_compression_latc,
+#endif
+#ifdef GL_EXT_texture_compression_rgtc
+ &__GLEW_EXT_texture_compression_rgtc,
+#endif
+#ifdef GL_EXT_texture_compression_s3tc
+ &__GLEW_EXT_texture_compression_s3tc,
+#endif
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+ &__GLEW_EXT_texture_compression_s3tc_srgb,
+#endif
+#ifdef GL_EXT_texture_cube_map
+ &__GLEW_EXT_texture_cube_map,
+#endif
+#ifdef GL_EXT_texture_cube_map_array
+ &__GLEW_EXT_texture_cube_map_array,
+#endif
+#ifdef GL_EXT_texture_edge_clamp
+ &__GLEW_EXT_texture_edge_clamp,
+#endif
+#ifdef GL_EXT_texture_env
+ &__GLEW_EXT_texture_env,
+#endif
+#ifdef GL_EXT_texture_env_add
+ &__GLEW_EXT_texture_env_add,
+#endif
+#ifdef GL_EXT_texture_env_combine
+ &__GLEW_EXT_texture_env_combine,
+#endif
+#ifdef GL_EXT_texture_env_dot3
+ &__GLEW_EXT_texture_env_dot3,
+#endif
+#ifdef GL_EXT_texture_filter_anisotropic
+ &__GLEW_EXT_texture_filter_anisotropic,
+#endif
+#ifdef GL_EXT_texture_filter_minmax
+ &__GLEW_EXT_texture_filter_minmax,
+#endif
+#ifdef GL_EXT_texture_format_BGRA8888
+ &__GLEW_EXT_texture_format_BGRA8888,
+#endif
+#ifdef GL_EXT_texture_format_sRGB_override
+ &__GLEW_EXT_texture_format_sRGB_override,
+#endif
+#ifdef GL_EXT_texture_integer
+ &__GLEW_EXT_texture_integer,
+#endif
+#ifdef GL_EXT_texture_lod_bias
+ &__GLEW_EXT_texture_lod_bias,
+#endif
+#ifdef GL_EXT_texture_mirror_clamp
+ &__GLEW_EXT_texture_mirror_clamp,
+#endif
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+ &__GLEW_EXT_texture_mirror_clamp_to_edge,
+#endif
+#ifdef GL_EXT_texture_norm16
+ &__GLEW_EXT_texture_norm16,
+#endif
+#ifdef GL_EXT_texture_object
+ &__GLEW_EXT_texture_object,
+#endif
+#ifdef GL_EXT_texture_perturb_normal
+ &__GLEW_EXT_texture_perturb_normal,
+#endif
+#ifdef GL_EXT_texture_query_lod
+ &__GLEW_EXT_texture_query_lod,
+#endif
+#ifdef GL_EXT_texture_rectangle
+ &__GLEW_EXT_texture_rectangle,
+#endif
+#ifdef GL_EXT_texture_rg
+ &__GLEW_EXT_texture_rg,
+#endif
+#ifdef GL_EXT_texture_sRGB
+ &__GLEW_EXT_texture_sRGB,
+#endif
+#ifdef GL_EXT_texture_sRGB_R8
+ &__GLEW_EXT_texture_sRGB_R8,
+#endif
+#ifdef GL_EXT_texture_sRGB_RG8
+ &__GLEW_EXT_texture_sRGB_RG8,
+#endif
+#ifdef GL_EXT_texture_sRGB_decode
+ &__GLEW_EXT_texture_sRGB_decode,
+#endif
+#ifdef GL_EXT_texture_shadow_lod
+ &__GLEW_EXT_texture_shadow_lod,
+#endif
+#ifdef GL_EXT_texture_shared_exponent
+ &__GLEW_EXT_texture_shared_exponent,
+#endif
+#ifdef GL_EXT_texture_snorm
+ &__GLEW_EXT_texture_snorm,
+#endif
+#ifdef GL_EXT_texture_storage
+ &__GLEW_EXT_texture_storage,
+#endif
+#ifdef GL_EXT_texture_storage_compression
+ &__GLEW_EXT_texture_storage_compression,
+#endif
+#ifdef GL_EXT_texture_swizzle
+ &__GLEW_EXT_texture_swizzle,
+#endif
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+ &__GLEW_EXT_texture_type_2_10_10_10_REV,
+#endif
+#ifdef GL_EXT_texture_view
+ &__GLEW_EXT_texture_view,
+#endif
+#ifdef GL_EXT_timer_query
+ &__GLEW_EXT_timer_query,
+#endif
+#ifdef GL_EXT_transform_feedback
+ &__GLEW_EXT_transform_feedback,
+#endif
+#ifdef GL_EXT_unpack_subimage
+ &__GLEW_EXT_unpack_subimage,
+#endif
+#ifdef GL_EXT_vertex_array
+ &__GLEW_EXT_vertex_array,
+#endif
+#ifdef GL_EXT_vertex_array_bgra
+ &__GLEW_EXT_vertex_array_bgra,
+#endif
+#ifdef GL_EXT_vertex_array_setXXX
+ &__GLEW_EXT_vertex_array_setXXX,
+#endif
+#ifdef GL_EXT_vertex_attrib_64bit
+ &__GLEW_EXT_vertex_attrib_64bit,
+#endif
+#ifdef GL_EXT_vertex_shader
+ &__GLEW_EXT_vertex_shader,
+#endif
+#ifdef GL_EXT_vertex_weighting
+ &__GLEW_EXT_vertex_weighting,
+#endif
+#ifdef GL_EXT_win32_keyed_mutex
+ &__GLEW_EXT_win32_keyed_mutex,
+#endif
+#ifdef GL_EXT_window_rectangles
+ &__GLEW_EXT_window_rectangles,
+#endif
+#ifdef GL_EXT_x11_sync_object
+ &__GLEW_EXT_x11_sync_object,
+#endif
+#ifdef GL_FJ_shader_binary_GCCSO
+ &__GLEW_FJ_shader_binary_GCCSO,
+#endif
+#ifdef GL_GREMEDY_frame_terminator
+ &__GLEW_GREMEDY_frame_terminator,
+#endif
+#ifdef GL_GREMEDY_string_marker
+ &__GLEW_GREMEDY_string_marker,
+#endif
+#ifdef GL_HP_convolution_border_modes
+ &__GLEW_HP_convolution_border_modes,
+#endif
+#ifdef GL_HP_image_transform
+ &__GLEW_HP_image_transform,
+#endif
+#ifdef GL_HP_occlusion_test
+ &__GLEW_HP_occlusion_test,
+#endif
+#ifdef GL_HP_texture_lighting
+ &__GLEW_HP_texture_lighting,
+#endif
+#ifdef GL_IBM_cull_vertex
+ &__GLEW_IBM_cull_vertex,
+#endif
+#ifdef GL_IBM_multimode_draw_arrays
+ &__GLEW_IBM_multimode_draw_arrays,
+#endif
+#ifdef GL_IBM_rasterpos_clip
+ &__GLEW_IBM_rasterpos_clip,
+#endif
+#ifdef GL_IBM_static_data
+ &__GLEW_IBM_static_data,
+#endif
+#ifdef GL_IBM_texture_mirrored_repeat
+ &__GLEW_IBM_texture_mirrored_repeat,
+#endif
+#ifdef GL_IBM_vertex_array_lists
+ &__GLEW_IBM_vertex_array_lists,
+#endif
+#ifdef GL_IMG_bindless_texture
+ &__GLEW_IMG_bindless_texture,
+#endif
+#ifdef GL_IMG_framebuffer_downsample
+ &__GLEW_IMG_framebuffer_downsample,
+#endif
+#ifdef GL_IMG_multisampled_render_to_texture
+ &__GLEW_IMG_multisampled_render_to_texture,
+#endif
+#ifdef GL_IMG_program_binary
+ &__GLEW_IMG_program_binary,
+#endif
+#ifdef GL_IMG_read_format
+ &__GLEW_IMG_read_format,
+#endif
+#ifdef GL_IMG_shader_binary
+ &__GLEW_IMG_shader_binary,
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc
+ &__GLEW_IMG_texture_compression_pvrtc,
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc2
+ &__GLEW_IMG_texture_compression_pvrtc2,
+#endif
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+ &__GLEW_IMG_texture_env_enhanced_fixed_function,
+#endif
+#ifdef GL_IMG_texture_filter_cubic
+ &__GLEW_IMG_texture_filter_cubic,
+#endif
+#ifdef GL_IMG_tile_region_protection
+ &__GLEW_IMG_tile_region_protection,
+#endif
+#ifdef GL_INGR_color_clamp
+ &__GLEW_INGR_color_clamp,
+#endif
+#ifdef GL_INGR_interlace_read
+ &__GLEW_INGR_interlace_read,
+#endif
+#ifdef GL_INTEL_blackhole_render
+ &__GLEW_INTEL_blackhole_render,
+#endif
+#ifdef GL_INTEL_conservative_rasterization
+ &__GLEW_INTEL_conservative_rasterization,
+#endif
+#ifdef GL_INTEL_fragment_shader_ordering
+ &__GLEW_INTEL_fragment_shader_ordering,
+#endif
+#ifdef GL_INTEL_framebuffer_CMAA
+ &__GLEW_INTEL_framebuffer_CMAA,
+#endif
+#ifdef GL_INTEL_map_texture
+ &__GLEW_INTEL_map_texture,
+#endif
+#ifdef GL_INTEL_parallel_arrays
+ &__GLEW_INTEL_parallel_arrays,
+#endif
+#ifdef GL_INTEL_performance_query
+ &__GLEW_INTEL_performance_query,
+#endif
+#ifdef GL_INTEL_shader_integer_functions2
+ &__GLEW_INTEL_shader_integer_functions2,
+#endif
+#ifdef GL_INTEL_texture_scissor
+ &__GLEW_INTEL_texture_scissor,
+#endif
+#ifdef GL_KHR_blend_equation_advanced
+ &__GLEW_KHR_blend_equation_advanced,
+#endif
+#ifdef GL_KHR_blend_equation_advanced_coherent
+ &__GLEW_KHR_blend_equation_advanced_coherent,
+#endif
+#ifdef GL_KHR_context_flush_control
+ &__GLEW_KHR_context_flush_control,
+#endif
+#ifdef GL_KHR_debug
+ &__GLEW_KHR_debug,
+#endif
+#ifdef GL_KHR_no_error
+ &__GLEW_KHR_no_error,
+#endif
+#ifdef GL_KHR_parallel_shader_compile
+ &__GLEW_KHR_parallel_shader_compile,
+#endif
+#ifdef GL_KHR_robust_buffer_access_behavior
+ &__GLEW_KHR_robust_buffer_access_behavior,
+#endif
+#ifdef GL_KHR_robustness
+ &__GLEW_KHR_robustness,
+#endif
+#ifdef GL_KHR_shader_subgroup
+ &__GLEW_KHR_shader_subgroup,
+#endif
+#ifdef GL_KHR_texture_compression_astc_hdr
+ &__GLEW_KHR_texture_compression_astc_hdr,
+#endif
+#ifdef GL_KHR_texture_compression_astc_ldr
+ &__GLEW_KHR_texture_compression_astc_ldr,
+#endif
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+ &__GLEW_KHR_texture_compression_astc_sliced_3d,
+#endif
+#ifdef GL_KTX_buffer_region
+ &__GLEW_KTX_buffer_region,
+#endif
+#ifdef GL_MESAX_texture_stack
+ &__GLEW_MESAX_texture_stack,
+#endif
+#ifdef GL_MESA_bgra
+ &__GLEW_MESA_bgra,
+#endif
+#ifdef GL_MESA_framebuffer_flip_x
+ &__GLEW_MESA_framebuffer_flip_x,
+#endif
+#ifdef GL_MESA_framebuffer_flip_y
+ &__GLEW_MESA_framebuffer_flip_y,
+#endif
+#ifdef GL_MESA_framebuffer_swap_xy
+ &__GLEW_MESA_framebuffer_swap_xy,
+#endif
+#ifdef GL_MESA_pack_invert
+ &__GLEW_MESA_pack_invert,
+#endif
+#ifdef GL_MESA_program_binary_formats
+ &__GLEW_MESA_program_binary_formats,
+#endif
+#ifdef GL_MESA_resize_buffers
+ &__GLEW_MESA_resize_buffers,
+#endif
+#ifdef GL_MESA_shader_integer_functions
+ &__GLEW_MESA_shader_integer_functions,
+#endif
+#ifdef GL_MESA_tile_raster_order
+ &__GLEW_MESA_tile_raster_order,
+#endif
+#ifdef GL_MESA_window_pos
+ &__GLEW_MESA_window_pos,
+#endif
+#ifdef GL_MESA_ycbcr_texture
+ &__GLEW_MESA_ycbcr_texture,
+#endif
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+ &__GLEW_NVX_blend_equation_advanced_multi_draw_buffers,
+#endif
+#ifdef GL_NVX_conditional_render
+ &__GLEW_NVX_conditional_render,
+#endif
+#ifdef GL_NVX_gpu_memory_info
+ &__GLEW_NVX_gpu_memory_info,
+#endif
+#ifdef GL_NVX_gpu_multicast2
+ &__GLEW_NVX_gpu_multicast2,
+#endif
+#ifdef GL_NVX_linked_gpu_multicast
+ &__GLEW_NVX_linked_gpu_multicast,
+#endif
+#ifdef GL_NVX_progress_fence
+ &__GLEW_NVX_progress_fence,
+#endif
+#ifdef GL_NV_3dvision_settings
+ &__GLEW_NV_3dvision_settings,
+#endif
+#ifdef GL_NV_EGL_stream_consumer_external
+ &__GLEW_NV_EGL_stream_consumer_external,
+#endif
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ &__GLEW_NV_alpha_to_coverage_dither_control,
+#endif
+#ifdef GL_NV_bgr
+ &__GLEW_NV_bgr,
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect
+ &__GLEW_NV_bindless_multi_draw_indirect,
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ &__GLEW_NV_bindless_multi_draw_indirect_count,
+#endif
+#ifdef GL_NV_bindless_texture
+ &__GLEW_NV_bindless_texture,
+#endif
+#ifdef GL_NV_blend_equation_advanced
+ &__GLEW_NV_blend_equation_advanced,
+#endif
+#ifdef GL_NV_blend_equation_advanced_coherent
+ &__GLEW_NV_blend_equation_advanced_coherent,
+#endif
+#ifdef GL_NV_blend_minmax_factor
+ &__GLEW_NV_blend_minmax_factor,
+#endif
+#ifdef GL_NV_blend_square
+ &__GLEW_NV_blend_square,
+#endif
+#ifdef GL_NV_clip_space_w_scaling
+ &__GLEW_NV_clip_space_w_scaling,
+#endif
+#ifdef GL_NV_command_list
+ &__GLEW_NV_command_list,
+#endif
+#ifdef GL_NV_compute_program5
+ &__GLEW_NV_compute_program5,
+#endif
+#ifdef GL_NV_compute_shader_derivatives
+ &__GLEW_NV_compute_shader_derivatives,
+#endif
+#ifdef GL_NV_conditional_render
+ &__GLEW_NV_conditional_render,
+#endif
+#ifdef GL_NV_conservative_raster
+ &__GLEW_NV_conservative_raster,
+#endif
+#ifdef GL_NV_conservative_raster_dilate
+ &__GLEW_NV_conservative_raster_dilate,
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap
+ &__GLEW_NV_conservative_raster_pre_snap,
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ &__GLEW_NV_conservative_raster_pre_snap_triangles,
+#endif
+#ifdef GL_NV_conservative_raster_underestimation
+ &__GLEW_NV_conservative_raster_underestimation,
+#endif
+#ifdef GL_NV_copy_buffer
+ &__GLEW_NV_copy_buffer,
+#endif
+#ifdef GL_NV_copy_depth_to_color
+ &__GLEW_NV_copy_depth_to_color,
+#endif
+#ifdef GL_NV_copy_image
+ &__GLEW_NV_copy_image,
+#endif
+#ifdef GL_NV_deep_texture3D
+ &__GLEW_NV_deep_texture3D,
+#endif
+#ifdef GL_NV_depth_buffer_float
+ &__GLEW_NV_depth_buffer_float,
+#endif
+#ifdef GL_NV_depth_clamp
+ &__GLEW_NV_depth_clamp,
+#endif
+#ifdef GL_NV_depth_nonlinear
+ &__GLEW_NV_depth_nonlinear,
+#endif
+#ifdef GL_NV_depth_range_unclamped
+ &__GLEW_NV_depth_range_unclamped,
+#endif
+#ifdef GL_NV_draw_buffers
+ &__GLEW_NV_draw_buffers,
+#endif
+#ifdef GL_NV_draw_instanced
+ &__GLEW_NV_draw_instanced,
+#endif
+#ifdef GL_NV_draw_texture
+ &__GLEW_NV_draw_texture,
+#endif
+#ifdef GL_NV_draw_vulkan_image
+ &__GLEW_NV_draw_vulkan_image,
+#endif
+#ifdef GL_NV_evaluators
+ &__GLEW_NV_evaluators,
+#endif
+#ifdef GL_NV_explicit_attrib_location
+ &__GLEW_NV_explicit_attrib_location,
+#endif
+#ifdef GL_NV_explicit_multisample
+ &__GLEW_NV_explicit_multisample,
+#endif
+#ifdef GL_NV_fbo_color_attachments
+ &__GLEW_NV_fbo_color_attachments,
+#endif
+#ifdef GL_NV_fence
+ &__GLEW_NV_fence,
+#endif
+#ifdef GL_NV_fill_rectangle
+ &__GLEW_NV_fill_rectangle,
+#endif
+#ifdef GL_NV_float_buffer
+ &__GLEW_NV_float_buffer,
+#endif
+#ifdef GL_NV_fog_distance
+ &__GLEW_NV_fog_distance,
+#endif
+#ifdef GL_NV_fragment_coverage_to_color
+ &__GLEW_NV_fragment_coverage_to_color,
+#endif
+#ifdef GL_NV_fragment_program
+ &__GLEW_NV_fragment_program,
+#endif
+#ifdef GL_NV_fragment_program2
+ &__GLEW_NV_fragment_program2,
+#endif
+#ifdef GL_NV_fragment_program4
+ &__GLEW_NV_fragment_program4,
+#endif
+#ifdef GL_NV_fragment_program_option
+ &__GLEW_NV_fragment_program_option,
+#endif
+#ifdef GL_NV_fragment_shader_barycentric
+ &__GLEW_NV_fragment_shader_barycentric,
+#endif
+#ifdef GL_NV_fragment_shader_interlock
+ &__GLEW_NV_fragment_shader_interlock,
+#endif
+#ifdef GL_NV_framebuffer_blit
+ &__GLEW_NV_framebuffer_blit,
+#endif
+#ifdef GL_NV_framebuffer_mixed_samples
+ &__GLEW_NV_framebuffer_mixed_samples,
+#endif
+#ifdef GL_NV_framebuffer_multisample
+ &__GLEW_NV_framebuffer_multisample,
+#endif
+#ifdef GL_NV_framebuffer_multisample_coverage
+ &__GLEW_NV_framebuffer_multisample_coverage,
+#endif
+#ifdef GL_NV_generate_mipmap_sRGB
+ &__GLEW_NV_generate_mipmap_sRGB,
+#endif
+#ifdef GL_NV_geometry_program4
+ &__GLEW_NV_geometry_program4,
+#endif
+#ifdef GL_NV_geometry_shader4
+ &__GLEW_NV_geometry_shader4,
+#endif
+#ifdef GL_NV_geometry_shader_passthrough
+ &__GLEW_NV_geometry_shader_passthrough,
+#endif
+#ifdef GL_NV_gpu_multicast
+ &__GLEW_NV_gpu_multicast,
+#endif
+#ifdef GL_NV_gpu_program4
+ &__GLEW_NV_gpu_program4,
+#endif
+#ifdef GL_NV_gpu_program5
+ &__GLEW_NV_gpu_program5,
+#endif
+#ifdef GL_NV_gpu_program5_mem_extended
+ &__GLEW_NV_gpu_program5_mem_extended,
+#endif
+#ifdef GL_NV_gpu_program_fp64
+ &__GLEW_NV_gpu_program_fp64,
+#endif
+#ifdef GL_NV_gpu_shader5
+ &__GLEW_NV_gpu_shader5,
+#endif
+#ifdef GL_NV_half_float
+ &__GLEW_NV_half_float,
+#endif
+#ifdef GL_NV_image_formats
+ &__GLEW_NV_image_formats,
+#endif
+#ifdef GL_NV_instanced_arrays
+ &__GLEW_NV_instanced_arrays,
+#endif
+#ifdef GL_NV_internalformat_sample_query
+ &__GLEW_NV_internalformat_sample_query,
+#endif
+#ifdef GL_NV_light_max_exponent
+ &__GLEW_NV_light_max_exponent,
+#endif
+#ifdef GL_NV_memory_attachment
+ &__GLEW_NV_memory_attachment,
+#endif
+#ifdef GL_NV_memory_object_sparse
+ &__GLEW_NV_memory_object_sparse,
+#endif
+#ifdef GL_NV_mesh_shader
+ &__GLEW_NV_mesh_shader,
+#endif
+#ifdef GL_NV_multisample_coverage
+ &__GLEW_NV_multisample_coverage,
+#endif
+#ifdef GL_NV_multisample_filter_hint
+ &__GLEW_NV_multisample_filter_hint,
+#endif
+#ifdef GL_NV_non_square_matrices
+ &__GLEW_NV_non_square_matrices,
+#endif
+#ifdef GL_NV_occlusion_query
+ &__GLEW_NV_occlusion_query,
+#endif
+#ifdef GL_NV_pack_subimage
+ &__GLEW_NV_pack_subimage,
+#endif
+#ifdef GL_NV_packed_depth_stencil
+ &__GLEW_NV_packed_depth_stencil,
+#endif
+#ifdef GL_NV_packed_float
+ &__GLEW_NV_packed_float,
+#endif
+#ifdef GL_NV_packed_float_linear
+ &__GLEW_NV_packed_float_linear,
+#endif
+#ifdef GL_NV_parameter_buffer_object
+ &__GLEW_NV_parameter_buffer_object,
+#endif
+#ifdef GL_NV_parameter_buffer_object2
+ &__GLEW_NV_parameter_buffer_object2,
+#endif
+#ifdef GL_NV_path_rendering
+ &__GLEW_NV_path_rendering,
+#endif
+#ifdef GL_NV_path_rendering_shared_edge
+ &__GLEW_NV_path_rendering_shared_edge,
+#endif
+#ifdef GL_NV_pixel_buffer_object
+ &__GLEW_NV_pixel_buffer_object,
+#endif
+#ifdef GL_NV_pixel_data_range
+ &__GLEW_NV_pixel_data_range,
+#endif
+#ifdef GL_NV_platform_binary
+ &__GLEW_NV_platform_binary,
+#endif
+#ifdef GL_NV_point_sprite
+ &__GLEW_NV_point_sprite,
+#endif
+#ifdef GL_NV_polygon_mode
+ &__GLEW_NV_polygon_mode,
+#endif
+#ifdef GL_NV_present_video
+ &__GLEW_NV_present_video,
+#endif
+#ifdef GL_NV_primitive_restart
+ &__GLEW_NV_primitive_restart,
+#endif
+#ifdef GL_NV_primitive_shading_rate
+ &__GLEW_NV_primitive_shading_rate,
+#endif
+#ifdef GL_NV_query_resource_tag
+ &__GLEW_NV_query_resource_tag,
+#endif
+#ifdef GL_NV_read_buffer
+ &__GLEW_NV_read_buffer,
+#endif
+#ifdef GL_NV_read_buffer_front
+ &__GLEW_NV_read_buffer_front,
+#endif
+#ifdef GL_NV_read_depth
+ &__GLEW_NV_read_depth,
+#endif
+#ifdef GL_NV_read_depth_stencil
+ &__GLEW_NV_read_depth_stencil,
+#endif
+#ifdef GL_NV_read_stencil
+ &__GLEW_NV_read_stencil,
+#endif
+#ifdef GL_NV_register_combiners
+ &__GLEW_NV_register_combiners,
+#endif
+#ifdef GL_NV_register_combiners2
+ &__GLEW_NV_register_combiners2,
+#endif
+#ifdef GL_NV_representative_fragment_test
+ &__GLEW_NV_representative_fragment_test,
+#endif
+#ifdef GL_NV_robustness_video_memory_purge
+ &__GLEW_NV_robustness_video_memory_purge,
+#endif
+#ifdef GL_NV_sRGB_formats
+ &__GLEW_NV_sRGB_formats,
+#endif
+#ifdef GL_NV_sample_locations
+ &__GLEW_NV_sample_locations,
+#endif
+#ifdef GL_NV_sample_mask_override_coverage
+ &__GLEW_NV_sample_mask_override_coverage,
+#endif
+#ifdef GL_NV_scissor_exclusive
+ &__GLEW_NV_scissor_exclusive,
+#endif
+#ifdef GL_NV_shader_atomic_counters
+ &__GLEW_NV_shader_atomic_counters,
+#endif
+#ifdef GL_NV_shader_atomic_float
+ &__GLEW_NV_shader_atomic_float,
+#endif
+#ifdef GL_NV_shader_atomic_float64
+ &__GLEW_NV_shader_atomic_float64,
+#endif
+#ifdef GL_NV_shader_atomic_fp16_vector
+ &__GLEW_NV_shader_atomic_fp16_vector,
+#endif
+#ifdef GL_NV_shader_atomic_int64
+ &__GLEW_NV_shader_atomic_int64,
+#endif
+#ifdef GL_NV_shader_buffer_load
+ &__GLEW_NV_shader_buffer_load,
+#endif
+#ifdef GL_NV_shader_noperspective_interpolation
+ &__GLEW_NV_shader_noperspective_interpolation,
+#endif
+#ifdef GL_NV_shader_storage_buffer_object
+ &__GLEW_NV_shader_storage_buffer_object,
+#endif
+#ifdef GL_NV_shader_subgroup_partitioned
+ &__GLEW_NV_shader_subgroup_partitioned,
+#endif
+#ifdef GL_NV_shader_texture_footprint
+ &__GLEW_NV_shader_texture_footprint,
+#endif
+#ifdef GL_NV_shader_thread_group
+ &__GLEW_NV_shader_thread_group,
+#endif
+#ifdef GL_NV_shader_thread_shuffle
+ &__GLEW_NV_shader_thread_shuffle,
+#endif
+#ifdef GL_NV_shading_rate_image
+ &__GLEW_NV_shading_rate_image,
+#endif
+#ifdef GL_NV_shadow_samplers_array
+ &__GLEW_NV_shadow_samplers_array,
+#endif
+#ifdef GL_NV_shadow_samplers_cube
+ &__GLEW_NV_shadow_samplers_cube,
+#endif
+#ifdef GL_NV_stereo_view_rendering
+ &__GLEW_NV_stereo_view_rendering,
+#endif
+#ifdef GL_NV_tessellation_program5
+ &__GLEW_NV_tessellation_program5,
+#endif
+#ifdef GL_NV_texgen_emboss
+ &__GLEW_NV_texgen_emboss,
+#endif
+#ifdef GL_NV_texgen_reflection
+ &__GLEW_NV_texgen_reflection,
+#endif
+#ifdef GL_NV_texture_array
+ &__GLEW_NV_texture_array,
+#endif
+#ifdef GL_NV_texture_barrier
+ &__GLEW_NV_texture_barrier,
+#endif
+#ifdef GL_NV_texture_border_clamp
+ &__GLEW_NV_texture_border_clamp,
+#endif
+#ifdef GL_NV_texture_compression_latc
+ &__GLEW_NV_texture_compression_latc,
+#endif
+#ifdef GL_NV_texture_compression_s3tc
+ &__GLEW_NV_texture_compression_s3tc,
+#endif
+#ifdef GL_NV_texture_compression_s3tc_update
+ &__GLEW_NV_texture_compression_s3tc_update,
+#endif
+#ifdef GL_NV_texture_compression_vtc
+ &__GLEW_NV_texture_compression_vtc,
+#endif
+#ifdef GL_NV_texture_env_combine4
+ &__GLEW_NV_texture_env_combine4,
+#endif
+#ifdef GL_NV_texture_expand_normal
+ &__GLEW_NV_texture_expand_normal,
+#endif
+#ifdef GL_NV_texture_multisample
+ &__GLEW_NV_texture_multisample,
+#endif
+#ifdef GL_NV_texture_npot_2D_mipmap
+ &__GLEW_NV_texture_npot_2D_mipmap,
+#endif
+#ifdef GL_NV_texture_rectangle
+ &__GLEW_NV_texture_rectangle,
+#endif
+#ifdef GL_NV_texture_rectangle_compressed
+ &__GLEW_NV_texture_rectangle_compressed,
+#endif
+#ifdef GL_NV_texture_shader
+ &__GLEW_NV_texture_shader,
+#endif
+#ifdef GL_NV_texture_shader2
+ &__GLEW_NV_texture_shader2,
+#endif
+#ifdef GL_NV_texture_shader3
+ &__GLEW_NV_texture_shader3,
+#endif
+#ifdef GL_NV_timeline_semaphore
+ &__GLEW_NV_timeline_semaphore,
+#endif
+#ifdef GL_NV_transform_feedback
+ &__GLEW_NV_transform_feedback,
+#endif
+#ifdef GL_NV_transform_feedback2
+ &__GLEW_NV_transform_feedback2,
+#endif
+#ifdef GL_NV_uniform_buffer_unified_memory
+ &__GLEW_NV_uniform_buffer_unified_memory,
+#endif
+#ifdef GL_NV_vdpau_interop
+ &__GLEW_NV_vdpau_interop,
+#endif
+#ifdef GL_NV_vdpau_interop2
+ &__GLEW_NV_vdpau_interop2,
+#endif
+#ifdef GL_NV_vertex_array_range
+ &__GLEW_NV_vertex_array_range,
+#endif
+#ifdef GL_NV_vertex_array_range2
+ &__GLEW_NV_vertex_array_range2,
+#endif
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ &__GLEW_NV_vertex_attrib_integer_64bit,
+#endif
+#ifdef GL_NV_vertex_buffer_unified_memory
+ &__GLEW_NV_vertex_buffer_unified_memory,
+#endif
+#ifdef GL_NV_vertex_program
+ &__GLEW_NV_vertex_program,
+#endif
+#ifdef GL_NV_vertex_program1_1
+ &__GLEW_NV_vertex_program1_1,
+#endif
+#ifdef GL_NV_vertex_program2
+ &__GLEW_NV_vertex_program2,
+#endif
+#ifdef GL_NV_vertex_program2_option
+ &__GLEW_NV_vertex_program2_option,
+#endif
+#ifdef GL_NV_vertex_program3
+ &__GLEW_NV_vertex_program3,
+#endif
+#ifdef GL_NV_vertex_program4
+ &__GLEW_NV_vertex_program4,
+#endif
+#ifdef GL_NV_video_capture
+ &__GLEW_NV_video_capture,
+#endif
+#ifdef GL_NV_viewport_array
+ &__GLEW_NV_viewport_array,
+#endif
+#ifdef GL_NV_viewport_array2
+ &__GLEW_NV_viewport_array2,
+#endif
+#ifdef GL_NV_viewport_swizzle
+ &__GLEW_NV_viewport_swizzle,
+#endif
+#ifdef GL_OES_EGL_image
+ &__GLEW_OES_EGL_image,
+#endif
+#ifdef GL_OES_EGL_image_external
+ &__GLEW_OES_EGL_image_external,
+#endif
+#ifdef GL_OES_EGL_image_external_essl3
+ &__GLEW_OES_EGL_image_external_essl3,
+#endif
+#ifdef GL_OES_blend_equation_separate
+ &__GLEW_OES_blend_equation_separate,
+#endif
+#ifdef GL_OES_blend_func_separate
+ &__GLEW_OES_blend_func_separate,
+#endif
+#ifdef GL_OES_blend_subtract
+ &__GLEW_OES_blend_subtract,
+#endif
+#ifdef GL_OES_byte_coordinates
+ &__GLEW_OES_byte_coordinates,
+#endif
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+ &__GLEW_OES_compressed_ETC1_RGB8_texture,
+#endif
+#ifdef GL_OES_compressed_paletted_texture
+ &__GLEW_OES_compressed_paletted_texture,
+#endif
+#ifdef GL_OES_copy_image
+ &__GLEW_OES_copy_image,
+#endif
+#ifdef GL_OES_depth24
+ &__GLEW_OES_depth24,
+#endif
+#ifdef GL_OES_depth32
+ &__GLEW_OES_depth32,
+#endif
+#ifdef GL_OES_depth_texture
+ &__GLEW_OES_depth_texture,
+#endif
+#ifdef GL_OES_depth_texture_cube_map
+ &__GLEW_OES_depth_texture_cube_map,
+#endif
+#ifdef GL_OES_draw_buffers_indexed
+ &__GLEW_OES_draw_buffers_indexed,
+#endif
+#ifdef GL_OES_draw_texture
+ &__GLEW_OES_draw_texture,
+#endif
+#ifdef GL_OES_element_index_uint
+ &__GLEW_OES_element_index_uint,
+#endif
+#ifdef GL_OES_extended_matrix_palette
+ &__GLEW_OES_extended_matrix_palette,
+#endif
+#ifdef GL_OES_fbo_render_mipmap
+ &__GLEW_OES_fbo_render_mipmap,
+#endif
+#ifdef GL_OES_fragment_precision_high
+ &__GLEW_OES_fragment_precision_high,
+#endif
+#ifdef GL_OES_framebuffer_object
+ &__GLEW_OES_framebuffer_object,
+#endif
+#ifdef GL_OES_geometry_point_size
+ &__GLEW_OES_geometry_point_size,
+#endif
+#ifdef GL_OES_geometry_shader
+ &__GLEW_OES_geometry_shader,
+#endif
+#ifdef GL_OES_get_program_binary
+ &__GLEW_OES_get_program_binary,
+#endif
+#ifdef GL_OES_gpu_shader5
+ &__GLEW_OES_gpu_shader5,
+#endif
+#ifdef GL_OES_mapbuffer
+ &__GLEW_OES_mapbuffer,
+#endif
+#ifdef GL_OES_matrix_get
+ &__GLEW_OES_matrix_get,
+#endif
+#ifdef GL_OES_matrix_palette
+ &__GLEW_OES_matrix_palette,
+#endif
+#ifdef GL_OES_packed_depth_stencil
+ &__GLEW_OES_packed_depth_stencil,
+#endif
+#ifdef GL_OES_point_size_array
+ &__GLEW_OES_point_size_array,
+#endif
+#ifdef GL_OES_point_sprite
+ &__GLEW_OES_point_sprite,
+#endif
+#ifdef GL_OES_read_format
+ &__GLEW_OES_read_format,
+#endif
+#ifdef GL_OES_required_internalformat
+ &__GLEW_OES_required_internalformat,
+#endif
+#ifdef GL_OES_rgb8_rgba8
+ &__GLEW_OES_rgb8_rgba8,
+#endif
+#ifdef GL_OES_sample_shading
+ &__GLEW_OES_sample_shading,
+#endif
+#ifdef GL_OES_sample_variables
+ &__GLEW_OES_sample_variables,
+#endif
+#ifdef GL_OES_shader_image_atomic
+ &__GLEW_OES_shader_image_atomic,
+#endif
+#ifdef GL_OES_shader_io_blocks
+ &__GLEW_OES_shader_io_blocks,
+#endif
+#ifdef GL_OES_shader_multisample_interpolation
+ &__GLEW_OES_shader_multisample_interpolation,
+#endif
+#ifdef GL_OES_single_precision
+ &__GLEW_OES_single_precision,
+#endif
+#ifdef GL_OES_standard_derivatives
+ &__GLEW_OES_standard_derivatives,
+#endif
+#ifdef GL_OES_stencil1
+ &__GLEW_OES_stencil1,
+#endif
+#ifdef GL_OES_stencil4
+ &__GLEW_OES_stencil4,
+#endif
+#ifdef GL_OES_stencil8
+ &__GLEW_OES_stencil8,
+#endif
+#ifdef GL_OES_surfaceless_context
+ &__GLEW_OES_surfaceless_context,
+#endif
+#ifdef GL_OES_tessellation_point_size
+ &__GLEW_OES_tessellation_point_size,
+#endif
+#ifdef GL_OES_tessellation_shader
+ &__GLEW_OES_tessellation_shader,
+#endif
+#ifdef GL_OES_texture_3D
+ &__GLEW_OES_texture_3D,
+#endif
+#ifdef GL_OES_texture_border_clamp
+ &__GLEW_OES_texture_border_clamp,
+#endif
+#ifdef GL_OES_texture_buffer
+ &__GLEW_OES_texture_buffer,
+#endif
+#ifdef GL_OES_texture_compression_astc
+ &__GLEW_OES_texture_compression_astc,
+#endif
+#ifdef GL_OES_texture_cube_map
+ &__GLEW_OES_texture_cube_map,
+#endif
+#ifdef GL_OES_texture_cube_map_array
+ &__GLEW_OES_texture_cube_map_array,
+#endif
+#ifdef GL_OES_texture_env_crossbar
+ &__GLEW_OES_texture_env_crossbar,
+#endif
+#ifdef GL_OES_texture_mirrored_repeat
+ &__GLEW_OES_texture_mirrored_repeat,
+#endif
+#ifdef GL_OES_texture_npot
+ &__GLEW_OES_texture_npot,
+#endif
+#ifdef GL_OES_texture_stencil8
+ &__GLEW_OES_texture_stencil8,
+#endif
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ &__GLEW_OES_texture_storage_multisample_2d_array,
+#endif
+#ifdef GL_OES_texture_view
+ &__GLEW_OES_texture_view,
+#endif
+#ifdef GL_OES_vertex_array_object
+ &__GLEW_OES_vertex_array_object,
+#endif
+#ifdef GL_OES_vertex_half_float
+ &__GLEW_OES_vertex_half_float,
+#endif
+#ifdef GL_OES_vertex_type_10_10_10_2
+ &__GLEW_OES_vertex_type_10_10_10_2,
+#endif
+#ifdef GL_OML_interlace
+ &__GLEW_OML_interlace,
+#endif
+#ifdef GL_OML_resample
+ &__GLEW_OML_resample,
+#endif
+#ifdef GL_OML_subsample
+ &__GLEW_OML_subsample,
+#endif
+#ifdef GL_OVR_multiview
+ &__GLEW_OVR_multiview,
+#endif
+#ifdef GL_OVR_multiview2
+ &__GLEW_OVR_multiview2,
+#endif
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ &__GLEW_OVR_multiview_multisampled_render_to_texture,
+#endif
+#ifdef GL_PGI_misc_hints
+ &__GLEW_PGI_misc_hints,
+#endif
+#ifdef GL_PGI_vertex_hints
+ &__GLEW_PGI_vertex_hints,
+#endif
+#ifdef GL_QCOM_YUV_texture_gather
+ &__GLEW_QCOM_YUV_texture_gather,
+#endif
+#ifdef GL_QCOM_alpha_test
+ &__GLEW_QCOM_alpha_test,
+#endif
+#ifdef GL_QCOM_binning_control
+ &__GLEW_QCOM_binning_control,
+#endif
+#ifdef GL_QCOM_driver_control
+ &__GLEW_QCOM_driver_control,
+#endif
+#ifdef GL_QCOM_extended_get
+ &__GLEW_QCOM_extended_get,
+#endif
+#ifdef GL_QCOM_extended_get2
+ &__GLEW_QCOM_extended_get2,
+#endif
+#ifdef GL_QCOM_frame_extrapolation
+ &__GLEW_QCOM_frame_extrapolation,
+#endif
+#ifdef GL_QCOM_framebuffer_foveated
+ &__GLEW_QCOM_framebuffer_foveated,
+#endif
+#ifdef GL_QCOM_motion_estimation
+ &__GLEW_QCOM_motion_estimation,
+#endif
+#ifdef GL_QCOM_perfmon_global_mode
+ &__GLEW_QCOM_perfmon_global_mode,
+#endif
+#ifdef GL_QCOM_render_shared_exponent
+ &__GLEW_QCOM_render_shared_exponent,
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ &__GLEW_QCOM_shader_framebuffer_fetch_noncoherent,
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+ &__GLEW_QCOM_shader_framebuffer_fetch_rate,
+#endif
+#ifdef GL_QCOM_shading_rate
+ &__GLEW_QCOM_shading_rate,
+#endif
+#ifdef GL_QCOM_texture_foveated
+ &__GLEW_QCOM_texture_foveated,
+#endif
+#ifdef GL_QCOM_texture_foveated2
+ &__GLEW_QCOM_texture_foveated2,
+#endif
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+ &__GLEW_QCOM_texture_foveated_subsampled_layout,
+#endif
+#ifdef GL_QCOM_tiled_rendering
+ &__GLEW_QCOM_tiled_rendering,
+#endif
+#ifdef GL_QCOM_writeonly_rendering
+ &__GLEW_QCOM_writeonly_rendering,
+#endif
+#ifdef GL_REGAL_ES1_0_compatibility
+ &__GLEW_REGAL_ES1_0_compatibility,
+#endif
+#ifdef GL_REGAL_ES1_1_compatibility
+ &__GLEW_REGAL_ES1_1_compatibility,
+#endif
+#ifdef GL_REGAL_enable
+ &__GLEW_REGAL_enable,
+#endif
+#ifdef GL_REGAL_error_string
+ &__GLEW_REGAL_error_string,
+#endif
+#ifdef GL_REGAL_extension_query
+ &__GLEW_REGAL_extension_query,
+#endif
+#ifdef GL_REGAL_log
+ &__GLEW_REGAL_log,
+#endif
+#ifdef GL_REGAL_proc_address
+ &__GLEW_REGAL_proc_address,
+#endif
+#ifdef GL_REND_screen_coordinates
+ &__GLEW_REND_screen_coordinates,
+#endif
+#ifdef GL_S3_s3tc
+ &__GLEW_S3_s3tc,
+#endif
+#ifdef GL_SGIS_clip_band_hint
+ &__GLEW_SGIS_clip_band_hint,
+#endif
+#ifdef GL_SGIS_color_range
+ &__GLEW_SGIS_color_range,
+#endif
+#ifdef GL_SGIS_detail_texture
+ &__GLEW_SGIS_detail_texture,
+#endif
+#ifdef GL_SGIS_fog_function
+ &__GLEW_SGIS_fog_function,
+#endif
+#ifdef GL_SGIS_generate_mipmap
+ &__GLEW_SGIS_generate_mipmap,
+#endif
+#ifdef GL_SGIS_line_texgen
+ &__GLEW_SGIS_line_texgen,
+#endif
+#ifdef GL_SGIS_multisample
+ &__GLEW_SGIS_multisample,
+#endif
+#ifdef GL_SGIS_multitexture
+ &__GLEW_SGIS_multitexture,
+#endif
+#ifdef GL_SGIS_pixel_texture
+ &__GLEW_SGIS_pixel_texture,
+#endif
+#ifdef GL_SGIS_point_line_texgen
+ &__GLEW_SGIS_point_line_texgen,
+#endif
+#ifdef GL_SGIS_shared_multisample
+ &__GLEW_SGIS_shared_multisample,
+#endif
+#ifdef GL_SGIS_sharpen_texture
+ &__GLEW_SGIS_sharpen_texture,
+#endif
+#ifdef GL_SGIS_texture4D
+ &__GLEW_SGIS_texture4D,
+#endif
+#ifdef GL_SGIS_texture_border_clamp
+ &__GLEW_SGIS_texture_border_clamp,
+#endif
+#ifdef GL_SGIS_texture_edge_clamp
+ &__GLEW_SGIS_texture_edge_clamp,
+#endif
+#ifdef GL_SGIS_texture_filter4
+ &__GLEW_SGIS_texture_filter4,
+#endif
+#ifdef GL_SGIS_texture_lod
+ &__GLEW_SGIS_texture_lod,
+#endif
+#ifdef GL_SGIS_texture_select
+ &__GLEW_SGIS_texture_select,
+#endif
+#ifdef GL_SGIX_async
+ &__GLEW_SGIX_async,
+#endif
+#ifdef GL_SGIX_async_histogram
+ &__GLEW_SGIX_async_histogram,
+#endif
+#ifdef GL_SGIX_async_pixel
+ &__GLEW_SGIX_async_pixel,
+#endif
+#ifdef GL_SGIX_bali_g_instruments
+ &__GLEW_SGIX_bali_g_instruments,
+#endif
+#ifdef GL_SGIX_bali_r_instruments
+ &__GLEW_SGIX_bali_r_instruments,
+#endif
+#ifdef GL_SGIX_bali_timer_instruments
+ &__GLEW_SGIX_bali_timer_instruments,
+#endif
+#ifdef GL_SGIX_blend_alpha_minmax
+ &__GLEW_SGIX_blend_alpha_minmax,
+#endif
+#ifdef GL_SGIX_blend_cadd
+ &__GLEW_SGIX_blend_cadd,
+#endif
+#ifdef GL_SGIX_blend_cmultiply
+ &__GLEW_SGIX_blend_cmultiply,
+#endif
+#ifdef GL_SGIX_calligraphic_fragment
+ &__GLEW_SGIX_calligraphic_fragment,
+#endif
+#ifdef GL_SGIX_clipmap
+ &__GLEW_SGIX_clipmap,
+#endif
+#ifdef GL_SGIX_color_matrix_accuracy
+ &__GLEW_SGIX_color_matrix_accuracy,
+#endif
+#ifdef GL_SGIX_color_table_index_mode
+ &__GLEW_SGIX_color_table_index_mode,
+#endif
+#ifdef GL_SGIX_complex_polar
+ &__GLEW_SGIX_complex_polar,
+#endif
+#ifdef GL_SGIX_convolution_accuracy
+ &__GLEW_SGIX_convolution_accuracy,
+#endif
+#ifdef GL_SGIX_cube_map
+ &__GLEW_SGIX_cube_map,
+#endif
+#ifdef GL_SGIX_cylinder_texgen
+ &__GLEW_SGIX_cylinder_texgen,
+#endif
+#ifdef GL_SGIX_datapipe
+ &__GLEW_SGIX_datapipe,
+#endif
+#ifdef GL_SGIX_decimation
+ &__GLEW_SGIX_decimation,
+#endif
+#ifdef GL_SGIX_depth_pass_instrument
+ &__GLEW_SGIX_depth_pass_instrument,
+#endif
+#ifdef GL_SGIX_depth_texture
+ &__GLEW_SGIX_depth_texture,
+#endif
+#ifdef GL_SGIX_dvc
+ &__GLEW_SGIX_dvc,
+#endif
+#ifdef GL_SGIX_flush_raster
+ &__GLEW_SGIX_flush_raster,
+#endif
+#ifdef GL_SGIX_fog_blend
+ &__GLEW_SGIX_fog_blend,
+#endif
+#ifdef GL_SGIX_fog_factor_to_alpha
+ &__GLEW_SGIX_fog_factor_to_alpha,
+#endif
+#ifdef GL_SGIX_fog_layers
+ &__GLEW_SGIX_fog_layers,
+#endif
+#ifdef GL_SGIX_fog_offset
+ &__GLEW_SGIX_fog_offset,
+#endif
+#ifdef GL_SGIX_fog_patchy
+ &__GLEW_SGIX_fog_patchy,
+#endif
+#ifdef GL_SGIX_fog_scale
+ &__GLEW_SGIX_fog_scale,
+#endif
+#ifdef GL_SGIX_fog_texture
+ &__GLEW_SGIX_fog_texture,
+#endif
+#ifdef GL_SGIX_fragment_lighting_space
+ &__GLEW_SGIX_fragment_lighting_space,
+#endif
+#ifdef GL_SGIX_fragment_specular_lighting
+ &__GLEW_SGIX_fragment_specular_lighting,
+#endif
+#ifdef GL_SGIX_fragments_instrument
+ &__GLEW_SGIX_fragments_instrument,
+#endif
+#ifdef GL_SGIX_framezoom
+ &__GLEW_SGIX_framezoom,
+#endif
+#ifdef GL_SGIX_icc_texture
+ &__GLEW_SGIX_icc_texture,
+#endif
+#ifdef GL_SGIX_igloo_interface
+ &__GLEW_SGIX_igloo_interface,
+#endif
+#ifdef GL_SGIX_image_compression
+ &__GLEW_SGIX_image_compression,
+#endif
+#ifdef GL_SGIX_impact_pixel_texture
+ &__GLEW_SGIX_impact_pixel_texture,
+#endif
+#ifdef GL_SGIX_instrument_error
+ &__GLEW_SGIX_instrument_error,
+#endif
+#ifdef GL_SGIX_interlace
+ &__GLEW_SGIX_interlace,
+#endif
+#ifdef GL_SGIX_ir_instrument1
+ &__GLEW_SGIX_ir_instrument1,
+#endif
+#ifdef GL_SGIX_line_quality_hint
+ &__GLEW_SGIX_line_quality_hint,
+#endif
+#ifdef GL_SGIX_list_priority
+ &__GLEW_SGIX_list_priority,
+#endif
+#ifdef GL_SGIX_mpeg1
+ &__GLEW_SGIX_mpeg1,
+#endif
+#ifdef GL_SGIX_mpeg2
+ &__GLEW_SGIX_mpeg2,
+#endif
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ &__GLEW_SGIX_nonlinear_lighting_pervertex,
+#endif
+#ifdef GL_SGIX_nurbs_eval
+ &__GLEW_SGIX_nurbs_eval,
+#endif
+#ifdef GL_SGIX_occlusion_instrument
+ &__GLEW_SGIX_occlusion_instrument,
+#endif
+#ifdef GL_SGIX_packed_6bytes
+ &__GLEW_SGIX_packed_6bytes,
+#endif
+#ifdef GL_SGIX_pixel_texture
+ &__GLEW_SGIX_pixel_texture,
+#endif
+#ifdef GL_SGIX_pixel_texture_bits
+ &__GLEW_SGIX_pixel_texture_bits,
+#endif
+#ifdef GL_SGIX_pixel_texture_lod
+ &__GLEW_SGIX_pixel_texture_lod,
+#endif
+#ifdef GL_SGIX_pixel_tiles
+ &__GLEW_SGIX_pixel_tiles,
+#endif
+#ifdef GL_SGIX_polynomial_ffd
+ &__GLEW_SGIX_polynomial_ffd,
+#endif
+#ifdef GL_SGIX_quad_mesh
+ &__GLEW_SGIX_quad_mesh,
+#endif
+#ifdef GL_SGIX_reference_plane
+ &__GLEW_SGIX_reference_plane,
+#endif
+#ifdef GL_SGIX_resample
+ &__GLEW_SGIX_resample,
+#endif
+#ifdef GL_SGIX_scalebias_hint
+ &__GLEW_SGIX_scalebias_hint,
+#endif
+#ifdef GL_SGIX_shadow
+ &__GLEW_SGIX_shadow,
+#endif
+#ifdef GL_SGIX_shadow_ambient
+ &__GLEW_SGIX_shadow_ambient,
+#endif
+#ifdef GL_SGIX_slim
+ &__GLEW_SGIX_slim,
+#endif
+#ifdef GL_SGIX_spotlight_cutoff
+ &__GLEW_SGIX_spotlight_cutoff,
+#endif
+#ifdef GL_SGIX_sprite
+ &__GLEW_SGIX_sprite,
+#endif
+#ifdef GL_SGIX_subdiv_patch
+ &__GLEW_SGIX_subdiv_patch,
+#endif
+#ifdef GL_SGIX_subsample
+ &__GLEW_SGIX_subsample,
+#endif
+#ifdef GL_SGIX_tag_sample_buffer
+ &__GLEW_SGIX_tag_sample_buffer,
+#endif
+#ifdef GL_SGIX_texture_add_env
+ &__GLEW_SGIX_texture_add_env,
+#endif
+#ifdef GL_SGIX_texture_coordinate_clamp
+ &__GLEW_SGIX_texture_coordinate_clamp,
+#endif
+#ifdef GL_SGIX_texture_lod_bias
+ &__GLEW_SGIX_texture_lod_bias,
+#endif
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+ &__GLEW_SGIX_texture_mipmap_anisotropic,
+#endif
+#ifdef GL_SGIX_texture_multi_buffer
+ &__GLEW_SGIX_texture_multi_buffer,
+#endif
+#ifdef GL_SGIX_texture_phase
+ &__GLEW_SGIX_texture_phase,
+#endif
+#ifdef GL_SGIX_texture_range
+ &__GLEW_SGIX_texture_range,
+#endif
+#ifdef GL_SGIX_texture_scale_bias
+ &__GLEW_SGIX_texture_scale_bias,
+#endif
+#ifdef GL_SGIX_texture_supersample
+ &__GLEW_SGIX_texture_supersample,
+#endif
+#ifdef GL_SGIX_vector_ops
+ &__GLEW_SGIX_vector_ops,
+#endif
+#ifdef GL_SGIX_vertex_array_object
+ &__GLEW_SGIX_vertex_array_object,
+#endif
+#ifdef GL_SGIX_vertex_preclip
+ &__GLEW_SGIX_vertex_preclip,
+#endif
+#ifdef GL_SGIX_vertex_preclip_hint
+ &__GLEW_SGIX_vertex_preclip_hint,
+#endif
+#ifdef GL_SGIX_ycrcb
+ &__GLEW_SGIX_ycrcb,
+#endif
+#ifdef GL_SGIX_ycrcb_subsample
+ &__GLEW_SGIX_ycrcb_subsample,
+#endif
+#ifdef GL_SGIX_ycrcba
+ &__GLEW_SGIX_ycrcba,
+#endif
+#ifdef GL_SGI_color_matrix
+ &__GLEW_SGI_color_matrix,
+#endif
+#ifdef GL_SGI_color_table
+ &__GLEW_SGI_color_table,
+#endif
+#ifdef GL_SGI_complex
+ &__GLEW_SGI_complex,
+#endif
+#ifdef GL_SGI_complex_type
+ &__GLEW_SGI_complex_type,
+#endif
+#ifdef GL_SGI_fft
+ &__GLEW_SGI_fft,
+#endif
+#ifdef GL_SGI_texture_color_table
+ &__GLEW_SGI_texture_color_table,
+#endif
+#ifdef GL_SUNX_constant_data
+ &__GLEW_SUNX_constant_data,
+#endif
+#ifdef GL_SUN_convolution_border_modes
+ &__GLEW_SUN_convolution_border_modes,
+#endif
+#ifdef GL_SUN_global_alpha
+ &__GLEW_SUN_global_alpha,
+#endif
+#ifdef GL_SUN_mesh_array
+ &__GLEW_SUN_mesh_array,
+#endif
+#ifdef GL_SUN_read_video_pixels
+ &__GLEW_SUN_read_video_pixels,
+#endif
+#ifdef GL_SUN_slice_accum
+ &__GLEW_SUN_slice_accum,
+#endif
+#ifdef GL_SUN_triangle_list
+ &__GLEW_SUN_triangle_list,
+#endif
+#ifdef GL_SUN_vertex
+ &__GLEW_SUN_vertex,
+#endif
+#ifdef GL_VERSION_1_2
+ &__GLEW_VERSION_1_2,
+#endif
+#ifdef GL_VERSION_1_2_1
+ &__GLEW_VERSION_1_2_1,
+#endif
+#ifdef GL_VERSION_1_3
+ &__GLEW_VERSION_1_3,
+#endif
+#ifdef GL_VERSION_1_4
+ &__GLEW_VERSION_1_4,
+#endif
+#ifdef GL_VERSION_1_5
+ &__GLEW_VERSION_1_5,
+#endif
+#ifdef GL_VERSION_2_0
+ &__GLEW_VERSION_2_0,
+#endif
+#ifdef GL_VERSION_2_1
+ &__GLEW_VERSION_2_1,
+#endif
+#ifdef GL_VERSION_3_0
+ &__GLEW_VERSION_3_0,
+#endif
+#ifdef GL_VERSION_3_1
+ &__GLEW_VERSION_3_1,
+#endif
+#ifdef GL_VERSION_3_2
+ &__GLEW_VERSION_3_2,
+#endif
+#ifdef GL_VERSION_3_3
+ &__GLEW_VERSION_3_3,
+#endif
+#ifdef GL_VERSION_4_0
+ &__GLEW_VERSION_4_0,
+#endif
+#ifdef GL_VERSION_4_1
+ &__GLEW_VERSION_4_1,
+#endif
+#ifdef GL_VERSION_4_2
+ &__GLEW_VERSION_4_2,
+#endif
+#ifdef GL_VERSION_4_3
+ &__GLEW_VERSION_4_3,
+#endif
+#ifdef GL_VERSION_4_4
+ &__GLEW_VERSION_4_4,
+#endif
+#ifdef GL_VERSION_4_5
+ &__GLEW_VERSION_4_5,
+#endif
+#ifdef GL_VERSION_4_6
+ &__GLEW_VERSION_4_6,
+#endif
+#ifdef GL_VIV_shader_binary
+ &__GLEW_VIV_shader_binary,
+#endif
+#ifdef GL_WIN_phong_shading
+ &__GLEW_WIN_phong_shading,
+#endif
+#ifdef GL_WIN_scene_markerXXX
+ &__GLEW_WIN_scene_markerXXX,
+#endif
+#ifdef GL_WIN_specular_fog
+ &__GLEW_WIN_specular_fog,
+#endif
+#ifdef GL_WIN_swap_hint
+ &__GLEW_WIN_swap_hint,
+#endif
+ NULL
+};
+
+static GLboolean _glewInit_GL_VERSION_1_2 ();
+static GLboolean _glewInit_GL_VERSION_1_3 ();
+static GLboolean _glewInit_GL_VERSION_1_4 ();
+static GLboolean _glewInit_GL_VERSION_1_5 ();
+static GLboolean _glewInit_GL_VERSION_2_0 ();
+static GLboolean _glewInit_GL_VERSION_2_1 ();
+static GLboolean _glewInit_GL_VERSION_3_0 ();
+static GLboolean _glewInit_GL_VERSION_3_1 ();
+static GLboolean _glewInit_GL_VERSION_3_2 ();
+static GLboolean _glewInit_GL_VERSION_3_3 ();
+static GLboolean _glewInit_GL_VERSION_4_0 ();
+static GLboolean _glewInit_GL_VERSION_4_5 ();
+static GLboolean _glewInit_GL_VERSION_4_6 ();
+static GLboolean _glewInit_GL_3DFX_tbuffer ();
+static GLboolean _glewInit_GL_AMD_debug_output ();
+static GLboolean _glewInit_GL_AMD_draw_buffers_blend ();
+static GLboolean _glewInit_GL_AMD_framebuffer_multisample_advanced ();
+static GLboolean _glewInit_GL_AMD_framebuffer_sample_positions ();
+static GLboolean _glewInit_GL_AMD_interleaved_elements ();
+static GLboolean _glewInit_GL_AMD_multi_draw_indirect ();
+static GLboolean _glewInit_GL_AMD_name_gen_delete ();
+static GLboolean _glewInit_GL_AMD_occlusion_query_event ();
+static GLboolean _glewInit_GL_AMD_performance_monitor ();
+static GLboolean _glewInit_GL_AMD_sample_positions ();
+static GLboolean _glewInit_GL_AMD_sparse_texture ();
+static GLboolean _glewInit_GL_AMD_stencil_operation_extended ();
+static GLboolean _glewInit_GL_AMD_vertex_shader_tessellator ();
+static GLboolean _glewInit_GL_ANGLE_framebuffer_blit ();
+static GLboolean _glewInit_GL_ANGLE_framebuffer_multisample ();
+static GLboolean _glewInit_GL_ANGLE_instanced_arrays ();
+static GLboolean _glewInit_GL_ANGLE_timer_query ();
+static GLboolean _glewInit_GL_ANGLE_translated_shader_source ();
+static GLboolean _glewInit_GL_APPLE_copy_texture_levels ();
+static GLboolean _glewInit_GL_APPLE_element_array ();
+static GLboolean _glewInit_GL_APPLE_fence ();
+static GLboolean _glewInit_GL_APPLE_flush_buffer_range ();
+static GLboolean _glewInit_GL_APPLE_framebuffer_multisample ();
+static GLboolean _glewInit_GL_APPLE_object_purgeable ();
+static GLboolean _glewInit_GL_APPLE_sync ();
+static GLboolean _glewInit_GL_APPLE_texture_range ();
+static GLboolean _glewInit_GL_APPLE_vertex_array_object ();
+static GLboolean _glewInit_GL_APPLE_vertex_array_range ();
+static GLboolean _glewInit_GL_APPLE_vertex_program_evaluators ();
+static GLboolean _glewInit_GL_ARB_ES2_compatibility ();
+static GLboolean _glewInit_GL_ARB_ES3_1_compatibility ();
+static GLboolean _glewInit_GL_ARB_ES3_2_compatibility ();
+static GLboolean _glewInit_GL_ARB_base_instance ();
+static GLboolean _glewInit_GL_ARB_bindless_texture ();
+static GLboolean _glewInit_GL_ARB_blend_func_extended ();
+static GLboolean _glewInit_GL_ARB_buffer_storage ();
+static GLboolean _glewInit_GL_ARB_cl_event ();
+static GLboolean _glewInit_GL_ARB_clear_buffer_object ();
+static GLboolean _glewInit_GL_ARB_clear_texture ();
+static GLboolean _glewInit_GL_ARB_clip_control ();
+static GLboolean _glewInit_GL_ARB_color_buffer_float ();
+static GLboolean _glewInit_GL_ARB_compute_shader ();
+static GLboolean _glewInit_GL_ARB_compute_variable_group_size ();
+static GLboolean _glewInit_GL_ARB_copy_buffer ();
+static GLboolean _glewInit_GL_ARB_copy_image ();
+static GLboolean _glewInit_GL_ARB_debug_output ();
+static GLboolean _glewInit_GL_ARB_direct_state_access ();
+static GLboolean _glewInit_GL_ARB_draw_buffers ();
+static GLboolean _glewInit_GL_ARB_draw_buffers_blend ();
+static GLboolean _glewInit_GL_ARB_draw_elements_base_vertex ();
+static GLboolean _glewInit_GL_ARB_draw_indirect ();
+static GLboolean _glewInit_GL_ARB_framebuffer_no_attachments ();
+static GLboolean _glewInit_GL_ARB_framebuffer_object ();
+static GLboolean _glewInit_GL_ARB_geometry_shader4 ();
+static GLboolean _glewInit_GL_ARB_get_program_binary ();
+static GLboolean _glewInit_GL_ARB_get_texture_sub_image ();
+static GLboolean _glewInit_GL_ARB_gl_spirv ();
+static GLboolean _glewInit_GL_ARB_gpu_shader_fp64 ();
+static GLboolean _glewInit_GL_ARB_gpu_shader_int64 ();
+static GLboolean _glewInit_GL_ARB_imaging ();
+static GLboolean _glewInit_GL_ARB_indirect_parameters ();
+static GLboolean _glewInit_GL_ARB_instanced_arrays ();
+static GLboolean _glewInit_GL_ARB_internalformat_query ();
+static GLboolean _glewInit_GL_ARB_internalformat_query2 ();
+static GLboolean _glewInit_GL_ARB_invalidate_subdata ();
+static GLboolean _glewInit_GL_ARB_map_buffer_range ();
+static GLboolean _glewInit_GL_ARB_matrix_palette ();
+static GLboolean _glewInit_GL_ARB_multi_bind ();
+static GLboolean _glewInit_GL_ARB_multi_draw_indirect ();
+static GLboolean _glewInit_GL_ARB_multisample ();
+static GLboolean _glewInit_GL_ARB_multitexture ();
+static GLboolean _glewInit_GL_ARB_occlusion_query ();
+static GLboolean _glewInit_GL_ARB_parallel_shader_compile ();
+static GLboolean _glewInit_GL_ARB_point_parameters ();
+static GLboolean _glewInit_GL_ARB_polygon_offset_clamp ();
+static GLboolean _glewInit_GL_ARB_program_interface_query ();
+static GLboolean _glewInit_GL_ARB_provoking_vertex ();
+static GLboolean _glewInit_GL_ARB_robustness ();
+static GLboolean _glewInit_GL_ARB_sample_locations ();
+static GLboolean _glewInit_GL_ARB_sample_shading ();
+static GLboolean _glewInit_GL_ARB_sampler_objects ();
+static GLboolean _glewInit_GL_ARB_separate_shader_objects ();
+static GLboolean _glewInit_GL_ARB_shader_atomic_counters ();
+static GLboolean _glewInit_GL_ARB_shader_image_load_store ();
+static GLboolean _glewInit_GL_ARB_shader_objects ();
+static GLboolean _glewInit_GL_ARB_shader_storage_buffer_object ();
+static GLboolean _glewInit_GL_ARB_shader_subroutine ();
+static GLboolean _glewInit_GL_ARB_shading_language_include ();
+static GLboolean _glewInit_GL_ARB_sparse_buffer ();
+static GLboolean _glewInit_GL_ARB_sparse_texture ();
+static GLboolean _glewInit_GL_ARB_sync ();
+static GLboolean _glewInit_GL_ARB_tessellation_shader ();
+static GLboolean _glewInit_GL_ARB_texture_barrier ();
+static GLboolean _glewInit_GL_ARB_texture_buffer_object ();
+static GLboolean _glewInit_GL_ARB_texture_buffer_range ();
+static GLboolean _glewInit_GL_ARB_texture_compression ();
+static GLboolean _glewInit_GL_ARB_texture_multisample ();
+static GLboolean _glewInit_GL_ARB_texture_storage ();
+static GLboolean _glewInit_GL_ARB_texture_storage_multisample ();
+static GLboolean _glewInit_GL_ARB_texture_view ();
+static GLboolean _glewInit_GL_ARB_timer_query ();
+static GLboolean _glewInit_GL_ARB_transform_feedback2 ();
+static GLboolean _glewInit_GL_ARB_transform_feedback3 ();
+static GLboolean _glewInit_GL_ARB_transform_feedback_instanced ();
+static GLboolean _glewInit_GL_ARB_transpose_matrix ();
+static GLboolean _glewInit_GL_ARB_uniform_buffer_object ();
+static GLboolean _glewInit_GL_ARB_vertex_array_object ();
+static GLboolean _glewInit_GL_ARB_vertex_attrib_64bit ();
+static GLboolean _glewInit_GL_ARB_vertex_attrib_binding ();
+static GLboolean _glewInit_GL_ARB_vertex_blend ();
+static GLboolean _glewInit_GL_ARB_vertex_buffer_object ();
+static GLboolean _glewInit_GL_ARB_vertex_program ();
+static GLboolean _glewInit_GL_ARB_vertex_shader ();
+static GLboolean _glewInit_GL_ARB_vertex_type_2_10_10_10_rev ();
+static GLboolean _glewInit_GL_ARB_viewport_array ();
+static GLboolean _glewInit_GL_ARB_window_pos ();
+static GLboolean _glewInit_GL_ATI_draw_buffers ();
+static GLboolean _glewInit_GL_ATI_element_array ();
+static GLboolean _glewInit_GL_ATI_envmap_bumpmap ();
+static GLboolean _glewInit_GL_ATI_fragment_shader ();
+static GLboolean _glewInit_GL_ATI_map_object_buffer ();
+static GLboolean _glewInit_GL_ATI_pn_triangles ();
+static GLboolean _glewInit_GL_ATI_separate_stencil ();
+static GLboolean _glewInit_GL_ATI_vertex_array_object ();
+static GLboolean _glewInit_GL_ATI_vertex_attrib_array_object ();
+static GLboolean _glewInit_GL_ATI_vertex_streams ();
+static GLboolean _glewInit_GL_EXT_EGL_image_storage ();
+static GLboolean _glewInit_GL_EXT_base_instance ();
+static GLboolean _glewInit_GL_EXT_bindable_uniform ();
+static GLboolean _glewInit_GL_EXT_blend_color ();
+static GLboolean _glewInit_GL_EXT_blend_equation_separate ();
+static GLboolean _glewInit_GL_EXT_blend_func_extended ();
+static GLboolean _glewInit_GL_EXT_blend_func_separate ();
+static GLboolean _glewInit_GL_EXT_blend_minmax ();
+static GLboolean _glewInit_GL_EXT_buffer_storage ();
+static GLboolean _glewInit_GL_EXT_clear_texture ();
+static GLboolean _glewInit_GL_EXT_clip_control ();
+static GLboolean _glewInit_GL_EXT_color_subtable ();
+static GLboolean _glewInit_GL_EXT_compiled_vertex_array ();
+static GLboolean _glewInit_GL_EXT_convolution ();
+static GLboolean _glewInit_GL_EXT_coordinate_frame ();
+static GLboolean _glewInit_GL_EXT_copy_image ();
+static GLboolean _glewInit_GL_EXT_copy_texture ();
+static GLboolean _glewInit_GL_EXT_cull_vertex ();
+static GLboolean _glewInit_GL_EXT_debug_label ();
+static GLboolean _glewInit_GL_EXT_debug_marker ();
+static GLboolean _glewInit_GL_EXT_depth_bounds_test ();
+static GLboolean _glewInit_GL_EXT_direct_state_access ();
+static GLboolean _glewInit_GL_EXT_discard_framebuffer ();
+static GLboolean _glewInit_GL_EXT_disjoint_timer_query ();
+static GLboolean _glewInit_GL_EXT_draw_buffers ();
+static GLboolean _glewInit_GL_EXT_draw_buffers2 ();
+static GLboolean _glewInit_GL_EXT_draw_buffers_indexed ();
+static GLboolean _glewInit_GL_EXT_draw_elements_base_vertex ();
+static GLboolean _glewInit_GL_EXT_draw_instanced ();
+static GLboolean _glewInit_GL_EXT_draw_range_elements ();
+static GLboolean _glewInit_GL_EXT_draw_transform_feedback ();
+static GLboolean _glewInit_GL_EXT_external_buffer ();
+static GLboolean _glewInit_GL_EXT_fog_coord ();
+static GLboolean _glewInit_GL_EXT_fragment_lighting ();
+static GLboolean _glewInit_GL_EXT_framebuffer_blit ();
+static GLboolean _glewInit_GL_EXT_framebuffer_multisample ();
+static GLboolean _glewInit_GL_EXT_framebuffer_object ();
+static GLboolean _glewInit_GL_EXT_geometry_shader4 ();
+static GLboolean _glewInit_GL_EXT_gpu_program_parameters ();
+static GLboolean _glewInit_GL_EXT_gpu_shader4 ();
+static GLboolean _glewInit_GL_EXT_histogram ();
+static GLboolean _glewInit_GL_EXT_index_func ();
+static GLboolean _glewInit_GL_EXT_index_material ();
+static GLboolean _glewInit_GL_EXT_instanced_arrays ();
+static GLboolean _glewInit_GL_EXT_light_texture ();
+static GLboolean _glewInit_GL_EXT_map_buffer_range ();
+static GLboolean _glewInit_GL_EXT_memory_object ();
+static GLboolean _glewInit_GL_EXT_memory_object_fd ();
+static GLboolean _glewInit_GL_EXT_memory_object_win32 ();
+static GLboolean _glewInit_GL_EXT_multi_draw_arrays ();
+static GLboolean _glewInit_GL_EXT_multi_draw_indirect ();
+static GLboolean _glewInit_GL_EXT_multisample ();
+static GLboolean _glewInit_GL_EXT_multisampled_render_to_texture ();
+static GLboolean _glewInit_GL_EXT_multiview_draw_buffers ();
+static GLboolean _glewInit_GL_EXT_paletted_texture ();
+static GLboolean _glewInit_GL_EXT_pixel_transform ();
+static GLboolean _glewInit_GL_EXT_point_parameters ();
+static GLboolean _glewInit_GL_EXT_polygon_offset ();
+static GLboolean _glewInit_GL_EXT_polygon_offset_clamp ();
+static GLboolean _glewInit_GL_EXT_primitive_bounding_box ();
+static GLboolean _glewInit_GL_EXT_provoking_vertex ();
+static GLboolean _glewInit_GL_EXT_raster_multisample ();
+static GLboolean _glewInit_GL_EXT_robustness ();
+static GLboolean _glewInit_GL_EXT_scene_marker ();
+static GLboolean _glewInit_GL_EXT_secondary_color ();
+static GLboolean _glewInit_GL_EXT_semaphore ();
+static GLboolean _glewInit_GL_EXT_semaphore_fd ();
+static GLboolean _glewInit_GL_EXT_semaphore_win32 ();
+static GLboolean _glewInit_GL_EXT_separate_shader_objects ();
+static GLboolean _glewInit_GL_EXT_shader_framebuffer_fetch ();
+static GLboolean _glewInit_GL_EXT_shader_image_load_store ();
+static GLboolean _glewInit_GL_EXT_shader_pixel_local_storage2 ();
+static GLboolean _glewInit_GL_EXT_sparse_texture ();
+static GLboolean _glewInit_GL_EXT_stencil_two_side ();
+static GLboolean _glewInit_GL_EXT_subtexture ();
+static GLboolean _glewInit_GL_EXT_tessellation_point_size ();
+static GLboolean _glewInit_GL_EXT_texture3D ();
+static GLboolean _glewInit_GL_EXT_texture_array ();
+static GLboolean _glewInit_GL_EXT_texture_border_clamp ();
+static GLboolean _glewInit_GL_EXT_texture_buffer_object ();
+static GLboolean _glewInit_GL_EXT_texture_integer ();
+static GLboolean _glewInit_GL_EXT_texture_object ();
+static GLboolean _glewInit_GL_EXT_texture_perturb_normal ();
+static GLboolean _glewInit_GL_EXT_texture_storage ();
+static GLboolean _glewInit_GL_EXT_texture_storage_compression ();
+static GLboolean _glewInit_GL_EXT_texture_view ();
+static GLboolean _glewInit_GL_EXT_timer_query ();
+static GLboolean _glewInit_GL_EXT_transform_feedback ();
+static GLboolean _glewInit_GL_EXT_vertex_array ();
+static GLboolean _glewInit_GL_EXT_vertex_array_setXXX ();
+static GLboolean _glewInit_GL_EXT_vertex_attrib_64bit ();
+static GLboolean _glewInit_GL_EXT_vertex_shader ();
+static GLboolean _glewInit_GL_EXT_vertex_weighting ();
+static GLboolean _glewInit_GL_EXT_win32_keyed_mutex ();
+static GLboolean _glewInit_GL_EXT_window_rectangles ();
+static GLboolean _glewInit_GL_EXT_x11_sync_object ();
+static GLboolean _glewInit_GL_GREMEDY_frame_terminator ();
+static GLboolean _glewInit_GL_GREMEDY_string_marker ();
+static GLboolean _glewInit_GL_HP_image_transform ();
+static GLboolean _glewInit_GL_IBM_multimode_draw_arrays ();
+static GLboolean _glewInit_GL_IBM_vertex_array_lists ();
+static GLboolean _glewInit_GL_IMG_bindless_texture ();
+static GLboolean _glewInit_GL_IMG_framebuffer_downsample ();
+static GLboolean _glewInit_GL_IMG_multisampled_render_to_texture ();
+static GLboolean _glewInit_GL_INTEL_framebuffer_CMAA ();
+static GLboolean _glewInit_GL_INTEL_map_texture ();
+static GLboolean _glewInit_GL_INTEL_parallel_arrays ();
+static GLboolean _glewInit_GL_INTEL_performance_query ();
+static GLboolean _glewInit_GL_INTEL_texture_scissor ();
+static GLboolean _glewInit_GL_KHR_blend_equation_advanced ();
+static GLboolean _glewInit_GL_KHR_debug ();
+static GLboolean _glewInit_GL_KHR_parallel_shader_compile ();
+static GLboolean _glewInit_GL_KHR_robustness ();
+static GLboolean _glewInit_GL_KTX_buffer_region ();
+static GLboolean _glewInit_GL_MESA_framebuffer_flip_y ();
+static GLboolean _glewInit_GL_MESA_resize_buffers ();
+static GLboolean _glewInit_GL_MESA_window_pos ();
+static GLboolean _glewInit_GL_NVX_conditional_render ();
+static GLboolean _glewInit_GL_NVX_gpu_multicast2 ();
+static GLboolean _glewInit_GL_NVX_linked_gpu_multicast ();
+static GLboolean _glewInit_GL_NVX_progress_fence ();
+static GLboolean _glewInit_GL_NV_3dvision_settings ();
+static GLboolean _glewInit_GL_NV_alpha_to_coverage_dither_control ();
+static GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect ();
+static GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect_count ();
+static GLboolean _glewInit_GL_NV_bindless_texture ();
+static GLboolean _glewInit_GL_NV_blend_equation_advanced ();
+static GLboolean _glewInit_GL_NV_clip_space_w_scaling ();
+static GLboolean _glewInit_GL_NV_command_list ();
+static GLboolean _glewInit_GL_NV_conditional_render ();
+static GLboolean _glewInit_GL_NV_conservative_raster ();
+static GLboolean _glewInit_GL_NV_conservative_raster_dilate ();
+static GLboolean _glewInit_GL_NV_conservative_raster_pre_snap_triangles ();
+static GLboolean _glewInit_GL_NV_copy_buffer ();
+static GLboolean _glewInit_GL_NV_copy_image ();
+static GLboolean _glewInit_GL_NV_depth_buffer_float ();
+static GLboolean _glewInit_GL_NV_draw_buffers ();
+static GLboolean _glewInit_GL_NV_draw_instanced ();
+static GLboolean _glewInit_GL_NV_draw_texture ();
+static GLboolean _glewInit_GL_NV_draw_vulkan_image ();
+static GLboolean _glewInit_GL_NV_evaluators ();
+static GLboolean _glewInit_GL_NV_explicit_multisample ();
+static GLboolean _glewInit_GL_NV_fence ();
+static GLboolean _glewInit_GL_NV_fragment_coverage_to_color ();
+static GLboolean _glewInit_GL_NV_fragment_program ();
+static GLboolean _glewInit_GL_NV_framebuffer_blit ();
+static GLboolean _glewInit_GL_NV_framebuffer_multisample ();
+static GLboolean _glewInit_GL_NV_framebuffer_multisample_coverage ();
+static GLboolean _glewInit_GL_NV_geometry_program4 ();
+static GLboolean _glewInit_GL_NV_gpu_multicast ();
+static GLboolean _glewInit_GL_NV_gpu_program4 ();
+static GLboolean _glewInit_GL_NV_gpu_shader5 ();
+static GLboolean _glewInit_GL_NV_half_float ();
+static GLboolean _glewInit_GL_NV_instanced_arrays ();
+static GLboolean _glewInit_GL_NV_internalformat_sample_query ();
+static GLboolean _glewInit_GL_NV_memory_attachment ();
+static GLboolean _glewInit_GL_NV_memory_object_sparse ();
+static GLboolean _glewInit_GL_NV_mesh_shader ();
+static GLboolean _glewInit_GL_NV_non_square_matrices ();
+static GLboolean _glewInit_GL_NV_occlusion_query ();
+static GLboolean _glewInit_GL_NV_parameter_buffer_object ();
+static GLboolean _glewInit_GL_NV_path_rendering ();
+static GLboolean _glewInit_GL_NV_pixel_data_range ();
+static GLboolean _glewInit_GL_NV_point_sprite ();
+static GLboolean _glewInit_GL_NV_polygon_mode ();
+static GLboolean _glewInit_GL_NV_present_video ();
+static GLboolean _glewInit_GL_NV_primitive_restart ();
+static GLboolean _glewInit_GL_NV_read_buffer ();
+static GLboolean _glewInit_GL_NV_register_combiners ();
+static GLboolean _glewInit_GL_NV_register_combiners2 ();
+static GLboolean _glewInit_GL_NV_sample_locations ();
+static GLboolean _glewInit_GL_NV_scissor_exclusive ();
+static GLboolean _glewInit_GL_NV_shader_buffer_load ();
+static GLboolean _glewInit_GL_NV_shading_rate_image ();
+static GLboolean _glewInit_GL_NV_texture_array ();
+static GLboolean _glewInit_GL_NV_texture_barrier ();
+static GLboolean _glewInit_GL_NV_texture_multisample ();
+static GLboolean _glewInit_GL_NV_timeline_semaphore ();
+static GLboolean _glewInit_GL_NV_transform_feedback ();
+static GLboolean _glewInit_GL_NV_transform_feedback2 ();
+static GLboolean _glewInit_GL_NV_vdpau_interop ();
+static GLboolean _glewInit_GL_NV_vdpau_interop2 ();
+static GLboolean _glewInit_GL_NV_vertex_array_range ();
+static GLboolean _glewInit_GL_NV_vertex_attrib_integer_64bit ();
+static GLboolean _glewInit_GL_NV_vertex_buffer_unified_memory ();
+static GLboolean _glewInit_GL_NV_vertex_program ();
+static GLboolean _glewInit_GL_NV_video_capture ();
+static GLboolean _glewInit_GL_NV_viewport_array ();
+static GLboolean _glewInit_GL_NV_viewport_swizzle ();
+static GLboolean _glewInit_GL_OES_EGL_image ();
+static GLboolean _glewInit_GL_OES_blend_equation_separate ();
+static GLboolean _glewInit_GL_OES_blend_func_separate ();
+static GLboolean _glewInit_GL_OES_blend_subtract ();
+static GLboolean _glewInit_GL_OES_copy_image ();
+static GLboolean _glewInit_GL_OES_draw_buffers_indexed ();
+static GLboolean _glewInit_GL_OES_framebuffer_object ();
+static GLboolean _glewInit_GL_OES_get_program_binary ();
+static GLboolean _glewInit_GL_OES_mapbuffer ();
+static GLboolean _glewInit_GL_OES_matrix_palette ();
+static GLboolean _glewInit_GL_OES_sample_shading ();
+static GLboolean _glewInit_GL_OES_single_precision ();
+static GLboolean _glewInit_GL_OES_texture_3D ();
+static GLboolean _glewInit_GL_OES_texture_border_clamp ();
+static GLboolean _glewInit_GL_OES_texture_buffer ();
+static GLboolean _glewInit_GL_OES_texture_cube_map ();
+static GLboolean _glewInit_GL_OES_texture_storage_multisample_2d_array ();
+static GLboolean _glewInit_GL_OES_texture_view ();
+static GLboolean _glewInit_GL_OES_vertex_array_object ();
+static GLboolean _glewInit_GL_OVR_multiview ();
+static GLboolean _glewInit_GL_OVR_multiview_multisampled_render_to_texture ();
+static GLboolean _glewInit_GL_QCOM_alpha_test ();
+static GLboolean _glewInit_GL_QCOM_driver_control ();
+static GLboolean _glewInit_GL_QCOM_extended_get ();
+static GLboolean _glewInit_GL_QCOM_extended_get2 ();
+static GLboolean _glewInit_GL_QCOM_frame_extrapolation ();
+static GLboolean _glewInit_GL_QCOM_framebuffer_foveated ();
+static GLboolean _glewInit_GL_QCOM_motion_estimation ();
+static GLboolean _glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent ();
+static GLboolean _glewInit_GL_QCOM_shading_rate ();
+static GLboolean _glewInit_GL_QCOM_texture_foveated ();
+static GLboolean _glewInit_GL_QCOM_tiled_rendering ();
+static GLboolean _glewInit_GL_REGAL_ES1_0_compatibility ();
+static GLboolean _glewInit_GL_REGAL_ES1_1_compatibility ();
+static GLboolean _glewInit_GL_REGAL_error_string ();
+static GLboolean _glewInit_GL_REGAL_extension_query ();
+static GLboolean _glewInit_GL_REGAL_log ();
+static GLboolean _glewInit_GL_REGAL_proc_address ();
+static GLboolean _glewInit_GL_SGIS_detail_texture ();
+static GLboolean _glewInit_GL_SGIS_fog_function ();
+static GLboolean _glewInit_GL_SGIS_multisample ();
+static GLboolean _glewInit_GL_SGIS_multitexture ();
+static GLboolean _glewInit_GL_SGIS_shared_multisample ();
+static GLboolean _glewInit_GL_SGIS_sharpen_texture ();
+static GLboolean _glewInit_GL_SGIS_texture4D ();
+static GLboolean _glewInit_GL_SGIS_texture_filter4 ();
+static GLboolean _glewInit_GL_SGIX_async ();
+static GLboolean _glewInit_GL_SGIX_datapipe ();
+static GLboolean _glewInit_GL_SGIX_flush_raster ();
+static GLboolean _glewInit_GL_SGIX_fog_layers ();
+static GLboolean _glewInit_GL_SGIX_fog_texture ();
+static GLboolean _glewInit_GL_SGIX_fragment_specular_lighting ();
+static GLboolean _glewInit_GL_SGIX_framezoom ();
+static GLboolean _glewInit_GL_SGIX_igloo_interface ();
+static GLboolean _glewInit_GL_SGIX_mpeg1 ();
+static GLboolean _glewInit_GL_SGIX_nonlinear_lighting_pervertex ();
+static GLboolean _glewInit_GL_SGIX_pixel_texture ();
+static GLboolean _glewInit_GL_SGIX_polynomial_ffd ();
+static GLboolean _glewInit_GL_SGIX_quad_mesh ();
+static GLboolean _glewInit_GL_SGIX_reference_plane ();
+static GLboolean _glewInit_GL_SGIX_sprite ();
+static GLboolean _glewInit_GL_SGIX_tag_sample_buffer ();
+static GLboolean _glewInit_GL_SGIX_vector_ops ();
+static GLboolean _glewInit_GL_SGIX_vertex_array_object ();
+static GLboolean _glewInit_GL_SGI_color_table ();
+static GLboolean _glewInit_GL_SGI_fft ();
+static GLboolean _glewInit_GL_SUNX_constant_data ();
+static GLboolean _glewInit_GL_SUN_global_alpha ();
+static GLboolean _glewInit_GL_SUN_read_video_pixels ();
+static GLboolean _glewInit_GL_SUN_triangle_list ();
+static GLboolean _glewInit_GL_SUN_vertex ();
+static GLboolean _glewInit_GL_WIN_swap_hint ();
+
+#ifdef GL_VERSION_1_2
+
+static GLboolean _glewInit_GL_VERSION_1_2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3D")) == NULL) || r;
+ r = ((glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElements")) == NULL) || r;
+ r = ((glTexImage3D = (PFNGLTEXIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTexImage3D")) == NULL) || r;
+ r = ((glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_1_2 */
+
+#ifdef GL_VERSION_1_3
+
+static GLboolean _glewInit_GL_VERSION_1_3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveTexture = (PFNGLACTIVETEXTUREPROC)glewGetProcAddress((const GLubyte*)"glActiveTexture")) == NULL) || r;
+ r = ((glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)glewGetProcAddress((const GLubyte*)"glClientActiveTexture")) == NULL) || r;
+ r = ((glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage1D")) == NULL) || r;
+ r = ((glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage2D")) == NULL) || r;
+ r = ((glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3D")) == NULL) || r;
+ r = ((glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage1D")) == NULL) || r;
+ r = ((glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage2D")) == NULL) || r;
+ r = ((glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3D")) == NULL) || r;
+ r = ((glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTexImage")) == NULL) || r;
+ r = ((glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixd")) == NULL) || r;
+ r = ((glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixf")) == NULL) || r;
+ r = ((glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixd")) == NULL) || r;
+ r = ((glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixf")) == NULL) || r;
+ r = ((glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1d")) == NULL) || r;
+ r = ((glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dv")) == NULL) || r;
+ r = ((glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1f")) == NULL) || r;
+ r = ((glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fv")) == NULL) || r;
+ r = ((glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1i")) == NULL) || r;
+ r = ((glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1iv")) == NULL) || r;
+ r = ((glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1s")) == NULL) || r;
+ r = ((glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1sv")) == NULL) || r;
+ r = ((glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2d")) == NULL) || r;
+ r = ((glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dv")) == NULL) || r;
+ r = ((glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2f")) == NULL) || r;
+ r = ((glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fv")) == NULL) || r;
+ r = ((glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2i")) == NULL) || r;
+ r = ((glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2iv")) == NULL) || r;
+ r = ((glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2s")) == NULL) || r;
+ r = ((glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2sv")) == NULL) || r;
+ r = ((glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3d")) == NULL) || r;
+ r = ((glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dv")) == NULL) || r;
+ r = ((glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3f")) == NULL) || r;
+ r = ((glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fv")) == NULL) || r;
+ r = ((glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3i")) == NULL) || r;
+ r = ((glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3iv")) == NULL) || r;
+ r = ((glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3s")) == NULL) || r;
+ r = ((glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3sv")) == NULL) || r;
+ r = ((glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4d")) == NULL) || r;
+ r = ((glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dv")) == NULL) || r;
+ r = ((glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4f")) == NULL) || r;
+ r = ((glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fv")) == NULL) || r;
+ r = ((glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4i")) == NULL) || r;
+ r = ((glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4iv")) == NULL) || r;
+ r = ((glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4s")) == NULL) || r;
+ r = ((glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4sv")) == NULL) || r;
+ r = ((glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)glewGetProcAddress((const GLubyte*)"glSampleCoverage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_1_3 */
+
+#ifdef GL_VERSION_1_4
+
+static GLboolean _glewInit_GL_VERSION_1_4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendColor = (PFNGLBLENDCOLORPROC)glewGetProcAddress((const GLubyte*)"glBlendColor")) == NULL) || r;
+ r = ((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)"glBlendEquation")) == NULL) || r;
+ r = ((glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparate")) == NULL) || r;
+ r = ((glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointer")) == NULL) || r;
+ r = ((glFogCoordd = (PFNGLFOGCOORDDPROC)glewGetProcAddress((const GLubyte*)"glFogCoordd")) == NULL) || r;
+ r = ((glFogCoorddv = (PFNGLFOGCOORDDVPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddv")) == NULL) || r;
+ r = ((glFogCoordf = (PFNGLFOGCOORDFPROC)glewGetProcAddress((const GLubyte*)"glFogCoordf")) == NULL) || r;
+ r = ((glFogCoordfv = (PFNGLFOGCOORDFVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfv")) == NULL) || r;
+ r = ((glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArrays")) == NULL) || r;
+ r = ((glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElements")) == NULL) || r;
+ r = ((glPointParameterf = (PFNGLPOINTPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glPointParameterf")) == NULL) || r;
+ r = ((glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfv")) == NULL) || r;
+ r = ((glPointParameteri = (PFNGLPOINTPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glPointParameteri")) == NULL) || r;
+ r = ((glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glPointParameteriv")) == NULL) || r;
+ r = ((glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3b")) == NULL) || r;
+ r = ((glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bv")) == NULL) || r;
+ r = ((glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3d")) == NULL) || r;
+ r = ((glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dv")) == NULL) || r;
+ r = ((glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3f")) == NULL) || r;
+ r = ((glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fv")) == NULL) || r;
+ r = ((glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3i")) == NULL) || r;
+ r = ((glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3iv")) == NULL) || r;
+ r = ((glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3s")) == NULL) || r;
+ r = ((glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3sv")) == NULL) || r;
+ r = ((glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ub")) == NULL) || r;
+ r = ((glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubv")) == NULL) || r;
+ r = ((glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ui")) == NULL) || r;
+ r = ((glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uiv")) == NULL) || r;
+ r = ((glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3us")) == NULL) || r;
+ r = ((glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usv")) == NULL) || r;
+ r = ((glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointer")) == NULL) || r;
+ r = ((glWindowPos2d = (PFNGLWINDOWPOS2DPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2d")) == NULL) || r;
+ r = ((glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dv")) == NULL) || r;
+ r = ((glWindowPos2f = (PFNGLWINDOWPOS2FPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2f")) == NULL) || r;
+ r = ((glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fv")) == NULL) || r;
+ r = ((glWindowPos2i = (PFNGLWINDOWPOS2IPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2i")) == NULL) || r;
+ r = ((glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iv")) == NULL) || r;
+ r = ((glWindowPos2s = (PFNGLWINDOWPOS2SPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2s")) == NULL) || r;
+ r = ((glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sv")) == NULL) || r;
+ r = ((glWindowPos3d = (PFNGLWINDOWPOS3DPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3d")) == NULL) || r;
+ r = ((glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dv")) == NULL) || r;
+ r = ((glWindowPos3f = (PFNGLWINDOWPOS3FPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3f")) == NULL) || r;
+ r = ((glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fv")) == NULL) || r;
+ r = ((glWindowPos3i = (PFNGLWINDOWPOS3IPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3i")) == NULL) || r;
+ r = ((glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iv")) == NULL) || r;
+ r = ((glWindowPos3s = (PFNGLWINDOWPOS3SPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3s")) == NULL) || r;
+ r = ((glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_1_4 */
+
+#ifdef GL_VERSION_1_5
+
+static GLboolean _glewInit_GL_VERSION_1_5 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQuery = (PFNGLBEGINQUERYPROC)glewGetProcAddress((const GLubyte*)"glBeginQuery")) == NULL) || r;
+ r = ((glBindBuffer = (PFNGLBINDBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindBuffer")) == NULL) || r;
+ r = ((glBufferData = (PFNGLBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glBufferData")) == NULL) || r;
+ r = ((glBufferSubData = (PFNGLBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glBufferSubData")) == NULL) || r;
+ r = ((glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteBuffers")) == NULL) || r;
+ r = ((glDeleteQueries = (PFNGLDELETEQUERIESPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueries")) == NULL) || r;
+ r = ((glEndQuery = (PFNGLENDQUERYPROC)glewGetProcAddress((const GLubyte*)"glEndQuery")) == NULL) || r;
+ r = ((glGenBuffers = (PFNGLGENBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenBuffers")) == NULL) || r;
+ r = ((glGenQueries = (PFNGLGENQUERIESPROC)glewGetProcAddress((const GLubyte*)"glGenQueries")) == NULL) || r;
+ r = ((glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameteriv")) == NULL) || r;
+ r = ((glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferPointerv")) == NULL) || r;
+ r = ((glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glGetBufferSubData")) == NULL) || r;
+ r = ((glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectiv")) == NULL) || r;
+ r = ((glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuiv")) == NULL) || r;
+ r = ((glGetQueryiv = (PFNGLGETQUERYIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryiv")) == NULL) || r;
+ r = ((glIsBuffer = (PFNGLISBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsBuffer")) == NULL) || r;
+ r = ((glIsQuery = (PFNGLISQUERYPROC)glewGetProcAddress((const GLubyte*)"glIsQuery")) == NULL) || r;
+ r = ((glMapBuffer = (PFNGLMAPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glMapBuffer")) == NULL) || r;
+ r = ((glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glUnmapBuffer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_1_5 */
+
+#ifdef GL_VERSION_2_0
+
+static GLboolean _glewInit_GL_VERSION_2_0 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAttachShader = (PFNGLATTACHSHADERPROC)glewGetProcAddress((const GLubyte*)"glAttachShader")) == NULL) || r;
+ r = ((glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glBindAttribLocation")) == NULL) || r;
+ r = ((glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparate")) == NULL) || r;
+ r = ((glCompileShader = (PFNGLCOMPILESHADERPROC)glewGetProcAddress((const GLubyte*)"glCompileShader")) == NULL) || r;
+ r = ((glCreateProgram = (PFNGLCREATEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glCreateProgram")) == NULL) || r;
+ r = ((glCreateShader = (PFNGLCREATESHADERPROC)glewGetProcAddress((const GLubyte*)"glCreateShader")) == NULL) || r;
+ r = ((glDeleteProgram = (PFNGLDELETEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgram")) == NULL) || r;
+ r = ((glDeleteShader = (PFNGLDELETESHADERPROC)glewGetProcAddress((const GLubyte*)"glDeleteShader")) == NULL) || r;
+ r = ((glDetachShader = (PFNGLDETACHSHADERPROC)glewGetProcAddress((const GLubyte*)"glDetachShader")) == NULL) || r;
+ r = ((glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexAttribArray")) == NULL) || r;
+ r = ((glDrawBuffers = (PFNGLDRAWBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffers")) == NULL) || r;
+ r = ((glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexAttribArray")) == NULL) || r;
+ r = ((glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveAttrib")) == NULL) || r;
+ r = ((glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniform")) == NULL) || r;
+ r = ((glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)glewGetProcAddress((const GLubyte*)"glGetAttachedShaders")) == NULL) || r;
+ r = ((glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetAttribLocation")) == NULL) || r;
+ r = ((glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)glewGetProcAddress((const GLubyte*)"glGetProgramInfoLog")) == NULL) || r;
+ r = ((glGetProgramiv = (PFNGLGETPROGRAMIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramiv")) == NULL) || r;
+ r = ((glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)glewGetProcAddress((const GLubyte*)"glGetShaderInfoLog")) == NULL) || r;
+ r = ((glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)glewGetProcAddress((const GLubyte*)"glGetShaderSource")) == NULL) || r;
+ r = ((glGetShaderiv = (PFNGLGETSHADERIVPROC)glewGetProcAddress((const GLubyte*)"glGetShaderiv")) == NULL) || r;
+ r = ((glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetUniformLocation")) == NULL) || r;
+ r = ((glGetUniformfv = (PFNGLGETUNIFORMFVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformfv")) == NULL) || r;
+ r = ((glGetUniformiv = (PFNGLGETUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformiv")) == NULL) || r;
+ r = ((glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointerv")) == NULL) || r;
+ r = ((glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdv")) == NULL) || r;
+ r = ((glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfv")) == NULL) || r;
+ r = ((glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribiv")) == NULL) || r;
+ r = ((glIsProgram = (PFNGLISPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glIsProgram")) == NULL) || r;
+ r = ((glIsShader = (PFNGLISSHADERPROC)glewGetProcAddress((const GLubyte*)"glIsShader")) == NULL) || r;
+ r = ((glLinkProgram = (PFNGLLINKPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glLinkProgram")) == NULL) || r;
+ r = ((glShaderSource = (PFNGLSHADERSOURCEPROC)glewGetProcAddress((const GLubyte*)"glShaderSource")) == NULL) || r;
+ r = ((glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilFuncSeparate")) == NULL) || r;
+ r = ((glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilMaskSeparate")) == NULL) || r;
+ r = ((glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilOpSeparate")) == NULL) || r;
+ r = ((glUniform1f = (PFNGLUNIFORM1FPROC)glewGetProcAddress((const GLubyte*)"glUniform1f")) == NULL) || r;
+ r = ((glUniform1fv = (PFNGLUNIFORM1FVPROC)glewGetProcAddress((const GLubyte*)"glUniform1fv")) == NULL) || r;
+ r = ((glUniform1i = (PFNGLUNIFORM1IPROC)glewGetProcAddress((const GLubyte*)"glUniform1i")) == NULL) || r;
+ r = ((glUniform1iv = (PFNGLUNIFORM1IVPROC)glewGetProcAddress((const GLubyte*)"glUniform1iv")) == NULL) || r;
+ r = ((glUniform2f = (PFNGLUNIFORM2FPROC)glewGetProcAddress((const GLubyte*)"glUniform2f")) == NULL) || r;
+ r = ((glUniform2fv = (PFNGLUNIFORM2FVPROC)glewGetProcAddress((const GLubyte*)"glUniform2fv")) == NULL) || r;
+ r = ((glUniform2i = (PFNGLUNIFORM2IPROC)glewGetProcAddress((const GLubyte*)"glUniform2i")) == NULL) || r;
+ r = ((glUniform2iv = (PFNGLUNIFORM2IVPROC)glewGetProcAddress((const GLubyte*)"glUniform2iv")) == NULL) || r;
+ r = ((glUniform3f = (PFNGLUNIFORM3FPROC)glewGetProcAddress((const GLubyte*)"glUniform3f")) == NULL) || r;
+ r = ((glUniform3fv = (PFNGLUNIFORM3FVPROC)glewGetProcAddress((const GLubyte*)"glUniform3fv")) == NULL) || r;
+ r = ((glUniform3i = (PFNGLUNIFORM3IPROC)glewGetProcAddress((const GLubyte*)"glUniform3i")) == NULL) || r;
+ r = ((glUniform3iv = (PFNGLUNIFORM3IVPROC)glewGetProcAddress((const GLubyte*)"glUniform3iv")) == NULL) || r;
+ r = ((glUniform4f = (PFNGLUNIFORM4FPROC)glewGetProcAddress((const GLubyte*)"glUniform4f")) == NULL) || r;
+ r = ((glUniform4fv = (PFNGLUNIFORM4FVPROC)glewGetProcAddress((const GLubyte*)"glUniform4fv")) == NULL) || r;
+ r = ((glUniform4i = (PFNGLUNIFORM4IPROC)glewGetProcAddress((const GLubyte*)"glUniform4i")) == NULL) || r;
+ r = ((glUniform4iv = (PFNGLUNIFORM4IVPROC)glewGetProcAddress((const GLubyte*)"glUniform4iv")) == NULL) || r;
+ r = ((glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2fv")) == NULL) || r;
+ r = ((glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3fv")) == NULL) || r;
+ r = ((glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4fv")) == NULL) || r;
+ r = ((glUseProgram = (PFNGLUSEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glUseProgram")) == NULL) || r;
+ r = ((glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glValidateProgram")) == NULL) || r;
+ r = ((glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1d")) == NULL) || r;
+ r = ((glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dv")) == NULL) || r;
+ r = ((glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1f")) == NULL) || r;
+ r = ((glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fv")) == NULL) || r;
+ r = ((glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1s")) == NULL) || r;
+ r = ((glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sv")) == NULL) || r;
+ r = ((glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2d")) == NULL) || r;
+ r = ((glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dv")) == NULL) || r;
+ r = ((glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2f")) == NULL) || r;
+ r = ((glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fv")) == NULL) || r;
+ r = ((glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2s")) == NULL) || r;
+ r = ((glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sv")) == NULL) || r;
+ r = ((glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3d")) == NULL) || r;
+ r = ((glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dv")) == NULL) || r;
+ r = ((glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3f")) == NULL) || r;
+ r = ((glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fv")) == NULL) || r;
+ r = ((glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3s")) == NULL) || r;
+ r = ((glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sv")) == NULL) || r;
+ r = ((glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nbv")) == NULL) || r;
+ r = ((glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Niv")) == NULL) || r;
+ r = ((glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nsv")) == NULL) || r;
+ r = ((glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nub")) == NULL) || r;
+ r = ((glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nubv")) == NULL) || r;
+ r = ((glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nuiv")) == NULL) || r;
+ r = ((glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nusv")) == NULL) || r;
+ r = ((glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4bv")) == NULL) || r;
+ r = ((glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4d")) == NULL) || r;
+ r = ((glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dv")) == NULL) || r;
+ r = ((glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4f")) == NULL) || r;
+ r = ((glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fv")) == NULL) || r;
+ r = ((glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4iv")) == NULL) || r;
+ r = ((glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4s")) == NULL) || r;
+ r = ((glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sv")) == NULL) || r;
+ r = ((glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubv")) == NULL) || r;
+ r = ((glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4uiv")) == NULL) || r;
+ r = ((glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4usv")) == NULL) || r;
+ r = ((glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_2_0 */
+
+#ifdef GL_VERSION_2_1
+
+static GLboolean _glewInit_GL_VERSION_2_1 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x3fv")) == NULL) || r;
+ r = ((glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x4fv")) == NULL) || r;
+ r = ((glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x2fv")) == NULL) || r;
+ r = ((glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x4fv")) == NULL) || r;
+ r = ((glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x2fv")) == NULL) || r;
+ r = ((glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x3fv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_2_1 */
+
+#ifdef GL_VERSION_3_0
+
+static GLboolean _glewInit_GL_VERSION_3_0 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = _glewInit_GL_ARB_framebuffer_object() || r;
+ r = _glewInit_GL_ARB_map_buffer_range() || r;
+ r = _glewInit_GL_ARB_uniform_buffer_object() || r;
+ r = _glewInit_GL_ARB_vertex_array_object() || r;
+
+ r = ((glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)glewGetProcAddress((const GLubyte*)"glBeginConditionalRender")) == NULL) || r;
+ r = ((glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedback")) == NULL) || r;
+ r = ((glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocation")) == NULL) || r;
+ r = ((glClampColor = (PFNGLCLAMPCOLORPROC)glewGetProcAddress((const GLubyte*)"glClampColor")) == NULL) || r;
+ r = ((glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)glewGetProcAddress((const GLubyte*)"glClearBufferfi")) == NULL) || r;
+ r = ((glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferfv")) == NULL) || r;
+ r = ((glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferiv")) == NULL) || r;
+ r = ((glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferuiv")) == NULL) || r;
+ r = ((glColorMaski = (PFNGLCOLORMASKIPROC)glewGetProcAddress((const GLubyte*)"glColorMaski")) == NULL) || r;
+ r = ((glDisablei = (PFNGLDISABLEIPROC)glewGetProcAddress((const GLubyte*)"glDisablei")) == NULL) || r;
+ r = ((glEnablei = (PFNGLENABLEIPROC)glewGetProcAddress((const GLubyte*)"glEnablei")) == NULL) || r;
+ r = ((glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)glewGetProcAddress((const GLubyte*)"glEndConditionalRender")) == NULL) || r;
+ r = ((glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedback")) == NULL) || r;
+ r = ((glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)glewGetProcAddress((const GLubyte*)"glGetBooleani_v")) == NULL) || r;
+ r = ((glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataLocation")) == NULL) || r;
+ r = ((glGetStringi = (PFNGLGETSTRINGIPROC)glewGetProcAddress((const GLubyte*)"glGetStringi")) == NULL) || r;
+ r = ((glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIiv")) == NULL) || r;
+ r = ((glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIuiv")) == NULL) || r;
+ r = ((glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVarying")) == NULL) || r;
+ r = ((glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformuiv")) == NULL) || r;
+ r = ((glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIiv")) == NULL) || r;
+ r = ((glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIuiv")) == NULL) || r;
+ r = ((glIsEnabledi = (PFNGLISENABLEDIPROC)glewGetProcAddress((const GLubyte*)"glIsEnabledi")) == NULL) || r;
+ r = ((glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIiv")) == NULL) || r;
+ r = ((glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIuiv")) == NULL) || r;
+ r = ((glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryings")) == NULL) || r;
+ r = ((glUniform1ui = (PFNGLUNIFORM1UIPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui")) == NULL) || r;
+ r = ((glUniform1uiv = (PFNGLUNIFORM1UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform1uiv")) == NULL) || r;
+ r = ((glUniform2ui = (PFNGLUNIFORM2UIPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui")) == NULL) || r;
+ r = ((glUniform2uiv = (PFNGLUNIFORM2UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform2uiv")) == NULL) || r;
+ r = ((glUniform3ui = (PFNGLUNIFORM3UIPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui")) == NULL) || r;
+ r = ((glUniform3uiv = (PFNGLUNIFORM3UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform3uiv")) == NULL) || r;
+ r = ((glUniform4ui = (PFNGLUNIFORM4UIPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui")) == NULL) || r;
+ r = ((glUniform4uiv = (PFNGLUNIFORM4UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform4uiv")) == NULL) || r;
+ r = ((glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1i")) == NULL) || r;
+ r = ((glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1iv")) == NULL) || r;
+ r = ((glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1ui")) == NULL) || r;
+ r = ((glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uiv")) == NULL) || r;
+ r = ((glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2i")) == NULL) || r;
+ r = ((glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2iv")) == NULL) || r;
+ r = ((glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2ui")) == NULL) || r;
+ r = ((glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uiv")) == NULL) || r;
+ r = ((glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3i")) == NULL) || r;
+ r = ((glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3iv")) == NULL) || r;
+ r = ((glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3ui")) == NULL) || r;
+ r = ((glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uiv")) == NULL) || r;
+ r = ((glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4bv")) == NULL) || r;
+ r = ((glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4i")) == NULL) || r;
+ r = ((glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4iv")) == NULL) || r;
+ r = ((glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4sv")) == NULL) || r;
+ r = ((glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ubv")) == NULL) || r;
+ r = ((glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ui")) == NULL) || r;
+ r = ((glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uiv")) == NULL) || r;
+ r = ((glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4usv")) == NULL) || r;
+ r = ((glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIPointer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_3_0 */
+
+#ifdef GL_VERSION_3_1
+
+static GLboolean _glewInit_GL_VERSION_3_1 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = _glewInit_GL_ARB_copy_buffer() || r;
+
+ r = ((glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstanced")) == NULL) || r;
+ r = ((glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstanced")) == NULL) || r;
+ r = ((glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveRestartIndex")) == NULL) || r;
+ r = ((glTexBuffer = (PFNGLTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)"glTexBuffer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_3_1 */
+
+#ifdef GL_VERSION_3_2
+
+static GLboolean _glewInit_GL_VERSION_3_2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = _glewInit_GL_ARB_draw_elements_base_vertex() || r;
+ r = _glewInit_GL_ARB_provoking_vertex() || r;
+ r = _glewInit_GL_ARB_sync() || r;
+ r = _glewInit_GL_ARB_texture_multisample() || r;
+
+ r = ((glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture")) == NULL) || r;
+ r = ((glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameteri64v")) == NULL) || r;
+ r = ((glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)glewGetProcAddress((const GLubyte*)"glGetInteger64i_v")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_3_2 */
+
+#ifdef GL_VERSION_3_3
+
+static GLboolean _glewInit_GL_VERSION_3_3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisor")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_3_3 */
+
+#ifdef GL_VERSION_4_0
+
+static GLboolean _glewInit_GL_VERSION_4_0 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparatei")) == NULL) || r;
+ r = ((glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationi")) == NULL) || r;
+ r = ((glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparatei")) == NULL) || r;
+ r = ((glBlendFunci = (PFNGLBLENDFUNCIPROC)glewGetProcAddress((const GLubyte*)"glBlendFunci")) == NULL) || r;
+ r = ((glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)glewGetProcAddress((const GLubyte*)"glMinSampleShading")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_4_0 */
+
+#ifdef GL_VERSION_4_5
+
+static GLboolean _glewInit_GL_VERSION_4_5 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)glewGetProcAddress((const GLubyte*)"glGetGraphicsResetStatus")) == NULL) || r;
+ r = ((glGetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetnCompressedTexImage")) == NULL) || r;
+ r = ((glGetnTexImage = (PFNGLGETNTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetnTexImage")) == NULL) || r;
+ r = ((glGetnUniformdv = (PFNGLGETNUNIFORMDVPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformdv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_4_5 */
+
+#ifdef GL_VERSION_4_6
+
+static GLboolean _glewInit_GL_VERSION_4_6 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectCount")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectCount")) == NULL) || r;
+ r = ((glSpecializeShader = (PFNGLSPECIALIZESHADERPROC)glewGetProcAddress((const GLubyte*)"glSpecializeShader")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_VERSION_4_6 */
+
+#ifdef GL_3DFX_tbuffer
+
+static GLboolean _glewInit_GL_3DFX_tbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)glewGetProcAddress((const GLubyte*)"glTbufferMask3DFX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_3DFX_tbuffer */
+
+#ifdef GL_AMD_debug_output
+
+static GLboolean _glewInit_GL_AMD_debug_output ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageCallbackAMD")) == NULL) || r;
+ r = ((glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageEnableAMD")) == NULL) || r;
+ r = ((glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageInsertAMD")) == NULL) || r;
+ r = ((glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)glewGetProcAddress((const GLubyte*)"glGetDebugMessageLogAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_debug_output */
+
+#ifdef GL_AMD_draw_buffers_blend
+
+static GLboolean _glewInit_GL_AMD_draw_buffers_blend ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationIndexedAMD")) == NULL) || r;
+ r = ((glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateIndexedAMD")) == NULL) || r;
+ r = ((glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncIndexedAMD")) == NULL) || r;
+ r = ((glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateIndexedAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_draw_buffers_blend */
+
+#ifdef GL_AMD_framebuffer_multisample_advanced
+
+static GLboolean _glewInit_GL_AMD_framebuffer_multisample_advanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glNamedRenderbufferStorageMultisampleAdvancedAMD = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisampleAdvancedAMD")) == NULL) || r;
+ r = ((glRenderbufferStorageMultisampleAdvancedAMD = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleAdvancedAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+
+#ifdef GL_AMD_framebuffer_sample_positions
+
+static GLboolean _glewInit_GL_AMD_framebuffer_sample_positions ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferSamplePositionsfvAMD = (PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)glewGetProcAddress((const GLubyte*)"glFramebufferSamplePositionsfvAMD")) == NULL) || r;
+ r = ((glGetFramebufferParameterfvAMD = (PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameterfvAMD")) == NULL) || r;
+ r = ((glGetNamedFramebufferParameterfvAMD = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferParameterfvAMD")) == NULL) || r;
+ r = ((glNamedFramebufferSamplePositionsfvAMD = (PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferSamplePositionsfvAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_framebuffer_sample_positions */
+
+#ifdef GL_AMD_interleaved_elements
+
+static GLboolean _glewInit_GL_AMD_interleaved_elements ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribParameteriAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_interleaved_elements */
+
+#ifdef GL_AMD_multi_draw_indirect
+
+static GLboolean _glewInit_GL_AMD_multi_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectAMD")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_multi_draw_indirect */
+
+#ifdef GL_AMD_name_gen_delete
+
+static GLboolean _glewInit_GL_AMD_name_gen_delete ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)glewGetProcAddress((const GLubyte*)"glDeleteNamesAMD")) == NULL) || r;
+ r = ((glGenNamesAMD = (PFNGLGENNAMESAMDPROC)glewGetProcAddress((const GLubyte*)"glGenNamesAMD")) == NULL) || r;
+ r = ((glIsNameAMD = (PFNGLISNAMEAMDPROC)glewGetProcAddress((const GLubyte*)"glIsNameAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_name_gen_delete */
+
+#ifdef GL_AMD_occlusion_query_event
+
+static GLboolean _glewInit_GL_AMD_occlusion_query_event ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)glewGetProcAddress((const GLubyte*)"glQueryObjectParameteruiAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_occlusion_query_event */
+
+#ifdef GL_AMD_performance_monitor
+
+static GLboolean _glewInit_GL_AMD_performance_monitor ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)glewGetProcAddress((const GLubyte*)"glBeginPerfMonitorAMD")) == NULL) || r;
+ r = ((glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)glewGetProcAddress((const GLubyte*)"glDeletePerfMonitorsAMD")) == NULL) || r;
+ r = ((glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)glewGetProcAddress((const GLubyte*)"glEndPerfMonitorAMD")) == NULL) || r;
+ r = ((glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)glewGetProcAddress((const GLubyte*)"glGenPerfMonitorsAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorCounterDataAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorCounterInfoAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorCounterStringAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorCountersAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorGroupStringAMD")) == NULL) || r;
+ r = ((glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)glewGetProcAddress((const GLubyte*)"glGetPerfMonitorGroupsAMD")) == NULL) || r;
+ r = ((glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)glewGetProcAddress((const GLubyte*)"glSelectPerfMonitorCountersAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_performance_monitor */
+
+#ifdef GL_AMD_sample_positions
+
+static GLboolean _glewInit_GL_AMD_sample_positions ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)glewGetProcAddress((const GLubyte*)"glSetMultisamplefvAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_sample_positions */
+
+#ifdef GL_AMD_sparse_texture
+
+static GLboolean _glewInit_GL_AMD_sparse_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)glewGetProcAddress((const GLubyte*)"glTexStorageSparseAMD")) == NULL) || r;
+ r = ((glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageSparseAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_sparse_texture */
+
+#ifdef GL_AMD_stencil_operation_extended
+
+static GLboolean _glewInit_GL_AMD_stencil_operation_extended ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)glewGetProcAddress((const GLubyte*)"glStencilOpValueAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_stencil_operation_extended */
+
+#ifdef GL_AMD_vertex_shader_tessellator
+
+static GLboolean _glewInit_GL_AMD_vertex_shader_tessellator ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)glewGetProcAddress((const GLubyte*)"glTessellationFactorAMD")) == NULL) || r;
+ r = ((glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)glewGetProcAddress((const GLubyte*)"glTessellationModeAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_AMD_vertex_shader_tessellator */
+
+#ifdef GL_ANGLE_framebuffer_blit
+
+static GLboolean _glewInit_GL_ANGLE_framebuffer_blit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlitFramebufferANGLE = (PFNGLBLITFRAMEBUFFERANGLEPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebufferANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_framebuffer_blit */
+
+#ifdef GL_ANGLE_framebuffer_multisample
+
+static GLboolean _glewInit_GL_ANGLE_framebuffer_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleANGLE = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_framebuffer_multisample */
+
+#ifdef GL_ANGLE_instanced_arrays
+
+static GLboolean _glewInit_GL_ANGLE_instanced_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedANGLE = (PFNGLDRAWARRAYSINSTANCEDANGLEPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedANGLE")) == NULL) || r;
+ r = ((glDrawElementsInstancedANGLE = (PFNGLDRAWELEMENTSINSTANCEDANGLEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedANGLE")) == NULL) || r;
+ r = ((glVertexAttribDivisorANGLE = (PFNGLVERTEXATTRIBDIVISORANGLEPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_instanced_arrays */
+
+#ifdef GL_ANGLE_timer_query
+
+static GLboolean _glewInit_GL_ANGLE_timer_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQueryANGLE = (PFNGLBEGINQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryANGLE")) == NULL) || r;
+ r = ((glDeleteQueriesANGLE = (PFNGLDELETEQUERIESANGLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueriesANGLE")) == NULL) || r;
+ r = ((glEndQueryANGLE = (PFNGLENDQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)"glEndQueryANGLE")) == NULL) || r;
+ r = ((glGenQueriesANGLE = (PFNGLGENQUERIESANGLEPROC)glewGetProcAddress((const GLubyte*)"glGenQueriesANGLE")) == NULL) || r;
+ r = ((glGetQueryObjecti64vANGLE = (PFNGLGETQUERYOBJECTI64VANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjecti64vANGLE")) == NULL) || r;
+ r = ((glGetQueryObjectivANGLE = (PFNGLGETQUERYOBJECTIVANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectivANGLE")) == NULL) || r;
+ r = ((glGetQueryObjectui64vANGLE = (PFNGLGETQUERYOBJECTUI64VANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectui64vANGLE")) == NULL) || r;
+ r = ((glGetQueryObjectuivANGLE = (PFNGLGETQUERYOBJECTUIVANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuivANGLE")) == NULL) || r;
+ r = ((glGetQueryivANGLE = (PFNGLGETQUERYIVANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetQueryivANGLE")) == NULL) || r;
+ r = ((glIsQueryANGLE = (PFNGLISQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)"glIsQueryANGLE")) == NULL) || r;
+ r = ((glQueryCounterANGLE = (PFNGLQUERYCOUNTERANGLEPROC)glewGetProcAddress((const GLubyte*)"glQueryCounterANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_timer_query */
+
+#ifdef GL_ANGLE_translated_shader_source
+
+static GLboolean _glewInit_GL_ANGLE_translated_shader_source ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTranslatedShaderSourceANGLE = (PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC)glewGetProcAddress((const GLubyte*)"glGetTranslatedShaderSourceANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ANGLE_translated_shader_source */
+
+#ifdef GL_APPLE_copy_texture_levels
+
+static GLboolean _glewInit_GL_APPLE_copy_texture_levels ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyTextureLevelsAPPLE = (PFNGLCOPYTEXTURELEVELSAPPLEPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureLevelsAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_copy_texture_levels */
+
+#ifdef GL_APPLE_element_array
+
+static GLboolean _glewInit_GL_APPLE_element_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementArrayAPPLE")) == NULL) || r;
+ r = ((glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementArrayAPPLE")) == NULL) || r;
+ r = ((glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)glewGetProcAddress((const GLubyte*)"glElementPointerAPPLE")) == NULL) || r;
+ r = ((glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementArrayAPPLE")) == NULL) || r;
+ r = ((glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawRangeElementArrayAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_element_array */
+
+#ifdef GL_APPLE_fence
+
+static GLboolean _glewInit_GL_APPLE_fence ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteFencesAPPLE")) == NULL) || r;
+ r = ((glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFinishFenceAPPLE")) == NULL) || r;
+ r = ((glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFinishObjectAPPLE")) == NULL) || r;
+ r = ((glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGenFencesAPPLE")) == NULL) || r;
+ r = ((glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsFenceAPPLE")) == NULL) || r;
+ r = ((glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glSetFenceAPPLE")) == NULL) || r;
+ r = ((glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTestFenceAPPLE")) == NULL) || r;
+ r = ((glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTestObjectAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_fence */
+
+#ifdef GL_APPLE_flush_buffer_range
+
+static GLboolean _glewInit_GL_APPLE_flush_buffer_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)glewGetProcAddress((const GLubyte*)"glBufferParameteriAPPLE")) == NULL) || r;
+ r = ((glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedBufferRangeAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_flush_buffer_range */
+
+#ifdef GL_APPLE_framebuffer_multisample
+
+static GLboolean _glewInit_GL_APPLE_framebuffer_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleAPPLE = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleAPPLE")) == NULL) || r;
+ r = ((glResolveMultisampleFramebufferAPPLE = (PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC)glewGetProcAddress((const GLubyte*)"glResolveMultisampleFramebufferAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_framebuffer_multisample */
+
+#ifdef GL_APPLE_object_purgeable
+
+static GLboolean _glewInit_GL_APPLE_object_purgeable ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetObjectParameterivAPPLE")) == NULL) || r;
+ r = ((glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glObjectPurgeableAPPLE")) == NULL) || r;
+ r = ((glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glObjectUnpurgeableAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_object_purgeable */
+
+#ifdef GL_APPLE_sync
+
+static GLboolean _glewInit_GL_APPLE_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClientWaitSyncAPPLE = (PFNGLCLIENTWAITSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glClientWaitSyncAPPLE")) == NULL) || r;
+ r = ((glDeleteSyncAPPLE = (PFNGLDELETESYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteSyncAPPLE")) == NULL) || r;
+ r = ((glFenceSyncAPPLE = (PFNGLFENCESYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFenceSyncAPPLE")) == NULL) || r;
+ r = ((glGetInteger64vAPPLE = (PFNGLGETINTEGER64VAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetInteger64vAPPLE")) == NULL) || r;
+ r = ((glGetSyncivAPPLE = (PFNGLGETSYNCIVAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetSyncivAPPLE")) == NULL) || r;
+ r = ((glIsSyncAPPLE = (PFNGLISSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsSyncAPPLE")) == NULL) || r;
+ r = ((glWaitSyncAPPLE = (PFNGLWAITSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)"glWaitSyncAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_sync */
+
+#ifdef GL_APPLE_texture_range
+
+static GLboolean _glewInit_GL_APPLE_texture_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterPointervAPPLE")) == NULL) || r;
+ r = ((glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTextureRangeAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_texture_range */
+
+#ifdef GL_APPLE_vertex_array_object
+
+static GLboolean _glewInit_GL_APPLE_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArrayAPPLE")) == NULL) || r;
+ r = ((glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArraysAPPLE")) == NULL) || r;
+ r = ((glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArraysAPPLE")) == NULL) || r;
+ r = ((glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArrayAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_vertex_array_object */
+
+#ifdef GL_APPLE_vertex_array_range
+
+static GLboolean _glewInit_GL_APPLE_vertex_array_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFlushVertexArrayRangeAPPLE")) == NULL) || r;
+ r = ((glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayParameteriAPPLE")) == NULL) || r;
+ r = ((glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayRangeAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_vertex_array_range */
+
+#ifdef GL_APPLE_vertex_program_evaluators
+
+static GLboolean _glewInit_GL_APPLE_vertex_program_evaluators ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexAttribAPPLE")) == NULL) || r;
+ r = ((glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexAttribAPPLE")) == NULL) || r;
+ r = ((glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsVertexAttribEnabledAPPLE")) == NULL) || r;
+ r = ((glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMapVertexAttrib1dAPPLE")) == NULL) || r;
+ r = ((glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMapVertexAttrib1fAPPLE")) == NULL) || r;
+ r = ((glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMapVertexAttrib2dAPPLE")) == NULL) || r;
+ r = ((glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMapVertexAttrib2fAPPLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_APPLE_vertex_program_evaluators */
+
+#ifdef GL_ARB_ES2_compatibility
+
+static GLboolean _glewInit_GL_ARB_ES2_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearDepthf = (PFNGLCLEARDEPTHFPROC)glewGetProcAddress((const GLubyte*)"glClearDepthf")) == NULL) || r;
+ r = ((glDepthRangef = (PFNGLDEPTHRANGEFPROC)glewGetProcAddress((const GLubyte*)"glDepthRangef")) == NULL) || r;
+ r = ((glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)glewGetProcAddress((const GLubyte*)"glGetShaderPrecisionFormat")) == NULL) || r;
+ r = ((glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)glewGetProcAddress((const GLubyte*)"glReleaseShaderCompiler")) == NULL) || r;
+ r = ((glShaderBinary = (PFNGLSHADERBINARYPROC)glewGetProcAddress((const GLubyte*)"glShaderBinary")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_ES2_compatibility */
+
+#ifdef GL_ARB_ES3_1_compatibility
+
+static GLboolean _glewInit_GL_ARB_ES3_1_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)glewGetProcAddress((const GLubyte*)"glMemoryBarrierByRegion")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_ES3_1_compatibility */
+
+#ifdef GL_ARB_ES3_2_compatibility
+
+static GLboolean _glewInit_GL_ARB_ES3_2_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveBoundingBoxARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_ES3_2_compatibility */
+
+#ifdef GL_ARB_base_instance
+
+static GLboolean _glewInit_GL_ARB_base_instance ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedBaseInstance")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseInstance")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseVertexBaseInstance")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_base_instance */
+
+#ifdef GL_ARB_bindless_texture
+
+static GLboolean _glewInit_GL_ARB_bindless_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetImageHandleARB")) == NULL) || r;
+ r = ((glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetTextureHandleARB")) == NULL) || r;
+ r = ((glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetTextureSamplerHandleARB")) == NULL) || r;
+ r = ((glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLui64vARB")) == NULL) || r;
+ r = ((glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glIsImageHandleResidentARB")) == NULL) || r;
+ r = ((glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glIsTextureHandleResidentARB")) == NULL) || r;
+ r = ((glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glMakeImageHandleNonResidentARB")) == NULL) || r;
+ r = ((glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glMakeImageHandleResidentARB")) == NULL) || r;
+ r = ((glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glMakeTextureHandleNonResidentARB")) == NULL) || r;
+ r = ((glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)"glMakeTextureHandleResidentARB")) == NULL) || r;
+ r = ((glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64ARB")) == NULL) || r;
+ r = ((glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64vARB")) == NULL) || r;
+ r = ((glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64ARB")) == NULL) || r;
+ r = ((glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64vARB")) == NULL) || r;
+ r = ((glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64ARB")) == NULL) || r;
+ r = ((glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64vARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_bindless_texture */
+
+#ifdef GL_ARB_blend_func_extended
+
+static GLboolean _glewInit_GL_ARB_blend_func_extended ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocationIndexed")) == NULL) || r;
+ r = ((glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataIndex")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_blend_func_extended */
+
+#ifdef GL_ARB_buffer_storage
+
+static GLboolean _glewInit_GL_ARB_buffer_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferStorage = (PFNGLBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glBufferStorage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_buffer_storage */
+
+#ifdef GL_ARB_cl_event
+
+static GLboolean _glewInit_GL_ARB_cl_event ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)glewGetProcAddress((const GLubyte*)"glCreateSyncFromCLeventARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_cl_event */
+
+#ifdef GL_ARB_clear_buffer_object
+
+static GLboolean _glewInit_GL_ARB_clear_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glClearBufferData")) == NULL) || r;
+ r = ((glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glClearBufferSubData")) == NULL) || r;
+ r = ((glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glClearNamedBufferDataEXT")) == NULL) || r;
+ r = ((glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glClearNamedBufferSubDataEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_clear_buffer_object */
+
+#ifdef GL_ARB_clear_texture
+
+static GLboolean _glewInit_GL_ARB_clear_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glClearTexImage")) == NULL) || r;
+ r = ((glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)glewGetProcAddress((const GLubyte*)"glClearTexSubImage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_clear_texture */
+
+#ifdef GL_ARB_clip_control
+
+static GLboolean _glewInit_GL_ARB_clip_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClipControl = (PFNGLCLIPCONTROLPROC)glewGetProcAddress((const GLubyte*)"glClipControl")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_clip_control */
+
+#ifdef GL_ARB_color_buffer_float
+
+static GLboolean _glewInit_GL_ARB_color_buffer_float ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClampColorARB = (PFNGLCLAMPCOLORARBPROC)glewGetProcAddress((const GLubyte*)"glClampColorARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_color_buffer_float */
+
+#ifdef GL_ARB_compute_shader
+
+static GLboolean _glewInit_GL_ARB_compute_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)glewGetProcAddress((const GLubyte*)"glDispatchCompute")) == NULL) || r;
+ r = ((glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glDispatchComputeIndirect")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_compute_shader */
+
+#ifdef GL_ARB_compute_variable_group_size
+
+static GLboolean _glewInit_GL_ARB_compute_variable_group_size ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)glewGetProcAddress((const GLubyte*)"glDispatchComputeGroupSizeARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_compute_variable_group_size */
+
+#ifdef GL_ARB_copy_buffer
+
+static GLboolean _glewInit_GL_ARB_copy_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glCopyBufferSubData")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_copy_buffer */
+
+#ifdef GL_ARB_copy_image
+
+static GLboolean _glewInit_GL_ARB_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)glewGetProcAddress((const GLubyte*)"glCopyImageSubData")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_copy_image */
+
+#ifdef GL_ARB_debug_output
+
+static GLboolean _glewInit_GL_ARB_debug_output ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageCallbackARB")) == NULL) || r;
+ r = ((glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageControlARB")) == NULL) || r;
+ r = ((glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageInsertARB")) == NULL) || r;
+ r = ((glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)glewGetProcAddress((const GLubyte*)"glGetDebugMessageLogARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_debug_output */
+
+#ifdef GL_ARB_direct_state_access
+
+static GLboolean _glewInit_GL_ARB_direct_state_access ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)glewGetProcAddress((const GLubyte*)"glBindTextureUnit")) == NULL) || r;
+ r = ((glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBlitNamedFramebuffer")) == NULL) || r;
+ r = ((glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)glewGetProcAddress((const GLubyte*)"glCheckNamedFramebufferStatus")) == NULL) || r;
+ r = ((glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glClearNamedBufferData")) == NULL) || r;
+ r = ((glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glClearNamedBufferSubData")) == NULL) || r;
+ r = ((glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)glewGetProcAddress((const GLubyte*)"glClearNamedFramebufferfi")) == NULL) || r;
+ r = ((glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)glewGetProcAddress((const GLubyte*)"glClearNamedFramebufferfv")) == NULL) || r;
+ r = ((glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)glewGetProcAddress((const GLubyte*)"glClearNamedFramebufferiv")) == NULL) || r;
+ r = ((glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)glewGetProcAddress((const GLubyte*)"glClearNamedFramebufferuiv")) == NULL) || r;
+ r = ((glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage1D")) == NULL) || r;
+ r = ((glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage2D")) == NULL) || r;
+ r = ((glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage3D")) == NULL) || r;
+ r = ((glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glCopyNamedBufferSubData")) == NULL) || r;
+ r = ((glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage1D")) == NULL) || r;
+ r = ((glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage2D")) == NULL) || r;
+ r = ((glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage3D")) == NULL) || r;
+ r = ((glCreateBuffers = (PFNGLCREATEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glCreateBuffers")) == NULL) || r;
+ r = ((glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glCreateFramebuffers")) == NULL) || r;
+ r = ((glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)"glCreateProgramPipelines")) == NULL) || r;
+ r = ((glCreateQueries = (PFNGLCREATEQUERIESPROC)glewGetProcAddress((const GLubyte*)"glCreateQueries")) == NULL) || r;
+ r = ((glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glCreateRenderbuffers")) == NULL) || r;
+ r = ((glCreateSamplers = (PFNGLCREATESAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glCreateSamplers")) == NULL) || r;
+ r = ((glCreateTextures = (PFNGLCREATETEXTURESPROC)glewGetProcAddress((const GLubyte*)"glCreateTextures")) == NULL) || r;
+ r = ((glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)"glCreateTransformFeedbacks")) == NULL) || r;
+ r = ((glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)"glCreateVertexArrays")) == NULL) || r;
+ r = ((glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexArrayAttrib")) == NULL) || r;
+ r = ((glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexArrayAttrib")) == NULL) || r;
+ r = ((glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedNamedBufferRange")) == NULL) || r;
+ r = ((glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)glewGetProcAddress((const GLubyte*)"glGenerateTextureMipmap")) == NULL) || r;
+ r = ((glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTextureImage")) == NULL) || r;
+ r = ((glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameteri64v")) == NULL) || r;
+ r = ((glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameteriv")) == NULL) || r;
+ r = ((glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferPointerv")) == NULL) || r;
+ r = ((glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferSubData")) == NULL) || r;
+ r = ((glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferAttachmentParameteriv")) == NULL) || r;
+ r = ((glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferParameteriv")) == NULL) || r;
+ r = ((glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedRenderbufferParameteriv")) == NULL) || r;
+ r = ((glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryBufferObjecti64v")) == NULL) || r;
+ r = ((glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryBufferObjectiv")) == NULL) || r;
+ r = ((glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryBufferObjectui64v")) == NULL) || r;
+ r = ((glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryBufferObjectuiv")) == NULL) || r;
+ r = ((glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetTextureImage")) == NULL) || r;
+ r = ((glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameterfv")) == NULL) || r;
+ r = ((glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameteriv")) == NULL) || r;
+ r = ((glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIiv")) == NULL) || r;
+ r = ((glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIuiv")) == NULL) || r;
+ r = ((glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterfv")) == NULL) || r;
+ r = ((glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameteriv")) == NULL) || r;
+ r = ((glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbacki64_v")) == NULL) || r;
+ r = ((glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbacki_v")) == NULL) || r;
+ r = ((glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackiv")) == NULL) || r;
+ r = ((glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayIndexed64iv")) == NULL) || r;
+ r = ((glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayIndexediv")) == NULL) || r;
+ r = ((glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayiv")) == NULL) || r;
+ r = ((glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glInvalidateNamedFramebufferData")) == NULL) || r;
+ r = ((glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glInvalidateNamedFramebufferSubData")) == NULL) || r;
+ r = ((glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBuffer")) == NULL) || r;
+ r = ((glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBufferRange")) == NULL) || r;
+ r = ((glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferData")) == NULL) || r;
+ r = ((glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferStorage")) == NULL) || r;
+ r = ((glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferSubData")) == NULL) || r;
+ r = ((glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferDrawBuffer")) == NULL) || r;
+ r = ((glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferDrawBuffers")) == NULL) || r;
+ r = ((glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferParameteri")) == NULL) || r;
+ r = ((glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferReadBuffer")) == NULL) || r;
+ r = ((glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferRenderbuffer")) == NULL) || r;
+ r = ((glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture")) == NULL) || r;
+ r = ((glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureLayer")) == NULL) || r;
+ r = ((glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorage")) == NULL) || r;
+ r = ((glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisample")) == NULL) || r;
+ r = ((glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)glewGetProcAddress((const GLubyte*)"glTextureBuffer")) == NULL) || r;
+ r = ((glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glTextureBufferRange")) == NULL) || r;
+ r = ((glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIiv")) == NULL) || r;
+ r = ((glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIuiv")) == NULL) || r;
+ r = ((glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterf")) == NULL) || r;
+ r = ((glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterfv")) == NULL) || r;
+ r = ((glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glTextureParameteri")) == NULL) || r;
+ r = ((glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glTextureParameteriv")) == NULL) || r;
+ r = ((glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage1D")) == NULL) || r;
+ r = ((glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage2D")) == NULL) || r;
+ r = ((glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage2DMultisample")) == NULL) || r;
+ r = ((glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage3D")) == NULL) || r;
+ r = ((glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage3DMultisample")) == NULL) || r;
+ r = ((glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage1D")) == NULL) || r;
+ r = ((glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage2D")) == NULL) || r;
+ r = ((glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage3D")) == NULL) || r;
+ r = ((glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackBufferBase")) == NULL) || r;
+ r = ((glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackBufferRange")) == NULL) || r;
+ r = ((glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)glewGetProcAddress((const GLubyte*)"glUnmapNamedBuffer")) == NULL) || r;
+ r = ((glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayAttribBinding")) == NULL) || r;
+ r = ((glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayAttribFormat")) == NULL) || r;
+ r = ((glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayAttribIFormat")) == NULL) || r;
+ r = ((glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayAttribLFormat")) == NULL) || r;
+ r = ((glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayBindingDivisor")) == NULL) || r;
+ r = ((glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayElementBuffer")) == NULL) || r;
+ r = ((glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexBuffer")) == NULL) || r;
+ r = ((glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexBuffers")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_direct_state_access */
+
+#ifdef GL_ARB_draw_buffers
+
+static GLboolean _glewInit_GL_ARB_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_draw_buffers */
+
+#ifdef GL_ARB_draw_buffers_blend
+
+static GLboolean _glewInit_GL_ARB_draw_buffers_blend ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateiARB")) == NULL) || r;
+ r = ((glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationiARB")) == NULL) || r;
+ r = ((glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateiARB")) == NULL) || r;
+ r = ((glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)glewGetProcAddress((const GLubyte*)"glBlendFunciARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_draw_buffers_blend */
+
+#ifdef GL_ARB_draw_elements_base_vertex
+
+static GLboolean _glewInit_GL_ARB_draw_elements_base_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsBaseVertex")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseVertex")) == NULL) || r;
+ r = ((glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementsBaseVertex")) == NULL) || r;
+ r = ((glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsBaseVertex")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_draw_elements_base_vertex */
+
+#ifdef GL_ARB_draw_indirect
+
+static GLboolean _glewInit_GL_ARB_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysIndirect")) == NULL) || r;
+ r = ((glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsIndirect")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_draw_indirect */
+
+#ifdef GL_ARB_framebuffer_no_attachments
+
+static GLboolean _glewInit_GL_ARB_framebuffer_no_attachments ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glFramebufferParameteri")) == NULL) || r;
+ r = ((glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameteriv")) == NULL) || r;
+ r = ((glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferParameterivEXT")) == NULL) || r;
+ r = ((glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferParameteriEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_framebuffer_no_attachments */
+
+#ifdef GL_ARB_framebuffer_object
+
+static GLboolean _glewInit_GL_ARB_framebuffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindFramebuffer")) == NULL) || r;
+ r = ((glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindRenderbuffer")) == NULL) || r;
+ r = ((glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebuffer")) == NULL) || r;
+ r = ((glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)glewGetProcAddress((const GLubyte*)"glCheckFramebufferStatus")) == NULL) || r;
+ r = ((glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffers")) == NULL) || r;
+ r = ((glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffers")) == NULL) || r;
+ r = ((glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbuffer")) == NULL) || r;
+ r = ((glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture1D")) == NULL) || r;
+ r = ((glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2D")) == NULL) || r;
+ r = ((glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3D")) == NULL) || r;
+ r = ((glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayer")) == NULL) || r;
+ r = ((glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenFramebuffers")) == NULL) || r;
+ r = ((glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenRenderbuffers")) == NULL) || r;
+ r = ((glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)glewGetProcAddress((const GLubyte*)"glGenerateMipmap")) == NULL) || r;
+ r = ((glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferAttachmentParameteriv")) == NULL) || r;
+ r = ((glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetRenderbufferParameteriv")) == NULL) || r;
+ r = ((glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsFramebuffer")) == NULL) || r;
+ r = ((glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsRenderbuffer")) == NULL) || r;
+ r = ((glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorage")) == NULL) || r;
+ r = ((glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisample")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_framebuffer_object */
+
+#ifdef GL_ARB_geometry_shader4
+
+static GLboolean _glewInit_GL_ARB_geometry_shader4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureARB")) == NULL) || r;
+ r = ((glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureFaceARB")) == NULL) || r;
+ r = ((glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerARB")) == NULL) || r;
+ r = ((glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)glewGetProcAddress((const GLubyte*)"glProgramParameteriARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_geometry_shader4 */
+
+#ifdef GL_ARB_get_program_binary
+
+static GLboolean _glewInit_GL_ARB_get_program_binary ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)glewGetProcAddress((const GLubyte*)"glGetProgramBinary")) == NULL) || r;
+ r = ((glProgramBinary = (PFNGLPROGRAMBINARYPROC)glewGetProcAddress((const GLubyte*)"glProgramBinary")) == NULL) || r;
+ r = ((glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glProgramParameteri")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_get_program_binary */
+
+#ifdef GL_ARB_get_texture_sub_image
+
+static GLboolean _glewInit_GL_ARB_get_texture_sub_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTextureSubImage")) == NULL) || r;
+ r = ((glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetTextureSubImage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_get_texture_sub_image */
+
+#ifdef GL_ARB_gl_spirv
+
+static GLboolean _glewInit_GL_ARB_gl_spirv ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC)glewGetProcAddress((const GLubyte*)"glSpecializeShaderARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_gl_spirv */
+
+#ifdef GL_ARB_gpu_shader_fp64
+
+static GLboolean _glewInit_GL_ARB_gpu_shader_fp64 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetUniformdv = (PFNGLGETUNIFORMDVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformdv")) == NULL) || r;
+ r = ((glUniform1d = (PFNGLUNIFORM1DPROC)glewGetProcAddress((const GLubyte*)"glUniform1d")) == NULL) || r;
+ r = ((glUniform1dv = (PFNGLUNIFORM1DVPROC)glewGetProcAddress((const GLubyte*)"glUniform1dv")) == NULL) || r;
+ r = ((glUniform2d = (PFNGLUNIFORM2DPROC)glewGetProcAddress((const GLubyte*)"glUniform2d")) == NULL) || r;
+ r = ((glUniform2dv = (PFNGLUNIFORM2DVPROC)glewGetProcAddress((const GLubyte*)"glUniform2dv")) == NULL) || r;
+ r = ((glUniform3d = (PFNGLUNIFORM3DPROC)glewGetProcAddress((const GLubyte*)"glUniform3d")) == NULL) || r;
+ r = ((glUniform3dv = (PFNGLUNIFORM3DVPROC)glewGetProcAddress((const GLubyte*)"glUniform3dv")) == NULL) || r;
+ r = ((glUniform4d = (PFNGLUNIFORM4DPROC)glewGetProcAddress((const GLubyte*)"glUniform4d")) == NULL) || r;
+ r = ((glUniform4dv = (PFNGLUNIFORM4DVPROC)glewGetProcAddress((const GLubyte*)"glUniform4dv")) == NULL) || r;
+ r = ((glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2dv")) == NULL) || r;
+ r = ((glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x3dv")) == NULL) || r;
+ r = ((glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x4dv")) == NULL) || r;
+ r = ((glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3dv")) == NULL) || r;
+ r = ((glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x2dv")) == NULL) || r;
+ r = ((glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x4dv")) == NULL) || r;
+ r = ((glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4dv")) == NULL) || r;
+ r = ((glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x2dv")) == NULL) || r;
+ r = ((glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x3dv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
+#ifdef GL_ARB_gpu_shader_int64
+
+static GLboolean _glewInit_GL_ARB_gpu_shader_int64 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformi64vARB")) == NULL) || r;
+ r = ((glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformui64vARB")) == NULL) || r;
+ r = ((glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformi64vARB")) == NULL) || r;
+ r = ((glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformui64vARB")) == NULL) || r;
+ r = ((glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64ARB")) == NULL) || r;
+ r = ((glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64vARB")) == NULL) || r;
+ r = ((glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64ARB")) == NULL) || r;
+ r = ((glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64vARB")) == NULL) || r;
+ r = ((glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64ARB")) == NULL) || r;
+ r = ((glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64vARB")) == NULL) || r;
+ r = ((glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64ARB")) == NULL) || r;
+ r = ((glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64vARB")) == NULL) || r;
+ r = ((glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64ARB")) == NULL) || r;
+ r = ((glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64vARB")) == NULL) || r;
+ r = ((glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64ARB")) == NULL) || r;
+ r = ((glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64vARB")) == NULL) || r;
+ r = ((glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64ARB")) == NULL) || r;
+ r = ((glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64vARB")) == NULL) || r;
+ r = ((glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64ARB")) == NULL) || r;
+ r = ((glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64vARB")) == NULL) || r;
+ r = ((glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64ARB")) == NULL) || r;
+ r = ((glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64vARB")) == NULL) || r;
+ r = ((glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64ARB")) == NULL) || r;
+ r = ((glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64vARB")) == NULL) || r;
+ r = ((glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64ARB")) == NULL) || r;
+ r = ((glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64vARB")) == NULL) || r;
+ r = ((glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64ARB")) == NULL) || r;
+ r = ((glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64vARB")) == NULL) || r;
+ r = ((glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64ARB")) == NULL) || r;
+ r = ((glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64vARB")) == NULL) || r;
+ r = ((glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64ARB")) == NULL) || r;
+ r = ((glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64vARB")) == NULL) || r;
+ r = ((glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64ARB")) == NULL) || r;
+ r = ((glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64vARB")) == NULL) || r;
+ r = ((glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64ARB")) == NULL) || r;
+ r = ((glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64vARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_gpu_shader_int64 */
+
+#ifdef GL_ARB_imaging
+
+static GLboolean _glewInit_GL_ARB_imaging ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)"glBlendEquation")) == NULL) || r;
+ r = ((glColorSubTable = (PFNGLCOLORSUBTABLEPROC)glewGetProcAddress((const GLubyte*)"glColorSubTable")) == NULL) || r;
+ r = ((glColorTable = (PFNGLCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glColorTable")) == NULL) || r;
+ r = ((glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterfv")) == NULL) || r;
+ r = ((glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameteriv")) == NULL) || r;
+ r = ((glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter1D")) == NULL) || r;
+ r = ((glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter2D")) == NULL) || r;
+ r = ((glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterf")) == NULL) || r;
+ r = ((glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfv")) == NULL) || r;
+ r = ((glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteri")) == NULL) || r;
+ r = ((glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteriv")) == NULL) || r;
+ r = ((glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)glewGetProcAddress((const GLubyte*)"glCopyColorSubTable")) == NULL) || r;
+ r = ((glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glCopyColorTable")) == NULL) || r;
+ r = ((glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter1D")) == NULL) || r;
+ r = ((glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter2D")) == NULL) || r;
+ r = ((glGetColorTable = (PFNGLGETCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glGetColorTable")) == NULL) || r;
+ r = ((glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfv")) == NULL) || r;
+ r = ((glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameteriv")) == NULL) || r;
+ r = ((glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionFilter")) == NULL) || r;
+ r = ((glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterfv")) == NULL) || r;
+ r = ((glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameteriv")) == NULL) || r;
+ r = ((glGetHistogram = (PFNGLGETHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glGetHistogram")) == NULL) || r;
+ r = ((glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterfv")) == NULL) || r;
+ r = ((glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameteriv")) == NULL) || r;
+ r = ((glGetMinmax = (PFNGLGETMINMAXPROC)glewGetProcAddress((const GLubyte*)"glGetMinmax")) == NULL) || r;
+ r = ((glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterfv")) == NULL) || r;
+ r = ((glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameteriv")) == NULL) || r;
+ r = ((glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)glewGetProcAddress((const GLubyte*)"glGetSeparableFilter")) == NULL) || r;
+ r = ((glHistogram = (PFNGLHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glHistogram")) == NULL) || r;
+ r = ((glMinmax = (PFNGLMINMAXPROC)glewGetProcAddress((const GLubyte*)"glMinmax")) == NULL) || r;
+ r = ((glResetHistogram = (PFNGLRESETHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glResetHistogram")) == NULL) || r;
+ r = ((glResetMinmax = (PFNGLRESETMINMAXPROC)glewGetProcAddress((const GLubyte*)"glResetMinmax")) == NULL) || r;
+ r = ((glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glSeparableFilter2D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_imaging */
+
+#ifdef GL_ARB_indirect_parameters
+
+static GLboolean _glewInit_GL_ARB_indirect_parameters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectCountARB")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectCountARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_indirect_parameters */
+
+#ifdef GL_ARB_instanced_arrays
+
+static GLboolean _glewInit_GL_ARB_instanced_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedARB")) == NULL) || r;
+ r = ((glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedARB")) == NULL) || r;
+ r = ((glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_instanced_arrays */
+
+#ifdef GL_ARB_internalformat_query
+
+static GLboolean _glewInit_GL_ARB_internalformat_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)glewGetProcAddress((const GLubyte*)"glGetInternalformativ")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_internalformat_query */
+
+#ifdef GL_ARB_internalformat_query2
+
+static GLboolean _glewInit_GL_ARB_internalformat_query2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)glewGetProcAddress((const GLubyte*)"glGetInternalformati64v")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_internalformat_query2 */
+
+#ifdef GL_ARB_invalidate_subdata
+
+static GLboolean _glewInit_GL_ARB_invalidate_subdata ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glInvalidateBufferData")) == NULL) || r;
+ r = ((glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glInvalidateBufferSubData")) == NULL) || r;
+ r = ((glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glInvalidateFramebuffer")) == NULL) || r;
+ r = ((glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glInvalidateSubFramebuffer")) == NULL) || r;
+ r = ((glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glInvalidateTexImage")) == NULL) || r;
+ r = ((glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)glewGetProcAddress((const GLubyte*)"glInvalidateTexSubImage")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_invalidate_subdata */
+
+#ifdef GL_ARB_map_buffer_range
+
+static GLboolean _glewInit_GL_ARB_map_buffer_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedBufferRange")) == NULL) || r;
+ r = ((glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glMapBufferRange")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_map_buffer_range */
+
+#ifdef GL_ARB_matrix_palette
+
+static GLboolean _glewInit_GL_ARB_matrix_palette ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)glewGetProcAddress((const GLubyte*)"glCurrentPaletteMatrixARB")) == NULL) || r;
+ r = ((glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexPointerARB")) == NULL) || r;
+ r = ((glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexubvARB")) == NULL) || r;
+ r = ((glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexuivARB")) == NULL) || r;
+ r = ((glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexusvARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_matrix_palette */
+
+#ifdef GL_ARB_multi_bind
+
+static GLboolean _glewInit_GL_ARB_multi_bind ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)glewGetProcAddress((const GLubyte*)"glBindBuffersBase")) == NULL) || r;
+ r = ((glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)glewGetProcAddress((const GLubyte*)"glBindBuffersRange")) == NULL) || r;
+ r = ((glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)glewGetProcAddress((const GLubyte*)"glBindImageTextures")) == NULL) || r;
+ r = ((glBindSamplers = (PFNGLBINDSAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glBindSamplers")) == NULL) || r;
+ r = ((glBindTextures = (PFNGLBINDTEXTURESPROC)glewGetProcAddress((const GLubyte*)"glBindTextures")) == NULL) || r;
+ r = ((glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glBindVertexBuffers")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_multi_bind */
+
+#ifdef GL_ARB_multi_draw_indirect
+
+static GLboolean _glewInit_GL_ARB_multi_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirect")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirect")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_multi_draw_indirect */
+
+#ifdef GL_ARB_multisample
+
+static GLboolean _glewInit_GL_ARB_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)glewGetProcAddress((const GLubyte*)"glSampleCoverageARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_multisample */
+
+#ifdef GL_ARB_multitexture
+
+static GLboolean _glewInit_GL_ARB_multitexture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glActiveTextureARB")) == NULL) || r;
+ r = ((glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glClientActiveTextureARB")) == NULL) || r;
+ r = ((glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dARB")) == NULL) || r;
+ r = ((glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dvARB")) == NULL) || r;
+ r = ((glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fARB")) == NULL) || r;
+ r = ((glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fvARB")) == NULL) || r;
+ r = ((glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1iARB")) == NULL) || r;
+ r = ((glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1ivARB")) == NULL) || r;
+ r = ((glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1sARB")) == NULL) || r;
+ r = ((glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1svARB")) == NULL) || r;
+ r = ((glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dARB")) == NULL) || r;
+ r = ((glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dvARB")) == NULL) || r;
+ r = ((glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fARB")) == NULL) || r;
+ r = ((glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fvARB")) == NULL) || r;
+ r = ((glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2iARB")) == NULL) || r;
+ r = ((glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2ivARB")) == NULL) || r;
+ r = ((glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2sARB")) == NULL) || r;
+ r = ((glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2svARB")) == NULL) || r;
+ r = ((glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dARB")) == NULL) || r;
+ r = ((glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dvARB")) == NULL) || r;
+ r = ((glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fARB")) == NULL) || r;
+ r = ((glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fvARB")) == NULL) || r;
+ r = ((glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3iARB")) == NULL) || r;
+ r = ((glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3ivARB")) == NULL) || r;
+ r = ((glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3sARB")) == NULL) || r;
+ r = ((glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3svARB")) == NULL) || r;
+ r = ((glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dARB")) == NULL) || r;
+ r = ((glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dvARB")) == NULL) || r;
+ r = ((glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fARB")) == NULL) || r;
+ r = ((glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fvARB")) == NULL) || r;
+ r = ((glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4iARB")) == NULL) || r;
+ r = ((glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4ivARB")) == NULL) || r;
+ r = ((glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4sARB")) == NULL) || r;
+ r = ((glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4svARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_multitexture */
+
+#ifdef GL_ARB_occlusion_query
+
+static GLboolean _glewInit_GL_ARB_occlusion_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryARB")) == NULL) || r;
+ r = ((glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueriesARB")) == NULL) || r;
+ r = ((glEndQueryARB = (PFNGLENDQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glEndQueryARB")) == NULL) || r;
+ r = ((glGenQueriesARB = (PFNGLGENQUERIESARBPROC)glewGetProcAddress((const GLubyte*)"glGenQueriesARB")) == NULL) || r;
+ r = ((glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectivARB")) == NULL) || r;
+ r = ((glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuivARB")) == NULL) || r;
+ r = ((glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryivARB")) == NULL) || r;
+ r = ((glIsQueryARB = (PFNGLISQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glIsQueryARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_occlusion_query */
+
+#ifdef GL_ARB_parallel_shader_compile
+
+static GLboolean _glewInit_GL_ARB_parallel_shader_compile ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)glewGetProcAddress((const GLubyte*)"glMaxShaderCompilerThreadsARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_parallel_shader_compile */
+
+#ifdef GL_ARB_point_parameters
+
+static GLboolean _glewInit_GL_ARB_point_parameters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfARB")) == NULL) || r;
+ r = ((glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfvARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_point_parameters */
+
+#ifdef GL_ARB_polygon_offset_clamp
+
+static GLboolean _glewInit_GL_ARB_polygon_offset_clamp ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetClamp")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_polygon_offset_clamp */
+
+#ifdef GL_ARB_program_interface_query
+
+static GLboolean _glewInit_GL_ARB_program_interface_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramInterfaceiv")) == NULL) || r;
+ r = ((glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceIndex")) == NULL) || r;
+ r = ((glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceLocation")) == NULL) || r;
+ r = ((glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceLocationIndex")) == NULL) || r;
+ r = ((glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceName")) == NULL) || r;
+ r = ((glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceiv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_program_interface_query */
+
+#ifdef GL_ARB_provoking_vertex
+
+static GLboolean _glewInit_GL_ARB_provoking_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)glewGetProcAddress((const GLubyte*)"glProvokingVertex")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_provoking_vertex */
+
+#ifdef GL_ARB_robustness
+
+static GLboolean _glewInit_GL_ARB_robustness ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)glewGetProcAddress((const GLubyte*)"glGetGraphicsResetStatusARB")) == NULL) || r;
+ r = ((glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetnColorTableARB")) == NULL) || r;
+ r = ((glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"glGetnCompressedTexImageARB")) == NULL) || r;
+ r = ((glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)glewGetProcAddress((const GLubyte*)"glGetnConvolutionFilterARB")) == NULL) || r;
+ r = ((glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glGetnHistogramARB")) == NULL) || r;
+ r = ((glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnMapdvARB")) == NULL) || r;
+ r = ((glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnMapfvARB")) == NULL) || r;
+ r = ((glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnMapivARB")) == NULL) || r;
+ r = ((glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)glewGetProcAddress((const GLubyte*)"glGetnMinmaxARB")) == NULL) || r;
+ r = ((glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnPixelMapfvARB")) == NULL) || r;
+ r = ((glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnPixelMapuivARB")) == NULL) || r;
+ r = ((glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnPixelMapusvARB")) == NULL) || r;
+ r = ((glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetnPolygonStippleARB")) == NULL) || r;
+ r = ((glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)glewGetProcAddress((const GLubyte*)"glGetnSeparableFilterARB")) == NULL) || r;
+ r = ((glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"glGetnTexImageARB")) == NULL) || r;
+ r = ((glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformdvARB")) == NULL) || r;
+ r = ((glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformfvARB")) == NULL) || r;
+ r = ((glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformivARB")) == NULL) || r;
+ r = ((glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformuivARB")) == NULL) || r;
+ r = ((glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)glewGetProcAddress((const GLubyte*)"glReadnPixelsARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_robustness */
+
+#ifdef GL_ARB_sample_locations
+
+static GLboolean _glewInit_GL_ARB_sample_locations ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEvaluateDepthValuesARB = (PFNGLEVALUATEDEPTHVALUESARBPROC)glewGetProcAddress((const GLubyte*)"glEvaluateDepthValuesARB")) == NULL) || r;
+ r = ((glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferSampleLocationsfvARB")) == NULL) || r;
+ r = ((glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferSampleLocationsfvARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sample_locations */
+
+#ifdef GL_ARB_sample_shading
+
+static GLboolean _glewInit_GL_ARB_sample_shading ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)glewGetProcAddress((const GLubyte*)"glMinSampleShadingARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sample_shading */
+
+#ifdef GL_ARB_sampler_objects
+
+static GLboolean _glewInit_GL_ARB_sampler_objects ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindSampler = (PFNGLBINDSAMPLERPROC)glewGetProcAddress((const GLubyte*)"glBindSampler")) == NULL) || r;
+ r = ((glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteSamplers")) == NULL) || r;
+ r = ((glGenSamplers = (PFNGLGENSAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glGenSamplers")) == NULL) || r;
+ r = ((glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIiv")) == NULL) || r;
+ r = ((glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIuiv")) == NULL) || r;
+ r = ((glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterfv")) == NULL) || r;
+ r = ((glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameteriv")) == NULL) || r;
+ r = ((glIsSampler = (PFNGLISSAMPLERPROC)glewGetProcAddress((const GLubyte*)"glIsSampler")) == NULL) || r;
+ r = ((glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIiv")) == NULL) || r;
+ r = ((glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIuiv")) == NULL) || r;
+ r = ((glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterf")) == NULL) || r;
+ r = ((glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterfv")) == NULL) || r;
+ r = ((glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameteri")) == NULL) || r;
+ r = ((glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameteriv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sampler_objects */
+
+#ifdef GL_ARB_separate_shader_objects
+
+static GLboolean _glewInit_GL_ARB_separate_shader_objects ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glActiveShaderProgram")) == NULL) || r;
+ r = ((glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)"glBindProgramPipeline")) == NULL) || r;
+ r = ((glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)glewGetProcAddress((const GLubyte*)"glCreateShaderProgramv")) == NULL) || r;
+ r = ((glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgramPipelines")) == NULL) || r;
+ r = ((glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)"glGenProgramPipelines")) == NULL) || r;
+ r = ((glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)glewGetProcAddress((const GLubyte*)"glGetProgramPipelineInfoLog")) == NULL) || r;
+ r = ((glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramPipelineiv")) == NULL) || r;
+ r = ((glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)"glIsProgramPipeline")) == NULL) || r;
+ r = ((glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1d")) == NULL) || r;
+ r = ((glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1dv")) == NULL) || r;
+ r = ((glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1f")) == NULL) || r;
+ r = ((glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1fv")) == NULL) || r;
+ r = ((glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i")) == NULL) || r;
+ r = ((glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1iv")) == NULL) || r;
+ r = ((glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui")) == NULL) || r;
+ r = ((glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1uiv")) == NULL) || r;
+ r = ((glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2d")) == NULL) || r;
+ r = ((glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2dv")) == NULL) || r;
+ r = ((glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2f")) == NULL) || r;
+ r = ((glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2fv")) == NULL) || r;
+ r = ((glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i")) == NULL) || r;
+ r = ((glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2iv")) == NULL) || r;
+ r = ((glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui")) == NULL) || r;
+ r = ((glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2uiv")) == NULL) || r;
+ r = ((glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3d")) == NULL) || r;
+ r = ((glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3dv")) == NULL) || r;
+ r = ((glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3f")) == NULL) || r;
+ r = ((glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3fv")) == NULL) || r;
+ r = ((glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i")) == NULL) || r;
+ r = ((glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3iv")) == NULL) || r;
+ r = ((glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui")) == NULL) || r;
+ r = ((glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3uiv")) == NULL) || r;
+ r = ((glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4d")) == NULL) || r;
+ r = ((glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4dv")) == NULL) || r;
+ r = ((glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4f")) == NULL) || r;
+ r = ((glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4fv")) == NULL) || r;
+ r = ((glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i")) == NULL) || r;
+ r = ((glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4iv")) == NULL) || r;
+ r = ((glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui")) == NULL) || r;
+ r = ((glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4uiv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x3dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x3fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x4dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x4fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x2dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x2fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x4dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x4fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x2dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x2fv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x3dv")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x3fv")) == NULL) || r;
+ r = ((glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)glewGetProcAddress((const GLubyte*)"glUseProgramStages")) == NULL) || r;
+ r = ((glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)"glValidateProgramPipeline")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_separate_shader_objects */
+
+#ifdef GL_ARB_shader_atomic_counters
+
+static GLboolean _glewInit_GL_ARB_shader_atomic_counters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveAtomicCounterBufferiv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_atomic_counters */
+
+#ifdef GL_ARB_shader_image_load_store
+
+static GLboolean _glewInit_GL_ARB_shader_image_load_store ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)glewGetProcAddress((const GLubyte*)"glBindImageTexture")) == NULL) || r;
+ r = ((glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)glewGetProcAddress((const GLubyte*)"glMemoryBarrier")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_image_load_store */
+
+#ifdef GL_ARB_shader_objects
+
+static GLboolean _glewInit_GL_ARB_shader_objects ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glAttachObjectARB")) == NULL) || r;
+ r = ((glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)glewGetProcAddress((const GLubyte*)"glCompileShaderARB")) == NULL) || r;
+ r = ((glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glCreateProgramObjectARB")) == NULL) || r;
+ r = ((glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glCreateShaderObjectARB")) == NULL) || r;
+ r = ((glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteObjectARB")) == NULL) || r;
+ r = ((glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glDetachObjectARB")) == NULL) || r;
+ r = ((glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformARB")) == NULL) || r;
+ r = ((glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)glewGetProcAddress((const GLubyte*)"glGetAttachedObjectsARB")) == NULL) || r;
+ r = ((glGetHandleARB = (PFNGLGETHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetHandleARB")) == NULL) || r;
+ r = ((glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)glewGetProcAddress((const GLubyte*)"glGetInfoLogARB")) == NULL) || r;
+ r = ((glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetObjectParameterfvARB")) == NULL) || r;
+ r = ((glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetObjectParameterivARB")) == NULL) || r;
+ r = ((glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)glewGetProcAddress((const GLubyte*)"glGetShaderSourceARB")) == NULL) || r;
+ r = ((glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformLocationARB")) == NULL) || r;
+ r = ((glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformfvARB")) == NULL) || r;
+ r = ((glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformivARB")) == NULL) || r;
+ r = ((glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glLinkProgramARB")) == NULL) || r;
+ r = ((glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)glewGetProcAddress((const GLubyte*)"glShaderSourceARB")) == NULL) || r;
+ r = ((glUniform1fARB = (PFNGLUNIFORM1FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1fARB")) == NULL) || r;
+ r = ((glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1fvARB")) == NULL) || r;
+ r = ((glUniform1iARB = (PFNGLUNIFORM1IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1iARB")) == NULL) || r;
+ r = ((glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1ivARB")) == NULL) || r;
+ r = ((glUniform2fARB = (PFNGLUNIFORM2FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2fARB")) == NULL) || r;
+ r = ((glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2fvARB")) == NULL) || r;
+ r = ((glUniform2iARB = (PFNGLUNIFORM2IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2iARB")) == NULL) || r;
+ r = ((glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2ivARB")) == NULL) || r;
+ r = ((glUniform3fARB = (PFNGLUNIFORM3FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3fARB")) == NULL) || r;
+ r = ((glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3fvARB")) == NULL) || r;
+ r = ((glUniform3iARB = (PFNGLUNIFORM3IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3iARB")) == NULL) || r;
+ r = ((glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3ivARB")) == NULL) || r;
+ r = ((glUniform4fARB = (PFNGLUNIFORM4FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4fARB")) == NULL) || r;
+ r = ((glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4fvARB")) == NULL) || r;
+ r = ((glUniform4iARB = (PFNGLUNIFORM4IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4iARB")) == NULL) || r;
+ r = ((glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4ivARB")) == NULL) || r;
+ r = ((glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2fvARB")) == NULL) || r;
+ r = ((glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3fvARB")) == NULL) || r;
+ r = ((glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4fvARB")) == NULL) || r;
+ r = ((glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glUseProgramObjectARB")) == NULL) || r;
+ r = ((glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glValidateProgramARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_objects */
+
+#ifdef GL_ARB_shader_storage_buffer_object
+
+static GLboolean _glewInit_GL_ARB_shader_storage_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)glewGetProcAddress((const GLubyte*)"glShaderStorageBlockBinding")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_storage_buffer_object */
+
+#ifdef GL_ARB_shader_subroutine
+
+static GLboolean _glewInit_GL_ARB_shader_subroutine ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineName")) == NULL) || r;
+ r = ((glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineUniformName")) == NULL) || r;
+ r = ((glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineUniformiv")) == NULL) || r;
+ r = ((glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStageiv")) == NULL) || r;
+ r = ((glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetSubroutineIndex")) == NULL) || r;
+ r = ((glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetSubroutineUniformLocation")) == NULL) || r;
+ r = ((glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformSubroutineuiv")) == NULL) || r;
+ r = ((glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)glewGetProcAddress((const GLubyte*)"glUniformSubroutinesuiv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shader_subroutine */
+
+#ifdef GL_ARB_shading_language_include
+
+static GLboolean _glewInit_GL_ARB_shading_language_include ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)glewGetProcAddress((const GLubyte*)"glCompileShaderIncludeARB")) == NULL) || r;
+ r = ((glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteNamedStringARB")) == NULL) || r;
+ r = ((glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glGetNamedStringARB")) == NULL) || r;
+ r = ((glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetNamedStringivARB")) == NULL) || r;
+ r = ((glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glIsNamedStringARB")) == NULL) || r;
+ r = ((glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glNamedStringARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_shading_language_include */
+
+#ifdef GL_ARB_sparse_buffer
+
+static GLboolean _glewInit_GL_ARB_sparse_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)glewGetProcAddress((const GLubyte*)"glBufferPageCommitmentARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sparse_buffer */
+
+#ifdef GL_ARB_sparse_texture
+
+static GLboolean _glewInit_GL_ARB_sparse_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)glewGetProcAddress((const GLubyte*)"glTexPageCommitmentARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sparse_texture */
+
+#ifdef GL_ARB_sync
+
+static GLboolean _glewInit_GL_ARB_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)glewGetProcAddress((const GLubyte*)"glClientWaitSync")) == NULL) || r;
+ r = ((glDeleteSync = (PFNGLDELETESYNCPROC)glewGetProcAddress((const GLubyte*)"glDeleteSync")) == NULL) || r;
+ r = ((glFenceSync = (PFNGLFENCESYNCPROC)glewGetProcAddress((const GLubyte*)"glFenceSync")) == NULL) || r;
+ r = ((glGetInteger64v = (PFNGLGETINTEGER64VPROC)glewGetProcAddress((const GLubyte*)"glGetInteger64v")) == NULL) || r;
+ r = ((glGetSynciv = (PFNGLGETSYNCIVPROC)glewGetProcAddress((const GLubyte*)"glGetSynciv")) == NULL) || r;
+ r = ((glIsSync = (PFNGLISSYNCPROC)glewGetProcAddress((const GLubyte*)"glIsSync")) == NULL) || r;
+ r = ((glWaitSync = (PFNGLWAITSYNCPROC)glewGetProcAddress((const GLubyte*)"glWaitSync")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_sync */
+
+#ifdef GL_ARB_tessellation_shader
+
+static GLboolean _glewInit_GL_ARB_tessellation_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glPatchParameterfv")) == NULL) || r;
+ r = ((glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glPatchParameteri")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_tessellation_shader */
+
+#ifdef GL_ARB_texture_barrier
+
+static GLboolean _glewInit_GL_ARB_texture_barrier ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)glewGetProcAddress((const GLubyte*)"glTextureBarrier")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_barrier */
+
+#ifdef GL_ARB_texture_buffer_object
+
+static GLboolean _glewInit_GL_ARB_texture_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexBufferARB = (PFNGLTEXBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glTexBufferARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_buffer_object */
+
+#ifdef GL_ARB_texture_buffer_range
+
+static GLboolean _glewInit_GL_ARB_texture_buffer_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glTexBufferRange")) == NULL) || r;
+ r = ((glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureBufferRangeEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_buffer_range */
+
+#ifdef GL_ARB_texture_compression
+
+static GLboolean _glewInit_GL_ARB_texture_compression ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage1DARB")) == NULL) || r;
+ r = ((glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage2DARB")) == NULL) || r;
+ r = ((glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3DARB")) == NULL) || r;
+ r = ((glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage1DARB")) == NULL) || r;
+ r = ((glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage2DARB")) == NULL) || r;
+ r = ((glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3DARB")) == NULL) || r;
+ r = ((glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTexImageARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_compression */
+
+#ifdef GL_ARB_texture_multisample
+
+static GLboolean _glewInit_GL_ARB_texture_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)glewGetProcAddress((const GLubyte*)"glGetMultisamplefv")) == NULL) || r;
+ r = ((glSampleMaski = (PFNGLSAMPLEMASKIPROC)glewGetProcAddress((const GLubyte*)"glSampleMaski")) == NULL) || r;
+ r = ((glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTexImage2DMultisample")) == NULL) || r;
+ r = ((glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DMultisample")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_multisample */
+
+#ifdef GL_ARB_texture_storage
+
+static GLboolean _glewInit_GL_ARB_texture_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)glewGetProcAddress((const GLubyte*)"glTexStorage1D")) == NULL) || r;
+ r = ((glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)glewGetProcAddress((const GLubyte*)"glTexStorage2D")) == NULL) || r;
+ r = ((glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTexStorage3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_storage */
+
+#ifdef GL_ARB_texture_storage_multisample
+
+static GLboolean _glewInit_GL_ARB_texture_storage_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTexStorage2DMultisample")) == NULL) || r;
+ r = ((glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glTexStorage3DMultisample")) == NULL) || r;
+ r = ((glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage2DMultisampleEXT")) == NULL) || r;
+ r = ((glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage3DMultisampleEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_storage_multisample */
+
+#ifdef GL_ARB_texture_view
+
+static GLboolean _glewInit_GL_ARB_texture_view ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureView = (PFNGLTEXTUREVIEWPROC)glewGetProcAddress((const GLubyte*)"glTextureView")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_texture_view */
+
+#ifdef GL_ARB_timer_query
+
+static GLboolean _glewInit_GL_ARB_timer_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjecti64v")) == NULL) || r;
+ r = ((glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectui64v")) == NULL) || r;
+ r = ((glQueryCounter = (PFNGLQUERYCOUNTERPROC)glewGetProcAddress((const GLubyte*)"glQueryCounter")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_timer_query */
+
+#ifdef GL_ARB_transform_feedback2
+
+static GLboolean _glewInit_GL_ARB_transform_feedback2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glBindTransformFeedback")) == NULL) || r;
+ r = ((glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)"glDeleteTransformFeedbacks")) == NULL) || r;
+ r = ((glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedback")) == NULL) || r;
+ r = ((glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)"glGenTransformFeedbacks")) == NULL) || r;
+ r = ((glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glIsTransformFeedback")) == NULL) || r;
+ r = ((glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glPauseTransformFeedback")) == NULL) || r;
+ r = ((glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glResumeTransformFeedback")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_transform_feedback2 */
+
+#ifdef GL_ARB_transform_feedback3
+
+static GLboolean _glewInit_GL_ARB_transform_feedback3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryIndexed")) == NULL) || r;
+ r = ((glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackStream")) == NULL) || r;
+ r = ((glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glEndQueryIndexed")) == NULL) || r;
+ r = ((glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryIndexediv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_transform_feedback3 */
+
+#ifdef GL_ARB_transform_feedback_instanced
+
+static GLboolean _glewInit_GL_ARB_transform_feedback_instanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackInstanced")) == NULL) || r;
+ r = ((glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackStreamInstanced")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_transform_feedback_instanced */
+
+#ifdef GL_ARB_transpose_matrix
+
+static GLboolean _glewInit_GL_ARB_transpose_matrix ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixdARB")) == NULL) || r;
+ r = ((glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixfARB")) == NULL) || r;
+ r = ((glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixdARB")) == NULL) || r;
+ r = ((glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixfARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_transpose_matrix */
+
+#ifdef GL_ARB_uniform_buffer_object
+
+static GLboolean _glewInit_GL_ARB_uniform_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBase")) == NULL) || r;
+ r = ((glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRange")) == NULL) || r;
+ r = ((glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformBlockName")) == NULL) || r;
+ r = ((glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformBlockiv")) == NULL) || r;
+ r = ((glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformName")) == NULL) || r;
+ r = ((glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformsiv")) == NULL) || r;
+ r = ((glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)glewGetProcAddress((const GLubyte*)"glGetIntegeri_v")) == NULL) || r;
+ r = ((glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetUniformBlockIndex")) == NULL) || r;
+ r = ((glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)glewGetProcAddress((const GLubyte*)"glGetUniformIndices")) == NULL) || r;
+ r = ((glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)glewGetProcAddress((const GLubyte*)"glUniformBlockBinding")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_uniform_buffer_object */
+
+#ifdef GL_ARB_vertex_array_object
+
+static GLboolean _glewInit_GL_ARB_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArray")) == NULL) || r;
+ r = ((glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArrays")) == NULL) || r;
+ r = ((glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArrays")) == NULL) || r;
+ r = ((glIsVertexArray = (PFNGLISVERTEXARRAYPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArray")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_array_object */
+
+#ifdef GL_ARB_vertex_attrib_64bit
+
+static GLboolean _glewInit_GL_ARB_vertex_attrib_64bit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLdv")) == NULL) || r;
+ r = ((glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1d")) == NULL) || r;
+ r = ((glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1dv")) == NULL) || r;
+ r = ((glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2d")) == NULL) || r;
+ r = ((glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2dv")) == NULL) || r;
+ r = ((glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3d")) == NULL) || r;
+ r = ((glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3dv")) == NULL) || r;
+ r = ((glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4d")) == NULL) || r;
+ r = ((glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4dv")) == NULL) || r;
+ r = ((glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLPointer")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_attrib_64bit */
+
+#ifdef GL_ARB_vertex_attrib_binding
+
+static GLboolean _glewInit_GL_ARB_vertex_attrib_binding ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindVertexBuffer")) == NULL) || r;
+ r = ((glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayBindVertexBufferEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribBindingEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribFormatEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribIFormatEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribLFormatEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexBindingDivisorEXT")) == NULL) || r;
+ r = ((glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribBinding")) == NULL) || r;
+ r = ((glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribFormat")) == NULL) || r;
+ r = ((glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIFormat")) == NULL) || r;
+ r = ((glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLFormat")) == NULL) || r;
+ r = ((glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)glewGetProcAddress((const GLubyte*)"glVertexBindingDivisor")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_attrib_binding */
+
+#ifdef GL_ARB_vertex_blend
+
+static GLboolean _glewInit_GL_ARB_vertex_blend ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendARB")) == NULL) || r;
+ r = ((glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glWeightPointerARB")) == NULL) || r;
+ r = ((glWeightbvARB = (PFNGLWEIGHTBVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightbvARB")) == NULL) || r;
+ r = ((glWeightdvARB = (PFNGLWEIGHTDVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightdvARB")) == NULL) || r;
+ r = ((glWeightfvARB = (PFNGLWEIGHTFVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightfvARB")) == NULL) || r;
+ r = ((glWeightivARB = (PFNGLWEIGHTIVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightivARB")) == NULL) || r;
+ r = ((glWeightsvARB = (PFNGLWEIGHTSVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightsvARB")) == NULL) || r;
+ r = ((glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightubvARB")) == NULL) || r;
+ r = ((glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightuivARB")) == NULL) || r;
+ r = ((glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightusvARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_blend */
+
+#ifdef GL_ARB_vertex_buffer_object
+
+static GLboolean _glewInit_GL_ARB_vertex_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindBufferARB = (PFNGLBINDBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glBindBufferARB")) == NULL) || r;
+ r = ((glBufferDataARB = (PFNGLBUFFERDATAARBPROC)glewGetProcAddress((const GLubyte*)"glBufferDataARB")) == NULL) || r;
+ r = ((glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)glewGetProcAddress((const GLubyte*)"glBufferSubDataARB")) == NULL) || r;
+ r = ((glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteBuffersARB")) == NULL) || r;
+ r = ((glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glGenBuffersARB")) == NULL) || r;
+ r = ((glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameterivARB")) == NULL) || r;
+ r = ((glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferPointervARB")) == NULL) || r;
+ r = ((glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferSubDataARB")) == NULL) || r;
+ r = ((glIsBufferARB = (PFNGLISBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glIsBufferARB")) == NULL) || r;
+ r = ((glMapBufferARB = (PFNGLMAPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glMapBufferARB")) == NULL) || r;
+ r = ((glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glUnmapBufferARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_buffer_object */
+
+#ifdef GL_ARB_vertex_program
+
+static GLboolean _glewInit_GL_ARB_vertex_program ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glBindProgramARB")) == NULL) || r;
+ r = ((glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgramsARB")) == NULL) || r;
+ r = ((glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexAttribArrayARB")) == NULL) || r;
+ r = ((glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexAttribArrayARB")) == NULL) || r;
+ r = ((glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)glewGetProcAddress((const GLubyte*)"glGenProgramsARB")) == NULL) || r;
+ r = ((glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramEnvParameterdvARB")) == NULL) || r;
+ r = ((glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramEnvParameterfvARB")) == NULL) || r;
+ r = ((glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramLocalParameterdvARB")) == NULL) || r;
+ r = ((glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramLocalParameterfvARB")) == NULL) || r;
+ r = ((glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStringARB")) == NULL) || r;
+ r = ((glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramivARB")) == NULL) || r;
+ r = ((glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointervARB")) == NULL) || r;
+ r = ((glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdvARB")) == NULL) || r;
+ r = ((glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfvARB")) == NULL) || r;
+ r = ((glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribivARB")) == NULL) || r;
+ r = ((glIsProgramARB = (PFNGLISPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glIsProgramARB")) == NULL) || r;
+ r = ((glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4dARB")) == NULL) || r;
+ r = ((glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4dvARB")) == NULL) || r;
+ r = ((glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4fARB")) == NULL) || r;
+ r = ((glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4fvARB")) == NULL) || r;
+ r = ((glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4dARB")) == NULL) || r;
+ r = ((glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4dvARB")) == NULL) || r;
+ r = ((glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4fARB")) == NULL) || r;
+ r = ((glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4fvARB")) == NULL) || r;
+ r = ((glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glProgramStringARB")) == NULL) || r;
+ r = ((glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dARB")) == NULL) || r;
+ r = ((glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dvARB")) == NULL) || r;
+ r = ((glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fARB")) == NULL) || r;
+ r = ((glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fvARB")) == NULL) || r;
+ r = ((glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sARB")) == NULL) || r;
+ r = ((glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1svARB")) == NULL) || r;
+ r = ((glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dARB")) == NULL) || r;
+ r = ((glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dvARB")) == NULL) || r;
+ r = ((glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fARB")) == NULL) || r;
+ r = ((glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fvARB")) == NULL) || r;
+ r = ((glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sARB")) == NULL) || r;
+ r = ((glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2svARB")) == NULL) || r;
+ r = ((glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dARB")) == NULL) || r;
+ r = ((glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dvARB")) == NULL) || r;
+ r = ((glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fARB")) == NULL) || r;
+ r = ((glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fvARB")) == NULL) || r;
+ r = ((glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sARB")) == NULL) || r;
+ r = ((glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3svARB")) == NULL) || r;
+ r = ((glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NbvARB")) == NULL) || r;
+ r = ((glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NivARB")) == NULL) || r;
+ r = ((glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NsvARB")) == NULL) || r;
+ r = ((glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NubARB")) == NULL) || r;
+ r = ((glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NubvARB")) == NULL) || r;
+ r = ((glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NuivARB")) == NULL) || r;
+ r = ((glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NusvARB")) == NULL) || r;
+ r = ((glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4bvARB")) == NULL) || r;
+ r = ((glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dARB")) == NULL) || r;
+ r = ((glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dvARB")) == NULL) || r;
+ r = ((glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fARB")) == NULL) || r;
+ r = ((glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fvARB")) == NULL) || r;
+ r = ((glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ivARB")) == NULL) || r;
+ r = ((glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sARB")) == NULL) || r;
+ r = ((glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4svARB")) == NULL) || r;
+ r = ((glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubvARB")) == NULL) || r;
+ r = ((glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4uivARB")) == NULL) || r;
+ r = ((glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4usvARB")) == NULL) || r;
+ r = ((glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointerARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_program */
+
+#ifdef GL_ARB_vertex_shader
+
+static GLboolean _glewInit_GL_ARB_vertex_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glBindAttribLocationARB")) == NULL) || r;
+ r = ((glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveAttribARB")) == NULL) || r;
+ r = ((glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glGetAttribLocationARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_shader */
+
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+
+static GLboolean _glewInit_GL_ARB_vertex_type_2_10_10_10_rev ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorP3ui = (PFNGLCOLORP3UIPROC)glewGetProcAddress((const GLubyte*)"glColorP3ui")) == NULL) || r;
+ r = ((glColorP3uiv = (PFNGLCOLORP3UIVPROC)glewGetProcAddress((const GLubyte*)"glColorP3uiv")) == NULL) || r;
+ r = ((glColorP4ui = (PFNGLCOLORP4UIPROC)glewGetProcAddress((const GLubyte*)"glColorP4ui")) == NULL) || r;
+ r = ((glColorP4uiv = (PFNGLCOLORP4UIVPROC)glewGetProcAddress((const GLubyte*)"glColorP4uiv")) == NULL) || r;
+ r = ((glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP1ui")) == NULL) || r;
+ r = ((glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP1uiv")) == NULL) || r;
+ r = ((glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP2ui")) == NULL) || r;
+ r = ((glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP2uiv")) == NULL) || r;
+ r = ((glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP3ui")) == NULL) || r;
+ r = ((glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP3uiv")) == NULL) || r;
+ r = ((glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP4ui")) == NULL) || r;
+ r = ((glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP4uiv")) == NULL) || r;
+ r = ((glNormalP3ui = (PFNGLNORMALP3UIPROC)glewGetProcAddress((const GLubyte*)"glNormalP3ui")) == NULL) || r;
+ r = ((glNormalP3uiv = (PFNGLNORMALP3UIVPROC)glewGetProcAddress((const GLubyte*)"glNormalP3uiv")) == NULL) || r;
+ r = ((glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorP3ui")) == NULL) || r;
+ r = ((glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorP3uiv")) == NULL) || r;
+ r = ((glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP1ui")) == NULL) || r;
+ r = ((glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP1uiv")) == NULL) || r;
+ r = ((glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP2ui")) == NULL) || r;
+ r = ((glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP2uiv")) == NULL) || r;
+ r = ((glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP3ui")) == NULL) || r;
+ r = ((glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP3uiv")) == NULL) || r;
+ r = ((glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP4ui")) == NULL) || r;
+ r = ((glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP4uiv")) == NULL) || r;
+ r = ((glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP1ui")) == NULL) || r;
+ r = ((glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP1uiv")) == NULL) || r;
+ r = ((glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP2ui")) == NULL) || r;
+ r = ((glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP2uiv")) == NULL) || r;
+ r = ((glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP3ui")) == NULL) || r;
+ r = ((glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP3uiv")) == NULL) || r;
+ r = ((glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP4ui")) == NULL) || r;
+ r = ((glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP4uiv")) == NULL) || r;
+ r = ((glVertexP2ui = (PFNGLVERTEXP2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP2ui")) == NULL) || r;
+ r = ((glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP2uiv")) == NULL) || r;
+ r = ((glVertexP3ui = (PFNGLVERTEXP3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP3ui")) == NULL) || r;
+ r = ((glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP3uiv")) == NULL) || r;
+ r = ((glVertexP4ui = (PFNGLVERTEXP4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP4ui")) == NULL) || r;
+ r = ((glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP4uiv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
+#ifdef GL_ARB_viewport_array
+
+static GLboolean _glewInit_GL_ARB_viewport_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangeArrayv")) == NULL) || r;
+ r = ((glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glDepthRangeIndexed")) == NULL) || r;
+ r = ((glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)glewGetProcAddress((const GLubyte*)"glGetDoublei_v")) == NULL) || r;
+ r = ((glGetFloati_v = (PFNGLGETFLOATI_VPROC)glewGetProcAddress((const GLubyte*)"glGetFloati_v")) == NULL) || r;
+ r = ((glScissorArrayv = (PFNGLSCISSORARRAYVPROC)glewGetProcAddress((const GLubyte*)"glScissorArrayv")) == NULL) || r;
+ r = ((glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glScissorIndexed")) == NULL) || r;
+ r = ((glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)glewGetProcAddress((const GLubyte*)"glScissorIndexedv")) == NULL) || r;
+ r = ((glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)glewGetProcAddress((const GLubyte*)"glViewportArrayv")) == NULL) || r;
+ r = ((glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)glewGetProcAddress((const GLubyte*)"glViewportIndexedf")) == NULL) || r;
+ r = ((glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)glewGetProcAddress((const GLubyte*)"glViewportIndexedfv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_viewport_array */
+
+#ifdef GL_ARB_window_pos
+
+static GLboolean _glewInit_GL_ARB_window_pos ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dARB")) == NULL) || r;
+ r = ((glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dvARB")) == NULL) || r;
+ r = ((glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fARB")) == NULL) || r;
+ r = ((glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fvARB")) == NULL) || r;
+ r = ((glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iARB")) == NULL) || r;
+ r = ((glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2ivARB")) == NULL) || r;
+ r = ((glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sARB")) == NULL) || r;
+ r = ((glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2svARB")) == NULL) || r;
+ r = ((glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dARB")) == NULL) || r;
+ r = ((glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dvARB")) == NULL) || r;
+ r = ((glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fARB")) == NULL) || r;
+ r = ((glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fvARB")) == NULL) || r;
+ r = ((glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iARB")) == NULL) || r;
+ r = ((glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3ivARB")) == NULL) || r;
+ r = ((glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sARB")) == NULL) || r;
+ r = ((glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3svARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ARB_window_pos */
+
+#ifdef GL_ATI_draw_buffers
+
+static GLboolean _glewInit_GL_ATI_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_draw_buffers */
+
+#ifdef GL_ATI_element_array
+
+static GLboolean _glewInit_GL_ATI_element_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)glewGetProcAddress((const GLubyte*)"glDrawElementArrayATI")) == NULL) || r;
+ r = ((glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementArrayATI")) == NULL) || r;
+ r = ((glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)glewGetProcAddress((const GLubyte*)"glElementPointerATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_element_array */
+
+#ifdef GL_ATI_envmap_bumpmap
+
+static GLboolean _glewInit_GL_ATI_envmap_bumpmap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetTexBumpParameterfvATI")) == NULL) || r;
+ r = ((glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetTexBumpParameterivATI")) == NULL) || r;
+ r = ((glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)glewGetProcAddress((const GLubyte*)"glTexBumpParameterfvATI")) == NULL) || r;
+ r = ((glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)glewGetProcAddress((const GLubyte*)"glTexBumpParameterivATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_envmap_bumpmap */
+
+#ifdef GL_ATI_fragment_shader
+
+static GLboolean _glewInit_GL_ATI_fragment_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp1ATI")) == NULL) || r;
+ r = ((glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp2ATI")) == NULL) || r;
+ r = ((glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp3ATI")) == NULL) || r;
+ r = ((glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glBeginFragmentShaderATI")) == NULL) || r;
+ r = ((glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glBindFragmentShaderATI")) == NULL) || r;
+ r = ((glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp1ATI")) == NULL) || r;
+ r = ((glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp2ATI")) == NULL) || r;
+ r = ((glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp3ATI")) == NULL) || r;
+ r = ((glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glDeleteFragmentShaderATI")) == NULL) || r;
+ r = ((glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glEndFragmentShaderATI")) == NULL) || r;
+ r = ((glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)glewGetProcAddress((const GLubyte*)"glGenFragmentShadersATI")) == NULL) || r;
+ r = ((glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)glewGetProcAddress((const GLubyte*)"glPassTexCoordATI")) == NULL) || r;
+ r = ((glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)glewGetProcAddress((const GLubyte*)"glSampleMapATI")) == NULL) || r;
+ r = ((glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)glewGetProcAddress((const GLubyte*)"glSetFragmentShaderConstantATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_fragment_shader */
+
+#ifdef GL_ATI_map_object_buffer
+
+static GLboolean _glewInit_GL_ATI_map_object_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glMapObjectBufferATI")) == NULL) || r;
+ r = ((glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glUnmapObjectBufferATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_map_object_buffer */
+
+#ifdef GL_ATI_pn_triangles
+
+static GLboolean _glewInit_GL_ATI_pn_triangles ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)glewGetProcAddress((const GLubyte*)"glPNTrianglesfATI")) == NULL) || r;
+ r = ((glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)glewGetProcAddress((const GLubyte*)"glPNTrianglesiATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_pn_triangles */
+
+#ifdef GL_ATI_separate_stencil
+
+static GLboolean _glewInit_GL_ATI_separate_stencil ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)glewGetProcAddress((const GLubyte*)"glStencilFuncSeparateATI")) == NULL) || r;
+ r = ((glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)glewGetProcAddress((const GLubyte*)"glStencilOpSeparateATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_separate_stencil */
+
+#ifdef GL_ATI_vertex_array_object
+
+static GLboolean _glewInit_GL_ATI_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glArrayObjectATI")) == NULL) || r;
+ r = ((glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glFreeObjectBufferATI")) == NULL) || r;
+ r = ((glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetArrayObjectfvATI")) == NULL) || r;
+ r = ((glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetArrayObjectivATI")) == NULL) || r;
+ r = ((glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetObjectBufferfvATI")) == NULL) || r;
+ r = ((glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetObjectBufferivATI")) == NULL) || r;
+ r = ((glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVariantArrayObjectfvATI")) == NULL) || r;
+ r = ((glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVariantArrayObjectivATI")) == NULL) || r;
+ r = ((glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glIsObjectBufferATI")) == NULL) || r;
+ r = ((glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glNewObjectBufferATI")) == NULL) || r;
+ r = ((glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glUpdateObjectBufferATI")) == NULL) || r;
+ r = ((glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glVariantArrayObjectATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_vertex_array_object */
+
+#ifdef GL_ATI_vertex_attrib_array_object
+
+static GLboolean _glewInit_GL_ATI_vertex_attrib_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribArrayObjectfvATI")) == NULL) || r;
+ r = ((glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribArrayObjectivATI")) == NULL) || r;
+ r = ((glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribArrayObjectATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_vertex_attrib_array_object */
+
+#ifdef GL_ATI_vertex_streams
+
+static GLboolean _glewInit_GL_ATI_vertex_streams ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)glewGetProcAddress((const GLubyte*)"glClientActiveVertexStreamATI")) == NULL) || r;
+ r = ((glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3bATI")) == NULL) || r;
+ r = ((glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3bvATI")) == NULL) || r;
+ r = ((glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3dATI")) == NULL) || r;
+ r = ((glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3dvATI")) == NULL) || r;
+ r = ((glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3fATI")) == NULL) || r;
+ r = ((glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3fvATI")) == NULL) || r;
+ r = ((glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3iATI")) == NULL) || r;
+ r = ((glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3ivATI")) == NULL) || r;
+ r = ((glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3sATI")) == NULL) || r;
+ r = ((glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3svATI")) == NULL) || r;
+ r = ((glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendEnvfATI")) == NULL) || r;
+ r = ((glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendEnviATI")) == NULL) || r;
+ r = ((glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1dATI")) == NULL) || r;
+ r = ((glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1dvATI")) == NULL) || r;
+ r = ((glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1fATI")) == NULL) || r;
+ r = ((glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1fvATI")) == NULL) || r;
+ r = ((glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1iATI")) == NULL) || r;
+ r = ((glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1ivATI")) == NULL) || r;
+ r = ((glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1sATI")) == NULL) || r;
+ r = ((glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream1svATI")) == NULL) || r;
+ r = ((glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2dATI")) == NULL) || r;
+ r = ((glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2dvATI")) == NULL) || r;
+ r = ((glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2fATI")) == NULL) || r;
+ r = ((glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2fvATI")) == NULL) || r;
+ r = ((glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2iATI")) == NULL) || r;
+ r = ((glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2ivATI")) == NULL) || r;
+ r = ((glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2sATI")) == NULL) || r;
+ r = ((glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2svATI")) == NULL) || r;
+ r = ((glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3dATI")) == NULL) || r;
+ r = ((glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3dvATI")) == NULL) || r;
+ r = ((glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3fATI")) == NULL) || r;
+ r = ((glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3fvATI")) == NULL) || r;
+ r = ((glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3iATI")) == NULL) || r;
+ r = ((glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3ivATI")) == NULL) || r;
+ r = ((glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3sATI")) == NULL) || r;
+ r = ((glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3svATI")) == NULL) || r;
+ r = ((glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4dATI")) == NULL) || r;
+ r = ((glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4dvATI")) == NULL) || r;
+ r = ((glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4fATI")) == NULL) || r;
+ r = ((glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4fvATI")) == NULL) || r;
+ r = ((glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4iATI")) == NULL) || r;
+ r = ((glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4ivATI")) == NULL) || r;
+ r = ((glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4sATI")) == NULL) || r;
+ r = ((glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4svATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_ATI_vertex_streams */
+
+#ifdef GL_EXT_EGL_image_storage
+
+static GLboolean _glewInit_GL_EXT_EGL_image_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEGLImageTargetTexStorageEXT = (PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glEGLImageTargetTexStorageEXT")) == NULL) || r;
+ r = ((glEGLImageTargetTextureStorageEXT = (PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glEGLImageTargetTextureStorageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_EGL_image_storage */
+
+#ifdef GL_EXT_base_instance
+
+static GLboolean _glewInit_GL_EXT_base_instance ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedBaseInstanceEXT = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedBaseInstanceEXT")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseInstanceEXT")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseVertexBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseVertexBaseInstanceEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_base_instance */
+
+#ifdef GL_EXT_bindable_uniform
+
+static GLboolean _glewInit_GL_EXT_bindable_uniform ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformBufferSizeEXT")) == NULL) || r;
+ r = ((glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformOffsetEXT")) == NULL) || r;
+ r = ((glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glUniformBufferEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_bindable_uniform */
+
+#ifdef GL_EXT_blend_color
+
+static GLboolean _glewInit_GL_EXT_blend_color ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)glewGetProcAddress((const GLubyte*)"glBlendColorEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_color */
+
+#ifdef GL_EXT_blend_equation_separate
+
+static GLboolean _glewInit_GL_EXT_blend_equation_separate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_equation_separate */
+
+#ifdef GL_EXT_blend_func_extended
+
+static GLboolean _glewInit_GL_EXT_blend_func_extended ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFragDataLocationIndexedEXT = (PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocationIndexedEXT")) == NULL) || r;
+ r = ((glGetFragDataIndexEXT = (PFNGLGETFRAGDATAINDEXEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataIndexEXT")) == NULL) || r;
+ r = ((glGetProgramResourceLocationIndexEXT = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourceLocationIndexEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_func_extended */
+
+#ifdef GL_EXT_blend_func_separate
+
+static GLboolean _glewInit_GL_EXT_blend_func_separate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_func_separate */
+
+#ifdef GL_EXT_blend_minmax
+
+static GLboolean _glewInit_GL_EXT_blend_minmax ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_blend_minmax */
+
+#ifdef GL_EXT_buffer_storage
+
+static GLboolean _glewInit_GL_EXT_buffer_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferStorageEXT = (PFNGLBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glBufferStorageEXT")) == NULL) || r;
+ r = ((glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferStorageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_buffer_storage */
+
+#ifdef GL_EXT_clear_texture
+
+static GLboolean _glewInit_GL_EXT_clear_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearTexImageEXT = (PFNGLCLEARTEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glClearTexImageEXT")) == NULL) || r;
+ r = ((glClearTexSubImageEXT = (PFNGLCLEARTEXSUBIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glClearTexSubImageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_clear_texture */
+
+#ifdef GL_EXT_clip_control
+
+static GLboolean _glewInit_GL_EXT_clip_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClipControlEXT = (PFNGLCLIPCONTROLEXTPROC)glewGetProcAddress((const GLubyte*)"glClipControlEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_clip_control */
+
+#ifdef GL_EXT_color_subtable
+
+static GLboolean _glewInit_GL_EXT_color_subtable ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glColorSubTableEXT")) == NULL) || r;
+ r = ((glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyColorSubTableEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_color_subtable */
+
+#ifdef GL_EXT_compiled_vertex_array
+
+static GLboolean _glewInit_GL_EXT_compiled_vertex_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glLockArraysEXT")) == NULL) || r;
+ r = ((glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glUnlockArraysEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_compiled_vertex_array */
+
+#ifdef GL_EXT_convolution
+
+static GLboolean _glewInit_GL_EXT_convolution ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter1DEXT")) == NULL) || r;
+ r = ((glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter2DEXT")) == NULL) || r;
+ r = ((glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfEXT")) == NULL) || r;
+ r = ((glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfvEXT")) == NULL) || r;
+ r = ((glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteriEXT")) == NULL) || r;
+ r = ((glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterivEXT")) == NULL) || r;
+ r = ((glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter1DEXT")) == NULL) || r;
+ r = ((glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter2DEXT")) == NULL) || r;
+ r = ((glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionFilterEXT")) == NULL) || r;
+ r = ((glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterfvEXT")) == NULL) || r;
+ r = ((glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterivEXT")) == NULL) || r;
+ r = ((glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)glewGetProcAddress((const GLubyte*)"glGetSeparableFilterEXT")) == NULL) || r;
+ r = ((glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glSeparableFilter2DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_convolution */
+
+#ifdef GL_EXT_coordinate_frame
+
+static GLboolean _glewInit_GL_EXT_coordinate_frame ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glBinormalPointerEXT")) == NULL) || r;
+ r = ((glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glTangentPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_coordinate_frame */
+
+#ifdef GL_EXT_copy_image
+
+static GLboolean _glewInit_GL_EXT_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyImageSubDataEXT = (PFNGLCOPYIMAGESUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyImageSubDataEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_copy_image */
+
+#ifdef GL_EXT_copy_texture
+
+static GLboolean _glewInit_GL_EXT_copy_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexImage1DEXT")) == NULL) || r;
+ r = ((glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexImage2DEXT")) == NULL) || r;
+ r = ((glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage1DEXT")) == NULL) || r;
+ r = ((glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage2DEXT")) == NULL) || r;
+ r = ((glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_copy_texture */
+
+#ifdef GL_EXT_cull_vertex
+
+static GLboolean _glewInit_GL_EXT_cull_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)glewGetProcAddress((const GLubyte*)"glCullParameterdvEXT")) == NULL) || r;
+ r = ((glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glCullParameterfvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_cull_vertex */
+
+#ifdef GL_EXT_debug_label
+
+static GLboolean _glewInit_GL_EXT_debug_label ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)glewGetProcAddress((const GLubyte*)"glGetObjectLabelEXT")) == NULL) || r;
+ r = ((glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)glewGetProcAddress((const GLubyte*)"glLabelObjectEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_debug_label */
+
+#ifdef GL_EXT_debug_marker
+
+static GLboolean _glewInit_GL_EXT_debug_marker ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)glewGetProcAddress((const GLubyte*)"glInsertEventMarkerEXT")) == NULL) || r;
+ r = ((glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)glewGetProcAddress((const GLubyte*)"glPopGroupMarkerEXT")) == NULL) || r;
+ r = ((glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)glewGetProcAddress((const GLubyte*)"glPushGroupMarkerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_debug_marker */
+
+#ifdef GL_EXT_depth_bounds_test
+
+static GLboolean _glewInit_GL_EXT_depth_bounds_test ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)glewGetProcAddress((const GLubyte*)"glDepthBoundsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_depth_bounds_test */
+
+#ifdef GL_EXT_direct_state_access
+
+static GLboolean _glewInit_GL_EXT_direct_state_access ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindMultiTextureEXT")) == NULL) || r;
+ r = ((glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)"glCheckNamedFramebufferStatusEXT")) == NULL) || r;
+ r = ((glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)glewGetProcAddress((const GLubyte*)"glClientAttribDefaultEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage1DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage2DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage3DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage1DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage2DEXT")) == NULL) || r;
+ r = ((glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage3DEXT")) == NULL) || r;
+ r = ((glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage1DEXT")) == NULL) || r;
+ r = ((glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage2DEXT")) == NULL) || r;
+ r = ((glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage3DEXT")) == NULL) || r;
+ r = ((glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage1DEXT")) == NULL) || r;
+ r = ((glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage2DEXT")) == NULL) || r;
+ r = ((glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage3DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexImage1DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexImage2DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage1DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage2DEXT")) == NULL) || r;
+ r = ((glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage3DEXT")) == NULL) || r;
+ r = ((glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureImage1DEXT")) == NULL) || r;
+ r = ((glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureImage2DEXT")) == NULL) || r;
+ r = ((glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage1DEXT")) == NULL) || r;
+ r = ((glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage2DEXT")) == NULL) || r;
+ r = ((glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage3DEXT")) == NULL) || r;
+ r = ((glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableClientStateIndexedEXT")) == NULL) || r;
+ r = ((glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableClientStateiEXT")) == NULL) || r;
+ r = ((glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexArrayAttribEXT")) == NULL) || r;
+ r = ((glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexArrayEXT")) == NULL) || r;
+ r = ((glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableClientStateIndexedEXT")) == NULL) || r;
+ r = ((glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableClientStateiEXT")) == NULL) || r;
+ r = ((glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexArrayAttribEXT")) == NULL) || r;
+ r = ((glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexArrayEXT")) == NULL) || r;
+ r = ((glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedNamedBufferRangeEXT")) == NULL) || r;
+ r = ((glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferDrawBufferEXT")) == NULL) || r;
+ r = ((glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferDrawBuffersEXT")) == NULL) || r;
+ r = ((glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferReadBufferEXT")) == NULL) || r;
+ r = ((glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateMultiTexMipmapEXT")) == NULL) || r;
+ r = ((glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateTextureMipmapEXT")) == NULL) || r;
+ r = ((glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedMultiTexImageEXT")) == NULL) || r;
+ r = ((glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTextureImageEXT")) == NULL) || r;
+ r = ((glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetDoubleIndexedvEXT")) == NULL) || r;
+ r = ((glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetDoublei_vEXT")) == NULL) || r;
+ r = ((glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFloatIndexedvEXT")) == NULL) || r;
+ r = ((glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFloati_vEXT")) == NULL) || r;
+ r = ((glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameterivEXT")) == NULL) || r;
+ r = ((glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexEnvfvEXT")) == NULL) || r;
+ r = ((glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexEnvivEXT")) == NULL) || r;
+ r = ((glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGendvEXT")) == NULL) || r;
+ r = ((glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGenfvEXT")) == NULL) || r;
+ r = ((glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGenivEXT")) == NULL) || r;
+ r = ((glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexImageEXT")) == NULL) || r;
+ r = ((glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexLevelParameterfvEXT")) == NULL) || r;
+ r = ((glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexLevelParameterivEXT")) == NULL) || r;
+ r = ((glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterIivEXT")) == NULL) || r;
+ r = ((glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterIuivEXT")) == NULL) || r;
+ r = ((glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterfvEXT")) == NULL) || r;
+ r = ((glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterivEXT")) == NULL) || r;
+ r = ((glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameterivEXT")) == NULL) || r;
+ r = ((glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferPointervEXT")) == NULL) || r;
+ r = ((glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferSubDataEXT")) == NULL) || r;
+ r = ((glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferAttachmentParameterivEXT")) == NULL) || r;
+ r = ((glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterIivEXT")) == NULL) || r;
+ r = ((glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterIuivEXT")) == NULL) || r;
+ r = ((glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterdvEXT")) == NULL) || r;
+ r = ((glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterfvEXT")) == NULL) || r;
+ r = ((glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramStringEXT")) == NULL) || r;
+ r = ((glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramivEXT")) == NULL) || r;
+ r = ((glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedRenderbufferParameterivEXT")) == NULL) || r;
+ r = ((glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPointerIndexedvEXT")) == NULL) || r;
+ r = ((glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPointeri_vEXT")) == NULL) || r;
+ r = ((glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureImageEXT")) == NULL) || r;
+ r = ((glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameterfvEXT")) == NULL) || r;
+ r = ((glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameterivEXT")) == NULL) || r;
+ r = ((glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIivEXT")) == NULL) || r;
+ r = ((glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIuivEXT")) == NULL) || r;
+ r = ((glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterfvEXT")) == NULL) || r;
+ r = ((glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterivEXT")) == NULL) || r;
+ r = ((glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayIntegeri_vEXT")) == NULL) || r;
+ r = ((glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayIntegervEXT")) == NULL) || r;
+ r = ((glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayPointeri_vEXT")) == NULL) || r;
+ r = ((glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexArrayPointervEXT")) == NULL) || r;
+ r = ((glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBufferEXT")) == NULL) || r;
+ r = ((glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBufferRangeEXT")) == NULL) || r;
+ r = ((glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixFrustumEXT")) == NULL) || r;
+ r = ((glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadIdentityEXT")) == NULL) || r;
+ r = ((glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadTransposedEXT")) == NULL) || r;
+ r = ((glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadTransposefEXT")) == NULL) || r;
+ r = ((glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoaddEXT")) == NULL) || r;
+ r = ((glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadfEXT")) == NULL) || r;
+ r = ((glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultTransposedEXT")) == NULL) || r;
+ r = ((glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultTransposefEXT")) == NULL) || r;
+ r = ((glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultdEXT")) == NULL) || r;
+ r = ((glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultfEXT")) == NULL) || r;
+ r = ((glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixOrthoEXT")) == NULL) || r;
+ r = ((glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixPopEXT")) == NULL) || r;
+ r = ((glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixPushEXT")) == NULL) || r;
+ r = ((glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixRotatedEXT")) == NULL) || r;
+ r = ((glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixRotatefEXT")) == NULL) || r;
+ r = ((glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixScaledEXT")) == NULL) || r;
+ r = ((glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixScalefEXT")) == NULL) || r;
+ r = ((glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixTranslatedEXT")) == NULL) || r;
+ r = ((glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixTranslatefEXT")) == NULL) || r;
+ r = ((glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexBufferEXT")) == NULL) || r;
+ r = ((glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordPointerEXT")) == NULL) || r;
+ r = ((glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvfEXT")) == NULL) || r;
+ r = ((glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvfvEXT")) == NULL) || r;
+ r = ((glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnviEXT")) == NULL) || r;
+ r = ((glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvivEXT")) == NULL) || r;
+ r = ((glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGendEXT")) == NULL) || r;
+ r = ((glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGendvEXT")) == NULL) || r;
+ r = ((glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenfEXT")) == NULL) || r;
+ r = ((glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenfvEXT")) == NULL) || r;
+ r = ((glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGeniEXT")) == NULL) || r;
+ r = ((glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenivEXT")) == NULL) || r;
+ r = ((glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage1DEXT")) == NULL) || r;
+ r = ((glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage2DEXT")) == NULL) || r;
+ r = ((glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage3DEXT")) == NULL) || r;
+ r = ((glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterIivEXT")) == NULL) || r;
+ r = ((glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterIuivEXT")) == NULL) || r;
+ r = ((glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterfEXT")) == NULL) || r;
+ r = ((glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterfvEXT")) == NULL) || r;
+ r = ((glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameteriEXT")) == NULL) || r;
+ r = ((glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterivEXT")) == NULL) || r;
+ r = ((glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexRenderbufferEXT")) == NULL) || r;
+ r = ((glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage1DEXT")) == NULL) || r;
+ r = ((glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage2DEXT")) == NULL) || r;
+ r = ((glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage3DEXT")) == NULL) || r;
+ r = ((glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferDataEXT")) == NULL) || r;
+ r = ((glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferSubDataEXT")) == NULL) || r;
+ r = ((glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedCopyBufferSubDataEXT")) == NULL) || r;
+ r = ((glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferRenderbufferEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture1DEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture2DEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture3DEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureFaceEXT")) == NULL) || r;
+ r = ((glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureLayerEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4dEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4dvEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4fEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4fvEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4iEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4ivEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4uiEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4uivEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameters4fvEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParametersI4ivEXT")) == NULL) || r;
+ r = ((glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParametersI4uivEXT")) == NULL) || r;
+ r = ((glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramStringEXT")) == NULL) || r;
+ r = ((glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageEXT")) == NULL) || r;
+ r = ((glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisampleCoverageEXT")) == NULL) || r;
+ r = ((glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisampleEXT")) == NULL) || r;
+ r = ((glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1fEXT")) == NULL) || r;
+ r = ((glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1fvEXT")) == NULL) || r;
+ r = ((glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1iEXT")) == NULL) || r;
+ r = ((glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ivEXT")) == NULL) || r;
+ r = ((glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1uiEXT")) == NULL) || r;
+ r = ((glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1uivEXT")) == NULL) || r;
+ r = ((glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2fEXT")) == NULL) || r;
+ r = ((glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2fvEXT")) == NULL) || r;
+ r = ((glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2iEXT")) == NULL) || r;
+ r = ((glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ivEXT")) == NULL) || r;
+ r = ((glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2uiEXT")) == NULL) || r;
+ r = ((glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2uivEXT")) == NULL) || r;
+ r = ((glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3fEXT")) == NULL) || r;
+ r = ((glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3fvEXT")) == NULL) || r;
+ r = ((glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3iEXT")) == NULL) || r;
+ r = ((glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ivEXT")) == NULL) || r;
+ r = ((glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3uiEXT")) == NULL) || r;
+ r = ((glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3uivEXT")) == NULL) || r;
+ r = ((glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4fEXT")) == NULL) || r;
+ r = ((glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4fvEXT")) == NULL) || r;
+ r = ((glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4iEXT")) == NULL) || r;
+ r = ((glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ivEXT")) == NULL) || r;
+ r = ((glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4uiEXT")) == NULL) || r;
+ r = ((glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4uivEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x3fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x4fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x2fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x4fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x2fvEXT")) == NULL) || r;
+ r = ((glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x3fvEXT")) == NULL) || r;
+ r = ((glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)glewGetProcAddress((const GLubyte*)"glPushClientAttribDefaultEXT")) == NULL) || r;
+ r = ((glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTextureBufferEXT")) == NULL) || r;
+ r = ((glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage1DEXT")) == NULL) || r;
+ r = ((glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage2DEXT")) == NULL) || r;
+ r = ((glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage3DEXT")) == NULL) || r;
+ r = ((glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIivEXT")) == NULL) || r;
+ r = ((glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIuivEXT")) == NULL) || r;
+ r = ((glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterfEXT")) == NULL) || r;
+ r = ((glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterfvEXT")) == NULL) || r;
+ r = ((glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameteriEXT")) == NULL) || r;
+ r = ((glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterivEXT")) == NULL) || r;
+ r = ((glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTextureRenderbufferEXT")) == NULL) || r;
+ r = ((glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage1DEXT")) == NULL) || r;
+ r = ((glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage2DEXT")) == NULL) || r;
+ r = ((glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage3DEXT")) == NULL) || r;
+ r = ((glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glUnmapNamedBufferEXT")) == NULL) || r;
+ r = ((glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayColorOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayEdgeFlagOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayFogCoordOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayIndexOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayMultiTexCoordOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayNormalOffsetEXT")) == NULL) || r;
+ r = ((glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArraySecondaryColorOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayTexCoordOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribDivisorEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribIOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribOffsetEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexOffsetEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_direct_state_access */
+
+#ifdef GL_EXT_discard_framebuffer
+
+static GLboolean _glewInit_GL_EXT_discard_framebuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDiscardFramebufferEXT = (PFNGLDISCARDFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glDiscardFramebufferEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_discard_framebuffer */
+
+#ifdef GL_EXT_disjoint_timer_query
+
+static GLboolean _glewInit_GL_EXT_disjoint_timer_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginQueryEXT = (PFNGLBEGINQUERYEXTPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryEXT")) == NULL) || r;
+ r = ((glDeleteQueriesEXT = (PFNGLDELETEQUERIESEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueriesEXT")) == NULL) || r;
+ r = ((glEndQueryEXT = (PFNGLENDQUERYEXTPROC)glewGetProcAddress((const GLubyte*)"glEndQueryEXT")) == NULL) || r;
+ r = ((glGenQueriesEXT = (PFNGLGENQUERIESEXTPROC)glewGetProcAddress((const GLubyte*)"glGenQueriesEXT")) == NULL) || r;
+ r = ((glGetInteger64vEXT = (PFNGLGETINTEGER64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInteger64vEXT")) == NULL) || r;
+ r = ((glGetQueryObjectivEXT = (PFNGLGETQUERYOBJECTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectivEXT")) == NULL) || r;
+ r = ((glGetQueryObjectuivEXT = (PFNGLGETQUERYOBJECTUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuivEXT")) == NULL) || r;
+ r = ((glGetQueryivEXT = (PFNGLGETQUERYIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryivEXT")) == NULL) || r;
+ r = ((glIsQueryEXT = (PFNGLISQUERYEXTPROC)glewGetProcAddress((const GLubyte*)"glIsQueryEXT")) == NULL) || r;
+ r = ((glQueryCounterEXT = (PFNGLQUERYCOUNTEREXTPROC)glewGetProcAddress((const GLubyte*)"glQueryCounterEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_disjoint_timer_query */
+
+#ifdef GL_EXT_draw_buffers
+
+static GLboolean _glewInit_GL_EXT_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersEXT = (PFNGLDRAWBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_buffers */
+
+#ifdef GL_EXT_draw_buffers2
+
+static GLboolean _glewInit_GL_EXT_draw_buffers2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glColorMaskIndexedEXT")) == NULL) || r;
+ r = ((glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableIndexedEXT")) == NULL) || r;
+ r = ((glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableIndexedEXT")) == NULL) || r;
+ r = ((glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetBooleanIndexedvEXT")) == NULL) || r;
+ r = ((glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetIntegerIndexedvEXT")) == NULL) || r;
+ r = ((glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glIsEnabledIndexedEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_buffers2 */
+
+#ifdef GL_EXT_draw_buffers_indexed
+
+static GLboolean _glewInit_GL_EXT_draw_buffers_indexed ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateiEXT = (PFNGLBLENDEQUATIONSEPARATEIEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateiEXT")) == NULL) || r;
+ r = ((glBlendEquationiEXT = (PFNGLBLENDEQUATIONIEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationiEXT")) == NULL) || r;
+ r = ((glBlendFuncSeparateiEXT = (PFNGLBLENDFUNCSEPARATEIEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateiEXT")) == NULL) || r;
+ r = ((glBlendFunciEXT = (PFNGLBLENDFUNCIEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendFunciEXT")) == NULL) || r;
+ r = ((glColorMaskiEXT = (PFNGLCOLORMASKIEXTPROC)glewGetProcAddress((const GLubyte*)"glColorMaskiEXT")) == NULL) || r;
+ r = ((glDisableiEXT = (PFNGLDISABLEIEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableiEXT")) == NULL) || r;
+ r = ((glEnableiEXT = (PFNGLENABLEIEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableiEXT")) == NULL) || r;
+ r = ((glIsEnablediEXT = (PFNGLISENABLEDIEXTPROC)glewGetProcAddress((const GLubyte*)"glIsEnablediEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_buffers_indexed */
+
+#ifdef GL_EXT_draw_elements_base_vertex
+
+static GLboolean _glewInit_GL_EXT_draw_elements_base_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawElementsBaseVertexEXT = (PFNGLDRAWELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsBaseVertexEXT")) == NULL) || r;
+ r = ((glDrawElementsInstancedBaseVertexEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedBaseVertexEXT")) == NULL) || r;
+ r = ((glDrawRangeElementsBaseVertexEXT = (PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementsBaseVertexEXT")) == NULL) || r;
+ r = ((glMultiDrawElementsBaseVertexEXT = (PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsBaseVertexEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_elements_base_vertex */
+
+#ifdef GL_EXT_draw_instanced
+
+static GLboolean _glewInit_GL_EXT_draw_instanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedEXT")) == NULL) || r;
+ r = ((glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_instanced */
+
+#ifdef GL_EXT_draw_range_elements
+
+static GLboolean _glewInit_GL_EXT_draw_range_elements ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_range_elements */
+
+#ifdef GL_EXT_draw_transform_feedback
+
+static GLboolean _glewInit_GL_EXT_draw_transform_feedback ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawTransformFeedbackEXT = (PFNGLDRAWTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackEXT")) == NULL) || r;
+ r = ((glDrawTransformFeedbackInstancedEXT = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackInstancedEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_draw_transform_feedback */
+
+#ifdef GL_EXT_external_buffer
+
+static GLboolean _glewInit_GL_EXT_external_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferStorageExternalEXT = (PFNGLBUFFERSTORAGEEXTERNALEXTPROC)glewGetProcAddress((const GLubyte*)"glBufferStorageExternalEXT")) == NULL) || r;
+ r = ((glNamedBufferStorageExternalEXT = (PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferStorageExternalEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_external_buffer */
+
+#ifdef GL_EXT_fog_coord
+
+static GLboolean _glewInit_GL_EXT_fog_coord ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointerEXT")) == NULL) || r;
+ r = ((glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddEXT")) == NULL) || r;
+ r = ((glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddvEXT")) == NULL) || r;
+ r = ((glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfEXT")) == NULL) || r;
+ r = ((glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_fog_coord */
+
+#ifdef GL_EXT_fragment_lighting
+
+static GLboolean _glewInit_GL_EXT_fragment_lighting ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFragmentColorMaterialEXT = (PFNGLFRAGMENTCOLORMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentColorMaterialEXT")) == NULL) || r;
+ r = ((glFragmentLightModelfEXT = (PFNGLFRAGMENTLIGHTMODELFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfEXT")) == NULL) || r;
+ r = ((glFragmentLightModelfvEXT = (PFNGLFRAGMENTLIGHTMODELFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfvEXT")) == NULL) || r;
+ r = ((glFragmentLightModeliEXT = (PFNGLFRAGMENTLIGHTMODELIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModeliEXT")) == NULL) || r;
+ r = ((glFragmentLightModelivEXT = (PFNGLFRAGMENTLIGHTMODELIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelivEXT")) == NULL) || r;
+ r = ((glFragmentLightfEXT = (PFNGLFRAGMENTLIGHTFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfEXT")) == NULL) || r;
+ r = ((glFragmentLightfvEXT = (PFNGLFRAGMENTLIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfvEXT")) == NULL) || r;
+ r = ((glFragmentLightiEXT = (PFNGLFRAGMENTLIGHTIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightiEXT")) == NULL) || r;
+ r = ((glFragmentLightivEXT = (PFNGLFRAGMENTLIGHTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightivEXT")) == NULL) || r;
+ r = ((glFragmentMaterialfEXT = (PFNGLFRAGMENTMATERIALFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfEXT")) == NULL) || r;
+ r = ((glFragmentMaterialfvEXT = (PFNGLFRAGMENTMATERIALFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfvEXT")) == NULL) || r;
+ r = ((glFragmentMaterialiEXT = (PFNGLFRAGMENTMATERIALIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialiEXT")) == NULL) || r;
+ r = ((glFragmentMaterialivEXT = (PFNGLFRAGMENTMATERIALIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialivEXT")) == NULL) || r;
+ r = ((glGetFragmentLightfvEXT = (PFNGLGETFRAGMENTLIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightfvEXT")) == NULL) || r;
+ r = ((glGetFragmentLightivEXT = (PFNGLGETFRAGMENTLIGHTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightivEXT")) == NULL) || r;
+ r = ((glGetFragmentMaterialfvEXT = (PFNGLGETFRAGMENTMATERIALFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialfvEXT")) == NULL) || r;
+ r = ((glGetFragmentMaterialivEXT = (PFNGLGETFRAGMENTMATERIALIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialivEXT")) == NULL) || r;
+ r = ((glLightEnviEXT = (PFNGLLIGHTENVIEXTPROC)glewGetProcAddress((const GLubyte*)"glLightEnviEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_fragment_lighting */
+
+#ifdef GL_EXT_framebuffer_blit
+
+static GLboolean _glewInit_GL_EXT_framebuffer_blit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebufferEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_framebuffer_blit */
+
+#ifdef GL_EXT_framebuffer_multisample
+
+static GLboolean _glewInit_GL_EXT_framebuffer_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_framebuffer_multisample */
+
+#ifdef GL_EXT_framebuffer_object
+
+static GLboolean _glewInit_GL_EXT_framebuffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindFramebufferEXT")) == NULL) || r;
+ r = ((glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindRenderbufferEXT")) == NULL) || r;
+ r = ((glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)"glCheckFramebufferStatusEXT")) == NULL) || r;
+ r = ((glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffersEXT")) == NULL) || r;
+ r = ((glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffersEXT")) == NULL) || r;
+ r = ((glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbufferEXT")) == NULL) || r;
+ r = ((glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture1DEXT")) == NULL) || r;
+ r = ((glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DEXT")) == NULL) || r;
+ r = ((glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3DEXT")) == NULL) || r;
+ r = ((glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenFramebuffersEXT")) == NULL) || r;
+ r = ((glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenRenderbuffersEXT")) == NULL) || r;
+ r = ((glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateMipmapEXT")) == NULL) || r;
+ r = ((glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferAttachmentParameterivEXT")) == NULL) || r;
+ r = ((glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetRenderbufferParameterivEXT")) == NULL) || r;
+ r = ((glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glIsFramebufferEXT")) == NULL) || r;
+ r = ((glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glIsRenderbufferEXT")) == NULL) || r;
+ r = ((glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_framebuffer_object */
+
+#ifdef GL_EXT_geometry_shader4
+
+static GLboolean _glewInit_GL_EXT_geometry_shader4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureEXT")) == NULL) || r;
+ r = ((glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureFaceEXT")) == NULL) || r;
+ r = ((glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramParameteriEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_geometry_shader4 */
+
+#ifdef GL_EXT_gpu_program_parameters
+
+static GLboolean _glewInit_GL_EXT_gpu_program_parameters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameters4fvEXT")) == NULL) || r;
+ r = ((glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameters4fvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_gpu_program_parameters */
+
+#ifdef GL_EXT_gpu_shader4
+
+static GLboolean _glewInit_GL_EXT_gpu_shader4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocationEXT")) == NULL) || r;
+ r = ((glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataLocationEXT")) == NULL) || r;
+ r = ((glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformuivEXT")) == NULL) || r;
+ r = ((glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIivEXT")) == NULL) || r;
+ r = ((glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIuivEXT")) == NULL) || r;
+ r = ((glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform1uiEXT")) == NULL) || r;
+ r = ((glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform1uivEXT")) == NULL) || r;
+ r = ((glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform2uiEXT")) == NULL) || r;
+ r = ((glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform2uivEXT")) == NULL) || r;
+ r = ((glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform3uiEXT")) == NULL) || r;
+ r = ((glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform3uivEXT")) == NULL) || r;
+ r = ((glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform4uiEXT")) == NULL) || r;
+ r = ((glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform4uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1iEXT")) == NULL) || r;
+ r = ((glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1ivEXT")) == NULL) || r;
+ r = ((glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uiEXT")) == NULL) || r;
+ r = ((glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2iEXT")) == NULL) || r;
+ r = ((glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2ivEXT")) == NULL) || r;
+ r = ((glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uiEXT")) == NULL) || r;
+ r = ((glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3iEXT")) == NULL) || r;
+ r = ((glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3ivEXT")) == NULL) || r;
+ r = ((glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uiEXT")) == NULL) || r;
+ r = ((glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4bvEXT")) == NULL) || r;
+ r = ((glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4iEXT")) == NULL) || r;
+ r = ((glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ivEXT")) == NULL) || r;
+ r = ((glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4svEXT")) == NULL) || r;
+ r = ((glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ubvEXT")) == NULL) || r;
+ r = ((glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uiEXT")) == NULL) || r;
+ r = ((glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uivEXT")) == NULL) || r;
+ r = ((glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4usvEXT")) == NULL) || r;
+ r = ((glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_gpu_shader4 */
+
+#ifdef GL_EXT_histogram
+
+static GLboolean _glewInit_GL_EXT_histogram ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramEXT")) == NULL) || r;
+ r = ((glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterfvEXT")) == NULL) || r;
+ r = ((glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterivEXT")) == NULL) || r;
+ r = ((glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxEXT")) == NULL) || r;
+ r = ((glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterfvEXT")) == NULL) || r;
+ r = ((glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterivEXT")) == NULL) || r;
+ r = ((glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glHistogramEXT")) == NULL) || r;
+ r = ((glMinmaxEXT = (PFNGLMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glMinmaxEXT")) == NULL) || r;
+ r = ((glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glResetHistogramEXT")) == NULL) || r;
+ r = ((glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glResetMinmaxEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_histogram */
+
+#ifdef GL_EXT_index_func
+
+static GLboolean _glewInit_GL_EXT_index_func ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)glewGetProcAddress((const GLubyte*)"glIndexFuncEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_index_func */
+
+#ifdef GL_EXT_index_material
+
+static GLboolean _glewInit_GL_EXT_index_material ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glIndexMaterialEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_index_material */
+
+#ifdef GL_EXT_instanced_arrays
+
+static GLboolean _glewInit_GL_EXT_instanced_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexAttribDivisorEXT = (PFNGLVERTEXATTRIBDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_instanced_arrays */
+
+#ifdef GL_EXT_light_texture
+
+static GLboolean _glewInit_GL_EXT_light_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glApplyTextureEXT")) == NULL) || r;
+ r = ((glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureLightEXT")) == NULL) || r;
+ r = ((glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureMaterialEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_light_texture */
+
+#ifdef GL_EXT_map_buffer_range
+
+static GLboolean _glewInit_GL_EXT_map_buffer_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushMappedBufferRangeEXT = (PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedBufferRangeEXT")) == NULL) || r;
+ r = ((glMapBufferRangeEXT = (PFNGLMAPBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glMapBufferRangeEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_map_buffer_range */
+
+#ifdef GL_EXT_memory_object
+
+static GLboolean _glewInit_GL_EXT_memory_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferStorageMemEXT = (PFNGLBUFFERSTORAGEMEMEXTPROC)glewGetProcAddress((const GLubyte*)"glBufferStorageMemEXT")) == NULL) || r;
+ r = ((glCreateMemoryObjectsEXT = (PFNGLCREATEMEMORYOBJECTSEXTPROC)glewGetProcAddress((const GLubyte*)"glCreateMemoryObjectsEXT")) == NULL) || r;
+ r = ((glDeleteMemoryObjectsEXT = (PFNGLDELETEMEMORYOBJECTSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteMemoryObjectsEXT")) == NULL) || r;
+ r = ((glGetMemoryObjectParameterivEXT = (PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMemoryObjectParameterivEXT")) == NULL) || r;
+ r = ((glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUnsignedBytei_vEXT")) == NULL) || r;
+ r = ((glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUnsignedBytevEXT")) == NULL) || r;
+ r = ((glIsMemoryObjectEXT = (PFNGLISMEMORYOBJECTEXTPROC)glewGetProcAddress((const GLubyte*)"glIsMemoryObjectEXT")) == NULL) || r;
+ r = ((glMemoryObjectParameterivEXT = (PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMemoryObjectParameterivEXT")) == NULL) || r;
+ r = ((glNamedBufferStorageMemEXT = (PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferStorageMemEXT")) == NULL) || r;
+ r = ((glTexStorageMem1DEXT = (PFNGLTEXSTORAGEMEM1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem1DEXT")) == NULL) || r;
+ r = ((glTexStorageMem2DEXT = (PFNGLTEXSTORAGEMEM2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem2DEXT")) == NULL) || r;
+ r = ((glTexStorageMem2DMultisampleEXT = (PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem2DMultisampleEXT")) == NULL) || r;
+ r = ((glTexStorageMem3DEXT = (PFNGLTEXSTORAGEMEM3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem3DEXT")) == NULL) || r;
+ r = ((glTexStorageMem3DMultisampleEXT = (PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageMem3DMultisampleEXT")) == NULL) || r;
+ r = ((glTextureStorageMem1DEXT = (PFNGLTEXTURESTORAGEMEM1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem1DEXT")) == NULL) || r;
+ r = ((glTextureStorageMem2DEXT = (PFNGLTEXTURESTORAGEMEM2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem2DEXT")) == NULL) || r;
+ r = ((glTextureStorageMem2DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem2DMultisampleEXT")) == NULL) || r;
+ r = ((glTextureStorageMem3DEXT = (PFNGLTEXTURESTORAGEMEM3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem3DEXT")) == NULL) || r;
+ r = ((glTextureStorageMem3DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorageMem3DMultisampleEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_memory_object */
+
+#ifdef GL_EXT_memory_object_fd
+
+static GLboolean _glewInit_GL_EXT_memory_object_fd ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportMemoryFdEXT = (PFNGLIMPORTMEMORYFDEXTPROC)glewGetProcAddress((const GLubyte*)"glImportMemoryFdEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_memory_object_fd */
+
+#ifdef GL_EXT_memory_object_win32
+
+static GLboolean _glewInit_GL_EXT_memory_object_win32 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportMemoryWin32HandleEXT = (PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)glewGetProcAddress((const GLubyte*)"glImportMemoryWin32HandleEXT")) == NULL) || r;
+ r = ((glImportMemoryWin32NameEXT = (PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)glewGetProcAddress((const GLubyte*)"glImportMemoryWin32NameEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_memory_object_win32 */
+
+#ifdef GL_EXT_multi_draw_arrays
+
+static GLboolean _glewInit_GL_EXT_multi_draw_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysEXT")) == NULL) || r;
+ r = ((glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multi_draw_arrays */
+
+#ifdef GL_EXT_multi_draw_indirect
+
+static GLboolean _glewInit_GL_EXT_multi_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectEXT = (PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectEXT")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectEXT = (PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multi_draw_indirect */
+
+#ifdef GL_EXT_multisample
+
+static GLboolean _glewInit_GL_EXT_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskEXT")) == NULL) || r;
+ r = ((glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)glewGetProcAddress((const GLubyte*)"glSamplePatternEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multisample */
+
+#ifdef GL_EXT_multisampled_render_to_texture
+
+static GLboolean _glewInit_GL_EXT_multisampled_render_to_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTexture2DMultisampleEXT = (PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DMultisampleEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multisampled_render_to_texture */
+
+#ifdef GL_EXT_multiview_draw_buffers
+
+static GLboolean _glewInit_GL_EXT_multiview_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersIndexedEXT = (PFNGLDRAWBUFFERSINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersIndexedEXT")) == NULL) || r;
+ r = ((glGetIntegeri_vEXT = (PFNGLGETINTEGERI_VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetIntegeri_vEXT")) == NULL) || r;
+ r = ((glReadBufferIndexedEXT = (PFNGLREADBUFFERINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glReadBufferIndexedEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_multiview_draw_buffers */
+
+#ifdef GL_EXT_paletted_texture
+
+static GLboolean _glewInit_GL_EXT_paletted_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glColorTableEXT")) == NULL) || r;
+ r = ((glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableEXT")) == NULL) || r;
+ r = ((glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfvEXT")) == NULL) || r;
+ r = ((glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_paletted_texture */
+
+#ifdef GL_EXT_pixel_transform
+
+static GLboolean _glewInit_GL_EXT_pixel_transform ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterfvEXT")) == NULL) || r;
+ r = ((glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterivEXT")) == NULL) || r;
+ r = ((glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfEXT")) == NULL) || r;
+ r = ((glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfvEXT")) == NULL) || r;
+ r = ((glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameteriEXT")) == NULL) || r;
+ r = ((glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_pixel_transform */
+
+#ifdef GL_EXT_point_parameters
+
+static GLboolean _glewInit_GL_EXT_point_parameters ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfEXT")) == NULL) || r;
+ r = ((glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_point_parameters */
+
+#ifdef GL_EXT_polygon_offset
+
+static GLboolean _glewInit_GL_EXT_polygon_offset ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_polygon_offset */
+
+#ifdef GL_EXT_polygon_offset_clamp
+
+static GLboolean _glewInit_GL_EXT_polygon_offset_clamp ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetClampEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_polygon_offset_clamp */
+
+#ifdef GL_EXT_primitive_bounding_box
+
+static GLboolean _glewInit_GL_EXT_primitive_bounding_box ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPrimitiveBoundingBoxEXT = (PFNGLPRIMITIVEBOUNDINGBOXEXTPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveBoundingBoxEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_primitive_bounding_box */
+
+#ifdef GL_EXT_provoking_vertex
+
+static GLboolean _glewInit_GL_EXT_provoking_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)"glProvokingVertexEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_provoking_vertex */
+
+#ifdef GL_EXT_raster_multisample
+
+static GLboolean _glewInit_GL_EXT_raster_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)glewGetProcAddress((const GLubyte*)"glCoverageModulationNV")) == NULL) || r;
+ r = ((glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)glewGetProcAddress((const GLubyte*)"glCoverageModulationTableNV")) == NULL) || r;
+ r = ((glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)glewGetProcAddress((const GLubyte*)"glGetCoverageModulationTableNV")) == NULL) || r;
+ r = ((glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)glewGetProcAddress((const GLubyte*)"glRasterSamplesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_raster_multisample */
+
+#ifdef GL_EXT_robustness
+
+static GLboolean _glewInit_GL_EXT_robustness ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetGraphicsResetStatusEXT = (PFNGLGETGRAPHICSRESETSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)"glGetGraphicsResetStatusEXT")) == NULL) || r;
+ r = ((glGetnUniformfvEXT = (PFNGLGETNUNIFORMFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformfvEXT")) == NULL) || r;
+ r = ((glGetnUniformivEXT = (PFNGLGETNUNIFORMIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformivEXT")) == NULL) || r;
+ r = ((glReadnPixelsEXT = (PFNGLREADNPIXELSEXTPROC)glewGetProcAddress((const GLubyte*)"glReadnPixelsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_robustness */
+
+#ifdef GL_EXT_scene_marker
+
+static GLboolean _glewInit_GL_EXT_scene_marker ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginSceneEXT = (PFNGLBEGINSCENEEXTPROC)glewGetProcAddress((const GLubyte*)"glBeginSceneEXT")) == NULL) || r;
+ r = ((glEndSceneEXT = (PFNGLENDSCENEEXTPROC)glewGetProcAddress((const GLubyte*)"glEndSceneEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_scene_marker */
+
+#ifdef GL_EXT_secondary_color
+
+static GLboolean _glewInit_GL_EXT_secondary_color ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bEXT")) == NULL) || r;
+ r = ((glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bvEXT")) == NULL) || r;
+ r = ((glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dEXT")) == NULL) || r;
+ r = ((glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dvEXT")) == NULL) || r;
+ r = ((glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fEXT")) == NULL) || r;
+ r = ((glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fvEXT")) == NULL) || r;
+ r = ((glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3iEXT")) == NULL) || r;
+ r = ((glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ivEXT")) == NULL) || r;
+ r = ((glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3sEXT")) == NULL) || r;
+ r = ((glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3svEXT")) == NULL) || r;
+ r = ((glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubEXT")) == NULL) || r;
+ r = ((glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubvEXT")) == NULL) || r;
+ r = ((glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uiEXT")) == NULL) || r;
+ r = ((glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uivEXT")) == NULL) || r;
+ r = ((glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usEXT")) == NULL) || r;
+ r = ((glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usvEXT")) == NULL) || r;
+ r = ((glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_secondary_color */
+
+#ifdef GL_EXT_semaphore
+
+static GLboolean _glewInit_GL_EXT_semaphore ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeleteSemaphoresEXT = (PFNGLDELETESEMAPHORESEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteSemaphoresEXT")) == NULL) || r;
+ r = ((glGenSemaphoresEXT = (PFNGLGENSEMAPHORESEXTPROC)glewGetProcAddress((const GLubyte*)"glGenSemaphoresEXT")) == NULL) || r;
+ r = ((glGetSemaphoreParameterui64vEXT = (PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetSemaphoreParameterui64vEXT")) == NULL) || r;
+ r = ((glIsSemaphoreEXT = (PFNGLISSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)"glIsSemaphoreEXT")) == NULL) || r;
+ r = ((glSemaphoreParameterui64vEXT = (PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glSemaphoreParameterui64vEXT")) == NULL) || r;
+ r = ((glSignalSemaphoreEXT = (PFNGLSIGNALSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)"glSignalSemaphoreEXT")) == NULL) || r;
+ r = ((glWaitSemaphoreEXT = (PFNGLWAITSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)"glWaitSemaphoreEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_semaphore */
+
+#ifdef GL_EXT_semaphore_fd
+
+static GLboolean _glewInit_GL_EXT_semaphore_fd ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportSemaphoreFdEXT = (PFNGLIMPORTSEMAPHOREFDEXTPROC)glewGetProcAddress((const GLubyte*)"glImportSemaphoreFdEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_semaphore_fd */
+
+#ifdef GL_EXT_semaphore_win32
+
+static GLboolean _glewInit_GL_EXT_semaphore_win32 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportSemaphoreWin32HandleEXT = (PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)glewGetProcAddress((const GLubyte*)"glImportSemaphoreWin32HandleEXT")) == NULL) || r;
+ r = ((glImportSemaphoreWin32NameEXT = (PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)glewGetProcAddress((const GLubyte*)"glImportSemaphoreWin32NameEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_semaphore_win32 */
+
+#ifdef GL_EXT_separate_shader_objects
+
+static GLboolean _glewInit_GL_EXT_separate_shader_objects ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glActiveProgramEXT")) == NULL) || r;
+ r = ((glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glCreateShaderProgramEXT")) == NULL) || r;
+ r = ((glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glUseShaderProgramEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_separate_shader_objects */
+
+#ifdef GL_EXT_shader_framebuffer_fetch
+
+static GLboolean _glewInit_GL_EXT_shader_framebuffer_fetch ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferFetchBarrierEXT = (PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferFetchBarrierEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_shader_framebuffer_fetch */
+
+#ifdef GL_EXT_shader_image_load_store
+
+static GLboolean _glewInit_GL_EXT_shader_image_load_store ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindImageTextureEXT")) == NULL) || r;
+ r = ((glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)glewGetProcAddress((const GLubyte*)"glMemoryBarrierEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_shader_image_load_store */
+
+#ifdef GL_EXT_shader_pixel_local_storage2
+
+static GLboolean _glewInit_GL_EXT_shader_pixel_local_storage2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearPixelLocalStorageuiEXT = (PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC)glewGetProcAddress((const GLubyte*)"glClearPixelLocalStorageuiEXT")) == NULL) || r;
+ r = ((glFramebufferPixelLocalStorageSizeEXT = (PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferPixelLocalStorageSizeEXT")) == NULL) || r;
+ r = ((glGetFramebufferPixelLocalStorageSizeEXT = (PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferPixelLocalStorageSizeEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+
+#ifdef GL_EXT_sparse_texture
+
+static GLboolean _glewInit_GL_EXT_sparse_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexPageCommitmentEXT = (PFNGLTEXPAGECOMMITMENTEXTPROC)glewGetProcAddress((const GLubyte*)"glTexPageCommitmentEXT")) == NULL) || r;
+ r = ((glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)glewGetProcAddress((const GLubyte*)"glTexturePageCommitmentEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_sparse_texture */
+
+#ifdef GL_EXT_stencil_two_side
+
+static GLboolean _glewInit_GL_EXT_stencil_two_side ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glActiveStencilFaceEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_stencil_two_side */
+
+#ifdef GL_EXT_subtexture
+
+static GLboolean _glewInit_GL_EXT_subtexture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage1DEXT")) == NULL) || r;
+ r = ((glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage2DEXT")) == NULL) || r;
+ r = ((glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_subtexture */
+
+#ifdef GL_EXT_tessellation_point_size
+
+static GLboolean _glewInit_GL_EXT_tessellation_point_size ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPatchParameteriEXT = (PFNGLPATCHPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glPatchParameteriEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_tessellation_point_size */
+
+#ifdef GL_EXT_texture3D
+
+static GLboolean _glewInit_GL_EXT_texture3D ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture3D */
+
+#ifdef GL_EXT_texture_array
+
+static GLboolean _glewInit_GL_EXT_texture_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_array */
+
+#ifdef GL_EXT_texture_border_clamp
+
+static GLboolean _glewInit_GL_EXT_texture_border_clamp ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetSamplerParameterIivEXT = (PFNGLGETSAMPLERPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIivEXT")) == NULL) || r;
+ r = ((glGetSamplerParameterIuivEXT = (PFNGLGETSAMPLERPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIuivEXT")) == NULL) || r;
+ r = ((glSamplerParameterIivEXT = (PFNGLSAMPLERPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIivEXT")) == NULL) || r;
+ r = ((glSamplerParameterIuivEXT = (PFNGLSAMPLERPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIuivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_border_clamp */
+
+#ifdef GL_EXT_texture_buffer_object
+
+static GLboolean _glewInit_GL_EXT_texture_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTexBufferEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_buffer_object */
+
+#ifdef GL_EXT_texture_integer
+
+static GLboolean _glewInit_GL_EXT_texture_integer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)glewGetProcAddress((const GLubyte*)"glClearColorIiEXT")) == NULL) || r;
+ r = ((glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)glewGetProcAddress((const GLubyte*)"glClearColorIuiEXT")) == NULL) || r;
+ r = ((glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIivEXT")) == NULL) || r;
+ r = ((glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIuivEXT")) == NULL) || r;
+ r = ((glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIivEXT")) == NULL) || r;
+ r = ((glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIuivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_integer */
+
+#ifdef GL_EXT_texture_object
+
+static GLboolean _glewInit_GL_EXT_texture_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)glewGetProcAddress((const GLubyte*)"glAreTexturesResidentEXT")) == NULL) || r;
+ r = ((glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindTextureEXT")) == NULL) || r;
+ r = ((glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteTexturesEXT")) == NULL) || r;
+ r = ((glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glGenTexturesEXT")) == NULL) || r;
+ r = ((glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glIsTextureEXT")) == NULL) || r;
+ r = ((glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glPrioritizeTexturesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_object */
+
+#ifdef GL_EXT_texture_perturb_normal
+
+static GLboolean _glewInit_GL_EXT_texture_perturb_normal ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureNormalEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_perturb_normal */
+
+#ifdef GL_EXT_texture_storage
+
+static GLboolean _glewInit_GL_EXT_texture_storage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorage1DEXT = (PFNGLTEXSTORAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorage1DEXT")) == NULL) || r;
+ r = ((glTexStorage2DEXT = (PFNGLTEXSTORAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorage2DEXT")) == NULL) || r;
+ r = ((glTexStorage3DEXT = (PFNGLTEXSTORAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorage3DEXT")) == NULL) || r;
+ r = ((glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage1DEXT")) == NULL) || r;
+ r = ((glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage2DEXT")) == NULL) || r;
+ r = ((glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureStorage3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_storage */
+
+#ifdef GL_EXT_texture_storage_compression
+
+static GLboolean _glewInit_GL_EXT_texture_storage_compression ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorageAttribs2DEXT = (PFNGLTEXSTORAGEATTRIBS2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageAttribs2DEXT")) == NULL) || r;
+ r = ((glTexStorageAttribs3DEXT = (PFNGLTEXSTORAGEATTRIBS3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexStorageAttribs3DEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_storage_compression */
+
+#ifdef GL_EXT_texture_view
+
+static GLboolean _glewInit_GL_EXT_texture_view ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureViewEXT = (PFNGLTEXTUREVIEWEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureViewEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_texture_view */
+
+#ifdef GL_EXT_timer_query
+
+static GLboolean _glewInit_GL_EXT_timer_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjecti64vEXT")) == NULL) || r;
+ r = ((glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectui64vEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_timer_query */
+
+#ifdef GL_EXT_transform_feedback
+
+static GLboolean _glewInit_GL_EXT_transform_feedback ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedbackEXT")) == NULL) || r;
+ r = ((glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBaseEXT")) == NULL) || r;
+ r = ((glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferOffsetEXT")) == NULL) || r;
+ r = ((glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRangeEXT")) == NULL) || r;
+ r = ((glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedbackEXT")) == NULL) || r;
+ r = ((glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVaryingEXT")) == NULL) || r;
+ r = ((glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryingsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_transform_feedback */
+
+#ifdef GL_EXT_vertex_array
+
+static GLboolean _glewInit_GL_EXT_vertex_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)glewGetProcAddress((const GLubyte*)"glArrayElementEXT")) == NULL) || r;
+ r = ((glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glColorPointerEXT")) == NULL) || r;
+ r = ((glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysEXT")) == NULL) || r;
+ r = ((glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glEdgeFlagPointerEXT")) == NULL) || r;
+ r = ((glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glIndexPointerEXT")) == NULL) || r;
+ r = ((glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glNormalPointerEXT")) == NULL) || r;
+ r = ((glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointerEXT")) == NULL) || r;
+ r = ((glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_array */
+
+#ifdef GL_EXT_vertex_array_setXXX
+
+static GLboolean _glewInit_GL_EXT_vertex_array_setXXX ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindArraySetEXT = (PFNGLBINDARRAYSETEXTPROC)glewGetProcAddress((const GLubyte*)"glBindArraySetEXT")) == NULL) || r;
+ r = ((glCreateArraySetExt = (PFNGLCREATEARRAYSETEXTPROC)glewGetProcAddress((const GLubyte*)"glCreateArraySetExt")) == NULL) || r;
+ r = ((glDeleteArraySetsEXT = (PFNGLDELETEARRAYSETSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteArraySetsEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_array_setXXX */
+
+#ifdef GL_EXT_vertex_attrib_64bit
+
+static GLboolean _glewInit_GL_EXT_vertex_attrib_64bit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLdvEXT")) == NULL) || r;
+ r = ((glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribLOffsetEXT")) == NULL) || r;
+ r = ((glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1dEXT")) == NULL) || r;
+ r = ((glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1dvEXT")) == NULL) || r;
+ r = ((glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2dEXT")) == NULL) || r;
+ r = ((glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2dvEXT")) == NULL) || r;
+ r = ((glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3dEXT")) == NULL) || r;
+ r = ((glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3dvEXT")) == NULL) || r;
+ r = ((glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4dEXT")) == NULL) || r;
+ r = ((glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4dvEXT")) == NULL) || r;
+ r = ((glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLPointerEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
+#ifdef GL_EXT_vertex_shader
+
+static GLboolean _glewInit_GL_EXT_vertex_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glBeginVertexShaderEXT")) == NULL) || r;
+ r = ((glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindLightParameterEXT")) == NULL) || r;
+ r = ((glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindMaterialParameterEXT")) == NULL) || r;
+ r = ((glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindParameterEXT")) == NULL) || r;
+ r = ((glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindTexGenParameterEXT")) == NULL) || r;
+ r = ((glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindTextureUnitParameterEXT")) == NULL) || r;
+ r = ((glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindVertexShaderEXT")) == NULL) || r;
+ r = ((glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexShaderEXT")) == NULL) || r;
+ r = ((glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableVariantClientStateEXT")) == NULL) || r;
+ r = ((glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableVariantClientStateEXT")) == NULL) || r;
+ r = ((glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glEndVertexShaderEXT")) == NULL) || r;
+ r = ((glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)glewGetProcAddress((const GLubyte*)"glExtractComponentEXT")) == NULL) || r;
+ r = ((glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenSymbolsEXT")) == NULL) || r;
+ r = ((glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenVertexShadersEXT")) == NULL) || r;
+ r = ((glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantBooleanvEXT")) == NULL) || r;
+ r = ((glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantFloatvEXT")) == NULL) || r;
+ r = ((glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantIntegervEXT")) == NULL) || r;
+ r = ((glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantBooleanvEXT")) == NULL) || r;
+ r = ((glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantFloatvEXT")) == NULL) || r;
+ r = ((glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantIntegervEXT")) == NULL) || r;
+ r = ((glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantBooleanvEXT")) == NULL) || r;
+ r = ((glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantFloatvEXT")) == NULL) || r;
+ r = ((glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantIntegervEXT")) == NULL) || r;
+ r = ((glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantPointervEXT")) == NULL) || r;
+ r = ((glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)glewGetProcAddress((const GLubyte*)"glInsertComponentEXT")) == NULL) || r;
+ r = ((glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)glewGetProcAddress((const GLubyte*)"glIsVariantEnabledEXT")) == NULL) || r;
+ r = ((glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)glewGetProcAddress((const GLubyte*)"glSetInvariantEXT")) == NULL) || r;
+ r = ((glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)glewGetProcAddress((const GLubyte*)"glSetLocalConstantEXT")) == NULL) || r;
+ r = ((glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp1EXT")) == NULL) || r;
+ r = ((glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp2EXT")) == NULL) || r;
+ r = ((glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp3EXT")) == NULL) || r;
+ r = ((glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)glewGetProcAddress((const GLubyte*)"glSwizzleEXT")) == NULL) || r;
+ r = ((glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVariantPointerEXT")) == NULL) || r;
+ r = ((glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantbvEXT")) == NULL) || r;
+ r = ((glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantdvEXT")) == NULL) || r;
+ r = ((glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantfvEXT")) == NULL) || r;
+ r = ((glVariantivEXT = (PFNGLVARIANTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantivEXT")) == NULL) || r;
+ r = ((glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantsvEXT")) == NULL) || r;
+ r = ((glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantubvEXT")) == NULL) || r;
+ r = ((glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantuivEXT")) == NULL) || r;
+ r = ((glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantusvEXT")) == NULL) || r;
+ r = ((glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)glewGetProcAddress((const GLubyte*)"glWriteMaskEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_shader */
+
+#ifdef GL_EXT_vertex_weighting
+
+static GLboolean _glewInit_GL_EXT_vertex_weighting ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightPointerEXT")) == NULL) || r;
+ r = ((glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightfEXT")) == NULL) || r;
+ r = ((glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightfvEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_vertex_weighting */
+
+#ifdef GL_EXT_win32_keyed_mutex
+
+static GLboolean _glewInit_GL_EXT_win32_keyed_mutex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAcquireKeyedMutexWin32EXT = (PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)glewGetProcAddress((const GLubyte*)"glAcquireKeyedMutexWin32EXT")) == NULL) || r;
+ r = ((glReleaseKeyedMutexWin32EXT = (PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)glewGetProcAddress((const GLubyte*)"glReleaseKeyedMutexWin32EXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_win32_keyed_mutex */
+
+#ifdef GL_EXT_window_rectangles
+
+static GLboolean _glewInit_GL_EXT_window_rectangles ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glWindowRectanglesEXT = (PFNGLWINDOWRECTANGLESEXTPROC)glewGetProcAddress((const GLubyte*)"glWindowRectanglesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_window_rectangles */
+
+#ifdef GL_EXT_x11_sync_object
+
+static GLboolean _glewInit_GL_EXT_x11_sync_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)glewGetProcAddress((const GLubyte*)"glImportSyncEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_EXT_x11_sync_object */
+
+#ifdef GL_GREMEDY_frame_terminator
+
+static GLboolean _glewInit_GL_GREMEDY_frame_terminator ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)glewGetProcAddress((const GLubyte*)"glFrameTerminatorGREMEDY")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_GREMEDY_frame_terminator */
+
+#ifdef GL_GREMEDY_string_marker
+
+static GLboolean _glewInit_GL_GREMEDY_string_marker ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)glewGetProcAddress((const GLubyte*)"glStringMarkerGREMEDY")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_GREMEDY_string_marker */
+
+#ifdef GL_HP_image_transform
+
+static GLboolean _glewInit_GL_HP_image_transform ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)glewGetProcAddress((const GLubyte*)"glGetImageTransformParameterfvHP")) == NULL) || r;
+ r = ((glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)glewGetProcAddress((const GLubyte*)"glGetImageTransformParameterivHP")) == NULL) || r;
+ r = ((glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterfHP")) == NULL) || r;
+ r = ((glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterfvHP")) == NULL) || r;
+ r = ((glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameteriHP")) == NULL) || r;
+ r = ((glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterivHP")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_HP_image_transform */
+
+#ifdef GL_IBM_multimode_draw_arrays
+
+static GLboolean _glewInit_GL_IBM_multimode_draw_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)glewGetProcAddress((const GLubyte*)"glMultiModeDrawArraysIBM")) == NULL) || r;
+ r = ((glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)glewGetProcAddress((const GLubyte*)"glMultiModeDrawElementsIBM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IBM_multimode_draw_arrays */
+
+#ifdef GL_IBM_vertex_array_lists
+
+static GLboolean _glewInit_GL_IBM_vertex_array_lists ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glColorPointerListIBM")) == NULL) || r;
+ r = ((glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glEdgeFlagPointerListIBM")) == NULL) || r;
+ r = ((glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointerListIBM")) == NULL) || r;
+ r = ((glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glIndexPointerListIBM")) == NULL) || r;
+ r = ((glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glNormalPointerListIBM")) == NULL) || r;
+ r = ((glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointerListIBM")) == NULL) || r;
+ r = ((glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointerListIBM")) == NULL) || r;
+ r = ((glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glVertexPointerListIBM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IBM_vertex_array_lists */
+
+#ifdef GL_IMG_bindless_texture
+
+static GLboolean _glewInit_GL_IMG_bindless_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTextureHandleIMG = (PFNGLGETTEXTUREHANDLEIMGPROC)glewGetProcAddress((const GLubyte*)"glGetTextureHandleIMG")) == NULL) || r;
+ r = ((glGetTextureSamplerHandleIMG = (PFNGLGETTEXTURESAMPLERHANDLEIMGPROC)glewGetProcAddress((const GLubyte*)"glGetTextureSamplerHandleIMG")) == NULL) || r;
+ r = ((glProgramUniformHandleui64IMG = (PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64IMG")) == NULL) || r;
+ r = ((glProgramUniformHandleui64vIMG = (PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64vIMG")) == NULL) || r;
+ r = ((glUniformHandleui64IMG = (PFNGLUNIFORMHANDLEUI64IMGPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64IMG")) == NULL) || r;
+ r = ((glUniformHandleui64vIMG = (PFNGLUNIFORMHANDLEUI64VIMGPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64vIMG")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IMG_bindless_texture */
+
+#ifdef GL_IMG_framebuffer_downsample
+
+static GLboolean _glewInit_GL_IMG_framebuffer_downsample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTexture2DDownsampleIMG = (PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DDownsampleIMG")) == NULL) || r;
+ r = ((glFramebufferTextureLayerDownsampleIMG = (PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerDownsampleIMG")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IMG_framebuffer_downsample */
+
+#ifdef GL_IMG_multisampled_render_to_texture
+
+static GLboolean _glewInit_GL_IMG_multisampled_render_to_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTexture2DMultisampleIMG = (PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DMultisampleIMG")) == NULL) || r;
+ r = ((glRenderbufferStorageMultisampleIMG = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleIMG")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_IMG_multisampled_render_to_texture */
+
+#ifdef GL_INTEL_framebuffer_CMAA
+
+static GLboolean _glewInit_GL_INTEL_framebuffer_CMAA ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glApplyFramebufferAttachmentCMAAINTEL = (PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)glewGetProcAddress((const GLubyte*)"glApplyFramebufferAttachmentCMAAINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_framebuffer_CMAA */
+
+#ifdef GL_INTEL_map_texture
+
+static GLboolean _glewInit_GL_INTEL_map_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)glewGetProcAddress((const GLubyte*)"glMapTexture2DINTEL")) == NULL) || r;
+ r = ((glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)glewGetProcAddress((const GLubyte*)"glSyncTextureINTEL")) == NULL) || r;
+ r = ((glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)glewGetProcAddress((const GLubyte*)"glUnmapTexture2DINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_map_texture */
+
+#ifdef GL_INTEL_parallel_arrays
+
+static GLboolean _glewInit_GL_INTEL_parallel_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glColorPointervINTEL")) == NULL) || r;
+ r = ((glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glNormalPointervINTEL")) == NULL) || r;
+ r = ((glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointervINTEL")) == NULL) || r;
+ r = ((glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glVertexPointervINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_parallel_arrays */
+
+#ifdef GL_INTEL_performance_query
+
+static GLboolean _glewInit_GL_INTEL_performance_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glBeginPerfQueryINTEL")) == NULL) || r;
+ r = ((glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glCreatePerfQueryINTEL")) == NULL) || r;
+ r = ((glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glDeletePerfQueryINTEL")) == NULL) || r;
+ r = ((glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glEndPerfQueryINTEL")) == NULL) || r;
+ r = ((glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)glewGetProcAddress((const GLubyte*)"glGetFirstPerfQueryIdINTEL")) == NULL) || r;
+ r = ((glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)glewGetProcAddress((const GLubyte*)"glGetNextPerfQueryIdINTEL")) == NULL) || r;
+ r = ((glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfCounterInfoINTEL")) == NULL) || r;
+ r = ((glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryDataINTEL")) == NULL) || r;
+ r = ((glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryIdByNameINTEL")) == NULL) || r;
+ r = ((glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryInfoINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_performance_query */
+
+#ifdef GL_INTEL_texture_scissor
+
+static GLboolean _glewInit_GL_INTEL_texture_scissor ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexScissorFuncINTEL = (PFNGLTEXSCISSORFUNCINTELPROC)glewGetProcAddress((const GLubyte*)"glTexScissorFuncINTEL")) == NULL) || r;
+ r = ((glTexScissorINTEL = (PFNGLTEXSCISSORINTELPROC)glewGetProcAddress((const GLubyte*)"glTexScissorINTEL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_INTEL_texture_scissor */
+
+#ifdef GL_KHR_blend_equation_advanced
+
+static GLboolean _glewInit_GL_KHR_blend_equation_advanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)glewGetProcAddress((const GLubyte*)"glBlendBarrierKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KHR_blend_equation_advanced */
+
+#ifdef GL_KHR_debug
+
+static GLboolean _glewInit_GL_KHR_debug ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageCallback")) == NULL) || r;
+ r = ((glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageControl")) == NULL) || r;
+ r = ((glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)glewGetProcAddress((const GLubyte*)"glDebugMessageInsert")) == NULL) || r;
+ r = ((glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)glewGetProcAddress((const GLubyte*)"glGetDebugMessageLog")) == NULL) || r;
+ r = ((glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)glewGetProcAddress((const GLubyte*)"glGetObjectLabel")) == NULL) || r;
+ r = ((glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)glewGetProcAddress((const GLubyte*)"glGetObjectPtrLabel")) == NULL) || r;
+ r = ((glObjectLabel = (PFNGLOBJECTLABELPROC)glewGetProcAddress((const GLubyte*)"glObjectLabel")) == NULL) || r;
+ r = ((glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)glewGetProcAddress((const GLubyte*)"glObjectPtrLabel")) == NULL) || r;
+ r = ((glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)glewGetProcAddress((const GLubyte*)"glPopDebugGroup")) == NULL) || r;
+ r = ((glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)glewGetProcAddress((const GLubyte*)"glPushDebugGroup")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KHR_debug */
+
+#ifdef GL_KHR_parallel_shader_compile
+
+static GLboolean _glewInit_GL_KHR_parallel_shader_compile ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMaxShaderCompilerThreadsKHR = (PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)glewGetProcAddress((const GLubyte*)"glMaxShaderCompilerThreadsKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KHR_parallel_shader_compile */
+
+#ifdef GL_KHR_robustness
+
+static GLboolean _glewInit_GL_KHR_robustness ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformfv")) == NULL) || r;
+ r = ((glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformiv")) == NULL) || r;
+ r = ((glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)glewGetProcAddress((const GLubyte*)"glGetnUniformuiv")) == NULL) || r;
+ r = ((glReadnPixels = (PFNGLREADNPIXELSPROC)glewGetProcAddress((const GLubyte*)"glReadnPixels")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KHR_robustness */
+
+#ifdef GL_KTX_buffer_region
+
+static GLboolean _glewInit_GL_KTX_buffer_region ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferRegionEnabled = (PFNGLBUFFERREGIONENABLEDPROC)glewGetProcAddress((const GLubyte*)"glBufferRegionEnabled")) == NULL) || r;
+ r = ((glDeleteBufferRegion = (PFNGLDELETEBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)"glDeleteBufferRegion")) == NULL) || r;
+ r = ((glDrawBufferRegion = (PFNGLDRAWBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)"glDrawBufferRegion")) == NULL) || r;
+ r = ((glNewBufferRegion = (PFNGLNEWBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)"glNewBufferRegion")) == NULL) || r;
+ r = ((glReadBufferRegion = (PFNGLREADBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)"glReadBufferRegion")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_KTX_buffer_region */
+
+#ifdef GL_MESA_framebuffer_flip_y
+
+static GLboolean _glewInit_GL_MESA_framebuffer_flip_y ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferParameteriMESA = (PFNGLFRAMEBUFFERPARAMETERIMESAPROC)glewGetProcAddress((const GLubyte*)"glFramebufferParameteriMESA")) == NULL) || r;
+ r = ((glGetFramebufferParameterivMESA = (PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameterivMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_MESA_framebuffer_flip_y */
+
+#ifdef GL_MESA_resize_buffers
+
+static GLboolean _glewInit_GL_MESA_resize_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)glewGetProcAddress((const GLubyte*)"glResizeBuffersMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_MESA_resize_buffers */
+
+#ifdef GL_MESA_window_pos
+
+static GLboolean _glewInit_GL_MESA_window_pos ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dMESA")) == NULL) || r;
+ r = ((glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dvMESA")) == NULL) || r;
+ r = ((glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fMESA")) == NULL) || r;
+ r = ((glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fvMESA")) == NULL) || r;
+ r = ((glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iMESA")) == NULL) || r;
+ r = ((glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2ivMESA")) == NULL) || r;
+ r = ((glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sMESA")) == NULL) || r;
+ r = ((glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2svMESA")) == NULL) || r;
+ r = ((glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dMESA")) == NULL) || r;
+ r = ((glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dvMESA")) == NULL) || r;
+ r = ((glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fMESA")) == NULL) || r;
+ r = ((glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fvMESA")) == NULL) || r;
+ r = ((glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iMESA")) == NULL) || r;
+ r = ((glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3ivMESA")) == NULL) || r;
+ r = ((glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sMESA")) == NULL) || r;
+ r = ((glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3svMESA")) == NULL) || r;
+ r = ((glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4dMESA")) == NULL) || r;
+ r = ((glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4dvMESA")) == NULL) || r;
+ r = ((glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4fMESA")) == NULL) || r;
+ r = ((glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4fvMESA")) == NULL) || r;
+ r = ((glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4iMESA")) == NULL) || r;
+ r = ((glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4ivMESA")) == NULL) || r;
+ r = ((glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4sMESA")) == NULL) || r;
+ r = ((glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4svMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_MESA_window_pos */
+
+#ifdef GL_NVX_conditional_render
+
+static GLboolean _glewInit_GL_NVX_conditional_render ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)glewGetProcAddress((const GLubyte*)"glBeginConditionalRenderNVX")) == NULL) || r;
+ r = ((glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)glewGetProcAddress((const GLubyte*)"glEndConditionalRenderNVX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NVX_conditional_render */
+
+#ifdef GL_NVX_gpu_multicast2
+
+static GLboolean _glewInit_GL_NVX_gpu_multicast2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAsyncCopyBufferSubDataNVX = (PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)glewGetProcAddress((const GLubyte*)"glAsyncCopyBufferSubDataNVX")) == NULL) || r;
+ r = ((glAsyncCopyImageSubDataNVX = (PFNGLASYNCCOPYIMAGESUBDATANVXPROC)glewGetProcAddress((const GLubyte*)"glAsyncCopyImageSubDataNVX")) == NULL) || r;
+ r = ((glMulticastScissorArrayvNVX = (PFNGLMULTICASTSCISSORARRAYVNVXPROC)glewGetProcAddress((const GLubyte*)"glMulticastScissorArrayvNVX")) == NULL) || r;
+ r = ((glMulticastViewportArrayvNVX = (PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)glewGetProcAddress((const GLubyte*)"glMulticastViewportArrayvNVX")) == NULL) || r;
+ r = ((glMulticastViewportPositionWScaleNVX = (PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)glewGetProcAddress((const GLubyte*)"glMulticastViewportPositionWScaleNVX")) == NULL) || r;
+ r = ((glUploadGpuMaskNVX = (PFNGLUPLOADGPUMASKNVXPROC)glewGetProcAddress((const GLubyte*)"glUploadGpuMaskNVX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NVX_gpu_multicast2 */
+
+#ifdef GL_NVX_linked_gpu_multicast
+
+static GLboolean _glewInit_GL_NVX_linked_gpu_multicast ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glLGPUCopyImageSubDataNVX = (PFNGLLGPUCOPYIMAGESUBDATANVXPROC)glewGetProcAddress((const GLubyte*)"glLGPUCopyImageSubDataNVX")) == NULL) || r;
+ r = ((glLGPUInterlockNVX = (PFNGLLGPUINTERLOCKNVXPROC)glewGetProcAddress((const GLubyte*)"glLGPUInterlockNVX")) == NULL) || r;
+ r = ((glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)glewGetProcAddress((const GLubyte*)"glLGPUNamedBufferSubDataNVX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NVX_linked_gpu_multicast */
+
+#ifdef GL_NVX_progress_fence
+
+static GLboolean _glewInit_GL_NVX_progress_fence ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClientWaitSemaphoreui64NVX = (PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)glewGetProcAddress((const GLubyte*)"glClientWaitSemaphoreui64NVX")) == NULL) || r;
+ r = ((glCreateProgressFenceNVX = (PFNGLCREATEPROGRESSFENCENVXPROC)glewGetProcAddress((const GLubyte*)"glCreateProgressFenceNVX")) == NULL) || r;
+ r = ((glSignalSemaphoreui64NVX = (PFNGLSIGNALSEMAPHOREUI64NVXPROC)glewGetProcAddress((const GLubyte*)"glSignalSemaphoreui64NVX")) == NULL) || r;
+ r = ((glWaitSemaphoreui64NVX = (PFNGLWAITSEMAPHOREUI64NVXPROC)glewGetProcAddress((const GLubyte*)"glWaitSemaphoreui64NVX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NVX_progress_fence */
+
+#ifdef GL_NV_3dvision_settings
+
+static GLboolean _glewInit_GL_NV_3dvision_settings ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glStereoParameterfNV = (PFNGLSTEREOPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glStereoParameterfNV")) == NULL) || r;
+ r = ((glStereoParameteriNV = (PFNGLSTEREOPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glStereoParameteriNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_3dvision_settings */
+
+#ifdef GL_NV_alpha_to_coverage_dither_control
+
+static GLboolean _glewInit_GL_NV_alpha_to_coverage_dither_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAlphaToCoverageDitherControlNV = (PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)glewGetProcAddress((const GLubyte*)"glAlphaToCoverageDitherControlNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+
+#ifdef GL_NV_bindless_multi_draw_indirect
+
+static GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectBindlessNV")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectBindlessNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_bindless_multi_draw_indirect */
+
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+
+static GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect_count ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysIndirectBindlessCountNV")) == NULL) || r;
+ r = ((glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsIndirectBindlessCountNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+
+#ifdef GL_NV_bindless_texture
+
+static GLboolean _glewInit_GL_NV_bindless_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)glewGetProcAddress((const GLubyte*)"glGetImageHandleNV")) == NULL) || r;
+ r = ((glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureHandleNV")) == NULL) || r;
+ r = ((glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)glewGetProcAddress((const GLubyte*)"glGetTextureSamplerHandleNV")) == NULL) || r;
+ r = ((glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsImageHandleResidentNV")) == NULL) || r;
+ r = ((glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsTextureHandleResidentNV")) == NULL) || r;
+ r = ((glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeImageHandleNonResidentNV")) == NULL) || r;
+ r = ((glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeImageHandleResidentNV")) == NULL) || r;
+ r = ((glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeTextureHandleNonResidentNV")) == NULL) || r;
+ r = ((glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeTextureHandleResidentNV")) == NULL) || r;
+ r = ((glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64NV")) == NULL) || r;
+ r = ((glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformHandleui64vNV")) == NULL) || r;
+ r = ((glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64NV")) == NULL) || r;
+ r = ((glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniformHandleui64vNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_bindless_texture */
+
+#ifdef GL_NV_blend_equation_advanced
+
+static GLboolean _glewInit_GL_NV_blend_equation_advanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glBlendBarrierNV")) == NULL) || r;
+ r = ((glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glBlendParameteriNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_blend_equation_advanced */
+
+#ifdef GL_NV_clip_space_w_scaling
+
+static GLboolean _glewInit_GL_NV_clip_space_w_scaling ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glViewportPositionWScaleNV = (PFNGLVIEWPORTPOSITIONWSCALENVPROC)glewGetProcAddress((const GLubyte*)"glViewportPositionWScaleNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_clip_space_w_scaling */
+
+#ifdef GL_NV_command_list
+
+static GLboolean _glewInit_GL_NV_command_list ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)"glCallCommandListNV")) == NULL) || r;
+ r = ((glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)glewGetProcAddress((const GLubyte*)"glCommandListSegmentsNV")) == NULL) || r;
+ r = ((glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)"glCompileCommandListNV")) == NULL) || r;
+ r = ((glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)glewGetProcAddress((const GLubyte*)"glCreateCommandListsNV")) == NULL) || r;
+ r = ((glCreateStatesNV = (PFNGLCREATESTATESNVPROC)glewGetProcAddress((const GLubyte*)"glCreateStatesNV")) == NULL) || r;
+ r = ((glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteCommandListsNV")) == NULL) || r;
+ r = ((glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteStatesNV")) == NULL) || r;
+ r = ((glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawCommandsAddressNV")) == NULL) || r;
+ r = ((glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawCommandsNV")) == NULL) || r;
+ r = ((glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawCommandsStatesAddressNV")) == NULL) || r;
+ r = ((glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)glewGetProcAddress((const GLubyte*)"glDrawCommandsStatesNV")) == NULL) || r;
+ r = ((glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)glewGetProcAddress((const GLubyte*)"glGetCommandHeaderNV")) == NULL) || r;
+ r = ((glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)glewGetProcAddress((const GLubyte*)"glGetStageIndexNV")) == NULL) || r;
+ r = ((glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)"glIsCommandListNV")) == NULL) || r;
+ r = ((glIsStateNV = (PFNGLISSTATENVPROC)glewGetProcAddress((const GLubyte*)"glIsStateNV")) == NULL) || r;
+ r = ((glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)glewGetProcAddress((const GLubyte*)"glListDrawCommandsStatesClientNV")) == NULL) || r;
+ r = ((glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)glewGetProcAddress((const GLubyte*)"glStateCaptureNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_command_list */
+
+#ifdef GL_NV_conditional_render
+
+static GLboolean _glewInit_GL_NV_conditional_render ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)glewGetProcAddress((const GLubyte*)"glBeginConditionalRenderNV")) == NULL) || r;
+ r = ((glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)glewGetProcAddress((const GLubyte*)"glEndConditionalRenderNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_conditional_render */
+
+#ifdef GL_NV_conservative_raster
+
+static GLboolean _glewInit_GL_NV_conservative_raster ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)glewGetProcAddress((const GLubyte*)"glSubpixelPrecisionBiasNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_conservative_raster */
+
+#ifdef GL_NV_conservative_raster_dilate
+
+static GLboolean _glewInit_GL_NV_conservative_raster_dilate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glConservativeRasterParameterfNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_conservative_raster_dilate */
+
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+
+static GLboolean _glewInit_GL_NV_conservative_raster_pre_snap_triangles ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glConservativeRasterParameteriNV = (PFNGLCONSERVATIVERASTERPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glConservativeRasterParameteriNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+
+#ifdef GL_NV_copy_buffer
+
+static GLboolean _glewInit_GL_NV_copy_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyBufferSubDataNV = (PFNGLCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glCopyBufferSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_copy_buffer */
+
+#ifdef GL_NV_copy_image
+
+static GLboolean _glewInit_GL_NV_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glCopyImageSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_copy_image */
+
+#ifdef GL_NV_depth_buffer_float
+
+static GLboolean _glewInit_GL_NV_depth_buffer_float ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)glewGetProcAddress((const GLubyte*)"glClearDepthdNV")) == NULL) || r;
+ r = ((glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)glewGetProcAddress((const GLubyte*)"glDepthBoundsdNV")) == NULL) || r;
+ r = ((glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangedNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_depth_buffer_float */
+
+#ifdef GL_NV_draw_buffers
+
+static GLboolean _glewInit_GL_NV_draw_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawBuffersNV = (PFNGLDRAWBUFFERSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_draw_buffers */
+
+#ifdef GL_NV_draw_instanced
+
+static GLboolean _glewInit_GL_NV_draw_instanced ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawArraysInstancedNV = (PFNGLDRAWARRAYSINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedNV")) == NULL) || r;
+ r = ((glDrawElementsInstancedNV = (PFNGLDRAWELEMENTSINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_draw_instanced */
+
+#ifdef GL_NV_draw_texture
+
+static GLboolean _glewInit_GL_NV_draw_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)glewGetProcAddress((const GLubyte*)"glDrawTextureNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_draw_texture */
+
+#ifdef GL_NV_draw_vulkan_image
+
+static GLboolean _glewInit_GL_NV_draw_vulkan_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawVkImageNV = (PFNGLDRAWVKIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glDrawVkImageNV")) == NULL) || r;
+ r = ((glGetVkProcAddrNV = (PFNGLGETVKPROCADDRNVPROC)glewGetProcAddress((const GLubyte*)"glGetVkProcAddrNV")) == NULL) || r;
+ r = ((glSignalVkFenceNV = (PFNGLSIGNALVKFENCENVPROC)glewGetProcAddress((const GLubyte*)"glSignalVkFenceNV")) == NULL) || r;
+ r = ((glSignalVkSemaphoreNV = (PFNGLSIGNALVKSEMAPHORENVPROC)glewGetProcAddress((const GLubyte*)"glSignalVkSemaphoreNV")) == NULL) || r;
+ r = ((glWaitVkSemaphoreNV = (PFNGLWAITVKSEMAPHORENVPROC)glewGetProcAddress((const GLubyte*)"glWaitVkSemaphoreNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_draw_vulkan_image */
+
+#ifdef GL_NV_evaluators
+
+static GLboolean _glewInit_GL_NV_evaluators ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEvalMapsNV = (PFNGLEVALMAPSNVPROC)glewGetProcAddress((const GLubyte*)"glEvalMapsNV")) == NULL) || r;
+ r = ((glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapAttribParameterfvNV")) == NULL) || r;
+ r = ((glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapAttribParameterivNV")) == NULL) || r;
+ r = ((glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapControlPointsNV")) == NULL) || r;
+ r = ((glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapParameterfvNV")) == NULL) || r;
+ r = ((glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapParameterivNV")) == NULL) || r;
+ r = ((glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)glewGetProcAddress((const GLubyte*)"glMapControlPointsNV")) == NULL) || r;
+ r = ((glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glMapParameterfvNV")) == NULL) || r;
+ r = ((glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glMapParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_evaluators */
+
+#ifdef GL_NV_explicit_multisample
+
+static GLboolean _glewInit_GL_NV_explicit_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMultisamplefvNV")) == NULL) || r;
+ r = ((glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskIndexedNV")) == NULL) || r;
+ r = ((glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glTexRenderbufferNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_explicit_multisample */
+
+#ifdef GL_NV_fence
+
+static GLboolean _glewInit_GL_NV_fence ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteFencesNV")) == NULL) || r;
+ r = ((glFinishFenceNV = (PFNGLFINISHFENCENVPROC)glewGetProcAddress((const GLubyte*)"glFinishFenceNV")) == NULL) || r;
+ r = ((glGenFencesNV = (PFNGLGENFENCESNVPROC)glewGetProcAddress((const GLubyte*)"glGenFencesNV")) == NULL) || r;
+ r = ((glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFenceivNV")) == NULL) || r;
+ r = ((glIsFenceNV = (PFNGLISFENCENVPROC)glewGetProcAddress((const GLubyte*)"glIsFenceNV")) == NULL) || r;
+ r = ((glSetFenceNV = (PFNGLSETFENCENVPROC)glewGetProcAddress((const GLubyte*)"glSetFenceNV")) == NULL) || r;
+ r = ((glTestFenceNV = (PFNGLTESTFENCENVPROC)glewGetProcAddress((const GLubyte*)"glTestFenceNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_fence */
+
+#ifdef GL_NV_fragment_coverage_to_color
+
+static GLboolean _glewInit_GL_NV_fragment_coverage_to_color ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)glewGetProcAddress((const GLubyte*)"glFragmentCoverageColorNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_fragment_coverage_to_color */
+
+#ifdef GL_NV_fragment_program
+
+static GLboolean _glewInit_GL_NV_fragment_program ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramNamedParameterdvNV")) == NULL) || r;
+ r = ((glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramNamedParameterfvNV")) == NULL) || r;
+ r = ((glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4dNV")) == NULL) || r;
+ r = ((glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4dvNV")) == NULL) || r;
+ r = ((glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4fNV")) == NULL) || r;
+ r = ((glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4fvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_fragment_program */
+
+#ifdef GL_NV_framebuffer_blit
+
+static GLboolean _glewInit_GL_NV_framebuffer_blit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlitFramebufferNV = (PFNGLBLITFRAMEBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebufferNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_framebuffer_blit */
+
+#ifdef GL_NV_framebuffer_multisample
+
+static GLboolean _glewInit_GL_NV_framebuffer_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_framebuffer_multisample */
+
+#ifdef GL_NV_framebuffer_multisample_coverage
+
+static GLboolean _glewInit_GL_NV_framebuffer_multisample_coverage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleCoverageNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_framebuffer_multisample_coverage */
+
+#ifdef GL_NV_geometry_program4
+
+static GLboolean _glewInit_GL_NV_geometry_program4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)glewGetProcAddress((const GLubyte*)"glProgramVertexLimitNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_geometry_program4 */
+
+#ifdef GL_NV_gpu_multicast
+
+static GLboolean _glewInit_GL_NV_gpu_multicast ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMulticastBarrierNV = (PFNGLMULTICASTBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastBarrierNV")) == NULL) || r;
+ r = ((glMulticastBlitFramebufferNV = (PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastBlitFramebufferNV")) == NULL) || r;
+ r = ((glMulticastBufferSubDataNV = (PFNGLMULTICASTBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glMulticastBufferSubDataNV")) == NULL) || r;
+ r = ((glMulticastCopyBufferSubDataNV = (PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glMulticastCopyBufferSubDataNV")) == NULL) || r;
+ r = ((glMulticastCopyImageSubDataNV = (PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glMulticastCopyImageSubDataNV")) == NULL) || r;
+ r = ((glMulticastFramebufferSampleLocationsfvNV = (PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastFramebufferSampleLocationsfvNV")) == NULL) || r;
+ r = ((glMulticastGetQueryObjecti64vNV = (PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastGetQueryObjecti64vNV")) == NULL) || r;
+ r = ((glMulticastGetQueryObjectivNV = (PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastGetQueryObjectivNV")) == NULL) || r;
+ r = ((glMulticastGetQueryObjectui64vNV = (PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastGetQueryObjectui64vNV")) == NULL) || r;
+ r = ((glMulticastGetQueryObjectuivNV = (PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastGetQueryObjectuivNV")) == NULL) || r;
+ r = ((glMulticastWaitSyncNV = (PFNGLMULTICASTWAITSYNCNVPROC)glewGetProcAddress((const GLubyte*)"glMulticastWaitSyncNV")) == NULL) || r;
+ r = ((glRenderGpuMaskNV = (PFNGLRENDERGPUMASKNVPROC)glewGetProcAddress((const GLubyte*)"glRenderGpuMaskNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_gpu_multicast */
+
+#ifdef GL_NV_gpu_program4
+
+static GLboolean _glewInit_GL_NV_gpu_program4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4iNV")) == NULL) || r;
+ r = ((glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4ivNV")) == NULL) || r;
+ r = ((glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4uiNV")) == NULL) || r;
+ r = ((glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4uivNV")) == NULL) || r;
+ r = ((glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParametersI4ivNV")) == NULL) || r;
+ r = ((glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParametersI4uivNV")) == NULL) || r;
+ r = ((glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4iNV")) == NULL) || r;
+ r = ((glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4ivNV")) == NULL) || r;
+ r = ((glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4uiNV")) == NULL) || r;
+ r = ((glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4uivNV")) == NULL) || r;
+ r = ((glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParametersI4ivNV")) == NULL) || r;
+ r = ((glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParametersI4uivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_gpu_program4 */
+
+#ifdef GL_NV_gpu_shader5
+
+static GLboolean _glewInit_GL_NV_gpu_shader5 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformi64vNV")) == NULL) || r;
+ r = ((glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformui64vNV")) == NULL) || r;
+ r = ((glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64NV")) == NULL) || r;
+ r = ((glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64vNV")) == NULL) || r;
+ r = ((glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64NV")) == NULL) || r;
+ r = ((glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64vNV")) == NULL) || r;
+ r = ((glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64NV")) == NULL) || r;
+ r = ((glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64vNV")) == NULL) || r;
+ r = ((glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64NV")) == NULL) || r;
+ r = ((glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64vNV")) == NULL) || r;
+ r = ((glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64NV")) == NULL) || r;
+ r = ((glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64vNV")) == NULL) || r;
+ r = ((glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64NV")) == NULL) || r;
+ r = ((glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64vNV")) == NULL) || r;
+ r = ((glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64NV")) == NULL) || r;
+ r = ((glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64vNV")) == NULL) || r;
+ r = ((glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64NV")) == NULL) || r;
+ r = ((glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64vNV")) == NULL) || r;
+ r = ((glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64NV")) == NULL) || r;
+ r = ((glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64vNV")) == NULL) || r;
+ r = ((glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64NV")) == NULL) || r;
+ r = ((glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64vNV")) == NULL) || r;
+ r = ((glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64NV")) == NULL) || r;
+ r = ((glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64vNV")) == NULL) || r;
+ r = ((glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64NV")) == NULL) || r;
+ r = ((glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64vNV")) == NULL) || r;
+ r = ((glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64NV")) == NULL) || r;
+ r = ((glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64vNV")) == NULL) || r;
+ r = ((glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64NV")) == NULL) || r;
+ r = ((glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64vNV")) == NULL) || r;
+ r = ((glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64NV")) == NULL) || r;
+ r = ((glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64vNV")) == NULL) || r;
+ r = ((glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64NV")) == NULL) || r;
+ r = ((glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64vNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_gpu_shader5 */
+
+#ifdef GL_NV_half_float
+
+static GLboolean _glewInit_GL_NV_half_float ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColor3hNV = (PFNGLCOLOR3HNVPROC)glewGetProcAddress((const GLubyte*)"glColor3hNV")) == NULL) || r;
+ r = ((glColor3hvNV = (PFNGLCOLOR3HVNVPROC)glewGetProcAddress((const GLubyte*)"glColor3hvNV")) == NULL) || r;
+ r = ((glColor4hNV = (PFNGLCOLOR4HNVPROC)glewGetProcAddress((const GLubyte*)"glColor4hNV")) == NULL) || r;
+ r = ((glColor4hvNV = (PFNGLCOLOR4HVNVPROC)glewGetProcAddress((const GLubyte*)"glColor4hvNV")) == NULL) || r;
+ r = ((glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordhNV")) == NULL) || r;
+ r = ((glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordhvNV")) == NULL) || r;
+ r = ((glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1hNV")) == NULL) || r;
+ r = ((glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1hvNV")) == NULL) || r;
+ r = ((glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2hNV")) == NULL) || r;
+ r = ((glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2hvNV")) == NULL) || r;
+ r = ((glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3hNV")) == NULL) || r;
+ r = ((glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3hvNV")) == NULL) || r;
+ r = ((glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4hNV")) == NULL) || r;
+ r = ((glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4hvNV")) == NULL) || r;
+ r = ((glNormal3hNV = (PFNGLNORMAL3HNVPROC)glewGetProcAddress((const GLubyte*)"glNormal3hNV")) == NULL) || r;
+ r = ((glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)glewGetProcAddress((const GLubyte*)"glNormal3hvNV")) == NULL) || r;
+ r = ((glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3hNV")) == NULL) || r;
+ r = ((glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3hvNV")) == NULL) || r;
+ r = ((glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord1hNV")) == NULL) || r;
+ r = ((glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord1hvNV")) == NULL) || r;
+ r = ((glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2hNV")) == NULL) || r;
+ r = ((glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2hvNV")) == NULL) || r;
+ r = ((glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord3hNV")) == NULL) || r;
+ r = ((glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord3hvNV")) == NULL) || r;
+ r = ((glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4hNV")) == NULL) || r;
+ r = ((glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4hvNV")) == NULL) || r;
+ r = ((glVertex2hNV = (PFNGLVERTEX2HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex2hNV")) == NULL) || r;
+ r = ((glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex2hvNV")) == NULL) || r;
+ r = ((glVertex3hNV = (PFNGLVERTEX3HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex3hNV")) == NULL) || r;
+ r = ((glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex3hvNV")) == NULL) || r;
+ r = ((glVertex4hNV = (PFNGLVERTEX4HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex4hNV")) == NULL) || r;
+ r = ((glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex4hvNV")) == NULL) || r;
+ r = ((glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1hNV")) == NULL) || r;
+ r = ((glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1hvNV")) == NULL) || r;
+ r = ((glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2hNV")) == NULL) || r;
+ r = ((glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2hvNV")) == NULL) || r;
+ r = ((glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3hNV")) == NULL) || r;
+ r = ((glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3hvNV")) == NULL) || r;
+ r = ((glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4hNV")) == NULL) || r;
+ r = ((glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4hvNV")) == NULL) || r;
+ r = ((glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1hvNV")) == NULL) || r;
+ r = ((glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2hvNV")) == NULL) || r;
+ r = ((glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3hvNV")) == NULL) || r;
+ r = ((glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4hvNV")) == NULL) || r;
+ r = ((glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)glewGetProcAddress((const GLubyte*)"glVertexWeighthNV")) == NULL) || r;
+ r = ((glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexWeighthvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_half_float */
+
+#ifdef GL_NV_instanced_arrays
+
+static GLboolean _glewInit_GL_NV_instanced_arrays ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVertexAttribDivisorNV = (PFNGLVERTEXATTRIBDIVISORNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_instanced_arrays */
+
+#ifdef GL_NV_internalformat_sample_query
+
+static GLboolean _glewInit_GL_NV_internalformat_sample_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetInternalformatSampleivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_internalformat_sample_query */
+
+#ifdef GL_NV_memory_attachment
+
+static GLboolean _glewInit_GL_NV_memory_attachment ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferAttachMemoryNV = (PFNGLBUFFERATTACHMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glBufferAttachMemoryNV")) == NULL) || r;
+ r = ((glGetMemoryObjectDetachedResourcesuivNV = (PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMemoryObjectDetachedResourcesuivNV")) == NULL) || r;
+ r = ((glNamedBufferAttachMemoryNV = (PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferAttachMemoryNV")) == NULL) || r;
+ r = ((glResetMemoryObjectParameterNV = (PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)glewGetProcAddress((const GLubyte*)"glResetMemoryObjectParameterNV")) == NULL) || r;
+ r = ((glTexAttachMemoryNV = (PFNGLTEXATTACHMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glTexAttachMemoryNV")) == NULL) || r;
+ r = ((glTextureAttachMemoryNV = (PFNGLTEXTUREATTACHMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glTextureAttachMemoryNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_memory_attachment */
+
+#ifdef GL_NV_memory_object_sparse
+
+static GLboolean _glewInit_GL_NV_memory_object_sparse ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferPageCommitmentMemNV = (PFNGLBUFFERPAGECOMMITMENTMEMNVPROC)glewGetProcAddress((const GLubyte*)"glBufferPageCommitmentMemNV")) == NULL) || r;
+ r = ((glNamedBufferPageCommitmentMemNV = (PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferPageCommitmentMemNV")) == NULL) || r;
+ r = ((glTexPageCommitmentMemNV = (PFNGLTEXPAGECOMMITMENTMEMNVPROC)glewGetProcAddress((const GLubyte*)"glTexPageCommitmentMemNV")) == NULL) || r;
+ r = ((glTexturePageCommitmentMemNV = (PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC)glewGetProcAddress((const GLubyte*)"glTexturePageCommitmentMemNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_memory_object_sparse */
+
+#ifdef GL_NV_mesh_shader
+
+static GLboolean _glewInit_GL_NV_mesh_shader ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDrawMeshTasksIndirectNV = (PFNGLDRAWMESHTASKSINDIRECTNVPROC)glewGetProcAddress((const GLubyte*)"glDrawMeshTasksIndirectNV")) == NULL) || r;
+ r = ((glDrawMeshTasksNV = (PFNGLDRAWMESHTASKSNVPROC)glewGetProcAddress((const GLubyte*)"glDrawMeshTasksNV")) == NULL) || r;
+ r = ((glMultiDrawMeshTasksIndirectCountNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawMeshTasksIndirectCountNV")) == NULL) || r;
+ r = ((glMultiDrawMeshTasksIndirectNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawMeshTasksIndirectNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_mesh_shader */
+
+#ifdef GL_NV_non_square_matrices
+
+static GLboolean _glewInit_GL_NV_non_square_matrices ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glUniformMatrix2x3fvNV = (PFNGLUNIFORMMATRIX2X3FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x3fvNV")) == NULL) || r;
+ r = ((glUniformMatrix2x4fvNV = (PFNGLUNIFORMMATRIX2X4FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x4fvNV")) == NULL) || r;
+ r = ((glUniformMatrix3x2fvNV = (PFNGLUNIFORMMATRIX3X2FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x2fvNV")) == NULL) || r;
+ r = ((glUniformMatrix3x4fvNV = (PFNGLUNIFORMMATRIX3X4FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x4fvNV")) == NULL) || r;
+ r = ((glUniformMatrix4x2fvNV = (PFNGLUNIFORMMATRIX4X2FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x2fvNV")) == NULL) || r;
+ r = ((glUniformMatrix4x3fvNV = (PFNGLUNIFORMMATRIX4X3FVNVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x3fvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_non_square_matrices */
+
+#ifdef GL_NV_occlusion_query
+
+static GLboolean _glewInit_GL_NV_occlusion_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glBeginOcclusionQueryNV")) == NULL) || r;
+ r = ((glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteOcclusionQueriesNV")) == NULL) || r;
+ r = ((glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glEndOcclusionQueryNV")) == NULL) || r;
+ r = ((glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)glewGetProcAddress((const GLubyte*)"glGenOcclusionQueriesNV")) == NULL) || r;
+ r = ((glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetOcclusionQueryivNV")) == NULL) || r;
+ r = ((glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetOcclusionQueryuivNV")) == NULL) || r;
+ r = ((glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glIsOcclusionQueryNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_occlusion_query */
+
+#ifdef GL_NV_parameter_buffer_object
+
+static GLboolean _glewInit_GL_NV_parameter_buffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersIivNV")) == NULL) || r;
+ r = ((glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersIuivNV")) == NULL) || r;
+ r = ((glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersfvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_parameter_buffer_object */
+
+#ifdef GL_NV_path_rendering
+
+static GLboolean _glewInit_GL_NV_path_rendering ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyPathNV = (PFNGLCOPYPATHNVPROC)glewGetProcAddress((const GLubyte*)"glCopyPathNV")) == NULL) || r;
+ r = ((glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glCoverFillPathInstancedNV")) == NULL) || r;
+ r = ((glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)"glCoverFillPathNV")) == NULL) || r;
+ r = ((glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glCoverStrokePathInstancedNV")) == NULL) || r;
+ r = ((glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)"glCoverStrokePathNV")) == NULL) || r;
+ r = ((glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)glewGetProcAddress((const GLubyte*)"glDeletePathsNV")) == NULL) || r;
+ r = ((glGenPathsNV = (PFNGLGENPATHSNVPROC)glewGetProcAddress((const GLubyte*)"glGenPathsNV")) == NULL) || r;
+ r = ((glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathColorGenfvNV")) == NULL) || r;
+ r = ((glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathColorGenivNV")) == NULL) || r;
+ r = ((glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathCommandsNV")) == NULL) || r;
+ r = ((glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathCoordsNV")) == NULL) || r;
+ r = ((glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathDashArrayNV")) == NULL) || r;
+ r = ((glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathLengthNV")) == NULL) || r;
+ r = ((glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)glewGetProcAddress((const GLubyte*)"glGetPathMetricRangeNV")) == NULL) || r;
+ r = ((glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathMetricsNV")) == NULL) || r;
+ r = ((glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathParameterfvNV")) == NULL) || r;
+ r = ((glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathParameterivNV")) == NULL) || r;
+ r = ((glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathSpacingNV")) == NULL) || r;
+ r = ((glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathTexGenfvNV")) == NULL) || r;
+ r = ((glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetPathTexGenivNV")) == NULL) || r;
+ r = ((glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramResourcefvNV")) == NULL) || r;
+ r = ((glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)glewGetProcAddress((const GLubyte*)"glInterpolatePathsNV")) == NULL) || r;
+ r = ((glIsPathNV = (PFNGLISPATHNVPROC)glewGetProcAddress((const GLubyte*)"glIsPathNV")) == NULL) || r;
+ r = ((glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)"glIsPointInFillPathNV")) == NULL) || r;
+ r = ((glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)"glIsPointInStrokePathNV")) == NULL) || r;
+ r = ((glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoad3x2fNV")) == NULL) || r;
+ r = ((glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoad3x3fNV")) == NULL) || r;
+ r = ((glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadTranspose3x3fNV")) == NULL) || r;
+ r = ((glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixMult3x2fNV")) == NULL) || r;
+ r = ((glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixMult3x3fNV")) == NULL) || r;
+ r = ((glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultTranspose3x3fNV")) == NULL) || r;
+ r = ((glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)glewGetProcAddress((const GLubyte*)"glPathColorGenNV")) == NULL) || r;
+ r = ((glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)"glPathCommandsNV")) == NULL) || r;
+ r = ((glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)glewGetProcAddress((const GLubyte*)"glPathCoordsNV")) == NULL) || r;
+ r = ((glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)glewGetProcAddress((const GLubyte*)"glPathCoverDepthFuncNV")) == NULL) || r;
+ r = ((glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)glewGetProcAddress((const GLubyte*)"glPathDashArrayNV")) == NULL) || r;
+ r = ((glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)glewGetProcAddress((const GLubyte*)"glPathFogGenNV")) == NULL) || r;
+ r = ((glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)glewGetProcAddress((const GLubyte*)"glPathGlyphIndexArrayNV")) == NULL) || r;
+ r = ((glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)glewGetProcAddress((const GLubyte*)"glPathGlyphIndexRangeNV")) == NULL) || r;
+ r = ((glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)glewGetProcAddress((const GLubyte*)"glPathGlyphRangeNV")) == NULL) || r;
+ r = ((glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)glewGetProcAddress((const GLubyte*)"glPathGlyphsNV")) == NULL) || r;
+ r = ((glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)glewGetProcAddress((const GLubyte*)"glPathMemoryGlyphIndexArrayNV")) == NULL) || r;
+ r = ((glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glPathParameterfNV")) == NULL) || r;
+ r = ((glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glPathParameterfvNV")) == NULL) || r;
+ r = ((glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glPathParameteriNV")) == NULL) || r;
+ r = ((glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glPathParameterivNV")) == NULL) || r;
+ r = ((glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)glewGetProcAddress((const GLubyte*)"glPathStencilDepthOffsetNV")) == NULL) || r;
+ r = ((glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)glewGetProcAddress((const GLubyte*)"glPathStencilFuncNV")) == NULL) || r;
+ r = ((glPathStringNV = (PFNGLPATHSTRINGNVPROC)glewGetProcAddress((const GLubyte*)"glPathStringNV")) == NULL) || r;
+ r = ((glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)"glPathSubCommandsNV")) == NULL) || r;
+ r = ((glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)glewGetProcAddress((const GLubyte*)"glPathSubCoordsNV")) == NULL) || r;
+ r = ((glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)glewGetProcAddress((const GLubyte*)"glPathTexGenNV")) == NULL) || r;
+ r = ((glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)glewGetProcAddress((const GLubyte*)"glPointAlongPathNV")) == NULL) || r;
+ r = ((glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)glewGetProcAddress((const GLubyte*)"glProgramPathFragmentInputGenNV")) == NULL) || r;
+ r = ((glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glStencilFillPathInstancedNV")) == NULL) || r;
+ r = ((glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)"glStencilFillPathNV")) == NULL) || r;
+ r = ((glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glStencilStrokePathInstancedNV")) == NULL) || r;
+ r = ((glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)"glStencilStrokePathNV")) == NULL) || r;
+ r = ((glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glStencilThenCoverFillPathInstancedNV")) == NULL) || r;
+ r = ((glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)"glStencilThenCoverFillPathNV")) == NULL) || r;
+ r = ((glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)"glStencilThenCoverStrokePathInstancedNV")) == NULL) || r;
+ r = ((glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)"glStencilThenCoverStrokePathNV")) == NULL) || r;
+ r = ((glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)glewGetProcAddress((const GLubyte*)"glTransformPathNV")) == NULL) || r;
+ r = ((glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)glewGetProcAddress((const GLubyte*)"glWeightPathsNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_path_rendering */
+
+#ifdef GL_NV_pixel_data_range
+
+static GLboolean _glewInit_GL_NV_pixel_data_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)glewGetProcAddress((const GLubyte*)"glFlushPixelDataRangeNV")) == NULL) || r;
+ r = ((glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)glewGetProcAddress((const GLubyte*)"glPixelDataRangeNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_pixel_data_range */
+
+#ifdef GL_NV_point_sprite
+
+static GLboolean _glewInit_GL_NV_point_sprite ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glPointParameteriNV")) == NULL) || r;
+ r = ((glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glPointParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_point_sprite */
+
+#ifdef GL_NV_polygon_mode
+
+static GLboolean _glewInit_GL_NV_polygon_mode ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPolygonModeNV = (PFNGLPOLYGONMODENVPROC)glewGetProcAddress((const GLubyte*)"glPolygonModeNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_polygon_mode */
+
+#ifdef GL_NV_present_video
+
+static GLboolean _glewInit_GL_NV_present_video ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoi64vNV")) == NULL) || r;
+ r = ((glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoivNV")) == NULL) || r;
+ r = ((glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoui64vNV")) == NULL) || r;
+ r = ((glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideouivNV")) == NULL) || r;
+ r = ((glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)glewGetProcAddress((const GLubyte*)"glPresentFrameDualFillNV")) == NULL) || r;
+ r = ((glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)glewGetProcAddress((const GLubyte*)"glPresentFrameKeyedNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_present_video */
+
+#ifdef GL_NV_primitive_restart
+
+static GLboolean _glewInit_GL_NV_primitive_restart ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveRestartIndexNV")) == NULL) || r;
+ r = ((glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveRestartNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_primitive_restart */
+
+#ifdef GL_NV_read_buffer
+
+static GLboolean _glewInit_GL_NV_read_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glReadBufferNV = (PFNGLREADBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glReadBufferNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_read_buffer */
+
+#ifdef GL_NV_register_combiners
+
+static GLboolean _glewInit_GL_NV_register_combiners ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerInputNV")) == NULL) || r;
+ r = ((glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerOutputNV")) == NULL) || r;
+ r = ((glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterfNV")) == NULL) || r;
+ r = ((glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterfvNV")) == NULL) || r;
+ r = ((glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameteriNV")) == NULL) || r;
+ r = ((glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterivNV")) == NULL) || r;
+ r = ((glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)glewGetProcAddress((const GLubyte*)"glFinalCombinerInputNV")) == NULL) || r;
+ r = ((glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerInputParameterfvNV")) == NULL) || r;
+ r = ((glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerInputParameterivNV")) == NULL) || r;
+ r = ((glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerOutputParameterfvNV")) == NULL) || r;
+ r = ((glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerOutputParameterivNV")) == NULL) || r;
+ r = ((glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFinalCombinerInputParameterfvNV")) == NULL) || r;
+ r = ((glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFinalCombinerInputParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_register_combiners */
+
+#ifdef GL_NV_register_combiners2
+
+static GLboolean _glewInit_GL_NV_register_combiners2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerStageParameterfvNV")) == NULL) || r;
+ r = ((glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerStageParameterfvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_register_combiners2 */
+
+#ifdef GL_NV_sample_locations
+
+static GLboolean _glewInit_GL_NV_sample_locations ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)"glFramebufferSampleLocationsfvNV")) == NULL) || r;
+ r = ((glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferSampleLocationsfvNV")) == NULL) || r;
+ r = ((glResolveDepthValuesNV = (PFNGLRESOLVEDEPTHVALUESNVPROC)glewGetProcAddress((const GLubyte*)"glResolveDepthValuesNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_sample_locations */
+
+#ifdef GL_NV_scissor_exclusive
+
+static GLboolean _glewInit_GL_NV_scissor_exclusive ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glScissorExclusiveArrayvNV = (PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)glewGetProcAddress((const GLubyte*)"glScissorExclusiveArrayvNV")) == NULL) || r;
+ r = ((glScissorExclusiveNV = (PFNGLSCISSOREXCLUSIVENVPROC)glewGetProcAddress((const GLubyte*)"glScissorExclusiveNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_scissor_exclusive */
+
+#ifdef GL_NV_shader_buffer_load
+
+static GLboolean _glewInit_GL_NV_shader_buffer_load ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameterui64vNV")) == NULL) || r;
+ r = ((glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetIntegerui64vNV")) == NULL) || r;
+ r = ((glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameterui64vNV")) == NULL) || r;
+ r = ((glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsBufferResidentNV")) == NULL) || r;
+ r = ((glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsNamedBufferResidentNV")) == NULL) || r;
+ r = ((glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeBufferNonResidentNV")) == NULL) || r;
+ r = ((glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeBufferResidentNV")) == NULL) || r;
+ r = ((glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeNamedBufferNonResidentNV")) == NULL) || r;
+ r = ((glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeNamedBufferResidentNV")) == NULL) || r;
+ r = ((glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformui64NV")) == NULL) || r;
+ r = ((glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformui64vNV")) == NULL) || r;
+ r = ((glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniformui64NV")) == NULL) || r;
+ r = ((glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniformui64vNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_shader_buffer_load */
+
+#ifdef GL_NV_shading_rate_image
+
+static GLboolean _glewInit_GL_NV_shading_rate_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindShadingRateImageNV = (PFNGLBINDSHADINGRATEIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glBindShadingRateImageNV")) == NULL) || r;
+ r = ((glGetShadingRateImagePaletteNV = (PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)glewGetProcAddress((const GLubyte*)"glGetShadingRateImagePaletteNV")) == NULL) || r;
+ r = ((glGetShadingRateSampleLocationivNV = (PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetShadingRateSampleLocationivNV")) == NULL) || r;
+ r = ((glShadingRateImageBarrierNV = (PFNGLSHADINGRATEIMAGEBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glShadingRateImageBarrierNV")) == NULL) || r;
+ r = ((glShadingRateImagePaletteNV = (PFNGLSHADINGRATEIMAGEPALETTENVPROC)glewGetProcAddress((const GLubyte*)"glShadingRateImagePaletteNV")) == NULL) || r;
+ r = ((glShadingRateSampleOrderCustomNV = (PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)glewGetProcAddress((const GLubyte*)"glShadingRateSampleOrderCustomNV")) == NULL) || r;
+ r = ((glShadingRateSampleOrderNV = (PFNGLSHADINGRATESAMPLEORDERNVPROC)glewGetProcAddress((const GLubyte*)"glShadingRateSampleOrderNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_shading_rate_image */
+
+#ifdef GL_NV_texture_array
+
+static GLboolean _glewInit_GL_NV_texture_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCompressedTexImage3DNV = (PFNGLCOMPRESSEDTEXIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3DNV")) == NULL) || r;
+ r = ((glCompressedTexSubImage3DNV = (PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3DNV")) == NULL) || r;
+ r = ((glCopyTexSubImage3DNV = (PFNGLCOPYTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3DNV")) == NULL) || r;
+ r = ((glFramebufferTextureLayerNV = (PFNGLFRAMEBUFFERTEXTURELAYERNVPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerNV")) == NULL) || r;
+ r = ((glTexImage3DNV = (PFNGLTEXIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DNV")) == NULL) || r;
+ r = ((glTexSubImage3DNV = (PFNGLTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3DNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_texture_array */
+
+#ifdef GL_NV_texture_barrier
+
+static GLboolean _glewInit_GL_NV_texture_barrier ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glTextureBarrierNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_texture_barrier */
+
+#ifdef GL_NV_texture_multisample
+
+static GLboolean _glewInit_GL_NV_texture_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glTexImage2DMultisampleCoverageNV")) == NULL) || r;
+ r = ((glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DMultisampleCoverageNV")) == NULL) || r;
+ r = ((glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glTextureImage2DMultisampleCoverageNV")) == NULL) || r;
+ r = ((glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)"glTextureImage2DMultisampleNV")) == NULL) || r;
+ r = ((glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glTextureImage3DMultisampleCoverageNV")) == NULL) || r;
+ r = ((glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)"glTextureImage3DMultisampleNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_texture_multisample */
+
+#ifdef GL_NV_timeline_semaphore
+
+static GLboolean _glewInit_GL_NV_timeline_semaphore ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCreateSemaphoresNV = (PFNGLCREATESEMAPHORESNVPROC)glewGetProcAddress((const GLubyte*)"glCreateSemaphoresNV")) == NULL) || r;
+ r = ((glGetSemaphoreParameterivNV = (PFNGLGETSEMAPHOREPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetSemaphoreParameterivNV")) == NULL) || r;
+ r = ((glSemaphoreParameterivNV = (PFNGLSEMAPHOREPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glSemaphoreParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_timeline_semaphore */
+
+#ifdef GL_NV_transform_feedback
+
+static GLboolean _glewInit_GL_NV_transform_feedback ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glActiveVaryingNV")) == NULL) || r;
+ r = ((glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedbackNV")) == NULL) || r;
+ r = ((glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBaseNV")) == NULL) || r;
+ r = ((glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferOffsetNV")) == NULL) || r;
+ r = ((glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRangeNV")) == NULL) || r;
+ r = ((glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedbackNV")) == NULL) || r;
+ r = ((glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveVaryingNV")) == NULL) || r;
+ r = ((glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVaryingNV")) == NULL) || r;
+ r = ((glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)glewGetProcAddress((const GLubyte*)"glGetVaryingLocationNV")) == NULL) || r;
+ r = ((glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackAttribsNV")) == NULL) || r;
+ r = ((glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryingsNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_transform_feedback */
+
+#ifdef GL_NV_transform_feedback2
+
+static GLboolean _glewInit_GL_NV_transform_feedback2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glBindTransformFeedbackNV")) == NULL) || r;
+ r = ((glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteTransformFeedbacksNV")) == NULL) || r;
+ r = ((glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackNV")) == NULL) || r;
+ r = ((glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)glewGetProcAddress((const GLubyte*)"glGenTransformFeedbacksNV")) == NULL) || r;
+ r = ((glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glIsTransformFeedbackNV")) == NULL) || r;
+ r = ((glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glPauseTransformFeedbackNV")) == NULL) || r;
+ r = ((glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glResumeTransformFeedbackNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_transform_feedback2 */
+
+#ifdef GL_NV_vdpau_interop
+
+static GLboolean _glewInit_GL_NV_vdpau_interop ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUFiniNV")) == NULL) || r;
+ r = ((glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUGetSurfaceivNV")) == NULL) || r;
+ r = ((glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUInitNV")) == NULL) || r;
+ r = ((glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUIsSurfaceNV")) == NULL) || r;
+ r = ((glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUMapSurfacesNV")) == NULL) || r;
+ r = ((glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAURegisterOutputSurfaceNV")) == NULL) || r;
+ r = ((glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAURegisterVideoSurfaceNV")) == NULL) || r;
+ r = ((glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUSurfaceAccessNV")) == NULL) || r;
+ r = ((glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUUnmapSurfacesNV")) == NULL) || r;
+ r = ((glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAUUnregisterSurfaceNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vdpau_interop */
+
+#ifdef GL_NV_vdpau_interop2
+
+static GLboolean _glewInit_GL_NV_vdpau_interop2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glVDPAURegisterVideoSurfaceWithPictureStructureNV = (PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)glewGetProcAddress((const GLubyte*)"glVDPAURegisterVideoSurfaceWithPictureStructureNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vdpau_interop2 */
+
+#ifdef GL_NV_vertex_array_range
+
+static GLboolean _glewInit_GL_NV_vertex_array_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)glewGetProcAddress((const GLubyte*)"glFlushVertexArrayRangeNV")) == NULL) || r;
+ r = ((glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayRangeNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vertex_array_range */
+
+#ifdef GL_NV_vertex_attrib_integer_64bit
+
+static GLboolean _glewInit_GL_NV_vertex_attrib_integer_64bit ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLi64vNV")) == NULL) || r;
+ r = ((glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLui64vNV")) == NULL) || r;
+ r = ((glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1i64NV")) == NULL) || r;
+ r = ((glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1i64vNV")) == NULL) || r;
+ r = ((glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64NV")) == NULL) || r;
+ r = ((glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64vNV")) == NULL) || r;
+ r = ((glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2i64NV")) == NULL) || r;
+ r = ((glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2i64vNV")) == NULL) || r;
+ r = ((glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2ui64NV")) == NULL) || r;
+ r = ((glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2ui64vNV")) == NULL) || r;
+ r = ((glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3i64NV")) == NULL) || r;
+ r = ((glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3i64vNV")) == NULL) || r;
+ r = ((glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3ui64NV")) == NULL) || r;
+ r = ((glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3ui64vNV")) == NULL) || r;
+ r = ((glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4i64NV")) == NULL) || r;
+ r = ((glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4i64vNV")) == NULL) || r;
+ r = ((glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4ui64NV")) == NULL) || r;
+ r = ((glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4ui64vNV")) == NULL) || r;
+ r = ((glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLFormatNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
+#ifdef GL_NV_vertex_buffer_unified_memory
+
+static GLboolean _glewInit_GL_NV_vertex_buffer_unified_memory ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)glewGetProcAddress((const GLubyte*)"glBufferAddressRangeNV")) == NULL) || r;
+ r = ((glColorFormatNV = (PFNGLCOLORFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glColorFormatNV")) == NULL) || r;
+ r = ((glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glEdgeFlagFormatNV")) == NULL) || r;
+ r = ((glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordFormatNV")) == NULL) || r;
+ r = ((glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)glewGetProcAddress((const GLubyte*)"glGetIntegerui64i_vNV")) == NULL) || r;
+ r = ((glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glIndexFormatNV")) == NULL) || r;
+ r = ((glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glNormalFormatNV")) == NULL) || r;
+ r = ((glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorFormatNV")) == NULL) || r;
+ r = ((glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordFormatNV")) == NULL) || r;
+ r = ((glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribFormatNV")) == NULL) || r;
+ r = ((glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIFormatNV")) == NULL) || r;
+ r = ((glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexFormatNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vertex_buffer_unified_memory */
+
+#ifdef GL_NV_vertex_program
+
+static GLboolean _glewInit_GL_NV_vertex_program ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glAreProgramsResidentNV")) == NULL) || r;
+ r = ((glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glBindProgramNV")) == NULL) || r;
+ r = ((glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgramsNV")) == NULL) || r;
+ r = ((glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glExecuteProgramNV")) == NULL) || r;
+ r = ((glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glGenProgramsNV")) == NULL) || r;
+ r = ((glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramParameterdvNV")) == NULL) || r;
+ r = ((glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramParameterfvNV")) == NULL) || r;
+ r = ((glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStringNV")) == NULL) || r;
+ r = ((glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramivNV")) == NULL) || r;
+ r = ((glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetTrackMatrixivNV")) == NULL) || r;
+ r = ((glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointervNV")) == NULL) || r;
+ r = ((glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdvNV")) == NULL) || r;
+ r = ((glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfvNV")) == NULL) || r;
+ r = ((glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribivNV")) == NULL) || r;
+ r = ((glIsProgramNV = (PFNGLISPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glIsProgramNV")) == NULL) || r;
+ r = ((glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glLoadProgramNV")) == NULL) || r;
+ r = ((glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4dNV")) == NULL) || r;
+ r = ((glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4dvNV")) == NULL) || r;
+ r = ((glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4fNV")) == NULL) || r;
+ r = ((glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4fvNV")) == NULL) || r;
+ r = ((glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameters4dvNV")) == NULL) || r;
+ r = ((glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameters4fvNV")) == NULL) || r;
+ r = ((glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glRequestResidentProgramsNV")) == NULL) || r;
+ r = ((glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)glewGetProcAddress((const GLubyte*)"glTrackMatrixNV")) == NULL) || r;
+ r = ((glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dNV")) == NULL) || r;
+ r = ((glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dvNV")) == NULL) || r;
+ r = ((glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fNV")) == NULL) || r;
+ r = ((glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fvNV")) == NULL) || r;
+ r = ((glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sNV")) == NULL) || r;
+ r = ((glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1svNV")) == NULL) || r;
+ r = ((glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dNV")) == NULL) || r;
+ r = ((glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dvNV")) == NULL) || r;
+ r = ((glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fNV")) == NULL) || r;
+ r = ((glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fvNV")) == NULL) || r;
+ r = ((glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sNV")) == NULL) || r;
+ r = ((glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2svNV")) == NULL) || r;
+ r = ((glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dNV")) == NULL) || r;
+ r = ((glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dvNV")) == NULL) || r;
+ r = ((glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fNV")) == NULL) || r;
+ r = ((glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fvNV")) == NULL) || r;
+ r = ((glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sNV")) == NULL) || r;
+ r = ((glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3svNV")) == NULL) || r;
+ r = ((glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dNV")) == NULL) || r;
+ r = ((glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dvNV")) == NULL) || r;
+ r = ((glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fNV")) == NULL) || r;
+ r = ((glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fvNV")) == NULL) || r;
+ r = ((glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sNV")) == NULL) || r;
+ r = ((glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4svNV")) == NULL) || r;
+ r = ((glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubNV")) == NULL) || r;
+ r = ((glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubvNV")) == NULL) || r;
+ r = ((glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointerNV")) == NULL) || r;
+ r = ((glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1dvNV")) == NULL) || r;
+ r = ((glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1fvNV")) == NULL) || r;
+ r = ((glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1svNV")) == NULL) || r;
+ r = ((glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2dvNV")) == NULL) || r;
+ r = ((glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2fvNV")) == NULL) || r;
+ r = ((glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2svNV")) == NULL) || r;
+ r = ((glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3dvNV")) == NULL) || r;
+ r = ((glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3fvNV")) == NULL) || r;
+ r = ((glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3svNV")) == NULL) || r;
+ r = ((glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4dvNV")) == NULL) || r;
+ r = ((glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4fvNV")) == NULL) || r;
+ r = ((glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4svNV")) == NULL) || r;
+ r = ((glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4ubvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_vertex_program */
+
+#ifdef GL_NV_video_capture
+
+static GLboolean _glewInit_GL_NV_video_capture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)"glBeginVideoCaptureNV")) == NULL) || r;
+ r = ((glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glBindVideoCaptureStreamBufferNV")) == NULL) || r;
+ r = ((glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)glewGetProcAddress((const GLubyte*)"glBindVideoCaptureStreamTextureNV")) == NULL) || r;
+ r = ((glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)"glEndVideoCaptureNV")) == NULL) || r;
+ r = ((glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoCaptureStreamdvNV")) == NULL) || r;
+ r = ((glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoCaptureStreamfvNV")) == NULL) || r;
+ r = ((glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoCaptureStreamivNV")) == NULL) || r;
+ r = ((glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoCaptureivNV")) == NULL) || r;
+ r = ((glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)"glVideoCaptureNV")) == NULL) || r;
+ r = ((glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)"glVideoCaptureStreamParameterdvNV")) == NULL) || r;
+ r = ((glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glVideoCaptureStreamParameterfvNV")) == NULL) || r;
+ r = ((glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glVideoCaptureStreamParameterivNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_video_capture */
+
+#ifdef GL_NV_viewport_array
+
+static GLboolean _glewInit_GL_NV_viewport_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDepthRangeArrayfvNV = (PFNGLDEPTHRANGEARRAYFVNVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangeArrayfvNV")) == NULL) || r;
+ r = ((glDepthRangeIndexedfNV = (PFNGLDEPTHRANGEINDEXEDFNVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangeIndexedfNV")) == NULL) || r;
+ r = ((glDisableiNV = (PFNGLDISABLEINVPROC)glewGetProcAddress((const GLubyte*)"glDisableiNV")) == NULL) || r;
+ r = ((glEnableiNV = (PFNGLENABLEINVPROC)glewGetProcAddress((const GLubyte*)"glEnableiNV")) == NULL) || r;
+ r = ((glGetFloati_vNV = (PFNGLGETFLOATI_VNVPROC)glewGetProcAddress((const GLubyte*)"glGetFloati_vNV")) == NULL) || r;
+ r = ((glIsEnablediNV = (PFNGLISENABLEDINVPROC)glewGetProcAddress((const GLubyte*)"glIsEnablediNV")) == NULL) || r;
+ r = ((glScissorArrayvNV = (PFNGLSCISSORARRAYVNVPROC)glewGetProcAddress((const GLubyte*)"glScissorArrayvNV")) == NULL) || r;
+ r = ((glScissorIndexedNV = (PFNGLSCISSORINDEXEDNVPROC)glewGetProcAddress((const GLubyte*)"glScissorIndexedNV")) == NULL) || r;
+ r = ((glScissorIndexedvNV = (PFNGLSCISSORINDEXEDVNVPROC)glewGetProcAddress((const GLubyte*)"glScissorIndexedvNV")) == NULL) || r;
+ r = ((glViewportArrayvNV = (PFNGLVIEWPORTARRAYVNVPROC)glewGetProcAddress((const GLubyte*)"glViewportArrayvNV")) == NULL) || r;
+ r = ((glViewportIndexedfNV = (PFNGLVIEWPORTINDEXEDFNVPROC)glewGetProcAddress((const GLubyte*)"glViewportIndexedfNV")) == NULL) || r;
+ r = ((glViewportIndexedfvNV = (PFNGLVIEWPORTINDEXEDFVNVPROC)glewGetProcAddress((const GLubyte*)"glViewportIndexedfvNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_viewport_array */
+
+#ifdef GL_NV_viewport_swizzle
+
+static GLboolean _glewInit_GL_NV_viewport_swizzle ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glViewportSwizzleNV = (PFNGLVIEWPORTSWIZZLENVPROC)glewGetProcAddress((const GLubyte*)"glViewportSwizzleNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_NV_viewport_swizzle */
+
+#ifdef GL_OES_EGL_image
+
+static GLboolean _glewInit_GL_OES_EGL_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEGLImageTargetRenderbufferStorageOES = (PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC)glewGetProcAddress((const GLubyte*)"glEGLImageTargetRenderbufferStorageOES")) == NULL) || r;
+ r = ((glEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)glewGetProcAddress((const GLubyte*)"glEGLImageTargetTexture2DOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_EGL_image */
+
+#ifdef GL_OES_blend_equation_separate
+
+static GLboolean _glewInit_GL_OES_blend_equation_separate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateOES = (PFNGLBLENDEQUATIONSEPARATEOESPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_blend_equation_separate */
+
+#ifdef GL_OES_blend_func_separate
+
+static GLboolean _glewInit_GL_OES_blend_func_separate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendFuncSeparateOES = (PFNGLBLENDFUNCSEPARATEOESPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_blend_func_separate */
+
+#ifdef GL_OES_blend_subtract
+
+static GLboolean _glewInit_GL_OES_blend_subtract ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationOES = (PFNGLBLENDEQUATIONOESPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_blend_subtract */
+
+#ifdef GL_OES_copy_image
+
+static GLboolean _glewInit_GL_OES_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCopyImageSubDataOES = (PFNGLCOPYIMAGESUBDATAOESPROC)glewGetProcAddress((const GLubyte*)"glCopyImageSubDataOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_copy_image */
+
+#ifdef GL_OES_draw_buffers_indexed
+
+static GLboolean _glewInit_GL_OES_draw_buffers_indexed ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBlendEquationSeparateiOES = (PFNGLBLENDEQUATIONSEPARATEIOESPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateiOES")) == NULL) || r;
+ r = ((glBlendEquationiOES = (PFNGLBLENDEQUATIONIOESPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationiOES")) == NULL) || r;
+ r = ((glBlendFuncSeparateiOES = (PFNGLBLENDFUNCSEPARATEIOESPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateiOES")) == NULL) || r;
+ r = ((glBlendFunciOES = (PFNGLBLENDFUNCIOESPROC)glewGetProcAddress((const GLubyte*)"glBlendFunciOES")) == NULL) || r;
+ r = ((glColorMaskiOES = (PFNGLCOLORMASKIOESPROC)glewGetProcAddress((const GLubyte*)"glColorMaskiOES")) == NULL) || r;
+ r = ((glDisableiOES = (PFNGLDISABLEIOESPROC)glewGetProcAddress((const GLubyte*)"glDisableiOES")) == NULL) || r;
+ r = ((glEnableiOES = (PFNGLENABLEIOESPROC)glewGetProcAddress((const GLubyte*)"glEnableiOES")) == NULL) || r;
+ r = ((glIsEnablediOES = (PFNGLISENABLEDIOESPROC)glewGetProcAddress((const GLubyte*)"glIsEnablediOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_draw_buffers_indexed */
+
+#ifdef GL_OES_framebuffer_object
+
+static GLboolean _glewInit_GL_OES_framebuffer_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindFramebufferOES = (PFNGLBINDFRAMEBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glBindFramebufferOES")) == NULL) || r;
+ r = ((glBindRenderbufferOES = (PFNGLBINDRENDERBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glBindRenderbufferOES")) == NULL) || r;
+ r = ((glCheckFramebufferStatusOES = (PFNGLCHECKFRAMEBUFFERSTATUSOESPROC)glewGetProcAddress((const GLubyte*)"glCheckFramebufferStatusOES")) == NULL) || r;
+ r = ((glDeleteFramebuffersOES = (PFNGLDELETEFRAMEBUFFERSOESPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffersOES")) == NULL) || r;
+ r = ((glDeleteRenderbuffersOES = (PFNGLDELETERENDERBUFFERSOESPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffersOES")) == NULL) || r;
+ r = ((glFramebufferRenderbufferOES = (PFNGLFRAMEBUFFERRENDERBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbufferOES")) == NULL) || r;
+ r = ((glFramebufferTexture2DOES = (PFNGLFRAMEBUFFERTEXTURE2DOESPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DOES")) == NULL) || r;
+ r = ((glGenFramebuffersOES = (PFNGLGENFRAMEBUFFERSOESPROC)glewGetProcAddress((const GLubyte*)"glGenFramebuffersOES")) == NULL) || r;
+ r = ((glGenRenderbuffersOES = (PFNGLGENRENDERBUFFERSOESPROC)glewGetProcAddress((const GLubyte*)"glGenRenderbuffersOES")) == NULL) || r;
+ r = ((glGenerateMipmapOES = (PFNGLGENERATEMIPMAPOESPROC)glewGetProcAddress((const GLubyte*)"glGenerateMipmapOES")) == NULL) || r;
+ r = ((glGetFramebufferAttachmentParameterivOES = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferAttachmentParameterivOES")) == NULL) || r;
+ r = ((glGetRenderbufferParameterivOES = (PFNGLGETRENDERBUFFERPARAMETERIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetRenderbufferParameterivOES")) == NULL) || r;
+ r = ((glIsFramebufferOES = (PFNGLISFRAMEBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glIsFramebufferOES")) == NULL) || r;
+ r = ((glIsRenderbufferOES = (PFNGLISRENDERBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glIsRenderbufferOES")) == NULL) || r;
+ r = ((glRenderbufferStorageOES = (PFNGLRENDERBUFFERSTORAGEOESPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_framebuffer_object */
+
+#ifdef GL_OES_get_program_binary
+
+static GLboolean _glewInit_GL_OES_get_program_binary ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProgramBinaryOES = (PFNGLGETPROGRAMBINARYOESPROC)glewGetProcAddress((const GLubyte*)"glGetProgramBinaryOES")) == NULL) || r;
+ r = ((glProgramBinaryOES = (PFNGLPROGRAMBINARYOESPROC)glewGetProcAddress((const GLubyte*)"glProgramBinaryOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_get_program_binary */
+
+#ifdef GL_OES_mapbuffer
+
+static GLboolean _glewInit_GL_OES_mapbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetBufferPointervOES = (PFNGLGETBUFFERPOINTERVOESPROC)glewGetProcAddress((const GLubyte*)"glGetBufferPointervOES")) == NULL) || r;
+ r = ((glMapBufferOES = (PFNGLMAPBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glMapBufferOES")) == NULL) || r;
+ r = ((glUnmapBufferOES = (PFNGLUNMAPBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glUnmapBufferOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_mapbuffer */
+
+#ifdef GL_OES_matrix_palette
+
+static GLboolean _glewInit_GL_OES_matrix_palette ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCurrentPaletteMatrixOES = (PFNGLCURRENTPALETTEMATRIXOESPROC)glewGetProcAddress((const GLubyte*)"glCurrentPaletteMatrixOES")) == NULL) || r;
+ r = ((glLoadPaletteFromModelViewMatrixOES = (PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC)glewGetProcAddress((const GLubyte*)"glLoadPaletteFromModelViewMatrixOES")) == NULL) || r;
+ r = ((glMatrixIndexPointerOES = (PFNGLMATRIXINDEXPOINTEROESPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexPointerOES")) == NULL) || r;
+ r = ((glWeightPointerOES = (PFNGLWEIGHTPOINTEROESPROC)glewGetProcAddress((const GLubyte*)"glWeightPointerOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_matrix_palette */
+
+#ifdef GL_OES_sample_shading
+
+static GLboolean _glewInit_GL_OES_sample_shading ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMinSampleShadingOES = (PFNGLMINSAMPLESHADINGOESPROC)glewGetProcAddress((const GLubyte*)"glMinSampleShadingOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_sample_shading */
+
+#ifdef GL_OES_single_precision
+
+static GLboolean _glewInit_GL_OES_single_precision ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)glewGetProcAddress((const GLubyte*)"glClearDepthfOES")) == NULL) || r;
+ r = ((glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)glewGetProcAddress((const GLubyte*)"glClipPlanefOES")) == NULL) || r;
+ r = ((glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)glewGetProcAddress((const GLubyte*)"glDepthRangefOES")) == NULL) || r;
+ r = ((glFrustumfOES = (PFNGLFRUSTUMFOESPROC)glewGetProcAddress((const GLubyte*)"glFrustumfOES")) == NULL) || r;
+ r = ((glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)glewGetProcAddress((const GLubyte*)"glGetClipPlanefOES")) == NULL) || r;
+ r = ((glOrthofOES = (PFNGLORTHOFOESPROC)glewGetProcAddress((const GLubyte*)"glOrthofOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_single_precision */
+
+#ifdef GL_OES_texture_3D
+
+static GLboolean _glewInit_GL_OES_texture_3D ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glCompressedTexImage3DOES = (PFNGLCOMPRESSEDTEXIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3DOES")) == NULL) || r;
+ r = ((glCompressedTexSubImage3DOES = (PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3DOES")) == NULL) || r;
+ r = ((glCopyTexSubImage3DOES = (PFNGLCOPYTEXSUBIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3DOES")) == NULL) || r;
+ r = ((glFramebufferTexture3DOES = (PFNGLFRAMEBUFFERTEXTURE3DOESPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3DOES")) == NULL) || r;
+ r = ((glTexImage3DOES = (PFNGLTEXIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DOES")) == NULL) || r;
+ r = ((glTexSubImage3DOES = (PFNGLTEXSUBIMAGE3DOESPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3DOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_3D */
+
+#ifdef GL_OES_texture_border_clamp
+
+static GLboolean _glewInit_GL_OES_texture_border_clamp ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetSamplerParameterIivOES = (PFNGLGETSAMPLERPARAMETERIIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIivOES")) == NULL) || r;
+ r = ((glGetSamplerParameterIuivOES = (PFNGLGETSAMPLERPARAMETERIUIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIuivOES")) == NULL) || r;
+ r = ((glGetTexParameterIivOES = (PFNGLGETTEXPARAMETERIIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIivOES")) == NULL) || r;
+ r = ((glGetTexParameterIuivOES = (PFNGLGETTEXPARAMETERIUIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIuivOES")) == NULL) || r;
+ r = ((glSamplerParameterIivOES = (PFNGLSAMPLERPARAMETERIIVOESPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIivOES")) == NULL) || r;
+ r = ((glSamplerParameterIuivOES = (PFNGLSAMPLERPARAMETERIUIVOESPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIuivOES")) == NULL) || r;
+ r = ((glTexParameterIivOES = (PFNGLTEXPARAMETERIIVOESPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIivOES")) == NULL) || r;
+ r = ((glTexParameterIuivOES = (PFNGLTEXPARAMETERIUIVOESPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIuivOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_border_clamp */
+
+#ifdef GL_OES_texture_buffer
+
+static GLboolean _glewInit_GL_OES_texture_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexBufferOES = (PFNGLTEXBUFFEROESPROC)glewGetProcAddress((const GLubyte*)"glTexBufferOES")) == NULL) || r;
+ r = ((glTexBufferRangeOES = (PFNGLTEXBUFFERRANGEOESPROC)glewGetProcAddress((const GLubyte*)"glTexBufferRangeOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_buffer */
+
+#ifdef GL_OES_texture_cube_map
+
+static GLboolean _glewInit_GL_OES_texture_cube_map ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTexGenfvOES = (PFNGLGETTEXGENFVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexGenfvOES")) == NULL) || r;
+ r = ((glGetTexGenivOES = (PFNGLGETTEXGENIVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexGenivOES")) == NULL) || r;
+ r = ((glGetTexGenxvOES = (PFNGLGETTEXGENXVOESPROC)glewGetProcAddress((const GLubyte*)"glGetTexGenxvOES")) == NULL) || r;
+ r = ((glTexGenfOES = (PFNGLTEXGENFOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenfOES")) == NULL) || r;
+ r = ((glTexGenfvOES = (PFNGLTEXGENFVOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenfvOES")) == NULL) || r;
+ r = ((glTexGeniOES = (PFNGLTEXGENIOESPROC)glewGetProcAddress((const GLubyte*)"glTexGeniOES")) == NULL) || r;
+ r = ((glTexGenivOES = (PFNGLTEXGENIVOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenivOES")) == NULL) || r;
+ r = ((glTexGenxOES = (PFNGLTEXGENXOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenxOES")) == NULL) || r;
+ r = ((glTexGenxvOES = (PFNGLTEXGENXVOESPROC)glewGetProcAddress((const GLubyte*)"glTexGenxvOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_cube_map */
+
+#ifdef GL_OES_texture_storage_multisample_2d_array
+
+static GLboolean _glewInit_GL_OES_texture_storage_multisample_2d_array ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexStorage3DMultisampleOES = (PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC)glewGetProcAddress((const GLubyte*)"glTexStorage3DMultisampleOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+
+#ifdef GL_OES_texture_view
+
+static GLboolean _glewInit_GL_OES_texture_view ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureViewOES = (PFNGLTEXTUREVIEWOESPROC)glewGetProcAddress((const GLubyte*)"glTextureViewOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_texture_view */
+
+#ifdef GL_OES_vertex_array_object
+
+static GLboolean _glewInit_GL_OES_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOESPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArrayOES")) == NULL) || r;
+ r = ((glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOESPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArraysOES")) == NULL) || r;
+ r = ((glGenVertexArraysOES = (PFNGLGENVERTEXARRAYSOESPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArraysOES")) == NULL) || r;
+ r = ((glIsVertexArrayOES = (PFNGLISVERTEXARRAYOESPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArrayOES")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OES_vertex_array_object */
+
+#ifdef GL_OVR_multiview
+
+static GLboolean _glewInit_GL_OVR_multiview ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureMultiviewOVR")) == NULL) || r;
+ r = ((glNamedFramebufferTextureMultiviewOVR = (PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureMultiviewOVR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OVR_multiview */
+
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+
+static GLboolean _glewInit_GL_OVR_multiview_multisampled_render_to_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferTextureMultisampleMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureMultisampleMultiviewOVR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+
+#ifdef GL_QCOM_alpha_test
+
+static GLboolean _glewInit_GL_QCOM_alpha_test ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAlphaFuncQCOM = (PFNGLALPHAFUNCQCOMPROC)glewGetProcAddress((const GLubyte*)"glAlphaFuncQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_alpha_test */
+
+#ifdef GL_QCOM_driver_control
+
+static GLboolean _glewInit_GL_QCOM_driver_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDisableDriverControlQCOM = (PFNGLDISABLEDRIVERCONTROLQCOMPROC)glewGetProcAddress((const GLubyte*)"glDisableDriverControlQCOM")) == NULL) || r;
+ r = ((glEnableDriverControlQCOM = (PFNGLENABLEDRIVERCONTROLQCOMPROC)glewGetProcAddress((const GLubyte*)"glEnableDriverControlQCOM")) == NULL) || r;
+ r = ((glGetDriverControlStringQCOM = (PFNGLGETDRIVERCONTROLSTRINGQCOMPROC)glewGetProcAddress((const GLubyte*)"glGetDriverControlStringQCOM")) == NULL) || r;
+ r = ((glGetDriverControlsQCOM = (PFNGLGETDRIVERCONTROLSQCOMPROC)glewGetProcAddress((const GLubyte*)"glGetDriverControlsQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_driver_control */
+
+#ifdef GL_QCOM_extended_get
+
+static GLboolean _glewInit_GL_QCOM_extended_get ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glExtGetBufferPointervQCOM = (PFNGLEXTGETBUFFERPOINTERVQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetBufferPointervQCOM")) == NULL) || r;
+ r = ((glExtGetBuffersQCOM = (PFNGLEXTGETBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetBuffersQCOM")) == NULL) || r;
+ r = ((glExtGetFramebuffersQCOM = (PFNGLEXTGETFRAMEBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetFramebuffersQCOM")) == NULL) || r;
+ r = ((glExtGetRenderbuffersQCOM = (PFNGLEXTGETRENDERBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetRenderbuffersQCOM")) == NULL) || r;
+ r = ((glExtGetTexLevelParameterivQCOM = (PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetTexLevelParameterivQCOM")) == NULL) || r;
+ r = ((glExtGetTexSubImageQCOM = (PFNGLEXTGETTEXSUBIMAGEQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetTexSubImageQCOM")) == NULL) || r;
+ r = ((glExtGetTexturesQCOM = (PFNGLEXTGETTEXTURESQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetTexturesQCOM")) == NULL) || r;
+ r = ((glExtTexObjectStateOverrideiQCOM = (PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtTexObjectStateOverrideiQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_extended_get */
+
+#ifdef GL_QCOM_extended_get2
+
+static GLboolean _glewInit_GL_QCOM_extended_get2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glExtGetProgramBinarySourceQCOM = (PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetProgramBinarySourceQCOM")) == NULL) || r;
+ r = ((glExtGetProgramsQCOM = (PFNGLEXTGETPROGRAMSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetProgramsQCOM")) == NULL) || r;
+ r = ((glExtGetShadersQCOM = (PFNGLEXTGETSHADERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtGetShadersQCOM")) == NULL) || r;
+ r = ((glExtIsProgramBinaryQCOM = (PFNGLEXTISPROGRAMBINARYQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtIsProgramBinaryQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_extended_get2 */
+
+#ifdef GL_QCOM_frame_extrapolation
+
+static GLboolean _glewInit_GL_QCOM_frame_extrapolation ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glExtrapolateTex2DQCOM = (PFNGLEXTRAPOLATETEX2DQCOMPROC)glewGetProcAddress((const GLubyte*)"glExtrapolateTex2DQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_frame_extrapolation */
+
+#ifdef GL_QCOM_framebuffer_foveated
+
+static GLboolean _glewInit_GL_QCOM_framebuffer_foveated ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferFoveationConfigQCOM = (PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC)glewGetProcAddress((const GLubyte*)"glFramebufferFoveationConfigQCOM")) == NULL) || r;
+ r = ((glFramebufferFoveationParametersQCOM = (PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glFramebufferFoveationParametersQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_framebuffer_foveated */
+
+#ifdef GL_QCOM_motion_estimation
+
+static GLboolean _glewInit_GL_QCOM_motion_estimation ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexEstimateMotionQCOM = (PFNGLTEXESTIMATEMOTIONQCOMPROC)glewGetProcAddress((const GLubyte*)"glTexEstimateMotionQCOM")) == NULL) || r;
+ r = ((glTexEstimateMotionRegionsQCOM = (PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC)glewGetProcAddress((const GLubyte*)"glTexEstimateMotionRegionsQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_motion_estimation */
+
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+
+static GLboolean _glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFramebufferFetchBarrierQCOM = (PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC)glewGetProcAddress((const GLubyte*)"glFramebufferFetchBarrierQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+
+#ifdef GL_QCOM_shading_rate
+
+static GLboolean _glewInit_GL_QCOM_shading_rate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glShadingRateQCOM = (PFNGLSHADINGRATEQCOMPROC)glewGetProcAddress((const GLubyte*)"glShadingRateQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_shading_rate */
+
+#ifdef GL_QCOM_texture_foveated
+
+static GLboolean _glewInit_GL_QCOM_texture_foveated ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureFoveationParametersQCOM = (PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC)glewGetProcAddress((const GLubyte*)"glTextureFoveationParametersQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_texture_foveated */
+
+#ifdef GL_QCOM_tiled_rendering
+
+static GLboolean _glewInit_GL_QCOM_tiled_rendering ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glEndTilingQCOM = (PFNGLENDTILINGQCOMPROC)glewGetProcAddress((const GLubyte*)"glEndTilingQCOM")) == NULL) || r;
+ r = ((glStartTilingQCOM = (PFNGLSTARTTILINGQCOMPROC)glewGetProcAddress((const GLubyte*)"glStartTilingQCOM")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_QCOM_tiled_rendering */
+
+#ifdef GL_REGAL_ES1_0_compatibility
+
+static GLboolean _glewInit_GL_REGAL_ES1_0_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAlphaFuncx = (PFNGLALPHAFUNCXPROC)glewGetProcAddress((const GLubyte*)"glAlphaFuncx")) == NULL) || r;
+ r = ((glClearColorx = (PFNGLCLEARCOLORXPROC)glewGetProcAddress((const GLubyte*)"glClearColorx")) == NULL) || r;
+ r = ((glClearDepthx = (PFNGLCLEARDEPTHXPROC)glewGetProcAddress((const GLubyte*)"glClearDepthx")) == NULL) || r;
+ r = ((glColor4x = (PFNGLCOLOR4XPROC)glewGetProcAddress((const GLubyte*)"glColor4x")) == NULL) || r;
+ r = ((glDepthRangex = (PFNGLDEPTHRANGEXPROC)glewGetProcAddress((const GLubyte*)"glDepthRangex")) == NULL) || r;
+ r = ((glFogx = (PFNGLFOGXPROC)glewGetProcAddress((const GLubyte*)"glFogx")) == NULL) || r;
+ r = ((glFogxv = (PFNGLFOGXVPROC)glewGetProcAddress((const GLubyte*)"glFogxv")) == NULL) || r;
+ r = ((glFrustumf = (PFNGLFRUSTUMFPROC)glewGetProcAddress((const GLubyte*)"glFrustumf")) == NULL) || r;
+ r = ((glFrustumx = (PFNGLFRUSTUMXPROC)glewGetProcAddress((const GLubyte*)"glFrustumx")) == NULL) || r;
+ r = ((glLightModelx = (PFNGLLIGHTMODELXPROC)glewGetProcAddress((const GLubyte*)"glLightModelx")) == NULL) || r;
+ r = ((glLightModelxv = (PFNGLLIGHTMODELXVPROC)glewGetProcAddress((const GLubyte*)"glLightModelxv")) == NULL) || r;
+ r = ((glLightx = (PFNGLLIGHTXPROC)glewGetProcAddress((const GLubyte*)"glLightx")) == NULL) || r;
+ r = ((glLightxv = (PFNGLLIGHTXVPROC)glewGetProcAddress((const GLubyte*)"glLightxv")) == NULL) || r;
+ r = ((glLineWidthx = (PFNGLLINEWIDTHXPROC)glewGetProcAddress((const GLubyte*)"glLineWidthx")) == NULL) || r;
+ r = ((glLoadMatrixx = (PFNGLLOADMATRIXXPROC)glewGetProcAddress((const GLubyte*)"glLoadMatrixx")) == NULL) || r;
+ r = ((glMaterialx = (PFNGLMATERIALXPROC)glewGetProcAddress((const GLubyte*)"glMaterialx")) == NULL) || r;
+ r = ((glMaterialxv = (PFNGLMATERIALXVPROC)glewGetProcAddress((const GLubyte*)"glMaterialxv")) == NULL) || r;
+ r = ((glMultMatrixx = (PFNGLMULTMATRIXXPROC)glewGetProcAddress((const GLubyte*)"glMultMatrixx")) == NULL) || r;
+ r = ((glMultiTexCoord4x = (PFNGLMULTITEXCOORD4XPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4x")) == NULL) || r;
+ r = ((glNormal3x = (PFNGLNORMAL3XPROC)glewGetProcAddress((const GLubyte*)"glNormal3x")) == NULL) || r;
+ r = ((glOrthof = (PFNGLORTHOFPROC)glewGetProcAddress((const GLubyte*)"glOrthof")) == NULL) || r;
+ r = ((glOrthox = (PFNGLORTHOXPROC)glewGetProcAddress((const GLubyte*)"glOrthox")) == NULL) || r;
+ r = ((glPointSizex = (PFNGLPOINTSIZEXPROC)glewGetProcAddress((const GLubyte*)"glPointSizex")) == NULL) || r;
+ r = ((glPolygonOffsetx = (PFNGLPOLYGONOFFSETXPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetx")) == NULL) || r;
+ r = ((glRotatex = (PFNGLROTATEXPROC)glewGetProcAddress((const GLubyte*)"glRotatex")) == NULL) || r;
+ r = ((glSampleCoveragex = (PFNGLSAMPLECOVERAGEXPROC)glewGetProcAddress((const GLubyte*)"glSampleCoveragex")) == NULL) || r;
+ r = ((glScalex = (PFNGLSCALEXPROC)glewGetProcAddress((const GLubyte*)"glScalex")) == NULL) || r;
+ r = ((glTexEnvx = (PFNGLTEXENVXPROC)glewGetProcAddress((const GLubyte*)"glTexEnvx")) == NULL) || r;
+ r = ((glTexEnvxv = (PFNGLTEXENVXVPROC)glewGetProcAddress((const GLubyte*)"glTexEnvxv")) == NULL) || r;
+ r = ((glTexParameterx = (PFNGLTEXPARAMETERXPROC)glewGetProcAddress((const GLubyte*)"glTexParameterx")) == NULL) || r;
+ r = ((glTranslatex = (PFNGLTRANSLATEXPROC)glewGetProcAddress((const GLubyte*)"glTranslatex")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_ES1_0_compatibility */
+
+#ifdef GL_REGAL_ES1_1_compatibility
+
+static GLboolean _glewInit_GL_REGAL_ES1_1_compatibility ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glClipPlanef = (PFNGLCLIPPLANEFPROC)glewGetProcAddress((const GLubyte*)"glClipPlanef")) == NULL) || r;
+ r = ((glClipPlanex = (PFNGLCLIPPLANEXPROC)glewGetProcAddress((const GLubyte*)"glClipPlanex")) == NULL) || r;
+ r = ((glGetClipPlanef = (PFNGLGETCLIPPLANEFPROC)glewGetProcAddress((const GLubyte*)"glGetClipPlanef")) == NULL) || r;
+ r = ((glGetClipPlanex = (PFNGLGETCLIPPLANEXPROC)glewGetProcAddress((const GLubyte*)"glGetClipPlanex")) == NULL) || r;
+ r = ((glGetFixedv = (PFNGLGETFIXEDVPROC)glewGetProcAddress((const GLubyte*)"glGetFixedv")) == NULL) || r;
+ r = ((glGetLightxv = (PFNGLGETLIGHTXVPROC)glewGetProcAddress((const GLubyte*)"glGetLightxv")) == NULL) || r;
+ r = ((glGetMaterialxv = (PFNGLGETMATERIALXVPROC)glewGetProcAddress((const GLubyte*)"glGetMaterialxv")) == NULL) || r;
+ r = ((glGetTexEnvxv = (PFNGLGETTEXENVXVPROC)glewGetProcAddress((const GLubyte*)"glGetTexEnvxv")) == NULL) || r;
+ r = ((glGetTexParameterxv = (PFNGLGETTEXPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterxv")) == NULL) || r;
+ r = ((glPointParameterx = (PFNGLPOINTPARAMETERXPROC)glewGetProcAddress((const GLubyte*)"glPointParameterx")) == NULL) || r;
+ r = ((glPointParameterxv = (PFNGLPOINTPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)"glPointParameterxv")) == NULL) || r;
+ r = ((glPointSizePointerOES = (PFNGLPOINTSIZEPOINTEROESPROC)glewGetProcAddress((const GLubyte*)"glPointSizePointerOES")) == NULL) || r;
+ r = ((glTexParameterxv = (PFNGLTEXPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)"glTexParameterxv")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_ES1_1_compatibility */
+
+#ifdef GL_REGAL_error_string
+
+static GLboolean _glewInit_GL_REGAL_error_string ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glErrorStringREGAL = (PFNGLERRORSTRINGREGALPROC)glewGetProcAddress((const GLubyte*)"glErrorStringREGAL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_error_string */
+
+#ifdef GL_REGAL_extension_query
+
+static GLboolean _glewInit_GL_REGAL_extension_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetExtensionREGAL = (PFNGLGETEXTENSIONREGALPROC)glewGetProcAddress((const GLubyte*)"glGetExtensionREGAL")) == NULL) || r;
+ r = ((glIsSupportedREGAL = (PFNGLISSUPPORTEDREGALPROC)glewGetProcAddress((const GLubyte*)"glIsSupportedREGAL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_extension_query */
+
+#ifdef GL_REGAL_log
+
+static GLboolean _glewInit_GL_REGAL_log ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glLogMessageCallbackREGAL = (PFNGLLOGMESSAGECALLBACKREGALPROC)glewGetProcAddress((const GLubyte*)"glLogMessageCallbackREGAL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_log */
+
+#ifdef GL_REGAL_proc_address
+
+static GLboolean _glewInit_GL_REGAL_proc_address ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetProcAddressREGAL = (PFNGLGETPROCADDRESSREGALPROC)glewGetProcAddress((const GLubyte*)"glGetProcAddressREGAL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_REGAL_proc_address */
+
+#ifdef GL_SGIS_detail_texture
+
+static GLboolean _glewInit_GL_SGIS_detail_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glDetailTexFuncSGIS")) == NULL) || r;
+ r = ((glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetDetailTexFuncSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_detail_texture */
+
+#ifdef GL_SGIS_fog_function
+
+static GLboolean _glewInit_GL_SGIS_fog_function ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glFogFuncSGIS")) == NULL) || r;
+ r = ((glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetFogFuncSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_fog_function */
+
+#ifdef GL_SGIS_multisample
+
+static GLboolean _glewInit_GL_SGIS_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskSGIS")) == NULL) || r;
+ r = ((glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)glewGetProcAddress((const GLubyte*)"glSamplePatternSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_multisample */
+
+#ifdef GL_SGIS_multitexture
+
+static GLboolean _glewInit_GL_SGIS_multitexture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glInterleavedTextureCoordSetsSGIS = (PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC)glewGetProcAddress((const GLubyte*)"glInterleavedTextureCoordSetsSGIS")) == NULL) || r;
+ r = ((glSelectTextureCoordSetSGIS = (PFNGLSELECTTEXTURECOORDSETSGISPROC)glewGetProcAddress((const GLubyte*)"glSelectTextureCoordSetSGIS")) == NULL) || r;
+ r = ((glSelectTextureSGIS = (PFNGLSELECTTEXTURESGISPROC)glewGetProcAddress((const GLubyte*)"glSelectTextureSGIS")) == NULL) || r;
+ r = ((glSelectTextureTransformSGIS = (PFNGLSELECTTEXTURETRANSFORMSGISPROC)glewGetProcAddress((const GLubyte*)"glSelectTextureTransformSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_multitexture */
+
+#ifdef GL_SGIS_shared_multisample
+
+static GLboolean _glewInit_GL_SGIS_shared_multisample ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMultisampleSubRectPosSGIS = (PFNGLMULTISAMPLESUBRECTPOSSGISPROC)glewGetProcAddress((const GLubyte*)"glMultisampleSubRectPosSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_shared_multisample */
+
+#ifdef GL_SGIS_sharpen_texture
+
+static GLboolean _glewInit_GL_SGIS_sharpen_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetSharpenTexFuncSGIS")) == NULL) || r;
+ r = ((glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glSharpenTexFuncSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_sharpen_texture */
+
+#ifdef GL_SGIS_texture4D
+
+static GLboolean _glewInit_GL_SGIS_texture4D ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)glewGetProcAddress((const GLubyte*)"glTexImage4DSGIS")) == NULL) || r;
+ r = ((glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage4DSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_texture4D */
+
+#ifdef GL_SGIS_texture_filter4
+
+static GLboolean _glewInit_GL_SGIS_texture_filter4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetTexFilterFuncSGIS")) == NULL) || r;
+ r = ((glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glTexFilterFuncSGIS")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIS_texture_filter4 */
+
+#ifdef GL_SGIX_async
+
+static GLboolean _glewInit_GL_SGIX_async ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)glewGetProcAddress((const GLubyte*)"glAsyncMarkerSGIX")) == NULL) || r;
+ r = ((glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeleteAsyncMarkersSGIX")) == NULL) || r;
+ r = ((glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glFinishAsyncSGIX")) == NULL) || r;
+ r = ((glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGenAsyncMarkersSGIX")) == NULL) || r;
+ r = ((glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)glewGetProcAddress((const GLubyte*)"glIsAsyncMarkerSGIX")) == NULL) || r;
+ r = ((glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glPollAsyncSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_async */
+
+#ifdef GL_SGIX_datapipe
+
+static GLboolean _glewInit_GL_SGIX_datapipe ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAddressSpace = (PFNGLADDRESSSPACEPROC)glewGetProcAddress((const GLubyte*)"glAddressSpace")) == NULL) || r;
+ r = ((glDataPipe = (PFNGLDATAPIPEPROC)glewGetProcAddress((const GLubyte*)"glDataPipe")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_datapipe */
+
+#ifdef GL_SGIX_flush_raster
+
+static GLboolean _glewInit_GL_SGIX_flush_raster ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)glewGetProcAddress((const GLubyte*)"glFlushRasterSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_flush_raster */
+
+#ifdef GL_SGIX_fog_layers
+
+static GLboolean _glewInit_GL_SGIX_fog_layers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFogLayersSGIX = (PFNGLFOGLAYERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glFogLayersSGIX")) == NULL) || r;
+ r = ((glGetFogLayersSGIX = (PFNGLGETFOGLAYERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFogLayersSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_fog_layers */
+
+#ifdef GL_SGIX_fog_texture
+
+static GLboolean _glewInit_GL_SGIX_fog_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTextureFogSGIX = (PFNGLTEXTUREFOGSGIXPROC)glewGetProcAddress((const GLubyte*)"glTextureFogSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_fog_texture */
+
+#ifdef GL_SGIX_fragment_specular_lighting
+
+static GLboolean _glewInit_GL_SGIX_fragment_specular_lighting ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentColorMaterialSGIX")) == NULL) || r;
+ r = ((glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfSGIX")) == NULL) || r;
+ r = ((glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfvSGIX")) == NULL) || r;
+ r = ((glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModeliSGIX")) == NULL) || r;
+ r = ((glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelivSGIX")) == NULL) || r;
+ r = ((glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfSGIX")) == NULL) || r;
+ r = ((glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfvSGIX")) == NULL) || r;
+ r = ((glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightiSGIX")) == NULL) || r;
+ r = ((glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightivSGIX")) == NULL) || r;
+ r = ((glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfSGIX")) == NULL) || r;
+ r = ((glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfvSGIX")) == NULL) || r;
+ r = ((glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialiSGIX")) == NULL) || r;
+ r = ((glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialivSGIX")) == NULL) || r;
+ r = ((glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightfvSGIX")) == NULL) || r;
+ r = ((glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightivSGIX")) == NULL) || r;
+ r = ((glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialfvSGIX")) == NULL) || r;
+ r = ((glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialivSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_fragment_specular_lighting */
+
+#ifdef GL_SGIX_framezoom
+
+static GLboolean _glewInit_GL_SGIX_framezoom ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)glewGetProcAddress((const GLubyte*)"glFrameZoomSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_framezoom */
+
+#ifdef GL_SGIX_igloo_interface
+
+static GLboolean _glewInit_GL_SGIX_igloo_interface ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)glewGetProcAddress((const GLubyte*)"glIglooInterfaceSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_igloo_interface */
+
+#ifdef GL_SGIX_mpeg1
+
+static GLboolean _glewInit_GL_SGIX_mpeg1 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAllocMPEGPredictorsSGIX = (PFNGLALLOCMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)"glAllocMPEGPredictorsSGIX")) == NULL) || r;
+ r = ((glDeleteMPEGPredictorsSGIX = (PFNGLDELETEMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeleteMPEGPredictorsSGIX")) == NULL) || r;
+ r = ((glGenMPEGPredictorsSGIX = (PFNGLGENMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGenMPEGPredictorsSGIX")) == NULL) || r;
+ r = ((glGetMPEGParameterfvSGIX = (PFNGLGETMPEGPARAMETERFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetMPEGParameterfvSGIX")) == NULL) || r;
+ r = ((glGetMPEGParameterivSGIX = (PFNGLGETMPEGPARAMETERIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetMPEGParameterivSGIX")) == NULL) || r;
+ r = ((glGetMPEGPredictorSGIX = (PFNGLGETMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetMPEGPredictorSGIX")) == NULL) || r;
+ r = ((glGetMPEGQuantTableubv = (PFNGLGETMPEGQUANTTABLEUBVPROC)glewGetProcAddress((const GLubyte*)"glGetMPEGQuantTableubv")) == NULL) || r;
+ r = ((glIsMPEGPredictorSGIX = (PFNGLISMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)"glIsMPEGPredictorSGIX")) == NULL) || r;
+ r = ((glMPEGPredictorSGIX = (PFNGLMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)"glMPEGPredictorSGIX")) == NULL) || r;
+ r = ((glMPEGQuantTableubv = (PFNGLMPEGQUANTTABLEUBVPROC)glewGetProcAddress((const GLubyte*)"glMPEGQuantTableubv")) == NULL) || r;
+ r = ((glSwapMPEGPredictorsSGIX = (PFNGLSWAPMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)"glSwapMPEGPredictorsSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_mpeg1 */
+
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+
+static GLboolean _glewInit_GL_SGIX_nonlinear_lighting_pervertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetNonlinLightfvSGIX = (PFNGLGETNONLINLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetNonlinLightfvSGIX")) == NULL) || r;
+ r = ((glGetNonlinMaterialfvSGIX = (PFNGLGETNONLINMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetNonlinMaterialfvSGIX")) == NULL) || r;
+ r = ((glNonlinLightfvSGIX = (PFNGLNONLINLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glNonlinLightfvSGIX")) == NULL) || r;
+ r = ((glNonlinMaterialfvSGIX = (PFNGLNONLINMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glNonlinMaterialfvSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+
+#ifdef GL_SGIX_pixel_texture
+
+static GLboolean _glewInit_GL_SGIX_pixel_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)glewGetProcAddress((const GLubyte*)"glPixelTexGenSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_pixel_texture */
+
+#ifdef GL_SGIX_polynomial_ffd
+
+static GLboolean _glewInit_GL_SGIX_polynomial_ffd ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glDeformSGIX = (PFNGLDEFORMSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeformSGIX")) == NULL) || r;
+ r = ((glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)glewGetProcAddress((const GLubyte*)"glLoadIdentityDeformationMapSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_polynomial_ffd */
+
+#ifdef GL_SGIX_quad_mesh
+
+static GLboolean _glewInit_GL_SGIX_quad_mesh ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glMeshBreadthSGIX = (PFNGLMESHBREADTHSGIXPROC)glewGetProcAddress((const GLubyte*)"glMeshBreadthSGIX")) == NULL) || r;
+ r = ((glMeshStrideSGIX = (PFNGLMESHSTRIDESGIXPROC)glewGetProcAddress((const GLubyte*)"glMeshStrideSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_quad_mesh */
+
+#ifdef GL_SGIX_reference_plane
+
+static GLboolean _glewInit_GL_SGIX_reference_plane ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)glewGetProcAddress((const GLubyte*)"glReferencePlaneSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_reference_plane */
+
+#ifdef GL_SGIX_sprite
+
+static GLboolean _glewInit_GL_SGIX_sprite ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterfSGIX")) == NULL) || r;
+ r = ((glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterfvSGIX")) == NULL) || r;
+ r = ((glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameteriSGIX")) == NULL) || r;
+ r = ((glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterivSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_sprite */
+
+#ifdef GL_SGIX_tag_sample_buffer
+
+static GLboolean _glewInit_GL_SGIX_tag_sample_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glTagSampleBufferSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_tag_sample_buffer */
+
+#ifdef GL_SGIX_vector_ops
+
+static GLboolean _glewInit_GL_SGIX_vector_ops ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetVectorOperationSGIX = (PFNGLGETVECTOROPERATIONSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetVectorOperationSGIX")) == NULL) || r;
+ r = ((glVectorOperationSGIX = (PFNGLVECTOROPERATIONSGIXPROC)glewGetProcAddress((const GLubyte*)"glVectorOperationSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_vector_ops */
+
+#ifdef GL_SGIX_vertex_array_object
+
+static GLboolean _glewInit_GL_SGIX_vertex_array_object ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAreVertexArraysResidentSGIX = (PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC)glewGetProcAddress((const GLubyte*)"glAreVertexArraysResidentSGIX")) == NULL) || r;
+ r = ((glBindVertexArraySGIX = (PFNGLBINDVERTEXARRAYSGIXPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArraySGIX")) == NULL) || r;
+ r = ((glDeleteVertexArraysSGIX = (PFNGLDELETEVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArraysSGIX")) == NULL) || r;
+ r = ((glGenVertexArraysSGIX = (PFNGLGENVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArraysSGIX")) == NULL) || r;
+ r = ((glIsVertexArraySGIX = (PFNGLISVERTEXARRAYSGIXPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArraySGIX")) == NULL) || r;
+ r = ((glPrioritizeVertexArraysSGIX = (PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)"glPrioritizeVertexArraysSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGIX_vertex_array_object */
+
+#ifdef GL_SGI_color_table
+
+static GLboolean _glewInit_GL_SGI_color_table ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterfvSGI")) == NULL) || r;
+ r = ((glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterivSGI")) == NULL) || r;
+ r = ((glColorTableSGI = (PFNGLCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableSGI")) == NULL) || r;
+ r = ((glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glCopyColorTableSGI")) == NULL) || r;
+ r = ((glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfvSGI")) == NULL) || r;
+ r = ((glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterivSGI")) == NULL) || r;
+ r = ((glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGI_color_table */
+
+#ifdef GL_SGI_fft
+
+static GLboolean _glewInit_GL_SGI_fft ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGetPixelTransformParameterfvSGI = (PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterfvSGI")) == NULL) || r;
+ r = ((glGetPixelTransformParameterivSGI = (PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterivSGI")) == NULL) || r;
+ r = ((glPixelTransformParameterfSGI = (PFNGLPIXELTRANSFORMPARAMETERFSGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfSGI")) == NULL) || r;
+ r = ((glPixelTransformParameterfvSGI = (PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfvSGI")) == NULL) || r;
+ r = ((glPixelTransformParameteriSGI = (PFNGLPIXELTRANSFORMPARAMETERISGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameteriSGI")) == NULL) || r;
+ r = ((glPixelTransformParameterivSGI = (PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterivSGI")) == NULL) || r;
+ r = ((glPixelTransformSGI = (PFNGLPIXELTRANSFORMSGIPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SGI_fft */
+
+#ifdef GL_SUNX_constant_data
+
+static GLboolean _glewInit_GL_SUNX_constant_data ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)glewGetProcAddress((const GLubyte*)"glFinishTextureSUNX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUNX_constant_data */
+
+#ifdef GL_SUN_global_alpha
+
+static GLboolean _glewInit_GL_SUN_global_alpha ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorbSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactordSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorfSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactoriSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorsSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorubSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactoruiSUN")) == NULL) || r;
+ r = ((glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorusSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUN_global_alpha */
+
+#ifdef GL_SUN_read_video_pixels
+
+static GLboolean _glewInit_GL_SUN_read_video_pixels ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glReadVideoPixelsSUN = (PFNGLREADVIDEOPIXELSSUNPROC)glewGetProcAddress((const GLubyte*)"glReadVideoPixelsSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUN_read_video_pixels */
+
+#ifdef GL_SUN_triangle_list
+
+static GLboolean _glewInit_GL_SUN_triangle_list ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodePointerSUN")) == NULL) || r;
+ r = ((glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeubSUN")) == NULL) || r;
+ r = ((glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeubvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiSUN")) == NULL) || r;
+ r = ((glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuivSUN")) == NULL) || r;
+ r = ((glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeusSUN")) == NULL) || r;
+ r = ((glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeusvSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUN_triangle_list */
+
+#ifdef GL_SUN_vertex
+
+static GLboolean _glewInit_GL_SUN_vertex ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor3fVertex3fSUN")) == NULL) || r;
+ r = ((glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor3fVertex3fvSUN")) == NULL) || r;
+ r = ((glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex2fSUN")) == NULL) || r;
+ r = ((glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex2fvSUN")) == NULL) || r;
+ r = ((glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex3fSUN")) == NULL) || r;
+ r = ((glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex3fvSUN")) == NULL) || r;
+ r = ((glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4ubVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4ubVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fVertex3fvSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiVertex3fSUN")) == NULL) || r;
+ r = ((glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor3fVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor3fVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4ubVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4ubVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fNormal3fVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fNormal3fVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fVertex3fSUN")) == NULL) || r;
+ r = ((glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fVertex3fvSUN")) == NULL) || r;
+ r = ((glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fColor4fNormal3fVertex4fSUN")) == NULL) || r;
+ r = ((glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fColor4fNormal3fVertex4fvSUN")) == NULL) || r;
+ r = ((glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fVertex4fSUN")) == NULL) || r;
+ r = ((glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fVertex4fvSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_SUN_vertex */
+
+#ifdef GL_WIN_swap_hint
+
+static GLboolean _glewInit_GL_WIN_swap_hint ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glAddSwapHintRectWIN = (PFNGLADDSWAPHINTRECTWINPROC)glewGetProcAddress((const GLubyte*)"glAddSwapHintRectWIN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GL_WIN_swap_hint */
+
+/* ------------------------------------------------------------------------- */
+
+static int _glewExtensionCompare(const char *s1, const char *s2)
+{
+ /* http://www.chanduthedev.com/2012/07/strcmp-implementation-in-c.html */
+ while (*s1 || *s2)
+ {
+ if (*s1 > *s2)
+ return 1;
+ if (*s1 < *s2)
+ return -1;
+ s1++;
+ s2++;
+ }
+ return 0;
+}
+
+static ptrdiff_t _glewBsearchExtension(const char* name)
+{
+ ptrdiff_t lo = 0, hi = sizeof(_glewExtensionLookup) / sizeof(char*) - 2;
+
+ while (lo <= hi)
+ {
+ ptrdiff_t mid = (lo + hi) / 2;
+ const int cmp = _glewExtensionCompare(name, _glewExtensionLookup[mid]);
+ if (cmp < 0) hi = mid - 1;
+ else if (cmp > 0) lo = mid + 1;
+ else return mid;
+ }
+ return -1;
+}
+
+static GLboolean *_glewGetExtensionString(const char *name)
+{
+ ptrdiff_t n = _glewBsearchExtension(name);
+ if (n >= 0) return &_glewExtensionString[n];
+ return NULL;
+}
+
+static GLboolean *_glewGetExtensionEnable(const char *name)
+{
+ ptrdiff_t n = _glewBsearchExtension(name);
+ if (n >= 0) return _glewExtensionEnabled[n];
+ return NULL;
+}
+
+static const char *_glewNextSpace(const char *i)
+{
+ const char *j = i;
+ if (j)
+ while (*j!=' ' && *j) ++j;
+ return j;
+}
+
+static const char *_glewNextNonSpace(const char *i)
+{
+ const char *j = i;
+ if (j)
+ while (*j==' ') ++j;
+ return j;
+}
+
+GLboolean GLEWAPIENTRY glewGetExtension (const char* name)
+{
+ GLboolean *enable = _glewGetExtensionString(name);
+ if (enable)
+ return *enable;
+ return GL_FALSE;
+}
+
+/* ------------------------------------------------------------------------- */
+
+typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
+typedef void (GLAPIENTRY * PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);
+
+GLenum GLEWAPIENTRY glewContextInit (void)
+{
+ PFNGLGETSTRINGPROC getString;
+ const GLubyte* s;
+ GLuint dot;
+ GLint major, minor;
+
+ #ifdef _WIN32
+ getString = glGetString;
+ #else
+ getString = (PFNGLGETSTRINGPROC) glewGetProcAddress((const GLubyte*)"glGetString");
+ if (!getString)
+ return GLEW_ERROR_NO_GL_VERSION;
+ #endif
+
+ /* query opengl version */
+ s = getString(GL_VERSION);
+ dot = _glewStrCLen(s, '.');
+ if (dot == 0)
+ return GLEW_ERROR_NO_GL_VERSION;
+
+ major = s[dot-1]-'0';
+ minor = s[dot+1]-'0';
+
+ if (minor < 0 || minor > 9)
+ minor = 0;
+ if (major<0 || major>9)
+ return GLEW_ERROR_NO_GL_VERSION;
+
+ if (major == 1 && minor == 0)
+ {
+ return GLEW_ERROR_GL_VERSION_10_ONLY;
+ }
+ else
+ {
+ GLEW_VERSION_4_6 = ( major > 4 ) || ( major == 4 && minor >= 6 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_5 = GLEW_VERSION_4_6 == GL_TRUE || ( major == 4 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_4 = GLEW_VERSION_4_5 == GL_TRUE || ( major == 4 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_3 = GLEW_VERSION_4_4 == GL_TRUE || ( major == 4 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_2 = GLEW_VERSION_4_3 == GL_TRUE || ( major == 4 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_1 = GLEW_VERSION_4_2 == GL_TRUE || ( major == 4 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_4_0 = GLEW_VERSION_4_1 == GL_TRUE || ( major == 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_3 = GLEW_VERSION_4_0 == GL_TRUE || ( major == 3 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_2 = GLEW_VERSION_3_3 == GL_TRUE || ( major == 3 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_1 = GLEW_VERSION_3_2 == GL_TRUE || ( major == 3 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_3_0 = GLEW_VERSION_3_1 == GL_TRUE || ( major == 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_2_1 = GLEW_VERSION_3_0 == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_2_0 = GLEW_VERSION_2_1 == GL_TRUE || ( major == 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_5 = GLEW_VERSION_2_0 == GL_TRUE || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_4 = GLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_3 = GLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_2_1 = GLEW_VERSION_1_3 == GL_TRUE ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_2 = GLEW_VERSION_1_2_1 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ GLEW_VERSION_1_1 = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ }
+
+ {
+ size_t i;
+ for (i = 0; i < sizeof(_glewExtensionString) / sizeof(_glewExtensionString[0]); ++i)
+ _glewExtensionString[i] = GL_FALSE;
+ }
+
+ if (GLEW_VERSION_3_0)
+ {
+ GLint n = 0;
+ GLint i;
+ PFNGLGETINTEGERVPROC getIntegerv;
+ PFNGLGETSTRINGIPROC getStringi;
+ const char *ext;
+ GLboolean *enable;
+
+ #ifdef _WIN32
+ getIntegerv = glGetIntegerv;
+ #else
+ getIntegerv = (PFNGLGETINTEGERVPROC) glewGetProcAddress((const GLubyte*)"glGetIntegerv");
+ #endif
+
+ if (getIntegerv)
+ getIntegerv(GL_NUM_EXTENSIONS, &n);
+
+ /* glGetStringi is OpenGL 3.0 */
+ getStringi = (PFNGLGETSTRINGIPROC) glewGetProcAddress((const GLubyte*)"glGetStringi");
+ if (getStringi)
+ for (i = 0; i<n; ++i)
+ {
+ ext = (const char *) getStringi(GL_EXTENSIONS, i);
+
+ /* Based on extension string(s), glewGetExtension purposes */
+ enable = _glewGetExtensionString(ext);
+ if (enable)
+ *enable = GL_TRUE;
+
+ /* Based on extension string(s), experimental mode, glewIsSupported purposes */
+ enable = _glewGetExtensionEnable(ext);
+ if (enable)
+ *enable = GL_TRUE;
+ }
+ }
+ else
+ {
+ const char *extensions;
+ const char *end;
+ const char *i;
+ const char *j;
+ char ext[128];
+ GLboolean *enable;
+
+ extensions = (const char *) getString(GL_EXTENSIONS);
+
+ if (extensions)
+ {
+ end = extensions + _glewStrLen((const GLubyte *) extensions);
+ for (i=extensions; i<end; i = j + 1)
+ {
+ i = _glewNextNonSpace(i);
+ j = _glewNextSpace(i);
+
+ /* Copy extension into NUL terminated string */
+ if (j-i >= (ptrdiff_t) sizeof(ext))
+ continue;
+ _glewStrCopy(ext, i, ' ');
+
+ /* Based on extension string(s), glewGetExtension purposes */
+ enable = _glewGetExtensionString(ext);
+ if (enable)
+ *enable = GL_TRUE;
+
+ /* Based on extension string(s), experimental mode, glewIsSupported purposes */
+ enable = _glewGetExtensionEnable(ext);
+ if (enable)
+ *enable = GL_TRUE;
+ }
+ }
+ }
+#ifdef GL_VERSION_1_2
+ if (glewExperimental || GLEW_VERSION_1_2) GLEW_VERSION_1_2 = !_glewInit_GL_VERSION_1_2();
+#endif /* GL_VERSION_1_2 */
+#ifdef GL_VERSION_1_3
+ if (glewExperimental || GLEW_VERSION_1_3) GLEW_VERSION_1_3 = !_glewInit_GL_VERSION_1_3();
+#endif /* GL_VERSION_1_3 */
+#ifdef GL_VERSION_1_4
+ if (glewExperimental || GLEW_VERSION_1_4) GLEW_VERSION_1_4 = !_glewInit_GL_VERSION_1_4();
+#endif /* GL_VERSION_1_4 */
+#ifdef GL_VERSION_1_5
+ if (glewExperimental || GLEW_VERSION_1_5) GLEW_VERSION_1_5 = !_glewInit_GL_VERSION_1_5();
+#endif /* GL_VERSION_1_5 */
+#ifdef GL_VERSION_2_0
+ if (glewExperimental || GLEW_VERSION_2_0) GLEW_VERSION_2_0 = !_glewInit_GL_VERSION_2_0();
+#endif /* GL_VERSION_2_0 */
+#ifdef GL_VERSION_2_1
+ if (glewExperimental || GLEW_VERSION_2_1) GLEW_VERSION_2_1 = !_glewInit_GL_VERSION_2_1();
+#endif /* GL_VERSION_2_1 */
+#ifdef GL_VERSION_3_0
+ if (glewExperimental || GLEW_VERSION_3_0) GLEW_VERSION_3_0 = !_glewInit_GL_VERSION_3_0();
+#endif /* GL_VERSION_3_0 */
+#ifdef GL_VERSION_3_1
+ if (glewExperimental || GLEW_VERSION_3_1) GLEW_VERSION_3_1 = !_glewInit_GL_VERSION_3_1();
+#endif /* GL_VERSION_3_1 */
+#ifdef GL_VERSION_3_2
+ if (glewExperimental || GLEW_VERSION_3_2) GLEW_VERSION_3_2 = !_glewInit_GL_VERSION_3_2();
+#endif /* GL_VERSION_3_2 */
+#ifdef GL_VERSION_3_3
+ if (glewExperimental || GLEW_VERSION_3_3) GLEW_VERSION_3_3 = !_glewInit_GL_VERSION_3_3();
+#endif /* GL_VERSION_3_3 */
+#ifdef GL_VERSION_4_0
+ if (glewExperimental || GLEW_VERSION_4_0) GLEW_VERSION_4_0 = !_glewInit_GL_VERSION_4_0();
+#endif /* GL_VERSION_4_0 */
+#ifdef GL_VERSION_4_5
+ if (glewExperimental || GLEW_VERSION_4_5) GLEW_VERSION_4_5 = !_glewInit_GL_VERSION_4_5();
+#endif /* GL_VERSION_4_5 */
+#ifdef GL_VERSION_4_6
+ if (glewExperimental || GLEW_VERSION_4_6) GLEW_VERSION_4_6 = !_glewInit_GL_VERSION_4_6();
+#endif /* GL_VERSION_4_6 */
+#ifdef GL_3DFX_tbuffer
+ if (glewExperimental || GLEW_3DFX_tbuffer) GLEW_3DFX_tbuffer = !_glewInit_GL_3DFX_tbuffer();
+#endif /* GL_3DFX_tbuffer */
+#ifdef GL_AMD_debug_output
+ if (glewExperimental || GLEW_AMD_debug_output) GLEW_AMD_debug_output = !_glewInit_GL_AMD_debug_output();
+#endif /* GL_AMD_debug_output */
+#ifdef GL_AMD_draw_buffers_blend
+ if (glewExperimental || GLEW_AMD_draw_buffers_blend) GLEW_AMD_draw_buffers_blend = !_glewInit_GL_AMD_draw_buffers_blend();
+#endif /* GL_AMD_draw_buffers_blend */
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ if (glewExperimental || GLEW_AMD_framebuffer_multisample_advanced) GLEW_AMD_framebuffer_multisample_advanced = !_glewInit_GL_AMD_framebuffer_multisample_advanced();
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+#ifdef GL_AMD_framebuffer_sample_positions
+ if (glewExperimental || GLEW_AMD_framebuffer_sample_positions) GLEW_AMD_framebuffer_sample_positions = !_glewInit_GL_AMD_framebuffer_sample_positions();
+#endif /* GL_AMD_framebuffer_sample_positions */
+#ifdef GL_AMD_interleaved_elements
+ if (glewExperimental || GLEW_AMD_interleaved_elements) GLEW_AMD_interleaved_elements = !_glewInit_GL_AMD_interleaved_elements();
+#endif /* GL_AMD_interleaved_elements */
+#ifdef GL_AMD_multi_draw_indirect
+ if (glewExperimental || GLEW_AMD_multi_draw_indirect) GLEW_AMD_multi_draw_indirect = !_glewInit_GL_AMD_multi_draw_indirect();
+#endif /* GL_AMD_multi_draw_indirect */
+#ifdef GL_AMD_name_gen_delete
+ if (glewExperimental || GLEW_AMD_name_gen_delete) GLEW_AMD_name_gen_delete = !_glewInit_GL_AMD_name_gen_delete();
+#endif /* GL_AMD_name_gen_delete */
+#ifdef GL_AMD_occlusion_query_event
+ if (glewExperimental || GLEW_AMD_occlusion_query_event) GLEW_AMD_occlusion_query_event = !_glewInit_GL_AMD_occlusion_query_event();
+#endif /* GL_AMD_occlusion_query_event */
+#ifdef GL_AMD_performance_monitor
+ if (glewExperimental || GLEW_AMD_performance_monitor) GLEW_AMD_performance_monitor = !_glewInit_GL_AMD_performance_monitor();
+#endif /* GL_AMD_performance_monitor */
+#ifdef GL_AMD_sample_positions
+ if (glewExperimental || GLEW_AMD_sample_positions) GLEW_AMD_sample_positions = !_glewInit_GL_AMD_sample_positions();
+#endif /* GL_AMD_sample_positions */
+#ifdef GL_AMD_sparse_texture
+ if (glewExperimental || GLEW_AMD_sparse_texture) GLEW_AMD_sparse_texture = !_glewInit_GL_AMD_sparse_texture();
+#endif /* GL_AMD_sparse_texture */
+#ifdef GL_AMD_stencil_operation_extended
+ if (glewExperimental || GLEW_AMD_stencil_operation_extended) GLEW_AMD_stencil_operation_extended = !_glewInit_GL_AMD_stencil_operation_extended();
+#endif /* GL_AMD_stencil_operation_extended */
+#ifdef GL_AMD_vertex_shader_tessellator
+ if (glewExperimental || GLEW_AMD_vertex_shader_tessellator) GLEW_AMD_vertex_shader_tessellator = !_glewInit_GL_AMD_vertex_shader_tessellator();
+#endif /* GL_AMD_vertex_shader_tessellator */
+#ifdef GL_ANGLE_framebuffer_blit
+ if (glewExperimental || GLEW_ANGLE_framebuffer_blit) GLEW_ANGLE_framebuffer_blit = !_glewInit_GL_ANGLE_framebuffer_blit();
+#endif /* GL_ANGLE_framebuffer_blit */
+#ifdef GL_ANGLE_framebuffer_multisample
+ if (glewExperimental || GLEW_ANGLE_framebuffer_multisample) GLEW_ANGLE_framebuffer_multisample = !_glewInit_GL_ANGLE_framebuffer_multisample();
+#endif /* GL_ANGLE_framebuffer_multisample */
+#ifdef GL_ANGLE_instanced_arrays
+ if (glewExperimental || GLEW_ANGLE_instanced_arrays) GLEW_ANGLE_instanced_arrays = !_glewInit_GL_ANGLE_instanced_arrays();
+#endif /* GL_ANGLE_instanced_arrays */
+#ifdef GL_ANGLE_timer_query
+ if (glewExperimental || GLEW_ANGLE_timer_query) GLEW_ANGLE_timer_query = !_glewInit_GL_ANGLE_timer_query();
+#endif /* GL_ANGLE_timer_query */
+#ifdef GL_ANGLE_translated_shader_source
+ if (glewExperimental || GLEW_ANGLE_translated_shader_source) GLEW_ANGLE_translated_shader_source = !_glewInit_GL_ANGLE_translated_shader_source();
+#endif /* GL_ANGLE_translated_shader_source */
+#ifdef GL_APPLE_copy_texture_levels
+ if (glewExperimental || GLEW_APPLE_copy_texture_levels) GLEW_APPLE_copy_texture_levels = !_glewInit_GL_APPLE_copy_texture_levels();
+#endif /* GL_APPLE_copy_texture_levels */
+#ifdef GL_APPLE_element_array
+ if (glewExperimental || GLEW_APPLE_element_array) GLEW_APPLE_element_array = !_glewInit_GL_APPLE_element_array();
+#endif /* GL_APPLE_element_array */
+#ifdef GL_APPLE_fence
+ if (glewExperimental || GLEW_APPLE_fence) GLEW_APPLE_fence = !_glewInit_GL_APPLE_fence();
+#endif /* GL_APPLE_fence */
+#ifdef GL_APPLE_flush_buffer_range
+ if (glewExperimental || GLEW_APPLE_flush_buffer_range) GLEW_APPLE_flush_buffer_range = !_glewInit_GL_APPLE_flush_buffer_range();
+#endif /* GL_APPLE_flush_buffer_range */
+#ifdef GL_APPLE_framebuffer_multisample
+ if (glewExperimental || GLEW_APPLE_framebuffer_multisample) GLEW_APPLE_framebuffer_multisample = !_glewInit_GL_APPLE_framebuffer_multisample();
+#endif /* GL_APPLE_framebuffer_multisample */
+#ifdef GL_APPLE_object_purgeable
+ if (glewExperimental || GLEW_APPLE_object_purgeable) GLEW_APPLE_object_purgeable = !_glewInit_GL_APPLE_object_purgeable();
+#endif /* GL_APPLE_object_purgeable */
+#ifdef GL_APPLE_sync
+ if (glewExperimental || GLEW_APPLE_sync) GLEW_APPLE_sync = !_glewInit_GL_APPLE_sync();
+#endif /* GL_APPLE_sync */
+#ifdef GL_APPLE_texture_range
+ if (glewExperimental || GLEW_APPLE_texture_range) GLEW_APPLE_texture_range = !_glewInit_GL_APPLE_texture_range();
+#endif /* GL_APPLE_texture_range */
+#ifdef GL_APPLE_vertex_array_object
+ if (glewExperimental || GLEW_APPLE_vertex_array_object) GLEW_APPLE_vertex_array_object = !_glewInit_GL_APPLE_vertex_array_object();
+#endif /* GL_APPLE_vertex_array_object */
+#ifdef GL_APPLE_vertex_array_range
+ if (glewExperimental || GLEW_APPLE_vertex_array_range) GLEW_APPLE_vertex_array_range = !_glewInit_GL_APPLE_vertex_array_range();
+#endif /* GL_APPLE_vertex_array_range */
+#ifdef GL_APPLE_vertex_program_evaluators
+ if (glewExperimental || GLEW_APPLE_vertex_program_evaluators) GLEW_APPLE_vertex_program_evaluators = !_glewInit_GL_APPLE_vertex_program_evaluators();
+#endif /* GL_APPLE_vertex_program_evaluators */
+#ifdef GL_ARB_ES2_compatibility
+ if (glewExperimental || GLEW_ARB_ES2_compatibility) GLEW_ARB_ES2_compatibility = !_glewInit_GL_ARB_ES2_compatibility();
+#endif /* GL_ARB_ES2_compatibility */
+#ifdef GL_ARB_ES3_1_compatibility
+ if (glewExperimental || GLEW_ARB_ES3_1_compatibility) GLEW_ARB_ES3_1_compatibility = !_glewInit_GL_ARB_ES3_1_compatibility();
+#endif /* GL_ARB_ES3_1_compatibility */
+#ifdef GL_ARB_ES3_2_compatibility
+ if (glewExperimental || GLEW_ARB_ES3_2_compatibility) GLEW_ARB_ES3_2_compatibility = !_glewInit_GL_ARB_ES3_2_compatibility();
+#endif /* GL_ARB_ES3_2_compatibility */
+#ifdef GL_ARB_base_instance
+ if (glewExperimental || GLEW_ARB_base_instance) GLEW_ARB_base_instance = !_glewInit_GL_ARB_base_instance();
+#endif /* GL_ARB_base_instance */
+#ifdef GL_ARB_bindless_texture
+ if (glewExperimental || GLEW_ARB_bindless_texture) GLEW_ARB_bindless_texture = !_glewInit_GL_ARB_bindless_texture();
+#endif /* GL_ARB_bindless_texture */
+#ifdef GL_ARB_blend_func_extended
+ if (glewExperimental || GLEW_ARB_blend_func_extended) GLEW_ARB_blend_func_extended = !_glewInit_GL_ARB_blend_func_extended();
+#endif /* GL_ARB_blend_func_extended */
+#ifdef GL_ARB_buffer_storage
+ if (glewExperimental || GLEW_ARB_buffer_storage) GLEW_ARB_buffer_storage = !_glewInit_GL_ARB_buffer_storage();
+#endif /* GL_ARB_buffer_storage */
+#ifdef GL_ARB_cl_event
+ if (glewExperimental || GLEW_ARB_cl_event) GLEW_ARB_cl_event = !_glewInit_GL_ARB_cl_event();
+#endif /* GL_ARB_cl_event */
+#ifdef GL_ARB_clear_buffer_object
+ if (glewExperimental || GLEW_ARB_clear_buffer_object) GLEW_ARB_clear_buffer_object = !_glewInit_GL_ARB_clear_buffer_object();
+#endif /* GL_ARB_clear_buffer_object */
+#ifdef GL_ARB_clear_texture
+ if (glewExperimental || GLEW_ARB_clear_texture) GLEW_ARB_clear_texture = !_glewInit_GL_ARB_clear_texture();
+#endif /* GL_ARB_clear_texture */
+#ifdef GL_ARB_clip_control
+ if (glewExperimental || GLEW_ARB_clip_control) GLEW_ARB_clip_control = !_glewInit_GL_ARB_clip_control();
+#endif /* GL_ARB_clip_control */
+#ifdef GL_ARB_color_buffer_float
+ if (glewExperimental || GLEW_ARB_color_buffer_float) GLEW_ARB_color_buffer_float = !_glewInit_GL_ARB_color_buffer_float();
+#endif /* GL_ARB_color_buffer_float */
+#ifdef GL_ARB_compute_shader
+ if (glewExperimental || GLEW_ARB_compute_shader) GLEW_ARB_compute_shader = !_glewInit_GL_ARB_compute_shader();
+#endif /* GL_ARB_compute_shader */
+#ifdef GL_ARB_compute_variable_group_size
+ if (glewExperimental || GLEW_ARB_compute_variable_group_size) GLEW_ARB_compute_variable_group_size = !_glewInit_GL_ARB_compute_variable_group_size();
+#endif /* GL_ARB_compute_variable_group_size */
+#ifdef GL_ARB_copy_buffer
+ if (glewExperimental || GLEW_ARB_copy_buffer) GLEW_ARB_copy_buffer = !_glewInit_GL_ARB_copy_buffer();
+#endif /* GL_ARB_copy_buffer */
+#ifdef GL_ARB_copy_image
+ if (glewExperimental || GLEW_ARB_copy_image) GLEW_ARB_copy_image = !_glewInit_GL_ARB_copy_image();
+#endif /* GL_ARB_copy_image */
+#ifdef GL_ARB_debug_output
+ if (glewExperimental || GLEW_ARB_debug_output) GLEW_ARB_debug_output = !_glewInit_GL_ARB_debug_output();
+#endif /* GL_ARB_debug_output */
+#ifdef GL_ARB_direct_state_access
+ if (glewExperimental || GLEW_ARB_direct_state_access) GLEW_ARB_direct_state_access = !_glewInit_GL_ARB_direct_state_access();
+#endif /* GL_ARB_direct_state_access */
+#ifdef GL_ARB_draw_buffers
+ if (glewExperimental || GLEW_ARB_draw_buffers) GLEW_ARB_draw_buffers = !_glewInit_GL_ARB_draw_buffers();
+#endif /* GL_ARB_draw_buffers */
+#ifdef GL_ARB_draw_buffers_blend
+ if (glewExperimental || GLEW_ARB_draw_buffers_blend) GLEW_ARB_draw_buffers_blend = !_glewInit_GL_ARB_draw_buffers_blend();
+#endif /* GL_ARB_draw_buffers_blend */
+#ifdef GL_ARB_draw_elements_base_vertex
+ if (glewExperimental || GLEW_ARB_draw_elements_base_vertex) GLEW_ARB_draw_elements_base_vertex = !_glewInit_GL_ARB_draw_elements_base_vertex();
+#endif /* GL_ARB_draw_elements_base_vertex */
+#ifdef GL_ARB_draw_indirect
+ if (glewExperimental || GLEW_ARB_draw_indirect) GLEW_ARB_draw_indirect = !_glewInit_GL_ARB_draw_indirect();
+#endif /* GL_ARB_draw_indirect */
+#ifdef GL_ARB_framebuffer_no_attachments
+ if (glewExperimental || GLEW_ARB_framebuffer_no_attachments) GLEW_ARB_framebuffer_no_attachments = !_glewInit_GL_ARB_framebuffer_no_attachments();
+#endif /* GL_ARB_framebuffer_no_attachments */
+#ifdef GL_ARB_framebuffer_object
+ if (glewExperimental || GLEW_ARB_framebuffer_object) GLEW_ARB_framebuffer_object = !_glewInit_GL_ARB_framebuffer_object();
+#endif /* GL_ARB_framebuffer_object */
+#ifdef GL_ARB_geometry_shader4
+ if (glewExperimental || GLEW_ARB_geometry_shader4) GLEW_ARB_geometry_shader4 = !_glewInit_GL_ARB_geometry_shader4();
+#endif /* GL_ARB_geometry_shader4 */
+#ifdef GL_ARB_get_program_binary
+ if (glewExperimental || GLEW_ARB_get_program_binary) GLEW_ARB_get_program_binary = !_glewInit_GL_ARB_get_program_binary();
+#endif /* GL_ARB_get_program_binary */
+#ifdef GL_ARB_get_texture_sub_image
+ if (glewExperimental || GLEW_ARB_get_texture_sub_image) GLEW_ARB_get_texture_sub_image = !_glewInit_GL_ARB_get_texture_sub_image();
+#endif /* GL_ARB_get_texture_sub_image */
+#ifdef GL_ARB_gl_spirv
+ if (glewExperimental || GLEW_ARB_gl_spirv) GLEW_ARB_gl_spirv = !_glewInit_GL_ARB_gl_spirv();
+#endif /* GL_ARB_gl_spirv */
+#ifdef GL_ARB_gpu_shader_fp64
+ if (glewExperimental || GLEW_ARB_gpu_shader_fp64) GLEW_ARB_gpu_shader_fp64 = !_glewInit_GL_ARB_gpu_shader_fp64();
+#endif /* GL_ARB_gpu_shader_fp64 */
+#ifdef GL_ARB_gpu_shader_int64
+ if (glewExperimental || GLEW_ARB_gpu_shader_int64) GLEW_ARB_gpu_shader_int64 = !_glewInit_GL_ARB_gpu_shader_int64();
+#endif /* GL_ARB_gpu_shader_int64 */
+#ifdef GL_ARB_imaging
+ if (glewExperimental || GLEW_ARB_imaging) GLEW_ARB_imaging = !_glewInit_GL_ARB_imaging();
+#endif /* GL_ARB_imaging */
+#ifdef GL_ARB_indirect_parameters
+ if (glewExperimental || GLEW_ARB_indirect_parameters) GLEW_ARB_indirect_parameters = !_glewInit_GL_ARB_indirect_parameters();
+#endif /* GL_ARB_indirect_parameters */
+#ifdef GL_ARB_instanced_arrays
+ if (glewExperimental || GLEW_ARB_instanced_arrays) GLEW_ARB_instanced_arrays = !_glewInit_GL_ARB_instanced_arrays();
+#endif /* GL_ARB_instanced_arrays */
+#ifdef GL_ARB_internalformat_query
+ if (glewExperimental || GLEW_ARB_internalformat_query) GLEW_ARB_internalformat_query = !_glewInit_GL_ARB_internalformat_query();
+#endif /* GL_ARB_internalformat_query */
+#ifdef GL_ARB_internalformat_query2
+ if (glewExperimental || GLEW_ARB_internalformat_query2) GLEW_ARB_internalformat_query2 = !_glewInit_GL_ARB_internalformat_query2();
+#endif /* GL_ARB_internalformat_query2 */
+#ifdef GL_ARB_invalidate_subdata
+ if (glewExperimental || GLEW_ARB_invalidate_subdata) GLEW_ARB_invalidate_subdata = !_glewInit_GL_ARB_invalidate_subdata();
+#endif /* GL_ARB_invalidate_subdata */
+#ifdef GL_ARB_map_buffer_range
+ if (glewExperimental || GLEW_ARB_map_buffer_range) GLEW_ARB_map_buffer_range = !_glewInit_GL_ARB_map_buffer_range();
+#endif /* GL_ARB_map_buffer_range */
+#ifdef GL_ARB_matrix_palette
+ if (glewExperimental || GLEW_ARB_matrix_palette) GLEW_ARB_matrix_palette = !_glewInit_GL_ARB_matrix_palette();
+#endif /* GL_ARB_matrix_palette */
+#ifdef GL_ARB_multi_bind
+ if (glewExperimental || GLEW_ARB_multi_bind) GLEW_ARB_multi_bind = !_glewInit_GL_ARB_multi_bind();
+#endif /* GL_ARB_multi_bind */
+#ifdef GL_ARB_multi_draw_indirect
+ if (glewExperimental || GLEW_ARB_multi_draw_indirect) GLEW_ARB_multi_draw_indirect = !_glewInit_GL_ARB_multi_draw_indirect();
+#endif /* GL_ARB_multi_draw_indirect */
+#ifdef GL_ARB_multisample
+ if (glewExperimental || GLEW_ARB_multisample) GLEW_ARB_multisample = !_glewInit_GL_ARB_multisample();
+#endif /* GL_ARB_multisample */
+#ifdef GL_ARB_multitexture
+ if (glewExperimental || GLEW_ARB_multitexture) GLEW_ARB_multitexture = !_glewInit_GL_ARB_multitexture();
+#endif /* GL_ARB_multitexture */
+#ifdef GL_ARB_occlusion_query
+ if (glewExperimental || GLEW_ARB_occlusion_query) GLEW_ARB_occlusion_query = !_glewInit_GL_ARB_occlusion_query();
+#endif /* GL_ARB_occlusion_query */
+#ifdef GL_ARB_parallel_shader_compile
+ if (glewExperimental || GLEW_ARB_parallel_shader_compile) GLEW_ARB_parallel_shader_compile = !_glewInit_GL_ARB_parallel_shader_compile();
+#endif /* GL_ARB_parallel_shader_compile */
+#ifdef GL_ARB_point_parameters
+ if (glewExperimental || GLEW_ARB_point_parameters) GLEW_ARB_point_parameters = !_glewInit_GL_ARB_point_parameters();
+#endif /* GL_ARB_point_parameters */
+#ifdef GL_ARB_polygon_offset_clamp
+ if (glewExperimental || GLEW_ARB_polygon_offset_clamp) GLEW_ARB_polygon_offset_clamp = !_glewInit_GL_ARB_polygon_offset_clamp();
+#endif /* GL_ARB_polygon_offset_clamp */
+#ifdef GL_ARB_program_interface_query
+ if (glewExperimental || GLEW_ARB_program_interface_query) GLEW_ARB_program_interface_query = !_glewInit_GL_ARB_program_interface_query();
+#endif /* GL_ARB_program_interface_query */
+#ifdef GL_ARB_provoking_vertex
+ if (glewExperimental || GLEW_ARB_provoking_vertex) GLEW_ARB_provoking_vertex = !_glewInit_GL_ARB_provoking_vertex();
+#endif /* GL_ARB_provoking_vertex */
+#ifdef GL_ARB_robustness
+ if (glewExperimental || GLEW_ARB_robustness) GLEW_ARB_robustness = !_glewInit_GL_ARB_robustness();
+#endif /* GL_ARB_robustness */
+#ifdef GL_ARB_sample_locations
+ if (glewExperimental || GLEW_ARB_sample_locations) GLEW_ARB_sample_locations = !_glewInit_GL_ARB_sample_locations();
+#endif /* GL_ARB_sample_locations */
+#ifdef GL_ARB_sample_shading
+ if (glewExperimental || GLEW_ARB_sample_shading) GLEW_ARB_sample_shading = !_glewInit_GL_ARB_sample_shading();
+#endif /* GL_ARB_sample_shading */
+#ifdef GL_ARB_sampler_objects
+ if (glewExperimental || GLEW_ARB_sampler_objects) GLEW_ARB_sampler_objects = !_glewInit_GL_ARB_sampler_objects();
+#endif /* GL_ARB_sampler_objects */
+#ifdef GL_ARB_separate_shader_objects
+ if (glewExperimental || GLEW_ARB_separate_shader_objects) GLEW_ARB_separate_shader_objects = !_glewInit_GL_ARB_separate_shader_objects();
+#endif /* GL_ARB_separate_shader_objects */
+#ifdef GL_ARB_shader_atomic_counters
+ if (glewExperimental || GLEW_ARB_shader_atomic_counters) GLEW_ARB_shader_atomic_counters = !_glewInit_GL_ARB_shader_atomic_counters();
+#endif /* GL_ARB_shader_atomic_counters */
+#ifdef GL_ARB_shader_image_load_store
+ if (glewExperimental || GLEW_ARB_shader_image_load_store) GLEW_ARB_shader_image_load_store = !_glewInit_GL_ARB_shader_image_load_store();
+#endif /* GL_ARB_shader_image_load_store */
+#ifdef GL_ARB_shader_objects
+ if (glewExperimental || GLEW_ARB_shader_objects) GLEW_ARB_shader_objects = !_glewInit_GL_ARB_shader_objects();
+#endif /* GL_ARB_shader_objects */
+#ifdef GL_ARB_shader_storage_buffer_object
+ if (glewExperimental || GLEW_ARB_shader_storage_buffer_object) GLEW_ARB_shader_storage_buffer_object = !_glewInit_GL_ARB_shader_storage_buffer_object();
+#endif /* GL_ARB_shader_storage_buffer_object */
+#ifdef GL_ARB_shader_subroutine
+ if (glewExperimental || GLEW_ARB_shader_subroutine) GLEW_ARB_shader_subroutine = !_glewInit_GL_ARB_shader_subroutine();
+#endif /* GL_ARB_shader_subroutine */
+#ifdef GL_ARB_shading_language_include
+ if (glewExperimental || GLEW_ARB_shading_language_include) GLEW_ARB_shading_language_include = !_glewInit_GL_ARB_shading_language_include();
+#endif /* GL_ARB_shading_language_include */
+#ifdef GL_ARB_sparse_buffer
+ if (glewExperimental || GLEW_ARB_sparse_buffer) GLEW_ARB_sparse_buffer = !_glewInit_GL_ARB_sparse_buffer();
+#endif /* GL_ARB_sparse_buffer */
+#ifdef GL_ARB_sparse_texture
+ if (glewExperimental || GLEW_ARB_sparse_texture) GLEW_ARB_sparse_texture = !_glewInit_GL_ARB_sparse_texture();
+#endif /* GL_ARB_sparse_texture */
+#ifdef GL_ARB_sync
+ if (glewExperimental || GLEW_ARB_sync) GLEW_ARB_sync = !_glewInit_GL_ARB_sync();
+#endif /* GL_ARB_sync */
+#ifdef GL_ARB_tessellation_shader
+ if (glewExperimental || GLEW_ARB_tessellation_shader) GLEW_ARB_tessellation_shader = !_glewInit_GL_ARB_tessellation_shader();
+#endif /* GL_ARB_tessellation_shader */
+#ifdef GL_ARB_texture_barrier
+ if (glewExperimental || GLEW_ARB_texture_barrier) GLEW_ARB_texture_barrier = !_glewInit_GL_ARB_texture_barrier();
+#endif /* GL_ARB_texture_barrier */
+#ifdef GL_ARB_texture_buffer_object
+ if (glewExperimental || GLEW_ARB_texture_buffer_object) GLEW_ARB_texture_buffer_object = !_glewInit_GL_ARB_texture_buffer_object();
+#endif /* GL_ARB_texture_buffer_object */
+#ifdef GL_ARB_texture_buffer_range
+ if (glewExperimental || GLEW_ARB_texture_buffer_range) GLEW_ARB_texture_buffer_range = !_glewInit_GL_ARB_texture_buffer_range();
+#endif /* GL_ARB_texture_buffer_range */
+#ifdef GL_ARB_texture_compression
+ if (glewExperimental || GLEW_ARB_texture_compression) GLEW_ARB_texture_compression = !_glewInit_GL_ARB_texture_compression();
+#endif /* GL_ARB_texture_compression */
+#ifdef GL_ARB_texture_multisample
+ if (glewExperimental || GLEW_ARB_texture_multisample) GLEW_ARB_texture_multisample = !_glewInit_GL_ARB_texture_multisample();
+#endif /* GL_ARB_texture_multisample */
+#ifdef GL_ARB_texture_storage
+ if (glewExperimental || GLEW_ARB_texture_storage) GLEW_ARB_texture_storage = !_glewInit_GL_ARB_texture_storage();
+#endif /* GL_ARB_texture_storage */
+#ifdef GL_ARB_texture_storage_multisample
+ if (glewExperimental || GLEW_ARB_texture_storage_multisample) GLEW_ARB_texture_storage_multisample = !_glewInit_GL_ARB_texture_storage_multisample();
+#endif /* GL_ARB_texture_storage_multisample */
+#ifdef GL_ARB_texture_view
+ if (glewExperimental || GLEW_ARB_texture_view) GLEW_ARB_texture_view = !_glewInit_GL_ARB_texture_view();
+#endif /* GL_ARB_texture_view */
+#ifdef GL_ARB_timer_query
+ if (glewExperimental || GLEW_ARB_timer_query) GLEW_ARB_timer_query = !_glewInit_GL_ARB_timer_query();
+#endif /* GL_ARB_timer_query */
+#ifdef GL_ARB_transform_feedback2
+ if (glewExperimental || GLEW_ARB_transform_feedback2) GLEW_ARB_transform_feedback2 = !_glewInit_GL_ARB_transform_feedback2();
+#endif /* GL_ARB_transform_feedback2 */
+#ifdef GL_ARB_transform_feedback3
+ if (glewExperimental || GLEW_ARB_transform_feedback3) GLEW_ARB_transform_feedback3 = !_glewInit_GL_ARB_transform_feedback3();
+#endif /* GL_ARB_transform_feedback3 */
+#ifdef GL_ARB_transform_feedback_instanced
+ if (glewExperimental || GLEW_ARB_transform_feedback_instanced) GLEW_ARB_transform_feedback_instanced = !_glewInit_GL_ARB_transform_feedback_instanced();
+#endif /* GL_ARB_transform_feedback_instanced */
+#ifdef GL_ARB_transpose_matrix
+ if (glewExperimental || GLEW_ARB_transpose_matrix) GLEW_ARB_transpose_matrix = !_glewInit_GL_ARB_transpose_matrix();
+#endif /* GL_ARB_transpose_matrix */
+#ifdef GL_ARB_uniform_buffer_object
+ if (glewExperimental || GLEW_ARB_uniform_buffer_object) GLEW_ARB_uniform_buffer_object = !_glewInit_GL_ARB_uniform_buffer_object();
+#endif /* GL_ARB_uniform_buffer_object */
+#ifdef GL_ARB_vertex_array_object
+ if (glewExperimental || GLEW_ARB_vertex_array_object) GLEW_ARB_vertex_array_object = !_glewInit_GL_ARB_vertex_array_object();
+#endif /* GL_ARB_vertex_array_object */
+#ifdef GL_ARB_vertex_attrib_64bit
+ if (glewExperimental || GLEW_ARB_vertex_attrib_64bit) GLEW_ARB_vertex_attrib_64bit = !_glewInit_GL_ARB_vertex_attrib_64bit();
+#endif /* GL_ARB_vertex_attrib_64bit */
+#ifdef GL_ARB_vertex_attrib_binding
+ if (glewExperimental || GLEW_ARB_vertex_attrib_binding) GLEW_ARB_vertex_attrib_binding = !_glewInit_GL_ARB_vertex_attrib_binding();
+#endif /* GL_ARB_vertex_attrib_binding */
+#ifdef GL_ARB_vertex_blend
+ if (glewExperimental || GLEW_ARB_vertex_blend) GLEW_ARB_vertex_blend = !_glewInit_GL_ARB_vertex_blend();
+#endif /* GL_ARB_vertex_blend */
+#ifdef GL_ARB_vertex_buffer_object
+ if (glewExperimental || GLEW_ARB_vertex_buffer_object) GLEW_ARB_vertex_buffer_object = !_glewInit_GL_ARB_vertex_buffer_object();
+#endif /* GL_ARB_vertex_buffer_object */
+#ifdef GL_ARB_vertex_program
+ if (glewExperimental || GLEW_ARB_vertex_program) GLEW_ARB_vertex_program = !_glewInit_GL_ARB_vertex_program();
+#endif /* GL_ARB_vertex_program */
+#ifdef GL_ARB_vertex_shader
+ if (glewExperimental || GLEW_ARB_vertex_shader) { GLEW_ARB_vertex_shader = !_glewInit_GL_ARB_vertex_shader(); _glewInit_GL_ARB_vertex_program(); }
+#endif /* GL_ARB_vertex_shader */
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ if (glewExperimental || GLEW_ARB_vertex_type_2_10_10_10_rev) GLEW_ARB_vertex_type_2_10_10_10_rev = !_glewInit_GL_ARB_vertex_type_2_10_10_10_rev();
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+#ifdef GL_ARB_viewport_array
+ if (glewExperimental || GLEW_ARB_viewport_array) GLEW_ARB_viewport_array = !_glewInit_GL_ARB_viewport_array();
+#endif /* GL_ARB_viewport_array */
+#ifdef GL_ARB_window_pos
+ if (glewExperimental || GLEW_ARB_window_pos) GLEW_ARB_window_pos = !_glewInit_GL_ARB_window_pos();
+#endif /* GL_ARB_window_pos */
+#ifdef GL_ATI_draw_buffers
+ if (glewExperimental || GLEW_ATI_draw_buffers) GLEW_ATI_draw_buffers = !_glewInit_GL_ATI_draw_buffers();
+#endif /* GL_ATI_draw_buffers */
+#ifdef GL_ATI_element_array
+ if (glewExperimental || GLEW_ATI_element_array) GLEW_ATI_element_array = !_glewInit_GL_ATI_element_array();
+#endif /* GL_ATI_element_array */
+#ifdef GL_ATI_envmap_bumpmap
+ if (glewExperimental || GLEW_ATI_envmap_bumpmap) GLEW_ATI_envmap_bumpmap = !_glewInit_GL_ATI_envmap_bumpmap();
+#endif /* GL_ATI_envmap_bumpmap */
+#ifdef GL_ATI_fragment_shader
+ if (glewExperimental || GLEW_ATI_fragment_shader) GLEW_ATI_fragment_shader = !_glewInit_GL_ATI_fragment_shader();
+#endif /* GL_ATI_fragment_shader */
+#ifdef GL_ATI_map_object_buffer
+ if (glewExperimental || GLEW_ATI_map_object_buffer) GLEW_ATI_map_object_buffer = !_glewInit_GL_ATI_map_object_buffer();
+#endif /* GL_ATI_map_object_buffer */
+#ifdef GL_ATI_pn_triangles
+ if (glewExperimental || GLEW_ATI_pn_triangles) GLEW_ATI_pn_triangles = !_glewInit_GL_ATI_pn_triangles();
+#endif /* GL_ATI_pn_triangles */
+#ifdef GL_ATI_separate_stencil
+ if (glewExperimental || GLEW_ATI_separate_stencil) GLEW_ATI_separate_stencil = !_glewInit_GL_ATI_separate_stencil();
+#endif /* GL_ATI_separate_stencil */
+#ifdef GL_ATI_vertex_array_object
+ if (glewExperimental || GLEW_ATI_vertex_array_object) GLEW_ATI_vertex_array_object = !_glewInit_GL_ATI_vertex_array_object();
+#endif /* GL_ATI_vertex_array_object */
+#ifdef GL_ATI_vertex_attrib_array_object
+ if (glewExperimental || GLEW_ATI_vertex_attrib_array_object) GLEW_ATI_vertex_attrib_array_object = !_glewInit_GL_ATI_vertex_attrib_array_object();
+#endif /* GL_ATI_vertex_attrib_array_object */
+#ifdef GL_ATI_vertex_streams
+ if (glewExperimental || GLEW_ATI_vertex_streams) GLEW_ATI_vertex_streams = !_glewInit_GL_ATI_vertex_streams();
+#endif /* GL_ATI_vertex_streams */
+#ifdef GL_EXT_EGL_image_storage
+ if (glewExperimental || GLEW_EXT_EGL_image_storage) GLEW_EXT_EGL_image_storage = !_glewInit_GL_EXT_EGL_image_storage();
+#endif /* GL_EXT_EGL_image_storage */
+#ifdef GL_EXT_base_instance
+ if (glewExperimental || GLEW_EXT_base_instance) GLEW_EXT_base_instance = !_glewInit_GL_EXT_base_instance();
+#endif /* GL_EXT_base_instance */
+#ifdef GL_EXT_bindable_uniform
+ if (glewExperimental || GLEW_EXT_bindable_uniform) GLEW_EXT_bindable_uniform = !_glewInit_GL_EXT_bindable_uniform();
+#endif /* GL_EXT_bindable_uniform */
+#ifdef GL_EXT_blend_color
+ if (glewExperimental || GLEW_EXT_blend_color) GLEW_EXT_blend_color = !_glewInit_GL_EXT_blend_color();
+#endif /* GL_EXT_blend_color */
+#ifdef GL_EXT_blend_equation_separate
+ if (glewExperimental || GLEW_EXT_blend_equation_separate) GLEW_EXT_blend_equation_separate = !_glewInit_GL_EXT_blend_equation_separate();
+#endif /* GL_EXT_blend_equation_separate */
+#ifdef GL_EXT_blend_func_extended
+ if (glewExperimental || GLEW_EXT_blend_func_extended) GLEW_EXT_blend_func_extended = !_glewInit_GL_EXT_blend_func_extended();
+#endif /* GL_EXT_blend_func_extended */
+#ifdef GL_EXT_blend_func_separate
+ if (glewExperimental || GLEW_EXT_blend_func_separate) GLEW_EXT_blend_func_separate = !_glewInit_GL_EXT_blend_func_separate();
+#endif /* GL_EXT_blend_func_separate */
+#ifdef GL_EXT_blend_minmax
+ if (glewExperimental || GLEW_EXT_blend_minmax) GLEW_EXT_blend_minmax = !_glewInit_GL_EXT_blend_minmax();
+#endif /* GL_EXT_blend_minmax */
+#ifdef GL_EXT_buffer_storage
+ if (glewExperimental || GLEW_EXT_buffer_storage) GLEW_EXT_buffer_storage = !_glewInit_GL_EXT_buffer_storage();
+#endif /* GL_EXT_buffer_storage */
+#ifdef GL_EXT_clear_texture
+ if (glewExperimental || GLEW_EXT_clear_texture) GLEW_EXT_clear_texture = !_glewInit_GL_EXT_clear_texture();
+#endif /* GL_EXT_clear_texture */
+#ifdef GL_EXT_clip_control
+ if (glewExperimental || GLEW_EXT_clip_control) GLEW_EXT_clip_control = !_glewInit_GL_EXT_clip_control();
+#endif /* GL_EXT_clip_control */
+#ifdef GL_EXT_color_subtable
+ if (glewExperimental || GLEW_EXT_color_subtable) GLEW_EXT_color_subtable = !_glewInit_GL_EXT_color_subtable();
+#endif /* GL_EXT_color_subtable */
+#ifdef GL_EXT_compiled_vertex_array
+ if (glewExperimental || GLEW_EXT_compiled_vertex_array) GLEW_EXT_compiled_vertex_array = !_glewInit_GL_EXT_compiled_vertex_array();
+#endif /* GL_EXT_compiled_vertex_array */
+#ifdef GL_EXT_convolution
+ if (glewExperimental || GLEW_EXT_convolution) GLEW_EXT_convolution = !_glewInit_GL_EXT_convolution();
+#endif /* GL_EXT_convolution */
+#ifdef GL_EXT_coordinate_frame
+ if (glewExperimental || GLEW_EXT_coordinate_frame) GLEW_EXT_coordinate_frame = !_glewInit_GL_EXT_coordinate_frame();
+#endif /* GL_EXT_coordinate_frame */
+#ifdef GL_EXT_copy_image
+ if (glewExperimental || GLEW_EXT_copy_image) GLEW_EXT_copy_image = !_glewInit_GL_EXT_copy_image();
+#endif /* GL_EXT_copy_image */
+#ifdef GL_EXT_copy_texture
+ if (glewExperimental || GLEW_EXT_copy_texture) GLEW_EXT_copy_texture = !_glewInit_GL_EXT_copy_texture();
+#endif /* GL_EXT_copy_texture */
+#ifdef GL_EXT_cull_vertex
+ if (glewExperimental || GLEW_EXT_cull_vertex) GLEW_EXT_cull_vertex = !_glewInit_GL_EXT_cull_vertex();
+#endif /* GL_EXT_cull_vertex */
+#ifdef GL_EXT_debug_label
+ if (glewExperimental || GLEW_EXT_debug_label) GLEW_EXT_debug_label = !_glewInit_GL_EXT_debug_label();
+#endif /* GL_EXT_debug_label */
+#ifdef GL_EXT_debug_marker
+ if (glewExperimental || GLEW_EXT_debug_marker) GLEW_EXT_debug_marker = !_glewInit_GL_EXT_debug_marker();
+#endif /* GL_EXT_debug_marker */
+#ifdef GL_EXT_depth_bounds_test
+ if (glewExperimental || GLEW_EXT_depth_bounds_test) GLEW_EXT_depth_bounds_test = !_glewInit_GL_EXT_depth_bounds_test();
+#endif /* GL_EXT_depth_bounds_test */
+#ifdef GL_EXT_direct_state_access
+ if (glewExperimental || GLEW_EXT_direct_state_access) GLEW_EXT_direct_state_access = !_glewInit_GL_EXT_direct_state_access();
+#endif /* GL_EXT_direct_state_access */
+#ifdef GL_EXT_discard_framebuffer
+ if (glewExperimental || GLEW_EXT_discard_framebuffer) GLEW_EXT_discard_framebuffer = !_glewInit_GL_EXT_discard_framebuffer();
+#endif /* GL_EXT_discard_framebuffer */
+#ifdef GL_EXT_disjoint_timer_query
+ if (glewExperimental || GLEW_EXT_disjoint_timer_query) GLEW_EXT_disjoint_timer_query = !_glewInit_GL_EXT_disjoint_timer_query();
+#endif /* GL_EXT_disjoint_timer_query */
+#ifdef GL_EXT_draw_buffers
+ if (glewExperimental || GLEW_EXT_draw_buffers) GLEW_EXT_draw_buffers = !_glewInit_GL_EXT_draw_buffers();
+#endif /* GL_EXT_draw_buffers */
+#ifdef GL_EXT_draw_buffers2
+ if (glewExperimental || GLEW_EXT_draw_buffers2) GLEW_EXT_draw_buffers2 = !_glewInit_GL_EXT_draw_buffers2();
+#endif /* GL_EXT_draw_buffers2 */
+#ifdef GL_EXT_draw_buffers_indexed
+ if (glewExperimental || GLEW_EXT_draw_buffers_indexed) GLEW_EXT_draw_buffers_indexed = !_glewInit_GL_EXT_draw_buffers_indexed();
+#endif /* GL_EXT_draw_buffers_indexed */
+#ifdef GL_EXT_draw_elements_base_vertex
+ if (glewExperimental || GLEW_EXT_draw_elements_base_vertex) GLEW_EXT_draw_elements_base_vertex = !_glewInit_GL_EXT_draw_elements_base_vertex();
+#endif /* GL_EXT_draw_elements_base_vertex */
+#ifdef GL_EXT_draw_instanced
+ if (glewExperimental || GLEW_EXT_draw_instanced) GLEW_EXT_draw_instanced = !_glewInit_GL_EXT_draw_instanced();
+#endif /* GL_EXT_draw_instanced */
+#ifdef GL_EXT_draw_range_elements
+ if (glewExperimental || GLEW_EXT_draw_range_elements) GLEW_EXT_draw_range_elements = !_glewInit_GL_EXT_draw_range_elements();
+#endif /* GL_EXT_draw_range_elements */
+#ifdef GL_EXT_draw_transform_feedback
+ if (glewExperimental || GLEW_EXT_draw_transform_feedback) GLEW_EXT_draw_transform_feedback = !_glewInit_GL_EXT_draw_transform_feedback();
+#endif /* GL_EXT_draw_transform_feedback */
+#ifdef GL_EXT_external_buffer
+ if (glewExperimental || GLEW_EXT_external_buffer) GLEW_EXT_external_buffer = !_glewInit_GL_EXT_external_buffer();
+#endif /* GL_EXT_external_buffer */
+#ifdef GL_EXT_fog_coord
+ if (glewExperimental || GLEW_EXT_fog_coord) GLEW_EXT_fog_coord = !_glewInit_GL_EXT_fog_coord();
+#endif /* GL_EXT_fog_coord */
+#ifdef GL_EXT_fragment_lighting
+ if (glewExperimental || GLEW_EXT_fragment_lighting) GLEW_EXT_fragment_lighting = !_glewInit_GL_EXT_fragment_lighting();
+#endif /* GL_EXT_fragment_lighting */
+#ifdef GL_EXT_framebuffer_blit
+ if (glewExperimental || GLEW_EXT_framebuffer_blit) GLEW_EXT_framebuffer_blit = !_glewInit_GL_EXT_framebuffer_blit();
+#endif /* GL_EXT_framebuffer_blit */
+#ifdef GL_EXT_framebuffer_multisample
+ if (glewExperimental || GLEW_EXT_framebuffer_multisample) GLEW_EXT_framebuffer_multisample = !_glewInit_GL_EXT_framebuffer_multisample();
+#endif /* GL_EXT_framebuffer_multisample */
+#ifdef GL_EXT_framebuffer_object
+ if (glewExperimental || GLEW_EXT_framebuffer_object) GLEW_EXT_framebuffer_object = !_glewInit_GL_EXT_framebuffer_object();
+#endif /* GL_EXT_framebuffer_object */
+#ifdef GL_EXT_geometry_shader4
+ if (glewExperimental || GLEW_EXT_geometry_shader4) GLEW_EXT_geometry_shader4 = !_glewInit_GL_EXT_geometry_shader4();
+#endif /* GL_EXT_geometry_shader4 */
+#ifdef GL_EXT_gpu_program_parameters
+ if (glewExperimental || GLEW_EXT_gpu_program_parameters) GLEW_EXT_gpu_program_parameters = !_glewInit_GL_EXT_gpu_program_parameters();
+#endif /* GL_EXT_gpu_program_parameters */
+#ifdef GL_EXT_gpu_shader4
+ if (glewExperimental || GLEW_EXT_gpu_shader4) GLEW_EXT_gpu_shader4 = !_glewInit_GL_EXT_gpu_shader4();
+#endif /* GL_EXT_gpu_shader4 */
+#ifdef GL_EXT_histogram
+ if (glewExperimental || GLEW_EXT_histogram) GLEW_EXT_histogram = !_glewInit_GL_EXT_histogram();
+#endif /* GL_EXT_histogram */
+#ifdef GL_EXT_index_func
+ if (glewExperimental || GLEW_EXT_index_func) GLEW_EXT_index_func = !_glewInit_GL_EXT_index_func();
+#endif /* GL_EXT_index_func */
+#ifdef GL_EXT_index_material
+ if (glewExperimental || GLEW_EXT_index_material) GLEW_EXT_index_material = !_glewInit_GL_EXT_index_material();
+#endif /* GL_EXT_index_material */
+#ifdef GL_EXT_instanced_arrays
+ if (glewExperimental || GLEW_EXT_instanced_arrays) GLEW_EXT_instanced_arrays = !_glewInit_GL_EXT_instanced_arrays();
+#endif /* GL_EXT_instanced_arrays */
+#ifdef GL_EXT_light_texture
+ if (glewExperimental || GLEW_EXT_light_texture) GLEW_EXT_light_texture = !_glewInit_GL_EXT_light_texture();
+#endif /* GL_EXT_light_texture */
+#ifdef GL_EXT_map_buffer_range
+ if (glewExperimental || GLEW_EXT_map_buffer_range) GLEW_EXT_map_buffer_range = !_glewInit_GL_EXT_map_buffer_range();
+#endif /* GL_EXT_map_buffer_range */
+#ifdef GL_EXT_memory_object
+ if (glewExperimental || GLEW_EXT_memory_object) GLEW_EXT_memory_object = !_glewInit_GL_EXT_memory_object();
+#endif /* GL_EXT_memory_object */
+#ifdef GL_EXT_memory_object_fd
+ if (glewExperimental || GLEW_EXT_memory_object_fd) GLEW_EXT_memory_object_fd = !_glewInit_GL_EXT_memory_object_fd();
+#endif /* GL_EXT_memory_object_fd */
+#ifdef GL_EXT_memory_object_win32
+ if (glewExperimental || GLEW_EXT_memory_object_win32) GLEW_EXT_memory_object_win32 = !_glewInit_GL_EXT_memory_object_win32();
+#endif /* GL_EXT_memory_object_win32 */
+#ifdef GL_EXT_multi_draw_arrays
+ if (glewExperimental || GLEW_EXT_multi_draw_arrays) GLEW_EXT_multi_draw_arrays = !_glewInit_GL_EXT_multi_draw_arrays();
+#endif /* GL_EXT_multi_draw_arrays */
+#ifdef GL_EXT_multi_draw_indirect
+ if (glewExperimental || GLEW_EXT_multi_draw_indirect) GLEW_EXT_multi_draw_indirect = !_glewInit_GL_EXT_multi_draw_indirect();
+#endif /* GL_EXT_multi_draw_indirect */
+#ifdef GL_EXT_multisample
+ if (glewExperimental || GLEW_EXT_multisample) GLEW_EXT_multisample = !_glewInit_GL_EXT_multisample();
+#endif /* GL_EXT_multisample */
+#ifdef GL_EXT_multisampled_render_to_texture
+ if (glewExperimental || GLEW_EXT_multisampled_render_to_texture) GLEW_EXT_multisampled_render_to_texture = !_glewInit_GL_EXT_multisampled_render_to_texture();
+#endif /* GL_EXT_multisampled_render_to_texture */
+#ifdef GL_EXT_multiview_draw_buffers
+ if (glewExperimental || GLEW_EXT_multiview_draw_buffers) GLEW_EXT_multiview_draw_buffers = !_glewInit_GL_EXT_multiview_draw_buffers();
+#endif /* GL_EXT_multiview_draw_buffers */
+#ifdef GL_EXT_paletted_texture
+ if (glewExperimental || GLEW_EXT_paletted_texture) GLEW_EXT_paletted_texture = !_glewInit_GL_EXT_paletted_texture();
+#endif /* GL_EXT_paletted_texture */
+#ifdef GL_EXT_pixel_transform
+ if (glewExperimental || GLEW_EXT_pixel_transform) GLEW_EXT_pixel_transform = !_glewInit_GL_EXT_pixel_transform();
+#endif /* GL_EXT_pixel_transform */
+#ifdef GL_EXT_point_parameters
+ if (glewExperimental || GLEW_EXT_point_parameters) GLEW_EXT_point_parameters = !_glewInit_GL_EXT_point_parameters();
+#endif /* GL_EXT_point_parameters */
+#ifdef GL_EXT_polygon_offset
+ if (glewExperimental || GLEW_EXT_polygon_offset) GLEW_EXT_polygon_offset = !_glewInit_GL_EXT_polygon_offset();
+#endif /* GL_EXT_polygon_offset */
+#ifdef GL_EXT_polygon_offset_clamp
+ if (glewExperimental || GLEW_EXT_polygon_offset_clamp) GLEW_EXT_polygon_offset_clamp = !_glewInit_GL_EXT_polygon_offset_clamp();
+#endif /* GL_EXT_polygon_offset_clamp */
+#ifdef GL_EXT_primitive_bounding_box
+ if (glewExperimental || GLEW_EXT_primitive_bounding_box) GLEW_EXT_primitive_bounding_box = !_glewInit_GL_EXT_primitive_bounding_box();
+#endif /* GL_EXT_primitive_bounding_box */
+#ifdef GL_EXT_provoking_vertex
+ if (glewExperimental || GLEW_EXT_provoking_vertex) GLEW_EXT_provoking_vertex = !_glewInit_GL_EXT_provoking_vertex();
+#endif /* GL_EXT_provoking_vertex */
+#ifdef GL_EXT_raster_multisample
+ if (glewExperimental || GLEW_EXT_raster_multisample) GLEW_EXT_raster_multisample = !_glewInit_GL_EXT_raster_multisample();
+#endif /* GL_EXT_raster_multisample */
+#ifdef GL_EXT_robustness
+ if (glewExperimental || GLEW_EXT_robustness) GLEW_EXT_robustness = !_glewInit_GL_EXT_robustness();
+#endif /* GL_EXT_robustness */
+#ifdef GL_EXT_scene_marker
+ if (glewExperimental || GLEW_EXT_scene_marker) GLEW_EXT_scene_marker = !_glewInit_GL_EXT_scene_marker();
+#endif /* GL_EXT_scene_marker */
+#ifdef GL_EXT_secondary_color
+ if (glewExperimental || GLEW_EXT_secondary_color) GLEW_EXT_secondary_color = !_glewInit_GL_EXT_secondary_color();
+#endif /* GL_EXT_secondary_color */
+#ifdef GL_EXT_semaphore
+ if (glewExperimental || GLEW_EXT_semaphore) GLEW_EXT_semaphore = !_glewInit_GL_EXT_semaphore();
+#endif /* GL_EXT_semaphore */
+#ifdef GL_EXT_semaphore_fd
+ if (glewExperimental || GLEW_EXT_semaphore_fd) GLEW_EXT_semaphore_fd = !_glewInit_GL_EXT_semaphore_fd();
+#endif /* GL_EXT_semaphore_fd */
+#ifdef GL_EXT_semaphore_win32
+ if (glewExperimental || GLEW_EXT_semaphore_win32) GLEW_EXT_semaphore_win32 = !_glewInit_GL_EXT_semaphore_win32();
+#endif /* GL_EXT_semaphore_win32 */
+#ifdef GL_EXT_separate_shader_objects
+ if (glewExperimental || GLEW_EXT_separate_shader_objects) GLEW_EXT_separate_shader_objects = !_glewInit_GL_EXT_separate_shader_objects();
+#endif /* GL_EXT_separate_shader_objects */
+#ifdef GL_EXT_shader_framebuffer_fetch
+ if (glewExperimental || GLEW_EXT_shader_framebuffer_fetch) GLEW_EXT_shader_framebuffer_fetch = !_glewInit_GL_EXT_shader_framebuffer_fetch();
+#endif /* GL_EXT_shader_framebuffer_fetch */
+#ifdef GL_EXT_shader_image_load_store
+ if (glewExperimental || GLEW_EXT_shader_image_load_store) GLEW_EXT_shader_image_load_store = !_glewInit_GL_EXT_shader_image_load_store();
+#endif /* GL_EXT_shader_image_load_store */
+#ifdef GL_EXT_shader_pixel_local_storage2
+ if (glewExperimental || GLEW_EXT_shader_pixel_local_storage2) GLEW_EXT_shader_pixel_local_storage2 = !_glewInit_GL_EXT_shader_pixel_local_storage2();
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+#ifdef GL_EXT_sparse_texture
+ if (glewExperimental || GLEW_EXT_sparse_texture) GLEW_EXT_sparse_texture = !_glewInit_GL_EXT_sparse_texture();
+#endif /* GL_EXT_sparse_texture */
+#ifdef GL_EXT_stencil_two_side
+ if (glewExperimental || GLEW_EXT_stencil_two_side) GLEW_EXT_stencil_two_side = !_glewInit_GL_EXT_stencil_two_side();
+#endif /* GL_EXT_stencil_two_side */
+#ifdef GL_EXT_subtexture
+ if (glewExperimental || GLEW_EXT_subtexture) GLEW_EXT_subtexture = !_glewInit_GL_EXT_subtexture();
+#endif /* GL_EXT_subtexture */
+#ifdef GL_EXT_tessellation_point_size
+ if (glewExperimental || GLEW_EXT_tessellation_point_size) GLEW_EXT_tessellation_point_size = !_glewInit_GL_EXT_tessellation_point_size();
+#endif /* GL_EXT_tessellation_point_size */
+#ifdef GL_EXT_texture3D
+ if (glewExperimental || GLEW_EXT_texture3D) GLEW_EXT_texture3D = !_glewInit_GL_EXT_texture3D();
+#endif /* GL_EXT_texture3D */
+#ifdef GL_EXT_texture_array
+ if (glewExperimental || GLEW_EXT_texture_array) GLEW_EXT_texture_array = !_glewInit_GL_EXT_texture_array();
+#endif /* GL_EXT_texture_array */
+#ifdef GL_EXT_texture_border_clamp
+ if (glewExperimental || GLEW_EXT_texture_border_clamp) GLEW_EXT_texture_border_clamp = !_glewInit_GL_EXT_texture_border_clamp();
+#endif /* GL_EXT_texture_border_clamp */
+#ifdef GL_EXT_texture_buffer_object
+ if (glewExperimental || GLEW_EXT_texture_buffer_object) GLEW_EXT_texture_buffer_object = !_glewInit_GL_EXT_texture_buffer_object();
+#endif /* GL_EXT_texture_buffer_object */
+#ifdef GL_EXT_texture_integer
+ if (glewExperimental || GLEW_EXT_texture_integer) GLEW_EXT_texture_integer = !_glewInit_GL_EXT_texture_integer();
+#endif /* GL_EXT_texture_integer */
+#ifdef GL_EXT_texture_object
+ if (glewExperimental || GLEW_EXT_texture_object) GLEW_EXT_texture_object = !_glewInit_GL_EXT_texture_object();
+#endif /* GL_EXT_texture_object */
+#ifdef GL_EXT_texture_perturb_normal
+ if (glewExperimental || GLEW_EXT_texture_perturb_normal) GLEW_EXT_texture_perturb_normal = !_glewInit_GL_EXT_texture_perturb_normal();
+#endif /* GL_EXT_texture_perturb_normal */
+#ifdef GL_EXT_texture_storage
+ if (glewExperimental || GLEW_EXT_texture_storage) GLEW_EXT_texture_storage = !_glewInit_GL_EXT_texture_storage();
+#endif /* GL_EXT_texture_storage */
+#ifdef GL_EXT_texture_storage_compression
+ if (glewExperimental || GLEW_EXT_texture_storage_compression) GLEW_EXT_texture_storage_compression = !_glewInit_GL_EXT_texture_storage_compression();
+#endif /* GL_EXT_texture_storage_compression */
+#ifdef GL_EXT_texture_view
+ if (glewExperimental || GLEW_EXT_texture_view) GLEW_EXT_texture_view = !_glewInit_GL_EXT_texture_view();
+#endif /* GL_EXT_texture_view */
+#ifdef GL_EXT_timer_query
+ if (glewExperimental || GLEW_EXT_timer_query) GLEW_EXT_timer_query = !_glewInit_GL_EXT_timer_query();
+#endif /* GL_EXT_timer_query */
+#ifdef GL_EXT_transform_feedback
+ if (glewExperimental || GLEW_EXT_transform_feedback) GLEW_EXT_transform_feedback = !_glewInit_GL_EXT_transform_feedback();
+#endif /* GL_EXT_transform_feedback */
+#ifdef GL_EXT_vertex_array
+ if (glewExperimental || GLEW_EXT_vertex_array) GLEW_EXT_vertex_array = !_glewInit_GL_EXT_vertex_array();
+#endif /* GL_EXT_vertex_array */
+#ifdef GL_EXT_vertex_array_setXXX
+ if (glewExperimental || GLEW_EXT_vertex_array_setXXX) GLEW_EXT_vertex_array_setXXX = !_glewInit_GL_EXT_vertex_array_setXXX();
+#endif /* GL_EXT_vertex_array_setXXX */
+#ifdef GL_EXT_vertex_attrib_64bit
+ if (glewExperimental || GLEW_EXT_vertex_attrib_64bit) GLEW_EXT_vertex_attrib_64bit = !_glewInit_GL_EXT_vertex_attrib_64bit();
+#endif /* GL_EXT_vertex_attrib_64bit */
+#ifdef GL_EXT_vertex_shader
+ if (glewExperimental || GLEW_EXT_vertex_shader) GLEW_EXT_vertex_shader = !_glewInit_GL_EXT_vertex_shader();
+#endif /* GL_EXT_vertex_shader */
+#ifdef GL_EXT_vertex_weighting
+ if (glewExperimental || GLEW_EXT_vertex_weighting) GLEW_EXT_vertex_weighting = !_glewInit_GL_EXT_vertex_weighting();
+#endif /* GL_EXT_vertex_weighting */
+#ifdef GL_EXT_win32_keyed_mutex
+ if (glewExperimental || GLEW_EXT_win32_keyed_mutex) GLEW_EXT_win32_keyed_mutex = !_glewInit_GL_EXT_win32_keyed_mutex();
+#endif /* GL_EXT_win32_keyed_mutex */
+#ifdef GL_EXT_window_rectangles
+ if (glewExperimental || GLEW_EXT_window_rectangles) GLEW_EXT_window_rectangles = !_glewInit_GL_EXT_window_rectangles();
+#endif /* GL_EXT_window_rectangles */
+#ifdef GL_EXT_x11_sync_object
+ if (glewExperimental || GLEW_EXT_x11_sync_object) GLEW_EXT_x11_sync_object = !_glewInit_GL_EXT_x11_sync_object();
+#endif /* GL_EXT_x11_sync_object */
+#ifdef GL_GREMEDY_frame_terminator
+ if (glewExperimental || GLEW_GREMEDY_frame_terminator) GLEW_GREMEDY_frame_terminator = !_glewInit_GL_GREMEDY_frame_terminator();
+#endif /* GL_GREMEDY_frame_terminator */
+#ifdef GL_GREMEDY_string_marker
+ if (glewExperimental || GLEW_GREMEDY_string_marker) GLEW_GREMEDY_string_marker = !_glewInit_GL_GREMEDY_string_marker();
+#endif /* GL_GREMEDY_string_marker */
+#ifdef GL_HP_image_transform
+ if (glewExperimental || GLEW_HP_image_transform) GLEW_HP_image_transform = !_glewInit_GL_HP_image_transform();
+#endif /* GL_HP_image_transform */
+#ifdef GL_IBM_multimode_draw_arrays
+ if (glewExperimental || GLEW_IBM_multimode_draw_arrays) GLEW_IBM_multimode_draw_arrays = !_glewInit_GL_IBM_multimode_draw_arrays();
+#endif /* GL_IBM_multimode_draw_arrays */
+#ifdef GL_IBM_vertex_array_lists
+ if (glewExperimental || GLEW_IBM_vertex_array_lists) GLEW_IBM_vertex_array_lists = !_glewInit_GL_IBM_vertex_array_lists();
+#endif /* GL_IBM_vertex_array_lists */
+#ifdef GL_IMG_bindless_texture
+ if (glewExperimental || GLEW_IMG_bindless_texture) GLEW_IMG_bindless_texture = !_glewInit_GL_IMG_bindless_texture();
+#endif /* GL_IMG_bindless_texture */
+#ifdef GL_IMG_framebuffer_downsample
+ if (glewExperimental || GLEW_IMG_framebuffer_downsample) GLEW_IMG_framebuffer_downsample = !_glewInit_GL_IMG_framebuffer_downsample();
+#endif /* GL_IMG_framebuffer_downsample */
+#ifdef GL_IMG_multisampled_render_to_texture
+ if (glewExperimental || GLEW_IMG_multisampled_render_to_texture) GLEW_IMG_multisampled_render_to_texture = !_glewInit_GL_IMG_multisampled_render_to_texture();
+#endif /* GL_IMG_multisampled_render_to_texture */
+#ifdef GL_INTEL_framebuffer_CMAA
+ if (glewExperimental || GLEW_INTEL_framebuffer_CMAA) GLEW_INTEL_framebuffer_CMAA = !_glewInit_GL_INTEL_framebuffer_CMAA();
+#endif /* GL_INTEL_framebuffer_CMAA */
+#ifdef GL_INTEL_map_texture
+ if (glewExperimental || GLEW_INTEL_map_texture) GLEW_INTEL_map_texture = !_glewInit_GL_INTEL_map_texture();
+#endif /* GL_INTEL_map_texture */
+#ifdef GL_INTEL_parallel_arrays
+ if (glewExperimental || GLEW_INTEL_parallel_arrays) GLEW_INTEL_parallel_arrays = !_glewInit_GL_INTEL_parallel_arrays();
+#endif /* GL_INTEL_parallel_arrays */
+#ifdef GL_INTEL_performance_query
+ if (glewExperimental || GLEW_INTEL_performance_query) GLEW_INTEL_performance_query = !_glewInit_GL_INTEL_performance_query();
+#endif /* GL_INTEL_performance_query */
+#ifdef GL_INTEL_texture_scissor
+ if (glewExperimental || GLEW_INTEL_texture_scissor) GLEW_INTEL_texture_scissor = !_glewInit_GL_INTEL_texture_scissor();
+#endif /* GL_INTEL_texture_scissor */
+#ifdef GL_KHR_blend_equation_advanced
+ if (glewExperimental || GLEW_KHR_blend_equation_advanced) GLEW_KHR_blend_equation_advanced = !_glewInit_GL_KHR_blend_equation_advanced();
+#endif /* GL_KHR_blend_equation_advanced */
+#ifdef GL_KHR_debug
+ if (glewExperimental || GLEW_KHR_debug) GLEW_KHR_debug = !_glewInit_GL_KHR_debug();
+#endif /* GL_KHR_debug */
+#ifdef GL_KHR_parallel_shader_compile
+ if (glewExperimental || GLEW_KHR_parallel_shader_compile) GLEW_KHR_parallel_shader_compile = !_glewInit_GL_KHR_parallel_shader_compile();
+#endif /* GL_KHR_parallel_shader_compile */
+#ifdef GL_KHR_robustness
+ if (glewExperimental || GLEW_KHR_robustness) GLEW_KHR_robustness = !_glewInit_GL_KHR_robustness();
+#endif /* GL_KHR_robustness */
+#ifdef GL_KTX_buffer_region
+ if (glewExperimental || GLEW_KTX_buffer_region) GLEW_KTX_buffer_region = !_glewInit_GL_KTX_buffer_region();
+#endif /* GL_KTX_buffer_region */
+#ifdef GL_MESA_framebuffer_flip_y
+ if (glewExperimental || GLEW_MESA_framebuffer_flip_y) GLEW_MESA_framebuffer_flip_y = !_glewInit_GL_MESA_framebuffer_flip_y();
+#endif /* GL_MESA_framebuffer_flip_y */
+#ifdef GL_MESA_resize_buffers
+ if (glewExperimental || GLEW_MESA_resize_buffers) GLEW_MESA_resize_buffers = !_glewInit_GL_MESA_resize_buffers();
+#endif /* GL_MESA_resize_buffers */
+#ifdef GL_MESA_window_pos
+ if (glewExperimental || GLEW_MESA_window_pos) GLEW_MESA_window_pos = !_glewInit_GL_MESA_window_pos();
+#endif /* GL_MESA_window_pos */
+#ifdef GL_NVX_conditional_render
+ if (glewExperimental || GLEW_NVX_conditional_render) GLEW_NVX_conditional_render = !_glewInit_GL_NVX_conditional_render();
+#endif /* GL_NVX_conditional_render */
+#ifdef GL_NVX_gpu_multicast2
+ if (glewExperimental || GLEW_NVX_gpu_multicast2) GLEW_NVX_gpu_multicast2 = !_glewInit_GL_NVX_gpu_multicast2();
+#endif /* GL_NVX_gpu_multicast2 */
+#ifdef GL_NVX_linked_gpu_multicast
+ if (glewExperimental || GLEW_NVX_linked_gpu_multicast) GLEW_NVX_linked_gpu_multicast = !_glewInit_GL_NVX_linked_gpu_multicast();
+#endif /* GL_NVX_linked_gpu_multicast */
+#ifdef GL_NVX_progress_fence
+ if (glewExperimental || GLEW_NVX_progress_fence) GLEW_NVX_progress_fence = !_glewInit_GL_NVX_progress_fence();
+#endif /* GL_NVX_progress_fence */
+#ifdef GL_NV_3dvision_settings
+ if (glewExperimental || GLEW_NV_3dvision_settings) GLEW_NV_3dvision_settings = !_glewInit_GL_NV_3dvision_settings();
+#endif /* GL_NV_3dvision_settings */
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ if (glewExperimental || GLEW_NV_alpha_to_coverage_dither_control) GLEW_NV_alpha_to_coverage_dither_control = !_glewInit_GL_NV_alpha_to_coverage_dither_control();
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+#ifdef GL_NV_bindless_multi_draw_indirect
+ if (glewExperimental || GLEW_NV_bindless_multi_draw_indirect) GLEW_NV_bindless_multi_draw_indirect = !_glewInit_GL_NV_bindless_multi_draw_indirect();
+#endif /* GL_NV_bindless_multi_draw_indirect */
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ if (glewExperimental || GLEW_NV_bindless_multi_draw_indirect_count) GLEW_NV_bindless_multi_draw_indirect_count = !_glewInit_GL_NV_bindless_multi_draw_indirect_count();
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+#ifdef GL_NV_bindless_texture
+ if (glewExperimental || GLEW_NV_bindless_texture) GLEW_NV_bindless_texture = !_glewInit_GL_NV_bindless_texture();
+#endif /* GL_NV_bindless_texture */
+#ifdef GL_NV_blend_equation_advanced
+ if (glewExperimental || GLEW_NV_blend_equation_advanced) GLEW_NV_blend_equation_advanced = !_glewInit_GL_NV_blend_equation_advanced();
+#endif /* GL_NV_blend_equation_advanced */
+#ifdef GL_NV_clip_space_w_scaling
+ if (glewExperimental || GLEW_NV_clip_space_w_scaling) GLEW_NV_clip_space_w_scaling = !_glewInit_GL_NV_clip_space_w_scaling();
+#endif /* GL_NV_clip_space_w_scaling */
+#ifdef GL_NV_command_list
+ if (glewExperimental || GLEW_NV_command_list) GLEW_NV_command_list = !_glewInit_GL_NV_command_list();
+#endif /* GL_NV_command_list */
+#ifdef GL_NV_conditional_render
+ if (glewExperimental || GLEW_NV_conditional_render) GLEW_NV_conditional_render = !_glewInit_GL_NV_conditional_render();
+#endif /* GL_NV_conditional_render */
+#ifdef GL_NV_conservative_raster
+ if (glewExperimental || GLEW_NV_conservative_raster) GLEW_NV_conservative_raster = !_glewInit_GL_NV_conservative_raster();
+#endif /* GL_NV_conservative_raster */
+#ifdef GL_NV_conservative_raster_dilate
+ if (glewExperimental || GLEW_NV_conservative_raster_dilate) GLEW_NV_conservative_raster_dilate = !_glewInit_GL_NV_conservative_raster_dilate();
+#endif /* GL_NV_conservative_raster_dilate */
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ if (glewExperimental || GLEW_NV_conservative_raster_pre_snap_triangles) GLEW_NV_conservative_raster_pre_snap_triangles = !_glewInit_GL_NV_conservative_raster_pre_snap_triangles();
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+#ifdef GL_NV_copy_buffer
+ if (glewExperimental || GLEW_NV_copy_buffer) GLEW_NV_copy_buffer = !_glewInit_GL_NV_copy_buffer();
+#endif /* GL_NV_copy_buffer */
+#ifdef GL_NV_copy_image
+ if (glewExperimental || GLEW_NV_copy_image) GLEW_NV_copy_image = !_glewInit_GL_NV_copy_image();
+#endif /* GL_NV_copy_image */
+#ifdef GL_NV_depth_buffer_float
+ if (glewExperimental || GLEW_NV_depth_buffer_float) GLEW_NV_depth_buffer_float = !_glewInit_GL_NV_depth_buffer_float();
+#endif /* GL_NV_depth_buffer_float */
+#ifdef GL_NV_draw_buffers
+ if (glewExperimental || GLEW_NV_draw_buffers) GLEW_NV_draw_buffers = !_glewInit_GL_NV_draw_buffers();
+#endif /* GL_NV_draw_buffers */
+#ifdef GL_NV_draw_instanced
+ if (glewExperimental || GLEW_NV_draw_instanced) GLEW_NV_draw_instanced = !_glewInit_GL_NV_draw_instanced();
+#endif /* GL_NV_draw_instanced */
+#ifdef GL_NV_draw_texture
+ if (glewExperimental || GLEW_NV_draw_texture) GLEW_NV_draw_texture = !_glewInit_GL_NV_draw_texture();
+#endif /* GL_NV_draw_texture */
+#ifdef GL_NV_draw_vulkan_image
+ if (glewExperimental || GLEW_NV_draw_vulkan_image) GLEW_NV_draw_vulkan_image = !_glewInit_GL_NV_draw_vulkan_image();
+#endif /* GL_NV_draw_vulkan_image */
+#ifdef GL_NV_evaluators
+ if (glewExperimental || GLEW_NV_evaluators) GLEW_NV_evaluators = !_glewInit_GL_NV_evaluators();
+#endif /* GL_NV_evaluators */
+#ifdef GL_NV_explicit_multisample
+ if (glewExperimental || GLEW_NV_explicit_multisample) GLEW_NV_explicit_multisample = !_glewInit_GL_NV_explicit_multisample();
+#endif /* GL_NV_explicit_multisample */
+#ifdef GL_NV_fence
+ if (glewExperimental || GLEW_NV_fence) GLEW_NV_fence = !_glewInit_GL_NV_fence();
+#endif /* GL_NV_fence */
+#ifdef GL_NV_fragment_coverage_to_color
+ if (glewExperimental || GLEW_NV_fragment_coverage_to_color) GLEW_NV_fragment_coverage_to_color = !_glewInit_GL_NV_fragment_coverage_to_color();
+#endif /* GL_NV_fragment_coverage_to_color */
+#ifdef GL_NV_fragment_program
+ if (glewExperimental || GLEW_NV_fragment_program) GLEW_NV_fragment_program = !_glewInit_GL_NV_fragment_program();
+#endif /* GL_NV_fragment_program */
+#ifdef GL_NV_framebuffer_blit
+ if (glewExperimental || GLEW_NV_framebuffer_blit) GLEW_NV_framebuffer_blit = !_glewInit_GL_NV_framebuffer_blit();
+#endif /* GL_NV_framebuffer_blit */
+#ifdef GL_NV_framebuffer_multisample
+ if (glewExperimental || GLEW_NV_framebuffer_multisample) GLEW_NV_framebuffer_multisample = !_glewInit_GL_NV_framebuffer_multisample();
+#endif /* GL_NV_framebuffer_multisample */
+#ifdef GL_NV_framebuffer_multisample_coverage
+ if (glewExperimental || GLEW_NV_framebuffer_multisample_coverage) GLEW_NV_framebuffer_multisample_coverage = !_glewInit_GL_NV_framebuffer_multisample_coverage();
+#endif /* GL_NV_framebuffer_multisample_coverage */
+#ifdef GL_NV_geometry_program4
+ if (glewExperimental || GLEW_NV_geometry_program4) GLEW_NV_geometry_program4 = !_glewInit_GL_NV_geometry_program4();
+#endif /* GL_NV_geometry_program4 */
+#ifdef GL_NV_gpu_multicast
+ if (glewExperimental || GLEW_NV_gpu_multicast) GLEW_NV_gpu_multicast = !_glewInit_GL_NV_gpu_multicast();
+#endif /* GL_NV_gpu_multicast */
+#ifdef GL_NV_gpu_program4
+ if (glewExperimental || GLEW_NV_gpu_program4) GLEW_NV_gpu_program4 = !_glewInit_GL_NV_gpu_program4();
+#endif /* GL_NV_gpu_program4 */
+#ifdef GL_NV_gpu_shader5
+ if (glewExperimental || GLEW_NV_gpu_shader5) GLEW_NV_gpu_shader5 = !_glewInit_GL_NV_gpu_shader5();
+#endif /* GL_NV_gpu_shader5 */
+#ifdef GL_NV_half_float
+ if (glewExperimental || GLEW_NV_half_float) GLEW_NV_half_float = !_glewInit_GL_NV_half_float();
+#endif /* GL_NV_half_float */
+#ifdef GL_NV_instanced_arrays
+ if (glewExperimental || GLEW_NV_instanced_arrays) GLEW_NV_instanced_arrays = !_glewInit_GL_NV_instanced_arrays();
+#endif /* GL_NV_instanced_arrays */
+#ifdef GL_NV_internalformat_sample_query
+ if (glewExperimental || GLEW_NV_internalformat_sample_query) GLEW_NV_internalformat_sample_query = !_glewInit_GL_NV_internalformat_sample_query();
+#endif /* GL_NV_internalformat_sample_query */
+#ifdef GL_NV_memory_attachment
+ if (glewExperimental || GLEW_NV_memory_attachment) GLEW_NV_memory_attachment = !_glewInit_GL_NV_memory_attachment();
+#endif /* GL_NV_memory_attachment */
+#ifdef GL_NV_memory_object_sparse
+ if (glewExperimental || GLEW_NV_memory_object_sparse) GLEW_NV_memory_object_sparse = !_glewInit_GL_NV_memory_object_sparse();
+#endif /* GL_NV_memory_object_sparse */
+#ifdef GL_NV_mesh_shader
+ if (glewExperimental || GLEW_NV_mesh_shader) GLEW_NV_mesh_shader = !_glewInit_GL_NV_mesh_shader();
+#endif /* GL_NV_mesh_shader */
+#ifdef GL_NV_non_square_matrices
+ if (glewExperimental || GLEW_NV_non_square_matrices) GLEW_NV_non_square_matrices = !_glewInit_GL_NV_non_square_matrices();
+#endif /* GL_NV_non_square_matrices */
+#ifdef GL_NV_occlusion_query
+ if (glewExperimental || GLEW_NV_occlusion_query) GLEW_NV_occlusion_query = !_glewInit_GL_NV_occlusion_query();
+#endif /* GL_NV_occlusion_query */
+#ifdef GL_NV_parameter_buffer_object
+ if (glewExperimental || GLEW_NV_parameter_buffer_object) GLEW_NV_parameter_buffer_object = !_glewInit_GL_NV_parameter_buffer_object();
+#endif /* GL_NV_parameter_buffer_object */
+#ifdef GL_NV_path_rendering
+ if (glewExperimental || GLEW_NV_path_rendering) GLEW_NV_path_rendering = !_glewInit_GL_NV_path_rendering();
+#endif /* GL_NV_path_rendering */
+#ifdef GL_NV_pixel_data_range
+ if (glewExperimental || GLEW_NV_pixel_data_range) GLEW_NV_pixel_data_range = !_glewInit_GL_NV_pixel_data_range();
+#endif /* GL_NV_pixel_data_range */
+#ifdef GL_NV_point_sprite
+ if (glewExperimental || GLEW_NV_point_sprite) GLEW_NV_point_sprite = !_glewInit_GL_NV_point_sprite();
+#endif /* GL_NV_point_sprite */
+#ifdef GL_NV_polygon_mode
+ if (glewExperimental || GLEW_NV_polygon_mode) GLEW_NV_polygon_mode = !_glewInit_GL_NV_polygon_mode();
+#endif /* GL_NV_polygon_mode */
+#ifdef GL_NV_present_video
+ if (glewExperimental || GLEW_NV_present_video) GLEW_NV_present_video = !_glewInit_GL_NV_present_video();
+#endif /* GL_NV_present_video */
+#ifdef GL_NV_primitive_restart
+ if (glewExperimental || GLEW_NV_primitive_restart) GLEW_NV_primitive_restart = !_glewInit_GL_NV_primitive_restart();
+#endif /* GL_NV_primitive_restart */
+#ifdef GL_NV_read_buffer
+ if (glewExperimental || GLEW_NV_read_buffer) GLEW_NV_read_buffer = !_glewInit_GL_NV_read_buffer();
+#endif /* GL_NV_read_buffer */
+#ifdef GL_NV_register_combiners
+ if (glewExperimental || GLEW_NV_register_combiners) GLEW_NV_register_combiners = !_glewInit_GL_NV_register_combiners();
+#endif /* GL_NV_register_combiners */
+#ifdef GL_NV_register_combiners2
+ if (glewExperimental || GLEW_NV_register_combiners2) GLEW_NV_register_combiners2 = !_glewInit_GL_NV_register_combiners2();
+#endif /* GL_NV_register_combiners2 */
+#ifdef GL_NV_sample_locations
+ if (glewExperimental || GLEW_NV_sample_locations) GLEW_NV_sample_locations = !_glewInit_GL_NV_sample_locations();
+#endif /* GL_NV_sample_locations */
+#ifdef GL_NV_scissor_exclusive
+ if (glewExperimental || GLEW_NV_scissor_exclusive) GLEW_NV_scissor_exclusive = !_glewInit_GL_NV_scissor_exclusive();
+#endif /* GL_NV_scissor_exclusive */
+#ifdef GL_NV_shader_buffer_load
+ if (glewExperimental || GLEW_NV_shader_buffer_load) GLEW_NV_shader_buffer_load = !_glewInit_GL_NV_shader_buffer_load();
+#endif /* GL_NV_shader_buffer_load */
+#ifdef GL_NV_shading_rate_image
+ if (glewExperimental || GLEW_NV_shading_rate_image) GLEW_NV_shading_rate_image = !_glewInit_GL_NV_shading_rate_image();
+#endif /* GL_NV_shading_rate_image */
+#ifdef GL_NV_texture_array
+ if (glewExperimental || GLEW_NV_texture_array) GLEW_NV_texture_array = !_glewInit_GL_NV_texture_array();
+#endif /* GL_NV_texture_array */
+#ifdef GL_NV_texture_barrier
+ if (glewExperimental || GLEW_NV_texture_barrier) GLEW_NV_texture_barrier = !_glewInit_GL_NV_texture_barrier();
+#endif /* GL_NV_texture_barrier */
+#ifdef GL_NV_texture_multisample
+ if (glewExperimental || GLEW_NV_texture_multisample) GLEW_NV_texture_multisample = !_glewInit_GL_NV_texture_multisample();
+#endif /* GL_NV_texture_multisample */
+#ifdef GL_NV_timeline_semaphore
+ if (glewExperimental || GLEW_NV_timeline_semaphore) GLEW_NV_timeline_semaphore = !_glewInit_GL_NV_timeline_semaphore();
+#endif /* GL_NV_timeline_semaphore */
+#ifdef GL_NV_transform_feedback
+ if (glewExperimental || GLEW_NV_transform_feedback) GLEW_NV_transform_feedback = !_glewInit_GL_NV_transform_feedback();
+#endif /* GL_NV_transform_feedback */
+#ifdef GL_NV_transform_feedback2
+ if (glewExperimental || GLEW_NV_transform_feedback2) GLEW_NV_transform_feedback2 = !_glewInit_GL_NV_transform_feedback2();
+#endif /* GL_NV_transform_feedback2 */
+#ifdef GL_NV_vdpau_interop
+ if (glewExperimental || GLEW_NV_vdpau_interop) GLEW_NV_vdpau_interop = !_glewInit_GL_NV_vdpau_interop();
+#endif /* GL_NV_vdpau_interop */
+#ifdef GL_NV_vdpau_interop2
+ if (glewExperimental || GLEW_NV_vdpau_interop2) GLEW_NV_vdpau_interop2 = !_glewInit_GL_NV_vdpau_interop2();
+#endif /* GL_NV_vdpau_interop2 */
+#ifdef GL_NV_vertex_array_range
+ if (glewExperimental || GLEW_NV_vertex_array_range) GLEW_NV_vertex_array_range = !_glewInit_GL_NV_vertex_array_range();
+#endif /* GL_NV_vertex_array_range */
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ if (glewExperimental || GLEW_NV_vertex_attrib_integer_64bit) GLEW_NV_vertex_attrib_integer_64bit = !_glewInit_GL_NV_vertex_attrib_integer_64bit();
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+#ifdef GL_NV_vertex_buffer_unified_memory
+ if (glewExperimental || GLEW_NV_vertex_buffer_unified_memory) GLEW_NV_vertex_buffer_unified_memory = !_glewInit_GL_NV_vertex_buffer_unified_memory();
+#endif /* GL_NV_vertex_buffer_unified_memory */
+#ifdef GL_NV_vertex_program
+ if (glewExperimental || GLEW_NV_vertex_program) GLEW_NV_vertex_program = !_glewInit_GL_NV_vertex_program();
+#endif /* GL_NV_vertex_program */
+#ifdef GL_NV_video_capture
+ if (glewExperimental || GLEW_NV_video_capture) GLEW_NV_video_capture = !_glewInit_GL_NV_video_capture();
+#endif /* GL_NV_video_capture */
+#ifdef GL_NV_viewport_array
+ if (glewExperimental || GLEW_NV_viewport_array) GLEW_NV_viewport_array = !_glewInit_GL_NV_viewport_array();
+#endif /* GL_NV_viewport_array */
+#ifdef GL_NV_viewport_swizzle
+ if (glewExperimental || GLEW_NV_viewport_swizzle) GLEW_NV_viewport_swizzle = !_glewInit_GL_NV_viewport_swizzle();
+#endif /* GL_NV_viewport_swizzle */
+#ifdef GL_OES_EGL_image
+ if (glewExperimental || GLEW_OES_EGL_image) GLEW_OES_EGL_image = !_glewInit_GL_OES_EGL_image();
+#endif /* GL_OES_EGL_image */
+#ifdef GL_OES_blend_equation_separate
+ if (glewExperimental || GLEW_OES_blend_equation_separate) GLEW_OES_blend_equation_separate = !_glewInit_GL_OES_blend_equation_separate();
+#endif /* GL_OES_blend_equation_separate */
+#ifdef GL_OES_blend_func_separate
+ if (glewExperimental || GLEW_OES_blend_func_separate) GLEW_OES_blend_func_separate = !_glewInit_GL_OES_blend_func_separate();
+#endif /* GL_OES_blend_func_separate */
+#ifdef GL_OES_blend_subtract
+ if (glewExperimental || GLEW_OES_blend_subtract) GLEW_OES_blend_subtract = !_glewInit_GL_OES_blend_subtract();
+#endif /* GL_OES_blend_subtract */
+#ifdef GL_OES_copy_image
+ if (glewExperimental || GLEW_OES_copy_image) GLEW_OES_copy_image = !_glewInit_GL_OES_copy_image();
+#endif /* GL_OES_copy_image */
+#ifdef GL_OES_draw_buffers_indexed
+ if (glewExperimental || GLEW_OES_draw_buffers_indexed) GLEW_OES_draw_buffers_indexed = !_glewInit_GL_OES_draw_buffers_indexed();
+#endif /* GL_OES_draw_buffers_indexed */
+#ifdef GL_OES_framebuffer_object
+ if (glewExperimental || GLEW_OES_framebuffer_object) GLEW_OES_framebuffer_object = !_glewInit_GL_OES_framebuffer_object();
+#endif /* GL_OES_framebuffer_object */
+#ifdef GL_OES_get_program_binary
+ if (glewExperimental || GLEW_OES_get_program_binary) GLEW_OES_get_program_binary = !_glewInit_GL_OES_get_program_binary();
+#endif /* GL_OES_get_program_binary */
+#ifdef GL_OES_mapbuffer
+ if (glewExperimental || GLEW_OES_mapbuffer) GLEW_OES_mapbuffer = !_glewInit_GL_OES_mapbuffer();
+#endif /* GL_OES_mapbuffer */
+#ifdef GL_OES_matrix_palette
+ if (glewExperimental || GLEW_OES_matrix_palette) GLEW_OES_matrix_palette = !_glewInit_GL_OES_matrix_palette();
+#endif /* GL_OES_matrix_palette */
+#ifdef GL_OES_sample_shading
+ if (glewExperimental || GLEW_OES_sample_shading) GLEW_OES_sample_shading = !_glewInit_GL_OES_sample_shading();
+#endif /* GL_OES_sample_shading */
+#ifdef GL_OES_single_precision
+ if (glewExperimental || GLEW_OES_single_precision) GLEW_OES_single_precision = !_glewInit_GL_OES_single_precision();
+#endif /* GL_OES_single_precision */
+#ifdef GL_OES_texture_3D
+ if (glewExperimental || GLEW_OES_texture_3D) GLEW_OES_texture_3D = !_glewInit_GL_OES_texture_3D();
+#endif /* GL_OES_texture_3D */
+#ifdef GL_OES_texture_border_clamp
+ if (glewExperimental || GLEW_OES_texture_border_clamp) GLEW_OES_texture_border_clamp = !_glewInit_GL_OES_texture_border_clamp();
+#endif /* GL_OES_texture_border_clamp */
+#ifdef GL_OES_texture_buffer
+ if (glewExperimental || GLEW_OES_texture_buffer) GLEW_OES_texture_buffer = !_glewInit_GL_OES_texture_buffer();
+#endif /* GL_OES_texture_buffer */
+#ifdef GL_OES_texture_cube_map
+ if (glewExperimental || GLEW_OES_texture_cube_map) GLEW_OES_texture_cube_map = !_glewInit_GL_OES_texture_cube_map();
+#endif /* GL_OES_texture_cube_map */
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ if (glewExperimental || GLEW_OES_texture_storage_multisample_2d_array) GLEW_OES_texture_storage_multisample_2d_array = !_glewInit_GL_OES_texture_storage_multisample_2d_array();
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+#ifdef GL_OES_texture_view
+ if (glewExperimental || GLEW_OES_texture_view) GLEW_OES_texture_view = !_glewInit_GL_OES_texture_view();
+#endif /* GL_OES_texture_view */
+#ifdef GL_OES_vertex_array_object
+ if (glewExperimental || GLEW_OES_vertex_array_object) GLEW_OES_vertex_array_object = !_glewInit_GL_OES_vertex_array_object();
+#endif /* GL_OES_vertex_array_object */
+#ifdef GL_OVR_multiview
+ if (glewExperimental || GLEW_OVR_multiview) GLEW_OVR_multiview = !_glewInit_GL_OVR_multiview();
+#endif /* GL_OVR_multiview */
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ if (glewExperimental || GLEW_OVR_multiview_multisampled_render_to_texture) GLEW_OVR_multiview_multisampled_render_to_texture = !_glewInit_GL_OVR_multiview_multisampled_render_to_texture();
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+#ifdef GL_QCOM_alpha_test
+ if (glewExperimental || GLEW_QCOM_alpha_test) GLEW_QCOM_alpha_test = !_glewInit_GL_QCOM_alpha_test();
+#endif /* GL_QCOM_alpha_test */
+#ifdef GL_QCOM_driver_control
+ if (glewExperimental || GLEW_QCOM_driver_control) GLEW_QCOM_driver_control = !_glewInit_GL_QCOM_driver_control();
+#endif /* GL_QCOM_driver_control */
+#ifdef GL_QCOM_extended_get
+ if (glewExperimental || GLEW_QCOM_extended_get) GLEW_QCOM_extended_get = !_glewInit_GL_QCOM_extended_get();
+#endif /* GL_QCOM_extended_get */
+#ifdef GL_QCOM_extended_get2
+ if (glewExperimental || GLEW_QCOM_extended_get2) GLEW_QCOM_extended_get2 = !_glewInit_GL_QCOM_extended_get2();
+#endif /* GL_QCOM_extended_get2 */
+#ifdef GL_QCOM_frame_extrapolation
+ if (glewExperimental || GLEW_QCOM_frame_extrapolation) GLEW_QCOM_frame_extrapolation = !_glewInit_GL_QCOM_frame_extrapolation();
+#endif /* GL_QCOM_frame_extrapolation */
+#ifdef GL_QCOM_framebuffer_foveated
+ if (glewExperimental || GLEW_QCOM_framebuffer_foveated) GLEW_QCOM_framebuffer_foveated = !_glewInit_GL_QCOM_framebuffer_foveated();
+#endif /* GL_QCOM_framebuffer_foveated */
+#ifdef GL_QCOM_motion_estimation
+ if (glewExperimental || GLEW_QCOM_motion_estimation) GLEW_QCOM_motion_estimation = !_glewInit_GL_QCOM_motion_estimation();
+#endif /* GL_QCOM_motion_estimation */
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ if (glewExperimental || GLEW_QCOM_shader_framebuffer_fetch_noncoherent) GLEW_QCOM_shader_framebuffer_fetch_noncoherent = !_glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent();
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+#ifdef GL_QCOM_shading_rate
+ if (glewExperimental || GLEW_QCOM_shading_rate) GLEW_QCOM_shading_rate = !_glewInit_GL_QCOM_shading_rate();
+#endif /* GL_QCOM_shading_rate */
+#ifdef GL_QCOM_texture_foveated
+ if (glewExperimental || GLEW_QCOM_texture_foveated) GLEW_QCOM_texture_foveated = !_glewInit_GL_QCOM_texture_foveated();
+#endif /* GL_QCOM_texture_foveated */
+#ifdef GL_QCOM_tiled_rendering
+ if (glewExperimental || GLEW_QCOM_tiled_rendering) GLEW_QCOM_tiled_rendering = !_glewInit_GL_QCOM_tiled_rendering();
+#endif /* GL_QCOM_tiled_rendering */
+#ifdef GL_REGAL_ES1_0_compatibility
+ if (glewExperimental || GLEW_REGAL_ES1_0_compatibility) GLEW_REGAL_ES1_0_compatibility = !_glewInit_GL_REGAL_ES1_0_compatibility();
+#endif /* GL_REGAL_ES1_0_compatibility */
+#ifdef GL_REGAL_ES1_1_compatibility
+ if (glewExperimental || GLEW_REGAL_ES1_1_compatibility) GLEW_REGAL_ES1_1_compatibility = !_glewInit_GL_REGAL_ES1_1_compatibility();
+#endif /* GL_REGAL_ES1_1_compatibility */
+#ifdef GL_REGAL_error_string
+ if (glewExperimental || GLEW_REGAL_error_string) GLEW_REGAL_error_string = !_glewInit_GL_REGAL_error_string();
+#endif /* GL_REGAL_error_string */
+#ifdef GL_REGAL_extension_query
+ if (glewExperimental || GLEW_REGAL_extension_query) GLEW_REGAL_extension_query = !_glewInit_GL_REGAL_extension_query();
+#endif /* GL_REGAL_extension_query */
+#ifdef GL_REGAL_log
+ if (glewExperimental || GLEW_REGAL_log) GLEW_REGAL_log = !_glewInit_GL_REGAL_log();
+#endif /* GL_REGAL_log */
+#ifdef GL_REGAL_proc_address
+ if (glewExperimental || GLEW_REGAL_proc_address) GLEW_REGAL_proc_address = !_glewInit_GL_REGAL_proc_address();
+#endif /* GL_REGAL_proc_address */
+#ifdef GL_SGIS_detail_texture
+ if (glewExperimental || GLEW_SGIS_detail_texture) GLEW_SGIS_detail_texture = !_glewInit_GL_SGIS_detail_texture();
+#endif /* GL_SGIS_detail_texture */
+#ifdef GL_SGIS_fog_function
+ if (glewExperimental || GLEW_SGIS_fog_function) GLEW_SGIS_fog_function = !_glewInit_GL_SGIS_fog_function();
+#endif /* GL_SGIS_fog_function */
+#ifdef GL_SGIS_multisample
+ if (glewExperimental || GLEW_SGIS_multisample) GLEW_SGIS_multisample = !_glewInit_GL_SGIS_multisample();
+#endif /* GL_SGIS_multisample */
+#ifdef GL_SGIS_multitexture
+ if (glewExperimental || GLEW_SGIS_multitexture) GLEW_SGIS_multitexture = !_glewInit_GL_SGIS_multitexture();
+#endif /* GL_SGIS_multitexture */
+#ifdef GL_SGIS_shared_multisample
+ if (glewExperimental || GLEW_SGIS_shared_multisample) GLEW_SGIS_shared_multisample = !_glewInit_GL_SGIS_shared_multisample();
+#endif /* GL_SGIS_shared_multisample */
+#ifdef GL_SGIS_sharpen_texture
+ if (glewExperimental || GLEW_SGIS_sharpen_texture) GLEW_SGIS_sharpen_texture = !_glewInit_GL_SGIS_sharpen_texture();
+#endif /* GL_SGIS_sharpen_texture */
+#ifdef GL_SGIS_texture4D
+ if (glewExperimental || GLEW_SGIS_texture4D) GLEW_SGIS_texture4D = !_glewInit_GL_SGIS_texture4D();
+#endif /* GL_SGIS_texture4D */
+#ifdef GL_SGIS_texture_filter4
+ if (glewExperimental || GLEW_SGIS_texture_filter4) GLEW_SGIS_texture_filter4 = !_glewInit_GL_SGIS_texture_filter4();
+#endif /* GL_SGIS_texture_filter4 */
+#ifdef GL_SGIX_async
+ if (glewExperimental || GLEW_SGIX_async) GLEW_SGIX_async = !_glewInit_GL_SGIX_async();
+#endif /* GL_SGIX_async */
+#ifdef GL_SGIX_datapipe
+ if (glewExperimental || GLEW_SGIX_datapipe) GLEW_SGIX_datapipe = !_glewInit_GL_SGIX_datapipe();
+#endif /* GL_SGIX_datapipe */
+#ifdef GL_SGIX_flush_raster
+ if (glewExperimental || GLEW_SGIX_flush_raster) GLEW_SGIX_flush_raster = !_glewInit_GL_SGIX_flush_raster();
+#endif /* GL_SGIX_flush_raster */
+#ifdef GL_SGIX_fog_layers
+ if (glewExperimental || GLEW_SGIX_fog_layers) GLEW_SGIX_fog_layers = !_glewInit_GL_SGIX_fog_layers();
+#endif /* GL_SGIX_fog_layers */
+#ifdef GL_SGIX_fog_texture
+ if (glewExperimental || GLEW_SGIX_fog_texture) GLEW_SGIX_fog_texture = !_glewInit_GL_SGIX_fog_texture();
+#endif /* GL_SGIX_fog_texture */
+#ifdef GL_SGIX_fragment_specular_lighting
+ if (glewExperimental || GLEW_SGIX_fragment_specular_lighting) GLEW_SGIX_fragment_specular_lighting = !_glewInit_GL_SGIX_fragment_specular_lighting();
+#endif /* GL_SGIX_fragment_specular_lighting */
+#ifdef GL_SGIX_framezoom
+ if (glewExperimental || GLEW_SGIX_framezoom) GLEW_SGIX_framezoom = !_glewInit_GL_SGIX_framezoom();
+#endif /* GL_SGIX_framezoom */
+#ifdef GL_SGIX_igloo_interface
+ if (glewExperimental || GLEW_SGIX_igloo_interface) GLEW_SGIX_igloo_interface = !_glewInit_GL_SGIX_igloo_interface();
+#endif /* GL_SGIX_igloo_interface */
+#ifdef GL_SGIX_mpeg1
+ if (glewExperimental || GLEW_SGIX_mpeg1) GLEW_SGIX_mpeg1 = !_glewInit_GL_SGIX_mpeg1();
+#endif /* GL_SGIX_mpeg1 */
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ if (glewExperimental || GLEW_SGIX_nonlinear_lighting_pervertex) GLEW_SGIX_nonlinear_lighting_pervertex = !_glewInit_GL_SGIX_nonlinear_lighting_pervertex();
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+#ifdef GL_SGIX_pixel_texture
+ if (glewExperimental || GLEW_SGIX_pixel_texture) GLEW_SGIX_pixel_texture = !_glewInit_GL_SGIX_pixel_texture();
+#endif /* GL_SGIX_pixel_texture */
+#ifdef GL_SGIX_polynomial_ffd
+ if (glewExperimental || GLEW_SGIX_polynomial_ffd) GLEW_SGIX_polynomial_ffd = !_glewInit_GL_SGIX_polynomial_ffd();
+#endif /* GL_SGIX_polynomial_ffd */
+#ifdef GL_SGIX_quad_mesh
+ if (glewExperimental || GLEW_SGIX_quad_mesh) GLEW_SGIX_quad_mesh = !_glewInit_GL_SGIX_quad_mesh();
+#endif /* GL_SGIX_quad_mesh */
+#ifdef GL_SGIX_reference_plane
+ if (glewExperimental || GLEW_SGIX_reference_plane) GLEW_SGIX_reference_plane = !_glewInit_GL_SGIX_reference_plane();
+#endif /* GL_SGIX_reference_plane */
+#ifdef GL_SGIX_sprite
+ if (glewExperimental || GLEW_SGIX_sprite) GLEW_SGIX_sprite = !_glewInit_GL_SGIX_sprite();
+#endif /* GL_SGIX_sprite */
+#ifdef GL_SGIX_tag_sample_buffer
+ if (glewExperimental || GLEW_SGIX_tag_sample_buffer) GLEW_SGIX_tag_sample_buffer = !_glewInit_GL_SGIX_tag_sample_buffer();
+#endif /* GL_SGIX_tag_sample_buffer */
+#ifdef GL_SGIX_vector_ops
+ if (glewExperimental || GLEW_SGIX_vector_ops) GLEW_SGIX_vector_ops = !_glewInit_GL_SGIX_vector_ops();
+#endif /* GL_SGIX_vector_ops */
+#ifdef GL_SGIX_vertex_array_object
+ if (glewExperimental || GLEW_SGIX_vertex_array_object) GLEW_SGIX_vertex_array_object = !_glewInit_GL_SGIX_vertex_array_object();
+#endif /* GL_SGIX_vertex_array_object */
+#ifdef GL_SGI_color_table
+ if (glewExperimental || GLEW_SGI_color_table) GLEW_SGI_color_table = !_glewInit_GL_SGI_color_table();
+#endif /* GL_SGI_color_table */
+#ifdef GL_SGI_fft
+ if (glewExperimental || GLEW_SGI_fft) GLEW_SGI_fft = !_glewInit_GL_SGI_fft();
+#endif /* GL_SGI_fft */
+#ifdef GL_SUNX_constant_data
+ if (glewExperimental || GLEW_SUNX_constant_data) GLEW_SUNX_constant_data = !_glewInit_GL_SUNX_constant_data();
+#endif /* GL_SUNX_constant_data */
+#ifdef GL_SUN_global_alpha
+ if (glewExperimental || GLEW_SUN_global_alpha) GLEW_SUN_global_alpha = !_glewInit_GL_SUN_global_alpha();
+#endif /* GL_SUN_global_alpha */
+#ifdef GL_SUN_read_video_pixels
+ if (glewExperimental || GLEW_SUN_read_video_pixels) GLEW_SUN_read_video_pixels = !_glewInit_GL_SUN_read_video_pixels();
+#endif /* GL_SUN_read_video_pixels */
+#ifdef GL_SUN_triangle_list
+ if (glewExperimental || GLEW_SUN_triangle_list) GLEW_SUN_triangle_list = !_glewInit_GL_SUN_triangle_list();
+#endif /* GL_SUN_triangle_list */
+#ifdef GL_SUN_vertex
+ if (glewExperimental || GLEW_SUN_vertex) GLEW_SUN_vertex = !_glewInit_GL_SUN_vertex();
+#endif /* GL_SUN_vertex */
+#ifdef GL_WIN_swap_hint
+ if (glewExperimental || GLEW_WIN_swap_hint) GLEW_WIN_swap_hint = !_glewInit_GL_WIN_swap_hint();
+#endif /* GL_WIN_swap_hint */
+#ifdef GL_NV_fragment_program4
+ GLEW_NV_fragment_program4 = GLEW_NV_gpu_program4;
+#endif /* GL_NV_fragment_program4 */
+#ifdef GL_NV_geometry_program4
+ GLEW_NV_geometry_program4 = GLEW_NV_gpu_program4;
+#endif /* GL_NV_geometry_program4 */
+#ifdef GL_NV_tessellation_program5
+ GLEW_NV_tessellation_program5 = GLEW_NV_gpu_program5;
+#endif /* GL_NV_tessellation_program5 */
+#ifdef GL_NV_vertex_program4
+ GLEW_NV_vertex_program4 = GLEW_NV_gpu_program4;
+#endif /* GL_NV_vertex_program4 */
+
+ return GLEW_OK;
+}
+
+
+#if defined(GLEW_OSMESA)
+
+#elif defined(GLEW_EGL)
+
+PFNEGLCHOOSECONFIGPROC __eglewChooseConfig = NULL;
+PFNEGLCOPYBUFFERSPROC __eglewCopyBuffers = NULL;
+PFNEGLCREATECONTEXTPROC __eglewCreateContext = NULL;
+PFNEGLCREATEPBUFFERSURFACEPROC __eglewCreatePbufferSurface = NULL;
+PFNEGLCREATEPIXMAPSURFACEPROC __eglewCreatePixmapSurface = NULL;
+PFNEGLCREATEWINDOWSURFACEPROC __eglewCreateWindowSurface = NULL;
+PFNEGLDESTROYCONTEXTPROC __eglewDestroyContext = NULL;
+PFNEGLDESTROYSURFACEPROC __eglewDestroySurface = NULL;
+PFNEGLGETCONFIGATTRIBPROC __eglewGetConfigAttrib = NULL;
+PFNEGLGETCONFIGSPROC __eglewGetConfigs = NULL;
+PFNEGLGETCURRENTDISPLAYPROC __eglewGetCurrentDisplay = NULL;
+PFNEGLGETCURRENTSURFACEPROC __eglewGetCurrentSurface = NULL;
+PFNEGLGETDISPLAYPROC __eglewGetDisplay = NULL;
+PFNEGLGETERRORPROC __eglewGetError = NULL;
+PFNEGLINITIALIZEPROC __eglewInitialize = NULL;
+PFNEGLMAKECURRENTPROC __eglewMakeCurrent = NULL;
+PFNEGLQUERYCONTEXTPROC __eglewQueryContext = NULL;
+PFNEGLQUERYSTRINGPROC __eglewQueryString = NULL;
+PFNEGLQUERYSURFACEPROC __eglewQuerySurface = NULL;
+PFNEGLSWAPBUFFERSPROC __eglewSwapBuffers = NULL;
+PFNEGLTERMINATEPROC __eglewTerminate = NULL;
+PFNEGLWAITGLPROC __eglewWaitGL = NULL;
+PFNEGLWAITNATIVEPROC __eglewWaitNative = NULL;
+
+PFNEGLBINDTEXIMAGEPROC __eglewBindTexImage = NULL;
+PFNEGLRELEASETEXIMAGEPROC __eglewReleaseTexImage = NULL;
+PFNEGLSURFACEATTRIBPROC __eglewSurfaceAttrib = NULL;
+PFNEGLSWAPINTERVALPROC __eglewSwapInterval = NULL;
+
+PFNEGLBINDAPIPROC __eglewBindAPI = NULL;
+PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC __eglewCreatePbufferFromClientBuffer = NULL;
+PFNEGLQUERYAPIPROC __eglewQueryAPI = NULL;
+PFNEGLRELEASETHREADPROC __eglewReleaseThread = NULL;
+PFNEGLWAITCLIENTPROC __eglewWaitClient = NULL;
+
+PFNEGLGETCURRENTCONTEXTPROC __eglewGetCurrentContext = NULL;
+
+PFNEGLCLIENTWAITSYNCPROC __eglewClientWaitSync = NULL;
+PFNEGLCREATEIMAGEPROC __eglewCreateImage = NULL;
+PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC __eglewCreatePlatformPixmapSurface = NULL;
+PFNEGLCREATEPLATFORMWINDOWSURFACEPROC __eglewCreatePlatformWindowSurface = NULL;
+PFNEGLCREATESYNCPROC __eglewCreateSync = NULL;
+PFNEGLDESTROYIMAGEPROC __eglewDestroyImage = NULL;
+PFNEGLDESTROYSYNCPROC __eglewDestroySync = NULL;
+PFNEGLGETPLATFORMDISPLAYPROC __eglewGetPlatformDisplay = NULL;
+PFNEGLGETSYNCATTRIBPROC __eglewGetSyncAttrib = NULL;
+PFNEGLWAITSYNCPROC __eglewWaitSync = NULL;
+
+PFNEGLSETBLOBCACHEFUNCSANDROIDPROC __eglewSetBlobCacheFuncsANDROID = NULL;
+
+PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC __eglewCreateNativeClientBufferANDROID = NULL;
+
+PFNEGLGETCOMPOSITORTIMINGANDROIDPROC __eglewGetCompositorTimingANDROID = NULL;
+PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC __eglewGetCompositorTimingSupportedANDROID = NULL;
+PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC __eglewGetFrameTimestampSupportedANDROID = NULL;
+PFNEGLGETFRAMETIMESTAMPSANDROIDPROC __eglewGetFrameTimestampsANDROID = NULL;
+PFNEGLGETNEXTFRAMEIDANDROIDPROC __eglewGetNextFrameIdANDROID = NULL;
+
+PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC __eglewGetNativeClientBufferANDROID = NULL;
+
+PFNEGLDUPNATIVEFENCEFDANDROIDPROC __eglewDupNativeFenceFDANDROID = NULL;
+
+PFNEGLPRESENTATIONTIMEANDROIDPROC __eglewPresentationTimeANDROID = NULL;
+
+PFNEGLQUERYSURFACEPOINTERANGLEPROC __eglewQuerySurfacePointerANGLE = NULL;
+
+PFNEGLGETMSCRATEANGLEPROC __eglewGetMscRateANGLE = NULL;
+
+PFNEGLCLIENTSIGNALSYNCEXTPROC __eglewClientSignalSyncEXT = NULL;
+
+PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC __eglewCompositorBindTexWindowEXT = NULL;
+PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC __eglewCompositorSetContextAttributesEXT = NULL;
+PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC __eglewCompositorSetContextListEXT = NULL;
+PFNEGLCOMPOSITORSETSIZEEXTPROC __eglewCompositorSetSizeEXT = NULL;
+PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC __eglewCompositorSetWindowAttributesEXT = NULL;
+PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC __eglewCompositorSetWindowListEXT = NULL;
+PFNEGLCOMPOSITORSWAPPOLICYEXTPROC __eglewCompositorSwapPolicyEXT = NULL;
+
+PFNEGLQUERYDEVICESEXTPROC __eglewQueryDevicesEXT = NULL;
+
+PFNEGLQUERYDEVICEBINARYEXTPROC __eglewQueryDeviceBinaryEXT = NULL;
+
+PFNEGLQUERYDEVICEATTRIBEXTPROC __eglewQueryDeviceAttribEXT = NULL;
+PFNEGLQUERYDEVICESTRINGEXTPROC __eglewQueryDeviceStringEXT = NULL;
+PFNEGLQUERYDISPLAYATTRIBEXTPROC __eglewQueryDisplayAttribEXT = NULL;
+
+PFNEGLQUERYDMABUFFORMATSEXTPROC __eglewQueryDmaBufFormatsEXT = NULL;
+PFNEGLQUERYDMABUFMODIFIERSEXTPROC __eglewQueryDmaBufModifiersEXT = NULL;
+
+PFNEGLGETOUTPUTLAYERSEXTPROC __eglewGetOutputLayersEXT = NULL;
+PFNEGLGETOUTPUTPORTSEXTPROC __eglewGetOutputPortsEXT = NULL;
+PFNEGLOUTPUTLAYERATTRIBEXTPROC __eglewOutputLayerAttribEXT = NULL;
+PFNEGLOUTPUTPORTATTRIBEXTPROC __eglewOutputPortAttribEXT = NULL;
+PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC __eglewQueryOutputLayerAttribEXT = NULL;
+PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC __eglewQueryOutputLayerStringEXT = NULL;
+PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC __eglewQueryOutputPortAttribEXT = NULL;
+PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC __eglewQueryOutputPortStringEXT = NULL;
+
+PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC __eglewCreatePlatformPixmapSurfaceEXT = NULL;
+PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC __eglewCreatePlatformWindowSurfaceEXT = NULL;
+PFNEGLGETPLATFORMDISPLAYEXTPROC __eglewGetPlatformDisplayEXT = NULL;
+
+PFNEGLSTREAMCONSUMEROUTPUTEXTPROC __eglewStreamConsumerOutputEXT = NULL;
+
+PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC __eglewQuerySupportedCompressionRatesEXT = NULL;
+
+PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC __eglewSwapBuffersWithDamageEXT = NULL;
+
+PFNEGLUNSIGNALSYNCEXTPROC __eglewUnsignalSyncEXT = NULL;
+
+PFNEGLCREATEPIXMAPSURFACEHIPROC __eglewCreatePixmapSurfaceHI = NULL;
+
+PFNEGLCREATESYNC64KHRPROC __eglewCreateSync64KHR = NULL;
+
+PFNEGLDEBUGMESSAGECONTROLKHRPROC __eglewDebugMessageControlKHR = NULL;
+PFNEGLLABELOBJECTKHRPROC __eglewLabelObjectKHR = NULL;
+PFNEGLQUERYDEBUGKHRPROC __eglewQueryDebugKHR = NULL;
+
+PFNEGLQUERYDISPLAYATTRIBKHRPROC __eglewQueryDisplayAttribKHR = NULL;
+
+PFNEGLCREATEIMAGEKHRPROC __eglewCreateImageKHR = NULL;
+PFNEGLDESTROYIMAGEKHRPROC __eglewDestroyImageKHR = NULL;
+
+PFNEGLLOCKSURFACEKHRPROC __eglewLockSurfaceKHR = NULL;
+PFNEGLUNLOCKSURFACEKHRPROC __eglewUnlockSurfaceKHR = NULL;
+
+PFNEGLQUERYSURFACE64KHRPROC __eglewQuerySurface64KHR = NULL;
+
+PFNEGLSETDAMAGEREGIONKHRPROC __eglewSetDamageRegionKHR = NULL;
+
+PFNEGLCLIENTWAITSYNCKHRPROC __eglewClientWaitSyncKHR = NULL;
+PFNEGLCREATESYNCKHRPROC __eglewCreateSyncKHR = NULL;
+PFNEGLDESTROYSYNCKHRPROC __eglewDestroySyncKHR = NULL;
+PFNEGLGETSYNCATTRIBKHRPROC __eglewGetSyncAttribKHR = NULL;
+PFNEGLSIGNALSYNCKHRPROC __eglewSignalSyncKHR = NULL;
+
+PFNEGLCREATESTREAMKHRPROC __eglewCreateStreamKHR = NULL;
+PFNEGLDESTROYSTREAMKHRPROC __eglewDestroyStreamKHR = NULL;
+PFNEGLQUERYSTREAMKHRPROC __eglewQueryStreamKHR = NULL;
+PFNEGLQUERYSTREAMU64KHRPROC __eglewQueryStreamu64KHR = NULL;
+PFNEGLSTREAMATTRIBKHRPROC __eglewStreamAttribKHR = NULL;
+
+PFNEGLCREATESTREAMATTRIBKHRPROC __eglewCreateStreamAttribKHR = NULL;
+PFNEGLQUERYSTREAMATTRIBKHRPROC __eglewQueryStreamAttribKHR = NULL;
+PFNEGLSETSTREAMATTRIBKHRPROC __eglewSetStreamAttribKHR = NULL;
+PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC __eglewStreamConsumerAcquireAttribKHR = NULL;
+PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC __eglewStreamConsumerReleaseAttribKHR = NULL;
+
+PFNEGLSTREAMCONSUMERACQUIREKHRPROC __eglewStreamConsumerAcquireKHR = NULL;
+PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC __eglewStreamConsumerGLTextureExternalKHR = NULL;
+PFNEGLSTREAMCONSUMERRELEASEKHRPROC __eglewStreamConsumerReleaseKHR = NULL;
+
+PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC __eglewCreateStreamFromFileDescriptorKHR = NULL;
+PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC __eglewGetStreamFileDescriptorKHR = NULL;
+
+PFNEGLQUERYSTREAMTIMEKHRPROC __eglewQueryStreamTimeKHR = NULL;
+
+PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC __eglewCreateStreamProducerSurfaceKHR = NULL;
+
+PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC __eglewSwapBuffersWithDamageKHR = NULL;
+
+PFNEGLWAITSYNCKHRPROC __eglewWaitSyncKHR = NULL;
+
+PFNEGLCREATEDRMIMAGEMESAPROC __eglewCreateDRMImageMESA = NULL;
+PFNEGLEXPORTDRMIMAGEMESAPROC __eglewExportDRMImageMESA = NULL;
+
+PFNEGLEXPORTDMABUFIMAGEMESAPROC __eglewExportDMABUFImageMESA = NULL;
+PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC __eglewExportDMABUFImageQueryMESA = NULL;
+
+PFNEGLGETDISPLAYDRIVERCONFIGPROC __eglewGetDisplayDriverConfig = NULL;
+PFNEGLGETDISPLAYDRIVERNAMEPROC __eglewGetDisplayDriverName = NULL;
+
+PFNEGLSWAPBUFFERSREGIONNOKPROC __eglewSwapBuffersRegionNOK = NULL;
+
+PFNEGLSWAPBUFFERSREGION2NOKPROC __eglewSwapBuffersRegion2NOK = NULL;
+
+PFNEGLQUERYNATIVEDISPLAYNVPROC __eglewQueryNativeDisplayNV = NULL;
+PFNEGLQUERYNATIVEPIXMAPNVPROC __eglewQueryNativePixmapNV = NULL;
+PFNEGLQUERYNATIVEWINDOWNVPROC __eglewQueryNativeWindowNV = NULL;
+
+PFNEGLPOSTSUBBUFFERNVPROC __eglewPostSubBufferNV = NULL;
+
+PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC __eglewQueryStreamConsumerEventNV = NULL;
+PFNEGLSTREAMACQUIREIMAGENVPROC __eglewStreamAcquireImageNV = NULL;
+PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC __eglewStreamImageConsumerConnectNV = NULL;
+PFNEGLSTREAMRELEASEIMAGENVPROC __eglewStreamReleaseImageNV = NULL;
+
+PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC __eglewStreamConsumerGLTextureExternalAttribsNV = NULL;
+
+PFNEGLSTREAMFLUSHNVPROC __eglewStreamFlushNV = NULL;
+
+PFNEGLQUERYDISPLAYATTRIBNVPROC __eglewQueryDisplayAttribNV = NULL;
+PFNEGLQUERYSTREAMMETADATANVPROC __eglewQueryStreamMetadataNV = NULL;
+PFNEGLSETSTREAMMETADATANVPROC __eglewSetStreamMetadataNV = NULL;
+
+PFNEGLRESETSTREAMNVPROC __eglewResetStreamNV = NULL;
+
+PFNEGLCREATESTREAMSYNCNVPROC __eglewCreateStreamSyncNV = NULL;
+
+PFNEGLCLIENTWAITSYNCNVPROC __eglewClientWaitSyncNV = NULL;
+PFNEGLCREATEFENCESYNCNVPROC __eglewCreateFenceSyncNV = NULL;
+PFNEGLDESTROYSYNCNVPROC __eglewDestroySyncNV = NULL;
+PFNEGLFENCENVPROC __eglewFenceNV = NULL;
+PFNEGLGETSYNCATTRIBNVPROC __eglewGetSyncAttribNV = NULL;
+PFNEGLSIGNALSYNCNVPROC __eglewSignalSyncNV = NULL;
+
+PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC __eglewGetSystemTimeFrequencyNV = NULL;
+PFNEGLGETSYSTEMTIMENVPROC __eglewGetSystemTimeNV = NULL;
+
+PFNEGLBINDWAYLANDDISPLAYWLPROC __eglewBindWaylandDisplayWL = NULL;
+PFNEGLQUERYWAYLANDBUFFERWLPROC __eglewQueryWaylandBufferWL = NULL;
+PFNEGLUNBINDWAYLANDDISPLAYWLPROC __eglewUnbindWaylandDisplayWL = NULL;
+
+PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC __eglewCreateWaylandBufferFromImageWL = NULL;
+GLboolean __EGLEW_VERSION_1_0 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_1 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_2 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_3 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_4 = GL_FALSE;
+GLboolean __EGLEW_VERSION_1_5 = GL_FALSE;
+GLboolean __EGLEW_ANDROID_GLES_layers = GL_FALSE;
+GLboolean __EGLEW_ANDROID_blob_cache = GL_FALSE;
+GLboolean __EGLEW_ANDROID_create_native_client_buffer = GL_FALSE;
+GLboolean __EGLEW_ANDROID_framebuffer_target = GL_FALSE;
+GLboolean __EGLEW_ANDROID_front_buffer_auto_refresh = GL_FALSE;
+GLboolean __EGLEW_ANDROID_get_frame_timestamps = GL_FALSE;
+GLboolean __EGLEW_ANDROID_get_native_client_buffer = GL_FALSE;
+GLboolean __EGLEW_ANDROID_image_native_buffer = GL_FALSE;
+GLboolean __EGLEW_ANDROID_native_fence_sync = GL_FALSE;
+GLboolean __EGLEW_ANDROID_presentation_time = GL_FALSE;
+GLboolean __EGLEW_ANDROID_recordable = GL_FALSE;
+GLboolean __EGLEW_ANGLE_d3d_share_handle_client_buffer = GL_FALSE;
+GLboolean __EGLEW_ANGLE_device_d3d = GL_FALSE;
+GLboolean __EGLEW_ANGLE_query_surface_pointer = GL_FALSE;
+GLboolean __EGLEW_ANGLE_surface_d3d_texture_2d_share_handle = GL_FALSE;
+GLboolean __EGLEW_ANGLE_sync_control_rate = GL_FALSE;
+GLboolean __EGLEW_ANGLE_window_fixed_size = GL_FALSE;
+GLboolean __EGLEW_ARM_image_format = GL_FALSE;
+GLboolean __EGLEW_ARM_implicit_external_sync = GL_FALSE;
+GLboolean __EGLEW_ARM_pixmap_multisample_discard = GL_FALSE;
+GLboolean __EGLEW_EXT_bind_to_front = GL_FALSE;
+GLboolean __EGLEW_EXT_buffer_age = GL_FALSE;
+GLboolean __EGLEW_EXT_client_extensions = GL_FALSE;
+GLboolean __EGLEW_EXT_client_sync = GL_FALSE;
+GLboolean __EGLEW_EXT_compositor = GL_FALSE;
+GLboolean __EGLEW_EXT_config_select_group = GL_FALSE;
+GLboolean __EGLEW_EXT_create_context_robustness = GL_FALSE;
+GLboolean __EGLEW_EXT_device_base = GL_FALSE;
+GLboolean __EGLEW_EXT_device_drm = GL_FALSE;
+GLboolean __EGLEW_EXT_device_drm_render_node = GL_FALSE;
+GLboolean __EGLEW_EXT_device_enumeration = GL_FALSE;
+GLboolean __EGLEW_EXT_device_openwf = GL_FALSE;
+GLboolean __EGLEW_EXT_device_persistent_id = GL_FALSE;
+GLboolean __EGLEW_EXT_device_query = GL_FALSE;
+GLboolean __EGLEW_EXT_device_query_name = GL_FALSE;
+GLboolean __EGLEW_EXT_explicit_device = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_bt2020_linear = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_bt2020_pq = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_display_p3 = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_display_p3_linear = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_display_p3_passthrough = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_scrgb = GL_FALSE;
+GLboolean __EGLEW_EXT_gl_colorspace_scrgb_linear = GL_FALSE;
+GLboolean __EGLEW_EXT_image_dma_buf_import = GL_FALSE;
+GLboolean __EGLEW_EXT_image_dma_buf_import_modifiers = GL_FALSE;
+GLboolean __EGLEW_EXT_image_gl_colorspace = GL_FALSE;
+GLboolean __EGLEW_EXT_image_implicit_sync_control = GL_FALSE;
+GLboolean __EGLEW_EXT_multiview_window = GL_FALSE;
+GLboolean __EGLEW_EXT_output_base = GL_FALSE;
+GLboolean __EGLEW_EXT_output_drm = GL_FALSE;
+GLboolean __EGLEW_EXT_output_openwf = GL_FALSE;
+GLboolean __EGLEW_EXT_pixel_format_float = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_base = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_device = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_wayland = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_x11 = GL_FALSE;
+GLboolean __EGLEW_EXT_platform_xcb = GL_FALSE;
+GLboolean __EGLEW_EXT_present_opaque = GL_FALSE;
+GLboolean __EGLEW_EXT_protected_content = GL_FALSE;
+GLboolean __EGLEW_EXT_protected_surface = GL_FALSE;
+GLboolean __EGLEW_EXT_stream_consumer_egloutput = GL_FALSE;
+GLboolean __EGLEW_EXT_surface_CTA861_3_metadata = GL_FALSE;
+GLboolean __EGLEW_EXT_surface_SMPTE2086_metadata = GL_FALSE;
+GLboolean __EGLEW_EXT_surface_compression = GL_FALSE;
+GLboolean __EGLEW_EXT_swap_buffers_with_damage = GL_FALSE;
+GLboolean __EGLEW_EXT_sync_reuse = GL_FALSE;
+GLboolean __EGLEW_EXT_yuv_surface = GL_FALSE;
+GLboolean __EGLEW_HI_clientpixmap = GL_FALSE;
+GLboolean __EGLEW_HI_colorformats = GL_FALSE;
+GLboolean __EGLEW_IMG_context_priority = GL_FALSE;
+GLboolean __EGLEW_IMG_image_plane_attribs = GL_FALSE;
+GLboolean __EGLEW_KHR_cl_event = GL_FALSE;
+GLboolean __EGLEW_KHR_cl_event2 = GL_FALSE;
+GLboolean __EGLEW_KHR_client_get_all_proc_addresses = GL_FALSE;
+GLboolean __EGLEW_KHR_config_attribs = GL_FALSE;
+GLboolean __EGLEW_KHR_context_flush_control = GL_FALSE;
+GLboolean __EGLEW_KHR_create_context = GL_FALSE;
+GLboolean __EGLEW_KHR_create_context_no_error = GL_FALSE;
+GLboolean __EGLEW_KHR_debug = GL_FALSE;
+GLboolean __EGLEW_KHR_display_reference = GL_FALSE;
+GLboolean __EGLEW_KHR_fence_sync = GL_FALSE;
+GLboolean __EGLEW_KHR_get_all_proc_addresses = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_colorspace = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_renderbuffer_image = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_texture_2D_image = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_texture_3D_image = GL_FALSE;
+GLboolean __EGLEW_KHR_gl_texture_cubemap_image = GL_FALSE;
+GLboolean __EGLEW_KHR_image = GL_FALSE;
+GLboolean __EGLEW_KHR_image_base = GL_FALSE;
+GLboolean __EGLEW_KHR_image_pixmap = GL_FALSE;
+GLboolean __EGLEW_KHR_lock_surface = GL_FALSE;
+GLboolean __EGLEW_KHR_lock_surface2 = GL_FALSE;
+GLboolean __EGLEW_KHR_lock_surface3 = GL_FALSE;
+GLboolean __EGLEW_KHR_mutable_render_buffer = GL_FALSE;
+GLboolean __EGLEW_KHR_no_config_context = GL_FALSE;
+GLboolean __EGLEW_KHR_partial_update = GL_FALSE;
+GLboolean __EGLEW_KHR_platform_android = GL_FALSE;
+GLboolean __EGLEW_KHR_platform_gbm = GL_FALSE;
+GLboolean __EGLEW_KHR_platform_wayland = GL_FALSE;
+GLboolean __EGLEW_KHR_platform_x11 = GL_FALSE;
+GLboolean __EGLEW_KHR_reusable_sync = GL_FALSE;
+GLboolean __EGLEW_KHR_stream = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_attrib = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_consumer_gltexture = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_cross_process_fd = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_fifo = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_producer_aldatalocator = GL_FALSE;
+GLboolean __EGLEW_KHR_stream_producer_eglsurface = GL_FALSE;
+GLboolean __EGLEW_KHR_surfaceless_context = GL_FALSE;
+GLboolean __EGLEW_KHR_swap_buffers_with_damage = GL_FALSE;
+GLboolean __EGLEW_KHR_vg_parent_image = GL_FALSE;
+GLboolean __EGLEW_KHR_wait_sync = GL_FALSE;
+GLboolean __EGLEW_MESA_drm_image = GL_FALSE;
+GLboolean __EGLEW_MESA_image_dma_buf_export = GL_FALSE;
+GLboolean __EGLEW_MESA_platform_gbm = GL_FALSE;
+GLboolean __EGLEW_MESA_platform_surfaceless = GL_FALSE;
+GLboolean __EGLEW_MESA_query_driver = GL_FALSE;
+GLboolean __EGLEW_NOK_swap_region = GL_FALSE;
+GLboolean __EGLEW_NOK_swap_region2 = GL_FALSE;
+GLboolean __EGLEW_NOK_texture_from_pixmap = GL_FALSE;
+GLboolean __EGLEW_NV_3dvision_surface = GL_FALSE;
+GLboolean __EGLEW_NV_context_priority_realtime = GL_FALSE;
+GLboolean __EGLEW_NV_coverage_sample = GL_FALSE;
+GLboolean __EGLEW_NV_coverage_sample_resolve = GL_FALSE;
+GLboolean __EGLEW_NV_cuda_event = GL_FALSE;
+GLboolean __EGLEW_NV_depth_nonlinear = GL_FALSE;
+GLboolean __EGLEW_NV_device_cuda = GL_FALSE;
+GLboolean __EGLEW_NV_native_query = GL_FALSE;
+GLboolean __EGLEW_NV_post_convert_rounding = GL_FALSE;
+GLboolean __EGLEW_NV_post_sub_buffer = GL_FALSE;
+GLboolean __EGLEW_NV_quadruple_buffer = GL_FALSE;
+GLboolean __EGLEW_NV_robustness_video_memory_purge = GL_FALSE;
+GLboolean __EGLEW_NV_stream_consumer_eglimage = GL_FALSE;
+GLboolean __EGLEW_NV_stream_consumer_gltexture_yuv = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_display = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_object = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_partition = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_process = GL_FALSE;
+GLboolean __EGLEW_NV_stream_cross_system = GL_FALSE;
+GLboolean __EGLEW_NV_stream_dma = GL_FALSE;
+GLboolean __EGLEW_NV_stream_fifo_next = GL_FALSE;
+GLboolean __EGLEW_NV_stream_fifo_synchronous = GL_FALSE;
+GLboolean __EGLEW_NV_stream_flush = GL_FALSE;
+GLboolean __EGLEW_NV_stream_frame_limits = GL_FALSE;
+GLboolean __EGLEW_NV_stream_metadata = GL_FALSE;
+GLboolean __EGLEW_NV_stream_origin = GL_FALSE;
+GLboolean __EGLEW_NV_stream_remote = GL_FALSE;
+GLboolean __EGLEW_NV_stream_reset = GL_FALSE;
+GLboolean __EGLEW_NV_stream_socket = GL_FALSE;
+GLboolean __EGLEW_NV_stream_socket_inet = GL_FALSE;
+GLboolean __EGLEW_NV_stream_socket_unix = GL_FALSE;
+GLboolean __EGLEW_NV_stream_sync = GL_FALSE;
+GLboolean __EGLEW_NV_sync = GL_FALSE;
+GLboolean __EGLEW_NV_system_time = GL_FALSE;
+GLboolean __EGLEW_NV_triple_buffer = GL_FALSE;
+GLboolean __EGLEW_TIZEN_image_native_buffer = GL_FALSE;
+GLboolean __EGLEW_TIZEN_image_native_surface = GL_FALSE;
+GLboolean __EGLEW_WL_bind_wayland_display = GL_FALSE;
+GLboolean __EGLEW_WL_create_wayland_buffer_from_image = GL_FALSE;
+#ifdef EGL_VERSION_1_0
+
+static GLboolean _glewInit_EGL_VERSION_1_0 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglChooseConfig = (PFNEGLCHOOSECONFIGPROC)glewGetProcAddress((const GLubyte*)"eglChooseConfig")) == NULL) || r;
+ r = ((eglCopyBuffers = (PFNEGLCOPYBUFFERSPROC)glewGetProcAddress((const GLubyte*)"eglCopyBuffers")) == NULL) || r;
+ r = ((eglCreateContext = (PFNEGLCREATECONTEXTPROC)glewGetProcAddress((const GLubyte*)"eglCreateContext")) == NULL) || r;
+ r = ((eglCreatePbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreatePbufferSurface")) == NULL) || r;
+ r = ((eglCreatePixmapSurface = (PFNEGLCREATEPIXMAPSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreatePixmapSurface")) == NULL) || r;
+ r = ((eglCreateWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreateWindowSurface")) == NULL) || r;
+ r = ((eglDestroyContext = (PFNEGLDESTROYCONTEXTPROC)glewGetProcAddress((const GLubyte*)"eglDestroyContext")) == NULL) || r;
+ r = ((eglDestroySurface = (PFNEGLDESTROYSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglDestroySurface")) == NULL) || r;
+ r = ((eglGetConfigAttrib = (PFNEGLGETCONFIGATTRIBPROC)glewGetProcAddress((const GLubyte*)"eglGetConfigAttrib")) == NULL) || r;
+ r = ((eglGetConfigs = (PFNEGLGETCONFIGSPROC)glewGetProcAddress((const GLubyte*)"eglGetConfigs")) == NULL) || r;
+ r = ((eglGetCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC)glewGetProcAddress((const GLubyte*)"eglGetCurrentDisplay")) == NULL) || r;
+ r = ((eglGetCurrentSurface = (PFNEGLGETCURRENTSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglGetCurrentSurface")) == NULL) || r;
+ r = ((eglGetDisplay = (PFNEGLGETDISPLAYPROC)glewGetProcAddress((const GLubyte*)"eglGetDisplay")) == NULL) || r;
+ r = ((eglGetError = (PFNEGLGETERRORPROC)glewGetProcAddress((const GLubyte*)"eglGetError")) == NULL) || r;
+ r = ((eglInitialize = (PFNEGLINITIALIZEPROC)glewGetProcAddress((const GLubyte*)"eglInitialize")) == NULL) || r;
+ r = ((eglMakeCurrent = (PFNEGLMAKECURRENTPROC)glewGetProcAddress((const GLubyte*)"eglMakeCurrent")) == NULL) || r;
+ r = ((eglQueryContext = (PFNEGLQUERYCONTEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryContext")) == NULL) || r;
+ r = ((eglQueryString = (PFNEGLQUERYSTRINGPROC)glewGetProcAddress((const GLubyte*)"eglQueryString")) == NULL) || r;
+ r = ((eglQuerySurface = (PFNEGLQUERYSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglQuerySurface")) == NULL) || r;
+ r = ((eglSwapBuffers = (PFNEGLSWAPBUFFERSPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffers")) == NULL) || r;
+ r = ((eglTerminate = (PFNEGLTERMINATEPROC)glewGetProcAddress((const GLubyte*)"eglTerminate")) == NULL) || r;
+ r = ((eglWaitGL = (PFNEGLWAITGLPROC)glewGetProcAddress((const GLubyte*)"eglWaitGL")) == NULL) || r;
+ r = ((eglWaitNative = (PFNEGLWAITNATIVEPROC)glewGetProcAddress((const GLubyte*)"eglWaitNative")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_0 */
+
+#ifdef EGL_VERSION_1_1
+
+static GLboolean _glewInit_EGL_VERSION_1_1 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglBindTexImage = (PFNEGLBINDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"eglBindTexImage")) == NULL) || r;
+ r = ((eglReleaseTexImage = (PFNEGLRELEASETEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"eglReleaseTexImage")) == NULL) || r;
+ r = ((eglSurfaceAttrib = (PFNEGLSURFACEATTRIBPROC)glewGetProcAddress((const GLubyte*)"eglSurfaceAttrib")) == NULL) || r;
+ r = ((eglSwapInterval = (PFNEGLSWAPINTERVALPROC)glewGetProcAddress((const GLubyte*)"eglSwapInterval")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_1 */
+
+#ifdef EGL_VERSION_1_2
+
+static GLboolean _glewInit_EGL_VERSION_1_2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglBindAPI = (PFNEGLBINDAPIPROC)glewGetProcAddress((const GLubyte*)"eglBindAPI")) == NULL) || r;
+ r = ((eglCreatePbufferFromClientBuffer = (PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC)glewGetProcAddress((const GLubyte*)"eglCreatePbufferFromClientBuffer")) == NULL) || r;
+ r = ((eglQueryAPI = (PFNEGLQUERYAPIPROC)glewGetProcAddress((const GLubyte*)"eglQueryAPI")) == NULL) || r;
+ r = ((eglReleaseThread = (PFNEGLRELEASETHREADPROC)glewGetProcAddress((const GLubyte*)"eglReleaseThread")) == NULL) || r;
+ r = ((eglWaitClient = (PFNEGLWAITCLIENTPROC)glewGetProcAddress((const GLubyte*)"eglWaitClient")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_2 */
+
+#ifdef EGL_VERSION_1_4
+
+static GLboolean _glewInit_EGL_VERSION_1_4 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetCurrentContext = (PFNEGLGETCURRENTCONTEXTPROC)glewGetProcAddress((const GLubyte*)"eglGetCurrentContext")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_4 */
+
+#ifdef EGL_VERSION_1_5
+
+static GLboolean _glewInit_EGL_VERSION_1_5 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglClientWaitSync = (PFNEGLCLIENTWAITSYNCPROC)glewGetProcAddress((const GLubyte*)"eglClientWaitSync")) == NULL) || r;
+ r = ((eglCreateImage = (PFNEGLCREATEIMAGEPROC)glewGetProcAddress((const GLubyte*)"eglCreateImage")) == NULL) || r;
+ r = ((eglCreatePlatformPixmapSurface = (PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreatePlatformPixmapSurface")) == NULL) || r;
+ r = ((eglCreatePlatformWindowSurface = (PFNEGLCREATEPLATFORMWINDOWSURFACEPROC)glewGetProcAddress((const GLubyte*)"eglCreatePlatformWindowSurface")) == NULL) || r;
+ r = ((eglCreateSync = (PFNEGLCREATESYNCPROC)glewGetProcAddress((const GLubyte*)"eglCreateSync")) == NULL) || r;
+ r = ((eglDestroyImage = (PFNEGLDESTROYIMAGEPROC)glewGetProcAddress((const GLubyte*)"eglDestroyImage")) == NULL) || r;
+ r = ((eglDestroySync = (PFNEGLDESTROYSYNCPROC)glewGetProcAddress((const GLubyte*)"eglDestroySync")) == NULL) || r;
+ r = ((eglGetPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYPROC)glewGetProcAddress((const GLubyte*)"eglGetPlatformDisplay")) == NULL) || r;
+ r = ((eglGetSyncAttrib = (PFNEGLGETSYNCATTRIBPROC)glewGetProcAddress((const GLubyte*)"eglGetSyncAttrib")) == NULL) || r;
+ r = ((eglWaitSync = (PFNEGLWAITSYNCPROC)glewGetProcAddress((const GLubyte*)"eglWaitSync")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_VERSION_1_5 */
+
+#ifdef EGL_ANDROID_blob_cache
+
+static GLboolean _glewInit_EGL_ANDROID_blob_cache ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSetBlobCacheFuncsANDROID = (PFNEGLSETBLOBCACHEFUNCSANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglSetBlobCacheFuncsANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_blob_cache */
+
+#ifdef EGL_ANDROID_create_native_client_buffer
+
+static GLboolean _glewInit_EGL_ANDROID_create_native_client_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateNativeClientBufferANDROID = (PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglCreateNativeClientBufferANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_create_native_client_buffer */
+
+#ifdef EGL_ANDROID_get_frame_timestamps
+
+static GLboolean _glewInit_EGL_ANDROID_get_frame_timestamps ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetCompositorTimingANDROID = (PFNEGLGETCOMPOSITORTIMINGANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetCompositorTimingANDROID")) == NULL) || r;
+ r = ((eglGetCompositorTimingSupportedANDROID = (PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetCompositorTimingSupportedANDROID")) == NULL) || r;
+ r = ((eglGetFrameTimestampSupportedANDROID = (PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetFrameTimestampSupportedANDROID")) == NULL) || r;
+ r = ((eglGetFrameTimestampsANDROID = (PFNEGLGETFRAMETIMESTAMPSANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetFrameTimestampsANDROID")) == NULL) || r;
+ r = ((eglGetNextFrameIdANDROID = (PFNEGLGETNEXTFRAMEIDANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetNextFrameIdANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_get_frame_timestamps */
+
+#ifdef EGL_ANDROID_get_native_client_buffer
+
+static GLboolean _glewInit_EGL_ANDROID_get_native_client_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetNativeClientBufferANDROID = (PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglGetNativeClientBufferANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_get_native_client_buffer */
+
+#ifdef EGL_ANDROID_native_fence_sync
+
+static GLboolean _glewInit_EGL_ANDROID_native_fence_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglDupNativeFenceFDANDROID = (PFNEGLDUPNATIVEFENCEFDANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglDupNativeFenceFDANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_native_fence_sync */
+
+#ifdef EGL_ANDROID_presentation_time
+
+static GLboolean _glewInit_EGL_ANDROID_presentation_time ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglPresentationTimeANDROID = (PFNEGLPRESENTATIONTIMEANDROIDPROC)glewGetProcAddress((const GLubyte*)"eglPresentationTimeANDROID")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANDROID_presentation_time */
+
+#ifdef EGL_ANGLE_query_surface_pointer
+
+static GLboolean _glewInit_EGL_ANGLE_query_surface_pointer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQuerySurfacePointerANGLE = (PFNEGLQUERYSURFACEPOINTERANGLEPROC)glewGetProcAddress((const GLubyte*)"eglQuerySurfacePointerANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANGLE_query_surface_pointer */
+
+#ifdef EGL_ANGLE_sync_control_rate
+
+static GLboolean _glewInit_EGL_ANGLE_sync_control_rate ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetMscRateANGLE = (PFNEGLGETMSCRATEANGLEPROC)glewGetProcAddress((const GLubyte*)"eglGetMscRateANGLE")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_ANGLE_sync_control_rate */
+
+#ifdef EGL_EXT_client_sync
+
+static GLboolean _glewInit_EGL_EXT_client_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglClientSignalSyncEXT = (PFNEGLCLIENTSIGNALSYNCEXTPROC)glewGetProcAddress((const GLubyte*)"eglClientSignalSyncEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_client_sync */
+
+#ifdef EGL_EXT_compositor
+
+static GLboolean _glewInit_EGL_EXT_compositor ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCompositorBindTexWindowEXT = (PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorBindTexWindowEXT")) == NULL) || r;
+ r = ((eglCompositorSetContextAttributesEXT = (PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetContextAttributesEXT")) == NULL) || r;
+ r = ((eglCompositorSetContextListEXT = (PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetContextListEXT")) == NULL) || r;
+ r = ((eglCompositorSetSizeEXT = (PFNEGLCOMPOSITORSETSIZEEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetSizeEXT")) == NULL) || r;
+ r = ((eglCompositorSetWindowAttributesEXT = (PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetWindowAttributesEXT")) == NULL) || r;
+ r = ((eglCompositorSetWindowListEXT = (PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSetWindowListEXT")) == NULL) || r;
+ r = ((eglCompositorSwapPolicyEXT = (PFNEGLCOMPOSITORSWAPPOLICYEXTPROC)glewGetProcAddress((const GLubyte*)"eglCompositorSwapPolicyEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_compositor */
+
+#ifdef EGL_EXT_device_enumeration
+
+static GLboolean _glewInit_EGL_EXT_device_enumeration ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDevicesEXT = (PFNEGLQUERYDEVICESEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDevicesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_device_enumeration */
+
+#ifdef EGL_EXT_device_persistent_id
+
+static GLboolean _glewInit_EGL_EXT_device_persistent_id ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDeviceBinaryEXT = (PFNEGLQUERYDEVICEBINARYEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDeviceBinaryEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_device_persistent_id */
+
+#ifdef EGL_EXT_device_query
+
+static GLboolean _glewInit_EGL_EXT_device_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDeviceAttribEXT = (PFNEGLQUERYDEVICEATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDeviceAttribEXT")) == NULL) || r;
+ r = ((eglQueryDeviceStringEXT = (PFNEGLQUERYDEVICESTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDeviceStringEXT")) == NULL) || r;
+ r = ((eglQueryDisplayAttribEXT = (PFNEGLQUERYDISPLAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDisplayAttribEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_device_query */
+
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+
+static GLboolean _glewInit_EGL_EXT_image_dma_buf_import_modifiers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDmaBufFormatsEXT = (PFNEGLQUERYDMABUFFORMATSEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDmaBufFormatsEXT")) == NULL) || r;
+ r = ((eglQueryDmaBufModifiersEXT = (PFNEGLQUERYDMABUFMODIFIERSEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryDmaBufModifiersEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+
+#ifdef EGL_EXT_output_base
+
+static GLboolean _glewInit_EGL_EXT_output_base ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetOutputLayersEXT = (PFNEGLGETOUTPUTLAYERSEXTPROC)glewGetProcAddress((const GLubyte*)"eglGetOutputLayersEXT")) == NULL) || r;
+ r = ((eglGetOutputPortsEXT = (PFNEGLGETOUTPUTPORTSEXTPROC)glewGetProcAddress((const GLubyte*)"eglGetOutputPortsEXT")) == NULL) || r;
+ r = ((eglOutputLayerAttribEXT = (PFNEGLOUTPUTLAYERATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglOutputLayerAttribEXT")) == NULL) || r;
+ r = ((eglOutputPortAttribEXT = (PFNEGLOUTPUTPORTATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglOutputPortAttribEXT")) == NULL) || r;
+ r = ((eglQueryOutputLayerAttribEXT = (PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryOutputLayerAttribEXT")) == NULL) || r;
+ r = ((eglQueryOutputLayerStringEXT = (PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryOutputLayerStringEXT")) == NULL) || r;
+ r = ((eglQueryOutputPortAttribEXT = (PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryOutputPortAttribEXT")) == NULL) || r;
+ r = ((eglQueryOutputPortStringEXT = (PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"eglQueryOutputPortStringEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_output_base */
+
+#ifdef EGL_EXT_platform_base
+
+static GLboolean _glewInit_EGL_EXT_platform_base ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreatePlatformPixmapSurfaceEXT = (PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC)glewGetProcAddress((const GLubyte*)"eglCreatePlatformPixmapSurfaceEXT")) == NULL) || r;
+ r = ((eglCreatePlatformWindowSurfaceEXT = (PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)glewGetProcAddress((const GLubyte*)"eglCreatePlatformWindowSurfaceEXT")) == NULL) || r;
+ r = ((eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC)glewGetProcAddress((const GLubyte*)"eglGetPlatformDisplayEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_platform_base */
+
+#ifdef EGL_EXT_stream_consumer_egloutput
+
+static GLboolean _glewInit_EGL_EXT_stream_consumer_egloutput ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglStreamConsumerOutputEXT = (PFNEGLSTREAMCONSUMEROUTPUTEXTPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerOutputEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_stream_consumer_egloutput */
+
+#ifdef EGL_EXT_surface_compression
+
+static GLboolean _glewInit_EGL_EXT_surface_compression ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQuerySupportedCompressionRatesEXT = (PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC)glewGetProcAddress((const GLubyte*)"eglQuerySupportedCompressionRatesEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_surface_compression */
+
+#ifdef EGL_EXT_swap_buffers_with_damage
+
+static GLboolean _glewInit_EGL_EXT_swap_buffers_with_damage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSwapBuffersWithDamageEXT = (PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffersWithDamageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_swap_buffers_with_damage */
+
+#ifdef EGL_EXT_sync_reuse
+
+static GLboolean _glewInit_EGL_EXT_sync_reuse ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglUnsignalSyncEXT = (PFNEGLUNSIGNALSYNCEXTPROC)glewGetProcAddress((const GLubyte*)"eglUnsignalSyncEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_EXT_sync_reuse */
+
+#ifdef EGL_HI_clientpixmap
+
+static GLboolean _glewInit_EGL_HI_clientpixmap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreatePixmapSurfaceHI = (PFNEGLCREATEPIXMAPSURFACEHIPROC)glewGetProcAddress((const GLubyte*)"eglCreatePixmapSurfaceHI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_HI_clientpixmap */
+
+#ifdef EGL_KHR_cl_event2
+
+static GLboolean _glewInit_EGL_KHR_cl_event2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateSync64KHR = (PFNEGLCREATESYNC64KHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateSync64KHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_cl_event2 */
+
+#ifdef EGL_KHR_debug
+
+static GLboolean _glewInit_EGL_KHR_debug ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglDebugMessageControlKHR = (PFNEGLDEBUGMESSAGECONTROLKHRPROC)glewGetProcAddress((const GLubyte*)"eglDebugMessageControlKHR")) == NULL) || r;
+ r = ((eglLabelObjectKHR = (PFNEGLLABELOBJECTKHRPROC)glewGetProcAddress((const GLubyte*)"eglLabelObjectKHR")) == NULL) || r;
+ r = ((eglQueryDebugKHR = (PFNEGLQUERYDEBUGKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryDebugKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_debug */
+
+#ifdef EGL_KHR_display_reference
+
+static GLboolean _glewInit_EGL_KHR_display_reference ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDisplayAttribKHR = (PFNEGLQUERYDISPLAYATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryDisplayAttribKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_display_reference */
+
+#ifdef EGL_KHR_image
+
+static GLboolean _glewInit_EGL_KHR_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateImageKHR")) == NULL) || r;
+ r = ((eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC)glewGetProcAddress((const GLubyte*)"eglDestroyImageKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_image */
+
+#ifdef EGL_KHR_lock_surface
+
+static GLboolean _glewInit_EGL_KHR_lock_surface ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglLockSurfaceKHR = (PFNEGLLOCKSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)"eglLockSurfaceKHR")) == NULL) || r;
+ r = ((eglUnlockSurfaceKHR = (PFNEGLUNLOCKSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)"eglUnlockSurfaceKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_lock_surface */
+
+#ifdef EGL_KHR_lock_surface3
+
+static GLboolean _glewInit_EGL_KHR_lock_surface3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQuerySurface64KHR = (PFNEGLQUERYSURFACE64KHRPROC)glewGetProcAddress((const GLubyte*)"eglQuerySurface64KHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_lock_surface3 */
+
+#ifdef EGL_KHR_partial_update
+
+static GLboolean _glewInit_EGL_KHR_partial_update ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSetDamageRegionKHR = (PFNEGLSETDAMAGEREGIONKHRPROC)glewGetProcAddress((const GLubyte*)"eglSetDamageRegionKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_partial_update */
+
+#ifdef EGL_KHR_reusable_sync
+
+static GLboolean _glewInit_EGL_KHR_reusable_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglClientWaitSyncKHR = (PFNEGLCLIENTWAITSYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglClientWaitSyncKHR")) == NULL) || r;
+ r = ((eglCreateSyncKHR = (PFNEGLCREATESYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateSyncKHR")) == NULL) || r;
+ r = ((eglDestroySyncKHR = (PFNEGLDESTROYSYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglDestroySyncKHR")) == NULL) || r;
+ r = ((eglGetSyncAttribKHR = (PFNEGLGETSYNCATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglGetSyncAttribKHR")) == NULL) || r;
+ r = ((eglSignalSyncKHR = (PFNEGLSIGNALSYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglSignalSyncKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_reusable_sync */
+
+#ifdef EGL_KHR_stream
+
+static GLboolean _glewInit_EGL_KHR_stream ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamKHR = (PFNEGLCREATESTREAMKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamKHR")) == NULL) || r;
+ r = ((eglDestroyStreamKHR = (PFNEGLDESTROYSTREAMKHRPROC)glewGetProcAddress((const GLubyte*)"eglDestroyStreamKHR")) == NULL) || r;
+ r = ((eglQueryStreamKHR = (PFNEGLQUERYSTREAMKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamKHR")) == NULL) || r;
+ r = ((eglQueryStreamu64KHR = (PFNEGLQUERYSTREAMU64KHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamu64KHR")) == NULL) || r;
+ r = ((eglStreamAttribKHR = (PFNEGLSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamAttribKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream */
+
+#ifdef EGL_KHR_stream_attrib
+
+static GLboolean _glewInit_EGL_KHR_stream_attrib ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamAttribKHR = (PFNEGLCREATESTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamAttribKHR")) == NULL) || r;
+ r = ((eglQueryStreamAttribKHR = (PFNEGLQUERYSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamAttribKHR")) == NULL) || r;
+ r = ((eglSetStreamAttribKHR = (PFNEGLSETSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglSetStreamAttribKHR")) == NULL) || r;
+ r = ((eglStreamConsumerAcquireAttribKHR = (PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerAcquireAttribKHR")) == NULL) || r;
+ r = ((eglStreamConsumerReleaseAttribKHR = (PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerReleaseAttribKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_attrib */
+
+#ifdef EGL_KHR_stream_consumer_gltexture
+
+static GLboolean _glewInit_EGL_KHR_stream_consumer_gltexture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglStreamConsumerAcquireKHR = (PFNEGLSTREAMCONSUMERACQUIREKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerAcquireKHR")) == NULL) || r;
+ r = ((eglStreamConsumerGLTextureExternalKHR = (PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerGLTextureExternalKHR")) == NULL) || r;
+ r = ((eglStreamConsumerReleaseKHR = (PFNEGLSTREAMCONSUMERRELEASEKHRPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerReleaseKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_consumer_gltexture */
+
+#ifdef EGL_KHR_stream_cross_process_fd
+
+static GLboolean _glewInit_EGL_KHR_stream_cross_process_fd ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamFromFileDescriptorKHR = (PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamFromFileDescriptorKHR")) == NULL) || r;
+ r = ((eglGetStreamFileDescriptorKHR = (PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC)glewGetProcAddress((const GLubyte*)"eglGetStreamFileDescriptorKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_cross_process_fd */
+
+#ifdef EGL_KHR_stream_fifo
+
+static GLboolean _glewInit_EGL_KHR_stream_fifo ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryStreamTimeKHR = (PFNEGLQUERYSTREAMTIMEKHRPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamTimeKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_fifo */
+
+#ifdef EGL_KHR_stream_producer_eglsurface
+
+static GLboolean _glewInit_EGL_KHR_stream_producer_eglsurface ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamProducerSurfaceKHR = (PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamProducerSurfaceKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_stream_producer_eglsurface */
+
+#ifdef EGL_KHR_swap_buffers_with_damage
+
+static GLboolean _glewInit_EGL_KHR_swap_buffers_with_damage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSwapBuffersWithDamageKHR = (PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffersWithDamageKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_swap_buffers_with_damage */
+
+#ifdef EGL_KHR_wait_sync
+
+static GLboolean _glewInit_EGL_KHR_wait_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglWaitSyncKHR = (PFNEGLWAITSYNCKHRPROC)glewGetProcAddress((const GLubyte*)"eglWaitSyncKHR")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_KHR_wait_sync */
+
+#ifdef EGL_MESA_drm_image
+
+static GLboolean _glewInit_EGL_MESA_drm_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateDRMImageMESA = (PFNEGLCREATEDRMIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)"eglCreateDRMImageMESA")) == NULL) || r;
+ r = ((eglExportDRMImageMESA = (PFNEGLEXPORTDRMIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)"eglExportDRMImageMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_MESA_drm_image */
+
+#ifdef EGL_MESA_image_dma_buf_export
+
+static GLboolean _glewInit_EGL_MESA_image_dma_buf_export ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglExportDMABUFImageMESA = (PFNEGLEXPORTDMABUFIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)"eglExportDMABUFImageMESA")) == NULL) || r;
+ r = ((eglExportDMABUFImageQueryMESA = (PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC)glewGetProcAddress((const GLubyte*)"eglExportDMABUFImageQueryMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_MESA_image_dma_buf_export */
+
+#ifdef EGL_MESA_query_driver
+
+static GLboolean _glewInit_EGL_MESA_query_driver ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetDisplayDriverConfig = (PFNEGLGETDISPLAYDRIVERCONFIGPROC)glewGetProcAddress((const GLubyte*)"eglGetDisplayDriverConfig")) == NULL) || r;
+ r = ((eglGetDisplayDriverName = (PFNEGLGETDISPLAYDRIVERNAMEPROC)glewGetProcAddress((const GLubyte*)"eglGetDisplayDriverName")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_MESA_query_driver */
+
+#ifdef EGL_NOK_swap_region
+
+static GLboolean _glewInit_EGL_NOK_swap_region ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSwapBuffersRegionNOK = (PFNEGLSWAPBUFFERSREGIONNOKPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffersRegionNOK")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NOK_swap_region */
+
+#ifdef EGL_NOK_swap_region2
+
+static GLboolean _glewInit_EGL_NOK_swap_region2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglSwapBuffersRegion2NOK = (PFNEGLSWAPBUFFERSREGION2NOKPROC)glewGetProcAddress((const GLubyte*)"eglSwapBuffersRegion2NOK")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NOK_swap_region2 */
+
+#ifdef EGL_NV_native_query
+
+static GLboolean _glewInit_EGL_NV_native_query ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryNativeDisplayNV = (PFNEGLQUERYNATIVEDISPLAYNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryNativeDisplayNV")) == NULL) || r;
+ r = ((eglQueryNativePixmapNV = (PFNEGLQUERYNATIVEPIXMAPNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryNativePixmapNV")) == NULL) || r;
+ r = ((eglQueryNativeWindowNV = (PFNEGLQUERYNATIVEWINDOWNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryNativeWindowNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_native_query */
+
+#ifdef EGL_NV_post_sub_buffer
+
+static GLboolean _glewInit_EGL_NV_post_sub_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglPostSubBufferNV = (PFNEGLPOSTSUBBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"eglPostSubBufferNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_post_sub_buffer */
+
+#ifdef EGL_NV_stream_consumer_eglimage
+
+static GLboolean _glewInit_EGL_NV_stream_consumer_eglimage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryStreamConsumerEventNV = (PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamConsumerEventNV")) == NULL) || r;
+ r = ((eglStreamAcquireImageNV = (PFNEGLSTREAMACQUIREIMAGENVPROC)glewGetProcAddress((const GLubyte*)"eglStreamAcquireImageNV")) == NULL) || r;
+ r = ((eglStreamImageConsumerConnectNV = (PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC)glewGetProcAddress((const GLubyte*)"eglStreamImageConsumerConnectNV")) == NULL) || r;
+ r = ((eglStreamReleaseImageNV = (PFNEGLSTREAMRELEASEIMAGENVPROC)glewGetProcAddress((const GLubyte*)"eglStreamReleaseImageNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_consumer_eglimage */
+
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+
+static GLboolean _glewInit_EGL_NV_stream_consumer_gltexture_yuv ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglStreamConsumerGLTextureExternalAttribsNV = (PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC)glewGetProcAddress((const GLubyte*)"eglStreamConsumerGLTextureExternalAttribsNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+
+#ifdef EGL_NV_stream_flush
+
+static GLboolean _glewInit_EGL_NV_stream_flush ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglStreamFlushNV = (PFNEGLSTREAMFLUSHNVPROC)glewGetProcAddress((const GLubyte*)"eglStreamFlushNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_flush */
+
+#ifdef EGL_NV_stream_metadata
+
+static GLboolean _glewInit_EGL_NV_stream_metadata ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglQueryDisplayAttribNV = (PFNEGLQUERYDISPLAYATTRIBNVPROC)glewGetProcAddress((const GLubyte*)"eglQueryDisplayAttribNV")) == NULL) || r;
+ r = ((eglQueryStreamMetadataNV = (PFNEGLQUERYSTREAMMETADATANVPROC)glewGetProcAddress((const GLubyte*)"eglQueryStreamMetadataNV")) == NULL) || r;
+ r = ((eglSetStreamMetadataNV = (PFNEGLSETSTREAMMETADATANVPROC)glewGetProcAddress((const GLubyte*)"eglSetStreamMetadataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_metadata */
+
+#ifdef EGL_NV_stream_reset
+
+static GLboolean _glewInit_EGL_NV_stream_reset ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglResetStreamNV = (PFNEGLRESETSTREAMNVPROC)glewGetProcAddress((const GLubyte*)"eglResetStreamNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_reset */
+
+#ifdef EGL_NV_stream_sync
+
+static GLboolean _glewInit_EGL_NV_stream_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateStreamSyncNV = (PFNEGLCREATESTREAMSYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglCreateStreamSyncNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_stream_sync */
+
+#ifdef EGL_NV_sync
+
+static GLboolean _glewInit_EGL_NV_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglClientWaitSyncNV = (PFNEGLCLIENTWAITSYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglClientWaitSyncNV")) == NULL) || r;
+ r = ((eglCreateFenceSyncNV = (PFNEGLCREATEFENCESYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglCreateFenceSyncNV")) == NULL) || r;
+ r = ((eglDestroySyncNV = (PFNEGLDESTROYSYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglDestroySyncNV")) == NULL) || r;
+ r = ((eglFenceNV = (PFNEGLFENCENVPROC)glewGetProcAddress((const GLubyte*)"eglFenceNV")) == NULL) || r;
+ r = ((eglGetSyncAttribNV = (PFNEGLGETSYNCATTRIBNVPROC)glewGetProcAddress((const GLubyte*)"eglGetSyncAttribNV")) == NULL) || r;
+ r = ((eglSignalSyncNV = (PFNEGLSIGNALSYNCNVPROC)glewGetProcAddress((const GLubyte*)"eglSignalSyncNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_sync */
+
+#ifdef EGL_NV_system_time
+
+static GLboolean _glewInit_EGL_NV_system_time ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglGetSystemTimeFrequencyNV = (PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)glewGetProcAddress((const GLubyte*)"eglGetSystemTimeFrequencyNV")) == NULL) || r;
+ r = ((eglGetSystemTimeNV = (PFNEGLGETSYSTEMTIMENVPROC)glewGetProcAddress((const GLubyte*)"eglGetSystemTimeNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_NV_system_time */
+
+#ifdef EGL_WL_bind_wayland_display
+
+static GLboolean _glewInit_EGL_WL_bind_wayland_display ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglBindWaylandDisplayWL = (PFNEGLBINDWAYLANDDISPLAYWLPROC)glewGetProcAddress((const GLubyte*)"eglBindWaylandDisplayWL")) == NULL) || r;
+ r = ((eglQueryWaylandBufferWL = (PFNEGLQUERYWAYLANDBUFFERWLPROC)glewGetProcAddress((const GLubyte*)"eglQueryWaylandBufferWL")) == NULL) || r;
+ r = ((eglUnbindWaylandDisplayWL = (PFNEGLUNBINDWAYLANDDISPLAYWLPROC)glewGetProcAddress((const GLubyte*)"eglUnbindWaylandDisplayWL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_WL_bind_wayland_display */
+
+#ifdef EGL_WL_create_wayland_buffer_from_image
+
+static GLboolean _glewInit_EGL_WL_create_wayland_buffer_from_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((eglCreateWaylandBufferFromImageWL = (PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC)glewGetProcAddress((const GLubyte*)"eglCreateWaylandBufferFromImageWL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+ /* ------------------------------------------------------------------------ */
+
+GLboolean eglewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+
+ start = (const GLubyte*) eglQueryString(eglGetCurrentDisplay(), EGL_EXTENSIONS);
+ if (0 == start) return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum eglewInit (EGLDisplay display)
+{
+ EGLint major, minor;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ PFNEGLINITIALIZEPROC initialize = NULL;
+ PFNEGLQUERYSTRINGPROC queryString = NULL;
+
+ /* Load necessary entry points */
+ initialize = (PFNEGLINITIALIZEPROC) glewGetProcAddress("eglInitialize");
+ queryString = (PFNEGLQUERYSTRINGPROC) glewGetProcAddress("eglQueryString");
+ if (!initialize || !queryString)
+ return 1;
+
+ /* query EGL version */
+ if (initialize(display, &major, &minor) != EGL_TRUE)
+ return 1;
+
+ EGLEW_VERSION_1_5 = ( major > 1 ) || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_4 = EGLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_3 = EGLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_2 = EGLEW_VERSION_1_3 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_1 = EGLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+ EGLEW_VERSION_1_0 = EGLEW_VERSION_1_1 == GL_TRUE || ( major == 1 && minor >= 0 ) ? GL_TRUE : GL_FALSE;
+
+ /* query EGL extension string */
+ extStart = (const GLubyte*) queryString(display, EGL_EXTENSIONS);
+ if (extStart == 0)
+ extStart = (const GLubyte *)"";
+ extEnd = extStart + _glewStrLen(extStart);
+
+ /* initialize extensions */
+#ifdef EGL_VERSION_1_0
+ if (glewExperimental || EGLEW_VERSION_1_0) EGLEW_VERSION_1_0 = !_glewInit_EGL_VERSION_1_0();
+#endif /* EGL_VERSION_1_0 */
+#ifdef EGL_VERSION_1_1
+ if (glewExperimental || EGLEW_VERSION_1_1) EGLEW_VERSION_1_1 = !_glewInit_EGL_VERSION_1_1();
+#endif /* EGL_VERSION_1_1 */
+#ifdef EGL_VERSION_1_2
+ if (glewExperimental || EGLEW_VERSION_1_2) EGLEW_VERSION_1_2 = !_glewInit_EGL_VERSION_1_2();
+#endif /* EGL_VERSION_1_2 */
+#ifdef EGL_VERSION_1_4
+ if (glewExperimental || EGLEW_VERSION_1_4) EGLEW_VERSION_1_4 = !_glewInit_EGL_VERSION_1_4();
+#endif /* EGL_VERSION_1_4 */
+#ifdef EGL_VERSION_1_5
+ if (glewExperimental || EGLEW_VERSION_1_5) EGLEW_VERSION_1_5 = !_glewInit_EGL_VERSION_1_5();
+#endif /* EGL_VERSION_1_5 */
+#ifdef EGL_ANDROID_GLES_layers
+ EGLEW_ANDROID_GLES_layers = _glewSearchExtension("EGL_ANDROID_GLES_layers", extStart, extEnd);
+#endif /* EGL_ANDROID_GLES_layers */
+#ifdef EGL_ANDROID_blob_cache
+ EGLEW_ANDROID_blob_cache = _glewSearchExtension("EGL_ANDROID_blob_cache", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_blob_cache) EGLEW_ANDROID_blob_cache = !_glewInit_EGL_ANDROID_blob_cache();
+#endif /* EGL_ANDROID_blob_cache */
+#ifdef EGL_ANDROID_create_native_client_buffer
+ EGLEW_ANDROID_create_native_client_buffer = _glewSearchExtension("EGL_ANDROID_create_native_client_buffer", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_create_native_client_buffer) EGLEW_ANDROID_create_native_client_buffer = !_glewInit_EGL_ANDROID_create_native_client_buffer();
+#endif /* EGL_ANDROID_create_native_client_buffer */
+#ifdef EGL_ANDROID_framebuffer_target
+ EGLEW_ANDROID_framebuffer_target = _glewSearchExtension("EGL_ANDROID_framebuffer_target", extStart, extEnd);
+#endif /* EGL_ANDROID_framebuffer_target */
+#ifdef EGL_ANDROID_front_buffer_auto_refresh
+ EGLEW_ANDROID_front_buffer_auto_refresh = _glewSearchExtension("EGL_ANDROID_front_buffer_auto_refresh", extStart, extEnd);
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+#ifdef EGL_ANDROID_get_frame_timestamps
+ EGLEW_ANDROID_get_frame_timestamps = _glewSearchExtension("EGL_ANDROID_get_frame_timestamps", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_get_frame_timestamps) EGLEW_ANDROID_get_frame_timestamps = !_glewInit_EGL_ANDROID_get_frame_timestamps();
+#endif /* EGL_ANDROID_get_frame_timestamps */
+#ifdef EGL_ANDROID_get_native_client_buffer
+ EGLEW_ANDROID_get_native_client_buffer = _glewSearchExtension("EGL_ANDROID_get_native_client_buffer", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_get_native_client_buffer) EGLEW_ANDROID_get_native_client_buffer = !_glewInit_EGL_ANDROID_get_native_client_buffer();
+#endif /* EGL_ANDROID_get_native_client_buffer */
+#ifdef EGL_ANDROID_image_native_buffer
+ EGLEW_ANDROID_image_native_buffer = _glewSearchExtension("EGL_ANDROID_image_native_buffer", extStart, extEnd);
+#endif /* EGL_ANDROID_image_native_buffer */
+#ifdef EGL_ANDROID_native_fence_sync
+ EGLEW_ANDROID_native_fence_sync = _glewSearchExtension("EGL_ANDROID_native_fence_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_native_fence_sync) EGLEW_ANDROID_native_fence_sync = !_glewInit_EGL_ANDROID_native_fence_sync();
+#endif /* EGL_ANDROID_native_fence_sync */
+#ifdef EGL_ANDROID_presentation_time
+ EGLEW_ANDROID_presentation_time = _glewSearchExtension("EGL_ANDROID_presentation_time", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANDROID_presentation_time) EGLEW_ANDROID_presentation_time = !_glewInit_EGL_ANDROID_presentation_time();
+#endif /* EGL_ANDROID_presentation_time */
+#ifdef EGL_ANDROID_recordable
+ EGLEW_ANDROID_recordable = _glewSearchExtension("EGL_ANDROID_recordable", extStart, extEnd);
+#endif /* EGL_ANDROID_recordable */
+#ifdef EGL_ANGLE_d3d_share_handle_client_buffer
+ EGLEW_ANGLE_d3d_share_handle_client_buffer = _glewSearchExtension("EGL_ANGLE_d3d_share_handle_client_buffer", extStart, extEnd);
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+#ifdef EGL_ANGLE_device_d3d
+ EGLEW_ANGLE_device_d3d = _glewSearchExtension("EGL_ANGLE_device_d3d", extStart, extEnd);
+#endif /* EGL_ANGLE_device_d3d */
+#ifdef EGL_ANGLE_query_surface_pointer
+ EGLEW_ANGLE_query_surface_pointer = _glewSearchExtension("EGL_ANGLE_query_surface_pointer", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANGLE_query_surface_pointer) EGLEW_ANGLE_query_surface_pointer = !_glewInit_EGL_ANGLE_query_surface_pointer();
+#endif /* EGL_ANGLE_query_surface_pointer */
+#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+ EGLEW_ANGLE_surface_d3d_texture_2d_share_handle = _glewSearchExtension("EGL_ANGLE_surface_d3d_texture_2d_share_handle", extStart, extEnd);
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+#ifdef EGL_ANGLE_sync_control_rate
+ EGLEW_ANGLE_sync_control_rate = _glewSearchExtension("EGL_ANGLE_sync_control_rate", extStart, extEnd);
+ if (glewExperimental || EGLEW_ANGLE_sync_control_rate) EGLEW_ANGLE_sync_control_rate = !_glewInit_EGL_ANGLE_sync_control_rate();
+#endif /* EGL_ANGLE_sync_control_rate */
+#ifdef EGL_ANGLE_window_fixed_size
+ EGLEW_ANGLE_window_fixed_size = _glewSearchExtension("EGL_ANGLE_window_fixed_size", extStart, extEnd);
+#endif /* EGL_ANGLE_window_fixed_size */
+#ifdef EGL_ARM_image_format
+ EGLEW_ARM_image_format = _glewSearchExtension("EGL_ARM_image_format", extStart, extEnd);
+#endif /* EGL_ARM_image_format */
+#ifdef EGL_ARM_implicit_external_sync
+ EGLEW_ARM_implicit_external_sync = _glewSearchExtension("EGL_ARM_implicit_external_sync", extStart, extEnd);
+#endif /* EGL_ARM_implicit_external_sync */
+#ifdef EGL_ARM_pixmap_multisample_discard
+ EGLEW_ARM_pixmap_multisample_discard = _glewSearchExtension("EGL_ARM_pixmap_multisample_discard", extStart, extEnd);
+#endif /* EGL_ARM_pixmap_multisample_discard */
+#ifdef EGL_EXT_bind_to_front
+ EGLEW_EXT_bind_to_front = _glewSearchExtension("EGL_EXT_bind_to_front", extStart, extEnd);
+#endif /* EGL_EXT_bind_to_front */
+#ifdef EGL_EXT_buffer_age
+ EGLEW_EXT_buffer_age = _glewSearchExtension("EGL_EXT_buffer_age", extStart, extEnd);
+#endif /* EGL_EXT_buffer_age */
+#ifdef EGL_EXT_client_extensions
+ EGLEW_EXT_client_extensions = _glewSearchExtension("EGL_EXT_client_extensions", extStart, extEnd);
+#endif /* EGL_EXT_client_extensions */
+#ifdef EGL_EXT_client_sync
+ EGLEW_EXT_client_sync = _glewSearchExtension("EGL_EXT_client_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_client_sync) EGLEW_EXT_client_sync = !_glewInit_EGL_EXT_client_sync();
+#endif /* EGL_EXT_client_sync */
+#ifdef EGL_EXT_compositor
+ EGLEW_EXT_compositor = _glewSearchExtension("EGL_EXT_compositor", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_compositor) EGLEW_EXT_compositor = !_glewInit_EGL_EXT_compositor();
+#endif /* EGL_EXT_compositor */
+#ifdef EGL_EXT_config_select_group
+ EGLEW_EXT_config_select_group = _glewSearchExtension("EGL_EXT_config_select_group", extStart, extEnd);
+#endif /* EGL_EXT_config_select_group */
+#ifdef EGL_EXT_create_context_robustness
+ EGLEW_EXT_create_context_robustness = _glewSearchExtension("EGL_EXT_create_context_robustness", extStart, extEnd);
+#endif /* EGL_EXT_create_context_robustness */
+#ifdef EGL_EXT_device_base
+ EGLEW_EXT_device_base = _glewSearchExtension("EGL_EXT_device_base", extStart, extEnd);
+#endif /* EGL_EXT_device_base */
+#ifdef EGL_EXT_device_drm
+ EGLEW_EXT_device_drm = _glewSearchExtension("EGL_EXT_device_drm", extStart, extEnd);
+#endif /* EGL_EXT_device_drm */
+#ifdef EGL_EXT_device_drm_render_node
+ EGLEW_EXT_device_drm_render_node = _glewSearchExtension("EGL_EXT_device_drm_render_node", extStart, extEnd);
+#endif /* EGL_EXT_device_drm_render_node */
+#ifdef EGL_EXT_device_enumeration
+ EGLEW_EXT_device_enumeration = _glewSearchExtension("EGL_EXT_device_enumeration", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_device_enumeration) EGLEW_EXT_device_enumeration = !_glewInit_EGL_EXT_device_enumeration();
+#endif /* EGL_EXT_device_enumeration */
+#ifdef EGL_EXT_device_openwf
+ EGLEW_EXT_device_openwf = _glewSearchExtension("EGL_EXT_device_openwf", extStart, extEnd);
+#endif /* EGL_EXT_device_openwf */
+#ifdef EGL_EXT_device_persistent_id
+ EGLEW_EXT_device_persistent_id = _glewSearchExtension("EGL_EXT_device_persistent_id", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_device_persistent_id) EGLEW_EXT_device_persistent_id = !_glewInit_EGL_EXT_device_persistent_id();
+#endif /* EGL_EXT_device_persistent_id */
+#ifdef EGL_EXT_device_query
+ EGLEW_EXT_device_query = _glewSearchExtension("EGL_EXT_device_query", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_device_query) EGLEW_EXT_device_query = !_glewInit_EGL_EXT_device_query();
+#endif /* EGL_EXT_device_query */
+#ifdef EGL_EXT_device_query_name
+ EGLEW_EXT_device_query_name = _glewSearchExtension("EGL_EXT_device_query_name", extStart, extEnd);
+#endif /* EGL_EXT_device_query_name */
+#ifdef EGL_EXT_explicit_device
+ EGLEW_EXT_explicit_device = _glewSearchExtension("EGL_EXT_explicit_device", extStart, extEnd);
+#endif /* EGL_EXT_explicit_device */
+#ifdef EGL_EXT_gl_colorspace_bt2020_linear
+ EGLEW_EXT_gl_colorspace_bt2020_linear = _glewSearchExtension("EGL_EXT_gl_colorspace_bt2020_linear", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+#ifdef EGL_EXT_gl_colorspace_bt2020_pq
+ EGLEW_EXT_gl_colorspace_bt2020_pq = _glewSearchExtension("EGL_EXT_gl_colorspace_bt2020_pq", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+#ifdef EGL_EXT_gl_colorspace_display_p3
+ EGLEW_EXT_gl_colorspace_display_p3 = _glewSearchExtension("EGL_EXT_gl_colorspace_display_p3", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+#ifdef EGL_EXT_gl_colorspace_display_p3_linear
+ EGLEW_EXT_gl_colorspace_display_p3_linear = _glewSearchExtension("EGL_EXT_gl_colorspace_display_p3_linear", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+#ifdef EGL_EXT_gl_colorspace_display_p3_passthrough
+ EGLEW_EXT_gl_colorspace_display_p3_passthrough = _glewSearchExtension("EGL_EXT_gl_colorspace_display_p3_passthrough", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+#ifdef EGL_EXT_gl_colorspace_scrgb
+ EGLEW_EXT_gl_colorspace_scrgb = _glewSearchExtension("EGL_EXT_gl_colorspace_scrgb", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+#ifdef EGL_EXT_gl_colorspace_scrgb_linear
+ EGLEW_EXT_gl_colorspace_scrgb_linear = _glewSearchExtension("EGL_EXT_gl_colorspace_scrgb_linear", extStart, extEnd);
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+#ifdef EGL_EXT_image_dma_buf_import
+ EGLEW_EXT_image_dma_buf_import = _glewSearchExtension("EGL_EXT_image_dma_buf_import", extStart, extEnd);
+#endif /* EGL_EXT_image_dma_buf_import */
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+ EGLEW_EXT_image_dma_buf_import_modifiers = _glewSearchExtension("EGL_EXT_image_dma_buf_import_modifiers", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_image_dma_buf_import_modifiers) EGLEW_EXT_image_dma_buf_import_modifiers = !_glewInit_EGL_EXT_image_dma_buf_import_modifiers();
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+#ifdef EGL_EXT_image_gl_colorspace
+ EGLEW_EXT_image_gl_colorspace = _glewSearchExtension("EGL_EXT_image_gl_colorspace", extStart, extEnd);
+#endif /* EGL_EXT_image_gl_colorspace */
+#ifdef EGL_EXT_image_implicit_sync_control
+ EGLEW_EXT_image_implicit_sync_control = _glewSearchExtension("EGL_EXT_image_implicit_sync_control", extStart, extEnd);
+#endif /* EGL_EXT_image_implicit_sync_control */
+#ifdef EGL_EXT_multiview_window
+ EGLEW_EXT_multiview_window = _glewSearchExtension("EGL_EXT_multiview_window", extStart, extEnd);
+#endif /* EGL_EXT_multiview_window */
+#ifdef EGL_EXT_output_base
+ EGLEW_EXT_output_base = _glewSearchExtension("EGL_EXT_output_base", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_output_base) EGLEW_EXT_output_base = !_glewInit_EGL_EXT_output_base();
+#endif /* EGL_EXT_output_base */
+#ifdef EGL_EXT_output_drm
+ EGLEW_EXT_output_drm = _glewSearchExtension("EGL_EXT_output_drm", extStart, extEnd);
+#endif /* EGL_EXT_output_drm */
+#ifdef EGL_EXT_output_openwf
+ EGLEW_EXT_output_openwf = _glewSearchExtension("EGL_EXT_output_openwf", extStart, extEnd);
+#endif /* EGL_EXT_output_openwf */
+#ifdef EGL_EXT_pixel_format_float
+ EGLEW_EXT_pixel_format_float = _glewSearchExtension("EGL_EXT_pixel_format_float", extStart, extEnd);
+#endif /* EGL_EXT_pixel_format_float */
+#ifdef EGL_EXT_platform_base
+ EGLEW_EXT_platform_base = _glewSearchExtension("EGL_EXT_platform_base", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_platform_base) EGLEW_EXT_platform_base = !_glewInit_EGL_EXT_platform_base();
+#endif /* EGL_EXT_platform_base */
+#ifdef EGL_EXT_platform_device
+ EGLEW_EXT_platform_device = _glewSearchExtension("EGL_EXT_platform_device", extStart, extEnd);
+#endif /* EGL_EXT_platform_device */
+#ifdef EGL_EXT_platform_wayland
+ EGLEW_EXT_platform_wayland = _glewSearchExtension("EGL_EXT_platform_wayland", extStart, extEnd);
+#endif /* EGL_EXT_platform_wayland */
+#ifdef EGL_EXT_platform_x11
+ EGLEW_EXT_platform_x11 = _glewSearchExtension("EGL_EXT_platform_x11", extStart, extEnd);
+#endif /* EGL_EXT_platform_x11 */
+#ifdef EGL_EXT_platform_xcb
+ EGLEW_EXT_platform_xcb = _glewSearchExtension("EGL_EXT_platform_xcb", extStart, extEnd);
+#endif /* EGL_EXT_platform_xcb */
+#ifdef EGL_EXT_present_opaque
+ EGLEW_EXT_present_opaque = _glewSearchExtension("EGL_EXT_present_opaque", extStart, extEnd);
+#endif /* EGL_EXT_present_opaque */
+#ifdef EGL_EXT_protected_content
+ EGLEW_EXT_protected_content = _glewSearchExtension("EGL_EXT_protected_content", extStart, extEnd);
+#endif /* EGL_EXT_protected_content */
+#ifdef EGL_EXT_protected_surface
+ EGLEW_EXT_protected_surface = _glewSearchExtension("EGL_EXT_protected_surface", extStart, extEnd);
+#endif /* EGL_EXT_protected_surface */
+#ifdef EGL_EXT_stream_consumer_egloutput
+ EGLEW_EXT_stream_consumer_egloutput = _glewSearchExtension("EGL_EXT_stream_consumer_egloutput", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_stream_consumer_egloutput) EGLEW_EXT_stream_consumer_egloutput = !_glewInit_EGL_EXT_stream_consumer_egloutput();
+#endif /* EGL_EXT_stream_consumer_egloutput */
+#ifdef EGL_EXT_surface_CTA861_3_metadata
+ EGLEW_EXT_surface_CTA861_3_metadata = _glewSearchExtension("EGL_EXT_surface_CTA861_3_metadata", extStart, extEnd);
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+#ifdef EGL_EXT_surface_SMPTE2086_metadata
+ EGLEW_EXT_surface_SMPTE2086_metadata = _glewSearchExtension("EGL_EXT_surface_SMPTE2086_metadata", extStart, extEnd);
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+#ifdef EGL_EXT_surface_compression
+ EGLEW_EXT_surface_compression = _glewSearchExtension("EGL_EXT_surface_compression", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_surface_compression) EGLEW_EXT_surface_compression = !_glewInit_EGL_EXT_surface_compression();
+#endif /* EGL_EXT_surface_compression */
+#ifdef EGL_EXT_swap_buffers_with_damage
+ EGLEW_EXT_swap_buffers_with_damage = _glewSearchExtension("EGL_EXT_swap_buffers_with_damage", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_swap_buffers_with_damage) EGLEW_EXT_swap_buffers_with_damage = !_glewInit_EGL_EXT_swap_buffers_with_damage();
+#endif /* EGL_EXT_swap_buffers_with_damage */
+#ifdef EGL_EXT_sync_reuse
+ EGLEW_EXT_sync_reuse = _glewSearchExtension("EGL_EXT_sync_reuse", extStart, extEnd);
+ if (glewExperimental || EGLEW_EXT_sync_reuse) EGLEW_EXT_sync_reuse = !_glewInit_EGL_EXT_sync_reuse();
+#endif /* EGL_EXT_sync_reuse */
+#ifdef EGL_EXT_yuv_surface
+ EGLEW_EXT_yuv_surface = _glewSearchExtension("EGL_EXT_yuv_surface", extStart, extEnd);
+#endif /* EGL_EXT_yuv_surface */
+#ifdef EGL_HI_clientpixmap
+ EGLEW_HI_clientpixmap = _glewSearchExtension("EGL_HI_clientpixmap", extStart, extEnd);
+ if (glewExperimental || EGLEW_HI_clientpixmap) EGLEW_HI_clientpixmap = !_glewInit_EGL_HI_clientpixmap();
+#endif /* EGL_HI_clientpixmap */
+#ifdef EGL_HI_colorformats
+ EGLEW_HI_colorformats = _glewSearchExtension("EGL_HI_colorformats", extStart, extEnd);
+#endif /* EGL_HI_colorformats */
+#ifdef EGL_IMG_context_priority
+ EGLEW_IMG_context_priority = _glewSearchExtension("EGL_IMG_context_priority", extStart, extEnd);
+#endif /* EGL_IMG_context_priority */
+#ifdef EGL_IMG_image_plane_attribs
+ EGLEW_IMG_image_plane_attribs = _glewSearchExtension("EGL_IMG_image_plane_attribs", extStart, extEnd);
+#endif /* EGL_IMG_image_plane_attribs */
+#ifdef EGL_KHR_cl_event
+ EGLEW_KHR_cl_event = _glewSearchExtension("EGL_KHR_cl_event", extStart, extEnd);
+#endif /* EGL_KHR_cl_event */
+#ifdef EGL_KHR_cl_event2
+ EGLEW_KHR_cl_event2 = _glewSearchExtension("EGL_KHR_cl_event2", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_cl_event2) EGLEW_KHR_cl_event2 = !_glewInit_EGL_KHR_cl_event2();
+#endif /* EGL_KHR_cl_event2 */
+#ifdef EGL_KHR_client_get_all_proc_addresses
+ EGLEW_KHR_client_get_all_proc_addresses = _glewSearchExtension("EGL_KHR_client_get_all_proc_addresses", extStart, extEnd);
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+#ifdef EGL_KHR_config_attribs
+ EGLEW_KHR_config_attribs = _glewSearchExtension("EGL_KHR_config_attribs", extStart, extEnd);
+#endif /* EGL_KHR_config_attribs */
+#ifdef EGL_KHR_context_flush_control
+ EGLEW_KHR_context_flush_control = _glewSearchExtension("EGL_KHR_context_flush_control", extStart, extEnd);
+#endif /* EGL_KHR_context_flush_control */
+#ifdef EGL_KHR_create_context
+ EGLEW_KHR_create_context = _glewSearchExtension("EGL_KHR_create_context", extStart, extEnd);
+#endif /* EGL_KHR_create_context */
+#ifdef EGL_KHR_create_context_no_error
+ EGLEW_KHR_create_context_no_error = _glewSearchExtension("EGL_KHR_create_context_no_error", extStart, extEnd);
+#endif /* EGL_KHR_create_context_no_error */
+#ifdef EGL_KHR_debug
+ EGLEW_KHR_debug = _glewSearchExtension("EGL_KHR_debug", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_debug) EGLEW_KHR_debug = !_glewInit_EGL_KHR_debug();
+#endif /* EGL_KHR_debug */
+#ifdef EGL_KHR_display_reference
+ EGLEW_KHR_display_reference = _glewSearchExtension("EGL_KHR_display_reference", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_display_reference) EGLEW_KHR_display_reference = !_glewInit_EGL_KHR_display_reference();
+#endif /* EGL_KHR_display_reference */
+#ifdef EGL_KHR_fence_sync
+ EGLEW_KHR_fence_sync = _glewSearchExtension("EGL_KHR_fence_sync", extStart, extEnd);
+#endif /* EGL_KHR_fence_sync */
+#ifdef EGL_KHR_get_all_proc_addresses
+ EGLEW_KHR_get_all_proc_addresses = _glewSearchExtension("EGL_KHR_get_all_proc_addresses", extStart, extEnd);
+#endif /* EGL_KHR_get_all_proc_addresses */
+#ifdef EGL_KHR_gl_colorspace
+ EGLEW_KHR_gl_colorspace = _glewSearchExtension("EGL_KHR_gl_colorspace", extStart, extEnd);
+#endif /* EGL_KHR_gl_colorspace */
+#ifdef EGL_KHR_gl_renderbuffer_image
+ EGLEW_KHR_gl_renderbuffer_image = _glewSearchExtension("EGL_KHR_gl_renderbuffer_image", extStart, extEnd);
+#endif /* EGL_KHR_gl_renderbuffer_image */
+#ifdef EGL_KHR_gl_texture_2D_image
+ EGLEW_KHR_gl_texture_2D_image = _glewSearchExtension("EGL_KHR_gl_texture_2D_image", extStart, extEnd);
+#endif /* EGL_KHR_gl_texture_2D_image */
+#ifdef EGL_KHR_gl_texture_3D_image
+ EGLEW_KHR_gl_texture_3D_image = _glewSearchExtension("EGL_KHR_gl_texture_3D_image", extStart, extEnd);
+#endif /* EGL_KHR_gl_texture_3D_image */
+#ifdef EGL_KHR_gl_texture_cubemap_image
+ EGLEW_KHR_gl_texture_cubemap_image = _glewSearchExtension("EGL_KHR_gl_texture_cubemap_image", extStart, extEnd);
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+#ifdef EGL_KHR_image
+ EGLEW_KHR_image = _glewSearchExtension("EGL_KHR_image", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_image) EGLEW_KHR_image = !_glewInit_EGL_KHR_image();
+#endif /* EGL_KHR_image */
+#ifdef EGL_KHR_image_base
+ EGLEW_KHR_image_base = _glewSearchExtension("EGL_KHR_image_base", extStart, extEnd);
+#endif /* EGL_KHR_image_base */
+#ifdef EGL_KHR_image_pixmap
+ EGLEW_KHR_image_pixmap = _glewSearchExtension("EGL_KHR_image_pixmap", extStart, extEnd);
+#endif /* EGL_KHR_image_pixmap */
+#ifdef EGL_KHR_lock_surface
+ EGLEW_KHR_lock_surface = _glewSearchExtension("EGL_KHR_lock_surface", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_lock_surface) EGLEW_KHR_lock_surface = !_glewInit_EGL_KHR_lock_surface();
+#endif /* EGL_KHR_lock_surface */
+#ifdef EGL_KHR_lock_surface2
+ EGLEW_KHR_lock_surface2 = _glewSearchExtension("EGL_KHR_lock_surface2", extStart, extEnd);
+#endif /* EGL_KHR_lock_surface2 */
+#ifdef EGL_KHR_lock_surface3
+ EGLEW_KHR_lock_surface3 = _glewSearchExtension("EGL_KHR_lock_surface3", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_lock_surface3) EGLEW_KHR_lock_surface3 = !_glewInit_EGL_KHR_lock_surface3();
+#endif /* EGL_KHR_lock_surface3 */
+#ifdef EGL_KHR_mutable_render_buffer
+ EGLEW_KHR_mutable_render_buffer = _glewSearchExtension("EGL_KHR_mutable_render_buffer", extStart, extEnd);
+#endif /* EGL_KHR_mutable_render_buffer */
+#ifdef EGL_KHR_no_config_context
+ EGLEW_KHR_no_config_context = _glewSearchExtension("EGL_KHR_no_config_context", extStart, extEnd);
+#endif /* EGL_KHR_no_config_context */
+#ifdef EGL_KHR_partial_update
+ EGLEW_KHR_partial_update = _glewSearchExtension("EGL_KHR_partial_update", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_partial_update) EGLEW_KHR_partial_update = !_glewInit_EGL_KHR_partial_update();
+#endif /* EGL_KHR_partial_update */
+#ifdef EGL_KHR_platform_android
+ EGLEW_KHR_platform_android = _glewSearchExtension("EGL_KHR_platform_android", extStart, extEnd);
+#endif /* EGL_KHR_platform_android */
+#ifdef EGL_KHR_platform_gbm
+ EGLEW_KHR_platform_gbm = _glewSearchExtension("EGL_KHR_platform_gbm", extStart, extEnd);
+#endif /* EGL_KHR_platform_gbm */
+#ifdef EGL_KHR_platform_wayland
+ EGLEW_KHR_platform_wayland = _glewSearchExtension("EGL_KHR_platform_wayland", extStart, extEnd);
+#endif /* EGL_KHR_platform_wayland */
+#ifdef EGL_KHR_platform_x11
+ EGLEW_KHR_platform_x11 = _glewSearchExtension("EGL_KHR_platform_x11", extStart, extEnd);
+#endif /* EGL_KHR_platform_x11 */
+#ifdef EGL_KHR_reusable_sync
+ EGLEW_KHR_reusable_sync = _glewSearchExtension("EGL_KHR_reusable_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_reusable_sync) EGLEW_KHR_reusable_sync = !_glewInit_EGL_KHR_reusable_sync();
+#endif /* EGL_KHR_reusable_sync */
+#ifdef EGL_KHR_stream
+ EGLEW_KHR_stream = _glewSearchExtension("EGL_KHR_stream", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream) EGLEW_KHR_stream = !_glewInit_EGL_KHR_stream();
+#endif /* EGL_KHR_stream */
+#ifdef EGL_KHR_stream_attrib
+ EGLEW_KHR_stream_attrib = _glewSearchExtension("EGL_KHR_stream_attrib", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_attrib) EGLEW_KHR_stream_attrib = !_glewInit_EGL_KHR_stream_attrib();
+#endif /* EGL_KHR_stream_attrib */
+#ifdef EGL_KHR_stream_consumer_gltexture
+ EGLEW_KHR_stream_consumer_gltexture = _glewSearchExtension("EGL_KHR_stream_consumer_gltexture", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_consumer_gltexture) EGLEW_KHR_stream_consumer_gltexture = !_glewInit_EGL_KHR_stream_consumer_gltexture();
+#endif /* EGL_KHR_stream_consumer_gltexture */
+#ifdef EGL_KHR_stream_cross_process_fd
+ EGLEW_KHR_stream_cross_process_fd = _glewSearchExtension("EGL_KHR_stream_cross_process_fd", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_cross_process_fd) EGLEW_KHR_stream_cross_process_fd = !_glewInit_EGL_KHR_stream_cross_process_fd();
+#endif /* EGL_KHR_stream_cross_process_fd */
+#ifdef EGL_KHR_stream_fifo
+ EGLEW_KHR_stream_fifo = _glewSearchExtension("EGL_KHR_stream_fifo", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_fifo) EGLEW_KHR_stream_fifo = !_glewInit_EGL_KHR_stream_fifo();
+#endif /* EGL_KHR_stream_fifo */
+#ifdef EGL_KHR_stream_producer_aldatalocator
+ EGLEW_KHR_stream_producer_aldatalocator = _glewSearchExtension("EGL_KHR_stream_producer_aldatalocator", extStart, extEnd);
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+#ifdef EGL_KHR_stream_producer_eglsurface
+ EGLEW_KHR_stream_producer_eglsurface = _glewSearchExtension("EGL_KHR_stream_producer_eglsurface", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_stream_producer_eglsurface) EGLEW_KHR_stream_producer_eglsurface = !_glewInit_EGL_KHR_stream_producer_eglsurface();
+#endif /* EGL_KHR_stream_producer_eglsurface */
+#ifdef EGL_KHR_surfaceless_context
+ EGLEW_KHR_surfaceless_context = _glewSearchExtension("EGL_KHR_surfaceless_context", extStart, extEnd);
+#endif /* EGL_KHR_surfaceless_context */
+#ifdef EGL_KHR_swap_buffers_with_damage
+ EGLEW_KHR_swap_buffers_with_damage = _glewSearchExtension("EGL_KHR_swap_buffers_with_damage", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_swap_buffers_with_damage) EGLEW_KHR_swap_buffers_with_damage = !_glewInit_EGL_KHR_swap_buffers_with_damage();
+#endif /* EGL_KHR_swap_buffers_with_damage */
+#ifdef EGL_KHR_vg_parent_image
+ EGLEW_KHR_vg_parent_image = _glewSearchExtension("EGL_KHR_vg_parent_image", extStart, extEnd);
+#endif /* EGL_KHR_vg_parent_image */
+#ifdef EGL_KHR_wait_sync
+ EGLEW_KHR_wait_sync = _glewSearchExtension("EGL_KHR_wait_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_KHR_wait_sync) EGLEW_KHR_wait_sync = !_glewInit_EGL_KHR_wait_sync();
+#endif /* EGL_KHR_wait_sync */
+#ifdef EGL_MESA_drm_image
+ EGLEW_MESA_drm_image = _glewSearchExtension("EGL_MESA_drm_image", extStart, extEnd);
+ if (glewExperimental || EGLEW_MESA_drm_image) EGLEW_MESA_drm_image = !_glewInit_EGL_MESA_drm_image();
+#endif /* EGL_MESA_drm_image */
+#ifdef EGL_MESA_image_dma_buf_export
+ EGLEW_MESA_image_dma_buf_export = _glewSearchExtension("EGL_MESA_image_dma_buf_export", extStart, extEnd);
+ if (glewExperimental || EGLEW_MESA_image_dma_buf_export) EGLEW_MESA_image_dma_buf_export = !_glewInit_EGL_MESA_image_dma_buf_export();
+#endif /* EGL_MESA_image_dma_buf_export */
+#ifdef EGL_MESA_platform_gbm
+ EGLEW_MESA_platform_gbm = _glewSearchExtension("EGL_MESA_platform_gbm", extStart, extEnd);
+#endif /* EGL_MESA_platform_gbm */
+#ifdef EGL_MESA_platform_surfaceless
+ EGLEW_MESA_platform_surfaceless = _glewSearchExtension("EGL_MESA_platform_surfaceless", extStart, extEnd);
+#endif /* EGL_MESA_platform_surfaceless */
+#ifdef EGL_MESA_query_driver
+ EGLEW_MESA_query_driver = _glewSearchExtension("EGL_MESA_query_driver", extStart, extEnd);
+ if (glewExperimental || EGLEW_MESA_query_driver) EGLEW_MESA_query_driver = !_glewInit_EGL_MESA_query_driver();
+#endif /* EGL_MESA_query_driver */
+#ifdef EGL_NOK_swap_region
+ EGLEW_NOK_swap_region = _glewSearchExtension("EGL_NOK_swap_region", extStart, extEnd);
+ if (glewExperimental || EGLEW_NOK_swap_region) EGLEW_NOK_swap_region = !_glewInit_EGL_NOK_swap_region();
+#endif /* EGL_NOK_swap_region */
+#ifdef EGL_NOK_swap_region2
+ EGLEW_NOK_swap_region2 = _glewSearchExtension("EGL_NOK_swap_region2", extStart, extEnd);
+ if (glewExperimental || EGLEW_NOK_swap_region2) EGLEW_NOK_swap_region2 = !_glewInit_EGL_NOK_swap_region2();
+#endif /* EGL_NOK_swap_region2 */
+#ifdef EGL_NOK_texture_from_pixmap
+ EGLEW_NOK_texture_from_pixmap = _glewSearchExtension("EGL_NOK_texture_from_pixmap", extStart, extEnd);
+#endif /* EGL_NOK_texture_from_pixmap */
+#ifdef EGL_NV_3dvision_surface
+ EGLEW_NV_3dvision_surface = _glewSearchExtension("EGL_NV_3dvision_surface", extStart, extEnd);
+#endif /* EGL_NV_3dvision_surface */
+#ifdef EGL_NV_context_priority_realtime
+ EGLEW_NV_context_priority_realtime = _glewSearchExtension("EGL_NV_context_priority_realtime", extStart, extEnd);
+#endif /* EGL_NV_context_priority_realtime */
+#ifdef EGL_NV_coverage_sample
+ EGLEW_NV_coverage_sample = _glewSearchExtension("EGL_NV_coverage_sample", extStart, extEnd);
+#endif /* EGL_NV_coverage_sample */
+#ifdef EGL_NV_coverage_sample_resolve
+ EGLEW_NV_coverage_sample_resolve = _glewSearchExtension("EGL_NV_coverage_sample_resolve", extStart, extEnd);
+#endif /* EGL_NV_coverage_sample_resolve */
+#ifdef EGL_NV_cuda_event
+ EGLEW_NV_cuda_event = _glewSearchExtension("EGL_NV_cuda_event", extStart, extEnd);
+#endif /* EGL_NV_cuda_event */
+#ifdef EGL_NV_depth_nonlinear
+ EGLEW_NV_depth_nonlinear = _glewSearchExtension("EGL_NV_depth_nonlinear", extStart, extEnd);
+#endif /* EGL_NV_depth_nonlinear */
+#ifdef EGL_NV_device_cuda
+ EGLEW_NV_device_cuda = _glewSearchExtension("EGL_NV_device_cuda", extStart, extEnd);
+#endif /* EGL_NV_device_cuda */
+#ifdef EGL_NV_native_query
+ EGLEW_NV_native_query = _glewSearchExtension("EGL_NV_native_query", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_native_query) EGLEW_NV_native_query = !_glewInit_EGL_NV_native_query();
+#endif /* EGL_NV_native_query */
+#ifdef EGL_NV_post_convert_rounding
+ EGLEW_NV_post_convert_rounding = _glewSearchExtension("EGL_NV_post_convert_rounding", extStart, extEnd);
+#endif /* EGL_NV_post_convert_rounding */
+#ifdef EGL_NV_post_sub_buffer
+ EGLEW_NV_post_sub_buffer = _glewSearchExtension("EGL_NV_post_sub_buffer", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_post_sub_buffer) EGLEW_NV_post_sub_buffer = !_glewInit_EGL_NV_post_sub_buffer();
+#endif /* EGL_NV_post_sub_buffer */
+#ifdef EGL_NV_quadruple_buffer
+ EGLEW_NV_quadruple_buffer = _glewSearchExtension("EGL_NV_quadruple_buffer", extStart, extEnd);
+#endif /* EGL_NV_quadruple_buffer */
+#ifdef EGL_NV_robustness_video_memory_purge
+ EGLEW_NV_robustness_video_memory_purge = _glewSearchExtension("EGL_NV_robustness_video_memory_purge", extStart, extEnd);
+#endif /* EGL_NV_robustness_video_memory_purge */
+#ifdef EGL_NV_stream_consumer_eglimage
+ EGLEW_NV_stream_consumer_eglimage = _glewSearchExtension("EGL_NV_stream_consumer_eglimage", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_consumer_eglimage) EGLEW_NV_stream_consumer_eglimage = !_glewInit_EGL_NV_stream_consumer_eglimage();
+#endif /* EGL_NV_stream_consumer_eglimage */
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+ EGLEW_NV_stream_consumer_gltexture_yuv = _glewSearchExtension("EGL_NV_stream_consumer_gltexture_yuv", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_consumer_gltexture_yuv) EGLEW_NV_stream_consumer_gltexture_yuv = !_glewInit_EGL_NV_stream_consumer_gltexture_yuv();
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+#ifdef EGL_NV_stream_cross_display
+ EGLEW_NV_stream_cross_display = _glewSearchExtension("EGL_NV_stream_cross_display", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_display */
+#ifdef EGL_NV_stream_cross_object
+ EGLEW_NV_stream_cross_object = _glewSearchExtension("EGL_NV_stream_cross_object", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_object */
+#ifdef EGL_NV_stream_cross_partition
+ EGLEW_NV_stream_cross_partition = _glewSearchExtension("EGL_NV_stream_cross_partition", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_partition */
+#ifdef EGL_NV_stream_cross_process
+ EGLEW_NV_stream_cross_process = _glewSearchExtension("EGL_NV_stream_cross_process", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_process */
+#ifdef EGL_NV_stream_cross_system
+ EGLEW_NV_stream_cross_system = _glewSearchExtension("EGL_NV_stream_cross_system", extStart, extEnd);
+#endif /* EGL_NV_stream_cross_system */
+#ifdef EGL_NV_stream_dma
+ EGLEW_NV_stream_dma = _glewSearchExtension("EGL_NV_stream_dma", extStart, extEnd);
+#endif /* EGL_NV_stream_dma */
+#ifdef EGL_NV_stream_fifo_next
+ EGLEW_NV_stream_fifo_next = _glewSearchExtension("EGL_NV_stream_fifo_next", extStart, extEnd);
+#endif /* EGL_NV_stream_fifo_next */
+#ifdef EGL_NV_stream_fifo_synchronous
+ EGLEW_NV_stream_fifo_synchronous = _glewSearchExtension("EGL_NV_stream_fifo_synchronous", extStart, extEnd);
+#endif /* EGL_NV_stream_fifo_synchronous */
+#ifdef EGL_NV_stream_flush
+ EGLEW_NV_stream_flush = _glewSearchExtension("EGL_NV_stream_flush", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_flush) EGLEW_NV_stream_flush = !_glewInit_EGL_NV_stream_flush();
+#endif /* EGL_NV_stream_flush */
+#ifdef EGL_NV_stream_frame_limits
+ EGLEW_NV_stream_frame_limits = _glewSearchExtension("EGL_NV_stream_frame_limits", extStart, extEnd);
+#endif /* EGL_NV_stream_frame_limits */
+#ifdef EGL_NV_stream_metadata
+ EGLEW_NV_stream_metadata = _glewSearchExtension("EGL_NV_stream_metadata", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_metadata) EGLEW_NV_stream_metadata = !_glewInit_EGL_NV_stream_metadata();
+#endif /* EGL_NV_stream_metadata */
+#ifdef EGL_NV_stream_origin
+ EGLEW_NV_stream_origin = _glewSearchExtension("EGL_NV_stream_origin", extStart, extEnd);
+#endif /* EGL_NV_stream_origin */
+#ifdef EGL_NV_stream_remote
+ EGLEW_NV_stream_remote = _glewSearchExtension("EGL_NV_stream_remote", extStart, extEnd);
+#endif /* EGL_NV_stream_remote */
+#ifdef EGL_NV_stream_reset
+ EGLEW_NV_stream_reset = _glewSearchExtension("EGL_NV_stream_reset", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_reset) EGLEW_NV_stream_reset = !_glewInit_EGL_NV_stream_reset();
+#endif /* EGL_NV_stream_reset */
+#ifdef EGL_NV_stream_socket
+ EGLEW_NV_stream_socket = _glewSearchExtension("EGL_NV_stream_socket", extStart, extEnd);
+#endif /* EGL_NV_stream_socket */
+#ifdef EGL_NV_stream_socket_inet
+ EGLEW_NV_stream_socket_inet = _glewSearchExtension("EGL_NV_stream_socket_inet", extStart, extEnd);
+#endif /* EGL_NV_stream_socket_inet */
+#ifdef EGL_NV_stream_socket_unix
+ EGLEW_NV_stream_socket_unix = _glewSearchExtension("EGL_NV_stream_socket_unix", extStart, extEnd);
+#endif /* EGL_NV_stream_socket_unix */
+#ifdef EGL_NV_stream_sync
+ EGLEW_NV_stream_sync = _glewSearchExtension("EGL_NV_stream_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_stream_sync) EGLEW_NV_stream_sync = !_glewInit_EGL_NV_stream_sync();
+#endif /* EGL_NV_stream_sync */
+#ifdef EGL_NV_sync
+ EGLEW_NV_sync = _glewSearchExtension("EGL_NV_sync", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_sync) EGLEW_NV_sync = !_glewInit_EGL_NV_sync();
+#endif /* EGL_NV_sync */
+#ifdef EGL_NV_system_time
+ EGLEW_NV_system_time = _glewSearchExtension("EGL_NV_system_time", extStart, extEnd);
+ if (glewExperimental || EGLEW_NV_system_time) EGLEW_NV_system_time = !_glewInit_EGL_NV_system_time();
+#endif /* EGL_NV_system_time */
+#ifdef EGL_NV_triple_buffer
+ EGLEW_NV_triple_buffer = _glewSearchExtension("EGL_NV_triple_buffer", extStart, extEnd);
+#endif /* EGL_NV_triple_buffer */
+#ifdef EGL_TIZEN_image_native_buffer
+ EGLEW_TIZEN_image_native_buffer = _glewSearchExtension("EGL_TIZEN_image_native_buffer", extStart, extEnd);
+#endif /* EGL_TIZEN_image_native_buffer */
+#ifdef EGL_TIZEN_image_native_surface
+ EGLEW_TIZEN_image_native_surface = _glewSearchExtension("EGL_TIZEN_image_native_surface", extStart, extEnd);
+#endif /* EGL_TIZEN_image_native_surface */
+#ifdef EGL_WL_bind_wayland_display
+ EGLEW_WL_bind_wayland_display = _glewSearchExtension("EGL_WL_bind_wayland_display", extStart, extEnd);
+ if (glewExperimental || EGLEW_WL_bind_wayland_display) EGLEW_WL_bind_wayland_display = !_glewInit_EGL_WL_bind_wayland_display();
+#endif /* EGL_WL_bind_wayland_display */
+#ifdef EGL_WL_create_wayland_buffer_from_image
+ EGLEW_WL_create_wayland_buffer_from_image = _glewSearchExtension("EGL_WL_create_wayland_buffer_from_image", extStart, extEnd);
+ if (glewExperimental || EGLEW_WL_create_wayland_buffer_from_image) EGLEW_WL_create_wayland_buffer_from_image = !_glewInit_EGL_WL_create_wayland_buffer_from_image();
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+ return GLEW_OK;
+}
+
+#elif defined(_WIN32)
+
+PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL = NULL;
+
+PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD = NULL;
+PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD = NULL;
+PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD = NULL;
+PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD = NULL;
+PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD = NULL;
+PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD = NULL;
+PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD = NULL;
+PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD = NULL;
+PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD = NULL;
+
+PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB = NULL;
+PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB = NULL;
+PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB = NULL;
+PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB = NULL;
+
+PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB = NULL;
+
+PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB = NULL;
+
+PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB = NULL;
+PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB = NULL;
+
+PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB = NULL;
+PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB = NULL;
+PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB = NULL;
+PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB = NULL;
+PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB = NULL;
+
+PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB = NULL;
+PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB = NULL;
+PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB = NULL;
+
+PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB = NULL;
+PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB = NULL;
+PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB = NULL;
+
+PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT = NULL;
+PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT = NULL;
+PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT = NULL;
+PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT = NULL;
+
+PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT = NULL;
+
+PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT = NULL;
+PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT = NULL;
+
+PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT = NULL;
+PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT = NULL;
+PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT = NULL;
+PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT = NULL;
+PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT = NULL;
+
+PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT = NULL;
+PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT = NULL;
+PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT = NULL;
+
+PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT = NULL;
+PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT = NULL;
+
+PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D = NULL;
+PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D = NULL;
+
+PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D = NULL;
+PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D = NULL;
+PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D = NULL;
+PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D = NULL;
+
+PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D = NULL;
+PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D = NULL;
+PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D = NULL;
+PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D = NULL;
+PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D = NULL;
+PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D = NULL;
+PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D = NULL;
+PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D = NULL;
+PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D = NULL;
+PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D = NULL;
+PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D = NULL;
+PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D = NULL;
+
+PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D = NULL;
+PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D = NULL;
+PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D = NULL;
+PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D = NULL;
+
+PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D = NULL;
+PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D = NULL;
+PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D = NULL;
+PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D = NULL;
+
+PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D = NULL;
+PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D = NULL;
+PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D = NULL;
+PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D = NULL;
+
+PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV = NULL;
+PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV = NULL;
+PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV = NULL;
+PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV = NULL;
+PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV = NULL;
+PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV = NULL;
+PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV = NULL;
+PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV = NULL;
+
+PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV = NULL;
+
+PFNWGLDELAYBEFORESWAPNVPROC __wglewDelayBeforeSwapNV = NULL;
+
+PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV = NULL;
+PFNWGLDELETEDCNVPROC __wglewDeleteDCNV = NULL;
+PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV = NULL;
+PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV = NULL;
+PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV = NULL;
+
+PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV = NULL;
+PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV = NULL;
+PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV = NULL;
+
+PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV = NULL;
+PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV = NULL;
+PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV = NULL;
+PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV = NULL;
+PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV = NULL;
+PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV = NULL;
+
+PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV = NULL;
+PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV = NULL;
+
+PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV = NULL;
+PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV = NULL;
+PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV = NULL;
+PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV = NULL;
+PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV = NULL;
+
+PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV = NULL;
+PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV = NULL;
+PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV = NULL;
+PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV = NULL;
+PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV = NULL;
+PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV = NULL;
+
+PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML = NULL;
+PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML = NULL;
+PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML = NULL;
+PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML = NULL;
+PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML = NULL;
+PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML = NULL;
+GLboolean __WGLEW_3DFX_multisample = GL_FALSE;
+GLboolean __WGLEW_3DL_stereo_control = GL_FALSE;
+GLboolean __WGLEW_AMD_gpu_association = GL_FALSE;
+GLboolean __WGLEW_ARB_buffer_region = GL_FALSE;
+GLboolean __WGLEW_ARB_context_flush_control = GL_FALSE;
+GLboolean __WGLEW_ARB_create_context = GL_FALSE;
+GLboolean __WGLEW_ARB_create_context_no_error = GL_FALSE;
+GLboolean __WGLEW_ARB_create_context_profile = GL_FALSE;
+GLboolean __WGLEW_ARB_create_context_robustness = GL_FALSE;
+GLboolean __WGLEW_ARB_extensions_string = GL_FALSE;
+GLboolean __WGLEW_ARB_framebuffer_sRGB = GL_FALSE;
+GLboolean __WGLEW_ARB_make_current_read = GL_FALSE;
+GLboolean __WGLEW_ARB_multisample = GL_FALSE;
+GLboolean __WGLEW_ARB_pbuffer = GL_FALSE;
+GLboolean __WGLEW_ARB_pixel_format = GL_FALSE;
+GLboolean __WGLEW_ARB_pixel_format_float = GL_FALSE;
+GLboolean __WGLEW_ARB_render_texture = GL_FALSE;
+GLboolean __WGLEW_ARB_robustness_application_isolation = GL_FALSE;
+GLboolean __WGLEW_ARB_robustness_share_group_isolation = GL_FALSE;
+GLboolean __WGLEW_ATI_pixel_format_float = GL_FALSE;
+GLboolean __WGLEW_ATI_render_texture_rectangle = GL_FALSE;
+GLboolean __WGLEW_EXT_colorspace = GL_FALSE;
+GLboolean __WGLEW_EXT_create_context_es2_profile = GL_FALSE;
+GLboolean __WGLEW_EXT_create_context_es_profile = GL_FALSE;
+GLboolean __WGLEW_EXT_depth_float = GL_FALSE;
+GLboolean __WGLEW_EXT_display_color_table = GL_FALSE;
+GLboolean __WGLEW_EXT_extensions_string = GL_FALSE;
+GLboolean __WGLEW_EXT_framebuffer_sRGB = GL_FALSE;
+GLboolean __WGLEW_EXT_make_current_read = GL_FALSE;
+GLboolean __WGLEW_EXT_multisample = GL_FALSE;
+GLboolean __WGLEW_EXT_pbuffer = GL_FALSE;
+GLboolean __WGLEW_EXT_pixel_format = GL_FALSE;
+GLboolean __WGLEW_EXT_pixel_format_packed_float = GL_FALSE;
+GLboolean __WGLEW_EXT_swap_control = GL_FALSE;
+GLboolean __WGLEW_EXT_swap_control_tear = GL_FALSE;
+GLboolean __WGLEW_I3D_digital_video_control = GL_FALSE;
+GLboolean __WGLEW_I3D_gamma = GL_FALSE;
+GLboolean __WGLEW_I3D_genlock = GL_FALSE;
+GLboolean __WGLEW_I3D_image_buffer = GL_FALSE;
+GLboolean __WGLEW_I3D_swap_frame_lock = GL_FALSE;
+GLboolean __WGLEW_I3D_swap_frame_usage = GL_FALSE;
+GLboolean __WGLEW_NV_DX_interop = GL_FALSE;
+GLboolean __WGLEW_NV_DX_interop2 = GL_FALSE;
+GLboolean __WGLEW_NV_copy_image = GL_FALSE;
+GLboolean __WGLEW_NV_delay_before_swap = GL_FALSE;
+GLboolean __WGLEW_NV_float_buffer = GL_FALSE;
+GLboolean __WGLEW_NV_gpu_affinity = GL_FALSE;
+GLboolean __WGLEW_NV_multigpu_context = GL_FALSE;
+GLboolean __WGLEW_NV_multisample_coverage = GL_FALSE;
+GLboolean __WGLEW_NV_present_video = GL_FALSE;
+GLboolean __WGLEW_NV_render_depth_texture = GL_FALSE;
+GLboolean __WGLEW_NV_render_texture_rectangle = GL_FALSE;
+GLboolean __WGLEW_NV_swap_group = GL_FALSE;
+GLboolean __WGLEW_NV_vertex_array_range = GL_FALSE;
+GLboolean __WGLEW_NV_video_capture = GL_FALSE;
+GLboolean __WGLEW_NV_video_output = GL_FALSE;
+GLboolean __WGLEW_OML_sync_control = GL_FALSE;
+#ifdef WGL_3DL_stereo_control
+
+static GLboolean _glewInit_WGL_3DL_stereo_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglSetStereoEmitterState3DL = (PFNWGLSETSTEREOEMITTERSTATE3DLPROC)glewGetProcAddress((const GLubyte*)"wglSetStereoEmitterState3DL")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_3DL_stereo_control */
+
+#ifdef WGL_AMD_gpu_association
+
+static GLboolean _glewInit_WGL_AMD_gpu_association ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBlitContextFramebufferAMD = (PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC)glewGetProcAddress((const GLubyte*)"wglBlitContextFramebufferAMD")) == NULL) || r;
+ r = ((wglCreateAssociatedContextAMD = (PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"wglCreateAssociatedContextAMD")) == NULL) || r;
+ r = ((wglCreateAssociatedContextAttribsAMD = (PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)glewGetProcAddress((const GLubyte*)"wglCreateAssociatedContextAttribsAMD")) == NULL) || r;
+ r = ((wglDeleteAssociatedContextAMD = (PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"wglDeleteAssociatedContextAMD")) == NULL) || r;
+ r = ((wglGetContextGPUIDAMD = (PFNWGLGETCONTEXTGPUIDAMDPROC)glewGetProcAddress((const GLubyte*)"wglGetContextGPUIDAMD")) == NULL) || r;
+ r = ((wglGetCurrentAssociatedContextAMD = (PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"wglGetCurrentAssociatedContextAMD")) == NULL) || r;
+ r = ((wglGetGPUIDsAMD = (PFNWGLGETGPUIDSAMDPROC)glewGetProcAddress((const GLubyte*)"wglGetGPUIDsAMD")) == NULL) || r;
+ r = ((wglGetGPUInfoAMD = (PFNWGLGETGPUINFOAMDPROC)glewGetProcAddress((const GLubyte*)"wglGetGPUInfoAMD")) == NULL) || r;
+ r = ((wglMakeAssociatedContextCurrentAMD = (PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)glewGetProcAddress((const GLubyte*)"wglMakeAssociatedContextCurrentAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_AMD_gpu_association */
+
+#ifdef WGL_ARB_buffer_region
+
+static GLboolean _glewInit_WGL_ARB_buffer_region ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreateBufferRegionARB = (PFNWGLCREATEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglCreateBufferRegionARB")) == NULL) || r;
+ r = ((wglDeleteBufferRegionARB = (PFNWGLDELETEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglDeleteBufferRegionARB")) == NULL) || r;
+ r = ((wglRestoreBufferRegionARB = (PFNWGLRESTOREBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglRestoreBufferRegionARB")) == NULL) || r;
+ r = ((wglSaveBufferRegionARB = (PFNWGLSAVEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglSaveBufferRegionARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_buffer_region */
+
+#ifdef WGL_ARB_create_context
+
+static GLboolean _glewInit_WGL_ARB_create_context ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)glewGetProcAddress((const GLubyte*)"wglCreateContextAttribsARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_create_context */
+
+#ifdef WGL_ARB_extensions_string
+
+static GLboolean _glewInit_WGL_ARB_extensions_string ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_extensions_string */
+
+#ifdef WGL_ARB_make_current_read
+
+static GLboolean _glewInit_WGL_ARB_make_current_read ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetCurrentReadDCARB = (PFNWGLGETCURRENTREADDCARBPROC)glewGetProcAddress((const GLubyte*)"wglGetCurrentReadDCARB")) == NULL) || r;
+ r = ((wglMakeContextCurrentARB = (PFNWGLMAKECONTEXTCURRENTARBPROC)glewGetProcAddress((const GLubyte*)"wglMakeContextCurrentARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_make_current_read */
+
+#ifdef WGL_ARB_pbuffer
+
+static GLboolean _glewInit_WGL_ARB_pbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreatePbufferARB = (PFNWGLCREATEPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglCreatePbufferARB")) == NULL) || r;
+ r = ((wglDestroyPbufferARB = (PFNWGLDESTROYPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglDestroyPbufferARB")) == NULL) || r;
+ r = ((wglGetPbufferDCARB = (PFNWGLGETPBUFFERDCARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPbufferDCARB")) == NULL) || r;
+ r = ((wglQueryPbufferARB = (PFNWGLQUERYPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglQueryPbufferARB")) == NULL) || r;
+ r = ((wglReleasePbufferDCARB = (PFNWGLRELEASEPBUFFERDCARBPROC)glewGetProcAddress((const GLubyte*)"wglReleasePbufferDCARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_pbuffer */
+
+#ifdef WGL_ARB_pixel_format
+
+static GLboolean _glewInit_WGL_ARB_pixel_format ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC)glewGetProcAddress((const GLubyte*)"wglChoosePixelFormatARB")) == NULL) || r;
+ r = ((wglGetPixelFormatAttribfvARB = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribfvARB")) == NULL) || r;
+ r = ((wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribivARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_pixel_format */
+
+#ifdef WGL_ARB_render_texture
+
+static GLboolean _glewInit_WGL_ARB_render_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindTexImageARB = (PFNWGLBINDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"wglBindTexImageARB")) == NULL) || r;
+ r = ((wglReleaseTexImageARB = (PFNWGLRELEASETEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"wglReleaseTexImageARB")) == NULL) || r;
+ r = ((wglSetPbufferAttribARB = (PFNWGLSETPBUFFERATTRIBARBPROC)glewGetProcAddress((const GLubyte*)"wglSetPbufferAttribARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_ARB_render_texture */
+
+#ifdef WGL_EXT_display_color_table
+
+static GLboolean _glewInit_WGL_EXT_display_color_table ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindDisplayColorTableEXT = (PFNWGLBINDDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglBindDisplayColorTableEXT")) == NULL) || r;
+ r = ((wglCreateDisplayColorTableEXT = (PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglCreateDisplayColorTableEXT")) == NULL) || r;
+ r = ((wglDestroyDisplayColorTableEXT = (PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglDestroyDisplayColorTableEXT")) == NULL) || r;
+ r = ((wglLoadDisplayColorTableEXT = (PFNWGLLOADDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglLoadDisplayColorTableEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_display_color_table */
+
+#ifdef WGL_EXT_extensions_string
+
+static GLboolean _glewInit_WGL_EXT_extensions_string ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_extensions_string */
+
+#ifdef WGL_EXT_make_current_read
+
+static GLboolean _glewInit_WGL_EXT_make_current_read ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetCurrentReadDCEXT = (PFNWGLGETCURRENTREADDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetCurrentReadDCEXT")) == NULL) || r;
+ r = ((wglMakeContextCurrentEXT = (PFNWGLMAKECONTEXTCURRENTEXTPROC)glewGetProcAddress((const GLubyte*)"wglMakeContextCurrentEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_make_current_read */
+
+#ifdef WGL_EXT_pbuffer
+
+static GLboolean _glewInit_WGL_EXT_pbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreatePbufferEXT = (PFNWGLCREATEPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglCreatePbufferEXT")) == NULL) || r;
+ r = ((wglDestroyPbufferEXT = (PFNWGLDESTROYPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglDestroyPbufferEXT")) == NULL) || r;
+ r = ((wglGetPbufferDCEXT = (PFNWGLGETPBUFFERDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPbufferDCEXT")) == NULL) || r;
+ r = ((wglQueryPbufferEXT = (PFNWGLQUERYPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglQueryPbufferEXT")) == NULL) || r;
+ r = ((wglReleasePbufferDCEXT = (PFNWGLRELEASEPBUFFERDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglReleasePbufferDCEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_pbuffer */
+
+#ifdef WGL_EXT_pixel_format
+
+static GLboolean _glewInit_WGL_EXT_pixel_format ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglChoosePixelFormatEXT = (PFNWGLCHOOSEPIXELFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"wglChoosePixelFormatEXT")) == NULL) || r;
+ r = ((wglGetPixelFormatAttribfvEXT = (PFNWGLGETPIXELFORMATATTRIBFVEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribfvEXT")) == NULL) || r;
+ r = ((wglGetPixelFormatAttribivEXT = (PFNWGLGETPIXELFORMATATTRIBIVEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribivEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_pixel_format */
+
+#ifdef WGL_EXT_swap_control
+
+static GLboolean _glewInit_WGL_EXT_swap_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetSwapIntervalEXT")) == NULL) || r;
+ r = ((wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)"wglSwapIntervalEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_EXT_swap_control */
+
+#ifdef WGL_I3D_digital_video_control
+
+static GLboolean _glewInit_WGL_I3D_digital_video_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetDigitalVideoParametersI3D = (PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetDigitalVideoParametersI3D")) == NULL) || r;
+ r = ((wglSetDigitalVideoParametersI3D = (PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetDigitalVideoParametersI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_digital_video_control */
+
+#ifdef WGL_I3D_gamma
+
+static GLboolean _glewInit_WGL_I3D_gamma ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetGammaTableI3D = (PFNWGLGETGAMMATABLEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGammaTableI3D")) == NULL) || r;
+ r = ((wglGetGammaTableParametersI3D = (PFNWGLGETGAMMATABLEPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGammaTableParametersI3D")) == NULL) || r;
+ r = ((wglSetGammaTableI3D = (PFNWGLSETGAMMATABLEI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetGammaTableI3D")) == NULL) || r;
+ r = ((wglSetGammaTableParametersI3D = (PFNWGLSETGAMMATABLEPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetGammaTableParametersI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_gamma */
+
+#ifdef WGL_I3D_genlock
+
+static GLboolean _glewInit_WGL_I3D_genlock ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglDisableGenlockI3D = (PFNWGLDISABLEGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglDisableGenlockI3D")) == NULL) || r;
+ r = ((wglEnableGenlockI3D = (PFNWGLENABLEGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglEnableGenlockI3D")) == NULL) || r;
+ r = ((wglGenlockSampleRateI3D = (PFNWGLGENLOCKSAMPLERATEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSampleRateI3D")) == NULL) || r;
+ r = ((wglGenlockSourceDelayI3D = (PFNWGLGENLOCKSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceDelayI3D")) == NULL) || r;
+ r = ((wglGenlockSourceEdgeI3D = (PFNWGLGENLOCKSOURCEEDGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceEdgeI3D")) == NULL) || r;
+ r = ((wglGenlockSourceI3D = (PFNWGLGENLOCKSOURCEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceI3D")) == NULL) || r;
+ r = ((wglGetGenlockSampleRateI3D = (PFNWGLGETGENLOCKSAMPLERATEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSampleRateI3D")) == NULL) || r;
+ r = ((wglGetGenlockSourceDelayI3D = (PFNWGLGETGENLOCKSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceDelayI3D")) == NULL) || r;
+ r = ((wglGetGenlockSourceEdgeI3D = (PFNWGLGETGENLOCKSOURCEEDGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceEdgeI3D")) == NULL) || r;
+ r = ((wglGetGenlockSourceI3D = (PFNWGLGETGENLOCKSOURCEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceI3D")) == NULL) || r;
+ r = ((wglIsEnabledGenlockI3D = (PFNWGLISENABLEDGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglIsEnabledGenlockI3D")) == NULL) || r;
+ r = ((wglQueryGenlockMaxSourceDelayI3D = (PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryGenlockMaxSourceDelayI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_genlock */
+
+#ifdef WGL_I3D_image_buffer
+
+static GLboolean _glewInit_WGL_I3D_image_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglAssociateImageBufferEventsI3D = (PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC)glewGetProcAddress((const GLubyte*)"wglAssociateImageBufferEventsI3D")) == NULL) || r;
+ r = ((wglCreateImageBufferI3D = (PFNWGLCREATEIMAGEBUFFERI3DPROC)glewGetProcAddress((const GLubyte*)"wglCreateImageBufferI3D")) == NULL) || r;
+ r = ((wglDestroyImageBufferI3D = (PFNWGLDESTROYIMAGEBUFFERI3DPROC)glewGetProcAddress((const GLubyte*)"wglDestroyImageBufferI3D")) == NULL) || r;
+ r = ((wglReleaseImageBufferEventsI3D = (PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC)glewGetProcAddress((const GLubyte*)"wglReleaseImageBufferEventsI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_image_buffer */
+
+#ifdef WGL_I3D_swap_frame_lock
+
+static GLboolean _glewInit_WGL_I3D_swap_frame_lock ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglDisableFrameLockI3D = (PFNWGLDISABLEFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglDisableFrameLockI3D")) == NULL) || r;
+ r = ((wglEnableFrameLockI3D = (PFNWGLENABLEFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglEnableFrameLockI3D")) == NULL) || r;
+ r = ((wglIsEnabledFrameLockI3D = (PFNWGLISENABLEDFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglIsEnabledFrameLockI3D")) == NULL) || r;
+ r = ((wglQueryFrameLockMasterI3D = (PFNWGLQUERYFRAMELOCKMASTERI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameLockMasterI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_swap_frame_lock */
+
+#ifdef WGL_I3D_swap_frame_usage
+
+static GLboolean _glewInit_WGL_I3D_swap_frame_usage ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBeginFrameTrackingI3D = (PFNWGLBEGINFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglBeginFrameTrackingI3D")) == NULL) || r;
+ r = ((wglEndFrameTrackingI3D = (PFNWGLENDFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglEndFrameTrackingI3D")) == NULL) || r;
+ r = ((wglGetFrameUsageI3D = (PFNWGLGETFRAMEUSAGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetFrameUsageI3D")) == NULL) || r;
+ r = ((wglQueryFrameTrackingI3D = (PFNWGLQUERYFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameTrackingI3D")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_I3D_swap_frame_usage */
+
+#ifdef WGL_NV_DX_interop
+
+static GLboolean _glewInit_WGL_NV_DX_interop ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglDXCloseDeviceNV = (PFNWGLDXCLOSEDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglDXCloseDeviceNV")) == NULL) || r;
+ r = ((wglDXLockObjectsNV = (PFNWGLDXLOCKOBJECTSNVPROC)glewGetProcAddress((const GLubyte*)"wglDXLockObjectsNV")) == NULL) || r;
+ r = ((wglDXObjectAccessNV = (PFNWGLDXOBJECTACCESSNVPROC)glewGetProcAddress((const GLubyte*)"wglDXObjectAccessNV")) == NULL) || r;
+ r = ((wglDXOpenDeviceNV = (PFNWGLDXOPENDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglDXOpenDeviceNV")) == NULL) || r;
+ r = ((wglDXRegisterObjectNV = (PFNWGLDXREGISTEROBJECTNVPROC)glewGetProcAddress((const GLubyte*)"wglDXRegisterObjectNV")) == NULL) || r;
+ r = ((wglDXSetResourceShareHandleNV = (PFNWGLDXSETRESOURCESHAREHANDLENVPROC)glewGetProcAddress((const GLubyte*)"wglDXSetResourceShareHandleNV")) == NULL) || r;
+ r = ((wglDXUnlockObjectsNV = (PFNWGLDXUNLOCKOBJECTSNVPROC)glewGetProcAddress((const GLubyte*)"wglDXUnlockObjectsNV")) == NULL) || r;
+ r = ((wglDXUnregisterObjectNV = (PFNWGLDXUNREGISTEROBJECTNVPROC)glewGetProcAddress((const GLubyte*)"wglDXUnregisterObjectNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_DX_interop */
+
+#ifdef WGL_NV_copy_image
+
+static GLboolean _glewInit_WGL_NV_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCopyImageSubDataNV = (PFNWGLCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)"wglCopyImageSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_copy_image */
+
+#ifdef WGL_NV_delay_before_swap
+
+static GLboolean _glewInit_WGL_NV_delay_before_swap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglDelayBeforeSwapNV = (PFNWGLDELAYBEFORESWAPNVPROC)glewGetProcAddress((const GLubyte*)"wglDelayBeforeSwapNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_delay_before_swap */
+
+#ifdef WGL_NV_gpu_affinity
+
+static GLboolean _glewInit_WGL_NV_gpu_affinity ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglCreateAffinityDCNV = (PFNWGLCREATEAFFINITYDCNVPROC)glewGetProcAddress((const GLubyte*)"wglCreateAffinityDCNV")) == NULL) || r;
+ r = ((wglDeleteDCNV = (PFNWGLDELETEDCNVPROC)glewGetProcAddress((const GLubyte*)"wglDeleteDCNV")) == NULL) || r;
+ r = ((wglEnumGpuDevicesNV = (PFNWGLENUMGPUDEVICESNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpuDevicesNV")) == NULL) || r;
+ r = ((wglEnumGpusFromAffinityDCNV = (PFNWGLENUMGPUSFROMAFFINITYDCNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpusFromAffinityDCNV")) == NULL) || r;
+ r = ((wglEnumGpusNV = (PFNWGLENUMGPUSNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpusNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_gpu_affinity */
+
+#ifdef WGL_NV_present_video
+
+static GLboolean _glewInit_WGL_NV_present_video ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindVideoDeviceNV = (PFNWGLBINDVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglBindVideoDeviceNV")) == NULL) || r;
+ r = ((wglEnumerateVideoDevicesNV = (PFNWGLENUMERATEVIDEODEVICESNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumerateVideoDevicesNV")) == NULL) || r;
+ r = ((wglQueryCurrentContextNV = (PFNWGLQUERYCURRENTCONTEXTNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryCurrentContextNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_present_video */
+
+#ifdef WGL_NV_swap_group
+
+static GLboolean _glewInit_WGL_NV_swap_group ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindSwapBarrierNV = (PFNWGLBINDSWAPBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"wglBindSwapBarrierNV")) == NULL) || r;
+ r = ((wglJoinSwapGroupNV = (PFNWGLJOINSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"wglJoinSwapGroupNV")) == NULL) || r;
+ r = ((wglQueryFrameCountNV = (PFNWGLQUERYFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameCountNV")) == NULL) || r;
+ r = ((wglQueryMaxSwapGroupsNV = (PFNWGLQUERYMAXSWAPGROUPSNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryMaxSwapGroupsNV")) == NULL) || r;
+ r = ((wglQuerySwapGroupNV = (PFNWGLQUERYSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"wglQuerySwapGroupNV")) == NULL) || r;
+ r = ((wglResetFrameCountNV = (PFNWGLRESETFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"wglResetFrameCountNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_swap_group */
+
+#ifdef WGL_NV_vertex_array_range
+
+static GLboolean _glewInit_WGL_NV_vertex_array_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglAllocateMemoryNV = (PFNWGLALLOCATEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"wglAllocateMemoryNV")) == NULL) || r;
+ r = ((wglFreeMemoryNV = (PFNWGLFREEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"wglFreeMemoryNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_vertex_array_range */
+
+#ifdef WGL_NV_video_capture
+
+static GLboolean _glewInit_WGL_NV_video_capture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindVideoCaptureDeviceNV = (PFNWGLBINDVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglBindVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((wglEnumerateVideoCaptureDevicesNV = (PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumerateVideoCaptureDevicesNV")) == NULL) || r;
+ r = ((wglLockVideoCaptureDeviceNV = (PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglLockVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((wglQueryVideoCaptureDeviceNV = (PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglQueryVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((wglReleaseVideoCaptureDeviceNV = (PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglReleaseVideoCaptureDeviceNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_video_capture */
+
+#ifdef WGL_NV_video_output
+
+static GLboolean _glewInit_WGL_NV_video_output ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglBindVideoImageNV = (PFNWGLBINDVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"wglBindVideoImageNV")) == NULL) || r;
+ r = ((wglGetVideoDeviceNV = (PFNWGLGETVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglGetVideoDeviceNV")) == NULL) || r;
+ r = ((wglGetVideoInfoNV = (PFNWGLGETVIDEOINFONVPROC)glewGetProcAddress((const GLubyte*)"wglGetVideoInfoNV")) == NULL) || r;
+ r = ((wglReleaseVideoDeviceNV = (PFNWGLRELEASEVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglReleaseVideoDeviceNV")) == NULL) || r;
+ r = ((wglReleaseVideoImageNV = (PFNWGLRELEASEVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"wglReleaseVideoImageNV")) == NULL) || r;
+ r = ((wglSendPbufferToVideoNV = (PFNWGLSENDPBUFFERTOVIDEONVPROC)glewGetProcAddress((const GLubyte*)"wglSendPbufferToVideoNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_NV_video_output */
+
+#ifdef WGL_OML_sync_control
+
+static GLboolean _glewInit_WGL_OML_sync_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((wglGetMscRateOML = (PFNWGLGETMSCRATEOMLPROC)glewGetProcAddress((const GLubyte*)"wglGetMscRateOML")) == NULL) || r;
+ r = ((wglGetSyncValuesOML = (PFNWGLGETSYNCVALUESOMLPROC)glewGetProcAddress((const GLubyte*)"wglGetSyncValuesOML")) == NULL) || r;
+ r = ((wglSwapBuffersMscOML = (PFNWGLSWAPBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglSwapBuffersMscOML")) == NULL) || r;
+ r = ((wglSwapLayerBuffersMscOML = (PFNWGLSWAPLAYERBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglSwapLayerBuffersMscOML")) == NULL) || r;
+ r = ((wglWaitForMscOML = (PFNWGLWAITFORMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglWaitForMscOML")) == NULL) || r;
+ r = ((wglWaitForSbcOML = (PFNWGLWAITFORSBCOMLPROC)glewGetProcAddress((const GLubyte*)"wglWaitForSbcOML")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* WGL_OML_sync_control */
+
+/* ------------------------------------------------------------------------- */
+
+static PFNWGLGETEXTENSIONSSTRINGARBPROC _wglewGetExtensionsStringARB = NULL;
+static PFNWGLGETEXTENSIONSSTRINGEXTPROC _wglewGetExtensionsStringEXT = NULL;
+
+GLboolean GLEWAPIENTRY wglewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+ if (_wglewGetExtensionsStringARB == NULL)
+ if (_wglewGetExtensionsStringEXT == NULL)
+ return GL_FALSE;
+ else
+ start = (const GLubyte*)_wglewGetExtensionsStringEXT();
+ else
+ start = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());
+ if (start == 0)
+ return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum GLEWAPIENTRY wglewInit ()
+{
+ GLboolean crippled;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ /* find wgl extension string query functions */
+ _wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB");
+ _wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT");
+ /* query wgl extension string */
+ if (_wglewGetExtensionsStringARB == NULL)
+ if (_wglewGetExtensionsStringEXT == NULL)
+ extStart = (const GLubyte*)"";
+ else
+ extStart = (const GLubyte*)_wglewGetExtensionsStringEXT();
+ else
+ extStart = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());
+ extEnd = extStart + _glewStrLen(extStart);
+ /* initialize extensions */
+ crippled = _wglewGetExtensionsStringARB == NULL && _wglewGetExtensionsStringEXT == NULL;
+#ifdef WGL_3DFX_multisample
+ WGLEW_3DFX_multisample = _glewSearchExtension("WGL_3DFX_multisample", extStart, extEnd);
+#endif /* WGL_3DFX_multisample */
+#ifdef WGL_3DL_stereo_control
+ WGLEW_3DL_stereo_control = _glewSearchExtension("WGL_3DL_stereo_control", extStart, extEnd);
+ if (glewExperimental || WGLEW_3DL_stereo_control|| crippled) WGLEW_3DL_stereo_control= !_glewInit_WGL_3DL_stereo_control();
+#endif /* WGL_3DL_stereo_control */
+#ifdef WGL_AMD_gpu_association
+ WGLEW_AMD_gpu_association = _glewSearchExtension("WGL_AMD_gpu_association", extStart, extEnd);
+ if (glewExperimental || WGLEW_AMD_gpu_association|| crippled) WGLEW_AMD_gpu_association= !_glewInit_WGL_AMD_gpu_association();
+#endif /* WGL_AMD_gpu_association */
+#ifdef WGL_ARB_buffer_region
+ WGLEW_ARB_buffer_region = _glewSearchExtension("WGL_ARB_buffer_region", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_buffer_region|| crippled) WGLEW_ARB_buffer_region= !_glewInit_WGL_ARB_buffer_region();
+#endif /* WGL_ARB_buffer_region */
+#ifdef WGL_ARB_context_flush_control
+ WGLEW_ARB_context_flush_control = _glewSearchExtension("WGL_ARB_context_flush_control", extStart, extEnd);
+#endif /* WGL_ARB_context_flush_control */
+#ifdef WGL_ARB_create_context
+ WGLEW_ARB_create_context = _glewSearchExtension("WGL_ARB_create_context", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_create_context|| crippled) WGLEW_ARB_create_context= !_glewInit_WGL_ARB_create_context();
+#endif /* WGL_ARB_create_context */
+#ifdef WGL_ARB_create_context_no_error
+ WGLEW_ARB_create_context_no_error = _glewSearchExtension("WGL_ARB_create_context_no_error", extStart, extEnd);
+#endif /* WGL_ARB_create_context_no_error */
+#ifdef WGL_ARB_create_context_profile
+ WGLEW_ARB_create_context_profile = _glewSearchExtension("WGL_ARB_create_context_profile", extStart, extEnd);
+#endif /* WGL_ARB_create_context_profile */
+#ifdef WGL_ARB_create_context_robustness
+ WGLEW_ARB_create_context_robustness = _glewSearchExtension("WGL_ARB_create_context_robustness", extStart, extEnd);
+#endif /* WGL_ARB_create_context_robustness */
+#ifdef WGL_ARB_extensions_string
+ WGLEW_ARB_extensions_string = _glewSearchExtension("WGL_ARB_extensions_string", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_extensions_string|| crippled) WGLEW_ARB_extensions_string= !_glewInit_WGL_ARB_extensions_string();
+#endif /* WGL_ARB_extensions_string */
+#ifdef WGL_ARB_framebuffer_sRGB
+ WGLEW_ARB_framebuffer_sRGB = _glewSearchExtension("WGL_ARB_framebuffer_sRGB", extStart, extEnd);
+#endif /* WGL_ARB_framebuffer_sRGB */
+#ifdef WGL_ARB_make_current_read
+ WGLEW_ARB_make_current_read = _glewSearchExtension("WGL_ARB_make_current_read", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_make_current_read|| crippled) WGLEW_ARB_make_current_read= !_glewInit_WGL_ARB_make_current_read();
+#endif /* WGL_ARB_make_current_read */
+#ifdef WGL_ARB_multisample
+ WGLEW_ARB_multisample = _glewSearchExtension("WGL_ARB_multisample", extStart, extEnd);
+#endif /* WGL_ARB_multisample */
+#ifdef WGL_ARB_pbuffer
+ WGLEW_ARB_pbuffer = _glewSearchExtension("WGL_ARB_pbuffer", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_pbuffer|| crippled) WGLEW_ARB_pbuffer= !_glewInit_WGL_ARB_pbuffer();
+#endif /* WGL_ARB_pbuffer */
+#ifdef WGL_ARB_pixel_format
+ WGLEW_ARB_pixel_format = _glewSearchExtension("WGL_ARB_pixel_format", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_pixel_format|| crippled) WGLEW_ARB_pixel_format= !_glewInit_WGL_ARB_pixel_format();
+#endif /* WGL_ARB_pixel_format */
+#ifdef WGL_ARB_pixel_format_float
+ WGLEW_ARB_pixel_format_float = _glewSearchExtension("WGL_ARB_pixel_format_float", extStart, extEnd);
+#endif /* WGL_ARB_pixel_format_float */
+#ifdef WGL_ARB_render_texture
+ WGLEW_ARB_render_texture = _glewSearchExtension("WGL_ARB_render_texture", extStart, extEnd);
+ if (glewExperimental || WGLEW_ARB_render_texture|| crippled) WGLEW_ARB_render_texture= !_glewInit_WGL_ARB_render_texture();
+#endif /* WGL_ARB_render_texture */
+#ifdef WGL_ARB_robustness_application_isolation
+ WGLEW_ARB_robustness_application_isolation = _glewSearchExtension("WGL_ARB_robustness_application_isolation", extStart, extEnd);
+#endif /* WGL_ARB_robustness_application_isolation */
+#ifdef WGL_ARB_robustness_share_group_isolation
+ WGLEW_ARB_robustness_share_group_isolation = _glewSearchExtension("WGL_ARB_robustness_share_group_isolation", extStart, extEnd);
+#endif /* WGL_ARB_robustness_share_group_isolation */
+#ifdef WGL_ATI_pixel_format_float
+ WGLEW_ATI_pixel_format_float = _glewSearchExtension("WGL_ATI_pixel_format_float", extStart, extEnd);
+#endif /* WGL_ATI_pixel_format_float */
+#ifdef WGL_ATI_render_texture_rectangle
+ WGLEW_ATI_render_texture_rectangle = _glewSearchExtension("WGL_ATI_render_texture_rectangle", extStart, extEnd);
+#endif /* WGL_ATI_render_texture_rectangle */
+#ifdef WGL_EXT_colorspace
+ WGLEW_EXT_colorspace = _glewSearchExtension("WGL_EXT_colorspace", extStart, extEnd);
+#endif /* WGL_EXT_colorspace */
+#ifdef WGL_EXT_create_context_es2_profile
+ WGLEW_EXT_create_context_es2_profile = _glewSearchExtension("WGL_EXT_create_context_es2_profile", extStart, extEnd);
+#endif /* WGL_EXT_create_context_es2_profile */
+#ifdef WGL_EXT_create_context_es_profile
+ WGLEW_EXT_create_context_es_profile = _glewSearchExtension("WGL_EXT_create_context_es_profile", extStart, extEnd);
+#endif /* WGL_EXT_create_context_es_profile */
+#ifdef WGL_EXT_depth_float
+ WGLEW_EXT_depth_float = _glewSearchExtension("WGL_EXT_depth_float", extStart, extEnd);
+#endif /* WGL_EXT_depth_float */
+#ifdef WGL_EXT_display_color_table
+ WGLEW_EXT_display_color_table = _glewSearchExtension("WGL_EXT_display_color_table", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_display_color_table|| crippled) WGLEW_EXT_display_color_table= !_glewInit_WGL_EXT_display_color_table();
+#endif /* WGL_EXT_display_color_table */
+#ifdef WGL_EXT_extensions_string
+ WGLEW_EXT_extensions_string = _glewSearchExtension("WGL_EXT_extensions_string", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_extensions_string|| crippled) WGLEW_EXT_extensions_string= !_glewInit_WGL_EXT_extensions_string();
+#endif /* WGL_EXT_extensions_string */
+#ifdef WGL_EXT_framebuffer_sRGB
+ WGLEW_EXT_framebuffer_sRGB = _glewSearchExtension("WGL_EXT_framebuffer_sRGB", extStart, extEnd);
+#endif /* WGL_EXT_framebuffer_sRGB */
+#ifdef WGL_EXT_make_current_read
+ WGLEW_EXT_make_current_read = _glewSearchExtension("WGL_EXT_make_current_read", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_make_current_read|| crippled) WGLEW_EXT_make_current_read= !_glewInit_WGL_EXT_make_current_read();
+#endif /* WGL_EXT_make_current_read */
+#ifdef WGL_EXT_multisample
+ WGLEW_EXT_multisample = _glewSearchExtension("WGL_EXT_multisample", extStart, extEnd);
+#endif /* WGL_EXT_multisample */
+#ifdef WGL_EXT_pbuffer
+ WGLEW_EXT_pbuffer = _glewSearchExtension("WGL_EXT_pbuffer", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_pbuffer|| crippled) WGLEW_EXT_pbuffer= !_glewInit_WGL_EXT_pbuffer();
+#endif /* WGL_EXT_pbuffer */
+#ifdef WGL_EXT_pixel_format
+ WGLEW_EXT_pixel_format = _glewSearchExtension("WGL_EXT_pixel_format", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_pixel_format|| crippled) WGLEW_EXT_pixel_format= !_glewInit_WGL_EXT_pixel_format();
+#endif /* WGL_EXT_pixel_format */
+#ifdef WGL_EXT_pixel_format_packed_float
+ WGLEW_EXT_pixel_format_packed_float = _glewSearchExtension("WGL_EXT_pixel_format_packed_float", extStart, extEnd);
+#endif /* WGL_EXT_pixel_format_packed_float */
+#ifdef WGL_EXT_swap_control
+ WGLEW_EXT_swap_control = _glewSearchExtension("WGL_EXT_swap_control", extStart, extEnd);
+ if (glewExperimental || WGLEW_EXT_swap_control|| crippled) WGLEW_EXT_swap_control= !_glewInit_WGL_EXT_swap_control();
+#endif /* WGL_EXT_swap_control */
+#ifdef WGL_EXT_swap_control_tear
+ WGLEW_EXT_swap_control_tear = _glewSearchExtension("WGL_EXT_swap_control_tear", extStart, extEnd);
+#endif /* WGL_EXT_swap_control_tear */
+#ifdef WGL_I3D_digital_video_control
+ WGLEW_I3D_digital_video_control = _glewSearchExtension("WGL_I3D_digital_video_control", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_digital_video_control|| crippled) WGLEW_I3D_digital_video_control= !_glewInit_WGL_I3D_digital_video_control();
+#endif /* WGL_I3D_digital_video_control */
+#ifdef WGL_I3D_gamma
+ WGLEW_I3D_gamma = _glewSearchExtension("WGL_I3D_gamma", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_gamma|| crippled) WGLEW_I3D_gamma= !_glewInit_WGL_I3D_gamma();
+#endif /* WGL_I3D_gamma */
+#ifdef WGL_I3D_genlock
+ WGLEW_I3D_genlock = _glewSearchExtension("WGL_I3D_genlock", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_genlock|| crippled) WGLEW_I3D_genlock= !_glewInit_WGL_I3D_genlock();
+#endif /* WGL_I3D_genlock */
+#ifdef WGL_I3D_image_buffer
+ WGLEW_I3D_image_buffer = _glewSearchExtension("WGL_I3D_image_buffer", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_image_buffer|| crippled) WGLEW_I3D_image_buffer= !_glewInit_WGL_I3D_image_buffer();
+#endif /* WGL_I3D_image_buffer */
+#ifdef WGL_I3D_swap_frame_lock
+ WGLEW_I3D_swap_frame_lock = _glewSearchExtension("WGL_I3D_swap_frame_lock", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_swap_frame_lock|| crippled) WGLEW_I3D_swap_frame_lock= !_glewInit_WGL_I3D_swap_frame_lock();
+#endif /* WGL_I3D_swap_frame_lock */
+#ifdef WGL_I3D_swap_frame_usage
+ WGLEW_I3D_swap_frame_usage = _glewSearchExtension("WGL_I3D_swap_frame_usage", extStart, extEnd);
+ if (glewExperimental || WGLEW_I3D_swap_frame_usage|| crippled) WGLEW_I3D_swap_frame_usage= !_glewInit_WGL_I3D_swap_frame_usage();
+#endif /* WGL_I3D_swap_frame_usage */
+#ifdef WGL_NV_DX_interop
+ WGLEW_NV_DX_interop = _glewSearchExtension("WGL_NV_DX_interop", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_DX_interop|| crippled) WGLEW_NV_DX_interop= !_glewInit_WGL_NV_DX_interop();
+#endif /* WGL_NV_DX_interop */
+#ifdef WGL_NV_DX_interop2
+ WGLEW_NV_DX_interop2 = _glewSearchExtension("WGL_NV_DX_interop2", extStart, extEnd);
+#endif /* WGL_NV_DX_interop2 */
+#ifdef WGL_NV_copy_image
+ WGLEW_NV_copy_image = _glewSearchExtension("WGL_NV_copy_image", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_copy_image|| crippled) WGLEW_NV_copy_image= !_glewInit_WGL_NV_copy_image();
+#endif /* WGL_NV_copy_image */
+#ifdef WGL_NV_delay_before_swap
+ WGLEW_NV_delay_before_swap = _glewSearchExtension("WGL_NV_delay_before_swap", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_delay_before_swap|| crippled) WGLEW_NV_delay_before_swap= !_glewInit_WGL_NV_delay_before_swap();
+#endif /* WGL_NV_delay_before_swap */
+#ifdef WGL_NV_float_buffer
+ WGLEW_NV_float_buffer = _glewSearchExtension("WGL_NV_float_buffer", extStart, extEnd);
+#endif /* WGL_NV_float_buffer */
+#ifdef WGL_NV_gpu_affinity
+ WGLEW_NV_gpu_affinity = _glewSearchExtension("WGL_NV_gpu_affinity", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_gpu_affinity|| crippled) WGLEW_NV_gpu_affinity= !_glewInit_WGL_NV_gpu_affinity();
+#endif /* WGL_NV_gpu_affinity */
+#ifdef WGL_NV_multigpu_context
+ WGLEW_NV_multigpu_context = _glewSearchExtension("WGL_NV_multigpu_context", extStart, extEnd);
+#endif /* WGL_NV_multigpu_context */
+#ifdef WGL_NV_multisample_coverage
+ WGLEW_NV_multisample_coverage = _glewSearchExtension("WGL_NV_multisample_coverage", extStart, extEnd);
+#endif /* WGL_NV_multisample_coverage */
+#ifdef WGL_NV_present_video
+ WGLEW_NV_present_video = _glewSearchExtension("WGL_NV_present_video", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_present_video|| crippled) WGLEW_NV_present_video= !_glewInit_WGL_NV_present_video();
+#endif /* WGL_NV_present_video */
+#ifdef WGL_NV_render_depth_texture
+ WGLEW_NV_render_depth_texture = _glewSearchExtension("WGL_NV_render_depth_texture", extStart, extEnd);
+#endif /* WGL_NV_render_depth_texture */
+#ifdef WGL_NV_render_texture_rectangle
+ WGLEW_NV_render_texture_rectangle = _glewSearchExtension("WGL_NV_render_texture_rectangle", extStart, extEnd);
+#endif /* WGL_NV_render_texture_rectangle */
+#ifdef WGL_NV_swap_group
+ WGLEW_NV_swap_group = _glewSearchExtension("WGL_NV_swap_group", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_swap_group|| crippled) WGLEW_NV_swap_group= !_glewInit_WGL_NV_swap_group();
+#endif /* WGL_NV_swap_group */
+#ifdef WGL_NV_vertex_array_range
+ WGLEW_NV_vertex_array_range = _glewSearchExtension("WGL_NV_vertex_array_range", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_vertex_array_range|| crippled) WGLEW_NV_vertex_array_range= !_glewInit_WGL_NV_vertex_array_range();
+#endif /* WGL_NV_vertex_array_range */
+#ifdef WGL_NV_video_capture
+ WGLEW_NV_video_capture = _glewSearchExtension("WGL_NV_video_capture", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_video_capture|| crippled) WGLEW_NV_video_capture= !_glewInit_WGL_NV_video_capture();
+#endif /* WGL_NV_video_capture */
+#ifdef WGL_NV_video_output
+ WGLEW_NV_video_output = _glewSearchExtension("WGL_NV_video_output", extStart, extEnd);
+ if (glewExperimental || WGLEW_NV_video_output|| crippled) WGLEW_NV_video_output= !_glewInit_WGL_NV_video_output();
+#endif /* WGL_NV_video_output */
+#ifdef WGL_OML_sync_control
+ WGLEW_OML_sync_control = _glewSearchExtension("WGL_OML_sync_control", extStart, extEnd);
+ if (glewExperimental || WGLEW_OML_sync_control|| crippled) WGLEW_OML_sync_control= !_glewInit_WGL_OML_sync_control();
+#endif /* WGL_OML_sync_control */
+
+ return GLEW_OK;
+}
+
+#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))
+
+PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay = NULL;
+
+PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig = NULL;
+PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext = NULL;
+PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer = NULL;
+PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap = NULL;
+PFNGLXCREATEWINDOWPROC __glewXCreateWindow = NULL;
+PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer = NULL;
+PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap = NULL;
+PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow = NULL;
+PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable = NULL;
+PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib = NULL;
+PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs = NULL;
+PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent = NULL;
+PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig = NULL;
+PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent = NULL;
+PFNGLXQUERYCONTEXTPROC __glewXQueryContext = NULL;
+PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable = NULL;
+PFNGLXSELECTEVENTPROC __glewXSelectEvent = NULL;
+
+PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC __glewXBlitContextFramebufferAMD = NULL;
+PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC __glewXCreateAssociatedContextAMD = NULL;
+PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __glewXCreateAssociatedContextAttribsAMD = NULL;
+PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC __glewXDeleteAssociatedContextAMD = NULL;
+PFNGLXGETCONTEXTGPUIDAMDPROC __glewXGetContextGPUIDAMD = NULL;
+PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC __glewXGetCurrentAssociatedContextAMD = NULL;
+PFNGLXGETGPUIDSAMDPROC __glewXGetGPUIDsAMD = NULL;
+PFNGLXGETGPUINFOAMDPROC __glewXGetGPUInfoAMD = NULL;
+PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __glewXMakeAssociatedContextCurrentAMD = NULL;
+
+PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB = NULL;
+
+PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI = NULL;
+PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI = NULL;
+PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI = NULL;
+
+PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT = NULL;
+PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT = NULL;
+PFNGLXGETCURRENTDISPLAYEXTPROC __glewXGetCurrentDisplayEXT = NULL;
+PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT = NULL;
+PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT = NULL;
+
+PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT = NULL;
+
+PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT = NULL;
+PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT = NULL;
+
+PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA = NULL;
+
+PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA = NULL;
+
+PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA = NULL;
+
+PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC __glewXQueryCurrentRendererIntegerMESA = NULL;
+PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC __glewXQueryCurrentRendererStringMESA = NULL;
+PFNGLXQUERYRENDERERINTEGERMESAPROC __glewXQueryRendererIntegerMESA = NULL;
+PFNGLXQUERYRENDERERSTRINGMESAPROC __glewXQueryRendererStringMESA = NULL;
+
+PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA = NULL;
+
+PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA = NULL;
+
+PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA = NULL;
+PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA = NULL;
+
+PFNGLXCOPYBUFFERSUBDATANVPROC __glewXCopyBufferSubDataNV = NULL;
+PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC __glewXNamedCopyBufferSubDataNV = NULL;
+
+PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV = NULL;
+
+PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV = NULL;
+
+PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV = NULL;
+PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV = NULL;
+
+PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV = NULL;
+PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV = NULL;
+PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV = NULL;
+PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV = NULL;
+PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV = NULL;
+PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV = NULL;
+
+PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV = NULL;
+PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV = NULL;
+
+PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV = NULL;
+PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV = NULL;
+PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV = NULL;
+PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV = NULL;
+PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV = NULL;
+
+PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV = NULL;
+PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV = NULL;
+PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV = NULL;
+PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV = NULL;
+PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV = NULL;
+PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV = NULL;
+
+PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML = NULL;
+PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML = NULL;
+PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML = NULL;
+PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML = NULL;
+PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML = NULL;
+
+PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX = NULL;
+PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX = NULL;
+PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX = NULL;
+PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX = NULL;
+PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX = NULL;
+PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX = NULL;
+
+PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX = NULL;
+PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX = NULL;
+PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX = NULL;
+PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX = NULL;
+PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX = NULL;
+PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX = NULL;
+PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX = NULL;
+PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX = NULL;
+
+PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX = NULL;
+PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX = NULL;
+PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX = NULL;
+PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX = NULL;
+PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX = NULL;
+
+PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX = NULL;
+PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX = NULL;
+
+PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX = NULL;
+
+PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX = NULL;
+PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX = NULL;
+PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX = NULL;
+PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX = NULL;
+PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX = NULL;
+
+PFNGLXCUSHIONSGIPROC __glewXCushionSGI = NULL;
+
+PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI = NULL;
+PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI = NULL;
+
+PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI = NULL;
+
+PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI = NULL;
+PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI = NULL;
+
+PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN = NULL;
+
+PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN = NULL;
+PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN = NULL;
+
+GLboolean __GLXEW_VERSION_1_0 = GL_FALSE;
+GLboolean __GLXEW_VERSION_1_1 = GL_FALSE;
+GLboolean __GLXEW_VERSION_1_2 = GL_FALSE;
+GLboolean __GLXEW_VERSION_1_3 = GL_FALSE;
+GLboolean __GLXEW_VERSION_1_4 = GL_FALSE;
+GLboolean __GLXEW_3DFX_multisample = GL_FALSE;
+GLboolean __GLXEW_AMD_gpu_association = GL_FALSE;
+GLboolean __GLXEW_ARB_context_flush_control = GL_FALSE;
+GLboolean __GLXEW_ARB_create_context = GL_FALSE;
+GLboolean __GLXEW_ARB_create_context_no_error = GL_FALSE;
+GLboolean __GLXEW_ARB_create_context_profile = GL_FALSE;
+GLboolean __GLXEW_ARB_create_context_robustness = GL_FALSE;
+GLboolean __GLXEW_ARB_fbconfig_float = GL_FALSE;
+GLboolean __GLXEW_ARB_framebuffer_sRGB = GL_FALSE;
+GLboolean __GLXEW_ARB_get_proc_address = GL_FALSE;
+GLboolean __GLXEW_ARB_multisample = GL_FALSE;
+GLboolean __GLXEW_ARB_robustness_application_isolation = GL_FALSE;
+GLboolean __GLXEW_ARB_robustness_share_group_isolation = GL_FALSE;
+GLboolean __GLXEW_ARB_vertex_buffer_object = GL_FALSE;
+GLboolean __GLXEW_ATI_pixel_format_float = GL_FALSE;
+GLboolean __GLXEW_ATI_render_texture = GL_FALSE;
+GLboolean __GLXEW_EXT_buffer_age = GL_FALSE;
+GLboolean __GLXEW_EXT_context_priority = GL_FALSE;
+GLboolean __GLXEW_EXT_create_context_es2_profile = GL_FALSE;
+GLboolean __GLXEW_EXT_create_context_es_profile = GL_FALSE;
+GLboolean __GLXEW_EXT_fbconfig_packed_float = GL_FALSE;
+GLboolean __GLXEW_EXT_framebuffer_sRGB = GL_FALSE;
+GLboolean __GLXEW_EXT_get_drawable_type = GL_FALSE;
+GLboolean __GLXEW_EXT_import_context = GL_FALSE;
+GLboolean __GLXEW_EXT_libglvnd = GL_FALSE;
+GLboolean __GLXEW_EXT_no_config_context = GL_FALSE;
+GLboolean __GLXEW_EXT_scene_marker = GL_FALSE;
+GLboolean __GLXEW_EXT_stereo_tree = GL_FALSE;
+GLboolean __GLXEW_EXT_swap_control = GL_FALSE;
+GLboolean __GLXEW_EXT_swap_control_tear = GL_FALSE;
+GLboolean __GLXEW_EXT_texture_from_pixmap = GL_FALSE;
+GLboolean __GLXEW_EXT_visual_info = GL_FALSE;
+GLboolean __GLXEW_EXT_visual_rating = GL_FALSE;
+GLboolean __GLXEW_INTEL_swap_event = GL_FALSE;
+GLboolean __GLXEW_MESA_agp_offset = GL_FALSE;
+GLboolean __GLXEW_MESA_copy_sub_buffer = GL_FALSE;
+GLboolean __GLXEW_MESA_pixmap_colormap = GL_FALSE;
+GLboolean __GLXEW_MESA_query_renderer = GL_FALSE;
+GLboolean __GLXEW_MESA_release_buffers = GL_FALSE;
+GLboolean __GLXEW_MESA_set_3dfx_mode = GL_FALSE;
+GLboolean __GLXEW_MESA_swap_control = GL_FALSE;
+GLboolean __GLXEW_NV_copy_buffer = GL_FALSE;
+GLboolean __GLXEW_NV_copy_image = GL_FALSE;
+GLboolean __GLXEW_NV_delay_before_swap = GL_FALSE;
+GLboolean __GLXEW_NV_float_buffer = GL_FALSE;
+GLboolean __GLXEW_NV_multigpu_context = GL_FALSE;
+GLboolean __GLXEW_NV_multisample_coverage = GL_FALSE;
+GLboolean __GLXEW_NV_present_video = GL_FALSE;
+GLboolean __GLXEW_NV_robustness_video_memory_purge = GL_FALSE;
+GLboolean __GLXEW_NV_swap_group = GL_FALSE;
+GLboolean __GLXEW_NV_vertex_array_range = GL_FALSE;
+GLboolean __GLXEW_NV_video_capture = GL_FALSE;
+GLboolean __GLXEW_NV_video_out = GL_FALSE;
+GLboolean __GLXEW_OML_swap_method = GL_FALSE;
+GLboolean __GLXEW_OML_sync_control = GL_FALSE;
+GLboolean __GLXEW_SGIS_blended_overlay = GL_FALSE;
+GLboolean __GLXEW_SGIS_color_range = GL_FALSE;
+GLboolean __GLXEW_SGIS_multisample = GL_FALSE;
+GLboolean __GLXEW_SGIS_shared_multisample = GL_FALSE;
+GLboolean __GLXEW_SGIX_fbconfig = GL_FALSE;
+GLboolean __GLXEW_SGIX_hyperpipe = GL_FALSE;
+GLboolean __GLXEW_SGIX_pbuffer = GL_FALSE;
+GLboolean __GLXEW_SGIX_swap_barrier = GL_FALSE;
+GLboolean __GLXEW_SGIX_swap_group = GL_FALSE;
+GLboolean __GLXEW_SGIX_video_resize = GL_FALSE;
+GLboolean __GLXEW_SGIX_visual_select_group = GL_FALSE;
+GLboolean __GLXEW_SGI_cushion = GL_FALSE;
+GLboolean __GLXEW_SGI_make_current_read = GL_FALSE;
+GLboolean __GLXEW_SGI_swap_control = GL_FALSE;
+GLboolean __GLXEW_SGI_video_sync = GL_FALSE;
+GLboolean __GLXEW_SUN_get_transparent_index = GL_FALSE;
+GLboolean __GLXEW_SUN_video_resize = GL_FALSE;
+#ifdef GLX_VERSION_1_2
+
+static GLboolean _glewInit_GLX_VERSION_1_2 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetCurrentDisplay = (PFNGLXGETCURRENTDISPLAYPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentDisplay")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_VERSION_1_2 */
+
+#ifdef GLX_VERSION_1_3
+
+static GLboolean _glewInit_GLX_VERSION_1_3 ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC)glewGetProcAddress((const GLubyte*)"glXChooseFBConfig")) == NULL) || r;
+ r = ((glXCreateNewContext = (PFNGLXCREATENEWCONTEXTPROC)glewGetProcAddress((const GLubyte*)"glXCreateNewContext")) == NULL) || r;
+ r = ((glXCreatePbuffer = (PFNGLXCREATEPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glXCreatePbuffer")) == NULL) || r;
+ r = ((glXCreatePixmap = (PFNGLXCREATEPIXMAPPROC)glewGetProcAddress((const GLubyte*)"glXCreatePixmap")) == NULL) || r;
+ r = ((glXCreateWindow = (PFNGLXCREATEWINDOWPROC)glewGetProcAddress((const GLubyte*)"glXCreateWindow")) == NULL) || r;
+ r = ((glXDestroyPbuffer = (PFNGLXDESTROYPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glXDestroyPbuffer")) == NULL) || r;
+ r = ((glXDestroyPixmap = (PFNGLXDESTROYPIXMAPPROC)glewGetProcAddress((const GLubyte*)"glXDestroyPixmap")) == NULL) || r;
+ r = ((glXDestroyWindow = (PFNGLXDESTROYWINDOWPROC)glewGetProcAddress((const GLubyte*)"glXDestroyWindow")) == NULL) || r;
+ r = ((glXGetCurrentReadDrawable = (PFNGLXGETCURRENTREADDRAWABLEPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentReadDrawable")) == NULL) || r;
+ r = ((glXGetFBConfigAttrib = (PFNGLXGETFBCONFIGATTRIBPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigAttrib")) == NULL) || r;
+ r = ((glXGetFBConfigs = (PFNGLXGETFBCONFIGSPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigs")) == NULL) || r;
+ r = ((glXGetSelectedEvent = (PFNGLXGETSELECTEDEVENTPROC)glewGetProcAddress((const GLubyte*)"glXGetSelectedEvent")) == NULL) || r;
+ r = ((glXGetVisualFromFBConfig = (PFNGLXGETVISUALFROMFBCONFIGPROC)glewGetProcAddress((const GLubyte*)"glXGetVisualFromFBConfig")) == NULL) || r;
+ r = ((glXMakeContextCurrent = (PFNGLXMAKECONTEXTCURRENTPROC)glewGetProcAddress((const GLubyte*)"glXMakeContextCurrent")) == NULL) || r;
+ r = ((glXQueryContext = (PFNGLXQUERYCONTEXTPROC)glewGetProcAddress((const GLubyte*)"glXQueryContext")) == NULL) || r;
+ r = ((glXQueryDrawable = (PFNGLXQUERYDRAWABLEPROC)glewGetProcAddress((const GLubyte*)"glXQueryDrawable")) == NULL) || r;
+ r = ((glXSelectEvent = (PFNGLXSELECTEVENTPROC)glewGetProcAddress((const GLubyte*)"glXSelectEvent")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_VERSION_1_3 */
+
+#ifdef GLX_AMD_gpu_association
+
+static GLboolean _glewInit_GLX_AMD_gpu_association ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBlitContextFramebufferAMD = (PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC)glewGetProcAddress((const GLubyte*)"glXBlitContextFramebufferAMD")) == NULL) || r;
+ r = ((glXCreateAssociatedContextAMD = (PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"glXCreateAssociatedContextAMD")) == NULL) || r;
+ r = ((glXCreateAssociatedContextAttribsAMD = (PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)glewGetProcAddress((const GLubyte*)"glXCreateAssociatedContextAttribsAMD")) == NULL) || r;
+ r = ((glXDeleteAssociatedContextAMD = (PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"glXDeleteAssociatedContextAMD")) == NULL) || r;
+ r = ((glXGetContextGPUIDAMD = (PFNGLXGETCONTEXTGPUIDAMDPROC)glewGetProcAddress((const GLubyte*)"glXGetContextGPUIDAMD")) == NULL) || r;
+ r = ((glXGetCurrentAssociatedContextAMD = (PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentAssociatedContextAMD")) == NULL) || r;
+ r = ((glXGetGPUIDsAMD = (PFNGLXGETGPUIDSAMDPROC)glewGetProcAddress((const GLubyte*)"glXGetGPUIDsAMD")) == NULL) || r;
+ r = ((glXGetGPUInfoAMD = (PFNGLXGETGPUINFOAMDPROC)glewGetProcAddress((const GLubyte*)"glXGetGPUInfoAMD")) == NULL) || r;
+ r = ((glXMakeAssociatedContextCurrentAMD = (PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)glewGetProcAddress((const GLubyte*)"glXMakeAssociatedContextCurrentAMD")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_AMD_gpu_association */
+
+#ifdef GLX_ARB_create_context
+
+static GLboolean _glewInit_GLX_ARB_create_context ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)glewGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_ARB_create_context */
+
+#ifdef GLX_ATI_render_texture
+
+static GLboolean _glewInit_GLX_ATI_render_texture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindTexImageATI = (PFNGLXBINDTEXIMAGEATIPROC)glewGetProcAddress((const GLubyte*)"glXBindTexImageATI")) == NULL) || r;
+ r = ((glXDrawableAttribATI = (PFNGLXDRAWABLEATTRIBATIPROC)glewGetProcAddress((const GLubyte*)"glXDrawableAttribATI")) == NULL) || r;
+ r = ((glXReleaseTexImageATI = (PFNGLXRELEASETEXIMAGEATIPROC)glewGetProcAddress((const GLubyte*)"glXReleaseTexImageATI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_ATI_render_texture */
+
+#ifdef GLX_EXT_import_context
+
+static GLboolean _glewInit_GLX_EXT_import_context ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXFreeContextEXT = (PFNGLXFREECONTEXTEXTPROC)glewGetProcAddress((const GLubyte*)"glXFreeContextEXT")) == NULL) || r;
+ r = ((glXGetContextIDEXT = (PFNGLXGETCONTEXTIDEXTPROC)glewGetProcAddress((const GLubyte*)"glXGetContextIDEXT")) == NULL) || r;
+ r = ((glXGetCurrentDisplayEXT = (PFNGLXGETCURRENTDISPLAYEXTPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentDisplayEXT")) == NULL) || r;
+ r = ((glXImportContextEXT = (PFNGLXIMPORTCONTEXTEXTPROC)glewGetProcAddress((const GLubyte*)"glXImportContextEXT")) == NULL) || r;
+ r = ((glXQueryContextInfoEXT = (PFNGLXQUERYCONTEXTINFOEXTPROC)glewGetProcAddress((const GLubyte*)"glXQueryContextInfoEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_EXT_import_context */
+
+#ifdef GLX_EXT_swap_control
+
+static GLboolean _glewInit_GLX_EXT_swap_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXSwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)"glXSwapIntervalEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_EXT_swap_control */
+
+#ifdef GLX_EXT_texture_from_pixmap
+
+static GLboolean _glewInit_GLX_EXT_texture_from_pixmap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindTexImageEXT = (PFNGLXBINDTEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glXBindTexImageEXT")) == NULL) || r;
+ r = ((glXReleaseTexImageEXT = (PFNGLXRELEASETEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glXReleaseTexImageEXT")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_EXT_texture_from_pixmap */
+
+#ifdef GLX_MESA_agp_offset
+
+static GLboolean _glewInit_GLX_MESA_agp_offset ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetAGPOffsetMESA = (PFNGLXGETAGPOFFSETMESAPROC)glewGetProcAddress((const GLubyte*)"glXGetAGPOffsetMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_agp_offset */
+
+#ifdef GLX_MESA_copy_sub_buffer
+
+static GLboolean _glewInit_GLX_MESA_copy_sub_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCopySubBufferMESA = (PFNGLXCOPYSUBBUFFERMESAPROC)glewGetProcAddress((const GLubyte*)"glXCopySubBufferMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_copy_sub_buffer */
+
+#ifdef GLX_MESA_pixmap_colormap
+
+static GLboolean _glewInit_GLX_MESA_pixmap_colormap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCreateGLXPixmapMESA = (PFNGLXCREATEGLXPIXMAPMESAPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPixmapMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_pixmap_colormap */
+
+#ifdef GLX_MESA_query_renderer
+
+static GLboolean _glewInit_GLX_MESA_query_renderer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXQueryCurrentRendererIntegerMESA = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC)glewGetProcAddress((const GLubyte*)"glXQueryCurrentRendererIntegerMESA")) == NULL) || r;
+ r = ((glXQueryCurrentRendererStringMESA = (PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC)glewGetProcAddress((const GLubyte*)"glXQueryCurrentRendererStringMESA")) == NULL) || r;
+ r = ((glXQueryRendererIntegerMESA = (PFNGLXQUERYRENDERERINTEGERMESAPROC)glewGetProcAddress((const GLubyte*)"glXQueryRendererIntegerMESA")) == NULL) || r;
+ r = ((glXQueryRendererStringMESA = (PFNGLXQUERYRENDERERSTRINGMESAPROC)glewGetProcAddress((const GLubyte*)"glXQueryRendererStringMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_query_renderer */
+
+#ifdef GLX_MESA_release_buffers
+
+static GLboolean _glewInit_GLX_MESA_release_buffers ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXReleaseBuffersMESA = (PFNGLXRELEASEBUFFERSMESAPROC)glewGetProcAddress((const GLubyte*)"glXReleaseBuffersMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_release_buffers */
+
+#ifdef GLX_MESA_set_3dfx_mode
+
+static GLboolean _glewInit_GLX_MESA_set_3dfx_mode ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXSet3DfxModeMESA = (PFNGLXSET3DFXMODEMESAPROC)glewGetProcAddress((const GLubyte*)"glXSet3DfxModeMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_set_3dfx_mode */
+
+#ifdef GLX_MESA_swap_control
+
+static GLboolean _glewInit_GLX_MESA_swap_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetSwapIntervalMESA = (PFNGLXGETSWAPINTERVALMESAPROC)glewGetProcAddress((const GLubyte*)"glXGetSwapIntervalMESA")) == NULL) || r;
+ r = ((glXSwapIntervalMESA = (PFNGLXSWAPINTERVALMESAPROC)glewGetProcAddress((const GLubyte*)"glXSwapIntervalMESA")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_MESA_swap_control */
+
+#ifdef GLX_NV_copy_buffer
+
+static GLboolean _glewInit_GLX_NV_copy_buffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCopyBufferSubDataNV = (PFNGLXCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glXCopyBufferSubDataNV")) == NULL) || r;
+ r = ((glXNamedCopyBufferSubDataNV = (PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glXNamedCopyBufferSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_copy_buffer */
+
+#ifdef GLX_NV_copy_image
+
+static GLboolean _glewInit_GLX_NV_copy_image ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCopyImageSubDataNV = (PFNGLXCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)"glXCopyImageSubDataNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_copy_image */
+
+#ifdef GLX_NV_delay_before_swap
+
+static GLboolean _glewInit_GLX_NV_delay_before_swap ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXDelayBeforeSwapNV = (PFNGLXDELAYBEFORESWAPNVPROC)glewGetProcAddress((const GLubyte*)"glXDelayBeforeSwapNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_delay_before_swap */
+
+#ifdef GLX_NV_present_video
+
+static GLboolean _glewInit_GLX_NV_present_video ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindVideoDeviceNV = (PFNGLXBINDVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXBindVideoDeviceNV")) == NULL) || r;
+ r = ((glXEnumerateVideoDevicesNV = (PFNGLXENUMERATEVIDEODEVICESNVPROC)glewGetProcAddress((const GLubyte*)"glXEnumerateVideoDevicesNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_present_video */
+
+#ifdef GLX_NV_swap_group
+
+static GLboolean _glewInit_GLX_NV_swap_group ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindSwapBarrierNV = (PFNGLXBINDSWAPBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glXBindSwapBarrierNV")) == NULL) || r;
+ r = ((glXJoinSwapGroupNV = (PFNGLXJOINSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"glXJoinSwapGroupNV")) == NULL) || r;
+ r = ((glXQueryFrameCountNV = (PFNGLXQUERYFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glXQueryFrameCountNV")) == NULL) || r;
+ r = ((glXQueryMaxSwapGroupsNV = (PFNGLXQUERYMAXSWAPGROUPSNVPROC)glewGetProcAddress((const GLubyte*)"glXQueryMaxSwapGroupsNV")) == NULL) || r;
+ r = ((glXQuerySwapGroupNV = (PFNGLXQUERYSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"glXQuerySwapGroupNV")) == NULL) || r;
+ r = ((glXResetFrameCountNV = (PFNGLXRESETFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glXResetFrameCountNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_swap_group */
+
+#ifdef GLX_NV_vertex_array_range
+
+static GLboolean _glewInit_GLX_NV_vertex_array_range ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXAllocateMemoryNV = (PFNGLXALLOCATEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glXAllocateMemoryNV")) == NULL) || r;
+ r = ((glXFreeMemoryNV = (PFNGLXFREEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glXFreeMemoryNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_vertex_array_range */
+
+#ifdef GLX_NV_video_capture
+
+static GLboolean _glewInit_GLX_NV_video_capture ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindVideoCaptureDeviceNV = (PFNGLXBINDVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXBindVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((glXEnumerateVideoCaptureDevicesNV = (PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC)glewGetProcAddress((const GLubyte*)"glXEnumerateVideoCaptureDevicesNV")) == NULL) || r;
+ r = ((glXLockVideoCaptureDeviceNV = (PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXLockVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((glXQueryVideoCaptureDeviceNV = (PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXQueryVideoCaptureDeviceNV")) == NULL) || r;
+ r = ((glXReleaseVideoCaptureDeviceNV = (PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXReleaseVideoCaptureDeviceNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_video_capture */
+
+#ifdef GLX_NV_video_out
+
+static GLboolean _glewInit_GLX_NV_video_out ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindVideoImageNV = (PFNGLXBINDVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glXBindVideoImageNV")) == NULL) || r;
+ r = ((glXGetVideoDeviceNV = (PFNGLXGETVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoDeviceNV")) == NULL) || r;
+ r = ((glXGetVideoInfoNV = (PFNGLXGETVIDEOINFONVPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoInfoNV")) == NULL) || r;
+ r = ((glXReleaseVideoDeviceNV = (PFNGLXRELEASEVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXReleaseVideoDeviceNV")) == NULL) || r;
+ r = ((glXReleaseVideoImageNV = (PFNGLXRELEASEVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glXReleaseVideoImageNV")) == NULL) || r;
+ r = ((glXSendPbufferToVideoNV = (PFNGLXSENDPBUFFERTOVIDEONVPROC)glewGetProcAddress((const GLubyte*)"glXSendPbufferToVideoNV")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_NV_video_out */
+
+#ifdef GLX_OML_sync_control
+
+static GLboolean _glewInit_GLX_OML_sync_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetMscRateOML = (PFNGLXGETMSCRATEOMLPROC)glewGetProcAddress((const GLubyte*)"glXGetMscRateOML")) == NULL) || r;
+ r = ((glXGetSyncValuesOML = (PFNGLXGETSYNCVALUESOMLPROC)glewGetProcAddress((const GLubyte*)"glXGetSyncValuesOML")) == NULL) || r;
+ r = ((glXSwapBuffersMscOML = (PFNGLXSWAPBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"glXSwapBuffersMscOML")) == NULL) || r;
+ r = ((glXWaitForMscOML = (PFNGLXWAITFORMSCOMLPROC)glewGetProcAddress((const GLubyte*)"glXWaitForMscOML")) == NULL) || r;
+ r = ((glXWaitForSbcOML = (PFNGLXWAITFORSBCOMLPROC)glewGetProcAddress((const GLubyte*)"glXWaitForSbcOML")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_OML_sync_control */
+
+#ifdef GLX_SGIX_fbconfig
+
+static GLboolean _glewInit_GLX_SGIX_fbconfig ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXChooseFBConfigSGIX = (PFNGLXCHOOSEFBCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChooseFBConfigSGIX")) == NULL) || r;
+ r = ((glXCreateContextWithConfigSGIX = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateContextWithConfigSGIX")) == NULL) || r;
+ r = ((glXCreateGLXPixmapWithConfigSGIX = (PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPixmapWithConfigSGIX")) == NULL) || r;
+ r = ((glXGetFBConfigAttribSGIX = (PFNGLXGETFBCONFIGATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigAttribSGIX")) == NULL) || r;
+ r = ((glXGetFBConfigFromVisualSGIX = (PFNGLXGETFBCONFIGFROMVISUALSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigFromVisualSGIX")) == NULL) || r;
+ r = ((glXGetVisualFromFBConfigSGIX = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetVisualFromFBConfigSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_fbconfig */
+
+#ifdef GLX_SGIX_hyperpipe
+
+static GLboolean _glewInit_GLX_SGIX_hyperpipe ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindHyperpipeSGIX = (PFNGLXBINDHYPERPIPESGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindHyperpipeSGIX")) == NULL) || r;
+ r = ((glXDestroyHyperpipeConfigSGIX = (PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXDestroyHyperpipeConfigSGIX")) == NULL) || r;
+ r = ((glXHyperpipeAttribSGIX = (PFNGLXHYPERPIPEATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXHyperpipeAttribSGIX")) == NULL) || r;
+ r = ((glXHyperpipeConfigSGIX = (PFNGLXHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXHyperpipeConfigSGIX")) == NULL) || r;
+ r = ((glXQueryHyperpipeAttribSGIX = (PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeAttribSGIX")) == NULL) || r;
+ r = ((glXQueryHyperpipeBestAttribSGIX = (PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeBestAttribSGIX")) == NULL) || r;
+ r = ((glXQueryHyperpipeConfigSGIX = (PFNGLXQUERYHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeConfigSGIX")) == NULL) || r;
+ r = ((glXQueryHyperpipeNetworkSGIX = (PFNGLXQUERYHYPERPIPENETWORKSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeNetworkSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_hyperpipe */
+
+#ifdef GLX_SGIX_pbuffer
+
+static GLboolean _glewInit_GLX_SGIX_pbuffer ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCreateGLXPbufferSGIX = (PFNGLXCREATEGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPbufferSGIX")) == NULL) || r;
+ r = ((glXDestroyGLXPbufferSGIX = (PFNGLXDESTROYGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXDestroyGLXPbufferSGIX")) == NULL) || r;
+ r = ((glXGetSelectedEventSGIX = (PFNGLXGETSELECTEDEVENTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetSelectedEventSGIX")) == NULL) || r;
+ r = ((glXQueryGLXPbufferSGIX = (PFNGLXQUERYGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryGLXPbufferSGIX")) == NULL) || r;
+ r = ((glXSelectEventSGIX = (PFNGLXSELECTEVENTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXSelectEventSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_pbuffer */
+
+#ifdef GLX_SGIX_swap_barrier
+
+static GLboolean _glewInit_GLX_SGIX_swap_barrier ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindSwapBarrierSGIX = (PFNGLXBINDSWAPBARRIERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindSwapBarrierSGIX")) == NULL) || r;
+ r = ((glXQueryMaxSwapBarriersSGIX = (PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryMaxSwapBarriersSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_swap_barrier */
+
+#ifdef GLX_SGIX_swap_group
+
+static GLboolean _glewInit_GLX_SGIX_swap_group ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXJoinSwapGroupSGIX = (PFNGLXJOINSWAPGROUPSGIXPROC)glewGetProcAddress((const GLubyte*)"glXJoinSwapGroupSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_swap_group */
+
+#ifdef GLX_SGIX_video_resize
+
+static GLboolean _glewInit_GLX_SGIX_video_resize ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXBindChannelToWindowSGIX = (PFNGLXBINDCHANNELTOWINDOWSGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindChannelToWindowSGIX")) == NULL) || r;
+ r = ((glXChannelRectSGIX = (PFNGLXCHANNELRECTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChannelRectSGIX")) == NULL) || r;
+ r = ((glXChannelRectSyncSGIX = (PFNGLXCHANNELRECTSYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChannelRectSyncSGIX")) == NULL) || r;
+ r = ((glXQueryChannelDeltasSGIX = (PFNGLXQUERYCHANNELDELTASSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryChannelDeltasSGIX")) == NULL) || r;
+ r = ((glXQueryChannelRectSGIX = (PFNGLXQUERYCHANNELRECTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryChannelRectSGIX")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGIX_video_resize */
+
+#ifdef GLX_SGI_cushion
+
+static GLboolean _glewInit_GLX_SGI_cushion ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXCushionSGI = (PFNGLXCUSHIONSGIPROC)glewGetProcAddress((const GLubyte*)"glXCushionSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGI_cushion */
+
+#ifdef GLX_SGI_make_current_read
+
+static GLboolean _glewInit_GLX_SGI_make_current_read ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetCurrentReadDrawableSGI = (PFNGLXGETCURRENTREADDRAWABLESGIPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentReadDrawableSGI")) == NULL) || r;
+ r = ((glXMakeCurrentReadSGI = (PFNGLXMAKECURRENTREADSGIPROC)glewGetProcAddress((const GLubyte*)"glXMakeCurrentReadSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGI_make_current_read */
+
+#ifdef GLX_SGI_swap_control
+
+static GLboolean _glewInit_GLX_SGI_swap_control ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)glewGetProcAddress((const GLubyte*)"glXSwapIntervalSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGI_swap_control */
+
+#ifdef GLX_SGI_video_sync
+
+static GLboolean _glewInit_GLX_SGI_video_sync ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetVideoSyncSGI = (PFNGLXGETVIDEOSYNCSGIPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoSyncSGI")) == NULL) || r;
+ r = ((glXWaitVideoSyncSGI = (PFNGLXWAITVIDEOSYNCSGIPROC)glewGetProcAddress((const GLubyte*)"glXWaitVideoSyncSGI")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SGI_video_sync */
+
+#ifdef GLX_SUN_get_transparent_index
+
+static GLboolean _glewInit_GLX_SUN_get_transparent_index ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetTransparentIndexSUN = (PFNGLXGETTRANSPARENTINDEXSUNPROC)glewGetProcAddress((const GLubyte*)"glXGetTransparentIndexSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SUN_get_transparent_index */
+
+#ifdef GLX_SUN_video_resize
+
+static GLboolean _glewInit_GLX_SUN_video_resize ()
+{
+ GLboolean r = GL_FALSE;
+
+ r = ((glXGetVideoResizeSUN = (PFNGLXGETVIDEORESIZESUNPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoResizeSUN")) == NULL) || r;
+ r = ((glXVideoResizeSUN = (PFNGLXVIDEORESIZESUNPROC)glewGetProcAddress((const GLubyte*)"glXVideoResizeSUN")) == NULL) || r;
+
+ return r;
+}
+
+#endif /* GLX_SUN_video_resize */
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glxewGetExtension (const char* name)
+{
+ const GLubyte* start;
+ const GLubyte* end;
+
+ if (glXGetCurrentDisplay == NULL) return GL_FALSE;
+ start = (const GLubyte*)glXGetClientString(glXGetCurrentDisplay(), GLX_EXTENSIONS);
+ if (0 == start) return GL_FALSE;
+ end = start + _glewStrLen(start);
+ return _glewSearchExtension(name, start, end);
+}
+
+GLenum glxewInit ()
+{
+ Display* display;
+ int major, minor;
+ const GLubyte* extStart;
+ const GLubyte* extEnd;
+ /* initialize core GLX 1.2 */
+ if (_glewInit_GLX_VERSION_1_2()) return GLEW_ERROR_GLX_VERSION_11_ONLY;
+ /* check for a display */
+ display = glXGetCurrentDisplay();
+ if (display == NULL) return GLEW_ERROR_NO_GLX_DISPLAY;
+ /* initialize flags */
+ GLXEW_VERSION_1_0 = GL_TRUE;
+ GLXEW_VERSION_1_1 = GL_TRUE;
+ GLXEW_VERSION_1_2 = GL_TRUE;
+ GLXEW_VERSION_1_3 = GL_TRUE;
+ GLXEW_VERSION_1_4 = GL_TRUE;
+ /* query GLX version */
+ glXQueryVersion(display, &major, &minor);
+ if (major == 1 && minor <= 3)
+ {
+ switch (minor)
+ {
+ case 3:
+ GLXEW_VERSION_1_4 = GL_FALSE;
+ break;
+ case 2:
+ GLXEW_VERSION_1_4 = GL_FALSE;
+ GLXEW_VERSION_1_3 = GL_FALSE;
+ break;
+ default:
+ return GLEW_ERROR_GLX_VERSION_11_ONLY;
+ break;
+ }
+ }
+ /* query GLX extension string */
+ extStart = 0;
+ if (glXGetCurrentDisplay != NULL)
+ extStart = (const GLubyte*)glXGetClientString(display, GLX_EXTENSIONS);
+ if (extStart == 0)
+ extStart = (const GLubyte *)"";
+ extEnd = extStart + _glewStrLen(extStart);
+ /* initialize extensions */
+#ifdef GLX_VERSION_1_3
+ if (glewExperimental || GLXEW_VERSION_1_3) GLXEW_VERSION_1_3 = !_glewInit_GLX_VERSION_1_3();
+#endif /* GLX_VERSION_1_3 */
+#ifdef GLX_3DFX_multisample
+ GLXEW_3DFX_multisample = _glewSearchExtension("GLX_3DFX_multisample", extStart, extEnd);
+#endif /* GLX_3DFX_multisample */
+#ifdef GLX_AMD_gpu_association
+ GLXEW_AMD_gpu_association = _glewSearchExtension("GLX_AMD_gpu_association", extStart, extEnd);
+ if (glewExperimental || GLXEW_AMD_gpu_association) GLXEW_AMD_gpu_association = !_glewInit_GLX_AMD_gpu_association();
+#endif /* GLX_AMD_gpu_association */
+#ifdef GLX_ARB_context_flush_control
+ GLXEW_ARB_context_flush_control = _glewSearchExtension("GLX_ARB_context_flush_control", extStart, extEnd);
+#endif /* GLX_ARB_context_flush_control */
+#ifdef GLX_ARB_create_context
+ GLXEW_ARB_create_context = _glewSearchExtension("GLX_ARB_create_context", extStart, extEnd);
+ if (glewExperimental || GLXEW_ARB_create_context) GLXEW_ARB_create_context = !_glewInit_GLX_ARB_create_context();
+#endif /* GLX_ARB_create_context */
+#ifdef GLX_ARB_create_context_no_error
+ GLXEW_ARB_create_context_no_error = _glewSearchExtension("GLX_ARB_create_context_no_error", extStart, extEnd);
+#endif /* GLX_ARB_create_context_no_error */
+#ifdef GLX_ARB_create_context_profile
+ GLXEW_ARB_create_context_profile = _glewSearchExtension("GLX_ARB_create_context_profile", extStart, extEnd);
+#endif /* GLX_ARB_create_context_profile */
+#ifdef GLX_ARB_create_context_robustness
+ GLXEW_ARB_create_context_robustness = _glewSearchExtension("GLX_ARB_create_context_robustness", extStart, extEnd);
+#endif /* GLX_ARB_create_context_robustness */
+#ifdef GLX_ARB_fbconfig_float
+ GLXEW_ARB_fbconfig_float = _glewSearchExtension("GLX_ARB_fbconfig_float", extStart, extEnd);
+#endif /* GLX_ARB_fbconfig_float */
+#ifdef GLX_ARB_framebuffer_sRGB
+ GLXEW_ARB_framebuffer_sRGB = _glewSearchExtension("GLX_ARB_framebuffer_sRGB", extStart, extEnd);
+#endif /* GLX_ARB_framebuffer_sRGB */
+#ifdef GLX_ARB_get_proc_address
+ GLXEW_ARB_get_proc_address = _glewSearchExtension("GLX_ARB_get_proc_address", extStart, extEnd);
+#endif /* GLX_ARB_get_proc_address */
+#ifdef GLX_ARB_multisample
+ GLXEW_ARB_multisample = _glewSearchExtension("GLX_ARB_multisample", extStart, extEnd);
+#endif /* GLX_ARB_multisample */
+#ifdef GLX_ARB_robustness_application_isolation
+ GLXEW_ARB_robustness_application_isolation = _glewSearchExtension("GLX_ARB_robustness_application_isolation", extStart, extEnd);
+#endif /* GLX_ARB_robustness_application_isolation */
+#ifdef GLX_ARB_robustness_share_group_isolation
+ GLXEW_ARB_robustness_share_group_isolation = _glewSearchExtension("GLX_ARB_robustness_share_group_isolation", extStart, extEnd);
+#endif /* GLX_ARB_robustness_share_group_isolation */
+#ifdef GLX_ARB_vertex_buffer_object
+ GLXEW_ARB_vertex_buffer_object = _glewSearchExtension("GLX_ARB_vertex_buffer_object", extStart, extEnd);
+#endif /* GLX_ARB_vertex_buffer_object */
+#ifdef GLX_ATI_pixel_format_float
+ GLXEW_ATI_pixel_format_float = _glewSearchExtension("GLX_ATI_pixel_format_float", extStart, extEnd);
+#endif /* GLX_ATI_pixel_format_float */
+#ifdef GLX_ATI_render_texture
+ GLXEW_ATI_render_texture = _glewSearchExtension("GLX_ATI_render_texture", extStart, extEnd);
+ if (glewExperimental || GLXEW_ATI_render_texture) GLXEW_ATI_render_texture = !_glewInit_GLX_ATI_render_texture();
+#endif /* GLX_ATI_render_texture */
+#ifdef GLX_EXT_buffer_age
+ GLXEW_EXT_buffer_age = _glewSearchExtension("GLX_EXT_buffer_age", extStart, extEnd);
+#endif /* GLX_EXT_buffer_age */
+#ifdef GLX_EXT_context_priority
+ GLXEW_EXT_context_priority = _glewSearchExtension("GLX_EXT_context_priority", extStart, extEnd);
+#endif /* GLX_EXT_context_priority */
+#ifdef GLX_EXT_create_context_es2_profile
+ GLXEW_EXT_create_context_es2_profile = _glewSearchExtension("GLX_EXT_create_context_es2_profile", extStart, extEnd);
+#endif /* GLX_EXT_create_context_es2_profile */
+#ifdef GLX_EXT_create_context_es_profile
+ GLXEW_EXT_create_context_es_profile = _glewSearchExtension("GLX_EXT_create_context_es_profile", extStart, extEnd);
+#endif /* GLX_EXT_create_context_es_profile */
+#ifdef GLX_EXT_fbconfig_packed_float
+ GLXEW_EXT_fbconfig_packed_float = _glewSearchExtension("GLX_EXT_fbconfig_packed_float", extStart, extEnd);
+#endif /* GLX_EXT_fbconfig_packed_float */
+#ifdef GLX_EXT_framebuffer_sRGB
+ GLXEW_EXT_framebuffer_sRGB = _glewSearchExtension("GLX_EXT_framebuffer_sRGB", extStart, extEnd);
+#endif /* GLX_EXT_framebuffer_sRGB */
+#ifdef GLX_EXT_get_drawable_type
+ GLXEW_EXT_get_drawable_type = _glewSearchExtension("GLX_EXT_get_drawable_type", extStart, extEnd);
+#endif /* GLX_EXT_get_drawable_type */
+#ifdef GLX_EXT_import_context
+ GLXEW_EXT_import_context = _glewSearchExtension("GLX_EXT_import_context", extStart, extEnd);
+ if (glewExperimental || GLXEW_EXT_import_context) GLXEW_EXT_import_context = !_glewInit_GLX_EXT_import_context();
+#endif /* GLX_EXT_import_context */
+#ifdef GLX_EXT_libglvnd
+ GLXEW_EXT_libglvnd = _glewSearchExtension("GLX_EXT_libglvnd", extStart, extEnd);
+#endif /* GLX_EXT_libglvnd */
+#ifdef GLX_EXT_no_config_context
+ GLXEW_EXT_no_config_context = _glewSearchExtension("GLX_EXT_no_config_context", extStart, extEnd);
+#endif /* GLX_EXT_no_config_context */
+#ifdef GLX_EXT_scene_marker
+ GLXEW_EXT_scene_marker = _glewSearchExtension("GLX_EXT_scene_marker", extStart, extEnd);
+#endif /* GLX_EXT_scene_marker */
+#ifdef GLX_EXT_stereo_tree
+ GLXEW_EXT_stereo_tree = _glewSearchExtension("GLX_EXT_stereo_tree", extStart, extEnd);
+#endif /* GLX_EXT_stereo_tree */
+#ifdef GLX_EXT_swap_control
+ GLXEW_EXT_swap_control = _glewSearchExtension("GLX_EXT_swap_control", extStart, extEnd);
+ if (glewExperimental || GLXEW_EXT_swap_control) GLXEW_EXT_swap_control = !_glewInit_GLX_EXT_swap_control();
+#endif /* GLX_EXT_swap_control */
+#ifdef GLX_EXT_swap_control_tear
+ GLXEW_EXT_swap_control_tear = _glewSearchExtension("GLX_EXT_swap_control_tear", extStart, extEnd);
+#endif /* GLX_EXT_swap_control_tear */
+#ifdef GLX_EXT_texture_from_pixmap
+ GLXEW_EXT_texture_from_pixmap = _glewSearchExtension("GLX_EXT_texture_from_pixmap", extStart, extEnd);
+ if (glewExperimental || GLXEW_EXT_texture_from_pixmap) GLXEW_EXT_texture_from_pixmap = !_glewInit_GLX_EXT_texture_from_pixmap();
+#endif /* GLX_EXT_texture_from_pixmap */
+#ifdef GLX_EXT_visual_info
+ GLXEW_EXT_visual_info = _glewSearchExtension("GLX_EXT_visual_info", extStart, extEnd);
+#endif /* GLX_EXT_visual_info */
+#ifdef GLX_EXT_visual_rating
+ GLXEW_EXT_visual_rating = _glewSearchExtension("GLX_EXT_visual_rating", extStart, extEnd);
+#endif /* GLX_EXT_visual_rating */
+#ifdef GLX_INTEL_swap_event
+ GLXEW_INTEL_swap_event = _glewSearchExtension("GLX_INTEL_swap_event", extStart, extEnd);
+#endif /* GLX_INTEL_swap_event */
+#ifdef GLX_MESA_agp_offset
+ GLXEW_MESA_agp_offset = _glewSearchExtension("GLX_MESA_agp_offset", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_agp_offset) GLXEW_MESA_agp_offset = !_glewInit_GLX_MESA_agp_offset();
+#endif /* GLX_MESA_agp_offset */
+#ifdef GLX_MESA_copy_sub_buffer
+ GLXEW_MESA_copy_sub_buffer = _glewSearchExtension("GLX_MESA_copy_sub_buffer", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_copy_sub_buffer) GLXEW_MESA_copy_sub_buffer = !_glewInit_GLX_MESA_copy_sub_buffer();
+#endif /* GLX_MESA_copy_sub_buffer */
+#ifdef GLX_MESA_pixmap_colormap
+ GLXEW_MESA_pixmap_colormap = _glewSearchExtension("GLX_MESA_pixmap_colormap", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_pixmap_colormap) GLXEW_MESA_pixmap_colormap = !_glewInit_GLX_MESA_pixmap_colormap();
+#endif /* GLX_MESA_pixmap_colormap */
+#ifdef GLX_MESA_query_renderer
+ GLXEW_MESA_query_renderer = _glewSearchExtension("GLX_MESA_query_renderer", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_query_renderer) GLXEW_MESA_query_renderer = !_glewInit_GLX_MESA_query_renderer();
+#endif /* GLX_MESA_query_renderer */
+#ifdef GLX_MESA_release_buffers
+ GLXEW_MESA_release_buffers = _glewSearchExtension("GLX_MESA_release_buffers", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_release_buffers) GLXEW_MESA_release_buffers = !_glewInit_GLX_MESA_release_buffers();
+#endif /* GLX_MESA_release_buffers */
+#ifdef GLX_MESA_set_3dfx_mode
+ GLXEW_MESA_set_3dfx_mode = _glewSearchExtension("GLX_MESA_set_3dfx_mode", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_set_3dfx_mode) GLXEW_MESA_set_3dfx_mode = !_glewInit_GLX_MESA_set_3dfx_mode();
+#endif /* GLX_MESA_set_3dfx_mode */
+#ifdef GLX_MESA_swap_control
+ GLXEW_MESA_swap_control = _glewSearchExtension("GLX_MESA_swap_control", extStart, extEnd);
+ if (glewExperimental || GLXEW_MESA_swap_control) GLXEW_MESA_swap_control = !_glewInit_GLX_MESA_swap_control();
+#endif /* GLX_MESA_swap_control */
+#ifdef GLX_NV_copy_buffer
+ GLXEW_NV_copy_buffer = _glewSearchExtension("GLX_NV_copy_buffer", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_copy_buffer) GLXEW_NV_copy_buffer = !_glewInit_GLX_NV_copy_buffer();
+#endif /* GLX_NV_copy_buffer */
+#ifdef GLX_NV_copy_image
+ GLXEW_NV_copy_image = _glewSearchExtension("GLX_NV_copy_image", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_copy_image) GLXEW_NV_copy_image = !_glewInit_GLX_NV_copy_image();
+#endif /* GLX_NV_copy_image */
+#ifdef GLX_NV_delay_before_swap
+ GLXEW_NV_delay_before_swap = _glewSearchExtension("GLX_NV_delay_before_swap", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_delay_before_swap) GLXEW_NV_delay_before_swap = !_glewInit_GLX_NV_delay_before_swap();
+#endif /* GLX_NV_delay_before_swap */
+#ifdef GLX_NV_float_buffer
+ GLXEW_NV_float_buffer = _glewSearchExtension("GLX_NV_float_buffer", extStart, extEnd);
+#endif /* GLX_NV_float_buffer */
+#ifdef GLX_NV_multigpu_context
+ GLXEW_NV_multigpu_context = _glewSearchExtension("GLX_NV_multigpu_context", extStart, extEnd);
+#endif /* GLX_NV_multigpu_context */
+#ifdef GLX_NV_multisample_coverage
+ GLXEW_NV_multisample_coverage = _glewSearchExtension("GLX_NV_multisample_coverage", extStart, extEnd);
+#endif /* GLX_NV_multisample_coverage */
+#ifdef GLX_NV_present_video
+ GLXEW_NV_present_video = _glewSearchExtension("GLX_NV_present_video", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_present_video) GLXEW_NV_present_video = !_glewInit_GLX_NV_present_video();
+#endif /* GLX_NV_present_video */
+#ifdef GLX_NV_robustness_video_memory_purge
+ GLXEW_NV_robustness_video_memory_purge = _glewSearchExtension("GLX_NV_robustness_video_memory_purge", extStart, extEnd);
+#endif /* GLX_NV_robustness_video_memory_purge */
+#ifdef GLX_NV_swap_group
+ GLXEW_NV_swap_group = _glewSearchExtension("GLX_NV_swap_group", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_swap_group) GLXEW_NV_swap_group = !_glewInit_GLX_NV_swap_group();
+#endif /* GLX_NV_swap_group */
+#ifdef GLX_NV_vertex_array_range
+ GLXEW_NV_vertex_array_range = _glewSearchExtension("GLX_NV_vertex_array_range", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_vertex_array_range) GLXEW_NV_vertex_array_range = !_glewInit_GLX_NV_vertex_array_range();
+#endif /* GLX_NV_vertex_array_range */
+#ifdef GLX_NV_video_capture
+ GLXEW_NV_video_capture = _glewSearchExtension("GLX_NV_video_capture", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_video_capture) GLXEW_NV_video_capture = !_glewInit_GLX_NV_video_capture();
+#endif /* GLX_NV_video_capture */
+#ifdef GLX_NV_video_out
+ GLXEW_NV_video_out = _glewSearchExtension("GLX_NV_video_out", extStart, extEnd);
+ if (glewExperimental || GLXEW_NV_video_out) GLXEW_NV_video_out = !_glewInit_GLX_NV_video_out();
+#endif /* GLX_NV_video_out */
+#ifdef GLX_OML_swap_method
+ GLXEW_OML_swap_method = _glewSearchExtension("GLX_OML_swap_method", extStart, extEnd);
+#endif /* GLX_OML_swap_method */
+#ifdef GLX_OML_sync_control
+ GLXEW_OML_sync_control = _glewSearchExtension("GLX_OML_sync_control", extStart, extEnd);
+ if (glewExperimental || GLXEW_OML_sync_control) GLXEW_OML_sync_control = !_glewInit_GLX_OML_sync_control();
+#endif /* GLX_OML_sync_control */
+#ifdef GLX_SGIS_blended_overlay
+ GLXEW_SGIS_blended_overlay = _glewSearchExtension("GLX_SGIS_blended_overlay", extStart, extEnd);
+#endif /* GLX_SGIS_blended_overlay */
+#ifdef GLX_SGIS_color_range
+ GLXEW_SGIS_color_range = _glewSearchExtension("GLX_SGIS_color_range", extStart, extEnd);
+#endif /* GLX_SGIS_color_range */
+#ifdef GLX_SGIS_multisample
+ GLXEW_SGIS_multisample = _glewSearchExtension("GLX_SGIS_multisample", extStart, extEnd);
+#endif /* GLX_SGIS_multisample */
+#ifdef GLX_SGIS_shared_multisample
+ GLXEW_SGIS_shared_multisample = _glewSearchExtension("GLX_SGIS_shared_multisample", extStart, extEnd);
+#endif /* GLX_SGIS_shared_multisample */
+#ifdef GLX_SGIX_fbconfig
+ GLXEW_SGIX_fbconfig = _glewSearchExtension("GLX_SGIX_fbconfig", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_fbconfig) GLXEW_SGIX_fbconfig = !_glewInit_GLX_SGIX_fbconfig();
+#endif /* GLX_SGIX_fbconfig */
+#ifdef GLX_SGIX_hyperpipe
+ GLXEW_SGIX_hyperpipe = _glewSearchExtension("GLX_SGIX_hyperpipe", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_hyperpipe) GLXEW_SGIX_hyperpipe = !_glewInit_GLX_SGIX_hyperpipe();
+#endif /* GLX_SGIX_hyperpipe */
+#ifdef GLX_SGIX_pbuffer
+ GLXEW_SGIX_pbuffer = _glewSearchExtension("GLX_SGIX_pbuffer", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_pbuffer) GLXEW_SGIX_pbuffer = !_glewInit_GLX_SGIX_pbuffer();
+#endif /* GLX_SGIX_pbuffer */
+#ifdef GLX_SGIX_swap_barrier
+ GLXEW_SGIX_swap_barrier = _glewSearchExtension("GLX_SGIX_swap_barrier", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_swap_barrier) GLXEW_SGIX_swap_barrier = !_glewInit_GLX_SGIX_swap_barrier();
+#endif /* GLX_SGIX_swap_barrier */
+#ifdef GLX_SGIX_swap_group
+ GLXEW_SGIX_swap_group = _glewSearchExtension("GLX_SGIX_swap_group", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_swap_group) GLXEW_SGIX_swap_group = !_glewInit_GLX_SGIX_swap_group();
+#endif /* GLX_SGIX_swap_group */
+#ifdef GLX_SGIX_video_resize
+ GLXEW_SGIX_video_resize = _glewSearchExtension("GLX_SGIX_video_resize", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGIX_video_resize) GLXEW_SGIX_video_resize = !_glewInit_GLX_SGIX_video_resize();
+#endif /* GLX_SGIX_video_resize */
+#ifdef GLX_SGIX_visual_select_group
+ GLXEW_SGIX_visual_select_group = _glewSearchExtension("GLX_SGIX_visual_select_group", extStart, extEnd);
+#endif /* GLX_SGIX_visual_select_group */
+#ifdef GLX_SGI_cushion
+ GLXEW_SGI_cushion = _glewSearchExtension("GLX_SGI_cushion", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGI_cushion) GLXEW_SGI_cushion = !_glewInit_GLX_SGI_cushion();
+#endif /* GLX_SGI_cushion */
+#ifdef GLX_SGI_make_current_read
+ GLXEW_SGI_make_current_read = _glewSearchExtension("GLX_SGI_make_current_read", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGI_make_current_read) GLXEW_SGI_make_current_read = !_glewInit_GLX_SGI_make_current_read();
+#endif /* GLX_SGI_make_current_read */
+#ifdef GLX_SGI_swap_control
+ GLXEW_SGI_swap_control = _glewSearchExtension("GLX_SGI_swap_control", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGI_swap_control) GLXEW_SGI_swap_control = !_glewInit_GLX_SGI_swap_control();
+#endif /* GLX_SGI_swap_control */
+#ifdef GLX_SGI_video_sync
+ GLXEW_SGI_video_sync = _glewSearchExtension("GLX_SGI_video_sync", extStart, extEnd);
+ if (glewExperimental || GLXEW_SGI_video_sync) GLXEW_SGI_video_sync = !_glewInit_GLX_SGI_video_sync();
+#endif /* GLX_SGI_video_sync */
+#ifdef GLX_SUN_get_transparent_index
+ GLXEW_SUN_get_transparent_index = _glewSearchExtension("GLX_SUN_get_transparent_index", extStart, extEnd);
+ if (glewExperimental || GLXEW_SUN_get_transparent_index) GLXEW_SUN_get_transparent_index = !_glewInit_GLX_SUN_get_transparent_index();
+#endif /* GLX_SUN_get_transparent_index */
+#ifdef GLX_SUN_video_resize
+ GLXEW_SUN_video_resize = _glewSearchExtension("GLX_SUN_video_resize", extStart, extEnd);
+ if (glewExperimental || GLXEW_SUN_video_resize) GLXEW_SUN_video_resize = !_glewInit_GLX_SUN_video_resize();
+#endif /* GLX_SUN_video_resize */
+
+ return GLEW_OK;
+}
+
+#endif /* !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX)) */
+
+/* ------------------------------------------------------------------------ */
+
+const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error)
+{
+ static const GLubyte* _glewErrorString[] =
+ {
+ (const GLubyte*)"No error",
+ (const GLubyte*)"Missing GL version",
+ (const GLubyte*)"GL 1.1 and up are not supported",
+ (const GLubyte*)"GLX 1.2 and up are not supported",
+ (const GLubyte*)"No GLX display",
+ (const GLubyte*)"Unknown error"
+ };
+ const size_t max_error = sizeof(_glewErrorString)/sizeof(*_glewErrorString) - 1;
+ return _glewErrorString[(size_t)error > max_error ? max_error : (size_t)error];
+}
+
+const GLubyte * GLEWAPIENTRY glewGetString (GLenum name)
+{
+ static const GLubyte* _glewString[] =
+ {
+ (const GLubyte*)NULL,
+ (const GLubyte*)"2.2.0",
+ (const GLubyte*)"2",
+ (const GLubyte*)"2",
+ (const GLubyte*)"0"
+ };
+ const size_t max_string = sizeof(_glewString)/sizeof(*_glewString) - 1;
+ return _glewString[(size_t)name > max_string ? 0 : (size_t)name];
+}
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glewExperimental = GL_FALSE;
+
+GLenum GLEWAPIENTRY glewInit (void)
+{
+ GLenum r;
+#if defined(GLEW_EGL)
+ PFNEGLGETCURRENTDISPLAYPROC getCurrentDisplay = NULL;
+#endif
+ r = glewContextInit();
+ if ( r != 0 ) return r;
+#if defined(GLEW_EGL)
+ getCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) glewGetProcAddress("eglGetCurrentDisplay");
+ return eglewInit(getCurrentDisplay());
+#elif defined(GLEW_OSMESA) || defined(__ANDROID__) || defined(__native_client__) || defined(__HAIKU__)
+ return r;
+#elif defined(_WIN32)
+ return wglewInit();
+#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) /* _UNIX */
+ return glxewInit();
+#else
+ return r;
+#endif /* _WIN32 */
+}
+
+#if defined(_WIN32) && defined(GLEW_BUILD) && defined(__GNUC__)
+/* GCC requires a DLL entry point even without any standard library included. */
+/* Types extracted from windows.h to avoid polluting the rest of the file. */
+int __stdcall DllMainCRTStartup(void* instance, unsigned reason, void* reserved)
+{
+ (void) instance;
+ (void) reason;
+ (void) reserved;
+ return 1;
+}
+#endif
+GLboolean GLEWAPIENTRY glewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if (_glewStrSame1(&pos, &len, (const GLubyte*)"GL_", 3))
+ {
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"VERSION_", 8))
+ {
+#ifdef GL_VERSION_1_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2", 3))
+ {
+ ret = GLEW_VERSION_1_2;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_1_2_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2_1", 5))
+ {
+ ret = GLEW_VERSION_1_2_1;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_1_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_3", 3))
+ {
+ ret = GLEW_VERSION_1_3;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_1_4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_4", 3))
+ {
+ ret = GLEW_VERSION_1_4;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_1_5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_5", 3))
+ {
+ ret = GLEW_VERSION_1_5;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_2_0
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"2_0", 3))
+ {
+ ret = GLEW_VERSION_2_0;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_2_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"2_1", 3))
+ {
+ ret = GLEW_VERSION_2_1;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_3_0
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_0", 3))
+ {
+ ret = GLEW_VERSION_3_0;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_3_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_1", 3))
+ {
+ ret = GLEW_VERSION_3_1;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_3_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_2", 3))
+ {
+ ret = GLEW_VERSION_3_2;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_3_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_3", 3))
+ {
+ ret = GLEW_VERSION_3_3;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_0
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_0", 3))
+ {
+ ret = GLEW_VERSION_4_0;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_1", 3))
+ {
+ ret = GLEW_VERSION_4_1;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_2", 3))
+ {
+ ret = GLEW_VERSION_4_2;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_3", 3))
+ {
+ ret = GLEW_VERSION_4_3;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_4", 3))
+ {
+ ret = GLEW_VERSION_4_4;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_5", 3))
+ {
+ ret = GLEW_VERSION_4_5;
+ continue;
+ }
+#endif
+#ifdef GL_VERSION_4_6
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_6", 3))
+ {
+ ret = GLEW_VERSION_4_6;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5))
+ {
+#ifdef GL_3DFX_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLEW_3DFX_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_3DFX_tbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tbuffer", 7))
+ {
+ ret = GLEW_3DFX_tbuffer;
+ continue;
+ }
+#endif
+#ifdef GL_3DFX_texture_compression_FXT1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_FXT1", 24))
+ {
+ ret = GLEW_3DFX_texture_compression_FXT1;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"AMD_", 4))
+ {
+#ifdef GL_AMD_blend_minmax_factor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_minmax_factor", 19))
+ {
+ ret = GLEW_AMD_blend_minmax_factor;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_compressed_3DC_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_3DC_texture", 22))
+ {
+ ret = GLEW_AMD_compressed_3DC_texture;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_compressed_ATC_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_ATC_texture", 22))
+ {
+ ret = GLEW_AMD_compressed_ATC_texture;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_conservative_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_depth", 18))
+ {
+ ret = GLEW_AMD_conservative_depth;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_debug_output
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug_output", 12))
+ {
+ ret = GLEW_AMD_debug_output;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_depth_clamp_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp_separate", 20))
+ {
+ ret = GLEW_AMD_depth_clamp_separate;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_draw_buffers_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_blend", 18))
+ {
+ ret = GLEW_AMD_draw_buffers_blend;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample_advanced", 32))
+ {
+ ret = GLEW_AMD_framebuffer_multisample_advanced;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_framebuffer_sample_positions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sample_positions", 28))
+ {
+ ret = GLEW_AMD_framebuffer_sample_positions;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gcn_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gcn_shader", 10))
+ {
+ ret = GLEW_AMD_gcn_shader;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gpu_shader_half_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_half_float", 21))
+ {
+ ret = GLEW_AMD_gpu_shader_half_float;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_half_float_fetch", 27))
+ {
+ ret = GLEW_AMD_gpu_shader_half_float_fetch;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gpu_shader_int16
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_int16", 16))
+ {
+ ret = GLEW_AMD_gpu_shader_int16;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_gpu_shader_int64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_int64", 16))
+ {
+ ret = GLEW_AMD_gpu_shader_int64;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_interleaved_elements
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"interleaved_elements", 20))
+ {
+ ret = GLEW_AMD_interleaved_elements;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_multi_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_indirect", 19))
+ {
+ ret = GLEW_AMD_multi_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_name_gen_delete
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"name_gen_delete", 15))
+ {
+ ret = GLEW_AMD_name_gen_delete;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_occlusion_query_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query_event", 21))
+ {
+ ret = GLEW_AMD_occlusion_query_event;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_performance_monitor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"performance_monitor", 19))
+ {
+ ret = GLEW_AMD_performance_monitor;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_pinned_memory
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pinned_memory", 13))
+ {
+ ret = GLEW_AMD_pinned_memory;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_program_binary_Z400
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary_Z400", 19))
+ {
+ ret = GLEW_AMD_program_binary_Z400;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_query_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_buffer_object", 19))
+ {
+ ret = GLEW_AMD_query_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_sample_positions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_positions", 16))
+ {
+ ret = GLEW_AMD_sample_positions;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_seamless_cubemap_per_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"seamless_cubemap_per_texture", 28))
+ {
+ ret = GLEW_AMD_seamless_cubemap_per_texture;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_atomic_counter_ops
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_counter_ops", 25))
+ {
+ ret = GLEW_AMD_shader_atomic_counter_ops;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_ballot
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_ballot", 13))
+ {
+ ret = GLEW_AMD_shader_ballot;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_explicit_vertex_parameter", 32))
+ {
+ ret = GLEW_AMD_shader_explicit_vertex_parameter;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_image_load_store_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_store_lod", 27))
+ {
+ ret = GLEW_AMD_shader_image_load_store_lod;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_stencil_export
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_stencil_export", 21))
+ {
+ ret = GLEW_AMD_shader_stencil_export;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_stencil_value_export
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_stencil_value_export", 27))
+ {
+ ret = GLEW_AMD_shader_stencil_value_export;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_shader_trinary_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_trinary_minmax", 21))
+ {
+ ret = GLEW_AMD_shader_trinary_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_sparse_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture", 14))
+ {
+ ret = GLEW_AMD_sparse_texture;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_stencil_operation_extended
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_operation_extended", 26))
+ {
+ ret = GLEW_AMD_stencil_operation_extended;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_texture_gather_bias_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_gather_bias_lod", 23))
+ {
+ ret = GLEW_AMD_texture_gather_bias_lod;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_texture_texture4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_texture4", 16))
+ {
+ ret = GLEW_AMD_texture_texture4;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback3_lines_triangles", 35))
+ {
+ ret = GLEW_AMD_transform_feedback3_lines_triangles;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_transform_feedback4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback4", 19))
+ {
+ ret = GLEW_AMD_transform_feedback4;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_vertex_shader_layer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_layer", 19))
+ {
+ ret = GLEW_AMD_vertex_shader_layer;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_vertex_shader_tessellator
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_tessellator", 25))
+ {
+ ret = GLEW_AMD_vertex_shader_tessellator;
+ continue;
+ }
+#endif
+#ifdef GL_AMD_vertex_shader_viewport_index
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_viewport_index", 28))
+ {
+ ret = GLEW_AMD_vertex_shader_viewport_index;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ANDROID_", 8))
+ {
+#ifdef GL_ANDROID_extension_pack_es31a
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extension_pack_es31a", 20))
+ {
+ ret = GLEW_ANDROID_extension_pack_es31a;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ANGLE_", 6))
+ {
+#ifdef GL_ANGLE_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13))
+ {
+ ret = GLEW_ANGLE_depth_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_framebuffer_blit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_blit", 16))
+ {
+ ret = GLEW_ANGLE_framebuffer_blit;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_framebuffer_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23))
+ {
+ ret = GLEW_ANGLE_framebuffer_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_instanced_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16))
+ {
+ ret = GLEW_ANGLE_instanced_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_pack_reverse_row_order
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pack_reverse_row_order", 22))
+ {
+ ret = GLEW_ANGLE_pack_reverse_row_order;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary", 14))
+ {
+ ret = GLEW_ANGLE_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt1", 24))
+ {
+ ret = GLEW_ANGLE_texture_compression_dxt1;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt3", 24))
+ {
+ ret = GLEW_ANGLE_texture_compression_dxt3;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_texture_compression_dxt5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt5", 24))
+ {
+ ret = GLEW_ANGLE_texture_compression_dxt5;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_texture_usage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_usage", 13))
+ {
+ ret = GLEW_ANGLE_texture_usage;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"timer_query", 11))
+ {
+ ret = GLEW_ANGLE_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_ANGLE_translated_shader_source
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"translated_shader_source", 24))
+ {
+ ret = GLEW_ANGLE_translated_shader_source;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"APPLE_", 6))
+ {
+#ifdef GL_APPLE_aux_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"aux_depth_stencil", 17))
+ {
+ ret = GLEW_APPLE_aux_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_client_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_storage", 14))
+ {
+ ret = GLEW_APPLE_client_storage;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_clip_distance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_distance", 13))
+ {
+ ret = GLEW_APPLE_clip_distance;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_color_buffer_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_packed_float", 25))
+ {
+ ret = GLEW_APPLE_color_buffer_packed_float;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_copy_texture_levels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_texture_levels", 19))
+ {
+ ret = GLEW_APPLE_copy_texture_levels;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_element_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"element_array", 13))
+ {
+ ret = GLEW_APPLE_element_array;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_fence
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fence", 5))
+ {
+ ret = GLEW_APPLE_fence;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_float_pixels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_pixels", 12))
+ {
+ ret = GLEW_APPLE_float_pixels;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_flush_buffer_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"flush_buffer_range", 18))
+ {
+ ret = GLEW_APPLE_flush_buffer_range;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_framebuffer_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23))
+ {
+ ret = GLEW_APPLE_framebuffer_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_object_purgeable
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"object_purgeable", 16))
+ {
+ ret = GLEW_APPLE_object_purgeable;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_pixel_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer", 12))
+ {
+ ret = GLEW_APPLE_pixel_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_rgb_422
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rgb_422", 7))
+ {
+ ret = GLEW_APPLE_rgb_422;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_row_bytes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"row_bytes", 9))
+ {
+ ret = GLEW_APPLE_row_bytes;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_specular_vector
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"specular_vector", 15))
+ {
+ ret = GLEW_APPLE_specular_vector;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync", 4))
+ {
+ ret = GLEW_APPLE_sync;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_2D_limited_npot
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_2D_limited_npot", 23))
+ {
+ ret = GLEW_APPLE_texture_2D_limited_npot;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_format_BGRA8888
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_format_BGRA8888", 23))
+ {
+ ret = GLEW_APPLE_texture_format_BGRA8888;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_max_level
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_max_level", 17))
+ {
+ ret = GLEW_APPLE_texture_max_level;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_packed_float", 20))
+ {
+ ret = GLEW_APPLE_texture_packed_float;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_texture_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_range", 13))
+ {
+ ret = GLEW_APPLE_texture_range;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_transform_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_hint", 14))
+ {
+ ret = GLEW_APPLE_transform_hint;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_APPLE_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_vertex_array_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18))
+ {
+ ret = GLEW_APPLE_vertex_array_range;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_vertex_program_evaluators
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program_evaluators", 25))
+ {
+ ret = GLEW_APPLE_vertex_program_evaluators;
+ continue;
+ }
+#endif
+#ifdef GL_APPLE_ycbcr_422
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycbcr_422", 9))
+ {
+ ret = GLEW_APPLE_ycbcr_422;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4))
+ {
+#ifdef GL_ARB_ES2_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES2_compatibility", 17))
+ {
+ ret = GLEW_ARB_ES2_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_ES3_1_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES3_1_compatibility", 19))
+ {
+ ret = GLEW_ARB_ES3_1_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_ES3_2_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES3_2_compatibility", 19))
+ {
+ ret = GLEW_ARB_ES3_2_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_ES3_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES3_compatibility", 17))
+ {
+ ret = GLEW_ARB_ES3_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_arrays_of_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"arrays_of_arrays", 16))
+ {
+ ret = GLEW_ARB_arrays_of_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_base_instance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"base_instance", 13))
+ {
+ ret = GLEW_ARB_base_instance;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_bindless_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_texture", 16))
+ {
+ ret = GLEW_ARB_bindless_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_blend_func_extended
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_extended", 19))
+ {
+ ret = GLEW_ARB_blend_func_extended;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_buffer_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_storage", 14))
+ {
+ ret = GLEW_ARB_buffer_storage;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_cl_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cl_event", 8))
+ {
+ ret = GLEW_ARB_cl_event;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_clear_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clear_buffer_object", 19))
+ {
+ ret = GLEW_ARB_clear_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_clear_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clear_texture", 13))
+ {
+ ret = GLEW_ARB_clear_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_clip_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_control", 12))
+ {
+ ret = GLEW_ARB_clip_control;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_color_buffer_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_float", 18))
+ {
+ ret = GLEW_ARB_color_buffer_float;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compatibility", 13))
+ {
+ ret = GLEW_ARB_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_compressed_texture_pixel_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_texture_pixel_storage", 32))
+ {
+ ret = GLEW_ARB_compressed_texture_pixel_storage;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_compute_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compute_shader", 14))
+ {
+ ret = GLEW_ARB_compute_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_compute_variable_group_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compute_variable_group_size", 27))
+ {
+ ret = GLEW_ARB_compute_variable_group_size;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_conditional_render_inverted
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conditional_render_inverted", 27))
+ {
+ ret = GLEW_ARB_conditional_render_inverted;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_conservative_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_depth", 18))
+ {
+ ret = GLEW_ARB_conservative_depth;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_copy_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_buffer", 11))
+ {
+ ret = GLEW_ARB_copy_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLEW_ARB_copy_image;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_cull_distance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cull_distance", 13))
+ {
+ ret = GLEW_ARB_cull_distance;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_debug_output
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug_output", 12))
+ {
+ ret = GLEW_ARB_debug_output;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_depth_buffer_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_buffer_float", 18))
+ {
+ ret = GLEW_ARB_depth_buffer_float;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_depth_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp", 11))
+ {
+ ret = GLEW_ARB_depth_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13))
+ {
+ ret = GLEW_ARB_depth_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_derivative_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"derivative_control", 18))
+ {
+ ret = GLEW_ARB_derivative_control;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_direct_state_access
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"direct_state_access", 19))
+ {
+ ret = GLEW_ARB_direct_state_access;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12))
+ {
+ ret = GLEW_ARB_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_buffers_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_blend", 18))
+ {
+ ret = GLEW_ARB_draw_buffers_blend;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_elements_base_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_elements_base_vertex", 25))
+ {
+ ret = GLEW_ARB_draw_elements_base_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_indirect", 13))
+ {
+ ret = GLEW_ARB_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_draw_instanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14))
+ {
+ ret = GLEW_ARB_draw_instanced;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_enhanced_layouts
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"enhanced_layouts", 16))
+ {
+ ret = GLEW_ARB_enhanced_layouts;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_explicit_attrib_location
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_attrib_location", 24))
+ {
+ ret = GLEW_ARB_explicit_attrib_location;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_explicit_uniform_location
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_uniform_location", 25))
+ {
+ ret = GLEW_ARB_explicit_uniform_location;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_coord_conventions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_coord_conventions", 26))
+ {
+ ret = GLEW_ARB_fragment_coord_conventions;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_layer_viewport
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_layer_viewport", 23))
+ {
+ ret = GLEW_ARB_fragment_layer_viewport;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_program
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program", 16))
+ {
+ ret = GLEW_ARB_fragment_program;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_program_shadow
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program_shadow", 23))
+ {
+ ret = GLEW_ARB_fragment_program_shadow;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader", 15))
+ {
+ ret = GLEW_ARB_fragment_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_fragment_shader_interlock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader_interlock", 25))
+ {
+ ret = GLEW_ARB_fragment_shader_interlock;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_framebuffer_no_attachments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_no_attachments", 26))
+ {
+ ret = GLEW_ARB_framebuffer_no_attachments;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_framebuffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_object", 18))
+ {
+ ret = GLEW_ARB_framebuffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = GLEW_ARB_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_geometry_shader4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16))
+ {
+ ret = GLEW_ARB_geometry_shader4;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_get_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_program_binary", 18))
+ {
+ ret = GLEW_ARB_get_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_get_texture_sub_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_texture_sub_image", 21))
+ {
+ ret = GLEW_ARB_get_texture_sub_image;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_gl_spirv
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_spirv", 8))
+ {
+ ret = GLEW_ARB_gl_spirv;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_gpu_shader5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+ {
+ ret = GLEW_ARB_gpu_shader5;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_gpu_shader_fp64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_fp64", 15))
+ {
+ ret = GLEW_ARB_gpu_shader_fp64;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_gpu_shader_int64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_int64", 16))
+ {
+ ret = GLEW_ARB_gpu_shader_int64;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_half_float_pixel
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float_pixel", 16))
+ {
+ ret = GLEW_ARB_half_float_pixel;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_half_float_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float_vertex", 17))
+ {
+ ret = GLEW_ARB_half_float_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_imaging
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"imaging", 7))
+ {
+ ret = GLEW_ARB_imaging;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_indirect_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"indirect_parameters", 19))
+ {
+ ret = GLEW_ARB_indirect_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_instanced_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16))
+ {
+ ret = GLEW_ARB_instanced_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_internalformat_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"internalformat_query", 20))
+ {
+ ret = GLEW_ARB_internalformat_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_internalformat_query2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"internalformat_query2", 21))
+ {
+ ret = GLEW_ARB_internalformat_query2;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_invalidate_subdata
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"invalidate_subdata", 18))
+ {
+ ret = GLEW_ARB_invalidate_subdata;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_map_buffer_alignment
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_buffer_alignment", 20))
+ {
+ ret = GLEW_ARB_map_buffer_alignment;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_map_buffer_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_buffer_range", 16))
+ {
+ ret = GLEW_ARB_map_buffer_range;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_matrix_palette
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"matrix_palette", 14))
+ {
+ ret = GLEW_ARB_matrix_palette;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_multi_bind
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_bind", 10))
+ {
+ ret = GLEW_ARB_multi_bind;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_multi_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_indirect", 19))
+ {
+ ret = GLEW_ARB_multi_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLEW_ARB_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_multitexture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multitexture", 12))
+ {
+ ret = GLEW_ARB_multitexture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_occlusion_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query", 15))
+ {
+ ret = GLEW_ARB_occlusion_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_occlusion_query2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query2", 16))
+ {
+ ret = GLEW_ARB_occlusion_query2;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_parallel_shader_compile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parallel_shader_compile", 23))
+ {
+ ret = GLEW_ARB_parallel_shader_compile;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_pipeline_statistics_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pipeline_statistics_query", 25))
+ {
+ ret = GLEW_ARB_pipeline_statistics_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_pixel_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19))
+ {
+ ret = GLEW_ARB_pixel_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_point_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_parameters", 16))
+ {
+ ret = GLEW_ARB_point_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_point_sprite
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprite", 12))
+ {
+ ret = GLEW_ARB_point_sprite;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_polygon_offset_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_offset_clamp", 20))
+ {
+ ret = GLEW_ARB_polygon_offset_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_post_depth_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"post_depth_coverage", 19))
+ {
+ ret = GLEW_ARB_post_depth_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_program_interface_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_interface_query", 23))
+ {
+ ret = GLEW_ARB_program_interface_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_provoking_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"provoking_vertex", 16))
+ {
+ ret = GLEW_ARB_provoking_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_query_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_buffer_object", 19))
+ {
+ ret = GLEW_ARB_query_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_robust_buffer_access_behavior
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robust_buffer_access_behavior", 29))
+ {
+ ret = GLEW_ARB_robust_buffer_access_behavior;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness", 10))
+ {
+ ret = GLEW_ARB_robustness;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_robustness_application_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_application_isolation", 32))
+ {
+ ret = GLEW_ARB_robustness_application_isolation;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_robustness_share_group_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_share_group_isolation", 32))
+ {
+ ret = GLEW_ARB_robustness_share_group_isolation;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sample_locations
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_locations", 16))
+ {
+ ret = GLEW_ARB_sample_locations;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sample_shading
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_shading", 14))
+ {
+ ret = GLEW_ARB_sample_shading;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sampler_objects
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sampler_objects", 15))
+ {
+ ret = GLEW_ARB_sampler_objects;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_seamless_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"seamless_cube_map", 17))
+ {
+ ret = GLEW_ARB_seamless_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_seamless_cubemap_per_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"seamless_cubemap_per_texture", 28))
+ {
+ ret = GLEW_ARB_seamless_cubemap_per_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_separate_shader_objects
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_shader_objects", 23))
+ {
+ ret = GLEW_ARB_separate_shader_objects;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_atomic_counter_ops
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_counter_ops", 25))
+ {
+ ret = GLEW_ARB_shader_atomic_counter_ops;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_atomic_counters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_counters", 22))
+ {
+ ret = GLEW_ARB_shader_atomic_counters;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_ballot
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_ballot", 13))
+ {
+ ret = GLEW_ARB_shader_ballot;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_bit_encoding
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_bit_encoding", 19))
+ {
+ ret = GLEW_ARB_shader_bit_encoding;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_clock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_clock", 12))
+ {
+ ret = GLEW_ARB_shader_clock;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_draw_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_draw_parameters", 22))
+ {
+ ret = GLEW_ARB_shader_draw_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_group_vote
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_group_vote", 17))
+ {
+ ret = GLEW_ARB_shader_group_vote;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_image_load_store
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_store", 23))
+ {
+ ret = GLEW_ARB_shader_image_load_store;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_image_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_size", 17))
+ {
+ ret = GLEW_ARB_shader_image_size;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_objects
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_objects", 14))
+ {
+ ret = GLEW_ARB_shader_objects;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_precision
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_precision", 16))
+ {
+ ret = GLEW_ARB_shader_precision;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_stencil_export
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_stencil_export", 21))
+ {
+ ret = GLEW_ARB_shader_stencil_export;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_storage_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_storage_buffer_object", 28))
+ {
+ ret = GLEW_ARB_shader_storage_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_subroutine
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_subroutine", 17))
+ {
+ ret = GLEW_ARB_shader_subroutine;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_texture_image_samples
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_image_samples", 28))
+ {
+ ret = GLEW_ARB_shader_texture_image_samples;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_lod", 18))
+ {
+ ret = GLEW_ARB_shader_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shader_viewport_layer_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_viewport_layer_array", 27))
+ {
+ ret = GLEW_ARB_shader_viewport_layer_array;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shading_language_100
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_100", 20))
+ {
+ ret = GLEW_ARB_shading_language_100;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shading_language_420pack
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_420pack", 24))
+ {
+ ret = GLEW_ARB_shading_language_420pack;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shading_language_include
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_include", 24))
+ {
+ ret = GLEW_ARB_shading_language_include;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shading_language_packing
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_packing", 24))
+ {
+ ret = GLEW_ARB_shading_language_packing;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shadow
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow", 6))
+ {
+ ret = GLEW_ARB_shadow;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_shadow_ambient
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_ambient", 14))
+ {
+ ret = GLEW_ARB_shadow_ambient;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sparse_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_buffer", 13))
+ {
+ ret = GLEW_ARB_sparse_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sparse_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture", 14))
+ {
+ ret = GLEW_ARB_sparse_texture;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sparse_texture2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture2", 15))
+ {
+ ret = GLEW_ARB_sparse_texture2;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sparse_texture_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture_clamp", 20))
+ {
+ ret = GLEW_ARB_sparse_texture_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_spirv_extensions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"spirv_extensions", 16))
+ {
+ ret = GLEW_ARB_spirv_extensions;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_stencil_texturing
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_texturing", 17))
+ {
+ ret = GLEW_ARB_stencil_texturing;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync", 4))
+ {
+ ret = GLEW_ARB_sync;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_tessellation_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_shader", 19))
+ {
+ ret = GLEW_ARB_tessellation_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_barrier
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_barrier", 15))
+ {
+ ret = GLEW_ARB_texture_barrier;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_ARB_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object", 21))
+ {
+ ret = GLEW_ARB_texture_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_buffer_object_rgb32
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object_rgb32", 27))
+ {
+ ret = GLEW_ARB_texture_buffer_object_rgb32;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_buffer_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_range", 20))
+ {
+ ret = GLEW_ARB_texture_buffer_range;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression", 19))
+ {
+ ret = GLEW_ARB_texture_compression;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_compression_bptc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_bptc", 24))
+ {
+ ret = GLEW_ARB_texture_compression_bptc;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_compression_rgtc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_rgtc", 24))
+ {
+ ret = GLEW_ARB_texture_compression_rgtc;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map", 16))
+ {
+ ret = GLEW_ARB_texture_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_cube_map_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map_array", 22))
+ {
+ ret = GLEW_ARB_texture_cube_map_array;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_env_add
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_add", 15))
+ {
+ ret = GLEW_ARB_texture_env_add;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_env_combine
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine", 19))
+ {
+ ret = GLEW_ARB_texture_env_combine;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_env_crossbar
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_crossbar", 20))
+ {
+ ret = GLEW_ARB_texture_env_crossbar;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_env_dot3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_dot3", 16))
+ {
+ ret = GLEW_ARB_texture_env_dot3;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_filter_anisotropic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_anisotropic", 26))
+ {
+ ret = GLEW_ARB_texture_filter_anisotropic;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_filter_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_minmax", 21))
+ {
+ ret = GLEW_ARB_texture_filter_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_float", 13))
+ {
+ ret = GLEW_ARB_texture_float;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_gather
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_gather", 14))
+ {
+ ret = GLEW_ARB_texture_gather;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_clamp_to_edge", 28))
+ {
+ ret = GLEW_ARB_texture_mirror_clamp_to_edge;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_mirrored_repeat
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirrored_repeat", 23))
+ {
+ ret = GLEW_ARB_texture_mirrored_repeat;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_multisample", 19))
+ {
+ ret = GLEW_ARB_texture_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_non_power_of_two
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_non_power_of_two", 24))
+ {
+ ret = GLEW_ARB_texture_non_power_of_two;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_query_levels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_query_levels", 20))
+ {
+ ret = GLEW_ARB_texture_query_levels;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_query_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_query_lod", 17))
+ {
+ ret = GLEW_ARB_texture_query_lod;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17))
+ {
+ ret = GLEW_ARB_texture_rectangle;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_rg
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rg", 10))
+ {
+ ret = GLEW_ARB_texture_rg;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_rgb10_a2ui
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rgb10_a2ui", 18))
+ {
+ ret = GLEW_ARB_texture_rgb10_a2ui;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_stencil8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_stencil8", 16))
+ {
+ ret = GLEW_ARB_texture_stencil8;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage", 15))
+ {
+ ret = GLEW_ARB_texture_storage;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_storage_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage_multisample", 27))
+ {
+ ret = GLEW_ARB_texture_storage_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_swizzle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_swizzle", 15))
+ {
+ ret = GLEW_ARB_texture_swizzle;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_texture_view
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_view", 12))
+ {
+ ret = GLEW_ARB_texture_view;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"timer_query", 11))
+ {
+ ret = GLEW_ARB_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transform_feedback2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback2", 19))
+ {
+ ret = GLEW_ARB_transform_feedback2;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transform_feedback3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback3", 19))
+ {
+ ret = GLEW_ARB_transform_feedback3;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transform_feedback_instanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback_instanced", 28))
+ {
+ ret = GLEW_ARB_transform_feedback_instanced;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transform_feedback_overflow_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback_overflow_query", 33))
+ {
+ ret = GLEW_ARB_transform_feedback_overflow_query;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_transpose_matrix
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transpose_matrix", 16))
+ {
+ ret = GLEW_ARB_transpose_matrix;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_uniform_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"uniform_buffer_object", 21))
+ {
+ ret = GLEW_ARB_uniform_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_array_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_bgra", 17))
+ {
+ ret = GLEW_ARB_vertex_array_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_ARB_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_attrib_64bit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_64bit", 19))
+ {
+ ret = GLEW_ARB_vertex_attrib_64bit;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_attrib_binding
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_binding", 21))
+ {
+ ret = GLEW_ARB_vertex_attrib_binding;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_blend", 12))
+ {
+ ret = GLEW_ARB_vertex_blend;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_object", 20))
+ {
+ ret = GLEW_ARB_vertex_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_program
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program", 14))
+ {
+ ret = GLEW_ARB_vertex_program;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader", 13))
+ {
+ ret = GLEW_ARB_vertex_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_type_10f_11f_11f_rev", 27))
+ {
+ ret = GLEW_ARB_vertex_type_10f_11f_11f_rev;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_type_2_10_10_10_rev", 26))
+ {
+ ret = GLEW_ARB_vertex_type_2_10_10_10_rev;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_viewport_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"viewport_array", 14))
+ {
+ ret = GLEW_ARB_viewport_array;
+ continue;
+ }
+#endif
+#ifdef GL_ARB_window_pos
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_pos", 10))
+ {
+ ret = GLEW_ARB_window_pos;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARM_", 4))
+ {
+#ifdef GL_ARM_mali_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mali_program_binary", 19))
+ {
+ ret = GLEW_ARM_mali_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_mali_shader_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mali_shader_binary", 18))
+ {
+ ret = GLEW_ARM_mali_shader_binary;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_rgba8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rgba8", 5))
+ {
+ ret = GLEW_ARM_rgba8;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch", 24))
+ {
+ ret = GLEW_ARM_shader_framebuffer_fetch;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch_depth_stencil", 38))
+ {
+ ret = GLEW_ARM_shader_framebuffer_fetch_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_ARM_texture_unnormalized_coordinates
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_unnormalized_coordinates", 32))
+ {
+ ret = GLEW_ARM_texture_unnormalized_coordinates;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATIX_", 5))
+ {
+#ifdef GL_ATIX_point_sprites
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprites", 13))
+ {
+ ret = GLEW_ATIX_point_sprites;
+ continue;
+ }
+#endif
+#ifdef GL_ATIX_texture_env_combine3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine3", 20))
+ {
+ ret = GLEW_ATIX_texture_env_combine3;
+ continue;
+ }
+#endif
+#ifdef GL_ATIX_texture_env_route
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_route", 17))
+ {
+ ret = GLEW_ATIX_texture_env_route;
+ continue;
+ }
+#endif
+#ifdef GL_ATIX_vertex_shader_output_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_output_point_size", 31))
+ {
+ ret = GLEW_ATIX_vertex_shader_output_point_size;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4))
+ {
+#ifdef GL_ATI_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12))
+ {
+ ret = GLEW_ATI_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_element_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"element_array", 13))
+ {
+ ret = GLEW_ATI_element_array;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_envmap_bumpmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"envmap_bumpmap", 14))
+ {
+ ret = GLEW_ATI_envmap_bumpmap;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_fragment_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader", 15))
+ {
+ ret = GLEW_ATI_fragment_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_map_object_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_object_buffer", 17))
+ {
+ ret = GLEW_ATI_map_object_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_meminfo
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"meminfo", 7))
+ {
+ ret = GLEW_ATI_meminfo;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_pn_triangles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pn_triangles", 12))
+ {
+ ret = GLEW_ATI_pn_triangles;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_separate_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_stencil", 16))
+ {
+ ret = GLEW_ATI_separate_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_shader_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_lod", 18))
+ {
+ ret = GLEW_ATI_shader_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_text_fragment_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"text_fragment_shader", 20))
+ {
+ ret = GLEW_ATI_text_fragment_shader;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_texture_compression_3dc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_3dc", 23))
+ {
+ ret = GLEW_ATI_texture_compression_3dc;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_texture_env_combine3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine3", 20))
+ {
+ ret = GLEW_ATI_texture_env_combine3;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_texture_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_float", 13))
+ {
+ ret = GLEW_ATI_texture_float;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_texture_mirror_once
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_once", 19))
+ {
+ ret = GLEW_ATI_texture_mirror_once;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_ATI_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_vertex_attrib_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_array_object", 26))
+ {
+ ret = GLEW_ATI_vertex_attrib_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_ATI_vertex_streams
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_streams", 14))
+ {
+ ret = GLEW_ATI_vertex_streams;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"DMP_", 4))
+ {
+#ifdef GL_DMP_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary", 14))
+ {
+ ret = GLEW_DMP_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_DMP_shader_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_binary", 13))
+ {
+ ret = GLEW_DMP_shader_binary;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4))
+ {
+#ifdef GL_EXT_422_pixels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"422_pixels", 10))
+ {
+ ret = GLEW_EXT_422_pixels;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_Cg_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"Cg_shader", 9))
+ {
+ ret = GLEW_EXT_Cg_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_image_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_array", 15))
+ {
+ ret = GLEW_EXT_EGL_image_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_external_wrap_modes", 29))
+ {
+ ret = GLEW_EXT_EGL_image_external_wrap_modes;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_image_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_storage", 17))
+ {
+ ret = GLEW_EXT_EGL_image_storage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_image_storage_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_storage_compression", 29))
+ {
+ ret = GLEW_EXT_EGL_image_storage_compression;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_EGL_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_sync", 8))
+ {
+ ret = GLEW_EXT_EGL_sync;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_YUV_target
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"YUV_target", 10))
+ {
+ ret = GLEW_EXT_YUV_target;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_abgr
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"abgr", 4))
+ {
+ ret = GLEW_EXT_abgr;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_base_instance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"base_instance", 13))
+ {
+ ret = GLEW_EXT_base_instance;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bgra", 4))
+ {
+ ret = GLEW_EXT_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_bindable_uniform
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindable_uniform", 16))
+ {
+ ret = GLEW_EXT_bindable_uniform;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_color", 11))
+ {
+ ret = GLEW_EXT_blend_color;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_equation_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_separate", 23))
+ {
+ ret = GLEW_EXT_blend_equation_separate;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_func_extended
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_extended", 19))
+ {
+ ret = GLEW_EXT_blend_func_extended;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_func_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_separate", 19))
+ {
+ ret = GLEW_EXT_blend_func_separate;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_logic_op
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_logic_op", 14))
+ {
+ ret = GLEW_EXT_blend_logic_op;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_minmax", 12))
+ {
+ ret = GLEW_EXT_blend_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_blend_subtract
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_subtract", 14))
+ {
+ ret = GLEW_EXT_blend_subtract;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_buffer_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_storage", 14))
+ {
+ ret = GLEW_EXT_buffer_storage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_clear_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clear_texture", 13))
+ {
+ ret = GLEW_EXT_clear_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_clip_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_control", 12))
+ {
+ ret = GLEW_EXT_clip_control;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_clip_cull_distance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_cull_distance", 18))
+ {
+ ret = GLEW_EXT_clip_cull_distance;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_clip_volume_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_volume_hint", 16))
+ {
+ ret = GLEW_EXT_clip_volume_hint;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_cmyka
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cmyka", 5))
+ {
+ ret = GLEW_EXT_cmyka;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_color_buffer_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_float", 18))
+ {
+ ret = GLEW_EXT_color_buffer_float;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_color_buffer_half_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_half_float", 23))
+ {
+ ret = GLEW_EXT_color_buffer_half_float;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_color_subtable
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_subtable", 14))
+ {
+ ret = GLEW_EXT_color_subtable;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_compiled_vertex_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compiled_vertex_array", 21))
+ {
+ ret = GLEW_EXT_compiled_vertex_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_ETC1_RGB8_sub_texture", 32))
+ {
+ ret = GLEW_EXT_compressed_ETC1_RGB8_sub_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_conservative_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_depth", 18))
+ {
+ ret = GLEW_EXT_conservative_depth;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_convolution
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution", 11))
+ {
+ ret = GLEW_EXT_convolution;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_coordinate_frame
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"coordinate_frame", 16))
+ {
+ ret = GLEW_EXT_coordinate_frame;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLEW_EXT_copy_image;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_copy_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_texture", 12))
+ {
+ ret = GLEW_EXT_copy_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_cull_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cull_vertex", 11))
+ {
+ ret = GLEW_EXT_cull_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_debug_label
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug_label", 11))
+ {
+ ret = GLEW_EXT_debug_label;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_debug_marker
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug_marker", 12))
+ {
+ ret = GLEW_EXT_debug_marker;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_depth_bounds_test
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_bounds_test", 17))
+ {
+ ret = GLEW_EXT_depth_bounds_test;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_depth_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp", 11))
+ {
+ ret = GLEW_EXT_depth_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_direct_state_access
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"direct_state_access", 19))
+ {
+ ret = GLEW_EXT_direct_state_access;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_discard_framebuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"discard_framebuffer", 19))
+ {
+ ret = GLEW_EXT_discard_framebuffer;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_disjoint_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"disjoint_timer_query", 20))
+ {
+ ret = GLEW_EXT_disjoint_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12))
+ {
+ ret = GLEW_EXT_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_buffers2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers2", 13))
+ {
+ ret = GLEW_EXT_draw_buffers2;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_buffers_indexed
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_indexed", 20))
+ {
+ ret = GLEW_EXT_draw_buffers_indexed;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_elements_base_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_elements_base_vertex", 25))
+ {
+ ret = GLEW_EXT_draw_elements_base_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_instanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14))
+ {
+ ret = GLEW_EXT_draw_instanced;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_range_elements
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_range_elements", 19))
+ {
+ ret = GLEW_EXT_draw_range_elements;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_draw_transform_feedback
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_transform_feedback", 23))
+ {
+ ret = GLEW_EXT_draw_transform_feedback;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_external_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"external_buffer", 15))
+ {
+ ret = GLEW_EXT_external_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_float_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_blend", 11))
+ {
+ ret = GLEW_EXT_float_blend;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_fog_coord
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_coord", 9))
+ {
+ ret = GLEW_EXT_fog_coord;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_frag_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"frag_depth", 10))
+ {
+ ret = GLEW_EXT_frag_depth;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_fragment_lighting
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_lighting", 17))
+ {
+ ret = GLEW_EXT_fragment_lighting;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_blit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_blit", 16))
+ {
+ ret = GLEW_EXT_framebuffer_blit;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23))
+ {
+ ret = GLEW_EXT_framebuffer_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample_blit_scaled", 35))
+ {
+ ret = GLEW_EXT_framebuffer_multisample_blit_scaled;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_object", 18))
+ {
+ ret = GLEW_EXT_framebuffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = GLEW_EXT_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_geometry_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_point_size", 19))
+ {
+ ret = GLEW_EXT_geometry_point_size;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_geometry_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader", 15))
+ {
+ ret = GLEW_EXT_geometry_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_geometry_shader4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16))
+ {
+ ret = GLEW_EXT_geometry_shader4;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_gpu_program_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program_parameters", 22))
+ {
+ ret = GLEW_EXT_gpu_program_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_gpu_shader4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader4", 11))
+ {
+ ret = GLEW_EXT_gpu_shader4;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_gpu_shader5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+ {
+ ret = GLEW_EXT_gpu_shader5;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_histogram
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"histogram", 9))
+ {
+ ret = GLEW_EXT_histogram;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_index_array_formats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_array_formats", 19))
+ {
+ ret = GLEW_EXT_index_array_formats;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_index_func
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_func", 10))
+ {
+ ret = GLEW_EXT_index_func;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_index_material
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_material", 14))
+ {
+ ret = GLEW_EXT_index_material;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_index_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_texture", 13))
+ {
+ ret = GLEW_EXT_index_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_instanced_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16))
+ {
+ ret = GLEW_EXT_instanced_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_light_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"light_texture", 13))
+ {
+ ret = GLEW_EXT_light_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_map_buffer_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_buffer_range", 16))
+ {
+ ret = GLEW_EXT_map_buffer_range;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_memory_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_object", 13))
+ {
+ ret = GLEW_EXT_memory_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_memory_object_fd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_object_fd", 16))
+ {
+ ret = GLEW_EXT_memory_object_fd;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_memory_object_win32
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_object_win32", 19))
+ {
+ ret = GLEW_EXT_memory_object_win32;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_misc_attribute
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"misc_attribute", 14))
+ {
+ ret = GLEW_EXT_misc_attribute;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multi_draw_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_arrays", 17))
+ {
+ ret = GLEW_EXT_multi_draw_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multi_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_indirect", 19))
+ {
+ ret = GLEW_EXT_multi_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiple_textures
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiple_textures", 17))
+ {
+ ret = GLEW_EXT_multiple_textures;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLEW_EXT_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multisample_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_compatibility", 25))
+ {
+ ret = GLEW_EXT_multisample_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisampled_render_to_texture", 30))
+ {
+ ret = GLEW_EXT_multisampled_render_to_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multisampled_render_to_texture2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisampled_render_to_texture2", 31))
+ {
+ ret = GLEW_EXT_multisampled_render_to_texture2;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiview_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_draw_buffers", 22))
+ {
+ ret = GLEW_EXT_multiview_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_tessellation_geometry_shader", 38))
+ {
+ ret = GLEW_EXT_multiview_tessellation_geometry_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiview_texture_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_texture_multisample", 29))
+ {
+ ret = GLEW_EXT_multiview_texture_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_multiview_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_timer_query", 21))
+ {
+ ret = GLEW_EXT_multiview_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_occlusion_query_boolean
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query_boolean", 23))
+ {
+ ret = GLEW_EXT_occlusion_query_boolean;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_packed_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_depth_stencil", 20))
+ {
+ ret = GLEW_EXT_packed_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_float", 12))
+ {
+ ret = GLEW_EXT_packed_float;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_packed_pixels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_pixels", 13))
+ {
+ ret = GLEW_EXT_packed_pixels;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_paletted_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"paletted_texture", 16))
+ {
+ ret = GLEW_EXT_paletted_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_pixel_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19))
+ {
+ ret = GLEW_EXT_pixel_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_pixel_transform
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_transform", 15))
+ {
+ ret = GLEW_EXT_pixel_transform;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_pixel_transform_color_table
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_transform_color_table", 27))
+ {
+ ret = GLEW_EXT_pixel_transform_color_table;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_point_parameters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_parameters", 16))
+ {
+ ret = GLEW_EXT_point_parameters;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_polygon_offset
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_offset", 14))
+ {
+ ret = GLEW_EXT_polygon_offset;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_polygon_offset_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_offset_clamp", 20))
+ {
+ ret = GLEW_EXT_polygon_offset_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_post_depth_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"post_depth_coverage", 19))
+ {
+ ret = GLEW_EXT_post_depth_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_primitive_bounding_box
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"primitive_bounding_box", 22))
+ {
+ ret = GLEW_EXT_primitive_bounding_box;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_protected_textures
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"protected_textures", 18))
+ {
+ ret = GLEW_EXT_protected_textures;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_provoking_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"provoking_vertex", 16))
+ {
+ ret = GLEW_EXT_provoking_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_pvrtc_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pvrtc_sRGB", 10))
+ {
+ ret = GLEW_EXT_pvrtc_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_raster_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"raster_multisample", 18))
+ {
+ ret = GLEW_EXT_raster_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_read_format_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_format_bgra", 16))
+ {
+ ret = GLEW_EXT_read_format_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_render_snorm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_snorm", 12))
+ {
+ ret = GLEW_EXT_render_snorm;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_rescale_normal
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rescale_normal", 14))
+ {
+ ret = GLEW_EXT_rescale_normal;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness", 10))
+ {
+ ret = GLEW_EXT_robustness;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sRGB", 4))
+ {
+ ret = GLEW_EXT_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_sRGB_write_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sRGB_write_control", 18))
+ {
+ ret = GLEW_EXT_sRGB_write_control;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_scene_marker
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scene_marker", 12))
+ {
+ ret = GLEW_EXT_scene_marker;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_secondary_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"secondary_color", 15))
+ {
+ ret = GLEW_EXT_secondary_color;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_semaphore
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"semaphore", 9))
+ {
+ ret = GLEW_EXT_semaphore;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_semaphore_fd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"semaphore_fd", 12))
+ {
+ ret = GLEW_EXT_semaphore_fd;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_semaphore_win32
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"semaphore_win32", 15))
+ {
+ ret = GLEW_EXT_semaphore_win32;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_separate_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_depth_stencil", 22))
+ {
+ ret = GLEW_EXT_separate_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_separate_shader_objects
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_shader_objects", 23))
+ {
+ ret = GLEW_EXT_separate_shader_objects;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_separate_specular_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_specular_color", 23))
+ {
+ ret = GLEW_EXT_separate_specular_color;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch", 24))
+ {
+ ret = GLEW_EXT_shader_framebuffer_fetch;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch_non_coherent", 37))
+ {
+ ret = GLEW_EXT_shader_framebuffer_fetch_non_coherent;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_group_vote
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_group_vote", 17))
+ {
+ ret = GLEW_EXT_shader_group_vote;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_image_load_formatted
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_formatted", 27))
+ {
+ ret = GLEW_EXT_shader_image_load_formatted;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_image_load_store
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_store", 23))
+ {
+ ret = GLEW_EXT_shader_image_load_store;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_implicit_conversions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_implicit_conversions", 27))
+ {
+ ret = GLEW_EXT_shader_implicit_conversions;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_integer_mix
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_integer_mix", 18))
+ {
+ ret = GLEW_EXT_shader_integer_mix;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_io_blocks
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_io_blocks", 16))
+ {
+ ret = GLEW_EXT_shader_io_blocks;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_non_constant_global_initializers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_non_constant_global_initializers", 39))
+ {
+ ret = GLEW_EXT_shader_non_constant_global_initializers;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_pixel_local_storage", 26))
+ {
+ ret = GLEW_EXT_shader_pixel_local_storage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_pixel_local_storage2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_pixel_local_storage2", 27))
+ {
+ ret = GLEW_EXT_shader_pixel_local_storage2;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_samples_identical
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_samples_identical", 24))
+ {
+ ret = GLEW_EXT_shader_samples_identical;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shader_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_lod", 18))
+ {
+ ret = GLEW_EXT_shader_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shadow_funcs
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_funcs", 12))
+ {
+ ret = GLEW_EXT_shadow_funcs;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shadow_samplers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_samplers", 15))
+ {
+ ret = GLEW_EXT_shadow_samplers;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_shared_texture_palette
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shared_texture_palette", 22))
+ {
+ ret = GLEW_EXT_shared_texture_palette;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_sparse_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture", 14))
+ {
+ ret = GLEW_EXT_sparse_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_sparse_texture2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sparse_texture2", 15))
+ {
+ ret = GLEW_EXT_sparse_texture2;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_static_vertex_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"static_vertex_array", 19))
+ {
+ ret = GLEW_EXT_static_vertex_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_stencil_clear_tag
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_clear_tag", 17))
+ {
+ ret = GLEW_EXT_stencil_clear_tag;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_stencil_two_side
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_two_side", 16))
+ {
+ ret = GLEW_EXT_stencil_two_side;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_stencil_wrap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_wrap", 12))
+ {
+ ret = GLEW_EXT_stencil_wrap;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_subtexture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"subtexture", 10))
+ {
+ ret = GLEW_EXT_subtexture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_tessellation_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_point_size", 23))
+ {
+ ret = GLEW_EXT_tessellation_point_size;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_tessellation_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_shader", 19))
+ {
+ ret = GLEW_EXT_tessellation_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture", 7))
+ {
+ ret = GLEW_EXT_texture;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture3D
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture3D", 9))
+ {
+ ret = GLEW_EXT_texture3D;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_array", 13))
+ {
+ ret = GLEW_EXT_texture_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_EXT_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer", 14))
+ {
+ ret = GLEW_EXT_texture_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object", 21))
+ {
+ ret = GLEW_EXT_texture_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_decode_mode", 36))
+ {
+ ret = GLEW_EXT_texture_compression_astc_decode_mode;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_decode_mode_rgb9e5", 43))
+ {
+ ret = GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_bptc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_bptc", 24))
+ {
+ ret = GLEW_EXT_texture_compression_bptc;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_dxt1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt1", 24))
+ {
+ ret = GLEW_EXT_texture_compression_dxt1;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_latc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_latc", 24))
+ {
+ ret = GLEW_EXT_texture_compression_latc;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_rgtc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_rgtc", 24))
+ {
+ ret = GLEW_EXT_texture_compression_rgtc;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_s3tc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc", 24))
+ {
+ ret = GLEW_EXT_texture_compression_s3tc;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc_srgb", 29))
+ {
+ ret = GLEW_EXT_texture_compression_s3tc_srgb;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map", 16))
+ {
+ ret = GLEW_EXT_texture_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_cube_map_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map_array", 22))
+ {
+ ret = GLEW_EXT_texture_cube_map_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_edge_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_edge_clamp", 18))
+ {
+ ret = GLEW_EXT_texture_edge_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_env
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env", 11))
+ {
+ ret = GLEW_EXT_texture_env;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_env_add
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_add", 15))
+ {
+ ret = GLEW_EXT_texture_env_add;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_env_combine
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine", 19))
+ {
+ ret = GLEW_EXT_texture_env_combine;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_env_dot3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_dot3", 16))
+ {
+ ret = GLEW_EXT_texture_env_dot3;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_filter_anisotropic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_anisotropic", 26))
+ {
+ ret = GLEW_EXT_texture_filter_anisotropic;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_filter_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_minmax", 21))
+ {
+ ret = GLEW_EXT_texture_filter_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_format_BGRA8888
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_format_BGRA8888", 23))
+ {
+ ret = GLEW_EXT_texture_format_BGRA8888;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_format_sRGB_override
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_format_sRGB_override", 28))
+ {
+ ret = GLEW_EXT_texture_format_sRGB_override;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_integer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_integer", 15))
+ {
+ ret = GLEW_EXT_texture_integer;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_lod_bias
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod_bias", 16))
+ {
+ ret = GLEW_EXT_texture_lod_bias;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_mirror_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_clamp", 20))
+ {
+ ret = GLEW_EXT_texture_mirror_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_clamp_to_edge", 28))
+ {
+ ret = GLEW_EXT_texture_mirror_clamp_to_edge;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_norm16
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_norm16", 14))
+ {
+ ret = GLEW_EXT_texture_norm16;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_object", 14))
+ {
+ ret = GLEW_EXT_texture_object;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_perturb_normal
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_perturb_normal", 22))
+ {
+ ret = GLEW_EXT_texture_perturb_normal;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_query_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_query_lod", 17))
+ {
+ ret = GLEW_EXT_texture_query_lod;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17))
+ {
+ ret = GLEW_EXT_texture_rectangle;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_rg
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rg", 10))
+ {
+ ret = GLEW_EXT_texture_rg;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB", 12))
+ {
+ ret = GLEW_EXT_texture_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_sRGB_R8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB_R8", 15))
+ {
+ ret = GLEW_EXT_texture_sRGB_R8;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_sRGB_RG8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB_RG8", 16))
+ {
+ ret = GLEW_EXT_texture_sRGB_RG8;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_sRGB_decode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB_decode", 19))
+ {
+ ret = GLEW_EXT_texture_sRGB_decode;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_shadow_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shadow_lod", 18))
+ {
+ ret = GLEW_EXT_texture_shadow_lod;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_shared_exponent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shared_exponent", 23))
+ {
+ ret = GLEW_EXT_texture_shared_exponent;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_snorm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_snorm", 13))
+ {
+ ret = GLEW_EXT_texture_snorm;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_storage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage", 15))
+ {
+ ret = GLEW_EXT_texture_storage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_storage_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage_compression", 27))
+ {
+ ret = GLEW_EXT_texture_storage_compression;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_swizzle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_swizzle", 15))
+ {
+ ret = GLEW_EXT_texture_swizzle;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_type_2_10_10_10_REV", 27))
+ {
+ ret = GLEW_EXT_texture_type_2_10_10_10_REV;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_texture_view
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_view", 12))
+ {
+ ret = GLEW_EXT_texture_view;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_timer_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"timer_query", 11))
+ {
+ ret = GLEW_EXT_timer_query;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_transform_feedback
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback", 18))
+ {
+ ret = GLEW_EXT_transform_feedback;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_unpack_subimage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"unpack_subimage", 15))
+ {
+ ret = GLEW_EXT_unpack_subimage;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array", 12))
+ {
+ ret = GLEW_EXT_vertex_array;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_array_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_bgra", 17))
+ {
+ ret = GLEW_EXT_vertex_array_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_array_setXXX
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_setXXX", 19))
+ {
+ ret = GLEW_EXT_vertex_array_setXXX;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_attrib_64bit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_64bit", 19))
+ {
+ ret = GLEW_EXT_vertex_attrib_64bit;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader", 13))
+ {
+ ret = GLEW_EXT_vertex_shader;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_vertex_weighting
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_weighting", 16))
+ {
+ ret = GLEW_EXT_vertex_weighting;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_win32_keyed_mutex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"win32_keyed_mutex", 17))
+ {
+ ret = GLEW_EXT_win32_keyed_mutex;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_window_rectangles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_rectangles", 17))
+ {
+ ret = GLEW_EXT_window_rectangles;
+ continue;
+ }
+#endif
+#ifdef GL_EXT_x11_sync_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"x11_sync_object", 15))
+ {
+ ret = GLEW_EXT_x11_sync_object;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"FJ_", 3))
+ {
+#ifdef GL_FJ_shader_binary_GCCSO
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_binary_GCCSO", 19))
+ {
+ ret = GLEW_FJ_shader_binary_GCCSO;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"GREMEDY_", 8))
+ {
+#ifdef GL_GREMEDY_frame_terminator
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"frame_terminator", 16))
+ {
+ ret = GLEW_GREMEDY_frame_terminator;
+ continue;
+ }
+#endif
+#ifdef GL_GREMEDY_string_marker
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"string_marker", 13))
+ {
+ ret = GLEW_GREMEDY_string_marker;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"HP_", 3))
+ {
+#ifdef GL_HP_convolution_border_modes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_border_modes", 24))
+ {
+ ret = GLEW_HP_convolution_border_modes;
+ continue;
+ }
+#endif
+#ifdef GL_HP_image_transform
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_transform", 15))
+ {
+ ret = GLEW_HP_image_transform;
+ continue;
+ }
+#endif
+#ifdef GL_HP_occlusion_test
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_test", 14))
+ {
+ ret = GLEW_HP_occlusion_test;
+ continue;
+ }
+#endif
+#ifdef GL_HP_texture_lighting
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lighting", 16))
+ {
+ ret = GLEW_HP_texture_lighting;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"IBM_", 4))
+ {
+#ifdef GL_IBM_cull_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cull_vertex", 11))
+ {
+ ret = GLEW_IBM_cull_vertex;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_multimode_draw_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multimode_draw_arrays", 21))
+ {
+ ret = GLEW_IBM_multimode_draw_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_rasterpos_clip
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rasterpos_clip", 14))
+ {
+ ret = GLEW_IBM_rasterpos_clip;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_static_data
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"static_data", 11))
+ {
+ ret = GLEW_IBM_static_data;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_texture_mirrored_repeat
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirrored_repeat", 23))
+ {
+ ret = GLEW_IBM_texture_mirrored_repeat;
+ continue;
+ }
+#endif
+#ifdef GL_IBM_vertex_array_lists
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_lists", 18))
+ {
+ ret = GLEW_IBM_vertex_array_lists;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"IMG_", 4))
+ {
+#ifdef GL_IMG_bindless_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_texture", 16))
+ {
+ ret = GLEW_IMG_bindless_texture;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_framebuffer_downsample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_downsample", 22))
+ {
+ ret = GLEW_IMG_framebuffer_downsample;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_multisampled_render_to_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisampled_render_to_texture", 30))
+ {
+ ret = GLEW_IMG_multisampled_render_to_texture;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary", 14))
+ {
+ ret = GLEW_IMG_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_read_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_format", 11))
+ {
+ ret = GLEW_IMG_read_format;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_shader_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_binary", 13))
+ {
+ ret = GLEW_IMG_shader_binary;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_pvrtc", 25))
+ {
+ ret = GLEW_IMG_texture_compression_pvrtc;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_texture_compression_pvrtc2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_pvrtc2", 26))
+ {
+ ret = GLEW_IMG_texture_compression_pvrtc2;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_enhanced_fixed_function", 35))
+ {
+ ret = GLEW_IMG_texture_env_enhanced_fixed_function;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_texture_filter_cubic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_cubic", 20))
+ {
+ ret = GLEW_IMG_texture_filter_cubic;
+ continue;
+ }
+#endif
+#ifdef GL_IMG_tile_region_protection
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tile_region_protection", 22))
+ {
+ ret = GLEW_IMG_tile_region_protection;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"INGR_", 5))
+ {
+#ifdef GL_INGR_color_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_clamp", 11))
+ {
+ ret = GLEW_INGR_color_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_INGR_interlace_read
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace_read", 14))
+ {
+ ret = GLEW_INGR_interlace_read;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"INTEL_", 6))
+ {
+#ifdef GL_INTEL_blackhole_render
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blackhole_render", 16))
+ {
+ ret = GLEW_INTEL_blackhole_render;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_conservative_rasterization
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_rasterization", 26))
+ {
+ ret = GLEW_INTEL_conservative_rasterization;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_fragment_shader_ordering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader_ordering", 24))
+ {
+ ret = GLEW_INTEL_fragment_shader_ordering;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_framebuffer_CMAA
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_CMAA", 16))
+ {
+ ret = GLEW_INTEL_framebuffer_CMAA;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_map_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_texture", 11))
+ {
+ ret = GLEW_INTEL_map_texture;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_parallel_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parallel_arrays", 15))
+ {
+ ret = GLEW_INTEL_parallel_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_performance_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"performance_query", 17))
+ {
+ ret = GLEW_INTEL_performance_query;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_shader_integer_functions2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_integer_functions2", 25))
+ {
+ ret = GLEW_INTEL_shader_integer_functions2;
+ continue;
+ }
+#endif
+#ifdef GL_INTEL_texture_scissor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_scissor", 15))
+ {
+ ret = GLEW_INTEL_texture_scissor;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"KHR_", 4))
+ {
+#ifdef GL_KHR_blend_equation_advanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced", 23))
+ {
+ ret = GLEW_KHR_blend_equation_advanced;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_blend_equation_advanced_coherent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced_coherent", 32))
+ {
+ ret = GLEW_KHR_blend_equation_advanced_coherent;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_context_flush_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_flush_control", 21))
+ {
+ ret = GLEW_KHR_context_flush_control;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_debug
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug", 5))
+ {
+ ret = GLEW_KHR_debug;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_no_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"no_error", 8))
+ {
+ ret = GLEW_KHR_no_error;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_parallel_shader_compile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parallel_shader_compile", 23))
+ {
+ ret = GLEW_KHR_parallel_shader_compile;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_robust_buffer_access_behavior
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robust_buffer_access_behavior", 29))
+ {
+ ret = GLEW_KHR_robust_buffer_access_behavior;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness", 10))
+ {
+ ret = GLEW_KHR_robustness;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_shader_subgroup
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_subgroup", 15))
+ {
+ ret = GLEW_KHR_shader_subgroup;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_texture_compression_astc_hdr
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_hdr", 28))
+ {
+ ret = GLEW_KHR_texture_compression_astc_hdr;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_texture_compression_astc_ldr
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_ldr", 28))
+ {
+ ret = GLEW_KHR_texture_compression_astc_ldr;
+ continue;
+ }
+#endif
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc_sliced_3d", 34))
+ {
+ ret = GLEW_KHR_texture_compression_astc_sliced_3d;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"KTX_", 4))
+ {
+#ifdef GL_KTX_buffer_region
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_region", 13))
+ {
+ ret = GLEW_KTX_buffer_region;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESAX_", 6))
+ {
+#ifdef GL_MESAX_texture_stack
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_stack", 13))
+ {
+ ret = GLEW_MESAX_texture_stack;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5))
+ {
+#ifdef GL_MESA_bgra
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bgra", 4))
+ {
+ ret = GLEW_MESA_bgra;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_framebuffer_flip_x
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_flip_x", 18))
+ {
+ ret = GLEW_MESA_framebuffer_flip_x;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_framebuffer_flip_y
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_flip_y", 18))
+ {
+ ret = GLEW_MESA_framebuffer_flip_y;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_framebuffer_swap_xy
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_swap_xy", 19))
+ {
+ ret = GLEW_MESA_framebuffer_swap_xy;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_pack_invert
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pack_invert", 11))
+ {
+ ret = GLEW_MESA_pack_invert;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_program_binary_formats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"program_binary_formats", 22))
+ {
+ ret = GLEW_MESA_program_binary_formats;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_resize_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"resize_buffers", 14))
+ {
+ ret = GLEW_MESA_resize_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_shader_integer_functions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_integer_functions", 24))
+ {
+ ret = GLEW_MESA_shader_integer_functions;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_tile_raster_order
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tile_raster_order", 17))
+ {
+ ret = GLEW_MESA_tile_raster_order;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_window_pos
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_pos", 10))
+ {
+ ret = GLEW_MESA_window_pos;
+ continue;
+ }
+#endif
+#ifdef GL_MESA_ycbcr_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycbcr_texture", 13))
+ {
+ ret = GLEW_MESA_ycbcr_texture;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NVX_", 4))
+ {
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced_multi_draw_buffers", 42))
+ {
+ ret = GLEW_NVX_blend_equation_advanced_multi_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_conditional_render
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conditional_render", 18))
+ {
+ ret = GLEW_NVX_conditional_render;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_gpu_memory_info
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_memory_info", 15))
+ {
+ ret = GLEW_NVX_gpu_memory_info;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_gpu_multicast2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_multicast2", 14))
+ {
+ ret = GLEW_NVX_gpu_multicast2;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_linked_gpu_multicast
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"linked_gpu_multicast", 20))
+ {
+ ret = GLEW_NVX_linked_gpu_multicast;
+ continue;
+ }
+#endif
+#ifdef GL_NVX_progress_fence
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"progress_fence", 14))
+ {
+ ret = GLEW_NVX_progress_fence;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3))
+ {
+#ifdef GL_NV_3dvision_settings
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3dvision_settings", 17))
+ {
+ ret = GLEW_NV_3dvision_settings;
+ continue;
+ }
+#endif
+#ifdef GL_NV_EGL_stream_consumer_external
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_stream_consumer_external", 28))
+ {
+ ret = GLEW_NV_EGL_stream_consumer_external;
+ continue;
+ }
+#endif
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"alpha_to_coverage_dither_control", 32))
+ {
+ ret = GLEW_NV_alpha_to_coverage_dither_control;
+ continue;
+ }
+#endif
+#ifdef GL_NV_bgr
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bgr", 3))
+ {
+ ret = GLEW_NV_bgr;
+ continue;
+ }
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_multi_draw_indirect", 28))
+ {
+ ret = GLEW_NV_bindless_multi_draw_indirect;
+ continue;
+ }
+#endif
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_multi_draw_indirect_count", 34))
+ {
+ ret = GLEW_NV_bindless_multi_draw_indirect_count;
+ continue;
+ }
+#endif
+#ifdef GL_NV_bindless_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindless_texture", 16))
+ {
+ ret = GLEW_NV_bindless_texture;
+ continue;
+ }
+#endif
+#ifdef GL_NV_blend_equation_advanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced", 23))
+ {
+ ret = GLEW_NV_blend_equation_advanced;
+ continue;
+ }
+#endif
+#ifdef GL_NV_blend_equation_advanced_coherent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_advanced_coherent", 32))
+ {
+ ret = GLEW_NV_blend_equation_advanced_coherent;
+ continue;
+ }
+#endif
+#ifdef GL_NV_blend_minmax_factor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_minmax_factor", 19))
+ {
+ ret = GLEW_NV_blend_minmax_factor;
+ continue;
+ }
+#endif
+#ifdef GL_NV_blend_square
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_square", 12))
+ {
+ ret = GLEW_NV_blend_square;
+ continue;
+ }
+#endif
+#ifdef GL_NV_clip_space_w_scaling
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_space_w_scaling", 20))
+ {
+ ret = GLEW_NV_clip_space_w_scaling;
+ continue;
+ }
+#endif
+#ifdef GL_NV_command_list
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"command_list", 12))
+ {
+ ret = GLEW_NV_command_list;
+ continue;
+ }
+#endif
+#ifdef GL_NV_compute_program5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compute_program5", 16))
+ {
+ ret = GLEW_NV_compute_program5;
+ continue;
+ }
+#endif
+#ifdef GL_NV_compute_shader_derivatives
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compute_shader_derivatives", 26))
+ {
+ ret = GLEW_NV_compute_shader_derivatives;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conditional_render
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conditional_render", 18))
+ {
+ ret = GLEW_NV_conditional_render;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster", 19))
+ {
+ ret = GLEW_NV_conservative_raster;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster_dilate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster_dilate", 26))
+ {
+ ret = GLEW_NV_conservative_raster_dilate;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster_pre_snap", 28))
+ {
+ ret = GLEW_NV_conservative_raster_pre_snap;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster_pre_snap_triangles", 38))
+ {
+ ret = GLEW_NV_conservative_raster_pre_snap_triangles;
+ continue;
+ }
+#endif
+#ifdef GL_NV_conservative_raster_underestimation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_raster_underestimation", 35))
+ {
+ ret = GLEW_NV_conservative_raster_underestimation;
+ continue;
+ }
+#endif
+#ifdef GL_NV_copy_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_buffer", 11))
+ {
+ ret = GLEW_NV_copy_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_NV_copy_depth_to_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_depth_to_color", 19))
+ {
+ ret = GLEW_NV_copy_depth_to_color;
+ continue;
+ }
+#endif
+#ifdef GL_NV_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLEW_NV_copy_image;
+ continue;
+ }
+#endif
+#ifdef GL_NV_deep_texture3D
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"deep_texture3D", 14))
+ {
+ ret = GLEW_NV_deep_texture3D;
+ continue;
+ }
+#endif
+#ifdef GL_NV_depth_buffer_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_buffer_float", 18))
+ {
+ ret = GLEW_NV_depth_buffer_float;
+ continue;
+ }
+#endif
+#ifdef GL_NV_depth_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp", 11))
+ {
+ ret = GLEW_NV_depth_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_NV_depth_nonlinear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_nonlinear", 15))
+ {
+ ret = GLEW_NV_depth_nonlinear;
+ continue;
+ }
+#endif
+#ifdef GL_NV_depth_range_unclamped
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_range_unclamped", 21))
+ {
+ ret = GLEW_NV_depth_range_unclamped;
+ continue;
+ }
+#endif
+#ifdef GL_NV_draw_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12))
+ {
+ ret = GLEW_NV_draw_buffers;
+ continue;
+ }
+#endif
+#ifdef GL_NV_draw_instanced
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14))
+ {
+ ret = GLEW_NV_draw_instanced;
+ continue;
+ }
+#endif
+#ifdef GL_NV_draw_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_texture", 12))
+ {
+ ret = GLEW_NV_draw_texture;
+ continue;
+ }
+#endif
+#ifdef GL_NV_draw_vulkan_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_vulkan_image", 17))
+ {
+ ret = GLEW_NV_draw_vulkan_image;
+ continue;
+ }
+#endif
+#ifdef GL_NV_evaluators
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"evaluators", 10))
+ {
+ ret = GLEW_NV_evaluators;
+ continue;
+ }
+#endif
+#ifdef GL_NV_explicit_attrib_location
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_attrib_location", 24))
+ {
+ ret = GLEW_NV_explicit_attrib_location;
+ continue;
+ }
+#endif
+#ifdef GL_NV_explicit_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_multisample", 20))
+ {
+ ret = GLEW_NV_explicit_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fbo_color_attachments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbo_color_attachments", 21))
+ {
+ ret = GLEW_NV_fbo_color_attachments;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fence
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fence", 5))
+ {
+ ret = GLEW_NV_fence;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fill_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fill_rectangle", 14))
+ {
+ ret = GLEW_NV_fill_rectangle;
+ continue;
+ }
+#endif
+#ifdef GL_NV_float_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12))
+ {
+ ret = GLEW_NV_float_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fog_distance
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_distance", 12))
+ {
+ ret = GLEW_NV_fog_distance;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_coverage_to_color
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_coverage_to_color", 26))
+ {
+ ret = GLEW_NV_fragment_coverage_to_color;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_program
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program", 16))
+ {
+ ret = GLEW_NV_fragment_program;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_program2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program2", 17))
+ {
+ ret = GLEW_NV_fragment_program2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_program4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program4", 17))
+ {
+ ret = GLEW_NV_fragment_program4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_program_option
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program_option", 23))
+ {
+ ret = GLEW_NV_fragment_program_option;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_shader_barycentric
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader_barycentric", 27))
+ {
+ ret = GLEW_NV_fragment_shader_barycentric;
+ continue;
+ }
+#endif
+#ifdef GL_NV_fragment_shader_interlock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader_interlock", 25))
+ {
+ ret = GLEW_NV_fragment_shader_interlock;
+ continue;
+ }
+#endif
+#ifdef GL_NV_framebuffer_blit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_blit", 16))
+ {
+ ret = GLEW_NV_framebuffer_blit;
+ continue;
+ }
+#endif
+#ifdef GL_NV_framebuffer_mixed_samples
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_mixed_samples", 25))
+ {
+ ret = GLEW_NV_framebuffer_mixed_samples;
+ continue;
+ }
+#endif
+#ifdef GL_NV_framebuffer_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23))
+ {
+ ret = GLEW_NV_framebuffer_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_NV_framebuffer_multisample_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample_coverage", 32))
+ {
+ ret = GLEW_NV_framebuffer_multisample_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_NV_generate_mipmap_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"generate_mipmap_sRGB", 20))
+ {
+ ret = GLEW_NV_generate_mipmap_sRGB;
+ continue;
+ }
+#endif
+#ifdef GL_NV_geometry_program4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_program4", 17))
+ {
+ ret = GLEW_NV_geometry_program4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_geometry_shader4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16))
+ {
+ ret = GLEW_NV_geometry_shader4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_geometry_shader_passthrough
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader_passthrough", 27))
+ {
+ ret = GLEW_NV_geometry_shader_passthrough;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_multicast
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_multicast", 13))
+ {
+ ret = GLEW_NV_gpu_multicast;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_program4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program4", 12))
+ {
+ ret = GLEW_NV_gpu_program4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_program5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program5", 12))
+ {
+ ret = GLEW_NV_gpu_program5;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_program5_mem_extended
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program5_mem_extended", 25))
+ {
+ ret = GLEW_NV_gpu_program5_mem_extended;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_program_fp64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program_fp64", 16))
+ {
+ ret = GLEW_NV_gpu_program_fp64;
+ continue;
+ }
+#endif
+#ifdef GL_NV_gpu_shader5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+ {
+ ret = GLEW_NV_gpu_shader5;
+ continue;
+ }
+#endif
+#ifdef GL_NV_half_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float", 10))
+ {
+ ret = GLEW_NV_half_float;
+ continue;
+ }
+#endif
+#ifdef GL_NV_image_formats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_formats", 13))
+ {
+ ret = GLEW_NV_image_formats;
+ continue;
+ }
+#endif
+#ifdef GL_NV_instanced_arrays
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16))
+ {
+ ret = GLEW_NV_instanced_arrays;
+ continue;
+ }
+#endif
+#ifdef GL_NV_internalformat_sample_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"internalformat_sample_query", 27))
+ {
+ ret = GLEW_NV_internalformat_sample_query;
+ continue;
+ }
+#endif
+#ifdef GL_NV_light_max_exponent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"light_max_exponent", 18))
+ {
+ ret = GLEW_NV_light_max_exponent;
+ continue;
+ }
+#endif
+#ifdef GL_NV_memory_attachment
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_attachment", 17))
+ {
+ ret = GLEW_NV_memory_attachment;
+ continue;
+ }
+#endif
+#ifdef GL_NV_memory_object_sparse
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"memory_object_sparse", 20))
+ {
+ ret = GLEW_NV_memory_object_sparse;
+ continue;
+ }
+#endif
+#ifdef GL_NV_mesh_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mesh_shader", 11))
+ {
+ ret = GLEW_NV_mesh_shader;
+ continue;
+ }
+#endif
+#ifdef GL_NV_multisample_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_coverage", 20))
+ {
+ ret = GLEW_NV_multisample_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_NV_multisample_filter_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_filter_hint", 23))
+ {
+ ret = GLEW_NV_multisample_filter_hint;
+ continue;
+ }
+#endif
+#ifdef GL_NV_non_square_matrices
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"non_square_matrices", 19))
+ {
+ ret = GLEW_NV_non_square_matrices;
+ continue;
+ }
+#endif
+#ifdef GL_NV_occlusion_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query", 15))
+ {
+ ret = GLEW_NV_occlusion_query;
+ continue;
+ }
+#endif
+#ifdef GL_NV_pack_subimage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pack_subimage", 13))
+ {
+ ret = GLEW_NV_pack_subimage;
+ continue;
+ }
+#endif
+#ifdef GL_NV_packed_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_depth_stencil", 20))
+ {
+ ret = GLEW_NV_packed_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_NV_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_float", 12))
+ {
+ ret = GLEW_NV_packed_float;
+ continue;
+ }
+#endif
+#ifdef GL_NV_packed_float_linear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_float_linear", 19))
+ {
+ ret = GLEW_NV_packed_float_linear;
+ continue;
+ }
+#endif
+#ifdef GL_NV_parameter_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parameter_buffer_object", 23))
+ {
+ ret = GLEW_NV_parameter_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_NV_parameter_buffer_object2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"parameter_buffer_object2", 24))
+ {
+ ret = GLEW_NV_parameter_buffer_object2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_path_rendering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"path_rendering", 14))
+ {
+ ret = GLEW_NV_path_rendering;
+ continue;
+ }
+#endif
+#ifdef GL_NV_path_rendering_shared_edge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"path_rendering_shared_edge", 26))
+ {
+ ret = GLEW_NV_path_rendering_shared_edge;
+ continue;
+ }
+#endif
+#ifdef GL_NV_pixel_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19))
+ {
+ ret = GLEW_NV_pixel_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_NV_pixel_data_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_data_range", 16))
+ {
+ ret = GLEW_NV_pixel_data_range;
+ continue;
+ }
+#endif
+#ifdef GL_NV_platform_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_binary", 15))
+ {
+ ret = GLEW_NV_platform_binary;
+ continue;
+ }
+#endif
+#ifdef GL_NV_point_sprite
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprite", 12))
+ {
+ ret = GLEW_NV_point_sprite;
+ continue;
+ }
+#endif
+#ifdef GL_NV_polygon_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_mode", 12))
+ {
+ ret = GLEW_NV_polygon_mode;
+ continue;
+ }
+#endif
+#ifdef GL_NV_present_video
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13))
+ {
+ ret = GLEW_NV_present_video;
+ continue;
+ }
+#endif
+#ifdef GL_NV_primitive_restart
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"primitive_restart", 17))
+ {
+ ret = GLEW_NV_primitive_restart;
+ continue;
+ }
+#endif
+#ifdef GL_NV_primitive_shading_rate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"primitive_shading_rate", 22))
+ {
+ ret = GLEW_NV_primitive_shading_rate;
+ continue;
+ }
+#endif
+#ifdef GL_NV_query_resource_tag
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_resource_tag", 18))
+ {
+ ret = GLEW_NV_query_resource_tag;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_buffer", 11))
+ {
+ ret = GLEW_NV_read_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_buffer_front
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_buffer_front", 17))
+ {
+ ret = GLEW_NV_read_buffer_front;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_depth
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_depth", 10))
+ {
+ ret = GLEW_NV_read_depth;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_depth_stencil", 18))
+ {
+ ret = GLEW_NV_read_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_NV_read_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_stencil", 12))
+ {
+ ret = GLEW_NV_read_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_NV_register_combiners
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"register_combiners", 18))
+ {
+ ret = GLEW_NV_register_combiners;
+ continue;
+ }
+#endif
+#ifdef GL_NV_register_combiners2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"register_combiners2", 19))
+ {
+ ret = GLEW_NV_register_combiners2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_representative_fragment_test
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"representative_fragment_test", 28))
+ {
+ ret = GLEW_NV_representative_fragment_test;
+ continue;
+ }
+#endif
+#ifdef GL_NV_robustness_video_memory_purge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_video_memory_purge", 29))
+ {
+ ret = GLEW_NV_robustness_video_memory_purge;
+ continue;
+ }
+#endif
+#ifdef GL_NV_sRGB_formats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sRGB_formats", 12))
+ {
+ ret = GLEW_NV_sRGB_formats;
+ continue;
+ }
+#endif
+#ifdef GL_NV_sample_locations
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_locations", 16))
+ {
+ ret = GLEW_NV_sample_locations;
+ continue;
+ }
+#endif
+#ifdef GL_NV_sample_mask_override_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_mask_override_coverage", 29))
+ {
+ ret = GLEW_NV_sample_mask_override_coverage;
+ continue;
+ }
+#endif
+#ifdef GL_NV_scissor_exclusive
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scissor_exclusive", 17))
+ {
+ ret = GLEW_NV_scissor_exclusive;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_counters
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_counters", 22))
+ {
+ ret = GLEW_NV_shader_atomic_counters;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_float", 19))
+ {
+ ret = GLEW_NV_shader_atomic_float;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_float64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_float64", 21))
+ {
+ ret = GLEW_NV_shader_atomic_float64;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_fp16_vector
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_fp16_vector", 25))
+ {
+ ret = GLEW_NV_shader_atomic_fp16_vector;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_atomic_int64
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_atomic_int64", 19))
+ {
+ ret = GLEW_NV_shader_atomic_int64;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_buffer_load
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_buffer_load", 18))
+ {
+ ret = GLEW_NV_shader_buffer_load;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_noperspective_interpolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_noperspective_interpolation", 34))
+ {
+ ret = GLEW_NV_shader_noperspective_interpolation;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_storage_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_storage_buffer_object", 28))
+ {
+ ret = GLEW_NV_shader_storage_buffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_subgroup_partitioned
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_subgroup_partitioned", 27))
+ {
+ ret = GLEW_NV_shader_subgroup_partitioned;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_texture_footprint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_footprint", 24))
+ {
+ ret = GLEW_NV_shader_texture_footprint;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_thread_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_thread_group", 19))
+ {
+ ret = GLEW_NV_shader_thread_group;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shader_thread_shuffle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_thread_shuffle", 21))
+ {
+ ret = GLEW_NV_shader_thread_shuffle;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shading_rate_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_rate_image", 18))
+ {
+ ret = GLEW_NV_shading_rate_image;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shadow_samplers_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_samplers_array", 21))
+ {
+ ret = GLEW_NV_shadow_samplers_array;
+ continue;
+ }
+#endif
+#ifdef GL_NV_shadow_samplers_cube
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_samplers_cube", 20))
+ {
+ ret = GLEW_NV_shadow_samplers_cube;
+ continue;
+ }
+#endif
+#ifdef GL_NV_stereo_view_rendering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stereo_view_rendering", 21))
+ {
+ ret = GLEW_NV_stereo_view_rendering;
+ continue;
+ }
+#endif
+#ifdef GL_NV_tessellation_program5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_program5", 21))
+ {
+ ret = GLEW_NV_tessellation_program5;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texgen_emboss
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texgen_emboss", 13))
+ {
+ ret = GLEW_NV_texgen_emboss;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texgen_reflection
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texgen_reflection", 17))
+ {
+ ret = GLEW_NV_texgen_reflection;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_array", 13))
+ {
+ ret = GLEW_NV_texture_array;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_barrier
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_barrier", 15))
+ {
+ ret = GLEW_NV_texture_barrier;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_NV_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_compression_latc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_latc", 24))
+ {
+ ret = GLEW_NV_texture_compression_latc;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_compression_s3tc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc", 24))
+ {
+ ret = GLEW_NV_texture_compression_s3tc;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_compression_s3tc_update
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc_update", 31))
+ {
+ ret = GLEW_NV_texture_compression_s3tc_update;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_compression_vtc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_vtc", 23))
+ {
+ ret = GLEW_NV_texture_compression_vtc;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_env_combine4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine4", 20))
+ {
+ ret = GLEW_NV_texture_env_combine4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_expand_normal
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_expand_normal", 21))
+ {
+ ret = GLEW_NV_texture_expand_normal;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_multisample", 19))
+ {
+ ret = GLEW_NV_texture_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_npot_2D_mipmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_npot_2D_mipmap", 22))
+ {
+ ret = GLEW_NV_texture_npot_2D_mipmap;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17))
+ {
+ ret = GLEW_NV_texture_rectangle;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_rectangle_compressed
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle_compressed", 28))
+ {
+ ret = GLEW_NV_texture_rectangle_compressed;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader", 14))
+ {
+ ret = GLEW_NV_texture_shader;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_shader2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader2", 15))
+ {
+ ret = GLEW_NV_texture_shader2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_texture_shader3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader3", 15))
+ {
+ ret = GLEW_NV_texture_shader3;
+ continue;
+ }
+#endif
+#ifdef GL_NV_timeline_semaphore
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"timeline_semaphore", 18))
+ {
+ ret = GLEW_NV_timeline_semaphore;
+ continue;
+ }
+#endif
+#ifdef GL_NV_transform_feedback
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback", 18))
+ {
+ ret = GLEW_NV_transform_feedback;
+ continue;
+ }
+#endif
+#ifdef GL_NV_transform_feedback2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback2", 19))
+ {
+ ret = GLEW_NV_transform_feedback2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_uniform_buffer_unified_memory
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"uniform_buffer_unified_memory", 29))
+ {
+ ret = GLEW_NV_uniform_buffer_unified_memory;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vdpau_interop
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vdpau_interop", 13))
+ {
+ ret = GLEW_NV_vdpau_interop;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vdpau_interop2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vdpau_interop2", 14))
+ {
+ ret = GLEW_NV_vdpau_interop2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_array_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18))
+ {
+ ret = GLEW_NV_vertex_array_range;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_array_range2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range2", 19))
+ {
+ ret = GLEW_NV_vertex_array_range2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_integer_64bit", 27))
+ {
+ ret = GLEW_NV_vertex_attrib_integer_64bit;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_buffer_unified_memory
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_unified_memory", 28))
+ {
+ ret = GLEW_NV_vertex_buffer_unified_memory;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program", 14))
+ {
+ ret = GLEW_NV_vertex_program;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program1_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program1_1", 17))
+ {
+ ret = GLEW_NV_vertex_program1_1;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program2", 15))
+ {
+ ret = GLEW_NV_vertex_program2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program2_option
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program2_option", 22))
+ {
+ ret = GLEW_NV_vertex_program2_option;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program3", 15))
+ {
+ ret = GLEW_NV_vertex_program3;
+ continue;
+ }
+#endif
+#ifdef GL_NV_vertex_program4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program4", 15))
+ {
+ ret = GLEW_NV_vertex_program4;
+ continue;
+ }
+#endif
+#ifdef GL_NV_video_capture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_capture", 13))
+ {
+ ret = GLEW_NV_video_capture;
+ continue;
+ }
+#endif
+#ifdef GL_NV_viewport_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"viewport_array", 14))
+ {
+ ret = GLEW_NV_viewport_array;
+ continue;
+ }
+#endif
+#ifdef GL_NV_viewport_array2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"viewport_array2", 15))
+ {
+ ret = GLEW_NV_viewport_array2;
+ continue;
+ }
+#endif
+#ifdef GL_NV_viewport_swizzle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"viewport_swizzle", 16))
+ {
+ ret = GLEW_NV_viewport_swizzle;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OES_", 4))
+ {
+#ifdef GL_OES_EGL_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image", 9))
+ {
+ ret = GLEW_OES_EGL_image;
+ continue;
+ }
+#endif
+#ifdef GL_OES_EGL_image_external
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_external", 18))
+ {
+ ret = GLEW_OES_EGL_image_external;
+ continue;
+ }
+#endif
+#ifdef GL_OES_EGL_image_external_essl3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"EGL_image_external_essl3", 24))
+ {
+ ret = GLEW_OES_EGL_image_external_essl3;
+ continue;
+ }
+#endif
+#ifdef GL_OES_blend_equation_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_separate", 23))
+ {
+ ret = GLEW_OES_blend_equation_separate;
+ continue;
+ }
+#endif
+#ifdef GL_OES_blend_func_separate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_separate", 19))
+ {
+ ret = GLEW_OES_blend_func_separate;
+ continue;
+ }
+#endif
+#ifdef GL_OES_blend_subtract
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_subtract", 14))
+ {
+ ret = GLEW_OES_blend_subtract;
+ continue;
+ }
+#endif
+#ifdef GL_OES_byte_coordinates
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"byte_coordinates", 16))
+ {
+ ret = GLEW_OES_byte_coordinates;
+ continue;
+ }
+#endif
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_ETC1_RGB8_texture", 28))
+ {
+ ret = GLEW_OES_compressed_ETC1_RGB8_texture;
+ continue;
+ }
+#endif
+#ifdef GL_OES_compressed_paletted_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_paletted_texture", 27))
+ {
+ ret = GLEW_OES_compressed_paletted_texture;
+ continue;
+ }
+#endif
+#ifdef GL_OES_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLEW_OES_copy_image;
+ continue;
+ }
+#endif
+#ifdef GL_OES_depth24
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth24", 7))
+ {
+ ret = GLEW_OES_depth24;
+ continue;
+ }
+#endif
+#ifdef GL_OES_depth32
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth32", 7))
+ {
+ ret = GLEW_OES_depth32;
+ continue;
+ }
+#endif
+#ifdef GL_OES_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13))
+ {
+ ret = GLEW_OES_depth_texture;
+ continue;
+ }
+#endif
+#ifdef GL_OES_depth_texture_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture_cube_map", 22))
+ {
+ ret = GLEW_OES_depth_texture_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_OES_draw_buffers_indexed
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_indexed", 20))
+ {
+ ret = GLEW_OES_draw_buffers_indexed;
+ continue;
+ }
+#endif
+#ifdef GL_OES_draw_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_texture", 12))
+ {
+ ret = GLEW_OES_draw_texture;
+ continue;
+ }
+#endif
+#ifdef GL_OES_element_index_uint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"element_index_uint", 18))
+ {
+ ret = GLEW_OES_element_index_uint;
+ continue;
+ }
+#endif
+#ifdef GL_OES_extended_matrix_palette
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extended_matrix_palette", 23))
+ {
+ ret = GLEW_OES_extended_matrix_palette;
+ continue;
+ }
+#endif
+#ifdef GL_OES_fbo_render_mipmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbo_render_mipmap", 17))
+ {
+ ret = GLEW_OES_fbo_render_mipmap;
+ continue;
+ }
+#endif
+#ifdef GL_OES_fragment_precision_high
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_precision_high", 23))
+ {
+ ret = GLEW_OES_fragment_precision_high;
+ continue;
+ }
+#endif
+#ifdef GL_OES_framebuffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_object", 18))
+ {
+ ret = GLEW_OES_framebuffer_object;
+ continue;
+ }
+#endif
+#ifdef GL_OES_geometry_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_point_size", 19))
+ {
+ ret = GLEW_OES_geometry_point_size;
+ continue;
+ }
+#endif
+#ifdef GL_OES_geometry_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader", 15))
+ {
+ ret = GLEW_OES_geometry_shader;
+ continue;
+ }
+#endif
+#ifdef GL_OES_get_program_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_program_binary", 18))
+ {
+ ret = GLEW_OES_get_program_binary;
+ continue;
+ }
+#endif
+#ifdef GL_OES_gpu_shader5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+ {
+ ret = GLEW_OES_gpu_shader5;
+ continue;
+ }
+#endif
+#ifdef GL_OES_mapbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mapbuffer", 9))
+ {
+ ret = GLEW_OES_mapbuffer;
+ continue;
+ }
+#endif
+#ifdef GL_OES_matrix_get
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"matrix_get", 10))
+ {
+ ret = GLEW_OES_matrix_get;
+ continue;
+ }
+#endif
+#ifdef GL_OES_matrix_palette
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"matrix_palette", 14))
+ {
+ ret = GLEW_OES_matrix_palette;
+ continue;
+ }
+#endif
+#ifdef GL_OES_packed_depth_stencil
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_depth_stencil", 20))
+ {
+ ret = GLEW_OES_packed_depth_stencil;
+ continue;
+ }
+#endif
+#ifdef GL_OES_point_size_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_size_array", 16))
+ {
+ ret = GLEW_OES_point_size_array;
+ continue;
+ }
+#endif
+#ifdef GL_OES_point_sprite
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprite", 12))
+ {
+ ret = GLEW_OES_point_sprite;
+ continue;
+ }
+#endif
+#ifdef GL_OES_read_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_format", 11))
+ {
+ ret = GLEW_OES_read_format;
+ continue;
+ }
+#endif
+#ifdef GL_OES_required_internalformat
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"required_internalformat", 23))
+ {
+ ret = GLEW_OES_required_internalformat;
+ continue;
+ }
+#endif
+#ifdef GL_OES_rgb8_rgba8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"rgb8_rgba8", 10))
+ {
+ ret = GLEW_OES_rgb8_rgba8;
+ continue;
+ }
+#endif
+#ifdef GL_OES_sample_shading
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_shading", 14))
+ {
+ ret = GLEW_OES_sample_shading;
+ continue;
+ }
+#endif
+#ifdef GL_OES_sample_variables
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sample_variables", 16))
+ {
+ ret = GLEW_OES_sample_variables;
+ continue;
+ }
+#endif
+#ifdef GL_OES_shader_image_atomic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_atomic", 19))
+ {
+ ret = GLEW_OES_shader_image_atomic;
+ continue;
+ }
+#endif
+#ifdef GL_OES_shader_io_blocks
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_io_blocks", 16))
+ {
+ ret = GLEW_OES_shader_io_blocks;
+ continue;
+ }
+#endif
+#ifdef GL_OES_shader_multisample_interpolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_multisample_interpolation", 32))
+ {
+ ret = GLEW_OES_shader_multisample_interpolation;
+ continue;
+ }
+#endif
+#ifdef GL_OES_single_precision
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"single_precision", 16))
+ {
+ ret = GLEW_OES_single_precision;
+ continue;
+ }
+#endif
+#ifdef GL_OES_standard_derivatives
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"standard_derivatives", 20))
+ {
+ ret = GLEW_OES_standard_derivatives;
+ continue;
+ }
+#endif
+#ifdef GL_OES_stencil1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil1", 8))
+ {
+ ret = GLEW_OES_stencil1;
+ continue;
+ }
+#endif
+#ifdef GL_OES_stencil4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil4", 8))
+ {
+ ret = GLEW_OES_stencil4;
+ continue;
+ }
+#endif
+#ifdef GL_OES_stencil8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil8", 8))
+ {
+ ret = GLEW_OES_stencil8;
+ continue;
+ }
+#endif
+#ifdef GL_OES_surfaceless_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surfaceless_context", 19))
+ {
+ ret = GLEW_OES_surfaceless_context;
+ continue;
+ }
+#endif
+#ifdef GL_OES_tessellation_point_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_point_size", 23))
+ {
+ ret = GLEW_OES_tessellation_point_size;
+ continue;
+ }
+#endif
+#ifdef GL_OES_tessellation_shader
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_shader", 19))
+ {
+ ret = GLEW_OES_tessellation_shader;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_3D
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_3D", 10))
+ {
+ ret = GLEW_OES_texture_3D;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_OES_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer", 14))
+ {
+ ret = GLEW_OES_texture_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_compression_astc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_astc", 24))
+ {
+ ret = GLEW_OES_texture_compression_astc;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map", 16))
+ {
+ ret = GLEW_OES_texture_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_cube_map_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map_array", 22))
+ {
+ ret = GLEW_OES_texture_cube_map_array;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_env_crossbar
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_crossbar", 20))
+ {
+ ret = GLEW_OES_texture_env_crossbar;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_mirrored_repeat
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirrored_repeat", 23))
+ {
+ ret = GLEW_OES_texture_mirrored_repeat;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_npot
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_npot", 12))
+ {
+ ret = GLEW_OES_texture_npot;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_stencil8
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_stencil8", 16))
+ {
+ ret = GLEW_OES_texture_stencil8;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_storage_multisample_2d_array", 36))
+ {
+ ret = GLEW_OES_texture_storage_multisample_2d_array;
+ continue;
+ }
+#endif
+#ifdef GL_OES_texture_view
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_view", 12))
+ {
+ ret = GLEW_OES_texture_view;
+ continue;
+ }
+#endif
+#ifdef GL_OES_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_OES_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_OES_vertex_half_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_half_float", 17))
+ {
+ ret = GLEW_OES_vertex_half_float;
+ continue;
+ }
+#endif
+#ifdef GL_OES_vertex_type_10_10_10_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_type_10_10_10_2", 22))
+ {
+ ret = GLEW_OES_vertex_type_10_10_10_2;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4))
+ {
+#ifdef GL_OML_interlace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace", 9))
+ {
+ ret = GLEW_OML_interlace;
+ continue;
+ }
+#endif
+#ifdef GL_OML_resample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"resample", 8))
+ {
+ ret = GLEW_OML_resample;
+ continue;
+ }
+#endif
+#ifdef GL_OML_subsample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"subsample", 9))
+ {
+ ret = GLEW_OML_subsample;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OVR_", 4))
+ {
+#ifdef GL_OVR_multiview
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview", 9))
+ {
+ ret = GLEW_OVR_multiview;
+ continue;
+ }
+#endif
+#ifdef GL_OVR_multiview2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview2", 10))
+ {
+ ret = GLEW_OVR_multiview2;
+ continue;
+ }
+#endif
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_multisampled_render_to_texture", 40))
+ {
+ ret = GLEW_OVR_multiview_multisampled_render_to_texture;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"PGI_", 4))
+ {
+#ifdef GL_PGI_misc_hints
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"misc_hints", 10))
+ {
+ ret = GLEW_PGI_misc_hints;
+ continue;
+ }
+#endif
+#ifdef GL_PGI_vertex_hints
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_hints", 12))
+ {
+ ret = GLEW_PGI_vertex_hints;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"QCOM_", 5))
+ {
+#ifdef GL_QCOM_YUV_texture_gather
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"YUV_texture_gather", 18))
+ {
+ ret = GLEW_QCOM_YUV_texture_gather;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_alpha_test
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"alpha_test", 10))
+ {
+ ret = GLEW_QCOM_alpha_test;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_binning_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"binning_control", 15))
+ {
+ ret = GLEW_QCOM_binning_control;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_driver_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"driver_control", 14))
+ {
+ ret = GLEW_QCOM_driver_control;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_extended_get
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extended_get", 12))
+ {
+ ret = GLEW_QCOM_extended_get;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_extended_get2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extended_get2", 13))
+ {
+ ret = GLEW_QCOM_extended_get2;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_frame_extrapolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"frame_extrapolation", 19))
+ {
+ ret = GLEW_QCOM_frame_extrapolation;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_framebuffer_foveated
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_foveated", 20))
+ {
+ ret = GLEW_QCOM_framebuffer_foveated;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_motion_estimation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"motion_estimation", 17))
+ {
+ ret = GLEW_QCOM_motion_estimation;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_perfmon_global_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"perfmon_global_mode", 19))
+ {
+ ret = GLEW_QCOM_perfmon_global_mode;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_render_shared_exponent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_shared_exponent", 22))
+ {
+ ret = GLEW_QCOM_render_shared_exponent;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch_noncoherent", 36))
+ {
+ ret = GLEW_QCOM_shader_framebuffer_fetch_noncoherent;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_framebuffer_fetch_rate", 29))
+ {
+ ret = GLEW_QCOM_shader_framebuffer_fetch_rate;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_shading_rate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_rate", 12))
+ {
+ ret = GLEW_QCOM_shading_rate;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_texture_foveated
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_foveated", 16))
+ {
+ ret = GLEW_QCOM_texture_foveated;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_texture_foveated2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_foveated2", 17))
+ {
+ ret = GLEW_QCOM_texture_foveated2;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_foveated_subsampled_layout", 34))
+ {
+ ret = GLEW_QCOM_texture_foveated_subsampled_layout;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_tiled_rendering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tiled_rendering", 15))
+ {
+ ret = GLEW_QCOM_tiled_rendering;
+ continue;
+ }
+#endif
+#ifdef GL_QCOM_writeonly_rendering
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"writeonly_rendering", 19))
+ {
+ ret = GLEW_QCOM_writeonly_rendering;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"REGAL_", 6))
+ {
+#ifdef GL_REGAL_ES1_0_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES1_0_compatibility", 19))
+ {
+ ret = GLEW_REGAL_ES1_0_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_ES1_1_compatibility
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ES1_1_compatibility", 19))
+ {
+ ret = GLEW_REGAL_ES1_1_compatibility;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_enable
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"enable", 6))
+ {
+ ret = GLEW_REGAL_enable;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_error_string
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"error_string", 12))
+ {
+ ret = GLEW_REGAL_error_string;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_extension_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extension_query", 15))
+ {
+ ret = GLEW_REGAL_extension_query;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_log
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"log", 3))
+ {
+ ret = GLEW_REGAL_log;
+ continue;
+ }
+#endif
+#ifdef GL_REGAL_proc_address
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"proc_address", 12))
+ {
+ ret = GLEW_REGAL_proc_address;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"REND_", 5))
+ {
+#ifdef GL_REND_screen_coordinates
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"screen_coordinates", 18))
+ {
+ ret = GLEW_REND_screen_coordinates;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"S3_", 3))
+ {
+#ifdef GL_S3_s3tc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"s3tc", 4))
+ {
+ ret = GLEW_S3_s3tc;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIS_", 5))
+ {
+#ifdef GL_SGIS_clip_band_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_band_hint", 14))
+ {
+ ret = GLEW_SGIS_clip_band_hint;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_color_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_range", 11))
+ {
+ ret = GLEW_SGIS_color_range;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_detail_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"detail_texture", 14))
+ {
+ ret = GLEW_SGIS_detail_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_fog_function
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_function", 12))
+ {
+ ret = GLEW_SGIS_fog_function;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_generate_mipmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"generate_mipmap", 15))
+ {
+ ret = GLEW_SGIS_generate_mipmap;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_line_texgen
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"line_texgen", 11))
+ {
+ ret = GLEW_SGIS_line_texgen;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLEW_SGIS_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_multitexture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multitexture", 12))
+ {
+ ret = GLEW_SGIS_multitexture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_pixel_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture", 13))
+ {
+ ret = GLEW_SGIS_pixel_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_point_line_texgen
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_line_texgen", 17))
+ {
+ ret = GLEW_SGIS_point_line_texgen;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_shared_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shared_multisample", 18))
+ {
+ ret = GLEW_SGIS_shared_multisample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_sharpen_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sharpen_texture", 15))
+ {
+ ret = GLEW_SGIS_sharpen_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture4D
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture4D", 9))
+ {
+ ret = GLEW_SGIS_texture4D;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_border_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
+ {
+ ret = GLEW_SGIS_texture_border_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_edge_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_edge_clamp", 18))
+ {
+ ret = GLEW_SGIS_texture_edge_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_filter4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter4", 15))
+ {
+ ret = GLEW_SGIS_texture_filter4;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod", 11))
+ {
+ ret = GLEW_SGIS_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_SGIS_texture_select
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_select", 14))
+ {
+ ret = GLEW_SGIS_texture_select;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIX_", 5))
+ {
+#ifdef GL_SGIX_async
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"async", 5))
+ {
+ ret = GLEW_SGIX_async;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_async_histogram
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"async_histogram", 15))
+ {
+ ret = GLEW_SGIX_async_histogram;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_async_pixel
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"async_pixel", 11))
+ {
+ ret = GLEW_SGIX_async_pixel;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_bali_g_instruments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bali_g_instruments", 18))
+ {
+ ret = GLEW_SGIX_bali_g_instruments;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_bali_r_instruments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bali_r_instruments", 18))
+ {
+ ret = GLEW_SGIX_bali_r_instruments;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_bali_timer_instruments
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bali_timer_instruments", 22))
+ {
+ ret = GLEW_SGIX_bali_timer_instruments;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_blend_alpha_minmax
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_alpha_minmax", 18))
+ {
+ ret = GLEW_SGIX_blend_alpha_minmax;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_blend_cadd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_cadd", 10))
+ {
+ ret = GLEW_SGIX_blend_cadd;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_blend_cmultiply
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_cmultiply", 15))
+ {
+ ret = GLEW_SGIX_blend_cmultiply;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_calligraphic_fragment
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"calligraphic_fragment", 21))
+ {
+ ret = GLEW_SGIX_calligraphic_fragment;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_clipmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clipmap", 7))
+ {
+ ret = GLEW_SGIX_clipmap;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_color_matrix_accuracy
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_matrix_accuracy", 21))
+ {
+ ret = GLEW_SGIX_color_matrix_accuracy;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_color_table_index_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_table_index_mode", 22))
+ {
+ ret = GLEW_SGIX_color_table_index_mode;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_complex_polar
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"complex_polar", 13))
+ {
+ ret = GLEW_SGIX_complex_polar;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_convolution_accuracy
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_accuracy", 20))
+ {
+ ret = GLEW_SGIX_convolution_accuracy;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_cube_map
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cube_map", 8))
+ {
+ ret = GLEW_SGIX_cube_map;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_cylinder_texgen
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cylinder_texgen", 15))
+ {
+ ret = GLEW_SGIX_cylinder_texgen;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_datapipe
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"datapipe", 8))
+ {
+ ret = GLEW_SGIX_datapipe;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_decimation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"decimation", 10))
+ {
+ ret = GLEW_SGIX_decimation;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_depth_pass_instrument
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_pass_instrument", 21))
+ {
+ ret = GLEW_SGIX_depth_pass_instrument;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13))
+ {
+ ret = GLEW_SGIX_depth_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_dvc
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"dvc", 3))
+ {
+ ret = GLEW_SGIX_dvc;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_flush_raster
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"flush_raster", 12))
+ {
+ ret = GLEW_SGIX_flush_raster;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_blend
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_blend", 9))
+ {
+ ret = GLEW_SGIX_fog_blend;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_factor_to_alpha
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_factor_to_alpha", 19))
+ {
+ ret = GLEW_SGIX_fog_factor_to_alpha;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_layers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_layers", 10))
+ {
+ ret = GLEW_SGIX_fog_layers;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_offset
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_offset", 10))
+ {
+ ret = GLEW_SGIX_fog_offset;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_patchy
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_patchy", 10))
+ {
+ ret = GLEW_SGIX_fog_patchy;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_scale
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_scale", 9))
+ {
+ ret = GLEW_SGIX_fog_scale;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fog_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_texture", 11))
+ {
+ ret = GLEW_SGIX_fog_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fragment_lighting_space
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_lighting_space", 23))
+ {
+ ret = GLEW_SGIX_fragment_lighting_space;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fragment_specular_lighting
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_specular_lighting", 26))
+ {
+ ret = GLEW_SGIX_fragment_specular_lighting;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_fragments_instrument
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragments_instrument", 20))
+ {
+ ret = GLEW_SGIX_fragments_instrument;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_framezoom
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framezoom", 9))
+ {
+ ret = GLEW_SGIX_framezoom;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_icc_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"icc_texture", 11))
+ {
+ ret = GLEW_SGIX_icc_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_igloo_interface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"igloo_interface", 15))
+ {
+ ret = GLEW_SGIX_igloo_interface;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_image_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_compression", 17))
+ {
+ ret = GLEW_SGIX_image_compression;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_impact_pixel_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"impact_pixel_texture", 20))
+ {
+ ret = GLEW_SGIX_impact_pixel_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_instrument_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"instrument_error", 16))
+ {
+ ret = GLEW_SGIX_instrument_error;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_interlace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace", 9))
+ {
+ ret = GLEW_SGIX_interlace;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_ir_instrument1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ir_instrument1", 14))
+ {
+ ret = GLEW_SGIX_ir_instrument1;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_line_quality_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"line_quality_hint", 17))
+ {
+ ret = GLEW_SGIX_line_quality_hint;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_list_priority
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"list_priority", 13))
+ {
+ ret = GLEW_SGIX_list_priority;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_mpeg1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mpeg1", 5))
+ {
+ ret = GLEW_SGIX_mpeg1;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_mpeg2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mpeg2", 5))
+ {
+ ret = GLEW_SGIX_mpeg2;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"nonlinear_lighting_pervertex", 28))
+ {
+ ret = GLEW_SGIX_nonlinear_lighting_pervertex;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_nurbs_eval
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"nurbs_eval", 10))
+ {
+ ret = GLEW_SGIX_nurbs_eval;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_occlusion_instrument
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_instrument", 20))
+ {
+ ret = GLEW_SGIX_occlusion_instrument;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_packed_6bytes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_6bytes", 13))
+ {
+ ret = GLEW_SGIX_packed_6bytes;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_pixel_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture", 13))
+ {
+ ret = GLEW_SGIX_pixel_texture;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_pixel_texture_bits
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture_bits", 18))
+ {
+ ret = GLEW_SGIX_pixel_texture_bits;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_pixel_texture_lod
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture_lod", 17))
+ {
+ ret = GLEW_SGIX_pixel_texture_lod;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_pixel_tiles
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_tiles", 11))
+ {
+ ret = GLEW_SGIX_pixel_tiles;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_polynomial_ffd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"polynomial_ffd", 14))
+ {
+ ret = GLEW_SGIX_polynomial_ffd;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_quad_mesh
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"quad_mesh", 9))
+ {
+ ret = GLEW_SGIX_quad_mesh;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_reference_plane
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"reference_plane", 15))
+ {
+ ret = GLEW_SGIX_reference_plane;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_resample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"resample", 8))
+ {
+ ret = GLEW_SGIX_resample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_scalebias_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scalebias_hint", 14))
+ {
+ ret = GLEW_SGIX_scalebias_hint;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_shadow
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow", 6))
+ {
+ ret = GLEW_SGIX_shadow;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_shadow_ambient
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_ambient", 14))
+ {
+ ret = GLEW_SGIX_shadow_ambient;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_slim
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"slim", 4))
+ {
+ ret = GLEW_SGIX_slim;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_spotlight_cutoff
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"spotlight_cutoff", 16))
+ {
+ ret = GLEW_SGIX_spotlight_cutoff;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_sprite
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sprite", 6))
+ {
+ ret = GLEW_SGIX_sprite;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_subdiv_patch
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"subdiv_patch", 12))
+ {
+ ret = GLEW_SGIX_subdiv_patch;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_subsample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"subsample", 9))
+ {
+ ret = GLEW_SGIX_subsample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_tag_sample_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"tag_sample_buffer", 17))
+ {
+ ret = GLEW_SGIX_tag_sample_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_add_env
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_add_env", 15))
+ {
+ ret = GLEW_SGIX_texture_add_env;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_coordinate_clamp
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_coordinate_clamp", 24))
+ {
+ ret = GLEW_SGIX_texture_coordinate_clamp;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_lod_bias
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod_bias", 16))
+ {
+ ret = GLEW_SGIX_texture_lod_bias;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mipmap_anisotropic", 26))
+ {
+ ret = GLEW_SGIX_texture_mipmap_anisotropic;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_multi_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_multi_buffer", 20))
+ {
+ ret = GLEW_SGIX_texture_multi_buffer;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_phase
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_phase", 13))
+ {
+ ret = GLEW_SGIX_texture_phase;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_range", 13))
+ {
+ ret = GLEW_SGIX_texture_range;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_scale_bias
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_scale_bias", 18))
+ {
+ ret = GLEW_SGIX_texture_scale_bias;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_texture_supersample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_supersample", 19))
+ {
+ ret = GLEW_SGIX_texture_supersample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_vector_ops
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vector_ops", 10))
+ {
+ ret = GLEW_SGIX_vector_ops;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_vertex_array_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19))
+ {
+ ret = GLEW_SGIX_vertex_array_object;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_vertex_preclip
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_preclip", 14))
+ {
+ ret = GLEW_SGIX_vertex_preclip;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_vertex_preclip_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_preclip_hint", 19))
+ {
+ ret = GLEW_SGIX_vertex_preclip_hint;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_ycrcb
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycrcb", 5))
+ {
+ ret = GLEW_SGIX_ycrcb;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_ycrcb_subsample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycrcb_subsample", 15))
+ {
+ ret = GLEW_SGIX_ycrcb_subsample;
+ continue;
+ }
+#endif
+#ifdef GL_SGIX_ycrcba
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycrcba", 6))
+ {
+ ret = GLEW_SGIX_ycrcba;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGI_", 4))
+ {
+#ifdef GL_SGI_color_matrix
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_matrix", 12))
+ {
+ ret = GLEW_SGI_color_matrix;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_color_table
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_table", 11))
+ {
+ ret = GLEW_SGI_color_table;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_complex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"complex", 7))
+ {
+ ret = GLEW_SGI_complex;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_complex_type
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"complex_type", 12))
+ {
+ ret = GLEW_SGI_complex_type;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_fft
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fft", 3))
+ {
+ ret = GLEW_SGI_fft;
+ continue;
+ }
+#endif
+#ifdef GL_SGI_texture_color_table
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_color_table", 19))
+ {
+ ret = GLEW_SGI_texture_color_table;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUNX_", 5))
+ {
+#ifdef GL_SUNX_constant_data
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"constant_data", 13))
+ {
+ ret = GLEW_SUNX_constant_data;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUN_", 4))
+ {
+#ifdef GL_SUN_convolution_border_modes
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_border_modes", 24))
+ {
+ ret = GLEW_SUN_convolution_border_modes;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_global_alpha
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"global_alpha", 12))
+ {
+ ret = GLEW_SUN_global_alpha;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_mesh_array
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mesh_array", 10))
+ {
+ ret = GLEW_SUN_mesh_array;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_read_video_pixels
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_video_pixels", 17))
+ {
+ ret = GLEW_SUN_read_video_pixels;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_slice_accum
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"slice_accum", 11))
+ {
+ ret = GLEW_SUN_slice_accum;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_triangle_list
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"triangle_list", 13))
+ {
+ ret = GLEW_SUN_triangle_list;
+ continue;
+ }
+#endif
+#ifdef GL_SUN_vertex
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex", 6))
+ {
+ ret = GLEW_SUN_vertex;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"VIV_", 4))
+ {
+#ifdef GL_VIV_shader_binary
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_binary", 13))
+ {
+ ret = GLEW_VIV_shader_binary;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"WIN_", 4))
+ {
+#ifdef GL_WIN_phong_shading
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"phong_shading", 13))
+ {
+ ret = GLEW_WIN_phong_shading;
+ continue;
+ }
+#endif
+#ifdef GL_WIN_scene_markerXXX
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scene_markerXXX", 15))
+ {
+ ret = GLEW_WIN_scene_markerXXX;
+ continue;
+ }
+#endif
+#ifdef GL_WIN_specular_fog
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"specular_fog", 12))
+ {
+ ret = GLEW_WIN_specular_fog;
+ continue;
+ }
+#endif
+#ifdef GL_WIN_swap_hint
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_hint", 9))
+ {
+ ret = GLEW_WIN_swap_hint;
+ continue;
+ }
+#endif
+ }
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
+
+GLboolean GLEWAPIENTRY wglewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if (_glewStrSame1(&pos, &len, (const GLubyte*)"WGL_", 4))
+ {
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5))
+ {
+#ifdef WGL_3DFX_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = WGLEW_3DFX_multisample;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DL_", 4))
+ {
+#ifdef WGL_3DL_stereo_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stereo_control", 14))
+ {
+ ret = WGLEW_3DL_stereo_control;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"AMD_", 4))
+ {
+#ifdef WGL_AMD_gpu_association
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_association", 15))
+ {
+ ret = WGLEW_AMD_gpu_association;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4))
+ {
+#ifdef WGL_ARB_buffer_region
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_region", 13))
+ {
+ ret = WGLEW_ARB_buffer_region;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_context_flush_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_flush_control", 21))
+ {
+ ret = WGLEW_ARB_context_flush_control;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_create_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context", 14))
+ {
+ ret = WGLEW_ARB_create_context;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_create_context_no_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_no_error", 23))
+ {
+ ret = WGLEW_ARB_create_context_no_error;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_create_context_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_profile", 22))
+ {
+ ret = WGLEW_ARB_create_context_profile;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_create_context_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_robustness", 25))
+ {
+ ret = WGLEW_ARB_create_context_robustness;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_extensions_string
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extensions_string", 17))
+ {
+ ret = WGLEW_ARB_extensions_string;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = WGLEW_ARB_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_make_current_read
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17))
+ {
+ ret = WGLEW_ARB_make_current_read;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = WGLEW_ARB_multisample;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_pbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7))
+ {
+ ret = WGLEW_ARB_pbuffer;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_pixel_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format", 12))
+ {
+ ret = WGLEW_ARB_pixel_format;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_pixel_format_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18))
+ {
+ ret = WGLEW_ARB_pixel_format_float;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_render_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture", 14))
+ {
+ ret = WGLEW_ARB_render_texture;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_robustness_application_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_application_isolation", 32))
+ {
+ ret = WGLEW_ARB_robustness_application_isolation;
+ continue;
+ }
+#endif
+#ifdef WGL_ARB_robustness_share_group_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_share_group_isolation", 32))
+ {
+ ret = WGLEW_ARB_robustness_share_group_isolation;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4))
+ {
+#ifdef WGL_ATI_pixel_format_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18))
+ {
+ ret = WGLEW_ATI_pixel_format_float;
+ continue;
+ }
+#endif
+#ifdef WGL_ATI_render_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture_rectangle", 24))
+ {
+ ret = WGLEW_ATI_render_texture_rectangle;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4))
+ {
+#ifdef WGL_EXT_colorspace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"colorspace", 10))
+ {
+ ret = WGLEW_EXT_colorspace;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_create_context_es2_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_es2_profile", 26))
+ {
+ ret = WGLEW_EXT_create_context_es2_profile;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_create_context_es_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_es_profile", 25))
+ {
+ ret = WGLEW_EXT_create_context_es_profile;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_depth_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_float", 11))
+ {
+ ret = WGLEW_EXT_depth_float;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_display_color_table
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"display_color_table", 19))
+ {
+ ret = WGLEW_EXT_display_color_table;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_extensions_string
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"extensions_string", 17))
+ {
+ ret = WGLEW_EXT_extensions_string;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = WGLEW_EXT_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_make_current_read
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17))
+ {
+ ret = WGLEW_EXT_make_current_read;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = WGLEW_EXT_multisample;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_pbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7))
+ {
+ ret = WGLEW_EXT_pbuffer;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_pixel_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format", 12))
+ {
+ ret = WGLEW_EXT_pixel_format;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_pixel_format_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_packed_float", 25))
+ {
+ ret = WGLEW_EXT_pixel_format_packed_float;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_swap_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12))
+ {
+ ret = WGLEW_EXT_swap_control;
+ continue;
+ }
+#endif
+#ifdef WGL_EXT_swap_control_tear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control_tear", 17))
+ {
+ ret = WGLEW_EXT_swap_control_tear;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"I3D_", 4))
+ {
+#ifdef WGL_I3D_digital_video_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"digital_video_control", 21))
+ {
+ ret = WGLEW_I3D_digital_video_control;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_gamma
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gamma", 5))
+ {
+ ret = WGLEW_I3D_gamma;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_genlock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"genlock", 7))
+ {
+ ret = WGLEW_I3D_genlock;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_image_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_buffer", 12))
+ {
+ ret = WGLEW_I3D_image_buffer;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_swap_frame_lock
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_frame_lock", 15))
+ {
+ ret = WGLEW_I3D_swap_frame_lock;
+ continue;
+ }
+#endif
+#ifdef WGL_I3D_swap_frame_usage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_frame_usage", 16))
+ {
+ ret = WGLEW_I3D_swap_frame_usage;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3))
+ {
+#ifdef WGL_NV_DX_interop
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"DX_interop", 10))
+ {
+ ret = WGLEW_NV_DX_interop;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_DX_interop2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"DX_interop2", 11))
+ {
+ ret = WGLEW_NV_DX_interop2;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = WGLEW_NV_copy_image;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_delay_before_swap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"delay_before_swap", 17))
+ {
+ ret = WGLEW_NV_delay_before_swap;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_float_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12))
+ {
+ ret = WGLEW_NV_float_buffer;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_gpu_affinity
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_affinity", 12))
+ {
+ ret = WGLEW_NV_gpu_affinity;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_multigpu_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multigpu_context", 16))
+ {
+ ret = WGLEW_NV_multigpu_context;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_multisample_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_coverage", 20))
+ {
+ ret = WGLEW_NV_multisample_coverage;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_present_video
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13))
+ {
+ ret = WGLEW_NV_present_video;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_render_depth_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_depth_texture", 20))
+ {
+ ret = WGLEW_NV_render_depth_texture;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_render_texture_rectangle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture_rectangle", 24))
+ {
+ ret = WGLEW_NV_render_texture_rectangle;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_swap_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10))
+ {
+ ret = WGLEW_NV_swap_group;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_vertex_array_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18))
+ {
+ ret = WGLEW_NV_vertex_array_range;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_video_capture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_capture", 13))
+ {
+ ret = WGLEW_NV_video_capture;
+ continue;
+ }
+#endif
+#ifdef WGL_NV_video_output
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_output", 12))
+ {
+ ret = WGLEW_NV_video_output;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4))
+ {
+#ifdef WGL_OML_sync_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control", 12))
+ {
+ ret = WGLEW_OML_sync_control;
+ continue;
+ }
+#endif
+ }
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#elif !defined(GLEW_OSMESA) && !defined(GLEW_EGL) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+
+GLboolean glxewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if(_glewStrSame1(&pos, &len, (const GLubyte*)"GLX_", 4))
+ {
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"VERSION_", 8))
+ {
+#ifdef GLX_VERSION_1_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2", 3))
+ {
+ ret = GLXEW_VERSION_1_2;
+ continue;
+ }
+#endif
+#ifdef GLX_VERSION_1_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_3", 3))
+ {
+ ret = GLXEW_VERSION_1_3;
+ continue;
+ }
+#endif
+#ifdef GLX_VERSION_1_4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_4", 3))
+ {
+ ret = GLXEW_VERSION_1_4;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5))
+ {
+#ifdef GLX_3DFX_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLXEW_3DFX_multisample;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"AMD_", 4))
+ {
+#ifdef GLX_AMD_gpu_association
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_association", 15))
+ {
+ ret = GLXEW_AMD_gpu_association;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4))
+ {
+#ifdef GLX_ARB_context_flush_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_flush_control", 21))
+ {
+ ret = GLXEW_ARB_context_flush_control;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_create_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context", 14))
+ {
+ ret = GLXEW_ARB_create_context;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_create_context_no_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_no_error", 23))
+ {
+ ret = GLXEW_ARB_create_context_no_error;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_create_context_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_profile", 22))
+ {
+ ret = GLXEW_ARB_create_context_profile;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_create_context_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_robustness", 25))
+ {
+ ret = GLXEW_ARB_create_context_robustness;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_fbconfig_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig_float", 14))
+ {
+ ret = GLXEW_ARB_fbconfig_float;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = GLXEW_ARB_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_get_proc_address
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_proc_address", 16))
+ {
+ ret = GLXEW_ARB_get_proc_address;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLXEW_ARB_multisample;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_robustness_application_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_application_isolation", 32))
+ {
+ ret = GLXEW_ARB_robustness_application_isolation;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_robustness_share_group_isolation
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_share_group_isolation", 32))
+ {
+ ret = GLXEW_ARB_robustness_share_group_isolation;
+ continue;
+ }
+#endif
+#ifdef GLX_ARB_vertex_buffer_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_object", 20))
+ {
+ ret = GLXEW_ARB_vertex_buffer_object;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4))
+ {
+#ifdef GLX_ATI_pixel_format_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18))
+ {
+ ret = GLXEW_ATI_pixel_format_float;
+ continue;
+ }
+#endif
+#ifdef GLX_ATI_render_texture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture", 14))
+ {
+ ret = GLXEW_ATI_render_texture;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4))
+ {
+#ifdef GLX_EXT_buffer_age
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_age", 10))
+ {
+ ret = GLXEW_EXT_buffer_age;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_context_priority
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_priority", 16))
+ {
+ ret = GLXEW_EXT_context_priority;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_create_context_es2_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_es2_profile", 26))
+ {
+ ret = GLXEW_EXT_create_context_es2_profile;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_create_context_es_profile
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_es_profile", 25))
+ {
+ ret = GLXEW_EXT_create_context_es_profile;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_fbconfig_packed_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig_packed_float", 21))
+ {
+ ret = GLXEW_EXT_fbconfig_packed_float;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_framebuffer_sRGB
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16))
+ {
+ ret = GLXEW_EXT_framebuffer_sRGB;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_get_drawable_type
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_drawable_type", 17))
+ {
+ ret = GLXEW_EXT_get_drawable_type;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_import_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"import_context", 14))
+ {
+ ret = GLXEW_EXT_import_context;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_libglvnd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"libglvnd", 8))
+ {
+ ret = GLXEW_EXT_libglvnd;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_no_config_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"no_config_context", 17))
+ {
+ ret = GLXEW_EXT_no_config_context;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_scene_marker
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"scene_marker", 12))
+ {
+ ret = GLXEW_EXT_scene_marker;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_stereo_tree
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stereo_tree", 11))
+ {
+ ret = GLXEW_EXT_stereo_tree;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_swap_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12))
+ {
+ ret = GLXEW_EXT_swap_control;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_swap_control_tear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control_tear", 17))
+ {
+ ret = GLXEW_EXT_swap_control_tear;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_texture_from_pixmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_from_pixmap", 19))
+ {
+ ret = GLXEW_EXT_texture_from_pixmap;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_visual_info
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_info", 11))
+ {
+ ret = GLXEW_EXT_visual_info;
+ continue;
+ }
+#endif
+#ifdef GLX_EXT_visual_rating
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_rating", 13))
+ {
+ ret = GLXEW_EXT_visual_rating;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"INTEL_", 6))
+ {
+#ifdef GLX_INTEL_swap_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_event", 10))
+ {
+ ret = GLXEW_INTEL_swap_event;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5))
+ {
+#ifdef GLX_MESA_agp_offset
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"agp_offset", 10))
+ {
+ ret = GLXEW_MESA_agp_offset;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_copy_sub_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_sub_buffer", 15))
+ {
+ ret = GLXEW_MESA_copy_sub_buffer;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_pixmap_colormap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixmap_colormap", 15))
+ {
+ ret = GLXEW_MESA_pixmap_colormap;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_query_renderer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_renderer", 14))
+ {
+ ret = GLXEW_MESA_query_renderer;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_release_buffers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"release_buffers", 15))
+ {
+ ret = GLXEW_MESA_release_buffers;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_set_3dfx_mode
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"set_3dfx_mode", 13))
+ {
+ ret = GLXEW_MESA_set_3dfx_mode;
+ continue;
+ }
+#endif
+#ifdef GLX_MESA_swap_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12))
+ {
+ ret = GLXEW_MESA_swap_control;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3))
+ {
+#ifdef GLX_NV_copy_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_buffer", 11))
+ {
+ ret = GLXEW_NV_copy_buffer;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_copy_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_image", 10))
+ {
+ ret = GLXEW_NV_copy_image;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_delay_before_swap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"delay_before_swap", 17))
+ {
+ ret = GLXEW_NV_delay_before_swap;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_float_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12))
+ {
+ ret = GLXEW_NV_float_buffer;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_multigpu_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multigpu_context", 16))
+ {
+ ret = GLXEW_NV_multigpu_context;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_multisample_coverage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_coverage", 20))
+ {
+ ret = GLXEW_NV_multisample_coverage;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_present_video
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13))
+ {
+ ret = GLXEW_NV_present_video;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_robustness_video_memory_purge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_video_memory_purge", 29))
+ {
+ ret = GLXEW_NV_robustness_video_memory_purge;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_swap_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10))
+ {
+ ret = GLXEW_NV_swap_group;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_vertex_array_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18))
+ {
+ ret = GLXEW_NV_vertex_array_range;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_video_capture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_capture", 13))
+ {
+ ret = GLXEW_NV_video_capture;
+ continue;
+ }
+#endif
+#ifdef GLX_NV_video_out
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_out", 9))
+ {
+ ret = GLXEW_NV_video_out;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4))
+ {
+#ifdef GLX_OML_swap_method
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_method", 11))
+ {
+ ret = GLXEW_OML_swap_method;
+ continue;
+ }
+#endif
+#ifdef GLX_OML_sync_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control", 12))
+ {
+ ret = GLXEW_OML_sync_control;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIS_", 5))
+ {
+#ifdef GLX_SGIS_blended_overlay
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blended_overlay", 15))
+ {
+ ret = GLXEW_SGIS_blended_overlay;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIS_color_range
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_range", 11))
+ {
+ ret = GLXEW_SGIS_color_range;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIS_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11))
+ {
+ ret = GLXEW_SGIS_multisample;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIS_shared_multisample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"shared_multisample", 18))
+ {
+ ret = GLXEW_SGIS_shared_multisample;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIX_", 5))
+ {
+#ifdef GLX_SGIX_fbconfig
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig", 8))
+ {
+ ret = GLXEW_SGIX_fbconfig;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_hyperpipe
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"hyperpipe", 9))
+ {
+ ret = GLXEW_SGIX_hyperpipe;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_pbuffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7))
+ {
+ ret = GLXEW_SGIX_pbuffer;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_swap_barrier
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_barrier", 12))
+ {
+ ret = GLXEW_SGIX_swap_barrier;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_swap_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10))
+ {
+ ret = GLXEW_SGIX_swap_group;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_video_resize
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_resize", 12))
+ {
+ ret = GLXEW_SGIX_video_resize;
+ continue;
+ }
+#endif
+#ifdef GLX_SGIX_visual_select_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_select_group", 19))
+ {
+ ret = GLXEW_SGIX_visual_select_group;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGI_", 4))
+ {
+#ifdef GLX_SGI_cushion
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cushion", 7))
+ {
+ ret = GLXEW_SGI_cushion;
+ continue;
+ }
+#endif
+#ifdef GLX_SGI_make_current_read
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17))
+ {
+ ret = GLXEW_SGI_make_current_read;
+ continue;
+ }
+#endif
+#ifdef GLX_SGI_swap_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12))
+ {
+ ret = GLXEW_SGI_swap_control;
+ continue;
+ }
+#endif
+#ifdef GLX_SGI_video_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_sync", 10))
+ {
+ ret = GLXEW_SGI_video_sync;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUN_", 4))
+ {
+#ifdef GLX_SUN_get_transparent_index
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_transparent_index", 21))
+ {
+ ret = GLXEW_SUN_get_transparent_index;
+ continue;
+ }
+#endif
+#ifdef GLX_SUN_video_resize
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_resize", 12))
+ {
+ ret = GLXEW_SUN_video_resize;
+ continue;
+ }
+#endif
+ }
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#elif defined(GLEW_EGL)
+
+GLboolean eglewIsSupported (const char* name)
+{
+ const GLubyte* pos = (const GLubyte*)name;
+ GLuint len = _glewStrLen(pos);
+ GLboolean ret = GL_TRUE;
+ while (ret && len > 0)
+ {
+ if(_glewStrSame1(&pos, &len, (const GLubyte*)"EGL_", 4))
+ {
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"VERSION_", 8))
+ {
+#ifdef EGL_VERSION_1_0
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_0", 3))
+ {
+ ret = EGLEW_VERSION_1_0;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_1
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_1", 3))
+ {
+ ret = EGLEW_VERSION_1_1;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2", 3))
+ {
+ ret = EGLEW_VERSION_1_2;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_3", 3))
+ {
+ ret = EGLEW_VERSION_1_3;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_4
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_4", 3))
+ {
+ ret = EGLEW_VERSION_1_4;
+ continue;
+ }
+#endif
+#ifdef EGL_VERSION_1_5
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_5", 3))
+ {
+ ret = EGLEW_VERSION_1_5;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ANDROID_", 8))
+ {
+#ifdef EGL_ANDROID_GLES_layers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"GLES_layers", 11))
+ {
+ ret = EGLEW_ANDROID_GLES_layers;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_blob_cache
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"blob_cache", 10))
+ {
+ ret = EGLEW_ANDROID_blob_cache;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_create_native_client_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_native_client_buffer", 27))
+ {
+ ret = EGLEW_ANDROID_create_native_client_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_framebuffer_target
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_target", 18))
+ {
+ ret = EGLEW_ANDROID_framebuffer_target;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_front_buffer_auto_refresh
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"front_buffer_auto_refresh", 25))
+ {
+ ret = EGLEW_ANDROID_front_buffer_auto_refresh;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_get_frame_timestamps
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_frame_timestamps", 20))
+ {
+ ret = EGLEW_ANDROID_get_frame_timestamps;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_get_native_client_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_native_client_buffer", 24))
+ {
+ ret = EGLEW_ANDROID_get_native_client_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_image_native_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_native_buffer", 19))
+ {
+ ret = EGLEW_ANDROID_image_native_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_native_fence_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"native_fence_sync", 17))
+ {
+ ret = EGLEW_ANDROID_native_fence_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_presentation_time
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"presentation_time", 17))
+ {
+ ret = EGLEW_ANDROID_presentation_time;
+ continue;
+ }
+#endif
+#ifdef EGL_ANDROID_recordable
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"recordable", 10))
+ {
+ ret = EGLEW_ANDROID_recordable;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ANGLE_", 6))
+ {
+#ifdef EGL_ANGLE_d3d_share_handle_client_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"d3d_share_handle_client_buffer", 30))
+ {
+ ret = EGLEW_ANGLE_d3d_share_handle_client_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_device_d3d
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_d3d", 10))
+ {
+ ret = EGLEW_ANGLE_device_d3d;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_query_surface_pointer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_surface_pointer", 21))
+ {
+ ret = EGLEW_ANGLE_query_surface_pointer;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surface_d3d_texture_2d_share_handle", 35))
+ {
+ ret = EGLEW_ANGLE_surface_d3d_texture_2d_share_handle;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_sync_control_rate
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control_rate", 17))
+ {
+ ret = EGLEW_ANGLE_sync_control_rate;
+ continue;
+ }
+#endif
+#ifdef EGL_ANGLE_window_fixed_size
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_fixed_size", 17))
+ {
+ ret = EGLEW_ANGLE_window_fixed_size;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARM_", 4))
+ {
+#ifdef EGL_ARM_image_format
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_format", 12))
+ {
+ ret = EGLEW_ARM_image_format;
+ continue;
+ }
+#endif
+#ifdef EGL_ARM_implicit_external_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"implicit_external_sync", 22))
+ {
+ ret = EGLEW_ARM_implicit_external_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_ARM_pixmap_multisample_discard
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixmap_multisample_discard", 26))
+ {
+ ret = EGLEW_ARM_pixmap_multisample_discard;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4))
+ {
+#ifdef EGL_EXT_bind_to_front
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bind_to_front", 13))
+ {
+ ret = EGLEW_EXT_bind_to_front;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_buffer_age
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_age", 10))
+ {
+ ret = EGLEW_EXT_buffer_age;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_client_extensions
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_extensions", 17))
+ {
+ ret = EGLEW_EXT_client_extensions;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_client_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_sync", 11))
+ {
+ ret = EGLEW_EXT_client_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_compositor
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"compositor", 10))
+ {
+ ret = EGLEW_EXT_compositor;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_config_select_group
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"config_select_group", 19))
+ {
+ ret = EGLEW_EXT_config_select_group;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_create_context_robustness
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_robustness", 25))
+ {
+ ret = EGLEW_EXT_create_context_robustness;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_base
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_base", 11))
+ {
+ ret = EGLEW_EXT_device_base;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_drm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_drm", 10))
+ {
+ ret = EGLEW_EXT_device_drm;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_drm_render_node
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_drm_render_node", 22))
+ {
+ ret = EGLEW_EXT_device_drm_render_node;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_enumeration
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_enumeration", 18))
+ {
+ ret = EGLEW_EXT_device_enumeration;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_openwf
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_openwf", 13))
+ {
+ ret = EGLEW_EXT_device_openwf;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_persistent_id
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_persistent_id", 20))
+ {
+ ret = EGLEW_EXT_device_persistent_id;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_query", 12))
+ {
+ ret = EGLEW_EXT_device_query;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_device_query_name
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_query_name", 17))
+ {
+ ret = EGLEW_EXT_device_query_name;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_explicit_device
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_device", 15))
+ {
+ ret = EGLEW_EXT_explicit_device;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_bt2020_linear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_bt2020_linear", 27))
+ {
+ ret = EGLEW_EXT_gl_colorspace_bt2020_linear;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_bt2020_pq
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_bt2020_pq", 23))
+ {
+ ret = EGLEW_EXT_gl_colorspace_bt2020_pq;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_display_p3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_display_p3", 24))
+ {
+ ret = EGLEW_EXT_gl_colorspace_display_p3;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_display_p3_linear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_display_p3_linear", 31))
+ {
+ ret = EGLEW_EXT_gl_colorspace_display_p3_linear;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_display_p3_passthrough
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_display_p3_passthrough", 36))
+ {
+ ret = EGLEW_EXT_gl_colorspace_display_p3_passthrough;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_scrgb
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_scrgb", 19))
+ {
+ ret = EGLEW_EXT_gl_colorspace_scrgb;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_gl_colorspace_scrgb_linear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace_scrgb_linear", 26))
+ {
+ ret = EGLEW_EXT_gl_colorspace_scrgb_linear;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_image_dma_buf_import
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_dma_buf_import", 20))
+ {
+ ret = EGLEW_EXT_image_dma_buf_import;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_dma_buf_import_modifiers", 30))
+ {
+ ret = EGLEW_EXT_image_dma_buf_import_modifiers;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_image_gl_colorspace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_gl_colorspace", 19))
+ {
+ ret = EGLEW_EXT_image_gl_colorspace;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_image_implicit_sync_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_implicit_sync_control", 27))
+ {
+ ret = EGLEW_EXT_image_implicit_sync_control;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_multiview_window
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"multiview_window", 16))
+ {
+ ret = EGLEW_EXT_multiview_window;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_output_base
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"output_base", 11))
+ {
+ ret = EGLEW_EXT_output_base;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_output_drm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"output_drm", 10))
+ {
+ ret = EGLEW_EXT_output_drm;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_output_openwf
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"output_openwf", 13))
+ {
+ ret = EGLEW_EXT_output_openwf;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_pixel_format_float
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18))
+ {
+ ret = EGLEW_EXT_pixel_format_float;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_base
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_base", 13))
+ {
+ ret = EGLEW_EXT_platform_base;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_device
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_device", 15))
+ {
+ ret = EGLEW_EXT_platform_device;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_wayland
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_wayland", 16))
+ {
+ ret = EGLEW_EXT_platform_wayland;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_x11
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_x11", 12))
+ {
+ ret = EGLEW_EXT_platform_x11;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_platform_xcb
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_xcb", 12))
+ {
+ ret = EGLEW_EXT_platform_xcb;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_present_opaque
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_opaque", 14))
+ {
+ ret = EGLEW_EXT_present_opaque;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_protected_content
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"protected_content", 17))
+ {
+ ret = EGLEW_EXT_protected_content;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_protected_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"protected_surface", 17))
+ {
+ ret = EGLEW_EXT_protected_surface;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_stream_consumer_egloutput
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_egloutput", 25))
+ {
+ ret = EGLEW_EXT_stream_consumer_egloutput;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_surface_CTA861_3_metadata
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surface_CTA861_3_metadata", 25))
+ {
+ ret = EGLEW_EXT_surface_CTA861_3_metadata;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_surface_SMPTE2086_metadata
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surface_SMPTE2086_metadata", 26))
+ {
+ ret = EGLEW_EXT_surface_SMPTE2086_metadata;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_surface_compression
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surface_compression", 19))
+ {
+ ret = EGLEW_EXT_surface_compression;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_swap_buffers_with_damage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_buffers_with_damage", 24))
+ {
+ ret = EGLEW_EXT_swap_buffers_with_damage;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_sync_reuse
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_reuse", 10))
+ {
+ ret = EGLEW_EXT_sync_reuse;
+ continue;
+ }
+#endif
+#ifdef EGL_EXT_yuv_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"yuv_surface", 11))
+ {
+ ret = EGLEW_EXT_yuv_surface;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"HI_", 3))
+ {
+#ifdef EGL_HI_clientpixmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"clientpixmap", 12))
+ {
+ ret = EGLEW_HI_clientpixmap;
+ continue;
+ }
+#endif
+#ifdef EGL_HI_colorformats
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"colorformats", 12))
+ {
+ ret = EGLEW_HI_colorformats;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"IMG_", 4))
+ {
+#ifdef EGL_IMG_context_priority
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_priority", 16))
+ {
+ ret = EGLEW_IMG_context_priority;
+ continue;
+ }
+#endif
+#ifdef EGL_IMG_image_plane_attribs
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_plane_attribs", 19))
+ {
+ ret = EGLEW_IMG_image_plane_attribs;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"KHR_", 4))
+ {
+#ifdef EGL_KHR_cl_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cl_event", 8))
+ {
+ ret = EGLEW_KHR_cl_event;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_cl_event2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cl_event2", 9))
+ {
+ ret = EGLEW_KHR_cl_event2;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_client_get_all_proc_addresses
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_get_all_proc_addresses", 29))
+ {
+ ret = EGLEW_KHR_client_get_all_proc_addresses;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_config_attribs
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"config_attribs", 14))
+ {
+ ret = EGLEW_KHR_config_attribs;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_context_flush_control
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_flush_control", 21))
+ {
+ ret = EGLEW_KHR_context_flush_control;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_create_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context", 14))
+ {
+ ret = EGLEW_KHR_create_context;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_create_context_no_error
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context_no_error", 23))
+ {
+ ret = EGLEW_KHR_create_context_no_error;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_debug
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"debug", 5))
+ {
+ ret = EGLEW_KHR_debug;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_display_reference
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"display_reference", 17))
+ {
+ ret = EGLEW_KHR_display_reference;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_fence_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"fence_sync", 10))
+ {
+ ret = EGLEW_KHR_fence_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_get_all_proc_addresses
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_all_proc_addresses", 22))
+ {
+ ret = EGLEW_KHR_get_all_proc_addresses;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_colorspace
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_colorspace", 13))
+ {
+ ret = EGLEW_KHR_gl_colorspace;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_renderbuffer_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_renderbuffer_image", 21))
+ {
+ ret = EGLEW_KHR_gl_renderbuffer_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_texture_2D_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_texture_2D_image", 19))
+ {
+ ret = EGLEW_KHR_gl_texture_2D_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_texture_3D_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_texture_3D_image", 19))
+ {
+ ret = EGLEW_KHR_gl_texture_3D_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_gl_texture_cubemap_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"gl_texture_cubemap_image", 24))
+ {
+ ret = EGLEW_KHR_gl_texture_cubemap_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image", 5))
+ {
+ ret = EGLEW_KHR_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_image_base
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_base", 10))
+ {
+ ret = EGLEW_KHR_image_base;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_image_pixmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_pixmap", 12))
+ {
+ ret = EGLEW_KHR_image_pixmap;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_lock_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"lock_surface", 12))
+ {
+ ret = EGLEW_KHR_lock_surface;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_lock_surface2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"lock_surface2", 13))
+ {
+ ret = EGLEW_KHR_lock_surface2;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_lock_surface3
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"lock_surface3", 13))
+ {
+ ret = EGLEW_KHR_lock_surface3;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_mutable_render_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"mutable_render_buffer", 21))
+ {
+ ret = EGLEW_KHR_mutable_render_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_no_config_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"no_config_context", 17))
+ {
+ ret = EGLEW_KHR_no_config_context;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_partial_update
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"partial_update", 14))
+ {
+ ret = EGLEW_KHR_partial_update;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_platform_android
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_android", 16))
+ {
+ ret = EGLEW_KHR_platform_android;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_platform_gbm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_gbm", 12))
+ {
+ ret = EGLEW_KHR_platform_gbm;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_platform_wayland
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_wayland", 16))
+ {
+ ret = EGLEW_KHR_platform_wayland;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_platform_x11
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_x11", 12))
+ {
+ ret = EGLEW_KHR_platform_x11;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_reusable_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"reusable_sync", 13))
+ {
+ ret = EGLEW_KHR_reusable_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream", 6))
+ {
+ ret = EGLEW_KHR_stream;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_attrib
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_attrib", 13))
+ {
+ ret = EGLEW_KHR_stream_attrib;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_consumer_gltexture
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_gltexture", 25))
+ {
+ ret = EGLEW_KHR_stream_consumer_gltexture;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_cross_process_fd
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_process_fd", 23))
+ {
+ ret = EGLEW_KHR_stream_cross_process_fd;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_fifo
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_fifo", 11))
+ {
+ ret = EGLEW_KHR_stream_fifo;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_producer_aldatalocator
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_producer_aldatalocator", 29))
+ {
+ ret = EGLEW_KHR_stream_producer_aldatalocator;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_stream_producer_eglsurface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_producer_eglsurface", 26))
+ {
+ ret = EGLEW_KHR_stream_producer_eglsurface;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_surfaceless_context
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"surfaceless_context", 19))
+ {
+ ret = EGLEW_KHR_surfaceless_context;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_swap_buffers_with_damage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_buffers_with_damage", 24))
+ {
+ ret = EGLEW_KHR_swap_buffers_with_damage;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_vg_parent_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"vg_parent_image", 15))
+ {
+ ret = EGLEW_KHR_vg_parent_image;
+ continue;
+ }
+#endif
+#ifdef EGL_KHR_wait_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"wait_sync", 9))
+ {
+ ret = EGLEW_KHR_wait_sync;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5))
+ {
+#ifdef EGL_MESA_drm_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"drm_image", 9))
+ {
+ ret = EGLEW_MESA_drm_image;
+ continue;
+ }
+#endif
+#ifdef EGL_MESA_image_dma_buf_export
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_dma_buf_export", 20))
+ {
+ ret = EGLEW_MESA_image_dma_buf_export;
+ continue;
+ }
+#endif
+#ifdef EGL_MESA_platform_gbm
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_gbm", 12))
+ {
+ ret = EGLEW_MESA_platform_gbm;
+ continue;
+ }
+#endif
+#ifdef EGL_MESA_platform_surfaceless
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"platform_surfaceless", 20))
+ {
+ ret = EGLEW_MESA_platform_surfaceless;
+ continue;
+ }
+#endif
+#ifdef EGL_MESA_query_driver
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"query_driver", 12))
+ {
+ ret = EGLEW_MESA_query_driver;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NOK_", 4))
+ {
+#ifdef EGL_NOK_swap_region
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_region", 11))
+ {
+ ret = EGLEW_NOK_swap_region;
+ continue;
+ }
+#endif
+#ifdef EGL_NOK_swap_region2
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_region2", 12))
+ {
+ ret = EGLEW_NOK_swap_region2;
+ continue;
+ }
+#endif
+#ifdef EGL_NOK_texture_from_pixmap
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_from_pixmap", 19))
+ {
+ ret = EGLEW_NOK_texture_from_pixmap;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3))
+ {
+#ifdef EGL_NV_3dvision_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"3dvision_surface", 16))
+ {
+ ret = EGLEW_NV_3dvision_surface;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_context_priority_realtime
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"context_priority_realtime", 25))
+ {
+ ret = EGLEW_NV_context_priority_realtime;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_coverage_sample
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"coverage_sample", 15))
+ {
+ ret = EGLEW_NV_coverage_sample;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_coverage_sample_resolve
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"coverage_sample_resolve", 23))
+ {
+ ret = EGLEW_NV_coverage_sample_resolve;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_cuda_event
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"cuda_event", 10))
+ {
+ ret = EGLEW_NV_cuda_event;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_depth_nonlinear
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_nonlinear", 15))
+ {
+ ret = EGLEW_NV_depth_nonlinear;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_device_cuda
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"device_cuda", 11))
+ {
+ ret = EGLEW_NV_device_cuda;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_native_query
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"native_query", 12))
+ {
+ ret = EGLEW_NV_native_query;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_post_convert_rounding
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"post_convert_rounding", 21))
+ {
+ ret = EGLEW_NV_post_convert_rounding;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_post_sub_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"post_sub_buffer", 15))
+ {
+ ret = EGLEW_NV_post_sub_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_quadruple_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"quadruple_buffer", 16))
+ {
+ ret = EGLEW_NV_quadruple_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_robustness_video_memory_purge
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"robustness_video_memory_purge", 29))
+ {
+ ret = EGLEW_NV_robustness_video_memory_purge;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_consumer_eglimage
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_eglimage", 24))
+ {
+ ret = EGLEW_NV_stream_consumer_eglimage;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_consumer_gltexture_yuv", 29))
+ {
+ ret = EGLEW_NV_stream_consumer_gltexture_yuv;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_display
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_display", 20))
+ {
+ ret = EGLEW_NV_stream_cross_display;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_object
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_object", 19))
+ {
+ ret = EGLEW_NV_stream_cross_object;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_partition
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_partition", 22))
+ {
+ ret = EGLEW_NV_stream_cross_partition;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_process
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_process", 20))
+ {
+ ret = EGLEW_NV_stream_cross_process;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_cross_system
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_cross_system", 19))
+ {
+ ret = EGLEW_NV_stream_cross_system;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_dma
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_dma", 10))
+ {
+ ret = EGLEW_NV_stream_dma;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_fifo_next
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_fifo_next", 16))
+ {
+ ret = EGLEW_NV_stream_fifo_next;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_fifo_synchronous
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_fifo_synchronous", 23))
+ {
+ ret = EGLEW_NV_stream_fifo_synchronous;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_flush
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_flush", 12))
+ {
+ ret = EGLEW_NV_stream_flush;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_frame_limits
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_frame_limits", 19))
+ {
+ ret = EGLEW_NV_stream_frame_limits;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_metadata
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_metadata", 15))
+ {
+ ret = EGLEW_NV_stream_metadata;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_origin
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_origin", 13))
+ {
+ ret = EGLEW_NV_stream_origin;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_remote
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_remote", 13))
+ {
+ ret = EGLEW_NV_stream_remote;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_reset
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_reset", 12))
+ {
+ ret = EGLEW_NV_stream_reset;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_socket
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_socket", 13))
+ {
+ ret = EGLEW_NV_stream_socket;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_socket_inet
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_socket_inet", 18))
+ {
+ ret = EGLEW_NV_stream_socket_inet;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_socket_unix
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_socket_unix", 18))
+ {
+ ret = EGLEW_NV_stream_socket_unix;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_stream_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"stream_sync", 11))
+ {
+ ret = EGLEW_NV_stream_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_sync
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync", 4))
+ {
+ ret = EGLEW_NV_sync;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_system_time
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"system_time", 11))
+ {
+ ret = EGLEW_NV_system_time;
+ continue;
+ }
+#endif
+#ifdef EGL_NV_triple_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"triple_buffer", 13))
+ {
+ ret = EGLEW_NV_triple_buffer;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"TIZEN_", 6))
+ {
+#ifdef EGL_TIZEN_image_native_buffer
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_native_buffer", 19))
+ {
+ ret = EGLEW_TIZEN_image_native_buffer;
+ continue;
+ }
+#endif
+#ifdef EGL_TIZEN_image_native_surface
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_native_surface", 20))
+ {
+ ret = EGLEW_TIZEN_image_native_surface;
+ continue;
+ }
+#endif
+ }
+ if (_glewStrSame2(&pos, &len, (const GLubyte*)"WL_", 3))
+ {
+#ifdef EGL_WL_bind_wayland_display
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"bind_wayland_display", 20))
+ {
+ ret = EGLEW_WL_bind_wayland_display;
+ continue;
+ }
+#endif
+#ifdef EGL_WL_create_wayland_buffer_from_image
+ if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_wayland_buffer_from_image", 32))
+ {
+ ret = EGLEW_WL_create_wayland_buffer_from_image;
+ continue;
+ }
+#endif
+ }
+ }
+ ret = (len == 0);
+ }
+ return ret;
+}
+
+#endif /* _WIN32 */
diff --git a/glew/src/glewinfo.c b/glew/src/glewinfo.c
new file mode 100644
index 0000000..2122e26
--- /dev/null
+++ b/glew/src/glewinfo.c
@@ -0,0 +1,19392 @@
+/*
+** The OpenGL Extension Wrangler Library
+** Copyright (C) 2008-2019, Nigel Stewart <nigels[]users sourceforge net>
+** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+** Copyright (C) 2002, Lev Povalahev
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** * The name of the author may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+** THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <GL/glew.h>
+#if defined(GLEW_EGL)
+#include <GL/eglew.h>
+#elif defined(GLEW_OSMESA)
+#define GLAPI extern
+#include <GL/osmesa.h>
+#elif defined(_WIN32)
+#include <GL/wglew.h>
+#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+#include <GL/glxew.h>
+#endif
+
+#if defined(__APPLE__)
+#include <AvailabilityMacros.h>
+#endif
+
+#ifdef GLEW_REGAL
+#include <GL/Regal.h>
+#endif
+
+static FILE* f;
+
+/* Command-line parameters for GL context creation */
+
+struct createParams
+{
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ int pixelformat;
+#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
+ const char* display;
+ int visual;
+#endif
+ int major, minor; /* GL context version number */
+
+ /* https://www.opengl.org/registry/specs/ARB/glx_create_context.txt */
+ int profile; /* core = 1, compatibility = 2 */
+ int flags; /* debug = 1, forward compatible = 2 */
+
+ /* GLEW experimental mode */
+ int experimental;
+};
+
+GLboolean glewCreateContext (struct createParams *params);
+
+GLboolean glewParseArgs (int argc, char** argv, struct createParams *);
+
+void glewDestroyContext ();
+
+/* ------------------------------------------------------------------------- */
+
+static GLboolean glewPrintExt (const char* name, GLboolean def1, GLboolean def2, GLboolean def3)
+{
+ unsigned int i;
+ fprintf(f, "\n%s:", name);
+ for (i=0; i<62-strlen(name); i++) fprintf(f, " ");
+ fprintf(f, "%s ", def1 ? "OK" : "MISSING");
+ if (def1 != def2)
+ fprintf(f, "[%s] ", def2 ? "OK" : "MISSING");
+ if (def1 != def3)
+ fprintf(f, "[%s]\n", def3 ? "OK" : "MISSING");
+ else
+ fprintf(f, "\n");
+ for (i=0; i<strlen(name)+1; i++) fprintf(f, "-");
+ fprintf(f, "\n");
+ fflush(f);
+ return def1 || def2 || def3 || glewExperimental; /* Enable per-function info too? */
+}
+
+static void glewInfoFunc (GLboolean fi, const char* name, GLint undefined)
+{
+ unsigned int i;
+ if (fi)
+ {
+ fprintf(f, " %s:", name);
+ for (i=0; i<60-strlen(name); i++) fprintf(f, " ");
+ fprintf(f, "%s\n", undefined ? "MISSING" : "OK");
+ fflush(f);
+ }
+}
+
+/* ----------------------------- GL_VERSION_1_1 ---------------------------- */
+
+#ifdef GL_VERSION_1_1
+
+static void _glewInfo_GL_VERSION_1_1 (void)
+{
+ glewPrintExt("GL_VERSION_1_1", GLEW_VERSION_1_1, GLEW_VERSION_1_1, GLEW_VERSION_1_1);
+}
+
+#endif /* GL_VERSION_1_1 */
+
+#ifdef GL_VERSION_1_2
+
+static void _glewInfo_GL_VERSION_1_2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_1_2", GLEW_VERSION_1_2, GLEW_VERSION_1_2, GLEW_VERSION_1_2);
+
+ glewInfoFunc(fi, "glCopyTexSubImage3D", glCopyTexSubImage3D == NULL);
+ glewInfoFunc(fi, "glDrawRangeElements", glDrawRangeElements == NULL);
+ glewInfoFunc(fi, "glTexImage3D", glTexImage3D == NULL);
+ glewInfoFunc(fi, "glTexSubImage3D", glTexSubImage3D == NULL);
+}
+
+#endif /* GL_VERSION_1_2 */
+
+#ifdef GL_VERSION_1_2_1
+
+static void _glewInfo_GL_VERSION_1_2_1 (void)
+{
+ glewPrintExt("GL_VERSION_1_2_1", GLEW_VERSION_1_2_1, GLEW_VERSION_1_2_1, GLEW_VERSION_1_2_1);
+}
+
+#endif /* GL_VERSION_1_2_1 */
+
+#ifdef GL_VERSION_1_3
+
+static void _glewInfo_GL_VERSION_1_3 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_1_3", GLEW_VERSION_1_3, GLEW_VERSION_1_3, GLEW_VERSION_1_3);
+
+ glewInfoFunc(fi, "glActiveTexture", glActiveTexture == NULL);
+ glewInfoFunc(fi, "glClientActiveTexture", glClientActiveTexture == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage1D", glCompressedTexImage1D == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage2D", glCompressedTexImage2D == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage3D", glCompressedTexImage3D == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage1D", glCompressedTexSubImage1D == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage2D", glCompressedTexSubImage2D == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage3D", glCompressedTexSubImage3D == NULL);
+ glewInfoFunc(fi, "glGetCompressedTexImage", glGetCompressedTexImage == NULL);
+ glewInfoFunc(fi, "glLoadTransposeMatrixd", glLoadTransposeMatrixd == NULL);
+ glewInfoFunc(fi, "glLoadTransposeMatrixf", glLoadTransposeMatrixf == NULL);
+ glewInfoFunc(fi, "glMultTransposeMatrixd", glMultTransposeMatrixd == NULL);
+ glewInfoFunc(fi, "glMultTransposeMatrixf", glMultTransposeMatrixf == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1d", glMultiTexCoord1d == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1dv", glMultiTexCoord1dv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1f", glMultiTexCoord1f == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1fv", glMultiTexCoord1fv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1i", glMultiTexCoord1i == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1iv", glMultiTexCoord1iv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1s", glMultiTexCoord1s == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1sv", glMultiTexCoord1sv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2d", glMultiTexCoord2d == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2dv", glMultiTexCoord2dv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2f", glMultiTexCoord2f == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2fv", glMultiTexCoord2fv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2i", glMultiTexCoord2i == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2iv", glMultiTexCoord2iv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2s", glMultiTexCoord2s == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2sv", glMultiTexCoord2sv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3d", glMultiTexCoord3d == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3dv", glMultiTexCoord3dv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3f", glMultiTexCoord3f == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3fv", glMultiTexCoord3fv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3i", glMultiTexCoord3i == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3iv", glMultiTexCoord3iv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3s", glMultiTexCoord3s == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3sv", glMultiTexCoord3sv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4d", glMultiTexCoord4d == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4dv", glMultiTexCoord4dv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4f", glMultiTexCoord4f == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4fv", glMultiTexCoord4fv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4i", glMultiTexCoord4i == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4iv", glMultiTexCoord4iv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4s", glMultiTexCoord4s == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4sv", glMultiTexCoord4sv == NULL);
+ glewInfoFunc(fi, "glSampleCoverage", glSampleCoverage == NULL);
+}
+
+#endif /* GL_VERSION_1_3 */
+
+#ifdef GL_VERSION_1_4
+
+static void _glewInfo_GL_VERSION_1_4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_1_4", GLEW_VERSION_1_4, GLEW_VERSION_1_4, GLEW_VERSION_1_4);
+
+ glewInfoFunc(fi, "glBlendColor", glBlendColor == NULL);
+ glewInfoFunc(fi, "glBlendEquation", glBlendEquation == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparate", glBlendFuncSeparate == NULL);
+ glewInfoFunc(fi, "glFogCoordPointer", glFogCoordPointer == NULL);
+ glewInfoFunc(fi, "glFogCoordd", glFogCoordd == NULL);
+ glewInfoFunc(fi, "glFogCoorddv", glFogCoorddv == NULL);
+ glewInfoFunc(fi, "glFogCoordf", glFogCoordf == NULL);
+ glewInfoFunc(fi, "glFogCoordfv", glFogCoordfv == NULL);
+ glewInfoFunc(fi, "glMultiDrawArrays", glMultiDrawArrays == NULL);
+ glewInfoFunc(fi, "glMultiDrawElements", glMultiDrawElements == NULL);
+ glewInfoFunc(fi, "glPointParameterf", glPointParameterf == NULL);
+ glewInfoFunc(fi, "glPointParameterfv", glPointParameterfv == NULL);
+ glewInfoFunc(fi, "glPointParameteri", glPointParameteri == NULL);
+ glewInfoFunc(fi, "glPointParameteriv", glPointParameteriv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3b", glSecondaryColor3b == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3bv", glSecondaryColor3bv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3d", glSecondaryColor3d == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3dv", glSecondaryColor3dv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3f", glSecondaryColor3f == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3fv", glSecondaryColor3fv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3i", glSecondaryColor3i == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3iv", glSecondaryColor3iv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3s", glSecondaryColor3s == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3sv", glSecondaryColor3sv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ub", glSecondaryColor3ub == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ubv", glSecondaryColor3ubv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ui", glSecondaryColor3ui == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3uiv", glSecondaryColor3uiv == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3us", glSecondaryColor3us == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3usv", glSecondaryColor3usv == NULL);
+ glewInfoFunc(fi, "glSecondaryColorPointer", glSecondaryColorPointer == NULL);
+ glewInfoFunc(fi, "glWindowPos2d", glWindowPos2d == NULL);
+ glewInfoFunc(fi, "glWindowPos2dv", glWindowPos2dv == NULL);
+ glewInfoFunc(fi, "glWindowPos2f", glWindowPos2f == NULL);
+ glewInfoFunc(fi, "glWindowPos2fv", glWindowPos2fv == NULL);
+ glewInfoFunc(fi, "glWindowPos2i", glWindowPos2i == NULL);
+ glewInfoFunc(fi, "glWindowPos2iv", glWindowPos2iv == NULL);
+ glewInfoFunc(fi, "glWindowPos2s", glWindowPos2s == NULL);
+ glewInfoFunc(fi, "glWindowPos2sv", glWindowPos2sv == NULL);
+ glewInfoFunc(fi, "glWindowPos3d", glWindowPos3d == NULL);
+ glewInfoFunc(fi, "glWindowPos3dv", glWindowPos3dv == NULL);
+ glewInfoFunc(fi, "glWindowPos3f", glWindowPos3f == NULL);
+ glewInfoFunc(fi, "glWindowPos3fv", glWindowPos3fv == NULL);
+ glewInfoFunc(fi, "glWindowPos3i", glWindowPos3i == NULL);
+ glewInfoFunc(fi, "glWindowPos3iv", glWindowPos3iv == NULL);
+ glewInfoFunc(fi, "glWindowPos3s", glWindowPos3s == NULL);
+ glewInfoFunc(fi, "glWindowPos3sv", glWindowPos3sv == NULL);
+}
+
+#endif /* GL_VERSION_1_4 */
+
+#ifdef GL_VERSION_1_5
+
+static void _glewInfo_GL_VERSION_1_5 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_1_5", GLEW_VERSION_1_5, GLEW_VERSION_1_5, GLEW_VERSION_1_5);
+
+ glewInfoFunc(fi, "glBeginQuery", glBeginQuery == NULL);
+ glewInfoFunc(fi, "glBindBuffer", glBindBuffer == NULL);
+ glewInfoFunc(fi, "glBufferData", glBufferData == NULL);
+ glewInfoFunc(fi, "glBufferSubData", glBufferSubData == NULL);
+ glewInfoFunc(fi, "glDeleteBuffers", glDeleteBuffers == NULL);
+ glewInfoFunc(fi, "glDeleteQueries", glDeleteQueries == NULL);
+ glewInfoFunc(fi, "glEndQuery", glEndQuery == NULL);
+ glewInfoFunc(fi, "glGenBuffers", glGenBuffers == NULL);
+ glewInfoFunc(fi, "glGenQueries", glGenQueries == NULL);
+ glewInfoFunc(fi, "glGetBufferParameteriv", glGetBufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetBufferPointerv", glGetBufferPointerv == NULL);
+ glewInfoFunc(fi, "glGetBufferSubData", glGetBufferSubData == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectiv", glGetQueryObjectiv == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectuiv", glGetQueryObjectuiv == NULL);
+ glewInfoFunc(fi, "glGetQueryiv", glGetQueryiv == NULL);
+ glewInfoFunc(fi, "glIsBuffer", glIsBuffer == NULL);
+ glewInfoFunc(fi, "glIsQuery", glIsQuery == NULL);
+ glewInfoFunc(fi, "glMapBuffer", glMapBuffer == NULL);
+ glewInfoFunc(fi, "glUnmapBuffer", glUnmapBuffer == NULL);
+}
+
+#endif /* GL_VERSION_1_5 */
+
+#ifdef GL_VERSION_2_0
+
+static void _glewInfo_GL_VERSION_2_0 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_2_0", GLEW_VERSION_2_0, GLEW_VERSION_2_0, GLEW_VERSION_2_0);
+
+ glewInfoFunc(fi, "glAttachShader", glAttachShader == NULL);
+ glewInfoFunc(fi, "glBindAttribLocation", glBindAttribLocation == NULL);
+ glewInfoFunc(fi, "glBlendEquationSeparate", glBlendEquationSeparate == NULL);
+ glewInfoFunc(fi, "glCompileShader", glCompileShader == NULL);
+ glewInfoFunc(fi, "glCreateProgram", glCreateProgram == NULL);
+ glewInfoFunc(fi, "glCreateShader", glCreateShader == NULL);
+ glewInfoFunc(fi, "glDeleteProgram", glDeleteProgram == NULL);
+ glewInfoFunc(fi, "glDeleteShader", glDeleteShader == NULL);
+ glewInfoFunc(fi, "glDetachShader", glDetachShader == NULL);
+ glewInfoFunc(fi, "glDisableVertexAttribArray", glDisableVertexAttribArray == NULL);
+ glewInfoFunc(fi, "glDrawBuffers", glDrawBuffers == NULL);
+ glewInfoFunc(fi, "glEnableVertexAttribArray", glEnableVertexAttribArray == NULL);
+ glewInfoFunc(fi, "glGetActiveAttrib", glGetActiveAttrib == NULL);
+ glewInfoFunc(fi, "glGetActiveUniform", glGetActiveUniform == NULL);
+ glewInfoFunc(fi, "glGetAttachedShaders", glGetAttachedShaders == NULL);
+ glewInfoFunc(fi, "glGetAttribLocation", glGetAttribLocation == NULL);
+ glewInfoFunc(fi, "glGetProgramInfoLog", glGetProgramInfoLog == NULL);
+ glewInfoFunc(fi, "glGetProgramiv", glGetProgramiv == NULL);
+ glewInfoFunc(fi, "glGetShaderInfoLog", glGetShaderInfoLog == NULL);
+ glewInfoFunc(fi, "glGetShaderSource", glGetShaderSource == NULL);
+ glewInfoFunc(fi, "glGetShaderiv", glGetShaderiv == NULL);
+ glewInfoFunc(fi, "glGetUniformLocation", glGetUniformLocation == NULL);
+ glewInfoFunc(fi, "glGetUniformfv", glGetUniformfv == NULL);
+ glewInfoFunc(fi, "glGetUniformiv", glGetUniformiv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribPointerv", glGetVertexAttribPointerv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribdv", glGetVertexAttribdv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribfv", glGetVertexAttribfv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribiv", glGetVertexAttribiv == NULL);
+ glewInfoFunc(fi, "glIsProgram", glIsProgram == NULL);
+ glewInfoFunc(fi, "glIsShader", glIsShader == NULL);
+ glewInfoFunc(fi, "glLinkProgram", glLinkProgram == NULL);
+ glewInfoFunc(fi, "glShaderSource", glShaderSource == NULL);
+ glewInfoFunc(fi, "glStencilFuncSeparate", glStencilFuncSeparate == NULL);
+ glewInfoFunc(fi, "glStencilMaskSeparate", glStencilMaskSeparate == NULL);
+ glewInfoFunc(fi, "glStencilOpSeparate", glStencilOpSeparate == NULL);
+ glewInfoFunc(fi, "glUniform1f", glUniform1f == NULL);
+ glewInfoFunc(fi, "glUniform1fv", glUniform1fv == NULL);
+ glewInfoFunc(fi, "glUniform1i", glUniform1i == NULL);
+ glewInfoFunc(fi, "glUniform1iv", glUniform1iv == NULL);
+ glewInfoFunc(fi, "glUniform2f", glUniform2f == NULL);
+ glewInfoFunc(fi, "glUniform2fv", glUniform2fv == NULL);
+ glewInfoFunc(fi, "glUniform2i", glUniform2i == NULL);
+ glewInfoFunc(fi, "glUniform2iv", glUniform2iv == NULL);
+ glewInfoFunc(fi, "glUniform3f", glUniform3f == NULL);
+ glewInfoFunc(fi, "glUniform3fv", glUniform3fv == NULL);
+ glewInfoFunc(fi, "glUniform3i", glUniform3i == NULL);
+ glewInfoFunc(fi, "glUniform3iv", glUniform3iv == NULL);
+ glewInfoFunc(fi, "glUniform4f", glUniform4f == NULL);
+ glewInfoFunc(fi, "glUniform4fv", glUniform4fv == NULL);
+ glewInfoFunc(fi, "glUniform4i", glUniform4i == NULL);
+ glewInfoFunc(fi, "glUniform4iv", glUniform4iv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2fv", glUniformMatrix2fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3fv", glUniformMatrix3fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4fv", glUniformMatrix4fv == NULL);
+ glewInfoFunc(fi, "glUseProgram", glUseProgram == NULL);
+ glewInfoFunc(fi, "glValidateProgram", glValidateProgram == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1d", glVertexAttrib1d == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dv", glVertexAttrib1dv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1f", glVertexAttrib1f == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fv", glVertexAttrib1fv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1s", glVertexAttrib1s == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1sv", glVertexAttrib1sv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2d", glVertexAttrib2d == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dv", glVertexAttrib2dv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2f", glVertexAttrib2f == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fv", glVertexAttrib2fv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2s", glVertexAttrib2s == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2sv", glVertexAttrib2sv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3d", glVertexAttrib3d == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dv", glVertexAttrib3dv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3f", glVertexAttrib3f == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fv", glVertexAttrib3fv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3s", glVertexAttrib3s == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3sv", glVertexAttrib3sv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nbv", glVertexAttrib4Nbv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Niv", glVertexAttrib4Niv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nsv", glVertexAttrib4Nsv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nub", glVertexAttrib4Nub == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nubv", glVertexAttrib4Nubv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nuiv", glVertexAttrib4Nuiv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4Nusv", glVertexAttrib4Nusv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4bv", glVertexAttrib4bv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4d", glVertexAttrib4d == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dv", glVertexAttrib4dv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4f", glVertexAttrib4f == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fv", glVertexAttrib4fv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4iv", glVertexAttrib4iv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4s", glVertexAttrib4s == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4sv", glVertexAttrib4sv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ubv", glVertexAttrib4ubv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4uiv", glVertexAttrib4uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4usv", glVertexAttrib4usv == NULL);
+ glewInfoFunc(fi, "glVertexAttribPointer", glVertexAttribPointer == NULL);
+}
+
+#endif /* GL_VERSION_2_0 */
+
+#ifdef GL_VERSION_2_1
+
+static void _glewInfo_GL_VERSION_2_1 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_2_1", GLEW_VERSION_2_1, GLEW_VERSION_2_1, GLEW_VERSION_2_1);
+
+ glewInfoFunc(fi, "glUniformMatrix2x3fv", glUniformMatrix2x3fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2x4fv", glUniformMatrix2x4fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x2fv", glUniformMatrix3x2fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x4fv", glUniformMatrix3x4fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x2fv", glUniformMatrix4x2fv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x3fv", glUniformMatrix4x3fv == NULL);
+}
+
+#endif /* GL_VERSION_2_1 */
+
+#ifdef GL_VERSION_3_0
+
+static void _glewInfo_GL_VERSION_3_0 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_3_0", GLEW_VERSION_3_0, GLEW_VERSION_3_0, GLEW_VERSION_3_0);
+
+ glewInfoFunc(fi, "glBeginConditionalRender", glBeginConditionalRender == NULL);
+ glewInfoFunc(fi, "glBeginTransformFeedback", glBeginTransformFeedback == NULL);
+ glewInfoFunc(fi, "glBindFragDataLocation", glBindFragDataLocation == NULL);
+ glewInfoFunc(fi, "glClampColor", glClampColor == NULL);
+ glewInfoFunc(fi, "glClearBufferfi", glClearBufferfi == NULL);
+ glewInfoFunc(fi, "glClearBufferfv", glClearBufferfv == NULL);
+ glewInfoFunc(fi, "glClearBufferiv", glClearBufferiv == NULL);
+ glewInfoFunc(fi, "glClearBufferuiv", glClearBufferuiv == NULL);
+ glewInfoFunc(fi, "glColorMaski", glColorMaski == NULL);
+ glewInfoFunc(fi, "glDisablei", glDisablei == NULL);
+ glewInfoFunc(fi, "glEnablei", glEnablei == NULL);
+ glewInfoFunc(fi, "glEndConditionalRender", glEndConditionalRender == NULL);
+ glewInfoFunc(fi, "glEndTransformFeedback", glEndTransformFeedback == NULL);
+ glewInfoFunc(fi, "glGetBooleani_v", glGetBooleani_v == NULL);
+ glewInfoFunc(fi, "glGetFragDataLocation", glGetFragDataLocation == NULL);
+ glewInfoFunc(fi, "glGetStringi", glGetStringi == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIiv", glGetTexParameterIiv == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIuiv", glGetTexParameterIuiv == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbackVarying", glGetTransformFeedbackVarying == NULL);
+ glewInfoFunc(fi, "glGetUniformuiv", glGetUniformuiv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribIiv", glGetVertexAttribIiv == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribIuiv", glGetVertexAttribIuiv == NULL);
+ glewInfoFunc(fi, "glIsEnabledi", glIsEnabledi == NULL);
+ glewInfoFunc(fi, "glTexParameterIiv", glTexParameterIiv == NULL);
+ glewInfoFunc(fi, "glTexParameterIuiv", glTexParameterIuiv == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackVaryings", glTransformFeedbackVaryings == NULL);
+ glewInfoFunc(fi, "glUniform1ui", glUniform1ui == NULL);
+ glewInfoFunc(fi, "glUniform1uiv", glUniform1uiv == NULL);
+ glewInfoFunc(fi, "glUniform2ui", glUniform2ui == NULL);
+ glewInfoFunc(fi, "glUniform2uiv", glUniform2uiv == NULL);
+ glewInfoFunc(fi, "glUniform3ui", glUniform3ui == NULL);
+ glewInfoFunc(fi, "glUniform3uiv", glUniform3uiv == NULL);
+ glewInfoFunc(fi, "glUniform4ui", glUniform4ui == NULL);
+ glewInfoFunc(fi, "glUniform4uiv", glUniform4uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1i", glVertexAttribI1i == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1iv", glVertexAttribI1iv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1ui", glVertexAttribI1ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1uiv", glVertexAttribI1uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2i", glVertexAttribI2i == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2iv", glVertexAttribI2iv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2ui", glVertexAttribI2ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2uiv", glVertexAttribI2uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3i", glVertexAttribI3i == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3iv", glVertexAttribI3iv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3ui", glVertexAttribI3ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3uiv", glVertexAttribI3uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4bv", glVertexAttribI4bv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4i", glVertexAttribI4i == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4iv", glVertexAttribI4iv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4sv", glVertexAttribI4sv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4ubv", glVertexAttribI4ubv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4ui", glVertexAttribI4ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4uiv", glVertexAttribI4uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4usv", glVertexAttribI4usv == NULL);
+ glewInfoFunc(fi, "glVertexAttribIPointer", glVertexAttribIPointer == NULL);
+}
+
+#endif /* GL_VERSION_3_0 */
+
+#ifdef GL_VERSION_3_1
+
+static void _glewInfo_GL_VERSION_3_1 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_3_1", GLEW_VERSION_3_1, GLEW_VERSION_3_1, GLEW_VERSION_3_1);
+
+ glewInfoFunc(fi, "glDrawArraysInstanced", glDrawArraysInstanced == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstanced", glDrawElementsInstanced == NULL);
+ glewInfoFunc(fi, "glPrimitiveRestartIndex", glPrimitiveRestartIndex == NULL);
+ glewInfoFunc(fi, "glTexBuffer", glTexBuffer == NULL);
+}
+
+#endif /* GL_VERSION_3_1 */
+
+#ifdef GL_VERSION_3_2
+
+static void _glewInfo_GL_VERSION_3_2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_3_2", GLEW_VERSION_3_2, GLEW_VERSION_3_2, GLEW_VERSION_3_2);
+
+ glewInfoFunc(fi, "glFramebufferTexture", glFramebufferTexture == NULL);
+ glewInfoFunc(fi, "glGetBufferParameteri64v", glGetBufferParameteri64v == NULL);
+ glewInfoFunc(fi, "glGetInteger64i_v", glGetInteger64i_v == NULL);
+}
+
+#endif /* GL_VERSION_3_2 */
+
+#ifdef GL_VERSION_3_3
+
+static void _glewInfo_GL_VERSION_3_3 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_3_3", GLEW_VERSION_3_3, GLEW_VERSION_3_3, GLEW_VERSION_3_3);
+
+ glewInfoFunc(fi, "glVertexAttribDivisor", glVertexAttribDivisor == NULL);
+}
+
+#endif /* GL_VERSION_3_3 */
+
+#ifdef GL_VERSION_4_0
+
+static void _glewInfo_GL_VERSION_4_0 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_4_0", GLEW_VERSION_4_0, GLEW_VERSION_4_0, GLEW_VERSION_4_0);
+
+ glewInfoFunc(fi, "glBlendEquationSeparatei", glBlendEquationSeparatei == NULL);
+ glewInfoFunc(fi, "glBlendEquationi", glBlendEquationi == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparatei", glBlendFuncSeparatei == NULL);
+ glewInfoFunc(fi, "glBlendFunci", glBlendFunci == NULL);
+ glewInfoFunc(fi, "glMinSampleShading", glMinSampleShading == NULL);
+}
+
+#endif /* GL_VERSION_4_0 */
+
+#ifdef GL_VERSION_4_1
+
+static void _glewInfo_GL_VERSION_4_1 (void)
+{
+ glewPrintExt("GL_VERSION_4_1", GLEW_VERSION_4_1, GLEW_VERSION_4_1, GLEW_VERSION_4_1);
+}
+
+#endif /* GL_VERSION_4_1 */
+
+#ifdef GL_VERSION_4_2
+
+static void _glewInfo_GL_VERSION_4_2 (void)
+{
+ glewPrintExt("GL_VERSION_4_2", GLEW_VERSION_4_2, GLEW_VERSION_4_2, GLEW_VERSION_4_2);
+}
+
+#endif /* GL_VERSION_4_2 */
+
+#ifdef GL_VERSION_4_3
+
+static void _glewInfo_GL_VERSION_4_3 (void)
+{
+ glewPrintExt("GL_VERSION_4_3", GLEW_VERSION_4_3, GLEW_VERSION_4_3, GLEW_VERSION_4_3);
+}
+
+#endif /* GL_VERSION_4_3 */
+
+#ifdef GL_VERSION_4_4
+
+static void _glewInfo_GL_VERSION_4_4 (void)
+{
+ glewPrintExt("GL_VERSION_4_4", GLEW_VERSION_4_4, GLEW_VERSION_4_4, GLEW_VERSION_4_4);
+}
+
+#endif /* GL_VERSION_4_4 */
+
+#ifdef GL_VERSION_4_5
+
+static void _glewInfo_GL_VERSION_4_5 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_4_5", GLEW_VERSION_4_5, GLEW_VERSION_4_5, GLEW_VERSION_4_5);
+
+ glewInfoFunc(fi, "glGetGraphicsResetStatus", glGetGraphicsResetStatus == NULL);
+ glewInfoFunc(fi, "glGetnCompressedTexImage", glGetnCompressedTexImage == NULL);
+ glewInfoFunc(fi, "glGetnTexImage", glGetnTexImage == NULL);
+ glewInfoFunc(fi, "glGetnUniformdv", glGetnUniformdv == NULL);
+}
+
+#endif /* GL_VERSION_4_5 */
+
+#ifdef GL_VERSION_4_6
+
+static void _glewInfo_GL_VERSION_4_6 (void)
+{
+ GLboolean fi = glewPrintExt("GL_VERSION_4_6", GLEW_VERSION_4_6, GLEW_VERSION_4_6, GLEW_VERSION_4_6);
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectCount", glMultiDrawArraysIndirectCount == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectCount", glMultiDrawElementsIndirectCount == NULL);
+ glewInfoFunc(fi, "glSpecializeShader", glSpecializeShader == NULL);
+}
+
+#endif /* GL_VERSION_4_6 */
+
+#ifdef GL_3DFX_multisample
+
+static void _glewInfo_GL_3DFX_multisample (void)
+{
+ glewPrintExt("GL_3DFX_multisample", GLEW_3DFX_multisample, glewIsSupported("GL_3DFX_multisample"), glewGetExtension("GL_3DFX_multisample"));
+}
+
+#endif /* GL_3DFX_multisample */
+
+#ifdef GL_3DFX_tbuffer
+
+static void _glewInfo_GL_3DFX_tbuffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_3DFX_tbuffer", GLEW_3DFX_tbuffer, glewIsSupported("GL_3DFX_tbuffer"), glewGetExtension("GL_3DFX_tbuffer"));
+
+ glewInfoFunc(fi, "glTbufferMask3DFX", glTbufferMask3DFX == NULL);
+}
+
+#endif /* GL_3DFX_tbuffer */
+
+#ifdef GL_3DFX_texture_compression_FXT1
+
+static void _glewInfo_GL_3DFX_texture_compression_FXT1 (void)
+{
+ glewPrintExt("GL_3DFX_texture_compression_FXT1", GLEW_3DFX_texture_compression_FXT1, glewIsSupported("GL_3DFX_texture_compression_FXT1"), glewGetExtension("GL_3DFX_texture_compression_FXT1"));
+}
+
+#endif /* GL_3DFX_texture_compression_FXT1 */
+
+#ifdef GL_AMD_blend_minmax_factor
+
+static void _glewInfo_GL_AMD_blend_minmax_factor (void)
+{
+ glewPrintExt("GL_AMD_blend_minmax_factor", GLEW_AMD_blend_minmax_factor, glewIsSupported("GL_AMD_blend_minmax_factor"), glewGetExtension("GL_AMD_blend_minmax_factor"));
+}
+
+#endif /* GL_AMD_blend_minmax_factor */
+
+#ifdef GL_AMD_compressed_3DC_texture
+
+static void _glewInfo_GL_AMD_compressed_3DC_texture (void)
+{
+ glewPrintExt("GL_AMD_compressed_3DC_texture", GLEW_AMD_compressed_3DC_texture, glewIsSupported("GL_AMD_compressed_3DC_texture"), glewGetExtension("GL_AMD_compressed_3DC_texture"));
+}
+
+#endif /* GL_AMD_compressed_3DC_texture */
+
+#ifdef GL_AMD_compressed_ATC_texture
+
+static void _glewInfo_GL_AMD_compressed_ATC_texture (void)
+{
+ glewPrintExt("GL_AMD_compressed_ATC_texture", GLEW_AMD_compressed_ATC_texture, glewIsSupported("GL_AMD_compressed_ATC_texture"), glewGetExtension("GL_AMD_compressed_ATC_texture"));
+}
+
+#endif /* GL_AMD_compressed_ATC_texture */
+
+#ifdef GL_AMD_conservative_depth
+
+static void _glewInfo_GL_AMD_conservative_depth (void)
+{
+ glewPrintExt("GL_AMD_conservative_depth", GLEW_AMD_conservative_depth, glewIsSupported("GL_AMD_conservative_depth"), glewGetExtension("GL_AMD_conservative_depth"));
+}
+
+#endif /* GL_AMD_conservative_depth */
+
+#ifdef GL_AMD_debug_output
+
+static void _glewInfo_GL_AMD_debug_output (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_debug_output", GLEW_AMD_debug_output, glewIsSupported("GL_AMD_debug_output"), glewGetExtension("GL_AMD_debug_output"));
+
+ glewInfoFunc(fi, "glDebugMessageCallbackAMD", glDebugMessageCallbackAMD == NULL);
+ glewInfoFunc(fi, "glDebugMessageEnableAMD", glDebugMessageEnableAMD == NULL);
+ glewInfoFunc(fi, "glDebugMessageInsertAMD", glDebugMessageInsertAMD == NULL);
+ glewInfoFunc(fi, "glGetDebugMessageLogAMD", glGetDebugMessageLogAMD == NULL);
+}
+
+#endif /* GL_AMD_debug_output */
+
+#ifdef GL_AMD_depth_clamp_separate
+
+static void _glewInfo_GL_AMD_depth_clamp_separate (void)
+{
+ glewPrintExt("GL_AMD_depth_clamp_separate", GLEW_AMD_depth_clamp_separate, glewIsSupported("GL_AMD_depth_clamp_separate"), glewGetExtension("GL_AMD_depth_clamp_separate"));
+}
+
+#endif /* GL_AMD_depth_clamp_separate */
+
+#ifdef GL_AMD_draw_buffers_blend
+
+static void _glewInfo_GL_AMD_draw_buffers_blend (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_draw_buffers_blend", GLEW_AMD_draw_buffers_blend, glewIsSupported("GL_AMD_draw_buffers_blend"), glewGetExtension("GL_AMD_draw_buffers_blend"));
+
+ glewInfoFunc(fi, "glBlendEquationIndexedAMD", glBlendEquationIndexedAMD == NULL);
+ glewInfoFunc(fi, "glBlendEquationSeparateIndexedAMD", glBlendEquationSeparateIndexedAMD == NULL);
+ glewInfoFunc(fi, "glBlendFuncIndexedAMD", glBlendFuncIndexedAMD == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparateIndexedAMD", glBlendFuncSeparateIndexedAMD == NULL);
+}
+
+#endif /* GL_AMD_draw_buffers_blend */
+
+#ifdef GL_AMD_framebuffer_multisample_advanced
+
+static void _glewInfo_GL_AMD_framebuffer_multisample_advanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_framebuffer_multisample_advanced", GLEW_AMD_framebuffer_multisample_advanced, glewIsSupported("GL_AMD_framebuffer_multisample_advanced"), glewGetExtension("GL_AMD_framebuffer_multisample_advanced"));
+
+ glewInfoFunc(fi, "glNamedRenderbufferStorageMultisampleAdvancedAMD", glNamedRenderbufferStorageMultisampleAdvancedAMD == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleAdvancedAMD", glRenderbufferStorageMultisampleAdvancedAMD == NULL);
+}
+
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+
+#ifdef GL_AMD_framebuffer_sample_positions
+
+static void _glewInfo_GL_AMD_framebuffer_sample_positions (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_framebuffer_sample_positions", GLEW_AMD_framebuffer_sample_positions, glewIsSupported("GL_AMD_framebuffer_sample_positions"), glewGetExtension("GL_AMD_framebuffer_sample_positions"));
+
+ glewInfoFunc(fi, "glFramebufferSamplePositionsfvAMD", glFramebufferSamplePositionsfvAMD == NULL);
+ glewInfoFunc(fi, "glGetFramebufferParameterfvAMD", glGetFramebufferParameterfvAMD == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferParameterfvAMD", glGetNamedFramebufferParameterfvAMD == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferSamplePositionsfvAMD", glNamedFramebufferSamplePositionsfvAMD == NULL);
+}
+
+#endif /* GL_AMD_framebuffer_sample_positions */
+
+#ifdef GL_AMD_gcn_shader
+
+static void _glewInfo_GL_AMD_gcn_shader (void)
+{
+ glewPrintExt("GL_AMD_gcn_shader", GLEW_AMD_gcn_shader, glewIsSupported("GL_AMD_gcn_shader"), glewGetExtension("GL_AMD_gcn_shader"));
+}
+
+#endif /* GL_AMD_gcn_shader */
+
+#ifdef GL_AMD_gpu_shader_half_float
+
+static void _glewInfo_GL_AMD_gpu_shader_half_float (void)
+{
+ glewPrintExt("GL_AMD_gpu_shader_half_float", GLEW_AMD_gpu_shader_half_float, glewIsSupported("GL_AMD_gpu_shader_half_float"), glewGetExtension("GL_AMD_gpu_shader_half_float"));
+}
+
+#endif /* GL_AMD_gpu_shader_half_float */
+
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+
+static void _glewInfo_GL_AMD_gpu_shader_half_float_fetch (void)
+{
+ glewPrintExt("GL_AMD_gpu_shader_half_float_fetch", GLEW_AMD_gpu_shader_half_float_fetch, glewIsSupported("GL_AMD_gpu_shader_half_float_fetch"), glewGetExtension("GL_AMD_gpu_shader_half_float_fetch"));
+}
+
+#endif /* GL_AMD_gpu_shader_half_float_fetch */
+
+#ifdef GL_AMD_gpu_shader_int16
+
+static void _glewInfo_GL_AMD_gpu_shader_int16 (void)
+{
+ glewPrintExt("GL_AMD_gpu_shader_int16", GLEW_AMD_gpu_shader_int16, glewIsSupported("GL_AMD_gpu_shader_int16"), glewGetExtension("GL_AMD_gpu_shader_int16"));
+}
+
+#endif /* GL_AMD_gpu_shader_int16 */
+
+#ifdef GL_AMD_gpu_shader_int64
+
+static void _glewInfo_GL_AMD_gpu_shader_int64 (void)
+{
+ glewPrintExt("GL_AMD_gpu_shader_int64", GLEW_AMD_gpu_shader_int64, glewIsSupported("GL_AMD_gpu_shader_int64"), glewGetExtension("GL_AMD_gpu_shader_int64"));
+}
+
+#endif /* GL_AMD_gpu_shader_int64 */
+
+#ifdef GL_AMD_interleaved_elements
+
+static void _glewInfo_GL_AMD_interleaved_elements (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_interleaved_elements", GLEW_AMD_interleaved_elements, glewIsSupported("GL_AMD_interleaved_elements"), glewGetExtension("GL_AMD_interleaved_elements"));
+
+ glewInfoFunc(fi, "glVertexAttribParameteriAMD", glVertexAttribParameteriAMD == NULL);
+}
+
+#endif /* GL_AMD_interleaved_elements */
+
+#ifdef GL_AMD_multi_draw_indirect
+
+static void _glewInfo_GL_AMD_multi_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_multi_draw_indirect", GLEW_AMD_multi_draw_indirect, glewIsSupported("GL_AMD_multi_draw_indirect"), glewGetExtension("GL_AMD_multi_draw_indirect"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectAMD", glMultiDrawArraysIndirectAMD == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectAMD", glMultiDrawElementsIndirectAMD == NULL);
+}
+
+#endif /* GL_AMD_multi_draw_indirect */
+
+#ifdef GL_AMD_name_gen_delete
+
+static void _glewInfo_GL_AMD_name_gen_delete (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_name_gen_delete", GLEW_AMD_name_gen_delete, glewIsSupported("GL_AMD_name_gen_delete"), glewGetExtension("GL_AMD_name_gen_delete"));
+
+ glewInfoFunc(fi, "glDeleteNamesAMD", glDeleteNamesAMD == NULL);
+ glewInfoFunc(fi, "glGenNamesAMD", glGenNamesAMD == NULL);
+ glewInfoFunc(fi, "glIsNameAMD", glIsNameAMD == NULL);
+}
+
+#endif /* GL_AMD_name_gen_delete */
+
+#ifdef GL_AMD_occlusion_query_event
+
+static void _glewInfo_GL_AMD_occlusion_query_event (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_occlusion_query_event", GLEW_AMD_occlusion_query_event, glewIsSupported("GL_AMD_occlusion_query_event"), glewGetExtension("GL_AMD_occlusion_query_event"));
+
+ glewInfoFunc(fi, "glQueryObjectParameteruiAMD", glQueryObjectParameteruiAMD == NULL);
+}
+
+#endif /* GL_AMD_occlusion_query_event */
+
+#ifdef GL_AMD_performance_monitor
+
+static void _glewInfo_GL_AMD_performance_monitor (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_performance_monitor", GLEW_AMD_performance_monitor, glewIsSupported("GL_AMD_performance_monitor"), glewGetExtension("GL_AMD_performance_monitor"));
+
+ glewInfoFunc(fi, "glBeginPerfMonitorAMD", glBeginPerfMonitorAMD == NULL);
+ glewInfoFunc(fi, "glDeletePerfMonitorsAMD", glDeletePerfMonitorsAMD == NULL);
+ glewInfoFunc(fi, "glEndPerfMonitorAMD", glEndPerfMonitorAMD == NULL);
+ glewInfoFunc(fi, "glGenPerfMonitorsAMD", glGenPerfMonitorsAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorCounterDataAMD", glGetPerfMonitorCounterDataAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorCounterInfoAMD", glGetPerfMonitorCounterInfoAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorCounterStringAMD", glGetPerfMonitorCounterStringAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorCountersAMD", glGetPerfMonitorCountersAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorGroupStringAMD", glGetPerfMonitorGroupStringAMD == NULL);
+ glewInfoFunc(fi, "glGetPerfMonitorGroupsAMD", glGetPerfMonitorGroupsAMD == NULL);
+ glewInfoFunc(fi, "glSelectPerfMonitorCountersAMD", glSelectPerfMonitorCountersAMD == NULL);
+}
+
+#endif /* GL_AMD_performance_monitor */
+
+#ifdef GL_AMD_pinned_memory
+
+static void _glewInfo_GL_AMD_pinned_memory (void)
+{
+ glewPrintExt("GL_AMD_pinned_memory", GLEW_AMD_pinned_memory, glewIsSupported("GL_AMD_pinned_memory"), glewGetExtension("GL_AMD_pinned_memory"));
+}
+
+#endif /* GL_AMD_pinned_memory */
+
+#ifdef GL_AMD_program_binary_Z400
+
+static void _glewInfo_GL_AMD_program_binary_Z400 (void)
+{
+ glewPrintExt("GL_AMD_program_binary_Z400", GLEW_AMD_program_binary_Z400, glewIsSupported("GL_AMD_program_binary_Z400"), glewGetExtension("GL_AMD_program_binary_Z400"));
+}
+
+#endif /* GL_AMD_program_binary_Z400 */
+
+#ifdef GL_AMD_query_buffer_object
+
+static void _glewInfo_GL_AMD_query_buffer_object (void)
+{
+ glewPrintExt("GL_AMD_query_buffer_object", GLEW_AMD_query_buffer_object, glewIsSupported("GL_AMD_query_buffer_object"), glewGetExtension("GL_AMD_query_buffer_object"));
+}
+
+#endif /* GL_AMD_query_buffer_object */
+
+#ifdef GL_AMD_sample_positions
+
+static void _glewInfo_GL_AMD_sample_positions (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_sample_positions", GLEW_AMD_sample_positions, glewIsSupported("GL_AMD_sample_positions"), glewGetExtension("GL_AMD_sample_positions"));
+
+ glewInfoFunc(fi, "glSetMultisamplefvAMD", glSetMultisamplefvAMD == NULL);
+}
+
+#endif /* GL_AMD_sample_positions */
+
+#ifdef GL_AMD_seamless_cubemap_per_texture
+
+static void _glewInfo_GL_AMD_seamless_cubemap_per_texture (void)
+{
+ glewPrintExt("GL_AMD_seamless_cubemap_per_texture", GLEW_AMD_seamless_cubemap_per_texture, glewIsSupported("GL_AMD_seamless_cubemap_per_texture"), glewGetExtension("GL_AMD_seamless_cubemap_per_texture"));
+}
+
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+
+#ifdef GL_AMD_shader_atomic_counter_ops
+
+static void _glewInfo_GL_AMD_shader_atomic_counter_ops (void)
+{
+ glewPrintExt("GL_AMD_shader_atomic_counter_ops", GLEW_AMD_shader_atomic_counter_ops, glewIsSupported("GL_AMD_shader_atomic_counter_ops"), glewGetExtension("GL_AMD_shader_atomic_counter_ops"));
+}
+
+#endif /* GL_AMD_shader_atomic_counter_ops */
+
+#ifdef GL_AMD_shader_ballot
+
+static void _glewInfo_GL_AMD_shader_ballot (void)
+{
+ glewPrintExt("GL_AMD_shader_ballot", GLEW_AMD_shader_ballot, glewIsSupported("GL_AMD_shader_ballot"), glewGetExtension("GL_AMD_shader_ballot"));
+}
+
+#endif /* GL_AMD_shader_ballot */
+
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+
+static void _glewInfo_GL_AMD_shader_explicit_vertex_parameter (void)
+{
+ glewPrintExt("GL_AMD_shader_explicit_vertex_parameter", GLEW_AMD_shader_explicit_vertex_parameter, glewIsSupported("GL_AMD_shader_explicit_vertex_parameter"), glewGetExtension("GL_AMD_shader_explicit_vertex_parameter"));
+}
+
+#endif /* GL_AMD_shader_explicit_vertex_parameter */
+
+#ifdef GL_AMD_shader_image_load_store_lod
+
+static void _glewInfo_GL_AMD_shader_image_load_store_lod (void)
+{
+ glewPrintExt("GL_AMD_shader_image_load_store_lod", GLEW_AMD_shader_image_load_store_lod, glewIsSupported("GL_AMD_shader_image_load_store_lod"), glewGetExtension("GL_AMD_shader_image_load_store_lod"));
+}
+
+#endif /* GL_AMD_shader_image_load_store_lod */
+
+#ifdef GL_AMD_shader_stencil_export
+
+static void _glewInfo_GL_AMD_shader_stencil_export (void)
+{
+ glewPrintExt("GL_AMD_shader_stencil_export", GLEW_AMD_shader_stencil_export, glewIsSupported("GL_AMD_shader_stencil_export"), glewGetExtension("GL_AMD_shader_stencil_export"));
+}
+
+#endif /* GL_AMD_shader_stencil_export */
+
+#ifdef GL_AMD_shader_stencil_value_export
+
+static void _glewInfo_GL_AMD_shader_stencil_value_export (void)
+{
+ glewPrintExt("GL_AMD_shader_stencil_value_export", GLEW_AMD_shader_stencil_value_export, glewIsSupported("GL_AMD_shader_stencil_value_export"), glewGetExtension("GL_AMD_shader_stencil_value_export"));
+}
+
+#endif /* GL_AMD_shader_stencil_value_export */
+
+#ifdef GL_AMD_shader_trinary_minmax
+
+static void _glewInfo_GL_AMD_shader_trinary_minmax (void)
+{
+ glewPrintExt("GL_AMD_shader_trinary_minmax", GLEW_AMD_shader_trinary_minmax, glewIsSupported("GL_AMD_shader_trinary_minmax"), glewGetExtension("GL_AMD_shader_trinary_minmax"));
+}
+
+#endif /* GL_AMD_shader_trinary_minmax */
+
+#ifdef GL_AMD_sparse_texture
+
+static void _glewInfo_GL_AMD_sparse_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_sparse_texture", GLEW_AMD_sparse_texture, glewIsSupported("GL_AMD_sparse_texture"), glewGetExtension("GL_AMD_sparse_texture"));
+
+ glewInfoFunc(fi, "glTexStorageSparseAMD", glTexStorageSparseAMD == NULL);
+ glewInfoFunc(fi, "glTextureStorageSparseAMD", glTextureStorageSparseAMD == NULL);
+}
+
+#endif /* GL_AMD_sparse_texture */
+
+#ifdef GL_AMD_stencil_operation_extended
+
+static void _glewInfo_GL_AMD_stencil_operation_extended (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_stencil_operation_extended", GLEW_AMD_stencil_operation_extended, glewIsSupported("GL_AMD_stencil_operation_extended"), glewGetExtension("GL_AMD_stencil_operation_extended"));
+
+ glewInfoFunc(fi, "glStencilOpValueAMD", glStencilOpValueAMD == NULL);
+}
+
+#endif /* GL_AMD_stencil_operation_extended */
+
+#ifdef GL_AMD_texture_gather_bias_lod
+
+static void _glewInfo_GL_AMD_texture_gather_bias_lod (void)
+{
+ glewPrintExt("GL_AMD_texture_gather_bias_lod", GLEW_AMD_texture_gather_bias_lod, glewIsSupported("GL_AMD_texture_gather_bias_lod"), glewGetExtension("GL_AMD_texture_gather_bias_lod"));
+}
+
+#endif /* GL_AMD_texture_gather_bias_lod */
+
+#ifdef GL_AMD_texture_texture4
+
+static void _glewInfo_GL_AMD_texture_texture4 (void)
+{
+ glewPrintExt("GL_AMD_texture_texture4", GLEW_AMD_texture_texture4, glewIsSupported("GL_AMD_texture_texture4"), glewGetExtension("GL_AMD_texture_texture4"));
+}
+
+#endif /* GL_AMD_texture_texture4 */
+
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+
+static void _glewInfo_GL_AMD_transform_feedback3_lines_triangles (void)
+{
+ glewPrintExt("GL_AMD_transform_feedback3_lines_triangles", GLEW_AMD_transform_feedback3_lines_triangles, glewIsSupported("GL_AMD_transform_feedback3_lines_triangles"), glewGetExtension("GL_AMD_transform_feedback3_lines_triangles"));
+}
+
+#endif /* GL_AMD_transform_feedback3_lines_triangles */
+
+#ifdef GL_AMD_transform_feedback4
+
+static void _glewInfo_GL_AMD_transform_feedback4 (void)
+{
+ glewPrintExt("GL_AMD_transform_feedback4", GLEW_AMD_transform_feedback4, glewIsSupported("GL_AMD_transform_feedback4"), glewGetExtension("GL_AMD_transform_feedback4"));
+}
+
+#endif /* GL_AMD_transform_feedback4 */
+
+#ifdef GL_AMD_vertex_shader_layer
+
+static void _glewInfo_GL_AMD_vertex_shader_layer (void)
+{
+ glewPrintExt("GL_AMD_vertex_shader_layer", GLEW_AMD_vertex_shader_layer, glewIsSupported("GL_AMD_vertex_shader_layer"), glewGetExtension("GL_AMD_vertex_shader_layer"));
+}
+
+#endif /* GL_AMD_vertex_shader_layer */
+
+#ifdef GL_AMD_vertex_shader_tessellator
+
+static void _glewInfo_GL_AMD_vertex_shader_tessellator (void)
+{
+ GLboolean fi = glewPrintExt("GL_AMD_vertex_shader_tessellator", GLEW_AMD_vertex_shader_tessellator, glewIsSupported("GL_AMD_vertex_shader_tessellator"), glewGetExtension("GL_AMD_vertex_shader_tessellator"));
+
+ glewInfoFunc(fi, "glTessellationFactorAMD", glTessellationFactorAMD == NULL);
+ glewInfoFunc(fi, "glTessellationModeAMD", glTessellationModeAMD == NULL);
+}
+
+#endif /* GL_AMD_vertex_shader_tessellator */
+
+#ifdef GL_AMD_vertex_shader_viewport_index
+
+static void _glewInfo_GL_AMD_vertex_shader_viewport_index (void)
+{
+ glewPrintExt("GL_AMD_vertex_shader_viewport_index", GLEW_AMD_vertex_shader_viewport_index, glewIsSupported("GL_AMD_vertex_shader_viewport_index"), glewGetExtension("GL_AMD_vertex_shader_viewport_index"));
+}
+
+#endif /* GL_AMD_vertex_shader_viewport_index */
+
+#ifdef GL_ANDROID_extension_pack_es31a
+
+static void _glewInfo_GL_ANDROID_extension_pack_es31a (void)
+{
+ glewPrintExt("GL_ANDROID_extension_pack_es31a", GLEW_ANDROID_extension_pack_es31a, glewIsSupported("GL_ANDROID_extension_pack_es31a"), glewGetExtension("GL_ANDROID_extension_pack_es31a"));
+}
+
+#endif /* GL_ANDROID_extension_pack_es31a */
+
+#ifdef GL_ANGLE_depth_texture
+
+static void _glewInfo_GL_ANGLE_depth_texture (void)
+{
+ glewPrintExt("GL_ANGLE_depth_texture", GLEW_ANGLE_depth_texture, glewIsSupported("GL_ANGLE_depth_texture"), glewGetExtension("GL_ANGLE_depth_texture"));
+}
+
+#endif /* GL_ANGLE_depth_texture */
+
+#ifdef GL_ANGLE_framebuffer_blit
+
+static void _glewInfo_GL_ANGLE_framebuffer_blit (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_framebuffer_blit", GLEW_ANGLE_framebuffer_blit, glewIsSupported("GL_ANGLE_framebuffer_blit"), glewGetExtension("GL_ANGLE_framebuffer_blit"));
+
+ glewInfoFunc(fi, "glBlitFramebufferANGLE", glBlitFramebufferANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_framebuffer_blit */
+
+#ifdef GL_ANGLE_framebuffer_multisample
+
+static void _glewInfo_GL_ANGLE_framebuffer_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_framebuffer_multisample", GLEW_ANGLE_framebuffer_multisample, glewIsSupported("GL_ANGLE_framebuffer_multisample"), glewGetExtension("GL_ANGLE_framebuffer_multisample"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleANGLE", glRenderbufferStorageMultisampleANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_framebuffer_multisample */
+
+#ifdef GL_ANGLE_instanced_arrays
+
+static void _glewInfo_GL_ANGLE_instanced_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_instanced_arrays", GLEW_ANGLE_instanced_arrays, glewIsSupported("GL_ANGLE_instanced_arrays"), glewGetExtension("GL_ANGLE_instanced_arrays"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedANGLE", glDrawArraysInstancedANGLE == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedANGLE", glDrawElementsInstancedANGLE == NULL);
+ glewInfoFunc(fi, "glVertexAttribDivisorANGLE", glVertexAttribDivisorANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_instanced_arrays */
+
+#ifdef GL_ANGLE_pack_reverse_row_order
+
+static void _glewInfo_GL_ANGLE_pack_reverse_row_order (void)
+{
+ glewPrintExt("GL_ANGLE_pack_reverse_row_order", GLEW_ANGLE_pack_reverse_row_order, glewIsSupported("GL_ANGLE_pack_reverse_row_order"), glewGetExtension("GL_ANGLE_pack_reverse_row_order"));
+}
+
+#endif /* GL_ANGLE_pack_reverse_row_order */
+
+#ifdef GL_ANGLE_program_binary
+
+static void _glewInfo_GL_ANGLE_program_binary (void)
+{
+ glewPrintExt("GL_ANGLE_program_binary", GLEW_ANGLE_program_binary, glewIsSupported("GL_ANGLE_program_binary"), glewGetExtension("GL_ANGLE_program_binary"));
+}
+
+#endif /* GL_ANGLE_program_binary */
+
+#ifdef GL_ANGLE_texture_compression_dxt1
+
+static void _glewInfo_GL_ANGLE_texture_compression_dxt1 (void)
+{
+ glewPrintExt("GL_ANGLE_texture_compression_dxt1", GLEW_ANGLE_texture_compression_dxt1, glewIsSupported("GL_ANGLE_texture_compression_dxt1"), glewGetExtension("GL_ANGLE_texture_compression_dxt1"));
+}
+
+#endif /* GL_ANGLE_texture_compression_dxt1 */
+
+#ifdef GL_ANGLE_texture_compression_dxt3
+
+static void _glewInfo_GL_ANGLE_texture_compression_dxt3 (void)
+{
+ glewPrintExt("GL_ANGLE_texture_compression_dxt3", GLEW_ANGLE_texture_compression_dxt3, glewIsSupported("GL_ANGLE_texture_compression_dxt3"), glewGetExtension("GL_ANGLE_texture_compression_dxt3"));
+}
+
+#endif /* GL_ANGLE_texture_compression_dxt3 */
+
+#ifdef GL_ANGLE_texture_compression_dxt5
+
+static void _glewInfo_GL_ANGLE_texture_compression_dxt5 (void)
+{
+ glewPrintExt("GL_ANGLE_texture_compression_dxt5", GLEW_ANGLE_texture_compression_dxt5, glewIsSupported("GL_ANGLE_texture_compression_dxt5"), glewGetExtension("GL_ANGLE_texture_compression_dxt5"));
+}
+
+#endif /* GL_ANGLE_texture_compression_dxt5 */
+
+#ifdef GL_ANGLE_texture_usage
+
+static void _glewInfo_GL_ANGLE_texture_usage (void)
+{
+ glewPrintExt("GL_ANGLE_texture_usage", GLEW_ANGLE_texture_usage, glewIsSupported("GL_ANGLE_texture_usage"), glewGetExtension("GL_ANGLE_texture_usage"));
+}
+
+#endif /* GL_ANGLE_texture_usage */
+
+#ifdef GL_ANGLE_timer_query
+
+static void _glewInfo_GL_ANGLE_timer_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_timer_query", GLEW_ANGLE_timer_query, glewIsSupported("GL_ANGLE_timer_query"), glewGetExtension("GL_ANGLE_timer_query"));
+
+ glewInfoFunc(fi, "glBeginQueryANGLE", glBeginQueryANGLE == NULL);
+ glewInfoFunc(fi, "glDeleteQueriesANGLE", glDeleteQueriesANGLE == NULL);
+ glewInfoFunc(fi, "glEndQueryANGLE", glEndQueryANGLE == NULL);
+ glewInfoFunc(fi, "glGenQueriesANGLE", glGenQueriesANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryObjecti64vANGLE", glGetQueryObjecti64vANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectivANGLE", glGetQueryObjectivANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectui64vANGLE", glGetQueryObjectui64vANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectuivANGLE", glGetQueryObjectuivANGLE == NULL);
+ glewInfoFunc(fi, "glGetQueryivANGLE", glGetQueryivANGLE == NULL);
+ glewInfoFunc(fi, "glIsQueryANGLE", glIsQueryANGLE == NULL);
+ glewInfoFunc(fi, "glQueryCounterANGLE", glQueryCounterANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_timer_query */
+
+#ifdef GL_ANGLE_translated_shader_source
+
+static void _glewInfo_GL_ANGLE_translated_shader_source (void)
+{
+ GLboolean fi = glewPrintExt("GL_ANGLE_translated_shader_source", GLEW_ANGLE_translated_shader_source, glewIsSupported("GL_ANGLE_translated_shader_source"), glewGetExtension("GL_ANGLE_translated_shader_source"));
+
+ glewInfoFunc(fi, "glGetTranslatedShaderSourceANGLE", glGetTranslatedShaderSourceANGLE == NULL);
+}
+
+#endif /* GL_ANGLE_translated_shader_source */
+
+#ifdef GL_APPLE_aux_depth_stencil
+
+static void _glewInfo_GL_APPLE_aux_depth_stencil (void)
+{
+ glewPrintExt("GL_APPLE_aux_depth_stencil", GLEW_APPLE_aux_depth_stencil, glewIsSupported("GL_APPLE_aux_depth_stencil"), glewGetExtension("GL_APPLE_aux_depth_stencil"));
+}
+
+#endif /* GL_APPLE_aux_depth_stencil */
+
+#ifdef GL_APPLE_client_storage
+
+static void _glewInfo_GL_APPLE_client_storage (void)
+{
+ glewPrintExt("GL_APPLE_client_storage", GLEW_APPLE_client_storage, glewIsSupported("GL_APPLE_client_storage"), glewGetExtension("GL_APPLE_client_storage"));
+}
+
+#endif /* GL_APPLE_client_storage */
+
+#ifdef GL_APPLE_clip_distance
+
+static void _glewInfo_GL_APPLE_clip_distance (void)
+{
+ glewPrintExt("GL_APPLE_clip_distance", GLEW_APPLE_clip_distance, glewIsSupported("GL_APPLE_clip_distance"), glewGetExtension("GL_APPLE_clip_distance"));
+}
+
+#endif /* GL_APPLE_clip_distance */
+
+#ifdef GL_APPLE_color_buffer_packed_float
+
+static void _glewInfo_GL_APPLE_color_buffer_packed_float (void)
+{
+ glewPrintExt("GL_APPLE_color_buffer_packed_float", GLEW_APPLE_color_buffer_packed_float, glewIsSupported("GL_APPLE_color_buffer_packed_float"), glewGetExtension("GL_APPLE_color_buffer_packed_float"));
+}
+
+#endif /* GL_APPLE_color_buffer_packed_float */
+
+#ifdef GL_APPLE_copy_texture_levels
+
+static void _glewInfo_GL_APPLE_copy_texture_levels (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_copy_texture_levels", GLEW_APPLE_copy_texture_levels, glewIsSupported("GL_APPLE_copy_texture_levels"), glewGetExtension("GL_APPLE_copy_texture_levels"));
+
+ glewInfoFunc(fi, "glCopyTextureLevelsAPPLE", glCopyTextureLevelsAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_copy_texture_levels */
+
+#ifdef GL_APPLE_element_array
+
+static void _glewInfo_GL_APPLE_element_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_element_array", GLEW_APPLE_element_array, glewIsSupported("GL_APPLE_element_array"), glewGetExtension("GL_APPLE_element_array"));
+
+ glewInfoFunc(fi, "glDrawElementArrayAPPLE", glDrawElementArrayAPPLE == NULL);
+ glewInfoFunc(fi, "glDrawRangeElementArrayAPPLE", glDrawRangeElementArrayAPPLE == NULL);
+ glewInfoFunc(fi, "glElementPointerAPPLE", glElementPointerAPPLE == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementArrayAPPLE", glMultiDrawElementArrayAPPLE == NULL);
+ glewInfoFunc(fi, "glMultiDrawRangeElementArrayAPPLE", glMultiDrawRangeElementArrayAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_element_array */
+
+#ifdef GL_APPLE_fence
+
+static void _glewInfo_GL_APPLE_fence (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_fence", GLEW_APPLE_fence, glewIsSupported("GL_APPLE_fence"), glewGetExtension("GL_APPLE_fence"));
+
+ glewInfoFunc(fi, "glDeleteFencesAPPLE", glDeleteFencesAPPLE == NULL);
+ glewInfoFunc(fi, "glFinishFenceAPPLE", glFinishFenceAPPLE == NULL);
+ glewInfoFunc(fi, "glFinishObjectAPPLE", glFinishObjectAPPLE == NULL);
+ glewInfoFunc(fi, "glGenFencesAPPLE", glGenFencesAPPLE == NULL);
+ glewInfoFunc(fi, "glIsFenceAPPLE", glIsFenceAPPLE == NULL);
+ glewInfoFunc(fi, "glSetFenceAPPLE", glSetFenceAPPLE == NULL);
+ glewInfoFunc(fi, "glTestFenceAPPLE", glTestFenceAPPLE == NULL);
+ glewInfoFunc(fi, "glTestObjectAPPLE", glTestObjectAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_fence */
+
+#ifdef GL_APPLE_float_pixels
+
+static void _glewInfo_GL_APPLE_float_pixels (void)
+{
+ glewPrintExt("GL_APPLE_float_pixels", GLEW_APPLE_float_pixels, glewIsSupported("GL_APPLE_float_pixels"), glewGetExtension("GL_APPLE_float_pixels"));
+}
+
+#endif /* GL_APPLE_float_pixels */
+
+#ifdef GL_APPLE_flush_buffer_range
+
+static void _glewInfo_GL_APPLE_flush_buffer_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_flush_buffer_range", GLEW_APPLE_flush_buffer_range, glewIsSupported("GL_APPLE_flush_buffer_range"), glewGetExtension("GL_APPLE_flush_buffer_range"));
+
+ glewInfoFunc(fi, "glBufferParameteriAPPLE", glBufferParameteriAPPLE == NULL);
+ glewInfoFunc(fi, "glFlushMappedBufferRangeAPPLE", glFlushMappedBufferRangeAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_flush_buffer_range */
+
+#ifdef GL_APPLE_framebuffer_multisample
+
+static void _glewInfo_GL_APPLE_framebuffer_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_framebuffer_multisample", GLEW_APPLE_framebuffer_multisample, glewIsSupported("GL_APPLE_framebuffer_multisample"), glewGetExtension("GL_APPLE_framebuffer_multisample"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleAPPLE", glRenderbufferStorageMultisampleAPPLE == NULL);
+ glewInfoFunc(fi, "glResolveMultisampleFramebufferAPPLE", glResolveMultisampleFramebufferAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_framebuffer_multisample */
+
+#ifdef GL_APPLE_object_purgeable
+
+static void _glewInfo_GL_APPLE_object_purgeable (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_object_purgeable", GLEW_APPLE_object_purgeable, glewIsSupported("GL_APPLE_object_purgeable"), glewGetExtension("GL_APPLE_object_purgeable"));
+
+ glewInfoFunc(fi, "glGetObjectParameterivAPPLE", glGetObjectParameterivAPPLE == NULL);
+ glewInfoFunc(fi, "glObjectPurgeableAPPLE", glObjectPurgeableAPPLE == NULL);
+ glewInfoFunc(fi, "glObjectUnpurgeableAPPLE", glObjectUnpurgeableAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_object_purgeable */
+
+#ifdef GL_APPLE_pixel_buffer
+
+static void _glewInfo_GL_APPLE_pixel_buffer (void)
+{
+ glewPrintExt("GL_APPLE_pixel_buffer", GLEW_APPLE_pixel_buffer, glewIsSupported("GL_APPLE_pixel_buffer"), glewGetExtension("GL_APPLE_pixel_buffer"));
+}
+
+#endif /* GL_APPLE_pixel_buffer */
+
+#ifdef GL_APPLE_rgb_422
+
+static void _glewInfo_GL_APPLE_rgb_422 (void)
+{
+ glewPrintExt("GL_APPLE_rgb_422", GLEW_APPLE_rgb_422, glewIsSupported("GL_APPLE_rgb_422"), glewGetExtension("GL_APPLE_rgb_422"));
+}
+
+#endif /* GL_APPLE_rgb_422 */
+
+#ifdef GL_APPLE_row_bytes
+
+static void _glewInfo_GL_APPLE_row_bytes (void)
+{
+ glewPrintExt("GL_APPLE_row_bytes", GLEW_APPLE_row_bytes, glewIsSupported("GL_APPLE_row_bytes"), glewGetExtension("GL_APPLE_row_bytes"));
+}
+
+#endif /* GL_APPLE_row_bytes */
+
+#ifdef GL_APPLE_specular_vector
+
+static void _glewInfo_GL_APPLE_specular_vector (void)
+{
+ glewPrintExt("GL_APPLE_specular_vector", GLEW_APPLE_specular_vector, glewIsSupported("GL_APPLE_specular_vector"), glewGetExtension("GL_APPLE_specular_vector"));
+}
+
+#endif /* GL_APPLE_specular_vector */
+
+#ifdef GL_APPLE_sync
+
+static void _glewInfo_GL_APPLE_sync (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_sync", GLEW_APPLE_sync, glewIsSupported("GL_APPLE_sync"), glewGetExtension("GL_APPLE_sync"));
+
+ glewInfoFunc(fi, "glClientWaitSyncAPPLE", glClientWaitSyncAPPLE == NULL);
+ glewInfoFunc(fi, "glDeleteSyncAPPLE", glDeleteSyncAPPLE == NULL);
+ glewInfoFunc(fi, "glFenceSyncAPPLE", glFenceSyncAPPLE == NULL);
+ glewInfoFunc(fi, "glGetInteger64vAPPLE", glGetInteger64vAPPLE == NULL);
+ glewInfoFunc(fi, "glGetSyncivAPPLE", glGetSyncivAPPLE == NULL);
+ glewInfoFunc(fi, "glIsSyncAPPLE", glIsSyncAPPLE == NULL);
+ glewInfoFunc(fi, "glWaitSyncAPPLE", glWaitSyncAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_sync */
+
+#ifdef GL_APPLE_texture_2D_limited_npot
+
+static void _glewInfo_GL_APPLE_texture_2D_limited_npot (void)
+{
+ glewPrintExt("GL_APPLE_texture_2D_limited_npot", GLEW_APPLE_texture_2D_limited_npot, glewIsSupported("GL_APPLE_texture_2D_limited_npot"), glewGetExtension("GL_APPLE_texture_2D_limited_npot"));
+}
+
+#endif /* GL_APPLE_texture_2D_limited_npot */
+
+#ifdef GL_APPLE_texture_format_BGRA8888
+
+static void _glewInfo_GL_APPLE_texture_format_BGRA8888 (void)
+{
+ glewPrintExt("GL_APPLE_texture_format_BGRA8888", GLEW_APPLE_texture_format_BGRA8888, glewIsSupported("GL_APPLE_texture_format_BGRA8888"), glewGetExtension("GL_APPLE_texture_format_BGRA8888"));
+}
+
+#endif /* GL_APPLE_texture_format_BGRA8888 */
+
+#ifdef GL_APPLE_texture_max_level
+
+static void _glewInfo_GL_APPLE_texture_max_level (void)
+{
+ glewPrintExt("GL_APPLE_texture_max_level", GLEW_APPLE_texture_max_level, glewIsSupported("GL_APPLE_texture_max_level"), glewGetExtension("GL_APPLE_texture_max_level"));
+}
+
+#endif /* GL_APPLE_texture_max_level */
+
+#ifdef GL_APPLE_texture_packed_float
+
+static void _glewInfo_GL_APPLE_texture_packed_float (void)
+{
+ glewPrintExt("GL_APPLE_texture_packed_float", GLEW_APPLE_texture_packed_float, glewIsSupported("GL_APPLE_texture_packed_float"), glewGetExtension("GL_APPLE_texture_packed_float"));
+}
+
+#endif /* GL_APPLE_texture_packed_float */
+
+#ifdef GL_APPLE_texture_range
+
+static void _glewInfo_GL_APPLE_texture_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_texture_range", GLEW_APPLE_texture_range, glewIsSupported("GL_APPLE_texture_range"), glewGetExtension("GL_APPLE_texture_range"));
+
+ glewInfoFunc(fi, "glGetTexParameterPointervAPPLE", glGetTexParameterPointervAPPLE == NULL);
+ glewInfoFunc(fi, "glTextureRangeAPPLE", glTextureRangeAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_texture_range */
+
+#ifdef GL_APPLE_transform_hint
+
+static void _glewInfo_GL_APPLE_transform_hint (void)
+{
+ glewPrintExt("GL_APPLE_transform_hint", GLEW_APPLE_transform_hint, glewIsSupported("GL_APPLE_transform_hint"), glewGetExtension("GL_APPLE_transform_hint"));
+}
+
+#endif /* GL_APPLE_transform_hint */
+
+#ifdef GL_APPLE_vertex_array_object
+
+static void _glewInfo_GL_APPLE_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_vertex_array_object", GLEW_APPLE_vertex_array_object, glewIsSupported("GL_APPLE_vertex_array_object"), glewGetExtension("GL_APPLE_vertex_array_object"));
+
+ glewInfoFunc(fi, "glBindVertexArrayAPPLE", glBindVertexArrayAPPLE == NULL);
+ glewInfoFunc(fi, "glDeleteVertexArraysAPPLE", glDeleteVertexArraysAPPLE == NULL);
+ glewInfoFunc(fi, "glGenVertexArraysAPPLE", glGenVertexArraysAPPLE == NULL);
+ glewInfoFunc(fi, "glIsVertexArrayAPPLE", glIsVertexArrayAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_vertex_array_object */
+
+#ifdef GL_APPLE_vertex_array_range
+
+static void _glewInfo_GL_APPLE_vertex_array_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_vertex_array_range", GLEW_APPLE_vertex_array_range, glewIsSupported("GL_APPLE_vertex_array_range"), glewGetExtension("GL_APPLE_vertex_array_range"));
+
+ glewInfoFunc(fi, "glFlushVertexArrayRangeAPPLE", glFlushVertexArrayRangeAPPLE == NULL);
+ glewInfoFunc(fi, "glVertexArrayParameteriAPPLE", glVertexArrayParameteriAPPLE == NULL);
+ glewInfoFunc(fi, "glVertexArrayRangeAPPLE", glVertexArrayRangeAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_vertex_array_range */
+
+#ifdef GL_APPLE_vertex_program_evaluators
+
+static void _glewInfo_GL_APPLE_vertex_program_evaluators (void)
+{
+ GLboolean fi = glewPrintExt("GL_APPLE_vertex_program_evaluators", GLEW_APPLE_vertex_program_evaluators, glewIsSupported("GL_APPLE_vertex_program_evaluators"), glewGetExtension("GL_APPLE_vertex_program_evaluators"));
+
+ glewInfoFunc(fi, "glDisableVertexAttribAPPLE", glDisableVertexAttribAPPLE == NULL);
+ glewInfoFunc(fi, "glEnableVertexAttribAPPLE", glEnableVertexAttribAPPLE == NULL);
+ glewInfoFunc(fi, "glIsVertexAttribEnabledAPPLE", glIsVertexAttribEnabledAPPLE == NULL);
+ glewInfoFunc(fi, "glMapVertexAttrib1dAPPLE", glMapVertexAttrib1dAPPLE == NULL);
+ glewInfoFunc(fi, "glMapVertexAttrib1fAPPLE", glMapVertexAttrib1fAPPLE == NULL);
+ glewInfoFunc(fi, "glMapVertexAttrib2dAPPLE", glMapVertexAttrib2dAPPLE == NULL);
+ glewInfoFunc(fi, "glMapVertexAttrib2fAPPLE", glMapVertexAttrib2fAPPLE == NULL);
+}
+
+#endif /* GL_APPLE_vertex_program_evaluators */
+
+#ifdef GL_APPLE_ycbcr_422
+
+static void _glewInfo_GL_APPLE_ycbcr_422 (void)
+{
+ glewPrintExt("GL_APPLE_ycbcr_422", GLEW_APPLE_ycbcr_422, glewIsSupported("GL_APPLE_ycbcr_422"), glewGetExtension("GL_APPLE_ycbcr_422"));
+}
+
+#endif /* GL_APPLE_ycbcr_422 */
+
+#ifdef GL_ARB_ES2_compatibility
+
+static void _glewInfo_GL_ARB_ES2_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_ES2_compatibility", GLEW_ARB_ES2_compatibility, glewIsSupported("GL_ARB_ES2_compatibility"), glewGetExtension("GL_ARB_ES2_compatibility"));
+
+ glewInfoFunc(fi, "glClearDepthf", glClearDepthf == NULL);
+ glewInfoFunc(fi, "glDepthRangef", glDepthRangef == NULL);
+ glewInfoFunc(fi, "glGetShaderPrecisionFormat", glGetShaderPrecisionFormat == NULL);
+ glewInfoFunc(fi, "glReleaseShaderCompiler", glReleaseShaderCompiler == NULL);
+ glewInfoFunc(fi, "glShaderBinary", glShaderBinary == NULL);
+}
+
+#endif /* GL_ARB_ES2_compatibility */
+
+#ifdef GL_ARB_ES3_1_compatibility
+
+static void _glewInfo_GL_ARB_ES3_1_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_ES3_1_compatibility", GLEW_ARB_ES3_1_compatibility, glewIsSupported("GL_ARB_ES3_1_compatibility"), glewGetExtension("GL_ARB_ES3_1_compatibility"));
+
+ glewInfoFunc(fi, "glMemoryBarrierByRegion", glMemoryBarrierByRegion == NULL);
+}
+
+#endif /* GL_ARB_ES3_1_compatibility */
+
+#ifdef GL_ARB_ES3_2_compatibility
+
+static void _glewInfo_GL_ARB_ES3_2_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_ES3_2_compatibility", GLEW_ARB_ES3_2_compatibility, glewIsSupported("GL_ARB_ES3_2_compatibility"), glewGetExtension("GL_ARB_ES3_2_compatibility"));
+
+ glewInfoFunc(fi, "glPrimitiveBoundingBoxARB", glPrimitiveBoundingBoxARB == NULL);
+}
+
+#endif /* GL_ARB_ES3_2_compatibility */
+
+#ifdef GL_ARB_ES3_compatibility
+
+static void _glewInfo_GL_ARB_ES3_compatibility (void)
+{
+ glewPrintExt("GL_ARB_ES3_compatibility", GLEW_ARB_ES3_compatibility, glewIsSupported("GL_ARB_ES3_compatibility"), glewGetExtension("GL_ARB_ES3_compatibility"));
+}
+
+#endif /* GL_ARB_ES3_compatibility */
+
+#ifdef GL_ARB_arrays_of_arrays
+
+static void _glewInfo_GL_ARB_arrays_of_arrays (void)
+{
+ glewPrintExt("GL_ARB_arrays_of_arrays", GLEW_ARB_arrays_of_arrays, glewIsSupported("GL_ARB_arrays_of_arrays"), glewGetExtension("GL_ARB_arrays_of_arrays"));
+}
+
+#endif /* GL_ARB_arrays_of_arrays */
+
+#ifdef GL_ARB_base_instance
+
+static void _glewInfo_GL_ARB_base_instance (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_base_instance", GLEW_ARB_base_instance, glewIsSupported("GL_ARB_base_instance"), glewGetExtension("GL_ARB_base_instance"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedBaseInstance", glDrawArraysInstancedBaseInstance == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseInstance", glDrawElementsInstancedBaseInstance == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseVertexBaseInstance", glDrawElementsInstancedBaseVertexBaseInstance == NULL);
+}
+
+#endif /* GL_ARB_base_instance */
+
+#ifdef GL_ARB_bindless_texture
+
+static void _glewInfo_GL_ARB_bindless_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_bindless_texture", GLEW_ARB_bindless_texture, glewIsSupported("GL_ARB_bindless_texture"), glewGetExtension("GL_ARB_bindless_texture"));
+
+ glewInfoFunc(fi, "glGetImageHandleARB", glGetImageHandleARB == NULL);
+ glewInfoFunc(fi, "glGetTextureHandleARB", glGetTextureHandleARB == NULL);
+ glewInfoFunc(fi, "glGetTextureSamplerHandleARB", glGetTextureSamplerHandleARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribLui64vARB", glGetVertexAttribLui64vARB == NULL);
+ glewInfoFunc(fi, "glIsImageHandleResidentARB", glIsImageHandleResidentARB == NULL);
+ glewInfoFunc(fi, "glIsTextureHandleResidentARB", glIsTextureHandleResidentARB == NULL);
+ glewInfoFunc(fi, "glMakeImageHandleNonResidentARB", glMakeImageHandleNonResidentARB == NULL);
+ glewInfoFunc(fi, "glMakeImageHandleResidentARB", glMakeImageHandleResidentARB == NULL);
+ glewInfoFunc(fi, "glMakeTextureHandleNonResidentARB", glMakeTextureHandleNonResidentARB == NULL);
+ glewInfoFunc(fi, "glMakeTextureHandleResidentARB", glMakeTextureHandleResidentARB == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64ARB", glProgramUniformHandleui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64vARB", glProgramUniformHandleui64vARB == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64ARB", glUniformHandleui64ARB == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64vARB", glUniformHandleui64vARB == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1ui64ARB", glVertexAttribL1ui64ARB == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1ui64vARB", glVertexAttribL1ui64vARB == NULL);
+}
+
+#endif /* GL_ARB_bindless_texture */
+
+#ifdef GL_ARB_blend_func_extended
+
+static void _glewInfo_GL_ARB_blend_func_extended (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_blend_func_extended", GLEW_ARB_blend_func_extended, glewIsSupported("GL_ARB_blend_func_extended"), glewGetExtension("GL_ARB_blend_func_extended"));
+
+ glewInfoFunc(fi, "glBindFragDataLocationIndexed", glBindFragDataLocationIndexed == NULL);
+ glewInfoFunc(fi, "glGetFragDataIndex", glGetFragDataIndex == NULL);
+}
+
+#endif /* GL_ARB_blend_func_extended */
+
+#ifdef GL_ARB_buffer_storage
+
+static void _glewInfo_GL_ARB_buffer_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_buffer_storage", GLEW_ARB_buffer_storage, glewIsSupported("GL_ARB_buffer_storage"), glewGetExtension("GL_ARB_buffer_storage"));
+
+ glewInfoFunc(fi, "glBufferStorage", glBufferStorage == NULL);
+}
+
+#endif /* GL_ARB_buffer_storage */
+
+#ifdef GL_ARB_cl_event
+
+static void _glewInfo_GL_ARB_cl_event (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_cl_event", GLEW_ARB_cl_event, glewIsSupported("GL_ARB_cl_event"), glewGetExtension("GL_ARB_cl_event"));
+
+ glewInfoFunc(fi, "glCreateSyncFromCLeventARB", glCreateSyncFromCLeventARB == NULL);
+}
+
+#endif /* GL_ARB_cl_event */
+
+#ifdef GL_ARB_clear_buffer_object
+
+static void _glewInfo_GL_ARB_clear_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_clear_buffer_object", GLEW_ARB_clear_buffer_object, glewIsSupported("GL_ARB_clear_buffer_object"), glewGetExtension("GL_ARB_clear_buffer_object"));
+
+ glewInfoFunc(fi, "glClearBufferData", glClearBufferData == NULL);
+ glewInfoFunc(fi, "glClearBufferSubData", glClearBufferSubData == NULL);
+ glewInfoFunc(fi, "glClearNamedBufferDataEXT", glClearNamedBufferDataEXT == NULL);
+ glewInfoFunc(fi, "glClearNamedBufferSubDataEXT", glClearNamedBufferSubDataEXT == NULL);
+}
+
+#endif /* GL_ARB_clear_buffer_object */
+
+#ifdef GL_ARB_clear_texture
+
+static void _glewInfo_GL_ARB_clear_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_clear_texture", GLEW_ARB_clear_texture, glewIsSupported("GL_ARB_clear_texture"), glewGetExtension("GL_ARB_clear_texture"));
+
+ glewInfoFunc(fi, "glClearTexImage", glClearTexImage == NULL);
+ glewInfoFunc(fi, "glClearTexSubImage", glClearTexSubImage == NULL);
+}
+
+#endif /* GL_ARB_clear_texture */
+
+#ifdef GL_ARB_clip_control
+
+static void _glewInfo_GL_ARB_clip_control (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_clip_control", GLEW_ARB_clip_control, glewIsSupported("GL_ARB_clip_control"), glewGetExtension("GL_ARB_clip_control"));
+
+ glewInfoFunc(fi, "glClipControl", glClipControl == NULL);
+}
+
+#endif /* GL_ARB_clip_control */
+
+#ifdef GL_ARB_color_buffer_float
+
+static void _glewInfo_GL_ARB_color_buffer_float (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_color_buffer_float", GLEW_ARB_color_buffer_float, glewIsSupported("GL_ARB_color_buffer_float"), glewGetExtension("GL_ARB_color_buffer_float"));
+
+ glewInfoFunc(fi, "glClampColorARB", glClampColorARB == NULL);
+}
+
+#endif /* GL_ARB_color_buffer_float */
+
+#ifdef GL_ARB_compatibility
+
+static void _glewInfo_GL_ARB_compatibility (void)
+{
+ glewPrintExt("GL_ARB_compatibility", GLEW_ARB_compatibility, glewIsSupported("GL_ARB_compatibility"), glewGetExtension("GL_ARB_compatibility"));
+}
+
+#endif /* GL_ARB_compatibility */
+
+#ifdef GL_ARB_compressed_texture_pixel_storage
+
+static void _glewInfo_GL_ARB_compressed_texture_pixel_storage (void)
+{
+ glewPrintExt("GL_ARB_compressed_texture_pixel_storage", GLEW_ARB_compressed_texture_pixel_storage, glewIsSupported("GL_ARB_compressed_texture_pixel_storage"), glewGetExtension("GL_ARB_compressed_texture_pixel_storage"));
+}
+
+#endif /* GL_ARB_compressed_texture_pixel_storage */
+
+#ifdef GL_ARB_compute_shader
+
+static void _glewInfo_GL_ARB_compute_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_compute_shader", GLEW_ARB_compute_shader, glewIsSupported("GL_ARB_compute_shader"), glewGetExtension("GL_ARB_compute_shader"));
+
+ glewInfoFunc(fi, "glDispatchCompute", glDispatchCompute == NULL);
+ glewInfoFunc(fi, "glDispatchComputeIndirect", glDispatchComputeIndirect == NULL);
+}
+
+#endif /* GL_ARB_compute_shader */
+
+#ifdef GL_ARB_compute_variable_group_size
+
+static void _glewInfo_GL_ARB_compute_variable_group_size (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_compute_variable_group_size", GLEW_ARB_compute_variable_group_size, glewIsSupported("GL_ARB_compute_variable_group_size"), glewGetExtension("GL_ARB_compute_variable_group_size"));
+
+ glewInfoFunc(fi, "glDispatchComputeGroupSizeARB", glDispatchComputeGroupSizeARB == NULL);
+}
+
+#endif /* GL_ARB_compute_variable_group_size */
+
+#ifdef GL_ARB_conditional_render_inverted
+
+static void _glewInfo_GL_ARB_conditional_render_inverted (void)
+{
+ glewPrintExt("GL_ARB_conditional_render_inverted", GLEW_ARB_conditional_render_inverted, glewIsSupported("GL_ARB_conditional_render_inverted"), glewGetExtension("GL_ARB_conditional_render_inverted"));
+}
+
+#endif /* GL_ARB_conditional_render_inverted */
+
+#ifdef GL_ARB_conservative_depth
+
+static void _glewInfo_GL_ARB_conservative_depth (void)
+{
+ glewPrintExt("GL_ARB_conservative_depth", GLEW_ARB_conservative_depth, glewIsSupported("GL_ARB_conservative_depth"), glewGetExtension("GL_ARB_conservative_depth"));
+}
+
+#endif /* GL_ARB_conservative_depth */
+
+#ifdef GL_ARB_copy_buffer
+
+static void _glewInfo_GL_ARB_copy_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_copy_buffer", GLEW_ARB_copy_buffer, glewIsSupported("GL_ARB_copy_buffer"), glewGetExtension("GL_ARB_copy_buffer"));
+
+ glewInfoFunc(fi, "glCopyBufferSubData", glCopyBufferSubData == NULL);
+}
+
+#endif /* GL_ARB_copy_buffer */
+
+#ifdef GL_ARB_copy_image
+
+static void _glewInfo_GL_ARB_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_copy_image", GLEW_ARB_copy_image, glewIsSupported("GL_ARB_copy_image"), glewGetExtension("GL_ARB_copy_image"));
+
+ glewInfoFunc(fi, "glCopyImageSubData", glCopyImageSubData == NULL);
+}
+
+#endif /* GL_ARB_copy_image */
+
+#ifdef GL_ARB_cull_distance
+
+static void _glewInfo_GL_ARB_cull_distance (void)
+{
+ glewPrintExt("GL_ARB_cull_distance", GLEW_ARB_cull_distance, glewIsSupported("GL_ARB_cull_distance"), glewGetExtension("GL_ARB_cull_distance"));
+}
+
+#endif /* GL_ARB_cull_distance */
+
+#ifdef GL_ARB_debug_output
+
+static void _glewInfo_GL_ARB_debug_output (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_debug_output", GLEW_ARB_debug_output, glewIsSupported("GL_ARB_debug_output"), glewGetExtension("GL_ARB_debug_output"));
+
+ glewInfoFunc(fi, "glDebugMessageCallbackARB", glDebugMessageCallbackARB == NULL);
+ glewInfoFunc(fi, "glDebugMessageControlARB", glDebugMessageControlARB == NULL);
+ glewInfoFunc(fi, "glDebugMessageInsertARB", glDebugMessageInsertARB == NULL);
+ glewInfoFunc(fi, "glGetDebugMessageLogARB", glGetDebugMessageLogARB == NULL);
+}
+
+#endif /* GL_ARB_debug_output */
+
+#ifdef GL_ARB_depth_buffer_float
+
+static void _glewInfo_GL_ARB_depth_buffer_float (void)
+{
+ glewPrintExt("GL_ARB_depth_buffer_float", GLEW_ARB_depth_buffer_float, glewIsSupported("GL_ARB_depth_buffer_float"), glewGetExtension("GL_ARB_depth_buffer_float"));
+}
+
+#endif /* GL_ARB_depth_buffer_float */
+
+#ifdef GL_ARB_depth_clamp
+
+static void _glewInfo_GL_ARB_depth_clamp (void)
+{
+ glewPrintExt("GL_ARB_depth_clamp", GLEW_ARB_depth_clamp, glewIsSupported("GL_ARB_depth_clamp"), glewGetExtension("GL_ARB_depth_clamp"));
+}
+
+#endif /* GL_ARB_depth_clamp */
+
+#ifdef GL_ARB_depth_texture
+
+static void _glewInfo_GL_ARB_depth_texture (void)
+{
+ glewPrintExt("GL_ARB_depth_texture", GLEW_ARB_depth_texture, glewIsSupported("GL_ARB_depth_texture"), glewGetExtension("GL_ARB_depth_texture"));
+}
+
+#endif /* GL_ARB_depth_texture */
+
+#ifdef GL_ARB_derivative_control
+
+static void _glewInfo_GL_ARB_derivative_control (void)
+{
+ glewPrintExt("GL_ARB_derivative_control", GLEW_ARB_derivative_control, glewIsSupported("GL_ARB_derivative_control"), glewGetExtension("GL_ARB_derivative_control"));
+}
+
+#endif /* GL_ARB_derivative_control */
+
+#ifdef GL_ARB_direct_state_access
+
+static void _glewInfo_GL_ARB_direct_state_access (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_direct_state_access", GLEW_ARB_direct_state_access, glewIsSupported("GL_ARB_direct_state_access"), glewGetExtension("GL_ARB_direct_state_access"));
+
+ glewInfoFunc(fi, "glBindTextureUnit", glBindTextureUnit == NULL);
+ glewInfoFunc(fi, "glBlitNamedFramebuffer", glBlitNamedFramebuffer == NULL);
+ glewInfoFunc(fi, "glCheckNamedFramebufferStatus", glCheckNamedFramebufferStatus == NULL);
+ glewInfoFunc(fi, "glClearNamedBufferData", glClearNamedBufferData == NULL);
+ glewInfoFunc(fi, "glClearNamedBufferSubData", glClearNamedBufferSubData == NULL);
+ glewInfoFunc(fi, "glClearNamedFramebufferfi", glClearNamedFramebufferfi == NULL);
+ glewInfoFunc(fi, "glClearNamedFramebufferfv", glClearNamedFramebufferfv == NULL);
+ glewInfoFunc(fi, "glClearNamedFramebufferiv", glClearNamedFramebufferiv == NULL);
+ glewInfoFunc(fi, "glClearNamedFramebufferuiv", glClearNamedFramebufferuiv == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage1D", glCompressedTextureSubImage1D == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage2D", glCompressedTextureSubImage2D == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage3D", glCompressedTextureSubImage3D == NULL);
+ glewInfoFunc(fi, "glCopyNamedBufferSubData", glCopyNamedBufferSubData == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage1D", glCopyTextureSubImage1D == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage2D", glCopyTextureSubImage2D == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage3D", glCopyTextureSubImage3D == NULL);
+ glewInfoFunc(fi, "glCreateBuffers", glCreateBuffers == NULL);
+ glewInfoFunc(fi, "glCreateFramebuffers", glCreateFramebuffers == NULL);
+ glewInfoFunc(fi, "glCreateProgramPipelines", glCreateProgramPipelines == NULL);
+ glewInfoFunc(fi, "glCreateQueries", glCreateQueries == NULL);
+ glewInfoFunc(fi, "glCreateRenderbuffers", glCreateRenderbuffers == NULL);
+ glewInfoFunc(fi, "glCreateSamplers", glCreateSamplers == NULL);
+ glewInfoFunc(fi, "glCreateTextures", glCreateTextures == NULL);
+ glewInfoFunc(fi, "glCreateTransformFeedbacks", glCreateTransformFeedbacks == NULL);
+ glewInfoFunc(fi, "glCreateVertexArrays", glCreateVertexArrays == NULL);
+ glewInfoFunc(fi, "glDisableVertexArrayAttrib", glDisableVertexArrayAttrib == NULL);
+ glewInfoFunc(fi, "glEnableVertexArrayAttrib", glEnableVertexArrayAttrib == NULL);
+ glewInfoFunc(fi, "glFlushMappedNamedBufferRange", glFlushMappedNamedBufferRange == NULL);
+ glewInfoFunc(fi, "glGenerateTextureMipmap", glGenerateTextureMipmap == NULL);
+ glewInfoFunc(fi, "glGetCompressedTextureImage", glGetCompressedTextureImage == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferParameteri64v", glGetNamedBufferParameteri64v == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferParameteriv", glGetNamedBufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferPointerv", glGetNamedBufferPointerv == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferSubData", glGetNamedBufferSubData == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferAttachmentParameteriv", glGetNamedFramebufferAttachmentParameteriv == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferParameteriv", glGetNamedFramebufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetNamedRenderbufferParameteriv", glGetNamedRenderbufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetQueryBufferObjecti64v", glGetQueryBufferObjecti64v == NULL);
+ glewInfoFunc(fi, "glGetQueryBufferObjectiv", glGetQueryBufferObjectiv == NULL);
+ glewInfoFunc(fi, "glGetQueryBufferObjectui64v", glGetQueryBufferObjectui64v == NULL);
+ glewInfoFunc(fi, "glGetQueryBufferObjectuiv", glGetQueryBufferObjectuiv == NULL);
+ glewInfoFunc(fi, "glGetTextureImage", glGetTextureImage == NULL);
+ glewInfoFunc(fi, "glGetTextureLevelParameterfv", glGetTextureLevelParameterfv == NULL);
+ glewInfoFunc(fi, "glGetTextureLevelParameteriv", glGetTextureLevelParameteriv == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterIiv", glGetTextureParameterIiv == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterIuiv", glGetTextureParameterIuiv == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterfv", glGetTextureParameterfv == NULL);
+ glewInfoFunc(fi, "glGetTextureParameteriv", glGetTextureParameteriv == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbacki64_v", glGetTransformFeedbacki64_v == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbacki_v", glGetTransformFeedbacki_v == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbackiv", glGetTransformFeedbackiv == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayIndexed64iv", glGetVertexArrayIndexed64iv == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayIndexediv", glGetVertexArrayIndexediv == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayiv", glGetVertexArrayiv == NULL);
+ glewInfoFunc(fi, "glInvalidateNamedFramebufferData", glInvalidateNamedFramebufferData == NULL);
+ glewInfoFunc(fi, "glInvalidateNamedFramebufferSubData", glInvalidateNamedFramebufferSubData == NULL);
+ glewInfoFunc(fi, "glMapNamedBuffer", glMapNamedBuffer == NULL);
+ glewInfoFunc(fi, "glMapNamedBufferRange", glMapNamedBufferRange == NULL);
+ glewInfoFunc(fi, "glNamedBufferData", glNamedBufferData == NULL);
+ glewInfoFunc(fi, "glNamedBufferStorage", glNamedBufferStorage == NULL);
+ glewInfoFunc(fi, "glNamedBufferSubData", glNamedBufferSubData == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferDrawBuffer", glNamedFramebufferDrawBuffer == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferDrawBuffers", glNamedFramebufferDrawBuffers == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferParameteri", glNamedFramebufferParameteri == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferReadBuffer", glNamedFramebufferReadBuffer == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferRenderbuffer", glNamedFramebufferRenderbuffer == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTexture", glNamedFramebufferTexture == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureLayer", glNamedFramebufferTextureLayer == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorage", glNamedRenderbufferStorage == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorageMultisample", glNamedRenderbufferStorageMultisample == NULL);
+ glewInfoFunc(fi, "glTextureBuffer", glTextureBuffer == NULL);
+ glewInfoFunc(fi, "glTextureBufferRange", glTextureBufferRange == NULL);
+ glewInfoFunc(fi, "glTextureParameterIiv", glTextureParameterIiv == NULL);
+ glewInfoFunc(fi, "glTextureParameterIuiv", glTextureParameterIuiv == NULL);
+ glewInfoFunc(fi, "glTextureParameterf", glTextureParameterf == NULL);
+ glewInfoFunc(fi, "glTextureParameterfv", glTextureParameterfv == NULL);
+ glewInfoFunc(fi, "glTextureParameteri", glTextureParameteri == NULL);
+ glewInfoFunc(fi, "glTextureParameteriv", glTextureParameteriv == NULL);
+ glewInfoFunc(fi, "glTextureStorage1D", glTextureStorage1D == NULL);
+ glewInfoFunc(fi, "glTextureStorage2D", glTextureStorage2D == NULL);
+ glewInfoFunc(fi, "glTextureStorage2DMultisample", glTextureStorage2DMultisample == NULL);
+ glewInfoFunc(fi, "glTextureStorage3D", glTextureStorage3D == NULL);
+ glewInfoFunc(fi, "glTextureStorage3DMultisample", glTextureStorage3DMultisample == NULL);
+ glewInfoFunc(fi, "glTextureSubImage1D", glTextureSubImage1D == NULL);
+ glewInfoFunc(fi, "glTextureSubImage2D", glTextureSubImage2D == NULL);
+ glewInfoFunc(fi, "glTextureSubImage3D", glTextureSubImage3D == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackBufferBase", glTransformFeedbackBufferBase == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackBufferRange", glTransformFeedbackBufferRange == NULL);
+ glewInfoFunc(fi, "glUnmapNamedBuffer", glUnmapNamedBuffer == NULL);
+ glewInfoFunc(fi, "glVertexArrayAttribBinding", glVertexArrayAttribBinding == NULL);
+ glewInfoFunc(fi, "glVertexArrayAttribFormat", glVertexArrayAttribFormat == NULL);
+ glewInfoFunc(fi, "glVertexArrayAttribIFormat", glVertexArrayAttribIFormat == NULL);
+ glewInfoFunc(fi, "glVertexArrayAttribLFormat", glVertexArrayAttribLFormat == NULL);
+ glewInfoFunc(fi, "glVertexArrayBindingDivisor", glVertexArrayBindingDivisor == NULL);
+ glewInfoFunc(fi, "glVertexArrayElementBuffer", glVertexArrayElementBuffer == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexBuffer", glVertexArrayVertexBuffer == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexBuffers", glVertexArrayVertexBuffers == NULL);
+}
+
+#endif /* GL_ARB_direct_state_access */
+
+#ifdef GL_ARB_draw_buffers
+
+static void _glewInfo_GL_ARB_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_draw_buffers", GLEW_ARB_draw_buffers, glewIsSupported("GL_ARB_draw_buffers"), glewGetExtension("GL_ARB_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersARB", glDrawBuffersARB == NULL);
+}
+
+#endif /* GL_ARB_draw_buffers */
+
+#ifdef GL_ARB_draw_buffers_blend
+
+static void _glewInfo_GL_ARB_draw_buffers_blend (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_draw_buffers_blend", GLEW_ARB_draw_buffers_blend, glewIsSupported("GL_ARB_draw_buffers_blend"), glewGetExtension("GL_ARB_draw_buffers_blend"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateiARB", glBlendEquationSeparateiARB == NULL);
+ glewInfoFunc(fi, "glBlendEquationiARB", glBlendEquationiARB == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparateiARB", glBlendFuncSeparateiARB == NULL);
+ glewInfoFunc(fi, "glBlendFunciARB", glBlendFunciARB == NULL);
+}
+
+#endif /* GL_ARB_draw_buffers_blend */
+
+#ifdef GL_ARB_draw_elements_base_vertex
+
+static void _glewInfo_GL_ARB_draw_elements_base_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_draw_elements_base_vertex", GLEW_ARB_draw_elements_base_vertex, glewIsSupported("GL_ARB_draw_elements_base_vertex"), glewGetExtension("GL_ARB_draw_elements_base_vertex"));
+
+ glewInfoFunc(fi, "glDrawElementsBaseVertex", glDrawElementsBaseVertex == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseVertex", glDrawElementsInstancedBaseVertex == NULL);
+ glewInfoFunc(fi, "glDrawRangeElementsBaseVertex", glDrawRangeElementsBaseVertex == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsBaseVertex", glMultiDrawElementsBaseVertex == NULL);
+}
+
+#endif /* GL_ARB_draw_elements_base_vertex */
+
+#ifdef GL_ARB_draw_indirect
+
+static void _glewInfo_GL_ARB_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_draw_indirect", GLEW_ARB_draw_indirect, glewIsSupported("GL_ARB_draw_indirect"), glewGetExtension("GL_ARB_draw_indirect"));
+
+ glewInfoFunc(fi, "glDrawArraysIndirect", glDrawArraysIndirect == NULL);
+ glewInfoFunc(fi, "glDrawElementsIndirect", glDrawElementsIndirect == NULL);
+}
+
+#endif /* GL_ARB_draw_indirect */
+
+#ifdef GL_ARB_draw_instanced
+
+static void _glewInfo_GL_ARB_draw_instanced (void)
+{
+ glewPrintExt("GL_ARB_draw_instanced", GLEW_ARB_draw_instanced, glewIsSupported("GL_ARB_draw_instanced"), glewGetExtension("GL_ARB_draw_instanced"));
+}
+
+#endif /* GL_ARB_draw_instanced */
+
+#ifdef GL_ARB_enhanced_layouts
+
+static void _glewInfo_GL_ARB_enhanced_layouts (void)
+{
+ glewPrintExt("GL_ARB_enhanced_layouts", GLEW_ARB_enhanced_layouts, glewIsSupported("GL_ARB_enhanced_layouts"), glewGetExtension("GL_ARB_enhanced_layouts"));
+}
+
+#endif /* GL_ARB_enhanced_layouts */
+
+#ifdef GL_ARB_explicit_attrib_location
+
+static void _glewInfo_GL_ARB_explicit_attrib_location (void)
+{
+ glewPrintExt("GL_ARB_explicit_attrib_location", GLEW_ARB_explicit_attrib_location, glewIsSupported("GL_ARB_explicit_attrib_location"), glewGetExtension("GL_ARB_explicit_attrib_location"));
+}
+
+#endif /* GL_ARB_explicit_attrib_location */
+
+#ifdef GL_ARB_explicit_uniform_location
+
+static void _glewInfo_GL_ARB_explicit_uniform_location (void)
+{
+ glewPrintExt("GL_ARB_explicit_uniform_location", GLEW_ARB_explicit_uniform_location, glewIsSupported("GL_ARB_explicit_uniform_location"), glewGetExtension("GL_ARB_explicit_uniform_location"));
+}
+
+#endif /* GL_ARB_explicit_uniform_location */
+
+#ifdef GL_ARB_fragment_coord_conventions
+
+static void _glewInfo_GL_ARB_fragment_coord_conventions (void)
+{
+ glewPrintExt("GL_ARB_fragment_coord_conventions", GLEW_ARB_fragment_coord_conventions, glewIsSupported("GL_ARB_fragment_coord_conventions"), glewGetExtension("GL_ARB_fragment_coord_conventions"));
+}
+
+#endif /* GL_ARB_fragment_coord_conventions */
+
+#ifdef GL_ARB_fragment_layer_viewport
+
+static void _glewInfo_GL_ARB_fragment_layer_viewport (void)
+{
+ glewPrintExt("GL_ARB_fragment_layer_viewport", GLEW_ARB_fragment_layer_viewport, glewIsSupported("GL_ARB_fragment_layer_viewport"), glewGetExtension("GL_ARB_fragment_layer_viewport"));
+}
+
+#endif /* GL_ARB_fragment_layer_viewport */
+
+#ifdef GL_ARB_fragment_program
+
+static void _glewInfo_GL_ARB_fragment_program (void)
+{
+ glewPrintExt("GL_ARB_fragment_program", GLEW_ARB_fragment_program, glewIsSupported("GL_ARB_fragment_program"), glewGetExtension("GL_ARB_fragment_program"));
+}
+
+#endif /* GL_ARB_fragment_program */
+
+#ifdef GL_ARB_fragment_program_shadow
+
+static void _glewInfo_GL_ARB_fragment_program_shadow (void)
+{
+ glewPrintExt("GL_ARB_fragment_program_shadow", GLEW_ARB_fragment_program_shadow, glewIsSupported("GL_ARB_fragment_program_shadow"), glewGetExtension("GL_ARB_fragment_program_shadow"));
+}
+
+#endif /* GL_ARB_fragment_program_shadow */
+
+#ifdef GL_ARB_fragment_shader
+
+static void _glewInfo_GL_ARB_fragment_shader (void)
+{
+ glewPrintExt("GL_ARB_fragment_shader", GLEW_ARB_fragment_shader, glewIsSupported("GL_ARB_fragment_shader"), glewGetExtension("GL_ARB_fragment_shader"));
+}
+
+#endif /* GL_ARB_fragment_shader */
+
+#ifdef GL_ARB_fragment_shader_interlock
+
+static void _glewInfo_GL_ARB_fragment_shader_interlock (void)
+{
+ glewPrintExt("GL_ARB_fragment_shader_interlock", GLEW_ARB_fragment_shader_interlock, glewIsSupported("GL_ARB_fragment_shader_interlock"), glewGetExtension("GL_ARB_fragment_shader_interlock"));
+}
+
+#endif /* GL_ARB_fragment_shader_interlock */
+
+#ifdef GL_ARB_framebuffer_no_attachments
+
+static void _glewInfo_GL_ARB_framebuffer_no_attachments (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_framebuffer_no_attachments", GLEW_ARB_framebuffer_no_attachments, glewIsSupported("GL_ARB_framebuffer_no_attachments"), glewGetExtension("GL_ARB_framebuffer_no_attachments"));
+
+ glewInfoFunc(fi, "glFramebufferParameteri", glFramebufferParameteri == NULL);
+ glewInfoFunc(fi, "glGetFramebufferParameteriv", glGetFramebufferParameteriv == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferParameterivEXT", glGetNamedFramebufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferParameteriEXT", glNamedFramebufferParameteriEXT == NULL);
+}
+
+#endif /* GL_ARB_framebuffer_no_attachments */
+
+#ifdef GL_ARB_framebuffer_object
+
+static void _glewInfo_GL_ARB_framebuffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_framebuffer_object", GLEW_ARB_framebuffer_object, glewIsSupported("GL_ARB_framebuffer_object"), glewGetExtension("GL_ARB_framebuffer_object"));
+
+ glewInfoFunc(fi, "glBindFramebuffer", glBindFramebuffer == NULL);
+ glewInfoFunc(fi, "glBindRenderbuffer", glBindRenderbuffer == NULL);
+ glewInfoFunc(fi, "glBlitFramebuffer", glBlitFramebuffer == NULL);
+ glewInfoFunc(fi, "glCheckFramebufferStatus", glCheckFramebufferStatus == NULL);
+ glewInfoFunc(fi, "glDeleteFramebuffers", glDeleteFramebuffers == NULL);
+ glewInfoFunc(fi, "glDeleteRenderbuffers", glDeleteRenderbuffers == NULL);
+ glewInfoFunc(fi, "glFramebufferRenderbuffer", glFramebufferRenderbuffer == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture1D", glFramebufferTexture1D == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture2D", glFramebufferTexture2D == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture3D", glFramebufferTexture3D == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureLayer", glFramebufferTextureLayer == NULL);
+ glewInfoFunc(fi, "glGenFramebuffers", glGenFramebuffers == NULL);
+ glewInfoFunc(fi, "glGenRenderbuffers", glGenRenderbuffers == NULL);
+ glewInfoFunc(fi, "glGenerateMipmap", glGenerateMipmap == NULL);
+ glewInfoFunc(fi, "glGetFramebufferAttachmentParameteriv", glGetFramebufferAttachmentParameteriv == NULL);
+ glewInfoFunc(fi, "glGetRenderbufferParameteriv", glGetRenderbufferParameteriv == NULL);
+ glewInfoFunc(fi, "glIsFramebuffer", glIsFramebuffer == NULL);
+ glewInfoFunc(fi, "glIsRenderbuffer", glIsRenderbuffer == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorage", glRenderbufferStorage == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageMultisample", glRenderbufferStorageMultisample == NULL);
+}
+
+#endif /* GL_ARB_framebuffer_object */
+
+#ifdef GL_ARB_framebuffer_sRGB
+
+static void _glewInfo_GL_ARB_framebuffer_sRGB (void)
+{
+ glewPrintExt("GL_ARB_framebuffer_sRGB", GLEW_ARB_framebuffer_sRGB, glewIsSupported("GL_ARB_framebuffer_sRGB"), glewGetExtension("GL_ARB_framebuffer_sRGB"));
+}
+
+#endif /* GL_ARB_framebuffer_sRGB */
+
+#ifdef GL_ARB_geometry_shader4
+
+static void _glewInfo_GL_ARB_geometry_shader4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_geometry_shader4", GLEW_ARB_geometry_shader4, glewIsSupported("GL_ARB_geometry_shader4"), glewGetExtension("GL_ARB_geometry_shader4"));
+
+ glewInfoFunc(fi, "glFramebufferTextureARB", glFramebufferTextureARB == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureFaceARB", glFramebufferTextureFaceARB == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureLayerARB", glFramebufferTextureLayerARB == NULL);
+ glewInfoFunc(fi, "glProgramParameteriARB", glProgramParameteriARB == NULL);
+}
+
+#endif /* GL_ARB_geometry_shader4 */
+
+#ifdef GL_ARB_get_program_binary
+
+static void _glewInfo_GL_ARB_get_program_binary (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_get_program_binary", GLEW_ARB_get_program_binary, glewIsSupported("GL_ARB_get_program_binary"), glewGetExtension("GL_ARB_get_program_binary"));
+
+ glewInfoFunc(fi, "glGetProgramBinary", glGetProgramBinary == NULL);
+ glewInfoFunc(fi, "glProgramBinary", glProgramBinary == NULL);
+ glewInfoFunc(fi, "glProgramParameteri", glProgramParameteri == NULL);
+}
+
+#endif /* GL_ARB_get_program_binary */
+
+#ifdef GL_ARB_get_texture_sub_image
+
+static void _glewInfo_GL_ARB_get_texture_sub_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_get_texture_sub_image", GLEW_ARB_get_texture_sub_image, glewIsSupported("GL_ARB_get_texture_sub_image"), glewGetExtension("GL_ARB_get_texture_sub_image"));
+
+ glewInfoFunc(fi, "glGetCompressedTextureSubImage", glGetCompressedTextureSubImage == NULL);
+ glewInfoFunc(fi, "glGetTextureSubImage", glGetTextureSubImage == NULL);
+}
+
+#endif /* GL_ARB_get_texture_sub_image */
+
+#ifdef GL_ARB_gl_spirv
+
+static void _glewInfo_GL_ARB_gl_spirv (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_gl_spirv", GLEW_ARB_gl_spirv, glewIsSupported("GL_ARB_gl_spirv"), glewGetExtension("GL_ARB_gl_spirv"));
+
+ glewInfoFunc(fi, "glSpecializeShaderARB", glSpecializeShaderARB == NULL);
+}
+
+#endif /* GL_ARB_gl_spirv */
+
+#ifdef GL_ARB_gpu_shader5
+
+static void _glewInfo_GL_ARB_gpu_shader5 (void)
+{
+ glewPrintExt("GL_ARB_gpu_shader5", GLEW_ARB_gpu_shader5, glewIsSupported("GL_ARB_gpu_shader5"), glewGetExtension("GL_ARB_gpu_shader5"));
+}
+
+#endif /* GL_ARB_gpu_shader5 */
+
+#ifdef GL_ARB_gpu_shader_fp64
+
+static void _glewInfo_GL_ARB_gpu_shader_fp64 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_gpu_shader_fp64", GLEW_ARB_gpu_shader_fp64, glewIsSupported("GL_ARB_gpu_shader_fp64"), glewGetExtension("GL_ARB_gpu_shader_fp64"));
+
+ glewInfoFunc(fi, "glGetUniformdv", glGetUniformdv == NULL);
+ glewInfoFunc(fi, "glUniform1d", glUniform1d == NULL);
+ glewInfoFunc(fi, "glUniform1dv", glUniform1dv == NULL);
+ glewInfoFunc(fi, "glUniform2d", glUniform2d == NULL);
+ glewInfoFunc(fi, "glUniform2dv", glUniform2dv == NULL);
+ glewInfoFunc(fi, "glUniform3d", glUniform3d == NULL);
+ glewInfoFunc(fi, "glUniform3dv", glUniform3dv == NULL);
+ glewInfoFunc(fi, "glUniform4d", glUniform4d == NULL);
+ glewInfoFunc(fi, "glUniform4dv", glUniform4dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2dv", glUniformMatrix2dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2x3dv", glUniformMatrix2x3dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2x4dv", glUniformMatrix2x4dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3dv", glUniformMatrix3dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x2dv", glUniformMatrix3x2dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x4dv", glUniformMatrix3x4dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4dv", glUniformMatrix4dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x2dv", glUniformMatrix4x2dv == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x3dv", glUniformMatrix4x3dv == NULL);
+}
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
+#ifdef GL_ARB_gpu_shader_int64
+
+static void _glewInfo_GL_ARB_gpu_shader_int64 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_gpu_shader_int64", GLEW_ARB_gpu_shader_int64, glewIsSupported("GL_ARB_gpu_shader_int64"), glewGetExtension("GL_ARB_gpu_shader_int64"));
+
+ glewInfoFunc(fi, "glGetUniformi64vARB", glGetUniformi64vARB == NULL);
+ glewInfoFunc(fi, "glGetUniformui64vARB", glGetUniformui64vARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformi64vARB", glGetnUniformi64vARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformui64vARB", glGetnUniformui64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i64ARB", glProgramUniform1i64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i64vARB", glProgramUniform1i64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui64ARB", glProgramUniform1ui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui64vARB", glProgramUniform1ui64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i64ARB", glProgramUniform2i64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i64vARB", glProgramUniform2i64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui64ARB", glProgramUniform2ui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui64vARB", glProgramUniform2ui64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i64ARB", glProgramUniform3i64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i64vARB", glProgramUniform3i64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui64ARB", glProgramUniform3ui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui64vARB", glProgramUniform3ui64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i64ARB", glProgramUniform4i64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i64vARB", glProgramUniform4i64vARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui64ARB", glProgramUniform4ui64ARB == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui64vARB", glProgramUniform4ui64vARB == NULL);
+ glewInfoFunc(fi, "glUniform1i64ARB", glUniform1i64ARB == NULL);
+ glewInfoFunc(fi, "glUniform1i64vARB", glUniform1i64vARB == NULL);
+ glewInfoFunc(fi, "glUniform1ui64ARB", glUniform1ui64ARB == NULL);
+ glewInfoFunc(fi, "glUniform1ui64vARB", glUniform1ui64vARB == NULL);
+ glewInfoFunc(fi, "glUniform2i64ARB", glUniform2i64ARB == NULL);
+ glewInfoFunc(fi, "glUniform2i64vARB", glUniform2i64vARB == NULL);
+ glewInfoFunc(fi, "glUniform2ui64ARB", glUniform2ui64ARB == NULL);
+ glewInfoFunc(fi, "glUniform2ui64vARB", glUniform2ui64vARB == NULL);
+ glewInfoFunc(fi, "glUniform3i64ARB", glUniform3i64ARB == NULL);
+ glewInfoFunc(fi, "glUniform3i64vARB", glUniform3i64vARB == NULL);
+ glewInfoFunc(fi, "glUniform3ui64ARB", glUniform3ui64ARB == NULL);
+ glewInfoFunc(fi, "glUniform3ui64vARB", glUniform3ui64vARB == NULL);
+ glewInfoFunc(fi, "glUniform4i64ARB", glUniform4i64ARB == NULL);
+ glewInfoFunc(fi, "glUniform4i64vARB", glUniform4i64vARB == NULL);
+ glewInfoFunc(fi, "glUniform4ui64ARB", glUniform4ui64ARB == NULL);
+ glewInfoFunc(fi, "glUniform4ui64vARB", glUniform4ui64vARB == NULL);
+}
+
+#endif /* GL_ARB_gpu_shader_int64 */
+
+#ifdef GL_ARB_half_float_pixel
+
+static void _glewInfo_GL_ARB_half_float_pixel (void)
+{
+ glewPrintExt("GL_ARB_half_float_pixel", GLEW_ARB_half_float_pixel, glewIsSupported("GL_ARB_half_float_pixel"), glewGetExtension("GL_ARB_half_float_pixel"));
+}
+
+#endif /* GL_ARB_half_float_pixel */
+
+#ifdef GL_ARB_half_float_vertex
+
+static void _glewInfo_GL_ARB_half_float_vertex (void)
+{
+ glewPrintExt("GL_ARB_half_float_vertex", GLEW_ARB_half_float_vertex, glewIsSupported("GL_ARB_half_float_vertex"), glewGetExtension("GL_ARB_half_float_vertex"));
+}
+
+#endif /* GL_ARB_half_float_vertex */
+
+#ifdef GL_ARB_imaging
+
+static void _glewInfo_GL_ARB_imaging (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_imaging", GLEW_ARB_imaging, glewIsSupported("GL_ARB_imaging"), glewGetExtension("GL_ARB_imaging"));
+
+ glewInfoFunc(fi, "glBlendEquation", glBlendEquation == NULL);
+ glewInfoFunc(fi, "glColorSubTable", glColorSubTable == NULL);
+ glewInfoFunc(fi, "glColorTable", glColorTable == NULL);
+ glewInfoFunc(fi, "glColorTableParameterfv", glColorTableParameterfv == NULL);
+ glewInfoFunc(fi, "glColorTableParameteriv", glColorTableParameteriv == NULL);
+ glewInfoFunc(fi, "glConvolutionFilter1D", glConvolutionFilter1D == NULL);
+ glewInfoFunc(fi, "glConvolutionFilter2D", glConvolutionFilter2D == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterf", glConvolutionParameterf == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterfv", glConvolutionParameterfv == NULL);
+ glewInfoFunc(fi, "glConvolutionParameteri", glConvolutionParameteri == NULL);
+ glewInfoFunc(fi, "glConvolutionParameteriv", glConvolutionParameteriv == NULL);
+ glewInfoFunc(fi, "glCopyColorSubTable", glCopyColorSubTable == NULL);
+ glewInfoFunc(fi, "glCopyColorTable", glCopyColorTable == NULL);
+ glewInfoFunc(fi, "glCopyConvolutionFilter1D", glCopyConvolutionFilter1D == NULL);
+ glewInfoFunc(fi, "glCopyConvolutionFilter2D", glCopyConvolutionFilter2D == NULL);
+ glewInfoFunc(fi, "glGetColorTable", glGetColorTable == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterfv", glGetColorTableParameterfv == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameteriv", glGetColorTableParameteriv == NULL);
+ glewInfoFunc(fi, "glGetConvolutionFilter", glGetConvolutionFilter == NULL);
+ glewInfoFunc(fi, "glGetConvolutionParameterfv", glGetConvolutionParameterfv == NULL);
+ glewInfoFunc(fi, "glGetConvolutionParameteriv", glGetConvolutionParameteriv == NULL);
+ glewInfoFunc(fi, "glGetHistogram", glGetHistogram == NULL);
+ glewInfoFunc(fi, "glGetHistogramParameterfv", glGetHistogramParameterfv == NULL);
+ glewInfoFunc(fi, "glGetHistogramParameteriv", glGetHistogramParameteriv == NULL);
+ glewInfoFunc(fi, "glGetMinmax", glGetMinmax == NULL);
+ glewInfoFunc(fi, "glGetMinmaxParameterfv", glGetMinmaxParameterfv == NULL);
+ glewInfoFunc(fi, "glGetMinmaxParameteriv", glGetMinmaxParameteriv == NULL);
+ glewInfoFunc(fi, "glGetSeparableFilter", glGetSeparableFilter == NULL);
+ glewInfoFunc(fi, "glHistogram", glHistogram == NULL);
+ glewInfoFunc(fi, "glMinmax", glMinmax == NULL);
+ glewInfoFunc(fi, "glResetHistogram", glResetHistogram == NULL);
+ glewInfoFunc(fi, "glResetMinmax", glResetMinmax == NULL);
+ glewInfoFunc(fi, "glSeparableFilter2D", glSeparableFilter2D == NULL);
+}
+
+#endif /* GL_ARB_imaging */
+
+#ifdef GL_ARB_indirect_parameters
+
+static void _glewInfo_GL_ARB_indirect_parameters (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_indirect_parameters", GLEW_ARB_indirect_parameters, glewIsSupported("GL_ARB_indirect_parameters"), glewGetExtension("GL_ARB_indirect_parameters"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectCountARB", glMultiDrawArraysIndirectCountARB == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectCountARB", glMultiDrawElementsIndirectCountARB == NULL);
+}
+
+#endif /* GL_ARB_indirect_parameters */
+
+#ifdef GL_ARB_instanced_arrays
+
+static void _glewInfo_GL_ARB_instanced_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_instanced_arrays", GLEW_ARB_instanced_arrays, glewIsSupported("GL_ARB_instanced_arrays"), glewGetExtension("GL_ARB_instanced_arrays"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedARB", glDrawArraysInstancedARB == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedARB", glDrawElementsInstancedARB == NULL);
+ glewInfoFunc(fi, "glVertexAttribDivisorARB", glVertexAttribDivisorARB == NULL);
+}
+
+#endif /* GL_ARB_instanced_arrays */
+
+#ifdef GL_ARB_internalformat_query
+
+static void _glewInfo_GL_ARB_internalformat_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_internalformat_query", GLEW_ARB_internalformat_query, glewIsSupported("GL_ARB_internalformat_query"), glewGetExtension("GL_ARB_internalformat_query"));
+
+ glewInfoFunc(fi, "glGetInternalformativ", glGetInternalformativ == NULL);
+}
+
+#endif /* GL_ARB_internalformat_query */
+
+#ifdef GL_ARB_internalformat_query2
+
+static void _glewInfo_GL_ARB_internalformat_query2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_internalformat_query2", GLEW_ARB_internalformat_query2, glewIsSupported("GL_ARB_internalformat_query2"), glewGetExtension("GL_ARB_internalformat_query2"));
+
+ glewInfoFunc(fi, "glGetInternalformati64v", glGetInternalformati64v == NULL);
+}
+
+#endif /* GL_ARB_internalformat_query2 */
+
+#ifdef GL_ARB_invalidate_subdata
+
+static void _glewInfo_GL_ARB_invalidate_subdata (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_invalidate_subdata", GLEW_ARB_invalidate_subdata, glewIsSupported("GL_ARB_invalidate_subdata"), glewGetExtension("GL_ARB_invalidate_subdata"));
+
+ glewInfoFunc(fi, "glInvalidateBufferData", glInvalidateBufferData == NULL);
+ glewInfoFunc(fi, "glInvalidateBufferSubData", glInvalidateBufferSubData == NULL);
+ glewInfoFunc(fi, "glInvalidateFramebuffer", glInvalidateFramebuffer == NULL);
+ glewInfoFunc(fi, "glInvalidateSubFramebuffer", glInvalidateSubFramebuffer == NULL);
+ glewInfoFunc(fi, "glInvalidateTexImage", glInvalidateTexImage == NULL);
+ glewInfoFunc(fi, "glInvalidateTexSubImage", glInvalidateTexSubImage == NULL);
+}
+
+#endif /* GL_ARB_invalidate_subdata */
+
+#ifdef GL_ARB_map_buffer_alignment
+
+static void _glewInfo_GL_ARB_map_buffer_alignment (void)
+{
+ glewPrintExt("GL_ARB_map_buffer_alignment", GLEW_ARB_map_buffer_alignment, glewIsSupported("GL_ARB_map_buffer_alignment"), glewGetExtension("GL_ARB_map_buffer_alignment"));
+}
+
+#endif /* GL_ARB_map_buffer_alignment */
+
+#ifdef GL_ARB_map_buffer_range
+
+static void _glewInfo_GL_ARB_map_buffer_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_map_buffer_range", GLEW_ARB_map_buffer_range, glewIsSupported("GL_ARB_map_buffer_range"), glewGetExtension("GL_ARB_map_buffer_range"));
+
+ glewInfoFunc(fi, "glFlushMappedBufferRange", glFlushMappedBufferRange == NULL);
+ glewInfoFunc(fi, "glMapBufferRange", glMapBufferRange == NULL);
+}
+
+#endif /* GL_ARB_map_buffer_range */
+
+#ifdef GL_ARB_matrix_palette
+
+static void _glewInfo_GL_ARB_matrix_palette (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_matrix_palette", GLEW_ARB_matrix_palette, glewIsSupported("GL_ARB_matrix_palette"), glewGetExtension("GL_ARB_matrix_palette"));
+
+ glewInfoFunc(fi, "glCurrentPaletteMatrixARB", glCurrentPaletteMatrixARB == NULL);
+ glewInfoFunc(fi, "glMatrixIndexPointerARB", glMatrixIndexPointerARB == NULL);
+ glewInfoFunc(fi, "glMatrixIndexubvARB", glMatrixIndexubvARB == NULL);
+ glewInfoFunc(fi, "glMatrixIndexuivARB", glMatrixIndexuivARB == NULL);
+ glewInfoFunc(fi, "glMatrixIndexusvARB", glMatrixIndexusvARB == NULL);
+}
+
+#endif /* GL_ARB_matrix_palette */
+
+#ifdef GL_ARB_multi_bind
+
+static void _glewInfo_GL_ARB_multi_bind (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_multi_bind", GLEW_ARB_multi_bind, glewIsSupported("GL_ARB_multi_bind"), glewGetExtension("GL_ARB_multi_bind"));
+
+ glewInfoFunc(fi, "glBindBuffersBase", glBindBuffersBase == NULL);
+ glewInfoFunc(fi, "glBindBuffersRange", glBindBuffersRange == NULL);
+ glewInfoFunc(fi, "glBindImageTextures", glBindImageTextures == NULL);
+ glewInfoFunc(fi, "glBindSamplers", glBindSamplers == NULL);
+ glewInfoFunc(fi, "glBindTextures", glBindTextures == NULL);
+ glewInfoFunc(fi, "glBindVertexBuffers", glBindVertexBuffers == NULL);
+}
+
+#endif /* GL_ARB_multi_bind */
+
+#ifdef GL_ARB_multi_draw_indirect
+
+static void _glewInfo_GL_ARB_multi_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_multi_draw_indirect", GLEW_ARB_multi_draw_indirect, glewIsSupported("GL_ARB_multi_draw_indirect"), glewGetExtension("GL_ARB_multi_draw_indirect"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirect", glMultiDrawArraysIndirect == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirect", glMultiDrawElementsIndirect == NULL);
+}
+
+#endif /* GL_ARB_multi_draw_indirect */
+
+#ifdef GL_ARB_multisample
+
+static void _glewInfo_GL_ARB_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_multisample", GLEW_ARB_multisample, glewIsSupported("GL_ARB_multisample"), glewGetExtension("GL_ARB_multisample"));
+
+ glewInfoFunc(fi, "glSampleCoverageARB", glSampleCoverageARB == NULL);
+}
+
+#endif /* GL_ARB_multisample */
+
+#ifdef GL_ARB_multitexture
+
+static void _glewInfo_GL_ARB_multitexture (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_multitexture", GLEW_ARB_multitexture, glewIsSupported("GL_ARB_multitexture"), glewGetExtension("GL_ARB_multitexture"));
+
+ glewInfoFunc(fi, "glActiveTextureARB", glActiveTextureARB == NULL);
+ glewInfoFunc(fi, "glClientActiveTextureARB", glClientActiveTextureARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1dARB", glMultiTexCoord1dARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1dvARB", glMultiTexCoord1dvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1fARB", glMultiTexCoord1fARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1fvARB", glMultiTexCoord1fvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1iARB", glMultiTexCoord1iARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1ivARB", glMultiTexCoord1ivARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1sARB", glMultiTexCoord1sARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1svARB", glMultiTexCoord1svARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2dARB", glMultiTexCoord2dARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2dvARB", glMultiTexCoord2dvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2fARB", glMultiTexCoord2fARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2fvARB", glMultiTexCoord2fvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2iARB", glMultiTexCoord2iARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2ivARB", glMultiTexCoord2ivARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2sARB", glMultiTexCoord2sARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2svARB", glMultiTexCoord2svARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3dARB", glMultiTexCoord3dARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3dvARB", glMultiTexCoord3dvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3fARB", glMultiTexCoord3fARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3fvARB", glMultiTexCoord3fvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3iARB", glMultiTexCoord3iARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3ivARB", glMultiTexCoord3ivARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3sARB", glMultiTexCoord3sARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3svARB", glMultiTexCoord3svARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4dARB", glMultiTexCoord4dARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4dvARB", glMultiTexCoord4dvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4fARB", glMultiTexCoord4fARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4fvARB", glMultiTexCoord4fvARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4iARB", glMultiTexCoord4iARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4ivARB", glMultiTexCoord4ivARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4sARB", glMultiTexCoord4sARB == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4svARB", glMultiTexCoord4svARB == NULL);
+}
+
+#endif /* GL_ARB_multitexture */
+
+#ifdef GL_ARB_occlusion_query
+
+static void _glewInfo_GL_ARB_occlusion_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_occlusion_query", GLEW_ARB_occlusion_query, glewIsSupported("GL_ARB_occlusion_query"), glewGetExtension("GL_ARB_occlusion_query"));
+
+ glewInfoFunc(fi, "glBeginQueryARB", glBeginQueryARB == NULL);
+ glewInfoFunc(fi, "glDeleteQueriesARB", glDeleteQueriesARB == NULL);
+ glewInfoFunc(fi, "glEndQueryARB", glEndQueryARB == NULL);
+ glewInfoFunc(fi, "glGenQueriesARB", glGenQueriesARB == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectivARB", glGetQueryObjectivARB == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectuivARB", glGetQueryObjectuivARB == NULL);
+ glewInfoFunc(fi, "glGetQueryivARB", glGetQueryivARB == NULL);
+ glewInfoFunc(fi, "glIsQueryARB", glIsQueryARB == NULL);
+}
+
+#endif /* GL_ARB_occlusion_query */
+
+#ifdef GL_ARB_occlusion_query2
+
+static void _glewInfo_GL_ARB_occlusion_query2 (void)
+{
+ glewPrintExt("GL_ARB_occlusion_query2", GLEW_ARB_occlusion_query2, glewIsSupported("GL_ARB_occlusion_query2"), glewGetExtension("GL_ARB_occlusion_query2"));
+}
+
+#endif /* GL_ARB_occlusion_query2 */
+
+#ifdef GL_ARB_parallel_shader_compile
+
+static void _glewInfo_GL_ARB_parallel_shader_compile (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_parallel_shader_compile", GLEW_ARB_parallel_shader_compile, glewIsSupported("GL_ARB_parallel_shader_compile"), glewGetExtension("GL_ARB_parallel_shader_compile"));
+
+ glewInfoFunc(fi, "glMaxShaderCompilerThreadsARB", glMaxShaderCompilerThreadsARB == NULL);
+}
+
+#endif /* GL_ARB_parallel_shader_compile */
+
+#ifdef GL_ARB_pipeline_statistics_query
+
+static void _glewInfo_GL_ARB_pipeline_statistics_query (void)
+{
+ glewPrintExt("GL_ARB_pipeline_statistics_query", GLEW_ARB_pipeline_statistics_query, glewIsSupported("GL_ARB_pipeline_statistics_query"), glewGetExtension("GL_ARB_pipeline_statistics_query"));
+}
+
+#endif /* GL_ARB_pipeline_statistics_query */
+
+#ifdef GL_ARB_pixel_buffer_object
+
+static void _glewInfo_GL_ARB_pixel_buffer_object (void)
+{
+ glewPrintExt("GL_ARB_pixel_buffer_object", GLEW_ARB_pixel_buffer_object, glewIsSupported("GL_ARB_pixel_buffer_object"), glewGetExtension("GL_ARB_pixel_buffer_object"));
+}
+
+#endif /* GL_ARB_pixel_buffer_object */
+
+#ifdef GL_ARB_point_parameters
+
+static void _glewInfo_GL_ARB_point_parameters (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_point_parameters", GLEW_ARB_point_parameters, glewIsSupported("GL_ARB_point_parameters"), glewGetExtension("GL_ARB_point_parameters"));
+
+ glewInfoFunc(fi, "glPointParameterfARB", glPointParameterfARB == NULL);
+ glewInfoFunc(fi, "glPointParameterfvARB", glPointParameterfvARB == NULL);
+}
+
+#endif /* GL_ARB_point_parameters */
+
+#ifdef GL_ARB_point_sprite
+
+static void _glewInfo_GL_ARB_point_sprite (void)
+{
+ glewPrintExt("GL_ARB_point_sprite", GLEW_ARB_point_sprite, glewIsSupported("GL_ARB_point_sprite"), glewGetExtension("GL_ARB_point_sprite"));
+}
+
+#endif /* GL_ARB_point_sprite */
+
+#ifdef GL_ARB_polygon_offset_clamp
+
+static void _glewInfo_GL_ARB_polygon_offset_clamp (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_polygon_offset_clamp", GLEW_ARB_polygon_offset_clamp, glewIsSupported("GL_ARB_polygon_offset_clamp"), glewGetExtension("GL_ARB_polygon_offset_clamp"));
+
+ glewInfoFunc(fi, "glPolygonOffsetClamp", glPolygonOffsetClamp == NULL);
+}
+
+#endif /* GL_ARB_polygon_offset_clamp */
+
+#ifdef GL_ARB_post_depth_coverage
+
+static void _glewInfo_GL_ARB_post_depth_coverage (void)
+{
+ glewPrintExt("GL_ARB_post_depth_coverage", GLEW_ARB_post_depth_coverage, glewIsSupported("GL_ARB_post_depth_coverage"), glewGetExtension("GL_ARB_post_depth_coverage"));
+}
+
+#endif /* GL_ARB_post_depth_coverage */
+
+#ifdef GL_ARB_program_interface_query
+
+static void _glewInfo_GL_ARB_program_interface_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_program_interface_query", GLEW_ARB_program_interface_query, glewIsSupported("GL_ARB_program_interface_query"), glewGetExtension("GL_ARB_program_interface_query"));
+
+ glewInfoFunc(fi, "glGetProgramInterfaceiv", glGetProgramInterfaceiv == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceIndex", glGetProgramResourceIndex == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceLocation", glGetProgramResourceLocation == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceLocationIndex", glGetProgramResourceLocationIndex == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceName", glGetProgramResourceName == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceiv", glGetProgramResourceiv == NULL);
+}
+
+#endif /* GL_ARB_program_interface_query */
+
+#ifdef GL_ARB_provoking_vertex
+
+static void _glewInfo_GL_ARB_provoking_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_provoking_vertex", GLEW_ARB_provoking_vertex, glewIsSupported("GL_ARB_provoking_vertex"), glewGetExtension("GL_ARB_provoking_vertex"));
+
+ glewInfoFunc(fi, "glProvokingVertex", glProvokingVertex == NULL);
+}
+
+#endif /* GL_ARB_provoking_vertex */
+
+#ifdef GL_ARB_query_buffer_object
+
+static void _glewInfo_GL_ARB_query_buffer_object (void)
+{
+ glewPrintExt("GL_ARB_query_buffer_object", GLEW_ARB_query_buffer_object, glewIsSupported("GL_ARB_query_buffer_object"), glewGetExtension("GL_ARB_query_buffer_object"));
+}
+
+#endif /* GL_ARB_query_buffer_object */
+
+#ifdef GL_ARB_robust_buffer_access_behavior
+
+static void _glewInfo_GL_ARB_robust_buffer_access_behavior (void)
+{
+ glewPrintExt("GL_ARB_robust_buffer_access_behavior", GLEW_ARB_robust_buffer_access_behavior, glewIsSupported("GL_ARB_robust_buffer_access_behavior"), glewGetExtension("GL_ARB_robust_buffer_access_behavior"));
+}
+
+#endif /* GL_ARB_robust_buffer_access_behavior */
+
+#ifdef GL_ARB_robustness
+
+static void _glewInfo_GL_ARB_robustness (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_robustness", GLEW_ARB_robustness, glewIsSupported("GL_ARB_robustness"), glewGetExtension("GL_ARB_robustness"));
+
+ glewInfoFunc(fi, "glGetGraphicsResetStatusARB", glGetGraphicsResetStatusARB == NULL);
+ glewInfoFunc(fi, "glGetnColorTableARB", glGetnColorTableARB == NULL);
+ glewInfoFunc(fi, "glGetnCompressedTexImageARB", glGetnCompressedTexImageARB == NULL);
+ glewInfoFunc(fi, "glGetnConvolutionFilterARB", glGetnConvolutionFilterARB == NULL);
+ glewInfoFunc(fi, "glGetnHistogramARB", glGetnHistogramARB == NULL);
+ glewInfoFunc(fi, "glGetnMapdvARB", glGetnMapdvARB == NULL);
+ glewInfoFunc(fi, "glGetnMapfvARB", glGetnMapfvARB == NULL);
+ glewInfoFunc(fi, "glGetnMapivARB", glGetnMapivARB == NULL);
+ glewInfoFunc(fi, "glGetnMinmaxARB", glGetnMinmaxARB == NULL);
+ glewInfoFunc(fi, "glGetnPixelMapfvARB", glGetnPixelMapfvARB == NULL);
+ glewInfoFunc(fi, "glGetnPixelMapuivARB", glGetnPixelMapuivARB == NULL);
+ glewInfoFunc(fi, "glGetnPixelMapusvARB", glGetnPixelMapusvARB == NULL);
+ glewInfoFunc(fi, "glGetnPolygonStippleARB", glGetnPolygonStippleARB == NULL);
+ glewInfoFunc(fi, "glGetnSeparableFilterARB", glGetnSeparableFilterARB == NULL);
+ glewInfoFunc(fi, "glGetnTexImageARB", glGetnTexImageARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformdvARB", glGetnUniformdvARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformfvARB", glGetnUniformfvARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformivARB", glGetnUniformivARB == NULL);
+ glewInfoFunc(fi, "glGetnUniformuivARB", glGetnUniformuivARB == NULL);
+ glewInfoFunc(fi, "glReadnPixelsARB", glReadnPixelsARB == NULL);
+}
+
+#endif /* GL_ARB_robustness */
+
+#ifdef GL_ARB_robustness_application_isolation
+
+static void _glewInfo_GL_ARB_robustness_application_isolation (void)
+{
+ glewPrintExt("GL_ARB_robustness_application_isolation", GLEW_ARB_robustness_application_isolation, glewIsSupported("GL_ARB_robustness_application_isolation"), glewGetExtension("GL_ARB_robustness_application_isolation"));
+}
+
+#endif /* GL_ARB_robustness_application_isolation */
+
+#ifdef GL_ARB_robustness_share_group_isolation
+
+static void _glewInfo_GL_ARB_robustness_share_group_isolation (void)
+{
+ glewPrintExt("GL_ARB_robustness_share_group_isolation", GLEW_ARB_robustness_share_group_isolation, glewIsSupported("GL_ARB_robustness_share_group_isolation"), glewGetExtension("GL_ARB_robustness_share_group_isolation"));
+}
+
+#endif /* GL_ARB_robustness_share_group_isolation */
+
+#ifdef GL_ARB_sample_locations
+
+static void _glewInfo_GL_ARB_sample_locations (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sample_locations", GLEW_ARB_sample_locations, glewIsSupported("GL_ARB_sample_locations"), glewGetExtension("GL_ARB_sample_locations"));
+
+ glewInfoFunc(fi, "glEvaluateDepthValuesARB", glEvaluateDepthValuesARB == NULL);
+ glewInfoFunc(fi, "glFramebufferSampleLocationsfvARB", glFramebufferSampleLocationsfvARB == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferSampleLocationsfvARB", glNamedFramebufferSampleLocationsfvARB == NULL);
+}
+
+#endif /* GL_ARB_sample_locations */
+
+#ifdef GL_ARB_sample_shading
+
+static void _glewInfo_GL_ARB_sample_shading (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sample_shading", GLEW_ARB_sample_shading, glewIsSupported("GL_ARB_sample_shading"), glewGetExtension("GL_ARB_sample_shading"));
+
+ glewInfoFunc(fi, "glMinSampleShadingARB", glMinSampleShadingARB == NULL);
+}
+
+#endif /* GL_ARB_sample_shading */
+
+#ifdef GL_ARB_sampler_objects
+
+static void _glewInfo_GL_ARB_sampler_objects (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sampler_objects", GLEW_ARB_sampler_objects, glewIsSupported("GL_ARB_sampler_objects"), glewGetExtension("GL_ARB_sampler_objects"));
+
+ glewInfoFunc(fi, "glBindSampler", glBindSampler == NULL);
+ glewInfoFunc(fi, "glDeleteSamplers", glDeleteSamplers == NULL);
+ glewInfoFunc(fi, "glGenSamplers", glGenSamplers == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterIiv", glGetSamplerParameterIiv == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterIuiv", glGetSamplerParameterIuiv == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterfv", glGetSamplerParameterfv == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameteriv", glGetSamplerParameteriv == NULL);
+ glewInfoFunc(fi, "glIsSampler", glIsSampler == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIiv", glSamplerParameterIiv == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIuiv", glSamplerParameterIuiv == NULL);
+ glewInfoFunc(fi, "glSamplerParameterf", glSamplerParameterf == NULL);
+ glewInfoFunc(fi, "glSamplerParameterfv", glSamplerParameterfv == NULL);
+ glewInfoFunc(fi, "glSamplerParameteri", glSamplerParameteri == NULL);
+ glewInfoFunc(fi, "glSamplerParameteriv", glSamplerParameteriv == NULL);
+}
+
+#endif /* GL_ARB_sampler_objects */
+
+#ifdef GL_ARB_seamless_cube_map
+
+static void _glewInfo_GL_ARB_seamless_cube_map (void)
+{
+ glewPrintExt("GL_ARB_seamless_cube_map", GLEW_ARB_seamless_cube_map, glewIsSupported("GL_ARB_seamless_cube_map"), glewGetExtension("GL_ARB_seamless_cube_map"));
+}
+
+#endif /* GL_ARB_seamless_cube_map */
+
+#ifdef GL_ARB_seamless_cubemap_per_texture
+
+static void _glewInfo_GL_ARB_seamless_cubemap_per_texture (void)
+{
+ glewPrintExt("GL_ARB_seamless_cubemap_per_texture", GLEW_ARB_seamless_cubemap_per_texture, glewIsSupported("GL_ARB_seamless_cubemap_per_texture"), glewGetExtension("GL_ARB_seamless_cubemap_per_texture"));
+}
+
+#endif /* GL_ARB_seamless_cubemap_per_texture */
+
+#ifdef GL_ARB_separate_shader_objects
+
+static void _glewInfo_GL_ARB_separate_shader_objects (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_separate_shader_objects", GLEW_ARB_separate_shader_objects, glewIsSupported("GL_ARB_separate_shader_objects"), glewGetExtension("GL_ARB_separate_shader_objects"));
+
+ glewInfoFunc(fi, "glActiveShaderProgram", glActiveShaderProgram == NULL);
+ glewInfoFunc(fi, "glBindProgramPipeline", glBindProgramPipeline == NULL);
+ glewInfoFunc(fi, "glCreateShaderProgramv", glCreateShaderProgramv == NULL);
+ glewInfoFunc(fi, "glDeleteProgramPipelines", glDeleteProgramPipelines == NULL);
+ glewInfoFunc(fi, "glGenProgramPipelines", glGenProgramPipelines == NULL);
+ glewInfoFunc(fi, "glGetProgramPipelineInfoLog", glGetProgramPipelineInfoLog == NULL);
+ glewInfoFunc(fi, "glGetProgramPipelineiv", glGetProgramPipelineiv == NULL);
+ glewInfoFunc(fi, "glIsProgramPipeline", glIsProgramPipeline == NULL);
+ glewInfoFunc(fi, "glProgramUniform1d", glProgramUniform1d == NULL);
+ glewInfoFunc(fi, "glProgramUniform1dv", glProgramUniform1dv == NULL);
+ glewInfoFunc(fi, "glProgramUniform1f", glProgramUniform1f == NULL);
+ glewInfoFunc(fi, "glProgramUniform1fv", glProgramUniform1fv == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i", glProgramUniform1i == NULL);
+ glewInfoFunc(fi, "glProgramUniform1iv", glProgramUniform1iv == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui", glProgramUniform1ui == NULL);
+ glewInfoFunc(fi, "glProgramUniform1uiv", glProgramUniform1uiv == NULL);
+ glewInfoFunc(fi, "glProgramUniform2d", glProgramUniform2d == NULL);
+ glewInfoFunc(fi, "glProgramUniform2dv", glProgramUniform2dv == NULL);
+ glewInfoFunc(fi, "glProgramUniform2f", glProgramUniform2f == NULL);
+ glewInfoFunc(fi, "glProgramUniform2fv", glProgramUniform2fv == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i", glProgramUniform2i == NULL);
+ glewInfoFunc(fi, "glProgramUniform2iv", glProgramUniform2iv == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui", glProgramUniform2ui == NULL);
+ glewInfoFunc(fi, "glProgramUniform2uiv", glProgramUniform2uiv == NULL);
+ glewInfoFunc(fi, "glProgramUniform3d", glProgramUniform3d == NULL);
+ glewInfoFunc(fi, "glProgramUniform3dv", glProgramUniform3dv == NULL);
+ glewInfoFunc(fi, "glProgramUniform3f", glProgramUniform3f == NULL);
+ glewInfoFunc(fi, "glProgramUniform3fv", glProgramUniform3fv == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i", glProgramUniform3i == NULL);
+ glewInfoFunc(fi, "glProgramUniform3iv", glProgramUniform3iv == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui", glProgramUniform3ui == NULL);
+ glewInfoFunc(fi, "glProgramUniform3uiv", glProgramUniform3uiv == NULL);
+ glewInfoFunc(fi, "glProgramUniform4d", glProgramUniform4d == NULL);
+ glewInfoFunc(fi, "glProgramUniform4dv", glProgramUniform4dv == NULL);
+ glewInfoFunc(fi, "glProgramUniform4f", glProgramUniform4f == NULL);
+ glewInfoFunc(fi, "glProgramUniform4fv", glProgramUniform4fv == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i", glProgramUniform4i == NULL);
+ glewInfoFunc(fi, "glProgramUniform4iv", glProgramUniform4iv == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui", glProgramUniform4ui == NULL);
+ glewInfoFunc(fi, "glProgramUniform4uiv", glProgramUniform4uiv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2dv", glProgramUniformMatrix2dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2fv", glProgramUniformMatrix2fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x3dv", glProgramUniformMatrix2x3dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x3fv", glProgramUniformMatrix2x3fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x4dv", glProgramUniformMatrix2x4dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x4fv", glProgramUniformMatrix2x4fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3dv", glProgramUniformMatrix3dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3fv", glProgramUniformMatrix3fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x2dv", glProgramUniformMatrix3x2dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x2fv", glProgramUniformMatrix3x2fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x4dv", glProgramUniformMatrix3x4dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x4fv", glProgramUniformMatrix3x4fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4dv", glProgramUniformMatrix4dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4fv", glProgramUniformMatrix4fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x2dv", glProgramUniformMatrix4x2dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x2fv", glProgramUniformMatrix4x2fv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x3dv", glProgramUniformMatrix4x3dv == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x3fv", glProgramUniformMatrix4x3fv == NULL);
+ glewInfoFunc(fi, "glUseProgramStages", glUseProgramStages == NULL);
+ glewInfoFunc(fi, "glValidateProgramPipeline", glValidateProgramPipeline == NULL);
+}
+
+#endif /* GL_ARB_separate_shader_objects */
+
+#ifdef GL_ARB_shader_atomic_counter_ops
+
+static void _glewInfo_GL_ARB_shader_atomic_counter_ops (void)
+{
+ glewPrintExt("GL_ARB_shader_atomic_counter_ops", GLEW_ARB_shader_atomic_counter_ops, glewIsSupported("GL_ARB_shader_atomic_counter_ops"), glewGetExtension("GL_ARB_shader_atomic_counter_ops"));
+}
+
+#endif /* GL_ARB_shader_atomic_counter_ops */
+
+#ifdef GL_ARB_shader_atomic_counters
+
+static void _glewInfo_GL_ARB_shader_atomic_counters (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_atomic_counters", GLEW_ARB_shader_atomic_counters, glewIsSupported("GL_ARB_shader_atomic_counters"), glewGetExtension("GL_ARB_shader_atomic_counters"));
+
+ glewInfoFunc(fi, "glGetActiveAtomicCounterBufferiv", glGetActiveAtomicCounterBufferiv == NULL);
+}
+
+#endif /* GL_ARB_shader_atomic_counters */
+
+#ifdef GL_ARB_shader_ballot
+
+static void _glewInfo_GL_ARB_shader_ballot (void)
+{
+ glewPrintExt("GL_ARB_shader_ballot", GLEW_ARB_shader_ballot, glewIsSupported("GL_ARB_shader_ballot"), glewGetExtension("GL_ARB_shader_ballot"));
+}
+
+#endif /* GL_ARB_shader_ballot */
+
+#ifdef GL_ARB_shader_bit_encoding
+
+static void _glewInfo_GL_ARB_shader_bit_encoding (void)
+{
+ glewPrintExt("GL_ARB_shader_bit_encoding", GLEW_ARB_shader_bit_encoding, glewIsSupported("GL_ARB_shader_bit_encoding"), glewGetExtension("GL_ARB_shader_bit_encoding"));
+}
+
+#endif /* GL_ARB_shader_bit_encoding */
+
+#ifdef GL_ARB_shader_clock
+
+static void _glewInfo_GL_ARB_shader_clock (void)
+{
+ glewPrintExt("GL_ARB_shader_clock", GLEW_ARB_shader_clock, glewIsSupported("GL_ARB_shader_clock"), glewGetExtension("GL_ARB_shader_clock"));
+}
+
+#endif /* GL_ARB_shader_clock */
+
+#ifdef GL_ARB_shader_draw_parameters
+
+static void _glewInfo_GL_ARB_shader_draw_parameters (void)
+{
+ glewPrintExt("GL_ARB_shader_draw_parameters", GLEW_ARB_shader_draw_parameters, glewIsSupported("GL_ARB_shader_draw_parameters"), glewGetExtension("GL_ARB_shader_draw_parameters"));
+}
+
+#endif /* GL_ARB_shader_draw_parameters */
+
+#ifdef GL_ARB_shader_group_vote
+
+static void _glewInfo_GL_ARB_shader_group_vote (void)
+{
+ glewPrintExt("GL_ARB_shader_group_vote", GLEW_ARB_shader_group_vote, glewIsSupported("GL_ARB_shader_group_vote"), glewGetExtension("GL_ARB_shader_group_vote"));
+}
+
+#endif /* GL_ARB_shader_group_vote */
+
+#ifdef GL_ARB_shader_image_load_store
+
+static void _glewInfo_GL_ARB_shader_image_load_store (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_image_load_store", GLEW_ARB_shader_image_load_store, glewIsSupported("GL_ARB_shader_image_load_store"), glewGetExtension("GL_ARB_shader_image_load_store"));
+
+ glewInfoFunc(fi, "glBindImageTexture", glBindImageTexture == NULL);
+ glewInfoFunc(fi, "glMemoryBarrier", glMemoryBarrier == NULL);
+}
+
+#endif /* GL_ARB_shader_image_load_store */
+
+#ifdef GL_ARB_shader_image_size
+
+static void _glewInfo_GL_ARB_shader_image_size (void)
+{
+ glewPrintExt("GL_ARB_shader_image_size", GLEW_ARB_shader_image_size, glewIsSupported("GL_ARB_shader_image_size"), glewGetExtension("GL_ARB_shader_image_size"));
+}
+
+#endif /* GL_ARB_shader_image_size */
+
+#ifdef GL_ARB_shader_objects
+
+static void _glewInfo_GL_ARB_shader_objects (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_objects", GLEW_ARB_shader_objects, glewIsSupported("GL_ARB_shader_objects"), glewGetExtension("GL_ARB_shader_objects"));
+
+ glewInfoFunc(fi, "glAttachObjectARB", glAttachObjectARB == NULL);
+ glewInfoFunc(fi, "glCompileShaderARB", glCompileShaderARB == NULL);
+ glewInfoFunc(fi, "glCreateProgramObjectARB", glCreateProgramObjectARB == NULL);
+ glewInfoFunc(fi, "glCreateShaderObjectARB", glCreateShaderObjectARB == NULL);
+ glewInfoFunc(fi, "glDeleteObjectARB", glDeleteObjectARB == NULL);
+ glewInfoFunc(fi, "glDetachObjectARB", glDetachObjectARB == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformARB", glGetActiveUniformARB == NULL);
+ glewInfoFunc(fi, "glGetAttachedObjectsARB", glGetAttachedObjectsARB == NULL);
+ glewInfoFunc(fi, "glGetHandleARB", glGetHandleARB == NULL);
+ glewInfoFunc(fi, "glGetInfoLogARB", glGetInfoLogARB == NULL);
+ glewInfoFunc(fi, "glGetObjectParameterfvARB", glGetObjectParameterfvARB == NULL);
+ glewInfoFunc(fi, "glGetObjectParameterivARB", glGetObjectParameterivARB == NULL);
+ glewInfoFunc(fi, "glGetShaderSourceARB", glGetShaderSourceARB == NULL);
+ glewInfoFunc(fi, "glGetUniformLocationARB", glGetUniformLocationARB == NULL);
+ glewInfoFunc(fi, "glGetUniformfvARB", glGetUniformfvARB == NULL);
+ glewInfoFunc(fi, "glGetUniformivARB", glGetUniformivARB == NULL);
+ glewInfoFunc(fi, "glLinkProgramARB", glLinkProgramARB == NULL);
+ glewInfoFunc(fi, "glShaderSourceARB", glShaderSourceARB == NULL);
+ glewInfoFunc(fi, "glUniform1fARB", glUniform1fARB == NULL);
+ glewInfoFunc(fi, "glUniform1fvARB", glUniform1fvARB == NULL);
+ glewInfoFunc(fi, "glUniform1iARB", glUniform1iARB == NULL);
+ glewInfoFunc(fi, "glUniform1ivARB", glUniform1ivARB == NULL);
+ glewInfoFunc(fi, "glUniform2fARB", glUniform2fARB == NULL);
+ glewInfoFunc(fi, "glUniform2fvARB", glUniform2fvARB == NULL);
+ glewInfoFunc(fi, "glUniform2iARB", glUniform2iARB == NULL);
+ glewInfoFunc(fi, "glUniform2ivARB", glUniform2ivARB == NULL);
+ glewInfoFunc(fi, "glUniform3fARB", glUniform3fARB == NULL);
+ glewInfoFunc(fi, "glUniform3fvARB", glUniform3fvARB == NULL);
+ glewInfoFunc(fi, "glUniform3iARB", glUniform3iARB == NULL);
+ glewInfoFunc(fi, "glUniform3ivARB", glUniform3ivARB == NULL);
+ glewInfoFunc(fi, "glUniform4fARB", glUniform4fARB == NULL);
+ glewInfoFunc(fi, "glUniform4fvARB", glUniform4fvARB == NULL);
+ glewInfoFunc(fi, "glUniform4iARB", glUniform4iARB == NULL);
+ glewInfoFunc(fi, "glUniform4ivARB", glUniform4ivARB == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2fvARB", glUniformMatrix2fvARB == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3fvARB", glUniformMatrix3fvARB == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4fvARB", glUniformMatrix4fvARB == NULL);
+ glewInfoFunc(fi, "glUseProgramObjectARB", glUseProgramObjectARB == NULL);
+ glewInfoFunc(fi, "glValidateProgramARB", glValidateProgramARB == NULL);
+}
+
+#endif /* GL_ARB_shader_objects */
+
+#ifdef GL_ARB_shader_precision
+
+static void _glewInfo_GL_ARB_shader_precision (void)
+{
+ glewPrintExt("GL_ARB_shader_precision", GLEW_ARB_shader_precision, glewIsSupported("GL_ARB_shader_precision"), glewGetExtension("GL_ARB_shader_precision"));
+}
+
+#endif /* GL_ARB_shader_precision */
+
+#ifdef GL_ARB_shader_stencil_export
+
+static void _glewInfo_GL_ARB_shader_stencil_export (void)
+{
+ glewPrintExt("GL_ARB_shader_stencil_export", GLEW_ARB_shader_stencil_export, glewIsSupported("GL_ARB_shader_stencil_export"), glewGetExtension("GL_ARB_shader_stencil_export"));
+}
+
+#endif /* GL_ARB_shader_stencil_export */
+
+#ifdef GL_ARB_shader_storage_buffer_object
+
+static void _glewInfo_GL_ARB_shader_storage_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_storage_buffer_object", GLEW_ARB_shader_storage_buffer_object, glewIsSupported("GL_ARB_shader_storage_buffer_object"), glewGetExtension("GL_ARB_shader_storage_buffer_object"));
+
+ glewInfoFunc(fi, "glShaderStorageBlockBinding", glShaderStorageBlockBinding == NULL);
+}
+
+#endif /* GL_ARB_shader_storage_buffer_object */
+
+#ifdef GL_ARB_shader_subroutine
+
+static void _glewInfo_GL_ARB_shader_subroutine (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shader_subroutine", GLEW_ARB_shader_subroutine, glewIsSupported("GL_ARB_shader_subroutine"), glewGetExtension("GL_ARB_shader_subroutine"));
+
+ glewInfoFunc(fi, "glGetActiveSubroutineName", glGetActiveSubroutineName == NULL);
+ glewInfoFunc(fi, "glGetActiveSubroutineUniformName", glGetActiveSubroutineUniformName == NULL);
+ glewInfoFunc(fi, "glGetActiveSubroutineUniformiv", glGetActiveSubroutineUniformiv == NULL);
+ glewInfoFunc(fi, "glGetProgramStageiv", glGetProgramStageiv == NULL);
+ glewInfoFunc(fi, "glGetSubroutineIndex", glGetSubroutineIndex == NULL);
+ glewInfoFunc(fi, "glGetSubroutineUniformLocation", glGetSubroutineUniformLocation == NULL);
+ glewInfoFunc(fi, "glGetUniformSubroutineuiv", glGetUniformSubroutineuiv == NULL);
+ glewInfoFunc(fi, "glUniformSubroutinesuiv", glUniformSubroutinesuiv == NULL);
+}
+
+#endif /* GL_ARB_shader_subroutine */
+
+#ifdef GL_ARB_shader_texture_image_samples
+
+static void _glewInfo_GL_ARB_shader_texture_image_samples (void)
+{
+ glewPrintExt("GL_ARB_shader_texture_image_samples", GLEW_ARB_shader_texture_image_samples, glewIsSupported("GL_ARB_shader_texture_image_samples"), glewGetExtension("GL_ARB_shader_texture_image_samples"));
+}
+
+#endif /* GL_ARB_shader_texture_image_samples */
+
+#ifdef GL_ARB_shader_texture_lod
+
+static void _glewInfo_GL_ARB_shader_texture_lod (void)
+{
+ glewPrintExt("GL_ARB_shader_texture_lod", GLEW_ARB_shader_texture_lod, glewIsSupported("GL_ARB_shader_texture_lod"), glewGetExtension("GL_ARB_shader_texture_lod"));
+}
+
+#endif /* GL_ARB_shader_texture_lod */
+
+#ifdef GL_ARB_shader_viewport_layer_array
+
+static void _glewInfo_GL_ARB_shader_viewport_layer_array (void)
+{
+ glewPrintExt("GL_ARB_shader_viewport_layer_array", GLEW_ARB_shader_viewport_layer_array, glewIsSupported("GL_ARB_shader_viewport_layer_array"), glewGetExtension("GL_ARB_shader_viewport_layer_array"));
+}
+
+#endif /* GL_ARB_shader_viewport_layer_array */
+
+#ifdef GL_ARB_shading_language_100
+
+static void _glewInfo_GL_ARB_shading_language_100 (void)
+{
+ glewPrintExt("GL_ARB_shading_language_100", GLEW_ARB_shading_language_100, glewIsSupported("GL_ARB_shading_language_100"), glewGetExtension("GL_ARB_shading_language_100"));
+}
+
+#endif /* GL_ARB_shading_language_100 */
+
+#ifdef GL_ARB_shading_language_420pack
+
+static void _glewInfo_GL_ARB_shading_language_420pack (void)
+{
+ glewPrintExt("GL_ARB_shading_language_420pack", GLEW_ARB_shading_language_420pack, glewIsSupported("GL_ARB_shading_language_420pack"), glewGetExtension("GL_ARB_shading_language_420pack"));
+}
+
+#endif /* GL_ARB_shading_language_420pack */
+
+#ifdef GL_ARB_shading_language_include
+
+static void _glewInfo_GL_ARB_shading_language_include (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_shading_language_include", GLEW_ARB_shading_language_include, glewIsSupported("GL_ARB_shading_language_include"), glewGetExtension("GL_ARB_shading_language_include"));
+
+ glewInfoFunc(fi, "glCompileShaderIncludeARB", glCompileShaderIncludeARB == NULL);
+ glewInfoFunc(fi, "glDeleteNamedStringARB", glDeleteNamedStringARB == NULL);
+ glewInfoFunc(fi, "glGetNamedStringARB", glGetNamedStringARB == NULL);
+ glewInfoFunc(fi, "glGetNamedStringivARB", glGetNamedStringivARB == NULL);
+ glewInfoFunc(fi, "glIsNamedStringARB", glIsNamedStringARB == NULL);
+ glewInfoFunc(fi, "glNamedStringARB", glNamedStringARB == NULL);
+}
+
+#endif /* GL_ARB_shading_language_include */
+
+#ifdef GL_ARB_shading_language_packing
+
+static void _glewInfo_GL_ARB_shading_language_packing (void)
+{
+ glewPrintExt("GL_ARB_shading_language_packing", GLEW_ARB_shading_language_packing, glewIsSupported("GL_ARB_shading_language_packing"), glewGetExtension("GL_ARB_shading_language_packing"));
+}
+
+#endif /* GL_ARB_shading_language_packing */
+
+#ifdef GL_ARB_shadow
+
+static void _glewInfo_GL_ARB_shadow (void)
+{
+ glewPrintExt("GL_ARB_shadow", GLEW_ARB_shadow, glewIsSupported("GL_ARB_shadow"), glewGetExtension("GL_ARB_shadow"));
+}
+
+#endif /* GL_ARB_shadow */
+
+#ifdef GL_ARB_shadow_ambient
+
+static void _glewInfo_GL_ARB_shadow_ambient (void)
+{
+ glewPrintExt("GL_ARB_shadow_ambient", GLEW_ARB_shadow_ambient, glewIsSupported("GL_ARB_shadow_ambient"), glewGetExtension("GL_ARB_shadow_ambient"));
+}
+
+#endif /* GL_ARB_shadow_ambient */
+
+#ifdef GL_ARB_sparse_buffer
+
+static void _glewInfo_GL_ARB_sparse_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sparse_buffer", GLEW_ARB_sparse_buffer, glewIsSupported("GL_ARB_sparse_buffer"), glewGetExtension("GL_ARB_sparse_buffer"));
+
+ glewInfoFunc(fi, "glBufferPageCommitmentARB", glBufferPageCommitmentARB == NULL);
+}
+
+#endif /* GL_ARB_sparse_buffer */
+
+#ifdef GL_ARB_sparse_texture
+
+static void _glewInfo_GL_ARB_sparse_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sparse_texture", GLEW_ARB_sparse_texture, glewIsSupported("GL_ARB_sparse_texture"), glewGetExtension("GL_ARB_sparse_texture"));
+
+ glewInfoFunc(fi, "glTexPageCommitmentARB", glTexPageCommitmentARB == NULL);
+}
+
+#endif /* GL_ARB_sparse_texture */
+
+#ifdef GL_ARB_sparse_texture2
+
+static void _glewInfo_GL_ARB_sparse_texture2 (void)
+{
+ glewPrintExt("GL_ARB_sparse_texture2", GLEW_ARB_sparse_texture2, glewIsSupported("GL_ARB_sparse_texture2"), glewGetExtension("GL_ARB_sparse_texture2"));
+}
+
+#endif /* GL_ARB_sparse_texture2 */
+
+#ifdef GL_ARB_sparse_texture_clamp
+
+static void _glewInfo_GL_ARB_sparse_texture_clamp (void)
+{
+ glewPrintExt("GL_ARB_sparse_texture_clamp", GLEW_ARB_sparse_texture_clamp, glewIsSupported("GL_ARB_sparse_texture_clamp"), glewGetExtension("GL_ARB_sparse_texture_clamp"));
+}
+
+#endif /* GL_ARB_sparse_texture_clamp */
+
+#ifdef GL_ARB_spirv_extensions
+
+static void _glewInfo_GL_ARB_spirv_extensions (void)
+{
+ glewPrintExt("GL_ARB_spirv_extensions", GLEW_ARB_spirv_extensions, glewIsSupported("GL_ARB_spirv_extensions"), glewGetExtension("GL_ARB_spirv_extensions"));
+}
+
+#endif /* GL_ARB_spirv_extensions */
+
+#ifdef GL_ARB_stencil_texturing
+
+static void _glewInfo_GL_ARB_stencil_texturing (void)
+{
+ glewPrintExt("GL_ARB_stencil_texturing", GLEW_ARB_stencil_texturing, glewIsSupported("GL_ARB_stencil_texturing"), glewGetExtension("GL_ARB_stencil_texturing"));
+}
+
+#endif /* GL_ARB_stencil_texturing */
+
+#ifdef GL_ARB_sync
+
+static void _glewInfo_GL_ARB_sync (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_sync", GLEW_ARB_sync, glewIsSupported("GL_ARB_sync"), glewGetExtension("GL_ARB_sync"));
+
+ glewInfoFunc(fi, "glClientWaitSync", glClientWaitSync == NULL);
+ glewInfoFunc(fi, "glDeleteSync", glDeleteSync == NULL);
+ glewInfoFunc(fi, "glFenceSync", glFenceSync == NULL);
+ glewInfoFunc(fi, "glGetInteger64v", glGetInteger64v == NULL);
+ glewInfoFunc(fi, "glGetSynciv", glGetSynciv == NULL);
+ glewInfoFunc(fi, "glIsSync", glIsSync == NULL);
+ glewInfoFunc(fi, "glWaitSync", glWaitSync == NULL);
+}
+
+#endif /* GL_ARB_sync */
+
+#ifdef GL_ARB_tessellation_shader
+
+static void _glewInfo_GL_ARB_tessellation_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_tessellation_shader", GLEW_ARB_tessellation_shader, glewIsSupported("GL_ARB_tessellation_shader"), glewGetExtension("GL_ARB_tessellation_shader"));
+
+ glewInfoFunc(fi, "glPatchParameterfv", glPatchParameterfv == NULL);
+ glewInfoFunc(fi, "glPatchParameteri", glPatchParameteri == NULL);
+}
+
+#endif /* GL_ARB_tessellation_shader */
+
+#ifdef GL_ARB_texture_barrier
+
+static void _glewInfo_GL_ARB_texture_barrier (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_barrier", GLEW_ARB_texture_barrier, glewIsSupported("GL_ARB_texture_barrier"), glewGetExtension("GL_ARB_texture_barrier"));
+
+ glewInfoFunc(fi, "glTextureBarrier", glTextureBarrier == NULL);
+}
+
+#endif /* GL_ARB_texture_barrier */
+
+#ifdef GL_ARB_texture_border_clamp
+
+static void _glewInfo_GL_ARB_texture_border_clamp (void)
+{
+ glewPrintExt("GL_ARB_texture_border_clamp", GLEW_ARB_texture_border_clamp, glewIsSupported("GL_ARB_texture_border_clamp"), glewGetExtension("GL_ARB_texture_border_clamp"));
+}
+
+#endif /* GL_ARB_texture_border_clamp */
+
+#ifdef GL_ARB_texture_buffer_object
+
+static void _glewInfo_GL_ARB_texture_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_buffer_object", GLEW_ARB_texture_buffer_object, glewIsSupported("GL_ARB_texture_buffer_object"), glewGetExtension("GL_ARB_texture_buffer_object"));
+
+ glewInfoFunc(fi, "glTexBufferARB", glTexBufferARB == NULL);
+}
+
+#endif /* GL_ARB_texture_buffer_object */
+
+#ifdef GL_ARB_texture_buffer_object_rgb32
+
+static void _glewInfo_GL_ARB_texture_buffer_object_rgb32 (void)
+{
+ glewPrintExt("GL_ARB_texture_buffer_object_rgb32", GLEW_ARB_texture_buffer_object_rgb32, glewIsSupported("GL_ARB_texture_buffer_object_rgb32"), glewGetExtension("GL_ARB_texture_buffer_object_rgb32"));
+}
+
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+
+#ifdef GL_ARB_texture_buffer_range
+
+static void _glewInfo_GL_ARB_texture_buffer_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_buffer_range", GLEW_ARB_texture_buffer_range, glewIsSupported("GL_ARB_texture_buffer_range"), glewGetExtension("GL_ARB_texture_buffer_range"));
+
+ glewInfoFunc(fi, "glTexBufferRange", glTexBufferRange == NULL);
+ glewInfoFunc(fi, "glTextureBufferRangeEXT", glTextureBufferRangeEXT == NULL);
+}
+
+#endif /* GL_ARB_texture_buffer_range */
+
+#ifdef GL_ARB_texture_compression
+
+static void _glewInfo_GL_ARB_texture_compression (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_compression", GLEW_ARB_texture_compression, glewIsSupported("GL_ARB_texture_compression"), glewGetExtension("GL_ARB_texture_compression"));
+
+ glewInfoFunc(fi, "glCompressedTexImage1DARB", glCompressedTexImage1DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage2DARB", glCompressedTexImage2DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexImage3DARB", glCompressedTexImage3DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage1DARB", glCompressedTexSubImage1DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage2DARB", glCompressedTexSubImage2DARB == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage3DARB", glCompressedTexSubImage3DARB == NULL);
+ glewInfoFunc(fi, "glGetCompressedTexImageARB", glGetCompressedTexImageARB == NULL);
+}
+
+#endif /* GL_ARB_texture_compression */
+
+#ifdef GL_ARB_texture_compression_bptc
+
+static void _glewInfo_GL_ARB_texture_compression_bptc (void)
+{
+ glewPrintExt("GL_ARB_texture_compression_bptc", GLEW_ARB_texture_compression_bptc, glewIsSupported("GL_ARB_texture_compression_bptc"), glewGetExtension("GL_ARB_texture_compression_bptc"));
+}
+
+#endif /* GL_ARB_texture_compression_bptc */
+
+#ifdef GL_ARB_texture_compression_rgtc
+
+static void _glewInfo_GL_ARB_texture_compression_rgtc (void)
+{
+ glewPrintExt("GL_ARB_texture_compression_rgtc", GLEW_ARB_texture_compression_rgtc, glewIsSupported("GL_ARB_texture_compression_rgtc"), glewGetExtension("GL_ARB_texture_compression_rgtc"));
+}
+
+#endif /* GL_ARB_texture_compression_rgtc */
+
+#ifdef GL_ARB_texture_cube_map
+
+static void _glewInfo_GL_ARB_texture_cube_map (void)
+{
+ glewPrintExt("GL_ARB_texture_cube_map", GLEW_ARB_texture_cube_map, glewIsSupported("GL_ARB_texture_cube_map"), glewGetExtension("GL_ARB_texture_cube_map"));
+}
+
+#endif /* GL_ARB_texture_cube_map */
+
+#ifdef GL_ARB_texture_cube_map_array
+
+static void _glewInfo_GL_ARB_texture_cube_map_array (void)
+{
+ glewPrintExt("GL_ARB_texture_cube_map_array", GLEW_ARB_texture_cube_map_array, glewIsSupported("GL_ARB_texture_cube_map_array"), glewGetExtension("GL_ARB_texture_cube_map_array"));
+}
+
+#endif /* GL_ARB_texture_cube_map_array */
+
+#ifdef GL_ARB_texture_env_add
+
+static void _glewInfo_GL_ARB_texture_env_add (void)
+{
+ glewPrintExt("GL_ARB_texture_env_add", GLEW_ARB_texture_env_add, glewIsSupported("GL_ARB_texture_env_add"), glewGetExtension("GL_ARB_texture_env_add"));
+}
+
+#endif /* GL_ARB_texture_env_add */
+
+#ifdef GL_ARB_texture_env_combine
+
+static void _glewInfo_GL_ARB_texture_env_combine (void)
+{
+ glewPrintExt("GL_ARB_texture_env_combine", GLEW_ARB_texture_env_combine, glewIsSupported("GL_ARB_texture_env_combine"), glewGetExtension("GL_ARB_texture_env_combine"));
+}
+
+#endif /* GL_ARB_texture_env_combine */
+
+#ifdef GL_ARB_texture_env_crossbar
+
+static void _glewInfo_GL_ARB_texture_env_crossbar (void)
+{
+ glewPrintExt("GL_ARB_texture_env_crossbar", GLEW_ARB_texture_env_crossbar, glewIsSupported("GL_ARB_texture_env_crossbar"), glewGetExtension("GL_ARB_texture_env_crossbar"));
+}
+
+#endif /* GL_ARB_texture_env_crossbar */
+
+#ifdef GL_ARB_texture_env_dot3
+
+static void _glewInfo_GL_ARB_texture_env_dot3 (void)
+{
+ glewPrintExt("GL_ARB_texture_env_dot3", GLEW_ARB_texture_env_dot3, glewIsSupported("GL_ARB_texture_env_dot3"), glewGetExtension("GL_ARB_texture_env_dot3"));
+}
+
+#endif /* GL_ARB_texture_env_dot3 */
+
+#ifdef GL_ARB_texture_filter_anisotropic
+
+static void _glewInfo_GL_ARB_texture_filter_anisotropic (void)
+{
+ glewPrintExt("GL_ARB_texture_filter_anisotropic", GLEW_ARB_texture_filter_anisotropic, glewIsSupported("GL_ARB_texture_filter_anisotropic"), glewGetExtension("GL_ARB_texture_filter_anisotropic"));
+}
+
+#endif /* GL_ARB_texture_filter_anisotropic */
+
+#ifdef GL_ARB_texture_filter_minmax
+
+static void _glewInfo_GL_ARB_texture_filter_minmax (void)
+{
+ glewPrintExt("GL_ARB_texture_filter_minmax", GLEW_ARB_texture_filter_minmax, glewIsSupported("GL_ARB_texture_filter_minmax"), glewGetExtension("GL_ARB_texture_filter_minmax"));
+}
+
+#endif /* GL_ARB_texture_filter_minmax */
+
+#ifdef GL_ARB_texture_float
+
+static void _glewInfo_GL_ARB_texture_float (void)
+{
+ glewPrintExt("GL_ARB_texture_float", GLEW_ARB_texture_float, glewIsSupported("GL_ARB_texture_float"), glewGetExtension("GL_ARB_texture_float"));
+}
+
+#endif /* GL_ARB_texture_float */
+
+#ifdef GL_ARB_texture_gather
+
+static void _glewInfo_GL_ARB_texture_gather (void)
+{
+ glewPrintExt("GL_ARB_texture_gather", GLEW_ARB_texture_gather, glewIsSupported("GL_ARB_texture_gather"), glewGetExtension("GL_ARB_texture_gather"));
+}
+
+#endif /* GL_ARB_texture_gather */
+
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+
+static void _glewInfo_GL_ARB_texture_mirror_clamp_to_edge (void)
+{
+ glewPrintExt("GL_ARB_texture_mirror_clamp_to_edge", GLEW_ARB_texture_mirror_clamp_to_edge, glewIsSupported("GL_ARB_texture_mirror_clamp_to_edge"), glewGetExtension("GL_ARB_texture_mirror_clamp_to_edge"));
+}
+
+#endif /* GL_ARB_texture_mirror_clamp_to_edge */
+
+#ifdef GL_ARB_texture_mirrored_repeat
+
+static void _glewInfo_GL_ARB_texture_mirrored_repeat (void)
+{
+ glewPrintExt("GL_ARB_texture_mirrored_repeat", GLEW_ARB_texture_mirrored_repeat, glewIsSupported("GL_ARB_texture_mirrored_repeat"), glewGetExtension("GL_ARB_texture_mirrored_repeat"));
+}
+
+#endif /* GL_ARB_texture_mirrored_repeat */
+
+#ifdef GL_ARB_texture_multisample
+
+static void _glewInfo_GL_ARB_texture_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_multisample", GLEW_ARB_texture_multisample, glewIsSupported("GL_ARB_texture_multisample"), glewGetExtension("GL_ARB_texture_multisample"));
+
+ glewInfoFunc(fi, "glGetMultisamplefv", glGetMultisamplefv == NULL);
+ glewInfoFunc(fi, "glSampleMaski", glSampleMaski == NULL);
+ glewInfoFunc(fi, "glTexImage2DMultisample", glTexImage2DMultisample == NULL);
+ glewInfoFunc(fi, "glTexImage3DMultisample", glTexImage3DMultisample == NULL);
+}
+
+#endif /* GL_ARB_texture_multisample */
+
+#ifdef GL_ARB_texture_non_power_of_two
+
+static void _glewInfo_GL_ARB_texture_non_power_of_two (void)
+{
+ glewPrintExt("GL_ARB_texture_non_power_of_two", GLEW_ARB_texture_non_power_of_two, glewIsSupported("GL_ARB_texture_non_power_of_two"), glewGetExtension("GL_ARB_texture_non_power_of_two"));
+}
+
+#endif /* GL_ARB_texture_non_power_of_two */
+
+#ifdef GL_ARB_texture_query_levels
+
+static void _glewInfo_GL_ARB_texture_query_levels (void)
+{
+ glewPrintExt("GL_ARB_texture_query_levels", GLEW_ARB_texture_query_levels, glewIsSupported("GL_ARB_texture_query_levels"), glewGetExtension("GL_ARB_texture_query_levels"));
+}
+
+#endif /* GL_ARB_texture_query_levels */
+
+#ifdef GL_ARB_texture_query_lod
+
+static void _glewInfo_GL_ARB_texture_query_lod (void)
+{
+ glewPrintExt("GL_ARB_texture_query_lod", GLEW_ARB_texture_query_lod, glewIsSupported("GL_ARB_texture_query_lod"), glewGetExtension("GL_ARB_texture_query_lod"));
+}
+
+#endif /* GL_ARB_texture_query_lod */
+
+#ifdef GL_ARB_texture_rectangle
+
+static void _glewInfo_GL_ARB_texture_rectangle (void)
+{
+ glewPrintExt("GL_ARB_texture_rectangle", GLEW_ARB_texture_rectangle, glewIsSupported("GL_ARB_texture_rectangle"), glewGetExtension("GL_ARB_texture_rectangle"));
+}
+
+#endif /* GL_ARB_texture_rectangle */
+
+#ifdef GL_ARB_texture_rg
+
+static void _glewInfo_GL_ARB_texture_rg (void)
+{
+ glewPrintExt("GL_ARB_texture_rg", GLEW_ARB_texture_rg, glewIsSupported("GL_ARB_texture_rg"), glewGetExtension("GL_ARB_texture_rg"));
+}
+
+#endif /* GL_ARB_texture_rg */
+
+#ifdef GL_ARB_texture_rgb10_a2ui
+
+static void _glewInfo_GL_ARB_texture_rgb10_a2ui (void)
+{
+ glewPrintExt("GL_ARB_texture_rgb10_a2ui", GLEW_ARB_texture_rgb10_a2ui, glewIsSupported("GL_ARB_texture_rgb10_a2ui"), glewGetExtension("GL_ARB_texture_rgb10_a2ui"));
+}
+
+#endif /* GL_ARB_texture_rgb10_a2ui */
+
+#ifdef GL_ARB_texture_stencil8
+
+static void _glewInfo_GL_ARB_texture_stencil8 (void)
+{
+ glewPrintExt("GL_ARB_texture_stencil8", GLEW_ARB_texture_stencil8, glewIsSupported("GL_ARB_texture_stencil8"), glewGetExtension("GL_ARB_texture_stencil8"));
+}
+
+#endif /* GL_ARB_texture_stencil8 */
+
+#ifdef GL_ARB_texture_storage
+
+static void _glewInfo_GL_ARB_texture_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_storage", GLEW_ARB_texture_storage, glewIsSupported("GL_ARB_texture_storage"), glewGetExtension("GL_ARB_texture_storage"));
+
+ glewInfoFunc(fi, "glTexStorage1D", glTexStorage1D == NULL);
+ glewInfoFunc(fi, "glTexStorage2D", glTexStorage2D == NULL);
+ glewInfoFunc(fi, "glTexStorage3D", glTexStorage3D == NULL);
+}
+
+#endif /* GL_ARB_texture_storage */
+
+#ifdef GL_ARB_texture_storage_multisample
+
+static void _glewInfo_GL_ARB_texture_storage_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_storage_multisample", GLEW_ARB_texture_storage_multisample, glewIsSupported("GL_ARB_texture_storage_multisample"), glewGetExtension("GL_ARB_texture_storage_multisample"));
+
+ glewInfoFunc(fi, "glTexStorage2DMultisample", glTexStorage2DMultisample == NULL);
+ glewInfoFunc(fi, "glTexStorage3DMultisample", glTexStorage3DMultisample == NULL);
+ glewInfoFunc(fi, "glTextureStorage2DMultisampleEXT", glTextureStorage2DMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorage3DMultisampleEXT", glTextureStorage3DMultisampleEXT == NULL);
+}
+
+#endif /* GL_ARB_texture_storage_multisample */
+
+#ifdef GL_ARB_texture_swizzle
+
+static void _glewInfo_GL_ARB_texture_swizzle (void)
+{
+ glewPrintExt("GL_ARB_texture_swizzle", GLEW_ARB_texture_swizzle, glewIsSupported("GL_ARB_texture_swizzle"), glewGetExtension("GL_ARB_texture_swizzle"));
+}
+
+#endif /* GL_ARB_texture_swizzle */
+
+#ifdef GL_ARB_texture_view
+
+static void _glewInfo_GL_ARB_texture_view (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_texture_view", GLEW_ARB_texture_view, glewIsSupported("GL_ARB_texture_view"), glewGetExtension("GL_ARB_texture_view"));
+
+ glewInfoFunc(fi, "glTextureView", glTextureView == NULL);
+}
+
+#endif /* GL_ARB_texture_view */
+
+#ifdef GL_ARB_timer_query
+
+static void _glewInfo_GL_ARB_timer_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_timer_query", GLEW_ARB_timer_query, glewIsSupported("GL_ARB_timer_query"), glewGetExtension("GL_ARB_timer_query"));
+
+ glewInfoFunc(fi, "glGetQueryObjecti64v", glGetQueryObjecti64v == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectui64v", glGetQueryObjectui64v == NULL);
+ glewInfoFunc(fi, "glQueryCounter", glQueryCounter == NULL);
+}
+
+#endif /* GL_ARB_timer_query */
+
+#ifdef GL_ARB_transform_feedback2
+
+static void _glewInfo_GL_ARB_transform_feedback2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_transform_feedback2", GLEW_ARB_transform_feedback2, glewIsSupported("GL_ARB_transform_feedback2"), glewGetExtension("GL_ARB_transform_feedback2"));
+
+ glewInfoFunc(fi, "glBindTransformFeedback", glBindTransformFeedback == NULL);
+ glewInfoFunc(fi, "glDeleteTransformFeedbacks", glDeleteTransformFeedbacks == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedback", glDrawTransformFeedback == NULL);
+ glewInfoFunc(fi, "glGenTransformFeedbacks", glGenTransformFeedbacks == NULL);
+ glewInfoFunc(fi, "glIsTransformFeedback", glIsTransformFeedback == NULL);
+ glewInfoFunc(fi, "glPauseTransformFeedback", glPauseTransformFeedback == NULL);
+ glewInfoFunc(fi, "glResumeTransformFeedback", glResumeTransformFeedback == NULL);
+}
+
+#endif /* GL_ARB_transform_feedback2 */
+
+#ifdef GL_ARB_transform_feedback3
+
+static void _glewInfo_GL_ARB_transform_feedback3 (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_transform_feedback3", GLEW_ARB_transform_feedback3, glewIsSupported("GL_ARB_transform_feedback3"), glewGetExtension("GL_ARB_transform_feedback3"));
+
+ glewInfoFunc(fi, "glBeginQueryIndexed", glBeginQueryIndexed == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedbackStream", glDrawTransformFeedbackStream == NULL);
+ glewInfoFunc(fi, "glEndQueryIndexed", glEndQueryIndexed == NULL);
+ glewInfoFunc(fi, "glGetQueryIndexediv", glGetQueryIndexediv == NULL);
+}
+
+#endif /* GL_ARB_transform_feedback3 */
+
+#ifdef GL_ARB_transform_feedback_instanced
+
+static void _glewInfo_GL_ARB_transform_feedback_instanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_transform_feedback_instanced", GLEW_ARB_transform_feedback_instanced, glewIsSupported("GL_ARB_transform_feedback_instanced"), glewGetExtension("GL_ARB_transform_feedback_instanced"));
+
+ glewInfoFunc(fi, "glDrawTransformFeedbackInstanced", glDrawTransformFeedbackInstanced == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedbackStreamInstanced", glDrawTransformFeedbackStreamInstanced == NULL);
+}
+
+#endif /* GL_ARB_transform_feedback_instanced */
+
+#ifdef GL_ARB_transform_feedback_overflow_query
+
+static void _glewInfo_GL_ARB_transform_feedback_overflow_query (void)
+{
+ glewPrintExt("GL_ARB_transform_feedback_overflow_query", GLEW_ARB_transform_feedback_overflow_query, glewIsSupported("GL_ARB_transform_feedback_overflow_query"), glewGetExtension("GL_ARB_transform_feedback_overflow_query"));
+}
+
+#endif /* GL_ARB_transform_feedback_overflow_query */
+
+#ifdef GL_ARB_transpose_matrix
+
+static void _glewInfo_GL_ARB_transpose_matrix (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_transpose_matrix", GLEW_ARB_transpose_matrix, glewIsSupported("GL_ARB_transpose_matrix"), glewGetExtension("GL_ARB_transpose_matrix"));
+
+ glewInfoFunc(fi, "glLoadTransposeMatrixdARB", glLoadTransposeMatrixdARB == NULL);
+ glewInfoFunc(fi, "glLoadTransposeMatrixfARB", glLoadTransposeMatrixfARB == NULL);
+ glewInfoFunc(fi, "glMultTransposeMatrixdARB", glMultTransposeMatrixdARB == NULL);
+ glewInfoFunc(fi, "glMultTransposeMatrixfARB", glMultTransposeMatrixfARB == NULL);
+}
+
+#endif /* GL_ARB_transpose_matrix */
+
+#ifdef GL_ARB_uniform_buffer_object
+
+static void _glewInfo_GL_ARB_uniform_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_uniform_buffer_object", GLEW_ARB_uniform_buffer_object, glewIsSupported("GL_ARB_uniform_buffer_object"), glewGetExtension("GL_ARB_uniform_buffer_object"));
+
+ glewInfoFunc(fi, "glBindBufferBase", glBindBufferBase == NULL);
+ glewInfoFunc(fi, "glBindBufferRange", glBindBufferRange == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformBlockName", glGetActiveUniformBlockName == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformBlockiv", glGetActiveUniformBlockiv == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformName", glGetActiveUniformName == NULL);
+ glewInfoFunc(fi, "glGetActiveUniformsiv", glGetActiveUniformsiv == NULL);
+ glewInfoFunc(fi, "glGetIntegeri_v", glGetIntegeri_v == NULL);
+ glewInfoFunc(fi, "glGetUniformBlockIndex", glGetUniformBlockIndex == NULL);
+ glewInfoFunc(fi, "glGetUniformIndices", glGetUniformIndices == NULL);
+ glewInfoFunc(fi, "glUniformBlockBinding", glUniformBlockBinding == NULL);
+}
+
+#endif /* GL_ARB_uniform_buffer_object */
+
+#ifdef GL_ARB_vertex_array_bgra
+
+static void _glewInfo_GL_ARB_vertex_array_bgra (void)
+{
+ glewPrintExt("GL_ARB_vertex_array_bgra", GLEW_ARB_vertex_array_bgra, glewIsSupported("GL_ARB_vertex_array_bgra"), glewGetExtension("GL_ARB_vertex_array_bgra"));
+}
+
+#endif /* GL_ARB_vertex_array_bgra */
+
+#ifdef GL_ARB_vertex_array_object
+
+static void _glewInfo_GL_ARB_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_array_object", GLEW_ARB_vertex_array_object, glewIsSupported("GL_ARB_vertex_array_object"), glewGetExtension("GL_ARB_vertex_array_object"));
+
+ glewInfoFunc(fi, "glBindVertexArray", glBindVertexArray == NULL);
+ glewInfoFunc(fi, "glDeleteVertexArrays", glDeleteVertexArrays == NULL);
+ glewInfoFunc(fi, "glGenVertexArrays", glGenVertexArrays == NULL);
+ glewInfoFunc(fi, "glIsVertexArray", glIsVertexArray == NULL);
+}
+
+#endif /* GL_ARB_vertex_array_object */
+
+#ifdef GL_ARB_vertex_attrib_64bit
+
+static void _glewInfo_GL_ARB_vertex_attrib_64bit (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_attrib_64bit", GLEW_ARB_vertex_attrib_64bit, glewIsSupported("GL_ARB_vertex_attrib_64bit"), glewGetExtension("GL_ARB_vertex_attrib_64bit"));
+
+ glewInfoFunc(fi, "glGetVertexAttribLdv", glGetVertexAttribLdv == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1d", glVertexAttribL1d == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1dv", glVertexAttribL1dv == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2d", glVertexAttribL2d == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2dv", glVertexAttribL2dv == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3d", glVertexAttribL3d == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3dv", glVertexAttribL3dv == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4d", glVertexAttribL4d == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4dv", glVertexAttribL4dv == NULL);
+ glewInfoFunc(fi, "glVertexAttribLPointer", glVertexAttribLPointer == NULL);
+}
+
+#endif /* GL_ARB_vertex_attrib_64bit */
+
+#ifdef GL_ARB_vertex_attrib_binding
+
+static void _glewInfo_GL_ARB_vertex_attrib_binding (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_attrib_binding", GLEW_ARB_vertex_attrib_binding, glewIsSupported("GL_ARB_vertex_attrib_binding"), glewGetExtension("GL_ARB_vertex_attrib_binding"));
+
+ glewInfoFunc(fi, "glBindVertexBuffer", glBindVertexBuffer == NULL);
+ glewInfoFunc(fi, "glVertexArrayBindVertexBufferEXT", glVertexArrayBindVertexBufferEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribBindingEXT", glVertexArrayVertexAttribBindingEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribFormatEXT", glVertexArrayVertexAttribFormatEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribIFormatEXT", glVertexArrayVertexAttribIFormatEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribLFormatEXT", glVertexArrayVertexAttribLFormatEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexBindingDivisorEXT", glVertexArrayVertexBindingDivisorEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribBinding", glVertexAttribBinding == NULL);
+ glewInfoFunc(fi, "glVertexAttribFormat", glVertexAttribFormat == NULL);
+ glewInfoFunc(fi, "glVertexAttribIFormat", glVertexAttribIFormat == NULL);
+ glewInfoFunc(fi, "glVertexAttribLFormat", glVertexAttribLFormat == NULL);
+ glewInfoFunc(fi, "glVertexBindingDivisor", glVertexBindingDivisor == NULL);
+}
+
+#endif /* GL_ARB_vertex_attrib_binding */
+
+#ifdef GL_ARB_vertex_blend
+
+static void _glewInfo_GL_ARB_vertex_blend (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_blend", GLEW_ARB_vertex_blend, glewIsSupported("GL_ARB_vertex_blend"), glewGetExtension("GL_ARB_vertex_blend"));
+
+ glewInfoFunc(fi, "glVertexBlendARB", glVertexBlendARB == NULL);
+ glewInfoFunc(fi, "glWeightPointerARB", glWeightPointerARB == NULL);
+ glewInfoFunc(fi, "glWeightbvARB", glWeightbvARB == NULL);
+ glewInfoFunc(fi, "glWeightdvARB", glWeightdvARB == NULL);
+ glewInfoFunc(fi, "glWeightfvARB", glWeightfvARB == NULL);
+ glewInfoFunc(fi, "glWeightivARB", glWeightivARB == NULL);
+ glewInfoFunc(fi, "glWeightsvARB", glWeightsvARB == NULL);
+ glewInfoFunc(fi, "glWeightubvARB", glWeightubvARB == NULL);
+ glewInfoFunc(fi, "glWeightuivARB", glWeightuivARB == NULL);
+ glewInfoFunc(fi, "glWeightusvARB", glWeightusvARB == NULL);
+}
+
+#endif /* GL_ARB_vertex_blend */
+
+#ifdef GL_ARB_vertex_buffer_object
+
+static void _glewInfo_GL_ARB_vertex_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_buffer_object", GLEW_ARB_vertex_buffer_object, glewIsSupported("GL_ARB_vertex_buffer_object"), glewGetExtension("GL_ARB_vertex_buffer_object"));
+
+ glewInfoFunc(fi, "glBindBufferARB", glBindBufferARB == NULL);
+ glewInfoFunc(fi, "glBufferDataARB", glBufferDataARB == NULL);
+ glewInfoFunc(fi, "glBufferSubDataARB", glBufferSubDataARB == NULL);
+ glewInfoFunc(fi, "glDeleteBuffersARB", glDeleteBuffersARB == NULL);
+ glewInfoFunc(fi, "glGenBuffersARB", glGenBuffersARB == NULL);
+ glewInfoFunc(fi, "glGetBufferParameterivARB", glGetBufferParameterivARB == NULL);
+ glewInfoFunc(fi, "glGetBufferPointervARB", glGetBufferPointervARB == NULL);
+ glewInfoFunc(fi, "glGetBufferSubDataARB", glGetBufferSubDataARB == NULL);
+ glewInfoFunc(fi, "glIsBufferARB", glIsBufferARB == NULL);
+ glewInfoFunc(fi, "glMapBufferARB", glMapBufferARB == NULL);
+ glewInfoFunc(fi, "glUnmapBufferARB", glUnmapBufferARB == NULL);
+}
+
+#endif /* GL_ARB_vertex_buffer_object */
+
+#ifdef GL_ARB_vertex_program
+
+static void _glewInfo_GL_ARB_vertex_program (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_program", GLEW_ARB_vertex_program, glewIsSupported("GL_ARB_vertex_program"), glewGetExtension("GL_ARB_vertex_program"));
+
+ glewInfoFunc(fi, "glBindProgramARB", glBindProgramARB == NULL);
+ glewInfoFunc(fi, "glDeleteProgramsARB", glDeleteProgramsARB == NULL);
+ glewInfoFunc(fi, "glDisableVertexAttribArrayARB", glDisableVertexAttribArrayARB == NULL);
+ glewInfoFunc(fi, "glEnableVertexAttribArrayARB", glEnableVertexAttribArrayARB == NULL);
+ glewInfoFunc(fi, "glGenProgramsARB", glGenProgramsARB == NULL);
+ glewInfoFunc(fi, "glGetProgramEnvParameterdvARB", glGetProgramEnvParameterdvARB == NULL);
+ glewInfoFunc(fi, "glGetProgramEnvParameterfvARB", glGetProgramEnvParameterfvARB == NULL);
+ glewInfoFunc(fi, "glGetProgramLocalParameterdvARB", glGetProgramLocalParameterdvARB == NULL);
+ glewInfoFunc(fi, "glGetProgramLocalParameterfvARB", glGetProgramLocalParameterfvARB == NULL);
+ glewInfoFunc(fi, "glGetProgramStringARB", glGetProgramStringARB == NULL);
+ glewInfoFunc(fi, "glGetProgramivARB", glGetProgramivARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribPointervARB", glGetVertexAttribPointervARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribdvARB", glGetVertexAttribdvARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribfvARB", glGetVertexAttribfvARB == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribivARB", glGetVertexAttribivARB == NULL);
+ glewInfoFunc(fi, "glIsProgramARB", glIsProgramARB == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameter4dARB", glProgramEnvParameter4dARB == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameter4dvARB", glProgramEnvParameter4dvARB == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameter4fARB", glProgramEnvParameter4fARB == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameter4fvARB", glProgramEnvParameter4fvARB == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameter4dARB", glProgramLocalParameter4dARB == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameter4dvARB", glProgramLocalParameter4dvARB == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameter4fARB", glProgramLocalParameter4fARB == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameter4fvARB", glProgramLocalParameter4fvARB == NULL);
+ glewInfoFunc(fi, "glProgramStringARB", glProgramStringARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dARB", glVertexAttrib1dARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dvARB", glVertexAttrib1dvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fARB", glVertexAttrib1fARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fvARB", glVertexAttrib1fvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1sARB", glVertexAttrib1sARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1svARB", glVertexAttrib1svARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dARB", glVertexAttrib2dARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dvARB", glVertexAttrib2dvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fARB", glVertexAttrib2fARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fvARB", glVertexAttrib2fvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2sARB", glVertexAttrib2sARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2svARB", glVertexAttrib2svARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dARB", glVertexAttrib3dARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dvARB", glVertexAttrib3dvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fARB", glVertexAttrib3fARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fvARB", glVertexAttrib3fvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3sARB", glVertexAttrib3sARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3svARB", glVertexAttrib3svARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NbvARB", glVertexAttrib4NbvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NivARB", glVertexAttrib4NivARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NsvARB", glVertexAttrib4NsvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NubARB", glVertexAttrib4NubARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NubvARB", glVertexAttrib4NubvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NuivARB", glVertexAttrib4NuivARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4NusvARB", glVertexAttrib4NusvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4bvARB", glVertexAttrib4bvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dARB", glVertexAttrib4dARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dvARB", glVertexAttrib4dvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fARB", glVertexAttrib4fARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fvARB", glVertexAttrib4fvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ivARB", glVertexAttrib4ivARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4sARB", glVertexAttrib4sARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4svARB", glVertexAttrib4svARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ubvARB", glVertexAttrib4ubvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4uivARB", glVertexAttrib4uivARB == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4usvARB", glVertexAttrib4usvARB == NULL);
+ glewInfoFunc(fi, "glVertexAttribPointerARB", glVertexAttribPointerARB == NULL);
+}
+
+#endif /* GL_ARB_vertex_program */
+
+#ifdef GL_ARB_vertex_shader
+
+static void _glewInfo_GL_ARB_vertex_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_shader", GLEW_ARB_vertex_shader, glewIsSupported("GL_ARB_vertex_shader"), glewGetExtension("GL_ARB_vertex_shader"));
+
+ glewInfoFunc(fi, "glBindAttribLocationARB", glBindAttribLocationARB == NULL);
+ glewInfoFunc(fi, "glGetActiveAttribARB", glGetActiveAttribARB == NULL);
+ glewInfoFunc(fi, "glGetAttribLocationARB", glGetAttribLocationARB == NULL);
+}
+
+#endif /* GL_ARB_vertex_shader */
+
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+
+static void _glewInfo_GL_ARB_vertex_type_10f_11f_11f_rev (void)
+{
+ glewPrintExt("GL_ARB_vertex_type_10f_11f_11f_rev", GLEW_ARB_vertex_type_10f_11f_11f_rev, glewIsSupported("GL_ARB_vertex_type_10f_11f_11f_rev"), glewGetExtension("GL_ARB_vertex_type_10f_11f_11f_rev"));
+}
+
+#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
+
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+
+static void _glewInfo_GL_ARB_vertex_type_2_10_10_10_rev (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_vertex_type_2_10_10_10_rev", GLEW_ARB_vertex_type_2_10_10_10_rev, glewIsSupported("GL_ARB_vertex_type_2_10_10_10_rev"), glewGetExtension("GL_ARB_vertex_type_2_10_10_10_rev"));
+
+ glewInfoFunc(fi, "glColorP3ui", glColorP3ui == NULL);
+ glewInfoFunc(fi, "glColorP3uiv", glColorP3uiv == NULL);
+ glewInfoFunc(fi, "glColorP4ui", glColorP4ui == NULL);
+ glewInfoFunc(fi, "glColorP4uiv", glColorP4uiv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP1ui", glMultiTexCoordP1ui == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP1uiv", glMultiTexCoordP1uiv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP2ui", glMultiTexCoordP2ui == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP2uiv", glMultiTexCoordP2uiv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP3ui", glMultiTexCoordP3ui == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP3uiv", glMultiTexCoordP3uiv == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP4ui", glMultiTexCoordP4ui == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordP4uiv", glMultiTexCoordP4uiv == NULL);
+ glewInfoFunc(fi, "glNormalP3ui", glNormalP3ui == NULL);
+ glewInfoFunc(fi, "glNormalP3uiv", glNormalP3uiv == NULL);
+ glewInfoFunc(fi, "glSecondaryColorP3ui", glSecondaryColorP3ui == NULL);
+ glewInfoFunc(fi, "glSecondaryColorP3uiv", glSecondaryColorP3uiv == NULL);
+ glewInfoFunc(fi, "glTexCoordP1ui", glTexCoordP1ui == NULL);
+ glewInfoFunc(fi, "glTexCoordP1uiv", glTexCoordP1uiv == NULL);
+ glewInfoFunc(fi, "glTexCoordP2ui", glTexCoordP2ui == NULL);
+ glewInfoFunc(fi, "glTexCoordP2uiv", glTexCoordP2uiv == NULL);
+ glewInfoFunc(fi, "glTexCoordP3ui", glTexCoordP3ui == NULL);
+ glewInfoFunc(fi, "glTexCoordP3uiv", glTexCoordP3uiv == NULL);
+ glewInfoFunc(fi, "glTexCoordP4ui", glTexCoordP4ui == NULL);
+ glewInfoFunc(fi, "glTexCoordP4uiv", glTexCoordP4uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribP1ui", glVertexAttribP1ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribP1uiv", glVertexAttribP1uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribP2ui", glVertexAttribP2ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribP2uiv", glVertexAttribP2uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribP3ui", glVertexAttribP3ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribP3uiv", glVertexAttribP3uiv == NULL);
+ glewInfoFunc(fi, "glVertexAttribP4ui", glVertexAttribP4ui == NULL);
+ glewInfoFunc(fi, "glVertexAttribP4uiv", glVertexAttribP4uiv == NULL);
+ glewInfoFunc(fi, "glVertexP2ui", glVertexP2ui == NULL);
+ glewInfoFunc(fi, "glVertexP2uiv", glVertexP2uiv == NULL);
+ glewInfoFunc(fi, "glVertexP3ui", glVertexP3ui == NULL);
+ glewInfoFunc(fi, "glVertexP3uiv", glVertexP3uiv == NULL);
+ glewInfoFunc(fi, "glVertexP4ui", glVertexP4ui == NULL);
+ glewInfoFunc(fi, "glVertexP4uiv", glVertexP4uiv == NULL);
+}
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
+#ifdef GL_ARB_viewport_array
+
+static void _glewInfo_GL_ARB_viewport_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_viewport_array", GLEW_ARB_viewport_array, glewIsSupported("GL_ARB_viewport_array"), glewGetExtension("GL_ARB_viewport_array"));
+
+ glewInfoFunc(fi, "glDepthRangeArrayv", glDepthRangeArrayv == NULL);
+ glewInfoFunc(fi, "glDepthRangeIndexed", glDepthRangeIndexed == NULL);
+ glewInfoFunc(fi, "glGetDoublei_v", glGetDoublei_v == NULL);
+ glewInfoFunc(fi, "glGetFloati_v", glGetFloati_v == NULL);
+ glewInfoFunc(fi, "glScissorArrayv", glScissorArrayv == NULL);
+ glewInfoFunc(fi, "glScissorIndexed", glScissorIndexed == NULL);
+ glewInfoFunc(fi, "glScissorIndexedv", glScissorIndexedv == NULL);
+ glewInfoFunc(fi, "glViewportArrayv", glViewportArrayv == NULL);
+ glewInfoFunc(fi, "glViewportIndexedf", glViewportIndexedf == NULL);
+ glewInfoFunc(fi, "glViewportIndexedfv", glViewportIndexedfv == NULL);
+}
+
+#endif /* GL_ARB_viewport_array */
+
+#ifdef GL_ARB_window_pos
+
+static void _glewInfo_GL_ARB_window_pos (void)
+{
+ GLboolean fi = glewPrintExt("GL_ARB_window_pos", GLEW_ARB_window_pos, glewIsSupported("GL_ARB_window_pos"), glewGetExtension("GL_ARB_window_pos"));
+
+ glewInfoFunc(fi, "glWindowPos2dARB", glWindowPos2dARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2dvARB", glWindowPos2dvARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2fARB", glWindowPos2fARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2fvARB", glWindowPos2fvARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2iARB", glWindowPos2iARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2ivARB", glWindowPos2ivARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2sARB", glWindowPos2sARB == NULL);
+ glewInfoFunc(fi, "glWindowPos2svARB", glWindowPos2svARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3dARB", glWindowPos3dARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3dvARB", glWindowPos3dvARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3fARB", glWindowPos3fARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3fvARB", glWindowPos3fvARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3iARB", glWindowPos3iARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3ivARB", glWindowPos3ivARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3sARB", glWindowPos3sARB == NULL);
+ glewInfoFunc(fi, "glWindowPos3svARB", glWindowPos3svARB == NULL);
+}
+
+#endif /* GL_ARB_window_pos */
+
+#ifdef GL_ARM_mali_program_binary
+
+static void _glewInfo_GL_ARM_mali_program_binary (void)
+{
+ glewPrintExt("GL_ARM_mali_program_binary", GLEW_ARM_mali_program_binary, glewIsSupported("GL_ARM_mali_program_binary"), glewGetExtension("GL_ARM_mali_program_binary"));
+}
+
+#endif /* GL_ARM_mali_program_binary */
+
+#ifdef GL_ARM_mali_shader_binary
+
+static void _glewInfo_GL_ARM_mali_shader_binary (void)
+{
+ glewPrintExt("GL_ARM_mali_shader_binary", GLEW_ARM_mali_shader_binary, glewIsSupported("GL_ARM_mali_shader_binary"), glewGetExtension("GL_ARM_mali_shader_binary"));
+}
+
+#endif /* GL_ARM_mali_shader_binary */
+
+#ifdef GL_ARM_rgba8
+
+static void _glewInfo_GL_ARM_rgba8 (void)
+{
+ glewPrintExt("GL_ARM_rgba8", GLEW_ARM_rgba8, glewIsSupported("GL_ARM_rgba8"), glewGetExtension("GL_ARM_rgba8"));
+}
+
+#endif /* GL_ARM_rgba8 */
+
+#ifdef GL_ARM_shader_framebuffer_fetch
+
+static void _glewInfo_GL_ARM_shader_framebuffer_fetch (void)
+{
+ glewPrintExt("GL_ARM_shader_framebuffer_fetch", GLEW_ARM_shader_framebuffer_fetch, glewIsSupported("GL_ARM_shader_framebuffer_fetch"), glewGetExtension("GL_ARM_shader_framebuffer_fetch"));
+}
+
+#endif /* GL_ARM_shader_framebuffer_fetch */
+
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+
+static void _glewInfo_GL_ARM_shader_framebuffer_fetch_depth_stencil (void)
+{
+ glewPrintExt("GL_ARM_shader_framebuffer_fetch_depth_stencil", GLEW_ARM_shader_framebuffer_fetch_depth_stencil, glewIsSupported("GL_ARM_shader_framebuffer_fetch_depth_stencil"), glewGetExtension("GL_ARM_shader_framebuffer_fetch_depth_stencil"));
+}
+
+#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */
+
+#ifdef GL_ARM_texture_unnormalized_coordinates
+
+static void _glewInfo_GL_ARM_texture_unnormalized_coordinates (void)
+{
+ glewPrintExt("GL_ARM_texture_unnormalized_coordinates", GLEW_ARM_texture_unnormalized_coordinates, glewIsSupported("GL_ARM_texture_unnormalized_coordinates"), glewGetExtension("GL_ARM_texture_unnormalized_coordinates"));
+}
+
+#endif /* GL_ARM_texture_unnormalized_coordinates */
+
+#ifdef GL_ATIX_point_sprites
+
+static void _glewInfo_GL_ATIX_point_sprites (void)
+{
+ glewPrintExt("GL_ATIX_point_sprites", GLEW_ATIX_point_sprites, glewIsSupported("GL_ATIX_point_sprites"), glewGetExtension("GL_ATIX_point_sprites"));
+}
+
+#endif /* GL_ATIX_point_sprites */
+
+#ifdef GL_ATIX_texture_env_combine3
+
+static void _glewInfo_GL_ATIX_texture_env_combine3 (void)
+{
+ glewPrintExt("GL_ATIX_texture_env_combine3", GLEW_ATIX_texture_env_combine3, glewIsSupported("GL_ATIX_texture_env_combine3"), glewGetExtension("GL_ATIX_texture_env_combine3"));
+}
+
+#endif /* GL_ATIX_texture_env_combine3 */
+
+#ifdef GL_ATIX_texture_env_route
+
+static void _glewInfo_GL_ATIX_texture_env_route (void)
+{
+ glewPrintExt("GL_ATIX_texture_env_route", GLEW_ATIX_texture_env_route, glewIsSupported("GL_ATIX_texture_env_route"), glewGetExtension("GL_ATIX_texture_env_route"));
+}
+
+#endif /* GL_ATIX_texture_env_route */
+
+#ifdef GL_ATIX_vertex_shader_output_point_size
+
+static void _glewInfo_GL_ATIX_vertex_shader_output_point_size (void)
+{
+ glewPrintExt("GL_ATIX_vertex_shader_output_point_size", GLEW_ATIX_vertex_shader_output_point_size, glewIsSupported("GL_ATIX_vertex_shader_output_point_size"), glewGetExtension("GL_ATIX_vertex_shader_output_point_size"));
+}
+
+#endif /* GL_ATIX_vertex_shader_output_point_size */
+
+#ifdef GL_ATI_draw_buffers
+
+static void _glewInfo_GL_ATI_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_draw_buffers", GLEW_ATI_draw_buffers, glewIsSupported("GL_ATI_draw_buffers"), glewGetExtension("GL_ATI_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersATI", glDrawBuffersATI == NULL);
+}
+
+#endif /* GL_ATI_draw_buffers */
+
+#ifdef GL_ATI_element_array
+
+static void _glewInfo_GL_ATI_element_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_element_array", GLEW_ATI_element_array, glewIsSupported("GL_ATI_element_array"), glewGetExtension("GL_ATI_element_array"));
+
+ glewInfoFunc(fi, "glDrawElementArrayATI", glDrawElementArrayATI == NULL);
+ glewInfoFunc(fi, "glDrawRangeElementArrayATI", glDrawRangeElementArrayATI == NULL);
+ glewInfoFunc(fi, "glElementPointerATI", glElementPointerATI == NULL);
+}
+
+#endif /* GL_ATI_element_array */
+
+#ifdef GL_ATI_envmap_bumpmap
+
+static void _glewInfo_GL_ATI_envmap_bumpmap (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_envmap_bumpmap", GLEW_ATI_envmap_bumpmap, glewIsSupported("GL_ATI_envmap_bumpmap"), glewGetExtension("GL_ATI_envmap_bumpmap"));
+
+ glewInfoFunc(fi, "glGetTexBumpParameterfvATI", glGetTexBumpParameterfvATI == NULL);
+ glewInfoFunc(fi, "glGetTexBumpParameterivATI", glGetTexBumpParameterivATI == NULL);
+ glewInfoFunc(fi, "glTexBumpParameterfvATI", glTexBumpParameterfvATI == NULL);
+ glewInfoFunc(fi, "glTexBumpParameterivATI", glTexBumpParameterivATI == NULL);
+}
+
+#endif /* GL_ATI_envmap_bumpmap */
+
+#ifdef GL_ATI_fragment_shader
+
+static void _glewInfo_GL_ATI_fragment_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_fragment_shader", GLEW_ATI_fragment_shader, glewIsSupported("GL_ATI_fragment_shader"), glewGetExtension("GL_ATI_fragment_shader"));
+
+ glewInfoFunc(fi, "glAlphaFragmentOp1ATI", glAlphaFragmentOp1ATI == NULL);
+ glewInfoFunc(fi, "glAlphaFragmentOp2ATI", glAlphaFragmentOp2ATI == NULL);
+ glewInfoFunc(fi, "glAlphaFragmentOp3ATI", glAlphaFragmentOp3ATI == NULL);
+ glewInfoFunc(fi, "glBeginFragmentShaderATI", glBeginFragmentShaderATI == NULL);
+ glewInfoFunc(fi, "glBindFragmentShaderATI", glBindFragmentShaderATI == NULL);
+ glewInfoFunc(fi, "glColorFragmentOp1ATI", glColorFragmentOp1ATI == NULL);
+ glewInfoFunc(fi, "glColorFragmentOp2ATI", glColorFragmentOp2ATI == NULL);
+ glewInfoFunc(fi, "glColorFragmentOp3ATI", glColorFragmentOp3ATI == NULL);
+ glewInfoFunc(fi, "glDeleteFragmentShaderATI", glDeleteFragmentShaderATI == NULL);
+ glewInfoFunc(fi, "glEndFragmentShaderATI", glEndFragmentShaderATI == NULL);
+ glewInfoFunc(fi, "glGenFragmentShadersATI", glGenFragmentShadersATI == NULL);
+ glewInfoFunc(fi, "glPassTexCoordATI", glPassTexCoordATI == NULL);
+ glewInfoFunc(fi, "glSampleMapATI", glSampleMapATI == NULL);
+ glewInfoFunc(fi, "glSetFragmentShaderConstantATI", glSetFragmentShaderConstantATI == NULL);
+}
+
+#endif /* GL_ATI_fragment_shader */
+
+#ifdef GL_ATI_map_object_buffer
+
+static void _glewInfo_GL_ATI_map_object_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_map_object_buffer", GLEW_ATI_map_object_buffer, glewIsSupported("GL_ATI_map_object_buffer"), glewGetExtension("GL_ATI_map_object_buffer"));
+
+ glewInfoFunc(fi, "glMapObjectBufferATI", glMapObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glUnmapObjectBufferATI", glUnmapObjectBufferATI == NULL);
+}
+
+#endif /* GL_ATI_map_object_buffer */
+
+#ifdef GL_ATI_meminfo
+
+static void _glewInfo_GL_ATI_meminfo (void)
+{
+ glewPrintExt("GL_ATI_meminfo", GLEW_ATI_meminfo, glewIsSupported("GL_ATI_meminfo"), glewGetExtension("GL_ATI_meminfo"));
+}
+
+#endif /* GL_ATI_meminfo */
+
+#ifdef GL_ATI_pn_triangles
+
+static void _glewInfo_GL_ATI_pn_triangles (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_pn_triangles", GLEW_ATI_pn_triangles, glewIsSupported("GL_ATI_pn_triangles"), glewGetExtension("GL_ATI_pn_triangles"));
+
+ glewInfoFunc(fi, "glPNTrianglesfATI", glPNTrianglesfATI == NULL);
+ glewInfoFunc(fi, "glPNTrianglesiATI", glPNTrianglesiATI == NULL);
+}
+
+#endif /* GL_ATI_pn_triangles */
+
+#ifdef GL_ATI_separate_stencil
+
+static void _glewInfo_GL_ATI_separate_stencil (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_separate_stencil", GLEW_ATI_separate_stencil, glewIsSupported("GL_ATI_separate_stencil"), glewGetExtension("GL_ATI_separate_stencil"));
+
+ glewInfoFunc(fi, "glStencilFuncSeparateATI", glStencilFuncSeparateATI == NULL);
+ glewInfoFunc(fi, "glStencilOpSeparateATI", glStencilOpSeparateATI == NULL);
+}
+
+#endif /* GL_ATI_separate_stencil */
+
+#ifdef GL_ATI_shader_texture_lod
+
+static void _glewInfo_GL_ATI_shader_texture_lod (void)
+{
+ glewPrintExt("GL_ATI_shader_texture_lod", GLEW_ATI_shader_texture_lod, glewIsSupported("GL_ATI_shader_texture_lod"), glewGetExtension("GL_ATI_shader_texture_lod"));
+}
+
+#endif /* GL_ATI_shader_texture_lod */
+
+#ifdef GL_ATI_text_fragment_shader
+
+static void _glewInfo_GL_ATI_text_fragment_shader (void)
+{
+ glewPrintExt("GL_ATI_text_fragment_shader", GLEW_ATI_text_fragment_shader, glewIsSupported("GL_ATI_text_fragment_shader"), glewGetExtension("GL_ATI_text_fragment_shader"));
+}
+
+#endif /* GL_ATI_text_fragment_shader */
+
+#ifdef GL_ATI_texture_compression_3dc
+
+static void _glewInfo_GL_ATI_texture_compression_3dc (void)
+{
+ glewPrintExt("GL_ATI_texture_compression_3dc", GLEW_ATI_texture_compression_3dc, glewIsSupported("GL_ATI_texture_compression_3dc"), glewGetExtension("GL_ATI_texture_compression_3dc"));
+}
+
+#endif /* GL_ATI_texture_compression_3dc */
+
+#ifdef GL_ATI_texture_env_combine3
+
+static void _glewInfo_GL_ATI_texture_env_combine3 (void)
+{
+ glewPrintExt("GL_ATI_texture_env_combine3", GLEW_ATI_texture_env_combine3, glewIsSupported("GL_ATI_texture_env_combine3"), glewGetExtension("GL_ATI_texture_env_combine3"));
+}
+
+#endif /* GL_ATI_texture_env_combine3 */
+
+#ifdef GL_ATI_texture_float
+
+static void _glewInfo_GL_ATI_texture_float (void)
+{
+ glewPrintExt("GL_ATI_texture_float", GLEW_ATI_texture_float, glewIsSupported("GL_ATI_texture_float"), glewGetExtension("GL_ATI_texture_float"));
+}
+
+#endif /* GL_ATI_texture_float */
+
+#ifdef GL_ATI_texture_mirror_once
+
+static void _glewInfo_GL_ATI_texture_mirror_once (void)
+{
+ glewPrintExt("GL_ATI_texture_mirror_once", GLEW_ATI_texture_mirror_once, glewIsSupported("GL_ATI_texture_mirror_once"), glewGetExtension("GL_ATI_texture_mirror_once"));
+}
+
+#endif /* GL_ATI_texture_mirror_once */
+
+#ifdef GL_ATI_vertex_array_object
+
+static void _glewInfo_GL_ATI_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_vertex_array_object", GLEW_ATI_vertex_array_object, glewIsSupported("GL_ATI_vertex_array_object"), glewGetExtension("GL_ATI_vertex_array_object"));
+
+ glewInfoFunc(fi, "glArrayObjectATI", glArrayObjectATI == NULL);
+ glewInfoFunc(fi, "glFreeObjectBufferATI", glFreeObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glGetArrayObjectfvATI", glGetArrayObjectfvATI == NULL);
+ glewInfoFunc(fi, "glGetArrayObjectivATI", glGetArrayObjectivATI == NULL);
+ glewInfoFunc(fi, "glGetObjectBufferfvATI", glGetObjectBufferfvATI == NULL);
+ glewInfoFunc(fi, "glGetObjectBufferivATI", glGetObjectBufferivATI == NULL);
+ glewInfoFunc(fi, "glGetVariantArrayObjectfvATI", glGetVariantArrayObjectfvATI == NULL);
+ glewInfoFunc(fi, "glGetVariantArrayObjectivATI", glGetVariantArrayObjectivATI == NULL);
+ glewInfoFunc(fi, "glIsObjectBufferATI", glIsObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glNewObjectBufferATI", glNewObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glUpdateObjectBufferATI", glUpdateObjectBufferATI == NULL);
+ glewInfoFunc(fi, "glVariantArrayObjectATI", glVariantArrayObjectATI == NULL);
+}
+
+#endif /* GL_ATI_vertex_array_object */
+
+#ifdef GL_ATI_vertex_attrib_array_object
+
+static void _glewInfo_GL_ATI_vertex_attrib_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_vertex_attrib_array_object", GLEW_ATI_vertex_attrib_array_object, glewIsSupported("GL_ATI_vertex_attrib_array_object"), glewGetExtension("GL_ATI_vertex_attrib_array_object"));
+
+ glewInfoFunc(fi, "glGetVertexAttribArrayObjectfvATI", glGetVertexAttribArrayObjectfvATI == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribArrayObjectivATI", glGetVertexAttribArrayObjectivATI == NULL);
+ glewInfoFunc(fi, "glVertexAttribArrayObjectATI", glVertexAttribArrayObjectATI == NULL);
+}
+
+#endif /* GL_ATI_vertex_attrib_array_object */
+
+#ifdef GL_ATI_vertex_streams
+
+static void _glewInfo_GL_ATI_vertex_streams (void)
+{
+ GLboolean fi = glewPrintExt("GL_ATI_vertex_streams", GLEW_ATI_vertex_streams, glewIsSupported("GL_ATI_vertex_streams"), glewGetExtension("GL_ATI_vertex_streams"));
+
+ glewInfoFunc(fi, "glClientActiveVertexStreamATI", glClientActiveVertexStreamATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3bATI", glNormalStream3bATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3bvATI", glNormalStream3bvATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3dATI", glNormalStream3dATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3dvATI", glNormalStream3dvATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3fATI", glNormalStream3fATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3fvATI", glNormalStream3fvATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3iATI", glNormalStream3iATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3ivATI", glNormalStream3ivATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3sATI", glNormalStream3sATI == NULL);
+ glewInfoFunc(fi, "glNormalStream3svATI", glNormalStream3svATI == NULL);
+ glewInfoFunc(fi, "glVertexBlendEnvfATI", glVertexBlendEnvfATI == NULL);
+ glewInfoFunc(fi, "glVertexBlendEnviATI", glVertexBlendEnviATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1dATI", glVertexStream1dATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1dvATI", glVertexStream1dvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1fATI", glVertexStream1fATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1fvATI", glVertexStream1fvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1iATI", glVertexStream1iATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1ivATI", glVertexStream1ivATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1sATI", glVertexStream1sATI == NULL);
+ glewInfoFunc(fi, "glVertexStream1svATI", glVertexStream1svATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2dATI", glVertexStream2dATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2dvATI", glVertexStream2dvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2fATI", glVertexStream2fATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2fvATI", glVertexStream2fvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2iATI", glVertexStream2iATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2ivATI", glVertexStream2ivATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2sATI", glVertexStream2sATI == NULL);
+ glewInfoFunc(fi, "glVertexStream2svATI", glVertexStream2svATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3dATI", glVertexStream3dATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3dvATI", glVertexStream3dvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3fATI", glVertexStream3fATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3fvATI", glVertexStream3fvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3iATI", glVertexStream3iATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3ivATI", glVertexStream3ivATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3sATI", glVertexStream3sATI == NULL);
+ glewInfoFunc(fi, "glVertexStream3svATI", glVertexStream3svATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4dATI", glVertexStream4dATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4dvATI", glVertexStream4dvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4fATI", glVertexStream4fATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4fvATI", glVertexStream4fvATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4iATI", glVertexStream4iATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4ivATI", glVertexStream4ivATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4sATI", glVertexStream4sATI == NULL);
+ glewInfoFunc(fi, "glVertexStream4svATI", glVertexStream4svATI == NULL);
+}
+
+#endif /* GL_ATI_vertex_streams */
+
+#ifdef GL_DMP_program_binary
+
+static void _glewInfo_GL_DMP_program_binary (void)
+{
+ glewPrintExt("GL_DMP_program_binary", GLEW_DMP_program_binary, glewIsSupported("GL_DMP_program_binary"), glewGetExtension("GL_DMP_program_binary"));
+}
+
+#endif /* GL_DMP_program_binary */
+
+#ifdef GL_DMP_shader_binary
+
+static void _glewInfo_GL_DMP_shader_binary (void)
+{
+ glewPrintExt("GL_DMP_shader_binary", GLEW_DMP_shader_binary, glewIsSupported("GL_DMP_shader_binary"), glewGetExtension("GL_DMP_shader_binary"));
+}
+
+#endif /* GL_DMP_shader_binary */
+
+#ifdef GL_EXT_422_pixels
+
+static void _glewInfo_GL_EXT_422_pixels (void)
+{
+ glewPrintExt("GL_EXT_422_pixels", GLEW_EXT_422_pixels, glewIsSupported("GL_EXT_422_pixels"), glewGetExtension("GL_EXT_422_pixels"));
+}
+
+#endif /* GL_EXT_422_pixels */
+
+#ifdef GL_EXT_Cg_shader
+
+static void _glewInfo_GL_EXT_Cg_shader (void)
+{
+ glewPrintExt("GL_EXT_Cg_shader", GLEW_EXT_Cg_shader, glewIsSupported("GL_EXT_Cg_shader"), glewGetExtension("GL_EXT_Cg_shader"));
+}
+
+#endif /* GL_EXT_Cg_shader */
+
+#ifdef GL_EXT_EGL_image_array
+
+static void _glewInfo_GL_EXT_EGL_image_array (void)
+{
+ glewPrintExt("GL_EXT_EGL_image_array", GLEW_EXT_EGL_image_array, glewIsSupported("GL_EXT_EGL_image_array"), glewGetExtension("GL_EXT_EGL_image_array"));
+}
+
+#endif /* GL_EXT_EGL_image_array */
+
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+
+static void _glewInfo_GL_EXT_EGL_image_external_wrap_modes (void)
+{
+ glewPrintExt("GL_EXT_EGL_image_external_wrap_modes", GLEW_EXT_EGL_image_external_wrap_modes, glewIsSupported("GL_EXT_EGL_image_external_wrap_modes"), glewGetExtension("GL_EXT_EGL_image_external_wrap_modes"));
+}
+
+#endif /* GL_EXT_EGL_image_external_wrap_modes */
+
+#ifdef GL_EXT_EGL_image_storage
+
+static void _glewInfo_GL_EXT_EGL_image_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_EGL_image_storage", GLEW_EXT_EGL_image_storage, glewIsSupported("GL_EXT_EGL_image_storage"), glewGetExtension("GL_EXT_EGL_image_storage"));
+
+ glewInfoFunc(fi, "glEGLImageTargetTexStorageEXT", glEGLImageTargetTexStorageEXT == NULL);
+ glewInfoFunc(fi, "glEGLImageTargetTextureStorageEXT", glEGLImageTargetTextureStorageEXT == NULL);
+}
+
+#endif /* GL_EXT_EGL_image_storage */
+
+#ifdef GL_EXT_EGL_image_storage_compression
+
+static void _glewInfo_GL_EXT_EGL_image_storage_compression (void)
+{
+ glewPrintExt("GL_EXT_EGL_image_storage_compression", GLEW_EXT_EGL_image_storage_compression, glewIsSupported("GL_EXT_EGL_image_storage_compression"), glewGetExtension("GL_EXT_EGL_image_storage_compression"));
+}
+
+#endif /* GL_EXT_EGL_image_storage_compression */
+
+#ifdef GL_EXT_EGL_sync
+
+static void _glewInfo_GL_EXT_EGL_sync (void)
+{
+ glewPrintExt("GL_EXT_EGL_sync", GLEW_EXT_EGL_sync, glewIsSupported("GL_EXT_EGL_sync"), glewGetExtension("GL_EXT_EGL_sync"));
+}
+
+#endif /* GL_EXT_EGL_sync */
+
+#ifdef GL_EXT_YUV_target
+
+static void _glewInfo_GL_EXT_YUV_target (void)
+{
+ glewPrintExt("GL_EXT_YUV_target", GLEW_EXT_YUV_target, glewIsSupported("GL_EXT_YUV_target"), glewGetExtension("GL_EXT_YUV_target"));
+}
+
+#endif /* GL_EXT_YUV_target */
+
+#ifdef GL_EXT_abgr
+
+static void _glewInfo_GL_EXT_abgr (void)
+{
+ glewPrintExt("GL_EXT_abgr", GLEW_EXT_abgr, glewIsSupported("GL_EXT_abgr"), glewGetExtension("GL_EXT_abgr"));
+}
+
+#endif /* GL_EXT_abgr */
+
+#ifdef GL_EXT_base_instance
+
+static void _glewInfo_GL_EXT_base_instance (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_base_instance", GLEW_EXT_base_instance, glewIsSupported("GL_EXT_base_instance"), glewGetExtension("GL_EXT_base_instance"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedBaseInstanceEXT", glDrawArraysInstancedBaseInstanceEXT == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseInstanceEXT", glDrawElementsInstancedBaseInstanceEXT == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseVertexBaseInstanceEXT", glDrawElementsInstancedBaseVertexBaseInstanceEXT == NULL);
+}
+
+#endif /* GL_EXT_base_instance */
+
+#ifdef GL_EXT_bgra
+
+static void _glewInfo_GL_EXT_bgra (void)
+{
+ glewPrintExt("GL_EXT_bgra", GLEW_EXT_bgra, glewIsSupported("GL_EXT_bgra"), glewGetExtension("GL_EXT_bgra"));
+}
+
+#endif /* GL_EXT_bgra */
+
+#ifdef GL_EXT_bindable_uniform
+
+static void _glewInfo_GL_EXT_bindable_uniform (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_bindable_uniform", GLEW_EXT_bindable_uniform, glewIsSupported("GL_EXT_bindable_uniform"), glewGetExtension("GL_EXT_bindable_uniform"));
+
+ glewInfoFunc(fi, "glGetUniformBufferSizeEXT", glGetUniformBufferSizeEXT == NULL);
+ glewInfoFunc(fi, "glGetUniformOffsetEXT", glGetUniformOffsetEXT == NULL);
+ glewInfoFunc(fi, "glUniformBufferEXT", glUniformBufferEXT == NULL);
+}
+
+#endif /* GL_EXT_bindable_uniform */
+
+#ifdef GL_EXT_blend_color
+
+static void _glewInfo_GL_EXT_blend_color (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_color", GLEW_EXT_blend_color, glewIsSupported("GL_EXT_blend_color"), glewGetExtension("GL_EXT_blend_color"));
+
+ glewInfoFunc(fi, "glBlendColorEXT", glBlendColorEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_color */
+
+#ifdef GL_EXT_blend_equation_separate
+
+static void _glewInfo_GL_EXT_blend_equation_separate (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_equation_separate", GLEW_EXT_blend_equation_separate, glewIsSupported("GL_EXT_blend_equation_separate"), glewGetExtension("GL_EXT_blend_equation_separate"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateEXT", glBlendEquationSeparateEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_equation_separate */
+
+#ifdef GL_EXT_blend_func_extended
+
+static void _glewInfo_GL_EXT_blend_func_extended (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_func_extended", GLEW_EXT_blend_func_extended, glewIsSupported("GL_EXT_blend_func_extended"), glewGetExtension("GL_EXT_blend_func_extended"));
+
+ glewInfoFunc(fi, "glBindFragDataLocationIndexedEXT", glBindFragDataLocationIndexedEXT == NULL);
+ glewInfoFunc(fi, "glGetFragDataIndexEXT", glGetFragDataIndexEXT == NULL);
+ glewInfoFunc(fi, "glGetProgramResourceLocationIndexEXT", glGetProgramResourceLocationIndexEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_func_extended */
+
+#ifdef GL_EXT_blend_func_separate
+
+static void _glewInfo_GL_EXT_blend_func_separate (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_func_separate", GLEW_EXT_blend_func_separate, glewIsSupported("GL_EXT_blend_func_separate"), glewGetExtension("GL_EXT_blend_func_separate"));
+
+ glewInfoFunc(fi, "glBlendFuncSeparateEXT", glBlendFuncSeparateEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_func_separate */
+
+#ifdef GL_EXT_blend_logic_op
+
+static void _glewInfo_GL_EXT_blend_logic_op (void)
+{
+ glewPrintExt("GL_EXT_blend_logic_op", GLEW_EXT_blend_logic_op, glewIsSupported("GL_EXT_blend_logic_op"), glewGetExtension("GL_EXT_blend_logic_op"));
+}
+
+#endif /* GL_EXT_blend_logic_op */
+
+#ifdef GL_EXT_blend_minmax
+
+static void _glewInfo_GL_EXT_blend_minmax (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_blend_minmax", GLEW_EXT_blend_minmax, glewIsSupported("GL_EXT_blend_minmax"), glewGetExtension("GL_EXT_blend_minmax"));
+
+ glewInfoFunc(fi, "glBlendEquationEXT", glBlendEquationEXT == NULL);
+}
+
+#endif /* GL_EXT_blend_minmax */
+
+#ifdef GL_EXT_blend_subtract
+
+static void _glewInfo_GL_EXT_blend_subtract (void)
+{
+ glewPrintExt("GL_EXT_blend_subtract", GLEW_EXT_blend_subtract, glewIsSupported("GL_EXT_blend_subtract"), glewGetExtension("GL_EXT_blend_subtract"));
+}
+
+#endif /* GL_EXT_blend_subtract */
+
+#ifdef GL_EXT_buffer_storage
+
+static void _glewInfo_GL_EXT_buffer_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_buffer_storage", GLEW_EXT_buffer_storage, glewIsSupported("GL_EXT_buffer_storage"), glewGetExtension("GL_EXT_buffer_storage"));
+
+ glewInfoFunc(fi, "glBufferStorageEXT", glBufferStorageEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferStorageEXT", glNamedBufferStorageEXT == NULL);
+}
+
+#endif /* GL_EXT_buffer_storage */
+
+#ifdef GL_EXT_clear_texture
+
+static void _glewInfo_GL_EXT_clear_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_clear_texture", GLEW_EXT_clear_texture, glewIsSupported("GL_EXT_clear_texture"), glewGetExtension("GL_EXT_clear_texture"));
+
+ glewInfoFunc(fi, "glClearTexImageEXT", glClearTexImageEXT == NULL);
+ glewInfoFunc(fi, "glClearTexSubImageEXT", glClearTexSubImageEXT == NULL);
+}
+
+#endif /* GL_EXT_clear_texture */
+
+#ifdef GL_EXT_clip_control
+
+static void _glewInfo_GL_EXT_clip_control (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_clip_control", GLEW_EXT_clip_control, glewIsSupported("GL_EXT_clip_control"), glewGetExtension("GL_EXT_clip_control"));
+
+ glewInfoFunc(fi, "glClipControlEXT", glClipControlEXT == NULL);
+}
+
+#endif /* GL_EXT_clip_control */
+
+#ifdef GL_EXT_clip_cull_distance
+
+static void _glewInfo_GL_EXT_clip_cull_distance (void)
+{
+ glewPrintExt("GL_EXT_clip_cull_distance", GLEW_EXT_clip_cull_distance, glewIsSupported("GL_EXT_clip_cull_distance"), glewGetExtension("GL_EXT_clip_cull_distance"));
+}
+
+#endif /* GL_EXT_clip_cull_distance */
+
+#ifdef GL_EXT_clip_volume_hint
+
+static void _glewInfo_GL_EXT_clip_volume_hint (void)
+{
+ glewPrintExt("GL_EXT_clip_volume_hint", GLEW_EXT_clip_volume_hint, glewIsSupported("GL_EXT_clip_volume_hint"), glewGetExtension("GL_EXT_clip_volume_hint"));
+}
+
+#endif /* GL_EXT_clip_volume_hint */
+
+#ifdef GL_EXT_cmyka
+
+static void _glewInfo_GL_EXT_cmyka (void)
+{
+ glewPrintExt("GL_EXT_cmyka", GLEW_EXT_cmyka, glewIsSupported("GL_EXT_cmyka"), glewGetExtension("GL_EXT_cmyka"));
+}
+
+#endif /* GL_EXT_cmyka */
+
+#ifdef GL_EXT_color_buffer_float
+
+static void _glewInfo_GL_EXT_color_buffer_float (void)
+{
+ glewPrintExt("GL_EXT_color_buffer_float", GLEW_EXT_color_buffer_float, glewIsSupported("GL_EXT_color_buffer_float"), glewGetExtension("GL_EXT_color_buffer_float"));
+}
+
+#endif /* GL_EXT_color_buffer_float */
+
+#ifdef GL_EXT_color_buffer_half_float
+
+static void _glewInfo_GL_EXT_color_buffer_half_float (void)
+{
+ glewPrintExt("GL_EXT_color_buffer_half_float", GLEW_EXT_color_buffer_half_float, glewIsSupported("GL_EXT_color_buffer_half_float"), glewGetExtension("GL_EXT_color_buffer_half_float"));
+}
+
+#endif /* GL_EXT_color_buffer_half_float */
+
+#ifdef GL_EXT_color_subtable
+
+static void _glewInfo_GL_EXT_color_subtable (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_color_subtable", GLEW_EXT_color_subtable, glewIsSupported("GL_EXT_color_subtable"), glewGetExtension("GL_EXT_color_subtable"));
+
+ glewInfoFunc(fi, "glColorSubTableEXT", glColorSubTableEXT == NULL);
+ glewInfoFunc(fi, "glCopyColorSubTableEXT", glCopyColorSubTableEXT == NULL);
+}
+
+#endif /* GL_EXT_color_subtable */
+
+#ifdef GL_EXT_compiled_vertex_array
+
+static void _glewInfo_GL_EXT_compiled_vertex_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_compiled_vertex_array", GLEW_EXT_compiled_vertex_array, glewIsSupported("GL_EXT_compiled_vertex_array"), glewGetExtension("GL_EXT_compiled_vertex_array"));
+
+ glewInfoFunc(fi, "glLockArraysEXT", glLockArraysEXT == NULL);
+ glewInfoFunc(fi, "glUnlockArraysEXT", glUnlockArraysEXT == NULL);
+}
+
+#endif /* GL_EXT_compiled_vertex_array */
+
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+
+static void _glewInfo_GL_EXT_compressed_ETC1_RGB8_sub_texture (void)
+{
+ glewPrintExt("GL_EXT_compressed_ETC1_RGB8_sub_texture", GLEW_EXT_compressed_ETC1_RGB8_sub_texture, glewIsSupported("GL_EXT_compressed_ETC1_RGB8_sub_texture"), glewGetExtension("GL_EXT_compressed_ETC1_RGB8_sub_texture"));
+}
+
+#endif /* GL_EXT_compressed_ETC1_RGB8_sub_texture */
+
+#ifdef GL_EXT_conservative_depth
+
+static void _glewInfo_GL_EXT_conservative_depth (void)
+{
+ glewPrintExt("GL_EXT_conservative_depth", GLEW_EXT_conservative_depth, glewIsSupported("GL_EXT_conservative_depth"), glewGetExtension("GL_EXT_conservative_depth"));
+}
+
+#endif /* GL_EXT_conservative_depth */
+
+#ifdef GL_EXT_convolution
+
+static void _glewInfo_GL_EXT_convolution (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_convolution", GLEW_EXT_convolution, glewIsSupported("GL_EXT_convolution"), glewGetExtension("GL_EXT_convolution"));
+
+ glewInfoFunc(fi, "glConvolutionFilter1DEXT", glConvolutionFilter1DEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionFilter2DEXT", glConvolutionFilter2DEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterfEXT", glConvolutionParameterfEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterfvEXT", glConvolutionParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionParameteriEXT", glConvolutionParameteriEXT == NULL);
+ glewInfoFunc(fi, "glConvolutionParameterivEXT", glConvolutionParameterivEXT == NULL);
+ glewInfoFunc(fi, "glCopyConvolutionFilter1DEXT", glCopyConvolutionFilter1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyConvolutionFilter2DEXT", glCopyConvolutionFilter2DEXT == NULL);
+ glewInfoFunc(fi, "glGetConvolutionFilterEXT", glGetConvolutionFilterEXT == NULL);
+ glewInfoFunc(fi, "glGetConvolutionParameterfvEXT", glGetConvolutionParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetConvolutionParameterivEXT", glGetConvolutionParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetSeparableFilterEXT", glGetSeparableFilterEXT == NULL);
+ glewInfoFunc(fi, "glSeparableFilter2DEXT", glSeparableFilter2DEXT == NULL);
+}
+
+#endif /* GL_EXT_convolution */
+
+#ifdef GL_EXT_coordinate_frame
+
+static void _glewInfo_GL_EXT_coordinate_frame (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_coordinate_frame", GLEW_EXT_coordinate_frame, glewIsSupported("GL_EXT_coordinate_frame"), glewGetExtension("GL_EXT_coordinate_frame"));
+
+ glewInfoFunc(fi, "glBinormalPointerEXT", glBinormalPointerEXT == NULL);
+ glewInfoFunc(fi, "glTangentPointerEXT", glTangentPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_coordinate_frame */
+
+#ifdef GL_EXT_copy_image
+
+static void _glewInfo_GL_EXT_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_copy_image", GLEW_EXT_copy_image, glewIsSupported("GL_EXT_copy_image"), glewGetExtension("GL_EXT_copy_image"));
+
+ glewInfoFunc(fi, "glCopyImageSubDataEXT", glCopyImageSubDataEXT == NULL);
+}
+
+#endif /* GL_EXT_copy_image */
+
+#ifdef GL_EXT_copy_texture
+
+static void _glewInfo_GL_EXT_copy_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_copy_texture", GLEW_EXT_copy_texture, glewIsSupported("GL_EXT_copy_texture"), glewGetExtension("GL_EXT_copy_texture"));
+
+ glewInfoFunc(fi, "glCopyTexImage1DEXT", glCopyTexImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTexImage2DEXT", glCopyTexImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage1DEXT", glCopyTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage2DEXT", glCopyTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage3DEXT", glCopyTexSubImage3DEXT == NULL);
+}
+
+#endif /* GL_EXT_copy_texture */
+
+#ifdef GL_EXT_cull_vertex
+
+static void _glewInfo_GL_EXT_cull_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_cull_vertex", GLEW_EXT_cull_vertex, glewIsSupported("GL_EXT_cull_vertex"), glewGetExtension("GL_EXT_cull_vertex"));
+
+ glewInfoFunc(fi, "glCullParameterdvEXT", glCullParameterdvEXT == NULL);
+ glewInfoFunc(fi, "glCullParameterfvEXT", glCullParameterfvEXT == NULL);
+}
+
+#endif /* GL_EXT_cull_vertex */
+
+#ifdef GL_EXT_debug_label
+
+static void _glewInfo_GL_EXT_debug_label (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_debug_label", GLEW_EXT_debug_label, glewIsSupported("GL_EXT_debug_label"), glewGetExtension("GL_EXT_debug_label"));
+
+ glewInfoFunc(fi, "glGetObjectLabelEXT", glGetObjectLabelEXT == NULL);
+ glewInfoFunc(fi, "glLabelObjectEXT", glLabelObjectEXT == NULL);
+}
+
+#endif /* GL_EXT_debug_label */
+
+#ifdef GL_EXT_debug_marker
+
+static void _glewInfo_GL_EXT_debug_marker (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_debug_marker", GLEW_EXT_debug_marker, glewIsSupported("GL_EXT_debug_marker"), glewGetExtension("GL_EXT_debug_marker"));
+
+ glewInfoFunc(fi, "glInsertEventMarkerEXT", glInsertEventMarkerEXT == NULL);
+ glewInfoFunc(fi, "glPopGroupMarkerEXT", glPopGroupMarkerEXT == NULL);
+ glewInfoFunc(fi, "glPushGroupMarkerEXT", glPushGroupMarkerEXT == NULL);
+}
+
+#endif /* GL_EXT_debug_marker */
+
+#ifdef GL_EXT_depth_bounds_test
+
+static void _glewInfo_GL_EXT_depth_bounds_test (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_depth_bounds_test", GLEW_EXT_depth_bounds_test, glewIsSupported("GL_EXT_depth_bounds_test"), glewGetExtension("GL_EXT_depth_bounds_test"));
+
+ glewInfoFunc(fi, "glDepthBoundsEXT", glDepthBoundsEXT == NULL);
+}
+
+#endif /* GL_EXT_depth_bounds_test */
+
+#ifdef GL_EXT_depth_clamp
+
+static void _glewInfo_GL_EXT_depth_clamp (void)
+{
+ glewPrintExt("GL_EXT_depth_clamp", GLEW_EXT_depth_clamp, glewIsSupported("GL_EXT_depth_clamp"), glewGetExtension("GL_EXT_depth_clamp"));
+}
+
+#endif /* GL_EXT_depth_clamp */
+
+#ifdef GL_EXT_direct_state_access
+
+static void _glewInfo_GL_EXT_direct_state_access (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_direct_state_access", GLEW_EXT_direct_state_access, glewIsSupported("GL_EXT_direct_state_access"), glewGetExtension("GL_EXT_direct_state_access"));
+
+ glewInfoFunc(fi, "glBindMultiTextureEXT", glBindMultiTextureEXT == NULL);
+ glewInfoFunc(fi, "glCheckNamedFramebufferStatusEXT", glCheckNamedFramebufferStatusEXT == NULL);
+ glewInfoFunc(fi, "glClientAttribDefaultEXT", glClientAttribDefaultEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexImage1DEXT", glCompressedMultiTexImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexImage2DEXT", glCompressedMultiTexImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexImage3DEXT", glCompressedMultiTexImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexSubImage1DEXT", glCompressedMultiTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexSubImage2DEXT", glCompressedMultiTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedMultiTexSubImage3DEXT", glCompressedMultiTexSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureImage1DEXT", glCompressedTextureImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureImage2DEXT", glCompressedTextureImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureImage3DEXT", glCompressedTextureImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage1DEXT", glCompressedTextureSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage2DEXT", glCompressedTextureSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCompressedTextureSubImage3DEXT", glCompressedTextureSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexImage1DEXT", glCopyMultiTexImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexImage2DEXT", glCopyMultiTexImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexSubImage1DEXT", glCopyMultiTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexSubImage2DEXT", glCopyMultiTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyMultiTexSubImage3DEXT", glCopyMultiTexSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureImage1DEXT", glCopyTextureImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureImage2DEXT", glCopyTextureImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage1DEXT", glCopyTextureSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage2DEXT", glCopyTextureSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glCopyTextureSubImage3DEXT", glCopyTextureSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glDisableClientStateIndexedEXT", glDisableClientStateIndexedEXT == NULL);
+ glewInfoFunc(fi, "glDisableClientStateiEXT", glDisableClientStateiEXT == NULL);
+ glewInfoFunc(fi, "glDisableVertexArrayAttribEXT", glDisableVertexArrayAttribEXT == NULL);
+ glewInfoFunc(fi, "glDisableVertexArrayEXT", glDisableVertexArrayEXT == NULL);
+ glewInfoFunc(fi, "glEnableClientStateIndexedEXT", glEnableClientStateIndexedEXT == NULL);
+ glewInfoFunc(fi, "glEnableClientStateiEXT", glEnableClientStateiEXT == NULL);
+ glewInfoFunc(fi, "glEnableVertexArrayAttribEXT", glEnableVertexArrayAttribEXT == NULL);
+ glewInfoFunc(fi, "glEnableVertexArrayEXT", glEnableVertexArrayEXT == NULL);
+ glewInfoFunc(fi, "glFlushMappedNamedBufferRangeEXT", glFlushMappedNamedBufferRangeEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferDrawBufferEXT", glFramebufferDrawBufferEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferDrawBuffersEXT", glFramebufferDrawBuffersEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferReadBufferEXT", glFramebufferReadBufferEXT == NULL);
+ glewInfoFunc(fi, "glGenerateMultiTexMipmapEXT", glGenerateMultiTexMipmapEXT == NULL);
+ glewInfoFunc(fi, "glGenerateTextureMipmapEXT", glGenerateTextureMipmapEXT == NULL);
+ glewInfoFunc(fi, "glGetCompressedMultiTexImageEXT", glGetCompressedMultiTexImageEXT == NULL);
+ glewInfoFunc(fi, "glGetCompressedTextureImageEXT", glGetCompressedTextureImageEXT == NULL);
+ glewInfoFunc(fi, "glGetDoubleIndexedvEXT", glGetDoubleIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glGetDoublei_vEXT", glGetDoublei_vEXT == NULL);
+ glewInfoFunc(fi, "glGetFloatIndexedvEXT", glGetFloatIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glGetFloati_vEXT", glGetFloati_vEXT == NULL);
+ glewInfoFunc(fi, "glGetFramebufferParameterivEXT", glGetFramebufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexEnvfvEXT", glGetMultiTexEnvfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexEnvivEXT", glGetMultiTexEnvivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexGendvEXT", glGetMultiTexGendvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexGenfvEXT", glGetMultiTexGenfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexGenivEXT", glGetMultiTexGenivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexImageEXT", glGetMultiTexImageEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexLevelParameterfvEXT", glGetMultiTexLevelParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexLevelParameterivEXT", glGetMultiTexLevelParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexParameterIivEXT", glGetMultiTexParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexParameterIuivEXT", glGetMultiTexParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexParameterfvEXT", glGetMultiTexParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMultiTexParameterivEXT", glGetMultiTexParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferParameterivEXT", glGetNamedBufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferPointervEXT", glGetNamedBufferPointervEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferSubDataEXT", glGetNamedBufferSubDataEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedFramebufferAttachmentParameterivEXT", glGetNamedFramebufferAttachmentParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramLocalParameterIivEXT", glGetNamedProgramLocalParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramLocalParameterIuivEXT", glGetNamedProgramLocalParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramLocalParameterdvEXT", glGetNamedProgramLocalParameterdvEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramLocalParameterfvEXT", glGetNamedProgramLocalParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramStringEXT", glGetNamedProgramStringEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedProgramivEXT", glGetNamedProgramivEXT == NULL);
+ glewInfoFunc(fi, "glGetNamedRenderbufferParameterivEXT", glGetNamedRenderbufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetPointerIndexedvEXT", glGetPointerIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glGetPointeri_vEXT", glGetPointeri_vEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureImageEXT", glGetTextureImageEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureLevelParameterfvEXT", glGetTextureLevelParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureLevelParameterivEXT", glGetTextureLevelParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterIivEXT", glGetTextureParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterIuivEXT", glGetTextureParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterfvEXT", glGetTextureParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetTextureParameterivEXT", glGetTextureParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayIntegeri_vEXT", glGetVertexArrayIntegeri_vEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayIntegervEXT", glGetVertexArrayIntegervEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayPointeri_vEXT", glGetVertexArrayPointeri_vEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexArrayPointervEXT", glGetVertexArrayPointervEXT == NULL);
+ glewInfoFunc(fi, "glMapNamedBufferEXT", glMapNamedBufferEXT == NULL);
+ glewInfoFunc(fi, "glMapNamedBufferRangeEXT", glMapNamedBufferRangeEXT == NULL);
+ glewInfoFunc(fi, "glMatrixFrustumEXT", glMatrixFrustumEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoadIdentityEXT", glMatrixLoadIdentityEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoadTransposedEXT", glMatrixLoadTransposedEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoadTransposefEXT", glMatrixLoadTransposefEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoaddEXT", glMatrixLoaddEXT == NULL);
+ glewInfoFunc(fi, "glMatrixLoadfEXT", glMatrixLoadfEXT == NULL);
+ glewInfoFunc(fi, "glMatrixMultTransposedEXT", glMatrixMultTransposedEXT == NULL);
+ glewInfoFunc(fi, "glMatrixMultTransposefEXT", glMatrixMultTransposefEXT == NULL);
+ glewInfoFunc(fi, "glMatrixMultdEXT", glMatrixMultdEXT == NULL);
+ glewInfoFunc(fi, "glMatrixMultfEXT", glMatrixMultfEXT == NULL);
+ glewInfoFunc(fi, "glMatrixOrthoEXT", glMatrixOrthoEXT == NULL);
+ glewInfoFunc(fi, "glMatrixPopEXT", glMatrixPopEXT == NULL);
+ glewInfoFunc(fi, "glMatrixPushEXT", glMatrixPushEXT == NULL);
+ glewInfoFunc(fi, "glMatrixRotatedEXT", glMatrixRotatedEXT == NULL);
+ glewInfoFunc(fi, "glMatrixRotatefEXT", glMatrixRotatefEXT == NULL);
+ glewInfoFunc(fi, "glMatrixScaledEXT", glMatrixScaledEXT == NULL);
+ glewInfoFunc(fi, "glMatrixScalefEXT", glMatrixScalefEXT == NULL);
+ glewInfoFunc(fi, "glMatrixTranslatedEXT", glMatrixTranslatedEXT == NULL);
+ glewInfoFunc(fi, "glMatrixTranslatefEXT", glMatrixTranslatefEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexBufferEXT", glMultiTexBufferEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexCoordPointerEXT", glMultiTexCoordPointerEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexEnvfEXT", glMultiTexEnvfEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexEnvfvEXT", glMultiTexEnvfvEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexEnviEXT", glMultiTexEnviEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexEnvivEXT", glMultiTexEnvivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGendEXT", glMultiTexGendEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGendvEXT", glMultiTexGendvEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGenfEXT", glMultiTexGenfEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGenfvEXT", glMultiTexGenfvEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGeniEXT", glMultiTexGeniEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexGenivEXT", glMultiTexGenivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexImage1DEXT", glMultiTexImage1DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexImage2DEXT", glMultiTexImage2DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexImage3DEXT", glMultiTexImage3DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterIivEXT", glMultiTexParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterIuivEXT", glMultiTexParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterfEXT", glMultiTexParameterfEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterfvEXT", glMultiTexParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameteriEXT", glMultiTexParameteriEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexParameterivEXT", glMultiTexParameterivEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexRenderbufferEXT", glMultiTexRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexSubImage1DEXT", glMultiTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexSubImage2DEXT", glMultiTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glMultiTexSubImage3DEXT", glMultiTexSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferDataEXT", glNamedBufferDataEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferSubDataEXT", glNamedBufferSubDataEXT == NULL);
+ glewInfoFunc(fi, "glNamedCopyBufferSubDataEXT", glNamedCopyBufferSubDataEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferRenderbufferEXT", glNamedFramebufferRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTexture1DEXT", glNamedFramebufferTexture1DEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTexture2DEXT", glNamedFramebufferTexture2DEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTexture3DEXT", glNamedFramebufferTexture3DEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureEXT", glNamedFramebufferTextureEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureFaceEXT", glNamedFramebufferTextureFaceEXT == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureLayerEXT", glNamedFramebufferTextureLayerEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameter4dEXT", glNamedProgramLocalParameter4dEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameter4dvEXT", glNamedProgramLocalParameter4dvEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameter4fEXT", glNamedProgramLocalParameter4fEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameter4fvEXT", glNamedProgramLocalParameter4fvEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameterI4iEXT", glNamedProgramLocalParameterI4iEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameterI4ivEXT", glNamedProgramLocalParameterI4ivEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameterI4uiEXT", glNamedProgramLocalParameterI4uiEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameterI4uivEXT", glNamedProgramLocalParameterI4uivEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParameters4fvEXT", glNamedProgramLocalParameters4fvEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParametersI4ivEXT", glNamedProgramLocalParametersI4ivEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramLocalParametersI4uivEXT", glNamedProgramLocalParametersI4uivEXT == NULL);
+ glewInfoFunc(fi, "glNamedProgramStringEXT", glNamedProgramStringEXT == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorageEXT", glNamedRenderbufferStorageEXT == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorageMultisampleCoverageEXT", glNamedRenderbufferStorageMultisampleCoverageEXT == NULL);
+ glewInfoFunc(fi, "glNamedRenderbufferStorageMultisampleEXT", glNamedRenderbufferStorageMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1fEXT", glProgramUniform1fEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1fvEXT", glProgramUniform1fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1iEXT", glProgramUniform1iEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ivEXT", glProgramUniform1ivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1uiEXT", glProgramUniform1uiEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform1uivEXT", glProgramUniform1uivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2fEXT", glProgramUniform2fEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2fvEXT", glProgramUniform2fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2iEXT", glProgramUniform2iEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ivEXT", glProgramUniform2ivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2uiEXT", glProgramUniform2uiEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform2uivEXT", glProgramUniform2uivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3fEXT", glProgramUniform3fEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3fvEXT", glProgramUniform3fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3iEXT", glProgramUniform3iEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ivEXT", glProgramUniform3ivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3uiEXT", glProgramUniform3uiEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform3uivEXT", glProgramUniform3uivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4fEXT", glProgramUniform4fEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4fvEXT", glProgramUniform4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4iEXT", glProgramUniform4iEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ivEXT", glProgramUniform4ivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4uiEXT", glProgramUniform4uiEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniform4uivEXT", glProgramUniform4uivEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2fvEXT", glProgramUniformMatrix2fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x3fvEXT", glProgramUniformMatrix2x3fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix2x4fvEXT", glProgramUniformMatrix2x4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3fvEXT", glProgramUniformMatrix3fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x2fvEXT", glProgramUniformMatrix3x2fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix3x4fvEXT", glProgramUniformMatrix3x4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4fvEXT", glProgramUniformMatrix4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x2fvEXT", glProgramUniformMatrix4x2fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramUniformMatrix4x3fvEXT", glProgramUniformMatrix4x3fvEXT == NULL);
+ glewInfoFunc(fi, "glPushClientAttribDefaultEXT", glPushClientAttribDefaultEXT == NULL);
+ glewInfoFunc(fi, "glTextureBufferEXT", glTextureBufferEXT == NULL);
+ glewInfoFunc(fi, "glTextureImage1DEXT", glTextureImage1DEXT == NULL);
+ glewInfoFunc(fi, "glTextureImage2DEXT", glTextureImage2DEXT == NULL);
+ glewInfoFunc(fi, "glTextureImage3DEXT", glTextureImage3DEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterIivEXT", glTextureParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterIuivEXT", glTextureParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterfEXT", glTextureParameterfEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterfvEXT", glTextureParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameteriEXT", glTextureParameteriEXT == NULL);
+ glewInfoFunc(fi, "glTextureParameterivEXT", glTextureParameterivEXT == NULL);
+ glewInfoFunc(fi, "glTextureRenderbufferEXT", glTextureRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glTextureSubImage1DEXT", glTextureSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glTextureSubImage2DEXT", glTextureSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glTextureSubImage3DEXT", glTextureSubImage3DEXT == NULL);
+ glewInfoFunc(fi, "glUnmapNamedBufferEXT", glUnmapNamedBufferEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayColorOffsetEXT", glVertexArrayColorOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayEdgeFlagOffsetEXT", glVertexArrayEdgeFlagOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayFogCoordOffsetEXT", glVertexArrayFogCoordOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayIndexOffsetEXT", glVertexArrayIndexOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayMultiTexCoordOffsetEXT", glVertexArrayMultiTexCoordOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayNormalOffsetEXT", glVertexArrayNormalOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArraySecondaryColorOffsetEXT", glVertexArraySecondaryColorOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayTexCoordOffsetEXT", glVertexArrayTexCoordOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribDivisorEXT", glVertexArrayVertexAttribDivisorEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribIOffsetEXT", glVertexArrayVertexAttribIOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribOffsetEXT", glVertexArrayVertexAttribOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexOffsetEXT", glVertexArrayVertexOffsetEXT == NULL);
+}
+
+#endif /* GL_EXT_direct_state_access */
+
+#ifdef GL_EXT_discard_framebuffer
+
+static void _glewInfo_GL_EXT_discard_framebuffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_discard_framebuffer", GLEW_EXT_discard_framebuffer, glewIsSupported("GL_EXT_discard_framebuffer"), glewGetExtension("GL_EXT_discard_framebuffer"));
+
+ glewInfoFunc(fi, "glDiscardFramebufferEXT", glDiscardFramebufferEXT == NULL);
+}
+
+#endif /* GL_EXT_discard_framebuffer */
+
+#ifdef GL_EXT_disjoint_timer_query
+
+static void _glewInfo_GL_EXT_disjoint_timer_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_disjoint_timer_query", GLEW_EXT_disjoint_timer_query, glewIsSupported("GL_EXT_disjoint_timer_query"), glewGetExtension("GL_EXT_disjoint_timer_query"));
+
+ glewInfoFunc(fi, "glBeginQueryEXT", glBeginQueryEXT == NULL);
+ glewInfoFunc(fi, "glDeleteQueriesEXT", glDeleteQueriesEXT == NULL);
+ glewInfoFunc(fi, "glEndQueryEXT", glEndQueryEXT == NULL);
+ glewInfoFunc(fi, "glGenQueriesEXT", glGenQueriesEXT == NULL);
+ glewInfoFunc(fi, "glGetInteger64vEXT", glGetInteger64vEXT == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectivEXT", glGetQueryObjectivEXT == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectuivEXT", glGetQueryObjectuivEXT == NULL);
+ glewInfoFunc(fi, "glGetQueryivEXT", glGetQueryivEXT == NULL);
+ glewInfoFunc(fi, "glIsQueryEXT", glIsQueryEXT == NULL);
+ glewInfoFunc(fi, "glQueryCounterEXT", glQueryCounterEXT == NULL);
+}
+
+#endif /* GL_EXT_disjoint_timer_query */
+
+#ifdef GL_EXT_draw_buffers
+
+static void _glewInfo_GL_EXT_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_buffers", GLEW_EXT_draw_buffers, glewIsSupported("GL_EXT_draw_buffers"), glewGetExtension("GL_EXT_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersEXT", glDrawBuffersEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_buffers */
+
+#ifdef GL_EXT_draw_buffers2
+
+static void _glewInfo_GL_EXT_draw_buffers2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_buffers2", GLEW_EXT_draw_buffers2, glewIsSupported("GL_EXT_draw_buffers2"), glewGetExtension("GL_EXT_draw_buffers2"));
+
+ glewInfoFunc(fi, "glColorMaskIndexedEXT", glColorMaskIndexedEXT == NULL);
+ glewInfoFunc(fi, "glDisableIndexedEXT", glDisableIndexedEXT == NULL);
+ glewInfoFunc(fi, "glEnableIndexedEXT", glEnableIndexedEXT == NULL);
+ glewInfoFunc(fi, "glGetBooleanIndexedvEXT", glGetBooleanIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glGetIntegerIndexedvEXT", glGetIntegerIndexedvEXT == NULL);
+ glewInfoFunc(fi, "glIsEnabledIndexedEXT", glIsEnabledIndexedEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_buffers2 */
+
+#ifdef GL_EXT_draw_buffers_indexed
+
+static void _glewInfo_GL_EXT_draw_buffers_indexed (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_buffers_indexed", GLEW_EXT_draw_buffers_indexed, glewIsSupported("GL_EXT_draw_buffers_indexed"), glewGetExtension("GL_EXT_draw_buffers_indexed"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateiEXT", glBlendEquationSeparateiEXT == NULL);
+ glewInfoFunc(fi, "glBlendEquationiEXT", glBlendEquationiEXT == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparateiEXT", glBlendFuncSeparateiEXT == NULL);
+ glewInfoFunc(fi, "glBlendFunciEXT", glBlendFunciEXT == NULL);
+ glewInfoFunc(fi, "glColorMaskiEXT", glColorMaskiEXT == NULL);
+ glewInfoFunc(fi, "glDisableiEXT", glDisableiEXT == NULL);
+ glewInfoFunc(fi, "glEnableiEXT", glEnableiEXT == NULL);
+ glewInfoFunc(fi, "glIsEnablediEXT", glIsEnablediEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_buffers_indexed */
+
+#ifdef GL_EXT_draw_elements_base_vertex
+
+static void _glewInfo_GL_EXT_draw_elements_base_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_elements_base_vertex", GLEW_EXT_draw_elements_base_vertex, glewIsSupported("GL_EXT_draw_elements_base_vertex"), glewGetExtension("GL_EXT_draw_elements_base_vertex"));
+
+ glewInfoFunc(fi, "glDrawElementsBaseVertexEXT", glDrawElementsBaseVertexEXT == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedBaseVertexEXT", glDrawElementsInstancedBaseVertexEXT == NULL);
+ glewInfoFunc(fi, "glDrawRangeElementsBaseVertexEXT", glDrawRangeElementsBaseVertexEXT == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsBaseVertexEXT", glMultiDrawElementsBaseVertexEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_elements_base_vertex */
+
+#ifdef GL_EXT_draw_instanced
+
+static void _glewInfo_GL_EXT_draw_instanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_instanced", GLEW_EXT_draw_instanced, glewIsSupported("GL_EXT_draw_instanced"), glewGetExtension("GL_EXT_draw_instanced"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedEXT", glDrawArraysInstancedEXT == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedEXT", glDrawElementsInstancedEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_instanced */
+
+#ifdef GL_EXT_draw_range_elements
+
+static void _glewInfo_GL_EXT_draw_range_elements (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_range_elements", GLEW_EXT_draw_range_elements, glewIsSupported("GL_EXT_draw_range_elements"), glewGetExtension("GL_EXT_draw_range_elements"));
+
+ glewInfoFunc(fi, "glDrawRangeElementsEXT", glDrawRangeElementsEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_range_elements */
+
+#ifdef GL_EXT_draw_transform_feedback
+
+static void _glewInfo_GL_EXT_draw_transform_feedback (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_draw_transform_feedback", GLEW_EXT_draw_transform_feedback, glewIsSupported("GL_EXT_draw_transform_feedback"), glewGetExtension("GL_EXT_draw_transform_feedback"));
+
+ glewInfoFunc(fi, "glDrawTransformFeedbackEXT", glDrawTransformFeedbackEXT == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedbackInstancedEXT", glDrawTransformFeedbackInstancedEXT == NULL);
+}
+
+#endif /* GL_EXT_draw_transform_feedback */
+
+#ifdef GL_EXT_external_buffer
+
+static void _glewInfo_GL_EXT_external_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_external_buffer", GLEW_EXT_external_buffer, glewIsSupported("GL_EXT_external_buffer"), glewGetExtension("GL_EXT_external_buffer"));
+
+ glewInfoFunc(fi, "glBufferStorageExternalEXT", glBufferStorageExternalEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferStorageExternalEXT", glNamedBufferStorageExternalEXT == NULL);
+}
+
+#endif /* GL_EXT_external_buffer */
+
+#ifdef GL_EXT_float_blend
+
+static void _glewInfo_GL_EXT_float_blend (void)
+{
+ glewPrintExt("GL_EXT_float_blend", GLEW_EXT_float_blend, glewIsSupported("GL_EXT_float_blend"), glewGetExtension("GL_EXT_float_blend"));
+}
+
+#endif /* GL_EXT_float_blend */
+
+#ifdef GL_EXT_fog_coord
+
+static void _glewInfo_GL_EXT_fog_coord (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_fog_coord", GLEW_EXT_fog_coord, glewIsSupported("GL_EXT_fog_coord"), glewGetExtension("GL_EXT_fog_coord"));
+
+ glewInfoFunc(fi, "glFogCoordPointerEXT", glFogCoordPointerEXT == NULL);
+ glewInfoFunc(fi, "glFogCoorddEXT", glFogCoorddEXT == NULL);
+ glewInfoFunc(fi, "glFogCoorddvEXT", glFogCoorddvEXT == NULL);
+ glewInfoFunc(fi, "glFogCoordfEXT", glFogCoordfEXT == NULL);
+ glewInfoFunc(fi, "glFogCoordfvEXT", glFogCoordfvEXT == NULL);
+}
+
+#endif /* GL_EXT_fog_coord */
+
+#ifdef GL_EXT_frag_depth
+
+static void _glewInfo_GL_EXT_frag_depth (void)
+{
+ glewPrintExt("GL_EXT_frag_depth", GLEW_EXT_frag_depth, glewIsSupported("GL_EXT_frag_depth"), glewGetExtension("GL_EXT_frag_depth"));
+}
+
+#endif /* GL_EXT_frag_depth */
+
+#ifdef GL_EXT_fragment_lighting
+
+static void _glewInfo_GL_EXT_fragment_lighting (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_fragment_lighting", GLEW_EXT_fragment_lighting, glewIsSupported("GL_EXT_fragment_lighting"), glewGetExtension("GL_EXT_fragment_lighting"));
+
+ glewInfoFunc(fi, "glFragmentColorMaterialEXT", glFragmentColorMaterialEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelfEXT", glFragmentLightModelfEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelfvEXT", glFragmentLightModelfvEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightModeliEXT", glFragmentLightModeliEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelivEXT", glFragmentLightModelivEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightfEXT", glFragmentLightfEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightfvEXT", glFragmentLightfvEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightiEXT", glFragmentLightiEXT == NULL);
+ glewInfoFunc(fi, "glFragmentLightivEXT", glFragmentLightivEXT == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialfEXT", glFragmentMaterialfEXT == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialfvEXT", glFragmentMaterialfvEXT == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialiEXT", glFragmentMaterialiEXT == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialivEXT", glFragmentMaterialivEXT == NULL);
+ glewInfoFunc(fi, "glGetFragmentLightfvEXT", glGetFragmentLightfvEXT == NULL);
+ glewInfoFunc(fi, "glGetFragmentLightivEXT", glGetFragmentLightivEXT == NULL);
+ glewInfoFunc(fi, "glGetFragmentMaterialfvEXT", glGetFragmentMaterialfvEXT == NULL);
+ glewInfoFunc(fi, "glGetFragmentMaterialivEXT", glGetFragmentMaterialivEXT == NULL);
+ glewInfoFunc(fi, "glLightEnviEXT", glLightEnviEXT == NULL);
+}
+
+#endif /* GL_EXT_fragment_lighting */
+
+#ifdef GL_EXT_framebuffer_blit
+
+static void _glewInfo_GL_EXT_framebuffer_blit (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_framebuffer_blit", GLEW_EXT_framebuffer_blit, glewIsSupported("GL_EXT_framebuffer_blit"), glewGetExtension("GL_EXT_framebuffer_blit"));
+
+ glewInfoFunc(fi, "glBlitFramebufferEXT", glBlitFramebufferEXT == NULL);
+}
+
+#endif /* GL_EXT_framebuffer_blit */
+
+#ifdef GL_EXT_framebuffer_multisample
+
+static void _glewInfo_GL_EXT_framebuffer_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_framebuffer_multisample", GLEW_EXT_framebuffer_multisample, glewIsSupported("GL_EXT_framebuffer_multisample"), glewGetExtension("GL_EXT_framebuffer_multisample"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleEXT", glRenderbufferStorageMultisampleEXT == NULL);
+}
+
+#endif /* GL_EXT_framebuffer_multisample */
+
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+
+static void _glewInfo_GL_EXT_framebuffer_multisample_blit_scaled (void)
+{
+ glewPrintExt("GL_EXT_framebuffer_multisample_blit_scaled", GLEW_EXT_framebuffer_multisample_blit_scaled, glewIsSupported("GL_EXT_framebuffer_multisample_blit_scaled"), glewGetExtension("GL_EXT_framebuffer_multisample_blit_scaled"));
+}
+
+#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
+
+#ifdef GL_EXT_framebuffer_object
+
+static void _glewInfo_GL_EXT_framebuffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_framebuffer_object", GLEW_EXT_framebuffer_object, glewIsSupported("GL_EXT_framebuffer_object"), glewGetExtension("GL_EXT_framebuffer_object"));
+
+ glewInfoFunc(fi, "glBindFramebufferEXT", glBindFramebufferEXT == NULL);
+ glewInfoFunc(fi, "glBindRenderbufferEXT", glBindRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glCheckFramebufferStatusEXT", glCheckFramebufferStatusEXT == NULL);
+ glewInfoFunc(fi, "glDeleteFramebuffersEXT", glDeleteFramebuffersEXT == NULL);
+ glewInfoFunc(fi, "glDeleteRenderbuffersEXT", glDeleteRenderbuffersEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferRenderbufferEXT", glFramebufferRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture1DEXT", glFramebufferTexture1DEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture2DEXT", glFramebufferTexture2DEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture3DEXT", glFramebufferTexture3DEXT == NULL);
+ glewInfoFunc(fi, "glGenFramebuffersEXT", glGenFramebuffersEXT == NULL);
+ glewInfoFunc(fi, "glGenRenderbuffersEXT", glGenRenderbuffersEXT == NULL);
+ glewInfoFunc(fi, "glGenerateMipmapEXT", glGenerateMipmapEXT == NULL);
+ glewInfoFunc(fi, "glGetFramebufferAttachmentParameterivEXT", glGetFramebufferAttachmentParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetRenderbufferParameterivEXT", glGetRenderbufferParameterivEXT == NULL);
+ glewInfoFunc(fi, "glIsFramebufferEXT", glIsFramebufferEXT == NULL);
+ glewInfoFunc(fi, "glIsRenderbufferEXT", glIsRenderbufferEXT == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageEXT", glRenderbufferStorageEXT == NULL);
+}
+
+#endif /* GL_EXT_framebuffer_object */
+
+#ifdef GL_EXT_framebuffer_sRGB
+
+static void _glewInfo_GL_EXT_framebuffer_sRGB (void)
+{
+ glewPrintExt("GL_EXT_framebuffer_sRGB", GLEW_EXT_framebuffer_sRGB, glewIsSupported("GL_EXT_framebuffer_sRGB"), glewGetExtension("GL_EXT_framebuffer_sRGB"));
+}
+
+#endif /* GL_EXT_framebuffer_sRGB */
+
+#ifdef GL_EXT_geometry_point_size
+
+static void _glewInfo_GL_EXT_geometry_point_size (void)
+{
+ glewPrintExt("GL_EXT_geometry_point_size", GLEW_EXT_geometry_point_size, glewIsSupported("GL_EXT_geometry_point_size"), glewGetExtension("GL_EXT_geometry_point_size"));
+}
+
+#endif /* GL_EXT_geometry_point_size */
+
+#ifdef GL_EXT_geometry_shader
+
+static void _glewInfo_GL_EXT_geometry_shader (void)
+{
+ glewPrintExt("GL_EXT_geometry_shader", GLEW_EXT_geometry_shader, glewIsSupported("GL_EXT_geometry_shader"), glewGetExtension("GL_EXT_geometry_shader"));
+}
+
+#endif /* GL_EXT_geometry_shader */
+
+#ifdef GL_EXT_geometry_shader4
+
+static void _glewInfo_GL_EXT_geometry_shader4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_geometry_shader4", GLEW_EXT_geometry_shader4, glewIsSupported("GL_EXT_geometry_shader4"), glewGetExtension("GL_EXT_geometry_shader4"));
+
+ glewInfoFunc(fi, "glFramebufferTextureEXT", glFramebufferTextureEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureFaceEXT", glFramebufferTextureFaceEXT == NULL);
+ glewInfoFunc(fi, "glProgramParameteriEXT", glProgramParameteriEXT == NULL);
+}
+
+#endif /* GL_EXT_geometry_shader4 */
+
+#ifdef GL_EXT_gpu_program_parameters
+
+static void _glewInfo_GL_EXT_gpu_program_parameters (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_gpu_program_parameters", GLEW_EXT_gpu_program_parameters, glewIsSupported("GL_EXT_gpu_program_parameters"), glewGetExtension("GL_EXT_gpu_program_parameters"));
+
+ glewInfoFunc(fi, "glProgramEnvParameters4fvEXT", glProgramEnvParameters4fvEXT == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameters4fvEXT", glProgramLocalParameters4fvEXT == NULL);
+}
+
+#endif /* GL_EXT_gpu_program_parameters */
+
+#ifdef GL_EXT_gpu_shader4
+
+static void _glewInfo_GL_EXT_gpu_shader4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_gpu_shader4", GLEW_EXT_gpu_shader4, glewIsSupported("GL_EXT_gpu_shader4"), glewGetExtension("GL_EXT_gpu_shader4"));
+
+ glewInfoFunc(fi, "glBindFragDataLocationEXT", glBindFragDataLocationEXT == NULL);
+ glewInfoFunc(fi, "glGetFragDataLocationEXT", glGetFragDataLocationEXT == NULL);
+ glewInfoFunc(fi, "glGetUniformuivEXT", glGetUniformuivEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribIivEXT", glGetVertexAttribIivEXT == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribIuivEXT", glGetVertexAttribIuivEXT == NULL);
+ glewInfoFunc(fi, "glUniform1uiEXT", glUniform1uiEXT == NULL);
+ glewInfoFunc(fi, "glUniform1uivEXT", glUniform1uivEXT == NULL);
+ glewInfoFunc(fi, "glUniform2uiEXT", glUniform2uiEXT == NULL);
+ glewInfoFunc(fi, "glUniform2uivEXT", glUniform2uivEXT == NULL);
+ glewInfoFunc(fi, "glUniform3uiEXT", glUniform3uiEXT == NULL);
+ glewInfoFunc(fi, "glUniform3uivEXT", glUniform3uivEXT == NULL);
+ glewInfoFunc(fi, "glUniform4uiEXT", glUniform4uiEXT == NULL);
+ glewInfoFunc(fi, "glUniform4uivEXT", glUniform4uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1iEXT", glVertexAttribI1iEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1ivEXT", glVertexAttribI1ivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1uiEXT", glVertexAttribI1uiEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI1uivEXT", glVertexAttribI1uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2iEXT", glVertexAttribI2iEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2ivEXT", glVertexAttribI2ivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2uiEXT", glVertexAttribI2uiEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI2uivEXT", glVertexAttribI2uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3iEXT", glVertexAttribI3iEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3ivEXT", glVertexAttribI3ivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3uiEXT", glVertexAttribI3uiEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI3uivEXT", glVertexAttribI3uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4bvEXT", glVertexAttribI4bvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4iEXT", glVertexAttribI4iEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4ivEXT", glVertexAttribI4ivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4svEXT", glVertexAttribI4svEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4ubvEXT", glVertexAttribI4ubvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4uiEXT", glVertexAttribI4uiEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4uivEXT", glVertexAttribI4uivEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribI4usvEXT", glVertexAttribI4usvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribIPointerEXT", glVertexAttribIPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_gpu_shader4 */
+
+#ifdef GL_EXT_gpu_shader5
+
+static void _glewInfo_GL_EXT_gpu_shader5 (void)
+{
+ glewPrintExt("GL_EXT_gpu_shader5", GLEW_EXT_gpu_shader5, glewIsSupported("GL_EXT_gpu_shader5"), glewGetExtension("GL_EXT_gpu_shader5"));
+}
+
+#endif /* GL_EXT_gpu_shader5 */
+
+#ifdef GL_EXT_histogram
+
+static void _glewInfo_GL_EXT_histogram (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_histogram", GLEW_EXT_histogram, glewIsSupported("GL_EXT_histogram"), glewGetExtension("GL_EXT_histogram"));
+
+ glewInfoFunc(fi, "glGetHistogramEXT", glGetHistogramEXT == NULL);
+ glewInfoFunc(fi, "glGetHistogramParameterfvEXT", glGetHistogramParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetHistogramParameterivEXT", glGetHistogramParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetMinmaxEXT", glGetMinmaxEXT == NULL);
+ glewInfoFunc(fi, "glGetMinmaxParameterfvEXT", glGetMinmaxParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetMinmaxParameterivEXT", glGetMinmaxParameterivEXT == NULL);
+ glewInfoFunc(fi, "glHistogramEXT", glHistogramEXT == NULL);
+ glewInfoFunc(fi, "glMinmaxEXT", glMinmaxEXT == NULL);
+ glewInfoFunc(fi, "glResetHistogramEXT", glResetHistogramEXT == NULL);
+ glewInfoFunc(fi, "glResetMinmaxEXT", glResetMinmaxEXT == NULL);
+}
+
+#endif /* GL_EXT_histogram */
+
+#ifdef GL_EXT_index_array_formats
+
+static void _glewInfo_GL_EXT_index_array_formats (void)
+{
+ glewPrintExt("GL_EXT_index_array_formats", GLEW_EXT_index_array_formats, glewIsSupported("GL_EXT_index_array_formats"), glewGetExtension("GL_EXT_index_array_formats"));
+}
+
+#endif /* GL_EXT_index_array_formats */
+
+#ifdef GL_EXT_index_func
+
+static void _glewInfo_GL_EXT_index_func (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_index_func", GLEW_EXT_index_func, glewIsSupported("GL_EXT_index_func"), glewGetExtension("GL_EXT_index_func"));
+
+ glewInfoFunc(fi, "glIndexFuncEXT", glIndexFuncEXT == NULL);
+}
+
+#endif /* GL_EXT_index_func */
+
+#ifdef GL_EXT_index_material
+
+static void _glewInfo_GL_EXT_index_material (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_index_material", GLEW_EXT_index_material, glewIsSupported("GL_EXT_index_material"), glewGetExtension("GL_EXT_index_material"));
+
+ glewInfoFunc(fi, "glIndexMaterialEXT", glIndexMaterialEXT == NULL);
+}
+
+#endif /* GL_EXT_index_material */
+
+#ifdef GL_EXT_index_texture
+
+static void _glewInfo_GL_EXT_index_texture (void)
+{
+ glewPrintExt("GL_EXT_index_texture", GLEW_EXT_index_texture, glewIsSupported("GL_EXT_index_texture"), glewGetExtension("GL_EXT_index_texture"));
+}
+
+#endif /* GL_EXT_index_texture */
+
+#ifdef GL_EXT_instanced_arrays
+
+static void _glewInfo_GL_EXT_instanced_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_instanced_arrays", GLEW_EXT_instanced_arrays, glewIsSupported("GL_EXT_instanced_arrays"), glewGetExtension("GL_EXT_instanced_arrays"));
+
+ glewInfoFunc(fi, "glVertexAttribDivisorEXT", glVertexAttribDivisorEXT == NULL);
+}
+
+#endif /* GL_EXT_instanced_arrays */
+
+#ifdef GL_EXT_light_texture
+
+static void _glewInfo_GL_EXT_light_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_light_texture", GLEW_EXT_light_texture, glewIsSupported("GL_EXT_light_texture"), glewGetExtension("GL_EXT_light_texture"));
+
+ glewInfoFunc(fi, "glApplyTextureEXT", glApplyTextureEXT == NULL);
+ glewInfoFunc(fi, "glTextureLightEXT", glTextureLightEXT == NULL);
+ glewInfoFunc(fi, "glTextureMaterialEXT", glTextureMaterialEXT == NULL);
+}
+
+#endif /* GL_EXT_light_texture */
+
+#ifdef GL_EXT_map_buffer_range
+
+static void _glewInfo_GL_EXT_map_buffer_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_map_buffer_range", GLEW_EXT_map_buffer_range, glewIsSupported("GL_EXT_map_buffer_range"), glewGetExtension("GL_EXT_map_buffer_range"));
+
+ glewInfoFunc(fi, "glFlushMappedBufferRangeEXT", glFlushMappedBufferRangeEXT == NULL);
+ glewInfoFunc(fi, "glMapBufferRangeEXT", glMapBufferRangeEXT == NULL);
+}
+
+#endif /* GL_EXT_map_buffer_range */
+
+#ifdef GL_EXT_memory_object
+
+static void _glewInfo_GL_EXT_memory_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_memory_object", GLEW_EXT_memory_object, glewIsSupported("GL_EXT_memory_object"), glewGetExtension("GL_EXT_memory_object"));
+
+ glewInfoFunc(fi, "glBufferStorageMemEXT", glBufferStorageMemEXT == NULL);
+ glewInfoFunc(fi, "glCreateMemoryObjectsEXT", glCreateMemoryObjectsEXT == NULL);
+ glewInfoFunc(fi, "glDeleteMemoryObjectsEXT", glDeleteMemoryObjectsEXT == NULL);
+ glewInfoFunc(fi, "glGetMemoryObjectParameterivEXT", glGetMemoryObjectParameterivEXT == NULL);
+ glewInfoFunc(fi, "glGetUnsignedBytei_vEXT", glGetUnsignedBytei_vEXT == NULL);
+ glewInfoFunc(fi, "glGetUnsignedBytevEXT", glGetUnsignedBytevEXT == NULL);
+ glewInfoFunc(fi, "glIsMemoryObjectEXT", glIsMemoryObjectEXT == NULL);
+ glewInfoFunc(fi, "glMemoryObjectParameterivEXT", glMemoryObjectParameterivEXT == NULL);
+ glewInfoFunc(fi, "glNamedBufferStorageMemEXT", glNamedBufferStorageMemEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem1DEXT", glTexStorageMem1DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem2DEXT", glTexStorageMem2DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem2DMultisampleEXT", glTexStorageMem2DMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem3DEXT", glTexStorageMem3DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageMem3DMultisampleEXT", glTexStorageMem3DMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem1DEXT", glTextureStorageMem1DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem2DEXT", glTextureStorageMem2DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem2DMultisampleEXT", glTextureStorageMem2DMultisampleEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem3DEXT", glTextureStorageMem3DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorageMem3DMultisampleEXT", glTextureStorageMem3DMultisampleEXT == NULL);
+}
+
+#endif /* GL_EXT_memory_object */
+
+#ifdef GL_EXT_memory_object_fd
+
+static void _glewInfo_GL_EXT_memory_object_fd (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_memory_object_fd", GLEW_EXT_memory_object_fd, glewIsSupported("GL_EXT_memory_object_fd"), glewGetExtension("GL_EXT_memory_object_fd"));
+
+ glewInfoFunc(fi, "glImportMemoryFdEXT", glImportMemoryFdEXT == NULL);
+}
+
+#endif /* GL_EXT_memory_object_fd */
+
+#ifdef GL_EXT_memory_object_win32
+
+static void _glewInfo_GL_EXT_memory_object_win32 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_memory_object_win32", GLEW_EXT_memory_object_win32, glewIsSupported("GL_EXT_memory_object_win32"), glewGetExtension("GL_EXT_memory_object_win32"));
+
+ glewInfoFunc(fi, "glImportMemoryWin32HandleEXT", glImportMemoryWin32HandleEXT == NULL);
+ glewInfoFunc(fi, "glImportMemoryWin32NameEXT", glImportMemoryWin32NameEXT == NULL);
+}
+
+#endif /* GL_EXT_memory_object_win32 */
+
+#ifdef GL_EXT_misc_attribute
+
+static void _glewInfo_GL_EXT_misc_attribute (void)
+{
+ glewPrintExt("GL_EXT_misc_attribute", GLEW_EXT_misc_attribute, glewIsSupported("GL_EXT_misc_attribute"), glewGetExtension("GL_EXT_misc_attribute"));
+}
+
+#endif /* GL_EXT_misc_attribute */
+
+#ifdef GL_EXT_multi_draw_arrays
+
+static void _glewInfo_GL_EXT_multi_draw_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multi_draw_arrays", GLEW_EXT_multi_draw_arrays, glewIsSupported("GL_EXT_multi_draw_arrays"), glewGetExtension("GL_EXT_multi_draw_arrays"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysEXT", glMultiDrawArraysEXT == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsEXT", glMultiDrawElementsEXT == NULL);
+}
+
+#endif /* GL_EXT_multi_draw_arrays */
+
+#ifdef GL_EXT_multi_draw_indirect
+
+static void _glewInfo_GL_EXT_multi_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multi_draw_indirect", GLEW_EXT_multi_draw_indirect, glewIsSupported("GL_EXT_multi_draw_indirect"), glewGetExtension("GL_EXT_multi_draw_indirect"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectEXT", glMultiDrawArraysIndirectEXT == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectEXT", glMultiDrawElementsIndirectEXT == NULL);
+}
+
+#endif /* GL_EXT_multi_draw_indirect */
+
+#ifdef GL_EXT_multiple_textures
+
+static void _glewInfo_GL_EXT_multiple_textures (void)
+{
+ glewPrintExt("GL_EXT_multiple_textures", GLEW_EXT_multiple_textures, glewIsSupported("GL_EXT_multiple_textures"), glewGetExtension("GL_EXT_multiple_textures"));
+}
+
+#endif /* GL_EXT_multiple_textures */
+
+#ifdef GL_EXT_multisample
+
+static void _glewInfo_GL_EXT_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multisample", GLEW_EXT_multisample, glewIsSupported("GL_EXT_multisample"), glewGetExtension("GL_EXT_multisample"));
+
+ glewInfoFunc(fi, "glSampleMaskEXT", glSampleMaskEXT == NULL);
+ glewInfoFunc(fi, "glSamplePatternEXT", glSamplePatternEXT == NULL);
+}
+
+#endif /* GL_EXT_multisample */
+
+#ifdef GL_EXT_multisample_compatibility
+
+static void _glewInfo_GL_EXT_multisample_compatibility (void)
+{
+ glewPrintExt("GL_EXT_multisample_compatibility", GLEW_EXT_multisample_compatibility, glewIsSupported("GL_EXT_multisample_compatibility"), glewGetExtension("GL_EXT_multisample_compatibility"));
+}
+
+#endif /* GL_EXT_multisample_compatibility */
+
+#ifdef GL_EXT_multisampled_render_to_texture
+
+static void _glewInfo_GL_EXT_multisampled_render_to_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multisampled_render_to_texture", GLEW_EXT_multisampled_render_to_texture, glewIsSupported("GL_EXT_multisampled_render_to_texture"), glewGetExtension("GL_EXT_multisampled_render_to_texture"));
+
+ glewInfoFunc(fi, "glFramebufferTexture2DMultisampleEXT", glFramebufferTexture2DMultisampleEXT == NULL);
+}
+
+#endif /* GL_EXT_multisampled_render_to_texture */
+
+#ifdef GL_EXT_multisampled_render_to_texture2
+
+static void _glewInfo_GL_EXT_multisampled_render_to_texture2 (void)
+{
+ glewPrintExt("GL_EXT_multisampled_render_to_texture2", GLEW_EXT_multisampled_render_to_texture2, glewIsSupported("GL_EXT_multisampled_render_to_texture2"), glewGetExtension("GL_EXT_multisampled_render_to_texture2"));
+}
+
+#endif /* GL_EXT_multisampled_render_to_texture2 */
+
+#ifdef GL_EXT_multiview_draw_buffers
+
+static void _glewInfo_GL_EXT_multiview_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_multiview_draw_buffers", GLEW_EXT_multiview_draw_buffers, glewIsSupported("GL_EXT_multiview_draw_buffers"), glewGetExtension("GL_EXT_multiview_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersIndexedEXT", glDrawBuffersIndexedEXT == NULL);
+ glewInfoFunc(fi, "glGetIntegeri_vEXT", glGetIntegeri_vEXT == NULL);
+ glewInfoFunc(fi, "glReadBufferIndexedEXT", glReadBufferIndexedEXT == NULL);
+}
+
+#endif /* GL_EXT_multiview_draw_buffers */
+
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+
+static void _glewInfo_GL_EXT_multiview_tessellation_geometry_shader (void)
+{
+ glewPrintExt("GL_EXT_multiview_tessellation_geometry_shader", GLEW_EXT_multiview_tessellation_geometry_shader, glewIsSupported("GL_EXT_multiview_tessellation_geometry_shader"), glewGetExtension("GL_EXT_multiview_tessellation_geometry_shader"));
+}
+
+#endif /* GL_EXT_multiview_tessellation_geometry_shader */
+
+#ifdef GL_EXT_multiview_texture_multisample
+
+static void _glewInfo_GL_EXT_multiview_texture_multisample (void)
+{
+ glewPrintExt("GL_EXT_multiview_texture_multisample", GLEW_EXT_multiview_texture_multisample, glewIsSupported("GL_EXT_multiview_texture_multisample"), glewGetExtension("GL_EXT_multiview_texture_multisample"));
+}
+
+#endif /* GL_EXT_multiview_texture_multisample */
+
+#ifdef GL_EXT_multiview_timer_query
+
+static void _glewInfo_GL_EXT_multiview_timer_query (void)
+{
+ glewPrintExt("GL_EXT_multiview_timer_query", GLEW_EXT_multiview_timer_query, glewIsSupported("GL_EXT_multiview_timer_query"), glewGetExtension("GL_EXT_multiview_timer_query"));
+}
+
+#endif /* GL_EXT_multiview_timer_query */
+
+#ifdef GL_EXT_occlusion_query_boolean
+
+static void _glewInfo_GL_EXT_occlusion_query_boolean (void)
+{
+ glewPrintExt("GL_EXT_occlusion_query_boolean", GLEW_EXT_occlusion_query_boolean, glewIsSupported("GL_EXT_occlusion_query_boolean"), glewGetExtension("GL_EXT_occlusion_query_boolean"));
+}
+
+#endif /* GL_EXT_occlusion_query_boolean */
+
+#ifdef GL_EXT_packed_depth_stencil
+
+static void _glewInfo_GL_EXT_packed_depth_stencil (void)
+{
+ glewPrintExt("GL_EXT_packed_depth_stencil", GLEW_EXT_packed_depth_stencil, glewIsSupported("GL_EXT_packed_depth_stencil"), glewGetExtension("GL_EXT_packed_depth_stencil"));
+}
+
+#endif /* GL_EXT_packed_depth_stencil */
+
+#ifdef GL_EXT_packed_float
+
+static void _glewInfo_GL_EXT_packed_float (void)
+{
+ glewPrintExt("GL_EXT_packed_float", GLEW_EXT_packed_float, glewIsSupported("GL_EXT_packed_float"), glewGetExtension("GL_EXT_packed_float"));
+}
+
+#endif /* GL_EXT_packed_float */
+
+#ifdef GL_EXT_packed_pixels
+
+static void _glewInfo_GL_EXT_packed_pixels (void)
+{
+ glewPrintExt("GL_EXT_packed_pixels", GLEW_EXT_packed_pixels, glewIsSupported("GL_EXT_packed_pixels"), glewGetExtension("GL_EXT_packed_pixels"));
+}
+
+#endif /* GL_EXT_packed_pixels */
+
+#ifdef GL_EXT_paletted_texture
+
+static void _glewInfo_GL_EXT_paletted_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_paletted_texture", GLEW_EXT_paletted_texture, glewIsSupported("GL_EXT_paletted_texture"), glewGetExtension("GL_EXT_paletted_texture"));
+
+ glewInfoFunc(fi, "glColorTableEXT", glColorTableEXT == NULL);
+ glewInfoFunc(fi, "glGetColorTableEXT", glGetColorTableEXT == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterfvEXT", glGetColorTableParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterivEXT", glGetColorTableParameterivEXT == NULL);
+}
+
+#endif /* GL_EXT_paletted_texture */
+
+#ifdef GL_EXT_pixel_buffer_object
+
+static void _glewInfo_GL_EXT_pixel_buffer_object (void)
+{
+ glewPrintExt("GL_EXT_pixel_buffer_object", GLEW_EXT_pixel_buffer_object, glewIsSupported("GL_EXT_pixel_buffer_object"), glewGetExtension("GL_EXT_pixel_buffer_object"));
+}
+
+#endif /* GL_EXT_pixel_buffer_object */
+
+#ifdef GL_EXT_pixel_transform
+
+static void _glewInfo_GL_EXT_pixel_transform (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_pixel_transform", GLEW_EXT_pixel_transform, glewIsSupported("GL_EXT_pixel_transform"), glewGetExtension("GL_EXT_pixel_transform"));
+
+ glewInfoFunc(fi, "glGetPixelTransformParameterfvEXT", glGetPixelTransformParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glGetPixelTransformParameterivEXT", glGetPixelTransformParameterivEXT == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterfEXT", glPixelTransformParameterfEXT == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterfvEXT", glPixelTransformParameterfvEXT == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameteriEXT", glPixelTransformParameteriEXT == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterivEXT", glPixelTransformParameterivEXT == NULL);
+}
+
+#endif /* GL_EXT_pixel_transform */
+
+#ifdef GL_EXT_pixel_transform_color_table
+
+static void _glewInfo_GL_EXT_pixel_transform_color_table (void)
+{
+ glewPrintExt("GL_EXT_pixel_transform_color_table", GLEW_EXT_pixel_transform_color_table, glewIsSupported("GL_EXT_pixel_transform_color_table"), glewGetExtension("GL_EXT_pixel_transform_color_table"));
+}
+
+#endif /* GL_EXT_pixel_transform_color_table */
+
+#ifdef GL_EXT_point_parameters
+
+static void _glewInfo_GL_EXT_point_parameters (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_point_parameters", GLEW_EXT_point_parameters, glewIsSupported("GL_EXT_point_parameters"), glewGetExtension("GL_EXT_point_parameters"));
+
+ glewInfoFunc(fi, "glPointParameterfEXT", glPointParameterfEXT == NULL);
+ glewInfoFunc(fi, "glPointParameterfvEXT", glPointParameterfvEXT == NULL);
+}
+
+#endif /* GL_EXT_point_parameters */
+
+#ifdef GL_EXT_polygon_offset
+
+static void _glewInfo_GL_EXT_polygon_offset (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_polygon_offset", GLEW_EXT_polygon_offset, glewIsSupported("GL_EXT_polygon_offset"), glewGetExtension("GL_EXT_polygon_offset"));
+
+ glewInfoFunc(fi, "glPolygonOffsetEXT", glPolygonOffsetEXT == NULL);
+}
+
+#endif /* GL_EXT_polygon_offset */
+
+#ifdef GL_EXT_polygon_offset_clamp
+
+static void _glewInfo_GL_EXT_polygon_offset_clamp (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_polygon_offset_clamp", GLEW_EXT_polygon_offset_clamp, glewIsSupported("GL_EXT_polygon_offset_clamp"), glewGetExtension("GL_EXT_polygon_offset_clamp"));
+
+ glewInfoFunc(fi, "glPolygonOffsetClampEXT", glPolygonOffsetClampEXT == NULL);
+}
+
+#endif /* GL_EXT_polygon_offset_clamp */
+
+#ifdef GL_EXT_post_depth_coverage
+
+static void _glewInfo_GL_EXT_post_depth_coverage (void)
+{
+ glewPrintExt("GL_EXT_post_depth_coverage", GLEW_EXT_post_depth_coverage, glewIsSupported("GL_EXT_post_depth_coverage"), glewGetExtension("GL_EXT_post_depth_coverage"));
+}
+
+#endif /* GL_EXT_post_depth_coverage */
+
+#ifdef GL_EXT_primitive_bounding_box
+
+static void _glewInfo_GL_EXT_primitive_bounding_box (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_primitive_bounding_box", GLEW_EXT_primitive_bounding_box, glewIsSupported("GL_EXT_primitive_bounding_box"), glewGetExtension("GL_EXT_primitive_bounding_box"));
+
+ glewInfoFunc(fi, "glPrimitiveBoundingBoxEXT", glPrimitiveBoundingBoxEXT == NULL);
+}
+
+#endif /* GL_EXT_primitive_bounding_box */
+
+#ifdef GL_EXT_protected_textures
+
+static void _glewInfo_GL_EXT_protected_textures (void)
+{
+ glewPrintExt("GL_EXT_protected_textures", GLEW_EXT_protected_textures, glewIsSupported("GL_EXT_protected_textures"), glewGetExtension("GL_EXT_protected_textures"));
+}
+
+#endif /* GL_EXT_protected_textures */
+
+#ifdef GL_EXT_provoking_vertex
+
+static void _glewInfo_GL_EXT_provoking_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_provoking_vertex", GLEW_EXT_provoking_vertex, glewIsSupported("GL_EXT_provoking_vertex"), glewGetExtension("GL_EXT_provoking_vertex"));
+
+ glewInfoFunc(fi, "glProvokingVertexEXT", glProvokingVertexEXT == NULL);
+}
+
+#endif /* GL_EXT_provoking_vertex */
+
+#ifdef GL_EXT_pvrtc_sRGB
+
+static void _glewInfo_GL_EXT_pvrtc_sRGB (void)
+{
+ glewPrintExt("GL_EXT_pvrtc_sRGB", GLEW_EXT_pvrtc_sRGB, glewIsSupported("GL_EXT_pvrtc_sRGB"), glewGetExtension("GL_EXT_pvrtc_sRGB"));
+}
+
+#endif /* GL_EXT_pvrtc_sRGB */
+
+#ifdef GL_EXT_raster_multisample
+
+static void _glewInfo_GL_EXT_raster_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_raster_multisample", GLEW_EXT_raster_multisample, glewIsSupported("GL_EXT_raster_multisample"), glewGetExtension("GL_EXT_raster_multisample"));
+
+ glewInfoFunc(fi, "glCoverageModulationNV", glCoverageModulationNV == NULL);
+ glewInfoFunc(fi, "glCoverageModulationTableNV", glCoverageModulationTableNV == NULL);
+ glewInfoFunc(fi, "glGetCoverageModulationTableNV", glGetCoverageModulationTableNV == NULL);
+ glewInfoFunc(fi, "glRasterSamplesEXT", glRasterSamplesEXT == NULL);
+}
+
+#endif /* GL_EXT_raster_multisample */
+
+#ifdef GL_EXT_read_format_bgra
+
+static void _glewInfo_GL_EXT_read_format_bgra (void)
+{
+ glewPrintExt("GL_EXT_read_format_bgra", GLEW_EXT_read_format_bgra, glewIsSupported("GL_EXT_read_format_bgra"), glewGetExtension("GL_EXT_read_format_bgra"));
+}
+
+#endif /* GL_EXT_read_format_bgra */
+
+#ifdef GL_EXT_render_snorm
+
+static void _glewInfo_GL_EXT_render_snorm (void)
+{
+ glewPrintExt("GL_EXT_render_snorm", GLEW_EXT_render_snorm, glewIsSupported("GL_EXT_render_snorm"), glewGetExtension("GL_EXT_render_snorm"));
+}
+
+#endif /* GL_EXT_render_snorm */
+
+#ifdef GL_EXT_rescale_normal
+
+static void _glewInfo_GL_EXT_rescale_normal (void)
+{
+ glewPrintExt("GL_EXT_rescale_normal", GLEW_EXT_rescale_normal, glewIsSupported("GL_EXT_rescale_normal"), glewGetExtension("GL_EXT_rescale_normal"));
+}
+
+#endif /* GL_EXT_rescale_normal */
+
+#ifdef GL_EXT_robustness
+
+static void _glewInfo_GL_EXT_robustness (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_robustness", GLEW_EXT_robustness, glewIsSupported("GL_EXT_robustness"), glewGetExtension("GL_EXT_robustness"));
+
+ glewInfoFunc(fi, "glGetGraphicsResetStatusEXT", glGetGraphicsResetStatusEXT == NULL);
+ glewInfoFunc(fi, "glGetnUniformfvEXT", glGetnUniformfvEXT == NULL);
+ glewInfoFunc(fi, "glGetnUniformivEXT", glGetnUniformivEXT == NULL);
+ glewInfoFunc(fi, "glReadnPixelsEXT", glReadnPixelsEXT == NULL);
+}
+
+#endif /* GL_EXT_robustness */
+
+#ifdef GL_EXT_sRGB
+
+static void _glewInfo_GL_EXT_sRGB (void)
+{
+ glewPrintExt("GL_EXT_sRGB", GLEW_EXT_sRGB, glewIsSupported("GL_EXT_sRGB"), glewGetExtension("GL_EXT_sRGB"));
+}
+
+#endif /* GL_EXT_sRGB */
+
+#ifdef GL_EXT_sRGB_write_control
+
+static void _glewInfo_GL_EXT_sRGB_write_control (void)
+{
+ glewPrintExt("GL_EXT_sRGB_write_control", GLEW_EXT_sRGB_write_control, glewIsSupported("GL_EXT_sRGB_write_control"), glewGetExtension("GL_EXT_sRGB_write_control"));
+}
+
+#endif /* GL_EXT_sRGB_write_control */
+
+#ifdef GL_EXT_scene_marker
+
+static void _glewInfo_GL_EXT_scene_marker (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_scene_marker", GLEW_EXT_scene_marker, glewIsSupported("GL_EXT_scene_marker"), glewGetExtension("GL_EXT_scene_marker"));
+
+ glewInfoFunc(fi, "glBeginSceneEXT", glBeginSceneEXT == NULL);
+ glewInfoFunc(fi, "glEndSceneEXT", glEndSceneEXT == NULL);
+}
+
+#endif /* GL_EXT_scene_marker */
+
+#ifdef GL_EXT_secondary_color
+
+static void _glewInfo_GL_EXT_secondary_color (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_secondary_color", GLEW_EXT_secondary_color, glewIsSupported("GL_EXT_secondary_color"), glewGetExtension("GL_EXT_secondary_color"));
+
+ glewInfoFunc(fi, "glSecondaryColor3bEXT", glSecondaryColor3bEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3bvEXT", glSecondaryColor3bvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3dEXT", glSecondaryColor3dEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3dvEXT", glSecondaryColor3dvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3fEXT", glSecondaryColor3fEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3fvEXT", glSecondaryColor3fvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3iEXT", glSecondaryColor3iEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ivEXT", glSecondaryColor3ivEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3sEXT", glSecondaryColor3sEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3svEXT", glSecondaryColor3svEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ubEXT", glSecondaryColor3ubEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3ubvEXT", glSecondaryColor3ubvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3uiEXT", glSecondaryColor3uiEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3uivEXT", glSecondaryColor3uivEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3usEXT", glSecondaryColor3usEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3usvEXT", glSecondaryColor3usvEXT == NULL);
+ glewInfoFunc(fi, "glSecondaryColorPointerEXT", glSecondaryColorPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_secondary_color */
+
+#ifdef GL_EXT_semaphore
+
+static void _glewInfo_GL_EXT_semaphore (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_semaphore", GLEW_EXT_semaphore, glewIsSupported("GL_EXT_semaphore"), glewGetExtension("GL_EXT_semaphore"));
+
+ glewInfoFunc(fi, "glDeleteSemaphoresEXT", glDeleteSemaphoresEXT == NULL);
+ glewInfoFunc(fi, "glGenSemaphoresEXT", glGenSemaphoresEXT == NULL);
+ glewInfoFunc(fi, "glGetSemaphoreParameterui64vEXT", glGetSemaphoreParameterui64vEXT == NULL);
+ glewInfoFunc(fi, "glIsSemaphoreEXT", glIsSemaphoreEXT == NULL);
+ glewInfoFunc(fi, "glSemaphoreParameterui64vEXT", glSemaphoreParameterui64vEXT == NULL);
+ glewInfoFunc(fi, "glSignalSemaphoreEXT", glSignalSemaphoreEXT == NULL);
+ glewInfoFunc(fi, "glWaitSemaphoreEXT", glWaitSemaphoreEXT == NULL);
+}
+
+#endif /* GL_EXT_semaphore */
+
+#ifdef GL_EXT_semaphore_fd
+
+static void _glewInfo_GL_EXT_semaphore_fd (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_semaphore_fd", GLEW_EXT_semaphore_fd, glewIsSupported("GL_EXT_semaphore_fd"), glewGetExtension("GL_EXT_semaphore_fd"));
+
+ glewInfoFunc(fi, "glImportSemaphoreFdEXT", glImportSemaphoreFdEXT == NULL);
+}
+
+#endif /* GL_EXT_semaphore_fd */
+
+#ifdef GL_EXT_semaphore_win32
+
+static void _glewInfo_GL_EXT_semaphore_win32 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_semaphore_win32", GLEW_EXT_semaphore_win32, glewIsSupported("GL_EXT_semaphore_win32"), glewGetExtension("GL_EXT_semaphore_win32"));
+
+ glewInfoFunc(fi, "glImportSemaphoreWin32HandleEXT", glImportSemaphoreWin32HandleEXT == NULL);
+ glewInfoFunc(fi, "glImportSemaphoreWin32NameEXT", glImportSemaphoreWin32NameEXT == NULL);
+}
+
+#endif /* GL_EXT_semaphore_win32 */
+
+#ifdef GL_EXT_separate_depth_stencil
+
+static void _glewInfo_GL_EXT_separate_depth_stencil (void)
+{
+ glewPrintExt("GL_EXT_separate_depth_stencil", GLEW_EXT_separate_depth_stencil, glewIsSupported("GL_EXT_separate_depth_stencil"), glewGetExtension("GL_EXT_separate_depth_stencil"));
+}
+
+#endif /* GL_EXT_separate_depth_stencil */
+
+#ifdef GL_EXT_separate_shader_objects
+
+static void _glewInfo_GL_EXT_separate_shader_objects (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_separate_shader_objects", GLEW_EXT_separate_shader_objects, glewIsSupported("GL_EXT_separate_shader_objects"), glewGetExtension("GL_EXT_separate_shader_objects"));
+
+ glewInfoFunc(fi, "glActiveProgramEXT", glActiveProgramEXT == NULL);
+ glewInfoFunc(fi, "glCreateShaderProgramEXT", glCreateShaderProgramEXT == NULL);
+ glewInfoFunc(fi, "glUseShaderProgramEXT", glUseShaderProgramEXT == NULL);
+}
+
+#endif /* GL_EXT_separate_shader_objects */
+
+#ifdef GL_EXT_separate_specular_color
+
+static void _glewInfo_GL_EXT_separate_specular_color (void)
+{
+ glewPrintExt("GL_EXT_separate_specular_color", GLEW_EXT_separate_specular_color, glewIsSupported("GL_EXT_separate_specular_color"), glewGetExtension("GL_EXT_separate_specular_color"));
+}
+
+#endif /* GL_EXT_separate_specular_color */
+
+#ifdef GL_EXT_shader_framebuffer_fetch
+
+static void _glewInfo_GL_EXT_shader_framebuffer_fetch (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_shader_framebuffer_fetch", GLEW_EXT_shader_framebuffer_fetch, glewIsSupported("GL_EXT_shader_framebuffer_fetch"), glewGetExtension("GL_EXT_shader_framebuffer_fetch"));
+
+ glewInfoFunc(fi, "glFramebufferFetchBarrierEXT", glFramebufferFetchBarrierEXT == NULL);
+}
+
+#endif /* GL_EXT_shader_framebuffer_fetch */
+
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+
+static void _glewInfo_GL_EXT_shader_framebuffer_fetch_non_coherent (void)
+{
+ glewPrintExt("GL_EXT_shader_framebuffer_fetch_non_coherent", GLEW_EXT_shader_framebuffer_fetch_non_coherent, glewIsSupported("GL_EXT_shader_framebuffer_fetch_non_coherent"), glewGetExtension("GL_EXT_shader_framebuffer_fetch_non_coherent"));
+}
+
+#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
+
+#ifdef GL_EXT_shader_group_vote
+
+static void _glewInfo_GL_EXT_shader_group_vote (void)
+{
+ glewPrintExt("GL_EXT_shader_group_vote", GLEW_EXT_shader_group_vote, glewIsSupported("GL_EXT_shader_group_vote"), glewGetExtension("GL_EXT_shader_group_vote"));
+}
+
+#endif /* GL_EXT_shader_group_vote */
+
+#ifdef GL_EXT_shader_image_load_formatted
+
+static void _glewInfo_GL_EXT_shader_image_load_formatted (void)
+{
+ glewPrintExt("GL_EXT_shader_image_load_formatted", GLEW_EXT_shader_image_load_formatted, glewIsSupported("GL_EXT_shader_image_load_formatted"), glewGetExtension("GL_EXT_shader_image_load_formatted"));
+}
+
+#endif /* GL_EXT_shader_image_load_formatted */
+
+#ifdef GL_EXT_shader_image_load_store
+
+static void _glewInfo_GL_EXT_shader_image_load_store (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_shader_image_load_store", GLEW_EXT_shader_image_load_store, glewIsSupported("GL_EXT_shader_image_load_store"), glewGetExtension("GL_EXT_shader_image_load_store"));
+
+ glewInfoFunc(fi, "glBindImageTextureEXT", glBindImageTextureEXT == NULL);
+ glewInfoFunc(fi, "glMemoryBarrierEXT", glMemoryBarrierEXT == NULL);
+}
+
+#endif /* GL_EXT_shader_image_load_store */
+
+#ifdef GL_EXT_shader_implicit_conversions
+
+static void _glewInfo_GL_EXT_shader_implicit_conversions (void)
+{
+ glewPrintExt("GL_EXT_shader_implicit_conversions", GLEW_EXT_shader_implicit_conversions, glewIsSupported("GL_EXT_shader_implicit_conversions"), glewGetExtension("GL_EXT_shader_implicit_conversions"));
+}
+
+#endif /* GL_EXT_shader_implicit_conversions */
+
+#ifdef GL_EXT_shader_integer_mix
+
+static void _glewInfo_GL_EXT_shader_integer_mix (void)
+{
+ glewPrintExt("GL_EXT_shader_integer_mix", GLEW_EXT_shader_integer_mix, glewIsSupported("GL_EXT_shader_integer_mix"), glewGetExtension("GL_EXT_shader_integer_mix"));
+}
+
+#endif /* GL_EXT_shader_integer_mix */
+
+#ifdef GL_EXT_shader_io_blocks
+
+static void _glewInfo_GL_EXT_shader_io_blocks (void)
+{
+ glewPrintExt("GL_EXT_shader_io_blocks", GLEW_EXT_shader_io_blocks, glewIsSupported("GL_EXT_shader_io_blocks"), glewGetExtension("GL_EXT_shader_io_blocks"));
+}
+
+#endif /* GL_EXT_shader_io_blocks */
+
+#ifdef GL_EXT_shader_non_constant_global_initializers
+
+static void _glewInfo_GL_EXT_shader_non_constant_global_initializers (void)
+{
+ glewPrintExt("GL_EXT_shader_non_constant_global_initializers", GLEW_EXT_shader_non_constant_global_initializers, glewIsSupported("GL_EXT_shader_non_constant_global_initializers"), glewGetExtension("GL_EXT_shader_non_constant_global_initializers"));
+}
+
+#endif /* GL_EXT_shader_non_constant_global_initializers */
+
+#ifdef GL_EXT_shader_pixel_local_storage
+
+static void _glewInfo_GL_EXT_shader_pixel_local_storage (void)
+{
+ glewPrintExt("GL_EXT_shader_pixel_local_storage", GLEW_EXT_shader_pixel_local_storage, glewIsSupported("GL_EXT_shader_pixel_local_storage"), glewGetExtension("GL_EXT_shader_pixel_local_storage"));
+}
+
+#endif /* GL_EXT_shader_pixel_local_storage */
+
+#ifdef GL_EXT_shader_pixel_local_storage2
+
+static void _glewInfo_GL_EXT_shader_pixel_local_storage2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_shader_pixel_local_storage2", GLEW_EXT_shader_pixel_local_storage2, glewIsSupported("GL_EXT_shader_pixel_local_storage2"), glewGetExtension("GL_EXT_shader_pixel_local_storage2"));
+
+ glewInfoFunc(fi, "glClearPixelLocalStorageuiEXT", glClearPixelLocalStorageuiEXT == NULL);
+ glewInfoFunc(fi, "glFramebufferPixelLocalStorageSizeEXT", glFramebufferPixelLocalStorageSizeEXT == NULL);
+ glewInfoFunc(fi, "glGetFramebufferPixelLocalStorageSizeEXT", glGetFramebufferPixelLocalStorageSizeEXT == NULL);
+}
+
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+
+#ifdef GL_EXT_shader_samples_identical
+
+static void _glewInfo_GL_EXT_shader_samples_identical (void)
+{
+ glewPrintExt("GL_EXT_shader_samples_identical", GLEW_EXT_shader_samples_identical, glewIsSupported("GL_EXT_shader_samples_identical"), glewGetExtension("GL_EXT_shader_samples_identical"));
+}
+
+#endif /* GL_EXT_shader_samples_identical */
+
+#ifdef GL_EXT_shader_texture_lod
+
+static void _glewInfo_GL_EXT_shader_texture_lod (void)
+{
+ glewPrintExt("GL_EXT_shader_texture_lod", GLEW_EXT_shader_texture_lod, glewIsSupported("GL_EXT_shader_texture_lod"), glewGetExtension("GL_EXT_shader_texture_lod"));
+}
+
+#endif /* GL_EXT_shader_texture_lod */
+
+#ifdef GL_EXT_shadow_funcs
+
+static void _glewInfo_GL_EXT_shadow_funcs (void)
+{
+ glewPrintExt("GL_EXT_shadow_funcs", GLEW_EXT_shadow_funcs, glewIsSupported("GL_EXT_shadow_funcs"), glewGetExtension("GL_EXT_shadow_funcs"));
+}
+
+#endif /* GL_EXT_shadow_funcs */
+
+#ifdef GL_EXT_shadow_samplers
+
+static void _glewInfo_GL_EXT_shadow_samplers (void)
+{
+ glewPrintExt("GL_EXT_shadow_samplers", GLEW_EXT_shadow_samplers, glewIsSupported("GL_EXT_shadow_samplers"), glewGetExtension("GL_EXT_shadow_samplers"));
+}
+
+#endif /* GL_EXT_shadow_samplers */
+
+#ifdef GL_EXT_shared_texture_palette
+
+static void _glewInfo_GL_EXT_shared_texture_palette (void)
+{
+ glewPrintExt("GL_EXT_shared_texture_palette", GLEW_EXT_shared_texture_palette, glewIsSupported("GL_EXT_shared_texture_palette"), glewGetExtension("GL_EXT_shared_texture_palette"));
+}
+
+#endif /* GL_EXT_shared_texture_palette */
+
+#ifdef GL_EXT_sparse_texture
+
+static void _glewInfo_GL_EXT_sparse_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_sparse_texture", GLEW_EXT_sparse_texture, glewIsSupported("GL_EXT_sparse_texture"), glewGetExtension("GL_EXT_sparse_texture"));
+
+ glewInfoFunc(fi, "glTexPageCommitmentEXT", glTexPageCommitmentEXT == NULL);
+ glewInfoFunc(fi, "glTexturePageCommitmentEXT", glTexturePageCommitmentEXT == NULL);
+}
+
+#endif /* GL_EXT_sparse_texture */
+
+#ifdef GL_EXT_sparse_texture2
+
+static void _glewInfo_GL_EXT_sparse_texture2 (void)
+{
+ glewPrintExt("GL_EXT_sparse_texture2", GLEW_EXT_sparse_texture2, glewIsSupported("GL_EXT_sparse_texture2"), glewGetExtension("GL_EXT_sparse_texture2"));
+}
+
+#endif /* GL_EXT_sparse_texture2 */
+
+#ifdef GL_EXT_static_vertex_array
+
+static void _glewInfo_GL_EXT_static_vertex_array (void)
+{
+ glewPrintExt("GL_EXT_static_vertex_array", GLEW_EXT_static_vertex_array, glewIsSupported("GL_EXT_static_vertex_array"), glewGetExtension("GL_EXT_static_vertex_array"));
+}
+
+#endif /* GL_EXT_static_vertex_array */
+
+#ifdef GL_EXT_stencil_clear_tag
+
+static void _glewInfo_GL_EXT_stencil_clear_tag (void)
+{
+ glewPrintExt("GL_EXT_stencil_clear_tag", GLEW_EXT_stencil_clear_tag, glewIsSupported("GL_EXT_stencil_clear_tag"), glewGetExtension("GL_EXT_stencil_clear_tag"));
+}
+
+#endif /* GL_EXT_stencil_clear_tag */
+
+#ifdef GL_EXT_stencil_two_side
+
+static void _glewInfo_GL_EXT_stencil_two_side (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_stencil_two_side", GLEW_EXT_stencil_two_side, glewIsSupported("GL_EXT_stencil_two_side"), glewGetExtension("GL_EXT_stencil_two_side"));
+
+ glewInfoFunc(fi, "glActiveStencilFaceEXT", glActiveStencilFaceEXT == NULL);
+}
+
+#endif /* GL_EXT_stencil_two_side */
+
+#ifdef GL_EXT_stencil_wrap
+
+static void _glewInfo_GL_EXT_stencil_wrap (void)
+{
+ glewPrintExt("GL_EXT_stencil_wrap", GLEW_EXT_stencil_wrap, glewIsSupported("GL_EXT_stencil_wrap"), glewGetExtension("GL_EXT_stencil_wrap"));
+}
+
+#endif /* GL_EXT_stencil_wrap */
+
+#ifdef GL_EXT_subtexture
+
+static void _glewInfo_GL_EXT_subtexture (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_subtexture", GLEW_EXT_subtexture, glewIsSupported("GL_EXT_subtexture"), glewGetExtension("GL_EXT_subtexture"));
+
+ glewInfoFunc(fi, "glTexSubImage1DEXT", glTexSubImage1DEXT == NULL);
+ glewInfoFunc(fi, "glTexSubImage2DEXT", glTexSubImage2DEXT == NULL);
+ glewInfoFunc(fi, "glTexSubImage3DEXT", glTexSubImage3DEXT == NULL);
+}
+
+#endif /* GL_EXT_subtexture */
+
+#ifdef GL_EXT_tessellation_point_size
+
+static void _glewInfo_GL_EXT_tessellation_point_size (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_tessellation_point_size", GLEW_EXT_tessellation_point_size, glewIsSupported("GL_EXT_tessellation_point_size"), glewGetExtension("GL_EXT_tessellation_point_size"));
+
+ glewInfoFunc(fi, "glPatchParameteriEXT", glPatchParameteriEXT == NULL);
+}
+
+#endif /* GL_EXT_tessellation_point_size */
+
+#ifdef GL_EXT_tessellation_shader
+
+static void _glewInfo_GL_EXT_tessellation_shader (void)
+{
+ glewPrintExt("GL_EXT_tessellation_shader", GLEW_EXT_tessellation_shader, glewIsSupported("GL_EXT_tessellation_shader"), glewGetExtension("GL_EXT_tessellation_shader"));
+}
+
+#endif /* GL_EXT_tessellation_shader */
+
+#ifdef GL_EXT_texture
+
+static void _glewInfo_GL_EXT_texture (void)
+{
+ glewPrintExt("GL_EXT_texture", GLEW_EXT_texture, glewIsSupported("GL_EXT_texture"), glewGetExtension("GL_EXT_texture"));
+}
+
+#endif /* GL_EXT_texture */
+
+#ifdef GL_EXT_texture3D
+
+static void _glewInfo_GL_EXT_texture3D (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture3D", GLEW_EXT_texture3D, glewIsSupported("GL_EXT_texture3D"), glewGetExtension("GL_EXT_texture3D"));
+
+ glewInfoFunc(fi, "glTexImage3DEXT", glTexImage3DEXT == NULL);
+}
+
+#endif /* GL_EXT_texture3D */
+
+#ifdef GL_EXT_texture_array
+
+static void _glewInfo_GL_EXT_texture_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_array", GLEW_EXT_texture_array, glewIsSupported("GL_EXT_texture_array"), glewGetExtension("GL_EXT_texture_array"));
+
+ glewInfoFunc(fi, "glFramebufferTextureLayerEXT", glFramebufferTextureLayerEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_array */
+
+#ifdef GL_EXT_texture_border_clamp
+
+static void _glewInfo_GL_EXT_texture_border_clamp (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_border_clamp", GLEW_EXT_texture_border_clamp, glewIsSupported("GL_EXT_texture_border_clamp"), glewGetExtension("GL_EXT_texture_border_clamp"));
+
+ glewInfoFunc(fi, "glGetSamplerParameterIivEXT", glGetSamplerParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterIuivEXT", glGetSamplerParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIivEXT", glSamplerParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIuivEXT", glSamplerParameterIuivEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_border_clamp */
+
+#ifdef GL_EXT_texture_buffer
+
+static void _glewInfo_GL_EXT_texture_buffer (void)
+{
+ glewPrintExt("GL_EXT_texture_buffer", GLEW_EXT_texture_buffer, glewIsSupported("GL_EXT_texture_buffer"), glewGetExtension("GL_EXT_texture_buffer"));
+}
+
+#endif /* GL_EXT_texture_buffer */
+
+#ifdef GL_EXT_texture_buffer_object
+
+static void _glewInfo_GL_EXT_texture_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_buffer_object", GLEW_EXT_texture_buffer_object, glewIsSupported("GL_EXT_texture_buffer_object"), glewGetExtension("GL_EXT_texture_buffer_object"));
+
+ glewInfoFunc(fi, "glTexBufferEXT", glTexBufferEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_buffer_object */
+
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+
+static void _glewInfo_GL_EXT_texture_compression_astc_decode_mode (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_astc_decode_mode", GLEW_EXT_texture_compression_astc_decode_mode, glewIsSupported("GL_EXT_texture_compression_astc_decode_mode"), glewGetExtension("GL_EXT_texture_compression_astc_decode_mode"));
+}
+
+#endif /* GL_EXT_texture_compression_astc_decode_mode */
+
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+
+static void _glewInfo_GL_EXT_texture_compression_astc_decode_mode_rgb9e5 (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_astc_decode_mode_rgb9e5", GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5, glewIsSupported("GL_EXT_texture_compression_astc_decode_mode_rgb9e5"), glewGetExtension("GL_EXT_texture_compression_astc_decode_mode_rgb9e5"));
+}
+
+#endif /* GL_EXT_texture_compression_astc_decode_mode_rgb9e5 */
+
+#ifdef GL_EXT_texture_compression_bptc
+
+static void _glewInfo_GL_EXT_texture_compression_bptc (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_bptc", GLEW_EXT_texture_compression_bptc, glewIsSupported("GL_EXT_texture_compression_bptc"), glewGetExtension("GL_EXT_texture_compression_bptc"));
+}
+
+#endif /* GL_EXT_texture_compression_bptc */
+
+#ifdef GL_EXT_texture_compression_dxt1
+
+static void _glewInfo_GL_EXT_texture_compression_dxt1 (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_dxt1", GLEW_EXT_texture_compression_dxt1, glewIsSupported("GL_EXT_texture_compression_dxt1"), glewGetExtension("GL_EXT_texture_compression_dxt1"));
+}
+
+#endif /* GL_EXT_texture_compression_dxt1 */
+
+#ifdef GL_EXT_texture_compression_latc
+
+static void _glewInfo_GL_EXT_texture_compression_latc (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_latc", GLEW_EXT_texture_compression_latc, glewIsSupported("GL_EXT_texture_compression_latc"), glewGetExtension("GL_EXT_texture_compression_latc"));
+}
+
+#endif /* GL_EXT_texture_compression_latc */
+
+#ifdef GL_EXT_texture_compression_rgtc
+
+static void _glewInfo_GL_EXT_texture_compression_rgtc (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_rgtc", GLEW_EXT_texture_compression_rgtc, glewIsSupported("GL_EXT_texture_compression_rgtc"), glewGetExtension("GL_EXT_texture_compression_rgtc"));
+}
+
+#endif /* GL_EXT_texture_compression_rgtc */
+
+#ifdef GL_EXT_texture_compression_s3tc
+
+static void _glewInfo_GL_EXT_texture_compression_s3tc (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_s3tc", GLEW_EXT_texture_compression_s3tc, glewIsSupported("GL_EXT_texture_compression_s3tc"), glewGetExtension("GL_EXT_texture_compression_s3tc"));
+}
+
+#endif /* GL_EXT_texture_compression_s3tc */
+
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+
+static void _glewInfo_GL_EXT_texture_compression_s3tc_srgb (void)
+{
+ glewPrintExt("GL_EXT_texture_compression_s3tc_srgb", GLEW_EXT_texture_compression_s3tc_srgb, glewIsSupported("GL_EXT_texture_compression_s3tc_srgb"), glewGetExtension("GL_EXT_texture_compression_s3tc_srgb"));
+}
+
+#endif /* GL_EXT_texture_compression_s3tc_srgb */
+
+#ifdef GL_EXT_texture_cube_map
+
+static void _glewInfo_GL_EXT_texture_cube_map (void)
+{
+ glewPrintExt("GL_EXT_texture_cube_map", GLEW_EXT_texture_cube_map, glewIsSupported("GL_EXT_texture_cube_map"), glewGetExtension("GL_EXT_texture_cube_map"));
+}
+
+#endif /* GL_EXT_texture_cube_map */
+
+#ifdef GL_EXT_texture_cube_map_array
+
+static void _glewInfo_GL_EXT_texture_cube_map_array (void)
+{
+ glewPrintExt("GL_EXT_texture_cube_map_array", GLEW_EXT_texture_cube_map_array, glewIsSupported("GL_EXT_texture_cube_map_array"), glewGetExtension("GL_EXT_texture_cube_map_array"));
+}
+
+#endif /* GL_EXT_texture_cube_map_array */
+
+#ifdef GL_EXT_texture_edge_clamp
+
+static void _glewInfo_GL_EXT_texture_edge_clamp (void)
+{
+ glewPrintExt("GL_EXT_texture_edge_clamp", GLEW_EXT_texture_edge_clamp, glewIsSupported("GL_EXT_texture_edge_clamp"), glewGetExtension("GL_EXT_texture_edge_clamp"));
+}
+
+#endif /* GL_EXT_texture_edge_clamp */
+
+#ifdef GL_EXT_texture_env
+
+static void _glewInfo_GL_EXT_texture_env (void)
+{
+ glewPrintExt("GL_EXT_texture_env", GLEW_EXT_texture_env, glewIsSupported("GL_EXT_texture_env"), glewGetExtension("GL_EXT_texture_env"));
+}
+
+#endif /* GL_EXT_texture_env */
+
+#ifdef GL_EXT_texture_env_add
+
+static void _glewInfo_GL_EXT_texture_env_add (void)
+{
+ glewPrintExt("GL_EXT_texture_env_add", GLEW_EXT_texture_env_add, glewIsSupported("GL_EXT_texture_env_add"), glewGetExtension("GL_EXT_texture_env_add"));
+}
+
+#endif /* GL_EXT_texture_env_add */
+
+#ifdef GL_EXT_texture_env_combine
+
+static void _glewInfo_GL_EXT_texture_env_combine (void)
+{
+ glewPrintExt("GL_EXT_texture_env_combine", GLEW_EXT_texture_env_combine, glewIsSupported("GL_EXT_texture_env_combine"), glewGetExtension("GL_EXT_texture_env_combine"));
+}
+
+#endif /* GL_EXT_texture_env_combine */
+
+#ifdef GL_EXT_texture_env_dot3
+
+static void _glewInfo_GL_EXT_texture_env_dot3 (void)
+{
+ glewPrintExt("GL_EXT_texture_env_dot3", GLEW_EXT_texture_env_dot3, glewIsSupported("GL_EXT_texture_env_dot3"), glewGetExtension("GL_EXT_texture_env_dot3"));
+}
+
+#endif /* GL_EXT_texture_env_dot3 */
+
+#ifdef GL_EXT_texture_filter_anisotropic
+
+static void _glewInfo_GL_EXT_texture_filter_anisotropic (void)
+{
+ glewPrintExt("GL_EXT_texture_filter_anisotropic", GLEW_EXT_texture_filter_anisotropic, glewIsSupported("GL_EXT_texture_filter_anisotropic"), glewGetExtension("GL_EXT_texture_filter_anisotropic"));
+}
+
+#endif /* GL_EXT_texture_filter_anisotropic */
+
+#ifdef GL_EXT_texture_filter_minmax
+
+static void _glewInfo_GL_EXT_texture_filter_minmax (void)
+{
+ glewPrintExt("GL_EXT_texture_filter_minmax", GLEW_EXT_texture_filter_minmax, glewIsSupported("GL_EXT_texture_filter_minmax"), glewGetExtension("GL_EXT_texture_filter_minmax"));
+}
+
+#endif /* GL_EXT_texture_filter_minmax */
+
+#ifdef GL_EXT_texture_format_BGRA8888
+
+static void _glewInfo_GL_EXT_texture_format_BGRA8888 (void)
+{
+ glewPrintExt("GL_EXT_texture_format_BGRA8888", GLEW_EXT_texture_format_BGRA8888, glewIsSupported("GL_EXT_texture_format_BGRA8888"), glewGetExtension("GL_EXT_texture_format_BGRA8888"));
+}
+
+#endif /* GL_EXT_texture_format_BGRA8888 */
+
+#ifdef GL_EXT_texture_format_sRGB_override
+
+static void _glewInfo_GL_EXT_texture_format_sRGB_override (void)
+{
+ glewPrintExt("GL_EXT_texture_format_sRGB_override", GLEW_EXT_texture_format_sRGB_override, glewIsSupported("GL_EXT_texture_format_sRGB_override"), glewGetExtension("GL_EXT_texture_format_sRGB_override"));
+}
+
+#endif /* GL_EXT_texture_format_sRGB_override */
+
+#ifdef GL_EXT_texture_integer
+
+static void _glewInfo_GL_EXT_texture_integer (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_integer", GLEW_EXT_texture_integer, glewIsSupported("GL_EXT_texture_integer"), glewGetExtension("GL_EXT_texture_integer"));
+
+ glewInfoFunc(fi, "glClearColorIiEXT", glClearColorIiEXT == NULL);
+ glewInfoFunc(fi, "glClearColorIuiEXT", glClearColorIuiEXT == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIivEXT", glGetTexParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIuivEXT", glGetTexParameterIuivEXT == NULL);
+ glewInfoFunc(fi, "glTexParameterIivEXT", glTexParameterIivEXT == NULL);
+ glewInfoFunc(fi, "glTexParameterIuivEXT", glTexParameterIuivEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_integer */
+
+#ifdef GL_EXT_texture_lod_bias
+
+static void _glewInfo_GL_EXT_texture_lod_bias (void)
+{
+ glewPrintExt("GL_EXT_texture_lod_bias", GLEW_EXT_texture_lod_bias, glewIsSupported("GL_EXT_texture_lod_bias"), glewGetExtension("GL_EXT_texture_lod_bias"));
+}
+
+#endif /* GL_EXT_texture_lod_bias */
+
+#ifdef GL_EXT_texture_mirror_clamp
+
+static void _glewInfo_GL_EXT_texture_mirror_clamp (void)
+{
+ glewPrintExt("GL_EXT_texture_mirror_clamp", GLEW_EXT_texture_mirror_clamp, glewIsSupported("GL_EXT_texture_mirror_clamp"), glewGetExtension("GL_EXT_texture_mirror_clamp"));
+}
+
+#endif /* GL_EXT_texture_mirror_clamp */
+
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+
+static void _glewInfo_GL_EXT_texture_mirror_clamp_to_edge (void)
+{
+ glewPrintExt("GL_EXT_texture_mirror_clamp_to_edge", GLEW_EXT_texture_mirror_clamp_to_edge, glewIsSupported("GL_EXT_texture_mirror_clamp_to_edge"), glewGetExtension("GL_EXT_texture_mirror_clamp_to_edge"));
+}
+
+#endif /* GL_EXT_texture_mirror_clamp_to_edge */
+
+#ifdef GL_EXT_texture_norm16
+
+static void _glewInfo_GL_EXT_texture_norm16 (void)
+{
+ glewPrintExt("GL_EXT_texture_norm16", GLEW_EXT_texture_norm16, glewIsSupported("GL_EXT_texture_norm16"), glewGetExtension("GL_EXT_texture_norm16"));
+}
+
+#endif /* GL_EXT_texture_norm16 */
+
+#ifdef GL_EXT_texture_object
+
+static void _glewInfo_GL_EXT_texture_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_object", GLEW_EXT_texture_object, glewIsSupported("GL_EXT_texture_object"), glewGetExtension("GL_EXT_texture_object"));
+
+ glewInfoFunc(fi, "glAreTexturesResidentEXT", glAreTexturesResidentEXT == NULL);
+ glewInfoFunc(fi, "glBindTextureEXT", glBindTextureEXT == NULL);
+ glewInfoFunc(fi, "glDeleteTexturesEXT", glDeleteTexturesEXT == NULL);
+ glewInfoFunc(fi, "glGenTexturesEXT", glGenTexturesEXT == NULL);
+ glewInfoFunc(fi, "glIsTextureEXT", glIsTextureEXT == NULL);
+ glewInfoFunc(fi, "glPrioritizeTexturesEXT", glPrioritizeTexturesEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_object */
+
+#ifdef GL_EXT_texture_perturb_normal
+
+static void _glewInfo_GL_EXT_texture_perturb_normal (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_perturb_normal", GLEW_EXT_texture_perturb_normal, glewIsSupported("GL_EXT_texture_perturb_normal"), glewGetExtension("GL_EXT_texture_perturb_normal"));
+
+ glewInfoFunc(fi, "glTextureNormalEXT", glTextureNormalEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_perturb_normal */
+
+#ifdef GL_EXT_texture_query_lod
+
+static void _glewInfo_GL_EXT_texture_query_lod (void)
+{
+ glewPrintExt("GL_EXT_texture_query_lod", GLEW_EXT_texture_query_lod, glewIsSupported("GL_EXT_texture_query_lod"), glewGetExtension("GL_EXT_texture_query_lod"));
+}
+
+#endif /* GL_EXT_texture_query_lod */
+
+#ifdef GL_EXT_texture_rectangle
+
+static void _glewInfo_GL_EXT_texture_rectangle (void)
+{
+ glewPrintExt("GL_EXT_texture_rectangle", GLEW_EXT_texture_rectangle, glewIsSupported("GL_EXT_texture_rectangle"), glewGetExtension("GL_EXT_texture_rectangle"));
+}
+
+#endif /* GL_EXT_texture_rectangle */
+
+#ifdef GL_EXT_texture_rg
+
+static void _glewInfo_GL_EXT_texture_rg (void)
+{
+ glewPrintExt("GL_EXT_texture_rg", GLEW_EXT_texture_rg, glewIsSupported("GL_EXT_texture_rg"), glewGetExtension("GL_EXT_texture_rg"));
+}
+
+#endif /* GL_EXT_texture_rg */
+
+#ifdef GL_EXT_texture_sRGB
+
+static void _glewInfo_GL_EXT_texture_sRGB (void)
+{
+ glewPrintExt("GL_EXT_texture_sRGB", GLEW_EXT_texture_sRGB, glewIsSupported("GL_EXT_texture_sRGB"), glewGetExtension("GL_EXT_texture_sRGB"));
+}
+
+#endif /* GL_EXT_texture_sRGB */
+
+#ifdef GL_EXT_texture_sRGB_R8
+
+static void _glewInfo_GL_EXT_texture_sRGB_R8 (void)
+{
+ glewPrintExt("GL_EXT_texture_sRGB_R8", GLEW_EXT_texture_sRGB_R8, glewIsSupported("GL_EXT_texture_sRGB_R8"), glewGetExtension("GL_EXT_texture_sRGB_R8"));
+}
+
+#endif /* GL_EXT_texture_sRGB_R8 */
+
+#ifdef GL_EXT_texture_sRGB_RG8
+
+static void _glewInfo_GL_EXT_texture_sRGB_RG8 (void)
+{
+ glewPrintExt("GL_EXT_texture_sRGB_RG8", GLEW_EXT_texture_sRGB_RG8, glewIsSupported("GL_EXT_texture_sRGB_RG8"), glewGetExtension("GL_EXT_texture_sRGB_RG8"));
+}
+
+#endif /* GL_EXT_texture_sRGB_RG8 */
+
+#ifdef GL_EXT_texture_sRGB_decode
+
+static void _glewInfo_GL_EXT_texture_sRGB_decode (void)
+{
+ glewPrintExt("GL_EXT_texture_sRGB_decode", GLEW_EXT_texture_sRGB_decode, glewIsSupported("GL_EXT_texture_sRGB_decode"), glewGetExtension("GL_EXT_texture_sRGB_decode"));
+}
+
+#endif /* GL_EXT_texture_sRGB_decode */
+
+#ifdef GL_EXT_texture_shadow_lod
+
+static void _glewInfo_GL_EXT_texture_shadow_lod (void)
+{
+ glewPrintExt("GL_EXT_texture_shadow_lod", GLEW_EXT_texture_shadow_lod, glewIsSupported("GL_EXT_texture_shadow_lod"), glewGetExtension("GL_EXT_texture_shadow_lod"));
+}
+
+#endif /* GL_EXT_texture_shadow_lod */
+
+#ifdef GL_EXT_texture_shared_exponent
+
+static void _glewInfo_GL_EXT_texture_shared_exponent (void)
+{
+ glewPrintExt("GL_EXT_texture_shared_exponent", GLEW_EXT_texture_shared_exponent, glewIsSupported("GL_EXT_texture_shared_exponent"), glewGetExtension("GL_EXT_texture_shared_exponent"));
+}
+
+#endif /* GL_EXT_texture_shared_exponent */
+
+#ifdef GL_EXT_texture_snorm
+
+static void _glewInfo_GL_EXT_texture_snorm (void)
+{
+ glewPrintExt("GL_EXT_texture_snorm", GLEW_EXT_texture_snorm, glewIsSupported("GL_EXT_texture_snorm"), glewGetExtension("GL_EXT_texture_snorm"));
+}
+
+#endif /* GL_EXT_texture_snorm */
+
+#ifdef GL_EXT_texture_storage
+
+static void _glewInfo_GL_EXT_texture_storage (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_storage", GLEW_EXT_texture_storage, glewIsSupported("GL_EXT_texture_storage"), glewGetExtension("GL_EXT_texture_storage"));
+
+ glewInfoFunc(fi, "glTexStorage1DEXT", glTexStorage1DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorage2DEXT", glTexStorage2DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorage3DEXT", glTexStorage3DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorage1DEXT", glTextureStorage1DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorage2DEXT", glTextureStorage2DEXT == NULL);
+ glewInfoFunc(fi, "glTextureStorage3DEXT", glTextureStorage3DEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_storage */
+
+#ifdef GL_EXT_texture_storage_compression
+
+static void _glewInfo_GL_EXT_texture_storage_compression (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_storage_compression", GLEW_EXT_texture_storage_compression, glewIsSupported("GL_EXT_texture_storage_compression"), glewGetExtension("GL_EXT_texture_storage_compression"));
+
+ glewInfoFunc(fi, "glTexStorageAttribs2DEXT", glTexStorageAttribs2DEXT == NULL);
+ glewInfoFunc(fi, "glTexStorageAttribs3DEXT", glTexStorageAttribs3DEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_storage_compression */
+
+#ifdef GL_EXT_texture_swizzle
+
+static void _glewInfo_GL_EXT_texture_swizzle (void)
+{
+ glewPrintExt("GL_EXT_texture_swizzle", GLEW_EXT_texture_swizzle, glewIsSupported("GL_EXT_texture_swizzle"), glewGetExtension("GL_EXT_texture_swizzle"));
+}
+
+#endif /* GL_EXT_texture_swizzle */
+
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+
+static void _glewInfo_GL_EXT_texture_type_2_10_10_10_REV (void)
+{
+ glewPrintExt("GL_EXT_texture_type_2_10_10_10_REV", GLEW_EXT_texture_type_2_10_10_10_REV, glewIsSupported("GL_EXT_texture_type_2_10_10_10_REV"), glewGetExtension("GL_EXT_texture_type_2_10_10_10_REV"));
+}
+
+#endif /* GL_EXT_texture_type_2_10_10_10_REV */
+
+#ifdef GL_EXT_texture_view
+
+static void _glewInfo_GL_EXT_texture_view (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_texture_view", GLEW_EXT_texture_view, glewIsSupported("GL_EXT_texture_view"), glewGetExtension("GL_EXT_texture_view"));
+
+ glewInfoFunc(fi, "glTextureViewEXT", glTextureViewEXT == NULL);
+}
+
+#endif /* GL_EXT_texture_view */
+
+#ifdef GL_EXT_timer_query
+
+static void _glewInfo_GL_EXT_timer_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_timer_query", GLEW_EXT_timer_query, glewIsSupported("GL_EXT_timer_query"), glewGetExtension("GL_EXT_timer_query"));
+
+ glewInfoFunc(fi, "glGetQueryObjecti64vEXT", glGetQueryObjecti64vEXT == NULL);
+ glewInfoFunc(fi, "glGetQueryObjectui64vEXT", glGetQueryObjectui64vEXT == NULL);
+}
+
+#endif /* GL_EXT_timer_query */
+
+#ifdef GL_EXT_transform_feedback
+
+static void _glewInfo_GL_EXT_transform_feedback (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_transform_feedback", GLEW_EXT_transform_feedback, glewIsSupported("GL_EXT_transform_feedback"), glewGetExtension("GL_EXT_transform_feedback"));
+
+ glewInfoFunc(fi, "glBeginTransformFeedbackEXT", glBeginTransformFeedbackEXT == NULL);
+ glewInfoFunc(fi, "glBindBufferBaseEXT", glBindBufferBaseEXT == NULL);
+ glewInfoFunc(fi, "glBindBufferOffsetEXT", glBindBufferOffsetEXT == NULL);
+ glewInfoFunc(fi, "glBindBufferRangeEXT", glBindBufferRangeEXT == NULL);
+ glewInfoFunc(fi, "glEndTransformFeedbackEXT", glEndTransformFeedbackEXT == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbackVaryingEXT", glGetTransformFeedbackVaryingEXT == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackVaryingsEXT", glTransformFeedbackVaryingsEXT == NULL);
+}
+
+#endif /* GL_EXT_transform_feedback */
+
+#ifdef GL_EXT_unpack_subimage
+
+static void _glewInfo_GL_EXT_unpack_subimage (void)
+{
+ glewPrintExt("GL_EXT_unpack_subimage", GLEW_EXT_unpack_subimage, glewIsSupported("GL_EXT_unpack_subimage"), glewGetExtension("GL_EXT_unpack_subimage"));
+}
+
+#endif /* GL_EXT_unpack_subimage */
+
+#ifdef GL_EXT_vertex_array
+
+static void _glewInfo_GL_EXT_vertex_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_array", GLEW_EXT_vertex_array, glewIsSupported("GL_EXT_vertex_array"), glewGetExtension("GL_EXT_vertex_array"));
+
+ glewInfoFunc(fi, "glArrayElementEXT", glArrayElementEXT == NULL);
+ glewInfoFunc(fi, "glColorPointerEXT", glColorPointerEXT == NULL);
+ glewInfoFunc(fi, "glDrawArraysEXT", glDrawArraysEXT == NULL);
+ glewInfoFunc(fi, "glEdgeFlagPointerEXT", glEdgeFlagPointerEXT == NULL);
+ glewInfoFunc(fi, "glIndexPointerEXT", glIndexPointerEXT == NULL);
+ glewInfoFunc(fi, "glNormalPointerEXT", glNormalPointerEXT == NULL);
+ glewInfoFunc(fi, "glTexCoordPointerEXT", glTexCoordPointerEXT == NULL);
+ glewInfoFunc(fi, "glVertexPointerEXT", glVertexPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_array */
+
+#ifdef GL_EXT_vertex_array_bgra
+
+static void _glewInfo_GL_EXT_vertex_array_bgra (void)
+{
+ glewPrintExt("GL_EXT_vertex_array_bgra", GLEW_EXT_vertex_array_bgra, glewIsSupported("GL_EXT_vertex_array_bgra"), glewGetExtension("GL_EXT_vertex_array_bgra"));
+}
+
+#endif /* GL_EXT_vertex_array_bgra */
+
+#ifdef GL_EXT_vertex_array_setXXX
+
+static void _glewInfo_GL_EXT_vertex_array_setXXX (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_array_setXXX", GLEW_EXT_vertex_array_setXXX, glewIsSupported("GL_EXT_vertex_array_setXXX"), glewGetExtension("GL_EXT_vertex_array_setXXX"));
+
+ glewInfoFunc(fi, "glBindArraySetEXT", glBindArraySetEXT == NULL);
+ glewInfoFunc(fi, "glCreateArraySetExt", glCreateArraySetExt == NULL);
+ glewInfoFunc(fi, "glDeleteArraySetsEXT", glDeleteArraySetsEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_array_setXXX */
+
+#ifdef GL_EXT_vertex_attrib_64bit
+
+static void _glewInfo_GL_EXT_vertex_attrib_64bit (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_attrib_64bit", GLEW_EXT_vertex_attrib_64bit, glewIsSupported("GL_EXT_vertex_attrib_64bit"), glewGetExtension("GL_EXT_vertex_attrib_64bit"));
+
+ glewInfoFunc(fi, "glGetVertexAttribLdvEXT", glGetVertexAttribLdvEXT == NULL);
+ glewInfoFunc(fi, "glVertexArrayVertexAttribLOffsetEXT", glVertexArrayVertexAttribLOffsetEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1dEXT", glVertexAttribL1dEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1dvEXT", glVertexAttribL1dvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2dEXT", glVertexAttribL2dEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2dvEXT", glVertexAttribL2dvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3dEXT", glVertexAttribL3dEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3dvEXT", glVertexAttribL3dvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4dEXT", glVertexAttribL4dEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4dvEXT", glVertexAttribL4dvEXT == NULL);
+ glewInfoFunc(fi, "glVertexAttribLPointerEXT", glVertexAttribLPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
+#ifdef GL_EXT_vertex_shader
+
+static void _glewInfo_GL_EXT_vertex_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_shader", GLEW_EXT_vertex_shader, glewIsSupported("GL_EXT_vertex_shader"), glewGetExtension("GL_EXT_vertex_shader"));
+
+ glewInfoFunc(fi, "glBeginVertexShaderEXT", glBeginVertexShaderEXT == NULL);
+ glewInfoFunc(fi, "glBindLightParameterEXT", glBindLightParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindMaterialParameterEXT", glBindMaterialParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindParameterEXT", glBindParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindTexGenParameterEXT", glBindTexGenParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindTextureUnitParameterEXT", glBindTextureUnitParameterEXT == NULL);
+ glewInfoFunc(fi, "glBindVertexShaderEXT", glBindVertexShaderEXT == NULL);
+ glewInfoFunc(fi, "glDeleteVertexShaderEXT", glDeleteVertexShaderEXT == NULL);
+ glewInfoFunc(fi, "glDisableVariantClientStateEXT", glDisableVariantClientStateEXT == NULL);
+ glewInfoFunc(fi, "glEnableVariantClientStateEXT", glEnableVariantClientStateEXT == NULL);
+ glewInfoFunc(fi, "glEndVertexShaderEXT", glEndVertexShaderEXT == NULL);
+ glewInfoFunc(fi, "glExtractComponentEXT", glExtractComponentEXT == NULL);
+ glewInfoFunc(fi, "glGenSymbolsEXT", glGenSymbolsEXT == NULL);
+ glewInfoFunc(fi, "glGenVertexShadersEXT", glGenVertexShadersEXT == NULL);
+ glewInfoFunc(fi, "glGetInvariantBooleanvEXT", glGetInvariantBooleanvEXT == NULL);
+ glewInfoFunc(fi, "glGetInvariantFloatvEXT", glGetInvariantFloatvEXT == NULL);
+ glewInfoFunc(fi, "glGetInvariantIntegervEXT", glGetInvariantIntegervEXT == NULL);
+ glewInfoFunc(fi, "glGetLocalConstantBooleanvEXT", glGetLocalConstantBooleanvEXT == NULL);
+ glewInfoFunc(fi, "glGetLocalConstantFloatvEXT", glGetLocalConstantFloatvEXT == NULL);
+ glewInfoFunc(fi, "glGetLocalConstantIntegervEXT", glGetLocalConstantIntegervEXT == NULL);
+ glewInfoFunc(fi, "glGetVariantBooleanvEXT", glGetVariantBooleanvEXT == NULL);
+ glewInfoFunc(fi, "glGetVariantFloatvEXT", glGetVariantFloatvEXT == NULL);
+ glewInfoFunc(fi, "glGetVariantIntegervEXT", glGetVariantIntegervEXT == NULL);
+ glewInfoFunc(fi, "glGetVariantPointervEXT", glGetVariantPointervEXT == NULL);
+ glewInfoFunc(fi, "glInsertComponentEXT", glInsertComponentEXT == NULL);
+ glewInfoFunc(fi, "glIsVariantEnabledEXT", glIsVariantEnabledEXT == NULL);
+ glewInfoFunc(fi, "glSetInvariantEXT", glSetInvariantEXT == NULL);
+ glewInfoFunc(fi, "glSetLocalConstantEXT", glSetLocalConstantEXT == NULL);
+ glewInfoFunc(fi, "glShaderOp1EXT", glShaderOp1EXT == NULL);
+ glewInfoFunc(fi, "glShaderOp2EXT", glShaderOp2EXT == NULL);
+ glewInfoFunc(fi, "glShaderOp3EXT", glShaderOp3EXT == NULL);
+ glewInfoFunc(fi, "glSwizzleEXT", glSwizzleEXT == NULL);
+ glewInfoFunc(fi, "glVariantPointerEXT", glVariantPointerEXT == NULL);
+ glewInfoFunc(fi, "glVariantbvEXT", glVariantbvEXT == NULL);
+ glewInfoFunc(fi, "glVariantdvEXT", glVariantdvEXT == NULL);
+ glewInfoFunc(fi, "glVariantfvEXT", glVariantfvEXT == NULL);
+ glewInfoFunc(fi, "glVariantivEXT", glVariantivEXT == NULL);
+ glewInfoFunc(fi, "glVariantsvEXT", glVariantsvEXT == NULL);
+ glewInfoFunc(fi, "glVariantubvEXT", glVariantubvEXT == NULL);
+ glewInfoFunc(fi, "glVariantuivEXT", glVariantuivEXT == NULL);
+ glewInfoFunc(fi, "glVariantusvEXT", glVariantusvEXT == NULL);
+ glewInfoFunc(fi, "glWriteMaskEXT", glWriteMaskEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_shader */
+
+#ifdef GL_EXT_vertex_weighting
+
+static void _glewInfo_GL_EXT_vertex_weighting (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_vertex_weighting", GLEW_EXT_vertex_weighting, glewIsSupported("GL_EXT_vertex_weighting"), glewGetExtension("GL_EXT_vertex_weighting"));
+
+ glewInfoFunc(fi, "glVertexWeightPointerEXT", glVertexWeightPointerEXT == NULL);
+ glewInfoFunc(fi, "glVertexWeightfEXT", glVertexWeightfEXT == NULL);
+ glewInfoFunc(fi, "glVertexWeightfvEXT", glVertexWeightfvEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_weighting */
+
+#ifdef GL_EXT_win32_keyed_mutex
+
+static void _glewInfo_GL_EXT_win32_keyed_mutex (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_win32_keyed_mutex", GLEW_EXT_win32_keyed_mutex, glewIsSupported("GL_EXT_win32_keyed_mutex"), glewGetExtension("GL_EXT_win32_keyed_mutex"));
+
+ glewInfoFunc(fi, "glAcquireKeyedMutexWin32EXT", glAcquireKeyedMutexWin32EXT == NULL);
+ glewInfoFunc(fi, "glReleaseKeyedMutexWin32EXT", glReleaseKeyedMutexWin32EXT == NULL);
+}
+
+#endif /* GL_EXT_win32_keyed_mutex */
+
+#ifdef GL_EXT_window_rectangles
+
+static void _glewInfo_GL_EXT_window_rectangles (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_window_rectangles", GLEW_EXT_window_rectangles, glewIsSupported("GL_EXT_window_rectangles"), glewGetExtension("GL_EXT_window_rectangles"));
+
+ glewInfoFunc(fi, "glWindowRectanglesEXT", glWindowRectanglesEXT == NULL);
+}
+
+#endif /* GL_EXT_window_rectangles */
+
+#ifdef GL_EXT_x11_sync_object
+
+static void _glewInfo_GL_EXT_x11_sync_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_EXT_x11_sync_object", GLEW_EXT_x11_sync_object, glewIsSupported("GL_EXT_x11_sync_object"), glewGetExtension("GL_EXT_x11_sync_object"));
+
+ glewInfoFunc(fi, "glImportSyncEXT", glImportSyncEXT == NULL);
+}
+
+#endif /* GL_EXT_x11_sync_object */
+
+#ifdef GL_FJ_shader_binary_GCCSO
+
+static void _glewInfo_GL_FJ_shader_binary_GCCSO (void)
+{
+ glewPrintExt("GL_FJ_shader_binary_GCCSO", GLEW_FJ_shader_binary_GCCSO, glewIsSupported("GL_FJ_shader_binary_GCCSO"), glewGetExtension("GL_FJ_shader_binary_GCCSO"));
+}
+
+#endif /* GL_FJ_shader_binary_GCCSO */
+
+#ifdef GL_GREMEDY_frame_terminator
+
+static void _glewInfo_GL_GREMEDY_frame_terminator (void)
+{
+ GLboolean fi = glewPrintExt("GL_GREMEDY_frame_terminator", GLEW_GREMEDY_frame_terminator, glewIsSupported("GL_GREMEDY_frame_terminator"), glewGetExtension("GL_GREMEDY_frame_terminator"));
+
+ glewInfoFunc(fi, "glFrameTerminatorGREMEDY", glFrameTerminatorGREMEDY == NULL);
+}
+
+#endif /* GL_GREMEDY_frame_terminator */
+
+#ifdef GL_GREMEDY_string_marker
+
+static void _glewInfo_GL_GREMEDY_string_marker (void)
+{
+ GLboolean fi = glewPrintExt("GL_GREMEDY_string_marker", GLEW_GREMEDY_string_marker, glewIsSupported("GL_GREMEDY_string_marker"), glewGetExtension("GL_GREMEDY_string_marker"));
+
+ glewInfoFunc(fi, "glStringMarkerGREMEDY", glStringMarkerGREMEDY == NULL);
+}
+
+#endif /* GL_GREMEDY_string_marker */
+
+#ifdef GL_HP_convolution_border_modes
+
+static void _glewInfo_GL_HP_convolution_border_modes (void)
+{
+ glewPrintExt("GL_HP_convolution_border_modes", GLEW_HP_convolution_border_modes, glewIsSupported("GL_HP_convolution_border_modes"), glewGetExtension("GL_HP_convolution_border_modes"));
+}
+
+#endif /* GL_HP_convolution_border_modes */
+
+#ifdef GL_HP_image_transform
+
+static void _glewInfo_GL_HP_image_transform (void)
+{
+ GLboolean fi = glewPrintExt("GL_HP_image_transform", GLEW_HP_image_transform, glewIsSupported("GL_HP_image_transform"), glewGetExtension("GL_HP_image_transform"));
+
+ glewInfoFunc(fi, "glGetImageTransformParameterfvHP", glGetImageTransformParameterfvHP == NULL);
+ glewInfoFunc(fi, "glGetImageTransformParameterivHP", glGetImageTransformParameterivHP == NULL);
+ glewInfoFunc(fi, "glImageTransformParameterfHP", glImageTransformParameterfHP == NULL);
+ glewInfoFunc(fi, "glImageTransformParameterfvHP", glImageTransformParameterfvHP == NULL);
+ glewInfoFunc(fi, "glImageTransformParameteriHP", glImageTransformParameteriHP == NULL);
+ glewInfoFunc(fi, "glImageTransformParameterivHP", glImageTransformParameterivHP == NULL);
+}
+
+#endif /* GL_HP_image_transform */
+
+#ifdef GL_HP_occlusion_test
+
+static void _glewInfo_GL_HP_occlusion_test (void)
+{
+ glewPrintExt("GL_HP_occlusion_test", GLEW_HP_occlusion_test, glewIsSupported("GL_HP_occlusion_test"), glewGetExtension("GL_HP_occlusion_test"));
+}
+
+#endif /* GL_HP_occlusion_test */
+
+#ifdef GL_HP_texture_lighting
+
+static void _glewInfo_GL_HP_texture_lighting (void)
+{
+ glewPrintExt("GL_HP_texture_lighting", GLEW_HP_texture_lighting, glewIsSupported("GL_HP_texture_lighting"), glewGetExtension("GL_HP_texture_lighting"));
+}
+
+#endif /* GL_HP_texture_lighting */
+
+#ifdef GL_IBM_cull_vertex
+
+static void _glewInfo_GL_IBM_cull_vertex (void)
+{
+ glewPrintExt("GL_IBM_cull_vertex", GLEW_IBM_cull_vertex, glewIsSupported("GL_IBM_cull_vertex"), glewGetExtension("GL_IBM_cull_vertex"));
+}
+
+#endif /* GL_IBM_cull_vertex */
+
+#ifdef GL_IBM_multimode_draw_arrays
+
+static void _glewInfo_GL_IBM_multimode_draw_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_IBM_multimode_draw_arrays", GLEW_IBM_multimode_draw_arrays, glewIsSupported("GL_IBM_multimode_draw_arrays"), glewGetExtension("GL_IBM_multimode_draw_arrays"));
+
+ glewInfoFunc(fi, "glMultiModeDrawArraysIBM", glMultiModeDrawArraysIBM == NULL);
+ glewInfoFunc(fi, "glMultiModeDrawElementsIBM", glMultiModeDrawElementsIBM == NULL);
+}
+
+#endif /* GL_IBM_multimode_draw_arrays */
+
+#ifdef GL_IBM_rasterpos_clip
+
+static void _glewInfo_GL_IBM_rasterpos_clip (void)
+{
+ glewPrintExt("GL_IBM_rasterpos_clip", GLEW_IBM_rasterpos_clip, glewIsSupported("GL_IBM_rasterpos_clip"), glewGetExtension("GL_IBM_rasterpos_clip"));
+}
+
+#endif /* GL_IBM_rasterpos_clip */
+
+#ifdef GL_IBM_static_data
+
+static void _glewInfo_GL_IBM_static_data (void)
+{
+ glewPrintExt("GL_IBM_static_data", GLEW_IBM_static_data, glewIsSupported("GL_IBM_static_data"), glewGetExtension("GL_IBM_static_data"));
+}
+
+#endif /* GL_IBM_static_data */
+
+#ifdef GL_IBM_texture_mirrored_repeat
+
+static void _glewInfo_GL_IBM_texture_mirrored_repeat (void)
+{
+ glewPrintExt("GL_IBM_texture_mirrored_repeat", GLEW_IBM_texture_mirrored_repeat, glewIsSupported("GL_IBM_texture_mirrored_repeat"), glewGetExtension("GL_IBM_texture_mirrored_repeat"));
+}
+
+#endif /* GL_IBM_texture_mirrored_repeat */
+
+#ifdef GL_IBM_vertex_array_lists
+
+static void _glewInfo_GL_IBM_vertex_array_lists (void)
+{
+ GLboolean fi = glewPrintExt("GL_IBM_vertex_array_lists", GLEW_IBM_vertex_array_lists, glewIsSupported("GL_IBM_vertex_array_lists"), glewGetExtension("GL_IBM_vertex_array_lists"));
+
+ glewInfoFunc(fi, "glColorPointerListIBM", glColorPointerListIBM == NULL);
+ glewInfoFunc(fi, "glEdgeFlagPointerListIBM", glEdgeFlagPointerListIBM == NULL);
+ glewInfoFunc(fi, "glFogCoordPointerListIBM", glFogCoordPointerListIBM == NULL);
+ glewInfoFunc(fi, "glIndexPointerListIBM", glIndexPointerListIBM == NULL);
+ glewInfoFunc(fi, "glNormalPointerListIBM", glNormalPointerListIBM == NULL);
+ glewInfoFunc(fi, "glSecondaryColorPointerListIBM", glSecondaryColorPointerListIBM == NULL);
+ glewInfoFunc(fi, "glTexCoordPointerListIBM", glTexCoordPointerListIBM == NULL);
+ glewInfoFunc(fi, "glVertexPointerListIBM", glVertexPointerListIBM == NULL);
+}
+
+#endif /* GL_IBM_vertex_array_lists */
+
+#ifdef GL_IMG_bindless_texture
+
+static void _glewInfo_GL_IMG_bindless_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_IMG_bindless_texture", GLEW_IMG_bindless_texture, glewIsSupported("GL_IMG_bindless_texture"), glewGetExtension("GL_IMG_bindless_texture"));
+
+ glewInfoFunc(fi, "glGetTextureHandleIMG", glGetTextureHandleIMG == NULL);
+ glewInfoFunc(fi, "glGetTextureSamplerHandleIMG", glGetTextureSamplerHandleIMG == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64IMG", glProgramUniformHandleui64IMG == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64vIMG", glProgramUniformHandleui64vIMG == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64IMG", glUniformHandleui64IMG == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64vIMG", glUniformHandleui64vIMG == NULL);
+}
+
+#endif /* GL_IMG_bindless_texture */
+
+#ifdef GL_IMG_framebuffer_downsample
+
+static void _glewInfo_GL_IMG_framebuffer_downsample (void)
+{
+ GLboolean fi = glewPrintExt("GL_IMG_framebuffer_downsample", GLEW_IMG_framebuffer_downsample, glewIsSupported("GL_IMG_framebuffer_downsample"), glewGetExtension("GL_IMG_framebuffer_downsample"));
+
+ glewInfoFunc(fi, "glFramebufferTexture2DDownsampleIMG", glFramebufferTexture2DDownsampleIMG == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureLayerDownsampleIMG", glFramebufferTextureLayerDownsampleIMG == NULL);
+}
+
+#endif /* GL_IMG_framebuffer_downsample */
+
+#ifdef GL_IMG_multisampled_render_to_texture
+
+static void _glewInfo_GL_IMG_multisampled_render_to_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_IMG_multisampled_render_to_texture", GLEW_IMG_multisampled_render_to_texture, glewIsSupported("GL_IMG_multisampled_render_to_texture"), glewGetExtension("GL_IMG_multisampled_render_to_texture"));
+
+ glewInfoFunc(fi, "glFramebufferTexture2DMultisampleIMG", glFramebufferTexture2DMultisampleIMG == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleIMG", glRenderbufferStorageMultisampleIMG == NULL);
+}
+
+#endif /* GL_IMG_multisampled_render_to_texture */
+
+#ifdef GL_IMG_program_binary
+
+static void _glewInfo_GL_IMG_program_binary (void)
+{
+ glewPrintExt("GL_IMG_program_binary", GLEW_IMG_program_binary, glewIsSupported("GL_IMG_program_binary"), glewGetExtension("GL_IMG_program_binary"));
+}
+
+#endif /* GL_IMG_program_binary */
+
+#ifdef GL_IMG_read_format
+
+static void _glewInfo_GL_IMG_read_format (void)
+{
+ glewPrintExt("GL_IMG_read_format", GLEW_IMG_read_format, glewIsSupported("GL_IMG_read_format"), glewGetExtension("GL_IMG_read_format"));
+}
+
+#endif /* GL_IMG_read_format */
+
+#ifdef GL_IMG_shader_binary
+
+static void _glewInfo_GL_IMG_shader_binary (void)
+{
+ glewPrintExt("GL_IMG_shader_binary", GLEW_IMG_shader_binary, glewIsSupported("GL_IMG_shader_binary"), glewGetExtension("GL_IMG_shader_binary"));
+}
+
+#endif /* GL_IMG_shader_binary */
+
+#ifdef GL_IMG_texture_compression_pvrtc
+
+static void _glewInfo_GL_IMG_texture_compression_pvrtc (void)
+{
+ glewPrintExt("GL_IMG_texture_compression_pvrtc", GLEW_IMG_texture_compression_pvrtc, glewIsSupported("GL_IMG_texture_compression_pvrtc"), glewGetExtension("GL_IMG_texture_compression_pvrtc"));
+}
+
+#endif /* GL_IMG_texture_compression_pvrtc */
+
+#ifdef GL_IMG_texture_compression_pvrtc2
+
+static void _glewInfo_GL_IMG_texture_compression_pvrtc2 (void)
+{
+ glewPrintExt("GL_IMG_texture_compression_pvrtc2", GLEW_IMG_texture_compression_pvrtc2, glewIsSupported("GL_IMG_texture_compression_pvrtc2"), glewGetExtension("GL_IMG_texture_compression_pvrtc2"));
+}
+
+#endif /* GL_IMG_texture_compression_pvrtc2 */
+
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+
+static void _glewInfo_GL_IMG_texture_env_enhanced_fixed_function (void)
+{
+ glewPrintExt("GL_IMG_texture_env_enhanced_fixed_function", GLEW_IMG_texture_env_enhanced_fixed_function, glewIsSupported("GL_IMG_texture_env_enhanced_fixed_function"), glewGetExtension("GL_IMG_texture_env_enhanced_fixed_function"));
+}
+
+#endif /* GL_IMG_texture_env_enhanced_fixed_function */
+
+#ifdef GL_IMG_texture_filter_cubic
+
+static void _glewInfo_GL_IMG_texture_filter_cubic (void)
+{
+ glewPrintExt("GL_IMG_texture_filter_cubic", GLEW_IMG_texture_filter_cubic, glewIsSupported("GL_IMG_texture_filter_cubic"), glewGetExtension("GL_IMG_texture_filter_cubic"));
+}
+
+#endif /* GL_IMG_texture_filter_cubic */
+
+#ifdef GL_IMG_tile_region_protection
+
+static void _glewInfo_GL_IMG_tile_region_protection (void)
+{
+ glewPrintExt("GL_IMG_tile_region_protection", GLEW_IMG_tile_region_protection, glewIsSupported("GL_IMG_tile_region_protection"), glewGetExtension("GL_IMG_tile_region_protection"));
+}
+
+#endif /* GL_IMG_tile_region_protection */
+
+#ifdef GL_INGR_color_clamp
+
+static void _glewInfo_GL_INGR_color_clamp (void)
+{
+ glewPrintExt("GL_INGR_color_clamp", GLEW_INGR_color_clamp, glewIsSupported("GL_INGR_color_clamp"), glewGetExtension("GL_INGR_color_clamp"));
+}
+
+#endif /* GL_INGR_color_clamp */
+
+#ifdef GL_INGR_interlace_read
+
+static void _glewInfo_GL_INGR_interlace_read (void)
+{
+ glewPrintExt("GL_INGR_interlace_read", GLEW_INGR_interlace_read, glewIsSupported("GL_INGR_interlace_read"), glewGetExtension("GL_INGR_interlace_read"));
+}
+
+#endif /* GL_INGR_interlace_read */
+
+#ifdef GL_INTEL_blackhole_render
+
+static void _glewInfo_GL_INTEL_blackhole_render (void)
+{
+ glewPrintExt("GL_INTEL_blackhole_render", GLEW_INTEL_blackhole_render, glewIsSupported("GL_INTEL_blackhole_render"), glewGetExtension("GL_INTEL_blackhole_render"));
+}
+
+#endif /* GL_INTEL_blackhole_render */
+
+#ifdef GL_INTEL_conservative_rasterization
+
+static void _glewInfo_GL_INTEL_conservative_rasterization (void)
+{
+ glewPrintExt("GL_INTEL_conservative_rasterization", GLEW_INTEL_conservative_rasterization, glewIsSupported("GL_INTEL_conservative_rasterization"), glewGetExtension("GL_INTEL_conservative_rasterization"));
+}
+
+#endif /* GL_INTEL_conservative_rasterization */
+
+#ifdef GL_INTEL_fragment_shader_ordering
+
+static void _glewInfo_GL_INTEL_fragment_shader_ordering (void)
+{
+ glewPrintExt("GL_INTEL_fragment_shader_ordering", GLEW_INTEL_fragment_shader_ordering, glewIsSupported("GL_INTEL_fragment_shader_ordering"), glewGetExtension("GL_INTEL_fragment_shader_ordering"));
+}
+
+#endif /* GL_INTEL_fragment_shader_ordering */
+
+#ifdef GL_INTEL_framebuffer_CMAA
+
+static void _glewInfo_GL_INTEL_framebuffer_CMAA (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_framebuffer_CMAA", GLEW_INTEL_framebuffer_CMAA, glewIsSupported("GL_INTEL_framebuffer_CMAA"), glewGetExtension("GL_INTEL_framebuffer_CMAA"));
+
+ glewInfoFunc(fi, "glApplyFramebufferAttachmentCMAAINTEL", glApplyFramebufferAttachmentCMAAINTEL == NULL);
+}
+
+#endif /* GL_INTEL_framebuffer_CMAA */
+
+#ifdef GL_INTEL_map_texture
+
+static void _glewInfo_GL_INTEL_map_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_map_texture", GLEW_INTEL_map_texture, glewIsSupported("GL_INTEL_map_texture"), glewGetExtension("GL_INTEL_map_texture"));
+
+ glewInfoFunc(fi, "glMapTexture2DINTEL", glMapTexture2DINTEL == NULL);
+ glewInfoFunc(fi, "glSyncTextureINTEL", glSyncTextureINTEL == NULL);
+ glewInfoFunc(fi, "glUnmapTexture2DINTEL", glUnmapTexture2DINTEL == NULL);
+}
+
+#endif /* GL_INTEL_map_texture */
+
+#ifdef GL_INTEL_parallel_arrays
+
+static void _glewInfo_GL_INTEL_parallel_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_parallel_arrays", GLEW_INTEL_parallel_arrays, glewIsSupported("GL_INTEL_parallel_arrays"), glewGetExtension("GL_INTEL_parallel_arrays"));
+
+ glewInfoFunc(fi, "glColorPointervINTEL", glColorPointervINTEL == NULL);
+ glewInfoFunc(fi, "glNormalPointervINTEL", glNormalPointervINTEL == NULL);
+ glewInfoFunc(fi, "glTexCoordPointervINTEL", glTexCoordPointervINTEL == NULL);
+ glewInfoFunc(fi, "glVertexPointervINTEL", glVertexPointervINTEL == NULL);
+}
+
+#endif /* GL_INTEL_parallel_arrays */
+
+#ifdef GL_INTEL_performance_query
+
+static void _glewInfo_GL_INTEL_performance_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_performance_query", GLEW_INTEL_performance_query, glewIsSupported("GL_INTEL_performance_query"), glewGetExtension("GL_INTEL_performance_query"));
+
+ glewInfoFunc(fi, "glBeginPerfQueryINTEL", glBeginPerfQueryINTEL == NULL);
+ glewInfoFunc(fi, "glCreatePerfQueryINTEL", glCreatePerfQueryINTEL == NULL);
+ glewInfoFunc(fi, "glDeletePerfQueryINTEL", glDeletePerfQueryINTEL == NULL);
+ glewInfoFunc(fi, "glEndPerfQueryINTEL", glEndPerfQueryINTEL == NULL);
+ glewInfoFunc(fi, "glGetFirstPerfQueryIdINTEL", glGetFirstPerfQueryIdINTEL == NULL);
+ glewInfoFunc(fi, "glGetNextPerfQueryIdINTEL", glGetNextPerfQueryIdINTEL == NULL);
+ glewInfoFunc(fi, "glGetPerfCounterInfoINTEL", glGetPerfCounterInfoINTEL == NULL);
+ glewInfoFunc(fi, "glGetPerfQueryDataINTEL", glGetPerfQueryDataINTEL == NULL);
+ glewInfoFunc(fi, "glGetPerfQueryIdByNameINTEL", glGetPerfQueryIdByNameINTEL == NULL);
+ glewInfoFunc(fi, "glGetPerfQueryInfoINTEL", glGetPerfQueryInfoINTEL == NULL);
+}
+
+#endif /* GL_INTEL_performance_query */
+
+#ifdef GL_INTEL_shader_integer_functions2
+
+static void _glewInfo_GL_INTEL_shader_integer_functions2 (void)
+{
+ glewPrintExt("GL_INTEL_shader_integer_functions2", GLEW_INTEL_shader_integer_functions2, glewIsSupported("GL_INTEL_shader_integer_functions2"), glewGetExtension("GL_INTEL_shader_integer_functions2"));
+}
+
+#endif /* GL_INTEL_shader_integer_functions2 */
+
+#ifdef GL_INTEL_texture_scissor
+
+static void _glewInfo_GL_INTEL_texture_scissor (void)
+{
+ GLboolean fi = glewPrintExt("GL_INTEL_texture_scissor", GLEW_INTEL_texture_scissor, glewIsSupported("GL_INTEL_texture_scissor"), glewGetExtension("GL_INTEL_texture_scissor"));
+
+ glewInfoFunc(fi, "glTexScissorFuncINTEL", glTexScissorFuncINTEL == NULL);
+ glewInfoFunc(fi, "glTexScissorINTEL", glTexScissorINTEL == NULL);
+}
+
+#endif /* GL_INTEL_texture_scissor */
+
+#ifdef GL_KHR_blend_equation_advanced
+
+static void _glewInfo_GL_KHR_blend_equation_advanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_KHR_blend_equation_advanced", GLEW_KHR_blend_equation_advanced, glewIsSupported("GL_KHR_blend_equation_advanced"), glewGetExtension("GL_KHR_blend_equation_advanced"));
+
+ glewInfoFunc(fi, "glBlendBarrierKHR", glBlendBarrierKHR == NULL);
+}
+
+#endif /* GL_KHR_blend_equation_advanced */
+
+#ifdef GL_KHR_blend_equation_advanced_coherent
+
+static void _glewInfo_GL_KHR_blend_equation_advanced_coherent (void)
+{
+ glewPrintExt("GL_KHR_blend_equation_advanced_coherent", GLEW_KHR_blend_equation_advanced_coherent, glewIsSupported("GL_KHR_blend_equation_advanced_coherent"), glewGetExtension("GL_KHR_blend_equation_advanced_coherent"));
+}
+
+#endif /* GL_KHR_blend_equation_advanced_coherent */
+
+#ifdef GL_KHR_context_flush_control
+
+static void _glewInfo_GL_KHR_context_flush_control (void)
+{
+ glewPrintExt("GL_KHR_context_flush_control", GLEW_KHR_context_flush_control, glewIsSupported("GL_KHR_context_flush_control"), glewGetExtension("GL_KHR_context_flush_control"));
+}
+
+#endif /* GL_KHR_context_flush_control */
+
+#ifdef GL_KHR_debug
+
+static void _glewInfo_GL_KHR_debug (void)
+{
+ GLboolean fi = glewPrintExt("GL_KHR_debug", GLEW_KHR_debug, glewIsSupported("GL_KHR_debug"), glewGetExtension("GL_KHR_debug"));
+
+ glewInfoFunc(fi, "glDebugMessageCallback", glDebugMessageCallback == NULL);
+ glewInfoFunc(fi, "glDebugMessageControl", glDebugMessageControl == NULL);
+ glewInfoFunc(fi, "glDebugMessageInsert", glDebugMessageInsert == NULL);
+ glewInfoFunc(fi, "glGetDebugMessageLog", glGetDebugMessageLog == NULL);
+ glewInfoFunc(fi, "glGetObjectLabel", glGetObjectLabel == NULL);
+ glewInfoFunc(fi, "glGetObjectPtrLabel", glGetObjectPtrLabel == NULL);
+ glewInfoFunc(fi, "glObjectLabel", glObjectLabel == NULL);
+ glewInfoFunc(fi, "glObjectPtrLabel", glObjectPtrLabel == NULL);
+ glewInfoFunc(fi, "glPopDebugGroup", glPopDebugGroup == NULL);
+ glewInfoFunc(fi, "glPushDebugGroup", glPushDebugGroup == NULL);
+}
+
+#endif /* GL_KHR_debug */
+
+#ifdef GL_KHR_no_error
+
+static void _glewInfo_GL_KHR_no_error (void)
+{
+ glewPrintExt("GL_KHR_no_error", GLEW_KHR_no_error, glewIsSupported("GL_KHR_no_error"), glewGetExtension("GL_KHR_no_error"));
+}
+
+#endif /* GL_KHR_no_error */
+
+#ifdef GL_KHR_parallel_shader_compile
+
+static void _glewInfo_GL_KHR_parallel_shader_compile (void)
+{
+ GLboolean fi = glewPrintExt("GL_KHR_parallel_shader_compile", GLEW_KHR_parallel_shader_compile, glewIsSupported("GL_KHR_parallel_shader_compile"), glewGetExtension("GL_KHR_parallel_shader_compile"));
+
+ glewInfoFunc(fi, "glMaxShaderCompilerThreadsKHR", glMaxShaderCompilerThreadsKHR == NULL);
+}
+
+#endif /* GL_KHR_parallel_shader_compile */
+
+#ifdef GL_KHR_robust_buffer_access_behavior
+
+static void _glewInfo_GL_KHR_robust_buffer_access_behavior (void)
+{
+ glewPrintExt("GL_KHR_robust_buffer_access_behavior", GLEW_KHR_robust_buffer_access_behavior, glewIsSupported("GL_KHR_robust_buffer_access_behavior"), glewGetExtension("GL_KHR_robust_buffer_access_behavior"));
+}
+
+#endif /* GL_KHR_robust_buffer_access_behavior */
+
+#ifdef GL_KHR_robustness
+
+static void _glewInfo_GL_KHR_robustness (void)
+{
+ GLboolean fi = glewPrintExt("GL_KHR_robustness", GLEW_KHR_robustness, glewIsSupported("GL_KHR_robustness"), glewGetExtension("GL_KHR_robustness"));
+
+ glewInfoFunc(fi, "glGetnUniformfv", glGetnUniformfv == NULL);
+ glewInfoFunc(fi, "glGetnUniformiv", glGetnUniformiv == NULL);
+ glewInfoFunc(fi, "glGetnUniformuiv", glGetnUniformuiv == NULL);
+ glewInfoFunc(fi, "glReadnPixels", glReadnPixels == NULL);
+}
+
+#endif /* GL_KHR_robustness */
+
+#ifdef GL_KHR_shader_subgroup
+
+static void _glewInfo_GL_KHR_shader_subgroup (void)
+{
+ glewPrintExt("GL_KHR_shader_subgroup", GLEW_KHR_shader_subgroup, glewIsSupported("GL_KHR_shader_subgroup"), glewGetExtension("GL_KHR_shader_subgroup"));
+}
+
+#endif /* GL_KHR_shader_subgroup */
+
+#ifdef GL_KHR_texture_compression_astc_hdr
+
+static void _glewInfo_GL_KHR_texture_compression_astc_hdr (void)
+{
+ glewPrintExt("GL_KHR_texture_compression_astc_hdr", GLEW_KHR_texture_compression_astc_hdr, glewIsSupported("GL_KHR_texture_compression_astc_hdr"), glewGetExtension("GL_KHR_texture_compression_astc_hdr"));
+}
+
+#endif /* GL_KHR_texture_compression_astc_hdr */
+
+#ifdef GL_KHR_texture_compression_astc_ldr
+
+static void _glewInfo_GL_KHR_texture_compression_astc_ldr (void)
+{
+ glewPrintExt("GL_KHR_texture_compression_astc_ldr", GLEW_KHR_texture_compression_astc_ldr, glewIsSupported("GL_KHR_texture_compression_astc_ldr"), glewGetExtension("GL_KHR_texture_compression_astc_ldr"));
+}
+
+#endif /* GL_KHR_texture_compression_astc_ldr */
+
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+
+static void _glewInfo_GL_KHR_texture_compression_astc_sliced_3d (void)
+{
+ glewPrintExt("GL_KHR_texture_compression_astc_sliced_3d", GLEW_KHR_texture_compression_astc_sliced_3d, glewIsSupported("GL_KHR_texture_compression_astc_sliced_3d"), glewGetExtension("GL_KHR_texture_compression_astc_sliced_3d"));
+}
+
+#endif /* GL_KHR_texture_compression_astc_sliced_3d */
+
+#ifdef GL_KTX_buffer_region
+
+static void _glewInfo_GL_KTX_buffer_region (void)
+{
+ GLboolean fi = glewPrintExt("GL_KTX_buffer_region", GLEW_KTX_buffer_region, glewIsSupported("GL_KTX_buffer_region"), glewGetExtension("GL_KTX_buffer_region"));
+
+ glewInfoFunc(fi, "glBufferRegionEnabled", glBufferRegionEnabled == NULL);
+ glewInfoFunc(fi, "glDeleteBufferRegion", glDeleteBufferRegion == NULL);
+ glewInfoFunc(fi, "glDrawBufferRegion", glDrawBufferRegion == NULL);
+ glewInfoFunc(fi, "glNewBufferRegion", glNewBufferRegion == NULL);
+ glewInfoFunc(fi, "glReadBufferRegion", glReadBufferRegion == NULL);
+}
+
+#endif /* GL_KTX_buffer_region */
+
+#ifdef GL_MESAX_texture_stack
+
+static void _glewInfo_GL_MESAX_texture_stack (void)
+{
+ glewPrintExt("GL_MESAX_texture_stack", GLEW_MESAX_texture_stack, glewIsSupported("GL_MESAX_texture_stack"), glewGetExtension("GL_MESAX_texture_stack"));
+}
+
+#endif /* GL_MESAX_texture_stack */
+
+#ifdef GL_MESA_bgra
+
+static void _glewInfo_GL_MESA_bgra (void)
+{
+ glewPrintExt("GL_MESA_bgra", GLEW_MESA_bgra, glewIsSupported("GL_MESA_bgra"), glewGetExtension("GL_MESA_bgra"));
+}
+
+#endif /* GL_MESA_bgra */
+
+#ifdef GL_MESA_framebuffer_flip_x
+
+static void _glewInfo_GL_MESA_framebuffer_flip_x (void)
+{
+ glewPrintExt("GL_MESA_framebuffer_flip_x", GLEW_MESA_framebuffer_flip_x, glewIsSupported("GL_MESA_framebuffer_flip_x"), glewGetExtension("GL_MESA_framebuffer_flip_x"));
+}
+
+#endif /* GL_MESA_framebuffer_flip_x */
+
+#ifdef GL_MESA_framebuffer_flip_y
+
+static void _glewInfo_GL_MESA_framebuffer_flip_y (void)
+{
+ GLboolean fi = glewPrintExt("GL_MESA_framebuffer_flip_y", GLEW_MESA_framebuffer_flip_y, glewIsSupported("GL_MESA_framebuffer_flip_y"), glewGetExtension("GL_MESA_framebuffer_flip_y"));
+
+ glewInfoFunc(fi, "glFramebufferParameteriMESA", glFramebufferParameteriMESA == NULL);
+ glewInfoFunc(fi, "glGetFramebufferParameterivMESA", glGetFramebufferParameterivMESA == NULL);
+}
+
+#endif /* GL_MESA_framebuffer_flip_y */
+
+#ifdef GL_MESA_framebuffer_swap_xy
+
+static void _glewInfo_GL_MESA_framebuffer_swap_xy (void)
+{
+ glewPrintExt("GL_MESA_framebuffer_swap_xy", GLEW_MESA_framebuffer_swap_xy, glewIsSupported("GL_MESA_framebuffer_swap_xy"), glewGetExtension("GL_MESA_framebuffer_swap_xy"));
+}
+
+#endif /* GL_MESA_framebuffer_swap_xy */
+
+#ifdef GL_MESA_pack_invert
+
+static void _glewInfo_GL_MESA_pack_invert (void)
+{
+ glewPrintExt("GL_MESA_pack_invert", GLEW_MESA_pack_invert, glewIsSupported("GL_MESA_pack_invert"), glewGetExtension("GL_MESA_pack_invert"));
+}
+
+#endif /* GL_MESA_pack_invert */
+
+#ifdef GL_MESA_program_binary_formats
+
+static void _glewInfo_GL_MESA_program_binary_formats (void)
+{
+ glewPrintExt("GL_MESA_program_binary_formats", GLEW_MESA_program_binary_formats, glewIsSupported("GL_MESA_program_binary_formats"), glewGetExtension("GL_MESA_program_binary_formats"));
+}
+
+#endif /* GL_MESA_program_binary_formats */
+
+#ifdef GL_MESA_resize_buffers
+
+static void _glewInfo_GL_MESA_resize_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_MESA_resize_buffers", GLEW_MESA_resize_buffers, glewIsSupported("GL_MESA_resize_buffers"), glewGetExtension("GL_MESA_resize_buffers"));
+
+ glewInfoFunc(fi, "glResizeBuffersMESA", glResizeBuffersMESA == NULL);
+}
+
+#endif /* GL_MESA_resize_buffers */
+
+#ifdef GL_MESA_shader_integer_functions
+
+static void _glewInfo_GL_MESA_shader_integer_functions (void)
+{
+ glewPrintExt("GL_MESA_shader_integer_functions", GLEW_MESA_shader_integer_functions, glewIsSupported("GL_MESA_shader_integer_functions"), glewGetExtension("GL_MESA_shader_integer_functions"));
+}
+
+#endif /* GL_MESA_shader_integer_functions */
+
+#ifdef GL_MESA_tile_raster_order
+
+static void _glewInfo_GL_MESA_tile_raster_order (void)
+{
+ glewPrintExt("GL_MESA_tile_raster_order", GLEW_MESA_tile_raster_order, glewIsSupported("GL_MESA_tile_raster_order"), glewGetExtension("GL_MESA_tile_raster_order"));
+}
+
+#endif /* GL_MESA_tile_raster_order */
+
+#ifdef GL_MESA_window_pos
+
+static void _glewInfo_GL_MESA_window_pos (void)
+{
+ GLboolean fi = glewPrintExt("GL_MESA_window_pos", GLEW_MESA_window_pos, glewIsSupported("GL_MESA_window_pos"), glewGetExtension("GL_MESA_window_pos"));
+
+ glewInfoFunc(fi, "glWindowPos2dMESA", glWindowPos2dMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2dvMESA", glWindowPos2dvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2fMESA", glWindowPos2fMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2fvMESA", glWindowPos2fvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2iMESA", glWindowPos2iMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2ivMESA", glWindowPos2ivMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2sMESA", glWindowPos2sMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos2svMESA", glWindowPos2svMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3dMESA", glWindowPos3dMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3dvMESA", glWindowPos3dvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3fMESA", glWindowPos3fMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3fvMESA", glWindowPos3fvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3iMESA", glWindowPos3iMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3ivMESA", glWindowPos3ivMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3sMESA", glWindowPos3sMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos3svMESA", glWindowPos3svMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4dMESA", glWindowPos4dMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4dvMESA", glWindowPos4dvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4fMESA", glWindowPos4fMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4fvMESA", glWindowPos4fvMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4iMESA", glWindowPos4iMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4ivMESA", glWindowPos4ivMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4sMESA", glWindowPos4sMESA == NULL);
+ glewInfoFunc(fi, "glWindowPos4svMESA", glWindowPos4svMESA == NULL);
+}
+
+#endif /* GL_MESA_window_pos */
+
+#ifdef GL_MESA_ycbcr_texture
+
+static void _glewInfo_GL_MESA_ycbcr_texture (void)
+{
+ glewPrintExt("GL_MESA_ycbcr_texture", GLEW_MESA_ycbcr_texture, glewIsSupported("GL_MESA_ycbcr_texture"), glewGetExtension("GL_MESA_ycbcr_texture"));
+}
+
+#endif /* GL_MESA_ycbcr_texture */
+
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+
+static void _glewInfo_GL_NVX_blend_equation_advanced_multi_draw_buffers (void)
+{
+ glewPrintExt("GL_NVX_blend_equation_advanced_multi_draw_buffers", GLEW_NVX_blend_equation_advanced_multi_draw_buffers, glewIsSupported("GL_NVX_blend_equation_advanced_multi_draw_buffers"), glewGetExtension("GL_NVX_blend_equation_advanced_multi_draw_buffers"));
+}
+
+#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */
+
+#ifdef GL_NVX_conditional_render
+
+static void _glewInfo_GL_NVX_conditional_render (void)
+{
+ GLboolean fi = glewPrintExt("GL_NVX_conditional_render", GLEW_NVX_conditional_render, glewIsSupported("GL_NVX_conditional_render"), glewGetExtension("GL_NVX_conditional_render"));
+
+ glewInfoFunc(fi, "glBeginConditionalRenderNVX", glBeginConditionalRenderNVX == NULL);
+ glewInfoFunc(fi, "glEndConditionalRenderNVX", glEndConditionalRenderNVX == NULL);
+}
+
+#endif /* GL_NVX_conditional_render */
+
+#ifdef GL_NVX_gpu_memory_info
+
+static void _glewInfo_GL_NVX_gpu_memory_info (void)
+{
+ glewPrintExt("GL_NVX_gpu_memory_info", GLEW_NVX_gpu_memory_info, glewIsSupported("GL_NVX_gpu_memory_info"), glewGetExtension("GL_NVX_gpu_memory_info"));
+}
+
+#endif /* GL_NVX_gpu_memory_info */
+
+#ifdef GL_NVX_gpu_multicast2
+
+static void _glewInfo_GL_NVX_gpu_multicast2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NVX_gpu_multicast2", GLEW_NVX_gpu_multicast2, glewIsSupported("GL_NVX_gpu_multicast2"), glewGetExtension("GL_NVX_gpu_multicast2"));
+
+ glewInfoFunc(fi, "glAsyncCopyBufferSubDataNVX", glAsyncCopyBufferSubDataNVX == NULL);
+ glewInfoFunc(fi, "glAsyncCopyImageSubDataNVX", glAsyncCopyImageSubDataNVX == NULL);
+ glewInfoFunc(fi, "glMulticastScissorArrayvNVX", glMulticastScissorArrayvNVX == NULL);
+ glewInfoFunc(fi, "glMulticastViewportArrayvNVX", glMulticastViewportArrayvNVX == NULL);
+ glewInfoFunc(fi, "glMulticastViewportPositionWScaleNVX", glMulticastViewportPositionWScaleNVX == NULL);
+ glewInfoFunc(fi, "glUploadGpuMaskNVX", glUploadGpuMaskNVX == NULL);
+}
+
+#endif /* GL_NVX_gpu_multicast2 */
+
+#ifdef GL_NVX_linked_gpu_multicast
+
+static void _glewInfo_GL_NVX_linked_gpu_multicast (void)
+{
+ GLboolean fi = glewPrintExt("GL_NVX_linked_gpu_multicast", GLEW_NVX_linked_gpu_multicast, glewIsSupported("GL_NVX_linked_gpu_multicast"), glewGetExtension("GL_NVX_linked_gpu_multicast"));
+
+ glewInfoFunc(fi, "glLGPUCopyImageSubDataNVX", glLGPUCopyImageSubDataNVX == NULL);
+ glewInfoFunc(fi, "glLGPUInterlockNVX", glLGPUInterlockNVX == NULL);
+ glewInfoFunc(fi, "glLGPUNamedBufferSubDataNVX", glLGPUNamedBufferSubDataNVX == NULL);
+}
+
+#endif /* GL_NVX_linked_gpu_multicast */
+
+#ifdef GL_NVX_progress_fence
+
+static void _glewInfo_GL_NVX_progress_fence (void)
+{
+ GLboolean fi = glewPrintExt("GL_NVX_progress_fence", GLEW_NVX_progress_fence, glewIsSupported("GL_NVX_progress_fence"), glewGetExtension("GL_NVX_progress_fence"));
+
+ glewInfoFunc(fi, "glClientWaitSemaphoreui64NVX", glClientWaitSemaphoreui64NVX == NULL);
+ glewInfoFunc(fi, "glCreateProgressFenceNVX", glCreateProgressFenceNVX == NULL);
+ glewInfoFunc(fi, "glSignalSemaphoreui64NVX", glSignalSemaphoreui64NVX == NULL);
+ glewInfoFunc(fi, "glWaitSemaphoreui64NVX", glWaitSemaphoreui64NVX == NULL);
+}
+
+#endif /* GL_NVX_progress_fence */
+
+#ifdef GL_NV_3dvision_settings
+
+static void _glewInfo_GL_NV_3dvision_settings (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_3dvision_settings", GLEW_NV_3dvision_settings, glewIsSupported("GL_NV_3dvision_settings"), glewGetExtension("GL_NV_3dvision_settings"));
+
+ glewInfoFunc(fi, "glStereoParameterfNV", glStereoParameterfNV == NULL);
+ glewInfoFunc(fi, "glStereoParameteriNV", glStereoParameteriNV == NULL);
+}
+
+#endif /* GL_NV_3dvision_settings */
+
+#ifdef GL_NV_EGL_stream_consumer_external
+
+static void _glewInfo_GL_NV_EGL_stream_consumer_external (void)
+{
+ glewPrintExt("GL_NV_EGL_stream_consumer_external", GLEW_NV_EGL_stream_consumer_external, glewIsSupported("GL_NV_EGL_stream_consumer_external"), glewGetExtension("GL_NV_EGL_stream_consumer_external"));
+}
+
+#endif /* GL_NV_EGL_stream_consumer_external */
+
+#ifdef GL_NV_alpha_to_coverage_dither_control
+
+static void _glewInfo_GL_NV_alpha_to_coverage_dither_control (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_alpha_to_coverage_dither_control", GLEW_NV_alpha_to_coverage_dither_control, glewIsSupported("GL_NV_alpha_to_coverage_dither_control"), glewGetExtension("GL_NV_alpha_to_coverage_dither_control"));
+
+ glewInfoFunc(fi, "glAlphaToCoverageDitherControlNV", glAlphaToCoverageDitherControlNV == NULL);
+}
+
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+
+#ifdef GL_NV_bgr
+
+static void _glewInfo_GL_NV_bgr (void)
+{
+ glewPrintExt("GL_NV_bgr", GLEW_NV_bgr, glewIsSupported("GL_NV_bgr"), glewGetExtension("GL_NV_bgr"));
+}
+
+#endif /* GL_NV_bgr */
+
+#ifdef GL_NV_bindless_multi_draw_indirect
+
+static void _glewInfo_GL_NV_bindless_multi_draw_indirect (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_bindless_multi_draw_indirect", GLEW_NV_bindless_multi_draw_indirect, glewIsSupported("GL_NV_bindless_multi_draw_indirect"), glewGetExtension("GL_NV_bindless_multi_draw_indirect"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectBindlessNV", glMultiDrawArraysIndirectBindlessNV == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectBindlessNV", glMultiDrawElementsIndirectBindlessNV == NULL);
+}
+
+#endif /* GL_NV_bindless_multi_draw_indirect */
+
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+
+static void _glewInfo_GL_NV_bindless_multi_draw_indirect_count (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_bindless_multi_draw_indirect_count", GLEW_NV_bindless_multi_draw_indirect_count, glewIsSupported("GL_NV_bindless_multi_draw_indirect_count"), glewGetExtension("GL_NV_bindless_multi_draw_indirect_count"));
+
+ glewInfoFunc(fi, "glMultiDrawArraysIndirectBindlessCountNV", glMultiDrawArraysIndirectBindlessCountNV == NULL);
+ glewInfoFunc(fi, "glMultiDrawElementsIndirectBindlessCountNV", glMultiDrawElementsIndirectBindlessCountNV == NULL);
+}
+
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+
+#ifdef GL_NV_bindless_texture
+
+static void _glewInfo_GL_NV_bindless_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_bindless_texture", GLEW_NV_bindless_texture, glewIsSupported("GL_NV_bindless_texture"), glewGetExtension("GL_NV_bindless_texture"));
+
+ glewInfoFunc(fi, "glGetImageHandleNV", glGetImageHandleNV == NULL);
+ glewInfoFunc(fi, "glGetTextureHandleNV", glGetTextureHandleNV == NULL);
+ glewInfoFunc(fi, "glGetTextureSamplerHandleNV", glGetTextureSamplerHandleNV == NULL);
+ glewInfoFunc(fi, "glIsImageHandleResidentNV", glIsImageHandleResidentNV == NULL);
+ glewInfoFunc(fi, "glIsTextureHandleResidentNV", glIsTextureHandleResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeImageHandleNonResidentNV", glMakeImageHandleNonResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeImageHandleResidentNV", glMakeImageHandleResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeTextureHandleNonResidentNV", glMakeTextureHandleNonResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeTextureHandleResidentNV", glMakeTextureHandleResidentNV == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64NV", glProgramUniformHandleui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniformHandleui64vNV", glProgramUniformHandleui64vNV == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64NV", glUniformHandleui64NV == NULL);
+ glewInfoFunc(fi, "glUniformHandleui64vNV", glUniformHandleui64vNV == NULL);
+}
+
+#endif /* GL_NV_bindless_texture */
+
+#ifdef GL_NV_blend_equation_advanced
+
+static void _glewInfo_GL_NV_blend_equation_advanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_blend_equation_advanced", GLEW_NV_blend_equation_advanced, glewIsSupported("GL_NV_blend_equation_advanced"), glewGetExtension("GL_NV_blend_equation_advanced"));
+
+ glewInfoFunc(fi, "glBlendBarrierNV", glBlendBarrierNV == NULL);
+ glewInfoFunc(fi, "glBlendParameteriNV", glBlendParameteriNV == NULL);
+}
+
+#endif /* GL_NV_blend_equation_advanced */
+
+#ifdef GL_NV_blend_equation_advanced_coherent
+
+static void _glewInfo_GL_NV_blend_equation_advanced_coherent (void)
+{
+ glewPrintExt("GL_NV_blend_equation_advanced_coherent", GLEW_NV_blend_equation_advanced_coherent, glewIsSupported("GL_NV_blend_equation_advanced_coherent"), glewGetExtension("GL_NV_blend_equation_advanced_coherent"));
+}
+
+#endif /* GL_NV_blend_equation_advanced_coherent */
+
+#ifdef GL_NV_blend_minmax_factor
+
+static void _glewInfo_GL_NV_blend_minmax_factor (void)
+{
+ glewPrintExt("GL_NV_blend_minmax_factor", GLEW_NV_blend_minmax_factor, glewIsSupported("GL_NV_blend_minmax_factor"), glewGetExtension("GL_NV_blend_minmax_factor"));
+}
+
+#endif /* GL_NV_blend_minmax_factor */
+
+#ifdef GL_NV_blend_square
+
+static void _glewInfo_GL_NV_blend_square (void)
+{
+ glewPrintExt("GL_NV_blend_square", GLEW_NV_blend_square, glewIsSupported("GL_NV_blend_square"), glewGetExtension("GL_NV_blend_square"));
+}
+
+#endif /* GL_NV_blend_square */
+
+#ifdef GL_NV_clip_space_w_scaling
+
+static void _glewInfo_GL_NV_clip_space_w_scaling (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_clip_space_w_scaling", GLEW_NV_clip_space_w_scaling, glewIsSupported("GL_NV_clip_space_w_scaling"), glewGetExtension("GL_NV_clip_space_w_scaling"));
+
+ glewInfoFunc(fi, "glViewportPositionWScaleNV", glViewportPositionWScaleNV == NULL);
+}
+
+#endif /* GL_NV_clip_space_w_scaling */
+
+#ifdef GL_NV_command_list
+
+static void _glewInfo_GL_NV_command_list (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_command_list", GLEW_NV_command_list, glewIsSupported("GL_NV_command_list"), glewGetExtension("GL_NV_command_list"));
+
+ glewInfoFunc(fi, "glCallCommandListNV", glCallCommandListNV == NULL);
+ glewInfoFunc(fi, "glCommandListSegmentsNV", glCommandListSegmentsNV == NULL);
+ glewInfoFunc(fi, "glCompileCommandListNV", glCompileCommandListNV == NULL);
+ glewInfoFunc(fi, "glCreateCommandListsNV", glCreateCommandListsNV == NULL);
+ glewInfoFunc(fi, "glCreateStatesNV", glCreateStatesNV == NULL);
+ glewInfoFunc(fi, "glDeleteCommandListsNV", glDeleteCommandListsNV == NULL);
+ glewInfoFunc(fi, "glDeleteStatesNV", glDeleteStatesNV == NULL);
+ glewInfoFunc(fi, "glDrawCommandsAddressNV", glDrawCommandsAddressNV == NULL);
+ glewInfoFunc(fi, "glDrawCommandsNV", glDrawCommandsNV == NULL);
+ glewInfoFunc(fi, "glDrawCommandsStatesAddressNV", glDrawCommandsStatesAddressNV == NULL);
+ glewInfoFunc(fi, "glDrawCommandsStatesNV", glDrawCommandsStatesNV == NULL);
+ glewInfoFunc(fi, "glGetCommandHeaderNV", glGetCommandHeaderNV == NULL);
+ glewInfoFunc(fi, "glGetStageIndexNV", glGetStageIndexNV == NULL);
+ glewInfoFunc(fi, "glIsCommandListNV", glIsCommandListNV == NULL);
+ glewInfoFunc(fi, "glIsStateNV", glIsStateNV == NULL);
+ glewInfoFunc(fi, "glListDrawCommandsStatesClientNV", glListDrawCommandsStatesClientNV == NULL);
+ glewInfoFunc(fi, "glStateCaptureNV", glStateCaptureNV == NULL);
+}
+
+#endif /* GL_NV_command_list */
+
+#ifdef GL_NV_compute_program5
+
+static void _glewInfo_GL_NV_compute_program5 (void)
+{
+ glewPrintExt("GL_NV_compute_program5", GLEW_NV_compute_program5, glewIsSupported("GL_NV_compute_program5"), glewGetExtension("GL_NV_compute_program5"));
+}
+
+#endif /* GL_NV_compute_program5 */
+
+#ifdef GL_NV_compute_shader_derivatives
+
+static void _glewInfo_GL_NV_compute_shader_derivatives (void)
+{
+ glewPrintExt("GL_NV_compute_shader_derivatives", GLEW_NV_compute_shader_derivatives, glewIsSupported("GL_NV_compute_shader_derivatives"), glewGetExtension("GL_NV_compute_shader_derivatives"));
+}
+
+#endif /* GL_NV_compute_shader_derivatives */
+
+#ifdef GL_NV_conditional_render
+
+static void _glewInfo_GL_NV_conditional_render (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_conditional_render", GLEW_NV_conditional_render, glewIsSupported("GL_NV_conditional_render"), glewGetExtension("GL_NV_conditional_render"));
+
+ glewInfoFunc(fi, "glBeginConditionalRenderNV", glBeginConditionalRenderNV == NULL);
+ glewInfoFunc(fi, "glEndConditionalRenderNV", glEndConditionalRenderNV == NULL);
+}
+
+#endif /* GL_NV_conditional_render */
+
+#ifdef GL_NV_conservative_raster
+
+static void _glewInfo_GL_NV_conservative_raster (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_conservative_raster", GLEW_NV_conservative_raster, glewIsSupported("GL_NV_conservative_raster"), glewGetExtension("GL_NV_conservative_raster"));
+
+ glewInfoFunc(fi, "glSubpixelPrecisionBiasNV", glSubpixelPrecisionBiasNV == NULL);
+}
+
+#endif /* GL_NV_conservative_raster */
+
+#ifdef GL_NV_conservative_raster_dilate
+
+static void _glewInfo_GL_NV_conservative_raster_dilate (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_conservative_raster_dilate", GLEW_NV_conservative_raster_dilate, glewIsSupported("GL_NV_conservative_raster_dilate"), glewGetExtension("GL_NV_conservative_raster_dilate"));
+
+ glewInfoFunc(fi, "glConservativeRasterParameterfNV", glConservativeRasterParameterfNV == NULL);
+}
+
+#endif /* GL_NV_conservative_raster_dilate */
+
+#ifdef GL_NV_conservative_raster_pre_snap
+
+static void _glewInfo_GL_NV_conservative_raster_pre_snap (void)
+{
+ glewPrintExt("GL_NV_conservative_raster_pre_snap", GLEW_NV_conservative_raster_pre_snap, glewIsSupported("GL_NV_conservative_raster_pre_snap"), glewGetExtension("GL_NV_conservative_raster_pre_snap"));
+}
+
+#endif /* GL_NV_conservative_raster_pre_snap */
+
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+
+static void _glewInfo_GL_NV_conservative_raster_pre_snap_triangles (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_conservative_raster_pre_snap_triangles", GLEW_NV_conservative_raster_pre_snap_triangles, glewIsSupported("GL_NV_conservative_raster_pre_snap_triangles"), glewGetExtension("GL_NV_conservative_raster_pre_snap_triangles"));
+
+ glewInfoFunc(fi, "glConservativeRasterParameteriNV", glConservativeRasterParameteriNV == NULL);
+}
+
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+
+#ifdef GL_NV_conservative_raster_underestimation
+
+static void _glewInfo_GL_NV_conservative_raster_underestimation (void)
+{
+ glewPrintExt("GL_NV_conservative_raster_underestimation", GLEW_NV_conservative_raster_underestimation, glewIsSupported("GL_NV_conservative_raster_underestimation"), glewGetExtension("GL_NV_conservative_raster_underestimation"));
+}
+
+#endif /* GL_NV_conservative_raster_underestimation */
+
+#ifdef GL_NV_copy_buffer
+
+static void _glewInfo_GL_NV_copy_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_copy_buffer", GLEW_NV_copy_buffer, glewIsSupported("GL_NV_copy_buffer"), glewGetExtension("GL_NV_copy_buffer"));
+
+ glewInfoFunc(fi, "glCopyBufferSubDataNV", glCopyBufferSubDataNV == NULL);
+}
+
+#endif /* GL_NV_copy_buffer */
+
+#ifdef GL_NV_copy_depth_to_color
+
+static void _glewInfo_GL_NV_copy_depth_to_color (void)
+{
+ glewPrintExt("GL_NV_copy_depth_to_color", GLEW_NV_copy_depth_to_color, glewIsSupported("GL_NV_copy_depth_to_color"), glewGetExtension("GL_NV_copy_depth_to_color"));
+}
+
+#endif /* GL_NV_copy_depth_to_color */
+
+#ifdef GL_NV_copy_image
+
+static void _glewInfo_GL_NV_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_copy_image", GLEW_NV_copy_image, glewIsSupported("GL_NV_copy_image"), glewGetExtension("GL_NV_copy_image"));
+
+ glewInfoFunc(fi, "glCopyImageSubDataNV", glCopyImageSubDataNV == NULL);
+}
+
+#endif /* GL_NV_copy_image */
+
+#ifdef GL_NV_deep_texture3D
+
+static void _glewInfo_GL_NV_deep_texture3D (void)
+{
+ glewPrintExt("GL_NV_deep_texture3D", GLEW_NV_deep_texture3D, glewIsSupported("GL_NV_deep_texture3D"), glewGetExtension("GL_NV_deep_texture3D"));
+}
+
+#endif /* GL_NV_deep_texture3D */
+
+#ifdef GL_NV_depth_buffer_float
+
+static void _glewInfo_GL_NV_depth_buffer_float (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_depth_buffer_float", GLEW_NV_depth_buffer_float, glewIsSupported("GL_NV_depth_buffer_float"), glewGetExtension("GL_NV_depth_buffer_float"));
+
+ glewInfoFunc(fi, "glClearDepthdNV", glClearDepthdNV == NULL);
+ glewInfoFunc(fi, "glDepthBoundsdNV", glDepthBoundsdNV == NULL);
+ glewInfoFunc(fi, "glDepthRangedNV", glDepthRangedNV == NULL);
+}
+
+#endif /* GL_NV_depth_buffer_float */
+
+#ifdef GL_NV_depth_clamp
+
+static void _glewInfo_GL_NV_depth_clamp (void)
+{
+ glewPrintExt("GL_NV_depth_clamp", GLEW_NV_depth_clamp, glewIsSupported("GL_NV_depth_clamp"), glewGetExtension("GL_NV_depth_clamp"));
+}
+
+#endif /* GL_NV_depth_clamp */
+
+#ifdef GL_NV_depth_nonlinear
+
+static void _glewInfo_GL_NV_depth_nonlinear (void)
+{
+ glewPrintExt("GL_NV_depth_nonlinear", GLEW_NV_depth_nonlinear, glewIsSupported("GL_NV_depth_nonlinear"), glewGetExtension("GL_NV_depth_nonlinear"));
+}
+
+#endif /* GL_NV_depth_nonlinear */
+
+#ifdef GL_NV_depth_range_unclamped
+
+static void _glewInfo_GL_NV_depth_range_unclamped (void)
+{
+ glewPrintExt("GL_NV_depth_range_unclamped", GLEW_NV_depth_range_unclamped, glewIsSupported("GL_NV_depth_range_unclamped"), glewGetExtension("GL_NV_depth_range_unclamped"));
+}
+
+#endif /* GL_NV_depth_range_unclamped */
+
+#ifdef GL_NV_draw_buffers
+
+static void _glewInfo_GL_NV_draw_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_draw_buffers", GLEW_NV_draw_buffers, glewIsSupported("GL_NV_draw_buffers"), glewGetExtension("GL_NV_draw_buffers"));
+
+ glewInfoFunc(fi, "glDrawBuffersNV", glDrawBuffersNV == NULL);
+}
+
+#endif /* GL_NV_draw_buffers */
+
+#ifdef GL_NV_draw_instanced
+
+static void _glewInfo_GL_NV_draw_instanced (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_draw_instanced", GLEW_NV_draw_instanced, glewIsSupported("GL_NV_draw_instanced"), glewGetExtension("GL_NV_draw_instanced"));
+
+ glewInfoFunc(fi, "glDrawArraysInstancedNV", glDrawArraysInstancedNV == NULL);
+ glewInfoFunc(fi, "glDrawElementsInstancedNV", glDrawElementsInstancedNV == NULL);
+}
+
+#endif /* GL_NV_draw_instanced */
+
+#ifdef GL_NV_draw_texture
+
+static void _glewInfo_GL_NV_draw_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_draw_texture", GLEW_NV_draw_texture, glewIsSupported("GL_NV_draw_texture"), glewGetExtension("GL_NV_draw_texture"));
+
+ glewInfoFunc(fi, "glDrawTextureNV", glDrawTextureNV == NULL);
+}
+
+#endif /* GL_NV_draw_texture */
+
+#ifdef GL_NV_draw_vulkan_image
+
+static void _glewInfo_GL_NV_draw_vulkan_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_draw_vulkan_image", GLEW_NV_draw_vulkan_image, glewIsSupported("GL_NV_draw_vulkan_image"), glewGetExtension("GL_NV_draw_vulkan_image"));
+
+ glewInfoFunc(fi, "glDrawVkImageNV", glDrawVkImageNV == NULL);
+ glewInfoFunc(fi, "glGetVkProcAddrNV", glGetVkProcAddrNV == NULL);
+ glewInfoFunc(fi, "glSignalVkFenceNV", glSignalVkFenceNV == NULL);
+ glewInfoFunc(fi, "glSignalVkSemaphoreNV", glSignalVkSemaphoreNV == NULL);
+ glewInfoFunc(fi, "glWaitVkSemaphoreNV", glWaitVkSemaphoreNV == NULL);
+}
+
+#endif /* GL_NV_draw_vulkan_image */
+
+#ifdef GL_NV_evaluators
+
+static void _glewInfo_GL_NV_evaluators (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_evaluators", GLEW_NV_evaluators, glewIsSupported("GL_NV_evaluators"), glewGetExtension("GL_NV_evaluators"));
+
+ glewInfoFunc(fi, "glEvalMapsNV", glEvalMapsNV == NULL);
+ glewInfoFunc(fi, "glGetMapAttribParameterfvNV", glGetMapAttribParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetMapAttribParameterivNV", glGetMapAttribParameterivNV == NULL);
+ glewInfoFunc(fi, "glGetMapControlPointsNV", glGetMapControlPointsNV == NULL);
+ glewInfoFunc(fi, "glGetMapParameterfvNV", glGetMapParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetMapParameterivNV", glGetMapParameterivNV == NULL);
+ glewInfoFunc(fi, "glMapControlPointsNV", glMapControlPointsNV == NULL);
+ glewInfoFunc(fi, "glMapParameterfvNV", glMapParameterfvNV == NULL);
+ glewInfoFunc(fi, "glMapParameterivNV", glMapParameterivNV == NULL);
+}
+
+#endif /* GL_NV_evaluators */
+
+#ifdef GL_NV_explicit_attrib_location
+
+static void _glewInfo_GL_NV_explicit_attrib_location (void)
+{
+ glewPrintExt("GL_NV_explicit_attrib_location", GLEW_NV_explicit_attrib_location, glewIsSupported("GL_NV_explicit_attrib_location"), glewGetExtension("GL_NV_explicit_attrib_location"));
+}
+
+#endif /* GL_NV_explicit_attrib_location */
+
+#ifdef GL_NV_explicit_multisample
+
+static void _glewInfo_GL_NV_explicit_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_explicit_multisample", GLEW_NV_explicit_multisample, glewIsSupported("GL_NV_explicit_multisample"), glewGetExtension("GL_NV_explicit_multisample"));
+
+ glewInfoFunc(fi, "glGetMultisamplefvNV", glGetMultisamplefvNV == NULL);
+ glewInfoFunc(fi, "glSampleMaskIndexedNV", glSampleMaskIndexedNV == NULL);
+ glewInfoFunc(fi, "glTexRenderbufferNV", glTexRenderbufferNV == NULL);
+}
+
+#endif /* GL_NV_explicit_multisample */
+
+#ifdef GL_NV_fbo_color_attachments
+
+static void _glewInfo_GL_NV_fbo_color_attachments (void)
+{
+ glewPrintExt("GL_NV_fbo_color_attachments", GLEW_NV_fbo_color_attachments, glewIsSupported("GL_NV_fbo_color_attachments"), glewGetExtension("GL_NV_fbo_color_attachments"));
+}
+
+#endif /* GL_NV_fbo_color_attachments */
+
+#ifdef GL_NV_fence
+
+static void _glewInfo_GL_NV_fence (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_fence", GLEW_NV_fence, glewIsSupported("GL_NV_fence"), glewGetExtension("GL_NV_fence"));
+
+ glewInfoFunc(fi, "glDeleteFencesNV", glDeleteFencesNV == NULL);
+ glewInfoFunc(fi, "glFinishFenceNV", glFinishFenceNV == NULL);
+ glewInfoFunc(fi, "glGenFencesNV", glGenFencesNV == NULL);
+ glewInfoFunc(fi, "glGetFenceivNV", glGetFenceivNV == NULL);
+ glewInfoFunc(fi, "glIsFenceNV", glIsFenceNV == NULL);
+ glewInfoFunc(fi, "glSetFenceNV", glSetFenceNV == NULL);
+ glewInfoFunc(fi, "glTestFenceNV", glTestFenceNV == NULL);
+}
+
+#endif /* GL_NV_fence */
+
+#ifdef GL_NV_fill_rectangle
+
+static void _glewInfo_GL_NV_fill_rectangle (void)
+{
+ glewPrintExt("GL_NV_fill_rectangle", GLEW_NV_fill_rectangle, glewIsSupported("GL_NV_fill_rectangle"), glewGetExtension("GL_NV_fill_rectangle"));
+}
+
+#endif /* GL_NV_fill_rectangle */
+
+#ifdef GL_NV_float_buffer
+
+static void _glewInfo_GL_NV_float_buffer (void)
+{
+ glewPrintExt("GL_NV_float_buffer", GLEW_NV_float_buffer, glewIsSupported("GL_NV_float_buffer"), glewGetExtension("GL_NV_float_buffer"));
+}
+
+#endif /* GL_NV_float_buffer */
+
+#ifdef GL_NV_fog_distance
+
+static void _glewInfo_GL_NV_fog_distance (void)
+{
+ glewPrintExt("GL_NV_fog_distance", GLEW_NV_fog_distance, glewIsSupported("GL_NV_fog_distance"), glewGetExtension("GL_NV_fog_distance"));
+}
+
+#endif /* GL_NV_fog_distance */
+
+#ifdef GL_NV_fragment_coverage_to_color
+
+static void _glewInfo_GL_NV_fragment_coverage_to_color (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_fragment_coverage_to_color", GLEW_NV_fragment_coverage_to_color, glewIsSupported("GL_NV_fragment_coverage_to_color"), glewGetExtension("GL_NV_fragment_coverage_to_color"));
+
+ glewInfoFunc(fi, "glFragmentCoverageColorNV", glFragmentCoverageColorNV == NULL);
+}
+
+#endif /* GL_NV_fragment_coverage_to_color */
+
+#ifdef GL_NV_fragment_program
+
+static void _glewInfo_GL_NV_fragment_program (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_fragment_program", GLEW_NV_fragment_program, glewIsSupported("GL_NV_fragment_program"), glewGetExtension("GL_NV_fragment_program"));
+
+ glewInfoFunc(fi, "glGetProgramNamedParameterdvNV", glGetProgramNamedParameterdvNV == NULL);
+ glewInfoFunc(fi, "glGetProgramNamedParameterfvNV", glGetProgramNamedParameterfvNV == NULL);
+ glewInfoFunc(fi, "glProgramNamedParameter4dNV", glProgramNamedParameter4dNV == NULL);
+ glewInfoFunc(fi, "glProgramNamedParameter4dvNV", glProgramNamedParameter4dvNV == NULL);
+ glewInfoFunc(fi, "glProgramNamedParameter4fNV", glProgramNamedParameter4fNV == NULL);
+ glewInfoFunc(fi, "glProgramNamedParameter4fvNV", glProgramNamedParameter4fvNV == NULL);
+}
+
+#endif /* GL_NV_fragment_program */
+
+#ifdef GL_NV_fragment_program2
+
+static void _glewInfo_GL_NV_fragment_program2 (void)
+{
+ glewPrintExt("GL_NV_fragment_program2", GLEW_NV_fragment_program2, glewIsSupported("GL_NV_fragment_program2"), glewGetExtension("GL_NV_fragment_program2"));
+}
+
+#endif /* GL_NV_fragment_program2 */
+
+#ifdef GL_NV_fragment_program4
+
+static void _glewInfo_GL_NV_fragment_program4 (void)
+{
+ glewPrintExt("GL_NV_fragment_program4", GLEW_NV_fragment_program4, glewIsSupported("GL_NV_fragment_program4"), glewGetExtension("GL_NV_gpu_program4"));
+}
+
+#endif /* GL_NV_fragment_program4 */
+
+#ifdef GL_NV_fragment_program_option
+
+static void _glewInfo_GL_NV_fragment_program_option (void)
+{
+ glewPrintExt("GL_NV_fragment_program_option", GLEW_NV_fragment_program_option, glewIsSupported("GL_NV_fragment_program_option"), glewGetExtension("GL_NV_fragment_program_option"));
+}
+
+#endif /* GL_NV_fragment_program_option */
+
+#ifdef GL_NV_fragment_shader_barycentric
+
+static void _glewInfo_GL_NV_fragment_shader_barycentric (void)
+{
+ glewPrintExt("GL_NV_fragment_shader_barycentric", GLEW_NV_fragment_shader_barycentric, glewIsSupported("GL_NV_fragment_shader_barycentric"), glewGetExtension("GL_NV_fragment_shader_barycentric"));
+}
+
+#endif /* GL_NV_fragment_shader_barycentric */
+
+#ifdef GL_NV_fragment_shader_interlock
+
+static void _glewInfo_GL_NV_fragment_shader_interlock (void)
+{
+ glewPrintExt("GL_NV_fragment_shader_interlock", GLEW_NV_fragment_shader_interlock, glewIsSupported("GL_NV_fragment_shader_interlock"), glewGetExtension("GL_NV_fragment_shader_interlock"));
+}
+
+#endif /* GL_NV_fragment_shader_interlock */
+
+#ifdef GL_NV_framebuffer_blit
+
+static void _glewInfo_GL_NV_framebuffer_blit (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_framebuffer_blit", GLEW_NV_framebuffer_blit, glewIsSupported("GL_NV_framebuffer_blit"), glewGetExtension("GL_NV_framebuffer_blit"));
+
+ glewInfoFunc(fi, "glBlitFramebufferNV", glBlitFramebufferNV == NULL);
+}
+
+#endif /* GL_NV_framebuffer_blit */
+
+#ifdef GL_NV_framebuffer_mixed_samples
+
+static void _glewInfo_GL_NV_framebuffer_mixed_samples (void)
+{
+ glewPrintExt("GL_NV_framebuffer_mixed_samples", GLEW_NV_framebuffer_mixed_samples, glewIsSupported("GL_NV_framebuffer_mixed_samples"), glewGetExtension("GL_NV_framebuffer_mixed_samples"));
+}
+
+#endif /* GL_NV_framebuffer_mixed_samples */
+
+#ifdef GL_NV_framebuffer_multisample
+
+static void _glewInfo_GL_NV_framebuffer_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_framebuffer_multisample", GLEW_NV_framebuffer_multisample, glewIsSupported("GL_NV_framebuffer_multisample"), glewGetExtension("GL_NV_framebuffer_multisample"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleNV", glRenderbufferStorageMultisampleNV == NULL);
+}
+
+#endif /* GL_NV_framebuffer_multisample */
+
+#ifdef GL_NV_framebuffer_multisample_coverage
+
+static void _glewInfo_GL_NV_framebuffer_multisample_coverage (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_framebuffer_multisample_coverage", GLEW_NV_framebuffer_multisample_coverage, glewIsSupported("GL_NV_framebuffer_multisample_coverage"), glewGetExtension("GL_NV_framebuffer_multisample_coverage"));
+
+ glewInfoFunc(fi, "glRenderbufferStorageMultisampleCoverageNV", glRenderbufferStorageMultisampleCoverageNV == NULL);
+}
+
+#endif /* GL_NV_framebuffer_multisample_coverage */
+
+#ifdef GL_NV_generate_mipmap_sRGB
+
+static void _glewInfo_GL_NV_generate_mipmap_sRGB (void)
+{
+ glewPrintExt("GL_NV_generate_mipmap_sRGB", GLEW_NV_generate_mipmap_sRGB, glewIsSupported("GL_NV_generate_mipmap_sRGB"), glewGetExtension("GL_NV_generate_mipmap_sRGB"));
+}
+
+#endif /* GL_NV_generate_mipmap_sRGB */
+
+#ifdef GL_NV_geometry_program4
+
+static void _glewInfo_GL_NV_geometry_program4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_geometry_program4", GLEW_NV_geometry_program4, glewIsSupported("GL_NV_geometry_program4"), glewGetExtension("GL_NV_gpu_program4"));
+
+ glewInfoFunc(fi, "glProgramVertexLimitNV", glProgramVertexLimitNV == NULL);
+}
+
+#endif /* GL_NV_geometry_program4 */
+
+#ifdef GL_NV_geometry_shader4
+
+static void _glewInfo_GL_NV_geometry_shader4 (void)
+{
+ glewPrintExt("GL_NV_geometry_shader4", GLEW_NV_geometry_shader4, glewIsSupported("GL_NV_geometry_shader4"), glewGetExtension("GL_NV_geometry_shader4"));
+}
+
+#endif /* GL_NV_geometry_shader4 */
+
+#ifdef GL_NV_geometry_shader_passthrough
+
+static void _glewInfo_GL_NV_geometry_shader_passthrough (void)
+{
+ glewPrintExt("GL_NV_geometry_shader_passthrough", GLEW_NV_geometry_shader_passthrough, glewIsSupported("GL_NV_geometry_shader_passthrough"), glewGetExtension("GL_NV_geometry_shader_passthrough"));
+}
+
+#endif /* GL_NV_geometry_shader_passthrough */
+
+#ifdef GL_NV_gpu_multicast
+
+static void _glewInfo_GL_NV_gpu_multicast (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_gpu_multicast", GLEW_NV_gpu_multicast, glewIsSupported("GL_NV_gpu_multicast"), glewGetExtension("GL_NV_gpu_multicast"));
+
+ glewInfoFunc(fi, "glMulticastBarrierNV", glMulticastBarrierNV == NULL);
+ glewInfoFunc(fi, "glMulticastBlitFramebufferNV", glMulticastBlitFramebufferNV == NULL);
+ glewInfoFunc(fi, "glMulticastBufferSubDataNV", glMulticastBufferSubDataNV == NULL);
+ glewInfoFunc(fi, "glMulticastCopyBufferSubDataNV", glMulticastCopyBufferSubDataNV == NULL);
+ glewInfoFunc(fi, "glMulticastCopyImageSubDataNV", glMulticastCopyImageSubDataNV == NULL);
+ glewInfoFunc(fi, "glMulticastFramebufferSampleLocationsfvNV", glMulticastFramebufferSampleLocationsfvNV == NULL);
+ glewInfoFunc(fi, "glMulticastGetQueryObjecti64vNV", glMulticastGetQueryObjecti64vNV == NULL);
+ glewInfoFunc(fi, "glMulticastGetQueryObjectivNV", glMulticastGetQueryObjectivNV == NULL);
+ glewInfoFunc(fi, "glMulticastGetQueryObjectui64vNV", glMulticastGetQueryObjectui64vNV == NULL);
+ glewInfoFunc(fi, "glMulticastGetQueryObjectuivNV", glMulticastGetQueryObjectuivNV == NULL);
+ glewInfoFunc(fi, "glMulticastWaitSyncNV", glMulticastWaitSyncNV == NULL);
+ glewInfoFunc(fi, "glRenderGpuMaskNV", glRenderGpuMaskNV == NULL);
+}
+
+#endif /* GL_NV_gpu_multicast */
+
+#ifdef GL_NV_gpu_program4
+
+static void _glewInfo_GL_NV_gpu_program4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_gpu_program4", GLEW_NV_gpu_program4, glewIsSupported("GL_NV_gpu_program4"), glewGetExtension("GL_NV_gpu_program4"));
+
+ glewInfoFunc(fi, "glProgramEnvParameterI4iNV", glProgramEnvParameterI4iNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameterI4ivNV", glProgramEnvParameterI4ivNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameterI4uiNV", glProgramEnvParameterI4uiNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParameterI4uivNV", glProgramEnvParameterI4uivNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParametersI4ivNV", glProgramEnvParametersI4ivNV == NULL);
+ glewInfoFunc(fi, "glProgramEnvParametersI4uivNV", glProgramEnvParametersI4uivNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameterI4iNV", glProgramLocalParameterI4iNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameterI4ivNV", glProgramLocalParameterI4ivNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameterI4uiNV", glProgramLocalParameterI4uiNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParameterI4uivNV", glProgramLocalParameterI4uivNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParametersI4ivNV", glProgramLocalParametersI4ivNV == NULL);
+ glewInfoFunc(fi, "glProgramLocalParametersI4uivNV", glProgramLocalParametersI4uivNV == NULL);
+}
+
+#endif /* GL_NV_gpu_program4 */
+
+#ifdef GL_NV_gpu_program5
+
+static void _glewInfo_GL_NV_gpu_program5 (void)
+{
+ glewPrintExt("GL_NV_gpu_program5", GLEW_NV_gpu_program5, glewIsSupported("GL_NV_gpu_program5"), glewGetExtension("GL_NV_gpu_program5"));
+}
+
+#endif /* GL_NV_gpu_program5 */
+
+#ifdef GL_NV_gpu_program5_mem_extended
+
+static void _glewInfo_GL_NV_gpu_program5_mem_extended (void)
+{
+ glewPrintExt("GL_NV_gpu_program5_mem_extended", GLEW_NV_gpu_program5_mem_extended, glewIsSupported("GL_NV_gpu_program5_mem_extended"), glewGetExtension("GL_NV_gpu_program5_mem_extended"));
+}
+
+#endif /* GL_NV_gpu_program5_mem_extended */
+
+#ifdef GL_NV_gpu_program_fp64
+
+static void _glewInfo_GL_NV_gpu_program_fp64 (void)
+{
+ glewPrintExt("GL_NV_gpu_program_fp64", GLEW_NV_gpu_program_fp64, glewIsSupported("GL_NV_gpu_program_fp64"), glewGetExtension("GL_NV_gpu_program_fp64"));
+}
+
+#endif /* GL_NV_gpu_program_fp64 */
+
+#ifdef GL_NV_gpu_shader5
+
+static void _glewInfo_GL_NV_gpu_shader5 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_gpu_shader5", GLEW_NV_gpu_shader5, glewIsSupported("GL_NV_gpu_shader5"), glewGetExtension("GL_NV_gpu_shader5"));
+
+ glewInfoFunc(fi, "glGetUniformi64vNV", glGetUniformi64vNV == NULL);
+ glewInfoFunc(fi, "glGetUniformui64vNV", glGetUniformui64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i64NV", glProgramUniform1i64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform1i64vNV", glProgramUniform1i64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui64NV", glProgramUniform1ui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform1ui64vNV", glProgramUniform1ui64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i64NV", glProgramUniform2i64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform2i64vNV", glProgramUniform2i64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui64NV", glProgramUniform2ui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform2ui64vNV", glProgramUniform2ui64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i64NV", glProgramUniform3i64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform3i64vNV", glProgramUniform3i64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui64NV", glProgramUniform3ui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform3ui64vNV", glProgramUniform3ui64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i64NV", glProgramUniform4i64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform4i64vNV", glProgramUniform4i64vNV == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui64NV", glProgramUniform4ui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniform4ui64vNV", glProgramUniform4ui64vNV == NULL);
+ glewInfoFunc(fi, "glUniform1i64NV", glUniform1i64NV == NULL);
+ glewInfoFunc(fi, "glUniform1i64vNV", glUniform1i64vNV == NULL);
+ glewInfoFunc(fi, "glUniform1ui64NV", glUniform1ui64NV == NULL);
+ glewInfoFunc(fi, "glUniform1ui64vNV", glUniform1ui64vNV == NULL);
+ glewInfoFunc(fi, "glUniform2i64NV", glUniform2i64NV == NULL);
+ glewInfoFunc(fi, "glUniform2i64vNV", glUniform2i64vNV == NULL);
+ glewInfoFunc(fi, "glUniform2ui64NV", glUniform2ui64NV == NULL);
+ glewInfoFunc(fi, "glUniform2ui64vNV", glUniform2ui64vNV == NULL);
+ glewInfoFunc(fi, "glUniform3i64NV", glUniform3i64NV == NULL);
+ glewInfoFunc(fi, "glUniform3i64vNV", glUniform3i64vNV == NULL);
+ glewInfoFunc(fi, "glUniform3ui64NV", glUniform3ui64NV == NULL);
+ glewInfoFunc(fi, "glUniform3ui64vNV", glUniform3ui64vNV == NULL);
+ glewInfoFunc(fi, "glUniform4i64NV", glUniform4i64NV == NULL);
+ glewInfoFunc(fi, "glUniform4i64vNV", glUniform4i64vNV == NULL);
+ glewInfoFunc(fi, "glUniform4ui64NV", glUniform4ui64NV == NULL);
+ glewInfoFunc(fi, "glUniform4ui64vNV", glUniform4ui64vNV == NULL);
+}
+
+#endif /* GL_NV_gpu_shader5 */
+
+#ifdef GL_NV_half_float
+
+static void _glewInfo_GL_NV_half_float (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_half_float", GLEW_NV_half_float, glewIsSupported("GL_NV_half_float"), glewGetExtension("GL_NV_half_float"));
+
+ glewInfoFunc(fi, "glColor3hNV", glColor3hNV == NULL);
+ glewInfoFunc(fi, "glColor3hvNV", glColor3hvNV == NULL);
+ glewInfoFunc(fi, "glColor4hNV", glColor4hNV == NULL);
+ glewInfoFunc(fi, "glColor4hvNV", glColor4hvNV == NULL);
+ glewInfoFunc(fi, "glFogCoordhNV", glFogCoordhNV == NULL);
+ glewInfoFunc(fi, "glFogCoordhvNV", glFogCoordhvNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1hNV", glMultiTexCoord1hNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord1hvNV", glMultiTexCoord1hvNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2hNV", glMultiTexCoord2hNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord2hvNV", glMultiTexCoord2hvNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3hNV", glMultiTexCoord3hNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord3hvNV", glMultiTexCoord3hvNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4hNV", glMultiTexCoord4hNV == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4hvNV", glMultiTexCoord4hvNV == NULL);
+ glewInfoFunc(fi, "glNormal3hNV", glNormal3hNV == NULL);
+ glewInfoFunc(fi, "glNormal3hvNV", glNormal3hvNV == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3hNV", glSecondaryColor3hNV == NULL);
+ glewInfoFunc(fi, "glSecondaryColor3hvNV", glSecondaryColor3hvNV == NULL);
+ glewInfoFunc(fi, "glTexCoord1hNV", glTexCoord1hNV == NULL);
+ glewInfoFunc(fi, "glTexCoord1hvNV", glTexCoord1hvNV == NULL);
+ glewInfoFunc(fi, "glTexCoord2hNV", glTexCoord2hNV == NULL);
+ glewInfoFunc(fi, "glTexCoord2hvNV", glTexCoord2hvNV == NULL);
+ glewInfoFunc(fi, "glTexCoord3hNV", glTexCoord3hNV == NULL);
+ glewInfoFunc(fi, "glTexCoord3hvNV", glTexCoord3hvNV == NULL);
+ glewInfoFunc(fi, "glTexCoord4hNV", glTexCoord4hNV == NULL);
+ glewInfoFunc(fi, "glTexCoord4hvNV", glTexCoord4hvNV == NULL);
+ glewInfoFunc(fi, "glVertex2hNV", glVertex2hNV == NULL);
+ glewInfoFunc(fi, "glVertex2hvNV", glVertex2hvNV == NULL);
+ glewInfoFunc(fi, "glVertex3hNV", glVertex3hNV == NULL);
+ glewInfoFunc(fi, "glVertex3hvNV", glVertex3hvNV == NULL);
+ glewInfoFunc(fi, "glVertex4hNV", glVertex4hNV == NULL);
+ glewInfoFunc(fi, "glVertex4hvNV", glVertex4hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1hNV", glVertexAttrib1hNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1hvNV", glVertexAttrib1hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2hNV", glVertexAttrib2hNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2hvNV", glVertexAttrib2hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3hNV", glVertexAttrib3hNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3hvNV", glVertexAttrib3hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4hNV", glVertexAttrib4hNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4hvNV", glVertexAttrib4hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs1hvNV", glVertexAttribs1hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs2hvNV", glVertexAttribs2hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs3hvNV", glVertexAttribs3hvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4hvNV", glVertexAttribs4hvNV == NULL);
+ glewInfoFunc(fi, "glVertexWeighthNV", glVertexWeighthNV == NULL);
+ glewInfoFunc(fi, "glVertexWeighthvNV", glVertexWeighthvNV == NULL);
+}
+
+#endif /* GL_NV_half_float */
+
+#ifdef GL_NV_image_formats
+
+static void _glewInfo_GL_NV_image_formats (void)
+{
+ glewPrintExt("GL_NV_image_formats", GLEW_NV_image_formats, glewIsSupported("GL_NV_image_formats"), glewGetExtension("GL_NV_image_formats"));
+}
+
+#endif /* GL_NV_image_formats */
+
+#ifdef GL_NV_instanced_arrays
+
+static void _glewInfo_GL_NV_instanced_arrays (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_instanced_arrays", GLEW_NV_instanced_arrays, glewIsSupported("GL_NV_instanced_arrays"), glewGetExtension("GL_NV_instanced_arrays"));
+
+ glewInfoFunc(fi, "glVertexAttribDivisorNV", glVertexAttribDivisorNV == NULL);
+}
+
+#endif /* GL_NV_instanced_arrays */
+
+#ifdef GL_NV_internalformat_sample_query
+
+static void _glewInfo_GL_NV_internalformat_sample_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_internalformat_sample_query", GLEW_NV_internalformat_sample_query, glewIsSupported("GL_NV_internalformat_sample_query"), glewGetExtension("GL_NV_internalformat_sample_query"));
+
+ glewInfoFunc(fi, "glGetInternalformatSampleivNV", glGetInternalformatSampleivNV == NULL);
+}
+
+#endif /* GL_NV_internalformat_sample_query */
+
+#ifdef GL_NV_light_max_exponent
+
+static void _glewInfo_GL_NV_light_max_exponent (void)
+{
+ glewPrintExt("GL_NV_light_max_exponent", GLEW_NV_light_max_exponent, glewIsSupported("GL_NV_light_max_exponent"), glewGetExtension("GL_NV_light_max_exponent"));
+}
+
+#endif /* GL_NV_light_max_exponent */
+
+#ifdef GL_NV_memory_attachment
+
+static void _glewInfo_GL_NV_memory_attachment (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_memory_attachment", GLEW_NV_memory_attachment, glewIsSupported("GL_NV_memory_attachment"), glewGetExtension("GL_NV_memory_attachment"));
+
+ glewInfoFunc(fi, "glBufferAttachMemoryNV", glBufferAttachMemoryNV == NULL);
+ glewInfoFunc(fi, "glGetMemoryObjectDetachedResourcesuivNV", glGetMemoryObjectDetachedResourcesuivNV == NULL);
+ glewInfoFunc(fi, "glNamedBufferAttachMemoryNV", glNamedBufferAttachMemoryNV == NULL);
+ glewInfoFunc(fi, "glResetMemoryObjectParameterNV", glResetMemoryObjectParameterNV == NULL);
+ glewInfoFunc(fi, "glTexAttachMemoryNV", glTexAttachMemoryNV == NULL);
+ glewInfoFunc(fi, "glTextureAttachMemoryNV", glTextureAttachMemoryNV == NULL);
+}
+
+#endif /* GL_NV_memory_attachment */
+
+#ifdef GL_NV_memory_object_sparse
+
+static void _glewInfo_GL_NV_memory_object_sparse (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_memory_object_sparse", GLEW_NV_memory_object_sparse, glewIsSupported("GL_NV_memory_object_sparse"), glewGetExtension("GL_NV_memory_object_sparse"));
+
+ glewInfoFunc(fi, "glBufferPageCommitmentMemNV", glBufferPageCommitmentMemNV == NULL);
+ glewInfoFunc(fi, "glNamedBufferPageCommitmentMemNV", glNamedBufferPageCommitmentMemNV == NULL);
+ glewInfoFunc(fi, "glTexPageCommitmentMemNV", glTexPageCommitmentMemNV == NULL);
+ glewInfoFunc(fi, "glTexturePageCommitmentMemNV", glTexturePageCommitmentMemNV == NULL);
+}
+
+#endif /* GL_NV_memory_object_sparse */
+
+#ifdef GL_NV_mesh_shader
+
+static void _glewInfo_GL_NV_mesh_shader (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_mesh_shader", GLEW_NV_mesh_shader, glewIsSupported("GL_NV_mesh_shader"), glewGetExtension("GL_NV_mesh_shader"));
+
+ glewInfoFunc(fi, "glDrawMeshTasksIndirectNV", glDrawMeshTasksIndirectNV == NULL);
+ glewInfoFunc(fi, "glDrawMeshTasksNV", glDrawMeshTasksNV == NULL);
+ glewInfoFunc(fi, "glMultiDrawMeshTasksIndirectCountNV", glMultiDrawMeshTasksIndirectCountNV == NULL);
+ glewInfoFunc(fi, "glMultiDrawMeshTasksIndirectNV", glMultiDrawMeshTasksIndirectNV == NULL);
+}
+
+#endif /* GL_NV_mesh_shader */
+
+#ifdef GL_NV_multisample_coverage
+
+static void _glewInfo_GL_NV_multisample_coverage (void)
+{
+ glewPrintExt("GL_NV_multisample_coverage", GLEW_NV_multisample_coverage, glewIsSupported("GL_NV_multisample_coverage"), glewGetExtension("GL_NV_multisample_coverage"));
+}
+
+#endif /* GL_NV_multisample_coverage */
+
+#ifdef GL_NV_multisample_filter_hint
+
+static void _glewInfo_GL_NV_multisample_filter_hint (void)
+{
+ glewPrintExt("GL_NV_multisample_filter_hint", GLEW_NV_multisample_filter_hint, glewIsSupported("GL_NV_multisample_filter_hint"), glewGetExtension("GL_NV_multisample_filter_hint"));
+}
+
+#endif /* GL_NV_multisample_filter_hint */
+
+#ifdef GL_NV_non_square_matrices
+
+static void _glewInfo_GL_NV_non_square_matrices (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_non_square_matrices", GLEW_NV_non_square_matrices, glewIsSupported("GL_NV_non_square_matrices"), glewGetExtension("GL_NV_non_square_matrices"));
+
+ glewInfoFunc(fi, "glUniformMatrix2x3fvNV", glUniformMatrix2x3fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix2x4fvNV", glUniformMatrix2x4fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x2fvNV", glUniformMatrix3x2fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix3x4fvNV", glUniformMatrix3x4fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x2fvNV", glUniformMatrix4x2fvNV == NULL);
+ glewInfoFunc(fi, "glUniformMatrix4x3fvNV", glUniformMatrix4x3fvNV == NULL);
+}
+
+#endif /* GL_NV_non_square_matrices */
+
+#ifdef GL_NV_occlusion_query
+
+static void _glewInfo_GL_NV_occlusion_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_occlusion_query", GLEW_NV_occlusion_query, glewIsSupported("GL_NV_occlusion_query"), glewGetExtension("GL_NV_occlusion_query"));
+
+ glewInfoFunc(fi, "glBeginOcclusionQueryNV", glBeginOcclusionQueryNV == NULL);
+ glewInfoFunc(fi, "glDeleteOcclusionQueriesNV", glDeleteOcclusionQueriesNV == NULL);
+ glewInfoFunc(fi, "glEndOcclusionQueryNV", glEndOcclusionQueryNV == NULL);
+ glewInfoFunc(fi, "glGenOcclusionQueriesNV", glGenOcclusionQueriesNV == NULL);
+ glewInfoFunc(fi, "glGetOcclusionQueryivNV", glGetOcclusionQueryivNV == NULL);
+ glewInfoFunc(fi, "glGetOcclusionQueryuivNV", glGetOcclusionQueryuivNV == NULL);
+ glewInfoFunc(fi, "glIsOcclusionQueryNV", glIsOcclusionQueryNV == NULL);
+}
+
+#endif /* GL_NV_occlusion_query */
+
+#ifdef GL_NV_pack_subimage
+
+static void _glewInfo_GL_NV_pack_subimage (void)
+{
+ glewPrintExt("GL_NV_pack_subimage", GLEW_NV_pack_subimage, glewIsSupported("GL_NV_pack_subimage"), glewGetExtension("GL_NV_pack_subimage"));
+}
+
+#endif /* GL_NV_pack_subimage */
+
+#ifdef GL_NV_packed_depth_stencil
+
+static void _glewInfo_GL_NV_packed_depth_stencil (void)
+{
+ glewPrintExt("GL_NV_packed_depth_stencil", GLEW_NV_packed_depth_stencil, glewIsSupported("GL_NV_packed_depth_stencil"), glewGetExtension("GL_NV_packed_depth_stencil"));
+}
+
+#endif /* GL_NV_packed_depth_stencil */
+
+#ifdef GL_NV_packed_float
+
+static void _glewInfo_GL_NV_packed_float (void)
+{
+ glewPrintExt("GL_NV_packed_float", GLEW_NV_packed_float, glewIsSupported("GL_NV_packed_float"), glewGetExtension("GL_NV_packed_float"));
+}
+
+#endif /* GL_NV_packed_float */
+
+#ifdef GL_NV_packed_float_linear
+
+static void _glewInfo_GL_NV_packed_float_linear (void)
+{
+ glewPrintExt("GL_NV_packed_float_linear", GLEW_NV_packed_float_linear, glewIsSupported("GL_NV_packed_float_linear"), glewGetExtension("GL_NV_packed_float_linear"));
+}
+
+#endif /* GL_NV_packed_float_linear */
+
+#ifdef GL_NV_parameter_buffer_object
+
+static void _glewInfo_GL_NV_parameter_buffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_parameter_buffer_object", GLEW_NV_parameter_buffer_object, glewIsSupported("GL_NV_parameter_buffer_object"), glewGetExtension("GL_NV_parameter_buffer_object"));
+
+ glewInfoFunc(fi, "glProgramBufferParametersIivNV", glProgramBufferParametersIivNV == NULL);
+ glewInfoFunc(fi, "glProgramBufferParametersIuivNV", glProgramBufferParametersIuivNV == NULL);
+ glewInfoFunc(fi, "glProgramBufferParametersfvNV", glProgramBufferParametersfvNV == NULL);
+}
+
+#endif /* GL_NV_parameter_buffer_object */
+
+#ifdef GL_NV_parameter_buffer_object2
+
+static void _glewInfo_GL_NV_parameter_buffer_object2 (void)
+{
+ glewPrintExt("GL_NV_parameter_buffer_object2", GLEW_NV_parameter_buffer_object2, glewIsSupported("GL_NV_parameter_buffer_object2"), glewGetExtension("GL_NV_parameter_buffer_object2"));
+}
+
+#endif /* GL_NV_parameter_buffer_object2 */
+
+#ifdef GL_NV_path_rendering
+
+static void _glewInfo_GL_NV_path_rendering (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_path_rendering", GLEW_NV_path_rendering, glewIsSupported("GL_NV_path_rendering"), glewGetExtension("GL_NV_path_rendering"));
+
+ glewInfoFunc(fi, "glCopyPathNV", glCopyPathNV == NULL);
+ glewInfoFunc(fi, "glCoverFillPathInstancedNV", glCoverFillPathInstancedNV == NULL);
+ glewInfoFunc(fi, "glCoverFillPathNV", glCoverFillPathNV == NULL);
+ glewInfoFunc(fi, "glCoverStrokePathInstancedNV", glCoverStrokePathInstancedNV == NULL);
+ glewInfoFunc(fi, "glCoverStrokePathNV", glCoverStrokePathNV == NULL);
+ glewInfoFunc(fi, "glDeletePathsNV", glDeletePathsNV == NULL);
+ glewInfoFunc(fi, "glGenPathsNV", glGenPathsNV == NULL);
+ glewInfoFunc(fi, "glGetPathColorGenfvNV", glGetPathColorGenfvNV == NULL);
+ glewInfoFunc(fi, "glGetPathColorGenivNV", glGetPathColorGenivNV == NULL);
+ glewInfoFunc(fi, "glGetPathCommandsNV", glGetPathCommandsNV == NULL);
+ glewInfoFunc(fi, "glGetPathCoordsNV", glGetPathCoordsNV == NULL);
+ glewInfoFunc(fi, "glGetPathDashArrayNV", glGetPathDashArrayNV == NULL);
+ glewInfoFunc(fi, "glGetPathLengthNV", glGetPathLengthNV == NULL);
+ glewInfoFunc(fi, "glGetPathMetricRangeNV", glGetPathMetricRangeNV == NULL);
+ glewInfoFunc(fi, "glGetPathMetricsNV", glGetPathMetricsNV == NULL);
+ glewInfoFunc(fi, "glGetPathParameterfvNV", glGetPathParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetPathParameterivNV", glGetPathParameterivNV == NULL);
+ glewInfoFunc(fi, "glGetPathSpacingNV", glGetPathSpacingNV == NULL);
+ glewInfoFunc(fi, "glGetPathTexGenfvNV", glGetPathTexGenfvNV == NULL);
+ glewInfoFunc(fi, "glGetPathTexGenivNV", glGetPathTexGenivNV == NULL);
+ glewInfoFunc(fi, "glGetProgramResourcefvNV", glGetProgramResourcefvNV == NULL);
+ glewInfoFunc(fi, "glInterpolatePathsNV", glInterpolatePathsNV == NULL);
+ glewInfoFunc(fi, "glIsPathNV", glIsPathNV == NULL);
+ glewInfoFunc(fi, "glIsPointInFillPathNV", glIsPointInFillPathNV == NULL);
+ glewInfoFunc(fi, "glIsPointInStrokePathNV", glIsPointInStrokePathNV == NULL);
+ glewInfoFunc(fi, "glMatrixLoad3x2fNV", glMatrixLoad3x2fNV == NULL);
+ glewInfoFunc(fi, "glMatrixLoad3x3fNV", glMatrixLoad3x3fNV == NULL);
+ glewInfoFunc(fi, "glMatrixLoadTranspose3x3fNV", glMatrixLoadTranspose3x3fNV == NULL);
+ glewInfoFunc(fi, "glMatrixMult3x2fNV", glMatrixMult3x2fNV == NULL);
+ glewInfoFunc(fi, "glMatrixMult3x3fNV", glMatrixMult3x3fNV == NULL);
+ glewInfoFunc(fi, "glMatrixMultTranspose3x3fNV", glMatrixMultTranspose3x3fNV == NULL);
+ glewInfoFunc(fi, "glPathColorGenNV", glPathColorGenNV == NULL);
+ glewInfoFunc(fi, "glPathCommandsNV", glPathCommandsNV == NULL);
+ glewInfoFunc(fi, "glPathCoordsNV", glPathCoordsNV == NULL);
+ glewInfoFunc(fi, "glPathCoverDepthFuncNV", glPathCoverDepthFuncNV == NULL);
+ glewInfoFunc(fi, "glPathDashArrayNV", glPathDashArrayNV == NULL);
+ glewInfoFunc(fi, "glPathFogGenNV", glPathFogGenNV == NULL);
+ glewInfoFunc(fi, "glPathGlyphIndexArrayNV", glPathGlyphIndexArrayNV == NULL);
+ glewInfoFunc(fi, "glPathGlyphIndexRangeNV", glPathGlyphIndexRangeNV == NULL);
+ glewInfoFunc(fi, "glPathGlyphRangeNV", glPathGlyphRangeNV == NULL);
+ glewInfoFunc(fi, "glPathGlyphsNV", glPathGlyphsNV == NULL);
+ glewInfoFunc(fi, "glPathMemoryGlyphIndexArrayNV", glPathMemoryGlyphIndexArrayNV == NULL);
+ glewInfoFunc(fi, "glPathParameterfNV", glPathParameterfNV == NULL);
+ glewInfoFunc(fi, "glPathParameterfvNV", glPathParameterfvNV == NULL);
+ glewInfoFunc(fi, "glPathParameteriNV", glPathParameteriNV == NULL);
+ glewInfoFunc(fi, "glPathParameterivNV", glPathParameterivNV == NULL);
+ glewInfoFunc(fi, "glPathStencilDepthOffsetNV", glPathStencilDepthOffsetNV == NULL);
+ glewInfoFunc(fi, "glPathStencilFuncNV", glPathStencilFuncNV == NULL);
+ glewInfoFunc(fi, "glPathStringNV", glPathStringNV == NULL);
+ glewInfoFunc(fi, "glPathSubCommandsNV", glPathSubCommandsNV == NULL);
+ glewInfoFunc(fi, "glPathSubCoordsNV", glPathSubCoordsNV == NULL);
+ glewInfoFunc(fi, "glPathTexGenNV", glPathTexGenNV == NULL);
+ glewInfoFunc(fi, "glPointAlongPathNV", glPointAlongPathNV == NULL);
+ glewInfoFunc(fi, "glProgramPathFragmentInputGenNV", glProgramPathFragmentInputGenNV == NULL);
+ glewInfoFunc(fi, "glStencilFillPathInstancedNV", glStencilFillPathInstancedNV == NULL);
+ glewInfoFunc(fi, "glStencilFillPathNV", glStencilFillPathNV == NULL);
+ glewInfoFunc(fi, "glStencilStrokePathInstancedNV", glStencilStrokePathInstancedNV == NULL);
+ glewInfoFunc(fi, "glStencilStrokePathNV", glStencilStrokePathNV == NULL);
+ glewInfoFunc(fi, "glStencilThenCoverFillPathInstancedNV", glStencilThenCoverFillPathInstancedNV == NULL);
+ glewInfoFunc(fi, "glStencilThenCoverFillPathNV", glStencilThenCoverFillPathNV == NULL);
+ glewInfoFunc(fi, "glStencilThenCoverStrokePathInstancedNV", glStencilThenCoverStrokePathInstancedNV == NULL);
+ glewInfoFunc(fi, "glStencilThenCoverStrokePathNV", glStencilThenCoverStrokePathNV == NULL);
+ glewInfoFunc(fi, "glTransformPathNV", glTransformPathNV == NULL);
+ glewInfoFunc(fi, "glWeightPathsNV", glWeightPathsNV == NULL);
+}
+
+#endif /* GL_NV_path_rendering */
+
+#ifdef GL_NV_path_rendering_shared_edge
+
+static void _glewInfo_GL_NV_path_rendering_shared_edge (void)
+{
+ glewPrintExt("GL_NV_path_rendering_shared_edge", GLEW_NV_path_rendering_shared_edge, glewIsSupported("GL_NV_path_rendering_shared_edge"), glewGetExtension("GL_NV_path_rendering_shared_edge"));
+}
+
+#endif /* GL_NV_path_rendering_shared_edge */
+
+#ifdef GL_NV_pixel_buffer_object
+
+static void _glewInfo_GL_NV_pixel_buffer_object (void)
+{
+ glewPrintExt("GL_NV_pixel_buffer_object", GLEW_NV_pixel_buffer_object, glewIsSupported("GL_NV_pixel_buffer_object"), glewGetExtension("GL_NV_pixel_buffer_object"));
+}
+
+#endif /* GL_NV_pixel_buffer_object */
+
+#ifdef GL_NV_pixel_data_range
+
+static void _glewInfo_GL_NV_pixel_data_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_pixel_data_range", GLEW_NV_pixel_data_range, glewIsSupported("GL_NV_pixel_data_range"), glewGetExtension("GL_NV_pixel_data_range"));
+
+ glewInfoFunc(fi, "glFlushPixelDataRangeNV", glFlushPixelDataRangeNV == NULL);
+ glewInfoFunc(fi, "glPixelDataRangeNV", glPixelDataRangeNV == NULL);
+}
+
+#endif /* GL_NV_pixel_data_range */
+
+#ifdef GL_NV_platform_binary
+
+static void _glewInfo_GL_NV_platform_binary (void)
+{
+ glewPrintExt("GL_NV_platform_binary", GLEW_NV_platform_binary, glewIsSupported("GL_NV_platform_binary"), glewGetExtension("GL_NV_platform_binary"));
+}
+
+#endif /* GL_NV_platform_binary */
+
+#ifdef GL_NV_point_sprite
+
+static void _glewInfo_GL_NV_point_sprite (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_point_sprite", GLEW_NV_point_sprite, glewIsSupported("GL_NV_point_sprite"), glewGetExtension("GL_NV_point_sprite"));
+
+ glewInfoFunc(fi, "glPointParameteriNV", glPointParameteriNV == NULL);
+ glewInfoFunc(fi, "glPointParameterivNV", glPointParameterivNV == NULL);
+}
+
+#endif /* GL_NV_point_sprite */
+
+#ifdef GL_NV_polygon_mode
+
+static void _glewInfo_GL_NV_polygon_mode (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_polygon_mode", GLEW_NV_polygon_mode, glewIsSupported("GL_NV_polygon_mode"), glewGetExtension("GL_NV_polygon_mode"));
+
+ glewInfoFunc(fi, "glPolygonModeNV", glPolygonModeNV == NULL);
+}
+
+#endif /* GL_NV_polygon_mode */
+
+#ifdef GL_NV_present_video
+
+static void _glewInfo_GL_NV_present_video (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_present_video", GLEW_NV_present_video, glewIsSupported("GL_NV_present_video"), glewGetExtension("GL_NV_present_video"));
+
+ glewInfoFunc(fi, "glGetVideoi64vNV", glGetVideoi64vNV == NULL);
+ glewInfoFunc(fi, "glGetVideoivNV", glGetVideoivNV == NULL);
+ glewInfoFunc(fi, "glGetVideoui64vNV", glGetVideoui64vNV == NULL);
+ glewInfoFunc(fi, "glGetVideouivNV", glGetVideouivNV == NULL);
+ glewInfoFunc(fi, "glPresentFrameDualFillNV", glPresentFrameDualFillNV == NULL);
+ glewInfoFunc(fi, "glPresentFrameKeyedNV", glPresentFrameKeyedNV == NULL);
+}
+
+#endif /* GL_NV_present_video */
+
+#ifdef GL_NV_primitive_restart
+
+static void _glewInfo_GL_NV_primitive_restart (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_primitive_restart", GLEW_NV_primitive_restart, glewIsSupported("GL_NV_primitive_restart"), glewGetExtension("GL_NV_primitive_restart"));
+
+ glewInfoFunc(fi, "glPrimitiveRestartIndexNV", glPrimitiveRestartIndexNV == NULL);
+ glewInfoFunc(fi, "glPrimitiveRestartNV", glPrimitiveRestartNV == NULL);
+}
+
+#endif /* GL_NV_primitive_restart */
+
+#ifdef GL_NV_primitive_shading_rate
+
+static void _glewInfo_GL_NV_primitive_shading_rate (void)
+{
+ glewPrintExt("GL_NV_primitive_shading_rate", GLEW_NV_primitive_shading_rate, glewIsSupported("GL_NV_primitive_shading_rate"), glewGetExtension("GL_NV_primitive_shading_rate"));
+}
+
+#endif /* GL_NV_primitive_shading_rate */
+
+#ifdef GL_NV_query_resource_tag
+
+static void _glewInfo_GL_NV_query_resource_tag (void)
+{
+ glewPrintExt("GL_NV_query_resource_tag", GLEW_NV_query_resource_tag, glewIsSupported("GL_NV_query_resource_tag"), glewGetExtension("GL_NV_query_resource_tag"));
+}
+
+#endif /* GL_NV_query_resource_tag */
+
+#ifdef GL_NV_read_buffer
+
+static void _glewInfo_GL_NV_read_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_read_buffer", GLEW_NV_read_buffer, glewIsSupported("GL_NV_read_buffer"), glewGetExtension("GL_NV_read_buffer"));
+
+ glewInfoFunc(fi, "glReadBufferNV", glReadBufferNV == NULL);
+}
+
+#endif /* GL_NV_read_buffer */
+
+#ifdef GL_NV_read_buffer_front
+
+static void _glewInfo_GL_NV_read_buffer_front (void)
+{
+ glewPrintExt("GL_NV_read_buffer_front", GLEW_NV_read_buffer_front, glewIsSupported("GL_NV_read_buffer_front"), glewGetExtension("GL_NV_read_buffer_front"));
+}
+
+#endif /* GL_NV_read_buffer_front */
+
+#ifdef GL_NV_read_depth
+
+static void _glewInfo_GL_NV_read_depth (void)
+{
+ glewPrintExt("GL_NV_read_depth", GLEW_NV_read_depth, glewIsSupported("GL_NV_read_depth"), glewGetExtension("GL_NV_read_depth"));
+}
+
+#endif /* GL_NV_read_depth */
+
+#ifdef GL_NV_read_depth_stencil
+
+static void _glewInfo_GL_NV_read_depth_stencil (void)
+{
+ glewPrintExt("GL_NV_read_depth_stencil", GLEW_NV_read_depth_stencil, glewIsSupported("GL_NV_read_depth_stencil"), glewGetExtension("GL_NV_read_depth_stencil"));
+}
+
+#endif /* GL_NV_read_depth_stencil */
+
+#ifdef GL_NV_read_stencil
+
+static void _glewInfo_GL_NV_read_stencil (void)
+{
+ glewPrintExt("GL_NV_read_stencil", GLEW_NV_read_stencil, glewIsSupported("GL_NV_read_stencil"), glewGetExtension("GL_NV_read_stencil"));
+}
+
+#endif /* GL_NV_read_stencil */
+
+#ifdef GL_NV_register_combiners
+
+static void _glewInfo_GL_NV_register_combiners (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_register_combiners", GLEW_NV_register_combiners, glewIsSupported("GL_NV_register_combiners"), glewGetExtension("GL_NV_register_combiners"));
+
+ glewInfoFunc(fi, "glCombinerInputNV", glCombinerInputNV == NULL);
+ glewInfoFunc(fi, "glCombinerOutputNV", glCombinerOutputNV == NULL);
+ glewInfoFunc(fi, "glCombinerParameterfNV", glCombinerParameterfNV == NULL);
+ glewInfoFunc(fi, "glCombinerParameterfvNV", glCombinerParameterfvNV == NULL);
+ glewInfoFunc(fi, "glCombinerParameteriNV", glCombinerParameteriNV == NULL);
+ glewInfoFunc(fi, "glCombinerParameterivNV", glCombinerParameterivNV == NULL);
+ glewInfoFunc(fi, "glFinalCombinerInputNV", glFinalCombinerInputNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerInputParameterfvNV", glGetCombinerInputParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerInputParameterivNV", glGetCombinerInputParameterivNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerOutputParameterfvNV", glGetCombinerOutputParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerOutputParameterivNV", glGetCombinerOutputParameterivNV == NULL);
+ glewInfoFunc(fi, "glGetFinalCombinerInputParameterfvNV", glGetFinalCombinerInputParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetFinalCombinerInputParameterivNV", glGetFinalCombinerInputParameterivNV == NULL);
+}
+
+#endif /* GL_NV_register_combiners */
+
+#ifdef GL_NV_register_combiners2
+
+static void _glewInfo_GL_NV_register_combiners2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_register_combiners2", GLEW_NV_register_combiners2, glewIsSupported("GL_NV_register_combiners2"), glewGetExtension("GL_NV_register_combiners2"));
+
+ glewInfoFunc(fi, "glCombinerStageParameterfvNV", glCombinerStageParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetCombinerStageParameterfvNV", glGetCombinerStageParameterfvNV == NULL);
+}
+
+#endif /* GL_NV_register_combiners2 */
+
+#ifdef GL_NV_representative_fragment_test
+
+static void _glewInfo_GL_NV_representative_fragment_test (void)
+{
+ glewPrintExt("GL_NV_representative_fragment_test", GLEW_NV_representative_fragment_test, glewIsSupported("GL_NV_representative_fragment_test"), glewGetExtension("GL_NV_representative_fragment_test"));
+}
+
+#endif /* GL_NV_representative_fragment_test */
+
+#ifdef GL_NV_robustness_video_memory_purge
+
+static void _glewInfo_GL_NV_robustness_video_memory_purge (void)
+{
+ glewPrintExt("GL_NV_robustness_video_memory_purge", GLEW_NV_robustness_video_memory_purge, glewIsSupported("GL_NV_robustness_video_memory_purge"), glewGetExtension("GL_NV_robustness_video_memory_purge"));
+}
+
+#endif /* GL_NV_robustness_video_memory_purge */
+
+#ifdef GL_NV_sRGB_formats
+
+static void _glewInfo_GL_NV_sRGB_formats (void)
+{
+ glewPrintExt("GL_NV_sRGB_formats", GLEW_NV_sRGB_formats, glewIsSupported("GL_NV_sRGB_formats"), glewGetExtension("GL_NV_sRGB_formats"));
+}
+
+#endif /* GL_NV_sRGB_formats */
+
+#ifdef GL_NV_sample_locations
+
+static void _glewInfo_GL_NV_sample_locations (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_sample_locations", GLEW_NV_sample_locations, glewIsSupported("GL_NV_sample_locations"), glewGetExtension("GL_NV_sample_locations"));
+
+ glewInfoFunc(fi, "glFramebufferSampleLocationsfvNV", glFramebufferSampleLocationsfvNV == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferSampleLocationsfvNV", glNamedFramebufferSampleLocationsfvNV == NULL);
+ glewInfoFunc(fi, "glResolveDepthValuesNV", glResolveDepthValuesNV == NULL);
+}
+
+#endif /* GL_NV_sample_locations */
+
+#ifdef GL_NV_sample_mask_override_coverage
+
+static void _glewInfo_GL_NV_sample_mask_override_coverage (void)
+{
+ glewPrintExt("GL_NV_sample_mask_override_coverage", GLEW_NV_sample_mask_override_coverage, glewIsSupported("GL_NV_sample_mask_override_coverage"), glewGetExtension("GL_NV_sample_mask_override_coverage"));
+}
+
+#endif /* GL_NV_sample_mask_override_coverage */
+
+#ifdef GL_NV_scissor_exclusive
+
+static void _glewInfo_GL_NV_scissor_exclusive (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_scissor_exclusive", GLEW_NV_scissor_exclusive, glewIsSupported("GL_NV_scissor_exclusive"), glewGetExtension("GL_NV_scissor_exclusive"));
+
+ glewInfoFunc(fi, "glScissorExclusiveArrayvNV", glScissorExclusiveArrayvNV == NULL);
+ glewInfoFunc(fi, "glScissorExclusiveNV", glScissorExclusiveNV == NULL);
+}
+
+#endif /* GL_NV_scissor_exclusive */
+
+#ifdef GL_NV_shader_atomic_counters
+
+static void _glewInfo_GL_NV_shader_atomic_counters (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_counters", GLEW_NV_shader_atomic_counters, glewIsSupported("GL_NV_shader_atomic_counters"), glewGetExtension("GL_NV_shader_atomic_counters"));
+}
+
+#endif /* GL_NV_shader_atomic_counters */
+
+#ifdef GL_NV_shader_atomic_float
+
+static void _glewInfo_GL_NV_shader_atomic_float (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_float", GLEW_NV_shader_atomic_float, glewIsSupported("GL_NV_shader_atomic_float"), glewGetExtension("GL_NV_shader_atomic_float"));
+}
+
+#endif /* GL_NV_shader_atomic_float */
+
+#ifdef GL_NV_shader_atomic_float64
+
+static void _glewInfo_GL_NV_shader_atomic_float64 (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_float64", GLEW_NV_shader_atomic_float64, glewIsSupported("GL_NV_shader_atomic_float64"), glewGetExtension("GL_NV_shader_atomic_float64"));
+}
+
+#endif /* GL_NV_shader_atomic_float64 */
+
+#ifdef GL_NV_shader_atomic_fp16_vector
+
+static void _glewInfo_GL_NV_shader_atomic_fp16_vector (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_fp16_vector", GLEW_NV_shader_atomic_fp16_vector, glewIsSupported("GL_NV_shader_atomic_fp16_vector"), glewGetExtension("GL_NV_shader_atomic_fp16_vector"));
+}
+
+#endif /* GL_NV_shader_atomic_fp16_vector */
+
+#ifdef GL_NV_shader_atomic_int64
+
+static void _glewInfo_GL_NV_shader_atomic_int64 (void)
+{
+ glewPrintExt("GL_NV_shader_atomic_int64", GLEW_NV_shader_atomic_int64, glewIsSupported("GL_NV_shader_atomic_int64"), glewGetExtension("GL_NV_shader_atomic_int64"));
+}
+
+#endif /* GL_NV_shader_atomic_int64 */
+
+#ifdef GL_NV_shader_buffer_load
+
+static void _glewInfo_GL_NV_shader_buffer_load (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_shader_buffer_load", GLEW_NV_shader_buffer_load, glewIsSupported("GL_NV_shader_buffer_load"), glewGetExtension("GL_NV_shader_buffer_load"));
+
+ glewInfoFunc(fi, "glGetBufferParameterui64vNV", glGetBufferParameterui64vNV == NULL);
+ glewInfoFunc(fi, "glGetIntegerui64vNV", glGetIntegerui64vNV == NULL);
+ glewInfoFunc(fi, "glGetNamedBufferParameterui64vNV", glGetNamedBufferParameterui64vNV == NULL);
+ glewInfoFunc(fi, "glIsBufferResidentNV", glIsBufferResidentNV == NULL);
+ glewInfoFunc(fi, "glIsNamedBufferResidentNV", glIsNamedBufferResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeBufferNonResidentNV", glMakeBufferNonResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeBufferResidentNV", glMakeBufferResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeNamedBufferNonResidentNV", glMakeNamedBufferNonResidentNV == NULL);
+ glewInfoFunc(fi, "glMakeNamedBufferResidentNV", glMakeNamedBufferResidentNV == NULL);
+ glewInfoFunc(fi, "glProgramUniformui64NV", glProgramUniformui64NV == NULL);
+ glewInfoFunc(fi, "glProgramUniformui64vNV", glProgramUniformui64vNV == NULL);
+ glewInfoFunc(fi, "glUniformui64NV", glUniformui64NV == NULL);
+ glewInfoFunc(fi, "glUniformui64vNV", glUniformui64vNV == NULL);
+}
+
+#endif /* GL_NV_shader_buffer_load */
+
+#ifdef GL_NV_shader_noperspective_interpolation
+
+static void _glewInfo_GL_NV_shader_noperspective_interpolation (void)
+{
+ glewPrintExt("GL_NV_shader_noperspective_interpolation", GLEW_NV_shader_noperspective_interpolation, glewIsSupported("GL_NV_shader_noperspective_interpolation"), glewGetExtension("GL_NV_shader_noperspective_interpolation"));
+}
+
+#endif /* GL_NV_shader_noperspective_interpolation */
+
+#ifdef GL_NV_shader_storage_buffer_object
+
+static void _glewInfo_GL_NV_shader_storage_buffer_object (void)
+{
+ glewPrintExt("GL_NV_shader_storage_buffer_object", GLEW_NV_shader_storage_buffer_object, glewIsSupported("GL_NV_shader_storage_buffer_object"), glewGetExtension("GL_NV_shader_storage_buffer_object"));
+}
+
+#endif /* GL_NV_shader_storage_buffer_object */
+
+#ifdef GL_NV_shader_subgroup_partitioned
+
+static void _glewInfo_GL_NV_shader_subgroup_partitioned (void)
+{
+ glewPrintExt("GL_NV_shader_subgroup_partitioned", GLEW_NV_shader_subgroup_partitioned, glewIsSupported("GL_NV_shader_subgroup_partitioned"), glewGetExtension("GL_NV_shader_subgroup_partitioned"));
+}
+
+#endif /* GL_NV_shader_subgroup_partitioned */
+
+#ifdef GL_NV_shader_texture_footprint
+
+static void _glewInfo_GL_NV_shader_texture_footprint (void)
+{
+ glewPrintExt("GL_NV_shader_texture_footprint", GLEW_NV_shader_texture_footprint, glewIsSupported("GL_NV_shader_texture_footprint"), glewGetExtension("GL_NV_shader_texture_footprint"));
+}
+
+#endif /* GL_NV_shader_texture_footprint */
+
+#ifdef GL_NV_shader_thread_group
+
+static void _glewInfo_GL_NV_shader_thread_group (void)
+{
+ glewPrintExt("GL_NV_shader_thread_group", GLEW_NV_shader_thread_group, glewIsSupported("GL_NV_shader_thread_group"), glewGetExtension("GL_NV_shader_thread_group"));
+}
+
+#endif /* GL_NV_shader_thread_group */
+
+#ifdef GL_NV_shader_thread_shuffle
+
+static void _glewInfo_GL_NV_shader_thread_shuffle (void)
+{
+ glewPrintExt("GL_NV_shader_thread_shuffle", GLEW_NV_shader_thread_shuffle, glewIsSupported("GL_NV_shader_thread_shuffle"), glewGetExtension("GL_NV_shader_thread_shuffle"));
+}
+
+#endif /* GL_NV_shader_thread_shuffle */
+
+#ifdef GL_NV_shading_rate_image
+
+static void _glewInfo_GL_NV_shading_rate_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_shading_rate_image", GLEW_NV_shading_rate_image, glewIsSupported("GL_NV_shading_rate_image"), glewGetExtension("GL_NV_shading_rate_image"));
+
+ glewInfoFunc(fi, "glBindShadingRateImageNV", glBindShadingRateImageNV == NULL);
+ glewInfoFunc(fi, "glGetShadingRateImagePaletteNV", glGetShadingRateImagePaletteNV == NULL);
+ glewInfoFunc(fi, "glGetShadingRateSampleLocationivNV", glGetShadingRateSampleLocationivNV == NULL);
+ glewInfoFunc(fi, "glShadingRateImageBarrierNV", glShadingRateImageBarrierNV == NULL);
+ glewInfoFunc(fi, "glShadingRateImagePaletteNV", glShadingRateImagePaletteNV == NULL);
+ glewInfoFunc(fi, "glShadingRateSampleOrderCustomNV", glShadingRateSampleOrderCustomNV == NULL);
+ glewInfoFunc(fi, "glShadingRateSampleOrderNV", glShadingRateSampleOrderNV == NULL);
+}
+
+#endif /* GL_NV_shading_rate_image */
+
+#ifdef GL_NV_shadow_samplers_array
+
+static void _glewInfo_GL_NV_shadow_samplers_array (void)
+{
+ glewPrintExt("GL_NV_shadow_samplers_array", GLEW_NV_shadow_samplers_array, glewIsSupported("GL_NV_shadow_samplers_array"), glewGetExtension("GL_NV_shadow_samplers_array"));
+}
+
+#endif /* GL_NV_shadow_samplers_array */
+
+#ifdef GL_NV_shadow_samplers_cube
+
+static void _glewInfo_GL_NV_shadow_samplers_cube (void)
+{
+ glewPrintExt("GL_NV_shadow_samplers_cube", GLEW_NV_shadow_samplers_cube, glewIsSupported("GL_NV_shadow_samplers_cube"), glewGetExtension("GL_NV_shadow_samplers_cube"));
+}
+
+#endif /* GL_NV_shadow_samplers_cube */
+
+#ifdef GL_NV_stereo_view_rendering
+
+static void _glewInfo_GL_NV_stereo_view_rendering (void)
+{
+ glewPrintExt("GL_NV_stereo_view_rendering", GLEW_NV_stereo_view_rendering, glewIsSupported("GL_NV_stereo_view_rendering"), glewGetExtension("GL_NV_stereo_view_rendering"));
+}
+
+#endif /* GL_NV_stereo_view_rendering */
+
+#ifdef GL_NV_tessellation_program5
+
+static void _glewInfo_GL_NV_tessellation_program5 (void)
+{
+ glewPrintExt("GL_NV_tessellation_program5", GLEW_NV_tessellation_program5, glewIsSupported("GL_NV_tessellation_program5"), glewGetExtension("GL_NV_gpu_program5"));
+}
+
+#endif /* GL_NV_tessellation_program5 */
+
+#ifdef GL_NV_texgen_emboss
+
+static void _glewInfo_GL_NV_texgen_emboss (void)
+{
+ glewPrintExt("GL_NV_texgen_emboss", GLEW_NV_texgen_emboss, glewIsSupported("GL_NV_texgen_emboss"), glewGetExtension("GL_NV_texgen_emboss"));
+}
+
+#endif /* GL_NV_texgen_emboss */
+
+#ifdef GL_NV_texgen_reflection
+
+static void _glewInfo_GL_NV_texgen_reflection (void)
+{
+ glewPrintExt("GL_NV_texgen_reflection", GLEW_NV_texgen_reflection, glewIsSupported("GL_NV_texgen_reflection"), glewGetExtension("GL_NV_texgen_reflection"));
+}
+
+#endif /* GL_NV_texgen_reflection */
+
+#ifdef GL_NV_texture_array
+
+static void _glewInfo_GL_NV_texture_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_texture_array", GLEW_NV_texture_array, glewIsSupported("GL_NV_texture_array"), glewGetExtension("GL_NV_texture_array"));
+
+ glewInfoFunc(fi, "glCompressedTexImage3DNV", glCompressedTexImage3DNV == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage3DNV", glCompressedTexSubImage3DNV == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage3DNV", glCopyTexSubImage3DNV == NULL);
+ glewInfoFunc(fi, "glFramebufferTextureLayerNV", glFramebufferTextureLayerNV == NULL);
+ glewInfoFunc(fi, "glTexImage3DNV", glTexImage3DNV == NULL);
+ glewInfoFunc(fi, "glTexSubImage3DNV", glTexSubImage3DNV == NULL);
+}
+
+#endif /* GL_NV_texture_array */
+
+#ifdef GL_NV_texture_barrier
+
+static void _glewInfo_GL_NV_texture_barrier (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_texture_barrier", GLEW_NV_texture_barrier, glewIsSupported("GL_NV_texture_barrier"), glewGetExtension("GL_NV_texture_barrier"));
+
+ glewInfoFunc(fi, "glTextureBarrierNV", glTextureBarrierNV == NULL);
+}
+
+#endif /* GL_NV_texture_barrier */
+
+#ifdef GL_NV_texture_border_clamp
+
+static void _glewInfo_GL_NV_texture_border_clamp (void)
+{
+ glewPrintExt("GL_NV_texture_border_clamp", GLEW_NV_texture_border_clamp, glewIsSupported("GL_NV_texture_border_clamp"), glewGetExtension("GL_NV_texture_border_clamp"));
+}
+
+#endif /* GL_NV_texture_border_clamp */
+
+#ifdef GL_NV_texture_compression_latc
+
+static void _glewInfo_GL_NV_texture_compression_latc (void)
+{
+ glewPrintExt("GL_NV_texture_compression_latc", GLEW_NV_texture_compression_latc, glewIsSupported("GL_NV_texture_compression_latc"), glewGetExtension("GL_NV_texture_compression_latc"));
+}
+
+#endif /* GL_NV_texture_compression_latc */
+
+#ifdef GL_NV_texture_compression_s3tc
+
+static void _glewInfo_GL_NV_texture_compression_s3tc (void)
+{
+ glewPrintExt("GL_NV_texture_compression_s3tc", GLEW_NV_texture_compression_s3tc, glewIsSupported("GL_NV_texture_compression_s3tc"), glewGetExtension("GL_NV_texture_compression_s3tc"));
+}
+
+#endif /* GL_NV_texture_compression_s3tc */
+
+#ifdef GL_NV_texture_compression_s3tc_update
+
+static void _glewInfo_GL_NV_texture_compression_s3tc_update (void)
+{
+ glewPrintExt("GL_NV_texture_compression_s3tc_update", GLEW_NV_texture_compression_s3tc_update, glewIsSupported("GL_NV_texture_compression_s3tc_update"), glewGetExtension("GL_NV_texture_compression_s3tc_update"));
+}
+
+#endif /* GL_NV_texture_compression_s3tc_update */
+
+#ifdef GL_NV_texture_compression_vtc
+
+static void _glewInfo_GL_NV_texture_compression_vtc (void)
+{
+ glewPrintExt("GL_NV_texture_compression_vtc", GLEW_NV_texture_compression_vtc, glewIsSupported("GL_NV_texture_compression_vtc"), glewGetExtension("GL_NV_texture_compression_vtc"));
+}
+
+#endif /* GL_NV_texture_compression_vtc */
+
+#ifdef GL_NV_texture_env_combine4
+
+static void _glewInfo_GL_NV_texture_env_combine4 (void)
+{
+ glewPrintExt("GL_NV_texture_env_combine4", GLEW_NV_texture_env_combine4, glewIsSupported("GL_NV_texture_env_combine4"), glewGetExtension("GL_NV_texture_env_combine4"));
+}
+
+#endif /* GL_NV_texture_env_combine4 */
+
+#ifdef GL_NV_texture_expand_normal
+
+static void _glewInfo_GL_NV_texture_expand_normal (void)
+{
+ glewPrintExt("GL_NV_texture_expand_normal", GLEW_NV_texture_expand_normal, glewIsSupported("GL_NV_texture_expand_normal"), glewGetExtension("GL_NV_texture_expand_normal"));
+}
+
+#endif /* GL_NV_texture_expand_normal */
+
+#ifdef GL_NV_texture_multisample
+
+static void _glewInfo_GL_NV_texture_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_texture_multisample", GLEW_NV_texture_multisample, glewIsSupported("GL_NV_texture_multisample"), glewGetExtension("GL_NV_texture_multisample"));
+
+ glewInfoFunc(fi, "glTexImage2DMultisampleCoverageNV", glTexImage2DMultisampleCoverageNV == NULL);
+ glewInfoFunc(fi, "glTexImage3DMultisampleCoverageNV", glTexImage3DMultisampleCoverageNV == NULL);
+ glewInfoFunc(fi, "glTextureImage2DMultisampleCoverageNV", glTextureImage2DMultisampleCoverageNV == NULL);
+ glewInfoFunc(fi, "glTextureImage2DMultisampleNV", glTextureImage2DMultisampleNV == NULL);
+ glewInfoFunc(fi, "glTextureImage3DMultisampleCoverageNV", glTextureImage3DMultisampleCoverageNV == NULL);
+ glewInfoFunc(fi, "glTextureImage3DMultisampleNV", glTextureImage3DMultisampleNV == NULL);
+}
+
+#endif /* GL_NV_texture_multisample */
+
+#ifdef GL_NV_texture_npot_2D_mipmap
+
+static void _glewInfo_GL_NV_texture_npot_2D_mipmap (void)
+{
+ glewPrintExt("GL_NV_texture_npot_2D_mipmap", GLEW_NV_texture_npot_2D_mipmap, glewIsSupported("GL_NV_texture_npot_2D_mipmap"), glewGetExtension("GL_NV_texture_npot_2D_mipmap"));
+}
+
+#endif /* GL_NV_texture_npot_2D_mipmap */
+
+#ifdef GL_NV_texture_rectangle
+
+static void _glewInfo_GL_NV_texture_rectangle (void)
+{
+ glewPrintExt("GL_NV_texture_rectangle", GLEW_NV_texture_rectangle, glewIsSupported("GL_NV_texture_rectangle"), glewGetExtension("GL_NV_texture_rectangle"));
+}
+
+#endif /* GL_NV_texture_rectangle */
+
+#ifdef GL_NV_texture_rectangle_compressed
+
+static void _glewInfo_GL_NV_texture_rectangle_compressed (void)
+{
+ glewPrintExt("GL_NV_texture_rectangle_compressed", GLEW_NV_texture_rectangle_compressed, glewIsSupported("GL_NV_texture_rectangle_compressed"), glewGetExtension("GL_NV_texture_rectangle_compressed"));
+}
+
+#endif /* GL_NV_texture_rectangle_compressed */
+
+#ifdef GL_NV_texture_shader
+
+static void _glewInfo_GL_NV_texture_shader (void)
+{
+ glewPrintExt("GL_NV_texture_shader", GLEW_NV_texture_shader, glewIsSupported("GL_NV_texture_shader"), glewGetExtension("GL_NV_texture_shader"));
+}
+
+#endif /* GL_NV_texture_shader */
+
+#ifdef GL_NV_texture_shader2
+
+static void _glewInfo_GL_NV_texture_shader2 (void)
+{
+ glewPrintExt("GL_NV_texture_shader2", GLEW_NV_texture_shader2, glewIsSupported("GL_NV_texture_shader2"), glewGetExtension("GL_NV_texture_shader2"));
+}
+
+#endif /* GL_NV_texture_shader2 */
+
+#ifdef GL_NV_texture_shader3
+
+static void _glewInfo_GL_NV_texture_shader3 (void)
+{
+ glewPrintExt("GL_NV_texture_shader3", GLEW_NV_texture_shader3, glewIsSupported("GL_NV_texture_shader3"), glewGetExtension("GL_NV_texture_shader3"));
+}
+
+#endif /* GL_NV_texture_shader3 */
+
+#ifdef GL_NV_timeline_semaphore
+
+static void _glewInfo_GL_NV_timeline_semaphore (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_timeline_semaphore", GLEW_NV_timeline_semaphore, glewIsSupported("GL_NV_timeline_semaphore"), glewGetExtension("GL_NV_timeline_semaphore"));
+
+ glewInfoFunc(fi, "glCreateSemaphoresNV", glCreateSemaphoresNV == NULL);
+ glewInfoFunc(fi, "glGetSemaphoreParameterivNV", glGetSemaphoreParameterivNV == NULL);
+ glewInfoFunc(fi, "glSemaphoreParameterivNV", glSemaphoreParameterivNV == NULL);
+}
+
+#endif /* GL_NV_timeline_semaphore */
+
+#ifdef GL_NV_transform_feedback
+
+static void _glewInfo_GL_NV_transform_feedback (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_transform_feedback", GLEW_NV_transform_feedback, glewIsSupported("GL_NV_transform_feedback"), glewGetExtension("GL_NV_transform_feedback"));
+
+ glewInfoFunc(fi, "glActiveVaryingNV", glActiveVaryingNV == NULL);
+ glewInfoFunc(fi, "glBeginTransformFeedbackNV", glBeginTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glBindBufferBaseNV", glBindBufferBaseNV == NULL);
+ glewInfoFunc(fi, "glBindBufferOffsetNV", glBindBufferOffsetNV == NULL);
+ glewInfoFunc(fi, "glBindBufferRangeNV", glBindBufferRangeNV == NULL);
+ glewInfoFunc(fi, "glEndTransformFeedbackNV", glEndTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glGetActiveVaryingNV", glGetActiveVaryingNV == NULL);
+ glewInfoFunc(fi, "glGetTransformFeedbackVaryingNV", glGetTransformFeedbackVaryingNV == NULL);
+ glewInfoFunc(fi, "glGetVaryingLocationNV", glGetVaryingLocationNV == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackAttribsNV", glTransformFeedbackAttribsNV == NULL);
+ glewInfoFunc(fi, "glTransformFeedbackVaryingsNV", glTransformFeedbackVaryingsNV == NULL);
+}
+
+#endif /* GL_NV_transform_feedback */
+
+#ifdef GL_NV_transform_feedback2
+
+static void _glewInfo_GL_NV_transform_feedback2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_transform_feedback2", GLEW_NV_transform_feedback2, glewIsSupported("GL_NV_transform_feedback2"), glewGetExtension("GL_NV_transform_feedback2"));
+
+ glewInfoFunc(fi, "glBindTransformFeedbackNV", glBindTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glDeleteTransformFeedbacksNV", glDeleteTransformFeedbacksNV == NULL);
+ glewInfoFunc(fi, "glDrawTransformFeedbackNV", glDrawTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glGenTransformFeedbacksNV", glGenTransformFeedbacksNV == NULL);
+ glewInfoFunc(fi, "glIsTransformFeedbackNV", glIsTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glPauseTransformFeedbackNV", glPauseTransformFeedbackNV == NULL);
+ glewInfoFunc(fi, "glResumeTransformFeedbackNV", glResumeTransformFeedbackNV == NULL);
+}
+
+#endif /* GL_NV_transform_feedback2 */
+
+#ifdef GL_NV_uniform_buffer_unified_memory
+
+static void _glewInfo_GL_NV_uniform_buffer_unified_memory (void)
+{
+ glewPrintExt("GL_NV_uniform_buffer_unified_memory", GLEW_NV_uniform_buffer_unified_memory, glewIsSupported("GL_NV_uniform_buffer_unified_memory"), glewGetExtension("GL_NV_uniform_buffer_unified_memory"));
+}
+
+#endif /* GL_NV_uniform_buffer_unified_memory */
+
+#ifdef GL_NV_vdpau_interop
+
+static void _glewInfo_GL_NV_vdpau_interop (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vdpau_interop", GLEW_NV_vdpau_interop, glewIsSupported("GL_NV_vdpau_interop"), glewGetExtension("GL_NV_vdpau_interop"));
+
+ glewInfoFunc(fi, "glVDPAUFiniNV", glVDPAUFiniNV == NULL);
+ glewInfoFunc(fi, "glVDPAUGetSurfaceivNV", glVDPAUGetSurfaceivNV == NULL);
+ glewInfoFunc(fi, "glVDPAUInitNV", glVDPAUInitNV == NULL);
+ glewInfoFunc(fi, "glVDPAUIsSurfaceNV", glVDPAUIsSurfaceNV == NULL);
+ glewInfoFunc(fi, "glVDPAUMapSurfacesNV", glVDPAUMapSurfacesNV == NULL);
+ glewInfoFunc(fi, "glVDPAURegisterOutputSurfaceNV", glVDPAURegisterOutputSurfaceNV == NULL);
+ glewInfoFunc(fi, "glVDPAURegisterVideoSurfaceNV", glVDPAURegisterVideoSurfaceNV == NULL);
+ glewInfoFunc(fi, "glVDPAUSurfaceAccessNV", glVDPAUSurfaceAccessNV == NULL);
+ glewInfoFunc(fi, "glVDPAUUnmapSurfacesNV", glVDPAUUnmapSurfacesNV == NULL);
+ glewInfoFunc(fi, "glVDPAUUnregisterSurfaceNV", glVDPAUUnregisterSurfaceNV == NULL);
+}
+
+#endif /* GL_NV_vdpau_interop */
+
+#ifdef GL_NV_vdpau_interop2
+
+static void _glewInfo_GL_NV_vdpau_interop2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vdpau_interop2", GLEW_NV_vdpau_interop2, glewIsSupported("GL_NV_vdpau_interop2"), glewGetExtension("GL_NV_vdpau_interop2"));
+
+ glewInfoFunc(fi, "glVDPAURegisterVideoSurfaceWithPictureStructureNV", glVDPAURegisterVideoSurfaceWithPictureStructureNV == NULL);
+}
+
+#endif /* GL_NV_vdpau_interop2 */
+
+#ifdef GL_NV_vertex_array_range
+
+static void _glewInfo_GL_NV_vertex_array_range (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vertex_array_range", GLEW_NV_vertex_array_range, glewIsSupported("GL_NV_vertex_array_range"), glewGetExtension("GL_NV_vertex_array_range"));
+
+ glewInfoFunc(fi, "glFlushVertexArrayRangeNV", glFlushVertexArrayRangeNV == NULL);
+ glewInfoFunc(fi, "glVertexArrayRangeNV", glVertexArrayRangeNV == NULL);
+}
+
+#endif /* GL_NV_vertex_array_range */
+
+#ifdef GL_NV_vertex_array_range2
+
+static void _glewInfo_GL_NV_vertex_array_range2 (void)
+{
+ glewPrintExt("GL_NV_vertex_array_range2", GLEW_NV_vertex_array_range2, glewIsSupported("GL_NV_vertex_array_range2"), glewGetExtension("GL_NV_vertex_array_range2"));
+}
+
+#endif /* GL_NV_vertex_array_range2 */
+
+#ifdef GL_NV_vertex_attrib_integer_64bit
+
+static void _glewInfo_GL_NV_vertex_attrib_integer_64bit (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vertex_attrib_integer_64bit", GLEW_NV_vertex_attrib_integer_64bit, glewIsSupported("GL_NV_vertex_attrib_integer_64bit"), glewGetExtension("GL_NV_vertex_attrib_integer_64bit"));
+
+ glewInfoFunc(fi, "glGetVertexAttribLi64vNV", glGetVertexAttribLi64vNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribLui64vNV", glGetVertexAttribLui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1i64NV", glVertexAttribL1i64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1i64vNV", glVertexAttribL1i64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1ui64NV", glVertexAttribL1ui64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL1ui64vNV", glVertexAttribL1ui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2i64NV", glVertexAttribL2i64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2i64vNV", glVertexAttribL2i64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2ui64NV", glVertexAttribL2ui64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL2ui64vNV", glVertexAttribL2ui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3i64NV", glVertexAttribL3i64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3i64vNV", glVertexAttribL3i64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3ui64NV", glVertexAttribL3ui64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL3ui64vNV", glVertexAttribL3ui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4i64NV", glVertexAttribL4i64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4i64vNV", glVertexAttribL4i64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4ui64NV", glVertexAttribL4ui64NV == NULL);
+ glewInfoFunc(fi, "glVertexAttribL4ui64vNV", glVertexAttribL4ui64vNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribLFormatNV", glVertexAttribLFormatNV == NULL);
+}
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
+#ifdef GL_NV_vertex_buffer_unified_memory
+
+static void _glewInfo_GL_NV_vertex_buffer_unified_memory (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vertex_buffer_unified_memory", GLEW_NV_vertex_buffer_unified_memory, glewIsSupported("GL_NV_vertex_buffer_unified_memory"), glewGetExtension("GL_NV_vertex_buffer_unified_memory"));
+
+ glewInfoFunc(fi, "glBufferAddressRangeNV", glBufferAddressRangeNV == NULL);
+ glewInfoFunc(fi, "glColorFormatNV", glColorFormatNV == NULL);
+ glewInfoFunc(fi, "glEdgeFlagFormatNV", glEdgeFlagFormatNV == NULL);
+ glewInfoFunc(fi, "glFogCoordFormatNV", glFogCoordFormatNV == NULL);
+ glewInfoFunc(fi, "glGetIntegerui64i_vNV", glGetIntegerui64i_vNV == NULL);
+ glewInfoFunc(fi, "glIndexFormatNV", glIndexFormatNV == NULL);
+ glewInfoFunc(fi, "glNormalFormatNV", glNormalFormatNV == NULL);
+ glewInfoFunc(fi, "glSecondaryColorFormatNV", glSecondaryColorFormatNV == NULL);
+ glewInfoFunc(fi, "glTexCoordFormatNV", glTexCoordFormatNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribFormatNV", glVertexAttribFormatNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribIFormatNV", glVertexAttribIFormatNV == NULL);
+ glewInfoFunc(fi, "glVertexFormatNV", glVertexFormatNV == NULL);
+}
+
+#endif /* GL_NV_vertex_buffer_unified_memory */
+
+#ifdef GL_NV_vertex_program
+
+static void _glewInfo_GL_NV_vertex_program (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_vertex_program", GLEW_NV_vertex_program, glewIsSupported("GL_NV_vertex_program"), glewGetExtension("GL_NV_vertex_program"));
+
+ glewInfoFunc(fi, "glAreProgramsResidentNV", glAreProgramsResidentNV == NULL);
+ glewInfoFunc(fi, "glBindProgramNV", glBindProgramNV == NULL);
+ glewInfoFunc(fi, "glDeleteProgramsNV", glDeleteProgramsNV == NULL);
+ glewInfoFunc(fi, "glExecuteProgramNV", glExecuteProgramNV == NULL);
+ glewInfoFunc(fi, "glGenProgramsNV", glGenProgramsNV == NULL);
+ glewInfoFunc(fi, "glGetProgramParameterdvNV", glGetProgramParameterdvNV == NULL);
+ glewInfoFunc(fi, "glGetProgramParameterfvNV", glGetProgramParameterfvNV == NULL);
+ glewInfoFunc(fi, "glGetProgramStringNV", glGetProgramStringNV == NULL);
+ glewInfoFunc(fi, "glGetProgramivNV", glGetProgramivNV == NULL);
+ glewInfoFunc(fi, "glGetTrackMatrixivNV", glGetTrackMatrixivNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribPointervNV", glGetVertexAttribPointervNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribdvNV", glGetVertexAttribdvNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribfvNV", glGetVertexAttribfvNV == NULL);
+ glewInfoFunc(fi, "glGetVertexAttribivNV", glGetVertexAttribivNV == NULL);
+ glewInfoFunc(fi, "glIsProgramNV", glIsProgramNV == NULL);
+ glewInfoFunc(fi, "glLoadProgramNV", glLoadProgramNV == NULL);
+ glewInfoFunc(fi, "glProgramParameter4dNV", glProgramParameter4dNV == NULL);
+ glewInfoFunc(fi, "glProgramParameter4dvNV", glProgramParameter4dvNV == NULL);
+ glewInfoFunc(fi, "glProgramParameter4fNV", glProgramParameter4fNV == NULL);
+ glewInfoFunc(fi, "glProgramParameter4fvNV", glProgramParameter4fvNV == NULL);
+ glewInfoFunc(fi, "glProgramParameters4dvNV", glProgramParameters4dvNV == NULL);
+ glewInfoFunc(fi, "glProgramParameters4fvNV", glProgramParameters4fvNV == NULL);
+ glewInfoFunc(fi, "glRequestResidentProgramsNV", glRequestResidentProgramsNV == NULL);
+ glewInfoFunc(fi, "glTrackMatrixNV", glTrackMatrixNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dNV", glVertexAttrib1dNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1dvNV", glVertexAttrib1dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fNV", glVertexAttrib1fNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1fvNV", glVertexAttrib1fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1sNV", glVertexAttrib1sNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib1svNV", glVertexAttrib1svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dNV", glVertexAttrib2dNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2dvNV", glVertexAttrib2dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fNV", glVertexAttrib2fNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2fvNV", glVertexAttrib2fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2sNV", glVertexAttrib2sNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib2svNV", glVertexAttrib2svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dNV", glVertexAttrib3dNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3dvNV", glVertexAttrib3dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fNV", glVertexAttrib3fNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3fvNV", glVertexAttrib3fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3sNV", glVertexAttrib3sNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib3svNV", glVertexAttrib3svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dNV", glVertexAttrib4dNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4dvNV", glVertexAttrib4dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fNV", glVertexAttrib4fNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4fvNV", glVertexAttrib4fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4sNV", glVertexAttrib4sNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4svNV", glVertexAttrib4svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ubNV", glVertexAttrib4ubNV == NULL);
+ glewInfoFunc(fi, "glVertexAttrib4ubvNV", glVertexAttrib4ubvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribPointerNV", glVertexAttribPointerNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs1dvNV", glVertexAttribs1dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs1fvNV", glVertexAttribs1fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs1svNV", glVertexAttribs1svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs2dvNV", glVertexAttribs2dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs2fvNV", glVertexAttribs2fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs2svNV", glVertexAttribs2svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs3dvNV", glVertexAttribs3dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs3fvNV", glVertexAttribs3fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs3svNV", glVertexAttribs3svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4dvNV", glVertexAttribs4dvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4fvNV", glVertexAttribs4fvNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4svNV", glVertexAttribs4svNV == NULL);
+ glewInfoFunc(fi, "glVertexAttribs4ubvNV", glVertexAttribs4ubvNV == NULL);
+}
+
+#endif /* GL_NV_vertex_program */
+
+#ifdef GL_NV_vertex_program1_1
+
+static void _glewInfo_GL_NV_vertex_program1_1 (void)
+{
+ glewPrintExt("GL_NV_vertex_program1_1", GLEW_NV_vertex_program1_1, glewIsSupported("GL_NV_vertex_program1_1"), glewGetExtension("GL_NV_vertex_program1_1"));
+}
+
+#endif /* GL_NV_vertex_program1_1 */
+
+#ifdef GL_NV_vertex_program2
+
+static void _glewInfo_GL_NV_vertex_program2 (void)
+{
+ glewPrintExt("GL_NV_vertex_program2", GLEW_NV_vertex_program2, glewIsSupported("GL_NV_vertex_program2"), glewGetExtension("GL_NV_vertex_program2"));
+}
+
+#endif /* GL_NV_vertex_program2 */
+
+#ifdef GL_NV_vertex_program2_option
+
+static void _glewInfo_GL_NV_vertex_program2_option (void)
+{
+ glewPrintExt("GL_NV_vertex_program2_option", GLEW_NV_vertex_program2_option, glewIsSupported("GL_NV_vertex_program2_option"), glewGetExtension("GL_NV_vertex_program2_option"));
+}
+
+#endif /* GL_NV_vertex_program2_option */
+
+#ifdef GL_NV_vertex_program3
+
+static void _glewInfo_GL_NV_vertex_program3 (void)
+{
+ glewPrintExt("GL_NV_vertex_program3", GLEW_NV_vertex_program3, glewIsSupported("GL_NV_vertex_program3"), glewGetExtension("GL_NV_vertex_program3"));
+}
+
+#endif /* GL_NV_vertex_program3 */
+
+#ifdef GL_NV_vertex_program4
+
+static void _glewInfo_GL_NV_vertex_program4 (void)
+{
+ glewPrintExt("GL_NV_vertex_program4", GLEW_NV_vertex_program4, glewIsSupported("GL_NV_vertex_program4"), glewGetExtension("GL_NV_gpu_program4"));
+}
+
+#endif /* GL_NV_vertex_program4 */
+
+#ifdef GL_NV_video_capture
+
+static void _glewInfo_GL_NV_video_capture (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_video_capture", GLEW_NV_video_capture, glewIsSupported("GL_NV_video_capture"), glewGetExtension("GL_NV_video_capture"));
+
+ glewInfoFunc(fi, "glBeginVideoCaptureNV", glBeginVideoCaptureNV == NULL);
+ glewInfoFunc(fi, "glBindVideoCaptureStreamBufferNV", glBindVideoCaptureStreamBufferNV == NULL);
+ glewInfoFunc(fi, "glBindVideoCaptureStreamTextureNV", glBindVideoCaptureStreamTextureNV == NULL);
+ glewInfoFunc(fi, "glEndVideoCaptureNV", glEndVideoCaptureNV == NULL);
+ glewInfoFunc(fi, "glGetVideoCaptureStreamdvNV", glGetVideoCaptureStreamdvNV == NULL);
+ glewInfoFunc(fi, "glGetVideoCaptureStreamfvNV", glGetVideoCaptureStreamfvNV == NULL);
+ glewInfoFunc(fi, "glGetVideoCaptureStreamivNV", glGetVideoCaptureStreamivNV == NULL);
+ glewInfoFunc(fi, "glGetVideoCaptureivNV", glGetVideoCaptureivNV == NULL);
+ glewInfoFunc(fi, "glVideoCaptureNV", glVideoCaptureNV == NULL);
+ glewInfoFunc(fi, "glVideoCaptureStreamParameterdvNV", glVideoCaptureStreamParameterdvNV == NULL);
+ glewInfoFunc(fi, "glVideoCaptureStreamParameterfvNV", glVideoCaptureStreamParameterfvNV == NULL);
+ glewInfoFunc(fi, "glVideoCaptureStreamParameterivNV", glVideoCaptureStreamParameterivNV == NULL);
+}
+
+#endif /* GL_NV_video_capture */
+
+#ifdef GL_NV_viewport_array
+
+static void _glewInfo_GL_NV_viewport_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_viewport_array", GLEW_NV_viewport_array, glewIsSupported("GL_NV_viewport_array"), glewGetExtension("GL_NV_viewport_array"));
+
+ glewInfoFunc(fi, "glDepthRangeArrayfvNV", glDepthRangeArrayfvNV == NULL);
+ glewInfoFunc(fi, "glDepthRangeIndexedfNV", glDepthRangeIndexedfNV == NULL);
+ glewInfoFunc(fi, "glDisableiNV", glDisableiNV == NULL);
+ glewInfoFunc(fi, "glEnableiNV", glEnableiNV == NULL);
+ glewInfoFunc(fi, "glGetFloati_vNV", glGetFloati_vNV == NULL);
+ glewInfoFunc(fi, "glIsEnablediNV", glIsEnablediNV == NULL);
+ glewInfoFunc(fi, "glScissorArrayvNV", glScissorArrayvNV == NULL);
+ glewInfoFunc(fi, "glScissorIndexedNV", glScissorIndexedNV == NULL);
+ glewInfoFunc(fi, "glScissorIndexedvNV", glScissorIndexedvNV == NULL);
+ glewInfoFunc(fi, "glViewportArrayvNV", glViewportArrayvNV == NULL);
+ glewInfoFunc(fi, "glViewportIndexedfNV", glViewportIndexedfNV == NULL);
+ glewInfoFunc(fi, "glViewportIndexedfvNV", glViewportIndexedfvNV == NULL);
+}
+
+#endif /* GL_NV_viewport_array */
+
+#ifdef GL_NV_viewport_array2
+
+static void _glewInfo_GL_NV_viewport_array2 (void)
+{
+ glewPrintExt("GL_NV_viewport_array2", GLEW_NV_viewport_array2, glewIsSupported("GL_NV_viewport_array2"), glewGetExtension("GL_NV_viewport_array2"));
+}
+
+#endif /* GL_NV_viewport_array2 */
+
+#ifdef GL_NV_viewport_swizzle
+
+static void _glewInfo_GL_NV_viewport_swizzle (void)
+{
+ GLboolean fi = glewPrintExt("GL_NV_viewport_swizzle", GLEW_NV_viewport_swizzle, glewIsSupported("GL_NV_viewport_swizzle"), glewGetExtension("GL_NV_viewport_swizzle"));
+
+ glewInfoFunc(fi, "glViewportSwizzleNV", glViewportSwizzleNV == NULL);
+}
+
+#endif /* GL_NV_viewport_swizzle */
+
+#ifdef GL_OES_EGL_image
+
+static void _glewInfo_GL_OES_EGL_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_EGL_image", GLEW_OES_EGL_image, glewIsSupported("GL_OES_EGL_image"), glewGetExtension("GL_OES_EGL_image"));
+
+ glewInfoFunc(fi, "glEGLImageTargetRenderbufferStorageOES", glEGLImageTargetRenderbufferStorageOES == NULL);
+ glewInfoFunc(fi, "glEGLImageTargetTexture2DOES", glEGLImageTargetTexture2DOES == NULL);
+}
+
+#endif /* GL_OES_EGL_image */
+
+#ifdef GL_OES_EGL_image_external
+
+static void _glewInfo_GL_OES_EGL_image_external (void)
+{
+ glewPrintExt("GL_OES_EGL_image_external", GLEW_OES_EGL_image_external, glewIsSupported("GL_OES_EGL_image_external"), glewGetExtension("GL_OES_EGL_image_external"));
+}
+
+#endif /* GL_OES_EGL_image_external */
+
+#ifdef GL_OES_EGL_image_external_essl3
+
+static void _glewInfo_GL_OES_EGL_image_external_essl3 (void)
+{
+ glewPrintExt("GL_OES_EGL_image_external_essl3", GLEW_OES_EGL_image_external_essl3, glewIsSupported("GL_OES_EGL_image_external_essl3"), glewGetExtension("GL_OES_EGL_image_external_essl3"));
+}
+
+#endif /* GL_OES_EGL_image_external_essl3 */
+
+#ifdef GL_OES_blend_equation_separate
+
+static void _glewInfo_GL_OES_blend_equation_separate (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_blend_equation_separate", GLEW_OES_blend_equation_separate, glewIsSupported("GL_OES_blend_equation_separate"), glewGetExtension("GL_OES_blend_equation_separate"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateOES", glBlendEquationSeparateOES == NULL);
+}
+
+#endif /* GL_OES_blend_equation_separate */
+
+#ifdef GL_OES_blend_func_separate
+
+static void _glewInfo_GL_OES_blend_func_separate (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_blend_func_separate", GLEW_OES_blend_func_separate, glewIsSupported("GL_OES_blend_func_separate"), glewGetExtension("GL_OES_blend_func_separate"));
+
+ glewInfoFunc(fi, "glBlendFuncSeparateOES", glBlendFuncSeparateOES == NULL);
+}
+
+#endif /* GL_OES_blend_func_separate */
+
+#ifdef GL_OES_blend_subtract
+
+static void _glewInfo_GL_OES_blend_subtract (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_blend_subtract", GLEW_OES_blend_subtract, glewIsSupported("GL_OES_blend_subtract"), glewGetExtension("GL_OES_blend_subtract"));
+
+ glewInfoFunc(fi, "glBlendEquationOES", glBlendEquationOES == NULL);
+}
+
+#endif /* GL_OES_blend_subtract */
+
+#ifdef GL_OES_byte_coordinates
+
+static void _glewInfo_GL_OES_byte_coordinates (void)
+{
+ glewPrintExt("GL_OES_byte_coordinates", GLEW_OES_byte_coordinates, glewIsSupported("GL_OES_byte_coordinates"), glewGetExtension("GL_OES_byte_coordinates"));
+}
+
+#endif /* GL_OES_byte_coordinates */
+
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+
+static void _glewInfo_GL_OES_compressed_ETC1_RGB8_texture (void)
+{
+ glewPrintExt("GL_OES_compressed_ETC1_RGB8_texture", GLEW_OES_compressed_ETC1_RGB8_texture, glewIsSupported("GL_OES_compressed_ETC1_RGB8_texture"), glewGetExtension("GL_OES_compressed_ETC1_RGB8_texture"));
+}
+
+#endif /* GL_OES_compressed_ETC1_RGB8_texture */
+
+#ifdef GL_OES_compressed_paletted_texture
+
+static void _glewInfo_GL_OES_compressed_paletted_texture (void)
+{
+ glewPrintExt("GL_OES_compressed_paletted_texture", GLEW_OES_compressed_paletted_texture, glewIsSupported("GL_OES_compressed_paletted_texture"), glewGetExtension("GL_OES_compressed_paletted_texture"));
+}
+
+#endif /* GL_OES_compressed_paletted_texture */
+
+#ifdef GL_OES_copy_image
+
+static void _glewInfo_GL_OES_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_copy_image", GLEW_OES_copy_image, glewIsSupported("GL_OES_copy_image"), glewGetExtension("GL_OES_copy_image"));
+
+ glewInfoFunc(fi, "glCopyImageSubDataOES", glCopyImageSubDataOES == NULL);
+}
+
+#endif /* GL_OES_copy_image */
+
+#ifdef GL_OES_depth24
+
+static void _glewInfo_GL_OES_depth24 (void)
+{
+ glewPrintExt("GL_OES_depth24", GLEW_OES_depth24, glewIsSupported("GL_OES_depth24"), glewGetExtension("GL_OES_depth24"));
+}
+
+#endif /* GL_OES_depth24 */
+
+#ifdef GL_OES_depth32
+
+static void _glewInfo_GL_OES_depth32 (void)
+{
+ glewPrintExt("GL_OES_depth32", GLEW_OES_depth32, glewIsSupported("GL_OES_depth32"), glewGetExtension("GL_OES_depth32"));
+}
+
+#endif /* GL_OES_depth32 */
+
+#ifdef GL_OES_depth_texture
+
+static void _glewInfo_GL_OES_depth_texture (void)
+{
+ glewPrintExt("GL_OES_depth_texture", GLEW_OES_depth_texture, glewIsSupported("GL_OES_depth_texture"), glewGetExtension("GL_OES_depth_texture"));
+}
+
+#endif /* GL_OES_depth_texture */
+
+#ifdef GL_OES_depth_texture_cube_map
+
+static void _glewInfo_GL_OES_depth_texture_cube_map (void)
+{
+ glewPrintExt("GL_OES_depth_texture_cube_map", GLEW_OES_depth_texture_cube_map, glewIsSupported("GL_OES_depth_texture_cube_map"), glewGetExtension("GL_OES_depth_texture_cube_map"));
+}
+
+#endif /* GL_OES_depth_texture_cube_map */
+
+#ifdef GL_OES_draw_buffers_indexed
+
+static void _glewInfo_GL_OES_draw_buffers_indexed (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_draw_buffers_indexed", GLEW_OES_draw_buffers_indexed, glewIsSupported("GL_OES_draw_buffers_indexed"), glewGetExtension("GL_OES_draw_buffers_indexed"));
+
+ glewInfoFunc(fi, "glBlendEquationSeparateiOES", glBlendEquationSeparateiOES == NULL);
+ glewInfoFunc(fi, "glBlendEquationiOES", glBlendEquationiOES == NULL);
+ glewInfoFunc(fi, "glBlendFuncSeparateiOES", glBlendFuncSeparateiOES == NULL);
+ glewInfoFunc(fi, "glBlendFunciOES", glBlendFunciOES == NULL);
+ glewInfoFunc(fi, "glColorMaskiOES", glColorMaskiOES == NULL);
+ glewInfoFunc(fi, "glDisableiOES", glDisableiOES == NULL);
+ glewInfoFunc(fi, "glEnableiOES", glEnableiOES == NULL);
+ glewInfoFunc(fi, "glIsEnablediOES", glIsEnablediOES == NULL);
+}
+
+#endif /* GL_OES_draw_buffers_indexed */
+
+#ifdef GL_OES_draw_texture
+
+static void _glewInfo_GL_OES_draw_texture (void)
+{
+ glewPrintExt("GL_OES_draw_texture", GLEW_OES_draw_texture, glewIsSupported("GL_OES_draw_texture"), glewGetExtension("GL_OES_draw_texture"));
+}
+
+#endif /* GL_OES_draw_texture */
+
+#ifdef GL_OES_element_index_uint
+
+static void _glewInfo_GL_OES_element_index_uint (void)
+{
+ glewPrintExt("GL_OES_element_index_uint", GLEW_OES_element_index_uint, glewIsSupported("GL_OES_element_index_uint"), glewGetExtension("GL_OES_element_index_uint"));
+}
+
+#endif /* GL_OES_element_index_uint */
+
+#ifdef GL_OES_extended_matrix_palette
+
+static void _glewInfo_GL_OES_extended_matrix_palette (void)
+{
+ glewPrintExt("GL_OES_extended_matrix_palette", GLEW_OES_extended_matrix_palette, glewIsSupported("GL_OES_extended_matrix_palette"), glewGetExtension("GL_OES_extended_matrix_palette"));
+}
+
+#endif /* GL_OES_extended_matrix_palette */
+
+#ifdef GL_OES_fbo_render_mipmap
+
+static void _glewInfo_GL_OES_fbo_render_mipmap (void)
+{
+ glewPrintExt("GL_OES_fbo_render_mipmap", GLEW_OES_fbo_render_mipmap, glewIsSupported("GL_OES_fbo_render_mipmap"), glewGetExtension("GL_OES_fbo_render_mipmap"));
+}
+
+#endif /* GL_OES_fbo_render_mipmap */
+
+#ifdef GL_OES_fragment_precision_high
+
+static void _glewInfo_GL_OES_fragment_precision_high (void)
+{
+ glewPrintExt("GL_OES_fragment_precision_high", GLEW_OES_fragment_precision_high, glewIsSupported("GL_OES_fragment_precision_high"), glewGetExtension("GL_OES_fragment_precision_high"));
+}
+
+#endif /* GL_OES_fragment_precision_high */
+
+#ifdef GL_OES_framebuffer_object
+
+static void _glewInfo_GL_OES_framebuffer_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_framebuffer_object", GLEW_OES_framebuffer_object, glewIsSupported("GL_OES_framebuffer_object"), glewGetExtension("GL_OES_framebuffer_object"));
+
+ glewInfoFunc(fi, "glBindFramebufferOES", glBindFramebufferOES == NULL);
+ glewInfoFunc(fi, "glBindRenderbufferOES", glBindRenderbufferOES == NULL);
+ glewInfoFunc(fi, "glCheckFramebufferStatusOES", glCheckFramebufferStatusOES == NULL);
+ glewInfoFunc(fi, "glDeleteFramebuffersOES", glDeleteFramebuffersOES == NULL);
+ glewInfoFunc(fi, "glDeleteRenderbuffersOES", glDeleteRenderbuffersOES == NULL);
+ glewInfoFunc(fi, "glFramebufferRenderbufferOES", glFramebufferRenderbufferOES == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture2DOES", glFramebufferTexture2DOES == NULL);
+ glewInfoFunc(fi, "glGenFramebuffersOES", glGenFramebuffersOES == NULL);
+ glewInfoFunc(fi, "glGenRenderbuffersOES", glGenRenderbuffersOES == NULL);
+ glewInfoFunc(fi, "glGenerateMipmapOES", glGenerateMipmapOES == NULL);
+ glewInfoFunc(fi, "glGetFramebufferAttachmentParameterivOES", glGetFramebufferAttachmentParameterivOES == NULL);
+ glewInfoFunc(fi, "glGetRenderbufferParameterivOES", glGetRenderbufferParameterivOES == NULL);
+ glewInfoFunc(fi, "glIsFramebufferOES", glIsFramebufferOES == NULL);
+ glewInfoFunc(fi, "glIsRenderbufferOES", glIsRenderbufferOES == NULL);
+ glewInfoFunc(fi, "glRenderbufferStorageOES", glRenderbufferStorageOES == NULL);
+}
+
+#endif /* GL_OES_framebuffer_object */
+
+#ifdef GL_OES_geometry_point_size
+
+static void _glewInfo_GL_OES_geometry_point_size (void)
+{
+ glewPrintExt("GL_OES_geometry_point_size", GLEW_OES_geometry_point_size, glewIsSupported("GL_OES_geometry_point_size"), glewGetExtension("GL_OES_geometry_point_size"));
+}
+
+#endif /* GL_OES_geometry_point_size */
+
+#ifdef GL_OES_geometry_shader
+
+static void _glewInfo_GL_OES_geometry_shader (void)
+{
+ glewPrintExt("GL_OES_geometry_shader", GLEW_OES_geometry_shader, glewIsSupported("GL_OES_geometry_shader"), glewGetExtension("GL_OES_geometry_shader"));
+}
+
+#endif /* GL_OES_geometry_shader */
+
+#ifdef GL_OES_get_program_binary
+
+static void _glewInfo_GL_OES_get_program_binary (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_get_program_binary", GLEW_OES_get_program_binary, glewIsSupported("GL_OES_get_program_binary"), glewGetExtension("GL_OES_get_program_binary"));
+
+ glewInfoFunc(fi, "glGetProgramBinaryOES", glGetProgramBinaryOES == NULL);
+ glewInfoFunc(fi, "glProgramBinaryOES", glProgramBinaryOES == NULL);
+}
+
+#endif /* GL_OES_get_program_binary */
+
+#ifdef GL_OES_gpu_shader5
+
+static void _glewInfo_GL_OES_gpu_shader5 (void)
+{
+ glewPrintExt("GL_OES_gpu_shader5", GLEW_OES_gpu_shader5, glewIsSupported("GL_OES_gpu_shader5"), glewGetExtension("GL_OES_gpu_shader5"));
+}
+
+#endif /* GL_OES_gpu_shader5 */
+
+#ifdef GL_OES_mapbuffer
+
+static void _glewInfo_GL_OES_mapbuffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_mapbuffer", GLEW_OES_mapbuffer, glewIsSupported("GL_OES_mapbuffer"), glewGetExtension("GL_OES_mapbuffer"));
+
+ glewInfoFunc(fi, "glGetBufferPointervOES", glGetBufferPointervOES == NULL);
+ glewInfoFunc(fi, "glMapBufferOES", glMapBufferOES == NULL);
+ glewInfoFunc(fi, "glUnmapBufferOES", glUnmapBufferOES == NULL);
+}
+
+#endif /* GL_OES_mapbuffer */
+
+#ifdef GL_OES_matrix_get
+
+static void _glewInfo_GL_OES_matrix_get (void)
+{
+ glewPrintExt("GL_OES_matrix_get", GLEW_OES_matrix_get, glewIsSupported("GL_OES_matrix_get"), glewGetExtension("GL_OES_matrix_get"));
+}
+
+#endif /* GL_OES_matrix_get */
+
+#ifdef GL_OES_matrix_palette
+
+static void _glewInfo_GL_OES_matrix_palette (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_matrix_palette", GLEW_OES_matrix_palette, glewIsSupported("GL_OES_matrix_palette"), glewGetExtension("GL_OES_matrix_palette"));
+
+ glewInfoFunc(fi, "glCurrentPaletteMatrixOES", glCurrentPaletteMatrixOES == NULL);
+ glewInfoFunc(fi, "glLoadPaletteFromModelViewMatrixOES", glLoadPaletteFromModelViewMatrixOES == NULL);
+ glewInfoFunc(fi, "glMatrixIndexPointerOES", glMatrixIndexPointerOES == NULL);
+ glewInfoFunc(fi, "glWeightPointerOES", glWeightPointerOES == NULL);
+}
+
+#endif /* GL_OES_matrix_palette */
+
+#ifdef GL_OES_packed_depth_stencil
+
+static void _glewInfo_GL_OES_packed_depth_stencil (void)
+{
+ glewPrintExt("GL_OES_packed_depth_stencil", GLEW_OES_packed_depth_stencil, glewIsSupported("GL_OES_packed_depth_stencil"), glewGetExtension("GL_OES_packed_depth_stencil"));
+}
+
+#endif /* GL_OES_packed_depth_stencil */
+
+#ifdef GL_OES_point_size_array
+
+static void _glewInfo_GL_OES_point_size_array (void)
+{
+ glewPrintExt("GL_OES_point_size_array", GLEW_OES_point_size_array, glewIsSupported("GL_OES_point_size_array"), glewGetExtension("GL_OES_point_size_array"));
+}
+
+#endif /* GL_OES_point_size_array */
+
+#ifdef GL_OES_point_sprite
+
+static void _glewInfo_GL_OES_point_sprite (void)
+{
+ glewPrintExt("GL_OES_point_sprite", GLEW_OES_point_sprite, glewIsSupported("GL_OES_point_sprite"), glewGetExtension("GL_OES_point_sprite"));
+}
+
+#endif /* GL_OES_point_sprite */
+
+#ifdef GL_OES_read_format
+
+static void _glewInfo_GL_OES_read_format (void)
+{
+ glewPrintExt("GL_OES_read_format", GLEW_OES_read_format, glewIsSupported("GL_OES_read_format"), glewGetExtension("GL_OES_read_format"));
+}
+
+#endif /* GL_OES_read_format */
+
+#ifdef GL_OES_required_internalformat
+
+static void _glewInfo_GL_OES_required_internalformat (void)
+{
+ glewPrintExt("GL_OES_required_internalformat", GLEW_OES_required_internalformat, glewIsSupported("GL_OES_required_internalformat"), glewGetExtension("GL_OES_required_internalformat"));
+}
+
+#endif /* GL_OES_required_internalformat */
+
+#ifdef GL_OES_rgb8_rgba8
+
+static void _glewInfo_GL_OES_rgb8_rgba8 (void)
+{
+ glewPrintExt("GL_OES_rgb8_rgba8", GLEW_OES_rgb8_rgba8, glewIsSupported("GL_OES_rgb8_rgba8"), glewGetExtension("GL_OES_rgb8_rgba8"));
+}
+
+#endif /* GL_OES_rgb8_rgba8 */
+
+#ifdef GL_OES_sample_shading
+
+static void _glewInfo_GL_OES_sample_shading (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_sample_shading", GLEW_OES_sample_shading, glewIsSupported("GL_OES_sample_shading"), glewGetExtension("GL_OES_sample_shading"));
+
+ glewInfoFunc(fi, "glMinSampleShadingOES", glMinSampleShadingOES == NULL);
+}
+
+#endif /* GL_OES_sample_shading */
+
+#ifdef GL_OES_sample_variables
+
+static void _glewInfo_GL_OES_sample_variables (void)
+{
+ glewPrintExt("GL_OES_sample_variables", GLEW_OES_sample_variables, glewIsSupported("GL_OES_sample_variables"), glewGetExtension("GL_OES_sample_variables"));
+}
+
+#endif /* GL_OES_sample_variables */
+
+#ifdef GL_OES_shader_image_atomic
+
+static void _glewInfo_GL_OES_shader_image_atomic (void)
+{
+ glewPrintExt("GL_OES_shader_image_atomic", GLEW_OES_shader_image_atomic, glewIsSupported("GL_OES_shader_image_atomic"), glewGetExtension("GL_OES_shader_image_atomic"));
+}
+
+#endif /* GL_OES_shader_image_atomic */
+
+#ifdef GL_OES_shader_io_blocks
+
+static void _glewInfo_GL_OES_shader_io_blocks (void)
+{
+ glewPrintExt("GL_OES_shader_io_blocks", GLEW_OES_shader_io_blocks, glewIsSupported("GL_OES_shader_io_blocks"), glewGetExtension("GL_OES_shader_io_blocks"));
+}
+
+#endif /* GL_OES_shader_io_blocks */
+
+#ifdef GL_OES_shader_multisample_interpolation
+
+static void _glewInfo_GL_OES_shader_multisample_interpolation (void)
+{
+ glewPrintExt("GL_OES_shader_multisample_interpolation", GLEW_OES_shader_multisample_interpolation, glewIsSupported("GL_OES_shader_multisample_interpolation"), glewGetExtension("GL_OES_shader_multisample_interpolation"));
+}
+
+#endif /* GL_OES_shader_multisample_interpolation */
+
+#ifdef GL_OES_single_precision
+
+static void _glewInfo_GL_OES_single_precision (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_single_precision", GLEW_OES_single_precision, glewIsSupported("GL_OES_single_precision"), glewGetExtension("GL_OES_single_precision"));
+
+ glewInfoFunc(fi, "glClearDepthfOES", glClearDepthfOES == NULL);
+ glewInfoFunc(fi, "glClipPlanefOES", glClipPlanefOES == NULL);
+ glewInfoFunc(fi, "glDepthRangefOES", glDepthRangefOES == NULL);
+ glewInfoFunc(fi, "glFrustumfOES", glFrustumfOES == NULL);
+ glewInfoFunc(fi, "glGetClipPlanefOES", glGetClipPlanefOES == NULL);
+ glewInfoFunc(fi, "glOrthofOES", glOrthofOES == NULL);
+}
+
+#endif /* GL_OES_single_precision */
+
+#ifdef GL_OES_standard_derivatives
+
+static void _glewInfo_GL_OES_standard_derivatives (void)
+{
+ glewPrintExt("GL_OES_standard_derivatives", GLEW_OES_standard_derivatives, glewIsSupported("GL_OES_standard_derivatives"), glewGetExtension("GL_OES_standard_derivatives"));
+}
+
+#endif /* GL_OES_standard_derivatives */
+
+#ifdef GL_OES_stencil1
+
+static void _glewInfo_GL_OES_stencil1 (void)
+{
+ glewPrintExt("GL_OES_stencil1", GLEW_OES_stencil1, glewIsSupported("GL_OES_stencil1"), glewGetExtension("GL_OES_stencil1"));
+}
+
+#endif /* GL_OES_stencil1 */
+
+#ifdef GL_OES_stencil4
+
+static void _glewInfo_GL_OES_stencil4 (void)
+{
+ glewPrintExt("GL_OES_stencil4", GLEW_OES_stencil4, glewIsSupported("GL_OES_stencil4"), glewGetExtension("GL_OES_stencil4"));
+}
+
+#endif /* GL_OES_stencil4 */
+
+#ifdef GL_OES_stencil8
+
+static void _glewInfo_GL_OES_stencil8 (void)
+{
+ glewPrintExt("GL_OES_stencil8", GLEW_OES_stencil8, glewIsSupported("GL_OES_stencil8"), glewGetExtension("GL_OES_stencil8"));
+}
+
+#endif /* GL_OES_stencil8 */
+
+#ifdef GL_OES_surfaceless_context
+
+static void _glewInfo_GL_OES_surfaceless_context (void)
+{
+ glewPrintExt("GL_OES_surfaceless_context", GLEW_OES_surfaceless_context, glewIsSupported("GL_OES_surfaceless_context"), glewGetExtension("GL_OES_surfaceless_context"));
+}
+
+#endif /* GL_OES_surfaceless_context */
+
+#ifdef GL_OES_tessellation_point_size
+
+static void _glewInfo_GL_OES_tessellation_point_size (void)
+{
+ glewPrintExt("GL_OES_tessellation_point_size", GLEW_OES_tessellation_point_size, glewIsSupported("GL_OES_tessellation_point_size"), glewGetExtension("GL_OES_tessellation_point_size"));
+}
+
+#endif /* GL_OES_tessellation_point_size */
+
+#ifdef GL_OES_tessellation_shader
+
+static void _glewInfo_GL_OES_tessellation_shader (void)
+{
+ glewPrintExt("GL_OES_tessellation_shader", GLEW_OES_tessellation_shader, glewIsSupported("GL_OES_tessellation_shader"), glewGetExtension("GL_OES_tessellation_shader"));
+}
+
+#endif /* GL_OES_tessellation_shader */
+
+#ifdef GL_OES_texture_3D
+
+static void _glewInfo_GL_OES_texture_3D (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_3D", GLEW_OES_texture_3D, glewIsSupported("GL_OES_texture_3D"), glewGetExtension("GL_OES_texture_3D"));
+
+ glewInfoFunc(fi, "glCompressedTexImage3DOES", glCompressedTexImage3DOES == NULL);
+ glewInfoFunc(fi, "glCompressedTexSubImage3DOES", glCompressedTexSubImage3DOES == NULL);
+ glewInfoFunc(fi, "glCopyTexSubImage3DOES", glCopyTexSubImage3DOES == NULL);
+ glewInfoFunc(fi, "glFramebufferTexture3DOES", glFramebufferTexture3DOES == NULL);
+ glewInfoFunc(fi, "glTexImage3DOES", glTexImage3DOES == NULL);
+ glewInfoFunc(fi, "glTexSubImage3DOES", glTexSubImage3DOES == NULL);
+}
+
+#endif /* GL_OES_texture_3D */
+
+#ifdef GL_OES_texture_border_clamp
+
+static void _glewInfo_GL_OES_texture_border_clamp (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_border_clamp", GLEW_OES_texture_border_clamp, glewIsSupported("GL_OES_texture_border_clamp"), glewGetExtension("GL_OES_texture_border_clamp"));
+
+ glewInfoFunc(fi, "glGetSamplerParameterIivOES", glGetSamplerParameterIivOES == NULL);
+ glewInfoFunc(fi, "glGetSamplerParameterIuivOES", glGetSamplerParameterIuivOES == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIivOES", glGetTexParameterIivOES == NULL);
+ glewInfoFunc(fi, "glGetTexParameterIuivOES", glGetTexParameterIuivOES == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIivOES", glSamplerParameterIivOES == NULL);
+ glewInfoFunc(fi, "glSamplerParameterIuivOES", glSamplerParameterIuivOES == NULL);
+ glewInfoFunc(fi, "glTexParameterIivOES", glTexParameterIivOES == NULL);
+ glewInfoFunc(fi, "glTexParameterIuivOES", glTexParameterIuivOES == NULL);
+}
+
+#endif /* GL_OES_texture_border_clamp */
+
+#ifdef GL_OES_texture_buffer
+
+static void _glewInfo_GL_OES_texture_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_buffer", GLEW_OES_texture_buffer, glewIsSupported("GL_OES_texture_buffer"), glewGetExtension("GL_OES_texture_buffer"));
+
+ glewInfoFunc(fi, "glTexBufferOES", glTexBufferOES == NULL);
+ glewInfoFunc(fi, "glTexBufferRangeOES", glTexBufferRangeOES == NULL);
+}
+
+#endif /* GL_OES_texture_buffer */
+
+#ifdef GL_OES_texture_compression_astc
+
+static void _glewInfo_GL_OES_texture_compression_astc (void)
+{
+ glewPrintExt("GL_OES_texture_compression_astc", GLEW_OES_texture_compression_astc, glewIsSupported("GL_OES_texture_compression_astc"), glewGetExtension("GL_OES_texture_compression_astc"));
+}
+
+#endif /* GL_OES_texture_compression_astc */
+
+#ifdef GL_OES_texture_cube_map
+
+static void _glewInfo_GL_OES_texture_cube_map (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_cube_map", GLEW_OES_texture_cube_map, glewIsSupported("GL_OES_texture_cube_map"), glewGetExtension("GL_OES_texture_cube_map"));
+
+ glewInfoFunc(fi, "glGetTexGenfvOES", glGetTexGenfvOES == NULL);
+ glewInfoFunc(fi, "glGetTexGenivOES", glGetTexGenivOES == NULL);
+ glewInfoFunc(fi, "glGetTexGenxvOES", glGetTexGenxvOES == NULL);
+ glewInfoFunc(fi, "glTexGenfOES", glTexGenfOES == NULL);
+ glewInfoFunc(fi, "glTexGenfvOES", glTexGenfvOES == NULL);
+ glewInfoFunc(fi, "glTexGeniOES", glTexGeniOES == NULL);
+ glewInfoFunc(fi, "glTexGenivOES", glTexGenivOES == NULL);
+ glewInfoFunc(fi, "glTexGenxOES", glTexGenxOES == NULL);
+ glewInfoFunc(fi, "glTexGenxvOES", glTexGenxvOES == NULL);
+}
+
+#endif /* GL_OES_texture_cube_map */
+
+#ifdef GL_OES_texture_cube_map_array
+
+static void _glewInfo_GL_OES_texture_cube_map_array (void)
+{
+ glewPrintExt("GL_OES_texture_cube_map_array", GLEW_OES_texture_cube_map_array, glewIsSupported("GL_OES_texture_cube_map_array"), glewGetExtension("GL_OES_texture_cube_map_array"));
+}
+
+#endif /* GL_OES_texture_cube_map_array */
+
+#ifdef GL_OES_texture_env_crossbar
+
+static void _glewInfo_GL_OES_texture_env_crossbar (void)
+{
+ glewPrintExt("GL_OES_texture_env_crossbar", GLEW_OES_texture_env_crossbar, glewIsSupported("GL_OES_texture_env_crossbar"), glewGetExtension("GL_OES_texture_env_crossbar"));
+}
+
+#endif /* GL_OES_texture_env_crossbar */
+
+#ifdef GL_OES_texture_mirrored_repeat
+
+static void _glewInfo_GL_OES_texture_mirrored_repeat (void)
+{
+ glewPrintExt("GL_OES_texture_mirrored_repeat", GLEW_OES_texture_mirrored_repeat, glewIsSupported("GL_OES_texture_mirrored_repeat"), glewGetExtension("GL_OES_texture_mirrored_repeat"));
+}
+
+#endif /* GL_OES_texture_mirrored_repeat */
+
+#ifdef GL_OES_texture_npot
+
+static void _glewInfo_GL_OES_texture_npot (void)
+{
+ glewPrintExt("GL_OES_texture_npot", GLEW_OES_texture_npot, glewIsSupported("GL_OES_texture_npot"), glewGetExtension("GL_OES_texture_npot"));
+}
+
+#endif /* GL_OES_texture_npot */
+
+#ifdef GL_OES_texture_stencil8
+
+static void _glewInfo_GL_OES_texture_stencil8 (void)
+{
+ glewPrintExt("GL_OES_texture_stencil8", GLEW_OES_texture_stencil8, glewIsSupported("GL_OES_texture_stencil8"), glewGetExtension("GL_OES_texture_stencil8"));
+}
+
+#endif /* GL_OES_texture_stencil8 */
+
+#ifdef GL_OES_texture_storage_multisample_2d_array
+
+static void _glewInfo_GL_OES_texture_storage_multisample_2d_array (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_storage_multisample_2d_array", GLEW_OES_texture_storage_multisample_2d_array, glewIsSupported("GL_OES_texture_storage_multisample_2d_array"), glewGetExtension("GL_OES_texture_storage_multisample_2d_array"));
+
+ glewInfoFunc(fi, "glTexStorage3DMultisampleOES", glTexStorage3DMultisampleOES == NULL);
+}
+
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+
+#ifdef GL_OES_texture_view
+
+static void _glewInfo_GL_OES_texture_view (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_texture_view", GLEW_OES_texture_view, glewIsSupported("GL_OES_texture_view"), glewGetExtension("GL_OES_texture_view"));
+
+ glewInfoFunc(fi, "glTextureViewOES", glTextureViewOES == NULL);
+}
+
+#endif /* GL_OES_texture_view */
+
+#ifdef GL_OES_vertex_array_object
+
+static void _glewInfo_GL_OES_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_OES_vertex_array_object", GLEW_OES_vertex_array_object, glewIsSupported("GL_OES_vertex_array_object"), glewGetExtension("GL_OES_vertex_array_object"));
+
+ glewInfoFunc(fi, "glBindVertexArrayOES", glBindVertexArrayOES == NULL);
+ glewInfoFunc(fi, "glDeleteVertexArraysOES", glDeleteVertexArraysOES == NULL);
+ glewInfoFunc(fi, "glGenVertexArraysOES", glGenVertexArraysOES == NULL);
+ glewInfoFunc(fi, "glIsVertexArrayOES", glIsVertexArrayOES == NULL);
+}
+
+#endif /* GL_OES_vertex_array_object */
+
+#ifdef GL_OES_vertex_half_float
+
+static void _glewInfo_GL_OES_vertex_half_float (void)
+{
+ glewPrintExt("GL_OES_vertex_half_float", GLEW_OES_vertex_half_float, glewIsSupported("GL_OES_vertex_half_float"), glewGetExtension("GL_OES_vertex_half_float"));
+}
+
+#endif /* GL_OES_vertex_half_float */
+
+#ifdef GL_OES_vertex_type_10_10_10_2
+
+static void _glewInfo_GL_OES_vertex_type_10_10_10_2 (void)
+{
+ glewPrintExt("GL_OES_vertex_type_10_10_10_2", GLEW_OES_vertex_type_10_10_10_2, glewIsSupported("GL_OES_vertex_type_10_10_10_2"), glewGetExtension("GL_OES_vertex_type_10_10_10_2"));
+}
+
+#endif /* GL_OES_vertex_type_10_10_10_2 */
+
+#ifdef GL_OML_interlace
+
+static void _glewInfo_GL_OML_interlace (void)
+{
+ glewPrintExt("GL_OML_interlace", GLEW_OML_interlace, glewIsSupported("GL_OML_interlace"), glewGetExtension("GL_OML_interlace"));
+}
+
+#endif /* GL_OML_interlace */
+
+#ifdef GL_OML_resample
+
+static void _glewInfo_GL_OML_resample (void)
+{
+ glewPrintExt("GL_OML_resample", GLEW_OML_resample, glewIsSupported("GL_OML_resample"), glewGetExtension("GL_OML_resample"));
+}
+
+#endif /* GL_OML_resample */
+
+#ifdef GL_OML_subsample
+
+static void _glewInfo_GL_OML_subsample (void)
+{
+ glewPrintExt("GL_OML_subsample", GLEW_OML_subsample, glewIsSupported("GL_OML_subsample"), glewGetExtension("GL_OML_subsample"));
+}
+
+#endif /* GL_OML_subsample */
+
+#ifdef GL_OVR_multiview
+
+static void _glewInfo_GL_OVR_multiview (void)
+{
+ GLboolean fi = glewPrintExt("GL_OVR_multiview", GLEW_OVR_multiview, glewIsSupported("GL_OVR_multiview"), glewGetExtension("GL_OVR_multiview"));
+
+ glewInfoFunc(fi, "glFramebufferTextureMultiviewOVR", glFramebufferTextureMultiviewOVR == NULL);
+ glewInfoFunc(fi, "glNamedFramebufferTextureMultiviewOVR", glNamedFramebufferTextureMultiviewOVR == NULL);
+}
+
+#endif /* GL_OVR_multiview */
+
+#ifdef GL_OVR_multiview2
+
+static void _glewInfo_GL_OVR_multiview2 (void)
+{
+ glewPrintExt("GL_OVR_multiview2", GLEW_OVR_multiview2, glewIsSupported("GL_OVR_multiview2"), glewGetExtension("GL_OVR_multiview2"));
+}
+
+#endif /* GL_OVR_multiview2 */
+
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+
+static void _glewInfo_GL_OVR_multiview_multisampled_render_to_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_OVR_multiview_multisampled_render_to_texture", GLEW_OVR_multiview_multisampled_render_to_texture, glewIsSupported("GL_OVR_multiview_multisampled_render_to_texture"), glewGetExtension("GL_OVR_multiview_multisampled_render_to_texture"));
+
+ glewInfoFunc(fi, "glFramebufferTextureMultisampleMultiviewOVR", glFramebufferTextureMultisampleMultiviewOVR == NULL);
+}
+
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+
+#ifdef GL_PGI_misc_hints
+
+static void _glewInfo_GL_PGI_misc_hints (void)
+{
+ glewPrintExt("GL_PGI_misc_hints", GLEW_PGI_misc_hints, glewIsSupported("GL_PGI_misc_hints"), glewGetExtension("GL_PGI_misc_hints"));
+}
+
+#endif /* GL_PGI_misc_hints */
+
+#ifdef GL_PGI_vertex_hints
+
+static void _glewInfo_GL_PGI_vertex_hints (void)
+{
+ glewPrintExt("GL_PGI_vertex_hints", GLEW_PGI_vertex_hints, glewIsSupported("GL_PGI_vertex_hints"), glewGetExtension("GL_PGI_vertex_hints"));
+}
+
+#endif /* GL_PGI_vertex_hints */
+
+#ifdef GL_QCOM_YUV_texture_gather
+
+static void _glewInfo_GL_QCOM_YUV_texture_gather (void)
+{
+ glewPrintExt("GL_QCOM_YUV_texture_gather", GLEW_QCOM_YUV_texture_gather, glewIsSupported("GL_QCOM_YUV_texture_gather"), glewGetExtension("GL_QCOM_YUV_texture_gather"));
+}
+
+#endif /* GL_QCOM_YUV_texture_gather */
+
+#ifdef GL_QCOM_alpha_test
+
+static void _glewInfo_GL_QCOM_alpha_test (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_alpha_test", GLEW_QCOM_alpha_test, glewIsSupported("GL_QCOM_alpha_test"), glewGetExtension("GL_QCOM_alpha_test"));
+
+ glewInfoFunc(fi, "glAlphaFuncQCOM", glAlphaFuncQCOM == NULL);
+}
+
+#endif /* GL_QCOM_alpha_test */
+
+#ifdef GL_QCOM_binning_control
+
+static void _glewInfo_GL_QCOM_binning_control (void)
+{
+ glewPrintExt("GL_QCOM_binning_control", GLEW_QCOM_binning_control, glewIsSupported("GL_QCOM_binning_control"), glewGetExtension("GL_QCOM_binning_control"));
+}
+
+#endif /* GL_QCOM_binning_control */
+
+#ifdef GL_QCOM_driver_control
+
+static void _glewInfo_GL_QCOM_driver_control (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_driver_control", GLEW_QCOM_driver_control, glewIsSupported("GL_QCOM_driver_control"), glewGetExtension("GL_QCOM_driver_control"));
+
+ glewInfoFunc(fi, "glDisableDriverControlQCOM", glDisableDriverControlQCOM == NULL);
+ glewInfoFunc(fi, "glEnableDriverControlQCOM", glEnableDriverControlQCOM == NULL);
+ glewInfoFunc(fi, "glGetDriverControlStringQCOM", glGetDriverControlStringQCOM == NULL);
+ glewInfoFunc(fi, "glGetDriverControlsQCOM", glGetDriverControlsQCOM == NULL);
+}
+
+#endif /* GL_QCOM_driver_control */
+
+#ifdef GL_QCOM_extended_get
+
+static void _glewInfo_GL_QCOM_extended_get (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_extended_get", GLEW_QCOM_extended_get, glewIsSupported("GL_QCOM_extended_get"), glewGetExtension("GL_QCOM_extended_get"));
+
+ glewInfoFunc(fi, "glExtGetBufferPointervQCOM", glExtGetBufferPointervQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetBuffersQCOM", glExtGetBuffersQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetFramebuffersQCOM", glExtGetFramebuffersQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetRenderbuffersQCOM", glExtGetRenderbuffersQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetTexLevelParameterivQCOM", glExtGetTexLevelParameterivQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetTexSubImageQCOM", glExtGetTexSubImageQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetTexturesQCOM", glExtGetTexturesQCOM == NULL);
+ glewInfoFunc(fi, "glExtTexObjectStateOverrideiQCOM", glExtTexObjectStateOverrideiQCOM == NULL);
+}
+
+#endif /* GL_QCOM_extended_get */
+
+#ifdef GL_QCOM_extended_get2
+
+static void _glewInfo_GL_QCOM_extended_get2 (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_extended_get2", GLEW_QCOM_extended_get2, glewIsSupported("GL_QCOM_extended_get2"), glewGetExtension("GL_QCOM_extended_get2"));
+
+ glewInfoFunc(fi, "glExtGetProgramBinarySourceQCOM", glExtGetProgramBinarySourceQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetProgramsQCOM", glExtGetProgramsQCOM == NULL);
+ glewInfoFunc(fi, "glExtGetShadersQCOM", glExtGetShadersQCOM == NULL);
+ glewInfoFunc(fi, "glExtIsProgramBinaryQCOM", glExtIsProgramBinaryQCOM == NULL);
+}
+
+#endif /* GL_QCOM_extended_get2 */
+
+#ifdef GL_QCOM_frame_extrapolation
+
+static void _glewInfo_GL_QCOM_frame_extrapolation (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_frame_extrapolation", GLEW_QCOM_frame_extrapolation, glewIsSupported("GL_QCOM_frame_extrapolation"), glewGetExtension("GL_QCOM_frame_extrapolation"));
+
+ glewInfoFunc(fi, "glExtrapolateTex2DQCOM", glExtrapolateTex2DQCOM == NULL);
+}
+
+#endif /* GL_QCOM_frame_extrapolation */
+
+#ifdef GL_QCOM_framebuffer_foveated
+
+static void _glewInfo_GL_QCOM_framebuffer_foveated (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_framebuffer_foveated", GLEW_QCOM_framebuffer_foveated, glewIsSupported("GL_QCOM_framebuffer_foveated"), glewGetExtension("GL_QCOM_framebuffer_foveated"));
+
+ glewInfoFunc(fi, "glFramebufferFoveationConfigQCOM", glFramebufferFoveationConfigQCOM == NULL);
+ glewInfoFunc(fi, "glFramebufferFoveationParametersQCOM", glFramebufferFoveationParametersQCOM == NULL);
+}
+
+#endif /* GL_QCOM_framebuffer_foveated */
+
+#ifdef GL_QCOM_motion_estimation
+
+static void _glewInfo_GL_QCOM_motion_estimation (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_motion_estimation", GLEW_QCOM_motion_estimation, glewIsSupported("GL_QCOM_motion_estimation"), glewGetExtension("GL_QCOM_motion_estimation"));
+
+ glewInfoFunc(fi, "glTexEstimateMotionQCOM", glTexEstimateMotionQCOM == NULL);
+ glewInfoFunc(fi, "glTexEstimateMotionRegionsQCOM", glTexEstimateMotionRegionsQCOM == NULL);
+}
+
+#endif /* GL_QCOM_motion_estimation */
+
+#ifdef GL_QCOM_perfmon_global_mode
+
+static void _glewInfo_GL_QCOM_perfmon_global_mode (void)
+{
+ glewPrintExt("GL_QCOM_perfmon_global_mode", GLEW_QCOM_perfmon_global_mode, glewIsSupported("GL_QCOM_perfmon_global_mode"), glewGetExtension("GL_QCOM_perfmon_global_mode"));
+}
+
+#endif /* GL_QCOM_perfmon_global_mode */
+
+#ifdef GL_QCOM_render_shared_exponent
+
+static void _glewInfo_GL_QCOM_render_shared_exponent (void)
+{
+ glewPrintExt("GL_QCOM_render_shared_exponent", GLEW_QCOM_render_shared_exponent, glewIsSupported("GL_QCOM_render_shared_exponent"), glewGetExtension("GL_QCOM_render_shared_exponent"));
+}
+
+#endif /* GL_QCOM_render_shared_exponent */
+
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+
+static void _glewInfo_GL_QCOM_shader_framebuffer_fetch_noncoherent (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_shader_framebuffer_fetch_noncoherent", GLEW_QCOM_shader_framebuffer_fetch_noncoherent, glewIsSupported("GL_QCOM_shader_framebuffer_fetch_noncoherent"), glewGetExtension("GL_QCOM_shader_framebuffer_fetch_noncoherent"));
+
+ glewInfoFunc(fi, "glFramebufferFetchBarrierQCOM", glFramebufferFetchBarrierQCOM == NULL);
+}
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+
+static void _glewInfo_GL_QCOM_shader_framebuffer_fetch_rate (void)
+{
+ glewPrintExt("GL_QCOM_shader_framebuffer_fetch_rate", GLEW_QCOM_shader_framebuffer_fetch_rate, glewIsSupported("GL_QCOM_shader_framebuffer_fetch_rate"), glewGetExtension("GL_QCOM_shader_framebuffer_fetch_rate"));
+}
+
+#endif /* GL_QCOM_shader_framebuffer_fetch_rate */
+
+#ifdef GL_QCOM_shading_rate
+
+static void _glewInfo_GL_QCOM_shading_rate (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_shading_rate", GLEW_QCOM_shading_rate, glewIsSupported("GL_QCOM_shading_rate"), glewGetExtension("GL_QCOM_shading_rate"));
+
+ glewInfoFunc(fi, "glShadingRateQCOM", glShadingRateQCOM == NULL);
+}
+
+#endif /* GL_QCOM_shading_rate */
+
+#ifdef GL_QCOM_texture_foveated
+
+static void _glewInfo_GL_QCOM_texture_foveated (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_texture_foveated", GLEW_QCOM_texture_foveated, glewIsSupported("GL_QCOM_texture_foveated"), glewGetExtension("GL_QCOM_texture_foveated"));
+
+ glewInfoFunc(fi, "glTextureFoveationParametersQCOM", glTextureFoveationParametersQCOM == NULL);
+}
+
+#endif /* GL_QCOM_texture_foveated */
+
+#ifdef GL_QCOM_texture_foveated2
+
+static void _glewInfo_GL_QCOM_texture_foveated2 (void)
+{
+ glewPrintExt("GL_QCOM_texture_foveated2", GLEW_QCOM_texture_foveated2, glewIsSupported("GL_QCOM_texture_foveated2"), glewGetExtension("GL_QCOM_texture_foveated2"));
+}
+
+#endif /* GL_QCOM_texture_foveated2 */
+
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+
+static void _glewInfo_GL_QCOM_texture_foveated_subsampled_layout (void)
+{
+ glewPrintExt("GL_QCOM_texture_foveated_subsampled_layout", GLEW_QCOM_texture_foveated_subsampled_layout, glewIsSupported("GL_QCOM_texture_foveated_subsampled_layout"), glewGetExtension("GL_QCOM_texture_foveated_subsampled_layout"));
+}
+
+#endif /* GL_QCOM_texture_foveated_subsampled_layout */
+
+#ifdef GL_QCOM_tiled_rendering
+
+static void _glewInfo_GL_QCOM_tiled_rendering (void)
+{
+ GLboolean fi = glewPrintExt("GL_QCOM_tiled_rendering", GLEW_QCOM_tiled_rendering, glewIsSupported("GL_QCOM_tiled_rendering"), glewGetExtension("GL_QCOM_tiled_rendering"));
+
+ glewInfoFunc(fi, "glEndTilingQCOM", glEndTilingQCOM == NULL);
+ glewInfoFunc(fi, "glStartTilingQCOM", glStartTilingQCOM == NULL);
+}
+
+#endif /* GL_QCOM_tiled_rendering */
+
+#ifdef GL_QCOM_writeonly_rendering
+
+static void _glewInfo_GL_QCOM_writeonly_rendering (void)
+{
+ glewPrintExt("GL_QCOM_writeonly_rendering", GLEW_QCOM_writeonly_rendering, glewIsSupported("GL_QCOM_writeonly_rendering"), glewGetExtension("GL_QCOM_writeonly_rendering"));
+}
+
+#endif /* GL_QCOM_writeonly_rendering */
+
+#ifdef GL_REGAL_ES1_0_compatibility
+
+static void _glewInfo_GL_REGAL_ES1_0_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_ES1_0_compatibility", GLEW_REGAL_ES1_0_compatibility, glewIsSupported("GL_REGAL_ES1_0_compatibility"), glewGetExtension("GL_REGAL_ES1_0_compatibility"));
+
+ glewInfoFunc(fi, "glAlphaFuncx", glAlphaFuncx == NULL);
+ glewInfoFunc(fi, "glClearColorx", glClearColorx == NULL);
+ glewInfoFunc(fi, "glClearDepthx", glClearDepthx == NULL);
+ glewInfoFunc(fi, "glColor4x", glColor4x == NULL);
+ glewInfoFunc(fi, "glDepthRangex", glDepthRangex == NULL);
+ glewInfoFunc(fi, "glFogx", glFogx == NULL);
+ glewInfoFunc(fi, "glFogxv", glFogxv == NULL);
+ glewInfoFunc(fi, "glFrustumf", glFrustumf == NULL);
+ glewInfoFunc(fi, "glFrustumx", glFrustumx == NULL);
+ glewInfoFunc(fi, "glLightModelx", glLightModelx == NULL);
+ glewInfoFunc(fi, "glLightModelxv", glLightModelxv == NULL);
+ glewInfoFunc(fi, "glLightx", glLightx == NULL);
+ glewInfoFunc(fi, "glLightxv", glLightxv == NULL);
+ glewInfoFunc(fi, "glLineWidthx", glLineWidthx == NULL);
+ glewInfoFunc(fi, "glLoadMatrixx", glLoadMatrixx == NULL);
+ glewInfoFunc(fi, "glMaterialx", glMaterialx == NULL);
+ glewInfoFunc(fi, "glMaterialxv", glMaterialxv == NULL);
+ glewInfoFunc(fi, "glMultMatrixx", glMultMatrixx == NULL);
+ glewInfoFunc(fi, "glMultiTexCoord4x", glMultiTexCoord4x == NULL);
+ glewInfoFunc(fi, "glNormal3x", glNormal3x == NULL);
+ glewInfoFunc(fi, "glOrthof", glOrthof == NULL);
+ glewInfoFunc(fi, "glOrthox", glOrthox == NULL);
+ glewInfoFunc(fi, "glPointSizex", glPointSizex == NULL);
+ glewInfoFunc(fi, "glPolygonOffsetx", glPolygonOffsetx == NULL);
+ glewInfoFunc(fi, "glRotatex", glRotatex == NULL);
+ glewInfoFunc(fi, "glSampleCoveragex", glSampleCoveragex == NULL);
+ glewInfoFunc(fi, "glScalex", glScalex == NULL);
+ glewInfoFunc(fi, "glTexEnvx", glTexEnvx == NULL);
+ glewInfoFunc(fi, "glTexEnvxv", glTexEnvxv == NULL);
+ glewInfoFunc(fi, "glTexParameterx", glTexParameterx == NULL);
+ glewInfoFunc(fi, "glTranslatex", glTranslatex == NULL);
+}
+
+#endif /* GL_REGAL_ES1_0_compatibility */
+
+#ifdef GL_REGAL_ES1_1_compatibility
+
+static void _glewInfo_GL_REGAL_ES1_1_compatibility (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_ES1_1_compatibility", GLEW_REGAL_ES1_1_compatibility, glewIsSupported("GL_REGAL_ES1_1_compatibility"), glewGetExtension("GL_REGAL_ES1_1_compatibility"));
+
+ glewInfoFunc(fi, "glClipPlanef", glClipPlanef == NULL);
+ glewInfoFunc(fi, "glClipPlanex", glClipPlanex == NULL);
+ glewInfoFunc(fi, "glGetClipPlanef", glGetClipPlanef == NULL);
+ glewInfoFunc(fi, "glGetClipPlanex", glGetClipPlanex == NULL);
+ glewInfoFunc(fi, "glGetFixedv", glGetFixedv == NULL);
+ glewInfoFunc(fi, "glGetLightxv", glGetLightxv == NULL);
+ glewInfoFunc(fi, "glGetMaterialxv", glGetMaterialxv == NULL);
+ glewInfoFunc(fi, "glGetTexEnvxv", glGetTexEnvxv == NULL);
+ glewInfoFunc(fi, "glGetTexParameterxv", glGetTexParameterxv == NULL);
+ glewInfoFunc(fi, "glPointParameterx", glPointParameterx == NULL);
+ glewInfoFunc(fi, "glPointParameterxv", glPointParameterxv == NULL);
+ glewInfoFunc(fi, "glPointSizePointerOES", glPointSizePointerOES == NULL);
+ glewInfoFunc(fi, "glTexParameterxv", glTexParameterxv == NULL);
+}
+
+#endif /* GL_REGAL_ES1_1_compatibility */
+
+#ifdef GL_REGAL_enable
+
+static void _glewInfo_GL_REGAL_enable (void)
+{
+ glewPrintExt("GL_REGAL_enable", GLEW_REGAL_enable, glewIsSupported("GL_REGAL_enable"), glewGetExtension("GL_REGAL_enable"));
+}
+
+#endif /* GL_REGAL_enable */
+
+#ifdef GL_REGAL_error_string
+
+static void _glewInfo_GL_REGAL_error_string (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_error_string", GLEW_REGAL_error_string, glewIsSupported("GL_REGAL_error_string"), glewGetExtension("GL_REGAL_error_string"));
+
+ glewInfoFunc(fi, "glErrorStringREGAL", glErrorStringREGAL == NULL);
+}
+
+#endif /* GL_REGAL_error_string */
+
+#ifdef GL_REGAL_extension_query
+
+static void _glewInfo_GL_REGAL_extension_query (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_extension_query", GLEW_REGAL_extension_query, glewIsSupported("GL_REGAL_extension_query"), glewGetExtension("GL_REGAL_extension_query"));
+
+ glewInfoFunc(fi, "glGetExtensionREGAL", glGetExtensionREGAL == NULL);
+ glewInfoFunc(fi, "glIsSupportedREGAL", glIsSupportedREGAL == NULL);
+}
+
+#endif /* GL_REGAL_extension_query */
+
+#ifdef GL_REGAL_log
+
+static void _glewInfo_GL_REGAL_log (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_log", GLEW_REGAL_log, glewIsSupported("GL_REGAL_log"), glewGetExtension("GL_REGAL_log"));
+
+ glewInfoFunc(fi, "glLogMessageCallbackREGAL", glLogMessageCallbackREGAL == NULL);
+}
+
+#endif /* GL_REGAL_log */
+
+#ifdef GL_REGAL_proc_address
+
+static void _glewInfo_GL_REGAL_proc_address (void)
+{
+ GLboolean fi = glewPrintExt("GL_REGAL_proc_address", GLEW_REGAL_proc_address, glewIsSupported("GL_REGAL_proc_address"), glewGetExtension("GL_REGAL_proc_address"));
+
+ glewInfoFunc(fi, "glGetProcAddressREGAL", glGetProcAddressREGAL == NULL);
+}
+
+#endif /* GL_REGAL_proc_address */
+
+#ifdef GL_REND_screen_coordinates
+
+static void _glewInfo_GL_REND_screen_coordinates (void)
+{
+ glewPrintExt("GL_REND_screen_coordinates", GLEW_REND_screen_coordinates, glewIsSupported("GL_REND_screen_coordinates"), glewGetExtension("GL_REND_screen_coordinates"));
+}
+
+#endif /* GL_REND_screen_coordinates */
+
+#ifdef GL_S3_s3tc
+
+static void _glewInfo_GL_S3_s3tc (void)
+{
+ glewPrintExt("GL_S3_s3tc", GLEW_S3_s3tc, glewIsSupported("GL_S3_s3tc"), glewGetExtension("GL_S3_s3tc"));
+}
+
+#endif /* GL_S3_s3tc */
+
+#ifdef GL_SGIS_clip_band_hint
+
+static void _glewInfo_GL_SGIS_clip_band_hint (void)
+{
+ glewPrintExt("GL_SGIS_clip_band_hint", GLEW_SGIS_clip_band_hint, glewIsSupported("GL_SGIS_clip_band_hint"), glewGetExtension("GL_SGIS_clip_band_hint"));
+}
+
+#endif /* GL_SGIS_clip_band_hint */
+
+#ifdef GL_SGIS_color_range
+
+static void _glewInfo_GL_SGIS_color_range (void)
+{
+ glewPrintExt("GL_SGIS_color_range", GLEW_SGIS_color_range, glewIsSupported("GL_SGIS_color_range"), glewGetExtension("GL_SGIS_color_range"));
+}
+
+#endif /* GL_SGIS_color_range */
+
+#ifdef GL_SGIS_detail_texture
+
+static void _glewInfo_GL_SGIS_detail_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_detail_texture", GLEW_SGIS_detail_texture, glewIsSupported("GL_SGIS_detail_texture"), glewGetExtension("GL_SGIS_detail_texture"));
+
+ glewInfoFunc(fi, "glDetailTexFuncSGIS", glDetailTexFuncSGIS == NULL);
+ glewInfoFunc(fi, "glGetDetailTexFuncSGIS", glGetDetailTexFuncSGIS == NULL);
+}
+
+#endif /* GL_SGIS_detail_texture */
+
+#ifdef GL_SGIS_fog_function
+
+static void _glewInfo_GL_SGIS_fog_function (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_fog_function", GLEW_SGIS_fog_function, glewIsSupported("GL_SGIS_fog_function"), glewGetExtension("GL_SGIS_fog_function"));
+
+ glewInfoFunc(fi, "glFogFuncSGIS", glFogFuncSGIS == NULL);
+ glewInfoFunc(fi, "glGetFogFuncSGIS", glGetFogFuncSGIS == NULL);
+}
+
+#endif /* GL_SGIS_fog_function */
+
+#ifdef GL_SGIS_generate_mipmap
+
+static void _glewInfo_GL_SGIS_generate_mipmap (void)
+{
+ glewPrintExt("GL_SGIS_generate_mipmap", GLEW_SGIS_generate_mipmap, glewIsSupported("GL_SGIS_generate_mipmap"), glewGetExtension("GL_SGIS_generate_mipmap"));
+}
+
+#endif /* GL_SGIS_generate_mipmap */
+
+#ifdef GL_SGIS_line_texgen
+
+static void _glewInfo_GL_SGIS_line_texgen (void)
+{
+ glewPrintExt("GL_SGIS_line_texgen", GLEW_SGIS_line_texgen, glewIsSupported("GL_SGIS_line_texgen"), glewGetExtension("GL_SGIS_line_texgen"));
+}
+
+#endif /* GL_SGIS_line_texgen */
+
+#ifdef GL_SGIS_multisample
+
+static void _glewInfo_GL_SGIS_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_multisample", GLEW_SGIS_multisample, glewIsSupported("GL_SGIS_multisample"), glewGetExtension("GL_SGIS_multisample"));
+
+ glewInfoFunc(fi, "glSampleMaskSGIS", glSampleMaskSGIS == NULL);
+ glewInfoFunc(fi, "glSamplePatternSGIS", glSamplePatternSGIS == NULL);
+}
+
+#endif /* GL_SGIS_multisample */
+
+#ifdef GL_SGIS_multitexture
+
+static void _glewInfo_GL_SGIS_multitexture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_multitexture", GLEW_SGIS_multitexture, glewIsSupported("GL_SGIS_multitexture"), glewGetExtension("GL_SGIS_multitexture"));
+
+ glewInfoFunc(fi, "glInterleavedTextureCoordSetsSGIS", glInterleavedTextureCoordSetsSGIS == NULL);
+ glewInfoFunc(fi, "glSelectTextureCoordSetSGIS", glSelectTextureCoordSetSGIS == NULL);
+ glewInfoFunc(fi, "glSelectTextureSGIS", glSelectTextureSGIS == NULL);
+ glewInfoFunc(fi, "glSelectTextureTransformSGIS", glSelectTextureTransformSGIS == NULL);
+}
+
+#endif /* GL_SGIS_multitexture */
+
+#ifdef GL_SGIS_pixel_texture
+
+static void _glewInfo_GL_SGIS_pixel_texture (void)
+{
+ glewPrintExt("GL_SGIS_pixel_texture", GLEW_SGIS_pixel_texture, glewIsSupported("GL_SGIS_pixel_texture"), glewGetExtension("GL_SGIS_pixel_texture"));
+}
+
+#endif /* GL_SGIS_pixel_texture */
+
+#ifdef GL_SGIS_point_line_texgen
+
+static void _glewInfo_GL_SGIS_point_line_texgen (void)
+{
+ glewPrintExt("GL_SGIS_point_line_texgen", GLEW_SGIS_point_line_texgen, glewIsSupported("GL_SGIS_point_line_texgen"), glewGetExtension("GL_SGIS_point_line_texgen"));
+}
+
+#endif /* GL_SGIS_point_line_texgen */
+
+#ifdef GL_SGIS_shared_multisample
+
+static void _glewInfo_GL_SGIS_shared_multisample (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_shared_multisample", GLEW_SGIS_shared_multisample, glewIsSupported("GL_SGIS_shared_multisample"), glewGetExtension("GL_SGIS_shared_multisample"));
+
+ glewInfoFunc(fi, "glMultisampleSubRectPosSGIS", glMultisampleSubRectPosSGIS == NULL);
+}
+
+#endif /* GL_SGIS_shared_multisample */
+
+#ifdef GL_SGIS_sharpen_texture
+
+static void _glewInfo_GL_SGIS_sharpen_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_sharpen_texture", GLEW_SGIS_sharpen_texture, glewIsSupported("GL_SGIS_sharpen_texture"), glewGetExtension("GL_SGIS_sharpen_texture"));
+
+ glewInfoFunc(fi, "glGetSharpenTexFuncSGIS", glGetSharpenTexFuncSGIS == NULL);
+ glewInfoFunc(fi, "glSharpenTexFuncSGIS", glSharpenTexFuncSGIS == NULL);
+}
+
+#endif /* GL_SGIS_sharpen_texture */
+
+#ifdef GL_SGIS_texture4D
+
+static void _glewInfo_GL_SGIS_texture4D (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_texture4D", GLEW_SGIS_texture4D, glewIsSupported("GL_SGIS_texture4D"), glewGetExtension("GL_SGIS_texture4D"));
+
+ glewInfoFunc(fi, "glTexImage4DSGIS", glTexImage4DSGIS == NULL);
+ glewInfoFunc(fi, "glTexSubImage4DSGIS", glTexSubImage4DSGIS == NULL);
+}
+
+#endif /* GL_SGIS_texture4D */
+
+#ifdef GL_SGIS_texture_border_clamp
+
+static void _glewInfo_GL_SGIS_texture_border_clamp (void)
+{
+ glewPrintExt("GL_SGIS_texture_border_clamp", GLEW_SGIS_texture_border_clamp, glewIsSupported("GL_SGIS_texture_border_clamp"), glewGetExtension("GL_SGIS_texture_border_clamp"));
+}
+
+#endif /* GL_SGIS_texture_border_clamp */
+
+#ifdef GL_SGIS_texture_edge_clamp
+
+static void _glewInfo_GL_SGIS_texture_edge_clamp (void)
+{
+ glewPrintExt("GL_SGIS_texture_edge_clamp", GLEW_SGIS_texture_edge_clamp, glewIsSupported("GL_SGIS_texture_edge_clamp"), glewGetExtension("GL_SGIS_texture_edge_clamp"));
+}
+
+#endif /* GL_SGIS_texture_edge_clamp */
+
+#ifdef GL_SGIS_texture_filter4
+
+static void _glewInfo_GL_SGIS_texture_filter4 (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIS_texture_filter4", GLEW_SGIS_texture_filter4, glewIsSupported("GL_SGIS_texture_filter4"), glewGetExtension("GL_SGIS_texture_filter4"));
+
+ glewInfoFunc(fi, "glGetTexFilterFuncSGIS", glGetTexFilterFuncSGIS == NULL);
+ glewInfoFunc(fi, "glTexFilterFuncSGIS", glTexFilterFuncSGIS == NULL);
+}
+
+#endif /* GL_SGIS_texture_filter4 */
+
+#ifdef GL_SGIS_texture_lod
+
+static void _glewInfo_GL_SGIS_texture_lod (void)
+{
+ glewPrintExt("GL_SGIS_texture_lod", GLEW_SGIS_texture_lod, glewIsSupported("GL_SGIS_texture_lod"), glewGetExtension("GL_SGIS_texture_lod"));
+}
+
+#endif /* GL_SGIS_texture_lod */
+
+#ifdef GL_SGIS_texture_select
+
+static void _glewInfo_GL_SGIS_texture_select (void)
+{
+ glewPrintExt("GL_SGIS_texture_select", GLEW_SGIS_texture_select, glewIsSupported("GL_SGIS_texture_select"), glewGetExtension("GL_SGIS_texture_select"));
+}
+
+#endif /* GL_SGIS_texture_select */
+
+#ifdef GL_SGIX_async
+
+static void _glewInfo_GL_SGIX_async (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_async", GLEW_SGIX_async, glewIsSupported("GL_SGIX_async"), glewGetExtension("GL_SGIX_async"));
+
+ glewInfoFunc(fi, "glAsyncMarkerSGIX", glAsyncMarkerSGIX == NULL);
+ glewInfoFunc(fi, "glDeleteAsyncMarkersSGIX", glDeleteAsyncMarkersSGIX == NULL);
+ glewInfoFunc(fi, "glFinishAsyncSGIX", glFinishAsyncSGIX == NULL);
+ glewInfoFunc(fi, "glGenAsyncMarkersSGIX", glGenAsyncMarkersSGIX == NULL);
+ glewInfoFunc(fi, "glIsAsyncMarkerSGIX", glIsAsyncMarkerSGIX == NULL);
+ glewInfoFunc(fi, "glPollAsyncSGIX", glPollAsyncSGIX == NULL);
+}
+
+#endif /* GL_SGIX_async */
+
+#ifdef GL_SGIX_async_histogram
+
+static void _glewInfo_GL_SGIX_async_histogram (void)
+{
+ glewPrintExt("GL_SGIX_async_histogram", GLEW_SGIX_async_histogram, glewIsSupported("GL_SGIX_async_histogram"), glewGetExtension("GL_SGIX_async_histogram"));
+}
+
+#endif /* GL_SGIX_async_histogram */
+
+#ifdef GL_SGIX_async_pixel
+
+static void _glewInfo_GL_SGIX_async_pixel (void)
+{
+ glewPrintExt("GL_SGIX_async_pixel", GLEW_SGIX_async_pixel, glewIsSupported("GL_SGIX_async_pixel"), glewGetExtension("GL_SGIX_async_pixel"));
+}
+
+#endif /* GL_SGIX_async_pixel */
+
+#ifdef GL_SGIX_bali_g_instruments
+
+static void _glewInfo_GL_SGIX_bali_g_instruments (void)
+{
+ glewPrintExt("GL_SGIX_bali_g_instruments", GLEW_SGIX_bali_g_instruments, glewIsSupported("GL_SGIX_bali_g_instruments"), glewGetExtension("GL_SGIX_bali_g_instruments"));
+}
+
+#endif /* GL_SGIX_bali_g_instruments */
+
+#ifdef GL_SGIX_bali_r_instruments
+
+static void _glewInfo_GL_SGIX_bali_r_instruments (void)
+{
+ glewPrintExt("GL_SGIX_bali_r_instruments", GLEW_SGIX_bali_r_instruments, glewIsSupported("GL_SGIX_bali_r_instruments"), glewGetExtension("GL_SGIX_bali_r_instruments"));
+}
+
+#endif /* GL_SGIX_bali_r_instruments */
+
+#ifdef GL_SGIX_bali_timer_instruments
+
+static void _glewInfo_GL_SGIX_bali_timer_instruments (void)
+{
+ glewPrintExt("GL_SGIX_bali_timer_instruments", GLEW_SGIX_bali_timer_instruments, glewIsSupported("GL_SGIX_bali_timer_instruments"), glewGetExtension("GL_SGIX_bali_timer_instruments"));
+}
+
+#endif /* GL_SGIX_bali_timer_instruments */
+
+#ifdef GL_SGIX_blend_alpha_minmax
+
+static void _glewInfo_GL_SGIX_blend_alpha_minmax (void)
+{
+ glewPrintExt("GL_SGIX_blend_alpha_minmax", GLEW_SGIX_blend_alpha_minmax, glewIsSupported("GL_SGIX_blend_alpha_minmax"), glewGetExtension("GL_SGIX_blend_alpha_minmax"));
+}
+
+#endif /* GL_SGIX_blend_alpha_minmax */
+
+#ifdef GL_SGIX_blend_cadd
+
+static void _glewInfo_GL_SGIX_blend_cadd (void)
+{
+ glewPrintExt("GL_SGIX_blend_cadd", GLEW_SGIX_blend_cadd, glewIsSupported("GL_SGIX_blend_cadd"), glewGetExtension("GL_SGIX_blend_cadd"));
+}
+
+#endif /* GL_SGIX_blend_cadd */
+
+#ifdef GL_SGIX_blend_cmultiply
+
+static void _glewInfo_GL_SGIX_blend_cmultiply (void)
+{
+ glewPrintExt("GL_SGIX_blend_cmultiply", GLEW_SGIX_blend_cmultiply, glewIsSupported("GL_SGIX_blend_cmultiply"), glewGetExtension("GL_SGIX_blend_cmultiply"));
+}
+
+#endif /* GL_SGIX_blend_cmultiply */
+
+#ifdef GL_SGIX_calligraphic_fragment
+
+static void _glewInfo_GL_SGIX_calligraphic_fragment (void)
+{
+ glewPrintExt("GL_SGIX_calligraphic_fragment", GLEW_SGIX_calligraphic_fragment, glewIsSupported("GL_SGIX_calligraphic_fragment"), glewGetExtension("GL_SGIX_calligraphic_fragment"));
+}
+
+#endif /* GL_SGIX_calligraphic_fragment */
+
+#ifdef GL_SGIX_clipmap
+
+static void _glewInfo_GL_SGIX_clipmap (void)
+{
+ glewPrintExt("GL_SGIX_clipmap", GLEW_SGIX_clipmap, glewIsSupported("GL_SGIX_clipmap"), glewGetExtension("GL_SGIX_clipmap"));
+}
+
+#endif /* GL_SGIX_clipmap */
+
+#ifdef GL_SGIX_color_matrix_accuracy
+
+static void _glewInfo_GL_SGIX_color_matrix_accuracy (void)
+{
+ glewPrintExt("GL_SGIX_color_matrix_accuracy", GLEW_SGIX_color_matrix_accuracy, glewIsSupported("GL_SGIX_color_matrix_accuracy"), glewGetExtension("GL_SGIX_color_matrix_accuracy"));
+}
+
+#endif /* GL_SGIX_color_matrix_accuracy */
+
+#ifdef GL_SGIX_color_table_index_mode
+
+static void _glewInfo_GL_SGIX_color_table_index_mode (void)
+{
+ glewPrintExt("GL_SGIX_color_table_index_mode", GLEW_SGIX_color_table_index_mode, glewIsSupported("GL_SGIX_color_table_index_mode"), glewGetExtension("GL_SGIX_color_table_index_mode"));
+}
+
+#endif /* GL_SGIX_color_table_index_mode */
+
+#ifdef GL_SGIX_complex_polar
+
+static void _glewInfo_GL_SGIX_complex_polar (void)
+{
+ glewPrintExt("GL_SGIX_complex_polar", GLEW_SGIX_complex_polar, glewIsSupported("GL_SGIX_complex_polar"), glewGetExtension("GL_SGIX_complex_polar"));
+}
+
+#endif /* GL_SGIX_complex_polar */
+
+#ifdef GL_SGIX_convolution_accuracy
+
+static void _glewInfo_GL_SGIX_convolution_accuracy (void)
+{
+ glewPrintExt("GL_SGIX_convolution_accuracy", GLEW_SGIX_convolution_accuracy, glewIsSupported("GL_SGIX_convolution_accuracy"), glewGetExtension("GL_SGIX_convolution_accuracy"));
+}
+
+#endif /* GL_SGIX_convolution_accuracy */
+
+#ifdef GL_SGIX_cube_map
+
+static void _glewInfo_GL_SGIX_cube_map (void)
+{
+ glewPrintExt("GL_SGIX_cube_map", GLEW_SGIX_cube_map, glewIsSupported("GL_SGIX_cube_map"), glewGetExtension("GL_SGIX_cube_map"));
+}
+
+#endif /* GL_SGIX_cube_map */
+
+#ifdef GL_SGIX_cylinder_texgen
+
+static void _glewInfo_GL_SGIX_cylinder_texgen (void)
+{
+ glewPrintExt("GL_SGIX_cylinder_texgen", GLEW_SGIX_cylinder_texgen, glewIsSupported("GL_SGIX_cylinder_texgen"), glewGetExtension("GL_SGIX_cylinder_texgen"));
+}
+
+#endif /* GL_SGIX_cylinder_texgen */
+
+#ifdef GL_SGIX_datapipe
+
+static void _glewInfo_GL_SGIX_datapipe (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_datapipe", GLEW_SGIX_datapipe, glewIsSupported("GL_SGIX_datapipe"), glewGetExtension("GL_SGIX_datapipe"));
+
+ glewInfoFunc(fi, "glAddressSpace", glAddressSpace == NULL);
+ glewInfoFunc(fi, "glDataPipe", glDataPipe == NULL);
+}
+
+#endif /* GL_SGIX_datapipe */
+
+#ifdef GL_SGIX_decimation
+
+static void _glewInfo_GL_SGIX_decimation (void)
+{
+ glewPrintExt("GL_SGIX_decimation", GLEW_SGIX_decimation, glewIsSupported("GL_SGIX_decimation"), glewGetExtension("GL_SGIX_decimation"));
+}
+
+#endif /* GL_SGIX_decimation */
+
+#ifdef GL_SGIX_depth_pass_instrument
+
+static void _glewInfo_GL_SGIX_depth_pass_instrument (void)
+{
+ glewPrintExt("GL_SGIX_depth_pass_instrument", GLEW_SGIX_depth_pass_instrument, glewIsSupported("GL_SGIX_depth_pass_instrument"), glewGetExtension("GL_SGIX_depth_pass_instrument"));
+}
+
+#endif /* GL_SGIX_depth_pass_instrument */
+
+#ifdef GL_SGIX_depth_texture
+
+static void _glewInfo_GL_SGIX_depth_texture (void)
+{
+ glewPrintExt("GL_SGIX_depth_texture", GLEW_SGIX_depth_texture, glewIsSupported("GL_SGIX_depth_texture"), glewGetExtension("GL_SGIX_depth_texture"));
+}
+
+#endif /* GL_SGIX_depth_texture */
+
+#ifdef GL_SGIX_dvc
+
+static void _glewInfo_GL_SGIX_dvc (void)
+{
+ glewPrintExt("GL_SGIX_dvc", GLEW_SGIX_dvc, glewIsSupported("GL_SGIX_dvc"), glewGetExtension("GL_SGIX_dvc"));
+}
+
+#endif /* GL_SGIX_dvc */
+
+#ifdef GL_SGIX_flush_raster
+
+static void _glewInfo_GL_SGIX_flush_raster (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_flush_raster", GLEW_SGIX_flush_raster, glewIsSupported("GL_SGIX_flush_raster"), glewGetExtension("GL_SGIX_flush_raster"));
+
+ glewInfoFunc(fi, "glFlushRasterSGIX", glFlushRasterSGIX == NULL);
+}
+
+#endif /* GL_SGIX_flush_raster */
+
+#ifdef GL_SGIX_fog_blend
+
+static void _glewInfo_GL_SGIX_fog_blend (void)
+{
+ glewPrintExt("GL_SGIX_fog_blend", GLEW_SGIX_fog_blend, glewIsSupported("GL_SGIX_fog_blend"), glewGetExtension("GL_SGIX_fog_blend"));
+}
+
+#endif /* GL_SGIX_fog_blend */
+
+#ifdef GL_SGIX_fog_factor_to_alpha
+
+static void _glewInfo_GL_SGIX_fog_factor_to_alpha (void)
+{
+ glewPrintExt("GL_SGIX_fog_factor_to_alpha", GLEW_SGIX_fog_factor_to_alpha, glewIsSupported("GL_SGIX_fog_factor_to_alpha"), glewGetExtension("GL_SGIX_fog_factor_to_alpha"));
+}
+
+#endif /* GL_SGIX_fog_factor_to_alpha */
+
+#ifdef GL_SGIX_fog_layers
+
+static void _glewInfo_GL_SGIX_fog_layers (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_fog_layers", GLEW_SGIX_fog_layers, glewIsSupported("GL_SGIX_fog_layers"), glewGetExtension("GL_SGIX_fog_layers"));
+
+ glewInfoFunc(fi, "glFogLayersSGIX", glFogLayersSGIX == NULL);
+ glewInfoFunc(fi, "glGetFogLayersSGIX", glGetFogLayersSGIX == NULL);
+}
+
+#endif /* GL_SGIX_fog_layers */
+
+#ifdef GL_SGIX_fog_offset
+
+static void _glewInfo_GL_SGIX_fog_offset (void)
+{
+ glewPrintExt("GL_SGIX_fog_offset", GLEW_SGIX_fog_offset, glewIsSupported("GL_SGIX_fog_offset"), glewGetExtension("GL_SGIX_fog_offset"));
+}
+
+#endif /* GL_SGIX_fog_offset */
+
+#ifdef GL_SGIX_fog_patchy
+
+static void _glewInfo_GL_SGIX_fog_patchy (void)
+{
+ glewPrintExt("GL_SGIX_fog_patchy", GLEW_SGIX_fog_patchy, glewIsSupported("GL_SGIX_fog_patchy"), glewGetExtension("GL_SGIX_fog_patchy"));
+}
+
+#endif /* GL_SGIX_fog_patchy */
+
+#ifdef GL_SGIX_fog_scale
+
+static void _glewInfo_GL_SGIX_fog_scale (void)
+{
+ glewPrintExt("GL_SGIX_fog_scale", GLEW_SGIX_fog_scale, glewIsSupported("GL_SGIX_fog_scale"), glewGetExtension("GL_SGIX_fog_scale"));
+}
+
+#endif /* GL_SGIX_fog_scale */
+
+#ifdef GL_SGIX_fog_texture
+
+static void _glewInfo_GL_SGIX_fog_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_fog_texture", GLEW_SGIX_fog_texture, glewIsSupported("GL_SGIX_fog_texture"), glewGetExtension("GL_SGIX_fog_texture"));
+
+ glewInfoFunc(fi, "glTextureFogSGIX", glTextureFogSGIX == NULL);
+}
+
+#endif /* GL_SGIX_fog_texture */
+
+#ifdef GL_SGIX_fragment_lighting_space
+
+static void _glewInfo_GL_SGIX_fragment_lighting_space (void)
+{
+ glewPrintExt("GL_SGIX_fragment_lighting_space", GLEW_SGIX_fragment_lighting_space, glewIsSupported("GL_SGIX_fragment_lighting_space"), glewGetExtension("GL_SGIX_fragment_lighting_space"));
+}
+
+#endif /* GL_SGIX_fragment_lighting_space */
+
+#ifdef GL_SGIX_fragment_specular_lighting
+
+static void _glewInfo_GL_SGIX_fragment_specular_lighting (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_fragment_specular_lighting", GLEW_SGIX_fragment_specular_lighting, glewIsSupported("GL_SGIX_fragment_specular_lighting"), glewGetExtension("GL_SGIX_fragment_specular_lighting"));
+
+ glewInfoFunc(fi, "glFragmentColorMaterialSGIX", glFragmentColorMaterialSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelfSGIX", glFragmentLightModelfSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelfvSGIX", glFragmentLightModelfvSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightModeliSGIX", glFragmentLightModeliSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightModelivSGIX", glFragmentLightModelivSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightfSGIX", glFragmentLightfSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightfvSGIX", glFragmentLightfvSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightiSGIX", glFragmentLightiSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentLightivSGIX", glFragmentLightivSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialfSGIX", glFragmentMaterialfSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialfvSGIX", glFragmentMaterialfvSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialiSGIX", glFragmentMaterialiSGIX == NULL);
+ glewInfoFunc(fi, "glFragmentMaterialivSGIX", glFragmentMaterialivSGIX == NULL);
+ glewInfoFunc(fi, "glGetFragmentLightfvSGIX", glGetFragmentLightfvSGIX == NULL);
+ glewInfoFunc(fi, "glGetFragmentLightivSGIX", glGetFragmentLightivSGIX == NULL);
+ glewInfoFunc(fi, "glGetFragmentMaterialfvSGIX", glGetFragmentMaterialfvSGIX == NULL);
+ glewInfoFunc(fi, "glGetFragmentMaterialivSGIX", glGetFragmentMaterialivSGIX == NULL);
+}
+
+#endif /* GL_SGIX_fragment_specular_lighting */
+
+#ifdef GL_SGIX_fragments_instrument
+
+static void _glewInfo_GL_SGIX_fragments_instrument (void)
+{
+ glewPrintExt("GL_SGIX_fragments_instrument", GLEW_SGIX_fragments_instrument, glewIsSupported("GL_SGIX_fragments_instrument"), glewGetExtension("GL_SGIX_fragments_instrument"));
+}
+
+#endif /* GL_SGIX_fragments_instrument */
+
+#ifdef GL_SGIX_framezoom
+
+static void _glewInfo_GL_SGIX_framezoom (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_framezoom", GLEW_SGIX_framezoom, glewIsSupported("GL_SGIX_framezoom"), glewGetExtension("GL_SGIX_framezoom"));
+
+ glewInfoFunc(fi, "glFrameZoomSGIX", glFrameZoomSGIX == NULL);
+}
+
+#endif /* GL_SGIX_framezoom */
+
+#ifdef GL_SGIX_icc_texture
+
+static void _glewInfo_GL_SGIX_icc_texture (void)
+{
+ glewPrintExt("GL_SGIX_icc_texture", GLEW_SGIX_icc_texture, glewIsSupported("GL_SGIX_icc_texture"), glewGetExtension("GL_SGIX_icc_texture"));
+}
+
+#endif /* GL_SGIX_icc_texture */
+
+#ifdef GL_SGIX_igloo_interface
+
+static void _glewInfo_GL_SGIX_igloo_interface (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_igloo_interface", GLEW_SGIX_igloo_interface, glewIsSupported("GL_SGIX_igloo_interface"), glewGetExtension("GL_SGIX_igloo_interface"));
+
+ glewInfoFunc(fi, "glIglooInterfaceSGIX", glIglooInterfaceSGIX == NULL);
+}
+
+#endif /* GL_SGIX_igloo_interface */
+
+#ifdef GL_SGIX_image_compression
+
+static void _glewInfo_GL_SGIX_image_compression (void)
+{
+ glewPrintExt("GL_SGIX_image_compression", GLEW_SGIX_image_compression, glewIsSupported("GL_SGIX_image_compression"), glewGetExtension("GL_SGIX_image_compression"));
+}
+
+#endif /* GL_SGIX_image_compression */
+
+#ifdef GL_SGIX_impact_pixel_texture
+
+static void _glewInfo_GL_SGIX_impact_pixel_texture (void)
+{
+ glewPrintExt("GL_SGIX_impact_pixel_texture", GLEW_SGIX_impact_pixel_texture, glewIsSupported("GL_SGIX_impact_pixel_texture"), glewGetExtension("GL_SGIX_impact_pixel_texture"));
+}
+
+#endif /* GL_SGIX_impact_pixel_texture */
+
+#ifdef GL_SGIX_instrument_error
+
+static void _glewInfo_GL_SGIX_instrument_error (void)
+{
+ glewPrintExt("GL_SGIX_instrument_error", GLEW_SGIX_instrument_error, glewIsSupported("GL_SGIX_instrument_error"), glewGetExtension("GL_SGIX_instrument_error"));
+}
+
+#endif /* GL_SGIX_instrument_error */
+
+#ifdef GL_SGIX_interlace
+
+static void _glewInfo_GL_SGIX_interlace (void)
+{
+ glewPrintExt("GL_SGIX_interlace", GLEW_SGIX_interlace, glewIsSupported("GL_SGIX_interlace"), glewGetExtension("GL_SGIX_interlace"));
+}
+
+#endif /* GL_SGIX_interlace */
+
+#ifdef GL_SGIX_ir_instrument1
+
+static void _glewInfo_GL_SGIX_ir_instrument1 (void)
+{
+ glewPrintExt("GL_SGIX_ir_instrument1", GLEW_SGIX_ir_instrument1, glewIsSupported("GL_SGIX_ir_instrument1"), glewGetExtension("GL_SGIX_ir_instrument1"));
+}
+
+#endif /* GL_SGIX_ir_instrument1 */
+
+#ifdef GL_SGIX_line_quality_hint
+
+static void _glewInfo_GL_SGIX_line_quality_hint (void)
+{
+ glewPrintExt("GL_SGIX_line_quality_hint", GLEW_SGIX_line_quality_hint, glewIsSupported("GL_SGIX_line_quality_hint"), glewGetExtension("GL_SGIX_line_quality_hint"));
+}
+
+#endif /* GL_SGIX_line_quality_hint */
+
+#ifdef GL_SGIX_list_priority
+
+static void _glewInfo_GL_SGIX_list_priority (void)
+{
+ glewPrintExt("GL_SGIX_list_priority", GLEW_SGIX_list_priority, glewIsSupported("GL_SGIX_list_priority"), glewGetExtension("GL_SGIX_list_priority"));
+}
+
+#endif /* GL_SGIX_list_priority */
+
+#ifdef GL_SGIX_mpeg1
+
+static void _glewInfo_GL_SGIX_mpeg1 (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_mpeg1", GLEW_SGIX_mpeg1, glewIsSupported("GL_SGIX_mpeg1"), glewGetExtension("GL_SGIX_mpeg1"));
+
+ glewInfoFunc(fi, "glAllocMPEGPredictorsSGIX", glAllocMPEGPredictorsSGIX == NULL);
+ glewInfoFunc(fi, "glDeleteMPEGPredictorsSGIX", glDeleteMPEGPredictorsSGIX == NULL);
+ glewInfoFunc(fi, "glGenMPEGPredictorsSGIX", glGenMPEGPredictorsSGIX == NULL);
+ glewInfoFunc(fi, "glGetMPEGParameterfvSGIX", glGetMPEGParameterfvSGIX == NULL);
+ glewInfoFunc(fi, "glGetMPEGParameterivSGIX", glGetMPEGParameterivSGIX == NULL);
+ glewInfoFunc(fi, "glGetMPEGPredictorSGIX", glGetMPEGPredictorSGIX == NULL);
+ glewInfoFunc(fi, "glGetMPEGQuantTableubv", glGetMPEGQuantTableubv == NULL);
+ glewInfoFunc(fi, "glIsMPEGPredictorSGIX", glIsMPEGPredictorSGIX == NULL);
+ glewInfoFunc(fi, "glMPEGPredictorSGIX", glMPEGPredictorSGIX == NULL);
+ glewInfoFunc(fi, "glMPEGQuantTableubv", glMPEGQuantTableubv == NULL);
+ glewInfoFunc(fi, "glSwapMPEGPredictorsSGIX", glSwapMPEGPredictorsSGIX == NULL);
+}
+
+#endif /* GL_SGIX_mpeg1 */
+
+#ifdef GL_SGIX_mpeg2
+
+static void _glewInfo_GL_SGIX_mpeg2 (void)
+{
+ glewPrintExt("GL_SGIX_mpeg2", GLEW_SGIX_mpeg2, glewIsSupported("GL_SGIX_mpeg2"), glewGetExtension("GL_SGIX_mpeg2"));
+}
+
+#endif /* GL_SGIX_mpeg2 */
+
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+
+static void _glewInfo_GL_SGIX_nonlinear_lighting_pervertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_nonlinear_lighting_pervertex", GLEW_SGIX_nonlinear_lighting_pervertex, glewIsSupported("GL_SGIX_nonlinear_lighting_pervertex"), glewGetExtension("GL_SGIX_nonlinear_lighting_pervertex"));
+
+ glewInfoFunc(fi, "glGetNonlinLightfvSGIX", glGetNonlinLightfvSGIX == NULL);
+ glewInfoFunc(fi, "glGetNonlinMaterialfvSGIX", glGetNonlinMaterialfvSGIX == NULL);
+ glewInfoFunc(fi, "glNonlinLightfvSGIX", glNonlinLightfvSGIX == NULL);
+ glewInfoFunc(fi, "glNonlinMaterialfvSGIX", glNonlinMaterialfvSGIX == NULL);
+}
+
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+
+#ifdef GL_SGIX_nurbs_eval
+
+static void _glewInfo_GL_SGIX_nurbs_eval (void)
+{
+ glewPrintExt("GL_SGIX_nurbs_eval", GLEW_SGIX_nurbs_eval, glewIsSupported("GL_SGIX_nurbs_eval"), glewGetExtension("GL_SGIX_nurbs_eval"));
+}
+
+#endif /* GL_SGIX_nurbs_eval */
+
+#ifdef GL_SGIX_occlusion_instrument
+
+static void _glewInfo_GL_SGIX_occlusion_instrument (void)
+{
+ glewPrintExt("GL_SGIX_occlusion_instrument", GLEW_SGIX_occlusion_instrument, glewIsSupported("GL_SGIX_occlusion_instrument"), glewGetExtension("GL_SGIX_occlusion_instrument"));
+}
+
+#endif /* GL_SGIX_occlusion_instrument */
+
+#ifdef GL_SGIX_packed_6bytes
+
+static void _glewInfo_GL_SGIX_packed_6bytes (void)
+{
+ glewPrintExt("GL_SGIX_packed_6bytes", GLEW_SGIX_packed_6bytes, glewIsSupported("GL_SGIX_packed_6bytes"), glewGetExtension("GL_SGIX_packed_6bytes"));
+}
+
+#endif /* GL_SGIX_packed_6bytes */
+
+#ifdef GL_SGIX_pixel_texture
+
+static void _glewInfo_GL_SGIX_pixel_texture (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_pixel_texture", GLEW_SGIX_pixel_texture, glewIsSupported("GL_SGIX_pixel_texture"), glewGetExtension("GL_SGIX_pixel_texture"));
+
+ glewInfoFunc(fi, "glPixelTexGenSGIX", glPixelTexGenSGIX == NULL);
+}
+
+#endif /* GL_SGIX_pixel_texture */
+
+#ifdef GL_SGIX_pixel_texture_bits
+
+static void _glewInfo_GL_SGIX_pixel_texture_bits (void)
+{
+ glewPrintExt("GL_SGIX_pixel_texture_bits", GLEW_SGIX_pixel_texture_bits, glewIsSupported("GL_SGIX_pixel_texture_bits"), glewGetExtension("GL_SGIX_pixel_texture_bits"));
+}
+
+#endif /* GL_SGIX_pixel_texture_bits */
+
+#ifdef GL_SGIX_pixel_texture_lod
+
+static void _glewInfo_GL_SGIX_pixel_texture_lod (void)
+{
+ glewPrintExt("GL_SGIX_pixel_texture_lod", GLEW_SGIX_pixel_texture_lod, glewIsSupported("GL_SGIX_pixel_texture_lod"), glewGetExtension("GL_SGIX_pixel_texture_lod"));
+}
+
+#endif /* GL_SGIX_pixel_texture_lod */
+
+#ifdef GL_SGIX_pixel_tiles
+
+static void _glewInfo_GL_SGIX_pixel_tiles (void)
+{
+ glewPrintExt("GL_SGIX_pixel_tiles", GLEW_SGIX_pixel_tiles, glewIsSupported("GL_SGIX_pixel_tiles"), glewGetExtension("GL_SGIX_pixel_tiles"));
+}
+
+#endif /* GL_SGIX_pixel_tiles */
+
+#ifdef GL_SGIX_polynomial_ffd
+
+static void _glewInfo_GL_SGIX_polynomial_ffd (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_polynomial_ffd", GLEW_SGIX_polynomial_ffd, glewIsSupported("GL_SGIX_polynomial_ffd"), glewGetExtension("GL_SGIX_polynomial_ffd"));
+
+ glewInfoFunc(fi, "glDeformSGIX", glDeformSGIX == NULL);
+ glewInfoFunc(fi, "glLoadIdentityDeformationMapSGIX", glLoadIdentityDeformationMapSGIX == NULL);
+}
+
+#endif /* GL_SGIX_polynomial_ffd */
+
+#ifdef GL_SGIX_quad_mesh
+
+static void _glewInfo_GL_SGIX_quad_mesh (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_quad_mesh", GLEW_SGIX_quad_mesh, glewIsSupported("GL_SGIX_quad_mesh"), glewGetExtension("GL_SGIX_quad_mesh"));
+
+ glewInfoFunc(fi, "glMeshBreadthSGIX", glMeshBreadthSGIX == NULL);
+ glewInfoFunc(fi, "glMeshStrideSGIX", glMeshStrideSGIX == NULL);
+}
+
+#endif /* GL_SGIX_quad_mesh */
+
+#ifdef GL_SGIX_reference_plane
+
+static void _glewInfo_GL_SGIX_reference_plane (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_reference_plane", GLEW_SGIX_reference_plane, glewIsSupported("GL_SGIX_reference_plane"), glewGetExtension("GL_SGIX_reference_plane"));
+
+ glewInfoFunc(fi, "glReferencePlaneSGIX", glReferencePlaneSGIX == NULL);
+}
+
+#endif /* GL_SGIX_reference_plane */
+
+#ifdef GL_SGIX_resample
+
+static void _glewInfo_GL_SGIX_resample (void)
+{
+ glewPrintExt("GL_SGIX_resample", GLEW_SGIX_resample, glewIsSupported("GL_SGIX_resample"), glewGetExtension("GL_SGIX_resample"));
+}
+
+#endif /* GL_SGIX_resample */
+
+#ifdef GL_SGIX_scalebias_hint
+
+static void _glewInfo_GL_SGIX_scalebias_hint (void)
+{
+ glewPrintExt("GL_SGIX_scalebias_hint", GLEW_SGIX_scalebias_hint, glewIsSupported("GL_SGIX_scalebias_hint"), glewGetExtension("GL_SGIX_scalebias_hint"));
+}
+
+#endif /* GL_SGIX_scalebias_hint */
+
+#ifdef GL_SGIX_shadow
+
+static void _glewInfo_GL_SGIX_shadow (void)
+{
+ glewPrintExt("GL_SGIX_shadow", GLEW_SGIX_shadow, glewIsSupported("GL_SGIX_shadow"), glewGetExtension("GL_SGIX_shadow"));
+}
+
+#endif /* GL_SGIX_shadow */
+
+#ifdef GL_SGIX_shadow_ambient
+
+static void _glewInfo_GL_SGIX_shadow_ambient (void)
+{
+ glewPrintExt("GL_SGIX_shadow_ambient", GLEW_SGIX_shadow_ambient, glewIsSupported("GL_SGIX_shadow_ambient"), glewGetExtension("GL_SGIX_shadow_ambient"));
+}
+
+#endif /* GL_SGIX_shadow_ambient */
+
+#ifdef GL_SGIX_slim
+
+static void _glewInfo_GL_SGIX_slim (void)
+{
+ glewPrintExt("GL_SGIX_slim", GLEW_SGIX_slim, glewIsSupported("GL_SGIX_slim"), glewGetExtension("GL_SGIX_slim"));
+}
+
+#endif /* GL_SGIX_slim */
+
+#ifdef GL_SGIX_spotlight_cutoff
+
+static void _glewInfo_GL_SGIX_spotlight_cutoff (void)
+{
+ glewPrintExt("GL_SGIX_spotlight_cutoff", GLEW_SGIX_spotlight_cutoff, glewIsSupported("GL_SGIX_spotlight_cutoff"), glewGetExtension("GL_SGIX_spotlight_cutoff"));
+}
+
+#endif /* GL_SGIX_spotlight_cutoff */
+
+#ifdef GL_SGIX_sprite
+
+static void _glewInfo_GL_SGIX_sprite (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_sprite", GLEW_SGIX_sprite, glewIsSupported("GL_SGIX_sprite"), glewGetExtension("GL_SGIX_sprite"));
+
+ glewInfoFunc(fi, "glSpriteParameterfSGIX", glSpriteParameterfSGIX == NULL);
+ glewInfoFunc(fi, "glSpriteParameterfvSGIX", glSpriteParameterfvSGIX == NULL);
+ glewInfoFunc(fi, "glSpriteParameteriSGIX", glSpriteParameteriSGIX == NULL);
+ glewInfoFunc(fi, "glSpriteParameterivSGIX", glSpriteParameterivSGIX == NULL);
+}
+
+#endif /* GL_SGIX_sprite */
+
+#ifdef GL_SGIX_subdiv_patch
+
+static void _glewInfo_GL_SGIX_subdiv_patch (void)
+{
+ glewPrintExt("GL_SGIX_subdiv_patch", GLEW_SGIX_subdiv_patch, glewIsSupported("GL_SGIX_subdiv_patch"), glewGetExtension("GL_SGIX_subdiv_patch"));
+}
+
+#endif /* GL_SGIX_subdiv_patch */
+
+#ifdef GL_SGIX_subsample
+
+static void _glewInfo_GL_SGIX_subsample (void)
+{
+ glewPrintExt("GL_SGIX_subsample", GLEW_SGIX_subsample, glewIsSupported("GL_SGIX_subsample"), glewGetExtension("GL_SGIX_subsample"));
+}
+
+#endif /* GL_SGIX_subsample */
+
+#ifdef GL_SGIX_tag_sample_buffer
+
+static void _glewInfo_GL_SGIX_tag_sample_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_tag_sample_buffer", GLEW_SGIX_tag_sample_buffer, glewIsSupported("GL_SGIX_tag_sample_buffer"), glewGetExtension("GL_SGIX_tag_sample_buffer"));
+
+ glewInfoFunc(fi, "glTagSampleBufferSGIX", glTagSampleBufferSGIX == NULL);
+}
+
+#endif /* GL_SGIX_tag_sample_buffer */
+
+#ifdef GL_SGIX_texture_add_env
+
+static void _glewInfo_GL_SGIX_texture_add_env (void)
+{
+ glewPrintExt("GL_SGIX_texture_add_env", GLEW_SGIX_texture_add_env, glewIsSupported("GL_SGIX_texture_add_env"), glewGetExtension("GL_SGIX_texture_add_env"));
+}
+
+#endif /* GL_SGIX_texture_add_env */
+
+#ifdef GL_SGIX_texture_coordinate_clamp
+
+static void _glewInfo_GL_SGIX_texture_coordinate_clamp (void)
+{
+ glewPrintExt("GL_SGIX_texture_coordinate_clamp", GLEW_SGIX_texture_coordinate_clamp, glewIsSupported("GL_SGIX_texture_coordinate_clamp"), glewGetExtension("GL_SGIX_texture_coordinate_clamp"));
+}
+
+#endif /* GL_SGIX_texture_coordinate_clamp */
+
+#ifdef GL_SGIX_texture_lod_bias
+
+static void _glewInfo_GL_SGIX_texture_lod_bias (void)
+{
+ glewPrintExt("GL_SGIX_texture_lod_bias", GLEW_SGIX_texture_lod_bias, glewIsSupported("GL_SGIX_texture_lod_bias"), glewGetExtension("GL_SGIX_texture_lod_bias"));
+}
+
+#endif /* GL_SGIX_texture_lod_bias */
+
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+
+static void _glewInfo_GL_SGIX_texture_mipmap_anisotropic (void)
+{
+ glewPrintExt("GL_SGIX_texture_mipmap_anisotropic", GLEW_SGIX_texture_mipmap_anisotropic, glewIsSupported("GL_SGIX_texture_mipmap_anisotropic"), glewGetExtension("GL_SGIX_texture_mipmap_anisotropic"));
+}
+
+#endif /* GL_SGIX_texture_mipmap_anisotropic */
+
+#ifdef GL_SGIX_texture_multi_buffer
+
+static void _glewInfo_GL_SGIX_texture_multi_buffer (void)
+{
+ glewPrintExt("GL_SGIX_texture_multi_buffer", GLEW_SGIX_texture_multi_buffer, glewIsSupported("GL_SGIX_texture_multi_buffer"), glewGetExtension("GL_SGIX_texture_multi_buffer"));
+}
+
+#endif /* GL_SGIX_texture_multi_buffer */
+
+#ifdef GL_SGIX_texture_phase
+
+static void _glewInfo_GL_SGIX_texture_phase (void)
+{
+ glewPrintExt("GL_SGIX_texture_phase", GLEW_SGIX_texture_phase, glewIsSupported("GL_SGIX_texture_phase"), glewGetExtension("GL_SGIX_texture_phase"));
+}
+
+#endif /* GL_SGIX_texture_phase */
+
+#ifdef GL_SGIX_texture_range
+
+static void _glewInfo_GL_SGIX_texture_range (void)
+{
+ glewPrintExt("GL_SGIX_texture_range", GLEW_SGIX_texture_range, glewIsSupported("GL_SGIX_texture_range"), glewGetExtension("GL_SGIX_texture_range"));
+}
+
+#endif /* GL_SGIX_texture_range */
+
+#ifdef GL_SGIX_texture_scale_bias
+
+static void _glewInfo_GL_SGIX_texture_scale_bias (void)
+{
+ glewPrintExt("GL_SGIX_texture_scale_bias", GLEW_SGIX_texture_scale_bias, glewIsSupported("GL_SGIX_texture_scale_bias"), glewGetExtension("GL_SGIX_texture_scale_bias"));
+}
+
+#endif /* GL_SGIX_texture_scale_bias */
+
+#ifdef GL_SGIX_texture_supersample
+
+static void _glewInfo_GL_SGIX_texture_supersample (void)
+{
+ glewPrintExt("GL_SGIX_texture_supersample", GLEW_SGIX_texture_supersample, glewIsSupported("GL_SGIX_texture_supersample"), glewGetExtension("GL_SGIX_texture_supersample"));
+}
+
+#endif /* GL_SGIX_texture_supersample */
+
+#ifdef GL_SGIX_vector_ops
+
+static void _glewInfo_GL_SGIX_vector_ops (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_vector_ops", GLEW_SGIX_vector_ops, glewIsSupported("GL_SGIX_vector_ops"), glewGetExtension("GL_SGIX_vector_ops"));
+
+ glewInfoFunc(fi, "glGetVectorOperationSGIX", glGetVectorOperationSGIX == NULL);
+ glewInfoFunc(fi, "glVectorOperationSGIX", glVectorOperationSGIX == NULL);
+}
+
+#endif /* GL_SGIX_vector_ops */
+
+#ifdef GL_SGIX_vertex_array_object
+
+static void _glewInfo_GL_SGIX_vertex_array_object (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGIX_vertex_array_object", GLEW_SGIX_vertex_array_object, glewIsSupported("GL_SGIX_vertex_array_object"), glewGetExtension("GL_SGIX_vertex_array_object"));
+
+ glewInfoFunc(fi, "glAreVertexArraysResidentSGIX", glAreVertexArraysResidentSGIX == NULL);
+ glewInfoFunc(fi, "glBindVertexArraySGIX", glBindVertexArraySGIX == NULL);
+ glewInfoFunc(fi, "glDeleteVertexArraysSGIX", glDeleteVertexArraysSGIX == NULL);
+ glewInfoFunc(fi, "glGenVertexArraysSGIX", glGenVertexArraysSGIX == NULL);
+ glewInfoFunc(fi, "glIsVertexArraySGIX", glIsVertexArraySGIX == NULL);
+ glewInfoFunc(fi, "glPrioritizeVertexArraysSGIX", glPrioritizeVertexArraysSGIX == NULL);
+}
+
+#endif /* GL_SGIX_vertex_array_object */
+
+#ifdef GL_SGIX_vertex_preclip
+
+static void _glewInfo_GL_SGIX_vertex_preclip (void)
+{
+ glewPrintExt("GL_SGIX_vertex_preclip", GLEW_SGIX_vertex_preclip, glewIsSupported("GL_SGIX_vertex_preclip"), glewGetExtension("GL_SGIX_vertex_preclip"));
+}
+
+#endif /* GL_SGIX_vertex_preclip */
+
+#ifdef GL_SGIX_vertex_preclip_hint
+
+static void _glewInfo_GL_SGIX_vertex_preclip_hint (void)
+{
+ glewPrintExt("GL_SGIX_vertex_preclip_hint", GLEW_SGIX_vertex_preclip_hint, glewIsSupported("GL_SGIX_vertex_preclip_hint"), glewGetExtension("GL_SGIX_vertex_preclip_hint"));
+}
+
+#endif /* GL_SGIX_vertex_preclip_hint */
+
+#ifdef GL_SGIX_ycrcb
+
+static void _glewInfo_GL_SGIX_ycrcb (void)
+{
+ glewPrintExt("GL_SGIX_ycrcb", GLEW_SGIX_ycrcb, glewIsSupported("GL_SGIX_ycrcb"), glewGetExtension("GL_SGIX_ycrcb"));
+}
+
+#endif /* GL_SGIX_ycrcb */
+
+#ifdef GL_SGIX_ycrcb_subsample
+
+static void _glewInfo_GL_SGIX_ycrcb_subsample (void)
+{
+ glewPrintExt("GL_SGIX_ycrcb_subsample", GLEW_SGIX_ycrcb_subsample, glewIsSupported("GL_SGIX_ycrcb_subsample"), glewGetExtension("GL_SGIX_ycrcb_subsample"));
+}
+
+#endif /* GL_SGIX_ycrcb_subsample */
+
+#ifdef GL_SGIX_ycrcba
+
+static void _glewInfo_GL_SGIX_ycrcba (void)
+{
+ glewPrintExt("GL_SGIX_ycrcba", GLEW_SGIX_ycrcba, glewIsSupported("GL_SGIX_ycrcba"), glewGetExtension("GL_SGIX_ycrcba"));
+}
+
+#endif /* GL_SGIX_ycrcba */
+
+#ifdef GL_SGI_color_matrix
+
+static void _glewInfo_GL_SGI_color_matrix (void)
+{
+ glewPrintExt("GL_SGI_color_matrix", GLEW_SGI_color_matrix, glewIsSupported("GL_SGI_color_matrix"), glewGetExtension("GL_SGI_color_matrix"));
+}
+
+#endif /* GL_SGI_color_matrix */
+
+#ifdef GL_SGI_color_table
+
+static void _glewInfo_GL_SGI_color_table (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGI_color_table", GLEW_SGI_color_table, glewIsSupported("GL_SGI_color_table"), glewGetExtension("GL_SGI_color_table"));
+
+ glewInfoFunc(fi, "glColorTableParameterfvSGI", glColorTableParameterfvSGI == NULL);
+ glewInfoFunc(fi, "glColorTableParameterivSGI", glColorTableParameterivSGI == NULL);
+ glewInfoFunc(fi, "glColorTableSGI", glColorTableSGI == NULL);
+ glewInfoFunc(fi, "glCopyColorTableSGI", glCopyColorTableSGI == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterfvSGI", glGetColorTableParameterfvSGI == NULL);
+ glewInfoFunc(fi, "glGetColorTableParameterivSGI", glGetColorTableParameterivSGI == NULL);
+ glewInfoFunc(fi, "glGetColorTableSGI", glGetColorTableSGI == NULL);
+}
+
+#endif /* GL_SGI_color_table */
+
+#ifdef GL_SGI_complex
+
+static void _glewInfo_GL_SGI_complex (void)
+{
+ glewPrintExt("GL_SGI_complex", GLEW_SGI_complex, glewIsSupported("GL_SGI_complex"), glewGetExtension("GL_SGI_complex"));
+}
+
+#endif /* GL_SGI_complex */
+
+#ifdef GL_SGI_complex_type
+
+static void _glewInfo_GL_SGI_complex_type (void)
+{
+ glewPrintExt("GL_SGI_complex_type", GLEW_SGI_complex_type, glewIsSupported("GL_SGI_complex_type"), glewGetExtension("GL_SGI_complex_type"));
+}
+
+#endif /* GL_SGI_complex_type */
+
+#ifdef GL_SGI_fft
+
+static void _glewInfo_GL_SGI_fft (void)
+{
+ GLboolean fi = glewPrintExt("GL_SGI_fft", GLEW_SGI_fft, glewIsSupported("GL_SGI_fft"), glewGetExtension("GL_SGI_fft"));
+
+ glewInfoFunc(fi, "glGetPixelTransformParameterfvSGI", glGetPixelTransformParameterfvSGI == NULL);
+ glewInfoFunc(fi, "glGetPixelTransformParameterivSGI", glGetPixelTransformParameterivSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterfSGI", glPixelTransformParameterfSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterfvSGI", glPixelTransformParameterfvSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameteriSGI", glPixelTransformParameteriSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformParameterivSGI", glPixelTransformParameterivSGI == NULL);
+ glewInfoFunc(fi, "glPixelTransformSGI", glPixelTransformSGI == NULL);
+}
+
+#endif /* GL_SGI_fft */
+
+#ifdef GL_SGI_texture_color_table
+
+static void _glewInfo_GL_SGI_texture_color_table (void)
+{
+ glewPrintExt("GL_SGI_texture_color_table", GLEW_SGI_texture_color_table, glewIsSupported("GL_SGI_texture_color_table"), glewGetExtension("GL_SGI_texture_color_table"));
+}
+
+#endif /* GL_SGI_texture_color_table */
+
+#ifdef GL_SUNX_constant_data
+
+static void _glewInfo_GL_SUNX_constant_data (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUNX_constant_data", GLEW_SUNX_constant_data, glewIsSupported("GL_SUNX_constant_data"), glewGetExtension("GL_SUNX_constant_data"));
+
+ glewInfoFunc(fi, "glFinishTextureSUNX", glFinishTextureSUNX == NULL);
+}
+
+#endif /* GL_SUNX_constant_data */
+
+#ifdef GL_SUN_convolution_border_modes
+
+static void _glewInfo_GL_SUN_convolution_border_modes (void)
+{
+ glewPrintExt("GL_SUN_convolution_border_modes", GLEW_SUN_convolution_border_modes, glewIsSupported("GL_SUN_convolution_border_modes"), glewGetExtension("GL_SUN_convolution_border_modes"));
+}
+
+#endif /* GL_SUN_convolution_border_modes */
+
+#ifdef GL_SUN_global_alpha
+
+static void _glewInfo_GL_SUN_global_alpha (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUN_global_alpha", GLEW_SUN_global_alpha, glewIsSupported("GL_SUN_global_alpha"), glewGetExtension("GL_SUN_global_alpha"));
+
+ glewInfoFunc(fi, "glGlobalAlphaFactorbSUN", glGlobalAlphaFactorbSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactordSUN", glGlobalAlphaFactordSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactorfSUN", glGlobalAlphaFactorfSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactoriSUN", glGlobalAlphaFactoriSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactorsSUN", glGlobalAlphaFactorsSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactorubSUN", glGlobalAlphaFactorubSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactoruiSUN", glGlobalAlphaFactoruiSUN == NULL);
+ glewInfoFunc(fi, "glGlobalAlphaFactorusSUN", glGlobalAlphaFactorusSUN == NULL);
+}
+
+#endif /* GL_SUN_global_alpha */
+
+#ifdef GL_SUN_mesh_array
+
+static void _glewInfo_GL_SUN_mesh_array (void)
+{
+ glewPrintExt("GL_SUN_mesh_array", GLEW_SUN_mesh_array, glewIsSupported("GL_SUN_mesh_array"), glewGetExtension("GL_SUN_mesh_array"));
+}
+
+#endif /* GL_SUN_mesh_array */
+
+#ifdef GL_SUN_read_video_pixels
+
+static void _glewInfo_GL_SUN_read_video_pixels (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUN_read_video_pixels", GLEW_SUN_read_video_pixels, glewIsSupported("GL_SUN_read_video_pixels"), glewGetExtension("GL_SUN_read_video_pixels"));
+
+ glewInfoFunc(fi, "glReadVideoPixelsSUN", glReadVideoPixelsSUN == NULL);
+}
+
+#endif /* GL_SUN_read_video_pixels */
+
+#ifdef GL_SUN_slice_accum
+
+static void _glewInfo_GL_SUN_slice_accum (void)
+{
+ glewPrintExt("GL_SUN_slice_accum", GLEW_SUN_slice_accum, glewIsSupported("GL_SUN_slice_accum"), glewGetExtension("GL_SUN_slice_accum"));
+}
+
+#endif /* GL_SUN_slice_accum */
+
+#ifdef GL_SUN_triangle_list
+
+static void _glewInfo_GL_SUN_triangle_list (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUN_triangle_list", GLEW_SUN_triangle_list, glewIsSupported("GL_SUN_triangle_list"), glewGetExtension("GL_SUN_triangle_list"));
+
+ glewInfoFunc(fi, "glReplacementCodePointerSUN", glReplacementCodePointerSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeubSUN", glReplacementCodeubSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeubvSUN", glReplacementCodeubvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiSUN", glReplacementCodeuiSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuivSUN", glReplacementCodeuivSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeusSUN", glReplacementCodeusSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeusvSUN", glReplacementCodeusvSUN == NULL);
+}
+
+#endif /* GL_SUN_triangle_list */
+
+#ifdef GL_SUN_vertex
+
+static void _glewInfo_GL_SUN_vertex (void)
+{
+ GLboolean fi = glewPrintExt("GL_SUN_vertex", GLEW_SUN_vertex, glewIsSupported("GL_SUN_vertex"), glewGetExtension("GL_SUN_vertex"));
+
+ glewInfoFunc(fi, "glColor3fVertex3fSUN", glColor3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glColor3fVertex3fvSUN", glColor3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glColor4fNormal3fVertex3fSUN", glColor4fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glColor4fNormal3fVertex3fvSUN", glColor4fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glColor4ubVertex2fSUN", glColor4ubVertex2fSUN == NULL);
+ glewInfoFunc(fi, "glColor4ubVertex2fvSUN", glColor4ubVertex2fvSUN == NULL);
+ glewInfoFunc(fi, "glColor4ubVertex3fSUN", glColor4ubVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glColor4ubVertex3fvSUN", glColor4ubVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glNormal3fVertex3fSUN", glNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glNormal3fVertex3fvSUN", glNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor3fVertex3fSUN", glReplacementCodeuiColor3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor3fVertex3fvSUN", glReplacementCodeuiColor3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor4fNormal3fVertex3fSUN", glReplacementCodeuiColor4fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", glReplacementCodeuiColor4fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor4ubVertex3fSUN", glReplacementCodeuiColor4ubVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiColor4ubVertex3fvSUN", glReplacementCodeuiColor4ubVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiNormal3fVertex3fSUN", glReplacementCodeuiNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiNormal3fVertex3fvSUN", glReplacementCodeuiNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fVertex3fSUN", glReplacementCodeuiTexCoord2fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiTexCoord2fVertex3fvSUN", glReplacementCodeuiTexCoord2fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiVertex3fSUN", glReplacementCodeuiVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glReplacementCodeuiVertex3fvSUN", glReplacementCodeuiVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor3fVertex3fSUN", glTexCoord2fColor3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor3fVertex3fvSUN", glTexCoord2fColor3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor4fNormal3fVertex3fSUN", glTexCoord2fColor4fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor4fNormal3fVertex3fvSUN", glTexCoord2fColor4fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor4ubVertex3fSUN", glTexCoord2fColor4ubVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fColor4ubVertex3fvSUN", glTexCoord2fColor4ubVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fNormal3fVertex3fSUN", glTexCoord2fNormal3fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fNormal3fVertex3fvSUN", glTexCoord2fNormal3fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fVertex3fSUN", glTexCoord2fVertex3fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord2fVertex3fvSUN", glTexCoord2fVertex3fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord4fColor4fNormal3fVertex4fSUN", glTexCoord4fColor4fNormal3fVertex4fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord4fColor4fNormal3fVertex4fvSUN", glTexCoord4fColor4fNormal3fVertex4fvSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord4fVertex4fSUN", glTexCoord4fVertex4fSUN == NULL);
+ glewInfoFunc(fi, "glTexCoord4fVertex4fvSUN", glTexCoord4fVertex4fvSUN == NULL);
+}
+
+#endif /* GL_SUN_vertex */
+
+#ifdef GL_VIV_shader_binary
+
+static void _glewInfo_GL_VIV_shader_binary (void)
+{
+ glewPrintExt("GL_VIV_shader_binary", GLEW_VIV_shader_binary, glewIsSupported("GL_VIV_shader_binary"), glewGetExtension("GL_VIV_shader_binary"));
+}
+
+#endif /* GL_VIV_shader_binary */
+
+#ifdef GL_WIN_phong_shading
+
+static void _glewInfo_GL_WIN_phong_shading (void)
+{
+ glewPrintExt("GL_WIN_phong_shading", GLEW_WIN_phong_shading, glewIsSupported("GL_WIN_phong_shading"), glewGetExtension("GL_WIN_phong_shading"));
+}
+
+#endif /* GL_WIN_phong_shading */
+
+#ifdef GL_WIN_scene_markerXXX
+
+static void _glewInfo_GL_WIN_scene_markerXXX (void)
+{
+ glewPrintExt("GL_WIN_scene_markerXXX", GLEW_WIN_scene_markerXXX, glewIsSupported("GL_WIN_scene_markerXXX"), glewGetExtension("GL_WIN_scene_markerXXX"));
+}
+
+#endif /* GL_WIN_scene_markerXXX */
+
+#ifdef GL_WIN_specular_fog
+
+static void _glewInfo_GL_WIN_specular_fog (void)
+{
+ glewPrintExt("GL_WIN_specular_fog", GLEW_WIN_specular_fog, glewIsSupported("GL_WIN_specular_fog"), glewGetExtension("GL_WIN_specular_fog"));
+}
+
+#endif /* GL_WIN_specular_fog */
+
+#ifdef GL_WIN_swap_hint
+
+static void _glewInfo_GL_WIN_swap_hint (void)
+{
+ GLboolean fi = glewPrintExt("GL_WIN_swap_hint", GLEW_WIN_swap_hint, glewIsSupported("GL_WIN_swap_hint"), glewGetExtension("GL_WIN_swap_hint"));
+
+ glewInfoFunc(fi, "glAddSwapHintRectWIN", glAddSwapHintRectWIN == NULL);
+}
+
+#endif /* GL_WIN_swap_hint */
+
+#if defined(GLEW_EGL)
+
+#ifdef EGL_VERSION_1_0
+
+static void _glewInfo_EGL_VERSION_1_0 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_0", EGLEW_VERSION_1_0, EGLEW_VERSION_1_0, EGLEW_VERSION_1_0);
+
+ glewInfoFunc(fi, "eglChooseConfig", eglChooseConfig == NULL);
+ glewInfoFunc(fi, "eglCopyBuffers", eglCopyBuffers == NULL);
+ glewInfoFunc(fi, "eglCreateContext", eglCreateContext == NULL);
+ glewInfoFunc(fi, "eglCreatePbufferSurface", eglCreatePbufferSurface == NULL);
+ glewInfoFunc(fi, "eglCreatePixmapSurface", eglCreatePixmapSurface == NULL);
+ glewInfoFunc(fi, "eglCreateWindowSurface", eglCreateWindowSurface == NULL);
+ glewInfoFunc(fi, "eglDestroyContext", eglDestroyContext == NULL);
+ glewInfoFunc(fi, "eglDestroySurface", eglDestroySurface == NULL);
+ glewInfoFunc(fi, "eglGetConfigAttrib", eglGetConfigAttrib == NULL);
+ glewInfoFunc(fi, "eglGetConfigs", eglGetConfigs == NULL);
+ glewInfoFunc(fi, "eglGetCurrentDisplay", eglGetCurrentDisplay == NULL);
+ glewInfoFunc(fi, "eglGetCurrentSurface", eglGetCurrentSurface == NULL);
+ glewInfoFunc(fi, "eglGetDisplay", eglGetDisplay == NULL);
+ glewInfoFunc(fi, "eglGetError", eglGetError == NULL);
+ glewInfoFunc(fi, "eglInitialize", eglInitialize == NULL);
+ glewInfoFunc(fi, "eglMakeCurrent", eglMakeCurrent == NULL);
+ glewInfoFunc(fi, "eglQueryContext", eglQueryContext == NULL);
+ glewInfoFunc(fi, "eglQueryString", eglQueryString == NULL);
+ glewInfoFunc(fi, "eglQuerySurface", eglQuerySurface == NULL);
+ glewInfoFunc(fi, "eglSwapBuffers", eglSwapBuffers == NULL);
+ glewInfoFunc(fi, "eglTerminate", eglTerminate == NULL);
+ glewInfoFunc(fi, "eglWaitGL", eglWaitGL == NULL);
+ glewInfoFunc(fi, "eglWaitNative", eglWaitNative == NULL);
+}
+
+#endif /* EGL_VERSION_1_0 */
+
+#ifdef EGL_VERSION_1_1
+
+static void _glewInfo_EGL_VERSION_1_1 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_1", EGLEW_VERSION_1_1, EGLEW_VERSION_1_1, EGLEW_VERSION_1_1);
+
+ glewInfoFunc(fi, "eglBindTexImage", eglBindTexImage == NULL);
+ glewInfoFunc(fi, "eglReleaseTexImage", eglReleaseTexImage == NULL);
+ glewInfoFunc(fi, "eglSurfaceAttrib", eglSurfaceAttrib == NULL);
+ glewInfoFunc(fi, "eglSwapInterval", eglSwapInterval == NULL);
+}
+
+#endif /* EGL_VERSION_1_1 */
+
+#ifdef EGL_VERSION_1_2
+
+static void _glewInfo_EGL_VERSION_1_2 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_2", EGLEW_VERSION_1_2, EGLEW_VERSION_1_2, EGLEW_VERSION_1_2);
+
+ glewInfoFunc(fi, "eglBindAPI", eglBindAPI == NULL);
+ glewInfoFunc(fi, "eglCreatePbufferFromClientBuffer", eglCreatePbufferFromClientBuffer == NULL);
+ glewInfoFunc(fi, "eglQueryAPI", eglQueryAPI == NULL);
+ glewInfoFunc(fi, "eglReleaseThread", eglReleaseThread == NULL);
+ glewInfoFunc(fi, "eglWaitClient", eglWaitClient == NULL);
+}
+
+#endif /* EGL_VERSION_1_2 */
+
+#ifdef EGL_VERSION_1_3
+
+static void _glewInfo_EGL_VERSION_1_3 (void)
+{
+ glewPrintExt("EGL_VERSION_1_3", EGLEW_VERSION_1_3, EGLEW_VERSION_1_3, EGLEW_VERSION_1_3);
+}
+
+#endif /* EGL_VERSION_1_3 */
+
+#ifdef EGL_VERSION_1_4
+
+static void _glewInfo_EGL_VERSION_1_4 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_4", EGLEW_VERSION_1_4, EGLEW_VERSION_1_4, EGLEW_VERSION_1_4);
+
+ glewInfoFunc(fi, "eglGetCurrentContext", eglGetCurrentContext == NULL);
+}
+
+#endif /* EGL_VERSION_1_4 */
+
+#ifdef EGL_VERSION_1_5
+
+static void _glewInfo_EGL_VERSION_1_5 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_VERSION_1_5", EGLEW_VERSION_1_5, EGLEW_VERSION_1_5, EGLEW_VERSION_1_5);
+
+ glewInfoFunc(fi, "eglClientWaitSync", eglClientWaitSync == NULL);
+ glewInfoFunc(fi, "eglCreateImage", eglCreateImage == NULL);
+ glewInfoFunc(fi, "eglCreatePlatformPixmapSurface", eglCreatePlatformPixmapSurface == NULL);
+ glewInfoFunc(fi, "eglCreatePlatformWindowSurface", eglCreatePlatformWindowSurface == NULL);
+ glewInfoFunc(fi, "eglCreateSync", eglCreateSync == NULL);
+ glewInfoFunc(fi, "eglDestroyImage", eglDestroyImage == NULL);
+ glewInfoFunc(fi, "eglDestroySync", eglDestroySync == NULL);
+ glewInfoFunc(fi, "eglGetPlatformDisplay", eglGetPlatformDisplay == NULL);
+ glewInfoFunc(fi, "eglGetSyncAttrib", eglGetSyncAttrib == NULL);
+ glewInfoFunc(fi, "eglWaitSync", eglWaitSync == NULL);
+}
+
+#endif /* EGL_VERSION_1_5 */
+
+#ifdef EGL_ANDROID_GLES_layers
+
+static void _glewInfo_EGL_ANDROID_GLES_layers (void)
+{
+ glewPrintExt("EGL_ANDROID_GLES_layers", EGLEW_ANDROID_GLES_layers, eglewIsSupported("EGL_ANDROID_GLES_layers"), eglewGetExtension("EGL_ANDROID_GLES_layers"));
+}
+
+#endif /* EGL_ANDROID_GLES_layers */
+
+#ifdef EGL_ANDROID_blob_cache
+
+static void _glewInfo_EGL_ANDROID_blob_cache (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_blob_cache", EGLEW_ANDROID_blob_cache, eglewIsSupported("EGL_ANDROID_blob_cache"), eglewGetExtension("EGL_ANDROID_blob_cache"));
+
+ glewInfoFunc(fi, "eglSetBlobCacheFuncsANDROID", eglSetBlobCacheFuncsANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_blob_cache */
+
+#ifdef EGL_ANDROID_create_native_client_buffer
+
+static void _glewInfo_EGL_ANDROID_create_native_client_buffer (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_create_native_client_buffer", EGLEW_ANDROID_create_native_client_buffer, eglewIsSupported("EGL_ANDROID_create_native_client_buffer"), eglewGetExtension("EGL_ANDROID_create_native_client_buffer"));
+
+ glewInfoFunc(fi, "eglCreateNativeClientBufferANDROID", eglCreateNativeClientBufferANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_create_native_client_buffer */
+
+#ifdef EGL_ANDROID_framebuffer_target
+
+static void _glewInfo_EGL_ANDROID_framebuffer_target (void)
+{
+ glewPrintExt("EGL_ANDROID_framebuffer_target", EGLEW_ANDROID_framebuffer_target, eglewIsSupported("EGL_ANDROID_framebuffer_target"), eglewGetExtension("EGL_ANDROID_framebuffer_target"));
+}
+
+#endif /* EGL_ANDROID_framebuffer_target */
+
+#ifdef EGL_ANDROID_front_buffer_auto_refresh
+
+static void _glewInfo_EGL_ANDROID_front_buffer_auto_refresh (void)
+{
+ glewPrintExt("EGL_ANDROID_front_buffer_auto_refresh", EGLEW_ANDROID_front_buffer_auto_refresh, eglewIsSupported("EGL_ANDROID_front_buffer_auto_refresh"), eglewGetExtension("EGL_ANDROID_front_buffer_auto_refresh"));
+}
+
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+
+#ifdef EGL_ANDROID_get_frame_timestamps
+
+static void _glewInfo_EGL_ANDROID_get_frame_timestamps (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_get_frame_timestamps", EGLEW_ANDROID_get_frame_timestamps, eglewIsSupported("EGL_ANDROID_get_frame_timestamps"), eglewGetExtension("EGL_ANDROID_get_frame_timestamps"));
+
+ glewInfoFunc(fi, "eglGetCompositorTimingANDROID", eglGetCompositorTimingANDROID == NULL);
+ glewInfoFunc(fi, "eglGetCompositorTimingSupportedANDROID", eglGetCompositorTimingSupportedANDROID == NULL);
+ glewInfoFunc(fi, "eglGetFrameTimestampSupportedANDROID", eglGetFrameTimestampSupportedANDROID == NULL);
+ glewInfoFunc(fi, "eglGetFrameTimestampsANDROID", eglGetFrameTimestampsANDROID == NULL);
+ glewInfoFunc(fi, "eglGetNextFrameIdANDROID", eglGetNextFrameIdANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_get_frame_timestamps */
+
+#ifdef EGL_ANDROID_get_native_client_buffer
+
+static void _glewInfo_EGL_ANDROID_get_native_client_buffer (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_get_native_client_buffer", EGLEW_ANDROID_get_native_client_buffer, eglewIsSupported("EGL_ANDROID_get_native_client_buffer"), eglewGetExtension("EGL_ANDROID_get_native_client_buffer"));
+
+ glewInfoFunc(fi, "eglGetNativeClientBufferANDROID", eglGetNativeClientBufferANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_get_native_client_buffer */
+
+#ifdef EGL_ANDROID_image_native_buffer
+
+static void _glewInfo_EGL_ANDROID_image_native_buffer (void)
+{
+ glewPrintExt("EGL_ANDROID_image_native_buffer", EGLEW_ANDROID_image_native_buffer, eglewIsSupported("EGL_ANDROID_image_native_buffer"), eglewGetExtension("EGL_ANDROID_image_native_buffer"));
+}
+
+#endif /* EGL_ANDROID_image_native_buffer */
+
+#ifdef EGL_ANDROID_native_fence_sync
+
+static void _glewInfo_EGL_ANDROID_native_fence_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_native_fence_sync", EGLEW_ANDROID_native_fence_sync, eglewIsSupported("EGL_ANDROID_native_fence_sync"), eglewGetExtension("EGL_ANDROID_native_fence_sync"));
+
+ glewInfoFunc(fi, "eglDupNativeFenceFDANDROID", eglDupNativeFenceFDANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_native_fence_sync */
+
+#ifdef EGL_ANDROID_presentation_time
+
+static void _glewInfo_EGL_ANDROID_presentation_time (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANDROID_presentation_time", EGLEW_ANDROID_presentation_time, eglewIsSupported("EGL_ANDROID_presentation_time"), eglewGetExtension("EGL_ANDROID_presentation_time"));
+
+ glewInfoFunc(fi, "eglPresentationTimeANDROID", eglPresentationTimeANDROID == NULL);
+}
+
+#endif /* EGL_ANDROID_presentation_time */
+
+#ifdef EGL_ANDROID_recordable
+
+static void _glewInfo_EGL_ANDROID_recordable (void)
+{
+ glewPrintExt("EGL_ANDROID_recordable", EGLEW_ANDROID_recordable, eglewIsSupported("EGL_ANDROID_recordable"), eglewGetExtension("EGL_ANDROID_recordable"));
+}
+
+#endif /* EGL_ANDROID_recordable */
+
+#ifdef EGL_ANGLE_d3d_share_handle_client_buffer
+
+static void _glewInfo_EGL_ANGLE_d3d_share_handle_client_buffer (void)
+{
+ glewPrintExt("EGL_ANGLE_d3d_share_handle_client_buffer", EGLEW_ANGLE_d3d_share_handle_client_buffer, eglewIsSupported("EGL_ANGLE_d3d_share_handle_client_buffer"), eglewGetExtension("EGL_ANGLE_d3d_share_handle_client_buffer"));
+}
+
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+
+#ifdef EGL_ANGLE_device_d3d
+
+static void _glewInfo_EGL_ANGLE_device_d3d (void)
+{
+ glewPrintExt("EGL_ANGLE_device_d3d", EGLEW_ANGLE_device_d3d, eglewIsSupported("EGL_ANGLE_device_d3d"), eglewGetExtension("EGL_ANGLE_device_d3d"));
+}
+
+#endif /* EGL_ANGLE_device_d3d */
+
+#ifdef EGL_ANGLE_query_surface_pointer
+
+static void _glewInfo_EGL_ANGLE_query_surface_pointer (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANGLE_query_surface_pointer", EGLEW_ANGLE_query_surface_pointer, eglewIsSupported("EGL_ANGLE_query_surface_pointer"), eglewGetExtension("EGL_ANGLE_query_surface_pointer"));
+
+ glewInfoFunc(fi, "eglQuerySurfacePointerANGLE", eglQuerySurfacePointerANGLE == NULL);
+}
+
+#endif /* EGL_ANGLE_query_surface_pointer */
+
+#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+
+static void _glewInfo_EGL_ANGLE_surface_d3d_texture_2d_share_handle (void)
+{
+ glewPrintExt("EGL_ANGLE_surface_d3d_texture_2d_share_handle", EGLEW_ANGLE_surface_d3d_texture_2d_share_handle, eglewIsSupported("EGL_ANGLE_surface_d3d_texture_2d_share_handle"), eglewGetExtension("EGL_ANGLE_surface_d3d_texture_2d_share_handle"));
+}
+
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+
+#ifdef EGL_ANGLE_sync_control_rate
+
+static void _glewInfo_EGL_ANGLE_sync_control_rate (void)
+{
+ GLboolean fi = glewPrintExt("EGL_ANGLE_sync_control_rate", EGLEW_ANGLE_sync_control_rate, eglewIsSupported("EGL_ANGLE_sync_control_rate"), eglewGetExtension("EGL_ANGLE_sync_control_rate"));
+
+ glewInfoFunc(fi, "eglGetMscRateANGLE", eglGetMscRateANGLE == NULL);
+}
+
+#endif /* EGL_ANGLE_sync_control_rate */
+
+#ifdef EGL_ANGLE_window_fixed_size
+
+static void _glewInfo_EGL_ANGLE_window_fixed_size (void)
+{
+ glewPrintExt("EGL_ANGLE_window_fixed_size", EGLEW_ANGLE_window_fixed_size, eglewIsSupported("EGL_ANGLE_window_fixed_size"), eglewGetExtension("EGL_ANGLE_window_fixed_size"));
+}
+
+#endif /* EGL_ANGLE_window_fixed_size */
+
+#ifdef EGL_ARM_image_format
+
+static void _glewInfo_EGL_ARM_image_format (void)
+{
+ glewPrintExt("EGL_ARM_image_format", EGLEW_ARM_image_format, eglewIsSupported("EGL_ARM_image_format"), eglewGetExtension("EGL_ARM_image_format"));
+}
+
+#endif /* EGL_ARM_image_format */
+
+#ifdef EGL_ARM_implicit_external_sync
+
+static void _glewInfo_EGL_ARM_implicit_external_sync (void)
+{
+ glewPrintExt("EGL_ARM_implicit_external_sync", EGLEW_ARM_implicit_external_sync, eglewIsSupported("EGL_ARM_implicit_external_sync"), eglewGetExtension("EGL_ARM_implicit_external_sync"));
+}
+
+#endif /* EGL_ARM_implicit_external_sync */
+
+#ifdef EGL_ARM_pixmap_multisample_discard
+
+static void _glewInfo_EGL_ARM_pixmap_multisample_discard (void)
+{
+ glewPrintExt("EGL_ARM_pixmap_multisample_discard", EGLEW_ARM_pixmap_multisample_discard, eglewIsSupported("EGL_ARM_pixmap_multisample_discard"), eglewGetExtension("EGL_ARM_pixmap_multisample_discard"));
+}
+
+#endif /* EGL_ARM_pixmap_multisample_discard */
+
+#ifdef EGL_EXT_bind_to_front
+
+static void _glewInfo_EGL_EXT_bind_to_front (void)
+{
+ glewPrintExt("EGL_EXT_bind_to_front", EGLEW_EXT_bind_to_front, eglewIsSupported("EGL_EXT_bind_to_front"), eglewGetExtension("EGL_EXT_bind_to_front"));
+}
+
+#endif /* EGL_EXT_bind_to_front */
+
+#ifdef EGL_EXT_buffer_age
+
+static void _glewInfo_EGL_EXT_buffer_age (void)
+{
+ glewPrintExt("EGL_EXT_buffer_age", EGLEW_EXT_buffer_age, eglewIsSupported("EGL_EXT_buffer_age"), eglewGetExtension("EGL_EXT_buffer_age"));
+}
+
+#endif /* EGL_EXT_buffer_age */
+
+#ifdef EGL_EXT_client_extensions
+
+static void _glewInfo_EGL_EXT_client_extensions (void)
+{
+ glewPrintExt("EGL_EXT_client_extensions", EGLEW_EXT_client_extensions, eglewIsSupported("EGL_EXT_client_extensions"), eglewGetExtension("EGL_EXT_client_extensions"));
+}
+
+#endif /* EGL_EXT_client_extensions */
+
+#ifdef EGL_EXT_client_sync
+
+static void _glewInfo_EGL_EXT_client_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_client_sync", EGLEW_EXT_client_sync, eglewIsSupported("EGL_EXT_client_sync"), eglewGetExtension("EGL_EXT_client_sync"));
+
+ glewInfoFunc(fi, "eglClientSignalSyncEXT", eglClientSignalSyncEXT == NULL);
+}
+
+#endif /* EGL_EXT_client_sync */
+
+#ifdef EGL_EXT_compositor
+
+static void _glewInfo_EGL_EXT_compositor (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_compositor", EGLEW_EXT_compositor, eglewIsSupported("EGL_EXT_compositor"), eglewGetExtension("EGL_EXT_compositor"));
+
+ glewInfoFunc(fi, "eglCompositorBindTexWindowEXT", eglCompositorBindTexWindowEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetContextAttributesEXT", eglCompositorSetContextAttributesEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetContextListEXT", eglCompositorSetContextListEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetSizeEXT", eglCompositorSetSizeEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetWindowAttributesEXT", eglCompositorSetWindowAttributesEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSetWindowListEXT", eglCompositorSetWindowListEXT == NULL);
+ glewInfoFunc(fi, "eglCompositorSwapPolicyEXT", eglCompositorSwapPolicyEXT == NULL);
+}
+
+#endif /* EGL_EXT_compositor */
+
+#ifdef EGL_EXT_config_select_group
+
+static void _glewInfo_EGL_EXT_config_select_group (void)
+{
+ glewPrintExt("EGL_EXT_config_select_group", EGLEW_EXT_config_select_group, eglewIsSupported("EGL_EXT_config_select_group"), eglewGetExtension("EGL_EXT_config_select_group"));
+}
+
+#endif /* EGL_EXT_config_select_group */
+
+#ifdef EGL_EXT_create_context_robustness
+
+static void _glewInfo_EGL_EXT_create_context_robustness (void)
+{
+ glewPrintExt("EGL_EXT_create_context_robustness", EGLEW_EXT_create_context_robustness, eglewIsSupported("EGL_EXT_create_context_robustness"), eglewGetExtension("EGL_EXT_create_context_robustness"));
+}
+
+#endif /* EGL_EXT_create_context_robustness */
+
+#ifdef EGL_EXT_device_base
+
+static void _glewInfo_EGL_EXT_device_base (void)
+{
+ glewPrintExt("EGL_EXT_device_base", EGLEW_EXT_device_base, eglewIsSupported("EGL_EXT_device_base"), eglewGetExtension("EGL_EXT_device_base"));
+}
+
+#endif /* EGL_EXT_device_base */
+
+#ifdef EGL_EXT_device_drm
+
+static void _glewInfo_EGL_EXT_device_drm (void)
+{
+ glewPrintExt("EGL_EXT_device_drm", EGLEW_EXT_device_drm, eglewIsSupported("EGL_EXT_device_drm"), eglewGetExtension("EGL_EXT_device_drm"));
+}
+
+#endif /* EGL_EXT_device_drm */
+
+#ifdef EGL_EXT_device_drm_render_node
+
+static void _glewInfo_EGL_EXT_device_drm_render_node (void)
+{
+ glewPrintExt("EGL_EXT_device_drm_render_node", EGLEW_EXT_device_drm_render_node, eglewIsSupported("EGL_EXT_device_drm_render_node"), eglewGetExtension("EGL_EXT_device_drm_render_node"));
+}
+
+#endif /* EGL_EXT_device_drm_render_node */
+
+#ifdef EGL_EXT_device_enumeration
+
+static void _glewInfo_EGL_EXT_device_enumeration (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_device_enumeration", EGLEW_EXT_device_enumeration, eglewIsSupported("EGL_EXT_device_enumeration"), eglewGetExtension("EGL_EXT_device_enumeration"));
+
+ glewInfoFunc(fi, "eglQueryDevicesEXT", eglQueryDevicesEXT == NULL);
+}
+
+#endif /* EGL_EXT_device_enumeration */
+
+#ifdef EGL_EXT_device_openwf
+
+static void _glewInfo_EGL_EXT_device_openwf (void)
+{
+ glewPrintExt("EGL_EXT_device_openwf", EGLEW_EXT_device_openwf, eglewIsSupported("EGL_EXT_device_openwf"), eglewGetExtension("EGL_EXT_device_openwf"));
+}
+
+#endif /* EGL_EXT_device_openwf */
+
+#ifdef EGL_EXT_device_persistent_id
+
+static void _glewInfo_EGL_EXT_device_persistent_id (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_device_persistent_id", EGLEW_EXT_device_persistent_id, eglewIsSupported("EGL_EXT_device_persistent_id"), eglewGetExtension("EGL_EXT_device_persistent_id"));
+
+ glewInfoFunc(fi, "eglQueryDeviceBinaryEXT", eglQueryDeviceBinaryEXT == NULL);
+}
+
+#endif /* EGL_EXT_device_persistent_id */
+
+#ifdef EGL_EXT_device_query
+
+static void _glewInfo_EGL_EXT_device_query (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_device_query", EGLEW_EXT_device_query, eglewIsSupported("EGL_EXT_device_query"), eglewGetExtension("EGL_EXT_device_query"));
+
+ glewInfoFunc(fi, "eglQueryDeviceAttribEXT", eglQueryDeviceAttribEXT == NULL);
+ glewInfoFunc(fi, "eglQueryDeviceStringEXT", eglQueryDeviceStringEXT == NULL);
+ glewInfoFunc(fi, "eglQueryDisplayAttribEXT", eglQueryDisplayAttribEXT == NULL);
+}
+
+#endif /* EGL_EXT_device_query */
+
+#ifdef EGL_EXT_device_query_name
+
+static void _glewInfo_EGL_EXT_device_query_name (void)
+{
+ glewPrintExt("EGL_EXT_device_query_name", EGLEW_EXT_device_query_name, eglewIsSupported("EGL_EXT_device_query_name"), eglewGetExtension("EGL_EXT_device_query_name"));
+}
+
+#endif /* EGL_EXT_device_query_name */
+
+#ifdef EGL_EXT_explicit_device
+
+static void _glewInfo_EGL_EXT_explicit_device (void)
+{
+ glewPrintExt("EGL_EXT_explicit_device", EGLEW_EXT_explicit_device, eglewIsSupported("EGL_EXT_explicit_device"), eglewGetExtension("EGL_EXT_explicit_device"));
+}
+
+#endif /* EGL_EXT_explicit_device */
+
+#ifdef EGL_EXT_gl_colorspace_bt2020_linear
+
+static void _glewInfo_EGL_EXT_gl_colorspace_bt2020_linear (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_bt2020_linear", EGLEW_EXT_gl_colorspace_bt2020_linear, eglewIsSupported("EGL_EXT_gl_colorspace_bt2020_linear"), eglewGetExtension("EGL_EXT_gl_colorspace_bt2020_linear"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+
+#ifdef EGL_EXT_gl_colorspace_bt2020_pq
+
+static void _glewInfo_EGL_EXT_gl_colorspace_bt2020_pq (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_bt2020_pq", EGLEW_EXT_gl_colorspace_bt2020_pq, eglewIsSupported("EGL_EXT_gl_colorspace_bt2020_pq"), eglewGetExtension("EGL_EXT_gl_colorspace_bt2020_pq"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+
+#ifdef EGL_EXT_gl_colorspace_display_p3
+
+static void _glewInfo_EGL_EXT_gl_colorspace_display_p3 (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_display_p3", EGLEW_EXT_gl_colorspace_display_p3, eglewIsSupported("EGL_EXT_gl_colorspace_display_p3"), eglewGetExtension("EGL_EXT_gl_colorspace_display_p3"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+
+#ifdef EGL_EXT_gl_colorspace_display_p3_linear
+
+static void _glewInfo_EGL_EXT_gl_colorspace_display_p3_linear (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_display_p3_linear", EGLEW_EXT_gl_colorspace_display_p3_linear, eglewIsSupported("EGL_EXT_gl_colorspace_display_p3_linear"), eglewGetExtension("EGL_EXT_gl_colorspace_display_p3_linear"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+
+#ifdef EGL_EXT_gl_colorspace_display_p3_passthrough
+
+static void _glewInfo_EGL_EXT_gl_colorspace_display_p3_passthrough (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_display_p3_passthrough", EGLEW_EXT_gl_colorspace_display_p3_passthrough, eglewIsSupported("EGL_EXT_gl_colorspace_display_p3_passthrough"), eglewGetExtension("EGL_EXT_gl_colorspace_display_p3_passthrough"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+
+#ifdef EGL_EXT_gl_colorspace_scrgb
+
+static void _glewInfo_EGL_EXT_gl_colorspace_scrgb (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_scrgb", EGLEW_EXT_gl_colorspace_scrgb, eglewIsSupported("EGL_EXT_gl_colorspace_scrgb"), eglewGetExtension("EGL_EXT_gl_colorspace_scrgb"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+
+#ifdef EGL_EXT_gl_colorspace_scrgb_linear
+
+static void _glewInfo_EGL_EXT_gl_colorspace_scrgb_linear (void)
+{
+ glewPrintExt("EGL_EXT_gl_colorspace_scrgb_linear", EGLEW_EXT_gl_colorspace_scrgb_linear, eglewIsSupported("EGL_EXT_gl_colorspace_scrgb_linear"), eglewGetExtension("EGL_EXT_gl_colorspace_scrgb_linear"));
+}
+
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+
+#ifdef EGL_EXT_image_dma_buf_import
+
+static void _glewInfo_EGL_EXT_image_dma_buf_import (void)
+{
+ glewPrintExt("EGL_EXT_image_dma_buf_import", EGLEW_EXT_image_dma_buf_import, eglewIsSupported("EGL_EXT_image_dma_buf_import"), eglewGetExtension("EGL_EXT_image_dma_buf_import"));
+}
+
+#endif /* EGL_EXT_image_dma_buf_import */
+
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+
+static void _glewInfo_EGL_EXT_image_dma_buf_import_modifiers (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_image_dma_buf_import_modifiers", EGLEW_EXT_image_dma_buf_import_modifiers, eglewIsSupported("EGL_EXT_image_dma_buf_import_modifiers"), eglewGetExtension("EGL_EXT_image_dma_buf_import_modifiers"));
+
+ glewInfoFunc(fi, "eglQueryDmaBufFormatsEXT", eglQueryDmaBufFormatsEXT == NULL);
+ glewInfoFunc(fi, "eglQueryDmaBufModifiersEXT", eglQueryDmaBufModifiersEXT == NULL);
+}
+
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+
+#ifdef EGL_EXT_image_gl_colorspace
+
+static void _glewInfo_EGL_EXT_image_gl_colorspace (void)
+{
+ glewPrintExt("EGL_EXT_image_gl_colorspace", EGLEW_EXT_image_gl_colorspace, eglewIsSupported("EGL_EXT_image_gl_colorspace"), eglewGetExtension("EGL_EXT_image_gl_colorspace"));
+}
+
+#endif /* EGL_EXT_image_gl_colorspace */
+
+#ifdef EGL_EXT_image_implicit_sync_control
+
+static void _glewInfo_EGL_EXT_image_implicit_sync_control (void)
+{
+ glewPrintExt("EGL_EXT_image_implicit_sync_control", EGLEW_EXT_image_implicit_sync_control, eglewIsSupported("EGL_EXT_image_implicit_sync_control"), eglewGetExtension("EGL_EXT_image_implicit_sync_control"));
+}
+
+#endif /* EGL_EXT_image_implicit_sync_control */
+
+#ifdef EGL_EXT_multiview_window
+
+static void _glewInfo_EGL_EXT_multiview_window (void)
+{
+ glewPrintExt("EGL_EXT_multiview_window", EGLEW_EXT_multiview_window, eglewIsSupported("EGL_EXT_multiview_window"), eglewGetExtension("EGL_EXT_multiview_window"));
+}
+
+#endif /* EGL_EXT_multiview_window */
+
+#ifdef EGL_EXT_output_base
+
+static void _glewInfo_EGL_EXT_output_base (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_output_base", EGLEW_EXT_output_base, eglewIsSupported("EGL_EXT_output_base"), eglewGetExtension("EGL_EXT_output_base"));
+
+ glewInfoFunc(fi, "eglGetOutputLayersEXT", eglGetOutputLayersEXT == NULL);
+ glewInfoFunc(fi, "eglGetOutputPortsEXT", eglGetOutputPortsEXT == NULL);
+ glewInfoFunc(fi, "eglOutputLayerAttribEXT", eglOutputLayerAttribEXT == NULL);
+ glewInfoFunc(fi, "eglOutputPortAttribEXT", eglOutputPortAttribEXT == NULL);
+ glewInfoFunc(fi, "eglQueryOutputLayerAttribEXT", eglQueryOutputLayerAttribEXT == NULL);
+ glewInfoFunc(fi, "eglQueryOutputLayerStringEXT", eglQueryOutputLayerStringEXT == NULL);
+ glewInfoFunc(fi, "eglQueryOutputPortAttribEXT", eglQueryOutputPortAttribEXT == NULL);
+ glewInfoFunc(fi, "eglQueryOutputPortStringEXT", eglQueryOutputPortStringEXT == NULL);
+}
+
+#endif /* EGL_EXT_output_base */
+
+#ifdef EGL_EXT_output_drm
+
+static void _glewInfo_EGL_EXT_output_drm (void)
+{
+ glewPrintExt("EGL_EXT_output_drm", EGLEW_EXT_output_drm, eglewIsSupported("EGL_EXT_output_drm"), eglewGetExtension("EGL_EXT_output_drm"));
+}
+
+#endif /* EGL_EXT_output_drm */
+
+#ifdef EGL_EXT_output_openwf
+
+static void _glewInfo_EGL_EXT_output_openwf (void)
+{
+ glewPrintExt("EGL_EXT_output_openwf", EGLEW_EXT_output_openwf, eglewIsSupported("EGL_EXT_output_openwf"), eglewGetExtension("EGL_EXT_output_openwf"));
+}
+
+#endif /* EGL_EXT_output_openwf */
+
+#ifdef EGL_EXT_pixel_format_float
+
+static void _glewInfo_EGL_EXT_pixel_format_float (void)
+{
+ glewPrintExt("EGL_EXT_pixel_format_float", EGLEW_EXT_pixel_format_float, eglewIsSupported("EGL_EXT_pixel_format_float"), eglewGetExtension("EGL_EXT_pixel_format_float"));
+}
+
+#endif /* EGL_EXT_pixel_format_float */
+
+#ifdef EGL_EXT_platform_base
+
+static void _glewInfo_EGL_EXT_platform_base (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_platform_base", EGLEW_EXT_platform_base, eglewIsSupported("EGL_EXT_platform_base"), eglewGetExtension("EGL_EXT_platform_base"));
+
+ glewInfoFunc(fi, "eglCreatePlatformPixmapSurfaceEXT", eglCreatePlatformPixmapSurfaceEXT == NULL);
+ glewInfoFunc(fi, "eglCreatePlatformWindowSurfaceEXT", eglCreatePlatformWindowSurfaceEXT == NULL);
+ glewInfoFunc(fi, "eglGetPlatformDisplayEXT", eglGetPlatformDisplayEXT == NULL);
+}
+
+#endif /* EGL_EXT_platform_base */
+
+#ifdef EGL_EXT_platform_device
+
+static void _glewInfo_EGL_EXT_platform_device (void)
+{
+ glewPrintExt("EGL_EXT_platform_device", EGLEW_EXT_platform_device, eglewIsSupported("EGL_EXT_platform_device"), eglewGetExtension("EGL_EXT_platform_device"));
+}
+
+#endif /* EGL_EXT_platform_device */
+
+#ifdef EGL_EXT_platform_wayland
+
+static void _glewInfo_EGL_EXT_platform_wayland (void)
+{
+ glewPrintExt("EGL_EXT_platform_wayland", EGLEW_EXT_platform_wayland, eglewIsSupported("EGL_EXT_platform_wayland"), eglewGetExtension("EGL_EXT_platform_wayland"));
+}
+
+#endif /* EGL_EXT_platform_wayland */
+
+#ifdef EGL_EXT_platform_x11
+
+static void _glewInfo_EGL_EXT_platform_x11 (void)
+{
+ glewPrintExt("EGL_EXT_platform_x11", EGLEW_EXT_platform_x11, eglewIsSupported("EGL_EXT_platform_x11"), eglewGetExtension("EGL_EXT_platform_x11"));
+}
+
+#endif /* EGL_EXT_platform_x11 */
+
+#ifdef EGL_EXT_platform_xcb
+
+static void _glewInfo_EGL_EXT_platform_xcb (void)
+{
+ glewPrintExt("EGL_EXT_platform_xcb", EGLEW_EXT_platform_xcb, eglewIsSupported("EGL_EXT_platform_xcb"), eglewGetExtension("EGL_EXT_platform_xcb"));
+}
+
+#endif /* EGL_EXT_platform_xcb */
+
+#ifdef EGL_EXT_present_opaque
+
+static void _glewInfo_EGL_EXT_present_opaque (void)
+{
+ glewPrintExt("EGL_EXT_present_opaque", EGLEW_EXT_present_opaque, eglewIsSupported("EGL_EXT_present_opaque"), eglewGetExtension("EGL_EXT_present_opaque"));
+}
+
+#endif /* EGL_EXT_present_opaque */
+
+#ifdef EGL_EXT_protected_content
+
+static void _glewInfo_EGL_EXT_protected_content (void)
+{
+ glewPrintExt("EGL_EXT_protected_content", EGLEW_EXT_protected_content, eglewIsSupported("EGL_EXT_protected_content"), eglewGetExtension("EGL_EXT_protected_content"));
+}
+
+#endif /* EGL_EXT_protected_content */
+
+#ifdef EGL_EXT_protected_surface
+
+static void _glewInfo_EGL_EXT_protected_surface (void)
+{
+ glewPrintExt("EGL_EXT_protected_surface", EGLEW_EXT_protected_surface, eglewIsSupported("EGL_EXT_protected_surface"), eglewGetExtension("EGL_EXT_protected_surface"));
+}
+
+#endif /* EGL_EXT_protected_surface */
+
+#ifdef EGL_EXT_stream_consumer_egloutput
+
+static void _glewInfo_EGL_EXT_stream_consumer_egloutput (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_stream_consumer_egloutput", EGLEW_EXT_stream_consumer_egloutput, eglewIsSupported("EGL_EXT_stream_consumer_egloutput"), eglewGetExtension("EGL_EXT_stream_consumer_egloutput"));
+
+ glewInfoFunc(fi, "eglStreamConsumerOutputEXT", eglStreamConsumerOutputEXT == NULL);
+}
+
+#endif /* EGL_EXT_stream_consumer_egloutput */
+
+#ifdef EGL_EXT_surface_CTA861_3_metadata
+
+static void _glewInfo_EGL_EXT_surface_CTA861_3_metadata (void)
+{
+ glewPrintExt("EGL_EXT_surface_CTA861_3_metadata", EGLEW_EXT_surface_CTA861_3_metadata, eglewIsSupported("EGL_EXT_surface_CTA861_3_metadata"), eglewGetExtension("EGL_EXT_surface_CTA861_3_metadata"));
+}
+
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+
+#ifdef EGL_EXT_surface_SMPTE2086_metadata
+
+static void _glewInfo_EGL_EXT_surface_SMPTE2086_metadata (void)
+{
+ glewPrintExt("EGL_EXT_surface_SMPTE2086_metadata", EGLEW_EXT_surface_SMPTE2086_metadata, eglewIsSupported("EGL_EXT_surface_SMPTE2086_metadata"), eglewGetExtension("EGL_EXT_surface_SMPTE2086_metadata"));
+}
+
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+
+#ifdef EGL_EXT_surface_compression
+
+static void _glewInfo_EGL_EXT_surface_compression (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_surface_compression", EGLEW_EXT_surface_compression, eglewIsSupported("EGL_EXT_surface_compression"), eglewGetExtension("EGL_EXT_surface_compression"));
+
+ glewInfoFunc(fi, "eglQuerySupportedCompressionRatesEXT", eglQuerySupportedCompressionRatesEXT == NULL);
+}
+
+#endif /* EGL_EXT_surface_compression */
+
+#ifdef EGL_EXT_swap_buffers_with_damage
+
+static void _glewInfo_EGL_EXT_swap_buffers_with_damage (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_swap_buffers_with_damage", EGLEW_EXT_swap_buffers_with_damage, eglewIsSupported("EGL_EXT_swap_buffers_with_damage"), eglewGetExtension("EGL_EXT_swap_buffers_with_damage"));
+
+ glewInfoFunc(fi, "eglSwapBuffersWithDamageEXT", eglSwapBuffersWithDamageEXT == NULL);
+}
+
+#endif /* EGL_EXT_swap_buffers_with_damage */
+
+#ifdef EGL_EXT_sync_reuse
+
+static void _glewInfo_EGL_EXT_sync_reuse (void)
+{
+ GLboolean fi = glewPrintExt("EGL_EXT_sync_reuse", EGLEW_EXT_sync_reuse, eglewIsSupported("EGL_EXT_sync_reuse"), eglewGetExtension("EGL_EXT_sync_reuse"));
+
+ glewInfoFunc(fi, "eglUnsignalSyncEXT", eglUnsignalSyncEXT == NULL);
+}
+
+#endif /* EGL_EXT_sync_reuse */
+
+#ifdef EGL_EXT_yuv_surface
+
+static void _glewInfo_EGL_EXT_yuv_surface (void)
+{
+ glewPrintExt("EGL_EXT_yuv_surface", EGLEW_EXT_yuv_surface, eglewIsSupported("EGL_EXT_yuv_surface"), eglewGetExtension("EGL_EXT_yuv_surface"));
+}
+
+#endif /* EGL_EXT_yuv_surface */
+
+#ifdef EGL_HI_clientpixmap
+
+static void _glewInfo_EGL_HI_clientpixmap (void)
+{
+ GLboolean fi = glewPrintExt("EGL_HI_clientpixmap", EGLEW_HI_clientpixmap, eglewIsSupported("EGL_HI_clientpixmap"), eglewGetExtension("EGL_HI_clientpixmap"));
+
+ glewInfoFunc(fi, "eglCreatePixmapSurfaceHI", eglCreatePixmapSurfaceHI == NULL);
+}
+
+#endif /* EGL_HI_clientpixmap */
+
+#ifdef EGL_HI_colorformats
+
+static void _glewInfo_EGL_HI_colorformats (void)
+{
+ glewPrintExt("EGL_HI_colorformats", EGLEW_HI_colorformats, eglewIsSupported("EGL_HI_colorformats"), eglewGetExtension("EGL_HI_colorformats"));
+}
+
+#endif /* EGL_HI_colorformats */
+
+#ifdef EGL_IMG_context_priority
+
+static void _glewInfo_EGL_IMG_context_priority (void)
+{
+ glewPrintExt("EGL_IMG_context_priority", EGLEW_IMG_context_priority, eglewIsSupported("EGL_IMG_context_priority"), eglewGetExtension("EGL_IMG_context_priority"));
+}
+
+#endif /* EGL_IMG_context_priority */
+
+#ifdef EGL_IMG_image_plane_attribs
+
+static void _glewInfo_EGL_IMG_image_plane_attribs (void)
+{
+ glewPrintExt("EGL_IMG_image_plane_attribs", EGLEW_IMG_image_plane_attribs, eglewIsSupported("EGL_IMG_image_plane_attribs"), eglewGetExtension("EGL_IMG_image_plane_attribs"));
+}
+
+#endif /* EGL_IMG_image_plane_attribs */
+
+#ifdef EGL_KHR_cl_event
+
+static void _glewInfo_EGL_KHR_cl_event (void)
+{
+ glewPrintExt("EGL_KHR_cl_event", EGLEW_KHR_cl_event, eglewIsSupported("EGL_KHR_cl_event"), eglewGetExtension("EGL_KHR_cl_event"));
+}
+
+#endif /* EGL_KHR_cl_event */
+
+#ifdef EGL_KHR_cl_event2
+
+static void _glewInfo_EGL_KHR_cl_event2 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_cl_event2", EGLEW_KHR_cl_event2, eglewIsSupported("EGL_KHR_cl_event2"), eglewGetExtension("EGL_KHR_cl_event2"));
+
+ glewInfoFunc(fi, "eglCreateSync64KHR", eglCreateSync64KHR == NULL);
+}
+
+#endif /* EGL_KHR_cl_event2 */
+
+#ifdef EGL_KHR_client_get_all_proc_addresses
+
+static void _glewInfo_EGL_KHR_client_get_all_proc_addresses (void)
+{
+ glewPrintExt("EGL_KHR_client_get_all_proc_addresses", EGLEW_KHR_client_get_all_proc_addresses, eglewIsSupported("EGL_KHR_client_get_all_proc_addresses"), eglewGetExtension("EGL_KHR_client_get_all_proc_addresses"));
+}
+
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+
+#ifdef EGL_KHR_config_attribs
+
+static void _glewInfo_EGL_KHR_config_attribs (void)
+{
+ glewPrintExt("EGL_KHR_config_attribs", EGLEW_KHR_config_attribs, eglewIsSupported("EGL_KHR_config_attribs"), eglewGetExtension("EGL_KHR_config_attribs"));
+}
+
+#endif /* EGL_KHR_config_attribs */
+
+#ifdef EGL_KHR_context_flush_control
+
+static void _glewInfo_EGL_KHR_context_flush_control (void)
+{
+ glewPrintExt("EGL_KHR_context_flush_control", EGLEW_KHR_context_flush_control, eglewIsSupported("EGL_KHR_context_flush_control"), eglewGetExtension("EGL_KHR_context_flush_control"));
+}
+
+#endif /* EGL_KHR_context_flush_control */
+
+#ifdef EGL_KHR_create_context
+
+static void _glewInfo_EGL_KHR_create_context (void)
+{
+ glewPrintExt("EGL_KHR_create_context", EGLEW_KHR_create_context, eglewIsSupported("EGL_KHR_create_context"), eglewGetExtension("EGL_KHR_create_context"));
+}
+
+#endif /* EGL_KHR_create_context */
+
+#ifdef EGL_KHR_create_context_no_error
+
+static void _glewInfo_EGL_KHR_create_context_no_error (void)
+{
+ glewPrintExt("EGL_KHR_create_context_no_error", EGLEW_KHR_create_context_no_error, eglewIsSupported("EGL_KHR_create_context_no_error"), eglewGetExtension("EGL_KHR_create_context_no_error"));
+}
+
+#endif /* EGL_KHR_create_context_no_error */
+
+#ifdef EGL_KHR_debug
+
+static void _glewInfo_EGL_KHR_debug (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_debug", EGLEW_KHR_debug, eglewIsSupported("EGL_KHR_debug"), eglewGetExtension("EGL_KHR_debug"));
+
+ glewInfoFunc(fi, "eglDebugMessageControlKHR", eglDebugMessageControlKHR == NULL);
+ glewInfoFunc(fi, "eglLabelObjectKHR", eglLabelObjectKHR == NULL);
+ glewInfoFunc(fi, "eglQueryDebugKHR", eglQueryDebugKHR == NULL);
+}
+
+#endif /* EGL_KHR_debug */
+
+#ifdef EGL_KHR_display_reference
+
+static void _glewInfo_EGL_KHR_display_reference (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_display_reference", EGLEW_KHR_display_reference, eglewIsSupported("EGL_KHR_display_reference"), eglewGetExtension("EGL_KHR_display_reference"));
+
+ glewInfoFunc(fi, "eglQueryDisplayAttribKHR", eglQueryDisplayAttribKHR == NULL);
+}
+
+#endif /* EGL_KHR_display_reference */
+
+#ifdef EGL_KHR_fence_sync
+
+static void _glewInfo_EGL_KHR_fence_sync (void)
+{
+ glewPrintExt("EGL_KHR_fence_sync", EGLEW_KHR_fence_sync, eglewIsSupported("EGL_KHR_fence_sync"), eglewGetExtension("EGL_KHR_fence_sync"));
+}
+
+#endif /* EGL_KHR_fence_sync */
+
+#ifdef EGL_KHR_get_all_proc_addresses
+
+static void _glewInfo_EGL_KHR_get_all_proc_addresses (void)
+{
+ glewPrintExt("EGL_KHR_get_all_proc_addresses", EGLEW_KHR_get_all_proc_addresses, eglewIsSupported("EGL_KHR_get_all_proc_addresses"), eglewGetExtension("EGL_KHR_get_all_proc_addresses"));
+}
+
+#endif /* EGL_KHR_get_all_proc_addresses */
+
+#ifdef EGL_KHR_gl_colorspace
+
+static void _glewInfo_EGL_KHR_gl_colorspace (void)
+{
+ glewPrintExt("EGL_KHR_gl_colorspace", EGLEW_KHR_gl_colorspace, eglewIsSupported("EGL_KHR_gl_colorspace"), eglewGetExtension("EGL_KHR_gl_colorspace"));
+}
+
+#endif /* EGL_KHR_gl_colorspace */
+
+#ifdef EGL_KHR_gl_renderbuffer_image
+
+static void _glewInfo_EGL_KHR_gl_renderbuffer_image (void)
+{
+ glewPrintExt("EGL_KHR_gl_renderbuffer_image", EGLEW_KHR_gl_renderbuffer_image, eglewIsSupported("EGL_KHR_gl_renderbuffer_image"), eglewGetExtension("EGL_KHR_gl_renderbuffer_image"));
+}
+
+#endif /* EGL_KHR_gl_renderbuffer_image */
+
+#ifdef EGL_KHR_gl_texture_2D_image
+
+static void _glewInfo_EGL_KHR_gl_texture_2D_image (void)
+{
+ glewPrintExt("EGL_KHR_gl_texture_2D_image", EGLEW_KHR_gl_texture_2D_image, eglewIsSupported("EGL_KHR_gl_texture_2D_image"), eglewGetExtension("EGL_KHR_gl_texture_2D_image"));
+}
+
+#endif /* EGL_KHR_gl_texture_2D_image */
+
+#ifdef EGL_KHR_gl_texture_3D_image
+
+static void _glewInfo_EGL_KHR_gl_texture_3D_image (void)
+{
+ glewPrintExt("EGL_KHR_gl_texture_3D_image", EGLEW_KHR_gl_texture_3D_image, eglewIsSupported("EGL_KHR_gl_texture_3D_image"), eglewGetExtension("EGL_KHR_gl_texture_3D_image"));
+}
+
+#endif /* EGL_KHR_gl_texture_3D_image */
+
+#ifdef EGL_KHR_gl_texture_cubemap_image
+
+static void _glewInfo_EGL_KHR_gl_texture_cubemap_image (void)
+{
+ glewPrintExt("EGL_KHR_gl_texture_cubemap_image", EGLEW_KHR_gl_texture_cubemap_image, eglewIsSupported("EGL_KHR_gl_texture_cubemap_image"), eglewGetExtension("EGL_KHR_gl_texture_cubemap_image"));
+}
+
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+
+#ifdef EGL_KHR_image
+
+static void _glewInfo_EGL_KHR_image (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_image", EGLEW_KHR_image, eglewIsSupported("EGL_KHR_image"), eglewGetExtension("EGL_KHR_image"));
+
+ glewInfoFunc(fi, "eglCreateImageKHR", eglCreateImageKHR == NULL);
+ glewInfoFunc(fi, "eglDestroyImageKHR", eglDestroyImageKHR == NULL);
+}
+
+#endif /* EGL_KHR_image */
+
+#ifdef EGL_KHR_image_base
+
+static void _glewInfo_EGL_KHR_image_base (void)
+{
+ glewPrintExt("EGL_KHR_image_base", EGLEW_KHR_image_base, eglewIsSupported("EGL_KHR_image_base"), eglewGetExtension("EGL_KHR_image_base"));
+}
+
+#endif /* EGL_KHR_image_base */
+
+#ifdef EGL_KHR_image_pixmap
+
+static void _glewInfo_EGL_KHR_image_pixmap (void)
+{
+ glewPrintExt("EGL_KHR_image_pixmap", EGLEW_KHR_image_pixmap, eglewIsSupported("EGL_KHR_image_pixmap"), eglewGetExtension("EGL_KHR_image_pixmap"));
+}
+
+#endif /* EGL_KHR_image_pixmap */
+
+#ifdef EGL_KHR_lock_surface
+
+static void _glewInfo_EGL_KHR_lock_surface (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_lock_surface", EGLEW_KHR_lock_surface, eglewIsSupported("EGL_KHR_lock_surface"), eglewGetExtension("EGL_KHR_lock_surface"));
+
+ glewInfoFunc(fi, "eglLockSurfaceKHR", eglLockSurfaceKHR == NULL);
+ glewInfoFunc(fi, "eglUnlockSurfaceKHR", eglUnlockSurfaceKHR == NULL);
+}
+
+#endif /* EGL_KHR_lock_surface */
+
+#ifdef EGL_KHR_lock_surface2
+
+static void _glewInfo_EGL_KHR_lock_surface2 (void)
+{
+ glewPrintExt("EGL_KHR_lock_surface2", EGLEW_KHR_lock_surface2, eglewIsSupported("EGL_KHR_lock_surface2"), eglewGetExtension("EGL_KHR_lock_surface2"));
+}
+
+#endif /* EGL_KHR_lock_surface2 */
+
+#ifdef EGL_KHR_lock_surface3
+
+static void _glewInfo_EGL_KHR_lock_surface3 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_lock_surface3", EGLEW_KHR_lock_surface3, eglewIsSupported("EGL_KHR_lock_surface3"), eglewGetExtension("EGL_KHR_lock_surface3"));
+
+ glewInfoFunc(fi, "eglQuerySurface64KHR", eglQuerySurface64KHR == NULL);
+}
+
+#endif /* EGL_KHR_lock_surface3 */
+
+#ifdef EGL_KHR_mutable_render_buffer
+
+static void _glewInfo_EGL_KHR_mutable_render_buffer (void)
+{
+ glewPrintExt("EGL_KHR_mutable_render_buffer", EGLEW_KHR_mutable_render_buffer, eglewIsSupported("EGL_KHR_mutable_render_buffer"), eglewGetExtension("EGL_KHR_mutable_render_buffer"));
+}
+
+#endif /* EGL_KHR_mutable_render_buffer */
+
+#ifdef EGL_KHR_no_config_context
+
+static void _glewInfo_EGL_KHR_no_config_context (void)
+{
+ glewPrintExt("EGL_KHR_no_config_context", EGLEW_KHR_no_config_context, eglewIsSupported("EGL_KHR_no_config_context"), eglewGetExtension("EGL_KHR_no_config_context"));
+}
+
+#endif /* EGL_KHR_no_config_context */
+
+#ifdef EGL_KHR_partial_update
+
+static void _glewInfo_EGL_KHR_partial_update (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_partial_update", EGLEW_KHR_partial_update, eglewIsSupported("EGL_KHR_partial_update"), eglewGetExtension("EGL_KHR_partial_update"));
+
+ glewInfoFunc(fi, "eglSetDamageRegionKHR", eglSetDamageRegionKHR == NULL);
+}
+
+#endif /* EGL_KHR_partial_update */
+
+#ifdef EGL_KHR_platform_android
+
+static void _glewInfo_EGL_KHR_platform_android (void)
+{
+ glewPrintExt("EGL_KHR_platform_android", EGLEW_KHR_platform_android, eglewIsSupported("EGL_KHR_platform_android"), eglewGetExtension("EGL_KHR_platform_android"));
+}
+
+#endif /* EGL_KHR_platform_android */
+
+#ifdef EGL_KHR_platform_gbm
+
+static void _glewInfo_EGL_KHR_platform_gbm (void)
+{
+ glewPrintExt("EGL_KHR_platform_gbm", EGLEW_KHR_platform_gbm, eglewIsSupported("EGL_KHR_platform_gbm"), eglewGetExtension("EGL_KHR_platform_gbm"));
+}
+
+#endif /* EGL_KHR_platform_gbm */
+
+#ifdef EGL_KHR_platform_wayland
+
+static void _glewInfo_EGL_KHR_platform_wayland (void)
+{
+ glewPrintExt("EGL_KHR_platform_wayland", EGLEW_KHR_platform_wayland, eglewIsSupported("EGL_KHR_platform_wayland"), eglewGetExtension("EGL_KHR_platform_wayland"));
+}
+
+#endif /* EGL_KHR_platform_wayland */
+
+#ifdef EGL_KHR_platform_x11
+
+static void _glewInfo_EGL_KHR_platform_x11 (void)
+{
+ glewPrintExt("EGL_KHR_platform_x11", EGLEW_KHR_platform_x11, eglewIsSupported("EGL_KHR_platform_x11"), eglewGetExtension("EGL_KHR_platform_x11"));
+}
+
+#endif /* EGL_KHR_platform_x11 */
+
+#ifdef EGL_KHR_reusable_sync
+
+static void _glewInfo_EGL_KHR_reusable_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_reusable_sync", EGLEW_KHR_reusable_sync, eglewIsSupported("EGL_KHR_reusable_sync"), eglewGetExtension("EGL_KHR_reusable_sync"));
+
+ glewInfoFunc(fi, "eglClientWaitSyncKHR", eglClientWaitSyncKHR == NULL);
+ glewInfoFunc(fi, "eglCreateSyncKHR", eglCreateSyncKHR == NULL);
+ glewInfoFunc(fi, "eglDestroySyncKHR", eglDestroySyncKHR == NULL);
+ glewInfoFunc(fi, "eglGetSyncAttribKHR", eglGetSyncAttribKHR == NULL);
+ glewInfoFunc(fi, "eglSignalSyncKHR", eglSignalSyncKHR == NULL);
+}
+
+#endif /* EGL_KHR_reusable_sync */
+
+#ifdef EGL_KHR_stream
+
+static void _glewInfo_EGL_KHR_stream (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream", EGLEW_KHR_stream, eglewIsSupported("EGL_KHR_stream"), eglewGetExtension("EGL_KHR_stream"));
+
+ glewInfoFunc(fi, "eglCreateStreamKHR", eglCreateStreamKHR == NULL);
+ glewInfoFunc(fi, "eglDestroyStreamKHR", eglDestroyStreamKHR == NULL);
+ glewInfoFunc(fi, "eglQueryStreamKHR", eglQueryStreamKHR == NULL);
+ glewInfoFunc(fi, "eglQueryStreamu64KHR", eglQueryStreamu64KHR == NULL);
+ glewInfoFunc(fi, "eglStreamAttribKHR", eglStreamAttribKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream */
+
+#ifdef EGL_KHR_stream_attrib
+
+static void _glewInfo_EGL_KHR_stream_attrib (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_attrib", EGLEW_KHR_stream_attrib, eglewIsSupported("EGL_KHR_stream_attrib"), eglewGetExtension("EGL_KHR_stream_attrib"));
+
+ glewInfoFunc(fi, "eglCreateStreamAttribKHR", eglCreateStreamAttribKHR == NULL);
+ glewInfoFunc(fi, "eglQueryStreamAttribKHR", eglQueryStreamAttribKHR == NULL);
+ glewInfoFunc(fi, "eglSetStreamAttribKHR", eglSetStreamAttribKHR == NULL);
+ glewInfoFunc(fi, "eglStreamConsumerAcquireAttribKHR", eglStreamConsumerAcquireAttribKHR == NULL);
+ glewInfoFunc(fi, "eglStreamConsumerReleaseAttribKHR", eglStreamConsumerReleaseAttribKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_attrib */
+
+#ifdef EGL_KHR_stream_consumer_gltexture
+
+static void _glewInfo_EGL_KHR_stream_consumer_gltexture (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_consumer_gltexture", EGLEW_KHR_stream_consumer_gltexture, eglewIsSupported("EGL_KHR_stream_consumer_gltexture"), eglewGetExtension("EGL_KHR_stream_consumer_gltexture"));
+
+ glewInfoFunc(fi, "eglStreamConsumerAcquireKHR", eglStreamConsumerAcquireKHR == NULL);
+ glewInfoFunc(fi, "eglStreamConsumerGLTextureExternalKHR", eglStreamConsumerGLTextureExternalKHR == NULL);
+ glewInfoFunc(fi, "eglStreamConsumerReleaseKHR", eglStreamConsumerReleaseKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_consumer_gltexture */
+
+#ifdef EGL_KHR_stream_cross_process_fd
+
+static void _glewInfo_EGL_KHR_stream_cross_process_fd (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_cross_process_fd", EGLEW_KHR_stream_cross_process_fd, eglewIsSupported("EGL_KHR_stream_cross_process_fd"), eglewGetExtension("EGL_KHR_stream_cross_process_fd"));
+
+ glewInfoFunc(fi, "eglCreateStreamFromFileDescriptorKHR", eglCreateStreamFromFileDescriptorKHR == NULL);
+ glewInfoFunc(fi, "eglGetStreamFileDescriptorKHR", eglGetStreamFileDescriptorKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_cross_process_fd */
+
+#ifdef EGL_KHR_stream_fifo
+
+static void _glewInfo_EGL_KHR_stream_fifo (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_fifo", EGLEW_KHR_stream_fifo, eglewIsSupported("EGL_KHR_stream_fifo"), eglewGetExtension("EGL_KHR_stream_fifo"));
+
+ glewInfoFunc(fi, "eglQueryStreamTimeKHR", eglQueryStreamTimeKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_fifo */
+
+#ifdef EGL_KHR_stream_producer_aldatalocator
+
+static void _glewInfo_EGL_KHR_stream_producer_aldatalocator (void)
+{
+ glewPrintExt("EGL_KHR_stream_producer_aldatalocator", EGLEW_KHR_stream_producer_aldatalocator, eglewIsSupported("EGL_KHR_stream_producer_aldatalocator"), eglewGetExtension("EGL_KHR_stream_producer_aldatalocator"));
+}
+
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+
+#ifdef EGL_KHR_stream_producer_eglsurface
+
+static void _glewInfo_EGL_KHR_stream_producer_eglsurface (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_stream_producer_eglsurface", EGLEW_KHR_stream_producer_eglsurface, eglewIsSupported("EGL_KHR_stream_producer_eglsurface"), eglewGetExtension("EGL_KHR_stream_producer_eglsurface"));
+
+ glewInfoFunc(fi, "eglCreateStreamProducerSurfaceKHR", eglCreateStreamProducerSurfaceKHR == NULL);
+}
+
+#endif /* EGL_KHR_stream_producer_eglsurface */
+
+#ifdef EGL_KHR_surfaceless_context
+
+static void _glewInfo_EGL_KHR_surfaceless_context (void)
+{
+ glewPrintExt("EGL_KHR_surfaceless_context", EGLEW_KHR_surfaceless_context, eglewIsSupported("EGL_KHR_surfaceless_context"), eglewGetExtension("EGL_KHR_surfaceless_context"));
+}
+
+#endif /* EGL_KHR_surfaceless_context */
+
+#ifdef EGL_KHR_swap_buffers_with_damage
+
+static void _glewInfo_EGL_KHR_swap_buffers_with_damage (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_swap_buffers_with_damage", EGLEW_KHR_swap_buffers_with_damage, eglewIsSupported("EGL_KHR_swap_buffers_with_damage"), eglewGetExtension("EGL_KHR_swap_buffers_with_damage"));
+
+ glewInfoFunc(fi, "eglSwapBuffersWithDamageKHR", eglSwapBuffersWithDamageKHR == NULL);
+}
+
+#endif /* EGL_KHR_swap_buffers_with_damage */
+
+#ifdef EGL_KHR_vg_parent_image
+
+static void _glewInfo_EGL_KHR_vg_parent_image (void)
+{
+ glewPrintExt("EGL_KHR_vg_parent_image", EGLEW_KHR_vg_parent_image, eglewIsSupported("EGL_KHR_vg_parent_image"), eglewGetExtension("EGL_KHR_vg_parent_image"));
+}
+
+#endif /* EGL_KHR_vg_parent_image */
+
+#ifdef EGL_KHR_wait_sync
+
+static void _glewInfo_EGL_KHR_wait_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_KHR_wait_sync", EGLEW_KHR_wait_sync, eglewIsSupported("EGL_KHR_wait_sync"), eglewGetExtension("EGL_KHR_wait_sync"));
+
+ glewInfoFunc(fi, "eglWaitSyncKHR", eglWaitSyncKHR == NULL);
+}
+
+#endif /* EGL_KHR_wait_sync */
+
+#ifdef EGL_MESA_drm_image
+
+static void _glewInfo_EGL_MESA_drm_image (void)
+{
+ GLboolean fi = glewPrintExt("EGL_MESA_drm_image", EGLEW_MESA_drm_image, eglewIsSupported("EGL_MESA_drm_image"), eglewGetExtension("EGL_MESA_drm_image"));
+
+ glewInfoFunc(fi, "eglCreateDRMImageMESA", eglCreateDRMImageMESA == NULL);
+ glewInfoFunc(fi, "eglExportDRMImageMESA", eglExportDRMImageMESA == NULL);
+}
+
+#endif /* EGL_MESA_drm_image */
+
+#ifdef EGL_MESA_image_dma_buf_export
+
+static void _glewInfo_EGL_MESA_image_dma_buf_export (void)
+{
+ GLboolean fi = glewPrintExt("EGL_MESA_image_dma_buf_export", EGLEW_MESA_image_dma_buf_export, eglewIsSupported("EGL_MESA_image_dma_buf_export"), eglewGetExtension("EGL_MESA_image_dma_buf_export"));
+
+ glewInfoFunc(fi, "eglExportDMABUFImageMESA", eglExportDMABUFImageMESA == NULL);
+ glewInfoFunc(fi, "eglExportDMABUFImageQueryMESA", eglExportDMABUFImageQueryMESA == NULL);
+}
+
+#endif /* EGL_MESA_image_dma_buf_export */
+
+#ifdef EGL_MESA_platform_gbm
+
+static void _glewInfo_EGL_MESA_platform_gbm (void)
+{
+ glewPrintExt("EGL_MESA_platform_gbm", EGLEW_MESA_platform_gbm, eglewIsSupported("EGL_MESA_platform_gbm"), eglewGetExtension("EGL_MESA_platform_gbm"));
+}
+
+#endif /* EGL_MESA_platform_gbm */
+
+#ifdef EGL_MESA_platform_surfaceless
+
+static void _glewInfo_EGL_MESA_platform_surfaceless (void)
+{
+ glewPrintExt("EGL_MESA_platform_surfaceless", EGLEW_MESA_platform_surfaceless, eglewIsSupported("EGL_MESA_platform_surfaceless"), eglewGetExtension("EGL_MESA_platform_surfaceless"));
+}
+
+#endif /* EGL_MESA_platform_surfaceless */
+
+#ifdef EGL_MESA_query_driver
+
+static void _glewInfo_EGL_MESA_query_driver (void)
+{
+ GLboolean fi = glewPrintExt("EGL_MESA_query_driver", EGLEW_MESA_query_driver, eglewIsSupported("EGL_MESA_query_driver"), eglewGetExtension("EGL_MESA_query_driver"));
+
+ glewInfoFunc(fi, "eglGetDisplayDriverConfig", eglGetDisplayDriverConfig == NULL);
+ glewInfoFunc(fi, "eglGetDisplayDriverName", eglGetDisplayDriverName == NULL);
+}
+
+#endif /* EGL_MESA_query_driver */
+
+#ifdef EGL_NOK_swap_region
+
+static void _glewInfo_EGL_NOK_swap_region (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NOK_swap_region", EGLEW_NOK_swap_region, eglewIsSupported("EGL_NOK_swap_region"), eglewGetExtension("EGL_NOK_swap_region"));
+
+ glewInfoFunc(fi, "eglSwapBuffersRegionNOK", eglSwapBuffersRegionNOK == NULL);
+}
+
+#endif /* EGL_NOK_swap_region */
+
+#ifdef EGL_NOK_swap_region2
+
+static void _glewInfo_EGL_NOK_swap_region2 (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NOK_swap_region2", EGLEW_NOK_swap_region2, eglewIsSupported("EGL_NOK_swap_region2"), eglewGetExtension("EGL_NOK_swap_region2"));
+
+ glewInfoFunc(fi, "eglSwapBuffersRegion2NOK", eglSwapBuffersRegion2NOK == NULL);
+}
+
+#endif /* EGL_NOK_swap_region2 */
+
+#ifdef EGL_NOK_texture_from_pixmap
+
+static void _glewInfo_EGL_NOK_texture_from_pixmap (void)
+{
+ glewPrintExt("EGL_NOK_texture_from_pixmap", EGLEW_NOK_texture_from_pixmap, eglewIsSupported("EGL_NOK_texture_from_pixmap"), eglewGetExtension("EGL_NOK_texture_from_pixmap"));
+}
+
+#endif /* EGL_NOK_texture_from_pixmap */
+
+#ifdef EGL_NV_3dvision_surface
+
+static void _glewInfo_EGL_NV_3dvision_surface (void)
+{
+ glewPrintExt("EGL_NV_3dvision_surface", EGLEW_NV_3dvision_surface, eglewIsSupported("EGL_NV_3dvision_surface"), eglewGetExtension("EGL_NV_3dvision_surface"));
+}
+
+#endif /* EGL_NV_3dvision_surface */
+
+#ifdef EGL_NV_context_priority_realtime
+
+static void _glewInfo_EGL_NV_context_priority_realtime (void)
+{
+ glewPrintExt("EGL_NV_context_priority_realtime", EGLEW_NV_context_priority_realtime, eglewIsSupported("EGL_NV_context_priority_realtime"), eglewGetExtension("EGL_NV_context_priority_realtime"));
+}
+
+#endif /* EGL_NV_context_priority_realtime */
+
+#ifdef EGL_NV_coverage_sample
+
+static void _glewInfo_EGL_NV_coverage_sample (void)
+{
+ glewPrintExt("EGL_NV_coverage_sample", EGLEW_NV_coverage_sample, eglewIsSupported("EGL_NV_coverage_sample"), eglewGetExtension("EGL_NV_coverage_sample"));
+}
+
+#endif /* EGL_NV_coverage_sample */
+
+#ifdef EGL_NV_coverage_sample_resolve
+
+static void _glewInfo_EGL_NV_coverage_sample_resolve (void)
+{
+ glewPrintExt("EGL_NV_coverage_sample_resolve", EGLEW_NV_coverage_sample_resolve, eglewIsSupported("EGL_NV_coverage_sample_resolve"), eglewGetExtension("EGL_NV_coverage_sample_resolve"));
+}
+
+#endif /* EGL_NV_coverage_sample_resolve */
+
+#ifdef EGL_NV_cuda_event
+
+static void _glewInfo_EGL_NV_cuda_event (void)
+{
+ glewPrintExt("EGL_NV_cuda_event", EGLEW_NV_cuda_event, eglewIsSupported("EGL_NV_cuda_event"), eglewGetExtension("EGL_NV_cuda_event"));
+}
+
+#endif /* EGL_NV_cuda_event */
+
+#ifdef EGL_NV_depth_nonlinear
+
+static void _glewInfo_EGL_NV_depth_nonlinear (void)
+{
+ glewPrintExt("EGL_NV_depth_nonlinear", EGLEW_NV_depth_nonlinear, eglewIsSupported("EGL_NV_depth_nonlinear"), eglewGetExtension("EGL_NV_depth_nonlinear"));
+}
+
+#endif /* EGL_NV_depth_nonlinear */
+
+#ifdef EGL_NV_device_cuda
+
+static void _glewInfo_EGL_NV_device_cuda (void)
+{
+ glewPrintExt("EGL_NV_device_cuda", EGLEW_NV_device_cuda, eglewIsSupported("EGL_NV_device_cuda"), eglewGetExtension("EGL_NV_device_cuda"));
+}
+
+#endif /* EGL_NV_device_cuda */
+
+#ifdef EGL_NV_native_query
+
+static void _glewInfo_EGL_NV_native_query (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_native_query", EGLEW_NV_native_query, eglewIsSupported("EGL_NV_native_query"), eglewGetExtension("EGL_NV_native_query"));
+
+ glewInfoFunc(fi, "eglQueryNativeDisplayNV", eglQueryNativeDisplayNV == NULL);
+ glewInfoFunc(fi, "eglQueryNativePixmapNV", eglQueryNativePixmapNV == NULL);
+ glewInfoFunc(fi, "eglQueryNativeWindowNV", eglQueryNativeWindowNV == NULL);
+}
+
+#endif /* EGL_NV_native_query */
+
+#ifdef EGL_NV_post_convert_rounding
+
+static void _glewInfo_EGL_NV_post_convert_rounding (void)
+{
+ glewPrintExt("EGL_NV_post_convert_rounding", EGLEW_NV_post_convert_rounding, eglewIsSupported("EGL_NV_post_convert_rounding"), eglewGetExtension("EGL_NV_post_convert_rounding"));
+}
+
+#endif /* EGL_NV_post_convert_rounding */
+
+#ifdef EGL_NV_post_sub_buffer
+
+static void _glewInfo_EGL_NV_post_sub_buffer (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_post_sub_buffer", EGLEW_NV_post_sub_buffer, eglewIsSupported("EGL_NV_post_sub_buffer"), eglewGetExtension("EGL_NV_post_sub_buffer"));
+
+ glewInfoFunc(fi, "eglPostSubBufferNV", eglPostSubBufferNV == NULL);
+}
+
+#endif /* EGL_NV_post_sub_buffer */
+
+#ifdef EGL_NV_quadruple_buffer
+
+static void _glewInfo_EGL_NV_quadruple_buffer (void)
+{
+ glewPrintExt("EGL_NV_quadruple_buffer", EGLEW_NV_quadruple_buffer, eglewIsSupported("EGL_NV_quadruple_buffer"), eglewGetExtension("EGL_NV_quadruple_buffer"));
+}
+
+#endif /* EGL_NV_quadruple_buffer */
+
+#ifdef EGL_NV_robustness_video_memory_purge
+
+static void _glewInfo_EGL_NV_robustness_video_memory_purge (void)
+{
+ glewPrintExt("EGL_NV_robustness_video_memory_purge", EGLEW_NV_robustness_video_memory_purge, eglewIsSupported("EGL_NV_robustness_video_memory_purge"), eglewGetExtension("EGL_NV_robustness_video_memory_purge"));
+}
+
+#endif /* EGL_NV_robustness_video_memory_purge */
+
+#ifdef EGL_NV_stream_consumer_eglimage
+
+static void _glewInfo_EGL_NV_stream_consumer_eglimage (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_consumer_eglimage", EGLEW_NV_stream_consumer_eglimage, eglewIsSupported("EGL_NV_stream_consumer_eglimage"), eglewGetExtension("EGL_NV_stream_consumer_eglimage"));
+
+ glewInfoFunc(fi, "eglQueryStreamConsumerEventNV", eglQueryStreamConsumerEventNV == NULL);
+ glewInfoFunc(fi, "eglStreamAcquireImageNV", eglStreamAcquireImageNV == NULL);
+ glewInfoFunc(fi, "eglStreamImageConsumerConnectNV", eglStreamImageConsumerConnectNV == NULL);
+ glewInfoFunc(fi, "eglStreamReleaseImageNV", eglStreamReleaseImageNV == NULL);
+}
+
+#endif /* EGL_NV_stream_consumer_eglimage */
+
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+
+static void _glewInfo_EGL_NV_stream_consumer_gltexture_yuv (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_consumer_gltexture_yuv", EGLEW_NV_stream_consumer_gltexture_yuv, eglewIsSupported("EGL_NV_stream_consumer_gltexture_yuv"), eglewGetExtension("EGL_NV_stream_consumer_gltexture_yuv"));
+
+ glewInfoFunc(fi, "eglStreamConsumerGLTextureExternalAttribsNV", eglStreamConsumerGLTextureExternalAttribsNV == NULL);
+}
+
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+
+#ifdef EGL_NV_stream_cross_display
+
+static void _glewInfo_EGL_NV_stream_cross_display (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_display", EGLEW_NV_stream_cross_display, eglewIsSupported("EGL_NV_stream_cross_display"), eglewGetExtension("EGL_NV_stream_cross_display"));
+}
+
+#endif /* EGL_NV_stream_cross_display */
+
+#ifdef EGL_NV_stream_cross_object
+
+static void _glewInfo_EGL_NV_stream_cross_object (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_object", EGLEW_NV_stream_cross_object, eglewIsSupported("EGL_NV_stream_cross_object"), eglewGetExtension("EGL_NV_stream_cross_object"));
+}
+
+#endif /* EGL_NV_stream_cross_object */
+
+#ifdef EGL_NV_stream_cross_partition
+
+static void _glewInfo_EGL_NV_stream_cross_partition (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_partition", EGLEW_NV_stream_cross_partition, eglewIsSupported("EGL_NV_stream_cross_partition"), eglewGetExtension("EGL_NV_stream_cross_partition"));
+}
+
+#endif /* EGL_NV_stream_cross_partition */
+
+#ifdef EGL_NV_stream_cross_process
+
+static void _glewInfo_EGL_NV_stream_cross_process (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_process", EGLEW_NV_stream_cross_process, eglewIsSupported("EGL_NV_stream_cross_process"), eglewGetExtension("EGL_NV_stream_cross_process"));
+}
+
+#endif /* EGL_NV_stream_cross_process */
+
+#ifdef EGL_NV_stream_cross_system
+
+static void _glewInfo_EGL_NV_stream_cross_system (void)
+{
+ glewPrintExt("EGL_NV_stream_cross_system", EGLEW_NV_stream_cross_system, eglewIsSupported("EGL_NV_stream_cross_system"), eglewGetExtension("EGL_NV_stream_cross_system"));
+}
+
+#endif /* EGL_NV_stream_cross_system */
+
+#ifdef EGL_NV_stream_dma
+
+static void _glewInfo_EGL_NV_stream_dma (void)
+{
+ glewPrintExt("EGL_NV_stream_dma", EGLEW_NV_stream_dma, eglewIsSupported("EGL_NV_stream_dma"), eglewGetExtension("EGL_NV_stream_dma"));
+}
+
+#endif /* EGL_NV_stream_dma */
+
+#ifdef EGL_NV_stream_fifo_next
+
+static void _glewInfo_EGL_NV_stream_fifo_next (void)
+{
+ glewPrintExt("EGL_NV_stream_fifo_next", EGLEW_NV_stream_fifo_next, eglewIsSupported("EGL_NV_stream_fifo_next"), eglewGetExtension("EGL_NV_stream_fifo_next"));
+}
+
+#endif /* EGL_NV_stream_fifo_next */
+
+#ifdef EGL_NV_stream_fifo_synchronous
+
+static void _glewInfo_EGL_NV_stream_fifo_synchronous (void)
+{
+ glewPrintExt("EGL_NV_stream_fifo_synchronous", EGLEW_NV_stream_fifo_synchronous, eglewIsSupported("EGL_NV_stream_fifo_synchronous"), eglewGetExtension("EGL_NV_stream_fifo_synchronous"));
+}
+
+#endif /* EGL_NV_stream_fifo_synchronous */
+
+#ifdef EGL_NV_stream_flush
+
+static void _glewInfo_EGL_NV_stream_flush (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_flush", EGLEW_NV_stream_flush, eglewIsSupported("EGL_NV_stream_flush"), eglewGetExtension("EGL_NV_stream_flush"));
+
+ glewInfoFunc(fi, "eglStreamFlushNV", eglStreamFlushNV == NULL);
+}
+
+#endif /* EGL_NV_stream_flush */
+
+#ifdef EGL_NV_stream_frame_limits
+
+static void _glewInfo_EGL_NV_stream_frame_limits (void)
+{
+ glewPrintExt("EGL_NV_stream_frame_limits", EGLEW_NV_stream_frame_limits, eglewIsSupported("EGL_NV_stream_frame_limits"), eglewGetExtension("EGL_NV_stream_frame_limits"));
+}
+
+#endif /* EGL_NV_stream_frame_limits */
+
+#ifdef EGL_NV_stream_metadata
+
+static void _glewInfo_EGL_NV_stream_metadata (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_metadata", EGLEW_NV_stream_metadata, eglewIsSupported("EGL_NV_stream_metadata"), eglewGetExtension("EGL_NV_stream_metadata"));
+
+ glewInfoFunc(fi, "eglQueryDisplayAttribNV", eglQueryDisplayAttribNV == NULL);
+ glewInfoFunc(fi, "eglQueryStreamMetadataNV", eglQueryStreamMetadataNV == NULL);
+ glewInfoFunc(fi, "eglSetStreamMetadataNV", eglSetStreamMetadataNV == NULL);
+}
+
+#endif /* EGL_NV_stream_metadata */
+
+#ifdef EGL_NV_stream_origin
+
+static void _glewInfo_EGL_NV_stream_origin (void)
+{
+ glewPrintExt("EGL_NV_stream_origin", EGLEW_NV_stream_origin, eglewIsSupported("EGL_NV_stream_origin"), eglewGetExtension("EGL_NV_stream_origin"));
+}
+
+#endif /* EGL_NV_stream_origin */
+
+#ifdef EGL_NV_stream_remote
+
+static void _glewInfo_EGL_NV_stream_remote (void)
+{
+ glewPrintExt("EGL_NV_stream_remote", EGLEW_NV_stream_remote, eglewIsSupported("EGL_NV_stream_remote"), eglewGetExtension("EGL_NV_stream_remote"));
+}
+
+#endif /* EGL_NV_stream_remote */
+
+#ifdef EGL_NV_stream_reset
+
+static void _glewInfo_EGL_NV_stream_reset (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_reset", EGLEW_NV_stream_reset, eglewIsSupported("EGL_NV_stream_reset"), eglewGetExtension("EGL_NV_stream_reset"));
+
+ glewInfoFunc(fi, "eglResetStreamNV", eglResetStreamNV == NULL);
+}
+
+#endif /* EGL_NV_stream_reset */
+
+#ifdef EGL_NV_stream_socket
+
+static void _glewInfo_EGL_NV_stream_socket (void)
+{
+ glewPrintExt("EGL_NV_stream_socket", EGLEW_NV_stream_socket, eglewIsSupported("EGL_NV_stream_socket"), eglewGetExtension("EGL_NV_stream_socket"));
+}
+
+#endif /* EGL_NV_stream_socket */
+
+#ifdef EGL_NV_stream_socket_inet
+
+static void _glewInfo_EGL_NV_stream_socket_inet (void)
+{
+ glewPrintExt("EGL_NV_stream_socket_inet", EGLEW_NV_stream_socket_inet, eglewIsSupported("EGL_NV_stream_socket_inet"), eglewGetExtension("EGL_NV_stream_socket_inet"));
+}
+
+#endif /* EGL_NV_stream_socket_inet */
+
+#ifdef EGL_NV_stream_socket_unix
+
+static void _glewInfo_EGL_NV_stream_socket_unix (void)
+{
+ glewPrintExt("EGL_NV_stream_socket_unix", EGLEW_NV_stream_socket_unix, eglewIsSupported("EGL_NV_stream_socket_unix"), eglewGetExtension("EGL_NV_stream_socket_unix"));
+}
+
+#endif /* EGL_NV_stream_socket_unix */
+
+#ifdef EGL_NV_stream_sync
+
+static void _glewInfo_EGL_NV_stream_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_stream_sync", EGLEW_NV_stream_sync, eglewIsSupported("EGL_NV_stream_sync"), eglewGetExtension("EGL_NV_stream_sync"));
+
+ glewInfoFunc(fi, "eglCreateStreamSyncNV", eglCreateStreamSyncNV == NULL);
+}
+
+#endif /* EGL_NV_stream_sync */
+
+#ifdef EGL_NV_sync
+
+static void _glewInfo_EGL_NV_sync (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_sync", EGLEW_NV_sync, eglewIsSupported("EGL_NV_sync"), eglewGetExtension("EGL_NV_sync"));
+
+ glewInfoFunc(fi, "eglClientWaitSyncNV", eglClientWaitSyncNV == NULL);
+ glewInfoFunc(fi, "eglCreateFenceSyncNV", eglCreateFenceSyncNV == NULL);
+ glewInfoFunc(fi, "eglDestroySyncNV", eglDestroySyncNV == NULL);
+ glewInfoFunc(fi, "eglFenceNV", eglFenceNV == NULL);
+ glewInfoFunc(fi, "eglGetSyncAttribNV", eglGetSyncAttribNV == NULL);
+ glewInfoFunc(fi, "eglSignalSyncNV", eglSignalSyncNV == NULL);
+}
+
+#endif /* EGL_NV_sync */
+
+#ifdef EGL_NV_system_time
+
+static void _glewInfo_EGL_NV_system_time (void)
+{
+ GLboolean fi = glewPrintExt("EGL_NV_system_time", EGLEW_NV_system_time, eglewIsSupported("EGL_NV_system_time"), eglewGetExtension("EGL_NV_system_time"));
+
+ glewInfoFunc(fi, "eglGetSystemTimeFrequencyNV", eglGetSystemTimeFrequencyNV == NULL);
+ glewInfoFunc(fi, "eglGetSystemTimeNV", eglGetSystemTimeNV == NULL);
+}
+
+#endif /* EGL_NV_system_time */
+
+#ifdef EGL_NV_triple_buffer
+
+static void _glewInfo_EGL_NV_triple_buffer (void)
+{
+ glewPrintExt("EGL_NV_triple_buffer", EGLEW_NV_triple_buffer, eglewIsSupported("EGL_NV_triple_buffer"), eglewGetExtension("EGL_NV_triple_buffer"));
+}
+
+#endif /* EGL_NV_triple_buffer */
+
+#ifdef EGL_TIZEN_image_native_buffer
+
+static void _glewInfo_EGL_TIZEN_image_native_buffer (void)
+{
+ glewPrintExt("EGL_TIZEN_image_native_buffer", EGLEW_TIZEN_image_native_buffer, eglewIsSupported("EGL_TIZEN_image_native_buffer"), eglewGetExtension("EGL_TIZEN_image_native_buffer"));
+}
+
+#endif /* EGL_TIZEN_image_native_buffer */
+
+#ifdef EGL_TIZEN_image_native_surface
+
+static void _glewInfo_EGL_TIZEN_image_native_surface (void)
+{
+ glewPrintExt("EGL_TIZEN_image_native_surface", EGLEW_TIZEN_image_native_surface, eglewIsSupported("EGL_TIZEN_image_native_surface"), eglewGetExtension("EGL_TIZEN_image_native_surface"));
+}
+
+#endif /* EGL_TIZEN_image_native_surface */
+
+#ifdef EGL_WL_bind_wayland_display
+
+static void _glewInfo_EGL_WL_bind_wayland_display (void)
+{
+ GLboolean fi = glewPrintExt("EGL_WL_bind_wayland_display", EGLEW_WL_bind_wayland_display, eglewIsSupported("EGL_WL_bind_wayland_display"), eglewGetExtension("EGL_WL_bind_wayland_display"));
+
+ glewInfoFunc(fi, "eglBindWaylandDisplayWL", eglBindWaylandDisplayWL == NULL);
+ glewInfoFunc(fi, "eglQueryWaylandBufferWL", eglQueryWaylandBufferWL == NULL);
+ glewInfoFunc(fi, "eglUnbindWaylandDisplayWL", eglUnbindWaylandDisplayWL == NULL);
+}
+
+#endif /* EGL_WL_bind_wayland_display */
+
+#ifdef EGL_WL_create_wayland_buffer_from_image
+
+static void _glewInfo_EGL_WL_create_wayland_buffer_from_image (void)
+{
+ GLboolean fi = glewPrintExt("EGL_WL_create_wayland_buffer_from_image", EGLEW_WL_create_wayland_buffer_from_image, eglewIsSupported("EGL_WL_create_wayland_buffer_from_image"), eglewGetExtension("EGL_WL_create_wayland_buffer_from_image"));
+
+ glewInfoFunc(fi, "eglCreateWaylandBufferFromImageWL", eglCreateWaylandBufferFromImageWL == NULL);
+}
+
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+
+#elif _WIN32
+
+#ifdef WGL_3DFX_multisample
+
+static void _glewInfo_WGL_3DFX_multisample (void)
+{
+ glewPrintExt("WGL_3DFX_multisample", WGLEW_3DFX_multisample, wglewIsSupported("WGL_3DFX_multisample"), wglewGetExtension("WGL_3DFX_multisample"));
+}
+
+#endif /* WGL_3DFX_multisample */
+
+#ifdef WGL_3DL_stereo_control
+
+static void _glewInfo_WGL_3DL_stereo_control (void)
+{
+ GLboolean fi = glewPrintExt("WGL_3DL_stereo_control", WGLEW_3DL_stereo_control, wglewIsSupported("WGL_3DL_stereo_control"), wglewGetExtension("WGL_3DL_stereo_control"));
+
+ glewInfoFunc(fi, "wglSetStereoEmitterState3DL", wglSetStereoEmitterState3DL == NULL);
+}
+
+#endif /* WGL_3DL_stereo_control */
+
+#ifdef WGL_AMD_gpu_association
+
+static void _glewInfo_WGL_AMD_gpu_association (void)
+{
+ GLboolean fi = glewPrintExt("WGL_AMD_gpu_association", WGLEW_AMD_gpu_association, wglewIsSupported("WGL_AMD_gpu_association"), wglewGetExtension("WGL_AMD_gpu_association"));
+
+ glewInfoFunc(fi, "wglBlitContextFramebufferAMD", wglBlitContextFramebufferAMD == NULL);
+ glewInfoFunc(fi, "wglCreateAssociatedContextAMD", wglCreateAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "wglCreateAssociatedContextAttribsAMD", wglCreateAssociatedContextAttribsAMD == NULL);
+ glewInfoFunc(fi, "wglDeleteAssociatedContextAMD", wglDeleteAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "wglGetContextGPUIDAMD", wglGetContextGPUIDAMD == NULL);
+ glewInfoFunc(fi, "wglGetCurrentAssociatedContextAMD", wglGetCurrentAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "wglGetGPUIDsAMD", wglGetGPUIDsAMD == NULL);
+ glewInfoFunc(fi, "wglGetGPUInfoAMD", wglGetGPUInfoAMD == NULL);
+ glewInfoFunc(fi, "wglMakeAssociatedContextCurrentAMD", wglMakeAssociatedContextCurrentAMD == NULL);
+}
+
+#endif /* WGL_AMD_gpu_association */
+
+#ifdef WGL_ARB_buffer_region
+
+static void _glewInfo_WGL_ARB_buffer_region (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_buffer_region", WGLEW_ARB_buffer_region, wglewIsSupported("WGL_ARB_buffer_region"), wglewGetExtension("WGL_ARB_buffer_region"));
+
+ glewInfoFunc(fi, "wglCreateBufferRegionARB", wglCreateBufferRegionARB == NULL);
+ glewInfoFunc(fi, "wglDeleteBufferRegionARB", wglDeleteBufferRegionARB == NULL);
+ glewInfoFunc(fi, "wglRestoreBufferRegionARB", wglRestoreBufferRegionARB == NULL);
+ glewInfoFunc(fi, "wglSaveBufferRegionARB", wglSaveBufferRegionARB == NULL);
+}
+
+#endif /* WGL_ARB_buffer_region */
+
+#ifdef WGL_ARB_context_flush_control
+
+static void _glewInfo_WGL_ARB_context_flush_control (void)
+{
+ glewPrintExt("WGL_ARB_context_flush_control", WGLEW_ARB_context_flush_control, wglewIsSupported("WGL_ARB_context_flush_control"), wglewGetExtension("WGL_ARB_context_flush_control"));
+}
+
+#endif /* WGL_ARB_context_flush_control */
+
+#ifdef WGL_ARB_create_context
+
+static void _glewInfo_WGL_ARB_create_context (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_create_context", WGLEW_ARB_create_context, wglewIsSupported("WGL_ARB_create_context"), wglewGetExtension("WGL_ARB_create_context"));
+
+ glewInfoFunc(fi, "wglCreateContextAttribsARB", wglCreateContextAttribsARB == NULL);
+}
+
+#endif /* WGL_ARB_create_context */
+
+#ifdef WGL_ARB_create_context_no_error
+
+static void _glewInfo_WGL_ARB_create_context_no_error (void)
+{
+ glewPrintExt("WGL_ARB_create_context_no_error", WGLEW_ARB_create_context_no_error, wglewIsSupported("WGL_ARB_create_context_no_error"), wglewGetExtension("WGL_ARB_create_context_no_error"));
+}
+
+#endif /* WGL_ARB_create_context_no_error */
+
+#ifdef WGL_ARB_create_context_profile
+
+static void _glewInfo_WGL_ARB_create_context_profile (void)
+{
+ glewPrintExt("WGL_ARB_create_context_profile", WGLEW_ARB_create_context_profile, wglewIsSupported("WGL_ARB_create_context_profile"), wglewGetExtension("WGL_ARB_create_context_profile"));
+}
+
+#endif /* WGL_ARB_create_context_profile */
+
+#ifdef WGL_ARB_create_context_robustness
+
+static void _glewInfo_WGL_ARB_create_context_robustness (void)
+{
+ glewPrintExt("WGL_ARB_create_context_robustness", WGLEW_ARB_create_context_robustness, wglewIsSupported("WGL_ARB_create_context_robustness"), wglewGetExtension("WGL_ARB_create_context_robustness"));
+}
+
+#endif /* WGL_ARB_create_context_robustness */
+
+#ifdef WGL_ARB_extensions_string
+
+static void _glewInfo_WGL_ARB_extensions_string (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_extensions_string", WGLEW_ARB_extensions_string, wglewIsSupported("WGL_ARB_extensions_string"), wglewGetExtension("WGL_ARB_extensions_string"));
+
+ glewInfoFunc(fi, "wglGetExtensionsStringARB", wglGetExtensionsStringARB == NULL);
+}
+
+#endif /* WGL_ARB_extensions_string */
+
+#ifdef WGL_ARB_framebuffer_sRGB
+
+static void _glewInfo_WGL_ARB_framebuffer_sRGB (void)
+{
+ glewPrintExt("WGL_ARB_framebuffer_sRGB", WGLEW_ARB_framebuffer_sRGB, wglewIsSupported("WGL_ARB_framebuffer_sRGB"), wglewGetExtension("WGL_ARB_framebuffer_sRGB"));
+}
+
+#endif /* WGL_ARB_framebuffer_sRGB */
+
+#ifdef WGL_ARB_make_current_read
+
+static void _glewInfo_WGL_ARB_make_current_read (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_make_current_read", WGLEW_ARB_make_current_read, wglewIsSupported("WGL_ARB_make_current_read"), wglewGetExtension("WGL_ARB_make_current_read"));
+
+ glewInfoFunc(fi, "wglGetCurrentReadDCARB", wglGetCurrentReadDCARB == NULL);
+ glewInfoFunc(fi, "wglMakeContextCurrentARB", wglMakeContextCurrentARB == NULL);
+}
+
+#endif /* WGL_ARB_make_current_read */
+
+#ifdef WGL_ARB_multisample
+
+static void _glewInfo_WGL_ARB_multisample (void)
+{
+ glewPrintExt("WGL_ARB_multisample", WGLEW_ARB_multisample, wglewIsSupported("WGL_ARB_multisample"), wglewGetExtension("WGL_ARB_multisample"));
+}
+
+#endif /* WGL_ARB_multisample */
+
+#ifdef WGL_ARB_pbuffer
+
+static void _glewInfo_WGL_ARB_pbuffer (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_pbuffer", WGLEW_ARB_pbuffer, wglewIsSupported("WGL_ARB_pbuffer"), wglewGetExtension("WGL_ARB_pbuffer"));
+
+ glewInfoFunc(fi, "wglCreatePbufferARB", wglCreatePbufferARB == NULL);
+ glewInfoFunc(fi, "wglDestroyPbufferARB", wglDestroyPbufferARB == NULL);
+ glewInfoFunc(fi, "wglGetPbufferDCARB", wglGetPbufferDCARB == NULL);
+ glewInfoFunc(fi, "wglQueryPbufferARB", wglQueryPbufferARB == NULL);
+ glewInfoFunc(fi, "wglReleasePbufferDCARB", wglReleasePbufferDCARB == NULL);
+}
+
+#endif /* WGL_ARB_pbuffer */
+
+#ifdef WGL_ARB_pixel_format
+
+static void _glewInfo_WGL_ARB_pixel_format (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_pixel_format", WGLEW_ARB_pixel_format, wglewIsSupported("WGL_ARB_pixel_format"), wglewGetExtension("WGL_ARB_pixel_format"));
+
+ glewInfoFunc(fi, "wglChoosePixelFormatARB", wglChoosePixelFormatARB == NULL);
+ glewInfoFunc(fi, "wglGetPixelFormatAttribfvARB", wglGetPixelFormatAttribfvARB == NULL);
+ glewInfoFunc(fi, "wglGetPixelFormatAttribivARB", wglGetPixelFormatAttribivARB == NULL);
+}
+
+#endif /* WGL_ARB_pixel_format */
+
+#ifdef WGL_ARB_pixel_format_float
+
+static void _glewInfo_WGL_ARB_pixel_format_float (void)
+{
+ glewPrintExt("WGL_ARB_pixel_format_float", WGLEW_ARB_pixel_format_float, wglewIsSupported("WGL_ARB_pixel_format_float"), wglewGetExtension("WGL_ARB_pixel_format_float"));
+}
+
+#endif /* WGL_ARB_pixel_format_float */
+
+#ifdef WGL_ARB_render_texture
+
+static void _glewInfo_WGL_ARB_render_texture (void)
+{
+ GLboolean fi = glewPrintExt("WGL_ARB_render_texture", WGLEW_ARB_render_texture, wglewIsSupported("WGL_ARB_render_texture"), wglewGetExtension("WGL_ARB_render_texture"));
+
+ glewInfoFunc(fi, "wglBindTexImageARB", wglBindTexImageARB == NULL);
+ glewInfoFunc(fi, "wglReleaseTexImageARB", wglReleaseTexImageARB == NULL);
+ glewInfoFunc(fi, "wglSetPbufferAttribARB", wglSetPbufferAttribARB == NULL);
+}
+
+#endif /* WGL_ARB_render_texture */
+
+#ifdef WGL_ARB_robustness_application_isolation
+
+static void _glewInfo_WGL_ARB_robustness_application_isolation (void)
+{
+ glewPrintExt("WGL_ARB_robustness_application_isolation", WGLEW_ARB_robustness_application_isolation, wglewIsSupported("WGL_ARB_robustness_application_isolation"), wglewGetExtension("WGL_ARB_robustness_application_isolation"));
+}
+
+#endif /* WGL_ARB_robustness_application_isolation */
+
+#ifdef WGL_ARB_robustness_share_group_isolation
+
+static void _glewInfo_WGL_ARB_robustness_share_group_isolation (void)
+{
+ glewPrintExt("WGL_ARB_robustness_share_group_isolation", WGLEW_ARB_robustness_share_group_isolation, wglewIsSupported("WGL_ARB_robustness_share_group_isolation"), wglewGetExtension("WGL_ARB_robustness_share_group_isolation"));
+}
+
+#endif /* WGL_ARB_robustness_share_group_isolation */
+
+#ifdef WGL_ATI_pixel_format_float
+
+static void _glewInfo_WGL_ATI_pixel_format_float (void)
+{
+ glewPrintExt("WGL_ATI_pixel_format_float", WGLEW_ATI_pixel_format_float, wglewIsSupported("WGL_ATI_pixel_format_float"), wglewGetExtension("WGL_ATI_pixel_format_float"));
+}
+
+#endif /* WGL_ATI_pixel_format_float */
+
+#ifdef WGL_ATI_render_texture_rectangle
+
+static void _glewInfo_WGL_ATI_render_texture_rectangle (void)
+{
+ glewPrintExt("WGL_ATI_render_texture_rectangle", WGLEW_ATI_render_texture_rectangle, wglewIsSupported("WGL_ATI_render_texture_rectangle"), wglewGetExtension("WGL_ATI_render_texture_rectangle"));
+}
+
+#endif /* WGL_ATI_render_texture_rectangle */
+
+#ifdef WGL_EXT_colorspace
+
+static void _glewInfo_WGL_EXT_colorspace (void)
+{
+ glewPrintExt("WGL_EXT_colorspace", WGLEW_EXT_colorspace, wglewIsSupported("WGL_EXT_colorspace"), wglewGetExtension("WGL_EXT_colorspace"));
+}
+
+#endif /* WGL_EXT_colorspace */
+
+#ifdef WGL_EXT_create_context_es2_profile
+
+static void _glewInfo_WGL_EXT_create_context_es2_profile (void)
+{
+ glewPrintExt("WGL_EXT_create_context_es2_profile", WGLEW_EXT_create_context_es2_profile, wglewIsSupported("WGL_EXT_create_context_es2_profile"), wglewGetExtension("WGL_EXT_create_context_es2_profile"));
+}
+
+#endif /* WGL_EXT_create_context_es2_profile */
+
+#ifdef WGL_EXT_create_context_es_profile
+
+static void _glewInfo_WGL_EXT_create_context_es_profile (void)
+{
+ glewPrintExt("WGL_EXT_create_context_es_profile", WGLEW_EXT_create_context_es_profile, wglewIsSupported("WGL_EXT_create_context_es_profile"), wglewGetExtension("WGL_EXT_create_context_es_profile"));
+}
+
+#endif /* WGL_EXT_create_context_es_profile */
+
+#ifdef WGL_EXT_depth_float
+
+static void _glewInfo_WGL_EXT_depth_float (void)
+{
+ glewPrintExt("WGL_EXT_depth_float", WGLEW_EXT_depth_float, wglewIsSupported("WGL_EXT_depth_float"), wglewGetExtension("WGL_EXT_depth_float"));
+}
+
+#endif /* WGL_EXT_depth_float */
+
+#ifdef WGL_EXT_display_color_table
+
+static void _glewInfo_WGL_EXT_display_color_table (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_display_color_table", WGLEW_EXT_display_color_table, wglewIsSupported("WGL_EXT_display_color_table"), wglewGetExtension("WGL_EXT_display_color_table"));
+
+ glewInfoFunc(fi, "wglBindDisplayColorTableEXT", wglBindDisplayColorTableEXT == NULL);
+ glewInfoFunc(fi, "wglCreateDisplayColorTableEXT", wglCreateDisplayColorTableEXT == NULL);
+ glewInfoFunc(fi, "wglDestroyDisplayColorTableEXT", wglDestroyDisplayColorTableEXT == NULL);
+ glewInfoFunc(fi, "wglLoadDisplayColorTableEXT", wglLoadDisplayColorTableEXT == NULL);
+}
+
+#endif /* WGL_EXT_display_color_table */
+
+#ifdef WGL_EXT_extensions_string
+
+static void _glewInfo_WGL_EXT_extensions_string (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_extensions_string", WGLEW_EXT_extensions_string, wglewIsSupported("WGL_EXT_extensions_string"), wglewGetExtension("WGL_EXT_extensions_string"));
+
+ glewInfoFunc(fi, "wglGetExtensionsStringEXT", wglGetExtensionsStringEXT == NULL);
+}
+
+#endif /* WGL_EXT_extensions_string */
+
+#ifdef WGL_EXT_framebuffer_sRGB
+
+static void _glewInfo_WGL_EXT_framebuffer_sRGB (void)
+{
+ glewPrintExt("WGL_EXT_framebuffer_sRGB", WGLEW_EXT_framebuffer_sRGB, wglewIsSupported("WGL_EXT_framebuffer_sRGB"), wglewGetExtension("WGL_EXT_framebuffer_sRGB"));
+}
+
+#endif /* WGL_EXT_framebuffer_sRGB */
+
+#ifdef WGL_EXT_make_current_read
+
+static void _glewInfo_WGL_EXT_make_current_read (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_make_current_read", WGLEW_EXT_make_current_read, wglewIsSupported("WGL_EXT_make_current_read"), wglewGetExtension("WGL_EXT_make_current_read"));
+
+ glewInfoFunc(fi, "wglGetCurrentReadDCEXT", wglGetCurrentReadDCEXT == NULL);
+ glewInfoFunc(fi, "wglMakeContextCurrentEXT", wglMakeContextCurrentEXT == NULL);
+}
+
+#endif /* WGL_EXT_make_current_read */
+
+#ifdef WGL_EXT_multisample
+
+static void _glewInfo_WGL_EXT_multisample (void)
+{
+ glewPrintExt("WGL_EXT_multisample", WGLEW_EXT_multisample, wglewIsSupported("WGL_EXT_multisample"), wglewGetExtension("WGL_EXT_multisample"));
+}
+
+#endif /* WGL_EXT_multisample */
+
+#ifdef WGL_EXT_pbuffer
+
+static void _glewInfo_WGL_EXT_pbuffer (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_pbuffer", WGLEW_EXT_pbuffer, wglewIsSupported("WGL_EXT_pbuffer"), wglewGetExtension("WGL_EXT_pbuffer"));
+
+ glewInfoFunc(fi, "wglCreatePbufferEXT", wglCreatePbufferEXT == NULL);
+ glewInfoFunc(fi, "wglDestroyPbufferEXT", wglDestroyPbufferEXT == NULL);
+ glewInfoFunc(fi, "wglGetPbufferDCEXT", wglGetPbufferDCEXT == NULL);
+ glewInfoFunc(fi, "wglQueryPbufferEXT", wglQueryPbufferEXT == NULL);
+ glewInfoFunc(fi, "wglReleasePbufferDCEXT", wglReleasePbufferDCEXT == NULL);
+}
+
+#endif /* WGL_EXT_pbuffer */
+
+#ifdef WGL_EXT_pixel_format
+
+static void _glewInfo_WGL_EXT_pixel_format (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_pixel_format", WGLEW_EXT_pixel_format, wglewIsSupported("WGL_EXT_pixel_format"), wglewGetExtension("WGL_EXT_pixel_format"));
+
+ glewInfoFunc(fi, "wglChoosePixelFormatEXT", wglChoosePixelFormatEXT == NULL);
+ glewInfoFunc(fi, "wglGetPixelFormatAttribfvEXT", wglGetPixelFormatAttribfvEXT == NULL);
+ glewInfoFunc(fi, "wglGetPixelFormatAttribivEXT", wglGetPixelFormatAttribivEXT == NULL);
+}
+
+#endif /* WGL_EXT_pixel_format */
+
+#ifdef WGL_EXT_pixel_format_packed_float
+
+static void _glewInfo_WGL_EXT_pixel_format_packed_float (void)
+{
+ glewPrintExt("WGL_EXT_pixel_format_packed_float", WGLEW_EXT_pixel_format_packed_float, wglewIsSupported("WGL_EXT_pixel_format_packed_float"), wglewGetExtension("WGL_EXT_pixel_format_packed_float"));
+}
+
+#endif /* WGL_EXT_pixel_format_packed_float */
+
+#ifdef WGL_EXT_swap_control
+
+static void _glewInfo_WGL_EXT_swap_control (void)
+{
+ GLboolean fi = glewPrintExt("WGL_EXT_swap_control", WGLEW_EXT_swap_control, wglewIsSupported("WGL_EXT_swap_control"), wglewGetExtension("WGL_EXT_swap_control"));
+
+ glewInfoFunc(fi, "wglGetSwapIntervalEXT", wglGetSwapIntervalEXT == NULL);
+ glewInfoFunc(fi, "wglSwapIntervalEXT", wglSwapIntervalEXT == NULL);
+}
+
+#endif /* WGL_EXT_swap_control */
+
+#ifdef WGL_EXT_swap_control_tear
+
+static void _glewInfo_WGL_EXT_swap_control_tear (void)
+{
+ glewPrintExt("WGL_EXT_swap_control_tear", WGLEW_EXT_swap_control_tear, wglewIsSupported("WGL_EXT_swap_control_tear"), wglewGetExtension("WGL_EXT_swap_control_tear"));
+}
+
+#endif /* WGL_EXT_swap_control_tear */
+
+#ifdef WGL_I3D_digital_video_control
+
+static void _glewInfo_WGL_I3D_digital_video_control (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_digital_video_control", WGLEW_I3D_digital_video_control, wglewIsSupported("WGL_I3D_digital_video_control"), wglewGetExtension("WGL_I3D_digital_video_control"));
+
+ glewInfoFunc(fi, "wglGetDigitalVideoParametersI3D", wglGetDigitalVideoParametersI3D == NULL);
+ glewInfoFunc(fi, "wglSetDigitalVideoParametersI3D", wglSetDigitalVideoParametersI3D == NULL);
+}
+
+#endif /* WGL_I3D_digital_video_control */
+
+#ifdef WGL_I3D_gamma
+
+static void _glewInfo_WGL_I3D_gamma (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_gamma", WGLEW_I3D_gamma, wglewIsSupported("WGL_I3D_gamma"), wglewGetExtension("WGL_I3D_gamma"));
+
+ glewInfoFunc(fi, "wglGetGammaTableI3D", wglGetGammaTableI3D == NULL);
+ glewInfoFunc(fi, "wglGetGammaTableParametersI3D", wglGetGammaTableParametersI3D == NULL);
+ glewInfoFunc(fi, "wglSetGammaTableI3D", wglSetGammaTableI3D == NULL);
+ glewInfoFunc(fi, "wglSetGammaTableParametersI3D", wglSetGammaTableParametersI3D == NULL);
+}
+
+#endif /* WGL_I3D_gamma */
+
+#ifdef WGL_I3D_genlock
+
+static void _glewInfo_WGL_I3D_genlock (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_genlock", WGLEW_I3D_genlock, wglewIsSupported("WGL_I3D_genlock"), wglewGetExtension("WGL_I3D_genlock"));
+
+ glewInfoFunc(fi, "wglDisableGenlockI3D", wglDisableGenlockI3D == NULL);
+ glewInfoFunc(fi, "wglEnableGenlockI3D", wglEnableGenlockI3D == NULL);
+ glewInfoFunc(fi, "wglGenlockSampleRateI3D", wglGenlockSampleRateI3D == NULL);
+ glewInfoFunc(fi, "wglGenlockSourceDelayI3D", wglGenlockSourceDelayI3D == NULL);
+ glewInfoFunc(fi, "wglGenlockSourceEdgeI3D", wglGenlockSourceEdgeI3D == NULL);
+ glewInfoFunc(fi, "wglGenlockSourceI3D", wglGenlockSourceI3D == NULL);
+ glewInfoFunc(fi, "wglGetGenlockSampleRateI3D", wglGetGenlockSampleRateI3D == NULL);
+ glewInfoFunc(fi, "wglGetGenlockSourceDelayI3D", wglGetGenlockSourceDelayI3D == NULL);
+ glewInfoFunc(fi, "wglGetGenlockSourceEdgeI3D", wglGetGenlockSourceEdgeI3D == NULL);
+ glewInfoFunc(fi, "wglGetGenlockSourceI3D", wglGetGenlockSourceI3D == NULL);
+ glewInfoFunc(fi, "wglIsEnabledGenlockI3D", wglIsEnabledGenlockI3D == NULL);
+ glewInfoFunc(fi, "wglQueryGenlockMaxSourceDelayI3D", wglQueryGenlockMaxSourceDelayI3D == NULL);
+}
+
+#endif /* WGL_I3D_genlock */
+
+#ifdef WGL_I3D_image_buffer
+
+static void _glewInfo_WGL_I3D_image_buffer (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_image_buffer", WGLEW_I3D_image_buffer, wglewIsSupported("WGL_I3D_image_buffer"), wglewGetExtension("WGL_I3D_image_buffer"));
+
+ glewInfoFunc(fi, "wglAssociateImageBufferEventsI3D", wglAssociateImageBufferEventsI3D == NULL);
+ glewInfoFunc(fi, "wglCreateImageBufferI3D", wglCreateImageBufferI3D == NULL);
+ glewInfoFunc(fi, "wglDestroyImageBufferI3D", wglDestroyImageBufferI3D == NULL);
+ glewInfoFunc(fi, "wglReleaseImageBufferEventsI3D", wglReleaseImageBufferEventsI3D == NULL);
+}
+
+#endif /* WGL_I3D_image_buffer */
+
+#ifdef WGL_I3D_swap_frame_lock
+
+static void _glewInfo_WGL_I3D_swap_frame_lock (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_swap_frame_lock", WGLEW_I3D_swap_frame_lock, wglewIsSupported("WGL_I3D_swap_frame_lock"), wglewGetExtension("WGL_I3D_swap_frame_lock"));
+
+ glewInfoFunc(fi, "wglDisableFrameLockI3D", wglDisableFrameLockI3D == NULL);
+ glewInfoFunc(fi, "wglEnableFrameLockI3D", wglEnableFrameLockI3D == NULL);
+ glewInfoFunc(fi, "wglIsEnabledFrameLockI3D", wglIsEnabledFrameLockI3D == NULL);
+ glewInfoFunc(fi, "wglQueryFrameLockMasterI3D", wglQueryFrameLockMasterI3D == NULL);
+}
+
+#endif /* WGL_I3D_swap_frame_lock */
+
+#ifdef WGL_I3D_swap_frame_usage
+
+static void _glewInfo_WGL_I3D_swap_frame_usage (void)
+{
+ GLboolean fi = glewPrintExt("WGL_I3D_swap_frame_usage", WGLEW_I3D_swap_frame_usage, wglewIsSupported("WGL_I3D_swap_frame_usage"), wglewGetExtension("WGL_I3D_swap_frame_usage"));
+
+ glewInfoFunc(fi, "wglBeginFrameTrackingI3D", wglBeginFrameTrackingI3D == NULL);
+ glewInfoFunc(fi, "wglEndFrameTrackingI3D", wglEndFrameTrackingI3D == NULL);
+ glewInfoFunc(fi, "wglGetFrameUsageI3D", wglGetFrameUsageI3D == NULL);
+ glewInfoFunc(fi, "wglQueryFrameTrackingI3D", wglQueryFrameTrackingI3D == NULL);
+}
+
+#endif /* WGL_I3D_swap_frame_usage */
+
+#ifdef WGL_NV_DX_interop
+
+static void _glewInfo_WGL_NV_DX_interop (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_DX_interop", WGLEW_NV_DX_interop, wglewIsSupported("WGL_NV_DX_interop"), wglewGetExtension("WGL_NV_DX_interop"));
+
+ glewInfoFunc(fi, "wglDXCloseDeviceNV", wglDXCloseDeviceNV == NULL);
+ glewInfoFunc(fi, "wglDXLockObjectsNV", wglDXLockObjectsNV == NULL);
+ glewInfoFunc(fi, "wglDXObjectAccessNV", wglDXObjectAccessNV == NULL);
+ glewInfoFunc(fi, "wglDXOpenDeviceNV", wglDXOpenDeviceNV == NULL);
+ glewInfoFunc(fi, "wglDXRegisterObjectNV", wglDXRegisterObjectNV == NULL);
+ glewInfoFunc(fi, "wglDXSetResourceShareHandleNV", wglDXSetResourceShareHandleNV == NULL);
+ glewInfoFunc(fi, "wglDXUnlockObjectsNV", wglDXUnlockObjectsNV == NULL);
+ glewInfoFunc(fi, "wglDXUnregisterObjectNV", wglDXUnregisterObjectNV == NULL);
+}
+
+#endif /* WGL_NV_DX_interop */
+
+#ifdef WGL_NV_DX_interop2
+
+static void _glewInfo_WGL_NV_DX_interop2 (void)
+{
+ glewPrintExt("WGL_NV_DX_interop2", WGLEW_NV_DX_interop2, wglewIsSupported("WGL_NV_DX_interop2"), wglewGetExtension("WGL_NV_DX_interop2"));
+}
+
+#endif /* WGL_NV_DX_interop2 */
+
+#ifdef WGL_NV_copy_image
+
+static void _glewInfo_WGL_NV_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_copy_image", WGLEW_NV_copy_image, wglewIsSupported("WGL_NV_copy_image"), wglewGetExtension("WGL_NV_copy_image"));
+
+ glewInfoFunc(fi, "wglCopyImageSubDataNV", wglCopyImageSubDataNV == NULL);
+}
+
+#endif /* WGL_NV_copy_image */
+
+#ifdef WGL_NV_delay_before_swap
+
+static void _glewInfo_WGL_NV_delay_before_swap (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_delay_before_swap", WGLEW_NV_delay_before_swap, wglewIsSupported("WGL_NV_delay_before_swap"), wglewGetExtension("WGL_NV_delay_before_swap"));
+
+ glewInfoFunc(fi, "wglDelayBeforeSwapNV", wglDelayBeforeSwapNV == NULL);
+}
+
+#endif /* WGL_NV_delay_before_swap */
+
+#ifdef WGL_NV_float_buffer
+
+static void _glewInfo_WGL_NV_float_buffer (void)
+{
+ glewPrintExt("WGL_NV_float_buffer", WGLEW_NV_float_buffer, wglewIsSupported("WGL_NV_float_buffer"), wglewGetExtension("WGL_NV_float_buffer"));
+}
+
+#endif /* WGL_NV_float_buffer */
+
+#ifdef WGL_NV_gpu_affinity
+
+static void _glewInfo_WGL_NV_gpu_affinity (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_gpu_affinity", WGLEW_NV_gpu_affinity, wglewIsSupported("WGL_NV_gpu_affinity"), wglewGetExtension("WGL_NV_gpu_affinity"));
+
+ glewInfoFunc(fi, "wglCreateAffinityDCNV", wglCreateAffinityDCNV == NULL);
+ glewInfoFunc(fi, "wglDeleteDCNV", wglDeleteDCNV == NULL);
+ glewInfoFunc(fi, "wglEnumGpuDevicesNV", wglEnumGpuDevicesNV == NULL);
+ glewInfoFunc(fi, "wglEnumGpusFromAffinityDCNV", wglEnumGpusFromAffinityDCNV == NULL);
+ glewInfoFunc(fi, "wglEnumGpusNV", wglEnumGpusNV == NULL);
+}
+
+#endif /* WGL_NV_gpu_affinity */
+
+#ifdef WGL_NV_multigpu_context
+
+static void _glewInfo_WGL_NV_multigpu_context (void)
+{
+ glewPrintExt("WGL_NV_multigpu_context", WGLEW_NV_multigpu_context, wglewIsSupported("WGL_NV_multigpu_context"), wglewGetExtension("WGL_NV_multigpu_context"));
+}
+
+#endif /* WGL_NV_multigpu_context */
+
+#ifdef WGL_NV_multisample_coverage
+
+static void _glewInfo_WGL_NV_multisample_coverage (void)
+{
+ glewPrintExt("WGL_NV_multisample_coverage", WGLEW_NV_multisample_coverage, wglewIsSupported("WGL_NV_multisample_coverage"), wglewGetExtension("WGL_NV_multisample_coverage"));
+}
+
+#endif /* WGL_NV_multisample_coverage */
+
+#ifdef WGL_NV_present_video
+
+static void _glewInfo_WGL_NV_present_video (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_present_video", WGLEW_NV_present_video, wglewIsSupported("WGL_NV_present_video"), wglewGetExtension("WGL_NV_present_video"));
+
+ glewInfoFunc(fi, "wglBindVideoDeviceNV", wglBindVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "wglEnumerateVideoDevicesNV", wglEnumerateVideoDevicesNV == NULL);
+ glewInfoFunc(fi, "wglQueryCurrentContextNV", wglQueryCurrentContextNV == NULL);
+}
+
+#endif /* WGL_NV_present_video */
+
+#ifdef WGL_NV_render_depth_texture
+
+static void _glewInfo_WGL_NV_render_depth_texture (void)
+{
+ glewPrintExt("WGL_NV_render_depth_texture", WGLEW_NV_render_depth_texture, wglewIsSupported("WGL_NV_render_depth_texture"), wglewGetExtension("WGL_NV_render_depth_texture"));
+}
+
+#endif /* WGL_NV_render_depth_texture */
+
+#ifdef WGL_NV_render_texture_rectangle
+
+static void _glewInfo_WGL_NV_render_texture_rectangle (void)
+{
+ glewPrintExt("WGL_NV_render_texture_rectangle", WGLEW_NV_render_texture_rectangle, wglewIsSupported("WGL_NV_render_texture_rectangle"), wglewGetExtension("WGL_NV_render_texture_rectangle"));
+}
+
+#endif /* WGL_NV_render_texture_rectangle */
+
+#ifdef WGL_NV_swap_group
+
+static void _glewInfo_WGL_NV_swap_group (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_swap_group", WGLEW_NV_swap_group, wglewIsSupported("WGL_NV_swap_group"), wglewGetExtension("WGL_NV_swap_group"));
+
+ glewInfoFunc(fi, "wglBindSwapBarrierNV", wglBindSwapBarrierNV == NULL);
+ glewInfoFunc(fi, "wglJoinSwapGroupNV", wglJoinSwapGroupNV == NULL);
+ glewInfoFunc(fi, "wglQueryFrameCountNV", wglQueryFrameCountNV == NULL);
+ glewInfoFunc(fi, "wglQueryMaxSwapGroupsNV", wglQueryMaxSwapGroupsNV == NULL);
+ glewInfoFunc(fi, "wglQuerySwapGroupNV", wglQuerySwapGroupNV == NULL);
+ glewInfoFunc(fi, "wglResetFrameCountNV", wglResetFrameCountNV == NULL);
+}
+
+#endif /* WGL_NV_swap_group */
+
+#ifdef WGL_NV_vertex_array_range
+
+static void _glewInfo_WGL_NV_vertex_array_range (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_vertex_array_range", WGLEW_NV_vertex_array_range, wglewIsSupported("WGL_NV_vertex_array_range"), wglewGetExtension("WGL_NV_vertex_array_range"));
+
+ glewInfoFunc(fi, "wglAllocateMemoryNV", wglAllocateMemoryNV == NULL);
+ glewInfoFunc(fi, "wglFreeMemoryNV", wglFreeMemoryNV == NULL);
+}
+
+#endif /* WGL_NV_vertex_array_range */
+
+#ifdef WGL_NV_video_capture
+
+static void _glewInfo_WGL_NV_video_capture (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_video_capture", WGLEW_NV_video_capture, wglewIsSupported("WGL_NV_video_capture"), wglewGetExtension("WGL_NV_video_capture"));
+
+ glewInfoFunc(fi, "wglBindVideoCaptureDeviceNV", wglBindVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "wglEnumerateVideoCaptureDevicesNV", wglEnumerateVideoCaptureDevicesNV == NULL);
+ glewInfoFunc(fi, "wglLockVideoCaptureDeviceNV", wglLockVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "wglQueryVideoCaptureDeviceNV", wglQueryVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "wglReleaseVideoCaptureDeviceNV", wglReleaseVideoCaptureDeviceNV == NULL);
+}
+
+#endif /* WGL_NV_video_capture */
+
+#ifdef WGL_NV_video_output
+
+static void _glewInfo_WGL_NV_video_output (void)
+{
+ GLboolean fi = glewPrintExt("WGL_NV_video_output", WGLEW_NV_video_output, wglewIsSupported("WGL_NV_video_output"), wglewGetExtension("WGL_NV_video_output"));
+
+ glewInfoFunc(fi, "wglBindVideoImageNV", wglBindVideoImageNV == NULL);
+ glewInfoFunc(fi, "wglGetVideoDeviceNV", wglGetVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "wglGetVideoInfoNV", wglGetVideoInfoNV == NULL);
+ glewInfoFunc(fi, "wglReleaseVideoDeviceNV", wglReleaseVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "wglReleaseVideoImageNV", wglReleaseVideoImageNV == NULL);
+ glewInfoFunc(fi, "wglSendPbufferToVideoNV", wglSendPbufferToVideoNV == NULL);
+}
+
+#endif /* WGL_NV_video_output */
+
+#ifdef WGL_OML_sync_control
+
+static void _glewInfo_WGL_OML_sync_control (void)
+{
+ GLboolean fi = glewPrintExt("WGL_OML_sync_control", WGLEW_OML_sync_control, wglewIsSupported("WGL_OML_sync_control"), wglewGetExtension("WGL_OML_sync_control"));
+
+ glewInfoFunc(fi, "wglGetMscRateOML", wglGetMscRateOML == NULL);
+ glewInfoFunc(fi, "wglGetSyncValuesOML", wglGetSyncValuesOML == NULL);
+ glewInfoFunc(fi, "wglSwapBuffersMscOML", wglSwapBuffersMscOML == NULL);
+ glewInfoFunc(fi, "wglSwapLayerBuffersMscOML", wglSwapLayerBuffersMscOML == NULL);
+ glewInfoFunc(fi, "wglWaitForMscOML", wglWaitForMscOML == NULL);
+ glewInfoFunc(fi, "wglWaitForSbcOML", wglWaitForSbcOML == NULL);
+}
+
+#endif /* WGL_OML_sync_control */
+
+#else /* _UNIX */
+
+#ifdef GLX_VERSION_1_2
+
+static void _glewInfo_GLX_VERSION_1_2 (void)
+{
+ GLboolean fi = glewPrintExt("GLX_VERSION_1_2", GLXEW_VERSION_1_2, GLXEW_VERSION_1_2, GLXEW_VERSION_1_2);
+
+ glewInfoFunc(fi, "glXGetCurrentDisplay", glXGetCurrentDisplay == NULL);
+}
+
+#endif /* GLX_VERSION_1_2 */
+
+#ifdef GLX_VERSION_1_3
+
+static void _glewInfo_GLX_VERSION_1_3 (void)
+{
+ GLboolean fi = glewPrintExt("GLX_VERSION_1_3", GLXEW_VERSION_1_3, GLXEW_VERSION_1_3, GLXEW_VERSION_1_3);
+
+ glewInfoFunc(fi, "glXChooseFBConfig", glXChooseFBConfig == NULL);
+ glewInfoFunc(fi, "glXCreateNewContext", glXCreateNewContext == NULL);
+ glewInfoFunc(fi, "glXCreatePbuffer", glXCreatePbuffer == NULL);
+ glewInfoFunc(fi, "glXCreatePixmap", glXCreatePixmap == NULL);
+ glewInfoFunc(fi, "glXCreateWindow", glXCreateWindow == NULL);
+ glewInfoFunc(fi, "glXDestroyPbuffer", glXDestroyPbuffer == NULL);
+ glewInfoFunc(fi, "glXDestroyPixmap", glXDestroyPixmap == NULL);
+ glewInfoFunc(fi, "glXDestroyWindow", glXDestroyWindow == NULL);
+ glewInfoFunc(fi, "glXGetCurrentReadDrawable", glXGetCurrentReadDrawable == NULL);
+ glewInfoFunc(fi, "glXGetFBConfigAttrib", glXGetFBConfigAttrib == NULL);
+ glewInfoFunc(fi, "glXGetFBConfigs", glXGetFBConfigs == NULL);
+ glewInfoFunc(fi, "glXGetSelectedEvent", glXGetSelectedEvent == NULL);
+ glewInfoFunc(fi, "glXGetVisualFromFBConfig", glXGetVisualFromFBConfig == NULL);
+ glewInfoFunc(fi, "glXMakeContextCurrent", glXMakeContextCurrent == NULL);
+ glewInfoFunc(fi, "glXQueryContext", glXQueryContext == NULL);
+ glewInfoFunc(fi, "glXQueryDrawable", glXQueryDrawable == NULL);
+ glewInfoFunc(fi, "glXSelectEvent", glXSelectEvent == NULL);
+}
+
+#endif /* GLX_VERSION_1_3 */
+
+#ifdef GLX_VERSION_1_4
+
+static void _glewInfo_GLX_VERSION_1_4 (void)
+{
+ glewPrintExt("GLX_VERSION_1_4", GLXEW_VERSION_1_4, GLXEW_VERSION_1_4, GLXEW_VERSION_1_4);
+}
+
+#endif /* GLX_VERSION_1_4 */
+
+#ifdef GLX_3DFX_multisample
+
+static void _glewInfo_GLX_3DFX_multisample (void)
+{
+ glewPrintExt("GLX_3DFX_multisample", GLXEW_3DFX_multisample, glxewIsSupported("GLX_3DFX_multisample"), glxewGetExtension("GLX_3DFX_multisample"));
+}
+
+#endif /* GLX_3DFX_multisample */
+
+#ifdef GLX_AMD_gpu_association
+
+static void _glewInfo_GLX_AMD_gpu_association (void)
+{
+ GLboolean fi = glewPrintExt("GLX_AMD_gpu_association", GLXEW_AMD_gpu_association, glxewIsSupported("GLX_AMD_gpu_association"), glxewGetExtension("GLX_AMD_gpu_association"));
+
+ glewInfoFunc(fi, "glXBlitContextFramebufferAMD", glXBlitContextFramebufferAMD == NULL);
+ glewInfoFunc(fi, "glXCreateAssociatedContextAMD", glXCreateAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "glXCreateAssociatedContextAttribsAMD", glXCreateAssociatedContextAttribsAMD == NULL);
+ glewInfoFunc(fi, "glXDeleteAssociatedContextAMD", glXDeleteAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "glXGetContextGPUIDAMD", glXGetContextGPUIDAMD == NULL);
+ glewInfoFunc(fi, "glXGetCurrentAssociatedContextAMD", glXGetCurrentAssociatedContextAMD == NULL);
+ glewInfoFunc(fi, "glXGetGPUIDsAMD", glXGetGPUIDsAMD == NULL);
+ glewInfoFunc(fi, "glXGetGPUInfoAMD", glXGetGPUInfoAMD == NULL);
+ glewInfoFunc(fi, "glXMakeAssociatedContextCurrentAMD", glXMakeAssociatedContextCurrentAMD == NULL);
+}
+
+#endif /* GLX_AMD_gpu_association */
+
+#ifdef GLX_ARB_context_flush_control
+
+static void _glewInfo_GLX_ARB_context_flush_control (void)
+{
+ glewPrintExt("GLX_ARB_context_flush_control", GLXEW_ARB_context_flush_control, glxewIsSupported("GLX_ARB_context_flush_control"), glxewGetExtension("GLX_ARB_context_flush_control"));
+}
+
+#endif /* GLX_ARB_context_flush_control */
+
+#ifdef GLX_ARB_create_context
+
+static void _glewInfo_GLX_ARB_create_context (void)
+{
+ GLboolean fi = glewPrintExt("GLX_ARB_create_context", GLXEW_ARB_create_context, glxewIsSupported("GLX_ARB_create_context"), glxewGetExtension("GLX_ARB_create_context"));
+
+ glewInfoFunc(fi, "glXCreateContextAttribsARB", glXCreateContextAttribsARB == NULL);
+}
+
+#endif /* GLX_ARB_create_context */
+
+#ifdef GLX_ARB_create_context_no_error
+
+static void _glewInfo_GLX_ARB_create_context_no_error (void)
+{
+ glewPrintExt("GLX_ARB_create_context_no_error", GLXEW_ARB_create_context_no_error, glxewIsSupported("GLX_ARB_create_context_no_error"), glxewGetExtension("GLX_ARB_create_context_no_error"));
+}
+
+#endif /* GLX_ARB_create_context_no_error */
+
+#ifdef GLX_ARB_create_context_profile
+
+static void _glewInfo_GLX_ARB_create_context_profile (void)
+{
+ glewPrintExt("GLX_ARB_create_context_profile", GLXEW_ARB_create_context_profile, glxewIsSupported("GLX_ARB_create_context_profile"), glxewGetExtension("GLX_ARB_create_context_profile"));
+}
+
+#endif /* GLX_ARB_create_context_profile */
+
+#ifdef GLX_ARB_create_context_robustness
+
+static void _glewInfo_GLX_ARB_create_context_robustness (void)
+{
+ glewPrintExt("GLX_ARB_create_context_robustness", GLXEW_ARB_create_context_robustness, glxewIsSupported("GLX_ARB_create_context_robustness"), glxewGetExtension("GLX_ARB_create_context_robustness"));
+}
+
+#endif /* GLX_ARB_create_context_robustness */
+
+#ifdef GLX_ARB_fbconfig_float
+
+static void _glewInfo_GLX_ARB_fbconfig_float (void)
+{
+ glewPrintExt("GLX_ARB_fbconfig_float", GLXEW_ARB_fbconfig_float, glxewIsSupported("GLX_ARB_fbconfig_float"), glxewGetExtension("GLX_ARB_fbconfig_float"));
+}
+
+#endif /* GLX_ARB_fbconfig_float */
+
+#ifdef GLX_ARB_framebuffer_sRGB
+
+static void _glewInfo_GLX_ARB_framebuffer_sRGB (void)
+{
+ glewPrintExt("GLX_ARB_framebuffer_sRGB", GLXEW_ARB_framebuffer_sRGB, glxewIsSupported("GLX_ARB_framebuffer_sRGB"), glxewGetExtension("GLX_ARB_framebuffer_sRGB"));
+}
+
+#endif /* GLX_ARB_framebuffer_sRGB */
+
+#ifdef GLX_ARB_get_proc_address
+
+static void _glewInfo_GLX_ARB_get_proc_address (void)
+{
+ glewPrintExt("GLX_ARB_get_proc_address", GLXEW_ARB_get_proc_address, glxewIsSupported("GLX_ARB_get_proc_address"), glxewGetExtension("GLX_ARB_get_proc_address"));
+}
+
+#endif /* GLX_ARB_get_proc_address */
+
+#ifdef GLX_ARB_multisample
+
+static void _glewInfo_GLX_ARB_multisample (void)
+{
+ glewPrintExt("GLX_ARB_multisample", GLXEW_ARB_multisample, glxewIsSupported("GLX_ARB_multisample"), glxewGetExtension("GLX_ARB_multisample"));
+}
+
+#endif /* GLX_ARB_multisample */
+
+#ifdef GLX_ARB_robustness_application_isolation
+
+static void _glewInfo_GLX_ARB_robustness_application_isolation (void)
+{
+ glewPrintExt("GLX_ARB_robustness_application_isolation", GLXEW_ARB_robustness_application_isolation, glxewIsSupported("GLX_ARB_robustness_application_isolation"), glxewGetExtension("GLX_ARB_robustness_application_isolation"));
+}
+
+#endif /* GLX_ARB_robustness_application_isolation */
+
+#ifdef GLX_ARB_robustness_share_group_isolation
+
+static void _glewInfo_GLX_ARB_robustness_share_group_isolation (void)
+{
+ glewPrintExt("GLX_ARB_robustness_share_group_isolation", GLXEW_ARB_robustness_share_group_isolation, glxewIsSupported("GLX_ARB_robustness_share_group_isolation"), glxewGetExtension("GLX_ARB_robustness_share_group_isolation"));
+}
+
+#endif /* GLX_ARB_robustness_share_group_isolation */
+
+#ifdef GLX_ARB_vertex_buffer_object
+
+static void _glewInfo_GLX_ARB_vertex_buffer_object (void)
+{
+ glewPrintExt("GLX_ARB_vertex_buffer_object", GLXEW_ARB_vertex_buffer_object, glxewIsSupported("GLX_ARB_vertex_buffer_object"), glxewGetExtension("GLX_ARB_vertex_buffer_object"));
+}
+
+#endif /* GLX_ARB_vertex_buffer_object */
+
+#ifdef GLX_ATI_pixel_format_float
+
+static void _glewInfo_GLX_ATI_pixel_format_float (void)
+{
+ glewPrintExt("GLX_ATI_pixel_format_float", GLXEW_ATI_pixel_format_float, glxewIsSupported("GLX_ATI_pixel_format_float"), glxewGetExtension("GLX_ATI_pixel_format_float"));
+}
+
+#endif /* GLX_ATI_pixel_format_float */
+
+#ifdef GLX_ATI_render_texture
+
+static void _glewInfo_GLX_ATI_render_texture (void)
+{
+ GLboolean fi = glewPrintExt("GLX_ATI_render_texture", GLXEW_ATI_render_texture, glxewIsSupported("GLX_ATI_render_texture"), glxewGetExtension("GLX_ATI_render_texture"));
+
+ glewInfoFunc(fi, "glXBindTexImageATI", glXBindTexImageATI == NULL);
+ glewInfoFunc(fi, "glXDrawableAttribATI", glXDrawableAttribATI == NULL);
+ glewInfoFunc(fi, "glXReleaseTexImageATI", glXReleaseTexImageATI == NULL);
+}
+
+#endif /* GLX_ATI_render_texture */
+
+#ifdef GLX_EXT_buffer_age
+
+static void _glewInfo_GLX_EXT_buffer_age (void)
+{
+ glewPrintExt("GLX_EXT_buffer_age", GLXEW_EXT_buffer_age, glxewIsSupported("GLX_EXT_buffer_age"), glxewGetExtension("GLX_EXT_buffer_age"));
+}
+
+#endif /* GLX_EXT_buffer_age */
+
+#ifdef GLX_EXT_context_priority
+
+static void _glewInfo_GLX_EXT_context_priority (void)
+{
+ glewPrintExt("GLX_EXT_context_priority", GLXEW_EXT_context_priority, glxewIsSupported("GLX_EXT_context_priority"), glxewGetExtension("GLX_EXT_context_priority"));
+}
+
+#endif /* GLX_EXT_context_priority */
+
+#ifdef GLX_EXT_create_context_es2_profile
+
+static void _glewInfo_GLX_EXT_create_context_es2_profile (void)
+{
+ glewPrintExt("GLX_EXT_create_context_es2_profile", GLXEW_EXT_create_context_es2_profile, glxewIsSupported("GLX_EXT_create_context_es2_profile"), glxewGetExtension("GLX_EXT_create_context_es2_profile"));
+}
+
+#endif /* GLX_EXT_create_context_es2_profile */
+
+#ifdef GLX_EXT_create_context_es_profile
+
+static void _glewInfo_GLX_EXT_create_context_es_profile (void)
+{
+ glewPrintExt("GLX_EXT_create_context_es_profile", GLXEW_EXT_create_context_es_profile, glxewIsSupported("GLX_EXT_create_context_es_profile"), glxewGetExtension("GLX_EXT_create_context_es_profile"));
+}
+
+#endif /* GLX_EXT_create_context_es_profile */
+
+#ifdef GLX_EXT_fbconfig_packed_float
+
+static void _glewInfo_GLX_EXT_fbconfig_packed_float (void)
+{
+ glewPrintExt("GLX_EXT_fbconfig_packed_float", GLXEW_EXT_fbconfig_packed_float, glxewIsSupported("GLX_EXT_fbconfig_packed_float"), glxewGetExtension("GLX_EXT_fbconfig_packed_float"));
+}
+
+#endif /* GLX_EXT_fbconfig_packed_float */
+
+#ifdef GLX_EXT_framebuffer_sRGB
+
+static void _glewInfo_GLX_EXT_framebuffer_sRGB (void)
+{
+ glewPrintExt("GLX_EXT_framebuffer_sRGB", GLXEW_EXT_framebuffer_sRGB, glxewIsSupported("GLX_EXT_framebuffer_sRGB"), glxewGetExtension("GLX_EXT_framebuffer_sRGB"));
+}
+
+#endif /* GLX_EXT_framebuffer_sRGB */
+
+#ifdef GLX_EXT_get_drawable_type
+
+static void _glewInfo_GLX_EXT_get_drawable_type (void)
+{
+ glewPrintExt("GLX_EXT_get_drawable_type", GLXEW_EXT_get_drawable_type, glxewIsSupported("GLX_EXT_get_drawable_type"), glxewGetExtension("GLX_EXT_get_drawable_type"));
+}
+
+#endif /* GLX_EXT_get_drawable_type */
+
+#ifdef GLX_EXT_import_context
+
+static void _glewInfo_GLX_EXT_import_context (void)
+{
+ GLboolean fi = glewPrintExt("GLX_EXT_import_context", GLXEW_EXT_import_context, glxewIsSupported("GLX_EXT_import_context"), glxewGetExtension("GLX_EXT_import_context"));
+
+ glewInfoFunc(fi, "glXFreeContextEXT", glXFreeContextEXT == NULL);
+ glewInfoFunc(fi, "glXGetContextIDEXT", glXGetContextIDEXT == NULL);
+ glewInfoFunc(fi, "glXGetCurrentDisplayEXT", glXGetCurrentDisplayEXT == NULL);
+ glewInfoFunc(fi, "glXImportContextEXT", glXImportContextEXT == NULL);
+ glewInfoFunc(fi, "glXQueryContextInfoEXT", glXQueryContextInfoEXT == NULL);
+}
+
+#endif /* GLX_EXT_import_context */
+
+#ifdef GLX_EXT_libglvnd
+
+static void _glewInfo_GLX_EXT_libglvnd (void)
+{
+ glewPrintExt("GLX_EXT_libglvnd", GLXEW_EXT_libglvnd, glxewIsSupported("GLX_EXT_libglvnd"), glxewGetExtension("GLX_EXT_libglvnd"));
+}
+
+#endif /* GLX_EXT_libglvnd */
+
+#ifdef GLX_EXT_no_config_context
+
+static void _glewInfo_GLX_EXT_no_config_context (void)
+{
+ glewPrintExt("GLX_EXT_no_config_context", GLXEW_EXT_no_config_context, glxewIsSupported("GLX_EXT_no_config_context"), glxewGetExtension("GLX_EXT_no_config_context"));
+}
+
+#endif /* GLX_EXT_no_config_context */
+
+#ifdef GLX_EXT_scene_marker
+
+static void _glewInfo_GLX_EXT_scene_marker (void)
+{
+ glewPrintExt("GLX_EXT_scene_marker", GLXEW_EXT_scene_marker, glxewIsSupported("GLX_EXT_scene_marker"), glxewGetExtension("GLX_EXT_scene_marker"));
+}
+
+#endif /* GLX_EXT_scene_marker */
+
+#ifdef GLX_EXT_stereo_tree
+
+static void _glewInfo_GLX_EXT_stereo_tree (void)
+{
+ glewPrintExt("GLX_EXT_stereo_tree", GLXEW_EXT_stereo_tree, glxewIsSupported("GLX_EXT_stereo_tree"), glxewGetExtension("GLX_EXT_stereo_tree"));
+}
+
+#endif /* GLX_EXT_stereo_tree */
+
+#ifdef GLX_EXT_swap_control
+
+static void _glewInfo_GLX_EXT_swap_control (void)
+{
+ GLboolean fi = glewPrintExt("GLX_EXT_swap_control", GLXEW_EXT_swap_control, glxewIsSupported("GLX_EXT_swap_control"), glxewGetExtension("GLX_EXT_swap_control"));
+
+ glewInfoFunc(fi, "glXSwapIntervalEXT", glXSwapIntervalEXT == NULL);
+}
+
+#endif /* GLX_EXT_swap_control */
+
+#ifdef GLX_EXT_swap_control_tear
+
+static void _glewInfo_GLX_EXT_swap_control_tear (void)
+{
+ glewPrintExt("GLX_EXT_swap_control_tear", GLXEW_EXT_swap_control_tear, glxewIsSupported("GLX_EXT_swap_control_tear"), glxewGetExtension("GLX_EXT_swap_control_tear"));
+}
+
+#endif /* GLX_EXT_swap_control_tear */
+
+#ifdef GLX_EXT_texture_from_pixmap
+
+static void _glewInfo_GLX_EXT_texture_from_pixmap (void)
+{
+ GLboolean fi = glewPrintExt("GLX_EXT_texture_from_pixmap", GLXEW_EXT_texture_from_pixmap, glxewIsSupported("GLX_EXT_texture_from_pixmap"), glxewGetExtension("GLX_EXT_texture_from_pixmap"));
+
+ glewInfoFunc(fi, "glXBindTexImageEXT", glXBindTexImageEXT == NULL);
+ glewInfoFunc(fi, "glXReleaseTexImageEXT", glXReleaseTexImageEXT == NULL);
+}
+
+#endif /* GLX_EXT_texture_from_pixmap */
+
+#ifdef GLX_EXT_visual_info
+
+static void _glewInfo_GLX_EXT_visual_info (void)
+{
+ glewPrintExt("GLX_EXT_visual_info", GLXEW_EXT_visual_info, glxewIsSupported("GLX_EXT_visual_info"), glxewGetExtension("GLX_EXT_visual_info"));
+}
+
+#endif /* GLX_EXT_visual_info */
+
+#ifdef GLX_EXT_visual_rating
+
+static void _glewInfo_GLX_EXT_visual_rating (void)
+{
+ glewPrintExt("GLX_EXT_visual_rating", GLXEW_EXT_visual_rating, glxewIsSupported("GLX_EXT_visual_rating"), glxewGetExtension("GLX_EXT_visual_rating"));
+}
+
+#endif /* GLX_EXT_visual_rating */
+
+#ifdef GLX_INTEL_swap_event
+
+static void _glewInfo_GLX_INTEL_swap_event (void)
+{
+ glewPrintExt("GLX_INTEL_swap_event", GLXEW_INTEL_swap_event, glxewIsSupported("GLX_INTEL_swap_event"), glxewGetExtension("GLX_INTEL_swap_event"));
+}
+
+#endif /* GLX_INTEL_swap_event */
+
+#ifdef GLX_MESA_agp_offset
+
+static void _glewInfo_GLX_MESA_agp_offset (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_agp_offset", GLXEW_MESA_agp_offset, glxewIsSupported("GLX_MESA_agp_offset"), glxewGetExtension("GLX_MESA_agp_offset"));
+
+ glewInfoFunc(fi, "glXGetAGPOffsetMESA", glXGetAGPOffsetMESA == NULL);
+}
+
+#endif /* GLX_MESA_agp_offset */
+
+#ifdef GLX_MESA_copy_sub_buffer
+
+static void _glewInfo_GLX_MESA_copy_sub_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_copy_sub_buffer", GLXEW_MESA_copy_sub_buffer, glxewIsSupported("GLX_MESA_copy_sub_buffer"), glxewGetExtension("GLX_MESA_copy_sub_buffer"));
+
+ glewInfoFunc(fi, "glXCopySubBufferMESA", glXCopySubBufferMESA == NULL);
+}
+
+#endif /* GLX_MESA_copy_sub_buffer */
+
+#ifdef GLX_MESA_pixmap_colormap
+
+static void _glewInfo_GLX_MESA_pixmap_colormap (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_pixmap_colormap", GLXEW_MESA_pixmap_colormap, glxewIsSupported("GLX_MESA_pixmap_colormap"), glxewGetExtension("GLX_MESA_pixmap_colormap"));
+
+ glewInfoFunc(fi, "glXCreateGLXPixmapMESA", glXCreateGLXPixmapMESA == NULL);
+}
+
+#endif /* GLX_MESA_pixmap_colormap */
+
+#ifdef GLX_MESA_query_renderer
+
+static void _glewInfo_GLX_MESA_query_renderer (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_query_renderer", GLXEW_MESA_query_renderer, glxewIsSupported("GLX_MESA_query_renderer"), glxewGetExtension("GLX_MESA_query_renderer"));
+
+ glewInfoFunc(fi, "glXQueryCurrentRendererIntegerMESA", glXQueryCurrentRendererIntegerMESA == NULL);
+ glewInfoFunc(fi, "glXQueryCurrentRendererStringMESA", glXQueryCurrentRendererStringMESA == NULL);
+ glewInfoFunc(fi, "glXQueryRendererIntegerMESA", glXQueryRendererIntegerMESA == NULL);
+ glewInfoFunc(fi, "glXQueryRendererStringMESA", glXQueryRendererStringMESA == NULL);
+}
+
+#endif /* GLX_MESA_query_renderer */
+
+#ifdef GLX_MESA_release_buffers
+
+static void _glewInfo_GLX_MESA_release_buffers (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_release_buffers", GLXEW_MESA_release_buffers, glxewIsSupported("GLX_MESA_release_buffers"), glxewGetExtension("GLX_MESA_release_buffers"));
+
+ glewInfoFunc(fi, "glXReleaseBuffersMESA", glXReleaseBuffersMESA == NULL);
+}
+
+#endif /* GLX_MESA_release_buffers */
+
+#ifdef GLX_MESA_set_3dfx_mode
+
+static void _glewInfo_GLX_MESA_set_3dfx_mode (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_set_3dfx_mode", GLXEW_MESA_set_3dfx_mode, glxewIsSupported("GLX_MESA_set_3dfx_mode"), glxewGetExtension("GLX_MESA_set_3dfx_mode"));
+
+ glewInfoFunc(fi, "glXSet3DfxModeMESA", glXSet3DfxModeMESA == NULL);
+}
+
+#endif /* GLX_MESA_set_3dfx_mode */
+
+#ifdef GLX_MESA_swap_control
+
+static void _glewInfo_GLX_MESA_swap_control (void)
+{
+ GLboolean fi = glewPrintExt("GLX_MESA_swap_control", GLXEW_MESA_swap_control, glxewIsSupported("GLX_MESA_swap_control"), glxewGetExtension("GLX_MESA_swap_control"));
+
+ glewInfoFunc(fi, "glXGetSwapIntervalMESA", glXGetSwapIntervalMESA == NULL);
+ glewInfoFunc(fi, "glXSwapIntervalMESA", glXSwapIntervalMESA == NULL);
+}
+
+#endif /* GLX_MESA_swap_control */
+
+#ifdef GLX_NV_copy_buffer
+
+static void _glewInfo_GLX_NV_copy_buffer (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_copy_buffer", GLXEW_NV_copy_buffer, glxewIsSupported("GLX_NV_copy_buffer"), glxewGetExtension("GLX_NV_copy_buffer"));
+
+ glewInfoFunc(fi, "glXCopyBufferSubDataNV", glXCopyBufferSubDataNV == NULL);
+ glewInfoFunc(fi, "glXNamedCopyBufferSubDataNV", glXNamedCopyBufferSubDataNV == NULL);
+}
+
+#endif /* GLX_NV_copy_buffer */
+
+#ifdef GLX_NV_copy_image
+
+static void _glewInfo_GLX_NV_copy_image (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_copy_image", GLXEW_NV_copy_image, glxewIsSupported("GLX_NV_copy_image"), glxewGetExtension("GLX_NV_copy_image"));
+
+ glewInfoFunc(fi, "glXCopyImageSubDataNV", glXCopyImageSubDataNV == NULL);
+}
+
+#endif /* GLX_NV_copy_image */
+
+#ifdef GLX_NV_delay_before_swap
+
+static void _glewInfo_GLX_NV_delay_before_swap (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_delay_before_swap", GLXEW_NV_delay_before_swap, glxewIsSupported("GLX_NV_delay_before_swap"), glxewGetExtension("GLX_NV_delay_before_swap"));
+
+ glewInfoFunc(fi, "glXDelayBeforeSwapNV", glXDelayBeforeSwapNV == NULL);
+}
+
+#endif /* GLX_NV_delay_before_swap */
+
+#ifdef GLX_NV_float_buffer
+
+static void _glewInfo_GLX_NV_float_buffer (void)
+{
+ glewPrintExt("GLX_NV_float_buffer", GLXEW_NV_float_buffer, glxewIsSupported("GLX_NV_float_buffer"), glxewGetExtension("GLX_NV_float_buffer"));
+}
+
+#endif /* GLX_NV_float_buffer */
+
+#ifdef GLX_NV_multigpu_context
+
+static void _glewInfo_GLX_NV_multigpu_context (void)
+{
+ glewPrintExt("GLX_NV_multigpu_context", GLXEW_NV_multigpu_context, glxewIsSupported("GLX_NV_multigpu_context"), glxewGetExtension("GLX_NV_multigpu_context"));
+}
+
+#endif /* GLX_NV_multigpu_context */
+
+#ifdef GLX_NV_multisample_coverage
+
+static void _glewInfo_GLX_NV_multisample_coverage (void)
+{
+ glewPrintExt("GLX_NV_multisample_coverage", GLXEW_NV_multisample_coverage, glxewIsSupported("GLX_NV_multisample_coverage"), glxewGetExtension("GLX_NV_multisample_coverage"));
+}
+
+#endif /* GLX_NV_multisample_coverage */
+
+#ifdef GLX_NV_present_video
+
+static void _glewInfo_GLX_NV_present_video (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_present_video", GLXEW_NV_present_video, glxewIsSupported("GLX_NV_present_video"), glxewGetExtension("GLX_NV_present_video"));
+
+ glewInfoFunc(fi, "glXBindVideoDeviceNV", glXBindVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "glXEnumerateVideoDevicesNV", glXEnumerateVideoDevicesNV == NULL);
+}
+
+#endif /* GLX_NV_present_video */
+
+#ifdef GLX_NV_robustness_video_memory_purge
+
+static void _glewInfo_GLX_NV_robustness_video_memory_purge (void)
+{
+ glewPrintExt("GLX_NV_robustness_video_memory_purge", GLXEW_NV_robustness_video_memory_purge, glxewIsSupported("GLX_NV_robustness_video_memory_purge"), glxewGetExtension("GLX_NV_robustness_video_memory_purge"));
+}
+
+#endif /* GLX_NV_robustness_video_memory_purge */
+
+#ifdef GLX_NV_swap_group
+
+static void _glewInfo_GLX_NV_swap_group (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_swap_group", GLXEW_NV_swap_group, glxewIsSupported("GLX_NV_swap_group"), glxewGetExtension("GLX_NV_swap_group"));
+
+ glewInfoFunc(fi, "glXBindSwapBarrierNV", glXBindSwapBarrierNV == NULL);
+ glewInfoFunc(fi, "glXJoinSwapGroupNV", glXJoinSwapGroupNV == NULL);
+ glewInfoFunc(fi, "glXQueryFrameCountNV", glXQueryFrameCountNV == NULL);
+ glewInfoFunc(fi, "glXQueryMaxSwapGroupsNV", glXQueryMaxSwapGroupsNV == NULL);
+ glewInfoFunc(fi, "glXQuerySwapGroupNV", glXQuerySwapGroupNV == NULL);
+ glewInfoFunc(fi, "glXResetFrameCountNV", glXResetFrameCountNV == NULL);
+}
+
+#endif /* GLX_NV_swap_group */
+
+#ifdef GLX_NV_vertex_array_range
+
+static void _glewInfo_GLX_NV_vertex_array_range (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_vertex_array_range", GLXEW_NV_vertex_array_range, glxewIsSupported("GLX_NV_vertex_array_range"), glxewGetExtension("GLX_NV_vertex_array_range"));
+
+ glewInfoFunc(fi, "glXAllocateMemoryNV", glXAllocateMemoryNV == NULL);
+ glewInfoFunc(fi, "glXFreeMemoryNV", glXFreeMemoryNV == NULL);
+}
+
+#endif /* GLX_NV_vertex_array_range */
+
+#ifdef GLX_NV_video_capture
+
+static void _glewInfo_GLX_NV_video_capture (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_video_capture", GLXEW_NV_video_capture, glxewIsSupported("GLX_NV_video_capture"), glxewGetExtension("GLX_NV_video_capture"));
+
+ glewInfoFunc(fi, "glXBindVideoCaptureDeviceNV", glXBindVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "glXEnumerateVideoCaptureDevicesNV", glXEnumerateVideoCaptureDevicesNV == NULL);
+ glewInfoFunc(fi, "glXLockVideoCaptureDeviceNV", glXLockVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "glXQueryVideoCaptureDeviceNV", glXQueryVideoCaptureDeviceNV == NULL);
+ glewInfoFunc(fi, "glXReleaseVideoCaptureDeviceNV", glXReleaseVideoCaptureDeviceNV == NULL);
+}
+
+#endif /* GLX_NV_video_capture */
+
+#ifdef GLX_NV_video_out
+
+static void _glewInfo_GLX_NV_video_out (void)
+{
+ GLboolean fi = glewPrintExt("GLX_NV_video_out", GLXEW_NV_video_out, glxewIsSupported("GLX_NV_video_out"), glxewGetExtension("GLX_NV_video_out"));
+
+ glewInfoFunc(fi, "glXBindVideoImageNV", glXBindVideoImageNV == NULL);
+ glewInfoFunc(fi, "glXGetVideoDeviceNV", glXGetVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "glXGetVideoInfoNV", glXGetVideoInfoNV == NULL);
+ glewInfoFunc(fi, "glXReleaseVideoDeviceNV", glXReleaseVideoDeviceNV == NULL);
+ glewInfoFunc(fi, "glXReleaseVideoImageNV", glXReleaseVideoImageNV == NULL);
+ glewInfoFunc(fi, "glXSendPbufferToVideoNV", glXSendPbufferToVideoNV == NULL);
+}
+
+#endif /* GLX_NV_video_out */
+
+#ifdef GLX_OML_swap_method
+
+static void _glewInfo_GLX_OML_swap_method (void)
+{
+ glewPrintExt("GLX_OML_swap_method", GLXEW_OML_swap_method, glxewIsSupported("GLX_OML_swap_method"), glxewGetExtension("GLX_OML_swap_method"));
+}
+
+#endif /* GLX_OML_swap_method */
+
+#ifdef GLX_OML_sync_control
+
+static void _glewInfo_GLX_OML_sync_control (void)
+{
+ GLboolean fi = glewPrintExt("GLX_OML_sync_control", GLXEW_OML_sync_control, glxewIsSupported("GLX_OML_sync_control"), glxewGetExtension("GLX_OML_sync_control"));
+
+ glewInfoFunc(fi, "glXGetMscRateOML", glXGetMscRateOML == NULL);
+ glewInfoFunc(fi, "glXGetSyncValuesOML", glXGetSyncValuesOML == NULL);
+ glewInfoFunc(fi, "glXSwapBuffersMscOML", glXSwapBuffersMscOML == NULL);
+ glewInfoFunc(fi, "glXWaitForMscOML", glXWaitForMscOML == NULL);
+ glewInfoFunc(fi, "glXWaitForSbcOML", glXWaitForSbcOML == NULL);
+}
+
+#endif /* GLX_OML_sync_control */
+
+#ifdef GLX_SGIS_blended_overlay
+
+static void _glewInfo_GLX_SGIS_blended_overlay (void)
+{
+ glewPrintExt("GLX_SGIS_blended_overlay", GLXEW_SGIS_blended_overlay, glxewIsSupported("GLX_SGIS_blended_overlay"), glxewGetExtension("GLX_SGIS_blended_overlay"));
+}
+
+#endif /* GLX_SGIS_blended_overlay */
+
+#ifdef GLX_SGIS_color_range
+
+static void _glewInfo_GLX_SGIS_color_range (void)
+{
+ glewPrintExt("GLX_SGIS_color_range", GLXEW_SGIS_color_range, glxewIsSupported("GLX_SGIS_color_range"), glxewGetExtension("GLX_SGIS_color_range"));
+}
+
+#endif /* GLX_SGIS_color_range */
+
+#ifdef GLX_SGIS_multisample
+
+static void _glewInfo_GLX_SGIS_multisample (void)
+{
+ glewPrintExt("GLX_SGIS_multisample", GLXEW_SGIS_multisample, glxewIsSupported("GLX_SGIS_multisample"), glxewGetExtension("GLX_SGIS_multisample"));
+}
+
+#endif /* GLX_SGIS_multisample */
+
+#ifdef GLX_SGIS_shared_multisample
+
+static void _glewInfo_GLX_SGIS_shared_multisample (void)
+{
+ glewPrintExt("GLX_SGIS_shared_multisample", GLXEW_SGIS_shared_multisample, glxewIsSupported("GLX_SGIS_shared_multisample"), glxewGetExtension("GLX_SGIS_shared_multisample"));
+}
+
+#endif /* GLX_SGIS_shared_multisample */
+
+#ifdef GLX_SGIX_fbconfig
+
+static void _glewInfo_GLX_SGIX_fbconfig (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_fbconfig", GLXEW_SGIX_fbconfig, glxewIsSupported("GLX_SGIX_fbconfig"), glxewGetExtension("GLX_SGIX_fbconfig"));
+
+ glewInfoFunc(fi, "glXChooseFBConfigSGIX", glXChooseFBConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXCreateContextWithConfigSGIX", glXCreateContextWithConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXCreateGLXPixmapWithConfigSGIX", glXCreateGLXPixmapWithConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXGetFBConfigAttribSGIX", glXGetFBConfigAttribSGIX == NULL);
+ glewInfoFunc(fi, "glXGetFBConfigFromVisualSGIX", glXGetFBConfigFromVisualSGIX == NULL);
+ glewInfoFunc(fi, "glXGetVisualFromFBConfigSGIX", glXGetVisualFromFBConfigSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_fbconfig */
+
+#ifdef GLX_SGIX_hyperpipe
+
+static void _glewInfo_GLX_SGIX_hyperpipe (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_hyperpipe", GLXEW_SGIX_hyperpipe, glxewIsSupported("GLX_SGIX_hyperpipe"), glxewGetExtension("GLX_SGIX_hyperpipe"));
+
+ glewInfoFunc(fi, "glXBindHyperpipeSGIX", glXBindHyperpipeSGIX == NULL);
+ glewInfoFunc(fi, "glXDestroyHyperpipeConfigSGIX", glXDestroyHyperpipeConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXHyperpipeAttribSGIX", glXHyperpipeAttribSGIX == NULL);
+ glewInfoFunc(fi, "glXHyperpipeConfigSGIX", glXHyperpipeConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryHyperpipeAttribSGIX", glXQueryHyperpipeAttribSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryHyperpipeBestAttribSGIX", glXQueryHyperpipeBestAttribSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryHyperpipeConfigSGIX", glXQueryHyperpipeConfigSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryHyperpipeNetworkSGIX", glXQueryHyperpipeNetworkSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_hyperpipe */
+
+#ifdef GLX_SGIX_pbuffer
+
+static void _glewInfo_GLX_SGIX_pbuffer (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_pbuffer", GLXEW_SGIX_pbuffer, glxewIsSupported("GLX_SGIX_pbuffer"), glxewGetExtension("GLX_SGIX_pbuffer"));
+
+ glewInfoFunc(fi, "glXCreateGLXPbufferSGIX", glXCreateGLXPbufferSGIX == NULL);
+ glewInfoFunc(fi, "glXDestroyGLXPbufferSGIX", glXDestroyGLXPbufferSGIX == NULL);
+ glewInfoFunc(fi, "glXGetSelectedEventSGIX", glXGetSelectedEventSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryGLXPbufferSGIX", glXQueryGLXPbufferSGIX == NULL);
+ glewInfoFunc(fi, "glXSelectEventSGIX", glXSelectEventSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_pbuffer */
+
+#ifdef GLX_SGIX_swap_barrier
+
+static void _glewInfo_GLX_SGIX_swap_barrier (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_swap_barrier", GLXEW_SGIX_swap_barrier, glxewIsSupported("GLX_SGIX_swap_barrier"), glxewGetExtension("GLX_SGIX_swap_barrier"));
+
+ glewInfoFunc(fi, "glXBindSwapBarrierSGIX", glXBindSwapBarrierSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryMaxSwapBarriersSGIX", glXQueryMaxSwapBarriersSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_swap_barrier */
+
+#ifdef GLX_SGIX_swap_group
+
+static void _glewInfo_GLX_SGIX_swap_group (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_swap_group", GLXEW_SGIX_swap_group, glxewIsSupported("GLX_SGIX_swap_group"), glxewGetExtension("GLX_SGIX_swap_group"));
+
+ glewInfoFunc(fi, "glXJoinSwapGroupSGIX", glXJoinSwapGroupSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_swap_group */
+
+#ifdef GLX_SGIX_video_resize
+
+static void _glewInfo_GLX_SGIX_video_resize (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGIX_video_resize", GLXEW_SGIX_video_resize, glxewIsSupported("GLX_SGIX_video_resize"), glxewGetExtension("GLX_SGIX_video_resize"));
+
+ glewInfoFunc(fi, "glXBindChannelToWindowSGIX", glXBindChannelToWindowSGIX == NULL);
+ glewInfoFunc(fi, "glXChannelRectSGIX", glXChannelRectSGIX == NULL);
+ glewInfoFunc(fi, "glXChannelRectSyncSGIX", glXChannelRectSyncSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryChannelDeltasSGIX", glXQueryChannelDeltasSGIX == NULL);
+ glewInfoFunc(fi, "glXQueryChannelRectSGIX", glXQueryChannelRectSGIX == NULL);
+}
+
+#endif /* GLX_SGIX_video_resize */
+
+#ifdef GLX_SGIX_visual_select_group
+
+static void _glewInfo_GLX_SGIX_visual_select_group (void)
+{
+ glewPrintExt("GLX_SGIX_visual_select_group", GLXEW_SGIX_visual_select_group, glxewIsSupported("GLX_SGIX_visual_select_group"), glxewGetExtension("GLX_SGIX_visual_select_group"));
+}
+
+#endif /* GLX_SGIX_visual_select_group */
+
+#ifdef GLX_SGI_cushion
+
+static void _glewInfo_GLX_SGI_cushion (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGI_cushion", GLXEW_SGI_cushion, glxewIsSupported("GLX_SGI_cushion"), glxewGetExtension("GLX_SGI_cushion"));
+
+ glewInfoFunc(fi, "glXCushionSGI", glXCushionSGI == NULL);
+}
+
+#endif /* GLX_SGI_cushion */
+
+#ifdef GLX_SGI_make_current_read
+
+static void _glewInfo_GLX_SGI_make_current_read (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGI_make_current_read", GLXEW_SGI_make_current_read, glxewIsSupported("GLX_SGI_make_current_read"), glxewGetExtension("GLX_SGI_make_current_read"));
+
+ glewInfoFunc(fi, "glXGetCurrentReadDrawableSGI", glXGetCurrentReadDrawableSGI == NULL);
+ glewInfoFunc(fi, "glXMakeCurrentReadSGI", glXMakeCurrentReadSGI == NULL);
+}
+
+#endif /* GLX_SGI_make_current_read */
+
+#ifdef GLX_SGI_swap_control
+
+static void _glewInfo_GLX_SGI_swap_control (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGI_swap_control", GLXEW_SGI_swap_control, glxewIsSupported("GLX_SGI_swap_control"), glxewGetExtension("GLX_SGI_swap_control"));
+
+ glewInfoFunc(fi, "glXSwapIntervalSGI", glXSwapIntervalSGI == NULL);
+}
+
+#endif /* GLX_SGI_swap_control */
+
+#ifdef GLX_SGI_video_sync
+
+static void _glewInfo_GLX_SGI_video_sync (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SGI_video_sync", GLXEW_SGI_video_sync, glxewIsSupported("GLX_SGI_video_sync"), glxewGetExtension("GLX_SGI_video_sync"));
+
+ glewInfoFunc(fi, "glXGetVideoSyncSGI", glXGetVideoSyncSGI == NULL);
+ glewInfoFunc(fi, "glXWaitVideoSyncSGI", glXWaitVideoSyncSGI == NULL);
+}
+
+#endif /* GLX_SGI_video_sync */
+
+#ifdef GLX_SUN_get_transparent_index
+
+static void _glewInfo_GLX_SUN_get_transparent_index (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SUN_get_transparent_index", GLXEW_SUN_get_transparent_index, glxewIsSupported("GLX_SUN_get_transparent_index"), glxewGetExtension("GLX_SUN_get_transparent_index"));
+
+ glewInfoFunc(fi, "glXGetTransparentIndexSUN", glXGetTransparentIndexSUN == NULL);
+}
+
+#endif /* GLX_SUN_get_transparent_index */
+
+#ifdef GLX_SUN_video_resize
+
+static void _glewInfo_GLX_SUN_video_resize (void)
+{
+ GLboolean fi = glewPrintExt("GLX_SUN_video_resize", GLXEW_SUN_video_resize, glxewIsSupported("GLX_SUN_video_resize"), glxewGetExtension("GLX_SUN_video_resize"));
+
+ glewInfoFunc(fi, "glXGetVideoResizeSUN", glXGetVideoResizeSUN == NULL);
+ glewInfoFunc(fi, "glXVideoResizeSUN", glXVideoResizeSUN == NULL);
+}
+
+#endif /* GLX_SUN_video_resize */
+
+#endif /* _WIN32 */
+
+/* ------------------------------------------------------------------------ */
+
+static void glewInfo (void)
+{
+#ifdef GL_VERSION_1_1
+ _glewInfo_GL_VERSION_1_1();
+#endif /* GL_VERSION_1_1 */
+#ifdef GL_VERSION_1_2
+ _glewInfo_GL_VERSION_1_2();
+#endif /* GL_VERSION_1_2 */
+#ifdef GL_VERSION_1_2_1
+ _glewInfo_GL_VERSION_1_2_1();
+#endif /* GL_VERSION_1_2_1 */
+#ifdef GL_VERSION_1_3
+ _glewInfo_GL_VERSION_1_3();
+#endif /* GL_VERSION_1_3 */
+#ifdef GL_VERSION_1_4
+ _glewInfo_GL_VERSION_1_4();
+#endif /* GL_VERSION_1_4 */
+#ifdef GL_VERSION_1_5
+ _glewInfo_GL_VERSION_1_5();
+#endif /* GL_VERSION_1_5 */
+#ifdef GL_VERSION_2_0
+ _glewInfo_GL_VERSION_2_0();
+#endif /* GL_VERSION_2_0 */
+#ifdef GL_VERSION_2_1
+ _glewInfo_GL_VERSION_2_1();
+#endif /* GL_VERSION_2_1 */
+#ifdef GL_VERSION_3_0
+ _glewInfo_GL_VERSION_3_0();
+#endif /* GL_VERSION_3_0 */
+#ifdef GL_VERSION_3_1
+ _glewInfo_GL_VERSION_3_1();
+#endif /* GL_VERSION_3_1 */
+#ifdef GL_VERSION_3_2
+ _glewInfo_GL_VERSION_3_2();
+#endif /* GL_VERSION_3_2 */
+#ifdef GL_VERSION_3_3
+ _glewInfo_GL_VERSION_3_3();
+#endif /* GL_VERSION_3_3 */
+#ifdef GL_VERSION_4_0
+ _glewInfo_GL_VERSION_4_0();
+#endif /* GL_VERSION_4_0 */
+#ifdef GL_VERSION_4_1
+ _glewInfo_GL_VERSION_4_1();
+#endif /* GL_VERSION_4_1 */
+#ifdef GL_VERSION_4_2
+ _glewInfo_GL_VERSION_4_2();
+#endif /* GL_VERSION_4_2 */
+#ifdef GL_VERSION_4_3
+ _glewInfo_GL_VERSION_4_3();
+#endif /* GL_VERSION_4_3 */
+#ifdef GL_VERSION_4_4
+ _glewInfo_GL_VERSION_4_4();
+#endif /* GL_VERSION_4_4 */
+#ifdef GL_VERSION_4_5
+ _glewInfo_GL_VERSION_4_5();
+#endif /* GL_VERSION_4_5 */
+#ifdef GL_VERSION_4_6
+ _glewInfo_GL_VERSION_4_6();
+#endif /* GL_VERSION_4_6 */
+#ifdef GL_3DFX_multisample
+ _glewInfo_GL_3DFX_multisample();
+#endif /* GL_3DFX_multisample */
+#ifdef GL_3DFX_tbuffer
+ _glewInfo_GL_3DFX_tbuffer();
+#endif /* GL_3DFX_tbuffer */
+#ifdef GL_3DFX_texture_compression_FXT1
+ _glewInfo_GL_3DFX_texture_compression_FXT1();
+#endif /* GL_3DFX_texture_compression_FXT1 */
+#ifdef GL_AMD_blend_minmax_factor
+ _glewInfo_GL_AMD_blend_minmax_factor();
+#endif /* GL_AMD_blend_minmax_factor */
+#ifdef GL_AMD_compressed_3DC_texture
+ _glewInfo_GL_AMD_compressed_3DC_texture();
+#endif /* GL_AMD_compressed_3DC_texture */
+#ifdef GL_AMD_compressed_ATC_texture
+ _glewInfo_GL_AMD_compressed_ATC_texture();
+#endif /* GL_AMD_compressed_ATC_texture */
+#ifdef GL_AMD_conservative_depth
+ _glewInfo_GL_AMD_conservative_depth();
+#endif /* GL_AMD_conservative_depth */
+#ifdef GL_AMD_debug_output
+ _glewInfo_GL_AMD_debug_output();
+#endif /* GL_AMD_debug_output */
+#ifdef GL_AMD_depth_clamp_separate
+ _glewInfo_GL_AMD_depth_clamp_separate();
+#endif /* GL_AMD_depth_clamp_separate */
+#ifdef GL_AMD_draw_buffers_blend
+ _glewInfo_GL_AMD_draw_buffers_blend();
+#endif /* GL_AMD_draw_buffers_blend */
+#ifdef GL_AMD_framebuffer_multisample_advanced
+ _glewInfo_GL_AMD_framebuffer_multisample_advanced();
+#endif /* GL_AMD_framebuffer_multisample_advanced */
+#ifdef GL_AMD_framebuffer_sample_positions
+ _glewInfo_GL_AMD_framebuffer_sample_positions();
+#endif /* GL_AMD_framebuffer_sample_positions */
+#ifdef GL_AMD_gcn_shader
+ _glewInfo_GL_AMD_gcn_shader();
+#endif /* GL_AMD_gcn_shader */
+#ifdef GL_AMD_gpu_shader_half_float
+ _glewInfo_GL_AMD_gpu_shader_half_float();
+#endif /* GL_AMD_gpu_shader_half_float */
+#ifdef GL_AMD_gpu_shader_half_float_fetch
+ _glewInfo_GL_AMD_gpu_shader_half_float_fetch();
+#endif /* GL_AMD_gpu_shader_half_float_fetch */
+#ifdef GL_AMD_gpu_shader_int16
+ _glewInfo_GL_AMD_gpu_shader_int16();
+#endif /* GL_AMD_gpu_shader_int16 */
+#ifdef GL_AMD_gpu_shader_int64
+ _glewInfo_GL_AMD_gpu_shader_int64();
+#endif /* GL_AMD_gpu_shader_int64 */
+#ifdef GL_AMD_interleaved_elements
+ _glewInfo_GL_AMD_interleaved_elements();
+#endif /* GL_AMD_interleaved_elements */
+#ifdef GL_AMD_multi_draw_indirect
+ _glewInfo_GL_AMD_multi_draw_indirect();
+#endif /* GL_AMD_multi_draw_indirect */
+#ifdef GL_AMD_name_gen_delete
+ _glewInfo_GL_AMD_name_gen_delete();
+#endif /* GL_AMD_name_gen_delete */
+#ifdef GL_AMD_occlusion_query_event
+ _glewInfo_GL_AMD_occlusion_query_event();
+#endif /* GL_AMD_occlusion_query_event */
+#ifdef GL_AMD_performance_monitor
+ _glewInfo_GL_AMD_performance_monitor();
+#endif /* GL_AMD_performance_monitor */
+#ifdef GL_AMD_pinned_memory
+ _glewInfo_GL_AMD_pinned_memory();
+#endif /* GL_AMD_pinned_memory */
+#ifdef GL_AMD_program_binary_Z400
+ _glewInfo_GL_AMD_program_binary_Z400();
+#endif /* GL_AMD_program_binary_Z400 */
+#ifdef GL_AMD_query_buffer_object
+ _glewInfo_GL_AMD_query_buffer_object();
+#endif /* GL_AMD_query_buffer_object */
+#ifdef GL_AMD_sample_positions
+ _glewInfo_GL_AMD_sample_positions();
+#endif /* GL_AMD_sample_positions */
+#ifdef GL_AMD_seamless_cubemap_per_texture
+ _glewInfo_GL_AMD_seamless_cubemap_per_texture();
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+#ifdef GL_AMD_shader_atomic_counter_ops
+ _glewInfo_GL_AMD_shader_atomic_counter_ops();
+#endif /* GL_AMD_shader_atomic_counter_ops */
+#ifdef GL_AMD_shader_ballot
+ _glewInfo_GL_AMD_shader_ballot();
+#endif /* GL_AMD_shader_ballot */
+#ifdef GL_AMD_shader_explicit_vertex_parameter
+ _glewInfo_GL_AMD_shader_explicit_vertex_parameter();
+#endif /* GL_AMD_shader_explicit_vertex_parameter */
+#ifdef GL_AMD_shader_image_load_store_lod
+ _glewInfo_GL_AMD_shader_image_load_store_lod();
+#endif /* GL_AMD_shader_image_load_store_lod */
+#ifdef GL_AMD_shader_stencil_export
+ _glewInfo_GL_AMD_shader_stencil_export();
+#endif /* GL_AMD_shader_stencil_export */
+#ifdef GL_AMD_shader_stencil_value_export
+ _glewInfo_GL_AMD_shader_stencil_value_export();
+#endif /* GL_AMD_shader_stencil_value_export */
+#ifdef GL_AMD_shader_trinary_minmax
+ _glewInfo_GL_AMD_shader_trinary_minmax();
+#endif /* GL_AMD_shader_trinary_minmax */
+#ifdef GL_AMD_sparse_texture
+ _glewInfo_GL_AMD_sparse_texture();
+#endif /* GL_AMD_sparse_texture */
+#ifdef GL_AMD_stencil_operation_extended
+ _glewInfo_GL_AMD_stencil_operation_extended();
+#endif /* GL_AMD_stencil_operation_extended */
+#ifdef GL_AMD_texture_gather_bias_lod
+ _glewInfo_GL_AMD_texture_gather_bias_lod();
+#endif /* GL_AMD_texture_gather_bias_lod */
+#ifdef GL_AMD_texture_texture4
+ _glewInfo_GL_AMD_texture_texture4();
+#endif /* GL_AMD_texture_texture4 */
+#ifdef GL_AMD_transform_feedback3_lines_triangles
+ _glewInfo_GL_AMD_transform_feedback3_lines_triangles();
+#endif /* GL_AMD_transform_feedback3_lines_triangles */
+#ifdef GL_AMD_transform_feedback4
+ _glewInfo_GL_AMD_transform_feedback4();
+#endif /* GL_AMD_transform_feedback4 */
+#ifdef GL_AMD_vertex_shader_layer
+ _glewInfo_GL_AMD_vertex_shader_layer();
+#endif /* GL_AMD_vertex_shader_layer */
+#ifdef GL_AMD_vertex_shader_tessellator
+ _glewInfo_GL_AMD_vertex_shader_tessellator();
+#endif /* GL_AMD_vertex_shader_tessellator */
+#ifdef GL_AMD_vertex_shader_viewport_index
+ _glewInfo_GL_AMD_vertex_shader_viewport_index();
+#endif /* GL_AMD_vertex_shader_viewport_index */
+#ifdef GL_ANDROID_extension_pack_es31a
+ _glewInfo_GL_ANDROID_extension_pack_es31a();
+#endif /* GL_ANDROID_extension_pack_es31a */
+#ifdef GL_ANGLE_depth_texture
+ _glewInfo_GL_ANGLE_depth_texture();
+#endif /* GL_ANGLE_depth_texture */
+#ifdef GL_ANGLE_framebuffer_blit
+ _glewInfo_GL_ANGLE_framebuffer_blit();
+#endif /* GL_ANGLE_framebuffer_blit */
+#ifdef GL_ANGLE_framebuffer_multisample
+ _glewInfo_GL_ANGLE_framebuffer_multisample();
+#endif /* GL_ANGLE_framebuffer_multisample */
+#ifdef GL_ANGLE_instanced_arrays
+ _glewInfo_GL_ANGLE_instanced_arrays();
+#endif /* GL_ANGLE_instanced_arrays */
+#ifdef GL_ANGLE_pack_reverse_row_order
+ _glewInfo_GL_ANGLE_pack_reverse_row_order();
+#endif /* GL_ANGLE_pack_reverse_row_order */
+#ifdef GL_ANGLE_program_binary
+ _glewInfo_GL_ANGLE_program_binary();
+#endif /* GL_ANGLE_program_binary */
+#ifdef GL_ANGLE_texture_compression_dxt1
+ _glewInfo_GL_ANGLE_texture_compression_dxt1();
+#endif /* GL_ANGLE_texture_compression_dxt1 */
+#ifdef GL_ANGLE_texture_compression_dxt3
+ _glewInfo_GL_ANGLE_texture_compression_dxt3();
+#endif /* GL_ANGLE_texture_compression_dxt3 */
+#ifdef GL_ANGLE_texture_compression_dxt5
+ _glewInfo_GL_ANGLE_texture_compression_dxt5();
+#endif /* GL_ANGLE_texture_compression_dxt5 */
+#ifdef GL_ANGLE_texture_usage
+ _glewInfo_GL_ANGLE_texture_usage();
+#endif /* GL_ANGLE_texture_usage */
+#ifdef GL_ANGLE_timer_query
+ _glewInfo_GL_ANGLE_timer_query();
+#endif /* GL_ANGLE_timer_query */
+#ifdef GL_ANGLE_translated_shader_source
+ _glewInfo_GL_ANGLE_translated_shader_source();
+#endif /* GL_ANGLE_translated_shader_source */
+#ifdef GL_APPLE_aux_depth_stencil
+ _glewInfo_GL_APPLE_aux_depth_stencil();
+#endif /* GL_APPLE_aux_depth_stencil */
+#ifdef GL_APPLE_client_storage
+ _glewInfo_GL_APPLE_client_storage();
+#endif /* GL_APPLE_client_storage */
+#ifdef GL_APPLE_clip_distance
+ _glewInfo_GL_APPLE_clip_distance();
+#endif /* GL_APPLE_clip_distance */
+#ifdef GL_APPLE_color_buffer_packed_float
+ _glewInfo_GL_APPLE_color_buffer_packed_float();
+#endif /* GL_APPLE_color_buffer_packed_float */
+#ifdef GL_APPLE_copy_texture_levels
+ _glewInfo_GL_APPLE_copy_texture_levels();
+#endif /* GL_APPLE_copy_texture_levels */
+#ifdef GL_APPLE_element_array
+ _glewInfo_GL_APPLE_element_array();
+#endif /* GL_APPLE_element_array */
+#ifdef GL_APPLE_fence
+ _glewInfo_GL_APPLE_fence();
+#endif /* GL_APPLE_fence */
+#ifdef GL_APPLE_float_pixels
+ _glewInfo_GL_APPLE_float_pixels();
+#endif /* GL_APPLE_float_pixels */
+#ifdef GL_APPLE_flush_buffer_range
+ _glewInfo_GL_APPLE_flush_buffer_range();
+#endif /* GL_APPLE_flush_buffer_range */
+#ifdef GL_APPLE_framebuffer_multisample
+ _glewInfo_GL_APPLE_framebuffer_multisample();
+#endif /* GL_APPLE_framebuffer_multisample */
+#ifdef GL_APPLE_object_purgeable
+ _glewInfo_GL_APPLE_object_purgeable();
+#endif /* GL_APPLE_object_purgeable */
+#ifdef GL_APPLE_pixel_buffer
+ _glewInfo_GL_APPLE_pixel_buffer();
+#endif /* GL_APPLE_pixel_buffer */
+#ifdef GL_APPLE_rgb_422
+ _glewInfo_GL_APPLE_rgb_422();
+#endif /* GL_APPLE_rgb_422 */
+#ifdef GL_APPLE_row_bytes
+ _glewInfo_GL_APPLE_row_bytes();
+#endif /* GL_APPLE_row_bytes */
+#ifdef GL_APPLE_specular_vector
+ _glewInfo_GL_APPLE_specular_vector();
+#endif /* GL_APPLE_specular_vector */
+#ifdef GL_APPLE_sync
+ _glewInfo_GL_APPLE_sync();
+#endif /* GL_APPLE_sync */
+#ifdef GL_APPLE_texture_2D_limited_npot
+ _glewInfo_GL_APPLE_texture_2D_limited_npot();
+#endif /* GL_APPLE_texture_2D_limited_npot */
+#ifdef GL_APPLE_texture_format_BGRA8888
+ _glewInfo_GL_APPLE_texture_format_BGRA8888();
+#endif /* GL_APPLE_texture_format_BGRA8888 */
+#ifdef GL_APPLE_texture_max_level
+ _glewInfo_GL_APPLE_texture_max_level();
+#endif /* GL_APPLE_texture_max_level */
+#ifdef GL_APPLE_texture_packed_float
+ _glewInfo_GL_APPLE_texture_packed_float();
+#endif /* GL_APPLE_texture_packed_float */
+#ifdef GL_APPLE_texture_range
+ _glewInfo_GL_APPLE_texture_range();
+#endif /* GL_APPLE_texture_range */
+#ifdef GL_APPLE_transform_hint
+ _glewInfo_GL_APPLE_transform_hint();
+#endif /* GL_APPLE_transform_hint */
+#ifdef GL_APPLE_vertex_array_object
+ _glewInfo_GL_APPLE_vertex_array_object();
+#endif /* GL_APPLE_vertex_array_object */
+#ifdef GL_APPLE_vertex_array_range
+ _glewInfo_GL_APPLE_vertex_array_range();
+#endif /* GL_APPLE_vertex_array_range */
+#ifdef GL_APPLE_vertex_program_evaluators
+ _glewInfo_GL_APPLE_vertex_program_evaluators();
+#endif /* GL_APPLE_vertex_program_evaluators */
+#ifdef GL_APPLE_ycbcr_422
+ _glewInfo_GL_APPLE_ycbcr_422();
+#endif /* GL_APPLE_ycbcr_422 */
+#ifdef GL_ARB_ES2_compatibility
+ _glewInfo_GL_ARB_ES2_compatibility();
+#endif /* GL_ARB_ES2_compatibility */
+#ifdef GL_ARB_ES3_1_compatibility
+ _glewInfo_GL_ARB_ES3_1_compatibility();
+#endif /* GL_ARB_ES3_1_compatibility */
+#ifdef GL_ARB_ES3_2_compatibility
+ _glewInfo_GL_ARB_ES3_2_compatibility();
+#endif /* GL_ARB_ES3_2_compatibility */
+#ifdef GL_ARB_ES3_compatibility
+ _glewInfo_GL_ARB_ES3_compatibility();
+#endif /* GL_ARB_ES3_compatibility */
+#ifdef GL_ARB_arrays_of_arrays
+ _glewInfo_GL_ARB_arrays_of_arrays();
+#endif /* GL_ARB_arrays_of_arrays */
+#ifdef GL_ARB_base_instance
+ _glewInfo_GL_ARB_base_instance();
+#endif /* GL_ARB_base_instance */
+#ifdef GL_ARB_bindless_texture
+ _glewInfo_GL_ARB_bindless_texture();
+#endif /* GL_ARB_bindless_texture */
+#ifdef GL_ARB_blend_func_extended
+ _glewInfo_GL_ARB_blend_func_extended();
+#endif /* GL_ARB_blend_func_extended */
+#ifdef GL_ARB_buffer_storage
+ _glewInfo_GL_ARB_buffer_storage();
+#endif /* GL_ARB_buffer_storage */
+#ifdef GL_ARB_cl_event
+ _glewInfo_GL_ARB_cl_event();
+#endif /* GL_ARB_cl_event */
+#ifdef GL_ARB_clear_buffer_object
+ _glewInfo_GL_ARB_clear_buffer_object();
+#endif /* GL_ARB_clear_buffer_object */
+#ifdef GL_ARB_clear_texture
+ _glewInfo_GL_ARB_clear_texture();
+#endif /* GL_ARB_clear_texture */
+#ifdef GL_ARB_clip_control
+ _glewInfo_GL_ARB_clip_control();
+#endif /* GL_ARB_clip_control */
+#ifdef GL_ARB_color_buffer_float
+ _glewInfo_GL_ARB_color_buffer_float();
+#endif /* GL_ARB_color_buffer_float */
+#ifdef GL_ARB_compatibility
+ _glewInfo_GL_ARB_compatibility();
+#endif /* GL_ARB_compatibility */
+#ifdef GL_ARB_compressed_texture_pixel_storage
+ _glewInfo_GL_ARB_compressed_texture_pixel_storage();
+#endif /* GL_ARB_compressed_texture_pixel_storage */
+#ifdef GL_ARB_compute_shader
+ _glewInfo_GL_ARB_compute_shader();
+#endif /* GL_ARB_compute_shader */
+#ifdef GL_ARB_compute_variable_group_size
+ _glewInfo_GL_ARB_compute_variable_group_size();
+#endif /* GL_ARB_compute_variable_group_size */
+#ifdef GL_ARB_conditional_render_inverted
+ _glewInfo_GL_ARB_conditional_render_inverted();
+#endif /* GL_ARB_conditional_render_inverted */
+#ifdef GL_ARB_conservative_depth
+ _glewInfo_GL_ARB_conservative_depth();
+#endif /* GL_ARB_conservative_depth */
+#ifdef GL_ARB_copy_buffer
+ _glewInfo_GL_ARB_copy_buffer();
+#endif /* GL_ARB_copy_buffer */
+#ifdef GL_ARB_copy_image
+ _glewInfo_GL_ARB_copy_image();
+#endif /* GL_ARB_copy_image */
+#ifdef GL_ARB_cull_distance
+ _glewInfo_GL_ARB_cull_distance();
+#endif /* GL_ARB_cull_distance */
+#ifdef GL_ARB_debug_output
+ _glewInfo_GL_ARB_debug_output();
+#endif /* GL_ARB_debug_output */
+#ifdef GL_ARB_depth_buffer_float
+ _glewInfo_GL_ARB_depth_buffer_float();
+#endif /* GL_ARB_depth_buffer_float */
+#ifdef GL_ARB_depth_clamp
+ _glewInfo_GL_ARB_depth_clamp();
+#endif /* GL_ARB_depth_clamp */
+#ifdef GL_ARB_depth_texture
+ _glewInfo_GL_ARB_depth_texture();
+#endif /* GL_ARB_depth_texture */
+#ifdef GL_ARB_derivative_control
+ _glewInfo_GL_ARB_derivative_control();
+#endif /* GL_ARB_derivative_control */
+#ifdef GL_ARB_direct_state_access
+ _glewInfo_GL_ARB_direct_state_access();
+#endif /* GL_ARB_direct_state_access */
+#ifdef GL_ARB_draw_buffers
+ _glewInfo_GL_ARB_draw_buffers();
+#endif /* GL_ARB_draw_buffers */
+#ifdef GL_ARB_draw_buffers_blend
+ _glewInfo_GL_ARB_draw_buffers_blend();
+#endif /* GL_ARB_draw_buffers_blend */
+#ifdef GL_ARB_draw_elements_base_vertex
+ _glewInfo_GL_ARB_draw_elements_base_vertex();
+#endif /* GL_ARB_draw_elements_base_vertex */
+#ifdef GL_ARB_draw_indirect
+ _glewInfo_GL_ARB_draw_indirect();
+#endif /* GL_ARB_draw_indirect */
+#ifdef GL_ARB_draw_instanced
+ _glewInfo_GL_ARB_draw_instanced();
+#endif /* GL_ARB_draw_instanced */
+#ifdef GL_ARB_enhanced_layouts
+ _glewInfo_GL_ARB_enhanced_layouts();
+#endif /* GL_ARB_enhanced_layouts */
+#ifdef GL_ARB_explicit_attrib_location
+ _glewInfo_GL_ARB_explicit_attrib_location();
+#endif /* GL_ARB_explicit_attrib_location */
+#ifdef GL_ARB_explicit_uniform_location
+ _glewInfo_GL_ARB_explicit_uniform_location();
+#endif /* GL_ARB_explicit_uniform_location */
+#ifdef GL_ARB_fragment_coord_conventions
+ _glewInfo_GL_ARB_fragment_coord_conventions();
+#endif /* GL_ARB_fragment_coord_conventions */
+#ifdef GL_ARB_fragment_layer_viewport
+ _glewInfo_GL_ARB_fragment_layer_viewport();
+#endif /* GL_ARB_fragment_layer_viewport */
+#ifdef GL_ARB_fragment_program
+ _glewInfo_GL_ARB_fragment_program();
+#endif /* GL_ARB_fragment_program */
+#ifdef GL_ARB_fragment_program_shadow
+ _glewInfo_GL_ARB_fragment_program_shadow();
+#endif /* GL_ARB_fragment_program_shadow */
+#ifdef GL_ARB_fragment_shader
+ _glewInfo_GL_ARB_fragment_shader();
+#endif /* GL_ARB_fragment_shader */
+#ifdef GL_ARB_fragment_shader_interlock
+ _glewInfo_GL_ARB_fragment_shader_interlock();
+#endif /* GL_ARB_fragment_shader_interlock */
+#ifdef GL_ARB_framebuffer_no_attachments
+ _glewInfo_GL_ARB_framebuffer_no_attachments();
+#endif /* GL_ARB_framebuffer_no_attachments */
+#ifdef GL_ARB_framebuffer_object
+ _glewInfo_GL_ARB_framebuffer_object();
+#endif /* GL_ARB_framebuffer_object */
+#ifdef GL_ARB_framebuffer_sRGB
+ _glewInfo_GL_ARB_framebuffer_sRGB();
+#endif /* GL_ARB_framebuffer_sRGB */
+#ifdef GL_ARB_geometry_shader4
+ _glewInfo_GL_ARB_geometry_shader4();
+#endif /* GL_ARB_geometry_shader4 */
+#ifdef GL_ARB_get_program_binary
+ _glewInfo_GL_ARB_get_program_binary();
+#endif /* GL_ARB_get_program_binary */
+#ifdef GL_ARB_get_texture_sub_image
+ _glewInfo_GL_ARB_get_texture_sub_image();
+#endif /* GL_ARB_get_texture_sub_image */
+#ifdef GL_ARB_gl_spirv
+ _glewInfo_GL_ARB_gl_spirv();
+#endif /* GL_ARB_gl_spirv */
+#ifdef GL_ARB_gpu_shader5
+ _glewInfo_GL_ARB_gpu_shader5();
+#endif /* GL_ARB_gpu_shader5 */
+#ifdef GL_ARB_gpu_shader_fp64
+ _glewInfo_GL_ARB_gpu_shader_fp64();
+#endif /* GL_ARB_gpu_shader_fp64 */
+#ifdef GL_ARB_gpu_shader_int64
+ _glewInfo_GL_ARB_gpu_shader_int64();
+#endif /* GL_ARB_gpu_shader_int64 */
+#ifdef GL_ARB_half_float_pixel
+ _glewInfo_GL_ARB_half_float_pixel();
+#endif /* GL_ARB_half_float_pixel */
+#ifdef GL_ARB_half_float_vertex
+ _glewInfo_GL_ARB_half_float_vertex();
+#endif /* GL_ARB_half_float_vertex */
+#ifdef GL_ARB_imaging
+ _glewInfo_GL_ARB_imaging();
+#endif /* GL_ARB_imaging */
+#ifdef GL_ARB_indirect_parameters
+ _glewInfo_GL_ARB_indirect_parameters();
+#endif /* GL_ARB_indirect_parameters */
+#ifdef GL_ARB_instanced_arrays
+ _glewInfo_GL_ARB_instanced_arrays();
+#endif /* GL_ARB_instanced_arrays */
+#ifdef GL_ARB_internalformat_query
+ _glewInfo_GL_ARB_internalformat_query();
+#endif /* GL_ARB_internalformat_query */
+#ifdef GL_ARB_internalformat_query2
+ _glewInfo_GL_ARB_internalformat_query2();
+#endif /* GL_ARB_internalformat_query2 */
+#ifdef GL_ARB_invalidate_subdata
+ _glewInfo_GL_ARB_invalidate_subdata();
+#endif /* GL_ARB_invalidate_subdata */
+#ifdef GL_ARB_map_buffer_alignment
+ _glewInfo_GL_ARB_map_buffer_alignment();
+#endif /* GL_ARB_map_buffer_alignment */
+#ifdef GL_ARB_map_buffer_range
+ _glewInfo_GL_ARB_map_buffer_range();
+#endif /* GL_ARB_map_buffer_range */
+#ifdef GL_ARB_matrix_palette
+ _glewInfo_GL_ARB_matrix_palette();
+#endif /* GL_ARB_matrix_palette */
+#ifdef GL_ARB_multi_bind
+ _glewInfo_GL_ARB_multi_bind();
+#endif /* GL_ARB_multi_bind */
+#ifdef GL_ARB_multi_draw_indirect
+ _glewInfo_GL_ARB_multi_draw_indirect();
+#endif /* GL_ARB_multi_draw_indirect */
+#ifdef GL_ARB_multisample
+ _glewInfo_GL_ARB_multisample();
+#endif /* GL_ARB_multisample */
+#ifdef GL_ARB_multitexture
+ _glewInfo_GL_ARB_multitexture();
+#endif /* GL_ARB_multitexture */
+#ifdef GL_ARB_occlusion_query
+ _glewInfo_GL_ARB_occlusion_query();
+#endif /* GL_ARB_occlusion_query */
+#ifdef GL_ARB_occlusion_query2
+ _glewInfo_GL_ARB_occlusion_query2();
+#endif /* GL_ARB_occlusion_query2 */
+#ifdef GL_ARB_parallel_shader_compile
+ _glewInfo_GL_ARB_parallel_shader_compile();
+#endif /* GL_ARB_parallel_shader_compile */
+#ifdef GL_ARB_pipeline_statistics_query
+ _glewInfo_GL_ARB_pipeline_statistics_query();
+#endif /* GL_ARB_pipeline_statistics_query */
+#ifdef GL_ARB_pixel_buffer_object
+ _glewInfo_GL_ARB_pixel_buffer_object();
+#endif /* GL_ARB_pixel_buffer_object */
+#ifdef GL_ARB_point_parameters
+ _glewInfo_GL_ARB_point_parameters();
+#endif /* GL_ARB_point_parameters */
+#ifdef GL_ARB_point_sprite
+ _glewInfo_GL_ARB_point_sprite();
+#endif /* GL_ARB_point_sprite */
+#ifdef GL_ARB_polygon_offset_clamp
+ _glewInfo_GL_ARB_polygon_offset_clamp();
+#endif /* GL_ARB_polygon_offset_clamp */
+#ifdef GL_ARB_post_depth_coverage
+ _glewInfo_GL_ARB_post_depth_coverage();
+#endif /* GL_ARB_post_depth_coverage */
+#ifdef GL_ARB_program_interface_query
+ _glewInfo_GL_ARB_program_interface_query();
+#endif /* GL_ARB_program_interface_query */
+#ifdef GL_ARB_provoking_vertex
+ _glewInfo_GL_ARB_provoking_vertex();
+#endif /* GL_ARB_provoking_vertex */
+#ifdef GL_ARB_query_buffer_object
+ _glewInfo_GL_ARB_query_buffer_object();
+#endif /* GL_ARB_query_buffer_object */
+#ifdef GL_ARB_robust_buffer_access_behavior
+ _glewInfo_GL_ARB_robust_buffer_access_behavior();
+#endif /* GL_ARB_robust_buffer_access_behavior */
+#ifdef GL_ARB_robustness
+ _glewInfo_GL_ARB_robustness();
+#endif /* GL_ARB_robustness */
+#ifdef GL_ARB_robustness_application_isolation
+ _glewInfo_GL_ARB_robustness_application_isolation();
+#endif /* GL_ARB_robustness_application_isolation */
+#ifdef GL_ARB_robustness_share_group_isolation
+ _glewInfo_GL_ARB_robustness_share_group_isolation();
+#endif /* GL_ARB_robustness_share_group_isolation */
+#ifdef GL_ARB_sample_locations
+ _glewInfo_GL_ARB_sample_locations();
+#endif /* GL_ARB_sample_locations */
+#ifdef GL_ARB_sample_shading
+ _glewInfo_GL_ARB_sample_shading();
+#endif /* GL_ARB_sample_shading */
+#ifdef GL_ARB_sampler_objects
+ _glewInfo_GL_ARB_sampler_objects();
+#endif /* GL_ARB_sampler_objects */
+#ifdef GL_ARB_seamless_cube_map
+ _glewInfo_GL_ARB_seamless_cube_map();
+#endif /* GL_ARB_seamless_cube_map */
+#ifdef GL_ARB_seamless_cubemap_per_texture
+ _glewInfo_GL_ARB_seamless_cubemap_per_texture();
+#endif /* GL_ARB_seamless_cubemap_per_texture */
+#ifdef GL_ARB_separate_shader_objects
+ _glewInfo_GL_ARB_separate_shader_objects();
+#endif /* GL_ARB_separate_shader_objects */
+#ifdef GL_ARB_shader_atomic_counter_ops
+ _glewInfo_GL_ARB_shader_atomic_counter_ops();
+#endif /* GL_ARB_shader_atomic_counter_ops */
+#ifdef GL_ARB_shader_atomic_counters
+ _glewInfo_GL_ARB_shader_atomic_counters();
+#endif /* GL_ARB_shader_atomic_counters */
+#ifdef GL_ARB_shader_ballot
+ _glewInfo_GL_ARB_shader_ballot();
+#endif /* GL_ARB_shader_ballot */
+#ifdef GL_ARB_shader_bit_encoding
+ _glewInfo_GL_ARB_shader_bit_encoding();
+#endif /* GL_ARB_shader_bit_encoding */
+#ifdef GL_ARB_shader_clock
+ _glewInfo_GL_ARB_shader_clock();
+#endif /* GL_ARB_shader_clock */
+#ifdef GL_ARB_shader_draw_parameters
+ _glewInfo_GL_ARB_shader_draw_parameters();
+#endif /* GL_ARB_shader_draw_parameters */
+#ifdef GL_ARB_shader_group_vote
+ _glewInfo_GL_ARB_shader_group_vote();
+#endif /* GL_ARB_shader_group_vote */
+#ifdef GL_ARB_shader_image_load_store
+ _glewInfo_GL_ARB_shader_image_load_store();
+#endif /* GL_ARB_shader_image_load_store */
+#ifdef GL_ARB_shader_image_size
+ _glewInfo_GL_ARB_shader_image_size();
+#endif /* GL_ARB_shader_image_size */
+#ifdef GL_ARB_shader_objects
+ _glewInfo_GL_ARB_shader_objects();
+#endif /* GL_ARB_shader_objects */
+#ifdef GL_ARB_shader_precision
+ _glewInfo_GL_ARB_shader_precision();
+#endif /* GL_ARB_shader_precision */
+#ifdef GL_ARB_shader_stencil_export
+ _glewInfo_GL_ARB_shader_stencil_export();
+#endif /* GL_ARB_shader_stencil_export */
+#ifdef GL_ARB_shader_storage_buffer_object
+ _glewInfo_GL_ARB_shader_storage_buffer_object();
+#endif /* GL_ARB_shader_storage_buffer_object */
+#ifdef GL_ARB_shader_subroutine
+ _glewInfo_GL_ARB_shader_subroutine();
+#endif /* GL_ARB_shader_subroutine */
+#ifdef GL_ARB_shader_texture_image_samples
+ _glewInfo_GL_ARB_shader_texture_image_samples();
+#endif /* GL_ARB_shader_texture_image_samples */
+#ifdef GL_ARB_shader_texture_lod
+ _glewInfo_GL_ARB_shader_texture_lod();
+#endif /* GL_ARB_shader_texture_lod */
+#ifdef GL_ARB_shader_viewport_layer_array
+ _glewInfo_GL_ARB_shader_viewport_layer_array();
+#endif /* GL_ARB_shader_viewport_layer_array */
+#ifdef GL_ARB_shading_language_100
+ _glewInfo_GL_ARB_shading_language_100();
+#endif /* GL_ARB_shading_language_100 */
+#ifdef GL_ARB_shading_language_420pack
+ _glewInfo_GL_ARB_shading_language_420pack();
+#endif /* GL_ARB_shading_language_420pack */
+#ifdef GL_ARB_shading_language_include
+ _glewInfo_GL_ARB_shading_language_include();
+#endif /* GL_ARB_shading_language_include */
+#ifdef GL_ARB_shading_language_packing
+ _glewInfo_GL_ARB_shading_language_packing();
+#endif /* GL_ARB_shading_language_packing */
+#ifdef GL_ARB_shadow
+ _glewInfo_GL_ARB_shadow();
+#endif /* GL_ARB_shadow */
+#ifdef GL_ARB_shadow_ambient
+ _glewInfo_GL_ARB_shadow_ambient();
+#endif /* GL_ARB_shadow_ambient */
+#ifdef GL_ARB_sparse_buffer
+ _glewInfo_GL_ARB_sparse_buffer();
+#endif /* GL_ARB_sparse_buffer */
+#ifdef GL_ARB_sparse_texture
+ _glewInfo_GL_ARB_sparse_texture();
+#endif /* GL_ARB_sparse_texture */
+#ifdef GL_ARB_sparse_texture2
+ _glewInfo_GL_ARB_sparse_texture2();
+#endif /* GL_ARB_sparse_texture2 */
+#ifdef GL_ARB_sparse_texture_clamp
+ _glewInfo_GL_ARB_sparse_texture_clamp();
+#endif /* GL_ARB_sparse_texture_clamp */
+#ifdef GL_ARB_spirv_extensions
+ _glewInfo_GL_ARB_spirv_extensions();
+#endif /* GL_ARB_spirv_extensions */
+#ifdef GL_ARB_stencil_texturing
+ _glewInfo_GL_ARB_stencil_texturing();
+#endif /* GL_ARB_stencil_texturing */
+#ifdef GL_ARB_sync
+ _glewInfo_GL_ARB_sync();
+#endif /* GL_ARB_sync */
+#ifdef GL_ARB_tessellation_shader
+ _glewInfo_GL_ARB_tessellation_shader();
+#endif /* GL_ARB_tessellation_shader */
+#ifdef GL_ARB_texture_barrier
+ _glewInfo_GL_ARB_texture_barrier();
+#endif /* GL_ARB_texture_barrier */
+#ifdef GL_ARB_texture_border_clamp
+ _glewInfo_GL_ARB_texture_border_clamp();
+#endif /* GL_ARB_texture_border_clamp */
+#ifdef GL_ARB_texture_buffer_object
+ _glewInfo_GL_ARB_texture_buffer_object();
+#endif /* GL_ARB_texture_buffer_object */
+#ifdef GL_ARB_texture_buffer_object_rgb32
+ _glewInfo_GL_ARB_texture_buffer_object_rgb32();
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+#ifdef GL_ARB_texture_buffer_range
+ _glewInfo_GL_ARB_texture_buffer_range();
+#endif /* GL_ARB_texture_buffer_range */
+#ifdef GL_ARB_texture_compression
+ _glewInfo_GL_ARB_texture_compression();
+#endif /* GL_ARB_texture_compression */
+#ifdef GL_ARB_texture_compression_bptc
+ _glewInfo_GL_ARB_texture_compression_bptc();
+#endif /* GL_ARB_texture_compression_bptc */
+#ifdef GL_ARB_texture_compression_rgtc
+ _glewInfo_GL_ARB_texture_compression_rgtc();
+#endif /* GL_ARB_texture_compression_rgtc */
+#ifdef GL_ARB_texture_cube_map
+ _glewInfo_GL_ARB_texture_cube_map();
+#endif /* GL_ARB_texture_cube_map */
+#ifdef GL_ARB_texture_cube_map_array
+ _glewInfo_GL_ARB_texture_cube_map_array();
+#endif /* GL_ARB_texture_cube_map_array */
+#ifdef GL_ARB_texture_env_add
+ _glewInfo_GL_ARB_texture_env_add();
+#endif /* GL_ARB_texture_env_add */
+#ifdef GL_ARB_texture_env_combine
+ _glewInfo_GL_ARB_texture_env_combine();
+#endif /* GL_ARB_texture_env_combine */
+#ifdef GL_ARB_texture_env_crossbar
+ _glewInfo_GL_ARB_texture_env_crossbar();
+#endif /* GL_ARB_texture_env_crossbar */
+#ifdef GL_ARB_texture_env_dot3
+ _glewInfo_GL_ARB_texture_env_dot3();
+#endif /* GL_ARB_texture_env_dot3 */
+#ifdef GL_ARB_texture_filter_anisotropic
+ _glewInfo_GL_ARB_texture_filter_anisotropic();
+#endif /* GL_ARB_texture_filter_anisotropic */
+#ifdef GL_ARB_texture_filter_minmax
+ _glewInfo_GL_ARB_texture_filter_minmax();
+#endif /* GL_ARB_texture_filter_minmax */
+#ifdef GL_ARB_texture_float
+ _glewInfo_GL_ARB_texture_float();
+#endif /* GL_ARB_texture_float */
+#ifdef GL_ARB_texture_gather
+ _glewInfo_GL_ARB_texture_gather();
+#endif /* GL_ARB_texture_gather */
+#ifdef GL_ARB_texture_mirror_clamp_to_edge
+ _glewInfo_GL_ARB_texture_mirror_clamp_to_edge();
+#endif /* GL_ARB_texture_mirror_clamp_to_edge */
+#ifdef GL_ARB_texture_mirrored_repeat
+ _glewInfo_GL_ARB_texture_mirrored_repeat();
+#endif /* GL_ARB_texture_mirrored_repeat */
+#ifdef GL_ARB_texture_multisample
+ _glewInfo_GL_ARB_texture_multisample();
+#endif /* GL_ARB_texture_multisample */
+#ifdef GL_ARB_texture_non_power_of_two
+ _glewInfo_GL_ARB_texture_non_power_of_two();
+#endif /* GL_ARB_texture_non_power_of_two */
+#ifdef GL_ARB_texture_query_levels
+ _glewInfo_GL_ARB_texture_query_levels();
+#endif /* GL_ARB_texture_query_levels */
+#ifdef GL_ARB_texture_query_lod
+ _glewInfo_GL_ARB_texture_query_lod();
+#endif /* GL_ARB_texture_query_lod */
+#ifdef GL_ARB_texture_rectangle
+ _glewInfo_GL_ARB_texture_rectangle();
+#endif /* GL_ARB_texture_rectangle */
+#ifdef GL_ARB_texture_rg
+ _glewInfo_GL_ARB_texture_rg();
+#endif /* GL_ARB_texture_rg */
+#ifdef GL_ARB_texture_rgb10_a2ui
+ _glewInfo_GL_ARB_texture_rgb10_a2ui();
+#endif /* GL_ARB_texture_rgb10_a2ui */
+#ifdef GL_ARB_texture_stencil8
+ _glewInfo_GL_ARB_texture_stencil8();
+#endif /* GL_ARB_texture_stencil8 */
+#ifdef GL_ARB_texture_storage
+ _glewInfo_GL_ARB_texture_storage();
+#endif /* GL_ARB_texture_storage */
+#ifdef GL_ARB_texture_storage_multisample
+ _glewInfo_GL_ARB_texture_storage_multisample();
+#endif /* GL_ARB_texture_storage_multisample */
+#ifdef GL_ARB_texture_swizzle
+ _glewInfo_GL_ARB_texture_swizzle();
+#endif /* GL_ARB_texture_swizzle */
+#ifdef GL_ARB_texture_view
+ _glewInfo_GL_ARB_texture_view();
+#endif /* GL_ARB_texture_view */
+#ifdef GL_ARB_timer_query
+ _glewInfo_GL_ARB_timer_query();
+#endif /* GL_ARB_timer_query */
+#ifdef GL_ARB_transform_feedback2
+ _glewInfo_GL_ARB_transform_feedback2();
+#endif /* GL_ARB_transform_feedback2 */
+#ifdef GL_ARB_transform_feedback3
+ _glewInfo_GL_ARB_transform_feedback3();
+#endif /* GL_ARB_transform_feedback3 */
+#ifdef GL_ARB_transform_feedback_instanced
+ _glewInfo_GL_ARB_transform_feedback_instanced();
+#endif /* GL_ARB_transform_feedback_instanced */
+#ifdef GL_ARB_transform_feedback_overflow_query
+ _glewInfo_GL_ARB_transform_feedback_overflow_query();
+#endif /* GL_ARB_transform_feedback_overflow_query */
+#ifdef GL_ARB_transpose_matrix
+ _glewInfo_GL_ARB_transpose_matrix();
+#endif /* GL_ARB_transpose_matrix */
+#ifdef GL_ARB_uniform_buffer_object
+ _glewInfo_GL_ARB_uniform_buffer_object();
+#endif /* GL_ARB_uniform_buffer_object */
+#ifdef GL_ARB_vertex_array_bgra
+ _glewInfo_GL_ARB_vertex_array_bgra();
+#endif /* GL_ARB_vertex_array_bgra */
+#ifdef GL_ARB_vertex_array_object
+ _glewInfo_GL_ARB_vertex_array_object();
+#endif /* GL_ARB_vertex_array_object */
+#ifdef GL_ARB_vertex_attrib_64bit
+ _glewInfo_GL_ARB_vertex_attrib_64bit();
+#endif /* GL_ARB_vertex_attrib_64bit */
+#ifdef GL_ARB_vertex_attrib_binding
+ _glewInfo_GL_ARB_vertex_attrib_binding();
+#endif /* GL_ARB_vertex_attrib_binding */
+#ifdef GL_ARB_vertex_blend
+ _glewInfo_GL_ARB_vertex_blend();
+#endif /* GL_ARB_vertex_blend */
+#ifdef GL_ARB_vertex_buffer_object
+ _glewInfo_GL_ARB_vertex_buffer_object();
+#endif /* GL_ARB_vertex_buffer_object */
+#ifdef GL_ARB_vertex_program
+ _glewInfo_GL_ARB_vertex_program();
+#endif /* GL_ARB_vertex_program */
+#ifdef GL_ARB_vertex_shader
+ _glewInfo_GL_ARB_vertex_shader();
+#endif /* GL_ARB_vertex_shader */
+#ifdef GL_ARB_vertex_type_10f_11f_11f_rev
+ _glewInfo_GL_ARB_vertex_type_10f_11f_11f_rev();
+#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+ _glewInfo_GL_ARB_vertex_type_2_10_10_10_rev();
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+#ifdef GL_ARB_viewport_array
+ _glewInfo_GL_ARB_viewport_array();
+#endif /* GL_ARB_viewport_array */
+#ifdef GL_ARB_window_pos
+ _glewInfo_GL_ARB_window_pos();
+#endif /* GL_ARB_window_pos */
+#ifdef GL_ARM_mali_program_binary
+ _glewInfo_GL_ARM_mali_program_binary();
+#endif /* GL_ARM_mali_program_binary */
+#ifdef GL_ARM_mali_shader_binary
+ _glewInfo_GL_ARM_mali_shader_binary();
+#endif /* GL_ARM_mali_shader_binary */
+#ifdef GL_ARM_rgba8
+ _glewInfo_GL_ARM_rgba8();
+#endif /* GL_ARM_rgba8 */
+#ifdef GL_ARM_shader_framebuffer_fetch
+ _glewInfo_GL_ARM_shader_framebuffer_fetch();
+#endif /* GL_ARM_shader_framebuffer_fetch */
+#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil
+ _glewInfo_GL_ARM_shader_framebuffer_fetch_depth_stencil();
+#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */
+#ifdef GL_ARM_texture_unnormalized_coordinates
+ _glewInfo_GL_ARM_texture_unnormalized_coordinates();
+#endif /* GL_ARM_texture_unnormalized_coordinates */
+#ifdef GL_ATIX_point_sprites
+ _glewInfo_GL_ATIX_point_sprites();
+#endif /* GL_ATIX_point_sprites */
+#ifdef GL_ATIX_texture_env_combine3
+ _glewInfo_GL_ATIX_texture_env_combine3();
+#endif /* GL_ATIX_texture_env_combine3 */
+#ifdef GL_ATIX_texture_env_route
+ _glewInfo_GL_ATIX_texture_env_route();
+#endif /* GL_ATIX_texture_env_route */
+#ifdef GL_ATIX_vertex_shader_output_point_size
+ _glewInfo_GL_ATIX_vertex_shader_output_point_size();
+#endif /* GL_ATIX_vertex_shader_output_point_size */
+#ifdef GL_ATI_draw_buffers
+ _glewInfo_GL_ATI_draw_buffers();
+#endif /* GL_ATI_draw_buffers */
+#ifdef GL_ATI_element_array
+ _glewInfo_GL_ATI_element_array();
+#endif /* GL_ATI_element_array */
+#ifdef GL_ATI_envmap_bumpmap
+ _glewInfo_GL_ATI_envmap_bumpmap();
+#endif /* GL_ATI_envmap_bumpmap */
+#ifdef GL_ATI_fragment_shader
+ _glewInfo_GL_ATI_fragment_shader();
+#endif /* GL_ATI_fragment_shader */
+#ifdef GL_ATI_map_object_buffer
+ _glewInfo_GL_ATI_map_object_buffer();
+#endif /* GL_ATI_map_object_buffer */
+#ifdef GL_ATI_meminfo
+ _glewInfo_GL_ATI_meminfo();
+#endif /* GL_ATI_meminfo */
+#ifdef GL_ATI_pn_triangles
+ _glewInfo_GL_ATI_pn_triangles();
+#endif /* GL_ATI_pn_triangles */
+#ifdef GL_ATI_separate_stencil
+ _glewInfo_GL_ATI_separate_stencil();
+#endif /* GL_ATI_separate_stencil */
+#ifdef GL_ATI_shader_texture_lod
+ _glewInfo_GL_ATI_shader_texture_lod();
+#endif /* GL_ATI_shader_texture_lod */
+#ifdef GL_ATI_text_fragment_shader
+ _glewInfo_GL_ATI_text_fragment_shader();
+#endif /* GL_ATI_text_fragment_shader */
+#ifdef GL_ATI_texture_compression_3dc
+ _glewInfo_GL_ATI_texture_compression_3dc();
+#endif /* GL_ATI_texture_compression_3dc */
+#ifdef GL_ATI_texture_env_combine3
+ _glewInfo_GL_ATI_texture_env_combine3();
+#endif /* GL_ATI_texture_env_combine3 */
+#ifdef GL_ATI_texture_float
+ _glewInfo_GL_ATI_texture_float();
+#endif /* GL_ATI_texture_float */
+#ifdef GL_ATI_texture_mirror_once
+ _glewInfo_GL_ATI_texture_mirror_once();
+#endif /* GL_ATI_texture_mirror_once */
+#ifdef GL_ATI_vertex_array_object
+ _glewInfo_GL_ATI_vertex_array_object();
+#endif /* GL_ATI_vertex_array_object */
+#ifdef GL_ATI_vertex_attrib_array_object
+ _glewInfo_GL_ATI_vertex_attrib_array_object();
+#endif /* GL_ATI_vertex_attrib_array_object */
+#ifdef GL_ATI_vertex_streams
+ _glewInfo_GL_ATI_vertex_streams();
+#endif /* GL_ATI_vertex_streams */
+#ifdef GL_DMP_program_binary
+ _glewInfo_GL_DMP_program_binary();
+#endif /* GL_DMP_program_binary */
+#ifdef GL_DMP_shader_binary
+ _glewInfo_GL_DMP_shader_binary();
+#endif /* GL_DMP_shader_binary */
+#ifdef GL_EXT_422_pixels
+ _glewInfo_GL_EXT_422_pixels();
+#endif /* GL_EXT_422_pixels */
+#ifdef GL_EXT_Cg_shader
+ _glewInfo_GL_EXT_Cg_shader();
+#endif /* GL_EXT_Cg_shader */
+#ifdef GL_EXT_EGL_image_array
+ _glewInfo_GL_EXT_EGL_image_array();
+#endif /* GL_EXT_EGL_image_array */
+#ifdef GL_EXT_EGL_image_external_wrap_modes
+ _glewInfo_GL_EXT_EGL_image_external_wrap_modes();
+#endif /* GL_EXT_EGL_image_external_wrap_modes */
+#ifdef GL_EXT_EGL_image_storage
+ _glewInfo_GL_EXT_EGL_image_storage();
+#endif /* GL_EXT_EGL_image_storage */
+#ifdef GL_EXT_EGL_image_storage_compression
+ _glewInfo_GL_EXT_EGL_image_storage_compression();
+#endif /* GL_EXT_EGL_image_storage_compression */
+#ifdef GL_EXT_EGL_sync
+ _glewInfo_GL_EXT_EGL_sync();
+#endif /* GL_EXT_EGL_sync */
+#ifdef GL_EXT_YUV_target
+ _glewInfo_GL_EXT_YUV_target();
+#endif /* GL_EXT_YUV_target */
+#ifdef GL_EXT_abgr
+ _glewInfo_GL_EXT_abgr();
+#endif /* GL_EXT_abgr */
+#ifdef GL_EXT_base_instance
+ _glewInfo_GL_EXT_base_instance();
+#endif /* GL_EXT_base_instance */
+#ifdef GL_EXT_bgra
+ _glewInfo_GL_EXT_bgra();
+#endif /* GL_EXT_bgra */
+#ifdef GL_EXT_bindable_uniform
+ _glewInfo_GL_EXT_bindable_uniform();
+#endif /* GL_EXT_bindable_uniform */
+#ifdef GL_EXT_blend_color
+ _glewInfo_GL_EXT_blend_color();
+#endif /* GL_EXT_blend_color */
+#ifdef GL_EXT_blend_equation_separate
+ _glewInfo_GL_EXT_blend_equation_separate();
+#endif /* GL_EXT_blend_equation_separate */
+#ifdef GL_EXT_blend_func_extended
+ _glewInfo_GL_EXT_blend_func_extended();
+#endif /* GL_EXT_blend_func_extended */
+#ifdef GL_EXT_blend_func_separate
+ _glewInfo_GL_EXT_blend_func_separate();
+#endif /* GL_EXT_blend_func_separate */
+#ifdef GL_EXT_blend_logic_op
+ _glewInfo_GL_EXT_blend_logic_op();
+#endif /* GL_EXT_blend_logic_op */
+#ifdef GL_EXT_blend_minmax
+ _glewInfo_GL_EXT_blend_minmax();
+#endif /* GL_EXT_blend_minmax */
+#ifdef GL_EXT_blend_subtract
+ _glewInfo_GL_EXT_blend_subtract();
+#endif /* GL_EXT_blend_subtract */
+#ifdef GL_EXT_buffer_storage
+ _glewInfo_GL_EXT_buffer_storage();
+#endif /* GL_EXT_buffer_storage */
+#ifdef GL_EXT_clear_texture
+ _glewInfo_GL_EXT_clear_texture();
+#endif /* GL_EXT_clear_texture */
+#ifdef GL_EXT_clip_control
+ _glewInfo_GL_EXT_clip_control();
+#endif /* GL_EXT_clip_control */
+#ifdef GL_EXT_clip_cull_distance
+ _glewInfo_GL_EXT_clip_cull_distance();
+#endif /* GL_EXT_clip_cull_distance */
+#ifdef GL_EXT_clip_volume_hint
+ _glewInfo_GL_EXT_clip_volume_hint();
+#endif /* GL_EXT_clip_volume_hint */
+#ifdef GL_EXT_cmyka
+ _glewInfo_GL_EXT_cmyka();
+#endif /* GL_EXT_cmyka */
+#ifdef GL_EXT_color_buffer_float
+ _glewInfo_GL_EXT_color_buffer_float();
+#endif /* GL_EXT_color_buffer_float */
+#ifdef GL_EXT_color_buffer_half_float
+ _glewInfo_GL_EXT_color_buffer_half_float();
+#endif /* GL_EXT_color_buffer_half_float */
+#ifdef GL_EXT_color_subtable
+ _glewInfo_GL_EXT_color_subtable();
+#endif /* GL_EXT_color_subtable */
+#ifdef GL_EXT_compiled_vertex_array
+ _glewInfo_GL_EXT_compiled_vertex_array();
+#endif /* GL_EXT_compiled_vertex_array */
+#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture
+ _glewInfo_GL_EXT_compressed_ETC1_RGB8_sub_texture();
+#endif /* GL_EXT_compressed_ETC1_RGB8_sub_texture */
+#ifdef GL_EXT_conservative_depth
+ _glewInfo_GL_EXT_conservative_depth();
+#endif /* GL_EXT_conservative_depth */
+#ifdef GL_EXT_convolution
+ _glewInfo_GL_EXT_convolution();
+#endif /* GL_EXT_convolution */
+#ifdef GL_EXT_coordinate_frame
+ _glewInfo_GL_EXT_coordinate_frame();
+#endif /* GL_EXT_coordinate_frame */
+#ifdef GL_EXT_copy_image
+ _glewInfo_GL_EXT_copy_image();
+#endif /* GL_EXT_copy_image */
+#ifdef GL_EXT_copy_texture
+ _glewInfo_GL_EXT_copy_texture();
+#endif /* GL_EXT_copy_texture */
+#ifdef GL_EXT_cull_vertex
+ _glewInfo_GL_EXT_cull_vertex();
+#endif /* GL_EXT_cull_vertex */
+#ifdef GL_EXT_debug_label
+ _glewInfo_GL_EXT_debug_label();
+#endif /* GL_EXT_debug_label */
+#ifdef GL_EXT_debug_marker
+ _glewInfo_GL_EXT_debug_marker();
+#endif /* GL_EXT_debug_marker */
+#ifdef GL_EXT_depth_bounds_test
+ _glewInfo_GL_EXT_depth_bounds_test();
+#endif /* GL_EXT_depth_bounds_test */
+#ifdef GL_EXT_depth_clamp
+ _glewInfo_GL_EXT_depth_clamp();
+#endif /* GL_EXT_depth_clamp */
+#ifdef GL_EXT_direct_state_access
+ _glewInfo_GL_EXT_direct_state_access();
+#endif /* GL_EXT_direct_state_access */
+#ifdef GL_EXT_discard_framebuffer
+ _glewInfo_GL_EXT_discard_framebuffer();
+#endif /* GL_EXT_discard_framebuffer */
+#ifdef GL_EXT_disjoint_timer_query
+ _glewInfo_GL_EXT_disjoint_timer_query();
+#endif /* GL_EXT_disjoint_timer_query */
+#ifdef GL_EXT_draw_buffers
+ _glewInfo_GL_EXT_draw_buffers();
+#endif /* GL_EXT_draw_buffers */
+#ifdef GL_EXT_draw_buffers2
+ _glewInfo_GL_EXT_draw_buffers2();
+#endif /* GL_EXT_draw_buffers2 */
+#ifdef GL_EXT_draw_buffers_indexed
+ _glewInfo_GL_EXT_draw_buffers_indexed();
+#endif /* GL_EXT_draw_buffers_indexed */
+#ifdef GL_EXT_draw_elements_base_vertex
+ _glewInfo_GL_EXT_draw_elements_base_vertex();
+#endif /* GL_EXT_draw_elements_base_vertex */
+#ifdef GL_EXT_draw_instanced
+ _glewInfo_GL_EXT_draw_instanced();
+#endif /* GL_EXT_draw_instanced */
+#ifdef GL_EXT_draw_range_elements
+ _glewInfo_GL_EXT_draw_range_elements();
+#endif /* GL_EXT_draw_range_elements */
+#ifdef GL_EXT_draw_transform_feedback
+ _glewInfo_GL_EXT_draw_transform_feedback();
+#endif /* GL_EXT_draw_transform_feedback */
+#ifdef GL_EXT_external_buffer
+ _glewInfo_GL_EXT_external_buffer();
+#endif /* GL_EXT_external_buffer */
+#ifdef GL_EXT_float_blend
+ _glewInfo_GL_EXT_float_blend();
+#endif /* GL_EXT_float_blend */
+#ifdef GL_EXT_fog_coord
+ _glewInfo_GL_EXT_fog_coord();
+#endif /* GL_EXT_fog_coord */
+#ifdef GL_EXT_frag_depth
+ _glewInfo_GL_EXT_frag_depth();
+#endif /* GL_EXT_frag_depth */
+#ifdef GL_EXT_fragment_lighting
+ _glewInfo_GL_EXT_fragment_lighting();
+#endif /* GL_EXT_fragment_lighting */
+#ifdef GL_EXT_framebuffer_blit
+ _glewInfo_GL_EXT_framebuffer_blit();
+#endif /* GL_EXT_framebuffer_blit */
+#ifdef GL_EXT_framebuffer_multisample
+ _glewInfo_GL_EXT_framebuffer_multisample();
+#endif /* GL_EXT_framebuffer_multisample */
+#ifdef GL_EXT_framebuffer_multisample_blit_scaled
+ _glewInfo_GL_EXT_framebuffer_multisample_blit_scaled();
+#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
+#ifdef GL_EXT_framebuffer_object
+ _glewInfo_GL_EXT_framebuffer_object();
+#endif /* GL_EXT_framebuffer_object */
+#ifdef GL_EXT_framebuffer_sRGB
+ _glewInfo_GL_EXT_framebuffer_sRGB();
+#endif /* GL_EXT_framebuffer_sRGB */
+#ifdef GL_EXT_geometry_point_size
+ _glewInfo_GL_EXT_geometry_point_size();
+#endif /* GL_EXT_geometry_point_size */
+#ifdef GL_EXT_geometry_shader
+ _glewInfo_GL_EXT_geometry_shader();
+#endif /* GL_EXT_geometry_shader */
+#ifdef GL_EXT_geometry_shader4
+ _glewInfo_GL_EXT_geometry_shader4();
+#endif /* GL_EXT_geometry_shader4 */
+#ifdef GL_EXT_gpu_program_parameters
+ _glewInfo_GL_EXT_gpu_program_parameters();
+#endif /* GL_EXT_gpu_program_parameters */
+#ifdef GL_EXT_gpu_shader4
+ _glewInfo_GL_EXT_gpu_shader4();
+#endif /* GL_EXT_gpu_shader4 */
+#ifdef GL_EXT_gpu_shader5
+ _glewInfo_GL_EXT_gpu_shader5();
+#endif /* GL_EXT_gpu_shader5 */
+#ifdef GL_EXT_histogram
+ _glewInfo_GL_EXT_histogram();
+#endif /* GL_EXT_histogram */
+#ifdef GL_EXT_index_array_formats
+ _glewInfo_GL_EXT_index_array_formats();
+#endif /* GL_EXT_index_array_formats */
+#ifdef GL_EXT_index_func
+ _glewInfo_GL_EXT_index_func();
+#endif /* GL_EXT_index_func */
+#ifdef GL_EXT_index_material
+ _glewInfo_GL_EXT_index_material();
+#endif /* GL_EXT_index_material */
+#ifdef GL_EXT_index_texture
+ _glewInfo_GL_EXT_index_texture();
+#endif /* GL_EXT_index_texture */
+#ifdef GL_EXT_instanced_arrays
+ _glewInfo_GL_EXT_instanced_arrays();
+#endif /* GL_EXT_instanced_arrays */
+#ifdef GL_EXT_light_texture
+ _glewInfo_GL_EXT_light_texture();
+#endif /* GL_EXT_light_texture */
+#ifdef GL_EXT_map_buffer_range
+ _glewInfo_GL_EXT_map_buffer_range();
+#endif /* GL_EXT_map_buffer_range */
+#ifdef GL_EXT_memory_object
+ _glewInfo_GL_EXT_memory_object();
+#endif /* GL_EXT_memory_object */
+#ifdef GL_EXT_memory_object_fd
+ _glewInfo_GL_EXT_memory_object_fd();
+#endif /* GL_EXT_memory_object_fd */
+#ifdef GL_EXT_memory_object_win32
+ _glewInfo_GL_EXT_memory_object_win32();
+#endif /* GL_EXT_memory_object_win32 */
+#ifdef GL_EXT_misc_attribute
+ _glewInfo_GL_EXT_misc_attribute();
+#endif /* GL_EXT_misc_attribute */
+#ifdef GL_EXT_multi_draw_arrays
+ _glewInfo_GL_EXT_multi_draw_arrays();
+#endif /* GL_EXT_multi_draw_arrays */
+#ifdef GL_EXT_multi_draw_indirect
+ _glewInfo_GL_EXT_multi_draw_indirect();
+#endif /* GL_EXT_multi_draw_indirect */
+#ifdef GL_EXT_multiple_textures
+ _glewInfo_GL_EXT_multiple_textures();
+#endif /* GL_EXT_multiple_textures */
+#ifdef GL_EXT_multisample
+ _glewInfo_GL_EXT_multisample();
+#endif /* GL_EXT_multisample */
+#ifdef GL_EXT_multisample_compatibility
+ _glewInfo_GL_EXT_multisample_compatibility();
+#endif /* GL_EXT_multisample_compatibility */
+#ifdef GL_EXT_multisampled_render_to_texture
+ _glewInfo_GL_EXT_multisampled_render_to_texture();
+#endif /* GL_EXT_multisampled_render_to_texture */
+#ifdef GL_EXT_multisampled_render_to_texture2
+ _glewInfo_GL_EXT_multisampled_render_to_texture2();
+#endif /* GL_EXT_multisampled_render_to_texture2 */
+#ifdef GL_EXT_multiview_draw_buffers
+ _glewInfo_GL_EXT_multiview_draw_buffers();
+#endif /* GL_EXT_multiview_draw_buffers */
+#ifdef GL_EXT_multiview_tessellation_geometry_shader
+ _glewInfo_GL_EXT_multiview_tessellation_geometry_shader();
+#endif /* GL_EXT_multiview_tessellation_geometry_shader */
+#ifdef GL_EXT_multiview_texture_multisample
+ _glewInfo_GL_EXT_multiview_texture_multisample();
+#endif /* GL_EXT_multiview_texture_multisample */
+#ifdef GL_EXT_multiview_timer_query
+ _glewInfo_GL_EXT_multiview_timer_query();
+#endif /* GL_EXT_multiview_timer_query */
+#ifdef GL_EXT_occlusion_query_boolean
+ _glewInfo_GL_EXT_occlusion_query_boolean();
+#endif /* GL_EXT_occlusion_query_boolean */
+#ifdef GL_EXT_packed_depth_stencil
+ _glewInfo_GL_EXT_packed_depth_stencil();
+#endif /* GL_EXT_packed_depth_stencil */
+#ifdef GL_EXT_packed_float
+ _glewInfo_GL_EXT_packed_float();
+#endif /* GL_EXT_packed_float */
+#ifdef GL_EXT_packed_pixels
+ _glewInfo_GL_EXT_packed_pixels();
+#endif /* GL_EXT_packed_pixels */
+#ifdef GL_EXT_paletted_texture
+ _glewInfo_GL_EXT_paletted_texture();
+#endif /* GL_EXT_paletted_texture */
+#ifdef GL_EXT_pixel_buffer_object
+ _glewInfo_GL_EXT_pixel_buffer_object();
+#endif /* GL_EXT_pixel_buffer_object */
+#ifdef GL_EXT_pixel_transform
+ _glewInfo_GL_EXT_pixel_transform();
+#endif /* GL_EXT_pixel_transform */
+#ifdef GL_EXT_pixel_transform_color_table
+ _glewInfo_GL_EXT_pixel_transform_color_table();
+#endif /* GL_EXT_pixel_transform_color_table */
+#ifdef GL_EXT_point_parameters
+ _glewInfo_GL_EXT_point_parameters();
+#endif /* GL_EXT_point_parameters */
+#ifdef GL_EXT_polygon_offset
+ _glewInfo_GL_EXT_polygon_offset();
+#endif /* GL_EXT_polygon_offset */
+#ifdef GL_EXT_polygon_offset_clamp
+ _glewInfo_GL_EXT_polygon_offset_clamp();
+#endif /* GL_EXT_polygon_offset_clamp */
+#ifdef GL_EXT_post_depth_coverage
+ _glewInfo_GL_EXT_post_depth_coverage();
+#endif /* GL_EXT_post_depth_coverage */
+#ifdef GL_EXT_primitive_bounding_box
+ _glewInfo_GL_EXT_primitive_bounding_box();
+#endif /* GL_EXT_primitive_bounding_box */
+#ifdef GL_EXT_protected_textures
+ _glewInfo_GL_EXT_protected_textures();
+#endif /* GL_EXT_protected_textures */
+#ifdef GL_EXT_provoking_vertex
+ _glewInfo_GL_EXT_provoking_vertex();
+#endif /* GL_EXT_provoking_vertex */
+#ifdef GL_EXT_pvrtc_sRGB
+ _glewInfo_GL_EXT_pvrtc_sRGB();
+#endif /* GL_EXT_pvrtc_sRGB */
+#ifdef GL_EXT_raster_multisample
+ _glewInfo_GL_EXT_raster_multisample();
+#endif /* GL_EXT_raster_multisample */
+#ifdef GL_EXT_read_format_bgra
+ _glewInfo_GL_EXT_read_format_bgra();
+#endif /* GL_EXT_read_format_bgra */
+#ifdef GL_EXT_render_snorm
+ _glewInfo_GL_EXT_render_snorm();
+#endif /* GL_EXT_render_snorm */
+#ifdef GL_EXT_rescale_normal
+ _glewInfo_GL_EXT_rescale_normal();
+#endif /* GL_EXT_rescale_normal */
+#ifdef GL_EXT_robustness
+ _glewInfo_GL_EXT_robustness();
+#endif /* GL_EXT_robustness */
+#ifdef GL_EXT_sRGB
+ _glewInfo_GL_EXT_sRGB();
+#endif /* GL_EXT_sRGB */
+#ifdef GL_EXT_sRGB_write_control
+ _glewInfo_GL_EXT_sRGB_write_control();
+#endif /* GL_EXT_sRGB_write_control */
+#ifdef GL_EXT_scene_marker
+ _glewInfo_GL_EXT_scene_marker();
+#endif /* GL_EXT_scene_marker */
+#ifdef GL_EXT_secondary_color
+ _glewInfo_GL_EXT_secondary_color();
+#endif /* GL_EXT_secondary_color */
+#ifdef GL_EXT_semaphore
+ _glewInfo_GL_EXT_semaphore();
+#endif /* GL_EXT_semaphore */
+#ifdef GL_EXT_semaphore_fd
+ _glewInfo_GL_EXT_semaphore_fd();
+#endif /* GL_EXT_semaphore_fd */
+#ifdef GL_EXT_semaphore_win32
+ _glewInfo_GL_EXT_semaphore_win32();
+#endif /* GL_EXT_semaphore_win32 */
+#ifdef GL_EXT_separate_depth_stencil
+ _glewInfo_GL_EXT_separate_depth_stencil();
+#endif /* GL_EXT_separate_depth_stencil */
+#ifdef GL_EXT_separate_shader_objects
+ _glewInfo_GL_EXT_separate_shader_objects();
+#endif /* GL_EXT_separate_shader_objects */
+#ifdef GL_EXT_separate_specular_color
+ _glewInfo_GL_EXT_separate_specular_color();
+#endif /* GL_EXT_separate_specular_color */
+#ifdef GL_EXT_shader_framebuffer_fetch
+ _glewInfo_GL_EXT_shader_framebuffer_fetch();
+#endif /* GL_EXT_shader_framebuffer_fetch */
+#ifdef GL_EXT_shader_framebuffer_fetch_non_coherent
+ _glewInfo_GL_EXT_shader_framebuffer_fetch_non_coherent();
+#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */
+#ifdef GL_EXT_shader_group_vote
+ _glewInfo_GL_EXT_shader_group_vote();
+#endif /* GL_EXT_shader_group_vote */
+#ifdef GL_EXT_shader_image_load_formatted
+ _glewInfo_GL_EXT_shader_image_load_formatted();
+#endif /* GL_EXT_shader_image_load_formatted */
+#ifdef GL_EXT_shader_image_load_store
+ _glewInfo_GL_EXT_shader_image_load_store();
+#endif /* GL_EXT_shader_image_load_store */
+#ifdef GL_EXT_shader_implicit_conversions
+ _glewInfo_GL_EXT_shader_implicit_conversions();
+#endif /* GL_EXT_shader_implicit_conversions */
+#ifdef GL_EXT_shader_integer_mix
+ _glewInfo_GL_EXT_shader_integer_mix();
+#endif /* GL_EXT_shader_integer_mix */
+#ifdef GL_EXT_shader_io_blocks
+ _glewInfo_GL_EXT_shader_io_blocks();
+#endif /* GL_EXT_shader_io_blocks */
+#ifdef GL_EXT_shader_non_constant_global_initializers
+ _glewInfo_GL_EXT_shader_non_constant_global_initializers();
+#endif /* GL_EXT_shader_non_constant_global_initializers */
+#ifdef GL_EXT_shader_pixel_local_storage
+ _glewInfo_GL_EXT_shader_pixel_local_storage();
+#endif /* GL_EXT_shader_pixel_local_storage */
+#ifdef GL_EXT_shader_pixel_local_storage2
+ _glewInfo_GL_EXT_shader_pixel_local_storage2();
+#endif /* GL_EXT_shader_pixel_local_storage2 */
+#ifdef GL_EXT_shader_samples_identical
+ _glewInfo_GL_EXT_shader_samples_identical();
+#endif /* GL_EXT_shader_samples_identical */
+#ifdef GL_EXT_shader_texture_lod
+ _glewInfo_GL_EXT_shader_texture_lod();
+#endif /* GL_EXT_shader_texture_lod */
+#ifdef GL_EXT_shadow_funcs
+ _glewInfo_GL_EXT_shadow_funcs();
+#endif /* GL_EXT_shadow_funcs */
+#ifdef GL_EXT_shadow_samplers
+ _glewInfo_GL_EXT_shadow_samplers();
+#endif /* GL_EXT_shadow_samplers */
+#ifdef GL_EXT_shared_texture_palette
+ _glewInfo_GL_EXT_shared_texture_palette();
+#endif /* GL_EXT_shared_texture_palette */
+#ifdef GL_EXT_sparse_texture
+ _glewInfo_GL_EXT_sparse_texture();
+#endif /* GL_EXT_sparse_texture */
+#ifdef GL_EXT_sparse_texture2
+ _glewInfo_GL_EXT_sparse_texture2();
+#endif /* GL_EXT_sparse_texture2 */
+#ifdef GL_EXT_static_vertex_array
+ _glewInfo_GL_EXT_static_vertex_array();
+#endif /* GL_EXT_static_vertex_array */
+#ifdef GL_EXT_stencil_clear_tag
+ _glewInfo_GL_EXT_stencil_clear_tag();
+#endif /* GL_EXT_stencil_clear_tag */
+#ifdef GL_EXT_stencil_two_side
+ _glewInfo_GL_EXT_stencil_two_side();
+#endif /* GL_EXT_stencil_two_side */
+#ifdef GL_EXT_stencil_wrap
+ _glewInfo_GL_EXT_stencil_wrap();
+#endif /* GL_EXT_stencil_wrap */
+#ifdef GL_EXT_subtexture
+ _glewInfo_GL_EXT_subtexture();
+#endif /* GL_EXT_subtexture */
+#ifdef GL_EXT_tessellation_point_size
+ _glewInfo_GL_EXT_tessellation_point_size();
+#endif /* GL_EXT_tessellation_point_size */
+#ifdef GL_EXT_tessellation_shader
+ _glewInfo_GL_EXT_tessellation_shader();
+#endif /* GL_EXT_tessellation_shader */
+#ifdef GL_EXT_texture
+ _glewInfo_GL_EXT_texture();
+#endif /* GL_EXT_texture */
+#ifdef GL_EXT_texture3D
+ _glewInfo_GL_EXT_texture3D();
+#endif /* GL_EXT_texture3D */
+#ifdef GL_EXT_texture_array
+ _glewInfo_GL_EXT_texture_array();
+#endif /* GL_EXT_texture_array */
+#ifdef GL_EXT_texture_border_clamp
+ _glewInfo_GL_EXT_texture_border_clamp();
+#endif /* GL_EXT_texture_border_clamp */
+#ifdef GL_EXT_texture_buffer
+ _glewInfo_GL_EXT_texture_buffer();
+#endif /* GL_EXT_texture_buffer */
+#ifdef GL_EXT_texture_buffer_object
+ _glewInfo_GL_EXT_texture_buffer_object();
+#endif /* GL_EXT_texture_buffer_object */
+#ifdef GL_EXT_texture_compression_astc_decode_mode
+ _glewInfo_GL_EXT_texture_compression_astc_decode_mode();
+#endif /* GL_EXT_texture_compression_astc_decode_mode */
+#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5
+ _glewInfo_GL_EXT_texture_compression_astc_decode_mode_rgb9e5();
+#endif /* GL_EXT_texture_compression_astc_decode_mode_rgb9e5 */
+#ifdef GL_EXT_texture_compression_bptc
+ _glewInfo_GL_EXT_texture_compression_bptc();
+#endif /* GL_EXT_texture_compression_bptc */
+#ifdef GL_EXT_texture_compression_dxt1
+ _glewInfo_GL_EXT_texture_compression_dxt1();
+#endif /* GL_EXT_texture_compression_dxt1 */
+#ifdef GL_EXT_texture_compression_latc
+ _glewInfo_GL_EXT_texture_compression_latc();
+#endif /* GL_EXT_texture_compression_latc */
+#ifdef GL_EXT_texture_compression_rgtc
+ _glewInfo_GL_EXT_texture_compression_rgtc();
+#endif /* GL_EXT_texture_compression_rgtc */
+#ifdef GL_EXT_texture_compression_s3tc
+ _glewInfo_GL_EXT_texture_compression_s3tc();
+#endif /* GL_EXT_texture_compression_s3tc */
+#ifdef GL_EXT_texture_compression_s3tc_srgb
+ _glewInfo_GL_EXT_texture_compression_s3tc_srgb();
+#endif /* GL_EXT_texture_compression_s3tc_srgb */
+#ifdef GL_EXT_texture_cube_map
+ _glewInfo_GL_EXT_texture_cube_map();
+#endif /* GL_EXT_texture_cube_map */
+#ifdef GL_EXT_texture_cube_map_array
+ _glewInfo_GL_EXT_texture_cube_map_array();
+#endif /* GL_EXT_texture_cube_map_array */
+#ifdef GL_EXT_texture_edge_clamp
+ _glewInfo_GL_EXT_texture_edge_clamp();
+#endif /* GL_EXT_texture_edge_clamp */
+#ifdef GL_EXT_texture_env
+ _glewInfo_GL_EXT_texture_env();
+#endif /* GL_EXT_texture_env */
+#ifdef GL_EXT_texture_env_add
+ _glewInfo_GL_EXT_texture_env_add();
+#endif /* GL_EXT_texture_env_add */
+#ifdef GL_EXT_texture_env_combine
+ _glewInfo_GL_EXT_texture_env_combine();
+#endif /* GL_EXT_texture_env_combine */
+#ifdef GL_EXT_texture_env_dot3
+ _glewInfo_GL_EXT_texture_env_dot3();
+#endif /* GL_EXT_texture_env_dot3 */
+#ifdef GL_EXT_texture_filter_anisotropic
+ _glewInfo_GL_EXT_texture_filter_anisotropic();
+#endif /* GL_EXT_texture_filter_anisotropic */
+#ifdef GL_EXT_texture_filter_minmax
+ _glewInfo_GL_EXT_texture_filter_minmax();
+#endif /* GL_EXT_texture_filter_minmax */
+#ifdef GL_EXT_texture_format_BGRA8888
+ _glewInfo_GL_EXT_texture_format_BGRA8888();
+#endif /* GL_EXT_texture_format_BGRA8888 */
+#ifdef GL_EXT_texture_format_sRGB_override
+ _glewInfo_GL_EXT_texture_format_sRGB_override();
+#endif /* GL_EXT_texture_format_sRGB_override */
+#ifdef GL_EXT_texture_integer
+ _glewInfo_GL_EXT_texture_integer();
+#endif /* GL_EXT_texture_integer */
+#ifdef GL_EXT_texture_lod_bias
+ _glewInfo_GL_EXT_texture_lod_bias();
+#endif /* GL_EXT_texture_lod_bias */
+#ifdef GL_EXT_texture_mirror_clamp
+ _glewInfo_GL_EXT_texture_mirror_clamp();
+#endif /* GL_EXT_texture_mirror_clamp */
+#ifdef GL_EXT_texture_mirror_clamp_to_edge
+ _glewInfo_GL_EXT_texture_mirror_clamp_to_edge();
+#endif /* GL_EXT_texture_mirror_clamp_to_edge */
+#ifdef GL_EXT_texture_norm16
+ _glewInfo_GL_EXT_texture_norm16();
+#endif /* GL_EXT_texture_norm16 */
+#ifdef GL_EXT_texture_object
+ _glewInfo_GL_EXT_texture_object();
+#endif /* GL_EXT_texture_object */
+#ifdef GL_EXT_texture_perturb_normal
+ _glewInfo_GL_EXT_texture_perturb_normal();
+#endif /* GL_EXT_texture_perturb_normal */
+#ifdef GL_EXT_texture_query_lod
+ _glewInfo_GL_EXT_texture_query_lod();
+#endif /* GL_EXT_texture_query_lod */
+#ifdef GL_EXT_texture_rectangle
+ _glewInfo_GL_EXT_texture_rectangle();
+#endif /* GL_EXT_texture_rectangle */
+#ifdef GL_EXT_texture_rg
+ _glewInfo_GL_EXT_texture_rg();
+#endif /* GL_EXT_texture_rg */
+#ifdef GL_EXT_texture_sRGB
+ _glewInfo_GL_EXT_texture_sRGB();
+#endif /* GL_EXT_texture_sRGB */
+#ifdef GL_EXT_texture_sRGB_R8
+ _glewInfo_GL_EXT_texture_sRGB_R8();
+#endif /* GL_EXT_texture_sRGB_R8 */
+#ifdef GL_EXT_texture_sRGB_RG8
+ _glewInfo_GL_EXT_texture_sRGB_RG8();
+#endif /* GL_EXT_texture_sRGB_RG8 */
+#ifdef GL_EXT_texture_sRGB_decode
+ _glewInfo_GL_EXT_texture_sRGB_decode();
+#endif /* GL_EXT_texture_sRGB_decode */
+#ifdef GL_EXT_texture_shadow_lod
+ _glewInfo_GL_EXT_texture_shadow_lod();
+#endif /* GL_EXT_texture_shadow_lod */
+#ifdef GL_EXT_texture_shared_exponent
+ _glewInfo_GL_EXT_texture_shared_exponent();
+#endif /* GL_EXT_texture_shared_exponent */
+#ifdef GL_EXT_texture_snorm
+ _glewInfo_GL_EXT_texture_snorm();
+#endif /* GL_EXT_texture_snorm */
+#ifdef GL_EXT_texture_storage
+ _glewInfo_GL_EXT_texture_storage();
+#endif /* GL_EXT_texture_storage */
+#ifdef GL_EXT_texture_storage_compression
+ _glewInfo_GL_EXT_texture_storage_compression();
+#endif /* GL_EXT_texture_storage_compression */
+#ifdef GL_EXT_texture_swizzle
+ _glewInfo_GL_EXT_texture_swizzle();
+#endif /* GL_EXT_texture_swizzle */
+#ifdef GL_EXT_texture_type_2_10_10_10_REV
+ _glewInfo_GL_EXT_texture_type_2_10_10_10_REV();
+#endif /* GL_EXT_texture_type_2_10_10_10_REV */
+#ifdef GL_EXT_texture_view
+ _glewInfo_GL_EXT_texture_view();
+#endif /* GL_EXT_texture_view */
+#ifdef GL_EXT_timer_query
+ _glewInfo_GL_EXT_timer_query();
+#endif /* GL_EXT_timer_query */
+#ifdef GL_EXT_transform_feedback
+ _glewInfo_GL_EXT_transform_feedback();
+#endif /* GL_EXT_transform_feedback */
+#ifdef GL_EXT_unpack_subimage
+ _glewInfo_GL_EXT_unpack_subimage();
+#endif /* GL_EXT_unpack_subimage */
+#ifdef GL_EXT_vertex_array
+ _glewInfo_GL_EXT_vertex_array();
+#endif /* GL_EXT_vertex_array */
+#ifdef GL_EXT_vertex_array_bgra
+ _glewInfo_GL_EXT_vertex_array_bgra();
+#endif /* GL_EXT_vertex_array_bgra */
+#ifdef GL_EXT_vertex_array_setXXX
+ _glewInfo_GL_EXT_vertex_array_setXXX();
+#endif /* GL_EXT_vertex_array_setXXX */
+#ifdef GL_EXT_vertex_attrib_64bit
+ _glewInfo_GL_EXT_vertex_attrib_64bit();
+#endif /* GL_EXT_vertex_attrib_64bit */
+#ifdef GL_EXT_vertex_shader
+ _glewInfo_GL_EXT_vertex_shader();
+#endif /* GL_EXT_vertex_shader */
+#ifdef GL_EXT_vertex_weighting
+ _glewInfo_GL_EXT_vertex_weighting();
+#endif /* GL_EXT_vertex_weighting */
+#ifdef GL_EXT_win32_keyed_mutex
+ _glewInfo_GL_EXT_win32_keyed_mutex();
+#endif /* GL_EXT_win32_keyed_mutex */
+#ifdef GL_EXT_window_rectangles
+ _glewInfo_GL_EXT_window_rectangles();
+#endif /* GL_EXT_window_rectangles */
+#ifdef GL_EXT_x11_sync_object
+ _glewInfo_GL_EXT_x11_sync_object();
+#endif /* GL_EXT_x11_sync_object */
+#ifdef GL_FJ_shader_binary_GCCSO
+ _glewInfo_GL_FJ_shader_binary_GCCSO();
+#endif /* GL_FJ_shader_binary_GCCSO */
+#ifdef GL_GREMEDY_frame_terminator
+ _glewInfo_GL_GREMEDY_frame_terminator();
+#endif /* GL_GREMEDY_frame_terminator */
+#ifdef GL_GREMEDY_string_marker
+ _glewInfo_GL_GREMEDY_string_marker();
+#endif /* GL_GREMEDY_string_marker */
+#ifdef GL_HP_convolution_border_modes
+ _glewInfo_GL_HP_convolution_border_modes();
+#endif /* GL_HP_convolution_border_modes */
+#ifdef GL_HP_image_transform
+ _glewInfo_GL_HP_image_transform();
+#endif /* GL_HP_image_transform */
+#ifdef GL_HP_occlusion_test
+ _glewInfo_GL_HP_occlusion_test();
+#endif /* GL_HP_occlusion_test */
+#ifdef GL_HP_texture_lighting
+ _glewInfo_GL_HP_texture_lighting();
+#endif /* GL_HP_texture_lighting */
+#ifdef GL_IBM_cull_vertex
+ _glewInfo_GL_IBM_cull_vertex();
+#endif /* GL_IBM_cull_vertex */
+#ifdef GL_IBM_multimode_draw_arrays
+ _glewInfo_GL_IBM_multimode_draw_arrays();
+#endif /* GL_IBM_multimode_draw_arrays */
+#ifdef GL_IBM_rasterpos_clip
+ _glewInfo_GL_IBM_rasterpos_clip();
+#endif /* GL_IBM_rasterpos_clip */
+#ifdef GL_IBM_static_data
+ _glewInfo_GL_IBM_static_data();
+#endif /* GL_IBM_static_data */
+#ifdef GL_IBM_texture_mirrored_repeat
+ _glewInfo_GL_IBM_texture_mirrored_repeat();
+#endif /* GL_IBM_texture_mirrored_repeat */
+#ifdef GL_IBM_vertex_array_lists
+ _glewInfo_GL_IBM_vertex_array_lists();
+#endif /* GL_IBM_vertex_array_lists */
+#ifdef GL_IMG_bindless_texture
+ _glewInfo_GL_IMG_bindless_texture();
+#endif /* GL_IMG_bindless_texture */
+#ifdef GL_IMG_framebuffer_downsample
+ _glewInfo_GL_IMG_framebuffer_downsample();
+#endif /* GL_IMG_framebuffer_downsample */
+#ifdef GL_IMG_multisampled_render_to_texture
+ _glewInfo_GL_IMG_multisampled_render_to_texture();
+#endif /* GL_IMG_multisampled_render_to_texture */
+#ifdef GL_IMG_program_binary
+ _glewInfo_GL_IMG_program_binary();
+#endif /* GL_IMG_program_binary */
+#ifdef GL_IMG_read_format
+ _glewInfo_GL_IMG_read_format();
+#endif /* GL_IMG_read_format */
+#ifdef GL_IMG_shader_binary
+ _glewInfo_GL_IMG_shader_binary();
+#endif /* GL_IMG_shader_binary */
+#ifdef GL_IMG_texture_compression_pvrtc
+ _glewInfo_GL_IMG_texture_compression_pvrtc();
+#endif /* GL_IMG_texture_compression_pvrtc */
+#ifdef GL_IMG_texture_compression_pvrtc2
+ _glewInfo_GL_IMG_texture_compression_pvrtc2();
+#endif /* GL_IMG_texture_compression_pvrtc2 */
+#ifdef GL_IMG_texture_env_enhanced_fixed_function
+ _glewInfo_GL_IMG_texture_env_enhanced_fixed_function();
+#endif /* GL_IMG_texture_env_enhanced_fixed_function */
+#ifdef GL_IMG_texture_filter_cubic
+ _glewInfo_GL_IMG_texture_filter_cubic();
+#endif /* GL_IMG_texture_filter_cubic */
+#ifdef GL_IMG_tile_region_protection
+ _glewInfo_GL_IMG_tile_region_protection();
+#endif /* GL_IMG_tile_region_protection */
+#ifdef GL_INGR_color_clamp
+ _glewInfo_GL_INGR_color_clamp();
+#endif /* GL_INGR_color_clamp */
+#ifdef GL_INGR_interlace_read
+ _glewInfo_GL_INGR_interlace_read();
+#endif /* GL_INGR_interlace_read */
+#ifdef GL_INTEL_blackhole_render
+ _glewInfo_GL_INTEL_blackhole_render();
+#endif /* GL_INTEL_blackhole_render */
+#ifdef GL_INTEL_conservative_rasterization
+ _glewInfo_GL_INTEL_conservative_rasterization();
+#endif /* GL_INTEL_conservative_rasterization */
+#ifdef GL_INTEL_fragment_shader_ordering
+ _glewInfo_GL_INTEL_fragment_shader_ordering();
+#endif /* GL_INTEL_fragment_shader_ordering */
+#ifdef GL_INTEL_framebuffer_CMAA
+ _glewInfo_GL_INTEL_framebuffer_CMAA();
+#endif /* GL_INTEL_framebuffer_CMAA */
+#ifdef GL_INTEL_map_texture
+ _glewInfo_GL_INTEL_map_texture();
+#endif /* GL_INTEL_map_texture */
+#ifdef GL_INTEL_parallel_arrays
+ _glewInfo_GL_INTEL_parallel_arrays();
+#endif /* GL_INTEL_parallel_arrays */
+#ifdef GL_INTEL_performance_query
+ _glewInfo_GL_INTEL_performance_query();
+#endif /* GL_INTEL_performance_query */
+#ifdef GL_INTEL_shader_integer_functions2
+ _glewInfo_GL_INTEL_shader_integer_functions2();
+#endif /* GL_INTEL_shader_integer_functions2 */
+#ifdef GL_INTEL_texture_scissor
+ _glewInfo_GL_INTEL_texture_scissor();
+#endif /* GL_INTEL_texture_scissor */
+#ifdef GL_KHR_blend_equation_advanced
+ _glewInfo_GL_KHR_blend_equation_advanced();
+#endif /* GL_KHR_blend_equation_advanced */
+#ifdef GL_KHR_blend_equation_advanced_coherent
+ _glewInfo_GL_KHR_blend_equation_advanced_coherent();
+#endif /* GL_KHR_blend_equation_advanced_coherent */
+#ifdef GL_KHR_context_flush_control
+ _glewInfo_GL_KHR_context_flush_control();
+#endif /* GL_KHR_context_flush_control */
+#ifdef GL_KHR_debug
+ _glewInfo_GL_KHR_debug();
+#endif /* GL_KHR_debug */
+#ifdef GL_KHR_no_error
+ _glewInfo_GL_KHR_no_error();
+#endif /* GL_KHR_no_error */
+#ifdef GL_KHR_parallel_shader_compile
+ _glewInfo_GL_KHR_parallel_shader_compile();
+#endif /* GL_KHR_parallel_shader_compile */
+#ifdef GL_KHR_robust_buffer_access_behavior
+ _glewInfo_GL_KHR_robust_buffer_access_behavior();
+#endif /* GL_KHR_robust_buffer_access_behavior */
+#ifdef GL_KHR_robustness
+ _glewInfo_GL_KHR_robustness();
+#endif /* GL_KHR_robustness */
+#ifdef GL_KHR_shader_subgroup
+ _glewInfo_GL_KHR_shader_subgroup();
+#endif /* GL_KHR_shader_subgroup */
+#ifdef GL_KHR_texture_compression_astc_hdr
+ _glewInfo_GL_KHR_texture_compression_astc_hdr();
+#endif /* GL_KHR_texture_compression_astc_hdr */
+#ifdef GL_KHR_texture_compression_astc_ldr
+ _glewInfo_GL_KHR_texture_compression_astc_ldr();
+#endif /* GL_KHR_texture_compression_astc_ldr */
+#ifdef GL_KHR_texture_compression_astc_sliced_3d
+ _glewInfo_GL_KHR_texture_compression_astc_sliced_3d();
+#endif /* GL_KHR_texture_compression_astc_sliced_3d */
+#ifdef GL_KTX_buffer_region
+ _glewInfo_GL_KTX_buffer_region();
+#endif /* GL_KTX_buffer_region */
+#ifdef GL_MESAX_texture_stack
+ _glewInfo_GL_MESAX_texture_stack();
+#endif /* GL_MESAX_texture_stack */
+#ifdef GL_MESA_bgra
+ _glewInfo_GL_MESA_bgra();
+#endif /* GL_MESA_bgra */
+#ifdef GL_MESA_framebuffer_flip_x
+ _glewInfo_GL_MESA_framebuffer_flip_x();
+#endif /* GL_MESA_framebuffer_flip_x */
+#ifdef GL_MESA_framebuffer_flip_y
+ _glewInfo_GL_MESA_framebuffer_flip_y();
+#endif /* GL_MESA_framebuffer_flip_y */
+#ifdef GL_MESA_framebuffer_swap_xy
+ _glewInfo_GL_MESA_framebuffer_swap_xy();
+#endif /* GL_MESA_framebuffer_swap_xy */
+#ifdef GL_MESA_pack_invert
+ _glewInfo_GL_MESA_pack_invert();
+#endif /* GL_MESA_pack_invert */
+#ifdef GL_MESA_program_binary_formats
+ _glewInfo_GL_MESA_program_binary_formats();
+#endif /* GL_MESA_program_binary_formats */
+#ifdef GL_MESA_resize_buffers
+ _glewInfo_GL_MESA_resize_buffers();
+#endif /* GL_MESA_resize_buffers */
+#ifdef GL_MESA_shader_integer_functions
+ _glewInfo_GL_MESA_shader_integer_functions();
+#endif /* GL_MESA_shader_integer_functions */
+#ifdef GL_MESA_tile_raster_order
+ _glewInfo_GL_MESA_tile_raster_order();
+#endif /* GL_MESA_tile_raster_order */
+#ifdef GL_MESA_window_pos
+ _glewInfo_GL_MESA_window_pos();
+#endif /* GL_MESA_window_pos */
+#ifdef GL_MESA_ycbcr_texture
+ _glewInfo_GL_MESA_ycbcr_texture();
+#endif /* GL_MESA_ycbcr_texture */
+#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers
+ _glewInfo_GL_NVX_blend_equation_advanced_multi_draw_buffers();
+#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */
+#ifdef GL_NVX_conditional_render
+ _glewInfo_GL_NVX_conditional_render();
+#endif /* GL_NVX_conditional_render */
+#ifdef GL_NVX_gpu_memory_info
+ _glewInfo_GL_NVX_gpu_memory_info();
+#endif /* GL_NVX_gpu_memory_info */
+#ifdef GL_NVX_gpu_multicast2
+ _glewInfo_GL_NVX_gpu_multicast2();
+#endif /* GL_NVX_gpu_multicast2 */
+#ifdef GL_NVX_linked_gpu_multicast
+ _glewInfo_GL_NVX_linked_gpu_multicast();
+#endif /* GL_NVX_linked_gpu_multicast */
+#ifdef GL_NVX_progress_fence
+ _glewInfo_GL_NVX_progress_fence();
+#endif /* GL_NVX_progress_fence */
+#ifdef GL_NV_3dvision_settings
+ _glewInfo_GL_NV_3dvision_settings();
+#endif /* GL_NV_3dvision_settings */
+#ifdef GL_NV_EGL_stream_consumer_external
+ _glewInfo_GL_NV_EGL_stream_consumer_external();
+#endif /* GL_NV_EGL_stream_consumer_external */
+#ifdef GL_NV_alpha_to_coverage_dither_control
+ _glewInfo_GL_NV_alpha_to_coverage_dither_control();
+#endif /* GL_NV_alpha_to_coverage_dither_control */
+#ifdef GL_NV_bgr
+ _glewInfo_GL_NV_bgr();
+#endif /* GL_NV_bgr */
+#ifdef GL_NV_bindless_multi_draw_indirect
+ _glewInfo_GL_NV_bindless_multi_draw_indirect();
+#endif /* GL_NV_bindless_multi_draw_indirect */
+#ifdef GL_NV_bindless_multi_draw_indirect_count
+ _glewInfo_GL_NV_bindless_multi_draw_indirect_count();
+#endif /* GL_NV_bindless_multi_draw_indirect_count */
+#ifdef GL_NV_bindless_texture
+ _glewInfo_GL_NV_bindless_texture();
+#endif /* GL_NV_bindless_texture */
+#ifdef GL_NV_blend_equation_advanced
+ _glewInfo_GL_NV_blend_equation_advanced();
+#endif /* GL_NV_blend_equation_advanced */
+#ifdef GL_NV_blend_equation_advanced_coherent
+ _glewInfo_GL_NV_blend_equation_advanced_coherent();
+#endif /* GL_NV_blend_equation_advanced_coherent */
+#ifdef GL_NV_blend_minmax_factor
+ _glewInfo_GL_NV_blend_minmax_factor();
+#endif /* GL_NV_blend_minmax_factor */
+#ifdef GL_NV_blend_square
+ _glewInfo_GL_NV_blend_square();
+#endif /* GL_NV_blend_square */
+#ifdef GL_NV_clip_space_w_scaling
+ _glewInfo_GL_NV_clip_space_w_scaling();
+#endif /* GL_NV_clip_space_w_scaling */
+#ifdef GL_NV_command_list
+ _glewInfo_GL_NV_command_list();
+#endif /* GL_NV_command_list */
+#ifdef GL_NV_compute_program5
+ _glewInfo_GL_NV_compute_program5();
+#endif /* GL_NV_compute_program5 */
+#ifdef GL_NV_compute_shader_derivatives
+ _glewInfo_GL_NV_compute_shader_derivatives();
+#endif /* GL_NV_compute_shader_derivatives */
+#ifdef GL_NV_conditional_render
+ _glewInfo_GL_NV_conditional_render();
+#endif /* GL_NV_conditional_render */
+#ifdef GL_NV_conservative_raster
+ _glewInfo_GL_NV_conservative_raster();
+#endif /* GL_NV_conservative_raster */
+#ifdef GL_NV_conservative_raster_dilate
+ _glewInfo_GL_NV_conservative_raster_dilate();
+#endif /* GL_NV_conservative_raster_dilate */
+#ifdef GL_NV_conservative_raster_pre_snap
+ _glewInfo_GL_NV_conservative_raster_pre_snap();
+#endif /* GL_NV_conservative_raster_pre_snap */
+#ifdef GL_NV_conservative_raster_pre_snap_triangles
+ _glewInfo_GL_NV_conservative_raster_pre_snap_triangles();
+#endif /* GL_NV_conservative_raster_pre_snap_triangles */
+#ifdef GL_NV_conservative_raster_underestimation
+ _glewInfo_GL_NV_conservative_raster_underestimation();
+#endif /* GL_NV_conservative_raster_underestimation */
+#ifdef GL_NV_copy_buffer
+ _glewInfo_GL_NV_copy_buffer();
+#endif /* GL_NV_copy_buffer */
+#ifdef GL_NV_copy_depth_to_color
+ _glewInfo_GL_NV_copy_depth_to_color();
+#endif /* GL_NV_copy_depth_to_color */
+#ifdef GL_NV_copy_image
+ _glewInfo_GL_NV_copy_image();
+#endif /* GL_NV_copy_image */
+#ifdef GL_NV_deep_texture3D
+ _glewInfo_GL_NV_deep_texture3D();
+#endif /* GL_NV_deep_texture3D */
+#ifdef GL_NV_depth_buffer_float
+ _glewInfo_GL_NV_depth_buffer_float();
+#endif /* GL_NV_depth_buffer_float */
+#ifdef GL_NV_depth_clamp
+ _glewInfo_GL_NV_depth_clamp();
+#endif /* GL_NV_depth_clamp */
+#ifdef GL_NV_depth_nonlinear
+ _glewInfo_GL_NV_depth_nonlinear();
+#endif /* GL_NV_depth_nonlinear */
+#ifdef GL_NV_depth_range_unclamped
+ _glewInfo_GL_NV_depth_range_unclamped();
+#endif /* GL_NV_depth_range_unclamped */
+#ifdef GL_NV_draw_buffers
+ _glewInfo_GL_NV_draw_buffers();
+#endif /* GL_NV_draw_buffers */
+#ifdef GL_NV_draw_instanced
+ _glewInfo_GL_NV_draw_instanced();
+#endif /* GL_NV_draw_instanced */
+#ifdef GL_NV_draw_texture
+ _glewInfo_GL_NV_draw_texture();
+#endif /* GL_NV_draw_texture */
+#ifdef GL_NV_draw_vulkan_image
+ _glewInfo_GL_NV_draw_vulkan_image();
+#endif /* GL_NV_draw_vulkan_image */
+#ifdef GL_NV_evaluators
+ _glewInfo_GL_NV_evaluators();
+#endif /* GL_NV_evaluators */
+#ifdef GL_NV_explicit_attrib_location
+ _glewInfo_GL_NV_explicit_attrib_location();
+#endif /* GL_NV_explicit_attrib_location */
+#ifdef GL_NV_explicit_multisample
+ _glewInfo_GL_NV_explicit_multisample();
+#endif /* GL_NV_explicit_multisample */
+#ifdef GL_NV_fbo_color_attachments
+ _glewInfo_GL_NV_fbo_color_attachments();
+#endif /* GL_NV_fbo_color_attachments */
+#ifdef GL_NV_fence
+ _glewInfo_GL_NV_fence();
+#endif /* GL_NV_fence */
+#ifdef GL_NV_fill_rectangle
+ _glewInfo_GL_NV_fill_rectangle();
+#endif /* GL_NV_fill_rectangle */
+#ifdef GL_NV_float_buffer
+ _glewInfo_GL_NV_float_buffer();
+#endif /* GL_NV_float_buffer */
+#ifdef GL_NV_fog_distance
+ _glewInfo_GL_NV_fog_distance();
+#endif /* GL_NV_fog_distance */
+#ifdef GL_NV_fragment_coverage_to_color
+ _glewInfo_GL_NV_fragment_coverage_to_color();
+#endif /* GL_NV_fragment_coverage_to_color */
+#ifdef GL_NV_fragment_program
+ _glewInfo_GL_NV_fragment_program();
+#endif /* GL_NV_fragment_program */
+#ifdef GL_NV_fragment_program2
+ _glewInfo_GL_NV_fragment_program2();
+#endif /* GL_NV_fragment_program2 */
+#ifdef GL_NV_fragment_program4
+ _glewInfo_GL_NV_fragment_program4();
+#endif /* GL_NV_fragment_program4 */
+#ifdef GL_NV_fragment_program_option
+ _glewInfo_GL_NV_fragment_program_option();
+#endif /* GL_NV_fragment_program_option */
+#ifdef GL_NV_fragment_shader_barycentric
+ _glewInfo_GL_NV_fragment_shader_barycentric();
+#endif /* GL_NV_fragment_shader_barycentric */
+#ifdef GL_NV_fragment_shader_interlock
+ _glewInfo_GL_NV_fragment_shader_interlock();
+#endif /* GL_NV_fragment_shader_interlock */
+#ifdef GL_NV_framebuffer_blit
+ _glewInfo_GL_NV_framebuffer_blit();
+#endif /* GL_NV_framebuffer_blit */
+#ifdef GL_NV_framebuffer_mixed_samples
+ _glewInfo_GL_NV_framebuffer_mixed_samples();
+#endif /* GL_NV_framebuffer_mixed_samples */
+#ifdef GL_NV_framebuffer_multisample
+ _glewInfo_GL_NV_framebuffer_multisample();
+#endif /* GL_NV_framebuffer_multisample */
+#ifdef GL_NV_framebuffer_multisample_coverage
+ _glewInfo_GL_NV_framebuffer_multisample_coverage();
+#endif /* GL_NV_framebuffer_multisample_coverage */
+#ifdef GL_NV_generate_mipmap_sRGB
+ _glewInfo_GL_NV_generate_mipmap_sRGB();
+#endif /* GL_NV_generate_mipmap_sRGB */
+#ifdef GL_NV_geometry_program4
+ _glewInfo_GL_NV_geometry_program4();
+#endif /* GL_NV_geometry_program4 */
+#ifdef GL_NV_geometry_shader4
+ _glewInfo_GL_NV_geometry_shader4();
+#endif /* GL_NV_geometry_shader4 */
+#ifdef GL_NV_geometry_shader_passthrough
+ _glewInfo_GL_NV_geometry_shader_passthrough();
+#endif /* GL_NV_geometry_shader_passthrough */
+#ifdef GL_NV_gpu_multicast
+ _glewInfo_GL_NV_gpu_multicast();
+#endif /* GL_NV_gpu_multicast */
+#ifdef GL_NV_gpu_program4
+ _glewInfo_GL_NV_gpu_program4();
+#endif /* GL_NV_gpu_program4 */
+#ifdef GL_NV_gpu_program5
+ _glewInfo_GL_NV_gpu_program5();
+#endif /* GL_NV_gpu_program5 */
+#ifdef GL_NV_gpu_program5_mem_extended
+ _glewInfo_GL_NV_gpu_program5_mem_extended();
+#endif /* GL_NV_gpu_program5_mem_extended */
+#ifdef GL_NV_gpu_program_fp64
+ _glewInfo_GL_NV_gpu_program_fp64();
+#endif /* GL_NV_gpu_program_fp64 */
+#ifdef GL_NV_gpu_shader5
+ _glewInfo_GL_NV_gpu_shader5();
+#endif /* GL_NV_gpu_shader5 */
+#ifdef GL_NV_half_float
+ _glewInfo_GL_NV_half_float();
+#endif /* GL_NV_half_float */
+#ifdef GL_NV_image_formats
+ _glewInfo_GL_NV_image_formats();
+#endif /* GL_NV_image_formats */
+#ifdef GL_NV_instanced_arrays
+ _glewInfo_GL_NV_instanced_arrays();
+#endif /* GL_NV_instanced_arrays */
+#ifdef GL_NV_internalformat_sample_query
+ _glewInfo_GL_NV_internalformat_sample_query();
+#endif /* GL_NV_internalformat_sample_query */
+#ifdef GL_NV_light_max_exponent
+ _glewInfo_GL_NV_light_max_exponent();
+#endif /* GL_NV_light_max_exponent */
+#ifdef GL_NV_memory_attachment
+ _glewInfo_GL_NV_memory_attachment();
+#endif /* GL_NV_memory_attachment */
+#ifdef GL_NV_memory_object_sparse
+ _glewInfo_GL_NV_memory_object_sparse();
+#endif /* GL_NV_memory_object_sparse */
+#ifdef GL_NV_mesh_shader
+ _glewInfo_GL_NV_mesh_shader();
+#endif /* GL_NV_mesh_shader */
+#ifdef GL_NV_multisample_coverage
+ _glewInfo_GL_NV_multisample_coverage();
+#endif /* GL_NV_multisample_coverage */
+#ifdef GL_NV_multisample_filter_hint
+ _glewInfo_GL_NV_multisample_filter_hint();
+#endif /* GL_NV_multisample_filter_hint */
+#ifdef GL_NV_non_square_matrices
+ _glewInfo_GL_NV_non_square_matrices();
+#endif /* GL_NV_non_square_matrices */
+#ifdef GL_NV_occlusion_query
+ _glewInfo_GL_NV_occlusion_query();
+#endif /* GL_NV_occlusion_query */
+#ifdef GL_NV_pack_subimage
+ _glewInfo_GL_NV_pack_subimage();
+#endif /* GL_NV_pack_subimage */
+#ifdef GL_NV_packed_depth_stencil
+ _glewInfo_GL_NV_packed_depth_stencil();
+#endif /* GL_NV_packed_depth_stencil */
+#ifdef GL_NV_packed_float
+ _glewInfo_GL_NV_packed_float();
+#endif /* GL_NV_packed_float */
+#ifdef GL_NV_packed_float_linear
+ _glewInfo_GL_NV_packed_float_linear();
+#endif /* GL_NV_packed_float_linear */
+#ifdef GL_NV_parameter_buffer_object
+ _glewInfo_GL_NV_parameter_buffer_object();
+#endif /* GL_NV_parameter_buffer_object */
+#ifdef GL_NV_parameter_buffer_object2
+ _glewInfo_GL_NV_parameter_buffer_object2();
+#endif /* GL_NV_parameter_buffer_object2 */
+#ifdef GL_NV_path_rendering
+ _glewInfo_GL_NV_path_rendering();
+#endif /* GL_NV_path_rendering */
+#ifdef GL_NV_path_rendering_shared_edge
+ _glewInfo_GL_NV_path_rendering_shared_edge();
+#endif /* GL_NV_path_rendering_shared_edge */
+#ifdef GL_NV_pixel_buffer_object
+ _glewInfo_GL_NV_pixel_buffer_object();
+#endif /* GL_NV_pixel_buffer_object */
+#ifdef GL_NV_pixel_data_range
+ _glewInfo_GL_NV_pixel_data_range();
+#endif /* GL_NV_pixel_data_range */
+#ifdef GL_NV_platform_binary
+ _glewInfo_GL_NV_platform_binary();
+#endif /* GL_NV_platform_binary */
+#ifdef GL_NV_point_sprite
+ _glewInfo_GL_NV_point_sprite();
+#endif /* GL_NV_point_sprite */
+#ifdef GL_NV_polygon_mode
+ _glewInfo_GL_NV_polygon_mode();
+#endif /* GL_NV_polygon_mode */
+#ifdef GL_NV_present_video
+ _glewInfo_GL_NV_present_video();
+#endif /* GL_NV_present_video */
+#ifdef GL_NV_primitive_restart
+ _glewInfo_GL_NV_primitive_restart();
+#endif /* GL_NV_primitive_restart */
+#ifdef GL_NV_primitive_shading_rate
+ _glewInfo_GL_NV_primitive_shading_rate();
+#endif /* GL_NV_primitive_shading_rate */
+#ifdef GL_NV_query_resource_tag
+ _glewInfo_GL_NV_query_resource_tag();
+#endif /* GL_NV_query_resource_tag */
+#ifdef GL_NV_read_buffer
+ _glewInfo_GL_NV_read_buffer();
+#endif /* GL_NV_read_buffer */
+#ifdef GL_NV_read_buffer_front
+ _glewInfo_GL_NV_read_buffer_front();
+#endif /* GL_NV_read_buffer_front */
+#ifdef GL_NV_read_depth
+ _glewInfo_GL_NV_read_depth();
+#endif /* GL_NV_read_depth */
+#ifdef GL_NV_read_depth_stencil
+ _glewInfo_GL_NV_read_depth_stencil();
+#endif /* GL_NV_read_depth_stencil */
+#ifdef GL_NV_read_stencil
+ _glewInfo_GL_NV_read_stencil();
+#endif /* GL_NV_read_stencil */
+#ifdef GL_NV_register_combiners
+ _glewInfo_GL_NV_register_combiners();
+#endif /* GL_NV_register_combiners */
+#ifdef GL_NV_register_combiners2
+ _glewInfo_GL_NV_register_combiners2();
+#endif /* GL_NV_register_combiners2 */
+#ifdef GL_NV_representative_fragment_test
+ _glewInfo_GL_NV_representative_fragment_test();
+#endif /* GL_NV_representative_fragment_test */
+#ifdef GL_NV_robustness_video_memory_purge
+ _glewInfo_GL_NV_robustness_video_memory_purge();
+#endif /* GL_NV_robustness_video_memory_purge */
+#ifdef GL_NV_sRGB_formats
+ _glewInfo_GL_NV_sRGB_formats();
+#endif /* GL_NV_sRGB_formats */
+#ifdef GL_NV_sample_locations
+ _glewInfo_GL_NV_sample_locations();
+#endif /* GL_NV_sample_locations */
+#ifdef GL_NV_sample_mask_override_coverage
+ _glewInfo_GL_NV_sample_mask_override_coverage();
+#endif /* GL_NV_sample_mask_override_coverage */
+#ifdef GL_NV_scissor_exclusive
+ _glewInfo_GL_NV_scissor_exclusive();
+#endif /* GL_NV_scissor_exclusive */
+#ifdef GL_NV_shader_atomic_counters
+ _glewInfo_GL_NV_shader_atomic_counters();
+#endif /* GL_NV_shader_atomic_counters */
+#ifdef GL_NV_shader_atomic_float
+ _glewInfo_GL_NV_shader_atomic_float();
+#endif /* GL_NV_shader_atomic_float */
+#ifdef GL_NV_shader_atomic_float64
+ _glewInfo_GL_NV_shader_atomic_float64();
+#endif /* GL_NV_shader_atomic_float64 */
+#ifdef GL_NV_shader_atomic_fp16_vector
+ _glewInfo_GL_NV_shader_atomic_fp16_vector();
+#endif /* GL_NV_shader_atomic_fp16_vector */
+#ifdef GL_NV_shader_atomic_int64
+ _glewInfo_GL_NV_shader_atomic_int64();
+#endif /* GL_NV_shader_atomic_int64 */
+#ifdef GL_NV_shader_buffer_load
+ _glewInfo_GL_NV_shader_buffer_load();
+#endif /* GL_NV_shader_buffer_load */
+#ifdef GL_NV_shader_noperspective_interpolation
+ _glewInfo_GL_NV_shader_noperspective_interpolation();
+#endif /* GL_NV_shader_noperspective_interpolation */
+#ifdef GL_NV_shader_storage_buffer_object
+ _glewInfo_GL_NV_shader_storage_buffer_object();
+#endif /* GL_NV_shader_storage_buffer_object */
+#ifdef GL_NV_shader_subgroup_partitioned
+ _glewInfo_GL_NV_shader_subgroup_partitioned();
+#endif /* GL_NV_shader_subgroup_partitioned */
+#ifdef GL_NV_shader_texture_footprint
+ _glewInfo_GL_NV_shader_texture_footprint();
+#endif /* GL_NV_shader_texture_footprint */
+#ifdef GL_NV_shader_thread_group
+ _glewInfo_GL_NV_shader_thread_group();
+#endif /* GL_NV_shader_thread_group */
+#ifdef GL_NV_shader_thread_shuffle
+ _glewInfo_GL_NV_shader_thread_shuffle();
+#endif /* GL_NV_shader_thread_shuffle */
+#ifdef GL_NV_shading_rate_image
+ _glewInfo_GL_NV_shading_rate_image();
+#endif /* GL_NV_shading_rate_image */
+#ifdef GL_NV_shadow_samplers_array
+ _glewInfo_GL_NV_shadow_samplers_array();
+#endif /* GL_NV_shadow_samplers_array */
+#ifdef GL_NV_shadow_samplers_cube
+ _glewInfo_GL_NV_shadow_samplers_cube();
+#endif /* GL_NV_shadow_samplers_cube */
+#ifdef GL_NV_stereo_view_rendering
+ _glewInfo_GL_NV_stereo_view_rendering();
+#endif /* GL_NV_stereo_view_rendering */
+#ifdef GL_NV_tessellation_program5
+ _glewInfo_GL_NV_tessellation_program5();
+#endif /* GL_NV_tessellation_program5 */
+#ifdef GL_NV_texgen_emboss
+ _glewInfo_GL_NV_texgen_emboss();
+#endif /* GL_NV_texgen_emboss */
+#ifdef GL_NV_texgen_reflection
+ _glewInfo_GL_NV_texgen_reflection();
+#endif /* GL_NV_texgen_reflection */
+#ifdef GL_NV_texture_array
+ _glewInfo_GL_NV_texture_array();
+#endif /* GL_NV_texture_array */
+#ifdef GL_NV_texture_barrier
+ _glewInfo_GL_NV_texture_barrier();
+#endif /* GL_NV_texture_barrier */
+#ifdef GL_NV_texture_border_clamp
+ _glewInfo_GL_NV_texture_border_clamp();
+#endif /* GL_NV_texture_border_clamp */
+#ifdef GL_NV_texture_compression_latc
+ _glewInfo_GL_NV_texture_compression_latc();
+#endif /* GL_NV_texture_compression_latc */
+#ifdef GL_NV_texture_compression_s3tc
+ _glewInfo_GL_NV_texture_compression_s3tc();
+#endif /* GL_NV_texture_compression_s3tc */
+#ifdef GL_NV_texture_compression_s3tc_update
+ _glewInfo_GL_NV_texture_compression_s3tc_update();
+#endif /* GL_NV_texture_compression_s3tc_update */
+#ifdef GL_NV_texture_compression_vtc
+ _glewInfo_GL_NV_texture_compression_vtc();
+#endif /* GL_NV_texture_compression_vtc */
+#ifdef GL_NV_texture_env_combine4
+ _glewInfo_GL_NV_texture_env_combine4();
+#endif /* GL_NV_texture_env_combine4 */
+#ifdef GL_NV_texture_expand_normal
+ _glewInfo_GL_NV_texture_expand_normal();
+#endif /* GL_NV_texture_expand_normal */
+#ifdef GL_NV_texture_multisample
+ _glewInfo_GL_NV_texture_multisample();
+#endif /* GL_NV_texture_multisample */
+#ifdef GL_NV_texture_npot_2D_mipmap
+ _glewInfo_GL_NV_texture_npot_2D_mipmap();
+#endif /* GL_NV_texture_npot_2D_mipmap */
+#ifdef GL_NV_texture_rectangle
+ _glewInfo_GL_NV_texture_rectangle();
+#endif /* GL_NV_texture_rectangle */
+#ifdef GL_NV_texture_rectangle_compressed
+ _glewInfo_GL_NV_texture_rectangle_compressed();
+#endif /* GL_NV_texture_rectangle_compressed */
+#ifdef GL_NV_texture_shader
+ _glewInfo_GL_NV_texture_shader();
+#endif /* GL_NV_texture_shader */
+#ifdef GL_NV_texture_shader2
+ _glewInfo_GL_NV_texture_shader2();
+#endif /* GL_NV_texture_shader2 */
+#ifdef GL_NV_texture_shader3
+ _glewInfo_GL_NV_texture_shader3();
+#endif /* GL_NV_texture_shader3 */
+#ifdef GL_NV_timeline_semaphore
+ _glewInfo_GL_NV_timeline_semaphore();
+#endif /* GL_NV_timeline_semaphore */
+#ifdef GL_NV_transform_feedback
+ _glewInfo_GL_NV_transform_feedback();
+#endif /* GL_NV_transform_feedback */
+#ifdef GL_NV_transform_feedback2
+ _glewInfo_GL_NV_transform_feedback2();
+#endif /* GL_NV_transform_feedback2 */
+#ifdef GL_NV_uniform_buffer_unified_memory
+ _glewInfo_GL_NV_uniform_buffer_unified_memory();
+#endif /* GL_NV_uniform_buffer_unified_memory */
+#ifdef GL_NV_vdpau_interop
+ _glewInfo_GL_NV_vdpau_interop();
+#endif /* GL_NV_vdpau_interop */
+#ifdef GL_NV_vdpau_interop2
+ _glewInfo_GL_NV_vdpau_interop2();
+#endif /* GL_NV_vdpau_interop2 */
+#ifdef GL_NV_vertex_array_range
+ _glewInfo_GL_NV_vertex_array_range();
+#endif /* GL_NV_vertex_array_range */
+#ifdef GL_NV_vertex_array_range2
+ _glewInfo_GL_NV_vertex_array_range2();
+#endif /* GL_NV_vertex_array_range2 */
+#ifdef GL_NV_vertex_attrib_integer_64bit
+ _glewInfo_GL_NV_vertex_attrib_integer_64bit();
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+#ifdef GL_NV_vertex_buffer_unified_memory
+ _glewInfo_GL_NV_vertex_buffer_unified_memory();
+#endif /* GL_NV_vertex_buffer_unified_memory */
+#ifdef GL_NV_vertex_program
+ _glewInfo_GL_NV_vertex_program();
+#endif /* GL_NV_vertex_program */
+#ifdef GL_NV_vertex_program1_1
+ _glewInfo_GL_NV_vertex_program1_1();
+#endif /* GL_NV_vertex_program1_1 */
+#ifdef GL_NV_vertex_program2
+ _glewInfo_GL_NV_vertex_program2();
+#endif /* GL_NV_vertex_program2 */
+#ifdef GL_NV_vertex_program2_option
+ _glewInfo_GL_NV_vertex_program2_option();
+#endif /* GL_NV_vertex_program2_option */
+#ifdef GL_NV_vertex_program3
+ _glewInfo_GL_NV_vertex_program3();
+#endif /* GL_NV_vertex_program3 */
+#ifdef GL_NV_vertex_program4
+ _glewInfo_GL_NV_vertex_program4();
+#endif /* GL_NV_vertex_program4 */
+#ifdef GL_NV_video_capture
+ _glewInfo_GL_NV_video_capture();
+#endif /* GL_NV_video_capture */
+#ifdef GL_NV_viewport_array
+ _glewInfo_GL_NV_viewport_array();
+#endif /* GL_NV_viewport_array */
+#ifdef GL_NV_viewport_array2
+ _glewInfo_GL_NV_viewport_array2();
+#endif /* GL_NV_viewport_array2 */
+#ifdef GL_NV_viewport_swizzle
+ _glewInfo_GL_NV_viewport_swizzle();
+#endif /* GL_NV_viewport_swizzle */
+#ifdef GL_OES_EGL_image
+ _glewInfo_GL_OES_EGL_image();
+#endif /* GL_OES_EGL_image */
+#ifdef GL_OES_EGL_image_external
+ _glewInfo_GL_OES_EGL_image_external();
+#endif /* GL_OES_EGL_image_external */
+#ifdef GL_OES_EGL_image_external_essl3
+ _glewInfo_GL_OES_EGL_image_external_essl3();
+#endif /* GL_OES_EGL_image_external_essl3 */
+#ifdef GL_OES_blend_equation_separate
+ _glewInfo_GL_OES_blend_equation_separate();
+#endif /* GL_OES_blend_equation_separate */
+#ifdef GL_OES_blend_func_separate
+ _glewInfo_GL_OES_blend_func_separate();
+#endif /* GL_OES_blend_func_separate */
+#ifdef GL_OES_blend_subtract
+ _glewInfo_GL_OES_blend_subtract();
+#endif /* GL_OES_blend_subtract */
+#ifdef GL_OES_byte_coordinates
+ _glewInfo_GL_OES_byte_coordinates();
+#endif /* GL_OES_byte_coordinates */
+#ifdef GL_OES_compressed_ETC1_RGB8_texture
+ _glewInfo_GL_OES_compressed_ETC1_RGB8_texture();
+#endif /* GL_OES_compressed_ETC1_RGB8_texture */
+#ifdef GL_OES_compressed_paletted_texture
+ _glewInfo_GL_OES_compressed_paletted_texture();
+#endif /* GL_OES_compressed_paletted_texture */
+#ifdef GL_OES_copy_image
+ _glewInfo_GL_OES_copy_image();
+#endif /* GL_OES_copy_image */
+#ifdef GL_OES_depth24
+ _glewInfo_GL_OES_depth24();
+#endif /* GL_OES_depth24 */
+#ifdef GL_OES_depth32
+ _glewInfo_GL_OES_depth32();
+#endif /* GL_OES_depth32 */
+#ifdef GL_OES_depth_texture
+ _glewInfo_GL_OES_depth_texture();
+#endif /* GL_OES_depth_texture */
+#ifdef GL_OES_depth_texture_cube_map
+ _glewInfo_GL_OES_depth_texture_cube_map();
+#endif /* GL_OES_depth_texture_cube_map */
+#ifdef GL_OES_draw_buffers_indexed
+ _glewInfo_GL_OES_draw_buffers_indexed();
+#endif /* GL_OES_draw_buffers_indexed */
+#ifdef GL_OES_draw_texture
+ _glewInfo_GL_OES_draw_texture();
+#endif /* GL_OES_draw_texture */
+#ifdef GL_OES_element_index_uint
+ _glewInfo_GL_OES_element_index_uint();
+#endif /* GL_OES_element_index_uint */
+#ifdef GL_OES_extended_matrix_palette
+ _glewInfo_GL_OES_extended_matrix_palette();
+#endif /* GL_OES_extended_matrix_palette */
+#ifdef GL_OES_fbo_render_mipmap
+ _glewInfo_GL_OES_fbo_render_mipmap();
+#endif /* GL_OES_fbo_render_mipmap */
+#ifdef GL_OES_fragment_precision_high
+ _glewInfo_GL_OES_fragment_precision_high();
+#endif /* GL_OES_fragment_precision_high */
+#ifdef GL_OES_framebuffer_object
+ _glewInfo_GL_OES_framebuffer_object();
+#endif /* GL_OES_framebuffer_object */
+#ifdef GL_OES_geometry_point_size
+ _glewInfo_GL_OES_geometry_point_size();
+#endif /* GL_OES_geometry_point_size */
+#ifdef GL_OES_geometry_shader
+ _glewInfo_GL_OES_geometry_shader();
+#endif /* GL_OES_geometry_shader */
+#ifdef GL_OES_get_program_binary
+ _glewInfo_GL_OES_get_program_binary();
+#endif /* GL_OES_get_program_binary */
+#ifdef GL_OES_gpu_shader5
+ _glewInfo_GL_OES_gpu_shader5();
+#endif /* GL_OES_gpu_shader5 */
+#ifdef GL_OES_mapbuffer
+ _glewInfo_GL_OES_mapbuffer();
+#endif /* GL_OES_mapbuffer */
+#ifdef GL_OES_matrix_get
+ _glewInfo_GL_OES_matrix_get();
+#endif /* GL_OES_matrix_get */
+#ifdef GL_OES_matrix_palette
+ _glewInfo_GL_OES_matrix_palette();
+#endif /* GL_OES_matrix_palette */
+#ifdef GL_OES_packed_depth_stencil
+ _glewInfo_GL_OES_packed_depth_stencil();
+#endif /* GL_OES_packed_depth_stencil */
+#ifdef GL_OES_point_size_array
+ _glewInfo_GL_OES_point_size_array();
+#endif /* GL_OES_point_size_array */
+#ifdef GL_OES_point_sprite
+ _glewInfo_GL_OES_point_sprite();
+#endif /* GL_OES_point_sprite */
+#ifdef GL_OES_read_format
+ _glewInfo_GL_OES_read_format();
+#endif /* GL_OES_read_format */
+#ifdef GL_OES_required_internalformat
+ _glewInfo_GL_OES_required_internalformat();
+#endif /* GL_OES_required_internalformat */
+#ifdef GL_OES_rgb8_rgba8
+ _glewInfo_GL_OES_rgb8_rgba8();
+#endif /* GL_OES_rgb8_rgba8 */
+#ifdef GL_OES_sample_shading
+ _glewInfo_GL_OES_sample_shading();
+#endif /* GL_OES_sample_shading */
+#ifdef GL_OES_sample_variables
+ _glewInfo_GL_OES_sample_variables();
+#endif /* GL_OES_sample_variables */
+#ifdef GL_OES_shader_image_atomic
+ _glewInfo_GL_OES_shader_image_atomic();
+#endif /* GL_OES_shader_image_atomic */
+#ifdef GL_OES_shader_io_blocks
+ _glewInfo_GL_OES_shader_io_blocks();
+#endif /* GL_OES_shader_io_blocks */
+#ifdef GL_OES_shader_multisample_interpolation
+ _glewInfo_GL_OES_shader_multisample_interpolation();
+#endif /* GL_OES_shader_multisample_interpolation */
+#ifdef GL_OES_single_precision
+ _glewInfo_GL_OES_single_precision();
+#endif /* GL_OES_single_precision */
+#ifdef GL_OES_standard_derivatives
+ _glewInfo_GL_OES_standard_derivatives();
+#endif /* GL_OES_standard_derivatives */
+#ifdef GL_OES_stencil1
+ _glewInfo_GL_OES_stencil1();
+#endif /* GL_OES_stencil1 */
+#ifdef GL_OES_stencil4
+ _glewInfo_GL_OES_stencil4();
+#endif /* GL_OES_stencil4 */
+#ifdef GL_OES_stencil8
+ _glewInfo_GL_OES_stencil8();
+#endif /* GL_OES_stencil8 */
+#ifdef GL_OES_surfaceless_context
+ _glewInfo_GL_OES_surfaceless_context();
+#endif /* GL_OES_surfaceless_context */
+#ifdef GL_OES_tessellation_point_size
+ _glewInfo_GL_OES_tessellation_point_size();
+#endif /* GL_OES_tessellation_point_size */
+#ifdef GL_OES_tessellation_shader
+ _glewInfo_GL_OES_tessellation_shader();
+#endif /* GL_OES_tessellation_shader */
+#ifdef GL_OES_texture_3D
+ _glewInfo_GL_OES_texture_3D();
+#endif /* GL_OES_texture_3D */
+#ifdef GL_OES_texture_border_clamp
+ _glewInfo_GL_OES_texture_border_clamp();
+#endif /* GL_OES_texture_border_clamp */
+#ifdef GL_OES_texture_buffer
+ _glewInfo_GL_OES_texture_buffer();
+#endif /* GL_OES_texture_buffer */
+#ifdef GL_OES_texture_compression_astc
+ _glewInfo_GL_OES_texture_compression_astc();
+#endif /* GL_OES_texture_compression_astc */
+#ifdef GL_OES_texture_cube_map
+ _glewInfo_GL_OES_texture_cube_map();
+#endif /* GL_OES_texture_cube_map */
+#ifdef GL_OES_texture_cube_map_array
+ _glewInfo_GL_OES_texture_cube_map_array();
+#endif /* GL_OES_texture_cube_map_array */
+#ifdef GL_OES_texture_env_crossbar
+ _glewInfo_GL_OES_texture_env_crossbar();
+#endif /* GL_OES_texture_env_crossbar */
+#ifdef GL_OES_texture_mirrored_repeat
+ _glewInfo_GL_OES_texture_mirrored_repeat();
+#endif /* GL_OES_texture_mirrored_repeat */
+#ifdef GL_OES_texture_npot
+ _glewInfo_GL_OES_texture_npot();
+#endif /* GL_OES_texture_npot */
+#ifdef GL_OES_texture_stencil8
+ _glewInfo_GL_OES_texture_stencil8();
+#endif /* GL_OES_texture_stencil8 */
+#ifdef GL_OES_texture_storage_multisample_2d_array
+ _glewInfo_GL_OES_texture_storage_multisample_2d_array();
+#endif /* GL_OES_texture_storage_multisample_2d_array */
+#ifdef GL_OES_texture_view
+ _glewInfo_GL_OES_texture_view();
+#endif /* GL_OES_texture_view */
+#ifdef GL_OES_vertex_array_object
+ _glewInfo_GL_OES_vertex_array_object();
+#endif /* GL_OES_vertex_array_object */
+#ifdef GL_OES_vertex_half_float
+ _glewInfo_GL_OES_vertex_half_float();
+#endif /* GL_OES_vertex_half_float */
+#ifdef GL_OES_vertex_type_10_10_10_2
+ _glewInfo_GL_OES_vertex_type_10_10_10_2();
+#endif /* GL_OES_vertex_type_10_10_10_2 */
+#ifdef GL_OML_interlace
+ _glewInfo_GL_OML_interlace();
+#endif /* GL_OML_interlace */
+#ifdef GL_OML_resample
+ _glewInfo_GL_OML_resample();
+#endif /* GL_OML_resample */
+#ifdef GL_OML_subsample
+ _glewInfo_GL_OML_subsample();
+#endif /* GL_OML_subsample */
+#ifdef GL_OVR_multiview
+ _glewInfo_GL_OVR_multiview();
+#endif /* GL_OVR_multiview */
+#ifdef GL_OVR_multiview2
+ _glewInfo_GL_OVR_multiview2();
+#endif /* GL_OVR_multiview2 */
+#ifdef GL_OVR_multiview_multisampled_render_to_texture
+ _glewInfo_GL_OVR_multiview_multisampled_render_to_texture();
+#endif /* GL_OVR_multiview_multisampled_render_to_texture */
+#ifdef GL_PGI_misc_hints
+ _glewInfo_GL_PGI_misc_hints();
+#endif /* GL_PGI_misc_hints */
+#ifdef GL_PGI_vertex_hints
+ _glewInfo_GL_PGI_vertex_hints();
+#endif /* GL_PGI_vertex_hints */
+#ifdef GL_QCOM_YUV_texture_gather
+ _glewInfo_GL_QCOM_YUV_texture_gather();
+#endif /* GL_QCOM_YUV_texture_gather */
+#ifdef GL_QCOM_alpha_test
+ _glewInfo_GL_QCOM_alpha_test();
+#endif /* GL_QCOM_alpha_test */
+#ifdef GL_QCOM_binning_control
+ _glewInfo_GL_QCOM_binning_control();
+#endif /* GL_QCOM_binning_control */
+#ifdef GL_QCOM_driver_control
+ _glewInfo_GL_QCOM_driver_control();
+#endif /* GL_QCOM_driver_control */
+#ifdef GL_QCOM_extended_get
+ _glewInfo_GL_QCOM_extended_get();
+#endif /* GL_QCOM_extended_get */
+#ifdef GL_QCOM_extended_get2
+ _glewInfo_GL_QCOM_extended_get2();
+#endif /* GL_QCOM_extended_get2 */
+#ifdef GL_QCOM_frame_extrapolation
+ _glewInfo_GL_QCOM_frame_extrapolation();
+#endif /* GL_QCOM_frame_extrapolation */
+#ifdef GL_QCOM_framebuffer_foveated
+ _glewInfo_GL_QCOM_framebuffer_foveated();
+#endif /* GL_QCOM_framebuffer_foveated */
+#ifdef GL_QCOM_motion_estimation
+ _glewInfo_GL_QCOM_motion_estimation();
+#endif /* GL_QCOM_motion_estimation */
+#ifdef GL_QCOM_perfmon_global_mode
+ _glewInfo_GL_QCOM_perfmon_global_mode();
+#endif /* GL_QCOM_perfmon_global_mode */
+#ifdef GL_QCOM_render_shared_exponent
+ _glewInfo_GL_QCOM_render_shared_exponent();
+#endif /* GL_QCOM_render_shared_exponent */
+#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent
+ _glewInfo_GL_QCOM_shader_framebuffer_fetch_noncoherent();
+#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */
+#ifdef GL_QCOM_shader_framebuffer_fetch_rate
+ _glewInfo_GL_QCOM_shader_framebuffer_fetch_rate();
+#endif /* GL_QCOM_shader_framebuffer_fetch_rate */
+#ifdef GL_QCOM_shading_rate
+ _glewInfo_GL_QCOM_shading_rate();
+#endif /* GL_QCOM_shading_rate */
+#ifdef GL_QCOM_texture_foveated
+ _glewInfo_GL_QCOM_texture_foveated();
+#endif /* GL_QCOM_texture_foveated */
+#ifdef GL_QCOM_texture_foveated2
+ _glewInfo_GL_QCOM_texture_foveated2();
+#endif /* GL_QCOM_texture_foveated2 */
+#ifdef GL_QCOM_texture_foveated_subsampled_layout
+ _glewInfo_GL_QCOM_texture_foveated_subsampled_layout();
+#endif /* GL_QCOM_texture_foveated_subsampled_layout */
+#ifdef GL_QCOM_tiled_rendering
+ _glewInfo_GL_QCOM_tiled_rendering();
+#endif /* GL_QCOM_tiled_rendering */
+#ifdef GL_QCOM_writeonly_rendering
+ _glewInfo_GL_QCOM_writeonly_rendering();
+#endif /* GL_QCOM_writeonly_rendering */
+#ifdef GL_REGAL_ES1_0_compatibility
+ _glewInfo_GL_REGAL_ES1_0_compatibility();
+#endif /* GL_REGAL_ES1_0_compatibility */
+#ifdef GL_REGAL_ES1_1_compatibility
+ _glewInfo_GL_REGAL_ES1_1_compatibility();
+#endif /* GL_REGAL_ES1_1_compatibility */
+#ifdef GL_REGAL_enable
+ _glewInfo_GL_REGAL_enable();
+#endif /* GL_REGAL_enable */
+#ifdef GL_REGAL_error_string
+ _glewInfo_GL_REGAL_error_string();
+#endif /* GL_REGAL_error_string */
+#ifdef GL_REGAL_extension_query
+ _glewInfo_GL_REGAL_extension_query();
+#endif /* GL_REGAL_extension_query */
+#ifdef GL_REGAL_log
+ _glewInfo_GL_REGAL_log();
+#endif /* GL_REGAL_log */
+#ifdef GL_REGAL_proc_address
+ _glewInfo_GL_REGAL_proc_address();
+#endif /* GL_REGAL_proc_address */
+#ifdef GL_REND_screen_coordinates
+ _glewInfo_GL_REND_screen_coordinates();
+#endif /* GL_REND_screen_coordinates */
+#ifdef GL_S3_s3tc
+ _glewInfo_GL_S3_s3tc();
+#endif /* GL_S3_s3tc */
+#ifdef GL_SGIS_clip_band_hint
+ _glewInfo_GL_SGIS_clip_band_hint();
+#endif /* GL_SGIS_clip_band_hint */
+#ifdef GL_SGIS_color_range
+ _glewInfo_GL_SGIS_color_range();
+#endif /* GL_SGIS_color_range */
+#ifdef GL_SGIS_detail_texture
+ _glewInfo_GL_SGIS_detail_texture();
+#endif /* GL_SGIS_detail_texture */
+#ifdef GL_SGIS_fog_function
+ _glewInfo_GL_SGIS_fog_function();
+#endif /* GL_SGIS_fog_function */
+#ifdef GL_SGIS_generate_mipmap
+ _glewInfo_GL_SGIS_generate_mipmap();
+#endif /* GL_SGIS_generate_mipmap */
+#ifdef GL_SGIS_line_texgen
+ _glewInfo_GL_SGIS_line_texgen();
+#endif /* GL_SGIS_line_texgen */
+#ifdef GL_SGIS_multisample
+ _glewInfo_GL_SGIS_multisample();
+#endif /* GL_SGIS_multisample */
+#ifdef GL_SGIS_multitexture
+ _glewInfo_GL_SGIS_multitexture();
+#endif /* GL_SGIS_multitexture */
+#ifdef GL_SGIS_pixel_texture
+ _glewInfo_GL_SGIS_pixel_texture();
+#endif /* GL_SGIS_pixel_texture */
+#ifdef GL_SGIS_point_line_texgen
+ _glewInfo_GL_SGIS_point_line_texgen();
+#endif /* GL_SGIS_point_line_texgen */
+#ifdef GL_SGIS_shared_multisample
+ _glewInfo_GL_SGIS_shared_multisample();
+#endif /* GL_SGIS_shared_multisample */
+#ifdef GL_SGIS_sharpen_texture
+ _glewInfo_GL_SGIS_sharpen_texture();
+#endif /* GL_SGIS_sharpen_texture */
+#ifdef GL_SGIS_texture4D
+ _glewInfo_GL_SGIS_texture4D();
+#endif /* GL_SGIS_texture4D */
+#ifdef GL_SGIS_texture_border_clamp
+ _glewInfo_GL_SGIS_texture_border_clamp();
+#endif /* GL_SGIS_texture_border_clamp */
+#ifdef GL_SGIS_texture_edge_clamp
+ _glewInfo_GL_SGIS_texture_edge_clamp();
+#endif /* GL_SGIS_texture_edge_clamp */
+#ifdef GL_SGIS_texture_filter4
+ _glewInfo_GL_SGIS_texture_filter4();
+#endif /* GL_SGIS_texture_filter4 */
+#ifdef GL_SGIS_texture_lod
+ _glewInfo_GL_SGIS_texture_lod();
+#endif /* GL_SGIS_texture_lod */
+#ifdef GL_SGIS_texture_select
+ _glewInfo_GL_SGIS_texture_select();
+#endif /* GL_SGIS_texture_select */
+#ifdef GL_SGIX_async
+ _glewInfo_GL_SGIX_async();
+#endif /* GL_SGIX_async */
+#ifdef GL_SGIX_async_histogram
+ _glewInfo_GL_SGIX_async_histogram();
+#endif /* GL_SGIX_async_histogram */
+#ifdef GL_SGIX_async_pixel
+ _glewInfo_GL_SGIX_async_pixel();
+#endif /* GL_SGIX_async_pixel */
+#ifdef GL_SGIX_bali_g_instruments
+ _glewInfo_GL_SGIX_bali_g_instruments();
+#endif /* GL_SGIX_bali_g_instruments */
+#ifdef GL_SGIX_bali_r_instruments
+ _glewInfo_GL_SGIX_bali_r_instruments();
+#endif /* GL_SGIX_bali_r_instruments */
+#ifdef GL_SGIX_bali_timer_instruments
+ _glewInfo_GL_SGIX_bali_timer_instruments();
+#endif /* GL_SGIX_bali_timer_instruments */
+#ifdef GL_SGIX_blend_alpha_minmax
+ _glewInfo_GL_SGIX_blend_alpha_minmax();
+#endif /* GL_SGIX_blend_alpha_minmax */
+#ifdef GL_SGIX_blend_cadd
+ _glewInfo_GL_SGIX_blend_cadd();
+#endif /* GL_SGIX_blend_cadd */
+#ifdef GL_SGIX_blend_cmultiply
+ _glewInfo_GL_SGIX_blend_cmultiply();
+#endif /* GL_SGIX_blend_cmultiply */
+#ifdef GL_SGIX_calligraphic_fragment
+ _glewInfo_GL_SGIX_calligraphic_fragment();
+#endif /* GL_SGIX_calligraphic_fragment */
+#ifdef GL_SGIX_clipmap
+ _glewInfo_GL_SGIX_clipmap();
+#endif /* GL_SGIX_clipmap */
+#ifdef GL_SGIX_color_matrix_accuracy
+ _glewInfo_GL_SGIX_color_matrix_accuracy();
+#endif /* GL_SGIX_color_matrix_accuracy */
+#ifdef GL_SGIX_color_table_index_mode
+ _glewInfo_GL_SGIX_color_table_index_mode();
+#endif /* GL_SGIX_color_table_index_mode */
+#ifdef GL_SGIX_complex_polar
+ _glewInfo_GL_SGIX_complex_polar();
+#endif /* GL_SGIX_complex_polar */
+#ifdef GL_SGIX_convolution_accuracy
+ _glewInfo_GL_SGIX_convolution_accuracy();
+#endif /* GL_SGIX_convolution_accuracy */
+#ifdef GL_SGIX_cube_map
+ _glewInfo_GL_SGIX_cube_map();
+#endif /* GL_SGIX_cube_map */
+#ifdef GL_SGIX_cylinder_texgen
+ _glewInfo_GL_SGIX_cylinder_texgen();
+#endif /* GL_SGIX_cylinder_texgen */
+#ifdef GL_SGIX_datapipe
+ _glewInfo_GL_SGIX_datapipe();
+#endif /* GL_SGIX_datapipe */
+#ifdef GL_SGIX_decimation
+ _glewInfo_GL_SGIX_decimation();
+#endif /* GL_SGIX_decimation */
+#ifdef GL_SGIX_depth_pass_instrument
+ _glewInfo_GL_SGIX_depth_pass_instrument();
+#endif /* GL_SGIX_depth_pass_instrument */
+#ifdef GL_SGIX_depth_texture
+ _glewInfo_GL_SGIX_depth_texture();
+#endif /* GL_SGIX_depth_texture */
+#ifdef GL_SGIX_dvc
+ _glewInfo_GL_SGIX_dvc();
+#endif /* GL_SGIX_dvc */
+#ifdef GL_SGIX_flush_raster
+ _glewInfo_GL_SGIX_flush_raster();
+#endif /* GL_SGIX_flush_raster */
+#ifdef GL_SGIX_fog_blend
+ _glewInfo_GL_SGIX_fog_blend();
+#endif /* GL_SGIX_fog_blend */
+#ifdef GL_SGIX_fog_factor_to_alpha
+ _glewInfo_GL_SGIX_fog_factor_to_alpha();
+#endif /* GL_SGIX_fog_factor_to_alpha */
+#ifdef GL_SGIX_fog_layers
+ _glewInfo_GL_SGIX_fog_layers();
+#endif /* GL_SGIX_fog_layers */
+#ifdef GL_SGIX_fog_offset
+ _glewInfo_GL_SGIX_fog_offset();
+#endif /* GL_SGIX_fog_offset */
+#ifdef GL_SGIX_fog_patchy
+ _glewInfo_GL_SGIX_fog_patchy();
+#endif /* GL_SGIX_fog_patchy */
+#ifdef GL_SGIX_fog_scale
+ _glewInfo_GL_SGIX_fog_scale();
+#endif /* GL_SGIX_fog_scale */
+#ifdef GL_SGIX_fog_texture
+ _glewInfo_GL_SGIX_fog_texture();
+#endif /* GL_SGIX_fog_texture */
+#ifdef GL_SGIX_fragment_lighting_space
+ _glewInfo_GL_SGIX_fragment_lighting_space();
+#endif /* GL_SGIX_fragment_lighting_space */
+#ifdef GL_SGIX_fragment_specular_lighting
+ _glewInfo_GL_SGIX_fragment_specular_lighting();
+#endif /* GL_SGIX_fragment_specular_lighting */
+#ifdef GL_SGIX_fragments_instrument
+ _glewInfo_GL_SGIX_fragments_instrument();
+#endif /* GL_SGIX_fragments_instrument */
+#ifdef GL_SGIX_framezoom
+ _glewInfo_GL_SGIX_framezoom();
+#endif /* GL_SGIX_framezoom */
+#ifdef GL_SGIX_icc_texture
+ _glewInfo_GL_SGIX_icc_texture();
+#endif /* GL_SGIX_icc_texture */
+#ifdef GL_SGIX_igloo_interface
+ _glewInfo_GL_SGIX_igloo_interface();
+#endif /* GL_SGIX_igloo_interface */
+#ifdef GL_SGIX_image_compression
+ _glewInfo_GL_SGIX_image_compression();
+#endif /* GL_SGIX_image_compression */
+#ifdef GL_SGIX_impact_pixel_texture
+ _glewInfo_GL_SGIX_impact_pixel_texture();
+#endif /* GL_SGIX_impact_pixel_texture */
+#ifdef GL_SGIX_instrument_error
+ _glewInfo_GL_SGIX_instrument_error();
+#endif /* GL_SGIX_instrument_error */
+#ifdef GL_SGIX_interlace
+ _glewInfo_GL_SGIX_interlace();
+#endif /* GL_SGIX_interlace */
+#ifdef GL_SGIX_ir_instrument1
+ _glewInfo_GL_SGIX_ir_instrument1();
+#endif /* GL_SGIX_ir_instrument1 */
+#ifdef GL_SGIX_line_quality_hint
+ _glewInfo_GL_SGIX_line_quality_hint();
+#endif /* GL_SGIX_line_quality_hint */
+#ifdef GL_SGIX_list_priority
+ _glewInfo_GL_SGIX_list_priority();
+#endif /* GL_SGIX_list_priority */
+#ifdef GL_SGIX_mpeg1
+ _glewInfo_GL_SGIX_mpeg1();
+#endif /* GL_SGIX_mpeg1 */
+#ifdef GL_SGIX_mpeg2
+ _glewInfo_GL_SGIX_mpeg2();
+#endif /* GL_SGIX_mpeg2 */
+#ifdef GL_SGIX_nonlinear_lighting_pervertex
+ _glewInfo_GL_SGIX_nonlinear_lighting_pervertex();
+#endif /* GL_SGIX_nonlinear_lighting_pervertex */
+#ifdef GL_SGIX_nurbs_eval
+ _glewInfo_GL_SGIX_nurbs_eval();
+#endif /* GL_SGIX_nurbs_eval */
+#ifdef GL_SGIX_occlusion_instrument
+ _glewInfo_GL_SGIX_occlusion_instrument();
+#endif /* GL_SGIX_occlusion_instrument */
+#ifdef GL_SGIX_packed_6bytes
+ _glewInfo_GL_SGIX_packed_6bytes();
+#endif /* GL_SGIX_packed_6bytes */
+#ifdef GL_SGIX_pixel_texture
+ _glewInfo_GL_SGIX_pixel_texture();
+#endif /* GL_SGIX_pixel_texture */
+#ifdef GL_SGIX_pixel_texture_bits
+ _glewInfo_GL_SGIX_pixel_texture_bits();
+#endif /* GL_SGIX_pixel_texture_bits */
+#ifdef GL_SGIX_pixel_texture_lod
+ _glewInfo_GL_SGIX_pixel_texture_lod();
+#endif /* GL_SGIX_pixel_texture_lod */
+#ifdef GL_SGIX_pixel_tiles
+ _glewInfo_GL_SGIX_pixel_tiles();
+#endif /* GL_SGIX_pixel_tiles */
+#ifdef GL_SGIX_polynomial_ffd
+ _glewInfo_GL_SGIX_polynomial_ffd();
+#endif /* GL_SGIX_polynomial_ffd */
+#ifdef GL_SGIX_quad_mesh
+ _glewInfo_GL_SGIX_quad_mesh();
+#endif /* GL_SGIX_quad_mesh */
+#ifdef GL_SGIX_reference_plane
+ _glewInfo_GL_SGIX_reference_plane();
+#endif /* GL_SGIX_reference_plane */
+#ifdef GL_SGIX_resample
+ _glewInfo_GL_SGIX_resample();
+#endif /* GL_SGIX_resample */
+#ifdef GL_SGIX_scalebias_hint
+ _glewInfo_GL_SGIX_scalebias_hint();
+#endif /* GL_SGIX_scalebias_hint */
+#ifdef GL_SGIX_shadow
+ _glewInfo_GL_SGIX_shadow();
+#endif /* GL_SGIX_shadow */
+#ifdef GL_SGIX_shadow_ambient
+ _glewInfo_GL_SGIX_shadow_ambient();
+#endif /* GL_SGIX_shadow_ambient */
+#ifdef GL_SGIX_slim
+ _glewInfo_GL_SGIX_slim();
+#endif /* GL_SGIX_slim */
+#ifdef GL_SGIX_spotlight_cutoff
+ _glewInfo_GL_SGIX_spotlight_cutoff();
+#endif /* GL_SGIX_spotlight_cutoff */
+#ifdef GL_SGIX_sprite
+ _glewInfo_GL_SGIX_sprite();
+#endif /* GL_SGIX_sprite */
+#ifdef GL_SGIX_subdiv_patch
+ _glewInfo_GL_SGIX_subdiv_patch();
+#endif /* GL_SGIX_subdiv_patch */
+#ifdef GL_SGIX_subsample
+ _glewInfo_GL_SGIX_subsample();
+#endif /* GL_SGIX_subsample */
+#ifdef GL_SGIX_tag_sample_buffer
+ _glewInfo_GL_SGIX_tag_sample_buffer();
+#endif /* GL_SGIX_tag_sample_buffer */
+#ifdef GL_SGIX_texture_add_env
+ _glewInfo_GL_SGIX_texture_add_env();
+#endif /* GL_SGIX_texture_add_env */
+#ifdef GL_SGIX_texture_coordinate_clamp
+ _glewInfo_GL_SGIX_texture_coordinate_clamp();
+#endif /* GL_SGIX_texture_coordinate_clamp */
+#ifdef GL_SGIX_texture_lod_bias
+ _glewInfo_GL_SGIX_texture_lod_bias();
+#endif /* GL_SGIX_texture_lod_bias */
+#ifdef GL_SGIX_texture_mipmap_anisotropic
+ _glewInfo_GL_SGIX_texture_mipmap_anisotropic();
+#endif /* GL_SGIX_texture_mipmap_anisotropic */
+#ifdef GL_SGIX_texture_multi_buffer
+ _glewInfo_GL_SGIX_texture_multi_buffer();
+#endif /* GL_SGIX_texture_multi_buffer */
+#ifdef GL_SGIX_texture_phase
+ _glewInfo_GL_SGIX_texture_phase();
+#endif /* GL_SGIX_texture_phase */
+#ifdef GL_SGIX_texture_range
+ _glewInfo_GL_SGIX_texture_range();
+#endif /* GL_SGIX_texture_range */
+#ifdef GL_SGIX_texture_scale_bias
+ _glewInfo_GL_SGIX_texture_scale_bias();
+#endif /* GL_SGIX_texture_scale_bias */
+#ifdef GL_SGIX_texture_supersample
+ _glewInfo_GL_SGIX_texture_supersample();
+#endif /* GL_SGIX_texture_supersample */
+#ifdef GL_SGIX_vector_ops
+ _glewInfo_GL_SGIX_vector_ops();
+#endif /* GL_SGIX_vector_ops */
+#ifdef GL_SGIX_vertex_array_object
+ _glewInfo_GL_SGIX_vertex_array_object();
+#endif /* GL_SGIX_vertex_array_object */
+#ifdef GL_SGIX_vertex_preclip
+ _glewInfo_GL_SGIX_vertex_preclip();
+#endif /* GL_SGIX_vertex_preclip */
+#ifdef GL_SGIX_vertex_preclip_hint
+ _glewInfo_GL_SGIX_vertex_preclip_hint();
+#endif /* GL_SGIX_vertex_preclip_hint */
+#ifdef GL_SGIX_ycrcb
+ _glewInfo_GL_SGIX_ycrcb();
+#endif /* GL_SGIX_ycrcb */
+#ifdef GL_SGIX_ycrcb_subsample
+ _glewInfo_GL_SGIX_ycrcb_subsample();
+#endif /* GL_SGIX_ycrcb_subsample */
+#ifdef GL_SGIX_ycrcba
+ _glewInfo_GL_SGIX_ycrcba();
+#endif /* GL_SGIX_ycrcba */
+#ifdef GL_SGI_color_matrix
+ _glewInfo_GL_SGI_color_matrix();
+#endif /* GL_SGI_color_matrix */
+#ifdef GL_SGI_color_table
+ _glewInfo_GL_SGI_color_table();
+#endif /* GL_SGI_color_table */
+#ifdef GL_SGI_complex
+ _glewInfo_GL_SGI_complex();
+#endif /* GL_SGI_complex */
+#ifdef GL_SGI_complex_type
+ _glewInfo_GL_SGI_complex_type();
+#endif /* GL_SGI_complex_type */
+#ifdef GL_SGI_fft
+ _glewInfo_GL_SGI_fft();
+#endif /* GL_SGI_fft */
+#ifdef GL_SGI_texture_color_table
+ _glewInfo_GL_SGI_texture_color_table();
+#endif /* GL_SGI_texture_color_table */
+#ifdef GL_SUNX_constant_data
+ _glewInfo_GL_SUNX_constant_data();
+#endif /* GL_SUNX_constant_data */
+#ifdef GL_SUN_convolution_border_modes
+ _glewInfo_GL_SUN_convolution_border_modes();
+#endif /* GL_SUN_convolution_border_modes */
+#ifdef GL_SUN_global_alpha
+ _glewInfo_GL_SUN_global_alpha();
+#endif /* GL_SUN_global_alpha */
+#ifdef GL_SUN_mesh_array
+ _glewInfo_GL_SUN_mesh_array();
+#endif /* GL_SUN_mesh_array */
+#ifdef GL_SUN_read_video_pixels
+ _glewInfo_GL_SUN_read_video_pixels();
+#endif /* GL_SUN_read_video_pixels */
+#ifdef GL_SUN_slice_accum
+ _glewInfo_GL_SUN_slice_accum();
+#endif /* GL_SUN_slice_accum */
+#ifdef GL_SUN_triangle_list
+ _glewInfo_GL_SUN_triangle_list();
+#endif /* GL_SUN_triangle_list */
+#ifdef GL_SUN_vertex
+ _glewInfo_GL_SUN_vertex();
+#endif /* GL_SUN_vertex */
+#ifdef GL_VIV_shader_binary
+ _glewInfo_GL_VIV_shader_binary();
+#endif /* GL_VIV_shader_binary */
+#ifdef GL_WIN_phong_shading
+ _glewInfo_GL_WIN_phong_shading();
+#endif /* GL_WIN_phong_shading */
+#ifdef GL_WIN_scene_markerXXX
+ _glewInfo_GL_WIN_scene_markerXXX();
+#endif /* GL_WIN_scene_markerXXX */
+#ifdef GL_WIN_specular_fog
+ _glewInfo_GL_WIN_specular_fog();
+#endif /* GL_WIN_specular_fog */
+#ifdef GL_WIN_swap_hint
+ _glewInfo_GL_WIN_swap_hint();
+#endif /* GL_WIN_swap_hint */
+}
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
+
+static void wglewInfo ()
+{
+#ifdef WGL_3DFX_multisample
+ _glewInfo_WGL_3DFX_multisample();
+#endif /* WGL_3DFX_multisample */
+#ifdef WGL_3DL_stereo_control
+ _glewInfo_WGL_3DL_stereo_control();
+#endif /* WGL_3DL_stereo_control */
+#ifdef WGL_AMD_gpu_association
+ _glewInfo_WGL_AMD_gpu_association();
+#endif /* WGL_AMD_gpu_association */
+#ifdef WGL_ARB_buffer_region
+ _glewInfo_WGL_ARB_buffer_region();
+#endif /* WGL_ARB_buffer_region */
+#ifdef WGL_ARB_context_flush_control
+ _glewInfo_WGL_ARB_context_flush_control();
+#endif /* WGL_ARB_context_flush_control */
+#ifdef WGL_ARB_create_context
+ _glewInfo_WGL_ARB_create_context();
+#endif /* WGL_ARB_create_context */
+#ifdef WGL_ARB_create_context_no_error
+ _glewInfo_WGL_ARB_create_context_no_error();
+#endif /* WGL_ARB_create_context_no_error */
+#ifdef WGL_ARB_create_context_profile
+ _glewInfo_WGL_ARB_create_context_profile();
+#endif /* WGL_ARB_create_context_profile */
+#ifdef WGL_ARB_create_context_robustness
+ _glewInfo_WGL_ARB_create_context_robustness();
+#endif /* WGL_ARB_create_context_robustness */
+#ifdef WGL_ARB_extensions_string
+ _glewInfo_WGL_ARB_extensions_string();
+#endif /* WGL_ARB_extensions_string */
+#ifdef WGL_ARB_framebuffer_sRGB
+ _glewInfo_WGL_ARB_framebuffer_sRGB();
+#endif /* WGL_ARB_framebuffer_sRGB */
+#ifdef WGL_ARB_make_current_read
+ _glewInfo_WGL_ARB_make_current_read();
+#endif /* WGL_ARB_make_current_read */
+#ifdef WGL_ARB_multisample
+ _glewInfo_WGL_ARB_multisample();
+#endif /* WGL_ARB_multisample */
+#ifdef WGL_ARB_pbuffer
+ _glewInfo_WGL_ARB_pbuffer();
+#endif /* WGL_ARB_pbuffer */
+#ifdef WGL_ARB_pixel_format
+ _glewInfo_WGL_ARB_pixel_format();
+#endif /* WGL_ARB_pixel_format */
+#ifdef WGL_ARB_pixel_format_float
+ _glewInfo_WGL_ARB_pixel_format_float();
+#endif /* WGL_ARB_pixel_format_float */
+#ifdef WGL_ARB_render_texture
+ _glewInfo_WGL_ARB_render_texture();
+#endif /* WGL_ARB_render_texture */
+#ifdef WGL_ARB_robustness_application_isolation
+ _glewInfo_WGL_ARB_robustness_application_isolation();
+#endif /* WGL_ARB_robustness_application_isolation */
+#ifdef WGL_ARB_robustness_share_group_isolation
+ _glewInfo_WGL_ARB_robustness_share_group_isolation();
+#endif /* WGL_ARB_robustness_share_group_isolation */
+#ifdef WGL_ATI_pixel_format_float
+ _glewInfo_WGL_ATI_pixel_format_float();
+#endif /* WGL_ATI_pixel_format_float */
+#ifdef WGL_ATI_render_texture_rectangle
+ _glewInfo_WGL_ATI_render_texture_rectangle();
+#endif /* WGL_ATI_render_texture_rectangle */
+#ifdef WGL_EXT_colorspace
+ _glewInfo_WGL_EXT_colorspace();
+#endif /* WGL_EXT_colorspace */
+#ifdef WGL_EXT_create_context_es2_profile
+ _glewInfo_WGL_EXT_create_context_es2_profile();
+#endif /* WGL_EXT_create_context_es2_profile */
+#ifdef WGL_EXT_create_context_es_profile
+ _glewInfo_WGL_EXT_create_context_es_profile();
+#endif /* WGL_EXT_create_context_es_profile */
+#ifdef WGL_EXT_depth_float
+ _glewInfo_WGL_EXT_depth_float();
+#endif /* WGL_EXT_depth_float */
+#ifdef WGL_EXT_display_color_table
+ _glewInfo_WGL_EXT_display_color_table();
+#endif /* WGL_EXT_display_color_table */
+#ifdef WGL_EXT_extensions_string
+ _glewInfo_WGL_EXT_extensions_string();
+#endif /* WGL_EXT_extensions_string */
+#ifdef WGL_EXT_framebuffer_sRGB
+ _glewInfo_WGL_EXT_framebuffer_sRGB();
+#endif /* WGL_EXT_framebuffer_sRGB */
+#ifdef WGL_EXT_make_current_read
+ _glewInfo_WGL_EXT_make_current_read();
+#endif /* WGL_EXT_make_current_read */
+#ifdef WGL_EXT_multisample
+ _glewInfo_WGL_EXT_multisample();
+#endif /* WGL_EXT_multisample */
+#ifdef WGL_EXT_pbuffer
+ _glewInfo_WGL_EXT_pbuffer();
+#endif /* WGL_EXT_pbuffer */
+#ifdef WGL_EXT_pixel_format
+ _glewInfo_WGL_EXT_pixel_format();
+#endif /* WGL_EXT_pixel_format */
+#ifdef WGL_EXT_pixel_format_packed_float
+ _glewInfo_WGL_EXT_pixel_format_packed_float();
+#endif /* WGL_EXT_pixel_format_packed_float */
+#ifdef WGL_EXT_swap_control
+ _glewInfo_WGL_EXT_swap_control();
+#endif /* WGL_EXT_swap_control */
+#ifdef WGL_EXT_swap_control_tear
+ _glewInfo_WGL_EXT_swap_control_tear();
+#endif /* WGL_EXT_swap_control_tear */
+#ifdef WGL_I3D_digital_video_control
+ _glewInfo_WGL_I3D_digital_video_control();
+#endif /* WGL_I3D_digital_video_control */
+#ifdef WGL_I3D_gamma
+ _glewInfo_WGL_I3D_gamma();
+#endif /* WGL_I3D_gamma */
+#ifdef WGL_I3D_genlock
+ _glewInfo_WGL_I3D_genlock();
+#endif /* WGL_I3D_genlock */
+#ifdef WGL_I3D_image_buffer
+ _glewInfo_WGL_I3D_image_buffer();
+#endif /* WGL_I3D_image_buffer */
+#ifdef WGL_I3D_swap_frame_lock
+ _glewInfo_WGL_I3D_swap_frame_lock();
+#endif /* WGL_I3D_swap_frame_lock */
+#ifdef WGL_I3D_swap_frame_usage
+ _glewInfo_WGL_I3D_swap_frame_usage();
+#endif /* WGL_I3D_swap_frame_usage */
+#ifdef WGL_NV_DX_interop
+ _glewInfo_WGL_NV_DX_interop();
+#endif /* WGL_NV_DX_interop */
+#ifdef WGL_NV_DX_interop2
+ _glewInfo_WGL_NV_DX_interop2();
+#endif /* WGL_NV_DX_interop2 */
+#ifdef WGL_NV_copy_image
+ _glewInfo_WGL_NV_copy_image();
+#endif /* WGL_NV_copy_image */
+#ifdef WGL_NV_delay_before_swap
+ _glewInfo_WGL_NV_delay_before_swap();
+#endif /* WGL_NV_delay_before_swap */
+#ifdef WGL_NV_float_buffer
+ _glewInfo_WGL_NV_float_buffer();
+#endif /* WGL_NV_float_buffer */
+#ifdef WGL_NV_gpu_affinity
+ _glewInfo_WGL_NV_gpu_affinity();
+#endif /* WGL_NV_gpu_affinity */
+#ifdef WGL_NV_multigpu_context
+ _glewInfo_WGL_NV_multigpu_context();
+#endif /* WGL_NV_multigpu_context */
+#ifdef WGL_NV_multisample_coverage
+ _glewInfo_WGL_NV_multisample_coverage();
+#endif /* WGL_NV_multisample_coverage */
+#ifdef WGL_NV_present_video
+ _glewInfo_WGL_NV_present_video();
+#endif /* WGL_NV_present_video */
+#ifdef WGL_NV_render_depth_texture
+ _glewInfo_WGL_NV_render_depth_texture();
+#endif /* WGL_NV_render_depth_texture */
+#ifdef WGL_NV_render_texture_rectangle
+ _glewInfo_WGL_NV_render_texture_rectangle();
+#endif /* WGL_NV_render_texture_rectangle */
+#ifdef WGL_NV_swap_group
+ _glewInfo_WGL_NV_swap_group();
+#endif /* WGL_NV_swap_group */
+#ifdef WGL_NV_vertex_array_range
+ _glewInfo_WGL_NV_vertex_array_range();
+#endif /* WGL_NV_vertex_array_range */
+#ifdef WGL_NV_video_capture
+ _glewInfo_WGL_NV_video_capture();
+#endif /* WGL_NV_video_capture */
+#ifdef WGL_NV_video_output
+ _glewInfo_WGL_NV_video_output();
+#endif /* WGL_NV_video_output */
+#ifdef WGL_OML_sync_control
+ _glewInfo_WGL_OML_sync_control();
+#endif /* WGL_OML_sync_control */
+}
+
+#elif !defined(GLEW_EGL) && !defined(GLEW_OSMESA) /* _UNIX */
+
+static void glxewInfo ()
+{
+#ifdef GLX_VERSION_1_2
+ _glewInfo_GLX_VERSION_1_2();
+#endif /* GLX_VERSION_1_2 */
+#ifdef GLX_VERSION_1_3
+ _glewInfo_GLX_VERSION_1_3();
+#endif /* GLX_VERSION_1_3 */
+#ifdef GLX_VERSION_1_4
+ _glewInfo_GLX_VERSION_1_4();
+#endif /* GLX_VERSION_1_4 */
+#ifdef GLX_3DFX_multisample
+ _glewInfo_GLX_3DFX_multisample();
+#endif /* GLX_3DFX_multisample */
+#ifdef GLX_AMD_gpu_association
+ _glewInfo_GLX_AMD_gpu_association();
+#endif /* GLX_AMD_gpu_association */
+#ifdef GLX_ARB_context_flush_control
+ _glewInfo_GLX_ARB_context_flush_control();
+#endif /* GLX_ARB_context_flush_control */
+#ifdef GLX_ARB_create_context
+ _glewInfo_GLX_ARB_create_context();
+#endif /* GLX_ARB_create_context */
+#ifdef GLX_ARB_create_context_no_error
+ _glewInfo_GLX_ARB_create_context_no_error();
+#endif /* GLX_ARB_create_context_no_error */
+#ifdef GLX_ARB_create_context_profile
+ _glewInfo_GLX_ARB_create_context_profile();
+#endif /* GLX_ARB_create_context_profile */
+#ifdef GLX_ARB_create_context_robustness
+ _glewInfo_GLX_ARB_create_context_robustness();
+#endif /* GLX_ARB_create_context_robustness */
+#ifdef GLX_ARB_fbconfig_float
+ _glewInfo_GLX_ARB_fbconfig_float();
+#endif /* GLX_ARB_fbconfig_float */
+#ifdef GLX_ARB_framebuffer_sRGB
+ _glewInfo_GLX_ARB_framebuffer_sRGB();
+#endif /* GLX_ARB_framebuffer_sRGB */
+#ifdef GLX_ARB_get_proc_address
+ _glewInfo_GLX_ARB_get_proc_address();
+#endif /* GLX_ARB_get_proc_address */
+#ifdef GLX_ARB_multisample
+ _glewInfo_GLX_ARB_multisample();
+#endif /* GLX_ARB_multisample */
+#ifdef GLX_ARB_robustness_application_isolation
+ _glewInfo_GLX_ARB_robustness_application_isolation();
+#endif /* GLX_ARB_robustness_application_isolation */
+#ifdef GLX_ARB_robustness_share_group_isolation
+ _glewInfo_GLX_ARB_robustness_share_group_isolation();
+#endif /* GLX_ARB_robustness_share_group_isolation */
+#ifdef GLX_ARB_vertex_buffer_object
+ _glewInfo_GLX_ARB_vertex_buffer_object();
+#endif /* GLX_ARB_vertex_buffer_object */
+#ifdef GLX_ATI_pixel_format_float
+ _glewInfo_GLX_ATI_pixel_format_float();
+#endif /* GLX_ATI_pixel_format_float */
+#ifdef GLX_ATI_render_texture
+ _glewInfo_GLX_ATI_render_texture();
+#endif /* GLX_ATI_render_texture */
+#ifdef GLX_EXT_buffer_age
+ _glewInfo_GLX_EXT_buffer_age();
+#endif /* GLX_EXT_buffer_age */
+#ifdef GLX_EXT_context_priority
+ _glewInfo_GLX_EXT_context_priority();
+#endif /* GLX_EXT_context_priority */
+#ifdef GLX_EXT_create_context_es2_profile
+ _glewInfo_GLX_EXT_create_context_es2_profile();
+#endif /* GLX_EXT_create_context_es2_profile */
+#ifdef GLX_EXT_create_context_es_profile
+ _glewInfo_GLX_EXT_create_context_es_profile();
+#endif /* GLX_EXT_create_context_es_profile */
+#ifdef GLX_EXT_fbconfig_packed_float
+ _glewInfo_GLX_EXT_fbconfig_packed_float();
+#endif /* GLX_EXT_fbconfig_packed_float */
+#ifdef GLX_EXT_framebuffer_sRGB
+ _glewInfo_GLX_EXT_framebuffer_sRGB();
+#endif /* GLX_EXT_framebuffer_sRGB */
+#ifdef GLX_EXT_get_drawable_type
+ _glewInfo_GLX_EXT_get_drawable_type();
+#endif /* GLX_EXT_get_drawable_type */
+#ifdef GLX_EXT_import_context
+ _glewInfo_GLX_EXT_import_context();
+#endif /* GLX_EXT_import_context */
+#ifdef GLX_EXT_libglvnd
+ _glewInfo_GLX_EXT_libglvnd();
+#endif /* GLX_EXT_libglvnd */
+#ifdef GLX_EXT_no_config_context
+ _glewInfo_GLX_EXT_no_config_context();
+#endif /* GLX_EXT_no_config_context */
+#ifdef GLX_EXT_scene_marker
+ _glewInfo_GLX_EXT_scene_marker();
+#endif /* GLX_EXT_scene_marker */
+#ifdef GLX_EXT_stereo_tree
+ _glewInfo_GLX_EXT_stereo_tree();
+#endif /* GLX_EXT_stereo_tree */
+#ifdef GLX_EXT_swap_control
+ _glewInfo_GLX_EXT_swap_control();
+#endif /* GLX_EXT_swap_control */
+#ifdef GLX_EXT_swap_control_tear
+ _glewInfo_GLX_EXT_swap_control_tear();
+#endif /* GLX_EXT_swap_control_tear */
+#ifdef GLX_EXT_texture_from_pixmap
+ _glewInfo_GLX_EXT_texture_from_pixmap();
+#endif /* GLX_EXT_texture_from_pixmap */
+#ifdef GLX_EXT_visual_info
+ _glewInfo_GLX_EXT_visual_info();
+#endif /* GLX_EXT_visual_info */
+#ifdef GLX_EXT_visual_rating
+ _glewInfo_GLX_EXT_visual_rating();
+#endif /* GLX_EXT_visual_rating */
+#ifdef GLX_INTEL_swap_event
+ _glewInfo_GLX_INTEL_swap_event();
+#endif /* GLX_INTEL_swap_event */
+#ifdef GLX_MESA_agp_offset
+ _glewInfo_GLX_MESA_agp_offset();
+#endif /* GLX_MESA_agp_offset */
+#ifdef GLX_MESA_copy_sub_buffer
+ _glewInfo_GLX_MESA_copy_sub_buffer();
+#endif /* GLX_MESA_copy_sub_buffer */
+#ifdef GLX_MESA_pixmap_colormap
+ _glewInfo_GLX_MESA_pixmap_colormap();
+#endif /* GLX_MESA_pixmap_colormap */
+#ifdef GLX_MESA_query_renderer
+ _glewInfo_GLX_MESA_query_renderer();
+#endif /* GLX_MESA_query_renderer */
+#ifdef GLX_MESA_release_buffers
+ _glewInfo_GLX_MESA_release_buffers();
+#endif /* GLX_MESA_release_buffers */
+#ifdef GLX_MESA_set_3dfx_mode
+ _glewInfo_GLX_MESA_set_3dfx_mode();
+#endif /* GLX_MESA_set_3dfx_mode */
+#ifdef GLX_MESA_swap_control
+ _glewInfo_GLX_MESA_swap_control();
+#endif /* GLX_MESA_swap_control */
+#ifdef GLX_NV_copy_buffer
+ _glewInfo_GLX_NV_copy_buffer();
+#endif /* GLX_NV_copy_buffer */
+#ifdef GLX_NV_copy_image
+ _glewInfo_GLX_NV_copy_image();
+#endif /* GLX_NV_copy_image */
+#ifdef GLX_NV_delay_before_swap
+ _glewInfo_GLX_NV_delay_before_swap();
+#endif /* GLX_NV_delay_before_swap */
+#ifdef GLX_NV_float_buffer
+ _glewInfo_GLX_NV_float_buffer();
+#endif /* GLX_NV_float_buffer */
+#ifdef GLX_NV_multigpu_context
+ _glewInfo_GLX_NV_multigpu_context();
+#endif /* GLX_NV_multigpu_context */
+#ifdef GLX_NV_multisample_coverage
+ _glewInfo_GLX_NV_multisample_coverage();
+#endif /* GLX_NV_multisample_coverage */
+#ifdef GLX_NV_present_video
+ _glewInfo_GLX_NV_present_video();
+#endif /* GLX_NV_present_video */
+#ifdef GLX_NV_robustness_video_memory_purge
+ _glewInfo_GLX_NV_robustness_video_memory_purge();
+#endif /* GLX_NV_robustness_video_memory_purge */
+#ifdef GLX_NV_swap_group
+ _glewInfo_GLX_NV_swap_group();
+#endif /* GLX_NV_swap_group */
+#ifdef GLX_NV_vertex_array_range
+ _glewInfo_GLX_NV_vertex_array_range();
+#endif /* GLX_NV_vertex_array_range */
+#ifdef GLX_NV_video_capture
+ _glewInfo_GLX_NV_video_capture();
+#endif /* GLX_NV_video_capture */
+#ifdef GLX_NV_video_out
+ _glewInfo_GLX_NV_video_out();
+#endif /* GLX_NV_video_out */
+#ifdef GLX_OML_swap_method
+ _glewInfo_GLX_OML_swap_method();
+#endif /* GLX_OML_swap_method */
+#ifdef GLX_OML_sync_control
+ _glewInfo_GLX_OML_sync_control();
+#endif /* GLX_OML_sync_control */
+#ifdef GLX_SGIS_blended_overlay
+ _glewInfo_GLX_SGIS_blended_overlay();
+#endif /* GLX_SGIS_blended_overlay */
+#ifdef GLX_SGIS_color_range
+ _glewInfo_GLX_SGIS_color_range();
+#endif /* GLX_SGIS_color_range */
+#ifdef GLX_SGIS_multisample
+ _glewInfo_GLX_SGIS_multisample();
+#endif /* GLX_SGIS_multisample */
+#ifdef GLX_SGIS_shared_multisample
+ _glewInfo_GLX_SGIS_shared_multisample();
+#endif /* GLX_SGIS_shared_multisample */
+#ifdef GLX_SGIX_fbconfig
+ _glewInfo_GLX_SGIX_fbconfig();
+#endif /* GLX_SGIX_fbconfig */
+#ifdef GLX_SGIX_hyperpipe
+ _glewInfo_GLX_SGIX_hyperpipe();
+#endif /* GLX_SGIX_hyperpipe */
+#ifdef GLX_SGIX_pbuffer
+ _glewInfo_GLX_SGIX_pbuffer();
+#endif /* GLX_SGIX_pbuffer */
+#ifdef GLX_SGIX_swap_barrier
+ _glewInfo_GLX_SGIX_swap_barrier();
+#endif /* GLX_SGIX_swap_barrier */
+#ifdef GLX_SGIX_swap_group
+ _glewInfo_GLX_SGIX_swap_group();
+#endif /* GLX_SGIX_swap_group */
+#ifdef GLX_SGIX_video_resize
+ _glewInfo_GLX_SGIX_video_resize();
+#endif /* GLX_SGIX_video_resize */
+#ifdef GLX_SGIX_visual_select_group
+ _glewInfo_GLX_SGIX_visual_select_group();
+#endif /* GLX_SGIX_visual_select_group */
+#ifdef GLX_SGI_cushion
+ _glewInfo_GLX_SGI_cushion();
+#endif /* GLX_SGI_cushion */
+#ifdef GLX_SGI_make_current_read
+ _glewInfo_GLX_SGI_make_current_read();
+#endif /* GLX_SGI_make_current_read */
+#ifdef GLX_SGI_swap_control
+ _glewInfo_GLX_SGI_swap_control();
+#endif /* GLX_SGI_swap_control */
+#ifdef GLX_SGI_video_sync
+ _glewInfo_GLX_SGI_video_sync();
+#endif /* GLX_SGI_video_sync */
+#ifdef GLX_SUN_get_transparent_index
+ _glewInfo_GLX_SUN_get_transparent_index();
+#endif /* GLX_SUN_get_transparent_index */
+#ifdef GLX_SUN_video_resize
+ _glewInfo_GLX_SUN_video_resize();
+#endif /* GLX_SUN_video_resize */
+}
+
+#elif defined(GLEW_EGL)
+
+static void eglewInfo ()
+{
+#ifdef EGL_VERSION_1_0
+ _glewInfo_EGL_VERSION_1_0();
+#endif /* EGL_VERSION_1_0 */
+#ifdef EGL_VERSION_1_1
+ _glewInfo_EGL_VERSION_1_1();
+#endif /* EGL_VERSION_1_1 */
+#ifdef EGL_VERSION_1_2
+ _glewInfo_EGL_VERSION_1_2();
+#endif /* EGL_VERSION_1_2 */
+#ifdef EGL_VERSION_1_3
+ _glewInfo_EGL_VERSION_1_3();
+#endif /* EGL_VERSION_1_3 */
+#ifdef EGL_VERSION_1_4
+ _glewInfo_EGL_VERSION_1_4();
+#endif /* EGL_VERSION_1_4 */
+#ifdef EGL_VERSION_1_5
+ _glewInfo_EGL_VERSION_1_5();
+#endif /* EGL_VERSION_1_5 */
+#ifdef EGL_ANDROID_GLES_layers
+ _glewInfo_EGL_ANDROID_GLES_layers();
+#endif /* EGL_ANDROID_GLES_layers */
+#ifdef EGL_ANDROID_blob_cache
+ _glewInfo_EGL_ANDROID_blob_cache();
+#endif /* EGL_ANDROID_blob_cache */
+#ifdef EGL_ANDROID_create_native_client_buffer
+ _glewInfo_EGL_ANDROID_create_native_client_buffer();
+#endif /* EGL_ANDROID_create_native_client_buffer */
+#ifdef EGL_ANDROID_framebuffer_target
+ _glewInfo_EGL_ANDROID_framebuffer_target();
+#endif /* EGL_ANDROID_framebuffer_target */
+#ifdef EGL_ANDROID_front_buffer_auto_refresh
+ _glewInfo_EGL_ANDROID_front_buffer_auto_refresh();
+#endif /* EGL_ANDROID_front_buffer_auto_refresh */
+#ifdef EGL_ANDROID_get_frame_timestamps
+ _glewInfo_EGL_ANDROID_get_frame_timestamps();
+#endif /* EGL_ANDROID_get_frame_timestamps */
+#ifdef EGL_ANDROID_get_native_client_buffer
+ _glewInfo_EGL_ANDROID_get_native_client_buffer();
+#endif /* EGL_ANDROID_get_native_client_buffer */
+#ifdef EGL_ANDROID_image_native_buffer
+ _glewInfo_EGL_ANDROID_image_native_buffer();
+#endif /* EGL_ANDROID_image_native_buffer */
+#ifdef EGL_ANDROID_native_fence_sync
+ _glewInfo_EGL_ANDROID_native_fence_sync();
+#endif /* EGL_ANDROID_native_fence_sync */
+#ifdef EGL_ANDROID_presentation_time
+ _glewInfo_EGL_ANDROID_presentation_time();
+#endif /* EGL_ANDROID_presentation_time */
+#ifdef EGL_ANDROID_recordable
+ _glewInfo_EGL_ANDROID_recordable();
+#endif /* EGL_ANDROID_recordable */
+#ifdef EGL_ANGLE_d3d_share_handle_client_buffer
+ _glewInfo_EGL_ANGLE_d3d_share_handle_client_buffer();
+#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
+#ifdef EGL_ANGLE_device_d3d
+ _glewInfo_EGL_ANGLE_device_d3d();
+#endif /* EGL_ANGLE_device_d3d */
+#ifdef EGL_ANGLE_query_surface_pointer
+ _glewInfo_EGL_ANGLE_query_surface_pointer();
+#endif /* EGL_ANGLE_query_surface_pointer */
+#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle
+ _glewInfo_EGL_ANGLE_surface_d3d_texture_2d_share_handle();
+#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
+#ifdef EGL_ANGLE_sync_control_rate
+ _glewInfo_EGL_ANGLE_sync_control_rate();
+#endif /* EGL_ANGLE_sync_control_rate */
+#ifdef EGL_ANGLE_window_fixed_size
+ _glewInfo_EGL_ANGLE_window_fixed_size();
+#endif /* EGL_ANGLE_window_fixed_size */
+#ifdef EGL_ARM_image_format
+ _glewInfo_EGL_ARM_image_format();
+#endif /* EGL_ARM_image_format */
+#ifdef EGL_ARM_implicit_external_sync
+ _glewInfo_EGL_ARM_implicit_external_sync();
+#endif /* EGL_ARM_implicit_external_sync */
+#ifdef EGL_ARM_pixmap_multisample_discard
+ _glewInfo_EGL_ARM_pixmap_multisample_discard();
+#endif /* EGL_ARM_pixmap_multisample_discard */
+#ifdef EGL_EXT_bind_to_front
+ _glewInfo_EGL_EXT_bind_to_front();
+#endif /* EGL_EXT_bind_to_front */
+#ifdef EGL_EXT_buffer_age
+ _glewInfo_EGL_EXT_buffer_age();
+#endif /* EGL_EXT_buffer_age */
+#ifdef EGL_EXT_client_extensions
+ _glewInfo_EGL_EXT_client_extensions();
+#endif /* EGL_EXT_client_extensions */
+#ifdef EGL_EXT_client_sync
+ _glewInfo_EGL_EXT_client_sync();
+#endif /* EGL_EXT_client_sync */
+#ifdef EGL_EXT_compositor
+ _glewInfo_EGL_EXT_compositor();
+#endif /* EGL_EXT_compositor */
+#ifdef EGL_EXT_config_select_group
+ _glewInfo_EGL_EXT_config_select_group();
+#endif /* EGL_EXT_config_select_group */
+#ifdef EGL_EXT_create_context_robustness
+ _glewInfo_EGL_EXT_create_context_robustness();
+#endif /* EGL_EXT_create_context_robustness */
+#ifdef EGL_EXT_device_base
+ _glewInfo_EGL_EXT_device_base();
+#endif /* EGL_EXT_device_base */
+#ifdef EGL_EXT_device_drm
+ _glewInfo_EGL_EXT_device_drm();
+#endif /* EGL_EXT_device_drm */
+#ifdef EGL_EXT_device_drm_render_node
+ _glewInfo_EGL_EXT_device_drm_render_node();
+#endif /* EGL_EXT_device_drm_render_node */
+#ifdef EGL_EXT_device_enumeration
+ _glewInfo_EGL_EXT_device_enumeration();
+#endif /* EGL_EXT_device_enumeration */
+#ifdef EGL_EXT_device_openwf
+ _glewInfo_EGL_EXT_device_openwf();
+#endif /* EGL_EXT_device_openwf */
+#ifdef EGL_EXT_device_persistent_id
+ _glewInfo_EGL_EXT_device_persistent_id();
+#endif /* EGL_EXT_device_persistent_id */
+#ifdef EGL_EXT_device_query
+ _glewInfo_EGL_EXT_device_query();
+#endif /* EGL_EXT_device_query */
+#ifdef EGL_EXT_device_query_name
+ _glewInfo_EGL_EXT_device_query_name();
+#endif /* EGL_EXT_device_query_name */
+#ifdef EGL_EXT_explicit_device
+ _glewInfo_EGL_EXT_explicit_device();
+#endif /* EGL_EXT_explicit_device */
+#ifdef EGL_EXT_gl_colorspace_bt2020_linear
+ _glewInfo_EGL_EXT_gl_colorspace_bt2020_linear();
+#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
+#ifdef EGL_EXT_gl_colorspace_bt2020_pq
+ _glewInfo_EGL_EXT_gl_colorspace_bt2020_pq();
+#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
+#ifdef EGL_EXT_gl_colorspace_display_p3
+ _glewInfo_EGL_EXT_gl_colorspace_display_p3();
+#endif /* EGL_EXT_gl_colorspace_display_p3 */
+#ifdef EGL_EXT_gl_colorspace_display_p3_linear
+ _glewInfo_EGL_EXT_gl_colorspace_display_p3_linear();
+#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
+#ifdef EGL_EXT_gl_colorspace_display_p3_passthrough
+ _glewInfo_EGL_EXT_gl_colorspace_display_p3_passthrough();
+#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
+#ifdef EGL_EXT_gl_colorspace_scrgb
+ _glewInfo_EGL_EXT_gl_colorspace_scrgb();
+#endif /* EGL_EXT_gl_colorspace_scrgb */
+#ifdef EGL_EXT_gl_colorspace_scrgb_linear
+ _glewInfo_EGL_EXT_gl_colorspace_scrgb_linear();
+#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
+#ifdef EGL_EXT_image_dma_buf_import
+ _glewInfo_EGL_EXT_image_dma_buf_import();
+#endif /* EGL_EXT_image_dma_buf_import */
+#ifdef EGL_EXT_image_dma_buf_import_modifiers
+ _glewInfo_EGL_EXT_image_dma_buf_import_modifiers();
+#endif /* EGL_EXT_image_dma_buf_import_modifiers */
+#ifdef EGL_EXT_image_gl_colorspace
+ _glewInfo_EGL_EXT_image_gl_colorspace();
+#endif /* EGL_EXT_image_gl_colorspace */
+#ifdef EGL_EXT_image_implicit_sync_control
+ _glewInfo_EGL_EXT_image_implicit_sync_control();
+#endif /* EGL_EXT_image_implicit_sync_control */
+#ifdef EGL_EXT_multiview_window
+ _glewInfo_EGL_EXT_multiview_window();
+#endif /* EGL_EXT_multiview_window */
+#ifdef EGL_EXT_output_base
+ _glewInfo_EGL_EXT_output_base();
+#endif /* EGL_EXT_output_base */
+#ifdef EGL_EXT_output_drm
+ _glewInfo_EGL_EXT_output_drm();
+#endif /* EGL_EXT_output_drm */
+#ifdef EGL_EXT_output_openwf
+ _glewInfo_EGL_EXT_output_openwf();
+#endif /* EGL_EXT_output_openwf */
+#ifdef EGL_EXT_pixel_format_float
+ _glewInfo_EGL_EXT_pixel_format_float();
+#endif /* EGL_EXT_pixel_format_float */
+#ifdef EGL_EXT_platform_base
+ _glewInfo_EGL_EXT_platform_base();
+#endif /* EGL_EXT_platform_base */
+#ifdef EGL_EXT_platform_device
+ _glewInfo_EGL_EXT_platform_device();
+#endif /* EGL_EXT_platform_device */
+#ifdef EGL_EXT_platform_wayland
+ _glewInfo_EGL_EXT_platform_wayland();
+#endif /* EGL_EXT_platform_wayland */
+#ifdef EGL_EXT_platform_x11
+ _glewInfo_EGL_EXT_platform_x11();
+#endif /* EGL_EXT_platform_x11 */
+#ifdef EGL_EXT_platform_xcb
+ _glewInfo_EGL_EXT_platform_xcb();
+#endif /* EGL_EXT_platform_xcb */
+#ifdef EGL_EXT_present_opaque
+ _glewInfo_EGL_EXT_present_opaque();
+#endif /* EGL_EXT_present_opaque */
+#ifdef EGL_EXT_protected_content
+ _glewInfo_EGL_EXT_protected_content();
+#endif /* EGL_EXT_protected_content */
+#ifdef EGL_EXT_protected_surface
+ _glewInfo_EGL_EXT_protected_surface();
+#endif /* EGL_EXT_protected_surface */
+#ifdef EGL_EXT_stream_consumer_egloutput
+ _glewInfo_EGL_EXT_stream_consumer_egloutput();
+#endif /* EGL_EXT_stream_consumer_egloutput */
+#ifdef EGL_EXT_surface_CTA861_3_metadata
+ _glewInfo_EGL_EXT_surface_CTA861_3_metadata();
+#endif /* EGL_EXT_surface_CTA861_3_metadata */
+#ifdef EGL_EXT_surface_SMPTE2086_metadata
+ _glewInfo_EGL_EXT_surface_SMPTE2086_metadata();
+#endif /* EGL_EXT_surface_SMPTE2086_metadata */
+#ifdef EGL_EXT_surface_compression
+ _glewInfo_EGL_EXT_surface_compression();
+#endif /* EGL_EXT_surface_compression */
+#ifdef EGL_EXT_swap_buffers_with_damage
+ _glewInfo_EGL_EXT_swap_buffers_with_damage();
+#endif /* EGL_EXT_swap_buffers_with_damage */
+#ifdef EGL_EXT_sync_reuse
+ _glewInfo_EGL_EXT_sync_reuse();
+#endif /* EGL_EXT_sync_reuse */
+#ifdef EGL_EXT_yuv_surface
+ _glewInfo_EGL_EXT_yuv_surface();
+#endif /* EGL_EXT_yuv_surface */
+#ifdef EGL_HI_clientpixmap
+ _glewInfo_EGL_HI_clientpixmap();
+#endif /* EGL_HI_clientpixmap */
+#ifdef EGL_HI_colorformats
+ _glewInfo_EGL_HI_colorformats();
+#endif /* EGL_HI_colorformats */
+#ifdef EGL_IMG_context_priority
+ _glewInfo_EGL_IMG_context_priority();
+#endif /* EGL_IMG_context_priority */
+#ifdef EGL_IMG_image_plane_attribs
+ _glewInfo_EGL_IMG_image_plane_attribs();
+#endif /* EGL_IMG_image_plane_attribs */
+#ifdef EGL_KHR_cl_event
+ _glewInfo_EGL_KHR_cl_event();
+#endif /* EGL_KHR_cl_event */
+#ifdef EGL_KHR_cl_event2
+ _glewInfo_EGL_KHR_cl_event2();
+#endif /* EGL_KHR_cl_event2 */
+#ifdef EGL_KHR_client_get_all_proc_addresses
+ _glewInfo_EGL_KHR_client_get_all_proc_addresses();
+#endif /* EGL_KHR_client_get_all_proc_addresses */
+#ifdef EGL_KHR_config_attribs
+ _glewInfo_EGL_KHR_config_attribs();
+#endif /* EGL_KHR_config_attribs */
+#ifdef EGL_KHR_context_flush_control
+ _glewInfo_EGL_KHR_context_flush_control();
+#endif /* EGL_KHR_context_flush_control */
+#ifdef EGL_KHR_create_context
+ _glewInfo_EGL_KHR_create_context();
+#endif /* EGL_KHR_create_context */
+#ifdef EGL_KHR_create_context_no_error
+ _glewInfo_EGL_KHR_create_context_no_error();
+#endif /* EGL_KHR_create_context_no_error */
+#ifdef EGL_KHR_debug
+ _glewInfo_EGL_KHR_debug();
+#endif /* EGL_KHR_debug */
+#ifdef EGL_KHR_display_reference
+ _glewInfo_EGL_KHR_display_reference();
+#endif /* EGL_KHR_display_reference */
+#ifdef EGL_KHR_fence_sync
+ _glewInfo_EGL_KHR_fence_sync();
+#endif /* EGL_KHR_fence_sync */
+#ifdef EGL_KHR_get_all_proc_addresses
+ _glewInfo_EGL_KHR_get_all_proc_addresses();
+#endif /* EGL_KHR_get_all_proc_addresses */
+#ifdef EGL_KHR_gl_colorspace
+ _glewInfo_EGL_KHR_gl_colorspace();
+#endif /* EGL_KHR_gl_colorspace */
+#ifdef EGL_KHR_gl_renderbuffer_image
+ _glewInfo_EGL_KHR_gl_renderbuffer_image();
+#endif /* EGL_KHR_gl_renderbuffer_image */
+#ifdef EGL_KHR_gl_texture_2D_image
+ _glewInfo_EGL_KHR_gl_texture_2D_image();
+#endif /* EGL_KHR_gl_texture_2D_image */
+#ifdef EGL_KHR_gl_texture_3D_image
+ _glewInfo_EGL_KHR_gl_texture_3D_image();
+#endif /* EGL_KHR_gl_texture_3D_image */
+#ifdef EGL_KHR_gl_texture_cubemap_image
+ _glewInfo_EGL_KHR_gl_texture_cubemap_image();
+#endif /* EGL_KHR_gl_texture_cubemap_image */
+#ifdef EGL_KHR_image
+ _glewInfo_EGL_KHR_image();
+#endif /* EGL_KHR_image */
+#ifdef EGL_KHR_image_base
+ _glewInfo_EGL_KHR_image_base();
+#endif /* EGL_KHR_image_base */
+#ifdef EGL_KHR_image_pixmap
+ _glewInfo_EGL_KHR_image_pixmap();
+#endif /* EGL_KHR_image_pixmap */
+#ifdef EGL_KHR_lock_surface
+ _glewInfo_EGL_KHR_lock_surface();
+#endif /* EGL_KHR_lock_surface */
+#ifdef EGL_KHR_lock_surface2
+ _glewInfo_EGL_KHR_lock_surface2();
+#endif /* EGL_KHR_lock_surface2 */
+#ifdef EGL_KHR_lock_surface3
+ _glewInfo_EGL_KHR_lock_surface3();
+#endif /* EGL_KHR_lock_surface3 */
+#ifdef EGL_KHR_mutable_render_buffer
+ _glewInfo_EGL_KHR_mutable_render_buffer();
+#endif /* EGL_KHR_mutable_render_buffer */
+#ifdef EGL_KHR_no_config_context
+ _glewInfo_EGL_KHR_no_config_context();
+#endif /* EGL_KHR_no_config_context */
+#ifdef EGL_KHR_partial_update
+ _glewInfo_EGL_KHR_partial_update();
+#endif /* EGL_KHR_partial_update */
+#ifdef EGL_KHR_platform_android
+ _glewInfo_EGL_KHR_platform_android();
+#endif /* EGL_KHR_platform_android */
+#ifdef EGL_KHR_platform_gbm
+ _glewInfo_EGL_KHR_platform_gbm();
+#endif /* EGL_KHR_platform_gbm */
+#ifdef EGL_KHR_platform_wayland
+ _glewInfo_EGL_KHR_platform_wayland();
+#endif /* EGL_KHR_platform_wayland */
+#ifdef EGL_KHR_platform_x11
+ _glewInfo_EGL_KHR_platform_x11();
+#endif /* EGL_KHR_platform_x11 */
+#ifdef EGL_KHR_reusable_sync
+ _glewInfo_EGL_KHR_reusable_sync();
+#endif /* EGL_KHR_reusable_sync */
+#ifdef EGL_KHR_stream
+ _glewInfo_EGL_KHR_stream();
+#endif /* EGL_KHR_stream */
+#ifdef EGL_KHR_stream_attrib
+ _glewInfo_EGL_KHR_stream_attrib();
+#endif /* EGL_KHR_stream_attrib */
+#ifdef EGL_KHR_stream_consumer_gltexture
+ _glewInfo_EGL_KHR_stream_consumer_gltexture();
+#endif /* EGL_KHR_stream_consumer_gltexture */
+#ifdef EGL_KHR_stream_cross_process_fd
+ _glewInfo_EGL_KHR_stream_cross_process_fd();
+#endif /* EGL_KHR_stream_cross_process_fd */
+#ifdef EGL_KHR_stream_fifo
+ _glewInfo_EGL_KHR_stream_fifo();
+#endif /* EGL_KHR_stream_fifo */
+#ifdef EGL_KHR_stream_producer_aldatalocator
+ _glewInfo_EGL_KHR_stream_producer_aldatalocator();
+#endif /* EGL_KHR_stream_producer_aldatalocator */
+#ifdef EGL_KHR_stream_producer_eglsurface
+ _glewInfo_EGL_KHR_stream_producer_eglsurface();
+#endif /* EGL_KHR_stream_producer_eglsurface */
+#ifdef EGL_KHR_surfaceless_context
+ _glewInfo_EGL_KHR_surfaceless_context();
+#endif /* EGL_KHR_surfaceless_context */
+#ifdef EGL_KHR_swap_buffers_with_damage
+ _glewInfo_EGL_KHR_swap_buffers_with_damage();
+#endif /* EGL_KHR_swap_buffers_with_damage */
+#ifdef EGL_KHR_vg_parent_image
+ _glewInfo_EGL_KHR_vg_parent_image();
+#endif /* EGL_KHR_vg_parent_image */
+#ifdef EGL_KHR_wait_sync
+ _glewInfo_EGL_KHR_wait_sync();
+#endif /* EGL_KHR_wait_sync */
+#ifdef EGL_MESA_drm_image
+ _glewInfo_EGL_MESA_drm_image();
+#endif /* EGL_MESA_drm_image */
+#ifdef EGL_MESA_image_dma_buf_export
+ _glewInfo_EGL_MESA_image_dma_buf_export();
+#endif /* EGL_MESA_image_dma_buf_export */
+#ifdef EGL_MESA_platform_gbm
+ _glewInfo_EGL_MESA_platform_gbm();
+#endif /* EGL_MESA_platform_gbm */
+#ifdef EGL_MESA_platform_surfaceless
+ _glewInfo_EGL_MESA_platform_surfaceless();
+#endif /* EGL_MESA_platform_surfaceless */
+#ifdef EGL_MESA_query_driver
+ _glewInfo_EGL_MESA_query_driver();
+#endif /* EGL_MESA_query_driver */
+#ifdef EGL_NOK_swap_region
+ _glewInfo_EGL_NOK_swap_region();
+#endif /* EGL_NOK_swap_region */
+#ifdef EGL_NOK_swap_region2
+ _glewInfo_EGL_NOK_swap_region2();
+#endif /* EGL_NOK_swap_region2 */
+#ifdef EGL_NOK_texture_from_pixmap
+ _glewInfo_EGL_NOK_texture_from_pixmap();
+#endif /* EGL_NOK_texture_from_pixmap */
+#ifdef EGL_NV_3dvision_surface
+ _glewInfo_EGL_NV_3dvision_surface();
+#endif /* EGL_NV_3dvision_surface */
+#ifdef EGL_NV_context_priority_realtime
+ _glewInfo_EGL_NV_context_priority_realtime();
+#endif /* EGL_NV_context_priority_realtime */
+#ifdef EGL_NV_coverage_sample
+ _glewInfo_EGL_NV_coverage_sample();
+#endif /* EGL_NV_coverage_sample */
+#ifdef EGL_NV_coverage_sample_resolve
+ _glewInfo_EGL_NV_coverage_sample_resolve();
+#endif /* EGL_NV_coverage_sample_resolve */
+#ifdef EGL_NV_cuda_event
+ _glewInfo_EGL_NV_cuda_event();
+#endif /* EGL_NV_cuda_event */
+#ifdef EGL_NV_depth_nonlinear
+ _glewInfo_EGL_NV_depth_nonlinear();
+#endif /* EGL_NV_depth_nonlinear */
+#ifdef EGL_NV_device_cuda
+ _glewInfo_EGL_NV_device_cuda();
+#endif /* EGL_NV_device_cuda */
+#ifdef EGL_NV_native_query
+ _glewInfo_EGL_NV_native_query();
+#endif /* EGL_NV_native_query */
+#ifdef EGL_NV_post_convert_rounding
+ _glewInfo_EGL_NV_post_convert_rounding();
+#endif /* EGL_NV_post_convert_rounding */
+#ifdef EGL_NV_post_sub_buffer
+ _glewInfo_EGL_NV_post_sub_buffer();
+#endif /* EGL_NV_post_sub_buffer */
+#ifdef EGL_NV_quadruple_buffer
+ _glewInfo_EGL_NV_quadruple_buffer();
+#endif /* EGL_NV_quadruple_buffer */
+#ifdef EGL_NV_robustness_video_memory_purge
+ _glewInfo_EGL_NV_robustness_video_memory_purge();
+#endif /* EGL_NV_robustness_video_memory_purge */
+#ifdef EGL_NV_stream_consumer_eglimage
+ _glewInfo_EGL_NV_stream_consumer_eglimage();
+#endif /* EGL_NV_stream_consumer_eglimage */
+#ifdef EGL_NV_stream_consumer_gltexture_yuv
+ _glewInfo_EGL_NV_stream_consumer_gltexture_yuv();
+#endif /* EGL_NV_stream_consumer_gltexture_yuv */
+#ifdef EGL_NV_stream_cross_display
+ _glewInfo_EGL_NV_stream_cross_display();
+#endif /* EGL_NV_stream_cross_display */
+#ifdef EGL_NV_stream_cross_object
+ _glewInfo_EGL_NV_stream_cross_object();
+#endif /* EGL_NV_stream_cross_object */
+#ifdef EGL_NV_stream_cross_partition
+ _glewInfo_EGL_NV_stream_cross_partition();
+#endif /* EGL_NV_stream_cross_partition */
+#ifdef EGL_NV_stream_cross_process
+ _glewInfo_EGL_NV_stream_cross_process();
+#endif /* EGL_NV_stream_cross_process */
+#ifdef EGL_NV_stream_cross_system
+ _glewInfo_EGL_NV_stream_cross_system();
+#endif /* EGL_NV_stream_cross_system */
+#ifdef EGL_NV_stream_dma
+ _glewInfo_EGL_NV_stream_dma();
+#endif /* EGL_NV_stream_dma */
+#ifdef EGL_NV_stream_fifo_next
+ _glewInfo_EGL_NV_stream_fifo_next();
+#endif /* EGL_NV_stream_fifo_next */
+#ifdef EGL_NV_stream_fifo_synchronous
+ _glewInfo_EGL_NV_stream_fifo_synchronous();
+#endif /* EGL_NV_stream_fifo_synchronous */
+#ifdef EGL_NV_stream_flush
+ _glewInfo_EGL_NV_stream_flush();
+#endif /* EGL_NV_stream_flush */
+#ifdef EGL_NV_stream_frame_limits
+ _glewInfo_EGL_NV_stream_frame_limits();
+#endif /* EGL_NV_stream_frame_limits */
+#ifdef EGL_NV_stream_metadata
+ _glewInfo_EGL_NV_stream_metadata();
+#endif /* EGL_NV_stream_metadata */
+#ifdef EGL_NV_stream_origin
+ _glewInfo_EGL_NV_stream_origin();
+#endif /* EGL_NV_stream_origin */
+#ifdef EGL_NV_stream_remote
+ _glewInfo_EGL_NV_stream_remote();
+#endif /* EGL_NV_stream_remote */
+#ifdef EGL_NV_stream_reset
+ _glewInfo_EGL_NV_stream_reset();
+#endif /* EGL_NV_stream_reset */
+#ifdef EGL_NV_stream_socket
+ _glewInfo_EGL_NV_stream_socket();
+#endif /* EGL_NV_stream_socket */
+#ifdef EGL_NV_stream_socket_inet
+ _glewInfo_EGL_NV_stream_socket_inet();
+#endif /* EGL_NV_stream_socket_inet */
+#ifdef EGL_NV_stream_socket_unix
+ _glewInfo_EGL_NV_stream_socket_unix();
+#endif /* EGL_NV_stream_socket_unix */
+#ifdef EGL_NV_stream_sync
+ _glewInfo_EGL_NV_stream_sync();
+#endif /* EGL_NV_stream_sync */
+#ifdef EGL_NV_sync
+ _glewInfo_EGL_NV_sync();
+#endif /* EGL_NV_sync */
+#ifdef EGL_NV_system_time
+ _glewInfo_EGL_NV_system_time();
+#endif /* EGL_NV_system_time */
+#ifdef EGL_NV_triple_buffer
+ _glewInfo_EGL_NV_triple_buffer();
+#endif /* EGL_NV_triple_buffer */
+#ifdef EGL_TIZEN_image_native_buffer
+ _glewInfo_EGL_TIZEN_image_native_buffer();
+#endif /* EGL_TIZEN_image_native_buffer */
+#ifdef EGL_TIZEN_image_native_surface
+ _glewInfo_EGL_TIZEN_image_native_surface();
+#endif /* EGL_TIZEN_image_native_surface */
+#ifdef EGL_WL_bind_wayland_display
+ _glewInfo_EGL_WL_bind_wayland_display();
+#endif /* EGL_WL_bind_wayland_display */
+#ifdef EGL_WL_create_wayland_buffer_from_image
+ _glewInfo_EGL_WL_create_wayland_buffer_from_image();
+#endif /* EGL_WL_create_wayland_buffer_from_image */
+}
+
+#endif /* _WIN32 */
+
+/* ------------------------------------------------------------------------ */
+
+int main (int argc, char** argv)
+{
+ GLuint err;
+ struct createParams params =
+ {
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ -1, /* pixelformat */
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ "", /* display */
+ -1, /* visual */
+#endif
+ 0, /* major */
+ 0, /* minor */
+ 0, /* profile mask */
+ 0, /* flags */
+ 0 /* experimental */
+ };
+
+#if defined(GLEW_EGL)
+ typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
+ PFNGLGETSTRINGPROC getString;
+#endif
+
+ if (glewParseArgs(argc-1, argv+1, &params))
+ {
+ fprintf(stderr, "Usage: glewinfo "
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ "[-pf <pixelformat>] "
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ "[-display <display>] "
+ "[-visual <visual id>] "
+#endif
+ "[-version <OpenGL version>] "
+ "[-profile core|compatibility] "
+ "[-flag debug|forward] "
+ "[-experimental]"
+ "\n");
+ return 1;
+ }
+
+ if (GL_TRUE == glewCreateContext(&params))
+ {
+ fprintf(stderr, "Error: glewCreateContext failed\n");
+ glewDestroyContext();
+ return 1;
+ }
+ glewExperimental = params.experimental ? GL_TRUE : GL_FALSE;
+ err = glewInit();
+ if (GLEW_OK != err)
+ {
+ fprintf(stderr, "Error [main]: glewInit failed: %s\n", glewGetErrorString(err));
+ glewDestroyContext();
+ return 1;
+ }
+
+#if defined(GLEW_EGL)
+ getString = (PFNGLGETSTRINGPROC) eglGetProcAddress("glGetString");
+ if (!getString)
+ {
+ fprintf(stderr, "Error: eglGetProcAddress failed to fetch glGetString\n");
+ glewDestroyContext();
+ return 1;
+ }
+#endif
+
+#if defined(_WIN32)
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ if (fopen_s(&f, "glewinfo.txt", "w") != 0)
+ f = stdout;
+#else
+ f = fopen("glewinfo.txt", "w");
+#endif
+ if (f == NULL) f = stdout;
+#else
+ f = stdout;
+#endif
+ fprintf(f, "---------------------------\n");
+ fprintf(f, " GLEW Extension Info\n");
+ fprintf(f, "---------------------------\n\n");
+ fprintf(f, "GLEW version %s\n", glewGetString(GLEW_VERSION));
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ fprintf(f, "Reporting capabilities of pixelformat %d\n", params.pixelformat);
+#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ fprintf(f, "Reporting capabilities of display %s, visual 0x%x\n",
+ params.display == NULL ? getenv("DISPLAY") : params.display, params.visual);
+#endif
+#if defined(GLEW_EGL)
+ fprintf(f, "Running on a %s from %s\n",
+ getString(GL_RENDERER), getString(GL_VENDOR));
+ fprintf(f, "OpenGL version %s is supported\n", getString(GL_VERSION));
+#else
+ fprintf(f, "Running on a %s from %s\n",
+ glGetString(GL_RENDERER), glGetString(GL_VENDOR));
+ fprintf(f, "OpenGL version %s is supported\n", glGetString(GL_VERSION));
+#endif
+ glewInfo();
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+ eglewInfo();
+#elif defined(_WIN32)
+ wglewInfo();
+#else
+ glxewInfo();
+#endif
+ if (f != stdout) fclose(f);
+ glewDestroyContext();
+ return 0;
+}
+
+/* ------------------------------------------------------------------------ */
+
+GLboolean glewParseArgs (int argc, char** argv, struct createParams *params)
+{
+ int p = 0;
+ while (p < argc)
+ {
+ if (!strcmp(argv[p], "-version"))
+ {
+ if (++p >= argc) return GL_TRUE;
+#if defined(__STDC_LIB_EXT1__) || (defined(_MSC_VER) && (_MSC_VER >= 1400))
+ if (sscanf_s(argv[p++], "%d.%d", &params->major, &params->minor) != 2) return GL_TRUE;
+#else
+ if (sscanf(argv[p++], "%d.%d", &params->major, &params->minor) != 2) return GL_TRUE;
+#endif
+ }
+ else if (!strcmp(argv[p], "-profile"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ if (strcmp("core", argv[p]) == 0) params->profile |= 1;
+ else if (strcmp("compatibility",argv[p]) == 0) params->profile |= 2;
+ else return GL_TRUE;
+ ++p;
+ }
+ else if (!strcmp(argv[p], "-flag"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ if (strcmp("debug", argv[p]) == 0) params->flags |= 1;
+ else if (strcmp("forward",argv[p]) == 0) params->flags |= 2;
+ else return GL_TRUE;
+ ++p;
+ }
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ else if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->pixelformat = strtol(argv[p++], NULL, 0);
+ }
+#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
+ else if (!strcmp(argv[p], "-display"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->display = argv[p++];
+ }
+ else if (!strcmp(argv[p], "-visual"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ params->visual = (int)strtol(argv[p++], NULL, 0);
+ }
+#endif
+ else if (!strcmp(argv[p], "-experimental"))
+ {
+ params->experimental = 1;
+ ++p;
+ }
+ else
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(GLEW_EGL)
+EGLDisplay display;
+EGLContext ctx;
+
+/* See: http://stackoverflow.com/questions/12662227/opengl-es2-0-offscreen-context-for-fbo-rendering */
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ EGLDeviceEXT devices[1];
+ EGLint numDevices;
+ EGLSurface surface;
+ EGLint majorVersion, minorVersion;
+ EGLint configAttribs[] = {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RED_SIZE, 1,
+ EGL_GREEN_SIZE, 1,
+ EGL_BLUE_SIZE, 1,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
+ EGL_NONE
+ };
+ static const EGLint contextAttribs[] = {
+ EGL_CONTEXT_CLIENT_VERSION, 2,
+ EGL_NONE
+ };
+ static const EGLint pBufferAttribs[] = {
+ EGL_WIDTH, 128,
+ EGL_HEIGHT, 128,
+ EGL_NONE
+ };
+ EGLConfig config;
+ EGLint numConfig;
+ EGLBoolean pBuffer;
+
+ PFNEGLQUERYDEVICESEXTPROC queryDevices = NULL;
+ PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = NULL;
+ PFNEGLGETERRORPROC getError = NULL;
+ PFNEGLGETDISPLAYPROC getDisplay = NULL;
+ PFNEGLINITIALIZEPROC initialize = NULL;
+ PFNEGLBINDAPIPROC bindAPI = NULL;
+ PFNEGLCHOOSECONFIGPROC chooseConfig = NULL;
+ PFNEGLCREATEWINDOWSURFACEPROC createWindowSurface = NULL;
+ PFNEGLCREATECONTEXTPROC createContext = NULL;
+ PFNEGLMAKECURRENTPROC makeCurrent = NULL;
+ PFNEGLCREATEPBUFFERSURFACEPROC createPbufferSurface = NULL;
+
+ /* Load necessary entry points */
+ queryDevices = (PFNEGLQUERYDEVICESEXTPROC) eglGetProcAddress("eglQueryDevicesEXT");
+ getPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYEXTPROC) eglGetProcAddress("eglGetPlatformDisplayEXT");
+ getError = (PFNEGLGETERRORPROC) eglGetProcAddress("eglGetError");
+ getDisplay = (PFNEGLGETDISPLAYPROC) eglGetProcAddress("eglGetDisplay");
+ initialize = (PFNEGLINITIALIZEPROC) eglGetProcAddress("eglInitialize");
+ bindAPI = (PFNEGLBINDAPIPROC) eglGetProcAddress("eglBindAPI");
+ chooseConfig = (PFNEGLCHOOSECONFIGPROC) eglGetProcAddress("eglChooseConfig");
+ createWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC) eglGetProcAddress("eglCreateWindowSurface");
+ createPbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC) eglGetProcAddress("eglCreatePbufferSurface");
+ createContext = (PFNEGLCREATECONTEXTPROC) eglGetProcAddress("eglCreateContext");
+ makeCurrent = (PFNEGLMAKECURRENTPROC) eglGetProcAddress("eglMakeCurrent");
+ if (!getError || !getDisplay || !initialize || !bindAPI || !chooseConfig || !createWindowSurface || !createContext || !makeCurrent)
+ return GL_TRUE;
+
+ pBuffer = 0;
+ display = EGL_NO_DISPLAY;
+ if (queryDevices && getPlatformDisplay)
+ {
+ queryDevices(1, devices, &numDevices);
+ if (numDevices==1)
+ {
+ /* Nvidia EGL doesn't need X11 for p-buffer surface */
+ display = getPlatformDisplay(EGL_PLATFORM_DEVICE_EXT, devices[0], 0);
+ configAttribs[1] = EGL_PBUFFER_BIT;
+ pBuffer = 1;
+ }
+ }
+ if (display==EGL_NO_DISPLAY)
+ {
+ /* Fall-back to X11 surface, works on Mesa */
+ display = getDisplay(EGL_DEFAULT_DISPLAY);
+ }
+ if (display == EGL_NO_DISPLAY)
+ return GL_TRUE;
+
+ eglewInit(display);
+
+ if (bindAPI(EGL_OPENGL_API) != EGL_TRUE)
+ return GL_TRUE;
+
+ if (chooseConfig(display, configAttribs, &config, 1, &numConfig) != EGL_TRUE || (numConfig != 1))
+ return GL_TRUE;
+
+ ctx = createContext(display, config, EGL_NO_CONTEXT, pBuffer ? contextAttribs : NULL);
+ if (NULL == ctx)
+ return GL_TRUE;
+
+ surface = EGL_NO_SURFACE;
+ /* Create a p-buffer surface if possible */
+ if (pBuffer && createPbufferSurface)
+ {
+ surface = createPbufferSurface(display, config, pBufferAttribs);
+ }
+ /* Create a generic surface without a native window, if necessary */
+ if (surface==EGL_NO_SURFACE)
+ {
+ surface = createWindowSurface(display, config, (EGLNativeWindowType) NULL, NULL);
+ }
+#if 0
+ if (surface == EGL_NO_SURFACE)
+ return GL_TRUE;
+#endif
+
+ if (makeCurrent(display, surface, surface, ctx) != EGL_TRUE)
+ return GL_TRUE;
+
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != ctx) eglDestroyContext(display, ctx);
+}
+
+#elif defined(GLEW_OSMESA)
+OSMesaContext ctx;
+
+static const GLint osmFormat = GL_UNSIGNED_BYTE;
+static const GLint osmWidth = 640;
+static const GLint osmHeight = 480;
+static GLubyte *osmPixels = NULL;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);
+ if (NULL == ctx) return GL_TRUE;
+ if (NULL == osmPixels)
+ {
+ osmPixels = (GLubyte *) calloc(osmWidth*osmHeight*4, 1);
+ }
+ if (!OSMesaMakeCurrent(ctx, osmPixels, GL_UNSIGNED_BYTE, osmWidth, osmHeight))
+ {
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != ctx) OSMesaDestroyContext(ctx);
+}
+
+#elif defined(_WIN32)
+
+HWND wnd = NULL;
+HDC dc = NULL;
+HGLRC rc = NULL;
+
+GLboolean glewCreateContext (struct createParams* params)
+{
+ WNDCLASS wc;
+ PIXELFORMATDESCRIPTOR pfd;
+ /* register window class */
+ ZeroMemory(&wc, sizeof(WNDCLASS));
+ wc.hInstance = GetModuleHandle(NULL);
+ wc.lpfnWndProc = DefWindowProc;
+ wc.lpszClassName = "GLEW";
+ if (0 == RegisterClass(&wc)) return GL_TRUE;
+ /* create window */
+ wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, NULL, NULL, GetModuleHandle(NULL), NULL);
+ if (NULL == wnd) return GL_TRUE;
+ /* get the device context */
+ dc = GetDC(wnd);
+ if (NULL == dc) return GL_TRUE;
+ /* find pixel format */
+ ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
+ if (params->pixelformat == -1) /* find default */
+ {
+ pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
+ pfd.nVersion = 1;
+ pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+ params->pixelformat = ChoosePixelFormat(dc, &pfd);
+ if (params->pixelformat == 0) return GL_TRUE;
+ }
+ /* set the pixel format for the dc */
+ if (FALSE == SetPixelFormat(dc, params->pixelformat, &pfd)) return GL_TRUE;
+ /* create rendering context */
+ rc = wglCreateContext(dc);
+ if (NULL == rc) return GL_TRUE;
+ if (FALSE == wglMakeCurrent(dc, rc)) return GL_TRUE;
+ if (params->major || params->profile || params->flags)
+ {
+ HGLRC oldRC = rc;
+ int contextAttrs[20];
+ int i;
+
+ wglewInit();
+
+ /* Intel HD 3000 has WGL_ARB_create_context, but not WGL_ARB_create_context_profile */
+ if (!wglewGetExtension("WGL_ARB_create_context"))
+ return GL_TRUE;
+
+ i = 0;
+ if (params->major)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_MAJOR_VERSION_ARB;
+ contextAttrs[i++] = params->major;
+ contextAttrs[i++] = WGL_CONTEXT_MINOR_VERSION_ARB;
+ contextAttrs[i++] = params->minor;
+ }
+ if (params->profile)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_PROFILE_MASK_ARB;
+ contextAttrs[i++] = params->profile;
+ }
+ if (params->flags)
+ {
+ contextAttrs[i++] = WGL_CONTEXT_FLAGS_ARB;
+ contextAttrs[i++] = params->flags;
+ }
+ contextAttrs[i++] = 0;
+ rc = wglCreateContextAttribsARB(dc, 0, contextAttrs);
+
+ if (NULL == rc) return GL_TRUE;
+ if (!wglMakeCurrent(dc, rc)) return GL_TRUE;
+
+ wglDeleteContext(oldRC);
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != rc) wglMakeCurrent(NULL, NULL);
+ if (NULL != rc) wglDeleteContext(rc);
+ if (NULL != wnd && NULL != dc) ReleaseDC(wnd, dc);
+ if (NULL != wnd) DestroyWindow(wnd);
+ UnregisterClass("GLEW", GetModuleHandle(NULL));
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLTypes.h>
+
+CGLContextObj ctx, octx;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ CGLPixelFormatAttribute contextAttrs[20];
+ int i;
+ CGLPixelFormatObj pf;
+ GLint npix;
+ CGLError error;
+
+ i = 0;
+ contextAttrs[i++] = kCGLPFAAccelerated; /* No software rendering */
+
+ /* MAC_OS_X_VERSION_10_7 == 1070 */
+ #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+ if (params->profile & GL_CONTEXT_CORE_PROFILE_BIT)
+ {
+ if ((params->major==3 && params->minor>=2) || params->major>3)
+ {
+ contextAttrs[i++] = kCGLPFAOpenGLProfile; /* OSX 10.7 Lion onwards */
+ contextAttrs[i++] = (CGLPixelFormatAttribute) kCGLOGLPVersion_3_2_Core; /* 3.2 Core Context */
+ }
+ }
+ #endif
+
+ contextAttrs[i++] = 0;
+
+ error = CGLChoosePixelFormat(contextAttrs, &pf, &npix);
+ if (error) return GL_TRUE;
+ error = CGLCreateContext(pf, NULL, &ctx);
+ if (error) return GL_TRUE;
+ CGLReleasePixelFormat(pf);
+ octx = CGLGetCurrentContext();
+ error = CGLSetCurrentContext(ctx);
+ if (error) return GL_TRUE;
+ /* Needed for Regal on the Mac */
+ #if defined(GLEW_REGAL) && defined(__APPLE__)
+ RegalMakeCurrent(ctx);
+ #endif
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ CGLSetCurrentContext(octx);
+ CGLReleaseContext(ctx);
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__HAIKU__)
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ /* TODO: Haiku: We need to call C++ code here */
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ /* TODO: Haiku: We need to call C++ code here */
+}
+
+/* ------------------------------------------------------------------------ */
+
+#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
+
+Display* dpy = NULL;
+XVisualInfo* vi = NULL;
+XVisualInfo* vis = NULL;
+GLXContext ctx = NULL;
+Window wnd = 0;
+Colormap cmap = 0;
+
+GLboolean glewCreateContext (struct createParams *params)
+{
+ int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None };
+ int erb, evb;
+ XSetWindowAttributes swa;
+ /* open display */
+ dpy = XOpenDisplay(params->display);
+ if (NULL == dpy) return GL_TRUE;
+ /* query for glx */
+ if (!glXQueryExtension(dpy, &erb, &evb)) return GL_TRUE;
+ /* choose visual */
+ if (params->visual == -1)
+ {
+ vi = glXChooseVisual(dpy, DefaultScreen(dpy), attrib);
+ if (NULL == vi) return GL_TRUE;
+ params->visual = (int)XVisualIDFromVisual(vi->visual);
+ }
+ else
+ {
+ int n_vis, i;
+ vis = XGetVisualInfo(dpy, 0, NULL, &n_vis);
+ for (i=0; i<n_vis; i++)
+ {
+ if ((int)XVisualIDFromVisual(vis[i].visual) == params->visual)
+ vi = &vis[i];
+ }
+ if (vi == NULL) return GL_TRUE;
+ }
+ /* create context */
+ ctx = glXCreateContext(dpy, vi, None, True);
+ if (NULL == ctx) return GL_TRUE;
+ /* create window */
+ /*wnd = XCreateSimpleWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 1, 1, 1, 0, 0);*/
+ cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), vi->visual, AllocNone);
+ swa.border_pixel = 0;
+ swa.colormap = cmap;
+ wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen),
+ 0, 0, 1, 1, 0, vi->depth, InputOutput, vi->visual,
+ CWBorderPixel | CWColormap, &swa);
+ /* make context current */
+ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;
+ if (params->major || params->profile || params->flags)
+ {
+ GLXContext oldCtx = ctx;
+ GLXFBConfig *FBConfigs;
+ int FBConfigAttrs[] = { GLX_FBCONFIG_ID, 0, None };
+ int contextAttrs[20];
+ int nelems, i;
+
+ glxewInit();
+
+ if (!glxewGetExtension("GLX_ARB_create_context"))
+ return GL_TRUE;
+
+ if (glXQueryContext(dpy, oldCtx, GLX_FBCONFIG_ID, &FBConfigAttrs[1]))
+ return GL_TRUE;
+ FBConfigs = glXChooseFBConfig(dpy, vi->screen, FBConfigAttrs, &nelems);
+
+ if (nelems < 1)
+ return GL_TRUE;
+
+ i = 0;
+ if (params->major)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_MAJOR_VERSION_ARB;
+ contextAttrs[i++] = params->major;
+ contextAttrs[i++] = GLX_CONTEXT_MINOR_VERSION_ARB;
+ contextAttrs[i++] = params->minor;
+ }
+ if (params->profile)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_PROFILE_MASK_ARB;
+ contextAttrs[i++] = params->profile;
+ }
+ if (params->flags)
+ {
+ contextAttrs[i++] = GLX_CONTEXT_FLAGS_ARB;
+ contextAttrs[i++] = params->flags;
+ }
+ contextAttrs[i++] = None;
+ ctx = glXCreateContextAttribsARB(dpy, *FBConfigs, NULL, True, contextAttrs);
+
+ if (NULL == ctx) return GL_TRUE;
+ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;
+
+ glXDestroyContext(dpy, oldCtx);
+
+ XFree(FBConfigs);
+ }
+ return GL_FALSE;
+}
+
+void glewDestroyContext ()
+{
+ if (NULL != dpy && NULL != ctx) glXDestroyContext(dpy, ctx);
+ if (NULL != dpy && 0 != wnd) XDestroyWindow(dpy, wnd);
+ if (NULL != dpy && 0 != cmap) XFreeColormap(dpy, cmap);
+ if (NULL != vis)
+ XFree(vis);
+ else if (NULL != vi)
+ XFree(vi);
+ if (NULL != dpy) XCloseDisplay(dpy);
+}
+
+#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
diff --git a/glew/src/visualinfo.c b/glew/src/visualinfo.c
new file mode 100644
index 0000000..1de1fa7
--- /dev/null
+++ b/glew/src/visualinfo.c
@@ -0,0 +1,1283 @@
+/*
+** visualinfo.c
+**
+** Copyright (C) Nate Robins, 1997
+** Michael Wimmer, 1999
+** Milan Ikits, 2002-2008
+** Nigel Stewart, 2008-2021
+**
+** visualinfo is a small utility that displays all available visuals,
+** aka. pixelformats, in an OpenGL system along with renderer version
+** information. It shows a table of all the visuals that support OpenGL
+** along with their capabilities. The format of the table is similar to
+** that of glxinfo on Unix systems:
+**
+** visual ~= pixel format descriptor
+** id = visual id (integer from 1 - max visuals)
+** tp = type (wn: window, pb: pbuffer, wp: window & pbuffer, bm: bitmap)
+** ac = acceleration (ge: generic, fu: full, no: none)
+** fm = format (i: integer, f: float, c: color index)
+** db = double buffer (y = yes)
+** sw = swap method (x: exchange, c: copy, u: undefined)
+** st = stereo (y = yes)
+** sz = total # bits
+** r = # bits of red
+** g = # bits of green
+** b = # bits of blue
+** a = # bits of alpha
+** axbf = # aux buffers
+** dpth = # bits of depth
+** stcl = # bits of stencil
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <GL/glew.h>
+#if defined(GLEW_OSMESA)
+#define GLAPI extern
+#include <GL/osmesa.h>
+#elif defined(GLEW_EGL)
+#include <GL/eglew.h>
+#elif defined(_WIN32)
+#include <GL/wglew.h>
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLTypes.h>
+#elif !defined(__HAIKU__)
+#include <GL/glxew.h>
+#endif
+
+typedef struct GLContextStruct
+{
+#if defined(GLEW_OSMESA)
+ OSMesaContext ctx;
+#elif defined(GLEW_EGL)
+ EGLContext ctx;
+#elif defined(_WIN32)
+ HWND wnd;
+ HDC dc;
+ HGLRC rc;
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+ CGLContextObj ctx, octx;
+#elif !defined(__HAIKU__)
+ Display* dpy;
+ XVisualInfo* vi;
+ GLXContext ctx;
+ Window wnd;
+ Colormap cmap;
+#endif
+} GLContext;
+
+void InitContext (GLContext* ctx);
+GLboolean CreateContext (GLContext* ctx);
+void DestroyContext (GLContext* ctx);
+void VisualInfo (GLContext* ctx);
+void PrintExtensions (const char* s);
+GLboolean ParseArgs (int argc, char** argv);
+
+int showall = 0;
+int displaystdout = 0;
+int verbose = 0;
+int drawableonly = 0;
+
+char* display = NULL;
+int visual = -1;
+
+FILE* file = 0;
+
+int
+main (int argc, char** argv)
+{
+ GLenum err;
+ GLContext ctx;
+
+ /* ---------------------------------------------------------------------- */
+ /* parse arguments */
+ if (GL_TRUE == ParseArgs(argc-1, argv+1))
+ {
+#if defined(_WIN32)
+ fprintf(stderr, "Usage: visualinfo [-a] [-s] [-h] [-pf <id>]\n");
+ fprintf(stderr, " -a: show all visuals\n");
+ fprintf(stderr, " -s: display to stdout instead of visualinfo.txt\n");
+ fprintf(stderr, " -pf <id>: use given pixelformat\n");
+ fprintf(stderr, " -h: this screen\n");
+#else
+ fprintf(stderr, "Usage: visualinfo [-h] [-display <display>] [-visual <id>]\n");
+ fprintf(stderr, " -h: this screen\n");
+ fprintf(stderr, " -display <display>: use given display\n");
+ fprintf(stderr, " -visual <id>: use given visual\n");
+#endif
+ return 1;
+ }
+
+#if defined(GLEW_EGL)
+ {
+ fprintf(stderr, "Error [main]: EGL not supported by visualinfo.\n");
+ return 1;
+ }
+#endif
+
+ /* ---------------------------------------------------------------------- */
+ /* create OpenGL rendering context */
+ InitContext(&ctx);
+ if (GL_TRUE == CreateContext(&ctx))
+ {
+ fprintf(stderr, "Error: CreateContext failed\n");
+ DestroyContext(&ctx);
+ return 1;
+ }
+
+ /* ---------------------------------------------------------------------- */
+ /* initialize GLEW */
+ glewExperimental = GL_TRUE;
+ err = glewInit();
+ if (GLEW_OK != err)
+ {
+ fprintf(stderr, "Error [main]: glewInit failed: %s\n", glewGetErrorString(err));
+ DestroyContext(&ctx);
+ return 1;
+ }
+
+ /* ---------------------------------------------------------------------- */
+ /* open file */
+#if defined(_WIN32)
+ if (!displaystdout)
+ {
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ if (fopen_s(&file, "visualinfo.txt", "w") != 0)
+ file = stdout;
+#else
+ file = fopen("visualinfo.txt", "w");
+#endif
+ }
+ if (file == NULL)
+ file = stdout;
+#else
+ file = stdout;
+#endif
+
+ /* ---------------------------------------------------------------------- */
+ /* output header information */
+ /* OpenGL extensions */
+ fprintf(file, "OpenGL vendor string: %s\n", glGetString(GL_VENDOR));
+ fprintf(file, "OpenGL renderer string: %s\n", glGetString(GL_RENDERER));
+ fprintf(file, "OpenGL version string: %s\n", glGetString(GL_VERSION));
+ fprintf(file, "OpenGL extensions (GL_): \n");
+ PrintExtensions((const char*)glGetString(GL_EXTENSIONS));
+
+#ifndef GLEW_NO_GLU
+ /* GLU extensions */
+ fprintf(file, "GLU version string: %s\n", gluGetString(GLU_VERSION));
+ fprintf(file, "GLU extensions (GLU_): \n");
+ PrintExtensions((const char*)gluGetString(GLU_EXTENSIONS));
+#endif
+
+ /* ---------------------------------------------------------------------- */
+ /* extensions string */
+#if defined(GLEW_OSMESA)
+#elif defined(GLEW_EGL)
+#elif defined(_WIN32)
+ /* WGL extensions */
+ if (WGLEW_ARB_extensions_string || WGLEW_EXT_extensions_string)
+ {
+ fprintf(file, "WGL extensions (WGL_): \n");
+ PrintExtensions(wglGetExtensionsStringARB ?
+ (const char*)wglGetExtensionsStringARB(ctx.dc) :
+ (const char*)wglGetExtensionsStringEXT());
+ }
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+#elif defined(__HAIKU__)
+
+ /* TODO */
+
+#else
+ /* GLX extensions */
+ fprintf(file, "GLX extensions (GLX_): \n");
+ PrintExtensions(glXQueryExtensionsString(glXGetCurrentDisplay(),
+ DefaultScreen(glXGetCurrentDisplay())));
+#endif
+
+ /* ---------------------------------------------------------------------- */
+ /* enumerate all the formats */
+ VisualInfo(&ctx);
+
+ /* ---------------------------------------------------------------------- */
+ /* release resources */
+ DestroyContext(&ctx);
+ if (file != stdout)
+ fclose(file);
+ return 0;
+}
+
+/* do the magic to separate all extensions with comma's, except
+ for the last one that _may_ terminate in a space. */
+void PrintExtensions (const char* s)
+{
+ char t[80];
+ int i=0;
+ char* p=0;
+
+ t[79] = '\0';
+ while (*s)
+ {
+ t[i++] = *s;
+ if(*s == ' ')
+ {
+ if (*(s+1) != '\0') {
+ t[i-1] = ',';
+ t[i] = ' ';
+ p = &t[i++];
+ }
+ else /* zoinks! last one terminated in a space! */
+ {
+ t[i-1] = '\0';
+ }
+ }
+ if(i > 80 - 5)
+ {
+ *p = t[i] = '\0';
+ fprintf(file, " %s\n", t);
+ p++;
+ i = (int)strlen(p);
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ strcpy_s(t, sizeof(t), p);
+#else
+ strcpy(t, p);
+#endif
+ }
+ s++;
+ }
+ t[i] = '\0';
+ fprintf(file, " %s.\n", t);
+}
+
+/* ---------------------------------------------------------------------- */
+
+#if defined(GLEW_OSMESA) || defined(GLEW_EGL)
+
+void
+VisualInfo (GLContext* ctx)
+{
+}
+
+#elif defined(_WIN32)
+
+void
+VisualInfoARB (GLContext* ctx)
+{
+ int attrib[32], value[32], n_attrib, n_pbuffer=0, n_float=0;
+ int i, pf, maxpf;
+ unsigned int c;
+
+ /* to get pbuffer capable pixel formats */
+ attrib[0] = WGL_DRAW_TO_PBUFFER_ARB;
+ attrib[1] = GL_TRUE;
+ attrib[2] = 0;
+ wglChoosePixelFormatARB(ctx->dc, attrib, 0, 1, &pf, &c);
+ /* query number of pixel formats */
+ attrib[0] = WGL_NUMBER_PIXEL_FORMATS_ARB;
+ wglGetPixelFormatAttribivARB(ctx->dc, 0, 0, 1, attrib, value);
+ maxpf = value[0];
+ for (i=0; i<32; i++)
+ value[i] = 0;
+
+ attrib[0] = WGL_SUPPORT_OPENGL_ARB;
+ attrib[1] = WGL_DRAW_TO_WINDOW_ARB;
+ attrib[2] = WGL_DRAW_TO_BITMAP_ARB;
+ attrib[3] = WGL_ACCELERATION_ARB;
+ /* WGL_NO_ACCELERATION_ARB, WGL_GENERIC_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB */
+ attrib[4] = WGL_SWAP_METHOD_ARB;
+ /* WGL_SWAP_EXCHANGE_ARB, WGL_SWAP_COPY_ARB, WGL_SWAP_UNDEFINED_ARB */
+ attrib[5] = WGL_DOUBLE_BUFFER_ARB;
+ attrib[6] = WGL_STEREO_ARB;
+ attrib[7] = WGL_PIXEL_TYPE_ARB;
+ /* WGL_TYPE_RGBA_ARB, WGL_TYPE_COLORINDEX_ARB,
+ WGL_TYPE_RGBA_FLOAT_ATI (WGL_ATI_pixel_format_float) */
+ /* Color buffer information */
+ attrib[8] = WGL_COLOR_BITS_ARB;
+ attrib[9] = WGL_RED_BITS_ARB;
+ attrib[10] = WGL_GREEN_BITS_ARB;
+ attrib[11] = WGL_BLUE_BITS_ARB;
+ attrib[12] = WGL_ALPHA_BITS_ARB;
+ /* Accumulation buffer information */
+ attrib[13] = WGL_ACCUM_BITS_ARB;
+ attrib[14] = WGL_ACCUM_RED_BITS_ARB;
+ attrib[15] = WGL_ACCUM_GREEN_BITS_ARB;
+ attrib[16] = WGL_ACCUM_BLUE_BITS_ARB;
+ attrib[17] = WGL_ACCUM_ALPHA_BITS_ARB;
+ /* Depth, stencil, and aux buffer information */
+ attrib[18] = WGL_DEPTH_BITS_ARB;
+ attrib[19] = WGL_STENCIL_BITS_ARB;
+ attrib[20] = WGL_AUX_BUFFERS_ARB;
+ /* Layer information */
+ attrib[21] = WGL_NUMBER_OVERLAYS_ARB;
+ attrib[22] = WGL_NUMBER_UNDERLAYS_ARB;
+ attrib[23] = WGL_SWAP_LAYER_BUFFERS_ARB;
+ attrib[24] = WGL_SAMPLES_ARB;
+ attrib[25] = WGL_SUPPORT_GDI_ARB;
+ n_attrib = 26;
+ if (WGLEW_ARB_pbuffer)
+ {
+ attrib[n_attrib] = WGL_DRAW_TO_PBUFFER_ARB;
+ n_pbuffer = n_attrib;
+ n_attrib++;
+ }
+ if (WGLEW_NV_float_buffer)
+ {
+ attrib[n_attrib] = WGL_FLOAT_COMPONENTS_NV;
+ n_float = n_attrib;
+ n_attrib++;
+ }
+
+ if (!verbose)
+ {
+ /* print table header */
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-----------------+----------+\n");
+ fprintf(file, " | | visual | color | ax dp st | accum | layer |\n");
+ fprintf(file, " | id | tp ac gd fm db sw st ms | sz r g b a | bf th cl | sz r g b a | ov un sw |\n");
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-----------------+----------+\n");
+ /* loop through all the pixel formats */
+ for(i = 1; i <= maxpf; i++)
+ {
+ wglGetPixelFormatAttribivARB(ctx->dc, i, 0, n_attrib, attrib, value);
+ /* only describe this format if it supports OpenGL */
+ if (!value[0]) continue;
+ /* by default show only fully accelerated window or pbuffer capable visuals */
+ if (!showall
+ && ((value[2] && !value[1])
+ || (!WGLEW_ARB_pbuffer || !value[n_pbuffer])
+ || (value[3] != WGL_FULL_ACCELERATION_ARB))) continue;
+ /* print out the information for this visual */
+ /* visual id */
+ fprintf(file, " |% 4d | ", i);
+ /* visual type */
+ if (value[1])
+ {
+ if (WGLEW_ARB_pbuffer && value[n_pbuffer]) fprintf(file, "wp ");
+ else fprintf(file, "wn ");
+ }
+ else
+ {
+ if (value[2]) fprintf(file, "bm ");
+ else if (WGLEW_ARB_pbuffer && value[n_pbuffer]) fprintf(file, "pb ");
+ }
+ /* acceleration */
+ fprintf(file, "%s ", value[3] == WGL_FULL_ACCELERATION_ARB ? "fu" :
+ value[3] == WGL_GENERIC_ACCELERATION_ARB ? "ge" :
+ value[3] == WGL_NO_ACCELERATION_ARB ? "no" : ". ");
+ /* gdi support */
+ fprintf(file, " %c ", value[25] ? 'y' : '.');
+ /* format */
+ if (WGLEW_NV_float_buffer && value[n_float]) fprintf(file, " f ");
+ else if (WGLEW_ATI_pixel_format_float && value[7] == WGL_TYPE_RGBA_FLOAT_ATI) fprintf(file, " f ");
+ else if (value[7] == WGL_TYPE_RGBA_ARB) fprintf(file, " i ");
+ else if (value[7] == WGL_TYPE_COLORINDEX_ARB) fprintf(file, " c ");
+ else if (value[7] == WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT) fprintf(file," p ");
+ else fprintf(file," ? ");
+ /* double buffer */
+ fprintf(file, " %c ", value[5] ? 'y' : '.');
+ /* swap method */
+ if (value[4] == WGL_SWAP_EXCHANGE_ARB) fprintf(file, " x ");
+ else if (value[4] == WGL_SWAP_COPY_ARB) fprintf(file, " c ");
+ else if (value[4] == WGL_SWAP_UNDEFINED_ARB) fprintf(file, " . ");
+ else fprintf(file, " . ");
+ /* stereo */
+ fprintf(file, " %c ", value[6] ? 'y' : '.');
+ /* multisample */
+ if (value[24] > 0)
+ fprintf(file, "%2d | ", value[24]);
+ else
+ fprintf(file, " . | ");
+ /* color size */
+ if (value[8]) fprintf(file, "%3d ", value[8]);
+ else fprintf(file, " . ");
+ /* red */
+ if (value[9]) fprintf(file, "%2d ", value[9]);
+ else fprintf(file, " . ");
+ /* green */
+ if (value[10]) fprintf(file, "%2d ", value[10]);
+ else fprintf(file, " . ");
+ /* blue */
+ if (value[11]) fprintf(file, "%2d ", value[11]);
+ else fprintf(file, " . ");
+ /* alpha */
+ if (value[12]) fprintf(file, "%2d | ", value[12]);
+ else fprintf(file, " . | ");
+ /* aux buffers */
+ if (value[20]) fprintf(file, "%2d ", value[20]);
+ else fprintf(file, " . ");
+ /* depth */
+ if (value[18]) fprintf(file, "%2d ", value[18]);
+ else fprintf(file, " . ");
+ /* stencil */
+ if (value[19]) fprintf(file, "%2d | ", value[19]);
+ else fprintf(file, " . | ");
+ /* accum size */
+ if (value[13]) fprintf(file, "%3d ", value[13]);
+ else fprintf(file, " . ");
+ /* accum red */
+ if (value[14]) fprintf(file, "%2d ", value[14]);
+ else fprintf(file, " . ");
+ /* accum green */
+ if (value[15]) fprintf(file, "%2d ", value[15]);
+ else fprintf(file, " . ");
+ /* accum blue */
+ if (value[16]) fprintf(file, "%2d ", value[16]);
+ else fprintf(file, " . ");
+ /* accum alpha */
+ if (value[17]) fprintf(file, "%2d | ", value[17]);
+ else fprintf(file, " . | ");
+ /* overlay */
+ if (value[21]) fprintf(file, "%2d ", value[21]);
+ else fprintf(file, " . ");
+ /* underlay */
+ if (value[22]) fprintf(file, "%2d ", value[22]);
+ else fprintf(file, " . ");
+ /* layer swap */
+ if (value[23]) fprintf(file, "y ");
+ else fprintf(file, " . ");
+ fprintf(file, "|\n");
+ }
+ /* print table footer */
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-----------------+----------+\n");
+ fprintf(file, " | | visual | color | ax dp st | accum | layer |\n");
+ fprintf(file, " | id | tp ac gd fm db sw st ms | sz r g b a | bf th cl | sz r g b a | ov un sw |\n");
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-----------------+----------+\n");
+ }
+ else /* verbose */
+ {
+#if 0
+ fprintf(file, "\n");
+ /* loop through all the pixel formats */
+ for(i = 1; i <= maxpf; i++)
+ {
+ DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
+ /* only describe this format if it supports OpenGL */
+ if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)
+ || (drawableonly && !(pfd.dwFlags & PFD_DRAW_TO_WINDOW))) continue;
+ fprintf(file, "Visual ID: %2d depth=%d class=%s\n", i, pfd.cDepthBits,
+ pfd.cColorBits <= 8 ? "PseudoColor" : "TrueColor");
+ fprintf(file, " bufferSize=%d level=%d renderType=%s doubleBuffer=%d stereo=%d\n", pfd.cColorBits, pfd.bReserved, pfd.iPixelType == PFD_TYPE_RGBA ? "rgba" : "ci", pfd.dwFlags & PFD_DOUBLEBUFFER, pfd.dwFlags & PFD_STEREO);
+ fprintf(file, " generic=%d generic accelerated=%d\n", (pfd.dwFlags & PFD_GENERIC_FORMAT) == PFD_GENERIC_FORMAT, (pfd.dwFlags & PFD_GENERIC_ACCELERATED) == PFD_GENERIC_ACCELERATED);
+ fprintf(file, " rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cRedBits, pfd.cGreenBits, pfd.cBlueBits, pfd.cAlphaBits);
+ fprintf(file, " auxBuffers=%d depthSize=%d stencilSize=%d\n", pfd.cAuxBuffers, pfd.cDepthBits, pfd.cStencilBits);
+ fprintf(file, " accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cAccumRedBits, pfd.cAccumGreenBits, pfd.cAccumBlueBits, pfd.cAccumAlphaBits);
+ fprintf(file, " multiSample=%d multisampleBuffers=%d\n", 0, 0);
+ fprintf(file, " Opaque.\n");
+ }
+#endif
+ }
+}
+
+void
+VisualInfoGDI (GLContext* ctx)
+{
+ int i, maxpf;
+ PIXELFORMATDESCRIPTOR pfd;
+
+ /* calling DescribePixelFormat() with NULL pfd (!!!) return maximum
+ number of pixel formats */
+ maxpf = DescribePixelFormat(ctx->dc, 1, 0, NULL);
+
+ if (!verbose)
+ {
+ fprintf(file, "-----------------------------------------------------------------------------\n");
+ fprintf(file, " visual x bf lv rg d st ge ge r g b a ax dp st accum buffs ms \n");
+ fprintf(file, " id dep tp sp sz l ci b ro ne ac sz sz sz sz bf th cl sz r g b a ns b\n");
+ fprintf(file, "-----------------------------------------------------------------------------\n");
+
+ /* loop through all the pixel formats */
+ for(i = 1; i <= maxpf; i++)
+ {
+ DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
+ /* only describe this format if it supports OpenGL */
+ if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)
+ || (drawableonly && (pfd.dwFlags & PFD_DRAW_TO_BITMAP))) continue;
+ /* other criteria could be tested here for actual pixel format
+ choosing in an application:
+
+ for (...each pixel format...) {
+ if (pfd.dwFlags & PFD_SUPPORT_OPENGL &&
+ pfd.dwFlags & PFD_DOUBLEBUFFER &&
+ pfd.cDepthBits >= 24 &&
+ pfd.cColorBits >= 24)
+ {
+ goto found;
+ }
+ }
+ ... not found so exit ...
+ found:
+ ... found so use it ...
+ */
+ /* print out the information for this pixel format */
+ fprintf(file, "0x%02x ", i);
+ fprintf(file, "%3d ", pfd.cColorBits);
+ if(pfd.dwFlags & PFD_DRAW_TO_WINDOW) fprintf(file, "wn ");
+ else if(pfd.dwFlags & PFD_DRAW_TO_BITMAP) fprintf(file, "bm ");
+ else fprintf(file, "pb ");
+ /* should find transparent pixel from LAYERPLANEDESCRIPTOR */
+ fprintf(file, " . ");
+ fprintf(file, "%3d ", pfd.cColorBits);
+ /* bReserved field indicates number of over/underlays */
+ if(pfd.bReserved) fprintf(file, " %d ", pfd.bReserved);
+ else fprintf(file, " . ");
+ fprintf(file, " %c ", pfd.iPixelType == PFD_TYPE_RGBA ? 'r' : 'c');
+ fprintf(file, "%c ", pfd.dwFlags & PFD_DOUBLEBUFFER ? 'y' : '.');
+ fprintf(file, " %c ", pfd.dwFlags & PFD_STEREO ? 'y' : '.');
+ /* added: */
+ fprintf(file, " %c ", pfd.dwFlags & PFD_GENERIC_FORMAT ? 'y' : '.');
+ fprintf(file, " %c ", pfd.dwFlags & PFD_GENERIC_ACCELERATED ? 'y' : '.');
+ if(pfd.cRedBits && pfd.iPixelType == PFD_TYPE_RGBA)
+ fprintf(file, "%2d ", pfd.cRedBits);
+ else fprintf(file, " . ");
+ if(pfd.cGreenBits && pfd.iPixelType == PFD_TYPE_RGBA)
+ fprintf(file, "%2d ", pfd.cGreenBits);
+ else fprintf(file, " . ");
+ if(pfd.cBlueBits && pfd.iPixelType == PFD_TYPE_RGBA)
+ fprintf(file, "%2d ", pfd.cBlueBits);
+ else fprintf(file, " . ");
+ if(pfd.cAlphaBits && pfd.iPixelType == PFD_TYPE_RGBA)
+ fprintf(file, "%2d ", pfd.cAlphaBits);
+ else fprintf(file, " . ");
+ if(pfd.cAuxBuffers) fprintf(file, "%2d ", pfd.cAuxBuffers);
+ else fprintf(file, " . ");
+ if(pfd.cDepthBits) fprintf(file, "%2d ", pfd.cDepthBits);
+ else fprintf(file, " . ");
+ if(pfd.cStencilBits) fprintf(file, "%2d ", pfd.cStencilBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumBits) fprintf(file, "%3d ", pfd.cAccumBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumRedBits) fprintf(file, "%2d ", pfd.cAccumRedBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumGreenBits) fprintf(file, "%2d ", pfd.cAccumGreenBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumBlueBits) fprintf(file, "%2d ", pfd.cAccumBlueBits);
+ else fprintf(file, " . ");
+ if(pfd.cAccumAlphaBits) fprintf(file, "%2d ", pfd.cAccumAlphaBits);
+ else fprintf(file, " . ");
+ /* no multisample in win32 */
+ fprintf(file, " . .\n");
+ }
+ /* print table footer */
+ fprintf(file, "-----------------------------------------------------------------------------\n");
+ fprintf(file, " visual x bf lv rg d st ge ge r g b a ax dp st accum buffs ms \n");
+ fprintf(file, " id dep tp sp sz l ci b ro ne ac sz sz sz sz bf th cl sz r g b a ns b\n");
+ fprintf(file, "-----------------------------------------------------------------------------\n");
+ }
+ else /* verbose */
+ {
+ fprintf(file, "\n");
+ /* loop through all the pixel formats */
+ for(i = 1; i <= maxpf; i++)
+ {
+ DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
+ /* only describe this format if it supports OpenGL */
+ if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)
+ || (drawableonly && !(pfd.dwFlags & PFD_DRAW_TO_WINDOW))) continue;
+ fprintf(file, "Visual ID: %2d depth=%d class=%s\n", i, pfd.cDepthBits,
+ pfd.cColorBits <= 8 ? "PseudoColor" : "TrueColor");
+ fprintf(file, " bufferSize=%d level=%d renderType=%s doubleBuffer=%ld stereo=%ld\n", pfd.cColorBits, pfd.bReserved, pfd.iPixelType == PFD_TYPE_RGBA ? "rgba" : "ci", (long) (pfd.dwFlags & PFD_DOUBLEBUFFER), (long) (pfd.dwFlags & PFD_STEREO));
+ fprintf(file, " generic=%d generic accelerated=%d\n", (pfd.dwFlags & PFD_GENERIC_FORMAT) == PFD_GENERIC_FORMAT, (pfd.dwFlags & PFD_GENERIC_ACCELERATED) == PFD_GENERIC_ACCELERATED);
+ fprintf(file, " rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cRedBits, pfd.cGreenBits, pfd.cBlueBits, pfd.cAlphaBits);
+ fprintf(file, " auxBuffers=%d depthSize=%d stencilSize=%d\n", pfd.cAuxBuffers, pfd.cDepthBits, pfd.cStencilBits);
+ fprintf(file, " accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cAccumRedBits, pfd.cAccumGreenBits, pfd.cAccumBlueBits, pfd.cAccumAlphaBits);
+ fprintf(file, " multiSample=%d multisampleBuffers=%d\n", 0, 0);
+ fprintf(file, " Opaque.\n");
+ }
+ }
+}
+
+void
+VisualInfo (GLContext* ctx)
+{
+ if (WGLEW_ARB_pixel_format)
+ VisualInfoARB(ctx);
+ else
+ VisualInfoGDI(ctx);
+}
+
+/* ---------------------------------------------------------------------- */
+
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+void
+VisualInfo (__attribute__((unused)) GLContext* ctx)
+{
+/*
+ int attrib[] = { AGL_RGBA, AGL_NONE };
+ AGLPixelFormat pf;
+ GLint value;
+ pf = aglChoosePixelFormat(NULL, 0, attrib);
+ while (pf != NULL)
+ {
+ aglDescribePixelFormat(pf, GL_RGBA, &value);
+ fprintf(stderr, "%d\n", value);
+ pf = aglNextPixelFormat(pf);
+ }
+*/
+}
+
+/* ---------------------------------------------------------------------- */
+
+#elif defined(__HAIKU__)
+
+void
+VisualInfo (GLContext* ctx)
+{
+ /* TODO */
+}
+
+#else /* GLX */
+
+void
+VisualInfo (GLContext* ctx)
+{
+ int n_fbc;
+ GLXFBConfig* fbc;
+ int value, ret, i;
+
+ fbc = glXGetFBConfigs(ctx->dpy, DefaultScreen(ctx->dpy), &n_fbc);
+
+ if (fbc)
+ {
+ if (!verbose)
+ {
+ /* print table header */
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-------------+-------+------+\n");
+ fprintf(file, " | | visual | color | ax dp st | accum | ms | cav |\n");
+ fprintf(file, " | id | tp xr cl fm db st lv xp | sz r g b a | bf th cl | r g b a | ns b | eat |\n");
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-------------+-------+------+\n");
+ /* loop through all the fbcs */
+ for (i=0; i<n_fbc; i++)
+ {
+ /* print out the information for this fbc */
+ /* visual id */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_FBCONFIG_ID, &value);
+ if (ret != Success)
+ {
+ fprintf(file, "| ? |");
+ }
+ else
+ {
+ fprintf(file, " |% 4d | ", value);
+ }
+ /* visual type */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DRAWABLE_TYPE, &value);
+ if (ret != Success)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value & GLX_WINDOW_BIT)
+ {
+ if (value & GLX_PBUFFER_BIT)
+ {
+ fprintf(file, "wp ");
+ }
+ else
+ {
+ fprintf(file, "wn ");
+ }
+ }
+ else
+ {
+ if (value & GLX_PBUFFER_BIT)
+ {
+ fprintf(file, "pb ");
+ }
+ else if (value & GLX_PIXMAP_BIT)
+ {
+ fprintf(file, "pm ");
+ }
+ else
+ {
+ fprintf(file, " ? ");
+ }
+ }
+ }
+ /* x renderable */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_X_RENDERABLE, &value);
+ if (ret != Success)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ fprintf(file, value ? " y " : " n ");
+ }
+ /* class */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_X_VISUAL_TYPE, &value);
+ if (ret != Success)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (GLX_TRUE_COLOR == value)
+ fprintf(file, "tc ");
+ else if (GLX_DIRECT_COLOR == value)
+ fprintf(file, "dc ");
+ else if (GLX_PSEUDO_COLOR == value)
+ fprintf(file, "pc ");
+ else if (GLX_STATIC_COLOR == value)
+ fprintf(file, "sc ");
+ else if (GLX_GRAY_SCALE == value)
+ fprintf(file, "gs ");
+ else if (GLX_STATIC_GRAY == value)
+ fprintf(file, "sg ");
+ else if (GLX_X_VISUAL_TYPE == value)
+ fprintf(file, " . ");
+ else
+ fprintf(file, " ? ");
+ }
+ /* format */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_RENDER_TYPE, &value);
+ if (ret != Success)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (GLXEW_NV_float_buffer)
+ {
+ int ret2, value2;
+ ret2 = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_FLOAT_COMPONENTS_NV, &value2);
+ if (Success == ret2 && GL_TRUE == value2)
+ {
+ fprintf(file, " f ");
+ }
+ else if (value & GLX_RGBA_BIT)
+ fprintf(file, " i ");
+ else if (value & GLX_COLOR_INDEX_BIT)
+ fprintf(file, " c ");
+ else
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value & GLX_RGBA_FLOAT_ATI_BIT)
+ fprintf(file, " f ");
+ else if (value & GLX_RGBA_BIT)
+ fprintf(file, " i ");
+ else if (value & GLX_COLOR_INDEX_BIT)
+ fprintf(file, " c ");
+ else
+ fprintf(file, " ? ");
+ }
+ }
+ /* double buffer */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DOUBLEBUFFER, &value);
+ fprintf(file, " %c ", Success != ret ? '?' : (value ? 'y' : '.'));
+ /* stereo */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_STEREO, &value);
+ fprintf(file, " %c ", Success != ret ? '?' : (value ? 'y' : '.'));
+ /* level */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_LEVEL, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ fprintf(file, "%2d ", value);
+ }
+ /* transparency */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_TRANSPARENT_TYPE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ if (GLX_TRANSPARENT_RGB == value)
+ fprintf(file, " r | ");
+ else if (GLX_TRANSPARENT_INDEX == value)
+ fprintf(file, " i | ");
+ else if (GLX_NONE == value)
+ fprintf(file, " . | ");
+ else
+ fprintf(file, " ? | ");
+ }
+ /* color size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_BUFFER_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%3d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* red size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_RED_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* green size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_GREEN_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* blue size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_BLUE_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* alpha size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ALPHA_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d | ", value);
+ else
+ fprintf(file, " . | ");
+ }
+ /* aux buffers */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_AUX_BUFFERS, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* depth size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DEPTH_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* stencil size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_STENCIL_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d | ", value);
+ else
+ fprintf(file, " . | ");
+ }
+ /* accum red size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_RED_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* accum green size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_GREEN_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* accum blue size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_BLUE_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d ", value);
+ else
+ fprintf(file, " . ");
+ }
+ /* accum alpha size */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_ALPHA_SIZE, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ if (value)
+ fprintf(file, "%2d | ", value);
+ else
+ fprintf(file, " . | ");
+ }
+ /* multisample */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_SAMPLES, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? ");
+ }
+ else
+ {
+ fprintf(file, "%2d ", value);
+ }
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_SAMPLE_BUFFERS, &value);
+ if (Success != ret)
+ {
+ fprintf(file, " ? | ");
+ }
+ else
+ {
+ fprintf(file, "%2d | ", value);
+ }
+ /* caveat */
+ ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_CONFIG_CAVEAT, &value);
+ if (Success != ret)
+ {
+ fprintf(file, "???? |");
+ }
+ else
+ {
+ if (GLX_NONE == value)
+ fprintf(file, "none |\n");
+ else if (GLX_SLOW_CONFIG == value)
+ fprintf(file, "slow |\n");
+ else if (GLX_NON_CONFORMANT_CONFIG == value)
+ fprintf(file, "ncft |\n");
+ else
+ fprintf(file, "???? |\n");
+ }
+ }
+ /* print table footer */
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-------------+-------+------+\n");
+ fprintf(file, " | id | tp xr cl fm db st lv xp | sz r g b a | bf th cl | r g b a | ns b | eat |\n");
+ fprintf(file, " | | visual | color | ax dp st | accum | ms | cav |\n");
+ fprintf(file, " +-----+-------------------------+-----------------+----------+-------------+-------+------+\n");
+ }
+ }
+}
+
+#endif
+
+/* ------------------------------------------------------------------------ */
+
+#if defined(GLEW_OSMESA)
+void InitContext (GLContext* ctx)
+{
+ ctx->ctx = NULL;
+}
+
+static const GLint osmFormat = GL_UNSIGNED_BYTE;
+static const GLint osmWidth = 640;
+static const GLint osmHeight = 480;
+static GLubyte *osmPixels = NULL;
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ if (NULL == ctx) return GL_TRUE;
+ ctx->ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);
+ if (NULL == ctx->ctx) return GL_TRUE;
+ if (NULL == osmPixels)
+ {
+ osmPixels = (GLubyte *) calloc(osmWidth*osmHeight*4, 1);
+ }
+ if (!OSMesaMakeCurrent(ctx->ctx, osmPixels, GL_UNSIGNED_BYTE, osmWidth, osmHeight))
+ {
+ return GL_TRUE;
+ }
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL == ctx) return;
+ if (NULL != ctx->ctx) OSMesaDestroyContext(ctx->ctx);
+}
+/* ------------------------------------------------------------------------ */
+
+#elif defined(GLEW_EGL)
+void InitContext (GLContext* ctx)
+{
+ ctx->ctx = NULL;
+}
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL == ctx) return;
+ return;
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(_WIN32)
+
+void InitContext (GLContext* ctx)
+{
+ ctx->wnd = NULL;
+ ctx->dc = NULL;
+ ctx->rc = NULL;
+}
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ WNDCLASS wc;
+ PIXELFORMATDESCRIPTOR pfd;
+ /* check for input */
+ if (NULL == ctx) return GL_TRUE;
+ /* register window class */
+ ZeroMemory(&wc, sizeof(WNDCLASS));
+ wc.hInstance = GetModuleHandle(NULL);
+ wc.lpfnWndProc = DefWindowProc;
+ wc.lpszClassName = "GLEW";
+ if (0 == RegisterClass(&wc)) return GL_TRUE;
+ /* create window */
+ ctx->wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL,
+ GetModuleHandle(NULL), NULL);
+ if (NULL == ctx->wnd) return GL_TRUE;
+ /* get the device context */
+ ctx->dc = GetDC(ctx->wnd);
+ if (NULL == ctx->dc) return GL_TRUE;
+ /* find pixel format */
+ ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
+ if (visual == -1) /* find default */
+ {
+ pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
+ pfd.nVersion = 1;
+ pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+ visual = ChoosePixelFormat(ctx->dc, &pfd);
+ if (0 == visual) return GL_TRUE;
+ }
+ /* set the pixel format for the dc */
+ if (FALSE == SetPixelFormat(ctx->dc, visual, &pfd)) return GL_TRUE;
+ /* create rendering context */
+ ctx->rc = wglCreateContext(ctx->dc);
+ if (NULL == ctx->rc) return GL_TRUE;
+ if (FALSE == wglMakeCurrent(ctx->dc, ctx->rc)) return GL_TRUE;
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL == ctx) return;
+ if (NULL != ctx->rc) wglMakeCurrent(NULL, NULL);
+ if (NULL != ctx->rc) wglDeleteContext(wglGetCurrentContext());
+ if (NULL != ctx->wnd && NULL != ctx->dc) ReleaseDC(ctx->wnd, ctx->dc);
+ if (NULL != ctx->wnd) DestroyWindow(ctx->wnd);
+ UnregisterClass("GLEW", GetModuleHandle(NULL));
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
+
+void InitContext (GLContext* ctx)
+{
+ ctx->ctx = NULL;
+ ctx->octx = NULL;
+}
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ CGLPixelFormatAttribute attrib[] = { kCGLPFAAccelerated, 0 };
+ CGLPixelFormatObj pf;
+ GLint npix;
+ CGLError error;
+ /* check input */
+ if (NULL == ctx) return GL_TRUE;
+ error = CGLChoosePixelFormat(attrib, &pf, &npix);
+ if (error) return GL_TRUE;
+ error = CGLCreateContext(pf, NULL, &ctx->ctx);
+ if (error) return GL_TRUE;
+ CGLReleasePixelFormat(pf);
+ ctx->octx = CGLGetCurrentContext();
+ error = CGLSetCurrentContext(ctx->ctx);
+ if (error) return GL_TRUE;
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL == ctx) return;
+ CGLSetCurrentContext(ctx->octx);
+ if (NULL != ctx->ctx) CGLReleaseContext(ctx->ctx);
+}
+
+/* ------------------------------------------------------------------------ */
+
+#elif defined(__HAIKU__)
+
+void
+InitContext (GLContext* ctx)
+{
+ /* TODO */
+}
+
+GLboolean
+CreateContext (GLContext* ctx)
+{
+ /* TODO */
+ return GL_FALSE;
+}
+
+void
+DestroyContext (GLContext* ctx)
+{
+ /* TODO */
+}
+
+/* ------------------------------------------------------------------------ */
+
+#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
+
+void InitContext (GLContext* ctx)
+{
+ ctx->dpy = NULL;
+ ctx->vi = NULL;
+ ctx->ctx = NULL;
+ ctx->wnd = 0;
+ ctx->cmap = 0;
+}
+
+GLboolean CreateContext (GLContext* ctx)
+{
+ int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None };
+ int erb, evb;
+ XSetWindowAttributes swa;
+ /* check input */
+ if (NULL == ctx) return GL_TRUE;
+ /* open display */
+ ctx->dpy = XOpenDisplay(display);
+ if (NULL == ctx->dpy) return GL_TRUE;
+ /* query for glx */
+ if (!glXQueryExtension(ctx->dpy, &erb, &evb)) return GL_TRUE;
+ /* choose visual */
+ ctx->vi = glXChooseVisual(ctx->dpy, DefaultScreen(ctx->dpy), attrib);
+ if (NULL == ctx->vi) return GL_TRUE;
+ /* create context */
+ ctx->ctx = glXCreateContext(ctx->dpy, ctx->vi, None, True);
+ if (NULL == ctx->ctx) return GL_TRUE;
+ /* create window */
+ /*wnd = XCreateSimpleWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 1, 1, 1, 0, 0);*/
+ ctx->cmap = XCreateColormap(ctx->dpy, RootWindow(ctx->dpy, ctx->vi->screen),
+ ctx->vi->visual, AllocNone);
+ swa.border_pixel = 0;
+ swa.colormap = ctx->cmap;
+ ctx->wnd = XCreateWindow(ctx->dpy, RootWindow(ctx->dpy, ctx->vi->screen),
+ 0, 0, 1, 1, 0, ctx->vi->depth, InputOutput, ctx->vi->visual,
+ CWBorderPixel | CWColormap, &swa);
+ /* make context current */
+ if (!glXMakeCurrent(ctx->dpy, ctx->wnd, ctx->ctx)) return GL_TRUE;
+ return GL_FALSE;
+}
+
+void DestroyContext (GLContext* ctx)
+{
+ if (NULL != ctx->dpy && NULL != ctx->ctx) glXDestroyContext(ctx->dpy, ctx->ctx);
+ if (NULL != ctx->dpy && 0 != ctx->wnd) XDestroyWindow(ctx->dpy, ctx->wnd);
+ if (NULL != ctx->dpy && 0 != ctx->cmap) XFreeColormap(ctx->dpy, ctx->cmap);
+ if (NULL != ctx->vi) XFree(ctx->vi);
+ if (NULL != ctx->dpy) XCloseDisplay(ctx->dpy);
+}
+
+#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */
+
+GLboolean ParseArgs (int argc, char** argv)
+{
+ int p = 0;
+ while (p < argc)
+ {
+#if defined(_WIN32)
+ if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ display = NULL;
+ visual = strtol(argv[p], NULL, 0);
+ }
+ else if (!strcmp(argv[p], "-a"))
+ {
+ showall = 1;
+ }
+ else if (!strcmp(argv[p], "-s"))
+ {
+ displaystdout = 1;
+ }
+ else if (!strcmp(argv[p], "-h"))
+ {
+ return GL_TRUE;
+ }
+ else
+ return GL_TRUE;
+#else
+ if (!strcmp(argv[p], "-display"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ display = argv[p];
+ }
+ else if (!strcmp(argv[p], "-visual"))
+ {
+ if (++p >= argc) return GL_TRUE;
+ visual = (int)strtol(argv[p], NULL, 0);
+ }
+ else if (!strcmp(argv[p], "-h"))
+ {
+ return GL_TRUE;
+ }
+ else
+ return GL_TRUE;
+#endif
+ p++;
+ }
+ return GL_FALSE;
+}
diff --git a/meshes/armadillo.obj b/meshes/armadillo.obj
new file mode 100644
index 0000000..b3832f6
--- /dev/null
+++ b/meshes/armadillo.obj
@@ -0,0 +1,752 @@
+v 0.384606628771146 -1.03037527850524 0.638549828624478
+v 0.420819697289914 -0.27833787589245 0.386675535547675
+v 0.65460854554252 -0.409615776162851 0.42529369212548
+v 0.589933697788134 -0.15031086303479 -0.0457128321848856
+v 0.671060069111727 -0.49692953250972 0.177506284133414
+v -0.208769107268531 1.60941199584921 -0.483741323707309
+v 0.537074157652053 1.34940882852662 0.102370226503105
+v -0.366111330251977 1.08305243612583 0.719146489177023
+v -0.227214745294973 0.208733762725664 0.535804205823954
+v -0.197730051138201 0.163302529322236 0.0524976367056953
+v 0.167686755233611 1.34575960962617 0.748035828362718
+v 0.299345451103035 1.68678303294118 0.237564391447355
+v -0.408656330208432 0.656189628615193 0.191410756989068
+v -0.720404118747752 -0.324270582116297 -0.0252534054348
+v 0.37421346884115 0.506588852850017 0.199915866680946
+v -0.564775010231459 1.28354368766507 -0.14301423177878
+v -1.15028324032976 1.16616489946216 -0.906652639286825
+v -1.20236048524971 1.12154246962069 -0.323408912349956
+v 0.432806807069789 0.833151248073701 -0.0368316860750206
+v -0.608368588898573 1.26617853808538 0.218009753537453
+v -1.02225402951875 1.54099818606914 -0.843223168185583
+v 0.202401615860678 1.57211961936886 -0.433701894915591
+v -0.0437830254021867 1.68640008767887 0.577173631273364
+v -0.0238455576590708 0.923381123809954 -0.25196118409797
+v 0.0570399606339802 1.08723938794452 -0.78101926341288
+v -0.819549412696172 -0.0527199419681705 0.18223537897627
+v -0.534182139380579 -0.268589109240538 0.299972872359186
+v 0.149254612346244 0.447514235611859 -0.0235892025629909
+v -0.511298955339126 -0.876923217276731 0.262744591227488
+v -0.671605904137146 -1.03750923708673 0.494558550995185
+v -0.509291277795315 0.995706311054214 -0.153181309668737
+v -0.357637284134449 1.66839996027757 0.235018793423857
+v 0.710617816163703 0.915387473847373 -0.126430232685433
+v 0.886532011803955 1.03458426782276 0.104650150829554
+v 0.99489858173008 1.70032376839352 -0.445106854630975
+v 1.16226880275219 1.40422429448524 -0.122696334956242
+v 1.13959653417334 1.41815074647061 -0.735338224934125
+v -1.2238875247277 1.41687566413497 -0.41428499098201
+v -0.557081775149768 -0.859014778552307 0.461857959271495
+v 0.385326401439541 1.53922141908717 0.501854658081875
+v 0.194276106345669 0.28839617952331 0.558106161685573
+v -0.0157844506854156 0.129632966959758 0.420605854539412
+v 0.401215147869518 -0.201461591411802 -0.0148065685520332
+v 0.429373888772548 0.803753968801995 0.478740318536037
+v 1.15505293902037 1.10183102220434 -0.11414720267422
+v 0.682286636992626 0.0391833390933107 0.28673137797547
+v -0.558359909222066 0.903534559829476 0.210625287088471
+v -0.782619349701625 0.972545474734199 -0.269270919197208
+v -0.782081200059978 1.26871620649597 -0.418882788367193
+v -0.216695446375609 1.76027281997591 -0.0688680214432539
+v -0.331530321185806 1.35792186983817 -0.33264521751207
+v 0.751755712395727 1.18491885203332 -0.200933147123841
+v 0.91857252701667 1.23040018557597 -0.00047556963634543
+v -0.356352020311175 0.308153132540303 0.0187158510505025
+v -0.670512746217131 -0.183159067454084 0.338217619742912
+v -0.693506522166642 0.273343732221605 0.356167189329586
+v 0.465648123251858 1.08028960752214 0.535330376344934
+v 0.300376868098095 1.39499266888815 -0.288902378101862
+v 0.357104387238103 -0.791010529848435 0.285977649033309
+v 1.23980227104678 1.50937214769405 -0.497768139563547
+v 0.68511687832603 -0.0462918417556055 0.049311126874009
+v 0.199762833801831 0.110083652819946 0.0133019299239111
+v 0.325873287450636 0.922165035573115 -0.266047873018494
+v 1.10756496425399 1.52497608418634 -0.332901437864263
+v -0.290533504026518 0.770724922163682 -0.27355351319913
+v 0.922784489614108 0.974865068032573 -0.306027212147992
+v 0.57880060931706 -0.888129179466771 0.409165317555706
+v -0.152453815865485 0.775457355243407 0.680386468889562
+v -0.5702482659343 1.22420238196332 0.475118633869654
+v 0.250755217215114 -1.03885626632163 0.634240595774664
+v 0.40838015818716 -1.0024631562317 0.0965374023448329
+v -1.16034027407255 1.57456326606115 -0.78242775428912
+v -0.914548262080144 1.31264120154805 -0.10854125187276
+v 0.419585804005427 1.1768119218458 -0.175113588362991
+v 0.162854878255275 0.775396500096032 0.654058524143265
+v 0.114923611171113 1.36739260161599 -0.683057436202798
+v -0.00832051561503755 1.32017758593902 -0.729109287298742
+v -0.711951785581449 -0.370712524577993 0.451850388482782
+v -0.696487277868164 0.230659785089286 0.116601990478931
+v -0.726344314130921 -0.829440608782393 0.173360465489801
+v -0.216616809195877 0.618739785695607 -0.0830633807369675
+v 0.47336565277046 0.370811527095516 0.194561609700914
+v 0.635223651096507 0.215881477204147 0.211941265300407
+v 0.514047537760497 0.981007495584353 0.311079746728762
+v -0.424163987762628 -0.711318430924939 0.291149578479586
+v 0.326244863280063 -0.27797305026975 0.29423253538409
+v -0.113303401608805 1.82018281319947 0.25066826306576
+v -0.425129195223674 0.498429970246444 0.401739759082306
+v 0.693249783640598 -0.939743010861239 0.23658163600596
+v 0.100629847702546 1.79661473412025 -0.100430144364315
+v -0.0672767526976699 1.74180959956736 -0.201525855252462
+v -0.148994903256953 0.407185975111617 -0.0740400200171493
+v -0.843318086366967 -1.0461614946411 0.321318989713332
+v 0.514356186286864 1.2462367105819 0.387962280009478
+v 0.264902661881826 0.0671339785531032 0.486680246892714
+v 0.123216953412937 0.0266394573280395 0.259786758372331
+v -0.289066839062544 1.31839669024352 0.721817791001237
+v -0.209199446631026 1.25608172359501 -0.59203529644765
+v 0.00683363753649012 0.996226148916539 -0.618487281277841
+v 0.358033704582608 -0.826094163229949 0.599658853021245
+v 0.395084034963844 -0.578434489522159 0.140197048331407
+v -0.436877468422928 -1.03986315727856 0.485564766983933
+v 0.230550028431294 -0.507346871623846 0.234249138756158
+v -0.188819123042792 0.980975075262071 -0.322593372054726
+v -0.0268370425451626 0.996747189834926 0.782188669408492
+v -0.408650082337252 0.453224517559909 0.11742803459481
+v -1.1610449390673 1.15855426567294 -0.676072310312208
+v 0.942531951304857 1.51477927215644 -0.399849198681507
+v 1.05841925525448 1.31704387505759 -0.560266474985224
+v -1.14492982967545 1.31405799952402 -0.228755425923547
+v -0.994470976429983 1.1096176651716 -0.143199041539406
+v -0.971357134774288 1.09167701695445 -0.0352655797661702
+v -0.837990999713737 -0.316246999619018 0.254448182417328
+v 0.36065460401901 0.276573581040672 0.0248702183507957
+v -0.644920723390535 0.0397354623716935 0.460963776697852
+v 0.683416913408798 -0.285753671541445 0.0682390556807816
+v -1.05310645436784 1.19387407387163 -0.71099954877174
+v -0.997455143245556 0.988173226400603 -0.410265022864379
+v -0.502437911379267 0.838153844556473 0.398142186713754
+v -0.212739601278552 -0.0171377098499778 0.317058900480018
+v 0.891884420746044 1.07786789379089 -0.413883384276391
+v 0.25104986825429 1.31812460116278 -0.205274332506342
+v -0.485172823164933 -0.46822394451179 0.0420593892703516
+v -0.134517990692131 1.7096553278071 -0.305157147795971
+v -0.333457132548249 1.96751622114087 -0.504896693527076
+v -0.189910260831911 1.74166563909842 -0.602041339075127
+v -0.00497918002369094 0.537201163810292 0.632190549805776
+v 0.193049935308837 0.63301930477333 -0.119222081281543
+v -0.309217090602216 1.54288033625005 -0.149056557952332
+v -0.383109817846789 1.59870366407703 0.43922970477572
+v -0.41949462056182 1.02888595983865 -0.248269615079623
+v 1.19490597837596 1.30859506780887 -0.517542226003364
+v 0.230608171737376 1.55677790617285 -0.302524775503453
+v 0.129220565543812 1.66177927715966 -0.251945963634896
+v 0.398927450612803 1.93153881423875 -0.560618639546611
+v 0.196922389861803 1.82800367947012 -0.43497536051025
+v 0.146228413160433 1.60858117334649 -0.517997212016144
+v -0.968982113334282 1.41736500742766 -0.666991489865484
+v -0.726468177724459 -0.921572029294922 0.0234089598260787
+v 1.27480909929679 1.26493293367652 -0.226802862398769
+v 1.1320426704873 1.12334974174886 -0.45378177226436
+v -0.409266838357264 -0.0586922844000446 0.469966678177892
+v 0.394273813220919 0.238621990839062 0.467690376022165
+v -0.691101313742127 -0.0850224795077967 -0.063669663325545
+v -1.15282104057944 1.47978769127921 -0.586035397524554
+v 0.779472699341274 1.30353171787395 -0.23339466758091
+v -0.288739276799193 1.45445105905823 0.654087664537066
+v 0.52211348627986 0.891556822707639 0.148872918924938
+v 0.0720529458931322 1.04592805766732 -0.258135247609431
+v 0.911517610173514 1.36459744755465 -0.0960907751168527
+v 0.344381161927566 -0.357902381081314 0.161518811717348
+v 0.281846958503976 -0.852354141248653 0.455187408141095
+v -1.24458536963322 1.29368135319354 -0.920318465534895
+v -1.10160876840055 1.3328826025995 -0.925348694925011
+v -0.197830769743019 0.509685570828226 0.637265110779182
+v -0.303867644131055 0.681395748732339 0.564185637488937
+v -0.593650230509049 0.913145498319908 0.0653222188550066
+v -0.921772246447868 0.989187841572027 -0.165988364823499
+v 0.127795044129871 1.77115785499478 0.342510173725193
+v -0.524535512941961 -0.176931661075482 0.00101207031760941
+v -0.0987715493350628 1.12945787728191 -0.401106175517296
+v -0.484015032830622 -0.43646481116374 0.4013418578523
+v -1.25934757998191 1.27312754446535 -0.719294685161605
+v 0.492378357355342 0.188942660217904 -0.000618782338885904
+v -0.982859542150795 -0.927879401514895 0.197068063471553
+v 0.509087032180012 0.177556419562089 0.489193099084871
+v 0.520231711347139 -1.0318835564271 0.478822642632267
+v -0.255800780227565 1.32442319117331 -0.28322011807919
+v 0.522036408777243 1.28580643065334 -0.0419542389924974
+v 0.107493704415362 0.906514652751017 -0.309241906719913
+v 0.320167721891174 0.464515231319742 0.484892786010861
+v -0.470245094606933 -0.322238451657673 0.138875110436029
+v -0.0280405987141155 1.0846325630435 -0.32534549300901
+v 0.186123662951983 1.27966315889355 -0.465004727508509
+v 0.142715189153499 1.21124681915196 -0.837972825785513
+v -0.10243409460716 1.11350257367574 -0.745523933573828
+v 1.00387249447647 1.03761511580738 -0.11005952228463
+v 0.0601081565232919 0.189579523844338 0.00853478092977697
+v 0.850229252786821 0.930502710587826 -0.0282491137845344
+v -0.811979315581687 -0.51970692376923 0.0955312433616131
+v 0.366225099945501 -0.463477237224399 0.535339771830507
+v -0.678378934301672 -1.03325847313517 0.0379928132278184
+v 0.62942407604571 -1.03044098905155 0.349340440778612
+v -0.543846959091943 0.34847390050667 0.173959203690724
+v 0.0565698857872523 0.52476878860367 -0.152628399267109
+v 0.664352320515881 1.17578889762372 0.282582669893153
+v -0.038074087926784 0.95585088785598 0.679628206075058
+v -0.133817724130525 1.45078988519844 -0.636663891464514
+v 0.186608934389391 0.680825021889842 0.66187419259627
+v 0.456810683558798 1.50081468596175 0.304031945426743
+v 1.25696950074497 1.44200413102485 -0.728990787835077
+v 1.04052537462627 1.61514977610856 -0.620887589505402
+v -0.542316712739925 0.272551312604497 0.476734713678375
+v 0.547560885939086 -0.153497243325966 0.391813282491954
+v 0.542704793209416 -0.431667059529759 0.0309682246917851
+v -0.306202238061629 0.830520081582616 0.666035505008414
+v -1.22798119798113 1.14573890101882 -0.557315273791959
+v 0.48469212616065 -0.814837565938618 0.278156048529687
+v -0.522634704886263 1.4304205443626 -0.0292286744238268
+v -0.38388333374295 1.53662991534218 0.0774722172935458
+v 0.00973892809242793 1.5540119847202 -0.546174313339331
+v 0.635514259513898 -0.674685458852909 0.330029823045645
+v -0.886889883249787 1.03142987248459 -0.484955161676472
+v -0.370175397785678 1.72902394615273 -0.453401445300026
+v 0.183780675747643 1.49740769509563 -0.537687853432963
+v 0.436848615371034 1.8785063785376 -0.443641666049362
+v -0.794966623576411 1.29694588272994 0.0696257285275319
+v -0.87951166413398 1.44744393045606 -0.47388654304913
+v 0.00854757692748565 0.357535888243717 0.618464137325627
+v 0.259250248478762 1.09324142050206 0.724818952966907
+v -0.00310396969680177 1.207461379069 -0.981938026792717
+v -0.757372838640607 0.912713191489233 0.0598809333598148
+v -0.762868426194523 1.11719701061369 -0.336068960119037
+v -0.550540830492218 1.00044265807151 0.443134584688603
+v -0.799895236642771 -0.00567575302869749 0.0348134417084243
+v 0.72307853669548 0.929148200173565 0.157443922076334
+v 0.0163065005415268 1.51512087981097 0.735737031862734
+v 0.350733465812422 1.53634318659246 -0.0920286923310779
+v 0.503935030937555 0.939603242880443 -0.0737023188408205
+v -0.307277172574524 0.352801136374717 0.533679186238803
+v -0.404210776638986 0.751128220406617 -0.0591978632406233
+v -0.78714049886461 1.09071284629387 0.169927510999828
+v -0.923324204833869 1.23426434903629 -0.596572810324679
+v -0.850835308841345 -0.217596532123105 0.037947218586754
+v 0.652734205327627 -0.35942479060315 0.260566284683319
+v 1.150606022114 1.66461320471328 -0.574369453208012
+v -0.868459770062881 1.36176485762369 -0.233274896198193
+v 0.188958986910395 1.27114632040195 -0.558443458917014
+v -0.584129019400387 -0.719292637332769 0.102755430354688
+v -0.790716079369331 -0.822483142075002 0.362052402185444
+v 0.567110554016952 1.13174532613283 -0.131969978031322
+v 0.111536786820434 1.16004933469154 -0.363943622399237
+v -0.0375825519209878 0.126585514760541 0.191058107935448
+v 0.433714073045751 -0.876360542084555 0.167291642363433
+v 0.349011070966926 0.664184261560939 0.128979528334766
+v -0.415140800221774 1.93044752191733 -0.633328503220898
+v -0.0286541294918554 0.302570872909458 -0.108337435870505
+v 0.390415868978664 1.34626732173886 0.586264355347797
+v 0.519236183579573 -0.745788459410252 0.59401026345336
+v -0.260163008923281 1.76814665536915 -0.499873948377921
+v -0.482039070799834 0.162260543170888 -0.0373257183284503
+v 0.143790493859579 1.16305634059828 -0.645158387057668
+v 0.175807881015623 1.74024357643534 0.0550516859588562
+v -0.569608840589927 1.42961037175809 0.262401056391024
+v 0.353614963517099 0.738103421362227 0.429510185902573
+v -0.250728892056828 1.09632842462969 -0.254259040984657
+v -0.409199532488623 -0.204448590260867 0.201912643972464
+v 0.0340145789829438 1.119147190954 0.784679108342896
+v -0.715946859391303 -0.65134184363888 0.103352611970597
+v -0.0222548542577087 0.780112975400855 -0.210915365792822
+v -0.0518814713893045 1.66901387530834 -0.444521494314413
+v -0.83266154271666 -0.561616575255221 0.311032286522376
+f 41 42 95
+f 111 118 158
+f 21 154 153
+f 84 148 216
+f 164 61 4
+f 2 225 194
+f 50 91 129
+f 114 15 82
+f 35 191 192
+f 112 222 207
+f 162 78 39
+f 210 238 11
+f 136 134 206
+f 91 124 129
+f 241 79 184
+f 92 10 54
+f 105 196 68
+f 105 75 210
+f 50 87 90
+f 226 191 35
+f 102 30 182
+f 69 8 97
+f 97 8 248
+f 147 217 23
+f 182 30 93
+f 76 205 228
+f 73 16 227
+f 209 42 41
+f 167 1 70
+f 183 167 71
+f 37 192 191
+f 147 23 130
+f 69 214 8
+f 23 217 40
+f 22 137 135
+f 40 159 23
+f 58 22 133
+f 182 93 139
+f 50 200 32
+f 87 243 90
+f 35 60 226
+f 72 21 153
+f 213 16 31
+f 97 11 217
+f 243 87 159
+f 45 36 53
+f 216 148 33
+f 221 13 47
+f 16 51 131
+f 2 95 86
+f 130 69 147
+f 105 187 75
+f 12 243 159
+f 214 20 47
+f 90 243 218
+f 87 23 159
+f 93 165 139
+f 153 154 17
+f 159 190 12
+f 31 47 157
+f 50 129 199
+f 18 197 118
+f 56 26 115
+f 128 19 235
+f 179 34 216
+f 189 15 245
+f 112 207 73
+f 23 87 130
+f 130 87 32
+f 44 57 210
+f 94 84 186
+f 217 11 40
+f 91 50 90
+f 245 235 19
+f 50 32 87
+f 94 238 57
+f 33 148 219
+f 196 119 68
+f 217 147 97
+f 127 189 75
+f 11 97 248
+f 121 52 146
+f 9 120 42
+f 40 190 159
+f 39 102 29
+f 238 40 11
+f 200 50 199
+f 8 196 105
+f 242 99 25
+f 243 12 190
+f 248 210 11
+f 95 194 166
+f 77 175 211
+f 201 6 251
+f 238 94 40
+f 186 84 216
+f 203 158 118
+f 110 227 38
+f 75 44 210
+f 134 7 58
+f 196 8 214
+f 21 145 138
+f 156 13 88
+f 243 190 218
+f 85 172 162
+f 147 69 97
+f 32 200 244
+f 105 248 8
+f 58 174 228
+f 250 185 81
+f 199 20 244
+f 109 121 108
+f 105 210 248
+f 20 207 222
+f 190 40 94
+f 32 244 130
+f 53 34 179
+f 156 127 68
+f 89 183 71
+f 130 244 69
+f 232 122 149
+f 199 16 20
+f 238 210 57
+f 48 158 213
+f 42 120 233
+f 105 68 187
+f 173 232 149
+f 203 117 49
+f 6 51 129
+f 91 90 218
+f 20 16 207
+f 148 44 245
+f 57 44 84
+f 75 245 44
+f 71 167 70
+f 216 34 186
+f 7 190 94
+f 84 94 57
+f 88 13 106
+f 13 119 47
+f 119 13 156
+f 249 80 180
+f 200 199 244
+f 121 141 66
+f 156 88 155
+f 196 214 119
+f 209 189 127
+f 235 245 15
+f 190 7 218
+f 155 127 156
+f 68 119 156
+f 220 88 193
+f 15 128 235
+f 146 52 150
+f 113 55 26
+f 2 3 225
+f 27 172 247
+f 45 141 140
+f 54 81 92
+f 113 78 27
+f 195 5 198
+f 24 104 246
+f 28 237 185
+f 189 245 75
+f 127 75 68
+f 218 134 91
+f 221 31 131
+f 68 75 187
+f 92 185 237
+f 149 74 170
+f 4 43 62
+f 142 9 220
+f 134 218 7
+f 230 165 30
+f 69 20 214
+f 171 15 189
+f 250 65 24
+f 104 65 246
+f 239 202 3
+f 212 48 31
+f 188 205 76
+f 222 47 20
+f 212 222 112
+f 7 94 186
+f 18 110 38
+f 247 160 10
+f 114 28 15
+f 51 168 131
+f 214 47 119
+f 163 72 153
+f 115 55 142
+f 212 47 222
+f 9 42 209
+f 220 155 88
+f 107 17 117
+f 53 186 34
+f 1 239 100
+f 237 28 178
+f 14 160 172
+f 157 47 212
+f 117 138 223
+f 164 83 61
+f 170 128 250
+f 27 78 162
+f 176 25 99
+f 215 26 79
+f 36 45 140
+f 239 181 100
+f 128 63 19
+f 188 201 205
+f 193 56 115
+f 39 78 230
+f 175 25 211
+f 246 65 131
+f 69 244 20
+f 117 203 107
+f 111 158 112
+f 155 220 209
+f 112 158 212
+f 114 164 62
+f 195 225 5
+f 195 116 225
+f 176 99 98
+f 66 177 179
+f 132 60 64
+f 170 24 149
+f 188 6 201
+f 185 250 128
+f 115 26 55
+f 53 179 177
+f 224 14 180
+f 142 247 120
+f 142 193 115
+f 85 229 123
+f 135 137 136
+f 160 241 10
+f 240 6 204
+f 2 194 95
+f 201 251 137
+f 197 18 38
+f 128 170 63
+f 152 100 181
+f 65 250 81
+f 241 160 144
+f 174 173 99
+f 174 99 242
+f 226 60 191
+f 56 184 79
+f 163 153 17
+f 170 74 63
+f 141 109 132
+f 45 53 177
+f 228 242 175
+f 95 42 96
+f 80 249 229
+f 73 110 111
+f 203 118 107
+f 112 73 111
+f 181 103 152
+f 131 65 221
+f 114 82 164
+f 201 137 205
+f 229 249 14
+f 173 174 232
+f 241 215 79
+f 132 140 141
+f 81 221 65
+f 62 28 114
+f 127 155 209
+f 146 150 108
+f 209 171 189
+f 179 33 66
+f 186 53 7
+f 251 134 137
+f 228 174 242
+f 148 84 44
+f 49 223 138
+f 232 174 122
+f 120 9 142
+f 154 21 138
+f 175 242 25
+f 171 82 15
+f 134 136 137
+f 213 49 227
+f 158 48 212
+f 121 66 52
+f 4 62 164
+f 49 117 223
+f 62 178 28
+f 18 118 111
+f 101 198 59
+f 124 6 129
+f 168 161 173
+f 164 82 83
+f 123 172 85
+f 228 205 22
+f 224 180 252
+f 180 14 249
+f 73 227 110
+f 64 140 132
+f 167 183 67
+f 150 52 53
+f 24 65 104
+f 83 166 46
+f 31 16 131
+f 148 245 19
+f 83 46 61
+f 53 169 7
+f 53 52 169
+f 124 126 125
+f 54 184 106
+f 13 81 106
+f 98 77 211
+f 101 59 103
+f 197 145 107
+f 58 7 169
+f 45 66 141
+f 197 107 118
+f 154 138 117
+f 120 10 233
+f 29 85 39
+f 239 3 181
+f 125 204 124
+f 36 150 53
+f 30 39 230
+f 52 33 219
+f 22 135 206
+f 219 74 231
+f 3 2 181
+f 51 16 199
+f 1 67 239
+f 110 18 111
+f 10 237 178
+f 100 152 70
+f 77 228 175
+f 213 31 48
+f 212 31 157
+f 166 143 95
+f 209 41 171
+f 129 51 199
+f 62 43 96
+f 252 78 113
+f 121 109 141
+f 58 74 122
+f 219 148 19
+f 220 9 209
+f 116 61 46
+f 233 178 96
+f 19 63 219
+f 54 106 81
+f 158 203 213
+f 241 144 215
+f 102 39 30
+f 195 101 103
+f 145 197 38
+f 247 142 27
+f 83 82 166
+f 86 103 181
+f 233 96 42
+f 86 151 103
+f 16 213 227
+f 230 78 252
+f 64 36 140
+f 66 45 177
+f 52 66 33
+f 252 113 224
+f 166 82 143
+f 98 168 51
+f 221 47 31
+f 76 228 77
+f 151 43 195
+f 39 85 162
+f 194 46 166
+f 138 145 208
+f 194 116 46
+f 73 207 16
+f 99 161 98
+f 246 131 168
+f 38 227 145
+f 170 250 24
+f 151 195 103
+f 219 63 74
+f 124 251 126
+f 108 121 146
+f 98 188 77
+f 152 198 234
+f 247 10 120
+f 101 195 198
+f 225 202 5
+f 125 236 204
+f 13 221 81
+f 142 220 193
+f 61 116 4
+f 1 100 70
+f 125 126 236
+f 241 184 54
+f 80 230 180
+f 168 98 161
+f 5 202 198
+f 124 91 251
+f 123 14 172
+f 180 230 252
+f 29 229 85
+f 246 168 173
+f 33 179 216
+f 14 215 144
+f 3 202 225
+f 172 27 162
+f 198 67 89
+f 58 169 74
+f 108 150 64
+f 122 74 149
+f 134 251 91
+f 26 56 79
+f 64 150 36
+f 240 126 6
+f 133 134 58
+f 106 184 88
+f 14 123 229
+f 76 77 188
+f 227 208 145
+f 185 92 81
+f 124 204 6
+f 41 95 143
+f 126 240 236
+f 126 251 6
+f 14 224 215
+f 55 27 142
+f 2 86 181
+f 4 116 195
+f 59 152 103
+f 22 58 228
+f 10 241 54
+f 122 174 58
+f 163 17 107
+f 49 138 208
+f 67 202 239
+f 96 86 95
+f 15 185 128
+f 82 171 143
+f 193 184 56
+f 49 208 227
+f 137 22 205
+f 132 37 191
+f 163 145 72
+f 24 246 173
+f 198 202 67
+f 206 135 136
+f 237 10 92
+f 203 49 213
+f 89 71 234
+f 22 206 133
+f 219 231 52
+f 86 96 151
+f 55 113 27
+f 134 133 206
+f 154 117 17
+f 28 185 15
+f 145 163 107
+f 132 191 60
+f 171 41 143
+f 192 37 109
+f 60 35 64
+f 176 98 211
+f 178 62 96
+f 204 236 240
+f 234 198 89
+f 139 80 29
+f 43 4 195
+f 169 231 74
+f 80 229 29
+f 161 99 173
+f 132 109 37
+f 139 165 80
+f 14 144 160
+f 80 165 230
+f 193 88 184
+f 231 169 52
+f 145 21 72
+f 51 188 98
+f 29 182 139
+f 234 71 152
+f 70 152 71
+f 10 178 233
+f 225 116 194
+f 93 30 165
+f 182 29 102
+f 6 188 51
+f 67 1 167
+f 152 59 198
+f 96 43 151
+f 108 192 109
+f 89 67 183
+f 108 35 192
+f 35 108 64
+f 160 247 172
+f 215 113 26
+f 224 113 215
+f 173 149 24
+f 176 211 25
diff --git a/meshes/bean.obj b/meshes/bean.obj
new file mode 100644
index 0000000..48e5843
--- /dev/null
+++ b/meshes/bean.obj
@@ -0,0 +1,2448 @@
+####
+#
+# OBJ File Generated by Meshlab
+#
+####
+# Object bean.obj
+#
+# Vertices: 812
+# Faces: 1620
+#
+####
+v 0.000000 0.652172 -0.314826
+v 0.050574 0.659256 -0.287674
+v -0.000000 0.675620 -0.229376
+v 0.109791 0.662980 -0.252508
+v 0.057798 0.679492 -0.182882
+v -0.000000 0.682840 -0.121373
+v 0.167873 0.661381 -0.213765
+v 0.116886 0.675283 -0.141107
+v 0.059917 0.675878 -0.070238
+v -0.000000 0.665090 -0.007804
+v 0.223680 0.653162 -0.170137
+v 0.174348 0.663682 -0.098848
+v 0.119239 0.660528 -0.024533
+v 0.060076 0.645111 0.045778
+v 0.000000 0.619957 0.107229
+v 0.276483 0.636804 -0.121055
+v 0.229471 0.643640 -0.052045
+v 0.177114 0.636237 0.022100
+v 0.119663 0.615968 0.095360
+v 0.059857 0.585992 0.160920
+v -0.000000 0.548650 0.216254
+v 0.324156 0.611432 -0.068721
+v 0.280441 0.614249 -0.001307
+v 0.231964 0.602018 0.071793
+v 0.177880 0.576597 0.144631
+v 0.119588 0.541971 0.210510
+v 0.059989 0.502476 0.264524
+v -0.000000 0.457188 0.308942
+v 0.365587 0.576181 -0.014266
+v 0.325668 0.575213 0.050435
+v 0.281521 0.558262 0.121655
+v 0.232051 0.527984 0.191888
+v 0.177148 0.488534 0.255723
+v 0.119180 0.446031 0.307517
+v 0.059833 0.401790 0.347798
+v -0.000000 0.350763 0.381284
+v 0.400703 0.529518 0.043536
+v 0.365648 0.525245 0.102211
+v 0.325663 0.504772 0.169159
+v 0.280672 0.471530 0.234290
+v 0.229870 0.428388 0.293968
+v 0.174617 0.381269 0.343655
+v 0.116839 0.334419 0.381858
+v 0.057526 0.286132 0.411487
+v -0.000000 0.231125 0.436105
+v 0.426074 0.477948 0.097222
+v 0.400988 0.465484 0.150083
+v 0.365745 0.441544 0.211616
+v 0.324555 0.407381 0.270154
+v 0.277332 0.362767 0.324120
+v 0.224496 0.310839 0.371439
+v 0.168016 0.257263 0.409568
+v 0.109151 0.205555 0.438470
+v 0.049798 0.157722 0.459363
+v -0.000000 0.121093 0.471614
+v 0.031155 0.621993 -0.374958
+v 0.067706 0.577544 -0.431410
+v 0.093810 0.627695 -0.352951
+v 0.103993 0.525738 -0.470300
+v 0.132890 0.584742 -0.408054
+v 0.154730 0.632956 -0.319808
+v 0.138729 0.471750 -0.488426
+v 0.169076 0.534758 -0.445278
+v 0.194372 0.592012 -0.374029
+v 0.212619 0.634267 -0.279382
+v 0.170643 0.423089 -0.484906
+v 0.202802 0.483646 -0.461079
+v 0.230772 0.544186 -0.409216
+v 0.252852 0.595993 -0.330537
+v 0.267886 0.629218 -0.231856
+v 0.198942 0.384594 -0.462049
+v 0.233183 0.438820 -0.454499
+v 0.263912 0.496251 -0.421337
+v 0.289335 0.551033 -0.361360
+v 0.307805 0.593945 -0.277833
+v 0.318901 0.615977 -0.178575
+v 0.224196 0.353987 -0.422611
+v 0.259790 0.402568 -0.427855
+v 0.292768 0.454194 -0.410049
+v 0.320997 0.506093 -0.368005
+v 0.342702 0.552084 -0.302276
+v 0.356572 0.583569 -0.218006
+v 0.363425 0.593416 -0.121401
+v 0.246506 0.325768 -0.369541
+v 0.282285 0.370253 -0.383672
+v 0.316857 0.417171 -0.377939
+v 0.346936 0.464605 -0.351195
+v 0.371239 0.508962 -0.302612
+v 0.388308 0.544004 -0.234499
+v 0.397718 0.562773 -0.151971
+v 0.400998 0.559673 -0.058714
+v 0.262788 0.299356 -0.316172
+v 0.297509 0.335010 -0.326797
+v 0.334521 0.378673 -0.328264
+v 0.366662 0.423246 -0.313960
+v 0.393039 0.465298 -0.280599
+v 0.413232 0.500462 -0.227609
+v 0.426204 0.523040 -0.158143
+v 0.431856 0.527806 -0.076482
+v 0.431228 0.511230 0.013783
+v -0.031155 0.621993 -0.374958
+v -0.067706 0.577544 -0.431410
+v 0.000000 0.574470 -0.440024
+v -0.103993 0.525738 -0.470300
+v -0.035232 0.520140 -0.483594
+v 0.035232 0.520140 -0.483594
+v -0.138729 0.471750 -0.488426
+v -0.070977 0.463231 -0.504894
+v -0.000000 0.460107 -0.510516
+v 0.070977 0.463231 -0.504894
+v -0.170643 0.423089 -0.484906
+v -0.105080 0.410473 -0.503886
+v -0.035684 0.403390 -0.513258
+v 0.035684 0.403390 -0.513258
+v 0.105080 0.410473 -0.503886
+v -0.198942 0.384594 -0.462049
+v -0.135829 0.368095 -0.483133
+v -0.069503 0.356546 -0.494651
+v 0.000000 0.352358 -0.498381
+v 0.069503 0.356546 -0.494651
+v 0.135829 0.368095 -0.483133
+v -0.224196 0.353987 -0.422611
+v -0.163302 0.335813 -0.446236
+v -0.100140 0.320900 -0.459109
+v -0.033936 0.312512 -0.464804
+v 0.033936 0.312512 -0.464804
+v 0.100140 0.320900 -0.459109
+v 0.163302 0.335813 -0.446236
+v -0.246506 0.325768 -0.369541
+v -0.189243 0.308527 -0.395097
+v -0.128572 0.292081 -0.409532
+v -0.065468 0.280813 -0.416610
+v 0.000000 0.276810 -0.418734
+v 0.065468 0.280813 -0.416610
+v 0.128572 0.292081 -0.409532
+v 0.189243 0.308527 -0.395097
+v -0.262788 0.299356 -0.316172
+v -0.215801 0.282156 -0.333741
+v -0.157542 0.264516 -0.348356
+v -0.096223 0.251573 -0.357311
+v -0.032514 0.244845 -0.361448
+v 0.032514 0.244845 -0.361448
+v 0.096223 0.251573 -0.357311
+v 0.157542 0.264516 -0.348356
+v 0.215801 0.282156 -0.333741
+v -0.050574 0.659256 -0.287674
+v -0.109791 0.662980 -0.252508
+v -0.093810 0.627695 -0.352951
+v -0.167873 0.661381 -0.213765
+v -0.154730 0.632956 -0.319808
+v -0.132890 0.584742 -0.408054
+v -0.223680 0.653162 -0.170137
+v -0.212619 0.634267 -0.279382
+v -0.194372 0.592012 -0.374029
+v -0.169076 0.534758 -0.445278
+v -0.276483 0.636804 -0.121055
+v -0.267886 0.629218 -0.231856
+v -0.252852 0.595993 -0.330537
+v -0.230772 0.544186 -0.409216
+v -0.202802 0.483646 -0.461079
+v -0.324156 0.611432 -0.068721
+v -0.318901 0.615977 -0.178575
+v -0.307805 0.593945 -0.277833
+v -0.289335 0.551033 -0.361360
+v -0.263912 0.496251 -0.421337
+v -0.233183 0.438820 -0.454499
+v -0.365587 0.576181 -0.014266
+v -0.363425 0.593416 -0.121401
+v -0.356572 0.583569 -0.218006
+v -0.342702 0.552084 -0.302276
+v -0.320997 0.506093 -0.368005
+v -0.292768 0.454194 -0.410049
+v -0.259790 0.402568 -0.427855
+v -0.400703 0.529518 0.043536
+v -0.400998 0.559673 -0.058714
+v -0.397718 0.562773 -0.151971
+v -0.388308 0.544004 -0.234499
+v -0.371239 0.508962 -0.302612
+v -0.346936 0.464605 -0.351195
+v -0.316857 0.417171 -0.377939
+v -0.282285 0.370253 -0.383672
+v -0.426074 0.477948 0.097222
+v -0.431228 0.511230 0.013783
+v -0.431856 0.527806 -0.076482
+v -0.426204 0.523040 -0.158143
+v -0.413232 0.500462 -0.227609
+v -0.393039 0.465298 -0.280599
+v -0.366662 0.423246 -0.313960
+v -0.334521 0.378673 -0.328264
+v -0.297509 0.335010 -0.326797
+v -0.057798 0.679492 -0.182882
+v -0.059917 0.675878 -0.070238
+v -0.116886 0.675283 -0.141107
+v -0.060076 0.645111 0.045778
+v -0.119239 0.660528 -0.024533
+v -0.174348 0.663682 -0.098848
+v -0.059857 0.585992 0.160920
+v -0.119663 0.615968 0.095360
+v -0.177114 0.636237 0.022100
+v -0.229471 0.643640 -0.052045
+v -0.059989 0.502476 0.264524
+v -0.119588 0.541971 0.210510
+v -0.177880 0.576597 0.144631
+v -0.231964 0.602018 0.071793
+v -0.280441 0.614249 -0.001307
+v -0.059833 0.401790 0.347798
+v -0.119180 0.446031 0.307517
+v -0.177148 0.488534 0.255723
+v -0.232051 0.527984 0.191888
+v -0.281521 0.558262 0.121655
+v -0.325668 0.575213 0.050435
+v -0.057526 0.286132 0.411487
+v -0.116839 0.334419 0.381858
+v -0.174617 0.381269 0.343655
+v -0.229870 0.428388 0.293968
+v -0.280672 0.471530 0.234290
+v -0.325663 0.504772 0.169159
+v -0.365648 0.525245 0.102211
+v -0.049798 0.157722 0.459363
+v -0.109151 0.205555 0.438470
+v -0.168016 0.257263 0.409568
+v -0.224496 0.310839 0.371439
+v -0.277332 0.362767 0.324120
+v -0.324555 0.407381 0.270154
+v -0.365745 0.441544 0.211616
+v -0.400988 0.465484 0.150083
+v 0.000000 -0.682840 0.013113
+v 0.031090 -0.678117 0.058794
+v 0.051376 -0.680448 -0.006405
+v 0.067125 -0.666510 0.109228
+v 0.094036 -0.672784 0.042601
+v 0.111752 -0.669637 -0.028203
+v 0.102802 -0.648152 0.157663
+v 0.132250 -0.658045 0.092293
+v 0.156011 -0.658924 0.021864
+v 0.169476 -0.648136 -0.040951
+v 0.137450 -0.622275 0.204218
+v 0.168039 -0.635855 0.140540
+v 0.194824 -0.640374 0.072209
+v 0.213409 -0.633518 0.008753
+v 0.222466 -0.614013 -0.037643
+v 0.170243 -0.588747 0.248227
+v 0.202392 -0.605536 0.187026
+v 0.230908 -0.613166 0.122148
+v 0.252372 -0.609844 0.060380
+v 0.265127 -0.593988 0.011939
+v 0.272808 -0.562349 -0.017329
+v 0.199854 -0.548703 0.287916
+v 0.234253 -0.567695 0.230204
+v 0.264436 -0.577093 0.170644
+v 0.287952 -0.576044 0.113222
+v 0.303739 -0.562722 0.065202
+v 0.313937 -0.534151 0.032717
+v 0.321699 -0.485385 0.017351
+v 0.225863 -0.502881 0.322730
+v 0.261941 -0.523590 0.269065
+v 0.293627 -0.533534 0.215774
+v 0.319153 -0.532702 0.164952
+v 0.338494 -0.519106 0.120522
+v 0.352456 -0.490205 0.087416
+v 0.361421 -0.445142 0.067629
+v 0.365022 -0.387752 0.058042
+v 0.247944 -0.452361 0.352747
+v 0.283974 -0.473592 0.304734
+v 0.316839 -0.483619 0.257275
+v 0.344357 -0.481590 0.213200
+v 0.367526 -0.464805 0.174139
+v 0.386541 -0.430962 0.142992
+v 0.398776 -0.384291 0.121118
+v 0.401985 -0.335043 0.105134
+v 0.400294 -0.280757 0.092475
+v 0.263324 -0.406203 0.374925
+v 0.297495 -0.419238 0.338858
+v 0.332533 -0.427150 0.296937
+v 0.362812 -0.422886 0.257946
+v 0.389766 -0.401252 0.223602
+v 0.413698 -0.359724 0.194682
+v 0.429742 -0.308585 0.171379
+v 0.435281 -0.260252 0.150798
+v 0.432789 -0.215510 0.130463
+v 0.426280 -0.178637 0.111993
+v -0.000000 -0.680691 -0.046533
+v 0.059257 -0.672424 -0.073456
+v 0.000000 -0.666670 -0.106009
+v 0.118143 -0.654312 -0.086364
+v 0.060177 -0.651868 -0.121218
+v 0.000000 -0.640567 -0.140057
+v 0.173471 -0.624673 -0.082630
+v 0.117901 -0.626436 -0.119039
+v 0.059014 -0.618969 -0.141895
+v 0.000000 -0.601116 -0.149032
+v 0.227143 -0.578429 -0.062222
+v 0.174798 -0.585100 -0.100317
+v 0.117628 -0.582467 -0.127396
+v 0.059000 -0.569671 -0.140391
+v 0.000000 -0.544921 -0.138748
+v 0.279795 -0.508075 -0.027086
+v 0.232078 -0.520092 -0.065837
+v 0.177553 -0.524236 -0.096780
+v 0.119307 -0.519723 -0.116438
+v 0.059955 -0.504979 -0.123283
+v 0.000000 -0.477544 -0.117813
+v 0.326611 -0.418165 0.015095
+v 0.284114 -0.435517 -0.022782
+v 0.234422 -0.446404 -0.055607
+v 0.178468 -0.451373 -0.081174
+v 0.119630 -0.448249 -0.096892
+v 0.059802 -0.434524 -0.101989
+v 0.000000 -0.406868 -0.097296
+v 0.365667 -0.318391 0.053434
+v 0.327280 -0.341883 0.017225
+v 0.282831 -0.358643 -0.015325
+v 0.231372 -0.370952 -0.043683
+v 0.175179 -0.377108 -0.065758
+v 0.116827 -0.374751 -0.079713
+v 0.057500 -0.361440 -0.085117
+v 0.000000 -0.333929 -0.082902
+v 0.400402 -0.207822 0.082382
+v 0.365281 -0.237245 0.048384
+v 0.324311 -0.261597 0.016666
+v 0.276864 -0.281257 -0.012183
+v 0.223829 -0.295001 -0.037338
+v 0.167640 -0.300816 -0.056970
+v 0.109436 -0.297768 -0.069830
+v 0.050455 -0.285873 -0.075792
+v 0.000000 -0.268770 -0.076251
+v -0.051376 -0.680448 -0.006405
+v -0.059257 -0.672424 -0.073456
+v -0.111752 -0.669637 -0.028203
+v -0.060177 -0.651868 -0.121218
+v -0.118143 -0.654312 -0.086364
+v -0.169476 -0.648136 -0.040951
+v -0.059014 -0.618969 -0.141895
+v -0.117901 -0.626436 -0.119039
+v -0.173471 -0.624673 -0.082630
+v -0.222466 -0.614013 -0.037643
+v -0.059000 -0.569671 -0.140391
+v -0.117628 -0.582467 -0.127396
+v -0.174798 -0.585100 -0.100317
+v -0.227143 -0.578429 -0.062222
+v -0.272808 -0.562349 -0.017329
+v -0.059955 -0.504979 -0.123283
+v -0.119307 -0.519723 -0.116438
+v -0.177553 -0.524236 -0.096780
+v -0.232078 -0.520092 -0.065837
+v -0.279795 -0.508075 -0.027086
+v -0.321699 -0.485385 0.017351
+v -0.059802 -0.434524 -0.101989
+v -0.119630 -0.448249 -0.096892
+v -0.178468 -0.451373 -0.081174
+v -0.234422 -0.446404 -0.055607
+v -0.284114 -0.435517 -0.022782
+v -0.326611 -0.418165 0.015095
+v -0.365022 -0.387752 0.058042
+v -0.057500 -0.361440 -0.085117
+v -0.116827 -0.374751 -0.079713
+v -0.175179 -0.377108 -0.065758
+v -0.231372 -0.370952 -0.043683
+v -0.282831 -0.358643 -0.015325
+v -0.327280 -0.341883 0.017225
+v -0.365667 -0.318391 0.053434
+v -0.400294 -0.280757 0.092475
+v -0.050455 -0.285873 -0.075792
+v -0.109436 -0.297768 -0.069830
+v -0.167640 -0.300816 -0.056970
+v -0.223829 -0.295001 -0.037338
+v -0.276864 -0.281257 -0.012183
+v -0.324311 -0.261597 0.016666
+v -0.365281 -0.237245 0.048384
+v -0.400402 -0.207822 0.082382
+v -0.426280 -0.178637 0.111993
+v -0.031090 -0.678117 0.058794
+v -0.094036 -0.672784 0.042601
+v -0.067125 -0.666510 0.109228
+v -0.156011 -0.658924 0.021864
+v -0.132250 -0.658045 0.092293
+v -0.102802 -0.648152 0.157663
+v -0.213409 -0.633518 0.008753
+v -0.194824 -0.640374 0.072209
+v -0.168039 -0.635855 0.140540
+v -0.137450 -0.622275 0.204218
+v -0.265127 -0.593988 0.011939
+v -0.252372 -0.609844 0.060380
+v -0.230908 -0.613166 0.122148
+v -0.202392 -0.605536 0.187026
+v -0.170243 -0.588747 0.248227
+v -0.313937 -0.534151 0.032717
+v -0.303739 -0.562722 0.065202
+v -0.287952 -0.576044 0.113222
+v -0.264436 -0.577093 0.170644
+v -0.234253 -0.567695 0.230204
+v -0.199854 -0.548703 0.287916
+v -0.361421 -0.445142 0.067629
+v -0.352456 -0.490205 0.087416
+v -0.338494 -0.519106 0.120522
+v -0.319153 -0.532702 0.164952
+v -0.293627 -0.533534 0.215774
+v -0.261941 -0.523590 0.269065
+v -0.225863 -0.502881 0.322730
+v -0.401985 -0.335043 0.105134
+v -0.398776 -0.384291 0.121118
+v -0.386541 -0.430962 0.142992
+v -0.367526 -0.464805 0.174139
+v -0.344357 -0.481590 0.213200
+v -0.316839 -0.483619 0.257275
+v -0.283974 -0.473592 0.304734
+v -0.247944 -0.452361 0.352747
+v -0.432789 -0.215510 0.130463
+v -0.435281 -0.260252 0.150798
+v -0.429742 -0.308585 0.171379
+v -0.413698 -0.359724 0.194682
+v -0.389766 -0.401252 0.223602
+v -0.362812 -0.422886 0.257946
+v -0.332533 -0.427150 0.296937
+v -0.297495 -0.419238 0.338858
+v -0.263324 -0.406203 0.374925
+v -0.000000 -0.668966 0.115758
+v -0.034874 -0.653616 0.167453
+v 0.034874 -0.653616 0.167453
+v -0.070274 -0.631281 0.215879
+v 0.000000 -0.634232 0.219970
+v 0.070274 -0.631281 0.215879
+v -0.104490 -0.601036 0.262190
+v -0.035520 -0.607063 0.269499
+v 0.035520 -0.607063 0.269499
+v 0.104490 -0.601036 0.262190
+v -0.135765 -0.563468 0.305030
+v -0.069456 -0.571700 0.316045
+v -0.000000 -0.574479 0.319824
+v 0.069456 -0.571700 0.316045
+v 0.135765 -0.563468 0.305030
+v -0.163645 -0.519847 0.342568
+v -0.100135 -0.529473 0.357454
+v -0.033955 -0.534144 0.365242
+v 0.033955 -0.534144 0.365242
+v 0.100135 -0.529473 0.357454
+v 0.163645 -0.519847 0.342568
+v -0.189824 -0.470647 0.373818
+v -0.128567 -0.481525 0.392015
+v -0.065415 -0.487733 0.403525
+v 0.000000 -0.489837 0.407454
+v 0.065415 -0.487733 0.403525
+v 0.128567 -0.481525 0.392015
+v 0.189824 -0.470647 0.373818
+v -0.216531 -0.418101 0.396626
+v -0.157958 -0.428565 0.418227
+v -0.096383 -0.436068 0.433486
+v -0.032542 -0.440133 0.441229
+v 0.032542 -0.440133 0.441229
+v 0.096383 -0.436068 0.433486
+v 0.157958 -0.428565 0.418227
+v 0.216531 -0.418101 0.396626
+v 0.030184 0.038828 0.490348
+v 0.091820 0.068823 0.479289
+v 0.065441 -0.037039 0.501078
+v 0.153166 0.116385 0.458822
+v 0.129212 -0.010936 0.488957
+v 0.101166 -0.099283 0.503021
+v 0.212520 0.174573 0.428964
+v 0.190870 0.031683 0.468455
+v 0.164449 -0.080221 0.488710
+v 0.136577 -0.156510 0.497644
+v 0.269067 0.236180 0.390269
+v 0.251619 0.091016 0.438285
+v 0.225723 -0.046373 0.467243
+v 0.198698 -0.144045 0.479822
+v 0.170205 -0.212206 0.485141
+v 0.320227 0.292341 0.345403
+v 0.309208 0.157769 0.399830
+v 0.287114 0.008148 0.437275
+v 0.258862 -0.117775 0.456145
+v 0.230738 -0.202673 0.463130
+v 0.200124 -0.265737 0.465711
+v 0.364306 0.337980 0.296418
+v 0.358807 0.217081 0.357527
+v 0.344755 0.076268 0.400113
+v 0.318708 -0.069760 0.426161
+v 0.288809 -0.180695 0.436505
+v 0.258810 -0.256873 0.439467
+v 0.225805 -0.317086 0.439511
+v 0.401820 0.374882 0.241691
+v 0.399642 0.265806 0.311489
+v 0.391852 0.139136 0.360101
+v 0.373958 -0.003196 0.390844
+v 0.344954 -0.139137 0.405926
+v 0.313749 -0.239266 0.409395
+v 0.281650 -0.310229 0.409141
+v 0.247529 -0.366191 0.407133
+v 0.432011 0.407835 0.178270
+v 0.433336 0.310260 0.256441
+v 0.429091 0.194955 0.314986
+v 0.417614 0.063205 0.352825
+v 0.395627 -0.078440 0.372348
+v 0.364379 -0.207196 0.377447
+v 0.331346 -0.300263 0.375308
+v 0.296639 -0.364398 0.373931
+v 0.451150 0.442523 0.100800
+v 0.458642 0.472376 0.012679
+v 0.474938 0.393741 0.109075
+v 0.457334 0.483549 -0.070266
+v 0.479951 0.420670 0.027201
+v 0.491542 0.336136 0.120709
+v 0.447962 0.475513 -0.142390
+v 0.475227 0.428670 -0.047245
+v 0.492798 0.358280 0.049292
+v 0.500045 0.266279 0.134236
+v 0.431037 0.451633 -0.200134
+v 0.461804 0.418446 -0.109933
+v 0.484272 0.362047 -0.014790
+v 0.496965 0.282851 0.074195
+v 0.500149 0.183814 0.145942
+v 0.407659 0.416630 -0.239717
+v 0.440888 0.393168 -0.156822
+v 0.466820 0.348691 -0.067390
+v 0.484239 0.282165 0.020598
+v 0.492397 0.197306 0.095497
+v 0.491937 0.094413 0.151038
+v 0.378169 0.375296 -0.260861
+v 0.413392 0.357429 -0.185970
+v 0.441520 0.321615 -0.105325
+v 0.462469 0.266044 -0.023420
+v 0.475245 0.193701 0.050172
+v 0.479772 0.106899 0.107989
+v 0.475914 0.002092 0.146750
+v 0.341629 0.331560 -0.267349
+v 0.378665 0.315853 -0.200016
+v 0.408764 0.285487 -0.128807
+v 0.432454 0.238087 -0.056023
+v 0.449148 0.175172 0.012150
+v 0.458332 0.099873 0.068810
+v 0.459841 0.011585 0.110021
+v 0.452584 -0.092833 0.132571
+v 0.298090 0.290358 -0.266469
+v 0.335407 0.273142 -0.205211
+v 0.367806 0.245146 -0.142010
+v 0.394404 0.202930 -0.078487
+v 0.414631 0.145777 -0.017708
+v 0.427815 0.076513 0.034893
+v 0.433909 -0.002760 0.075244
+v 0.433018 -0.092003 0.101384
+v 0.247508 0.258156 -0.270465
+v 0.189951 0.235528 -0.281569
+v 0.225686 0.204974 -0.217443
+v 0.128824 0.220084 -0.291995
+v 0.164102 0.184559 -0.227708
+v 0.199910 0.144670 -0.170068
+v 0.065498 0.211257 -0.298768
+v 0.100359 0.172339 -0.236426
+v 0.136102 0.127254 -0.179594
+v 0.170417 0.076386 -0.131302
+v 0.000000 0.208391 -0.301090
+v 0.033954 0.166699 -0.241279
+v 0.069474 0.117595 -0.186190
+v 0.104665 0.062450 -0.139595
+v 0.137777 0.002338 -0.102517
+v -0.065498 0.211257 -0.298768
+v -0.033954 0.166699 -0.241279
+v 0.000000 0.114510 -0.188530
+v 0.035496 0.055827 -0.143996
+v 0.070469 -0.006208 -0.109692
+v 0.103374 -0.071992 -0.084474
+v -0.128824 0.220084 -0.291995
+v -0.100359 0.172339 -0.236426
+v -0.069474 0.117595 -0.186190
+v -0.035496 0.055827 -0.143996
+v 0.000000 -0.008846 -0.112143
+v 0.035117 -0.074587 -0.090105
+v 0.067704 -0.143870 -0.075859
+v -0.189951 0.235528 -0.281569
+v -0.164102 0.184559 -0.227708
+v -0.136102 0.127254 -0.179594
+v -0.104665 0.062450 -0.139595
+v -0.070469 -0.006208 -0.109692
+v -0.035117 -0.074587 -0.090105
+v 0.000000 -0.142935 -0.078886
+v 0.031263 -0.212682 -0.074140
+v -0.247508 0.258156 -0.270465
+v -0.225686 0.204974 -0.217443
+v -0.199910 0.144670 -0.170068
+v -0.170417 0.076386 -0.131302
+v -0.137777 0.002338 -0.102517
+v -0.103374 -0.071992 -0.084474
+v -0.067704 -0.143870 -0.075859
+v -0.031263 -0.212682 -0.074140
+v -0.298090 0.290358 -0.266469
+v -0.341629 0.331560 -0.267349
+v -0.335407 0.273142 -0.205211
+v -0.378169 0.375296 -0.260861
+v -0.378665 0.315853 -0.200016
+v -0.367806 0.245146 -0.142010
+v -0.407659 0.416630 -0.239717
+v -0.413392 0.357429 -0.185970
+v -0.408764 0.285487 -0.128807
+v -0.394404 0.202930 -0.078487
+v -0.431037 0.451633 -0.200134
+v -0.440888 0.393168 -0.156822
+v -0.441520 0.321615 -0.105325
+v -0.432454 0.238087 -0.056023
+v -0.414631 0.145777 -0.017708
+v -0.447962 0.475513 -0.142390
+v -0.461804 0.418446 -0.109933
+v -0.466820 0.348691 -0.067390
+v -0.462469 0.266044 -0.023420
+v -0.449148 0.175172 0.012150
+v -0.427815 0.076513 0.034893
+v -0.457334 0.483549 -0.070266
+v -0.475227 0.428670 -0.047245
+v -0.484272 0.362047 -0.014790
+v -0.484239 0.282165 0.020598
+v -0.475245 0.193701 0.050172
+v -0.458332 0.099873 0.068810
+v -0.433909 -0.002760 0.075244
+v -0.458642 0.472376 0.012679
+v -0.479951 0.420670 0.027201
+v -0.492798 0.358280 0.049292
+v -0.496965 0.282851 0.074195
+v -0.492397 0.197306 0.095497
+v -0.479772 0.106899 0.107989
+v -0.459841 0.011585 0.110021
+v -0.433018 -0.092003 0.101384
+v -0.451150 0.442523 0.100800
+v -0.474938 0.393741 0.109075
+v -0.491542 0.336136 0.120709
+v -0.500045 0.266279 0.134236
+v -0.500149 0.183814 0.145942
+v -0.491937 0.094413 0.151038
+v -0.475914 0.002092 0.146750
+v -0.452584 -0.092833 0.132571
+v -0.432011 0.407835 0.178270
+v -0.401820 0.374882 0.241691
+v -0.433336 0.310260 0.256441
+v -0.364306 0.337980 0.296418
+v -0.399642 0.265806 0.311489
+v -0.429091 0.194955 0.314986
+v -0.320227 0.292341 0.345403
+v -0.358807 0.217081 0.357527
+v -0.391852 0.139136 0.360101
+v -0.417614 0.063205 0.352825
+v -0.269067 0.236180 0.390269
+v -0.309208 0.157769 0.399830
+v -0.344755 0.076268 0.400113
+v -0.373958 -0.003196 0.390844
+v -0.395627 -0.078440 0.372348
+v -0.212520 0.174573 0.428964
+v -0.251619 0.091016 0.438285
+v -0.287114 0.008148 0.437275
+v -0.318708 -0.069760 0.426161
+v -0.344954 -0.139137 0.405926
+v -0.364379 -0.207196 0.377447
+v -0.153166 0.116385 0.458822
+v -0.190870 0.031683 0.468455
+v -0.225723 -0.046373 0.467243
+v -0.258862 -0.117775 0.456145
+v -0.288809 -0.180695 0.436505
+v -0.313749 -0.239266 0.409395
+v -0.331346 -0.300263 0.375308
+v -0.091820 0.068823 0.479289
+v -0.129212 -0.010936 0.488957
+v -0.164449 -0.080221 0.488710
+v -0.198698 -0.144045 0.479822
+v -0.230738 -0.202673 0.463130
+v -0.258810 -0.256873 0.439467
+v -0.281650 -0.310229 0.409141
+v -0.296639 -0.364398 0.373931
+v -0.030184 0.038828 0.490348
+v -0.065441 -0.037039 0.501078
+v -0.101166 -0.099283 0.503021
+v -0.136577 -0.156510 0.497644
+v -0.170205 -0.212206 0.485141
+v -0.200124 -0.265737 0.465711
+v -0.225805 -0.317086 0.439511
+v -0.247529 -0.366191 0.407133
+v 0.461639 -0.124795 0.162376
+v 0.461842 -0.170442 0.189809
+v 0.482340 -0.030732 0.184164
+v 0.452853 -0.221422 0.215054
+v 0.479162 -0.076971 0.218680
+v 0.494523 0.062619 0.195693
+v 0.433236 -0.277649 0.240693
+v 0.466507 -0.130177 0.249818
+v 0.487463 0.017620 0.237787
+v 0.498237 0.153409 0.198395
+v 0.405030 -0.327346 0.268885
+v 0.443619 -0.189480 0.279783
+v 0.470828 -0.037066 0.276340
+v 0.486688 0.108722 0.248921
+v 0.493267 0.233375 0.195973
+v 0.373585 -0.355216 0.300687
+v 0.411970 -0.243933 0.309882
+v 0.444405 -0.098681 0.311999
+v 0.465629 0.051377 0.295594
+v 0.476820 0.185420 0.255466
+v 0.480071 0.298478 0.192436
+v 0.338084 -0.364691 0.336585
+v 0.374525 -0.280567 0.341489
+v 0.408820 -0.158109 0.345087
+v 0.435434 -0.013109 0.336544
+v 0.451327 0.126375 0.308695
+v 0.458778 0.249122 0.259043
+v 0.459184 0.354244 0.188152
+v 0.093626 -0.219002 -0.068749
+v 0.153967 -0.221817 -0.057297
+v 0.132182 -0.144048 -0.066871
+v 0.211523 -0.216918 -0.039873
+v 0.192906 -0.138651 -0.052246
+v 0.167759 -0.064468 -0.073543
+v 0.266665 -0.202653 -0.017373
+v 0.251057 -0.124241 -0.032753
+v 0.229211 -0.049041 -0.057958
+v 0.201823 0.018352 -0.091143
+v 0.317740 -0.179802 0.008609
+v 0.306068 -0.100056 -0.009795
+v 0.288022 -0.024319 -0.038868
+v 0.263439 0.043001 -0.076534
+v 0.233565 0.098674 -0.120218
+v 0.362843 -0.150790 0.037080
+v 0.355583 -0.068532 0.015460
+v 0.341911 0.007771 -0.017436
+v 0.321051 0.075001 -0.059769
+v 0.293658 0.129132 -0.107786
+v 0.261278 0.170971 -0.159862
+v 0.401821 -0.118462 0.068402
+v 0.398477 -0.033593 0.043472
+v 0.388746 0.043214 0.006569
+v 0.371874 0.110700 -0.040798
+v 0.348000 0.165186 -0.094489
+v 0.318205 0.205481 -0.150844
+v 0.283746 0.234816 -0.209456
+v -0.401821 -0.118462 0.068402
+v -0.362843 -0.150790 0.037080
+v -0.398477 -0.033593 0.043472
+v -0.317740 -0.179802 0.008609
+v -0.355583 -0.068532 0.015460
+v -0.388746 0.043214 0.006569
+v -0.266665 -0.202653 -0.017373
+v -0.306068 -0.100056 -0.009795
+v -0.341911 0.007771 -0.017436
+v -0.371874 0.110700 -0.040798
+v -0.211523 -0.216918 -0.039873
+v -0.251057 -0.124241 -0.032753
+v -0.288022 -0.024319 -0.038868
+v -0.321051 0.075001 -0.059769
+v -0.348000 0.165186 -0.094489
+v -0.153967 -0.221817 -0.057297
+v -0.192906 -0.138651 -0.052246
+v -0.229211 -0.049041 -0.057958
+v -0.263439 0.043001 -0.076534
+v -0.293658 0.129132 -0.107786
+v -0.318205 0.205481 -0.150844
+v -0.093626 -0.219002 -0.068749
+v -0.132182 -0.144048 -0.066871
+v -0.167759 -0.064468 -0.073543
+v -0.201823 0.018352 -0.091143
+v -0.233565 0.098674 -0.120218
+v -0.261278 0.170971 -0.159862
+v -0.283746 0.234816 -0.209456
+v -0.338084 -0.364691 0.336585
+v -0.373585 -0.355216 0.300687
+v -0.374525 -0.280567 0.341489
+v -0.405030 -0.327346 0.268885
+v -0.411970 -0.243933 0.309882
+v -0.408820 -0.158109 0.345087
+v -0.433236 -0.277649 0.240693
+v -0.443619 -0.189480 0.279783
+v -0.444405 -0.098681 0.311999
+v -0.435434 -0.013109 0.336544
+v -0.452853 -0.221422 0.215054
+v -0.466507 -0.130177 0.249818
+v -0.470828 -0.037066 0.276340
+v -0.465629 0.051377 0.295594
+v -0.451327 0.126375 0.308695
+v -0.461842 -0.170442 0.189809
+v -0.479162 -0.076971 0.218680
+v -0.487463 0.017620 0.237787
+v -0.486688 0.108722 0.248921
+v -0.476820 0.185420 0.255466
+v -0.458778 0.249122 0.259043
+v -0.461639 -0.124795 0.162376
+v -0.482340 -0.030732 0.184164
+v -0.494523 0.062619 0.195693
+v -0.498237 0.153409 0.198395
+v -0.493267 0.233375 0.195973
+v -0.480071 0.298478 0.192436
+v -0.459184 0.354244 0.188152
+v 0.190808 -0.373131 0.433890
+v 0.129702 -0.380269 0.453844
+v 0.165453 -0.323027 0.463879
+v 0.065954 -0.385517 0.465976
+v 0.101621 -0.327726 0.480889
+v 0.137568 -0.270077 0.486315
+v -0.000000 -0.387482 0.470059
+v 0.034423 -0.330461 0.489702
+v 0.070597 -0.272177 0.499690
+v 0.105507 -0.215625 0.501373
+v -0.065954 -0.385517 0.465976
+v -0.034423 -0.330461 0.489702
+v -0.000000 -0.272852 0.504382
+v 0.035956 -0.216641 0.510197
+v 0.070252 -0.161906 0.509180
+v -0.129702 -0.380269 0.453844
+v -0.101621 -0.327726 0.480889
+v -0.070597 -0.272177 0.499690
+v -0.035956 -0.216641 0.510197
+v -0.000000 -0.163451 0.513258
+v 0.034341 -0.108116 0.510435
+v -0.190808 -0.373131 0.433890
+v -0.165453 -0.323027 0.463879
+v -0.137568 -0.270077 0.486315
+v -0.105507 -0.215625 0.501373
+v -0.070252 -0.161906 0.509180
+v -0.034341 -0.108116 0.510435
+v -0.000000 -0.046033 0.505153
+# 812 vertices, 0 vertices normals
+
+f 2 1 3
+f 4 2 5
+f 5 3 6
+f 3 5 2
+f 7 4 8
+f 8 5 9
+f 9 6 10
+f 5 8 4
+f 6 9 5
+f 11 7 12
+f 12 8 13
+f 13 9 14
+f 14 10 15
+f 8 12 7
+f 9 13 8
+f 10 14 9
+f 16 11 17
+f 17 12 18
+f 18 13 19
+f 19 14 20
+f 20 15 21
+f 12 17 11
+f 13 18 12
+f 14 19 13
+f 15 20 14
+f 22 16 23
+f 23 17 24
+f 24 18 25
+f 25 19 26
+f 26 20 27
+f 27 21 28
+f 17 23 16
+f 18 24 17
+f 19 25 18
+f 20 26 19
+f 21 27 20
+f 29 22 30
+f 30 23 31
+f 31 24 32
+f 32 25 33
+f 33 26 34
+f 34 27 35
+f 35 28 36
+f 23 30 22
+f 24 31 23
+f 25 32 24
+f 26 33 25
+f 27 34 26
+f 28 35 27
+f 37 29 38
+f 38 30 39
+f 39 31 40
+f 40 32 41
+f 41 33 42
+f 42 34 43
+f 43 35 44
+f 44 36 45
+f 30 38 29
+f 31 39 30
+f 32 40 31
+f 33 41 32
+f 34 42 33
+f 35 43 34
+f 36 44 35
+f 46 37 47
+f 47 38 48
+f 48 39 49
+f 49 40 50
+f 50 41 51
+f 51 42 52
+f 52 43 53
+f 53 44 54
+f 54 45 55
+f 38 47 37
+f 39 48 38
+f 40 49 39
+f 41 50 40
+f 42 51 41
+f 43 52 42
+f 44 53 43
+f 45 54 44
+f 56 1 2
+f 57 56 58
+f 58 2 4
+f 2 58 56
+f 59 57 60
+f 60 58 61
+f 61 4 7
+f 58 60 57
+f 4 61 58
+f 62 59 63
+f 63 60 64
+f 64 61 65
+f 65 7 11
+f 60 63 59
+f 61 64 60
+f 7 65 61
+f 66 62 67
+f 67 63 68
+f 68 64 69
+f 69 65 70
+f 70 11 16
+f 63 67 62
+f 64 68 63
+f 65 69 64
+f 11 70 65
+f 71 66 72
+f 72 67 73
+f 73 68 74
+f 74 69 75
+f 75 70 76
+f 76 16 22
+f 67 72 66
+f 68 73 67
+f 69 74 68
+f 70 75 69
+f 16 76 70
+f 77 71 78
+f 78 72 79
+f 79 73 80
+f 80 74 81
+f 81 75 82
+f 82 76 83
+f 83 22 29
+f 72 78 71
+f 73 79 72
+f 74 80 73
+f 75 81 74
+f 76 82 75
+f 22 83 76
+f 84 77 85
+f 85 78 86
+f 86 79 87
+f 87 80 88
+f 88 81 89
+f 89 82 90
+f 90 83 91
+f 91 29 37
+f 78 85 77
+f 79 86 78
+f 80 87 79
+f 81 88 80
+f 82 89 81
+f 83 90 82
+f 29 91 83
+f 92 84 93
+f 93 85 94
+f 94 86 95
+f 95 87 96
+f 96 88 97
+f 97 89 98
+f 98 90 99
+f 99 91 100
+f 100 37 46
+f 85 93 84
+f 86 94 85
+f 87 95 86
+f 88 96 87
+f 89 97 88
+f 90 98 89
+f 91 99 90
+f 37 100 91
+f 101 1 56
+f 102 101 103
+f 103 56 57
+f 56 103 101
+f 104 102 105
+f 105 103 106
+f 106 57 59
+f 103 105 102
+f 57 106 103
+f 107 104 108
+f 108 105 109
+f 109 106 110
+f 110 59 62
+f 105 108 104
+f 106 109 105
+f 59 110 106
+f 111 107 112
+f 112 108 113
+f 113 109 114
+f 114 110 115
+f 115 62 66
+f 108 112 107
+f 109 113 108
+f 110 114 109
+f 62 115 110
+f 116 111 117
+f 117 112 118
+f 118 113 119
+f 119 114 120
+f 120 115 121
+f 121 66 71
+f 112 117 111
+f 113 118 112
+f 114 119 113
+f 115 120 114
+f 66 121 115
+f 122 116 123
+f 123 117 124
+f 124 118 125
+f 125 119 126
+f 126 120 127
+f 127 121 128
+f 128 71 77
+f 117 123 116
+f 118 124 117
+f 119 125 118
+f 120 126 119
+f 121 127 120
+f 71 128 121
+f 129 122 130
+f 130 123 131
+f 131 124 132
+f 132 125 133
+f 133 126 134
+f 134 127 135
+f 135 128 136
+f 136 77 84
+f 123 130 122
+f 124 131 123
+f 125 132 124
+f 126 133 125
+f 127 134 126
+f 128 135 127
+f 77 136 128
+f 137 129 138
+f 138 130 139
+f 139 131 140
+f 140 132 141
+f 141 133 142
+f 142 134 143
+f 143 135 144
+f 144 136 145
+f 145 84 92
+f 130 138 129
+f 131 139 130
+f 132 140 131
+f 133 141 132
+f 134 142 133
+f 135 143 134
+f 136 144 135
+f 84 145 136
+f 146 1 101
+f 147 146 148
+f 148 101 102
+f 101 148 146
+f 149 147 150
+f 150 148 151
+f 151 102 104
+f 148 150 147
+f 102 151 148
+f 152 149 153
+f 153 150 154
+f 154 151 155
+f 155 104 107
+f 150 153 149
+f 151 154 150
+f 104 155 151
+f 156 152 157
+f 157 153 158
+f 158 154 159
+f 159 155 160
+f 160 107 111
+f 153 157 152
+f 154 158 153
+f 155 159 154
+f 107 160 155
+f 161 156 162
+f 162 157 163
+f 163 158 164
+f 164 159 165
+f 165 160 166
+f 166 111 116
+f 157 162 156
+f 158 163 157
+f 159 164 158
+f 160 165 159
+f 111 166 160
+f 167 161 168
+f 168 162 169
+f 169 163 170
+f 170 164 171
+f 171 165 172
+f 172 166 173
+f 173 116 122
+f 162 168 161
+f 163 169 162
+f 164 170 163
+f 165 171 164
+f 166 172 165
+f 116 173 166
+f 174 167 175
+f 175 168 176
+f 176 169 177
+f 177 170 178
+f 178 171 179
+f 179 172 180
+f 180 173 181
+f 181 122 129
+f 168 175 167
+f 169 176 168
+f 170 177 169
+f 171 178 170
+f 172 179 171
+f 173 180 172
+f 122 181 173
+f 182 174 183
+f 183 175 184
+f 184 176 185
+f 185 177 186
+f 186 178 187
+f 187 179 188
+f 188 180 189
+f 189 181 190
+f 190 129 137
+f 175 183 174
+f 176 184 175
+f 177 185 176
+f 178 186 177
+f 179 187 178
+f 180 188 179
+f 181 189 180
+f 129 190 181
+f 3 1 146
+f 6 3 191
+f 191 146 147
+f 146 191 3
+f 10 6 192
+f 192 191 193
+f 193 147 149
+f 191 192 6
+f 147 193 191
+f 15 10 194
+f 194 192 195
+f 195 193 196
+f 196 149 152
+f 192 194 10
+f 193 195 192
+f 149 196 193
+f 21 15 197
+f 197 194 198
+f 198 195 199
+f 199 196 200
+f 200 152 156
+f 194 197 15
+f 195 198 194
+f 196 199 195
+f 152 200 196
+f 28 21 201
+f 201 197 202
+f 202 198 203
+f 203 199 204
+f 204 200 205
+f 205 156 161
+f 197 201 21
+f 198 202 197
+f 199 203 198
+f 200 204 199
+f 156 205 200
+f 36 28 206
+f 206 201 207
+f 207 202 208
+f 208 203 209
+f 209 204 210
+f 210 205 211
+f 211 161 167
+f 201 206 28
+f 202 207 201
+f 203 208 202
+f 204 209 203
+f 205 210 204
+f 161 211 205
+f 45 36 212
+f 212 206 213
+f 213 207 214
+f 214 208 215
+f 215 209 216
+f 216 210 217
+f 217 211 218
+f 218 167 174
+f 206 212 36
+f 207 213 206
+f 208 214 207
+f 209 215 208
+f 210 216 209
+f 211 217 210
+f 167 218 211
+f 55 45 219
+f 219 212 220
+f 220 213 221
+f 221 214 222
+f 222 215 223
+f 223 216 224
+f 224 217 225
+f 225 218 226
+f 226 174 182
+f 212 219 45
+f 213 220 212
+f 214 221 213
+f 215 222 214
+f 216 223 215
+f 217 224 216
+f 218 225 217
+f 174 226 218
+f 228 227 229
+f 230 228 231
+f 231 229 232
+f 229 231 228
+f 233 230 234
+f 234 231 235
+f 235 232 236
+f 231 234 230
+f 232 235 231
+f 237 233 238
+f 238 234 239
+f 239 235 240
+f 240 236 241
+f 234 238 233
+f 235 239 234
+f 236 240 235
+f 242 237 243
+f 243 238 244
+f 244 239 245
+f 245 240 246
+f 246 241 247
+f 238 243 237
+f 239 244 238
+f 240 245 239
+f 241 246 240
+f 248 242 249
+f 249 243 250
+f 250 244 251
+f 251 245 252
+f 252 246 253
+f 253 247 254
+f 243 249 242
+f 244 250 243
+f 245 251 244
+f 246 252 245
+f 247 253 246
+f 255 248 256
+f 256 249 257
+f 257 250 258
+f 258 251 259
+f 259 252 260
+f 260 253 261
+f 261 254 262
+f 249 256 248
+f 250 257 249
+f 251 258 250
+f 252 259 251
+f 253 260 252
+f 254 261 253
+f 263 255 264
+f 264 256 265
+f 265 257 266
+f 266 258 267
+f 267 259 268
+f 268 260 269
+f 269 261 270
+f 270 262 271
+f 256 264 255
+f 257 265 256
+f 258 266 257
+f 259 267 258
+f 260 268 259
+f 261 269 260
+f 262 270 261
+f 272 263 273
+f 273 264 274
+f 274 265 275
+f 275 266 276
+f 276 267 277
+f 277 268 278
+f 278 269 279
+f 279 270 280
+f 280 271 281
+f 264 273 263
+f 265 274 264
+f 266 275 265
+f 267 276 266
+f 268 277 267
+f 269 278 268
+f 270 279 269
+f 271 280 270
+f 229 227 282
+f 232 229 283
+f 283 282 284
+f 282 283 229
+f 236 232 285
+f 285 283 286
+f 286 284 287
+f 283 285 232
+f 284 286 283
+f 241 236 288
+f 288 285 289
+f 289 286 290
+f 290 287 291
+f 285 288 236
+f 286 289 285
+f 287 290 286
+f 247 241 292
+f 292 288 293
+f 293 289 294
+f 294 290 295
+f 295 291 296
+f 288 292 241
+f 289 293 288
+f 290 294 289
+f 291 295 290
+f 254 247 297
+f 297 292 298
+f 298 293 299
+f 299 294 300
+f 300 295 301
+f 301 296 302
+f 292 297 247
+f 293 298 292
+f 294 299 293
+f 295 300 294
+f 296 301 295
+f 262 254 303
+f 303 297 304
+f 304 298 305
+f 305 299 306
+f 306 300 307
+f 307 301 308
+f 308 302 309
+f 297 303 254
+f 298 304 297
+f 299 305 298
+f 300 306 299
+f 301 307 300
+f 302 308 301
+f 271 262 310
+f 310 303 311
+f 311 304 312
+f 312 305 313
+f 313 306 314
+f 314 307 315
+f 315 308 316
+f 316 309 317
+f 303 310 262
+f 304 311 303
+f 305 312 304
+f 306 313 305
+f 307 314 306
+f 308 315 307
+f 309 316 308
+f 281 271 318
+f 318 310 319
+f 319 311 320
+f 320 312 321
+f 321 313 322
+f 322 314 323
+f 323 315 324
+f 324 316 325
+f 325 317 326
+f 310 318 271
+f 311 319 310
+f 312 320 311
+f 313 321 312
+f 314 322 313
+f 315 323 314
+f 316 324 315
+f 317 325 316
+f 282 227 327
+f 284 282 328
+f 328 327 329
+f 327 328 282
+f 287 284 330
+f 330 328 331
+f 331 329 332
+f 328 330 284
+f 329 331 328
+f 291 287 333
+f 333 330 334
+f 334 331 335
+f 335 332 336
+f 330 333 287
+f 331 334 330
+f 332 335 331
+f 296 291 337
+f 337 333 338
+f 338 334 339
+f 339 335 340
+f 340 336 341
+f 333 337 291
+f 334 338 333
+f 335 339 334
+f 336 340 335
+f 302 296 342
+f 342 337 343
+f 343 338 344
+f 344 339 345
+f 345 340 346
+f 346 341 347
+f 337 342 296
+f 338 343 337
+f 339 344 338
+f 340 345 339
+f 341 346 340
+f 309 302 348
+f 348 342 349
+f 349 343 350
+f 350 344 351
+f 351 345 352
+f 352 346 353
+f 353 347 354
+f 342 348 302
+f 343 349 342
+f 344 350 343
+f 345 351 344
+f 346 352 345
+f 347 353 346
+f 317 309 355
+f 355 348 356
+f 356 349 357
+f 357 350 358
+f 358 351 359
+f 359 352 360
+f 360 353 361
+f 361 354 362
+f 348 355 309
+f 349 356 348
+f 350 357 349
+f 351 358 350
+f 352 359 351
+f 353 360 352
+f 354 361 353
+f 326 317 363
+f 363 355 364
+f 364 356 365
+f 365 357 366
+f 366 358 367
+f 367 359 368
+f 368 360 369
+f 369 361 370
+f 370 362 371
+f 355 363 317
+f 356 364 355
+f 357 365 356
+f 358 366 357
+f 359 367 358
+f 360 368 359
+f 361 369 360
+f 362 370 361
+f 327 227 372
+f 329 327 373
+f 373 372 374
+f 372 373 327
+f 332 329 375
+f 375 373 376
+f 376 374 377
+f 373 375 329
+f 374 376 373
+f 336 332 378
+f 378 375 379
+f 379 376 380
+f 380 377 381
+f 375 378 332
+f 376 379 375
+f 377 380 376
+f 341 336 382
+f 382 378 383
+f 383 379 384
+f 384 380 385
+f 385 381 386
+f 378 382 336
+f 379 383 378
+f 380 384 379
+f 381 385 380
+f 347 341 387
+f 387 382 388
+f 388 383 389
+f 389 384 390
+f 390 385 391
+f 391 386 392
+f 382 387 341
+f 383 388 382
+f 384 389 383
+f 385 390 384
+f 386 391 385
+f 354 347 393
+f 393 387 394
+f 394 388 395
+f 395 389 396
+f 396 390 397
+f 397 391 398
+f 398 392 399
+f 387 393 347
+f 388 394 387
+f 389 395 388
+f 390 396 389
+f 391 397 390
+f 392 398 391
+f 362 354 400
+f 400 393 401
+f 401 394 402
+f 402 395 403
+f 403 396 404
+f 404 397 405
+f 405 398 406
+f 406 399 407
+f 393 400 354
+f 394 401 393
+f 395 402 394
+f 396 403 395
+f 397 404 396
+f 398 405 397
+f 399 406 398
+f 371 362 408
+f 408 400 409
+f 409 401 410
+f 410 402 411
+f 411 403 412
+f 412 404 413
+f 413 405 414
+f 414 406 415
+f 415 407 416
+f 400 408 362
+f 401 409 400
+f 402 410 401
+f 403 411 402
+f 404 412 403
+f 405 413 404
+f 406 414 405
+f 407 415 406
+f 372 227 228
+f 374 372 417
+f 417 228 230
+f 228 417 372
+f 377 374 418
+f 418 417 419
+f 419 230 233
+f 417 418 374
+f 230 419 417
+f 381 377 420
+f 420 418 421
+f 421 419 422
+f 422 233 237
+f 418 420 377
+f 419 421 418
+f 233 422 419
+f 386 381 423
+f 423 420 424
+f 424 421 425
+f 425 422 426
+f 426 237 242
+f 420 423 381
+f 421 424 420
+f 422 425 421
+f 237 426 422
+f 392 386 427
+f 427 423 428
+f 428 424 429
+f 429 425 430
+f 430 426 431
+f 431 242 248
+f 423 427 386
+f 424 428 423
+f 425 429 424
+f 426 430 425
+f 242 431 426
+f 399 392 432
+f 432 427 433
+f 433 428 434
+f 434 429 435
+f 435 430 436
+f 436 431 437
+f 437 248 255
+f 427 432 392
+f 428 433 427
+f 429 434 428
+f 430 435 429
+f 431 436 430
+f 248 437 431
+f 407 399 438
+f 438 432 439
+f 439 433 440
+f 440 434 441
+f 441 435 442
+f 442 436 443
+f 443 437 444
+f 444 255 263
+f 432 438 399
+f 433 439 432
+f 434 440 433
+f 435 441 434
+f 436 442 435
+f 437 443 436
+f 255 444 437
+f 416 407 445
+f 445 438 446
+f 446 439 447
+f 447 440 448
+f 448 441 449
+f 449 442 450
+f 450 443 451
+f 451 444 452
+f 452 263 272
+f 438 445 407
+f 439 446 438
+f 440 447 439
+f 441 448 440
+f 442 449 441
+f 443 450 442
+f 444 451 443
+f 263 452 444
+f 54 55 453
+f 53 54 454
+f 454 453 455
+f 453 454 54
+f 52 53 456
+f 456 454 457
+f 457 455 458
+f 454 456 53
+f 455 457 454
+f 51 52 459
+f 459 456 460
+f 460 457 461
+f 461 458 462
+f 456 459 52
+f 457 460 456
+f 458 461 457
+f 50 51 463
+f 463 459 464
+f 464 460 465
+f 465 461 466
+f 466 462 467
+f 459 463 51
+f 460 464 459
+f 461 465 460
+f 462 466 461
+f 49 50 468
+f 468 463 469
+f 469 464 470
+f 470 465 471
+f 471 466 472
+f 472 467 473
+f 463 468 50
+f 464 469 463
+f 465 470 464
+f 466 471 465
+f 467 472 466
+f 48 49 474
+f 474 468 475
+f 475 469 476
+f 476 470 477
+f 477 471 478
+f 478 472 479
+f 479 473 480
+f 468 474 49
+f 469 475 468
+f 470 476 469
+f 471 477 470
+f 472 478 471
+f 473 479 472
+f 47 48 481
+f 481 474 482
+f 482 475 483
+f 483 476 484
+f 484 477 485
+f 485 478 486
+f 486 479 487
+f 487 480 488
+f 474 481 48
+f 475 482 474
+f 476 483 475
+f 477 484 476
+f 478 485 477
+f 479 486 478
+f 480 487 479
+f 46 47 489
+f 489 481 490
+f 490 482 491
+f 491 483 492
+f 492 484 493
+f 493 485 494
+f 494 486 495
+f 495 487 496
+f 496 488 272
+f 481 489 47
+f 482 490 481
+f 483 491 482
+f 484 492 483
+f 485 493 484
+f 486 494 485
+f 487 495 486
+f 488 496 487
+f 100 46 497
+f 99 100 498
+f 498 497 499
+f 497 498 100
+f 98 99 500
+f 500 498 501
+f 501 499 502
+f 498 500 99
+f 499 501 498
+f 97 98 503
+f 503 500 504
+f 504 501 505
+f 505 502 506
+f 500 503 98
+f 501 504 500
+f 502 505 501
+f 96 97 507
+f 507 503 508
+f 508 504 509
+f 509 505 510
+f 510 506 511
+f 503 507 97
+f 504 508 503
+f 505 509 504
+f 506 510 505
+f 95 96 512
+f 512 507 513
+f 513 508 514
+f 514 509 515
+f 515 510 516
+f 516 511 517
+f 507 512 96
+f 508 513 507
+f 509 514 508
+f 510 515 509
+f 511 516 510
+f 94 95 518
+f 518 512 519
+f 519 513 520
+f 520 514 521
+f 521 515 522
+f 522 516 523
+f 523 517 524
+f 512 518 95
+f 513 519 512
+f 514 520 513
+f 515 521 514
+f 516 522 515
+f 517 523 516
+f 93 94 525
+f 525 518 526
+f 526 519 527
+f 527 520 528
+f 528 521 529
+f 529 522 530
+f 530 523 531
+f 531 524 532
+f 518 525 94
+f 519 526 518
+f 520 527 519
+f 521 528 520
+f 522 529 521
+f 523 530 522
+f 524 531 523
+f 92 93 533
+f 533 525 534
+f 534 526 535
+f 535 527 536
+f 536 528 537
+f 537 529 538
+f 538 530 539
+f 539 531 540
+f 540 532 281
+f 525 533 93
+f 526 534 525
+f 527 535 526
+f 528 536 527
+f 529 537 528
+f 530 538 529
+f 531 539 530
+f 532 540 531
+f 145 92 541
+f 144 145 542
+f 542 541 543
+f 541 542 145
+f 143 144 544
+f 544 542 545
+f 545 543 546
+f 542 544 144
+f 543 545 542
+f 142 143 547
+f 547 544 548
+f 548 545 549
+f 549 546 550
+f 544 547 143
+f 545 548 544
+f 546 549 545
+f 141 142 551
+f 551 547 552
+f 552 548 553
+f 553 549 554
+f 554 550 555
+f 547 551 142
+f 548 552 547
+f 549 553 548
+f 550 554 549
+f 140 141 556
+f 556 551 557
+f 557 552 558
+f 558 553 559
+f 559 554 560
+f 560 555 561
+f 551 556 141
+f 552 557 551
+f 553 558 552
+f 554 559 553
+f 555 560 554
+f 139 140 562
+f 562 556 563
+f 563 557 564
+f 564 558 565
+f 565 559 566
+f 566 560 567
+f 567 561 568
+f 556 562 140
+f 557 563 556
+f 558 564 557
+f 559 565 558
+f 560 566 559
+f 561 567 560
+f 138 139 569
+f 569 562 570
+f 570 563 571
+f 571 564 572
+f 572 565 573
+f 573 566 574
+f 574 567 575
+f 575 568 576
+f 562 569 139
+f 563 570 562
+f 564 571 563
+f 565 572 564
+f 566 573 565
+f 567 574 566
+f 568 575 567
+f 137 138 577
+f 577 569 578
+f 578 570 579
+f 579 571 580
+f 580 572 581
+f 581 573 582
+f 582 574 583
+f 583 575 584
+f 584 576 326
+f 569 577 138
+f 570 578 569
+f 571 579 570
+f 572 580 571
+f 573 581 572
+f 574 582 573
+f 575 583 574
+f 576 584 575
+f 190 137 585
+f 189 190 586
+f 586 585 587
+f 585 586 190
+f 188 189 588
+f 588 586 589
+f 589 587 590
+f 586 588 189
+f 587 589 586
+f 187 188 591
+f 591 588 592
+f 592 589 593
+f 593 590 594
+f 588 591 188
+f 589 592 588
+f 590 593 589
+f 186 187 595
+f 595 591 596
+f 596 592 597
+f 597 593 598
+f 598 594 599
+f 591 595 187
+f 592 596 591
+f 593 597 592
+f 594 598 593
+f 185 186 600
+f 600 595 601
+f 601 596 602
+f 602 597 603
+f 603 598 604
+f 604 599 605
+f 595 600 186
+f 596 601 595
+f 597 602 596
+f 598 603 597
+f 599 604 598
+f 184 185 606
+f 606 600 607
+f 607 601 608
+f 608 602 609
+f 609 603 610
+f 610 604 611
+f 611 605 612
+f 600 606 185
+f 601 607 600
+f 602 608 601
+f 603 609 602
+f 604 610 603
+f 605 611 604
+f 183 184 613
+f 613 606 614
+f 614 607 615
+f 615 608 616
+f 616 609 617
+f 617 610 618
+f 618 611 619
+f 619 612 620
+f 606 613 184
+f 607 614 606
+f 608 615 607
+f 609 616 608
+f 610 617 609
+f 611 618 610
+f 612 619 611
+f 182 183 621
+f 621 613 622
+f 622 614 623
+f 623 615 624
+f 624 616 625
+f 625 617 626
+f 626 618 627
+f 627 619 628
+f 628 620 371
+f 613 621 183
+f 614 622 613
+f 615 623 614
+f 616 624 615
+f 617 625 616
+f 618 626 617
+f 619 627 618
+f 620 628 619
+f 226 182 629
+f 225 226 630
+f 630 629 631
+f 629 630 226
+f 224 225 632
+f 632 630 633
+f 633 631 634
+f 630 632 225
+f 631 633 630
+f 223 224 635
+f 635 632 636
+f 636 633 637
+f 637 634 638
+f 632 635 224
+f 633 636 632
+f 634 637 633
+f 222 223 639
+f 639 635 640
+f 640 636 641
+f 641 637 642
+f 642 638 643
+f 635 639 223
+f 636 640 635
+f 637 641 636
+f 638 642 637
+f 221 222 644
+f 644 639 645
+f 645 640 646
+f 646 641 647
+f 647 642 648
+f 648 643 649
+f 639 644 222
+f 640 645 639
+f 641 646 640
+f 642 647 641
+f 643 648 642
+f 220 221 650
+f 650 644 651
+f 651 645 652
+f 652 646 653
+f 653 647 654
+f 654 648 655
+f 655 649 656
+f 644 650 221
+f 645 651 644
+f 646 652 645
+f 647 653 646
+f 648 654 647
+f 649 655 648
+f 219 220 657
+f 657 650 658
+f 658 651 659
+f 659 652 660
+f 660 653 661
+f 661 654 662
+f 662 655 663
+f 663 656 664
+f 650 657 220
+f 651 658 650
+f 652 659 651
+f 653 660 652
+f 654 661 653
+f 655 662 654
+f 656 663 655
+f 55 219 665
+f 665 657 666
+f 666 658 667
+f 667 659 668
+f 668 660 669
+f 669 661 670
+f 670 662 671
+f 671 663 672
+f 672 664 416
+f 657 665 219
+f 658 666 657
+f 659 667 658
+f 660 668 659
+f 661 669 660
+f 662 670 661
+f 663 671 662
+f 664 672 663
+f 280 281 532
+f 279 280 673
+f 673 532 524
+f 532 673 280
+f 278 279 674
+f 674 673 675
+f 675 524 517
+f 673 674 279
+f 524 675 673
+f 277 278 676
+f 676 674 677
+f 677 675 678
+f 678 517 511
+f 674 676 278
+f 675 677 674
+f 517 678 675
+f 276 277 679
+f 679 676 680
+f 680 677 681
+f 681 678 682
+f 682 511 506
+f 676 679 277
+f 677 680 676
+f 678 681 677
+f 511 682 678
+f 275 276 683
+f 683 679 684
+f 684 680 685
+f 685 681 686
+f 686 682 687
+f 687 506 502
+f 679 683 276
+f 680 684 679
+f 681 685 680
+f 682 686 681
+f 506 687 682
+f 274 275 688
+f 688 683 689
+f 689 684 690
+f 690 685 691
+f 691 686 692
+f 692 687 693
+f 693 502 499
+f 683 688 275
+f 684 689 683
+f 685 690 684
+f 686 691 685
+f 687 692 686
+f 502 693 687
+f 273 274 694
+f 694 688 695
+f 695 689 696
+f 696 690 697
+f 697 691 698
+f 698 692 699
+f 699 693 700
+f 700 499 497
+f 688 694 274
+f 689 695 688
+f 690 696 689
+f 691 697 690
+f 692 698 691
+f 693 699 692
+f 499 700 693
+f 272 273 496
+f 496 694 495
+f 495 695 494
+f 494 696 493
+f 493 697 492
+f 492 698 491
+f 491 699 490
+f 490 700 489
+f 489 497 46
+f 694 496 273
+f 695 495 694
+f 696 494 695
+f 697 493 696
+f 698 492 697
+f 699 491 698
+f 700 490 699
+f 497 489 700
+f 325 326 576
+f 324 325 701
+f 701 576 568
+f 576 701 325
+f 323 324 702
+f 702 701 703
+f 703 568 561
+f 701 702 324
+f 568 703 701
+f 322 323 704
+f 704 702 705
+f 705 703 706
+f 706 561 555
+f 702 704 323
+f 703 705 702
+f 561 706 703
+f 321 322 707
+f 707 704 708
+f 708 705 709
+f 709 706 710
+f 710 555 550
+f 704 707 322
+f 705 708 704
+f 706 709 705
+f 555 710 706
+f 320 321 711
+f 711 707 712
+f 712 708 713
+f 713 709 714
+f 714 710 715
+f 715 550 546
+f 707 711 321
+f 708 712 707
+f 709 713 708
+f 710 714 709
+f 550 715 710
+f 319 320 716
+f 716 711 717
+f 717 712 718
+f 718 713 719
+f 719 714 720
+f 720 715 721
+f 721 546 543
+f 711 716 320
+f 712 717 711
+f 713 718 712
+f 714 719 713
+f 715 720 714
+f 546 721 715
+f 318 319 722
+f 722 716 723
+f 723 717 724
+f 724 718 725
+f 725 719 726
+f 726 720 727
+f 727 721 728
+f 728 543 541
+f 716 722 319
+f 717 723 716
+f 718 724 717
+f 719 725 718
+f 720 726 719
+f 721 727 720
+f 543 728 721
+f 281 318 540
+f 540 722 539
+f 539 723 538
+f 538 724 537
+f 537 725 536
+f 536 726 535
+f 535 727 534
+f 534 728 533
+f 533 541 92
+f 722 540 318
+f 723 539 722
+f 724 538 723
+f 725 537 724
+f 726 536 725
+f 727 535 726
+f 728 534 727
+f 541 533 728
+f 370 371 620
+f 369 370 729
+f 729 620 612
+f 620 729 370
+f 368 369 730
+f 730 729 731
+f 731 612 605
+f 729 730 369
+f 612 731 729
+f 367 368 732
+f 732 730 733
+f 733 731 734
+f 734 605 599
+f 730 732 368
+f 731 733 730
+f 605 734 731
+f 366 367 735
+f 735 732 736
+f 736 733 737
+f 737 734 738
+f 738 599 594
+f 732 735 367
+f 733 736 732
+f 734 737 733
+f 599 738 734
+f 365 366 739
+f 739 735 740
+f 740 736 741
+f 741 737 742
+f 742 738 743
+f 743 594 590
+f 735 739 366
+f 736 740 735
+f 737 741 736
+f 738 742 737
+f 594 743 738
+f 364 365 744
+f 744 739 745
+f 745 740 746
+f 746 741 747
+f 747 742 748
+f 748 743 749
+f 749 590 587
+f 739 744 365
+f 740 745 739
+f 741 746 740
+f 742 747 741
+f 743 748 742
+f 590 749 743
+f 363 364 750
+f 750 744 751
+f 751 745 752
+f 752 746 753
+f 753 747 754
+f 754 748 755
+f 755 749 756
+f 756 587 585
+f 744 750 364
+f 745 751 744
+f 746 752 745
+f 747 753 746
+f 748 754 747
+f 749 755 748
+f 587 756 749
+f 326 363 584
+f 584 750 583
+f 583 751 582
+f 582 752 581
+f 581 753 580
+f 580 754 579
+f 579 755 578
+f 578 756 577
+f 577 585 137
+f 750 584 363
+f 751 583 750
+f 752 582 751
+f 753 581 752
+f 754 580 753
+f 755 579 754
+f 756 578 755
+f 585 577 756
+f 415 416 664
+f 414 415 757
+f 757 664 656
+f 664 757 415
+f 413 414 758
+f 758 757 759
+f 759 656 649
+f 757 758 414
+f 656 759 757
+f 412 413 760
+f 760 758 761
+f 761 759 762
+f 762 649 643
+f 758 760 413
+f 759 761 758
+f 649 762 759
+f 411 412 763
+f 763 760 764
+f 764 761 765
+f 765 762 766
+f 766 643 638
+f 760 763 412
+f 761 764 760
+f 762 765 761
+f 643 766 762
+f 410 411 767
+f 767 763 768
+f 768 764 769
+f 769 765 770
+f 770 766 771
+f 771 638 634
+f 763 767 411
+f 764 768 763
+f 765 769 764
+f 766 770 765
+f 638 771 766
+f 409 410 772
+f 772 767 773
+f 773 768 774
+f 774 769 775
+f 775 770 776
+f 776 771 777
+f 777 634 631
+f 767 772 410
+f 768 773 767
+f 769 774 768
+f 770 775 769
+f 771 776 770
+f 634 777 771
+f 408 409 778
+f 778 772 779
+f 779 773 780
+f 780 774 781
+f 781 775 782
+f 782 776 783
+f 783 777 784
+f 784 631 629
+f 772 778 409
+f 773 779 772
+f 774 780 773
+f 775 781 774
+f 776 782 775
+f 777 783 776
+f 631 784 777
+f 371 408 628
+f 628 778 627
+f 627 779 626
+f 626 780 625
+f 625 781 624
+f 624 782 623
+f 623 783 622
+f 622 784 621
+f 621 629 182
+f 778 628 408
+f 779 627 778
+f 780 626 779
+f 781 625 780
+f 782 624 781
+f 783 623 782
+f 784 622 783
+f 629 621 784
+f 452 272 488
+f 451 452 785
+f 785 488 480
+f 488 785 452
+f 450 451 786
+f 786 785 787
+f 787 480 473
+f 785 786 451
+f 480 787 785
+f 449 450 788
+f 788 786 789
+f 789 787 790
+f 790 473 467
+f 786 788 450
+f 787 789 786
+f 473 790 787
+f 448 449 791
+f 791 788 792
+f 792 789 793
+f 793 790 794
+f 794 467 462
+f 788 791 449
+f 789 792 788
+f 790 793 789
+f 467 794 790
+f 447 448 795
+f 795 791 796
+f 796 792 797
+f 797 793 798
+f 798 794 799
+f 799 462 458
+f 791 795 448
+f 792 796 791
+f 793 797 792
+f 794 798 793
+f 462 799 794
+f 446 447 800
+f 800 795 801
+f 801 796 802
+f 802 797 803
+f 803 798 804
+f 804 799 805
+f 805 458 455
+f 795 800 447
+f 796 801 795
+f 797 802 796
+f 798 803 797
+f 799 804 798
+f 458 805 799
+f 445 446 806
+f 806 800 807
+f 807 801 808
+f 808 802 809
+f 809 803 810
+f 810 804 811
+f 811 805 812
+f 812 455 453
+f 800 806 446
+f 801 807 800
+f 802 808 801
+f 803 809 802
+f 804 810 803
+f 805 811 804
+f 455 812 805
+f 416 445 672
+f 672 806 671
+f 671 807 670
+f 670 808 669
+f 669 809 668
+f 668 810 667
+f 667 811 666
+f 666 812 665
+f 665 453 55
+f 806 672 445
+f 807 671 806
+f 808 670 807
+f 809 669 808
+f 810 668 809
+f 811 667 810
+f 812 666 811
+f 453 665 812
+# 1620 faces, 0 coords texture
+
+# End of File
diff --git a/meshes/bunny.obj b/meshes/bunny.obj
new file mode 100644
index 0000000..14180ad
--- /dev/null
+++ b/meshes/bunny.obj
@@ -0,0 +1,26142 @@
+####
+#
+# OBJ File Generated by Meshlab
+#
+####
+# Object bunny.obj
+#
+# Vertices: 8710
+# Faces: 17416
+#
+####
+v 0.296502 -0.907931 0.450151
+v 0.318452 -0.914908 0.439163
+v 0.278223 -0.966570 0.498757
+v 0.242885 -0.967829 0.515687
+v 0.208062 -0.968058 0.531859
+v 0.161099 -0.966776 0.544075
+v 0.126289 -0.967007 0.560171
+v 0.112326 -0.968664 0.558732
+v 0.118890 -0.907418 0.505655
+v 0.101780 -0.963988 0.552425
+v 0.064991 -0.968240 0.571474
+v 0.053815 -0.964656 0.566002
+v 0.017489 -0.968317 0.584114
+v 0.004746 -0.967778 0.580890
+v -0.003425 -0.908903 0.527758
+v -0.166648 -0.971927 0.547929
+v -0.124323 -0.915574 0.508661
+v -0.179436 -0.971639 0.545052
+v -0.215749 -0.973044 0.492875
+v -0.231145 -0.968959 0.463908
+v -0.176295 -0.922665 0.458282
+v -0.156937 -0.919364 0.482264
+v -0.144169 -0.919890 0.485462
+v -0.095331 -0.965708 0.580310
+v -0.104274 -0.913577 0.511118
+v 0.023719 -0.906981 0.531731
+v 0.105127 -0.908256 0.503764
+v 0.166481 -0.907649 0.492579
+v 0.200668 -0.908195 0.477012
+v 0.214651 -0.906827 0.478641
+v 0.248835 -0.907378 0.463075
+v 0.262256 -0.907084 0.465514
+v 0.331685 -0.931477 0.455212
+v 0.071286 -0.907229 0.518735
+v -0.073216 -0.968127 0.587285
+v -0.407922 -0.953686 0.138626
+v -0.458918 -0.984040 0.178575
+v -0.428115 -0.966955 0.146449
+v -0.467190 -0.983552 0.199410
+v -0.475205 -0.991233 0.250329
+v -0.486165 -0.983924 0.214789
+v -0.463028 -0.985555 0.293451
+v -0.450120 -0.982967 0.334916
+v -0.346752 -0.980358 0.358703
+v -0.315127 -0.979481 0.365881
+v -0.275397 -0.959865 0.332924
+v -0.247163 -0.963513 0.295866
+v -0.243309 -0.963963 0.250869
+v -0.257696 -0.949781 0.188877
+v -0.242410 -0.953917 0.218884
+v -0.287497 -0.948343 0.158344
+v -0.334652 -0.954881 0.131459
+v -0.360844 -0.955022 0.126244
+v -0.388744 -0.958323 0.123533
+v -0.248550 -0.957681 0.267259
+v 0.337440 -0.952145 0.077907
+v 0.317568 -0.948330 0.094272
+v 0.279482 -0.978259 0.137496
+v 0.296206 -0.963654 0.103867
+v 0.282475 -0.980841 0.163803
+v 0.312250 -0.974290 0.233951
+v 0.300008 -0.972787 0.230136
+v 0.320642 -0.967613 0.252173
+v 0.345995 -0.968317 0.258730
+v 0.353038 -0.967295 0.279482
+v 0.375770 -0.969730 0.289417
+v 0.459868 -0.950912 0.266193
+v 0.491801 -0.948214 0.223482
+v 0.481936 -0.950308 0.246758
+v 0.502771 -0.951965 0.158858
+v 0.484762 -0.953339 0.132589
+v 0.477494 -0.956073 0.108236
+v 0.457350 -0.947944 0.098254
+v 0.453113 -0.959698 0.083460
+v 0.431369 -0.950533 0.074790
+v 0.381807 -0.959017 0.069210
+v 0.286033 -0.982370 0.189250
+v 0.390567 -0.973305 0.296217
+v 0.502168 -0.945041 0.199320
+v 0.396335 -0.956332 0.069686
+v 0.413150 -0.949447 0.066795
+v -0.321460 -0.978195 -0.054798
+v -0.293252 -0.950295 -0.074541
+v -0.272661 -0.920173 -0.074130
+v -0.262115 -0.924849 -0.067733
+v -0.256334 -0.922074 -0.045447
+v -0.240663 -0.922742 -0.019820
+v -0.221922 -0.922806 0.009146
+v -0.192256 -0.924472 0.040038
+v -0.167397 -0.925321 0.079497
+v -0.141253 -0.926718 0.122100
+v -0.172402 -0.978016 0.210563
+v -0.182004 -0.977679 0.159229
+v -0.196974 -0.981035 0.141695
+v -0.236303 -0.981844 0.082944
+v -0.283640 -0.978028 0.021488
+v -0.297067 -0.973198 -0.007283
+v -0.134985 -0.927835 0.159359
+v -0.898913 -0.035302 0.199758
+v -0.930207 0.400288 0.190885
+v -0.930828 0.425963 0.186627
+v -0.216573 -0.047117 -0.241071
+v -0.223401 -0.232547 -0.289519
+v -0.896138 -0.057170 0.121317
+v -0.009069 0.224532 0.077948
+v 0.009450 0.237571 0.164166
+v -0.033897 0.223622 0.118741
+v -0.972291 0.087757 0.152405
+v -0.080622 0.204664 0.241878
+v -0.074657 -0.939327 0.714955
+v 0.183220 0.261331 0.061555
+v -0.554623 -0.842789 0.571994
+v -0.142997 0.159007 0.312532
+v -0.116450 0.159341 0.336236
+v -0.158136 0.143571 0.346177
+v -0.144108 0.146953 0.337428
+v -0.311253 0.763869 0.043069
+v -0.926669 0.340223 0.142561
+v -0.074464 0.178825 0.314787
+v -0.652128 0.431331 -0.162245
+v -0.707915 0.471509 -0.287831
+v -0.713242 0.474814 -0.273926
+v -0.485424 0.561479 0.247657
+v -0.622847 0.515565 -0.412169
+v -0.661243 0.578822 0.062627
+v 0.031384 0.237404 0.266643
+v 0.153410 0.265073 0.250532
+v -0.508162 0.551899 0.391274
+v -0.485038 0.546632 0.346675
+v -0.894738 0.426062 0.128482
+v -0.881590 -0.397328 0.146558
+v -0.890842 0.475961 0.112711
+v 0.426229 -0.963093 0.056112
+v 0.015344 0.984297 -0.280451
+v -0.458145 -0.696467 0.188635
+v -0.474078 -0.695172 0.168859
+v -0.540061 -0.813159 0.413773
+v -0.717977 0.776778 -0.356560
+v -0.950002 0.040536 0.168670
+v -0.763671 0.787503 -0.434791
+v -0.616995 0.608783 -0.118539
+v -0.753186 0.732297 -0.287850
+v -0.720785 0.756588 -0.306214
+v -0.038087 0.181327 0.346792
+v -0.080349 0.163708 0.351215
+v -0.115704 0.190361 0.041833
+v -0.245658 0.851026 -0.076644
+v -0.244246 0.848540 -0.053523
+v -0.843889 -0.453410 0.114787
+v -0.728457 0.737134 -0.269552
+v -0.887792 -0.048496 0.281242
+v -0.730904 0.896498 -0.623419
+v -0.957144 0.304686 0.281871
+v -0.612078 0.776672 -0.560393
+v -0.642397 0.521447 -0.479298
+v -0.427395 -0.981047 -0.144304
+v -0.019574 0.974381 -0.200377
+v -0.892773 -0.345028 0.131496
+v -0.900038 -0.331947 0.100195
+v -0.632616 0.572035 -0.023071
+v -0.084774 -0.419231 0.704416
+v -0.936016 0.530953 0.237035
+v -0.941613 0.513346 0.191785
+v 0.008818 0.215710 0.324278
+v -0.516584 0.582702 0.193978
+v -0.681272 0.774280 -0.367608
+v -0.275852 0.825172 -0.032134
+v -0.867016 -0.418136 0.245577
+v -0.875002 -0.398636 0.266233
+v -0.751553 0.777618 -0.389880
+v -0.464774 0.528260 0.270470
+v -0.202687 0.212976 0.196969
+v -0.187156 0.205920 0.201868
+v -0.614026 0.897102 -0.729678
+v -0.001352 0.187252 0.368232
+v 0.093120 0.240180 0.333299
+v -0.651766 0.753457 -0.354081
+v -0.713095 0.745340 -0.275895
+v -0.621828 0.638107 -0.164888
+v -0.490878 0.560595 0.309778
+v -0.751178 0.880912 -0.598801
+v -0.875652 -0.031799 0.305482
+v -0.935208 -0.160892 0.179521
+v 0.003065 0.144845 0.443092
+v -0.882397 -0.345063 0.295709
+v -0.686305 0.464936 -0.287259
+v -0.922225 -0.298838 0.181871
+v -0.971246 0.265403 0.178562
+v -0.871323 -0.014143 0.322185
+v -0.667174 0.447917 -0.240938
+v -0.659315 0.455406 -0.263451
+v 0.140967 0.257338 0.071090
+v 0.170323 0.253106 0.031968
+v -0.895295 -0.361942 0.157895
+v 0.160094 0.268780 0.199557
+v -0.171880 0.110411 0.404000
+v -0.508928 0.576055 0.250128
+v -0.667435 0.526900 -0.549280
+v -0.704211 0.453362 -0.235814
+v -0.705547 0.461287 -0.254632
+v -0.672738 0.907894 -0.670805
+v 0.139939 0.264900 0.193648
+v 0.062846 0.249389 0.251441
+v -0.694115 -0.970141 0.006885
+v -0.691636 -0.948201 0.004843
+v -0.676979 -0.962511 -0.034079
+v -0.089261 0.193452 0.267723
+v -0.019726 0.169209 0.390805
+v -0.483393 0.577524 0.184412
+v 0.089702 0.213138 0.386856
+v -0.576093 0.542229 0.462385
+v 0.079371 0.712069 -0.238944
+v 0.419853 0.139408 0.448862
+v 0.427042 0.120951 0.463918
+v 0.134191 0.263935 0.155239
+v -0.970766 0.058584 0.207576
+v -0.148378 -0.136018 -0.282390
+v -0.276180 -0.795560 -0.150645
+v -0.984358 0.124099 0.179224
+v -0.598251 0.725994 -0.482870
+v -0.514756 0.518786 0.424349
+v -0.932673 -0.187418 0.198290
+v 0.257740 0.277545 0.189733
+v 0.241302 0.276692 0.220699
+v 0.098736 0.230254 0.361982
+v -0.626202 0.086229 -0.103419
+v -0.660494 0.081705 -0.091891
+v -0.976810 0.231435 0.171670
+v -0.171996 0.130471 0.373500
+v -0.884794 0.539756 0.349523
+v 0.133129 0.252906 0.317417
+v -0.863087 -0.428878 0.117514
+v 0.225198 0.263659 0.052322
+v 0.099095 0.744693 -0.272654
+v 0.211928 0.269316 0.089082
+v -0.629180 0.760997 -0.448770
+v -0.640093 0.570446 0.032415
+v -0.438704 -0.607953 0.447457
+v -0.265459 0.805228 0.010028
+v 0.515586 0.116030 0.427771
+v -0.704666 0.757524 -0.307639
+v -0.417055 0.309616 0.343371
+v -0.823450 0.573160 0.300716
+v -0.283827 0.795236 0.014584
+v -0.654181 0.491637 0.533264
+v -0.614529 0.750419 -0.479751
+v 0.172122 0.269273 0.145954
+v 0.806560 -0.422751 0.077440
+v -0.596181 0.636173 -0.216788
+v -0.086520 0.953751 -0.139050
+v -0.073533 0.957925 -0.138254
+v -0.931547 -0.167662 0.154627
+v 0.173403 0.251519 0.335760
+v 0.181001 0.271209 0.182226
+v 0.103517 0.765728 -0.275470
+v 0.098235 0.761152 -0.297542
+v -0.465326 0.542458 0.229087
+v -0.740599 0.840316 -0.522509
+v -0.601283 0.853530 -0.686592
+v -0.026207 0.228031 0.225752
+v -0.749260 0.577659 0.369822
+v -0.158011 0.194745 0.232956
+v 0.294660 0.212052 0.409249
+v -0.934625 -0.254419 0.188685
+v -0.460563 0.483795 0.286631
+v -0.705663 -0.972338 0.025447
+v -0.702631 -0.949717 0.017958
+v -0.743003 0.577084 0.050157
+v -0.607769 0.749883 -0.511641
+v -0.622494 0.768443 -0.509171
+v 0.171826 0.261486 0.291671
+v 0.749508 -0.093796 0.040859
+v -0.188938 -0.970646 0.322036
+v 0.766176 -0.113860 0.122363
+v -0.217066 -0.958131 0.434916
+v -0.223547 -0.967817 0.412077
+v -0.887076 -0.377308 0.110004
+v 0.104239 -0.131266 0.640793
+v 0.094880 -0.127829 0.625430
+v -0.620190 0.552544 -0.496716
+v -0.516938 0.536578 0.424329
+v 0.034812 0.204585 0.369840
+v -0.020702 0.230523 0.183475
+v -0.111938 0.205296 0.152838
+v -0.914038 -0.309263 0.092328
+v -0.227578 0.196144 0.283467
+v 0.106902 0.172224 0.456206
+v 0.151161 0.191048 0.437039
+v -0.175640 -0.967829 0.291267
+v 0.290064 0.272137 0.100033
+v -0.457118 0.544944 0.194012
+v -0.648137 0.614787 -0.075917
+v 0.088254 0.842973 -0.355429
+v -0.931125 0.342146 0.168665
+v -0.981243 0.081547 0.265828
+v -0.859924 0.426282 0.067054
+v -0.880259 0.421196 0.104413
+v -0.834284 -0.470936 0.110973
+v -0.927071 0.324092 0.094997
+v -0.859516 -0.344002 0.387887
+v -0.504390 0.562853 0.349645
+v -0.550010 0.556639 0.426621
+v 0.043052 0.229789 0.318083
+v 0.705807 -0.013158 0.272961
+v 0.799429 -0.478414 0.293472
+v -0.059814 -0.145229 0.591282
+v -0.738851 0.896006 -0.637858
+v -0.736016 0.903239 -0.669687
+v -0.932480 0.302520 0.080911
+v -0.668858 0.778269 -0.401799
+v -0.686085 0.614383 -0.026341
+v -0.829414 0.185225 0.684446
+v -0.800179 0.205185 0.699867
+v -0.817491 0.308888 0.675173
+v 0.206708 0.251215 0.343298
+v 0.185048 0.241339 0.364136
+v -0.168403 0.676636 -0.174186
+v -0.954317 0.301829 0.181529
+v -0.956713 0.040133 0.208417
+v -0.614028 -0.097905 -0.201824
+v -0.598023 -0.076228 -0.203345
+v 0.665762 -0.346521 -0.212491
+v 0.797430 -0.344286 0.054470
+v -0.431849 -0.758991 0.266281
+v -0.593851 0.680594 -0.740794
+v 0.848076 -0.542000 0.359702
+v 0.004476 0.177077 0.397698
+v -0.512366 -0.875833 0.275792
+v -0.579622 -0.843788 -0.023332
+v 0.181021 0.217961 0.407437
+v -0.466995 0.584763 0.165831
+v 0.062943 0.237500 0.311983
+v -0.787499 0.168233 0.685672
+v 0.095698 -0.313965 -0.468468
+v -0.206078 0.176793 0.310546
+v -0.228056 0.171807 0.336982
+v -0.907604 0.004134 0.175611
+v -0.815058 0.162305 0.672630
+v -0.784434 0.179702 0.690364
+v -0.816889 0.224409 0.699683
+v -0.817845 0.247183 0.699051
+v -0.809610 0.283744 0.690101
+v 0.632313 -0.922559 0.013000
+v -0.358640 0.479866 -0.014649
+v 0.458670 -0.186851 -0.278909
+v -0.813279 0.410873 0.602659
+v -0.448494 0.320935 0.391198
+v -0.716954 0.909177 -0.682586
+v -0.707965 0.910516 -0.660088
+v 0.800038 -0.320961 0.072102
+v 0.769324 -0.176001 0.021879
+v -0.594376 0.652771 -0.693344
+v -0.584783 0.679723 -0.688962
+v 0.031007 0.237785 0.091378
+v -0.916583 0.034024 0.110421
+v -0.720930 0.720544 -0.230117
+v -0.715241 0.689412 -0.164844
+v -0.404032 0.496138 -0.025350
+v -0.440160 0.629561 0.130195
+v -0.488151 0.591292 0.162128
+v -0.513477 0.588519 0.164506
+v -0.813116 0.539105 0.434727
+v -0.818597 0.515510 0.473466
+v 0.306706 0.275303 0.157439
+v -0.934090 -0.204793 0.206307
+v -0.475787 -0.783930 0.409102
+v -0.511429 -0.801716 0.409439
+v -0.891350 -0.032140 0.154089
+v -0.452208 -0.468401 -0.194771
+v -0.500293 0.542692 0.391744
+v -0.334732 0.242974 0.105646
+v -0.346743 0.241913 0.068637
+v -0.466334 -0.840705 0.280819
+v -0.478742 -0.857221 0.262095
+v -0.657644 0.586351 -0.000481
+v -0.789262 0.147580 0.683532
+v -0.806222 0.147901 0.669909
+v -0.470504 -0.783486 0.499798
+v -0.478943 -0.783756 0.494544
+v -0.783812 0.244422 0.705051
+v -0.791752 0.311948 0.680762
+v -0.797543 0.356743 0.653234
+v -0.794002 0.396453 0.624441
+v -0.132124 -0.470624 0.576461
+v -0.138637 -0.494221 0.545579
+v -0.789427 0.428506 0.598635
+v -0.805364 0.493111 0.517578
+v -0.202731 -0.764128 -0.128260
+v -0.202519 -0.732715 -0.114699
+v -0.618025 -0.121815 -0.201068
+v 0.024320 0.211156 0.349367
+v -0.528240 0.557836 0.406110
+v -0.641953 0.763811 -0.413250
+v -0.618496 0.736991 -0.399936
+v -0.592766 0.459103 -0.130887
+v -0.158467 -0.866851 0.680909
+v 0.337927 0.162623 0.465010
+v 0.389559 0.161669 0.447037
+v -0.269297 0.717242 -0.151005
+v -0.594284 0.315864 -0.077083
+v -0.532805 -0.890804 0.274234
+v 0.294547 0.276209 0.189149
+v -0.787646 0.222070 0.704522
+v -0.785395 0.276267 0.697335
+v -0.201332 0.606709 -0.128137
+v -0.898219 -0.362509 0.204969
+v -0.911468 -0.307581 0.131242
+v -0.033988 0.220910 0.089117
+v -0.726893 0.580078 0.067342
+v -0.896835 -0.344901 0.165632
+v -0.902033 -0.327843 0.168146
+v -0.599153 -0.838752 0.444994
+v -0.934390 0.371190 0.470341
+v -0.950545 0.338561 0.252368
+v -0.846813 -0.435051 0.187021
+v -0.277214 0.510184 -0.002434
+v -0.925854 -0.223495 0.150946
+v -0.470239 -0.717047 0.166122
+v -0.749491 0.887289 -0.661173
+v -0.437931 0.417600 0.036416
+v 0.247270 0.269420 0.075530
+v -0.631391 0.424822 -0.133889
+v -0.590029 0.555486 -0.397972
+v 0.109481 0.259255 0.234802
+v -0.895564 -0.377497 0.190970
+v -0.886036 -0.396216 0.184679
+v -0.718998 -0.256706 0.549918
+v -0.623125 0.593642 -0.086263
+v -0.771098 0.344460 0.663811
+v -0.764594 0.464285 0.571172
+v 0.794791 -0.270835 0.029507
+v 0.788524 -0.221915 0.038404
+v -0.052970 0.220630 0.202315
+v -0.698052 0.765043 -0.326817
+v -0.908134 0.357291 0.100505
+v -0.944185 0.460032 0.192236
+v -0.825034 0.016930 0.011445
+v -0.832391 0.040283 -0.000572
+v -0.201892 -0.977580 0.310616
+v -0.436012 -0.788520 0.271669
+v -0.121018 0.198211 0.221559
+v -0.269675 0.126676 0.405761
+v 0.087964 0.250446 0.088008
+v 0.131432 0.241384 0.354264
+v 0.136966 0.221995 0.391910
+v -0.804002 -0.499004 0.093556
+v -0.193073 -0.148407 -0.273584
+v -0.177273 -0.148888 -0.276078
+v 0.118571 0.259981 0.129437
+v -0.922656 -0.254185 0.108198
+v -0.661458 0.335615 -0.086913
+v 0.351045 0.257872 0.062936
+v 0.233203 0.273030 0.115222
+v -0.977951 0.265916 0.298885
+v -0.691619 0.318984 -0.085105
+v -0.742096 -0.264720 -0.170943
+v -0.841549 0.137693 -0.033869
+v -0.642652 0.576218 -0.643291
+v -0.760195 0.127768 0.698989
+v -0.761809 0.161720 0.699939
+v -0.758981 0.188459 0.698670
+v -0.773540 0.201568 0.698351
+v -0.758704 0.234519 0.702884
+v -0.763550 0.300120 0.687508
+v -0.770251 0.409949 0.619534
+v 0.094390 0.054347 -0.200897
+v -0.154836 -0.778894 -0.277892
+v -0.109169 0.184867 0.274420
+v -0.133164 0.172745 0.286720
+v -0.620003 0.370044 -0.078280
+v 0.035589 0.758011 -0.273990
+v -0.266758 0.515457 0.019254
+v -0.228693 0.535801 -0.011043
+v -0.214125 0.546972 0.006298
+v -0.227349 0.822567 -0.000096
+v 0.148085 0.262265 0.101218
+v -0.588214 0.639809 -0.243163
+v 0.248449 0.276142 0.151249
+v 0.195364 0.257685 0.315802
+v 0.319055 0.262273 0.059641
+v -0.952754 0.265619 0.427260
+v -0.148392 0.645252 -0.157614
+v -0.464454 0.382687 0.016304
+v -0.203264 0.783679 -0.181324
+v -0.174027 0.807044 -0.194102
+v -0.894562 0.402320 0.120526
+v 0.208742 0.273364 0.149926
+v -0.456447 0.649574 0.108282
+v -0.641590 0.829954 -0.595113
+v -0.254929 -0.696692 -0.120815
+v -0.277957 -0.782009 -0.128814
+v -0.274823 -0.765356 -0.120859
+v -0.231300 -0.273387 -0.293290
+v -0.746937 0.102034 0.697255
+v -0.751303 0.268183 0.695804
+v -0.736678 0.301403 0.678082
+v -0.742371 0.333822 0.665932
+v -0.750547 0.396688 0.629407
+v -0.731909 0.452317 0.585292
+v -0.730856 0.482716 0.555252
+v 0.976497 -0.591862 0.298687
+v -0.898579 -0.089425 0.098587
+v 0.799588 -0.446313 0.048699
+v -0.146841 -0.930834 0.310317
+v 0.475282 -0.956101 -0.040347
+v 0.474489 -0.964808 -0.028950
+v 0.769931 -0.155479 0.046167
+v -0.171222 -0.951655 0.324218
+v -0.250119 0.835534 -0.029743
+v 0.141935 0.248185 0.338011
+v -0.923219 -0.280134 0.120729
+v -0.968712 0.207355 0.415071
+v -0.832227 -0.470979 0.187220
+v -0.670705 0.592179 0.207583
+v -0.934480 0.280166 0.077486
+v 0.164106 0.235723 0.372730
+v -0.569602 0.814964 -0.770304
+v -0.661960 0.491668 -0.413189
+v -0.679664 0.485820 -0.394637
+v -0.254094 -0.747260 -0.115161
+v -0.768400 -0.040635 -0.084151
+v -0.229860 -0.321524 -0.295751
+v -0.711168 0.451513 -0.213869
+v -0.729560 0.132701 0.707914
+v -0.740942 0.209460 0.700179
+v 0.310727 -0.750669 0.687892
+v 0.311278 -0.704621 0.696445
+v 0.267299 -0.548998 0.737644
+v -0.737993 0.417328 0.614554
+v 0.743887 -0.065175 0.103578
+v 0.735901 -0.055508 0.075134
+v 0.735820 -0.069675 0.038354
+v 0.712690 -0.019817 0.076585
+v -0.923832 -0.192207 0.117116
+v 0.799546 -0.369022 0.041163
+v -0.730035 0.707480 -0.211093
+v -0.977460 0.074427 0.210690
+v -0.920250 -0.294869 0.245011
+v -0.786324 0.846177 -0.568844
+v -0.146510 0.588352 -0.091283
+v -0.315941 0.492288 0.046775
+v -0.573324 0.614527 -0.347136
+v -0.574197 0.622611 -0.325773
+v -0.910794 0.424817 0.152851
+v -0.441219 0.481833 -0.012365
+v -0.201925 0.121933 0.394652
+v -0.207696 0.865114 -0.053075
+v 0.066194 0.250889 0.147935
+v 0.210566 0.261486 0.298629
+v -0.597283 0.715630 -0.755626
+v 0.336596 0.249696 0.026537
+v -0.589792 0.498571 -0.202197
+v -0.758433 -0.548264 0.095520
+v -0.141588 0.724632 -0.199670
+v -0.623028 0.685830 -0.738391
+v -0.739124 0.404768 -0.067490
+v -0.480947 -0.543283 -0.146132
+v -0.728384 0.094631 0.697583
+v -0.728020 0.170230 0.707337
+v 0.238023 -0.726934 0.706560
+v -0.421824 0.403554 0.086846
+v 0.260327 0.083657 0.529543
+v 0.255896 0.041856 0.549567
+v -0.689027 0.476032 -0.329281
+v -0.923102 -0.093604 0.208038
+v 0.279946 -0.908546 0.433417
+v 0.095225 0.877027 -0.349897
+v -0.892315 -0.380038 0.233102
+v -0.933746 0.445208 0.174174
+v 0.758495 -0.120550 0.033709
+v 0.942501 -0.637485 0.031282
+v -0.663362 0.472908 -0.331417
+v -0.536776 -0.795635 0.100196
+v -0.188727 0.880592 -0.071549
+v 0.238588 0.245221 0.360245
+v -0.702278 -0.247568 0.556009
+v -0.628455 0.483737 -0.336406
+v -0.585505 0.531894 -0.299384
+v -0.932614 0.410857 0.422062
+v -0.911073 -0.085635 0.266992
+v -0.980413 0.165621 0.157092
+v 0.049885 0.685451 -0.194606
+v -0.730728 -0.112201 0.505756
+v -0.710219 -0.092373 0.509522
+v -0.711822 -0.067840 0.502875
+v -0.715271 -0.042017 0.500157
+v -0.138431 0.806692 -0.215840
+v 0.561053 -0.272382 -0.268303
+v 0.148558 0.014156 0.564110
+v -0.709776 0.104245 0.704629
+v -0.712198 0.145229 0.709142
+v -0.691910 0.193049 0.699195
+v -0.720115 0.228606 0.692036
+v 0.329772 -0.826281 0.620944
+v 0.357029 -0.824167 0.603202
+v 0.319352 -0.040859 0.549740
+v 0.310037 -0.022859 0.547326
+v 0.240910 -0.765864 0.690926
+v 0.304853 -0.670747 0.705083
+v 0.285701 -0.611043 0.741403
+v 0.288410 0.088532 0.517367
+v 0.676266 -0.752503 0.424967
+v 0.824073 -0.807033 -0.007003
+v 0.838935 -0.789596 -0.013972
+v -0.709810 0.418140 0.608241
+v -0.708078 0.444570 0.588455
+v -0.605159 0.482551 -0.256857
+v -0.411029 0.358131 0.128017
+v 1.000294 -0.601228 0.165077
+v 0.998121 -0.635167 0.155537
+v 0.799391 -0.282670 0.054757
+v -0.357504 0.469825 0.010765
+v 0.896505 -0.727308 -0.003344
+v 0.855878 -0.772211 -0.012084
+v -0.231401 -0.974458 0.285834
+v -0.090048 0.609018 -0.102520
+v 0.964603 -0.652284 0.061178
+v -0.193909 -0.682011 -0.143855
+v 0.889278 -0.701245 -0.019921
+v -0.441921 0.339495 0.023359
+v 0.697485 -0.722417 0.423600
+v -0.340518 0.769402 0.021272
+v -0.625517 0.573302 -0.573634
+v 0.017157 0.969694 -0.260229
+v -0.719121 0.849994 -0.549302
+v 0.071813 0.254879 0.180684
+v -0.248782 -0.647636 -0.130445
+v 0.219640 0.274558 0.209316
+v 0.217200 0.270982 0.254711
+v -0.824011 -0.489156 0.166883
+v -0.256266 0.688774 -0.159654
+v -0.143621 0.673325 -0.175635
+v -0.701919 -0.204952 0.555760
+v -0.670467 0.415396 -0.121085
+v -0.583921 0.516654 -0.161982
+v -0.691039 -0.293241 0.557157
+v -0.459017 -0.629049 0.396733
+v -0.870434 0.444226 0.093043
+v -0.679625 -0.054237 0.504319
+v -0.624700 0.562180 -0.536084
+v 0.341051 -0.154874 0.645466
+v -0.627316 -0.236790 -0.212910
+v -0.509806 -0.391788 -0.242785
+v -0.509181 -0.626517 -0.039230
+v -0.502660 -0.651410 -0.037411
+v 0.371903 -0.208129 0.679913
+v -0.688160 0.213315 0.690418
+v 0.301717 -0.058236 0.558352
+v 0.260761 0.109963 0.510050
+v 0.268555 -0.751854 0.703063
+v 0.872738 -0.734695 -0.019612
+v 0.886173 -0.549095 0.362494
+v -0.443484 0.454809 0.006425
+v -0.710071 0.381120 0.631022
+v -0.612371 0.624974 -0.695476
+v -0.278969 -0.972979 0.441378
+v 0.796514 -0.232226 0.068283
+v -0.454454 0.336322 0.005845
+v 0.783585 -0.160002 0.107121
+v 0.808927 -0.388229 0.086436
+v -0.251927 -0.038557 -0.239866
+v 0.541863 -0.789671 -0.231789
+v 0.717414 -0.693906 0.421969
+v 0.705947 -0.689155 0.422250
+v -0.576650 -0.827809 0.429641
+v -0.602976 0.624603 -0.600340
+v -0.605277 0.620281 -0.167728
+v -0.305595 0.806992 -0.022054
+v -0.146181 0.129721 0.379873
+v -0.123002 0.139099 0.372734
+v -0.713188 0.578624 0.377491
+v -0.887591 -0.062877 0.079212
+v -0.098465 0.160325 0.350916
+v -0.679070 -0.264229 0.562052
+v -0.687657 -0.243665 0.558267
+v -0.690496 -0.179235 0.556101
+v -0.668377 -0.114465 0.538437
+v -0.689920 -0.026323 0.497475
+v -0.696191 -0.011918 0.507082
+v 0.357675 -0.106138 0.628049
+v -0.218625 -0.668244 -0.125863
+v -0.684364 0.087715 0.694205
+v -0.566568 0.761793 -0.762765
+v -0.675189 0.123655 0.701864
+v -0.709109 0.401339 -0.081007
+v 0.733163 -0.605404 0.409609
+v -0.087288 -0.953723 0.706670
+v -0.107806 -0.943788 0.714958
+v 0.367610 -0.238107 0.701621
+v 0.287963 -0.074942 0.571423
+v 0.235505 -0.332851 0.758560
+v 0.250557 -0.636713 0.740301
+v 0.250698 -0.825304 0.637874
+v 0.259771 -0.787056 0.678925
+v 0.258960 -0.883707 0.610983
+v -0.700114 0.441583 -0.180798
+v 0.928633 -0.746565 0.055943
+v -0.222947 -0.978910 0.298390
+v 0.773730 -0.867122 0.037328
+v 0.808560 -0.855079 0.045169
+v -0.609128 0.580216 -0.511206
+v 0.321391 -0.070798 0.580905
+v 0.342403 0.015072 0.527895
+v 0.422501 -0.446348 0.702265
+v 0.711098 -0.800779 0.429138
+v -0.449575 -0.715568 0.317848
+v -0.624228 0.052365 -0.126225
+v 0.178054 0.267775 0.246644
+v 0.263762 0.256487 0.331840
+v -0.679999 -0.196095 0.562850
+v -0.658404 -0.046165 0.510390
+v -0.663787 -0.023456 0.501917
+v 0.514402 0.014571 0.495752
+v 0.482729 0.009253 0.506285
+v -0.488770 0.384730 -0.008504
+v -0.415696 0.423551 0.091109
+v -0.404641 0.444914 0.110297
+v 0.522588 -0.066620 0.529702
+v 0.166207 -0.828045 0.623742
+v 0.380359 -0.180766 0.654953
+v 0.213597 -0.227345 0.734848
+v 0.869196 -0.788135 0.017445
+v -0.580627 0.737715 -0.648809
+v -0.576658 0.781014 -0.680549
+v 0.800301 -0.237407 0.165598
+v -0.400548 0.442521 0.089763
+v -0.624423 0.476237 -0.292028
+v -0.991780 0.212122 0.241560
+v -1.000702 0.173813 0.280407
+v -0.704667 0.479622 -0.321405
+v -0.419292 0.452313 0.013440
+v -0.664295 0.460130 0.561361
+v 0.920960 -0.764083 0.059678
+v -0.997678 0.142301 0.270932
+v 0.892653 -0.785180 0.041299
+v 0.795596 -0.203113 0.111593
+v 0.735739 -0.756499 0.437136
+v 0.692983 0.002193 0.050407
+v 0.259237 -0.176197 0.697813
+v -0.921674 -0.301017 0.160979
+v -0.931328 -0.273021 0.160729
+v -0.047614 0.199006 0.302209
+v -0.272001 0.823449 -0.106701
+v -0.230233 0.859045 -0.104951
+v 0.014120 0.691817 -0.115991
+v 0.013173 0.673184 -0.095415
+v 0.274112 0.276863 0.149740
+v 0.289432 0.261637 0.308774
+v 0.332423 0.271364 0.152299
+v -0.815548 -0.492147 0.105828
+v -0.659564 -0.148784 0.554148
+v -0.646844 -0.092847 0.538424
+v -0.322377 -0.975521 0.388846
+v -0.629851 0.577086 -0.632241
+v -0.645007 0.557653 -0.616150
+v 0.259475 -0.246433 -0.405280
+v 0.228012 -0.554383 0.742621
+v 0.210401 -0.527305 0.746055
+v -0.120403 0.586567 -0.061980
+v 0.155187 -0.426461 0.772518
+v 0.202715 -0.618258 0.745728
+v 0.200815 -0.636329 0.738899
+v 0.145186 0.120927 0.506623
+v -0.371988 0.456869 0.077837
+v 0.348344 -0.284723 0.724648
+v 0.309854 -0.099854 0.608639
+v -0.363069 0.460886 0.054947
+v 0.293521 -0.583472 0.738078
+v 0.300111 -0.601584 0.736100
+v 0.287022 -0.675727 0.706106
+v 0.287217 -0.640811 0.730779
+v 0.296721 -0.804955 0.660351
+v 0.271091 -0.805251 0.663721
+v 0.287047 -0.747892 0.701443
+v 0.268066 -0.848322 0.608944
+v -0.650634 0.462843 0.551895
+v -0.607945 0.473169 -0.232802
+v -0.600857 0.467434 -0.184305
+v 0.802680 -0.238752 0.123082
+v 0.802103 -0.288754 0.194402
+v 0.997297 -0.607074 0.141636
+v 0.772687 -0.477284 -0.020603
+v 0.814004 -0.534096 0.340656
+v -0.591519 0.663108 -0.719189
+v 0.758484 -0.745222 0.439270
+v 0.235282 -0.744294 0.700771
+v 0.222885 -0.767789 0.693325
+v 0.204742 -0.387630 0.760691
+v 0.751119 -0.083693 0.073293
+v 0.795344 -0.413937 0.020872
+v -0.058851 0.215651 0.101560
+v -0.060610 0.220748 0.178339
+v -0.462912 -0.784462 0.464987
+v -0.496798 -0.794700 0.517203
+v -0.940344 0.336939 0.311882
+v -0.712740 0.507422 -0.485644
+v -0.716615 0.527173 -0.498331
+v -0.706561 0.522387 -0.530014
+v -0.640196 -0.258572 0.585672
+v 0.401324 0.238921 0.047961
+v 0.011360 -0.929640 -0.327482
+v -0.636904 -0.150441 0.556987
+v -0.638338 -0.116632 0.550640
+v -0.639146 -0.021884 0.507764
+v -0.630029 0.439064 -0.174545
+v -0.448077 -0.797750 0.521288
+v 0.249295 -0.440522 0.744013
+v 0.211716 -0.656623 0.724863
+v 0.420757 -0.110121 0.620305
+v 0.141924 -0.243373 0.748552
+v 0.173463 -0.312665 0.755315
+v 0.175701 -0.676816 0.711505
+v 0.165020 -0.711414 0.714442
+v 0.320156 -0.127861 0.630159
+v 0.294128 -0.126851 0.622310
+v 0.293021 -0.693488 0.702079
+v 0.279849 -0.736726 0.706024
+v 0.216554 -0.373526 0.756182
+v -0.292015 0.512888 -0.033834
+v 0.304165 -0.633588 0.724339
+v -0.440153 0.374263 0.041022
+v 0.773664 -0.430031 -0.030041
+v 0.780621 -0.209741 0.020541
+v 0.782235 -0.362595 -0.002160
+v 0.000121 0.229093 0.268087
+v 0.235697 0.259219 0.032207
+v 0.446780 0.226348 0.096881
+v -0.966925 0.230719 0.141299
+v -0.625241 -0.345725 0.583484
+v 0.075147 0.827370 -0.348386
+v -0.629567 -0.293585 0.591675
+v -0.108609 -0.183870 0.583763
+v -0.653981 -0.219670 0.565326
+v -0.635139 -0.169796 0.560029
+v -0.620386 -0.103824 0.554089
+v -0.630748 -0.043841 0.518532
+v -0.619659 -0.007345 0.505238
+v 0.248991 -0.405217 0.748320
+v 0.251536 -0.655882 0.727799
+v 0.307213 -0.192166 0.689613
+v -0.486238 -0.389467 -0.247092
+v 0.788373 -0.882141 0.085642
+v 0.309896 -0.231023 0.708450
+v 0.155475 -0.547696 0.742944
+v 0.208421 0.132627 0.502525
+v 0.187187 -0.656249 0.716021
+v 0.173760 -0.650184 0.715499
+v 0.340517 -0.721531 0.693003
+v 0.306207 -0.142745 0.636608
+v 0.302405 -0.462437 0.746786
+v 0.298617 -0.545968 0.730051
+v 0.298130 -0.240807 0.718523
+v -0.416547 0.395381 0.156406
+v -0.421383 0.436693 0.144035
+v 0.960658 -0.692118 0.082002
+v -0.159926 0.155105 0.317950
+v -0.010955 0.229724 0.240130
+v 0.052989 0.250151 0.218672
+v -0.187343 0.155548 0.335905
+v 0.022056 0.238914 0.124407
+v -0.232809 0.154244 0.366235
+v -0.164294 0.572958 -0.069983
+v 0.171204 -0.924097 0.206827
+v -0.634355 -0.398739 0.555100
+v -0.603619 -0.295857 0.596451
+v -0.615253 -0.218201 0.583126
+v -0.616103 -0.130444 0.561423
+v -0.026310 -0.930759 -0.204926
+v -0.642151 0.536612 -0.556258
+v 0.532050 -0.893456 -0.050805
+v 0.538964 -0.868975 -0.065250
+v -0.263090 0.581967 -0.106412
+v 0.326203 -0.740096 0.687303
+v 0.152337 -0.287137 0.752622
+v 0.354943 -0.696172 0.695507
+v 0.305106 -0.157730 0.654948
+v 0.291983 -0.824699 0.643142
+v 0.286292 -0.771656 0.687294
+v 0.173094 -0.614819 0.737546
+v 0.147473 -0.640458 0.731890
+v 0.158027 -0.606762 0.740348
+v 0.323330 -0.262231 0.723573
+v 0.146086 -0.689753 0.712286
+v 0.189482 0.101205 0.524039
+v -0.117237 0.874858 -0.093822
+v -0.034784 0.162298 0.395600
+v -0.289891 0.804892 -0.003924
+v -0.701387 0.870843 -0.595612
+v -0.615462 -0.384314 0.570062
+v -0.827647 0.103618 0.646539
+v -0.606666 -0.271093 0.598637
+v -0.587882 -0.179196 0.578510
+v -0.613206 -0.169150 0.565754
+v -0.600542 -0.031851 0.518994
+v 0.200979 -0.040820 0.579308
+v 0.771715 -0.788859 0.427718
+v 0.218148 -0.166180 0.701107
+v -0.625356 0.464114 -0.251111
+v 0.160021 -0.348577 0.755880
+v 0.213404 -0.281292 0.746640
+v 0.777629 -0.234494 -0.006862
+v -0.136446 0.880014 -0.067899
+v -0.242838 -0.409254 -0.231006
+v -0.204890 0.727677 -0.184256
+v -0.162923 0.199701 0.143321
+v -0.621947 0.598851 -0.663474
+v -0.613413 0.805576 -0.607113
+v -0.638288 0.804804 -0.552845
+v -0.594095 -0.418361 0.557232
+v -0.600121 -0.361984 0.583816
+v -0.599771 -0.245787 0.597386
+v -0.594030 -0.146150 0.563918
+v -0.569851 -0.102754 0.560048
+v 0.656775 -0.814240 0.413670
+v 0.659779 -0.775021 0.424293
+v 0.508809 -0.244751 0.635964
+v 0.764206 -0.766869 0.438055
+v 0.783948 -0.707272 0.436160
+v 0.187242 -0.845870 0.618008
+v -0.634051 0.562372 -0.607576
+v 0.147215 0.040749 0.551496
+v -0.898416 -0.344030 0.199431
+v 0.190138 0.027198 0.562097
+v 0.801748 -0.247418 0.088003
+v 0.939607 -0.753196 0.082439
+v -0.368835 0.131707 0.376706
+v 0.210425 -0.952177 0.242010
+v -0.957516 0.235251 0.515586
+v -0.926121 0.356864 0.377216
+v -0.566324 -0.807678 0.100911
+v -0.946194 0.373908 0.297423
+v -0.120521 0.126000 0.398114
+v -0.648795 0.510549 -0.462245
+v 0.544074 -0.921584 -0.018934
+v -0.773208 0.235760 -0.075392
+v 0.464378 -0.955794 -0.065068
+v -0.601179 -0.609458 -0.027553
+v -0.601315 -0.623295 -0.007096
+v -0.572963 -0.410958 0.563281
+v -0.586490 -0.357451 0.583656
+v -0.576682 -0.287814 0.601002
+v -0.579925 -0.265814 0.603935
+v -0.563502 -0.229192 0.601363
+v -0.581665 -0.198447 0.590798
+v -0.565216 -0.166042 0.575208
+v 0.174301 -0.372268 0.758450
+v 0.405101 0.017478 0.524922
+v -0.837161 -0.452869 0.199530
+v 0.299067 -0.440717 0.745879
+v 0.233817 -0.805655 0.659858
+v 0.293273 -0.175543 0.685169
+v 0.267669 -0.089440 0.580076
+v 0.220231 -0.057377 0.575914
+v 0.236202 -0.025072 0.567943
+v 0.240280 -0.541919 0.738190
+v 0.167774 -0.781696 0.673756
+v -0.971069 0.142621 0.402848
+v 0.296127 -0.493415 0.742477
+v 0.335455 -0.763930 0.672203
+v 0.329755 -0.787986 0.660965
+v 0.216506 -0.010841 0.568865
+v 0.379832 0.070907 0.497319
+v 0.406525 0.085665 0.489488
+v -0.182389 0.594803 -0.113910
+v 0.194397 -0.413898 0.770999
+v 0.137298 -0.227090 0.743781
+v -0.057777 0.685422 -0.187587
+v -0.961960 0.229710 0.467676
+v -0.047743 0.207608 0.049060
+v -0.158894 -0.170910 -0.286128
+v -0.297525 -0.971793 0.515798
+v -0.168546 0.716927 -0.190155
+v -0.383363 0.447095 0.058246
+v -0.564789 -0.379414 0.573245
+v -0.551516 -0.330206 0.583585
+v -0.574100 -0.323626 0.589273
+v -0.549214 -0.266219 0.599938
+v -0.573629 -0.140368 0.568116
+v -0.591032 -0.072994 0.544167
+v -0.572181 -0.003754 0.503583
+v 0.786452 -0.434258 -0.002257
+v 0.755931 -0.198588 -0.027358
+v -0.048703 0.637688 -0.137046
+v 0.209924 -0.766042 0.699748
+v 0.259093 -0.039505 0.563189
+v 0.226794 -0.188910 0.717416
+v 0.156984 0.104558 0.520430
+v 0.380128 -0.124523 0.634410
+v 0.134808 0.137577 0.490034
+v 0.241737 -0.847350 0.609980
+v 0.261538 -0.866248 0.607031
+v -0.305662 -0.963874 0.555584
+v -0.611801 0.555567 -0.470012
+v 0.466398 -0.286156 0.651653
+v 0.169059 -0.806265 0.650075
+v -0.137939 -0.964991 0.682148
+v 0.207810 -0.827959 0.624033
+v 0.328973 -0.423268 0.738064
+v 0.271393 -0.144993 0.650945
+v 0.270431 -0.127985 0.617319
+v 0.217350 -0.674872 0.721048
+v 0.759891 -0.150725 0.009102
+v -0.632369 -0.555160 -0.065697
+v -0.631434 0.762920 -0.738918
+v -0.177905 0.746361 -0.196074
+v -0.552388 -0.292190 0.597948
+v -0.538710 -0.194873 0.593735
+v -0.558786 -0.123755 0.566916
+v -0.566219 0.030838 0.486521
+v 0.153676 -0.041193 0.584852
+v 0.210565 -0.721680 0.724483
+v 0.281542 -0.112660 0.604413
+v 0.308490 -0.848076 0.605518
+v 0.260767 -0.206131 0.718532
+v 0.279338 -0.461979 0.747026
+v 0.222822 -0.780250 0.682794
+v 0.379126 -0.107971 0.628646
+v 0.179196 -0.766565 0.694484
+v -0.740601 0.527933 -0.364342
+v -0.724918 0.495328 -0.370510
+v 0.751055 -0.650816 0.411218
+v 0.755336 -0.627514 0.397358
+v 0.749709 -0.613915 0.392694
+v 0.734919 -0.651824 0.408086
+v 0.051871 0.745389 -0.273166
+v 0.224856 -0.430704 0.766077
+v 0.215210 -0.457389 0.766885
+v 0.359097 -0.429861 0.724479
+v -0.190308 0.884556 -0.093060
+v 0.104789 0.784374 -0.299845
+v 0.095036 0.767471 -0.308334
+v -0.114143 0.204490 0.187601
+v -0.731644 0.308671 -0.077059
+v -0.773817 -0.106936 -0.109227
+v -0.542815 -0.446980 0.562064
+v -0.539410 -0.430870 0.569575
+v -0.529473 -0.328497 0.585026
+v -0.540676 -0.084022 0.556273
+v -0.572798 -0.054502 0.535344
+v 0.085808 0.756845 -0.297330
+v 0.236063 -0.208754 0.726062
+v 0.263888 -0.417349 0.740260
+v 0.281219 -0.039733 0.555434
+v 0.247442 -0.363439 0.753502
+v 0.219363 0.116687 0.513834
+v 0.398494 -0.090118 0.612838
+v 0.733530 -0.112350 -0.019934
+v 0.147138 -0.747740 0.699604
+v 0.153116 -0.727010 0.710185
+v 0.204585 -0.746023 0.717631
+v 0.260001 0.006927 0.562947
+v 0.314867 -0.814047 0.646392
+v 0.253980 -0.503012 0.739017
+v 0.766580 -0.900430 0.113985
+v 0.286983 -0.142775 0.639760
+v 0.160482 -0.014155 0.576633
+v 0.286871 0.123053 0.490915
+v 0.272536 -0.295345 0.749667
+v 0.231314 -0.497625 0.748370
+v 0.218793 -0.882831 0.618809
+v 0.056160 0.206007 0.383552
+v -0.523379 -0.842352 0.585554
+v -0.524319 -0.824141 0.566816
+v -0.680142 0.598048 0.001891
+v -0.146121 0.186980 0.255589
+v -0.711783 0.589209 0.040347
+v -0.150768 0.170446 0.290842
+v 0.029232 0.666001 -0.167925
+v -0.668820 -0.276170 -0.198207
+v -0.652058 -0.271669 -0.203898
+v -0.514292 -0.898114 -0.099643
+v -0.187495 -0.963936 -0.373846
+v -0.539243 -0.399812 0.577072
+v -0.547874 -0.373447 0.576811
+v -0.533273 -0.352609 0.582554
+v -0.530565 -0.301273 0.590345
+v -0.532003 -0.271677 0.592995
+v -0.533973 -0.251984 0.601090
+v -0.536391 -0.146723 0.570279
+v -0.520650 -0.109514 0.568781
+v -0.532610 -0.014639 0.512871
+v -0.559198 0.010039 0.494477
+v -0.543804 0.048859 0.485569
+v 0.180525 -0.866444 0.627384
+v 0.270613 -0.074735 0.570186
+v 0.269559 -0.055774 0.562319
+v 0.186590 -0.573707 0.748758
+v -0.575132 0.445332 -0.044451
+v 0.197914 -0.484869 0.765284
+v 0.180283 -0.333255 0.758964
+v 0.195167 -0.727361 0.722904
+v -0.930559 -0.148525 0.165522
+v -0.100446 0.596662 -0.031493
+v 0.369672 -0.040574 0.562144
+v 0.876220 -0.641802 0.404116
+v 0.313554 0.106162 0.502135
+v -0.514809 -0.692212 0.088351
+v -0.267976 -0.650648 -0.131116
+v -0.687768 0.532227 -0.559286
+v -0.683209 0.558835 -0.609407
+v -0.497143 -0.815725 0.561433
+v -0.707202 0.374771 -0.073515
+v -0.516943 -0.427466 0.574421
+v -0.533123 -0.217202 0.601331
+v -0.507292 -0.168605 0.575256
+v 0.251493 -0.464955 0.742955
+v 0.236690 -0.471095 0.750501
+v -0.506094 0.048806 0.477767
+v -0.502778 0.031490 0.480561
+v 0.190262 -0.209555 0.731285
+v 0.169344 0.158292 0.480625
+v 0.708897 -0.067994 -0.002716
+v 0.226462 -0.828754 0.626551
+v 0.200030 -0.706968 0.725035
+v 0.338598 0.133612 0.483665
+v 0.316044 0.148541 0.477383
+v 0.333282 -0.200279 0.684697
+v -0.231851 -0.429727 -0.243534
+v -0.242036 -0.677613 -0.121032
+v 0.181236 -0.242051 0.742296
+v 0.152487 -0.468850 0.773244
+v 0.798355 -0.663381 0.429637
+v 0.749549 -0.672931 0.422767
+v -0.508181 -0.877387 0.613699
+v -0.499718 -0.846272 0.595904
+v -0.528676 -0.884625 0.610833
+v -0.602637 0.384102 -0.072178
+v -0.415448 0.475237 -0.011660
+v -0.614602 0.450153 -0.181810
+v -0.768488 -0.124624 -0.118597
+v -0.529196 -0.469667 0.551628
+v -0.345165 -0.968876 0.552706
+v -0.506680 -0.389076 0.590755
+v -0.503428 -0.362269 0.596325
+v -0.498457 -0.320504 0.597306
+v -0.499787 -0.279823 0.594909
+v -0.501264 -0.235626 0.603022
+v -0.507401 -0.200233 0.594343
+v -0.504437 -0.132434 0.574768
+v -0.513270 -0.062175 0.547047
+v -0.497565 -0.016850 0.516553
+v 0.145324 -0.673688 0.715872
+v 0.394258 -0.021565 0.543775
+v 0.328386 -0.520274 0.731352
+v 0.244271 -0.697026 0.709833
+v 0.331289 -0.176962 0.665406
+v -0.598491 0.585128 -0.479672
+v -0.591869 0.422596 -0.070891
+v 0.465682 -0.175778 0.625655
+v 0.454645 -0.236412 0.633627
+v 0.450747 -0.182336 0.628540
+v -0.257666 -0.616284 -0.147833
+v -0.621912 -0.824655 0.092717
+v -0.900049 -0.323770 0.202160
+v -0.487143 -0.882419 0.617590
+v 0.701438 -0.935804 0.160320
+v -0.601139 0.440918 -0.131686
+v -0.600919 0.452418 -0.155999
+v 0.676886 -0.002888 -0.000594
+v -0.097265 0.148145 0.374618
+v -0.635854 -0.908133 -0.059567
+v -0.635458 -0.531612 -0.096205
+v -0.754199 0.306088 -0.070531
+v -0.107608 0.698556 -0.190715
+v -0.494353 -0.436523 0.568269
+v -0.488577 -0.386092 0.593583
+v -0.476596 -0.364398 0.599381
+v -0.499918 -0.255805 0.600271
+v -0.468414 -0.248302 0.593270
+v -0.486660 -0.165774 0.575812
+v -0.494140 -0.117126 0.569756
+v -0.477525 -0.052353 0.537247
+v -0.485945 -0.030186 0.527265
+v -0.484569 0.013240 0.491192
+v 0.374922 -0.157778 0.642935
+v 0.322682 -0.687250 0.699300
+v 0.419773 0.033294 0.512708
+v 0.490634 -0.213030 0.632416
+v 0.761315 -0.586465 0.376954
+v 0.766241 -0.607376 0.385707
+v 0.456726 -0.265241 0.642866
+v 0.442934 -0.234358 0.641809
+v 0.794127 -0.624882 0.409440
+v 0.777716 -0.578794 0.369789
+v 0.787436 -0.534952 0.342707
+v 0.776353 -0.555024 0.357926
+v -0.415135 0.376420 0.193489
+v -0.769757 0.485842 0.544673
+v -0.611355 0.491811 -0.318171
+v -0.590180 0.481651 -0.164386
+v 0.943300 -0.762846 0.115088
+v 0.426517 -0.086298 0.603801
+v -0.488892 -0.917683 0.626411
+v -0.098581 0.633408 -0.140746
+v -0.108412 0.610042 -0.112230
+v -0.476623 -0.798793 0.532503
+v -0.702722 0.587784 0.141604
+v -0.659512 0.912423 -0.697901
+v 0.012148 -0.037030 -0.256181
+v 0.094065 -0.647121 0.729501
+v 0.084180 -0.667226 0.710814
+v -0.530404 0.582585 0.231436
+v -0.161681 -0.922457 0.703268
+v -0.180394 -0.948816 0.683264
+v -0.181158 -0.924358 0.434152
+v -0.529797 0.169112 -0.082019
+v -0.748676 0.327330 -0.066346
+v -0.200164 0.553115 -0.043877
+v -0.484181 -0.478479 0.541891
+v -0.471172 -0.453356 0.560535
+v -0.479100 -0.268226 0.596314
+v -0.477530 -0.198018 0.583744
+v -0.472845 -0.147177 0.569531
+v -0.470573 -0.112955 0.559946
+v -0.450006 -0.013836 0.511490
+v -0.478300 -0.005429 0.506327
+v -0.479754 0.057216 0.466303
+v 0.179538 -0.442725 0.775589
+v 0.197418 -0.549364 0.748010
+v 0.134079 0.074126 0.532145
+v 0.174468 -0.480978 0.771638
+v -0.423239 0.404916 0.185371
+v 0.174761 -0.528837 0.748174
+v 0.457151 -0.021457 0.530963
+v 0.814097 -0.435747 0.165027
+v 0.864476 -0.835152 0.094814
+v 0.592134 -0.553697 -0.235627
+v 0.587136 -0.524001 -0.258617
+v 0.607311 -0.519100 -0.234268
+v -0.989370 0.110489 0.222731
+v 0.369851 -0.058005 0.582594
+v 0.690437 0.004922 0.292953
+v -0.622997 0.259873 -0.093147
+v -0.759598 0.343525 -0.059244
+v -0.447736 -0.454214 0.565970
+v -0.466567 -0.409360 0.577280
+v -0.478139 -0.331683 0.601287
+v -0.473262 -0.305893 0.603179
+v -0.456121 -0.235167 0.586412
+v -0.459785 -0.138909 0.568235
+v -0.456276 -0.077825 0.542707
+v -0.461059 0.039810 0.474544
+v 0.279362 -0.524019 0.734842
+v -0.289527 0.505732 0.037418
+v 0.398067 -0.056337 0.578539
+v 0.487749 -0.169686 0.621270
+v 0.246735 -0.675977 0.713687
+v 0.754541 -0.889364 0.047876
+v 0.722192 -0.885289 0.005565
+v -0.130804 -0.916763 0.480044
+v 0.212695 -0.847675 0.612106
+v 0.235809 -0.392042 0.753834
+v 0.261747 -0.582507 0.746707
+v 0.215822 -0.598607 0.748614
+v -0.580812 0.559118 -0.333600
+v -0.583075 0.807463 -0.678955
+v -0.592860 -0.844544 0.412524
+v -0.298043 0.505167 0.050829
+v -0.122393 -0.804374 -0.315067
+v -0.452006 -0.832602 0.578086
+v -0.452786 -0.817520 0.559477
+v -0.432302 -0.801842 0.529984
+v -0.433073 -0.784424 0.499001
+v -0.638363 0.781129 -0.499128
+v -0.954259 0.417527 0.303872
+v -0.622794 0.849338 -0.761664
+v -0.886017 0.163170 -0.016104
+v 0.201301 -0.063539 -0.266303
+v -0.444229 -0.305936 0.605594
+v -0.434876 -0.279752 0.603795
+v -0.459255 -0.207572 0.582887
+v -0.459571 -0.181020 0.580135
+v -0.457990 -0.040782 0.530848
+v -0.450619 -0.781572 0.474351
+v 0.018509 0.738330 -0.249966
+v 0.247808 -0.615610 0.748398
+v -0.279780 0.525858 0.052821
+v 0.310209 -0.867316 0.601972
+v 0.354704 0.085104 0.500364
+v 0.743320 -0.703714 0.430899
+v -0.598208 0.537554 -0.390871
+v 0.206210 0.088771 0.533620
+v 0.483025 -0.021382 0.526983
+v 0.234704 -0.674375 0.718320
+v 0.252563 -0.108268 0.589809
+v 0.226892 0.020958 0.564856
+v -0.472747 0.608674 0.144126
+v -0.581813 0.590917 -0.198988
+v -0.435189 -0.851850 0.588952
+v -0.432328 -0.817038 0.551911
+v 0.357057 -0.132110 0.637191
+v -0.447272 -0.785426 0.505016
+v -0.716517 0.419977 -0.094837
+v -0.622661 0.490472 0.516982
+v 0.016340 0.237896 0.236280
+v -0.054277 0.207151 0.269308
+v -0.790869 0.372310 -0.046320
+v -0.767964 0.401068 -0.052923
+v -0.229256 -0.577859 -0.170688
+v -0.425830 -0.453932 0.568763
+v -0.438883 -0.422041 0.578780
+v -0.446403 -0.381857 0.585656
+v -0.458873 -0.343770 0.596765
+v -0.431027 -0.239803 0.588830
+v -0.435565 -0.225194 0.586814
+v -0.438736 -0.137822 0.574391
+v -0.439700 -0.098431 0.552253
+v -0.431430 -0.071070 0.535144
+v -0.436480 -0.030517 0.518192
+v -0.447936 0.016437 0.491836
+v -0.422300 0.070069 0.449649
+v 0.404990 -0.157753 0.634241
+v -0.614550 0.460500 -0.211274
+v 0.242129 -0.263202 0.738818
+v -0.604842 0.429121 -0.110091
+v 0.140337 0.177715 0.456202
+v 0.273716 -0.317491 0.754106
+v 0.694612 -0.773259 0.428113
+v 0.265106 -0.388856 0.742162
+v -0.439614 0.569413 0.163259
+v 0.491545 -0.967148 0.002646
+v 0.504762 -0.941792 -0.008516
+v 0.279991 0.003501 0.557183
+v -0.427930 -0.834234 0.569663
+v -0.413094 -0.785719 0.508419
+v -0.411288 -0.769420 0.497333
+v -0.654005 0.520684 -0.516786
+v -0.775958 0.542779 0.453175
+v -0.747865 0.588372 0.302260
+v -0.596842 -0.882748 -0.062305
+v -0.449964 0.438256 0.016660
+v -0.429722 0.437499 0.029970
+v -0.228750 -0.539066 -0.197510
+v -0.715418 -0.928558 0.091981
+v -0.418253 -0.414348 0.584537
+v -0.442207 -0.363344 0.587347
+v -0.423327 -0.199523 0.594824
+v -0.424813 -0.176239 0.589853
+v -0.412161 -0.077303 0.538664
+v -0.420442 -0.052109 0.527775
+v -0.429362 -0.002960 0.506460
+v 0.223591 0.064406 0.544715
+v 0.709986 -0.833082 0.413788
+v 0.788943 -0.562495 0.359565
+v 0.361320 -0.090843 0.616478
+v 0.474684 0.032836 0.497610
+v -0.432832 0.596330 0.149826
+v -0.429691 0.353731 0.051885
+v -0.547599 -0.903870 0.270978
+v -0.552316 -0.920391 0.276469
+v 0.112145 -0.845542 0.641446
+v 0.615369 -0.921164 0.002800
+v -0.410765 -0.818013 0.546156
+v -0.415017 -0.798127 0.523096
+v -0.413284 -0.752484 0.484024
+v -0.117184 -0.743421 0.530244
+v -0.324862 0.492700 -0.017468
+v -0.672125 0.749769 -0.309702
+v -0.140252 -0.388132 -0.448003
+v -0.408542 -0.472781 0.554185
+v -0.402485 -0.363971 0.585483
+v -0.424840 -0.323051 0.603037
+v -0.416128 -0.302421 0.605674
+v -0.416763 -0.236801 0.587603
+v -0.405690 -0.198363 0.592062
+v -0.411019 -0.129858 0.573145
+v -0.414716 -0.092680 0.546652
+v -0.419702 0.032362 0.477524
+v -0.543144 0.067386 0.497537
+v -0.311134 0.507775 -0.036416
+v -0.573727 0.740896 -0.694266
+v 0.714018 -0.035579 0.045547
+v -0.410530 0.622847 0.132385
+v -0.409697 0.657984 0.110846
+v -0.400446 -0.851457 0.577120
+v -0.392177 -0.790094 0.519721
+v 0.091654 0.726119 -0.238481
+v 0.288649 0.271862 0.260662
+v -0.032497 0.680606 -0.186662
+v -0.394856 -0.452619 0.563878
+v -0.398639 -0.410748 0.581064
+v -0.373535 -0.363165 0.576776
+v -0.407977 -0.346220 0.591637
+v -0.391495 -0.319289 0.598467
+v -0.405533 -0.178971 0.589827
+v -0.393818 -0.093385 0.549316
+v -0.393406 -0.044612 0.535181
+v -0.404381 -0.022024 0.522536
+v -0.393161 0.012915 0.497192
+v -0.402641 0.050752 0.462857
+v -0.401003 0.083236 0.429978
+v -0.593894 0.494969 -0.222844
+v -0.958992 0.459942 0.257809
+v 0.245182 -0.074195 0.573194
+v 0.235055 -0.310972 0.755955
+v 0.385903 -0.162273 -0.279578
+v 0.408836 -0.141342 -0.274640
+v -0.201418 -0.890769 -0.366944
+v 0.674189 -0.782945 0.423399
+v 0.464329 0.000579 0.519157
+v 0.277829 -0.252738 0.728416
+v -0.390292 0.586412 0.135464
+v -0.400151 0.599549 0.138724
+v -0.632907 0.206050 -0.094366
+v -0.417280 0.426469 0.121634
+v -0.038957 0.708393 -0.208438
+v -0.380751 -0.832629 0.556617
+v -0.393183 -0.748326 0.499292
+v 0.253252 0.264917 0.302755
+v 0.341866 0.265256 0.103142
+v -0.380934 -0.436676 0.563767
+v -0.396481 -0.281184 0.599112
+v -0.394443 -0.251588 0.586844
+v -0.400057 -0.106348 0.554289
+v -0.400656 -0.003980 0.511354
+v 0.070656 0.914842 -0.356226
+v -0.191460 0.554845 -0.019146
+v 0.453957 -0.062333 0.573997
+v -0.280806 0.561957 -0.089142
+v 0.082881 0.788991 -0.327914
+v -0.615777 0.439134 -0.153254
+v 0.178788 -0.053498 0.587057
+v 0.106599 -0.061700 0.581307
+v -0.386615 0.631409 0.122329
+v -0.387200 0.656581 0.110289
+v -0.390389 0.693389 0.086606
+v -0.409761 0.301230 0.054741
+v -0.941478 0.495902 0.175301
+v -0.942356 0.477789 0.171813
+v -0.848276 -0.435941 0.216341
+v -0.379361 -0.852265 0.574111
+v -0.367603 -0.803347 0.531290
+v -0.375757 -0.772474 0.514428
+v 0.625449 -0.392428 -0.232862
+v -0.448519 -0.953587 0.614906
+v -0.374436 -0.463691 0.559633
+v -0.367923 -0.419116 0.561828
+v -0.367508 -0.394751 0.564779
+v -0.379548 -0.336959 0.590601
+v -0.355585 -0.258395 0.570227
+v -0.384055 -0.233297 0.578839
+v -0.380753 -0.199452 0.580167
+v -0.381292 -0.148464 0.569719
+v -0.382715 -0.128696 0.562318
+v -0.378877 -0.066144 0.546683
+v -0.364970 -0.055395 0.544019
+v -0.380788 0.099068 0.412650
+v -0.380781 0.130934 0.379402
+v 0.418332 -0.022492 0.542949
+v 0.665128 -0.835305 0.406749
+v -0.632585 0.546382 -0.520714
+v 0.060074 0.779204 -0.307087
+v -0.377398 0.616482 0.122093
+v -0.368661 0.670765 0.099212
+v -0.924906 0.513015 0.163919
+v 0.331559 -0.456605 0.739767
+v -0.673334 0.437315 -0.189776
+v -0.354793 -0.833814 0.558346
+v -0.348006 -0.808819 0.538593
+v -0.358046 -0.757998 0.517662
+v 0.478315 -0.038878 0.539358
+v -0.376586 -0.567659 0.521296
+v -0.618632 0.528271 -0.432913
+v -0.362479 -0.505528 0.557111
+v -0.356692 -0.397777 0.561307
+v -0.355230 -0.345692 0.572538
+v -0.347611 -0.293692 0.576354
+v -0.372371 -0.183330 0.575584
+v -0.346543 -0.115919 0.561080
+v -0.364912 -0.079623 0.553996
+v -0.376886 0.034956 0.474306
+v -0.661966 0.407908 -0.102748
+v 0.828032 -0.861112 0.093820
+v 0.339858 -0.808338 0.638329
+v 0.800773 -0.642346 0.421436
+v 0.491324 -0.253137 0.640253
+v 0.175672 -0.170335 0.704910
+v -0.363054 0.725666 0.067859
+v -0.958737 0.477635 0.232063
+v -0.886216 -0.395255 0.228714
+v 0.211365 -0.091432 0.586914
+v -0.400630 0.120189 0.399629
+v -0.369498 -0.729433 0.509494
+v -0.342357 -0.741035 0.521617
+v -0.348876 -0.525808 0.551652
+v -0.028202 -0.474323 0.717216
+v -0.339287 -0.449939 0.569269
+v -0.331654 -0.360397 0.560471
+v -0.346982 -0.316927 0.577758
+v -0.349701 -0.232229 0.571716
+v -0.333963 -0.153529 0.563452
+v -0.343044 -0.066732 0.548899
+v -0.342716 -0.037489 0.533825
+v -0.370983 -0.017887 0.522438
+v -0.344828 0.044785 0.467681
+v -0.373303 0.067974 0.445223
+v -0.307122 0.123037 0.402287
+v 0.808275 -0.315851 0.133174
+v -0.634940 0.463836 -0.270728
+v 0.811688 -0.365991 0.155538
+v 0.815200 -0.592616 0.393096
+v -0.200740 0.842176 -0.017739
+v -0.201623 0.858347 -0.036303
+v -0.351779 0.673564 0.094496
+v -0.334626 0.711267 0.077308
+v -0.360232 0.708516 0.081175
+v -0.139237 -0.943784 0.710420
+v -0.156208 -0.943494 0.703551
+v -0.427256 0.481731 0.175657
+v 0.927685 -0.747046 0.316059
+v 0.934684 -0.768988 0.279580
+v 0.428237 0.058388 0.498430
+v -0.386418 0.450281 0.032217
+v -0.330755 -0.846626 0.557293
+v -0.329506 -0.816025 0.540547
+v -0.325839 -0.763175 0.526204
+v -0.329516 -0.733270 0.524806
+v -0.325130 -0.684907 0.533637
+v -0.592349 0.492981 0.501209
+v -0.344076 -0.658499 0.530532
+v -0.333917 -0.611930 0.543486
+v -0.349118 -0.555237 0.539936
+v -0.329617 -0.382520 0.563793
+v -0.329076 -0.317721 0.568720
+v -0.332271 -0.282985 0.565548
+v -0.318914 -0.267762 0.566701
+v -0.335556 -0.115560 0.558678
+v -0.329189 -0.005270 0.509621
+v -0.340249 0.013035 0.495705
+v -0.344715 0.117011 0.399922
+v -0.339107 0.149911 0.359417
+v 0.919882 -0.658989 -0.000978
+v 0.738701 -0.095299 0.009608
+v -0.392680 0.301145 0.112566
+v 0.813273 -0.452176 0.110343
+v -0.234437 -0.882959 -0.359141
+v -0.315802 0.685969 0.075894
+v -0.341820 0.647280 0.093640
+v -0.329059 0.679452 0.083764
+v 0.811134 -0.383195 0.184466
+v -0.309653 0.748201 0.056264
+v -0.918796 0.375318 0.158584
+v -0.633855 -0.886517 -0.044433
+v -0.595797 0.398487 -0.070007
+v -0.298827 -0.927430 0.569008
+v -0.319199 -0.880635 0.569520
+v -0.311131 -0.854077 0.559835
+v -0.305145 -0.834380 0.552614
+v -0.308291 -0.798451 0.534385
+v -0.340263 -0.788164 0.530012
+v -0.326553 -0.651342 0.537062
+v -0.321125 -0.550111 0.551553
+v -0.341285 -0.502375 0.561580
+v -0.332489 -0.410888 0.571665
+v -0.316865 -0.305755 0.566604
+v -0.319353 -0.239506 0.565765
+v -0.321435 -0.200385 0.561346
+v -0.316724 -0.160919 0.559723
+v -0.316539 -0.106468 0.547679
+v -0.323663 -0.055536 0.536791
+v -0.326770 -0.034005 0.526985
+v 0.559663 -0.744783 -0.246887
+v -0.422165 0.381576 0.088256
+v -0.418229 0.408552 0.136102
+v -0.580726 -0.826261 0.497058
+v -0.555167 -0.808243 0.493180
+v -0.580331 0.819736 -0.774610
+v -0.894075 0.532178 0.145817
+v 0.230002 -0.088758 0.583684
+v -0.577043 -0.917642 0.324395
+v -0.580113 -0.899389 0.324267
+v -0.312714 -0.736119 0.526289
+v -0.312983 -0.615035 0.548809
+v -0.319706 -0.529765 0.555383
+v -0.293514 -0.458434 0.563880
+v -0.309367 -0.437778 0.572467
+v -0.309625 -0.411560 0.575050
+v -0.304909 -0.377544 0.568328
+v -0.316765 -0.339690 0.567598
+v -0.305763 -0.280610 0.569309
+v -0.300647 -0.075562 0.531103
+v -0.291848 -0.021850 0.504279
+v -0.311455 0.022670 0.483079
+v -0.312143 0.064985 0.453986
+v -0.317473 0.103083 0.421774
+v -0.406695 0.357353 0.181775
+v -0.452297 0.419021 0.021241
+v -0.648170 0.370038 -0.081510
+v 0.614934 -0.948304 0.059257
+v -0.869632 -0.413948 0.185310
+v 0.192499 -0.514777 0.752720
+v 0.389845 0.031693 0.517930
+v -0.313487 0.715740 0.070836
+v 0.089837 0.729845 -0.264532
+v -0.182573 0.564097 -0.001416
+v 0.306062 0.177164 0.454544
+v 0.069863 0.227014 0.346703
+v -0.292495 -0.874793 0.554903
+v -0.291029 -0.853634 0.550421
+v -0.284576 -0.809241 0.534052
+v -0.299127 -0.675390 0.536629
+v -0.276404 -0.653693 0.540661
+v -0.289538 -0.621032 0.550533
+v -0.284074 -0.473910 0.559761
+v -0.287182 -0.416346 0.571210
+v -0.291536 -0.176685 0.563171
+v -0.301499 -0.139116 0.553279
+v -0.279181 -0.128339 0.552989
+v -0.289781 -0.083807 0.531942
+v -0.290946 0.074882 0.444453
+v -0.286635 0.154474 0.376286
+v -0.886739 0.556105 0.265297
+v 0.340736 -0.040249 0.551057
+v 0.346585 -0.057993 0.579200
+v 0.166761 -0.843781 0.623356
+v 0.196476 -0.449847 0.773938
+v -0.297750 0.716495 0.064779
+v 0.749803 -0.076370 0.148486
+v -0.282545 0.783997 0.028786
+v -0.126571 0.596787 -0.006990
+v -0.715057 0.442318 -0.184475
+v 0.088138 0.807237 -0.338885
+v -0.278081 -0.854251 0.546349
+v -0.288804 -0.783769 0.527739
+v -0.276634 -0.755313 0.523878
+v -0.287461 -0.725924 0.525523
+v -0.266113 -0.675014 0.531566
+v -0.295303 -0.560766 0.556575
+v -0.286723 -0.384361 0.571737
+v -0.284034 -0.360439 0.580070
+v -0.290126 -0.318025 0.580243
+v -0.279997 -0.302228 0.581730
+v -0.278243 -0.272532 0.579082
+v -0.277905 -0.226595 0.577263
+v -0.304274 -0.215002 0.565038
+v -0.269027 -0.024667 0.502203
+v -0.298506 -0.000674 0.496270
+v -0.282906 0.045556 0.465173
+v -0.287379 0.105592 0.419044
+v -0.261103 0.145403 0.388149
+v 0.810779 -0.412804 0.110871
+v 0.836894 -0.863019 0.131834
+v -0.152488 0.580796 -0.006764
+v -0.079106 -0.925640 0.140341
+v 0.304386 -0.293438 0.742295
+v 0.360893 -0.021507 0.537427
+v -0.633113 0.551307 -0.567981
+v -0.637711 0.549205 -0.583173
+v 0.368405 0.061785 0.508364
+v -0.236645 0.555874 -0.076343
+v -0.288200 0.746549 0.054507
+v -0.285884 0.765033 0.044225
+v 0.803174 -0.290890 0.172643
+v -0.420115 0.368702 0.232652
+v -0.581035 0.705258 -0.672678
+v -0.563568 -0.882916 0.321102
+v -0.624538 0.849079 -0.643175
+v -0.252730 0.558870 -0.084129
+v 0.064318 -0.167597 0.684324
+v -0.277709 -0.834725 0.540950
+v -0.273199 -0.457300 0.558934
+v -0.273299 -0.398850 0.569436
+v -0.257078 -0.373234 0.577580
+v -0.258647 -0.333512 0.584044
+v -0.261780 -0.303493 0.582618
+v -0.267566 -0.109491 0.547459
+v -0.275031 -0.059169 0.515995
+v -0.264562 -0.002904 0.492129
+v -0.265003 0.036342 0.466506
+v -0.273643 0.087376 0.429642
+v 0.803244 -0.310132 0.090100
+v 0.603463 -0.495102 -0.248277
+v -0.573594 0.762841 -0.698229
+v -0.684656 0.412874 0.602577
+v 0.209415 0.159681 0.476179
+v 0.356659 -0.004256 0.529972
+v 0.294238 -0.331119 0.747994
+v -0.096108 0.901553 -0.110111
+v 0.329653 -0.016381 0.537669
+v 0.372394 -0.254884 0.708025
+v -0.256565 0.759717 0.035524
+v -0.265133 0.765503 0.039923
+v -0.251476 0.810663 0.008039
+v 0.478185 -0.967713 0.000514
+v 0.488934 -0.953241 -0.003059
+v -0.971650 0.188999 0.408434
+v -0.254302 -0.801825 0.529330
+v -0.260315 -0.785354 0.524897
+v -0.241797 -0.636311 0.536909
+v -0.266005 -0.626953 0.547484
+v -0.260693 -0.582627 0.553785
+v -0.271391 -0.422575 0.564805
+v -0.245168 -0.389632 0.567966
+v -0.260366 -0.281774 0.575031
+v -0.263396 -0.242106 0.581056
+v -0.254169 -0.147599 0.568106
+v -0.255953 -0.129775 0.560954
+v -0.242136 -0.050156 0.516824
+v -0.246007 0.012536 0.482330
+v -0.520513 -0.845019 -0.063017
+v 0.698958 -0.025356 0.018358
+v -0.277558 0.726543 0.050459
+v -0.261175 0.784744 0.029589
+v 0.530808 -0.954568 0.023981
+v 0.539851 0.081235 0.434006
+v 0.032298 0.174835 0.423269
+v -0.429399 0.086783 0.436920
+v -0.234373 -0.747775 0.510636
+v -0.258662 -0.722064 0.519875
+v -0.247554 -0.563224 0.551120
+v -0.261641 -0.537591 0.555753
+v -0.254071 -0.489221 0.560436
+v -0.247886 -0.440462 0.558939
+v -0.240047 -0.362051 0.573976
+v -0.243147 -0.263168 0.577261
+v -0.260773 -0.198848 0.581790
+v -0.233595 -0.077051 0.535618
+v -0.257570 0.063911 0.441556
+v 0.952153 -0.742290 0.107165
+v -0.232483 0.099726 0.421160
+v -0.234400 0.123368 0.404281
+v 0.781906 -0.174609 0.067090
+v 0.786200 -0.345376 0.021393
+v 0.377468 0.128457 0.473606
+v -0.233232 0.785689 0.016617
+v -0.213855 0.803859 -0.000334
+v -0.913796 0.404913 0.158249
+v 0.173094 0.171411 0.464456
+v -0.477004 0.541563 0.313477
+v -0.964022 0.228973 0.432231
+v -0.236931 -0.779243 0.517499
+v -0.233077 -0.675136 0.519561
+v -0.237037 -0.599731 0.544476
+v -0.219445 -0.569048 0.538834
+v -0.221484 -0.532752 0.549203
+v -0.227672 -0.417329 0.554934
+v -0.235261 -0.320162 0.574214
+v -0.219141 -0.309012 0.565431
+v -0.217319 -0.295215 0.569843
+v -0.231407 -0.235493 0.592018
+v -0.249450 -0.217432 0.588660
+v -0.232911 -0.173315 0.581468
+v -0.232303 -0.144774 0.570545
+v -0.239386 -0.124591 0.559455
+v -0.218699 0.028872 0.471256
+v 0.997880 -0.579193 0.223801
+v 0.892928 -0.812062 0.117785
+v -0.055665 0.955266 -0.148928
+v -0.062310 0.936643 -0.139717
+v 0.155305 -0.192531 0.723948
+v 0.179439 -0.594430 0.746261
+v 0.298052 -0.886317 0.605537
+v -0.233240 0.802885 0.012880
+v -0.213572 0.823563 -0.003096
+v -0.913476 -0.129648 0.104746
+v -0.364655 0.173738 0.336970
+v 0.113568 0.254538 0.293956
+v 0.392255 -0.972912 -0.179559
+v 0.408346 -0.972042 -0.179629
+v -0.209914 -0.731828 0.501235
+v -0.228409 -0.654202 0.524455
+v -0.227061 -0.515505 0.552844
+v -0.214387 -0.342232 0.559090
+v -0.213855 -0.272307 0.583755
+v -0.224642 -0.057970 0.524487
+v -0.232842 -0.003756 0.496338
+v -0.012401 -0.900895 0.694528
+v -0.029626 -0.932845 0.702355
+v -0.160448 0.595659 -0.107457
+v 0.816578 -0.670840 0.429614
+v 0.838936 -0.675893 0.420059
+v -0.652333 0.537303 -0.570271
+v -0.646356 0.545668 -0.592939
+v -0.215793 0.841950 -0.022016
+v -0.639676 0.386514 -0.081994
+v 0.838201 -0.525200 0.339078
+v 0.010332 0.986484 -0.261623
+v 0.011420 0.966285 -0.246293
+v -0.676389 0.382170 -0.080743
+v -0.188464 -0.744530 0.495798
+v -0.209192 -0.698694 0.503704
+v -0.202929 -0.615607 0.518028
+v -0.192684 -0.541720 0.530351
+v -0.194087 -0.489823 0.538996
+v -0.214813 -0.443146 0.553443
+v -0.209088 -0.369903 0.554911
+v -0.202338 -0.226218 0.590142
+v -0.212015 -0.184981 0.590725
+v -0.209591 -0.145527 0.581796
+v -0.205902 -0.084607 0.548020
+v -0.210650 -0.031962 0.517561
+v -0.199779 0.029751 0.474670
+v -0.226008 0.063879 0.443171
+v -0.204368 0.096228 0.422481
+v 0.691319 -0.512193 -0.153793
+v 0.909529 -0.785640 0.070435
+v 0.792787 -0.328100 0.043509
+v 0.293973 -0.393225 0.734612
+v -0.050305 0.970922 -0.163063
+v -0.201112 0.823088 -0.010957
+v -0.181046 0.862580 -0.033844
+v -0.190510 -0.428446 0.547295
+v -0.189410 -0.398614 0.548156
+v -0.194408 -0.342369 0.554857
+v -0.195820 -0.312455 0.563443
+v -0.191330 -0.288682 0.581331
+v -0.216490 -0.254636 0.590136
+v -0.180730 -0.154054 0.589568
+v -0.182904 -0.125848 0.577005
+v -0.189091 -0.049979 0.533776
+v -0.196032 0.079722 0.436373
+v -0.372289 0.464062 0.090341
+v -0.342035 0.510266 -0.043755
+v -0.187907 0.842780 -0.024059
+v 0.497376 -0.934277 -0.027039
+v 0.489977 -0.936037 -0.014759
+v 0.931139 -0.505878 0.088501
+v -0.181127 -0.730871 0.492051
+v -0.585809 0.741950 -0.765271
+v -0.572967 0.780249 -0.774630
+v -0.165535 -0.659597 0.494881
+v -0.174860 -0.571015 0.516175
+v -0.175573 -0.479151 0.535643
+v -0.176110 -0.420820 0.547659
+v -0.177220 -0.394635 0.555489
+v -0.177528 -0.365526 0.559875
+v -0.175168 -0.312763 0.574687
+v -0.175075 -0.290766 0.582598
+v -0.175120 -0.262153 0.584095
+v -0.187554 -0.083514 0.553906
+v -0.186157 -0.007667 0.506712
+v 0.963065 -0.570414 0.063865
+v 0.316181 -0.187857 -0.342724
+v 0.064907 0.691949 -0.204192
+v 0.304586 0.275335 0.214581
+v 0.324106 0.273809 0.196783
+v -0.166390 -0.708753 0.485997
+v -0.185922 -0.625790 0.509579
+v -0.162863 -0.597832 0.506016
+v -0.161696 -0.490740 0.533026
+v -0.155461 -0.453552 0.547800
+v -0.626845 0.607547 -0.678759
+v 0.044665 0.700122 -0.218995
+v -0.721676 -0.205977 0.546175
+v -0.162538 -0.272372 0.588173
+v -0.167013 -0.226235 0.586692
+v -0.188143 -0.202048 0.592679
+v -0.175203 -0.181081 0.597459
+v -0.161696 -0.126411 0.574701
+v -0.162679 0.030366 0.477922
+v -0.181591 0.048223 0.464577
+v -0.431804 0.444949 0.179180
+v 0.908493 -0.743900 0.022821
+v -0.609243 0.740378 -0.757180
+v -0.257700 -0.589941 -0.160723
+v 0.287869 0.045413 0.542932
+v -0.173671 0.842086 -0.035715
+v -0.162320 0.861997 -0.045241
+v -0.162363 -0.414251 0.564708
+v -0.193739 -0.851545 0.654006
+v -0.139869 -0.812287 0.658505
+v -0.544134 -0.867173 0.319974
+v -0.632536 -0.971993 0.201878
+v -0.150316 -0.701185 0.487236
+v -0.150362 -0.651307 0.493623
+v -0.149636 -0.602916 0.503395
+v -0.153835 -0.561600 0.514582
+v -0.158355 -0.524126 0.524534
+v -0.152288 -0.475795 0.541297
+v -0.585575 0.525634 -0.243749
+v 0.246549 0.174418 0.454626
+v 0.747701 -0.794056 0.433347
+v 0.398577 0.251236 0.129295
+v -0.159381 -0.246709 0.586703
+v -0.152456 -0.147589 0.578042
+v -0.143484 -0.097851 0.567841
+v -0.163229 -0.085016 0.556149
+v -0.163146 -0.019911 0.517773
+v -0.148517 0.113227 0.405730
+v 0.983667 -0.632342 0.096727
+v -0.911943 -0.072188 0.236305
+v 0.873045 -0.840276 0.192172
+v -0.004261 0.711373 -0.218715
+v 0.453752 0.031121 0.501857
+v 0.256680 -0.917834 0.610627
+v -0.149924 0.899903 -0.069262
+v -0.162341 0.896761 -0.073919
+v 0.785466 -0.306419 -0.014568
+v -0.634733 0.628260 -0.701948
+v 0.010500 0.697874 -0.209006
+v -0.145817 -0.833614 0.668335
+v -0.674757 0.457344 -0.281941
+v -0.136989 -0.654620 0.499298
+v -0.136500 -0.606189 0.507875
+v -0.137043 -0.547044 0.524997
+v 0.360791 0.261325 0.256129
+v -0.704343 0.723301 -0.228813
+v 0.369356 0.261845 0.210948
+v -0.686332 0.740259 -0.273869
+v -0.951245 0.317882 0.236437
+v -0.851343 0.557110 0.337977
+v -0.665550 0.545564 -0.593764
+v -0.140567 -0.215944 0.593798
+v -0.140930 -0.201118 0.599353
+v -0.158809 -0.169646 0.593334
+v -0.127603 0.004014 0.507692
+v -0.134722 0.045806 0.471506
+v -0.150699 0.062649 0.455814
+v -0.144268 0.086893 0.432707
+v 0.974293 -0.714807 0.188437
+v 0.083837 0.035454 -0.221856
+v -0.620308 0.304380 -0.084393
+v 0.418116 0.098695 0.480565
+v 0.803209 -0.748506 0.429998
+v 0.067884 0.047968 -0.206248
+v 0.088805 0.747320 -0.221590
+v -0.129333 -0.840840 0.673382
+v -0.380274 0.514934 -0.039965
+v -0.381625 0.488745 -0.023605
+v -0.129487 -0.757863 0.557022
+v -0.077643 0.602547 -0.057408
+v -0.123204 -0.622388 0.519225
+v -0.627879 0.448799 -0.201958
+v -0.644733 0.444599 -0.208602
+v -0.584146 0.559002 -0.373400
+v 0.236373 0.217903 0.403423
+v 0.212556 0.207191 0.421234
+v -0.980545 0.114979 0.513074
+v -0.973474 0.168531 0.133071
+v -0.961767 0.167044 0.113946
+v -0.479088 -0.812786 0.336810
+v 0.370368 0.261222 0.194406
+v -0.848192 -0.435791 0.157081
+v -0.838162 -0.453851 0.153703
+v -0.633381 0.567337 0.004466
+v -0.145961 0.198647 0.121642
+v 0.295852 0.199162 0.429803
+v 0.293326 0.241730 0.365771
+v -0.919624 0.531840 0.180715
+v -0.124156 -0.198935 0.593440
+v -0.127718 -0.222134 0.600419
+v -0.123821 -0.181723 0.581877
+v -0.140023 -0.136624 0.578803
+v -0.127045 -0.109485 0.576291
+v -0.127400 -0.073726 0.555702
+v -0.136551 -0.052230 0.542488
+v -0.141842 -0.023468 0.523259
+v -0.123963 0.074175 0.444670
+v -0.308913 0.544061 -0.072421
+v -0.297025 0.531241 -0.061375
+v 0.350960 -0.631162 0.697617
+v 0.120925 -0.127387 -0.290257
+v 0.193619 0.058421 0.550371
+v -0.600986 0.557663 -0.439897
+v -0.116739 0.934066 -0.117903
+v -0.110296 0.920789 -0.094875
+v -0.129071 -0.866533 0.701583
+v -0.116796 -0.806479 0.663564
+v -0.110836 -0.760634 0.577332
+v -0.115930 -0.868509 0.708775
+v -0.242835 -0.481160 -0.214783
+v -0.242231 -0.516778 -0.197591
+v 0.673579 -0.172911 -0.134659
+v 0.179961 0.186214 0.444389
+v 0.263428 0.241878 0.364432
+v -0.506639 -0.692709 0.119082
+v -0.495310 0.606059 0.140498
+v 0.261939 0.217945 0.399501
+v -0.160388 0.903857 -0.111836
+v -0.821540 -0.489682 0.135864
+v -0.833099 -0.471996 0.138134
+v 0.143489 -0.168394 0.704148
+v 0.395775 0.249104 0.262779
+v -0.120499 -0.127838 0.585725
+v -0.104457 -0.077063 0.568543
+v -0.111351 0.011493 0.510196
+v -0.116871 0.045414 0.474267
+v -0.097682 0.920777 -0.103713
+v -0.951988 0.368842 0.263999
+v -0.574647 0.717735 -0.712864
+v -0.110348 0.899942 -0.092088
+v -0.123437 0.918619 -0.089878
+v -0.099835 0.938119 -0.114349
+v -0.331230 0.790677 -0.017697
+v -0.086075 -0.821430 0.690043
+v -0.097899 -0.806153 0.671812
+v -0.113639 -0.788919 0.647370
+v -0.108576 -0.774617 0.619157
+v -0.090897 -0.759646 0.575820
+v -0.097733 -0.744603 0.551166
+v -0.076435 -0.743548 0.574055
+v -0.792228 0.581970 0.198619
+v -0.548863 0.582504 0.305310
+v -0.867718 -0.416422 0.146366
+v 0.322771 -0.210108 -0.363186
+v -0.949910 0.249192 0.107202
+v -0.965115 0.186435 0.120517
+v -0.960445 0.480595 0.296779
+v -0.224896 0.682017 -0.166966
+v -0.457467 0.364060 0.019041
+v -0.088696 -0.119647 0.588121
+v -0.109639 -0.144259 0.590902
+v -0.110730 -0.022332 0.535936
+v -0.113032 0.068065 0.453415
+v -0.117520 0.101036 0.427547
+v -0.618629 0.599404 -0.647283
+v -0.450496 -0.780405 0.306880
+v -0.444538 -0.739389 0.300076
+v 0.269461 0.143296 0.477324
+v 0.045813 0.671064 -0.170586
+v -0.282918 -0.351647 -0.254054
+v -0.080357 -0.804168 0.675447
+v -0.085505 -0.774006 0.621738
+v 0.045707 -0.116343 0.581320
+v 0.336922 0.267012 0.256027
+v -0.598471 0.742231 -0.532582
+v 0.235306 0.198235 0.432678
+v 0.358523 0.266053 0.171969
+v 0.430805 -0.961832 -0.179086
+v 0.425759 -0.960755 -0.195725
+v -0.507530 -0.710670 0.103412
+v -0.740977 0.590921 0.255455
+v 0.324006 0.256958 0.315054
+v -0.912727 0.328760 0.072948
+v -0.889197 -0.013849 0.157382
+v -0.202149 0.149804 0.354874
+v 0.710359 -0.910744 0.042030
+v 0.739546 -0.907484 0.071116
+v -0.097821 0.056181 0.474925
+v 0.038641 0.723537 -0.244529
+v -0.103758 0.616388 -0.005324
+v -0.074065 0.615572 -0.030499
+v -0.065297 0.615973 -0.100224
+v -0.052531 0.615726 -0.085858
+v -0.085573 -0.839944 0.701636
+v -0.082696 -0.790133 0.654231
+v -0.071503 -0.759684 0.586208
+v -0.664431 0.881863 -0.640902
+v 0.314467 0.267113 0.274058
+v -0.705445 0.593868 0.282450
+v -0.932210 -0.254453 0.155886
+v 0.814892 -0.441166 0.180474
+v -0.159108 -0.201369 -0.295523
+v -0.796608 0.814931 -0.558205
+v -0.580734 0.540081 -0.205703
+v -0.939241 0.302261 0.405899
+v -0.473915 -0.783523 0.437206
+v -0.455781 -0.767143 0.425237
+v -0.073988 0.937043 -0.125588
+v 0.346562 0.257082 0.299847
+v -0.495949 -0.711382 0.132432
+v -0.491435 -0.693551 0.143607
+v -0.440350 0.543325 0.175519
+v -0.082390 -0.145711 0.595003
+v -0.265896 -0.533610 -0.181699
+v -0.078352 0.040241 0.505483
+v -0.082367 0.098466 0.452078
+v -0.084676 0.135752 0.406682
+v 0.789944 -0.259773 0.006144
+v -0.961593 0.426515 0.278781
+v -0.959911 0.455983 0.281101
+v -0.124002 0.582210 -0.044632
+v -0.377068 0.464059 0.006544
+v 0.285337 -0.159917 0.671025
+v -0.067631 -0.822675 0.692905
+v -0.068134 -0.774507 0.618580
+v -0.052273 -0.741957 0.603010
+v -0.127104 0.197431 0.086280
+v -0.143901 0.200115 0.157143
+v -0.103890 -0.923229 -0.011866
+v 0.407959 0.243291 0.090688
+v -0.599133 0.601483 -0.153864
+v 0.403893 0.250068 0.165594
+v 0.807356 -0.456209 0.268066
+v -0.064047 -0.102504 0.585063
+v -0.069326 -0.068673 0.570292
+v -0.069595 0.024773 0.520665
+v -0.063671 0.061147 0.493714
+v -0.040318 0.087554 0.483972
+v -0.088451 0.120315 0.424554
+v 0.590140 -0.609533 -0.239506
+v 0.767175 -0.527551 -0.005591
+v 0.859016 -0.633268 0.410211
+v 0.329212 -0.548610 0.725635
+v 0.325794 -0.582116 0.728286
+v 0.825166 -0.642748 0.421137
+v 0.244234 -0.152970 0.674973
+v -0.047032 -0.790075 0.648371
+v -0.047110 -0.774353 0.615585
+v -0.051507 -0.758680 0.601965
+v -0.616340 0.530433 0.485493
+v -0.823433 -0.487811 0.215814
+v -0.715745 0.588876 0.329028
+v 0.371458 0.255629 0.083811
+v 0.450456 0.216116 0.047491
+v -0.803000 -0.508925 0.131469
+v 0.330000 0.249166 0.338720
+v 0.335639 0.233102 0.372277
+v 0.995340 -0.656932 0.174934
+v -0.333798 0.479874 0.023486
+v -0.637114 0.503134 -0.413009
+v -0.066554 -0.039449 0.556448
+v -0.035266 0.137924 0.435514
+v -0.916337 -0.075850 0.183306
+v 0.955895 -0.612630 0.049137
+v 0.834158 -0.606682 0.403614
+v -0.934270 -0.239223 0.174789
+v 0.088115 0.870322 -0.360175
+v -0.024500 -0.384724 0.753040
+v -0.067463 -0.406138 0.725592
+v -0.633862 -0.948890 0.509861
+v -0.848701 0.526780 0.426161
+v -0.048243 -0.058100 0.566207
+v -0.898010 -0.037195 0.174823
+v -0.897361 -0.014067 0.188046
+v 0.828410 -0.560995 0.373102
+v -0.216848 -0.701937 -0.116331
+v -0.069291 -0.303851 0.729634
+v 0.737083 -0.624610 0.402353
+v -0.511400 0.366387 -0.038713
+v 0.762602 -0.559885 0.371394
+v 0.130564 -0.117015 0.592147
+v -0.027174 0.988125 -0.231382
+v -0.011791 0.991459 -0.229871
+v 0.000523 -0.915751 -0.118626
+v 0.002821 -0.916635 -0.162491
+v -0.038814 -0.805876 0.671744
+v -0.029873 -0.788768 0.639687
+v -0.025475 -0.774364 0.619742
+v -0.030338 -0.758362 0.618152
+v -0.029340 -0.735877 0.630814
+v -0.787412 0.586012 0.249775
+v -0.361819 0.744274 0.048052
+v 0.965673 -0.506205 0.139210
+v 0.946395 -0.492668 0.131860
+v -0.135472 0.581095 -0.027657
+v -0.113146 0.649033 -0.158644
+v -0.031344 -0.434486 0.727023
+v -0.031719 -0.361440 0.756571
+v -0.030140 -0.323703 0.754012
+v -0.039234 -0.099480 0.577631
+v -0.023631 -0.033313 0.559272
+v -0.021733 0.011877 0.538174
+v -0.035575 0.033242 0.523256
+v -0.017588 0.075067 0.499992
+v -0.032509 0.114826 0.463609
+v 0.986293 -0.592693 0.111205
+v 0.278413 -0.350085 0.750169
+v -0.286171 0.826441 -0.061228
+v -0.269540 -0.489686 -0.203126
+v -0.041541 -0.821154 0.688124
+v 0.003762 -0.773515 0.628175
+v -0.011808 -0.738480 0.645007
+v -0.685412 0.914025 -0.675974
+v -0.681595 0.915660 -0.703068
+v -0.007891 -0.424402 0.738322
+v -0.009495 -0.285252 0.744064
+v -0.025404 -0.264980 0.732890
+v -0.007263 -0.097264 0.580153
+v -0.014993 -0.065383 0.571585
+v 0.788648 -0.400440 -0.000554
+v 0.348673 -0.845663 0.594375
+v 0.264314 -0.331450 0.756023
+v 0.640694 -0.822665 0.410282
+v 0.003850 0.660757 -0.164266
+v 0.013993 -0.807657 0.650571
+v -0.007198 -0.790086 0.633914
+v -0.008523 -0.955292 -0.327696
+v 0.004251 -0.543102 0.715293
+v -0.006669 -0.482279 0.726596
+v 0.758432 -0.363523 0.397588
+v -0.003689 -0.376352 0.759422
+v -0.009968 -0.345439 0.761391
+v -0.008039 -0.315166 0.755170
+v 0.009722 -0.221490 0.728762
+v -0.014586 -0.132316 0.583090
+v 0.005765 -0.093678 0.579800
+v -0.009204 -0.980552 -0.252859
+v -0.003284 -0.033452 0.557770
+v -0.005860 0.006901 0.544652
+v 0.000206 0.059866 0.512902
+v 0.012379 0.087268 0.495213
+v 0.646483 -0.794385 0.421251
+v 0.008187 -0.841916 0.678361
+v 0.017232 -0.791001 0.631693
+v 0.016540 -0.771010 0.636210
+v 0.006496 -0.732113 0.660894
+v 0.023197 -0.708591 0.673058
+v -0.686350 0.445154 -0.218407
+v 0.005390 -0.707251 0.670855
+v 0.017116 -0.662458 0.683193
+v 0.003625 -0.658097 0.681697
+v 0.017039 -0.604346 0.704847
+v 0.016376 -0.574752 0.708858
+v 0.002103 -0.588053 0.698913
+v 0.018743 -0.538142 0.721474
+v 0.013268 -0.418754 0.744542
+v 0.018405 -0.375051 0.753194
+v 0.005409 -0.293627 0.748272
+v -0.126384 0.589116 -0.081513
+v 0.010825 -0.180788 0.688568
+v -0.759264 0.752331 -0.342010
+v -0.204929 -0.982256 0.194087
+v 0.007783 -0.072450 0.567785
+v -0.003383 0.099736 0.482820
+v 0.006905 0.121358 0.474121
+v 0.839529 -0.844243 0.063958
+v 0.772183 -0.359907 -0.032107
+v 0.296810 0.066242 0.530381
+v 0.455829 -0.966080 -0.060475
+v 0.984166 -0.680425 0.150645
+v 0.011330 -0.822648 0.665439
+v 0.030103 -0.808213 0.642059
+v 0.029225 -0.787044 0.635363
+v 0.031929 -0.745136 0.659783
+v -0.140350 0.613816 -0.127460
+v -0.607279 0.416332 -0.086319
+v 0.030482 -0.568057 0.709712
+v 0.030103 -0.531320 0.721597
+v 0.011955 -0.500108 0.727400
+v 0.033325 -0.478658 0.731752
+v 0.010167 -0.460122 0.734289
+v 0.030131 -0.414659 0.746944
+v 0.030286 -0.357616 0.752419
+v 0.016867 -0.317319 0.749927
+v 0.866575 -0.841847 0.140806
+v 0.009356 -0.133893 0.587828
+v 0.032387 -0.130680 0.592276
+v 0.028838 -0.032068 0.569612
+v 0.023841 -0.002242 0.556799
+v 0.035758 0.022364 0.546879
+v 0.022319 0.064984 0.515372
+v -0.606220 0.623559 -0.653593
+v -0.691834 0.501664 -0.481701
+v -0.666545 0.507532 -0.488919
+v 0.532186 -0.020645 0.513529
+v 0.030064 0.668379 -0.112628
+v 0.026583 0.691591 -0.121221
+v 0.041508 -0.496757 0.722987
+v 0.053825 -0.328705 0.756474
+v 0.041837 -0.253677 0.748676
+v 0.015437 -0.242088 0.739501
+v 0.040393 -0.207599 0.721087
+v 0.791435 -0.191134 0.092290
+v 0.053118 0.102416 0.505614
+v 0.051665 0.152984 0.459566
+v 0.861581 -0.606580 0.400742
+v -0.646403 0.491371 -0.397207
+v 0.313562 0.025713 0.539267
+v 0.857500 -0.563466 0.376646
+v 0.048641 -0.808042 0.636571
+v 0.050521 -0.795054 0.639681
+v 0.052858 -0.769704 0.663676
+v 0.043826 -0.711089 0.673862
+v -0.145030 -0.216280 -0.312666
+v 0.043791 -0.515405 0.717941
+v 0.041887 -0.446559 0.748181
+v 0.046259 -0.292876 0.753030
+v 0.048063 0.063333 0.524507
+v 0.030517 0.113380 0.491539
+v 0.774410 -0.287596 -0.038259
+v 0.800666 -0.791661 0.406492
+v 0.052828 0.176020 0.431374
+v 0.117693 0.194000 0.425154
+v -0.605391 0.512312 -0.352283
+v -0.589414 0.535368 -0.347984
+v 0.058821 -0.745235 0.676145
+v 0.079130 -0.691985 0.697857
+v 0.068786 -0.701398 0.689703
+v 0.069592 -0.632426 0.723410
+v 0.052527 -0.644868 0.711812
+v 0.040503 -0.573983 0.710021
+v -0.250384 -0.764842 -0.119202
+v 0.045584 -0.550702 0.710792
+v 0.068558 -0.530300 0.725110
+v 0.077370 -0.472173 0.744893
+v 0.062511 -0.373505 0.761483
+v 0.074733 -0.330148 0.759126
+v 0.073674 -0.237176 0.742942
+v 0.061559 -0.220125 0.738396
+v 0.060199 -0.204004 0.725968
+v 0.087253 -0.165596 0.693801
+v 0.040320 -0.070015 0.578111
+v 0.056153 -0.025507 0.570542
+v 0.057936 0.008509 0.559375
+v -0.236440 -0.722129 -0.111962
+v -0.628774 0.494064 -0.368095
+v 0.769037 -0.251206 -0.036309
+v -0.079325 0.659772 -0.166322
+v 0.895938 -0.765866 0.024661
+v 0.760795 -0.220720 -0.035459
+v 0.728503 -0.036689 0.118656
+v 0.045645 -0.842741 0.664391
+v 0.055217 -0.825211 0.648236
+v 0.088030 -0.789073 0.653933
+v -0.740624 0.609008 -0.046801
+v 0.058354 -0.600772 0.725094
+v 0.089427 -0.548741 0.729384
+v 0.069402 -0.422828 0.757867
+v 0.068276 -0.282043 0.745603
+v 0.092521 -0.181681 0.713067
+v 0.076442 -0.122112 0.596415
+v 0.058899 -0.080890 0.578860
+v 0.077886 -0.006910 0.567552
+v 0.082969 0.123437 0.495921
+v 0.083491 0.144523 0.478570
+v 0.527116 -0.883076 0.516331
+v 0.787371 -0.191722 0.212116
+v 0.991389 -0.644095 0.130171
+v 0.666104 -0.109704 -0.129839
+v 0.072603 -0.859338 0.660790
+v 0.082235 -0.809038 0.633884
+v -0.496593 -0.787083 0.485051
+v 0.075635 -0.497146 0.739752
+v 0.110292 -0.491778 0.758131
+v 0.085624 -0.457070 0.749084
+v 0.082903 -0.408019 0.763967
+v 0.084872 -0.367454 0.765283
+v 0.088961 -0.310886 0.756175
+v 0.095181 -0.264308 0.752070
+v 0.103941 -0.226003 0.741556
+v 0.967095 -0.630013 0.060784
+v 0.972152 -0.658577 0.078590
+v 0.093250 -0.109481 0.585369
+v 0.084245 -0.041443 0.576391
+v 0.094188 -0.008286 0.572597
+v 0.089466 0.073389 0.530713
+v 0.080734 0.102093 0.510575
+v -0.951478 0.401156 0.212693
+v 0.074417 -0.870507 0.662254
+v 0.083633 -0.768852 0.669803
+v 0.089034 -0.747316 0.681311
+v 0.093079 -0.622378 0.735967
+v 0.103692 -0.605391 0.739732
+v 0.116583 -0.530044 0.738099
+v 0.099072 -0.441808 0.755276
+v 0.098017 -0.394956 0.766044
+v -0.609046 -0.356355 -0.224820
+v 0.086868 -0.085231 0.580244
+v 0.120430 -0.039125 0.584676
+v 0.126437 -0.006974 0.575402
+v 0.093081 0.021197 0.559532
+v 0.115679 0.071683 0.536136
+v 0.742964 -0.138842 -0.023656
+v 0.778616 -0.491076 0.010961
+v 0.100867 -0.826168 0.633985
+v 0.114160 -0.809573 0.633308
+v 0.112973 -0.786638 0.664339
+v 0.109876 -0.695677 0.703104
+v 0.119597 -0.670337 0.720357
+v 0.107927 -0.418690 0.760825
+v 0.112482 -0.361215 0.763033
+v 0.107145 -0.318342 0.757595
+v 0.137293 -0.298228 0.752877
+v 0.112861 -0.261307 0.753468
+v 0.143410 -0.208892 0.735185
+v 0.103985 -0.200000 0.727369
+v 0.116076 -0.173201 0.705330
+v -0.469056 0.433727 0.010708
+v 0.112840 -0.108324 0.585095
+v -0.591724 0.509881 -0.272083
+v 0.133048 -0.064132 0.585258
+v 0.131330 0.025599 0.557098
+v 0.125777 0.103187 0.513674
+v 0.931484 -0.683665 0.024722
+v 0.137454 -0.827677 0.626009
+v 0.141143 -0.808258 0.642111
+v 0.145353 -0.788890 0.663577
+v 0.141102 -0.767890 0.681561
+v 0.121262 -0.740334 0.693560
+v 0.132695 -0.693786 0.710521
+v 0.132482 -0.636961 0.735897
+v 0.126119 -0.613573 0.742052
+v 0.147251 -0.581579 0.742605
+v 0.131618 -0.550619 0.738728
+v 0.135593 -0.493948 0.764604
+v 0.131758 -0.470906 0.768987
+v 0.115141 -0.431189 0.760414
+v 0.145325 -0.383936 0.759537
+v 0.132462 -0.385899 0.759870
+v 0.137820 -0.338228 0.750093
+v -0.866939 -0.410729 0.080093
+v -0.855734 -0.433394 0.077259
+v 0.159104 -0.098621 0.582322
+v 0.136247 -0.146508 0.673752
+v 0.362062 -0.974162 -0.033064
+v 0.123546 -0.869303 0.647401
+v 0.352632 -0.886125 0.599496
+v 0.694555 -0.060877 -0.032601
+v -0.184310 -0.207183 -0.290219
+v -0.339521 0.546512 -0.070042
+v 0.801044 -0.713555 0.436339
+v 0.507990 -0.838106 0.542696
+v 0.519665 -0.540236 0.605521
+v 0.654905 -0.201847 0.522573
+v 0.325357 -0.323060 0.739207
+v 0.297850 -0.365204 0.739307
+v 0.200778 -0.061901 0.585617
+v 0.457531 -0.644640 0.647159
+v 0.715319 -0.182423 0.431603
+v -0.096126 0.689873 -0.073320
+v 0.325035 -0.640015 0.712195
+v 0.592679 -0.145063 0.548413
+v 0.390006 -0.334501 0.697452
+v -0.167978 0.634492 0.035765
+v 0.921972 -0.533911 0.336816
+v -0.229555 0.689002 -0.015012
+v 0.449268 -0.534328 0.670648
+v -0.191565 0.689741 -0.035565
+v -0.265489 -0.451779 -0.214382
+v 0.625866 -0.478009 0.544840
+v -0.150438 0.634840 0.028671
+v 0.686104 -0.391979 0.501039
+v 0.506387 -0.167182 0.614835
+v 0.403257 -0.179027 0.644081
+v -0.618154 0.400748 -0.081372
+v 0.556767 -0.773285 0.513204
+v -0.259432 -0.430288 -0.224775
+v -0.586119 0.520899 0.484892
+v 0.373359 -0.345627 0.707693
+v -0.060728 -0.923837 0.710651
+v 0.398259 -0.558759 0.698892
+v 0.399681 -0.411663 0.717964
+v -0.015222 0.905894 -0.212578
+v 0.717700 -0.627399 0.428096
+v 0.496013 -0.752279 0.570284
+v 0.376692 -0.825112 0.589918
+v -0.258262 -0.158105 -0.268469
+v 0.409547 -0.390281 0.711050
+v 0.793941 -0.301937 0.020981
+v 0.778145 -0.881768 0.061899
+v 0.659774 -0.174262 0.503228
+v 0.503636 -0.896415 0.535369
+v 0.899212 -0.738191 0.359640
+v 0.371288 -0.789777 0.626695
+v 0.362717 -0.763679 0.655832
+v 0.389880 -0.805246 0.600598
+v 0.398905 -0.767490 0.622279
+v 0.361155 -0.600815 0.700770
+v -0.327693 -0.947049 0.582345
+v 0.936843 -0.560517 0.343738
+v 0.893246 -0.700990 0.387421
+v -0.254552 -0.972826 0.441713
+v -0.215835 -0.183944 -0.281517
+v 0.662882 -0.342053 0.529610
+v 0.986197 -0.614753 0.100992
+v -0.236102 0.731825 -0.171279
+v 0.396086 -0.742730 0.642239
+v 0.350872 -0.813740 0.624603
+v -0.020725 0.925288 -0.204327
+v -0.222601 -0.082244 -0.254933
+v 0.674115 -0.016958 -0.032433
+v -0.216257 -0.615701 -0.154349
+v -0.161898 -0.229137 -0.304825
+v -0.035210 0.619227 -0.082651
+v 0.487996 -0.910802 0.548983
+v -0.259262 -0.385292 -0.244528
+v -0.243454 -0.385451 -0.257534
+v 0.623642 -0.406040 0.571341
+v 0.989563 -0.548127 0.152992
+v -0.363978 0.482161 0.101927
+v 0.517672 -0.942511 -0.001567
+v -0.266229 -0.352647 -0.263480
+v 0.391819 -0.576765 0.697939
+v 0.460809 -0.712813 0.633961
+v 0.422168 -0.312531 0.679054
+v 0.405203 -0.674339 0.659852
+v -0.635127 -0.948683 -0.072607
+v -0.277180 -0.335803 -0.263180
+v 0.646175 -0.326484 0.550117
+v -0.731689 0.244221 0.692164
+v -0.702850 0.660121 -0.105638
+v 0.344537 -0.655841 0.696364
+v -0.034669 0.635894 -0.051604
+v 0.537461 -0.835591 -0.148049
+v 0.393826 -0.640269 0.667137
+v 0.594738 -0.366097 0.585250
+v 0.535969 -0.724414 0.555056
+v 0.401483 -0.309041 0.690607
+v 0.535955 -0.037184 0.518468
+v 0.803650 -0.372447 0.059444
+v 0.083409 -0.010993 -0.257637
+v 0.074151 -0.045932 -0.269752
+v -0.706211 0.292501 0.665242
+v -0.622901 0.869280 -0.759954
+v -0.296026 0.581543 -0.101050
+v 0.077401 0.850129 -0.285039
+v 0.609817 -0.228314 0.567748
+v 0.601462 -0.257664 0.577016
+v 0.366521 -0.387472 0.717232
+v 0.383920 -0.454597 0.719049
+v 0.386602 -0.433806 0.720718
+v 0.020908 0.747804 -0.175008
+v 0.646107 -0.763906 0.441044
+v 0.104559 0.825455 -0.336361
+v 0.416776 -0.592599 0.676846
+v 0.452156 -0.236533 -0.303795
+v -0.700174 0.242362 0.680060
+v -0.093398 0.879992 -0.125023
+v -0.037184 0.656175 -0.161579
+v -0.025811 0.644638 -0.144304
+v 0.631519 -0.797951 0.430368
+v 0.352154 -0.554074 0.715914
+v 0.371105 -0.584925 0.699481
+v -0.638114 0.449616 0.549312
+v -0.667736 0.075769 0.681379
+v -0.718293 0.324552 0.661030
+v -0.216167 -0.634815 -0.144561
+v -0.415380 0.462753 0.145607
+v -0.379866 0.154805 0.365093
+v 0.035241 0.722244 -0.155934
+v -0.244798 -0.310117 -0.283854
+v 0.070766 0.734992 -0.271044
+v -0.168654 0.647692 -0.160452
+v -0.361013 0.639311 0.108165
+v -0.524057 -0.772465 0.091109
+v -0.661160 0.159194 0.695325
+v -0.681325 0.166367 0.704100
+v -0.370222 -0.882416 0.584551
+v -0.392915 -0.868861 0.584628
+v -0.661652 0.182122 0.689822
+v 0.696462 -0.553756 -0.149598
+v 0.646804 -0.639193 0.524016
+v 0.614143 -0.381319 0.576874
+v 0.672665 -0.035597 -0.056555
+v 0.401233 -0.829397 0.582222
+v -0.606561 0.488450 -0.284212
+v -0.277938 -0.277483 -0.278029
+v 0.348308 -0.495433 0.727113
+v 0.361177 -0.457868 0.722611
+v -0.242204 -0.287038 -0.291824
+v -0.105773 -0.963514 0.687902
+v -0.140549 -0.922783 -0.050856
+v -0.656224 0.119864 0.693664
+v -0.671220 0.221722 0.676097
+v -0.681368 0.251843 0.665140
+v -0.685279 0.276290 0.655987
+v 0.455433 0.069752 0.488209
+v -0.237728 0.706845 -0.014812
+v -0.179856 0.654127 -0.002598
+v -0.643286 0.008581 0.510100
+v -0.650775 -0.005459 0.504640
+v 0.432029 -0.689721 0.645564
+v 0.351170 -0.603926 0.712571
+v 0.467289 -0.521300 0.660231
+v 0.361054 -0.318640 0.721422
+v 0.516904 -0.753807 0.551234
+v -0.638084 0.126750 0.681765
+v -0.636510 0.182427 0.668242
+v -0.665472 0.273561 0.639195
+v -0.670942 0.316554 0.629476
+v -0.685836 0.331608 0.639612
+v 0.681829 -0.406839 0.510049
+v -0.212647 0.727492 -0.040096
+v 0.808985 -0.405271 0.264905
+v 0.523758 0.064241 0.457802
+v -0.224141 0.728972 -0.027813
+v -0.209076 0.671402 -0.011915
+v 0.422526 -0.513750 0.690685
+v 0.427347 -0.473116 0.687356
+v -0.654623 0.051965 0.644471
+v -0.649998 0.072103 0.663002
+v -0.641940 0.102917 0.678835
+v -0.676547 0.383361 0.613039
+v -0.242463 -0.075319 -0.246344
+v 0.758721 -0.314147 0.393921
+v 0.023014 0.677921 -0.186400
+v -0.469282 -0.865920 0.608415
+v -0.449733 0.341295 0.361752
+v 0.716915 -0.208484 0.442759
+v 0.758296 -0.471973 0.393820
+v 0.763101 -0.518872 0.374335
+v 0.809002 -0.387657 0.232570
+v 0.499317 -0.049845 0.532230
+v -0.637184 0.052198 0.618399
+v -0.676774 0.029017 0.625918
+v -0.632781 0.154204 0.674828
+v -0.642678 0.216378 0.655307
+v -0.653105 0.252839 0.639188
+v -0.663066 0.340742 0.615558
+v -0.659156 0.426664 0.579967
+v 0.750667 -0.244843 0.389133
+v 0.688984 -0.085088 0.405117
+v 0.764649 -0.407131 0.379513
+v 0.422249 -0.909780 0.585549
+v 0.864600 -0.817600 0.314981
+v 0.836030 -0.830494 0.327285
+v -0.623410 0.098783 0.652625
+v -0.617136 0.126889 0.656108
+v -0.613553 0.146012 0.650127
+v -0.645014 0.278546 0.610978
+v -0.659636 0.385616 0.598824
+v -0.783239 0.709730 -0.322794
+v 0.722595 -0.362912 0.461888
+v 0.734021 -0.538921 0.424474
+v -0.182584 0.822610 -0.031635
+v 0.929589 -0.640234 0.365080
+v -0.220154 -0.764453 -0.117428
+v 0.668435 -0.646113 0.498390
+v 0.686518 -0.583093 0.497091
+v 0.671790 -0.513748 0.507060
+v 0.694332 -0.111386 0.415806
+v 0.931210 -0.614983 0.365751
+v -0.620428 0.184724 0.648049
+v -0.651713 0.318067 0.606357
+v -0.636401 0.350468 0.576038
+v -0.638796 0.401868 0.571362
+v -0.004377 0.637515 -0.093784
+v -0.040700 0.895135 -0.185071
+v 0.883333 -0.611717 0.395672
+v 0.731869 -0.203661 0.411132
+v -0.459982 -0.846833 0.593799
+v -0.432924 0.423666 0.207912
+v 0.588592 0.004537 0.464766
+v 0.685734 -0.453171 0.505898
+v 0.591154 -0.021474 0.481372
+v 0.734556 -0.406193 0.438300
+v 0.517742 0.031605 0.480512
+v -0.269583 -0.131740 -0.262956
+v -0.625438 0.071287 0.627863
+v -0.620641 0.218623 0.628291
+v -0.627847 0.306128 0.567851
+v -0.638206 0.508160 0.512441
+v 0.528210 -0.608138 0.601344
+v 0.508498 -0.654275 0.617654
+v 0.896340 -0.681027 0.391337
+v 0.461804 0.117320 0.459115
+v 0.054079 0.806545 -0.234807
+v 0.046166 0.909043 -0.278182
+v 0.024095 0.929193 -0.257300
+v -0.659968 0.483242 -0.376959
+v -0.227819 -0.103016 -0.262163
+v -0.647554 0.033488 0.596535
+v -0.605218 0.095132 0.612878
+v -0.600904 0.131033 0.627025
+v -0.593769 0.181527 0.603128
+v -0.613329 0.199408 0.628920
+v -0.625230 0.251693 0.602209
+v -0.620935 0.268578 0.580392
+v -0.116687 0.767895 -0.117420
+v -0.016995 0.691860 -0.104400
+v 0.907463 -0.807695 0.150969
+v -0.024031 -0.038142 -0.267173
+v -0.005803 0.672542 -0.081057
+v 0.046872 0.785432 -0.216482
+v 0.387510 -0.283705 0.706152
+v 0.023756 0.899403 -0.250366
+v 0.022734 0.970704 -0.279368
+v 0.039093 0.841932 -0.241460
+v 0.648620 -0.284790 0.554757
+v 0.667566 -0.235802 0.523196
+v 0.403181 -0.431922 0.714949
+v 0.428420 -0.246854 0.669999
+v -0.619296 0.050368 0.571093
+v -0.596283 0.067563 0.549809
+v -0.596408 0.089389 0.580572
+v -0.595011 0.123869 0.606552
+v -0.601879 0.217478 0.598234
+v -0.613640 0.289343 0.551328
+v -0.609932 0.397180 0.528037
+v -0.617412 0.427038 0.533910
+v 0.441207 -0.620732 0.652216
+v 0.676044 -0.291199 0.518701
+v 0.725034 -0.497328 0.446373
+v 0.648369 -0.306070 0.553339
+v 0.682869 -0.340341 0.502314
+v 0.020464 0.768755 -0.191201
+v 0.369554 -0.686700 0.689181
+v 0.358959 -0.637568 0.690056
+v 0.574543 -0.202935 0.583868
+v 0.556118 -0.150670 0.567731
+v -0.337463 0.481066 0.065595
+v 0.588239 -0.793718 0.487969
+v -0.618747 0.009310 0.502483
+v -0.622188 0.027777 0.522139
+v -0.580545 0.119966 0.570373
+v -0.583367 0.152951 0.588300
+v -0.580912 0.217026 0.565019
+v -0.611867 0.311272 0.535798
+v -0.629448 0.461234 0.536463
+v 0.076841 0.774344 -0.228432
+v 0.411880 -0.731114 0.636176
+v 0.849119 -0.792408 0.362887
+v -0.927032 0.338686 0.388384
+v -0.202253 -0.094159 -0.264643
+v -0.205398 0.706848 -0.038354
+v -0.241806 -0.130069 -0.267400
+v 0.529241 -0.586718 0.599281
+v 0.374524 -0.643214 0.678824
+v -0.027534 0.654434 -0.051810
+v 0.778439 -0.525296 0.020411
+v -0.151750 -0.408187 -0.433790
+v 0.541998 -0.089052 0.541191
+v 0.459543 -0.458869 0.685187
+v -0.980979 0.139936 0.534366
+v 0.600438 -0.743100 0.503693
+v 0.978737 -0.556119 0.281227
+v -0.611417 0.028491 0.511243
+v -0.601388 0.047394 0.526936
+v -0.583866 0.091507 0.553838
+v -0.565463 0.159659 0.562636
+v -0.573357 0.182834 0.570745
+v -0.587848 0.251592 0.546914
+v -0.599548 0.322383 0.512997
+v -0.617275 0.350774 0.542415
+v -0.615046 0.474751 0.518408
+v -0.145540 0.651699 0.003413
+v -0.169505 0.670398 -0.024101
+v -0.135883 0.634963 0.022432
+v 0.567816 -0.635980 0.581434
+v -0.149017 0.769851 -0.095079
+v -0.176549 0.764120 -0.071588
+v 0.611416 -0.020448 0.459299
+v 0.719174 -0.536839 0.456503
+v 0.636430 -0.366155 0.560487
+v 0.490387 -0.896146 0.552269
+v 0.520307 -0.856761 0.536576
+v 0.508692 -0.784442 0.536823
+v 0.487753 0.118996 0.446084
+v 0.964994 -0.717675 0.125035
+v 0.540125 -0.817770 -0.193707
+v 0.506766 -0.825721 -0.209532
+v -0.603209 0.009762 0.500478
+v -0.574040 0.081928 0.528960
+v -0.567064 0.122013 0.554058
+v -0.603303 0.303111 0.529771
+v -0.599335 0.407970 0.512736
+v -0.603826 0.442068 0.516069
+v 0.567442 -0.579231 0.581641
+v -0.148678 0.881175 -0.056674
+v 0.001825 0.644630 -0.135408
+v -0.130025 0.900899 -0.075449
+v -0.266251 -0.078665 -0.243176
+v -0.367731 0.154131 0.353325
+v -0.201178 0.745236 -0.049430
+v 0.553608 -0.697526 0.562987
+v 0.336657 -0.602837 0.723812
+v 0.725970 -0.591544 0.437289
+v 0.864336 -0.820591 0.054273
+v 0.549811 -0.509642 0.586314
+v -0.031042 0.864552 -0.193114
+v -0.019367 0.815725 -0.192001
+v -0.035299 0.833238 -0.185830
+v 0.529336 -0.678419 0.587215
+v 0.068613 0.693441 -0.173052
+v 0.064450 0.685858 -0.181374
+v 0.464705 0.098512 0.471325
+v -0.577799 0.010507 0.496298
+v -0.600091 0.029666 0.502246
+v -0.559500 0.178768 0.558231
+v -0.553118 0.210162 0.546495
+v -0.566154 0.229904 0.546969
+v -0.589659 0.303895 0.516543
+v -0.597061 0.340569 0.501658
+v -0.598192 0.363919 0.503380
+v -0.587435 0.465587 0.505204
+v -0.562153 0.500835 0.487254
+v 0.590698 -0.337310 0.579155
+v 0.371939 -0.360979 0.709385
+v 0.687570 -0.040403 0.377592
+v -0.524474 -0.901994 0.620028
+v -0.983976 0.195033 0.184393
+v 0.013725 0.649471 -0.103315
+v 0.515139 -0.148070 0.601312
+v 0.460672 -0.114740 0.610171
+v 0.512232 -0.214260 0.627139
+v 0.414359 -0.781357 0.602428
+v -0.023983 0.738630 -0.148890
+v 0.531133 -0.544497 0.595152
+v 0.061471 0.710726 -0.164760
+v 0.552688 -0.870993 0.474130
+v -0.397431 0.332024 0.189857
+v -0.572213 0.049359 0.493438
+v -0.554886 0.132138 0.548587
+v -0.573304 0.251100 0.535317
+v -0.576305 0.287484 0.519043
+v -0.583788 0.329260 0.491914
+v -0.587722 0.394627 0.496498
+v -0.584225 0.419156 0.501312
+v -0.262470 0.722852 0.030641
+v -0.222828 -0.980630 0.224098
+v -0.412044 0.692216 0.080888
+v -0.470893 -0.934527 0.622735
+v 0.607595 -0.564335 0.553541
+v 0.910993 -0.605292 0.380079
+v 0.716368 -0.647007 0.421176
+v 0.534419 -0.466154 0.625918
+v 0.465300 -0.683942 0.642930
+v -0.000094 0.655894 -0.078028
+v 0.841468 -0.823278 0.028422
+v 0.766396 -0.122766 0.083312
+v 0.461910 -0.966031 -0.028375
+v -0.016747 0.636342 -0.070173
+v 0.487638 0.038846 0.489774
+v 0.060482 0.752577 -0.198701
+v -0.560148 0.097699 0.531640
+v -0.539599 0.108899 0.529444
+v -0.533464 0.160987 0.543768
+v -0.510443 0.209175 0.524269
+v -0.558116 0.345692 0.466516
+v -0.587426 0.377946 0.488104
+v -0.566020 0.421113 0.490067
+v -0.569184 0.457493 0.498242
+v -0.467393 -0.911796 0.624242
+v -0.938133 0.324896 0.486129
+v -0.529174 -0.672894 0.085163
+v -0.303468 -0.015898 -0.228920
+v -0.265423 0.663727 -0.150540
+v -0.430620 0.397686 0.058364
+v 0.897284 -0.792502 0.303154
+v -0.114966 0.653591 -0.007158
+v -0.096873 0.636428 -0.000469
+v -0.605240 0.627147 -0.684142
+v 0.936596 -0.722767 0.325243
+v 0.654634 -0.384474 0.545406
+v 0.624420 -0.658377 0.530854
+v -0.093441 0.845920 -0.139106
+v 0.432124 -0.755260 0.611691
+v -0.081144 0.917077 -0.121035
+v 0.399621 0.125511 0.470315
+v 0.929948 -0.778389 0.106883
+v -0.077380 0.741433 -0.126754
+v -0.907818 0.004062 0.235867
+v -0.895486 -0.014112 0.222952
+v 0.419470 -0.252022 0.679380
+v -0.522937 0.180377 0.538936
+v -0.585294 0.358016 0.479111
+v -0.558526 0.409905 0.479827
+v -0.551967 0.465622 0.485923
+v -0.418561 0.436851 0.039803
+v -0.441595 -0.590147 0.461448
+v -0.437886 -0.933245 0.616951
+v -0.269185 -0.898559 -0.348252
+v 0.799283 -0.772924 0.421271
+v 0.661890 -0.097736 0.450858
+v 0.594652 -0.937787 0.022503
+v 0.582078 -0.924939 -0.001220
+v 0.411262 -0.805059 0.586189
+v -0.071210 0.788810 -0.151702
+v -0.020506 0.671999 -0.073163
+v -0.052440 0.690635 -0.091912
+v -0.068310 0.881468 -0.158256
+v 0.451015 -0.786517 0.572048
+v 0.490986 -0.533642 0.642134
+v 0.496205 -0.381858 0.666313
+v 0.489079 -0.409609 0.670295
+v -0.969342 0.196975 0.457552
+v -0.965066 0.419936 0.249508
+v -0.513466 0.081880 0.500005
+v -0.521393 0.115226 0.524118
+v -0.500354 0.180766 0.523570
+v -0.524763 0.233603 0.522906
+v -0.524383 0.252594 0.510938
+v -0.527087 0.301337 0.486089
+v -0.551542 0.308128 0.493241
+v -0.560586 0.379040 0.458368
+v -0.548456 0.416907 0.464458
+v -0.219374 -0.981125 0.178923
+v -0.424521 -0.910725 0.607480
+v -0.437395 -0.886573 0.609261
+v 0.409692 -0.474390 0.701287
+v 0.966071 -0.643838 0.313805
+v -0.166793 0.616404 0.034538
+v -0.037627 0.925739 -0.180065
+v 0.663578 -0.416925 0.529919
+v -0.633854 0.658404 -0.722165
+v -0.646712 0.674109 -0.713658
+v 0.544649 -0.426872 0.630868
+v 0.424682 -0.821340 0.578108
+v 0.488636 -0.453766 0.667100
+v 0.471219 -0.506262 0.661650
+v 0.493151 -0.330561 0.661631
+v 0.532354 -0.640890 0.596584
+v -0.723942 0.457550 -0.171074
+v -0.512337 0.066691 0.487037
+v -0.509847 0.130926 0.521003
+v -0.506264 0.161569 0.528285
+v -0.501715 0.249509 0.495670
+v -0.556220 0.359572 0.457312
+v -0.549919 0.394270 0.453229
+v -0.543707 0.473062 0.474198
+v -0.546423 0.496551 0.477018
+v -0.529873 0.544731 0.432783
+v -0.440499 -0.471887 0.557293
+v -0.718831 -0.959694 0.101082
+v -0.412297 -0.877001 0.593326
+v -0.196100 0.565626 0.012974
+v -0.197946 0.586254 0.031327
+v -0.939416 0.439632 0.194492
+v -0.955580 0.442753 0.225813
+v 0.474001 -0.743788 0.606399
+v 0.478422 -0.712916 0.625492
+v 0.509280 -0.369987 0.660973
+v -0.576767 0.700735 -0.734662
+v -0.501183 0.286600 0.475646
+v -0.538697 0.424477 0.445183
+v -0.529503 0.524285 0.448487
+v -0.113302 -0.046050 -0.265182
+v -0.051842 0.709357 -0.110998
+v 0.617661 -0.450121 -0.242061
+v -0.552261 0.525638 0.467452
+v 0.627196 -0.572460 0.540974
+v 0.500718 0.085669 0.459376
+v 0.542626 -0.165961 0.590739
+v 0.554651 -0.364730 0.622425
+v 0.447295 -0.872567 0.583007
+v 0.448097 -0.850675 0.581001
+v -0.488869 0.070528 0.471254
+v -0.498304 0.104330 0.502241
+v -0.475857 0.179836 0.497904
+v -0.466182 0.195192 0.482390
+v -0.526691 0.360105 0.441317
+v -0.414389 -0.950561 0.610277
+v -0.407877 -0.931396 0.606817
+v 0.473756 -0.394150 0.680491
+v 0.934394 -0.591369 0.358040
+v 0.577983 -0.432809 0.596439
+v -0.968635 0.283247 0.203457
+v 0.464024 -0.612625 0.640780
+v 0.482670 -0.627398 0.637547
+v 0.482177 -0.656542 0.639780
+v -0.509183 0.314724 0.460814
+v -0.534543 0.384967 0.443981
+v -0.521262 0.414698 0.429700
+v -0.513677 0.433439 0.429855
+v -0.533905 0.468798 0.445775
+v -0.525681 0.484468 0.435340
+v -0.510162 0.491828 0.413021
+v -0.369361 -0.925797 0.596483
+v 0.578621 -0.297810 0.591306
+v 0.562056 -0.268164 0.604686
+v 0.556559 -0.821695 0.503981
+v 0.908012 -0.567402 0.366035
+v 0.901688 -0.533170 0.346055
+v -0.121178 0.811702 -0.118263
+v 0.409624 -0.215008 0.669730
+v -0.118486 0.793525 -0.120627
+v -0.055390 0.617538 -0.049767
+v 0.401480 -0.490157 0.705168
+v -0.007646 0.956922 -0.216803
+v 0.408895 -0.709540 0.647651
+v -0.129625 0.709411 -0.078299
+v 0.453577 -0.310978 0.664494
+v 0.447493 -0.273619 0.651036
+v 0.478648 -0.591148 0.632155
+v 0.487070 -0.570600 0.631362
+v 0.490567 -0.488339 0.659617
+v 0.457146 -0.910559 0.569175
+v -0.472349 0.086487 0.464088
+v -0.469370 0.160129 0.493739
+v -0.514992 0.339806 0.445398
+v -0.174956 0.880614 -0.053060
+v -0.946334 0.319950 0.206640
+v 0.614959 -0.814622 0.435461
+v 0.952244 -0.760218 0.169912
+v 0.965769 -0.736411 0.170589
+v 0.670647 -0.563549 0.514934
+v -0.075933 0.833321 -0.155239
+v 0.471364 -0.353908 0.675049
+v 0.339766 0.065336 0.515392
+v 0.363316 0.033946 0.518739
+v -0.117108 0.835868 -0.116554
+v 0.496121 -0.802238 0.542283
+v 0.494162 -0.682642 0.624764
+v 0.484853 -0.305368 0.654846
+v 0.514742 -0.312965 0.642999
+v 0.513420 -0.341325 0.653800
+v 0.693303 -0.418680 -0.143348
+v 0.685187 -0.443677 -0.144497
+v -0.465827 0.144252 0.484319
+v -0.476323 0.287548 0.449213
+v -0.483881 0.317725 0.437133
+v -0.472463 0.338721 0.406367
+v -0.501607 0.359583 0.422402
+v -0.507610 0.396404 0.414939
+v -0.495540 0.438362 0.412930
+v -0.128730 -0.073251 -0.276794
+v -0.360976 -0.947950 0.594882
+v -0.385111 0.305781 0.217184
+v 0.628555 -0.771438 0.454686
+v -0.204857 0.757410 -0.040152
+v -0.215495 0.778973 -0.007685
+v 0.938039 -0.779450 0.169179
+v 0.507718 -0.277051 0.643806
+v -0.109114 0.754755 -0.117443
+v -0.106903 0.726356 -0.102644
+v 0.438868 -0.781953 0.584512
+v 0.056856 0.715176 -0.242176
+v -0.420463 0.330235 0.305652
+v -0.044914 0.619156 -0.066911
+v -0.031394 0.956132 -0.179608
+v -0.444292 0.087702 0.443754
+v -0.459315 0.066768 0.457089
+v -0.445227 0.103536 0.445094
+v -0.445027 0.173698 0.463574
+v -0.464464 0.253010 0.460337
+v -0.488554 0.401494 0.393362
+v -0.484789 0.441530 0.393962
+v -0.495759 0.467873 0.405383
+v -0.486472 0.483003 0.369086
+v 0.030358 -0.982183 -0.291716
+v -0.345175 -0.930678 0.590382
+v -0.325299 -0.907415 0.576632
+v -0.356198 -0.858571 0.575230
+v -0.938910 0.341097 0.193855
+v 0.614337 -0.838771 0.416808
+v 0.998526 -0.571640 0.184998
+v 0.009096 0.951359 -0.239518
+v -0.469884 -0.429027 -0.226353
+v 0.651715 -0.589144 0.529692
+v 0.566725 -0.017257 0.498015
+v 0.044828 0.709408 -0.148477
+v -0.947994 0.368078 0.231530
+v 0.435995 -0.196147 0.636485
+v 0.038579 -0.876374 0.675196
+v -0.140767 -0.761761 -0.288532
+v -0.452713 0.215629 0.463230
+v -0.443073 0.243780 0.443843
+v -0.443423 0.287364 0.417579
+v -0.480561 0.359578 0.397447
+v -0.488751 0.379964 0.404476
+v -0.478366 0.410580 0.375129
+v 0.558827 -0.406417 0.617577
+v -0.996100 0.211077 0.284520
+v -0.880868 -0.377901 0.279271
+v -0.051599 -0.840053 0.700915
+v -0.150081 0.801249 -0.091886
+v -0.497453 -0.524668 -0.163529
+v 0.091362 0.725721 -0.220156
+v 0.081613 0.729459 -0.199732
+v 0.080790 0.705682 -0.208248
+v 0.678654 -0.258683 0.515253
+v 0.367603 -0.535469 0.714463
+v 0.071178 0.728905 -0.186186
+v 0.005358 0.785037 -0.193494
+v 0.542051 -0.191167 0.604359
+v 0.560767 -0.314898 0.618656
+v 0.532608 -0.290489 0.634616
+v 0.477807 -0.065266 0.566066
+v 0.464492 -0.096230 0.596607
+v 0.520997 -0.085540 0.558064
+v 0.532678 -0.102781 0.561241
+v 0.507120 -0.070970 0.553750
+v -0.417429 0.107329 0.424595
+v -0.432619 0.136513 0.448304
+v -0.418505 0.146592 0.432744
+v -0.427835 0.178570 0.438822
+v -0.442870 0.266553 0.430600
+v -0.462757 0.354955 0.372153
+v -0.055573 0.636516 -0.031419
+v -0.417186 0.422349 0.069966
+v -0.401830 0.437591 0.068611
+v 0.367351 -0.712878 0.684077
+v 0.447949 -0.374051 0.693469
+v 0.686793 -0.138094 0.442983
+v 0.738224 -0.154863 -0.041892
+v 0.771804 -0.452927 0.370318
+v 0.633664 -0.074909 0.466586
+v -0.168554 0.808737 -0.059369
+v -0.153112 0.844667 -0.060331
+v 0.450629 -0.964085 -0.109991
+v 0.558242 -0.067107 0.516326
+v 0.555661 -0.112681 0.550293
+v 0.581014 -0.165938 0.562237
+v 0.597186 -0.191893 0.565187
+v -0.079600 0.802856 -0.149617
+v -0.042858 0.654160 -0.041208
+v 0.023429 0.874421 -0.241429
+v -0.001440 0.877850 -0.220667
+v 0.553751 -0.227633 0.606710
+v 0.536040 -0.254356 0.624920
+v 0.568331 -0.327731 0.611557
+v 0.581849 -0.361314 0.594318
+v 0.557927 -0.432484 0.609878
+v 0.553609 -0.463324 0.597506
+v -0.482279 0.525971 0.365525
+v 0.896603 -0.821095 0.189427
+v -0.424274 0.301515 0.369864
+v 0.827409 -0.867252 0.235125
+v 0.614022 -0.498217 0.547096
+v 0.663804 -0.481999 0.522040
+v 0.004612 0.832703 -0.213458
+v 0.441017 -0.485300 0.678402
+v -0.505795 -0.730126 0.109965
+v 0.560329 -0.531840 0.578370
+v 0.747466 -0.214634 0.386556
+v -0.900694 -0.326949 0.069020
+v 0.578000 -0.222256 0.587787
+v 0.632684 -0.288197 0.567365
+v 0.626248 -0.264741 0.569620
+v 0.626553 -0.338632 0.563919
+v 0.632576 -0.209228 0.545310
+v 0.428957 -0.725490 0.632379
+v 0.542225 -0.850061 0.511546
+v 0.534650 -0.764083 0.527168
+v 0.581700 -0.707506 0.535713
+v 0.533163 -0.747058 0.538083
+v -0.401373 0.102710 0.415994
+v -0.410716 0.125055 0.417225
+v -0.417821 0.172114 0.423235
+v -0.424513 0.217322 0.433800
+v -0.408613 0.236637 0.398985
+v -0.427979 0.274308 0.408775
+v 0.783252 -0.161795 0.155588
+v 0.775569 -0.136945 0.152968
+v -0.243846 -0.542373 -0.185247
+v 0.916115 -0.688187 0.370225
+v 0.884733 -0.761441 0.351711
+v 0.532943 -0.783771 0.521959
+v 0.717749 -0.026224 0.237642
+v 0.700747 0.002368 0.216041
+v 0.777362 -0.396021 0.358591
+v 0.772934 -0.306010 0.365725
+v 0.625895 -0.709130 0.504914
+v 0.598032 -0.296136 0.575896
+v -0.775297 -0.402373 0.455761
+v 0.608201 -0.120766 0.520389
+v 0.576165 -0.086214 0.518232
+v 0.585846 -0.078956 0.504037
+v 0.571643 -0.040741 0.502881
+v -0.070562 0.672469 -0.059924
+v -0.071803 0.653623 -0.025346
+v 0.464763 -0.570809 0.650126
+v 0.610231 -0.441693 0.575287
+v 0.594737 -0.472796 0.573360
+v 0.567773 -0.497114 0.577586
+v 0.590625 -0.498441 0.560193
+v 0.775258 -0.331241 0.368271
+v -0.401209 0.137807 0.390666
+v -0.410954 0.200341 0.416954
+v 0.962553 -0.741675 0.212828
+v -0.652569 0.781350 -0.456973
+v 0.374610 -0.487489 0.712866
+v 0.534240 -0.835554 0.522124
+v 0.642034 -0.682964 0.508173
+v 0.416587 -0.538861 0.687939
+v 0.369356 -0.618012 0.685435
+v -0.737769 -0.568382 0.109425
+v 0.587640 -0.034862 0.491217
+v 0.584579 -0.401215 0.597039
+v 0.539444 -0.332190 0.630639
+v -0.568014 0.740987 -0.746045
+v 0.595453 -0.633271 0.553053
+v 0.574740 -0.741440 -0.234141
+v 0.750313 -0.582967 0.385006
+v -0.408299 0.269183 0.374595
+v -0.062392 -0.881087 0.711363
+v 0.859718 -0.750129 0.384894
+v 0.973073 -0.549125 0.099642
+v -0.633972 -0.202394 -0.207633
+v 0.635245 -0.020127 0.427257
+v 0.652974 -0.708454 0.474837
+v 0.602448 -0.781325 0.481438
+v 0.565574 -0.745090 0.522734
+v 0.365871 -0.843385 0.590463
+v 0.362908 -0.858749 0.594956
+v 0.713816 -0.230852 0.457194
+v 0.714181 -0.311658 0.466212
+v -0.932143 0.373314 0.184402
+v 0.431016 -0.851075 0.585983
+v 0.466294 -0.872028 0.572237
+v -0.221070 -0.974003 0.364295
+v -0.243100 -0.976049 0.374169
+v -0.634609 0.407510 -0.095445
+v 0.434891 -0.302101 0.668409
+v -0.948647 0.071875 0.405828
+v -0.396287 0.185142 0.393937
+v 0.744735 -0.188395 -0.047862
+v 0.314347 -0.240547 -0.388735
+v -0.270352 0.627660 -0.134327
+v -0.687204 0.424515 -0.141905
+v 0.574243 -0.943307 0.021079
+v -0.682896 0.442327 0.581991
+v 0.584369 -0.517951 0.560315
+v 0.606839 -0.606523 0.550265
+v 0.595910 -0.123594 0.535060
+v -0.924741 -0.118099 0.153652
+v 0.711706 -0.473944 0.464097
+v 0.709386 -0.418516 0.475514
+v 0.396682 -0.352578 0.699137
+v 0.706199 -0.523683 0.472219
+v 0.591361 -0.548190 0.562564
+v 0.546631 0.101465 0.409726
+v 0.688196 -0.214543 0.489534
+v -0.386828 0.167281 0.372148
+v -0.390733 0.216476 0.371575
+v 0.775952 -0.151115 0.207648
+v 0.545357 -0.813758 0.512638
+v 0.374055 -0.279994 0.714030
+v -0.034587 -0.976201 -0.239470
+v -0.169533 0.708273 -0.058533
+v -0.154111 0.726126 -0.077266
+v -0.109850 0.672120 -0.045120
+v 0.224606 -0.109387 0.589675
+v 0.394426 -0.937492 0.589321
+v -0.475555 -0.466194 -0.202787
+v -0.515140 -0.450843 -0.216634
+v -0.464183 -0.447171 -0.215484
+v -0.073619 0.604973 -0.078362
+v 0.584007 -0.674865 0.549680
+v 0.625415 -0.094850 0.484826
+v 0.630282 -0.126883 0.500222
+v 0.606553 -0.068605 0.485292
+v -0.231199 -0.948557 0.632236
+v 0.546204 -0.947349 0.019263
+v -0.146387 0.690478 -0.053132
+v 0.760805 -0.818586 0.409466
+v 0.281493 0.171613 -0.112536
+v 0.697922 -0.682897 0.431374
+v -0.673740 -0.400384 0.535456
+v -0.369282 0.201365 0.329038
+v 0.988841 -0.530282 0.188839
+v -0.586222 0.870775 -0.749217
+v 0.943515 -0.704993 0.325746
+v -0.046018 -0.920648 -0.075633
+v 0.450636 -0.430047 0.696892
+v 0.193905 -0.262654 -0.434498
+v -0.676175 0.510811 -0.520060
+v 0.957484 -0.627194 0.331833
+v 0.958803 -0.556666 0.314257
+v -0.452819 -0.541979 -0.147933
+v 0.499166 -0.628185 0.628612
+v 0.529317 -0.698569 0.577059
+v 0.583121 -0.586041 0.573281
+v -0.705033 0.434467 -0.159179
+v -0.705774 0.423692 -0.112243
+v -0.397363 0.251194 0.367008
+v 0.337450 -0.362122 0.726556
+v -0.932392 0.440086 0.405242
+v -0.744720 0.725471 -0.265005
+v 0.667381 -0.740348 0.434146
+v 0.408657 -0.879118 0.592072
+v 0.566085 -0.661826 0.572876
+v -0.747450 -0.564760 0.135611
+v 0.830437 -0.704435 0.425136
+v 0.774651 -0.518753 0.354301
+v 0.798755 -0.847198 0.027411
+v 0.646603 -0.053941 0.437660
+v 0.001211 0.710723 -0.132279
+v 0.639487 -0.171320 0.520597
+v 0.465486 -0.852524 0.573244
+v -0.393827 -0.965308 0.581901
+v 0.427349 -0.654612 0.652042
+v 0.406977 -0.622534 0.668233
+v 0.339001 -0.384646 0.726188
+v 0.088514 0.245436 0.059964
+v -0.183667 0.773621 -0.060561
+v -0.103946 -0.925862 0.717507
+v -0.091975 -0.906350 0.715927
+v -0.083481 -0.877332 0.714143
+v 0.504369 -0.859563 -0.155345
+v 0.509070 -0.862390 -0.122624
+v -0.185865 0.728230 -0.058745
+v 0.804672 -0.416397 0.288293
+v -0.161003 0.747184 -0.081478
+v 0.796021 -0.410932 0.317177
+v -0.519499 -0.875993 0.256833
+v 0.463262 -0.395438 0.689153
+v -0.669940 0.397130 -0.088964
+v 0.724668 -0.274917 0.446826
+v -0.078744 0.634695 -0.011458
+v 0.763739 -0.276774 0.370762
+v 0.774828 -0.361086 0.368536
+v 0.060426 0.877149 -0.280522
+v -0.753008 -0.540363 0.061671
+v -0.372289 -0.971059 0.535048
+v -0.413023 0.327050 0.072127
+v 0.057695 0.947431 -0.319784
+v 0.072075 0.931111 -0.341729
+v 0.398692 -0.266637 0.692519
+v -0.458297 -0.825392 -0.080878
+v 0.658583 -0.023477 0.402880
+v -0.267990 0.518375 -0.021849
+v 0.963396 -0.675952 0.308626
+v 0.886923 -0.722887 0.381881
+v 0.955123 -0.742352 0.269945
+v -0.415965 0.493900 0.163137
+v 0.647306 0.011679 0.390115
+v 0.960176 -0.583730 0.325260
+v 0.507821 -0.454079 0.651360
+v 0.906685 -0.649737 0.387075
+v -0.450789 0.523133 0.211867
+v -0.470671 -0.783794 0.452103
+v 0.068981 -0.923624 0.230114
+v -0.048790 -0.036081 -0.265898
+v -0.058117 -0.063813 -0.270929
+v -0.785512 0.787642 -0.466837
+v 0.688146 -0.168676 0.455960
+v 0.702606 -0.191038 0.453127
+v 0.556974 -0.843424 0.494594
+v 0.003011 0.777967 -0.268615
+v 0.578284 -0.863618 0.440107
+v 0.534728 -0.913287 0.438727
+v 0.081205 0.803110 -0.256783
+v 0.810256 -0.361168 0.106470
+v -0.428653 0.510998 0.177171
+v 0.041446 0.666894 -0.134830
+v -0.086198 -0.167149 0.595347
+v -0.061857 -0.166270 0.597409
+v 0.727558 -0.141664 0.380552
+v -0.590358 0.718898 -0.511594
+v -0.127893 -0.762402 -0.308947
+v -0.046991 0.767058 -0.156051
+v 0.724383 -0.550626 0.449201
+v 0.558224 0.003081 0.487833
+v 0.702926 -0.265795 0.479460
+v 0.627429 -0.435717 0.564076
+v 0.644658 -0.497594 0.533569
+v 0.611447 -0.752066 0.491403
+v 0.645807 -0.453382 0.536680
+v -0.266877 0.648363 -0.145323
+v 0.977349 -0.666364 0.101938
+v -0.464038 -0.745959 -0.061642
+v -0.126284 0.616268 0.010835
+v -0.160096 0.594734 0.014843
+v -0.421115 0.534083 0.165910
+v -0.312760 -0.972290 0.436765
+v 0.680071 -0.099325 0.426953
+v 0.144673 -0.919603 0.311157
+v 0.098207 0.831101 -0.349175
+v -0.318444 0.803252 -0.052281
+v -0.041156 -0.878624 0.703647
+v -0.439493 -0.806615 0.264974
+v 0.696543 -0.352774 0.488421
+v 0.732762 -0.250729 0.422804
+v 0.593872 -0.812526 0.471253
+v 0.574333 -0.839171 0.476312
+v 0.639435 -0.248432 0.556089
+v 0.728287 -0.037435 0.176050
+v 0.427455 -0.333206 0.682909
+v -0.413402 0.562616 0.154352
+v -0.573481 0.842451 -0.759301
+v 0.785556 -0.477839 0.331049
+v 0.546541 -0.893128 0.454126
+v -0.129830 0.663476 -0.170815
+v -0.026936 -0.859193 0.697424
+v -0.808311 -0.509966 0.199397
+v -0.620503 0.335826 -0.083421
+v 0.813682 -0.468016 0.097830
+v 0.133545 -0.099906 0.581754
+v 0.428413 -0.208554 0.646446
+v 0.998938 -0.625469 0.185890
+v 0.669108 -0.153079 0.478742
+v 0.583006 0.050385 0.437141
+v 0.694338 -0.486556 0.483587
+v 0.024450 0.806462 -0.215695
+v -0.439933 0.493815 0.201965
+v 0.910086 -0.720782 0.360852
+v -0.489641 -0.503630 -0.181343
+v -0.381808 0.481924 0.121234
+v -0.388773 0.534039 0.143773
+v -0.393440 0.550765 0.146630
+v -0.229639 -0.971930 0.491042
+v -0.952013 0.056434 0.455216
+v -0.718646 -0.355325 -0.182191
+v 0.010020 -0.876536 0.686008
+v 0.798764 -0.827438 -0.004934
+v 0.356937 -0.925158 0.595005
+v 0.621819 0.050568 0.389241
+v 0.556573 0.017572 0.475090
+v -0.407657 0.453038 0.128375
+v 0.635047 -0.628964 0.533985
+v 0.671963 -0.673522 0.478252
+v 0.779025 -0.436049 0.352882
+v 0.715992 -0.057470 0.021872
+v 0.696630 -0.625644 0.469489
+v 0.621953 -0.691029 0.519714
+v 0.610123 0.025339 0.429569
+v 0.485995 -0.935613 -0.039975
+v 0.853861 -0.690999 0.411229
+v 0.513485 -0.896719 -0.064427
+v 0.354762 -0.732109 0.684059
+v 0.674043 -0.602878 0.506893
+v 0.305581 -0.272020 -0.404078
+v 0.837117 -0.727303 0.414917
+v -0.074174 0.071710 -0.173176
+v -0.192405 -0.955134 0.375380
+v -0.013736 -0.916619 -0.169065
+v 0.826763 -0.771112 0.401268
+v 0.622834 -0.530110 0.545448
+v 0.674003 -0.702846 0.450729
+v -0.066667 -0.920629 -0.199448
+v -0.063758 -0.931220 -0.213065
+v -0.043620 -0.134223 0.591206
+v -0.037515 -0.150496 0.592040
+v -0.578964 0.397186 -0.059690
+v 0.098644 -0.139415 -0.303892
+v 0.044528 0.688291 -0.133539
+v -0.192579 0.153100 -0.067085
+v -0.008253 -0.944977 0.691193
+v -0.654254 0.254977 -0.095548
+v 0.568936 -0.889826 0.421631
+v 0.411503 -0.687843 0.653216
+v 0.644743 -0.535107 0.529509
+v 0.577473 -0.746335 0.512066
+v -0.915513 -0.270275 0.311895
+v -0.620707 0.723601 -0.747923
+v -0.381231 0.508787 0.132407
+v -0.143692 -0.801119 -0.307054
+v -0.872096 0.408346 0.069901
+v -0.772521 0.558069 -0.048433
+v -0.748269 -0.075448 -0.113240
+v 0.008782 -0.930860 0.683639
+v -0.825182 -0.415531 0.378602
+v -0.241050 0.763452 -0.162906
+v -0.222717 0.788501 -0.170279
+v 0.704035 -0.072897 0.379542
+v -0.247381 0.195802 -0.039501
+v -0.425499 -0.763934 0.235791
+v 0.798791 -0.502868 0.302931
+v 0.012746 0.643767 -0.114270
+v -0.362398 0.557078 0.126239
+v -0.369143 0.576752 0.120933
+v -0.363149 0.594063 0.106464
+v -0.520514 0.547634 0.008646
+v -0.320640 -0.971837 0.488333
+v 0.030109 -0.945928 0.677959
+v 0.719407 -0.087266 0.360209
+v -0.384586 0.462111 0.105097
+v -0.345569 0.483210 0.083226
+v -0.353708 0.501275 0.105761
+v 0.440150 -0.402134 0.703171
+v -0.612891 0.648962 -0.718674
+v 0.761061 -0.446461 -0.050826
+v 0.707968 -0.046319 0.346045
+v -0.330161 0.501772 0.084259
+v -0.341206 0.531979 0.108005
+v -0.321125 0.561774 0.102442
+v -0.331250 0.578130 0.108362
+v -0.339389 0.596809 0.094701
+v -0.352092 0.613357 0.097978
+v 0.092668 -0.250276 -0.447970
+v 0.055598 -0.926557 0.669724
+v 0.063281 -0.895538 0.666398
+v 0.538750 -0.381210 0.642254
+v -0.851598 -0.412948 0.300361
+v 0.978711 -0.524638 0.140865
+v -0.498679 -0.881387 -0.097481
+v -0.110255 -0.171701 -0.297028
+v -0.309026 0.576905 0.100183
+v -0.320342 0.595611 0.098626
+v -0.333303 0.614403 0.080219
+v -0.435490 -0.277439 -0.257928
+v -0.618032 0.900167 -0.747873
+v -0.145884 -0.854206 -0.352411
+v 0.073687 -0.944759 0.664808
+v -0.687178 0.419178 -0.122693
+v 0.741678 -0.315492 0.429294
+v 0.528976 -0.425820 0.644466
+v -0.939735 0.378391 0.206911
+v 0.739329 -0.812202 0.424587
+v 0.078886 0.706895 -0.187631
+v -0.380959 -0.886685 -0.137547
+v -0.395976 -0.893699 -0.130688
+v 0.174584 -0.115712 0.585086
+v -0.300872 0.535172 0.076002
+v -0.332691 0.632076 0.080354
+v -0.125608 -0.784385 -0.307028
+v -0.753287 0.267506 -0.075839
+v 0.745142 -0.375915 0.423822
+v 0.531621 -0.890298 0.500806
+v 0.534241 -0.505278 0.606794
+v -0.810277 0.545763 0.059001
+v 0.513967 -0.504128 0.635257
+v -0.630904 -0.170245 -0.201043
+v -0.950396 0.514141 0.226684
+v -0.953189 0.497005 0.205285
+v -0.299157 -0.798592 -0.142622
+v -0.456199 -0.844984 -0.091438
+v -0.623489 -0.611059 -0.018002
+v -0.305885 0.508191 0.064245
+v -0.295626 0.597150 0.093288
+v -0.315453 0.617559 0.068661
+v -0.637743 0.226128 -0.094716
+v 0.102997 -0.893715 0.654162
+v 0.738611 -0.566217 0.406254
+v 0.505722 -0.580519 0.614275
+v 0.467963 -0.785706 0.558573
+v 0.456327 -0.803730 0.561051
+v 0.500053 -0.719816 0.599562
+v 0.740195 -0.470166 0.425007
+v 0.688126 -0.921772 0.049440
+v 0.683986 -0.905540 0.009366
+v 0.752295 -0.540396 0.386298
+v -0.281203 0.596754 0.088157
+v -0.286238 0.613735 0.079577
+v -0.308546 0.633520 0.055675
+v -0.308255 0.651056 0.056280
+v 0.738061 -0.506425 0.423588
+v -0.232619 -0.593042 -0.160157
+v -0.224120 -0.643422 -0.137941
+v 0.526426 -0.401431 0.649651
+v 0.794054 -0.206374 0.168577
+v 0.502489 -0.916913 0.517499
+v -0.281975 0.577700 0.082257
+v -0.286928 0.632862 0.049014
+v -0.300827 0.666490 0.052385
+v -0.297900 0.688147 0.059744
+v -0.770467 0.733897 -0.326641
+v 0.137321 -0.934225 0.645688
+v 0.145143 -0.922976 0.640559
+v -0.251030 0.595671 0.070525
+v -0.269386 0.614164 0.079178
+v -0.294835 0.651464 0.042070
+v -0.283963 0.677709 0.031803
+v -0.426607 0.315289 0.025882
+v -0.261999 0.523019 0.031742
+v -0.243291 0.557583 0.044337
+v -0.244979 0.615213 0.072435
+v -0.265840 0.634969 0.043212
+v -0.330581 0.164455 0.340853
+v 0.716293 -0.114542 -0.061233
+v 0.724087 -0.097590 -0.022209
+v -0.243839 0.537996 0.029532
+v -0.244542 0.633941 0.050687
+v -0.265542 0.652056 0.026845
+v -0.275846 0.670821 0.023072
+v -0.273299 0.747859 -0.144780
+v -0.881493 -0.398016 0.118065
+v -0.134596 -0.089248 -0.281177
+v -0.778971 0.803216 -0.485792
+v 0.019172 0.976487 -0.296187
+v -0.220416 0.595313 0.050872
+v -0.232746 0.615229 0.067069
+v -0.219231 0.633103 0.053346
+v -0.242734 0.651737 0.021808
+v -0.267722 0.691832 0.016922
+v -0.660437 0.616245 -0.678764
+v -0.660781 0.596690 -0.664487
+v -0.264248 -0.724368 -0.116595
+v 0.178878 -0.896769 0.630923
+v -0.247678 -0.221606 -0.285631
+v -0.321047 0.678536 -0.121260
+v -0.297462 0.659055 -0.134028
+v 0.975241 -0.508087 0.213255
+v -0.224786 0.556569 0.029242
+v -0.200957 0.615726 0.051839
+v -0.254185 0.669469 0.009060
+v -0.258549 0.694053 0.005058
+v 0.179167 -0.924036 0.631176
+v 0.208294 -0.918138 0.621627
+v 0.168884 -0.943667 0.638925
+v -0.374296 -0.542633 0.533979
+v -0.164986 0.566968 -0.048287
+v -0.468251 -0.903679 -0.120949
+v -0.919414 0.414176 0.480949
+v -0.072593 -0.922502 0.023842
+v 0.138563 -0.917252 0.388699
+v -0.995094 0.140606 0.232556
+v -0.867324 -0.362810 0.310497
+v -0.873964 -0.335221 0.332424
+v -0.351079 0.780006 -0.035048
+v -0.981417 0.263573 0.261716
+v -0.970334 0.285432 0.260658
+v -0.933412 -0.262039 0.235404
+v -0.911507 -0.301592 0.208108
+v -0.930360 -0.268138 0.207812
+v -0.935869 -0.238047 0.253281
+v -0.576281 0.640374 -0.330510
+v -0.999017 0.180104 0.260672
+v -0.131204 -0.956541 0.698507
+v -0.573509 0.618827 -0.386033
+v -0.894539 -0.033994 0.245301
+v 0.976656 -0.645209 0.294083
+v -0.977294 0.159948 0.468077
+v -0.968529 0.092883 0.429599
+v -0.975643 0.109292 0.448694
+v -0.860801 -0.051055 0.355549
+v -0.895554 -0.313618 0.317558
+v -0.548870 -0.827482 0.387414
+v -0.613816 0.510440 -0.380462
+v -0.786624 0.060580 0.655661
+v -0.992167 0.113450 0.249365
+v -0.968322 0.054988 0.253826
+v -0.947932 0.293936 0.124010
+v -0.936287 0.319589 0.115993
+v -0.259815 0.839987 -0.091647
+v -0.902710 0.002914 0.257503
+v -0.922735 0.023717 0.272488
+v 0.646917 -0.902940 -0.007504
+v -0.573806 -0.916772 0.586446
+v -0.449803 -0.686706 0.389197
+v -0.888118 -0.088225 0.335151
+v -0.927807 -0.204816 0.171937
+v 0.259574 -0.915434 -0.037498
+v -0.988723 0.207214 0.217351
+v -0.994858 0.156877 0.226503
+v -0.948985 0.305041 0.151488
+v 0.463865 0.038054 -0.171711
+v -0.579775 0.666059 -0.376906
+v 0.126728 0.193286 -0.095448
+v -0.027919 0.740511 -0.232944
+v -0.167767 -0.090397 -0.272344
+v -0.385350 -0.034864 -0.225229
+v -0.976295 0.087696 0.312534
+v -0.982313 0.139845 0.507159
+v -0.997711 0.155213 0.318747
+v -0.872768 -0.414070 0.224308
+v 0.411412 -0.011343 -0.209510
+v 0.570626 -0.671361 -0.244178
+v -0.797527 0.795848 -0.543542
+v -0.609146 0.708970 -0.346408
+v 0.523205 -0.652998 -0.303559
+v -0.987570 0.240482 0.300228
+v -0.215556 -0.965670 0.622279
+v -0.238063 -0.970593 0.439672
+v -0.328315 -0.811252 -0.136958
+v 0.094077 0.875161 -0.339184
+v -0.579322 0.588703 -0.392625
+v 0.054918 0.687366 -0.145929
+v -0.574556 0.645127 -0.401812
+v -0.573857 0.592174 -0.308834
+v -0.944795 0.320894 0.300981
+v 0.590628 -0.593162 -0.236798
+v 0.559344 -0.561969 -0.269067
+v 0.639580 -0.454414 -0.207532
+v -0.931415 -0.152171 0.255475
+v -0.929046 -0.180604 0.262303
+v -0.934311 0.372267 0.338258
+v -0.941743 0.394747 0.321449
+v 0.107485 -0.913295 -0.147256
+v 0.639683 -0.904476 0.354466
+v -0.587652 0.590982 -0.444922
+v -0.916102 0.022130 0.129521
+v -0.956235 0.058574 0.139657
+v -0.581591 0.598021 -0.423847
+v -0.593132 0.704371 -0.420659
+v -0.891115 -0.378387 0.149376
+v -0.273891 -0.816665 -0.251713
+v 0.590247 -0.457597 -0.265639
+v 0.577437 -0.501341 -0.274971
+v -0.249549 -0.972589 0.482123
+v -0.950422 0.107884 0.096091
+v -0.584019 0.559961 -0.167372
+v -0.586229 0.558073 -0.147099
+v 0.499487 -0.843740 -0.198042
+v -0.243707 -0.332436 -0.269944
+v -0.913621 -0.176847 0.330822
+v -0.969193 0.282565 0.240725
+v 0.567116 -0.797932 -0.194667
+v 0.105483 0.798013 -0.322676
+v 0.307764 -0.924178 -0.090838
+v -0.502522 -0.834673 0.326056
+v 0.651970 -0.911240 0.338846
+v 0.078609 0.228765 0.007524
+v -0.596207 0.585624 -0.141005
+v 0.199189 -0.949504 0.628626
+v 0.179586 -0.964407 0.616662
+v 0.294610 -0.231216 -0.395695
+v 0.097230 0.744032 -0.239081
+v -0.466332 -0.802432 0.331820
+v -0.584412 0.497795 -0.123161
+v -0.898564 0.512834 0.130419
+v -0.860777 0.512791 0.073375
+v -0.862359 0.496256 0.073087
+v -0.892935 0.492493 0.115190
+v -0.966607 0.119822 0.399533
+v 0.950968 -0.574505 0.045515
+v -0.005752 0.191622 -0.023643
+v -0.925793 -0.138153 0.277954
+v -0.280995 -0.632075 -0.135608
+v 0.879301 -0.795578 0.325180
+v -0.229171 0.627821 -0.141177
+v -0.924524 0.354510 0.163814
+v -0.877760 -0.015721 0.090777
+v -0.928949 0.376885 0.496106
+v -0.424698 -0.734080 0.233545
+v -0.144967 -0.923723 0.044174
+v -0.972646 0.171774 0.431050
+v -0.936494 0.367394 0.438628
+v -0.026391 -0.916130 0.463349
+v -0.911522 -0.086253 0.134606
+v 0.440664 -0.942995 -0.201542
+v -0.577938 0.643660 -0.442644
+v 0.104919 0.823810 -0.323818
+v 0.092076 0.841446 -0.304121
+v -0.577472 0.658986 -0.440522
+v -0.581069 0.675348 -0.437215
+v -0.574385 0.602827 -0.271336
+v -0.581602 0.543057 -0.188747
+v -0.580243 0.561618 -0.182675
+v 0.421249 -0.943450 -0.229506
+v 0.640750 -0.569348 -0.206216
+v 0.732519 -0.332200 -0.132676
+v 0.728061 -0.367685 -0.128354
+v 0.669115 -0.444091 -0.170818
+v -0.739044 0.509841 -0.380273
+v -0.959536 0.201421 0.561031
+v -0.169570 -0.823974 -0.329790
+v -0.569159 0.762572 -0.720013
+v 0.643444 -0.678578 -0.157607
+v 0.671256 -0.658738 -0.136362
+v 0.040508 0.666330 -0.156982
+v -0.669380 0.564303 -0.625043
+v -0.435096 0.704736 0.021045
+v -0.432761 0.702622 0.042705
+v -0.583376 0.660949 -0.327191
+v -0.771801 0.625942 -0.139878
+v -0.674280 0.885165 -0.726047
+v -0.708458 0.480779 -0.346878
+v -0.729186 0.494354 -0.335825
+v 0.259995 -0.967572 -0.275056
+v 0.670937 -0.881784 0.373818
+v 0.687486 -0.852795 0.398754
+v -0.456593 -0.610627 0.423163
+v -0.920844 -0.282433 0.091765
+v 0.719225 -0.409110 -0.115542
+v 0.656749 -0.461220 -0.183984
+v 0.909532 -0.547350 0.034998
+v -0.122018 -0.190829 -0.301761
+v -0.108353 -0.196562 -0.319962
+v 0.533100 -0.726493 -0.266021
+v 0.566136 -0.651323 -0.263345
+v 0.569763 -0.636006 -0.263675
+v -0.236329 -0.978049 0.331341
+v -0.258402 -0.977079 0.351564
+v 0.052450 0.941956 -0.341801
+v 0.046879 0.956975 -0.325577
+v 0.593928 -0.705841 -0.204883
+v 0.223063 -0.967589 -0.281502
+v -0.841054 -0.411810 0.326556
+v -0.856833 -0.388541 0.314288
+v 0.704902 -0.349637 -0.172400
+v -0.922686 -0.157554 0.113325
+v -0.909052 -0.224210 0.090739
+v 0.749906 -0.299622 -0.099981
+v -0.125258 -0.930287 0.221611
+v -0.150622 -0.929969 0.284984
+v -0.155577 -0.960737 0.245140
+v 0.060839 -0.967088 0.636966
+v 0.622903 -0.644616 -0.204860
+v -0.898282 0.004073 0.133680
+v 0.456549 -0.862552 -0.264449
+v 0.964913 -0.695258 0.296516
+v 0.600022 -0.759097 -0.167297
+v 0.011840 -0.917626 -0.043155
+v 0.649455 -0.529366 -0.198792
+v 0.570275 -0.530180 -0.272923
+v 0.545258 -0.693250 -0.262230
+v -0.632482 0.100330 -0.096465
+v -0.976497 0.138985 0.439309
+v 0.102473 0.783743 -0.285230
+v -0.794465 0.748059 -0.416070
+v -0.591266 0.615612 -0.497186
+v 0.605545 -0.687720 -0.190319
+v -0.965010 0.208212 0.539738
+v -0.910210 0.454999 0.132911
+v -0.930225 0.457421 0.155362
+v 0.751036 -0.258112 -0.094571
+v -0.783456 -0.517428 0.104885
+v -0.770294 -0.530603 0.102640
+v -0.459499 -0.767952 0.397938
+v 0.842931 -0.862194 0.171656
+v -0.880439 0.003152 0.092148
+v -0.581487 0.638708 -0.472538
+v -0.846917 0.266257 -0.026357
+v -0.584376 -0.982051 -0.099902
+v -0.876635 0.529031 0.390673
+v 0.444574 -0.966223 -0.153513
+v 0.553583 -0.816354 -0.178903
+v 0.484146 -0.889994 -0.167312
+v 0.506814 -0.845025 -0.176571
+v -0.913863 -0.170756 0.090268
+v -0.223447 -0.159825 -0.275076
+v -0.436392 0.512845 -0.025917
+v -0.876327 -0.364030 0.081855
+v -0.904802 -0.198791 0.060252
+v -0.592397 0.451538 -0.110212
+v -0.595505 0.434019 -0.088322
+v 0.698043 -0.128981 -0.099611
+v 0.716697 -0.293955 -0.152715
+v 0.616912 -0.706594 -0.170861
+v -0.960994 0.267046 0.138182
+v -0.958617 0.426024 0.224117
+v -0.971121 0.203871 0.514357
+v -0.401684 0.334503 0.150451
+v 0.040077 -0.921491 0.021477
+v -0.207716 0.706658 -0.178524
+v -0.474605 -0.789281 0.375848
+v -0.980525 0.162103 0.373017
+v -0.878466 0.529913 0.116336
+v -0.851472 0.528984 0.076572
+v 0.568887 -0.817043 -0.134863
+v 0.206817 -0.968707 -0.284928
+v 0.674317 -0.697651 -0.094647
+v 0.608823 -0.774315 -0.107988
+v 0.704121 -0.624628 -0.110910
+v -0.936220 0.057351 0.099009
+v 0.670128 -0.595796 -0.156644
+v -0.451915 -0.694213 0.259400
+v 0.603060 -0.886833 0.391347
+v -0.962850 0.094865 0.122885
+v 0.661984 -0.562493 -0.182095
+v -0.976607 0.093919 0.175735
+v -0.586353 0.484464 -0.129218
+v 0.713556 -0.552134 -0.128919
+v 0.625624 -0.680113 -0.173425
+v 0.933716 -0.616189 0.029576
+v -0.641888 0.483065 -0.354724
+v -0.918263 -0.216504 0.113620
+v 0.650282 -0.602591 -0.186712
+v 0.599779 -0.723838 -0.192403
+v -0.441273 -0.698063 0.215477
+v -0.428352 -0.718696 0.228905
+v 0.456151 -0.938485 -0.165553
+v -0.586998 0.700460 -0.469586
+v -0.892628 -0.269384 0.357793
+v -0.923202 -0.249344 0.305914
+v -0.870558 -0.048650 0.329680
+v -0.284390 -0.592103 -0.157295
+v -0.740770 -0.308298 -0.173532
+v -0.409248 0.284018 0.033767
+v -0.982930 0.236062 0.219949
+v 0.565230 -0.584076 -0.256985
+v -0.202732 -0.969195 0.357973
+v -0.942023 0.281949 0.497782
+v -0.549556 -0.838007 -0.037526
+v -0.797125 0.804184 -0.528651
+v 0.675887 -0.465201 -0.157474
+v -0.955609 0.127690 0.109992
+v -0.668801 -0.860510 0.061592
+v -0.513280 -0.675464 0.145813
+v -0.973591 0.121254 0.145939
+v -0.861560 -0.032315 0.343274
+v 0.607702 -0.739288 -0.168078
+v 0.094435 -0.148255 -0.328213
+v 0.629076 -0.627193 -0.208386
+v -0.888767 0.017113 0.082315
+v -0.906778 0.043966 0.079793
+v 0.701473 -0.442014 -0.131436
+v -0.240735 0.539411 -0.050723
+v -0.889874 0.002667 0.288544
+v 0.811501 -0.479560 0.080738
+v 0.166874 -0.968423 -0.288331
+v -0.276671 -0.970465 0.542788
+v 0.692363 -0.098369 -0.090170
+v -0.869137 0.478025 0.087255
+v 0.647509 0.058527 0.025888
+v 0.706973 -0.172366 -0.095708
+v 0.551360 -0.833747 -0.125223
+v 0.633127 -0.213858 -0.198240
+v 0.468936 -0.940356 0.537588
+v -0.513778 -0.797326 0.431146
+v -0.520048 -0.796986 0.452167
+v 0.952566 -0.726713 0.298203
+v 0.666399 -0.373941 -0.204293
+v 0.653295 -0.390973 -0.208911
+v 0.652787 -0.433902 -0.192081
+v 0.737219 -0.287576 -0.119277
+v -0.582479 -0.958389 -0.091869
+v -0.905018 -0.206079 0.087182
+v -0.163312 -0.069760 -0.269353
+v -0.983588 0.113188 0.334401
+v -0.975362 0.116320 0.546478
+v -0.247309 0.707076 -0.165803
+v -0.594126 -0.841752 0.501467
+v -0.604864 0.097639 -0.103272
+v -0.166723 -0.974712 0.229503
+v -0.183193 -0.973622 0.271819
+v -0.982291 0.220705 0.193727
+v 0.696553 -0.591263 -0.131483
+v 0.586424 -0.779289 -0.181240
+v 0.290883 0.230534 -0.031216
+v 0.300578 0.211906 -0.064052
+v -0.438661 -0.712775 0.266502
+v -0.450684 -0.691552 0.278396
+v 0.640961 -0.646568 -0.182686
+v -0.989838 0.144320 0.343122
+v -0.581978 0.680800 -0.483504
+v 0.125593 -0.969686 -0.293611
+v 0.129965 -0.980396 -0.274083
+v -0.954910 0.249200 0.473624
+v -0.589132 0.580729 -0.158815
+v 0.114146 -0.961802 -0.299382
+v 0.471785 -0.845790 -0.257200
+v 0.094154 0.797506 -0.334073
+v 0.659247 -0.507650 -0.187718
+v 0.652286 -0.409579 -0.201612
+v 0.703913 -0.368062 -0.166859
+v 0.730955 -0.314157 -0.136095
+v -0.014067 -0.983445 -0.299191
+v -0.051001 -0.922396 0.000123
+v 0.399681 -0.971024 -0.209553
+v -0.211121 -0.294818 -0.302249
+v -0.194955 -0.280084 -0.305283
+v -0.878780 0.332382 0.031067
+v -0.569500 0.823121 -0.758799
+v -0.566363 0.785303 -0.754941
+v -0.582001 0.839398 -0.708907
+v -0.578321 0.817627 -0.703688
+v 0.475976 -0.919566 -0.118230
+v 0.492255 -0.913092 -0.076761
+v 0.487834 -0.893766 -0.130593
+v 0.499982 -0.879634 -0.110897
+v -0.200602 -0.935905 0.441564
+v -0.572802 -0.977388 0.256546
+v -0.922839 -0.128143 0.130956
+v 0.686323 -0.632331 -0.131433
+v 0.460975 -0.910282 -0.206336
+v 0.495719 -0.862305 -0.188697
+v -0.935765 0.071901 0.086025
+v 0.712836 -0.510527 -0.133626
+v 0.311325 -0.968677 -0.257767
+v 0.313706 -0.976236 -0.242757
+v -0.779181 -0.035339 0.462439
+v -0.697003 0.523036 -0.542668
+v -0.580534 0.631316 -0.262661
+v -0.930798 0.400118 0.454515
+v 0.352408 -0.932409 -0.276494
+v 0.096653 0.767303 -0.252443
+v 0.707320 -0.533080 -0.141529
+v 0.383824 0.206707 -0.032579
+v 0.039133 -0.918105 -0.180669
+v -0.260293 -0.966221 0.567241
+v -0.284080 -0.964104 0.561918
+v -0.890928 -0.344989 0.102591
+v 0.683523 -0.411805 -0.163911
+v -0.280766 -0.559426 -0.169699
+v 0.555102 -0.838805 -0.095355
+v 0.734263 -0.580336 -0.073645
+v 0.655567 -0.685098 -0.132956
+v 0.635268 -0.730526 -0.113417
+v 0.487838 -0.865992 -0.216118
+v -0.202235 -0.683682 -0.129886
+v -0.202936 -0.709549 -0.125036
+v -0.956684 0.058654 0.506394
+v -0.585927 0.509116 -0.101046
+v -0.587563 0.640336 -0.515791
+v -0.582791 0.676843 -0.506259
+v 0.094575 0.806004 -0.278271
+v -0.590030 0.658435 -0.280753
+v -0.990822 0.120885 0.310739
+v -0.899249 0.349236 0.065369
+v -0.888878 0.381926 0.064513
+v -0.898897 -0.326410 0.254038
+v -0.894572 -0.364614 0.239029
+v -0.993434 0.208570 0.318602
+v 0.368661 -0.956377 -0.258751
+v 0.507458 -0.809794 -0.232155
+v -0.279103 -0.976010 0.368780
+v 0.726812 -0.259494 -0.125396
+v -0.192491 -0.740932 -0.142207
+v 0.710568 -0.630377 -0.094849
+v 0.721779 -0.599409 -0.089195
+v 0.695581 -0.649368 -0.106299
+v -0.894258 -0.347001 0.251127
+v -0.508107 -0.493013 0.533035
+v 0.617836 -0.756035 -0.120330
+v -0.596067 0.551591 -0.096131
+v -0.426164 -0.739180 0.219208
+v -0.618955 -0.043821 -0.167460
+v -0.574735 0.578946 -0.265893
+v -0.109235 -0.928024 0.183076
+v 0.122454 -0.920707 0.299704
+v -0.898544 -0.326684 0.132404
+v -0.577591 0.562764 -0.271764
+v -0.864219 0.002750 0.360543
+v -0.271324 -0.955224 0.582672
+v 0.488137 -0.935390 0.512065
+v 0.583044 -0.811617 -0.096396
+v 0.621990 -0.765633 -0.091749
+v -0.946070 0.277773 0.105574
+v -0.933689 0.378966 0.412745
+v -0.960905 0.253623 0.408434
+v -0.354338 -0.964359 -0.290452
+v 0.747570 -0.371605 -0.083155
+v -0.961854 0.399829 0.235902
+v -0.575165 0.467796 -0.036217
+v -0.584739 0.695514 -0.493078
+v 0.278685 -0.978294 -0.247252
+v 0.384013 -0.194051 -0.311654
+v 0.213684 -0.978971 -0.259086
+v -0.923509 0.484886 0.146058
+v 0.310405 -0.911594 0.411814
+v 0.520157 -0.913974 0.479666
+v -0.018138 0.631158 -0.110649
+v -0.581428 0.604466 -0.218638
+v -0.924022 0.328244 0.543617
+v -0.477993 -0.278311 -0.264683
+v -0.544493 0.597666 0.067052
+v -0.539111 0.606170 0.087823
+v -0.231882 0.538929 -0.040431
+v 0.755087 -0.247503 -0.080843
+v -0.215958 -0.744579 -0.111180
+v -0.886706 -0.016099 0.128243
+v -0.576324 0.624979 -0.283801
+v -0.348959 0.236047 0.031147
+v 0.474556 -0.937893 -0.062359
+v -0.621899 -0.926043 0.362944
+v -0.621552 -0.904335 0.390163
+v -0.607756 -0.911682 0.358320
+v -0.283782 -0.531683 -0.183035
+v 0.417890 -0.183570 -0.284617
+v -0.068627 -0.238634 -0.433401
+v 0.173375 -0.010562 -0.260860
+v -0.971296 0.083798 0.480732
+v 0.404806 -0.947067 -0.244707
+v 0.415244 -0.926095 -0.246912
+v 0.517955 -0.913790 -0.040471
+v -0.724461 0.527827 -0.459794
+v 0.715120 -0.586062 -0.106097
+v 0.681646 -0.714419 -0.068260
+v 0.761865 -0.279256 -0.072551
+v -0.970222 0.270977 0.336384
+v -0.939538 0.320966 0.337228
+v 0.746994 -0.419301 -0.073356
+v 0.530389 -0.921676 -0.019062
+v 0.078863 -0.126927 -0.291914
+v 0.183078 -0.966801 -0.285230
+v -0.010728 -0.001256 -0.240032
+v 0.696421 -0.290786 -0.178278
+v 0.701795 -0.318418 -0.177161
+v 0.675466 -0.319314 -0.202772
+v 0.723831 -0.920166 0.218669
+v 0.528254 -0.579526 -0.284733
+v -0.578162 0.560678 -0.228694
+v -0.598631 0.615592 -0.544819
+v -0.592618 0.625336 -0.530108
+v -0.583981 0.697372 -0.541213
+v 0.585127 -0.734006 -0.221722
+v 0.573618 -0.687078 -0.232232
+v 0.730136 -0.491740 -0.108079
+v 0.713373 -0.475535 -0.128260
+v 0.711585 -0.424929 -0.119123
+v 0.738579 -0.543637 -0.084256
+v 0.052733 -0.960274 -0.211153
+v -0.445522 -0.824357 0.251237
+v -0.479624 -0.602866 0.425589
+v 0.722970 -0.139707 -0.062805
+v 0.750899 -0.502404 -0.073231
+v 0.740565 -0.449932 -0.085154
+v 0.757415 -0.472448 -0.062116
+v -0.976966 0.172157 0.532566
+v 0.541548 -0.664737 -0.284345
+v 0.043982 -0.908891 0.514508
+v 0.517377 0.137441 -0.037293
+v -0.576760 0.579495 -0.228187
+v -0.952860 0.421753 0.317766
+v -0.644632 0.638211 -0.705651
+v -0.669564 -0.600321 0.041593
+v -0.590020 0.653968 -0.565658
+v 0.600403 -0.669200 -0.204788
+v 0.629921 -0.490244 -0.219236
+v 0.726014 -0.518584 -0.115516
+v 0.589671 -0.813557 -0.078830
+v -0.200339 -0.978357 0.277058
+v 0.727582 -0.621379 -0.053343
+v 0.503278 -0.895764 -0.082290
+v 0.624167 -0.776490 -0.075172
+v -0.956301 0.462365 0.235209
+v 0.018198 -0.916150 -0.105308
+v -0.602916 -0.824457 0.120165
+v -0.430324 -0.796679 0.240264
+v -0.585268 0.656041 -0.529308
+v -0.587315 0.721265 -0.547665
+v -0.465045 -0.825318 0.224699
+v 0.052870 -0.143655 -0.299554
+v 0.674235 -0.059026 -0.086519
+v 0.330774 -0.953185 -0.086133
+v 0.477456 -0.866661 -0.238756
+v 0.898158 -0.633208 -0.017758
+v 0.629632 -0.606826 -0.214063
+v -0.249155 -0.970386 0.539824
+v -0.510881 -0.645753 -0.017415
+v 0.637891 -0.482277 -0.210790
+v 0.632779 -0.436433 -0.224357
+v -0.960678 0.461258 0.307794
+v -0.585292 0.459740 -0.068736
+v 0.512831 -0.879023 -0.082708
+v 0.528781 -0.858023 -0.096300
+v -0.225813 -0.776142 -0.150000
+v -0.246637 -0.784420 -0.145374
+v -0.675290 0.498601 -0.460182
+v 0.011580 -0.131690 -0.286527
+v 0.143964 -0.162673 -0.356277
+v -0.465766 0.393884 0.356142
+v -0.080057 -0.923422 0.079064
+v 0.595273 -0.650864 -0.222792
+v 0.437773 -0.921055 -0.229215
+v -0.638715 0.871685 -0.751699
+v -0.650839 0.893438 -0.743338
+v -0.432811 -0.762903 0.211310
+v -0.940495 0.513975 0.305643
+v 0.448621 -0.890292 -0.246933
+v 0.423732 -0.897571 -0.259799
+v 0.259744 -0.978318 -0.250032
+v 0.680583 -0.930576 0.255055
+v 0.639394 -0.501814 -0.208659
+v 0.185321 -0.920637 0.273825
+v 0.141306 0.240493 0.003954
+v 0.747278 -0.536461 -0.069442
+v -0.589936 0.515763 -0.059063
+v 0.467218 -0.935624 -0.100655
+v -0.584029 0.476998 -0.059287
+v -0.017278 -0.917313 -0.111953
+v 0.298482 0.064175 -0.216944
+v -0.597155 -0.915265 0.349658
+v 0.596962 -0.633097 -0.229716
+v 0.340566 -0.973753 -0.238651
+v -0.530864 -0.635380 -0.016635
+v -0.556207 -0.636354 0.007219
+v 0.603308 -0.414735 -0.252398
+v 0.745236 -0.335144 -0.105652
+v -0.584264 0.735578 -0.602839
+v -0.590747 0.746325 -0.576671
+v 0.493109 -0.827586 -0.225906
+v -0.487688 0.208475 -0.056367
+v 0.584029 -0.763204 -0.205720
+v -0.932686 0.028598 0.153826
+v 0.624057 -0.557473 -0.220631
+v 0.614424 -0.527084 -0.225508
+v 0.759689 -0.498684 -0.054188
+v -0.555072 -0.853772 0.348561
+v -0.519997 -0.833506 0.349610
+v -0.335778 -0.803125 -0.124765
+v -0.226191 -0.479916 -0.240219
+v 0.695730 -0.693821 -0.060018
+v 0.742598 -0.234870 -0.093831
+v 0.732620 -0.413962 -0.091800
+v 0.666079 -0.642733 -0.151344
+v 0.637559 -0.401535 -0.223129
+v 0.380405 -0.969001 -0.231757
+v -0.678803 -0.000437 0.526644
+v 0.574796 -0.829053 -0.072051
+v -0.001940 -0.917624 -0.089323
+v -0.456714 -0.764406 0.339926
+v -0.320021 -0.978606 -0.339874
+v -0.286778 -0.958092 -0.357677
+v -0.928163 -0.199824 0.298448
+v -0.922654 -0.166898 0.304857
+v -0.218304 -0.978696 0.269927
+v -0.601413 0.619119 -0.566989
+v 0.623360 -0.583969 -0.221535
+v -0.958768 0.497196 0.248798
+v -0.453166 -0.706937 0.341718
+v -0.586057 0.680109 -0.571667
+v 0.759986 -0.396009 -0.054504
+v 0.626826 -0.710043 -0.152925
+v 0.764866 -0.330342 -0.060174
+v 0.792437 -0.465862 0.034329
+v 0.600153 -0.777604 -0.135288
+v -0.937672 0.411755 0.401214
+v -0.486529 -0.846925 0.239211
+v 0.715678 -0.113210 0.384350
+v 0.082490 0.897114 -0.359518
+v -0.621377 -0.896512 0.434906
+v -0.973915 0.162405 0.392705
+v -0.469209 -0.839202 0.241491
+v -0.086830 -0.028971 -0.257401
+v -0.340824 -0.970993 0.455475
+v -0.268817 -0.952673 -0.363104
+v 0.611173 0.072215 -0.022552
+v -0.962485 0.076391 0.441281
+v 0.773175 -0.254665 0.342738
+v -0.576217 0.717529 -0.753751
+v 0.913796 -0.640145 -0.007887
+v -0.617016 -0.880965 0.397852
+v 0.581969 -0.800279 -0.139536
+v 0.399740 -0.239888 -0.344500
+v 0.552810 0.010103 -0.135061
+v -0.650997 0.500244 -0.430781
+v -0.314013 -0.956722 0.570510
+v 0.068960 0.898400 -0.360439
+v 0.593949 0.097513 -0.005126
+v -0.258492 -0.969422 -0.372732
+v -0.974812 0.094959 0.520556
+v -0.258039 -0.408313 -0.231339
+v 0.757164 -0.166375 0.338769
+v -0.936190 0.319712 0.447492
+v -0.275967 -0.379988 -0.239487
+v -0.474814 0.434400 0.354350
+v -0.485715 0.467719 0.378995
+v 0.803405 -0.381940 0.289692
+v -0.185112 -0.873393 -0.363102
+v 0.285986 -0.951097 -0.283377
+v 0.519997 -0.973677 0.132939
+v -0.818875 -0.435138 0.344219
+v 0.914110 -0.805217 0.196841
+v 0.769100 -0.201566 0.339384
+v 0.739186 -0.123289 0.336736
+v -0.593136 0.652275 -0.606800
+v -0.583976 0.713552 -0.607695
+v -0.156187 0.622745 -0.139823
+v -0.477854 0.480188 0.342268
+v -0.479395 0.504516 0.357627
+v 0.194196 -0.194374 -0.400519
+v 0.741488 -0.625900 -0.027450
+v -0.585016 0.766547 -0.635411
+v 0.793021 -0.376920 0.323095
+v 0.788879 -0.326232 0.329711
+v 0.789198 -0.292494 0.318642
+v -0.278095 -0.981890 -0.360529
+v -0.271022 -0.982837 -0.352487
+v -0.463510 0.426298 0.321535
+v -0.474823 0.452623 0.334573
+v 0.729477 -0.632534 -0.040757
+v 0.729950 -0.667319 -0.041386
+v -0.931239 0.097637 0.607607
+v 0.065841 -0.289522 -0.468361
+v 0.472117 -0.822728 -0.255448
+v -0.038571 -0.959624 -0.224885
+v -0.456795 -0.667514 0.368079
+v 0.741604 -0.598391 -0.038797
+v 0.784986 -0.259825 0.313084
+v 0.774990 -0.196730 0.316555
+v 0.764266 -0.164852 0.316144
+v 0.728642 -0.083101 0.331609
+v -0.440522 0.472214 0.198475
+v 0.764472 -0.120635 0.207831
+v 0.743492 -0.073225 0.207742
+v 0.861890 -0.835816 0.277710
+v -0.047359 -0.920114 -0.039203
+v -0.586014 0.682009 -0.622156
+v -0.452881 0.366554 0.328274
+v -0.458745 0.384184 0.327559
+v -0.466426 0.494769 0.317496
+v -0.469516 0.523588 0.316541
+v -0.241601 -0.962472 -0.379476
+v -0.853274 -0.389107 0.357332
+v -0.256757 -0.317086 -0.267473
+v 0.771752 -0.170379 0.294011
+v 0.732497 -0.076494 0.298030
+v -0.445270 0.493784 0.221023
+v 0.748228 -0.565704 -0.037016
+v -0.598098 0.782155 -0.612064
+v -0.598924 0.815806 -0.652283
+v -0.459675 0.403849 0.308222
+v -0.470325 0.463594 0.320615
+v -0.946963 0.494363 0.330788
+v -0.422727 -0.959042 -0.142200
+v -0.044355 -0.923384 0.054722
+v 0.798154 -0.315755 0.283759
+v 0.791799 -0.254055 0.276668
+v 0.744012 -0.113551 0.308640
+v 0.716741 -0.047862 0.316671
+v -0.639635 0.471874 -0.310863
+v 0.152423 -0.908689 0.490732
+v -0.591288 0.659317 -0.649324
+v -0.766171 0.566641 0.016317
+v -0.834889 -0.014421 0.384366
+v -0.436372 0.347798 0.313680
+v 0.897458 -0.807740 0.273665
+v 0.967064 -0.708873 0.277412
+v 0.799076 -0.351197 0.294487
+v -0.175374 -0.985417 -0.353348
+v 0.771835 -0.153407 0.247870
+v -0.803508 -0.063124 0.430832
+v -0.789351 -0.044416 0.445067
+v 0.111954 0.245072 0.036314
+v 0.075605 0.873844 -0.362429
+v -0.583005 0.781088 -0.653006
+v -0.119978 -0.032002 -0.256837
+v -0.421760 0.344626 0.282195
+v -0.465704 0.441859 0.311466
+v -0.270045 -0.258220 -0.285537
+v 0.979890 -0.670817 0.269242
+v 0.983842 -0.655205 0.264573
+v -0.646068 -0.838775 0.090722
+v 0.781304 -0.215803 0.309249
+v 0.750977 -0.108631 0.257153
+v -0.141574 -0.788308 -0.292980
+v 0.024851 -0.916367 -0.163709
+v -0.144543 -0.985401 -0.323175
+v -0.455334 0.400119 0.293053
+v 0.914065 -0.798436 0.253305
+v 0.991498 -0.583975 0.256216
+v 0.864425 -0.527801 0.346655
+v -0.409531 0.346024 0.231417
+v -0.459469 0.436670 0.265084
+v -0.460719 0.462728 0.274967
+v -0.450815 0.482534 0.249174
+v -0.458570 0.501851 0.276947
+v -0.237362 0.649440 -0.152032
+v -0.082033 0.958869 -0.174337
+v -0.109542 0.921467 -0.188623
+v -0.959320 0.092546 0.363824
+v 0.890917 -0.820558 0.243977
+v 0.939587 -0.773023 0.245977
+v 0.984402 -0.674505 0.240553
+v 0.986661 -0.551461 0.252877
+v 0.989403 -0.533101 0.215355
+v 0.801780 -0.334830 0.257404
+v 0.795881 -0.258730 0.240135
+v 0.792888 -0.215068 0.208152
+v 0.782192 -0.189871 0.259363
+v 0.729389 -0.053305 0.254544
+v -0.298850 -0.950695 0.570671
+v -0.426552 0.363875 0.268059
+v -0.434212 0.387483 0.263257
+v -0.438898 0.424034 0.230903
+v -0.450042 0.445728 0.228052
+v 0.936194 -0.780863 0.208717
+v 0.951243 -0.761800 0.201799
+v 0.962295 -0.735913 0.247038
+v 0.982045 -0.688997 0.215497
+v 0.993128 -0.643444 0.230027
+v -0.547730 -0.902947 0.285756
+v -0.279872 -0.216007 -0.280357
+v -0.488821 -0.630126 0.366746
+v -0.750259 0.579425 0.019567
+v -0.759696 0.570050 0.049595
+v -0.765615 0.576944 0.109930
+v -0.791074 0.574900 0.138798
+v -0.830026 0.574250 0.208395
+v -0.616851 0.581792 0.129805
+v -0.657049 0.593479 0.257396
+v -0.631662 0.587310 0.170498
+v -0.830406 0.575309 0.247710
+v -0.576886 0.580220 0.353905
+v -0.601546 0.560343 0.434115
+v -0.853077 0.564707 0.299080
+v -0.620176 0.868755 -0.674419
+v -0.695913 0.851985 -0.571116
+v -0.666670 0.839170 -0.579626
+v -0.615742 0.569200 -0.067709
+v -0.654324 0.849692 -0.606710
+v -0.601814 0.874395 -0.708956
+v -0.662997 0.530193 0.494946
+v -0.930421 0.239375 0.077218
+v 0.682611 -0.943539 0.188346
+v -0.607479 0.889413 -0.720789
+v -0.593611 0.874584 -0.728698
+v -0.708767 0.812526 -0.476125
+v -0.681445 0.806566 -0.485153
+v -0.190764 0.201037 0.240650
+v -0.566805 -0.824831 0.529101
+v -0.658469 0.514849 0.513460
+v -0.726314 0.886728 -0.605724
+v -0.736744 0.869161 -0.576700
+v -0.440277 -0.751946 0.442224
+v -0.747956 0.831322 -0.507247
+v -0.700672 0.474419 0.560894
+v -0.481730 0.563913 0.213992
+v -0.608661 0.545551 -0.007436
+v -0.760054 0.859230 -0.563855
+v -0.607155 0.550502 -0.047797
+v -0.625615 0.573573 0.072228
+v -0.593639 0.533443 -0.076413
+v -0.600370 0.534827 -0.029656
+v -0.960323 0.272746 0.376026
+v -0.660226 0.866246 -0.623392
+v -0.486531 -0.745472 0.148970
+v 0.966611 -0.525711 0.278137
+v -0.956656 0.093068 0.387842
+v -0.745188 0.591038 0.209862
+v -0.731698 0.792488 -0.413938
+v -0.751384 0.799260 -0.448182
+v -0.709433 0.823101 -0.495170
+v 0.955694 -0.507536 0.269368
+v 0.937928 -0.528353 0.319312
+v -0.832736 -0.037073 0.387721
+v -0.500870 0.570900 0.269048
+v -0.362774 0.253832 0.096354
+v -0.435376 -0.721497 0.435366
+v 0.974916 -0.508875 0.171750
+v 0.401103 -0.104496 -0.264666
+v -0.947326 0.342954 0.288504
+v 0.467228 0.145349 0.431059
+v -0.696532 0.884101 -0.619334
+v -0.616075 0.668796 -0.222843
+v 0.958428 -0.491245 0.215220
+v 0.933130 -0.489864 0.270775
+v 0.908287 -0.505995 0.314492
+v -0.130804 -0.984803 -0.320862
+v -0.129063 -0.972684 -0.353374
+v -0.420629 -0.731655 0.462387
+v -0.910116 -0.145880 0.327069
+v -0.630132 0.682236 -0.217625
+v -0.655083 0.593762 -0.024224
+v -0.591613 0.684389 -0.350953
+v 0.956202 -0.491111 0.172420
+v 0.912771 -0.484546 0.277387
+v 0.893969 -0.494540 0.301816
+v -0.729482 -0.049561 0.496484
+v -0.746453 -0.063853 0.488113
+v 0.031201 0.969222 -0.302800
+v 0.036659 0.957433 -0.300976
+v -0.428358 -0.697821 0.444216
+v -0.659710 0.655447 -0.125158
+v 0.940242 -0.480758 0.202575
+v 0.858438 -0.502216 0.313744
+v 0.872760 -0.510453 0.327418
+v -0.652582 0.632800 -0.097281
+v -0.243055 -0.957378 0.608891
+v -0.814841 -0.033519 0.412337
+v -0.716435 0.434319 -0.147907
+v 0.933511 -0.479171 0.167416
+v 0.918505 -0.473082 0.236662
+v -0.672594 0.629816 -0.066667
+v -0.711185 0.634014 -0.063185
+v -0.696000 0.630674 -0.054642
+v -0.700763 0.602418 0.001511
+v 0.928832 -0.484800 0.128936
+v 0.917359 -0.472691 0.173498
+v 0.890424 -0.474268 0.256403
+v 0.856051 -0.483841 0.267932
+v -0.749835 0.588886 -0.011526
+v -0.728356 0.596471 0.008134
+v -0.243276 -0.456638 -0.223707
+v 0.871622 -0.481067 0.275254
+v 0.820911 -0.513439 0.311280
+v 0.798637 -0.534668 0.337993
+v -0.494966 0.571150 0.213394
+v 0.008810 -0.612592 0.699853
+v 0.893140 -0.472814 0.151234
+v 0.891699 -0.468549 0.221992
+v 0.857880 -0.472553 0.230702
+v 0.823337 -0.489391 0.258388
+v 0.821300 -0.501012 0.285154
+v 0.800815 -0.514522 0.316526
+v -0.769521 0.578915 0.347118
+v -0.131876 -0.295691 -0.434197
+v -0.789800 0.550223 0.035805
+v -0.797633 0.536861 0.020841
+v -0.864377 0.559732 0.182208
+v -0.436501 -0.733248 0.274112
+v 0.895180 -0.483706 0.114165
+v 0.885993 -0.468965 0.178396
+v 0.841241 -0.472654 0.205474
+v 0.836394 -0.479869 0.232041
+v 0.811431 -0.493938 0.280010
+v 0.785715 -0.507304 0.331133
+v -0.553738 0.568852 0.387520
+v -0.693240 0.587864 0.347333
+v -0.686706 0.591918 0.313306
+v -0.662059 0.593671 0.302752
+v -0.773221 0.039791 -0.037333
+v 0.864604 -0.478943 0.137522
+v 0.844515 -0.472284 0.183281
+v 0.828991 -0.472157 0.220266
+v 0.812230 -0.477927 0.263750
+v -0.388991 0.310904 0.170431
+v -0.662121 0.580130 0.040946
+v -0.902686 0.543380 0.303986
+v -0.573015 -0.846517 0.376782
+v -0.934056 0.021294 0.195630
+v 0.865927 -0.491426 0.099168
+v 0.825557 -0.467572 0.209095
+v 0.815419 -0.453907 0.220941
+v 0.810526 -0.450281 0.247884
+v -0.937268 -0.231177 0.216741
+v -0.369634 0.277531 0.142328
+v 0.077237 0.917699 -0.340462
+v 0.836468 -0.476229 0.157807
+v 0.823007 -0.467972 0.159823
+v 0.811518 -0.431669 0.221998
+v -0.483274 -0.584112 -0.097508
+v -0.278235 0.220548 0.005854
+v -0.179560 0.186311 0.276874
+v -0.708287 0.584388 0.071517
+v -0.723671 0.800599 -0.435287
+v 0.070427 0.899607 -0.307223
+v -0.643371 -0.840859 0.112266
+v -0.662002 -0.854923 0.113952
+v -0.955016 0.479457 0.329854
+v -0.523243 -0.284466 -0.255144
+v -0.812152 -0.491872 0.253492
+v -0.902882 0.548133 0.221744
+v 0.819123 -0.467591 0.130522
+v -0.733114 0.776267 -0.364756
+v -0.706670 0.793160 -0.417378
+v -0.896073 -0.014086 0.252281
+v -0.900155 -0.050830 0.240574
+v -0.858128 -0.014916 0.351137
+v 0.964032 -0.535513 0.086982
+v -0.659360 0.819657 -0.553834
+v -0.632145 0.811567 -0.581233
+v -0.687469 0.587341 0.044113
+v -0.686711 0.798409 -0.452838
+v -0.661298 0.608182 -0.042962
+v -0.633487 -0.428009 -0.199289
+v -0.365584 0.275540 0.180462
+v -0.782828 0.583856 0.289067
+v -0.802636 0.574578 0.336549
+v 0.001023 -0.958880 -0.217606
+v -0.644471 0.666385 -0.163959
+v -0.363553 0.242615 0.046624
+v -0.306372 0.238488 0.103933
+v -0.687715 0.653652 -0.097344
+v -0.721195 0.608204 -0.018589
+v -0.762787 0.648553 -0.145433
+v -0.745696 0.679924 -0.176208
+v -0.550785 0.585351 0.273901
+v -0.570200 0.588633 0.282229
+v -0.153081 0.195004 0.085549
+v -0.297040 0.233966 0.077184
+v -0.166128 0.201836 0.179375
+v -0.597981 0.874302 -0.760120
+v -0.598559 0.884450 -0.749369
+v 0.689645 -0.005025 0.328514
+v -0.770432 0.559908 0.413603
+v -0.767743 0.879640 -0.615908
+v -0.783955 0.861932 -0.597306
+v -0.775656 0.817594 -0.508139
+v -0.769882 0.769105 -0.397146
+v -0.568510 0.586705 0.305457
+v -0.141638 -0.791776 0.630851
+v -0.561613 -0.812642 0.470311
+v -0.617925 0.830828 -0.631581
+v -0.648952 0.795770 -0.513428
+v -0.653149 -0.068151 -0.164428
+v -0.559933 -0.902907 0.302060
+v 0.126046 -0.084631 -0.278169
+v -0.797608 0.560300 0.083187
+v -0.820310 0.561611 0.120897
+v -0.731588 0.558023 0.435529
+v -0.720447 0.567776 0.408482
+v -0.534298 -0.551710 -0.121719
+v -0.499420 -0.560037 -0.117731
+v -0.368446 0.273115 0.245705
+v -0.725245 0.592319 0.196685
+v -0.315624 0.208139 0.267483
+v -0.343242 0.184997 0.307027
+v -0.935623 -0.155180 0.229918
+v -0.585685 0.567911 0.407223
+v -0.334180 0.245989 0.124966
+v -0.834019 0.550532 0.386438
+v -0.594576 0.587799 0.319980
+v -0.866505 0.562553 0.221955
+v -0.345189 0.232374 0.244241
+v -0.346898 0.247565 0.201430
+v -0.291666 0.230523 0.191836
+v -0.221562 0.219741 0.136253
+v -0.218464 0.215109 0.088382
+v -0.314911 0.239636 0.161703
+v -0.003944 0.981987 -0.227845
+v -0.792994 0.826661 -0.556003
+v -0.795802 -0.110362 -0.091054
+v -0.678944 0.537914 0.481996
+v -0.802626 0.558030 0.395386
+v -0.384550 0.258992 0.328607
+v -0.318381 0.218455 0.243027
+v -0.210932 0.199516 0.019432
+v -0.275075 0.233836 0.134194
+v -0.330654 0.239866 0.186806
+v -0.692822 0.434513 -0.171899
+v -0.601844 0.589440 0.191610
+v -0.146703 0.199162 0.191856
+v -0.339647 0.219050 0.256246
+v -0.282985 0.208282 0.273595
+v -0.240704 0.224577 0.166096
+v -0.335646 0.183052 0.309623
+v -0.386567 0.294276 0.280217
+v -0.398137 0.318922 0.256443
+v -0.577178 0.583818 0.122884
+v -0.657103 0.691918 -0.196122
+v -0.486341 -0.853272 0.288775
+v -0.672640 0.682221 -0.159320
+v -0.572930 0.555652 0.438854
+v -0.744238 0.583293 0.132678
+v -0.760467 0.584506 0.161701
+v -0.375756 0.267361 0.298294
+v -0.353032 0.210635 0.276891
+v -0.342687 0.202644 0.275946
+v -0.302137 0.223006 0.225742
+v -0.190889 0.181228 -0.004265
+v -0.180477 0.186285 0.028432
+v -0.554623 -0.812048 0.448471
+v -0.257335 0.200627 0.291352
+v -0.359387 0.249961 0.268542
+v 0.080251 0.900660 -0.328878
+v -0.537322 -0.881142 0.298692
+v -0.804468 -0.381641 0.445981
+v -0.716188 0.654611 -0.100695
+v -0.396134 -0.606826 0.494195
+v -0.840376 0.546525 0.097161
+v -0.763480 0.886261 -0.633877
+v -0.355056 0.196081 0.303648
+v -0.269080 0.220203 0.232047
+v -0.364641 0.226543 0.292850
+v -0.969029 0.286437 0.288830
+v -0.848421 0.552811 0.126251
+v -0.950333 0.514586 0.266409
+v -0.934536 0.530323 0.266829
+v -0.615276 0.427528 -0.127004
+v -0.911830 0.543022 0.276572
+v -0.956480 0.497910 0.286189
+v -0.686625 0.583359 0.084121
+v -0.142002 0.917459 -0.127152
+v -0.112155 0.937014 -0.136954
+v -0.621497 0.546645 0.466735
+v -0.350699 0.256345 0.137566
+v -0.931050 -0.192717 0.236030
+v -0.255985 0.213554 0.257542
+v -0.188010 0.199156 0.061736
+v -0.202693 0.213219 0.167913
+v -0.921387 -0.103759 0.259915
+v -0.184672 0.203224 0.106434
+v -0.631690 0.585471 -0.056446
+v -0.657357 0.589323 0.171731
+v -0.782758 0.512653 0.501375
+v -0.265872 0.160446 0.370078
+v -0.725045 0.823069 -0.487884
+v -0.958891 0.395112 0.280077
+v -0.346793 0.251796 0.182854
+v -0.277851 0.231305 0.175917
+v -0.226108 0.209566 0.246263
+v -0.267961 0.189648 0.317496
+v -0.222192 0.214086 0.067738
+v -0.130065 0.194517 0.236854
+v -0.621017 0.566783 0.048862
+v -0.700858 0.573233 0.400772
+v 0.610875 0.043243 0.413452
+v -0.932721 -0.134380 0.226470
+v -0.290160 0.169557 0.353457
+v -0.244062 0.217518 0.042716
+v -0.362175 0.245859 0.280776
+v -0.748204 0.699398 -0.215844
+v -0.739430 0.809989 -0.460476
+v -0.740357 0.754799 -0.321929
+v -0.526498 0.593291 0.147904
+v -0.680557 0.576822 0.388498
+v -0.605651 0.681944 -0.279164
+v -0.239514 0.219778 0.213510
+v -0.537801 0.586463 0.169133
+v -0.633382 0.694833 -0.235936
+v -0.537016 0.585014 0.206041
+v -0.107787 0.201446 0.091954
+v -0.161979 0.191787 0.054342
+v -0.978365 0.246256 0.342671
+v -0.635787 0.895758 -0.688741
+v -0.248223 0.209006 -0.000560
+v -0.460017 -0.826734 0.290068
+v -0.950787 0.320358 0.268624
+v -0.021965 -0.149871 0.593721
+v -0.518185 0.602622 0.132473
+v -0.473500 0.649822 0.098877
+v -0.502732 0.633764 0.097180
+v -0.358281 0.261514 0.210740
+v -0.531418 0.571072 0.350710
+v -0.207057 0.197869 0.270142
+v -0.515055 0.573586 0.307548
+v -0.327035 0.226863 0.225862
+v -0.576035 0.589114 0.246860
+v -0.699591 0.694349 -0.172445
+v -0.728676 0.633696 -0.076105
+v -0.753751 0.644769 -0.124934
+v 0.139186 -0.129544 -0.288393
+v -0.218906 0.866792 -0.080840
+v -0.205299 0.873890 -0.111618
+v -0.950407 0.301234 0.354704
+v -0.257846 0.224382 0.063637
+v -0.261853 0.229751 0.093267
+v -0.565217 0.582458 0.080010
+v -0.866272 0.543227 0.122994
+v -0.654214 0.560545 0.435161
+v -0.704222 0.518509 0.509505
+v -0.920377 0.531498 0.307526
+v -0.886688 0.550430 0.183605
+v -0.929058 0.358169 0.345323
+v -0.291166 0.198144 0.297599
+v -0.745791 0.496296 0.536616
+v -0.242777 -0.969348 0.574929
+v 0.045524 0.796839 -0.309849
+v -0.598863 0.509729 -0.323982
+v -0.039864 -0.952380 0.700408
+v 0.056859 0.920183 -0.300922
+v 0.032775 0.956641 -0.324896
+v -0.287524 0.230132 0.044222
+v 0.339773 -0.966257 -0.073646
+v -0.044991 0.981432 -0.193502
+v -0.740153 0.540082 0.469756
+v 0.682245 -0.008919 0.356392
+v -0.693627 0.557663 0.441755
+v -0.634973 0.708937 -0.270132
+v -0.655948 0.722507 -0.267961
+v -0.022091 -0.074533 -0.273983
+v 0.007880 -0.061698 -0.268582
+v -0.516953 -0.797141 0.477858
+v 0.690542 0.015943 0.242500
+v -0.522419 -0.260028 -0.256860
+v -0.081538 0.202621 0.060177
+v -0.082470 0.193101 0.026083
+v -0.531147 0.606645 0.109391
+v -0.646343 0.589261 0.340595
+v -0.546258 0.592163 0.127513
+v -0.573051 0.586119 0.151330
+v -0.646922 -0.855770 0.134709
+v -0.898289 -0.103028 0.326114
+v 0.656422 0.044635 0.333262
+v 0.647527 0.033422 0.368703
+v -0.626562 0.592010 0.306498
+v -0.638316 0.592877 0.244154
+v -0.602657 0.591217 0.290046
+v -0.748515 0.627497 -0.089517
+v -0.789300 0.806170 -0.507856
+v -0.787710 0.826352 -0.537557
+v 0.708464 -0.004952 0.163225
+v 0.670189 0.036669 0.293198
+v -0.066123 0.969194 -0.165815
+v -0.608615 0.586953 0.338834
+v -0.307585 -0.338060 -0.252580
+v 0.683504 0.026249 0.109082
+v 0.653683 0.055060 0.316403
+v 0.057065 -0.141953 0.638976
+v -0.585694 0.589600 0.209356
+v -0.625014 0.575269 0.394173
+v -0.633585 -0.928963 0.503206
+v -0.573295 -0.840755 0.543954
+v -0.682637 0.816833 -0.511884
+v 0.653224 0.067439 0.240009
+v 0.641171 0.072384 0.310306
+v -0.611988 -0.862781 0.489485
+v -0.865431 0.273423 -0.007876
+v -0.699356 0.833810 -0.530006
+v -0.666137 0.575871 0.397480
+v -0.552745 0.591663 0.104539
+v -0.698727 0.907036 -0.653913
+v -0.671254 0.554154 0.451041
+v -0.476979 0.400887 0.003251
+v 0.697338 0.006099 0.090647
+v 0.589671 0.069144 0.409355
+v -0.281967 -0.664470 -0.125502
+v -0.145476 0.910343 -0.083350
+v -0.673322 0.584150 0.118013
+v -0.512119 0.631674 0.089928
+v 0.657839 0.063806 0.168506
+v 0.604467 0.089811 0.364257
+v -0.370311 -0.961584 -0.261434
+v 0.646701 0.073278 0.267518
+v 0.624989 0.084194 0.332299
+v 0.438593 0.135603 0.446636
+v -0.600580 -0.878617 0.363167
+v -0.716623 0.531581 0.486799
+v 0.671708 0.023687 0.034608
+v 0.640642 0.086204 0.149145
+v 0.611019 0.109952 0.285922
+v 0.573116 0.092570 0.397843
+v 0.651327 0.033911 -0.007690
+v 0.668635 0.042321 0.068722
+v 0.653284 0.068031 0.099166
+v 0.624312 0.103098 0.213103
+v 0.600410 0.116240 0.312603
+v 0.556558 0.122907 0.373246
+v 0.583729 0.104105 0.371953
+v -0.759485 0.887572 -0.648790
+v 0.647332 0.070100 0.059315
+v 0.610076 0.118622 0.158046
+v 0.591343 0.116386 0.337041
+v -0.436024 -0.718860 0.204779
+v -0.734195 0.663687 -0.132618
+v 0.827897 -0.819102 0.354598
+v 0.630579 0.095097 0.102867
+v 0.580475 0.133346 0.314568
+v -0.777708 0.622961 -0.166425
+v -0.550785 -0.839566 0.368677
+v -0.246919 -0.971438 0.326091
+v -0.292000 -0.298649 -0.261161
+v -0.121763 -0.589791 0.527256
+v -0.123625 -0.558914 0.536945
+v -0.105957 -0.584646 0.554024
+v -0.088126 -0.641419 0.565307
+v 0.626679 0.089333 0.047076
+v 0.552481 0.143356 0.345479
+v 0.575372 0.147039 0.238887
+v 0.520233 0.136270 0.402276
+v -0.219006 0.813890 -0.163251
+v 0.655719 -0.936653 0.268067
+v -0.527730 -0.832658 0.362481
+v 0.490302 0.154157 -0.033991
+v 0.629649 0.075641 0.018776
+v 0.591815 0.136077 0.190064
+v 0.552786 0.154787 0.308487
+v 0.510037 0.151336 0.391127
+v 0.491322 0.137711 0.426427
+v -0.487483 -0.802993 0.372916
+v 0.645984 -0.925889 0.027964
+v -0.610506 0.738995 -0.448580
+v -0.242614 -0.364708 -0.267688
+v 0.602475 0.122354 0.108736
+v 0.573852 0.150324 0.137415
+v 0.538378 0.178295 0.208466
+v 0.556393 0.159881 0.268072
+v 0.538575 0.170107 0.292911
+v -0.470866 -0.798944 0.349857
+v 0.280162 -0.977771 0.065896
+v 0.254110 -0.128192 0.617861
+v 0.222636 -0.146152 0.675010
+v 0.561100 -0.712590 -0.243065
+v 0.172632 -0.921822 0.242364
+v 0.157503 -0.922395 0.225628
+v -0.251051 -0.951005 0.605502
+v -0.890083 -0.362982 0.114362
+v 0.580027 0.126200 0.043501
+v 0.596181 0.120220 0.072708
+v 0.530438 0.182907 0.247932
+v 0.523629 0.171013 0.332897
+v 0.481992 0.161436 0.400719
+v -0.227324 0.112749 -0.127792
+v -0.629036 0.730573 -0.339870
+v -0.076574 -0.920083 -0.081226
+v 0.549861 0.131998 -0.002613
+v 0.569210 0.150588 0.105270
+v 0.515048 0.187196 0.295091
+v 0.501988 0.186371 0.327733
+v 0.190774 -0.153045 0.687991
+v -0.630317 0.723349 -0.317211
+v 0.219080 -0.116088 0.601761
+v 0.166384 -0.144192 0.673575
+v -0.598790 -0.859801 0.392116
+v 0.553842 0.154481 0.076068
+v 0.543089 0.171211 0.119508
+v 0.555914 0.165673 0.164502
+v 0.464787 0.179747 0.373516
+v -0.499202 -0.682743 0.162846
+v -0.319901 0.221824 -0.011616
+v 0.197407 -0.130915 0.649241
+v 0.199631 -0.140348 0.668597
+v -0.678970 0.703933 -0.199222
+v 0.526717 0.186889 0.154481
+v 0.507636 0.197216 0.247422
+v 0.486125 0.196473 0.319377
+v 0.446730 0.177386 0.387963
+v 0.434051 0.165240 0.408609
+v -0.540129 0.591768 0.046990
+v -0.527866 0.621127 0.065955
+v -0.291595 -0.077030 -0.241976
+v 0.314804 -0.976702 -0.192433
+v 0.199332 -0.116591 0.590748
+v -0.943137 0.203426 0.084307
+v 0.492445 0.201029 0.293052
+v 0.449109 0.190134 0.365587
+v 0.420292 0.177676 0.403175
+v -0.642059 0.908576 -0.726189
+v 0.169787 -0.116862 0.599222
+v -0.946908 0.156222 0.096055
+v 0.529452 0.165479 0.045967
+v 0.529129 0.176635 0.089353
+v 0.423347 0.204313 0.370019
+v 0.124641 -0.120664 0.612112
+v 0.141700 -0.132175 0.649067
+v 0.512758 0.165556 0.013694
+v 0.513636 0.190534 0.110840
+v 0.506098 0.200327 0.201211
+v 0.454280 0.202410 0.330301
+v 0.404807 0.190837 0.403812
+v 0.393523 0.174116 0.433520
+v 0.118175 -0.145913 0.675021
+v -0.704671 0.494925 -0.446120
+v 0.500505 0.202171 0.144180
+v 0.481959 0.212102 0.238701
+v 0.446200 0.218105 0.289663
+v 0.419852 0.219496 0.344746
+v 0.364269 0.158383 0.457263
+v -0.267487 -0.059362 -0.239899
+v 0.397240 0.213159 0.380173
+v 0.378897 0.195343 0.415162
+v 0.041497 -0.133437 0.603395
+v 0.034672 -0.617485 0.712076
+v 0.021273 -0.639724 0.695655
+v -0.788134 0.768627 -0.435036
+v -0.542831 -0.807221 0.124338
+v 0.464363 0.222885 0.175010
+v 0.458833 0.220266 0.263372
+v 0.396938 0.240831 0.301467
+v 0.398137 0.230297 0.335233
+v 0.074100 -0.148371 0.663901
+v 0.036812 -0.171436 0.685790
+v -0.777297 0.862561 -0.585831
+v -0.451839 -0.750022 0.405744
+v 0.406310 -0.264204 -0.354741
+v 0.479099 0.209458 0.098425
+v 0.445101 0.231377 0.206590
+v 0.427437 0.230696 0.280990
+v 0.372552 0.246712 0.310421
+v 0.377516 0.225745 0.369159
+v 0.365147 0.218590 0.386262
+v 0.334740 0.215937 0.400351
+v 0.337939 0.185627 0.439431
+v 0.032928 -0.159570 0.661143
+v -0.187689 0.860658 -0.157350
+v 0.485447 0.198808 0.057285
+v 0.451481 0.228659 0.154378
+v 0.419399 0.243185 0.180353
+v 0.405524 0.247101 0.205881
+v 0.435880 0.234439 0.235403
+v -0.202685 -0.650009 -0.143349
+v -0.521782 -0.807566 0.537407
+v -0.217137 -0.919082 0.658734
+v -0.276574 -0.883491 0.566579
+v -0.781784 0.849562 -0.623870
+v -0.071147 -0.714139 0.587457
+v -0.176925 -0.758232 0.531654
+v -0.087245 -0.276688 0.699651
+v -0.037396 -0.167090 0.610952
+v -0.067855 -0.181558 0.609302
+v -0.787544 0.855097 -0.613708
+v -0.789979 0.832928 -0.596985
+v -0.792729 0.839437 -0.590874
+v -0.116125 -0.268122 0.655139
+v -0.013541 -0.221147 0.714792
+v -0.262944 -0.857901 0.569290
+v -0.589586 -0.887994 0.562115
+v -0.598712 -0.922704 0.565780
+v -0.395718 -0.729117 0.492155
+v -0.141900 -0.888315 0.707541
+v -0.481697 -0.676644 0.275412
+v -0.502861 -0.651860 0.308839
+v -0.097664 -0.269661 0.682193
+v -0.083380 -0.221280 0.655510
+v 0.002513 -0.150587 0.610737
+v 0.070018 -0.114549 0.585675
+v -0.103288 -0.500033 0.604312
+v -0.359258 -0.603615 0.527816
+v -0.246654 -0.921285 0.615613
+v -0.256459 -0.896809 0.602821
+v -0.150451 -0.758794 0.553598
+v -0.725774 0.344975 -0.070816
+v -0.289495 -0.039486 -0.237516
+v -0.121934 -0.893467 0.714134
+v -0.151318 -0.726788 0.487812
+v -0.164362 -0.743833 0.499759
+v -0.150338 -0.344422 0.617795
+v -0.706742 0.230854 -0.095601
+v -0.135183 -0.324298 0.650506
+v -0.169805 -0.904540 0.693002
+v -0.175540 -0.879898 0.678567
+v -0.074130 -0.200637 0.639156
+v -0.758159 0.596051 -0.056105
+v -0.241181 -0.845585 0.593796
+v -0.606095 -0.909429 0.539880
+v -0.081027 -0.616290 0.577817
+v -0.083559 -0.328657 0.727166
+v -0.109783 -0.471048 0.612078
+v -0.463179 -0.650009 0.361780
+v -0.473774 -0.632082 0.372707
+v -0.007667 -0.703103 0.662770
+v 0.020001 -0.089557 0.574470
+v -0.238369 -0.799297 0.529265
+v -0.215093 -0.766861 0.511901
+v -0.428754 -0.765643 0.482302
+v -0.119946 -0.663271 0.517159
+v -0.217003 -0.814915 0.585931
+v -0.933944 0.330856 0.513511
+v -0.939450 0.292680 0.523768
+v -0.033306 -0.181970 0.654620
+v -0.098950 -0.459576 0.644867
+v -0.131396 -0.341467 0.658389
+v -0.221451 -0.849203 0.611927
+v -0.603741 -0.861591 0.507572
+v -0.613082 -0.889082 0.516118
+v -0.106612 -0.393482 0.695697
+v -0.115482 -0.375998 0.687347
+v -0.231978 -0.973953 0.216677
+v 0.017064 -0.197639 0.710982
+v -0.095657 -0.708038 0.552407
+v -0.039740 -0.920060 0.411841
+v -0.015705 -0.917574 0.435098
+v -0.047020 -0.166693 0.601995
+v -0.092614 -0.528170 0.609814
+v -0.546192 -0.874601 0.591893
+v -0.098974 -0.414539 0.692644
+v -0.239862 -0.809605 0.541293
+v -0.025255 -0.197855 0.688361
+v -0.472247 -0.411264 -0.232364
+v -0.473580 -0.613967 0.406532
+v -0.477823 -0.565997 -0.115542
+v -0.197787 0.839662 -0.164436
+v 0.037130 0.909991 -0.342715
+v -0.127569 -0.773692 0.607595
+v -0.798580 0.747757 -0.434102
+v -0.328583 0.720397 -0.113318
+v -0.012917 -0.651654 0.673199
+v -0.109822 -0.199967 0.593708
+v -0.445638 -0.767077 0.450711
+v -0.068298 -0.390385 0.731731
+v -0.122191 -0.492241 0.578459
+v -0.431594 -0.665290 0.439749
+v -0.077586 -0.241989 0.687343
+v -0.100858 -0.724431 0.542531
+v -0.816943 0.103951 0.650066
+v 0.228335 -0.937577 0.617844
+v -0.010729 -0.180998 0.675484
+v -0.149418 -0.256835 0.596776
+v 0.463517 -0.164938 -0.272512
+v -0.486619 -0.341560 -0.257247
+v -0.781179 0.749871 -0.380352
+v -0.160336 -0.347085 0.597127
+v -0.159178 -0.955003 0.692114
+v -0.227577 -0.978504 0.199083
+v -0.024536 -0.665500 0.658177
+v 0.536072 -0.324152 -0.291099
+v -0.084038 -0.183768 0.597877
+v -0.742881 0.510900 -0.357977
+v -0.151824 -0.877661 0.695467
+v -0.687542 -0.313943 0.556924
+v -0.528565 -0.645976 0.016562
+v -0.091607 -0.199229 0.612561
+v -0.357154 -0.640274 0.524478
+v -0.623799 -0.146967 -0.195003
+v -0.106792 -0.431685 0.659452
+v 0.742300 -0.851586 0.381542
+v -0.667094 -0.369557 0.553514
+v -0.649866 -0.345648 0.571812
+v -0.140541 -0.296852 0.628997
+v -0.769192 0.709608 -0.279010
+v -0.621091 0.812078 -0.757031
+v -0.661036 -0.291294 0.576664
+v -0.135517 -0.922183 -0.006420
+v -0.741481 0.387356 -0.064941
+v -0.048620 -0.253444 0.715741
+v -0.659219 -0.317595 0.575485
+v -0.379441 -0.675252 0.505762
+v -0.586131 -0.951610 0.579695
+v -0.765191 0.697332 -0.241255
+v -0.060537 -0.618029 0.610075
+v -0.060690 -0.570300 0.636432
+v -0.009897 -0.563581 0.699180
+v -0.151969 -0.378619 0.605909
+v -0.136001 -0.704926 0.495202
+v -0.225946 -0.881963 0.639257
+v -0.039923 -0.666748 0.637416
+v -0.521230 -0.633325 0.336881
+v -0.493780 -0.651591 0.317985
+v -0.037237 -0.692947 0.635346
+v -0.148606 -0.412441 0.592707
+v -0.237572 -0.822066 0.567249
+v -0.771720 0.679403 -0.228915
+v -0.732183 -0.101405 -0.138799
+v -0.122224 -0.290258 0.659356
+v -0.100831 -0.288684 0.692331
+v -0.761721 0.680679 -0.201952
+v -0.311217 0.694753 -0.128172
+v -0.614707 -0.189147 -0.213348
+v -0.776241 0.661740 -0.215509
+v -0.025927 -0.612874 0.665761
+v -0.073887 -0.590123 0.599822
+v -0.134778 -0.261117 0.621746
+v -0.772973 0.645177 -0.173922
+v -0.766823 0.664180 -0.184715
+v -0.186024 -0.773139 0.554757
+v -0.152029 -0.918775 0.710591
+v -0.123401 -0.358554 0.674490
+v -0.473523 -0.651308 0.334081
+v -0.466329 -0.649818 0.346014
+v -0.500522 -0.630482 0.355308
+v -0.590395 0.520581 -0.007114
+v -0.026501 -0.594104 0.671530
+v -0.049798 -0.556844 0.665151
+v -0.252427 -0.817896 0.536105
+v -0.192026 -0.875233 0.671724
+v -0.519252 -0.641841 -0.008491
+v -0.269229 -0.851795 0.553211
+v -0.119204 -0.224263 0.609943
+v -0.496888 -0.838299 0.216622
+v -0.552701 -0.921968 0.607778
+v -0.108400 -0.235356 0.638965
+v -0.288844 0.620926 -0.126336
+v -0.719741 -0.958246 0.033051
+v -0.453399 -0.689191 0.300922
+v 0.205380 -0.126492 0.636047
+v -0.110897 -0.313708 0.685755
+v -0.161548 -0.314342 0.591888
+v 0.031364 -0.658367 0.687780
+v -0.176423 -0.795886 0.588880
+v -0.198170 -0.792201 0.574132
+v -0.206346 -0.906234 0.670458
+v -0.090301 -0.390008 0.716564
+v -0.759973 0.628796 -0.112673
+v -0.584677 -0.013545 -0.181642
+v -0.791453 0.097931 0.673295
+v -0.139886 -0.376454 0.633715
+v -0.101596 -0.545110 0.585985
+v -0.111914 -0.557201 0.559312
+v -0.031518 -0.167373 0.622992
+v -0.776815 0.592044 -0.138196
+v -0.770559 0.605147 -0.115916
+v -0.174532 -0.849936 0.665958
+v -0.198091 -0.821135 0.603796
+v -0.261081 -0.875360 0.587083
+v -0.454271 -0.689396 0.357118
+v -0.163201 -0.796639 0.603921
+v -0.460871 -0.667788 0.331846
+v -0.369282 -0.973892 -0.251014
+v -0.153564 -0.372376 -0.434492
+v -0.641070 -0.294779 -0.213495
+v -0.297741 -0.370347 -0.241194
+v -0.471027 -0.725301 -0.059765
+v -0.163275 -0.815356 0.642364
+v -0.075979 -0.528605 0.640647
+v -0.677639 0.478704 -0.356612
+v -0.055025 -0.199120 0.663027
+v -0.598018 -0.883807 0.538661
+v -0.576422 -0.860140 0.560842
+v -0.573117 -0.880453 0.577119
+v -0.763336 0.610406 -0.093797
+v -0.235345 -0.972813 0.191010
+v -0.161733 -0.772021 0.574021
+v -0.461898 -0.671591 0.305564
+v -0.483606 -0.651449 0.326039
+v -0.181630 0.759004 -0.194526
+v -0.035754 -0.552658 0.687070
+v -0.236755 -0.881362 0.616690
+v -0.094858 -0.660175 0.555156
+v -0.435637 -0.625175 0.442042
+v -0.209384 -0.774918 0.527655
+v -0.056092 -0.702748 0.610028
+v -0.049766 -0.524594 0.684613
+v -0.767920 0.581997 -0.073057
+v -0.492831 0.334540 -0.022892
+v -0.083943 -0.364318 0.728364
+v -0.062437 -0.659753 0.604046
+v -0.121608 -0.681062 0.512783
+v -0.100250 -0.368425 0.713268
+v -0.044285 -0.605967 0.640292
+v 0.017985 -0.967996 -0.313385
+v -0.427740 -0.646347 0.449414
+v 0.532319 -0.747901 -0.264982
+v -0.029409 -0.533521 0.699854
+v -0.550972 -0.810039 0.516082
+v -0.547652 -0.824257 0.553766
+v -0.094556 -0.218432 0.640427
+v -0.532609 -0.935138 0.618616
+v -0.120810 -0.459467 -0.449927
+v -0.823247 0.384801 0.619561
+v -0.087066 -0.923232 0.384290
+v -0.094007 -0.921049 0.402662
+v -0.452434 -0.655232 0.393912
+v -0.628876 -0.895477 0.459414
+v -0.640641 -0.928521 0.466782
+v -0.639598 -0.928482 0.451414
+v -0.409513 -0.964776 0.591282
+v -0.844919 0.166013 0.660094
+v -0.129165 -0.726840 0.505417
+v -0.080198 -0.478974 0.662787
+v -0.103818 -0.332013 0.705258
+v -0.180271 -0.907536 0.684115
+v -0.205044 -0.844533 0.633712
+v -0.286871 -0.897803 0.557861
+v -0.163289 -0.373762 0.583955
+v -0.861178 0.353178 0.615442
+v -0.144254 0.780991 -0.212847
+v -0.892942 0.181948 0.640171
+v -0.852276 0.148399 0.652630
+v -0.767497 0.566840 -0.010228
+v -0.399513 -0.708159 0.484349
+v -0.414355 -0.706164 0.466267
+v -0.401714 -0.633223 0.483367
+v -0.836194 0.206562 0.688523
+v -0.764173 -0.157661 0.497339
+v -0.759331 -0.197143 0.513600
+v -0.168289 0.562135 -0.030910
+v -0.868660 0.178457 0.653983
+v -0.865780 0.165322 0.649858
+v -0.067083 -0.459941 0.694070
+v 0.050864 -0.684026 0.686156
+v -0.699873 -0.146920 0.540938
+v -0.226507 -0.901631 0.645959
+v -0.150924 -0.291258 0.606268
+v -0.408786 -0.583771 0.489899
+v -0.207687 -0.789396 0.557498
+v -0.182685 -0.752465 0.508967
+v -0.848813 0.241676 0.683181
+v -0.726031 -0.290630 0.541053
+v 0.136256 -0.113347 -0.280528
+v -0.626086 -0.903610 0.411169
+v -0.639860 -0.927552 0.416633
+v -0.644378 -0.935934 0.437203
+v -0.629212 -0.966849 0.401298
+v -0.326286 -0.385695 -0.237184
+v -0.315349 -0.531467 -0.190393
+v -0.038511 -0.224733 0.704627
+v -0.013112 -0.166566 0.641796
+v -0.851192 0.335620 0.636182
+v -0.841320 0.281078 0.676343
+v -0.881655 0.225442 0.656388
+v -0.881729 0.197802 0.651173
+v -0.717161 -0.176226 0.541034
+v -0.745844 -0.102117 0.493929
+v -0.283483 -0.929587 0.571754
+v -0.733049 -0.362709 0.515083
+v -0.905172 0.227343 0.623690
+v -0.887013 0.240130 0.651383
+v -0.879199 0.341614 0.606661
+v -0.230297 -0.411833 -0.256482
+v -0.049372 -0.925336 0.264924
+v -0.737542 -0.418426 0.481831
+v -0.782750 -0.349767 0.484978
+v -0.882339 0.133833 0.648252
+v -0.455318 -0.583210 0.462485
+v -0.314682 -0.786291 -0.125414
+v -0.848749 0.232491 -0.038883
+v -0.832457 0.147025 0.652475
+v -0.471377 -0.671681 0.296135
+v -0.480677 -0.672554 0.287452
+v -0.847762 0.097141 -0.015295
+v -0.179760 -0.256534 -0.301144
+v -0.714241 -0.948899 0.038652
+v -0.697262 -0.916345 0.044599
+v -0.688203 -0.899815 0.024745
+v -0.648264 0.613285 -0.684365
+v -0.199623 -0.052209 -0.246975
+v -0.648402 -0.229985 -0.198171
+v -0.726699 -0.384318 0.510812
+v -0.804276 0.456840 0.562698
+v -0.868407 0.188466 -0.026610
+v -0.523548 -0.656627 0.297000
+v -0.761707 -0.301142 0.516922
+v -0.140966 0.873410 -0.194792
+v 0.176928 -0.979900 -0.265838
+v -0.706326 -0.437136 0.497351
+v -0.881079 0.270106 0.649128
+v -0.831660 0.334167 0.651558
+v -0.057214 -0.483207 0.691701
+v -0.132778 -0.743203 0.514400
+v -0.708001 -0.930064 0.068350
+v -0.715750 -0.955921 0.054305
+v -0.696325 -0.900751 0.058730
+v -0.142907 -0.444199 0.581803
+v -0.628675 -0.082497 -0.186311
+v -0.812439 0.466978 0.545851
+v -0.758012 -0.385600 0.484132
+v -0.770560 -0.275030 0.513723
+v -0.856846 0.416113 0.563346
+v -0.647102 0.293655 -0.088720
+v -0.853553 0.106000 0.651045
+v -0.380432 -0.592635 0.511657
+v -0.688645 -0.368313 0.541794
+v -0.534859 -0.051436 -0.211804
+v -0.741231 -0.334801 0.519365
+v -0.505569 -0.794955 0.510196
+v -0.762469 -0.251262 0.519071
+v -0.713177 -0.948343 0.070572
+v -0.710255 -0.965817 0.075060
+v -0.695888 -0.912286 0.073873
+v -0.689760 -0.895626 0.068221
+v -0.593547 -0.304039 -0.225597
+v -0.845293 0.206664 -0.040799
+v -0.876460 0.295108 0.640451
+v -0.900238 0.133560 0.639970
+v -0.633665 -0.922511 0.392642
+v -0.637840 -0.939659 0.397318
+v -0.629336 -0.942691 0.370844
+v -0.615452 -0.964050 0.352748
+v -0.283078 -0.947199 0.572309
+v -0.633549 -0.960790 0.390266
+v -0.901243 0.166377 0.637619
+v -0.388555 -0.224419 -0.258312
+v -0.896207 0.270840 0.629902
+v -0.666331 -0.908497 -0.002274
+v -0.144481 -0.919035 0.448134
+v -0.714949 -0.938336 0.115610
+v -0.703299 -0.900297 0.104657
+v -0.777802 -0.404314 -0.088279
+v -0.273721 -0.681915 -0.123329
+v -0.896023 0.331184 0.593375
+v -0.898908 0.298067 0.610296
+v -0.909662 0.259567 0.607065
+v -0.210233 -0.632014 -0.167721
+v -0.209145 -0.609375 -0.165358
+v -0.672889 -0.861698 0.101158
+v -0.126469 -0.393511 0.653525
+v -0.165312 -0.053653 -0.261117
+v -0.354275 -0.945475 -0.278956
+v -0.844981 0.475046 0.508057
+v -0.614500 -0.928895 0.337574
+v -0.617557 -0.946236 0.341145
+v -0.727292 -0.148315 0.524628
+v -0.215437 -0.879629 0.653936
+v -0.710991 -0.941950 0.128042
+v -0.701712 -0.907002 0.120958
+v -0.786829 -0.304716 0.496315
+v -0.441153 -0.692072 0.417368
+v -0.397793 0.721039 0.055539
+v -0.692101 -0.972483 0.132676
+v -0.300608 -0.579989 -0.162571
+v -0.621667 -0.968702 0.381094
+v -0.738733 -0.199035 0.532177
+v -0.293788 -0.505476 -0.196965
+v -0.630579 -0.960665 0.499062
+v -0.686504 -0.877430 0.111338
+v -0.915583 -0.232057 0.328759
+v -0.938716 0.026142 0.233715
+v -0.605979 -0.859351 0.415775
+v -0.631653 -0.911231 0.492920
+v -0.286052 -0.447583 -0.211748
+v -0.771411 -0.174212 0.494367
+v -0.768096 0.092915 0.686533
+v 0.637064 -0.857022 0.393226
+v -0.661335 -0.873072 0.136606
+v -0.898469 0.107650 0.637719
+v -0.126932 -0.422315 0.623881
+v -0.773440 -0.230581 0.506155
+v -0.957497 0.452194 0.341148
+v -0.950547 0.414204 0.368390
+v -0.670556 -0.940970 0.170508
+v -0.689119 -0.939920 0.150132
+v -0.926770 0.136158 0.619720
+v -0.906649 -0.223125 0.346050
+v -0.901197 -0.186308 0.354372
+v -0.886969 -0.119612 0.357144
+v -0.287849 -0.406540 -0.226494
+v -0.944136 0.439945 0.379797
+v -0.201671 0.564996 -0.076386
+v -0.448911 -0.772052 0.194877
+v -0.871767 -0.333571 0.347786
+v -0.894340 -0.236851 0.364716
+v -0.884588 -0.192493 0.380118
+v -0.893421 -0.161876 0.363012
+v 0.276000 -0.976872 0.111831
+v -0.939673 0.453234 0.382055
+v -0.943568 0.474154 0.359735
+v -0.034402 -0.982570 -0.256881
+v -0.657134 -0.912216 0.163330
+v -0.879768 -0.303171 0.357539
+v -0.858965 -0.070658 0.372614
+v -0.657621 -0.932990 0.191612
+v -0.639623 -0.898529 0.182222
+v -0.636734 -0.873074 0.158583
+v -0.837317 -0.432069 0.302514
+v -0.731299 -0.435471 -0.118559
+v -0.214021 0.752362 -0.180060
+v -0.869703 -0.315029 0.371372
+v -0.867782 -0.289173 0.384485
+v -0.867706 -0.256594 0.395020
+v -0.857109 -0.202439 0.415857
+v -0.868324 -0.125307 0.385392
+v -0.645035 -0.956620 0.425380
+v -0.471228 -0.634986 -0.091620
+v -0.443451 -0.798997 0.218472
+v 0.775194 -0.851399 0.018960
+v -0.917238 0.476072 0.405879
+v -0.907025 0.513384 0.373985
+v -0.640917 -0.957025 0.210888
+v -0.640888 -0.937138 0.209710
+v 0.009615 -0.953108 0.681006
+v -0.617513 -0.859192 0.164951
+v -0.601606 -0.838048 0.147868
+v 0.359385 -0.106172 -0.260579
+v 0.389846 -0.121518 -0.272263
+v -0.719610 -0.504198 -0.066098
+v -0.848441 -0.385065 0.380610
+v -0.867125 -0.170993 0.400959
+v -0.293491 -0.166582 -0.265216
+v -0.907266 0.469155 0.436351
+v -0.904836 0.493044 0.408805
+v -0.626759 -0.920120 0.214142
+v -0.623506 -0.889079 0.193097
+v -0.067535 -0.217137 0.674598
+v -0.942211 0.071064 0.368129
+v 0.292477 0.009366 -0.239283
+v -0.856052 -0.283054 0.406875
+v -0.027125 0.986196 -0.205890
+v -0.667693 -0.863409 0.075633
+v -0.200685 -0.981064 0.244325
+v -0.889715 0.361996 0.578281
+v -0.922448 0.442706 0.427099
+v -0.293931 -0.108308 -0.251732
+v -0.600575 -0.981262 -0.080678
+v -0.607332 -0.983025 -0.084407
+v -0.327122 0.576005 -0.090131
+v -0.715430 0.288643 -0.081926
+v -0.535475 -0.638789 0.000278
+v -0.911093 0.212377 0.619278
+v -0.771150 -0.120012 0.481602
+v -0.524862 -0.791407 0.119121
+v -0.819053 -0.402220 0.410231
+v -0.118545 -0.964945 -0.352628
+v 0.329827 -0.272920 -0.391457
+v -0.829651 0.295545 -0.025241
+v -0.226057 -0.941061 -0.372005
+v -0.646939 -0.891442 -0.033666
+v -0.651999 -0.887334 -0.003312
+v -0.727018 -0.415670 -0.140296
+v -0.724388 -0.020895 0.509395
+v -0.827871 -0.322957 0.444250
+v -0.839606 -0.237349 0.430769
+v -0.826026 -0.057035 0.404062
+v -0.347306 -0.410643 -0.229538
+v -0.371994 0.698303 -0.082533
+v -0.790522 0.728630 -0.375393
+v -0.782913 -0.266386 0.501649
+v -0.889322 0.487101 0.443893
+v -0.875153 0.511274 0.426787
+v -0.606964 -0.940975 0.238974
+v -0.580876 -0.865784 0.200270
+v -0.552395 -0.819184 0.144756
+v -0.522498 -0.807779 0.148666
+v -0.506112 -0.790528 0.148841
+v -0.549518 -0.626315 -0.016927
+v -0.576679 -0.626171 -0.012810
+v -0.612753 -0.957155 -0.081157
+v -0.141475 -0.974206 -0.360977
+v -0.170823 -0.968420 -0.368654
+v -0.832408 -0.381765 0.410699
+v -0.849936 -0.166841 0.421276
+v -0.843042 -0.107294 0.407020
+v -0.815125 -0.102680 0.432399
+v -0.968595 0.086731 0.538825
+v -0.949763 0.246216 0.532979
+v -0.901331 0.436908 0.490796
+v -0.872532 0.491340 0.461132
+v -0.483970 0.657695 0.072882
+v -0.594392 -0.956109 0.263374
+v -0.611043 -0.956771 0.241155
+v -0.596602 -0.908977 0.226629
+v -0.575698 -0.890553 0.228926
+v -0.510892 -0.774775 0.130721
+v -0.498125 -0.735057 0.130790
+v -0.780179 -0.420068 -0.080138
+v -0.184643 -0.281725 -0.319525
+v -0.655930 -0.916285 -0.042904
+v -0.093539 -0.920627 -0.106994
+v -0.837718 -0.359908 0.417115
+v -0.824831 -0.203415 0.451842
+v -0.248640 -0.981075 -0.371725
+v -0.974414 0.151628 0.558832
+v -0.937870 0.246184 0.566349
+v 0.722115 -0.921203 0.103938
+v -0.917063 0.375311 0.528113
+v -0.575216 -0.916680 0.255107
+v -0.478054 -0.772742 0.168406
+v -0.647462 -0.470683 -0.162143
+v -0.374346 -0.071944 -0.246267
+v -0.823336 -0.281118 0.452759
+v -0.825443 -0.235503 0.448764
+v -0.805371 -0.168055 0.467674
+v -0.670607 -0.006852 0.509719
+v -0.009446 -0.930248 -0.203208
+v -0.958114 0.085095 0.563191
+v -0.966905 0.123664 0.571629
+v -0.953462 0.155469 0.591123
+v -0.953828 0.189412 0.581428
+v -0.934921 0.282737 0.548466
+v -0.386225 0.741449 0.032450
+v -0.552640 -0.888265 0.245634
+v -0.555856 -0.867747 0.218744
+v -0.544541 -0.839421 0.187034
+v -0.520397 -0.820885 0.174130
+v -0.493324 -0.806648 0.178005
+v -0.251395 -0.790212 -0.160678
+v 0.548403 -0.352831 -0.289221
+v -0.299820 -0.631653 -0.136694
+v -0.465267 -0.246312 -0.266031
+v -0.422218 -0.225464 -0.257692
+v -0.806034 -0.303509 0.475257
+v -0.806797 -0.267751 0.472559
+v -0.263118 -0.960100 0.335488
+v -0.465100 0.050891 -0.188362
+v -0.944667 0.127735 0.602545
+v -0.940416 0.187984 0.598677
+v -0.899506 0.408151 0.527625
+v -0.832276 0.495392 0.493797
+v -0.426104 0.700834 0.059699
+v -0.386767 0.746844 0.016336
+v -0.410496 0.728719 0.012142
+v -0.616814 -0.950092 0.544235
+v -0.565585 -0.920250 0.270702
+v -0.573112 -0.937013 0.278589
+v -0.465740 -0.804535 0.200553
+v -0.468404 -0.788988 0.185043
+v -0.433935 -0.736930 0.205252
+v -0.601463 -0.233728 -0.222350
+v 0.649851 -0.921532 0.318508
+v -0.807771 -0.339775 0.465392
+v -0.807934 -0.226906 0.465682
+v -0.787749 -0.200508 0.482186
+v -0.786783 -0.156571 0.479090
+v -0.769504 -0.086762 0.471624
+v -0.234211 -0.972540 0.259130
+v 0.587952 -0.830469 -0.063981
+v -0.931933 0.162969 0.613199
+v -0.921574 0.220955 0.605418
+v -0.916643 0.281264 0.584786
+v -0.913466 0.312531 0.574766
+v -0.907221 0.347348 0.563630
+v -0.903932 0.383454 0.542934
+v -0.875244 0.395987 0.566518
+v -0.874800 0.439524 0.523262
+v -0.226090 0.850518 -0.126208
+v -0.555182 -0.920029 0.293911
+v -0.398306 -0.045740 -0.229654
+v -0.875624 0.107869 0.648586
+v -0.772127 -0.064785 0.464048
+v -0.587366 0.795933 -0.774475
+v -0.279874 0.764157 -0.135723
+v -0.955376 0.045683 0.269740
+v 0.241354 0.155812 -0.125735
+v 0.128023 -0.158670 -0.354134
+v 0.952632 -0.544221 0.061786
+v -0.147018 -0.871555 -0.358280
+v 0.300802 0.114568 -0.174471
+v -0.201491 -0.022486 -0.224333
+v -0.097211 0.947339 -0.160528
+v 0.123903 -0.137675 -0.306690
+v 0.929973 -0.522836 0.063462
+v 0.282308 0.251621 0.013161
+v 0.321737 -0.142831 -0.270015
+v -0.180335 0.034939 -0.204805
+v -0.400560 0.300058 0.078249
+v -0.596858 0.841782 -0.769879
+v -0.580374 0.844424 -0.769162
+v 0.309007 -0.169295 -0.318407
+v 0.340064 0.197910 -0.070088
+v 0.153060 0.099949 -0.173338
+v -0.634154 0.695295 -0.732034
+v -0.637708 0.810800 -0.738746
+v -0.652882 0.848144 -0.733619
+v -0.555505 -0.871419 -0.070766
+v -0.336619 -0.971044 0.529889
+v -0.707811 0.888069 -0.699325
+v 0.570047 -0.243260 -0.255205
+v -0.684777 0.905314 -0.717066
+v -0.454276 -0.729165 0.351742
+v 0.311850 -0.130221 -0.261133
+v 0.327691 0.179242 -0.096632
+v -0.867653 0.237372 -0.022432
+v -0.661005 0.802859 -0.701138
+v -0.673870 0.844902 -0.707932
+v -0.687155 0.868169 -0.708654
+v -0.707371 0.907109 -0.698784
+v -0.220897 0.009250 -0.215977
+v -0.650659 0.661202 -0.703734
+v -0.645898 0.712590 -0.708705
+v -0.647460 0.752730 -0.707993
+v -0.704865 0.871191 -0.694640
+v -0.738263 0.886490 -0.673940
+v 0.113760 -0.915775 -0.048718
+v -0.120926 -0.714596 -0.328464
+v 0.543543 -0.900783 -0.039053
+v 0.476086 0.193686 0.022522
+v -0.660207 0.634267 -0.685057
+v -0.662815 0.716974 -0.669248
+v -0.680198 0.778484 -0.659483
+v -0.702754 0.835643 -0.670359
+v -0.728373 0.869742 -0.674301
+v -0.223970 0.066226 -0.177088
+v -0.666587 0.756460 -0.671861
+v -0.692214 0.809776 -0.662303
+v -0.750287 0.869434 -0.660364
+v -0.672411 0.602058 -0.650502
+v -0.664114 0.673108 -0.664602
+v -0.721275 0.840673 -0.655825
+v -0.765894 0.869023 -0.647891
+v -0.674115 0.579246 -0.634956
+v -0.676365 0.603188 -0.637754
+v -0.669313 0.645167 -0.651405
+v -0.673228 0.724613 -0.647893
+v -0.683117 0.753764 -0.640062
+v -0.761756 0.853682 -0.642643
+v -0.782046 0.869380 -0.626589
+v -0.671800 0.690067 -0.644027
+v -0.731931 0.823169 -0.628962
+v -0.679619 0.639710 -0.612805
+v -0.699655 0.781339 -0.629856
+v -0.717620 0.809251 -0.630769
+v -0.738415 0.805560 -0.603598
+v -0.775423 0.838170 -0.619025
+v 0.345949 0.133497 -0.155854
+v -0.683592 0.579561 -0.619900
+v -0.688678 0.700207 -0.598754
+v -0.693909 0.745337 -0.613184
+v 0.455597 -0.131296 -0.269247
+v 0.421919 -0.124104 -0.268325
+v -0.238333 0.125754 -0.118255
+v -0.682346 0.604239 -0.609787
+v -0.697202 0.707210 -0.577671
+v -0.705772 0.758406 -0.600140
+v -0.726603 0.778179 -0.586247
+v -0.752702 0.797500 -0.583883
+v -0.782379 0.819210 -0.591910
+v -0.788216 -0.067422 -0.079289
+v -0.933434 0.068047 0.585077
+v -0.692776 0.580629 -0.582872
+v -0.694736 0.561377 -0.583017
+v -0.775978 0.797179 -0.571115
+v -0.794372 0.815008 -0.571140
+v -0.209223 -0.775182 -0.173145
+v -0.694626 0.544231 -0.572057
+v -0.685369 0.647296 -0.590671
+v -0.686874 0.671412 -0.590780
+v -0.720617 0.751311 -0.566773
+v -0.738257 0.777128 -0.570183
+v -0.790493 0.795920 -0.558860
+v -0.129520 0.920742 -0.152313
+v -0.798310 0.781125 -0.486203
+v -0.704055 0.545291 -0.554136
+v -0.703757 0.674217 -0.537337
+v -0.750446 0.773564 -0.556129
+v -0.781874 0.779337 -0.545206
+v 0.469117 -0.119865 -0.261547
+v -0.695842 0.592066 -0.557857
+v -0.695382 0.623759 -0.541870
+v -0.707748 0.716548 -0.558496
+v -0.734652 0.743794 -0.535067
+v -0.794193 0.778412 -0.532964
+v -0.938287 0.300213 0.461394
+v -0.709116 0.547084 -0.529517
+v -0.777765 0.764664 -0.526394
+v -0.801740 0.779078 -0.515996
+v -0.704495 0.603377 -0.496435
+v -0.719773 0.718523 -0.530765
+v -0.740965 0.737560 -0.517406
+v -0.780014 0.743563 -0.494772
+v -0.796685 0.761521 -0.506400
+v -0.606708 -0.895401 0.358351
+v -0.708298 0.579663 -0.486378
+v -0.802221 0.761161 -0.493889
+v -0.714428 0.630253 -0.461100
+v -0.722315 0.676519 -0.477565
+v -0.749868 0.723550 -0.490196
+v -0.795079 0.743653 -0.480645
+v -0.802659 0.760874 -0.475864
+v -0.348658 -0.956381 0.584436
+v 0.587493 -0.279556 -0.250773
+v -0.931392 -0.263322 0.262229
+v -0.931286 -0.245520 0.280476
+v -0.717771 0.549681 -0.469396
+v -0.753566 0.707329 -0.462336
+v -0.792952 0.727906 -0.458775
+v -0.802619 0.742402 -0.461965
+v 0.562138 0.109111 -0.029941
+v 0.523911 0.069070 -0.117622
+v -0.888202 -0.067654 0.303419
+v -0.716499 0.598624 -0.425565
+v -0.737424 0.701505 -0.475869
+v -0.973670 0.191919 0.495602
+v 0.364741 0.055826 -0.195077
+v -0.196552 0.131902 -0.098354
+v 0.269049 -0.108249 -0.261037
+v 0.242161 -0.145621 -0.294126
+v -0.138839 -0.003448 -0.225759
+v -0.138007 0.022050 -0.206384
+v -0.212375 -0.793328 -0.239527
+v 0.075356 0.150069 -0.117515
+v 0.254786 -0.035868 -0.241617
+v 0.037473 -0.196726 -0.411683
+v 0.004387 -0.183082 -0.382441
+v 0.394547 -0.221048 -0.334179
+v -0.907428 -0.304028 0.293578
+v 0.211369 -0.132850 -0.285377
+v 0.236395 -0.119247 -0.272066
+v 0.508732 -0.974150 0.103784
+v 0.222621 -0.969439 0.203345
+v -0.713893 0.578232 -0.441729
+v -0.787429 0.710298 -0.433994
+v -0.798534 0.725592 -0.442199
+v -0.196059 -0.002831 -0.216490
+v 0.484247 0.021930 -0.169476
+v 0.522588 -0.051130 -0.187222
+v 0.058372 -0.102166 -0.290371
+v 0.069837 0.088709 -0.180579
+v -0.038074 0.160427 -0.076857
+v -0.167253 -0.363390 -0.415373
+v -0.143863 -0.335530 -0.440977
+v -0.156144 -0.330126 -0.424209
+v 0.382503 -0.018233 -0.221436
+v -0.723950 0.510106 -0.453665
+v -0.724216 0.655867 -0.447144
+v -0.749994 0.689634 -0.438030
+v -0.616897 -0.862255 0.457406
+v 0.227835 0.227165 -0.028888
+v 0.042017 0.219242 0.007025
+v 0.102001 0.155093 -0.121551
+v -0.131252 -0.504361 -0.425483
+v -0.156651 -0.450851 -0.425374
+v -0.171979 -0.441985 -0.412317
+v -0.176055 -0.416002 -0.411746
+v -0.154459 -0.305377 -0.416221
+v -0.426877 0.669214 -0.041898
+v -0.134813 -0.266177 -0.410022
+v 0.306853 0.137221 -0.157867
+v -0.739938 0.671983 -0.425874
+v -0.782572 0.693019 -0.407494
+v -0.801060 0.725916 -0.426228
+v -0.892899 -0.326578 0.292423
+v 0.108515 -0.106665 -0.288216
+v 0.580094 -0.046368 -0.158283
+v 0.250731 0.248099 0.004783
+v -0.134216 -0.526955 -0.410868
+v -0.117384 -0.579587 -0.392004
+v 0.069694 0.202807 -0.051739
+v -0.152013 -0.486495 -0.411268
+v -0.729607 0.528660 -0.426930
+v -0.721292 0.559001 -0.420578
+v -0.719882 0.583848 -0.400820
+v -0.797013 0.707704 -0.413126
+v 0.334015 0.072779 -0.197101
+v 0.346431 0.007135 -0.228179
+v 0.551828 -0.025740 -0.161483
+v -0.118604 -0.625298 -0.379055
+v -0.191351 -0.437974 -0.382510
+v -0.196975 -0.411445 -0.382029
+v -0.179406 -0.363448 -0.396403
+v -0.160441 -0.279070 -0.385648
+v -0.915527 -0.121638 0.298561
+v -0.723054 0.628229 -0.417186
+v -0.735356 0.645499 -0.394687
+v -0.755427 0.668492 -0.395989
+v -0.798779 0.712086 -0.387916
+v 0.342767 0.097263 -0.180756
+v 0.311006 0.097783 -0.186869
+v -0.109668 -0.654787 -0.374697
+v -0.133942 -0.563766 -0.379905
+v -0.158086 -0.521053 -0.380675
+v -0.175564 -0.473591 -0.384329
+v -0.194770 -0.370699 -0.376269
+v -0.179514 -0.332449 -0.379972
+v -0.147302 -0.255866 -0.379938
+v -0.865948 -0.363113 0.352418
+v -0.724625 0.563864 -0.387561
+v -0.730627 0.617235 -0.363704
+v 0.321628 -0.158430 -0.288892
+v -0.116523 -0.680313 -0.352178
+v -0.121835 -0.640789 -0.369079
+v -0.144475 -0.550223 -0.371573
+v -0.173829 -0.506620 -0.358305
+v -0.202271 -0.432212 -0.349781
+v -0.203354 -0.369918 -0.359215
+v -0.126526 -0.238420 -0.386986
+v -0.121271 -0.218486 -0.359174
+v -0.460209 -0.767506 0.366487
+v -0.749465 0.652495 -0.375315
+v -0.786489 0.682650 -0.381998
+v -0.794392 0.690021 -0.375626
+v 0.062203 0.868825 -0.355134
+v -0.448386 -0.718489 0.396848
+v -0.101393 -0.720312 -0.343133
+v -0.130493 -0.669329 -0.338143
+v -0.146657 -0.619140 -0.346131
+v -0.158947 -0.580521 -0.345868
+v -0.161510 -0.544022 -0.353958
+v -0.187143 -0.464080 -0.359637
+v -0.201596 -0.407230 -0.357679
+v -0.201592 -0.344488 -0.355367
+v -0.160514 -0.260216 -0.358628
+v -0.933114 -0.214681 0.282585
+v -0.741827 0.636001 -0.360721
+v -0.795657 0.694465 -0.350390
+v 0.192254 -0.919420 0.301175
+v 0.638303 -0.377496 -0.225359
+v 0.593753 -0.380131 -0.249499
+v 0.303642 0.148464 -0.146742
+v 0.270938 0.147055 -0.145425
+v -0.156912 -0.604512 -0.333082
+v -0.172332 -0.560207 -0.330952
+v -0.170211 -0.537821 -0.344253
+v -0.185281 -0.522860 -0.313795
+v -0.189105 -0.494878 -0.338475
+v -0.195164 -0.460198 -0.343871
+v -0.207328 -0.450420 -0.334094
+v -0.207099 -0.404933 -0.337067
+v -0.175399 -0.289585 -0.356508
+v -0.155662 -0.236553 -0.327720
+v -0.935141 0.379974 0.386099
+v -0.746881 0.510757 -0.319606
+v -0.638143 -0.598044 -0.021520
+v -0.746896 0.528495 -0.325220
+v -0.727626 0.599549 -0.352320
+v -0.772722 0.656642 -0.348842
+v -0.790867 0.671183 -0.345254
+v -0.240597 0.793877 -0.153106
+v -0.933227 0.341036 0.425043
+v -0.968450 0.240281 0.388843
+v -0.324503 -0.915647 -0.317706
+v -0.338867 -0.946073 -0.319023
+v -0.317809 -0.930511 -0.331155
+v -0.308450 -0.974718 0.401924
+v 0.251326 0.096673 -0.197078
+v -0.155502 -0.617112 -0.316324
+v -0.168693 -0.580864 -0.331956
+v -0.215385 -0.430952 -0.328115
+v -0.206601 -0.352705 -0.340392
+v -0.197692 -0.307880 -0.321014
+v -0.731650 0.564809 -0.324226
+v -0.731892 0.584178 -0.311004
+v -0.750458 0.635027 -0.336925
+v -0.792507 0.673341 -0.318610
+v -0.789466 0.691353 -0.320046
+v -0.348743 -0.964181 -0.309495
+v -0.358488 -0.977751 -0.278337
+v -0.342248 -0.933847 -0.306287
+v -0.286421 -0.874332 -0.318517
+v 0.339921 0.159126 -0.128036
+v -0.200165 -0.480913 -0.319110
+v -0.214246 -0.376615 -0.316263
+v -0.220040 -0.344709 -0.300686
+v -0.209610 -0.319383 -0.307560
+v 0.017611 -0.919968 0.359944
+v 0.154905 0.078267 -0.187451
+v -0.303429 -0.822154 -0.227448
+v -0.742553 0.618254 -0.323268
+v 0.336310 -0.229479 -0.370590
+v 0.131876 0.029334 -0.241067
+v 0.107762 0.035296 -0.231529
+v 0.027822 0.008084 -0.230817
+v -0.321900 -0.899947 -0.303101
+v -0.299348 -0.873983 -0.293355
+v -0.230204 -0.500233 -0.216546
+v -0.135131 -0.695807 -0.314550
+v -0.151203 -0.634520 -0.318126
+v -0.157399 -0.623701 -0.297909
+v -0.165653 -0.598482 -0.300045
+v -0.179685 -0.571198 -0.298946
+v -0.189501 -0.532826 -0.293027
+v -0.218794 -0.452497 -0.298679
+v -0.219646 -0.410613 -0.317271
+v 0.893058 -0.567072 0.016913
+v -0.735677 0.602423 -0.318056
+v -0.782681 0.650406 -0.318956
+v -0.788959 0.653516 -0.309429
+v -0.585222 -0.826685 0.452877
+v 0.160979 -0.210786 -0.417678
+v -0.022065 -0.232253 -0.439622
+v 0.266045 0.128357 -0.159736
+v -0.345943 -0.923753 -0.279280
+v -0.332838 -0.900587 -0.279409
+v -0.306291 -0.868199 -0.280361
+v -0.273202 -0.829362 -0.279316
+v -0.324287 -0.176159 -0.266713
+v 0.706502 -0.192455 -0.102151
+v -0.145752 -0.730880 -0.285551
+v -0.153943 -0.668166 -0.282320
+v -0.175307 -0.588870 -0.273770
+v -0.203194 -0.497963 -0.286047
+v -0.217217 -0.462200 -0.281488
+v -0.237169 -0.393978 -0.271601
+v -0.229024 -0.388819 -0.282645
+v -0.585243 0.500406 -0.033318
+v 0.276103 -0.912186 0.379910
+v -0.968228 0.123591 0.379439
+v -0.155482 -0.762234 -0.267806
+v -0.153222 -0.705663 -0.273712
+v -0.154926 -0.674583 -0.275862
+v -0.188440 -0.555747 -0.274814
+v -0.198671 -0.519690 -0.279959
+v -0.225008 -0.427734 -0.288956
+v -0.228088 -0.408361 -0.276679
+v 0.030544 0.184967 -0.052006
+v -0.206900 -0.826745 -0.324220
+v 0.087787 0.197642 -0.071537
+v 0.241860 -0.962839 0.054778
+v -0.721645 0.487401 -0.297247
+v -0.744491 0.602489 -0.286249
+v -0.772853 0.622595 -0.283652
+v -0.784831 0.636854 -0.285402
+v -0.789107 0.653080 -0.284501
+v -0.710968 -0.520222 -0.039435
+v 0.803160 -0.883523 0.139684
+v 0.086083 0.185453 -0.085979
+v 0.052839 -0.966737 -0.310124
+v -0.360511 -0.920526 -0.266731
+v -0.341127 -0.883896 -0.265949
+v -0.205125 -0.799646 -0.268658
+v -0.164429 -0.723318 -0.253955
+v -0.164480 -0.672939 -0.252002
+v -0.168207 -0.628486 -0.271145
+v -0.187860 -0.594024 -0.242998
+v -0.193501 -0.550408 -0.256382
+v -0.223489 -0.467272 -0.260404
+v -0.230434 -0.442137 -0.253206
+v -0.982146 0.209355 0.365716
+v -0.932216 0.318328 0.391161
+v 0.248619 -0.924429 -0.002463
+v -0.740774 0.582414 -0.264796
+v -0.927577 0.174655 0.061052
+v 0.646780 -0.743969 -0.081887
+v -0.051214 0.904062 -0.265095
+v -0.369780 -0.932160 -0.251418
+v -0.320898 -0.855508 -0.266835
+v -0.310889 -0.842409 -0.264384
+v -0.294125 -0.823668 -0.254174
+v -0.175114 -0.779799 -0.246909
+v -0.163846 -0.759928 -0.245133
+v -0.161903 -0.743911 -0.247799
+v -0.162735 -0.653764 -0.263757
+v -0.176907 -0.646667 -0.228014
+v -0.949691 0.404374 0.350507
+v -0.941361 0.286097 0.440087
+v -0.199250 -0.982241 -0.360966
+v -0.223661 -0.960338 -0.380578
+v -0.730992 0.489908 -0.257483
+v -0.755129 0.529566 -0.257355
+v -0.739762 0.562052 -0.254008
+v -0.767113 0.603697 -0.258816
+v -0.782342 0.617291 -0.256798
+v -0.786302 0.622196 -0.238698
+v -0.785001 0.665947 -0.268583
+v -0.808429 -0.025957 0.423297
+v -0.498575 -0.803715 0.384725
+v 0.772895 -0.561506 0.012049
+v -0.048480 0.936005 -0.257702
+v -0.025242 0.959061 -0.272810
+v -0.020690 0.982146 -0.255956
+v -0.070016 0.962630 -0.200701
+v -0.376282 -0.933803 -0.217542
+v -0.362899 -0.903667 -0.238576
+v -0.329588 -0.847353 -0.226395
+v -0.171571 -0.714340 -0.225333
+v -0.172412 -0.675094 -0.234321
+v -0.199052 -0.594632 -0.214294
+v -0.209625 -0.521606 -0.241579
+v -0.513900 -0.936360 -0.114038
+v 0.126939 0.104156 -0.171081
+v -0.455584 -0.749536 0.368442
+v -0.752730 0.511282 -0.254288
+v -0.747950 0.580859 -0.243756
+v 0.109129 -0.228346 -0.435485
+v -0.409946 -0.884091 -0.125571
+v -0.035026 -0.264630 -0.456154
+v -0.068778 0.907738 -0.246368
+v -0.043389 0.979923 -0.221291
+v -0.229340 -0.793609 -0.214665
+v -0.309965 -0.820986 -0.202636
+v 0.020985 -0.973977 -0.228526
+v -0.194093 -0.776464 -0.220935
+v -0.165764 -0.761716 -0.228808
+v -0.201463 -0.561145 -0.231413
+v -0.207201 -0.549969 -0.219354
+v -0.968482 0.077376 0.501922
+v -0.937578 0.303593 0.427144
+v 0.557943 -0.904896 0.414170
+v -0.745339 0.546618 -0.245753
+v -0.744241 0.564808 -0.229545
+v -0.779141 0.600652 -0.235005
+v -0.781585 0.629009 -0.199619
+v -0.193223 -0.777005 -0.202721
+v -0.080636 0.926003 -0.223071
+v -0.045988 0.968206 -0.235747
+v -0.380195 -0.967042 -0.219306
+v -0.357453 -0.887763 -0.206133
+v -0.495648 0.601810 0.004422
+v -0.177722 -0.696587 -0.206305
+v -0.187697 -0.648424 -0.203688
+v -0.198993 -0.613389 -0.204266
+v -0.211261 -0.575879 -0.201769
+v -0.229140 -0.559741 -0.177108
+v -0.926791 0.340772 0.355886
+v 0.721315 -0.667561 -0.043571
+v -0.270672 -0.802704 -0.194963
+v -0.727108 0.478176 -0.226490
+v -0.758244 0.511694 -0.216075
+v -0.759078 0.529052 -0.225819
+v -0.770179 0.585036 -0.222580
+v -0.450761 -0.961625 -0.140296
+v -0.425262 -0.939342 -0.134652
+v -0.061368 0.962864 -0.217521
+v 0.499906 0.187239 0.045303
+v -0.346663 -0.866554 -0.201410
+v -0.330222 -0.845960 -0.206846
+v -0.177738 -0.761149 -0.198293
+v -0.172745 -0.740494 -0.200607
+v 0.202425 0.215702 -0.051643
+v 0.045748 -0.276268 -0.467064
+v 0.911090 -0.502119 0.082572
+v 0.515745 0.053723 -0.135368
+v -0.346601 -0.964010 0.569271
+v -0.741013 -0.479649 -0.079443
+v 0.227257 0.056009 -0.226746
+v 0.230680 0.039886 -0.235065
+v -0.875299 0.017635 0.374851
+v -0.298009 -0.742979 -0.120557
+v -0.746915 0.546761 -0.201263
+v -0.750574 0.563313 -0.205335
+v -0.778442 0.584239 -0.192057
+v -0.783180 0.600958 -0.207784
+v -0.678759 -0.873964 0.043118
+v -0.087857 0.935391 -0.205222
+v -0.385983 -0.958751 -0.197391
+v -0.380293 -0.919637 -0.195000
+v -0.358212 -0.877071 -0.191471
+v -0.353919 -0.853108 -0.159750
+v -0.178073 -0.708649 -0.178816
+v -0.180897 -0.689526 -0.183380
+v -0.184185 -0.667142 -0.203858
+v -0.198237 -0.630244 -0.178941
+v -0.205274 -0.608128 -0.180443
+v -0.067403 0.119311 -0.131046
+v -0.092436 -0.184085 -0.307643
+v 0.037954 -0.215209 -0.430399
+v 0.055546 0.214460 -0.016425
+v -0.054526 0.133576 -0.113213
+v 0.159134 0.191953 -0.095474
+v -0.738580 0.478349 -0.184118
+v -0.762697 0.511243 -0.170442
+v -0.759058 0.529100 -0.192046
+v -0.798922 -0.022431 0.447958
+v -0.129396 0.895516 -0.189982
+v -0.398814 -0.955744 -0.150345
+v -0.318338 -0.815153 -0.168391
+v -0.195492 -0.757991 -0.141486
+v -0.178221 -0.740187 -0.170840
+v -0.186728 -0.709611 -0.164071
+v -0.195280 -0.654651 -0.165523
+v 0.240273 -0.136979 -0.280644
+v 0.272067 -0.122453 -0.267126
+v 0.071504 0.020451 -0.230227
+v 0.421933 -0.062263 -0.224260
+v 0.393032 -0.077954 -0.239738
+v 0.008142 0.138746 -0.099989
+v -0.073344 -0.250715 -0.440948
+v 0.034604 -0.133246 -0.284666
+v -0.755477 0.529342 -0.171485
+v -0.746440 0.547331 -0.184512
+v -0.768763 0.568214 -0.183787
+v -0.138032 0.903029 -0.170384
+v -0.393485 -0.934032 -0.166084
+v -0.376369 -0.903841 -0.187306
+v -0.335986 -0.835778 -0.175675
+v -0.192755 -0.711111 -0.145294
+v 0.535522 -0.040592 -0.177875
+v 0.413425 0.169048 -0.076774
+v 0.349749 0.213441 -0.042680
+v 0.205174 -0.146512 -0.321378
+v 0.429287 -0.293514 -0.348366
+v 0.430141 -0.310936 -0.351458
+v 0.118421 -0.199243 -0.413345
+v -0.093734 -0.894590 -0.354122
+v -0.123322 -0.928576 -0.355459
+v -0.746054 -0.336572 -0.166622
+v 0.302462 -0.976410 0.257201
+v -0.762650 -0.314682 -0.154068
+v 0.894523 -0.531503 0.043010
+v -0.754385 0.494378 -0.171963
+v -0.772368 0.565193 -0.158832
+v -0.781052 0.593305 -0.173628
+v -0.310842 -0.969054 0.534262
+v -0.207469 0.153575 -0.074291
+v -0.465840 -0.916272 -0.126228
+v -0.466506 -0.942829 -0.132163
+v -0.762807 -0.355823 -0.134065
+v -0.760001 -0.264395 -0.156527
+v -0.723528 -0.382834 -0.161247
+v -0.067888 -0.918022 -0.175489
+v 0.951980 -0.517723 0.090544
+v -0.220992 0.185136 -0.029450
+v 0.269237 -0.221938 -0.396041
+v -0.166663 -0.040776 -0.250158
+v -0.727443 0.458504 -0.157909
+v -0.752596 0.529929 -0.148524
+v -0.753926 0.544049 -0.153682
+v -0.589438 0.576176 0.090620
+v -0.165373 0.896816 -0.136428
+v -0.188767 0.877944 -0.136288
+v 0.201013 -0.212331 -0.411096
+v 0.155050 -0.244270 -0.437630
+v -0.652625 -0.980392 -0.055183
+v 0.490213 -0.067012 -0.206382
+v 0.429491 -0.270836 -0.338311
+v 0.398952 -0.090100 -0.254229
+v -0.116231 0.167637 -0.033009
+v 0.534136 -0.276946 -0.283348
+v 0.028445 0.941719 -0.331736
+v -0.757911 -0.381246 -0.120389
+v -0.770990 -0.330232 -0.138734
+v -0.800081 -0.310217 -0.110854
+v -0.778966 -0.265832 -0.137368
+v -0.780612 -0.226536 -0.137072
+v -0.778274 -0.198712 -0.137709
+v -0.176519 0.049612 -0.195502
+v -0.759533 0.494473 -0.140370
+v -0.762753 0.511559 -0.140205
+v -0.773858 0.565163 -0.128670
+v -0.390084 0.696505 -0.066712
+v 0.326505 0.229899 -0.022772
+v 0.452696 -0.089998 -0.246055
+v 0.202537 -0.167004 -0.357849
+v 0.136770 -0.239183 -0.437225
+v -0.750014 -0.406668 -0.112704
+v -0.782864 -0.359052 -0.113685
+v -0.760247 -0.156582 -0.137653
+v -0.170522 -0.018589 -0.228457
+v 0.604949 -0.083849 -0.167963
+v -0.989903 0.128835 0.202042
+v -0.321839 -0.277472 -0.264272
+v -0.743442 0.464623 -0.119606
+v -0.762980 0.494501 -0.117384
+v 0.656289 -0.142370 -0.149137
+v -0.245794 0.822247 -0.132578
+v -0.272514 0.800114 -0.125399
+v 0.044410 0.927524 -0.345228
+v 0.211322 0.099528 -0.184923
+v 0.246682 -0.202723 -0.390349
+v 0.062288 -0.162442 -0.358851
+v -0.008853 -0.110690 -0.286209
+v 0.878802 -0.657930 -0.031567
+v 0.553811 -0.127928 -0.215242
+v 0.536304 -0.157269 -0.243400
+v -0.800086 -0.352852 -0.100002
+v -0.800148 -0.261242 -0.104477
+v -0.804401 -0.221050 -0.110749
+v -0.169406 0.165057 -0.040482
+v -0.773327 0.570087 -0.106301
+v -0.730112 0.439273 -0.106724
+v -0.760625 0.513176 -0.109769
+v -0.752025 0.529377 -0.126950
+v 0.052439 -0.923963 0.275371
+v -0.206120 -0.938056 -0.372947
+v 0.534011 0.095429 -0.077919
+v 0.224149 -0.015438 -0.242600
+v -0.037900 -0.969229 -0.335185
+v 0.247675 -0.217657 -0.397981
+v 0.174607 -0.177341 -0.383780
+v 0.448071 0.122277 -0.108525
+v -0.813086 -0.320544 -0.090256
+v -0.811959 -0.185322 -0.096893
+v -0.782373 -0.156173 -0.113553
+v 0.397878 -0.185878 -0.294791
+v 0.373128 -0.142667 -0.274167
+v -0.758408 0.474924 -0.099930
+v -0.757134 0.529804 -0.094477
+v -0.768325 0.550704 -0.108594
+v -0.300819 0.793052 -0.104024
+v 0.002998 -0.227225 -0.436221
+v 0.471888 -0.209758 -0.283051
+v 0.015329 0.198199 -0.019646
+v 0.127442 0.069756 -0.193891
+v 0.057967 -0.150908 -0.325511
+v 0.028069 0.148532 -0.091427
+v -0.062812 -0.012349 -0.252114
+v -0.819017 -0.287122 -0.082463
+v -0.824880 -0.263450 -0.079977
+v -0.818247 -0.215206 -0.097645
+v -0.808470 -0.127407 -0.080411
+v -0.155098 0.180867 0.019876
+v -0.118346 0.132312 -0.101542
+v -0.083418 0.171582 -0.037305
+v -0.046074 0.016565 -0.229099
+v 0.601323 -0.107492 -0.180762
+v 0.037843 0.084027 -0.184787
+v 0.234013 0.189042 -0.087643
+v 0.386606 0.081483 -0.180408
+v -0.728648 0.423279 -0.081098
+v -0.758099 0.513349 -0.088434
+v -0.385157 0.752054 -0.009195
+v -0.317853 0.783269 -0.092415
+v -0.010436 -0.160401 -0.307132
+v -0.745668 -0.461590 -0.089807
+v -0.796656 -0.394826 -0.073975
+v -0.812576 -0.357357 -0.072563
+v -0.821198 -0.326497 -0.071522
+v -0.836977 -0.298639 -0.059991
+v -0.840782 -0.273892 -0.064392
+v -0.825220 -0.156976 -0.070277
+v 0.419168 0.146003 -0.105382
+v -0.043591 0.096042 -0.150246
+v -0.038591 -0.149722 -0.293664
+v 0.026754 -0.088375 -0.281109
+v -0.082908 0.187964 0.004232
+v 0.591419 -0.197302 -0.223468
+v 0.509884 0.009211 -0.157675
+v 0.909769 -0.582224 0.017250
+v 0.147399 -0.144559 -0.325120
+v -0.081855 -0.966570 -0.344244
+v -0.032925 -0.945437 -0.337610
+v -0.748311 0.441989 -0.067799
+v -0.769764 0.473058 -0.059196
+v -0.768574 0.491456 -0.083991
+v -0.766954 0.530121 -0.075739
+v -0.771923 0.546889 -0.078129
+v -0.505800 0.642571 0.059190
+v -0.345309 0.745192 -0.089362
+v -0.343568 0.767787 -0.077080
+v -0.337482 0.785365 -0.063575
+v -0.298709 0.814067 -0.079090
+v 0.164661 0.017488 -0.247537
+v 0.196210 0.005812 -0.245181
+v -0.479460 -0.692186 -0.059132
+v 0.104727 -0.191156 -0.404455
+v -0.203886 0.030213 -0.206251
+v -0.167474 -0.000008 -0.215409
+v -0.783889 -0.449043 -0.060958
+v -0.824136 -0.377397 -0.046888
+v -0.841184 -0.335200 -0.049465
+v -0.857023 -0.253720 -0.054619
+v -0.834903 -0.198104 -0.074325
+v -0.834744 -0.175663 -0.062721
+v -0.843642 -0.138143 -0.051041
+v -0.831683 -0.099174 -0.048361
+v -0.770901 -0.013260 -0.065475
+v -0.776327 0.014502 -0.037140
+v -0.758605 0.030757 -0.054436
+v -0.058244 0.163503 -0.067628
+v -0.039849 0.059474 -0.200810
+v -0.073959 -0.179986 -0.313819
+v 0.067353 -0.229746 -0.441673
+v 0.031758 0.037144 -0.211494
+v 0.538492 -0.638019 -0.290770
+v 0.083741 -0.287211 -0.457516
+v 0.006400 0.068659 -0.191976
+v -0.746922 0.423112 -0.061138
+v -0.779552 0.495751 -0.044473
+v -0.768186 0.512005 -0.064628
+v -0.375824 0.739798 -0.060217
+v 0.055775 0.235303 0.047947
+v -0.107858 -0.967825 0.602099
+v 0.595804 -0.364340 -0.244132
+v -0.478450 -0.750467 -0.049223
+v -0.491145 -0.713635 -0.032451
+v 0.312353 0.248419 0.011250
+v -0.476795 -0.967419 -0.135538
+v -0.661954 -0.533774 -0.065977
+v -0.676324 -0.543922 -0.040417
+v -0.748089 -0.498340 -0.047000
+v -0.769902 -0.479131 -0.048724
+v -0.801934 -0.433950 -0.048394
+v -0.854760 -0.283750 -0.045024
+v -0.868490 -0.250220 -0.040500
+v -0.862756 -0.227876 -0.046028
+v -0.855834 -0.175953 -0.038566
+v -0.061246 -0.918259 -0.126424
+v -0.130322 0.184655 0.026199
+v -0.107955 0.155548 -0.062012
+v 0.690913 -0.935526 0.208707
+v 0.502124 -0.193445 -0.264189
+v -0.084905 0.026316 -0.213413
+v -0.009143 -0.165889 -0.324862
+v -0.122209 -0.923502 0.073892
+v 0.012122 -0.148752 -0.293904
+v -0.237904 -0.856818 -0.343632
+v 0.173598 0.087642 -0.184011
+v 0.019974 0.226361 0.051015
+v 0.086217 -0.159437 -0.352112
+v -0.767943 0.440509 -0.043241
+v -0.763773 0.458063 -0.053483
+v -0.778738 0.519354 -0.047516
+v -0.408083 0.704328 -0.045899
+v -0.385691 0.741388 -0.044828
+v -0.359877 0.767217 -0.053143
+v 0.105868 0.019461 -0.245539
+v -0.936865 0.066157 0.386460
+v -0.617576 -0.863290 -0.028310
+v -0.521699 -0.817493 -0.034045
+v -0.504157 -0.800428 -0.034656
+v -0.487473 -0.788253 -0.046916
+v -0.498291 -0.750488 -0.020454
+v -0.501205 -0.676841 -0.016031
+v 0.318474 -0.111557 -0.251821
+v -0.706751 -0.534100 -0.013804
+v -0.759420 -0.495931 -0.025125
+v -0.788130 -0.477254 -0.026461
+v -0.800317 -0.460633 -0.030714
+v -0.850173 -0.350460 -0.031530
+v -0.870307 -0.329841 -0.015312
+v -0.870462 -0.279289 -0.023344
+v -0.855516 -0.133844 -0.036625
+v -0.822796 -0.060070 -0.040734
+v -0.830196 -0.027341 -0.012841
+v -0.799050 -0.025177 -0.046636
+v -0.097399 0.088724 -0.158680
+v 0.382139 -0.062791 -0.230869
+v -0.517104 0.317437 -0.046070
+v -0.529721 0.306155 -0.057329
+v 0.275131 0.087228 -0.206019
+v 0.729526 -0.186352 -0.069589
+v -0.117568 -0.003655 -0.235322
+v 0.186125 -0.117051 -0.275889
+v -0.811823 0.380013 -0.028341
+v -0.794987 0.389052 -0.040729
+v -0.803723 0.406931 -0.028656
+v -0.776561 0.471061 -0.038927
+v -0.407003 0.724339 -0.031698
+v -0.430600 0.698428 -0.020720
+v 0.348079 -0.127953 -0.268224
+v 0.906770 -0.606020 0.001833
+v -0.552499 -0.828008 -0.017105
+v -0.546377 -0.816331 0.001001
+v -0.491008 -0.696301 -0.035028
+v -0.677415 -0.566094 -0.014196
+v -0.722355 -0.516125 -0.023057
+v -0.764893 -0.500878 -0.001889
+v -0.815516 -0.446409 -0.013796
+v -0.877096 -0.310065 -0.006495
+v -0.876806 -0.233050 -0.023272
+v -0.865436 -0.137454 -0.021436
+v -0.861436 -0.103404 -0.013739
+v -0.808805 0.013828 -0.003921
+v 0.376466 0.228223 0.000475
+v 0.370970 0.239419 0.020674
+v 0.533396 0.117795 -0.049593
+v 0.422835 -0.244745 -0.326714
+v -0.796268 0.440953 -0.021552
+v -0.782476 0.461704 -0.027881
+v -0.791662 0.497822 -0.008554
+v -0.783131 0.517885 -0.022968
+v -0.779725 0.534999 -0.035490
+v -0.452721 0.662612 -0.017440
+v -0.386616 0.748613 -0.030820
+v -0.716144 0.494523 -0.400717
+v -0.179300 -0.797676 -0.289211
+v -0.633234 -0.859570 0.003036
+v -0.623007 -0.968367 0.219492
+v -0.520536 -0.798858 -0.009111
+v -0.508742 -0.776783 -0.012874
+v -0.513545 -0.658949 0.003192
+v -0.742051 -0.516988 0.002706
+v -0.795241 -0.474233 -0.005454
+v -0.820918 -0.428265 -0.021242
+v -0.836855 -0.386013 -0.009987
+v -0.864741 -0.346996 -0.009110
+v -0.883975 -0.231222 0.000895
+v -0.873009 -0.203509 -0.022107
+v -0.887431 -0.164716 0.023424
+v -0.868816 -0.160058 -0.015322
+v -0.867571 -0.091107 0.013019
+v 0.135578 -0.176918 -0.386384
+v 0.227639 -0.157013 -0.331708
+v -0.899925 0.147372 -0.002242
+v -0.047156 -0.186268 -0.358835
+v -0.228398 -0.013672 -0.229864
+v -0.824551 0.333722 -0.019204
+v -0.810462 0.463935 -0.001377
+v -0.447335 0.685482 -0.005881
+v -0.410476 0.728149 -0.011832
+v -0.673110 -0.904898 0.002873
+v -0.514751 -0.753974 0.013766
+v -0.624688 -0.614868 -0.004993
+v -0.679918 -0.584105 0.015997
+v -0.704211 -0.567338 0.023027
+v -0.780766 -0.488035 0.013810
+v -0.819643 -0.442432 0.006640
+v -0.846789 -0.367655 -0.015907
+v -0.879703 -0.331427 0.016937
+v -0.879279 -0.267671 -0.005965
+v -0.874637 -0.129692 0.012402
+v -0.862175 -0.054147 0.024944
+v -0.841661 -0.003319 0.020317
+v -0.165150 0.098578 -0.146281
+v -0.128889 0.118365 -0.119615
+v -0.130641 0.095625 -0.152203
+v -0.122372 0.028363 -0.198851
+v -0.898293 0.200372 -0.001519
+v -0.887300 0.250162 0.005751
+v -0.834496 0.358045 0.001668
+v -0.821237 0.391466 -0.013262
+v -0.812028 0.431161 -0.007348
+v -0.791181 0.521622 0.002007
+v -0.777231 0.549111 -0.001449
+v -0.468601 0.654994 -0.003740
+v -0.461852 0.676511 0.007984
+v -0.427499 0.711231 -0.001672
+v -0.664325 -0.875971 0.016791
+v -0.631694 -0.836819 0.044634
+v -0.605278 -0.844076 -0.000756
+v -0.536403 -0.797310 0.032074
+v -0.523738 -0.778347 0.020965
+v -0.512976 -0.704986 0.022770
+v -0.516069 -0.676277 0.024523
+v -0.736109 -0.553424 0.040536
+v -0.744867 -0.532848 0.030505
+v -0.756331 -0.512014 0.014787
+v -0.793859 -0.474287 0.026744
+v -0.886989 -0.274174 0.017188
+v -0.886090 -0.241641 0.034384
+v -0.884716 -0.201520 0.006730
+v -0.839057 -0.028987 0.001855
+v -0.851619 0.017761 0.035796
+v -0.867989 0.096136 0.000262
+v -0.884518 0.089171 0.018200
+v -0.888225 0.123292 -0.002987
+v -0.903888 0.124818 0.011582
+v -0.916718 0.146149 0.023336
+v -0.898393 0.227599 0.003791
+v -0.892449 0.273936 0.024419
+v -0.855215 0.314923 0.002167
+v -0.853579 0.369491 0.023671
+v -0.830816 0.414109 0.014939
+v -0.836723 0.418777 0.026515
+v -0.824533 0.463108 0.011227
+v -0.810073 0.511651 0.020074
+v -0.490989 0.638538 0.014743
+v -0.481811 0.656319 0.016633
+v -0.567363 -0.813890 0.033244
+v -0.616294 -0.841025 0.020539
+v -0.518178 -0.736238 0.037509
+v -0.516148 -0.711250 0.048780
+v -0.541145 -0.649108 0.040850
+v -0.779207 -0.495643 0.032358
+v -0.794426 -0.489117 0.048010
+v -0.827679 -0.440278 0.026533
+v -0.843724 -0.411661 0.024731
+v -0.852311 -0.382213 0.032896
+v -0.887513 -0.329373 0.036423
+v -0.885072 -0.312223 0.014723
+v -0.884173 -0.129847 0.026524
+v -0.876620 -0.087956 0.031525
+v -0.847472 -0.029380 0.022590
+v -0.849512 0.032739 0.023843
+v -0.850602 0.052665 0.003659
+v -0.909384 0.099807 0.038473
+v -0.911213 0.180817 0.016544
+v -0.913723 0.207133 0.022077
+v -0.877576 0.310459 0.022361
+v -0.881933 0.366195 0.043178
+v -0.839199 0.487564 0.047858
+v -0.507368 0.637518 0.045734
+v -0.468527 0.674940 0.021143
+v -0.468136 0.675712 0.045663
+v -0.665277 -0.856188 0.047033
+v -0.539034 -0.796342 0.053688
+v -0.530802 -0.779979 0.054601
+v -0.524431 -0.758488 0.058474
+v -0.522219 -0.674188 0.060974
+v -0.767600 -0.511095 0.046182
+v -0.837583 -0.447251 0.048610
+v -0.851618 -0.418089 0.045549
+v -0.897472 -0.294964 0.035060
+v -0.888424 -0.225875 0.046318
+v -0.894347 -0.193874 0.039764
+v -0.881512 0.027907 0.060793
+v -0.923845 0.128950 0.042456
+v -0.927356 0.201811 0.061862
+v -0.911741 0.248364 0.039963
+v -0.914601 0.261516 0.048166
+v -0.921229 0.291111 0.059095
+v -0.896945 0.321226 0.047614
+v -0.878447 0.385961 0.052789
+v -0.846245 0.404406 0.035761
+v -0.842221 0.458029 0.035828
+v -0.859634 0.460876 0.069064
+v -0.822446 0.512221 0.035333
+v -0.810572 0.530375 0.036331
+v -0.488003 0.656550 0.036743
+v -0.646486 -0.839787 0.062218
+v -0.623909 -0.825868 0.076236
+v -0.569681 -0.806363 0.075958
+v -0.541486 -0.796547 0.074248
+v -0.517664 -0.729991 0.055433
+v -0.519575 -0.675080 0.042676
+v -0.541017 -0.657258 0.068629
+v -0.823280 -0.469260 0.056920
+v -0.835135 -0.461792 0.078151
+v -0.870632 -0.398196 0.078450
+v -0.862408 -0.365752 0.047083
+v -0.878192 -0.346515 0.054884
+v -0.913257 -0.304305 0.076398
+v -0.907991 -0.270797 0.057288
+v -0.906763 -0.241346 0.072779
+v -0.905583 -0.223489 0.074498
+v -0.909194 -0.171824 0.064995
+v -0.909518 -0.154582 0.075165
+v -0.895763 -0.150092 0.048015
+v -0.883864 -0.084164 0.056871
+v -0.895818 -0.119849 0.075838
+v -0.873998 -0.063998 0.045992
+v -0.860431 -0.025915 0.044709
+v -0.862377 0.001344 0.058189
+v -0.900962 0.070973 0.049520
+v -0.930908 0.107846 0.059930
+v -0.934475 0.135412 0.062368
+v -0.493944 0.418680 -0.002854
+v -0.714188 -0.069186 -0.133390
+v -0.744130 -0.017234 -0.091918
+v 0.541061 0.130949 -0.019814
+v 0.499544 -0.033407 -0.182478
+v 0.205946 0.022144 -0.234093
+v 0.136017 0.155918 -0.126665
+v 0.571015 -0.345106 -0.267119
+v 0.285572 -0.201794 -0.380400
+v 0.242215 -0.189522 -0.379361
+v 0.490677 0.081754 -0.129037
+v 0.651164 -0.014878 -0.072628
+v 0.451160 -0.263397 -0.320531
+v 0.595192 0.032775 -0.092367
+v 0.552495 0.062572 -0.088407
+v -0.090314 0.130402 -0.115307
+v -0.145903 0.068724 -0.174285
+v 0.493729 0.050361 -0.150154
+v 0.487453 -0.015949 -0.180171
+v 0.448722 -0.056271 -0.208865
+v 0.432414 -0.000009 -0.195454
+v 0.460799 -0.044266 -0.197260
+v 0.608813 0.013675 -0.098674
+v 0.593377 -0.033985 -0.141428
+v 0.519372 -0.078723 -0.207135
+v 0.415890 0.112773 -0.143990
+v 0.696654 -0.085455 -0.067140
+v 0.762282 -0.578545 -0.007608
+v 0.477614 -0.272621 -0.308086
+v 0.488851 0.114921 -0.094468
+v 0.212010 -0.954604 0.100148
+v 0.221370 -0.937831 0.055596
+v 0.629432 -0.878902 0.382068
+v 0.133815 0.054315 -0.208353
+v -0.062650 -0.130344 -0.290968
+v 0.753691 -0.653585 -0.035112
+v 0.427788 0.180842 -0.047508
+v -0.069927 -0.171376 -0.298210
+v 0.595500 0.076155 -0.038548
+v 0.453986 0.159190 -0.063057
+v 0.939800 -0.555354 0.044278
+v -0.020299 -0.211909 -0.421123
+v -0.160423 0.141036 -0.089010
+v 0.578617 -0.138539 -0.202783
+v 0.459799 0.078611 -0.150403
+v 0.080311 -0.981581 -0.282702
+v 0.024320 -0.979809 -0.246009
+v -0.762839 -0.219423 -0.154456
+v 0.603177 -0.059917 -0.156093
+v 0.011270 -0.015198 -0.242443
+v 0.581363 0.003219 -0.127676
+v 0.569913 -0.178945 -0.231825
+v 0.495286 -0.219471 -0.275599
+v 0.081716 -0.949940 -0.307665
+v 0.364355 -0.092267 -0.250334
+v 0.550831 -0.243695 -0.266390
+v 0.237742 0.130206 -0.153739
+v 0.428352 -0.036339 -0.207471
+v 0.505025 -0.129744 -0.248680
+v 0.422492 0.077418 -0.164890
+v 0.537844 -0.100845 -0.213680
+v 0.865896 -0.582905 -0.001649
+v 0.547299 -0.088781 -0.202633
+v -0.214756 -0.853510 -0.348412
+v 0.193012 0.114429 -0.162218
+v 0.049328 0.158869 -0.089198
+v 0.638369 -0.116770 -0.155967
+v -0.260277 -0.834073 -0.303094
+v 0.158116 -0.114135 -0.278169
+v 0.376263 -0.257701 -0.369980
+v 0.290772 -0.260020 -0.405617
+v 0.589725 0.059008 -0.065179
+v 0.555356 0.086760 -0.062169
+v 0.458448 -0.301531 -0.329355
+v 0.766918 -0.592290 -0.003683
+v 0.756730 -0.612503 -0.013848
+v 0.504293 0.128477 -0.063218
+v 0.691411 -0.261981 -0.170941
+v 0.529604 0.048174 -0.126892
+v 0.678310 -0.273267 -0.191436
+v -0.192940 0.171445 -0.032345
+v 0.428901 0.088641 -0.156916
+v 0.388977 0.019583 -0.212783
+v 0.043393 0.126352 -0.139625
+v -0.028445 0.115384 -0.128330
+v -0.007198 0.105940 -0.152776
+v 0.599844 -0.234738 -0.230993
+v 0.468966 -0.012218 -0.187795
+v 0.263697 0.061363 -0.225797
+v 0.688130 -0.231207 -0.151174
+v -0.007628 0.038146 -0.223050
+v 0.503294 -0.100657 -0.231457
+v 0.534634 0.016733 -0.139876
+v 0.658171 -0.226711 -0.184988
+v 0.631778 -0.273217 -0.225041
+v 0.452264 0.185812 -0.015153
+v -0.259070 -0.864207 -0.335898
+v 0.128990 0.215485 -0.059000
+v -0.104524 0.889760 -0.220872
+v 0.698594 -0.149093 -0.104953
+v 0.202942 -0.238347 -0.422908
+v -0.056168 -0.205388 -0.398815
+v 0.628804 -0.240590 -0.218382
+v 0.551891 0.036915 -0.113607
+v 0.631710 0.006487 -0.080881
+v 0.631526 -0.025952 -0.104299
+v 0.551531 -0.206112 -0.249016
+v 0.461423 0.093317 -0.135820
+v 0.649505 -0.086353 -0.136540
+v 0.647151 0.016825 -0.048056
+v 0.273379 -0.179691 -0.356267
+v 0.426334 0.199008 -0.013466
+v 0.785795 -0.545618 0.029958
+v 0.781104 -0.575325 0.012423
+v 0.617545 -0.179001 -0.186778
+v -0.234604 -0.815320 -0.292836
+v 0.653572 -0.181900 -0.154837
+v 0.781479 -0.657623 -0.041941
+v 0.502318 -0.017810 -0.174243
+v 0.202992 0.174605 -0.100417
+v 0.211602 0.161625 -0.114428
+v 0.506937 -0.297191 -0.297365
+v 0.429834 -0.089146 -0.251163
+v 0.444743 -0.106026 -0.261395
+v 0.650378 -0.252165 -0.205141
+v 0.652970 -0.292787 -0.213369
+v 0.428594 -0.219316 -0.301627
+v -0.610710 0.817764 -0.766521
+v 0.621183 0.029970 -0.070945
+v -0.260521 -0.820165 -0.277176
+v 0.618949 -0.160477 -0.178113
+v 0.078666 -0.181132 -0.393476
+v 0.186164 -0.091998 -0.273389
+v 0.072628 -0.208483 -0.424453
+v 0.006933 0.212067 0.019366
+v 0.656310 -0.053360 -0.104744
+v 0.574517 -0.096736 -0.192916
+v 0.507522 -0.330942 -0.311061
+v 0.498713 -0.258750 -0.291647
+v 0.509155 0.101362 -0.097911
+v 0.673540 -0.248656 -0.185517
+v 0.529531 -0.006761 -0.155597
+v 0.007780 0.180159 -0.048911
+v -0.155055 -0.891683 -0.361476
+v 0.805293 -0.491556 0.062343
+v 0.238873 -0.007879 -0.239399
+v 0.799100 -0.523716 0.051227
+v 0.796288 -0.543749 0.038136
+v 0.621329 -0.053926 -0.138135
+v 0.171337 0.215297 -0.061827
+v 0.181145 0.182271 -0.096408
+v 0.061185 -0.177695 -0.388938
+v 0.010244 0.167920 -0.066286
+v 0.035506 -0.015231 -0.243971
+v 0.054567 0.009997 -0.230627
+v 0.420783 0.221041 0.021146
+v 0.818214 -0.663385 -0.048230
+v 0.204599 0.138940 -0.135462
+v 0.427086 0.025664 -0.190767
+v 0.228002 0.202945 -0.067730
+v 0.709564 -0.861636 0.387453
+v 0.667599 -0.083970 -0.115845
+v 0.226324 0.075969 -0.212270
+v 0.091278 0.222961 -0.020909
+v -0.138420 0.161105 -0.049517
+v 0.643539 -0.190809 -0.167508
+v 0.301363 -0.153958 -0.290420
+v 0.285778 -0.167388 -0.328120
+v 0.264600 0.231386 -0.028033
+v -0.011176 0.213591 0.039074
+v 0.002303 -0.920006 0.386886
+v 0.513721 -0.182847 -0.255910
+v 0.046180 -0.058530 -0.271155
+v -0.160686 -0.929541 0.345739
+v -0.170058 -0.943497 -0.368323
+v -0.598624 0.573244 0.069647
+v -0.611169 0.553206 0.020327
+v 0.795946 -0.573646 0.014279
+v 0.388111 0.179853 -0.071293
+v -0.194224 0.070466 -0.176603
+v 0.278084 0.213788 -0.061769
+v 0.141435 0.182825 -0.107593
+v 0.185067 0.047253 -0.217176
+v 0.178987 0.036867 -0.226093
+v 0.133313 0.000044 -0.262853
+v 0.783922 -0.601074 -0.004931
+v 0.377057 0.159570 -0.112933
+v -0.601358 0.560738 0.043182
+v -0.576168 0.546831 0.027421
+v -0.593288 0.535389 0.006107
+v 0.808841 -0.636012 -0.033221
+v 0.258516 0.189329 -0.092827
+v 0.164792 0.232671 -0.024671
+v 0.200615 0.239768 -0.007939
+v 0.276836 0.261897 0.043262
+v -0.312147 -0.946917 -0.337407
+v -0.332494 -0.954701 -0.334697
+v -0.241807 -0.829547 -0.311885
+v 0.376528 0.150800 -0.125931
+v 0.389923 0.130040 -0.141841
+v -0.560603 0.580588 0.061118
+v -0.576998 0.572146 0.062789
+v -0.574341 0.523721 0.011015
+v -0.575245 0.488391 -0.020308
+v 0.714514 -0.242328 -0.129801
+v 0.046647 0.047500 -0.203803
+v -0.187315 -0.897525 -0.368386
+v 0.123392 0.124326 -0.157636
+v -0.072912 -0.187639 -0.340099
+v -0.085446 -0.202098 -0.367419
+v 0.496284 -0.159294 -0.260549
+v -0.557709 0.558250 0.033861
+v -0.563244 0.482207 -0.014155
+v 0.358744 0.109104 -0.173269
+v 0.159147 -0.155736 -0.346027
+v 0.036452 -0.239307 -0.449447
+v 0.021608 0.109670 -0.156591
+v -0.182599 -0.852723 -0.352540
+v -0.116532 0.067740 -0.174287
+v 0.018427 0.967521 -0.309212
+v -0.127129 -0.131449 -0.285701
+v -0.098650 -0.227149 -0.403320
+v 0.546232 -0.414989 -0.296213
+v -0.536895 0.578231 0.033533
+v -0.530921 0.565025 0.020891
+v -0.554020 0.541657 0.021301
+v -0.082486 -0.275225 -0.449733
+v -0.328017 -0.039990 -0.239410
+v -0.357746 -0.041367 -0.235737
+v 0.154559 0.124361 -0.151117
+v -0.199505 0.108662 -0.133109
+v 0.059866 -0.248706 -0.450927
+v 0.046942 0.106331 -0.164338
+v -0.505168 0.617601 0.023561
+v -0.554619 0.525426 0.014054
+v -0.552025 0.495454 0.002099
+v -0.555771 0.465532 -0.015746
+v -0.557092 0.421114 -0.026517
+v -0.561196 0.406593 -0.041151
+v -0.562514 0.366887 -0.061230
+v -0.171095 0.121300 -0.113098
+v 0.001321 0.086336 -0.179036
+v -0.092044 0.052903 -0.188153
+v 0.008788 -0.104353 -0.282282
+v -0.544670 0.437149 -0.012325
+v -0.537700 0.374756 -0.050010
+v 0.064104 0.125833 -0.148119
+v -0.271473 -0.930374 -0.355635
+v 0.407854 0.042086 -0.190869
+v -0.663056 0.907935 -0.730766
+v -0.012787 -0.187736 -0.382496
+v -0.202426 -0.940304 0.670032
+v 0.823231 -0.487622 0.095160
+v 0.817349 -0.498766 0.077382
+v 0.812180 -0.511562 0.065024
+v -0.014780 -0.249243 -0.451977
+v 0.670976 -0.192558 -0.142362
+v -0.566271 0.065025 -0.148425
+v -0.595115 0.076276 -0.122486
+v -0.571290 0.041166 -0.162179
+v 0.008211 -0.193826 -0.399978
+v 0.811986 -0.537806 0.041789
+v 0.274683 0.035734 -0.237138
+v -0.503941 0.404984 -0.013318
+v -0.529138 0.393201 -0.036907
+v 0.026743 -0.056325 -0.266154
+v -0.066834 -0.153185 -0.291781
+v -0.567236 0.116470 -0.107182
+v 0.328415 0.037007 -0.223832
+v 0.178287 0.145195 -0.130656
+v 0.051315 -0.298342 -0.474932
+v -0.138199 -0.950990 -0.362110
+v -0.559838 -0.912366 -0.090134
+v -0.070433 -0.221180 -0.416553
+v -0.534653 0.148972 -0.094104
+v -0.553007 0.137496 -0.097852
+v -0.560550 0.095605 -0.126624
+v -0.531000 0.064600 -0.163872
+v 0.354306 0.028832 -0.221150
+v -0.107244 -0.259378 -0.429031
+v -0.504783 0.303942 -0.044619
+v -0.519693 0.180970 -0.075042
+v -0.518118 0.137414 -0.104979
+v -0.529070 0.122260 -0.115925
+v -0.493722 0.087951 -0.159461
+v -0.092371 -0.928196 0.177125
+v 0.356694 -0.076151 -0.238839
+v -0.501078 0.178338 -0.074484
+v -0.508691 0.038511 -0.187257
+v -0.003115 0.989859 -0.257998
+v -0.187817 0.821019 -0.181659
+v -0.108999 -0.925262 0.118060
+v -0.471912 0.319268 -0.020021
+v -0.592112 -0.974204 0.244228
+v -0.483796 0.190935 -0.065114
+v -0.485638 0.161956 -0.089745
+v -0.497357 0.105859 -0.145133
+v 0.084526 0.119146 -0.159381
+v 0.099986 -0.015736 -0.265638
+v 0.573628 -0.404655 -0.272036
+v 0.367163 -0.160636 -0.280815
+v 0.347159 -0.144674 -0.271769
+v 0.361312 -0.174275 -0.300486
+v 0.836394 -0.487409 0.114808
+v -0.463709 0.292380 -0.032523
+v -0.467966 0.273483 -0.039861
+v -0.473817 0.227413 -0.046889
+v -0.464827 0.195365 -0.064289
+v -0.475687 0.133251 -0.126044
+v -0.316510 0.747138 -0.113955
+v 0.371612 -0.193257 -0.322467
+v -0.432038 0.248700 -0.015476
+v -0.453356 0.240181 -0.033436
+v -0.466541 0.209827 -0.052797
+v -0.459854 0.159139 -0.104487
+v -0.458122 0.119410 -0.144560
+v -0.453753 0.085199 -0.171416
+v 0.349023 -0.213525 -0.353394
+v 0.369208 -0.233597 -0.360401
+v 0.851292 -0.576097 0.003771
+v -0.453129 0.312045 -0.010547
+v -0.435236 0.186946 -0.082549
+v 0.351042 -0.259440 -0.377607
+v -0.433808 0.274205 -0.008632
+v -0.446127 0.227982 -0.036960
+v -0.442324 0.205779 -0.057209
+v -0.434396 0.165258 -0.110412
+v -0.433015 0.152084 -0.124683
+v -0.436079 0.008234 -0.215206
+v -0.091743 -0.131692 -0.288886
+v 0.832233 -0.608244 -0.018263
+v -0.423787 0.221178 -0.039461
+v -0.427834 0.121626 -0.152198
+v -0.426394 0.096364 -0.166874
+v -0.404877 0.062621 -0.182378
+v -0.032900 0.194653 -0.001327
+v 0.228371 -0.263443 -0.420302
+v -0.469729 -0.793079 -0.063518
+v 0.181822 -0.131171 -0.288139
+v -0.415810 0.262585 0.007236
+v -0.405507 0.246529 0.005539
+v -0.417402 0.231115 -0.022769
+v -0.415695 0.198750 -0.074065
+v -0.399999 0.117654 -0.158612
+v -0.368706 0.081374 -0.181270
+v -0.407483 0.015633 -0.209215
+v -0.386021 -0.904073 -0.148338
+v -0.016884 0.039357 -0.221832
+v -0.025486 0.049504 -0.214214
+v -0.023281 0.074281 -0.186972
+v -0.036716 -0.913849 0.492224
+v -0.390054 0.265593 0.047963
+v -0.393817 0.234367 -0.010280
+v -0.393182 0.212853 -0.056121
+v -0.386554 0.182962 -0.101524
+v -0.410133 0.153552 -0.128866
+v -0.425449 0.047237 -0.193029
+v 0.868819 -0.506186 0.070498
+v 0.017227 0.917578 -0.326401
+v -0.017521 0.930489 -0.293149
+v -0.367574 0.253641 0.080000
+v -0.392069 0.250632 0.028970
+v -0.395108 0.243747 0.016866
+v -0.372646 0.219193 -0.047744
+v -0.366311 0.200358 -0.081620
+v -0.382673 -0.000281 -0.212300
+v 0.837395 -0.498473 0.087310
+v 0.844778 -0.518331 0.058809
+v -0.378955 0.251796 0.049448
+v -0.370604 0.236790 0.020336
+v -0.376725 0.168039 -0.117427
+v -0.362273 0.125247 -0.155069
+v -0.396338 -0.969689 0.563747
+v 0.246244 0.019160 -0.240201
+v -0.048014 -0.923857 0.126410
+v 0.861659 -0.544182 0.030663
+v -0.335634 0.158612 -0.126139
+v -0.381670 0.042393 -0.189590
+v -0.374950 0.025348 -0.197193
+v -0.509181 -0.956628 -0.119204
+v -0.536200 0.476071 -0.004757
+v -0.513057 0.458712 -0.001850
+v -0.344164 0.217020 -0.041912
+v -0.345464 0.203685 -0.073617
+v -0.352068 0.184435 -0.101380
+v -0.335947 0.113079 -0.160551
+v -0.347093 0.026984 -0.195157
+v -0.043875 0.182385 -0.031840
+v 0.251693 -0.082961 -0.262356
+v -0.370339 -0.855690 -0.125945
+v -0.472730 -0.660843 -0.079322
+v 0.836712 -0.633659 -0.034297
+v 0.876146 -0.624427 -0.024686
+v 0.062710 -0.315001 -0.477244
+v -0.319312 0.192191 -0.087255
+v -0.312053 0.170279 -0.112289
+v -0.322734 0.142334 -0.138408
+v -0.329417 0.061658 -0.182286
+v -0.342793 -0.004952 -0.218283
+v -0.001260 0.980024 -0.279408
+v -0.303905 0.083884 -0.168649
+v -0.311297 0.034401 -0.198040
+v 0.277595 -0.062346 -0.252237
+v 0.165133 -0.088640 -0.278159
+v -0.580669 -0.865264 -0.052774
+v -0.560302 -0.894065 -0.082395
+v -0.313154 0.203682 -0.063567
+v -0.283364 0.185235 -0.083650
+v -0.295227 0.147583 -0.129567
+v -0.558480 -0.968591 -0.106005
+v -0.411024 0.516364 -0.033649
+v -0.411713 0.550750 -0.048356
+v -0.287142 0.170475 -0.106182
+v -0.292093 0.106765 -0.151562
+v -0.293243 0.065190 -0.181377
+v -0.245898 -0.016932 -0.235001
+v -0.001329 0.954778 -0.300567
+v -0.659510 0.579451 -0.644757
+v -0.528585 -0.959017 -0.114620
+v -0.283086 0.092565 -0.160200
+v -0.258129 0.059033 -0.189359
+v 0.061597 -0.088832 -0.286723
+v -0.491663 -0.847741 -0.077593
+v -0.260957 0.195118 -0.053544
+v -0.245521 0.155749 -0.090654
+v -0.271452 0.149169 -0.119705
+v -0.268757 0.134829 -0.128188
+v -0.255450 0.103831 -0.144173
+v -0.282134 0.026371 -0.209596
+v -0.493993 -0.824281 -0.060890
+v -0.503216 -0.973288 -0.128475
+v -0.176755 -0.932161 0.383615
+v -0.233877 0.166898 -0.076656
+v -0.235658 0.093780 -0.146520
+v -0.248964 0.070416 -0.179259
+v -0.222776 0.047609 -0.194923
+v -0.240512 0.034702 -0.204909
+v -0.872908 0.210591 -0.025051
+v -0.662249 -0.191030 -0.190193
+v -0.666925 -0.239200 -0.192648
+v -0.719549 0.062133 -0.071625
+v -0.874893 0.137674 -0.019719
+v -0.663256 -0.173672 -0.188002
+v -0.701697 0.043693 -0.089315
+v -0.645571 -0.098942 -0.180938
+v -0.608040 -0.902265 -0.068874
+v -0.807699 0.030384 -0.007217
+v -0.736965 0.013666 -0.082631
+v -0.731678 -0.192949 -0.166853
+v -0.790886 0.078546 -0.046562
+v -0.544549 -0.388188 -0.233222
+v -0.660176 0.061360 -0.100242
+v -0.773511 0.101494 -0.064971
+v -0.775629 0.139040 -0.069432
+v -0.512024 -0.607856 -0.060936
+v -0.513362 -0.300219 -0.254792
+v -0.539639 -0.323658 -0.247365
+v -0.649237 0.119190 -0.094064
+v -0.781042 0.187126 -0.070318
+v -0.744084 0.235272 -0.085907
+v 0.897685 -0.663081 -0.020343
+v -0.320471 -0.425792 -0.223197
+v -0.509864 0.228320 -0.061240
+v -0.743023 -0.164765 -0.155249
+v -0.769279 0.208343 -0.079676
+v -0.686356 -0.181844 -0.185826
+v -0.682851 0.184944 -0.092871
+v 0.854896 -0.695004 -0.043500
+v -0.525805 -0.626424 -0.029069
+v -0.542193 -0.275155 -0.245543
+v -0.549312 -0.211458 -0.232073
+v -0.529524 -0.227317 -0.249634
+v -0.515607 -0.523463 -0.166724
+v -0.774802 0.269035 -0.065038
+v -0.713124 -0.231945 -0.179425
+v -0.775158 0.295613 -0.061420
+v 0.846672 -0.666848 -0.044473
+v 0.607972 -0.823936 -0.063269
+v 0.599271 -0.853223 -0.053112
+v 0.167183 -0.976927 -0.226094
+v 0.143021 -0.978095 -0.223674
+v -0.691498 -0.519427 -0.059737
+v 0.853639 -0.704390 -0.042847
+v -0.454003 -0.060007 -0.228529
+v -0.697595 -0.331487 -0.193770
+v 0.834691 -0.768377 -0.030909
+v 0.812788 -0.700420 -0.056938
+v -0.444954 -0.110189 -0.255397
+v -0.547945 -0.186590 -0.234268
+v 0.806555 -0.788602 -0.038976
+v 0.839506 -0.742680 -0.038530
+v -0.430508 -0.544229 -0.151269
+v -0.430450 -0.527176 -0.161850
+v -0.432043 -0.571476 -0.134660
+v -0.544498 -0.136784 -0.223982
+v -0.422122 -0.503506 -0.174316
+v 0.071461 -0.918734 -0.174829
+v 0.796618 -0.804431 -0.032545
+v 0.790083 -0.751854 -0.058423
+v 0.802635 -0.719076 -0.058968
+v 0.788015 -0.687094 -0.055396
+v -0.602175 0.221156 -0.090908
+v -0.585971 0.163221 -0.093362
+v -0.569662 0.136722 -0.096933
+v -0.085210 -0.984321 -0.312758
+v -0.027372 -0.984836 -0.301403
+v -0.742701 0.042754 -0.061648
+v -0.648310 -0.561976 -0.045712
+v 0.765513 -0.825198 -0.027863
+v 0.763294 -0.762067 -0.066805
+v 0.770000 -0.722159 -0.065869
+v 0.756664 -0.705535 -0.062486
+v -0.588382 -0.170857 -0.210843
+v -0.599088 -0.153226 -0.204331
+v -0.523622 -0.364821 -0.249767
+v -0.613147 -0.590011 -0.045170
+v -0.662029 -0.468194 -0.155355
+v -0.718503 -0.474856 -0.094442
+v -0.473145 0.534344 -0.017626
+v -0.316024 -0.076720 -0.245429
+v -0.330839 -0.505221 -0.206813
+v -0.728025 -0.455872 -0.105531
+v -0.486043 0.513663 -0.010413
+v -0.641684 -0.503507 -0.126793
+v -0.664423 -0.508565 -0.105431
+v -0.656232 -0.939748 -0.057140
+v -0.633473 -0.007824 -0.147389
+v -0.309166 -0.118755 -0.254646
+v 0.759599 -0.857671 0.011072
+v 0.771304 -0.805360 -0.041971
+v -0.678007 -0.513131 -0.074220
+v -0.531758 -0.444563 -0.219341
+v -0.552298 -0.412637 -0.223622
+v -0.501366 -0.422367 -0.230394
+v -0.529382 0.236193 -0.066827
+v -0.519837 -0.097963 -0.222975
+v -0.509352 -0.038652 -0.213188
+v -0.757894 0.060924 -0.051425
+v -0.511448 -0.014687 -0.209738
+v -0.501924 -0.156329 -0.249470
+v 0.742413 -0.825117 -0.035286
+v 0.763423 -0.783498 -0.056306
+v -0.674429 0.274934 -0.091202
+v -0.517147 -0.124817 -0.229997
+v -0.760785 -0.547014 0.116206
+v -0.750943 0.156889 -0.077971
+v -0.470013 -0.202716 -0.260398
+v -0.520503 -0.484606 -0.196135
+v -0.519714 0.012098 -0.198528
+v -0.336515 0.648848 -0.111064
+v 0.743587 -0.841496 -0.023574
+v 0.733808 -0.772431 -0.065478
+v 0.730269 -0.737671 -0.068176
+v 0.722521 -0.691057 -0.052454
+v -0.389527 -0.100328 -0.254951
+v -0.522437 -0.320527 -0.253742
+v -0.676838 -0.943937 -0.032332
+v -0.660277 -0.959820 -0.056791
+v -0.678855 -0.472437 -0.135145
+v -0.580563 -0.195650 -0.221240
+v -0.588998 0.116504 -0.099654
+v -0.606237 0.128483 -0.093086
+v -0.636497 0.170942 -0.095533
+v -0.677069 -0.928792 0.000488
+v -0.714473 0.176090 -0.088044
+v -0.796363 0.164640 -0.059168
+v 0.708492 -0.705613 -0.056709
+v 0.709597 -0.672361 -0.052424
+v -0.679798 -0.441736 -0.163920
+v -0.663298 -0.448344 -0.173332
+v -0.546445 -0.078510 -0.217651
+v -0.595340 0.021763 -0.161268
+v -0.590653 -0.043142 -0.189189
+v -0.590409 -0.118496 -0.214701
+v -0.665529 -0.388295 -0.196883
+v -0.578245 -0.261367 -0.225073
+v -0.664357 -0.429707 -0.182449
+v -0.800774 0.233378 -0.056763
+v 0.715313 -0.851148 -0.030869
+v 0.704718 -0.823654 -0.048694
+v 0.704525 -0.791464 -0.061297
+v 0.699023 -0.750340 -0.066130
+v 0.695265 -0.723129 -0.062102
+v -0.654884 -0.358418 -0.209151
+v -0.643827 -0.330038 -0.215615
+v 0.191448 -0.941951 0.136227
+v -0.425979 -0.626295 -0.125523
+v -0.390532 -0.334416 -0.257065
+v -0.393765 -0.356425 -0.250248
+v -0.553704 0.255784 -0.075150
+v -0.545279 0.297866 -0.067092
+v -0.555802 0.336426 -0.064608
+v 0.700966 -0.883864 -0.009581
+v 0.675852 -0.821456 -0.058062
+v 0.686701 -0.771000 -0.064356
+v 0.681363 -0.729988 -0.065181
+v -0.291649 -0.484188 -0.203685
+v -0.300565 -0.214593 -0.277792
+v -0.454243 -0.021570 -0.222941
+v -0.524078 -0.191561 -0.252570
+v -0.513767 -0.233496 -0.258871
+v -0.587686 -0.413999 -0.214634
+v -0.807368 0.346841 -0.034121
+v 0.650158 -0.882948 -0.024574
+v -0.678956 -0.300261 -0.198943
+v -0.577980 -0.371256 -0.228037
+v -0.423973 -0.410017 -0.225336
+v -0.420949 -0.389284 -0.239724
+v -0.600338 -0.926634 -0.079900
+v -0.347156 0.688984 -0.104028
+v -0.720480 -0.571507 0.059031
+v -0.486896 -0.639154 -0.070263
+v -0.484287 -0.603973 -0.078857
+v -0.583158 -0.448815 -0.204369
+v 0.670158 -0.851179 -0.041558
+v 0.666397 -0.788845 -0.063833
+v 0.663649 -0.755720 -0.067320
+v -0.678814 -0.097181 -0.163476
+v -0.566269 -0.525079 -0.156576
+v -0.459953 -0.168188 -0.264968
+v -0.626049 0.893107 -0.754278
+v -0.441484 -0.205912 -0.259446
+v -0.450275 -0.266746 -0.263000
+v -0.446882 -0.369912 -0.252577
+v -0.451233 -0.340925 -0.258184
+v -0.486930 -0.371013 -0.255617
+v 0.636537 -0.836740 -0.054053
+v 0.645656 -0.764985 -0.068131
+v -0.696163 -0.165675 -0.178154
+v -0.585425 -0.547926 -0.113880
+v -0.126013 -0.931147 0.271795
+v -0.440116 -0.136209 -0.262917
+v 0.643832 -0.318042 -0.221673
+v -0.454394 -0.186201 -0.264225
+v -0.411518 -0.015637 -0.223156
+v -0.438074 -0.484425 -0.183032
+v 0.400220 -0.048827 -0.221564
+v -0.654825 -0.139759 -0.181519
+v -0.587730 -0.472145 -0.190036
+v -0.691528 -0.106700 -0.160163
+v 0.624082 -0.903349 -0.011934
+v 0.633600 -0.792628 -0.062510
+v -0.685194 -0.226771 -0.189226
+v -0.599361 -0.443679 -0.204548
+v -0.697447 -0.255320 -0.188701
+v -0.699331 -0.009481 -0.114716
+v -0.327030 -0.733293 -0.123683
+v -0.455415 -0.564078 -0.126823
+v -0.325710 -0.487864 -0.211171
+v -0.412417 -0.168372 -0.265319
+v -0.400007 -0.131364 -0.260453
+v -0.420924 -0.055010 -0.230636
+v -0.403893 -0.088382 -0.249576
+v -0.463071 -0.501893 -0.179615
+v -0.454481 0.558089 -0.030369
+v -0.481025 -0.316907 -0.255525
+v -0.675201 -0.128166 -0.171824
+v -0.330680 -0.285476 -0.258944
+v -0.592436 -0.386757 -0.222546
+v 0.625109 -0.291676 -0.230420
+v -0.454411 -0.306698 -0.257308
+v -0.583102 -0.607497 -0.038934
+v 0.625679 -0.862530 -0.041087
+v -0.499368 -0.587383 -0.084459
+v -0.336707 -0.971246 -0.318576
+v 0.316385 -0.972488 -0.167767
+v -0.395700 -0.918753 -0.137812
+v 0.608894 -0.352677 -0.234991
+v 0.605595 -0.294701 -0.240709
+v -0.390083 -0.469233 -0.194482
+v -0.408609 -0.516018 -0.171027
+v -0.901078 0.021024 0.306039
+v -0.375581 -0.575504 -0.161250
+v -0.422471 -0.204425 -0.260908
+v -0.732902 -0.135252 -0.149416
+v -0.696920 0.022052 -0.103162
+v 0.456299 -0.332808 -0.337965
+v -0.468277 0.602873 -0.021048
+v -0.615176 -0.209340 -0.217086
+v -0.391485 -0.486722 -0.186395
+v -0.385719 -0.808519 -0.106732
+v -0.377904 -0.699045 -0.119944
+v -0.369604 -0.729369 -0.114413
+v -0.381331 -0.635005 -0.139457
+v -0.366653 -0.621438 -0.148282
+v -0.388093 -0.587360 -0.155448
+v -0.404587 -0.289294 -0.260949
+v -0.424158 -0.657233 -0.116543
+v -0.488866 -0.177081 -0.257632
+v -0.497055 -0.605913 -0.067810
+v -0.712579 0.081629 -0.078201
+v -0.678705 0.098831 -0.088018
+v -0.699582 -0.359373 -0.190013
+v 0.585001 -0.876479 -0.042186
+v -0.540836 -0.607031 -0.053531
+v -0.716391 -0.412564 -0.153613
+v -0.695681 -0.394816 -0.175861
+v -0.700410 0.060887 -0.083581
+v -0.307365 -0.765440 -0.123373
+v -0.329396 -0.544688 -0.185227
+v -0.748598 0.124102 -0.078573
+v -0.723049 0.099284 -0.080853
+v -0.737283 0.077559 -0.068797
+v 0.585733 -0.329322 -0.253396
+v -0.393688 -0.859245 -0.121265
+v -0.527734 -0.567472 -0.099613
+v -0.615194 -0.324752 -0.225486
+v -0.378119 -0.559577 -0.171025
+v -0.407630 0.585206 -0.063836
+v -0.380861 0.581514 -0.075992
+v -0.470908 -0.604711 -0.100875
+v -0.497389 -0.624436 -0.058343
+v -0.706023 0.131328 -0.089393
+v -0.584481 -0.494016 -0.174235
+v 0.577094 -0.902705 -0.024133
+v -0.711070 -0.430836 -0.147511
+v -0.435729 -0.582687 -0.125900
+v -0.489701 -0.254736 -0.266369
+v -0.616111 -0.468800 -0.183452
+v -0.355356 -0.336381 -0.252641
+v -0.375073 -0.288841 -0.263612
+v -0.365545 -0.368780 -0.238416
+v -0.362679 -0.221634 -0.262218
+v -0.358810 -0.190141 -0.263057
+v -0.381470 -0.201318 -0.261956
+v -0.332080 -0.703128 -0.127598
+v -0.352982 -0.521141 -0.195648
+v -0.415711 -0.330832 -0.258587
+v -0.457440 -0.700119 -0.078830
+v -0.471497 -0.145200 -0.260838
+v -0.669680 0.136689 -0.095390
+v 0.561473 -0.882865 -0.044054
+v 0.559285 -0.859870 -0.057174
+v -0.610342 -0.525066 -0.126585
+v -0.623829 -0.390708 -0.211492
+v 0.546234 -0.546446 -0.282567
+v 0.545323 -0.513729 -0.291572
+v 0.555269 -0.463897 -0.294836
+v -0.959567 0.061877 0.300983
+v 0.540179 -0.306783 -0.284492
+v -0.381727 -0.409030 -0.226856
+v -0.376354 -0.433063 -0.212624
+v -0.361621 -0.451362 -0.211084
+v -0.379285 -0.163513 -0.261417
+v -0.401709 0.616201 -0.070470
+v 0.521700 -0.693145 -0.301800
+v -0.682640 -0.487447 -0.115383
+v -0.696265 -0.469292 -0.126913
+v -0.355252 -0.676812 -0.130794
+v -0.351114 0.577902 -0.083916
+v -0.480987 -0.122657 -0.251885
+v 0.556401 -0.764807 -0.242688
+v 0.538057 -0.488736 -0.303055
+v 0.539578 -0.372381 -0.296928
+v -0.324959 -0.674542 -0.132128
+v -0.321553 -0.143273 -0.256450
+v -0.348148 -0.498396 -0.207315
+v -0.327949 0.610912 -0.106516
+v -0.355901 -0.148433 -0.256907
+v -0.400532 0.657788 -0.068313
+v -0.394586 -0.709658 -0.113506
+v -0.398733 -0.394801 -0.233486
+v -0.499670 -0.100928 -0.232744
+v 0.523965 -0.787787 -0.247853
+v 0.515378 -0.603315 -0.299735
+v 0.449117 -0.965555 -0.031368
+v 0.507305 -0.558721 -0.321790
+v 0.526616 -0.534398 -0.303808
+v 0.520480 -0.410363 -0.308110
+v -0.299784 -0.255176 -0.278743
+v -0.335754 -0.234862 -0.273285
+v -0.333888 -0.193670 -0.270179
+v -0.014053 -0.921742 0.046141
+v -0.346313 -0.640978 -0.142848
+v -0.519097 0.505168 0.000017
+v -0.333412 0.632488 -0.110318
+v -0.338258 -0.095910 -0.254264
+v -0.362771 0.653940 -0.095262
+v -0.478584 -0.057701 -0.222052
+v -0.433149 -0.756126 -0.083861
+v -0.515456 0.274358 -0.058760
+v 0.510464 -0.765154 -0.274613
+v 0.514146 -0.748132 -0.280100
+v 0.513896 -0.382775 -0.308977
+v 0.501637 -0.611362 -0.311390
+v 0.504579 -0.520162 -0.324892
+v 0.518640 -0.468735 -0.316476
+v 0.502285 -0.435539 -0.319296
+v -0.366166 -0.242844 -0.262355
+v -0.328864 -0.611380 -0.151150
+v -0.356295 -0.707684 -0.123212
+v -0.358690 -0.598063 -0.155943
+v -0.392891 -0.746840 -0.100409
+v -0.424416 -0.447409 -0.209180
+v -0.396495 -0.441474 -0.208523
+v -0.463562 -0.037908 -0.222545
+v -0.678172 0.233079 -0.097991
+v -0.736166 -0.358651 -0.166451
+v -0.396516 -0.947634 -0.141013
+v 0.485163 -0.807288 -0.248196
+v 0.482966 -0.785736 -0.270877
+v 0.502668 -0.708129 -0.315283
+v 0.499547 -0.676750 -0.319527
+v 0.488666 -0.485105 -0.331332
+v 0.501845 -0.399504 -0.318955
+v -0.394236 -0.486654 0.549612
+v -0.337283 -0.257280 -0.267979
+v -0.348079 -0.730674 -0.121232
+v -0.369003 0.616518 -0.091024
+v -0.427788 -0.807023 -0.092962
+v -0.688437 0.250792 -0.095274
+v 0.484592 -0.766792 -0.288644
+v 0.487855 -0.746171 -0.305327
+v 0.499151 -0.726884 -0.311313
+v 0.478834 -0.634129 -0.322107
+v 0.493179 -0.569237 -0.329604
+v 0.476437 -0.545985 -0.345016
+v 0.481515 -0.519663 -0.342306
+v 0.478704 -0.433952 -0.326931
+v 0.469797 -0.397947 -0.333001
+v 0.504459 -0.346938 -0.314679
+v -0.357432 -0.263330 -0.263604
+v -0.410952 -0.482407 -0.182873
+v -0.550673 -0.567661 -0.094924
+v -0.690704 -0.927150 0.011245
+v 0.446945 -0.652215 -0.334793
+v 0.455176 -0.518175 -0.353566
+v 0.453526 -0.461002 -0.345320
+v 0.468991 -0.384316 -0.331859
+v 0.459247 -0.354789 -0.337577
+v -0.348894 -0.427058 -0.221584
+v -0.327239 -0.336792 -0.252654
+v -0.480228 0.010078 -0.208523
+v -0.435857 -0.833843 -0.096124
+v -0.704477 -0.924936 0.028367
+v 0.461369 -0.803913 -0.265102
+v 0.460405 -0.785085 -0.278353
+v 0.443047 -0.770265 -0.301140
+v 0.459308 -0.744605 -0.319078
+v 0.472595 -0.708429 -0.332025
+v 0.456742 -0.598769 -0.341268
+v 0.456575 -0.431100 -0.338806
+v -0.524621 -0.983295 -0.114516
+v -0.354490 -0.761567 -0.116560
+v -0.354820 -0.299838 -0.261331
+v -0.337172 -0.059229 -0.244966
+v -0.640959 0.025731 -0.130873
+v -0.532228 -0.172202 -0.244834
+v -0.563093 -0.545758 -0.125563
+v -0.550607 -0.547300 -0.123251
+v -0.677031 0.300019 -0.088105
+v 0.449551 -0.840747 -0.274386
+v 0.437795 -0.808059 -0.282558
+v 0.431120 -0.781323 -0.296927
+v 0.456431 -0.724878 -0.334111
+v 0.443688 -0.549433 -0.353361
+v 0.460697 -0.498770 -0.350647
+v 0.432454 -0.484801 -0.360094
+v -0.359547 -0.566622 -0.173119
+v -0.312186 -0.296285 -0.255481
+v 0.431433 -0.160594 -0.274492
+v -0.616626 -0.290003 -0.223542
+v -0.393639 -0.768588 -0.099271
+v 0.117963 -0.977832 -0.231257
+v 0.082162 -0.977833 -0.237175
+v -0.401861 -0.558006 -0.160744
+v -0.550025 -0.524533 -0.163743
+v 0.426183 -0.756503 -0.317618
+v 0.437464 -0.705808 -0.343764
+v 0.444667 -0.686635 -0.342566
+v 0.448514 -0.632097 -0.334576
+v 0.437569 -0.594385 -0.350917
+v 0.424584 -0.521862 -0.366772
+v 0.431415 -0.439610 -0.350176
+v 0.443866 -0.394766 -0.347939
+v -0.435003 -0.867846 -0.114044
+v -0.436443 -0.903158 -0.125795
+v -0.550495 -0.515474 -0.171697
+v -0.428129 -0.729602 -0.091495
+v -0.682306 0.358388 -0.080323
+v -0.533254 0.349772 -0.054505
+v -0.474692 0.469673 0.000342
+v 0.415034 -0.803647 -0.295714
+v 0.405793 -0.781084 -0.320094
+v 0.419514 -0.651263 -0.344710
+v 0.407931 -0.632706 -0.349928
+v 0.406477 -0.558632 -0.367478
+v 0.410053 -0.416732 -0.366825
+v 0.401557 -0.351284 -0.365280
+v 0.181648 -0.932396 0.163986
+v -0.409880 -0.823604 -0.103483
+v -0.411054 -0.574087 -0.149626
+v 0.416485 -0.862686 -0.282181
+v 0.381825 -0.804880 -0.313246
+v 0.416566 -0.755653 -0.322724
+v 0.409090 -0.709213 -0.347538
+v 0.404382 -0.606535 -0.361319
+v 0.406822 -0.518913 -0.377412
+v 0.408701 -0.451189 -0.363544
+v 0.399775 -0.394967 -0.372747
+v 0.386791 -0.308864 -0.374406
+v -0.351475 -0.828342 -0.123368
+v 0.350298 -0.964131 0.465023
+v -0.008966 -0.919260 -0.188554
+v 0.035514 -0.929110 -0.195297
+v -0.539135 -0.486347 -0.192031
+v -0.820538 0.067507 -0.021796
+v 0.385109 -0.934138 -0.263986
+v 0.397365 -0.839321 -0.296618
+v 0.379558 -0.707625 -0.356891
+v 0.395729 -0.683880 -0.354385
+v 0.383905 -0.650372 -0.354348
+v 0.387076 -0.527855 -0.382264
+v 0.395149 -0.485518 -0.378538
+v 0.362992 -0.411484 -0.387813
+v 0.351146 -0.037261 -0.233271
+v 0.294670 -0.090484 -0.255081
+v -0.407020 -0.602094 -0.139654
+v -0.559891 -0.448157 -0.207985
+v -0.820790 0.098710 -0.031008
+v 0.397721 -0.915727 -0.263078
+v 0.385996 -0.896124 -0.274528
+v 0.390248 -0.818895 -0.301584
+v 0.387735 -0.780063 -0.329597
+v 0.365542 -0.722797 -0.357487
+v 0.377931 -0.631586 -0.356006
+v 0.384492 -0.594148 -0.367716
+v 0.368519 -0.502632 -0.389604
+v 0.366884 -0.453942 -0.379956
+v 0.367441 -0.435303 -0.378979
+v 0.375786 -0.345224 -0.373119
+v 0.362021 -0.337082 -0.377827
+v 0.390296 -0.281241 -0.371760
+v 0.382846 -0.859124 -0.294210
+v 0.386626 -0.744205 -0.338633
+v 0.371281 -0.684260 -0.361437
+v 0.368223 -0.577115 -0.374266
+v 0.361396 -0.540363 -0.375263
+v 0.371998 -0.381102 -0.383777
+v 0.353728 -0.286526 -0.381940
+v -0.360935 -0.793443 -0.114198
+v -0.423596 -0.780340 -0.091282
+v -0.812182 0.138510 -0.049153
+v 0.356127 -0.852600 -0.300182
+v 0.335262 -0.716858 -0.368550
+v 0.343877 -0.656950 -0.365525
+v 0.373500 -0.618767 -0.363656
+v 0.360505 -0.559482 -0.374406
+v 0.348406 -0.438523 -0.395398
+v 0.344863 -0.366886 -0.392833
+v -0.415631 -0.747574 -0.093324
+v -0.410686 -0.628012 -0.134532
+v 0.350292 -0.917885 -0.276385
+v 0.343476 -0.876865 -0.287459
+v 0.349707 -0.821108 -0.307027
+v 0.344258 -0.778233 -0.342973
+v 0.334054 -0.757562 -0.353834
+v 0.340053 -0.633031 -0.367389
+v 0.329719 -0.612958 -0.380330
+v 0.353156 -0.518124 -0.386295
+v 0.326284 -0.442029 -0.414260
+v 0.337044 -0.404454 -0.401176
+v 0.321867 -0.016066 -0.235420
+v -0.396654 -0.670989 -0.126031
+v -0.432928 0.578809 -0.046694
+v -0.421575 0.618559 -0.055532
+v -0.801089 0.210448 -0.058528
+v 0.349489 -0.896499 -0.278972
+v 0.323517 -0.842252 -0.302360
+v 0.353065 -0.797633 -0.328164
+v 0.335077 -0.593458 -0.386655
+v 0.327319 -0.574730 -0.390476
+v 0.343155 -0.539650 -0.378677
+v 0.322513 -0.520646 -0.393683
+v 0.332204 -0.501538 -0.401039
+v 0.345326 -0.486895 -0.396248
+v 0.321743 -0.392889 -0.411724
+v 0.330867 -0.358234 -0.398654
+v 0.333853 -0.318911 -0.391520
+v -0.416649 -0.259126 -0.259151
+v 0.329834 -0.093926 -0.246048
+v 0.342711 -0.054349 -0.240620
+v -0.408376 -0.712125 -0.108973
+v 0.350200 -0.950782 -0.270901
+v 0.302395 -0.795967 -0.335533
+v 0.301559 -0.782348 -0.342308
+v 0.321505 -0.697300 -0.374204
+v 0.319920 -0.648422 -0.369622
+v 0.310113 -0.411369 -0.417472
+v 0.321812 -0.298101 -0.397762
+v -0.369966 -0.747726 -0.111212
+v 0.323496 -0.073255 -0.247427
+v -0.567198 -0.350914 -0.232571
+v -0.586883 -0.568513 -0.082651
+v 0.310542 -0.895717 -0.283104
+v 0.315079 -0.824045 -0.309985
+v 0.286275 -0.771498 -0.350944
+v 0.304180 -0.728410 -0.369594
+v 0.297327 -0.689117 -0.375933
+v 0.301158 -0.547048 -0.395192
+v 0.300013 -0.519632 -0.405046
+v 0.306414 -0.482160 -0.415771
+v 0.299080 -0.456323 -0.421408
+v -0.537454 -0.982832 -0.117509
+v 0.293629 -0.067858 -0.252107
+v 0.301434 -0.036686 -0.240746
+v -0.504204 0.575945 0.003486
+v -0.480957 0.575545 -0.013773
+v -0.576715 -0.307297 -0.228323
+v -0.807444 0.268710 -0.043123
+v 0.292259 -0.830361 -0.313197
+v 0.285056 -0.797269 -0.345205
+v 0.282616 -0.753438 -0.357882
+v 0.278976 -0.683667 -0.375489
+v 0.294485 -0.630749 -0.378654
+v 0.266148 -0.538791 -0.403810
+v 0.266434 -0.472701 -0.426196
+v 0.298852 -0.356278 -0.413217
+v 0.298829 -0.321454 -0.405280
+v 0.276517 -0.311861 -0.410140
+v 0.283263 -0.914379 -0.085328
+v 0.290121 -0.016980 -0.239291
+v -0.442151 0.549239 -0.035183
+v -0.497218 0.538342 -0.004935
+v -0.564737 -0.300400 -0.232821
+v -0.564872 -0.272840 -0.229083
+v 0.310206 -0.876977 -0.286658
+v 0.285693 -0.857494 -0.296468
+v 0.270909 -0.748133 -0.359884
+v 0.274667 -0.705262 -0.371732
+v 0.288626 -0.653122 -0.375951
+v 0.266197 -0.630396 -0.393186
+v 0.290075 -0.589023 -0.399255
+v 0.290074 -0.573342 -0.400855
+v 0.284073 -0.503387 -0.417286
+v 0.290131 -0.424889 -0.420776
+v 0.279787 -0.380353 -0.416731
+v 0.273501 -0.278766 -0.411075
+v -0.511262 -0.982717 -0.112371
+v -0.486999 -0.979664 -0.132834
+v -0.589498 0.272153 -0.084352
+v 0.290407 -0.932168 -0.288192
+v 0.280297 -0.916737 -0.290197
+v 0.267606 -0.895678 -0.290103
+v 0.240574 -0.858660 -0.299193
+v 0.256000 -0.778103 -0.364265
+v 0.257656 -0.666789 -0.393549
+v 0.258736 -0.610588 -0.404884
+v 0.270245 -0.556676 -0.404311
+v 0.257040 -0.425314 -0.431243
+v 0.245703 -0.335374 -0.426541
+v -0.476969 0.493037 -0.008342
+v 0.253380 -0.950739 -0.290163
+v 0.259709 -0.876946 -0.290314
+v 0.269458 -0.837149 -0.313688
+v 0.260201 -0.817379 -0.340107
+v 0.254547 -0.757251 -0.365728
+v 0.251182 -0.722696 -0.372381
+v 0.244666 -0.690367 -0.389880
+v 0.239007 -0.633999 -0.407739
+v 0.236815 -0.539122 -0.410305
+v 0.245506 -0.519569 -0.413421
+v 0.255964 -0.391957 -0.425147
+v 0.258687 -0.360054 -0.423186
+v 0.242225 -0.301703 -0.419992
+v 0.255136 -0.278824 -0.414459
+v 0.271421 0.000796 -0.241388
+v -0.069214 -0.911915 0.516859
+v -0.503561 0.491093 -0.003614
+v -0.801973 0.312722 -0.041707
+v 0.260027 -0.797276 -0.355619
+v 0.222940 -0.739535 -0.370986
+v 0.225315 -0.691830 -0.390633
+v 0.249237 -0.443128 -0.433558
+v -0.550863 0.231148 -0.076248
+v 0.216554 -0.950653 -0.295323
+v 0.235364 -0.911515 -0.298300
+v 0.210771 -0.875690 -0.299090
+v 0.216723 -0.777557 -0.374029
+v 0.215339 -0.718461 -0.376672
+v 0.233313 -0.593029 -0.421051
+v 0.228458 -0.573231 -0.422368
+v 0.248207 -0.498825 -0.422676
+v 0.229836 -0.389073 -0.434005
+v 0.227252 -0.356158 -0.439005
+v 0.228368 -0.313502 -0.430739
+v 0.234140 -0.072555 -0.261899
+v 0.212349 -0.912934 -0.021488
+v -0.499297 0.436197 0.000032
+v 0.232426 -0.931532 -0.298051
+v 0.199438 -0.914365 -0.303395
+v 0.199434 -0.857276 -0.302480
+v 0.213890 -0.838628 -0.319290
+v 0.201629 -0.815545 -0.351680
+v 0.214732 -0.795340 -0.366671
+v 0.194654 -0.537387 -0.421226
+v 0.210613 -0.453405 -0.440701
+v 0.192892 -0.396159 -0.444846
+v 0.207631 -0.363687 -0.449855
+v 0.194047 -0.287505 -0.437672
+v -0.564360 -0.218513 -0.226089
+v -0.565508 -0.170407 -0.219578
+v 0.213330 -0.759460 -0.375662
+v 0.183121 -0.742061 -0.381809
+v 0.204975 -0.695568 -0.390096
+v 0.208760 -0.649053 -0.407318
+v 0.209552 -0.633465 -0.412736
+v 0.207499 -0.599074 -0.420128
+v 0.202875 -0.575332 -0.421801
+v 0.193271 -0.511948 -0.428808
+v 0.204729 -0.477173 -0.438127
+v 0.206276 -0.412056 -0.441554
+v 0.192880 -0.354148 -0.453645
+v 0.209003 -0.332681 -0.449607
+v -0.629546 -0.447839 -0.190595
+v -0.608847 -0.546754 -0.094235
+v -0.567193 -0.145396 -0.217837
+v -0.556205 0.155384 -0.092699
+v -0.566780 0.185571 -0.089372
+v 0.178207 -0.875488 -0.305337
+v 0.194465 -0.834651 -0.329876
+v 0.187783 -0.796380 -0.366357
+v 0.193565 -0.641506 -0.414830
+v 0.177745 -0.494649 -0.437087
+v 0.188463 -0.445223 -0.443867
+v 0.173877 -0.053874 -0.268145
+v 0.187423 -0.893057 -0.305385
+v 0.176917 -0.857116 -0.309555
+v 0.165774 -0.834671 -0.341205
+v 0.175804 -0.813257 -0.358593
+v 0.180468 -0.775294 -0.375906
+v 0.173059 -0.714842 -0.395859
+v 0.173658 -0.675823 -0.404353
+v 0.182893 -0.610329 -0.427672
+v 0.173966 -0.566374 -0.424921
+v 0.174203 -0.422986 -0.452217
+v 0.168537 -0.378444 -0.456263
+v 0.161232 -0.336004 -0.464711
+v 0.173796 -0.279714 -0.441453
+v -0.573303 -0.078676 -0.213814
+v 0.171023 -0.920026 -0.306376
+v 0.144412 -0.857378 -0.314619
+v 0.173034 -0.758257 -0.381090
+v 0.153939 -0.523822 -0.441594
+v 0.163442 -0.481030 -0.440934
+v 0.161595 -0.353294 -0.463305
+v 0.174794 -0.315985 -0.456683
+v -0.538192 0.025311 -0.184764
+v 0.167558 -0.949338 -0.299390
+v 0.131579 -0.913160 -0.311253
+v 0.133392 -0.893362 -0.312595
+v 0.143442 -0.835045 -0.346561
+v 0.126709 -0.753971 -0.389920
+v 0.149780 -0.719630 -0.398044
+v 0.148710 -0.685641 -0.405508
+v 0.172582 -0.593197 -0.430801
+v 0.130702 -0.572672 -0.434211
+v 0.145794 -0.557908 -0.432188
+v 0.151205 -0.425569 -0.460470
+v 0.134538 -0.367699 -0.464292
+v 0.150927 -0.281645 -0.446065
+v -0.559116 -0.034571 -0.199714
+v -0.579537 -0.100390 -0.216778
+v 0.166708 -0.029791 -0.268122
+v 0.137875 -0.875278 -0.310394
+v 0.152464 -0.815902 -0.360812
+v 0.146784 -0.795649 -0.370357
+v 0.157729 -0.740308 -0.389888
+v 0.145394 -0.644319 -0.426803
+v 0.129537 -0.490664 -0.447231
+v 0.121085 -0.396803 -0.468657
+v 0.143932 -0.405858 -0.464637
+v 0.098257 -0.331304 -0.469886
+v 0.130635 -0.055086 -0.272712
+v 0.124628 -0.668712 -0.413653
+v 0.122349 -0.634147 -0.429971
+v 0.144999 -0.611976 -0.435053
+v 0.115209 -0.529393 -0.445720
+v 0.131611 -0.454581 -0.456224
+v 0.125547 -0.316932 -0.464386
+v 0.135797 -0.019668 -0.271198
+v -0.392662 -0.262359 -0.263011
+v 0.061343 -0.892946 -0.320162
+v 0.112441 -0.834364 -0.349123
+v 0.117453 -0.815901 -0.364298
+v 0.132156 -0.777303 -0.376111
+v 0.111609 -0.737893 -0.403904
+v 0.127457 -0.682569 -0.408031
+v 0.105936 -0.663193 -0.416439
+v 0.103043 -0.483560 -0.461995
+v 0.116436 -0.428321 -0.463925
+v 0.095519 -0.361943 -0.468092
+v 0.115711 -0.294514 -0.456214
+v 0.108509 -0.914563 -0.313202
+v 0.104274 -0.874718 -0.312420
+v 0.102098 -0.857047 -0.316476
+v 0.080343 -0.836334 -0.341405
+v 0.089477 -0.815894 -0.360185
+v 0.082246 -0.780335 -0.378081
+v 0.084947 -0.640527 -0.427801
+v 0.097316 -0.607852 -0.438507
+v 0.103847 -0.562469 -0.437342
+v 0.091033 -0.529265 -0.447674
+v 0.091592 -0.442871 -0.469000
+v 0.093989 -0.406654 -0.465615
+v 0.089330 -0.052190 -0.272245
+v -0.392520 -0.973404 -0.191793
+v 0.092858 -0.717956 -0.412583
+v 0.085473 -0.670317 -0.417815
+v 0.099251 -0.587462 -0.440087
+v 0.083474 -0.485195 -0.463563
+v -0.641516 -0.952041 0.460882
+v 0.055185 -0.911866 -0.319973
+v 0.060400 -0.875199 -0.318526
+v 0.076920 -0.759849 -0.391118
+v 0.076109 -0.737869 -0.408311
+v 0.066288 -0.682676 -0.419604
+v 0.059223 -0.631229 -0.442794
+v 0.065624 -0.589947 -0.450169
+v 0.061959 -0.557136 -0.450960
+v 0.077847 -0.518995 -0.456584
+v 0.067250 -0.406057 -0.468741
+v -0.440729 -0.981612 -0.146449
+v -0.112839 -0.927719 0.244972
+v 0.062046 -0.946425 -0.311543
+v 0.062165 -0.856153 -0.318432
+v 0.056149 -0.781025 -0.377368
+v 0.056556 -0.711380 -0.414222
+v 0.054949 -0.671290 -0.426151
+v 0.039801 -0.597185 -0.455694
+v 0.066555 -0.510061 -0.468378
+v 0.043063 -0.481128 -0.475294
+v 0.057094 -0.447965 -0.473272
+v 0.062353 -0.367453 -0.477258
+v 0.040691 -0.363108 -0.483596
+v 0.364856 -0.972644 -0.107723
+v 0.028610 -0.949105 -0.319494
+v 0.052007 -0.757198 -0.388623
+v 0.043708 -0.735389 -0.400379
+v 0.038970 -0.696700 -0.417825
+v 0.042034 -0.553200 -0.461273
+v -0.122854 -0.922864 0.399895
+v -0.626863 -0.980820 -0.074407
+v 0.405832 -0.971833 -0.115475
+v 0.054340 0.840036 -0.339936
+v 0.027772 0.892070 -0.333800
+v 0.020947 -0.836173 -0.339887
+v 0.041429 -0.815387 -0.360185
+v 0.028744 -0.779730 -0.379943
+v 0.036183 -0.660879 -0.436440
+v 0.027909 -0.582039 -0.461745
+v 0.043509 -0.426791 -0.473243
+v 0.046759 -0.406198 -0.474239
+v 0.032621 -0.389309 -0.482356
+v 0.033869 -0.326271 -0.480146
+v 0.322012 -0.972851 0.069853
+v 0.318030 -0.960739 0.351001
+v 0.720899 -0.879754 0.355025
+v 0.020110 0.868709 -0.323277
+v 0.011190 -0.892003 -0.334450
+v 0.028304 -0.891621 -0.328751
+v 0.017333 -0.754947 -0.390697
+v 0.020034 -0.706051 -0.414056
+v 0.041038 -0.638477 -0.444352
+v 0.012460 -0.562536 -0.466550
+v 0.009277 -0.474770 -0.480657
+v 0.035762 -0.448992 -0.477470
+v 0.009870 -0.364087 -0.487280
+v -0.689336 -0.973969 -0.016044
+v -0.208493 -0.968305 0.578523
+v 0.012451 0.827222 -0.302944
+v 0.016928 -0.854888 -0.329302
+v -0.015529 -0.794240 -0.360701
+v -0.006542 -0.756898 -0.383614
+v -0.005567 -0.705869 -0.408609
+v 0.001990 -0.662931 -0.432981
+v 0.026291 -0.609737 -0.452298
+v 0.018430 -0.521296 -0.472302
+v 0.002323 -0.323414 -0.483200
+v -0.006152 -0.302267 -0.478033
+v -0.680231 -0.972737 -0.034271
+v -0.073578 -0.924995 0.166774
+v -0.083711 -0.916787 0.464499
+v 0.008512 -0.817854 -0.352336
+v 0.000404 -0.652634 -0.436359
+v -0.023876 -0.479470 -0.479531
+v -0.018541 -0.435411 -0.480506
+v 0.008061 -0.405702 -0.475756
+v -0.012443 -0.283526 -0.470026
+v -0.587756 -0.967739 0.297202
+v -0.606600 -0.962858 0.311627
+v -0.589698 -0.963663 0.273989
+v -0.005507 0.745674 -0.244744
+v -0.043886 0.783037 -0.249780
+v -0.002877 0.874163 -0.305293
+v -0.030605 0.896042 -0.283876
+v -0.017117 -0.853039 -0.337187
+v -0.032262 -0.611301 -0.440217
+v 0.000438 -0.605657 -0.446203
+v -0.017945 -0.570941 -0.460151
+v -0.005902 -0.560652 -0.467324
+v -0.023969 -0.511584 -0.471621
+v -0.023892 -0.404376 -0.479099
+v -0.025247 -0.370368 -0.482328
+v -0.024692 -0.348469 -0.481996
+v -0.047300 -0.105448 -0.285444
+v -0.640642 -0.118988 -0.186142
+v 0.678004 -0.893408 0.356519
+v -0.013673 0.810152 -0.278237
+v -0.035146 0.867321 -0.279044
+v -0.038032 -0.871931 -0.346081
+v -0.010249 -0.835518 -0.337942
+v -0.046017 -0.756961 -0.366796
+v -0.039954 -0.512061 -0.472171
+v -0.614834 -0.962562 0.332205
+v -0.033000 -0.837063 -0.335857
+v -0.042975 -0.796084 -0.352039
+v -0.034515 -0.719712 -0.388898
+v -0.038744 -0.643718 -0.425313
+v -0.044337 -0.577574 -0.448577
+v -0.043828 -0.543677 -0.463587
+v -0.043085 -0.476751 -0.480185
+v -0.047090 -0.442392 -0.482399
+v -0.042919 -0.388838 -0.482644
+v 0.803517 -0.884701 0.178055
+v -0.066137 0.872962 -0.256191
+v -0.046023 -0.889544 -0.348776
+v -0.050905 -0.818179 -0.338180
+v -0.054735 -0.719261 -0.376623
+v -0.073371 -0.663031 -0.396947
+v -0.062767 -0.597145 -0.431638
+v -0.075238 -0.541978 -0.450245
+v -0.059538 -0.514907 -0.468619
+v -0.062937 -0.431540 -0.479639
+v -0.057475 -0.359267 -0.480859
+v -0.059770 -0.318251 -0.471504
+v -0.040149 -0.298085 -0.467460
+v -0.592132 -0.454248 0.543138
+v 0.212964 -0.915444 0.354923
+v 0.292186 -0.956551 -0.022865
+v -0.064492 0.808011 -0.251484
+v -0.032021 0.841393 -0.278009
+v -0.103327 -0.945408 -0.354431
+v -0.057210 -0.840221 -0.341349
+v -0.077531 -0.799996 -0.333811
+v -0.085907 -0.732818 -0.350003
+v -0.090795 -0.690858 -0.368671
+v -0.078034 -0.621580 -0.411703
+v -0.084469 -0.574431 -0.427345
+v -0.073985 -0.467901 -0.475481
+v -0.079749 -0.085151 -0.283163
+v -0.074788 0.748835 -0.226370
+v -0.069740 0.784695 -0.243243
+v -0.081685 0.841719 -0.247011
+v -0.077266 -0.819127 -0.334433
+v -0.094005 -0.592739 -0.409142
+v -0.082031 -0.497083 -0.464984
+v -0.079992 -0.366204 -0.474574
+v -0.085787 -0.311133 -0.463744
+v -0.085606 0.722444 -0.209258
+v -0.085424 0.873071 -0.242173
+v -0.819623 0.068214 0.634293
+v -0.073229 -0.927958 -0.348648
+v -0.069759 -0.872815 -0.350627
+v -0.107598 -0.506673 -0.443738
+v -0.093492 -0.406061 -0.468947
+v -0.130719 0.745103 -0.210767
+v -0.129220 0.765077 -0.217380
+v -0.099862 0.788325 -0.233899
+v -0.097423 0.806545 -0.237540
+v -0.113165 0.830410 -0.228854
+v -0.131512 0.853325 -0.211997
+v -0.106216 -0.854282 -0.348822
+v -0.135370 -0.836627 -0.340866
+v -0.104358 -0.818652 -0.329664
+v -0.105586 -0.801477 -0.321693
+v -0.107270 -0.781508 -0.322164
+v -0.087452 -0.446001 -0.472729
+v -0.107787 -0.425439 -0.459415
+v -0.130108 -0.380462 -0.454973
+v -0.110050 -0.352450 -0.462331
+v -0.127847 -0.331014 -0.451005
+v -0.110727 -0.290077 -0.445981
+v 0.170772 -0.957874 0.630280
+v -0.230469 -0.967574 0.597563
+v -0.828561 -0.454589 0.256404
+v 0.398416 -0.969023 0.444518
+v 0.361245 -0.970243 0.545027
+v 0.355957 -0.968282 0.564995
+v 0.360881 -0.950364 0.594392
+v 0.338352 -0.956900 0.594831
+v 0.319188 -0.947369 0.604855
+v 0.466471 -0.963012 0.278435
+v 0.777683 -0.874844 0.300521
+v -0.079139 -0.966993 0.674274
+v 0.382791 -0.975004 -0.143935
+v 0.195507 -0.916282 0.376223
+v 0.043066 -0.963459 0.654567
+v 0.493456 -0.953858 0.250293
+v 0.189894 -0.970046 0.569655
+v 0.159690 -0.970816 0.589285
+v 0.360204 -0.973842 -0.065522
+v 0.743623 -0.894634 0.294146
+v 0.516136 -0.958922 0.214797
+v 0.302871 -0.976385 0.065844
+v 0.206724 -0.927085 0.280394
+v 0.099978 -0.932414 0.654584
+v 0.196876 -0.965245 0.527030
+v 0.091062 -0.963688 0.639183
+v 0.094403 -0.969189 0.621918
+v 0.088551 -0.954897 0.655268
+v -0.029526 -0.967459 0.595924
+v 0.118141 -0.910902 0.487277
+v 0.116549 -0.914456 0.436526
+v 0.014738 -0.920078 -0.011359
+v 0.027864 -0.917116 -0.087795
+v 0.171181 -0.917111 0.034361
+v 0.767080 -0.897790 0.234210
+v 0.298256 -0.958038 0.337057
+v -0.068372 -0.967895 0.652334
+v 0.049030 -0.914308 -0.151237
+v 0.226697 -0.958711 0.262347
+v 0.109352 -0.921156 0.239749
+v 0.734495 -0.911812 0.237428
+v 0.162302 -0.911832 0.439412
+v 0.274516 -0.914806 -0.065807
+v 0.792406 -0.888281 0.208052
+v 0.561157 -0.960530 0.057884
+v 0.287588 -0.971716 0.086591
+v 0.577902 -0.964644 0.092578
+v 0.542320 -0.969034 0.085647
+v 0.294344 -0.953892 0.606221
+v 0.309615 -0.918894 0.603637
+v -0.210340 -0.960854 0.641621
+v 0.008391 -0.962533 0.668467
+v 0.025786 -0.921233 0.056268
+v 0.210094 -0.912075 0.412838
+v 0.563655 -0.968423 0.117003
+v 0.544306 -0.973303 0.141174
+v 0.327749 -0.969350 0.568347
+v 0.069233 -0.922981 0.192389
+v 0.145410 -0.913105 0.447973
+v 0.086824 -0.968917 0.593977
+v 0.750023 -0.909173 0.178884
+v -0.004943 -0.922688 0.112082
+v 0.133264 -0.927225 -0.177571
+v 0.036354 -0.922355 0.210171
+v 0.021901 -0.923298 0.177571
+v 0.325865 -0.967472 0.486140
+v 0.365549 -0.958897 0.426310
+v 0.314935 -0.969447 0.089236
+v 0.102926 -0.917409 -0.026116
+v 0.476504 -0.968790 0.285713
+v 0.442741 -0.969972 0.303002
+v 0.385732 -0.967315 0.399467
+v 0.403425 -0.967956 0.390200
+v -0.011968 -0.912558 0.481533
+v -0.089380 -0.926351 0.214401
+v 0.419217 -0.969679 0.323630
+v 0.451145 -0.966110 0.361850
+v -0.038690 -0.922414 0.080925
+v 0.493067 -0.972951 0.084503
+v 0.533306 -0.968452 0.060554
+v 0.353036 -0.963111 0.579839
+v 0.520476 -0.963511 0.178780
+v 0.511892 -0.969024 0.056519
+v 0.793589 -0.878692 0.260329
+v 0.219807 -0.920674 0.308160
+v 0.056915 -0.967944 0.592301
+v -0.696953 0.489832 -0.417281
+v -0.701710 0.482818 -0.370808
+v 0.757936 -0.857081 0.359604
+v 0.596360 -0.950317 0.055805
+v 0.538895 -0.970337 0.185648
+v 0.516490 -0.968395 0.244367
+v 0.321867 -0.977246 0.026089
+v 0.282218 -0.935318 0.608585
+v 0.497580 -0.968905 0.268839
+v 0.470872 -0.967240 0.328133
+v 0.022168 -0.912100 0.505089
+v 0.380697 -0.967293 0.438472
+v 0.148710 -0.951535 0.642842
+v 0.262618 -0.975948 0.144228
+v 0.330496 -0.971530 -0.040902
+v 0.413132 -0.967404 0.440042
+v 0.437353 -0.966544 0.480863
+v 0.412535 -0.967584 0.506335
+v 0.415677 -0.964533 0.544383
+v 0.670657 -0.923162 0.298145
+v 0.213237 -0.937750 -0.174552
+v 0.716530 -0.898521 0.317875
+v 0.402031 -0.951433 0.580021
+v -0.173214 -0.968191 0.581121
+v -0.126267 -0.926674 0.332258
+v 0.274773 -0.969258 0.569461
+v 0.421076 -0.968810 -0.156449
+v 0.398373 -0.973168 -0.079360
+v 0.375629 -0.973387 -0.077200
+v 0.138037 -0.912248 -0.142246
+v 0.345104 -0.961505 0.069030
+v 0.087044 -0.957689 -0.203019
+v 0.247598 -0.968831 0.266919
+v 0.344055 -0.948779 0.450061
+v 0.131664 -0.914759 0.414993
+v 0.229977 -0.913237 0.384629
+v 0.238189 -0.949574 0.292515
+v 0.526143 -0.968529 0.152461
+v 0.322953 -0.971438 0.533841
+v 0.023721 -0.969325 0.616596
+v 0.276090 -0.976654 0.182069
+v 0.267006 -0.977751 0.203803
+v 0.259713 -0.973050 0.256950
+v 0.230908 -0.917711 0.331097
+v -0.107838 -0.966437 0.664501
+v 0.322817 -0.960830 -0.057480
+v 0.047629 -0.953932 0.668146
+v 0.180211 -0.913777 0.422129
+v 0.379299 -0.970912 0.314615
+v 0.119249 -0.970400 0.586980
+v 0.195187 -0.927042 0.261972
+v 0.066089 -0.969432 0.619007
+v -0.542427 -0.955806 0.608525
+v 0.731757 -0.842290 0.400031
+v 0.492581 -0.969645 0.097773
+v 0.509077 -0.966423 0.029417
+v 0.273688 -0.973044 0.154953
+v 0.112093 -0.948733 0.653624
+v 0.288461 -0.966056 0.316538
+v -0.910342 0.076551 0.615097
+v -0.775593 -0.528702 0.142013
+v -0.964529 0.084427 0.339716
+v 0.315314 -0.963346 -0.156022
+v 0.153613 -0.920461 0.288181
+v 0.076410 -0.918496 0.011929
+v 0.582197 -0.968781 0.138454
+v 0.556233 -0.971453 0.184104
+v 0.541695 -0.969713 0.202010
+v 0.478358 -0.962456 0.390527
+v -0.492715 -0.953250 0.618106
+v 0.457227 -0.963663 0.437302
+v 0.403222 -0.960244 0.563402
+v -0.535637 -0.640826 0.316412
+v 0.174789 -0.914357 -0.014536
+v 0.291722 -0.922789 -0.125280
+v 0.265377 -0.917486 -0.133692
+v 0.181202 -0.970424 0.597525
+v 0.312127 -0.973875 0.280928
+v 0.228437 -0.970657 0.226597
+v -0.167972 -0.925231 0.426866
+v 0.203117 -0.956153 0.204910
+v 0.364401 -0.958682 0.403624
+v 0.349332 -0.943264 0.429098
+v -0.936817 0.052728 0.325948
+v 0.186958 -0.939432 0.187152
+v 0.188463 -0.931277 0.231647
+v 0.179761 -0.910452 0.468297
+v 0.604335 -0.960632 0.090857
+v 0.368259 -0.966342 0.379343
+v 0.375582 -0.968732 0.358898
+v 0.563470 -0.965823 0.235512
+v 0.736617 -0.881134 0.337568
+v 0.542123 -0.969784 0.228203
+v 0.498777 -0.963741 0.330792
+v 0.473844 -0.958079 0.438538
+v -0.895517 0.026270 0.336892
+v -0.934684 0.060513 0.356534
+v 0.127152 -0.921068 0.175853
+v -0.159773 -0.927474 0.391933
+v 0.465611 -0.960553 0.470545
+v 0.468544 -0.973965 0.053813
+v 0.443578 -0.961689 0.515501
+v 0.437877 -0.948173 0.561334
+v 0.194209 -0.933380 0.103163
+v -0.102875 -0.927550 0.275142
+v 0.276353 -0.957712 0.605609
+v 0.296870 -0.963709 0.592358
+v -0.061878 -0.921997 0.372529
+v 0.331073 -0.973743 0.050049
+v -0.600662 -0.948335 0.566382
+v 0.210275 -0.963636 0.167430
+v -0.214379 -0.950197 0.651142
+v 0.076664 -0.920085 0.101874
+v 0.397649 -0.975072 0.003344
+v 0.201517 -0.976437 -0.214802
+v 0.293761 -0.921750 -0.064425
+v 0.159575 -0.918994 0.096665
+v 0.000055 -0.917138 0.426924
+v 0.814110 -0.851051 0.314918
+v 0.692033 -0.898925 0.339157
+v 0.398211 -0.976274 0.040274
+v 0.290473 -0.976681 0.218814
+v -0.011213 -0.920296 -0.021101
+v -0.918814 0.050761 0.391931
+v -0.526229 -0.672925 0.119188
+v 0.717859 -0.926536 0.134198
+v 0.696182 -0.927306 0.079438
+v 0.298919 -0.936524 -0.051879
+v -0.028715 -0.921302 0.364663
+v 0.275398 -0.923641 0.354158
+v 0.281776 -0.970501 0.287292
+v 0.278548 -0.976674 0.252695
+v 0.778856 -0.862980 0.328760
+v 0.646839 -0.946333 0.090000
+v 0.313264 -0.931515 -0.117360
+v 0.213094 -0.964281 0.134246
+v 0.225856 -0.971619 0.140494
+v 0.238341 -0.970242 0.076738
+v 0.253232 -0.954087 0.027101
+v 0.277063 -0.966438 0.009563
+v 0.273522 -0.933353 -0.022199
+v 0.328917 -0.956115 -0.133129
+v 0.340888 -0.975603 0.003945
+v 0.293204 -0.970447 0.549328
+v 0.607577 -0.963736 0.116976
+v -0.932451 0.044030 0.434117
+v -0.676365 -0.978890 -0.017985
+v 0.333069 -0.923996 0.414583
+v 0.593515 -0.967168 0.177037
+v -0.140607 -0.930280 0.327170
+v 0.533907 -0.965228 0.277910
+v 0.530556 -0.960877 0.308411
+v 0.254566 -0.914498 -0.117105
+v 0.251767 -0.910294 -0.072429
+v 0.233172 -0.914003 -0.023143
+v 0.221269 -0.917222 0.012690
+v 0.191567 -0.916212 0.037405
+v 0.206643 -0.920388 0.043573
+v 0.508500 -0.957680 0.348006
+v 0.349373 -0.947933 0.397593
+v -0.890339 0.031711 0.380918
+v -0.935187 0.037063 0.468566
+v -0.940686 0.041100 0.513155
+v -0.939292 0.049199 0.548254
+v 0.106440 -0.919754 0.073941
+v 0.213357 -0.910321 0.458831
+v 0.500093 -0.950045 0.390974
+v 0.482523 -0.957308 0.422282
+v 0.502086 -0.931957 0.480499
+v 0.463963 -0.952025 0.515431
+v 0.259140 -0.946055 0.614220
+v 0.256154 -0.916051 0.353513
+v 0.173707 -0.921680 0.114558
+v 0.260034 -0.956768 -0.172467
+v 0.241588 -0.939621 -0.168890
+v 0.215375 -0.910911 -0.087372
+v 0.265870 -0.927565 -0.150439
+v 0.262457 -0.976082 -0.205715
+v 0.329785 -0.973437 -0.161904
+v 0.340593 -0.975407 -0.203767
+v 0.116454 -0.959719 0.642837
+v 0.445139 -0.953453 0.543732
+v 0.148819 -0.965131 0.540112
+v -0.892274 0.031019 0.404204
+v -0.908094 0.025590 0.446572
+v -0.916953 0.027497 0.542600
+v 0.428195 -0.942213 0.575855
+v 0.275167 -0.944499 0.333778
+v 0.242888 -0.926033 0.324744
+v 0.344187 -0.964157 -0.119197
+v 0.070197 -0.928350 -0.190043
+v 0.265763 -0.970094 -0.183891
+v 0.177914 -0.913657 -0.109034
+v 0.168301 -0.912796 -0.079054
+v 0.133969 -0.915784 0.002544
+v 0.160097 -0.921560 0.164537
+v 0.105018 -0.922092 0.251809
+v -0.853048 0.010972 0.408914
+v -0.901573 0.015386 0.490513
+v -0.917597 0.023003 0.499784
+v 0.205582 -0.970386 -0.195846
+v -0.074060 -0.925195 0.343252
+v 0.135373 -0.964685 0.627855
+v 0.058138 -0.914821 0.448726
+v 0.071001 -0.920831 0.345061
+v 0.106830 -0.981301 -0.277752
+v 0.151851 -0.912687 -0.138868
+v 0.183530 -0.914293 -0.154829
+v 0.174947 -0.928346 -0.171053
+v 0.166099 -0.957262 -0.190180
+v -0.145623 -0.967217 0.657668
+v -0.136963 -0.967007 0.619298
+v 0.248487 -0.910378 0.442366
+v 0.716934 -0.911018 0.276350
+v -0.880515 0.014387 0.449324
+v -0.898011 0.015032 0.523924
+v 0.209946 -0.925232 -0.165213
+v -0.039366 -0.924686 0.306042
+v 0.022873 -0.913723 0.476594
+v 0.145867 -0.968361 0.612656
+v 0.052720 -0.922231 0.301787
+v 0.232729 -0.911638 -0.123418
+v 0.199897 -0.910554 -0.130976
+v 0.231717 -0.915653 -0.143650
+v -0.049360 -0.924597 0.168037
+v 0.122630 -0.922558 0.241906
+v 0.091287 -0.921720 0.114550
+v 0.062002 -0.921918 0.150352
+v 0.057133 -0.921125 0.081083
+v -0.916383 0.035904 0.563717
+v 0.228361 -0.958530 -0.180976
+v -0.018283 -0.967379 0.663122
+v 0.390281 -0.971279 0.057791
+v 0.027834 -0.919943 0.387015
+v 0.065327 -0.914809 -0.115354
+v 0.036994 -0.917889 -0.028809
+v 0.506050 -0.971302 0.130797
+v 0.301748 -0.969490 -0.012233
+v 0.152745 -0.917712 0.066622
+v -0.842533 0.003176 0.390633
+v 0.052438 -0.918221 -0.011313
+v 0.000769 -0.923952 0.281701
+v -0.070217 -0.926711 0.234491
+v 0.026205 -0.922010 0.331586
+v -0.015207 -0.969070 0.622910
+v -0.857826 0.002783 0.474743
+v -0.866624 0.002191 0.505152
+v -0.892853 0.028629 0.578503
+v -0.917128 0.056174 0.591929
+v 0.724803 -0.923140 0.166433
+v 0.005403 -0.968580 0.645794
+v 0.138660 -0.917847 0.032869
+v 0.258864 -0.978283 0.182877
+v 0.247088 -0.975842 0.135982
+v 0.110739 -0.920383 0.130017
+v 0.123149 -0.913986 -0.141520
+v 0.081081 -0.915886 -0.078824
+v 0.099538 -0.914563 -0.111845
+v 0.156219 -0.971602 -0.204918
+v -0.191280 -0.958357 0.664738
+v -0.134819 -0.969719 0.575429
+v 0.114696 -0.914155 -0.085229
+v -0.108988 -0.914272 0.480584
+v -0.850761 0.007172 0.434420
+v -0.874444 0.010168 0.545187
+v -0.882228 0.044595 0.609235
+v 0.001139 -0.923706 0.249039
+v 0.080959 -0.972315 -0.218133
+v -0.164993 -0.965485 0.666223
+v -0.851923 -0.428733 0.258305
+v -0.080635 -0.926289 0.297167
+v -0.885910 0.076442 0.631251
+v -0.832922 -0.000791 0.422279
+v -0.856351 0.001319 0.515802
+v -0.850818 0.010595 0.568298
+v 0.198826 -0.911920 -0.102113
+v -0.009798 -0.923661 0.157795
+v 0.071555 -0.910584 0.498738
+v 0.293966 -0.976444 0.033843
+v 0.120267 -0.916551 -0.165633
+v 0.004830 -0.922034 0.036919
+v 0.355204 -0.973080 -0.137759
+v -0.026360 -0.962306 0.681766
+v -0.815666 -0.009190 0.458740
+v -0.834021 -0.003563 0.482732
+v -0.837785 0.018145 0.591759
+v -0.865109 0.021568 0.587960
+v -0.868078 0.053028 0.623757
+v 0.350842 -0.968446 -0.102303
+v 0.307257 -0.969029 0.316791
+v 0.596137 -0.964934 0.207784
+v 0.568876 -0.960683 0.268794
+v -0.807569 -0.509286 0.162063
+v -0.778312 -0.533737 0.180267
+v -0.187448 -0.966303 0.647741
+v -0.089061 -0.925331 0.327474
+v -0.027662 -0.923761 0.102634
+v 0.335734 -0.971334 0.306830
+v 0.158319 -0.915620 -0.015326
+v 0.180808 -0.912512 -0.067949
+v -0.815772 -0.009004 0.508929
+v -0.814135 -0.002759 0.549459
+v -0.854611 0.036677 0.611840
+v -0.843540 0.067819 0.638609
+v 0.571999 -0.930356 0.347462
+v 0.047455 -0.922496 0.112255
+v 0.020327 -0.917367 0.416998
+v -0.821681 -0.455040 0.280859
+v -0.808205 -0.461817 0.328025
+v -0.796540 -0.021899 0.470015
+v 0.703063 -0.926274 0.227729
+v 0.308873 -0.936421 -0.137062
+v 0.531615 -0.932608 0.379132
+v -0.736983 -0.562918 0.078966
+v -0.806223 -0.506889 0.235525
+v -0.806768 0.005286 0.584808
+v -0.829104 0.035282 0.611446
+v 0.239060 -0.963583 0.603671
+v 0.506195 -0.939439 0.433744
+v 0.239396 -0.969458 0.583107
+v -0.706137 -0.959381 0.133661
+v -0.756013 -0.551125 0.166566
+v -0.791995 -0.523145 0.212146
+v -0.784593 -0.520222 0.257511
+v -0.789155 -0.493936 0.306826
+v 0.428388 -0.974649 0.010984
+v -0.056203 -0.923347 0.336005
+v -0.756660 -0.049810 0.481685
+v -0.767410 -0.029139 0.483639
+v -0.777560 -0.020514 0.497488
+v -0.795655 -0.015266 0.510242
+v -0.800496 -0.003089 0.566103
+v -0.808407 0.075213 0.645496
+v 0.095410 -0.918415 0.382507
+v 0.203909 -0.928268 0.070065
+v 0.255910 -0.969233 0.537151
+v 0.456675 -0.930651 0.560138
+v 0.290788 -0.968291 0.502643
+v -0.711684 -0.586259 0.083391
+v -0.760114 -0.544571 0.191834
+v -0.766006 -0.538922 0.220495
+v -0.785509 -0.508372 0.286412
+v -0.800799 -0.445197 0.370225
+v -0.790430 -0.441949 0.394271
+v -0.028861 -0.925323 0.201039
+v 0.140631 -0.922436 0.198236
+v -0.749299 -0.036913 0.494019
+v -0.785168 0.012158 0.605839
+v -0.804803 0.047816 0.620923
+v 0.113870 -0.919500 0.349188
+v -0.730950 -0.579751 0.160351
+v -0.740488 -0.565477 0.194345
+v -0.759016 -0.539041 0.252852
+v -0.780722 -0.484440 0.358458
+v -0.008125 -0.922830 0.312822
+v 0.408423 -0.973307 -0.042948
+v -0.766904 -0.013919 0.535783
+v -0.801416 0.025882 0.613482
+v -0.774437 0.029972 0.626691
+v 0.265693 -0.977615 0.087330
+v -0.690613 -0.597347 0.064231
+v -0.714971 -0.586945 0.188284
+v -0.737308 -0.568844 0.222381
+v -0.743985 -0.551122 0.258535
+v -0.769319 -0.518426 0.300943
+v -0.779271 -0.433537 0.420571
+v 0.049835 -0.920089 0.369836
+v -0.755422 -0.021775 0.505856
+v -0.773533 -0.005066 0.577945
+v -0.778486 0.000466 0.589608
+v -0.759860 0.044629 0.657694
+v 0.796320 -0.826061 0.371437
+v 0.335819 -0.958488 0.366481
+v 0.343635 -0.969908 0.517213
+v -0.711716 -0.596897 0.126402
+v -0.714662 -0.597026 0.150129
+v -0.747873 -0.542081 0.277494
+v -0.747247 -0.531134 0.320503
+v -0.743111 -0.009208 0.551835
+v -0.752471 0.014631 0.612618
+v -0.768125 0.061739 0.668537
+v -0.639784 -0.612132 0.032589
+v -0.660227 -0.615821 0.070784
+v -0.691048 -0.610400 0.110037
+v -0.759506 -0.513237 0.344674
+v -0.764172 -0.431491 0.443039
+v 0.468937 -0.971602 0.071473
+v 0.830925 -0.861774 0.258198
+v -0.721122 -0.011782 0.528799
+v -0.745423 0.066432 0.682021
+v -0.702983 -0.974970 0.050769
+v -0.633738 -0.620900 0.053925
+v -0.656876 -0.624808 0.092704
+v -0.687445 -0.618793 0.150270
+v -0.703032 -0.604002 0.176448
+v -0.715353 -0.594313 0.233467
+v -0.717236 -0.586499 0.257718
+v -0.724552 -0.564095 0.279546
+v -0.752521 -0.494167 0.394902
+v 0.470951 -0.968317 0.022690
+v 0.650995 -0.954810 0.139656
+v 0.629347 -0.960085 0.125598
+v -0.740404 0.009123 0.602039
+v -0.738425 0.028963 0.644762
+v -0.667519 -0.960553 0.182877
+v -0.694076 -0.978325 0.022546
+v 0.610678 -0.963332 0.198783
+v -0.595505 -0.627811 0.013885
+v -0.665487 -0.627301 0.115377
+v -0.684956 -0.620548 0.180415
+v -0.676801 -0.619305 0.234335
+v -0.723165 -0.550292 0.313861
+v -0.768191 -0.467302 0.406296
+v -0.737782 -0.456695 0.455376
+v -0.706477 0.007195 0.588531
+v -0.702970 0.056797 0.678091
+v 0.583892 -0.955054 0.271797
+v -0.692059 -0.979893 0.053889
+v -0.704272 -0.972190 0.090883
+v 0.564066 -0.953465 0.296226
+v -0.623639 -0.632196 0.067853
+v -0.641537 -0.636850 0.133599
+v -0.661357 -0.634371 0.195776
+v -0.694497 -0.603096 0.263181
+v -0.706985 -0.568859 0.303479
+v -0.735848 -0.528545 0.355950
+v -0.714626 -0.531658 0.382829
+v -0.726172 -0.483692 0.441894
+v -0.690070 0.003070 0.557765
+v -0.714575 0.016389 0.622475
+v 0.557389 -0.924734 0.375202
+v -0.640553 -0.980313 -0.069886
+v -0.651538 -0.982028 -0.045018
+v 0.539267 -0.922202 0.403860
+v -0.599732 -0.635568 0.052701
+v -0.615248 -0.636212 0.089504
+v -0.684977 -0.592696 0.296727
+v -0.711296 -0.550045 0.336898
+v -0.652278 0.009951 0.527473
+v -0.671784 0.019974 0.592034
+v -0.675595 0.049638 0.662564
+v -0.705871 0.037853 0.657252
+v -0.669544 -0.984169 0.011009
+v 0.861878 -0.843970 0.234189
+v -0.591206 -0.643304 0.069696
+v -0.662144 -0.633842 0.168924
+v -0.638490 -0.643087 0.171502
+v -0.653263 -0.635285 0.219577
+v -0.670205 -0.587206 0.324544
+v -0.722261 -0.503604 0.418907
+v -0.528064 -0.653916 0.285474
+v 0.023679 -0.922266 0.127576
+v 0.373492 -0.970182 0.489661
+v 0.012969 -0.923689 0.127463
+v -0.610579 -0.981264 -0.062453
+v -0.683003 -0.980132 0.093405
+v -0.606557 -0.643863 0.103298
+v -0.663030 -0.618897 0.266073
+v -0.684164 -0.560654 0.357517
+v -0.692734 -0.533603 0.404645
+v -0.692171 -0.511465 0.439391
+v -0.683818 -0.491142 0.471782
+v -0.713446 -0.464614 0.473420
+v 0.257107 -0.974442 0.062197
+v -0.618115 -0.984326 -0.037490
+v -0.629877 -0.984440 -0.013839
+v -0.646973 -0.984009 0.063288
+v -0.657790 -0.980025 0.132797
+v 0.803655 -0.841681 0.346130
+v -0.570150 -0.643556 0.042079
+v -0.601959 -0.649912 0.140893
+v -0.624261 -0.648859 0.189896
+v -0.652964 -0.616000 0.291579
+v -0.664462 -0.580233 0.345257
+v -0.057289 -0.917542 0.440764
+v 0.225036 -0.977086 -0.210103
+v -0.579440 -0.983041 -0.078625
+v -0.585135 -0.986502 -0.046968
+v -0.682347 -0.963062 0.163333
+v -0.554931 -0.649456 0.063507
+v -0.573619 -0.652825 0.100701
+v -0.590814 -0.658813 0.163607
+v -0.600022 -0.654766 0.207328
+v -0.622829 -0.643731 0.231122
+v -0.625014 -0.627182 0.286596
+v -0.642630 -0.620802 0.282682
+v -0.694549 -0.458848 0.491815
+v 0.223486 -0.955176 0.617635
+v 0.623656 -0.963471 0.170176
+v 0.208301 -0.967250 0.600084
+v 0.591095 -0.944092 0.300335
+v -0.558798 -0.982849 -0.098530
+v -0.553507 -0.985586 -0.055249
+v -0.593222 -0.986014 0.024894
+v -0.626666 -0.986215 0.031674
+v -0.635593 -0.981733 0.116169
+v -0.661653 -0.977491 0.151008
+v -0.552874 -0.660112 0.107503
+v -0.650522 -0.573009 0.374800
+v 0.239483 -0.969798 0.549280
+v 0.300227 -0.910673 0.434231
+v -0.648174 -0.974547 0.175562
+v -0.576598 -0.662062 0.171896
+v -0.642228 -0.583291 0.363275
+v -0.658376 -0.544386 0.421042
+v -0.632605 -0.546635 0.440360
+v 0.304659 -0.914687 0.391245
+v 0.327369 -0.932150 0.388588
+v -0.528497 -0.985309 -0.079936
+v -0.547301 -0.985097 -0.011610
+v -0.606715 -0.983205 0.110966
+v -0.623151 -0.978649 0.180038
+v -0.535196 -0.668670 0.134881
+v -0.596094 -0.622521 0.318824
+v -0.633022 -0.610026 0.321736
+v -0.635009 -0.489879 0.497295
+v -0.671051 -0.478906 0.490211
+v -0.652739 -0.460812 0.509241
+v 0.345940 -0.968446 0.351195
+v 0.286074 -0.972956 0.018722
+v -0.565893 -0.985189 0.034818
+v -0.539508 -0.671714 0.182132
+v -0.573233 -0.664418 0.192944
+v -0.592402 -0.647321 0.253417
+v -0.593379 -0.631348 0.301648
+v 0.844204 -0.840472 0.299974
+v 0.437973 -0.972793 0.044862
+v 0.455323 -0.970239 0.014633
+v -0.518551 -0.986499 -0.035183
+v -0.602728 -0.977011 0.213450
+v -0.558409 -0.947370 0.602891
+v -0.571983 -0.611963 0.355255
+v -0.597983 -0.608248 0.351956
+v -0.620802 -0.574226 0.402234
+v -0.628988 -0.526708 0.466123
+v -0.615743 -0.474802 0.518286
+v -0.629667 -0.427258 0.539694
+v 0.439968 -0.965410 -0.075365
+v -0.503072 -0.986264 -0.081530
+v -0.520631 -0.985953 0.005773
+v -0.541986 -0.984245 0.057135
+v -0.570028 -0.983626 0.102582
+v -0.584958 -0.979289 0.212233
+v -0.513419 -0.679485 0.191859
+v -0.545666 -0.666638 0.231893
+v -0.533178 -0.660912 0.263791
+v -0.588545 -0.579781 0.417760
+v -0.606963 -0.573115 0.416093
+v 0.635597 -0.940548 0.275962
+v 0.612966 -0.957630 0.233185
+v 0.600925 -0.952701 0.265972
+v 0.422962 -0.971479 -0.030868
+v 0.624179 -0.930418 0.317064
+v -0.461084 -0.980655 -0.128523
+v -0.467415 -0.984454 -0.103001
+v 0.600765 -0.924321 0.341183
+v -0.559134 -0.648572 0.280627
+v -0.550471 -0.609268 0.379586
+v -0.596990 -0.551716 0.455149
+v -0.606274 -0.521956 0.482052
+v -0.588411 -0.470487 0.532498
+v 0.090899 -0.916062 0.423126
+v -0.457884 -0.985753 -0.060302
+v -0.484474 -0.986104 -0.035404
+v -0.503491 -0.984118 0.039239
+v -0.507021 -0.984138 0.125912
+v -0.549858 -0.984745 0.103456
+v -0.590032 -0.981246 0.169023
+v -0.522715 -0.673887 0.228719
+v -0.537345 -0.623471 0.351860
+v -0.438788 -0.985480 -0.111150
+v -0.484597 -0.985484 0.003682
+v -0.526402 -0.982989 0.201319
+v -0.558609 -0.559848 0.461614
+v -0.122695 -0.919745 0.446977
+v -0.339535 -0.974730 -0.323587
+v -0.350699 -0.982787 -0.272794
+v -0.372292 -0.982238 -0.210145
+v -0.375465 -0.982029 -0.194057
+v -0.404630 -0.979532 -0.164884
+v -0.413156 -0.984093 -0.120927
+v -0.446876 -0.984951 -0.030849
+v -0.458457 -0.984258 0.007854
+v -0.514453 -0.983792 0.145019
+v -0.558444 -0.981100 0.233426
+v -0.558393 -0.978953 0.273986
+v -0.581872 -0.973688 0.311615
+v -0.597895 -0.972938 0.342264
+v -0.565547 -0.541328 0.478678
+v -0.474884 -0.983639 0.052201
+v -0.502499 -0.984944 0.096318
+v -0.490731 -0.984692 0.176643
+v -0.565211 -0.976272 0.328112
+v -0.607357 -0.971600 0.374499
+v -0.620848 -0.971036 0.420807
+v -0.629958 -0.966677 0.446981
+v -0.631826 -0.965666 0.463556
+v -0.532588 -0.606164 0.396980
+v -0.524662 -0.549263 0.485705
+v -0.549688 -0.476009 0.543267
+v 0.175674 -0.926666 0.141794
+v -0.298153 -0.977971 -0.359436
+v -0.313601 -0.983904 -0.307755
+v -0.338328 -0.984358 -0.257751
+v -0.383123 -0.984472 -0.136409
+v -0.404923 -0.984177 -0.054172
+v -0.539053 -0.980595 0.240350
+v -0.508978 -0.978520 0.342250
+v -0.534018 -0.585439 0.437133
+v -0.543770 -0.512233 0.513720
+v -0.353452 -0.983983 -0.218593
+v -0.346183 -0.983618 -0.157328
+v -0.371441 -0.982280 -0.108337
+v -0.385058 -0.984712 -0.099889
+v -0.426425 -0.985623 0.067871
+v -0.450838 -0.984453 0.115049
+v -0.479092 -0.984910 0.140407
+v -0.510723 -0.984515 0.237086
+v -0.532856 -0.980990 0.265983
+v -0.574657 -0.975974 0.363196
+v -0.584893 -0.974417 0.392667
+v -0.582024 -0.973137 0.457218
+v -0.606246 -0.973300 0.459549
+v -0.614660 -0.966914 0.509736
+v -0.509471 -0.516195 0.514835
+v -0.290950 -0.984231 -0.303096
+v -0.309852 -0.982410 -0.202384
+v -0.352411 -0.982993 -0.124400
+v -0.415399 -0.983173 0.001768
+v -0.427077 -0.984247 0.109087
+v -0.450222 -0.981995 0.131812
+v -0.461628 -0.980790 0.152140
+v -0.472266 -0.982967 0.185759
+v -0.510658 -0.982938 0.273415
+v -0.620105 -0.958966 0.529739
+v -0.498886 -0.590194 0.440454
+v -0.519466 -0.531628 0.504390
+v -0.289361 -0.982011 -0.234904
+v -0.330203 -0.979992 -0.092692
+v -0.368429 -0.983101 -0.068268
+v -0.387987 -0.983729 -0.009462
+v -0.380782 -0.982587 0.042326
+v -0.443131 -0.970706 0.146783
+v -0.489921 -0.983216 0.260596
+v -0.599409 -0.962799 0.558043
+v -0.231774 -0.983062 -0.332599
+v -0.249321 -0.984036 -0.309195
+v -0.261570 -0.983758 -0.267473
+v -0.292404 -0.978341 -0.180302
+v -0.319279 -0.980533 -0.129360
+v -0.361966 -0.982206 -0.005728
+v -0.411858 -0.983686 0.046842
+v -0.541584 -0.975746 0.386515
+v -0.545846 -0.974101 0.416408
+v -0.562961 -0.973831 0.483047
+v -0.597170 -0.968637 0.541144
+v -0.501414 -0.571119 0.466833
+v -0.469540 -0.522264 0.511771
+v 0.653176 -0.956594 0.169102
+v -0.277720 -0.980618 -0.214538
+v -0.293337 -0.974098 -0.158902
+v -0.314190 -0.976196 -0.105831
+v -0.346892 -0.981842 -0.045718
+v -0.405547 -0.984214 0.098648
+v -0.413627 -0.979407 0.113917
+v -0.422020 -0.973966 0.129843
+v -0.475869 -0.980540 0.276979
+v -0.590068 -0.971767 0.502465
+v -0.566565 -0.971770 0.548912
+v 0.652264 -0.954442 0.187893
+v -0.479600 -0.550013 0.497380
+v 0.633546 -0.954069 0.210568
+v -0.223928 -0.984025 -0.363902
+v -0.252145 -0.979008 -0.226565
+v -0.268884 -0.971037 -0.183908
+v -0.277567 -0.962592 -0.154633
+v -0.295988 -0.963667 -0.110200
+v -0.309835 -0.972967 -0.080771
+v -0.317083 -0.977807 -0.030769
+v -0.378462 -0.963741 0.115939
+v -0.483128 -0.981511 0.309918
+v -0.466757 -0.974337 0.375879
+v -0.507546 -0.975149 0.393973
+v -0.447227 -0.560335 0.487594
+v -0.446439 -0.521679 0.509506
+v -0.460194 -0.496172 0.531196
+v 0.618234 -0.905021 0.361338
+v 0.595482 -0.908791 0.372128
+v 0.581491 -0.900205 0.396436
+v -0.218233 -0.984610 -0.313990
+v -0.235101 -0.981016 -0.246112
+v -0.241673 -0.974787 -0.221191
+v -0.233847 -0.936189 -0.177438
+v -0.261286 -0.940255 -0.147042
+v -0.279366 -0.940944 -0.103944
+v -0.335869 -0.982195 -0.009874
+v -0.349458 -0.982506 0.031785
+v -0.386372 -0.985105 0.074493
+v -0.365213 -0.980411 0.102071
+v -0.457462 -0.977614 0.355096
+v -0.530402 -0.972791 0.476245
+v -0.541061 -0.971601 0.551351
+v -0.567207 -0.968847 0.569380
+v -0.571113 -0.961200 0.584607
+v -0.433437 -0.558404 0.492519
+v -0.194875 -0.983520 -0.333793
+v -0.228654 -0.982981 -0.266484
+v -0.239358 -0.962049 -0.202060
+v -0.246460 -0.923765 -0.141670
+v -0.264895 -0.922419 -0.094116
+v -0.312811 -0.980361 0.000596
+v -0.432465 -0.511105 0.516594
+v -0.428231 -0.496207 0.530549
+v -0.196548 -0.983353 -0.290729
+v -0.178977 -0.981802 -0.260920
+v -0.207069 -0.964361 -0.226627
+v -0.212621 -0.926995 -0.183984
+v -0.225326 -0.922292 -0.157740
+v -0.346812 -0.963417 0.120577
+v -0.487347 -0.973903 0.402784
+v -0.482848 -0.972130 0.466745
+v -0.505131 -0.973545 0.508864
+v -0.412493 -0.503751 0.530228
+v 0.356992 -0.976028 -0.163671
+v -0.208066 -0.976961 -0.246380
+v -0.191709 -0.942795 -0.212720
+v -0.188425 -0.923289 -0.196516
+v -0.233806 -0.921695 -0.132434
+v -0.248152 -0.923217 -0.066397
+v -0.309829 -0.982649 0.024675
+v -0.312496 -0.983822 0.085144
+v -0.457613 -0.973253 0.417136
+v -0.494075 -0.971850 0.520955
+v -0.519825 -0.972259 0.559131
+v -0.514386 -0.971020 0.584544
+v -0.404967 -0.537396 0.522685
+v -0.078294 -0.961659 0.692871
+v -0.198200 -0.919751 -0.179390
+v -0.211056 -0.919221 -0.127912
+v -0.267294 -0.982467 0.053848
+v -0.422622 -0.973143 0.396722
+v -0.438910 -0.972443 0.425963
+v -0.537078 -0.965299 0.596758
+v -0.143482 -0.968713 -0.240984
+v -0.170414 -0.957745 -0.229448
+v -0.169399 -0.932106 -0.211898
+v -0.204569 -0.919231 -0.152728
+v -0.212524 -0.921951 -0.033732
+v -0.296405 -0.982393 0.116567
+v -0.301638 -0.970726 0.130297
+v -0.470027 -0.972248 0.517767
+v 0.373207 -0.972940 -0.212291
+v 0.368384 -0.972954 -0.186218
+v -0.151919 -0.983248 -0.279579
+v -0.158894 -0.917820 -0.159984
+v -0.199673 -0.920202 -0.113032
+v -0.412569 -0.980822 0.367112
+v -0.439955 -0.971062 0.475215
+v -0.481511 -0.970906 0.569480
+v -0.445782 -0.965979 0.595813
+v -0.476272 -0.961792 0.605368
+v -0.146266 -0.979647 -0.257414
+v -0.452955 -0.970862 0.484345
+v -0.134548 -0.947649 -0.224803
+v -0.142216 -0.924130 -0.209724
+v -0.125941 -0.918857 -0.135218
+v -0.213749 -0.923481 -0.002685
+v -0.253135 -0.981873 0.124562
+v -0.273843 -0.983269 0.122603
+v -0.367548 -0.971417 0.413741
+v -0.442587 -0.971192 0.576847
+v -0.097229 -0.982106 -0.269268
+v -0.101109 -0.965365 -0.236417
+v -0.186549 -0.921315 -0.039462
+v -0.272103 -0.978482 0.139759
+v -0.268850 -0.963738 0.157433
+v -0.408100 -0.971180 0.445096
+v -0.427142 -0.971270 0.541757
+v -0.053179 -0.982979 -0.283131
+v -0.096788 -0.936258 -0.218667
+v -0.146440 -0.918228 -0.194134
+v -0.153175 -0.922005 -0.099323
+v -0.240834 -0.982568 0.157161
+v -0.362200 -0.980542 0.378241
+v -0.395725 -0.970722 0.512198
+v -0.095045 -0.976978 -0.248802
+v -0.095390 -0.922006 -0.204457
+v -0.090655 -0.917419 -0.180987
+v -0.096933 -0.918717 -0.134336
+v -0.123128 -0.920457 -0.106313
+v -0.168697 -0.923097 -0.016358
+v -0.183610 -0.922004 0.017857
+v -0.214446 -0.980994 0.115071
+v -0.232357 -0.982085 0.176192
+v -0.248287 -0.955100 0.190453
+v -0.342655 -0.973039 0.401535
+v -0.350072 -0.972570 0.419588
+v -0.357221 -0.970642 0.469359
+v -0.371097 -0.971299 0.469684
+v -0.369320 -0.969282 0.502550
+v -0.490684 -0.678797 0.237998
+# 8710 vertices, 0 vertices normals
+
+f 3 8245 4
+f 7 8 9
+f 10 7883 11
+f 12 7909 13
+f 8170 16 17
+f 19 3353 20
+f 3895 1205 21
+f 21 7989 22
+f 23 1250 17
+f 35 24 7508
+f 12 26 4035
+f 32 566 1
+f 1 2 33
+f 1 7889 8247
+f 30 4 5
+f 6 8092 28
+f 8 10 9
+f 11 12 34
+f 13 14 26
+f 7852 7508 15
+f 14 7852 15
+f 8170 17 25
+f 8170 7933 16
+f 16 18 22
+f 19 20 3895
+f 16 22 23
+f 7508 6791 15
+f 12 4035 34
+f 10 34 27
+f 8092 9 4237
+f 7848 28 29
+f 32 3 4
+f 1 8247 3
+f 1 33 7889
+f 30 31 4
+f 7852 35 7508
+f 24 8170 25
+f 16 23 17
+f 19 3895 21
+f 31 32 4
+f 32 1 3
+f 10 11 34
+f 14 15 26
+f 18 19 22
+f 19 21 22
+f 7848 29 30
+f 12 13 26
+f 24 25 7508
+f 7848 6 28
+f 10 27 9
+f 8092 4237 28
+f 8092 7 9
+f 5 7848 30
+f 36 37 38
+f 39 40 41
+f 40 42 8576
+f 46 47 5438
+f 48 49 50
+f 50 49 8704
+f 51 8659 8684
+f 52 53 8628
+f 53 54 8589
+f 36 39 37
+f 39 42 40
+f 8666 44 8693
+f 44 46 45
+f 55 49 48
+f 49 51 8685
+f 51 52 8659
+f 55 53 52
+f 36 44 42
+f 36 42 39
+f 43 44 8666
+f 44 47 46
+f 55 52 51
+f 55 51 49
+f 36 47 44
+f 42 44 43
+f 55 54 53
+f 54 47 36
+f 47 54 55
+f 57 58 59
+f 57 60 58
+f 8031 61 62
+f 67 68 69
+f 64 67 66
+f 70 71 8146
+f 73 75 74
+f 76 56 7940
+f 57 77 60
+f 77 61 8031
+f 61 64 63
+f 64 66 65
+f 66 67 78
+f 78 67 7894
+f 64 68 67
+f 79 70 7905
+f 71 73 72
+f 75 80 81
+f 76 57 56
+f 57 61 77
+f 64 73 71
+f 64 71 68
+f 73 80 75
+f 80 61 76
+f 76 61 57
+f 68 71 79
+f 79 71 70
+f 80 64 61
+f 64 80 73
+f 8588 82 83
+f 84 85 86
+f 87 8676 88
+f 8676 8701 89
+f 3727 92 93
+f 3727 3729 3858
+f 3727 3858 92
+f 95 8678 8649
+f 97 8620 8588
+f 83 84 86
+f 88 8676 89
+f 90 91 94
+f 98 3727 93
+f 91 98 93
+f 88 8649 96
+f 8588 83 86
+f 90 8702 95
+f 90 94 8702
+f 96 97 87
+f 97 8588 86
+f 88 95 8649
+f 97 86 87
+f 89 90 95
+f 91 93 94
+f 88 89 95
+f 87 88 96
+f 3578 5273 2823
+f 2025 3985 368
+f 354 6212 105
+f 105 107 354
+f 860 548 443
+f 6185 354 443
+f 4544 4510 4268
+f 433 109 260
+f 109 207 1296
+f 534 3584 252
+f 468 113 114
+f 113 116 114
+f 115 229 669
+f 116 115 669
+f 1933 415 1590
+f 118 299 3576
+f 6185 443 3246
+f 634 120 422
+f 669 229 196
+f 124 933 1463
+f 112 1063 5111
+f 4468 125 4433
+f 347 3019 3103
+f 1994 1590 131
+f 133 81 80
+f 3985 2025 3732
+f 2648 134 624
+f 1425 1426 1374
+f 4499 4226 259
+f 258 4331 4593
+f 4610 142 150
+f 143 4610 150
+f 138 143 241
+f 1909 196 1811
+f 215 626 202
+f 150 142 3230
+f 3013 1979 3967
+f 4714 1029 1887
+f 4824 1198 174
+f 3025 185 3936
+f 3520 3852 2977
+f 101 2889 569
+f 2114 368 104
+f 2114 104 3672
+f 147 2149 148
+f 332 126 303
+f 231 1757 444
+f 150 3230 356
+f 5614 3809 151
+f 307 4492 152
+f 1899 178 1897
+f 4507 4491 4506
+f 153 4624 1900
+f 310 166 177
+f 6033 1969 4579
+f 4230 8489 156
+f 6201 8698 8697
+f 3916 158 159
+f 105 408 107
+f 434 138 241
+f 2138 2110 161
+f 3466 162 163
+f 166 434 1358
+f 668 887 167
+f 107 792 283
+f 175 144 208
+f 236 3132 393
+f 3132 310 393
+f 1971 149 298
+f 178 150 1897
+f 4514 4604 183
+f 151 3809 182
+f 121 186 122
+f 4249 192 193
+f 111 476 235
+f 283 792 433
+f 1099 1902 198
+f 164 144 391
+f 3554 153 3639
+f 199 5872 200
+f 2154 4708 201
+f 443 476 192
+f 4336 160 1935
+f 204 205 206
+f 2444 447 448
+f 176 1597 225
+f 3566 3567 3657
+f 453 478 747
+f 209 361 165
+f 210 1061 2263
+f 4618 1936 284
+f 424 858 203
+f 216 3574 295
+f 468 469 113
+f 1619 117 1652
+f 1092 3177 252
+f 202 626 424
+f 4403 197 123
+f 203 126 332
+f 114 116 670
+f 113 856 116
+f 119 468 114
+f 220 246 4768
+f 4619 4485 6202
+f 222 4514 183
+f 217 3593 3520
+f 3584 365 222
+f 478 628 223
+f 223 628 224
+f 20 2443 3606
+f 226 227 3740
+f 3005 3159 3664
+f 100 1542 3159
+f 948 1933 1934
+f 1971 948 1934
+f 3860 188 228
+f 2107 417 2041
+f 116 856 115
+f 670 116 669
+f 1757 176 444
+f 6635 233 421
+f 1757 231 271
+f 256 255 234
+f 246 1264 236
+f 391 144 175
+f 1935 4433 237
+f 207 468 119
+f 742 207 119
+f 1358 434 241
+f 800 827 2095
+f 2000 620 658
+f 1597 1061 210
+f 444 176 225
+f 225 1597 210
+f 231 444 510
+f 247 487 453
+f 247 254 487
+f 195 127 708
+f 424 1757 127
+f 233 235 421
+f 2000 821 620
+f 1296 207 742
+f 250 2049 251
+f 2132 243 4473
+f 253 444 516
+f 254 195 708
+f 127 1757 271
+f 708 127 271
+f 1897 150 356
+f 2263 1061 1706
+f 4473 243 4474
+f 260 109 1296
+f 2782 359 1374
+f 1329 4411 261
+f 3568 3583 5306
+f 204 266 267
+f 291 4333 257
+f 4485 2068 146
+f 269 270 246
+f 246 236 4768
+f 4392 4398 1066
+f 549 271 479
+f 479 271 253
+f 271 510 253
+f 4379 141 179
+f 274 530 1618
+f 4449 286 335
+f 4345 1992 2132
+f 2866 3423 1889
+f 275 3606 276
+f 166 1358 177
+f 277 3628 4783
+f 1062 4951 1126
+f 516 444 445
+f 128 370 129
+f 282 175 327
+f 241 143 178
+f 335 336 859
+f 511 3706 285
+f 1973 4865 4855
+f 4868 263 1937
+f 2051 1966 2021
+f 970 448 217
+f 1964 330 288
+f 575 316 1927
+f 1066 268 409
+f 154 270 269
+f 2016 154 269
+f 453 747 290
+f 4302 4550 4450
+f 289 273 439
+f 3177 3672 3897
+f 310 177 393
+f 311 4392 1064
+f 8223 3138 553
+f 4333 123 257
+f 2481 535 323
+f 2872 2943 2959
+f 625 258 4593
+f 860 107 106
+f 107 283 106
+f 4517 1901 230
+f 1396 6098 6743
+f 6635 290 480
+f 4379 4383 141
+f 332 303 1597
+f 3584 222 252
+f 179 141 667
+f 354 107 860
+f 283 433 260
+f 143 150 178
+f 4316 4314 489
+f 312 313 5139
+f 340 5139 313
+f 340 341 5153
+f 5165 341 342
+f 4398 268 1066
+f 315 316 575
+f 4157 4800 4723
+f 130 297 486
+f 3549 734 3587
+f 3005 294 318
+f 324 2007 2008
+f 181 4859 4335
+f 261 4491 4507
+f 326 1776 783
+f 175 208 327
+f 4436 319 139
+f 3595 3932 295
+f 330 2264 288
+f 4383 4389 292
+f 2918 318 188
+f 3776 4432 1534
+f 349 307 152
+f 3852 2451 5253
+f 338 339 312
+f 312 339 313
+f 340 380 341
+f 5066 3698 4745
+f 1919 344 2063
+f 1409 549 315
+f 4313 625 4705
+f 3049 2973 347
+f 4302 4450 409
+f 348 308 349
+f 611 350 1797
+f 1393 2890 2848
+f 391 175 282
+f 1897 356 357
+f 358 1919 1128
+f 3560 728 3587
+f 360 361 209
+f 1967 361 360
+f 316 330 1927
+f 128 2883 281
+f 421 290 6635
+f 139 319 216
+f 3860 228 2762
+f 3391 1233 3474
+f 128 281 370
+f 5413 7555 7159
+f 375 1935 160
+f 4904 5217 4565
+f 378 379 1196
+f 338 333 339
+f 313 403 340
+f 340 403 380
+f 404 342 341
+f 380 404 341
+f 381 314 342
+f 404 381 342
+f 381 382 314
+f 384 385 4967
+f 383 386 346
+f 823 351 507
+f 5981 388 389
+f 303 391 1597
+f 356 3230 536
+f 1287 1967 360
+f 402 224 1835
+f 729 3937 3024
+f 1971 513 948
+f 426 425 3628
+f 565 99 2104
+f 407 740 511
+f 3811 456 6925
+f 2394 2844 2946
+f 3005 3664 294
+f 948 415 1933
+f 376 333 338
+f 339 462 313
+f 462 403 313
+f 404 464 381
+f 429 382 381
+f 464 429 381
+f 465 383 382
+f 465 386 383
+f 2291 3168 982
+f 924 431 657
+f 194 406 410
+f 408 105 969
+f 408 791 107
+f 3806 220 3627
+f 107 791 792
+f 5686 4367 4679
+f 4360 179 249
+f 3519 3628 277
+f 1430 415 948
+f 3273 416 612
+f 417 3800 450
+f 136 2052 418
+f 5517 419 308
+f 417 3584 534
+f 5076 1070 642
+f 3855 399 2447
+f 428 4315 3949
+f 2271 2268 1201
+f 460 461 339
+f 333 460 339
+f 339 461 462
+f 462 463 403
+f 463 380 403
+f 463 495 380
+f 380 495 404
+f 498 465 382
+f 429 498 382
+f 430 386 465
+f 1910 2099 4295
+f 657 432 1722
+f 792 1032 433
+f 6887 437 438
+f 3024 3937 3604
+f 611 431 924
+f 1032 441 109
+f 433 1032 109
+f 4383 292 141
+f 444 225 445
+f 414 1979 3013
+f 3624 139 3625
+f 2934 4267 652
+f 247 449 254
+f 421 453 290
+f 210 2263 2264
+f 2531 3532 493
+f 4528 1034 1130
+f 455 1033 4908
+f 7010 7017 7555
+f 5186 457 7360
+f 321 5210 7013
+f 906 458 1842
+f 2289 1379 2500
+f 3782 3463 6412
+f 404 495 464
+f 464 497 429
+f 497 498 429
+f 467 5822 3016
+f 441 4600 207
+f 109 441 207
+f 207 4600 468
+f 1067 856 113
+f 469 1067 113
+f 6711 4199 6834
+f 431 432 657
+f 1723 1797 323
+f 472 473 474
+f 474 1595 2887
+f 1774 509 475
+f 548 449 476
+f 4604 565 183
+f 480 290 1410
+f 3773 3962 1996
+f 1927 330 1964
+f 484 6731 485
+f 488 1287 359
+f 4314 4466 489
+f 2286 490 1119
+f 8166 8145 8144
+f 491 492 2273
+f 7024 7025 2338
+f 459 524 460
+f 559 461 460
+f 525 462 461
+f 559 525 461
+f 462 525 463
+f 525 2471 463
+f 463 2471 495
+f 495 496 464
+f 464 496 497
+f 529 465 498
+f 499 430 465
+f 529 499 465
+f 499 500 430
+f 432 823 1722
+f 2862 501 3219
+f 4072 491 2273
+f 856 859 115
+f 7071 504 3728
+f 859 546 229
+f 115 859 229
+f 509 239 1683
+f 449 548 215
+f 153 1900 3639
+f 225 210 445
+f 290 364 1410
+f 1927 1964 2017
+f 2092 948 513
+f 273 3162 439
+f 511 741 450
+f 479 253 316
+f 487 478 453
+f 518 519 4073
+f 492 520 2273
+f 399 3855 631
+f 494 558 459
+f 459 558 524
+f 460 524 559
+f 525 593 2471
+f 496 2507 497
+f 2631 519 2248
+f 497 654 498
+f 654 529 498
+f 4210 3110 4286
+f 531 532 533
+f 486 3934 435
+f 8299 558 494
+f 3349 3196 369
+f 482 317 632
+f 790 248 503
+f 1722 823 507
+f 547 509 1503
+f 548 626 215
+f 478 487 628
+f 364 749 1410
+f 1926 575 1927
+f 480 452 551
+f 317 2514 4273
+f 316 253 516
+f 584 585 5169
+f 3530 5245 490
+f 556 685 1102
+f 4957 557 7088
+f 590 591 524
+f 558 590 524
+f 591 559 524
+f 559 592 525
+f 525 592 593
+f 823 901 351
+f 527 599 816
+f 1253 768 528
+f 1856 2209 562
+f 560 817 1145
+f 654 605 529
+f 605 606 499
+f 529 605 499
+f 499 606 500
+f 3776 608 853
+f 789 532 531
+f 8410 566 5820
+f 544 569 3748
+f 790 535 248
+f 357 536 4741
+f 4741 536 4482
+f 5488 5703 6607
+f 1503 509 1774
+f 4109 139 3624
+f 2055 2150 1962
+f 1127 470 2416
+f 4236 577 1189
+f 1843 582 1068
+f 297 638 296
+f 585 678 586
+f 490 5245 1119
+f 588 5605 7180
+f 3764 2687 2685
+f 3884 2531 493
+f 3009 6974 4955
+f 591 2518 559
+f 559 2518 592
+f 594 2162 595
+f 721 1401 1041
+f 2209 601 562
+f 563 1856 562
+f 786 650 560
+f 781 609 610
+f 532 1372 533
+f 5345 2781 2203
+f 1532 6901 4156
+f 651 613 614
+f 272 532 789
+f 1532 571 617
+f 571 3798 2105
+f 4213 353 1655
+f 850 1144 1456
+f 4681 3278 4663
+f 626 858 424
+f 5245 1098 627
+f 271 231 510
+f 4624 414 1900
+f 1873 4873 827
+f 636 675 576
+f 482 632 3335
+f 675 710 633
+f 576 675 633
+f 539 4687 4335
+f 1964 288 1728
+f 480 1410 452
+f 639 585 584
+f 639 678 585
+f 1119 5245 627
+f 766 1012 815
+f 2368 956 2369
+f 6974 643 4955
+f 682 684 590
+f 684 591 590
+f 684 2518 591
+f 2521 647 592
+f 768 1253 600
+f 598 650 786
+f 650 817 560
+f 604 722 603
+f 2250 652 326
+f 653 7322 545
+f 605 1674 606
+f 6572 6574 5627
+f 2365 1532 617
+f 571 2322 617
+f 3105 659 274
+f 2481 3295 660
+f 533 1372 738
+f 2322 571 2105
+f 6607 5703 5493
+f 1280 621 737
+f 1280 663 621
+f 5802 4558 665
+f 671 261 4507
+f 165 4617 1202
+f 4328 888 4359
+f 172 4325 173
+f 114 670 673
+f 628 708 629
+f 224 628 629
+f 747 364 290
+f 6985 3751 553
+f 1965 575 1926
+f 1938 709 1965
+f 675 833 710
+f 751 677 676
+f 3397 550 555
+f 677 639 584
+f 1614 702 766
+f 810 1120 966
+f 689 646 1117
+f 2369 1018 1048
+f 702 648 690
+f 1953 1342 1282
+f 771 600 692
+f 601 1057 649
+f 562 601 649
+f 950 773 694
+f 694 650 598
+f 990 775 693
+f 693 773 950
+f 4710 2359 1587
+f 775 990 991
+f 1621 2189 696
+f 3173 732 4332
+f 1564 854 853
+f 3267 1348 1563
+f 701 640 4017
+f 2481 350 3295
+f 1614 1613 702
+f 704 2652 2861
+f 1613 596 702
+f 2087 4778 897
+f 669 196 1879
+f 3872 3816 5869
+f 119 114 673
+f 3573 734 3549
+f 858 1295 203
+f 709 575 1965
+f 1378 1409 748
+f 833 675 674
+f 674 675 636
+f 751 676 710
+f 711 639 677
+f 712 678 639
+f 711 712 639
+f 873 1176 527
+f 561 716 1405
+f 646 720 641
+f 600 1276 692
+f 722 735 2739
+f 716 726 717
+f 612 1357 3273
+f 353 4213 4238
+f 2290 1853 733
+f 1853 697 733
+f 705 1872 737
+f 1315 4575 1157
+f 736 725 779
+f 511 740 741
+f 158 3955 159
+f 825 260 1296
+f 203 1295 126
+f 193 192 111
+f 111 235 233
+f 3955 407 159
+f 629 708 549
+f 268 4302 409
+f 1835 224 1378
+f 750 298 6422
+f 833 834 710
+f 802 751 710
+f 834 802 710
+f 752 677 751
+f 752 711 677
+f 804 712 711
+f 458 754 755
+f 705 737 1318
+f 955 758 757
+f 759 616 2033
+f 762 761 879
+f 1111 989 763
+f 764 3052 973
+f 702 690 766
+f 2085 768 769
+f 770 771 1247
+f 649 1057 2009
+f 772 878 773
+f 774 650 878
+f 1013 877 775
+f 877 772 773
+f 1752 695 1885
+f 1013 775 991
+f 1313 777 778
+f 732 776 245
+f 2082 782 2345
+f 2790 2739 2207
+f 700 2790 2207
+f 3451 1872 705
+f 965 1026 788
+f 570 272 789
+f 274 2791 530
+f 1498 924 779
+f 697 617 855
+f 790 2161 535
+f 2290 733 735
+f 822 981 782
+f 857 260 825
+f 192 476 111
+f 628 254 708
+f 549 708 271
+f 379 793 794
+f 747 223 402
+f 748 1409 709
+f 796 797 798
+f 802 803 751
+f 803 752 751
+f 803 835 752
+f 836 711 752
+f 836 804 711
+f 955 1059 758
+f 807 838 1026
+f 1084 919 1615
+f 1091 1114 813
+f 812 883 813
+f 814 766 815
+f 768 2085 851
+f 599 770 816
+f 599 820 770
+f 4155 683 3142
+f 776 2680 245
+f 822 2161 981
+f 5905 4026 4475
+f 2208 1723 824
+f 2791 570 789
+f 4600 1065 468
+f 468 1065 469
+f 233 826 193
+f 228 828 1929
+f 3856 4326 1565
+f 831 891 799
+f 2000 658 6733
+f 866 833 799
+f 893 834 833
+f 867 803 802
+f 867 835 803
+f 836 752 835
+f 1084 1351 2387
+f 1042 838 807
+f 1042 1319 838
+f 808 839 762
+f 692 1276 761
+f 643 841 4955
+f 1054 2028 842
+f 771 839 1247
+f 845 1111 884
+f 846 762 847
+f 2376 1221 1121
+f 1221 1218 1121
+f 875 1176 848
+f 2085 2084 851
+f 770 1247 816
+f 527 817 774
+f 774 817 650
+f 998 3245 1798
+f 526 527 774
+f 949 998 1798
+f 1144 850 958
+f 1144 958 851
+f 1401 882 852
+f 853 1222 1187
+f 699 700 1248
+f 2208 1888 1723
+f 1888 2261 2059
+f 2985 3255 3192
+f 2986 2985 3192
+f 2985 2640 2711
+f 3255 2985 2711
+f 736 2244 659
+f 469 1065 1067
+f 283 260 857
+f 858 283 857
+f 106 283 858
+f 2026 546 859
+f 2026 861 546
+f 5294 964 862
+f 861 1721 546
+f 164 742 144
+f 750 1970 298
+f 476 453 235
+f 7330 7994 863
+f 889 910 829
+f 864 889 4993
+f 910 865 829
+f 829 865 831
+f 911 799 891
+f 911 866 799
+f 866 893 833
+f 867 802 834
+f 893 867 834
+f 894 837 836
+f 762 692 761
+f 1116 1596 2009
+f 3663 405 872
+f 3372 873 959
+f 788 818 946
+f 1114 812 813
+f 814 815 849
+f 991 1278 1013
+f 527 816 817
+f 3245 3228 1798
+f 847 879 880
+f 2261 901 2059
+f 1097 8034 2806
+f 882 689 1117
+f 736 3493 725
+f 2935 3027 2711
+f 4740 3803 135
+f 126 825 303
+f 3078 3146 4531
+f 973 767 764
+f 1197 4715 4578
+f 144 886 208
+f 130 3747 132
+f 6894 6986 7141
+f 8204 7874 3605
+f 909 910 889
+f 831 865 891
+f 892 893 866
+f 944 892 866
+f 893 912 867
+f 913 835 867
+f 912 913 867
+f 979 836 835
+f 979 894 836
+f 643 7066 841
+f 761 1276 1254
+f 248 660 1641
+f 917 896 1914
+f 1178 2766 1246
+f 702 596 648
+f 919 719 1615
+f 2163 691 1044
+f 951 1146 876
+f 526 774 878
+f 946 1090 899
+f 641 720 1175
+f 1151 809 1312
+f 1090 691 811
+f 735 733 1796
+f 789 531 530
+f 303 825 164
+f 572 3799 577
+f 3553 3554 3639
+f 582 1843 1834
+f 7778 909 8446
+f 7360 457 7383
+f 940 865 910
+f 941 942 891
+f 865 941 891
+f 942 911 891
+f 911 944 866
+f 945 893 892
+f 945 912 893
+f 913 979 835
+f 1039 894 979
+f 914 1399 915
+f 785 917 918
+f 1251 919 1084
+f 1399 602 915
+f 1016 598 787
+f 1569 1394 953
+f 3194 1569 1481
+f 1953 987 921
+f 3946 922 3936
+f 946 2379 760
+f 715 483 2000
+f 1671 611 924
+f 838 1252 1026
+f 947 1177 1592
+f 278 4838 4831
+f 5753 3963 929
+f 930 573 6417
+f 932 1879 2080
+f 1404 6942 6943
+f 937 5381 938
+f 6729 7588 6718
+f 1035 939 909
+f 7778 1035 909
+f 974 910 909
+f 939 974 909
+f 974 940 910
+f 976 865 940
+f 865 976 941
+f 943 911 942
+f 943 944 911
+f 944 945 892
+f 978 912 945
+f 978 913 912
+f 1039 980 894
+f 949 807 1106
+f 811 1395 900
+f 953 954 895
+f 1107 1027 1059
+f 840 1146 951
+f 1265 4594 931
+f 923 589 1056
+f 895 961 923
+f 962 963 1724
+f 4217 129 3076
+f 755 754 920
+f 4389 311 4470
+f 172 173 905
+f 131 426 3628
+f 424 203 1757
+f 1992 4345 4551
+f 5910 3926 5389
+f 1970 1971 298
+f 4672 408 969
+f 3402 521 6443
+f 974 975 940
+f 975 976 940
+f 1006 941 976
+f 977 942 941
+f 1006 977 941
+f 977 943 942
+f 1007 944 943
+f 1104 1007 943
+f 1007 945 944
+f 1008 913 978
+f 2748 1082 1009
+f 2289 2500 983
+f 1018 984 1050
+f 1086 1043 985
+f 816 1145 817
+f 2366 719 2367
+f 1010 1422 1056
+f 2374 1087 844
+f 2965 1476 994
+f 1476 1181 994
+f 995 1016 956
+f 719 997 995
+f 812 1001 846
+f 144 145 886
+f 4672 791 408
+f 4389 4470 292
+f 972 1005 554
+f 1035 1036 939
+f 1036 1073 974
+f 939 1036 974
+f 1073 1074 974
+f 974 1074 975
+f 975 1006 976
+f 945 1079 978
+f 1079 1008 978
+f 1080 913 1008
+f 1081 980 1039
+f 1081 1082 980
+f 2446 2147 781
+f 1012 1285 1000
+f 786 1011 1050
+f 882 1117 843
+f 2101 4161 124
+f 1015 949 1106
+f 811 900 1120
+f 851 1243 528
+f 1317 1677 2396
+f 4984 1019 1020
+f 1022 1023 2119
+f 1286 1342 1953
+f 1021 1024 663
+f 766 690 952
+f 998 1456 1028
+f 1143 947 1646
+f 3773 3575 3962
+f 791 284 792
+f 4369 311 1064
+f 792 284 1032
+f 1032 4538 441
+f 4392 1066 4468
+f 4538 4600 441
+f 4911 5010 1864
+f 6948 1003 5747
+f 1034 521 3402
+f 7018 5182 7450
+f 1035 7778 8509
+f 1075 1037 975
+f 1074 1075 975
+f 1037 1076 1006
+f 975 1037 1006
+f 1077 977 1006
+f 1076 1077 1006
+f 1077 1078 977
+f 1078 1137 943
+f 977 1078 943
+f 1137 1104 943
+f 1007 1105 945
+f 1105 1079 945
+f 1079 1139 1008
+f 1139 1080 1008
+f 1038 913 1080
+f 1038 979 913
+f 1038 1039 979
+f 1040 256 234
+f 986 739 897
+f 815 1012 1000
+f 1049 813 2371
+f 2503 2085 2737
+f 1616 1218 1221
+f 1645 882 1401
+f 594 1052 1013
+f 1012 952 1285
+f 876 849 1055
+f 846 808 762
+f 1564 561 1405
+f 1002 2344 1047
+f 4972 1060 3541
+f 1061 327 1706
+f 1462 5217 4904
+f 4600 262 1065
+f 1065 4449 1067
+f 6890 7143 6978
+f 7407 5182 7018
+f 8509 1131 1035
+f 1131 1103 1036
+f 1035 1131 1036
+f 1036 1103 1073
+f 1104 1138 1007
+f 1138 1105 1007
+f 1080 1140 1038
+f 1140 1039 1038
+f 1140 1081 1039
+f 1082 1109 1009
+f 1109 1083 1009
+f 1243 851 958
+f 950 694 1016
+f 1394 1085 1086
+f 1055 815 1000
+f 1059 1089 1591
+f 1370 1950 819
+f 1463 155 993
+f 882 843 852
+f 2820 1913 214
+f 956 1016 1018
+f 1093 2136 2062
+f 914 915 2183
+f 1106 1107 1059
+f 787 984 1016
+f 1245 1143 1094
+f 1096 1116 1057
+f 1123 1021 663
+f 1122 1280 918
+f 187 740 411
+f 1099 1100 1902
+f 1124 1125 1062
+f 148 2149 167
+f 1067 4449 856
+f 856 4449 859
+f 1064 4392 4468
+f 1275 471 1025
+f 5245 7166 4713
+f 2685 2451 3852
+f 1102 4908 5000
+f 5360 6355 6301
+f 5483 5192 102
+f 5132 485 587
+f 1165 1103 1131
+f 1103 1133 1073
+f 1073 1133 1074
+f 1133 1134 1075
+f 1074 1133 1075
+f 1134 1135 1037
+f 1075 1134 1037
+f 1135 1136 1076
+f 1037 1135 1076
+f 1076 1136 1077
+f 1136 1168 1078
+f 1077 1136 1078
+f 1078 1168 1137
+f 1105 1139 1079
+f 1171 1080 1139
+f 1080 1171 1140
+f 1174 1082 1081
+f 1141 1174 1081
+f 1082 1174 1109
+f 1109 1108 1083
+f 563 562 1342
+f 1286 563 1342
+f 1026 1616 1027
+f 1110 986 1750
+f 1286 923 961
+f 990 693 1113
+f 3342 3007 1746
+f 1107 1026 1027
+f 1119 681 2117
+f 1023 1180 3145
+f 2371 813 883
+f 1231 1245 1094
+f 3791 2164 3006
+f 1119 627 681
+f 1112 2389 1701
+f 1122 1123 1280
+f 1155 1124 2761
+f 1193 1155 2761
+f 1640 1721 861
+f 1887 1029 574
+f 932 669 1879
+f 625 4593 4348
+f 2468 1161 6886
+f 5182 3756 7450
+f 3668 90 8701
+f 992 4162 1132
+f 1209 1165 1131
+f 1165 1133 1103
+f 1165 1166 1133
+f 1104 1137 1138
+f 1105 1170 1139
+f 1141 1081 1140
+f 1173 1141 1140
+f 4284 4283 725
+f 693 877 773
+f 1046 1231 1345
+f 2354 811 874
+f 2064 2087 739
+f 1247 839 1284
+f 560 1145 1011
+f 2247 652 2250
+f 757 758 1219
+f 6679 1148 6678
+f 1001 812 1114
+f 2083 1095 2247
+f 1149 1246 809
+f 1150 1149 1151
+f 1701 2452 1159
+f 1153 930 6416
+f 1194 2289 983
+f 1124 1155 1125
+f 4575 422 1157
+f 1122 1475 1123
+f 4469 4461 166
+f 1160 670 932
+f 670 669 932
+f 145 673 1160
+f 673 670 1160
+f 5111 1063 4878
+f 6964 7174 1162
+f 1451 869 640
+f 6008 6584 5481
+f 1166 1167 1134
+f 1133 1166 1134
+f 1167 1237 1135
+f 1134 1167 1135
+f 1238 1136 1135
+f 1238 1211 1136
+f 1211 1168 1136
+f 1169 1137 1168
+f 1137 1212 1138
+f 1138 1212 1105
+f 1105 1212 1170
+f 1170 1213 1139
+f 1139 1213 1171
+f 1171 1172 1140
+f 1140 1172 1173
+f 1173 1216 1141
+f 1141 1216 1174
+f 879 881 880
+f 1121 1218 760
+f 2415 1312 1175
+f 1175 1312 988
+f 2183 915 2494
+f 1177 963 962
+f 1592 1177 962
+f 1178 1149 1150
+f 1046 1245 1231
+f 850 1456 949
+f 589 2363 2341
+f 1181 1150 1182
+f 1344 1186 1184
+f 1344 1185 1186
+f 3425 4235 4490
+f 2765 3040 1192
+f 627 1098 1152
+f 1193 2804 1155
+f 2568 2612 1125
+f 1155 2568 1125
+f 5862 5809 5861
+f 242 3078 4531
+f 1198 201 4621
+f 4511 4345 2022
+f 888 625 4313
+f 1200 2270 1201
+f 1203 1204 1508
+f 6379 7347 438
+f 1208 5294 862
+f 1210 1236 1165
+f 1236 1166 1165
+f 1236 1302 1166
+f 1302 1167 1166
+f 1303 1237 1167
+f 1237 1238 1135
+f 1169 1168 1211
+f 1169 1212 1137
+f 1272 1213 1170
+f 1212 1272 1170
+f 1213 1214 1171
+f 1214 1172 1171
+f 1172 1273 1173
+f 1273 1215 1173
+f 1173 1215 1216
+f 1174 1242 1109
+f 1109 1242 1217
+f 1087 1219 844
+f 2362 1422 1010
+f 874 1120 810
+f 987 763 2364
+f 1477 1972 1750
+f 1476 1178 1150
+f 598 786 787
+f 847 1142 883
+f 4422 1185 4410
+f 2731 1068 3693
+f 1284 839 1001
+f 916 2766 1178
+f 757 1219 1254
+f 1228 1229 1227
+f 2344 4029 1047
+f 2672 541 3471
+f 537 1230 219
+f 2415 3014 1312
+f 1090 811 899
+f 1060 991 1251
+f 690 648 1086
+f 2860 1289 2568
+f 4654 1420 1452
+f 1157 1421 1158
+f 1261 806 1196
+f 1292 378 1196
+f 806 1292 1196
+f 4235 1232 4490
+f 5180 238 2831
+f 972 554 632
+f 1297 5000 1234
+f 6899 6905 6986
+f 935 6914 3459
+f 5936 7317 5899
+f 590 8325 682
+f 1210 1235 1236
+f 1237 1269 1238
+f 1239 1271 1212
+f 1169 1239 1212
+f 1271 1272 1212
+f 1240 1213 1272
+f 1240 1214 1213
+f 1240 1241 1214
+f 1214 1241 1172
+f 1241 1273 1172
+f 1310 1174 1216
+f 1215 1310 1216
+f 1310 1242 1174
+f 1060 695 991
+f 562 649 1045
+f 1053 1243 1106
+f 680 1017 1345
+f 878 650 694
+f 1312 3014 1151
+f 1244 541 2100
+f 1046 1192 1245
+f 528 1243 955
+f 6969 1248 1249
+f 849 815 1055
+f 8484 1250 5241
+f 1251 1113 997
+f 1319 1252 838
+f 1253 955 757
+f 839 692 762
+f 1254 1253 757
+f 1157 1158 395
+f 2772 1187 4268
+f 541 1258 3471
+f 1096 1115 1116
+f 1395 1058 1314
+f 1018 1050 1048
+f 3365 3513 1112
+f 806 1262 1263
+f 907 908 154
+f 908 1264 270
+f 154 908 270
+f 1265 4067 2061
+f 5186 7360 7347
+f 1163 6916 1207
+f 3976 3411 2608
+f 5647 5679 6523
+f 7198 7216 5048
+f 1235 1301 1236
+f 1301 1302 1236
+f 1336 1167 1302
+f 1336 1303 1167
+f 1362 1237 1303
+f 1237 1362 1269
+f 1270 1238 1269
+f 1270 1211 1238
+f 1304 1169 1211
+f 1270 1304 1211
+f 1169 1304 1239
+f 1305 1271 1239
+f 1272 1306 1240
+f 1307 1241 1240
+f 1273 1309 1215
+f 379 378 1274
+f 1244 1277 1258
+f 775 877 693
+f 1752 2388 1278
+f 1449 947 1143
+f 1245 1449 1143
+f 1091 1011 1114
+f 124 1463 1281
+f 1284 1114 1011
+f 4777 1285 3194
+f 958 850 1015
+f 1181 1476 1150
+f 1287 331 359
+f 1347 359 331
+f 634 3226 3447
+f 767 541 2672
+f 663 664 621
+f 1535 248 1641
+f 1289 1324 1260
+f 1324 1290 1261
+f 1260 1324 1261
+f 3279 501 2697
+f 1263 4931 1292
+f 858 857 1295
+f 119 673 145
+f 4236 572 577
+f 4957 7088 7157
+f 5967 5250 1299
+f 7063 5434 5435
+f 2884 1300 1235
+f 1300 1301 1235
+f 1301 1335 1302
+f 1363 1270 1269
+f 1239 1304 1305
+f 1305 1337 1271
+f 1337 1272 1271
+f 1337 1338 1272
+f 1338 1306 1272
+f 1306 1307 1240
+f 1307 1308 1241
+f 1241 1308 1273
+f 1273 1308 1309
+f 1309 1341 1215
+f 1341 1310 1215
+f 1310 1368 1242
+f 1418 1224 1449
+f 1752 1278 991
+f 988 809 1017
+f 809 1192 1046
+f 1017 809 1046
+f 999 1000 4777
+f 995 950 1016
+f 1283 714 1400
+f 1247 1284 1011
+f 2356 1110 1750
+f 1318 737 621
+f 1914 2392 917
+f 918 2392 1122
+f 1649 1279 2960
+f 2960 2961 1649
+f 1321 1685 1322
+f 3098 1447 1448
+f 1399 705 1318
+f 1051 1323 563
+f 1324 1353 1290
+f 1353 1354 1262
+f 1325 1263 1262
+f 1354 1325 1262
+f 1326 4931 1263
+f 1325 1326 1263
+f 1355 4895 4366
+f 4485 905 1936
+f 152 4492 181
+f 4506 4491 1328
+f 3669 4147 957
+f 202 424 127
+f 6611 4948 8038
+f 5150 2831 238
+f 4447 4957 7157
+f 1331 653 1332
+f 3603 7225 7205
+f 2885 1334 5224
+f 1335 1301 1300
+f 1335 1361 1302
+f 1361 1336 1302
+f 1383 1303 1336
+f 1383 1362 1303
+f 1362 1363 1269
+f 1270 1364 1304
+f 1364 1337 1305
+f 1304 1364 1305
+f 1338 1366 1306
+f 1366 1367 1307
+f 1306 1366 1307
+f 1367 1339 1308
+f 1307 1367 1308
+f 1339 1340 1308
+f 1340 1309 1308
+f 886 2103 184
+f 1450 914 2164
+f 1223 1221 2376
+f 1251 990 1113
+f 1183 1184 1180
+f 783 1185 1344
+f 917 785 737
+f 714 2794 1346
+f 1347 1373 359
+f 1373 1374 359
+f 508 3815 273
+f 3493 736 3104
+f 1476 916 1178
+f 1871 1675 2009
+f 2652 3216 2423
+f 1375 1407 1324
+f 1289 1375 1324
+f 1324 1407 1353
+f 3556 3557 187
+f 4067 1998 2061
+f 270 1264 246
+f 215 202 195
+f 254 215 195
+f 4302 4303 4550
+f 1359 7820 7819
+f 1300 2884 1360
+f 1380 1300 1360
+f 1380 1335 1300
+f 1380 1381 1335
+f 1381 1361 1335
+f 1361 1383 1336
+f 1363 1412 1270
+f 1270 1412 1364
+f 1365 1337 1364
+f 1365 1385 1338
+f 1337 1365 1338
+f 1338 1385 1366
+f 1366 1414 1367
+f 1387 1340 1339
+f 1388 1309 1340
+f 1387 1388 1340
+f 1415 1341 1309
+f 1388 1415 1309
+f 1389 1310 1341
+f 1415 1389 1341
+f 1310 1389 1368
+f 1368 1390 1311
+f 2217 3164 1315
+f 1083 1369 2773
+f 1813 1370 1357
+f 1282 562 1045
+f 1218 1616 965
+f 839 808 1001
+f 1616 1026 965
+f 560 1011 786
+f 3104 659 3105
+f 917 737 1872
+f 1058 1401 1314
+f 2381 899 2354
+f 1178 1246 1149
+f 1403 1373 1347
+f 1347 3331 1403
+f 7984 3642 7461
+f 683 1820 517
+f 2520 1375 1289
+f 1376 1354 1353
+f 1407 1376 1353
+f 1376 1325 1354
+f 1376 1326 1325
+f 1408 1355 1326
+f 1408 4895 1355
+f 453 476 247
+f 1409 315 709
+f 7246 1380 1360
+f 1382 1361 1381
+f 1384 1362 1383
+f 1384 1363 1362
+f 1384 1412 1363
+f 1412 1413 1364
+f 1413 1441 1364
+f 1442 1365 1364
+f 1441 1442 1364
+f 1365 1442 1385
+f 1385 1443 1366
+f 1443 1444 1366
+f 1366 1444 1414
+f 1386 1367 1414
+f 1386 1339 1367
+f 1389 1390 1368
+f 952 1394 1285
+f 691 2163 1395
+f 1342 562 1282
+f 1120 721 966
+f 714 1346 1884
+f 1276 1253 1254
+f 1085 690 1086
+f 1424 1425 1374
+f 1373 1424 1374
+f 1478 2782 1426
+f 1427 3506 3267
+f 1323 1856 563
+f 2520 1431 1375
+f 1375 1431 1407
+f 1433 1326 1376
+f 1433 1408 1326
+f 195 202 127
+f 254 628 487
+f 629 549 1409
+f 7246 1436 1380
+f 1436 1411 1380
+f 1411 1381 1380
+f 1439 1383 1361
+f 1382 1439 1361
+f 1439 1384 1383
+f 1442 1468 1385
+f 1468 1443 1385
+f 1470 1386 1414
+f 1445 1339 1386
+f 1470 1445 1386
+f 1445 1387 1339
+f 1445 1446 1387
+f 1494 1388 1387
+f 1446 1494 1387
+f 1494 1415 1388
+f 1389 1471 1390
+f 1496 1391 1390
+f 1471 1496 1390
+f 1496 1447 1391
+f 4443 4145 1416
+f 1417 1208 3544
+f 1949 2486 1419
+f 1000 1285 4777
+f 2163 1317 1395
+f 953 1086 954
+f 1086 985 954
+f 1025 1420 1040
+f 1041 1014 986
+f 3467 1428 1429
+f 422 120 1421
+f 3694 458 755
+f 1314 1401 721
+f 2247 2933 652
+f 2288 3983 2291
+f 1427 3267 5490
+f 923 1953 589
+f 1394 1086 953
+f 2520 3004 1431
+f 1432 1376 1407
+f 1431 1432 1407
+f 1432 1433 1376
+f 2807 6668 6839
+f 253 510 444
+f 4121 1434 5731
+f 3847 5731 3846
+f 7246 1464 1436
+f 1436 1437 1411
+f 1437 1381 1411
+f 1438 1382 1381
+f 1437 1438 1381
+f 1467 1412 1384
+f 1467 1440 1412
+f 1412 1440 1413
+f 1413 1440 1441
+f 1443 1469 1444
+f 1444 1470 1414
+f 1415 1494 1389
+f 926 1448 1447
+f 777 607 1392
+f 884 987 1953
+f 280 1451 701
+f 1051 1286 954
+f 2414 2764 2765
+f 1224 1283 1400
+f 812 847 883
+f 847 880 1142
+f 1453 2515 1424
+f 2515 1454 1425
+f 1425 1454 1426
+f 1454 1506 1426
+f 3506 1348 3267
+f 163 1455 1428
+f 3748 436 1429
+f 1770 1122 2392
+f 1245 1192 1449
+f 649 2009 845
+f 3004 1458 1431
+f 1458 1432 1431
+f 1458 1459 1432
+f 1459 1433 1432
+f 299 2024 309
+f 3987 372 4659
+f 747 478 223
+f 224 629 1409
+f 224 1409 1378
+f 2361 4655 578
+f 2138 5145 1486
+f 1464 1487 1436
+f 1436 1487 1437
+f 1487 1465 1437
+f 1437 1465 1438
+f 1466 1382 1438
+f 1465 1466 1438
+f 1466 1439 1382
+f 1489 1384 1439
+f 1466 1489 1439
+f 1489 1467 1384
+f 1490 1441 1440
+f 1490 1442 1441
+f 1442 1490 1468
+f 1468 1469 1443
+f 1444 1469 1470
+f 1470 1446 1445
+f 1446 1493 1494
+f 1494 1529 1389
+f 1389 1529 1471
+f 1530 1447 1496
+f 1530 926 1447
+f 1472 422 3164
+f 1226 2226 1473
+f 1770 2086 1475
+f 1122 1770 1475
+f 1399 1318 602
+f 3194 1285 1569
+f 956 1018 2369
+f 811 2354 899
+f 2515 1504 1454
+f 1454 1504 1506
+f 1778 2630 624
+f 1393 1998 1479
+f 1480 425 426
+f 2384 1481 2362
+f 1550 1433 1459
+f 1550 1460 1433
+f 1460 1484 1483
+f 1484 1517 1520
+f 364 747 402
+f 402 223 224
+f 1485 1553 1464
+f 1464 1553 1487
+f 1487 1554 1465
+f 1488 1466 1465
+f 1488 1489 1466
+f 1467 1525 1440
+f 1491 1468 1490
+f 1557 1491 1490
+f 1468 1491 1469
+f 1491 1527 1469
+f 1469 1492 1470
+f 1470 1492 1446
+f 1446 1492 1493
+f 1529 1495 1471
+f 1495 1496 1471
+f 1530 1497 1531
+f 3312 1880 2309
+f 1501 1184 1183
+f 2116 1344 1184
+f 1501 2116 1184
+f 2116 783 1344
+f 1218 965 760
+f 963 1512 1913
+f 884 1111 763
+f 1050 1011 1091
+f 1504 1505 1506
+f 1541 1478 1505
+f 4208 1509 3347
+f 4082 3409 3950
+f 3845 1510 1511
+f 3004 1514 1458
+f 1514 1515 1459
+f 1458 1514 1459
+f 1459 1515 1550
+f 1516 1460 1550
+f 1516 1517 1484
+f 1460 1516 1484
+f 1517 1518 1520
+f 1519 2419 1294
+f 1518 1551 1520
+f 1521 1552 1522
+f 1552 1574 1485
+f 1522 1552 1485
+f 1485 1574 1553
+f 1554 1523 1465
+f 1465 1523 1488
+f 1524 1489 1488
+f 1524 1525 1467
+f 1489 1524 1467
+f 1526 1440 1525
+f 1556 1490 1440
+f 1526 1556 1440
+f 1556 1557 1490
+f 1469 1527 1492
+f 1527 1560 1492
+f 1560 1561 1493
+f 1492 1560 1493
+f 1561 1528 1493
+f 1493 1528 1494
+f 1494 1528 1529
+f 1529 1583 1495
+f 1585 1530 1496
+f 3714 2081 4098
+f 1047 3513 1533
+f 1002 1047 570
+f 570 1047 1533
+f 1449 1177 947
+f 1285 1394 1569
+f 1016 694 598
+f 1504 1539 1505
+f 472 474 3514
+f 1546 1547 1514
+f 1547 1548 1514
+f 1548 1515 1514
+f 1548 1549 1515
+f 1515 1549 1550
+f 1516 1572 1517
+f 1572 1518 1517
+f 1551 1573 1521
+f 1521 1573 1552
+f 1574 1604 1553
+f 1576 1487 1553
+f 1576 1577 1554
+f 1487 1576 1554
+f 1578 1523 1554
+f 1578 1488 1523
+f 1578 1579 1488
+f 1488 1579 1524
+f 1579 1555 1524
+f 1524 1555 1525
+f 1555 1526 1525
+f 1557 1558 1491
+f 1558 1559 1527
+f 1491 1558 1527
+f 1527 1559 1560
+f 1561 1637 1528
+f 1637 1583 1529
+f 1528 1637 1529
+f 1584 1496 1495
+f 1584 1585 1496
+f 1531 1497 1611
+f 1585 1497 1530
+f 1562 3144 7192
+f 608 1563 1564
+f 517 1567 3887
+f 1319 1044 1252
+f 1177 1512 963
+f 1010 2340 2362
+f 995 956 2368
+f 2379 946 899
+f 1050 1091 1049
+f 1751 1087 2374
+f 1537 1593 1505
+f 1593 1541 1505
+f 2048 4965 4330
+f 3935 1154 3946
+f 1570 1571 4502
+f 126 1295 825
+f 638 6410 296
+f 1549 1624 1550
+f 1624 1625 1516
+f 1550 1624 1516
+f 1625 1572 1516
+f 1572 1626 1518
+f 1626 1601 1518
+f 1518 1601 1551
+f 1551 1603 1573
+f 1573 1628 1552
+f 1628 1574 1552
+f 1711 1604 1574
+f 1604 1575 1553
+f 1575 1576 1553
+f 1577 1578 1554
+f 1579 1631 1555
+f 1631 1580 1555
+f 1555 1580 1526
+f 1580 1635 1556
+f 1526 1580 1556
+f 1635 1557 1556
+f 1635 1606 1557
+f 1557 1606 1558
+f 1606 1607 1558
+f 1558 1607 1559
+f 1607 1581 1559
+f 1559 1581 1560
+f 1560 1581 1561
+f 1581 1582 1561
+f 1561 1582 1637
+f 1495 1583 1584
+f 3187 4209 4246
+f 4710 1587 483
+f 1590 1430 3598
+f 1219 758 1223
+f 1592 2961 1676
+f 1591 1221 1223
+f 947 1592 1676
+f 234 1594 1040
+f 4547 373 374
+f 3246 443 4249
+f 1598 1599 1547
+f 1547 1599 1548
+f 1548 1600 1549
+f 1549 1600 1624
+f 1625 1626 1572
+f 1602 1551 1601
+f 1551 1602 1603
+f 1573 1603 1628
+f 1574 1628 1711
+f 1575 1605 1576
+f 1605 1577 1576
+f 1629 1578 1577
+f 1605 1629 1577
+f 1629 1630 1578
+f 1578 1630 1579
+f 1630 1631 1579
+f 1632 1580 1631
+f 1580 1632 1635
+f 1608 1609 1581
+f 1607 1608 1581
+f 1637 1668 1583
+f 1668 1638 1583
+f 1638 1610 1584
+f 1583 1638 1584
+f 1610 1639 1585
+f 1584 1610 1585
+f 1585 1639 1497
+f 442 1611 1497
+f 2211 610 2099
+f 596 1613 1679
+f 1094 1613 1614
+f 1231 1094 1614
+f 1615 719 2366
+f 686 2119 1023
+f 812 846 847
+f 1592 1649 2961
+f 1617 1651 1541
+f 1593 1617 1541
+f 1651 1652 117
+f 1541 1651 117
+f 845 1675 1111
+f 407 285 159
+f 830 1622 1420
+f 1623 1660 1548
+f 1599 1623 1548
+f 1548 1660 1600
+f 1626 1627 1601
+f 1627 1602 1601
+f 1690 1603 1602
+f 1691 1628 1603
+f 1711 1712 1604
+f 1661 1575 1604
+f 1692 1605 1575
+f 1661 1692 1575
+f 1662 1629 1605
+f 1633 1634 1635
+f 1632 1633 1635
+f 1608 1607 1606
+f 1666 1609 1608
+f 1609 1667 1581
+f 1667 1636 1582
+f 1581 1667 1582
+f 1582 1636 1637
+f 1638 1670 1610
+f 1610 1670 1639
+f 1639 442 1497
+f 1880 2446 2309
+f 1473 2226 1642
+f 1094 1646 1613
+f 840 1117 1146
+f 843 1117 840
+f 1089 1221 1591
+f 960 878 772
+f 1647 1648 623
+f 1049 1091 813
+f 1617 1702 1651
+f 1619 1703 244
+f 1655 353 1980
+f 2100 416 472
+f 548 106 626
+f 155 1327 1451
+f 1658 405 964
+f 1660 1687 1600
+f 1687 1688 1624
+f 1600 1687 1624
+f 1624 1688 1625
+f 1709 1626 1625
+f 1709 1627 1626
+f 1690 1691 1603
+f 1691 1711 1628
+f 1712 1661 1604
+f 1692 1662 1605
+f 1663 1629 1662
+f 1629 1663 1630
+f 1663 1664 1630
+f 1630 1664 1631
+f 1664 1665 1632
+f 1631 1664 1632
+f 1665 1694 1633
+f 1632 1665 1633
+f 1694 1695 1633
+f 1633 1695 1634
+f 1695 1741 1634
+f 1716 1635 1634
+f 1741 1716 1634
+f 1716 1606 1635
+f 1696 1608 1606
+f 1696 1697 1608
+f 1697 1666 1608
+f 1609 1666 1667
+f 1636 1668 1637
+f 1668 1669 1638
+f 1669 1718 1638
+f 1638 1718 1670
+f 1670 442 1639
+f 3761 3893 3891
+f 1228 1672 1229
+f 1980 1673 1371
+f 1089 1616 1221
+f 1646 1676 1679
+f 765 1680 882
+f 1681 1682 1652
+f 1651 1681 1652
+f 1682 1703 1619
+f 1652 1682 1619
+f 1187 1222 1654
+f 3105 4209 3187
+f 4474 243 1901
+f 149 232 2383
+f 4673 4672 969
+f 1688 1708 1625
+f 1708 1709 1625
+f 1761 1602 1627
+f 1689 1690 1602
+f 1761 1689 1602
+f 1710 1711 1691
+f 1712 1713 1661
+f 1713 1692 1661
+f 1693 1662 1692
+f 1693 1663 1662
+f 1715 1695 1694
+f 1716 1696 1606
+f 1698 1667 1666
+f 1668 1699 1669
+f 1699 1718 1669
+f 1718 1720 1670
+f 1720 442 1670
+f 1721 1640 442
+f 542 3559 543
+f 1284 1001 1114
+f 1021 1022 2119
+f 1449 1224 1177
+f 1679 1676 703
+f 1682 1681 1703
+f 1705 3183 240
+f 860 106 548
+f 1707 2992 1311
+f 1687 1660 5040
+f 4929 1731 1688
+f 1687 4929 1688
+f 1688 1731 1708
+f 1732 1627 1709
+f 1781 1732 1709
+f 1732 1761 1627
+f 1733 1690 1689
+f 1733 1691 1690
+f 1733 1710 1691
+f 1762 1712 1711
+f 1736 1692 1713
+f 1736 1693 1692
+f 1693 1714 1663
+f 1714 1664 1663
+f 1714 1737 1664
+f 1664 1737 1665
+f 1737 1739 1694
+f 1665 1737 1694
+f 1739 1715 1694
+f 1715 1740 1695
+f 1695 1740 1741
+f 1743 1696 1716
+f 1742 1743 1716
+f 1744 1697 1696
+f 1743 1744 1696
+f 1717 1666 1697
+f 1744 1717 1697
+f 1717 1698 1666
+f 1698 1636 1667
+f 1766 1668 1636
+f 1766 1699 1668
+f 1720 1721 442
+f 657 1722 2244
+f 1676 2961 703
+f 900 1314 721
+f 768 851 528
+f 1052 772 877
+f 758 1591 1223
+f 1052 960 772
+f 1251 997 919
+f 1146 646 641
+f 1725 1753 1683
+f 1703 1725 1683
+f 1726 2982 2596
+f 354 860 443
+f 5390 4935 3816
+f 4953 4929 1687
+f 1760 1709 1708
+f 1760 1781 1709
+f 1761 1733 1689
+f 1734 1710 1733
+f 1735 1711 1710
+f 1734 1735 1710
+f 1735 1762 1711
+f 1785 1713 1712
+f 1762 1785 1712
+f 1785 1736 1713
+f 1786 1714 1693
+f 1786 1763 1714
+f 1763 1737 1714
+f 1738 1739 1737
+f 1715 1807 1740
+f 1788 1742 1716
+f 1741 1788 1716
+f 1765 1698 1717
+f 1765 1791 1698
+f 1791 1636 1698
+f 1791 1766 1636
+f 1745 1699 1766
+f 1745 1793 1699
+f 1793 1718 1699
+f 1793 1720 1718
+f 925 1719 1191
+f 773 878 694
+f 2033 2501 3976
+f 1048 1050 1049
+f 641 1175 1291
+f 879 761 1751
+f 3835 6017 971
+f 1117 646 1146
+f 2084 1144 851
+f 1774 475 1754
+f 3732 3624 3828
+f 7936 1758 1759
+f 473 3982 1208
+f 1731 4930 1708
+f 1780 1760 1708
+f 1821 1732 1781
+f 1821 1761 1732
+f 1782 1733 1761
+f 1782 1734 1733
+f 1786 1693 1736
+f 1763 1738 1737
+f 1739 1764 1715
+f 1715 1764 1807
+f 1807 1787 1740
+f 1788 1741 1740
+f 1787 1788 1740
+f 1789 1742 1788
+f 1789 1743 1742
+f 1790 1744 1743
+f 1789 1790 1743
+f 1790 1717 1744
+f 1790 1765 1717
+f 1811 1720 1793
+f 1811 1794 1720
+f 1720 1794 1721
+f 964 1769 862
+f 1056 589 2341
+f 1596 1871 2009
+f 787 786 984
+f 1254 1219 1087
+f 999 1055 1000
+f 1772 1773 1648
+f 1646 1679 1613
+f 1726 1754 475
+f 1753 1726 475
+f 805 1924 1923
+f 1502 1503 1774
+f 1472 3164 1775
+f 1571 1656 4502
+f 443 548 476
+f 4783 158 3916
+f 549 479 315
+f 1838 1761 1821
+f 1838 1782 1761
+f 1783 1735 1734
+f 1782 1783 1734
+f 1784 1762 1735
+f 1783 1784 1735
+f 1784 1785 1762
+f 1785 1802 1736
+f 1803 1786 1736
+f 1802 1803 1736
+f 1804 1763 1786
+f 1805 1738 1763
+f 1804 1805 1763
+f 1805 1806 1739
+f 1738 1805 1739
+f 1739 1806 1764
+f 1806 1807 1764
+f 1848 1789 1788
+f 1830 1790 1789
+f 1810 1765 1790
+f 1810 1791 1765
+f 1831 1766 1791
+f 1831 1792 1766
+f 1792 1745 1766
+f 1792 1793 1745
+f 733 925 1796
+f 1888 1797 1723
+f 2106 1183 1475
+f 2086 2106 1475
+f 848 1176 873
+f 1323 1051 985
+f 997 719 919
+f 1176 599 527
+f 1116 397 1596
+f 1726 1753 2982
+f 1800 1502 1774
+f 1754 1800 1774
+f 547 1801 2952
+f 3565 2847 3669
+f 241 178 1899
+f 257 123 180
+f 3888 683 517
+f 1818 1781 1760
+f 1784 1802 1785
+f 1803 1804 1786
+f 1787 1847 1788
+f 1788 1847 1848
+f 1808 1789 1848
+f 1808 1809 1789
+f 1809 1830 1789
+f 1830 1810 1790
+f 1810 1831 1791
+f 1851 1793 1792
+f 1851 1811 1793
+f 1534 3267 3776
+f 3136 2559 2939
+f 2106 1501 1183
+f 1231 1614 1345
+f 1812 3052 764
+f 1395 1314 900
+f 876 1146 849
+f 3467 163 1428
+f 2596 1814 1502
+f 1800 2596 1502
+f 1502 1814 1503
+f 506 1815 1816
+f 1597 391 282
+f 282 327 1061
+f 315 479 316
+f 1685 506 1816
+f 1818 1837 1781
+f 1837 1821 1781
+f 1839 1782 1838
+f 1839 1822 1782
+f 1822 1783 1782
+f 1822 1823 1783
+f 1823 1784 1783
+f 1823 1802 1784
+f 1823 1824 1802
+f 1824 1825 1803
+f 1802 1824 1803
+f 1825 1826 1803
+f 1826 1827 1804
+f 1803 1826 1804
+f 1804 1827 1805
+f 1827 1828 1806
+f 1805 1827 1806
+f 1828 1829 1806
+f 1829 1807 1806
+f 1846 1787 1807
+f 1829 1846 1807
+f 1846 1847 1787
+f 1908 1811 1851
+f 1481 3455 4819
+f 3342 609 3007
+f 3350 3361 3419
+f 809 2765 1192
+f 2363 921 1220
+f 874 810 2355
+f 691 1395 811
+f 1345 1614 766
+f 1345 766 680
+f 899 2381 2379
+f 2887 1595 3315
+f 1814 1857 1801
+f 1834 2746 582
+f 332 1597 176
+f 1597 282 1061
+f 123 4352 180
+f 1590 1994 1933
+f 402 1835 1836
+f 1839 1867 1822
+f 1867 1868 1822
+f 1868 1823 1822
+f 1868 1840 1823
+f 1841 1824 1823
+f 1840 1841 1823
+f 5191 1889 1842
+f 6882 5228 457
+f 1825 5130 1826
+f 5130 4978 1827
+f 3259 1775 1588
+f 4978 5053 1827
+f 1845 1829 1828
+f 5053 1845 1828
+f 1845 1874 1829
+f 1829 1874 1846
+f 1848 1905 1808
+f 1905 1875 1808
+f 1875 1849 1809
+f 1808 1875 1809
+f 1877 1830 1809
+f 1849 1877 1809
+f 1947 1810 1830
+f 1877 1947 1830
+f 1878 1831 1810
+f 1947 1878 1810
+f 1850 1792 1831
+f 1878 1850 1831
+f 1850 1851 1792
+f 1853 2365 697
+f 4442 1534 4432
+f 6568 5475 1854
+f 344 1813 1357
+f 1825 1824 1859
+f 1418 1461 1224
+f 1026 1252 818
+f 1249 1248 2027
+f 818 691 946
+f 947 1676 1646
+f 1291 814 641
+f 1291 680 814
+f 805 1923 1129
+f 1801 1858 2952
+f 4497 5079 1861
+f 1358 241 1899
+f 630 513 1971
+f 316 516 330
+f 516 445 330
+f 1864 1821 1837
+f 1864 1865 1821
+f 1865 1838 1821
+f 1866 1839 1838
+f 1865 1866 1838
+f 1839 1866 1867
+f 1868 1869 1840
+f 1869 1841 1840
+f 2017 1964 1871
+f 1357 1370 819
+f 1932 1898 4875
+f 264 4441 2107
+f 4974 1874 1845
+f 1874 1903 1846
+f 1903 1904 1847
+f 1846 1903 1847
+f 1904 1905 1848
+f 1847 1904 1848
+f 1875 1876 1849
+f 1876 1877 1849
+f 1907 1850 1878
+f 1906 1907 1878
+f 1907 1851 1850
+f 1907 1908 1851
+f 1908 1909 1811
+f 3643 4547 1862
+f 1684 1685 1321
+f 4869 1596 397
+f 249 3977 477
+f 1243 1053 955
+f 589 921 2363
+f 1252 1044 818
+f 1110 1041 986
+f 2226 1882 3753
+f 1010 1056 2341
+f 1177 1224 1400
+f 1886 2732 4714
+f 4714 1887 1886
+f 7293 4200 7292
+f 154 4225 907
+f 1889 655 1842
+f 2052 136 4805
+f 1892 191 190
+f 236 393 394
+f 4768 236 394
+f 5010 1893 1864
+f 1864 1893 1865
+f 1893 1894 1866
+f 1865 1893 1866
+f 1894 1895 1867
+f 1866 1894 1867
+f 1867 1895 1868
+f 5576 3287 3521
+f 1868 1895 1869
+f 1896 1836 2015
+f 4319 1996 515
+f 1938 1968 263
+f 1896 1973 1898
+f 243 4311 1901
+f 1874 1941 1903
+f 1905 1942 1875
+f 1942 1943 1875
+f 1943 1876 1875
+f 1943 1944 1876
+f 1945 1877 1876
+f 1945 1946 1877
+f 1946 1947 1877
+f 1906 1878 1947
+f 3267 1563 608
+f 6161 5638 6160
+f 1261 1290 806
+f 1145 1247 1011
+f 986 897 1477
+f 966 721 2356
+f 760 965 946
+f 874 2355 2354
+f 121 564 186
+f 466 1915 5642
+f 4016 552 1392
+f 2681 1916 3294
+f 921 987 1220
+f 211 2091 2419
+f 1958 1891 1917
+f 1958 1861 1891
+f 1987 4497 1861
+f 1958 1987 1861
+f 1987 4960 4497
+f 330 445 2264
+f 402 1836 749
+f 364 402 749
+f 749 1836 2018
+f 1893 1922 1894
+f 1922 4749 1894
+f 1923 1924 1313
+f 336 4592 861
+f 1281 423 1925
+f 1926 1927 2017
+f 1931 4623 4547
+f 4033 2695 5407
+f 3694 755 1902
+f 1940 1904 1903
+f 1941 1940 1903
+f 1940 1942 1905
+f 1904 1940 1905
+f 2002 1974 1943
+f 1974 1944 1943
+f 1944 1945 1876
+f 1977 1907 1906
+f 1977 1948 1908
+f 1907 1977 1908
+f 1948 1909 1908
+f 1948 2005 1909
+f 3911 1795 3902
+f 1949 1950 1370
+f 3643 1931 4547
+f 4536 1457 3171
+f 2148 2163 1044
+f 1045 649 845
+f 1113 693 950
+f 1044 691 818
+f 1106 807 1107
+f 1051 563 1286
+f 807 1026 1107
+f 844 1219 1223
+f 2340 1010 2341
+f 988 1017 680
+f 1120 900 721
+f 1026 818 788
+f 1190 552 3680
+f 1461 2574 1283
+f 1318 621 602
+f 203 332 1757
+f 1931 3651 4623
+f 1986 1958 1917
+f 1988 4960 1987
+f 1959 1920 4960
+f 1988 1959 4960
+f 4303 1992 4551
+f 2023 748 2097
+f 2015 2039 2023
+f 6355 4704 6383
+f 4370 4613 3697
+f 1968 1926 1937
+f 2018 2073 1873
+f 1970 630 1971
+f 2358 1972 2385
+f 1596 2017 1871
+f 500 4652 430
+f 177 1358 4790
+f 832 1942 1940
+f 1942 832 1943
+f 1943 832 2002
+f 1975 1945 1944
+f 1975 2003 1945
+f 2003 1946 1945
+f 2003 1947 1946
+f 1976 1906 1947
+f 2003 1976 1947
+f 1976 1977 1906
+f 2004 1948 1977
+f 2004 2005 1948
+f 2080 1879 2005
+f 1678 2819 1978
+f 3149 4465 3437
+f 982 1002 351
+f 914 705 1399
+f 1400 714 1884
+f 2586 4211 4242
+f 1751 1254 1087
+f 1981 1956 1982
+f 2249 597 1679
+f 1982 1956 1955
+f 1343 705 914
+f 596 597 1043
+f 1917 1960 1985
+f 1985 1986 1917
+f 1986 1987 1958
+f 1988 1989 1959
+f 1990 1356 1959
+f 1989 1990 1959
+f 197 4483 1993
+f 1410 749 2018
+f 2680 1294 245
+f 2039 748 2023
+f 1728 1111 1675
+f 1965 1926 1968
+f 1938 1965 1968
+f 6422 298 149
+f 1956 1981 1678
+f 1358 1899 4666
+f 1896 2050 4865
+f 741 3557 264
+f 4964 832 1940
+f 2001 1974 2002
+f 2001 1944 1974
+f 2001 1975 1944
+f 2077 1976 2003
+f 2029 1977 1976
+f 2029 2004 1977
+f 1164 7800 967
+f 901 982 351
+f 1282 884 1953
+f 3704 1343 1450
+f 648 596 1043
+f 771 692 839
+f 997 1113 950
+f 816 1247 1145
+f 2362 1481 1422
+f 214 2747 2627
+f 781 2147 2460
+f 1956 1978 1955
+f 786 1050 984
+f 2012 1986 1985
+f 2036 1987 1986
+f 2012 2036 1986
+f 2013 1988 1987
+f 2036 2013 1987
+f 2013 1989 1988
+f 1991 1990 1989
+f 1990 1991 4970
+f 1410 2018 2094
+f 1836 1835 2015
+f 187 741 740
+f 269 246 220
+f 4313 4705 4314
+f 1392 607 2361
+f 534 252 3724
+f 2382 232 3519
+f 435 3933 2024
+f 4359 888 4341
+f 356 536 357
+f 667 2072 1288
+f 1973 1896 4865
+f 2026 336 861
+f 4526 1778 1777
+f 2002 2054 2001
+f 2075 1975 2001
+f 2077 2056 1976
+f 2056 2029 1976
+f 2057 2004 2029
+f 2057 2005 2004
+f 2057 2080 2005
+f 2030 2988 1843
+f 2059 901 823
+f 2031 2032 3261
+f 918 1280 785
+f 1512 2538 1913
+f 1253 528 955
+f 1750 986 1477
+f 1051 954 985
+f 1053 1106 1059
+f 1921 3199 2034
+f 2007 4126 2008
+f 2737 2085 769
+f 2685 2632 2451
+f 920 754 666
+f 3026 2065 2035
+f 2065 1985 2035
+f 2065 2012 1985
+f 2036 2066 2013
+f 2037 1989 2013
+f 2066 2037 2013
+f 2037 1991 1989
+f 4882 2067 5097
+f 201 2038 4621
+f 4126 706 2008
+f 1835 1378 2039
+f 2015 1835 2039
+f 264 2041 741
+f 3710 2255 2043
+f 2044 3818 4687
+f 1919 1918 1813
+f 552 4016 2045
+f 1964 1728 1675
+f 4183 2216 1769
+f 1937 1926 2017
+f 1855 2055 3490
+f 1871 1964 1675
+f 4411 4530 4491
+f 1896 2015 2050
+f 2073 1932 4874
+f 4461 4346 138
+f 393 177 4790
+f 2076 1975 2075
+f 2076 2102 1975
+f 2102 2003 1975
+f 2078 2029 2056
+f 2078 2057 2029
+f 2060 1265 2061
+f 6679 3386 1148
+f 2569 3049 347
+f 1279 1115 1096
+f 847 762 879
+f 1346 2538 1512
+f 1022 1180 1023
+f 2367 995 2368
+f 987 884 763
+f 3770 3512 4029
+f 1312 809 988
+f 761 1254 1751
+f 1088 6678 1148
+f 1160 2058 886
+f 1568 3781 3653
+f 2012 2088 2036
+f 2088 2066 2036
+f 2090 2037 2066
+f 2067 1991 2037
+f 2090 2067 2037
+f 1991 2067 4882
+f 5335 3229 5347
+f 3291 1452 471
+f 1936 2069 284
+f 1836 1898 1932
+f 2018 1932 2073
+f 394 393 4790
+f 263 1968 1937
+f 2050 2023 2097
+f 2150 1961 1962
+f 2104 2114 3672
+f 1164 967 2289
+f 2074 2555 3254
+f 306 3384 2001
+f 2054 306 2001
+f 3384 2075 2001
+f 2113 2102 2076
+f 2102 2077 2003
+f 2078 2056 2077
+f 2079 2057 2078
+f 2079 2146 2057
+f 2146 2080 2057
+f 3713 3714 4078
+f 1771 2083 2086
+f 721 1041 1110
+f 2064 876 1055
+f 1086 648 1043
+f 1953 921 589
+f 1884 1346 1512
+f 1177 1884 1512
+f 1059 1591 758
+f 1405 716 717
+f 1474 960 1052
+f 1474 1052 594
+f 879 1751 881
+f 987 2364 1220
+f 3026 2151 2065
+f 2087 2064 999
+f 2151 2127 2012
+f 2065 2151 2012
+f 2012 2127 2088
+f 2088 2089 2066
+f 2089 2090 2066
+f 5097 2067 5015
+f 1836 1896 1898
+f 2094 2071 800
+f 4315 160 4336
+f 435 3934 3933
+f 6596 800 2095
+f 4441 365 2107
+f 3843 2047 367
+f 209 165 4403
+f 610 3342 2099
+f 410 922 411
+f 3384 2141 2075
+f 2141 2113 2076
+f 2075 2141 2076
+f 2143 2077 2102
+f 2144 2078 2077
+f 2103 2058 2080
+f 2146 2103 2080
+f 1420 1622 3876
+f 2103 886 2058
+f 4342 5452 418
+f 895 954 961
+f 873 527 526
+f 1282 1045 884
+f 3521 4494 4686
+f 1027 1616 1089
+f 2322 2105 1832
+f 1400 1884 1177
+f 641 814 849
+f 923 1286 1953
+f 1143 1646 1094
+f 4112 782 2082
+f 1749 1748 251
+f 2106 2116 1501
+f 1401 1014 1041
+f 2161 824 535
+f 4287 4162 992
+f 951 876 2064
+f 482 2514 317
+f 999 4777 2087
+f 2127 2128 2088
+f 2128 2129 2089
+f 2088 2128 2089
+f 2130 2090 2089
+f 2129 2130 2089
+f 2130 2131 2067
+f 2090 2130 2067
+f 2131 4927 5015
+f 3301 269 220
+f 417 534 3800
+f 2138 2109 2110
+f 1195 983 616
+f 1423 3340 2362
+f 2383 232 2382
+f 610 609 3342
+f 4517 2112 362
+f 2142 2102 2113
+f 2142 2143 2102
+f 2143 2144 2077
+f 2145 2078 2144
+f 2145 2079 2078
+f 2115 2025 368
+f 1059 1027 1089
+f 873 526 959
+f 1422 923 1056
+f 1798 1319 1042
+f 1859 1824 1841
+f 2216 1195 540
+f 452 2094 800
+f 452 1410 2094
+f 2018 1836 1932
+f 2094 1873 2071
+f 414 3005 1900
+f 2762 228 1929
+f 2138 2156 2109
+f 2173 2140 2139
+f 2157 2158 2140
+f 1937 2017 1596
+f 2098 1938 4868
+f 2160 2113 2141
+f 2160 2142 2113
+f 2205 2146 2079
+f 2145 2205 2079
+f 184 2103 2146
+f 2460 2147 3149
+f 4238 352 353
+f 932 2058 1160
+f 1060 1084 3531
+f 2286 1119 2117
+f 3569 5630 5666
+f 680 766 814
+f 1798 2397 1319
+f 785 1280 737
+f 3597 729 734
+f 3061 936 2210
+f 949 1798 1042
+f 2151 2166 2127
+f 2166 2167 2128
+f 2127 2166 2128
+f 2167 2152 2129
+f 2128 2167 2129
+f 2152 2153 2130
+f 2129 2152 2130
+f 2130 2153 2131
+f 2190 4927 2187
+f 2131 2153 4927
+f 1992 4304 2132
+f 581 2762 1929
+f 748 709 2097
+f 2094 2018 1873
+f 3199 2033 2034
+f 2170 2156 2138
+f 2156 2172 2109
+f 2109 2172 2139
+f 2139 2172 2173
+f 2174 2140 2173
+f 2174 2157 2140
+f 2158 2175 4891
+f 2097 1938 2098
+f 1902 1773 1772
+f 2050 2097 4865
+f 4865 2097 4866
+f 2176 2159 2141
+f 2159 2160 2141
+f 2179 2180 2142
+f 2180 2143 2142
+f 2181 2144 2143
+f 2180 2181 2143
+f 2181 2145 2144
+f 2206 2146 2205
+f 2206 184 2146
+f 2791 789 530
+f 1418 3039 1461
+f 1017 1046 1345
+f 2388 3156 2162
+f 1291 988 680
+f 2162 1013 1278
+f 1317 1645 1058
+f 1192 1418 1449
+f 1677 1317 2163
+f 1179 1184 2121
+f 1184 1186 2121
+f 2184 2212 2151
+f 2151 2212 2166
+f 2152 2187 2153
+f 2153 2187 4927
+f 2289 3335 1164
+f 1378 748 2039
+f 340 5153 5139
+f 2168 801 5106
+f 1328 362 363
+f 1435 2783 7979
+f 3263 3128 2171
+f 2220 2222 2170
+f 2222 2197 2156
+f 2170 2222 2156
+f 2197 2172 2156
+f 2174 2199 2157
+f 2242 2158 2157
+f 2199 2242 2157
+f 2242 2175 2158
+f 4866 2097 2098
+f 2178 3190 5303
+f 2177 2204 2160
+f 2159 2177 2160
+f 2160 2204 2142
+f 2142 2204 2179
+f 2180 2232 2181
+f 2181 2182 2145
+f 2182 2205 2145
+f 3713 4078 3600
+f 2161 790 981
+f 2208 824 2161
+f 840 951 739
+f 1001 808 846
+f 4137 2208 2161
+f 811 1120 874
+f 1150 1151 3014
+f 1677 2163 2148
+f 1183 1022 1021
+f 1475 1183 1021
+f 600 1253 1276
+f 1475 1021 1123
+f 1175 988 1291
+f 2397 2148 1319
+f 884 1045 845
+f 850 949 1015
+f 2166 2185 2167
+f 2185 2186 2152
+f 2167 2185 2152
+f 2152 2186 2187
+f 2187 2188 2190
+f 2188 2191 2190
+f 2192 4963 2190
+f 2190 2191 2192
+f 2191 4850 2192
+f 2097 709 1938
+f 2193 2194 2195
+f 2169 2195 2194
+f 2194 2196 2169
+f 5109 5008 2169
+f 2169 2196 2170
+f 2170 2196 2220
+f 2222 2257 2197
+f 2198 2172 2197
+f 2172 2198 2173
+f 2198 2225 2173
+f 2225 2174 2173
+f 2174 2225 2199
+f 2241 2242 2199
+f 759 2200 616
+f 2772 3776 1586
+f 1938 263 4868
+f 2177 4928 2204
+f 2229 2179 2204
+f 2230 2180 2179
+f 2229 2230 2179
+f 2230 2231 2180
+f 2232 2182 2181
+f 2207 1226 1473
+f 782 981 4140
+f 1023 3145 686
+f 1401 852 1014
+f 852 843 1014
+f 986 1014 739
+f 961 954 1286
+f 997 950 995
+f 959 526 878
+f 1183 1180 1022
+f 2184 2293 2212
+f 2212 2213 2166
+f 2213 2214 2185
+f 2166 2213 2185
+f 2185 2214 2186
+f 2214 2215 2186
+f 2186 2215 2187
+f 2187 2215 2188
+f 2188 2254 2191
+f 2254 5054 2191
+f 2137 1194 2216
+f 2191 5054 4850
+f 778 1392 552
+f 2416 2217 1544
+f 2272 2218 2194
+f 2218 2196 2194
+f 2218 2219 2196
+f 2219 2239 2196
+f 2239 2220 2196
+f 2221 2222 2220
+f 2257 2223 2197
+f 2223 2224 2198
+f 2197 2223 2198
+f 2224 2225 2198
+f 2240 2258 2199
+f 2225 2240 2199
+f 2258 2241 2199
+f 2242 2243 2175
+f 2243 4945 2175
+f 1902 1772 198
+f 2228 2014 2177
+f 2177 2014 4928
+f 4928 2229 2204
+f 2259 2232 2180
+f 2231 2259 2180
+f 2260 2205 2182
+f 2232 2260 2182
+f 2260 2206 2205
+f 1706 184 2206
+f 782 4140 2345
+f 2006 2233 666
+f 719 995 2367
+f 2480 2574 718
+f 3372 848 873
+f 721 1110 2356
+f 1151 1149 809
+f 1053 1059 955
+f 991 990 1251
+f 2083 2247 2106
+f 807 949 1042
+f 2064 1055 999
+f 1014 840 739
+f 2293 3336 2311
+f 2293 2294 2212
+f 2294 2251 2213
+f 2212 2294 2213
+f 2251 2252 2214
+f 2213 2251 2214
+f 2252 2253 2214
+f 2214 2253 2215
+f 2215 2254 2188
+f 2237 3297 2238
+f 458 906 2006
+f 2041 264 2107
+f 2272 2274 2218
+f 2274 2219 2218
+f 2256 2239 2219
+f 2274 2256 2219
+f 2220 2239 2221
+f 2221 2257 2222
+f 2223 2299 2224
+f 2299 2277 2224
+f 2240 2225 2224
+f 2277 2240 2224
+f 2283 2229 4928
+f 2285 2230 2229
+f 2285 2231 2230
+f 2259 2245 2232
+f 2245 2260 2232
+f 2246 2206 2260
+f 2246 1706 2206
+f 2207 2739 1226
+f 767 612 2100
+f 2086 2083 2106
+f 1058 1645 1401
+f 2287 2248 3571
+f 2480 2236 1283
+f 1283 2236 714
+f 1323 2249 1856
+f 2574 2480 1283
+f 843 840 1014
+f 1280 1123 663
+f 958 1015 1106
+f 2247 2250 2106
+f 1243 958 1106
+f 1317 1058 1395
+f 739 951 2064
+f 1096 1057 601
+f 2253 2267 2215
+f 2215 2267 2254
+f 2267 2269 2254
+f 3490 2055 3106
+f 2297 4849 2270
+f 1479 1998 4134
+f 2256 2314 2239
+f 2239 2314 2221
+f 2257 2299 2223
+f 2258 2279 2241
+f 2280 2242 2241
+f 2279 2280 2241
+f 2281 2243 2242
+f 2280 2281 2242
+f 2281 1659 2243
+f 1194 983 1195
+f 3218 869 1327
+f 1898 4876 4875
+f 2073 4874 4873
+f 1873 2073 4873
+f 2303 2284 2283
+f 2284 2229 2283
+f 2284 2285 2229
+f 2306 2246 2260
+f 2739 1796 1226
+f 3358 3232 2388
+f 1146 641 849
+f 2226 2642 1882
+f 2209 1096 601
+f 1021 2119 1024
+f 2106 2250 2116
+f 2116 2250 326
+f 914 2183 2164
+f 6651 4975 5553
+f 2294 2312 2251
+f 2312 2295 2252
+f 2251 2312 2252
+f 2295 2331 2253
+f 2252 2295 2253
+f 2253 2331 2267
+f 2268 5146 2269
+f 2015 2023 2050
+f 1201 2270 2271
+f 2274 2275 2256
+f 2150 2410 1961
+f 2256 2275 2314
+f 2314 2276 2221
+f 2221 2276 2257
+f 2257 2276 2299
+f 2278 2240 2277
+f 2278 2300 2258
+f 2240 2278 2258
+f 2300 2279 2258
+f 1129 1313 778
+f 924 657 2244
+f 1898 1973 4876
+f 623 920 666
+f 2325 2284 2303
+f 2339 2325 2303
+f 2304 2285 2284
+f 2327 2259 2231
+f 2328 2245 2259
+f 2327 2328 2259
+f 2305 2260 2245
+f 2328 2305 2245
+f 2305 2306 2260
+f 2306 2263 2246
+f 2261 2288 901
+f 3984 520 2286
+f 1655 1371 723
+f 1189 2287 2265
+f 613 2365 1853
+f 1057 1116 2009
+f 604 614 722
+f 2288 2291 901
+f 1618 530 2292
+f 2331 2332 2267
+f 2267 2332 2269
+f 2332 2268 2269
+f 2333 2334 2297
+f 2270 2333 2297
+f 2274 2298 2275
+f 2276 2316 2299
+f 2299 2317 2277
+f 2317 2318 2277
+f 2318 2278 2277
+f 2319 2300 2278
+f 2301 2281 2280
+f 731 2063 2830
+f 2301 2282 2281
+f 2324 4902 2302
+f 4902 2324 2303
+f 2304 2284 2325
+f 2342 2285 2304
+f 2327 2231 2285
+f 2342 2327 2285
+f 3765 6851 358
+f 1796 925 2821
+f 352 784 353
+f 946 691 1090
+f 1016 984 1018
+f 1052 877 1013
+f 2308 3187 4285
+f 614 613 2290
+f 2446 781 2309
+f 769 768 600
+f 2311 1351 2293
+f 1351 2346 2294
+f 2293 1351 2294
+f 2294 2346 2312
+f 2332 2370 2268
+f 793 2313 794
+f 2270 1200 2333
+f 2297 2334 2298
+f 2298 2335 2275
+f 2275 2335 2314
+f 2314 2315 2276
+f 2276 2315 2316
+f 2316 2336 2299
+f 2299 2336 2317
+f 2317 2337 2318
+f 2318 2353 2278
+f 2353 2319 2278
+f 2320 2300 2319
+f 2320 2279 2300
+f 2321 2280 2279
+f 2322 1880 2323
+f 2322 2446 1880
+f 279 2324 2302
+f 2324 2339 2303
+f 2325 2326 2304
+f 2326 2342 2304
+f 2343 2328 2327
+f 287 2263 2306
+f 5606 3558 3555
+f 901 2291 982
+f 952 1085 1394
+f 895 923 1422
+f 1319 2148 1044
+f 690 1085 952
+f 736 659 3104
+f 766 952 1012
+f 960 959 878
+f 2346 2347 2312
+f 2347 2348 2295
+f 2312 2347 2295
+f 2295 2348 2331
+f 2370 2349 2268
+f 2349 1200 1201
+f 2268 2349 1201
+f 2334 2375 2298
+f 2335 2315 2314
+f 2315 2336 2316
+f 2336 2351 2317
+f 2351 2337 2317
+f 2352 2318 2337
+f 2318 2352 2353
+f 2353 2355 2320
+f 2319 2353 2320
+f 2355 2279 2320
+f 2355 2321 2279
+f 2357 2280 2321
+f 2280 2357 2301
+f 2360 2324 279
+f 2360 2339 2324
+f 1423 2340 2325
+f 2339 1423 2325
+f 2340 2326 2325
+f 2341 2342 2326
+f 2343 2327 2342
+f 2343 2364 2328
+f 2364 2305 2328
+f 982 2344 1002
+f 881 1751 2374
+f 2348 2369 2331
+f 2369 2370 2332
+f 2331 2369 2332
+f 2349 2350 1200
+f 2350 2372 1200
+f 2372 2373 2333
+f 1200 2372 2333
+f 2333 2373 2334
+f 2298 2375 2335
+f 2376 2377 2315
+f 2315 2377 2336
+f 2336 2378 2351
+f 2351 2380 2337
+f 2380 2352 2337
+f 2352 2381 2353
+f 2354 2355 2353
+f 2356 2357 2321
+f 2358 2301 2357
+f 965 788 946
+f 1423 2362 2340
+f 2341 2326 2340
+f 2363 2342 2341
+f 2342 2363 2343
+f 763 2305 2364
+f 763 989 2306
+f 2305 763 2306
+f 989 287 2306
+f 4465 1832 5480
+f 131 3519 232
+f 1351 2366 2346
+f 2366 2367 2347
+f 2346 2366 2347
+f 2367 2368 2348
+f 2347 2367 2348
+f 2368 2369 2348
+f 2370 2371 2349
+f 2349 2371 2350
+f 880 2372 2350
+f 2373 2374 2334
+f 2374 2375 2334
+f 2335 2376 2315
+f 2377 2378 2336
+f 2379 2351 2378
+f 760 2379 2378
+f 2379 2380 2351
+f 2352 2380 2381
+f 2381 2354 2353
+f 966 2321 2355
+f 810 966 2355
+f 966 2356 2321
+f 2356 1750 2357
+f 1972 2358 2357
+f 1750 1972 2357
+f 2446 1832 3149
+f 2234 3218 2235
+f 613 1853 2290
+f 2363 1220 2343
+f 2343 1220 2364
+f 1111 287 989
+f 1111 1316 287
+f 3632 3835 656
+f 3149 1832 4465
+f 350 1671 3295
+f 663 1024 664
+f 350 611 1671
+f 1084 1615 1351
+f 1351 1615 2366
+f 2369 1048 2370
+f 1048 1049 2370
+f 2370 1049 2371
+f 1142 2350 2371
+f 883 1142 2371
+f 1142 880 2350
+f 881 2373 2372
+f 880 881 2372
+f 2373 881 2374
+f 2374 844 2375
+f 844 1223 2335
+f 2375 844 2335
+f 2335 1223 2376
+f 2376 1121 2377
+f 1121 760 2378
+f 2377 1121 2378
+f 2380 2379 2381
+f 6422 149 2383
+f 220 3969 3301
+f 2389 2452 1701
+f 1648 920 623
+f 535 1723 323
+f 3307 3124 2411
+f 1724 1115 1279
+f 3228 2396 2397
+f 895 2398 953
+f 622 887 668
+f 2405 3525 3537
+f 2863 3314 2412
+f 425 406 194
+f 2936 3341 2415
+f 3556 187 1154
+f 704 3216 2652
+f 2496 2422 2464
+f 3155 2162 3156
+f 3155 2427 595
+f 2162 3155 595
+f 3532 2428 2444
+f 2437 2435 595
+f 7359 6972 7346
+f 2810 1510 3662
+f 686 2738 2425
+f 2451 102 5192
+f 1951 2544 2402
+f 3214 3107 3348
+f 3214 2597 3107
+f 2427 2437 595
+f 2741 3069 2424
+f 2080 2058 932
+f 2437 2438 2435
+f 2546 2646 3189
+f 1545 3003 2440
+f 2916 2441 2933
+f 3662 3108 2683
+f 3140 3023 2917
+f 2448 3372 2436
+f 4170 2457 4167
+f 399 3518 2447
+f 3490 5250 2453
+f 1773 920 1648
+f 2785 2916 2933
+f 2933 2441 2406
+f 3490 1299 5250
+f 4452 2487 3676
+f 214 1913 2747
+f 2461 726 1812
+f 595 2435 2449
+f 2435 2438 2436
+f 896 2834 1914
+f 3244 2496 2464
+f 2466 2404 3180
+f 455 4908 7320
+f 2262 2834 896
+f 7014 320 7603
+f 2457 2463 2458
+f 1397 5330 5554
+f 496 495 2471
+f 4635 357 2472
+f 3760 2475 3762
+f 3714 4098 4078
+f 3006 2164 2502
+f 323 1797 350
+f 3091 2758 2477
+f 2831 5150 8614
+f 506 1685 1684
+f 981 790 4140
+f 2482 2483 6613
+f 1856 2960 2209
+f 2484 496 2471
+f 2484 2507 496
+f 7061 2485 4080
+f 2623 2419 2091
+f 2490 3245 998
+f 4173 3254 2555
+f 2491 2492 1028
+f 3381 3152 2494
+f 5255 5211 387
+f 8489 4230 5979
+f 2498 2484 2471
+f 1918 7150 2391
+f 2392 918 917
+f 2530 2491 1028
+f 754 2006 666
+f 2492 2490 1028
+f 2747 2538 1346
+f 2958 2935 2937
+f 213 2820 214
+f 2536 2498 647
+f 2498 2536 2484
+f 2330 1351 2311
+f 2509 1509 4208
+f 2162 594 1013
+f 3065 3092 2403
+f 926 2734 2510
+f 2528 2512 4220
+f 2513 1040 1594
+f 3039 3043 1461
+f 2833 1536 6688
+f 2517 2521 2518
+f 2535 647 2521
+f 2535 2536 647
+f 2536 2537 2484
+f 2552 2507 2484
+f 2537 2552 2484
+f 2552 654 2507
+f 483 1587 420
+f 2673 2417 2932
+f 1403 1453 1424
+f 2427 2526 2437
+f 2528 2531 2512
+f 2529 2530 1456
+f 3228 2397 1798
+f 8350 2562 2506
+f 2562 2563 2506
+f 2506 2563 2534
+f 2534 2548 2517
+f 2548 2577 2517
+f 2517 2577 2521
+f 1281 1463 423
+f 3136 2422 2496
+f 3218 198 869
+f 2465 2788 2543
+f 2540 2558 3526
+f 3140 2459 2524
+f 837 2541 2542
+f 2539 2686 2557
+f 2543 2788 3243
+f 2439 2504 2544
+f 2528 4255 2531
+f 750 3750 2096
+f 2576 2561 8350
+f 2561 2562 8350
+f 2534 2563 2548
+f 2577 2549 2521
+f 2549 2578 2535
+f 2521 2549 2535
+f 2578 2579 2536
+f 2535 2578 2536
+f 2579 2550 2537
+f 2536 2579 2537
+f 2550 2551 2552
+f 2537 2550 2552
+f 2564 654 2552
+f 1754 1726 1800
+f 2360 4830 2122
+f 2570 2400 3289
+f 3128 2566 2171
+f 2815 2553 2445
+f 2689 2467 2476
+f 2476 3244 3137
+f 327 208 184
+f 2531 4255 3532
+f 2560 2861 2559
+f 2588 2563 2562
+f 2589 2548 2563
+f 2589 2577 2548
+f 2579 2591 2550
+f 2550 2591 2551
+f 2551 2580 2552
+f 2552 2580 2564
+f 1180 1184 1179
+f 2735 2981 2554
+f 3628 425 194
+f 2583 3407 2760
+f 2121 3484 3145
+f 1179 2121 3145
+f 2121 2572 3484
+f 2540 3526 2405
+f 1813 2391 1949
+f 2708 2409 2558
+f 2814 3348 2434
+f 1510 2814 2434
+f 2574 1461 3043
+f 2575 2561 2576
+f 1970 750 2096
+f 2620 2562 2561
+f 2575 2620 2561
+f 2620 2588 2562
+f 2588 2589 2563
+f 2590 2577 2589
+f 2577 2604 2549
+f 2549 2604 2578
+f 2578 2621 2579
+f 2591 2605 2551
+f 2551 2605 2580
+f 2580 2592 2564
+f 2592 2581 1674
+f 2564 2592 1674
+f 2581 3173 1674
+f 2594 3448 3158
+f 2814 3214 3348
+f 3381 3363 3152
+f 3532 4298 2428
+f 2586 2587 8435
+f 2577 2590 2604
+f 2637 2621 2578
+f 2604 2637 2578
+f 2621 2638 2579
+f 2579 2638 2591
+f 2580 2605 2592
+f 1890 2030 1843
+f 1456 2530 1028
+f 2595 3304 2738
+f 4071 2598 388
+f 3219 2603 2597
+f 4154 2582 3262
+f 3366 3373 2599
+f 3366 2600 3373
+f 2600 3181 2957
+f 2957 3181 2601
+f 2566 3113 3262
+f 2654 2575 2633
+f 2654 2620 2575
+f 2634 2588 2620
+f 2635 2589 2588
+f 2634 2635 2588
+f 2635 2590 2589
+f 2635 2636 2590
+f 2590 2636 2604
+f 2638 2639 2591
+f 2639 2659 2591
+f 2591 2659 2605
+f 2605 2606 2592
+f 2606 2607 2592
+f 2592 2607 2581
+f 769 820 2737
+f 926 2510 1448
+f 2608 2793 2455
+f 2560 2694 704
+f 1222 1852 2613
+f 1852 4291 2613
+f 2614 3368 3344
+f 3203 3058 2616
+f 3345 2615 2601
+f 3072 2930 3037
+f 2785 2610 1095
+f 3281 2785 1095
+f 2604 2636 2637
+f 2637 2658 2621
+f 2659 2622 2605
+f 2622 2606 2605
+f 2607 2505 2581
+f 2623 245 1294
+f 1242 2993 1217
+f 545 3765 358
+f 3448 3260 3158
+f 2681 3294 2628
+f 2628 3294 2649
+f 3264 2629 2647
+f 3068 3264 2647
+f 2647 2629 2630
+f 2631 2248 2287
+f 3058 2713 2616
+f 3201 3058 3203
+f 2888 2863 3537
+f 3523 2888 3537
+f 3050 3261 2032
+f 2655 2620 2654
+f 2655 2634 2620
+f 2657 2635 2634
+f 2656 2657 2634
+f 2621 2658 2638
+f 2679 2705 2606
+f 2622 2679 2606
+f 2705 2660 2607
+f 2606 2705 2607
+f 2607 2661 2505
+f 2661 2680 2505
+f 1476 2965 2984
+f 2933 2247 2610
+f 704 2694 3216
+f 2645 2628 3346
+f 3216 3422 2423
+f 3189 2646 1680
+f 3422 2429 2423
+f 2648 624 2629
+f 1500 1498 1653
+f 351 1002 507
+f 4377 2629 4657
+f 5899 7317 7316
+f 1154 3935 538
+f 259 3889 4317
+f 2656 2634 2655
+f 2677 2635 2657
+f 2677 2636 2635
+f 2636 2702 2637
+f 2702 2678 2658
+f 2637 2702 2658
+f 2658 2639 2638
+f 2659 2679 2622
+f 2607 2660 2661
+f 3239 2493 2768
+f 239 1703 1683
+f 2467 2668 3393
+f 3108 2434 3148
+f 836 837 804
+f 2873 2625 2964
+f 3108 3148 2683
+f 1279 1649 962
+f 3088 2670 3036
+f 3036 2670 2904
+f 2904 2670 2671
+f 2671 3063 3042
+f 3082 2628 2649
+f 3346 2628 3082
+f 2673 2696 3395
+f 2666 2663 2445
+f 2617 2594 3179
+f 894 980 837
+f 1888 2430 1797
+f 837 2674 2541
+f 2674 2675 2541
+f 2699 2654 2675
+f 2699 2655 2654
+f 2700 2656 2655
+f 2700 2676 2656
+f 2676 2657 2656
+f 2676 2677 2657
+f 2677 2702 2636
+f 2658 2678 2639
+f 2678 2703 2639
+f 2639 2703 2659
+f 2680 2706 1294
+f 3598 1480 1590
+f 3422 3054 2429
+f 2615 2553 2865
+f 5000 556 1102
+f 186 1892 200
+f 2684 5753 929
+f 3098 1448 1482
+f 3191 2686 2409
+f 2428 2619 2687
+f 2434 3275 3148
+f 2663 2650 2665
+f 2651 3032 3184
+f 723 1673 724
+f 2839 2640 2985
+f 2795 2645 2667
+f 3388 3012 2511
+f 198 1772 869
+f 2345 4140 2691
+f 2446 2322 1832
+f 3042 3063 2693
+f 2870 3216 2694
+f 2674 2698 2675
+f 2698 2699 2675
+f 2701 2677 2676
+f 2701 2702 2677
+f 2703 2726 2659
+f 2659 2726 2679
+f 2726 2704 2679
+f 2679 2704 2705
+f 2755 2660 2705
+f 2661 2728 2680
+f 2680 2728 2706
+f 3059 2596 2982
+f 2632 2733 2565
+f 2135 2134 6025
+f 2901 2883 211
+f 3255 2711 2712
+f 2445 2470 2715
+f 948 8179 1430
+f 5343 157 4526
+f 2478 3480 2547
+f 3105 274 1618
+f 2903 2719 2747
+f 662 2721 2722
+f 980 2723 837
+f 647 593 592
+f 2723 2749 2698
+f 2674 2723 2698
+f 2749 2699 2698
+f 2724 2655 2699
+f 2749 2724 2699
+f 2724 2700 2655
+f 2725 2676 2700
+f 2724 2725 2700
+f 2725 2701 2676
+f 2750 2702 2701
+f 2750 2751 2702
+f 2702 2751 2678
+f 2751 2752 2678
+f 2752 2775 2703
+f 2678 2752 2703
+f 2703 2775 2726
+f 2726 2753 2704
+f 2704 2754 2705
+f 2754 2755 2705
+f 2755 2727 2660
+f 2727 2661 2660
+f 2727 2728 2661
+f 1725 1703 1681
+f 2439 2544 1951
+f 2717 3134 2393
+f 2730 1886 1887
+f 3843 367 137
+f 6892 227 226
+f 1756 2510 2734
+f 3490 2453 2508
+f 3085 3174 2740
+f 2769 3085 2740
+f 2696 3367 3096
+f 1949 1419 1950
+f 213 398 2820
+f 2742 2743 2839
+f 2742 2839 3303
+f 2478 3223 3480
+f 3223 2744 3480
+f 1129 1923 1313
+f 2719 2627 2747
+f 2745 3610 2746
+f 3326 2673 3327
+f 2748 2723 980
+f 1702 1681 1651
+f 2723 2748 2749
+f 2796 2725 2724
+f 2796 2774 2725
+f 2725 2774 2701
+f 2776 2726 2775
+f 2726 2776 2753
+f 2753 2777 2704
+f 2704 2777 2754
+f 2778 2727 2755
+f 2801 2778 2755
+f 2778 2779 2727
+f 2779 2728 2727
+f 2779 2756 2728
+f 2756 2706 2728
+f 1796 2821 1747
+f 2780 1725 1681
+f 885 3060 3027
+f 5113 1193 2761
+f 2544 2737 2402
+f 2404 2466 2479
+f 2492 2652 2423
+f 2445 2715 2815
+f 3075 2787 3462
+f 696 2189 4536
+f 2764 3040 2765
+f 3039 1418 3040
+f 2987 2818 2767
+f 2769 2740 2394
+f 2794 714 713
+f 2794 713 2618
+f 2770 3452 3034
+f 278 2360 279
+f 191 1499 190
+f 2773 2724 2749
+f 2773 2796 2724
+f 2796 2797 2774
+f 2774 2798 2701
+f 2798 2826 2750
+f 2701 2798 2750
+f 2826 2751 2750
+f 2855 2753 2776
+f 2855 2777 2753
+f 2777 2827 2755
+f 2754 2777 2755
+f 2827 2801 2755
+f 2779 2803 2756
+f 2803 2757 2756
+f 5000 1297 1298
+f 2783 1193 7979
+f 2783 2804 1193
+f 2466 2825 2479
+f 2479 2825 3270
+f 2460 3149 3437
+f 2033 3976 2455
+f 535 2481 248
+f 2919 2662 2399
+f 2792 505 506
+f 1641 660 3295
+f 1918 2391 1813
+f 2739 735 1796
+f 2740 3462 2394
+f 2903 2747 2794
+f 2797 2798 2774
+f 2799 2751 2826
+f 2852 2752 2751
+f 2853 2775 2752
+f 2852 2853 2752
+f 2853 2776 2775
+f 2800 2777 2855
+f 2777 2800 2827
+f 2828 2778 2801
+f 2828 2802 2779
+f 2778 2828 2779
+f 2779 2802 2803
+f 6991 6969 1249
+f 1813 1949 1370
+f 2783 2832 2804
+f 3026 2184 2151
+f 3184 3343 2432
+f 2809 561 1563
+f 4671 6910 6912
+f 2903 240 2719
+f 3075 3074 2787
+f 3074 2868 2787
+f 2842 2864 2819
+f 2244 1722 659
+f 2820 4844 1724
+f 962 1649 1592
+f 2538 2747 1913
+f 2035 3250 3026
+f 2556 2903 2794
+f 1369 2849 2796
+f 2773 1369 2796
+f 2849 2850 2797
+f 2796 2849 2797
+f 2850 2877 2798
+f 2797 2850 2798
+f 2798 2877 2826
+f 2799 2852 2751
+f 2853 2854 2776
+f 2854 2855 2776
+f 2856 2801 2827
+f 2856 2828 2801
+f 2829 2803 2802
+f 2828 2829 2802
+f 2829 2882 2757
+f 2803 2829 2757
+f 2756 2757 1519
+f 2830 1513 973
+f 2860 2568 2804
+f 2832 2860 2804
+f 767 2672 3420
+f 3343 2835 3058
+f 2553 2815 2865
+f 2432 3343 3058
+f 1352 2836 2837
+f 3075 3125 3074
+f 3963 3670 3908
+f 2840 2841 2690
+f 2842 2819 2499
+f 2846 2845 2915
+f 2864 1749 2819
+f 5757 2833 6688
+f 1311 1390 1391
+f 5645 4412 7822
+f 2425 2786 2119
+f 397 1116 1115
+f 1369 2875 2849
+f 2850 2876 2877
+f 2877 2851 2826
+f 2826 2851 2799
+f 2879 2827 2800
+f 2827 2879 2856
+f 2880 2828 2856
+f 2880 2857 2828
+f 2857 2829 2828
+f 2857 2881 2829
+f 2829 2881 2882
+f 614 604 6926
+f 2882 2901 2757
+f 1369 1083 2875
+f 2859 2860 2832
+f 2123 5343 2124
+f 593 647 2498
+f 1539 1538 1537
+f 2862 2597 3214
+f 3274 2862 3214
+f 2556 240 2903
+f 4374 5169 585
+f 3658 5480 1832
+f 3074 3023 2868
+f 2788 2921 2399
+f 3507 1244 472
+f 3741 3669 957
+f 5032 1203 1508
+f 2870 3280 2846
+f 2849 2909 2850
+f 2909 2876 2850
+f 2799 2878 2852
+f 2852 2878 2853
+f 2878 2895 2854
+f 2853 2878 2854
+f 2854 2951 2800
+f 2855 2854 2800
+f 2951 2879 2800
+f 2923 2856 2879
+f 2923 2880 2856
+f 2896 2857 2880
+f 1672 2900 1229
+f 2913 2914 2832
+f 2914 2859 2832
+f 2859 2886 2860
+f 2886 1289 2860
+f 1289 2612 2568
+f 1914 3235 2392
+f 2862 3219 2597
+f 2424 2450 2609
+f 2741 2424 2609
+f 3058 2835 3238
+f 2889 2890 436
+f 3023 3435 2868
+f 3004 2520 2519
+f 1921 2032 1093
+f 2545 2844 2947
+f 2945 2946 3123
+f 1348 620 821
+f 2842 2499 2817
+f 2768 2822 2899
+f 4989 1520 1521
+f 784 2894 353
+f 2789 2840 2690
+f 3816 4935 2805
+f 3312 2211 2720
+f 2083 1771 1095
+f 2851 2910 2799
+f 2910 2911 2799
+f 2799 2911 2878
+f 2895 2922 2854
+f 2912 2879 2951
+f 2912 2923 2879
+f 2926 2881 2857
+f 2896 2926 2857
+f 2926 2927 2881
+f 221 2882 2881
+f 2927 221 2881
+f 6926 604 6930
+f 2210 505 2792
+f 1435 5122 2913
+f 2914 2886 2859
+f 2520 1289 2886
+f 2825 2936 689
+f 3940 753 45
+f 3286 7791 2898
+f 2822 2986 2899
+f 3081 2865 3310
+f 3175 2902 2784
+f 1719 2720 2956
+f 3023 2905 3435
+f 746 2644 2789
+f 2946 2844 2545
+f 3123 2946 2545
+f 963 1913 2820
+f 2893 2872 2959
+f 3479 2838 2869
+f 3280 2870 2947
+f 2906 3161 2907
+f 2641 2841 2840
+f 2789 2690 2793
+f 1217 1108 1109
+f 1503 1801 547
+f 2908 2849 2875
+f 2908 2909 2849
+f 2950 2877 2876
+f 2910 2851 2877
+f 2950 2910 2877
+f 2922 2951 2854
+f 2923 2975 2880
+f 2924 2896 2880
+f 2975 2924 2880
+f 2913 2929 2914
+f 2520 2886 2914
+f 925 1191 2821
+f 2870 2846 2915
+f 1453 1403 1402
+f 3219 3279 2603
+f 3095 2547 2718
+f 2511 2493 3239
+f 3305 2618 713
+f 3239 2899 2641
+f 746 745 2644
+f 745 2641 2644
+f 7015 7024 7175
+f 8078 8228 3975
+f 2871 2947 2694
+f 1347 331 1320
+f 2845 2893 2959
+f 2945 2919 2920
+f 2964 2921 2788
+f 2892 2964 2788
+f 2641 2899 2841
+f 1108 1217 2908
+f 2949 2909 2908
+f 2970 2876 2909
+f 2949 2970 2909
+f 2970 2950 2876
+f 2911 3017 2878
+f 2922 2972 2951
+f 2925 2896 2924
+f 2896 2925 2926
+f 2928 221 2927
+f 2518 2521 592
+f 7316 7274 7331
+f 2519 2520 2914
+f 2929 2519 2914
+f 2944 1182 2653
+f 2933 2406 2934
+f 2603 3279 2916
+f 2954 2980 3326
+f 2957 2601 3394
+f 2608 2789 2793
+f 2784 2902 3380
+f 1674 3173 606
+f 745 3239 2641
+f 2584 2171 3460
+f 3133 2939 2491
+f 2682 2818 3093
+f 2817 2499 2962
+f 2682 3093 2941
+f 2899 2986 2942
+f 2948 2906 2585
+f 2907 2869 3160
+f 3222 2945 2920
+f 2867 5514 5496
+f 3161 3241 2907
+f 2948 3161 2906
+f 1217 2949 2908
+f 3017 2996 2878
+f 2878 2996 2895
+f 2996 2971 2895
+f 2971 2972 2922
+f 2895 2971 2922
+f 2951 2974 2912
+f 2974 3021 2923
+f 2912 2974 2923
+f 2923 3021 2975
+f 2976 2925 2924
+f 2975 2976 2924
+f 2976 2926 2925
+f 2976 2999 2927
+f 2926 2976 2927
+f 2927 2999 2928
+f 281 221 370
+f 1858 2730 2952
+f 682 2506 2534
+f 5901 7766 7801
+f 2713 3238 3151
+f 2499 1678 885
+f 2441 4350 2406
+f 3010 2957 3394
+f 2644 2641 2840
+f 3363 2599 3135
+f 2599 2523 3135
+f 2419 2901 211
+f 898 2527 607
+f 3250 3147 3026
+f 730 121 5833
+f 2842 2817 2958
+f 2793 2690 2474
+f 2330 2311 3015
+f 2966 2965 2872
+f 2967 2966 2872
+f 2845 3492 2893
+f 2967 2872 2893
+f 3917 2968 2969
+f 1217 2993 2949
+f 2994 2970 2949
+f 2995 2950 2970
+f 2950 2995 2910
+f 2910 2995 2911
+f 2911 2995 3017
+f 3017 3018 2996
+f 2972 2973 2951
+f 2951 2973 2974
+f 221 3076 370
+f 2898 7791 2977
+f 709 315 575
+f 2978 3002 2929
+f 2978 2929 2913
+f 3081 3308 3394
+f 2980 3152 3309
+f 2556 1705 240
+f 1747 2642 2226
+f 3312 2309 2211
+f 2887 3536 474
+f 854 1852 1222
+f 2447 3518 3405
+f 2415 720 2936
+f 3655 3654 6385
+f 3478 2718 2426
+f 1279 1096 2960
+f 2030 2513 2988
+f 2793 2474 2990
+f 3303 2985 2822
+f 2743 2741 2958
+f 2864 2991 1749
+f 2763 3411 2237
+f 2992 2949 2993
+f 2992 2994 2949
+f 3045 2970 2994
+f 3045 2995 2970
+f 2996 3019 2971
+f 2971 3019 2972
+f 2973 3020 2974
+f 2974 3020 3021
+f 3021 2997 2975
+f 2998 2976 2975
+f 2997 2998 2975
+f 2976 2998 2999
+f 2999 2998 4172
+f 1889 3423 655
+f 3003 2519 2929
+f 3002 3003 2929
+f 120 1457 1924
+f 3003 3004 2519
+f 3006 2954 3292
+f 2954 3326 3327
+f 369 3196 3198
+f 2121 3236 2572
+f 4178 2642 2983
+f 4972 695 1060
+f 3011 3305 2236
+f 3610 2770 3012
+f 2743 2958 3066
+f 3083 2871 2694
+f 1982 2732 1981
+f 2717 2393 3241
+f 1924 898 1313
+f 2921 2920 2399
+f 2789 2644 2840
+f 1251 1084 1060
+f 1749 2049 2819
+f 1182 3014 3341
+f 1890 2567 2165
+f 2920 2919 2399
+f 2818 2891 2465
+f 3222 2920 2921
+f 3464 2947 2844
+f 3071 2766 916
+f 3071 916 2984
+f 3046 2995 3045
+f 3018 3048 2996
+f 2996 3048 3019
+f 3019 2973 2972
+f 2499 885 2962
+f 2978 2440 3002
+f 4183 482 2137
+f 837 2723 2674
+f 3722 3025 3436
+f 3029 3030 3031
+f 3175 2784 3224
+f 3333 305 3254
+f 3236 3057 2572
+f 2720 2211 2956
+f 2795 2493 2511
+f 3610 3012 3388
+f 3034 2795 2511
+f 2770 3034 2511
+f 3012 2770 2511
+f 3311 2808 4273
+f 3123 2545 2408
+f 497 2507 654
+f 2964 3222 2921
+f 2741 2609 2958
+f 2904 3042 2764
+f 1707 1311 1391
+f 3016 3302 4261
+f 1707 3044 2994
+f 2992 1707 2994
+f 3044 3045 2994
+f 3046 3047 2995
+f 2995 3047 3017
+f 3047 3101 3017
+f 3017 3101 3018
+f 3018 3101 3048
+f 3019 347 2973
+f 2973 3049 3020
+f 3049 3022 3021
+f 3020 3049 3021
+f 3021 3022 2997
+f 1025 2513 2030
+f 2474 3050 2938
+f 2448 2941 3053
+f 2732 1982 4714
+f 3055 2602 3318
+f 2980 3153 3326
+f 565 1881 99
+f 3057 2571 2572
+f 3059 3060 2596
+f 2184 3336 2293
+f 3060 1857 2596
+f 4509 3028 557
+f 2247 1095 2610
+f 3107 2626 2442
+f 3305 713 2236
+f 2795 2667 2493
+f 2403 3063 3064
+f 2640 3066 2937
+f 2841 3121 3067
+f 3082 3068 3069
+f 3038 3037 3071
+f 2609 2864 2842
+f 3072 3141 2905
+f 3073 3072 2905
+f 3044 1707 1391
+f 3044 3046 3045
+f 3046 3100 3047
+f 3100 3130 3047
+f 3047 3130 3101
+f 3102 3103 3048
+f 3101 3102 3048
+f 3048 3103 3019
+f 2438 2767 2682
+f 1351 2330 2387
+f 2863 2412 2405
+f 3174 3080 3127
+f 3067 3122 3050
+f 4053 3409 4082
+f 1154 187 411
+f 3962 309 515
+f 2626 3281 1095
+f 3536 2887 2888
+f 3370 2626 1095
+f 2400 2602 3055
+f 440 2007 324
+f 3288 2400 3055
+f 3231 3381 2494
+f 2821 2983 2642
+f 3253 2554 2686
+f 2893 3435 2967
+f 3086 4179 2611
+f 2595 2714 3304
+f 2211 1910 2956
+f 3364 3112 2584
+f 3087 159 6426
+f 3057 3364 2584
+f 3261 3122 2812
+f 1191 2955 2983
+f 3011 2236 2480
+f 3089 3328 3090
+f 3090 3328 3092
+f 3069 2630 2424
+f 3037 2931 3071
+f 3071 2931 3070
+f 2966 3038 2984
+f 2545 2871 3083
+f 3023 3073 2905
+f 3094 2717 2307
+f 3094 3134 2717
+f 3097 3154 2736
+f 3109 2417 3095
+f 3154 3096 2736
+f 3098 3099 3044
+f 3099 3046 3044
+f 3099 3100 3046
+f 2183 2494 2502
+f 2055 1962 3106
+f 3239 2768 2899
+f 2651 3184 2395
+f 2438 2448 2436
+f 2624 2710 2688
+f 684 682 2534
+f 1795 3819 2969
+f 2442 2626 3370
+f 3110 3329 3111
+f 3112 3263 2584
+f 3263 2171 2584
+f 1025 1040 2513
+f 1421 805 1129
+f 3128 3113 2566
+f 2602 2583 3318
+f 2404 2546 2420
+f 3115 2489 3088
+f 2489 2488 3088
+f 3006 3292 3392
+f 2565 2733 4845
+f 2954 3327 3292
+f 2042 1225 1540
+f 538 3556 1154
+f 3176 3117 3118
+f 3117 3119 3118
+f 2424 2630 3008
+f 3070 2766 3071
+f 3042 3040 2764
+f 2965 2966 2984
+f 3126 3125 3075
+f 3098 1482 3099
+f 1482 3129 3099
+f 3129 3185 3100
+f 3099 3129 3100
+f 3185 3167 3100
+f 3167 3130 3100
+f 3130 3102 3101
+f 3102 3146 3103
+f 2419 2757 2901
+f 1187 1654 4268
+f 1481 2384 3455
+f 3145 3484 3476
+f 2825 689 3270
+f 3325 2611 2570
+f 2663 2665 2470
+f 2448 3053 3372
+f 2529 3033 3133
+f 3272 2760 3278
+f 2583 2760 3272
+f 3097 2736 2478
+f 2403 3240 3176
+f 2487 4452 3264
+f 3119 3203 3120
+f 596 1679 597
+f 3141 3072 3037
+f 3036 2904 2764
+f 3330 2466 3180
+f 3232 3160 3156
+f 2547 3480 2426
+f 3094 3188 3134
+f 3188 2417 3109
+f 6467 2389 1112
+f 3130 3167 3102
+f 3102 3227 3146
+f 3329 3110 4210
+f 2708 2558 2540
+f 2958 2817 2935
+f 3137 3244 2464
+f 2870 2915 3216
+f 2413 2666 2445
+f 3032 2650 2663
+f 3570 4746 4435
+f 473 472 416
+f 3833 503 248
+f 3234 3138 8285
+f 2961 1856 2249
+f 3170 3311 3663
+f 3289 2400 3288
+f 2939 2652 2491
+f 3016 4261 467
+f 3154 3395 3096
+f 2689 3137 2669
+f 3181 3345 2601
+f 2526 3155 3156
+f 3366 2599 3363
+f 3260 3157 3306
+f 3158 3260 3306
+f 3304 3181 2600
+f 3179 2553 2615
+f 3450 3159 3005
+f 2906 2907 3160
+f 2716 3241 3161
+f 3162 3163 439
+f 3160 2526 3156
+f 3127 3125 3126
+f 1498 725 1653
+f 2510 3129 1448
+f 2841 2401 3121
+f 3167 3186 3102
+f 3186 3227 3102
+f 7903 3205 7868
+f 1645 765 882
+f 2412 2540 2405
+f 1983 1978 2819
+f 7320 4908 1102
+f 5352 1033 455
+f 3471 3426 2672
+f 3171 120 634
+f 597 1323 1043
+f 2837 3172 934
+f 3185 3129 2510
+f 3275 2442 3370
+f 474 3536 3514
+f 3152 3114 3309
+f 2980 3309 3153
+f 2815 2715 2459
+f 3307 2815 2459
+f 2715 2524 2459
+f 3294 2487 2649
+f 2309 781 610
+f 2664 2617 3178
+f 3180 2404 2759
+f 2936 646 689
+f 2686 2539 2407
+f 7965 1321 2462
+f 1474 594 2449
+f 2714 2664 3181
+f 2664 3178 3181
+f 2553 3179 2413
+f 3232 2906 3160
+f 2948 2716 3161
+f 2822 2985 2986
+f 1746 3212 4281
+f 6885 4501 5210
+f 2944 2653 3165
+f 654 1674 605
+f 3167 3185 3186
+f 609 781 2460
+f 2415 1175 720
+f 998 949 1456
+f 3300 4144 2602
+f 1289 1260 2612
+f 2553 2413 2445
+f 3140 3073 3023
+f 1093 2031 1620
+f 2942 3192 3191
+f 3119 3062 3118
+f 1264 3132 236
+f 220 4768 3627
+f 2812 2811 2709
+f 3491 3490 2508
+f 3845 2814 1510
+f 3122 2811 2812
+f 3196 3197 3198
+f 2504 2464 2503
+f 2686 2554 2557
+f 1033 1207 4908
+f 2524 2715 3091
+f 2919 3123 2662
+f 3289 3288 3343
+f 2617 3179 3178
+f 3204 4782 4384
+f 934 3205 1704
+f 2451 2632 2565
+f 2492 2423 2490
+f 2942 3191 3206
+f 3097 2478 2547
+f 3379 2834 2262
+f 2738 2600 3366
+f 2425 2738 3366
+f 3306 2663 2666
+f 2616 2713 2614
+f 3324 3306 2666
+f 3143 3175 2710
+f 3085 2769 2688
+f 2729 3085 2688
+f 5194 5201 3210
+f 3129 1482 1448
+f 2510 3211 3185
+f 3185 3211 3186
+f 3007 2460 3212
+f 1248 700 2431
+f 3212 3437 4355
+f 3460 3448 2594
+f 3332 5492 3213
+f 2546 3189 765
+f 964 4183 1769
+f 3120 3011 2480
+f 1263 1292 806
+f 2545 2947 2871
+f 1757 332 176
+f 3845 3214 2814
+f 1155 2804 2568
+f 2420 2546 2759
+f 715 4710 483
+f 311 4369 4470
+f 119 145 144
+f 2941 3393 3053
+f 3215 4791 6201
+f 2462 1321 1322
+f 4972 1885 695
+f 2767 2818 2682
+f 2838 2987 2767
+f 2526 2869 2838
+f 3160 2869 2526
+f 2990 2474 2938
+f 2915 3258 3216
+f 3125 2917 3074
+f 2743 3082 2741
+f 2450 2864 2609
+f 6036 3217 7579
+f 3082 3069 2741
+f 3279 3220 2441
+f 2916 3279 2441
+f 3037 2930 2931
+f 3380 3080 3182
+f 471 1275 3291
+f 2999 3000 2928
+f 3143 2710 3233
+f 557 3221 7088
+f 1537 3498 1617
+f 2625 2624 3222
+f 1232 4235 304
+f 2729 3182 3085
+f 1473 1642 1054
+f 3782 4566 3463
+f 4386 3225 3171
+f 3226 4386 3171
+f 3186 3211 3227
+f 4531 3227 3211
+f 609 2460 3007
+f 2873 2624 2625
+f 3479 2963 3478
+f 2465 2892 2788
+f 2400 3300 2602
+f 1643 3315 1595
+f 3315 3314 2863
+f 1858 1801 1857
+f 885 902 3060
+f 473 1417 474
+f 2455 2034 2033
+f 2441 3220 4350
+f 853 608 1564
+f 4996 5005 3230
+f 2052 3822 1966
+f 6948 6259 6193
+f 1960 4910 3250
+f 3209 3231 664
+f 624 1777 1778
+f 2464 3033 2503
+f 3122 3193 2811
+f 3182 3080 3174
+f 3379 3375 1914
+f 7989 21 1205
+f 2873 2710 2624
+f 2710 2729 2688
+f 2744 3233 2710
+f 3223 2736 2744
+f 3165 2943 2944
+f 2615 2865 3081
+f 3200 3143 3233
+f 3095 2417 3097
+f 3175 3224 2710
+f 784 325 2894
+f 2042 1540 2573
+f 1144 2529 1456
+f 3184 3289 3343
+f 3224 2784 3182
+f 2963 2718 3478
+f 2839 2743 3066
+f 3080 2411 3127
+f 1702 1617 3498
+f 2397 2396 1677
+f 3093 2465 2543
+f 4459 6693 3339
+f 2888 3315 2863
+f 3314 2709 2412
+f 2709 2707 2412
+f 5351 2486 1949
+f 1643 2136 1620
+f 110 2421 3249
+f 3249 3250 4910
+f 3251 3252 3893
+f 2570 2611 2400
+f 2735 3255 2712
+f 2834 3379 1914
+f 2938 3050 2032
+f 599 2402 820
+f 685 1293 3259
+f 3254 3256 3333
+f 1348 2809 1563
+f 3206 3191 2409
+f 3253 3255 2735
+f 1546 1514 3004
+f 2503 3033 2084
+f 508 3377 3815
+f 3125 3124 2917
+f 3761 3251 3893
+f 2718 2547 2426
+f 3241 2393 2963
+f 3151 3278 3368
+f 2595 3489 2714
+f 3265 6339 8223
+f 1278 2388 2162
+f 1498 779 725
+f 4292 2983 4293
+f 3131 2956 1910
+f 2955 2956 3131
+f 423 3609 1925
+f 3058 3238 2713
+f 2938 2032 1921
+f 3124 2459 3140
+f 2707 2708 2540
+f 3089 3090 2489
+f 3115 3089 2489
+f 3717 3268 3269
+f 3050 3122 3261
+f 5577 1099 3906
+f 212 3029 3031
+f 2646 3270 1680
+f 2421 3147 3249
+f 3249 3147 3250
+f 842 1473 1054
+f 2085 2503 2084
+f 3121 3193 3122
+f 2409 2686 2407
+f 2401 3206 3193
+f 3176 3063 2403
+f 3331 1347 1320
+f 1677 2148 2397
+f 3435 3141 2967
+f 2967 3141 2966
+f 3318 2583 3272
+f 771 820 600
+f 3214 3845 3734
+f 8285 3138 8284
+f 3248 688 110
+f 2786 1024 2119
+f 3074 2917 3023
+f 3121 2401 3193
+f 501 3279 3219
+f 1331 1332 1587
+f 2683 3148 3379
+f 2711 3027 2712
+f 2649 2487 3264
+f 2417 3154 3097
+f 3224 3182 2729
+f 3182 3174 3085
+f 2930 3115 3088
+f 2488 3065 2670
+f 3088 2488 2670
+f 3276 4243 3845
+f 2401 2942 3206
+f 3335 2289 2137
+f 4293 2955 3131
+f 1820 683 1819
+f 3127 2411 3125
+f 2473 1951 2402
+f 3245 2759 3228
+f 3282 3347 3296
+f 3296 2053 291
+f 3282 3296 291
+f 3283 793 4965
+f 3888 3890 1673
+f 3284 6087 7887
+f 759 3199 1921
+f 3285 4667 3286
+f 1419 2486 872
+f 3051 420 2830
+f 1645 1317 2396
+f 1405 854 1564
+f 3287 140 4347
+f 2687 2619 2632
+f 778 552 1190
+f 2526 2838 2437
+f 2936 720 646
+f 1914 3375 3235
+f 2930 3088 2931
+f 875 848 3372
+f 3776 3267 608
+f 2991 1799 1748
+f 2640 2937 2711
+f 3153 2696 2673
+f 2645 3035 2667
+f 2059 823 432
+f 3566 3996 3567
+f 3086 2582 4179
+f 2651 2395 3092
+f 3328 2651 3092
+f 1225 1535 1641
+f 1500 3295 1498
+f 2411 3124 3125
+f 2603 2785 3281
+f 3296 3347 1509
+f 3296 3316 2053
+f 3316 1320 2053
+f 2788 2399 3243
+f 2505 776 2581
+f 1009 1083 2773
+f 3805 3891 3061
+f 2421 3322 3147
+f 3322 3336 3147
+f 3298 3299 2054
+f 3336 3015 2311
+f 1403 1424 1373
+f 4179 3300 2611
+f 3270 689 1680
+f 3057 2584 2571
+f 2449 2435 1474
+f 2738 3304 2600
+f 2572 2571 3489
+f 2557 2982 2780
+f 2544 2503 2737
+f 2865 2815 3307
+f 3153 3309 2696
+f 3380 3308 3080
+f 3080 3308 2411
+f 3310 3307 2411
+f 3310 2865 3307
+f 2937 2935 2711
+f 1618 3329 4210
+f 3120 2480 3062
+f 2063 344 612
+f 2323 1880 3312
+f 855 2323 2720
+f 2323 3312 2720
+f 925 855 1719
+f 3090 3092 2488
+f 2601 3081 3394
+f 5926 1299 5927
+f 1593 1537 1617
+f 3277 1509 2509
+f 1852 2509 4208
+f 3277 3296 1509
+f 3277 3316 3296
+f 3331 1320 3316
+f 7837 3319 5730
+f 1586 3776 853
+f 567 3608 3320
+f 2421 1768 3322
+f 3260 3325 3157
+f 3095 3097 2547
+f 2962 3027 2935
+f 1724 963 2820
+f 2962 885 3027
+f 3027 3060 3059
+f 4830 2360 278
+f 1540 780 4282
+f 3315 1620 3314
+f 2413 3324 2666
+f 3123 2408 3136
+f 3188 3109 2718
+f 3306 3032 2663
+f 3228 2759 2546
+f 2818 2465 3093
+f 2092 8224 4457
+f 2712 3247 2735
+f 2707 2540 2412
+f 3137 2504 2439
+f 2473 2669 1951
+f 2811 2707 2709
+f 3277 3352 3316
+f 3352 3331 3316
+f 2398 1481 1569
+f 3055 3318 3343
+f 3256 3364 3333
+f 3334 3293 3292
+f 2481 660 248
+f 587 485 7812
+f 3335 632 1164
+f 1767 3356 3322
+f 3322 3356 3336
+f 3564 2862 3274
+f 1420 1031 1040
+f 3564 501 2862
+f 3279 2697 3220
+f 523 199 2189
+f 470 1127 3338
+f 3339 248 1535
+f 2866 2867 5496
+f 535 824 1723
+f 1256 4226 4251
+f 2817 2962 2935
+f 3066 2958 2937
+f 3295 1671 1498
+f 1504 2515 1538
+f 3158 3306 3324
+f 2171 2566 3460
+f 3114 3367 2696
+f 2714 3181 3304
+f 3179 2615 3345
+f 2987 2891 2818
+f 2650 2651 3328
+f 5554 7301 1397
+f 2784 3380 3182
+f 2527 4655 2361
+f 1222 2613 1654
+f 1226 1796 1747
+f 3107 3281 2626
+f 594 595 2449
+f 3349 6988 3196
+f 2811 2708 2707
+f 3350 3277 2509
+f 3398 3351 3277
+f 3350 3398 3277
+f 3351 3352 3277
+f 3352 1402 3331
+f 3194 1481 4819
+f 664 3231 621
+f 998 1028 2490
+f 3365 1372 532
+f 603 2790 3357
+f 2464 2422 3033
+f 2479 3270 2646
+f 3368 3278 4603
+f 3305 2614 3360
+f 2616 2614 3305
+f 3011 2616 3305
+f 3139 2616 3011
+f 3120 3139 3011
+f 2365 617 697
+f 1405 717 3361
+f 3235 1771 1770
+f 1519 1294 2706
+f 2425 3366 3363
+f 2566 3448 3460
+f 3367 3135 2816
+f 3309 3114 2696
+f 3360 2556 2618
+f 3481 2617 2664
+f 2594 2413 3179
+f 3358 2585 3232
+f 3890 3889 1256
+f 1176 875 2473
+f 3369 1815 506
+f 3489 3481 2664
+f 872 405 1658
+f 505 3369 506
+f 870 3999 3371
+f 1701 1159 738
+f 2689 2476 3137
+f 2841 2899 2401
+f 2716 2717 3241
+f 854 3361 2509
+f 3178 3345 3181
+f 4820 4319 6402
+f 3377 275 276
+f 3322 1768 1767
+f 3403 3356 1767
+f 2184 3026 3336
+f 3148 3275 3375
+f 3148 3375 3379
+f 3330 3180 2429
+f 1108 2908 2875
+f 3054 3330 2429
+f 3243 2399 2662
+f 3092 2395 3240
+f 2524 2477 3140
+f 2645 3346 3035
+f 2816 2523 3362
+f 3333 3364 3057
+f 868 3382 3383
+f 2685 2687 2632
+f 1724 4844 1115
+f 2786 3363 3381
+f 2719 4765 4358
+f 2594 3324 2413
+f 3184 2570 3289
+f 1747 2821 2642
+f 2979 2772 4268
+f 2618 2556 2794
+f 272 1533 532
+f 3232 3156 2388
+f 3412 3352 3351
+f 3398 3412 3351
+f 3412 3413 1402
+f 3352 3412 1402
+f 2748 1009 2749
+f 2749 1009 2773
+f 2053 1320 331
+f 3375 3275 3370
+f 8417 8039 7697
+f 8164 8137 8136
+f 3390 1767 1768
+f 3015 3336 3356
+f 776 2505 2680
+f 2422 3136 3133
+f 2767 2438 2437
+f 2682 2448 2438
+f 597 2249 1323
+f 2683 2262 4742
+f 3107 2442 3275
+f 3489 2664 2714
+f 4742 8281 8378
+f 1642 2226 3753
+f 2594 3158 3324
+f 2448 2682 2941
+f 3477 2394 2946
+f 3008 2630 1778
+f 2523 3010 3362
+f 4844 397 1115
+f 2786 2425 3363
+f 2031 3314 1620
+f 2891 2892 2465
+f 3209 2786 3381
+f 3231 3209 3381
+f 3135 2523 2816
+f 3135 3367 3114
+f 2491 2652 2492
+f 3348 3275 2434
+f 155 280 993
+f 2307 2717 2433
+f 700 2207 2431
+f 6685 7529 6441
+f 3091 2477 2524
+f 3393 3243 2467
+f 2467 3243 2476
+f 3008 2450 2424
+f 2476 3243 3244
+f 717 3419 3361
+f 3413 3414 1402
+f 3414 1453 1402
+f 3244 2662 2496
+f 2405 3526 3525
+f 3460 2594 2617
+f 4319 515 6404
+f 971 6017 3416
+f 7033 1249 3483
+f 3403 3433 3356
+f 3433 3015 3356
+f 3404 5332 4219
+f 5312 3405 3406
+f 2582 2611 3325
+f 2440 2978 5604
+f 4144 3407 2583
+f 2246 2263 1706
+f 2683 3379 2262
+f 3333 3057 3236
+f 4189 4190 3263
+f 3290 2932 3094
+f 2932 3188 3094
+f 3096 3200 2736
+f 3200 3233 2736
+f 2940 2991 2450
+f 3065 3064 2670
+f 3133 2491 2530
+f 3180 2759 2490
+f 2694 2947 2870
+f 3333 3410 305
+f 251 2049 1749
+f 3193 3206 2708
+f 3090 2488 2489
+f 830 4654 7711
+f 2493 3303 2768
+f 2054 3299 306
+f 2496 2662 3136
+f 3421 3398 3350
+f 2461 3421 3350
+f 3421 3427 3398
+f 3414 2515 1453
+f 2653 1182 3341
+f 3228 2546 2396
+f 991 695 1752
+f 2237 3411 3297
+f 2431 1473 842
+f 3317 3416 4150
+f 3433 3403 3417
+f 184 208 886
+f 2863 2405 3537
+f 2882 221 2897
+f 2408 2545 2559
+f 3178 3179 3345
+f 3380 3394 3308
+f 3292 3327 2771
+f 3136 2408 2559
+f 2932 2417 3188
+f 3127 3126 3174
+f 2740 3075 3462
+f 3070 3036 2766
+f 1655 1980 1371
+f 790 503 4140
+f 2812 2031 3261
+f 183 1092 252
+f 2545 3083 2559
+f 3083 2560 2559
+f 3930 3294 3910
+f 3083 2694 2560
+f 3065 2403 3064
+f 2059 431 2430
+f 1960 3250 2035
+f 1246 2766 2414
+f 1812 3420 2461
+f 3427 3428 3412
+f 3398 3427 3412
+f 3429 3413 3412
+f 3428 3429 3412
+f 3430 3414 3413
+f 3429 3430 3413
+f 3430 3431 3414
+f 1538 2515 3414
+f 3431 1538 3414
+f 7422 6241 6727
+f 2124 5343 4526
+f 6900 3459 5352
+f 4914 6900 5352
+f 2781 5460 4944
+f 3423 555 325
+f 3433 3434 3015
+f 3015 3434 2330
+f 3424 822 782
+f 3151 3272 3278
+f 2941 3093 3393
+f 3128 4190 3113
+f 3152 3135 3114
+f 3395 3154 2417
+f 2425 2119 686
+f 2673 3395 2417
+f 821 2809 1348
+f 2902 3394 3380
+f 3326 3153 2673
+f 2744 2710 2873
+f 3141 3037 2966
+f 3064 2671 2670
+f 2715 2470 3091
+f 2665 3089 3091
+f 2470 2665 3091
+f 3318 3272 3238
+f 2939 2861 2652
+f 3136 2939 3133
+f 3333 3236 4422
+f 3264 4452 2629
+f 3306 3157 3032
+f 2760 3407 3425
+f 723 1371 1673
+f 3053 2668 875
+f 2566 3262 3325
+f 3448 2566 3325
+f 3165 2466 3330
+f 3165 2825 2466
+f 3165 2653 2825
+f 4032 3424 782
+f 1327 869 1451
+f 3426 3421 3420
+f 3426 3427 3421
+f 1538 1539 1504
+f 2835 3318 3238
+f 2431 842 2028
+f 2812 2709 3314
+f 2031 2812 3314
+f 3256 4189 3112
+f 3256 3112 3364
+f 3027 3059 3247
+f 2411 3308 3310
+f 3308 3081 3310
+f 3010 3394 2902
+f 2917 3124 3140
+f 2585 2906 3232
+f 3071 2984 3038
+f 3042 2693 3041
+f 3348 3107 3275
+f 2653 3341 2936
+f 2665 2650 3089
+f 541 1244 1258
+f 3032 3157 3184
+f 3126 3075 2740
+f 2981 2982 2557
+f 2669 3137 1951
+f 1618 2292 3329
+f 3137 2464 2504
+f 108 3823 3792
+f 2765 809 1246
+f 4137 2161 822
+f 2672 3426 3420
+f 3456 3427 3426
+f 3456 3428 3427
+f 3428 3440 3429
+f 3441 3430 3429
+f 3440 3441 3429
+f 3442 3431 3430
+f 3441 3442 3430
+f 3457 1538 3431
+f 3442 3457 3431
+f 1180 1179 3145
+f 3457 1537 1538
+f 2086 1770 1771
+f 2504 2503 2544
+f 2485 7061 3444
+f 2650 3032 2651
+f 2825 2653 2936
+f 3446 7847 3433
+f 3434 3475 2330
+f 3346 3082 2742
+f 2944 1181 1182
+f 2479 2546 2404
+f 3370 1771 3235
+f 959 2436 3372
+f 780 4283 4282
+f 3200 3367 2816
+f 3175 3362 2902
+f 2816 3362 3175
+f 3362 3010 2902
+f 3082 2649 3068
+f 2758 2930 3072
+f 1144 2084 3033
+f 1753 1725 2982
+f 2456 2716 2948
+f 2693 718 3043
+f 3041 2693 3043
+f 3043 718 2574
+f 3930 2487 3294
+f 3157 2570 3184
+f 3238 3272 3151
+f 5899 3453 3454
+f 2384 2122 3455
+f 3092 3065 2488
+f 3027 3247 2712
+f 2394 3464 2844
+f 3472 3441 3440
+f 3473 3442 3441
+f 3472 3473 3441
+f 3442 3473 3457
+f 3488 1537 3457
+f 3207 896 1872
+f 3451 3207 1872
+f 2422 3133 3033
+f 1888 2059 2430
+f 1259 3399 3458
+f 3459 6916 1163
+f 3008 2940 2450
+f 3373 3010 2523
+f 3461 3094 2307
+f 3176 3240 3117
+f 1569 953 2398
+f 3069 2647 2630
+f 4296 3342 1746
+f 3068 2647 3069
+f 3462 3464 2394
+f 2787 3280 3464
+f 2787 3449 3280
+f 3449 3435 3492
+f 2966 3037 3038
+f 4134 3466 3467
+f 2614 3344 3360
+f 3343 3318 2835
+f 3370 3235 3375
+f 1537 1505 1539
+f 3288 3055 3343
+f 3448 3325 3260
+f 3089 2650 3328
+f 3459 1033 5352
+f 1645 2396 765
+f 703 2961 2249
+f 3237 2790 700
+f 4139 1888 2208
+f 767 3420 764
+f 3428 3456 3440
+f 3487 3457 3473
+f 3487 3488 3457
+f 3498 1537 3488
+f 1719 2956 1191
+f 4139 2261 1888
+f 327 184 1706
+f 3475 2387 2330
+f 2786 3209 664
+f 3476 686 3145
+f 2986 3192 2942
+f 2436 1474 2435
+f 3484 2595 3476
+f 3460 2617 3481
+f 2227 2177 2159
+f 2556 3344 1705
+f 2758 3072 3073
+f 3140 2477 3073
+f 2477 2758 3073
+f 2758 3115 2930
+f 2393 3134 2963
+f 2963 3479 3241
+f 2426 2891 3478
+f 1563 561 1564
+f 617 2322 2323
+f 2450 2991 2864
+f 3206 2409 2708
+f 653 1128 731
+f 3092 3240 2403
+f 1425 1424 2515
+f 3155 2526 2427
+f 4547 374 328
+f 2261 4003 2288
+f 1474 2436 959
+f 3456 3495 3440
+f 3495 3485 3472
+f 3440 3495 3472
+f 3486 3473 3472
+f 3485 3486 3472
+f 3486 3487 3473
+f 3497 3498 3488
+f 3372 3053 875
+f 2572 3489 3484
+f 2710 3224 2729
+f 1152 3490 3491
+f 3500 3501 3475
+f 1937 1596 4869
+f 2571 2584 3481
+f 3157 3325 2570
+f 2602 4144 2583
+f 6878 6353 5507
+f 2429 3180 2490
+f 3216 3258 3422
+f 3258 3054 3422
+f 3062 2480 718
+f 2498 2471 593
+f 3303 2839 2985
+f 2963 3188 2718
+f 3134 3188 2963
+f 3222 2624 3477
+f 2511 3239 2238
+f 3480 2892 2891
+f 3119 3120 3062
+f 3449 3492 2846
+f 3280 3449 2846
+f 2846 3492 2845
+f 2744 2964 3480
+f 2426 3480 2891
+f 3462 2787 3464
+f 3041 3040 3042
+f 3437 4465 2134
+f 3201 3203 3119
+f 3399 4261 3458
+f 3247 3059 2981
+f 2554 2981 2557
+f 3493 4284 725
+f 1679 703 2249
+f 3484 3489 2595
+f 3059 2982 2981
+f 2939 2559 2861
+f 2433 3494 2307
+f 3495 3502 3485
+f 3503 3486 3485
+f 3502 3503 3485
+f 3496 3487 3486
+f 3503 3496 3486
+f 3496 3504 3488
+f 3487 3496 3488
+f 3504 3497 3488
+f 3419 2461 3350
+f 2571 3481 3489
+f 2554 3253 2735
+f 567 293 2108
+f 1542 100 1727
+f 2189 190 1457
+f 1403 3331 1402
+f 2099 3342 4296
+f 3247 2981 2735
+f 3500 7847 7967
+f 3501 2387 3475
+f 2868 3449 2787
+f 2546 765 2396
+f 2421 110 4656
+f 1262 806 1290
+f 1654 2613 4290
+f 614 2290 722
+f 3481 2584 3460
+f 7094 3349 369
+f 3344 2556 3360
+f 3117 3202 3119
+f 3202 3201 3119
+f 1858 1857 3060
+f 2960 1096 2209
+f 3035 2742 3303
+f 3635 3646 3949
+f 1535 4459 3339
+f 3480 2964 2892
+f 2731 3693 3411
+f 2560 704 2861
+f 1290 1353 1262
+f 3258 2915 3054
+f 3043 3039 3040
+f 3041 3043 3040
+f 2713 3151 2614
+f 3791 3006 3392
+f 1854 4997 6568
+f 820 769 600
+f 3346 2742 3035
+f 3006 2502 2954
+f 3082 2743 2742
+f 2961 2960 1856
+f 717 726 3419
+f 3174 3126 2740
+f 1224 1461 1283
+f 3456 3471 1277
+f 3508 3495 3456
+f 1277 3508 3456
+f 3508 3502 3495
+f 3505 3497 3504
+f 3505 3498 3497
+f 3690 3888 1673
+f 2780 1702 3498
+f 2608 2763 2789
+f 1678 1978 1956
+f 2944 994 1181
+f 3341 3014 2415
+f 2732 1886 902
+f 3168 3056 2344
+f 2582 3086 2611
+f 6996 7096 4976
+f 2645 2681 2628
+f 2795 2681 2645
+f 2898 4149 3286
+f 2667 3035 3303
+f 2688 2394 3477
+f 3067 3121 3122
+f 2736 3233 2744
+f 2478 2736 3223
+f 2474 3067 3050
+f 3152 3363 3135
+f 3478 2891 2843
+f 2991 1748 1749
+f 3070 3088 3036
+f 982 3168 2344
+f 2494 3152 2980
+f 2611 3300 2400
+f 3109 3095 2718
+f 2603 2916 2785
+f 3240 3202 3117
+f 2668 2689 2669
+f 2597 2603 3281
+f 3192 3255 3253
+f 3502 3509 3503
+f 3510 3496 3503
+f 3509 3510 3503
+f 3516 3504 3496
+f 3510 3516 3496
+f 3516 3517 3505
+f 3504 3516 3505
+f 2780 3498 3505
+f 1702 2780 1681
+f 523 2189 1621
+f 3325 3262 2582
+f 2392 3235 1770
+f 2597 3281 3107
+f 3340 2384 2362
+f 1144 3033 2529
+f 3476 2595 2738
+f 2502 2980 2954
+f 3118 3062 2693
+f 2640 2839 3066
+f 2667 3303 2493
+f 2905 3141 3435
+f 2625 3222 2964
+f 3479 3478 2843
+f 3241 3479 2907
+f 2690 3067 2474
+f 2690 2841 3067
+f 2899 2942 2401
+f 4542 2734 3511
+f 5005 4996 5018
+f 3464 3280 2947
+f 3512 3513 1047
+f 2600 3010 3373
+f 2360 3340 2339
+f 293 567 3320
+f 1590 1480 426
+f 2642 4178 3077
+f 2673 2932 3290
+f 1510 2434 3108
+f 2177 2227 2228
+f 2443 3632 656
+f 3514 3508 1277
+f 3508 3523 3502
+f 3502 3524 3509
+f 3515 3510 3509
+f 3524 3515 3509
+f 3515 3516 3510
+f 3527 3505 3517
+f 3527 2780 3505
+f 3662 1510 3108
+f 4168 3300 4179
+f 2382 3519 6423
+f 2238 3388 2511
+f 3540 3531 2387
+f 4347 3521 3287
+f 2387 3531 1084
+f 655 784 352
+f 5872 122 200
+f 3192 3253 3191
+f 2662 3123 3136
+f 3203 2616 3139
+f 3120 3203 3139
+f 3036 2414 2766
+f 2915 2959 3054
+f 2907 3479 2869
+f 3093 2543 3393
+f 1722 2791 659
+f 4376 3522 2648
+f 2688 2769 2394
+f 2919 2945 3123
+f 3088 3070 2931
+f 3610 3388 3297
+f 3202 3058 3201
+f 2600 2957 3010
+f 980 1082 2748
+f 1261 1196 1101
+f 853 854 1222
+f 3327 2673 3290
+f 308 307 349
+f 3151 3368 2614
+f 2599 3373 2523
+f 2934 652 2933
+f 3502 3523 3524
+f 3525 3515 3524
+f 3526 3516 3515
+f 3525 3526 3515
+f 3538 3517 3516
+f 3526 3538 3516
+f 3538 3539 3527
+f 3517 3538 3527
+f 2838 2767 2437
+f 2339 3340 1423
+f 2445 2663 2470
+f 3393 2543 3243
+f 2823 337 2115
+f 770 820 771
+f 3528 3529 5531
+f 3501 3540 2387
+f 2758 3091 3115
+f 3476 2738 686
+f 2238 3239 745
+f 2649 3264 3068
+f 3243 2662 3244
+f 3118 2693 3063
+f 2794 2747 1346
+f 2904 2671 3042
+f 3036 2764 2414
+f 3222 3477 2945
+f 2838 3479 2987
+f 3479 2843 2987
+f 2819 1678 2499
+f 1814 2596 1857
+f 3418 3407 4144
+f 3492 3435 2893
+f 5443 387 363
+f 3240 2432 3202
+f 2432 3058 3202
+f 3307 2459 3124
+f 2404 2420 2759
+f 2384 3340 2122
+f 3535 4349 4343
+f 4377 2648 2629
+f 853 1187 1586
+f 2630 2629 624
+f 3395 2696 3096
+f 3393 2668 3053
+f 3536 3508 3514
+f 3536 3523 3508
+f 3523 3537 3524
+f 3537 3525 3524
+f 3539 2780 3527
+f 3091 3089 3115
+f 3191 3253 2686
+f 2668 2467 2689
+f 603 722 2790
+f 3540 3541 3531
+f 2542 804 837
+f 2490 2759 3245
+f 3137 2439 1951
+f 2062 2136 3544
+f 2502 2494 2980
+f 2395 2432 3240
+f 3176 3118 3063
+f 3062 718 2693
+f 2868 3435 3449
+f 2945 3477 2946
+f 3511 2734 1531
+f 2768 3303 2822
+f 2843 2891 2987
+f 2845 2959 2915
+f 902 1886 2730
+f 2502 2164 2183
+f 2609 2842 2958
+f 2744 2873 2964
+f 2624 2688 3477
+f 3360 2618 3305
+f 2816 3175 3143
+f 3200 2816 3143
+f 2615 3081 2601
+f 4029 3512 1047
+f 3030 2681 2795
+f 3034 3030 2795
+f 3064 3063 2671
+f 3096 3367 3200
+f 3536 2888 3523
+f 2558 3538 3526
+f 2407 3539 3538
+f 2558 2407 3538
+f 2407 2539 3539
+f 2539 2557 3539
+f 2557 2780 3539
+f 2982 1725 2780
+f 3184 2432 2395
+f 2529 3133 2530
+f 3370 1095 1771
+f 3541 1060 3531
+f 4219 4177 3404
+f 666 4132 623
+f 2429 2490 2423
+f 3193 2708 2811
+f 959 960 1474
+f 1799 2991 157
+f 2409 2407 2558
+f 2479 2646 2546
+f 7882 7944 3548
+f 3024 3553 728
+f 3551 185 3550
+f 3551 3569 185
+f 3569 3396 5630
+f 3556 538 3557
+f 4604 4587 565
+f 4587 1881 565
+f 542 3612 1255
+f 3555 3558 4441
+f 542 543 3612
+f 4583 4514 222
+f 3560 3024 728
+f 7320 1779 1588
+f 4979 3561 1508
+f 8484 5241 7682
+f 8436 133 8030
+f 3561 1507 1508
+f 2266 1925 1255
+f 4713 1098 5245
+f 542 3562 3611
+f 5328 4678 5327
+f 4463 151 3563
+f 2266 1255 578
+f 2608 2455 3976
+f 738 4711 533
+f 5798 6833 6502
+f 3587 729 3560
+f 665 137 3570
+f 4558 137 665
+f 3483 2027 3482
+f 734 729 3587
+f 744 743 3577
+f 2027 3483 1249
+f 3581 4894 8019
+f 3582 4202 5071
+f 8440 7962 5113
+f 3583 3809 5614
+f 7866 8025 3585
+f 3586 3813 3860
+f 14 8154 7852
+f 1281 1925 2266
+f 3722 3550 3025
+f 6500 3589 6599
+f 6886 1161 1543
+f 724 1256 4251
+f 2790 722 2739
+f 3592 1883 1406
+f 3354 8071 3926
+f 163 1939 1455
+f 3853 3932 3595
+f 3653 1939 1568
+f 6599 6461 3599
+f 729 3597 3937
+f 3739 3600 4021
+f 3267 1534 5490
+f 7883 7961 7909
+f 3162 3606 3163
+f 3607 3468 5980
+f 3626 3609 423
+f 3678 3590 3611
+f 4571 4004 153
+f 3559 3697 3986
+f 3559 3986 543
+f 420 1332 2830
+f 3615 1227 3814
+f 1994 131 232
+f 3678 3627 3590
+f 1227 3614 3814
+f 3923 3636 3900
+f 3615 1228 1227
+f 3616 3848 3708
+f 5869 3816 5587
+f 5903 5930 5431
+f 733 697 925
+f 777 898 607
+f 216 295 537
+f 153 4004 3613
+f 3619 4357 795
+f 4357 3619 931
+f 3620 1265 931
+f 2444 3764 447
+f 3619 3620 931
+f 482 3335 2137
+f 3620 4038 1265
+f 3608 3676 3675
+f 4038 4067 1265
+f 3622 8596 3644
+f 3623 3626 423
+f 355 3624 3788
+f 1998 4229 4577
+f 3788 3625 3792
+f 3626 3562 3609
+f 3674 3611 3562
+f 3626 3674 3562
+f 3674 3677 3611
+f 3677 3678 3611
+f 862 540 2200
+f 1405 3361 854
+f 4577 4229 4083
+f 7073 7100 6566
+f 3820 4826 3633
+f 2722 2721 3636
+f 2495 3608 3675
+f 3159 1542 3664
+f 4220 2512 3637
+f 3854 2695 1928
+f 420 2809 821
+f 4097 5596 1571
+f 1570 4097 1571
+f 4142 5285 5745
+f 3641 1030 1031
+f 3641 3675 1030
+f 7461 3642 7866
+f 1881 151 4463
+f 5596 1656 1571
+f 4113 1862 1656
+f 1513 2830 2063
+f 3631 3630 1672
+f 828 3773 1996
+f 1455 3653 3973
+f 3630 2900 1672
+f 1455 1939 3653
+f 5454 3644 8462
+f 3778 972 317
+f 3956 4016 1870
+f 5630 5606 538
+f 578 3956 2361
+f 3291 1275 7733
+f 830 3320 1622
+f 3873 3646 3635
+f 3616 3878 3848
+f 2292 4688 3329
+f 423 1954 3623
+f 3169 6511 3649
+f 4201 4475 868
+f 3634 3635 3652
+f 635 3634 3652
+f 3901 3792 3633
+f 3653 3654 3655
+f 3837 3656 3655
+f 4713 3661 1098
+f 4126 2007 3651
+f 924 2244 736
+f 779 924 736
+f 6828 3659 5643
+f 697 855 925
+f 4126 5504 706
+f 3661 1152 1098
+f 2361 3956 1870
+f 3664 486 435
+f 706 5504 4135
+f 5643 6583 6593
+f 104 3985 672
+f 1299 5926 5967
+f 3567 1928 3596
+f 3669 1730 512
+f 1147 3623 1954
+f 3682 3673 2020
+f 3452 3031 3030
+f 3797 3691 4138
+f 3772 3797 4138
+f 3654 6411 6385
+f 3506 620 1348
+f 3873 1288 2072
+f 3623 3674 3626
+f 1428 1455 3973
+f 3908 3546 5347
+f 2020 3673 2019
+f 3810 1855 1152
+f 3411 2763 2608
+f 5484 4580 250
+f 3976 2731 3411
+f 3708 3686 3819
+f 2884 8632 1360
+f 2475 3840 3252
+f 1226 1747 2226
+f 4020 3802 3825
+f 3466 4573 162
+f 3672 502 1755
+f 3693 3297 3411
+f 448 447 3593
+f 7954 8121 6186
+f 171 1729 4217
+f 285 3706 6426
+f 3106 5927 1299
+f 4613 4370 3602
+f 1565 1566 4498
+f 7747 7078 6885
+f 3938 3997 4122
+f 3702 7493 4175
+f 1883 1379 1406
+f 3956 3952 4037
+f 4016 3956 4037
+f 4037 3952 3679
+f 1147 701 3744
+f 3703 3704 5279
+f 2100 472 1244
+f 3332 3213 3889
+f 3639 2918 3813
+f 3897 1755 3724
+f 4782 4879 4905
+f 3901 3633 6439
+f 3877 3708 3819
+f 3052 2830 973
+f 3710 3711 2255
+f 4034 3713 3600
+f 1377 1594 3650
+f 3268 3717 3718
+f 1259 3689 3399
+f 3722 5700 3550
+f 543 3986 3612
+f 6297 6608 6551
+f 4816 4716 6151
+f 1900 3005 2953
+f 3973 3656 132
+f 5700 5296 3551
+f 3550 5700 3551
+f 8221 8044 7984
+f 8409 8229 7840
+f 3727 3728 3729
+f 3116 5212 4563
+f 3733 3875 4060
+f 2414 2765 1246
+f 3946 1154 922
+f 3734 3564 3274
+f 1288 3873 3681
+f 3862 3735 4141
+f 395 3795 3768
+f 4051 3736 4125
+f 3684 4103 3685
+f 3723 4012 3684
+f 4034 3600 3739
+f 3784 3720 3972
+f 2047 4965 2048
+f 3596 3565 3741
+f 3714 3713 6178
+f 3683 3737 3793
+f 4012 3880 3684
+f 3880 4012 3771
+f 1040 1031 256
+f 255 256 3742
+f 3744 3623 1147
+f 871 3919 4124
+f 3775 3746 928
+f 3747 3748 3973
+f 4026 7941 7345
+f 4006 4137 3424
+f 3265 3751 6394
+f 6423 277 3766
+f 5667 4008 5641
+f 3744 3755 3623
+f 3623 3755 3674
+f 3674 3755 3677
+f 3677 3869 3678
+f 3806 3627 3678
+f 3869 3806 3678
+f 1671 924 1498
+f 3850 3757 5349
+f 3762 2475 3251
+f 3761 3762 3251
+f 3862 4141 4158
+f 3767 3763 6430
+f 4012 4011 3771
+f 3719 3745 3772
+f 3166 3566 4344
+f 3801 3683 3793
+f 3973 3653 3656
+f 3781 3782 3654
+f 3910 1916 3650
+f 3630 3631 7178
+f 3783 4158 3960
+f 3567 3741 957
+f 3661 3810 1152
+f 3829 3788 3901
+f 3801 3793 3789
+f 3793 2522 3789
+f 6591 6560 6710
+f 3013 3967 2329
+f 3804 3865 3790
+f 4458 1939 162
+f 8229 8399 7840
+f 20 3632 2443
+f 3387 4057 4008
+f 1255 3612 578
+f 898 1499 2527
+f 1153 4052 930
+f 3916 159 3087
+f 3725 3851 6429
+f 3819 3686 2969
+f 2451 2565 102
+f 2887 3315 2888
+f 3795 4094 3768
+f 3763 3724 6431
+f 6430 3763 6431
+f 4042 3797 3745
+f 3800 534 3763
+f 3799 2631 2287
+f 3929 3677 3755
+f 534 3724 3763
+f 3802 4138 3825
+f 2329 3774 2889
+f 3802 3772 4138
+f 100 101 1727
+f 4623 3323 4027
+f 3929 3869 3677
+f 3807 3808 3396
+f 4034 6178 3713
+f 322 3723 3846
+f 3795 395 635
+f 3811 6010 6012
+f 7304 7305 6486
+f 3783 3960 3919
+f 3439 970 6661
+f 6172 4427 6978
+f 6447 6670 6648
+f 828 1996 1997
+f 1929 828 1997
+f 3624 3625 3788
+f 3809 3824 182
+f 1778 4526 3008
+f 3796 4001 3861
+f 3588 3576 3575
+f 1230 3549 6064
+f 1372 3365 1701
+f 219 1230 6064
+f 3725 6428 450
+f 4023 3830 4024
+f 3801 3789 4120
+f 3691 4120 3692
+f 3673 3899 3805
+f 3824 189 182
+f 3588 118 3576
+f 440 4053 3323
+f 1680 689 882
+f 3273 819 3831
+f 1463 993 1954
+f 3837 3655 6385
+f 6700 7012 6698
+f 3056 3839 4029
+f 3840 3783 3919
+f 3870 3834 3871
+f 726 2461 3419
+f 7515 6975 6722
+f 3842 3494 2456
+f 3843 3844 2047
+f 2716 2456 2433
+f 6851 1918 358
+f 3985 3665 672
+f 5398 3084 2516
+f 7176 3738 3615
+f 3631 1672 1228
+f 1357 819 3273
+f 3738 1228 3615
+f 1206 7515 6722
+f 4338 4092 3927
+f 3855 3778 1999
+f 707 226 3857
+f 2894 3142 1980
+f 3768 4094 4068
+f 3858 3859 92
+f 5802 665 412
+f 6467 2525 2389
+f 3719 3772 3802
+f 4108 3825 3735
+f 3177 3897 252
+f 4108 3735 3862
+f 3664 435 118
+f 3549 3587 6064
+f 4557 4619 6115
+f 3963 3908 579
+f 2695 4033 3596
+f 436 4050 1479
+f 7176 3615 4015
+f 5773 6508 6537
+f 3839 5811 1963
+f 3868 3597 3932
+f 3290 2771 3327
+f 3853 3868 3932
+f 3744 3928 3755
+f 3928 3929 3755
+f 3869 3969 3806
+f 3806 3969 220
+f 3658 1832 2105
+f 2745 2770 3610
+f 2433 2717 2716
+f 1673 3890 724
+f 3297 3693 3610
+f 968 3872 481
+f 3681 3873 3634
+f 1288 249 667
+f 635 3680 3634
+f 1190 3680 635
+f 3680 3681 3634
+f 3874 3870 8115
+f 875 2668 2473
+f 3680 2045 3681
+f 3876 2495 3675
+f 3877 3819 1795
+f 3793 3911 2522
+f 3911 3877 1795
+f 2168 3881 6946
+f 3061 4093 936
+f 3891 3892 4093
+f 3893 4048 3892
+f 3891 3893 3892
+f 3894 4069 4048
+f 3893 3894 4048
+f 3746 5390 928
+f 273 3815 3162
+f 1900 2953 2918
+f 2721 3640 3760
+f 318 294 3588
+f 3636 2721 3762
+f 3731 3867 3797
+f 4042 3731 3797
+f 3731 3827 3867
+f 4022 3902 4023
+f 4094 3795 3927
+f 830 293 3320
+f 4003 3983 2288
+f 2990 2455 2793
+f 6840 1777 134
+f 5969 6175 3711
+f 7424 3909 3938
+f 3650 234 3910
+f 765 3189 1680
+f 2522 3911 3796
+f 6552 6619 3912
+f 7868 7871 7903
+f 6937 3913 7345
+f 4020 3825 4108
+f 3914 3915 3835
+f 8079 3959 3842
+f 3880 3771 3849
+f 1542 1727 486
+f 1542 486 3664
+f 661 2807 6856
+f 3810 3918 1855
+f 3894 4070 4069
+f 3944 4025 3920
+f 3575 309 3962
+f 3898 3861 3787
+f 3692 3898 3945
+f 3898 3787 3945
+f 3921 3692 3785
+f 3025 568 169
+f 1480 168 169
+f 3636 3762 3900
+f 569 2889 436
+f 728 3813 3586
+f 3924 6000 3925
+f 4103 4139 3966
+f 4158 3786 3960
+f 3948 3961 3786
+f 3634 3873 3635
+f 3888 3142 683
+f 3929 3969 3869
+f 3675 3676 3930
+f 4667 3285 2643
+f 3675 3930 3742
+f 1030 3675 3742
+f 8115 3870 3871
+f 256 1030 3742
+f 617 2323 855
+f 3025 3936 568
+f 3959 3975 3494
+f 3975 3461 2307
+f 3494 3975 2307
+f 159 285 6426
+f 3849 3771 3941
+f 3771 4011 6518
+f 3829 355 3788
+f 6415 1153 6416
+f 741 2041 450
+f 4153 3996 3566
+f 368 3985 104
+f 1755 502 6434
+f 3879 3685 3707
+f 3879 3723 3685
+f 3723 3684 3685
+f 2948 8246 2456
+f 3692 3945 3785
+f 185 3946 3936
+f 185 3935 3946
+f 3893 3252 3894
+f 728 3553 3813
+f 4141 3948 3786
+f 3911 4044 3796
+f 3911 3902 4044
+f 4044 3902 4022
+f 3131 1910 4295
+f 3992 2055 1855
+f 3667 3804 3950
+f 3970 3903 3904
+f 3612 3679 3952
+f 3679 3612 3986
+f 3553 3639 3813
+f 7710 7825 4653
+f 234 255 3910
+f 3612 3952 3956
+f 3957 8149 5951
+f 578 3612 3956
+f 701 4018 3744
+f 570 1533 272
+f 3878 3847 3917
+f 3846 3723 3879
+f 3847 3846 3879
+f 4018 3928 3744
+f 3725 6429 6428
+f 3827 3801 4120
+f 3797 3867 3691
+f 3867 4120 3691
+f 3745 3797 3772
+f 3640 3862 4158
+f 3640 4158 3760
+f 3567 3596 3741
+f 4143 4148 5045
+f 3828 355 3829
+f 3922 5857 3961
+f 3964 481 2046
+f 4141 3786 4158
+f 2993 1311 2992
+f 2062 3544 759
+f 3887 3889 3890
+f 4740 3950 3804
+f 2126 3378 7344
+f 4594 2848 3967
+f 3948 3922 3961
+f 8142 80 76
+f 3986 3907 3679
+f 507 570 2791
+f 2446 3149 2147
+f 2430 611 1797
+f 3937 4620 3604
+f 6567 6271 3971
+f 5200 3784 3972
+f 3972 3720 4086
+f 4053 440 3409
+f 6453 6514 6039
+f 3848 3878 3917
+f 3847 3879 3917
+f 2890 4050 436
+f 6175 6649 3711
+f 3974 8410 5820
+f 3461 3975 2771
+f 3094 3461 3290
+f 3918 3992 1855
+f 3867 3827 4120
+f 2737 820 2402
+f 3571 1281 2266
+f 4020 3719 3802
+f 4134 4573 3466
+f 4065 3616 3708
+f 3923 3900 3761
+f 3899 3923 3761
+f 4816 3980 3981
+f 4117 4002 3785
+f 2418 4167 903
+f 6416 930 6417
+f 3891 4093 3061
+f 3252 4070 3894
+f 3840 3919 4070
+f 4103 3726 4139
+f 3252 3840 4070
+f 3726 4003 4139
+f 4620 4004 454
+f 1594 234 3650
+f 3921 3785 5857
+f 2010 2746 3610
+f 3697 3931 3986
+f 1910 2211 2099
+f 992 3915 4287
+f 4017 4018 701
+f 4054 3928 4018
+f 3871 3834 5200
+f 3747 3973 132
+f 3604 4620 454
+f 4054 4019 3929
+f 3989 3990 3991
+f 3928 4054 3929
+f 3929 4019 3969
+f 3748 1429 3973
+f 3774 2890 2889
+f 101 544 1727
+f 4019 4055 3301
+f 3969 4019 3301
+f 3975 3334 2771
+f 3900 3762 3761
+f 3820 3823 1930
+f 3519 131 3628
+f 4783 194 158
+f 5804 5900 3994
+f 3628 194 4783
+f 5900 5991 3994
+f 3142 3888 3690
+f 4877 618 3924
+f 5648 4000 797
+f 2006 906 2233
+f 1420 3876 1031
+f 3726 3849 3749
+f 3849 3941 3749
+f 6157 6090 3995
+f 6540 3770 4029
+f 2813 655 352
+f 4003 3749 3983
+f 3839 6540 4029
+f 3726 3749 4003
+f 3749 4118 3983
+f 3950 4740 5452
+f 454 4004 4571
+f 4641 4005 3613
+f 4004 4641 3613
+f 4005 5928 795
+f 3613 4005 795
+f 4650 3619 795
+f 3922 3921 5857
+f 1435 8669 5122
+f 5928 4650 795
+f 8242 3572 5061
+f 7361 4085 3998
+f 4055 2016 3301
+f 4008 5992 5641
+f 5200 4009 3784
+f 6514 6006 6005
+f 3899 3761 3805
+f 6449 1995 3649
+f 4011 4012 4013
+f 3647 3541 3540
+f 3823 1929 1930
+f 3911 3737 3877
+f 4016 3681 2045
+f 1929 1997 1930
+f 3792 3823 3633
+f 6473 3791 8596
+f 7883 7909 11
+f 46 3940 45
+f 3975 3293 3334
+f 4452 3269 3268
+f 4008 4057 5992
+f 1379 1883 1890
+f 2820 398 4844
+f 7186 4034 3739
+f 6600 6121 6560
+f 3803 3804 3790
+f 544 101 569
+f 2114 2115 368
+f 2025 2115 337
+f 4001 4025 3944
+f 3960 4045 3919
+f 1248 2431 2028
+f 3897 3672 1755
+f 3820 1930 4826
+f 373 4027 374
+f 4022 4032 4030
+f 4119 4137 4006
+f 4022 4031 4032
+f 4032 4031 4006
+f 4119 3966 4137
+f 3861 4001 3787
+f 4031 4119 4006
+f 1024 2786 664
+f 4032 4006 3424
+f 504 6614 508
+f 3334 3292 2771
+f 4023 1795 3830
+f 1795 2969 3830
+f 318 3588 188
+f 3823 3820 3633
+f 6240 6659 6320
+f 6677 1088 3968
+f 3902 1795 4023
+f 4016 4037 1288
+f 4037 3977 1288
+f 3681 4016 1288
+f 1889 4039 2866
+f 2055 3992 2150
+f 4085 4084 3998
+f 1650 964 5294
+f 4041 4018 4017
+f 4041 4054 4018
+f 4446 2573 4440
+f 3600 4042 4021
+f 4779 4021 4020
+f 130 544 3747
+f 3796 4044 4025
+f 3960 3961 4045
+f 1966 1097 2021
+f 3943 4047 7008
+f 4048 3371 3892
+f 4025 4030 4091
+f 4049 4045 3961
+f 4025 4091 3920
+f 4050 1393 1479
+f 4027 4053 5320
+f 4056 5045 4148
+f 3742 3930 3910
+f 6437 3754 3828
+f 2968 4024 3830
+f 1429 1428 3973
+f 6814 5950 6703
+f 3737 3911 3793
+f 3702 4086 3720
+f 4009 5200 3834
+f 7037 5276 2150
+f 2081 3614 4062
+f 4060 4106 3923
+f 659 2791 274
+f 5276 2410 2150
+f 644 4064 6909
+f 869 1772 1647
+f 4162 4287 2440
+f 4132 4041 4017
+f 4041 4136 4054
+f 4054 4136 4019
+f 2900 4065 4043
+f 1229 2900 4043
+f 2900 4066 4065
+f 4066 3878 3616
+f 4066 4121 3878
+f 3907 477 3977
+f 2522 3796 3861
+f 3789 2522 3861
+f 4001 3796 4025
+f 4069 4070 871
+f 4069 871 3371
+f 5894 466 5642
+f 4048 4069 3371
+f 3943 3944 4047
+f 3920 4091 4047
+f 2389 2525 2452
+f 4071 5431 4072
+f 4038 5868 4067
+f 4134 3467 1479
+f 4074 6075 6684
+f 5284 4455 1998
+f 4067 5284 1998
+f 3652 3927 3795
+f 3652 3635 3927
+f 3635 3949 3927
+f 4056 4027 5320
+f 3732 4109 3624
+f 3600 4078 4042
+f 4105 2016 4055
+f 4105 154 2016
+f 638 130 3837
+f 2969 2968 3830
+f 3880 3726 4103
+f 2968 3707 4024
+f 3848 3917 3686
+f 3848 3686 3708
+f 3742 3910 255
+f 1998 4455 4229
+f 621 3231 602
+f 8044 3642 7984
+f 3733 4060 4084
+f 3640 4108 3862
+f 7861 4262 3913
+f 4063 3914 3835
+f 6937 7861 3913
+f 4063 3835 3632
+f 798 3906 3218
+f 486 297 3934
+f 4043 4065 4088
+f 7960 7846 4089
+f 3892 3371 3988
+f 4044 4022 4030
+f 778 777 1392
+f 401 328 3257
+f 5819 4092 4339
+f 4093 3892 3988
+f 1463 1954 423
+f 4095 3215 6201
+f 983 2501 2033
+f 373 4623 4027
+f 2235 3218 1327
+f 1088 4068 4094
+f 5292 2418 2410
+f 4093 3988 936
+f 3903 4099 3904
+f 5617 968 2847
+f 4044 4030 4025
+f 3887 3890 3888
+f 3684 3880 4103
+f 635 3652 3795
+f 5380 4100 4101
+f 4723 1656 5596
+f 4104 4019 4136
+f 3828 3624 355
+f 3685 4103 3966
+f 1963 6540 3839
+f 3808 5607 3396
+f 3614 4133 4062
+f 104 672 502
+f 2081 4062 4098
+f 440 324 3409
+f 655 3423 784
+f 4104 4055 4019
+f 4104 4105 4055
+f 3450 3013 2329
+f 7192 4108 3640
+f 3144 4020 4108
+f 7192 3144 4108
+f 3144 4779 4020
+f 1722 507 2791
+f 3986 3931 3907
+f 412 665 1257
+f 130 132 3837
+f 1727 130 486
+f 3683 4110 3737
+f 4043 4088 3737
+f 3805 3761 3891
+f 4030 4032 4112
+f 6245 3839 3056
+f 5276 5292 2410
+f 7200 5660 6054
+f 4723 4113 1656
+f 4130 5686 3660
+f 3257 328 374
+f 4114 3643 1862
+f 4113 4114 1862
+f 4766 1931 3643
+f 5292 4167 2418
+f 4114 4766 3643
+f 4775 3651 1931
+f 4766 4775 1931
+f 4775 4126 3651
+f 1961 4116 5789
+f 3859 439 4046
+f 3880 3849 3726
+f 5410 3666 3978
+f 4111 4043 3737
+f 2900 4121 4066
+f 4123 5418 8348
+f 8025 8050 3585
+f 4247 4385 5368
+f 630 3337 2092
+f 1434 4121 4102
+f 3377 276 3815
+f 4775 5712 4126
+f 3786 3961 3960
+f 4127 4128 8511
+f 252 3897 3724
+f 3576 299 309
+f 3575 3576 309
+f 4133 3683 4062
+f 4573 4574 162
+f 358 1918 1919
+f 3614 1227 4133
+f 1227 4110 4133
+f 1229 4043 4111
+f 1227 4111 4110
+f 3466 163 3467
+f 1227 1229 4111
+f 4136 4182 4104
+f 7166 7195 4713
+f 544 3748 3747
+f 4078 3731 4042
+f 4078 4098 3731
+f 4098 3827 3731
+f 4138 3922 3948
+f 3988 3369 505
+f 537 295 1230
+f 4030 4112 4091
+f 2894 1980 353
+f 2309 610 2211
+f 1393 4050 2890
+f 366 3752 3779
+f 3735 3948 4141
+f 2805 413 3670
+f 3754 3732 3828
+f 3519 277 6423
+f 3813 2918 3860
+f 3917 3879 2968
+f 3879 3707 2968
+f 571 1532 4156
+f 3985 3732 3754
+f 3665 3985 3754
+f 3371 871 870
+f 1730 968 481
+f 922 1154 411
+f 406 922 410
+f 1962 1961 5789
+f 2329 3967 3774
+f 569 436 3748
+f 4121 3847 3878
+f 130 638 297
+f 419 307 308
+f 2028 1054 5409
+f 6110 4149 6246
+f 3903 7424 4099
+f 3682 2020 3883
+f 4021 4042 3745
+f 3760 3783 2475
+f 936 3988 505
+f 3833 248 3339
+f 3371 3999 3369
+f 3988 3371 3369
+f 3007 3212 1746
+f 1540 1653 780
+f 3653 3781 3654
+f 4189 3256 4173
+f 1258 1277 3471
+f 1719 855 2720
+f 3656 3653 3655
+f 3469 6863 3271
+f 728 3586 3587
+f 4094 3927 4092
+f 3789 3861 3898
+f 4120 3789 3898
+f 4099 3938 4122
+f 4161 933 124
+f 4181 4132 666
+f 4181 4041 4132
+f 4133 4110 3683
+f 4162 5947 1132
+f 3685 3966 3707
+f 324 2008 4416
+f 3966 4139 4137
+f 746 2789 2763
+f 3702 3970 4086
+f 3022 4171 2998
+f 1277 3507 3514
+f 4171 4172 2998
+f 4163 1416 4145
+f 4213 4136 4041
+f 4181 4213 4041
+f 5802 1565 4498
+f 3808 4129 5727
+f 4065 4066 3616
+f 2041 417 450
+f 4165 4192 4151
+f 4136 4213 4182
+f 1925 3609 1255
+f 273 289 508
+f 4060 3923 3899
+f 4079 4060 3899
+f 3290 3461 2771
+f 1274 793 379
+f 4179 2582 4154
+f 2965 2943 2872
+f 2943 2965 994
+f 4180 4144 3300
+f 4180 3418 4144
+f 3274 3214 3734
+f 2501 2165 2731
+f 4022 4023 4031
+f 4021 3745 3719
+f 7871 4176 5633
+f 4188 4105 4104
+f 4188 4225 4105
+f 1641 3295 1225
+f 3295 1500 1225
+f 3970 3702 4175
+f 4110 4111 3737
+f 2481 323 350
+f 3426 3471 3456
+f 3997 3883 4122
+f 4076 4171 3022
+f 2011 2463 2457
+f 3883 3997 3682
+f 3775 968 5617
+f 3735 3825 3948
+f 3851 3763 3767
+f 3837 132 3656
+f 3679 3907 3977
+f 4098 4062 3827
+f 3332 3889 3887
+f 4106 2722 3636
+f 3609 3562 1255
+f 1464 8645 3543
+f 4176 8146 5633
+f 746 2237 745
+f 1377 3650 1916
+f 3029 1377 1916
+f 3944 3920 4047
+f 3851 3800 3763
+f 3112 4189 3263
+f 4190 3128 3263
+f 3113 4154 3262
+f 4180 3300 4168
+f 4207 3418 4180
+f 4207 3425 3418
+f 4170 2011 2457
+f 3421 2461 3420
+f 4099 7424 3938
+f 4020 4021 3719
+f 3760 4158 3783
+f 3682 4079 3673
+f 4148 4027 4056
+f 3890 1256 724
+f 4195 4172 4171
+f 4184 3000 4172
+f 4195 4184 4172
+f 3000 4184 4185
+f 3051 716 561
+f 1208 1417 473
+f 4079 3899 3673
+f 6035 5803 4186
+f 3825 4138 3948
+f 4024 4119 4031
+f 4120 3898 3692
+f 4024 3707 4119
+f 4031 4023 4024
+f 4138 3921 3922
+f 4106 3636 3923
+f 4203 4187 4196
+f 4583 222 365
+f 4441 4583 365
+f 4594 3967 1979
+f 4190 4191 3113
+f 4191 4204 3113
+f 4204 4154 3113
+f 4259 4179 4154
+f 4235 3425 4207
+f 1586 1187 2772
+f 3022 2998 2997
+f 2500 2165 2501
+f 1620 3315 1643
+f 4003 2261 4139
+f 3970 4175 3903
+f 4106 3939 2722
+f 4226 907 4225
+f 3013 3450 3005
+f 4215 4076 4214
+f 4194 4171 4076
+f 4215 4194 4076
+f 4194 4195 4171
+f 4184 4216 4185
+f 4196 4187 4197
+f 4250 2108 293
+f 3877 4088 3708
+f 2475 3783 3840
+f 1297 7043 6248
+f 3945 3787 3943
+f 3787 4001 3943
+f 4001 3944 3943
+f 3707 3966 4119
+f 4138 3691 3921
+f 4165 4193 4192
+f 212 1377 3029
+f 5839 1054 1642
+f 3190 4201 8682
+f 8039 8417 8416
+f 4088 4065 3708
+f 4062 3683 3801
+f 293 830 4250
+f 722 2290 735
+f 4189 4244 4190
+f 4204 4259 4154
+f 4259 4205 4179
+f 4206 4168 4179
+f 4205 4206 4179
+f 4206 4234 4168
+f 4234 4180 4168
+f 4234 4207 4180
+f 2011 2469 2463
+f 2262 896 3207
+f 4934 3666 413
+f 3974 5820 8416
+f 2586 8435 4211
+f 538 3555 3557
+f 295 3573 1230
+f 4254 4195 4194
+f 4254 4228 4195
+f 4228 4216 4184
+f 4195 4228 4184
+f 4203 4091 4224
+f 611 2430 431
+f 4143 5427 3257
+f 4213 1655 4182
+f 4088 3877 3737
+f 6601 1343 3704
+f 3507 1277 1244
+f 3945 3943 4117
+f 3785 3945 4117
+f 4218 5871 5406
+f 3251 2475 3252
+f 3691 3692 3921
+f 3679 3977 4037
+f 212 1594 1377
+f 4182 723 4104
+f 3420 1812 764
+f 4173 4244 4189
+f 4244 4191 4190
+f 4259 4221 4205
+f 4221 4206 4205
+f 4234 4222 4207
+f 4222 4235 4207
+f 3983 3168 2291
+f 1618 4210 4209
+f 4748 2528 4220
+f 3910 3294 1916
+f 3639 1900 2918
+f 4117 3943 7008
+f 723 4188 4104
+f 3569 5666 185
+f 3963 4142 5745
+f 3721 4219 3722
+f 5727 4441 3558
+f 4073 7910 4839
+f 4047 4091 4203
+f 4264 4215 4214
+f 4241 4264 4214
+f 4264 4227 4215
+f 4227 4194 4215
+f 4227 4254 4194
+f 4272 4217 4216
+f 3190 4475 4201
+f 5091 5312 485
+f 4219 5700 3722
+f 242 4241 2569
+f 3760 3762 2721
+f 2810 2586 4242
+f 3672 104 502
+f 4231 4077 3547
+f 4091 2082 4224
+f 2509 1852 854
+f 4232 4191 4244
+f 4232 4233 4191
+f 4233 4204 4191
+f 3105 3187 3104
+f 4291 4208 4223
+f 3105 1618 4209
+f 552 2045 3680
+f 572 4236 1892
+f 190 1499 898
+f 7882 4237 7854
+f 4238 4181 666
+f 2233 4238 666
+f 4181 4238 4213
+f 1852 4208 4291
+f 4264 4254 4227
+f 4270 4228 4254
+f 4270 265 4216
+f 4228 4270 4216
+f 4216 265 4272
+f 1416 3717 3269
+f 2943 994 2944
+f 3493 3104 4284
+f 1655 723 4182
+f 2433 2456 3494
+f 4242 1511 2810
+f 1511 3276 3845
+f 3845 4243 3734
+f 4243 4256 3734
+f 4256 4257 3564
+f 3734 4256 3564
+f 4091 4112 2082
+f 3452 3030 3034
+f 4062 3801 3827
+f 4084 4060 4079
+f 2402 599 2473
+f 2642 3077 1882
+f 2233 2813 352
+f 4233 4259 4204
+f 4285 4221 4259
+f 4260 4234 4206
+f 4221 4260 4206
+f 4260 4222 4234
+f 4286 4235 4222
+f 4260 4286 4222
+f 4286 304 4235
+f 2983 2955 4293
+f 4208 3347 4223
+f 4223 3347 3282
+f 3056 4029 2344
+f 4145 4250 4163
+f 4251 4225 4188
+f 4251 4226 4225
+f 276 3606 3162
+f 4112 4032 782
+f 3998 4079 3682
+f 926 1531 2734
+f 4288 4241 4253
+f 4289 4264 4241
+f 4288 4289 4241
+f 4269 4254 4264
+f 1225 1500 1540
+f 2233 352 4238
+f 4257 4266 3564
+f 3564 4266 501
+f 4266 2697 501
+f 3172 3205 934
+f 2248 518 2101
+f 3418 3425 3407
+f 4263 8615 4245
+f 3875 4106 4060
+f 4012 3723 322
+f 322 4013 4012
+f 2555 4282 4244
+f 4244 4282 4232
+f 4285 4246 4221
+f 4246 4260 4221
+f 4178 2983 4292
+f 2613 4291 4290
+f 2821 1191 2983
+f 7213 4231 3882
+f 4262 2125 2126
+f 3835 971 656
+f 2125 4095 2126
+f 2457 2458 903
+f 3998 4084 4079
+f 2031 1093 2032
+f 4254 4269 4270
+f 3676 2487 3930
+f 3350 2509 3361
+f 4247 4248 5879
+f 4277 4265 4242
+f 4265 4278 1511
+f 4242 4265 1511
+f 4278 4294 3276
+f 1511 4278 3276
+f 3276 4294 4243
+f 4294 4279 4243
+f 4243 4279 4256
+f 4256 4279 4257
+f 4280 2697 4266
+f 3590 4370 3697
+f 2126 4095 3378
+f 1093 1620 2136
+f 2573 4282 2555
+f 4283 4233 4232
+f 4284 4259 4233
+f 4284 4285 4259
+f 3111 304 3110
+f 3187 4246 4285
+f 4295 2099 4279
+f 1191 2956 2955
+f 2431 2207 1473
+f 1776 326 4267
+f 4268 4288 4253
+f 4290 4269 4264
+f 4289 4290 4264
+f 4270 4271 265
+f 4271 4272 265
+f 1372 1701 738
+f 4137 822 3424
+f 4257 4296 4266
+f 3590 3697 3559
+f 3611 3590 3559
+f 3507 472 3514
+f 1292 1274 378
+f 4283 4284 4233
+f 4209 4260 4246
+f 3110 304 4286
+f 4279 2099 4296
+f 3104 2308 4284
+f 1500 1653 1540
+f 3686 3917 2969
+f 2495 3320 3608
+f 724 4188 723
+f 542 3611 3559
+f 475 509 1683
+f 4291 4269 4290
+f 4291 4271 4270
+f 4269 4291 4270
+f 4303 4551 4550
+f 2785 2933 2610
+f 3532 4255 4298
+f 4211 8353 4277
+f 4265 4292 4278
+f 4292 4293 4278
+f 4278 4293 4294
+f 3131 4295 4294
+f 4294 4295 4279
+f 4279 4296 4257
+f 4296 1746 4266
+f 1746 4280 4266
+f 1746 4281 4280
+f 3647 3540 3542
+f 3425 4663 2760
+f 724 4251 4188
+f 1349 1350 4297
+f 1587 2359 1331
+f 1540 4282 2573
+f 4282 4283 4232
+f 780 725 4283
+f 2308 4285 4284
+f 4209 4210 4260
+f 4210 4286 4260
+f 431 2059 432
+f 2308 3104 3187
+f 1653 725 780
+f 1834 3031 3452
+f 137 367 3570
+f 5142 1417 3544
+f 1255 3562 542
+f 3875 4200 4106
+f 1654 4288 4268
+f 1654 4289 4288
+f 1654 4290 4289
+f 4291 4223 4271
+f 4223 4272 4271
+f 507 1002 570
+f 4137 4139 2208
+f 1882 3077 4277
+f 8353 1882 4277
+f 3077 4178 4265
+f 4277 3077 4265
+f 4265 4178 4292
+f 4293 3131 4294
+f 4398 4300 268
+f 4300 4301 268
+f 268 4301 4302
+f 4301 4504 4302
+f 2040 1329 4425
+f 4304 1992 4303
+f 4306 2040 4425
+f 514 4306 4683
+f 4484 4496 4483
+f 514 4683 4307
+f 4715 4305 4337
+f 4590 514 4307
+f 4304 4308 2132
+f 3936 922 406
+f 2132 4308 243
+f 4305 4590 4307
+f 4483 4496 1993
+f 4496 4518 4309
+f 1993 4496 4309
+f 4310 4646 4581
+f 4308 4311 243
+f 4646 4709 4581
+f 4581 4709 4318
+f 4313 4314 4316
+f 4315 4589 160
+f 4321 4621 4317
+f 4311 4434 1901
+f 568 3936 425
+f 4621 4312 4317
+f 3936 406 425
+f 4318 500 4327
+f 1901 4434 230
+f 1480 568 425
+f 197 1993 4632
+f 4468 4578 125
+f 4281 4343 4280
+f 4343 4281 3535
+f 258 4335 4331
+f 357 4741 2472
+f 2010 3610 3693
+f 197 4352 123
+f 4977 2202 4495
+f 2072 141 3646
+f 4403 4333 209
+f 4350 3220 4343
+f 200 122 186
+f 5754 3964 4340
+f 2051 5399 4342
+f 4460 170 4610
+f 2527 1189 4655
+f 3563 2824 99
+f 4317 4312 259
+f 4346 4347 170
+f 1933 232 149
+f 2093 261 671
+f 738 1159 4725
+f 3220 2697 4343
+f 1705 3344 3183
+f 4349 4350 4343
+f 2648 4377 4376
+f 4312 1657 259
+f 3927 3949 4338
+f 4366 4354 4330
+f 4321 4317 4322
+f 4361 4362 4349
+f 3535 4361 4349
+f 4362 4350 4349
+f 4362 4363 4350
+f 4363 2406 4350
+f 4613 4360 477
+f 4591 363 387
+f 1969 1029 4714
+f 3437 2134 4355
+f 2134 4371 4355
+f 4355 4371 4361
+f 4364 4263 4365
+f 4368 4476 4360
+f 2033 616 983
+f 2134 2135 4371
+f 4371 4380 4361
+f 4380 4388 4361
+f 4361 4388 4362
+f 4388 4372 4362
+f 4372 4373 4363
+f 4362 4372 4363
+f 4373 4382 4363
+f 2358 4838 2301
+f 4354 4366 4378
+f 1328 363 4591
+f 1934 1933 149
+f 2135 4387 4371
+f 4387 4380 4371
+f 4388 4395 4372
+f 4373 4381 4382
+f 4479 4389 4383
+f 4379 4479 4383
+f 1503 1814 1801
+f 1932 4875 4874
+f 4385 4240 4351
+f 4386 3226 6084
+f 4393 4387 2135
+f 4387 4394 4380
+f 4394 4388 4380
+f 4395 4400 4372
+f 4372 4400 4373
+f 4373 4400 4381
+f 294 3664 118
+f 4389 4479 4391
+f 4390 4480 4392
+f 4391 4390 4392
+f 1934 149 1971
+f 4394 4387 4393
+f 4406 4388 4394
+f 4388 4406 4395
+f 4400 4396 4381
+f 4381 783 1776
+f 2135 6025 1817
+f 2217 1315 3769
+f 4397 4398 4480
+f 4398 4397 4300
+f 4301 4300 4239
+f 4791 2533 5403
+f 5651 5274 4146
+f 1961 4399 4116
+f 5945 4393 1817
+f 4405 4394 4393
+f 4417 4405 4393
+f 4405 4418 4394
+f 4418 4406 4394
+f 4408 4409 4381
+f 4396 4408 4381
+f 4409 4401 4381
+f 4401 4402 783
+f 4381 4401 783
+f 165 1202 4403
+f 3254 4173 3256
+f 933 155 1463
+f 294 118 3588
+f 929 3963 5745
+f 4406 4407 4395
+f 4407 4396 4400
+f 4395 4407 4400
+f 4409 4410 4401
+f 4410 4402 4401
+f 4410 1185 4402
+f 4422 3236 1185
+f 3000 2999 4172
+f 4424 2093 671
+f 4505 4302 4504
+f 4505 4303 4302
+f 4505 4415 4303
+f 4415 4304 4303
+f 2008 706 4416
+f 1843 2988 212
+f 5274 1257 4800
+f 4428 4405 4417
+f 4429 4418 4405
+f 4428 4429 4405
+f 4419 4406 4418
+f 4419 4420 4407
+f 4406 4419 4407
+f 4407 4420 4396
+f 4396 4420 4408
+f 4408 4421 4409
+f 3410 4410 4409
+f 4421 3410 4409
+f 3410 4422 4410
+f 2706 2756 1519
+f 2623 1294 2419
+f 4328 4329 888
+f 488 2782 4627
+f 4425 2093 4424
+f 4426 4306 4425
+f 4304 4519 4308
+f 4519 1612 4308
+f 4147 1686 3780
+f 5312 484 485
+f 665 3570 1257
+f 5852 1686 512
+f 4558 3843 137
+f 2047 366 367
+f 4444 4429 4428
+f 4429 4419 4418
+f 4419 4430 4420
+f 4431 4408 4420
+f 4430 4431 4420
+f 4431 4421 4408
+f 4431 305 4421
+f 305 3410 4421
+f 4452 4657 2629
+f 1230 3573 3549
+f 303 164 391
+f 488 4627 1967
+f 4627 4626 1967
+f 4626 4611 361
+f 1967 4626 361
+f 4611 4615 361
+f 1612 4434 4311
+f 4308 1612 4311
+f 1257 4435 4800
+f 5060 3951 7012
+f 337 2823 4436
+f 3588 3575 3773
+f 957 3780 5821
+f 188 3588 3773
+f 5753 2684 5853
+f 4437 4428 4417
+f 4438 4419 4429
+f 4444 4438 4429
+f 4419 4438 4430
+f 4438 4439 4430
+f 4439 4440 4431
+f 4430 4439 4431
+f 4440 2074 4431
+f 4431 2074 305
+f 3410 3333 4422
+f 264 3555 4441
+f 3934 3400 6407
+f 4487 4538 2069
+f 174 1198 4621
+f 4369 375 160
+f 3269 4452 4443
+f 2596 1800 1726
+f 3739 3712 7186
+f 35 6186 24
+f 2824 2823 2115
+f 3657 957 5821
+f 188 3773 828
+f 228 188 828
+f 4445 4439 4438
+f 4444 4445 4438
+f 4439 4446 4440
+f 5311 5364 7156
+f 4463 3563 99
+f 3408 4448 4622
+f 4450 4550 4578
+f 129 370 3076
+f 361 4615 165
+f 2443 656 3940
+f 2555 2074 4440
+f 2824 2115 99
+f 4459 2042 4445
+f 4445 2042 4439
+f 2042 4446 4439
+f 4298 5334 2428
+f 7826 8179 948
+f 6202 4485 146
+f 242 347 3078
+f 165 4615 4617
+f 4462 2823 2824
+f 3809 3568 3824
+f 4464 189 3824
+f 4796 1477 897
+f 366 2048 3752
+f 4459 1225 2042
+f 3359 4603 3278
+f 2573 2555 4440
+f 3957 3832 189
+f 4457 7826 2092
+f 4806 3987 4448
+f 3563 4462 2824
+f 1404 3474 6942
+f 4464 3957 189
+f 1535 1225 4459
+f 678 712 5418
+f 957 4147 3780
+f 5431 5568 5903
+f 4423 4309 4515
+f 2460 3437 3212
+f 905 4487 2069
+f 3957 8005 3832
+f 4476 4548 4379
+f 4548 4479 4379
+f 4331 4494 3521
+f 2472 4390 4391
+f 4479 2472 4391
+f 1379 1890 2500
+f 4347 140 170
+f 4477 372 3987
+f 371 4478 4486
+f 4466 4500 908
+f 4541 4596 4614
+f 3408 4622 6026
+f 239 887 244
+f 4322 4488 4489
+f 1935 375 4433
+f 4617 4634 1202
+f 4634 4484 4483
+f 1505 1478 1506
+f 4338 4339 4092
+f 4859 4492 4493
+f 140 4495 170
+f 2092 513 630
+f 310 4469 166
+f 179 667 249
+f 4469 4323 4461
+f 1202 4634 4483
+f 4301 3463 4504
+f 4566 4505 4504
+f 4506 1328 4662
+f 252 222 183
+f 371 4516 4478
+f 244 117 1619
+f 4499 907 4226
+f 4512 4513 4542
+f 4643 4523 4524
+f 3823 219 1929
+f 4599 4524 4585
+f 4569 4540 4584
+f 4466 908 4467
+f 4516 4525 4478
+f 4474 4517 4530
+f 887 622 244
+f 671 4507 4602
+f 4612 671 4602
+f 4675 4424 4612
+f 4304 4415 4519
+f 4518 4691 4309
+f 4329 4335 258
+f 4599 4585 4557
+f 4533 4599 4557
+f 4499 4467 907
+f 141 428 3646
+f 544 130 1727
+f 4369 1064 375
+f 4691 4697 4515
+f 4425 4424 4675
+f 4424 671 4612
+f 626 106 858
+f 5039 5098 5080
+f 4687 539 4527
+f 4530 4517 362
+f 4323 4451 4461
+f 4607 4552 4531
+f 4521 4629 4520
+f 4542 1756 2734
+f 4633 4539 4532
+f 4540 4532 4512
+f 4534 4541 4523
+f 2022 2132 4473
+f 4516 4595 4525
+f 4595 4535 4525
+f 4468 4450 4578
+f 1064 4433 375
+f 2569 347 242
+f 117 2133 1478
+f 4309 4691 4515
+f 3552 6154 6219
+f 6617 4334 1935
+f 4053 4082 5320
+f 4305 4307 4677
+f 4529 4647 4318
+f 4705 4700 4466
+f 4560 4552 4607
+f 4539 4554 4532
+f 4555 4532 4540
+f 2719 240 4765
+f 4513 1756 4542
+f 280 701 1147
+f 2155 2154 201
+f 4241 242 2989
+f 4515 4697 4310
+f 4697 4646 4310
+f 1506 1478 1426
+f 4665 4360 4613
+f 6032 4305 4545
+f 4665 4616 4360
+f 4616 4368 4360
+f 4616 4546 4368
+f 4546 4476 4368
+f 4546 4548 4476
+f 2216 1194 1195
+f 4544 4253 2989
+f 4550 4551 1197
+f 4539 4553 4554
+f 4569 4555 4540
+f 4523 4588 4524
+f 4596 4525 4522
+f 4595 4521 4535
+f 3780 3597 3868
+f 4145 4443 4561
+f 3906 198 3218
+f 4316 489 4499
+f 3780 5852 3597
+f 4318 4647 500
+f 1656 1862 4562
+f 4305 4677 4545
+f 4307 4683 4537
+f 4564 4636 4390
+f 2472 4564 4390
+f 1158 1190 395
+f 4390 4636 4480
+f 2264 287 1316
+f 4565 5150 238
+f 1769 2216 540
+f 1125 1063 1062
+f 4567 5541 4492
+f 4327 2623 2091
+f 509 887 239
+f 4582 4516 371
+f 3259 1293 3226
+f 4553 4568 4554
+f 4596 4522 4569
+f 4522 4555 4569
+f 172 4541 4614
+f 4553 4570 3211
+f 1329 4473 4411
+f 362 2112 363
+f 1862 4547 4562
+f 4566 4572 4505
+f 4572 4415 4505
+f 259 1256 3889
+f 4709 4529 4318
+f 4573 4083 4574
+f 4577 4083 4573
+f 3164 4575 1315
+f 1612 4576 4434
+f 5575 4579 4580
+f 2897 2883 2901
+f 4582 4472 4595
+f 4596 4569 4614
+f 4556 4533 4557
+f 4523 4541 4586
+f 4541 172 4586
+f 4555 4633 4532
+f 4477 6801 372
+f 4353 4442 4582
+f 1374 1426 2782
+f 4353 1534 4442
+f 4576 4648 4434
+f 1861 5079 1860
+f 4432 3776 2772
+f 4451 4609 4346
+f 4662 1328 4591
+f 905 173 4487
+f 2155 349 2154
+f 4338 4336 4339
+f 4323 4593 4451
+f 211 4581 2091
+f 2569 4241 4214
+f 3544 2136 5142
+f 4553 3211 4568
+f 4540 4512 4651
+f 372 6801 4353
+f 4355 4361 3535
+f 3597 5852 3937
+f 1657 4499 259
+f 4402 1185 783
+f 4538 4487 4600
+f 1478 1541 117
+f 1935 237 6617
+f 4473 4474 4411
+f 3646 428 3949
+f 396 1891 5068
+f 4324 4348 4323
+f 305 2074 3254
+f 1955 1983 4580
+f 4609 4347 4346
+f 4472 4432 2979
+f 5328 4052 4453
+f 4705 625 4348
+f 1772 1648 1647
+f 4217 3076 4216
+f 4824 2155 1198
+f 4598 4605 4592
+f 4651 4512 4542
+f 4607 4570 4553
+f 4607 4553 4539
+f 2069 4538 1032
+f 4560 4543 4552
+f 145 1160 886
+f 4664 4507 4506
+f 118 435 299
+f 4923 2118 5021
+f 3613 795 4357
+f 3602 4797 4613
+f 4223 3282 4272
+f 4609 3521 4347
+f 4442 4432 4472
+f 4331 3521 4609
+f 1978 1983 1955
+f 2087 897 739
+f 4467 908 907
+f 6417 573 2516
+f 148 167 509
+f 4523 4586 4588
+f 4511 514 4590
+f 4643 4524 4599
+f 4520 4607 4539
+f 4397 4239 4300
+f 489 4467 4499
+f 2217 1148 1544
+f 4602 4507 4664
+f 2428 5334 2619
+f 4511 2022 514
+f 2093 1329 261
+f 4665 4666 4616
+f 4809 4546 4616
+f 4549 4310 4581
+f 4593 4331 4609
+f 4593 4609 4451
+f 242 4531 4552
+f 547 148 509
+f 4535 4633 4555
+f 6034 1969 6033
+f 4596 4541 4534
+f 301 4630 392
+f 4605 1531 1611
+f 172 4614 4325
+f 103 2444 2390
+f 4590 4305 4715
+f 4321 4489 174
+f 4520 4539 4633
+f 4520 4629 4560
+f 4369 160 4589
+f 4628 4626 4627
+f 514 2022 2040
+f 4426 4425 4675
+f 4696 4683 4617
+f 1197 4511 4590
+f 4595 4629 4521
+f 4525 4535 4522
+f 1929 219 581
+f 4533 4556 6026
+f 4614 4569 4597
+f 4585 4524 4588
+f 209 291 2053
+f 1287 360 331
+f 4586 172 905
+f 1879 196 1909
+f 4585 4588 4619
+f 4423 4515 302
+f 4606 4599 4533
+f 292 428 141
+f 5370 6152 4962
+f 4510 4543 4560
+f 4629 4510 4560
+f 489 4466 4467
+f 4683 4634 4617
+f 4684 4683 4306
+f 4306 4426 4682
+f 4537 4683 4696
+f 4484 4684 4496
+f 4548 4635 4479
+f 4635 2472 4479
+f 2040 2022 1329
+f 418 2052 2051
+f 153 3613 4624
+f 4516 4582 4595
+f 667 141 2072
+f 3557 3555 264
+f 4630 4423 392
+f 931 4594 1979
+f 209 4333 291
+f 4592 4605 1611
+f 1640 1611 442
+f 5389 3854 4166
+f 4586 905 4588
+f 331 209 2053
+f 4585 4619 4557
+f 301 4632 4630
+f 4522 4535 4555
+f 3553 454 4571
+f 4741 4637 4636
+f 4496 4684 4518
+f 2109 4966 2110
+f 428 4470 4589
+f 7826 948 2092
+f 4534 4525 4596
+f 180 4632 301
+f 3344 4712 4728
+f 4325 4614 4597
+f 4559 4598 336
+f 902 885 2732
+f 230 3758 4517
+f 4321 4322 4489
+f 4597 4569 4584
+f 1656 4562 4502
+f 2022 4473 1329
+f 6032 4545 4644
+f 4645 4572 4566
+f 3781 4645 3782
+f 6641 3981 3980
+f 4645 4649 4572
+f 4649 4415 4572
+f 157 2991 2940
+f 2122 4830 4825
+f 4470 4369 4589
+f 4640 5470 744
+f 6642 6032 4644
+f 4532 4554 4512
+f 4542 3511 4651
+f 2398 895 1422
+f 4597 4584 286
+f 286 4559 336
+f 1265 2060 4594
+f 4474 1901 4517
+f 4352 4632 180
+f 908 4500 1264
+f 3619 5868 3620
+f 4700 4500 4466
+f 4346 170 4460
+f 170 2202 4610
+f 4647 4652 500
+f 3620 5868 4038
+f 4649 4458 4519
+f 4415 4649 4519
+f 4458 162 1612
+f 4519 4458 1612
+f 1612 162 4576
+f 3291 4654 1452
+f 4698 5275 5120
+f 578 4655 2266
+f 2217 3769 1148
+f 2569 4214 3049
+f 4348 4593 4323
+f 4377 4657 3268
+f 3718 4658 4377
+f 4639 148 547
+f 1029 4639 574
+f 3987 4659 4448
+f 3359 3278 4681
+f 4631 4597 286
+f 4584 4559 286
+f 4359 4341 2038
+f 3425 4490 4663
+f 336 4598 4592
+f 993 1147 1954
+f 2760 4663 3278
+f 4584 4540 4559
+f 4659 4486 4642
+f 372 371 4486
+f 412 1257 5274
+f 2154 349 4708
+f 5284 4067 5868
+f 4581 4318 4327
+f 1275 1025 2030
+f 4336 1935 4334
+f 742 119 144
+f 1295 857 825
+f 4348 4324 4700
+f 7842 7924 4660
+f 5323 4083 4229
+f 4520 4560 4607
+f 4554 4568 4513
+f 4642 4643 4599
+f 4661 4690 1799
+f 684 2534 2517
+f 4658 4376 4377
+f 1881 4463 99
+f 4659 4642 4606
+f 4324 4469 3132
+f 1499 727 2527
+f 3268 3718 4377
+f 530 531 2292
+f 4564 2472 4741
+f 888 4329 625
+f 2071 1873 827
+f 4662 4591 4652
+f 4664 4506 4662
+f 825 1296 164
+f 244 622 117
+f 4512 4554 4513
+f 4588 905 4485
+f 546 1721 1794
+f 3794 219 3823
+f 4680 4663 4490
+f 4605 3511 1531
+f 3590 3627 4370
+f 4540 4651 4598
+f 372 4486 4659
+f 336 2026 859
+f 622 2133 117
+f 4433 125 237
+f 4612 4602 4664
+f 3602 4790 4797
+f 3173 4332 606
+f 4705 4466 4314
+f 4724 4662 4652
+f 4797 4665 4613
+f 4626 4676 4611
+f 1566 4669 4498
+f 2292 531 533
+f 1499 4236 727
+f 3111 4670 304
+f 304 4670 1232
+f 4670 4689 1232
+f 1232 4689 4490
+f 4680 4681 4663
+f 3212 4355 3535
+f 2473 2668 2669
+f 174 4621 4321
+f 4559 4540 4598
+f 4448 4659 4606
+f 2819 2049 1983
+f 4448 4606 4622
+f 284 2069 1032
+f 146 2068 4672
+f 164 1296 742
+f 4716 4674 4626
+f 4666 4809 4616
+f 4546 4809 4548
+f 4676 4677 4615
+f 4678 4453 4454
+f 4461 138 434
+f 4711 4688 2292
+f 6809 6801 4477
+f 1108 2875 1083
+f 4689 4680 4490
+f 4598 4651 4605
+f 1066 409 4450
+f 4468 1066 4450
+f 335 286 336
+f 3005 414 3013
+f 4491 4530 362
+f 4674 4676 4626
+f 4675 4612 4706
+f 4634 4684 4484
+f 4637 5059 4685
+f 4564 4741 4636
+f 652 4267 326
+f 3781 1568 4645
+f 1029 4640 4639
+f 3818 4686 4687
+f 4851 5576 4961
+f 533 4711 2292
+f 4711 4693 4688
+f 4689 4694 4680
+f 4605 4651 3511
+f 4643 4534 4523
+f 4531 3211 4570
+f 2072 3646 3873
+f 4611 4676 4615
+f 4682 4426 4675
+f 4684 4306 4682
+f 4537 4617 4615
+f 6645 3941 6518
+f 1568 1939 4649
+f 4649 1939 4458
+f 4684 4691 4518
+f 4346 4460 138
+f 3111 4701 4670
+f 4701 4720 4689
+f 4670 4701 4689
+f 4720 4702 4689
+f 4689 4702 4694
+f 4695 4857 279
+f 4551 4345 4511
+f 1208 862 3544
+f 4607 4531 4570
+f 4432 2772 2979
+f 4443 4452 4561
+f 4677 4537 4615
+f 4537 4696 4617
+f 4425 1329 2093
+f 4324 4323 4469
+f 4307 4537 4677
+f 2282 2301 4838
+f 4693 4717 4688
+f 4694 4702 4680
+f 4712 4603 3359
+f 3804 3803 4740
+f 4515 4549 302
+f 392 4423 302
+f 4642 4599 4606
+f 6323 4704 5507
+f 4474 4530 4411
+f 4348 4700 4705
+f 4691 4675 4697
+f 1984 668 3321
+f 349 152 4708
+f 3051 2809 420
+f 4693 4731 4717
+f 4688 4717 3111
+f 3111 4717 4701
+f 4702 4721 4680
+f 4721 4681 4680
+f 4721 4718 4681
+f 4718 3359 4681
+f 4718 4712 3359
+f 4712 3344 4603
+f 5621 6297 6004
+f 4606 4533 4622
+f 640 623 4132
+f 4568 3211 4513
+f 3211 1756 4513
+f 262 4325 4449
+f 4498 4558 5802
+f 1955 4714 1982
+f 1288 3977 249
+f 428 4589 4315
+f 4644 4545 4707
+f 6641 4644 3981
+f 3981 4644 4707
+f 4646 4706 4709
+f 331 360 209
+f 4654 830 1420
+f 4345 2132 2022
+f 4720 4727 4702
+f 4727 4733 4702
+f 4702 4733 4721
+f 3710 2043 970
+f 302 4549 211
+f 4633 4521 4520
+f 1065 262 4449
+f 5330 4356 5554
+f 4329 258 625
+f 4297 401 1349
+f 4316 4499 1657
+f 2410 4399 1961
+f 4341 4316 1657
+f 237 125 4601
+f 2619 5348 2632
+f 4697 4706 4646
+f 4491 362 1328
+f 449 215 254
+f 4725 4730 738
+f 738 4730 4711
+f 4711 4730 4693
+f 4726 4701 4717
+f 4728 4718 4735
+f 4728 4712 4718
+f 3976 2501 2731
+f 4722 214 2627
+f 1955 4579 4714
+f 4535 4521 4633
+f 2040 4306 514
+f 4485 1936 2068
+f 3230 4608 536
+f 4312 4341 1657
+f 4664 4662 4724
+f 1481 2398 1422
+f 4618 791 4672
+f 4730 4731 4693
+f 4731 4726 4717
+f 4726 4732 4701
+f 4701 4732 4720
+f 4732 4727 4720
+f 4739 4718 4721
+f 4733 4739 4721
+f 4739 4735 4718
+f 4460 4610 143
+f 4478 4525 4534
+f 4700 4324 4500
+f 1128 1919 2063
+f 4578 4715 4337
+f 125 4337 4601
+f 201 4359 2038
+f 4675 4706 4697
+f 4797 4666 4665
+f 4691 4682 4675
+f 4435 4113 4723
+f 4515 4310 4549
+f 2016 269 3301
+f 1159 4729 4725
+f 4729 3838 4725
+f 4725 3838 4730
+f 4730 4737 4731
+f 4734 4735 4739
+f 3183 4728 4735
+f 3171 3225 4536
+f 138 4460 143
+f 4486 4478 4642
+f 4478 4534 4643
+f 4517 3758 2112
+f 574 4639 547
+f 631 3855 1999
+f 4595 4472 4629
+f 1936 905 2069
+f 125 4578 4337
+f 4736 4567 307
+f 4684 4682 4691
+f 4809 4635 4548
+f 4630 4309 4423
+f 4551 4511 1197
+f 4592 1611 1640
+f 4487 173 4325
+f 3665 3754 6437
+f 3838 4737 4730
+f 4743 4738 4726
+f 4731 4743 4726
+f 4726 4738 4732
+f 4762 4755 4727
+f 4732 4762 4727
+f 4727 4744 4733
+f 4744 4739 4733
+f 4734 3183 4735
+f 2940 3008 4526
+f 4478 4643 4642
+f 4331 4335 4494
+f 1064 4468 4433
+f 970 217 6661
+f 4500 4324 3132
+f 1264 4500 3132
+f 4325 4597 4449
+f 4549 4581 211
+f 3949 4315 4336
+f 4612 4664 4709
+f 4706 4612 4709
+f 1897 357 4635
+f 933 4073 2235
+f 4683 4684 4634
+f 171 180 1729
+f 1993 4309 4630
+f 2516 3084 6392
+f 4761 4753 4737
+f 3838 4761 4737
+f 4753 4743 4737
+f 4737 4743 4731
+f 4727 4755 4744
+f 4754 4739 4744
+f 4754 4734 4739
+f 4756 3183 4734
+f 4756 240 3183
+f 3604 454 3553
+f 612 344 1357
+f 4451 4346 4461
+f 4449 335 859
+f 1202 4483 197
+f 2038 4341 4312
+f 4621 2038 4312
+f 4592 1640 861
+f 4591 1188 4652
+f 257 180 171
+f 1729 180 129
+f 5576 3521 4686
+f 502 672 6434
+f 4753 4770 4743
+f 4743 4770 4738
+f 4738 4762 4732
+f 4755 4773 4744
+f 4773 4763 4744
+f 4763 4754 4744
+f 4754 4756 4734
+f 292 4470 428
+f 4619 4588 4485
+f 4449 4597 4631
+f 2104 3672 3177
+f 1197 4590 4715
+f 888 4313 4341
+f 4435 4746 4113
+f 2155 6690 5503
+f 511 450 3706
+f 4885 4625 3385
+f 4708 152 4328
+f 180 301 129
+f 4945 4858 2201
+f 1966 8034 1097
+f 4773 4774 4763
+f 4763 4787 4754
+f 4764 4756 4754
+f 4652 1188 430
+f 2989 4543 4544
+f 4543 2989 242
+f 4632 1993 4630
+f 4352 197 4632
+f 1202 197 4403
+f 509 167 887
+f 2952 2730 1887
+f 4333 4403 123
+f 2809 3051 561
+f 4759 4114 4113
+f 152 181 4328
+f 3949 4336 4338
+f 476 449 247
+f 5587 4169 5911
+f 1755 6434 6431
+f 3724 1755 6431
+f 4753 4785 4770
+f 4770 4771 4738
+f 4738 4771 4762
+f 4762 4772 4755
+f 4787 4764 4754
+f 4764 4765 4756
+f 2882 2897 2901
+f 4746 4759 4113
+f 309 2024 6405
+f 515 309 6405
+f 4830 278 4831
+f 1452 1420 1025
+f 166 4461 434
+f 5209 1859 1841
+f 392 302 2883
+f 2517 2518 684
+f 302 211 2883
+f 3627 4768 4370
+f 4777 4778 2087
+f 4759 4766 4114
+f 301 128 129
+f 4676 4545 4677
+f 4581 4327 2091
+f 4674 4707 4676
+f 4707 4545 4676
+f 301 392 128
+f 4167 2457 903
+f 5389 4166 5910
+f 2458 2463 4769
+f 2469 3637 4769
+f 4164 4784 4753
+f 4784 4785 4753
+f 4803 4772 4762
+f 4772 4786 4755
+f 4755 4786 4773
+f 4774 4787 4763
+f 4795 4764 4787
+f 4788 4765 4764
+f 4788 4358 4765
+f 2573 4446 2042
+f 4353 4582 371
+f 2979 4268 4510
+f 3907 3931 477
+f 3981 4707 4674
+f 4716 3981 4674
+f 7845 7869 4776
+f 6658 7814 3445
+f 4268 4253 4544
+f 4779 3712 3739
+f 392 2883 128
+f 863 4780 4781
+f 2897 221 281
+f 3625 108 3792
+f 4768 394 4370
+f 845 2009 1675
+f 3766 4783 3916
+f 553 3751 3265
+f 4785 4793 4771
+f 4770 4785 4771
+f 4771 4803 4762
+f 4773 4786 4774
+f 4786 4794 4774
+f 4794 4787 4774
+f 4788 4764 4795
+f 2719 4358 2627
+f 3268 4657 4452
+f 4370 394 3602
+f 4449 4631 286
+f 4226 1256 259
+f 4798 4777 3194
+f 4798 5051 4777
+f 5051 4807 4778
+f 4777 5051 4778
+f 4807 4808 4778
+f 235 453 421
+f 394 4790 3602
+f 906 2813 2233
+f 2632 5348 2733
+f 277 4783 3766
+f 4164 4792 4784
+f 4784 4793 4785
+f 4793 4802 4771
+f 4802 4803 4771
+f 4795 4787 4794
+f 4804 4813 4788
+f 4788 4813 4358
+f 3044 1391 3098
+f 2178 5303 3881
+f 3098 1391 1447
+f 5032 4910 4896
+f 599 1176 2473
+f 4600 4487 262
+f 1879 1909 2005
+f 4341 4313 4316
+f 6596 2095 5521
+f 3212 3535 4281
+f 4808 4799 4796
+f 4799 1972 1477
+f 4796 4799 1477
+f 5278 459 5061
+f 2071 827 800
+f 606 4332 500
+f 1843 1068 2567
+f 4784 4801 4793
+f 4801 4802 4793
+f 4772 4811 4786
+f 4811 4821 4794
+f 4786 4811 4794
+f 4812 4795 4794
+f 4821 4812 4794
+f 4812 4804 4788
+f 4795 4812 4788
+f 4813 4814 4358
+f 4814 213 4722
+f 4358 4814 4722
+f 2264 2263 287
+f 4510 4544 4543
+f 4661 5885 4690
+f 4806 6823 3987
+f 4529 4724 4647
+f 4664 4724 4529
+f 3996 1928 3567
+f 307 4567 4492
+f 3597 734 3932
+f 4666 1899 4809
+f 5596 4097 3991
+f 3788 3792 3901
+f 1153 4453 4052
+f 4792 4801 4784
+f 4801 4828 4802
+f 4802 4810 4803
+f 4803 4810 4772
+f 4812 4835 4804
+f 4835 4822 4804
+f 4822 4813 4804
+f 4814 398 213
+f 3854 1928 4166
+f 4332 4327 500
+f 372 4353 371
+f 2068 4618 4672
+f 4724 4652 4647
+f 239 244 1703
+f 4809 1897 4635
+f 4819 4825 5051
+f 5051 4825 4807
+f 4807 4831 4808
+f 4808 4831 4799
+f 2264 1316 288
+f 4480 4398 4392
+f 4709 4664 4529
+f 2068 1936 4618
+f 2235 1327 155
+f 4389 4391 311
+f 4391 4392 311
+f 4579 1969 4714
+f 1930 1997 4820
+f 6402 1930 4820
+f 6498 6460 7077
+f 6439 3633 6440
+f 4792 4827 4801
+f 4801 4827 4828
+f 4810 4834 4772
+f 4772 4834 4811
+f 4841 4821 4811
+f 4821 4835 4812
+f 4823 4814 4813
+f 4822 4823 4813
+f 4823 4837 4814
+f 4837 398 4814
+f 365 3584 2107
+f 3800 3851 3725
+f 2732 885 1981
+f 4819 3455 4825
+f 4831 2385 4799
+f 181 4335 4329
+f 4328 181 4329
+f 366 2047 2048
+f 2052 1966 2051
+f 450 3800 3725
+f 1997 1996 4820
+f 4566 4504 3463
+f 4828 4833 4802
+f 4802 4833 4810
+f 4810 4840 4834
+f 4834 4841 4811
+f 4835 4829 4822
+f 4836 4823 4822
+f 4829 4836 4822
+f 4836 4837 4823
+f 2897 281 2883
+f 3782 6412 6411
+f 791 4618 284
+f 4825 4830 4807
+f 4807 4830 4831
+f 4831 4838 2385
+f 4838 2358 2385
+f 3405 3518 5476
+f 4476 4379 179
+f 4487 4325 262
+f 3014 1182 1150
+f 4826 1930 6402
+f 3633 4826 6440
+f 4832 5938 4827
+f 4827 5938 4828
+f 4840 4810 4833
+f 4841 4854 4821
+f 4854 4842 4821
+f 4821 4842 4835
+f 4837 4844 398
+f 443 192 4249
+f 3078 347 3103
+f 3132 4469 310
+f 1887 574 2952
+f 4779 3739 4021
+f 3227 4531 3146
+f 5313 5700 300
+f 5575 5484 5996
+f 1773 1902 920
+f 4476 179 4360
+f 3654 3782 6411
+f 1996 4319 4820
+f 5938 4872 4828
+f 4828 4872 4833
+f 4853 4834 4840
+f 4863 4841 4834
+f 4843 4835 4842
+f 4843 4829 4835
+f 4843 4846 4829
+f 4846 4836 4829
+f 4846 4847 4836
+f 4836 4847 4837
+f 4837 4847 4844
+f 3231 2494 915
+f 4582 4442 4472
+f 1590 426 131
+f 1358 4797 4790
+f 2282 1659 2281
+f 278 4857 4838
+f 4857 1659 2282
+f 4838 4857 2282
+f 245 2623 4327
+f 1358 4666 4797
+f 4360 249 477
+f 5348 4817 2733
+f 2410 2418 4399
+f 407 511 285
+f 92 4046 5345
+f 4046 698 4131
+f 4872 4862 4833
+f 4862 4840 4833
+f 4862 4873 4840
+f 4873 4853 4840
+f 4853 4863 4834
+f 4863 4876 4841
+f 4876 4854 4841
+f 4864 4842 4854
+f 4864 4843 4842
+f 4869 4844 4847
+f 4869 397 4844
+f 4695 2302 4848
+f 4639 147 148
+f 3931 4613 477
+f 4851 140 3287
+f 574 547 2952
+f 4624 3613 4357
+f 1899 1897 4809
+f 2418 903 4399
+f 4817 4845 2733
+f 4852 930 5377
+f 1996 3962 515
+f 638 3837 6410
+f 3759 2019 3805
+f 4855 4843 4864
+f 4855 4856 4843
+f 4843 4856 4846
+f 4856 4866 4846
+f 4866 4867 4846
+f 4846 4867 4847
+f 4867 4869 4847
+f 1531 926 1530
+f 3076 4185 4216
+f 5895 4126 5712
+f 3544 862 2200
+f 4076 3049 4214
+f 4357 931 1979
+f 278 279 4857
+f 4857 4858 1659
+f 3231 915 602
+f 4359 4708 4328
+f 6690 2155 4824
+f 3732 337 4109
+f 2051 2021 3084
+f 299 435 2024
+f 297 3400 3934
+f 7373 4861 6005
+f 5521 4872 5938
+f 4874 4853 4873
+f 4874 4863 4853
+f 1973 4854 4876
+f 4854 1973 4864
+f 4856 4865 4866
+f 4867 4868 4869
+f 4472 2979 4510
+f 261 4411 4491
+f 4472 4510 4629
+f 108 3794 3823
+f 4550 1197 4578
+f 4927 4981 5012
+f 3768 3769 1315
+f 5168 633 676
+f 4969 5001 5162
+f 3368 4603 3344
+f 4722 2627 4358
+f 4695 4870 4857
+f 4857 4870 4858
+f 4858 4870 2201
+f 3557 741 187
+f 4909 661 4845
+f 2025 337 3732
+f 3183 3344 4728
+f 1005 5312 5091
+f 8202 630 1970
+f 418 2051 4342
+f 827 4862 4872
+f 4875 4863 4874
+f 4875 4876 4863
+f 4864 1973 4855
+f 4855 4865 4856
+f 4866 2098 4867
+f 2098 4868 4867
+f 4868 1937 4869
+f 3259 1472 1775
+f 422 4575 3164
+f 1933 1994 232
+f 4749 4750 1895
+f 4552 4543 242
+f 3931 3697 4613
+f 488 1967 1287
+f 201 4708 4359
+f 1519 2757 2419
+f 5399 2051 3084
+f 297 296 3400
+f 2095 4872 5521
+f 2095 827 4872
+f 827 4873 4862
+f 4938 5020 4915
+f 661 4909 2807
+f 4887 5541 4881
+f 4946 4882 5094
+f 4983 4886 3298
+f 5031 4883 5096
+f 4885 4886 4918
+f 520 3530 2286
+f 5006 4981 5105
+f 4989 4904 5003
+f 4907 1356 5205
+f 5026 5038 5105
+f 4889 539 4859
+f 4896 1957 4985
+f 4897 4898 5197
+f 7246 1360 8632
+f 4969 4900 4899
+f 4901 4848 2228
+f 4848 4902 2014
+f 676 5147 5168
+f 4859 539 4335
+f 4950 4903 5063
+f 5063 5007 4950
+f 1207 1234 4908
+f 4896 4910 1957
+f 4911 1818 4912
+f 120 805 1421
+f 2289 967 1379
+f 7406 7185 7149
+f 4397 2296 4919
+f 2297 2272 4849
+f 5057 5127 5041
+f 1950 1658 1650
+f 4891 2175 4945
+f 5021 4884 4899
+f 4963 4981 4927
+f 2190 4963 4927
+f 2228 4848 2014
+f 5016 5282 5009
+f 4928 4902 2283
+f 4929 4930 1731
+f 2200 1195 616
+f 3978 4934 4935
+f 5097 5102 4752
+f 4884 4969 4899
+f 4923 5126 5104
+f 4902 4928 2014
+f 4942 5104 4943
+f 546 1794 196
+f 4980 4944 50
+f 4959 7686 6799
+f 5082 4954 4936
+f 5259 5041 1860
+f 674 799 833
+f 5083 4940 4941
+f 3671 4947 4948
+f 5046 4951 3581
+f 4155 1819 683
+f 2100 541 767
+f 3299 4949 306
+f 325 4155 2894
+f 797 5588 798
+f 5162 4945 4954
+f 584 583 5147
+f 4951 1062 112
+f 5109 2169 2170
+f 5576 4851 3287
+f 191 1892 4236
+f 2189 1457 4536
+f 4509 557 4957
+f 1188 5195 430
+f 2940 4526 157
+f 112 1062 1063
+f 653 731 1332
+f 4757 4958 6731
+f 7686 4959 5716
+f 221 3000 3076
+f 2140 2158 2118
+f 5130 1827 1826
+f 1895 385 1869
+f 4931 4330 4965
+f 4966 5058 2110
+f 1124 1126 2761
+f 1101 1063 1125
+f 3884 493 3885
+f 5885 4274 4690
+f 5137 4968 4378
+f 4366 5137 4378
+f 2192 4850 4404
+f 4870 5163 4973
+f 1828 1827 5053
+f 405 4183 964
+f 4968 5137 5107
+f 317 972 632
+f 4964 1940 1941
+f 7344 3382 868
+f 5127 4916 4917
+f 1020 1019 3687
+f 5221 794 2313
+f 5006 5027 4751
+f 1521 1522 4904
+f 5022 4482 4608
+f 6217 6054 5660
+f 5263 4968 5118
+f 4906 4920 5070
+f 6953 5024 6954
+f 4986 636 5154
+f 1233 7481 6942
+f 4937 5125 4991
+f 1126 1124 1062
+f 4964 4988 4983
+f 1408 1460 1483
+f 1589 343 4767
+f 2485 4488 1266
+f 4591 387 1188
+f 4998 831 799
+f 4751 5064 4750
+f 4932 5094 1922
+f 4907 1920 1356
+f 5221 4878 794
+f 4495 4851 3743
+f 831 4998 5002
+f 864 3210 8446
+f 6151 6386 4816
+f 627 1152 3491
+f 4996 3499 2593
+f 420 1587 1332
+f 1861 1860 5068
+f 2202 3499 142
+f 5497 5498 4997
+f 385 384 1869
+f 5085 4951 112
+f 4937 4991 5282
+f 4985 1957 1917
+f 3547 4999 2070
+f 5187 2454 5744
+f 6893 6894 7141
+f 142 3499 4996
+f 1841 1869 384
+f 3164 2217 2416
+f 556 5000 1298
+f 4648 230 4434
+f 2118 5001 4969
+f 3581 4951 5085
+f 5147 677 584
+f 1069 6880 1070
+f 5005 4608 3230
+f 3215 4212 4791
+f 2692 1359 7819
+f 3248 5032 1507
+f 5078 7169 3313
+f 2195 5008 5038
+f 1313 898 777
+f 1152 1855 3490
+f 4994 5002 4993
+f 3338 451 1588
+f 1991 4882 4946
+f 5205 1356 5124
+f 5036 5013 5014
+f 4920 5017 4892
+f 3051 2830 3052
+f 6070 6069 5752
+f 5052 5020 4938
+f 3385 4625 3384
+f 5016 5009 5130
+f 5136 5003 5138
+f 4899 4890 5021
+f 2125 4125 4095
+f 5022 5018 5025
+f 4608 5005 5018
+f 5022 4608 5018
+f 2730 1858 902
+f 4952 4942 5252
+f 1521 4904 4989
+f 5027 5063 5064
+f 2131 5015 2067
+f 5009 4978 5130
+f 7000 5024 6953
+f 5030 5022 5025
+f 1157 395 3768
+f 384 4924 5209
+f 4073 2234 2235
+f 5026 4404 5038
+f 1356 1920 1959
+f 5056 5031 5151
+f 5170 4905 4906
+f 5034 5035 5036
+f 2116 326 783
+f 5037 4339 4334
+f 1780 1708 4930
+f 3338 400 1912
+f 7861 4051 4262
+f 4993 5218 3210
+f 4993 4986 5218
+f 4986 5154 5218
+f 4481 5029 4745
+f 4481 5030 5029
+f 4482 5022 5030
+f 4481 4482 5030
+f 1546 5129 1598
+f 5006 5105 5027
+f 5128 4939 5093
+f 4953 5040 5043
+f 5162 4891 4945
+f 1588 1779 3259
+f 5427 4143 5045
+f 5048 3170 872
+f 5207 5188 5049
+f 3698 4481 4745
+f 2565 4845 102
+f 971 3416 656
+f 5046 1126 4951
+f 4995 5149 5053
+f 1063 1101 4878
+f 1941 5044 4964
+f 5101 2139 4923
+f 4330 4931 1355
+f 2486 5048 872
+f 5105 5007 5027
+f 3866 3865 5050
+f 4655 2265 2266
+f 5059 3698 5067
+f 4637 4481 3698
+f 5059 4637 3698
+f 4637 4741 4481
+f 4904 4565 5003
+f 5107 5138 5095
+f 5453 7119 7000
+f 376 377 5061
+f 5007 5039 5080
+f 3534 3311 3170
+f 2170 2138 1486
+f 4936 4973 5163
+f 5138 4565 238
+f 5095 5138 238
+f 5048 3534 3170
+f 430 5195 386
+f 5064 4967 385
+f 1922 5094 4749
+f 4749 4751 4750
+f 4954 4973 4936
+f 5082 5065 4918
+f 5339 5082 4900
+f 5061 4971 8242
+f 390 7014 6954
+f 5086 5059 5067
+f 4966 2109 2139
+f 5128 5069 4939
+f 5209 5282 5016
+f 829 831 5002
+f 5070 4880 4906
+f 5009 5062 4978
+f 706 5050 3865
+f 289 439 3859
+f 1769 540 862
+f 1004 5497 4997
+f 2390 448 970
+f 7871 5633 7903
+f 4456 7158 3979
+f 5076 7045 1070
+f 7011 5219 6977
+f 7075 6806 3594
+f 5079 5072 5069
+f 4848 4901 4870
+f 3534 2808 3311
+f 5125 4952 4991
+f 2133 622 5425
+f 5081 2631 3799
+f 5023 631 2808
+f 5011 5093 5148
+f 2271 4849 5054
+f 4886 4949 3299
+f 5085 112 5084
+f 4699 3856 4940
+f 5084 4699 4940
+f 5099 5086 5067
+f 4685 5059 5086
+f 2500 1890 2165
+f 5282 5062 5009
+f 4918 4886 4988
+f 4899 4900 4890
+f 4911 5124 5010
+f 5055 5072 5088
+f 5035 4299 5036
+f 4949 4885 3385
+f 5050 5071 5073
+f 5073 5035 5034
+f 5089 5073 5090
+f 5050 5073 5089
+f 5073 5034 5090
+f 5034 5036 5090
+f 3885 493 5187
+f 7175 7099 7042
+f 3172 7868 3205
+f 2454 5187 2043
+f 2043 2390 970
+f 6976 7011 6977
+f 7045 1069 1070
+f 6894 6899 6986
+f 1005 7807 554
+f 5147 676 677
+f 2165 2567 1068
+f 4913 4995 5053
+f 5015 4927 5012
+f 5070 4892 4880
+f 7118 7200 7406
+f 5023 399 631
+f 3530 490 2286
+f 2112 3758 5374
+f 5151 5096 4929
+f 5039 5092 5098
+f 5028 5044 4974
+f 3311 4273 3663
+f 4625 2176 3384
+f 2268 2271 5146
+f 4404 4849 2193
+f 2238 3297 3388
+f 4919 5086 5099
+f 4919 4685 5086
+f 1462 4904 1522
+f 4917 396 5068
+f 2298 2274 2272
+f 1598 4880 5043
+f 3729 289 3859
+f 5010 5103 1893
+f 314 5165 342
+f 5062 4913 4978
+f 2440 3003 3002
+f 5374 3758 5323
+f 5218 5194 3210
+f 4933 5151 5017
+f 4625 2227 2176
+f 4944 48 50
+f 3213 4322 3889
+f 5263 4378 4968
+f 5065 4885 4918
+f 4969 5339 4900
+f 4354 4378 5263
+f 4966 5101 5058
+f 5109 1486 5204
+f 5111 4878 5110
+f 5082 4918 4900
+f 8228 3293 3975
+f 4404 5026 4963
+f 5565 5564 1100
+f 687 688 3561
+f 973 612 767
+f 3568 5306 4351
+f 637 5095 3705
+f 4891 5001 2158
+f 7237 3391 3474
+f 572 5081 3799
+f 3385 3384 306
+f 1158 1129 778
+f 4890 5047 5028
+f 5113 2761 5046
+f 5001 2118 2158
+f 5164 5203 5115
+f 1874 4974 1941
+f 3689 7814 6658
+f 3705 4956 637
+f 5116 8384 5117
+f 5120 5119 5121
+f 5119 4146 5121
+f 5318 8505 7652
+f 5183 5123 5134
+f 4922 5006 4751
+f 4970 5124 1356
+f 5673 5656 5655
+f 5046 2761 1126
+f 4939 5069 4933
+f 5058 5101 5104
+f 5032 4896 4985
+f 5021 4890 5020
+f 5126 4923 5021
+f 1917 1891 396
+f 1870 1392 2361
+f 5447 4894 4698
+f 399 4962 3518
+f 4894 4921 4698
+f 5083 4941 4921
+f 5084 4940 5083
+f 4752 4751 4749
+f 4960 5088 5072
+f 1476 2984 916
+f 5094 4752 4749
+f 5043 1660 1623
+f 519 518 2248
+f 2243 4858 4945
+f 6732 98 91
+f 4910 1960 1957
+f 4636 2296 4480
+f 4998 674 636
+f 5139 5166 5167
+f 1859 5016 5130
+f 5258 5147 583
+f 3593 2685 3852
+f 459 460 376
+f 5131 5164 5115
+f 5123 5143 5144
+f 890 5183 5134
+f 564 572 186
+f 2296 4636 4685
+f 4164 5612 6444
+f 5136 5137 4366
+f 5003 4565 5138
+f 2833 5773 6537
+f 110 3249 3248
+f 1462 1522 3543
+f 4481 4741 4482
+f 5028 4974 5149
+f 1658 964 1650
+f 4971 5061 377
+f 3000 221 2928
+f 4988 4964 5044
+f 191 4236 1499
+f 5137 5138 5107
+f 4202 5118 4925
+f 4397 4919 5135
+f 1189 2265 4655
+f 5047 5112 5044
+f 4885 5065 4625
+f 4998 636 4986
+f 5153 5173 5166
+f 1547 1546 1598
+f 5222 5268 5141
+f 5141 5268 5140
+f 1595 1417 5142
+f 5143 5133 5144
+f 4923 2140 2118
+f 4970 1991 4946
+f 2302 4695 279
+f 5001 4891 5162
+f 3582 5118 4202
+f 4981 4963 5026
+f 636 427 5154
+f 483 420 821
+f 1844 633 5168
+f 5054 5146 2271
+f 5168 5147 5258
+f 536 4608 4482
+f 5002 4986 4993
+f 275 20 3606
+f 4925 4926 4299
+f 4967 4903 384
+f 4883 5152 5096
+f 5193 3150 642
+f 3855 2447 3778
+f 5139 5153 5166
+f 5002 4998 4986
+f 5154 5198 5220
+f 1234 5000 4908
+f 6509 4638 5155
+f 5158 5157 5318
+f 7820 5645 7822
+f 1966 3822 8034
+f 1233 1912 7481
+f 2262 8281 4742
+f 7230 5161 5266
+f 345 7301 4975
+f 1864 1837 4911
+f 2265 3571 2266
+f 4943 5033 4913
+f 5123 5144 5134
+f 5165 5203 5164
+f 5153 5165 5202
+f 4028 4299 4956
+f 4751 5027 5064
+f 5152 4912 1780
+f 5015 5012 5102
+f 1462 5150 5217
+f 5080 5125 4924
+f 2313 3283 3844
+f 2296 4397 4480
+f 3248 4910 5032
+f 7808 5091 5132
+f 5172 5166 5173
+f 5175 1118 903
+f 904 1005 972
+f 5194 5212 5177
+f 5171 5178 5212
+f 5194 5171 5212
+f 890 5134 5216
+f 161 2110 5058
+f 4687 4686 4494
+f 5127 5057 6692
+f 4952 161 4942
+f 4971 5183 890
+f 5008 5109 5092
+f 5184 5014 4898
+f 5185 5184 4898
+f 3866 5184 5185
+f 3790 3866 5185
+f 2598 3984 389
+f 7846 5730 4089
+f 6625 7621 6739
+f 2139 5101 4966
+f 4849 4404 4850
+f 5498 1266 4997
+f 4943 5104 5033
+f 4851 4495 140
+f 4886 4885 4949
+f 4913 5033 4938
+f 5047 5044 5028
+f 4892 5043 4880
+f 6339 3265 6340
+f 5285 5293 5284
+f 5188 5189 7275
+f 1917 396 4985
+f 4636 4637 4685
+f 1960 1917 1957
+f 3529 3528 5191
+f 4892 4953 5043
+f 2451 5192 5253
+f 2248 2101 3571
+f 5091 485 5132
+f 2837 7155 7081
+f 5214 346 5195
+f 3998 3682 3997
+f 5205 5124 4911
+f 5220 5198 5178
+f 5103 4946 4932
+f 5179 5230 5281
+f 7812 6731 5199
+f 5671 7789 7796
+f 5252 4942 4943
+f 3003 5129 1546
+f 688 3248 1507
+f 312 5143 5123
+f 4900 4918 5112
+f 4330 1355 4366
+f 794 4878 1196
+f 5229 5164 5131
+f 5143 5167 5133
+f 5008 5092 5038
+f 1845 5149 4974
+f 1275 2030 1890
+f 4870 4695 4848
+f 4912 5205 4911
+f 5206 5188 5207
+f 5208 5189 5188
+f 5206 5208 5188
+f 5208 5190 5189
+f 3821 5957 5208
+f 5128 5079 5069
+f 6307 3470 937
+f 2874 1621 4536
+f 5035 4925 4299
+f 2692 7819 5114
+f 5213 5372 5262
+f 5198 5213 5262
+f 5473 5179 5281
+f 5215 1912 1233
+f 5139 5167 5143
+f 338 312 5123
+f 312 5139 5143
+f 1359 5645 7820
+f 493 103 2390
+f 5187 493 2390
+f 4267 2934 4382
+f 459 376 5061
+f 520 3984 2273
+f 4920 4939 4933
+f 2117 681 3924
+f 4903 4924 384
+f 2866 5496 555
+f 829 4994 4993
+f 799 674 4998
+f 6988 3197 3196
+f 4859 181 4492
+f 5952 520 492
+f 4849 4850 5054
+f 1334 5206 5223
+f 5224 5223 5207
+f 5225 5208 5206
+f 1334 5225 5206
+f 5225 5226 5208
+f 5344 3821 5226
+f 5226 3821 5208
+f 1860 5079 5128
+f 5088 4960 1920
+f 4202 4925 5035
+f 7407 5228 5182
+f 5195 1188 5211
+f 5169 4375 5459
+f 5339 5162 4954
+f 5355 5169 5459
+f 5231 3990 3989
+f 5232 5231 5233
+f 4157 3990 5156
+f 5231 3989 5233
+f 5235 4287 3915
+f 5236 5232 5233
+f 520 5952 3530
+f 2866 555 3423
+f 1356 1990 4970
+f 5222 5372 5213
+f 5179 5144 5237
+f 7119 5024 7000
+f 8295 5177 5212
+f 5452 4740 418
+f 5134 5144 5179
+f 4174 1536 6504
+f 5173 5153 5202
+f 2598 4071 4072
+f 4845 661 102
+f 6301 6355 6324
+f 2243 1659 4858
+f 1844 5268 5222
+f 383 346 5115
+f 7003 1404 6943
+f 5240 6305 5363
+f 2454 2043 2255
+f 5223 5224 1334
+f 5243 5225 1334
+f 5242 5243 1334
+f 5243 5226 5225
+f 2237 746 2763
+f 5243 5344 5226
+f 6097 4528 1130
+f 1520 4989 1483
+f 5209 5016 1859
+f 5073 4202 5035
+f 5400 5244 6059
+f 3530 5952 5245
+f 5239 5229 5247
+f 1960 2035 1985
+f 5230 5237 5462
+f 5041 5068 1860
+f 5247 5246 5464
+f 5153 341 5165
+f 1950 1650 819
+f 3445 7813 5481
+f 5230 5179 5237
+f 3319 8259 3954
+f 5218 5220 5171
+f 5218 5171 5194
+f 5089 5090 5184
+f 622 668 1984
+f 5050 5089 5184
+f 5090 5036 5014
+f 3866 5050 5184
+f 5090 5014 5184
+f 2782 2133 5264
+f 5202 5165 5229
+f 427 636 576
+f 5198 5262 5178
+f 5202 5239 5173
+f 5655 5114 7805
+f 427 1844 5222
+f 4878 5221 5110
+f 1841 384 5209
+f 4954 4945 4973
+f 385 1895 5064
+f 5249 2453 5250
+f 4890 5028 4995
+f 4983 3298 832
+f 5020 4890 4995
+f 8230 5260 5242
+f 5261 5243 5242
+f 5260 5261 5242
+f 5261 5271 5243
+f 5251 5344 5243
+f 5271 5251 5243
+f 5282 4991 5252
+f 1484 1520 1483
+f 5190 7265 5189
+f 388 2598 389
+f 5453 7016 5227
+f 1545 5129 3003
+f 5229 5174 5247
+f 5288 5230 5462
+f 4713 5433 3661
+f 5277 5140 5458
+f 2165 1068 2731
+f 5251 4454 4258
+f 4404 2193 2195
+f 5144 5133 5237
+f 5167 5172 5133
+f 4974 5044 1941
+f 6379 5186 7347
+f 6378 6379 438
+f 1203 4916 5127
+f 1188 387 5211
+f 196 1794 1811
+f 3989 5256 5257
+f 3661 5433 3810
+f 5229 5165 5164
+f 2273 3984 2598
+f 5185 4898 4897
+f 5173 5239 5172
+f 5017 4953 4892
+f 5140 5258 583
+f 5218 5154 5220
+f 5148 5259 5011
+f 1902 755 920
+f 1507 3561 688
+f 4752 5102 4922
+f 377 5183 4971
+f 5216 5134 5179
+f 2117 3925 389
+f 5473 5216 5179
+f 7979 5113 7962
+f 4687 4494 4335
+f 5457 5277 5458
+f 167 2149 668
+f 7830 3195 3358
+f 2681 3030 1916
+f 92 2203 93
+f 5220 5178 5171
+f 5167 5166 5172
+f 5279 3791 6473
+f 3810 5266 3918
+f 5091 7808 1005
+f 3445 7814 7813
+f 4201 868 3383
+f 4072 2273 2598
+f 5056 5151 4933
+f 5133 5172 5354
+f 5318 5157 5232
+f 5233 5267 5236
+f 5372 5222 5283
+f 5268 5258 5140
+f 1844 5168 5268
+f 5268 5168 5258
+f 3918 5266 3992
+f 338 5123 5183
+f 5064 5063 4967
+f 5266 5269 3992
+f 5031 5088 4907
+f 5260 5287 5261
+f 5287 5280 5261
+f 5261 5280 5271
+f 4454 5251 5271
+f 4258 4453 1153
+f 5072 5055 5069
+f 3992 5269 2150
+f 4925 5118 4926
+f 7014 390 320
+f 2150 5269 7037
+f 4752 4922 4751
+f 5283 5277 5457
+f 5212 5178 4563
+f 3808 3807 5272
+f 5272 5289 3638
+f 5080 5098 5125
+f 4906 4880 5170
+f 5124 4970 5103
+f 5056 5055 5088
+f 4936 5065 5082
+f 4610 2202 142
+f 5156 4146 5274
+f 2118 4969 4884
+f 136 418 135
+f 1435 2832 2783
+f 4902 4848 2302
+f 2112 5374 363
+f 338 377 376
+f 5203 5165 314
+f 5237 5133 5354
+f 5157 5231 5232
+f 5174 5246 5247
+f 5141 5140 5277
+f 427 5213 5154
+f 4455 5284 5302
+f 5302 4229 4455
+f 427 5222 5213
+f 5280 4454 5271
+f 5163 4870 4901
+f 5069 5055 5056
+f 5027 5007 5063
+f 5209 4924 5282
+f 5130 1825 1859
+f 4941 4940 4703
+f 1433 1460 1408
+f 4404 2195 5038
+f 2447 3405 5312
+f 3980 4816 4815
+f 3569 3807 3396
+f 3807 5297 5272
+f 5272 5297 5289
+f 5289 5290 3638
+f 5290 4367 3638
+f 5105 5038 5007
+f 1483 4989 5003
+f 5275 5119 5120
+f 4941 4703 5275
+f 8388 8314 5286
+f 4883 4907 5205
+f 4919 2296 4685
+f 2141 3384 2176
+f 4921 4941 5275
+f 5156 3990 5231
+f 5157 5156 5231
+f 4849 2271 2270
+f 1551 1521 1520
+f 5202 5229 5239
+f 5229 5131 5174
+f 5131 5115 5468
+f 5174 5131 5468
+f 5115 346 5214
+f 5468 5115 5214
+f 5293 5301 5284
+f 5301 5302 5284
+f 1895 4750 5064
+f 8388 5286 5287
+f 4678 4454 5280
+f 3543 1485 1464
+f 5118 5107 637
+f 4964 4983 832
+f 5148 5093 4905
+f 584 5169 583
+f 4981 5026 5105
+f 5136 5138 5137
+f 4968 5107 5118
+f 5052 5021 5020
+f 4921 5275 4698
+f 4688 3111 3329
+f 7025 5076 7302
+f 3876 3641 1031
+f 5021 2118 4884
+f 3569 5305 3807
+f 5299 4367 5290
+f 5299 5291 4367
+f 5291 4679 4367
+f 3029 1916 3030
+f 5291 3583 4679
+f 5125 5145 4952
+f 5098 5204 5125
+f 5145 161 4952
+f 5204 5145 5125
+f 2122 3340 2360
+f 4956 4926 637
+f 5077 4170 4167
+f 3248 3249 4910
+f 4703 5651 5275
+f 4979 1508 1204
+f 4956 4299 4926
+f 5292 5077 4167
+f 3336 3026 3147
+f 4146 5156 5157
+f 4882 5097 5094
+f 4924 5125 4937
+f 5230 5288 5281
+f 5214 5195 5211
+f 5096 5152 4930
+f 4397 5135 4239
+f 5077 2011 4170
+f 5304 5287 5286
+f 5304 5309 5280
+f 5287 5304 5280
+f 4692 2469 2011
+f 4565 5217 5150
+f 6942 3474 1233
+f 5107 5095 637
+f 4322 4317 3889
+f 4748 4220 2469
+f 5057 5259 5148
+f 4692 4748 2469
+f 5081 572 564
+f 5577 5569 1099
+f 346 386 5195
+f 1845 5053 5149
+f 902 1858 3060
+f 3984 2117 389
+f 2117 3924 3925
+f 3551 5305 3569
+f 5297 5298 5290
+f 5289 5297 5290
+f 5298 5299 5290
+f 5306 3583 5291
+f 3568 3809 3583
+f 1980 3142 3690
+f 4135 5071 5050
+f 4792 4164 6444
+f 5221 1566 5110
+f 1248 2028 2027
+f 5017 5151 4953
+f 4915 4995 4913
+f 112 5111 4699
+f 6692 5057 4879
+f 5300 7923 8269
+f 3705 238 5180
+f 6307 937 938
+f 161 5058 4942
+f 5121 4146 5157
+f 5121 5157 5158
+f 4932 1922 1893
+f 1912 400 7481
+f 5246 5174 5346
+f 5222 5141 5283
+f 5174 5468 5346
+f 5141 5277 5283
+f 3229 5293 4142
+f 5285 4142 5293
+f 3229 5301 5293
+f 5336 4229 5302
+f 5336 5323 4229
+f 3242 2978 5122
+f 5307 5304 5286
+f 5280 5309 4678
+f 170 4495 2202
+f 5029 5916 4745
+f 4354 5263 5717
+f 112 4699 5084
+f 4901 4625 5065
+f 4920 4892 5070
+f 5007 5080 4950
+f 3582 5263 5118
+f 7210 4255 2528
+f 325 555 550
+f 7969 5281 4198
+f 5364 7136 7156
+f 2169 5008 2195
+f 7017 4471 7555
+f 320 5210 321
+f 5296 5313 5305
+f 5305 5314 3807
+f 3807 5315 5297
+f 5297 5316 5298
+f 5333 5299 5298
+f 5333 5317 5299
+f 5317 5291 5299
+f 5317 5306 5291
+f 973 1513 612
+f 7603 320 321
+f 129 4217 1729
+f 1545 2440 4287
+f 5111 5110 4326
+f 1860 5128 5259
+f 226 3740 3857
+f 4913 4938 4915
+f 5121 5158 5318
+f 3993 7301 345
+f 710 676 633
+f 5038 5092 5039
+f 5239 5247 5248
+f 5239 5248 5172
+f 5335 5301 3229
+f 5322 5302 5301
+f 5335 5322 5301
+f 5322 5336 5302
+f 3552 3321 6154
+f 1193 5113 7979
+f 5094 5097 4752
+f 2978 2913 5122
+f 5308 5304 5307
+f 5308 5309 5304
+f 5327 4678 5309
+f 4177 3721 5310
+f 4879 5057 5148
+f 5111 4326 4699
+f 5085 5084 4893
+f 2463 2469 4769
+f 5093 4939 4920
+f 4933 5017 4920
+f 4900 5112 5047
+f 5031 4907 4883
+f 5057 5041 5259
+f 5275 5651 5119
+f 4719 5771 5074
+f 801 7677 5106
+f 5068 1891 1861
+f 2808 631 1999
+f 5400 6059 5311
+f 5264 2133 5425
+f 3778 904 972
+f 4198 5563 8158
+f 5012 4981 5006
+f 5281 5288 4198
+f 5700 5313 5296
+f 5305 5313 5314
+f 5314 5315 3807
+f 5315 5316 5297
+f 4900 5047 4890
+f 1316 1728 288
+f 5126 5052 5033
+f 5126 5021 5052
+f 379 794 1196
+f 5096 4930 4929
+f 5102 5012 5006
+f 5011 5128 5093
+f 4912 1818 1780
+f 2808 1999 4273
+f 5185 4897 3790
+f 5320 5450 4056
+f 699 5321 3237
+f 7038 4298 4255
+f 5451 5320 5295
+f 5140 583 5355
+f 583 5169 5355
+f 5197 4898 5014
+f 4924 4937 5282
+f 5324 5325 5307
+f 5326 3417 3403
+f 5325 5337 5307
+f 5337 5308 5307
+f 5327 5309 5308
+f 5338 5327 5308
+f 5377 4052 5328
+f 5104 5126 5033
+f 5339 4954 5082
+f 3581 5085 4893
+f 4894 3581 4893
+f 5031 5096 5151
+f 4973 2201 4870
+f 637 4926 5118
+f 3764 2685 447
+f 2390 2444 448
+f 7210 7038 4255
+f 6948 5747 6259
+f 300 5342 5313
+f 5313 5342 5314
+f 5314 5342 5315
+f 5315 5367 5316
+f 5316 5333 5298
+f 5386 5317 5333
+f 5032 4916 1203
+f 5097 5015 5102
+f 5088 1920 4907
+f 5163 4901 5065
+f 5056 5088 5031
+f 4933 5069 5056
+f 5771 4719 3965
+f 903 2458 5175
+f 4082 5295 5320
+f 4298 7038 5334
+f 5335 5336 5322
+f 5308 5337 5338
+f 5327 5376 5328
+f 930 4852 573
+f 4969 5162 5339
+f 5334 6968 2619
+f 8598 3392 5912
+f 6964 5413 7174
+f 3699 4080 5498
+f 3499 4977 5371
+f 5109 2170 1486
+f 1070 5193 642
+f 5425 622 1984
+f 5197 5014 5013
+f 5233 5257 5234
+f 4687 4527 2044
+f 5385 5404 5332
+f 5332 5404 300
+f 5342 5367 5315
+f 5386 5333 5316
+f 5387 5317 5386
+f 5387 5306 5317
+f 5387 5368 5306
+f 5368 4351 5306
+f 1678 1981 885
+f 4942 5058 5104
+f 377 338 5183
+f 5003 5136 4895
+f 5101 4923 5104
+f 696 4536 1621
+f 4922 5102 5006
+f 3385 306 4949
+f 5007 5038 5039
+f 5151 4929 4953
+f 4936 5163 5065
+f 5902 4661 5343
+f 7969 4198 8158
+f 3520 3593 3852
+f 829 5002 4994
+f 3821 5344 4258
+f 92 5345 2203
+f 5092 5109 5098
+f 5462 5237 5354
+f 5373 5336 5335
+f 5374 5323 5336
+f 5373 5374 5336
+f 678 5418 679
+f 5062 4943 4913
+f 4625 4901 2227
+f 2619 6968 5348
+f 5338 5376 5327
+f 5356 5398 2516
+f 5282 5252 5062
+f 4991 4952 5252
+f 4658 3718 3717
+f 7171 1404 7003
+f 4990 7078 7747
+f 3544 2200 759
+f 5332 5357 5385
+f 5404 5366 300
+f 300 5366 5342
+f 5353 4100 5042
+f 4945 2201 4973
+f 5041 4917 5068
+f 4336 4334 4339
+f 5252 4943 5062
+f 4893 4921 4894
+f 4915 5020 4995
+f 5201 5194 5177
+f 5295 4082 5452
+f 4978 4913 5053
+f 1924 190 898
+f 5450 5320 5451
+f 4817 7286 4845
+f 5458 5140 5355
+f 5391 5335 3546
+f 5391 5373 5335
+f 4903 5080 4924
+f 359 2782 488
+f 2269 5146 2254
+f 4886 4983 4988
+f 5033 5052 4938
+f 3561 4979 996
+f 5395 5375 5325
+f 5325 5375 5337
+f 5377 5378 4852
+f 5378 5356 4852
+f 5399 3084 5398
+f 4946 5094 4932
+f 4893 5083 4921
+f 5359 6763 7380
+f 4365 5358 4364
+f 5187 2390 2043
+f 5160 7272 4692
+f 5364 6059 6044
+f 6680 7032 1127
+f 5366 5415 5342
+f 5342 5415 5367
+f 3163 3716 3715
+f 5079 4497 5072
+f 333 376 460
+f 4698 5120 2111
+f 6562 6578 6469
+f 1890 1883 1275
+f 5127 4917 5041
+f 2272 2297 2298
+f 2138 161 5145
+f 405 2514 4183
+f 4326 5110 1565
+f 4886 3299 3298
+f 4950 5080 4903
+f 5112 4988 5044
+f 5375 5396 5337
+f 5337 5396 5338
+f 5376 5428 5328
+f 5328 5428 5377
+f 5379 5356 5378
+f 5379 5398 5356
+f 4906 5093 4920
+f 577 3799 2287
+f 5382 3850 5349
+f 5383 4365 4263
+f 5384 5383 4245
+f 607 2527 2361
+f 4563 5385 5357
+f 6740 5432 5732
+f 5415 5416 5367
+f 5316 5405 5386
+f 5386 5417 5387
+f 5387 5388 5368
+f 587 7812 7811
+f 1522 1485 3543
+f 5170 4880 5129
+f 3854 5389 5420
+f 5420 5421 3854
+f 3688 3746 5407
+f 5154 5213 5198
+f 5390 3746 3688
+f 4883 5205 4912
+f 7196 7199 6968
+f 5410 3546 3666
+f 5392 5373 5391
+f 5373 5392 5374
+f 3230 142 4996
+f 2002 3298 2054
+f 1872 896 917
+f 4626 4628 4716
+f 1545 5170 5129
+f 4628 5393 4716
+f 4497 4960 5072
+f 4995 5028 5149
+f 3693 1068 2010
+f 5394 5375 5395
+f 5394 5396 5375
+f 5396 5397 5338
+f 5397 5427 5376
+f 5338 5397 5376
+f 5376 5427 5428
+f 5428 5429 5377
+f 5377 5429 5378
+f 4893 5084 5083
+f 5233 3989 5257
+f 756 6027 7478
+f 3197 6974 3009
+f 2531 522 2512
+f 5187 5401 3885
+f 470 1775 2416
+f 5363 5362 5402
+f 7002 7003 6943
+f 1005 7808 7807
+f 5385 4563 5404
+f 5416 5405 5316
+f 5367 5416 5316
+f 5405 5417 5386
+f 5387 5417 5388
+f 4247 5368 5388
+f 5109 5204 5098
+f 5406 4165 4218
+f 4155 3142 2894
+f 5421 5422 5407
+f 4033 5407 3746
+f 5423 3688 5407
+f 5408 5390 3688
+f 5408 5424 5390
+f 5152 4883 4912
+f 5648 797 796
+f 1483 5003 4895
+f 5354 5172 5463
+f 8089 4818 4099
+f 5442 3546 5410
+f 5442 5391 3546
+f 1352 2837 7081
+f 1483 4895 1408
+f 4860 2048 4330
+f 1760 1780 1818
+f 4258 5344 5251
+f 5115 5203 382
+f 5394 5411 5396
+f 5411 5397 5396
+f 5429 5430 5378
+f 5378 5430 5379
+f 5379 5412 5398
+f 4342 5399 5398
+f 5412 4342 5398
+f 2139 2140 4923
+f 4932 1893 5103
+f 2514 482 4183
+f 4165 5406 4193
+f 6686 7321 6680
+f 3198 3197 3009
+f 3815 276 3162
+f 1130 1034 3402
+f 217 448 3593
+f 5656 2692 5114
+f 554 1164 632
+f 4563 5455 5404
+f 5404 5455 5366
+f 5366 5436 5415
+f 5437 5456 5416
+f 5415 5437 5416
+f 5456 5405 5416
+f 5456 5417 5405
+f 5388 5459 4247
+f 1486 5145 5204
+f 1962 5789 1333
+f 1999 317 4273
+f 5418 2541 8348
+f 5420 5440 5421
+f 5422 5423 5407
+f 5423 5408 3688
+f 5172 5248 5463
+f 5467 5442 5410
+f 5469 5391 5442
+f 5469 5392 5391
+f 5469 5255 5392
+f 5255 5443 5392
+f 3439 3710 970
+f 5124 5103 5010
+f 4627 5393 4628
+f 4627 5444 5393
+f 1566 1565 5110
+f 3695 3696 5425
+f 5259 5128 5011
+f 1647 623 640
+f 5411 5426 5397
+f 5426 3257 5427
+f 5397 5426 5427
+f 5451 5379 5430
+f 5451 5412 5379
+f 7873 7832 3358
+f 4072 5431 491
+f 186 572 1892
+f 484 4757 6731
+f 5433 7230 5266
+f 7450 3756 5360
+f 3857 3740 7002
+f 5645 1359 5075
+f 5178 5455 4563
+f 5455 5436 5366
+f 5437 5415 5436
+f 5355 5459 5388
+f 5417 5355 5388
+f 5459 5474 4247
+f 7215 6963 7509
+f 661 6856 102
+f 2447 904 3778
+f 1999 3778 317
+f 5420 4198 5440
+f 5421 5440 5422
+f 5441 5423 5422
+f 5441 5463 5423
+f 5463 5408 5423
+f 5463 5464 5408
+f 5465 3978 5424
+f 5465 5466 3978
+f 5466 5410 3978
+f 5466 5467 5410
+f 4970 4946 5103
+f 4918 4988 5112
+f 1837 1818 4911
+f 4916 4985 396
+f 4901 2228 2227
+f 5040 4953 1687
+f 5444 5425 3696
+f 5425 5445 5446
+f 4916 396 4917
+f 2111 8544 5447
+f 5448 5411 5394
+f 5449 5448 5394
+f 1349 5426 5411
+f 5448 1349 5411
+f 1349 401 3257
+f 5427 5045 5428
+f 5045 4056 5429
+f 5428 5045 5429
+f 4056 5450 5430
+f 5429 4056 5430
+f 5430 5450 5451
+f 3491 4877 3924
+f 681 3491 3924
+f 3884 522 2531
+f 91 90 3668
+f 6704 6441 4710
+f 5496 3397 555
+f 6716 6708 6944
+f 5437 5372 5456
+f 5457 5417 5456
+f 5417 5458 5355
+f 3458 4261 3302
+f 6990 7050 3533
+f 2287 3571 2265
+f 4045 5461 4124
+f 545 1128 653
+f 4198 5288 5440
+f 5462 5422 5440
+f 5462 5354 5441
+f 5422 5462 5441
+f 5464 5424 5408
+f 5464 5465 5424
+f 5468 5442 5467
+f 5468 5469 5442
+f 613 1532 2365
+f 5032 4985 4916
+f 1863 6282 5324
+f 4905 5093 4906
+f 4627 2782 5444
+f 2782 5264 5444
+f 5444 5264 5425
+f 5425 1984 5445
+f 1350 5448 5449
+f 4640 6034 5470
+f 5448 1350 1349
+f 4931 1326 1355
+f 5471 4297 1350
+f 5063 4903 4967
+f 4919 5099 3401
+f 5451 5295 5412
+f 5412 5295 4342
+f 4342 5295 5452
+f 5443 5255 387
+f 3712 7223 7186
+f 7025 7147 2338
+f 3491 2508 4877
+f 6897 6996 6955
+f 5262 5436 5455
+f 5178 5262 5455
+f 5262 5372 5437
+f 5436 5262 5437
+f 5283 5457 5456
+f 5372 5283 5456
+f 5457 5458 5417
+f 2237 2238 745
+f 2428 2687 3764
+f 5312 3406 484
+f 2447 5312 904
+f 5312 1005 904
+f 5440 5288 5462
+f 5354 5463 5441
+f 5248 5464 5463
+f 5248 5247 5464
+f 5464 5246 5465
+f 5246 5466 5465
+f 5246 5346 5466
+f 5346 5467 5466
+f 5346 5468 5467
+f 5468 5214 5469
+f 5214 5211 5469
+f 5469 5211 5255
+f 4566 3782 4645
+f 3269 4443 1416
+f 4488 5491 1266
+f 6070 5476 6103
+f 5642 6120 6673
+f 3208 5734 5478
+f 1112 1701 3365
+f 6624 6156 5784
+f 6474 6624 5784
+f 1915 466 1911
+f 6633 6634 6590
+f 5485 6143 5479
+f 801 2168 6145
+f 3826 5485 5479
+f 3663 872 3170
+f 5253 5192 5483
+f 466 5785 1911
+f 3387 5485 3826
+f 5487 6190 3863
+f 6055 6268 6003
+f 5493 1833 6608
+f 5490 1534 6801
+f 6108 6213 6074
+f 4126 5895 5504
+f 6211 5780 5495
+f 5515 1004 5496
+f 5514 5515 5496
+f 1004 5515 5497
+f 5497 5508 5498
+f 1071 6846 5499
+f 5499 3438 1071
+f 5509 5510 3699
+f 8707 5500 8709
+f 5510 5501 3699
+f 5501 5503 3699
+f 4039 2867 2866
+f 5513 5514 2867
+f 5515 5508 5497
+f 5508 5509 5498
+f 5510 5516 5501
+f 5511 5503 5501
+f 1939 163 162
+f 5522 5532 5513
+f 5528 5524 5508
+f 5515 5528 5508
+f 5524 5529 5509
+f 5508 5524 5509
+f 5529 5516 5510
+f 5509 5529 5510
+f 5516 5517 5501
+f 5520 4007 3999
+f 5523 5514 5513
+f 5532 5523 5513
+f 5523 5515 5514
+f 5523 5528 5515
+f 5529 5525 5516
+f 5525 5526 5516
+f 5516 5526 5517
+f 3199 759 2033
+f 727 4236 1189
+f 5537 5522 3528
+f 5542 5523 5532
+f 5533 5530 5526
+f 5525 5533 5526
+f 5530 419 5517
+f 5526 5530 5517
+f 2155 5511 349
+f 5537 5532 5522
+f 5542 5538 5523
+f 5538 5539 5528
+f 5523 5538 5528
+f 5528 5539 5524
+f 5546 5533 5525
+f 5529 5546 5525
+f 5540 5534 5530
+f 5533 5540 5530
+f 4736 419 5530
+f 5534 4736 5530
+f 1513 2063 612
+f 5535 5536 5531
+f 5536 5537 5531
+f 5542 5532 5537
+f 5542 5551 5538
+f 5539 5545 5524
+f 5524 5545 5529
+f 5529 5545 5546
+f 5546 5543 5533
+f 5533 5543 5540
+f 5540 5541 5534
+f 5541 4567 5534
+f 540 1195 2200
+f 8115 6486 3874
+f 5550 5556 5536
+f 5535 5550 5536
+f 5544 5537 5536
+f 5571 5542 5537
+f 5544 5571 5537
+f 5551 5552 5539
+f 5538 5551 5539
+f 5539 5552 5545
+f 5548 4881 5540
+f 5543 5548 5540
+f 5540 4881 5541
+f 869 1647 640
+f 5556 5544 5536
+f 5571 5551 5542
+f 5552 5558 5545
+f 5546 5547 5543
+f 5543 5547 5548
+f 5548 4887 4881
+f 5335 5347 3546
+f 5617 4033 3775
+f 5564 5556 5550
+f 5570 5544 5556
+f 5570 5571 5544
+f 5558 5559 5545
+f 5559 5547 5546
+f 5545 5559 5546
+f 5561 4888 5548
+f 5547 5561 5548
+f 4888 4889 4887
+f 5548 4888 4887
+f 5553 5554 6564
+f 4493 4887 4889
+f 6174 6206 6683
+f 5555 5619 4789
+f 5551 5557 5552
+f 5552 5557 5558
+f 5558 5572 5559
+f 5559 5560 5547
+f 5547 5560 5561
+f 5561 4889 4888
+f 5484 5575 4580
+f 4130 4367 5686
+f 5582 5556 5564
+f 5582 5583 5556
+f 5583 5570 5556
+f 5571 5557 5551
+f 5584 5572 5558
+f 5557 5584 5558
+f 5572 5573 5559
+f 5573 5566 5560
+f 5559 5573 5560
+f 5566 5567 5561
+f 5560 5566 5561
+f 5567 4527 4889
+f 5561 5567 4889
+f 2047 3283 4965
+f 6800 6043 6799
+f 4071 5568 5431
+f 3844 3843 4558
+f 539 4889 4527
+f 5569 1100 1099
+f 5582 5564 5565
+f 5577 5582 5565
+f 5571 5578 5557
+f 5578 5584 5557
+f 5579 5574 5566
+f 5573 5579 5566
+f 5574 2044 5567
+f 5566 5574 5567
+f 3950 5452 4082
+f 4399 5850 4116
+f 5583 5578 5571
+f 5570 5583 5571
+f 5592 5585 5572
+f 5584 5592 5572
+f 5585 5579 5573
+f 5572 5585 5573
+f 5580 3601 5574
+f 5579 5580 5574
+f 6564 5581 5553
+f 5574 3601 2044
+f 5588 5582 5577
+f 5585 5589 5579
+f 5589 5586 5580
+f 5579 5589 5580
+f 5580 5586 3601
+f 6248 7043 6301
+f 3816 2805 5587
+f 5588 797 5608
+f 3054 2959 3330
+f 5597 5582 5588
+f 5597 5591 5582
+f 5591 5583 5582
+f 5591 5599 5583
+f 5583 5599 5578
+f 5592 5593 5585
+f 5585 5593 5589
+f 5589 5590 5586
+f 5590 3818 3601
+f 5586 5590 3601
+f 5578 5600 5584
+f 5584 5600 5592
+f 5594 5595 5589
+f 5593 5594 5589
+f 5589 5595 5590
+f 3552 6125 1984
+f 5608 5597 5588
+f 5600 5616 5592
+f 5616 5601 5593
+f 5592 5616 5593
+f 5593 5601 5594
+f 5594 5598 5595
+f 5598 5576 5590
+f 5595 5598 5590
+f 3283 2313 793
+f 5590 5576 3818
+f 5603 4961 5576
+f 5504 5071 4135
+f 3699 5498 5509
+f 1756 3211 2510
+f 2044 4527 5567
+f 4142 579 3229
+f 5578 5599 5600
+f 5601 5602 5594
+f 5602 5603 5598
+f 5594 5602 5598
+f 5598 5603 5576
+f 367 366 5880
+f 3989 3991 5256
+f 155 1451 280
+f 5844 6280 6556
+f 2454 2255 5744
+f 3926 5910 3996
+f 3354 3926 3996
+f 5753 3670 3963
+f 4000 5608 797
+f 5615 5591 5597
+f 5591 5615 5599
+f 5599 5649 5600
+f 5609 5610 5601
+f 5616 5609 5601
+f 5610 5611 5602
+f 5601 5610 5602
+f 5602 5611 5603
+f 6404 515 6405
+f 6122 5691 6654
+f 5486 6481 3709
+f 577 2287 1189
+f 329 6845 6222
+f 5840 3591 5625
+f 6701 5627 6104
+f 182 189 3563
+f 151 182 3563
+f 5635 5608 4000
+f 5635 5597 5608
+f 5635 5615 5597
+f 5611 4961 5603
+f 6155 2149 3577
+f 928 5390 3816
+f 6122 5618 5691
+f 6050 6876 6620
+f 3967 2848 3774
+f 580 3583 5614
+f 5674 5635 4000
+f 5649 5663 5600
+f 5663 5650 5616
+f 5600 5663 5616
+f 5650 5636 5609
+f 5616 5650 5609
+f 5636 5637 5610
+f 5609 5636 5610
+f 5610 5637 5611
+f 3229 579 5347
+f 8198 7676 4660
+f 6160 5638 5512
+f 6458 6141 5639
+f 5479 6296 6159
+f 6648 5642 6738
+f 5644 5645 5075
+f 4412 5645 5659
+f 5644 5646 5645
+f 3856 4703 4940
+f 5646 5659 5645
+f 2836 3172 2837
+f 5648 5674 4000
+f 5675 5635 5674
+f 5675 5676 5635
+f 5635 5676 5615
+f 5599 5687 5649
+f 5636 5665 5637
+f 4961 5611 5637
+f 5665 4961 5637
+f 5651 4703 412
+f 3166 4153 3566
+f 5638 5483 6300
+f 6321 5623 6457
+f 5653 3645 5971
+f 5670 5673 5655
+f 5673 5657 5656
+f 5657 5658 2692
+f 5075 2692 5658
+f 5658 5644 5075
+f 4587 4679 580
+f 6279 3687 5648
+f 5648 3687 5674
+f 5615 5687 5599
+f 5687 5688 5649
+f 5649 5688 5663
+f 5663 5664 5650
+f 5664 5677 5636
+f 5650 5664 5636
+f 5636 5677 5665
+f 5665 3743 4961
+f 4638 1952 5667
+f 5682 5683 5658
+f 5657 5682 5658
+f 5684 5644 5658
+f 5683 5684 5658
+f 5684 5646 5644
+f 5685 5661 5659
+f 6662 6720 5661
+f 7814 3689 1259
+f 4679 3583 580
+f 4839 7910 6279
+f 1019 5674 3687
+f 5688 5689 5663
+f 5663 5689 5664
+f 5677 5690 5665
+f 5665 5690 3743
+f 3752 2048 4860
+f 3987 6810 4477
+f 6106 5971 5672
+f 6655 6093 6296
+f 6108 3826 6213
+f 5671 5694 5670
+f 5694 5695 5670
+f 5695 5696 5673
+f 5670 5695 5673
+f 5696 5682 5657
+f 5673 5696 5657
+f 5697 5684 5683
+f 5698 5646 5684
+f 5698 5659 5646
+f 5698 5685 5659
+f 5685 5699 5661
+f 5699 5710 5661
+f 5272 4129 3808
+f 5701 5675 5674
+f 1019 5701 5674
+f 5701 5676 5675
+f 5676 5749 5615
+f 5615 5749 5687
+f 5689 5714 5664
+f 5714 5690 5677
+f 5664 5714 5677
+f 5690 4977 3743
+f 6600 6632 6121
+f 5678 5618 6709
+f 567 4145 3608
+f 5693 5705 5681
+f 5681 5694 5671
+f 5694 5706 5695
+f 5697 5698 5684
+f 5743 5685 5698
+f 4977 4495 3743
+f 5503 5511 2155
+f 3854 5421 5407
+f 5749 5702 5687
+f 5687 5702 5688
+f 5713 5714 5689
+f 5688 5713 5689
+f 5714 5715 5690
+f 5690 5371 4977
+f 928 3816 3872
+f 4052 5377 930
+f 6228 5488 5505
+f 6121 6632 5478
+f 7787 5704 5693
+f 5693 5704 5705
+f 5705 5720 5681
+f 5720 5721 5694
+f 5681 5720 5694
+f 5694 5721 5706
+f 5722 5707 5695
+f 5706 5722 5695
+f 5695 5707 5696
+f 5707 5723 5696
+f 5696 5723 5682
+f 5723 5708 5682
+f 5708 5724 5683
+f 5682 5708 5683
+f 5724 5709 5697
+f 5683 5724 5697
+f 5725 5698 5697
+f 5709 5725 5697
+f 5725 5743 5698
+f 5726 5685 5743
+f 5726 5699 5685
+f 5726 5710 5699
+f 251 1748 4690
+f 3779 3752 5712
+f 5765 5676 5701
+f 5702 5728 5688
+f 5688 5728 5713
+f 5715 5729 5690
+f 5690 5729 5371
+f 6469 6578 6514
+f 4015 3615 3814
+f 5686 4679 4587
+f 4344 5821 4276
+f 5691 5678 5692
+f 6654 5691 5482
+f 5718 5704 7787
+f 5718 5519 5704
+f 5719 5720 5705
+f 5704 5719 5705
+f 5721 5722 5706
+f 5722 5737 5707
+f 5737 5739 5707
+f 5707 5739 5723
+f 5723 5740 5708
+f 5763 5725 5709
+f 5744 5710 5726
+f 2255 3711 5711
+f 5744 5711 5710
+f 1748 1799 4690
+f 5728 5750 5713
+f 5750 5751 5714
+f 5713 5750 5714
+f 5751 5729 5715
+f 5714 5751 5715
+f 5296 5305 3551
+f 324 4416 3667
+f 5731 1434 5732
+f 8237 5474 4375
+f 5852 512 5754
+f 2848 2890 3774
+f 3808 5727 5607
+f 3645 6604 5971
+f 5506 5774 5733
+f 5478 5734 6497
+f 5719 5791 5720
+f 5791 5735 5720
+f 5720 5735 5721
+f 5735 5761 5721
+f 5761 5736 5722
+f 5721 5761 5722
+f 5736 5737 5722
+f 5738 5739 5737
+f 5739 5740 5723
+f 5741 5762 5708
+f 5740 5741 5708
+f 5762 5742 5708
+f 5708 5742 5724
+f 5724 5742 5709
+f 5709 5742 5763
+f 5763 5764 5725
+f 5764 5743 5725
+f 2255 5711 5744
+f 6914 6916 3459
+f 3701 5746 4984
+f 5748 1019 4984
+f 5746 5748 4984
+f 5748 5701 1019
+f 5748 5765 5701
+f 5766 5676 5765
+f 5676 5766 5749
+f 5702 5767 5728
+f 5728 5767 5750
+f 481 3872 5869
+f 5274 4800 4157
+f 512 1730 5754
+f 1730 481 3964
+f 1686 5852 3780
+f 3490 3106 1299
+f 6698 6718 6700
+f 5734 5805 6497
+f 897 4778 4796
+f 678 5365 586
+f 3396 5607 5606
+f 367 5880 3570
+f 5263 3582 5717
+f 5986 5985 5632
+f 6497 5805 6072
+f 6072 5805 5759
+f 5519 5790 5704
+f 5704 5790 5719
+f 5791 5760 5735
+f 5735 5760 5761
+f 5736 5795 5737
+f 5737 5795 5738
+f 5738 5775 5739
+f 5739 5775 5740
+f 5740 5775 5741
+f 5762 5797 5742
+f 5797 5776 5742
+f 5742 5776 5763
+f 5764 5401 5743
+f 5401 5726 5743
+f 5744 5401 5187
+f 4375 5169 4374
+f 5766 5799 5749
+f 5799 5782 5702
+f 5749 5799 5702
+f 5702 5782 5767
+f 5767 5800 5750
+f 5800 5768 5751
+f 5750 5800 5751
+f 5768 5769 5729
+f 5751 5768 5729
+f 5729 5769 2593
+f 3844 3283 2047
+f 3565 3669 3741
+f 2159 2176 2227
+f 5703 6743 5493
+f 5493 6743 1833
+f 111 233 193
+f 5506 6619 5774
+f 3226 634 3259
+f 5770 5772 5756
+f 5770 8485 5771
+f 5772 5755 5756
+f 5772 5787 5755
+f 5787 5773 5755
+f 3568 4351 3824
+f 5733 5774 5662
+f 6654 5482 5662
+f 5549 6654 5662
+f 3302 5790 5519
+f 5792 5793 5760
+f 5793 5794 5761
+f 5760 5793 5761
+f 5761 5794 5736
+f 5736 5794 5795
+f 5775 5796 5741
+f 5796 5827 5762
+f 5741 5796 5762
+f 5762 5827 5797
+f 5776 5777 5763
+f 5778 5764 5763
+f 5777 5778 5763
+f 5444 3696 6388
+f 7012 7287 707
+f 5774 5549 5662
+f 4351 4464 3824
+f 5782 5800 5767
+f 5800 5801 5768
+f 413 3666 3908
+f 3836 4058 6467
+f 6474 5784 5785
+f 103 3532 2444
+f 5607 3558 5606
+f 3965 5254 5772
+f 5043 1623 1599
+f 5254 5806 5772
+f 5806 5787 5772
+f 5788 5773 5787
+f 1834 212 3031
+f 5788 5809 5773
+f 8005 5951 8070
+f 1995 5783 3169
+f 5783 5359 3169
+f 3016 5812 3302
+f 3302 5812 5790
+f 5790 5813 5719
+f 5719 5813 5791
+f 5791 5792 5760
+f 5795 5815 5738
+f 5738 5815 5775
+f 5815 5796 5775
+f 5827 5828 5797
+f 5818 5776 5797
+f 5776 5818 5777
+f 5777 522 5778
+f 5370 6184 6152
+f 4131 5460 2781
+f 7065 7101 7168
+f 6665 6664 7447
+f 6668 2807 4909
+f 5746 5873 5748
+f 5799 5834 5782
+f 5782 5834 5800
+f 5418 4123 679
+f 6104 5804 6482
+f 7052 6831 6158
+f 3965 5770 5771
+f 5807 5787 5806
+f 5808 5788 5787
+f 5807 5808 5787
+f 5808 5809 5788
+f 6658 4174 6504
+f 5812 5823 5790
+f 5790 5823 5813
+f 5791 5813 5792
+f 5813 5847 5792
+f 5847 5814 5793
+f 5792 5847 5793
+f 5793 5814 5794
+f 5814 5825 5794
+f 5794 5825 5795
+f 5825 5826 5795
+f 5795 5826 5815
+f 5815 5816 5796
+f 5796 5816 5827
+f 5828 5818 5797
+f 5175 2458 5817
+f 5818 5817 4769
+f 5777 3637 522
+f 4092 5819 4094
+f 6486 6494 3874
+f 5821 3853 7971
+f 5833 5896 5746
+f 5746 5896 5873
+f 5874 5748 5873
+f 5874 5765 5748
+f 5766 5834 5799
+f 5835 5836 5800
+f 5834 5835 5800
+f 5836 5837 5801
+f 5800 5836 5801
+f 5837 5878 5768
+f 5801 5837 5768
+f 5878 2593 5769
+f 5768 5878 5769
+f 6779 5631 6004
+f 6099 5330 1397
+f 3271 6778 7250
+f 2805 4934 413
+f 6776 3659 6828
+f 6244 6603 5759
+f 6591 6710 6622
+f 6156 6625 5784
+f 257 171 3282
+f 5842 5806 5254
+f 5842 5807 5806
+f 5842 5843 5807
+f 5843 5808 5807
+f 5843 5860 5808
+f 5861 5809 5808
+f 5860 5861 5808
+f 419 4736 307
+f 3396 5606 5630
+f 3016 5822 5812
+f 5822 5823 5812
+f 5823 5824 5813
+f 5824 5866 5813
+f 5866 5847 5813
+f 5825 5849 5826
+f 5826 5850 5815
+f 5815 5850 5816
+f 5816 5851 5827
+f 5828 5817 5818
+f 6212 354 6185
+f 5830 3399 3689
+f 4013 6520 4011
+f 5672 5831 5829
+f 5821 3868 3853
+f 8048 5832 6472
+f 3701 5833 5746
+f 5874 5855 5766
+f 5765 5874 5766
+f 5766 5855 5834
+f 5331 5838 6194
+f 5018 4996 2593
+f 3387 3826 6108
+f 3864 5494 5506
+f 6244 6529 6603
+f 5882 5883 6800
+f 4719 5859 5254
+f 5859 5842 5254
+f 5844 467 6280
+f 6570 5624 5844
+f 5863 467 5844
+f 5624 5863 5844
+f 5864 5822 467
+f 5863 5864 467
+f 5864 5865 5822
+f 5865 5845 5823
+f 5822 5865 5823
+f 5823 5845 5824
+f 5824 5846 5866
+f 5847 5848 5814
+f 5848 5849 5825
+f 5814 5848 5825
+f 5826 5849 5850
+f 5816 5850 5851
+f 5851 5175 5828
+f 5827 5851 5828
+f 4399 903 1118
+f 3937 5852 4620
+f 5754 4340 4004
+f 4620 5754 4004
+f 4004 4340 4641
+f 4641 5853 4005
+f 8050 8048 5854
+f 122 5872 5833
+f 5833 5872 5896
+f 5855 5875 5834
+f 5875 5876 5835
+f 5834 5875 5835
+f 5876 5877 5836
+f 5835 5876 5836
+f 5877 5878 5837
+f 5836 5877 5837
+f 5878 5018 2593
+f 2532 3561 996
+f 4826 6402 5856
+f 6662 5661 5710
+f 6800 7736 5858
+f 5858 5882 6800
+f 5919 5884 5883
+f 4005 5853 5928
+f 6486 3001 5841
+f 5887 5842 5859
+f 5887 5843 5842
+f 5887 5888 5843
+f 5888 5860 5843
+f 565 3177 1092
+f 6570 3629 5624
+f 183 565 1092
+f 5865 5889 5845
+f 5845 5846 5824
+f 5846 5890 5866
+f 5866 5867 5847
+f 5867 5848 5847
+f 5848 5891 5849
+f 5891 5908 5849
+f 5908 5892 5849
+f 5849 5892 5850
+f 5851 5850 4399
+f 5851 1118 5175
+f 4057 3387 6108
+f 4074 6209 6075
+f 3550 185 3025
+f 5081 519 2631
+f 427 576 633
+f 169 3436 3025
+f 4344 3657 5821
+f 5596 3990 4157
+f 1072 5870 5871
+f 5873 5913 5874
+f 5874 5897 5855
+f 5855 5897 5875
+f 5390 5424 4935
+f 5879 4240 4385
+f 3837 6385 6410
+f 4427 6171 6887
+f 2082 5881 6468
+f 5901 5882 5858
+f 5607 5727 3558
+f 5920 5886 5859
+f 5886 5887 5859
+f 5921 5888 5887
+f 5888 5861 5860
+f 5781 5862 5861
+f 5888 5781 5861
+f 4109 4436 139
+f 5781 5624 3629
+f 5906 5863 5624
+f 5907 5864 5863
+f 5906 5907 5863
+f 5864 5907 5865
+f 5889 5890 5846
+f 5845 5889 5846
+f 5890 5867 5866
+f 5908 5909 5892
+f 6191 6871 6020
+f 5894 5642 6648
+f 4800 4435 4723
+f 5880 4766 4759
+f 4746 5880 4759
+f 4766 3779 4775
+f 3779 5712 4775
+f 5895 5717 5504
+f 5872 5931 5896
+f 5896 5933 5873
+f 5933 5913 5873
+f 5914 5874 5913
+f 5874 5914 5897
+f 5897 5915 5875
+f 5915 5877 5876
+f 5875 5915 5876
+f 5877 5916 5878
+f 4930 5152 1780
+f 4147 3669 1686
+f 7107 5899 3454
+f 5991 5900 6667
+f 5918 5882 5901
+f 5919 5883 5882
+f 5918 5919 5882
+f 5074 5920 4719
+f 5921 5887 5886
+f 5940 5888 5921
+f 5904 5781 5888
+f 5903 5906 5624
+f 5907 5942 5865
+f 5865 5942 5889
+f 5889 5923 5890
+f 5923 5965 5890
+f 5890 5965 5867
+f 5909 5789 5892
+f 5780 6107 5894
+f 3208 5506 5733
+f 5066 6083 5067
+f 4169 2805 3670
+f 4769 5817 2458
+f 5541 4887 4492
+f 3856 1565 5802
+f 94 2858 8702
+f 3669 2847 1730
+f 4648 4083 5323
+f 523 5931 5872
+f 199 523 5872
+f 5931 5932 5896
+f 5896 5932 5933
+f 5914 5934 5897
+f 5897 5934 5915
+f 5917 5903 5568
+f 162 4574 4576
+f 3106 1333 5927
+f 3657 3567 957
+f 5919 5918 5937
+f 5332 5700 4219
+f 5920 5959 5886
+f 5960 5921 5886
+f 5939 5940 5921
+f 5940 5904 5888
+f 3982 5294 1208
+f 5917 5906 5903
+f 5930 5903 5781
+f 5941 5907 5906
+f 5917 5941 5906
+f 5941 5942 5907
+f 5965 5924 5867
+f 5924 5925 5848
+f 5867 5924 5848
+f 5848 5925 5891
+f 5891 5926 5908
+f 5926 5927 5909
+f 5908 5926 5909
+f 5927 1333 5909
+f 6622 5654 3591
+f 6712 5383 5384
+f 653 1331 2359
+f 5332 300 5700
+f 4641 2046 5853
+f 5853 2684 5928
+f 5928 2684 929
+f 4340 2046 4641
+f 1257 3570 4435
+f 1834 1843 212
+f 5931 5974 5932
+f 5933 5953 5913
+f 5953 5954 5914
+f 5913 5953 5914
+f 5914 5954 5934
+f 5934 5956 5915
+f 5915 5956 5877
+f 366 3779 5880
+f 2444 2428 3764
+f 4230 5935 5936
+f 5918 6539 5958
+f 5958 5937 5918
+f 5998 5921 5960
+f 5998 5961 5921
+f 5961 5939 5921
+f 5345 4131 2781
+f 5930 5904 5980
+f 4212 3215 4095
+f 5942 5963 5889
+f 5889 5963 5923
+f 5963 5964 5923
+f 5923 5964 5965
+f 5966 5967 5925
+f 5924 5966 5925
+f 5925 5967 5891
+f 5891 5967 5926
+f 146 4672 4673
+f 1132 5947 3266
+f 5651 412 5274
+f 4547 4623 373
+f 3651 3323 4623
+f 493 3532 103
+f 4344 3566 3657
+f 4562 4547 328
+f 4240 4464 4351
+f 4240 3957 4464
+f 4240 8149 3957
+f 4039 5522 5513
+f 656 3416 3317
+f 5974 5975 5932
+f 5976 5933 5932
+f 5975 5976 5932
+f 5933 5976 5953
+f 5954 5955 5934
+f 5934 5955 5956
+f 5956 5916 5877
+f 5208 5957 5190
+f 7180 4982 6562
+f 4276 5821 7971
+f 4502 4297 5471
+f 4275 5958 6539
+f 5978 4275 6539
+f 5885 5937 5958
+f 5596 3991 3990
+f 5997 5886 5959
+f 5997 5960 5886
+f 5962 5939 5961
+f 5999 5940 5939
+f 5962 5999 5939
+f 5999 5980 5940
+f 5568 5941 5917
+f 5982 5942 5941
+f 5942 5982 5963
+f 5965 5984 5924
+f 5924 5984 5966
+f 5479 4075 6296
+f 5989 6727 6241
+f 5025 5916 5029
+f 4033 3746 3775
+f 4143 374 4148
+f 374 4027 4148
+f 3257 374 4143
+f 3651 2007 3323
+f 2007 440 3323
+f 3323 4053 4027
+f 3409 324 3667
+f 4502 4562 4297
+f 4562 328 401
+f 2469 4220 3637
+f 4562 401 4297
+f 4134 4577 4573
+f 3780 3868 5821
+f 5870 1072 5384
+f 5974 6014 5975
+f 5976 5994 5953
+f 5994 5995 5954
+f 5953 5994 5954
+f 5954 5995 5955
+f 5955 6016 5956
+f 5956 6016 5916
+f 4248 5977 5879
+f 4649 4645 1568
+f 6539 5199 5978
+f 4274 5885 5958
+f 4275 4274 5958
+f 5959 5979 5997
+f 5997 5998 5960
+f 5998 5962 5961
+f 5981 5941 5568
+f 5981 5982 5941
+f 5982 5983 5963
+f 5983 618 5964
+f 5963 5983 5964
+f 618 5984 5965
+f 5964 618 5965
+f 5984 5249 5966
+f 5966 5249 5967
+f 5454 8462 8458
+f 6300 102 6856
+f 4118 3749 3941
+f 5944 7729 6656
+f 1536 4174 1398
+f 5992 4074 6684
+f 4047 4203 4196
+f 5628 5627 6701
+f 3839 6245 5811
+f 4416 3865 3804
+f 3667 4416 3804
+f 4135 5050 706
+f 436 1479 1429
+f 4574 4648 4576
+f 439 3163 3715
+f 447 2685 3593
+f 1998 4577 4134
+f 5852 5754 4620
+f 3881 5106 3001
+f 2874 6029 5974
+f 1621 2874 5974
+f 5974 6029 6014
+f 5975 5993 5976
+f 5976 5993 5994
+f 5995 6016 5955
+f 6016 4745 5916
+f 5099 5067 6083
+f 1393 2061 1998
+f 2848 2060 1393
+f 5996 5978 5199
+f 5996 4275 5978
+f 5996 5484 4275
+f 7239 5997 5979
+f 6787 5998 5997
+f 6830 5962 5998
+f 4071 5981 5568
+f 3942 5982 5981
+f 3942 6000 5983
+f 5982 3942 5983
+f 389 3925 3942
+f 5983 6000 618
+f 618 4877 5984
+f 5984 4877 5249
+f 6529 5950 5949
+f 6634 5669 5652
+f 6584 6008 6009
+f 6220 2482 5987
+f 93 2203 94
+f 4653 3914 4063
+f 61 6011 62
+f 5916 5025 5878
+f 5025 5018 5878
+f 6482 5804 6714
+f 6759 4159 6510
+f 3001 2178 3881
+f 6651 6499 6612
+f 99 2114 2104
+f 1479 3467 1429
+f 565 2104 3177
+f 2329 2889 101
+f 3450 2329 100
+f 100 2329 101
+f 3450 100 3159
+f 2060 2061 1393
+f 3225 6029 2874
+f 4536 3225 2874
+f 5975 6030 5993
+f 6031 5994 5993
+f 6030 6031 5993
+f 6031 6015 5995
+f 5994 6031 5995
+f 5995 6015 6016
+f 6016 5066 4745
+f 3775 928 3872
+f 4594 2060 2848
+f 5199 4871 5996
+f 4149 3285 3286
+f 3453 5998 6787
+f 3453 6830 5998
+f 992 1132 6017
+f 7342 5999 5962
+f 5962 6830 7342
+f 7342 3607 5999
+f 6873 6018 5555
+f 3942 5981 389
+f 6003 5494 3864
+f 5936 6020 6019
+f 5854 8048 6472
+f 3522 134 2648
+f 6466 6522 6500
+f 6023 6021 7238
+f 6021 6045 6010
+f 7238 6021 6010
+f 6010 6045 6012
+f 6045 6046 6012
+f 6046 6047 6012
+f 6022 6012 6047
+f 6047 6048 6022
+f 6048 6049 6488
+f 6025 5480 5486
+f 5505 5620 6228
+f 5619 6671 4789
+f 6082 6605 3389
+f 6203 6116 6483
+f 2114 99 2115
+f 337 4436 4109
+f 5928 929 4650
+f 5630 538 3935
+f 929 5745 3619
+f 1030 256 1031
+f 6029 6051 6014
+f 6051 6052 5975
+f 6014 6051 5975
+f 5975 6052 6030
+f 6031 6053 6015
+f 5066 6016 6015
+f 6053 5066 6015
+f 658 620 6761
+f 4650 929 3619
+f 5745 5868 3619
+f 5745 5285 5868
+f 4357 1979 414
+f 6661 217 3520
+f 6033 5996 4871
+f 6034 6033 4871
+f 6033 5575 5996
+f 1478 2133 2782
+f 6035 6036 5803
+f 6211 6623 5780
+f 5727 3618 4583
+f 6037 8341 8342
+f 6444 5612 4036
+f 6501 6077 6078
+f 5988 6056 6563
+f 6040 4356 6495
+f 3717 6071 6043
+f 3641 3876 3675
+f 5364 6044 6023
+f 7136 5364 6023
+f 6023 6044 6021
+f 1842 655 2813
+f 5623 5489 6050
+f 3586 3860 2762
+f 2918 188 3860
+f 4514 3617 4604
+f 4587 580 1881
+f 4604 3660 4587
+f 5666 5630 3935
+f 5666 3935 185
+f 4386 6066 6029
+f 4386 6029 3225
+f 6029 6066 6051
+f 6052 6086 6030
+f 6030 6086 6031
+f 6031 6086 6053
+f 5067 3698 5066
+f 5895 4860 5717
+f 5869 5587 5911
+f 2695 3596 1928
+f 5617 2847 3565
+f 5359 7430 3374
+f 481 5869 5911
+f 3554 4571 153
+f 3553 4571 3554
+f 4624 4357 414
+f 169 568 1480
+f 4958 5470 4871
+f 5470 6034 4871
+f 4579 5575 6033
+f 4413 3463 4301
+f 3752 4860 5895
+f 3758 230 4648
+f 5753 4169 3670
+f 729 3024 3560
+f 3932 3573 295
+f 4157 4723 5596
+f 5680 6001 6582
+f 546 196 229
+f 551 6269 6055
+f 6055 6269 6268
+f 551 6055 6190
+f 3386 1127 1544
+f 6042 7180 6562
+f 6060 6079 6045
+f 6021 6060 6045
+f 6079 6046 6045
+f 6080 6047 6046
+f 6080 6081 6048
+f 6047 6080 6048
+f 6081 6096 6049
+f 6048 6081 6049
+f 6096 6061 6049
+f 6489 6589 6063
+f 194 410 158
+f 6065 2528 4748
+f 3595 295 3574
+f 4258 1153 6415
+f 6066 6067 6051
+f 6067 6085 6052
+f 6051 6067 6052
+f 6052 6085 6086
+f 6086 6102 6053
+f 1127 2416 1544
+f 3436 5310 3721
+f 4703 3856 412
+f 5910 4166 1928
+f 3596 5617 3565
+f 6032 6642 6616
+f 5754 1730 3964
+f 706 3865 4416
+f 3606 2443 3940
+f 3932 734 3573
+f 3606 3940 3163
+f 4640 1969 6034
+f 1562 5108 4779
+f 7922 3501 3500
+f 1854 1819 550
+f 4757 5752 6069
+f 189 4462 3563
+f 3024 3604 3553
+f 3912 5494 6003
+f 6599 6528 6461
+f 6055 6003 3864
+f 6247 6573 5632
+f 6173 5972 6456
+f 5494 6619 5506
+f 6505 6072 6211
+f 4622 4533 6026
+f 5631 6779 6247
+f 5987 6595 1915
+f 6113 6096 6081
+f 6097 6061 6096
+f 6002 6135 6627
+f 410 411 3955
+f 6064 3587 581
+f 1881 5614 151
+f 4326 3856 4699
+f 4648 5323 3758
+f 2516 573 5356
+f 4961 3743 4851
+f 4202 5073 5071
+f 1100 5564 5550
+f 4386 6084 6066
+f 6084 6100 6066
+f 6066 6100 6067
+f 6102 6083 6053
+f 4640 1029 1969
+f 4169 5753 5853
+f 633 1844 427
+f 3832 3578 4462
+f 6750 6103 5476
+f 743 6069 6070
+f 6103 743 6070
+f 743 5470 6069
+f 743 744 5470
+f 3552 1984 3321
+f 6144 5358 7783
+f 147 3577 2149
+f 538 5606 3555
+f 4441 5727 4583
+f 3617 3660 4604
+f 6444 4760 5521
+f 5631 5621 6004
+f 439 3715 698
+f 6619 6627 5774
+f 4760 6536 5521
+f 5774 6627 6639
+f 6005 4861 6039
+f 2203 2781 4944
+f 1072 5871 6088
+f 416 2100 612
+f 6639 6640 5549
+f 5549 6640 6654
+f 6073 6092 4186
+f 826 5669 6634
+f 5987 2482 6595
+f 6209 4057 6108
+f 2482 6594 6595
+f 6480 6094 6002
+f 6493 6469 6453
+f 2168 6091 6145
+f 6079 6095 6046
+f 6095 6111 6046
+f 6111 6080 6046
+f 6112 6113 6081
+f 6080 6112 6081
+f 6114 4528 6097
+f 3993 6098 1396
+f 158 410 3955
+f 411 740 407
+f 1396 6741 6099
+f 3586 2762 581
+f 3660 5686 4587
+f 5272 3638 4129
+f 6890 6893 7143
+f 7342 4115 3607
+f 6984 6935 6976
+f 1293 6123 6084
+f 3226 1293 6084
+f 6123 6100 6084
+f 6100 6148 6067
+f 6148 6124 6085
+f 6067 6148 6085
+f 6101 6086 6085
+f 6124 6101 6085
+f 6086 6101 6102
+f 3775 3872 968
+f 5712 3752 5895
+f 3670 413 3908
+f 4640 744 4639
+f 4852 5356 573
+f 189 3832 4462
+f 3617 4514 4583
+f 3618 3617 4583
+f 6126 6103 6750
+f 6152 6126 6750
+f 5030 5025 5029
+f 580 5614 1881
+f 3587 3586 581
+f 2953 3005 318
+f 2953 318 2918
+f 6829 7445 7357
+f 6068 6557 6571
+f 3885 5401 3884
+f 6161 6160 5489
+f 5401 5764 3884
+f 756 6541 6092
+f 6108 6074 5628
+f 5604 3242 6813
+f 5947 5604 6813
+f 6129 6130 6079
+f 6130 6131 6095
+f 6079 6130 6095
+f 6095 6131 6111
+f 6111 6112 6080
+f 6166 6096 6113
+f 6134 6097 6096
+f 6134 6114 6097
+f 6013 6502 6816
+f 6543 6565 6535
+f 6116 6456 6319
+f 4130 3660 3618
+f 6063 6507 6119
+f 3218 2234 796
+f 6121 5478 6561
+f 5489 6160 6876
+f 6203 6456 6116
+f 6123 6146 6100
+f 6146 6147 6100
+f 6100 6147 6148
+f 6124 6149 6101
+f 6149 6150 6102
+f 6101 6149 6102
+f 6102 6150 6083
+f 4340 3964 2046
+f 3660 3617 3618
+f 6153 6126 6152
+f 6155 6103 6126
+f 6155 743 6103
+f 4244 4173 2555
+f 481 5911 2046
+f 5911 4169 2046
+f 3578 2823 4462
+f 139 216 3625
+f 3625 216 108
+f 216 537 108
+f 537 219 3794
+f 108 537 3794
+f 5487 3863 6609
+f 6062 5483 5638
+f 6057 6297 6450
+f 6073 4186 6450
+f 6696 5900 5804
+f 4965 793 1274
+f 6128 6958 5948
+f 5948 6162 6128
+f 5311 6162 5400
+f 6128 6162 5311
+f 6131 6132 6111
+f 6132 6133 6111
+f 6111 6133 6112
+f 6133 6165 6112
+f 6165 6199 6113
+f 6112 6165 6113
+f 6199 6166 6113
+f 6167 6096 6166
+f 6167 6134 6096
+f 6168 6114 6134
+f 6169 4528 6114
+f 6168 6169 6114
+f 6169 6237 4528
+f 6237 5562 4528
+f 3882 2070 4791
+f 6173 5643 5972
+f 5968 6136 3376
+f 6788 6118 6789
+f 6094 6135 6002
+f 6179 334 4199
+f 6142 3798 6255
+f 6719 6523 5679
+f 5512 5638 6300
+f 556 6181 6123
+f 6181 6146 6123
+f 6183 6124 6148
+f 6124 6183 6149
+f 5099 6083 6150
+f 2847 968 1730
+f 4169 5853 2046
+f 743 6155 3577
+f 484 3406 4757
+f 457 5228 7407
+f 6054 6184 5370
+f 6154 6126 6153
+f 6154 6155 6126
+f 3570 5880 4746
+f 4404 4963 2192
+f 1349 3257 5426
+f 3579 5273 3578
+f 5894 6107 466
+f 219 6064 581
+f 2107 3584 417
+f 4164 4152 6479
+f 6188 5078 3313
+f 1752 7873 2388
+f 5078 6189 6158
+f 6556 6638 6508
+f 6202 6041 6115
+f 6194 6195 5948
+f 5331 6194 5948
+f 5948 6195 6162
+f 6162 6196 5400
+f 5400 6196 6129
+f 6196 6163 6129
+f 6129 6163 6130
+f 6163 6164 6130
+f 6130 6164 6131
+f 6131 6164 6132
+f 6132 6197 6133
+f 6197 6165 6133
+f 6165 6198 6199
+f 6168 6134 6167
+f 6171 6172 6170
+f 3378 6201 6024
+f 6789 6206 6174
+f 6136 6174 3376
+f 6137 6478 6707
+f 3814 6178 7205
+f 6119 6507 6571
+f 6090 5626 1268
+f 6521 3389 6026
+f 6146 6215 6147
+f 6147 6182 6148
+f 6182 6183 6148
+f 6183 6216 6149
+f 6216 3401 6150
+f 6149 6216 6150
+f 3401 5099 6150
+f 3669 512 1686
+f 4769 3637 5777
+f 4129 4130 3618
+f 5622 6062 6161
+f 6219 6153 6152
+f 6184 6219 6152
+f 6219 6154 6153
+f 3321 6155 6154
+f 3321 2149 6155
+f 3908 3666 3546
+f 6185 3645 5653
+f 1543 6845 1330
+f 6224 6225 6870
+f 6223 6224 6870
+f 6225 6226 6188
+f 6226 6189 5078
+f 6188 6226 5078
+f 6189 6258 6158
+f 819 1650 3831
+f 3603 7205 6178
+f 5935 6191 6020
+f 6193 5838 6922
+f 5331 6922 5838
+f 6195 6232 6162
+f 6162 6232 6196
+f 6196 6288 6163
+f 6163 6233 6164
+f 6164 6197 6132
+f 6197 6198 6165
+f 6200 6166 6199
+f 6200 6167 6166
+f 6200 6236 6168
+f 6167 6200 6168
+f 6236 6169 6168
+f 6267 6171 6170
+f 6239 6267 6170
+f 6171 4427 6172
+f 6202 6117 6041
+f 4087 8581 6204
+f 6474 466 6107
+f 6465 6532 6038
+f 6137 6707 6475
+f 6478 6207 6175
+f 6208 3668 4999
+f 6504 1536 6210
+f 6212 5653 6575
+f 6181 556 1298
+f 6214 6146 6181
+f 6146 6214 6215
+f 6215 6251 6147
+f 6147 6251 6182
+f 6216 6183 6182
+f 6276 3401 6216
+f 5727 4129 3618
+f 6218 6184 6054
+f 6217 6218 6054
+f 6218 6219 6184
+f 6151 5393 6388
+f 6221 3166 4344
+f 5362 6222 1543
+f 3817 6223 1700
+f 4131 698 615
+f 6256 6223 3817
+f 6284 6225 6224
+f 6258 6227 645
+f 4064 644 645
+f 6229 6260 5838
+f 6193 6229 5838
+f 6260 6230 6194
+f 5838 6260 6194
+f 6230 6231 6195
+f 6194 6230 6195
+f 6195 6231 6232
+f 6232 6288 6196
+f 6288 6289 6163
+f 6289 6312 6163
+f 6163 6312 6233
+f 6233 6234 6164
+f 6234 6235 6197
+f 6164 6234 6197
+f 6197 6235 6198
+f 6198 6264 6199
+f 6264 6292 6199
+f 6292 6200 6199
+f 6292 6294 6200
+f 6294 6236 6200
+f 6294 6265 6236
+f 6266 6169 6236
+f 6266 6237 6169
+f 6238 6239 6237
+f 6887 6171 6267
+f 6041 6117 6203
+f 7077 6241 7356
+f 4356 5329 6495
+f 6470 6580 6451
+f 6779 4638 6247
+f 1298 6249 6214
+f 6248 6250 6249
+f 6250 6214 6249
+f 6250 6272 6214
+f 6273 6215 6214
+f 6272 6273 6214
+f 6215 6273 6251
+f 6182 6275 6216
+f 6275 6276 6216
+f 6276 5135 3401
+f 412 3856 5802
+f 6742 5488 6228
+f 6253 6252 6217
+f 6252 6218 6217
+f 6252 6278 6218
+f 3552 6219 6218
+f 6278 3552 6218
+f 6254 6742 6228
+f 3401 5135 4919
+f 6742 6741 5703
+f 5488 6742 5703
+f 5362 1543 5402
+f 1952 5485 3387
+f 6281 6222 5362
+f 5363 6281 5362
+f 6334 329 6222
+f 6281 6334 6222
+f 6257 6223 6256
+f 6283 6224 6223
+f 6257 6283 6223
+f 6283 6284 6224
+f 6284 6226 6225
+f 6227 4064 645
+f 4212 3882 4791
+f 6193 6259 6229
+f 6260 6261 6230
+f 6261 6287 6231
+f 6230 6261 6231
+f 6287 6262 6232
+f 6231 6287 6232
+f 6232 6262 6288
+f 6312 6290 6233
+f 6233 6290 6234
+f 6234 6263 6235
+f 6235 6314 6198
+f 6198 6314 6264
+f 6265 6266 6236
+f 6238 6237 6266
+f 6238 6267 6239
+f 5361 4151 6688
+f 5752 5476 6070
+f 3468 491 218
+f 218 5431 5930
+f 6175 6207 6649
+f 6571 6557 6606
+f 5970 6656 6104
+f 5641 5992 6138
+f 4057 6209 5992
+f 6301 6325 6248
+f 6325 6250 6248
+f 6325 6326 6250
+f 6326 6272 6250
+f 6274 6182 6251
+f 6273 6274 6251
+f 6274 6275 6182
+f 6909 4064 5042
+f 5042 4064 6285
+f 422 1421 1157
+f 4887 4493 4492
+f 5660 6277 6253
+f 6253 6304 6252
+f 6304 6278 6252
+f 6125 3552 6278
+f 157 5343 1799
+f 6129 6060 5244
+f 5703 6741 6743
+f 8439 6734 6282
+f 6281 6364 6334
+f 3955 411 407
+f 6336 6284 6283
+f 6306 6226 6284
+f 6189 6337 6258
+f 6258 6337 6227
+f 6227 6285 4064
+f 5353 6285 4987
+f 3547 2070 3882
+f 6307 6308 5747
+f 6308 6309 6259
+f 5747 6308 6259
+f 6229 6286 6260
+f 6260 6286 6261
+f 6287 6311 6262
+f 6262 6311 6288
+f 6263 6314 6235
+f 6314 6291 6264
+f 6345 6292 6264
+f 6291 6345 6264
+f 6293 6294 6292
+f 6294 6295 6265
+f 6295 6266 6265
+f 6316 6238 6266
+f 6316 6346 6238
+f 8113 4035 8128
+f 5654 6447 6738
+f 6004 6297 6057
+f 5629 6758 6751
+f 1267 5196 6882
+f 5196 1267 6322
+f 5196 6322 6878
+f 6298 6322 1267
+f 6322 6353 6878
+f 6353 6323 5507
+f 6207 6299 6649
+f 105 6212 6610
+f 6324 6325 6301
+f 6302 6273 6272
+f 6326 6302 6272
+f 6302 6274 6273
+f 6327 6275 6274
+f 6328 6276 6275
+f 6327 6328 6275
+f 6328 5135 6276
+f 3818 5576 4686
+f 6656 7729 6696
+f 5910 1928 3996
+f 6329 6303 6277
+f 6303 6253 6277
+f 6303 6331 6253
+f 6331 6304 6253
+f 6125 6278 6304
+f 5424 3978 4935
+f 6305 6332 5363
+f 6332 6281 5363
+f 5190 6332 6305
+f 6364 6281 6333
+f 3865 3866 3790
+f 6256 6334 6257
+f 6335 6283 6257
+f 6335 6336 6283
+f 6306 6284 6336
+f 6306 6337 6189
+f 6226 6306 6189
+f 6337 6338 6227
+f 6227 6338 6285
+f 6309 6286 6229
+f 6259 6309 6229
+f 6341 6310 6261
+f 6286 6341 6261
+f 6261 6310 6287
+f 6310 6311 6287
+f 6311 6371 6288
+f 6288 6371 6289
+f 6312 6313 6290
+f 6290 6313 6234
+f 6313 6374 6263
+f 6234 6313 6263
+f 6374 6343 6314
+f 6263 6374 6314
+f 6345 6293 6292
+f 6293 6315 6294
+f 6315 6295 6294
+f 6377 6346 6316
+f 6317 6267 6238
+f 6346 6317 6238
+f 6317 437 6267
+f 6319 6320 6318
+f 6727 5989 6495
+f 6117 6173 6203
+f 6456 6240 6320
+f 6321 6206 6246
+f 6351 6352 6298
+f 6350 6351 6298
+f 6352 6381 6298
+f 6298 6381 6322
+f 6323 6383 4704
+f 6357 6326 6325
+f 6359 6302 6326
+f 6360 6274 6302
+f 6359 6360 6302
+f 6360 6327 6274
+f 4239 5135 6328
+f 4381 1776 4382
+f 5717 3582 5504
+f 4567 4736 5534
+f 6361 6362 6329
+f 6330 6303 6329
+f 6362 6330 6329
+f 6330 6331 6303
+f 5446 6304 6331
+f 6304 5446 6125
+f 5587 2805 4169
+f 6053 6083 5066
+f 6363 6257 6334
+f 6363 6335 6257
+f 6336 6365 6306
+f 6306 6365 6337
+f 6338 4987 6285
+f 6307 4040 6308
+f 6339 6340 6286
+f 6309 6339 6286
+f 6286 6340 6341
+f 6341 6368 6310
+f 6368 6342 6310
+f 6342 6370 6311
+f 6310 6342 6311
+f 6311 6370 6371
+f 6371 6372 6289
+f 6372 6424 6312
+f 6289 6372 6312
+f 6424 6373 6313
+f 6312 6424 6313
+f 6374 6397 6343
+f 6343 6344 6291
+f 6314 6343 6291
+f 6291 6344 6345
+f 6399 6293 6345
+f 6375 6315 6293
+f 6375 6295 6315
+f 6295 6316 6266
+f 6347 437 6317
+f 6379 6349 6348
+f 6351 6350 6349
+f 6349 6380 6351
+f 6382 6322 6381
+f 6382 6353 6322
+f 6403 6323 6353
+f 6403 6354 6323
+f 6354 6383 6323
+f 6383 3886 6355
+f 6464 6589 6489
+f 6408 6325 6324
+f 6356 6408 6324
+f 6408 6357 6325
+f 6358 6326 6357
+f 6358 6409 6359
+f 6326 6358 6359
+f 4414 6327 6360
+f 4414 6328 6327
+f 4414 4239 6328
+f 4046 4131 5345
+f 5880 3779 4766
+f 6387 6330 6362
+f 6387 3695 6330
+f 6330 3695 6331
+f 6331 3695 5446
+f 3409 3667 3950
+f 5957 6332 5190
+f 6389 6281 6332
+f 5957 6389 6332
+f 6389 6333 6281
+f 6391 6336 6335
+f 6391 6392 6336
+f 6392 6365 6336
+f 6365 6366 6337
+f 6366 6419 6338
+f 6337 6366 6338
+f 6338 6419 4987
+f 3909 7348 3938
+f 6340 6394 6341
+f 6341 6394 6368
+f 6368 6369 6342
+f 6342 6369 6370
+f 6395 6396 6371
+f 6370 6395 6371
+f 6313 6373 6374
+f 6397 6427 6343
+f 6427 6344 6343
+f 6398 6399 6345
+f 6344 6398 6345
+f 6432 6375 6293
+f 6375 6376 6295
+f 6435 6295 6376
+f 6435 6316 6295
+f 6436 6377 6316
+f 6377 6317 6346
+f 6379 6438 6349
+f 6438 6380 6349
+f 6380 6401 6351
+f 6351 6401 6352
+f 6403 6353 6382
+f 6404 6354 6403
+f 6406 3886 6383
+f 6384 6356 3886
+f 1190 635 395
+f 6408 6358 6357
+f 6385 6359 6409
+f 6385 6360 6359
+f 6385 6411 6360
+f 6412 4414 6360
+f 6411 6412 6360
+f 6412 4413 4414
+f 4859 4493 4889
+f 6386 6361 6674
+f 6413 6362 6361
+f 6386 6413 6361
+f 6413 6387 6362
+f 6387 6388 3695
+f 579 4142 3963
+f 579 3908 5347
+f 1955 4580 4579
+f 3821 6389 5957
+f 6414 6333 6389
+f 6390 6363 6333
+f 6390 6335 6363
+f 6390 6391 6335
+f 6418 6365 6392
+f 6365 6418 6366
+f 6419 6393 6367
+f 6487 2178 3001
+f 6340 3265 6394
+f 6394 6369 6368
+f 6421 6395 6370
+f 6369 6421 6370
+f 6396 6423 6371
+f 6371 6423 6372
+f 6424 6425 6373
+f 6373 6426 6374
+f 6374 6426 6397
+f 3767 6430 6293
+f 6399 3767 6293
+f 6430 6432 6293
+f 6432 6433 6375
+f 6433 6376 6375
+f 6433 6435 6376
+f 6435 6436 6316
+f 6437 6317 6377
+f 6436 6437 6377
+f 6437 6400 6347
+f 6317 6437 6347
+f 6347 6400 6378
+f 6400 6438 6379
+f 6378 6400 6379
+f 6380 6439 6401
+f 5856 6381 6352
+f 5856 6402 6382
+f 6381 5856 6382
+f 6402 6403 6382
+f 6405 6354 6404
+f 6405 6383 6354
+f 6405 6406 6383
+f 6384 3886 6406
+f 6407 6356 6384
+f 6407 6408 6356
+f 6410 6385 6409
+f 3463 4413 6412
+f 3106 1962 1333
+f 6361 5922 6674
+f 6388 6387 6413
+f 4678 5328 4453
+f 6388 3696 3695
+f 5071 5504 3582
+f 6075 7746 3286
+f 4130 3638 4367
+f 3577 147 744
+f 3821 6414 6389
+f 6415 6333 6414
+f 6416 6390 6333
+f 6415 6416 6333
+f 6416 6417 6390
+f 6417 6391 6390
+f 3750 446 6369
+f 6421 6422 6395
+f 6422 2383 6395
+f 2383 2382 6396
+f 6395 2383 6396
+f 6396 2382 6423
+f 6372 6423 6424
+f 6425 3087 6373
+f 6373 3087 6426
+f 6397 6426 6427
+f 6428 6344 6427
+f 6429 6398 6344
+f 6428 6429 6344
+f 6429 3767 6399
+f 6398 6429 6399
+f 6431 6432 6430
+f 6438 3901 6380
+f 6380 3901 6439
+f 6439 6440 6401
+f 5856 6352 6401
+f 6440 5856 6401
+f 4319 6403 6402
+f 6403 4319 6404
+f 2024 6406 6405
+f 3933 6384 6406
+f 2024 3933 6406
+f 3933 3934 6384
+f 3934 6407 6384
+f 3400 6408 6407
+f 296 6358 6408
+f 3400 296 6408
+f 296 6410 6409
+f 6358 296 6409
+f 147 4639 744
+f 6514 7117 6006
+f 6151 6413 6386
+f 3695 5425 5446
+f 6413 6151 6388
+f 4935 4934 2805
+f 3596 4033 5617
+f 4934 3978 3666
+f 4258 6414 3821
+f 3831 1650 5294
+f 4258 6415 6414
+f 6417 2516 6391
+f 6391 2516 6392
+f 6392 3084 6418
+f 2021 6366 6418
+f 3084 2021 6418
+f 1097 6419 6366
+f 2021 1097 6366
+f 1097 2806 6393
+f 6419 1097 6393
+f 627 3491 681
+f 2286 2117 3984
+f 3751 3750 6394
+f 6394 3750 6369
+f 6442 3402 6443
+f 6421 6369 446
+f 6423 3766 6424
+f 3766 3916 6425
+f 6424 3766 6425
+f 6425 3916 3087
+f 6426 3706 6427
+f 3706 450 6427
+f 450 6428 6427
+f 6429 3851 3767
+f 6434 6432 6431
+f 6434 6433 6432
+f 672 6433 6434
+f 672 6435 6433
+f 672 6436 6435
+f 672 3665 6436
+f 3665 6437 6436
+f 6437 3828 6400
+f 3828 3829 6400
+f 6400 3829 6438
+f 3829 3901 6438
+f 4826 5856 6440
+f 5862 5781 3629
+f 6089 5613 6580
+f 6270 6580 6517
+f 4832 4792 6444
+f 5632 6573 1268
+f 6001 5680 6503
+f 5829 5831 5840
+f 5785 6220 1911
+f 6670 5495 6648
+f 6641 3980 4815
+f 2988 2513 212
+f 8080 1885 4972
+f 4753 4761 4164
+f 6758 1995 1833
+f 4982 6448 5432
+f 6758 6759 5783
+f 1457 120 3171
+f 5613 6451 6580
+f 2497 6453 6039
+f 6454 6463 6491
+f 1995 6758 5783
+f 6759 6763 5783
+f 731 1128 2063
+f 3738 3631 1228
+f 5612 6270 4036
+f 6089 6580 6270
+f 3591 5973 6622
+f 6596 6268 6269
+f 4488 3444 4489
+f 2500 2501 983
+f 6596 6269 800
+f 4159 4861 6510
+f 4151 4192 4128
+f 6456 5972 5968
+f 6485 5946 6458
+f 5639 6459 6528
+f 6566 4013 7073
+f 467 4261 6280
+f 3213 5492 4488
+f 933 2235 155
+f 6445 6462 6459
+f 6038 6460 6462
+f 6463 6546 6464
+f 707 6698 7012
+f 5486 5480 6481
+f 6271 2497 6039
+f 5832 6471 6472
+f 3863 3864 6621
+f 5783 6763 5359
+f 6468 6516 4203
+f 4224 6468 4203
+f 6516 6476 4187
+f 1972 4799 2385
+f 4203 6516 4187
+f 8207 7987 63
+f 6623 6474 5780
+f 5492 3887 1567
+f 5629 4159 6759
+f 5680 6582 4160
+f 1158 778 1190
+f 3711 6649 6650
+f 4115 5181 3607
+f 5893 6019 6020
+f 5798 6502 6013
+f 2525 6576 6452
+f 2019 7936 1759
+f 1820 5475 1567
+f 517 1820 1567
+f 6619 6477 6002
+f 345 6105 2497
+f 7507 6703 5341
+f 6481 3658 6142
+f 6120 6180 6682
+f 3663 4273 2514
+f 6476 4197 4187
+f 8127 8180 5176
+f 1777 624 134
+f 6255 3798 4156
+f 3888 517 3887
+f 6524 6673 6657
+f 6364 6333 6363
+f 3729 3859 3858
+f 4977 3499 2202
+f 6904 6889 6488
+f 996 8120 8121
+f 1457 190 1924
+f 6205 6493 6105
+f 6596 6552 6268
+f 6241 5988 5989
+f 6513 6455 6089
+f 3659 6583 5643
+f 656 3317 5758
+f 3838 4152 4761
+f 2440 5604 5947
+f 6177 5786 6531
+f 6536 6477 6552
+f 5992 6209 4074
+f 6364 6363 6334
+f 6493 6205 6496
+f 6455 5613 6089
+f 6455 6544 6519
+f 5613 6455 6519
+f 6598 5478 6497
+f 6137 6209 6127
+f 5871 8582 5406
+f 5870 5384 4245
+f 6706 1199 6490
+f 6548 6466 6135
+f 6589 6549 6063
+f 6280 3399 5830
+f 6670 6505 6211
+f 6479 6513 6270
+f 5804 3994 6714
+f 5989 6040 6495
+f 6452 2452 2525
+f 5773 5809 6508
+f 5672 6538 5831
+f 3709 6481 6142
+f 1995 3169 3649
+f 6027 3649 6511
+f 6497 6072 6505
+f 6454 6491 6544
+f 6479 6512 6513
+f 8142 133 80
+f 4556 6082 6521
+f 5881 6515 6468
+f 2691 5881 2082
+f 6468 6515 6516
+f 6296 6093 4186
+f 6581 6518 6520
+f 5946 6519 6141
+f 4077 6208 4999
+f 6138 6862 5641
+f 6027 6511 7478
+f 6105 6493 6453
+f 6491 4160 6544
+f 6455 6454 6544
+f 6001 6503 5640
+f 6512 6455 6513
+f 6833 6255 4061
+f 6530 6518 6581
+f 6525 6526 6136
+f 6461 6528 3599
+f 5731 322 3846
+f 5668 6489 6503
+f 6489 6577 6503
+f 1833 1995 6449
+f 5361 4218 4151
+f 6490 4010 6531
+f 6038 6532 6056
+f 6533 6582 6559
+f 6518 4011 6520
+f 6506 6524 6109
+f 6028 5253 5483
+f 1416 6071 3717
+f 2497 6105 6453
+f 6180 6790 6682
+f 6271 6039 4861
+f 6547 5502 6496
+f 6571 6555 6484
+f 7220 6778 3313
+f 5654 5625 3591
+f 6027 6092 6073
+f 6551 6450 6297
+f 4096 6703 6529
+f 6638 6210 6537
+f 6452 6545 6569
+f 6550 6452 6569
+f 6491 6464 5680
+f 6464 6489 5668
+f 6094 6470 6548
+f 6479 6569 6512
+f 6470 6094 6480
+f 6519 6544 6533
+f 6503 6465 5640
+f 6543 6535 7109
+f 6528 6459 6462
+f 6547 6527 5502
+f 6551 6449 6450
+f 6536 6552 6596
+f 6603 6623 6211
+f 4760 6480 6536
+f 5945 5486 6013
+f 6657 6673 6682
+f 6553 6554 5881
+f 2691 6553 5881
+f 5881 6554 6515
+f 2485 3444 4488
+f 6140 6527 6547
+f 6483 6681 5619
+f 2310 6540 6068
+f 5622 6161 5623
+f 6626 6516 6515
+f 6554 6626 6515
+f 6626 6558 6516
+f 6558 6476 6516
+f 6703 4096 6709
+f 6485 6458 3589
+f 1274 4931 4965
+f 1854 5475 1819
+f 6206 6110 6246
+f 6529 5949 6603
+f 5988 6563 5989
+f 6564 4356 6040
+f 6270 6517 4036
+f 5946 6141 6458
+f 6565 6520 6566
+f 6560 6121 6561
+f 5502 5605 588
+f 6570 6556 6508
+f 4058 3836 6602
+f 5581 6499 6651
+f 6572 6159 6574
+f 6451 6548 6470
+f 5680 5668 6503
+f 6542 6701 6482
+f 3389 5619 6018
+f 6007 5898 6574
+f 3226 3171 3447
+f 6610 6575 3659
+f 5781 5903 5624
+f 3444 174 4489
+f 6160 6877 6876
+f 4162 2440 5947
+f 5640 6445 6559
+f 6489 6063 6577
+f 6109 6524 5990
+f 6061 6097 1130
+f 6569 6454 6512
+f 6063 6549 6507
+f 345 2497 3993
+f 6541 3217 6036
+f 3607 5181 3468
+f 5733 5662 5734
+f 1963 5811 6697
+f 4160 6582 6533
+f 6001 5640 6582
+f 6039 6514 6005
+f 4058 2525 6467
+f 6584 6009 6647
+f 6585 4140 503
+f 3513 6467 1112
+f 6453 6469 6514
+f 6585 6587 2691
+f 4140 6585 2691
+f 6587 6588 6553
+f 2691 6587 6553
+f 6618 6554 6553
+f 6588 6618 6553
+f 6098 3993 6567
+f 6577 6484 6077
+f 237 4601 6617
+f 5652 6600 5943
+f 6507 6068 6571
+f 6606 3841 6555
+f 6576 6549 6589
+f 6017 5500 3416
+f 6550 1159 2452
+f 3812 3506 1427
+f 6538 6590 3591
+f 5640 6038 6462
+f 6618 6626 6554
+f 3589 6458 5639
+f 6626 6631 6558
+f 6631 6597 6558
+f 3798 571 4156
+f 6549 2310 6507
+f 6491 6463 6464
+f 6569 6463 6454
+f 6546 6452 6576
+f 6567 2497 6271
+f 4046 439 698
+f 6454 6455 6512
+f 5901 7801 6539
+f 798 3218 796
+f 4250 4145 2108
+f 4090 6633 6538
+f 7750 7766 5858
+f 6088 5361 1398
+f 5949 5950 6623
+f 6464 5668 5680
+f 7422 7356 6241
+f 4010 2643 6110
+f 6530 6645 6518
+f 6446 6090 6157
+f 3836 3770 6602
+f 1777 2124 4526
+f 2122 4825 3455
+f 6602 3770 2310
+f 1511 1510 2810
+f 2310 3770 6540
+f 6546 6589 6464
+f 4159 6271 4861
+f 7077 6460 5988
+f 5199 6539 7812
+f 6521 6082 3389
+f 6119 6571 6484
+f 6577 6119 6484
+f 6063 6119 6577
+f 6544 4160 6533
+f 5553 5581 6651
+f 345 6205 6105
+f 4561 3608 4145
+f 6552 3912 6268
+f 3659 6106 6583
+f 5972 6136 5968
+f 5938 4832 5521
+f 3841 6534 6565
+f 6479 6270 5612
+f 6480 6002 6477
+f 6500 6599 6689
+f 3717 6043 4658
+f 5640 6462 6445
+f 6559 6445 6459
+f 5482 5692 6244
+f 6483 6116 6681
+f 6532 6501 6499
+f 6465 6501 6532
+f 8695 3190 8682
+f 6710 6505 6670
+f 656 5758 3940
+f 146 6139 6202
+f 6557 6697 6606
+f 6606 6534 3841
+f 3658 2105 3798
+f 3833 6694 6585
+f 6694 6695 6585
+f 6003 6268 3912
+f 3912 6619 5494
+f 5943 6600 6591
+f 4747 3715 3716
+f 6672 5944 6656
+f 6025 5486 1817
+f 640 4132 4017
+f 6646 6177 6180
+f 7736 7750 5858
+f 6684 6075 4667
+f 6540 1963 6068
+f 698 3715 4747
+f 6695 6702 6587
+f 6585 6695 6587
+f 6702 6588 6587
+f 7205 4015 3814
+f 4761 4152 4164
+f 6614 3377 508
+f 6499 6501 6078
+f 6615 6712 5384
+f 5893 6859 6713
+f 6616 6628 4601
+f 4337 6616 4601
+f 4601 6628 6617
+f 6630 4334 6617
+f 6630 5037 4334
+f 6460 6038 6056
+f 6702 6760 6588
+f 6760 6618 6588
+f 5505 5488 5986
+f 5985 5488 6607
+f 6607 5493 6608
+f 5669 6609 5652
+f 6609 6621 6600
+f 6633 6590 6538
+f 6613 6138 6706
+f 1894 4749 1895
+f 6576 6602 6549
+f 6025 4465 5480
+f 7373 6510 4861
+f 3995 6625 6156
+f 6771 6626 6618
+f 2310 6068 6507
+f 6160 5512 6877
+f 201 1198 2155
+f 6451 5613 5946
+f 7882 7854 7944
+f 6628 6629 6617
+f 6629 6630 6617
+f 5037 5819 4339
+f 329 6334 6256
+f 5505 5986 5620
+f 5488 5985 5986
+f 5652 6609 6600
+f 826 6634 6633
+f 1915 6595 6646
+f 6575 6106 3659
+f 7929 3644 5454
+f 6627 6135 6639
+f 6466 6640 6639
+f 5623 6161 5489
+f 6190 6635 480
+f 3814 3614 2081
+f 5756 6636 6637
+f 6013 3709 5798
+f 1820 1819 5475
+f 6485 6522 6466
+f 6548 6485 6466
+f 146 4673 6139
+f 4760 6517 6480
+f 1963 6697 6557
+f 6641 6642 4644
+f 6616 6642 6628
+f 6628 6642 6629
+f 6629 6643 6630
+f 6630 6643 5037
+f 6643 6653 5037
+f 6644 5819 5037
+f 6653 6644 5037
+f 6644 3968 5819
+f 6598 6497 6505
+f 6600 6621 6632
+f 6632 3208 5478
+f 6446 5950 6814
+f 193 826 6633
+f 3826 5479 6213
+f 5972 6525 6136
+f 6789 6118 6206
+f 3971 5629 6751
+f 3887 5492 3332
+f 6135 6466 6639
+f 4556 6115 6082
+f 5999 3607 5980
+f 6142 6255 5798
+f 6604 4090 6538
+f 6484 6140 6492
+f 5142 1643 1595
+f 6159 6296 6007
+f 6575 5653 5971
+f 6538 3591 5831
+f 6106 5672 5829
+f 5569 5565 1100
+f 6641 6652 6642
+f 6642 6652 6629
+f 6652 6666 6629
+f 6675 6643 6629
+f 6666 6675 6629
+f 6675 6676 6643
+f 6676 6653 6643
+f 6644 6653 3968
+f 5588 3906 798
+f 5223 5206 5207
+f 6138 5992 6684
+f 6176 6656 6574
+f 5990 6657 6526
+f 7112 8005 7993
+f 7863 3284 7881
+f 4075 6655 6296
+f 6741 1396 6743
+f 6098 3971 6743
+f 5639 6528 6599
+f 6660 3522 4376
+f 3971 6751 6743
+f 6605 6203 3389
+f 6798 5945 6013
+f 5691 5692 5482
+f 3589 5639 6599
+f 3710 5969 3711
+f 6635 6190 5487
+f 6662 5991 6720
+f 7344 6024 3382
+f 7954 2532 996
+f 6077 6492 6078
+f 6493 6579 6469
+f 532 3513 3365
+f 6142 3658 3798
+f 4815 6664 6652
+f 6641 4815 6652
+f 6664 6665 6652
+f 6665 6666 6652
+f 6676 6677 6653
+f 4827 4792 4832
+f 8096 2585 3195
+f 1472 3259 634
+f 6240 3376 6683
+f 6679 6680 3386
+f 6668 6669 6839
+f 4008 1952 3387
+f 6176 6672 6656
+f 1915 6120 5642
+f 5830 3689 6504
+f 6605 6041 6203
+f 6117 6828 6173
+f 6139 6828 6117
+f 6057 6450 6093
+f 3711 6650 5711
+f 5862 3629 5809
+f 6207 6209 5628
+f 5830 6504 6210
+f 6638 5830 6210
+f 3814 3714 6178
+f 6579 6042 6562
+f 5732 4102 6740
+f 6120 6646 6180
+f 6579 6562 6469
+f 5491 4488 5492
+f 6674 6664 4815
+f 3415 6666 6665
+f 6821 6677 6676
+f 6821 6685 6677
+f 6677 6685 6678
+f 6474 6623 6624
+f 603 6938 6930
+f 5619 6681 6671
+f 1924 805 120
+f 4185 3076 3000
+f 6662 5711 6650
+f 1952 4008 5667
+f 6672 4199 5944
+f 1915 6646 6120
+f 5400 6129 5244
+f 6526 6657 6790
+f 6447 6648 6738
+f 5253 6028 2898
+f 503 3833 6585
+f 6203 6173 6456
+f 6634 5652 5943
+f 4249 4090 6604
+f 6240 6683 6659
+f 3285 6110 2643
+f 3389 6203 6483
+f 6556 5830 6638
+f 5988 6241 7077
+f 5803 6036 6058
+f 6062 6028 5483
+f 5922 6664 6674
+f 5419 7344 868
+f 7447 6664 5922
+f 1268 3995 6090
+f 7033 6991 1249
+f 6107 5780 6474
+f 6686 6680 6679
+f 6705 6686 6679
+f 7646 4503 5667
+f 6247 6509 6573
+f 6687 6738 6673
+f 6524 6687 6673
+f 6738 5642 6673
+f 3689 6658 6504
+f 6457 6050 6318
+f 5691 5618 5678
+f 6583 5829 6593
+f 6206 6321 6683
+f 6520 4013 6566
+f 2514 405 3663
+f 6691 6701 6542
+f 6207 6691 6299
+f 6127 6478 6137
+f 3999 1322 1815
+f 2593 3499 5371
+f 2121 1186 3236
+f 6692 4879 8021
+f 3599 6528 6498
+f 6693 3833 3339
+f 3833 6693 6694
+f 6209 6137 6075
+f 3389 6483 5619
+f 4095 6201 3378
+f 6606 6697 6534
+f 6582 5640 6559
+f 6602 2310 6549
+f 5945 1817 5486
+f 6685 6441 6678
+f 6705 6679 6678
+f 6613 6706 6594
+f 6672 6179 4199
+f 5829 5840 6506
+f 5625 6687 6524
+f 6506 5625 6524
+f 6177 6531 6180
+f 3483 4767 3580
+f 6556 6280 5830
+f 826 5487 5669
+f 7194 7261 5432
+f 6320 6457 6318
+f 6143 6655 4075
+f 1127 3386 6680
+f 2833 5757 5755
+f 6246 4252 5622
+f 3423 325 784
+f 6118 6110 6206
+f 6691 5628 6701
+f 6656 6696 6104
+f 5043 1599 1598
+f 6808 6702 6695
+f 6839 6806 6819
+f 5805 5482 5759
+f 6678 6441 6704
+f 6705 2120 6686
+f 4475 7345 5419
+f 6686 2120 7321
+f 6490 1199 4010
+f 1199 4668 2643
+f 1199 2643 4010
+f 5786 6490 6531
+f 3709 6142 5798
+f 4010 6110 6118
+f 6698 6699 6717
+f 6699 7001 6708
+f 6457 5623 6050
+f 6156 6157 3995
+f 4252 6028 5622
+f 6478 6127 6207
+f 6185 5653 6212
+f 6760 6771 6618
+f 2497 6567 3993
+f 6832 6631 6626
+f 5521 6536 6596
+f 5660 6253 6217
+f 6032 4337 4305
+f 3190 5905 4475
+f 5482 6244 5759
+f 3389 6018 6026
+f 6213 5479 6572
+f 4096 5678 6709
+f 5679 6709 6719
+f 6704 2120 6705
+f 5905 3190 2178
+f 6104 6696 5804
+f 6649 6299 6542
+f 6717 6708 6724
+f 2070 4999 2533
+f 4475 5419 868
+f 6318 6050 6620
+f 6076 6833 4061
+f 4417 5945 6798
+f 105 6610 969
+f 6444 4036 4760
+f 4365 5383 6712
+f 1643 5142 2136
+f 6771 6832 6626
+f 6677 6678 1088
+f 6832 6597 6631
+f 2082 6468 4224
+f 6116 6319 6681
+f 6843 7527 5626
+f 5678 4096 5692
+f 6536 6480 6477
+f 6670 6211 5495
+f 7345 7344 5419
+f 5100 6721 6242
+f 6542 6482 6714
+f 6612 6547 6205
+f 7932 8096 3195
+f 6547 6496 6205
+f 1206 6715 7558
+f 6723 6716 6715
+f 6708 6716 6724
+f 6723 6724 6716
+f 6718 6698 6717
+f 4151 4128 6688
+f 6562 4982 6578
+f 6321 6246 5622
+f 5623 6321 5622
+f 4149 4252 6246
+f 6828 5643 6173
+f 969 6610 6776
+f 5831 3591 5840
+f 1072 6088 6647
+f 6527 7109 5605
+f 6503 6077 6501
+f 4160 6491 5680
+f 6071 4959 6043
+f 6528 6462 6498
+f 6673 6120 6682
+f 6822 7529 6685
+f 1125 2612 1260
+f 5604 2978 3242
+f 6704 715 2120
+f 6242 2120 5100
+f 6728 1206 6722
+f 6723 6715 1206
+f 6728 6723 1206
+f 6724 6737 6717
+f 6737 6718 6717
+f 6671 6319 6318
+f 6681 6319 6671
+f 4982 5432 6578
+f 5989 6563 6040
+f 6574 5970 5627
+f 3236 1186 1185
+f 5155 4638 5667
+f 1952 4638 5485
+f 6143 4075 5479
+f 4196 5929 4047
+f 2452 6452 6550
+f 4789 6671 6874
+f 5370 7200 6054
+f 6843 6829 7527
+f 3246 3645 6185
+f 7898 3953 6726
+f 3953 98 6732
+f 832 3298 2002
+f 5100 6733 6721
+f 6733 6745 6721
+f 6254 5329 5330
+f 6721 6745 6746
+f 6456 5968 6240
+f 5968 3376 6240
+f 6728 6722 6903
+f 6723 6737 6724
+f 6725 6718 6737
+f 6729 6718 6725
+f 5785 5784 6220
+f 6115 4619 6202
+f 4931 1274 1292
+f 6210 1536 6537
+f 5811 4118 6645
+f 6730 1777 6840
+f 6610 3659 6776
+f 6574 6656 5970
+f 3714 3814 2081
+f 6622 6447 5654
+f 4638 6143 5485
+f 6710 6670 6447
+f 6319 6456 6320
+f 6026 6018 3408
+f 5858 7766 5901
+f 6545 6546 6463
+f 4164 6479 5612
+f 3638 4130 4129
+f 4045 4124 3919
+f 5985 5631 5632
+f 6254 6228 5329
+f 2000 6733 5100
+f 2120 2000 5100
+f 7732 5394 6734
+f 6735 6728 4107
+f 6735 6736 6728
+f 6728 6736 6723
+f 6736 6749 6723
+f 6723 6749 6737
+f 6708 6717 6699
+f 6725 5439 6729
+f 6714 3994 6662
+f 6701 6104 6482
+f 5632 5631 6247
+f 6663 5432 6740
+f 4437 6744 4428
+f 6744 6693 4459
+f 658 6761 6733
+f 6761 6745 6733
+f 6754 4107 6747
+f 6748 6735 4107
+f 6754 6748 4107
+f 6735 6748 6736
+f 6748 6755 6736
+f 6736 6755 6749
+f 6749 6756 6737
+f 6757 6725 6737
+f 6756 6757 6737
+f 6757 5439 6725
+f 418 4740 135
+f 6569 6479 4152
+f 6579 6496 6042
+f 6532 6499 5581
+f 6508 6638 6537
+f 3994 5991 6662
+f 7843 8001 7931
+f 4174 5481 6584
+f 6009 6712 6615
+f 5625 6738 6687
+f 3864 5506 3208
+f 4445 6744 4459
+f 6744 6807 6693
+f 6807 6694 6693
+f 6807 6808 6695
+f 6094 6548 6135
+f 6296 4186 6007
+f 5476 3518 6750
+f 5811 6530 6697
+f 3863 6055 3864
+f 6743 6751 1833
+f 6694 6807 6695
+f 6072 6603 6211
+f 5495 5894 6648
+f 6761 6764 6745
+f 6764 6752 6746
+f 6745 6764 6746
+f 6752 6753 6746
+f 6753 6765 6747
+f 6746 6753 6747
+f 6765 6754 6747
+f 6755 6768 6749
+f 6768 6756 6749
+f 4157 5156 5274
+f 388 5981 4071
+f 4058 6576 2525
+f 6056 6564 6563
+f 6650 6542 6662
+f 6115 6605 6082
+f 3995 7621 6625
+f 6595 6594 5786
+f 6751 6758 1833
+f 6639 5549 5774
+f 6527 6543 7109
+f 6190 6055 3863
+f 5811 6645 6530
+f 6140 6543 6527
+f 4668 4667 2643
+f 6752 6765 6753
+f 6766 6754 6765
+f 6754 6766 6748
+f 6766 6762 6748
+f 6748 6762 6755
+f 6762 6767 6755
+f 6755 6767 6768
+f 6773 6756 6768
+f 6773 6757 6756
+f 6757 6769 5439
+f 4146 5119 5651
+f 5980 218 5930
+f 6062 5622 6028
+f 3629 6570 5809
+f 3468 218 5980
+f 6542 6714 6662
+f 5871 4218 5361
+f 193 6633 4090
+f 4363 2934 2406
+f 6702 6808 6760
+f 6710 6447 6622
+f 4186 5803 6007
+f 4437 4417 6798
+f 6659 6321 6457
+f 6761 3506 6764
+f 6764 6780 6752
+f 6765 6772 6766
+f 6766 6783 6762
+f 6774 6757 6773
+f 6774 6797 6757
+f 6797 6769 6757
+f 5781 5904 5930
+f 5990 6524 6657
+f 6496 5502 588
+f 5803 6058 5898
+f 6655 6057 6093
+f 6478 6175 5969
+f 5844 6556 6570
+f 5803 5898 6007
+f 6593 6109 5990
+f 3841 6543 6140
+f 4272 171 4217
+f 3506 6780 6764
+f 6780 6781 6752
+f 6782 6765 6752
+f 6781 6782 6752
+f 6765 6782 6772
+f 6766 6772 6783
+f 6762 6783 6767
+f 6767 6796 6768
+f 6784 6773 6768
+f 6796 6784 6768
+f 6784 6774 6773
+f 6775 6797 6774
+f 6797 6786 6769
+f 6769 6786 7075
+f 6576 4058 6602
+f 969 6776 4673
+f 6547 6612 6078
+f 6531 4010 6788
+f 6590 5943 5973
+f 6004 6057 6655
+f 6779 6004 6655
+f 6592 6572 5627
+f 6870 6225 6778
+f 1777 6730 2124
+f 6018 5619 5555
+f 6593 5990 5972
+f 3506 3812 6780
+f 6782 6793 6772
+f 6793 6794 6772
+f 6794 6805 6783
+f 6772 6794 6783
+f 6783 6795 6767
+f 6767 6795 6796
+f 6785 6774 6784
+f 6785 6775 6774
+f 6478 5969 3439
+f 5480 3658 6481
+f 6790 6180 6789
+f 5990 6526 6525
+f 5621 6608 6297
+f 6541 6777 3217
+f 4556 6521 6026
+f 6594 6706 6490
+f 6610 6212 6575
+f 4832 6444 5521
+f 6271 5629 3971
+f 7008 4047 5929
+f 4958 6069 5470
+f 6078 6492 6547
+f 6277 5922 6329
+f 5922 6277 7118
+f 6209 6108 5628
+f 5629 6271 4159
+f 6143 6779 6655
+f 6689 6599 6523
+f 7633 3432 6058
+f 6565 6566 6535
+f 6555 3841 6140
+f 6792 3812 1427
+f 5490 6792 1427
+f 6792 6802 6780
+f 3812 6792 6780
+f 6803 6781 6780
+f 6802 6803 6780
+f 6803 6793 6781
+f 6781 6793 6782
+f 6783 6805 6795
+f 6795 6811 6796
+f 6812 6784 6796
+f 6818 6775 6785
+f 6818 6797 6775
+f 6806 6786 6797
+f 6806 7075 6786
+f 7508 25 7723
+f 6478 3439 6770
+f 6180 6531 6788
+f 6789 6180 6788
+f 6255 4156 4061
+f 6472 6471 8013
+f 6280 4261 3399
+f 5481 6658 3445
+f 6707 6478 6770
+f 6604 6538 5672
+f 5971 6604 5672
+f 6075 6137 6475
+f 6069 4958 4757
+f 6758 5629 6759
+f 6550 4729 1159
+f 23 22 5241
+f 6157 6156 6624
+f 6446 6157 6624
+f 5949 6623 6603
+f 4218 4165 4151
+f 6719 6709 5618
+f 6545 6463 6569
+f 6534 6581 6565
+f 5811 6245 4118
+f 6571 6606 6555
+f 6801 6792 5490
+f 6793 6804 6794
+f 6794 6804 6805
+f 6795 6805 6811
+f 6811 6812 6796
+f 6812 6785 6784
+f 6819 6797 6818
+f 6819 6806 6797
+f 4010 6118 6788
+f 6465 6038 5640
+f 6657 6682 6790
+f 4444 6744 4445
+f 6535 6566 7100
+f 6697 6530 6581
+f 4337 6032 6616
+f 6526 6790 6136
+f 6697 6581 6534
+f 6503 6501 6465
+f 6446 6624 6623
+f 6590 5973 3591
+f 5667 5641 6862
+f 556 6123 685
+f 6451 5946 6485
+f 6809 6792 6801
+f 6809 6802 6792
+f 6810 6803 6802
+f 6809 6810 6802
+f 6803 6810 6793
+f 6793 6810 6804
+f 6810 6823 6804
+f 6823 6824 6805
+f 6804 6823 6805
+f 6805 6825 6811
+f 3594 6806 6839
+f 4673 6776 6139
+f 1911 6220 5987
+f 6506 5840 5625
+f 5483 102 6300
+f 6815 4077 4231
+f 5613 6519 5946
+f 5155 5667 4503
+f 6245 3056 3168
+f 6513 6089 6270
+f 6519 6533 6141
+f 4871 5199 4958
+f 5199 6731 4958
+f 5495 5780 5894
+f 5639 6141 6459
+f 6141 6559 6459
+f 6816 6760 6808
+f 6580 6470 6517
+f 6809 4477 6810
+f 6824 6835 6805
+f 6805 6835 6825
+f 6825 6817 6811
+f 6817 6812 6811
+f 6837 6826 6812
+f 6826 6785 6812
+f 6838 6818 6785
+f 6827 6819 6818
+f 4374 586 5365
+f 6139 6776 6828
+f 5972 5990 6525
+f 5893 6020 6820
+f 6555 6140 6484
+f 2134 4465 6025
+f 5669 5487 6609
+f 5943 6591 5973
+f 6541 6036 6035
+f 4036 6517 4760
+f 6090 6446 6586
+f 2168 5106 3881
+f 6591 6600 6560
+f 6659 6457 6320
+f 6649 6542 6650
+f 2254 5146 5054
+f 3645 4249 6604
+f 6552 6477 6619
+f 6823 6810 3987
+f 2137 2289 1194
+f 3968 1088 4094
+f 1093 2062 759
+f 6814 6586 6446
+f 6837 6812 6817
+f 6827 6818 6838
+f 6839 6819 6827
+f 714 2236 713
+f 6635 5487 826
+f 5945 4417 4393
+f 6527 5605 5502
+f 5973 6591 6622
+f 6634 5943 6590
+f 6760 6502 6771
+f 6830 7145 7121
+f 3512 6467 3513
+f 6502 6832 6771
+f 6832 6833 6917
+f 5484 4274 4275
+f 6609 3863 6621
+f 6619 6002 6627
+f 4199 334 6834
+f 6202 6139 6117
+f 6833 6832 6502
+f 5950 6446 6623
+f 5631 5985 5621
+f 6078 6612 6499
+f 705 1343 3451
+f 6561 5478 6598
+f 480 551 6190
+f 3513 532 1533
+f 4806 6847 6823
+f 6823 6847 6824
+f 6824 6847 6835
+f 6835 6836 6817
+f 6825 6835 6817
+f 6836 6849 6817
+f 6849 6837 6817
+f 6838 6785 6826
+f 6838 6842 6827
+f 6842 6839 6827
+f 6161 6062 5638
+f 6647 6615 1072
+f 1915 1911 5987
+f 3022 3049 4076
+f 6548 6451 6485
+f 4980 2203 4944
+f 6115 6041 6605
+f 6009 6615 6647
+f 5784 6625 6220
+f 4016 1392 1870
+f 4557 6115 4556
+f 6640 6466 6654
+f 5499 1330 6845
+f 6560 6561 6710
+f 4382 2934 4363
+f 6576 6589 6546
+f 6744 4444 4428
+f 6485 3589 6522
+f 5798 6255 6833
+f 6551 1833 6449
+f 6466 6500 6122
+f 6654 6466 6122
+f 4163 4959 6071
+f 6798 6013 6816
+f 134 3522 6840
+f 6847 6848 6835
+f 6848 6836 6835
+f 6853 6849 6836
+f 6849 6826 6837
+f 6849 6841 6826
+f 6841 6838 6826
+f 6841 6842 6838
+f 6228 7421 6495
+f 5329 6228 6495
+f 6615 5384 1072
+f 3864 3208 6632
+f 6621 3864 6632
+f 6689 5618 6122
+f 4638 6779 6143
+f 6509 4503 6844
+f 6563 6564 6040
+f 329 3817 6845
+f 6532 5581 6056
+f 6561 6598 6710
+f 6850 3757 3850
+f 3376 6174 6683
+f 6462 6460 6498
+f 6689 6523 6719
+f 5901 6539 5918
+f 6299 6691 6542
+f 4249 193 4090
+f 3404 5357 5332
+f 6608 1833 6551
+f 5618 6689 6719
+f 5647 6523 3599
+f 6581 6520 6565
+f 6141 6533 6559
+f 5829 6506 6109
+f 3771 6518 3941
+f 4393 2135 1817
+f 6836 6848 6853
+f 6854 6860 6841
+f 6849 6854 6841
+f 6855 6842 6841
+f 6860 6855 6841
+f 6279 7911 1020
+f 1020 7911 3700
+f 6593 5972 5643
+f 4131 615 5460
+f 5628 6592 5627
+f 6607 6608 5621
+f 4488 4322 3213
+f 6460 6056 5988
+f 6098 6567 3971
+f 3817 1700 6845
+f 1700 5499 6845
+f 6710 6598 6505
+f 5937 5885 4661
+f 6671 6620 5527
+f 3841 6565 6543
+f 5985 6607 5621
+f 6874 6671 5527
+f 94 2203 2858
+f 6068 1963 6557
+f 8005 7112 3832
+f 4806 4448 6847
+f 6847 6864 6848
+f 6853 6866 6849
+f 6866 6867 6849
+f 6867 6854 6849
+f 6861 6855 6860
+f 6855 6869 6842
+f 6869 6839 6842
+f 6869 2807 6839
+f 4061 4156 6076
+f 6077 6484 6492
+f 5361 6688 1536
+f 3208 5733 5734
+f 6050 5489 6876
+f 5370 7218 7200
+f 2203 4980 2858
+f 6092 6541 6035
+f 6093 6450 4186
+f 3941 6645 4118
+f 6870 1700 6223
+f 6744 4437 6807
+f 4437 6798 6807
+f 6863 5499 1700
+f 4962 6152 6750
+f 6859 6850 6713
+f 6807 6798 6808
+f 6801 1534 4353
+f 6620 6876 5527
+f 233 6635 826
+f 6492 6140 6547
+f 5662 5805 5734
+f 6663 7194 5432
+f 5898 6176 6574
+f 3246 4249 3645
+f 6545 6452 6546
+f 6388 5393 5444
+f 5969 3710 3439
+f 6493 6496 6579
+f 4448 6864 6847
+f 6865 6853 6848
+f 6865 6866 6853
+f 6868 6854 6867
+f 6868 6860 6854
+f 6861 6869 6855
+f 6136 6790 6174
+f 5479 6159 6572
+f 5729 2593 5371
+f 6074 6592 5628
+f 1918 6851 6852
+f 5936 5935 6020
+f 6092 6035 4186
+f 6808 6798 6816
+f 7073 4013 322
+f 5343 2123 5902
+f 5902 2123 5919
+f 5919 2123 5884
+f 6056 5581 6564
+f 7239 4230 5936
+f 2082 2345 2691
+f 6517 6470 6480
+f 5829 6109 6593
+f 7144 5605 7109
+f 6187 7108 5731
+f 6500 6689 6122
+f 6502 6760 6816
+f 4729 6550 4152
+f 6550 6569 4152
+f 6449 6073 6450
+f 4448 3408 6864
+f 6864 6873 6848
+f 6873 6865 6848
+f 6868 6875 6860
+f 6860 6875 6861
+f 6174 6790 6789
+f 6575 5971 6106
+f 5662 5482 5805
+f 6671 6318 6620
+f 1536 1398 5361
+f 7144 4982 7180
+f 1071 5893 6713
+f 1093 759 1921
+f 5625 5654 6738
+f 6820 6859 5893
+f 8115 7304 6486
+f 6820 6871 6859
+f 6840 6857 5883
+f 2123 2124 5884
+f 6730 6840 5884
+f 5884 6840 5883
+f 5937 4661 5902
+f 6660 6043 6857
+f 6503 6577 6077
+f 3838 4729 4152
+f 6207 5628 6691
+f 6683 6321 6659
+f 3408 6873 6864
+f 5555 6867 6866
+f 6865 5555 6866
+f 6867 5555 6868
+f 6868 6874 6875
+f 6875 6876 6861
+f 6876 6877 6861
+f 6877 6869 6861
+f 6877 6856 6869
+f 5486 3709 6013
+f 6646 6595 6177
+f 6595 5786 6177
+f 6213 6572 6592
+f 4096 6244 5692
+f 3432 6672 6176
+f 3432 6179 6672
+f 4040 8270 6308
+f 6020 6871 6820
+f 6594 6490 5786
+f 3522 6660 6857
+f 6840 3522 6857
+f 6127 6209 6207
+f 466 6474 5785
+f 6625 6739 6220
+f 3589 6500 6522
+f 5898 3432 6176
+f 6018 6873 3408
+f 6873 5555 6865
+f 5555 4789 6868
+f 6868 4789 6874
+f 6874 5527 6875
+f 5527 6876 6875
+f 6300 6856 6877
+f 5512 6300 6877
+f 6088 5871 5361
+f 6106 5829 6583
+f 6074 6213 6592
+f 6159 6007 6574
+f 4096 6529 6244
+f 6254 6099 6742
+f 6072 5759 6603
+f 5627 5970 6104
+f 1416 4163 6071
+f 6523 6599 3599
+f 8582 5871 5870
+f 5756 5755 5757
+f 5681 5671 7796
+f 6897 6910 6896
+f 4099 4818 3904
+f 3982 3831 5294
+f 1070 6880 5193
+f 7005 4914 6907
+f 5445 1984 6125
+f 6884 6881 7138
+f 5446 5445 6125
+f 3443 7063 7420
+f 6881 7131 7138
+f 6880 6879 5193
+f 7420 7063 5435
+f 7141 7153 7142
+f 6885 7058 4501
+f 7058 7086 4501
+f 3282 171 4272
+f 4501 7086 6967
+f 6967 7086 7287
+f 47 698 5438
+f 6890 6978 4427
+f 6443 6888 7116
+f 7078 7097 6885
+f 6891 7433 6955
+f 7359 6973 6972
+f 5276 6902 5292
+f 7086 6443 7116
+f 698 4747 5438
+f 1816 1815 1322
+f 4962 6750 3518
+f 7217 6960 6968
+f 7433 6897 6955
+f 6442 6443 7086
+f 7080 5019 6442
+f 1101 1260 1261
+f 6242 7321 2120
+f 3881 5303 8688
+f 257 3282 291
+f 7802 8242 4971
+f 7115 5019 7080
+f 7006 6899 6894
+f 7132 3740 227
+f 5499 6846 1330
+f 619 6901 1532
+f 5940 5980 5904
+f 662 3640 2721
+f 7095 7448 7118
+f 6242 7221 6243
+f 7221 6746 6903
+f 5358 6945 4364
+f 7132 6898 3740
+f 4156 6901 6076
+f 5667 6862 7646
+f 651 6923 619
+f 619 6908 6901
+f 6901 6908 6076
+f 6355 6356 6324
+f 7823 6720 6667
+f 6975 7221 6903
+f 6910 6911 6912
+f 6915 456 6889
+f 7069 6904 7115
+f 6915 6889 6906
+f 4747 3716 5438
+f 651 619 613
+f 6923 6908 619
+f 7092 7236 7039
+f 6355 5360 4704
+f 3468 5181 491
+f 4225 154 4105
+f 7076 369 7263
+f 6907 1404 7171
+f 1404 6907 3474
+f 651 6931 6923
+f 6908 6917 6076
+f 3671 6791 8384
+f 7039 7273 6769
+f 1207 7043 1234
+f 4992 3207 7963
+f 6926 6931 651
+f 6923 6927 6908
+f 6908 6927 6917
+f 3694 5535 6858
+f 3374 6511 3169
+f 6911 6929 6912
+f 7017 7015 4471
+f 7043 1297 1234
+f 6927 6597 6917
+f 5402 1543 1161
+f 645 6158 6258
+f 6863 6870 3271
+f 6208 91 3668
+f 6926 6930 6931
+f 522 3637 2512
+f 3271 6870 6778
+f 1834 3452 2745
+f 7542 6935 7288
+f 6929 7542 7288
+f 4414 4413 4239
+f 699 3237 700
+f 3357 6938 603
+f 6930 6939 6931
+f 6939 6940 6923
+f 6931 6939 6923
+f 6923 6940 6927
+f 6927 6941 6597
+f 6721 6746 7221
+f 6934 6932 7332
+f 7603 6976 6935
+f 3338 7032 400
+f 5215 7291 451
+f 3338 1127 7032
+f 6983 7291 5215
+f 6023 3355 7137
+f 699 1248 5321
+f 6988 6972 3197
+f 8189 3621 6937
+f 6941 6927 6940
+f 6951 6941 6940
+f 3585 5854 8064
+f 6943 6942 7559
+f 7002 6943 6944
+f 3529 6858 5531
+f 6945 6144 6946
+f 6023 7137 7136
+f 3355 7133 7137
+f 4914 5352 6983
+f 1248 6969 5321
+f 6128 5311 6962
+f 6059 5364 5311
+f 3942 3925 6000
+f 5321 6949 3357
+f 3237 5321 3357
+f 6949 6970 6938
+f 3357 6949 6938
+f 6970 6982 6930
+f 6938 6970 6930
+f 6982 6950 6939
+f 6930 6982 6939
+f 6950 6951 6940
+f 6939 6950 6940
+f 6952 6941 6951
+f 6941 6952 6558
+f 5752 3406 3405
+f 348 349 5511
+f 6128 6962 6958
+f 6960 7286 4817
+f 5948 6958 5331
+f 7448 7095 6959
+f 6958 6962 7188
+f 6960 4817 5348
+f 7087 7166 5952
+f 3547 4077 4999
+f 5321 6969 6949
+f 6971 6965 6192
+f 7263 369 7234
+f 7099 2338 7046
+f 6972 6973 6974
+f 3465 6883 4990
+f 7198 5048 2486
+f 1567 5491 5492
+f 3983 4118 3168
+f 7146 4509 7104
+f 6962 7156 7188
+f 4508 6913 4509
+f 4668 1199 6706
+f 6895 7146 7104
+f 6977 5219 6979
+f 5219 7602 6979
+f 6929 7040 6912
+f 6991 6981 6949
+f 6969 6991 6949
+f 6949 6981 6970
+f 6970 6981 6982
+f 6950 6993 6951
+f 6951 6993 6952
+f 6994 4197 6952
+f 6952 4197 6476
+f 5900 7729 7777
+f 6193 6971 6192
+f 7251 4914 6983
+f 6983 5352 7291
+f 756 6092 6027
+f 6144 6945 5358
+f 4245 5383 4263
+f 7146 4508 4509
+f 6979 7602 6989
+f 6091 6946 6144
+f 5349 3757 8386
+f 4128 4192 8511
+f 6857 6800 5883
+f 6981 6992 6982
+f 6982 6992 6950
+f 6950 6992 6993
+f 588 6042 6496
+f 7005 6907 7153
+f 3378 6024 7344
+f 7234 3009 7047
+f 7481 7030 6942
+f 6900 4914 6905
+f 6350 6348 6349
+f 7602 7588 6989
+f 3811 6925 3355
+f 6494 7634 3874
+f 1102 685 1779
+f 6997 6966 6998
+f 206 6997 6998
+f 7603 321 7580
+f 7291 5352 455
+f 7347 6890 4427
+f 6887 7347 4427
+f 6829 5620 5632
+f 6991 7019 6981
+f 6992 7022 6993
+f 6993 7007 6952
+f 6952 7007 6994
+f 5929 4197 6994
+f 5330 5329 4356
+f 6890 7383 6893
+f 7383 6894 6893
+f 7383 7006 6894
+f 7187 6964 6965
+f 7237 4914 7251
+f 6971 7187 6965
+f 6999 6957 6964
+f 5453 7000 7016
+f 6699 3857 7001
+f 8024 8168 6920
+f 6898 7171 7003
+f 6997 7004 5402
+f 6966 6997 5402
+f 5711 6662 5710
+f 5402 7004 5240
+f 7142 7132 7131
+f 7033 7019 6991
+f 5114 5655 5656
+f 7019 7020 6981
+f 7020 7021 6992
+f 6981 7020 6992
+f 7021 7022 6992
+f 7008 5929 6994
+f 7007 7008 6994
+f 7407 6905 6899
+f 7006 7407 6899
+f 7407 7018 935
+f 7142 7153 7132
+f 7187 6999 6964
+f 7009 7010 6957
+f 6999 7009 6957
+f 7009 7017 7010
+f 6976 7603 7011
+f 7011 7580 5219
+f 5219 7580 7602
+f 707 6699 6698
+f 5550 3694 1100
+f 7001 7002 6944
+f 6905 7407 935
+f 5250 5967 5249
+f 7019 7034 7020
+f 7021 7035 7022
+f 7022 7023 6993
+f 7023 7007 6993
+f 7023 4117 7007
+f 4668 6684 4667
+f 7007 4117 7008
+f 7018 7450 6914
+f 935 7018 6914
+f 6914 7450 6916
+f 7133 7024 7015
+f 6900 935 3459
+f 7135 6895 6909
+f 7168 7127 7161
+f 7028 7168 7161
+f 3285 4149 6110
+f 8013 6471 7026
+f 3438 5499 6863
+f 7004 6305 5240
+f 7030 6975 7515
+f 7042 7099 6973
+f 7450 7510 6916
+f 7058 6442 7086
+f 7033 7055 7019
+f 7019 7055 7034
+f 7020 7034 7021
+f 7021 7034 7035
+f 7035 7036 7022
+f 7036 7023 7022
+f 7036 4002 7023
+f 5931 523 1621
+f 7023 4002 4117
+f 7116 6888 6884
+f 7186 6178 4034
+f 6905 935 6900
+f 5227 7016 7449
+f 3534 5023 2808
+f 7087 5952 7139
+f 5952 7166 5245
+f 7038 7211 7212
+f 3545 3438 3469
+f 3469 3438 6863
+f 6028 4252 2898
+f 7273 6989 6729
+f 7039 6979 7273
+f 6977 6979 7039
+f 6976 6977 7219
+f 6979 6989 7273
+f 6984 6976 7203
+f 6980 6984 7203
+f 7040 7288 6980
+f 7129 7040 6980
+f 7158 7040 7129
+f 6996 4976 7066
+f 7080 6442 7058
+f 6916 7510 1207
+f 1207 7510 7043
+f 3580 7044 7033
+f 3483 3580 7033
+f 7033 7044 7055
+f 7034 7056 7035
+f 7056 7057 7035
+f 7035 7057 7036
+f 7057 4002 7036
+f 6925 7045 7025
+f 1069 7083 6880
+f 7032 6680 7321
+f 4713 7195 5433
+f 6668 4909 7286
+f 7041 7040 7158
+f 4671 7041 7158
+f 7047 4955 7048
+f 6924 7236 7092
+f 7072 7170 6928
+f 6703 5950 6529
+f 6902 5160 5292
+f 7783 5358 6712
+f 6188 6778 6225
+f 7052 5319 6831
+f 7053 7151 5319
+f 7052 7053 5319
+f 7053 4447 7151
+f 3028 3221 557
+f 3028 3349 7094
+f 7083 6906 6879
+f 7084 7042 7054
+f 6880 7083 6879
+f 715 6704 4710
+f 6882 6350 6298
+f 7057 7068 4002
+f 5227 7433 7046
+f 5227 7449 7433
+f 4580 1983 250
+f 4671 7158 4456
+f 7463 6852 6851
+f 3221 3028 7094
+f 5435 7062 7114
+f 7060 7170 7072
+f 4125 4212 4095
+f 4997 1854 3397
+f 5434 6987 7062
+f 6987 7074 7062
+f 369 3198 7234
+f 7066 4976 7065
+f 7633 334 6179
+f 6955 7066 643
+f 6879 6906 6883
+f 7044 7067 7055
+f 7055 7067 7034
+f 7067 7082 7056
+f 7034 7067 7056
+f 7068 7057 7056
+f 7082 7068 7056
+f 6915 6906 7083
+f 615 698 47
+f 7048 841 7064
+f 4955 841 7048
+f 7234 3198 3009
+f 3009 4955 7047
+f 6928 6995 7072
+f 7817 3302 5519
+f 5731 7073 322
+f 1983 2049 250
+f 614 6926 651
+f 4767 3483 3482
+f 7062 7074 7114
+f 7092 7039 7075
+f 7094 369 7076
+f 6883 6906 7078
+f 4692 2011 5077
+f 343 7081 3580
+f 3580 7081 7044
+f 7044 7103 7067
+f 7082 4049 7068
+f 2746 1834 2745
+f 7068 4049 5857
+f 7215 3415 7464
+f 7085 6915 7083
+f 7158 5434 3979
+f 7140 6961 5161
+f 4501 6967 3951
+f 6678 6704 6705
+f 504 508 3728
+f 7169 7128 7319
+f 5731 7108 7073
+f 6995 7093 5414
+f 7093 5472 5414
+f 7075 7039 6769
+f 6928 7092 7093
+f 7069 7115 7080
+f 343 1352 7081
+f 7081 7103 7044
+f 7067 6918 7082
+f 3835 3915 6017
+f 7220 7391 7382
+f 7405 7406 7149
+f 4845 7286 4909
+f 6995 6928 7093
+f 7090 7072 7091
+f 707 6892 226
+f 7091 7072 6995
+f 1033 3459 1163
+f 7108 7100 7073
+f 6348 5186 6379
+f 8027 4948 6611
+f 7346 6988 7318
+f 7037 7089 5276
+f 7143 7131 6881
+f 7143 7142 7131
+f 6978 7143 6881
+f 7165 7074 7090
+f 7114 7074 7165
+f 6896 7101 7096
+f 5498 4080 1266
+f 7097 7058 6885
+f 6822 7215 7509
+f 6088 1398 6647
+f 7081 7134 7103
+f 7103 6919 7067
+f 4049 7082 4045
+f 7067 6919 6918
+f 3163 3940 3716
+f 4509 4957 4447
+f 7104 4509 4447
+f 6905 4914 7005
+f 6947 6978 6881
+f 6022 6488 456
+f 6884 6947 6881
+f 8485 5770 7105
+f 5170 5235 3958
+f 4102 2900 3630
+f 7107 5997 7239
+f 7108 7109 7100
+f 685 6123 1293
+f 6535 7100 7109
+f 7202 7029 7162
+f 7181 7202 7162
+f 7235 7202 7182
+f 7202 7181 7182
+f 7235 7182 7110
+f 7306 7148 7113
+f 3979 5434 7063
+f 320 6885 5210
+f 7102 5380 5381
+f 4080 4081 7061
+f 325 550 4155
+f 7116 6892 707
+f 5472 7075 3594
+f 7134 6919 7103
+f 1949 2391 5351
+f 7248 7087 7139
+f 7064 7066 7065
+f 7302 7119 5453
+f 7272 7300 4692
+f 7111 7120 7167
+f 603 6930 604
+f 3953 3727 98
+f 5228 6878 5182
+f 6187 7144 7108
+f 7108 7144 7109
+f 5191 458 3529
+f 7124 7189 7231
+f 7201 7122 7123
+f 7201 7123 7431
+f 7233 7201 7431
+f 7126 7232 7125
+f 7358 7126 7124
+f 3443 7420 7127
+f 6904 6061 7115
+f 6831 5319 7128
+f 6896 3979 7101
+f 6895 7104 7130
+f 5460 615 47
+f 7287 7116 707
+f 7131 7132 227
+f 7264 6895 7135
+f 7081 7155 7134
+f 5461 6918 6919
+f 7134 5461 6919
+f 363 5374 5392
+f 7144 6448 4982
+f 4100 6909 5042
+f 7138 7131 227
+f 6906 6889 7069
+f 6913 6988 3349
+f 3028 6913 3349
+f 6882 457 5186
+f 7126 7306 7113
+f 7306 7111 7148
+f 7124 7126 7125
+f 7126 7113 7232
+f 2000 2120 715
+f 7447 5922 7448
+f 7178 6740 3630
+f 6893 7141 7142
+f 6187 6448 7144
+f 5909 1333 5789
+f 7144 7180 5605
+f 5899 7145 3453
+f 5210 3951 7013
+f 6852 7149 7150
+f 7129 6980 7170
+f 644 6895 7152
+f 6998 6966 2468
+f 7153 6898 7132
+f 3355 6925 7133
+f 2837 934 7155
+f 7155 7172 7134
+f 7172 7173 7134
+f 7173 4124 5461
+f 7134 7173 5461
+f 6892 7138 227
+f 6688 4128 6636
+f 6713 6850 3850
+f 6761 620 3506
+f 5438 3940 46
+f 4081 3699 6690
+f 6893 7142 7143
+f 2898 4252 4149
+f 2006 754 458
+f 3357 2790 3237
+f 7285 7161 7262
+f 7165 7164 7163
+f 7111 7167 7148
+f 6980 7191 7170
+f 6895 7130 7152
+f 7153 7171 6898
+f 6192 1162 1003
+f 934 5520 7155
+f 7155 5520 7172
+f 7173 871 4124
+f 7204 662 3939
+f 6913 3028 4509
+f 6158 6831 7169
+f 5238 5435 7114
+f 5431 218 491
+f 6192 6948 6193
+f 7176 7177 3738
+f 3738 7177 3631
+f 3631 7177 7178
+f 7178 6663 6740
+f 1598 5129 4880
+f 3756 4704 5360
+f 5182 5507 3756
+f 5660 7118 6277
+f 4068 3769 3768
+f 7181 7162 5369
+f 7181 5369 7271
+f 7182 7181 7271
+f 7184 7199 7164
+f 7165 7184 7164
+f 7621 3995 7604
+f 4085 3733 4084
+f 1452 1025 471
+f 6958 7188 7187
+f 6948 6192 1003
+f 5520 870 7172
+f 7172 870 7173
+f 662 2722 3939
+f 3999 1815 3369
+f 7192 3640 662
+f 2959 2943 3330
+f 8485 6637 4127
+f 5434 7158 6987
+f 4902 2303 2283
+f 4199 6711 5944
+f 7169 5078 6158
+f 7193 7227 7178
+f 7177 7193 7178
+f 2508 2453 5249
+f 7231 7166 7087
+f 7248 7231 7087
+f 4068 1088 1148
+f 7231 7189 7166
+f 3330 2943 3165
+f 4779 3144 1562
+f 6042 588 7180
+f 5401 5744 5726
+f 7213 3882 8032
+f 841 7066 7064
+f 7182 7271 7183
+f 7201 7404 7122
+f 7029 7064 7168
+f 3391 5215 1233
+f 644 7152 645
+f 7049 6886 6846
+f 6350 6882 6348
+f 5331 6958 6922
+f 1704 4007 934
+f 934 4007 5520
+f 5334 5810 7196
+f 662 7204 7192
+f 7158 7129 6987
+f 7186 3603 6178
+f 4015 7208 7176
+f 7176 7208 7177
+f 7177 7208 7193
+f 7227 6663 7178
+f 7227 7209 6663
+f 6663 7209 7194
+f 6636 4127 6637
+f 7189 7195 7166
+f 7249 7198 7190
+f 6099 6741 6742
+f 7404 7124 7231
+f 7202 7047 7048
+f 3313 7169 7319
+f 3470 6956 937
+f 3313 7319 7220
+f 6713 6846 1071
+f 7191 7203 7219
+f 6889 6904 7069
+f 2462 3999 4007
+f 1704 2462 4007
+f 5476 5752 3405
+f 7422 6727 7432
+f 3818 2044 3601
+f 7030 7221 6975
+f 2990 2034 2455
+f 7204 7222 7192
+f 7222 7223 5108
+f 7192 7222 5108
+f 5108 7223 3712
+f 5661 4412 5659
+f 4447 7157 7151
+f 6852 7150 1918
+f 8437 8235 7206
+f 7205 7207 4015
+f 4015 7207 7208
+f 7226 7227 7193
+f 7208 7226 7193
+f 7209 7224 7194
+f 7194 7224 7261
+f 6449 3649 6027
+f 7247 7210 6065
+f 7876 8361 7213
+f 7214 7125 7230
+f 7215 6676 6675
+f 7432 6727 7421
+f 7150 7249 7190
+f 7120 7197 7167
+f 7249 7216 7198
+f 7110 7183 7197
+f 7404 7231 7122
+f 7120 7110 7197
+f 7048 7064 7029
+f 451 3338 1912
+f 6972 6974 3197
+f 6907 7237 3474
+f 6958 7187 6922
+f 2462 1322 3999
+f 6058 3432 5898
+f 6909 6895 644
+f 5019 3402 6442
+f 3939 7241 7204
+f 7204 7241 7222
+f 7254 7242 7186
+f 7223 7254 7186
+f 7242 7243 7186
+f 7186 7243 3603
+f 7243 7225 3603
+f 7205 7225 7207
+f 7207 7226 7208
+f 7259 7228 7227
+f 7227 7228 7209
+f 7228 7245 7209
+f 7245 7224 7209
+f 7261 6578 5432
+f 4196 4197 5929
+f 5810 7199 7196
+f 5161 6961 5269
+f 3533 4962 5023
+f 7125 7232 7230
+f 7195 7189 7214
+f 6821 6822 6685
+f 6612 6205 6651
+f 6822 6821 7215
+f 6201 4791 5403
+f 7218 6990 7216
+f 7110 7182 7183
+f 6022 456 3811
+f 7064 7065 7168
+f 7318 6988 6913
+f 5731 3847 4121
+f 7240 4106 4200
+f 3939 7240 7241
+f 7241 7252 7222
+f 7252 7253 7223
+f 7222 7252 7223
+f 7223 7253 7254
+f 7255 7225 7243
+f 7255 7256 7225
+f 7225 7256 7207
+f 7256 7257 7207
+f 7257 7258 7226
+f 7207 7257 7226
+f 7244 7227 7226
+f 7258 7244 7226
+f 7244 7259 7227
+f 7228 7259 7245
+f 7269 7224 7245
+f 7224 7269 7261
+f 7190 5351 2391
+f 7463 7405 6852
+f 7249 7218 7216
+f 6995 5414 7286
+f 7217 6995 7286
+f 5191 1842 458
+f 7235 7047 7202
+f 7234 7047 7235
+f 5902 5919 5937
+f 3443 7127 7168
+f 7238 3355 6023
+f 7102 7135 5380
+f 4116 5892 5789
+f 4100 5380 6909
+f 7237 7251 3391
+f 3947 1209 1131
+f 2338 7147 7046
+f 7199 7217 6968
+f 7254 7280 7242
+f 7242 7280 7243
+f 7268 7244 7258
+f 7268 7259 7244
+f 7259 7260 7245
+f 7260 7269 7245
+f 2900 4102 4121
+f 7118 7448 5922
+f 7262 7247 7098
+f 3915 992 6017
+f 6239 521 5562
+f 3919 871 4070
+f 5936 7107 7239
+f 7148 7167 7299
+f 7218 5370 7050
+f 7286 5414 6669
+f 7300 7098 6065
+f 7102 7264 7135
+f 3391 7251 6983
+f 205 267 7265
+f 6989 7588 6729
+f 7085 456 6915
+f 5828 5175 5817
+f 4200 7276 7240
+f 7276 7277 7241
+f 7240 7276 7241
+f 7277 7278 7252
+f 7241 7277 7252
+f 7278 7279 7253
+f 7252 7278 7253
+f 7279 7295 7254
+f 7253 7279 7254
+f 7254 7295 7280
+f 7266 7255 7243
+f 7266 7311 7255
+f 7311 7281 7255
+f 7255 7281 7256
+f 7281 7257 7256
+f 7257 7267 7258
+f 7267 7297 7258
+f 7297 7268 7258
+f 7268 7282 7259
+f 7259 7282 7260
+f 7269 7270 7261
+f 7117 6578 7261
+f 7270 7117 7261
+f 4301 4239 4413
+f 7229 7211 7247
+f 7285 7262 7098
+f 1020 3687 6279
+f 521 6888 6443
+f 7160 7272 7162
+f 5227 7302 5453
+f 7113 7148 7299
+f 5414 3594 6669
+f 7113 7299 7232
+f 6578 7117 6514
+f 7274 3469 3271
+f 1099 198 3906
+f 5402 5240 5363
+f 927 7846 7960
+f 6887 6267 437
+f 267 7275 7265
+f 4200 7293 7276
+f 7280 7310 7243
+f 7310 7266 7243
+f 7281 7296 7257
+f 7257 7296 7267
+f 7282 7315 7260
+f 7315 7270 7269
+f 7260 7315 7269
+f 6859 6871 7283
+f 518 4161 2101
+f 5507 4704 3756
+f 7284 7248 7139
+f 7286 6669 6668
+f 7160 7285 7272
+f 6732 91 6208
+f 6936 7076 7263
+f 7111 6936 7263
+f 5439 7273 6729
+f 3415 6665 7447
+f 7289 7290 7264
+f 7434 7289 7264
+f 5520 3999 870
+f 6170 521 6239
+f 3512 3770 3836
+f 7293 7294 7277
+f 7276 7293 7277
+f 7277 7294 7278
+f 7278 7308 7279
+f 7279 7308 7295
+f 7295 7309 7280
+f 7280 7309 7310
+f 7311 7312 7281
+f 7281 7312 7296
+f 7298 7268 7297
+f 7298 7314 7268
+f 7314 7282 7268
+f 7282 7314 7315
+f 4102 5732 1434
+f 7381 7284 5181
+f 7284 7139 5181
+f 4115 7381 5181
+f 7300 7285 7098
+f 7285 7300 7272
+f 2194 2193 2272
+f 5554 5553 4975
+f 7301 5554 4975
+f 6541 756 6777
+f 1004 4997 3397
+f 7183 7271 7197
+f 7145 5899 7316
+f 6902 5369 5160
+f 6932 6933 7306
+f 7316 3545 7274
+f 5501 348 5511
+f 7059 7307 7290
+f 7289 7059 7290
+f 7291 455 451
+f 3416 5500 4150
+f 4085 7333 3733
+f 7333 7349 7292
+f 3733 7333 7292
+f 7349 7323 7293
+f 7292 7349 7293
+f 7293 7323 7294
+f 7294 7308 7278
+f 7309 7351 7310
+f 7325 7266 7310
+f 7266 7325 7311
+f 7296 7313 7267
+f 7267 7313 7297
+f 7297 7313 7298
+f 7339 7314 7298
+f 7314 7328 7315
+f 7329 7117 7270
+f 1902 1100 3694
+f 7167 7197 6961
+f 7197 7089 6961
+f 7167 6961 7140
+f 7271 6902 7089
+f 7299 7140 7230
+f 7299 7167 7140
+f 5432 6448 5732
+f 1397 7301 1396
+f 329 6256 3817
+f 4454 4453 4258
+f 5196 6878 5228
+f 3391 6983 5215
+f 6933 6936 7111
+f 6933 7111 7306
+f 3545 3469 7274
+f 1700 6870 6863
+f 7317 3545 7316
+f 5382 7049 3850
+f 7059 7318 7307
+f 455 7320 451
+f 6243 7321 6242
+f 7323 7324 7294
+f 7324 7335 7308
+f 7294 7324 7308
+f 7335 7336 7295
+f 7308 7335 7295
+f 7295 7336 7309
+f 7309 7336 7351
+f 7352 7310 7351
+f 7352 7325 7310
+f 7325 7326 7311
+f 7326 7337 7312
+f 7311 7326 7312
+f 7337 7327 7312
+f 7312 7327 7296
+f 7327 7338 7313
+f 7296 7327 7313
+f 7313 7338 7298
+f 7339 7328 7314
+f 7328 7340 7315
+f 7329 7270 7315
+f 7340 7329 7315
+f 7117 7329 6006
+f 7162 7272 5160
+f 6902 7271 5369
+f 5369 7162 5160
+f 7197 7271 7089
+f 6044 6059 5244
+f 3608 4561 4452
+f 6986 6905 7005
+f 6833 6076 6917
+f 4002 7068 5857
+f 7121 7303 7381
+f 6932 7306 7332
+f 7492 6963 545
+f 7079 7346 7318
+f 6887 438 7347
+f 6897 6896 6996
+f 7590 3874 7634
+f 7361 7362 4085
+f 7341 6005 6006
+f 4085 7362 7333
+f 7349 7363 7323
+f 7363 7334 7323
+f 7323 7334 7324
+f 7325 7352 7326
+f 7337 7367 7327
+f 7327 7353 7338
+f 7354 7298 7338
+f 7354 7339 7298
+f 7329 7341 6006
+f 7341 7373 6005
+f 4094 5819 3968
+f 6995 7217 7091
+f 6065 7210 2528
+f 5517 348 5501
+f 3676 3608 4452
+f 5647 3599 7077
+f 7162 7029 7160
+f 7145 7316 7331
+f 6019 3545 7317
+f 1779 685 3259
+f 6963 3765 545
+f 7129 7074 6987
+f 3938 7348 3997
+f 7362 7374 7333
+f 7333 7374 7349
+f 7334 7364 7324
+f 7364 7375 7335
+f 7324 7364 7335
+f 7375 7350 7336
+f 7335 7375 7336
+f 7336 7350 7351
+f 7352 7366 7326
+f 7326 7366 7337
+f 7353 7368 7338
+f 7368 7354 7338
+f 7339 7370 7328
+f 7370 7355 7328
+f 7328 7355 7340
+f 7371 7329 7340
+f 7379 7371 7340
+f 2807 6869 6856
+f 3857 6699 707
+f 7307 6913 4508
+f 7096 7101 7065
+f 5077 5160 4692
+f 1543 6222 6845
+f 7356 5647 7077
+f 7145 7331 7121
+f 7157 7358 7392
+f 7027 7157 7392
+f 545 358 1128
+f 6862 6138 6613
+f 7191 7219 6924
+f 6963 6959 3765
+f 7375 7365 7350
+f 7350 7376 7351
+f 7376 7352 7351
+f 7366 7387 7337
+f 7337 7387 7367
+f 7377 7388 7327
+f 7367 7377 7327
+f 7327 7388 7353
+f 7368 7369 7354
+f 7369 7339 7354
+f 7339 7369 7370
+f 7371 7372 7341
+f 7329 7371 7341
+f 7341 7372 7373
+f 1132 3266 5500
+f 4962 7050 5370
+f 7218 7050 6990
+f 5196 5228 6882
+f 7788 5693 5681
+f 3528 5522 5191
+f 7212 7164 5810
+f 5500 8707 4150
+f 6918 5461 4045
+f 6021 6044 6060
+f 6934 7332 7358
+f 7157 6934 7358
+f 7463 6851 3765
+f 5475 5491 1567
+f 6711 7720 5944
+f 7347 7360 6890
+f 6448 6187 5732
+f 3909 7393 7361
+f 7348 3909 7361
+f 7393 7408 7362
+f 7361 7393 7362
+f 7362 7408 7374
+f 7374 7384 7349
+f 7384 7395 7363
+f 7349 7384 7363
+f 7395 7410 7334
+f 7363 7395 7334
+f 7410 7396 7364
+f 7334 7410 7364
+f 7364 7396 7375
+f 7375 7397 7365
+f 7386 7352 7376
+f 7352 7386 7366
+f 7387 7411 7367
+f 7367 7411 7377
+f 7388 7378 7353
+f 7378 7400 7353
+f 7353 7400 7368
+f 7355 7379 7340
+f 7390 7371 7379
+f 7390 7372 7371
+f 7372 7380 7373
+f 6763 6510 7373
+f 7380 6763 7373
+f 6558 6597 6941
+f 7342 7381 4115
+f 7348 7361 3997
+f 1068 582 2010
+f 7164 7199 5810
+f 6709 5679 5341
+f 5190 6305 7265
+f 1890 1843 2567
+f 800 6269 452
+f 7121 7331 7303
+f 7170 7191 6928
+f 7077 3599 6498
+f 7265 7275 5189
+f 6891 6955 643
+f 6891 643 6974
+f 7360 7383 6890
+f 1417 1595 474
+f 7408 7394 7374
+f 7374 7394 7384
+f 7396 7397 7375
+f 7365 7385 7350
+f 7350 7385 7376
+f 7385 7386 7376
+f 7386 7398 7366
+f 7366 7398 7387
+f 7411 7412 7377
+f 7412 7388 7377
+f 7388 7413 7378
+f 7378 7413 7400
+f 7400 7415 7368
+f 7415 7416 7368
+f 7368 7416 7369
+f 7389 7370 7369
+f 7416 7389 7369
+f 7389 7402 7355
+f 7370 7389 7355
+f 7355 7402 7379
+f 7402 7390 7379
+f 7372 7419 7380
+f 7232 7299 7230
+f 6770 6475 6707
+f 6770 3439 6661
+f 7403 5647 7356
+f 6269 551 452
+f 7403 5679 5647
+f 7391 7233 7303
+f 7128 7027 7392
+f 5660 7200 7118
+f 7746 6075 6475
+f 7060 7129 7170
+f 5292 5160 5077
+f 936 505 2210
+f 7409 7384 7394
+f 7384 7409 7395
+f 7397 7385 7365
+f 7385 7427 7386
+f 7398 7399 7387
+f 7387 7399 7411
+f 7416 7401 7389
+f 7401 7402 7389
+f 7418 7372 7390
+f 7418 7419 7372
+f 7163 7164 7212
+f 7211 7163 7212
+f 7163 7211 7229
+f 7262 7229 7247
+f 5491 6568 1266
+f 6636 5757 6688
+f 7382 7391 7303
+f 7128 7392 7404
+f 7405 7118 7406
+f 7129 7060 7074
+f 4106 7240 3939
+f 456 7085 6925
+f 7408 7467 7394
+f 7394 7467 7409
+f 7409 7436 7395
+f 7395 7436 7410
+f 7410 7426 7396
+f 7396 7426 7397
+f 7427 7428 7386
+f 7428 7455 7398
+f 7386 7428 7398
+f 7398 7455 7399
+f 7413 7414 7400
+f 7400 7414 7415
+f 7417 7402 7401
+f 7418 7390 7402
+f 7417 7418 7402
+f 7459 7419 7418
+f 7419 7430 7380
+f 2990 1921 2034
+f 7114 7165 5238
+f 7747 6885 320
+f 4976 7096 7065
+f 7101 3979 7063
+f 7357 7421 6228
+f 3453 6787 3454
+f 2746 2010 582
+f 7423 7201 7233
+f 7424 7482 3909
+f 7482 7435 7393
+f 3909 7482 7393
+f 7393 7435 7408
+f 7408 7435 7467
+f 7467 7436 7409
+f 7436 7425 7410
+f 7410 7425 7426
+f 7426 7437 7397
+f 7397 7438 7385
+f 7385 7438 7427
+f 7455 7411 7399
+f 7411 7474 7412
+f 7440 7388 7412
+f 7474 7440 7412
+f 7388 7440 7413
+f 7440 7441 7414
+f 7413 7440 7414
+f 7414 7441 7415
+f 7415 7442 7416
+f 7416 7442 7401
+f 7442 7443 7401
+f 7443 7429 7401
+f 7429 7417 7401
+f 7458 7418 7417
+f 7429 7458 7417
+f 7458 7459 7418
+f 7419 7459 7430
+f 5359 7380 7430
+f 7431 7284 7381
+f 7342 7121 7381
+f 7141 7005 7153
+f 6830 7121 7342
+f 7013 3951 5060
+f 7421 7357 7432
+f 7445 7422 7432
+f 7446 7356 7422
+f 7445 7446 7422
+f 7446 7403 7356
+f 7115 6061 5019
+f 7391 7423 7233
+f 7319 7128 7423
+f 7128 7404 7423
+f 6700 6718 7588
+f 7273 5439 6769
+f 1644 6726 6732
+f 937 6956 7102
+f 4175 7424 3903
+f 7424 4175 7482
+f 7482 7483 7435
+f 7467 7468 7436
+f 7436 7451 7425
+f 7437 7438 7397
+f 7438 7439 7427
+f 7439 7471 7428
+f 7427 7439 7428
+f 7428 7471 7455
+f 7455 7473 7411
+f 7411 7473 7474
+f 7441 7475 7415
+f 7415 7475 7442
+f 7443 7476 7429
+f 7429 7477 7458
+f 7459 7460 7430
+f 7430 7460 3374
+f 2513 1594 212
+f 3374 3169 5359
+f 238 3705 5095
+f 7431 7123 7284
+f 7123 7248 7284
+f 7123 7122 7248
+f 7122 7231 7248
+f 7124 7214 7189
+f 7444 8401 6850
+f 7445 7432 7357
+f 7462 7403 7446
+f 7403 7462 5341
+f 6709 5341 6703
+f 6947 6172 6978
+f 7095 7405 7463
+f 7095 7118 7405
+f 7464 7447 7448
+f 7433 7449 6897
+f 7084 7175 7042
+f 1892 190 200
+f 7484 7435 7483
+f 7435 7484 7467
+f 7468 7451 7436
+f 7451 7452 7425
+f 7452 7437 7426
+f 7425 7452 7426
+f 7453 7438 7437
+f 7453 7470 7438
+f 7470 7439 7438
+f 7470 7454 7439
+f 7454 7471 7439
+f 7489 7440 7474
+f 7489 7456 7440
+f 7456 7475 7441
+f 7440 7456 7441
+f 7475 7457 7442
+f 7442 7457 7443
+f 7457 7514 7443
+f 7514 7476 7443
+f 7476 7477 7429
+f 7477 7504 7458
+f 7460 7478 3374
+f 521 6170 6888
+f 7478 6511 3374
+f 5269 6961 7037
+f 7247 7211 7210
+f 7038 7212 5810
+f 7405 7149 6852
+f 6843 5626 7446
+f 7445 6843 7446
+f 7446 5626 7462
+f 7462 7507 5341
+f 7392 7358 7124
+f 3528 5531 5537
+f 7147 5227 7046
+f 7283 7444 6859
+f 4175 7493 7482
+f 7468 7495 7451
+f 7495 7496 7451
+f 7496 7511 7452
+f 7451 7496 7452
+f 7452 7511 7437
+f 7437 7469 7453
+f 7469 7470 7453
+f 7471 7472 7455
+f 7455 7472 7473
+f 7503 7477 7476
+f 7504 7491 7458
+f 7460 7459 7458
+f 7491 7460 7458
+f 6778 6188 3313
+f 7720 7729 5944
+f 7479 7283 6871
+f 7480 7479 6871
+f 5632 5620 5986
+f 7748 3622 3644
+f 618 6000 3924
+f 7392 7124 7404
+f 7319 7423 7391
+f 5550 5535 3694
+f 7449 7465 6897
+f 7484 7494 7467
+f 7494 7485 7468
+f 7467 7494 7468
+f 7468 7485 7495
+f 7511 7486 7437
+f 7486 7497 7469
+f 7437 7486 7469
+f 7497 7512 7469
+f 7512 7498 7469
+f 7498 7499 7470
+f 7469 7498 7470
+f 7499 7487 7454
+f 7470 7499 7454
+f 7454 7487 7471
+f 7471 7487 7472
+f 7488 7521 7473
+f 7472 7488 7473
+f 7473 7521 7474
+f 7456 7502 7475
+f 7502 7523 7475
+f 7475 7523 7457
+f 7514 7490 7476
+f 7490 7503 7476
+f 7504 7477 7503
+f 7460 7506 7478
+f 7506 756 7478
+f 7420 5238 7229
+f 7091 7199 7184
+f 5238 7165 7163
+f 7357 5620 6829
+f 6586 7462 5626
+f 6586 7507 7462
+f 6814 6703 7507
+f 7421 6727 6495
+f 7423 7404 7201
+f 7331 7250 7303
+f 6239 5562 6237
+f 6928 7191 6924
+f 7465 7466 6910
+f 6897 7465 6910
+f 6986 7005 7141
+f 2867 4039 5513
+f 3702 3720 7493
+f 7493 7530 7482
+f 7530 7517 7483
+f 7482 7530 7483
+f 7517 7484 7483
+f 7484 7517 7494
+f 7499 7500 7487
+f 7487 7500 7472
+f 7472 7500 7488
+f 7488 7500 7521
+f 7521 7522 7474
+f 7501 7489 7474
+f 7522 7501 7474
+f 7501 7456 7489
+f 7456 7501 7502
+f 7514 7524 7490
+f 7524 7503 7490
+f 7505 7460 7491
+f 7460 7505 7506
+f 190 199 200
+f 5731 5732 6187
+f 7290 7307 4508
+f 3204 4879 4782
+f 6787 5997 7107
+f 7480 6871 6191
+f 3452 2770 2745
+f 6090 6586 5626
+f 6449 6027 6073
+f 6882 5186 6348
+f 7954 996 8121
+f 7509 6963 7492
+f 7466 7541 6911
+f 6910 7466 6911
+f 6843 7445 6829
+f 3720 7516 7493
+f 7493 7516 7530
+f 7518 7494 7517
+f 7494 7518 7485
+f 7533 7495 7485
+f 7533 7534 7496
+f 7495 7533 7496
+f 7496 7534 7511
+f 7511 7519 7486
+f 7519 7543 7497
+f 7486 7519 7497
+f 7543 7512 7497
+f 7512 7520 7498
+f 7520 7513 7499
+f 7498 7520 7499
+f 7499 7546 7500
+f 7503 7524 7504
+f 7524 7525 7504
+f 7525 7491 7504
+f 7526 7505 7491
+f 6777 7506 7505
+f 7526 6777 7505
+f 6777 756 7506
+f 7263 7234 7110
+f 7234 7235 7110
+f 7029 7168 7028
+f 7202 7048 7029
+f 1148 3386 1544
+f 7527 6829 5632
+f 5900 7777 6667
+f 6740 4102 3630
+f 6586 6814 7507
+f 7250 7382 7303
+f 6726 3953 6732
+f 6980 7288 6984
+f 6973 6891 6974
+f 7530 7531 7517
+f 7534 7535 7511
+f 7511 7535 7519
+f 7499 7513 7546
+f 7546 7547 7500
+f 7547 7521 7500
+f 7536 7501 7522
+f 7501 7550 7502
+f 7502 7550 7523
+f 7523 7551 7457
+f 7551 7537 7457
+f 7457 7537 7514
+f 7537 7552 7514
+f 7552 7524 7514
+f 7524 7539 7525
+f 7525 7554 7491
+f 7554 7526 7491
+f 5212 3116 8295
+f 7185 7406 7200
+f 871 7173 870
+f 7124 7125 7214
+f 7901 6815 4231
+f 7358 7332 7126
+f 7274 7250 7331
+f 1644 6732 4077
+f 7040 6929 7288
+f 6942 7515 7559
+f 6942 7030 7515
+f 7320 1102 1779
+f 3720 3784 7516
+f 7518 7532 7485
+f 7485 7532 7533
+f 7520 7545 7513
+f 7513 7545 7546
+f 7547 7548 7521
+f 7549 7522 7521
+f 7548 7549 7521
+f 7549 7536 7522
+f 7501 7536 7550
+f 7523 7550 7551
+f 7552 7538 7524
+f 7524 7538 7539
+f 7525 7539 7554
+f 7554 7540 7526
+f 2692 5075 1359
+f 6831 7128 7169
+f 5319 7151 7027
+f 5319 7027 7128
+f 1268 7527 5632
+f 6903 6746 6747
+f 6669 3594 6839
+f 6903 6722 6975
+f 7812 485 6731
+f 6734 5394 5395
+f 6911 7541 6929
+f 4002 5857 3785
+f 7526 7540 6777
+f 7516 7581 7530
+f 7530 7581 7531
+f 7531 7567 7517
+f 7567 7518 7517
+f 7532 7561 7533
+f 7533 7561 7534
+f 7534 7562 7535
+f 7562 7571 7519
+f 7535 7562 7519
+f 7519 7571 7543
+f 7543 7544 7512
+f 7512 7544 7520
+f 7545 7573 7546
+f 7546 7563 7547
+f 7547 7574 7548
+f 7551 7565 7537
+f 7537 7565 7552
+f 7538 7553 7539
+f 7553 7578 7554
+f 7539 7553 7554
+f 3217 6777 7540
+f 7555 4471 7084
+f 7556 7434 6956
+f 4471 7175 7084
+f 7174 7159 7154
+f 7555 7084 7079
+f 7159 7555 7079
+f 7214 7230 5433
+f 6903 6747 4107
+f 7029 7028 7160
+f 7190 7198 5351
+f 7566 1268 6573
+f 2359 4710 6441
+f 6929 7541 7542
+f 7542 7557 6935
+f 6943 7559 7558
+f 4009 7589 7516
+f 3784 4009 7516
+f 7516 7589 7581
+f 7560 7518 7567
+f 7560 7568 7532
+f 7518 7560 7532
+f 7532 7568 7561
+f 7561 7570 7534
+f 7534 7570 7562
+f 7571 7583 7543
+f 7543 7583 7544
+f 7544 7572 7545
+f 7520 7544 7545
+f 7545 7572 7573
+f 7546 7573 7563
+f 7547 7563 7574
+f 7596 7548 7574
+f 7575 7549 7548
+f 7596 7575 7548
+f 7549 7575 7536
+f 7550 7564 7551
+f 7551 7564 7565
+f 7565 7576 7552
+f 7552 7576 7538
+f 7538 7577 7553
+f 7587 7554 7578
+f 7587 7540 7554
+f 7587 7579 7540
+f 6675 6666 7215
+f 7579 3217 7540
+f 4778 4808 4796
+f 7464 7448 6959
+f 5893 1071 3545
+f 6878 5507 5182
+f 5756 5757 6636
+f 6509 6844 6573
+f 7566 3995 1268
+f 4849 2272 2193
+f 7160 7028 7285
+f 7249 7185 7218
+f 7332 7306 7126
+f 5215 451 1912
+f 4009 3834 7589
+f 7531 7581 7567
+f 7568 7569 7561
+f 7561 7569 7570
+f 7570 7607 7562
+f 7607 7571 7562
+f 7583 7608 7544
+f 7608 7572 7544
+f 7573 7574 7563
+f 7574 7617 7596
+f 7575 7598 7536
+f 7598 7584 7550
+f 7536 7598 7550
+f 7550 7584 7564
+f 7585 7599 7565
+f 7564 7585 7565
+f 7565 7599 7576
+f 7576 7577 7538
+f 7577 7586 7553
+f 7553 7586 7578
+f 6903 4107 6728
+f 7322 7492 545
+f 6043 4959 6799
+f 4669 3844 4558
+f 6844 7566 6573
+f 7604 3995 7566
+f 7150 7190 2391
+f 7285 7028 7161
+f 7185 7200 7218
+f 1588 470 3338
+f 7464 6959 6963
+f 6172 6888 6170
+f 7560 7582 7568
+f 7568 7582 7569
+f 7569 7606 7570
+f 7570 7606 7607
+f 7608 7594 7572
+f 7594 7573 7572
+f 7595 7609 7573
+f 7573 7609 7574
+f 7574 7609 7617
+f 7564 7584 7585
+f 7599 7612 7576
+f 7576 7612 7577
+f 7577 7600 7586
+f 7601 7579 7587
+f 3061 3759 3805
+f 7601 6036 7579
+f 7031 6243 7221
+f 7303 7233 7431
+f 2692 5656 5657
+f 6647 4174 6584
+f 6298 1267 6882
+f 7149 7185 7150
+f 7107 5936 5899
+f 7274 3271 7250
+f 6441 7529 2359
+f 6924 7219 7236
+f 7217 7286 6960
+f 7589 7590 7581
+f 7590 7591 7567
+f 7581 7590 7567
+f 7605 7560 7567
+f 7591 7605 7567
+f 7560 7605 7582
+f 7582 7592 7569
+f 7569 7592 7606
+f 7607 7626 7571
+f 7626 7593 7583
+f 7571 7626 7583
+f 7583 7593 7608
+f 7573 7594 7595
+f 7597 7575 7596
+f 7575 7597 7598
+f 7584 7610 7585
+f 7585 7610 7599
+f 7612 7600 7577
+f 7586 7600 7578
+f 7620 7587 7578
+f 7620 7601 7587
+f 6058 6036 7601
+f 7588 7012 6700
+f 7580 321 7602
+f 7013 5060 7602
+f 7614 7566 6844
+f 4503 7614 6844
+f 7566 7614 7604
+f 6712 5358 4365
+f 7622 7262 7161
+f 7262 7622 7229
+f 7250 6778 7382
+f 7382 6778 7220
+f 7101 3443 7168
+f 7529 6822 7322
+f 2359 7529 7322
+f 6912 7040 7041
+f 7603 7580 7011
+f 6708 7001 6944
+f 3870 3874 7589
+f 3834 3870 7589
+f 7589 3874 7590
+f 7594 7628 7595
+f 7615 7609 7595
+f 7628 7615 7595
+f 7617 7650 7596
+f 7650 7597 7596
+f 7598 7618 7584
+f 7584 7618 7610
+f 7610 7619 7599
+f 7619 7631 7599
+f 7631 7611 7612
+f 7599 7631 7612
+f 7613 7578 7600
+f 7613 7620 7578
+f 7633 7601 7620
+f 5060 7012 7588
+f 6997 205 7004
+f 321 7013 7602
+f 7206 8235 8461
+f 7614 7621 7604
+f 4231 3547 3882
+f 5238 7163 7229
+f 7264 7290 7146
+f 7185 7249 7150
+f 7111 7263 7120
+f 6822 7509 7322
+f 6943 7558 6944
+f 6091 6144 6145
+f 7591 7635 7605
+f 7635 7636 7582
+f 7605 7635 7582
+f 7636 7624 7592
+f 7582 7636 7592
+f 7624 7625 7606
+f 7592 7624 7606
+f 7606 7625 7607
+f 7625 7626 7607
+f 7593 7627 7608
+f 7608 7627 7594
+f 7616 7609 7615
+f 7609 7616 7617
+f 7597 7642 7598
+f 7598 7642 7618
+f 7619 7644 7631
+f 7611 7600 7612
+f 7600 7632 7613
+f 5249 4877 2508
+f 7559 1206 7558
+f 6954 7557 7542
+f 6953 6954 7542
+f 7602 5060 7588
+f 7153 6907 7171
+f 6956 7434 7102
+f 4503 7646 7614
+f 7646 7621 7614
+f 7622 7420 7229
+f 7420 7622 7127
+f 7290 4508 7146
+f 4791 2070 2533
+f 7263 7110 7120
+f 3221 6932 6934
+f 7557 7603 6935
+f 205 6997 206
+f 5671 5670 7789
+f 7634 7623 7591
+f 7590 7634 7591
+f 7623 7635 7591
+f 7627 7648 7594
+f 7594 7648 7628
+f 7628 7629 7615
+f 7615 7629 7616
+f 7641 7617 7616
+f 7629 7641 7616
+f 7617 7641 7650
+f 7642 7597 7650
+f 7642 7643 7618
+f 7643 7630 7610
+f 7618 7643 7610
+f 7610 7630 7619
+f 7619 7630 7644
+f 7631 7645 7611
+f 7632 7600 7611
+f 334 7620 7613
+f 334 7633 7620
+f 7000 6953 7542
+f 7541 7000 7542
+f 6091 2168 6946
+f 4914 7237 6907
+f 6922 6971 6193
+f 7621 7646 6739
+f 613 619 1532
+f 7088 6934 7157
+f 7088 3221 6934
+f 7509 7492 7322
+f 6378 437 6347
+f 7014 7603 7557
+f 7300 6065 4748
+f 205 7265 7004
+f 7637 7624 7636
+f 7638 7625 7624
+f 7637 7638 7624
+f 7638 7639 7625
+f 7639 7626 7625
+f 7639 7655 7593
+f 7626 7639 7593
+f 7655 7656 7627
+f 7593 7655 7627
+f 7627 7656 7648
+f 7648 7649 7628
+f 7628 7649 7629
+f 7649 7640 7629
+f 7629 7640 7641
+f 7643 7651 7630
+f 7651 7644 7630
+f 7631 7644 7645
+f 7611 7645 7632
+f 7527 1268 5626
+f 7016 7000 7541
+f 6647 1398 4174
+f 3432 7633 6179
+f 7556 7174 7070
+f 6892 6884 7138
+f 3859 4046 92
+f 6759 6510 6763
+f 2482 6220 6739
+f 7071 3728 3727
+f 6019 5893 3545
+f 2359 7322 653
+f 7303 7431 7381
+f 7174 7059 7070
+f 7230 7140 5161
+f 7317 5936 6019
+f 6494 7653 7634
+f 7634 7653 7623
+f 7654 7635 7623
+f 7654 7666 7636
+f 7635 7654 7636
+f 7666 7637 7636
+f 7640 7658 7641
+f 7641 7658 7650
+f 7642 7660 7643
+f 7643 7661 7651
+f 7662 7645 7644
+f 7662 7674 7632
+f 7645 7662 7632
+f 7632 7674 7613
+f 5679 7403 5341
+f 567 2108 4145
+f 7300 4748 4692
+f 2468 7049 5382
+f 7116 6884 6892
+f 7030 7031 7221
+f 7086 7116 7287
+f 4997 1266 6568
+f 7646 6862 2483
+f 2695 3854 5407
+f 7646 2483 6739
+f 7664 7071 3727
+f 3545 1071 3438
+f 4262 2126 7344
+f 4658 6660 4376
+f 6954 7014 7557
+f 4816 6386 4815
+f 7031 7032 6243
+f 7032 7321 6243
+f 6850 8401 3757
+f 4230 7239 5979
+f 5959 5920 7647
+f 6859 7444 6850
+f 5368 4385 4351
+f 6191 5935 8463
+f 5959 7647 8489
+f 7652 5270 2111
+f 4638 6509 6247
+f 4356 6564 5554
+f 6494 7665 7653
+f 7667 7655 7639
+f 7668 7648 7656
+f 7668 7657 7649
+f 7648 7668 7649
+f 7657 7669 7649
+f 7649 7669 7640
+f 7658 7659 7650
+f 7650 7659 7642
+f 7642 7659 7660
+f 7660 7661 7643
+f 7661 7671 7651
+f 7671 7672 7651
+f 7672 7673 7651
+f 7651 7673 7644
+f 7673 7662 7644
+f 7662 7693 7674
+f 7674 7675 7613
+f 7613 7675 6834
+f 7211 7038 7210
+f 6613 2483 6862
+f 7216 6990 5048
+f 7465 7449 7466
+f 6017 1132 5500
+f 4200 3875 7292
+f 1421 1129 1158
+f 7151 7157 7027
+f 3221 6933 6932
+f 3512 3836 6467
+f 6944 7558 6716
+f 7016 7541 7466
+f 2468 6886 7049
+f 6568 5491 5475
+f 7663 4230 156
+f 5382 5349 5350
+f 5756 7105 5770
+f 8177 5905 6487
+f 6487 5905 2178
+f 3585 8050 5854
+f 5716 4250 830
+f 7685 5716 830
+f 3940 5758 753
+f 7688 7638 7637
+f 7666 7688 7637
+f 7688 7667 7639
+f 7638 7688 7639
+f 7667 7678 7655
+f 7679 7656 7655
+f 7678 7679 7655
+f 7679 7668 7656
+f 7668 7669 7657
+f 7669 7658 7640
+f 7658 7670 7659
+f 7670 7660 7659
+f 7681 7671 7661
+f 7660 7681 7661
+f 7692 7693 7662
+f 7673 7692 7662
+f 7236 6977 7039
+f 6966 5402 1161
+f 7097 7080 7058
+f 6990 3534 5048
+f 7449 7016 7466
+f 1260 1101 1125
+f 1330 6886 1543
+f 7199 7091 7217
+f 458 3694 6858
+f 7094 6936 6933
+f 5334 7196 6968
+f 7559 7515 1206
+f 2468 6966 1161
+f 7069 7080 7097
+f 7195 7214 5433
+f 2468 5382 7683
+f 2468 7683 8341
+f 8341 6037 2468
+f 6597 6832 6917
+f 7305 6487 6486
+f 6614 6872 3377
+f 3642 8025 7866
+f 3454 6787 7107
+f 7711 7685 830
+f 7699 5716 7685
+f 2898 2977 5253
+f 5253 2977 3852
+f 2989 4253 4241
+f 5106 7665 5841
+f 5106 7677 7665
+f 7665 7677 7653
+f 7654 7712 7666
+f 7712 7687 7666
+f 7666 7687 7688
+f 7667 7689 7678
+f 7679 7680 7668
+f 7668 7680 7669
+f 7680 7690 7669
+f 7690 7704 7658
+f 7669 7690 7658
+f 7658 7704 7670
+f 7670 7691 7660
+f 7660 7691 7681
+f 7681 7672 7671
+f 7672 7707 7673
+f 7707 7692 7673
+f 7694 7675 7674
+f 7693 7694 7674
+f 7695 6834 7675
+f 400 7032 7031
+f 1033 1163 1207
+f 5747 1003 6956
+f 5266 5161 5269
+f 5747 6956 3470
+f 4503 6509 5155
+f 5351 7198 2486
+f 363 5392 5443
+f 7127 7622 7161
+f 7092 7075 5472
+f 7420 5435 5238
+f 3221 7094 6933
+f 5496 1004 3397
+f 7288 6935 6984
+f 7481 7031 7030
+f 7099 7046 6973
+f 1003 7556 6956
+f 7078 7069 7097
+f 4671 6912 7041
+f 1921 2990 2938
+f 8364 7683 5350
+f 5350 7683 5382
+f 3895 275 3377
+f 6872 3895 3377
+f 6677 3968 6653
+f 7686 5716 7699
+f 4250 5716 4163
+f 3958 5235 3915
+f 7677 801 7653
+f 7653 7701 7623
+f 7701 7712 7654
+f 7623 7701 7654
+f 7689 7667 7688
+f 7689 7702 7678
+f 7678 7702 7679
+f 7679 7703 7680
+f 7703 7690 7680
+f 7690 7725 7704
+f 7717 7670 7704
+f 7717 7691 7670
+f 7691 7705 7681
+f 7705 7718 7681
+f 7681 7718 7672
+f 7694 7708 7675
+f 7719 7695 7675
+f 7708 7719 7675
+f 6834 7695 6711
+f 7203 6976 7219
+f 6906 7069 7078
+f 7869 8269 4776
+f 1069 7085 7083
+f 1162 7174 7556
+f 1003 1162 7556
+f 6138 4668 6706
+f 7139 492 491
+f 5042 6285 5353
+f 5433 5266 3810
+f 6898 7002 3740
+f 5019 1130 3402
+f 6936 7094 7076
+f 634 422 1472
+f 7219 6977 7236
+f 7481 400 7031
+f 7046 7433 6891
+f 5900 6696 7729
+f 5049 5188 267
+f 266 5049 267
+f 8104 7974 7892
+f 4049 3961 5857
+f 8018 7696 7845
+f 7698 6601 7748
+f 3895 20 275
+f 7711 7699 7685
+f 7045 7085 1069
+f 3958 3915 3914
+f 5522 4039 5191
+f 801 7700 7701
+f 7653 801 7701
+f 7724 7688 7687
+f 7724 7689 7688
+f 7679 7702 7703
+f 7703 7716 7690
+f 7716 7725 7690
+f 7741 7691 7717
+f 7741 7705 7691
+f 7718 7706 7672
+f 7672 7706 7707
+f 7692 7728 7693
+f 7693 7728 7694
+f 7728 7708 7694
+f 7720 6711 7695
+f 7719 7720 7695
+f 5620 7357 6228
+f 7054 7042 7359
+f 7024 7099 7175
+f 5413 7159 7174
+f 6925 7085 7045
+f 7220 7319 7391
+f 6684 4668 6138
+f 5773 2833 5755
+f 6961 7089 7037
+f 6721 7221 6242
+f 7046 6891 6973
+f 7133 6925 7024
+f 6378 438 437
+f 206 7721 7709
+f 8018 7845 7916
+f 3353 3632 20
+f 7749 4654 3291
+f 7749 7711 4654
+f 7735 7686 7699
+f 1330 6846 6886
+f 5809 6570 6508
+f 7700 7712 7701
+f 7712 7752 7687
+f 7752 7724 7687
+f 7713 7689 7724
+f 7713 7714 7689
+f 7714 7702 7689
+f 7714 7715 7702
+f 7715 7703 7702
+f 7715 7716 7703
+f 7739 7704 7725
+f 7739 7717 7704
+f 7705 7741 7718
+f 7726 7706 7718
+f 7727 7707 7706
+f 7727 7692 7707
+f 7692 7727 7728
+f 5778 522 3884
+f 6965 6964 1162
+f 7079 7054 7346
+f 7054 7359 7346
+f 2124 6730 5884
+f 3406 5752 4757
+f 5434 7062 5435
+f 7074 7060 7090
+f 6857 6043 6800
+f 7464 3415 7447
+f 7154 7079 7318
+f 7137 7015 7017
+f 457 7006 7383
+f 7275 267 5188
+f 204 206 7709
+f 3353 4063 3632
+f 205 204 267
+f 7733 1275 1883
+f 7735 7699 7711
+f 7736 7686 7735
+f 7736 6799 7686
+f 1396 7301 3993
+f 5330 6099 6254
+f 6660 4658 6043
+f 7156 7136 7009
+f 6925 7025 7024
+f 7700 801 6145
+f 457 7407 7006
+f 6145 7767 7700
+f 7737 7712 7700
+f 7712 7737 7752
+f 7738 7739 7725
+f 7740 7741 7717
+f 7739 7740 7717
+f 7742 7718 7741
+f 7718 7742 7726
+f 7726 7727 7706
+f 7042 6973 7359
+f 7188 7156 7009
+f 7137 7133 7015
+f 7024 2338 7099
+f 7154 7318 7059
+f 7307 7318 6913
+f 6888 6947 6884
+f 7130 7104 7053
+f 645 7152 7052
+f 7174 7154 7059
+f 7188 6999 7187
+f 7136 7137 7017
+f 7730 7731 5449
+f 5449 7732 7730
+f 4237 7853 7854
+f 3592 7733 1883
+f 7734 3291 7733
+f 7734 7749 3291
+f 7782 7711 7749
+f 7782 7735 7711
+f 7736 6800 6799
+f 6075 3286 4667
+f 7767 7751 7700
+f 7751 7737 7700
+f 7737 7756 7752
+f 7752 7713 7724
+f 7758 7715 7714
+f 7759 7716 7715
+f 7759 7725 7716
+f 7759 7738 7725
+f 7726 7763 7727
+f 7743 7728 7727
+f 7744 7708 7728
+f 7743 7744 7728
+f 7744 7745 7708
+f 7708 7745 7719
+f 7719 7745 7720
+f 7084 7054 7079
+f 6022 3811 6012
+f 7136 7017 7009
+f 7070 7059 7289
+f 8145 3777 7855
+f 3671 8384 4947
+f 6488 6049 6904
+f 5210 4501 3951
+f 7130 7053 7052
+f 7152 7130 7052
+f 6980 7203 7191
+f 7159 7079 7154
+f 7556 7070 7434
+f 6192 6965 1162
+f 390 7747 320
+f 5076 642 7302
+f 3533 5023 3534
+f 642 7119 7302
+f 7450 5360 7510
+f 5360 6301 7510
+f 1570 4502 5471
+f 3991 4097 5256
+f 6486 6487 3001
+f 3592 7734 7733
+f 7781 7749 7734
+f 7750 7735 7782
+f 7750 7736 7735
+f 6009 7783 6712
+f 5481 4174 6658
+f 6959 7095 7463
+f 6922 7187 6971
+f 7510 6301 7043
+f 7784 7737 7751
+f 7784 7756 7737
+f 7757 7713 7752
+f 7757 7714 7713
+f 7757 7753 7714
+f 7753 7758 7714
+f 7758 7759 7715
+f 7760 7739 7738
+f 7760 7740 7739
+f 7761 7741 7740
+f 7760 7761 7740
+f 7761 7754 7741
+f 7754 7742 7741
+f 7754 7762 7726
+f 7742 7754 7726
+f 7762 7763 7726
+f 7763 7764 7743
+f 7727 7763 7743
+f 7743 7764 7744
+f 7764 7775 7745
+f 7744 7764 7745
+f 7775 7777 7745
+f 7745 7777 7720
+f 7720 7777 7729
+f 7102 7434 7264
+f 399 5023 4962
+f 7119 3150 5024
+f 7070 7289 7434
+f 3533 7050 4962
+f 6959 7463 3765
+f 3470 6307 5747
+f 7188 7009 6999
+f 7025 7302 7147
+f 7104 4447 7053
+f 6963 7215 7464
+f 4990 7747 390
+f 6910 4671 4456
+f 6910 4456 6896
+f 5257 7755 5234
+f 7755 5257 5256
+f 8166 8150 8145
+f 3913 7344 7345
+f 8122 566 32
+f 2149 3321 668
+f 7781 7782 7749
+f 6214 6181 1298
+f 5244 6060 6044
+f 3533 3534 6990
+f 7558 6715 6716
+f 7768 7752 7756
+f 7768 7757 7752
+f 7769 7758 7753
+f 7758 7770 7759
+f 7759 7771 7738
+f 7771 7760 7738
+f 7761 7773 7754
+f 7773 7762 7754
+f 7775 7776 7777
+f 642 3150 7119
+f 3150 3465 5024
+f 4077 6732 6208
+f 3465 4990 6954
+f 5181 7139 491
+f 6158 645 7052
+f 7093 7092 5472
+f 7090 7060 7072
+f 5191 4039 1889
+f 5024 3465 6954
+f 4990 390 6954
+f 6651 345 4975
+f 5449 5471 1350
+f 5256 4097 1570
+f 4475 4026 7345
+f 3753 7765 5839
+f 8147 8429 8049
+f 7792 3592 1406
+f 7766 7750 7782
+f 4127 6636 4128
+f 5414 5472 3594
+f 3194 4819 4798
+f 6145 7803 7767
+f 7767 7804 7751
+f 7804 7784 7751
+f 7756 7784 7768
+f 7785 7757 7768
+f 7785 7753 7757
+f 7770 7758 7769
+f 7770 7788 7759
+f 7788 7771 7759
+f 7789 7760 7771
+f 7789 7772 7760
+f 7772 7761 7760
+f 7772 7773 7761
+f 7790 7762 7773
+f 7790 7763 7762
+f 7790 7774 7763
+f 7774 7764 7763
+f 7774 7775 7764
+f 6888 6172 6947
+f 6830 3453 7145
+f 6058 7601 7633
+f 3598 1430 168
+f 3997 7361 3998
+f 7090 7091 7184
+f 6061 1130 5019
+f 6928 6924 7092
+f 7049 6846 6713
+f 1297 6249 1298
+f 7755 5256 1570
+f 4 8409 5
+f 7780 8147 8049
+f 7800 7792 1406
+f 7793 7734 3592
+f 7792 7793 3592
+f 7793 7781 7734
+f 1570 5449 7731
+f 8172 17 1250
+f 7025 7045 5076
+f 6144 7783 6145
+f 6145 7783 7803
+f 7803 6008 7767
+f 7767 6008 7804
+f 7795 7768 7784
+f 7795 7785 7768
+f 7817 7753 7785
+f 7817 7786 7753
+f 7786 7769 7753
+f 7786 7787 7769
+f 7787 7770 7769
+f 7797 7773 7772
+f 7797 7790 7773
+f 7818 7774 7790
+f 7818 7806 7774
+f 7806 7798 7774
+f 7798 7775 7774
+f 7775 7798 7776
+f 7798 7799 7776
+f 7776 7799 7777
+f 7777 7799 6667
+f 5818 4769 5777
+f 1196 4878 1101
+f 5311 7156 6962
+f 6010 3811 3355
+f 6099 1397 1396
+f 6475 7791 7746
+f 7791 3286 7746
+f 348 5517 308
+f 7165 7090 7184
+f 6488 6889 456
+f 6967 7287 7012
+f 6883 7078 4990
+f 7755 1570 7731
+f 8022 7974 8074
+f 3913 4262 7344
+f 8409 7840 5
+f 967 7800 1406
+f 7794 7782 7781
+f 7810 7794 7781
+f 7782 7794 7766
+f 7794 7801 7766
+f 3951 6967 7012
+f 3150 6879 3465
+f 7813 7784 7804
+f 7813 7795 7784
+f 7787 5693 7770
+f 5693 7788 7770
+f 7788 7796 7771
+f 7796 7789 7771
+f 7805 7797 7772
+f 7797 7818 7790
+f 3850 7049 6713
+f 6879 6883 3465
+f 2495 1622 3320
+f 6475 6770 7791
+f 5503 6690 3699
+f 5471 5449 1570
+f 4262 4051 2125
+f 7809 7793 7792
+f 7810 7781 7793
+f 7809 7810 7793
+f 7811 7794 7810
+f 7811 7801 7794
+f 7803 6009 6008
+f 7815 7816 7785
+f 7795 7815 7785
+f 7816 7817 7785
+f 5718 7786 7817
+f 5718 7787 7786
+f 6488 6022 6048
+f 5681 7796 7788
+f 7789 7805 7772
+f 7805 5114 7797
+f 5114 7818 7797
+f 7819 7806 7818
+f 7806 7821 7798
+f 7798 7821 7799
+f 7799 7823 6667
+f 1621 5974 5931
+f 5193 6879 3150
+f 3857 7002 7001
+f 7015 7175 4471
+f 5839 1642 3753
+f 6770 3520 7791
+f 3520 2977 7791
+f 3571 124 1281
+f 345 6651 6205
+f 7302 5227 7147
+f 6968 6960 5348
+f 6674 4815 6386
+f 7264 7146 6895
+f 6356 6355 3886
+f 1566 5221 2313
+f 6060 6129 6079
+f 4051 4125 2125
+f 7807 7792 7800
+f 7807 7808 7792
+f 7808 7809 7792
+f 7811 7812 7801
+f 7801 7812 6539
+f 5108 3712 4779
+f 7010 7555 5413
+f 5036 8507 8479
+f 7783 6009 7803
+f 6008 5481 7804
+f 5481 7813 7804
+f 7814 7795 7813
+f 7795 7814 7815
+f 5519 5718 7817
+f 3769 4068 1148
+f 492 7139 5952
+f 7105 6637 8485
+f 6955 6996 7066
+f 4669 4558 4498
+f 5670 7805 7789
+f 8164 7881 8137
+f 5670 5655 7805
+f 7819 7820 7806
+f 7820 7821 7806
+f 7821 7822 7799
+f 7799 7822 7823
+f 5851 4399 1118
+f 6667 6720 5991
+f 5892 4116 5850
+f 7002 6898 7003
+f 7098 7247 6065
+f 445 210 2264
+f 3647 7824 3648
+f 6661 3520 6770
+f 5276 7089 6902
+f 7346 6972 6988
+f 7101 7063 3443
+f 5716 4959 4163
+f 6996 6896 7096
+f 4456 3979 6896
+f 7082 6918 4045
+f 9 27 7853
+f 4758 5454 8458
+f 5438 3716 3940
+f 458 6858 3529
+f 554 7800 1164
+f 554 7807 7800
+f 5132 7809 7808
+f 587 7810 7809
+f 5132 587 7809
+f 587 7811 7810
+f 6957 7010 5413
+f 7004 7265 6305
+f 8338 679 4123
+f 7814 1259 7815
+f 7815 1259 7816
+f 1259 3458 7817
+f 7816 1259 7817
+f 3458 3302 7817
+f 5778 3884 5764
+f 3397 1854 550
+f 382 383 5115
+f 1588 1775 470
+f 6637 7105 5756
+f 7215 6821 6676
+f 3881 8688 6946
+f 2313 4669 1566
+f 5114 7819 7818
+f 7821 7820 7822
+f 7822 4412 7823
+f 4412 5661 6720
+f 7823 4412 6720
+f 3415 7215 6666
+f 6964 6957 5413
+f 7038 5810 5334
+f 7238 6010 3355
+f 3904 8087 3970
+f 7925 7827 7896
+f 7900 7925 7896
+f 7927 8362 7827
+f 7925 7927 7827
+f 7830 7831 7904
+f 7831 7830 3358
+f 7893 7919 7894
+f 7833 7893 7894
+f 58 7923 5300
+f 7907 7834 7843
+f 7839 7893 7833
+f 7846 7946 7908
+f 3434 3433 7847
+f 7956 3417 7875
+f 7961 3730 7949
+f 8098 8039 8081
+f 7842 2386 7924
+f 68 7839 69
+f 7844 7839 68
+f 927 7862 7846
+f 7851 7847 3446
+f 4669 2313 3844
+f 8110 8140 8119
+f 8216 8128 8027
+f 8128 7897 8027
+f 1728 1316 1111
+f 5279 3704 1450
+f 7857 8026 8148
+f 7859 8039 8097
+f 8144 7856 7861
+f 3138 6985 553
+f 7990 7988 927
+f 7843 8123 7864
+f 8259 8243 8114
+f 3079 7867 3753
+f 3079 7907 7867
+f 7913 7868 2836
+f 7870 7871 7868
+f 7872 7832 7873
+f 5648 796 4839
+f 5326 8192 7875
+f 8192 5326 3390
+f 7838 7875 8160
+f 8152 7898 7722
+f 7877 7957 7837
+f 59 5300 7869
+f 7913 7870 7868
+f 7870 7878 7871
+f 7914 7947 7879
+f 7832 7872 8016
+f 7881 7888 8137
+f 7026 7330 8510
+f 7330 863 8105
+f 7824 3542 7922
+f 7858 7864 7884
+f 7887 8176 7888
+f 8283 7948 7889
+f 7947 7914 7905
+f 5242 2885 8230
+f 1379 967 1406
+f 1450 2164 5279
+f 7905 7914 7844
+f 7844 7915 7839
+f 7915 7918 7839
+f 7890 7921 7343
+f 7824 8112 8129
+f 7891 57 59
+f 7991 7895 7890
+f 7839 7918 7893
+f 3004 3003 1546
+f 5577 5565 5569
+f 5061 3572 8290
+f 8003 7919 7893
+f 7919 7900 7894
+f 7895 7921 7890
+f 7899 7896 7958
+f 8259 8130 3954
+f 3648 7824 8129
+f 7894 7899 78
+f 7980 7925 7900
+f 7213 8206 7901
+f 8206 6815 7901
+f 7928 7828 8362
+f 7927 7928 8362
+f 72 8146 71
+f 5633 8146 72
+f 7964 5633 72
+f 7696 7891 7845
+f 5633 7964 7902
+f 7928 7829 7828
+f 1776 4267 4382
+f 3736 8032 4125
+f 6024 6201 8697
+f 8014 7071 7664
+f 7898 8014 7664
+f 1685 1816 1322
+f 3205 7903 1704
+f 3753 7867 7765
+f 7903 7906 1704
+f 3317 4150 5758
+f 4287 5170 1545
+f 3392 3293 5912
+f 8567 1209 3947
+f 3673 3805 2019
+f 5633 7902 7906
+f 7903 5633 7906
+f 69 7839 7833
+f 7961 7949 7909
+f 8646 687 2532
+f 7840 7841 7848
+f 7879 7947 4176
+f 519 7910 4073
+f 4839 2234 4073
+f 7910 7911 6279
+f 168 1480 3598
+f 289 3728 508
+f 79 7844 68
+f 5730 3319 7973
+f 10 8 7883
+f 518 4073 4161
+f 519 7911 7910
+f 3700 730 3701
+f 5833 3701 730
+f 5859 4719 5920
+f 2836 7868 3172
+f 8042 7912 8001
+f 343 7913 2836
+f 7975 7878 7870
+f 7976 7914 7879
+f 7878 7976 7879
+f 7977 7915 7844
+f 7914 7977 7844
+f 5081 7911 519
+f 564 3700 7911
+f 5081 564 7911
+f 3700 564 730
+f 7918 8003 7893
+f 7919 7978 7900
+f 8063 8064 8085
+f 8243 8276 8114
+f 4125 8032 4212
+f 1020 3700 3701
+f 5127 1204 1203
+f 7978 7980 7900
+f 7926 7927 7925
+f 8385 8110 8024
+f 7213 7901 4231
+f 7981 7829 7928
+f 7932 7904 7829
+f 7981 7932 7829
+f 7932 3195 7830
+f 7904 7932 7830
+f 7905 7844 79
+f 7880 8016 7935
+f 7937 7938 7684
+f 7880 7935 8053
+f 7948 7880 8053
+f 1752 1885 7873
+f 1704 7965 2462
+f 5343 4661 1799
+f 7912 3207 4992
+f 8128 7920 7897
+f 7937 8265 7938
+f 8265 2386 7938
+f 56 7891 7696
+f 7940 56 7696
+f 7697 7859 8199
+f 3436 3721 3722
+f 8064 7528 8085
+f 8015 7872 7917
+f 8259 8114 8130
+f 7872 8015 8016
+f 7943 7343 7889
+f 8098 7908 7946
+f 7992 7890 7943
+f 7837 7957 3548
+f 727 1189 2527
+f 7963 3207 3451
+f 7957 7996 7865
+f 7889 7948 8247
+f 7940 7696 8018
+f 8187 27 34
+f 7950 77 7951
+f 7853 27 8471
+f 56 57 7891
+f 77 7950 60
+f 7872 7873 7917
+f 7945 7877 7837
+f 8075 7957 7877
+f 8075 29 7996
+f 7996 29 28
+f 7908 8098 7953
+f 7896 7895 7999
+f 5004 5046 3581
+f 7835 2532 7954
+f 7895 7998 7999
+f 7890 7343 7943
+f 8081 7779 7953
+f 3548 8259 3319
+f 7838 8160 7949
+f 8099 4059 3642
+f 7955 8147 7780
+f 8044 8099 3642
+f 4059 7955 8037
+f 7854 7853 8471
+f 7862 7942 7946
+f 7991 7890 7992
+f 7956 3433 3417
+f 7958 7896 7999
+f 8075 7996 7957
+f 7895 7991 7998
+f 5730 7973 4089
+f 7849 3730 7961
+f 7899 7958 78
+f 8081 7945 7779
+f 7945 7837 7779
+f 8090 7849 7850
+f 7995 7960 4780
+f 5500 3266 8709
+f 319 5273 3574
+f 3926 8073 5389
+f 8092 7959 7
+f 7906 7902 7965
+f 1704 7906 7965
+f 7968 7859 8097
+f 60 7950 8162
+f 7966 60 8162
+f 1589 7913 343
+f 7997 7870 7913
+f 31 8075 8122
+f 7908 5730 7846
+f 8066 7983 7528
+f 7898 3727 3953
+f 7967 7851 7849
+f 8112 8090 7850
+f 343 2836 1352
+f 1507 5032 1508
+f 5477 7179 3574
+f 7179 7971 3595
+f 2096 8202 1970
+f 1919 1813 344
+f 7960 4089 4780
+f 8090 7967 7849
+f 1589 7997 7913
+f 7997 7975 7870
+f 7975 7976 7878
+f 7976 7977 7914
+f 8002 7915 7977
+f 8075 31 30
+f 8060 7918 7915
+f 8002 8060 7915
+f 8060 8003 7918
+f 8003 7978 7919
+f 6601 7963 1343
+f 483 821 2000
+f 2020 1759 3883
+f 4993 889 829
+f 5273 3579 5477
+f 3579 7993 5477
+f 5477 7993 7179
+f 3728 289 3729
+f 3434 7847 3475
+f 64 8207 63
+f 7851 7967 7847
+f 7926 7925 7980
+f 7926 7928 7927
+f 5947 6813 3266
+f 7862 7946 7846
+f 8016 7831 7832
+f 1980 3690 1673
+f 7904 7831 7880
+f 7856 4051 7861
+f 730 564 121
+f 5241 22 7989
+f 3501 7922 3542
+f 7993 8006 7971
+f 7179 7993 7971
+f 7971 8006 5340
+f 732 2581 776
+f 8083 7972 8086
+f 7984 7985 8086
+f 4089 7973 4780
+f 7986 3648 7841
+f 63 7987 6011
+f 7851 7838 3730
+f 7850 7961 7883
+f 11 7909 12
+f 7878 7879 4176
+f 7878 4176 7871
+f 7891 7869 7845
+f 7951 7952 7988
+f 7931 8029 7929
+f 7990 927 7995
+f 7963 3451 1343
+f 7850 7849 7961
+f 4287 5235 5170
+f 7943 7889 33
+f 7938 7676 7836
+f 3579 7112 7993
+f 2884 1210 1209
+f 5318 7652 5121
+f 6221 4344 5340
+f 4344 4276 5340
+f 3079 1882 8353
+f 7994 7990 7995
+f 3648 8129 7841
+f 7941 8100 7345
+f 28 4237 7996
+f 7802 4971 890
+f 1819 4155 550
+f 8054 7975 7997
+f 8000 7977 7976
+f 8000 8002 7977
+f 7998 7991 8069
+f 8119 8140 7930
+f 7930 8126 8118
+f 8015 7917 8080
+f 8061 8003 8060
+f 8061 8068 8003
+f 8003 8076 7978
+f 8077 7980 7978
+f 8076 8077 7978
+f 8077 8004 7980
+f 7992 7943 33
+f 74 7964 72
+f 5839 7765 1054
+f 7765 7884 1054
+f 4242 4211 4277
+f 7112 3578 3832
+f 7993 8005 8006
+f 8006 6221 5340
+f 4028 3705 5180
+f 2633 2575 2576
+f 7881 7887 7888
+f 7934 8008 8059
+f 3605 4384 7825
+f 8009 7926 7980
+f 8004 8009 7980
+f 8009 8011 7926
+f 7965 7902 8010
+f 7964 74 8296
+f 8011 7928 7926
+f 8011 8091 7928
+f 7902 8296 8010
+f 8012 7981 7928
+f 4992 7963 6601
+f 8091 8012 7928
+f 8096 7932 7981
+f 8012 8096 7981
+f 4992 6601 7698
+f 8014 8059 7071
+f 7855 3736 7856
+f 7876 7213 8190
+f 7948 8053 8247
+f 8052 7916 7924
+f 5648 4839 6279
+f 1759 1758 3883
+f 4118 6245 3168
+f 5588 5577 3906
+f 8006 8033 6221
+f 8033 8055 3166
+f 6221 8033 3166
+f 3166 8055 3354
+f 3996 4153 3354
+f 8020 7990 7994
+f 3079 8297 7907
+f 7851 3446 7956
+f 7902 7964 8296
+f 7849 7851 3730
+f 8106 3284 7863
+f 7996 7882 7865
+f 7996 4237 7882
+f 8 7959 7883
+f 7908 7779 5730
+f 4059 8037 8025
+f 3642 4059 8025
+f 8013 7026 8510
+f 7853 4237 9
+f 8112 7824 7922
+f 8297 7834 7907
+f 8028 8042 7834
+f 8297 8028 7834
+f 6815 7722 1644
+f 3730 7838 7949
+f 8030 8018 7916
+f 7855 8190 8032
+f 2858 4980 5087
+f 8005 8070 8006
+f 8006 8070 8033
+f 8055 8071 3354
+f 4299 4028 8507
+f 8230 2885 5265
+f 3242 5122 8680
+f 8045 8046 8020
+f 5 7840 7848
+f 8039 5820 8081
+f 8028 8378 8042
+f 6248 6249 1297
+f 8016 8229 7935
+f 8043 7997 1589
+f 7884 7864 4014
+f 3759 7684 7936
+f 3759 7936 2019
+f 8047 8046 8045
+f 5832 8373 8047
+f 8048 8049 5832
+f 8050 8049 8048
+f 8049 8373 5832
+f 7780 8049 8050
+f 8037 7780 8050
+f 7869 7891 59
+f 8023 2386 8265
+f 3482 8043 1589
+f 8043 8054 7997
+f 8311 7975 8054
+f 8041 7952 7951
+f 4944 5460 48
+f 8070 8093 8033
+f 8033 8093 8055
+f 8071 8072 3926
+f 8072 8073 3926
+f 2913 2832 1435
+f 8342 8056 7721
+f 6061 6904 6049
+f 8057 7992 2
+f 8311 8058 7975
+f 8058 7976 7975
+f 7992 33 2
+f 8200 8000 7976
+f 8058 8200 7976
+f 8059 504 7071
+f 19 7710 4653
+f 8000 8060 8002
+f 8015 8227 8229
+f 7988 7862 927
+f 8062 8063 8131
+f 8065 8066 7528
+f 8064 8065 7528
+f 8065 8067 8066
+f 8067 8082 8066
+f 8023 8052 2386
+f 8030 7916 8052
+f 8031 7951 77
+f 8061 8222 8068
+f 8069 7991 8057
+f 8282 7998 8069
+f 8093 8094 8055
+f 8055 8094 8071
+f 4947 8017 8038
+f 8068 8076 8003
+f 7999 7998 8428
+f 78 7958 66
+f 7999 8428 7958
+f 8078 8009 8004
+f 8077 8078 8004
+f 8009 8079 8011
+f 8031 8041 7951
+f 7991 7992 8057
+f 8064 5854 8065
+f 5854 6472 8067
+f 8016 8015 8229
+f 8227 8015 8080
+f 7860 7835 7954
+f 8082 8026 8066
+f 8140 8083 8084
+f 7528 8185 8085
+f 8084 8083 8086
+f 8101 8083 8140
+f 8082 8105 8026
+f 8633 8088 8089
+f 8661 8633 8089
+f 8661 8089 4122
+f 8079 8091 8011
+f 7989 1205 8008
+f 5951 8107 8070
+f 8070 8107 8093
+f 8094 8108 8071
+f 8108 8109 8071
+f 8109 8095 8072
+f 8071 8109 8072
+f 8072 8095 8073
+f 5563 5420 8073
+f 5036 4299 8507
+f 5518 8166 8171
+f 8113 8216 8143
+f 7965 8010 8309
+f 2697 4280 4343
+f 8646 2532 7835
+f 5409 1054 8035
+f 8042 8281 7912
+f 7965 8309 1321
+f 8097 8098 7946
+f 8098 8081 7953
+f 7852 7860 6186
+f 5820 7945 8081
+f 8051 8099 8044
+f 7884 8159 8035
+f 8126 8117 8118
+f 8208 8104 8103
+f 8105 8255 8007
+f 8255 7863 8007
+f 8255 8135 7863
+f 8167 8166 8144
+f 8135 8106 7863
+f 72 73 74
+f 8281 3207 7912
+f 8152 8180 7898
+f 5324 6282 5395
+f 8107 8173 8093
+f 8173 8124 8094
+f 8093 8173 8094
+f 8094 8124 8108
+f 8095 8139 8073
+f 8139 5563 8073
+f 1311 2993 1242
+f 8276 8113 8143
+f 8111 8205 8180
+f 7998 8282 8428
+f 4653 7825 3958
+f 7838 7851 7956
+f 7995 927 7960
+f 7907 7843 7858
+f 8029 7748 3644
+f 7867 7858 7884
+f 7985 8133 8086
+f 8103 5518 8116
+f 8102 8103 8116
+f 8102 8116 8132
+f 8119 7930 8118
+f 8168 8110 8119
+f 8104 8161 7974
+f 7941 7886 8100
+f 3970 8087 4086
+f 7985 8062 8133
+f 8066 8026 7857
+f 8123 7931 7929
+f 5951 8149 8107
+f 8108 8125 8109
+f 8109 8125 8095
+f 8158 5563 8139
+f 3337 8232 8224
+f 8111 5116 8205
+f 8129 7850 7959
+f 8129 8112 7850
+f 8161 8074 7974
+f 4436 2823 5273
+f 7956 7875 7838
+f 1660 5043 5040
+f 7779 7837 5730
+f 8363 7885 8361
+f 3954 6087 8106
+f 3954 8130 6087
+f 8131 8132 8133
+f 7966 8162 7923
+f 4905 4879 5148
+f 8117 8116 8189
+f 133 8142 8030
+f 7834 8042 7843
+f 8074 8136 8022
+f 8136 8137 8022
+f 8186 8134 6815
+f 8062 8131 8133
+f 8264 8127 5176
+f 8173 8155 8124
+f 8155 8156 8108
+f 8124 8155 8108
+f 8108 8156 8125
+f 8125 8174 8095
+f 8095 8174 8139
+f 1462 3543 8645
+f 8181 5281 7969
+f 8127 8236 8180
+f 8160 7875 8141
+f 7843 7931 8123
+f 58 7966 7923
+f 7912 4992 7698
+f 8142 76 7940
+f 3621 8144 7861
+f 32 31 8122
+f 7676 7842 4660
+f 7916 8188 8147
+f 8042 8001 7843
+f 5474 4248 4247
+f 4087 4758 8581
+f 6361 6329 5922
+f 251 5484 250
+f 251 4274 5484
+f 4274 251 4690
+f 5879 8149 4240
+f 8110 8168 8024
+f 6921 7304 3871
+f 8024 5200 3972
+f 3417 5326 7875
+f 8145 7855 7856
+f 6011 8040 8041
+f 8153 8264 8151
+f 8116 5518 7939
+f 3914 4653 3958
+f 5127 6692 1204
+f 2421 4656 1768
+f 8149 8182 8107
+f 8107 8182 8173
+f 8156 8183 8125
+f 8183 8174 8125
+f 8174 8157 8139
+f 8157 8158 8139
+f 1332 731 2830
+f 8123 7929 4087
+f 7951 7988 8162
+f 245 4327 4332
+f 8021 3204 7874
+f 7933 3605 7710
+f 4656 3390 1768
+f 8179 168 1430
+f 7305 8177 6487
+f 8164 8136 8074
+f 8165 8167 3621
+f 1419 1658 1950
+f 1753 475 1683
+f 8179 5310 169
+f 168 8179 169
+f 5310 3436 169
+f 63 6011 61
+f 8159 1156 8035
+f 6204 4320 1156
+f 8159 6204 1156
+f 6920 8168 6921
+f 1204 6692 8169
+f 7898 7664 3727
+f 8154 7860 7852
+f 8149 5879 8182
+f 8173 8194 8155
+f 8183 8156 8155
+f 8194 8183 8155
+f 8174 8196 8157
+f 8175 8158 8157
+f 8196 8175 8157
+f 8175 7969 8158
+f 8175 8181 7969
+f 8399 3648 7986
+f 7697 8039 7859
+f 7909 7949 13
+f 3605 7874 3204
+f 8311 8054 8043
+f 7875 8192 8141
+f 8168 8177 7304
+f 2587 3662 4742
+f 3390 4656 8192
+f 446 3750 750
+f 5232 5159 5318
+f 8066 7857 7983
+f 7941 8119 7886
+f 8217 8179 7826
+f 3579 3578 7112
+f 4247 5879 4385
+f 7885 6815 8206
+f 7852 6186 35
+f 8168 8119 7941
+f 5200 6920 3871
+f 5117 8484 7682
+f 5176 8180 8152
+f 5779 8038 8127
+f 8029 3644 7929
+f 8182 8193 8173
+f 8173 8193 8194
+f 8184 8174 8183
+f 8184 8196 8174
+f 8175 8197 8181
+f 3751 7970 3750
+f 8220 8123 4087
+f 8209 8208 8103
+f 7938 7842 7676
+f 7949 8160 13
+f 687 110 688
+f 7710 3605 7825
+f 8398 8058 8311
+f 8199 7859 7968
+f 2506 682 8325
+f 8350 2506 8325
+f 906 1842 2813
+f 6201 5403 8698
+f 8165 3621 8189
+f 245 4332 732
+f 8179 8217 5310
+f 7876 8190 3777
+f 5061 8290 5278
+f 8150 3777 8145
+f 8205 7682 7934
+f 7923 8163 8269
+f 8254 5176 8134
+f 8264 5779 8127
+f 7836 7676 8191
+f 8192 8646 7835
+f 8192 7835 7860
+f 3138 3234 6985
+f 8073 5420 5389
+f 5977 8182 5879
+f 8182 5977 8193
+f 8194 8210 8183
+f 8210 8211 8183
+f 8211 8184 8183
+f 8195 8196 8184
+f 8196 8212 8175
+f 8175 8212 8197
+f 8197 8213 8181
+f 8181 8213 5473
+f 5273 319 4436
+f 8078 3975 3959
+f 5905 8177 4026
+f 8200 8201 8000
+f 8201 8060 8000
+f 8022 8138 7974
+f 7916 7845 8188
+f 3750 7970 2096
+f 2096 7970 8202
+f 8202 8203 3337
+f 4457 8234 7826
+f 4183 2137 2216
+f 3721 4177 4219
+f 7885 8206 7213
+f 7929 5454 4758
+f 6920 6921 3871
+f 8178 8204 7933
+f 5779 6611 8038
+f 4648 4574 4083
+f 5977 8219 8193
+f 8193 8219 8194
+f 8194 8219 8210
+f 8212 8196 8195
+f 8212 8213 8197
+f 8213 5216 5473
+f 6791 7508 8384
+f 7856 3736 4051
+f 8329 8061 8060
+f 8201 8329 8060
+f 8008 6872 6614
+f 8329 8214 8061
+f 59 58 5300
+f 8177 7941 4026
+f 6309 7051 6339
+f 8223 553 3265
+f 8669 8680 5122
+f 6473 8596 3622
+f 8096 2948 2585
+f 5447 8019 4894
+f 2027 2028 8036
+f 7970 8203 8202
+f 8203 8232 3337
+f 4819 5051 4798
+f 459 5278 494
+f 1674 654 2564
+f 8180 8205 8014
+f 8217 8218 5310
+f 5177 8372 5201
+f 3146 3078 3103
+f 4087 7929 4758
+f 996 8178 8120
+f 15 6791 7897
+f 8038 4948 4947
+f 3905 5977 4248
+f 5977 3905 8219
+f 8219 8240 8210
+f 8240 8211 8210
+f 8195 8226 8212
+f 8212 8226 8213
+f 8213 890 5216
+f 8180 8014 7898
+f 7864 8220 4014
+f 8214 8222 8061
+f 8222 8076 8068
+f 19 4653 3353
+f 7682 7989 8008
+f 8222 8228 8076
+f 3595 3574 7179
+f 48 5460 55
+f 6339 7051 8223
+f 2948 8096 8246
+f 1590 415 1430
+f 4905 3958 4782
+f 8202 3337 630
+f 7970 8231 8203
+f 8232 8233 8224
+f 4177 5310 8218
+f 8189 6937 8100
+f 18 7933 7710
+f 8027 7897 4948
+f 7897 6791 3671
+f 7826 8234 8217
+f 5474 3905 4248
+f 3905 8238 8219
+f 8238 8239 8219
+f 8239 8240 8219
+f 8240 8241 8211
+f 8225 8184 8211
+f 8241 8225 8211
+f 8225 8195 8184
+f 8226 7802 8213
+f 6186 8121 8170
+f 6309 6308 7051
+f 24 6186 8170
+f 7682 8008 7934
+f 1250 23 5241
+f 8080 8397 8227
+f 5116 5117 7682
+f 8228 8077 8076
+f 8228 8078 8077
+f 3959 8079 8009
+f 8078 3959 8009
+f 7935 8229 8409
+f 5287 8230 8388
+f 1034 4528 5562
+f 3234 8231 6985
+f 8231 8249 8203
+f 8249 8250 8203
+f 8203 8250 8232
+f 8233 8251 4457
+f 8224 8233 4457
+f 8251 8234 4457
+f 8217 8234 8218
+f 8252 4177 8218
+f 4177 8252 3404
+f 1034 5562 521
+f 5460 47 55
+f 8134 5176 8152
+f 8220 4087 6204
+f 5108 1562 7192
+f 996 4979 8178
+f 3703 6473 3622
+f 8176 8151 5176
+f 3662 2587 2586
+f 8237 3905 5474
+f 3822 8422 8034
+f 8237 8238 3905
+f 8195 8267 8226
+f 8267 8258 8226
+f 8258 8242 7802
+f 8226 8258 7802
+f 2581 732 3173
+f 687 3561 2532
+f 2792 7206 2210
+f 2586 2810 3662
+f 7854 8471 8243
+f 8053 7935 8245
+f 3842 8091 8079
+f 7935 8409 8245
+f 8246 8012 8091
+f 3842 8246 8091
+f 8270 7051 6308
+f 8012 8246 8096
+f 7886 8117 8189
+f 7051 8248 8223
+f 8248 8284 3138
+f 8223 8248 3138
+f 8285 8260 3234
+f 8260 8261 8231
+f 8231 8261 8249
+f 8250 8262 8232
+f 8232 8262 8233
+f 8234 8263 8218
+f 8252 8253 3404
+f 8253 5357 3404
+f 8176 5176 8254
+f 7938 2386 7842
+f 7973 8135 8255
+f 7860 7954 6186
+f 8384 7723 5117
+f 8141 8192 7860
+f 8256 8238 8237
+f 8256 8277 8239
+f 8238 8256 8239
+f 8277 8266 8239
+f 8266 8240 8239
+f 8266 8278 8240
+f 8278 8241 8240
+f 8279 8225 8241
+f 8278 8279 8241
+f 8257 8195 8225
+f 8279 8257 8225
+f 8195 8257 8267
+f 3572 8242 8258
+f 8143 8216 6611
+f 8216 8027 6611
+f 7920 4035 26
+f 3548 7944 8259
+f 7944 7854 8243
+f 8053 8245 8247
+f 7952 7942 7862
+f 7988 7952 7862
+f 993 280 1147
+f 7051 8270 8248
+f 8261 8272 8249
+f 8272 8273 8250
+f 8249 8272 8250
+f 8250 8273 8262
+f 8262 8286 8233
+f 8286 8274 8251
+f 8233 8286 8251
+f 8251 8274 8234
+f 8234 8274 8263
+f 8263 8252 8218
+f 8275 5357 8253
+f 3171 634 3447
+f 8275 4563 5357
+f 7939 8165 8189
+f 7897 3671 4948
+f 5518 7892 8166
+f 8447 7937 7684
+f 4375 8256 8237
+f 8277 8288 8266
+f 8268 8258 8267
+f 8268 3572 8258
+f 8224 2092 3337
+f 8141 7860 8154
+f 7944 8243 8259
+f 3974 8057 2
+f 7957 7865 3548
+f 1885 8080 7917
+f 8269 8163 8046
+f 8270 8293 8248
+f 8248 8293 8284
+f 8260 8271 8261
+f 8271 8272 8261
+f 8273 8286 8262
+f 712 2542 5418
+f 7684 7836 1758
+f 8143 6611 5779
+f 8276 8143 5779
+f 6473 3703 5279
+f 863 7995 4780
+f 3061 7684 3759
+f 8447 8265 7937
+f 8417 8069 8057
+f 4374 8256 4375
+f 4374 5365 8277
+f 8256 4374 8277
+f 8288 8278 8266
+f 8257 8268 8267
+f 8280 3572 8268
+f 8280 8290 3572
+f 1775 3164 2416
+f 1451 640 701
+f 7845 4776 8188
+f 7994 7995 863
+f 7698 8029 7931
+f 8069 8417 8282
+f 8416 5820 8039
+f 8047 8269 8046
+f 8283 7880 7948
+f 7829 7904 7880
+f 3234 8260 8231
+f 4040 8292 8270
+f 8292 8318 8293
+f 8270 8292 8293
+f 8285 8304 8260
+f 8260 8304 8271
+f 8305 8306 8272
+f 8272 8306 8273
+f 8321 8287 8274
+f 8286 8321 8274
+f 8287 8294 8274
+f 8274 8294 8263
+f 8294 8308 8263
+f 8322 8252 8263
+f 8308 8322 8263
+f 8322 8253 8252
+f 8322 8275 8253
+f 3116 4563 8275
+f 8295 3116 8275
+f 8171 8167 8165
+f 8276 5779 8153
+f 6471 8045 7026
+f 7831 8016 7880
+f 7829 7880 8283
+f 5278 8290 8299
+f 8298 8277 5365
+f 8298 8288 8277
+f 8324 8278 8288
+f 8312 8279 8278
+f 8324 8312 8278
+f 8289 8257 8279
+f 8312 8289 8279
+f 8289 8313 8268
+f 8257 8289 8268
+f 8313 8280 8268
+f 7026 8020 7330
+f 66 7958 65
+f 7828 7829 8283
+f 7850 7883 7959
+f 7958 8207 65
+f 7 7959 8
+f 6307 8291 4040
+f 8291 8292 4040
+f 8293 8303 8284
+f 8303 8304 8285
+f 8284 8303 8285
+f 8271 8305 8272
+f 8306 8307 8273
+f 8273 8307 8286
+f 8287 8335 8294
+f 3354 4153 3166
+f 3273 3831 3982
+f 25 17 8172
+f 7939 8171 8165
+f 8178 1204 8169
+f 8130 8276 8153
+f 8045 8020 7026
+f 8142 8018 8030
+f 5365 678 679
+f 8353 8297 3079
+f 5265 2885 8328
+f 1315 1157 3768
+f 3190 8695 5303
+f 679 8298 5365
+f 8312 8313 8289
+f 8280 8299 8290
+f 473 416 3273
+f 3982 473 3273
+f 5307 5286 8314
+f 8047 8045 6471
+f 7330 8020 7994
+f 8023 8030 8052
+f 7958 8428 8207
+f 266 8300 5049
+f 8300 5207 5049
+f 5281 8181 5473
+f 938 8291 6307
+f 6734 5395 6282
+f 8291 8301 8292
+f 8301 8302 8292
+f 8292 8302 8318
+f 8318 8303 8293
+f 8319 8305 8271
+f 8304 8319 8271
+f 8321 8335 8287
+f 8335 8308 8294
+f 8295 8275 8322
+f 3571 2101 124
+f 6419 6367 4987
+f 8171 8166 8167
+f 3433 7956 3446
+f 8148 8074 8161
+f 4781 7973 8255
+f 8310 8311 8043
+f 8338 8298 679
+f 5278 8299 494
+f 8338 8288 8298
+f 8338 8324 8288
+f 8339 8313 8312
+f 8280 8313 8299
+f 1321 8309 1684
+f 8316 8058 8398
+f 7721 8056 7709
+f 8056 8315 204
+f 7709 8056 204
+f 204 8315 266
+f 266 8315 8300
+f 8300 5224 5207
+f 4354 4860 4330
+f 8316 8200 8058
+f 2495 3876 1622
+f 938 8317 8291
+f 8291 8317 8301
+f 8301 8330 8302
+f 8302 8330 8318
+f 8318 8331 8303
+f 8303 8319 8304
+f 8319 8320 8305
+f 8305 8333 8306
+f 8334 8307 8306
+f 8307 8334 8286
+f 8286 8334 8321
+f 8321 8347 8335
+f 8335 8336 8308
+f 8337 8322 8308
+f 8323 8295 8322
+f 7970 6985 8231
+f 7892 8150 8166
+f 8178 8169 8204
+f 4818 8087 3904
+f 8142 7940 8018
+f 7907 7858 7867
+f 8326 8201 8200
+f 3542 3540 3501
+f 8324 8339 8312
+f 8313 8325 8299
+f 5832 8047 6471
+f 62 8041 8031
+f 8040 7942 7952
+f 8230 5287 5260
+f 8342 8352 8056
+f 8352 8327 8315
+f 8056 8352 8315
+f 8315 8327 8300
+f 8327 8328 5224
+f 8300 8327 5224
+f 8703 2858 5087
+f 5224 8328 2885
+f 4780 7973 4781
+f 3541 3647 4972
+f 8400 8329 8201
+f 8326 8400 8201
+f 8317 938 5381
+f 4860 4354 5717
+f 8317 8330 8301
+f 8345 8331 8318
+f 8330 8345 8318
+f 8331 8355 8303
+f 8355 8332 8319
+f 8303 8355 8319
+f 8319 8332 8320
+f 8305 8320 8333
+f 8333 8346 8306
+f 8306 8346 8334
+f 8334 8347 8321
+f 8359 8337 8308
+f 8337 8323 8322
+f 5177 8295 8323
+f 8121 8178 7933
+f 8116 7939 8189
+f 4086 8087 3972
+f 8214 8340 8222
+f 6037 8342 7721
+f 3753 1882 3079
+f 8348 8338 4123
+f 8351 8313 8339
+f 8313 8351 8325
+f 2792 8437 7206
+f 8040 7952 8041
+f 8177 8168 7941
+f 6834 334 7613
+f 8352 8365 8327
+f 8365 8328 8327
+f 3958 4905 5170
+f 8343 8228 8222
+f 8340 8343 8222
+f 5381 8379 8317
+f 8379 8344 8317
+f 8317 8344 8330
+f 8344 8345 8330
+f 8355 8356 8332
+f 8332 8357 8320
+f 8320 8367 8333
+f 8346 8358 8334
+f 8334 8358 8347
+f 8347 8368 8335
+f 8368 8336 8335
+f 8336 8359 8308
+f 8372 8323 8337
+f 8372 5177 8323
+f 7974 3777 8150
+f 7892 7974 8150
+f 8170 8121 7933
+f 8176 8254 7888
+f 8361 7885 7213
+f 8343 3293 8228
+f 2485 1266 4080
+f 7917 7873 1885
+f 2675 2633 8348
+f 8348 8349 8338
+f 8349 8324 8338
+f 2576 8339 8324
+f 8349 2576 8324
+f 8350 8351 8339
+f 2576 8350 8339
+f 558 8325 590
+f 2806 6420 6393
+f 7968 7946 7942
+f 7968 8097 7946
+f 7973 3954 8135
+f 5959 8489 5979
+f 8374 8341 7683
+f 8364 8374 7683
+f 8375 8342 8341
+f 8374 8375 8341
+f 8375 8352 8342
+f 8376 8365 8352
+f 1419 872 1658
+f 2189 199 190
+f 5381 5380 4101
+f 3494 3842 3959
+f 5381 4101 8379
+f 8379 8354 8344
+f 8354 8366 8345
+f 8344 8354 8345
+f 8366 8331 8345
+f 8356 8357 8332
+f 8357 8367 8320
+f 8358 8383 8347
+f 8383 8368 8347
+f 8368 8369 8336
+f 8336 8369 8359
+f 8370 8337 8359
+f 8371 8372 8337
+f 2164 3791 5279
+f 7982 8360 5197
+f 7723 25 8172
+f 8007 7881 8164
+f 8007 7863 7881
+f 7106 8101 8087
+f 8025 8037 8050
+f 8039 8098 8097
+f 1334 2885 5242
+f 7828 8283 8362
+f 7953 7779 7908
+f 133 75 81
+f 2633 8349 8348
+f 2633 2576 8349
+f 7873 3358 2388
+f 8351 8350 8325
+f 7884 4014 8159
+f 566 7877 7945
+f 8399 7986 7840
+f 8040 7968 7942
+f 8463 7480 6191
+f 5349 8364 5350
+f 8377 5265 8365
+f 5535 5531 6858
+f 3842 2456 8246
+f 7827 8362 7921
+f 2542 712 804
+f 8354 8389 8366
+f 8366 8380 8331
+f 8331 8380 8355
+f 8380 8381 8356
+f 8355 8380 8356
+f 8356 8381 8357
+f 8381 8393 8357
+f 8357 8393 8367
+f 8367 8382 8333
+f 8333 8382 8346
+f 8368 8408 8369
+f 8369 8370 8359
+f 585 586 4374
+f 7974 8138 3777
+f 8101 7106 8083
+f 4818 7106 8087
+f 7106 7972 8083
+f 8088 8051 7972
+f 8051 8044 8221
+f 8363 8186 7885
+f 7831 3358 7832
+f 4781 8255 8105
+f 8032 3882 4212
+f 2654 2633 2675
+f 566 8122 7877
+f 985 1043 1323
+f 5841 3001 5106
+f 8122 8075 7877
+f 8106 6087 3284
+f 7920 15 7897
+f 8373 8269 8047
+f 7663 8463 5935
+f 4230 7663 5935
+f 8387 8364 5349
+f 8386 8387 5349
+f 8387 8374 8364
+f 8387 8375 8374
+f 8404 8352 8375
+f 8404 8376 8352
+f 8377 8365 8376
+f 8406 5265 8377
+f 5265 8406 8388
+f 4100 5353 4101
+f 4101 5353 8379
+f 8379 8389 8354
+f 8389 8390 8366
+f 8366 8390 8380
+f 8380 8391 8381
+f 8393 8395 8367
+f 8395 8382 8367
+f 8382 8383 8358
+f 8346 8382 8358
+f 8383 8408 8368
+f 8408 8414 8369
+f 8369 8414 8370
+f 8370 8371 8337
+f 8371 8396 8372
+f 8396 5201 8372
+f 7972 8221 8086
+f 8089 8088 4818
+f 8088 7972 7106
+f 8051 8221 7972
+f 30 29 8075
+f 566 7945 5820
+f 864 4993 3210
+f 8378 8281 8042
+f 4653 4063 3353
+f 8103 8104 5518
+f 8178 4979 1204
+f 7722 6726 1644
+f 1205 3895 6872
+f 8059 8008 6614
+f 8008 1205 6872
+f 8065 5854 8067
+f 8401 8386 3757
+f 8403 8375 8387
+f 8403 8404 8375
+f 8405 8377 8376
+f 8404 8405 8376
+f 8503 5234 8497
+f 4987 6367 8379
+f 5353 4987 8379
+f 8379 6367 8389
+f 8390 8391 8380
+f 8391 8392 8381
+f 8381 8392 8393
+f 8393 8394 8395
+f 8395 8424 8382
+f 8382 8424 8383
+f 8383 8413 8408
+f 8371 8426 8396
+f 2483 2482 6739
+f 4161 4073 933
+f 4879 3204 8021
+f 7304 8177 7305
+f 8026 8164 8074
+f 8088 7106 4818
+f 7841 8129 7959
+f 7841 8092 6
+f 7848 7841 6
+f 4081 4824 3444
+f 7710 19 18
+f 7987 8199 8040
+f 8199 7968 8040
+f 8310 8398 8311
+f 8459 8200 8316
+f 8581 8459 8316
+f 8460 8326 8200
+f 8459 8460 8200
+f 8460 8400 8326
+f 8402 8386 8401
+f 8402 8387 8386
+f 8420 8404 8403
+f 8405 8406 8377
+f 8411 8388 8406
+f 8388 8411 8314
+f 6367 6393 6420
+f 8400 8214 8329
+f 6367 6420 8389
+f 6421 446 6422
+f 6420 8407 8390
+f 8389 6420 8390
+f 8390 8407 8391
+f 8407 8412 8391
+f 8391 8412 8392
+f 8395 8394 8424
+f 8424 8413 8383
+f 8414 8415 8370
+f 8370 8415 8371
+f 8396 3210 5201
+f 6594 2482 6613
+f 7825 4782 3958
+f 8440 5113 5046
+f 8026 8074 8148
+f 8221 7984 8086
+f 7984 7461 7985
+f 4122 8089 4099
+f 7922 8090 8112
+f 8227 8399 8229
+f 8598 8343 8340
+f 3 8247 8245
+f 8227 8397 8399
+f 8598 5912 8343
+f 8418 8401 7444
+f 7283 8418 7444
+f 8418 8402 8401
+f 8419 8387 8402
+f 8430 8420 8403
+f 8420 8405 8404
+f 8421 8406 8405
+f 8421 8411 8406
+f 8411 1863 8314
+f 8314 1863 5324
+f 5912 3293 8343
+f 2806 8034 8407
+f 6420 2806 8407
+f 8412 8432 8392
+f 8433 8393 8392
+f 8433 8434 8394
+f 8393 8433 8394
+f 8423 8424 8394
+f 8413 8443 8408
+f 8408 8443 8414
+f 8415 8444 8371
+f 8371 8444 8426
+f 8426 8427 8396
+f 8427 8446 3210
+f 8396 8427 3210
+f 5013 8479 7982
+f 3500 3475 7847
+f 7461 8062 7985
+f 8282 8417 7697
+f 8417 8057 8416
+f 7841 7959 8092
+f 8410 2 1
+f 7479 8418 7283
+f 8430 8403 8387
+f 8419 8430 8387
+f 8430 8451 8420
+f 8420 8421 8405
+f 8421 1863 8411
+f 8034 8422 8407
+f 8407 8422 8412
+f 8422 8431 8412
+f 8412 8431 8432
+f 8423 8394 8434
+f 8443 8415 8414
+f 8444 8425 8426
+f 7857 8148 8161
+f 7866 8063 8062
+f 8282 7697 8428
+f 16 7933 18
+f 7922 3500 7967
+f 8090 7922 7967
+f 8416 8057 3974
+f 3974 2 8410
+f 8296 74 75
+f 133 8296 75
+f 7900 7896 7899
+f 7480 8448 7479
+f 8448 8418 7479
+f 8448 8438 8418
+f 8438 8402 8418
+f 8477 8421 8420
+f 4816 3981 4716
+f 3284 7887 7881
+f 8442 8424 8423
+f 8442 8413 8424
+f 8413 8442 8443
+f 8457 8415 8443
+f 8468 8444 8415
+f 8444 8469 8425
+f 8425 8445 8427
+f 8426 8425 8427
+f 8445 8446 8427
+f 8534 8567 3947
+f 8314 5324 5307
+f 1210 1165 1209
+f 7461 7866 8062
+f 7866 3585 8063
+f 7858 7843 7864
+f 3703 6601 3704
+f 7986 7841 7840
+f 8435 8028 8297
+f 2587 8378 8028
+f 2587 4742 8378
+f 8010 8436 8437
+f 8309 8010 8437
+f 6921 8168 7304
+f 6998 6037 7721
+f 7698 7748 8029
+f 6601 3703 7748
+f 1684 8309 8437
+f 8449 8419 8402
+f 8438 8449 8402
+f 8449 8430 8419
+f 8450 8476 8430
+f 8449 8450 8430
+f 8476 8451 8430
+f 8477 8420 8451
+f 8439 8421 8477
+f 8439 1863 8421
+f 8439 6282 1863
+f 3751 6985 7970
+f 6998 7721 206
+f 6087 8176 7887
+f 8422 3822 8431
+f 8454 8432 8431
+f 8454 8392 8432
+f 8392 8454 8433
+f 8454 8466 8433
+f 8466 8434 8433
+f 8441 8442 8423
+f 8442 8456 8443
+f 8457 8468 8415
+f 3585 8064 8063
+f 7987 8040 6011
+f 8296 133 8436
+f 8010 8296 8436
+f 8036 8043 3482
+f 2027 8036 3482
+f 8036 8310 8043
+f 8568 8398 8310
+f 8464 8448 7480
+f 8463 8464 7480
+f 8448 8473 8438
+f 8473 8449 8438
+f 8474 8450 8449
+f 8451 8476 8477
+f 8452 8439 8477
+f 8579 8316 8398
+f 8568 8579 8398
+f 8579 8581 8316
+f 8205 7934 8014
+f 4805 8431 3822
+f 6998 2468 6037
+f 8431 8453 8454
+f 7982 8423 8434
+f 7982 8441 8423
+f 8467 8442 8441
+f 8467 8456 8442
+f 8443 8456 8457
+f 8468 8469 8444
+f 8469 8445 8425
+f 8445 7778 8446
+f 8162 7988 5634
+f 1684 8437 506
+f 8458 8459 8581
+f 8462 8400 8460
+f 4895 5136 4366
+f 8472 8448 8464
+f 8472 8473 8448
+f 8481 8449 8473
+f 8474 8500 8450
+f 8482 8477 8476
+f 6151 4716 5393
+f 8452 6734 8439
+f 890 8213 7802
+f 5395 5325 5324
+f 4081 3444 7061
+f 8462 8465 8400
+f 8465 8214 8400
+f 1279 962 1724
+f 8431 4805 8453
+f 8453 8478 8454
+f 8478 8455 8454
+f 8455 8466 8454
+f 7982 8434 8466
+f 8507 8456 8467
+f 8456 8468 8457
+f 8469 8470 8445
+f 8445 8470 7778
+f 1368 1311 1242
+f 7857 8161 8208
+f 2210 7206 8447
+f 8243 8471 8276
+f 2210 8447 3061
+f 8214 8597 8340
+f 8597 8598 8340
+f 8480 8463 7663
+f 156 8480 7663
+f 8480 8464 8463
+f 8480 8472 8464
+f 8481 8474 8449
+f 8475 8476 8450
+f 8500 8475 8450
+f 3896 6734 8452
+f 8360 8466 8455
+f 174 3444 4824
+f 4824 4081 6690
+f 8479 8441 7982
+f 8483 8468 8456
+f 8468 8498 8469
+f 8469 8498 8470
+f 8645 5150 1462
+f 8436 8030 8235
+f 7528 7983 8209
+f 4384 3605 3204
+f 1343 914 1450
+f 3580 4767 343
+f 121 122 5833
+f 5841 6494 6486
+f 6494 5841 7665
+f 5951 8005 3957
+f 5267 5159 5236
+f 8489 8490 156
+f 8490 8480 156
+f 8491 8473 8472
+f 8491 8481 8473
+f 8493 8476 8475
+f 8493 8482 8476
+f 8482 8452 8477
+f 8494 3896 8452
+f 6734 3896 7732
+f 3896 7730 7732
+f 7730 8496 7731
+f 8496 8497 7755
+f 7731 8496 7755
+f 5234 7755 8497
+f 726 716 3051
+f 5233 5234 5267
+f 5159 5232 5236
+f 5203 314 382
+f 7748 3703 3622
+f 5868 5285 5284
+f 216 319 3574
+f 8479 8467 8441
+f 8468 8483 8498
+f 8470 8509 7778
+f 7102 5381 937
+f 4947 5116 8017
+f 4947 8384 5116
+f 7676 8198 8191
+f 7857 8208 7983
+f 8185 7528 8209
+f 8244 8013 8082
+f 8067 8244 8082
+f 8254 8134 8186
+f 8014 7934 8059
+f 8362 7889 7343
+f 8485 8486 5771
+f 5771 8486 5074
+f 8486 8487 5074
+f 5074 8487 5920
+f 8487 8488 7647
+f 5920 8487 7647
+f 7647 8488 8489
+f 8490 8515 8480
+f 8491 8472 8480
+f 8515 8491 8480
+f 8491 8492 8481
+f 8499 8474 8481
+f 8492 8499 8481
+f 8499 8500 8474
+f 8482 8494 8452
+f 8495 3896 8494
+f 8495 8496 7730
+f 3896 8495 7730
+f 726 3052 1812
+f 726 3051 3052
+f 8503 8504 5159
+f 5267 8503 5159
+f 8504 8505 5318
+f 5159 8504 5318
+f 8505 8506 7652
+f 6087 8130 8176
+f 8507 8467 8479
+f 8518 8456 8507
+f 8518 8483 8456
+f 8519 8509 8498
+f 8498 8509 8470
+f 8215 8361 7876
+f 8138 8215 7876
+f 8001 7698 7931
+f 8049 8429 8373
+f 8020 5634 7990
+f 8512 8485 4127
+f 8511 8512 4127
+f 8485 8512 8486
+f 8512 8513 8486
+f 8520 8487 8486
+f 8513 8520 8486
+f 8520 8488 8487
+f 8514 8489 8488
+f 8514 8490 8489
+f 8514 8523 8490
+f 8538 8492 8491
+f 8524 8499 8492
+f 8501 8482 8493
+f 8516 8494 8482
+f 8516 8495 8494
+f 8495 8502 8496
+f 8502 8497 8496
+f 8502 8529 8497
+f 8529 8503 8497
+f 8530 8504 8503
+f 8506 5270 7652
+f 8046 5634 8020
+f 5394 7732 5449
+f 796 2234 4839
+f 8518 8508 8483
+f 8483 8508 8498
+f 8498 8508 8519
+f 8038 8017 8236
+f 8085 8185 8131
+f 7825 4384 4782
+f 8087 8385 3972
+f 8191 8099 8051
+f 8521 8514 8488
+f 8515 8538 8491
+f 8561 8492 8538
+f 8561 8524 8492
+f 8539 8499 8524
+f 8539 8525 8499
+f 8525 8500 8499
+f 8526 8475 8500
+f 8525 8526 8500
+f 8526 8493 8475
+f 8526 8501 8493
+f 8528 8495 8516
+f 8517 8502 8495
+f 8528 8517 8495
+f 8529 8530 8503
+f 8532 8504 8530
+f 8532 8505 8504
+f 8505 8532 8506
+f 8532 8533 5270
+f 8506 8532 5270
+f 3733 7292 3875
+f 5418 2542 2541
+f 7765 7867 7884
+f 8088 8191 8051
+f 8545 8518 8507
+f 8519 8534 8509
+f 8086 8133 8126
+f 8013 8510 8082
+f 8134 8152 7722
+f 8510 7330 8105
+f 4193 8511 4192
+f 8535 8512 8511
+f 4193 8535 8511
+f 8547 8513 8512
+f 8535 8547 8512
+f 8521 8488 8520
+f 8537 8514 8521
+f 8522 8523 8514
+f 8537 8522 8514
+f 8523 8515 8490
+f 8550 8538 8515
+f 41 8482 8501
+f 8527 8516 8482
+f 41 8527 8482
+f 8543 8528 8516
+f 8527 8543 8516
+f 8531 8532 8530
+f 8533 8544 2111
+f 5270 8533 2111
+f 8204 8169 8021
+f 69 7833 67
+f 67 7833 7894
+f 8100 6937 7345
+f 7869 5300 8269
+f 4028 8545 8507
+f 8545 8566 8518
+f 8518 8566 8508
+f 8508 8546 8519
+f 8519 8546 8534
+f 8534 3947 8509
+f 3947 1131 8509
+f 8204 3605 7933
+f 8038 8236 8127
+f 8236 8111 8180
+f 7508 7723 8384
+f 8536 8520 8513
+f 8547 8536 8513
+f 8559 8521 8520
+f 8549 8523 8522
+f 8537 8549 8522
+f 8549 8515 8523
+f 8540 8526 8525
+f 8540 8541 8526
+f 8542 8501 8526
+f 8541 8542 8526
+f 8542 41 8501
+f 8553 8527 41
+f 8553 8543 8527
+f 8502 8562 8529
+f 8562 8530 8529
+f 8577 8533 8532
+f 8531 8577 8532
+f 8446 909 864
+f 8440 5004 8613
+f 4742 3662 2683
+f 8084 8086 8126
+f 7930 8084 8126
+f 5116 7682 8205
+f 8026 8105 8164
+f 8105 8007 8164
+f 7947 7905 70
+f 8146 7947 70
+f 7827 7921 7896
+f 8556 8535 4193
+f 8556 8547 8535
+f 8536 8559 8520
+f 8548 8537 8521
+f 8559 8548 8521
+f 8572 8549 8537
+f 8560 8515 8549
+f 8560 8550 8515
+f 8551 8538 8550
+f 8551 8561 8538
+f 8539 8540 8525
+f 8552 8541 8540
+f 37 8542 8541
+f 8552 37 8541
+f 37 39 8542
+f 39 41 8542
+f 8592 8562 8502
+f 8563 8531 8530
+f 8562 8563 8530
+f 8565 8544 8533
+f 8577 8565 8533
+f 8565 8554 5447
+f 8544 8565 5447
+f 8554 8019 5447
+f 3705 4028 4956
+f 6815 1644 4077
+f 4176 7947 8146
+f 8388 8230 5265
+f 4028 8566 8545
+f 8566 8580 8508
+f 8508 8580 8546
+f 8546 8580 8534
+f 5420 5563 4198
+f 8361 7888 8363
+f 7888 8254 8186
+f 8385 8024 3972
+f 8140 8084 7930
+f 8082 8510 8105
+f 6472 8013 8244
+f 3777 8138 7876
+f 7921 8362 7343
+f 4211 8297 8353
+f 4375 5474 5459
+f 4211 8435 8297
+f 8555 4193 5406
+f 8582 8555 5406
+f 8555 8556 4193
+f 8557 8547 8556
+f 8557 8569 8547
+f 8569 8536 8547
+f 8569 8558 8536
+f 8558 8559 8536
+f 8548 8572 8537
+f 8572 8560 8549
+f 8560 8551 8550
+f 8607 8561 8551
+f 8573 8539 8524
+f 8561 8573 8524
+f 8573 8574 8539
+f 8575 8540 8539
+f 8574 8575 8539
+f 38 8552 8540
+f 8575 38 8540
+f 38 37 8552
+f 40 8553 41
+f 40 8576 8553
+f 8576 8543 8553
+f 8543 8517 8528
+f 8517 8592 8502
+f 8563 8564 8531
+f 8564 8577 8531
+f 7722 7898 6726
+f 8479 5013 5036
+f 6909 5380 7135
+f 8580 8567 8534
+f 7304 8115 3871
+f 7888 8186 8363
+f 8087 8101 8385
+f 8059 6614 504
+f 8035 8568 8310
+f 8555 8616 8556
+f 8616 8557 8556
+f 8570 8559 8558
+f 8571 8548 8559
+f 8570 8571 8559
+f 8607 8573 8561
+f 36 38 8575
+f 8590 8543 8576
+f 8590 8517 8543
+f 8590 8591 8517
+f 8592 8563 8562
+f 8592 8610 8563
+f 8610 8564 8563
+f 8611 8577 8564
+f 8578 8565 8577
+f 8578 8554 8565
+f 5004 8019 8554
+f 4765 240 4756
+f 7855 8032 3736
+f 7682 5241 7989
+f 6204 8581 8579
+f 4028 5180 8566
+f 5180 8593 8580
+f 8566 5180 8580
+f 8567 8595 1209
+f 2675 8348 2541
+f 8110 8101 8140
+f 8458 8460 8459
+f 8599 8555 8582
+f 8599 8616 8555
+f 8600 8557 8616
+f 8583 8569 8557
+f 8600 8583 8557
+f 8584 8558 8569
+f 8583 8584 8569
+f 8584 8570 8558
+f 8584 8585 8570
+f 8585 8571 8570
+f 8585 8586 8571
+f 8587 8548 8571
+f 8586 8587 8571
+f 82 8572 8548
+f 8587 82 8548
+f 82 8588 8572
+f 8588 8605 8572
+f 8606 8560 8572
+f 8605 8606 8572
+f 8606 8551 8560
+f 8608 8573 8607
+f 8589 8574 8573
+f 8608 8589 8573
+f 54 8575 8574
+f 8589 54 8574
+f 54 36 8575
+f 42 8609 8590
+f 8576 42 8590
+f 8591 8592 8517
+f 8611 8578 8577
+f 8612 8554 8578
+f 8612 8613 5004
+f 8554 8612 5004
+f 7950 7951 8162
+f 2833 6537 1536
+f 8458 8462 8460
+f 5046 5004 8440
+f 2831 8593 5180
+f 8593 8594 8567
+f 8580 8593 8567
+f 8567 8594 8595
+f 8595 2884 1209
+f 7982 8466 8360
+f 3701 4984 1020
+f 8133 8117 8126
+f 8101 8110 8385
+f 8135 3954 8106
+f 451 7320 1588
+f 3648 8397 3647
+f 8596 8214 8465
+f 8596 8597 8214
+f 8615 8582 5870
+f 4245 8615 5870
+f 8615 8599 8582
+f 8601 8583 8600
+f 8617 8584 8583
+f 8601 8617 8583
+f 8617 8602 8584
+f 8602 8585 8584
+f 8602 8603 8585
+f 8603 8586 8585
+f 8604 8587 8586
+f 8603 8604 8586
+f 83 82 8587
+f 8604 83 8587
+f 8620 8606 8605
+f 8606 8607 8551
+f 43 8609 42
+f 8609 8591 8590
+f 8629 8592 8591
+f 8630 8610 8592
+f 8610 8611 8564
+f 8611 8612 8578
+f 5197 5013 7982
+f 3595 7971 3853
+f 3699 4081 4080
+f 3777 8190 7855
+f 60 7966 58
+f 2884 1235 1210
+f 8614 8621 8594
+f 8593 8614 8594
+f 8621 8622 8595
+f 8594 8621 8595
+f 8595 8622 2884
+f 4972 8397 8080
+f 3581 8019 5004
+f 8133 8132 8117
+f 8185 8102 8132
+f 7894 7900 7899
+f 8435 2587 8028
+f 8623 8599 8615
+f 8623 8616 8599
+f 8634 8600 8616
+f 8625 8601 8600
+f 8634 8625 8600
+f 8625 8617 8601
+f 8618 8603 8602
+f 8618 8604 8603
+f 8619 83 8604
+f 8618 8619 8604
+f 8619 84 83
+f 8620 8605 8588
+f 8639 8606 8620
+f 8640 8607 8606
+f 8639 8640 8606
+f 8629 8630 8592
+f 8630 8631 8610
+f 8631 8611 8610
+f 8644 8612 8611
+f 8652 8613 8612
+f 8644 8652 8612
+f 7962 8440 8613
+f 8652 7962 8613
+f 8134 7722 6815
+f 8397 4972 3647
+f 8325 558 8299
+f 8593 2831 8614
+f 5150 8645 8614
+f 8645 8621 8614
+f 8621 8632 8622
+f 8209 8103 8102
+f 8471 8113 8276
+f 8397 3648 8399
+f 8624 8616 8623
+f 8624 8634 8616
+f 8626 8602 8617
+f 8625 8626 8617
+f 8627 8618 8602
+f 8626 8627 8602
+f 8627 8637 8618
+f 8637 8619 8618
+f 85 84 8619
+f 97 8639 8620
+f 8608 8628 8589
+f 8589 8628 53
+f 8650 8591 8609
+f 8641 8629 8591
+f 8631 8643 8611
+f 8643 8644 8611
+f 7936 7684 1758
+f 8633 8191 8088
+f 6011 8041 62
+f 8245 8409 4
+f 8645 8632 8621
+f 8622 8632 2884
+f 8185 8209 8102
+f 1 566 8410
+f 3061 8447 7684
+f 5234 8503 5267
+f 8663 8623 8615
+f 4263 8663 8615
+f 8654 8625 8634
+f 8654 8635 8625
+f 8635 8636 8626
+f 8625 8635 8626
+f 8636 8647 8626
+f 8656 8627 8626
+f 8647 8656 8626
+f 8648 8637 8627
+f 8656 8648 8627
+f 8638 85 8619
+f 8637 8638 8619
+f 8638 86 85
+f 96 8639 97
+f 8640 8608 8607
+f 8666 8609 43
+f 8666 8650 8609
+f 8651 8591 8650
+f 8651 8641 8591
+f 8641 8630 8629
+f 8642 8631 8630
+f 8642 8643 8631
+f 7837 3548 3319
+f 2111 5447 4698
+f 8645 7246 8632
+f 1767 3390 3403
+f 8137 7888 8361
+f 7923 8162 8163
+f 7824 3647 3542
+f 4656 8646 8192
+f 2386 8052 7924
+f 7916 8147 7924
+f 8663 8624 8623
+f 8653 8634 8624
+f 8653 8654 8634
+f 8654 8655 8635
+f 8635 8655 8636
+f 8648 8638 8637
+f 87 86 8638
+f 8648 87 8638
+f 8649 8639 96
+f 8649 8640 8639
+f 8658 8608 8640
+f 8658 8659 8628
+f 8608 8658 8628
+f 8628 8659 52
+f 8672 8630 8641
+f 8651 8672 8641
+f 8660 8642 8630
+f 8672 8660 8630
+f 7979 7962 8652
+f 3482 1589 4767
+f 5409 8310 8036
+f 2028 5409 8036
+f 5409 8035 8310
+f 8447 8461 8265
+f 7206 8461 8447
+f 3390 5326 3403
+f 8137 8361 8215
+f 26 15 7920
+f 3965 5772 5770
+f 8461 8023 8265
+f 1156 8568 8035
+f 4320 8579 8568
+f 1156 4320 8568
+f 4320 6204 8579
+f 4364 8663 4263
+f 8671 8624 8663
+f 8671 8653 8624
+f 8664 8647 8636
+f 8664 8656 8647
+f 8665 8648 8656
+f 8665 8657 8648
+f 8657 87 8648
+f 8667 8672 8651
+f 8668 8642 8660
+f 8668 8643 8642
+f 8668 8644 8643
+f 8670 8652 8644
+f 8670 7979 8652
+f 4758 8458 8581
+f 8428 7697 8199
+f 3883 8661 4122
+f 8145 7856 8144
+f 4014 8220 6204
+f 8645 1464 7246
+f 8022 8137 8215
+f 3621 7861 6937
+f 8191 8198 8099
+f 8428 8199 8207
+f 8653 8673 8655
+f 8654 8653 8655
+f 8673 8674 8655
+f 8690 8636 8655
+f 8674 8690 8655
+f 8690 8664 8636
+f 8664 8665 8656
+f 8676 87 8657
+f 8658 8640 8649
+f 8686 8651 8650
+f 8686 8667 8651
+f 8669 8644 8668
+f 8669 8670 8644
+f 3644 8465 8462
+f 1758 8662 8661
+f 3883 1758 8661
+f 6476 6558 6952
+f 2585 3358 3195
+f 8022 8215 8138
+f 8208 8161 8104
+f 8131 8185 8132
+f 4035 7920 8128
+f 1758 8633 8662
+f 3644 8596 8465
+f 8437 8436 8235
+f 506 8437 2792
+f 3791 8598 8597
+f 8596 3791 8597
+f 8681 8663 4364
+f 8681 8671 8663
+f 8691 8665 8664
+f 8683 8657 8665
+f 8691 8683 8665
+f 8678 8658 8649
+f 8684 8659 8658
+f 8678 8684 8658
+f 8693 8679 8666
+f 8679 8650 8666
+f 8679 8686 8650
+f 8686 8687 8667
+f 8687 8672 8667
+f 8680 8668 8660
+f 8672 8680 8660
+f 8670 1435 7979
+f 3965 4719 5254
+f 3392 8598 3791
+f 2052 4805 3822
+f 8160 8141 8154
+f 8113 8128 8216
+f 7836 8191 8633
+f 8120 8178 8121
+f 8198 4660 4059
+f 65 8207 64
+f 8147 8188 8429
+f 8037 7955 7780
+f 8681 4364 6945
+f 8673 8689 8674
+f 8675 8691 8664
+f 95 8677 8678
+f 8685 51 8684
+f 8687 8680 8672
+f 8680 8669 8668
+f 1435 8670 8669
+f 3293 3392 3292
+f 446 750 6422
+f 8167 8144 3621
+f 8235 8030 8023
+f 4276 7971 5340
+f 8063 8085 8131
+f 4776 8373 8429
+f 8119 8118 7886
+f 7874 8204 8021
+f 8017 5116 8111
+f 8236 8017 8111
+f 8471 27 8113
+f 7955 7924 8147
+f 8187 4035 8113
+f 8099 8198 4059
+f 4059 4660 7955
+f 4660 7924 7955
+f 863 4781 8105
+f 8695 8671 8681
+f 8695 8682 8653
+f 8671 8695 8653
+f 8682 8689 8673
+f 8653 8682 8673
+f 8689 8696 8674
+f 8696 8690 8674
+f 8675 8664 8690
+f 8701 8676 8657
+f 8683 8701 8657
+f 8677 8684 8678
+f 8705 8679 8693
+f 8708 8686 8679
+f 8694 8687 8686
+f 6813 8680 8687
+f 8281 2262 3207
+f 7912 7698 8001
+f 7896 7921 7895
+f 7865 7882 3548
+f 8188 4776 8429
+f 4776 8269 8373
+f 5265 8328 8365
+f 8130 8153 8151
+f 8169 6692 8021
+f 8209 7983 8208
+f 7884 8035 1054
+f 687 4656 110
+f 8190 7213 8032
+f 27 8187 8113
+f 4656 687 8646
+f 8187 34 4035
+f 8160 8154 14
+f 13 8160 14
+f 8067 6472 8244
+f 8688 8681 6945
+f 8697 8675 8690
+f 8699 8691 8675
+f 2533 8683 8691
+f 2533 8700 8683
+f 8700 8701 8683
+f 95 8692 8677
+f 8692 8684 8677
+f 8684 8692 8685
+f 8706 8679 8705
+f 8708 8694 8686
+f 8694 6813 8687
+f 3242 8680 6813
+f 3574 5273 5477
+f 4722 213 214
+f 8662 8633 8661
+f 8235 8023 8461
+f 8207 8199 7987
+f 8151 8264 5176
+f 889 864 909
+f 7723 8484 5117
+f 8104 7892 5518
+f 8130 8151 8176
+f 1192 3040 1418
+f 8046 8162 5634
+f 6946 8688 6945
+f 5303 8681 8688
+f 5303 8695 8681
+f 8697 8690 8696
+f 8698 8675 8697
+f 8698 8699 8675
+f 2533 8691 8699
+f 8702 8692 95
+f 8703 8685 8692
+f 8703 8704 8685
+f 8685 8704 49
+f 753 8693 44
+f 45 753 44
+f 753 8705 8693
+f 8707 8708 8679
+f 8706 8707 8679
+f 8708 8709 8694
+f 8709 3266 8694
+f 7886 8189 8100
+f 8114 8276 8130
+f 5634 7988 7990
+f 3319 3954 7973
+f 7836 8633 1758
+f 8153 5779 8264
+f 5200 8024 6920
+f 2019 1759 2020
+f 7723 8172 8484
+f 8172 1250 8484
+f 7886 8118 8117
+f 8132 8116 8117
+f 5518 8171 7939
+f 8186 6815 7885
+f 8159 4014 6204
+f 8163 8162 8046
+f 7864 8123 8220
+f 7684 7938 7836
+f 8362 8283 7889
+f 8682 4201 8689
+f 4201 3383 8689
+f 3382 8696 8689
+f 3383 3382 8689
+f 6024 8697 8696
+f 3382 6024 8696
+f 8698 5403 8699
+f 5403 2533 8699
+f 4999 8700 2533
+f 3668 8701 8700
+f 4999 3668 8700
+f 8701 90 89
+f 2858 8692 8702
+f 2858 8703 8692
+f 8703 5087 8704
+f 5087 4980 8704
+f 4980 50 8704
+f 5758 8705 753
+f 4150 8706 8705
+f 5758 4150 8705
+f 4150 8707 8706
+f 8707 8709 8708
+f 3266 6813 8694
+f 5120 7652 2111
+f 7652 5120 5121
+f 8360 8455 8710
+f 8455 8478 8710
+f 8478 8453 8710
+f 8453 4805 8710
+f 4805 136 8710
+f 136 135 8710
+f 135 3803 8710
+f 3803 3790 8710
+f 3790 4897 8710
+f 4897 5197 8710
+f 5197 8360 8710
+# 17416 faces, 0 coords texture
+
+# End of File
diff --git a/meshes/cactus.obj b/meshes/cactus.obj
new file mode 100644
index 0000000..350e0c4
--- /dev/null
+++ b/meshes/cactus.obj
@@ -0,0 +1,752 @@
+v -0.136790449726971 0.00303735089472771 -0.0506969864784842
+v -0.0132639742930094 -0.0117747402641882 -0.144231104699674
+v -0.12062413966608 -0.00876379235123576 0.068838066238162
+v 0.00504959562870316 -0.0102572032295721 0.143877590893753
+v -0.155645069181442 0.603188439047741 -0.0314592817483816
+v -0.137997552939465 0.322497344923045 0.0319750021562586
+v -0.111015284680943 0.545021453398609 -0.0923643082914176
+v -0.153578436101068 0.635531409031638 0.0865258427139609
+v 0.0338565259917928 0.513922416096385 -0.131927584620803
+v -0.0318791452925056 0.774346604289829 -0.198885059489887
+v -0.177938275421841 0.790196362100452 -0.112122838409306
+v -0.237130805998043 0.761989171476521 -0.000852677095754449
+v -0.448643998070236 1.38578554047746 -0.384577712619453
+v -0.420027239075342 1.74838621375572 -0.439873398095517
+v -0.474642700559168 1.8781200509772 -0.385656286648792
+v -0.437609473236411 1.14081573406941 -0.29112933051888
+v -0.473975048054951 1.37826012057647 -0.284239293927586
+v -0.414794698710668 1.37001122932858 -0.20225913982307
+v -0.475558896752526 1.75068848854311 -0.302182153310013
+v -0.363165155149146 1.10964247710574 -0.379061353816139
+v -0.259193402372561 1.09421175729045 -0.398736696713014
+v -0.265931776263637 1.29613073850538 -0.453921005471936
+v -0.405745292908764 1.16180491265035 -0.168189144143986
+v -0.244684763637665 1.00594811829714 -0.285615489205171
+v -0.171937656680392 0.932249557094214 -0.0950551914440892
+v -0.341491379311174 1.17087290095226 -0.107524402929065
+v -0.195984585853608 1.0212309153852 0.0169469439544409
+v -0.227092768092971 1.15602836616683 -0.015647363849693
+v -0.051897203344798 0.976671550394053 -0.169036752792613
+v -0.173957629135018 0.914997081845959 0.0641802439976984
+v -0.0726321791696312 1.07311142172479 -0.279319352349327
+v -0.12844501899548 1.21022381744402 -0.305336617114062
+v 0.0478336729325157 1.09949961190484 -0.1704748665265
+v -0.0108093047353569 1.15852341186112 -0.185173398402985
+v -0.0873193744899428 1.22706911159708 -0.178592718683493
+v -0.126320302574074 1.05472843379758 0.158610027009429
+v -0.124539374945408 1.43641576159157 0.122613495353436
+v -0.216119269704781 1.35167730761541 -0.404779940181117
+v -0.272968010218702 1.75026650084357 -0.451691807733507
+v -0.36526750840666 1.86993678844149 -0.473020878850977
+v -0.223829951610498 1.89377871936432 -0.380578258051828
+v -0.313056619076638 1.30407977870725 -0.166440302588127
+v -0.155772289480878 1.24619442885283 -0.146746829328293
+v -0.214466192629103 1.4063777001094 -0.306302981817189
+v -0.242029899518785 1.40283780161063 -0.234489724212405
+v -0.415279611376127 1.77245894008572 -0.215997308000289
+v -0.345153491547754 1.74312431662675 -0.191491449473918
+v -0.246950730075998 1.75258323443533 -0.248668476138778
+v 0.0492154610350024 1.34939334332945 -0.214342736689833
+v -0.177852177414532 1.3221069171703 -0.0319850665395097
+v -0.176049394719052 1.54793797387907 -0.0702097231720342
+v -0.0586509259835934 1.61576949094578 -0.153001200876543
+v 0.0344051482065697 1.63250371305273 -0.165030003719406
+v -0.175848252802634 1.55095069289763 0.0813634552895044
+v -0.156210910405736 1.86577417596018 -0.0262442456360114
+v -0.448096920679211 2.39333982590406 -0.510184948835096
+v -0.485289973553774 2.16459815765482 -0.299789015241375
+v -0.41338055187174 2.24533516623066 -0.265087440228971
+v -0.511799807429022 2.58429780709017 -0.380599349756162
+v -0.435063853610235 2.65126762990736 -0.289803518362934
+v -0.358752600940244 2.2576587169462 -0.518349777779459
+v -0.297968764735061 2.18523738709914 -0.269968373308571
+v -0.0899177287355852 1.9259412614793 -0.128968217965967
+v -0.12923276613415 1.84691404114743 0.0985970136236276
+v -0.156993588297487 2.19040384394148 0.0111182876654643
+v -0.00950317308392411 2.2103834945915 -0.164363146848071
+v -0.281584317682078 2.27253624492631 -0.468071425242911
+v -0.249795664014935 2.46944063047637 -0.355265840995239
+v -0.287381059673006 2.65144891792342 -0.444730096707136
+v -0.304848517696821 2.65729860202846 -0.268056748492295
+v -0.10915296375603 2.26792509995487 -0.133513708793292
+v -0.146113209485826 2.25048705943167 0.120680066077311
+v -0.102021192292556 2.41610977536028 -0.101691020339546
+v -0.154992540260543 2.62082162504349 0.00397934120142233
+v 0.011329812010115 2.53533947777025 -0.148164063911465
+v -0.0802030579762654 0.316612467154979 0.112704491284317
+v -0.00784304578591341 0.322081052916098 0.152219705547726
+v 0.0611558274859964 0.570441665136797 0.155470034177049
+v -0.114485335764406 0.87528189554197 0.166552172221188
+v 0.0148213046728379 0.853832768183753 0.18359207171598
+v -0.0668082616937686 0.858797439247635 0.1857264409111
+v -0.135866712589779 1.02267093874511 0.306763698233759
+v -0.114613781379459 0.985614906251692 0.403631253816683
+v -0.0319231982414195 1.00498000891853 0.516216374439592
+v 0.0997400058927227 0.919413090060946 0.354511800157992
+v -0.0460841380632353 1.15923425527738 0.200270990734406
+v -0.0607312834874226 1.16962253645925 0.30884976655066
+v 0.0421294845978033 1.16958203813714 0.325565959815365
+v -0.124586732124909 1.22347707026583 0.464460752801128
+v -0.0837702428912478 1.22259471560464 0.343195551626246
+v -0.110717593088145 1.32539126554744 0.549686303503004
+v 0.10023017121848 1.00092242236245 0.485767346918095
+v -0.0317806321544851 1.20125434769012 0.588372117336686
+v -0.130644262021297 1.64173732141568 0.50004173245004
+v -0.0182704712058621 1.53013993056085 0.340065656219066
+v -0.0347357970094644 1.71807195867128 0.154822656566129
+v 0.0672565339170381 1.40473724450128 0.162067823606786
+v -0.0831071461365752 1.87113882118411 0.430779920367899
+v 0.0639302821417207 1.20412554257929 0.582721674409179
+v -0.0436372586056282 1.4913903309364 0.592019754575137
+v -0.0649415514128968 1.7555407263329 0.628464802340097
+v 0.0693725722024578 1.56615101044182 0.577761359999085
+v 0.0165274360717863 2.00250863665684 0.437310994086554
+v -0.107364753335719 2.01020626641809 0.557889182004284
+v 0.0247720799532948 2.13666137666707 0.148067532825975
+v -0.0744208149142897 2.25338168422931 0.183254072065706
+v -0.0526307540767212 2.10142413031244 0.541342814319412
+v -0.000514369122706748 2.00370844027722 0.643463606505122
+v 0.044841765820183 2.11041372578462 0.560240187263572
+v -0.111589127121053 2.51442875217887 0.117822568236231
+v -0.0266229531579364 2.530349433248 0.161147316695515
+v 0.0949784403738172 2.52149975888879 0.126793237242302
+v -0.509188687345536 3.0052699815055 -0.476441331617412
+v -0.422207820453588 3.00344575142239 -0.525924032031905
+v -0.526322239128281 2.98305585920913 -0.388499893525392
+v -0.455386239829263 3.03079791324841 -0.310865942105571
+v -0.456144049156858 3.12617557371946 -0.387953979602674
+v -0.391813105075278 3.13402887641773 -0.446781865143338
+v -0.332751749226865 2.97689465914947 -0.500609711383007
+v -0.292621651332027 2.96627170859476 -0.397371552371717
+v -0.352378624726419 3.06326504627892 -0.339097277294639
+v -0.128930224400724 2.74881855010889 -0.0797469608596884
+v -0.108843890767736 2.9780858960275 0.111515889253178
+v -0.0769548793625412 3.08034857623328 -0.116507929818636
+v -0.130427413251658 3.07310840092083 -0.00403843704007645
+v 0.038079377220431 3.0820698587605 -0.149261018440354
+v -0.0880560929474406 3.38669096083473 0.124199774684216
+v -0.136099456569087 3.75295861824998 0.0406213530791353
+v 0.0212095129829603 3.58717701502396 -0.141891487504102
+v -0.133122200914993 4.04956348694407 -0.0226563484401573
+v -0.0628554165626504 4.08241251205117 -0.11740948960408
+v 0.0563559230730785 4.17968687423094 -0.14563041631038
+v -0.129292018492717 4.242273494436 0.110865149997279
+v -0.138988329691716 4.67577495050536 0.00237444616353788
+v -0.103278501025141 4.85664260487148 -0.0905523339238119
+v -0.00787751242781387 4.84067400901719 -0.134930273680105
+v -0.0917781725355558 4.33196908434569 0.138410362821433
+v -0.110062251833233 4.80115060023901 0.0802799797489615
+v -0.0929167854709553 4.96318965242909 0.0209186659808118
+v 0.0891397697330865 4.8793390662711 -0.0939577334639443
+v 0.0288057754121298 5.01443289530093 -0.0370121926341831
+v -0.0295234220082836 4.9669077649249 0.0859387762442072
+v -0.00115646441798206 3.03641477501522 0.153928292817638
+v -0.0504444392517815 3.57796167026193 0.144918361341508
+v -0.00974396728932952 3.93016155337898 0.157544070413752
+v -0.0913558176968776 3.95722014178601 0.143296805751105
+v -0.00261150203528665 4.54455997804212 0.148084253037207
+v 0.0320107647978438 4.84524336665452 0.130065740284961
+v 0.0816372023344722 0.00754922280385668 -0.117346637813203
+v 0.117698602226752 -0.00981993200766223 0.0782036063388895
+v 0.14163081545523 0.0117972356343093 -0.00852967564781515
+v 0.11133850791357 0.396157803571758 -0.0906680385445851
+v 0.133888531826511 0.536027954755044 -0.061533414494724
+v 0.141266078125435 0.592398426246067 0.0302636923886688
+v 0.121805878359333 0.812130604946814 -0.157394344936749
+v 0.148234412563266 0.772929309144991 0.0835831183459332
+v 0.114419515640917 1.08928325985909 -0.14709310223022
+v 0.214009662495113 0.932191012460355 -0.0285130711315914
+v 0.137239816298505 0.917713781060437 0.144836464682025
+v 0.139829104697296 1.27866148036245 -0.349525036589601
+v 0.234807861306489 1.20280834013272 -0.336790354014138
+v 0.281981299241708 1.16135917732426 -0.252090298091088
+v 0.257664239819605 1.14974985594881 -0.123855861171172
+v 0.172287450572091 1.0624355746993 0.129386265026629
+v 0.170312151097767 1.2288577796247 0.0908367725281485
+v 0.167756874072681 1.12305919186609 -0.0740804707531781
+v 0.189962450152455 1.23270356970079 0.0370846567631705
+v 0.206884717748824 1.52716437792715 -0.375601426657444
+v 0.134393623735609 1.36561685930991 -0.320003328119174
+v 0.302333742276366 1.48318608259706 -0.463075363713839
+v 0.383989234802895 1.32414419365237 -0.394509036367783
+v 0.406836508030687 1.55291225972266 -0.456834261015626
+v 0.469668098384491 1.56430668783656 -0.363947576179468
+v 0.237339223457981 1.54914400333974 -0.256790994712823
+v 0.194800232171083 1.41826594591701 -0.178823667967743
+v 0.19494510677089 1.39553598207909 -0.0627559835484752
+v 0.317083576150033 1.3979600315462 -0.134352510547824
+v 0.158349238409577 1.44896251641575 0.116971723936813
+v 0.0926857044083116 1.59610817766555 -0.133811116041968
+v 0.137539976744491 1.57746646053137 -0.0520056210557169
+v 0.143179960662167 1.58167598205903 0.0561905934961551
+v 0.427197063054703 1.31171917228163 -0.259012792138709
+v 0.383514273121911 1.34338862964738 -0.164733577550433
+v 0.454630101168772 1.53315242842046 -0.258021866428854
+v 0.346454036200383 1.5606607319416 -0.20975485424779
+v 0.486961437860651 1.91361565834281 -0.353667022901838
+v 0.245053278901119 2.06623532598003 -0.443221032775264
+v 0.219485125738084 2.01266699265907 -0.353367968034751
+v 0.367624484683986 1.89714174456469 -0.467840476870405
+v 0.442802509301576 1.87437952724778 -0.436201266397195
+v 0.40313203933826 2.44501951806429 -0.487070969091343
+v 0.476539677141623 2.29558774354308 -0.427115961476788
+v 0.158281250519419 2.05425759238787 -0.0397492742399075
+v 0.100379523414989 1.66972035132565 0.120925187785937
+v 0.0705795655217001 2.24918926713823 -0.144510574044596
+v 0.145628975698048 2.33486568662826 -0.0777125941094492
+v 0.160451050539394 2.27630941628418 0.0151205592291546
+v 0.270706934934206 1.93738575391462 -0.245502802815191
+v 0.356852272038401 1.78562623567445 -0.203760327822019
+v 0.45136091141447 1.7966440467562 -0.234591753849015
+v 0.368988328201932 1.8975121427639 -0.174746691147246
+v 0.323159555969874 2.14621301214396 -0.219119978935319
+v 0.418268385295288 2.2249525256614 -0.23871370715616
+v 0.314454994035654 2.32116549737482 -0.481774564923344
+v 0.251980611510399 2.57993983365968 -0.418770041724561
+v 0.481061823517217 2.66169946288889 -0.456146652945373
+v 0.120698418610016 2.7782255936014 -0.101209530504019
+v 0.120912173819305 2.69877852704725 0.0904195358514707
+v 0.284034196217662 2.65018775583049 -0.284484228501472
+v 0.445521709333218 2.68219927455104 -0.246523415575881
+v 0.484530828622361 2.18159712345241 -0.328921811293662
+v 0.509840707690888 2.67470440524639 -0.356187424580734
+v 0.144588342063605 1.04242660929173 0.351165256475737
+v 0.155816580251969 1.21188666033506 0.469443986832577
+v 0.0857198330399966 1.3602692764497 0.350899721608212
+v 0.125207228410778 1.55822723787567 0.493824078308
+v 0.0916539032776176 2.01811997682411 0.489911940215662
+v 0.0874098764035545 1.95786906698537 0.604645075211466
+v 0.343471262956786 3.09557476544411 -0.490127150359029
+v 0.25061565350469 3.29871803915774 -0.353870703984053
+v 0.297168987627017 3.38724455174114 -0.46962778287174
+v 0.429299620655435 3.1393216460976 -0.495208403343971
+v 0.153595906210424 2.69788746605048 -0.0225419186872801
+v 0.161337512558974 3.18421951640773 -0.0345056882715702
+v 0.173079485232082 3.20084023259019 0.0633547199228915
+v 0.366629398603954 3.03247861876501 -0.238318484756067
+v 0.48158848398554 3.07189094681375 -0.460560092509024
+v 0.434413197955495 3.65014567390366 -0.524774377956568
+v 0.121243452235432 3.48635856593051 -0.0897510193947066
+v 0.167860669118565 3.97460516320017 -0.0024843222236291
+v 0.300036121702291 3.28341770162624 -0.275029835085149
+v 0.480134871715273 3.04531077260781 -0.301433298826056
+v 0.40829370466328 3.54825773497999 -0.269701365449755
+v 0.507258764063561 3.24625188760224 -0.397608522644315
+v 0.519978450878719 3.73599773451027 -0.435172928806009
+v 0.490570212822905 3.73119923736092 -0.320244573319781
+v 0.327136145236588 4.11536383215082 -0.501088072109391
+v 0.280338066602518 3.84427687196199 -0.378062598247781
+v 0.149831383248327 3.8788844518282 -0.0723594201940526
+v 0.128410582187695 4.12260356266098 0.0791144283756653
+v 0.326469700167979 3.75234013589131 -0.301445767716861
+v 0.449182995743492 4.11387480862577 -0.29445058119129
+v 0.318427350994305 4.16876958070904 -0.348223318841806
+v 0.472726742647882 4.15686664855149 -0.511786397985491
+v 0.355579804484741 4.24317982708823 -0.432474060696033
+v 0.455809838160881 4.25152521379604 -0.388163910249272
+v 0.139416242879592 4.3059311998597 -0.0917344115454148
+v 0.52457928369383 4.14195094335949 -0.411566933762118
+v 0.130351699443644 4.85919488558907 0.00653260577374154
+v 0.0950805074090768 4.86588345135181 0.0947816378475368
+v 0.11164232846364 3.13775679985238 0.126981260200248
+v 0.0762981064636423 3.72312042163652 0.130441511002095
+f 1 2 3
+f 2 4 3
+f 1 3 6
+f 1 6 5
+f 1 7 2
+f 1 5 7
+f 5 6 8
+f 7 9 2
+f 12 11 5
+f 11 7 5
+f 7 11 10
+f 5 8 12
+f 7 10 9
+f 14 13 15
+f 13 16 17
+f 13 17 15
+f 17 19 15
+f 24 16 20
+f 24 20 21
+f 16 24 25
+f 16 25 23
+f 23 25 27
+f 23 27 26
+f 27 28 26
+f 10 25 29
+f 10 11 25
+f 12 30 11
+f 11 30 25
+f 25 30 27
+f 21 29 24
+f 24 29 25
+f 21 31 29
+f 21 22 31
+f 29 31 33
+f 31 32 34
+f 31 34 33
+f 32 35 34
+f 27 30 36
+f 27 36 28
+f 20 13 14
+f 20 14 22
+f 20 22 21
+f 22 39 38
+f 14 40 39
+f 22 14 39
+f 39 41 38
+f 16 13 20
+f 23 17 16
+f 23 26 18
+f 17 23 18
+f 18 26 42
+f 42 43 45
+f 26 28 42
+f 18 42 47
+f 17 18 46
+f 18 47 46
+f 42 45 48
+f 42 48 47
+f 45 44 48
+f 38 41 44
+f 22 32 31
+f 22 38 32
+f 32 38 44
+f 32 44 43
+f 43 35 32
+f 44 45 43
+f 35 49 34
+f 28 43 42
+f 28 50 43
+f 50 28 37
+f 35 43 50
+f 35 50 51
+f 35 52 49
+f 49 52 53
+f 54 50 37
+f 50 54 51
+f 35 51 52
+f 14 15 56
+f 15 19 57
+f 19 46 57
+f 15 59 56
+f 15 57 59
+f 57 58 60
+f 57 60 59
+f 40 14 56
+f 40 61 39
+f 17 46 19
+f 44 41 48
+f 46 47 58
+f 46 58 57
+f 58 47 62
+f 62 47 48
+f 51 55 63
+f 54 55 51
+f 51 63 52
+f 55 64 65
+f 52 66 53
+f 63 66 52
+f 56 61 40
+f 39 67 41
+f 61 67 39
+f 41 67 68
+f 61 69 67
+f 67 69 68
+f 48 68 62
+f 41 68 48
+f 58 62 70
+f 62 68 70
+f 55 71 63
+f 55 65 71
+f 63 71 66
+f 71 65 73
+f 73 65 74
+f 71 73 66
+f 73 75 66
+f 3 4 76
+f 4 77 76
+f 3 76 6
+f 6 76 8
+f 12 8 79
+f 76 77 8
+f 8 77 79
+f 79 77 80
+f 77 78 80
+f 12 79 30
+f 82 79 83
+f 79 80 81
+f 81 83 79
+f 81 84 83
+f 81 85 84
+f 30 79 36
+f 79 82 36
+f 28 36 37
+f 82 87 36
+f 36 87 86
+f 86 87 88
+f 82 90 87
+f 90 82 89
+f 83 89 82
+f 83 91 89
+f 83 84 91
+f 84 93 91
+f 36 86 37
+f 90 95 87
+f 37 97 96
+f 54 37 96
+f 98 95 90
+f 90 89 94
+f 90 94 98
+f 93 100 91
+f 93 99 100
+f 89 91 94
+f 91 100 101
+f 55 54 64
+f 54 96 64
+f 98 103 95
+f 98 94 104
+f 65 64 72
+f 64 96 106
+f 64 106 72
+f 96 105 106
+f 98 104 107
+f 98 107 103
+f 91 101 94
+f 100 102 101
+f 94 101 104
+f 104 101 108
+f 104 108 107
+f 103 107 109
+f 65 110 74
+f 65 72 110
+f 72 106 110
+f 106 111 110
+f 106 112 111
+f 109 107 108
+f 59 113 56
+f 113 59 115
+f 114 56 113
+f 115 59 116
+f 59 60 116
+f 113 117 118
+f 113 115 117
+f 117 115 116
+f 56 119 61
+f 56 114 119
+f 61 119 69
+f 69 119 120
+f 60 58 70
+f 69 120 68
+f 70 68 120
+f 60 70 116
+f 122 73 74
+f 122 124 73
+f 124 75 73
+f 122 74 125
+f 124 126 75
+f 113 118 114
+f 117 121 118
+f 114 118 119
+f 119 118 120
+f 120 118 121
+f 120 121 70
+f 116 70 121
+f 117 116 121
+f 122 125 124
+f 74 123 125
+f 125 123 127
+f 124 129 126
+f 124 125 128
+f 124 131 129
+f 124 130 131
+f 124 128 130
+f 130 128 133
+f 130 133 134
+f 131 130 135
+f 131 136 132
+f 134 137 138
+f 135 130 134
+f 131 135 136
+f 134 139 135
+f 134 138 139
+f 135 141 136
+f 136 141 140
+f 135 139 141
+f 139 142 141
+f 74 110 123
+f 110 111 143
+f 110 143 123
+f 123 143 127
+f 125 127 128
+f 127 143 144
+f 128 127 146
+f 127 144 146
+f 144 145 146
+f 128 146 133
+f 133 146 137
+f 146 145 137
+f 137 145 147
+f 134 133 137
+f 137 147 138
+f 139 138 142
+f 138 148 142
+f 147 148 138
+f 2 149 150
+f 149 151 150
+f 4 2 150
+f 2 9 149
+f 149 9 152
+f 149 152 151
+f 152 153 151
+f 153 154 151
+f 9 153 152
+f 10 155 9
+f 9 155 153
+f 10 157 155
+f 10 29 157
+f 155 158 153
+f 153 158 154
+f 154 158 156
+f 155 157 158
+f 29 33 157
+f 34 160 33
+f 33 160 161
+f 33 161 162
+f 33 162 163
+f 158 165 164
+f 33 163 157
+f 157 166 158
+f 157 163 166
+f 166 163 167
+f 158 166 165
+f 166 167 165
+f 160 168 170
+f 161 170 171
+f 170 172 171
+f 160 34 49
+f 160 49 169
+f 160 169 168
+f 169 175 174
+f 169 49 175
+f 175 49 176
+f 176 178 167
+f 167 178 165
+f 169 174 168
+f 49 53 179
+f 49 179 176
+f 176 179 180
+f 176 181 178
+f 180 181 176
+f 160 170 161
+f 171 162 161
+f 171 182 162
+f 162 182 163
+f 163 182 183
+f 182 184 183
+f 183 167 163
+f 167 177 176
+f 175 176 177
+f 183 177 167
+f 175 177 185
+f 175 185 174
+f 171 172 182
+f 182 172 173
+f 183 185 177
+f 183 184 185
+f 182 173 184
+f 173 186 184
+f 168 187 170
+f 187 168 188
+f 170 189 172
+f 189 190 172
+f 170 187 189
+f 189 192 190
+f 179 193 180
+f 181 180 193
+f 53 195 179
+f 53 66 195
+f 179 195 196
+f 181 193 194
+f 179 196 193
+f 193 197 194
+f 168 174 188
+f 198 174 185
+f 174 198 188
+f 184 200 185
+f 185 199 198
+f 199 185 200
+f 199 201 198
+f 198 201 202
+f 199 200 201
+f 203 202 201
+f 187 204 189
+f 205 187 188
+f 189 204 191
+f 191 192 189
+f 205 204 187
+f 66 75 195
+f 195 207 196
+f 196 197 193
+f 188 198 209
+f 205 188 209
+f 198 202 209
+f 202 203 210
+f 172 190 173
+f 190 192 186
+f 184 186 200
+f 173 190 186
+f 186 211 200
+f 201 200 211
+f 201 211 203
+f 191 206 192
+f 186 192 211
+f 211 210 203
+f 192 212 211
+f 211 212 210
+f 4 150 78
+f 151 154 150
+f 4 78 77
+f 78 150 154
+f 154 156 78
+f 80 78 159
+f 159 85 80
+f 78 156 159
+f 156 158 159
+f 158 164 159
+f 159 213 85
+f 81 80 85
+f 84 85 92
+f 86 164 97
+f 88 213 164
+f 86 88 164
+f 159 164 213
+f 85 213 92
+f 92 213 214
+f 213 88 214
+f 84 92 99
+f 84 99 93
+f 214 99 92
+f 165 97 164
+f 97 165 178
+f 87 215 88
+f 87 95 215
+f 88 215 214
+f 37 86 97
+f 97 178 194
+f 178 181 194
+f 215 95 103
+f 103 217 215
+f 215 217 216
+f 214 215 216
+f 100 99 102
+f 214 102 99
+f 102 214 216
+f 97 194 96
+f 96 194 105
+f 197 105 194
+f 103 109 217
+f 102 216 218
+f 216 217 218
+f 101 102 108
+f 102 218 108
+f 218 217 109
+f 218 109 108
+f 105 197 112
+f 105 112 106
+f 197 208 112
+f 204 219 191
+f 205 221 204
+f 204 221 219
+f 219 222 191
+f 196 223 197
+f 197 223 208
+f 196 207 223
+f 75 126 195
+f 195 126 207
+f 223 207 225
+f 223 225 208
+f 205 209 220
+f 209 202 226
+f 202 210 226
+f 205 220 221
+f 219 228 222
+f 207 229 224
+f 207 126 229
+f 207 224 225
+f 224 230 225
+f 209 231 220
+f 209 226 231
+f 226 210 233
+f 232 233 210
+f 231 226 233
+f 192 206 212
+f 191 227 206
+f 191 222 227
+f 206 234 212
+f 210 212 232
+f 206 227 234
+f 222 228 227
+f 227 235 234
+f 212 234 232
+f 232 234 236
+f 233 232 236
+f 221 220 237
+f 221 228 219
+f 237 220 238
+f 126 129 229
+f 229 230 224
+f 129 239 229
+f 229 239 230
+f 225 230 240
+f 220 231 238
+f 231 241 238
+f 231 233 241
+f 241 233 242
+f 233 236 242
+f 228 221 237
+f 228 237 244
+f 238 243 237
+f 237 243 245
+f 237 245 244
+f 245 246 244
+f 129 131 132
+f 129 132 239
+f 132 247 239
+f 247 230 239
+f 238 241 243
+f 241 242 243
+f 245 243 246
+f 242 246 243
+f 227 228 235
+f 234 235 236
+f 228 244 235
+f 235 248 236
+f 244 248 235
+f 244 246 248
+f 236 248 242
+f 246 242 248
+f 247 249 230
+f 230 249 240
+f 249 250 240
+f 132 140 247
+f 140 249 247
+f 136 140 132
+f 250 141 142
+f 140 141 249
+f 141 250 249
+f 111 112 251
+f 208 251 112
+f 111 251 143
+f 208 225 251
+f 143 251 252
+f 143 252 144
+f 252 251 225
+f 144 252 145
+f 252 225 240
+f 252 240 145
+f 240 147 145
+f 147 240 250
+f 147 250 148
+f 148 250 142
diff --git a/meshes/cow.obj b/meshes/cow.obj
new file mode 100644
index 0000000..bc90320
--- /dev/null
+++ b/meshes/cow.obj
@@ -0,0 +1,8724 @@
+####
+#
+# OBJ File Generated by Meshlab
+#
+####
+# Object cow.obj
+#
+# Vertices: 2904
+# Faces: 5804
+#
+####
+v -5.629220 14.018800 6.892250
+v -3.937200 7.486060 4.116070
+v 4.248920 2.510840 -8.760060
+v 1.578680 5.077090 -4.506200
+v -0.446695 13.061900 -1.145000
+v 3.762500 1.902770 -7.985000
+v 4.215860 4.872940 -8.621880
+v 4.018680 3.137930 -8.352470
+v -5.698100 13.791800 7.093000
+v -2.548450 13.024900 2.149670
+v 3.798780 4.683620 -7.969420
+v 2.763140 13.082300 -6.153430
+v 3.993830 2.630790 -8.312460
+v -5.886650 14.119100 7.409590
+v 1.844360 5.176760 -4.955850
+v 4.105850 3.138180 -8.535590
+v 4.162960 4.227040 -8.595870
+v 3.981080 3.841210 -8.316190
+v 4.191030 1.629400 -8.694470
+v -6.242320 15.031100 8.128650
+v -5.876780 15.122400 7.561550
+v 4.147360 2.195890 -8.413060
+v 4.309730 2.074690 -8.657700
+v -5.434850 14.003500 6.865340
+v 4.202020 9.217040 -8.305820
+v -3.697380 6.214500 3.981620
+v -5.658640 13.934500 7.227160
+v -6.063720 14.832200 7.882190
+v 3.589240 5.540000 -7.427150
+v 1.324930 12.965100 -3.709200
+v -3.844200 11.464100 4.344570
+v 4.095690 5.803960 -8.203960
+v -3.961180 8.530340 4.462490
+v -3.663870 5.642430 3.931120
+v -5.850430 14.943800 7.564770
+v 4.178940 4.786270 -8.346680
+v -3.955540 10.713400 4.522070
+v 0.815769 12.884100 -2.888910
+v 3.946120 0.531604 -8.066530
+v -5.850660 14.788000 7.583380
+v -5.785390 14.414100 7.477590
+v 4.045830 4.736600 -8.122360
+v 4.277000 1.750910 -8.543200
+v 2.764940 5.441400 -6.088490
+v 3.004960 5.504080 -6.448200
+v 4.049280 2.220840 -8.139590
+v 4.305530 2.125060 -8.541290
+v 3.766390 1.548390 -7.707260
+v 2.589960 13.050800 -5.599470
+v -5.727900 13.949200 7.435710
+v 4.126330 1.835370 -8.240400
+v -3.342670 5.047000 3.521930
+v -6.156010 15.307600 8.167280
+v 3.759000 1.393620 -7.661780
+v 2.447640 5.451460 -5.507200
+v -6.331850 15.178700 8.450540
+v 4.260880 1.783160 -8.426790
+v -4.141670 9.233410 4.888740
+v 4.354840 1.361670 -8.567580
+v -3.176180 12.816000 3.474180
+v -5.296280 13.840200 6.815420
+v -2.368630 13.124200 2.232220
+v 3.374560 6.085320 -6.913520
+v -6.189820 14.841500 8.256390
+v 3.998260 1.854140 -7.972840
+v 4.147940 4.207850 -8.505760
+v 4.074260 6.867170 -8.325190
+v 3.495310 1.088340 -7.552900
+v 4.050910 0.636054 -8.432070
+v 3.604100 1.339180 -7.713980
+v 4.341640 1.905630 -8.850620
+v 4.367900 1.681040 -8.886470
+v -2.918040 12.917800 2.778310
+v -3.639560 5.405600 3.735410
+v 1.234890 4.814330 -3.895630
+v -6.081850 15.015800 7.788890
+v 4.263720 1.740080 -8.693980
+v 3.163790 5.489630 -6.886010
+v -3.014580 12.853100 2.963120
+v 4.372620 2.041760 -8.837880
+v -5.738350 14.380100 7.260840
+v -6.066750 15.190000 7.799780
+v -4.168040 9.780720 4.708500
+v 4.029540 4.200150 -8.237960
+v 3.439470 0.750661 -7.391540
+v 0.653780 4.646160 -2.944310
+v -5.545530 14.182700 6.972890
+v -1.287880 5.243660 0.110031
+v -5.932170 14.244100 7.583270
+v -6.275960 15.209000 8.146600
+v -3.908280 7.659990 4.270470
+v 4.096350 10.354900 -8.183240
+v -3.441770 12.426800 3.659430
+v -3.243290 5.058010 3.179760
+v 3.060450 6.552660 -5.913570
+v 4.515180 0.776743 -8.320440
+v -4.107780 9.447810 5.373030
+v -5.910160 15.254300 8.319260
+v -5.003820 13.524400 6.881700
+v -6.106220 15.295000 8.647640
+v 3.431830 6.743510 -6.463060
+v -1.778910 5.197950 1.657170
+v -2.826960 13.108500 3.478870
+v 4.293410 6.842320 -7.792430
+v -5.933950 14.833500 8.390550
+v -6.162820 14.916400 8.755540
+v -5.993280 15.232000 8.499090
+v 1.838460 5.026050 -3.983650
+v 4.263040 1.573760 -7.846450
+v -4.912200 14.094700 6.793030
+v -5.629710 15.187000 7.949620
+v -4.857290 13.918700 6.713070
+v -5.724620 14.745700 8.088910
+v 2.670470 6.084660 -5.240760
+v 2.758880 6.108820 -5.382050
+v -3.310580 12.892000 4.267150
+v -5.811030 14.789100 8.222280
+v -5.992900 14.854700 8.509690
+v -5.796440 14.877300 8.207290
+v -3.474040 5.718640 4.376770
+v -5.896330 14.940900 8.384070
+v -5.761400 15.118100 8.180610
+v -5.865110 15.137800 8.354680
+v -5.463540 15.164600 7.728450
+v -5.621620 14.634700 7.958140
+v -5.679750 14.853700 8.061240
+v 4.169060 11.047800 -7.416700
+v -4.986870 14.199800 6.978920
+v -5.225140 14.526700 7.371470
+v -3.776450 12.398500 5.052750
+v 4.249740 1.394800 -7.748710
+v 4.423840 1.319780 -8.021970
+v -4.320500 11.334000 5.885420
+v -5.152300 14.879900 7.269190
+v 4.075920 6.319020 -7.345090
+v -5.260900 14.194800 7.441460
+v -3.577250 7.134010 4.640650
+v -5.934990 14.954600 8.510060
+v 4.070530 1.105110 -7.447810
+v -5.642410 15.048000 8.080430
+v 2.825560 6.718750 -5.355360
+v -5.307770 14.061000 7.536980
+v -5.127890 14.678900 7.271080
+v -5.489550 15.114700 7.856590
+v -5.932260 15.139100 8.563490
+v -6.039980 14.886600 8.726460
+v -3.456390 6.182270 4.486900
+v -6.014070 15.242100 8.701280
+v -4.204600 12.070800 5.807220
+v -5.350810 14.454200 7.650970
+v 2.080780 5.343580 -4.172170
+v 4.181550 10.357300 -7.346150
+v -3.818910 8.448390 5.125320
+v 3.907420 6.316230 -6.998510
+v -0.542142 12.831800 0.111267
+v 1.847120 12.728100 -3.622200
+v -1.953640 13.197800 2.333280
+v 1.248240 12.650200 -2.686870
+v 3.208650 7.083600 -5.879550
+v 3.890480 0.682226 -7.077510
+v -4.547620 11.617400 6.374070
+v -4.013100 9.201920 5.491380
+v -3.662700 12.736900 5.027370
+v -5.211340 12.052400 7.435290
+v -3.586080 7.366070 4.796340
+v 4.211060 9.867350 -7.343240
+v 3.421880 12.442000 -6.049390
+v -5.531450 14.799400 8.017290
+v 0.724766 12.577100 -1.803070
+v -5.298830 12.247300 7.619810
+v -5.966850 15.152800 8.737410
+v -5.102130 15.066200 7.385620
+v -4.389120 12.292000 6.202490
+v -5.960910 14.984300 8.733970
+v -4.254670 10.484100 5.957120
+v 2.480330 6.036870 -4.667320
+v 4.405900 8.413920 -7.629750
+v -5.141460 14.207300 7.436340
+v -4.014260 12.608300 5.642760
+v -5.077280 11.983700 7.293800
+v 4.410400 7.757170 -7.634390
+v -5.108280 14.426600 7.408290
+v -5.488130 14.972700 8.014970
+v 0.123327 12.604500 -0.814107
+v -4.999720 14.229500 7.231050
+v -3.418560 6.576580 4.590280
+v 1.847340 4.855470 -3.686650
+v 4.624480 0.880743 -8.111080
+v -4.643630 13.901500 6.693540
+v 3.616180 6.961320 -6.379250
+v -4.785030 13.481100 6.908870
+v -5.239410 12.772000 7.611530
+v -2.007440 5.150100 2.376910
+v -4.979610 12.620200 7.208360
+v -4.943130 13.280500 7.173050
+v 2.032630 12.452800 -3.747020
+v -3.548880 13.074900 5.003050
+v -4.762210 14.226900 6.940960
+v 2.430070 12.809900 -4.334730
+v -4.771080 11.870600 6.917000
+v 3.229450 12.503400 -5.580960
+v -5.154660 13.825800 7.559050
+v 0.727380 4.807040 -1.834710
+v -0.044509 5.096620 -0.625359
+v -4.950450 14.641100 7.284110
+v -4.658470 14.137500 6.812110
+v 4.289020 1.095910 -7.470940
+v -4.620330 12.482200 6.726560
+v -4.970700 12.966500 7.292130
+v -5.068880 12.723800 7.436660
+v -5.251460 11.444800 7.702960
+v 2.446220 5.923110 -4.455890
+v -5.053690 14.263600 7.468290
+v -5.166970 13.051500 7.621840
+v -5.350930 11.749900 7.887790
+v -2.133070 13.154500 2.898260
+v -5.321470 12.409600 7.872850
+v 4.645950 0.600075 -7.990430
+v -3.894710 8.980130 5.569120
+v -4.195730 12.864300 6.129940
+v -4.852480 11.842200 7.134510
+v 1.731900 4.817750 -3.323830
+v -5.060170 12.984300 7.493770
+v -3.848890 12.996600 5.607740
+v 3.695030 11.745000 -6.212000
+v -3.429990 6.987070 4.815120
+v -5.113840 15.095700 7.637200
+v -4.821100 12.523300 7.120870
+v -4.877740 14.833500 7.268760
+v 4.160840 7.093540 -7.039500
+v 2.740640 12.904600 -4.681850
+v -5.317230 14.695900 7.971470
+v -5.315820 14.475800 7.964870
+v -3.004970 13.229700 4.318470
+v -4.103080 13.222500 6.046640
+v -4.467980 10.816200 6.563530
+v -4.554710 12.995600 6.753570
+v 2.274900 5.633460 -4.095880
+v 4.082980 11.219600 -6.800590
+v -5.252540 12.714900 7.837030
+v 3.407060 7.371240 -5.824320
+v -4.812470 12.939300 7.160230
+v -4.602840 13.491200 6.855780
+v -3.482220 7.166520 4.959810
+v -5.399760 12.073800 8.066860
+v -5.185540 15.002200 7.818560
+v -2.195480 13.175100 3.095330
+v 4.262240 9.409710 -7.089980
+v -4.843690 14.344300 7.288310
+v -4.156830 9.917310 6.121710
+v -5.105320 14.319100 7.708000
+v -5.187550 13.218000 7.805430
+v -5.195260 12.975700 7.818640
+v -4.432170 13.488900 6.639310
+v -5.081680 13.306500 7.659360
+v -5.424580 11.475000 8.154740
+v -5.246430 14.867000 7.954830
+v 1.579910 12.279200 -2.786830
+v -2.185950 5.062850 2.938270
+v -3.700820 13.275500 5.509580
+v -4.780170 14.277400 7.214840
+v 4.200070 0.798560 -7.123670
+v -4.709350 11.247900 7.050490
+v 3.774720 11.039300 -6.214680
+v 4.098660 10.788200 -6.718340
+v -6.127580 15.295400 9.382400
+v 4.576260 0.972189 -7.686520
+v 1.927560 11.986700 -3.279450
+v -5.003650 11.322500 7.552180
+v -4.406780 13.903300 6.681850
+v 4.097770 10.553300 -6.687930
+v -4.942740 13.303000 7.521610
+v -5.262250 12.770200 8.020760
+v 2.443900 11.983400 -4.042330
+v -3.643010 8.088700 5.388250
+v 4.003950 7.237360 -6.595720
+v 3.109430 6.895730 -5.197420
+v -5.229120 12.989500 7.992780
+v -4.983510 13.476000 7.629160
+v -5.187090 13.231000 7.945710
+v -4.786670 11.166500 7.273830
+v 3.401610 11.893100 -5.506190
+v -5.008960 13.671900 7.696200
+v -1.204420 13.118200 1.733300
+v -4.104250 9.760600 6.187680
+v -3.902330 13.535400 5.964860
+v -5.019550 13.869900 7.722770
+v -4.800640 14.928000 7.414330
+v -4.670400 13.212700 7.171270
+v 3.465040 11.120700 -5.594350
+v -5.432740 11.794300 8.347680
+v -4.694910 14.532300 7.252430
+v -4.980710 14.154400 7.698780
+v -5.156810 13.580200 7.967440
+v -2.348960 13.206100 3.579620
+v -5.227300 11.179500 8.027560
+v 4.350640 8.643340 -6.991550
+v -2.316830 4.981960 3.349550
+v 3.825410 10.506400 -6.109990
+v 4.369630 0.692045 -7.193890
+v -5.302510 12.563200 8.208340
+v -5.349940 12.342600 8.277950
+v 2.875310 12.500300 -4.574870
+v 1.751020 4.848480 -2.982670
+v -5.263640 13.487600 8.182420
+v -5.548530 13.593600 8.644900
+v -4.848320 15.031600 7.587520
+v -4.661120 14.768900 7.295440
+v 4.223390 7.656540 -8.187820
+v -3.652610 5.837270 4.099040
+v -5.914490 15.261900 7.854370
+v -5.493590 13.747200 7.161800
+v -6.267140 15.049900 8.421940
+v 2.190280 5.423760 -5.019340
+v 0.418329 12.808600 -2.065170
+v -5.620190 14.711800 7.428160
+v -5.592630 14.865900 7.396060
+v -6.244390 15.298400 8.437850
+v 2.060490 13.109400 -4.597470
+v -5.848290 14.663400 7.811970
+v 3.895260 0.524309 -7.752920
+v 4.274400 8.407390 -8.159890
+v -5.568400 15.062200 7.387050
+v 4.132890 6.219070 -7.976520
+v -5.749980 14.025500 7.662480
+v 4.104560 5.660810 -7.933800
+v -5.290150 14.160900 6.966670
+v -5.462500 14.269200 7.236050
+v -5.707670 15.235100 7.646980
+v 3.284960 6.005880 -6.629440
+v -3.633510 12.145600 4.335220
+v 4.050890 11.889400 -7.690300
+v -2.638300 13.036700 2.802550
+v 3.247500 6.525710 -6.546910
+v 3.865890 5.493400 -7.536840
+v 2.387980 5.456660 -5.226110
+v -5.238860 13.543900 6.894830
+v -1.550360 5.245850 0.937450
+v -6.237510 14.916700 8.498060
+v 4.232780 9.790660 -7.986980
+v -3.720790 7.308670 4.393530
+v 4.393000 1.487720 -8.427920
+v -5.594510 13.803100 7.476740
+v 4.429370 1.101010 -8.487840
+v 4.011410 5.534330 -7.734750
+v 2.025590 5.155000 -4.637240
+v -0.163337 12.847700 -1.027440
+v 0.344594 4.720510 -2.005590
+v -4.097680 10.993100 5.092930
+v -5.174150 14.047100 6.864030
+v 1.844870 5.160840 -4.317980
+v -5.557160 13.668100 7.461430
+v -3.603620 6.197980 4.235850
+v 4.009440 1.602940 -7.759620
+v -5.646260 13.776100 7.620520
+v -5.497700 13.557400 7.386080
+v -6.328680 15.224100 8.731490
+v -3.416280 5.208560 3.946210
+v 1.976540 13.000400 -4.308200
+v -5.091890 13.869500 6.770510
+v -6.079750 14.826700 8.340250
+v -5.905480 14.740700 8.072350
+v 2.604330 5.635370 -5.448310
+v -3.773030 7.842090 4.584240
+v -3.587670 6.612040 4.280010
+v -5.661270 14.565900 7.710490
+v -6.293420 15.076200 8.715910
+v 3.136220 6.014790 -6.234080
+v -4.157650 10.036000 5.272430
+v -5.497250 14.278800 7.479020
+v -3.995750 11.719300 5.081750
+v -5.982270 15.307500 8.273440
+v -5.591990 13.682800 7.636100
+v -5.805340 15.242900 8.007060
+v -6.230730 15.303600 8.674530
+v -1.708770 13.218000 1.561690
+v 3.839360 1.068690 -7.395350
+v -5.482370 15.179700 7.513490
+v -3.468140 12.533800 4.300200
+v 3.836100 12.251300 -7.129530
+v -3.972820 8.871070 5.005850
+v -2.610040 13.098800 2.971990
+v 4.025320 1.379830 -7.673260
+v 4.366490 1.600350 -8.200960
+v 1.741740 4.906470 -4.014310
+v 3.011440 6.037070 -5.971630
+v -6.110410 14.863900 8.516210
+v -6.062710 15.303100 8.454720
+v -3.475510 5.472120 4.195490
+v -5.654020 15.219300 7.826460
+v -5.279710 14.209700 7.226500
+v 3.134440 6.483670 -6.114100
+v 4.468430 1.251240 -8.301310
+v 2.452420 5.776450 -5.025370
+v -5.795110 15.214400 8.102750
+v -6.242090 14.962300 8.799260
+v 2.591320 5.769010 -5.218490
+v 1.069000 4.740450 -2.857950
+v 4.298560 9.324080 -7.797080
+v 3.053920 7.001620 -5.905640
+v -5.101560 10.880600 9.822610
+v -1.760360 5.200330 4.471490
+v -5.342770 11.163600 10.212700
+v -0.062050 5.153550 1.815420
+v -5.355000 11.339300 10.237100
+v -3.620930 14.909800 7.608570
+v -1.855860 12.525800 4.811630
+v -5.274990 12.021700 10.148100
+v -2.030450 6.175180 4.939250
+v -2.591060 7.878160 5.855610
+v -2.273050 7.160520 5.343340
+v -1.509020 12.417300 4.272520
+v -5.043920 13.059700 9.797360
+v 0.731550 11.332800 0.768255
+v -5.449110 11.313400 10.435800
+v -1.054250 12.399500 3.588070
+v -0.829914 5.099570 3.070470
+v -3.631080 10.283300 7.575650
+v -5.350900 11.469900 10.266500
+v -5.307590 11.007000 10.196900
+v -4.339020 14.385800 8.760820
+v -5.421410 11.070200 10.414600
+v -5.359870 11.136500 10.321900
+v -1.853290 5.464060 4.710120
+v 3.899200 9.078140 -4.203300
+v -0.206836 4.795400 2.122690
+v -5.587030 11.265300 10.689000
+v -0.417021 3.957190 2.409010
+v -1.956720 5.711100 4.858100
+v -4.773830 13.829400 9.451520
+v -2.752340 13.831200 6.290940
+v -2.190160 13.068100 5.434010
+v -5.071700 12.590200 9.935060
+v -0.419625 3.565280 2.459440
+v 0.152461 5.699070 1.591490
+v -5.332970 11.683600 10.349000
+v -5.338640 10.978700 10.346800
+v -3.700890 14.986400 7.862550
+v -5.540760 11.153200 10.654700
+v -2.750700 8.495320 6.259410
+v -0.225463 3.942470 2.207000
+v -0.358324 4.886300 2.438740
+v -0.552455 12.377600 2.915340
+v -0.637914 5.088670 2.917120
+v -1.033050 5.299070 3.519230
+v -5.493130 11.456300 10.680900
+v -2.011710 7.126230 5.137220
+v -2.092140 7.358650 5.270260
+v -5.488410 11.037600 10.668900
+v -0.233015 3.553280 2.278240
+v -0.054351 12.123400 2.204060
+v -5.435510 10.994900 10.569700
+v -1.242730 5.243370 3.885250
+v -5.331260 11.873700 10.471700
+v -5.338440 10.905600 10.460500
+v -5.616710 11.254000 10.910400
+v -3.017360 14.303100 6.893360
+v 0.377360 6.028070 1.397330
+v -4.810120 13.575000 9.685360
+v -5.078290 10.840600 10.083900
+v -3.792980 14.934000 8.152960
+v 3.503430 10.125900 -3.367210
+v -1.800060 6.603160 4.847090
+v -2.380290 8.082460 5.788810
+v -1.335120 5.245910 4.090060
+v -1.765290 6.188850 4.818980
+v -5.566190 11.427400 10.886700
+v -2.114220 12.729200 5.518580
+v -5.575450 11.163600 10.897800
+v -0.259766 1.449210 2.364440
+v -0.415581 1.832810 2.618090
+v -1.744420 12.136200 4.934450
+v -4.853420 13.329400 9.802190
+v -4.876570 10.665200 9.776890
+v -1.069140 12.220300 3.858210
+v -0.392029 2.968990 2.589250
+v -2.356190 13.268900 5.936170
+v 2.762490 5.715770 -2.241980
+v -5.403820 11.603800 10.669800
+v -3.816380 10.414600 8.160800
+v 1.610780 10.891300 -0.327876
+v 3.935040 7.454890 -4.006590
+v -0.266955 3.048050 2.449530
+v -0.969265 5.438780 3.606490
+v 0.790112 6.400250 0.879214
+v -2.939620 9.206990 6.780710
+v -5.536460 11.050800 10.884700
+v -2.537400 8.594230 6.138940
+v -0.565766 4.703840 3.000030
+v -4.567180 10.596200 9.394340
+v -5.528220 11.708500 10.931700
+v -5.443540 11.798300 10.778400
+v -0.270340 1.767920 2.457200
+v -5.108320 12.349600 10.309000
+v -3.891510 14.766700 8.462000
+v -0.483366 4.066410 2.888430
+v 0.145867 4.570820 1.918350
+v -1.649640 5.827320 4.734380
+v -1.454620 5.394740 4.428520
+v 0.067883 3.938660 2.050100
+v -0.319598 2.395860 2.625750
+v -0.177354 2.336870 2.405210
+v -1.327840 11.930600 4.402200
+v -1.545400 5.631900 4.603150
+v -1.164770 5.503740 4.005760
+v -4.891100 12.989000 10.010100
+v -0.419395 0.994292 2.772000
+v -0.364433 2.372700 2.719060
+v -0.419277 3.728040 2.839320
+v -5.596250 11.174500 11.100000
+v 0.335218 5.865730 1.703500
+v -2.038960 12.389800 5.603900
+v 0.031400 3.487880 2.168100
+v -1.542000 6.203780 4.665380
+v -1.750450 7.298870 5.018600
+v 3.567470 6.369430 -3.316940
+v -0.627320 5.356370 3.221940
+v -3.943690 14.627800 8.625000
+v -0.399375 0.666542 2.797090
+v -1.328070 5.888440 4.371010
+v 2.261270 5.808970 -1.260140
+v -1.243130 5.654600 4.217850
+v -4.873300 10.714200 10.058000
+v -1.812850 7.832340 5.206040
+v -5.228590 12.096500 10.652800
+v -5.569260 11.565900 11.144800
+v 0.531335 6.344870 1.483850
+v -0.404628 2.003330 2.848840
+v -0.473102 0.449867 2.921330
+v -0.547398 1.148760 3.062090
+v -2.294280 12.988800 6.100920
+v -5.518190 11.035900 11.098500
+v -5.579320 11.211100 11.199300
+v -5.530580 11.695700 11.139500
+v -0.004210 2.959040 2.296470
+v -2.081770 8.439750 5.676370
+v -5.014820 10.778000 10.289900
+v -4.696480 10.648600 9.791610
+v -2.767910 9.410070 6.749520
+v -0.576528 0.825335 3.165260
+v 1.490910 6.278140 0.062076
+v -0.310764 1.394810 2.745630
+v -5.227040 10.839300 10.659000
+v -1.018100 11.840300 4.101300
+v -5.449620 11.893100 11.034000
+v -5.015390 12.536500 10.369800
+v -5.240730 10.924800 10.726500
+v -2.451620 13.528200 6.425080
+v -2.820400 14.199100 6.999290
+v 0.974015 10.777200 0.988514
+v -4.015520 10.522700 8.791970
+v -5.330720 11.978800 10.916100
+v -3.053420 9.791220 7.313240
+v -3.386460 14.945000 7.954410
+v -0.404850 1.608240 2.968180
+v -0.343310 3.041420 2.905450
+v 3.695090 9.501050 -3.217050
+v -5.490230 11.841800 11.204700
+v -1.371840 6.853090 4.621230
+v -2.900670 14.400500 7.187340
+v -5.574280 11.359000 11.298900
+v -1.583850 11.452900 5.061610
+v -1.313060 6.189200 4.516900
+v -2.270860 8.972050 6.084250
+v -4.666380 13.326600 9.935700
+v -0.774059 11.923300 3.853430
+v -0.533060 0.377824 3.211530
+v 1.025710 6.821460 0.925938
+v -4.100630 14.210800 9.115170
+v 3.259970 10.132800 -2.517610
+v 0.009133 1.404950 2.366150
+v 0.519768 6.216880 1.679270
+v -1.284320 6.614870 4.537180
+v 0.048680 2.216020 2.383450
+v 0.066472 1.707990 2.385890
+v -0.511889 5.695350 3.386710
+v -2.596850 9.586200 6.744860
+v -5.277680 10.912900 10.969000
+v 0.123858 2.875200 2.315460
+v -5.238240 10.804500 10.885900
+v -1.227150 11.283900 4.623880
+v -2.892330 9.898200 7.201780
+v -3.203060 10.245900 7.695960
+v -4.841210 10.696300 10.300200
+v 0.309312 3.911370 2.088670
+v -4.694020 10.697800 10.072400
+v -0.309593 2.068050 3.021190
+v -5.043200 10.715200 10.625900
+v -1.523120 7.648170 5.027100
+v -0.986578 5.802450 4.146000
+v -0.759583 5.768300 3.794880
+v -3.488560 14.911900 8.311190
+v -1.601940 10.701700 5.268680
+v -5.483660 11.765200 11.366000
+v -1.883310 8.860680 5.668660
+v -2.182850 12.599200 6.223730
+v 0.255440 3.472050 2.201040
+v -4.783060 12.961500 10.300900
+v -5.120360 12.233200 10.787500
+v -0.267327 2.354820 2.971550
+v -1.582700 8.518520 5.216970
+v -3.123670 14.905500 7.778020
+v -2.127330 9.192510 6.089640
+v -1.412060 7.473510 4.917060
+v -1.882640 11.708800 5.752120
+v -0.000316 1.301260 2.604490
+v -4.207940 10.633600 9.402160
+v 2.521090 10.136500 -1.148710
+v -4.217780 13.869400 9.480580
+v -5.281890 12.070500 11.144000
+v -5.480330 11.165000 11.440700
+v -3.590680 14.768500 8.551040
+v -5.298190 10.923900 11.170400
+v -5.430760 11.010600 11.383300
+v -0.545489 0.378806 3.503450
+v -5.201060 12.113100 11.057200
+v -3.011570 14.784900 7.670200
+v -4.863830 12.690200 10.519900
+v -1.005070 11.248600 4.454190
+v -5.511350 11.296400 11.503600
+v -2.643500 14.055200 7.082440
+v -0.314102 1.647740 3.188410
+v 0.428472 4.591610 2.096340
+v -5.074700 10.682600 10.845800
+v -3.419480 10.404400 8.231570
+v -2.337550 13.213700 6.606720
+v -5.278440 10.834800 11.151500
+v 0.757753 6.717210 1.625050
+v -1.365190 8.278640 4.982480
+v -2.449130 9.752430 6.712670
+v -3.207720 14.940400 8.051440
+v -2.725560 10.103900 7.191340
+v -0.925159 11.223500 4.407580
+v 0.215567 2.891650 2.403050
+v -1.080700 7.005560 4.534630
+v 3.888780 7.021230 -3.234260
+v -5.333170 11.646200 11.297800
+v -1.225980 10.544700 4.878690
+v -4.315520 13.548100 9.784940
+v -0.222262 3.628850 3.156950
+v -0.123995 2.994300 2.990260
+v -1.812320 10.981700 5.817880
+v 0.490534 4.996990 2.058280
+v -0.890686 6.078500 4.246350
+v -2.366760 9.908420 6.689620
+v -0.392516 5.981160 3.513740
+v -3.356430 14.924800 8.327680
+v -1.979500 9.437210 6.048170
+v 0.051898 1.003910 2.677980
+v -4.829380 10.680700 10.535700
+v 1.206410 7.433580 1.025030
+v -0.164104 2.390550 3.059380
+v -0.646316 6.005420 3.927710
+v 0.559752 5.501530 2.031370
+v -0.838881 11.246800 4.357110
+v -5.308320 12.016200 11.342100
+v -0.232860 3.975010 3.222920
+v -3.027090 14.870400 7.851010
+v 3.169780 6.203860 -2.004060
+v -5.438490 11.571600 11.584200
+v -2.313090 12.855000 6.727170
+v -0.217069 4.721650 3.265290
+v -4.346860 10.687500 9.842130
+v 0.320789 3.451940 2.378320
+v 0.741295 6.670360 1.831970
+v -1.674570 9.221120 5.671360
+v -0.828776 6.272150 4.280540
+v -3.698750 14.382600 8.963920
+v 0.258658 2.259920 2.495570
+v 0.090315 0.742560 2.698780
+v -5.307490 11.550200 11.396700
+v -1.875450 10.024700 5.996390
+v -1.015360 7.379750 4.591720
+v -4.406740 13.298300 10.069700
+v -0.612640 11.420100 4.093250
+v -4.972590 12.343100 10.934900
+v -2.920990 14.749200 7.763790
+v 0.233490 2.954440 2.558270
+v 2.597540 6.291770 -1.061650
+v -2.843630 14.558700 7.643580
+v -2.126980 12.060500 6.466260
+v -5.299890 11.481300 11.419800
+v -0.354731 1.302240 3.450860
+v -0.095926 11.600900 3.284120
+v 0.134549 2.346230 2.741610
+v 0.068079 2.349640 2.847180
+v -1.544210 9.767630 5.540820
+v 1.858800 6.925150 0.156418
+v -0.163167 1.968270 3.205790
+v -3.111420 14.971300 8.103890
+v -1.105850 8.009140 4.806520
+v -1.038000 7.602070 4.694210
+v -5.069930 10.666300 11.101700
+v -0.610694 6.188910 4.025810
+v -2.943010 14.878500 7.875780
+v 1.271950 7.702760 1.119080
+v -4.419950 10.718800 10.073700
+v 0.413694 3.915010 2.362430
+v 1.838400 9.839680 0.271732
+v -2.930510 10.354600 7.746550
+v 3.996140 8.281760 -3.100270
+v 0.686195 5.811860 2.021000
+v -5.392790 11.386500 11.663200
+v 0.477974 11.167800 2.477340
+v -5.309050 11.938900 11.524700
+v -0.322805 6.168530 3.597110
+v -2.620970 14.251100 7.378480
+v -2.186790 10.473800 6.613110
+v 0.499699 4.540780 2.279030
+v -0.759672 6.565850 4.327550
+v -5.295820 11.451900 11.536100
+v -1.173900 9.957080 5.036410
+v -0.146032 5.144750 3.318270
+v 3.452610 9.503470 -2.207480
+v 0.039394 2.992160 2.983770
+v 0.333006 3.465860 2.537650
+v -5.024760 12.225800 11.121300
+v -5.362950 11.803600 11.640500
+v -5.096310 12.136500 11.233500
+v 0.233760 2.950380 2.718000
+v -3.215770 14.938300 8.391680
+v -0.334850 1.103000 3.572720
+v -0.185495 1.665630 3.330190
+v 0.220723 1.390070 2.691030
+v -2.545760 10.352700 7.224870
+v -5.359430 11.208500 11.646100
+v -0.438210 0.852646 3.716650
+v 0.275627 2.271220 2.634920
+v -4.841640 10.640700 10.831400
+v 0.089613 0.397633 2.925030
+v -0.750625 7.108260 4.394970
+v -1.282370 9.028770 5.245090
+v -0.006529 3.568520 3.124880
+v -2.799050 14.496800 7.745430
+v 0.034553 2.392520 3.038370
+v -4.499420 10.732900 10.325200
+v 0.585067 4.983510 2.241630
+v -1.248980 9.478350 5.216820
+v 0.181136 2.981160 2.860630
+v -2.674570 14.377700 7.595330
+v -0.488962 0.515532 3.862050
+v 1.391390 9.873710 1.137390
+v 0.365685 1.665690 2.552790
+v -2.822370 14.758700 7.815410
+v 0.363138 3.864260 2.584120
+v -5.287760 11.072500 11.596800
+v -5.181960 12.042400 11.455800
+v -2.083980 11.322900 6.594900
+v 0.292746 1.500740 2.693750
+v -0.936391 10.489100 4.796470
+v -3.595610 10.471900 8.959440
+v 0.390908 1.440990 2.520100
+v -4.549920 12.891100 10.516500
+v -0.527463 6.524950 4.115370
+v 0.012339 3.972170 3.213570
+v -1.003600 9.797150 4.938570
+v 0.396584 1.801810 2.565650
+v -5.197950 10.982600 11.508900
+v -5.248200 11.928100 11.614500
+v -3.106770 10.479100 8.234460
+v 0.288109 3.358100 2.791350
+v -2.202020 12.281100 6.896200
+v -3.264250 14.734100 8.622730
+v -2.449380 13.893600 7.302760
+v -0.979315 8.526280 4.882800
+v 0.005263 4.682220 3.255310
+v -4.582550 12.774400 10.618000
+v 0.436727 4.573360 2.622790
+v -2.407830 13.478800 7.281390
+v -1.016870 8.940240 5.001450
+v 1.992760 9.346100 0.304752
+v -2.942050 14.965900 8.153230
+v -1.017060 9.359110 5.014750
+v -0.266396 6.494730 3.749520
+v -0.099650 5.582370 3.477040
+v 0.184470 1.957310 2.949180
+v -5.125180 10.846600 11.459100
+v -4.604900 10.656900 10.657700
+v -0.770161 10.593200 4.663290
+v 0.339032 1.835310 2.729110
+v -5.267970 11.787600 11.765700
+v 2.016670 7.473270 0.281668
+v -3.911700 10.593000 9.602270
+v 2.724910 9.419720 -0.803098
+v -0.004418 0.294207 3.256790
+v 0.905502 7.579890 2.001960
+v 0.725232 5.441290 2.237670
+v 0.215290 3.427390 2.992110
+v 0.846076 6.177430 2.102560
+v -2.675770 14.464300 7.803720
+v -2.359060 10.805700 7.232600
+v -5.009970 10.732900 11.356200
+v -2.657070 14.400500 7.761230
+v 1.509560 9.431330 1.131900
+v -3.392140 14.434400 8.918400
+v -0.173903 1.312080 3.583700
+v 0.309916 1.511900 2.832260
+v -2.674780 10.658800 7.744380
+v 0.338496 3.846430 2.875630
+v -0.179901 1.157400 3.624770
+v 0.652140 10.765300 2.548780
+v 0.337898 1.885940 2.835780
+v -0.449619 6.996250 4.162800
+v 0.094471 1.983070 3.197120
+v -2.767460 14.895300 7.973460
+v 0.782380 5.849400 2.220440
+v -4.699730 12.409500 10.983100
+v -5.103020 11.035400 11.588700
+v -5.239370 11.561600 11.814700
+v 1.514670 8.223010 1.176940
+v -3.170440 14.699100 8.625600
+v 0.168508 1.597240 3.105820
+v 2.092170 8.942410 0.267404
+v 0.595875 4.969750 2.517780
+v -4.684130 10.646700 10.908000
+v -0.268733 6.779480 3.916600
+v -0.684263 7.529990 4.628480
+v -5.172760 11.274400 11.735100
+v 0.048669 1.616840 3.347460
+v -4.118070 13.323800 10.109600
+v 0.297002 1.544480 2.938480
+v -3.013290 14.869500 8.426130
+v 0.118624 5.102740 3.341020
+v -5.122180 11.141600 11.678800
+v 0.386765 1.122520 2.810920
+v 2.089660 8.053170 0.313779
+v 3.503090 6.873640 -1.921820
+v 1.547890 9.064070 1.188820
+v 0.406976 4.691660 2.873000
+v -0.606967 10.618600 4.630790
+v -0.771837 8.366520 4.839330
+v -4.034630 10.645400 10.001600
+v -4.198030 10.695300 10.229800
+v -0.020668 5.920620 3.587640
+v 0.287314 3.901980 3.060960
+v 2.106940 8.539090 0.323436
+v -2.378050 12.984800 7.444050
+v 0.933075 6.564310 2.118440
+v 2.814540 7.033130 -0.811605
+v 0.258202 4.677090 3.134580
+v -0.046484 0.287898 3.542650
+v 1.596570 8.719690 1.177310
+v 2.834000 9.033300 -0.749212
+v -4.764900 12.249900 11.186900
+v -4.756670 10.643400 11.137400
+v -2.177530 11.605600 7.125920
+v -3.053730 14.710500 8.615130
+v -2.393190 13.480200 7.556780
+v 0.727544 5.355660 2.476440
+v -4.810820 12.179900 11.331100
+v -0.707006 7.958330 4.816720
+v -2.771180 10.776000 8.090190
+v 3.601140 8.718870 -1.911760
+v 0.327317 4.998240 3.154780
+v -2.313480 12.470800 7.458350
+v 0.252448 10.873500 3.416020
+v -4.236500 12.958800 10.474200
+v 0.428231 1.248950 2.940210
+v 0.462986 0.862081 2.885300
+v -2.262590 13.889600 7.448860
+v -2.587450 14.758600 7.953220
+v -4.830400 10.760200 11.372200
+v 0.884430 6.225120 2.332530
+v 2.870070 8.485890 -0.714933
+v -3.077370 14.510000 8.760940
+v 0.065659 1.366220 3.542370
+v 0.180270 5.504540 3.462500
+v -3.746630 13.824300 9.777300
+v 0.027686 6.173700 3.702060
+v -2.522340 13.202000 7.852710
+v -0.289609 10.734100 4.304970
+v 3.647490 7.669430 -1.922300
+v -2.316690 14.125800 7.554930
+v -3.854070 13.570300 9.988700
+v -4.515400 10.639100 10.934800
+v -4.354600 10.678300 10.686300
+v -4.876410 12.062000 11.536700
+v -4.870960 10.886500 11.502300
+v -2.537170 14.521600 7.936880
+v -4.209110 10.693200 10.500800
+v -4.897860 11.065300 11.589900
+v -0.658307 9.781610 4.931450
+v -4.299230 12.687400 10.699000
+v 0.828043 5.891140 2.498530
+v -2.936040 10.758300 8.498460
+v 0.565032 5.111250 2.901510
+v -0.092847 0.833184 3.870110
+v -3.512730 14.111700 9.512240
+v 2.966460 7.822930 -0.764841
+v -2.438660 11.236600 7.770890
+v -4.939030 11.324300 11.723900
+v -4.928870 11.943200 11.700800
+v -4.925010 11.171600 11.677400
+v -3.888270 13.324600 10.108400
+v 0.083865 1.143400 3.621330
+v -3.295150 10.544700 9.163690
+v 0.973515 6.557880 2.400670
+v 0.024171 6.799530 3.892370
+v -4.043070 10.710100 10.321400
+v 0.407886 1.362150 3.147710
+v -2.448110 14.265800 7.954570
+v -3.980340 12.984500 10.298900
+v 0.394812 5.369330 3.281630
+v -0.636984 8.929280 4.979590
+v -4.967140 11.744800 11.819000
+v -4.966500 11.564100 11.814400
+v -3.878810 10.660200 10.093400
+v -2.734710 10.911400 8.311210
+v -2.305430 14.214700 7.720350
+v -2.305630 11.858300 7.699170
+v -2.504900 11.155200 7.997650
+v 0.859405 9.920110 2.708120
+v 0.084214 6.578270 3.845150
+v 0.506605 1.012820 3.057540
+v -2.540520 14.916800 8.131290
+v -4.452680 12.340500 11.099800
+v 0.271500 5.861610 3.573520
+v 0.657553 5.390140 2.931860
+v -2.274990 13.468600 7.705060
+v 0.868060 6.306660 2.635420
+v 0.900002 6.600140 2.628020
+v -0.578162 9.361060 5.005260
+v -2.600450 15.020400 8.300540
+v -2.376410 12.511200 7.896450
+v 0.552854 0.538214 3.040030
+v -0.329065 7.536460 4.552850
+v -3.622130 10.620500 9.778510
+v -2.402320 12.927300 7.924740
+v -4.679550 10.731200 11.461000
+v -2.437970 14.332300 8.051480
+v -2.364770 11.829900 7.923640
+v 0.314823 1.336600 3.469560
+v -4.518620 12.223300 11.281900
+v -2.734410 14.918800 8.555020
+v -2.684360 11.003500 8.419710
+v -2.394470 14.821200 8.056550
+v -4.090250 12.531900 10.663200
+v -3.248480 14.204900 9.363960
+v 0.256278 6.233920 3.703800
+v -0.009957 7.077180 4.143150
+v -2.886600 14.285600 8.809330
+v -2.795980 10.926000 8.590570
+v 0.304344 1.157930 3.558320
+v -2.099140 13.905000 7.588020
+v -4.060530 10.773200 10.592600
+v 0.735220 5.861580 2.980110
+v 0.946020 6.856430 2.673530
+v -2.757500 13.968500 8.631740
+v -4.484400 10.663300 11.287400
+v 0.938343 9.449180 2.765840
+v -4.231590 10.711300 10.883300
+v 0.134940 0.869273 3.828320
+v 0.469763 1.082020 3.312440
+v -4.332900 10.678900 11.081200
+v -3.617270 13.593200 10.036100
+v -4.734810 11.033500 11.705600
+v -0.338975 9.916610 4.808220
+v -4.525600 12.133700 11.414500
+v -0.294693 8.345490 4.750740
+v -3.143030 10.802000 9.262270
+v -4.643690 10.844200 11.611800
+v -0.033341 0.447511 4.161550
+v -4.770130 11.139900 11.790500
+v -3.732250 13.053200 10.213500
+v -2.743990 14.784600 8.707930
+v -2.500930 13.290900 8.296240
+v -2.098780 14.080700 7.685470
+v -3.793170 12.583800 10.340700
+v -3.889390 10.834600 10.461100
+v -2.564340 14.142400 8.465320
+v -2.623630 13.784300 8.550680
+v 0.591235 5.946430 3.343430
+v -2.345660 14.628100 8.110430
+v -2.299910 13.267300 8.011530
+v -0.266787 7.831970 4.710670
+v -2.348820 12.953500 8.123770
+v -2.749270 14.586100 8.790770
+v -3.481610 10.854300 9.850480
+v 1.034460 7.295480 2.705300
+v -3.980930 12.344000 10.666600
+v 0.509201 10.153200 3.594080
+v 0.028369 7.441660 4.263930
+v -4.248020 12.228800 11.064300
+v -3.490870 13.826200 9.920410
+v -2.528070 13.463800 8.408140
+v -2.296430 12.606800 8.059550
+v 0.357538 6.585450 3.772390
+v -2.544110 13.659600 8.478110
+v -0.043874 10.124700 4.488300
+v 0.791261 6.292870 3.096390
+v -3.597930 13.352800 10.125700
+v -4.760020 11.272400 11.866000
+v 1.010170 8.956660 2.801460
+v -3.719370 10.873700 10.261000
+v -4.584570 12.039400 11.645200
+v -2.548990 13.857600 8.506480
+v -2.143930 14.185700 7.880750
+v -2.486660 11.310000 8.350630
+v -2.278540 14.216000 8.094280
+v -2.080190 13.509800 7.809190
+v 0.781180 6.689810 3.178180
+v -4.611680 10.979700 11.694800
+v -4.338560 12.108900 11.330800
+v 1.057110 8.455250 2.809960
+v -2.940460 14.125400 9.200410
+v -4.748900 11.559200 11.970200
+v 0.590320 6.309780 3.500610
+v 0.543983 6.651080 3.581070
+v -3.561250 13.136000 10.151900
+v -3.608930 12.778300 10.194800
+v 0.666720 0.642671 3.234970
+v -2.391780 12.971000 8.340250
+v -4.623000 11.925000 11.812900
+v -2.370870 14.250200 8.319380
+v -4.695220 11.784700 11.947300
+v -3.250470 14.004700 9.745450
+v -2.661070 14.330200 8.808280
+v -2.354130 12.710300 8.297860
+v -2.466790 13.293500 8.488890
+v -2.271590 11.969700 8.183820
+v -4.099360 10.833700 11.016800
+v -4.221280 10.799400 11.208500
+v -2.466350 14.306000 8.545130
+v -0.212210 8.916310 4.900700
+v -0.252138 9.333530 4.950450
+v 0.350975 0.859814 3.812940
+v 0.637270 7.298320 3.518910
+v -4.083160 12.090800 11.016200
+v -4.588240 11.069100 11.818800
+v -2.290220 14.412600 8.302290
+v 1.104960 7.925870 2.844680
+v -2.276400 15.052200 8.282020
+v -4.126280 10.919300 11.080000
+v -2.411530 15.082300 8.494410
+v -1.941020 13.853900 7.770140
+v 0.691437 0.362282 3.345300
+v -4.472580 11.477200 11.682300
+v -4.235980 10.907700 11.299400
+v -4.521400 11.935000 11.774500
+v -4.543210 11.448200 11.774900
+v -4.322960 12.065800 11.448200
+v -4.341250 10.830200 11.448800
+v -4.335220 10.919100 11.475900
+v -2.281260 14.193100 8.343710
+v -3.356370 10.954600 9.935240
+v -2.192800 14.664300 8.202100
+v -2.580490 13.567400 8.784690
+v -4.452350 11.545900 11.667900
+v -4.416040 12.011800 11.625100
+v -2.169980 14.865100 8.215270
+v -3.654750 11.495700 10.460200
+v -3.602530 10.994800 10.367400
+v -3.754930 12.014200 10.630200
+v -2.960660 10.972800 9.366040
+v -2.377730 13.037600 8.506580
+v -2.344650 13.811900 8.450460
+v -2.465260 13.204500 8.669000
+v -2.712480 13.817800 9.073480
+v -4.556790 11.204500 11.900700
+v -2.458340 14.988600 8.683690
+v -4.373560 11.641400 11.602200
+v -3.612740 12.116400 10.424100
+v -2.546370 13.217800 8.783360
+v -3.430630 13.369000 10.175100
+v -3.068880 14.044400 9.662140
+v 0.272318 0.563497 4.127850
+v -3.765660 10.999400 10.686100
+v -3.669040 11.824300 10.557400
+v -4.545310 11.799500 11.899900
+v -4.152530 11.972900 11.289900
+v -3.407310 13.195300 10.152800
+v -2.468770 12.962100 8.683550
+v -3.365470 12.956800 10.089000
+v -2.541360 12.976100 8.845350
+v -3.826450 11.676100 10.826800
+v -4.537840 11.382200 11.934500
+v -2.579260 11.166300 8.867580
+v -2.673520 12.984100 9.057990
+v -3.363480 13.530000 10.130600
+v -3.896850 11.866500 10.926600
+v -1.926100 14.030900 7.894360
+v -3.314870 13.711000 10.059800
+v -3.566350 11.152500 10.429000
+v -3.292200 13.052600 10.045200
+v -2.488400 14.853300 8.829740
+v -3.744580 11.155600 10.719700
+v -3.893300 10.898400 10.918900
+v 0.187838 7.907470 4.468240
+v -3.826930 10.971200 10.826400
+v -3.547410 11.946800 10.414300
+v -2.242990 12.037700 8.376920
+v 0.630142 0.735289 3.622780
+v -2.315160 12.757500 8.539200
+v -3.747050 11.331300 10.747100
+v 0.193977 8.269040 4.513820
+v -3.793810 11.128800 10.818700
+v -2.434890 12.700900 8.730830
+v -2.532390 12.756600 8.886770
+v -2.172580 14.511500 8.339800
+v -3.570910 11.349600 10.456600
+v -3.766180 11.462000 10.769200
+v -2.617970 13.474400 9.021640
+v -2.638270 13.120200 9.050150
+v -3.319320 13.225600 10.157100
+v -4.453260 11.566700 11.896800
+v -3.430390 11.628400 10.278100
+v -2.369980 11.430500 8.617080
+v 0.142113 9.450990 4.642580
+v -3.229210 11.231400 9.958890
+v -3.357870 12.561000 10.192700
+v -3.123820 13.906400 9.893450
+v -2.609510 12.549900 9.062660
+v -2.186730 14.179500 8.416720
+v -3.227880 13.169100 10.021800
+v -4.348820 11.005200 11.726500
+v -3.288350 13.470600 10.128100
+v -3.954180 11.596600 11.129600
+v -1.895510 13.527300 7.955370
+v -3.212450 13.721200 10.021700
+v 0.732620 9.558020 3.792600
+v -2.047310 14.193700 8.251860
+v -2.440980 14.461500 8.876810
+v -2.676470 12.631400 9.183310
+v -3.982580 11.791100 11.241900
+v 0.438672 0.456714 4.067750
+v -3.876110 10.987200 11.064400
+v -2.204650 14.045500 8.521300
+v 0.720566 8.021750 3.808340
+v -2.441640 14.681600 8.883650
+v -4.124120 11.886600 11.454500
+v -3.797540 11.062100 10.929700
+v -2.276110 12.232300 8.578650
+v -3.112360 13.598500 9.955260
+v -2.612870 12.329000 9.146300
+v -3.181370 12.843200 10.047300
+v -3.784930 11.305100 10.963700
+v -3.194670 13.414100 10.061900
+v -2.402010 12.395100 8.798910
+v -4.340020 11.159300 11.802400
+v -3.167650 13.262600 10.019900
+v -2.825340 13.915300 9.500670
+v -1.889430 14.144000 8.045410
+v -4.288810 11.759300 11.745000
+v -3.048510 13.847800 9.890130
+v -4.349790 11.290700 11.872200
+v -2.984270 13.942000 9.797750
+v 0.594686 0.359444 3.890380
+v -2.392460 11.735300 8.826270
+v -3.084090 11.642100 9.877800
+v -1.800130 13.822800 7.924430
+v -4.189780 11.835400 11.617300
+v -2.795420 11.231500 9.422640
+v -2.739970 12.933100 9.379560
+v -2.693230 12.144500 9.322830
+v -3.889690 11.029600 11.176000
+v -3.888950 11.448400 11.189800
+v -3.018320 12.243400 9.847120
+v 0.228626 8.766030 4.661160
+v -2.231650 14.438700 8.640370
+v -3.109260 13.004800 9.982800
+v -3.112110 11.463000 9.954690
+v -3.101540 12.278200 9.961570
+v 0.740816 8.425550 3.896460
+v -3.004020 13.676200 9.875110
+v -4.120580 11.688800 11.586800
+v -2.793950 11.958000 9.492450
+v -2.732550 12.294700 9.407000
+v -3.104650 12.895100 10.003100
+v -2.960870 13.702400 9.796860
+v -2.948310 13.858000 9.783020
+v -4.113020 11.028900 11.544300
+v -3.081760 13.094900 10.016300
+v -2.838390 13.825000 9.654000
+v -4.002560 11.700900 11.415700
+v -2.823590 12.219200 9.583970
+v -2.452900 12.059100 9.001680
+v -2.745740 12.821900 9.511960
+v -2.590330 11.780300 9.249360
+v -3.040880 13.451900 9.993810
+v -2.488700 11.460400 9.086080
+v -2.672590 13.600200 9.398350
+v -3.077990 13.491500 10.030100
+v -2.723030 11.634800 9.434350
+v -3.974660 11.043100 11.380100
+v -2.972900 12.710000 9.852990
+v -2.678060 13.159300 9.404950
+v -3.040040 13.165000 10.008200
+v -2.873540 12.720100 9.745630
+v -4.119530 11.203900 11.662200
+v -3.948180 11.419300 11.400000
+v -3.837690 11.144700 11.195000
+v -2.837950 13.693000 9.695700
+v 0.775307 8.742140 3.931400
+v -4.179720 11.352100 11.741300
+v -4.093150 11.558700 11.613100
+v -3.949330 11.155600 11.413600
+v -2.956780 12.843100 9.907870
+v -2.679710 13.572700 9.497970
+v -2.783940 13.764500 9.645460
+v -2.177810 15.148300 8.770790
+v -3.818630 11.256500 11.249900
+v -4.048800 11.166800 11.590900
+v -2.985840 12.950200 9.971260
+v -2.670930 13.202900 9.522700
+v -1.714240 13.985100 8.045640
+v -2.763770 12.995500 9.672370
+v -2.230850 15.098500 8.890370
+v -2.703860 13.199400 9.558810
+v -2.324600 14.957100 9.018500
+v -2.735760 13.549000 9.629200
+v -2.922830 13.089100 9.948170
+v -2.894200 13.136200 9.912220
+v -2.924540 13.595300 9.941580
+v -3.922030 11.245600 11.447900
+v -1.902890 14.251600 8.365170
+v -2.829700 12.856000 9.785310
+v -2.038360 15.162600 8.605950
+v -2.014470 14.261500 8.583830
+v -2.650800 13.579200 9.564160
+v -2.894600 13.509800 9.947580
+v -2.867170 12.984700 9.870280
+v -2.792440 13.036600 9.756180
+v -2.788870 13.213000 9.762910
+v -1.967040 13.539900 8.505990
+v -2.292130 14.783200 9.044900
+v -1.839400 13.729000 8.320930
+v -2.892070 13.356300 9.989260
+v -2.765140 13.126800 9.790400
+v -2.919140 13.286800 10.024000
+v -2.720610 13.351600 9.718960
+v -2.758090 13.480300 9.803930
+v -1.960890 13.650200 8.602190
+v -2.707900 13.528700 9.774200
+v -2.860810 13.249300 9.994850
+v -2.822880 13.274800 9.937520
+v -2.769690 13.346100 9.887020
+v -1.684150 14.163400 8.197700
+v -1.896240 15.044000 8.551930
+v -2.810840 13.364500 9.943970
+v -1.883400 14.847500 8.572690
+v -1.937980 13.785000 8.636650
+v -2.032980 13.665100 8.765130
+v -2.235570 15.031100 9.161100
+v -2.185790 14.617600 9.048050
+v -2.169320 15.169800 9.047350
+v -1.880810 14.693200 8.614370
+v -1.978800 13.757900 8.783900
+v -2.078130 15.201500 8.960750
+v -4.315090 10.361500 6.663630
+v -5.266660 13.133300 8.216380
+v 3.550650 10.491200 -5.628840
+v 4.532240 0.595538 -7.391980
+v 4.340090 7.994820 -6.932820
+v 2.129530 5.400290 -3.532310
+v -3.243180 13.412000 5.055440
+v 1.091460 12.179000 -1.732070
+v -5.511600 13.216900 8.621550
+v -4.984710 13.796000 7.801720
+v -5.434960 13.613900 8.522040
+v 3.143000 12.491000 -4.918610
+v 1.630880 4.789750 -2.730880
+v -5.486830 13.586700 8.607520
+v -0.120602 12.528200 0.205345
+v 4.164880 9.930970 -6.567690
+v -5.438290 13.173000 8.529370
+v 3.921670 7.543440 -6.224230
+v -5.316620 12.644400 8.345830
+v -5.243600 12.996900 8.242710
+v -5.623450 13.543100 8.849400
+v -5.097670 14.342300 8.035390
+v -1.556950 13.120100 2.489700
+v -5.505560 13.213400 8.670070
+v -5.582780 13.365800 8.811000
+v -5.387740 12.157900 8.468060
+v -0.319455 5.381740 0.385279
+v -3.711850 8.600070 5.766400
+v -4.306980 14.259500 6.843600
+v -5.432260 11.648300 8.574890
+v -4.496760 14.409700 7.177630
+v -4.003560 9.593170 6.298640
+v -5.516920 13.562800 8.746980
+v -5.213180 13.830200 8.280260
+v -2.451780 4.986470 3.775030
+v -5.402750 12.307900 8.559970
+v -4.884690 11.014400 7.721760
+v -4.505400 14.473500 7.223310
+v -4.119690 14.062400 6.614110
+v -5.599970 13.494400 8.902410
+v -5.375100 12.946200 8.543680
+v -5.447710 12.835400 8.654770
+v -1.067650 13.001200 1.826650
+v -5.523920 13.009200 8.796810
+v -4.387050 14.386200 7.052140
+v -5.639630 13.360400 8.976630
+v -5.589630 13.140700 8.894450
+v -4.506360 10.667900 7.163390
+v -4.886420 14.929500 7.872300
+v 3.648250 10.165000 -5.585540
+v -3.511140 7.882720 5.563710
+v -4.967980 14.795600 8.002440
+v -5.548370 13.050300 8.881890
+v -5.484960 13.777900 8.788640
+v 3.835530 10.101600 -5.873390
+v -5.553620 13.226700 8.885880
+v -5.013230 14.597400 8.072650
+v 3.349280 7.314630 -5.171760
+v -5.638660 13.378500 9.046940
+v -4.781850 10.921600 7.661840
+v -5.404870 11.971000 8.664200
+v -4.920390 13.979300 7.945660
+v -5.370040 11.244400 8.605990
+v -5.625920 13.288700 9.048370
+v 1.574350 4.870760 -2.390980
+v 0.569689 12.126600 -0.645809
+v -5.366300 13.927900 8.694580
+v -5.431040 12.232200 8.756760
+v -5.536390 12.869500 8.926700
+v 3.310840 11.754500 -4.918720
+v -5.470410 13.706200 8.860620
+v -5.444830 13.838000 8.827180
+v -5.628190 13.263000 9.117030
+v -4.524450 14.904000 7.416100
+v 4.262810 9.393760 -6.452160
+v -4.625870 10.785200 7.501890
+v -4.892660 10.936500 7.925440
+v 3.432900 10.737200 -5.097880
+v -2.577930 5.185280 4.175880
+v -4.151100 10.111100 6.739110
+v -3.351490 13.665200 5.572210
+v -5.553570 12.998000 9.018110
+v -2.628210 13.396500 4.462970
+v 3.109740 11.849000 -4.524660
+v -5.598450 13.369800 9.130740
+v 2.943820 6.173370 -4.392620
+v 3.765910 7.918170 -5.651120
+v -5.478920 12.733000 8.919210
+v -5.554330 13.149400 9.068390
+v 4.240430 8.202540 -6.370250
+v -5.570990 13.523000 9.098590
+v -4.370770 14.504600 7.246820
+v -1.363320 13.019000 2.525630
+v -4.389670 14.766500 7.318210
+v -5.597010 13.300100 9.174540
+v 4.306500 8.945070 -6.405670
+v -5.552070 13.102200 9.114220
+v -5.542270 13.608300 9.111190
+v -3.576560 13.835300 6.029470
+v -1.786300 13.094800 3.233330
+v -3.868080 9.415560 6.400500
+v -2.661950 5.410130 4.444190
+v -3.607900 8.499570 5.987500
+v -4.914400 14.295700 8.166120
+v -4.275050 14.565800 7.189420
+v -0.509863 5.279090 1.102600
+v 3.505190 10.245400 -5.062230
+v -5.429100 13.870300 8.996060
+v -3.925930 14.204500 6.648580
+v -5.503310 12.855800 9.100100
+v -5.097290 14.136100 8.516240
+v -1.666120 13.031900 3.110910
+v -5.428190 13.714600 9.014130
+v -5.459680 12.722300 9.064140
+v -2.914220 13.550400 5.095690
+v -2.717460 5.672980 4.623290
+v -5.515140 12.962800 9.168860
+v 1.876150 5.201790 -2.567140
+v 1.271030 4.996780 -1.616720
+v -5.204720 10.984000 8.654240
+v 3.915670 9.678200 -5.640050
+v -5.407470 13.954100 9.029070
+v 2.747340 11.465000 -3.765930
+v 3.746000 9.729000 -5.346340
+v -4.726640 10.767200 7.930390
+v -5.438310 13.688300 9.102910
+v -2.745320 6.125360 4.718250
+v -4.484720 14.973600 7.663790
+v -4.279440 14.756000 7.332860
+v -5.423440 12.255400 9.084210
+v -3.165470 13.744400 5.587840
+v -3.966920 14.405800 6.849130
+v -4.022690 9.903810 6.843160
+v -2.775600 6.529810 4.820040
+v -4.324850 14.885300 7.437470
+v -4.301410 10.361400 7.311630
+v -5.490190 13.177100 9.230960
+v -5.478650 13.464100 9.220560
+v -2.818960 13.578200 5.067070
+v 0.565248 5.348220 -0.399709
+v -5.409040 13.859500 9.141320
+v -0.819787 12.810400 1.932710
+v 3.665770 7.868100 -5.191860
+v 3.628780 9.851080 -5.072680
+v -5.468880 13.503400 9.271730
+v -4.584700 14.877300 7.927610
+v -5.461390 13.106800 9.261380
+v -5.259200 14.055200 8.967290
+v 4.171180 8.288620 -5.898130
+v 0.038149 5.485980 0.501359
+v -2.846110 6.932370 5.048590
+v -3.747590 9.211050 6.524410
+v -5.392760 11.653600 9.145380
+v -3.398160 13.949900 6.084950
+v -5.436890 12.906700 9.263240
+v -5.421070 12.289700 9.225790
+v -5.420470 13.016300 9.249690
+v -4.662070 14.718500 8.104900
+v -4.151140 14.790600 7.308650
+v -5.396700 13.609900 9.230580
+v -1.901180 13.103900 3.772540
+v -2.885170 7.131840 5.174850
+v -5.348920 13.917400 9.187620
+v -4.241910 14.876400 7.465610
+v -5.415860 11.474500 9.223910
+v -4.728590 14.518200 8.237120
+v -2.757870 13.549700 5.145280
+v -3.703000 14.306500 6.675840
+v 3.241910 11.233300 -4.254820
+v 1.406830 5.247060 -1.526750
+v -5.391820 13.273600 9.314440
+v 3.929990 8.511010 -5.371110
+v -5.400180 12.854200 9.343480
+v 3.862310 9.258180 -5.235060
+v 4.089090 9.224120 -5.585330
+v 1.868840 11.471700 -2.045300
+v -3.956290 9.795740 7.026840
+v -4.997400 10.811200 8.674070
+v -4.437510 10.485700 7.812380
+v -5.392570 13.425100 9.364710
+v -4.317890 14.977300 7.721250
+v -3.009890 13.776400 5.672080
+v -5.352100 13.731800 9.343000
+v -4.120620 14.910400 7.461770
+v -5.344540 13.179700 9.350390
+v -4.572830 14.706100 8.180760
+v -5.324640 11.241800 9.294130
+v 2.678130 11.261700 -3.211450
+v 1.051330 11.735200 -0.661896
+v 3.800450 9.240130 -4.997930
+v -1.424650 12.910300 3.252060
+v -5.159250 14.014100 9.139940
+v -3.046170 7.902340 5.694450
+v -1.049160 12.785000 2.676330
+v -2.238580 13.225900 4.561580
+v -0.176184 5.452370 1.181660
+v -4.939170 14.213300 8.827660
+v -4.398780 14.944200 8.016370
+v 0.402728 11.868900 0.437907
+v -5.353700 13.480900 9.473030
+v -5.306470 13.062600 9.406200
+v -4.209210 14.945300 7.733750
+v 0.739860 5.622310 -0.212440
+v -5.290430 13.720900 9.433150
+v 2.743540 5.649570 -3.327710
+v 3.878480 8.483320 -5.016720
+v -4.050530 10.250100 7.427090
+v -5.347250 13.235700 9.513750
+v -4.494230 14.740300 8.232600
+v -3.161400 13.992700 6.153100
+v -4.818620 10.552300 8.680450
+v -1.452870 12.845400 3.458530
+v -5.342300 12.570900 9.563160
+v -5.293170 13.539600 9.518430
+v 3.386870 6.429980 -4.230480
+v -3.158080 8.452190 6.055880
+v -2.834490 13.742700 5.692870
+v -5.209650 10.963800 9.347370
+v -5.272740 12.966300 9.483990
+v 3.055460 11.050100 -3.548370
+v -5.273210 13.204600 9.560970
+v -5.265380 13.378100 9.593040
+v -5.340670 11.637900 9.672090
+v -4.247110 14.929300 8.045120
+v -4.562870 14.440300 8.547030
+v 3.468820 10.506700 -4.083050
+v 0.376690 5.864520 0.646025
+v -2.467090 13.408100 5.301590
+v -4.007200 14.948000 7.757520
+v -1.615780 12.808200 3.969170
+v -0.401553 12.483200 2.074690
+v -5.065250 13.834000 9.420990
+v 0.068535 5.762670 1.222630
+v -5.059340 10.862100 9.349970
+v -3.352790 14.389400 6.762650
+v -4.181030 10.408200 7.990090
+v -3.339770 9.220300 6.640710
+v -4.809540 14.118200 9.100890
+v -5.320720 11.955700 9.851790
+v -3.407490 14.510500 6.927760
+v -2.674220 13.661900 5.787060
+v -5.331260 11.358300 9.898110
+v -5.320880 11.161200 9.872390
+v -5.147410 13.143900 9.648720
+v -4.129760 14.915100 8.107810
+v -1.962330 12.885300 4.694830
+v -2.929060 13.947600 6.233820
+v 2.433020 5.488180 -2.358590
+v -1.461270 5.049150 3.745090
+v -1.256340 5.080060 3.425880
+v -5.100400 13.360200 9.649130
+v -5.271470 12.124700 9.897950
+v -5.257280 11.003000 9.842550
+v 3.726220 9.844870 -4.208340
+v -5.136370 12.785900 9.710240
+v -5.030750 13.600200 9.587710
+v -3.485520 9.745710 7.108340
+v -0.350961 5.098940 2.094520
+v -5.263500 11.503700 9.949820
+v -4.905160 10.627000 9.371560
+v -0.487504 5.103170 2.356560
+v -5.304900 11.832500 10.038500
+v -4.185890 14.771400 8.362260
+v -4.456030 10.476200 8.686500
+v -3.553740 14.720000 7.393280
+v 1.920010 5.563320 -1.377170
+v -1.577390 5.038230 4.081900
+v 1.121560 5.841890 -0.104742
+v -3.580230 14.809100 7.478430
+v -2.233950 6.981130 5.194530
+v -2.117410 6.570110 5.003060
+v 0.605103 6.053300 0.744542
+v 3.199740 5.901830 -3.297760
+v 3.691590 6.855530 -4.054320
+v -1.508480 13.828900 8.100660
+v -1.740520 13.915000 8.470060
+v -2.011280 14.547700 8.868350
+v -2.195810 14.836400 9.166480
+v -1.570750 13.998600 8.179700
+v -2.176030 14.728000 9.214550
+v -1.930720 15.216300 8.845100
+v -1.478510 13.457300 8.120730
+v -2.195480 15.100300 9.311800
+v -1.804010 13.929700 8.680440
+v -1.916030 14.006400 8.878690
+v -1.632270 13.771600 8.382830
+v -2.184390 14.859400 9.353060
+v -2.122200 15.196100 9.267930
+v -1.690800 14.360000 8.544830
+v -1.541600 14.242800 8.310290
+v -1.560040 13.403900 8.414470
+v -2.181890 14.771100 9.373450
+v -2.058430 15.224200 9.195710
+v -1.544450 13.647600 8.358510
+v -1.566190 13.094800 8.380270
+v -1.776970 14.394200 8.749200
+v -1.916100 14.643900 9.059360
+v -2.210900 15.119700 9.513900
+v -2.152620 15.235600 9.511280
+v -1.744300 15.101800 8.872460
+v -1.781280 14.767800 8.874280
+v -1.769320 14.923500 8.859370
+v -2.204090 14.922500 9.555330
+v -1.657690 14.098000 8.751080
+v -2.178050 14.814900 9.581910
+v -1.881030 15.241800 9.133860
+v -1.280640 13.872600 8.168600
+v -2.352620 14.966400 9.878600
+v -2.018730 14.721400 9.305310
+v -2.276410 15.120900 9.723280
+v -2.244980 14.936300 9.680560
+v -1.719520 14.223200 8.919680
+v -2.348240 15.134800 9.885310
+v -1.541700 14.065700 8.601330
+v -2.288020 15.223600 9.883230
+v -1.409960 13.880600 8.451210
+v -2.066790 15.288100 9.515550
+v -1.271870 14.027500 8.244410
+v -2.188550 15.213100 9.706080
+v -2.198380 14.835800 9.713430
+v -2.284580 14.867900 9.917750
+v -1.395720 14.498800 8.589570
+v -1.288150 14.245600 8.384410
+v -2.105580 15.283500 9.709970
+v -1.725760 15.168400 9.176770
+v -2.181350 15.275500 9.892740
+v -2.106060 14.844000 9.786510
+v -2.587390 15.277800 10.505400
+v -2.030010 14.806700 9.624910
+v -1.779050 14.810900 9.241460
+v -1.708750 14.994000 9.176150
+v -1.245030 13.676600 8.424430
+v -1.130630 13.512400 8.246560
+v -1.863650 15.286200 9.528880
+v -1.336960 14.195600 8.642770
+v -2.200680 14.896600 10.012400
+v -1.229460 13.391800 8.464770
+v -1.891610 14.820200 9.619910
+v -1.366900 14.280600 8.795980
+v -2.160690 14.942000 10.093900
+v -1.176710 14.453500 8.560330
+v -1.991260 14.895600 9.845090
+v -1.153740 13.113200 8.455410
+v -1.391890 14.343800 8.860020
+v -1.342200 14.524900 8.788600
+v -2.095030 15.283100 9.986490
+v -1.773350 15.008900 9.546300
+v -1.921980 15.028300 9.800350
+v -1.947500 15.277100 9.800970
+v -1.754610 15.186600 9.580870
+v -1.215010 14.559200 8.735110
+v -2.069680 15.055200 10.055700
+v -1.087910 13.978300 8.570930
+v -1.884380 15.156600 9.861370
+v -2.048540 15.202800 10.089200
+v -1.106600 14.372100 8.738250
+v -0.909712 14.084000 8.397890
+v -0.813503 13.785900 8.325570
+v -0.968358 13.813300 8.532110
+v -1.129270 14.413900 8.801390
+v -1.018840 14.248100 8.714070
+v -0.914014 13.554800 8.585560
+v -0.887042 14.085300 8.633030
+v -0.864477 13.206700 8.611180
+v -0.796070 14.403200 8.533100
+v -0.775695 13.941900 8.614970
+v -0.845871 14.618000 8.708150
+v -0.849312 14.463000 8.770500
+v -0.838660 14.353900 8.770060
+v -0.685767 13.730400 8.611980
+v -0.746989 14.252900 8.725150
+v -0.700814 14.191800 8.668360
+v -0.542899 14.229400 8.509690
+v -0.513996 13.615400 8.612570
+v -0.573716 14.335700 8.732560
+v -0.515294 13.989700 8.647590
+v -0.472112 14.544500 8.632270
+v -0.535594 14.229400 8.717820
+v -0.520923 14.450900 8.751660
+v -0.448311 14.260500 8.720920
+v -0.439696 14.084600 8.672710
+v -0.273419 14.344000 8.569540
+v -0.345865 14.270500 8.682810
+v -0.301585 13.944700 8.639350
+v 0.151384 12.959700 -2.192990
+v -5.756740 13.115600 7.050940
+v -3.805110 6.865190 3.849360
+v 3.788960 2.205770 -8.122500
+v -1.184350 13.162600 -0.092297
+v 1.702310 5.081980 -4.795740
+v 4.089140 3.803540 -8.558320
+v -5.756970 13.668500 7.022220
+v -5.726150 14.263600 6.982930
+v 4.128280 9.688900 -8.543010
+v -4.005910 8.291780 4.144770
+v -3.705370 5.900250 3.616920
+v -5.895380 14.087300 7.220180
+v 3.820960 3.812160 -8.214580
+v 1.929240 5.337220 -5.229220
+v 1.271120 4.877780 -4.212690
+v -5.636070 13.849500 6.791220
+v 4.235890 2.499990 -8.911800
+v -3.668970 11.942200 3.659540
+v 3.587790 1.538770 -7.847100
+v -5.778670 13.424900 7.076260
+v 3.285100 5.603610 -7.280570
+v 4.033270 2.588450 -8.522200
+v -3.543470 5.256880 3.389530
+v 4.103460 2.585410 -8.639550
+v 3.788360 4.223370 -8.116730
+v 3.392840 0.614924 -7.781280
+v -4.218170 9.043360 4.313810
+v 3.636860 1.885170 -8.136100
+v 2.037710 5.169820 -5.567920
+v 1.438320 5.041140 -4.648420
+v 3.927360 11.177100 -8.421640
+v 3.696700 12.756200 -8.023250
+v -5.918190 13.903000 7.021150
+v -4.225110 9.493190 4.272720
+v -3.884870 11.297200 3.780790
+v 4.060380 3.749640 -8.830790
+v 0.373016 13.014800 -2.851990
+v -4.039350 10.558700 3.986210
+v -0.938020 5.004360 -0.996624
+v -3.631750 5.516000 3.223220
+v -6.004010 14.521700 7.127770
+v 4.098820 4.302360 -8.915990
+v 3.970400 1.540630 -8.782300
+v 0.943598 4.744360 -3.978100
+v 2.363620 5.025610 -6.197630
+v 3.895640 5.891900 -8.581240
+v -2.387280 13.007700 1.408030
+v -6.164430 14.367500 7.346070
+v 3.491460 4.571460 -8.005520
+v 4.005090 8.256630 -8.726370
+v 4.015980 10.184100 -8.703070
+v 3.691090 2.593000 -8.376530
+v -6.148530 14.304400 7.279210
+v 3.646680 2.306030 -8.320110
+v -4.178140 9.972000 4.083390
+v 1.633000 5.187540 -5.121010
+v 3.921900 6.923070 -8.663630
+v -0.145411 13.099700 -2.168170
+v -6.085400 14.219300 7.136500
+v 4.058560 0.981682 -8.680310
+v -3.799000 6.201550 3.728320
+v -3.226480 5.089850 2.800930
+v -2.220670 13.123300 1.410930
+v 3.823150 3.210690 -8.271560
+v 1.459860 13.102100 -4.353890
+v -5.675500 13.478100 6.789370
+v 3.548860 4.948060 -7.836180
+v 3.792720 2.628520 -8.283710
+v -3.830320 6.627520 3.729500
+v 3.951350 6.244900 -8.454810
+v -3.500910 5.254590 3.168920
+v 4.091040 3.126670 -8.764720
+v 4.020670 1.243070 -8.702680
+v 1.584940 13.158100 -4.626490
+v 4.038270 7.630340 -8.592260
+v -3.688580 5.666750 3.442090
+v 3.320330 13.010500 -7.350940
+v 3.702630 2.007520 -8.936670
+v 3.754350 3.167860 -8.986840
+v 3.678010 12.705600 -8.657660
+v 1.962130 4.407780 -6.177910
+v 1.907650 4.796700 -6.094680
+v 3.979880 5.070820 -9.339320
+v 1.603290 13.323600 -5.438470
+v -4.057710 6.288190 3.256270
+v 1.953320 4.183430 -6.205330
+v -4.048650 11.262700 3.338880
+v 3.551320 2.071800 -8.756760
+v 3.053270 4.933050 -7.929600
+v 3.715700 1.689100 -9.037370
+v 3.377260 13.231300 -8.252190
+v -0.500215 4.675950 -2.381920
+v 3.613230 3.675790 -8.859470
+v -6.385970 14.274800 7.011450
+v 3.844470 3.638330 -9.230520
+v 3.607200 7.000310 -8.794150
+v -3.838850 5.783610 2.818060
+v 0.868302 13.226000 -4.373790
+v 2.082890 4.354790 -6.480870
+v -3.805220 11.938400 2.891910
+v 2.071140 4.131780 -6.500890
+v -0.486521 13.216900 -2.291310
+v -4.138620 6.582650 3.255670
+v 1.346580 5.091400 -5.358030
+v 2.077960 4.722020 -6.521910
+v -6.326270 13.839900 6.832440
+v 1.594170 4.939990 -5.756890
+v 3.704190 3.700470 -9.090490
+v 3.404080 4.093460 -8.622950
+v -4.179960 7.125300 3.307060
+v -4.407440 8.384640 3.686040
+v -4.287240 10.610700 3.547630
+v 2.626170 4.831650 -7.404600
+v 1.793400 4.405560 -6.137160
+v 3.830560 4.304090 -9.343860
+v -1.829450 12.838100 -0.297091
+v 3.568980 7.523490 -8.871330
+v 0.342957 13.211700 -3.701940
+v 1.788780 4.181300 -6.165610
+v -3.438420 5.102580 2.028720
+v 2.478960 4.767130 -7.249640
+v -6.403810 13.582100 6.844050
+v -6.294400 14.110800 6.689730
+v 3.837820 10.261900 -9.254410
+v 3.549700 6.490410 -8.900450
+v -3.620390 5.371240 2.272480
+v 1.906080 4.001120 -6.403960
+v -4.451040 7.976900 3.629030
+v -1.181230 13.065500 -1.378010
+v 2.592060 4.444620 -7.486290
+v 1.669770 4.793590 -6.037230
+v 3.254920 4.580330 -8.517040
+v -4.005800 6.022120 2.862000
+v -6.448430 14.112900 6.868870
+v 2.016190 4.345420 -6.591830
+v -4.365010 7.548310 3.460870
+v 0.971236 13.273600 -4.764090
+v -2.495440 5.288950 0.472734
+v 2.006080 4.122610 -6.609140
+v 3.486850 4.152070 -8.928250
+v -3.670150 0.840713 2.183870
+v -6.462230 13.234400 6.835480
+v 2.582370 4.220840 -7.527410
+v 2.487710 4.398890 -7.376420
+v 2.664180 4.812710 -7.643420
+v -3.548650 4.718670 2.053800
+v -4.089810 6.206200 2.922130
+v -6.555100 14.491400 6.960490
+v 2.696910 13.420700 -7.530130
+v -3.631550 1.164090 2.083720
+v -4.540540 9.800890 3.699930
+v -6.520540 14.646100 6.907940
+v 2.480530 4.176210 -7.420240
+v -6.564520 14.382400 6.953670
+v -6.333990 13.813300 6.574320
+v -4.079890 11.437300 2.993370
+v 2.619040 4.431210 -7.655660
+v -3.736360 0.393744 2.195370
+v -3.894470 0.395448 2.441110
+v 1.733340 4.336190 -6.271080
+v -3.441460 12.392000 1.998900
+v 3.560330 6.958320 -9.072390
+v -4.593360 8.948990 3.724520
+v 1.983920 4.708780 -6.678390
+v 1.730160 4.113620 -6.296250
+v 1.886280 13.396000 -6.334660
+v -3.238080 5.116840 1.484010
+v -4.401590 10.637500 3.427050
+v -6.462290 14.431400 6.735690
+v -0.227858 4.625310 -3.241250
+v 3.638990 4.323740 -9.300730
+v 2.608630 4.207770 -7.692610
+v -0.255879 13.258800 -3.017710
+v -3.806600 5.711720 2.341560
+v -3.617450 0.465492 1.923880
+v -3.557440 4.081680 1.913280
+v 2.142820 4.717840 -6.982470
+v 3.065040 5.041310 -8.417430
+v 2.647020 4.801530 -7.781940
+v -6.530280 13.970500 6.789510
+v 1.866300 4.294650 -6.588510
+v 3.315930 4.837200 -8.854280
+v -4.652320 9.381300 3.712840
+v -4.206420 6.543220 2.948340
+v 3.592560 11.935300 -9.122020
+v 2.606890 4.423280 -7.753900
+v 2.290130 4.681250 -7.260960
+v -4.146170 0.533706 2.701940
+v 1.859860 4.073100 -6.605870
+v 2.353780 4.337970 -7.384430
+v -6.614480 14.282100 6.863920
+v 3.545330 8.461360 -9.158240
+v 2.596780 4.200030 -7.788460
+v -3.336240 3.971700 1.482970
+v 3.455600 6.007360 -9.087050
+v -3.366750 3.579920 1.524570
+v -3.477160 1.848020 1.646920
+v -3.570320 1.009950 1.772480
+v 2.349930 4.116820 -7.428070
+v -2.236590 5.391260 -0.222883
+v 3.664430 5.069030 -9.459710
+v 1.585060 4.695780 -6.226140
+v -3.584530 3.743770 1.835230
+v -3.604100 0.682469 1.780510
+v 1.733460 4.322930 -6.479200
+v -4.100760 0.870846 2.554830
+v -3.079230 12.496500 1.225280
+v -3.617580 2.019290 1.829620
+v -3.689730 1.624560 1.926150
+v -3.469510 2.984280 1.613030
+v -6.619980 14.221200 6.790640
+v 1.730270 4.100690 -6.499250
+v 2.444780 4.013140 -7.627980
+v -6.603970 13.759900 6.734560
+v 3.530610 7.558180 -9.271150
+v 0.533351 13.341700 -4.446070
+v -3.198680 5.113100 1.191170
+v 3.546660 8.986450 -9.271020
+v -4.293130 7.015340 2.943570
+v -3.392980 4.901380 1.476070
+v -3.572260 2.388650 1.701490
+v 3.120150 5.223020 -8.723980
+v 2.512640 4.374050 -7.802210
+v 3.344630 13.110800 -8.903160
+v -3.974800 5.998960 2.377380
+v 3.430620 4.902850 -9.244150
+v 1.155700 13.354800 -5.503290
+v -0.837255 13.103100 -2.387660
+v -3.690940 3.058060 1.843490
+v 1.772540 4.637180 -6.673700
+v 2.504840 4.152010 -7.835550
+v -4.011700 1.320410 2.290790
+v -3.554920 2.411930 1.599460
+v 2.514130 4.732120 -7.850040
+v 2.281930 4.313340 -7.510530
+v -3.640260 1.411360 1.689460
+v -4.099980 1.121710 2.378360
+v -1.482430 12.854300 -1.445890
+v -3.794000 2.085370 1.915890
+v 3.482330 12.375200 -9.228770
+v -3.890510 1.665500 2.053930
+v 2.279780 4.092770 -7.551050
+v -3.503660 1.783990 1.431540
+v -0.024903 13.312000 -3.745030
+v 0.643125 13.382600 -4.788310
+v -3.461710 1.465120 1.348720
+v 3.375940 5.723350 -9.250500
+v -3.490480 3.064070 1.426980
+v -4.078150 6.187190 2.405840
+v 2.188790 4.646500 -7.438790
+v -6.759540 14.366400 6.770320
+v 3.250040 5.487260 -9.090490
+v -6.162240 14.548900 7.259670
+v 3.661200 3.240520 -8.381930
+v -2.894150 12.794200 2.091060
+v 4.044600 1.948160 -9.024330
+v 4.050090 4.937260 -8.987890
+v -5.861020 13.895300 6.715550
+v 1.434530 5.075600 -4.904140
+v -5.975930 14.269000 6.897330
+v 3.413980 0.614817 -8.100710
+v -4.118790 8.024080 3.850750
+v -3.460750 5.311130 2.749150
+v 4.027220 2.456170 -9.027970
+v 3.609810 3.717910 -8.342760
+v -3.564190 12.232700 3.066730
+v -3.419000 12.411200 2.837910
+v -3.991700 7.020030 3.611180
+v -5.910500 14.050500 6.772970
+v -0.822365 13.173100 -1.233300
+v 3.512770 4.118340 -8.236480
+v 3.987070 1.645040 -9.043370
+v 4.004210 3.111450 -9.033690
+v -6.039360 13.700500 6.903580
+v 2.542420 5.000210 -6.719560
+v 3.551650 1.846180 -8.373930
+v 3.983450 9.007150 -8.898160
+v 2.853460 5.098510 -7.226210
+v -6.077880 13.415900 6.926700
+v -4.113200 7.617400 3.718650
+v 3.371870 1.062470 -8.151270
+v -3.749410 11.853900 3.234880
+v 4.020620 3.756650 -9.113820
+v -3.561890 5.451670 2.784070
+v 3.786670 12.135000 -8.557460
+v -4.074610 7.394950 3.621240
+v -3.855450 5.816710 3.235920
+v 0.709813 13.130400 -3.740960
+v 3.846870 6.452170 -8.801680
+v 0.178889 13.142700 -2.914770
+v -6.235030 14.584100 7.142670
+v 3.652990 1.633530 -8.619280
+v -3.968850 11.263300 3.514020
+v -4.295480 8.956500 3.961420
+v -4.299230 9.375440 3.973600
+v 3.404610 1.386240 -8.265760
+v 3.912090 5.602320 -8.970500
+v -4.262370 9.813360 3.904840
+v 3.483090 0.687828 -8.419700
+v 3.555810 2.241660 -8.505570
+v -6.166510 14.478300 6.977490
+v 3.561340 0.904911 -8.558290
+v -4.261520 8.542610 3.841570
+v 3.080450 5.119330 -7.720330
+v -6.136920 13.137900 6.874650
+v 2.125100 4.842370 -6.253670
+v 3.604750 3.204780 -8.617750
+v -6.031800 13.536700 6.691840
+v 4.021460 4.308430 -9.253480
+v 3.542200 1.232740 -8.586120
+v 3.600500 2.611490 -8.649570
+v 2.116330 4.440130 -6.290660
+v 3.945090 9.663690 -9.037420
+v 3.906920 3.124510 -9.126440
+v -2.652680 12.819500 1.351280
+v -4.007470 11.238800 3.429780
+v -4.229130 10.505500 3.751970
+v 3.812730 6.005940 -8.933170
+v -6.344550 14.439800 7.146940
+v 3.648540 2.635020 -8.752920
+v -3.989140 6.093900 3.263460
+v 3.798540 2.576760 -8.997950
+v -3.369870 5.112190 2.264760
+v 3.441250 4.090830 -8.409000
+v 2.103720 4.215020 -6.315310
+v 3.700580 3.148330 -8.860300
+v -6.327060 14.398000 7.082160
+v 3.568080 3.673080 -8.642740
+v 3.852230 5.721410 -9.045860
+v -6.249490 14.003900 6.933580
+v 3.311750 4.510950 -8.245050
+v 3.831850 11.120500 -8.913500
+v 1.192600 5.024670 -4.931710
+v -4.190490 5.874120 0.642926
+v -5.035710 8.050350 1.982350
+v 0.537741 13.553100 -6.611870
+v 1.251330 13.832100 -7.759980
+v 2.730760 13.121400 -10.094600
+v -5.099380 8.454570 2.043820
+v -4.733990 6.717220 1.428650
+v 0.024336 13.360500 -5.862200
+v -5.022610 9.586640 1.966970
+v 1.313300 4.798520 -8.096860
+v -4.387770 5.917060 0.843982
+v -4.171640 6.202370 0.510834
+v -4.698670 6.320160 1.354880
+v -1.507430 4.753250 -3.675250
+v 2.653600 12.360300 -10.059400
+v -5.144850 8.771530 2.053370
+v -0.410505 5.032650 -5.440280
+v -4.495590 6.333310 0.933946
+v -4.335140 6.251060 0.676775
+v 1.983650 13.978400 -9.027610
+v -4.497840 9.946710 1.008700
+v -4.149580 7.605010 0.398395
+v -4.514820 6.627060 0.910361
+v -3.592500 10.799900 -0.460082
+v -2.695700 11.753800 -1.850530
+v -4.248400 6.590060 0.474776
+v -2.107620 12.194900 -2.746870
+v -1.044160 4.825650 -4.618600
+v 1.674560 13.983500 -8.686750
+v -4.576310 6.883870 0.921722
+v -3.634390 6.844620 -0.552349
+v -4.444190 6.584800 0.682076
+v 1.483060 4.988030 -8.629000
+v -4.599830 9.476690 1.009010
+v -0.890441 4.888520 -4.898390
+v 2.145150 13.775800 -9.450440
+v -0.289984 5.099520 -5.877150
+v 2.524420 12.549700 -10.114800
+v 2.078670 13.649300 -9.393710
+v -3.127440 5.863010 -1.452620
+v 1.129470 13.804600 -7.908790
+v 0.345373 13.489000 -6.726760
+v 1.864410 14.084400 -9.089050
+v -4.683510 8.984930 0.995294
+v -1.681080 12.664800 -3.616100
+v 2.124540 13.902700 -9.534740
+v -4.662900 7.323790 0.897973
+v -1.151640 12.977400 -4.494800
+v 1.546170 14.061400 -8.685920
+v -4.731290 8.484060 0.973781
+v -2.385690 5.014950 -2.776710
+v -0.623631 5.085820 -5.557010
+v 1.942890 13.557100 -9.379800
+v 2.189680 13.426100 -9.809020
+v 1.640130 5.218000 -9.120600
+v 2.267810 13.488200 -9.912940
+v -0.774422 5.052140 -5.350340
+v -4.795190 7.955200 0.973062
+v -3.833630 7.458630 -0.573775
+v 2.022370 13.996100 -9.624100
+v 2.264320 13.550800 -10.042600
+v 0.011960 4.703600 -6.725120
+v 0.180814 4.684060 -6.965070
+v -0.889036 13.113700 -5.098990
+v 1.694210 14.123800 -9.151620
+v 1.441020 13.984700 -8.760790
+v -3.938980 7.728660 -0.533924
+v -0.263773 4.949230 -6.346240
+v 2.050930 13.380900 -9.758860
+v 1.755730 5.427180 -9.481730
+v 2.365640 12.853000 -10.302700
+v -2.546230 5.266710 -2.780750
+v 2.283500 7.032000 -10.337100
+v 2.535410 6.303470 -10.750000
+v 2.288920 12.843700 -10.192800
+v 2.339810 6.579360 -10.423900
+v 2.561130 5.765600 -10.833000
+v 2.635940 6.529930 -10.937100
+v 1.773770 13.523900 -9.412490
+v -0.970798 5.089760 -5.314940
+v 2.268000 10.541700 -10.286600
+v 2.303490 11.755200 -10.317700
+v -0.165242 4.802720 -6.619350
+v 2.301740 9.695970 -10.364900
+v 2.214980 7.990600 -10.274300
+v -0.379023 13.333400 -6.067300
+v 2.326280 6.040400 -10.470500
+v 2.301220 7.232180 -10.404500
+v 2.259570 7.492400 -10.334800
+v 2.333490 10.532500 -10.380500
+v 2.374570 11.746400 -10.419600
+v 2.215920 6.578530 -10.294100
+v 2.429150 6.971850 -10.658500
+v 2.241660 9.704370 -10.278600
+v -0.659760 5.198940 -5.848310
+v -0.833587 13.170100 -5.393690
+v 1.806240 13.531000 -9.514000
+v 2.361020 7.406400 -10.572200
+v 1.860710 5.713060 -9.808250
+v 2.366270 12.862800 -10.436600
+v 2.279630 7.978700 -10.415700
+v 2.562190 7.021500 -10.882800
+v 2.149490 6.332530 -10.255400
+v -0.071416 4.122580 -6.867760
+v -0.086516 4.345230 -6.848380
+v 0.045379 4.109070 -7.033750
+v 2.156700 12.837300 -10.136500
+v 2.647730 5.949650 -11.063500
+v 0.033224 4.331380 -7.018580
+v 2.180190 13.597000 -10.163500
+v -4.027530 9.900580 -0.581596
+v 2.154970 10.548700 -10.238400
+v 2.138140 9.710790 -10.234200
+v 2.333930 10.523700 -10.495000
+v 2.302320 9.687820 -10.470300
+v 1.866010 14.030900 -9.694580
+v 2.375120 11.738000 -10.544000
+v 1.890270 13.373600 -9.781430
+v 0.801167 13.727100 -8.077050
+v 2.232140 8.857340 -10.428000
+v -1.897830 12.296400 -3.890050
+v -2.188340 4.889460 -3.584590
+v 0.116247 4.645410 -7.199100
+v 2.180890 11.761900 -10.265400
+v 2.165260 8.849270 -10.310900
+v 2.775610 5.325330 -11.383600
+v 2.258730 8.020530 -10.517300
+v 2.341940 5.590480 -10.680800
+v 1.518760 14.086100 -9.198700
+v 2.610680 6.836990 -11.074300
+v 1.934980 6.026870 -10.037400
+v -0.904850 5.094930 -5.622790
+v 2.593530 5.358450 -11.090600
+v 2.412280 7.456710 -10.793600
+v -0.194005 4.191150 -6.794570
+v -2.039350 4.807990 -3.895160
+v 1.944920 10.878400 -9.992750
+v 1.930740 10.422000 -9.955200
+v -3.521460 6.303050 -1.527940
+v 1.939180 9.829480 -9.991050
+v 2.062290 8.843590 -10.242300
+v 1.964990 9.180390 -10.082600
+v -0.212187 4.415530 -6.773390
+v 1.969420 12.095200 -10.050900
+v 2.267440 8.069740 -10.612900
+v 2.244980 8.865640 -10.562100
+v 2.762860 5.518730 -11.456600
+v 1.966610 11.214400 -10.055900
+v 1.962930 12.404900 -10.025700
+v 2.375810 7.819990 -10.781600
+v 2.486270 7.360280 -10.967300
+v 2.909050 4.827530 -11.718000
+v 2.243190 9.682290 -10.566300
+v 2.007420 8.456010 -10.227700
+v 0.000716 4.082340 -7.195630
+v 2.269190 10.517500 -10.599400
+v -1.389120 4.922020 -5.007480
+v 1.981120 11.717200 -10.093700
+v 1.617460 13.558700 -9.483030
+v 1.983290 11.492500 -10.104100
+v 2.792420 4.742330 -11.530800
+v 2.290630 12.870300 -10.558800
+v 2.018890 9.713500 -10.243700
+v 2.004010 12.835300 -10.148900
+v 2.304910 11.732200 -10.657300
+v 2.025590 6.573290 -10.314400
+v -0.012549 4.303990 -7.184550
+v 2.580560 7.069290 -11.179700
+v 2.638830 4.942220 -11.320700
+v 2.024020 13.151800 -10.206500
+v 2.037570 7.585210 -10.336400
+v -4.124910 9.459350 -0.655473
+v 2.024450 10.551800 -10.249100
+v 2.649390 6.399900 -11.326500
+v 2.043640 7.091970 -10.363200
+v -4.165950 8.251290 -0.625079
+v -1.779860 4.835210 -4.437840
+v 3.022250 4.759580 -11.954900
+v 2.037890 13.614500 -10.243000
+v 1.384920 13.981300 -9.217530
+v 1.880490 7.480180 -10.127400
+v 2.039290 11.764900 -10.276900
+v 2.039960 12.711600 -10.263600
+v -3.352970 10.915900 -1.902470
+v -4.192350 9.092600 -0.632087
+v 3.045170 4.538110 -12.056600
+v -0.927750 5.190530 -5.835210
+v 2.853530 5.178630 -11.754600
+v -0.154106 4.011360 -7.057450
+v 1.950760 8.841910 -10.240600
+v 1.697290 13.997700 -9.727230
+v -1.991850 4.867080 -4.169970
+v 1.746110 13.382400 -9.855550
+v 2.200370 8.872040 -10.677500
+v -0.093039 13.405800 -6.962480
+v -0.326500 4.807800 -6.803360
+v -1.296010 5.176450 -5.314330
+v 2.308700 7.997070 -10.888600
+v -0.305543 4.194660 -6.921920
+v 2.246420 5.134670 -10.893600
+v -1.484730 5.042560 -5.037840
+v 2.703530 5.821900 -11.579000
+v -4.228590 8.748610 -0.670550
+v 1.515360 13.652000 -9.572370
+v 2.140240 9.680640 -10.627200
+v -0.053122 4.718910 -7.324580
+v -0.326510 4.419150 -6.903920
+v -1.664700 4.872920 -4.800750
+v 2.159060 12.873600 -10.636500
+v -0.116459 4.133160 -7.282430
+v 1.915870 9.711850 -10.304500
+v 2.156630 10.515800 -10.665900
+v -0.838117 5.350970 -6.107100
+v -0.132668 4.356100 -7.273490
+v 2.182830 11.730500 -10.729300
+v 1.911940 10.549900 -10.315500
+v -1.630600 12.745400 -4.725420
+v 1.080060 13.754300 -8.944500
+v 1.561480 13.905600 -9.713410
+v 1.872450 12.838700 -10.226700
+v 1.860610 8.844620 -10.306200
+v 1.494860 13.779100 -9.656720
+v 1.875650 13.598500 -10.260100
+v 2.110230 8.874740 -10.743100
+v 1.917250 11.763200 -10.349000
+v 2.892880 4.976580 -12.036300
+v -2.330420 5.222700 -3.901550
+v 1.740440 5.919020 -10.253200
+v 2.604490 6.409730 -11.587900
+v 2.020720 9.683420 -10.636700
+v -0.220061 4.733450 -7.250870
+v 1.662030 13.428700 -9.976430
+v -0.231918 4.143220 -7.231420
+v 2.221510 8.004600 -11.023900
+v -2.568640 11.493700 -3.452950
+v -0.733017 5.183590 -6.446830
+v -0.251049 4.366380 -7.221240
+v 1.856690 9.706240 -10.400500
+v 2.394670 7.245610 -11.338000
+v -0.364767 4.227290 -7.098380
+v -1.259720 5.171320 -5.679410
+v -1.900560 12.005700 -4.493810
+v 2.026390 10.518800 -10.676400
+v -1.338440 13.017000 -5.359770
+v 1.815920 8.851000 -10.421400
+v -0.007566 4.728530 -7.664620
+v -0.387218 4.452580 -7.084840
+v 1.847270 10.543800 -10.420000
+v -0.412080 4.854980 -7.058510
+v 1.917210 9.689850 -10.592200
+v 2.041550 11.733500 -10.740800
+v 1.998460 8.873050 -10.741400
+v 1.658680 13.491300 -10.106200
+v 1.857180 9.698170 -10.505700
+v 1.736830 13.553400 -10.209900
+v 2.006730 12.871700 -10.649000
+v 1.847140 11.757500 -10.462400
+v 0.357719 4.675530 -8.296420
+v 2.466980 4.668470 -11.598500
+v -3.048920 5.588020 -2.953420
+v 1.790870 5.499950 -10.504800
+v 0.217238 4.656300 -8.064210
+v 1.796910 12.846200 -10.348900
+v 2.655440 5.650060 -11.863100
+v 2.499030 6.557730 -11.632200
+v -3.870590 6.953620 -1.661070
+v 1.913390 10.525800 -10.628400
+v -1.239310 13.125800 -5.644250
+v 1.847810 10.534900 -10.534500
+v -3.894110 9.868160 -1.546730
+v 0.402953 13.619600 -8.221300
+v -1.571160 5.361720 -5.330660
+v 1.895500 8.867380 -10.672700
+v 1.828710 8.859300 -10.555600
+v -1.712710 12.471400 -4.935130
+v 2.247310 4.779070 -11.369100
+v 1.847740 11.749100 -10.586700
+v 1.797690 12.855800 -10.482900
+v 2.672870 4.648850 -12.023600
+v 1.874450 12.865200 -10.592700
+v 1.918910 11.740300 -10.688600
+v 2.578170 4.654660 -11.887700
+v 1.901040 5.044320 -10.850200
+v 0.179479 4.323790 -8.177480
+v 0.299760 4.116410 -8.370660
+v 2.599790 4.694730 -11.955700
+v 0.279104 4.337420 -8.342160
+v 0.202572 4.103090 -8.210010
+v 0.032238 4.692470 -7.977230
+v -1.979340 5.420710 -4.835740
+v -1.171600 5.440460 -6.085830
+v 1.746400 7.571370 -10.602800
+v 0.311509 4.714200 -8.486890
+v -4.043730 9.376040 -1.610150
+v 0.074609 4.128120 -8.149820
+v 0.048295 4.349430 -8.115800
+v 0.267813 4.143140 -8.502410
+v -4.066860 7.503500 -1.648140
+v 0.246379 4.364830 -8.477240
+v 0.745561 13.695600 -9.046600
+v 1.883460 8.041680 -10.995400
+v -0.637627 5.040520 -7.149700
+v 2.425550 5.305200 -11.940800
+v 1.835200 7.889590 -10.987100
+v 1.556820 12.554500 -10.421700
+v -1.771160 5.653560 -5.379360
+v 0.111399 4.024740 -8.368170
+v -4.139790 8.084120 -1.662320
+v -4.107040 8.973250 -1.699110
+v -4.155100 8.570170 -1.663010
+v 0.183221 4.163540 -8.572060
+v 0.507853 4.981460 -9.063430
+v -0.127784 4.780080 -8.076580
+v -0.065183 4.411580 -8.186270
+v -1.213670 5.474550 -6.368610
+v -0.036093 4.188720 -8.218580
+v 1.295620 10.995700 -10.168800
+v 2.198140 6.571520 -11.683100
+v 0.159635 4.385750 -8.548610
+v 0.189238 4.743670 -8.587540
+v 1.732460 7.510390 -10.938800
+v 2.255890 5.046940 -11.856200
+v 1.846980 5.141520 -11.239700
+v 1.920790 7.240390 -11.313100
+v 1.567250 6.803360 -10.772500
+v -1.100440 5.469100 -6.632700
+v 1.291840 11.315600 -10.214200
+v 2.092280 5.017970 -11.664200
+v 1.174610 13.342200 -10.039800
+v -3.393030 5.837070 -3.053810
+v -1.379120 5.795490 -6.240800
+v 1.417680 12.366400 -10.451400
+v -1.700980 5.943720 -5.771460
+v 0.661346 5.184860 -9.458980
+v -0.483111 5.015250 -7.679370
+v 1.189600 10.365500 -10.172400
+v -0.057120 4.233960 -8.364690
+v 0.081381 4.212520 -8.586380
+v -1.695470 12.830400 -5.643460
+v 0.912508 13.630800 -9.708220
+v -0.086764 4.457940 -8.336060
+v 0.055229 4.435960 -8.563320
+v 0.016508 4.220660 -8.514880
+v 1.153860 9.764580 -10.199800
+v -0.011276 4.444280 -8.490050
+v -1.605980 6.057180 -5.963580
+v 2.132570 5.910950 -11.816500
+v 1.757240 7.030830 -11.234300
+v 1.533300 6.357060 -10.904900
+v 0.042011 4.814480 -8.608250
+v -1.882780 12.004800 -5.414840
+v -0.158175 4.845480 -8.287830
+v 1.167350 9.164540 -10.302300
+v 1.381790 13.128000 -10.522500
+v 1.308880 12.089400 -10.480300
+v 1.218760 8.472430 -10.424700
+v 1.317600 7.028200 -10.615100
+v -2.903060 5.514700 -4.051310
+v 1.254940 6.581920 -10.531200
+v -0.051743 4.826220 -8.504980
+v 1.284200 7.568170 -10.583600
+v -1.381360 5.788750 -6.478690
+v -1.260750 5.654580 -6.674400
+v 0.782922 5.459830 -9.899690
+v 0.949791 5.744150 -10.157700
+v 1.792820 5.391900 -11.489000
+v -1.094870 13.069100 -6.768420
+v 1.096710 6.131200 -10.390100
+v -0.066104 13.434400 -8.406590
+v 1.940150 5.355320 -11.767500
+v 1.557990 6.738860 -11.130200
+v 1.183100 11.818000 -10.469900
+v 1.654500 5.583430 -11.343000
+v -1.430360 6.105050 -6.541650
+v 1.165300 11.550700 -10.463700
+v 1.629910 6.043180 -11.339800
+v 1.751690 6.153000 -11.575500
+v -3.630460 10.167100 -3.100120
+v -1.024720 5.460230 -7.290630
+v 0.930938 9.662660 -10.227000
+v 0.927022 9.148520 -10.277100
+v 1.002770 8.481380 -10.440900
+v -1.420920 6.129590 -6.708010
+v -0.916824 13.100600 -7.320780
+v 0.308730 13.565000 -9.274290
+v 1.030790 10.993400 -10.441000
+v -0.444304 5.114890 -8.272330
+v -2.559640 11.287700 -4.872970
+v -1.748290 12.926900 -6.105860
+v -3.777830 6.323440 -3.084030
+v -2.596710 5.676110 -5.021740
+v 1.040510 12.832900 -10.547100
+v -2.294700 11.490000 -5.365370
+v -1.485320 6.740180 -6.722830
+v 1.012370 7.557870 -10.642900
+v 0.974380 7.005310 -10.677800
+v -3.237440 5.745580 -4.145300
+v 0.734327 13.101200 -10.205900
+v -1.923630 12.524100 -6.097210
+v -0.203650 4.949240 -8.962770
+v 0.068914 5.056210 -9.367840
+v 0.541051 13.434300 -9.925120
+v -1.012890 5.524040 -7.722750
+v -4.002700 9.453100 -2.937240
+v 0.202244 5.237520 -9.649580
+v 0.752089 10.234400 -10.400300
+v -0.344812 5.136360 -8.806900
+v 0.634997 9.116220 -10.222500
+v 0.856488 6.540770 -10.637800
+v -1.288140 6.058440 -7.335520
+v 0.876759 12.554800 -10.574300
+v -2.141820 6.198640 -6.005840
+v -1.352130 7.023530 -7.303370
+v 0.645246 8.547070 -10.378200
+v -4.092590 7.067460 -3.002690
+v 0.644831 6.120800 -10.473600
+v -1.356980 6.574610 -7.314860
+v -4.126390 9.067870 -2.957190
+v 0.309781 5.501870 -10.023200
+v -0.890461 5.509780 -8.172090
+v -1.238980 6.036530 -7.622000
+v -4.180540 8.520880 -2.951530
+v -1.302430 6.505720 -7.521600
+v -0.032970 4.596660 -9.560040
+v -1.806670 6.920160 -6.756920
+v 0.500032 12.776800 -10.255000
+v 0.692061 12.170700 -10.571000
+v 0.113875 4.853110 -9.870000
+v -2.675620 11.078600 -5.366420
+v 0.503461 9.643850 -10.371700
+v -0.236830 4.528580 -9.370770
+v -2.150030 11.875200 -6.193150
+v 1.585210 4.677070 -6.519550
+v -3.414910 3.569090 1.268890
+v 2.400420 4.354130 -7.793920
+v 3.493260 6.462440 -9.454780
+v -3.797320 2.372360 1.851790
+v 3.379210 8.545560 -9.231030
+v -3.376490 3.958130 1.207410
+v -2.812110 5.465480 0.345500
+v -6.657240 14.259800 6.570160
+v 2.395400 4.132560 -7.827480
+v -4.611590 7.557770 3.194390
+v 0.080236 4.740330 -4.210690
+v -3.335430 4.810950 1.130250
+v -4.729210 9.938400 3.415570
+v 2.295590 4.327410 -7.702490
+v -6.783150 14.260500 6.735980
+v 3.549860 11.057200 -9.517610
+v -3.955750 3.993510 2.041930
+v -2.230830 12.538700 -0.464060
+v -6.745700 13.646400 6.635670
+v -6.761460 14.020800 6.666170
+v -6.812700 14.482200 6.755820
+v -4.209140 6.514330 2.498780
+v 2.892000 13.552100 -8.454790
+v -4.300940 6.799520 2.637500
+v 2.293130 4.106500 -7.738300
+v -3.929500 3.647280 1.980920
+v -1.881300 5.105750 -1.208030
+v -3.544550 2.353610 1.337080
+v 2.355900 4.704040 -7.838390
+v -4.472040 10.754800 2.978180
+v -3.986340 4.740390 2.069610
+v -4.746440 8.367550 3.338530
+v 3.493780 6.935880 -9.584230
+v -6.782890 14.576000 6.630380
+v -4.077160 1.684970 2.095680
+v -4.750750 7.854250 3.288260
+v -3.931950 2.409270 1.864130
+v -4.235930 1.332260 2.295150
+v -4.256090 1.177660 2.331730
+v -4.020920 1.987440 1.982010
+v -6.836850 14.116400 6.643460
+v 2.208070 4.666330 -7.709490
+v -6.856020 14.292300 6.688240
+v -4.887390 9.356520 3.480050
+v -4.071110 5.164260 2.073170
+v -3.919470 3.013160 1.786270
+v 3.446410 7.543490 -9.629890
+v -4.895090 8.939600 3.415170
+v 0.201857 13.411400 -4.458290
+v -3.273350 5.169510 0.796724
+v 3.330050 9.629840 -9.475090
+v 2.208520 13.610600 -7.648530
+v 0.845025 13.452400 -5.521890
+v 3.293840 12.762900 -9.368770
+v -4.196550 5.602730 2.177380
+v -2.594790 5.499070 -0.333870
+v -0.671510 13.146900 -3.184540
+v 1.392890 13.483800 -6.394430
+v -3.440740 12.140200 1.129820
+v -4.471560 0.854945 2.481050
+v -6.917670 14.303200 6.598090
+v -4.034060 11.620500 2.034890
+v -1.066760 12.965800 -2.579390
+v 2.530210 4.971410 -8.421870
+v -3.617720 2.977000 1.150190
+v -3.682830 1.423300 1.194990
+v -3.813440 1.320210 1.394900
+v -4.325640 0.309163 2.185240
+v -1.841830 12.614300 -1.437480
+v -6.931730 13.977700 6.536140
+v 3.076140 13.421700 -9.120960
+v -4.195130 0.315034 1.927380
+v 3.399350 11.735000 -9.687200
+v -3.568030 3.505770 1.026290
+v -3.032880 5.778080 0.238800
+v -4.087830 3.588810 1.830210
+v 0.325902 13.472700 -4.848380
+v -4.321790 5.941990 2.223250
+v -4.691660 0.470661 2.683820
+v -4.162610 4.702930 1.933160
+v -6.910900 14.376900 6.464030
+v -3.717780 2.234740 1.188650
+v 0.397796 5.016470 -5.207440
+v -3.901130 1.023550 1.423980
+v -4.150740 3.992870 1.892950
+v -3.525780 3.956520 0.910110
+v -4.049220 3.012480 1.686780
+v -3.738300 1.726900 1.178930
+v -4.082140 2.412980 1.732470
+v -4.784030 10.148300 2.984590
+v 3.241440 6.107890 -9.649870
+v 3.208030 8.534340 -9.565250
+v -4.640290 7.100190 2.674300
+v 3.131820 9.103810 -9.430480
+v -3.999750 2.369850 1.556800
+v -4.278850 1.638350 1.974700
+v -3.946870 0.762627 1.418110
+v -4.424980 6.195830 2.289570
+v -0.351207 13.215200 -3.922130
+v -4.526150 6.822150 2.448950
+v -4.079840 0.418354 1.602380
+v -4.407340 1.388450 2.123450
+v -3.734080 2.894380 1.091620
+v 2.634620 5.175060 -8.833030
+v -3.507860 4.588980 0.759319
+v 3.313600 12.157700 -9.739360
+v -3.314630 5.716310 0.491657
+v -4.226350 2.004550 1.826460
+v -4.737960 7.465350 2.751950
+v -4.469740 1.166020 2.176840
+v -3.993220 2.366740 1.432190
+v -1.407030 4.729220 -2.561230
+v -4.549990 6.601300 2.375120
+v 1.170060 13.549900 -6.411290
+v -0.867462 13.021000 -3.245520
+v -4.300870 5.124710 1.939080
+v 3.148730 10.222400 -9.640070
+v -4.633280 0.892969 2.315740
+v 3.077080 13.089600 -9.462820
+v -4.237650 1.619130 1.708080
+v 0.552985 5.061370 -5.695930
+v -4.094180 3.002410 1.504430
+v -4.157180 1.978890 1.571910
+v -3.859350 2.911900 1.110410
+v -4.043120 1.411260 1.338430
+v 2.791820 5.449850 -9.262430
+v 0.561648 13.544000 -5.590410
+v -4.193840 3.449290 1.593460
+v -4.417590 5.527390 2.003960
+v -3.962900 2.975290 1.227090
+v -1.359910 12.817400 -2.629270
+v -3.770230 3.492050 0.924031
+v -4.055220 2.971700 1.357440
+v 2.405010 13.687300 -8.520220
+v -3.953580 2.280860 1.159350
+v -0.076650 13.344800 -4.639580
+v -5.031010 9.476680 3.001560
+v 3.166910 6.529280 -9.904830
+v -4.047670 2.292700 1.263500
+v -4.299730 4.699740 1.688720
+v -3.745530 3.931530 0.802403
+v -4.981850 7.933160 2.828320
+v -2.951360 5.881070 -0.409699
+v -4.138240 3.380100 1.387250
+v -5.009830 8.294910 2.863040
+v -4.102500 1.522580 1.299460
+v -4.246690 1.567050 1.497120
+v 0.690990 4.975590 -6.132390
+v -3.527020 5.884920 0.478318
+v -3.926010 3.473050 1.031170
+v -4.401320 10.896600 1.939780
+v -4.196310 1.534290 1.402810
+v 3.168080 12.543300 -9.847470
+v -4.288070 3.924730 1.609550
+v -4.612200 6.258110 2.159420
+v -4.027730 3.487520 1.154330
+v -4.552900 5.885590 2.043150
+v -3.383520 6.046760 0.204308
+v -2.798470 11.884900 -0.577574
+v -4.920930 0.589305 2.480470
+v -4.217820 1.908590 1.390620
+v 0.031261 13.385700 -4.982420
+v -4.157720 1.857670 1.302650
+v -5.118600 8.792640 2.964920
+v -4.613460 1.182370 1.998270
+v -4.223570 3.869100 1.428430
+v -4.569230 1.360880 1.920220
+v 1.800980 13.722100 -7.759900
+v 2.924920 9.138600 -9.643280
+v -4.364950 5.021560 1.666300
+v -4.079380 1.687770 1.142710
+v 2.897550 9.652830 -9.603260
+v -4.075530 3.886320 1.176090
+v 2.806790 5.734920 -9.568650
+v 2.649360 13.622100 -9.157260
+v -4.083200 1.463230 1.100800
+v 3.097890 6.994760 -10.004300
+v -4.250310 1.145560 1.339940
+v -4.110810 1.824210 1.135800
+v -4.801040 0.885424 2.178600
+v -3.841180 4.612820 0.741926
+v -3.988580 3.936890 0.965961
+v -1.119250 4.654970 -3.506770
+v 3.051740 7.547740 -9.996060
+v -4.270420 4.714900 1.389260
+v 2.951490 8.471730 -9.822800
+v -4.459520 1.386340 1.603660
+v -4.731340 6.610740 2.158100
+v -4.489850 5.393600 1.732110
+v -4.151560 4.596160 1.167300
+v -2.507310 5.363500 -1.374380
+v -4.357570 1.272730 1.422030
+v -2.307880 12.140900 -1.558630
+v 0.837530 13.606200 -6.459150
+v -0.629216 13.137000 -4.165720
+v 2.951270 10.983900 -9.831760
+v -3.866310 5.018650 0.676207
+v 3.021120 12.823000 -9.918840
+v -4.357830 0.886038 1.356050
+v 0.904431 4.789690 -6.808050
+v -3.660680 6.237660 0.353146
+v -4.005120 4.563170 0.850004
+v -3.556340 6.365190 0.187160
+v -5.023180 0.483857 2.335150
+v -4.041840 11.190200 1.043560
+v -4.607580 1.107250 1.701820
+v 2.824150 6.122610 -9.842110
+v 0.289812 13.455200 -5.698010
+v -4.491380 1.037650 1.472070
+v -3.193110 6.072180 -0.460323
+v -1.817520 4.819680 -2.642000
+v -3.902760 5.523710 0.615779
+v -1.763450 12.589400 -2.592370
+v -4.523370 0.563441 1.429760
+v -4.720210 10.179100 1.935200
+v -4.049350 5.006540 0.771499
+v -4.412160 5.135990 1.322650
+v -0.393055 13.232300 -4.773900
+v 2.700590 9.756850 -9.709200
+v 2.073340 13.749400 -8.629440
+v -1.209150 12.894200 -3.531270
+v 2.859510 11.542200 -9.926340
+v -4.217500 4.993670 0.990908
+v 2.743170 9.156750 -9.802330
+v -4.772770 6.677500 1.894450
+v 2.850970 11.809800 -9.940830
+v -2.755470 5.639680 -1.321230
+v 2.623750 13.335000 -9.580150
+v -4.680770 5.972630 1.671040
+v 2.661020 10.358200 -9.705710
+v -4.767360 6.336410 1.801030
+v 2.765530 8.464700 -9.934020
+v -5.049280 0.387492 2.100000
+v 1.089600 4.737510 -7.392700
+v -0.759264 4.752830 -4.518280
+v 2.780280 6.574340 -10.047300
+v -4.229010 10.789600 1.000400
+v -3.262380 11.352600 -0.498705
+v -3.997290 5.835130 0.535297
+v -4.920650 0.762877 1.861970
+v -0.251755 13.279600 -5.152060
+v -4.502750 5.415790 1.294910
+v 1.436430 13.803100 -7.811470
+v -4.727830 0.669480 1.523730
+v 2.795500 7.560660 -10.104200
+v -4.807340 7.325380 1.791790
+v -4.157430 5.465560 0.688780
+v -4.814160 0.389643 1.598820
+v -3.418760 6.421160 -0.455929
+v -3.925620 6.693560 0.351532
+v 2.781480 7.020920 -10.150800
+v -4.297760 5.380630 0.882348
+v -3.819350 6.739950 0.173094
+v 2.577990 10.989300 -9.762010
+v 2.610180 11.309000 -9.795980
+v 2.756620 12.082200 -10.021000
+v -4.589770 5.888040 1.290900
+v -0.761133 5.623720 -8.564140
+v 0.301197 5.738630 -10.225800
+v 0.193267 13.126500 -9.902770
+v -4.236550 7.858680 -3.049770
+v -1.944330 12.516200 -6.532420
+v -1.492860 7.106960 -7.371020
+v -1.144970 6.547540 -7.940270
+v -0.371188 1.081070 -9.338590
+v -1.633060 12.527500 -7.123470
+v 0.312833 8.560830 -10.203800
+v 0.588125 11.749000 -10.579000
+v -1.132720 6.027840 -8.030820
+v -0.605573 0.634795 -9.049660
+v -0.207487 13.249100 -9.389310
+v -0.438760 0.633962 -9.322830
+v -0.098181 4.110860 -9.733960
+v 0.245496 4.918680 -10.254600
+v -0.682476 13.030400 -8.620720
+v 0.478765 7.558240 -10.571300
+v -0.328982 1.404800 -9.450140
+v -2.984460 5.932560 -5.259530
+v -0.251933 4.109190 -9.580540
+v -1.041460 6.107270 -8.314390
+v 0.408267 6.951220 -10.563000
+v 0.144503 6.023810 -10.137400
+v -0.310648 0.706683 -9.623210
+v 0.261846 12.391300 -10.250400
+v -0.867131 0.772063 -8.757660
+v 0.329794 6.478170 -10.458300
+v -2.419150 11.261400 -6.050620
+v 0.010703 4.169340 -10.031000
+v -3.702970 6.238010 -4.184250
+v 0.203334 7.574720 -10.326700
+v -2.013680 7.341280 -6.873010
+v -0.521178 4.591400 -9.278410
+v -2.088050 11.781300 -6.631390
+v -0.035581 6.508240 -10.037800
+v -1.684230 7.396540 -7.439360
+v 0.059080 6.975710 -10.183100
+v -0.292783 0.924069 -9.780910
+v -0.306577 2.260850 -9.730760
+v -0.382611 1.865730 -9.622030
+v -3.445190 10.166100 -4.644640
+v -0.409556 4.137840 -9.480740
+v 0.361259 11.073100 -10.529100
+v 0.203023 9.003050 -10.331600
+v -0.816663 1.109760 -8.920770
+v -0.258149 1.251630 -9.791620
+v 0.134332 8.478320 -10.240200
+v -0.159640 2.090240 -9.933990
+v -1.341980 6.767230 -7.977390
+v -0.662289 4.968980 -9.172050
+v -0.224579 3.691920 -9.845920
+v -1.520830 12.466600 -7.617320
+v -0.058789 7.541520 -10.022200
+v -1.822320 11.919000 -7.163340
+v 0.102604 4.341310 -10.422500
+v -0.139245 7.018930 -9.982570
+v -0.718594 1.560180 -9.213170
+v -2.093670 10.764600 -6.851050
+v -0.431216 3.737990 -9.624620
+v -0.256747 2.630660 -9.873130
+v -2.594960 6.459700 -6.128000
+v 0.106300 11.952700 -10.228000
+v -0.136545 3.694430 -10.048900
+v -0.273207 3.224050 -9.847890
+v -0.325932 1.653310 -9.881430
+v -0.925725 5.562450 -8.859390
+v -0.588994 1.906170 -9.476570
+v -0.487123 2.326570 -9.631510
+v -1.830300 11.147000 -7.274160
+v 0.180223 5.086350 -10.564900
+v -0.810453 1.361120 -9.114330
+v -0.236182 2.654320 -9.985260
+v -0.180150 2.026820 -10.168300
+v -0.077486 3.719260 -10.290100
+v -0.212207 3.167770 -10.101500
+v -0.454955 3.260980 -9.687600
+v -0.224246 12.725000 -9.895460
+v -1.886070 10.518200 -7.353460
+v -2.177740 10.273600 -6.865000
+v -0.135637 1.708240 -10.259100
+v -2.710090 10.537400 -6.043120
+v -0.488338 2.613770 -9.702260
+v -1.538920 6.986930 -8.014530
+v -0.183000 3.187420 -10.235900
+v -0.218041 2.596720 -10.272100
+v -0.604775 12.777600 -9.387750
+v -3.787030 9.539490 -4.504040
+v -3.154440 10.159000 -5.479220
+v -0.945057 1.571810 -9.201810
+v -0.624568 2.650470 -9.684950
+v -0.236028 6.026060 -10.217500
+v -0.718196 2.228170 -9.552240
+v -1.993700 10.193100 -7.375240
+v -2.276280 9.880450 -6.945920
+v -0.702798 4.245690 -9.541400
+v -0.778555 1.925330 -9.425530
+v -0.966621 1.417110 -9.160810
+v -0.029244 4.323270 -10.568200
+v -2.255700 7.897520 -7.070300
+v -0.651176 3.232930 -9.690900
+v -0.205895 5.741580 -10.333200
+v -0.676758 3.834510 -9.641310
+v -0.216768 11.140600 -10.197800
+v -0.335664 6.472960 -10.128500
+v -0.111893 3.657990 -10.485600
+v -0.375947 12.155700 -9.877950
+v -3.269670 6.403400 -5.485800
+v -4.016700 6.911020 -4.307250
+v -0.032942 10.281200 -10.482300
+v -1.656560 11.771700 -7.909630
+v -0.792071 4.706440 -9.425710
+v -0.299353 5.623250 -10.306500
+v -0.507684 5.913790 -9.978020
+v -1.726530 11.066700 -7.959750
+v -2.941650 6.888490 -6.158540
+v -0.227590 3.145060 -10.438000
+v -1.188800 1.093670 -8.990350
+v -0.472307 6.944910 -10.057700
+v -1.238400 12.276600 -8.739250
+v -2.215440 9.758620 -7.237440
+v -2.072340 7.947160 -7.503130
+v -1.088940 5.518030 -9.108620
+v -4.085920 8.757090 -4.350250
+v -1.033290 0.548800 -9.316300
+v -0.354332 1.666610 -10.420500
+v -0.894010 0.555656 -9.601850
+v -0.577855 11.199500 -9.850790
+v -1.833110 10.534500 -7.905000
+v -4.127210 7.708060 -4.388600
+v -0.622887 6.267630 -9.905850
+v -0.251051 9.684500 -10.368600
+v -2.854170 9.877600 -6.295800
+v -1.417260 0.708603 -8.761220
+v -0.146924 5.091330 -10.648400
+v -0.492144 1.562810 -10.197900
+v -3.403270 9.536340 -5.468780
+v -0.237254 4.329590 -10.604400
+v -0.748742 3.864710 -9.816610
+v -0.322037 3.778230 -10.491400
+v -0.772276 2.654480 -9.824390
+v -0.388672 2.478120 -10.428800
+v -0.581824 1.265950 -10.162600
+v -1.981370 10.130500 -7.718610
+v -2.465150 9.271270 -6.985530
+v -0.360686 3.133140 -10.418300
+v -0.368627 9.028790 -10.278700
+v -1.425770 6.342740 -8.690270
+v -0.764935 3.161700 -9.869850
+v -0.497022 10.206500 -10.134700
+v -0.683943 2.611890 -10.018600
+v -2.378860 9.289230 -7.214890
+v -0.408082 4.959410 -10.402100
+v -0.492102 8.278980 -10.153000
+v -0.409604 1.970290 -10.437300
+v -0.978677 1.878870 -9.551630
+v -1.093460 5.559700 -9.354010
+v -2.524900 8.515190 -7.048030
+v -1.177760 1.405680 -9.323720
+v -0.920952 2.245550 -9.716200
+v -2.185170 9.708580 -7.575370
+v -0.905332 4.761200 -9.692970
+v -1.112980 1.628400 -9.384590
+v -1.872670 7.572230 -8.062270
+v -0.628032 1.004970 -10.166900
+v -0.830218 4.224290 -9.779520
+v -0.767997 0.660001 -9.960660
+v -0.517773 3.772390 -10.283100
+v -0.602167 7.653400 -10.064300
+v -0.697829 3.827340 -10.076900
+v -2.362450 8.542270 -7.367190
+v -0.792416 6.891360 -9.869010
+v -0.673726 2.609150 -10.154900
+v -0.586532 3.149920 -10.248600
+v -0.495103 4.325190 -10.373300
+v -0.889405 5.828740 -9.785300
+v -1.728510 7.265850 -8.414200
+v -0.730607 3.162220 -10.069900
+v -1.347160 1.132040 -9.166410
+v -3.005340 9.112450 -6.393570
+v -1.093900 11.914900 -9.322340
+v -0.772524 4.232300 -10.066600
+v -3.162680 7.490160 -6.258140
+v -0.732666 4.251370 -10.148900
+v -0.929266 1.860490 -9.844150
+v -0.860827 10.379500 -9.755670
+v -1.053670 5.686450 -9.570060
+v -1.363680 6.346050 -9.070560
+v -3.573970 7.058320 -5.601610
+v -0.685510 9.712860 -10.070100
+v -0.843670 2.220700 -9.996350
+v -1.639030 11.248100 -8.615740
+v -0.884343 4.811430 -9.952830
+v -1.047170 6.244810 -9.619690
+v -0.722211 1.653820 -10.253100
+v -0.625797 2.524150 -10.454000
+v -0.755084 4.897640 -10.198700
+v -1.722100 10.582200 -8.534130
+v -1.703180 10.817100 -8.558780
+v -0.780929 1.765150 -10.294300
+v -0.986285 7.682430 -9.840500
+v -1.642600 0.827596 -8.977090
+v -1.412880 10.385100 -9.120750
+v -3.727580 8.320170 -5.550370
+v -0.932179 1.808970 -10.074200
+v -0.886759 9.242320 -9.920060
+v -0.723782 2.535550 -10.337500
+v -1.602170 7.122180 -8.867680
+v -2.362540 9.256200 -7.631900
+v -1.355770 11.075300 -9.169290
+v -1.317500 1.422480 -9.514720
+v -1.443100 9.895430 -9.136860
+v -1.270390 1.601270 -9.601840
+v -0.878595 1.776530 -10.178700
+v -1.851850 9.960930 -8.476350
+v -1.090500 9.817090 -9.675640
+v -0.752816 1.930950 -10.466700
+v -0.836434 2.100250 -10.290100
+v -0.899635 2.150920 -10.192400
+v -2.257810 8.320560 -7.937520
+v -1.037290 8.433790 -9.844970
+v -0.755671 1.706510 -10.511700
+v -0.931663 1.387940 -10.244600
+v -1.635050 9.439030 -8.960740
+v -1.257950 9.351680 -9.559680
+v -0.784241 2.067390 -10.473700
+v -2.042990 8.233790 -8.363470
+v -1.512440 1.124740 -9.311270
+v -1.278810 6.870010 -9.560020
+v -1.150330 1.627760 -9.951020
+v -2.003360 9.424970 -8.439880
+v -2.069860 8.976750 -8.428370
+v -1.741630 0.722417 -9.132510
+v -1.042200 1.514730 -10.152100
+v -1.302940 1.348230 -9.838550
+v -1.040890 1.128200 -10.223100
+v -1.802040 8.025350 -8.881280
+v -1.770980 8.673750 -8.933460
+v -1.178960 1.279310 -10.092800
+v -1.450290 8.443010 -9.487490
+v -1.457240 7.786330 -9.495660
+v -1.210400 0.805198 -10.136700
+v -1.761170 0.626813 -9.388360
+v -1.623990 1.003000 -9.653360
+v -1.419490 0.910780 -10.028300
+v -1.509080 0.630664 -9.942970
+v 1.890270 13.373600 -9.781430
+# 2904 vertices, 0 vertices normals
+
+f 2152 2245 2192
+f 2144 2245 2152
+f 2152 2192 2154
+f 2144 2152 2154
+f 2118 2245 2144
+f 2192 2245 2269
+f 2192 2269 2230
+f 2118 2252 2245
+f 2245 2252 2269
+f 2154 2192 2168
+f 2168 2192 2230
+f 2113 2144 2154
+f 2118 2248 2252
+f 2113 2118 2144
+f 2248 2288 2252
+f 2252 2288 2269
+f 2230 2269 2313
+f 2118 2225 2248
+f 2168 2230 2195
+f 2195 2230 2231
+f 2230 2313 2231
+f 2092 2127 2118
+f 2118 2127 2225
+f 2269 2288 2313
+f 2140 2154 2168
+f 2092 2118 2113
+f 2113 2154 2140
+f 2248 2294 2288
+f 2231 2313 2284
+f 2288 2336 2313
+f 2225 2242 2248
+f 2134 2195 2231
+f 2096 2168 2195
+f 2284 2313 2336
+f 2205 2231 2284
+f 2242 2294 2248
+f 2288 2294 2336
+f 2127 2242 2225
+f 2092 2099 2127
+f 2096 2140 2168
+f 2074 2092 2113
+f 2134 2231 2205
+f 2127 2135 2242
+f 2074 2113 2140
+f 2099 2135 2127
+f 2284 2336 2343
+f 2117 2195 2134
+f 2096 2195 2117
+f 2205 2284 2290
+f 2294 2332 2336
+f 2044 2140 2096
+f 2044 2074 2140
+f 2284 2343 2290
+f 2043 2092 2074
+f 2043 2099 2092
+f 2332 2343 2336
+f 2134 2205 2164
+f 2242 2289 2294
+f 2135 2166 2242
+f 2200 2205 2290
+f 2099 2166 2135
+f 2289 2332 2294
+f 2044 2096 2068
+f 2164 2205 2200
+f 2116 2117 2134
+f 2040 2074 2044
+f 2096 2117 2100
+f 2068 2096 2100
+f 2332 2342 2343
+f 2290 2343 2314
+f 2116 2134 2164
+f 2040 2043 2074
+f 2314 2343 2342
+f 2166 2289 2242
+f 2044 2068 2059
+f 2289 2339 2332
+f 2332 2339 2342
+f 2200 2290 2267
+f 2043 2094 2099
+f 2040 2044 2059
+f 2267 2290 2314
+f 2094 2166 2099
+f 2100 2117 2111
+f 2111 2117 2116
+f 2064 2068 2100
+f 2112 2164 2200
+f 2190 2200 2267
+f 2059 2068 2064
+f 2314 2342 2337
+f 2128 2131 2181
+f 2112 2116 2164
+f 2267 2314 2270
+f 2160 2200 2190
+f 2131 2178 2181
+f 2128 2181 2175
+f 2040 2053 2043
+f 2175 2181 2217
+f 2112 2200 2160
+f 2083 2122 2131
+f 2270 2314 2337
+f 2066 2083 2131
+f 2066 2131 2128
+f 2122 2178 2131
+f 2181 2209 2217
+f 2289 2315 2339
+f 2315 2342 2339
+f 2175 2217 2222
+f 2178 2209 2181
+f 2080 2122 2083
+f 2166 2315 2289
+f 2043 2053 2094
+f 2111 2116 2112
+f 2190 2267 2218
+f 2040 2059 2042
+f 2093 2100 2111
+f 2064 2100 2093
+f 2057 2080 2083
+f 2122 2171 2178
+f 2217 2247 2222
+f 2119 2160 2190
+f 2037 2083 2066
+f 2239 2267 2270
+f 2270 2337 2287
+f 2080 2119 2122
+f 2119 2171 2122
+f 2119 2190 2171
+f 2037 2057 2083
+f 2171 2190 2218
+f 2178 2196 2209
+f 2081 2160 2119
+f 2171 2196 2178
+f 2218 2267 2239
+f 2209 2233 2217
+f 2217 2233 2247
+f 2081 2112 2160
+f 2291 2337 2342
+f 2080 2081 2119
+f 2042 2059 2064
+f 2076 2128 2175
+f 2239 2270 2287
+f 2056 2080 2057
+f 2222 2247 2246
+f 2171 2218 2196
+f 2040 2042 2053
+f 2166 2249 2315
+f 2056 2081 2080
+f 2145 2175 2222
+f 2086 2111 2112
+f 2027 2066 2128
+f 2552 2655 2597
+f 2196 2218 2239
+f 2048 2056 2057
+f 1971 2597 1981
+f 2050 2112 2081
+f 2196 2216 2209
+f 2505 2625 2552
+f 2086 2093 2111
+f 2094 2227 2166
+f 2243 2246 2247
+f 2291 2342 2315
+f 2054 2064 2093
+f 2209 2216 2233
+f 2037 2041 2057
+f 2472 2621 2505
+f 2050 2081 2056
+f 2552 2625 2655
+f 1981 2597 2655
+f 2258 2287 2337
+f 2050 2086 2112
+f 2041 2048 2057
+f 1971 1981 2004
+f 2042 2064 2054
+f 2576 2650 2583
+f 2233 2235 2247
+f 2196 2239 2216
+f 2166 2227 2249
+f 2505 2621 2625
+f 2235 2243 2247
+f 2583 2650 2644
+f 2446 2576 2583
+f 2239 2287 2240
+f 2415 2595 2472
+f 2047 2056 2048
+f 2189 2222 2246
+f 2054 2093 2067
+f 2472 2595 2621
+f 2047 2050 2056
+f 2076 2175 2145
+f 2453 2505 2552
+f 2243 2244 2246
+f 2518 2552 2597
+f 2022 2037 2066
+f 2576 2635 2650
+f 2432 2537 2576
+f 2537 2635 2576
+f 2027 2128 2076
+f 1873 2472 2505
+f 2086 2091 2093
+f 2053 2069 2094
+f 1971 2004 2136
+f 2216 2220 2233
+f 2067 2093 2091
+f 2432 2576 2446
+f 2050 2060 2086
+f 2216 2239 2240
+f 2583 2644 2585
+f 2258 2337 2291
+f 2047 2048 2090
+f 2039 2042 2054
+f 2220 2235 2233
+f 2047 2060 2050
+f 2145 2222 2189
+f 1971 2627 2597
+f 2223 2244 2243
+f 2415 2516 2595
+f 2042 2058 2053
+f 1818 2415 2472
+f 2141 2644 2650
+f 2051 2054 2067
+f 2041 2073 2048
+f 1757 2516 2415
+f 2211 2240 2287
+f 2446 2583 2491
+f 2214 2243 2235
+f 2039 2054 2055
+f 2048 2073 2090
+f 2216 2240 2220
+f 2060 2091 2086
+f 2227 2315 2249
+f 2214 2223 2243
+f 2211 2287 2258
+f 2022 2066 2027
+f 2585 2644 2631
+f 2047 2090 2078
+f 2051 2055 2054
+f 2402 2537 2432
+f 2039 2058 2042
+f 2491 2583 2585
+f 2047 2078 2060
+f 2004 2149 2136
+f 2595 2654 2621
+f 2453 2552 2518
+f 2110 2655 2625
+f 2221 2246 2244
+f 1981 2655 2115
+f 2124 2625 2621
+f 2537 2606 2635
+f 2132 2650 2635
+f 1873 2505 2453
+f 2223 2229 2244
+f 2137 2631 2644
+f 2039 2055 2051
+f 1981 2115 2004
+f 2204 2235 2220
+f 2078 2090 2148
+f 2067 2091 2107
+f 2020 2041 2037
+f 2402 2490 2537
+f 1757 2450 2516
+f 1716 1748 1834
+f 1716 1942 1748
+f 2051 2067 2107
+f 2060 2079 2091
+f 1757 2415 1965
+f 2137 2644 2141
+f 1818 2472 1873
+f 2204 2214 2235
+f 2053 2058 2069
+f 2060 2078 2079
+f 2191 2229 2223
+f 2490 2606 2537
+f 2039 2051 2058
+f 1848 2432 2446
+f 2211 2220 2240
+f 2189 2246 2221
+f 2132 2141 2650
+f 2182 2191 2223
+f 2090 2130 2148
+f 2182 2223 2214
+f 1757 1946 2450
+f 2516 2653 2595
+f 2073 2130 2090
+f 2518 2597 2627
+f 2078 2148 2139
+f 2139 2148 2191
+f 2004 2115 2149
+f 2204 2220 2211
+f 2568 2585 2631
+f 2148 2186 2191
+f 2078 2139 2079
+f 2136 2149 2320
+f 2079 2107 2091
+f 2069 2194 2094
+f 1716 1890 1942
+f 2094 2194 2227
+f 2139 2191 2182
+f 2186 2229 2191
+f 1728 1748 1942
+f 2177 2214 2204
+f 2020 2037 2022
+f 1818 1965 2415
+f 2595 2653 2654
+f 2177 2182 2214
+f 2130 2186 2148
+f 1748 1804 1834
+f 2079 2139 2129
+f 2450 2629 2516
+f 2149 2271 2320
+f 2120 2631 2137
+f 2114 2621 2654
+f 2568 2631 2623
+f 2404 2446 2491
+f 2194 2291 2315
+f 1971 2136 2904
+f 1851 2450 1946
+f 2124 2621 2126
+f 2129 2139 2182
+f 2120 2623 2631
+f 2187 2211 2258
+f 2079 2129 2107
+f 2491 2585 2493
+f 1716 1834 1880
+f 2110 2625 2124
+f 2219 2244 2229
+f 2129 2182 2177
+f 2110 2115 2655
+f 1728 1942 1916
+f 2114 2126 2621
+f 2187 2204 2211
+f 2177 2204 2187
+f 2493 2585 2568
+f 1684 1946 1757
+f 2156 2187 2258
+f 2035 2073 2041
+f 1848 2446 2404
+f 1851 2571 2450
+f 2194 2258 2291
+f 1795 2402 2432
+f 2516 2629 2653
+f 2115 2271 2149
+f 2107 2129 2156
+f 2129 2177 2156
+f 2194 2315 2227
+f 2137 2141 2323
+f 1851 1946 1910
+f 2051 2147 2058
+f 1675 1916 1942
+f 2568 2623 2571
+f 2450 2571 2629
+f 1716 1930 1890
+f 2219 2221 2244
+f 2156 2177 2187
+f 1971 2904 2627
+f 1716 1962 1930
+f 1795 2432 1848
+f 2571 2623 2618
+f 1684 1757 1965
+f 2026 2076 2145
+f 1675 1942 1890
+f 2051 2107 2147
+f 2097 2635 2606
+f 1716 1880 1962
+f 1851 2493 2571
+f 1728 1916 1947
+f 2058 2147 2069
+f 2097 2132 2635
+f 1804 1859 1834
+f 2120 2137 2327
+f 2490 2573 2606
+f 2493 2568 2571
+f 2147 2156 2258
+f 1728 1741 1748
+f 1828 2490 2402
+f 2271 2358 2320
+f 2404 2491 2493
+f 2012 2027 2076
+f 2453 2518 2470
+f 2108 2623 2120
+f 2115 2298 2271
+f 1825 1851 1910
+f 1741 1804 1748
+f 2571 2618 2629
+f 2132 2325 2141
+f 1825 2493 1851
+f 2108 2618 2623
+f 2082 2145 2189
+f 2186 2198 2229
+f 2020 2035 2041
+f 1857 1873 2453
+f 2271 2298 2358
+f 2137 2323 2327
+f 1906 1947 1916
+f 2073 2084 2130
+f 2103 2654 2653
+f 2107 2156 2147
+f 2110 2321 2298
+f 2110 2124 2321
+f 2110 2298 2115
+f 1834 1859 1880
+f 2141 2325 2323
+f 1642 1910 1946
+f 2103 2114 2654
+f 2130 2159 2186
+f 2124 2126 2338
+f 1825 2404 2493
+f 1713 1818 1873
+f 2147 2258 2194
+f 1897 1947 1906
+f 2124 2338 2321
+f 1650 1897 1906
+f 80 1889 1650
+f 1880 2573 2490
+f 71 72 1905
+f 71 1889 80
+f 2104 2653 2629
+f 1650 1889 1897
+f 1669 1906 1916
+f 2104 2629 2618
+f 1669 1916 1675
+f 2298 2321 2377
+f 2002 2022 2027
+f 1712 1728 1947
+f 2198 2219 2229
+f 1828 1880 2490
+f 1683 1825 1910
+f 2136 2320 2295
+f 71 1905 1889
+f 1642 1946 1684
+f 2069 2147 2194
+f 2126 2341 2338
+f 2106 2618 2108
+f 2157 2189 2221
+f 2298 2377 2358
+f 1818 1918 1965
+f 2120 2327 2322
+f 1897 1955 1947
+f 2108 2120 2322
+f 1857 2453 2470
+f 2103 2653 2104
+f 71 77 72
+f 7 1675 1890
+f 2035 2084 2073
+f 23 80 1650
+f 1650 1906 1705
+f 1712 1741 1728
+f 2323 2362 2327
+f 23 71 80
+f 1889 1955 1897
+f 2518 2627 2574
+f 1758 2402 1795
+f 1750 1848 2404
+f 2114 2293 2126
+f 2104 2618 2106
+f 1828 1962 1880
+f 1750 2404 1825
+f 1758 1828 2402
+f 1713 1873 1857
+f 1828 1951 1962
+f 1750 1795 1848
+f 2126 2293 2341
+f 2321 2338 2393
+f 72 1676 1905
+f 2159 2198 2186
+f 3 1650 1705
+f 2012 2076 2026
+f 3 23 1650
+f 2026 2145 2082
+f 1669 1705 1906
+f 1712 1947 1955
+f 2327 2362 2361
+f 2084 2159 2130
+f 2470 2518 2574
+f 1711 1889 1905
+f 2321 2393 2377
+f 2322 2327 2361
+f 2132 2334 2325
+f 1683 1750 1825
+f 1679 1890 1930
+f 1773 1859 1804
+f 23 77 71
+f 1664 1684 1965
+f 2103 2283 2114
+f 1726 1804 1741
+f 2005 2020 2022
+f 2323 2325 2375
+f 19 72 77
+f 1713 1918 1818
+f 17 1669 1675
+f 1679 1930 1962
+f 2323 2375 2362
+f 25 1683 1910
+f 2904 2136 2295
+f 2097 2334 2132
+f 2065 2606 2573
+f 2320 2358 2364
+f 2002 2027 2012
+f 2185 2221 2219
+f 7 17 1675
+f 1711 1955 1889
+f 2338 2341 2667
+f 2106 2108 2319
+f 1859 1885 1880
+f 25 1910 1642
+f 2082 2189 2157
+f 1828 1922 1951
+f 1679 1962 1951
+f 19 1676 72
+f 2065 2097 2606
+f 1711 1905 1723
+f 2108 2322 2319
+f 2114 2283 2293
+f 1664 1965 1918
+f 2283 2352 2341
+f 2103 2104 2302
+f 3 47 23
+f 1712 1959 1741
+f 1683 1708 1750
+f 2322 2361 2348
+f 1880 2525 2573
+f 2338 2667 2393
+f 2283 2341 2293
+f 2104 2106 2302
+f 1726 1773 1804
+f 1758 1922 1828
+f 1639 1705 1669
+f 1729 1795 1750
+f 3 1705 16
+f 1729 1758 1795
+f 23 43 77
+f 3 1657 47
+f 2002 2005 2022
+f 92 1642 1684
+f 2063 2627 2904
+f 17 1639 1669
+f 2019 2035 2020
+f 19 77 43
+f 7 1890 32
+f 2103 2302 2283
+f 1703 1951 1922
+f 1690 1750 1708
+f 2157 2221 2185
+f 1690 1922 1729
+f 1726 1741 1959
+f 2319 2322 2348
+f 1729 1922 1758
+f 2358 2377 2392
+f 2295 2320 2364
+f 2341 2352 2701
+f 1880 1885 2525
+f 1712 1955 1953
+f 3 16 1657
+f 2106 2319 2310
+f 2188 2219 2198
+f 322 1708 1683
+f 19 43 59
+f 19 59 1706
+f 1690 1729 1750
+f 2361 2362 2680
+f 1723 1905 1925
+f 2063 2574 2627
+f 19 1706 1676
+f 2283 2302 2352
+f 2106 2310 2302
+f 1815 1885 1859
+f 2341 2701 2667
+f 92 1684 1664
+f 59 344 1693
+f 23 47 57
+f 7 36 17
+f 16 1705 1639
+f 2325 2382 2375
+f 59 342 344
+f 67 1922 1690
+f 25 322 1683
+f 1773 1815 1859
+f 2348 2361 2675
+f 23 57 43
+f 1679 1951 1703
+f 1676 1925 1905
+f 32 1890 1679
+f 43 342 59
+f 59 1693 1706
+f 1712 1953 1959
+f 17 66 1639
+f 1711 1721 1955
+f 309 1690 1708
+f 2302 2372 2352
+f 2035 2045 2084
+f 1711 1723 1721
+f 2325 2334 2382
+f 2005 2019 2020
+f 47 1657 1655
+f 2159 2170 2198
+f 2319 2348 2347
+f 17 36 66
+f 1724 1857 2470
+f 2185 2219 2188
+f 342 393 344
+f 43 57 342
+f 25 1642 340
+f 67 1703 1922
+f 2084 2125 2159
+f 2362 2375 2685
+f 16 1655 1657
+f 2377 2393 2683
+f 2310 2319 2347
+f 1721 1953 1955
+f 2358 2392 2364
+f 309 1708 322
+f 2097 2331 2334
+f 1665 1713 1857
+f 2361 2680 2675
+f 22 57 47
+f 69 1693 344
+f 67 1690 309
+f 2002 2574 2063
+f 22 47 1655
+f 96 344 188
+f 2302 2310 2346
+f 7 32 36
+f 92 340 1642
+f 188 344 393
+f 1726 1959 1940
+f 2302 2346 2372
+f 1726 1961 1773
+f 69 344 96
+f 2065 2331 2097
+f 2347 2348 2380
+f 2422 2470 2574
+f 2019 2045 2035
+f 1676 1706 1943
+f 2310 2347 2346
+f 2002 2063 2005
+f 1721 1723 1925
+f 2036 2573 2525
+f 2348 2675 2380
+f 16 1639 18
+f 66 84 1639
+f 2170 2188 2198
+f 57 384 342
+f 1944 1959 1953
+f 342 384 393
+f 2036 2065 2573
+f 1693 1943 1706
+f 1986 2012 2026
+f 332 1918 1713
+f 2352 2372 2767
+f 2009 2026 2082
+f 8 1655 16
+f 2362 2685 2680
+f 2393 2667 2720
+f 2904 2295 2306
+f 2045 2125 2084
+f 1940 1959 1944
+f 1986 2002 2012
+f 2352 2767 2701
+f 2125 2170 2159
+f 2377 2683 2392
+f 1815 1855 1885
+f 2346 2396 2372
+f 1726 1940 1961
+f 1742 1815 1773
+f 36 42 66
+f 2031 2082 2157
+f 25 399 322
+f 96 188 218
+f 2063 2904 2306
+f 2005 2063 2045
+f 22 51 57
+f 324 1679 1703
+f 8 16 18
+f 1742 1773 1961
+f 1676 1943 1925
+f 1885 2503 2525
+f 2346 2347 2374
+f 2005 2045 2019
+f 18 1639 84
+f 51 384 57
+f 132 188 393
+f 2045 2063 2188
+f 2347 2380 2374
+f 25 340 399
+f 8 13 1655
+f 1665 1857 1724
+f 1724 2470 2422
+f 132 393 384
+f 127 1664 1918
+f 22 1655 46
+f 1721 1933 1953
+f 42 84 66
+f 67 104 1703
+f 32 1679 324
+f 2095 2157 2185
+f 2346 2374 2396
+f 1933 1944 1953
+f 1693 1935 1943
+f 2045 2188 2170
+f 2295 2364 2368
+f 177 309 322
+f 69 1932 1693
+f 67 309 181
+f 2002 2619 2574
+f 2334 2658 2382
+f 2045 2170 2125
+f 13 46 1655
+f 32 326 36
+f 2393 2720 2683
+f 2063 2306 2188
+f 1855 2503 1885
+f 332 1713 1665
+f 2375 2382 2681
+f 2380 2675 2689
+f 1887 1961 1940
+f 2667 2701 2761
+f 1986 2026 2009
+f 1685 1940 1944
+f 39 69 96
+f 2331 2658 2334
+f 1693 1932 1935
+f 39 96 218
+f 1742 1765 1815
+f 92 1664 152
+f 2146 2185 2188
+f 1721 1925 1909
+f 2009 2082 2031
+f 8 1697 13
+f 8 18 1646
+f 36 326 42
+f 104 324 1703
+f 1765 1855 1815
+f 2372 2396 2789
+f 177 322 399
+f 1742 1961 1957
+f 188 267 218
+f 2065 2330 2331
+f 1685 1944 1933
+f 2375 2681 2685
+f 2374 2702 2396
+f 2295 2368 2306
+f 2374 2380 2666
+f 1685 1887 1940
+f 22 65 51
+f 1721 1909 1933
+f 1887 1898 1961
+f 67 181 104
+f 132 267 188
+f 8 1646 1697
+f 2675 2680 2695
+f 18 84 1658
+f 2031 2157 2095
+f 51 109 384
+f 1909 1925 1943
+f 177 181 309
+f 2422 2574 2533
+f 13 1697 1701
+f 2364 2392 2659
+f 1898 1957 1961
+f 109 132 384
+f 2036 2330 2065
+f 2372 2789 2767
+f 92 166 340
+f 22 46 65
+f 127 1918 332
+f 2380 2689 2666
+f 2667 2761 2720
+f 18 1658 1646
+f 1986 2619 2002
+f 1697 1887 1701
+f 1685 1701 1887
+f 1742 1957 1765
+f 1697 1898 1887
+f 1685 1933 1687
+f 1646 1898 1697
+f 2095 2185 2146
+f 2374 2666 2702
+f 11 84 42
+f 13 1636 46
+f 13 1701 1636
+f 2021 2036 2525
+f 1685 1687 1701
+f 2364 2659 2368
+f 2675 2695 2689
+f 2021 2525 2503
+f 1929 1943 1935
+f 2533 2574 2619
+f 11 1658 84
+f 1765 1811 1855
+f 1646 1904 1898
+f 2680 2685 2693
+f 2728 2795 2792
+f 1636 1701 1687
+f 1898 1904 1957
+f 2728 2756 2795
+f 1811 2503 1855
+f 2382 2658 2681
+f 127 152 1664
+f 2396 2702 2804
+f 2673 2756 2728
+f 1661 1687 1933
+f 42 326 345
+f 1909 1943 1929
+f 2701 2767 2807
+f 1661 1933 1909
+f 1646 1658 1904
+f 2666 2705 2702
+f 131 267 132
+f 109 131 132
+f 69 1894 1932
+f 46 1636 65
+f 1765 1957 1964
+f 248 399 340
+f 32 324 135
+f 2392 2683 2735
+f 2331 2385 2658
+f 2728 2792 2759
+f 39 1894 69
+f 51 354 109
+f 2330 2385 2331
+f 218 267 1252
+f 32 135 326
+f 51 65 354
+f 2184 2188 2306
+f 11 42 345
+f 2673 2713 2756
+f 2396 2804 2789
+f 92 152 166
+f 1904 1964 1957
+f 1914 1935 1932
+f 1636 1687 1661
+f 2385 2728 2658
+f 2713 2763 2756
+f 39 218 321
+f 2658 2728 2759
+f 2385 2673 2728
+f 1765 1964 1811
+f 104 135 324
+f 2680 2693 2695
+f 1986 2009 1995
+f 2146 2188 2184
+f 1661 1909 1929
+f 2701 2807 2761
+f 1914 1929 1935
+f 2756 2797 2795
+f 1658 1682 1904
+f 1995 2009 2031
+f 6 65 1636
+f 177 399 297
+f 2392 2735 2659
+f 2756 2763 2797
+f 2666 2689 2711
+f 11 1682 1658
+f 6 1636 1661
+f 1665 1724 1710
+f 2683 2720 2764
+f 218 1252 321
+f 2681 2693 2685
+f 2666 2711 2705
+f 2713 2732 2763
+f 1682 1964 1904
+f 2792 2795 2832
+f 109 354 131
+f 166 248 340
+f 2015 2031 2095
+f 332 1665 380
+f 2702 2705 2811
+f 2266 2306 2368
+f 1811 2463 2503
+f 2036 2300 2330
+f 2759 2792 2810
+f 104 181 230
+f 177 1253 181
+f 131 207 267
+f 1986 1995 2619
+f 135 345 326
+f 2032 2095 2146
+f 1894 1914 1932
+f 1724 2422 1782
+f 2394 2713 2673
+f 2658 2749 2681
+f 2732 2774 2763
+f 2689 2695 2714
+f 2767 2789 2847
+f 2658 2759 2749
+f 2763 2803 2797
+f 11 345 335
+f 2792 2832 2810
+f 2763 2774 2803
+f 11 1700 1682
+f 2702 2811 2804
+f 6 48 65
+f 207 1252 267
+f 1652 1661 1929
+f 131 354 383
+f 2021 2300 2036
+f 6 1661 1652
+f 2687 2732 2713
+f 48 354 65
+f 1722 1811 1964
+f 2351 2368 2659
+f 2795 2797 2825
+f 1995 2031 2015
+f 2689 2714 2711
+f 131 383 207
+f 248 297 399
+f 2683 2764 2735
+f 1652 1929 1914
+f 11 335 1700
+f 2759 2810 2770
+f 2732 2742 2774
+f 2720 2761 2785
+f 2749 2759 2770
+f 2330 2371 2385
+f 2371 2673 2385
+f 2015 2095 2032
+f 2681 2749 2693
+f 127 332 239
+f 2767 2847 2807
+f 2394 2687 2713
+f 39 1659 1894
+f 2742 2799 2774
+f 2795 2825 2832
+f 104 230 135
+f 39 321 1659
+f 48 383 354
+f 2774 2853 2803
+f 2184 2306 2266
+f 6 1652 48
+f 2032 2146 2184
+f 2693 2714 2695
+f 2774 2799 2853
+f 2422 2533 2451
+f 1999 2021 2503
+f 2705 2711 2826
+f 177 297 1253
+f 1682 1937 1964
+f 2738 2783 2812
+f 380 1665 1710
+f 2742 2743 2799
+f 2797 2803 2831
+f 2721 2742 2732
+f 2705 2826 2811
+f 1999 2503 2463
+f 139 207 383
+f 2371 2394 2673
+f 181 1253 230
+f 2693 2749 2762
+f 2687 2721 2732
+f 2731 2812 2799
+f 2266 2368 2351
+f 1659 1914 1894
+f 70 1652 1914
+f 2731 2799 2743
+f 2720 2785 2764
+f 2300 2371 2330
+f 2731 2738 2812
+f 48 54 383
+f 207 300 1252
+f 2783 2879 2812
+f 2799 2812 2883
+f 2789 2804 2863
+f 1682 1700 1937
+f 127 265 152
+f 2733 2743 2742
+f 54 139 383
+f 48 1652 54
+f 2797 2831 2825
+f 1710 1724 1782
+f 2770 2810 2771
+f 239 332 380
+f 2799 2883 2853
+f 1722 1964 1937
+f 2749 2770 2771
+f 2738 2793 2783
+f 152 271 166
+f 154 335 345
+f 2803 2853 2864
+f 2721 2733 2742
+f 2812 2879 2874
+f 29 1700 335
+f 54 1652 70
+f 1811 1867 2463
+f 135 154 345
+f 139 300 207
+f 2693 2762 2776
+f 2693 2776 2714
+f 2659 2735 2670
+f 2812 2874 2883
+f 2810 2832 2841
+f 2533 2619 2567
+f 2711 2714 2826
+f 2730 2731 2743
+f 2706 2738 2731
+f 2749 2771 2762
+f 68 70 1914
+f 2803 2864 2831
+f 2730 2743 2733
+f 1722 1867 1811
+f 2783 2852 2879
+f 160 321 1252
+f 2789 2863 2847
+f 68 1914 1659
+f 2761 2807 2843
+f 2853 2883 2864
+f 54 377 139
+f 2351 2659 2670
+f 2672 2721 2687
+f 54 70 377
+f 166 1264 248
+f 2714 2776 2826
+f 29 1937 1700
+f 2825 2827 2832
+f 2771 2810 2854
+f 2783 2793 2852
+f 2810 2841 2854
+f 2857 2874 2879
+f 2709 2733 2721
+f 1782 2422 2451
+f 2390 2687 2394
+f 2021 2278 2300
+f 2706 2731 2730
+f 127 239 265
+f 139 262 300
+f 2804 2811 2878
+f 2874 2875 2883
+f 160 1252 300
+f 2723 2793 2738
+f 2706 2723 2738
+f 85 1659 321
+f 2761 2843 2785
+f 2762 2788 2776
+f 1995 2642 2619
+f 2864 2883 2875
+f 29 335 154
+f 2852 2857 2879
+f 2827 2841 2832
+f 68 377 70
+f 2722 2730 2733
+f 2825 2831 2835
+f 2830 2831 2864
+f 152 265 271
+f 2672 2709 2721
+f 2762 2771 2788
+f 248 1323 297
+f 2709 2722 2733
+f 2390 2672 2687
+f 2735 2764 2744
+f 1999 2278 2021
+f 2367 2394 2371
+f 2706 2730 2718
+f 2830 2864 2875
+f 166 271 1264
+f 2857 2871 2874
+f 1867 1999 2463
+f 139 377 160
+f 2278 2371 2300
+f 2871 2875 2874
+f 2825 2835 2827
+f 139 160 262
+f 2811 2826 2858
+f 2776 2829 2826
+f 135 230 276
+f 2718 2730 2722
+f 297 1344 1253
+f 2830 2835 2831
+f 2723 2800 2793
+f 2793 2880 2852
+f 85 321 160
+f 2804 2878 2863
+f 2793 2800 2880
+f 160 300 262
+f 1722 1937 1778
+f 2807 2847 2873
+f 68 1659 85
+f 2839 2854 2841
+f 2451 2533 2567
+f 1970 1995 2015
+f 2007 2015 2032
+f 2367 2390 2394
+f 2852 2871 2857
+f 29 1654 1937
+f 68 85 377
+f 2830 2875 2876
+f 2697 2706 2718
+f 2670 2735 2744
+f 1722 1812 1867
+f 2776 2788 2829
+f 2827 2839 2841
+f 2032 2184 2085
+f 135 276 154
+f 230 1253 1338
+f 2696 2822 2800
+f 2697 2723 2706
+f 2704 2800 2723
+f 2800 2822 2893
+f 1722 1778 1812
+f 2871 2876 2875
+f 248 1264 1323
+f 2808 2835 2830
+f 2771 2854 2833
+f 2839 2850 2854
+f 2696 2800 2704
+f 2800 2893 2880
+f 2672 2717 2709
+f 85 160 377
+f 2278 2367 2371
+f 2718 2722 2734
+f 2709 2717 2722
+f 2852 2880 2891
+f 2852 2891 2871
+f 2811 2858 2878
+f 2830 2876 2848
+f 297 1323 1344
+f 2807 2873 2843
+f 2808 2830 2848
+f 2184 2266 2237
+f 2826 2829 2858
+f 2771 2833 2788
+f 2567 2619 2642
+f 2806 2827 2835
+f 2796 2839 2827
+f 2764 2785 2838
+f 2696 2824 2822
+f 2862 2876 2871
+f 29 154 63
+f 2390 2397 2672
+f 1867 2428 1999
+f 2672 2678 2717
+f 1812 1819 1867
+f 2697 2718 2726
+f 2798 2835 2808
+f 1253 1344 1338
+f 2822 2899 2893
+f 2718 2734 2740
+f 2697 2698 2723
+f 2717 2734 2722
+f 29 63 1654
+f 225 239 380
+f 1819 1856 1867
+f 2397 2678 2672
+f 1826 1864 1856
+f 2266 2351 2335
+f 1819 1826 1856
+f 2796 2827 2806
+f 230 1338 276
+f 1790 1819 1812
+f 2847 2863 2882
+f 2676 2704 2723
+f 2822 2824 2899
+f 1856 2428 1867
+f 2718 2740 2726
+f 2880 2893 2896
+f 1805 1826 1819
+f 1654 1911 1937
+f 2823 2850 2839
+f 1778 1790 1812
+f 2798 2808 2848
+f 1746 1778 1937
+f 2798 2806 2835
+f 2880 2896 2891
+f 1856 1864 2401
+f 2796 2823 2839
+f 2682 2824 2696
+f 167 380 1710
+f 1790 1805 1819
+f 1864 2408 2401
+f 2842 2876 2862
+f 1856 2401 2428
+f 2842 2848 2876
+f 2844 2854 2850
+f 1826 1846 1864
+f 2744 2764 2838
+f 239 264 265
+f 2862 2871 2887
+f 2871 2891 2887
+f 2788 2851 2829
+f 2676 2723 2698
+f 2697 2726 2698
+f 1970 2642 1995
+f 2664 2696 2704
+f 1805 1846 1826
+f 1846 2408 1864
+f 2678 2700 2717
+f 2833 2854 2844
+f 2893 2899 2896
+f 2734 2758 2740
+f 1976 1999 2428
+f 2758 2796 2806
+f 1746 1937 1911
+f 2847 2882 2873
+f 2717 2760 2734
+f 1776 1805 1790
+f 2401 2408 2413
+f 2007 2032 2085
+f 2788 2833 2851
+f 1763 1790 1778
+f 2748 2806 2798
+f 265 299 271
+f 2366 2390 2367
+f 1970 2015 2007
+f 2401 2441 2428
+f 2748 2758 2806
+f 2351 2670 2674
+f 2740 2758 2748
+f 2734 2760 2758
+f 2664 2682 2696
+f 2819 2850 2823
+f 2760 2823 2796
+f 2758 2760 2796
+f 1846 2424 2408
+f 2408 2424 2413
+f 2798 2848 2817
+f 1776 1846 1805
+f 1999 2259 2278
+f 1763 1776 1790
+f 2664 2704 2676
+f 2785 2843 2867
+f 2085 2184 2237
+f 2401 2413 2441
+f 2700 2753 2717
+f 2366 2397 2390
+f 1746 1763 1778
+f 2817 2848 2842
+f 2717 2753 2760
+f 2726 2740 2750
+f 154 276 190
+f 2829 2886 2858
+f 2397 2691 2678
+f 2740 2748 2750
+f 2678 2691 2700
+f 2278 2286 2367
+f 2698 2726 2725
+f 2748 2798 2817
+f 2682 2784 2824
+f 12 1710 1782
+f 2891 2896 2892
+f 2863 2878 2897
+f 2753 2823 2760
+f 63 78 1654
+f 2896 2899 2902
+f 2753 2819 2823
+f 271 1303 1264
+f 78 1911 1654
+f 2824 2903 2899
+f 1976 2428 2441
+f 63 154 101
+f 2887 2891 2892
+f 1846 1875 2424
+f 1776 1786 1846
+f 1868 2413 2424
+f 1763 1786 1776
+f 225 264 239
+f 2858 2898 2878
+f 2748 2817 2750
+f 276 1338 1266
+f 2237 2266 2335
+f 2829 2851 2886
+f 2842 2862 2870
+f 2700 2769 2753
+f 1338 1344 1397
+f 2814 2850 2819
+f 1746 1777 1763
+f 2833 2844 2851
+f 2862 2887 2870
+f 2664 2671 2682
+f 167 225 380
+f 264 299 265
+f 1868 2424 1875
+f 1883 2441 2413
+f 2753 2769 2819
+f 2863 2897 2882
+f 2671 2784 2682
+f 2726 2750 2754
+f 1763 1777 1786
+f 2725 2726 2754
+f 2785 2867 2838
+f 1786 1832 1846
+f 1832 1875 1846
+f 2784 2903 2824
+f 2899 2903 2902
+f 2676 2698 2715
+f 2691 2769 2700
+f 1264 1369 1323
+f 1976 2224 1999
+f 101 154 190
+f 2813 2817 2842
+f 2670 2744 2777
+f 2814 2844 2850
+f 2366 2691 2397
+f 1746 1911 1754
+f 1323 1423 1344
+f 1868 1883 2413
+f 2843 2873 2860
+f 2698 2725 2715
+f 2316 2366 2367
+f 2750 2817 2754
+f 1746 1754 1777
+f 2335 2351 2674
+f 1777 1832 1786
+f 190 276 1266
+f 63 330 78
+f 1823 1868 1875
+f 1999 2224 2259
+f 2259 2286 2278
+f 2858 2886 2898
+f 1823 1875 1832
+f 2286 2316 2367
+f 271 299 1303
+f 1777 1823 1832
+f 1782 2451 1799
+f 1266 1338 1397
+f 2754 2817 2813
+f 2896 2902 2901
+f 1754 1823 1777
+f 2878 2898 2897
+f 2691 2708 2769
+f 2892 2896 2901
+f 2664 2676 2729
+f 63 334 330
+f 2868 2887 2892
+f 1820 1868 1823
+f 2813 2842 2820
+f 63 101 334
+f 1820 1883 1868
+f 2769 2780 2819
+f 12 167 1710
+f 2869 2873 2882
+f 1754 1820 1823
+f 2664 2669 2671
+f 2820 2842 2870
+f 2366 2373 2691
+f 2868 2870 2887
+f 78 1908 1911
+f 1344 1423 1397
+f 2725 2754 2747
+f 2671 2782 2784
+f 2843 2860 2867
+f 2373 2708 2691
+f 2676 2715 2729
+f 1754 1911 1908
+f 2780 2814 2819
+f 2754 2813 2820
+f 1264 1303 1369
+f 2670 2777 2674
+f 2844 2845 2851
+f 1976 2441 2633
+f 2451 2567 2457
+f 2715 2725 2747
+f 45 78 330
+f 2316 2373 2366
+f 1883 2633 2441
+f 2259 2265 2286
+f 1323 1369 1423
+f 2285 2316 2286
+f 2265 2285 2286
+f 2708 2724 2769
+f 2263 2277 2285
+f 2900 2902 2903
+f 2669 2782 2671
+f 2860 2873 2869
+f 1754 1908 1820
+f 2263 2285 2265
+f 2744 2838 2849
+f 1810 1883 1820
+f 2277 2308 2285
+f 2747 2754 2820
+f 2277 2304 2308
+f 2285 2308 2316
+f 2814 2845 2844
+f 2784 2900 2903
+f 2251 2263 2265
+f 2253 2265 2259
+f 190 1266 1335
+f 330 334 368
+f 2263 2273 2277
+f 2664 2729 2703
+f 2851 2865 2886
+f 2224 2253 2259
+f 2816 2820 2870
+f 2316 2326 2373
+f 2273 2304 2277
+f 2816 2870 2868
+f 2308 2326 2316
+f 2513 2567 2642
+f 45 1908 78
+f 2304 2311 2308
+f 2868 2892 2885
+f 2251 2265 2253
+f 1976 2228 2224
+f 2881 2882 2897
+f 2724 2780 2769
+f 2715 2747 2729
+f 264 290 299
+f 2251 2273 2263
+f 2900 2901 2902
+f 2885 2892 2901
+f 2304 2309 2311
+f 101 190 241
+f 12 1782 1799
+f 2664 2684 2669
+f 225 282 264
+f 2273 2309 2304
+f 2308 2311 2326
+f 2782 2900 2784
+f 1266 1397 1420
+f 2747 2820 2755
+f 2373 2657 2708
+f 2755 2820 2816
+f 45 330 368
+f 1810 1820 1908
+f 101 159 334
+f 2729 2747 2755
+f 2780 2845 2814
+f 2251 2253 2254
+f 2869 2882 2881
+f 299 1251 1303
+f 2664 2703 2684
+f 2886 2894 2898
+f 2224 2250 2253
+f 2895 2897 2898
+f 1810 2633 1883
+f 2251 2254 2273
+f 2307 2311 2309
+f 2744 2849 2777
+f 2273 2303 2309
+f 1976 2633 2228
+f 167 201 225
+f 2816 2868 2836
+f 2703 2729 2755
+f 1970 2593 2642
+f 2845 2865 2851
+f 2657 2724 2708
+f 334 392 368
+f 2311 2318 2326
+f 2250 2254 2253
+f 2303 2307 2309
+f 2326 2353 2373
+f 2007 2085 2008
+f 1969 1970 2007
+f 2838 2867 2856
+f 190 1335 241
+f 1266 1420 1335
+f 2224 2228 2250
+f 2755 2816 2775
+f 2836 2868 2885
+f 2307 2318 2311
+f 1298 1369 1303
+f 2254 2261 2273
+f 2273 2282 2303
+f 1397 1423 1422
+f 290 1251 299
+f 2085 2237 2161
+f 101 241 159
+f 2703 2755 2775
+f 334 400 392
+f 264 282 290
+f 2250 2261 2254
+f 2261 2282 2273
+f 1799 2451 2457
+f 2669 2791 2782
+f 2775 2816 2836
+f 2280 2307 2303
+f 1251 1298 1303
+f 2881 2897 2895
+f 2318 2353 2326
+f 201 282 225
+f 159 400 334
+f 2280 2303 2282
+f 2228 2262 2250
+f 2885 2901 2890
+f 2250 2262 2261
+f 2865 2894 2886
+f 1369 1372 1423
+f 2724 2805 2780
+f 44 45 368
+f 1738 1810 1908
+f 1397 1422 1420
+f 2855 2867 2860
+f 2782 2890 2900
+f 2780 2805 2845
+f 2890 2901 2900
+f 2261 2262 2282
+f 45 1678 1908
+f 2279 2318 2307
+f 2262 2280 2282
+f 2237 2335 2350
+f 2894 2895 2898
+f 368 392 386
+f 2279 2307 2280
+f 1797 2633 1810
+f 2373 2386 2657
+f 2228 2255 2262
+f 1298 1372 1369
+f 2838 2856 2849
+f 2669 2684 2791
+f 2228 2633 2255
+f 2255 2280 2262
+f 2860 2869 2872
+f 2457 2567 2513
+f 2657 2805 2724
+f 12 49 167
+f 2353 2386 2373
+f 2836 2885 2859
+f 2782 2859 2890
+f 1738 1797 1810
+f 2255 2279 2280
+f 1372 1422 1423
+f 44 368 386
+f 2703 2775 2791
+f 2775 2836 2859
+f 2684 2703 2791
+f 95 386 392
+f 95 392 400
+f 2782 2791 2859
+f 2335 2674 2710
+f 2805 2865 2845
+f 44 1678 45
+f 49 201 167
+f 2859 2885 2890
+f 241 1335 1391
+f 1797 1863 2633
+f 1738 1908 1939
+f 2855 2856 2867
+f 1335 1420 1454
+f 2513 2642 2593
+f 2869 2881 2888
+f 2212 2255 2633
+f 2674 2777 2768
+f 1678 1939 1908
+f 1251 1326 1298
+f 2212 2279 2255
+f 2657 2679 2805
+f 2775 2859 2791
+f 1768 1863 1797
+f 1732 1768 1797
+f 1732 1797 1738
+f 2301 2353 2318
+f 2279 2301 2318
+f 1734 1772 1768
+f 1768 1772 1814
+f 159 241 1306
+f 1298 1355 1372
+f 2855 2860 2872
+f 1732 1734 1768
+f 1420 1422 1438
+f 1768 1814 1863
+f 1335 1454 1391
+f 1969 2007 2008
+f 1772 1822 1814
+f 1969 2593 1970
+f 290 1318 1251
+f 1372 1392 1422
+f 2008 2085 2161
+f 1732 1738 1945
+f 1863 2599 2633
+f 1734 1760 1772
+f 1732 1958 1734
+f 2881 2895 2889
+f 1760 1822 1772
+f 1420 1438 1454
+f 159 277 400
+f 2869 2888 2872
+f 2834 2894 2865
+f 2657 2668 2679
+f 2805 2834 2865
+f 241 1391 1306
+f 282 1260 290
+f 1814 1822 1838
+f 1814 2399 1863
+f 1738 1939 1945
+f 95 400 141
+f 1298 1326 1355
+f 2386 2668 2657
+f 1732 1945 1958
+f 95 115 386
+f 1734 1958 1760
+f 2772 2777 2849
+f 2212 2301 2279
+f 2089 2212 2633
+f 1392 1438 1422
+f 2161 2237 2350
+f 1355 1392 1372
+f 1760 1845 1822
+f 2884 2895 2894
+f 1822 1845 1838
+f 44 386 55
+f 1814 1838 2399
+f 1251 1318 1326
+f 2663 2805 2679
+f 12 1799 1717
+f 2353 2369 2386
+f 1863 2399 2599
+f 1719 1958 1945
+f 1719 1760 1958
+f 1714 1945 1939
+f 159 1306 277
+f 2881 2889 2888
+f 2335 2710 2350
+f 1760 1798 1845
+f 2029 2633 2599
+f 201 231 282
+f 1793 1838 1845
+f 1714 1719 1945
+f 44 1662 1678
+f 12 1717 49
+f 290 1260 1318
+f 2301 2369 2353
+f 2674 2768 2710
+f 2029 2089 2633
+f 141 400 277
+f 2707 2834 2805
+f 2834 2884 2894
+f 2786 2849 2856
+f 1714 1939 1715
+f 95 141 115
+f 2884 2889 2895
+f 2768 2777 2772
+f 1835 2399 1838
+f 1793 1845 1798
+f 2172 2301 2212
+f 1719 1752 1760
+f 2663 2679 2668
+f 2663 2707 2805
+f 115 363 386
+f 1752 1798 1760
+f 1662 1939 1678
+f 2089 2172 2212
+f 55 386 363
+f 1793 1835 1838
+f 1714 1752 1719
+f 425 1454 1438
+f 1747 1793 1798
+f 1714 1715 1747
+f 1714 1747 1752
+f 1747 1798 1752
+f 1799 2457 1860
+f 2801 2856 2855
+f 1392 1502 1438
+f 482 1391 1454
+f 44 55 1662
+f 2386 2387 2668
+f 1662 1715 1939
+f 231 1260 282
+f 2172 2197 2301
+f 2772 2849 2786
+f 1747 1764 1793
+f 2089 2133 2172
+f 1764 1835 1793
+f 1715 1764 1747
+f 2707 2741 2834
+f 2741 2884 2834
+f 49 319 201
+f 2133 2180 2172
+f 2369 2387 2386
+f 2172 2180 2197
+f 1355 1474 1392
+f 2121 2176 2180
+f 1306 1391 1522
+f 1326 1417 1355
+f 1318 1332 1326
+f 2121 2180 2133
+f 2399 2547 2599
+f 2075 2133 2089
+f 2818 2855 2872
+f 114 115 141
+f 2176 2203 2180
+f 2452 2457 2513
+f 2072 2121 2133
+f 2821 2889 2884
+f 2029 2075 2089
+f 2389 2663 2668
+f 1835 2547 2399
+f 2180 2203 2197
+f 2176 2199 2203
+f 2121 2155 2176
+f 115 397 363
+f 2197 2268 2301
+f 2741 2821 2884
+f 2072 2133 2075
+f 2786 2856 2801
+f 1715 1740 1764
+f 2028 2029 2599
+f 425 1438 1502
+f 2155 2199 2176
+f 2877 2888 2889
+f 2072 2155 2121
+f 2301 2345 2369
+f 303 1318 1260
+f 1740 1835 1764
+f 277 1306 1463
+f 1717 1799 1860
+f 114 397 115
+f 425 482 1454
+f 2866 2872 2888
+f 55 363 336
+f 2513 2593 2526
+f 1662 1740 1715
+f 2379 2707 2663
+f 2387 2389 2668
+f 2197 2203 2215
+f 2199 2213 2203
+f 2029 2071 2075
+f 2070 2072 2075
+f 2155 2206 2199
+f 336 363 397
+f 1392 1474 1502
+f 2821 2877 2889
+f 141 277 1334
+f 201 319 231
+f 1326 1332 1417
+f 2268 2345 2301
+f 2662 2741 2707
+f 2070 2155 2072
+f 482 1522 1391
+f 2199 2206 2213
+f 1969 2607 2593
+f 2028 2599 2547
+f 303 1332 1318
+f 2203 2213 2215
+f 2197 2215 2268
+f 1969 2008 1974
+f 2070 2075 2071
+f 1740 2547 1835
+f 2801 2855 2818
+f 2028 2071 2029
+f 2161 2350 2333
+f 2008 2161 2052
+f 114 394 397
+f 1355 1417 1474
+f 2379 2663 2389
+f 2369 2376 2387
+f 114 141 176
+f 2694 2821 2741
+f 2155 2165 2206
+f 55 1647 1662
+f 2727 2768 2772
+f 1860 2457 2452
+f 2070 2101 2155
+f 2173 2213 2206
+f 55 336 1647
+f 1306 1522 1463
+f 2736 2772 2786
+f 336 397 394
+f 2345 2376 2369
+f 2101 2165 2155
+f 2350 2710 2665
+f 2165 2173 2206
+f 2070 2071 2101
+f 2162 2215 2213
+f 2710 2768 2712
+f 49 1717 1707
+f 2866 2888 2877
+f 2379 2662 2707
+f 2162 2268 2215
+f 2028 2109 2071
+f 2383 2389 2387
+f 2162 2213 2173
+f 2818 2872 2866
+f 2071 2109 2101
+f 199 1260 231
+f 2452 2513 2526
+f 2662 2694 2741
+f 277 1463 1334
+f 199 303 1260
+f 2109 2173 2165
+f 2101 2109 2165
+f 2376 2383 2387
+f 114 176 394
+f 1662 1737 1740
+f 2028 2049 2109
+f 2779 2877 2821
+f 141 1334 176
+f 314 336 394
+f 2751 2786 2801
+f 2028 2547 2049
+f 2049 2173 2109
+f 2049 2162 2173
+f 2379 2389 2383
+f 2727 2772 2736
+f 2526 2593 2607
+f 314 1647 336
+f 2333 2350 2665
+f 2694 2779 2821
+f 49 1707 319
+f 2052 2161 2333
+f 2712 2768 2727
+f 1647 1737 1662
+f 1969 1974 2607
+f 2736 2786 2751
+f 1974 2008 2052
+f 2665 2710 2712
+f 1740 2520 2547
+f 176 314 394
+f 2268 2292 2345
+f 425 1502 557
+f 2162 2202 2268
+f 2034 2049 2547
+f 274 1332 303
+f 425 701 482
+f 2329 2376 2345
+f 2049 2202 2162
+f 15 1647 314
+f 1737 2520 1740
+f 462 1502 1474
+f 1332 1371 1417
+f 2778 2801 2818
+f 1717 1860 1770
+f 2360 2383 2376
+f 482 636 1522
+f 2751 2801 2778
+f 1647 1689 1737
+f 2779 2828 2877
+f 2828 2866 2877
+f 2360 2379 2383
+f 2360 2662 2379
+f 15 1689 1647
+f 1417 1468 1474
+f 231 319 359
+f 199 231 359
+f 2202 2292 2268
+f 2034 2202 2049
+f 176 346 314
+f 176 1334 212
+f 2391 2694 2662
+f 516 1463 1522
+f 15 314 346
+f 2292 2329 2345
+f 2003 2034 2547
+f 2809 2818 2866
+f 2690 2779 2694
+f 1860 2452 1878
+f 2716 2727 2736
+f 425 557 701
+f 274 1371 1332
+f 2003 2547 2520
+f 1707 1717 1770
+f 176 212 346
+f 2329 2349 2376
+f 462 557 1502
+f 2736 2751 2737
+f 2349 2360 2376
+f 482 701 636
+f 2778 2818 2809
+f 15 1892 1689
+f 1334 1463 1521
+f 196 303 199
+f 2661 2665 2712
+f 1689 1966 1737
+f 2809 2866 2828
+f 2692 2712 2727
+f 1371 1468 1417
+f 2360 2391 2662
+f 2757 2828 2779
+f 462 1474 1468
+f 15 346 1638
+f 212 1334 238
+f 2452 2526 2476
+f 2333 2665 2355
+f 516 1522 636
+f 2751 2778 2752
+f 15 1638 1892
+f 196 274 303
+f 2391 2690 2694
+f 2034 2179 2202
+f 1737 2482 2520
+f 1689 1892 1966
+f 2526 2607 2561
+f 2716 2736 2737
+f 1770 1860 1878
+f 2690 2757 2779
+f 319 1707 1698
+f 1974 2640 2607
+f 319 1698 359
+f 2737 2751 2752
+f 2052 2333 2234
+f 2692 2727 2716
+f 2179 2292 2202
+f 151 346 212
+f 516 1521 1463
+f 2292 2328 2329
+f 2003 2179 2034
+f 1974 2052 2062
+f 2329 2340 2349
+f 1737 1966 2482
+f 2778 2809 2802
+f 2809 2828 2815
+f 4 1638 346
+f 2340 2360 2349
+f 2661 2712 2692
+f 1638 1663 1892
+f 2757 2815 2828
+f 2752 2778 2802
+f 2328 2340 2329
+f 2281 2328 2292
+f 1878 2452 2476
+f 151 212 238
+f 2179 2281 2292
+f 2355 2665 2661
+f 1663 1966 1892
+f 156 199 359
+f 4 1663 1638
+f 4 346 351
+f 151 351 346
+f 2802 2809 2815
+f 1983 2003 2520
+f 2476 2526 2561
+f 238 1334 1254
+f 1334 1521 1453
+f 1707 1770 1731
+f 2561 2607 2640
+f 2234 2333 2355
+f 2003 2061 2179
+f 1983 2520 2482
+f 1698 1707 1731
+f 2281 2297 2328
+f 1371 1436 1468
+f 1974 2062 2640
+f 2179 2257 2281
+f 156 196 199
+f 2312 2391 2360
+f 2312 2360 2340
+f 2052 2234 2062
+f 2257 2297 2281
+f 1254 1334 1453
+f 268 1371 274
+f 2003 2018 2061
+f 2061 2153 2179
+f 462 1468 570
+f 2312 2340 2328
+f 30 359 1698
+f 1770 1878 1849
+f 4 351 108
+f 2153 2257 2179
+f 108 351 151
+f 4 1648 1663
+f 2398 2661 2692
+f 462 714 557
+f 1983 2018 2003
+f 2378 2690 2391
+f 151 238 1254
+f 2297 2312 2328
+f 2686 2692 2716
+f 2737 2752 2790
+f 1731 1770 1849
+f 2355 2661 2365
+f 2690 2719 2757
+f 636 701 872
+f 2716 2737 2739
+f 1663 1677 1966
+f 557 853 701
+f 2752 2802 2837
+f 4 108 385
+f 2061 2098 2153
+f 30 156 359
+f 2257 2312 2297
+f 2365 2661 2398
+f 1878 2476 2448
+f 4 385 1648
+f 516 636 827
+f 2018 2098 2061
+f 268 1436 1371
+f 570 1468 1436
+f 2757 2773 2815
+f 108 151 1254
+f 2476 2561 2535
+f 2153 2207 2257
+f 2802 2815 2840
+f 1849 1878 2448
+f 1966 2410 2482
+f 2561 2640 2617
+f 2312 2378 2391
+f 2398 2692 2686
+f 1698 1731 1921
+f 2030 2640 2062
+f 1983 2023 2018
+f 2234 2355 2305
+f 2305 2355 2365
+f 196 258 274
+f 2098 2207 2153
+f 1648 1677 1663
+f 108 187 385
+f 462 570 714
+f 516 659 1521
+f 2448 2476 2535
+f 2257 2299 2312
+f 2062 2234 2210
+f 2535 2561 2617
+f 2207 2299 2257
+f 108 1254 187
+f 2686 2716 2739
+f 2018 2046 2098
+f 2752 2837 2790
+f 2030 2617 2640
+f 2378 2719 2690
+f 30 1698 1921
+f 75 1648 385
+f 2737 2790 2739
+f 2018 2023 2046
+f 2210 2234 2305
+f 2030 2062 2210
+f 75 385 187
+f 1983 2482 2634
+f 557 714 853
+f 258 268 274
+f 2046 2207 2098
+f 2719 2773 2757
+f 1677 2410 1966
+f 478 1453 1521
+f 2802 2840 2837
+f 1731 1849 1751
+f 701 853 872
+f 2305 2365 2317
+f 636 872 827
+f 2299 2378 2312
+f 2359 2365 2398
+f 75 1677 1648
+f 2773 2840 2815
+f 187 1254 222
+f 156 158 196
+f 2046 2163 2207
+f 1983 2634 2023
+f 75 187 222
+f 1254 1453 1496
+f 516 827 659
+f 1849 2448 1877
+f 2001 2046 2023
+f 1731 1751 1921
+f 2207 2272 2299
+f 2410 2634 2482
+f 2448 2535 2498
+f 2163 2238 2207
+f 2535 2617 2594
+f 2210 2305 2241
+f 2317 2365 2359
+f 2272 2378 2299
+f 2014 2617 2030
+f 2395 2398 2686
+f 30 38 156
+f 2030 2210 2183
+f 2207 2238 2272
+f 478 1521 659
+f 222 1254 304
+f 2241 2305 2317
+f 268 1424 1436
+f 2046 2123 2163
+f 1751 1849 1877
+f 1994 2001 2023
+f 158 258 196
+f 478 1496 1453
+f 2359 2398 2395
+f 1994 2046 2001
+f 2498 2535 2594
+f 2014 2594 2617
+f 1877 2448 2498
+f 570 1436 608
+f 2686 2739 2746
+f 1994 2023 2634
+f 2183 2210 2241
+f 304 1254 1366
+f 2014 2030 2183
+f 1994 2123 2046
+f 2123 2167 2163
+f 30 1921 1670
+f 75 222 398
+f 1254 1496 1366
+f 75 86 1677
+f 2357 2719 2378
+f 2739 2790 2794
+f 2790 2837 2861
+f 38 158 156
+f 2163 2256 2238
+f 2272 2357 2378
+f 2837 2840 2846
+f 2677 2773 2719
+f 2395 2686 2746
+f 2238 2256 2272
+f 2163 2167 2256
+f 2765 2840 2773
+f 222 304 398
+f 2208 2241 2317
+f 570 784 714
+f 2317 2359 2354
+f 1751 1923 1921
+f 2123 2174 2167
+f 1677 1803 2410
+f 30 1670 38
+f 1994 2174 2123
+f 304 1366 1261
+f 714 843 853
+f 2739 2794 2746
+f 75 398 86
+f 608 1436 1424
+f 258 1256 268
+f 2167 2174 2256
+f 2208 2317 2354
+f 304 1261 398
+f 853 864 872
+f 2790 2861 2794
+f 1751 1877 1806
+f 827 872 889
+f 2357 2677 2719
+f 2837 2846 2861
+f 2256 2357 2272
+f 2677 2765 2773
+f 2765 2846 2840
+f 1670 1921 1923
+f 2014 2620 2594
+f 2410 2582 2634
+f 86 1803 1677
+f 1877 2498 2456
+f 659 827 839
+f 1994 2143 2174
+f 2498 2594 2514
+f 2087 2183 2241
+f 1261 1366 1313
+f 478 659 679
+f 268 1256 1424
+f 2011 2014 2183
+f 478 521 1496
+f 398 1261 1313
+f 1980 1994 2634
+f 1751 1806 1923
+f 2143 2256 2174
+f 2359 2395 2699
+f 2087 2241 2208
+f 570 608 784
+f 1366 1496 1514
+f 158 169 258
+f 2354 2359 2699
+f 1806 1877 2456
+f 1994 2158 2143
+f 1803 2582 2410
+f 2514 2594 2620
+f 38 315 158
+f 714 784 843
+f 2456 2498 2514
+f 2011 2620 2014
+f 864 889 872
+f 2395 2746 2745
+f 843 864 853
+f 827 889 839
+f 2011 2183 2087
+f 1313 1366 1367
+f 38 1670 1633
+f 1980 2158 1994
+f 478 679 521
+f 659 839 679
+f 1980 2634 2582
+f 2193 2357 2256
+f 398 1313 1367
+f 2143 2193 2256
+f 521 1514 1496
+f 169 1256 258
+f 86 398 348
+f 1670 1923 1691
+f 2324 2677 2357
+f 2746 2794 2781
+f 2363 2765 2677
+f 158 315 169
+f 1366 1514 1418
+f 38 1633 315
+f 2395 2745 2699
+f 1735 1923 1806
+f 2688 2846 2765
+f 1366 1418 1367
+f 2143 2158 2193
+f 2787 2794 2861
+f 86 1725 1803
+f 2766 2861 2846
+f 2087 2208 2201
+f 1806 2456 1861
+f 1633 1670 1691
+f 203 398 1367
+f 1980 2102 2158
+f 2456 2514 2462
+f 203 348 398
+f 2193 2324 2357
+f 2514 2620 2530
+f 481 608 1424
+f 2208 2354 2344
+f 1691 1923 1735
+f 2102 2193 2158
+f 2745 2746 2781
+f 2324 2363 2677
+f 1256 1437 1424
+f 86 348 1725
+f 2011 2612 2620
+f 1803 2511 2582
+f 1735 1806 1861
+f 1980 2088 2102
+f 2363 2688 2765
+f 1993 2011 2087
+f 1861 2456 2462
+f 2088 2193 2102
+f 2781 2794 2787
+f 2462 2514 2530
+f 2688 2766 2846
+f 1980 2582 2610
+f 2766 2787 2861
+f 1725 2511 1803
+f 2530 2620 2612
+f 608 699 784
+f 521 679 688
+f 1993 2087 2201
+f 2354 2699 2370
+f 481 1424 1437
+f 813 864 843
+f 836 889 864
+f 826 839 889
+f 679 839 782
+f 771 843 784
+f 2201 2208 2344
+f 169 1314 1256
+f 1980 2610 2088
+f 315 1633 347
+f 521 541 1514
+f 169 315 184
+f 1993 2612 2011
+f 5 1633 1691
+f 1418 1514 1516
+f 2511 2610 2582
+f 2038 2324 2193
+f 2038 2193 2088
+f 1691 1735 1903
+f 1367 1418 1451
+f 481 699 608
+f 203 1367 1388
+f 1256 1314 1437
+f 2226 2363 2324
+f 2384 2699 2745
+f 1735 1861 1762
+f 203 204 348
+f 1861 2462 1871
+f 826 889 836
+f 771 813 843
+f 813 836 864
+f 679 782 688
+f 184 315 347
+f 2344 2354 2370
+f 169 184 1314
+f 2017 2088 2610
+f 782 839 826
+f 699 771 784
+f 5 347 1633
+f 2296 2688 2363
+f 521 688 541
+f 2462 2530 2468
+f 348 1672 1725
+f 2017 2038 2088
+f 2388 2745 2781
+f 5 1691 1903
+f 541 1516 1514
+f 2038 2226 2324
+f 2356 2766 2688
+f 2660 2781 2787
+f 1735 1762 1903
+f 2381 2787 2766
+f 2530 2612 2592
+f 2226 2296 2363
+f 1418 1516 1451
+f 1367 1451 1388
+f 1762 1861 1871
+f 1725 2426 2511
+f 1991 2612 1993
+f 203 1388 204
+f 1993 2201 2150
+f 2370 2699 2384
+f 2296 2356 2688
+f 1871 2462 2468
+f 204 1672 348
+f 2384 2745 2388
+f 2356 2381 2766
+f 481 1437 550
+f 2511 2590 2610
+f 2468 2530 2592
+f 2381 2660 2787
+f 414 1437 1314
+f 2388 2781 2660
+f 481 742 699
+f 2017 2610 2590
+f 1672 2426 1725
+f 184 1447 1314
+f 1991 2592 2612
+f 813 842 836
+f 184 347 1263
+f 771 828 813
+f 2017 2590 2038
+f 2201 2344 2236
+f 810 826 836
+f 699 794 771
+f 5 155 347
+f 651 688 782
+f 696 782 826
+f 1991 1993 2150
+f 541 688 568
+f 2038 2626 2226
+f 5 1903 1637
+f 485 1516 541
+f 2426 2590 2511
+f 2006 2296 2226
+f 481 550 742
+f 414 550 1437
+f 1749 1903 1762
+f 1451 1516 1520
+f 414 1314 1447
+f 2150 2201 2236
+f 184 1263 1447
+f 813 828 842
+f 1388 1451 1475
+f 771 794 828
+f 810 836 842
+f 699 742 794
+f 155 1263 347
+f 2105 2356 2296
+f 1762 1871 2417
+f 204 1388 1398
+f 696 826 810
+f 568 688 651
+f 651 782 696
+f 2260 2344 2370
+f 5 1637 155
+f 2038 2590 2626
+f 204 1275 1672
+f 2232 2381 2356
+f 485 541 568
+f 1871 2468 2558
+f 485 1520 1516
+f 2275 2370 2384
+f 2006 2226 2626
+f 2264 2660 2381
+f 1451 1520 1475
+f 1637 1903 1749
+f 2276 2384 2388
+f 2274 2388 2660
+f 1388 1475 1398
+f 2006 2105 2296
+f 1749 1762 2417
+f 204 1398 1275
+f 88 2426 1672
+f 2468 2592 2637
+f 2236 2344 2260
+f 2105 2232 2356
+f 1871 2558 2417
+f 1990 2592 1991
+f 2260 2370 2275
+f 88 1672 1275
+f 2232 2264 2381
+f 2275 2384 2276
+f 2264 2274 2660
+f 2274 2276 2388
+f 1833 2590 2426
+f 568 651 628
+f 1991 2150 2077
+f 485 568 527
+f 696 810 786
+f 651 696 786
+f 458 1520 485
+f 2468 2637 2558
+f 1475 1520 1481
+f 2455 2626 2590
+f 704 1447 1263
+f 414 1447 704
+f 794 993 828
+f 828 1004 842
+f 88 1833 2426
+f 1398 1475 1444
+f 742 950 794
+f 810 842 1031
+f 414 801 550
+f 155 451 1263
+f 550 912 742
+f 2006 2626 2542
+f 527 568 628
+f 1275 1398 1354
+f 458 485 527
+f 628 651 786
+f 458 1481 1520
+f 2138 2150 2236
+f 1990 2637 2592
+f 1833 2455 2590
+f 2006 2609 2105
+f 155 1637 1390
+f 1444 1475 1481
+f 2105 2648 2232
+f 1990 1991 2077
+f 1354 1398 1444
+f 2455 2542 2626
+f 1997 2264 2232
+f 88 1275 338
+f 786 810 1031
+f 527 628 572
+f 2006 2542 2609
+f 2151 2236 2260
+f 2169 2260 2275
+f 2025 2274 2264
+f 2142 2275 2276
+f 2033 2276 2274
+f 1637 1749 1680
+f 458 527 511
+f 572 628 665
+f 2077 2150 2138
+f 628 786 665
+f 435 1481 458
+f 511 527 572
+f 2105 2609 2648
+f 338 1275 1354
+f 414 704 801
+f 451 704 1263
+f 435 458 511
+f 794 950 993
+f 572 665 838
+f 842 1004 1031
+f 742 912 950
+f 828 993 1004
+f 550 801 912
+f 665 786 838
+f 1997 2232 2648
+f 88 1771 1833
+f 1749 2417 1840
+f 155 1479 451
+f 404 1444 1481
+f 572 838 789
+f 511 572 702
+f 1997 2025 2264
+f 572 789 702
+f 404 1481 435
+f 155 1390 1479
+f 2138 2236 2151
+f 2025 2033 2274
+f 435 511 654
+f 1833 2406 2455
+f 2142 2169 2275
+f 2151 2260 2169
+f 511 702 654
+f 2033 2142 2276
+f 789 838 897
+f 702 789 806
+f 786 979 838
+f 2417 2558 2458
+f 1291 1390 1637
+f 284 1291 1637
+f 88 338 1771
+f 2455 2474 2542
+f 789 863 806
+f 654 702 787
+f 789 897 863
+f 404 435 654
+f 702 806 787
+f 284 1637 376
+f 1354 1444 1506
+f 643 654 787
+f 838 947 897
+f 404 654 643
+f 2542 2557 2609
+f 376 1637 1696
+f 786 1031 979
+f 806 863 884
+f 643 787 737
+f 1771 2406 1833
+f 497 643 623
+f 404 643 497
+f 838 979 947
+f 404 1506 1444
+f 623 643 737
+f 787 806 849
+f 863 897 921
+f 2406 2474 2455
+f 1637 1680 1696
+f 737 787 849
+f 806 884 849
+f 2602 2648 2609
+f 338 1354 1506
+f 623 737 709
+f 863 920 884
+f 497 623 500
+f 897 947 921
+f 585 623 709
+f 863 921 920
+f 2558 2637 2604
+f 500 623 585
+f 2474 2557 2542
+f 404 497 426
+f 1997 2648 2652
+f 709 737 814
+f 737 849 814
+f 585 709 698
+f 1680 1749 1948
+f 585 698 597
+f 500 585 513
+f 513 585 597
+f 441 497 500
+f 2557 2602 2609
+f 1749 1840 1948
+f 404 426 1506
+f 849 884 918
+f 1990 2604 2637
+f 597 698 664
+f 884 920 946
+f 698 709 768
+f 709 814 768
+f 1988 2025 1997
+f 426 497 441
+f 579 597 664
+f 814 849 918
+f 513 597 535
+f 920 921 1001
+f 1988 2033 2025
+f 2602 2652 2648
+f 450 500 513
+f 664 698 745
+f 1840 2417 2458
+f 535 597 579
+f 102 1771 338
+f 579 664 634
+f 2406 2506 2474
+f 698 768 745
+f 441 500 450
+f 884 946 918
+f 634 664 716
+f 704 856 801
+f 664 745 716
+f 1990 2077 2636
+f 947 979 1027
+f 451 856 704
+f 102 338 1506
+f 801 981 912
+f 921 947 1027
+f 979 1031 1027
+f 920 990 946
+f 1771 2449 2406
+f 574 579 634
+f 768 814 829
+f 814 918 886
+f 912 1120 950
+f 634 716 678
+f 2474 2548 2557
+f 574 634 669
+f 920 1001 990
+f 451 1479 684
+f 634 678 669
+f 1988 1997 2652
+f 426 1509 1506
+f 483 513 535
+f 502 535 579
+f 574 669 757
+f 814 886 829
+f 571 743 752
+f 575 757 743
+f 443 1479 1390
+f 1004 1128 1031
+f 574 757 575
+f 426 441 442
+f 993 1163 1004
+f 950 1193 993
+f 450 513 483
+f 502 579 574
+f 571 575 743
+f 1987 2077 2138
+f 2557 2600 2602
+f 716 745 761
+f 743 749 752
+f 745 768 799
+f 2474 2506 2548
+f 669 678 728
+f 669 780 757
+f 743 757 780
+f 678 716 720
+f 2458 2558 2604
+f 502 574 575
+f 1291 1442 1390
+f 2000 2138 2151
+f 428 441 450
+f 669 728 780
+f 571 752 606
+f 426 442 1509
+f 2406 2449 2506
+f 284 1341 1291
+f 921 1027 1001
+f 483 535 502
+f 743 780 749
+f 493 575 571
+f 716 761 720
+f 768 829 799
+f 724 752 749
+f 2010 2151 2169
+f 2548 2600 2557
+f 2016 2169 2142
+f 745 799 761
+f 428 442 441
+f 102 1506 1509
+f 678 685 728
+f 2024 2142 2033
+f 2602 2649 2652
+f 606 752 724
+f 493 502 575
+f 284 376 1271
+f 678 720 685
+f 470 493 571
+f 2600 2649 2602
+f 728 802 780
+f 434 450 483
+f 946 990 972
+f 428 450 434
+f 749 780 797
+f 903 918 946
+f 685 802 728
+f 724 749 797
+f 886 918 903
+f 102 1850 1771
+f 801 856 981
+f 720 761 739
+f 724 797 825
+f 829 886 840
+f 649 724 825
+f 606 724 649
+f 1771 1850 2449
+f 451 684 856
+f 685 720 739
+f 470 571 542
+f 670 825 859
+f 780 802 821
+f 483 502 501
+f 825 858 859
+f 443 684 1479
+f 780 821 797
+f 799 829 835
+f 797 858 825
+f 157 376 1696
+f 649 825 670
+f 912 981 1120
+f 761 799 788
+f 542 571 606
+f 443 1390 1442
+f 1027 1031 1128
+f 1988 2652 2649
+f 471 502 493
+f 990 1001 1008
+f 685 686 802
+f 2506 2638 2548
+f 434 483 476
+f 470 471 493
+f 739 761 788
+f 858 914 859
+f 797 821 858
+f 903 946 972
+f 685 739 686
+f 1291 1341 1442
+f 840 886 854
+f 854 886 903
+f 950 1120 1193
+f 1978 2600 2548
+f 471 501 502
+f 859 1011 925
+f 829 840 835
+f 788 799 835
+f 776 821 802
+f 670 859 730
+f 859 914 1011
+f 686 776 802
+f 972 990 1007
+f 1004 1163 1128
+f 284 1271 1341
+f 1990 2636 2604
+f 730 859 925
+f 1978 2649 2600
+f 2449 2596 2506
+f 476 483 508
+f 993 1193 1163
+f 483 501 508
+f 442 444 1509
+f 821 900 858
+f 858 900 914
+f 507 606 649
+f 470 542 471
+f 62 1696 1680
+f 428 434 496
+f 686 739 715
+f 507 649 670
+f 2506 2611 2638
+f 428 489 442
+f 990 1008 1007
+f 1988 2024 2033
+f 434 476 509
+f 2506 2596 2611
+f 1001 1027 1008
+f 925 1011 1036
+f 733 739 788
+f 157 1271 376
+f 776 812 821
+f 1978 2548 2638
+f 1988 2649 1992
+f 914 953 1011
+f 507 542 606
+f 10 1680 1948
+f 812 900 821
+f 733 788 835
+f 715 739 733
+f 900 953 914
+f 686 715 735
+f 686 804 776
+f 1987 2636 2077
+f 1978 1992 2649
+f 102 1509 193
+f 471 528 501
+f 2449 2504 2580
+f 755 835 840
+f 1850 2504 2449
+f 476 508 556
+f 507 670 519
+f 434 509 496
+f 501 528 508
+f 529 670 730
+f 766 840 854
+f 686 735 804
+f 2449 2580 2596
+f 476 556 509
+f 641 735 715
+f 730 925 785
+f 867 903 972
+f 854 903 867
+f 785 925 1036
+f 428 496 489
+f 733 835 755
+f 62 157 1696
+f 519 670 529
+f 1987 2138 2000
+f 442 489 444
+f 1011 1092 1036
+f 917 972 1007
+f 471 542 555
+f 1840 1888 1948
+f 2485 2540 2504
+f 1967 2638 2611
+f 953 1092 1011
+f 508 600 556
+f 2504 2540 2580
+f 766 854 823
+f 776 819 812
+f 508 528 600
+f 755 840 766
+f 2411 2485 2504
+f 641 652 735
+f 640 641 715
+f 812 932 900
+f 1850 2411 2504
+f 823 854 867
+f 471 555 528
+f 900 932 953
+f 640 715 733
+f 102 1800 1850
+f 2000 2151 2010
+f 556 652 641
+f 507 555 542
+f 776 804 819
+f 2596 2615 2611
+f 1978 2638 1985
+f 867 972 917
+f 193 1509 444
+f 2010 2169 2016
+f 10 62 1680
+f 556 641 640
+f 556 600 652
+f 509 556 640
+f 1978 1985 1992
+f 987 1008 1027
+f 1967 2611 2646
+f 987 1007 1008
+f 689 804 735
+f 528 587 600
+f 2016 2142 2024
+f 652 689 735
+f 1967 1985 2638
+f 496 509 657
+f 2580 2601 2596
+f 2611 2615 2646
+f 587 652 600
+f 2485 2531 2540
+f 657 733 755
+f 2405 2485 2411
+f 509 640 657
+f 1988 1992 2013
+f 507 519 530
+f 662 755 766
+f 640 733 657
+f 713 766 823
+f 2596 2601 2615
+f 2473 2531 2485
+f 917 1007 939
+f 2405 2473 2485
+f 587 689 652
+f 10 1948 1888
+f 1794 1840 2458
+f 943 1092 953
+f 2540 2581 2580
+f 489 496 662
+f 1985 1998 1992
+f 932 943 953
+f 528 622 587
+f 496 657 662
+f 528 555 622
+f 507 530 555
+f 657 755 662
+f 939 1007 987
+f 689 819 804
+f 662 766 713
+f 1036 1092 1147
+f 444 489 713
+f 529 730 567
+f 775 823 867
+f 812 866 932
+f 567 730 785
+f 1850 1853 2411
+f 812 819 866
+f 713 823 775
+f 489 662 713
+f 2580 2581 2601
+f 785 1036 841
+f 2531 2549 2540
+f 775 867 917
+f 443 1442 566
+f 587 622 689
+f 416 1442 1341
+f 1271 1439 1341
+f 519 529 540
+f 1967 2646 1977
+f 2400 2473 2405
+f 913 987 1027
+f 2473 2502 2531
+f 1827 2405 2411
+f 444 713 517
+f 940 1027 1128
+f 530 622 555
+f 2540 2549 2581
+f 2615 2622 2646
+f 2400 2464 2473
+f 689 723 819
+f 519 540 530
+f 1992 1998 2013
+f 443 675 684
+f 157 1360 1271
+f 1800 1853 1850
+f 834 917 939
+f 2464 2502 2473
+f 841 1036 1147
+f 775 917 834
+f 1967 1984 1985
+f 622 723 689
+f 684 871 856
+f 856 989 981
+f 866 943 932
+f 417 444 517
+f 517 713 775
+f 102 1753 1800
+f 1827 2411 1853
+f 1977 2646 2651
+f 193 444 417
+f 943 1026 1092
+f 1794 1888 1840
+f 2502 2523 2531
+f 898 913 1027
+f 2589 2615 2601
+f 2523 2549 2531
+f 1829 2400 2405
+f 2622 2651 2646
+f 1984 1998 1985
+f 102 193 1753
+f 981 1108 1120
+f 1967 1977 1984
+f 1988 2013 2024
+f 834 939 869
+f 982 1128 1163
+f 913 939 987
+f 2464 2481 2502
+f 1026 1147 1092
+f 529 567 540
+f 1881 2464 2400
+f 62 216 157
+f 1827 1829 2405
+f 576 775 834
+f 2572 2601 2581
+f 723 796 819
+f 866 895 943
+f 517 775 576
+f 530 683 622
+f 622 683 723
+f 796 866 819
+f 1120 1158 1193
+f 869 939 913
+f 2427 2481 2464
+f 2589 2622 2615
+f 1095 1163 1193
+f 2458 2604 2461
+f 895 1026 943
+f 2549 2555 2581
+f 898 1027 940
+f 646 834 869
+f 2502 2534 2523
+f 1984 1989 1998
+f 2481 2534 2502
+f 576 834 646
+f 1989 1996 1998
+f 530 540 683
+f 1271 1360 1439
+f 1879 2465 2487
+f 416 1341 1439
+f 1996 2013 1998
+f 2523 2529 2549
+f 2572 2589 2601
+f 2481 2487 2534
+f 1876 2487 2481
+f 1843 1881 2400
+f 1829 1843 2400
+f 567 785 615
+f 1876 2481 2427
+f 796 895 866
+f 646 869 706
+f 1876 1879 2487
+f 615 785 841
+f 2555 2572 2581
+f 683 796 723
+f 2465 2575 2487
+f 1866 2427 2464
+f 2529 2555 2549
+f 157 216 1360
+f 10 333 62
+f 1866 2464 1881
+f 416 566 1442
+f 774 869 913
+f 706 869 774
+f 895 952 1026
+f 1879 2466 2465
+f 1026 1125 1147
+f 2487 2578 2534
+f 2523 2534 2538
+f 2487 2575 2570
+f 796 800 895
+f 540 567 615
+f 540 722 683
+f 443 566 675
+f 2487 2570 2578
+f 2523 2538 2529
+f 774 913 898
+f 1866 1876 2427
+f 417 517 1498
+f 1977 2651 2656
+f 1830 1879 1876
+f 1794 2458 2461
+f 800 952 895
+f 2616 2651 2622
+f 445 517 576
+f 683 800 796
+f 940 1128 982
+f 2550 2604 2636
+f 1809 1827 1853
+f 1779 1853 1800
+f 952 1125 1026
+f 2465 2524 2575
+f 1827 1836 1829
+f 10 1888 73
+f 1843 1866 1881
+f 683 722 800
+f 193 417 259
+f 2534 2578 2538
+f 2589 2616 2622
+f 2465 2466 2524
+f 62 333 216
+f 675 871 684
+f 2529 2543 2555
+f 856 871 989
+f 1977 1979 1984
+f 774 898 816
+f 1830 1876 1866
+f 982 1163 1088
+f 540 727 722
+f 841 1147 962
+f 576 646 653
+f 2545 2570 2575
+f 2555 2565 2572
+f 1869 2466 1879
+f 2572 2584 2589
+f 2529 2538 2532
+f 1987 2550 2636
+f 1830 1869 1879
+f 2562 2578 2570
+f 540 615 727
+f 800 887 952
+f 1979 1989 1984
+f 1088 1163 1095
+f 981 989 1108
+f 722 887 800
+f 646 706 694
+f 2538 2578 2562
+f 1829 1862 1843
+f 2524 2545 2575
+f 952 1066 1125
+f 2616 2641 2651
+f 1843 1854 1866
+f 1360 1460 1439
+f 962 1147 1125
+f 2529 2532 2543
+f 1108 1158 1120
+f 2641 2656 2651
+f 1095 1193 1158
+f 216 1348 1360
+f 445 1498 517
+f 1830 1866 1854
+f 694 706 774
+f 2510 2532 2538
+f 2543 2565 2555
+f 1809 1836 1827
+f 615 841 741
+f 445 576 484
+f 2510 2538 2562
+f 2545 2551 2570
+f 2584 2616 2589
+f 1753 1779 1800
+f 10 73 333
+f 722 727 887
+f 2565 2584 2572
+f 2551 2562 2570
+f 1977 2656 1979
+f 1348 1460 1360
+f 1869 2483 2466
+f 484 576 591
+f 259 417 1498
+f 1829 1836 1862
+f 2466 2577 2524
+f 2466 2483 2577
+f 1779 1809 1853
+f 416 1439 475
+f 803 816 898
+f 576 653 591
+f 803 898 940
+f 887 962 952
+f 2524 2551 2545
+f 1830 1854 1841
+f 2494 2532 2510
+f 193 1956 1753
+f 754 774 816
+f 1987 2000 2614
+f 952 962 1066
+f 1989 2645 1996
+f 216 247 1348
+f 475 1439 1460
+f 2510 2562 2560
+f 1843 2403 1854
+f 1830 1841 1869
+f 1837 2496 2483
+f 962 1125 1066
+f 2461 2604 2550
+f 1831 2483 1869
+f 1996 2645 2013
+f 741 841 962
+f 2494 2521 2532
+f 1794 1900 1888
+f 646 694 653
+f 2483 2496 2598
+f 2527 2543 2532
+f 216 333 247
+f 1973 1989 1979
+f 2551 2560 2562
+f 615 741 727
+f 1831 1837 2483
+f 2483 2598 2577
+f 727 741 887
+f 2521 2527 2532
+f 1843 1862 2403
+f 2524 2577 2591
+f 2524 2591 2551
+f 2510 2560 2522
+f 2494 2510 2522
+f 803 940 982
+f 2543 2553 2565
+f 694 774 754
+f 416 544 566
+f 1837 2500 2496
+f 1975 2000 2010
+f 2546 2560 2551
+f 741 962 887
+f 2569 2616 2584
+f 2539 2584 2565
+f 1841 1854 1872
+f 2569 2641 2616
+f 1841 1842 1869
+f 1836 2445 1862
+f 2527 2553 2543
+f 754 816 803
+f 247 333 382
+f 2488 2521 2494
+f 2496 2613 2598
+f 416 475 544
+f 73 1888 1900
+f 1968 2024 2013
+f 193 259 1695
+f 2486 2527 2521
+f 1783 1831 1869
+f 1854 2403 1872
+f 2496 2500 2613
+f 1809 2425 1836
+f 1973 2645 1989
+f 193 1695 1956
+f 2577 2598 2608
+f 1982 2010 2016
+f 2486 2521 2488
+f 2488 2494 2522
+f 1348 1478 1460
+f 73 382 333
+f 1808 2500 1837
+f 2628 2656 2641
+f 1862 2445 2403
+f 2577 2608 2591
+f 2539 2565 2553
+f 1972 2016 2024
+f 2539 2569 2584
+f 247 1409 1348
+f 2519 2560 2546
+f 445 484 453
+f 2519 2522 2560
+f 1987 2614 2550
+f 1836 2425 2445
+f 1783 1869 1842
+f 566 655 675
+f 445 1497 1498
+f 1841 1872 1842
+f 1774 1837 1831
+f 926 982 1088
+f 2546 2551 2586
+f 2551 2591 2586
+f 1779 2416 1809
+f 2475 2527 2486
+f 2436 2445 2486
+f 1753 2430 1779
+f 2403 2445 2436
+f 2445 2475 2486
+f 484 591 505
+f 2569 2588 2641
+f 803 982 926
+f 2598 2613 2608
+f 2436 2486 2488
+f 1774 1808 1837
+f 2484 2553 2527
+f 590 591 653
+f 1753 1956 2444
+f 975 1088 1095
+f 1979 2656 2630
+f 544 655 566
+f 1809 2416 2425
+f 73 79 382
+f 2588 2628 2641
+f 2425 2475 2445
+f 2488 2522 2507
+f 259 1498 298
+f 1774 1831 1783
+f 675 830 871
+f 2475 2484 2527
+f 247 382 295
+f 412 475 1460
+f 1733 1794 2461
+f 2479 2539 2553
+f 644 653 694
+f 1872 2403 2439
+f 2403 2436 2439
+f 1842 1872 1874
+f 2507 2522 2519
+f 959 1095 1158
+f 871 957 989
+f 445 453 1497
+f 1808 2471 2500
+f 1973 1979 2630
+f 1753 2444 2430
+f 2436 2488 2507
+f 710 754 803
+f 667 694 754
+f 1348 1409 1478
+f 1779 2430 2416
+f 2479 2553 2484
+f 2591 2608 2605
+f 2515 2569 2539
+f 1975 2614 2000
+f 2425 2484 2475
+f 453 484 505
+f 2628 2630 2656
+f 2608 2613 2643
+f 1759 2444 1956
+f 2500 2647 2613
+f 2586 2591 2605
+f 1968 2013 2645
+f 1024 1158 1108
+f 989 1025 1108
+f 926 1088 975
+f 2416 2484 2425
+f 2515 2588 2569
+f 298 1498 1497
+f 505 591 590
+f 2479 2515 2539
+f 2436 2507 2439
+f 247 295 1409
+f 655 830 675
+f 73 1900 79
+f 2416 2479 2484
+f 1774 1791 1808
+f 2519 2546 2566
+f 1733 1900 1794
+f 590 653 644
+f 2416 2430 2479
+f 475 503 544
+f 412 1460 1478
+f 731 803 926
+f 2546 2586 2566
+f 959 975 1095
+f 1791 2471 1808
+f 1872 2434 1874
+f 1872 2439 2434
+f 1783 1842 1865
+f 2430 2515 2479
+f 644 694 667
+f 667 754 710
+f 1759 1956 1896
+f 710 803 731
+f 2471 2647 2500
+f 2495 2507 2519
+f 2430 2444 2515
+f 830 957 871
+f 2613 2647 2643
+f 544 633 655
+f 1759 1807 2444
+f 79 103 382
+f 1842 1874 1865
+f 1973 2624 2645
+f 2515 2528 2588
+f 1973 2630 2624
+f 2434 2439 2507
+f 1975 2010 1982
+f 959 1158 1024
+f 2556 2628 2588
+f 2444 2528 2515
+f 957 1025 989
+f 103 295 382
+f 544 619 633
+f 1695 1896 1956
+f 1968 1972 2024
+f 1807 2454 2444
+f 2434 2507 2495
+f 1024 1108 1025
+f 1972 1982 2016
+f 412 503 475
+f 2608 2643 2639
+f 2444 2454 2528
+f 2528 2556 2588
+f 1774 1783 1870
+f 453 505 465
+f 1789 2461 2550
+f 1759 1917 1807
+f 2605 2608 2639
+f 94 259 298
+f 2495 2519 2501
+f 2564 2586 2605
+f 453 1515 1497
+f 633 779 655
+f 817 926 975
+f 94 1695 259
+f 731 926 817
+f 505 590 522
+f 1807 1858 2454
+f 655 779 830
+f 1774 1792 1791
+f 2554 2630 2628
+f 79 1900 1899
+f 2501 2519 2566
+f 1759 1896 1917
+f 1874 2434 2437
+f 2454 2477 2528
+f 544 581 619
+f 1791 2467 2471
+f 2564 2566 2586
+f 2554 2628 2556
+f 1783 1865 1870
+f 1858 2477 2454
+f 2477 2556 2528
+f 453 465 1515
+f 2434 2495 2501
+f 635 710 731
+f 503 581 544
+f 1865 1874 2437
+f 2554 2624 2630
+f 851 975 959
+f 1858 1882 2477
+f 573 667 710
+f 563 590 644
+f 298 1497 1283
+f 563 644 667
+f 1733 2461 1789
+f 830 882 957
+f 1730 1858 1807
+f 60 103 79
+f 619 750 633
+f 2512 2645 2624
+f 520 522 590
+f 1791 1792 2467
+f 817 975 851
+f 673 731 817
+f 831 959 1024
+f 2477 2497 2556
+f 633 750 779
+f 1733 1899 1900
+f 60 79 1899
+f 2429 2550 2614
+f 779 882 830
+f 2434 2501 2437
+f 2632 2643 2647
+f 1882 2497 2477
+f 465 505 499
+f 1730 1807 1917
+f 922 1025 957
+f 499 505 522
+f 2497 2554 2556
+f 2471 2632 2647
+f 2554 2587 2624
+f 1283 1497 1515
+f 1774 1870 1839
+f 635 731 673
+f 904 1024 1025
+f 1409 1494 1478
+f 2501 2566 2509
+f 2509 2566 2564
+f 1695 1704 1896
+f 831 851 959
+f 573 710 635
+f 1865 2437 1870
+f 2564 2605 2579
+f 295 1443 1409
+f 1766 1882 1858
+f 2512 2624 2587
+f 520 590 563
+f 1774 1821 1792
+f 2497 2587 2554
+f 882 922 957
+f 1882 2512 2497
+f 2499 2645 2512
+f 2579 2605 2639
+f 2632 2639 2643
+f 1882 2421 2512
+f 2467 2632 2471
+f 2437 2501 2438
+f 831 1024 904
+f 563 667 573
+f 2438 2501 2509
+f 673 817 692
+f 692 817 851
+f 1870 2437 2438
+f 2497 2512 2587
+f 904 1025 922
+f 407 412 1478
+f 1774 1839 1821
+f 94 1704 1695
+f 1730 1766 1858
+f 1673 1917 1896
+f 581 638 619
+f 619 638 750
+f 756 882 779
+f 1968 2645 2508
+f 1789 2550 2429
+f 750 756 779
+f 1733 1915 1899
+f 402 1515 465
+f 1839 1870 2438
+f 2492 2645 2499
+f 2509 2564 2517
+f 1975 2489 2614
+f 103 1331 295
+f 2421 2423 2512
+f 1817 2421 1882
+f 52 94 298
+f 504 522 520
+f 691 851 831
+f 412 472 503
+f 2438 2509 2459
+f 52 298 1283
+f 2423 2499 2512
+f 691 692 851
+f 1766 1780 1882
+f 765 831 904
+f 402 465 499
+f 2517 2564 2579
+f 1673 1896 1704
+f 1733 1789 1915
+f 559 573 635
+f 499 522 504
+f 773 922 882
+f 60 1899 93
+f 1730 1917 1920
+f 1839 2438 2459
+f 770 904 922
+f 691 831 765
+f 1792 2478 2467
+f 604 635 673
+f 2459 2509 2517
+f 1780 1817 1882
+f 2492 2508 2645
+f 503 562 581
+f 1852 2423 2421
+f 514 520 563
+f 93 1899 1915
+f 1409 1443 1494
+f 756 773 882
+f 765 904 770
+f 604 673 692
+f 407 1478 1494
+f 2423 2492 2499
+f 1968 2541 1972
+f 60 234 103
+f 2579 2639 2603
+f 1283 1515 1327
+f 1673 1920 1917
+f 712 756 750
+f 770 922 773
+f 2467 2603 2632
+f 94 1656 1704
+f 2429 2614 2489
+f 638 712 750
+f 1975 1982 2536
+f 559 635 604
+f 2603 2639 2632
+f 1817 1852 2421
+f 295 1331 1443
+f 1730 1954 1766
+f 1792 1821 2478
+f 402 1327 1515
+f 1720 1915 1789
+f 498 504 520
+f 1972 2563 1982
+f 1852 2492 2423
+f 407 472 412
+f 629 691 765
+f 52 1656 94
+f 463 563 573
+f 1656 1673 1704
+f 2517 2579 2559
+f 2467 2559 2603
+f 589 692 691
+f 1839 2459 2478
+f 1821 1839 2478
+f 2459 2517 2559
+f 463 573 559
+f 472 562 503
+f 1718 1780 1766
+f 1730 1920 1954
+f 466 520 514
+f 1968 2508 2541
+f 2467 2478 2559
+f 1720 1789 2429
+f 581 593 638
+f 93 1915 1651
+f 424 499 504
+f 738 773 756
+f 402 499 424
+f 732 765 770
+f 103 234 1331
+f 466 498 520
+f 2559 2579 2603
+f 463 514 563
+f 712 738 756
+f 1720 1949 1915
+f 589 604 692
+f 1736 1817 1780
+f 1656 1709 1673
+f 732 770 773
+f 1975 2536 2489
+f 1718 1766 1954
+f 60 93 116
+f 1673 1709 1920
+f 1651 1915 1926
+f 1915 1949 1926
+f 1972 2541 2544
+f 629 765 732
+f 589 691 629
+f 2459 2559 2478
+f 1743 1852 1817
+f 52 1283 358
+f 1718 1736 1780
+f 562 593 581
+f 515 559 604
+f 1852 2409 2492
+f 1972 2544 2563
+f 358 1283 1327
+f 732 773 738
+f 2409 2508 2492
+f 60 116 234
+f 1736 1743 1817
+f 52 74 1656
+f 1982 2563 2536
+f 1644 1954 1920
+f 1644 1920 1709
+f 429 504 498
+f 1720 2429 1801
+f 463 559 515
+f 463 466 514
+f 638 687 712
+f 74 1709 1656
+f 424 504 429
+f 402 1350 1327
+f 1720 1801 1949
+f 1801 2429 2489
+f 402 424 1350
+f 93 1651 379
+f 1651 1926 1668
+f 1743 1769 1852
+f 515 604 589
+f 1702 1718 1954
+f 1745 1926 1949
+f 1718 1901 1736
+f 74 1644 1709
+f 601 629 732
+f 52 358 74
+f 1769 2409 1852
+f 2435 2541 2508
+f 1644 1694 1954
+f 687 738 712
+f 1736 1901 1743
+f 409 498 466
+f 524 589 629
+f 1745 1949 1801
+f 593 687 638
+f 432 1494 1443
+f 2409 2435 2508
+f 93 379 116
+f 1694 1702 1954
+f 1702 1901 1718
+f 409 429 498
+f 407 1494 468
+f 524 629 601
+f 2431 2544 2541
+f 1743 1901 1919
+f 463 1519 466
+f 1668 1926 1950
+f 1331 1476 1443
+f 1801 2489 2412
+f 2412 2489 2536
+f 1745 1950 1926
+f 407 512 472
+f 1743 1919 1769
+f 515 589 524
+f 331 1651 1668
+f 34 1644 74
+f 424 429 1364
+f 358 1327 389
+f 424 1364 1350
+f 389 1327 1350
+f 447 463 515
+f 26 1694 1644
+f 666 732 738
+f 472 605 562
+f 409 466 1519
+f 2431 2541 2435
+f 1745 1801 2412
+f 1635 1901 1702
+f 331 379 1651
+f 2447 2563 2544
+f 234 1363 1331
+f 74 358 389
+f 1769 1919 1913
+f 1761 2409 1769
+f 34 310 1644
+f 2431 2447 2544
+f 2443 2536 2563
+f 1761 2435 2409
+f 26 1644 310
+f 34 74 389
+f 1668 1950 1671
+f 409 1375 429
+f 562 642 593
+f 365 1702 1694
+f 595 601 732
+f 2 1919 1901
+f 463 1518 1519
+f 2412 2536 2443
+f 1769 1913 1895
+f 1745 1784 1950
+f 1745 2412 1784
+f 666 738 687
+f 447 1518 463
+f 429 1375 1364
+f 448 515 524
+f 432 468 1494
+f 365 1635 1702
+f 432 1443 1476
+f 1744 2431 2435
+f 1761 1769 1895
+f 116 1255 234
+f 447 515 448
+f 26 365 1694
+f 2 1913 1919
+f 2443 2563 2447
+f 1744 2435 1761
+f 341 1901 1635
+f 407 468 512
+f 31 1668 1671
+f 120 1350 1364
+f 409 1519 1382
+f 34 389 310
+f 31 331 1668
+f 1331 1387 1415
+f 1331 1415 1476
+f 120 389 1350
+f 1331 1363 1387
+f 1671 1950 1931
+f 409 1382 1375
+f 1784 2412 2443
+f 1744 1796 2431
+f 1784 1931 1950
+f 472 512 605
+f 1796 2447 2431
+f 1761 1895 1936
+f 26 310 353
+f 1744 1761 1936
+f 524 601 536
+f 595 732 666
+f 26 353 365
+f 91 1895 1913
+f 2 1901 341
+f 562 605 642
+f 120 310 389
+f 116 379 197
+f 1382 1519 1518
+f 1744 1936 1927
+f 1816 2443 2447
+f 1643 1936 1895
+f 147 1364 1375
+f 341 1635 365
+f 447 448 1518
+f 1671 1931 1688
+f 1784 2443 1816
+f 1784 1816 1931
+f 120 353 310
+f 1796 1816 2447
+f 234 1255 1363
+f 2 91 1913
+f 593 672 687
+f 1744 1927 1796
+f 120 1364 147
+f 1816 1928 1931
+f 1688 1931 1928
+f 1796 1928 1816
+f 91 1643 1895
+f 147 365 353
+f 1796 1927 1928
+f 186 1375 1382
+f 120 147 353
+f 536 601 595
+f 163 379 331
+f 411 1518 448
+f 147 1375 186
+f 31 1671 37
+f 37 1671 1688
+f 147 186 365
+f 1660 1927 1936
+f 1382 1518 1399
+f 593 642 672
+f 33 1936 1643
+f 2 341 91
+f 116 197 1255
+f 1667 1928 1927
+f 1667 1688 1928
+f 448 524 464
+f 186 1382 1399
+f 137 341 365
+f 137 365 186
+f 648 666 687
+f 91 364 1643
+f 33 1660 1936
+f 31 130 331
+f 411 1410 1518
+f 1660 1667 1927
+f 91 341 364
+f 1399 1518 1410
+f 432 477 468
+f 464 524 536
+f 432 1476 1489
+f 33 1643 364
+f 163 197 379
+f 1415 1465 1476
+f 137 364 341
+f 186 1399 226
+f 1387 1430 1415
+f 137 186 226
+f 648 687 672
+f 468 531 512
+f 1363 1379 1387
+f 83 1688 1667
+f 595 666 603
+f 37 1688 83
+f 410 411 448
+f 130 163 331
+f 512 596 605
+f 137 165 364
+f 226 1399 244
+f 31 37 371
+f 244 1399 1410
+f 137 226 244
+f 83 1667 1660
+f 432 1489 477
+f 1255 1329 1363
+f 137 244 165
+f 1465 1489 1476
+f 536 595 564
+f 603 666 648
+f 468 477 531
+f 605 681 642
+f 1415 1430 1465
+f 33 58 1660
+f 410 448 464
+f 33 364 381
+f 1379 1430 1387
+f 411 1441 1410
+f 31 371 130
+f 512 531 596
+f 153 364 165
+f 1329 1379 1363
+f 197 260 1255
+f 564 595 603
+f 58 83 1660
+f 642 748 672
+f 37 83 349
+f 410 1441 411
+f 596 681 605
+f 33 381 58
+f 165 244 275
+f 464 536 488
+f 153 381 364
+f 244 1410 1299
+f 37 349 371
+f 260 1329 1255
+f 163 224 197
+f 488 536 564
+f 648 672 708
+f 153 165 275
+f 477 1489 548
+f 642 681 748
+f 431 1489 1465
+f 1299 1410 1441
+f 130 179 163
+f 477 626 531
+f 1430 1495 1465
+f 58 369 83
+f 197 224 260
+f 244 1299 275
+f 83 369 349
+f 1379 1458 1430
+f 603 648 645
+f 410 464 440
+f 672 748 708
+f 531 661 596
+f 58 381 97
+f 431 548 1489
+f 477 548 626
+f 1329 1402 1379
+f 440 464 488
+f 431 1465 1495
+f 153 162 381
+f 564 603 630
+f 163 179 224
+f 130 371 149
+f 410 1464 1441
+f 1430 1458 1495
+f 153 275 219
+f 58 97 369
+f 596 762 681
+f 645 648 708
+f 260 1347 1329
+f 531 626 661
+f 1379 1402 1458
+f 97 381 162
+f 410 440 1464
+f 488 564 577
+f 153 219 162
+f 275 1299 1276
+f 133 371 349
+f 596 661 762
+f 1329 1347 1402
+f 1299 1441 1351
+f 130 149 179
+f 603 645 630
+f 219 275 1276
+f 224 286 260
+f 681 846 748
+f 1351 1441 1464
+f 175 349 369
+f 564 630 577
+f 260 286 1347
+f 1276 1299 1351
+f 440 488 539
+f 431 621 548
+f 681 762 846
+f 431 1495 549
+f 548 769 626
+f 708 748 791
+f 133 149 371
+f 179 235 224
+f 457 1495 1458
+f 97 250 369
+f 488 577 539
+f 224 235 286
+f 440 486 1464
+f 97 162 285
+f 1402 1483 1458
+f 133 349 175
+f 626 837 661
+f 645 708 725
+f 162 219 1280
+f 748 846 791
+f 219 1276 1349
+f 661 855 762
+f 1347 1416 1402
+f 548 621 769
+f 431 549 621
+f 149 220 179
+f 1351 1464 1485
+f 440 539 486
+f 457 549 1495
+f 175 369 250
+f 179 220 235
+f 630 645 632
+f 1276 1351 1400
+f 457 1458 1483
+f 708 791 725
+f 286 1357 1347
+f 626 769 837
+f 486 1485 1464
+f 97 285 250
+f 577 630 632
+f 162 1280 285
+f 1402 1416 1483
+f 762 910 846
+f 661 837 855
+f 219 1349 1280
+f 133 173 149
+f 632 645 725
+f 539 577 582
+f 1621 1630 1632
+f 235 1287 286
+f 1276 1400 1349
+f 1630 1631 1632
+f 149 173 220
+f 621 764 769
+f 1621 1625 1630
+f 1351 1485 1400
+f 1347 1357 1416
+f 1606 1621 1632
+f 1625 1631 1630
+f 762 855 910
+f 549 560 621
+f 457 560 549
+f 1606 1632 1622
+f 1605 1621 1606
+f 1629 1632 1631
+f 621 707 764
+f 457 1483 560
+f 1624 1632 1629
+f 1581 1606 1622
+f 764 873 860
+f 577 632 582
+f 764 848 769
+f 1555 1605 1606
+f 1555 1606 1581
+f 1628 1629 1631
+f 1618 1622 1632
+f 560 707 621
+f 1605 1613 1621
+f 860 967 944
+f 791 846 890
+f 1618 1632 1624
+f 286 1287 1357
+f 1625 1627 1631
+f 133 175 161
+f 486 539 553
+f 769 848 837
+f 764 860 919
+f 707 873 764
+f 860 873 967
+f 1627 1628 1631
+f 1624 1629 1626
+f 860 944 1000
+f 1615 1625 1621
+f 1626 1629 1628
+f 560 1483 1488
+f 1416 1488 1483
+f 1555 1566 1605
+f 220 254 235
+f 1523 1555 1581
+f 944 1081 1035
+f 944 967 1081
+f 1613 1615 1621
+f 1581 1622 1612
+f 944 1035 1118
+f 1620 1624 1626
+f 1523 1581 1530
+f 1618 1624 1620
+f 764 919 848
+f 1623 1628 1627
+f 133 161 173
+f 1610 1622 1618
+f 1571 1613 1605
+f 1615 1627 1625
+f 1035 1081 1150
+f 1527 1566 1555
+f 1566 1571 1605
+f 860 1000 919
+f 486 1505 1485
+f 175 250 236
+f 1619 1626 1628
+f 1523 1527 1555
+f 846 910 890
+f 539 582 553
+f 944 1118 1000
+f 1619 1628 1623
+f 1035 1150 1118
+f 1614 1618 1620
+f 1530 1581 1591
+f 1150 1205 1523
+f 873 997 967
+f 1610 1612 1622
+f 1118 1150 1523
+f 1118 1523 1530
+f 1081 1205 1150
+f 1619 1620 1626
+f 1610 1618 1614
+f 560 740 707
+f 707 740 873
+f 725 791 798
+f 967 997 1081
+f 1205 1527 1523
+f 1581 1612 1591
+f 250 285 1249
+f 1611 1614 1620
+f 235 254 1287
+f 837 924 855
+f 1607 1610 1614
+f 1616 1623 1627
+f 873 909 997
+f 1607 1614 1611
+f 285 1280 1328
+f 1380 1488 1416
+f 1611 1620 1619
+f 740 909 873
+f 1571 1589 1613
+f 1527 1538 1566
+f 1081 1237 1205
+f 1538 1571 1566
+f 1280 1349 1328
+f 1357 1380 1416
+f 1615 1616 1627
+f 837 848 870
+f 1585 1610 1607
+f 1205 1538 1527
+f 997 1142 1081
+f 173 237 220
+f 1601 1607 1611
+f 1609 1619 1623
+f 1081 1142 1237
+f 1585 1612 1610
+f 1580 1607 1601
+f 1580 1585 1607
+f 1349 1400 1381
+f 1118 1530 1543
+f 1616 1617 1623
+f 1585 1591 1612
+f 161 175 236
+f 1205 1237 1538
+f 486 553 1505
+f 1400 1485 1425
+f 1530 1591 1543
+f 1609 1623 1617
+f 855 931 910
+f 1609 1611 1619
+f 1599 1615 1613
+f 560 1488 1513
+f 560 680 740
+f 848 919 870
+f 632 725 700
+f 1589 1599 1613
+f 1601 1611 1609
+f 791 890 798
+f 919 1000 974
+f 974 1000 1118
+f 1564 1580 1601
+f 1539 1591 1585
+f 740 793 909
+f 1539 1585 1580
+f 1542 1580 1564
+f 837 928 924
+f 1570 1589 1571
+f 855 924 931
+f 909 999 997
+f 837 870 928
+f 236 250 1249
+f 1277 1357 1287
+f 1599 1616 1615
+f 1539 1580 1542
+f 285 1328 1249
+f 1604 1617 1616
+f 220 237 254
+f 997 1121 1142
+f 1539 1543 1591
+f 1604 1609 1617
+f 1142 1215 1237
+f 1537 1571 1538
+f 974 1118 1543
+f 1328 1349 1381
+f 1425 1485 1505
+f 1564 1601 1583
+f 1583 1601 1609
+f 560 1513 680
+f 1277 1380 1357
+f 582 632 583
+f 793 901 909
+f 1534 1542 1564
+f 161 208 173
+f 1237 1537 1538
+f 870 919 974
+f 680 793 740
+f 1604 1616 1608
+f 254 270 1287
+f 901 999 909
+f 1537 1570 1571
+f 1583 1609 1604
+f 700 725 798
+f 1226 1539 1542
+f 1226 1542 1534
+f 1599 1608 1616
+f 1381 1400 1425
+f 270 1277 1287
+f 997 999 1121
+f 890 910 911
+f 1353 1488 1380
+f 1534 1564 1562
+f 1121 1215 1142
+f 1570 1593 1589
+f 680 734 793
+f 1589 1593 1599
+f 1562 1564 1583
+f 910 931 911
+f 1215 1537 1237
+f 553 582 583
+f 734 790 793
+f 870 974 928
+f 173 208 237
+f 1226 1534 1524
+f 790 930 793
+f 924 986 931
+f 793 930 901
+f 677 734 680
+f 1583 1604 1587
+f 1587 1604 1608
+f 1524 1534 1562
+f 734 744 790
+f 617 677 680
+f 1224 1543 1539
+f 924 928 976
+f 790 861 879
+f 1353 1513 1488
+f 790 879 930
+f 901 930 999
+f 617 680 1513
+f 928 974 976
+f 583 632 700
+f 744 861 790
+f 861 936 879
+f 879 936 973
+f 974 1543 1224
+f 924 976 986
+f 677 744 734
+f 936 1050 973
+f 1562 1583 1587
+f 1592 1608 1599
+f 973 1050 1046
+f 189 1277 270
+f 931 986 1020
+f 1226 1232 1539
+f 243 270 254
+f 805 936 861
+f 915 1050 936
+f 1592 1599 1593
+f 1277 1353 1380
+f 879 973 1030
+f 879 1030 930
+f 999 1044 1121
+f 1046 1050 1240
+f 695 861 744
+f 911 931 1020
+f 1587 1608 1592
+f 418 1505 553
+f 602 677 617
+f 973 1046 1030
+f 1226 1524 1532
+f 161 236 200
+f 1113 1215 1121
+f 1537 1544 1570
+f 617 1513 1517
+f 798 890 852
+f 658 744 677
+f 1544 1593 1570
+f 930 1014 999
+f 1524 1562 1552
+f 189 270 243
+f 805 915 936
+f 915 1032 1050
+f 1032 1238 1050
+f 237 243 254
+f 695 805 861
+f 189 206 1277
+f 1030 1046 1099
+f 1215 1218 1537
+f 1050 1238 1240
+f 1552 1562 1587
+f 974 1012 976
+f 1224 1539 1232
+f 658 695 744
+f 852 890 911
+f 1046 1246 1099
+f 602 658 677
+f 1046 1240 1246
+f 986 1018 1020
+f 161 200 208
+f 976 1012 986
+f 1044 1113 1121
+f 999 1014 1044
+f 966 974 1224
+f 406 617 1517
+f 406 602 617
+f 1226 1532 1241
+f 1249 1328 1296
+f 236 1249 263
+f 1524 1552 1532
+f 1113 1218 1215
+f 1226 1241 1232
+f 1328 1381 1384
+f 112 206 189
+f 1353 1517 1513
+f 418 553 583
+f 1032 1217 1238
+f 1425 1505 1455
+f 986 1012 1018
+f 966 1012 974
+f 1277 1293 1353
+f 1218 1544 1537
+f 198 1277 206
+f 915 923 1032
+f 1560 1592 1593
+f 1381 1425 1455
+f 1560 1587 1592
+f 198 1293 1277
+f 1018 1091 1020
+f 911 1020 998
+f 1238 1550 1240
+f 772 915 805
+f 930 1030 970
+f 189 243 191
+f 112 189 191
+f 1552 1587 1560
+f 690 805 695
+f 1544 1560 1593
+f 1030 1099 1159
+f 930 970 1014
+f 1240 1549 1246
+f 110 206 112
+f 1217 1548 1238
+f 631 695 658
+f 1032 1034 1217
+f 1353 1407 1517
+f 554 658 602
+f 1113 1127 1218
+f 998 1020 1091
+f 923 1034 1032
+f 1238 1548 1550
+f 1099 1246 1525
+f 418 1455 1505
+f 700 798 760
+f 772 923 915
+f 1127 1544 1218
+f 1240 1550 1549
+f 110 198 206
+f 237 289 243
+f 406 1517 1432
+f 970 1113 1044
+f 208 242 237
+f 200 236 263
+f 1224 1232 1242
+f 970 1044 1014
+f 966 1224 985
+f 1407 1432 1517
+f 1532 1552 1533
+f 690 772 805
+f 1018 1093 1091
+f 110 112 360
+f 1279 1353 1293
+f 1232 1241 1247
+f 1012 1055 1018
+f 1127 1560 1544
+f 1241 1532 1533
+f 852 911 908
+f 406 438 602
+f 970 1127 1113
+f 263 1249 1296
+f 1217 1529 1548
+f 631 690 695
+f 1296 1328 1384
+f 1340 1407 1353
+f 760 798 852
+f 1381 1455 1384
+f 966 1055 1012
+f 908 911 998
+f 985 1224 1242
+f 1099 1525 1159
+f 99 112 191
+f 1023 1030 1159
+f 554 631 658
+f 1533 1552 1560
+f 1056 1247 1127
+f 99 360 112
+f 970 1030 1023
+f 1018 1055 1093
+f 970 1056 1127
+f 1034 1200 1217
+f 1232 1247 1242
+f 1340 1377 1407
+f 1286 1340 1353
+f 200 228 208
+f 1091 1093 1132
+f 438 554 602
+f 1200 1529 1217
+f 1279 1286 1353
+f 1241 1533 1247
+f 1246 1549 1545
+f 1127 1533 1560
+f 966 985 1019
+f 985 1247 1056
+f 966 1019 1055
+f 110 128 198
+f 198 261 1293
+f 1127 1247 1533
+f 985 1056 988
+f 998 1091 1107
+f 1377 1412 1407
+f 110 360 350
+f 1548 1579 1550
+f 261 1279 1293
+f 583 700 625
+f 923 1060 1034
+f 1407 1412 1432
+f 237 242 289
+f 1286 1377 1340
+f 191 243 195
+f 985 1242 1247
+f 1091 1132 1107
+f 1246 1545 1525
+f 970 996 1056
+f 772 934 923
+f 988 1056 996
+f 1529 1573 1548
+f 1286 1342 1377
+f 406 1432 1477
+f 208 228 242
+f 1549 1550 1578
+f 1342 1383 1377
+f 195 243 289
+f 1377 1383 1412
+f 406 1477 438
+f 690 822 772
+f 99 337 360
+f 261 1286 1279
+f 985 1057 1019
+f 128 261 198
+f 1034 1207 1200
+f 1200 1248 1529
+f 1055 1072 1093
+f 1019 1057 1055
+f 923 934 1060
+f 1548 1573 1579
+f 292 1342 1286
+f 908 998 935
+f 985 988 1057
+f 110 327 128
+f 99 191 195
+f 110 350 327
+f 760 852 908
+f 935 998 1107
+f 1093 1097 1132
+f 971 988 996
+f 61 360 337
+f 1034 1060 1207
+f 200 263 221
+f 24 350 360
+f 1550 1579 1578
+f 631 721 690
+f 1322 1383 1342
+f 1529 1554 1573
+f 24 360 61
+f 1248 1554 1529
+f 292 308 1342
+f 772 822 934
+f 1545 1549 1578
+f 554 647 631
+f 200 221 228
+f 1122 1159 1525
+f 1412 1450 1432
+f 418 583 480
+f 625 700 760
+f 1055 1057 1072
+f 308 1322 1342
+f 948 996 970
+f 1017 1023 1159
+f 1072 1097 1093
+f 249 292 1286
+f 970 1023 1017
+f 99 195 337
+f 249 1286 261
+f 263 1296 281
+f 1107 1132 1148
+f 1432 1450 1477
+f 1200 1245 1248
+f 948 971 996
+f 1383 1429 1412
+f 438 592 554
+f 1200 1207 1245
+f 971 1047 988
+f 690 721 822
+f 1097 1138 1132
+f 1244 1525 1545
+f 988 1063 1057
+f 128 185 261
+f 24 327 350
+f 908 935 942
+f 934 1085 1060
+f 221 263 281
+f 61 337 1699
+f 1296 1384 1324
+f 1132 1138 1148
+f 205 308 292
+f 128 327 185
+f 631 647 721
+f 418 1484 1455
+f 1322 1376 1383
+f 209 289 242
+f 194 242 228
+f 1017 1159 1122
+f 1060 1209 1207
+f 1122 1525 1244
+f 288 1322 308
+f 760 908 885
+f 1412 1429 1450
+f 988 1047 1063
+f 1057 1063 1072
+f 1248 1541 1554
+f 438 1477 461
+f 822 965 934
+f 205 229 308
+f 205 292 249
+f 1 24 61
+f 554 592 647
+f 61 1699 1649
+f 195 289 209
+f 935 1107 1077
+f 229 288 308
+f 948 1047 971
+f 1060 1085 1209
+f 1384 1455 1427
+f 934 965 1085
+f 1 61 1649
+f 1573 1595 1579
+f 1376 1429 1383
+f 885 908 942
+f 480 583 625
+f 1072 1074 1097
+f 941 948 970
+f 1207 1209 1245
+f 281 1296 1324
+f 180 228 221
+f 1545 1578 1557
+f 24 87 327
+f 1554 1582 1573
+f 194 209 242
+f 1245 1536 1248
+f 1063 1074 1072
+f 941 970 1017
+f 965 1129 1085
+f 438 461 592
+f 1244 1545 1528
+f 1122 1244 1129
+f 721 847 822
+f 1085 1129 1225
+f 180 194 228
+f 822 847 965
+f 1248 1536 1541
+f 1649 1699 1891
+f 143 229 205
+f 935 1077 942
+f 213 249 261
+f 1129 1244 1225
+f 1017 1122 1129
+f 1 87 24
+f 1085 1225 1209
+f 185 327 391
+f 185 213 261
+f 195 1634 337
+f 1074 1098 1097
+f 965 977 1129
+f 288 307 1322
+f 1578 1579 1586
+f 1450 1493 1477
+f 1107 1148 1180
+f 1528 1545 1557
+f 1649 1891 1902
+f 1209 1243 1245
+f 134 229 143
+f 172 288 229
+f 307 1376 1322
+f 1541 1582 1554
+f 1 1649 1902
+f 977 1017 1129
+f 1138 1176 1148
+f 87 391 327
+f 182 205 249
+f 1699 1941 1891
+f 647 811 721
+f 1225 1244 1528
+f 1097 1112 1138
+f 1209 1225 1526
+f 847 977 965
+f 134 172 229
+f 1324 1384 1427
+f 418 480 1484
+f 337 1938 1699
+f 1243 1536 1245
+f 1573 1598 1595
+f 461 1477 1493
+f 195 209 272
+f 1209 1526 1243
+f 1429 1472 1450
+f 1573 1582 1598
+f 221 281 269
+f 721 811 847
+f 1077 1107 1180
+f 1225 1528 1526
+f 592 763 647
+f 1 1641 87
+f 129 143 205
+f 1063 1102 1074
+f 1097 1098 1112
+f 948 1058 1047
+f 194 210 209
+f 941 1017 977
+f 1579 1595 1586
+f 1427 1455 1484
+f 1047 1058 1063
+f 185 391 213
+f 1756 1902 1891
+f 1756 1891 1941
+f 1376 1446 1429
+f 1 1902 1893
+f 647 763 811
+f 180 221 269
+f 847 865 977
+f 129 205 182
+f 1557 1578 1577
+f 1243 1526 1535
+f 1243 1531 1536
+f 281 1324 1308
+f 87 328 391
+f 1 1893 1641
+f 1450 1472 1493
+f 337 1634 1938
+f 1074 1078 1098
+f 1526 1528 1540
+f 87 1641 328
+f 461 612 592
+f 164 194 180
+f 811 865 847
+f 865 941 977
+f 1134 1176 1138
+f 1528 1557 1540
+f 1536 1547 1541
+f 1756 1941 1788
+f 195 1653 1634
+f 172 227 288
+f 1541 1565 1582
+f 213 293 249
+f 1243 1535 1531
+f 1058 1102 1063
+f 1756 1893 1902
+f 209 223 272
+f 134 143 323
+f 1429 1446 1472
+f 227 307 288
+f 195 272 356
+f 1074 1102 1103
+f 307 1394 1376
+f 209 210 223
+f 164 210 194
+f 1699 1775 1941
+f 182 249 251
+f 1526 1540 1535
+f 178 213 391
+f 592 612 763
+f 178 391 328
+f 1112 1134 1138
+f 1148 1176 1178
+f 1577 1578 1586
+f 195 356 1653
+f 1074 1103 1078
+f 1541 1547 1565
+f 941 1005 948
+f 1376 1394 1446
+f 134 378 172
+f 9 1640 312
+f 1531 1546 1536
+f 1756 1788 2407
+f 129 317 143
+f 1148 1178 1180
+f 461 1493 495
+f 1775 1788 1941
+f 281 1308 1285
+f 760 885 896
+f 1540 1557 1577
+f 249 293 251
+f 269 281 1285
+f 9 1907 1640
+f 136 178 328
+f 625 760 751
+f 1699 1938 1775
+f 1098 1123 1112
+f 81 328 1641
+f 9 312 27
+f 948 1005 1058
+f 1078 1123 1098
+f 178 293 213
+f 461 495 612
+f 1641 1893 1674
+f 129 182 251
+f 1536 1546 1547
+f 1640 1907 1912
+f 1756 1934 1893
+f 9 1666 1907
+f 1531 1535 1551
+f 1595 1598 1602
+f 1640 1912 1653
+f 1582 1597 1598
+f 885 942 896
+f 143 317 323
+f 1756 2407 1802
+f 1634 1653 1912
+f 763 795 811
+f 1324 1427 1373
+f 136 293 178
+f 223 255 272
+f 9 27 1666
+f 1535 1540 1553
+f 795 865 811
+f 1788 2418 2407
+f 1634 1912 1938
+f 312 1640 352
+f 134 323 378
+f 795 941 865
+f 81 136 328
+f 307 1297 1394
+f 1308 1324 1373
+f 942 1077 1054
+f 1472 1511 1493
+f 1666 1739 1907
+f 255 279 272
+f 1756 1802 1934
+f 1565 1572 1582
+f 192 223 210
+f 227 1297 307
+f 1531 1551 1546
+f 81 1641 1674
+f 352 1640 1653
+f 1586 1595 1590
+f 1755 1912 1907
+f 1674 1893 1934
+f 612 795 763
+f 1540 1577 1553
+f 164 180 211
+f 1775 2418 1788
+f 1112 1123 1134
+f 27 312 343
+f 180 269 211
+f 1102 1181 1103
+f 1535 1553 1551
+f 136 142 293
+f 1446 1457 1472
+f 1134 1154 1176
+f 1739 1755 1907
+f 1755 1938 1912
+f 164 170 210
+f 1802 2407 2433
+f 1666 1963 1739
+f 129 316 317
+f 2407 2480 2433
+f 27 1645 1666
+f 1058 1181 1102
+f 214 255 223
+f 495 1493 1511
+f 2407 2469 2480
+f 1595 1602 1596
+f 124 227 172
+f 1077 1180 1152
+f 255 283 279
+f 1078 1103 1181
+f 1597 1602 1598
+f 1572 1597 1582
+f 1547 1567 1565
+f 81 370 136
+f 202 283 287
+f 1394 1434 1446
+f 136 370 142
+f 129 251 150
+f 1154 1178 1176
+f 192 214 223
+f 1590 1595 1596
+f 1645 1963 1666
+f 142 202 287
+f 480 625 551
+f 352 1653 356
+f 142 287 293
+f 2407 2418 2469
+f 129 150 316
+f 272 279 373
+f 312 352 343
+f 1755 1775 1938
+f 124 172 378
+f 1739 1963 1813
+f 170 192 210
+f 795 1005 941
+f 1575 1577 1586
+f 1739 1847 1755
+f 1785 1934 1802
+f 1739 1813 1847
+f 495 795 612
+f 1457 1511 1472
+f 1285 1308 1373
+f 283 1258 287
+f 272 373 356
+f 2460 2480 2469
+f 1297 1406 1394
+f 1785 1802 2433
+f 1565 1567 1572
+f 1546 1558 1547
+f 1767 1813 1963
+f 1546 1551 1559
+f 1078 1153 1123
+f 287 1310 293
+f 1755 1847 1775
+f 2420 2433 2480
+f 1847 2419 2418
+f 2418 2419 2469
+f 1775 1847 2418
+f 1813 2419 1847
+f 27 50 1645
+f 227 246 1297
+f 1645 1692 1963
+f 1692 1767 1963
+f 1553 1577 1575
+f 1434 1457 1446
+f 1674 1934 1924
+f 1551 1553 1568
+f 2419 2440 2469
+f 1394 1406 1434
+f 1767 1844 1813
+f 1813 1844 2419
+f 2420 2480 2460
+f 279 283 355
+f 252 283 255
+f 1575 1586 1590
+f 1178 1183 1180
+f 27 343 50
+f 202 355 283
+f 1844 2440 2419
+f 1123 1167 1134
+f 287 1258 1310
+f 2440 2442 2469
+f 2442 2460 2469
+f 1547 1558 1567
+f 81 1674 1886
+f 495 1511 518
+f 214 253 255
+f 1078 1181 1186
+f 41 370 81
+f 1785 1924 1934
+f 41 142 370
+f 1727 1844 1767
+f 1844 2414 2440
+f 1692 1727 1767
+f 751 760 896
+f 1551 1568 1559
+f 1078 1186 1153
+f 1546 1559 1558
+f 495 518 795
+f 142 325 202
+f 21 323 317
+f 251 293 1352
+f 1553 1575 1568
+f 2414 2442 2440
+f 1781 1785 2433
+f 323 329 378
+f 124 246 227
+f 480 1512 1484
+f 1884 2460 2442
+f 1285 1373 1325
+f 352 356 373
+f 1824 2414 1844
+f 14 1692 1645
+f 1297 1300 1406
+f 1781 2433 2420
+f 283 294 1258
+f 1134 1167 1154
+f 1727 1824 1844
+f 1884 2420 2460
+f 1005 1141 1058
+f 192 240 214
+f 1884 2442 2414
+f 35 317 316
+f 942 1054 960
+f 246 1300 1297
+f 1824 1884 2414
+f 1058 1141 1181
+f 1674 1924 1886
+f 896 942 960
+f 269 1285 296
+f 252 255 253
+f 14 1645 50
+f 41 81 1886
+f 293 1310 1352
+f 1054 1077 1152
+f 164 215 170
+f 279 355 373
+f 1572 1594 1597
+f 1787 1884 1824
+f 1686 1727 1692
+f 1727 1787 1824
+f 1594 1602 1597
+f 1152 1180 1183
+f 1787 2420 1884
+f 1567 1574 1572
+f 343 352 355
+f 252 294 283
+f 1727 1960 1787
+f 1785 1952 1924
+f 1596 1602 1600
+f 164 211 215
+f 294 1310 1258
+f 150 251 233
+f 150 366 316
+f 214 240 253
+f 1781 2420 1787
+f 1781 1952 1785
+f 1406 1414 1434
+f 551 625 751
+f 14 1686 1692
+f 170 217 192
+f 50 343 355
+f 1686 1960 1727
+f 1123 1153 1177
+f 1427 1484 1459
+f 1154 1166 1178
+f 41 325 142
+f 202 325 355
+f 1787 1960 1952
+f 21 329 323
+f 211 269 296
+f 1123 1177 1167
+f 1300 1414 1406
+f 668 1005 795
+f 1781 1787 1952
+f 1886 1924 1952
+f 352 373 355
+f 21 317 35
+f 518 668 795
+f 1181 1204 1186
+f 1559 1568 1569
+f 1588 1590 1596
+f 246 257 1300
+f 1572 1574 1594
+f 1457 1473 1511
+f 251 1352 1270
+f 1558 1561 1567
+f 124 378 390
+f 296 1285 1325
+f 1153 1186 1204
+f 192 217 240
+f 35 316 40
+f 1556 1558 1559
+f 1166 1183 1178
+f 1575 1590 1584
+f 1681 1952 1960
+f 1568 1575 1584
+f 1681 1960 1686
+f 233 251 1270
+f 1181 1198 1204
+f 40 316 366
+f 1563 1574 1567
+f 1434 1473 1457
+f 124 144 246
+f 41 1886 1681
+f 329 390 378
+f 14 50 89
+f 14 1681 1686
+f 1681 1886 1952
+f 1300 1305 1414
+f 421 518 1511
+f 1154 1167 1166
+f 1594 1603 1602
+f 50 355 325
+f 257 1305 1300
+f 252 253 278
+f 1373 1427 1459
+f 144 257 246
+f 252 280 294
+f 1561 1563 1567
+f 1600 1602 1603
+f 1153 1204 1208
+f 1414 1473 1434
+f 1588 1596 1600
+f 1556 1559 1569
+f 1270 1414 1305
+f 1198 1208 1204
+f 252 278 280
+f 50 325 89
+f 41 1681 89
+f 1198 1219 1208
+f 14 89 1681
+f 1173 1198 1181
+f 938 1141 1005
+f 668 938 1005
+f 1270 1352 1414
+f 1568 1584 1569
+f 1556 1561 1558
+f 240 273 253
+f 480 551 1512
+f 41 89 325
+f 232 1305 257
+f 233 1270 1305
+f 125 366 150
+f 1141 1173 1181
+f 124 390 144
+f 1584 1590 1588
+f 1198 1199 1219
+f 125 150 233
+f 1153 1206 1177
+f 1153 1208 1206
+f 232 233 1305
+f 253 273 278
+f 1208 1219 1210
+f 170 245 217
+f 421 1511 1473
+f 294 1282 1310
+f 1352 1473 1414
+f 217 273 240
+f 211 296 215
+f 1282 1352 1310
+f 170 215 245
+f 1199 1210 1219
+f 144 183 257
+f 183 232 257
+f 1173 1199 1198
+f 280 305 294
+f 21 311 329
+f 40 366 320
+f 1167 1177 1188
+f 518 569 668
+f 1325 1373 1426
+f 21 35 82
+f 35 40 76
+f 168 233 232
+f 1208 1210 1233
+f 111 144 390
+f 278 1250 280
+f 1167 1188 1175
+f 1459 1484 1512
+f 329 374 390
+f 1192 1210 1199
+f 1206 1208 1222
+f 938 1065 1141
+f 168 232 183
+f 1208 1231 1230
+f 421 569 518
+f 1208 1230 1228
+f 217 301 273
+f 1065 1173 1141
+f 125 233 168
+f 1177 1206 1216
+f 273 1250 278
+f 1208 1233 1231
+f 1192 1233 1210
+f 294 305 1282
+f 280 1250 305
+f 1208 1228 1222
+f 140 183 144
+f 569 938 668
+f 1149 1166 1167
+f 111 140 144
+f 21 82 311
+f 1352 1359 1473
+f 1149 1183 1166
+f 311 374 329
+f 215 296 256
+f 35 76 82
+f 217 245 301
+f 1177 1216 1188
+f 113 320 366
+f 113 366 125
+f 1170 1199 1173
+f 1152 1183 1161
+f 1149 1167 1175
+f 111 390 374
+f 296 1325 1426
+f 1170 1192 1199
+f 1223 1228 1230
+f 1574 1576 1594
+f 40 320 362
+f 1563 1576 1574
+f 273 1268 1250
+f 140 168 183
+f 28 76 40
+f 215 256 245
+f 1282 1359 1352
+f 273 301 1268
+f 125 168 126
+f 1230 1231 1236
+f 1576 1603 1594
+f 1561 1576 1563
+f 1054 1152 1109
+f 1206 1222 1221
+f 1065 1146 1173
+f 1556 1576 1561
+f 1556 1569 1576
+f 1223 1230 1235
+f 1576 1600 1603
+f 1206 1221 1216
+f 126 168 140
+f 1146 1170 1173
+f 1569 1584 1576
+f 28 40 362
+f 1192 1213 1233
+f 938 1016 1065
+f 1169 1192 1170
+f 1576 1588 1600
+f 1157 1175 1188
+f 1373 1459 1426
+f 569 888 938
+f 1220 1231 1233
+f 960 1054 1045
+f 113 125 126
+f 1230 1236 1235
+f 896 960 978
+f 1576 1584 1588
+f 421 1473 1445
+f 111 374 395
+f 751 896 927
+f 245 302 301
+f 111 122 140
+f 1211 1228 1223
+f 1211 1222 1228
+f 888 1016 938
+f 1231 1239 1236
+f 1169 1213 1192
+f 551 751 607
+f 301 1267 1268
+f 1188 1216 1197
+f 111 395 122
+f 122 126 140
+f 1016 1146 1065
+f 1211 1221 1222
+f 1213 1220 1233
+f 1220 1239 1231
+f 113 117 320
+f 1223 1235 1234
+f 245 256 291
+f 305 1250 1259
+f 301 302 1267
+f 305 1259 1282
+f 1359 1445 1473
+f 1235 1236 1239
+f 1211 1223 1212
+f 1149 1161 1183
+f 1212 1223 1234
+f 1144 1169 1170
+f 245 291 302
+f 256 296 1368
+f 1157 1188 1185
+f 1185 1188 1197
+f 117 362 320
+f 1111 1170 1146
+f 113 126 119
+f 1250 1268 1265
+f 1203 1216 1221
+f 311 372 374
+f 1164 1213 1169
+f 1144 1164 1169
+f 82 90 311
+f 119 126 122
+f 1197 1216 1203
+f 1227 1235 1239
+f 1259 1359 1282
+f 76 90 82
+f 1111 1144 1170
+f 1016 1111 1146
+f 421 1486 569
+f 1109 1152 1161
+f 1265 1268 1267
+f 20 76 28
+f 372 395 374
+f 302 1274 1267
+f 113 119 117
+f 296 1426 1368
+f 1229 1234 1235
+f 1179 1239 1220
+f 1227 1229 1235
+f 490 1512 551
+f 1179 1227 1239
+f 1133 1213 1164
+f 1179 1220 1213
+f 1172 1221 1211
+f 1187 1211 1212
+f 1187 1212 1234
+f 291 1274 302
+f 1157 1185 1162
+f 98 122 395
+f 1045 1054 1109
+f 1250 1265 1259
+f 569 609 888
+f 1172 1203 1221
+f 421 1445 1486
+f 53 372 311
+f 1119 1164 1144
+f 256 1311 291
+f 960 1045 978
+f 28 362 64
+f 1135 1185 1197
+f 868 1016 888
+f 896 978 927
+f 53 311 90
+f 1168 1197 1203
+f 119 122 123
+f 1179 1213 1182
+f 1133 1182 1213
+f 607 751 783
+f 751 927 783
+f 1140 1234 1229
+f 1106 1175 1157
+f 1267 1274 1284
+f 1265 1267 1289
+f 1140 1229 1227
+f 1172 1211 1187
+f 1119 1133 1164
+f 20 90 76
+f 984 1111 1016
+f 1267 1284 1289
+f 98 395 372
+f 1140 1227 1179
+f 105 362 117
+f 1140 1187 1234
+f 1259 1315 1359
+f 117 119 121
+f 256 1368 1311
+f 1082 1144 1111
+f 1106 1149 1175
+f 1160 1203 1172
+f 1160 1168 1203
+f 98 123 122
+f 490 1459 1512
+f 1135 1197 1168
+f 291 1278 1274
+f 20 28 64
+f 1140 1179 1182
+f 1140 1172 1187
+f 119 123 121
+f 1359 1396 1445
+f 1133 1137 1182
+f 490 551 607
+f 609 868 888
+f 1082 1119 1144
+f 1114 1160 1172
+f 291 1311 1278
+f 868 984 1016
+f 1259 1265 1262
+f 105 361 362
+f 1110 1162 1185
+f 105 117 121
+f 1114 1140 1182
+f 1114 1172 1140
+f 1084 1168 1160
+f 64 362 361
+f 1257 1265 1289
+f 1315 1396 1359
+f 1274 1309 1284
+f 984 1082 1111
+f 1114 1182 1137
+f 1284 1290 1289
+f 1259 1262 1315
+f 1274 1278 1309
+f 1116 1133 1119
+f 1084 1160 1114
+f 1110 1185 1135
+f 1116 1137 1133
+f 1257 1262 1265
+f 98 372 388
+f 1257 1289 1272
+f 1272 1289 1290
+f 430 569 1486
+f 98 107 123
+f 1073 1135 1168
+f 430 609 569
+f 1426 1459 1508
+f 1396 1486 1445
+f 1073 1168 1084
+f 53 318 372
+f 306 1262 1257
+f 121 123 145
+f 1082 1116 1119
+f 1284 1316 1290
+f 1104 1114 1137
+f 1284 1309 1316
+f 105 121 138
+f 1262 1320 1315
+f 1090 1157 1162
+f 306 1257 1272
+f 1084 1114 1104
+f 20 313 90
+f 98 388 107
+f 53 90 56
+f 306 1320 1262
+f 20 64 313
+f 105 118 361
+f 1104 1137 1116
+f 107 145 123
+f 955 1082 984
+f 306 1272 1281
+f 121 145 138
+f 318 388 372
+f 1079 1116 1082
+f 105 138 118
+f 1368 1426 1482
+f 1272 1290 1292
+f 1100 1161 1149
+f 868 874 984
+f 1071 1073 1084
+f 306 1302 1320
+f 1071 1084 1104
+f 64 361 339
+f 955 1079 1082
+f 1079 1104 1116
+f 306 1281 1319
+f 1272 1319 1281
+f 306 1319 1302
+f 53 56 318
+f 118 387 361
+f 609 639 868
+f 490 1508 1459
+f 1290 1316 1336
+f 1315 1320 1370
+f 1010 1135 1073
+f 1396 1440 1486
+f 1315 1370 1396
+f 1083 1109 1161
+f 56 90 313
+f 874 955 984
+f 1064 1104 1079
+f 1311 1368 1466
+f 1290 1336 1292
+f 64 339 313
+f 1272 1292 1301
+f 1269 1319 1272
+f 1010 1110 1135
+f 1278 1311 1435
+f 1064 1071 1104
+f 339 361 387
+f 1269 1272 1273
+f 1272 1304 1273
+f 107 388 148
+f 1278 1413 1309
+f 1009 1073 1071
+f 118 138 174
+f 1045 1109 1083
+f 955 991 1079
+f 978 1045 994
+f 1302 1370 1320
+f 138 145 171
+f 107 148 145
+f 783 927 832
+f 927 978 994
+f 991 1064 1079
+f 1090 1106 1157
+f 1309 1401 1316
+f 607 783 663
+f 1302 1319 1361
+f 1272 1301 1295
+f 1272 1295 1304
+f 1062 1162 1110
+f 100 388 318
+f 991 1071 1064
+f 639 874 868
+f 991 1009 1071
+f 1302 1356 1370
+f 118 146 387
+f 1302 1361 1356
+f 1440 1480 1486
+f 1426 1508 1482
+f 138 171 174
+f 100 148 388
+f 1100 1149 1106
+f 1269 1361 1319
+f 1292 1317 1301
+f 1292 1336 1317
+f 145 148 171
+f 430 1486 1480
+f 1269 1273 1288
+f 964 1073 1009
+f 1316 1378 1336
+f 1396 1411 1440
+f 118 174 146
+f 894 991 955
+f 1370 1411 1396
+f 874 894 955
+f 964 1010 1073
+f 430 459 609
+f 1273 1304 1294
+f 1273 1294 1288
+f 100 318 375
+f 459 639 609
+f 964 1009 991
+f 490 607 538
+f 1062 1090 1162
+f 1368 1482 1466
+f 313 339 367
+f 1356 1361 1374
+f 1295 1301 1330
+f 1356 1389 1370
+f 1317 1336 1362
+f 1301 1317 1330
+f 1316 1401 1378
+f 832 927 907
+f 56 357 318
+f 56 313 357
+f 1295 1337 1304
+f 339 387 396
+f 106 387 146
+f 1269 1346 1361
+f 1269 1288 1346
+f 1309 1413 1401
+f 907 927 994
+f 663 783 832
+f 1083 1161 1100
+f 1356 1374 1389
+f 1278 1435 1413
+f 894 964 991
+f 994 1045 1052
+f 1311 1466 1435
+f 1370 1389 1411
+f 1010 1062 1110
+f 1294 1304 1312
+f 318 357 375
+f 1346 1374 1361
+f 1045 1083 1052
+f 1317 1362 1358
+f 1317 1358 1330
+f 1304 1337 1312
+f 1288 1294 1339
+f 639 820 874
+f 1295 1330 1345
+f 1336 1404 1362
+f 106 396 387
+f 1336 1378 1404
+f 313 367 357
+f 1295 1345 1337
+f 538 607 663
+f 1288 1339 1346
+f 820 894 874
+f 1411 1452 1440
+f 1374 1408 1389
+f 339 396 367
+f 1440 1452 1480
+f 1294 1307 1339
+f 964 968 1010
+f 1389 1431 1411
+f 1330 1358 1365
+f 430 1480 1504
+f 1294 1333 1307
+f 1294 1312 1321
+f 1330 1365 1345
+f 1358 1362 1403
+f 1346 1393 1374
+f 474 1508 490
+f 1312 1337 1321
+f 1374 1393 1408
+f 1389 1408 1431
+f 1307 1333 1339
+f 430 1504 459
+f 1294 1343 1333
+f 1294 1321 1343
+f 894 902 964
+f 1337 1345 1395
+f 1339 1393 1346
+f 1358 1405 1365
+f 1333 1386 1339
+f 968 1062 1010
+f 1321 1337 1385
+f 1362 1404 1421
+f 1358 1403 1405
+f 1337 1395 1385
+f 1339 1386 1393
+f 1345 1365 1395
+f 1362 1421 1403
+f 1411 1431 1452
+f 639 674 820
+f 1333 1343 1386
+f 1051 1100 1106
+f 820 902 894
+f 459 473 639
+f 1365 1405 1395
+f 100 266 148
+f 1068 1106 1090
+f 148 266 171
+f 171 266 174
+f 1321 1385 1343
+f 1408 1428 1431
+f 1343 1419 1386
+f 1393 1428 1408
+f 1386 1419 1393
+f 474 1482 1508
+f 1403 1433 1405
+f 902 968 964
+f 1395 1405 1433
+f 146 174 266
+f 1343 1385 1419
+f 474 490 538
+f 1385 1395 1433
+f 1385 1433 1419
+f 1393 1419 1433
+f 100 375 266
+f 832 907 833
+f 1462 1504 1480
+f 1403 1449 1433
+f 1051 1106 1068
+f 1452 1462 1480
+f 565 674 639
+f 1393 1433 1428
+f 473 565 639
+f 663 832 697
+f 1403 1421 1449
+f 1378 1401 1471
+f 907 994 969
+f 106 146 266
+f 1431 1462 1452
+f 1428 1448 1431
+f 459 1504 1499
+f 1378 1471 1404
+f 1428 1433 1448
+f 1421 1467 1449
+f 1433 1449 1456
+f 1431 1448 1462
+f 1401 1413 1471
+f 1404 1461 1421
+f 266 375 357
+f 459 1499 473
+f 1053 1090 1062
+f 1433 1456 1448
+f 1449 1467 1456
+f 106 266 396
+f 266 357 367
+f 994 1052 1067
+f 1462 1470 1504
+f 266 367 396
+f 833 907 899
+f 697 832 833
+f 1470 1499 1504
+f 1421 1461 1467
+f 899 907 969
+f 1466 1482 1501
+f 1052 1083 1086
+f 1456 1467 1469
+f 1448 1470 1462
+f 1467 1492 1469
+f 538 663 586
+f 1053 1068 1090
+f 473 1499 1492
+f 1448 1456 1470
+f 820 857 902
+f 1083 1100 1094
+f 1435 1466 1501
+f 968 980 1062
+f 1470 1492 1499
+f 401 1482 474
+f 674 857 820
+f 1467 1503 1492
+f 1456 1469 1470
+f 1469 1492 1470
+f 413 565 473
+f 586 663 697
+f 413 473 1492
+f 1461 1503 1467
+f 1413 1435 1490
+f 1051 1101 1100
+f 969 994 1067
+f 902 937 968
+f 506 674 565
+f 413 1492 1503
+f 1404 1487 1461
+f 980 1053 1062
+f 413 506 565
+f 1052 1086 1067
+f 401 1501 1482
+f 474 538 523
+f 1051 1068 1075
+f 1404 1471 1487
+f 1083 1094 1086
+f 413 1503 506
+f 1094 1100 1101
+f 1413 1490 1471
+f 833 899 880
+f 697 833 736
+f 899 969 945
+f 523 538 586
+f 1461 1500 1503
+f 937 980 968
+f 857 937 902
+f 433 506 1503
+f 1435 1501 1491
+f 506 598 674
+f 401 474 523
+f 1051 1075 1101
+f 586 697 736
+f 945 969 1067
+f 1435 1491 1490
+f 1053 1080 1068
+f 674 753 857
+f 433 1503 1500
+f 880 899 945
+f 1461 1487 1500
+f 1067 1086 1096
+f 598 753 674
+f 1086 1094 1096
+f 1068 1080 1075
+f 945 1067 1089
+f 1471 1507 1487
+f 1067 1096 1089
+f 833 880 876
+f 401 523 460
+f 401 460 1501
+f 1471 1490 1507
+f 523 586 584
+f 433 494 506
+f 857 883 937
+f 1094 1136 1096
+f 736 833 778
+f 980 1028 1053
+f 408 433 1500
+f 1487 1510 1500
+f 1089 1096 1131
+f 945 1089 1087
+f 1487 1507 1510
+f 586 736 650
+f 506 618 598
+f 1094 1101 1156
+f 1096 1136 1131
+f 753 767 857
+f 1028 1080 1053
+f 880 945 951
+f 767 883 857
+f 778 833 876
+f 460 523 537
+f 1075 1117 1101
+f 420 1491 1501
+f 408 1500 1510
+f 584 586 650
+f 494 546 506
+f 420 1501 460
+f 937 983 980
+f 408 494 433
+f 1094 1156 1136
+f 506 546 618
+f 1089 1131 1126
+f 403 1490 1491
+f 1087 1089 1126
+f 598 618 753
+f 405 1507 1490
+f 945 1087 1021
+f 876 880 951
+f 419 1510 1507
+f 1075 1080 1124
+f 1131 1136 1201
+f 618 767 753
+f 420 460 537
+f 945 1021 951
+f 523 584 588
+f 650 736 778
+f 1101 1117 1156
+f 403 1491 420
+f 980 983 1028
+f 883 916 937
+f 523 588 537
+f 1126 1131 1155
+f 403 405 1490
+f 405 419 1507
+f 408 1510 436
+f 1075 1124 1117
+f 1131 1191 1155
+f 1033 1087 1126
+f 1131 1201 1191
+f 1136 1156 1201
+f 1021 1087 1033
+f 419 436 1510
+f 767 807 883
+f 420 537 437
+f 916 983 937
+f 408 454 494
+f 1028 1070 1080
+f 1033 1126 1155
+f 876 951 954
+f 403 420 437
+f 778 876 815
+f 494 525 546
+f 403 423 405
+f 1070 1124 1080
+f 408 436 454
+f 546 599 618
+f 403 437 423
+f 618 676 767
+f 584 650 624
+f 437 537 455
+f 951 1021 1022
+f 875 876 954
+f 650 778 729
+f 815 876 875
+f 405 415 419
+f 807 916 883
+f 1155 1191 1196
+f 455 537 588
+f 983 1070 1028
+f 1117 1174 1156
+f 1156 1190 1201
+f 1191 1201 1214
+f 405 423 422
+f 1033 1155 1184
+f 454 525 494
+f 584 624 588
+f 951 1022 954
+f 1021 1033 1038
+f 422 423 437
+f 405 422 415
+f 1117 1124 1130
+f 729 778 815
+f 676 807 767
+f 525 599 546
+f 1155 1196 1184
+f 1156 1174 1190
+f 1191 1214 1196
+f 1190 1214 1201
+f 1021 1038 1022
+f 419 446 436
+f 1117 1130 1174
+f 599 676 618
+f 437 455 452
+f 422 437 452
+f 436 479 454
+f 983 1003 1070
+f 1070 1130 1124
+f 455 588 543
+f 415 446 419
+f 916 933 983
+f 1033 1184 1171
+f 875 954 949
+f 1033 1171 1038
+f 650 729 693
+f 452 455 543
+f 933 1003 983
+f 815 875 845
+f 543 588 624
+f 807 933 916
+f 954 1022 1042
+f 436 446 479
+f 1171 1184 1196
+f 1003 1130 1070
+f 415 422 427
+f 454 492 525
+f 729 815 845
+f 1196 1214 1202
+f 1165 1190 1174
+f 624 650 693
+f 422 452 439
+f 452 543 547
+f 1189 1214 1190
+f 1022 1038 1043
+f 454 479 492
+f 845 875 949
+f 676 844 807
+f 949 954 1042
+f 807 844 933
+f 1171 1196 1202
+f 1130 1151 1174
+f 449 452 547
+f 1003 1041 1130
+f 1165 1195 1190
+f 422 439 427
+f 525 616 599
+f 543 580 547
+f 415 427 446
+f 543 624 580
+f 1022 1043 1042
+f 1189 1202 1214
+f 1189 1190 1195
+f 439 452 449
+f 1151 1165 1174
+f 599 616 676
+f 933 958 1003
+f 492 552 525
+f 958 1041 1003
+f 676 717 844
+f 525 552 616
+f 1041 1049 1130
+f 547 580 578
+f 449 547 487
+f 844 850 933
+f 1038 1171 1115
+f 580 624 693
+f 729 845 792
+f 616 717 676
+f 446 467 479
+f 1049 1151 1130
+f 1038 1115 1043
+f 850 958 933
+f 479 491 492
+f 439 449 487
+f 845 949 929
+f 1061 1165 1151
+f 487 547 578
+f 1115 1171 1202
+f 929 949 1042
+f 693 729 792
+f 1189 1195 1194
+f 427 439 469
+f 1048 1195 1165
+f 427 456 446
+f 717 719 844
+f 467 491 479
+f 958 995 1041
+f 492 545 552
+f 719 850 844
+f 1139 1202 1189
+f 961 1042 1043
+f 1048 1165 1061
+f 439 487 469
+f 446 456 467
+f 1061 1151 1143
+f 578 580 627
+f 845 929 862
+f 552 610 616
+f 610 717 616
+f 580 693 627
+f 995 1049 1041
+f 1037 1194 1195
+f 491 545 492
+f 427 469 456
+f 792 845 862
+f 610 719 717
+f 1037 1195 1048
+f 1115 1202 1139
+f 850 877 958
+f 1139 1189 1194
+f 545 610 552
+f 929 1042 961
+f 1039 1151 1049
+f 1048 1061 1143
+f 1039 1143 1151
+f 487 578 532
+f 1002 1043 1115
+f 877 995 958
+f 578 627 613
+f 961 1043 1002
+f 862 929 961
+f 532 578 613
+f 469 487 510
+f 719 747 850
+f 467 526 491
+f 491 534 545
+f 1037 1040 1194
+f 456 510 467
+f 1139 1194 1145
+f 456 469 510
+f 627 693 777
+f 610 656 719
+f 792 862 878
+f 545 558 610
+f 693 792 777
+f 862 961 878
+f 1048 1143 1105
+f 995 1013 1049
+f 1040 1145 1194
+f 747 877 850
+f 487 532 510
+f 1037 1048 1105
+f 491 526 534
+f 1013 1039 1049
+f 534 558 545
+f 878 961 1002
+f 467 510 533
+f 1039 1069 1143
+f 558 656 610
+f 1059 1115 1139
+f 656 747 719
+f 1002 1115 1029
+f 613 627 758
+f 777 792 878
+f 1069 1105 1143
+f 467 561 526
+f 877 892 995
+f 878 1002 956
+f 526 637 534
+f 534 637 558
+f 1076 1139 1145
+f 532 613 614
+f 467 533 561
+f 510 532 533
+f 1029 1115 1059
+f 878 956 881
+f 892 1013 995
+f 627 777 758
+f 956 1002 1029
+f 1040 1076 1145
+f 526 671 637
+f 1006 1040 1037
+f 808 878 881
+f 1059 1139 1076
+f 777 878 808
+f 558 637 594
+f 558 594 656
+f 1006 1037 1105
+f 532 614 533
+f 881 956 963
+f 747 759 877
+f 1013 1015 1039
+f 526 561 671
+f 956 1029 963
+f 656 705 747
+f 1015 1069 1039
+f 613 758 746
+f 881 963 893
+f 759 892 877
+f 808 881 893
+f 613 746 614
+f 963 1029 1059
+f 561 682 671
+f 758 777 808
+f 594 705 656
+f 1006 1076 1040
+f 1006 1105 1069
+f 637 671 660
+f 892 905 1013
+f 992 1059 1076
+f 963 1059 992
+f 533 614 611
+f 893 963 992
+f 705 759 747
+f 594 637 660
+f 891 893 992
+f 660 671 682
+f 808 893 824
+f 533 620 561
+f 905 1015 1013
+f 758 808 824
+f 824 893 891
+f 561 620 682
+f 1006 1069 1015
+f 992 1076 1006
+f 533 611 620
+f 620 711 682
+f 891 992 906
+f 660 682 711
+f 746 758 824
+f 611 614 746
+f 594 660 705
+f 818 824 891
+f 906 992 1006
+f 905 906 1015
+f 759 781 892
+f 705 718 759
+f 906 1006 1015
+f 781 905 892
+f 746 824 818
+f 660 718 705
+f 611 746 726
+f 809 891 906
+f 611 726 620
+f 620 703 711
+f 809 818 891
+f 726 746 818
+f 809 906 905
+f 718 781 759
+f 660 711 809
+f 703 809 711
+f 620 726 703
+f 781 809 905
+f 660 809 718
+f 726 818 809
+f 718 809 781
+f 703 726 809
+# 5804 faces, 0 coords texture
+
+# End of File
diff --git a/meshes/cube.obj b/meshes/cube.obj
new file mode 100644
index 0000000..2fbcd03
--- /dev/null
+++ b/meshes/cube.obj
@@ -0,0 +1,44 @@
+# All the best with Mesh! :)
+
+# Vertices: 14
+# Faces: 24
+
+v 1 1 1
+v 1 1 -1
+v 1 -1 1
+v 1 -1 -1
+v -1 1 1
+v -1 1 -1
+v -1 -1 1
+v -1 -1 -1
+v 0 0 1
+v -1 0 0
+v 0 0 -1
+v 0 1 0
+v 1 0 0
+v 0 -1 0
+
+f 8 7 10
+f 6 2 11
+f 6 5 12
+f 4 3 14
+f 2 1 13
+f 1 5 9
+f 5 7 9
+f 7 3 9
+f 3 1 9
+f 7 5 10
+f 5 6 10
+f 6 8 10
+f 2 4 11
+f 4 8 11
+f 8 6 11
+f 5 1 12
+f 1 2 12
+f 2 6 12
+f 1 3 13
+f 3 4 13
+f 4 2 13
+f 3 7 14
+f 7 8 14
+f 8 4 14
diff --git a/meshes/peter.obj b/meshes/peter.obj
new file mode 100644
index 0000000..8fc651c
--- /dev/null
+++ b/meshes/peter.obj
@@ -0,0 +1,59655 @@
+# Blender v3.1.2 OBJ File: ''
+# www.blender.org
+o peter
+v 19.482599 50.543777 134.628021
+v 20.455900 49.664577 135.761017
+v 20.998699 50.375877 133.614014
+v 18.581699 51.490776 132.832016
+v 18.289200 50.843277 134.257019
+v 17.293600 51.886578 132.207016
+v 14.491200 50.652977 132.608017
+v 16.579201 50.789978 133.821014
+v 15.404600 50.206776 133.935013
+v 43.744099 51.141083 115.443008
+v 43.462502 51.064281 116.811005
+v 44.517300 50.230682 116.865005
+v 44.576698 49.786381 105.806007
+v 44.863201 48.966084 104.111008
+v 42.544899 52.157379 105.552010
+v 50.551300 49.822884 89.100609
+v 47.326900 50.781086 89.221207
+v 47.595001 50.273285 89.918411
+v 45.960899 50.923985 89.584709
+v 45.739399 50.220886 90.644409
+v 44.646900 50.326786 89.184311
+v 44.614201 50.365086 89.997208
+v 33.578999 60.362282 117.075005
+v 30.343599 61.504581 116.992004
+v 30.309700 61.082180 117.540009
+v 33.931000 60.161980 116.391006
+v 29.894100 61.937481 116.299011
+v 28.889000 61.946583 116.642006
+v 26.058901 61.779480 116.253006
+v 26.894199 61.127083 117.321007
+v 24.903700 60.953979 117.314011
+v 22.454500 60.981682 116.784004
+v 29.722401 61.972179 115.615005
+v 32.193802 60.685379 115.701004
+v 29.308399 61.797180 114.975006
+v 28.401100 62.259583 115.463005
+v 26.844000 62.240780 115.498009
+v 29.250601 60.706081 113.811005
+v 27.756901 60.824581 112.768005
+v 27.258699 61.922981 114.123009
+v 25.667999 62.187382 114.047005
+v 24.707001 62.078781 114.999008
+v 22.720100 61.992180 113.871010
+v 21.040600 61.233482 115.498009
+v 24.651199 61.625179 112.406006
+v 28.095301 60.501579 112.166008
+v 26.473700 61.003780 111.442009
+v 24.915199 61.376881 111.396011
+v 22.190201 61.922981 112.864006
+v 20.862900 61.665581 111.529007
+v 23.630800 61.574982 110.734009
+v 21.799900 61.609680 110.568008
+v 40.611698 51.550480 121.656006
+v 39.388199 52.807381 121.545006
+v 39.318600 51.784081 122.717010
+v 40.651199 50.914482 122.773010
+v 37.961201 53.253082 121.815010
+v 40.712101 49.721279 124.069008
+v 37.115799 50.836983 123.905006
+v 38.693802 49.579781 124.831009
+v 37.236000 54.343281 120.892006
+v 35.236900 52.689079 122.286011
+v 35.813900 49.772881 127.173004
+v 36.660198 49.818783 125.599007
+v 34.127998 51.607082 124.656006
+v 38.040401 49.196980 125.640007
+v 34.807701 51.759480 123.634010
+v 34.531898 50.814980 126.466011
+v 33.033901 52.106182 125.938011
+v 34.932800 50.037380 127.526009
+v 32.688801 52.120182 126.610008
+v 33.319901 53.520283 121.885010
+v 32.230499 53.378082 123.033005
+v 26.969601 56.831779 123.735008
+v 28.870899 55.714180 124.568008
+v 28.932800 55.885380 123.665009
+v 25.359400 56.951782 124.366005
+v 28.152500 55.337982 125.362007
+v 23.549801 56.893581 124.495010
+v 24.482201 54.703682 126.723007
+v 24.747700 57.721981 123.368004
+v 26.080601 57.445282 122.949005
+v 23.533899 57.875481 123.067009
+v 21.830999 57.723080 123.115005
+v 24.150900 58.545380 120.042007
+v 21.726101 56.229881 124.894005
+v 32.518200 49.862877 130.768021
+v 33.040798 49.830276 130.289017
+v 31.573299 51.042679 129.735016
+v 28.035400 48.365578 132.583008
+v 31.210100 50.434875 130.682022
+v 30.083799 51.280376 130.062012
+v 29.904699 51.854477 129.272018
+v 31.753300 51.514683 128.109009
+v 31.320200 53.255882 126.114006
+v 30.048201 52.441483 127.757011
+v 34.068001 49.456478 129.002014
+v 25.699699 52.722279 129.132019
+v 27.880100 52.815182 128.223022
+v 24.596001 53.527580 128.346008
+v 23.215500 54.768681 126.797005
+v 22.982901 52.594078 129.460022
+v 26.789801 51.835579 129.951019
+v 25.758200 49.708378 131.869019
+v 22.114700 51.532978 130.846008
+v 23.920401 49.809277 132.352020
+v 31.370199 53.561279 125.376007
+v 31.066401 54.194782 122.872009
+v 30.119900 54.303379 125.559006
+v 29.502600 53.161381 126.973007
+v 30.715300 55.004883 121.289009
+v 29.573601 55.550980 121.564011
+v 29.965099 55.014481 124.258011
+v 28.681299 56.005180 121.960007
+v 39.632099 55.603481 117.111008
+v 37.682800 57.453381 117.365005
+v 38.439301 54.820980 119.212006
+v 36.243401 58.697281 117.007011
+v 35.355000 58.775581 117.735008
+v 35.609299 55.104980 120.441010
+v 36.602299 55.518379 119.921005
+v 34.257000 57.607582 118.950005
+v 37.323200 58.013580 116.363007
+v 36.185699 57.064781 118.942009
+v 32.852402 58.229580 118.757011
+v 34.159698 58.909081 118.094009
+v 39.688000 55.864582 115.654007
+v 37.992802 56.077282 114.449005
+v 37.216801 57.742580 115.680008
+v 39.570000 55.319382 114.568008
+v 39.729599 54.882881 113.701004
+v 39.469700 55.297482 111.483009
+v 39.464901 56.249481 109.865005
+v 36.845501 56.423481 110.472008
+v 36.687000 56.018883 111.500008
+v 34.884102 59.149483 115.779007
+v 35.805901 56.655682 113.970009
+v 33.983700 58.129883 114.502007
+v 35.481098 56.443081 112.941010
+v 38.022202 55.420082 112.600006
+v 35.308998 56.506680 111.965004
+v 30.684200 59.611580 113.017006
+v 33.693100 57.770382 113.680008
+v 30.602100 59.562679 112.102005
+v 34.060600 57.412781 110.919006
+v 35.016201 57.081383 110.502007
+v 38.529999 53.790180 120.849007
+v 40.023602 53.304482 118.931007
+v 41.770199 52.522881 117.292007
+v 41.424400 53.864082 115.713005
+v 39.932499 55.675682 116.344009
+v 42.900501 49.896481 120.454010
+v 41.500900 51.384880 119.675011
+v 33.646400 54.496582 120.910011
+v 42.346298 53.039883 114.313011
+v 40.710800 54.605782 114.746010
+v 41.613602 53.886883 113.366005
+v 41.632000 54.372482 111.047005
+v 40.419102 54.601582 112.678009
+v 40.485500 55.217182 110.816010
+v 43.499699 52.260983 111.572006
+v 42.651001 53.389580 111.552010
+v 44.415901 50.478783 113.304008
+v 33.287498 60.068382 117.618004
+v 31.425800 59.631180 118.359009
+v 30.068800 59.631180 118.540009
+v 30.654600 58.342583 119.091011
+v 27.685101 59.777782 118.486008
+v 29.932199 56.755981 120.093010
+v 31.893200 55.118679 120.638008
+v 32.782902 56.917179 119.419006
+v 31.425800 56.917179 119.624008
+v 28.659201 58.325680 119.358009
+v 28.163900 56.983379 120.467010
+v 27.723900 56.708282 121.147011
+v 22.815300 60.356281 117.507011
+v 25.398600 57.829983 121.205009
+v 25.306499 58.209980 120.315010
+v 31.068199 59.753281 113.917007
+v 30.521799 59.625381 111.075005
+v 18.206800 60.868282 116.318008
+v 20.576300 60.993881 116.407005
+v 20.964500 61.877083 112.901009
+v 19.484301 61.683182 112.206009
+v 17.621099 61.082481 113.065010
+v 16.849701 61.002281 115.303009
+v 18.199699 61.811779 111.231010
+v 15.882700 62.801281 109.465004
+v 15.146200 61.450081 111.355011
+v 14.961100 60.900280 112.666008
+v 12.715700 61.510281 110.746010
+v 9.525950 60.851879 113.601006
+v 10.835200 60.947083 111.418007
+v 7.804640 61.163280 112.318008
+v 6.999200 60.988281 112.785011
+v 6.043520 61.003983 112.279007
+v 6.020210 61.133881 110.903008
+v 4.856200 60.915279 111.676010
+v 20.569599 57.987183 121.772011
+v 21.908400 58.147980 121.796005
+v 20.551901 57.252380 123.205009
+v 20.462900 55.498981 125.370010
+v 17.801901 53.940983 127.451004
+v 21.519300 53.622482 127.863007
+v 19.190201 54.456081 126.571007
+v 20.544500 52.633976 129.705017
+v 18.359100 52.425877 130.012009
+v 16.849600 52.486877 129.447021
+v 16.329100 53.888981 126.869011
+v 15.295700 52.581383 128.349014
+v 13.063200 50.725178 130.501022
+v 16.505100 52.093777 131.194016
+v 13.825500 51.783382 128.727020
+v 12.426500 51.680981 127.954010
+v 11.298600 50.794880 127.883011
+v 11.443500 49.769878 129.510010
+v 19.212000 54.892483 125.843010
+v 11.518200 52.908680 124.742004
+v 13.378700 53.487183 124.892006
+v 12.006000 53.721279 123.607010
+v 15.141500 54.502281 123.130005
+v 13.788700 54.076782 123.850006
+v 16.498501 54.547180 124.486008
+v 16.498501 54.942280 123.130005
+v 16.478201 55.600380 121.987007
+v 15.141500 55.060181 121.772011
+v 13.784400 54.662182 121.772011
+v 10.485900 53.618980 122.133011
+v 11.046900 51.806179 126.435005
+v 10.350400 51.670082 125.466011
+v 9.234080 51.176880 123.847008
+v 9.707480 49.653080 125.875008
+v 9.099380 49.307281 125.408005
+v 10.236900 52.767879 123.208008
+v 8.461880 52.938782 120.910011
+v 8.377880 51.949280 122.001007
+v 8.459930 49.393581 124.651009
+v 7.033850 50.206982 122.426010
+v 22.474899 58.734081 119.145004
+v 20.569599 58.796280 119.059006
+v 20.471001 58.288879 120.447006
+v 22.417101 59.633480 118.069008
+v 19.569201 59.707279 117.887009
+v 19.212500 59.872280 117.701004
+v 19.212500 58.693180 119.059006
+v 15.427900 60.556480 116.086006
+v 17.813801 59.594379 117.704010
+v 17.635700 58.305782 119.073006
+v 16.090200 58.947281 117.813011
+v 19.202801 58.027782 120.348007
+v 19.652500 57.053581 122.820007
+v 16.498501 57.873180 119.059006
+v 17.854799 56.612980 121.764008
+v 15.141500 59.631180 116.951004
+v 13.784400 59.799282 116.344009
+v 14.117100 58.121780 117.745010
+v 12.524200 59.621780 115.891006
+v 12.171900 58.343479 116.560005
+v 13.867300 56.808781 118.877007
+v 12.843500 55.213383 120.252007
+v 15.141500 55.559280 121.055008
+v 11.316500 55.646481 119.012009
+v 11.548900 57.110180 117.411011
+v 14.609900 60.707481 113.964005
+v 14.478200 60.701782 114.989006
+v 13.097700 60.651180 114.988007
+v 12.427400 60.596279 114.987007
+v 11.068000 59.981880 114.968010
+v 12.427400 60.836182 114.309006
+v 12.889300 60.878880 112.669006
+v 11.748900 60.913280 113.631004
+v 11.065200 60.912682 113.635010
+v 9.727590 55.864082 118.024010
+v 8.633490 56.992279 115.747009
+v 6.949390 55.465382 117.485008
+v 9.713300 59.631180 114.438011
+v 11.070300 58.274181 115.906006
+v 9.673180 58.299881 115.014008
+v 7.948450 58.231880 114.323006
+v 7.244600 59.784882 113.513008
+v 5.201690 58.181980 113.581009
+v 5.642210 59.631180 113.144005
+v 8.356300 57.533279 114.987007
+v 5.731450 56.871780 114.873009
+v 5.615510 55.631580 116.716011
+v 4.505170 60.491482 112.258011
+v 4.285190 59.631180 112.701004
+v 2.982180 59.609882 112.260010
+v 2.946720 60.358982 111.560005
+v 0.058116 59.349979 111.626007
+v 4.285190 56.244282 114.987007
+v 2.960700 54.533882 116.205009
+v 2.916070 55.556580 114.996010
+v 2.914110 56.978882 113.710007
+v -0.098959 55.645882 113.821007
+v 2.928240 58.274380 112.917007
+v 0.254608 57.067482 112.896011
+v 9.713300 54.953182 119.059006
+v 9.783070 54.199280 120.134010
+v 11.070300 54.574280 120.415009
+v 7.501270 53.783882 119.352005
+v 11.776100 54.284679 121.694008
+v 7.343000 52.851582 120.232010
+v 5.682630 54.487282 117.860008
+v 5.615000 50.983482 120.406006
+v 6.915950 50.857780 121.643005
+v 5.644300 52.869282 119.059006
+v 4.285190 52.845280 118.238007
+v 2.928150 51.488281 118.421005
+v 2.787040 50.155281 119.112007
+v 4.015460 51.158382 119.156006
+v 3.046250 52.860882 117.664009
+v 1.558170 51.966682 117.702011
+v 1.571110 52.845280 117.271011
+v -0.919908 53.112881 116.538010
+v 0.580356 51.033581 117.783005
+v 1.571110 50.131180 118.494011
+v 2.222270 54.369579 116.180008
+v 28.711800 60.988281 107.378006
+v 27.207199 60.906681 106.985008
+v 27.205400 61.611782 107.493004
+v 28.111099 61.405479 108.197006
+v 28.699800 60.776882 109.466011
+v 25.218700 61.769680 109.848007
+v 25.113701 62.494881 108.227005
+v 23.863899 62.568680 109.070007
+v 22.164700 63.532982 108.269005
+v 22.886101 62.261681 109.644005
+v 25.247000 62.474380 107.543007
+v 25.266800 62.024982 106.954010
+v 24.351500 61.127583 106.133011
+v 22.597000 63.688480 107.504005
+v 23.800699 62.800579 106.816010
+v 21.563200 63.837181 106.712006
+v 38.771301 56.992882 109.287010
+v 39.544601 56.577579 108.517006
+v 37.878399 57.969582 108.262009
+v 40.674301 55.411182 109.728004
+v 38.654598 57.377781 107.502007
+v 40.506199 54.439583 107.255005
+v 36.728600 58.145580 108.870010
+v 35.774601 59.093880 108.153008
+v 32.420898 58.788280 109.998009
+v 34.479198 58.026081 109.660011
+v 32.917400 59.545280 108.813011
+v 37.374298 58.367382 107.538010
+v 37.011902 58.107983 106.724007
+v 35.630100 58.983582 106.790009
+v 34.250500 57.790981 105.574005
+v 32.824299 58.125881 105.450005
+v 39.273602 55.698181 106.712006
+v 32.782600 57.408283 104.130005
+v 34.116901 56.944584 104.064011
+v 33.376701 56.629887 102.212006
+v 35.446999 56.897781 105.584007
+v 35.496899 56.074284 104.131004
+v 35.496899 56.059284 102.773010
+v 34.139900 56.656185 102.773010
+v 35.496899 55.915283 101.416008
+v 36.338600 55.559284 102.773010
+v 34.139900 56.223286 101.416008
+v 33.996700 55.847485 100.127007
+v 35.796200 55.487385 99.633209
+v 41.377602 53.339680 108.330009
+v 41.762001 52.733780 107.999008
+v 42.137299 52.671883 106.225006
+v 40.865700 53.717281 106.537010
+v 41.080200 53.129181 105.692009
+v 40.087002 54.650780 106.738007
+v 39.510601 54.476582 106.172005
+v 43.485600 51.410782 109.714005
+v 44.344700 49.801479 108.316010
+v 43.710499 50.630882 107.412010
+v 38.255199 54.261181 105.472008
+v 36.795200 55.535782 105.503006
+v 41.348999 52.300583 103.974007
+v 38.585999 53.323986 104.090004
+v 38.475300 53.559086 104.882011
+v 40.085201 52.655586 102.825005
+v 39.328201 53.120285 102.067009
+v 43.522202 50.068985 103.565010
+v 41.991402 50.825985 101.719009
+v 40.722599 51.510086 100.653008
+v 37.456100 54.281284 104.138008
+v 36.122101 55.559284 104.131004
+v 37.243999 54.853485 102.630005
+v 36.668098 55.474686 101.387009
+v 37.365501 55.040184 101.752007
+v 37.401199 55.017883 100.484009
+v 32.294300 60.213081 108.181007
+v 30.509501 60.325680 109.136009
+v 29.848000 60.895382 108.292007
+v 29.806499 60.111481 110.336006
+v 32.782902 60.113281 107.523010
+v 31.568100 60.381481 107.444008
+v 30.068800 59.631180 106.666008
+v 30.068800 59.916283 106.845009
+v 31.773001 59.770882 106.894005
+v 28.812099 59.617882 106.517006
+v 29.822201 58.526382 105.459007
+v 28.711800 58.808182 105.487007
+v 27.278900 59.685081 106.139008
+v 27.024099 59.362881 105.488007
+v 23.462000 60.774380 105.451004
+v 24.709600 60.211285 105.335007
+v 29.297400 58.162785 103.823006
+v 27.354700 58.901184 104.131004
+v 31.425800 57.663284 104.131004
+v 31.425800 57.169285 102.773010
+v 30.068800 57.571186 102.773010
+v 28.711800 58.054283 102.773010
+v 31.425800 55.884285 100.060005
+v 30.068800 55.960285 100.060005
+v 27.354700 56.478283 100.060005
+v 27.479000 58.433586 102.579010
+v 25.534901 59.573086 103.466011
+v 25.348499 59.302685 102.788010
+v 22.892599 60.215183 103.660011
+v 22.629999 59.705284 102.737007
+v 24.640301 58.273983 101.417007
+v 23.313499 58.277386 101.221008
+v 24.640699 57.151184 100.060005
+v 23.283600 57.398285 100.060005
+v 21.926600 57.550186 100.060005
+v 35.106998 55.699986 98.285110
+v 34.235699 55.872383 98.585106
+v 35.483398 55.501583 97.198608
+v 34.367500 56.284683 96.508209
+v 34.909500 55.640083 94.217606
+v 33.392300 56.572586 96.083908
+v 33.790600 56.257584 93.869705
+v 32.585098 56.054585 93.100510
+v 31.862499 56.237083 95.238106
+v 33.842899 55.569584 93.275208
+v 32.583199 55.570885 92.482010
+v 38.269600 52.599384 96.267509
+v 37.522099 53.941486 97.461311
+v 38.902500 52.826183 97.586205
+v 40.563499 50.815086 98.406410
+v 42.973099 49.695583 101.503006
+v 41.799099 49.863785 99.679810
+v 40.900700 50.156185 98.407906
+v 38.300598 53.853386 99.231506
+v 39.988701 51.842686 98.728004
+v 39.517700 51.715786 97.245209
+v 40.177299 50.281986 97.416405
+v 38.961201 51.490685 96.409409
+v 38.024700 51.314285 95.710510
+v 38.136700 52.108086 95.857307
+v 39.568001 50.131184 96.839508
+v 38.195400 50.310383 95.978508
+v 38.183300 54.417385 100.796005
+v 36.474701 54.962284 98.423004
+v 35.976299 54.773087 96.360710
+v 35.496899 52.845284 94.807510
+v 35.458801 54.582584 94.636307
+v 35.871799 54.203186 95.310509
+v 36.659302 53.229183 95.420807
+v 34.953800 52.845284 94.631508
+v 35.496899 50.131184 95.613510
+v 36.663700 51.849285 95.221008
+v 36.854000 50.131184 95.634506
+v 35.496899 51.488285 95.171509
+v 32.782902 50.131184 95.745506
+v 32.782902 52.421284 94.631508
+v 34.552101 54.642284 93.675110
+v 33.373600 54.203186 93.274506
+v 32.782902 54.203186 93.010506
+v 34.139900 52.845284 94.297508
+v 32.778801 52.847485 93.922508
+v 33.117001 55.866585 98.710907
+v 31.425800 55.643185 98.702507
+v 30.068800 55.577286 98.702507
+v 30.353100 55.661686 97.380310
+v 31.178600 56.141785 96.209106
+v 27.354700 55.788284 97.345505
+v 28.711800 55.634285 97.345505
+v 28.718201 56.102283 95.448105
+v 28.845400 56.059586 94.574905
+v 30.690100 55.820885 93.779808
+v 27.948000 56.282585 94.600410
+v 27.354700 56.062286 95.988510
+v 25.509701 56.173286 97.339607
+v 21.926600 56.684284 97.345505
+v 23.283600 56.518185 97.345505
+v 24.640699 56.917183 95.562508
+v 25.979500 57.082485 94.787308
+v 25.074600 57.175686 94.621208
+v 25.142099 56.583683 95.987404
+v 23.424200 57.131184 94.564110
+v 22.826599 56.751186 95.968109
+v 28.166300 55.548584 91.243210
+v 27.090200 55.571384 90.577705
+v 28.024401 56.314285 90.830208
+v 24.922501 57.084187 92.211906
+v 26.494301 56.763084 92.033005
+v 23.086700 57.174084 92.064308
+v 26.695999 56.797184 90.566307
+v 25.267700 57.389385 90.114204
+v 28.004299 56.265686 91.870010
+v 25.997700 55.559284 90.381508
+v 25.943501 56.917885 89.882408
+v 25.316401 56.919685 89.327606
+v 24.640699 55.559284 90.321510
+v 24.655399 56.899784 89.043510
+v 23.789301 58.058086 89.271408
+v 22.618099 58.312584 89.205505
+v 24.983101 57.705883 89.153206
+v 23.281401 55.560284 90.362404
+v 23.243799 56.753784 89.005211
+v 21.907301 56.874886 88.950005
+v 30.068800 50.131184 95.258507
+v 30.068800 51.760284 94.631508
+v 27.262400 50.234585 94.711006
+v 31.425800 52.845284 93.856506
+v 31.425800 53.438187 93.274506
+v 30.069901 53.226086 93.436707
+v 31.425800 54.203186 92.503510
+v 30.068800 54.203186 92.377510
+v 27.354700 54.203186 92.459511
+v 27.354700 54.586185 91.917511
+v 28.711800 54.308186 91.917511
+v 28.720301 52.883583 93.702606
+v 28.711800 54.203186 92.580505
+v 27.400200 52.892086 93.512009
+v 21.926600 52.845284 92.809509
+v 21.926600 54.964184 91.917511
+v 24.640699 54.539185 91.917511
+v 24.640699 52.845284 93.330505
+v 20.960600 63.935883 107.835007
+v 20.511400 62.296581 109.466011
+v 19.332300 64.037987 107.607010
+v 19.168900 62.459381 109.355011
+v 19.493900 61.953583 110.192009
+v 17.335699 64.174583 107.578011
+v 15.114400 63.765381 108.257011
+v 21.355000 61.843983 105.369011
+v 19.715700 62.430584 105.247009
+v 19.456100 63.842381 106.106010
+v 16.953501 62.795486 104.820007
+v 17.744400 64.119286 106.111008
+v 13.735600 64.010384 107.594009
+v 14.487300 64.156181 106.844009
+v 17.657600 64.385284 106.835007
+v 14.303400 64.008186 106.139008
+v 14.601000 63.697083 105.472008
+v 11.803800 63.482780 106.194008
+v 12.310800 63.459183 105.466011
+v 13.096700 63.661480 108.170006
+v 12.781800 62.894180 109.034004
+v 10.452600 62.269279 109.020004
+v 10.449100 61.397480 110.227005
+v 10.350400 62.807281 107.986008
+v 10.555700 63.161880 105.392006
+v 19.043600 61.225784 103.938011
+v 21.244400 60.974686 104.274010
+v 14.462600 63.071186 104.809006
+v 13.062300 63.061684 104.798004
+v 13.878300 62.382786 104.215004
+v 11.252300 62.256886 103.978004
+v 10.385300 62.792686 104.608009
+v 14.847200 61.343784 103.488007
+v 13.451800 61.175484 103.055008
+v 10.930800 60.888786 102.697006
+v 8.807270 62.534882 107.780006
+v 8.431680 61.085781 111.027008
+v 8.152230 62.642780 106.156006
+v 7.911590 62.488583 105.455009
+v 4.906340 62.292179 107.104004
+v 5.512390 62.228680 108.097008
+v 5.609600 62.282681 105.952011
+v 4.053380 60.976379 109.800011
+v 6.196930 61.353783 109.957008
+v 2.590840 61.359280 108.150009
+v 2.214630 60.579479 110.208008
+v 1.402220 61.279480 107.210007
+v 1.673620 61.095779 105.803009
+v 3.684630 61.293285 105.101006
+v 0.410634 60.974079 108.191010
+v 6.688880 61.416885 104.299011
+v 8.750870 60.940685 103.079010
+v 5.761220 60.926086 103.505005
+v 6.598480 61.533386 100.676010
+v 5.343880 61.007183 102.155006
+v 7.784160 61.017487 101.106010
+v 3.170860 60.919685 104.025009
+v 1.220330 61.108284 103.837006
+v 2.525140 61.311783 102.792007
+v -1.179810 61.538185 103.637009
+v 1.999270 62.492683 101.132011
+v 4.599640 63.017883 99.466011
+v 6.534310 62.560284 98.885010
+v 8.356300 61.708286 98.702507
+v 6.980670 61.799984 100.063011
+v 6.780720 62.446384 97.939705
+v 7.498250 61.464386 95.880707
+v 8.356300 61.637283 97.345505
+v 9.861480 60.933186 96.351807
+v 9.997320 60.971584 97.362007
+v 4.948830 62.502983 96.896011
+v 4.377120 62.372383 95.753311
+v 7.322670 61.268085 94.451111
+v 4.935330 63.088684 98.651405
+v 2.345180 63.199486 98.766006
+v 1.058490 63.013985 97.041809
+v 1.093750 62.883484 100.599007
+v -1.652170 62.810085 99.291710
+v -0.043697 62.901386 100.462006
+v 4.454350 62.102886 93.948311
+v 1.635860 62.639084 93.876907
+v -1.154500 63.260586 95.354210
+v 9.445510 61.031086 91.414108
+v 7.642080 61.664585 90.154007
+v 7.544750 61.201786 93.125008
+v 9.487610 60.799183 92.917511
+v 5.705410 62.085686 91.365807
+v 3.450680 62.196384 92.404007
+v 1.728790 61.552586 91.068108
+v 0.296773 62.649784 93.641304
+v -0.829064 61.604984 91.390007
+v 5.355290 62.081886 90.674805
+v 3.420800 61.685684 90.691505
+v 6.227170 61.712685 89.587708
+v 6.032210 60.995384 89.090210
+v 4.004060 61.033886 89.691307
+v 2.928150 60.988285 90.013504
+v 1.392610 61.008686 90.547211
+v 21.270100 60.202187 103.243004
+v 16.993200 60.050484 102.568008
+v 19.204300 59.658085 102.491005
+v 20.495001 58.507584 101.328011
+v 19.261299 58.602184 101.252007
+v 15.946700 59.550785 101.585007
+v 17.852800 58.205685 100.058006
+v 20.569599 57.706184 100.060005
+v 19.212500 57.923286 100.060005
+v 13.144200 60.092884 101.509010
+v 15.141500 58.862186 100.060005
+v 11.741700 60.244385 101.388008
+v 10.071600 60.613186 102.107010
+v 0.916822 60.241680 110.779007
+v 10.375400 60.454086 101.400009
+v 7.351120 60.810184 102.439011
+v 8.991660 60.700985 101.430008
+v 11.070300 60.132286 100.060005
+v 9.713300 60.694286 100.060005
+v 8.929450 61.017586 100.059006
+v 1.167840 60.926586 105.054008
+v 17.153999 58.274185 95.988510
+v 15.183500 59.242985 95.974510
+v 15.201800 58.719585 97.344910
+v 16.498501 58.967186 94.631508
+v 19.212500 57.228283 97.345505
+v 20.553400 56.897083 97.299408
+v 21.429300 56.871384 95.910904
+v 19.212500 57.424286 95.988510
+v 21.961500 57.223583 94.347610
+v 20.569599 57.404186 94.631508
+v 19.212500 57.815186 94.631508
+v 16.498501 58.159184 97.345505
+v 17.863400 58.401085 94.605804
+v 16.498501 58.274185 99.348511
+v 16.053200 58.274185 98.702507
+v 13.784900 58.990986 98.702507
+v 13.784400 59.185184 100.060005
+v 13.254300 59.582184 97.418610
+v 11.104100 60.546886 97.349411
+v 12.499800 59.512486 98.605705
+v 11.070300 60.230186 98.702507
+v 14.084200 59.745384 95.969109
+v 12.427400 60.287186 95.988510
+v 11.264100 60.378685 94.560104
+v 14.812900 59.476284 94.716309
+v 16.498501 58.810184 93.274506
+v 18.190399 58.338284 93.275108
+v 17.855499 59.143185 89.203506
+v 18.192900 58.604786 90.551208
+v 20.305300 58.770485 89.172409
+v 19.799400 57.833286 93.174408
+v 21.234501 57.620483 91.958511
+v 19.179001 58.042084 91.910309
+v 20.131599 58.176483 90.471909
+v 20.581100 55.553783 90.650909
+v 20.231800 56.920185 89.181610
+v 19.212500 55.692284 90.560509
+v 17.855499 56.917183 89.760506
+v 17.960600 58.285885 88.617607
+v 16.485100 56.914886 89.912910
+v 17.854300 55.560184 90.641304
+v 16.500900 55.562286 90.543709
+v 13.719800 59.449986 91.937408
+v 12.632900 59.719585 93.102608
+v 14.706600 59.212383 93.179611
+v 15.421100 59.883484 89.147705
+v 16.498501 58.972183 90.560509
+v 16.498501 59.466885 89.203308
+v 19.212500 55.399185 91.917511
+v 18.531900 52.845284 91.917511
+v 20.670900 50.139584 91.919609
+v 19.212500 52.127285 91.917511
+v 21.926600 50.131184 92.485504
+v 19.212500 52.845284 92.120506
+v 19.212500 50.131184 91.323509
+v 16.498501 52.845284 91.283508
+v 17.296900 50.091084 90.645409
+v 13.784400 52.845284 90.501511
+v 12.427400 52.845284 90.213509
+v 11.070300 52.845284 90.022507
+v 11.070300 55.559284 90.881508
+v 12.427400 51.488285 89.654510
+v 11.182000 51.505684 89.189209
+v 13.784400 51.488285 90.104507
+v 13.964900 50.106884 89.179207
+v 12.427400 50.977184 89.203506
+v 9.712450 60.987686 98.591011
+v 11.793200 60.205486 91.586411
+v 11.089600 61.008686 89.858307
+v 5.642210 58.274185 89.846504
+v 5.618700 59.624985 89.228607
+v 7.158530 59.416286 89.021011
+v 6.999200 58.274185 89.741508
+v 2.928150 58.274185 90.481506
+v 0.212077 58.273483 91.916008
+v 2.928150 55.559284 92.788506
+v 2.928150 56.973286 91.917511
+v 4.949970 55.559284 91.917511
+v 0.214082 55.559284 94.226509
+v 5.642210 55.559284 91.686508
+v 0.214082 52.845284 96.061508
+v 0.214082 55.027287 94.631508
+v 1.903110 52.845284 94.631508
+v 2.206030 51.488285 94.631508
+v 0.890222 50.131184 95.988510
+v 1.763440 50.109184 94.858604
+v 8.356300 55.559284 91.106506
+v 9.713300 52.845284 89.985504
+v 9.713300 51.793285 89.203506
+v 8.356300 51.724186 89.203506
+v 8.356300 52.845284 90.149506
+v 6.843940 51.491283 89.210609
+v 6.858920 52.855083 90.559708
+v 5.682050 51.345985 89.364510
+v 5.642210 52.095284 90.560509
+v 4.608780 52.845284 91.917511
+v 2.928150 52.845284 93.618507
+v 5.642210 52.845284 91.131508
+v 3.055600 51.423786 93.324005
+v 4.285190 52.176285 91.917511
+v 3.746230 51.488285 91.917511
+v 2.928150 50.687286 91.917511
+v 4.486140 51.455284 90.620308
+v 2.928150 50.640285 90.560509
+v 2.890160 50.691086 89.865311
+v 4.285190 51.060184 89.203506
+v 2.234930 50.450085 90.452110
+v 1.952200 50.122086 91.524010
+v 1.235610 50.910385 88.687706
+v 0.347492 49.938385 91.614609
+v 44.996201 36.561275 133.261993
+v 42.957199 37.977478 133.988998
+v 44.272499 35.644978 133.886002
+v 46.353199 33.847176 133.414993
+v 47.751801 33.879177 132.643997
+v 47.378502 35.021076 132.488998
+v 46.086102 32.481377 133.819000
+v 48.375599 32.509377 132.613007
+v 47.734699 29.762079 133.054993
+v 48.349899 31.207079 132.735001
+v 46.130199 30.655579 133.994003
+v 43.836601 29.726578 135.524994
+v 44.996201 29.776176 134.761993
+v 44.995800 31.135578 134.490997
+v 44.022999 28.494476 135.667999
+v 46.306801 25.724079 133.565002
+v 46.204700 28.283480 133.968002
+v 44.284901 27.253077 135.431000
+v 45.165100 24.452080 134.371994
+v 43.709801 25.754778 135.806000
+v 43.794201 23.164377 136.466995
+v 44.905602 22.968878 135.095993
+v 44.030800 24.358477 135.518997
+v 48.388802 24.348280 132.304001
+v 46.353199 24.348280 133.535004
+v 47.710201 22.991280 133.126007
+v 46.299999 22.919579 133.957001
+v 43.492401 22.805576 137.574005
+v 42.697899 22.900677 139.440002
+v 44.571400 21.787376 139.093002
+v 43.906300 20.951077 140.225006
+v 45.387501 20.960077 138.988998
+v 44.105000 20.421078 140.238998
+v 45.190701 20.676977 139.436005
+v 46.297699 20.817978 137.440994
+v 44.996201 20.955276 139.412994
+v 46.691502 20.259678 138.067993
+v 46.736500 17.439877 138.098999
+v 47.586300 18.919178 137.945999
+v 46.353199 18.920177 138.828995
+v 43.639099 18.920177 140.266006
+v 45.124401 18.860777 139.574997
+v 44.726501 17.564978 139.311996
+v 43.639099 17.563177 139.729004
+v 49.067299 20.909180 133.985992
+v 50.390202 20.127579 133.964996
+v 50.989201 20.619579 132.451004
+v 49.266102 21.636978 132.960999
+v 50.417301 17.353777 135.531998
+v 51.762901 17.568178 134.578995
+v 50.445599 19.000977 135.378006
+v 52.271801 17.563179 133.985992
+v 53.761200 17.549679 131.313995
+v 52.459400 18.920179 132.628006
+v 51.766300 18.897678 133.983994
+v 48.339600 20.433878 135.464996
+v 46.118401 21.509876 135.332001
+v 44.719101 22.307577 136.143997
+v 47.734798 21.636679 133.981003
+v 49.014900 18.919878 136.681000
+v 47.710201 20.244278 136.699005
+v 47.716301 17.562878 137.556000
+v 43.639099 15.237177 138.057007
+v 52.808102 16.206179 132.628006
+v 51.750599 16.252878 133.929993
+v 50.424301 16.206177 134.925003
+v 49.275101 16.089376 135.524994
+v 50.419800 14.867378 133.990005
+v 51.781300 14.534178 132.628006
+v 52.044800 14.849178 132.628006
+v 47.606602 14.849178 135.341995
+v 46.353199 14.849178 136.063004
+v 46.353199 12.134278 134.304993
+v 49.295601 12.002578 132.468002
+v 49.067299 14.849178 134.699005
+v 46.353199 13.464178 135.341995
+v 44.274899 12.134278 135.341995
+v 44.098000 6.706219 132.628006
+v 34.137798 44.703178 133.985001
+v 35.496899 43.945278 133.985992
+v 36.092800 44.684578 133.339996
+v 36.291199 45.470577 132.692001
+v 34.474300 46.583675 132.843994
+v 41.112598 41.949379 132.641998
+v 39.280499 43.709377 132.494003
+v 39.041801 41.989277 133.729004
+v 43.501301 39.644478 132.783997
+v 40.421101 40.647877 133.966003
+v 41.751400 39.217476 134.134995
+v 34.139900 43.346275 134.658005
+v 32.497501 45.751976 133.792007
+v 36.854000 39.275276 135.893005
+v 35.529301 41.618675 135.270996
+v 35.496899 39.275276 136.145996
+v 38.210999 40.632278 134.934006
+v 36.854000 41.989277 134.692993
+v 36.873199 40.697475 135.354004
+v 38.961399 39.317276 135.264999
+v 21.114300 47.509079 139.465012
+v 23.336800 47.572079 138.021011
+v 22.441299 48.353779 137.301010
+v 23.740499 46.221478 139.391006
+v 21.946199 46.522877 140.095001
+v 24.640699 44.703178 140.011993
+v 24.640699 45.409176 139.412994
+v 24.292000 46.354877 138.535995
+v 24.941601 45.464977 138.076004
+v 33.579700 47.970676 132.162018
+v 29.781300 47.721275 132.825012
+v 31.147900 46.040775 133.748001
+v 31.425800 44.703178 134.296005
+v 27.474501 46.740978 133.470993
+v 28.533800 45.733578 133.811996
+v 28.709400 43.367676 134.615997
+v 23.152500 48.201977 135.472015
+v 24.054600 47.174679 135.519012
+v 23.843901 47.350376 137.022018
+v 25.773701 48.450977 132.944016
+v 24.385000 48.796375 133.369019
+v 25.046101 47.382378 134.212021
+v 25.986900 46.853176 133.912018
+v 22.176201 49.090076 134.886017
+v 24.182301 47.854778 134.523010
+v 25.632601 43.520176 137.001007
+v 25.139500 44.869179 135.968002
+v 25.888800 44.245975 135.360001
+v 27.274000 45.206776 134.143997
+v 25.991699 45.294579 134.682007
+v 25.972500 41.784477 140.615005
+v 24.541800 43.214077 140.759003
+v 24.640699 41.989277 141.024994
+v 21.926600 41.989277 141.410995
+v 23.283600 44.059277 140.770004
+v 21.970699 44.779076 140.789993
+v 25.997700 43.346275 139.979004
+v 26.238800 43.526379 139.417007
+v 25.317400 44.703178 139.412994
+v 25.653799 44.025276 138.057007
+v 26.132700 42.903477 137.944000
+v 26.916300 41.989277 139.412994
+v 23.283600 44.703178 140.557007
+v 24.640699 39.275276 141.531006
+v 26.733601 39.275276 140.770004
+v 26.005501 40.730778 140.774002
+v 21.926600 39.275276 141.835007
+v 27.331499 40.136578 139.408005
+v 27.124599 40.632278 138.057007
+v 27.354700 40.073177 138.057007
+v 30.248800 40.925777 135.434006
+v 33.896702 40.703377 135.703003
+v 33.461399 42.667778 135.020004
+v 30.068800 41.989277 135.085007
+v 27.290001 42.471378 135.319000
+v 28.406000 41.388676 135.382004
+v 31.425800 39.275276 136.160995
+v 33.797699 39.281178 136.255997
+v 27.348400 40.655476 136.714005
+v 30.068800 39.275276 136.175003
+v 28.711800 40.632278 135.703003
+v 28.608801 39.151878 136.667007
+v 26.035500 42.879078 136.449997
+v 26.537100 41.989277 136.699005
+v 35.496899 33.847176 138.714005
+v 38.126400 32.952778 137.733994
+v 35.512299 35.376377 138.039993
+v 34.072201 35.405777 139.046997
+v 32.782902 35.204277 139.979004
+v 33.504200 33.377579 140.003006
+v 38.210499 37.914177 135.940002
+v 40.395699 37.969376 135.186005
+v 39.995499 36.321178 135.686005
+v 38.339802 35.711678 136.552002
+v 39.582699 32.911976 136.848007
+v 41.708401 33.938976 135.283005
+v 39.568001 35.204277 136.151993
+v 33.460602 38.477077 136.733002
+v 34.208599 37.466476 137.388000
+v 35.141602 36.596878 137.582993
+v 35.488701 37.914375 136.699997
+v 33.095100 37.872078 137.302994
+v 32.987701 37.265278 138.298004
+v 36.854000 35.204277 137.423004
+v 36.754002 37.002876 136.707993
+v 39.925598 29.829678 138.235001
+v 38.210999 29.776176 139.246994
+v 39.568001 28.419277 139.035004
+v 41.716000 28.372477 137.468994
+v 38.261700 27.196377 140.281006
+v 36.854000 32.490177 138.619003
+v 35.365299 31.956778 139.537994
+v 36.756302 31.039677 139.335007
+v 34.139900 32.490177 139.904007
+v 32.699299 31.795076 140.751999
+v 34.280201 30.416178 140.552002
+v 32.782902 29.776176 141.179993
+v 36.236801 27.858778 140.811996
+v 34.139900 28.419277 141.190994
+v 36.854000 28.419277 140.395004
+v 40.925098 32.490177 136.156006
+v 42.432098 32.688377 135.229996
+v 40.925098 31.260277 136.699005
+v 42.279202 29.473278 136.675003
+v 27.354700 36.561275 141.542007
+v 29.644600 36.529076 140.770004
+v 28.711800 37.078178 140.770004
+v 27.610701 39.275276 139.412994
+v 27.345200 38.322876 140.781006
+v 28.696899 37.810879 139.406006
+v 27.735600 39.275276 138.057007
+v 30.068800 37.156178 139.412994
+v 30.068800 37.440178 138.057007
+v 28.777700 37.957577 138.087997
+v 31.351000 35.088379 140.778000
+v 30.068800 35.204277 141.186005
+v 30.068800 33.847176 141.434006
+v 27.354700 33.847176 141.973007
+v 31.425800 36.561275 140.035004
+v 24.640699 36.561275 141.962006
+v 21.926600 36.561275 142.016006
+v 24.640699 33.847176 142.082993
+v 30.121700 38.064877 136.897995
+v 32.110600 37.242378 138.542999
+v 31.423700 37.800678 137.214996
+v 31.441299 31.265278 141.302994
+v 30.068800 32.490177 141.559006
+v 30.243900 29.820177 141.690002
+v 27.354700 31.133177 142.018005
+v 27.354700 28.419277 141.826004
+v 18.900200 48.544975 137.983017
+v 20.388599 48.740078 137.662018
+v 19.374399 47.373077 139.422012
+v 17.853001 47.413479 138.505020
+v 17.874599 48.321377 137.653015
+v 20.644699 46.552376 140.195999
+v 20.579300 44.710178 140.768005
+v 19.210199 46.571476 139.809006
+v 19.212500 44.703178 140.423996
+v 17.936001 45.993176 139.335007
+v 16.692400 45.586475 138.151993
+v 17.809900 45.471275 139.404007
+v 17.035801 44.505077 139.444000
+v 18.712400 49.648079 136.167023
+v 17.504601 49.643578 135.778015
+v 16.511400 48.328777 136.332016
+v 15.922300 49.069279 135.236008
+v 15.474600 47.520676 135.310013
+v 15.151100 49.073578 134.463013
+v 14.112300 49.918278 133.025009
+v 14.485300 47.417175 133.986008
+v 13.016400 47.399876 132.170013
+v 15.950700 46.060177 136.699005
+v 15.193800 46.161976 135.557007
+v 15.489200 44.693977 137.917007
+v 15.141500 45.138176 136.699005
+v 13.769300 44.770077 135.597000
+v 13.378700 46.003578 133.501007
+v 13.714000 46.739475 133.320999
+v 12.305600 45.229778 133.529007
+v 11.059700 45.527279 131.973999
+v 11.101800 44.545578 133.945999
+v 19.212500 43.629276 140.770004
+v 19.212500 41.989277 141.207993
+v 18.026100 43.288876 140.561005
+v 16.498501 43.346275 139.964005
+v 17.093100 41.998379 140.785004
+v 13.781500 43.380978 138.212006
+v 15.273700 43.332577 139.389999
+v 13.746000 42.010277 139.429993
+v 12.346500 42.094978 138.337006
+v 15.141500 41.989277 140.173004
+v 14.674800 39.275276 140.770004
+v 16.581200 41.801678 140.757996
+v 13.784400 39.275276 140.384995
+v 12.154900 43.404278 136.455994
+v 10.841000 43.326077 135.526001
+v 10.787600 42.220978 136.686996
+v 11.070300 40.664177 138.057007
+v 9.738470 44.642776 132.604004
+v 9.713300 43.346275 134.464005
+v 9.713300 43.801277 133.985992
+v 9.305700 43.346275 133.985992
+v 8.411490 43.308475 132.507996
+v 9.703370 42.143978 135.503998
+v 8.537570 41.924278 133.850998
+v 9.033200 40.632278 135.341995
+v 10.862800 39.291676 138.356995
+v 8.652570 39.297379 135.281006
+v 7.158650 39.149876 132.227997
+v 7.951100 41.989277 132.628006
+v 16.498501 33.847176 141.145004
+v 21.926600 33.847176 141.852005
+v 19.212500 39.275276 141.714005
+v 21.926600 28.419277 141.559006
+v 16.498501 28.419277 140.496994
+v 11.070300 33.847176 138.949005
+v 11.070300 28.419277 138.610992
+v 10.181700 36.561275 138.057007
+v 8.380460 38.139278 135.382004
+v 7.527700 37.918278 133.985992
+v 6.878540 38.045776 132.585007
+v 7.573300 36.561275 135.341995
+v 8.356300 33.847176 137.085007
+v 9.661400 33.847176 138.057007
+v 6.912320 35.483776 135.313004
+v 8.356300 36.561275 136.298004
+v 6.780710 36.620075 134.210999
+v 5.379340 36.770878 131.449005
+v 5.687850 35.142479 133.949005
+v 5.074970 35.204277 132.628006
+v 5.512930 33.908379 134.274002
+v 4.141660 33.500877 132.197006
+v 6.079000 32.490177 135.341995
+v 8.356300 31.133177 137.281006
+v 6.331410 33.847176 135.341995
+v 8.356300 28.419277 137.108994
+v 5.885330 31.159378 135.313995
+v 5.768450 28.423277 135.341995
+v 4.785330 31.133179 133.985992
+v 4.125820 31.260279 133.085007
+v 2.928150 28.419279 133.037994
+v 2.928150 29.398279 132.628006
+v 2.394790 28.419279 132.628006
+v 39.595699 24.546078 140.800995
+v 38.210999 26.079277 140.770004
+v 37.318199 25.188778 141.365997
+v 39.568001 25.705276 140.216003
+v 39.568001 22.991278 141.300995
+v 42.607800 23.636578 137.789001
+v 34.818401 26.383677 141.548004
+v 32.173302 29.027178 141.453995
+v 34.139900 25.705276 141.684006
+v 32.782902 27.062277 141.645004
+v 32.782902 25.705276 141.703003
+v 36.854000 24.348278 141.587006
+v 35.496899 24.348278 141.686005
+v 35.496899 22.991278 141.619995
+v 32.782501 22.990976 141.472000
+v 42.402699 27.102978 137.031006
+v 41.082802 27.136078 138.212997
+v 41.430199 25.633978 138.212997
+v 42.572899 25.735077 136.886002
+v 42.136700 24.359278 137.835007
+v 42.936501 24.381577 136.822006
+v 40.925098 21.634277 141.158005
+v 42.297699 21.507877 140.766998
+v 41.440102 22.806078 140.729996
+v 40.925098 20.277277 141.065994
+v 42.547600 20.296577 140.817993
+v 39.568001 21.634277 141.354004
+v 43.044300 21.806477 140.326996
+v 41.181499 24.048977 139.891006
+v 40.951500 18.967176 140.750000
+v 42.325500 19.092478 140.664001
+v 40.925098 17.563177 140.184006
+v 35.496899 20.277277 141.076004
+v 32.782902 20.165277 140.770004
+v 35.496899 17.563177 140.018005
+v 38.210999 17.563177 140.210007
+v 38.210999 18.925177 140.770004
+v 35.496899 19.333277 140.770004
+v 32.782902 17.563177 139.947006
+v 31.425800 28.419277 141.639008
+v 30.068800 28.419277 141.742004
+v 30.068800 25.705276 141.639008
+v 30.068800 22.991278 141.240005
+v 27.354700 25.705276 141.436005
+v 27.354700 22.991278 141.014008
+v 21.926600 22.991278 140.246994
+v 27.354700 17.563177 139.636993
+v 21.926600 17.563177 138.352005
+v 40.925098 14.849177 138.593994
+v 42.987499 14.849177 138.057007
+v 42.282101 17.563177 140.063004
+v 38.210999 14.849177 138.600006
+v 40.925098 14.249277 138.057007
+v 38.210999 13.862177 138.057007
+v 32.782902 12.749277 138.057007
+v 43.639099 12.134278 135.570007
+v 43.639099 14.849177 137.720993
+v 40.925098 12.134278 136.358994
+v 38.210999 12.134278 136.985992
+v 43.639099 6.706219 132.757996
+v 38.210999 6.706218 134.065994
+v 32.782902 6.706218 134.817993
+v 32.782902 12.134277 137.766006
+v 21.926600 6.706218 135.229004
+v 11.070300 17.563177 136.199005
+v 10.008200 28.419277 138.057007
+v 11.070300 6.706219 133.005005
+v 7.436000 6.706219 132.628006
+v 66.711098 32.592781 110.951004
+v 65.282799 32.482780 112.261009
+v 66.474998 31.037182 112.273010
+v 66.212898 29.776180 113.631004
+v 64.683403 30.935781 114.499008
+v 65.322998 29.640881 114.949005
+v 66.996101 29.727482 112.465004
+v 68.231697 29.769783 110.938011
+v 67.957603 30.824284 111.043007
+v 66.459198 28.408081 113.686005
+v 42.996700 44.801079 129.932007
+v 46.500099 43.716682 127.406006
+v 43.042702 45.664181 128.238007
+v 45.269798 47.370682 123.587006
+v 46.430099 47.384480 121.085007
+v 44.158100 48.728580 121.426010
+v 45.341099 45.069283 126.773010
+v 47.861198 44.849682 125.316010
+v 46.715599 45.911282 124.931007
+v 48.511600 44.954781 124.391006
+v 48.846401 45.224380 121.989006
+v 48.466301 41.059280 127.866005
+v 49.444500 38.333080 128.557999
+v 50.448700 38.823879 127.300011
+v 44.444901 43.807076 129.759995
+v 42.210400 44.461578 130.792007
+v 44.126202 41.692879 131.264008
+v 45.947701 42.097477 129.779007
+v 47.920601 42.261681 127.466011
+v 47.675201 39.318478 129.912994
+v 46.356701 39.187477 131.179001
+v 44.792400 42.921677 130.197998
+v 43.639099 40.632278 132.095993
+v 44.989601 38.219677 132.617004
+v 51.395802 41.188480 124.539009
+v 49.575100 43.573681 124.786011
+v 50.883801 41.044083 125.669006
+v 48.889900 43.174580 125.939011
+v 50.429298 42.953079 123.797005
+v 50.138302 43.710079 122.426010
+v 51.981201 39.520283 125.196007
+v 53.081501 38.822083 123.814011
+v 52.471901 39.961681 123.453011
+v 54.059101 38.160381 122.998009
+v 53.644901 39.223881 121.891006
+v 51.786098 41.064880 121.537010
+v 51.455601 44.065983 118.811005
+v 49.224701 46.130383 117.915009
+v 50.597500 43.932182 120.613007
+v 48.787300 46.463482 116.533005
+v 50.892101 44.904381 117.321007
+v 50.638401 44.778080 116.068008
+v 46.684399 48.547279 118.081009
+v 45.852200 48.612282 114.843010
+v 45.971699 49.176281 116.784004
+v 47.239300 48.092682 116.785011
+v 45.950500 47.578682 111.229004
+v 45.772202 48.472580 113.588005
+v 46.819500 47.140579 114.140007
+v 47.807301 46.168579 114.412010
+v 47.903000 45.477581 112.925011
+v 49.006001 44.747982 113.893005
+v 47.291599 45.691181 111.027008
+v 48.342499 44.703182 112.273010
+v 53.224400 41.813183 116.441010
+v 51.725300 43.567883 116.166008
+v 51.733700 44.029781 117.348007
+v 53.710701 41.521179 117.697006
+v 54.055099 39.711479 120.192009
+v 54.733501 38.124680 121.918007
+v 54.009102 40.954681 118.623009
+v 52.712799 42.326382 118.850006
+v 55.329899 39.779381 117.678009
+v 54.480801 40.504581 116.384010
+v 52.104198 41.989281 114.987007
+v 51.779202 41.141979 113.640007
+v 50.438702 43.161980 113.813011
+v 51.206402 41.989281 113.631004
+v 49.602501 41.989281 110.916008
+v 48.928902 43.362183 111.360008
+v 51.781300 39.275280 111.149010
+v 53.475899 39.275280 113.631004
+v 57.956200 33.748680 121.059006
+v 57.342899 33.516380 122.101006
+v 55.978401 28.788078 127.169006
+v 54.717098 31.151678 127.243004
+v 54.352299 29.848379 128.283997
+v 59.304798 31.634781 121.224007
+v 57.096500 31.119879 123.899010
+v 58.568100 29.778179 123.130005
+v 60.235802 29.531582 121.409004
+v 57.769299 28.562880 124.946007
+v 50.784100 35.458977 129.705994
+v 48.115101 37.913776 130.479996
+v 47.710201 36.874477 131.401001
+v 52.682301 35.017780 127.582008
+v 52.733601 36.721680 125.889008
+v 52.735500 33.132179 128.651993
+v 49.804699 33.834377 131.242004
+v 54.108501 35.840282 124.486008
+v 50.627998 31.170879 131.169006
+v 50.386101 32.481476 131.160004
+v 52.167801 31.082680 129.932007
+v 51.780602 32.481075 129.914993
+v 53.563499 31.133179 128.557007
+v 54.072899 32.482182 127.186005
+v 51.303799 33.847176 129.914993
+v 52.942501 29.751780 129.468002
+v 52.864601 28.313478 129.531998
+v 49.067299 29.776178 132.199005
+v 54.814800 28.113279 128.197998
+v 48.709900 28.419279 132.304993
+v 59.205299 33.732479 118.697006
+v 59.628799 34.579281 117.018005
+v 57.848999 36.517681 118.013008
+v 59.485001 35.184780 116.320007
+v 60.688900 34.732681 115.086006
+v 61.757900 33.822281 115.019005
+v 62.679699 33.852180 113.732010
+v 61.280602 34.745182 113.631004
+v 59.923500 35.084183 113.631004
+v 59.795101 35.205379 114.989006
+v 63.995300 33.841480 112.064011
+v 62.637600 34.442280 112.273010
+v 65.302696 33.830879 110.841011
+v 63.994598 34.295181 110.916008
+v 62.637600 34.407181 110.916008
+v 61.280602 34.688183 112.273010
+v 59.923500 34.730183 112.273010
+v 61.280602 34.282181 110.916008
+v 59.946701 34.073280 110.240005
+v 57.350601 36.764782 114.972008
+v 56.829102 37.986282 116.565010
+v 58.167000 36.579983 116.514008
+v 56.195499 37.682381 114.760010
+v 55.561501 39.567982 116.676010
+v 54.485802 39.502583 115.026009
+v 54.495399 38.396179 113.631004
+v 59.354301 35.204281 113.631004
+v 58.535999 35.253181 112.950005
+v 58.566502 35.914181 114.987007
+v 57.290501 35.373180 111.966011
+v 57.202999 36.492882 114.146011
+v 58.566502 34.512280 110.916008
+v 57.209499 34.985180 110.916008
+v 54.492699 36.581280 110.874008
+v 63.222000 30.487181 116.682007
+v 61.697800 32.122181 116.723007
+v 61.253502 31.355282 119.032005
+v 61.224499 30.517481 119.858009
+v 59.691700 31.819580 120.552010
+v 61.346001 28.537682 120.528008
+v 62.516701 29.957380 118.640007
+v 59.624001 28.641981 122.510010
+v 62.542801 28.414982 119.025009
+v 59.244999 31.811281 121.094009
+v 63.994999 32.489681 113.622009
+v 64.070801 28.402981 116.609009
+v 65.541901 28.213581 114.981010
+v 63.800301 29.756481 116.533005
+v 66.045502 40.632286 98.702507
+v 65.333298 41.813484 98.690010
+v 65.351700 40.632286 99.120506
+v 65.967499 40.632286 97.345505
+v 65.847397 41.989285 97.345505
+v 66.329498 39.275284 98.702507
+v 65.351700 39.275284 99.616508
+v 66.030800 39.275284 97.345505
+v 65.416496 40.687885 95.541107
+v 65.469002 41.954685 95.663208
+v 66.837502 33.851780 109.577011
+v 66.878899 34.511681 108.575005
+v 64.740402 34.528080 109.688011
+v 68.198700 33.750980 108.870010
+v 69.464600 33.866882 108.206009
+v 68.808998 35.259781 106.515007
+v 69.002403 35.440380 105.632011
+v 67.474602 36.391483 105.018005
+v 70.201698 34.136379 106.902008
+v 70.005699 34.482880 105.775009
+v 70.543404 33.444080 105.928009
+v 70.114304 33.783283 104.916008
+v 66.708801 35.077080 107.476006
+v 66.371002 35.509583 106.286011
+v 66.681000 36.421684 104.601006
+v 66.719299 37.509785 103.000008
+v 65.915001 37.352585 102.889008
+v 66.947800 37.918285 100.060005
+v 66.708702 38.363285 100.060005
+v 66.740997 38.096085 101.428009
+v 67.425598 37.569286 101.602005
+v 67.439003 37.204884 103.192009
+v 65.916496 38.130085 101.397011
+v 67.373703 36.561283 100.060005
+v 68.964798 35.590385 104.466011
+v 64.912102 35.299084 104.475006
+v 64.505600 34.916885 104.991005
+v 68.322998 35.487686 102.180008
+v 68.146301 36.438583 102.351006
+v 68.999001 34.903687 103.497009
+v 69.412903 32.468880 109.117004
+v 68.065697 32.490181 110.008011
+v 70.216400 32.490181 108.202011
+v 69.403603 31.143084 109.480011
+v 70.043701 31.133083 108.202011
+v 70.660500 32.863480 106.983009
+v 70.223503 31.133183 106.845009
+v 70.565201 32.520981 105.821007
+v 68.390900 28.419283 109.560005
+v 69.090202 29.776182 109.560005
+v 68.084198 28.471582 110.787010
+v 69.447502 29.765284 106.834007
+v 69.333603 29.936283 105.522011
+v 70.026901 31.133183 105.487007
+v 68.523499 28.419582 108.202011
+v 68.449402 28.419283 106.845009
+v 68.085197 28.167482 105.524010
+v 69.455299 31.057583 104.071007
+v 70.100197 32.511684 104.631004
+v 69.330002 32.531384 103.361008
+v 68.883003 31.133183 102.773010
+v 67.699303 31.130383 99.979408
+v 68.281601 32.506386 101.376007
+v 67.708603 32.490185 100.060005
+v 67.513901 33.847183 100.060005
+v 68.765198 29.769983 104.058006
+v 67.950897 28.419283 104.131004
+v 66.749397 37.713886 98.822105
+v 65.351700 38.658283 100.060005
+v 66.205803 37.918285 97.345505
+v 66.324402 36.749184 97.437111
+v 65.395699 37.910583 95.954811
+v 65.349503 36.742184 95.992111
+v 66.708702 34.525784 98.285011
+v 66.174896 34.503487 97.315506
+v 65.351700 35.204285 96.228508
+v 66.201797 32.490185 97.345505
+v 66.875603 32.513184 98.364906
+v 66.896103 31.111084 98.442505
+v 65.631699 30.955284 97.067009
+v 65.306801 32.314083 96.522911
+v 67.575996 29.881683 100.580009
+v 66.676498 29.888384 98.761406
+v 65.332199 29.797686 97.370804
+v 66.592003 28.427383 100.240005
+v 65.461197 28.359884 98.573509
+v 44.526001 50.123882 111.226006
+v 46.033501 47.239582 108.634010
+v 46.419998 46.390682 105.878006
+v 45.098999 48.996784 105.139008
+v 47.642101 44.783081 109.868004
+v 47.608700 44.665981 108.112007
+v 47.506500 44.703182 106.845009
+v 47.097801 44.699181 105.522011
+v 44.179501 48.829483 102.730011
+v 43.818001 47.409683 101.362007
+v 44.968800 47.413685 102.857010
+v 46.353199 46.060184 104.840004
+v 45.652401 47.519886 104.306007
+v 45.995701 46.060184 104.131004
+v 45.125198 44.660183 102.694008
+v 44.996201 46.739285 102.773010
+v 46.353199 44.703186 104.310005
+v 43.492901 46.501186 100.926010
+v 43.848000 44.761784 101.192009
+v 49.052799 42.005482 109.731010
+v 49.918201 39.275280 108.202011
+v 49.067299 40.631180 108.202011
+v 51.673801 39.186481 110.922005
+v 48.521500 41.989281 108.202011
+v 48.089298 43.346279 108.202011
+v 48.335400 43.346279 109.560005
+v 48.039700 41.989281 106.845009
+v 47.722801 43.926781 106.865005
+v 47.551800 41.974480 105.697006
+v 49.067299 39.275280 106.785011
+v 46.353199 41.989285 103.696007
+v 45.720200 41.989285 102.773010
+v 43.635601 42.026085 100.033005
+v 48.367401 39.275280 105.487007
+v 47.152802 39.275284 102.773010
+v 46.353199 40.735184 102.773010
+v 46.353199 39.512283 100.060005
+v 64.517303 44.703186 95.988510
+v 63.994598 45.008186 95.988510
+v 63.994598 44.703186 96.367508
+v 62.713902 44.737686 95.843208
+v 64.507896 44.702484 94.626808
+v 63.315701 46.057686 94.630005
+v 63.454201 46.139984 94.071007
+v 62.637901 46.055386 94.630211
+v 61.381302 44.725586 94.618111
+v 60.578201 48.364685 92.017410
+v 61.610199 47.648384 92.450905
+v 61.358601 48.241184 91.577606
+v 59.929401 49.030285 91.323105
+v 60.756001 48.948185 90.797104
+v 60.028500 49.530685 90.147408
+v 60.889099 48.554386 89.836510
+v 59.751301 49.505886 88.845909
+v 64.007896 44.730785 92.862709
+v 62.935600 45.111984 91.157509
+v 62.802101 46.380085 92.221207
+v 61.280602 46.060184 93.846504
+v 62.637600 46.519184 93.953506
+v 60.371300 45.998684 93.223206
+v 61.990799 46.161785 90.099205
+v 57.581402 50.153183 88.677010
+v 56.548801 49.778385 88.744110
+v 59.080898 49.669086 90.135704
+v 57.640598 48.531685 90.485405
+v 58.665501 47.547485 91.649605
+v 57.161900 46.941185 91.314705
+v 56.447601 47.641483 90.628609
+v 55.324501 46.932785 90.925407
+v 54.676201 49.371784 88.593704
+v 58.566502 44.703186 92.747505
+v 59.898998 43.577885 93.960106
+v 57.211800 44.695686 92.411011
+v 55.129501 44.762783 92.002304
+v 63.994598 41.989285 98.022507
+v 65.351700 43.119286 97.345505
+v 65.085403 43.346283 97.345505
+v 63.976101 43.537884 97.383011
+v 62.580200 41.913685 96.833710
+v 65.291603 43.326183 95.964607
+v 62.637600 43.346283 96.392509
+v 61.289299 42.135685 95.672409
+v 64.591797 40.690285 98.662209
+v 62.822701 40.033085 97.438911
+v 64.066498 38.922985 98.603409
+v 62.637600 39.275284 97.632507
+v 61.672901 39.137886 97.281311
+v 64.948997 40.632286 94.631508
+v 64.545502 39.275284 94.631508
+v 65.405899 39.313286 95.838409
+v 61.018600 40.630684 96.176010
+v 59.923500 39.275284 96.488510
+v 60.079498 41.009285 95.510406
+v 58.462299 39.241486 96.284111
+v 58.567299 40.562683 95.602905
+v 54.433899 41.173386 95.427208
+v 57.750999 42.036385 94.440506
+v 63.971401 42.411785 92.379509
+v 63.190800 43.618484 91.256004
+v 64.055000 43.666985 92.286606
+v 62.510700 44.701984 90.581306
+v 62.637600 41.989285 91.462509
+v 61.937302 43.374485 90.492805
+v 61.196201 44.717484 89.551910
+v 59.923500 43.870186 89.203506
+v 61.280602 40.632286 91.081505
+v 63.758999 39.236084 93.803909
+v 62.531502 40.639786 92.030609
+v 64.029999 40.818684 93.378204
+v 58.978500 41.962486 94.617805
+v 58.528099 43.533985 93.321609
+v 57.508900 43.326984 93.277504
+v 54.485298 43.277386 92.975311
+v 59.932400 39.286484 90.861809
+v 57.209499 39.275284 89.927505
+v 57.209499 40.632286 89.340508
+v 59.238602 41.326683 89.761810
+v 55.911400 39.423786 89.511909
+v 52.961700 47.921783 90.104210
+v 51.999100 47.511986 90.466705
+v 49.819500 49.284386 89.897110
+v 49.586800 48.482784 90.392204
+v 48.858501 44.540485 92.824608
+v 51.487400 44.653885 91.840508
+v 47.455002 45.915085 91.932205
+v 52.038700 46.081184 91.007011
+v 50.424301 46.060184 91.113510
+v 49.067299 47.417183 90.823509
+v 49.067299 46.060184 91.357506
+v 47.886501 49.148586 90.556908
+v 46.353199 48.774185 91.250511
+v 47.710201 47.417183 91.170509
+v 46.414101 46.854984 91.789604
+v 43.671501 49.106285 89.451706
+v 43.617100 49.037685 90.671211
+v 44.692799 50.184883 90.563011
+v 44.996201 48.774185 91.540504
+v 44.631901 47.487186 91.997810
+v 46.353199 46.060184 92.256508
+v 46.431198 44.952885 93.245605
+v 44.996201 46.060184 92.493507
+v 43.643799 45.938084 91.917908
+v 44.553101 44.788986 93.382706
+v 43.639099 44.703186 91.356506
+v 43.639099 45.529186 90.560509
+v 43.933300 44.703186 90.560509
+v 44.187500 46.060184 89.203506
+v 45.012199 44.808983 89.206604
+v 54.528301 41.983986 94.524811
+v 52.675598 42.209385 94.858009
+v 50.044701 43.412785 94.601410
+v 49.564701 42.603184 95.777809
+v 53.326698 39.240986 96.795311
+v 51.901600 40.871586 96.265511
+v 50.127201 39.270485 97.347206
+v 50.424301 40.632286 96.728508
+v 49.058300 40.637085 96.947807
+v 49.080898 39.284584 97.644508
+v 47.592300 42.092686 96.062408
+v 48.399101 43.363884 95.027611
+v 46.389999 43.613186 94.799805
+v 44.996201 41.989285 95.671509
+v 44.918598 43.367584 94.649406
+v 43.626701 41.763985 94.653008
+v 46.604801 39.275284 100.060005
+v 46.353199 40.514286 97.345505
+v 43.639099 41.989285 99.950508
+v 43.639099 41.250183 97.345505
+v 46.360600 41.999786 95.960106
+v 53.155800 44.634686 91.761810
+v 53.618401 42.986786 93.275307
+v 51.977200 43.683685 92.758011
+v 47.645599 44.180584 93.949707
+v 43.704800 43.346283 93.274506
+v 43.620899 44.691986 92.278305
+v 43.685902 43.698383 91.924110
+v 44.996201 43.346283 90.010506
+v 43.643799 42.594185 93.332306
+v 44.047001 41.989285 91.917511
+v 43.639099 39.445286 91.917511
+v 46.353199 40.632286 89.914505
+v 46.596802 41.939083 89.427307
+v 47.932098 40.774685 89.246307
+v 47.636902 39.114883 89.299309
+v 48.783401 39.292686 89.175507
+v 46.353199 39.275284 89.596504
+v 44.529800 39.275284 90.560509
+v 45.037201 42.022285 90.573204
+v 44.996201 39.275284 90.175507
+v 62.637600 34.161282 109.560005
+v 62.629799 34.070480 106.822006
+v 64.136398 34.626682 108.868004
+v 65.337303 35.039883 107.471008
+v 62.637600 34.264282 105.487007
+v 60.757702 33.862381 105.407005
+v 62.264599 33.914379 108.105011
+v 58.503101 33.847179 108.202011
+v 57.209499 34.140282 108.202011
+v 54.495399 35.169281 108.202011
+v 57.209499 33.847179 106.912010
+v 56.248600 33.847179 105.487007
+v 54.495399 34.300182 105.487007
+v 64.071800 37.838387 99.763611
+v 64.145401 36.424583 102.482010
+v 62.034698 36.546383 100.065010
+v 63.081100 36.474186 101.300011
+v 62.451401 35.228085 102.960007
+v 61.280602 34.325283 104.131004
+v 61.169399 35.231983 101.813011
+v 60.029400 35.045883 101.341011
+v 59.923500 34.443184 102.773010
+v 54.495399 33.979183 102.773010
+v 57.209499 34.723286 100.060005
+v 57.232700 33.845783 102.793007
+v 54.495399 34.031185 100.060005
+v 59.923500 33.746281 105.487007
+v 59.923500 33.641182 108.202011
+v 57.209499 33.694283 105.487007
+v 59.923500 33.847183 104.924011
+v 50.523800 36.561283 100.060005
+v 49.067299 37.462284 100.060005
+v 49.067299 38.073181 105.487007
+v 62.715500 37.908585 98.689308
+v 61.280602 37.918285 98.097511
+v 60.006100 36.724384 98.737907
+v 59.903099 37.994583 97.398209
+v 63.841301 37.389484 94.436211
+v 57.209499 36.561283 97.729507
+v 57.209499 37.126286 97.345505
+v 55.874802 36.613285 97.445709
+v 57.209499 37.918285 96.922508
+v 55.852402 39.275284 96.522507
+v 55.852402 37.918285 96.903511
+v 54.564201 36.701584 97.445305
+v 62.642399 37.898483 93.267410
+v 62.637600 36.561283 93.772507
+v 61.407799 39.494884 91.616211
+v 59.923500 37.319286 91.917511
+v 63.803299 35.212486 94.952805
+v 62.637600 35.204285 94.270508
+v 59.923500 36.561283 92.396507
+v 62.429798 33.847183 94.631508
+v 59.923500 33.847183 93.897507
+v 57.805500 36.561283 91.917511
+v 54.495399 36.561283 91.004509
+v 54.495899 39.571587 89.192009
+v 57.209499 33.847183 93.565506
+v 57.209499 36.470783 91.846008
+v 54.495399 33.847183 92.460510
+v 54.495399 35.105186 91.917511
+v 63.994598 33.847183 95.443504
+v 65.276199 33.627285 96.326210
+v 59.923500 31.133184 95.149506
+v 62.637299 32.490383 95.160408
+v 62.632000 30.426886 95.925804
+v 63.988800 28.430485 97.445206
+v 63.994598 29.776184 96.666504
+v 59.923500 28.419285 96.549507
+v 54.544399 28.419685 94.627411
+v 59.923500 32.207283 94.631508
+v 54.495399 31.133184 93.729507
+v 53.138401 36.561283 97.904510
+v 51.800999 37.948986 97.495605
+v 51.781300 36.561283 98.585510
+v 51.781300 35.747284 100.060005
+v 51.781300 36.561283 90.054504
+v 51.777802 39.075386 89.197311
+v 53.128799 39.289585 89.204308
+v 50.424301 36.561283 89.406509
+v 50.104500 36.561283 89.203506
+v 51.781300 35.204285 90.433510
+v 53.353600 33.847183 91.917511
+v 50.423100 35.194485 89.215508
+v 51.781300 34.506184 90.560509
+v 43.639099 38.877285 90.560509
+v 43.639801 39.275585 91.674011
+v 43.639099 38.717186 89.203506
+v 52.466202 31.133184 91.917511
+v 50.988800 32.490185 89.203506
+v 50.545300 33.919384 88.979805
+v 51.749199 33.867985 90.590706
+v 52.326302 28.419285 91.917511
+v 51.781300 29.776184 90.646507
+v 51.757000 32.480984 90.635307
+v 66.039001 27.139681 113.563011
+v 65.957100 25.705282 110.916008
+v 67.287598 28.419281 112.273010
+v 65.351700 25.705280 112.865005
+v 64.810699 25.638681 113.934006
+v 65.351700 25.093283 110.916008
+v 59.903198 25.579679 123.138008
+v 61.083900 24.335781 121.574005
+v 61.236401 26.756781 120.941010
+v 60.103401 22.957878 123.226997
+v 58.798401 25.705278 124.486008
+v 60.202499 27.052181 122.360008
+v 57.381699 27.198978 125.923004
+v 56.057201 27.048380 127.280006
+v 56.756001 28.389778 126.392006
+v 58.893600 24.348280 124.486008
+v 57.366501 25.705278 125.989006
+v 57.209499 22.991280 125.958000
+v 58.829601 23.002279 124.555000
+v 55.297100 19.060879 128.475006
+v 54.486198 21.518780 128.542007
+v 54.495399 20.277279 128.951004
+v 55.852402 20.277279 127.489998
+v 56.931801 21.260679 126.287003
+v 54.430199 18.988779 129.636993
+v 54.578400 17.736179 129.917999
+v 55.658798 17.549080 128.345993
+v 60.644001 18.920179 123.129997
+v 60.422600 20.778278 123.265999
+v 59.832100 18.914780 124.051003
+v 61.447601 20.388182 121.952003
+v 60.511799 17.563179 123.129997
+v 61.416801 19.004181 121.928001
+v 59.020901 21.634279 124.486000
+v 56.805401 17.873878 126.977997
+v 58.367901 17.708979 125.480003
+v 59.911800 17.617680 123.968002
+v 49.963501 25.705278 131.257996
+v 53.138401 25.705278 129.227005
+v 50.383900 27.062279 131.067993
+v 49.994801 24.358879 131.294998
+v 52.783298 24.370779 129.518997
+v 48.804298 23.014778 132.434998
+v 50.409500 22.932280 131.268005
+v 52.728100 22.940180 129.729996
+v 54.414700 24.659979 128.345993
+v 54.340801 23.034380 128.445007
+v 52.186401 20.310879 131.281006
+v 53.204300 20.214479 130.326004
+v 53.164700 21.251179 129.802002
+v 51.206799 21.619980 131.238007
+v 49.937901 21.792580 132.203003
+v 53.163898 19.051079 131.263000
+v 62.395802 27.128181 119.050011
+v 62.262100 25.705280 119.059006
+v 62.867699 25.691280 117.850006
+v 62.648102 24.335081 118.118004
+v 62.072800 23.003181 119.741997
+v 63.257401 24.348282 116.344009
+v 62.982601 22.991282 116.344002
+v 65.047897 27.062281 114.987007
+v 63.994801 27.026381 116.360008
+v 63.903702 25.847080 115.819008
+v 64.295799 25.705280 114.987007
+v 63.407398 22.991282 113.630997
+v 63.750702 22.991283 110.916000
+v 62.180801 20.277281 119.058998
+v 62.293800 21.634281 119.058998
+v 61.953800 21.634281 120.415001
+v 61.987000 20.277281 120.415001
+v 62.635601 22.982681 117.871002
+v 62.637600 21.453180 116.344002
+v 62.336102 20.277281 116.344002
+v 61.823601 18.920181 120.415001
+v 61.915001 18.920181 119.058998
+v 54.548100 16.049580 129.921005
+v 55.669899 16.211880 128.425003
+v 57.024601 16.180380 126.879997
+v 55.419300 14.851279 128.559006
+v 54.453201 14.824279 129.673996
+v 55.312401 12.134279 127.200996
+v 57.193901 14.858079 126.536003
+v 54.495399 12.134279 128.188004
+v 59.929699 14.913280 121.788002
+v 61.253899 17.620180 121.682999
+v 57.883202 14.845780 125.666000
+v 58.736698 14.849180 124.486000
+v 59.215199 16.206179 124.486000
+v 58.451698 16.212580 125.379997
+v 57.209499 12.380180 124.486000
+v 57.033901 12.134280 124.486000
+v 57.944199 12.134280 121.772003
+v 53.138401 16.206179 132.145004
+v 53.706299 16.206179 131.270996
+v 53.199402 14.815379 131.255997
+v 51.781300 10.851279 129.914993
+v 53.592800 9.420209 127.200996
+v 54.495399 11.006179 127.200996
+v 53.373299 6.706220 127.200996
+v 51.781300 9.420209 129.294006
+v 51.781300 6.706219 129.490005
+v 51.159599 6.706219 129.914993
+v 50.959400 9.420209 129.914993
+v 59.947899 14.296481 118.976997
+v 61.503201 17.563181 119.058998
+v 61.456200 17.563181 120.415001
+v 61.520302 14.849182 113.630997
+v 61.862000 17.563181 113.630997
+v 61.529202 17.563181 116.344002
+v 60.631901 14.849181 116.344002
+v 62.597900 14.871582 110.944000
+v 62.448399 17.563183 110.916000
+v 61.432999 12.135582 113.630997
+v 62.645500 12.119081 111.275002
+v 59.923500 9.420211 115.336998
+v 61.260799 8.357772 113.670998
+v 62.107101 9.420212 112.273003
+v 63.317699 9.420212 109.559998
+v 59.923500 5.349221 114.660004
+v 62.035702 8.063211 112.273003
+v 58.676800 6.706221 116.344002
+v 59.811501 12.134281 116.344002
+v 66.371101 25.705282 108.202011
+v 66.459702 25.705282 105.487007
+v 65.853897 25.705282 102.773010
+v 65.351700 27.006184 100.060005
+v 67.062897 28.419283 101.416008
+v 67.539101 28.419283 102.773010
+v 65.351898 14.849583 102.867996
+v 65.367104 16.311983 100.209000
+v 65.463997 16.206182 102.773003
+v 65.371002 17.698883 100.002998
+v 65.414703 18.176283 101.035004
+v 64.365799 22.991283 108.202003
+v 65.351700 24.553284 108.202011
+v 65.351700 23.842182 105.487007
+v 64.846802 22.991283 102.773003
+v 65.351700 24.760283 102.773010
+v 64.972900 22.991283 105.487000
+v 63.994598 22.991283 100.608002
+v 63.624802 22.991283 100.059998
+v 64.361801 25.705282 100.060005
+v 65.351700 25.705282 101.632011
+v 64.408203 22.991283 101.416000
+v 64.466400 20.277283 105.487000
+v 63.525299 20.277283 108.202003
+v 62.709000 20.137283 110.835999
+v 62.637600 17.563183 110.267998
+v 64.810402 20.215483 104.122002
+v 64.955101 20.277283 102.773003
+v 64.781303 21.634283 102.773003
+v 64.515404 21.634283 101.416000
+v 65.337097 18.214783 102.692001
+v 64.537300 18.849382 105.470001
+v 65.356201 16.218782 104.157997
+v 65.137299 18.920183 100.059998
+v 64.590500 20.277283 100.059998
+v 64.886497 20.277283 101.416000
+v 62.637600 25.705284 98.571510
+v 62.497200 27.763485 97.347206
+v 59.923500 25.705284 97.509506
+v 59.923500 26.475285 97.345505
+v 62.637600 22.991285 98.978500
+v 59.923500 22.991285 97.409500
+v 54.550301 25.705284 94.631508
+v 54.495399 25.705284 94.592506
+v 54.495399 22.991285 94.549500
+v 63.990002 20.221584 98.778000
+v 63.971699 21.561483 100.088997
+v 62.770500 21.710384 98.577202
+v 62.608101 20.202684 97.361900
+v 62.437302 20.277285 97.345497
+v 59.923500 22.700285 97.345497
+v 62.637600 22.152285 98.702499
+v 64.717598 18.920185 98.702499
+v 63.982700 18.746284 97.373596
+v 65.100899 17.563185 98.702499
+v 64.547798 17.563185 97.345497
+v 59.923500 17.563185 95.665497
+v 62.606300 18.946985 96.384102
+v 62.637600 17.563185 95.442497
+v 59.923500 20.277285 96.563499
+v 57.209499 20.277285 96.080498
+v 57.209801 22.991486 96.279602
+v 59.705399 22.991285 97.345497
+v 54.878502 19.995686 94.530296
+v 54.719799 21.634285 94.631500
+v 57.209499 17.563185 95.653503
+v 55.308899 18.920185 94.631500
+v 54.768101 17.911585 93.311897
+v 55.388000 18.920185 89.203499
+v 54.513599 20.281485 89.451103
+v 54.493198 18.997984 90.934502
+v 55.320702 17.580585 90.530701
+v 54.701599 17.924885 91.934097
+v 52.316799 25.705284 91.917511
+v 52.278801 27.062284 91.917511
+v 51.372398 27.062284 89.203506
+v 51.232601 28.419285 89.203506
+v 51.702801 28.456184 90.636009
+v 51.657700 27.097485 90.641510
+v 51.731300 25.603285 89.159004
+v 51.768799 25.683285 90.567909
+v 53.298000 22.936985 93.230202
+v 52.677799 22.991285 91.917503
+v 52.452400 24.348286 91.917511
+v 52.033199 24.348286 90.560509
+v 52.415901 22.991285 90.560501
+v 53.117500 22.495785 89.261497
+v 52.202599 24.348286 89.203506
+v 53.522900 21.432585 93.180801
+v 53.090500 21.232386 91.897797
+v 53.898998 20.277285 93.274498
+v 53.056900 21.539885 90.507301
+v 53.886902 20.277285 90.560501
+v 63.876499 14.849183 108.202003
+v 63.490700 17.563183 108.202003
+v 65.035202 14.849183 105.487000
+v 64.914597 16.206182 105.487000
+v 64.042099 12.134283 108.202003
+v 64.851799 12.134283 105.487000
+v 65.351700 14.849183 104.205002
+v 64.533897 12.134283 102.773003
+v 63.437500 12.134284 100.059998
+v 64.921898 14.849184 100.059998
+v 65.150299 14.849184 101.416000
+v 63.779900 9.420213 108.202003
+v 62.638802 8.028242 110.916000
+v 63.062401 5.625292 109.596001
+v 63.189800 8.063211 109.559998
+v 62.618000 4.314072 110.903999
+v 63.359001 6.706223 108.202003
+v 63.546902 8.063212 108.202003
+v 62.975498 6.706223 105.487000
+v 63.926601 9.420213 105.487000
+v 62.637600 9.420214 101.539001
+v 63.004200 9.420213 102.773003
+v 62.368999 9.420214 100.059998
+v 62.637600 10.423284 100.059998
+v 62.637600 8.473253 102.773003
+v 62.356201 6.706224 100.059998
+v 62.431400 6.706223 102.773003
+v 65.110703 16.206184 98.702499
+v 63.860298 17.370384 96.196198
+v 64.696602 16.206184 97.345497
+v 63.994598 16.284185 95.988503
+v 62.646801 16.132784 94.697304
+v 63.994598 15.808185 95.988503
+v 63.148701 14.849185 94.631500
+v 63.751598 14.809384 95.968498
+v 60.584000 14.849185 94.631500
+v 59.923500 14.849185 95.050499
+v 62.778702 12.134284 97.345497
+v 62.929401 12.134285 94.631500
+v 63.063000 13.492185 94.631500
+v 64.549004 14.831984 98.306396
+v 59.863899 13.500885 94.630997
+v 57.209499 14.849185 95.183502
+v 62.985401 13.492185 93.274498
+v 62.637600 14.175185 93.274498
+v 62.637600 14.849185 93.977501
+v 61.285500 13.543685 93.180496
+v 63.364399 12.121685 91.939499
+v 63.614899 12.134286 90.560501
+v 62.637600 13.345285 90.560501
+v 63.999901 12.201686 89.205002
+v 62.637600 13.245186 89.203499
+v 61.844200 13.448985 91.877296
+v 62.683300 13.475084 91.693901
+v 61.178001 12.313685 90.459099
+v 60.686901 12.134285 91.917503
+v 55.146599 16.206184 93.274498
+v 56.154800 15.171185 94.602997
+v 55.225498 16.206184 91.917503
+v 57.209499 12.134285 94.007500
+v 57.139301 13.194385 94.650398
+v 58.542599 12.463884 94.602798
+v 55.850399 14.855084 94.131599
+v 56.721199 12.134285 93.274498
+v 57.165600 11.527784 91.845299
+v 56.291199 13.492185 91.917503
+v 55.947300 13.676085 93.264198
+v 57.782600 13.850686 88.510399
+v 57.209499 14.417186 89.203499
+v 57.305302 12.901385 90.396103
+v 57.471600 12.134286 90.560501
+v 57.209499 12.134285 91.088501
+v 58.571201 12.161486 88.939102
+v 55.844002 14.619985 91.733398
+v 62.637600 11.737184 97.345497
+v 62.865898 10.777285 94.631500
+v 62.638901 9.418625 95.328003
+v 62.304298 9.420214 97.345497
+v 62.455700 6.706224 97.345497
+v 63.199902 10.777285 93.274498
+v 63.952099 10.693086 89.537300
+v 63.100899 9.420215 93.274498
+v 63.673500 9.420216 90.560501
+v 64.005699 9.420766 89.259300
+v 59.923500 11.186286 90.560501
+v 59.923500 11.331184 91.917503
+v 59.923500 11.576185 89.203499
+v 62.650299 6.728255 94.897499
+v 63.700001 6.706226 89.203499
+v 63.100101 6.706225 91.917503
+v 58.566502 11.167185 93.274498
+v 59.933300 12.075785 93.383797
+v 57.209499 11.504285 93.274498
+v 58.566502 10.959186 90.560501
+v 58.566502 10.777285 91.034500
+v 57.807701 10.777285 91.917503
+v 58.643902 10.630384 92.149002
+v 39.428902 46.756783 128.572006
+v 40.571301 47.489082 127.197006
+v 38.903400 48.103081 127.158005
+v 41.625000 45.376778 130.190002
+v 41.090401 44.585976 131.195999
+v 38.863602 45.266376 131.449997
+v 41.109798 46.164883 128.636002
+v 42.662899 47.254379 126.649010
+v 38.319901 46.093876 129.966995
+v 37.038502 46.619278 129.931000
+v 33.825100 48.720776 131.187012
+v 35.479500 46.784077 131.910995
+v 35.750301 47.347576 130.133011
+v 35.684898 48.174778 129.153015
+v 38.226501 48.005180 127.861008
+v 37.230999 45.647076 131.841003
+v 41.704399 48.257381 125.252007
+v 43.274399 47.756081 124.667007
+v 42.143101 48.561779 124.414009
+v 39.980900 48.499882 125.646011
+v 32.312698 49.202576 131.446014
+v 12.112600 49.301777 130.598022
+v 12.752300 50.150776 130.903015
+v 10.645000 48.217278 129.332016
+v 11.074800 47.403976 130.122009
+v 11.801700 46.673779 131.235001
+v 11.450700 46.055676 131.520996
+v 9.694300 48.464279 128.097015
+v 9.600440 47.354378 128.831009
+v 9.713300 45.236279 131.270996
+v 9.681970 46.075378 129.960007
+v 8.642340 44.871178 129.735001
+v 8.322790 45.384583 128.505997
+v 7.584900 46.060181 127.201004
+v 8.292160 47.429882 127.555008
+v 7.185080 44.585182 127.108009
+v 8.097600 44.703182 128.557007
+v 8.365720 48.349380 126.602005
+v 7.043950 48.101681 125.825005
+v 7.187030 49.390881 123.670006
+v 6.557200 48.772182 124.487007
+v 5.642210 47.417179 125.012009
+v 5.856370 48.629982 124.260010
+v 5.042870 48.799881 123.258011
+v 5.642210 49.828182 121.772011
+v 6.993030 47.418579 126.304008
+v 6.422950 45.924782 125.971008
+v 5.135550 47.417179 124.486008
+v 4.195100 48.822582 121.835007
+v 4.303020 47.941982 123.192009
+v 3.343720 47.417179 121.772011
+v 4.437150 46.004280 124.116005
+v 3.692740 46.060181 123.130005
+v 2.941640 46.109581 121.999008
+v 3.514790 44.700279 124.063011
+v 1.644940 44.997581 121.840004
+v 1.113400 44.240582 122.266006
+v 8.797130 44.528477 131.177002
+v 7.966100 43.346275 131.270996
+v 6.902790 42.552677 129.768997
+v 7.021630 43.353180 128.423996
+v 6.225890 43.607681 126.968010
+v 5.726220 41.696880 128.580994
+v 6.904970 41.678276 130.783997
+v 5.867540 40.608276 129.783997
+v 4.451700 40.581181 128.365005
+v 5.164300 41.814583 127.862007
+v 3.169930 41.722382 126.473007
+v 4.099250 39.877480 128.457993
+v 3.319050 39.958981 127.587006
+v 1.895990 42.154182 124.980011
+v 4.774580 43.582081 125.780006
+v 1.069910 43.532280 123.116005
+v 1.852410 41.162682 125.532005
+v 3.013740 48.711880 120.260010
+v 1.569330 48.771080 119.058006
+v 0.214082 48.774181 118.322006
+v 0.362036 47.262081 118.983009
+v 1.932480 47.234581 120.065010
+v 0.214082 46.060181 119.581009
+v 5.644470 37.567577 131.154999
+v 4.672890 38.028378 129.755005
+v 5.539530 39.106277 130.253998
+v 4.260100 36.690079 129.975998
+v 3.082730 37.900379 128.059998
+v 2.913860 36.669083 128.584000
+v 3.076080 35.169975 129.908005
+v 0.335325 39.281082 124.526009
+v 1.515840 37.898582 126.496010
+v -0.645155 37.889481 124.415009
+v 1.703090 36.690479 127.505005
+v -0.023253 36.886280 125.715004
+v 2.894830 32.288578 131.300995
+v 2.310610 31.133179 131.270996
+v 0.425807 31.133179 129.751999
+v 3.188950 33.844078 130.828003
+v 0.679776 33.641182 128.751007
+v -0.143439 32.508381 128.651993
+v 0.214082 28.419279 130.845993
+v 0.214082 30.248178 129.914993
+v 43.584301 48.428585 101.382011
+v 42.436001 48.801285 99.923607
+v 42.470501 47.493183 99.861710
+v 41.024799 47.437885 98.375809
+v 41.210400 48.839184 98.375107
+v 39.678600 48.833885 97.077209
+v 38.210999 48.774185 96.461510
+v 40.925098 44.703186 98.383507
+v 42.718399 44.703186 100.060005
+v 39.611301 47.417084 97.296410
+v 35.496899 47.417183 96.215508
+v 43.263699 47.417183 90.560509
+v 43.639099 47.417183 91.559509
+v 43.646301 47.421486 89.216606
+v 43.495899 45.872684 90.536507
+v 40.925098 42.481285 97.345505
+v 39.464699 44.703186 97.345505
+v 40.925098 41.989285 97.047508
+v 41.957600 41.989285 97.345505
+v 38.210999 41.989285 96.835510
+v 38.210999 44.703186 96.956505
+v 41.411499 39.275284 94.631508
+v 35.496899 44.703186 96.785507
+v 32.782902 40.632286 95.582504
+v 32.782902 41.232185 95.988510
+v 35.356701 40.573284 96.036804
+v 35.470501 39.250484 94.672905
+v 34.139900 39.621284 94.631508
+v 34.990398 39.185383 93.300110
+v 33.106602 39.865784 93.227005
+v 34.856201 39.595886 91.987511
+v 35.502800 41.054585 89.323204
+v 36.767700 39.295185 90.998604
+v 39.396400 39.358883 89.241806
+v 32.362900 40.426483 92.460106
+v 32.867199 41.114285 90.797806
+v 30.068800 47.417183 95.785507
+v 32.782902 47.417183 95.998505
+v 31.425800 44.703186 96.365509
+v 32.782902 44.703186 96.616508
+v 27.354700 47.417183 94.862511
+v 26.882401 47.417183 94.631508
+v 27.177099 45.229286 94.535904
+v 25.997700 47.417183 94.146507
+v 24.640699 50.131184 93.654510
+v 24.690001 47.417084 93.268806
+v 21.756701 48.510986 91.888809
+v 22.858999 47.417183 91.917511
+v 21.390699 47.439285 90.710106
+v 25.997700 46.060184 93.799507
+v 25.446800 46.060184 93.274506
+v 24.640699 46.060184 92.435509
+v 26.253799 44.620083 93.276810
+v 25.307600 45.145485 91.872810
+v 23.283600 46.960285 91.917511
+v 24.222799 46.060184 91.917511
+v 23.138599 46.444286 90.651711
+v 23.182699 46.481083 89.799904
+v 21.926600 46.996284 89.882507
+v 24.702000 45.544983 91.173805
+v 30.255600 43.406284 96.010208
+v 30.018499 44.703285 96.003609
+v 31.425800 43.346283 96.336510
+v 28.818300 42.021885 94.617409
+v 28.711800 43.346283 95.233505
+v 30.068800 41.989285 95.475510
+v 27.952000 43.346283 94.631508
+v 30.068800 41.177185 94.631508
+v 31.257000 40.594383 94.775108
+v 28.080000 42.192085 93.213905
+v 27.354700 43.346283 93.912506
+v 29.508301 44.102985 88.956711
+v 28.282101 45.034386 88.182411
+v 27.627600 43.762684 90.877106
+v 32.782902 39.989285 94.631508
+v 30.700100 40.911484 93.186905
+v 28.903500 42.063686 92.120506
+v 29.390301 41.468285 93.274506
+v 27.091101 43.346283 93.274506
+v 27.445101 43.135185 92.043007
+v 26.531799 44.035786 91.798309
+v 25.582001 45.221085 90.392906
+v 38.210999 39.275284 95.457504
+v 40.901600 39.115486 94.858109
+v 39.568001 38.556286 94.631508
+v 38.210999 38.500183 94.631508
+v 42.282101 38.562286 91.917511
+v 40.925098 38.156185 91.917511
+v 40.925098 38.303284 93.274506
+v 39.568001 38.014286 93.274506
+v 38.210999 38.030285 93.274506
+v 39.568001 38.053284 91.917511
+v 38.210999 38.232185 91.917511
+v 40.925098 38.404186 90.560509
+v 42.282101 38.529186 90.560509
+v 42.282101 38.744286 89.203506
+v 40.609600 38.849983 89.463905
+v 36.854000 38.718285 91.917511
+v 36.854000 38.385284 93.274506
+v 20.569599 48.774185 91.334511
+v 19.066299 48.772484 90.566811
+v 17.855499 48.774185 90.009506
+v 17.855499 48.251286 89.203506
+v 16.537901 48.774487 89.203308
+v 21.248100 47.755184 89.882507
+v 19.962000 47.417183 89.882507
+v 21.096300 47.401085 89.084007
+v 15.141500 49.496284 89.203506
+v 15.141500 50.131184 89.792511
+v 0.214082 49.298286 95.988510
+v 0.112492 50.132584 96.665405
+v 1.571110 49.666286 93.274506
+v 2.204410 50.131184 93.274506
+v 0.214082 17.563179 130.647995
+v 5.163040 17.563179 132.628006
+v 0.214082 6.706219 130.205994
+v 57.650501 50.160786 87.831909
+v 59.036098 49.955383 89.072205
+v 56.325802 50.164085 87.820511
+v 49.909801 50.284885 88.507706
+v 49.870998 50.155285 87.541908
+v 51.790901 50.109085 87.775909
+v 49.125000 50.219585 87.639107
+v 44.692902 49.844494 47.810009
+v 46.454399 49.555794 45.805508
+v 43.352600 51.645592 45.940006
+v 23.287399 57.347683 88.518806
+v 23.283600 57.964184 88.525505
+v 24.417500 57.537086 88.559311
+v 21.834900 58.205284 88.283005
+v 24.955099 50.435989 73.293808
+v 22.190500 51.112789 74.407410
+v 24.819300 49.406990 78.505806
+v 25.479200 52.026588 67.775604
+v 23.464001 53.719688 65.549606
+v 22.665501 52.229488 69.574509
+v 26.081699 50.904087 69.865807
+v 25.678801 50.619888 71.153511
+v 21.766500 51.831688 71.466110
+v 9.041200 60.973286 88.878510
+v 8.058530 61.308685 89.186607
+v 10.414400 61.059383 88.887108
+v 7.546990 60.986286 88.893509
+v 19.206200 58.851284 88.526909
+v 19.721800 58.275486 88.444305
+v 16.498501 58.274185 88.831505
+v 14.084100 60.475483 88.445305
+v 15.852300 59.610485 88.520508
+v 14.462900 59.631184 88.216507
+v 13.315500 59.633083 87.844307
+v 13.511400 60.325386 87.868309
+v 15.141500 58.274185 88.935509
+v 13.784400 58.274185 88.948509
+v 11.070300 60.309284 88.120506
+v 12.238400 60.337284 87.823410
+v 12.135000 59.698185 87.895905
+v 12.427400 58.274185 89.004509
+v 10.822100 58.229183 89.215309
+v 13.784400 58.097183 89.203506
+v 11.070300 50.678284 87.846611
+v 12.343500 50.119385 87.929108
+v 11.456500 50.325886 86.146011
+v 9.868470 50.885986 86.103111
+v 10.595300 51.019485 84.644707
+v 20.457100 49.973190 80.467705
+v 17.040001 50.694588 81.223404
+v 18.509001 49.678783 83.247604
+v 18.226299 51.280590 77.914009
+v 15.310300 51.634888 79.215805
+v 13.372500 50.974785 82.239807
+v 14.721100 49.757385 84.583305
+v 10.051700 52.134789 81.638107
+v 9.713300 59.631184 88.590508
+v 8.356300 59.631184 88.821510
+v 8.919140 58.859684 89.084106
+v 9.547680 51.515385 88.776810
+v 6.486810 51.075985 87.774406
+v 8.293180 51.099785 86.805611
+v 7.555230 51.360786 85.799309
+v 4.684850 51.495983 86.278610
+v 0.519839 52.253685 85.108109
+v 1.176820 51.427883 86.899208
+v 4.987800 51.141483 87.633705
+v 3.145040 51.091984 87.953209
+v -1.584520 51.366783 88.064507
+v 4.563470 52.166485 84.602509
+v 4.412410 52.609985 82.994911
+v 1.495080 53.322388 81.471207
+v 11.183500 52.730988 78.686508
+v 13.018600 53.221287 76.178009
+v 10.167500 53.339088 77.499207
+v 5.389150 53.304089 80.456108
+v -1.142940 53.302185 82.588005
+v 19.096201 52.019989 74.757011
+v 16.498501 51.998787 77.329506
+v 16.720600 53.132587 71.644005
+v 11.898900 53.958988 73.215508
+v 9.580600 53.951889 75.459709
+v 17.546301 53.181889 70.602104
+v 18.918400 54.091587 67.638405
+v 15.141500 54.016190 69.526611
+v 14.121900 55.066589 67.535110
+v 9.069400 55.316189 69.398811
+v 11.980100 54.553288 69.947708
+v 6.157090 56.726887 67.263008
+v 4.626360 56.453190 68.445007
+v 7.642490 55.969189 68.462006
+v -1.948680 56.511189 70.374809
+v 5.683890 55.402290 72.049011
+v 1.929910 57.168587 67.321510
+v 9.255010 54.672390 72.874809
+v 7.029420 54.572887 74.913010
+v 4.285180 54.640587 75.802910
+v 3.977830 54.051289 78.085205
+v -1.040110 54.620388 77.587410
+v -1.438210 55.275490 74.365906
+v 37.644299 51.149490 60.678307
+v 33.345200 51.394287 63.830509
+v 36.962299 49.352688 64.625404
+v 37.818100 51.961487 58.551609
+v 40.083099 50.319489 59.594906
+v 38.252701 52.802593 55.189308
+v 32.795799 54.625793 57.286907
+v 36.278301 53.500893 56.156307
+v 34.479198 53.236790 59.009609
+v 21.177900 55.617989 61.655506
+v 27.006800 55.931694 57.774609
+v 21.926600 57.451191 56.634808
+v 27.335400 53.925488 61.828709
+v 28.858999 51.727489 65.905609
+v 30.238400 53.853287 60.775909
+v 30.158800 50.277790 67.875305
+v 31.472500 52.008888 63.915508
+v 27.185101 52.806789 64.575005
+v 31.555500 54.341488 59.019108
+v 29.964701 55.670094 56.915409
+v 24.488300 54.768490 61.730808
+v 44.996201 48.408791 53.242207
+v 39.939602 52.626991 50.919506
+v 43.803699 48.516193 57.276207
+v 39.860100 51.834991 55.169109
+v 37.114498 54.407391 49.853706
+v 36.043999 54.622890 51.709209
+v 39.434399 53.315193 47.035606
+v 37.679001 54.345291 45.888409
+v 38.586700 53.967392 45.196407
+v 44.437401 49.544792 49.039909
+v 41.370499 51.889492 48.106007
+v 41.309299 52.202793 47.182606
+v 40.991199 53.237091 45.715908
+v 30.970200 56.036694 55.139309
+v 28.147800 56.794392 54.651508
+v 32.820301 56.165291 51.327507
+v 30.429399 56.901093 52.174908
+v 23.372101 58.893391 50.943012
+v 24.579700 57.909294 54.000107
+v 25.307899 58.575993 50.217712
+v 26.958000 57.805691 51.759609
+v 30.644300 57.157192 49.517509
+v 29.825600 57.346992 46.287506
+v 27.867701 57.917492 49.326008
+v 25.754999 58.670692 46.895512
+v 23.834299 59.024693 47.987511
+v 20.139999 59.222393 48.265411
+v 23.990499 58.828693 44.197613
+v 6.946070 61.465992 55.964111
+v 5.001110 62.486092 54.770512
+v 4.323600 61.478691 57.676411
+v 1.821330 62.621891 56.004711
+v 1.796590 61.469589 58.814213
+v 3.602380 62.927292 54.465912
+v -1.519560 62.711391 56.619713
+v 9.634330 61.537491 53.043213
+v 14.194400 60.319191 53.250713
+v 12.721900 61.654293 49.972111
+v 9.799180 62.017193 50.478611
+v 15.465700 61.155693 46.977711
+v 13.880300 61.705292 47.447811
+v 14.414200 61.192692 49.899113
+v 12.503800 61.951294 47.415211
+v 10.366700 62.138893 47.599312
+v 10.571500 60.407391 55.547810
+v 6.109300 62.992592 52.221512
+v 1.019830 63.381294 53.629810
+v 3.724140 63.839092 50.998611
+v 0.414577 64.199196 50.025513
+v 5.835910 63.668194 47.556812
+v 4.235540 64.125496 47.277912
+v 4.702180 63.935894 49.194210
+v 9.454730 62.313694 48.493912
+v 4.336170 63.941692 43.767311
+v 2.341070 64.389992 44.191311
+v -0.718869 64.578094 47.626911
+v 7.503120 62.865192 44.675911
+v 14.166500 56.221390 64.582611
+v 9.983880 57.006989 65.304810
+v 15.035400 57.537788 60.133408
+v 18.022900 56.618187 60.333809
+v 11.087700 57.274788 64.020111
+v 18.319500 58.662193 54.446510
+v 14.804900 59.020191 56.361912
+v 18.753901 57.240292 58.359108
+v 10.070700 58.126389 62.104607
+v 12.648800 58.428688 59.333107
+v 20.002701 54.573990 65.582710
+v 17.817499 55.575390 63.855309
+v 5.811830 58.190689 64.183510
+v 3.691480 58.221390 64.777008
+v -1.821470 58.088390 66.099907
+v 11.057700 59.316891 57.908112
+v 2.141580 59.322289 62.930111
+v 7.125870 59.353287 60.813511
+v 20.229799 59.126293 49.694813
+v 19.650700 58.504791 54.065506
+v 16.678801 59.325291 53.743011
+v 18.584700 59.389992 50.220810
+v 22.470600 58.613091 53.005810
+v 17.823799 59.977993 48.186512
+v 21.100401 58.967991 42.676212
+v 20.240200 59.237991 46.217213
+v 45.467201 50.596893 44.368607
+v 42.796902 52.299892 44.645607
+v 43.524300 51.485092 43.225708
+v 23.120399 81.197098 10.215613
+v 24.371300 82.911903 7.550623
+v 22.937300 83.038002 8.316613
+v 27.363100 81.679901 5.358693
+v 27.574200 84.031898 3.213763
+v 26.073700 82.484901 6.322933
+v 24.316500 85.734200 4.570114
+v 26.538401 85.337502 3.085924
+v 27.054701 87.080803 0.619575
+v 21.672501 85.832199 5.367844
+v 22.596100 87.470200 2.915004
+v 24.537701 87.565598 1.872144
+v 22.279100 83.991600 7.470114
+v 25.661200 84.067001 5.304504
+v 23.066401 73.329201 19.530712
+v 21.942400 73.811302 19.875811
+v 22.033501 72.090302 21.450312
+v 26.208200 73.419998 14.480513
+v 25.703501 76.609596 11.832413
+v 25.270800 74.193901 15.525613
+v 26.108400 81.072403 7.427844
+v 24.560801 81.410301 8.825533
+v 24.485901 80.176804 10.011913
+v 25.820299 80.069397 8.579453
+v 25.417900 78.787102 10.150812
+v 24.721600 77.599197 12.373412
+v 22.605101 78.592400 13.572712
+v 23.694300 78.161499 13.047712
+v 27.438499 79.030899 6.994463
+v 26.317801 77.638100 9.730352
+v 27.415701 77.630798 7.895513
+v 28.779301 80.278702 4.183563
+v 31.425800 79.986298 0.117612
+v 29.970699 81.371399 1.856943
+v 30.068800 78.629303 2.909313
+v 28.711800 82.700302 2.801414
+v 28.724800 78.003998 5.400353
+v 28.347900 75.750900 7.254033
+v 26.769400 75.979500 10.257612
+v 27.962500 74.030998 9.157272
+v 27.490601 70.826202 13.898611
+v 29.146500 73.151703 6.874152
+v 28.903601 71.780197 8.405361
+v 29.430799 75.915298 5.067612
+v 30.134800 74.558197 4.209362
+v 31.349600 74.692596 1.599852
+v 30.891701 75.915298 2.353512
+v 30.068800 76.432297 3.710512
+v 16.496599 86.094398 2.535784
+v 18.276400 85.581497 4.809464
+v 18.443800 87.727699 1.347604
+v 19.592400 83.223701 8.677073
+v 19.746901 86.729401 3.799934
+v 18.534000 83.608299 7.781614
+v 21.248100 83.313202 8.545963
+v 17.543800 83.888496 6.728674
+v 17.537600 82.425201 9.062063
+v 16.283701 84.312103 4.832914
+v 16.490299 82.307297 8.186463
+v 15.561500 82.583900 6.356793
+v 14.880600 84.553802 2.743364
+v 13.897900 81.119003 5.471553
+v 19.740499 78.287003 15.419012
+v 18.873301 80.840302 12.031914
+v 17.855499 78.857101 14.761812
+v 20.582199 74.951698 19.318512
+v 21.077801 79.971703 12.780613
+v 20.230400 81.835297 10.603713
+v 21.924299 78.184097 14.564412
+v 16.782301 80.137497 12.429113
+v 17.508699 79.996201 12.994014
+v 15.525300 76.834602 17.005613
+v 15.517000 78.607903 14.094313
+v 14.128100 75.873001 17.364412
+v 13.842300 77.116402 14.872513
+v 16.390499 74.755997 19.950512
+v 18.770300 74.041901 20.864611
+v 18.403299 76.757698 17.701313
+v 19.325800 71.793297 22.800512
+v 20.566500 71.729897 22.474812
+v 20.535000 73.117798 21.276512
+v 16.734900 76.906097 17.422613
+v 15.216400 74.925400 19.402712
+v 16.820299 72.888802 21.967911
+v 14.632600 71.399002 22.877712
+v 13.461400 71.348198 22.363211
+v 13.821500 74.326202 19.282911
+v 12.287800 74.055901 18.096212
+v 11.373800 74.432602 15.814813
+v 13.403000 77.389198 13.448012
+v 12.473200 76.680603 12.918813
+v 10.441700 74.558197 12.308812
+v 10.073000 72.416603 16.941111
+v 11.298200 72.327003 19.208111
+v 9.665050 70.648903 18.986811
+v 21.926600 80.818802 11.359814
+v 15.929000 80.230499 11.502913
+v 13.833000 79.808601 7.887463
+v 13.275500 78.384102 10.232713
+v 15.316700 80.930702 9.095863
+v 12.734400 83.039703 1.056713
+v 11.741600 80.961899 1.551413
+v 11.641700 77.841400 5.230383
+v 11.079100 76.598297 6.112282
+v 10.259900 77.999603 1.704993
+v 10.419000 75.215599 8.747052
+v 23.230499 63.776295 25.002609
+v 23.331900 65.601990 24.213911
+v 21.978001 64.957489 26.068012
+v 21.926399 63.699795 26.781710
+v 22.336800 62.345295 26.780109
+v 40.824902 53.406094 44.954807
+v 38.368401 53.829193 43.794308
+v 41.836601 52.594891 43.800308
+v 42.131001 51.456192 42.362709
+v 40.882599 52.622391 43.127907
+v 43.012501 50.131191 41.707409
+v 43.700100 50.055691 41.780609
+v 42.282101 48.774193 41.041908
+v 40.318298 51.099194 41.649208
+v 39.067402 52.629292 42.329906
+v 37.522202 51.832794 41.341408
+v 39.568001 50.131191 41.077007
+v 37.053398 49.923992 40.391907
+v 33.816002 55.786991 43.707706
+v 34.004299 55.985794 45.470409
+v 35.845501 54.858994 43.306808
+v 31.503401 55.394192 41.450706
+v 33.883801 55.461094 42.855209
+v 35.534500 54.455692 42.419708
+v 33.431999 54.149693 41.204407
+v 35.933701 53.194592 41.561306
+v 34.603298 51.214191 40.032108
+v 33.056702 52.878693 40.182308
+v 33.547401 50.317291 39.237507
+v 31.808901 51.658394 38.947308
+v 29.729500 57.204792 44.675907
+v 28.493999 57.262291 42.868408
+v 29.248800 56.542393 41.830009
+v 25.328400 58.457691 43.493809
+v 22.443501 58.624393 41.359810
+v 23.624800 57.981792 39.997906
+v 26.564100 57.593891 41.674908
+v 25.065201 57.035694 39.300606
+v 23.411800 56.632393 37.440006
+v 27.909100 55.752491 39.634109
+v 24.703800 55.256992 36.901806
+v 21.052200 58.487392 38.136009
+v 21.633301 58.579792 39.654011
+v 22.923201 57.639992 38.550007
+v 22.462500 56.978291 36.876606
+v 23.453100 55.250092 35.714008
+v 22.385000 56.391094 35.449306
+v 27.072201 54.147991 37.620106
+v 28.926100 54.352093 38.939610
+v 27.847900 52.760292 37.294609
+v 30.677299 53.020893 39.029507
+v 29.030899 51.442894 37.439907
+v 28.403700 49.791893 36.551308
+v 30.570900 50.108692 37.825108
+v 27.198799 50.985493 36.166908
+v 25.101101 54.409393 36.500206
+v 25.972000 52.974293 36.198009
+v 24.589600 53.049896 35.014008
+v 23.311899 54.445896 34.273006
+v 25.997700 51.488293 35.506706
+v 25.336201 51.488297 34.922306
+v 25.997400 50.046097 34.933907
+v 22.650000 55.496296 33.504910
+v 21.297300 57.808895 34.043007
+v 22.297600 56.302696 31.788109
+v 21.594000 57.999195 32.416809
+v 21.864201 58.579098 29.848709
+v 22.138000 57.262997 29.714109
+v 22.334299 55.970898 30.239010
+v 21.866400 60.472694 28.371609
+v 22.610001 59.631195 26.780109
+v 22.547701 60.988297 26.780109
+v 22.198299 58.274197 28.137110
+v 23.283600 59.631195 25.293810
+v 23.827999 58.952698 24.066010
+v 24.230499 61.082596 23.691309
+v 22.480900 57.577496 26.938110
+v 22.202299 56.387794 28.267710
+v 23.092199 58.116398 25.409010
+v 23.263399 54.586296 23.967609
+v 22.700600 54.385597 25.373709
+v 22.385401 55.559296 26.780109
+v 23.001600 53.501198 31.856310
+v 24.412901 51.901398 34.035107
+v 23.540800 52.182297 32.481709
+v 22.590300 53.524197 29.494209
+v 24.641500 50.422096 33.563107
+v 22.602301 52.845295 26.780109
+v 22.544300 52.845295 28.137110
+v 22.908899 51.488297 28.137108
+v 23.283600 50.131195 29.335707
+v 23.341101 49.612198 28.069508
+v 23.628099 51.488297 24.066008
+v 23.290800 52.870197 24.067509
+v 22.884001 52.740997 25.374809
+v 23.644600 50.131195 25.423107
+v 15.309300 61.258892 43.357811
+v 13.603200 61.591591 42.442112
+v 10.756400 61.888393 43.440411
+v 14.806700 61.325291 41.329411
+v 16.498501 60.813194 40.689613
+v 15.650100 61.111294 37.984913
+v 11.284700 61.247093 40.155712
+v 16.268000 61.427795 34.976612
+v 17.018000 60.883793 36.831612
+v 17.680700 60.890892 35.184410
+v 14.407000 61.181293 38.175110
+v 13.889600 61.081692 36.913212
+v 15.552100 61.262691 35.879810
+v 14.162700 61.384392 35.164310
+v 9.207540 62.218193 43.802113
+v 9.812240 61.771893 41.864311
+v 7.610730 62.128494 40.890812
+v 4.067840 63.774693 42.323410
+v 6.506260 62.063091 39.797611
+v 0.238707 64.678291 43.399311
+v 0.247087 64.261192 41.937611
+v 3.632460 63.375092 40.978912
+v 8.805220 61.357391 39.335510
+v 9.857610 60.666393 37.412212
+v 8.360420 60.675991 37.558010
+v 4.820820 61.921391 38.765812
+v 1.449320 63.094791 39.950512
+v 6.942890 60.277691 36.680813
+v 2.041860 61.907593 38.413010
+v 20.579000 69.208389 24.332312
+v 19.243999 68.850990 25.130812
+v 17.853701 70.690193 23.899412
+v 17.854601 68.861992 25.485111
+v 17.478100 66.938194 27.391811
+v 19.395100 65.590591 27.744211
+v 19.210199 67.746193 26.056311
+v 21.981400 67.834389 24.384712
+v 20.544701 67.745789 25.423311
+v 21.871401 66.430695 25.347912
+v 12.801100 67.566994 26.044111
+v 14.668500 69.623993 24.689611
+v 16.925100 69.777191 24.736311
+v 15.979200 69.548294 24.959612
+v 16.185301 65.277992 29.186211
+v 14.802200 66.988594 27.428112
+v 13.289300 64.694794 29.404112
+v 11.005000 66.178589 25.897312
+v 11.177400 68.152191 24.122812
+v 18.002300 61.619495 33.192112
+v 15.861900 62.155598 33.449711
+v 18.950100 60.435196 34.288212
+v 19.197100 62.149998 31.032009
+v 18.195000 62.748096 31.261410
+v 16.976101 62.671597 32.129711
+v 20.564199 62.212097 29.353409
+v 18.816000 63.645195 29.781910
+v 20.245199 59.538296 33.491611
+v 20.464701 61.078896 30.617710
+v 16.426300 64.033890 30.462210
+v 14.819600 64.884796 29.573511
+v 14.839600 63.578197 31.210110
+v 14.083400 62.179695 33.313412
+v 12.724600 62.482895 32.180710
+v 12.347200 61.484695 33.851711
+v 11.065800 62.236298 31.290710
+v 11.663600 63.686195 29.674610
+v 20.581900 63.755196 28.206709
+v 20.823099 64.901390 27.266811
+v 20.505501 66.368889 26.470011
+v 21.427799 62.345295 28.137110
+v 21.926600 62.345295 27.429010
+v 21.274401 60.563198 29.592810
+v 12.299600 65.766396 27.625811
+v 11.065700 65.368889 26.887911
+v 9.291200 61.418297 30.093510
+v 9.384340 60.509396 32.246712
+v 9.625700 62.875195 27.957209
+v 10.282800 63.168198 28.749710
+v 10.692900 65.059296 26.780111
+v 9.715660 64.874893 25.287811
+v 9.730270 66.439789 23.892212
+v 8.341510 60.778896 28.424509
+v 9.214330 63.115696 26.424509
+v 8.197080 61.641796 24.816710
+v 19.528000 59.455891 42.767612
+v 18.531601 59.974792 40.248413
+v 19.712700 59.370193 39.322311
+v 20.781601 58.234291 36.135708
+v 18.211201 60.338993 36.752113
+v 19.539000 59.392593 36.929611
+v 11.328900 60.698193 36.137413
+v 8.559230 59.948994 35.595413
+v 7.002660 58.935696 34.560410
+v 5.377220 58.998493 35.174412
+v 9.287340 60.036095 35.025913
+v 2.508080 57.827095 34.544308
+v 0.841113 59.441193 36.235210
+v 1.321600 60.903893 37.385612
+v 0.635818 55.737698 33.255608
+v 9.874390 60.284695 34.111610
+v 12.021100 61.017197 34.899811
+v 10.696200 60.953598 33.312912
+v 8.627030 59.518497 33.729912
+v 7.713440 59.027496 31.748009
+v 6.489920 58.132095 33.418808
+v 5.027370 57.608597 33.692307
+v 7.011650 58.279896 32.560909
+v 5.459260 56.678596 31.624809
+v 6.270900 57.398697 30.358110
+v 4.313790 54.941795 29.179909
+v 4.115700 55.572395 31.181210
+v 6.514540 57.646194 28.651209
+v 7.641150 59.744396 27.479910
+v 6.250700 56.854397 24.500010
+v 7.340730 59.498295 23.965710
+v 4.866970 54.996098 27.308809
+v 5.503850 55.467495 24.529409
+v 2.195980 54.424397 31.086309
+v 2.766310 55.583195 32.176308
+v 2.773990 53.989098 29.946409
+v -0.474401 51.285397 29.721107
+v 4.469270 54.086597 24.484110
+v 2.762050 52.382195 26.281507
+v 1.976700 51.412197 25.103308
+v 1.955560 52.527596 28.612507
+v 1.222200 51.042698 26.639307
+v -0.146491 49.276596 25.781008
+v -1.266420 49.466595 27.453907
+v 2.871470 52.615097 23.154108
+v 0.669876 49.926895 23.803507
+v 0.820271 50.000397 25.026707
+v 21.926600 69.130196 23.623312
+v 23.208300 69.074997 22.630011
+v 21.932301 70.489899 22.711512
+v 24.513201 68.991302 21.205311
+v 23.435200 70.617104 21.469711
+v 25.647499 68.297798 19.875111
+v 24.654900 70.601898 20.047012
+v 25.861900 69.786400 18.635212
+v 23.590099 71.912003 20.365112
+v 23.408899 67.762100 23.115011
+v 24.714199 66.541199 22.067511
+v 23.159800 66.401596 24.051811
+v 26.929600 68.451698 17.280910
+v 27.104500 65.470596 18.475512
+v 25.669100 65.061302 21.068512
+v 27.308901 69.130203 15.923812
+v 28.231600 67.773300 14.566812
+v 28.674500 67.773300 13.209811
+v 28.388599 65.282501 15.800211
+v 26.320200 71.182098 16.639111
+v 28.088200 62.345295 17.280909
+v 26.121599 62.345295 20.673410
+v 27.354700 60.988297 18.656509
+v 25.649200 63.702297 21.352009
+v 27.511499 63.803696 18.212109
+v 26.111200 60.988297 20.673410
+v 24.380800 62.345295 23.475210
+v 29.355801 65.059303 13.209810
+v 28.601000 66.416298 14.566811
+v 28.599899 63.702297 15.923811
+v 29.579399 62.345295 13.888310
+v 33.256100 61.327301 1.675010
+v 32.721298 63.086399 1.058060
+v 32.557301 62.345299 3.710510
+v 29.444201 70.487198 7.781611
+v 29.656799 68.112503 9.205261
+v 30.306000 69.218803 5.778421
+v 29.825199 71.577202 5.993611
+v 30.870100 69.660698 3.775601
+v 31.229099 70.487198 2.353511
+v 31.152500 72.522797 2.353512
+v 31.138100 67.773300 3.710511
+v 31.507500 67.683502 1.785461
+v 31.390100 69.221001 1.848211
+v 31.593300 66.384499 2.723461
+v 30.887100 63.702301 9.138710
+v 31.043100 64.380798 7.781610
+v 30.849701 66.416298 6.085361
+v 32.084599 62.345299 5.746110
+v 31.918501 60.988300 7.781610
+v 31.833300 59.631199 9.138709
+v 31.717300 65.059303 3.710510
+v 31.969101 65.059303 2.353510
+v 32.481701 60.988300 5.746110
+v 26.137501 59.631195 20.518110
+v 24.660601 59.308197 22.741110
+v 25.390699 57.595795 21.352009
+v 27.355700 59.631195 18.637909
+v 27.354700 58.274197 18.652609
+v 25.915400 55.566998 20.487009
+v 26.397800 57.579697 19.973009
+v 27.312201 56.277996 18.824310
+v 28.138800 60.309795 17.280909
+v 28.409300 57.667698 17.089909
+v 28.776699 60.309795 16.055210
+v 29.558800 57.221596 15.245310
+v 29.669300 60.309795 14.278609
+v 30.519100 57.595795 13.416809
+v 29.751801 54.237698 15.874708
+v 24.330299 54.163795 22.263809
+v 24.145399 55.559296 22.709009
+v 24.152000 52.390396 22.769108
+v 24.972401 52.756996 21.612909
+v 27.757500 53.461494 18.603510
+v 25.785101 53.590496 20.622810
+v 25.802099 50.067898 21.018808
+v 24.821699 49.352196 22.710308
+v 24.054199 50.131195 24.066008
+v 26.835800 50.384895 19.720007
+v 30.071301 52.357296 15.769809
+v 28.788300 52.854797 17.414110
+v 28.701900 51.271797 17.545307
+v 30.013399 50.131195 15.854609
+v 29.918100 48.774696 15.900308
+v 30.969700 51.488297 14.566809
+v 31.362000 52.571995 13.787309
+v 33.537300 56.238201 5.746109
+v 32.717800 59.631199 6.160610
+v 32.689899 57.716999 7.881460
+v 33.903900 58.274200 2.353509
+v 33.694000 52.845299 7.781609
+v 32.782902 55.624802 9.185360
+v 33.497200 51.702999 9.229439
+v 32.649700 54.203201 10.495708
+v 32.445202 52.166798 11.852709
+v 33.377499 50.131199 10.495708
+v 32.877701 49.486897 11.761408
+v 30.852100 59.631195 11.852710
+v 30.386600 61.666798 12.040911
+v 30.942600 61.666801 10.495710
+v 32.344501 57.595798 9.138709
+v 32.017799 56.917198 10.495709
+v 31.080000 55.559296 13.209808
+v 31.746300 55.559296 11.852709
+v 32.065399 54.203197 11.852709
+v 32.109299 49.201195 13.068308
+v 20.569599 70.487198 23.401711
+v 12.184800 70.553001 22.285812
+v 9.730640 67.749001 22.682512
+v 9.726700 69.440598 20.749811
+v 8.629190 67.770401 20.831112
+v 8.988500 66.416298 22.709011
+v 8.117620 66.635399 20.876812
+v 8.657550 68.888397 19.473812
+v 7.721200 67.773300 18.637911
+v 7.057800 66.416298 18.463612
+v 8.445890 70.016403 17.238211
+v 8.312370 71.109901 14.697811
+v 7.265860 69.225800 15.013412
+v 7.229300 67.773300 17.280910
+v 6.729150 67.832001 15.584512
+v 9.188200 65.059296 24.066011
+v 8.656220 64.370995 23.508810
+v 7.249190 65.005699 20.202511
+v 7.838600 62.469696 22.805309
+v 6.593400 62.345295 19.994909
+v 5.495260 62.072697 17.928410
+v 5.833970 60.157497 19.410910
+v 5.908200 63.582596 17.959410
+v 5.872610 65.059303 16.662212
+v 4.519850 63.336494 15.098810
+v 4.357540 64.864403 12.591611
+v 4.598790 61.034096 16.896809
+v 8.502260 71.902603 13.175812
+v 6.557850 69.368301 11.465611
+v 8.807290 73.798599 5.001702
+v 7.209060 72.605698 1.673032
+v 5.695990 70.166397 2.268682
+v 4.511560 67.351997 7.196241
+v 6.022200 69.554497 6.763862
+v 2.260850 62.903301 10.671910
+v 4.258580 65.895798 10.349911
+v 1.464140 63.360401 7.757901
+v 2.691990 61.527496 13.289110
+v 1.009150 60.896400 11.025109
+v -0.766831 60.264999 8.629780
+v 2.208000 65.953697 2.014261
+v 1.807250 64.625198 5.324621
+v 6.008650 57.329098 22.302910
+v 6.105850 59.399895 20.307709
+v 5.293740 59.037796 19.089710
+v 4.491420 54.926296 21.960810
+v 4.650490 56.434296 20.240410
+v 2.495320 58.952698 15.046109
+v 1.715760 57.654495 14.903609
+v 0.214082 55.538795 14.550709
+v 2.846000 56.448795 17.470209
+v 0.445232 57.595795 13.281509
+v 2.729460 54.040794 19.894609
+v 0.769858 51.826496 19.013908
+v 0.404566 52.204597 17.671808
+v -0.361911 51.339497 17.604307
+v -0.631155 50.879997 18.863607
+v 0.584351 59.442497 11.972710
+v 59.829201 48.511986 88.028008
+v 60.853199 47.834785 89.137405
+v 59.718498 47.413185 87.957611
+v 61.030701 46.251083 89.079010
+v 58.757999 49.586884 87.781807
+v 57.942299 48.859985 87.032005
+v 57.387798 49.533184 87.119911
+v 58.566502 47.416584 87.383804
+v 56.931599 47.463284 86.888107
+v 55.173901 49.927185 87.846611
+v 53.836800 49.915184 87.839508
+v 55.852402 48.774185 86.652809
+v 54.504700 48.866886 86.478508
+v 53.104301 47.415585 86.298004
+v 57.208900 46.059284 87.312309
+v 59.935699 45.703983 88.556511
+v 58.566502 44.024685 88.499504
+v 55.852402 46.060184 86.981110
+v 53.575100 46.153084 86.601807
+v 55.852402 44.703186 87.483109
+v 54.495399 44.703186 87.282608
+v 57.209499 43.346283 88.239510
+v 52.675999 49.594883 88.560104
+v 53.104401 50.031384 87.131111
+v 53.062401 49.491283 86.517006
+v 51.545101 48.794285 86.227409
+v 49.377701 48.729385 86.469406
+v 53.138500 48.774185 86.302307
+v 51.781300 47.417183 86.173210
+v 50.424301 47.417183 86.235909
+v 49.882999 46.218086 86.623009
+v 51.787300 46.154484 86.528305
+v 51.781300 44.703186 87.140305
+v 50.424301 44.703186 87.225311
+v 49.067299 44.703186 87.441811
+v 47.710201 48.774185 86.830208
+v 48.138802 47.400585 86.605309
+v 46.353199 47.417183 87.203308
+v 46.353199 48.774185 87.238304
+v 45.291901 50.350685 88.448410
+v 44.268299 49.003685 88.463806
+v 45.221100 49.164383 87.785110
+v 45.018002 47.423485 87.881508
+v 47.710201 46.060184 87.157906
+v 47.593102 44.718384 87.828606
+v 46.134899 45.988083 87.753006
+v 44.996201 46.060184 88.428505
+v 46.353199 44.703186 88.367508
+v 49.098000 40.711685 88.934708
+v 51.781300 41.989285 88.100510
+v 53.138401 40.632286 88.642509
+v 54.495399 41.989285 88.251511
+v 47.710201 41.989285 88.906509
+v 46.291000 43.142586 89.148911
+v 45.167599 42.017990 69.235405
+v 43.322102 43.551788 68.661507
+v 43.679401 42.506790 70.327507
+v 46.312199 40.929287 69.805008
+v 43.700100 40.765388 75.129509
+v 45.772400 39.279087 75.290405
+v 56.000301 31.295786 79.727310
+v 54.466900 32.231888 79.682709
+v 54.837299 31.568386 80.308411
+v 54.671001 32.124287 78.601707
+v 55.862202 29.821686 80.449211
+v 54.493301 30.280987 81.081604
+v 54.495399 28.419287 81.670509
+v 56.606602 29.794287 79.705605
+v 56.782299 29.776186 78.347305
+v 55.965099 31.177986 78.345711
+v 55.819302 26.904186 81.093010
+v 55.404701 28.418488 81.062004
+v 49.067299 36.561283 88.347511
+v 49.067299 37.918285 89.023506
+v 49.430099 35.204285 87.846611
+v 49.067299 35.913284 87.846611
+v 49.067299 35.204285 87.220009
+v 49.967499 33.847183 87.846611
+v 49.444500 33.966686 86.505608
+v 47.710201 37.918285 88.564507
+v 46.262402 37.922485 87.881210
+v 46.353199 38.795185 89.203506
+v 47.710201 37.361286 87.846611
+v 46.353199 37.417183 86.489510
+v 47.731998 36.562386 86.480011
+v 44.996201 38.268185 87.846611
+v 44.996201 38.739285 89.203506
+v 44.652000 38.160984 86.766708
+v 46.780998 36.768185 84.737610
+v 45.674801 37.500484 85.113205
+v 48.719601 35.204285 86.489510
+v 49.089600 34.562485 85.132111
+v 47.784000 35.899986 85.127609
+v 47.609699 36.024986 84.159904
+v 48.508598 35.457584 83.464706
+v 51.689201 33.151287 81.208710
+v 50.344601 34.979088 80.634811
+v 49.988098 34.327583 83.240005
+v 44.414299 38.584888 81.517708
+v 42.513599 39.156586 83.858406
+v 44.754902 38.061684 82.933205
+v 50.717899 31.458385 87.867310
+v 50.189201 32.490185 86.489510
+v 51.152901 31.133184 89.203506
+v 50.663200 31.271086 86.609711
+v 50.905602 31.334486 85.116211
+v 49.815201 33.637585 84.999809
+v 50.958302 29.776184 87.846611
+v 51.208302 29.776384 89.203606
+v 51.077801 29.776186 86.489510
+v 51.180500 28.419285 87.846611
+v 51.698898 27.949886 86.333206
+v 51.781300 28.892286 85.132507
+v 52.149601 31.235687 82.469505
+v 53.134201 31.417387 81.357307
+v 52.564602 32.578987 80.783104
+v 51.766300 30.512787 83.698708
+v 50.882900 32.741585 83.483009
+v 52.054298 33.255089 79.831505
+v 52.382500 33.098289 78.792305
+v 53.112000 29.580086 82.405106
+v 54.394901 27.013086 82.301208
+v 55.829800 29.707386 77.162506
+v 56.438999 28.476587 76.634506
+v 57.309101 28.358788 78.348709
+v 57.409698 27.558289 71.422005
+v 55.570801 30.859589 69.127106
+v 56.028198 29.177088 72.846405
+v 57.994099 27.507589 67.109406
+v 56.380402 30.009489 67.842705
+v 58.562099 25.957588 70.495407
+v 50.272499 34.952190 76.685608
+v 48.937199 35.846989 77.856010
+v 50.435902 34.994087 79.447708
+v 52.192200 33.041988 75.288307
+v 52.176300 33.007290 77.155807
+v 51.035301 34.739887 73.832809
+v 50.530300 36.670990 70.629906
+v 48.042702 38.067890 73.379005
+v 49.068100 36.223087 75.336510
+v 48.650799 39.770489 67.791504
+v 51.225399 37.193287 67.297310
+v 53.896099 32.139690 71.759811
+v 53.589699 33.847187 68.508911
+v 53.246899 35.096489 66.040810
+v 54.116901 31.488386 77.514809
+v 53.278301 32.406990 78.099007
+v 53.499901 31.399387 76.686409
+v 54.754700 29.711088 75.304611
+v 43.104698 47.127487 62.295109
+v 46.279701 43.579090 64.818611
+v 43.805199 47.331688 60.710209
+v 43.639099 45.511189 64.777008
+v 47.703098 43.034389 63.104408
+v 47.832500 44.005489 59.551308
+v 45.765400 46.549694 58.216106
+v 47.774899 45.004391 56.889206
+v 48.391201 41.739689 64.620804
+v 50.622101 40.297787 61.808506
+v 50.540699 41.432690 58.856407
+v 44.905300 43.561890 66.755104
+v 46.772202 41.551987 67.785408
+v 50.427299 43.034294 54.540806
+v 52.814201 39.456593 57.466908
+v 52.433498 40.893593 55.108208
+v 47.094799 46.710491 53.207008
+v 52.565601 42.052193 49.678009
+v 47.902500 46.607292 49.572109
+v 48.946098 45.259693 51.327408
+v 50.082802 45.117092 48.113007
+v 52.025101 43.022591 48.293507
+v 50.482201 46.032593 46.402809
+v 49.192799 47.360394 46.282608
+v 48.877899 46.664791 47.548008
+v 51.253399 44.767292 46.656307
+v 52.318802 44.209393 45.802307
+v 46.283401 47.658894 50.886307
+v 47.005001 48.001293 48.052307
+v 47.554401 48.993793 45.524708
+v 54.020699 40.157993 52.397308
+v 55.526402 38.534492 52.311008
+v 54.550900 40.721992 46.940407
+v 52.847401 42.923294 46.468407
+v 56.356800 38.157692 50.140408
+v 56.946701 29.991291 64.220306
+v 54.795200 34.059990 63.127304
+v 54.866600 32.875488 65.891411
+v 56.523899 32.150787 60.536304
+v 57.580200 30.284790 60.366703
+v 59.009701 27.643690 59.964405
+v 57.498100 31.710291 57.991802
+v 58.758598 29.267290 57.843002
+v 58.566502 30.892290 56.382805
+v 51.993599 37.490387 64.534004
+v 51.016998 38.850590 64.225708
+v 54.674099 36.562992 58.143806
+v 53.408600 37.716988 59.513809
+v 56.989700 36.382793 52.922207
+v 56.692299 34.100792 56.914906
+v 58.757000 33.463692 53.237305
+v 59.592300 34.154392 49.914204
+v 61.391201 34.326794 44.441505
+v 59.891499 36.450394 44.281307
+v 59.662102 35.994591 46.666206
+v 57.447701 37.681591 48.157608
+v 58.174801 36.330692 49.488506
+v 58.801300 37.479191 45.271507
+v 60.998501 28.502691 53.242203
+v 59.639000 31.133190 53.920704
+v 59.923500 29.332790 54.897602
+v 60.834599 29.776192 52.563705
+v 60.354099 31.444792 51.885204
+v 62.260300 28.419292 50.452003
+v 59.580601 28.419291 56.634804
+v 61.556099 33.290592 46.481804
+v 62.495998 31.465893 46.653404
+v 61.960800 29.776192 49.849606
+v 63.288200 29.169592 47.207405
+v 64.118896 28.705492 44.904903
+v 63.178001 31.081692 44.766804
+v 63.748402 27.062292 47.814102
+v 65.826202 12.134286 85.132500
+v 65.786697 12.134287 83.775497
+v 65.351700 13.023287 83.775497
+v 65.295898 13.456386 85.166199
+v 65.730202 10.683887 83.760101
+v 65.351097 11.999587 82.481697
+v 55.765900 20.913687 86.557098
+v 56.435299 23.146986 82.478104
+v 54.057400 24.272886 86.076607
+v 54.490398 26.320887 82.602310
+v 55.952801 25.528887 81.452011
+v 57.613602 27.064787 78.353004
+v 57.206600 26.475887 79.699509
+v 57.534100 24.058086 80.037704
+v 53.993999 25.246586 84.734207
+v 57.348801 22.673687 81.053001
+v 56.698502 24.348288 81.061409
+v 58.466801 23.622087 78.424706
+v 57.963699 25.705286 78.347305
+v 58.000500 22.991287 79.704399
+v 54.495399 21.634285 88.066498
+v 56.888699 19.933187 85.039597
+v 57.218700 21.476587 82.408501
+v 56.894600 16.731285 87.846603
+v 57.201698 17.539686 86.489502
+v 56.669800 18.920187 86.489502
+v 60.893799 17.563187 78.347298
+v 60.200298 18.964787 78.333900
+v 59.372799 18.690586 79.892403
+v 59.926498 17.607388 79.845703
+v 58.384399 19.757286 81.061401
+v 58.864399 20.277287 79.704399
+v 57.873699 18.156887 83.989601
+v 58.478901 17.946186 82.487701
+v 59.139500 15.551287 83.269402
+v 51.924801 25.971186 88.085907
+v 52.910999 27.841286 83.657005
+v 52.899700 26.057686 85.932709
+v 53.190201 24.648687 87.197205
+v 53.900002 25.072987 85.839607
+v 60.504002 23.018389 72.910103
+v 59.701900 24.419189 72.907806
+v 60.166401 23.026989 74.237503
+v 57.209202 27.596586 77.002510
+v 57.792599 26.450087 77.133705
+v 57.956299 25.904087 76.127808
+v 56.534500 27.867889 75.388908
+v 58.047901 26.535488 73.258507
+v 57.839901 26.245388 74.837807
+v 58.570801 24.381786 77.190910
+v 58.774399 24.582788 75.319908
+v 59.145599 22.991287 76.990303
+v 60.384201 22.312788 65.625198
+v 59.856998 24.008688 65.794708
+v 59.838200 23.305988 69.265701
+v 59.020199 26.107489 65.148209
+v 59.194099 24.812189 70.253807
+v 59.844398 23.295988 70.617996
+v 60.975300 21.497589 74.318901
+v 59.813900 22.507689 75.723602
+v 60.452400 20.361887 76.734100
+v 61.775902 18.241789 74.276199
+v 61.412601 18.922289 75.679802
+v 61.786201 17.563189 75.633301
+v 61.882099 16.884689 72.919197
+v 61.554699 18.920189 72.919197
+v 59.166302 21.614388 78.338600
+v 60.611099 21.634289 71.562202
+v 61.148800 18.297689 70.205101
+v 60.280899 21.634289 70.205101
+v 60.923599 20.277288 71.562202
+v 61.380001 18.051189 71.562202
+v 60.473499 20.955688 68.848099
+v 64.747803 13.492186 86.489502
+v 63.968201 13.525186 86.503799
+v 63.994598 13.492186 87.448700
+v 63.994598 13.418285 87.846603
+v 62.637600 13.119286 87.846603
+v 64.663200 12.134286 87.846603
+v 62.637600 13.153286 86.489502
+v 61.280602 12.482185 87.846603
+v 61.004799 12.134986 89.186996
+v 59.947498 12.100785 88.130203
+v 61.208900 12.618586 87.092201
+v 60.561401 12.613186 86.963699
+v 59.643200 12.862185 86.905502
+v 63.964298 13.745987 84.348701
+v 65.407501 12.244785 86.449799
+v 62.740299 13.501986 85.260201
+v 63.159599 13.881686 84.143402
+v 61.585602 13.312185 85.354698
+v 60.741001 14.178487 83.434799
+v 59.887299 14.180687 84.082298
+v 58.975399 13.614386 86.578796
+v 58.541599 15.338885 85.140297
+v 61.269798 16.196487 79.625397
+v 59.844898 15.960287 81.575500
+v 60.583599 15.036886 82.076797
+v 63.106998 14.849187 79.704399
+v 62.637600 15.281187 79.704399
+v 62.637299 14.937387 81.377602
+v 62.815601 14.880387 78.434502
+v 61.920601 15.268086 81.001701
+v 63.220200 14.623887 81.218903
+v 63.735500 13.889687 82.910599
+v 64.140404 13.547486 81.842903
+v 64.433899 13.545187 83.168602
+v 64.678398 12.134287 81.061401
+v 63.958599 13.445586 79.893204
+v 63.421299 13.492188 78.347298
+v 63.694401 12.153888 78.280296
+v 64.603600 10.777286 87.846603
+v 64.463097 9.420216 87.846603
+v 64.420799 6.706226 86.489502
+v 65.099899 10.098785 86.376297
+v 65.332199 9.420216 85.028198
+v 64.362396 10.777287 79.704399
+v 65.466599 10.830987 82.373596
+v 64.915497 9.420217 81.061401
+v 63.837101 10.778687 78.365601
+v 64.353600 9.420217 79.704399
+v 64.519600 6.706227 81.061401
+v 61.280602 16.966187 78.347298
+v 62.111301 16.200289 75.612900
+v 62.637600 14.849188 77.441101
+v 61.848000 16.206186 78.347298
+v 62.688099 12.493188 74.276199
+v 62.709099 13.494787 75.655899
+v 62.918800 12.134288 75.633301
+v 61.904400 15.696388 71.658401
+v 62.314400 14.170689 72.919197
+v 61.885101 15.527788 70.205101
+v 62.003101 15.527788 67.830399
+v 61.193298 18.241789 68.848099
+v 62.520500 12.850489 71.562202
+v 62.883900 10.777288 72.919197
+v 62.681599 12.754588 69.187302
+v 63.066700 10.777287 75.633301
+v 63.380501 8.768058 76.986000
+v 63.088902 9.418628 74.305801
+v 63.178902 8.402388 75.592697
+v 63.561401 6.706227 78.347298
+v 63.273399 6.706228 76.990303
+v 63.171299 9.420218 72.919197
+v 63.294998 8.063217 74.276199
+v 63.246498 6.706228 75.633301
+v 62.943600 10.777288 71.562202
+v 63.783298 8.670829 68.221100
+v 64.342697 6.367239 70.205101
+v 66.001900 18.241793 45.778603
+v 65.206299 18.920193 48.026505
+v 65.556503 17.596992 47.843304
+v 65.789497 14.849192 49.849606
+v 64.974998 17.563192 49.849606
+v 65.544296 13.472192 51.869102
+v 66.123802 15.527792 47.814102
+v 66.486603 16.497593 45.069405
+v 66.411903 14.849193 47.135605
+v 66.118202 13.492191 49.849606
+v 66.432999 13.308792 48.533703
+v 66.966400 11.455692 45.099998
+v 66.524902 12.134293 48.492603
+v 65.798302 10.098791 53.242199
+v 66.031799 9.420221 52.563702
+v 66.169998 6.706232 53.581501
+v 66.775902 6.027762 50.188900
+v 66.375801 9.420221 50.528099
+v 66.697403 9.420222 47.548599
+v 66.931099 9.420222 45.778599
+v 60.120899 23.669691 63.215904
+v 60.664902 22.312790 62.062904
+v 59.638699 25.172491 62.819202
+v 59.923500 25.088291 60.705902
+v 60.859402 22.312790 60.705902
+v 60.871300 23.669691 58.670303
+v 60.279099 25.026791 59.024403
+v 61.476398 19.428991 62.803802
+v 61.124298 20.169491 64.098503
+v 60.764400 20.616489 66.812500
+v 61.790901 16.864689 66.134003
+v 61.753101 17.563189 64.777000
+v 62.637600 16.206190 61.728405
+v 62.125301 19.768190 58.670303
+v 61.988201 18.919891 60.493904
+v 62.557301 20.976591 55.348206
+v 61.991600 22.991291 55.277805
+v 63.393002 17.563190 55.277805
+v 62.587502 18.728191 57.991802
+v 62.802101 17.223890 59.004105
+v 60.616600 27.062290 55.277805
+v 60.930599 25.866890 55.640602
+v 61.981899 24.348291 53.920704
+v 61.521599 26.896790 53.242203
+v 62.392399 27.062292 51.206703
+v 62.798401 22.312790 53.017403
+v 65.043900 23.874392 46.205803
+v 63.866699 25.705292 48.492603
+v 64.865898 22.991293 47.135605
+v 63.926300 21.679293 50.198902
+v 65.173599 20.791592 47.135605
+v 64.531998 20.277292 49.171104
+v 62.316502 15.527789 64.777000
+v 63.193298 12.813290 63.420002
+v 63.325500 11.455689 64.777000
+v 63.192600 11.473490 66.049202
+v 63.922001 14.170691 57.652603
+v 63.994598 15.132791 55.709404
+v 64.716599 11.455690 56.973999
+v 64.139603 10.777290 60.705898
+v 63.980202 8.681569 65.143204
+v 64.890198 6.456900 64.179199
+v 64.009598 9.420219 63.520500
+v 64.868698 8.741751 59.348900
+v 64.952003 9.420220 57.991798
+v 65.508003 8.741752 55.533600
+v 65.325600 5.942680 61.292900
+v 65.731300 6.205011 56.973999
+v 64.020599 16.298790 54.117104
+v 63.203499 19.598791 53.920704
+v 64.578796 13.492191 55.277805
+v 64.941498 13.492191 53.920704
+v 65.169403 11.794991 54.617702
+v 41.137402 39.367683 87.882706
+v 39.568001 39.947086 87.847206
+v 40.577900 39.966686 86.216408
+v 37.101601 41.811283 85.685104
+v 37.266602 41.054886 87.625404
+v 41.621201 39.437984 86.320908
+v 39.452599 40.924984 84.463509
+v 32.452202 43.233486 87.563805
+v 38.064301 42.693390 81.049011
+v 40.585800 40.948185 82.079109
+v 43.682499 40.034889 77.686607
+v 41.433998 41.200790 79.014008
+v 39.568001 42.483288 78.347305
+v 36.517502 43.386189 81.353806
+v 31.389200 44.929886 84.122307
+v 26.451799 46.685486 85.902809
+v 21.640301 48.184883 86.284508
+v 25.210501 47.740383 84.093407
+v 20.483101 48.890686 84.888611
+v 24.609100 46.623386 88.315308
+v 29.654200 46.620987 81.773407
+v 33.842201 44.467190 81.802811
+v 25.912901 48.057888 81.739906
+v 34.682400 45.396690 76.036209
+v 31.796600 46.528290 77.435608
+v 32.125500 47.862488 71.555611
+v 34.643501 47.417587 69.956810
+v 29.944700 49.054390 70.730606
+v 31.719700 49.013687 69.208405
+v 35.324001 48.468590 67.357811
+v 34.904301 45.792789 74.004311
+v 40.254299 43.090187 73.852104
+v 36.670502 45.885590 71.289307
+v 37.193199 43.762989 78.177704
+v 40.925098 42.231289 75.633308
+v 37.956600 43.916588 75.319611
+v 42.276402 43.250187 70.540504
+v 40.498901 44.792488 69.357010
+v 41.659100 45.158287 67.547707
+v 31.086599 47.896988 73.077011
+v 29.207600 48.008190 76.990311
+v 28.578800 49.260387 71.983307
+v 27.205500 49.259090 75.518806
+v 27.678499 47.993687 79.968811
+v 43.639099 38.685184 87.846611
+v 42.770100 38.944786 86.011009
+v 19.821800 47.951786 88.205711
+v 20.569599 47.545185 89.203506
+v 19.212500 47.916286 89.203506
+v 17.177000 48.487186 87.846611
+v 15.856900 48.748085 87.749405
+v 13.431500 49.615086 86.662811
+v 41.603600 46.426689 65.455505
+v 39.397999 49.116890 62.935108
+v 38.512100 46.691788 67.809204
+v 38.210999 49.072289 64.098511
+v 41.380901 47.688190 63.420006
+v 38.210999 49.453190 63.420006
+v 41.603600 49.735291 58.331108
+v 54.292900 41.931293 45.002708
+v 55.991100 39.913494 45.176506
+v 54.904400 41.716293 43.469307
+v 55.746101 40.420292 42.804508
+v 56.770500 39.294594 43.946308
+v 53.967899 43.566391 42.421909
+v 55.789799 40.128292 41.406509
+v 54.556499 42.173294 41.424908
+v 55.000999 39.332794 38.669209
+v 54.829102 40.439693 39.961609
+v 56.097000 38.900993 39.746006
+v 50.096401 48.671291 43.081509
+v 49.067299 49.209194 43.064507
+v 49.396301 49.130791 44.465908
+v 50.306599 48.631691 44.413708
+v 50.424301 47.417191 45.492908
+v 51.578899 47.435093 43.797607
+v 51.323502 47.378094 42.995708
+v 51.728401 47.076393 44.514107
+v 53.455200 44.521992 43.544609
+v 53.030201 45.196491 43.043106
+v 52.917301 44.877693 44.579906
+v 50.742901 46.181892 41.711407
+v 50.479900 47.391293 42.292408
+v 51.811699 45.871292 42.152809
+v 48.098400 45.861191 40.602509
+v 49.089401 47.443394 41.710007
+v 49.385899 44.594093 40.248909
+v 49.067299 48.774193 42.556808
+v 47.319698 48.750492 41.858208
+v 46.672501 46.316891 40.493408
+v 46.623501 44.035091 39.266907
+v 44.929100 44.242092 39.196106
+v 52.773701 45.090092 42.345108
+v 53.384102 43.893894 41.669407
+v 52.247398 44.048492 40.970806
+v 53.478298 42.982094 40.924606
+v 51.693100 42.204193 39.396507
+v 53.606800 40.858292 39.340408
+v 49.703201 42.248692 38.471607
+v 49.625999 41.772793 36.809109
+v 50.376499 42.048496 34.966309
+v 48.495098 42.632095 35.031708
+v 51.872200 41.218292 38.331207
+v 53.824600 39.669792 37.351208
+v 51.134102 41.314392 37.683907
+v 48.055302 42.372093 37.937508
+v 51.500198 41.038994 36.743706
+v 54.159500 39.485493 36.025909
+v 53.165501 40.343792 35.556507
+v 52.891701 41.106297 33.979908
+v 48.323700 43.460293 39.170406
+v 46.772202 42.471794 36.811108
+v 46.756001 42.878796 34.170109
+v 43.858002 42.746490 36.023209
+v 54.352299 40.334995 33.140606
+v 53.642200 40.727398 32.441307
+v 49.604301 42.460094 34.050709
+v 55.228199 39.634197 32.434509
+v 48.798500 42.146095 31.965107
+v 54.404499 39.572395 31.178106
+v 52.339199 39.733597 30.712805
+v 51.076199 41.011597 31.468807
+v 49.137001 40.827896 30.813107
+v 51.976299 37.814198 29.662306
+v 48.435799 42.617596 33.024509
+v 45.226200 42.907196 33.200508
+v 46.801102 42.643795 32.290409
+v 42.865002 42.616795 32.002007
+v 47.177502 42.053497 31.486408
+v 44.995998 42.167698 31.429308
+v 47.458000 40.582996 30.366507
+v 42.333801 40.489597 29.330706
+v 40.926300 41.507896 30.458408
+v 46.095600 40.020298 29.468105
+v 48.128201 39.089996 29.013506
+v 45.618198 39.545998 27.743805
+v 46.013500 39.747097 28.822206
+v 42.930199 40.038097 27.310606
+v 44.324200 39.826397 25.181906
+v 46.272202 39.271397 24.601206
+v 44.143002 40.629196 23.306206
+v 61.410599 34.037594 41.820305
+v 59.984299 36.058094 42.826107
+v 59.219501 35.872494 40.813908
+v 58.798599 37.625793 44.164806
+v 57.456501 38.397491 42.608509
+v 61.719398 31.830793 38.521706
+v 56.244499 38.001694 37.872208
+v 58.231201 36.096291 38.493809
+v 62.852600 31.926893 42.985302
+v 62.115101 28.661194 34.649704
+v 62.956001 31.321394 40.743504
+v 64.197899 27.007793 37.626404
+v 60.317600 31.696295 34.647404
+v 60.437599 32.124592 36.021503
+v 58.815399 34.389194 34.494003
+v 58.957500 34.701191 37.006203
+v 56.098701 37.874290 35.290207
+v 57.510601 36.301495 34.645706
+v 57.634300 36.835995 32.054607
+v 55.810200 38.838497 31.516806
+v 56.250702 37.853294 30.593306
+v 55.743801 37.586494 30.037907
+v 54.383598 37.846294 29.946606
+v 57.328499 36.355995 29.893705
+v 56.348801 36.248695 29.240305
+v 59.882999 32.572796 30.589205
+v 59.041599 34.453094 30.951406
+v 58.484100 33.140896 28.194206
+v 57.878101 33.030697 27.775806
+v 57.139599 34.464096 28.363306
+v 58.647800 34.438198 29.501505
+v 54.750702 34.770195 28.297606
+v 54.879902 33.628796 27.494705
+v 53.863899 35.093998 28.272806
+v 61.694099 28.418795 32.495705
+v 60.896099 29.973095 31.747206
+v 59.922100 30.916796 28.144205
+v 59.902199 32.113697 29.477205
+v 60.565201 30.455994 29.501005
+v 60.440498 29.776196 28.137106
+v 59.826801 29.775196 27.049807
+v 61.045799 28.904493 29.570303
+v 61.207802 27.573896 27.897903
+v 59.936100 27.417995 25.440504
+v 60.574001 27.970596 26.733503
+v 58.383400 31.446596 26.962505
+v 56.463001 32.226795 26.529806
+v 57.883499 31.105696 26.179007
+v 56.061298 32.387295 25.318806
+v 57.465599 31.064196 25.414406
+v 58.615002 29.654396 25.607407
+v 57.872398 30.108397 24.665106
+v 52.190399 36.318295 28.515005
+v 50.262901 37.163998 27.189205
+v 48.061100 38.276096 25.622606
+v 48.478699 38.443897 27.773706
+v 50.603699 37.358295 28.475605
+v 50.506599 36.764496 25.580206
+v 51.128300 36.624695 24.525005
+v 52.717602 35.146397 27.125706
+v 54.067699 34.773495 24.414005
+v 52.772999 35.003498 25.729105
+v 54.673698 33.283695 26.842005
+v 54.529202 33.325096 26.181906
+v 44.976200 39.488995 26.399706
+v 48.008099 39.780098 22.487806
+v 49.858700 38.979897 22.046307
+v 48.441601 39.875397 21.134007
+v 48.370499 39.630096 19.495106
+v 49.853001 39.014297 20.236506
+v 45.467899 39.856495 16.906206
+v 44.400501 41.038395 19.146507
+v 47.933399 38.680897 16.976807
+v 46.669800 39.178097 16.237606
+v 45.634998 39.522297 15.364206
+v 41.629002 41.102898 16.821907
+v 45.238300 40.273899 6.762247
+v 43.927700 41.413101 5.240706
+v 42.292599 41.915699 7.355427
+v 45.993301 40.625198 2.712787
+v 46.736000 39.686100 4.097126
+v 56.554901 32.076694 22.666206
+v 55.655800 33.871395 22.443905
+v 55.997898 33.253098 23.661406
+v 57.074799 31.388296 24.181005
+v 56.315201 30.422497 20.455406
+v 54.968399 34.236496 21.019506
+v 53.612999 34.143597 18.669605
+v 55.029099 32.350697 19.513706
+v 54.485802 32.388798 17.815105
+v 53.567501 33.630898 17.681206
+v 55.991199 30.347197 19.173105
+v 57.238098 30.091496 22.693405
+v 57.860001 28.197395 22.615004
+v 58.566502 27.914196 24.066004
+v 53.291901 34.053295 15.527606
+v 56.517799 30.179598 14.078105
+v 55.052898 33.302696 12.184006
+v 56.733799 29.190598 17.338404
+v 53.917000 33.098095 16.402805
+v 51.605400 37.654495 22.742805
+v 52.775101 37.015896 22.326006
+v 51.673199 37.974297 21.067705
+v 48.070999 38.525898 24.492306
+v 53.529900 36.152695 20.794006
+v 51.301201 37.745796 19.701605
+v 54.910099 34.660496 23.432405
+v 54.438900 35.422195 22.230307
+v 51.142300 36.374996 17.623005
+v 49.182499 37.808495 17.023405
+v 51.658901 35.549995 16.414606
+v 50.176498 36.964996 15.735806
+v 50.980900 37.090298 12.405206
+v 48.979301 38.214195 13.334207
+v 52.025600 36.190598 13.519906
+v 48.285702 38.317196 15.593607
+v 55.530399 33.490700 6.208385
+v 58.405899 31.931000 2.673265
+v 54.855801 35.311001 2.472356
+v 56.400101 31.711098 11.393105
+v 58.474499 29.961498 7.867765
+v 56.399200 32.211498 9.211256
+v 58.778702 26.571697 13.536304
+v 59.302799 27.062298 10.495705
+v 58.453098 29.471498 9.088695
+v 59.739899 27.580399 8.627995
+v 60.828999 29.863300 1.386515
+v 58.392899 31.119200 4.612215
+v 62.312599 27.713301 2.242845
+v 58.303200 30.622198 6.291335
+v 60.951500 27.511198 6.162824
+v 49.576199 37.877998 8.799406
+v 47.561798 38.948502 10.156406
+v 53.314400 34.946995 13.503606
+v 53.148300 35.431595 12.117406
+v 51.474701 36.804600 7.291686
+v 52.052200 36.832699 4.383746
+v 48.954201 38.366798 6.424596
+v 52.684898 36.812901 2.198566
+v 50.057899 38.321701 1.378966
+v 52.123299 36.315201 8.748086
+v 53.352402 35.497101 6.167036
+v 66.245903 22.269691 41.721302
+v 66.103600 22.991295 40.350403
+v 65.283302 25.705294 40.350403
+v 66.337700 21.941694 38.917305
+v 65.235703 25.369295 38.993404
+v 65.382103 24.190895 37.664204
+v 66.053101 22.312792 43.064503
+v 66.418999 20.277292 43.064503
+v 67.025803 14.170693 43.743004
+v 67.016296 17.563192 41.707405
+v 65.351700 23.078194 36.279305
+v 66.440598 20.841993 37.652405
+v 66.234497 20.277294 36.279305
+v 65.088898 20.915495 33.603806
+v 67.057999 18.241795 40.350403
+v 67.264397 16.884695 38.993404
+v 66.963997 18.920195 38.993404
+v 66.647003 17.978495 35.600803
+v 67.245399 15.527793 41.707405
+v 67.390198 15.527793 40.350403
+v 67.687401 13.492193 38.993404
+v 67.646301 14.170694 37.636402
+v 67.199402 16.884695 37.636402
+v 67.529701 14.170694 35.600803
+v 67.216599 15.527794 35.600803
+v 67.912300 12.134295 37.636402
+v 68.003998 11.629794 36.279301
+v 67.729202 13.492194 36.279305
+v 67.515099 13.152793 41.028904
+v 68.481903 5.349234 37.636398
+v 67.813004 12.134294 38.993404
+v 68.243500 9.420224 34.922298
+v 67.972397 11.471594 34.849899
+v 68.425797 7.045465 36.279301
+v 68.272102 6.027764 38.993401
+v 67.773499 10.098793 40.350399
+v 66.695396 15.486394 32.979004
+v 66.209999 18.241795 34.243805
+v 66.259697 16.206194 32.208202
+v 65.241501 19.259495 32.396805
+v 65.820198 16.206194 30.851202
+v 65.949600 14.849195 29.494202
+v 64.959602 16.884697 28.733402
+v 66.704597 12.961995 29.729902
+v 65.987297 13.492195 27.458601
+v 67.577103 10.777295 30.851202
+v 67.415298 12.813294 32.886703
+v 66.244598 11.901696 25.932602
+v 64.977798 15.527795 26.481602
+v 68.065697 10.186295 33.565300
+v 67.748703 11.455694 32.886700
+v 68.195702 8.599485 31.847702
+v 68.436096 7.384694 33.904499
+v 68.769402 5.349235 30.851200
+v 68.481697 6.706235 30.172703
+v 67.110703 9.759696 26.101603
+v 64.565002 14.848796 22.709002
+v 67.293404 9.081236 24.914202
+v 66.362801 10.777296 22.878601
+v 65.150299 25.441992 44.420002
+v 64.867798 27.062292 43.064503
+v 65.423203 25.026793 43.064503
+v 64.903397 27.062292 41.707405
+v 64.273598 28.620794 40.766106
+v 64.219101 28.948292 43.120605
+v 65.500099 25.026793 41.707405
+v 62.915798 27.158495 34.583004
+v 64.862701 24.348295 36.279305
+v 63.992699 24.348194 34.159004
+v 62.965900 25.078295 32.208202
+v 61.971100 27.231794 31.640305
+v 61.945000 25.365995 28.815704
+v 62.729500 23.926495 30.172705
+v 61.316799 26.364096 26.757605
+v 61.917900 24.348297 26.780104
+v 61.343800 25.014795 25.429304
+v 60.932899 25.452797 25.134104
+v 62.069302 22.991297 25.423103
+v 63.952702 22.877295 32.467804
+v 62.696499 22.333096 28.238005
+v 63.684101 21.634295 30.248703
+v 63.994598 18.910196 28.149504
+v 63.014400 20.277296 26.780104
+v 62.640900 20.697996 25.131104
+v 62.535999 20.282997 23.253904
+v 61.925201 22.409296 24.056704
+v 63.864399 18.241796 26.780104
+v 63.254101 18.920197 25.423103
+v 63.266300 18.241796 23.217903
+v 63.896599 16.884697 24.066002
+v 64.212196 16.700296 25.423101
+v 64.777298 14.849196 24.066002
+v 65.083099 23.658600 3.719444
+v 66.703697 21.195999 3.305823
+v 65.617798 23.757900 2.119504
+v 66.708702 18.221699 7.081453
+v 67.597900 17.888100 5.538793
+v 66.659401 16.456497 9.009753
+v 67.901001 18.745001 3.392073
+v 68.247498 19.734100 0.484562
+v 66.040604 12.188597 16.750002
+v 67.217201 10.569197 16.022202
+v 64.754997 14.513997 15.407001
+v 67.579498 11.790398 12.475502
+v 65.216599 15.620498 12.490503
+v 66.743698 10.229597 20.334103
+v 66.987099 9.590266 21.691202
+v 67.772202 7.975766 24.798101
+v 68.535004 6.907166 20.026901
+v 69.339600 5.730897 17.999701
+v 68.464401 8.136538 16.786701
+v 68.097397 9.985348 13.903302
+v 69.422798 8.386288 11.727001
+v 69.422798 7.198237 14.057901
+v 65.748497 18.533699 8.481173
+v 68.061096 13.480798 9.138701
+v 68.825104 10.453198 10.593902
+v 67.220703 14.086498 10.306202
+v 68.622299 12.134298 9.138701
+v 69.180298 12.825599 6.910582
+v 68.619202 13.492199 7.781602
+v 68.895699 15.663599 4.420582
+v 70.027603 12.813300 2.353502
+v 68.869202 17.223801 1.675003
+v 69.364700 14.194799 4.389052
+v 69.364899 9.848018 9.605082
+v 69.404404 11.090499 8.012492
+v 70.192902 8.741759 7.781601
+v 70.191002 6.706238 11.174201
+v 70.779800 5.649229 9.717351
+v 70.946701 6.027769 7.753051
+v 71.506401 5.179629 5.067571
+v 70.655197 8.598999 5.644971
+v 70.779900 9.421199 3.711102
+v 71.389702 7.384699 2.353501
+v 70.751198 10.098800 2.353502
+v 70.248001 10.098799 5.746101
+v 70.238098 11.455699 3.710502
+v 60.832199 22.887596 22.331104
+v 61.301201 23.672096 24.061304
+v 58.892502 26.694897 23.583803
+v 61.366699 21.014795 20.249304
+v 60.264702 22.991297 19.655603
+v 58.517101 26.453997 22.008305
+v 57.465801 27.943996 19.062004
+v 57.276100 28.770897 21.182203
+v 59.099201 25.113497 17.913303
+v 60.424801 22.576996 17.641304
+v 57.544800 28.448698 14.504704
+v 60.028301 23.435299 15.499703
+v 60.805698 21.973299 13.888304
+v 62.612099 17.688198 16.363203
+v 63.568699 16.206196 18.468302
+v 60.245201 24.555698 11.513404
+v 61.151100 23.500097 10.593803
+v 61.280602 25.705297 7.819404
+v 62.041302 22.954899 9.439144
+v 63.038700 25.567900 4.924384
+v 64.262299 25.421000 2.573254
+v 65.170998 21.078999 6.618023
+v 62.337200 24.916399 6.900764
+v 62.183498 20.436197 11.813803
+v 61.052101 21.931498 12.875604
+v 62.591400 18.920198 12.955003
+v 64.413101 19.967197 9.047903
+v 62.764500 20.069199 11.238903
+v 62.955799 18.352297 21.377504
+v 63.962200 15.954496 20.673403
+v 63.604099 15.914598 16.690702
+v 40.246601 48.774193 40.692410
+v 40.292900 47.417191 40.226109
+v 38.210999 47.417191 39.855209
+v 40.816399 44.654491 39.073406
+v 37.903099 45.747692 39.233307
+v 41.828400 46.057693 39.920406
+v 35.496899 48.774193 39.504208
+v 36.854000 47.417191 39.524708
+v 35.703499 44.690891 38.284809
+v 34.644001 46.092194 38.569107
+v 39.809200 43.936790 38.406006
+v 44.450298 43.354591 38.310509
+v 42.337799 43.062191 37.461308
+v 38.830101 43.352692 37.564308
+v 38.085602 44.839993 38.856907
+v 45.270599 42.734692 37.482407
+v 38.868801 42.991291 36.721409
+v 40.780201 42.782791 35.477806
+v 35.972801 44.009293 37.867706
+v 32.750198 43.840092 36.487106
+v 32.909599 44.810390 37.406307
+v 32.782902 48.774193 38.502609
+v 28.711800 47.417191 36.145809
+v 30.368000 45.941093 36.688709
+v 31.657700 46.122391 37.398708
+v 28.549101 45.615292 35.471107
+v 30.304899 44.696194 36.016907
+v 27.454300 44.426895 33.830608
+v 29.864500 43.776596 34.853008
+v 31.342899 43.334198 35.030907
+v 38.950001 42.429096 32.217106
+v 37.492699 42.478798 34.543606
+v 36.544102 42.104595 33.428707
+v 36.462601 41.381096 30.112007
+v 37.983898 40.478695 29.029005
+v 34.299599 41.652195 32.523407
+v 35.590000 43.219994 36.635406
+v 32.539700 41.724796 32.395706
+v 33.497501 42.645195 34.553806
+v 35.950401 41.638996 30.835608
+v 39.087002 42.102497 31.157007
+v 32.994999 41.399395 31.482908
+v 33.512501 41.116295 29.393707
+v 42.335602 40.420097 24.516006
+v 40.773201 40.296394 25.514206
+v 39.148201 40.498898 24.561905
+v 37.462898 39.746494 26.969505
+v 40.607498 40.313698 27.714106
+v 38.111599 39.975197 25.613405
+v 35.987202 39.775497 27.832205
+v 37.905602 40.043594 28.140306
+v 34.316002 39.481495 26.802805
+v 34.142200 39.778896 27.497705
+v 35.579800 39.471798 26.368805
+v 32.947498 39.676296 26.494905
+v 34.333401 39.722496 25.451206
+v 34.344200 41.396397 23.469007
+v 26.472500 45.606697 33.830307
+v 27.260201 46.683697 34.952808
+v 24.640699 48.774197 32.882408
+v 25.516001 47.417194 33.565308
+v 24.293301 48.774197 32.208206
+v 23.972000 50.131195 32.208206
+v 23.794901 48.774197 30.851208
+v 23.404800 50.809795 30.939007
+v 23.770300 47.417194 29.494207
+v 24.081100 47.417194 30.851208
+v 24.640699 47.278297 32.208206
+v 25.394501 45.674297 32.583309
+v 26.040199 44.529396 32.375809
+v 24.589500 45.930798 31.156208
+v 24.655701 44.669598 30.101408
+v 24.088800 45.701694 29.268908
+v 23.821400 46.060196 28.137108
+v 23.625401 48.571495 26.842407
+v 23.274401 50.489597 26.896507
+v 23.912600 48.774197 25.423107
+v 24.456900 48.788097 23.646908
+v 24.009399 47.417194 25.423107
+v 24.651600 46.518597 23.816807
+v 23.932400 44.786995 26.770607
+v 24.133801 46.060196 25.423107
+v 24.552099 44.961697 25.027508
+v 30.172600 41.822697 31.463808
+v 26.489401 42.897297 30.787607
+v 26.651899 41.857098 29.288908
+v 29.024700 41.345898 29.267408
+v 25.252199 43.704597 30.247307
+v 25.248400 42.563297 28.975708
+v 31.297501 41.001198 28.009407
+v 30.335199 40.979195 27.012207
+v 29.190100 41.352795 26.234308
+v 28.160601 41.528698 27.016808
+v 31.272800 40.351696 26.095005
+v 31.049801 40.552197 25.155405
+v 24.474001 42.968597 28.224607
+v 25.615000 41.907696 28.226408
+v 25.649700 41.826397 27.414507
+v 24.359900 42.977097 27.005207
+v 24.037701 44.350697 28.170807
+v 25.623899 44.654495 23.664808
+v 25.379400 43.637596 25.000408
+v 26.736200 43.107197 24.464108
+v 24.668900 43.465096 25.926008
+v 25.485500 42.112698 26.647408
+v 27.725100 42.045197 25.583307
+v -0.491128 49.087296 24.314207
+v 42.396599 41.333298 22.376507
+v 38.973701 41.430996 23.046207
+v 44.891300 41.016495 21.719109
+v 41.772301 41.611496 21.136707
+v 39.104198 41.875397 21.146507
+v 38.729198 41.781895 22.026007
+v 44.333199 41.191795 20.528507
+v 41.884899 41.547897 19.538307
+v 38.702499 41.794197 17.950308
+v 34.823299 42.134995 20.931108
+v 32.055698 42.389996 21.656609
+v 34.643299 41.886497 22.478909
+v 36.654400 42.090496 18.724308
+v 34.142799 42.647297 17.429308
+v 40.093300 41.407795 15.460506
+v 36.541500 42.360497 16.437408
+v 39.719700 41.706497 13.549006
+v 42.487000 40.991299 11.463306
+v 44.947201 40.038300 11.174207
+v 35.147301 42.937397 14.968407
+v 32.060600 43.313095 16.894308
+v 31.741199 42.849197 18.758308
+v 38.305901 42.401096 12.634007
+v 34.800301 43.377098 14.063606
+v 33.446899 44.321095 13.810608
+v 28.520399 45.557396 17.527807
+v 27.395901 46.061794 18.722609
+v 26.524700 45.750298 20.079708
+v 28.055401 44.705395 18.565107
+v 25.467800 46.861298 21.867308
+v 26.344200 47.470795 20.168308
+v 27.390499 47.415295 18.682508
+v 27.486200 48.774395 18.747007
+v 26.366800 48.787395 20.250008
+v 25.667999 45.676495 22.142408
+v 26.935101 44.633698 20.443108
+v 28.711800 48.774197 17.280907
+v 28.802799 47.407795 17.044308
+v 31.121700 49.327595 14.458508
+v 30.068800 47.417194 15.703908
+v 28.222500 46.035397 17.747707
+v 31.115801 44.916897 15.502908
+v 31.649700 46.177395 14.311007
+v 31.466299 47.356598 14.183408
+v 32.947102 45.854195 13.051408
+v 32.276402 41.745796 23.165508
+v 29.627899 42.341396 23.151608
+v 29.847200 42.752296 22.043407
+v 27.940901 43.013195 23.294508
+v 27.886299 43.955196 19.981207
+v 29.419001 43.944298 18.104307
+v 31.614401 43.926796 16.121107
+v 33.911301 48.760899 10.224708
+v 33.080299 47.463097 12.162908
+v 35.260700 47.802399 8.371677
+v 34.330799 50.002701 8.108169
+v 34.145100 47.501099 10.603607
+v 35.581699 46.609901 9.122168
+v 34.193699 45.871601 11.624207
+v 35.007702 46.060200 10.495708
+v 43.819698 45.013500 -1.033123
+v 39.848301 46.008301 2.930877
+v 41.369900 43.570599 4.906657
+v 36.812698 47.867100 4.985038
+v 38.289101 46.298000 5.113418
+v 37.886200 49.260399 -0.676013
+v 36.452301 49.046299 3.303758
+v 36.627998 50.421398 0.058366
+v 35.288700 50.347801 4.284118
+v 37.405300 44.941200 8.585788
+v 38.334099 43.505600 9.514697
+v 41.772099 42.679001 6.141707
+v 38.981800 42.803501 10.232007
+v 42.119801 41.606098 8.975007
+v 43.558102 42.420502 3.538267
+v 87.552101 -36.747715 90.590996
+v 88.041199 -37.368416 89.766289
+v 87.229897 -35.925014 89.621689
+v 87.149498 -37.961414 91.890091
+v 88.092499 -38.073414 90.537491
+v 87.111702 -41.032215 91.928589
+v 86.831001 -42.167816 91.868790
+v 88.482498 -40.747616 90.611389
+v 89.176598 -42.146717 89.203491
+v 88.615196 -43.635616 89.472496
+v 86.296204 -43.593914 91.900192
+v 88.427002 -44.858517 89.206589
+v 87.068802 -44.854713 90.581589
+v 87.066299 -47.643116 89.226990
+v 87.363098 -25.861811 72.919189
+v 87.032303 -24.526011 72.930389
+v 86.993896 -25.737612 73.935493
+v 87.048798 -24.586212 71.546989
+v 87.795403 -25.861811 71.562195
+v 88.036003 -25.861811 70.205093
+v 87.064201 -24.821711 70.205093
+v 88.234497 -25.994612 67.860992
+v 87.064201 -24.989712 68.848091
+v 87.064201 -25.032812 67.491089
+v 87.064201 -27.218813 84.636894
+v 87.449898 -27.218813 83.775490
+v 87.277603 -25.369213 83.758194
+v 86.999702 -25.802614 84.888390
+v 87.397400 -32.223114 83.749290
+v 87.421097 -29.886513 83.759689
+v 87.079201 -29.503214 84.356789
+v 87.032501 -32.144115 84.438690
+v 87.585297 -29.933714 82.418396
+v 87.425102 -28.575714 82.418396
+v 87.064598 -29.925814 80.735596
+v 87.007103 -29.084414 81.211494
+v 87.633400 -32.425816 82.371292
+v 87.389999 -31.486914 81.107994
+v 87.336998 -31.649714 79.700195
+v 87.002296 -29.984613 79.357895
+v 87.654602 -31.290813 78.347290
+v 87.673798 -34.004814 83.775490
+v 87.012497 -34.085114 85.127190
+v 87.437401 -36.524414 87.511490
+v 88.039101 -37.483414 86.551689
+v 87.225700 -36.039715 86.489494
+v 87.931297 -36.718815 85.132492
+v 87.346901 -35.391415 85.466194
+v 87.529297 -34.004810 81.061394
+v 87.995499 -35.361515 83.765991
+v 88.760002 -38.075417 82.418396
+v 87.859200 -34.298214 82.445389
+v 88.429298 -37.676811 81.153595
+v 87.686401 -28.575712 72.919189
+v 87.057198 -27.605711 74.201393
+v 87.259399 -28.621412 74.407890
+v 87.703598 -29.933714 76.990295
+v 87.054298 -28.560513 76.918190
+v 87.037102 -29.291414 78.396690
+v 87.717796 -29.933712 75.633293
+v 87.716003 -29.933712 74.276192
+v 88.034401 -29.933712 72.919189
+v 88.269501 -31.497311 74.270592
+v 88.441101 -31.949612 75.638695
+v 88.568703 -32.020813 72.919189
+v 88.001801 -27.218811 71.562195
+v 88.422302 -27.155312 70.211990
+v 88.535301 -28.663612 70.534096
+v 88.774597 -27.218811 68.848091
+v 88.421204 -26.375711 68.848091
+v 89.080902 -27.218811 67.491089
+v 89.118500 -28.575712 68.848091
+v 89.962799 -28.344212 66.264694
+v 88.911797 -29.933712 70.205093
+v 89.415001 -29.933712 68.848091
+v 90.508598 -29.927111 66.134796
+v 88.140099 -31.290913 76.990395
+v 87.814102 -32.647812 78.347290
+v 88.593201 -33.953911 76.982994
+v 87.874496 -35.319012 78.387489
+v 89.038803 -34.004810 75.633293
+v 89.010902 -34.009811 74.268295
+v 89.194199 -35.140312 72.940193
+v 88.417297 -36.377712 77.523689
+v 88.792503 -35.361813 76.990295
+v 89.398102 -35.361813 75.633293
+v 88.815002 -36.718811 76.990295
+v 87.925598 -36.718811 78.347290
+v 89.539200 -36.718811 75.633293
+v 90.273201 -31.290812 67.491089
+v 89.913902 -32.647812 69.429993
+v 89.319603 -36.718811 72.919189
+v 89.275200 -37.397312 71.562195
+v 89.336403 -35.361813 71.562195
+v 89.734100 -36.667011 70.036194
+v 89.776802 -35.411610 70.230995
+v 91.642700 -35.361912 66.134094
+v 90.814201 -34.100910 67.936592
+v 90.489098 -35.362411 68.845490
+v 91.160599 -36.806313 67.507591
+v 87.724800 -22.607510 62.074795
+v 87.043297 -21.993910 62.068897
+v 87.094597 -22.988010 63.445095
+v 88.373398 -25.926912 66.000595
+v 88.490898 -23.836910 62.059498
+v 87.067497 -24.217812 64.793694
+v 88.443398 -25.674412 64.704193
+v 88.378197 -24.920509 63.367096
+v 89.372299 -25.861809 62.062897
+v 88.032997 -23.115210 60.010498
+v 87.798302 -22.494410 61.142097
+v 88.428596 -23.167110 60.756298
+v 86.799202 -23.004709 59.064495
+v 89.296700 -24.504810 60.705894
+v 88.420898 -23.959709 59.355698
+v 87.608002 -24.504810 57.991795
+v 87.064201 -23.872709 57.991795
+v 87.062698 -24.517010 56.648197
+v 88.886200 -25.864410 57.982998
+v 88.960503 -24.504810 59.348896
+v 89.784599 -25.877810 59.335396
+v 87.424500 -19.847708 51.050697
+v 87.045502 -19.079508 51.129395
+v 87.064201 -19.586708 52.563698
+v 87.515099 -21.733208 52.606297
+v 86.691902 -19.696508 47.218597
+v 87.190697 -19.487408 49.908897
+v 87.945503 -20.765907 48.314396
+v 87.174896 -23.313009 54.221798
+v 87.984299 -23.147808 52.563698
+v 87.068298 -22.032310 53.899998
+v 87.624001 -24.504810 53.920696
+v 87.067200 -24.431810 55.277298
+v 87.689102 -25.861809 55.277798
+v 88.410103 -26.495209 56.598595
+v 87.956100 -25.852610 53.819496
+v 88.699997 -25.861807 52.563698
+v 88.439697 -24.475607 52.566895
+v 88.752197 -24.504808 51.206696
+v 88.085297 -21.546408 47.718796
+v 88.260803 -21.427708 49.004997
+v 87.083504 -21.568407 45.716496
+v 86.635696 -20.410608 45.754597
+v 87.022797 -23.317308 45.145096
+v 88.081200 -23.979208 47.145096
+v 88.640198 -24.504808 49.849598
+v 88.256599 -23.234808 51.165398
+v 88.433601 -24.477308 48.054897
+v 88.400101 -23.882807 48.534195
+v 89.325600 -25.906609 49.820797
+v 89.361198 -25.873308 51.187996
+v 88.975304 -25.861807 48.492596
+v 89.382301 -27.218811 66.133995
+v 88.953598 -25.861809 63.419994
+v 89.604103 -27.218811 64.776993
+v 90.356499 -28.568811 64.712189
+v 89.778603 -27.224810 63.165295
+v 90.863701 -29.933712 64.776993
+v 90.971497 -32.084812 66.133995
+v 91.135300 -31.018711 64.776993
+v 91.207397 -30.521410 63.485596
+v 90.168297 -27.218809 60.705894
+v 89.778000 -25.843309 60.702198
+v 89.777100 -26.836510 62.066795
+v 90.454597 -28.575710 62.062897
+v 90.754097 -28.983509 60.582695
+v 91.039902 -29.067410 59.470497
+v 90.269096 -27.218809 59.348896
+v 90.805801 -28.576410 57.991596
+v 89.815300 -28.335009 56.616096
+v 91.272598 -29.305410 57.942196
+v 91.990097 -31.290810 59.348896
+v 92.340103 -31.290810 57.991795
+v 91.690399 -29.933710 57.991795
+v 91.799500 -31.290810 56.634796
+v 91.008400 -30.189110 56.623196
+v 91.737297 -32.706512 63.310898
+v 91.969498 -35.291512 64.829689
+v 92.311798 -36.156010 63.579693
+v 92.170799 -33.943710 60.969296
+v 91.767502 -36.718811 66.133995
+v 92.622498 -34.004807 57.991795
+v 92.540604 -32.031708 57.940296
+v 92.415703 -32.853611 58.958397
+v 92.754204 -34.004807 56.634796
+v 92.514297 -32.615707 56.589096
+v 92.423798 -36.040211 59.348892
+v 92.577499 -36.040207 57.991791
+v 92.612396 -38.002609 56.634193
+v 92.753899 -35.361809 56.634792
+v 91.623398 -31.290810 60.705894
+v 91.443604 -31.144810 62.061295
+v 92.315399 -36.040211 62.062893
+v 92.315804 -36.040211 60.705891
+v 88.374702 -27.344910 55.336697
+v 89.005402 -27.218809 56.634796
+v 88.415901 -28.139709 53.933895
+v 88.930603 -28.575710 55.277798
+v 89.544800 -28.981108 51.004597
+v 90.045303 -27.292408 50.688396
+v 88.513603 -27.287710 52.912395
+v 89.778198 -29.933710 55.674194
+v 91.135300 -31.290810 56.172596
+v 89.864197 -31.305809 55.205997
+v 89.279503 -29.909107 51.209396
+v 88.692001 -28.575708 52.563698
+v 88.766998 -29.933708 52.563698
+v 89.105499 -31.290808 52.563698
+v 88.759499 -29.933710 53.920696
+v 89.187698 -31.290810 53.920696
+v 89.568298 -31.455608 51.074997
+v 89.831200 -27.197008 48.231495
+v 90.628601 -27.555607 49.368496
+v 90.705399 -28.321108 49.496998
+v 90.675797 -28.241308 48.474796
+v 89.795601 -28.570707 47.318996
+v 89.026299 -27.218807 47.135597
+v 88.410103 -25.722708 47.076996
+v 88.421204 -27.218807 46.484196
+v 87.536797 -25.723808 45.802895
+v 88.421204 -28.575708 46.181698
+v 87.793503 -27.605007 45.791897
+v 90.022598 -31.307608 47.074295
+v 90.512604 -29.933708 48.492596
+v 90.662804 -31.290808 48.492596
+v 88.499496 -31.290808 45.778595
+v 89.771797 -30.098907 47.137794
+v 92.489700 -35.382309 53.398891
+v 92.483002 -34.022106 55.345997
+v 92.789200 -35.361809 55.277794
+v 92.625397 -36.763508 53.507191
+v 91.340103 -34.184807 53.568695
+v 91.135300 -33.833706 53.920696
+v 91.031998 -32.653206 55.264496
+v 89.780403 -32.607807 53.849297
+v 90.892899 -34.004807 52.563698
+v 91.133102 -34.022606 51.184196
+v 90.057899 -32.647808 51.206696
+v 89.722702 -32.702106 52.454395
+v 91.135300 -34.182709 52.563698
+v 92.098602 -36.614906 50.540894
+v 92.120300 -35.361809 51.206692
+v 91.149101 -33.062107 49.591198
+v 90.195900 -31.290808 49.849598
+v 91.625000 -34.004807 49.849598
+v 90.567596 -32.647808 47.135597
+v 91.135300 -32.647808 47.922398
+v 91.709702 -33.957809 48.492294
+v 92.059303 -35.361809 49.849594
+v 91.837502 -35.361809 48.492592
+v 91.698898 -36.718807 48.492592
+v 90.152603 -36.718807 45.778591
+v 91.072403 -33.822407 47.249397
+v 86.732300 -25.994608 44.674896
+v 87.798599 -34.004807 43.064495
+v 87.064201 -32.372707 43.064495
+v 89.769600 -34.947308 45.794395
+v 88.223099 -34.004807 40.350395
+v 87.064201 -32.079807 40.350395
+v 89.778198 -36.718807 45.268894
+v 89.034500 -36.718807 43.064491
+v 89.567703 -36.718807 40.350391
+v 88.887100 -34.004807 37.636395
+v 87.115601 -31.416805 37.635998
+v 88.494301 -34.004803 34.922295
+v 87.064201 -31.706705 34.922295
+v 90.372002 -37.494709 39.197193
+v 90.903900 -37.969509 37.652794
+v 89.778198 -35.860706 37.636391
+v 89.778198 -36.718807 39.796391
+v 87.933899 -29.514206 29.438494
+v 87.032402 -29.936806 30.812593
+v 87.233101 -31.228006 30.956295
+v 87.326103 -28.422403 27.878897
+v 87.064201 -28.854704 28.815596
+v 87.153603 -28.620405 29.446196
+v 89.668900 -31.490004 26.784794
+v 88.600098 -29.637104 26.363295
+v 88.424599 -29.472204 27.712194
+v 88.499199 -29.954103 28.577394
+v 89.223198 -31.290804 28.137094
+v 89.545998 -31.358805 25.469395
+v 88.231598 -35.399105 29.490194
+v 88.428398 -32.665504 29.481995
+v 87.618896 -34.004803 32.208195
+v 88.374100 -36.718803 32.208191
+v 90.131798 -32.647804 26.780094
+v 90.160103 -32.647804 25.423094
+v 89.796898 -32.752003 24.096094
+v 90.430702 -34.004803 26.780094
+v 90.734100 -34.004803 25.423094
+v 90.458702 -34.004803 24.065994
+v 89.514603 -35.126205 27.805895
+v 88.421204 -35.361805 29.127295
+v 88.421204 -36.718803 28.600794
+v 90.260696 -35.361805 26.780094
+v 90.926399 -35.361805 25.423094
+v 91.045197 -35.647003 24.057594
+v 90.820297 -36.718803 25.423094
+v 89.792702 -36.866405 26.780294
+v 91.161697 -37.824802 24.129494
+v 91.135300 -36.718803 24.572794
+v 87.064201 -31.290804 23.274794
+v 88.421204 -30.584703 24.065994
+v 88.421204 -31.290804 23.598194
+v 88.421204 -32.647804 22.955294
+v 88.940102 -31.290804 24.065994
+v 89.778198 -36.718803 21.891594
+v 89.778198 -35.361805 22.284695
+v 90.335602 -35.361805 22.708994
+v 90.839798 -36.718803 22.708994
+v 88.421204 -35.361805 22.009794
+v 88.394096 -33.304302 22.664194
+v 89.729301 -34.274506 22.756594
+v 87.064201 -35.361805 22.268694
+v 86.838799 -33.415504 22.809595
+v 87.064201 -36.718803 21.995695
+v 88.520103 -38.086216 88.374290
+v 89.149498 -39.432716 89.203491
+v 89.213097 -39.432716 87.846596
+v 89.632202 -40.747414 86.344292
+v 88.299500 -37.919716 84.862793
+v 88.843102 -39.432716 85.132492
+v 88.958702 -39.432716 83.775490
+v 89.923897 -41.589714 85.135689
+v 90.131699 -42.146717 86.489494
+v 89.204399 -39.432716 82.418396
+v 88.082199 -38.075710 79.704391
+v 87.670097 -36.614910 79.727692
+v 89.620399 -40.812714 83.639595
+v 90.311501 -41.741112 80.926392
+v 89.123001 -39.432713 81.061394
+v 89.834198 -41.663113 79.745895
+v 89.264801 -40.763710 79.717690
+v 88.815498 -40.789711 78.347290
+v 88.420998 -39.108013 79.596992
+v 89.590401 -42.356110 78.368492
+v 92.957001 -46.217815 83.775490
+v 92.545898 -45.224514 83.573395
+v 92.429001 -46.215714 85.004494
+v 92.467300 -47.614117 84.931992
+v 93.332100 -47.574814 83.775490
+v 89.893997 -43.501114 87.860092
+v 90.648003 -43.503716 86.489494
+v 89.851303 -44.858414 87.856392
+v 91.180702 -44.781216 86.502693
+v 90.781303 -43.148315 85.394089
+v 91.949898 -43.879017 82.329895
+v 90.541199 -42.025917 82.234894
+v 91.985199 -44.745014 85.090294
+v 89.778198 -45.358814 87.846596
+v 91.168900 -46.286114 86.534492
+v 89.778198 -46.217815 87.659592
+v 91.053703 -47.508717 86.314789
+v 93.369698 -46.214314 82.414894
+v 93.347504 -45.091213 80.343689
+v 93.565102 -45.319511 79.045296
+v 90.995796 -43.252411 79.263191
+v 92.168602 -43.860512 79.935593
+v 93.980499 -47.631115 82.602394
+v 94.362602 -47.585911 81.062096
+v 93.843498 -46.076710 78.312393
+v 93.967400 -45.798210 79.309090
+v 91.179398 -44.690113 77.780090
+v 94.616798 -47.574810 79.704391
+v 94.701897 -47.574810 78.347290
+v 90.497597 -43.524410 78.336090
+v 88.101501 -38.075710 78.347290
+v 88.470802 -38.193413 77.415695
+v 89.457298 -38.075710 75.633293
+v 88.371399 -39.317711 78.218796
+v 89.587402 -39.432713 74.276192
+v 89.418297 -39.432713 75.633293
+v 88.955704 -40.789711 76.990295
+v 89.514000 -40.789711 75.633293
+v 89.378403 -42.145412 76.990089
+v 89.459297 -40.958210 72.722496
+v 89.751099 -40.980213 74.276192
+v 90.060204 -43.485310 74.279190
+v 89.357399 -38.754211 72.919189
+v 89.648903 -38.045010 69.807793
+v 89.406197 -39.432713 70.205093
+v 91.477699 -38.073410 66.563690
+v 89.248001 -40.111313 71.562195
+v 89.204300 -42.133911 68.856995
+v 89.265198 -40.789711 70.205093
+v 88.978104 -43.152313 70.242691
+v 89.759598 -41.575012 67.594894
+v 89.791496 -39.971310 68.792191
+v 92.727997 -45.780411 77.908493
+v 93.849297 -47.574810 77.326591
+v 92.524300 -47.502510 76.993996
+v 91.179497 -45.485012 76.911491
+v 89.992996 -43.503712 76.990295
+v 90.431000 -44.860710 75.633293
+v 90.052902 -43.503712 75.633293
+v 89.778198 -42.367710 75.633293
+v 89.733299 -44.311310 73.160789
+v 90.142303 -44.860710 74.276192
+v 90.753799 -46.217812 75.633293
+v 91.637497 -46.217812 76.990295
+v 91.124001 -47.666412 75.740593
+v 89.695297 -45.922112 73.262894
+v 90.182198 -46.217812 74.276192
+v 90.240601 -47.574810 74.276192
+v 89.528603 -47.477512 73.167389
+v 89.131500 -44.100811 71.543793
+v 89.238098 -42.146713 71.562195
+v 87.998398 -48.959110 70.172890
+v 88.491402 -46.114311 70.189095
+v 88.655403 -47.376312 71.482590
+v 87.894302 -47.574810 67.491089
+v 87.064201 -50.288815 87.332596
+v 88.077797 -50.288815 86.489494
+v 89.778198 -48.917717 86.489494
+v 89.778198 -47.574814 87.188393
+v 92.502998 -48.939217 84.544495
+v 89.778198 -50.288815 85.472496
+v 87.064201 -51.117714 86.489494
+v 89.778198 -51.754814 83.775490
+v 92.439003 -50.257614 83.683594
+v 86.644600 -52.995415 83.738091
+v 94.239998 -48.943714 82.477989
+v 94.820999 -48.931812 81.061394
+v 94.403000 -50.288811 81.061394
+v 94.782898 -50.290112 79.700592
+v 95.007896 -48.931812 79.704391
+v 94.675697 -50.288811 78.347290
+v 94.917099 -48.931812 78.347290
+v 93.793800 -50.233616 82.250992
+v 92.492302 -52.078712 81.061394
+v 92.493797 -53.006012 78.384491
+v 90.519997 -53.002712 81.061394
+v 87.064201 -53.002716 83.371094
+v 89.778198 -53.002712 81.568092
+v 87.064201 -54.963711 78.347290
+v 89.778198 -54.339710 78.347290
+v 93.899696 -48.925411 76.963295
+v 93.849297 -50.288811 76.793495
+v 92.494904 -50.399410 75.639496
+v 92.492302 -48.931812 76.404091
+v 93.849297 -51.645813 77.920395
+v 93.799500 -51.447113 76.962891
+v 94.024696 -50.288811 76.990295
+v 93.100998 -51.645813 75.633293
+v 92.757599 -53.002712 76.990295
+v 92.452698 -51.674313 74.722694
+v 92.771103 -53.002712 75.633293
+v 91.374901 -48.873611 75.574394
+v 90.469704 -48.931812 74.276192
+v 89.430901 -48.888512 72.937889
+v 91.130600 -50.326412 74.370491
+v 89.754402 -50.404213 72.914589
+v 91.133301 -53.002411 73.105095
+v 89.860603 -51.634811 72.590790
+v 91.135300 -51.645813 73.538490
+v 88.481102 -48.930412 71.446594
+v 88.497498 -50.274513 71.487991
+v 89.778198 -53.002712 72.264389
+v 88.529198 -51.606911 71.419792
+v 87.729698 -51.645813 70.205093
+v 87.860603 -50.288811 70.205093
+v 88.561401 -52.921913 71.461891
+v 87.173203 -53.058613 69.831291
+v 87.064201 -50.986813 67.491089
+v 87.224602 -50.288811 67.491089
+v 92.492302 -53.390713 75.633293
+v 92.372498 -52.991913 74.371689
+v 89.778198 -54.995712 75.633293
+v 87.064201 -55.448711 75.633293
+v 89.778198 -54.546810 72.919189
+v 87.064201 -55.386711 72.919189
+v 87.064201 -53.983810 70.205093
+v 92.551804 -39.211613 62.234692
+v 92.502502 -38.886211 63.510292
+v 92.544899 -41.084812 62.049694
+v 92.222801 -38.075710 64.776993
+v 92.175598 -36.718811 64.776993
+v 92.288696 -40.789711 63.419991
+v 92.068199 -39.432713 64.776993
+v 91.575302 -40.687611 64.989189
+v 91.802902 -42.146713 63.419991
+v 91.134499 -43.498711 63.416893
+v 90.237396 -42.146713 66.133995
+v 92.296799 -42.146713 62.062893
+v 92.591797 -38.152508 58.048294
+v 92.576698 -39.432713 60.705891
+v 92.581703 -39.780006 57.573292
+v 92.491798 -39.366009 56.630791
+v 92.616302 -40.812912 59.406494
+v 92.192101 -40.789707 56.634792
+v 92.276100 -42.146709 57.991791
+v 91.886299 -42.146709 56.634792
+v 89.788597 -44.523312 64.777695
+v 88.617500 -44.860710 67.491089
+v 91.808296 -43.503712 62.062893
+v 91.188904 -44.987213 62.157192
+v 88.481201 -47.574810 64.776993
+v 89.775002 -47.949413 62.106293
+v 92.201302 -43.503712 60.705891
+v 92.317902 -43.503712 59.348892
+v 92.218300 -44.860710 59.348892
+v 91.894897 -44.860710 60.705891
+v 92.174103 -43.503708 57.991791
+v 91.823502 -43.503609 56.632393
+v 92.268097 -46.080708 57.929691
+v 92.033600 -46.206108 56.581394
+v 90.020103 -47.574810 62.062893
+v 91.660400 -47.574810 59.348892
+v 92.058601 -46.217812 59.348892
+v 91.940903 -47.574806 57.991791
+v 91.838303 -47.574806 56.634792
+v 92.482697 -38.120808 54.780094
+v 92.733002 -36.718807 55.277794
+v 92.214203 -39.432709 55.277794
+v 91.532799 -39.777206 53.158493
+v 91.867798 -38.017509 51.346394
+v 91.315399 -39.432709 51.206692
+v 91.284500 -41.073009 54.109093
+v 91.119698 -42.163807 54.418991
+v 90.450699 -42.146709 51.206692
+v 91.159302 -39.432709 48.492592
+v 90.541702 -39.432709 45.778591
+v 90.772301 -42.146709 48.492592
+v 91.499702 -42.146709 45.778591
+v 90.889702 -40.840206 45.747192
+v 90.923698 -43.503708 53.920692
+v 91.591904 -46.217808 55.277794
+v 92.242302 -43.503708 45.778591
+v 92.441704 -46.155506 45.575493
+v 90.488602 -44.860706 48.492592
+v 89.889900 -47.574806 48.492592
+v 88.256798 -50.288811 62.062893
+v 89.778198 -50.288807 57.668293
+v 89.838898 -50.252907 56.198494
+v 89.778198 -49.920712 59.348892
+v 87.064201 -52.230812 62.062893
+v 87.064201 -52.841713 59.348892
+v 89.363701 -50.288811 59.348892
+v 86.992897 -52.994709 56.631794
+v 91.487000 -47.571106 55.256691
+v 89.782501 -49.833107 53.924492
+v 90.999901 -47.574806 53.920692
+v 89.778198 -48.207809 51.206692
+v 89.955803 -47.574806 51.206692
+v 88.671700 -50.288807 51.206692
+v 87.064201 -52.710808 53.920692
+v 87.064201 -52.348808 51.206692
+v 89.778198 -47.909706 48.492592
+v 91.618103 -47.574806 45.778591
+v 87.064201 -52.443707 48.492592
+v 88.648201 -50.288807 48.492592
+v 87.064201 -53.002708 46.872692
+v 87.064201 -53.582809 45.778591
+v 87.670502 -53.002708 45.778591
+v 93.501701 -62.501812 63.419987
+v 92.586502 -61.108910 63.573189
+v 92.571503 -62.390713 64.773193
+v 93.841301 -62.537113 62.064987
+v 92.810699 -60.944511 62.067490
+v 92.574501 -63.865910 64.873795
+v 93.813202 -63.843311 63.344688
+v 94.211700 -63.858810 62.062889
+v 87.064201 -61.144810 65.058594
+v 89.778198 -61.144810 65.565392
+v 89.778198 -60.083710 64.776993
+v 87.064201 -59.702812 64.776993
+v 89.778198 -59.332813 62.062889
+v 89.778198 -63.858810 65.503792
+v 91.675301 -61.144810 64.776993
+v 88.517601 -63.858810 64.776993
+v 87.064201 -62.493813 64.776993
+v 87.064201 -63.858810 63.696690
+v 93.768501 -62.691013 60.746887
+v 92.589500 -61.030113 60.627487
+v 92.995102 -62.501812 59.348888
+v 94.121498 -63.858810 60.705887
+v 93.617203 -63.858810 59.435387
+v 92.492302 -62.501812 58.755489
+v 92.149200 -61.318512 59.437889
+v 92.419998 -63.915508 58.256390
+v 91.174500 -60.937313 59.061687
+v 91.135300 -60.020813 60.705887
+v 89.941002 -59.800812 60.641888
+v 89.778198 -60.518711 59.348888
+v 87.064201 -59.669712 59.348888
+v 89.778198 -61.144810 58.721489
+v 87.064201 -61.144810 58.647888
+v 91.141800 -62.546307 57.980888
+v 89.778198 -63.858807 57.868889
+v 89.770500 -62.477608 57.993290
+v 92.492302 -64.230804 64.776993
+v 93.263802 -65.215805 63.419987
+v 92.492302 -65.215805 64.203293
+v 93.877098 -65.235405 62.085388
+v 92.492302 -65.872711 63.419987
+v 92.492302 -66.394806 62.062889
+v 89.778198 -64.980804 64.776993
+v 89.778198 -66.421806 62.062889
+v 87.064201 -64.698708 62.062889
+v 93.889297 -65.239006 60.656590
+v 92.492302 -66.402809 60.705887
+v 92.492302 -65.810707 59.348888
+v 93.214500 -65.215805 59.348888
+v 89.778198 -65.984711 59.348888
+v 87.411400 -63.858810 59.348888
+v 92.492302 -65.215805 58.778187
+v 91.135300 -63.858807 57.788689
+v 90.119797 -39.432709 44.421494
+v 89.978302 -38.838707 41.707394
+v 89.777496 -38.761707 43.061691
+v 90.531898 -40.789707 44.421494
+v 90.386703 -40.789707 43.064491
+v 90.575302 -40.789707 41.707394
+v 91.403900 -42.013607 40.275791
+v 90.665703 -39.432709 40.350391
+v 91.014099 -42.226009 43.141991
+v 91.037300 -42.108906 41.576691
+v 90.347702 -38.075703 34.922291
+v 90.168503 -36.718807 36.279293
+v 90.828499 -38.075706 36.279293
+v 91.418701 -40.367702 34.951893
+v 92.001999 -40.790409 36.279194
+v 91.676903 -40.789707 38.993393
+v 91.225899 -39.380608 39.020893
+v 92.115799 -40.984608 37.635994
+v 91.550903 -39.432709 37.636391
+v 91.982201 -42.146709 38.993393
+v 93.130402 -44.860706 44.421494
+v 92.490700 -43.643707 44.381592
+v 92.492302 -44.212807 45.778591
+v 92.463997 -45.161308 45.896992
+v 93.104500 -46.217808 44.421494
+v 93.396202 -46.217808 43.064491
+v 93.100098 -44.860706 43.064491
+v 93.203903 -47.574806 43.064491
+v 92.558403 -48.076508 44.174393
+v 93.412003 -46.217808 41.707394
+v 92.768402 -44.766006 41.623592
+v 93.525002 -47.574806 41.707394
+v 93.288803 -46.217808 40.350391
+v 91.994598 -43.503708 40.350391
+v 91.867500 -43.503708 41.707394
+v 92.517197 -44.542408 40.321293
+v 93.034500 -44.833206 37.661793
+v 92.489799 -44.200008 39.058891
+v 93.797699 -47.929108 39.453991
+v 94.275497 -48.950909 37.658394
+v 94.317299 -48.584309 36.254593
+v 92.844597 -43.503708 36.279293
+v 93.371201 -46.217804 34.922291
+v 92.263496 -42.508503 34.880692
+v 93.825600 -47.581104 35.016392
+v 89.904198 -38.538303 33.753792
+v 89.777496 -36.718304 35.051991
+v 87.742699 -39.432705 29.494194
+v 89.228401 -39.432705 32.208191
+v 90.989700 -40.815105 33.783791
+v 91.254097 -41.945004 33.504292
+v 89.778198 -41.041702 32.208191
+v 89.777802 -42.146004 31.954893
+v 90.536697 -42.723602 32.517693
+v 87.064499 -42.157703 29.360592
+v 88.380699 -39.432705 26.780094
+v 88.704597 -36.718803 28.137094
+v 89.778198 -38.075703 26.146494
+v 90.124901 -38.075703 25.423094
+v 89.789597 -39.416603 25.474695
+v 87.064201 -40.545704 26.780094
+v 88.421204 -41.597702 24.065992
+v 89.778198 -41.368805 24.065992
+v 92.486298 -46.219505 33.792992
+v 91.845001 -43.679005 33.622494
+v 91.135300 -44.860703 32.783493
+v 90.324097 -44.864704 32.242893
+v 87.064201 -44.860703 30.525793
+v 87.064201 -42.445705 29.494192
+v 92.476097 -47.634106 33.575493
+v 89.683502 -47.406902 32.223492
+v 89.778198 -47.073704 32.208191
+v 87.064201 -47.574802 31.664093
+v 93.441399 -48.931808 41.707394
+v 92.492302 -49.642807 43.064491
+v 93.156502 -50.297108 41.718292
+v 93.848396 -50.288509 40.349392
+v 93.877899 -49.000607 40.275993
+v 92.492302 -53.002708 41.349693
+v 93.687202 -52.959808 40.070694
+v 93.710999 -51.645809 40.350391
+v 89.772003 -50.460209 45.810894
+v 92.191299 -50.288807 43.064491
+v 89.702103 -53.001907 43.632294
+v 90.433998 -53.002708 43.064491
+v 94.289497 -50.288807 38.993393
+v 93.849297 -51.645809 40.095192
+v 94.341599 -51.645809 38.993393
+v 94.744003 -51.645809 37.636391
+v 94.601501 -50.288807 37.636391
+v 94.290100 -53.002708 38.993393
+v 94.805496 -53.002708 37.636391
+v 94.893097 -52.957008 36.288391
+v 94.694000 -50.288807 36.279293
+v 94.242500 -50.415104 34.917492
+v 94.350197 -53.002705 34.922291
+v 92.492302 -54.877708 40.350391
+v 89.778198 -55.716709 41.186291
+v 91.572701 -55.716709 40.350391
+v 89.778198 -56.471706 40.350391
+v 87.064201 -56.689808 40.350391
+v 92.492302 -55.716709 39.814594
+v 94.523804 -55.716709 37.636391
+v 94.143204 -55.716705 34.922291
+v 92.492302 -57.794708 37.636391
+v 92.492302 -57.465805 34.922291
+v 87.064201 -57.148708 37.636391
+v 89.778198 -57.843807 37.636391
+v 93.856903 -52.954502 34.360592
+v 92.492302 -53.002705 33.611092
+v 92.507301 -51.630203 33.582291
+v 92.529198 -48.902103 33.519093
+v 87.064201 -49.022804 32.208191
+v 89.778198 -50.288803 32.712494
+v 89.778198 -53.002705 33.250492
+v 89.778198 -55.716705 34.109791
+v 92.492302 -55.716705 33.929493
+v 87.743698 -55.727703 34.923794
+v 87.064201 -53.002705 33.715691
+v 89.778198 -56.926804 34.922291
+v 89.841400 -39.420002 21.328495
+v 91.147499 -39.007305 22.692394
+v 91.128799 -40.782005 21.632895
+v 88.430298 -36.980003 21.669094
+v 89.778198 -38.075703 21.641695
+v 88.456596 -39.236603 21.335995
+v 87.069199 -39.434902 21.878994
+v 87.064201 -38.075703 21.853195
+v 91.135300 -40.789703 23.184195
+v 91.342400 -40.789703 22.708994
+v 91.124199 -39.341003 23.852394
+v 90.438797 -40.789703 24.065994
+v 90.809402 -40.789703 21.351994
+v 91.135300 -41.607704 22.708992
+v 90.600899 -42.146706 22.708992
+v 89.778198 -42.146706 23.206993
+v 90.637802 -42.146706 21.351992
+v 86.985298 -41.187405 24.072792
+v 87.064201 -41.082806 22.708992
+v 88.421204 -41.069805 21.351992
+v 88.528900 -42.147003 22.715792
+v 87.064201 -40.789703 22.360195
+v 89.778198 -40.789703 21.046494
+v 89.612297 -42.200504 21.304993
+v 88.405502 -40.832504 21.307795
+v 87.798698 -74.715797 18.637888
+v 87.059196 -73.742104 18.681288
+v 87.058502 -74.718903 19.977688
+v 87.064201 -73.358803 17.957489
+v 87.513298 -73.809097 16.030289
+v 87.707703 -74.639702 12.211087
+v 87.056198 -74.099899 12.313888
+v 91.135300 -76.072800 21.656488
+v 91.135300 -75.761703 21.351988
+v 89.778198 -75.579803 21.351988
+v 91.837898 -77.429703 21.351986
+v 91.467598 -76.072800 21.351988
+v 91.135300 -77.429703 22.179586
+v 90.402603 -77.429703 22.708986
+v 88.413498 -76.364304 22.595587
+v 89.788803 -76.274399 22.501387
+v 89.778198 -77.429703 23.005587
+v 88.408096 -77.430702 23.308987
+v 86.972603 -76.286903 22.475187
+v 91.135300 -75.564796 19.994888
+v 89.747200 -75.563797 19.916588
+v 91.165802 -75.991501 18.943689
+v 91.899200 -76.072800 19.994888
+v 92.348000 -77.429703 19.994886
+v 92.286301 -77.429703 18.637886
+v 88.421204 -75.514801 19.994888
+v 88.421204 -75.771698 21.351988
+v 87.064201 -75.570702 21.351988
+v 88.421204 -75.389801 18.637888
+v 89.778198 -80.143700 22.749687
+v 92.283302 -78.786697 18.637886
+v 92.167603 -78.786697 19.994886
+v 91.200401 -81.479202 20.116488
+v 91.626404 -78.786697 21.351986
+v 91.161400 -80.228798 21.364286
+v 92.079201 -80.143700 18.637886
+v 91.716103 -77.429703 17.280886
+v 91.135300 -76.976700 17.280886
+v 89.778198 -76.502701 17.280886
+v 91.135300 -77.429703 16.731787
+v 88.421204 -75.204803 17.280888
+v 88.139603 -74.715797 17.280888
+v 88.847900 -76.072800 15.923788
+v 88.332497 -74.894203 15.666388
+v 89.080399 -76.072800 17.280888
+v 89.834900 -77.443604 15.744187
+v 88.670898 -76.072800 14.566788
+v 88.449898 -75.855301 12.595987
+v 89.188202 -77.429703 14.566788
+v 88.862900 -77.429703 13.209787
+v 92.086899 -78.786697 17.280886
+v 91.829201 -80.143700 15.923787
+v 91.566399 -78.786697 15.923788
+v 92.053398 -80.143700 17.280886
+v 91.146896 -78.461700 15.567488
+v 89.814201 -78.349403 14.393488
+v 89.530998 -78.860199 13.262387
+v 87.024803 -74.593597 10.417687
+v 88.827698 -77.429703 11.852688
+v 89.059898 -77.429703 10.495687
+v 88.526001 -75.749298 10.367288
+v 87.806396 -75.234596 8.931397
+v 87.577103 -74.715797 10.495687
+v 88.363503 -75.543198 8.988097
+v 87.135201 -75.735397 7.840908
+v 88.404999 -75.875397 7.504668
+v 88.869003 -76.189697 8.297518
+v 89.150597 -76.836502 9.078467
+v 90.062798 -77.551903 7.299138
+v 90.033600 -79.989502 11.748487
+v 90.608597 -80.143700 13.209786
+v 90.295197 -80.143700 10.495687
+v 89.637001 -78.939003 10.514688
+v 89.254898 -78.786697 11.852688
+v 90.643700 -80.143700 9.138686
+v 90.521698 -78.825203 7.828677
+v 90.848602 -80.143700 7.781587
+v 89.948502 -77.094200 6.127007
+v 89.073196 -76.302399 6.534317
+v 89.039597 -76.796501 3.848248
+v 88.965599 -76.815399 1.273888
+v 88.483200 -76.553001 4.104428
+v 89.461197 -77.460800 1.189707
+v 89.738297 -77.512398 4.159338
+v 87.782799 -76.688004 3.609118
+v 88.185303 -76.517197 1.759697
+v 90.793297 -80.143700 6.424587
+v 90.153999 -81.680496 21.403887
+v 91.545898 -81.500702 18.637886
+v 91.017700 -82.270699 18.646786
+v 89.917000 -82.984200 20.030287
+v 89.778198 -83.885696 18.637886
+v 88.756798 -82.857697 21.351986
+v 87.064201 -83.807701 21.351986
+v 91.669701 -81.500702 17.280886
+v 91.678101 -81.500702 15.923787
+v 91.510803 -81.500702 14.566787
+v 91.363098 -80.143700 14.566787
+v 91.138603 -81.492401 12.752187
+v 91.119797 -79.871696 14.292486
+v 91.171997 -82.865700 15.929287
+v 91.234703 -82.857697 14.566787
+v 91.002502 -82.628799 17.546288
+v 89.778198 -85.230797 13.209785
+v 91.140099 -82.849503 13.289786
+v 89.778198 -84.926804 15.923786
+v 89.501602 -85.571701 13.209785
+v 91.001602 -81.500702 11.852687
+v 90.899696 -81.500702 10.495687
+v 90.988602 -82.857697 10.495687
+v 91.028099 -82.857697 11.852687
+v 91.015999 -81.393097 8.467767
+v 91.073502 -82.845901 9.093137
+v 89.778198 -85.571701 11.432786
+v 89.990501 -85.571701 10.495686
+v 90.706497 -85.571701 7.781586
+v 91.296799 -82.857697 6.424587
+v 91.403099 -82.872704 3.873956
+v 91.123199 -81.826698 5.188587
+v 91.123901 -81.840599 2.562037
+v 90.561501 -80.050697 4.642557
+v 90.538002 -80.143700 2.353487
+v 91.232498 -82.916702 1.638777
+v 91.099297 -85.571701 5.067586
+v 87.064201 -87.823700 13.209785
+v 87.064201 -88.696701 7.781586
+v 54.623100 4.158668 135.634003
+v 55.915798 4.056498 133.244003
+v 54.495399 4.679238 133.985992
+v 54.495399 4.920208 132.628006
+v 56.077202 2.878398 135.542999
+v 54.495399 3.537208 136.699005
+v 55.452999 2.635228 136.699005
+v 55.934799 1.343118 136.761002
+v 54.495399 2.635228 137.496994
+v 56.818600 1.278238 135.341995
+v 58.260899 1.247968 132.389999
+v 57.078701 2.580848 133.628006
+v 57.437500 1.459568 134.046997
+v 57.019100 3.812598 131.311005
+v 57.209499 1.278238 134.550995
+v 56.294399 -1.435752 135.341995
+v 58.405300 -1.435752 132.628006
+v 57.204899 -4.136312 132.628998
+v 57.209499 -1.435752 134.203995
+v 54.495399 -4.149742 134.076996
+v 54.495399 -2.831752 135.341995
+v 54.354099 1.256938 138.044006
+v 53.138401 1.999247 138.057007
+v 52.285900 1.278237 138.057007
+v 53.138401 4.411228 135.341995
+v 53.173599 3.797468 136.593994
+v 51.840900 3.924298 135.242996
+v 51.781300 3.992228 134.891006
+v 53.138401 4.830238 133.985992
+v 51.773701 4.811929 132.623993
+v 50.009201 3.992228 132.628006
+v 53.138401 2.635228 137.710007
+v 51.755001 2.747658 136.845993
+v 49.722599 1.278238 135.341995
+v 51.781300 1.278238 137.746994
+v 49.067299 1.278238 134.496994
+v 49.055500 3.999058 132.283997
+v 47.147800 1.278238 132.628006
+v 43.639099 6.314249 132.628006
+v 51.781300 -1.435752 136.927994
+v 54.495399 -1.435752 136.772003
+v 49.575001 -1.435752 135.341995
+v 49.067299 -1.435752 134.910004
+v 51.781300 -3.072772 135.341995
+v 49.067299 -4.149742 133.537994
+v 51.781300 -4.149742 134.337006
+v 46.081600 -4.149742 132.628006
+v 49.067299 -5.632771 132.628006
+v 54.495399 -6.149742 132.628006
+v 38.210999 2.661228 132.628006
+v 32.782902 1.927228 132.628006
+v 11.070300 5.416238 132.628006
+v 66.799202 -4.180129 113.380997
+v 65.380798 -3.455889 113.625999
+v 65.351700 -4.149739 114.342003
+v 66.609596 -3.061668 112.168999
+v 65.313400 -1.765028 112.230003
+v 68.298698 -4.229758 112.189003
+v 68.677597 -3.901998 111.135002
+v 65.351700 -15.005720 123.698997
+v 66.058800 -15.005720 121.772003
+v 65.997002 -12.291720 121.772003
+v 66.995102 -6.596580 118.966003
+v 65.357498 -5.507100 119.053001
+v 65.351700 -6.863790 120.117996
+v 69.422798 -6.863789 117.112999
+v 71.323700 -6.823809 115.164001
+v 69.422096 -5.483719 116.384003
+v 67.833900 -5.518209 117.706001
+v 68.236000 -6.888079 118.165001
+v 65.351700 -4.952779 117.700996
+v 66.708702 -5.072769 117.700996
+v 66.708702 -4.772789 116.344002
+v 68.065697 -8.220779 118.601997
+v 69.372002 -8.300859 117.443001
+v 69.105499 -9.613359 117.722000
+v 70.395401 -9.577779 116.344002
+v 67.704903 -9.603230 119.072998
+v 72.773399 -7.204788 112.526001
+v 71.693398 -5.695029 113.779999
+v 72.234802 -6.790909 113.817001
+v 72.421700 -6.697348 111.639000
+v 71.277802 -5.835648 111.703003
+v 71.285797 -5.324969 113.330002
+v 72.641502 -8.220778 113.630997
+v 71.982597 -8.165849 114.558998
+v 72.566299 -9.579788 113.889999
+v 73.993103 -9.577778 110.916000
+v 73.547699 -8.123978 110.818001
+v 73.309601 -8.530169 112.474998
+v 73.504799 -10.677018 112.347000
+v 69.632500 -4.521809 114.748001
+v 68.065697 -4.551779 114.987000
+v 68.065697 -4.719749 116.344002
+v 70.064003 -4.831318 114.960999
+v 70.362999 -4.783278 114.416000
+v 69.766296 -4.833698 112.460999
+v 70.790703 -5.505269 114.990997
+v 66.708702 -4.716759 114.987000
+v 65.351700 -4.515769 114.987000
+v 65.351700 -4.809769 116.344002
+v 68.189201 -4.512779 113.421997
+v 69.690598 -4.793108 111.536003
+v 65.341797 -10.840820 121.783997
+v 67.790497 -12.291719 119.058998
+v 68.065697 -12.291719 118.716003
+v 70.104897 -12.291719 116.344002
+v 68.065697 -15.005719 118.211998
+v 69.532402 -15.005719 116.344002
+v 72.537903 -11.954618 113.595001
+v 73.487198 -12.081518 112.263000
+v 74.226700 -12.291718 110.916000
+v 74.128700 -10.934818 110.916000
+v 71.996101 -15.005718 113.630997
+v 73.493896 -15.005718 111.896004
+v 70.779800 -15.005719 114.906998
+v 55.852402 4.544229 131.270996
+v 54.495399 5.036229 131.270996
+v 55.852402 4.589209 129.914993
+v 58.705898 1.398049 131.337997
+v 58.040600 2.635229 131.270996
+v 59.147900 1.278239 129.914993
+v 58.514301 2.555399 129.925003
+v 58.709900 1.278239 127.200996
+v 57.209499 2.990209 127.200996
+v 57.166401 3.873089 129.938004
+v 54.497299 4.069499 124.495003
+v 54.495399 4.969220 127.200996
+v 55.754101 3.992229 127.200996
+v 54.611900 3.992230 121.772003
+v 55.016602 6.706220 121.772003
+v 54.495399 6.706220 123.323997
+v 57.209499 1.278239 125.898003
+v 55.334301 1.278240 124.486000
+v 54.495399 1.278240 122.598000
+v 54.495399 2.936260 121.772003
+v 59.618900 -1.435751 127.200996
+v 59.620399 -1.435751 129.914993
+v 59.607300 -4.149741 129.914993
+v 59.898201 -4.149741 127.200996
+v 57.209499 -1.435750 124.708000
+v 54.495399 0.198222 121.772003
+v 58.702702 -4.149741 124.486000
+v 57.209499 -2.124780 124.486000
+v 53.138401 5.082259 132.628006
+v 49.067299 6.706219 130.964996
+v 54.495399 5.096229 129.914993
+v 51.781300 6.228249 129.914993
+v 43.639099 1.278238 132.242004
+v 43.639099 -4.149742 132.141006
+v 54.446701 1.279830 121.378998
+v 57.209499 1.278241 116.872002
+v 57.828800 1.278241 116.344002
+v 55.333801 1.278241 119.058998
+v 61.147800 5.359231 113.364998
+v 59.923500 3.992231 114.560997
+v 61.068802 4.005231 113.432999
+v 59.923500 2.635231 114.642998
+v 61.882401 1.084032 113.641998
+v 61.238899 2.386881 113.536003
+v 61.280602 1.278241 114.035004
+v 59.914200 1.116741 114.969002
+v 63.944901 1.232282 110.877998
+v 62.387798 2.326272 112.164001
+v 61.909401 4.179362 112.264999
+v 62.620201 -1.412799 114.503998
+v 64.612900 -2.389849 113.445999
+v 61.280602 -0.078754 114.702003
+v 60.125801 0.002361 115.154999
+v 63.991199 -0.088214 112.262001
+v 65.113197 -0.089251 110.904999
+v 63.994598 -2.792739 114.226997
+v 62.749599 -2.705709 114.999001
+v 64.405701 -4.099389 114.918999
+v 61.529099 -1.140769 114.987000
+v 61.476601 -4.178359 116.369003
+v 62.637600 -4.149739 116.014000
+v 61.280602 -2.792739 115.633003
+v 60.091599 -3.131549 116.054001
+v 57.893299 -1.435749 116.344002
+v 59.923500 -1.435749 115.578003
+v 60.099899 -5.496911 128.343994
+v 59.962799 -4.148821 128.727005
+v 59.923500 -5.506791 129.378006
+v 60.623600 -6.863791 128.557007
+v 59.923500 -6.658771 129.914993
+v 59.923500 -9.577781 130.602005
+v 61.937199 -9.577781 129.914993
+v 61.100300 -8.212971 129.917999
+v 59.958801 -6.830221 130.009003
+v 63.579899 -9.577781 128.557007
+v 62.637600 -8.409751 128.557007
+v 62.637600 -9.577781 129.531006
+v 63.939899 -9.626121 127.248001
+v 62.637600 -8.521751 127.200996
+v 61.280602 -7.540791 128.557007
+v 61.280602 -7.762781 127.200996
+v 60.445202 -6.920431 125.955002
+v 62.325500 -8.220781 128.557007
+v 57.209499 -6.863791 131.552994
+v 54.495399 -6.863791 132.214005
+v 54.495399 -9.577781 131.061996
+v 59.940800 -5.588641 126.033997
+v 60.499599 -6.863791 124.486000
+v 59.923500 -5.943750 124.486000
+v 61.216301 -6.890400 122.971001
+v 59.923500 -6.008750 123.129997
+v 62.606098 -6.871110 121.776001
+v 61.280602 -6.154740 121.772003
+v 63.490200 -9.577780 125.844002
+v 61.325600 -8.167810 125.844002
+v 61.393200 -8.160360 124.500000
+v 62.637600 -9.022790 125.844002
+v 62.764599 -9.339920 124.456001
+v 63.959599 -8.843890 121.787003
+v 62.637600 -8.220780 122.650002
+v 63.442600 -9.558190 123.103996
+v 64.431801 -9.602930 121.820000
+v 62.221298 -8.220780 123.129997
+v 57.209499 -5.511740 121.772003
+v 57.209499 -4.149740 123.632004
+v 59.925598 -12.328621 129.949005
+v 61.280602 -12.286721 129.585007
+v 61.499802 -11.037521 129.962997
+v 63.801399 -10.817121 128.354004
+v 63.076099 -12.291721 128.557007
+v 62.637600 -10.934821 129.421005
+v 62.637600 -12.291721 128.889008
+v 62.677101 -15.006421 127.227997
+v 59.923500 -15.005721 128.473007
+v 57.209499 -12.291721 130.179993
+v 57.209499 -9.577781 130.968994
+v 54.495399 -12.291721 130.054993
+v 57.209499 -12.907821 129.914993
+v 54.495399 -12.618821 129.914993
+v 57.209499 -15.005721 128.796005
+v 54.495399 -15.005721 128.731995
+v 64.247398 -10.934821 127.200996
+v 64.414299 -10.934820 125.844002
+v 63.994598 -10.157820 125.844002
+v 64.129799 -12.287521 127.359001
+v 63.994598 -10.380720 124.486000
+v 64.705002 -10.934820 123.129997
+v 65.368401 -12.315120 123.719002
+v 64.443703 -10.934820 124.486000
+v 64.782097 -12.290120 125.838997
+v 64.982300 -15.005720 124.486000
+v 49.067299 -9.577781 130.731003
+v 49.067299 -15.005721 128.134995
+v 43.639099 -9.577781 130.115005
+v 63.668900 -5.391500 119.342003
+v 63.994598 -5.506790 119.611000
+v 64.872398 -6.863790 120.415001
+v 63.994598 -6.064780 120.415001
+v 63.994598 -6.863790 120.918999
+v 62.637600 -5.733779 120.415001
+v 61.280602 -5.802750 120.415001
+v 59.923500 -5.940750 120.415001
+v 59.923500 -6.007770 121.772003
+v 63.994598 -5.006789 117.700996
+v 63.994598 -4.680749 116.344002
+v 62.637600 -5.116779 117.700996
+v 65.351700 -9.577780 121.019997
+v 57.209499 -5.117760 119.058998
+v 59.920300 -5.629660 118.806000
+v 56.107899 -4.149740 119.058998
+v 59.923500 -5.056779 117.700996
+v 57.209499 -4.149739 117.964996
+v 59.923500 -4.149739 116.734001
+v 65.351700 2.285263 105.487000
+v 66.789902 1.311203 105.601997
+v 67.453102 1.391833 104.097000
+v 68.075996 1.412033 101.999001
+v 66.708702 2.224223 102.773003
+v 65.402802 2.897753 102.978996
+v 66.684799 2.473374 101.382004
+v 65.351700 3.120224 101.416000
+v 65.351700 3.074264 100.059998
+v 68.753502 1.369124 99.405602
+v 66.567902 2.585984 100.144997
+v 71.215897 -2.559347 106.762001
+v 69.473602 -3.224928 109.357002
+v 70.557297 -4.250508 109.042000
+v 72.106300 -4.102188 106.934998
+v 73.493301 -2.334547 103.624001
+v 66.796402 0.012128 108.831001
+v 64.865097 0.997663 109.694000
+v 65.352097 1.276592 108.241997
+v 67.773598 -1.458028 109.429001
+v 66.464996 -1.587478 110.871002
+v 68.635597 -0.160845 107.027000
+v 69.331100 -0.149431 105.508003
+v 68.065697 0.623213 105.487000
+v 67.378502 -0.211139 108.468002
+v 69.542900 -1.397478 107.600998
+v 71.198799 -1.631917 105.711998
+v 66.301598 1.059983 106.940002
+v 72.355698 -1.352007 103.496002
+v 70.759300 -0.925127 104.693001
+v 72.714600 -1.073137 101.849998
+v 70.604500 -0.340471 101.841003
+v 71.774498 -0.349931 100.210999
+v 73.406403 -1.565077 101.813004
+v 69.514198 -0.011248 102.801003
+v 69.395897 -0.085771 104.119003
+v 69.428398 0.534591 101.125000
+v 69.423500 1.647994 97.345398
+v 68.065697 2.182234 97.345497
+v 68.065697 1.904224 98.702499
+v 65.483002 2.663554 98.748001
+v 66.708702 2.195234 97.345497
+v 65.351700 2.081224 97.345497
+v 70.819298 0.820968 97.438698
+v 69.406097 2.483015 95.416603
+v 69.422401 1.957444 96.645103
+v 68.065697 2.449264 95.988503
+v 70.410896 1.815714 95.196198
+v 68.074699 2.635235 94.631500
+v 66.708702 1.781234 95.988503
+v 68.563301 2.635235 93.274498
+v 69.469101 2.726915 93.530602
+v 68.065697 2.107225 93.274498
+v 68.065697 2.472214 94.631500
+v 70.414803 1.931685 93.226601
+v 71.627502 0.821152 93.425400
+v 70.985802 1.411665 91.833099
+v 69.422798 2.214215 91.917503
+v 67.408600 1.278245 93.274498
+v 66.685699 1.149465 94.704201
+v 70.771500 1.112045 90.363602
+v 69.312401 1.315785 90.492996
+v 72.784103 -0.734330 98.489998
+v 73.721901 -1.503246 97.904800
+v 71.985298 -0.180802 96.883598
+v 71.370903 0.592574 96.305298
+v 74.151001 -2.201366 96.491096
+v 74.057198 -2.271807 101.808998
+v 74.834297 -3.349806 98.574898
+v 75.030899 -3.760816 101.615997
+v 75.353500 -4.615066 95.200104
+v 74.248901 -2.605605 94.329498
+v 65.372002 1.266524 96.014999
+v 65.351700 0.319260 94.631500
+v 72.129097 -0.024490 91.623398
+v 72.033897 -0.134598 90.577202
+v 71.375603 -0.078750 89.203499
+v 70.779800 0.375229 89.203499
+v 72.589798 -1.435745 91.917503
+v 72.021797 -1.384235 89.619301
+v 74.429100 -3.509715 93.333504
+v 73.380699 -2.372575 92.772301
+v 73.533699 -3.871045 91.882500
+v 72.702202 -0.855240 93.945099
+v 72.564400 -4.149735 90.560501
+v 73.017998 -2.792735 91.917503
+v 65.347504 -1.357495 91.847504
+v 69.422798 0.404221 89.203499
+v 68.316597 -0.108108 89.288300
+v 68.065697 0.473252 90.560501
+v 66.991096 -1.435745 89.203499
+v 65.351700 -2.656754 89.203499
+v 77.096603 -10.835317 100.165001
+v 76.028801 -5.641186 100.362000
+v 75.889900 -6.863787 101.416000
+v 75.938004 -9.552507 102.706001
+v 76.981300 -13.648817 105.487999
+v 76.638000 -12.311717 104.539001
+v 76.070801 -12.228917 106.322998
+v 76.286102 -15.005717 106.998001
+v 75.572899 -13.648518 108.202003
+v 77.075600 -15.005717 105.487000
+v 76.695503 -10.934816 101.416000
+v 76.001701 -10.900917 103.538002
+v 76.873802 -12.206017 102.806999
+v 77.192703 -12.291717 101.416000
+v 77.530403 -13.674518 103.780998
+v 77.616302 -14.714017 104.086998
+v 71.999496 -5.997757 109.085999
+v 70.581100 -5.305068 110.606003
+v 72.599602 -6.846878 109.813004
+v 73.544998 -7.551048 108.372002
+v 73.363403 -6.596457 107.198997
+v 72.106400 -5.503007 108.202003
+v 74.270599 -6.864277 105.487000
+v 73.231598 -5.491347 106.462997
+v 73.640999 -3.894057 104.857002
+v 74.546799 -5.506917 104.130997
+v 75.114403 -4.568557 102.447998
+v 74.476799 -3.492757 103.164001
+v 75.093399 -6.914507 103.422997
+v 75.406502 -9.584857 104.137001
+v 74.844498 -8.415668 105.119003
+v 74.757401 -10.942418 109.005997
+v 74.603996 -9.577777 108.202003
+v 74.341003 -9.577778 109.559998
+v 74.888702 -12.598518 109.469002
+v 75.283501 -12.291718 108.202003
+v 75.224197 -10.934817 106.845001
+v 74.953400 -9.594987 105.890999
+v 75.544403 -10.934817 105.487000
+v 74.796402 -14.727418 109.991997
+v 76.181702 -5.179396 98.904099
+v 77.062103 -6.541706 97.789703
+v 75.571800 -4.361956 98.355301
+v 77.606300 -7.033646 95.753700
+v 76.998596 -6.242756 96.210602
+v 76.269600 -5.636556 95.490997
+v 77.437302 -8.899246 98.240799
+v 77.667297 -8.066607 97.115997
+v 78.796898 -9.015215 93.747101
+v 77.989700 -7.682695 93.916496
+v 78.475601 -9.516255 95.798500
+v 76.315002 -6.320325 93.867798
+v 79.735001 -10.521915 90.962799
+v 78.834900 -9.409375 91.023201
+v 78.284103 -8.278825 92.605797
+v 76.098099 -7.008625 92.404198
+v 78.063202 -8.485065 91.828499
+v 76.185501 -8.066485 91.245300
+v 77.346703 -8.918836 90.843597
+v 74.858002 -8.437944 90.396797
+v 77.904999 -13.084617 98.772697
+v 77.565002 -10.753716 98.702499
+v 78.160599 -10.934816 97.345497
+v 79.524597 -12.291716 94.631500
+v 78.919701 -10.997315 95.694397
+v 78.971001 -13.515016 96.397697
+v 78.398499 -12.291717 97.345497
+v 78.649101 -14.194916 97.357597
+v 78.152199 -15.135117 100.651001
+v 78.386703 -15.005716 98.702499
+v 79.601799 -10.695715 92.829201
+v 80.158302 -12.381415 92.482498
+v 78.809799 -10.324214 89.922401
+v 79.664398 -10.929114 89.805801
+v 78.967102 -12.271014 88.282700
+v 80.406998 -12.010715 90.507599
+v 80.505997 -12.291715 89.203499
+v 80.278999 -11.995714 89.203499
+v 77.257004 -11.274915 88.918404
+v 76.172501 -10.392915 89.006599
+v 79.646301 -13.648715 94.631500
+v 79.930298 -14.987215 93.711998
+v 80.428200 -13.662215 92.398804
+v 80.751701 -15.005715 91.917503
+v 80.998001 -13.648714 90.560501
+v 81.301102 -13.648714 89.203499
+v 81.375801 -15.005714 90.560501
+v 81.598602 -14.620614 89.660599
+v 75.479599 -5.861405 92.998802
+v 74.910004 -6.823445 91.565804
+v 75.050003 -5.972855 92.236000
+v 73.497101 -7.129655 90.307098
+v 73.493896 -5.506785 91.034500
+v 73.017502 -5.506785 90.560501
+v 72.757896 -7.085585 89.304100
+v 72.146301 -5.259904 89.213799
+v 73.895500 -8.036334 90.074402
+v 63.290001 5.349222 108.202003
+v 63.177101 3.992232 109.559998
+v 63.651699 3.992233 105.487000
+v 63.014000 2.635232 110.916000
+v 63.721199 2.441942 109.486000
+v 64.013397 2.690472 108.305000
+v 63.477001 3.992232 108.202003
+v 65.351700 1.774213 106.845001
+v 63.855099 3.992233 102.773003
+v 62.637600 5.654223 102.773003
+v 62.637600 6.706223 104.190002
+v 63.848000 3.992234 100.059998
+v 62.637600 5.709214 100.059998
+v 65.370697 2.667953 104.168999
+v 62.637600 5.365214 97.345497
+v 62.637600 2.361254 94.631500
+v 62.637600 3.992234 96.001503
+v 63.227100 3.992235 89.203499
+v 62.637600 1.278245 93.409500
+v 62.447601 1.278245 91.917503
+v 62.644001 3.920395 91.980301
+v 62.654999 1.248035 89.602097
+v 62.637600 0.215256 91.917503
+v 63.088200 -1.435745 89.203499
+v 67.481697 -15.005719 119.058998
+v 65.351700 -16.670719 121.772003
+v 66.591400 -17.719719 119.058998
+v 68.460999 -17.670719 116.632004
+v 65.351700 -17.719719 120.758003
+v 65.351700 -19.852718 119.058998
+v 70.779800 -18.811819 113.630997
+v 72.754997 -20.433718 110.916000
+v 73.493896 -18.507816 110.916000
+v 70.779800 -17.719719 114.058998
+v 68.065697 -19.223820 116.344002
+v 70.012001 -20.433720 113.630997
+v 67.808601 -20.484718 115.869003
+v 70.779800 -20.433720 112.889999
+v 65.351700 -20.433720 118.571999
+v 65.351700 -22.985720 116.344002
+v 70.779800 -23.765717 110.915993
+v 71.216103 -23.147818 110.916000
+v 69.167900 -25.861816 110.915993
+v 65.351700 -25.861818 114.117989
+v 65.720100 -31.290817 110.915993
+v 65.351700 -31.290817 111.152992
+v 65.351700 -36.662720 110.915993
+v 59.923500 -16.380720 127.200996
+v 54.495399 -17.415821 127.200996
+v 61.436199 -20.433720 121.772003
+v 59.923500 -20.433720 122.622002
+v 54.495399 -20.433722 124.821999
+v 59.923500 -21.617720 121.772003
+v 54.495399 -24.580719 121.771996
+v 62.523499 -25.861818 116.343994
+v 59.923500 -25.861818 118.138992
+v 54.495399 -25.861818 120.886993
+v 51.600399 -25.861818 121.771996
+v 59.923500 -28.343819 116.343994
+v 57.383999 -31.290819 116.343994
+v 43.639099 -36.718819 117.985992
+v 54.495399 -36.718819 116.528992
+v 54.495399 -31.290819 117.687996
+v 43.639099 -27.744820 121.771996
+v 77.536797 -17.719717 104.052002
+v 77.884201 -15.005717 102.773003
+v 77.885902 -16.362717 102.773003
+v 77.543098 -19.147516 103.925003
+v 76.969902 -16.623417 105.581001
+v 76.193802 -17.779818 106.859001
+v 77.941597 -18.748417 102.853996
+v 77.812500 -20.492416 103.227997
+v 76.555000 -20.433718 105.487000
+v 78.546997 -20.712017 101.489998
+v 78.410004 -19.076717 101.416000
+v 77.511597 -22.162718 103.473000
+v 76.214699 -22.047916 105.482002
+v 76.086098 -23.300716 105.209999
+v 76.207901 -25.861816 104.186989
+v 77.427498 -25.861816 102.772995
+v 76.888100 -23.147818 104.130997
+v 78.921997 -25.861816 100.615990
+v 79.209297 -25.861816 100.059990
+v 78.930397 -23.794617 100.048996
+v 78.562897 -23.147818 101.416000
+v 78.801003 -20.775417 100.068001
+v 73.657898 -17.801317 110.996002
+v 75.526199 -17.719717 108.202003
+v 75.663902 -16.362717 108.202003
+v 74.887299 -20.433718 108.202003
+v 73.493896 -20.433718 110.042000
+v 76.207901 -20.433718 106.084999
+v 73.609703 -23.183018 108.414001
+v 73.493896 -23.779716 108.201996
+v 70.779800 -25.861816 109.623993
+v 75.095802 -25.861816 105.486992
+v 73.493896 -25.861816 107.177994
+v 72.424103 -25.861816 108.201996
+v 78.506401 -16.262815 98.846703
+v 78.514900 -17.719715 97.345497
+v 78.471100 -17.678316 99.501602
+v 79.347198 -16.362715 94.631500
+v 78.960602 -14.943215 96.315002
+v 78.833702 -16.595615 96.117798
+v 78.648903 -16.362715 97.345497
+v 78.592400 -19.076717 100.059998
+v 78.527000 -19.076715 98.702499
+v 78.388000 -19.076715 97.345497
+v 78.598801 -20.677916 98.638901
+v 78.295998 -20.035816 95.970100
+v 78.632797 -20.094116 94.511497
+v 78.921997 -18.436815 94.631500
+v 78.260002 -21.112215 97.345497
+v 82.296402 -16.362715 89.203499
+v 81.630898 -16.363316 90.463203
+v 81.636002 -17.719715 90.464500
+v 81.636002 -19.076715 90.255501
+v 82.864502 -19.100615 88.887299
+v 82.589600 -17.719715 89.203499
+v 80.024696 -16.511816 93.088501
+v 80.707397 -16.371815 91.918198
+v 80.513802 -17.719715 91.917503
+v 79.038498 -20.387714 93.483704
+v 81.101700 -20.433716 90.560501
+v 78.390701 -22.346115 94.619202
+v 78.102798 -22.469315 95.988503
+v 78.177803 -23.147816 97.345497
+v 79.340698 -25.861814 98.702492
+v 78.929199 -24.735216 98.750595
+v 78.832199 -26.255516 97.366890
+v 78.640198 -23.147816 98.702499
+v 78.285103 -24.504816 97.345490
+v 78.089203 -24.504816 95.988495
+v 78.379204 -24.504816 94.631493
+v 78.971497 -22.454615 93.271896
+v 80.719597 -23.147816 90.560501
+v 81.682404 -24.199215 89.245392
+v 79.848396 -21.790815 91.917503
+v 80.522697 -24.523914 90.712593
+v 78.948700 -24.498215 93.366196
+v 78.988403 -25.866116 93.511696
+v 78.513702 -25.861814 94.631493
+v 80.620697 -25.941114 90.625595
+v 81.638100 -25.860415 89.207596
+v 79.384003 -27.218817 100.059990
+v 78.921097 -28.578716 100.684990
+v 76.207901 -28.575718 103.433990
+v 76.207901 -30.764816 102.772995
+v 76.894798 -28.575718 102.772995
+v 78.921997 -31.290817 100.379990
+v 73.532501 -29.660017 105.450989
+v 74.013802 -28.575718 105.486992
+v 70.779800 -31.290817 107.035995
+v 73.493896 -31.290817 104.891991
+v 76.007797 -31.290817 102.772995
+v 76.207901 -31.290817 102.608994
+v 70.779800 -35.689819 105.486992
+v 67.825104 -36.689419 108.230995
+v 65.351700 -36.718819 110.712990
+v 76.207901 -36.718815 100.998993
+v 73.744598 -36.748215 102.777992
+v 70.512703 -36.688919 105.462990
+v 81.616898 -29.700115 94.669090
+v 81.545197 -28.703915 96.140396
+v 82.217400 -29.933716 95.988495
+v 81.735298 -29.541216 97.298691
+v 81.829498 -31.327715 97.397690
+v 80.173401 -27.463316 98.736893
+v 79.488701 -28.575718 100.059990
+v 80.556801 -28.581715 98.725189
+v 81.305702 -28.575716 97.345490
+v 80.278999 -27.690716 97.345490
+v 79.613701 -27.218815 97.345490
+v 78.931000 -27.209215 95.983391
+v 80.278999 -28.158815 95.988495
+v 80.383698 -28.575016 94.509392
+v 78.963799 -27.175915 94.631691
+v 80.623497 -29.933815 98.872093
+v 80.665001 -32.313015 98.645691
+v 79.510300 -27.219116 93.292389
+v 80.524902 -27.253716 90.925690
+v 79.895302 -25.861814 91.917496
+v 80.278999 -28.575716 93.882492
+v 80.982697 -29.933716 93.274490
+v 80.811600 -29.933716 91.917496
+v 80.166603 -28.333515 92.277992
+v 81.661102 -31.279615 93.020691
+v 81.519501 -31.359215 91.913193
+v 80.948997 -28.575716 90.560493
+v 81.815102 -29.985216 89.392693
+v 81.685898 -28.133915 89.264389
+v 81.636703 -31.227816 90.606094
+v 81.239502 -29.933716 90.560493
+v 82.592903 -31.290815 95.988495
+v 83.051399 -32.901115 95.884193
+v 83.093597 -32.002716 94.286591
+v 82.591202 -31.290815 94.631493
+v 81.744797 -34.028114 97.468590
+v 83.086304 -34.010414 96.023590
+v 83.150902 -35.379814 96.074989
+v 81.636002 -35.361816 97.475494
+v 84.440804 -35.347916 94.719093
+v 84.622902 -34.455914 94.259293
+v 82.993103 -36.718815 96.221489
+v 81.636002 -37.397316 97.273994
+v 84.559998 -36.756317 94.724396
+v 81.826103 -32.700916 97.423889
+v 78.638702 -33.924915 100.004990
+v 80.235397 -34.809616 98.627693
+v 79.743797 -35.629917 98.833992
+v 77.609596 -36.718815 100.059990
+v 82.571503 -32.671116 91.605095
+v 83.369698 -32.587315 93.376595
+v 84.298103 -33.433514 92.424294
+v 84.187401 -33.282814 93.441696
+v 83.516403 -33.525017 90.540596
+v 82.342598 -32.416416 90.536690
+v 83.665604 -33.623814 89.187096
+v 86.380997 -35.103817 91.430695
+v 85.009499 -33.883114 92.778191
+v 85.500504 -34.705116 93.080994
+v 86.486397 -35.815014 92.083191
+v 85.703796 -35.549816 93.240593
+v 85.804199 -36.695614 93.345093
+v 85.541100 -34.768414 88.730095
+v 32.782902 -4.149742 130.968994
+v 21.926600 -0.997764 132.628006
+v 21.926600 -4.149742 131.785995
+v 11.070300 -4.149742 130.673996
+v 0.214082 -4.149741 127.237999
+v 11.070300 -15.005721 127.098000
+v 0.214082 -15.005720 123.474998
+v 21.926600 -36.718819 114.117989
+v 32.782902 -15.005721 127.448997
+v 21.926600 -15.005721 127.321999
+v 0.214082 -34.143719 110.915993
+v 4.717880 -36.718819 110.915993
+v 0.214082 -36.718819 108.737991
+v 69.541397 -47.061020 110.903992
+v 69.203201 -45.803921 110.881996
+v 68.065697 -46.217819 111.806992
+v 65.400803 -47.588520 113.491989
+v 68.065697 -47.574818 111.939995
+v 69.631203 -48.950718 111.052994
+v 68.065697 -48.931820 111.978989
+v 68.065697 -50.288818 111.911995
+v 64.951500 -50.288818 113.630989
+v 69.520302 -50.210819 111.111992
+v 68.065697 -53.002720 111.522995
+v 65.351700 -53.002720 113.187996
+v 54.495399 -42.146721 116.769989
+v 57.208401 -42.214218 116.321991
+v 55.238400 -36.718819 116.343994
+v 62.847099 -39.432720 113.630989
+v 62.637600 -39.134819 113.630989
+v 59.923401 -39.432919 114.929993
+v 61.392399 -36.718819 113.630989
+v 62.637600 -36.718819 112.874992
+v 65.351700 -39.432720 111.926994
+v 65.351700 -37.302719 110.915993
+v 65.126900 -36.718819 110.915993
+v 62.637600 -42.146721 114.422989
+v 59.923500 -42.146721 115.512993
+v 64.316902 -42.146721 113.630989
+v 58.723701 -44.860718 116.343994
+v 57.209499 -44.860718 116.765991
+v 59.923500 -44.860718 115.963989
+v 59.930199 -47.556217 116.343994
+v 43.639099 -47.574818 115.003990
+v 54.495399 -47.574818 117.821991
+v 54.495399 -44.860718 117.203995
+v 59.956402 -53.028820 117.839989
+v 59.923500 -50.288818 116.840996
+v 57.209499 -50.288818 118.095993
+v 57.695202 -53.002720 119.058990
+v 54.495399 -52.340820 119.058990
+v 57.208698 -53.000420 119.101990
+v 62.637600 -47.574818 114.975990
+v 62.637600 -50.288818 115.075989
+v 60.781799 -50.288818 116.343994
+v 63.974201 -52.954220 114.196991
+v 61.424801 -52.951218 116.439995
+v 62.772999 -53.015018 115.203995
+v 60.759201 -54.359718 117.700989
+v 61.878700 -54.408119 116.409996
+v 59.908298 -55.910118 119.058990
+v 61.272800 -55.739719 117.700989
+v 59.923500 -54.359718 118.491989
+v 62.841499 -56.354717 115.998993
+v 59.923500 -58.430717 119.297989
+v 60.853298 -58.484818 118.703995
+v 60.244701 -57.073719 119.058990
+v 62.881001 -58.430717 116.343994
+v 61.944599 -58.438019 117.616989
+v 61.455002 -57.089619 117.960991
+v 57.209499 -55.716721 119.782990
+v 54.495399 -55.716721 119.545990
+v 54.495399 -53.002720 119.213989
+v 57.209499 -58.430717 119.761993
+v 54.495399 -58.430717 119.160995
+v 62.978401 -54.596317 115.287994
+v 64.461601 -54.575920 113.835991
+v 63.618099 -55.701519 114.846992
+v 65.351700 -58.430717 112.538994
+v 64.664803 -57.073719 113.630989
+v 64.413696 -58.250217 113.857994
+v 44.239201 -58.430717 110.915993
+v 77.163300 -39.432716 100.059990
+v 76.207603 -39.432716 100.732994
+v 76.128098 -42.123814 101.249992
+v 77.851402 -43.578114 100.222992
+v 76.293999 -43.158215 101.456993
+v 76.253998 -44.877617 102.248993
+v 77.642899 -46.110516 101.581993
+v 76.356598 -46.160114 102.838989
+v 68.314400 -39.432720 108.201996
+v 68.065697 -38.137817 108.201996
+v 68.065697 -39.432720 108.621994
+v 70.456497 -39.432720 105.486992
+v 69.427200 -42.144718 108.319992
+v 68.675201 -42.522221 109.815994
+v 68.065697 -42.146721 110.436989
+v 70.429802 -42.190319 106.797989
+v 70.779800 -40.794720 105.486992
+v 73.493896 -37.974716 102.772995
+v 70.780403 -39.432915 105.142990
+v 72.321404 -42.146717 104.130989
+v 73.493896 -39.743816 102.772995
+v 72.761703 -43.499714 104.125992
+v 73.558403 -42.142715 103.030991
+v 74.850899 -42.146717 102.171989
+v 71.167000 -45.004620 108.431992
+v 72.443703 -46.018620 107.029991
+v 72.469398 -44.860718 105.486992
+v 71.798203 -43.283714 105.297989
+v 74.401199 -47.553616 105.293991
+v 73.528397 -46.456814 105.304993
+v 73.475899 -47.817421 106.763992
+v 67.869400 -42.583321 110.915993
+v 68.285004 -43.503719 110.915993
+v 69.422798 -44.860718 110.370995
+v 70.367996 -43.503719 108.201996
+v 71.114098 -47.627621 109.678993
+v 70.777603 -46.225121 109.557991
+v 74.850899 -44.860714 103.132996
+v 73.493896 -43.503716 103.455994
+v 73.473099 -44.889614 104.112991
+v 74.889198 -43.631817 102.564995
+v 74.750999 -46.478615 104.180992
+v 75.738098 -47.574814 104.130989
+v 76.207901 -47.574814 103.702995
+v 84.577202 -38.370514 94.726692
+v 83.006104 -39.432716 95.999489
+v 81.190102 -39.432716 97.345490
+v 78.921997 -39.432716 98.871490
+v 77.572998 -42.145016 100.057991
+v 81.636002 -42.146717 96.806496
+v 80.338898 -42.201214 97.808891
+v 85.982697 -38.137417 93.274590
+v 87.309502 -39.450817 91.938591
+v 85.882500 -39.404613 93.351295
+v 83.387497 -47.574814 94.631493
+v 81.613998 -44.823517 96.928589
+v 81.630302 -47.570915 97.204590
+v 79.950104 -45.157413 98.658195
+v 79.249496 -43.527615 98.854889
+v 80.624901 -43.499416 97.664291
+v 79.072899 -42.152916 98.789291
+v 81.401802 -46.217815 97.345490
+v 80.373001 -47.006916 98.749596
+v 78.951401 -47.600014 100.657990
+v 84.350098 -44.860714 93.708496
+v 85.818298 -44.860714 91.917496
+v 84.262398 -42.087017 94.471092
+v 83.643898 -44.860714 94.631493
+v 84.350098 -47.574814 92.912491
+v 84.941704 -47.574814 91.917496
+v 77.396202 -48.936916 102.737991
+v 76.221703 -48.935215 104.112991
+v 77.686699 -50.251614 102.332993
+v 80.251900 -50.343414 98.931389
+v 78.831398 -48.929214 100.970993
+v 77.276299 -47.573017 102.612991
+v 78.930000 -53.051216 100.059990
+v 77.611504 -52.324314 102.094994
+v 75.929604 -53.681213 104.130989
+v 76.862396 -54.293514 102.828995
+v 77.791397 -58.430714 100.059990
+v 76.409401 -57.160717 103.092995
+v 76.213600 -58.719215 102.957993
+v 72.483299 -48.824818 108.452995
+v 72.332603 -47.208321 108.168991
+v 71.038696 -49.384819 110.013992
+v 71.857903 -50.870518 109.299995
+v 73.091698 -50.245018 107.937996
+v 74.850899 -48.682720 105.486992
+v 75.179497 -50.170521 105.422989
+v 73.757202 -48.941319 106.851990
+v 75.100800 -51.645821 105.486992
+v 73.765198 -51.906620 107.202995
+v 74.378998 -54.131519 106.165993
+v 71.022102 -52.504120 109.864990
+v 69.221497 -53.002720 110.915993
+v 72.231300 -52.917118 108.764992
+v 73.536598 -56.770020 106.864990
+v 74.624001 -56.942421 105.534996
+v 72.355003 -55.716721 108.201996
+v 73.493896 -58.430717 106.473991
+v 70.779800 -55.716721 109.344994
+v 68.067101 -55.770020 110.917992
+v 82.811096 -50.288815 94.631493
+v 81.562698 -50.298317 97.063194
+v 81.640900 -53.063515 94.748695
+v 80.526299 -48.931816 98.702492
+v 81.536598 -48.931816 97.345490
+v 80.579399 -53.002716 97.345490
+v 84.350098 -49.155815 91.917496
+v 85.422699 -50.288815 89.203491
+v 82.326500 -53.002716 91.917496
+v 83.207802 -53.002716 89.203491
+v 84.350098 -51.743816 89.203491
+v 78.921997 -55.716717 99.025490
+v 80.211899 -55.716717 94.631493
+v 79.551201 -55.716717 97.345490
+v 78.921997 -57.509815 97.345490
+v 81.636002 -54.422714 89.203491
+v 65.659203 -61.144817 110.915993
+v 66.988098 -58.430717 110.915993
+v 65.426003 -61.511021 110.923996
+v 59.944500 -59.873219 119.058990
+v 62.725899 -60.022419 116.476990
+v 61.280602 -59.787720 118.190994
+v 61.793499 -59.787720 117.700989
+v 61.258099 -61.131218 117.675995
+v 59.923500 -61.144817 118.511993
+v 62.334599 -61.144817 116.343994
+v 57.209499 -60.594719 119.058990
+v 54.495399 -58.742718 119.058990
+v 57.209499 -61.144817 118.733994
+v 59.923500 -63.145821 116.343994
+v 54.495399 -61.144817 117.742989
+v 57.209499 -63.482719 116.343994
+v 63.580898 -59.787720 114.986992
+v 64.180000 -59.989319 113.689995
+v 62.713600 -61.157719 115.731995
+v 62.637600 -62.676819 113.630989
+v 63.754101 -61.144817 113.630989
+v 57.209499 -63.858818 115.756996
+v 54.495399 -62.592819 116.343994
+v 54.495399 -63.858818 114.533989
+v 61.154999 -63.858818 113.630989
+v 59.923500 -63.858818 114.945992
+v 59.923500 -65.210815 110.915993
+v 62.938099 -63.858818 110.915993
+v 62.637600 -63.858818 111.326996
+v 54.495399 -65.203712 110.915993
+v 76.207901 -61.144814 101.425995
+v 76.777901 -61.144814 100.059990
+v 76.207901 -62.255714 100.059990
+v 70.779800 -58.430717 108.636993
+v 70.779800 -59.729717 108.201996
+v 71.508499 -58.430717 108.201996
+v 68.065697 -58.430717 110.190994
+v 65.351700 -63.858818 108.851990
+v 70.779800 -61.144817 107.612991
+v 75.463898 -61.144814 102.772995
+v 74.630302 -58.431915 105.240990
+v 73.445198 -61.105320 105.433990
+v 73.493896 -63.858814 103.084991
+v 73.716499 -63.858814 102.772995
+v 75.114799 -63.858814 100.059990
+v 70.779800 -63.858818 105.674995
+v 70.779800 -64.052711 105.486992
+v 71.051598 -63.858818 105.486992
+v 70.779800 -66.870712 100.059990
+v 78.772697 -58.396915 94.632393
+v 78.581703 -58.430714 97.345490
+v 77.351303 -61.144814 97.345490
+v 76.207901 -63.018715 97.345490
+v 76.207901 -62.417717 94.631493
+v 77.124100 -61.144814 94.631493
+v 76.207901 -59.851715 89.203491
+v 77.645401 -58.430714 89.203491
+v 74.963898 -63.858814 94.631493
+v 75.565498 -63.858814 97.345490
+v 70.919296 -63.858814 89.203491
+v 70.779800 -66.515717 94.631493
+v 59.923500 -66.626816 105.486992
+v 65.351700 -66.155815 105.486992
+v 54.495399 -66.164719 105.486992
+v 65.351700 -67.861816 100.059990
+v 59.923500 -67.653717 100.059990
+v 54.495399 -68.104713 89.203491
+v 65.351700 -66.283813 89.203491
+v 65.351700 -67.844719 94.631493
+v 43.639099 -58.430717 110.810989
+v 43.639099 -58.276718 110.915993
+v 71.315399 -1.435744 87.846603
+v 70.783798 -0.257338 88.420502
+v 70.779800 -1.435744 87.325600
+v 71.612900 -2.792734 87.846603
+v 72.227402 -3.192765 90.126503
+v 70.779900 -2.797434 86.490097
+v 71.747597 -5.462844 87.912102
+v 70.861000 -4.172864 86.206902
+v 69.424004 -0.344985 88.150497
+v 68.016197 -1.459244 87.569199
+v 68.065697 -2.352734 86.489502
+v 69.422798 -1.435744 87.049500
+v 65.351700 -2.849744 86.489502
+v 65.351700 -1.132763 81.061401
+v 65.854401 -1.435743 78.347298
+v 65.350601 -0.061414 78.353203
+v 66.205200 -4.149734 81.061401
+v 65.441902 -1.435743 81.061401
+v 65.351700 -1.435743 82.000999
+v 65.351700 -2.178784 83.775497
+v 66.266403 -4.149734 83.775497
+v 66.200401 -2.792733 78.347298
+v 65.414200 4.172958 68.856400
+v 66.261200 3.371759 66.798798
+v 65.118103 5.706409 67.419998
+v 67.844299 1.237659 70.036697
+v 65.601402 3.079699 70.595596
+v 66.679100 1.226188 71.508499
+v 67.934097 2.019279 68.830902
+v 66.005997 3.332629 69.095497
+v 66.801300 2.802179 67.647499
+v 68.065697 1.956229 67.491096
+v 66.160103 -1.435742 76.990303
+v 65.511398 0.063891 77.116898
+v 66.667801 -1.393752 74.856102
+v 65.958199 -0.065014 75.569099
+v 67.181000 -1.435742 72.919197
+v 66.671303 -0.097119 73.304703
+v 66.609398 -4.367753 78.407700
+v 66.691704 -4.491282 76.958199
+v 66.431198 -2.794383 76.990898
+v 66.665901 -3.827222 75.999802
+v 66.877098 -4.086862 74.419098
+v 67.272697 -4.165842 72.059898
+v 68.351799 -1.435741 70.205101
+v 68.076797 0.324391 70.274200
+v 67.804398 -1.461862 71.240898
+v 67.469498 -0.078747 71.562202
+v 65.418098 2.186878 72.456200
+v 68.506699 1.278249 68.848099
+v 67.478600 -2.792732 71.562202
+v 67.621101 -4.373481 70.843597
+v 68.021599 -4.153761 70.130501
+v 68.065697 -3.330761 70.205101
+v 69.431396 -4.090221 68.668297
+v 70.831596 -4.520521 67.300201
+v 70.164597 -2.792731 67.491096
+v 69.294800 -2.734871 68.723801
+v 81.637001 -15.013515 86.499901
+v 81.636002 -14.264814 87.846603
+v 82.031601 -15.005714 87.846603
+v 80.267197 -12.898515 87.865700
+v 77.559402 -12.765414 87.725601
+v 76.207901 -11.571713 83.775497
+v 76.156197 -10.978515 85.106598
+v 76.642403 -12.291715 85.132500
+v 80.278999 -13.648714 87.097099
+v 81.216103 -13.648714 87.846603
+v 78.921997 -13.648714 87.214302
+v 80.278999 -14.333714 86.489502
+v 78.921600 -14.923815 86.091400
+v 80.278999 -15.005714 85.913002
+v 77.008598 -13.648714 85.132500
+v 76.640404 -12.291715 86.489502
+v 77.535202 -13.883414 86.471100
+v 76.971100 -13.648713 83.775497
+v 76.544502 -12.291714 83.775497
+v 77.602097 -14.900114 85.032997
+v 77.565002 -15.005713 84.223000
+v 76.246101 -12.840914 82.634598
+v 77.509499 -15.289713 82.363899
+v 77.556000 -15.029714 83.782402
+v 76.920898 -15.005713 81.061401
+v 76.195702 -13.711413 81.133400
+v 76.833801 -13.648712 78.347298
+v 76.190598 -12.379912 78.338898
+v 76.213997 -13.657713 79.826202
+v 74.937798 -9.822704 88.163597
+v 73.026001 -8.715224 87.746696
+v 74.712303 -9.092915 89.575897
+v 72.142502 -9.553114 85.843697
+v 72.139099 -8.226514 87.019096
+v 73.323502 -9.583264 86.939400
+v 70.960602 -8.065994 85.188301
+v 70.779800 -8.220774 84.168900
+v 70.579803 -7.233474 85.035797
+v 71.958603 -9.868784 85.322403
+v 71.473602 -9.577773 83.775497
+v 70.779800 -5.506784 86.036003
+v 69.913597 -6.863784 83.775497
+v 68.065697 -5.652784 83.775497
+v 68.065697 -4.149734 84.958000
+v 70.779800 -8.245744 83.775497
+v 72.416100 -6.863783 78.347298
+v 70.779800 -6.604753 78.347298
+v 70.779800 -6.863783 80.201698
+v 71.990501 -9.695144 82.386803
+v 74.723801 -9.577772 78.347298
+v 73.493896 -7.602733 78.347298
+v 73.493896 -9.577773 79.993301
+v 72.754601 -9.577773 81.061401
+v 70.779800 -7.121783 81.061401
+v 70.034203 -6.863783 81.061401
+v 68.065697 -6.361773 81.061401
+v 66.763000 -5.469313 80.949097
+v 67.170303 -5.506783 79.704399
+v 66.533401 -4.426463 79.710098
+v 67.239899 -5.506783 78.347298
+v 68.065697 -6.184763 79.704399
+v 76.179604 -11.031414 87.929100
+v 74.529999 -10.179214 86.248901
+v 76.038101 -10.938614 86.731003
+v 75.343102 -10.445614 85.062103
+v 72.385399 -10.828114 83.761803
+v 73.538803 -10.522214 85.137299
+v 75.428001 -12.291714 82.418404
+v 74.850899 -12.046813 82.418404
+v 74.876999 -10.983414 83.849899
+v 73.493896 -11.542713 82.418404
+v 74.853699 -12.284714 81.060097
+v 73.565102 -10.928113 81.065903
+v 72.773399 -10.934813 82.418404
+v 73.493896 -11.163814 83.775497
+v 75.359200 -12.291714 79.704399
+v 76.895103 -9.577772 75.633301
+v 75.923798 -8.325512 75.607803
+v 76.152000 -9.586682 76.724701
+v 76.207901 -9.169752 74.276199
+v 76.354401 -11.057612 77.273300
+v 77.564400 -10.879112 75.645401
+v 77.575401 -13.133412 76.908203
+v 78.960800 -12.335212 72.938103
+v 78.921997 -11.818712 74.276199
+v 79.347900 -12.291713 74.276199
+v 78.187897 -10.934813 74.276199
+v 77.565002 -10.221712 74.276199
+v 76.488098 -9.319352 74.232903
+v 77.565002 -10.934813 73.519997
+v 76.288399 -10.944212 73.259102
+v 78.921997 -12.291713 74.877197
+v 78.258499 -12.291713 75.633301
+v 77.565002 -11.959711 72.919197
+v 78.921997 -15.005713 76.410896
+v 80.210403 -15.089712 75.630501
+v 78.987503 -13.410712 75.570099
+v 80.278999 -13.648712 74.721901
+v 80.351601 -13.227212 74.259499
+v 80.278999 -13.035811 72.919197
+v 81.636002 -15.005713 74.972504
+v 82.023804 -14.808112 74.295700
+v 80.982803 -13.648711 72.919197
+v 81.692200 -14.629211 72.865402
+v 76.207901 -12.291712 72.546600
+v 80.278999 -13.648711 72.392303
+v 78.921997 -13.648711 72.185303
+v 80.278999 -15.005712 71.717903
+v 78.889397 -14.997611 71.614799
+v 76.207901 -15.005712 70.447800
+v 76.078102 -13.851711 71.577301
+v 72.033302 -6.879343 75.623299
+v 70.888702 -6.859572 75.195602
+v 70.779800 -6.653762 76.990303
+v 74.850899 -7.603772 75.633301
+v 73.493896 -7.102732 75.633301
+v 74.625603 -8.150642 74.418503
+v 74.850899 -9.577772 73.457603
+v 73.515404 -9.141921 72.953903
+v 73.052696 -8.202043 73.392799
+v 72.136803 -7.305742 74.276199
+v 71.773102 -8.214791 71.969002
+v 70.779800 -7.400772 72.919197
+v 69.336502 -7.057382 74.353203
+v 69.422798 -6.703753 76.990303
+v 68.067001 -6.869582 75.327202
+v 66.902100 -5.506783 75.633301
+v 67.033302 -5.506783 76.990303
+v 68.065697 -6.185743 78.347298
+v 68.065697 -6.486773 76.990303
+v 66.987000 -5.506782 74.276199
+v 67.905403 -6.929882 74.293098
+v 68.024399 -6.913282 72.891403
+v 67.417297 -6.137092 72.783798
+v 69.422798 -7.284742 72.919197
+v 72.035500 -7.363721 67.608803
+v 70.779800 -5.506781 67.930099
+v 71.400299 -8.220772 70.205101
+v 70.779800 -7.645761 71.562202
+v 72.146301 -8.900031 71.642998
+v 71.958603 -9.477302 70.580101
+v 71.747597 -8.220772 68.848099
+v 70.789299 -6.837232 68.984497
+v 70.779800 -7.535781 70.205101
+v 72.383698 -10.295411 69.184097
+v 72.817902 -10.717812 68.426498
+v 73.099297 -10.419011 67.654900
+v 69.666100 -6.868422 70.097504
+v 68.018097 -5.457161 70.320900
+v 68.067001 -6.175362 70.893402
+v 68.194603 -6.881972 71.832497
+v 69.422798 -4.777781 68.848099
+v 69.830299 -5.448621 68.760803
+v 69.422798 -7.295732 71.562202
+v 74.972397 -11.491912 72.541801
+v 73.493896 -10.934812 71.948898
+v 73.593002 -11.813011 71.370499
+v 72.759804 -10.890712 71.158798
+v 72.788902 -11.389011 70.096001
+v 74.603104 -13.492711 68.691498
+v 73.722900 -11.600811 67.675400
+v 74.922897 -13.030611 71.463203
+v 74.807899 -13.656712 70.327003
+v 75.915802 -14.854712 70.220901
+v 75.815002 -14.927112 68.848000
+v 76.150200 -14.872312 67.685303
+v 75.022400 -13.488711 67.523003
+v 63.980000 3.992236 86.489502
+v 64.481598 3.992236 83.775497
+v 64.847603 6.706226 83.775497
+v 63.724201 1.278246 86.489502
+v 64.362602 3.992237 81.061401
+v 63.575100 3.992237 78.347298
+v 63.461800 5.349227 78.347298
+v 64.452904 1.278246 83.775497
+v 64.701897 1.278247 81.061401
+v 64.669998 1.278247 78.347298
+v 63.996498 2.633657 78.348602
+v 64.127800 -1.435744 86.489502
+v 65.069000 -1.435744 83.775497
+v 63.238400 5.349227 76.990303
+v 63.356098 5.372978 75.637802
+v 63.419498 3.992237 76.990303
+v 63.647400 4.002248 75.634399
+v 63.523300 6.706228 74.276199
+v 63.742699 7.244368 72.753304
+v 63.952599 2.627677 76.849098
+v 64.072304 2.823048 75.676598
+v 64.635201 2.635238 74.276199
+v 64.803101 3.730818 71.966003
+v 77.052597 -1.167370 62.011600
+v 76.207901 -1.435740 63.142601
+v 76.207901 -2.792730 63.105701
+v 76.207901 -4.149730 62.890301
+v 76.772797 -4.149730 62.062901
+v 77.031998 -2.792730 62.062901
+v 77.211098 -1.621410 61.098202
+v 76.381599 0.376211 61.258499
+v 76.995003 -1.161940 59.880402
+v 76.096298 -1.405039 57.895901
+v 76.126198 -0.705943 58.878899
+v 76.945900 -1.269850 58.719898
+v 77.500000 -3.966500 60.143700
+v 77.954399 -2.825269 58.046398
+v 77.538696 -2.908760 60.114201
+v 77.545303 -2.112620 57.993198
+v 77.462700 -2.128610 59.581100
+v 77.565002 -2.792729 56.999298
+v 76.207901 -2.792729 57.278301
+v 76.875702 -1.452219 58.000099
+v 77.567497 -3.708749 56.624100
+v 78.223396 -4.149730 57.991798
+v 66.067101 4.447130 64.943497
+v 66.770500 2.642449 66.156799
+v 68.057098 1.309559 66.121300
+v 67.246300 1.278249 64.777000
+v 66.911102 1.965809 64.751099
+v 66.637703 2.776599 65.637299
+v 67.151100 1.128590 64.015602
+v 73.920303 1.278250 62.062901
+v 74.850899 1.615220 62.062901
+v 74.847397 1.310290 61.246799
+v 65.702400 4.652700 62.405602
+v 65.882004 3.992240 60.705898
+v 66.074600 3.992240 57.991798
+v 67.067398 -0.424265 59.853001
+v 66.408203 1.956720 59.348900
+v 66.414703 1.957270 61.384399
+v 67.062897 -0.078744 56.634800
+v 66.387199 3.653011 55.956299
+v 76.208504 -0.077281 62.741901
+v 76.153702 0.538381 62.330299
+v 75.015198 0.275320 63.406502
+v 74.005096 -0.078745 63.419998
+v 74.866402 0.608755 63.314098
+v 74.843102 1.442680 62.856499
+v 74.129997 -1.435740 63.419998
+v 71.391899 -2.792731 64.777000
+v 70.779800 -2.200751 64.777000
+v 70.767303 -2.581921 66.217300
+v 71.556702 -4.149731 66.134003
+v 72.136803 -4.149731 65.392601
+v 72.136803 -3.482740 64.777000
+v 75.019897 -2.827400 63.496700
+v 73.493896 -1.435740 62.927299
+v 73.299301 -1.435740 62.062901
+v 72.752800 -2.792730 62.062901
+v 73.493896 -4.149731 64.386703
+v 73.485497 -2.444160 63.457199
+v 72.596901 -2.792730 63.419998
+v 72.818001 -4.149731 64.777000
+v 72.136803 -2.920730 63.419998
+v 69.482101 -0.012889 66.095398
+v 68.049004 0.149647 64.728500
+v 69.439201 -1.013191 64.817299
+v 70.291603 -1.435741 66.134003
+v 67.568497 -0.027903 63.430698
+v 68.013702 -0.709605 63.421299
+v 68.672302 -2.374460 61.610401
+v 69.422798 -2.114760 63.419998
+v 69.421997 -2.983710 61.953201
+v 70.776199 -2.792490 63.427200
+v 70.779800 -3.614760 62.062901
+v 75.483101 1.402090 61.817600
+v 74.099098 -0.078745 60.705898
+v 73.494698 -0.329478 62.065498
+v 74.790100 -1.423110 58.923901
+v 74.848396 -0.663157 59.383202
+v 70.779800 -4.149730 61.277599
+v 72.136803 -3.403760 62.062901
+v 73.393997 -2.717840 60.642399
+v 73.531601 -1.528760 60.908501
+v 66.944504 -0.059946 58.053600
+v 67.393700 -1.435739 57.991798
+v 69.465401 -3.962660 60.612099
+v 68.089897 -2.875250 58.823200
+v 68.670898 -3.601510 59.597198
+v 68.539398 -4.149730 57.991798
+v 66.235397 5.349231 54.599300
+v 66.844803 2.114741 54.599300
+v 67.049797 3.313772 51.546001
+v 67.111504 1.278251 53.920700
+v 67.863800 0.272941 50.563202
+v 66.941002 6.706233 47.814098
+v 67.497101 4.670712 45.778599
+v 67.209702 7.384693 45.099998
+v 67.526604 3.313772 48.492599
+v 68.023003 0.749748 48.492599
+v 67.386597 -0.757272 55.277802
+v 67.723396 -1.435739 53.920700
+v 68.119202 -3.929269 55.277802
+v 68.239502 -3.874459 53.242199
+v 68.327499 -2.792728 51.206699
+v 67.919800 2.635243 44.421501
+v 68.391502 -0.418037 45.439301
+v 68.541801 -3.471258 49.849602
+v 68.628601 -5.506779 51.885201
+v 68.668404 -3.471258 47.135601
+v 68.877998 -4.489017 46.457100
+v 76.659500 -5.793040 62.023602
+v 76.207901 -5.506780 62.887699
+v 76.207901 -6.863780 63.147499
+v 76.876701 -8.220771 62.062901
+v 78.161697 -5.506779 56.634800
+v 78.031197 -4.149729 56.634800
+v 78.182404 -5.506780 57.991798
+v 77.876900 -6.863780 59.348900
+v 78.510399 -6.863780 57.991798
+v 77.454803 -6.917610 60.170601
+v 78.249199 -8.220770 59.348900
+v 77.578400 -8.962899 60.680801
+v 78.653297 -9.305799 59.252499
+v 79.717400 -8.220770 56.634800
+v 78.796898 -6.870619 56.641701
+v 78.917297 -7.884530 58.128899
+v 79.747704 -9.577769 57.991798
+v 76.390404 -10.498410 63.812599
+v 77.733398 -10.577209 61.039299
+v 77.128098 -12.291711 63.419994
+v 75.993103 -10.779011 64.492897
+v 76.240898 -12.158610 64.795097
+v 77.660301 -12.197411 62.141197
+v 77.430702 -13.415311 63.968494
+v 81.264801 -13.583810 57.870094
+v 82.878998 -13.528210 56.584595
+v 82.041702 -12.326209 56.641197
+v 83.513199 -15.005710 56.634796
+v 81.608902 -14.911909 58.046597
+v 78.544601 -12.200410 60.593998
+v 79.193802 -11.498710 59.387901
+v 80.327698 -12.469410 58.370598
+v 80.403000 -11.087210 57.811901
+v 81.636002 -11.612710 56.634800
+v 80.103500 -14.178809 59.348896
+v 79.399597 -14.702109 60.750095
+v 78.323898 -13.648710 62.062897
+v 73.056602 -6.691051 66.018097
+v 75.479500 -4.149731 63.419998
+v 74.850899 -4.149731 63.764400
+v 73.493896 -4.886731 64.777000
+v 73.471001 -7.971691 66.149597
+v 73.970001 -9.945081 66.290703
+v 75.102501 -8.247081 64.824402
+v 70.779800 -4.598760 60.705898
+v 73.496101 -4.148449 59.528702
+v 72.173897 -5.519480 59.363899
+v 70.508400 -5.695630 59.418098
+v 74.172203 -6.863779 56.634800
+v 73.496300 -7.355109 56.644901
+v 73.493896 -6.018750 57.991798
+v 74.884003 -4.151500 57.993801
+v 73.493896 -5.506780 58.463001
+v 76.488197 -4.264229 56.748299
+v 76.116302 -5.234869 56.630001
+v 72.155296 -6.847539 57.762402
+v 70.779800 -7.571729 56.634800
+v 70.790398 -6.781199 57.925999
+v 69.422798 -4.832769 59.348900
+v 69.383698 -5.587170 58.162201
+v 68.836700 -5.506779 56.634800
+v 67.992897 -3.190559 56.908001
+v 69.588303 -6.793099 56.620399
+v 76.135300 -13.697810 66.140099
+v 77.565002 -5.506779 56.222500
+v 80.644501 -9.686110 56.769199
+v 80.430496 -9.390698 55.168800
+v 78.941902 -9.449589 53.987099
+v 78.935501 -7.842299 55.313999
+v 77.571999 -6.869579 55.465000
+v 77.565002 -8.220769 54.428001
+v 76.207901 -8.220769 54.348801
+v 76.211403 -6.936719 55.471901
+v 77.565002 -8.852729 53.920700
+v 76.207901 -8.673779 53.920700
+v 76.207901 -9.577768 52.985500
+v 84.342201 -15.015809 55.278297
+v 83.344398 -13.648708 55.277798
+v 83.563904 -15.000109 53.968197
+v 81.959396 -13.715609 53.580196
+v 82.101501 -15.560409 51.765594
+v 81.294197 -10.934810 56.634800
+v 81.612999 -11.181509 55.285099
+v 80.257004 -10.915109 53.954800
+v 81.610298 -12.812009 54.054497
+v 78.921997 -10.934809 52.974602
+v 80.026604 -12.185108 53.038998
+v 78.938599 -13.602509 50.947998
+v 80.576401 -13.432709 52.599396
+v 80.790703 -15.171808 51.046295
+v 77.860001 -12.291709 51.206696
+v 76.207901 -12.291709 50.017696
+v 76.207901 -11.235708 51.206699
+v 79.377899 -14.917409 49.878197
+v 78.469299 -15.151108 48.628696
+v 76.207901 -13.518707 48.492596
+v 76.173599 -15.035108 46.120296
+v 73.493896 -9.577768 53.750702
+v 73.493896 -9.466748 53.920700
+v 69.386803 -6.900769 55.841301
+v 68.883202 -6.863779 52.563702
+v 68.895699 -6.863778 51.206699
+v 70.597298 -8.333689 55.319199
+v 69.777901 -8.220769 53.920700
+v 69.422699 -7.734569 53.920601
+v 68.982399 -6.863779 53.920700
+v 69.432098 -8.244578 52.368500
+v 70.780502 -9.579908 52.426201
+v 70.176697 -9.577768 51.206699
+v 69.021698 -6.863778 49.171101
+v 68.817902 -5.506778 49.171101
+v 69.242203 -6.304028 46.117802
+v 69.916397 -9.577768 49.849602
+v 69.342697 -8.406138 49.952000
+v 69.343498 -8.351149 51.261700
+v 69.859497 -9.571358 48.494999
+v 73.394096 -11.025409 51.154701
+v 72.111603 -10.669509 51.215599
+v 70.779800 -10.032808 51.206699
+v 73.493896 -11.677709 49.849602
+v 72.127197 -11.784708 48.592297
+v 70.779800 -10.518708 49.849602
+v 70.784401 -10.939908 48.329399
+v 73.457199 -12.299007 48.621696
+v 72.174301 -12.336107 46.830997
+v 75.867699 -15.005708 45.778595
+v 73.493896 -13.393707 45.778595
+v 70.134804 -9.577767 45.778599
+v 69.947899 -9.567508 47.134201
+v 70.729103 -10.990108 47.139500
+v 82.911499 -16.723614 86.304001
+v 82.807701 -16.574715 87.857903
+v 82.731400 -16.926113 85.300499
+v 81.691597 -16.559914 84.855598
+v 82.192497 -17.700714 83.346497
+v 83.084702 -17.665615 88.265404
+v 83.591400 -19.076715 87.846603
+v 84.476303 -19.450413 86.253998
+v 83.938301 -18.418314 86.191597
+v 83.160202 -20.818716 88.340103
+v 83.700203 -20.433716 87.846603
+v 82.365799 -20.433716 89.203499
+v 84.433800 -20.431513 86.977303
+v 85.538399 -21.440214 85.741699
+v 85.755600 -21.194014 84.747299
+v 80.283501 -16.311113 84.657898
+v 78.921997 -15.660814 85.132500
+v 84.994102 -20.722414 82.260696
+v 84.282997 -19.808514 81.376198
+v 84.799400 -20.548313 79.859703
+v 83.670502 -19.108013 81.544403
+v 83.289398 -18.012213 84.000603
+v 84.350098 -19.643713 79.704399
+v 85.131203 -20.433714 78.347298
+v 84.434402 -18.918613 78.233002
+v 83.875504 -19.076714 79.704399
+v 82.993103 -18.597713 79.704399
+v 81.636002 -18.488813 79.704399
+v 82.980698 -18.609413 81.369499
+v 82.993103 -18.168814 78.347298
+v 81.636002 -18.280813 78.347298
+v 80.172203 -17.899214 81.575302
+v 80.278999 -16.916714 83.775497
+v 78.293602 -16.362713 82.418404
+v 77.565102 -16.363213 81.058296
+v 78.917297 -16.365814 83.786499
+v 78.921997 -16.903713 82.418404
+v 78.924896 -17.712214 81.008202
+v 77.449097 -16.624514 79.592102
+v 76.886497 -15.005713 79.704399
+v 77.771896 -16.362713 78.347298
+v 77.557800 -15.477013 78.225899
+v 78.247803 -17.719713 79.704399
+v 80.278999 -18.461714 79.704399
+v 78.921997 -18.119814 79.704399
+v 80.278999 -18.297714 78.347298
+v 78.839302 -17.792713 78.271004
+v 84.899101 -21.992413 86.638496
+v 82.979103 -24.864614 87.895996
+v 84.350098 -23.147814 87.052803
+v 85.034203 -23.298113 86.498703
+v 84.350098 -27.218813 86.582695
+v 82.926697 -27.143312 87.747093
+v 85.707100 -24.504814 85.918892
+v 86.592903 -24.504814 85.132492
+v 86.301399 -23.147814 85.132500
+v 85.707100 -23.147814 85.875000
+v 86.583199 -23.147814 83.775497
+v 85.719498 -25.849014 85.849091
+v 85.868301 -21.680513 83.459503
+v 85.314499 -21.770014 81.517403
+v 85.247200 -21.790813 79.704399
+v 85.469803 -22.010113 78.272003
+v 85.480598 -23.187014 79.715500
+v 85.625900 -23.070414 81.341698
+v 87.064201 -25.861813 82.889694
+v 87.067902 -27.064114 82.450691
+v 86.419098 -24.504814 82.418396
+v 85.985497 -25.861813 81.061394
+v 85.708397 -24.154013 81.018295
+v 85.737099 -25.832014 79.674690
+v 85.786102 -25.774214 78.289391
+v 82.444801 -16.362711 75.633301
+v 81.636002 -15.895812 75.633301
+v 81.636002 -16.362711 75.991501
+v 82.346001 -16.362711 72.919197
+v 82.677002 -16.362711 74.276199
+v 82.993103 -16.987711 75.633301
+v 82.988899 -17.509312 74.190201
+v 85.362602 -20.433714 76.990303
+v 84.461197 -18.706314 77.025497
+v 84.899597 -20.433712 75.633301
+v 84.456001 -19.438211 76.036598
+v 82.992401 -17.476213 76.996201
+v 84.148300 -20.600311 74.488503
+v 83.396698 -19.076712 74.276199
+v 83.401497 -17.719612 75.633301
+v 83.003197 -19.389311 72.967697
+v 82.660896 -17.719711 72.919197
+v 83.335800 -20.433712 72.919197
+v 80.278999 -16.362713 76.306000
+v 80.315201 -17.634912 77.182899
+v 81.695503 -17.510513 77.014503
+v 78.929298 -16.367914 77.003502
+v 78.291100 -15.005713 76.990303
+v 80.279099 -17.719812 71.028900
+v 81.522499 -16.507912 71.682503
+v 81.882004 -19.080612 71.494499
+v 81.636002 -20.433712 71.018799
+v 82.785103 -20.688011 71.727898
+v 78.921997 -16.362711 71.112099
+v 80.380898 -15.773412 71.451202
+v 78.925003 -18.646212 70.225601
+v 78.393303 -17.719711 70.205101
+v 77.459999 -16.391512 70.205597
+v 77.438202 -16.590912 68.841599
+v 77.610901 -16.382912 67.876404
+v 78.137199 -17.719711 68.848099
+v 78.834000 -17.879112 67.280800
+v 79.850998 -20.433712 70.205101
+v 78.936401 -19.044012 70.115898
+v 78.901299 -19.651211 68.849899
+v 79.925400 -20.693211 67.450600
+v 79.119202 -19.149811 67.697502
+v 79.206100 -20.433712 68.848099
+v 85.706001 -21.789413 76.984200
+v 85.739403 -21.711111 75.578400
+v 85.842003 -23.102514 76.990997
+v 86.232300 -23.147812 75.633301
+v 85.065498 -21.790812 74.276199
+v 85.707100 -22.374811 74.276199
+v 85.713203 -23.148911 72.963699
+v 86.314003 -23.147812 74.276199
+v 84.328003 -21.933212 73.060097
+v 85.989700 -25.796413 77.121391
+v 86.381798 -24.504812 75.633293
+v 86.422997 -25.861811 75.633293
+v 86.785599 -24.504812 74.276192
+v 83.070999 -21.548512 71.497398
+v 81.491699 -21.910412 70.219200
+v 84.353798 -23.152611 71.326797
+v 83.493301 -23.149311 70.232101
+v 85.707100 -23.854712 71.562195
+v 86.175499 -24.371412 70.420990
+v 84.350098 -23.627712 70.205093
+v 84.350098 -23.953711 68.848091
+v 85.977303 -24.479612 68.849396
+v 86.028397 -24.473112 67.492195
+v 82.433899 -23.149212 67.439301
+v 80.278999 -21.790812 69.604202
+v 80.122597 -21.989311 68.857498
+v 80.278999 -20.984711 70.205101
+v 80.365402 -21.786911 67.751099
+v 81.636002 -23.027811 68.848099
+v 81.636002 -22.732712 67.491096
+v 86.393402 -28.575714 85.132492
+v 84.350098 -28.575714 86.510490
+v 82.967400 -29.934713 87.730995
+v 82.935402 -28.552914 87.711189
+v 84.353104 -29.934013 86.498192
+v 83.046501 -31.254915 87.833595
+v 82.209297 -31.290815 89.203491
+v 84.385498 -31.286314 86.564690
+v 86.247597 -29.929913 85.206390
+v 86.048500 -27.218813 79.704391
+v 86.158203 -27.218813 78.347290
+v 86.533302 -28.575714 79.704391
+v 86.342003 -27.218813 81.061394
+v 84.769897 -32.546215 86.561989
+v 83.624901 -33.040714 87.893494
+v 84.752098 -34.055416 87.818092
+v 82.937698 -32.667114 88.893990
+v 86.571297 -32.647816 85.132492
+v 85.707100 -32.647816 85.894791
+v 85.717499 -33.978313 86.494591
+v 86.422997 -27.218813 76.990295
+v 86.670303 -27.218811 75.633293
+v 81.320000 -19.770111 64.891296
+v 82.790497 -20.017710 63.159595
+v 81.568604 -19.105009 63.057495
+v 82.577103 -20.500212 64.445396
+v 81.573997 -19.107109 62.006695
+v 83.841400 -20.535110 62.178898
+v 79.421303 -17.719711 66.134003
+v 78.859497 -16.496611 65.985001
+v 79.147499 -16.247711 64.816803
+v 77.333801 -13.924810 64.821701
+v 78.247498 -15.005711 64.777000
+v 80.215202 -17.572609 63.680996
+v 78.752998 -15.239511 63.410194
+v 79.641296 -16.362709 62.062897
+v 78.927498 -14.980511 62.096695
+v 80.397598 -17.654909 62.020096
+v 80.413597 -19.292011 65.718002
+v 80.747498 -18.615612 64.408096
+v 84.323601 -16.350010 56.305397
+v 81.892197 -16.571609 58.239197
+v 82.634102 -17.716810 57.849697
+v 82.456200 -20.472710 59.332195
+v 81.918404 -19.767010 60.688797
+v 82.915901 -20.614309 60.432697
+v 82.746498 -19.054810 57.954895
+v 81.325600 -17.636410 59.231598
+v 81.705299 -19.161110 59.408794
+v 84.283203 -19.669409 56.639397
+v 83.097900 -20.354210 58.006298
+v 80.210197 -16.617409 60.563496
+v 80.843903 -16.362709 59.348896
+v 81.399597 -19.076710 60.705894
+v 80.674400 -17.719709 60.705894
+v 85.729797 -23.164412 65.088203
+v 84.465401 -21.341110 64.328903
+v 84.325302 -23.148911 66.117996
+v 83.042099 -22.488411 66.155296
+v 81.741798 -21.753511 66.271004
+v 85.707100 -21.790810 63.849598
+v 85.084999 -21.093210 63.401997
+v 86.328598 -21.685709 63.105797
+v 84.941704 -21.303009 60.951195
+v 85.912300 -21.267910 62.436295
+v 86.596497 -22.065809 60.848095
+v 84.890602 -21.757710 59.373398
+v 83.685699 -21.252110 59.327797
+v 85.218597 -21.790810 56.634796
+v 84.348198 -20.441610 56.790096
+v 84.362503 -21.568510 57.972897
+v 85.830803 -22.648409 57.996098
+v 86.184898 -23.147810 56.634796
+v 85.156197 -16.362709 55.277798
+v 85.638100 -16.566910 53.899796
+v 84.350098 -15.658809 53.920696
+v 84.352600 -17.719009 56.439995
+v 85.606697 -17.648209 55.172295
+v 84.166801 -16.198210 53.022697
+v 85.704201 -17.237207 52.466297
+v 84.493301 -17.970907 50.824295
+v 86.936501 -19.076708 52.563698
+v 86.430000 -18.466007 51.144295
+v 85.035202 -18.248707 50.426098
+v 86.351196 -17.719707 52.563698
+v 86.500298 -19.076710 53.920696
+v 81.590698 -16.387108 49.903797
+v 82.634399 -16.311207 51.392395
+v 82.993103 -17.271708 49.849598
+v 82.969101 -17.402208 49.145596
+v 83.303497 -17.778507 47.884895
+v 81.615601 -17.804308 47.159798
+v 81.636002 -17.115707 48.492596
+v 86.366699 -19.033308 49.203396
+v 84.620697 -18.176908 47.484398
+v 85.678101 -18.898607 46.886295
+v 84.380501 -19.077307 45.777996
+v 81.630302 -18.901407 45.597195
+v 83.520500 -18.131807 47.122097
+v 80.257599 -16.365707 48.698296
+v 79.213402 -17.719707 45.778595
+v 78.921997 -17.517807 45.778595
+v 85.689003 -21.748209 55.803898
+v 85.781998 -20.363510 55.255497
+v 86.533203 -23.147810 55.277798
+v 85.707100 -22.478809 56.634796
+v 67.613297 4.670713 44.421501
+v 67.703598 5.349233 43.064499
+v 67.581001 7.384693 42.725201
+v 68.495003 3.313774 39.671902
+v 67.964798 3.317863 43.074100
+v 68.450203 0.939019 42.725201
+v 68.934799 2.635244 34.922298
+v 68.629700 3.313774 38.314899
+v 68.986504 0.599786 38.314899
+v 68.695602 5.349235 33.565300
+v 68.774399 -1.435737 43.743000
+v 69.049698 -1.096507 41.028900
+v 68.726303 1.278253 40.350399
+v 69.263199 -3.835757 43.064499
+v 69.613998 -4.828257 41.028900
+v 69.625000 -3.471256 37.636398
+v 69.351997 -0.442328 35.583401
+v 70.127701 -5.846016 35.939999
+v 68.870201 4.670715 32.208199
+v 69.314598 2.013235 32.208199
+v 69.458900 1.788995 30.851200
+v 68.886597 4.670715 29.494200
+v 68.753799 5.349236 26.780100
+v 68.361397 6.706235 28.137102
+v 68.898804 4.670715 28.137100
+v 68.646797 6.197506 23.641901
+v 68.072502 7.380126 26.472101
+v 69.151604 3.992246 26.780100
+v 69.407501 3.992246 23.892500
+v 69.733704 1.278255 28.137100
+v 69.833504 -0.078740 30.851200
+v 70.110397 -1.435735 30.172701
+v 70.448502 -1.435734 26.101601
+v 70.232903 -0.078739 25.762300
+v 70.755600 -2.274234 23.345100
+v 69.885803 -7.542307 43.403702
+v 69.726601 -8.220768 45.778599
+v 70.284698 -9.577888 44.421700
+v 70.438797 -8.220766 37.297100
+v 70.159500 -4.149725 32.886700
+v 69.857101 -2.283875 33.565300
+v 69.869400 -6.185246 40.689602
+v 70.363998 -8.899237 41.368099
+v 70.546700 -8.220766 34.243801
+v 70.823303 -9.551826 35.233601
+v 70.747704 -9.772836 37.638599
+v 71.733299 -12.291708 44.421497
+v 70.775200 -10.925008 44.027401
+v 70.759804 -10.975107 45.774799
+v 71.620003 -12.291707 43.064495
+v 71.573898 -12.291707 41.707397
+v 70.841003 -10.877506 41.698002
+v 74.448700 -15.005707 43.064495
+v 73.493896 -14.205707 43.064495
+v 70.991898 -10.934807 39.671902
+v 71.149902 -10.934806 37.636398
+v 71.598999 -12.262406 39.427296
+v 71.977898 -12.355206 37.025097
+v 71.331001 -10.934806 36.279301
+v 71.523300 -10.934806 34.922298
+v 73.493896 -14.579805 37.636395
+v 74.645500 -15.005706 34.922295
+v 72.412903 -12.147606 34.872597
+v 73.928398 -15.005706 37.636395
+v 76.246597 -15.001305 29.528797
+v 76.197098 -14.990805 26.861898
+v 76.207901 -14.784705 28.137098
+v 75.353699 -13.648705 29.494299
+v 70.481201 -5.167545 30.172701
+v 70.535202 -7.542305 32.886700
+v 70.988403 -9.574285 29.527298
+v 70.796402 -9.444526 32.720200
+v 71.170898 -9.577765 27.458597
+v 70.816002 -6.863775 28.137098
+v 70.476898 -2.792725 27.797899
+v 71.541100 -10.934806 32.208199
+v 71.660500 -10.990806 33.675499
+v 72.996300 -12.335906 33.456997
+v 72.136803 -11.483806 32.208199
+v 71.440903 -10.925905 30.226997
+v 72.136803 -11.519805 30.851198
+v 72.136803 -11.587805 29.494198
+v 76.207901 -16.029705 32.208195
+v 74.850899 -14.059806 32.208195
+v 74.327003 -13.461406 32.364098
+v 73.449997 -12.210805 31.227798
+v 74.850899 -13.023705 29.494198
+v 74.947502 -13.459805 30.699099
+v 71.443398 -10.934805 28.137098
+v 71.481400 -10.934805 26.780098
+v 72.921303 -12.291705 28.137098
+v 72.136803 -11.810705 28.137098
+v 72.156799 -12.339105 26.581497
+v 71.567703 -10.934804 25.423098
+v 71.439598 -9.577764 24.744497
+v 71.681396 -10.934804 24.065998
+v 72.012802 -12.553304 25.394197
+v 75.023201 -13.352105 28.094398
+v 73.447899 -13.343605 26.803598
+v 73.536003 -12.388205 28.401098
+v 74.850899 -14.013704 26.780098
+v 75.484497 -14.983904 25.519299
+v 73.469803 -14.936704 24.792599
+v 72.174400 -13.364304 24.288698
+v 72.581703 -13.648704 25.423098
+v 69.675598 3.992247 20.334101
+v 69.943604 4.161987 17.959400
+v 69.959999 1.956726 23.387501
+v 70.046700 2.635247 20.673401
+v 70.310402 2.635247 18.637899
+v 70.476997 0.599789 21.153799
+v 70.626801 4.670718 12.921801
+v 70.111198 5.349237 14.566801
+v 71.039001 2.839538 13.888300
+v 70.986900 -4.828254 24.405300
+v 71.253304 -5.506774 22.709000
+v 71.215500 -3.471253 20.843100
+v 71.846703 -2.792723 15.923800
+v 71.098099 -1.435733 19.316401
+v 71.728104 -1.435732 15.245300
+v 70.998802 0.649716 17.315001
+v 71.680496 -0.078737 13.888300
+v 71.416000 1.278258 13.888300
+v 72.442902 -4.828252 13.209799
+v 72.058601 -1.435732 12.481800
+v 71.305397 3.313778 10.495701
+v 71.635803 2.974549 8.120871
+v 71.771202 1.278258 10.495700
+v 72.109497 2.491519 4.506001
+v 72.121399 0.739440 7.551330
+v 72.485703 0.599791 3.710500
+v 71.945000 5.349240 0.996500
+v 71.963997 -0.078737 11.174200
+v 72.600601 -2.114201 6.424600
+v 72.803001 -2.453431 4.049799
+v 72.914703 -5.337101 8.290519
+v 73.037399 -5.846011 6.424599
+v 72.992798 -4.828250 3.710499
+v 72.860497 -1.435730 0.996499
+v 71.268303 -7.542304 24.405298
+v 71.796898 -6.354923 19.313698
+v 71.786598 -10.256304 22.030499
+v 72.015297 -12.707504 23.658298
+v 72.295097 -13.648703 19.994898
+v 72.456200 -13.648703 18.637897
+v 72.146500 -10.934803 19.316399
+v 72.454002 -15.005704 21.351997
+v 72.470596 -15.005703 19.994898
+v 72.801498 -15.296303 17.690298
+v 72.434196 -8.899233 16.263098
+v 72.761902 -12.291703 15.923799
+v 72.884804 -9.917052 13.888298
+v 72.994202 -11.613202 13.888298
+v 72.919296 -14.327203 15.923799
+v 73.197800 -8.899232 9.817198
+v 73.228302 -8.220761 7.103098
+v 73.096497 -7.118230 1.505369
+v 72.946701 -3.471250 1.674999
+v 73.255203 -9.577761 3.031998
+v 73.254898 -8.729681 5.067569
+v 73.432297 -12.970301 7.781598
+v 73.247498 -11.613202 11.174198
+v 73.362900 -15.684302 9.817197
+v 73.397003 -15.684301 7.781598
+v 73.386101 -11.613201 5.576458
+v 73.196701 -10.256300 1.335718
+v 73.275200 -12.970301 3.031998
+v 73.355301 -15.005701 5.746098
+v 73.430397 -13.648701 6.424598
+v 85.674599 -20.519007 44.583996
+v 85.707100 -19.448708 45.778595
+v 84.610901 -20.430807 44.421394
+v 82.984497 -20.383108 44.281296
+v 78.635201 -20.453106 40.330997
+v 76.207901 -16.577808 43.064495
+v 76.720001 -17.719706 34.922295
+v 76.207901 -17.025806 34.922295
+v 76.229599 -17.616205 37.633995
+v 78.437202 -20.526405 37.636898
+v 76.310204 -17.569305 40.350998
+v 86.327499 -21.790808 44.421497
+v 85.707100 -21.790808 43.926994
+v 86.565300 -23.368507 44.421696
+v 85.707100 -23.147808 43.577896
+v 84.325600 -23.164207 42.820297
+v 84.350098 -21.790808 43.451397
+v 82.943100 -21.955507 43.014595
+v 81.625099 -20.414608 43.964596
+v 81.636002 -23.147808 41.237698
+v 85.412498 -24.612108 43.124695
+v 84.350098 -25.861807 41.817696
+v 85.585602 -25.861807 43.210297
+v 81.570000 -23.694805 40.349697
+v 83.307098 -25.861805 40.350395
+v 82.944298 -25.861805 37.636395
+v 81.636002 -24.167706 37.636395
+v 80.719002 -23.147806 37.636395
+v 81.689102 -23.247406 34.364296
+v 78.919098 -20.429007 34.940197
+v 73.806702 -15.005707 40.350395
+v 77.405197 -17.719706 32.208195
+v 80.423500 -20.433706 29.494196
+v 78.921997 -19.298805 32.208195
+v 80.043701 -20.433706 32.208195
+v 78.921997 -18.631805 29.494196
+v 77.078201 -16.362703 26.780098
+v 78.066803 -17.719706 29.494196
+v 76.983902 -16.362703 25.423098
+v 76.207901 -15.355803 25.423098
+v 77.729500 -17.728804 26.816795
+v 77.561203 -17.675703 24.125496
+v 77.101501 -16.362703 24.065998
+v 77.565002 -17.719704 25.638796
+v 78.922501 -20.310305 26.736897
+v 78.248100 -20.433704 24.065996
+v 77.947800 -19.076704 24.065996
+v 81.774399 -22.795805 31.017397
+v 81.768204 -22.943306 32.208195
+v 82.834602 -24.574306 32.226795
+v 82.613403 -24.644905 29.467196
+v 81.709099 -23.145105 29.280195
+v 82.852501 -24.588806 30.863396
+v 84.089203 -26.169405 32.455795
+v 81.640503 -23.027206 33.556995
+v 81.658798 -24.387604 27.956396
+v 83.049797 -25.875204 27.644896
+v 78.921997 -23.147804 24.992897
+v 78.663902 -23.147804 24.065996
+v 76.207901 -15.262804 24.065998
+v 74.850899 -15.446704 24.065998
+v 73.493896 -15.348804 24.065998
+v 72.989799 -15.005704 24.065998
+v 87.064201 -31.290808 44.030098
+v 86.646202 -31.290808 43.064495
+v 85.853302 -28.575708 43.064495
+v 87.064201 -28.575708 44.867397
+v 84.350098 -27.577806 40.350395
+v 84.350098 -28.010706 37.636395
+v 84.902397 -28.575706 34.922295
+v 84.273903 -27.219206 34.462097
+v 84.745201 -28.575706 37.636395
+v 83.728699 -26.047806 34.094395
+v 84.914200 -28.575706 40.350395
+v 86.526901 -31.290806 40.350395
+v 86.737396 -31.290806 34.922295
+v 84.874496 -27.220306 32.208595
+v 85.532303 -27.352705 30.860596
+v 84.295197 -26.075605 30.902697
+v 85.672096 -27.323406 29.485996
+v 84.182404 -26.032705 29.600496
+v 86.367996 -28.575706 30.851196
+v 85.707100 -28.575706 31.997696
+v 86.342796 -27.932404 29.042397
+v 86.234703 -29.933706 32.208397
+v 85.131500 -28.575706 33.565296
+v 84.412697 -26.891705 26.766996
+v 84.350098 -26.453703 28.137096
+v 85.452904 -27.340704 27.948597
+v 85.766502 -27.619104 26.133297
+v 83.420799 -25.861803 28.137096
+v 82.993103 -26.528704 26.780096
+v 81.632599 -25.861404 26.780796
+v 85.822098 -27.870804 25.333796
+v 87.377899 -28.652103 25.603197
+v 84.350098 -27.218803 26.093596
+v 84.350098 -27.822803 25.423096
+v 85.900002 -28.363304 24.639196
+v 84.350098 -28.575705 24.896996
+v 82.993103 -27.218803 26.155096
+v 81.636002 -27.218803 25.901596
+v 85.929199 -29.379604 24.003695
+v 84.034500 -31.266705 24.070095
+v 84.350098 -29.933704 24.313694
+v 81.636002 -31.290804 24.207294
+v 81.636002 -28.446703 25.386097
+v 83.030197 -28.434103 25.403795
+v 79.682503 -28.575705 24.065996
+v 79.012398 -25.861803 24.065996
+v 86.747704 -31.290806 32.208195
+v 87.064201 -32.206703 32.208195
+v 81.636002 -31.595804 24.065994
+v 81.097504 -31.290804 24.065994
+v 77.424698 -16.352203 22.674198
+v 76.417099 -14.787904 22.678398
+v 76.207901 -15.005704 23.286898
+v 76.207901 -15.355803 21.351997
+v 77.565002 -17.037704 21.351997
+v 77.727798 -17.719704 22.708996
+v 76.205704 -16.363903 20.030998
+v 77.416496 -16.362703 21.351997
+v 77.262199 -17.719704 19.994896
+v 77.556099 -18.991304 19.819397
+v 78.174797 -20.433704 22.708996
+v 77.981102 -19.452904 21.363596
+v 77.225403 -19.076704 18.637896
+v 76.204803 -17.754904 18.588396
+v 77.510696 -20.295303 17.948196
+v 76.506401 -19.076702 17.280895
+v 76.208099 -18.913301 17.280396
+v 76.943901 -20.433702 15.923798
+v 76.214798 -20.410902 15.550097
+v 78.266197 -22.998003 19.902096
+v 78.264801 -22.196703 21.387096
+v 78.081902 -21.790804 18.637896
+v 77.899696 -20.430704 19.990995
+v 78.416496 -23.147804 18.637896
+v 78.921997 -25.861803 23.882597
+v 78.921997 -25.331703 24.065996
+v 78.310600 -24.504805 21.351995
+v 78.314903 -24.504805 19.994896
+v 78.414101 -25.861803 18.637896
+v 78.515900 -24.504805 18.637896
+v 78.089302 -21.790802 17.280895
+v 77.548798 -20.661102 17.104197
+v 79.424103 -23.147802 14.566796
+v 78.921997 -22.521702 14.566796
+v 78.807800 -23.002602 16.342695
+v 76.207901 -21.790802 14.136696
+v 77.565002 -21.529701 14.566796
+v 77.565002 -21.790802 14.153296
+v 78.134003 -21.790802 15.923797
+v 78.084900 -21.790802 14.566796
+v 79.053101 -22.991503 13.013896
+v 77.056396 -23.029802 13.249696
+v 75.812302 -23.189901 13.264396
+v 79.528397 -24.504803 15.923797
+v 78.921501 -24.345402 17.300396
+v 78.921997 -25.350801 17.280895
+v 79.584099 -25.859602 15.926796
+v 80.468201 -24.842802 14.127496
+v 80.304001 -24.272501 13.216796
+v 79.400703 -23.147802 13.209796
+v 80.487900 -25.861702 14.583197
+v 74.850899 -15.794703 22.708998
+v 74.838898 -16.311804 21.074198
+v 73.493401 -16.368803 21.031698
+v 73.493896 -15.904704 22.708998
+v 72.568398 -15.005704 22.708998
+v 74.366402 -17.723104 18.644896
+v 73.514603 -17.425203 18.481197
+v 73.493896 -16.724705 19.994898
+v 74.850899 -16.873703 19.994898
+v 73.058403 -16.362703 19.994898
+v 72.884903 -16.362703 18.637897
+v 72.971901 -16.387701 17.266798
+v 73.406700 -17.961502 17.399897
+v 73.105301 -17.668102 14.565297
+v 73.162697 -17.719702 13.209797
+v 73.182297 -14.327202 12.531199
+v 73.003403 -13.648702 14.566798
+v 73.138100 -17.719702 15.923798
+v 73.491402 -18.920502 15.927097
+v 74.834198 -18.918701 17.112597
+v 74.922897 -20.184801 15.626997
+v 73.496399 -20.215601 13.302697
+v 73.394699 -19.511002 14.575597
+v 73.993202 -20.433702 14.566797
+v 73.262703 -19.076702 13.209797
+v 76.207901 -21.306803 14.566796
+v 74.867996 -21.456501 14.126796
+v 74.184898 -21.790802 13.209796
+v 74.878899 -22.854902 13.082096
+v 78.921997 -24.504803 12.347596
+v 73.328796 -18.059002 9.817197
+v 73.312599 -19.076702 11.852697
+v 73.493103 -20.430502 12.601197
+v 73.229599 -19.076702 8.460147
+v 73.341698 -20.433702 10.495697
+v 73.155998 -15.853801 3.880147
+v 72.977699 -19.755201 6.424597
+v 72.540298 -20.773001 4.039797
+v 72.881897 -17.041201 2.353497
+v 72.324203 -20.620100 2.014247
+v 73.639099 -21.790802 11.852696
+v 73.896698 -23.147802 11.852696
+v 73.426201 -23.178001 10.689396
+v 73.469299 -21.572802 11.163596
+v 73.188400 -21.187302 9.263696
+v 74.850899 -24.504803 12.457896
+v 76.207901 -24.504803 12.838296
+v 74.159401 -24.504803 11.852696
+v 73.427803 -24.538603 10.640797
+v 76.207901 -25.861801 12.690796
+v 74.850899 -25.861801 12.232697
+v 74.369301 -25.861801 11.852696
+v 73.451599 -25.869402 10.602496
+v 72.877899 -25.861801 9.138696
+v 73.020203 -23.944601 9.250776
+v 72.136803 -24.641701 5.067596
+v 72.860001 -22.469301 7.781596
+v 72.195000 -25.861801 6.424596
+v 71.569901 -25.183300 2.014246
+v 85.579002 -31.573404 23.533995
+v 78.921997 -28.575705 23.001196
+v 78.285599 -25.861803 21.351995
+v 78.244598 -25.861803 19.994896
+v 78.289398 -28.575705 21.351995
+v 78.921997 -31.290804 22.470995
+v 78.088898 -28.575705 18.637896
+v 78.311897 -31.290804 21.351994
+v 79.525299 -28.575703 14.566795
+v 79.302002 -27.226902 15.911695
+v 78.921997 -28.575703 15.603095
+v 80.493401 -27.421501 14.478496
+v 80.278999 -28.487701 13.209795
+v 81.309097 -27.218801 13.209795
+v 78.919098 -28.575401 13.246495
+v 78.734497 -28.575703 15.923796
+v 84.350098 -32.647804 23.694094
+v 85.578499 -34.657303 22.926195
+v 84.350098 -34.004803 23.461195
+v 81.636002 -34.004803 23.324394
+v 76.207901 -36.718803 17.626493
+v 73.197098 -36.718803 13.209794
+v 73.493896 -35.780804 13.209794
+v 76.194801 -33.829704 15.976694
+v 73.493896 -28.575703 10.859395
+v 73.261101 -28.575703 10.495695
+v 72.057198 -28.575703 7.781595
+v 75.136299 -31.290802 13.209795
+v 73.493896 -31.290802 11.433895
+v 72.830704 -31.290802 10.495695
+v 71.417702 -28.575701 5.067595
+v 70.892403 -28.575701 1.674995
+v 71.567101 -31.290802 7.781595
+v 70.889801 -31.969299 5.067595
+v 71.202599 -29.933701 5.067595
+v 70.398697 -34.004799 3.710495
+v 70.538597 -29.933701 0.317944
+v 72.268799 -34.004799 10.495694
+v 71.140099 -34.004799 7.781594
+v 74.089897 -34.004803 13.209794
+v 73.493896 -34.004803 12.411795
+v 71.537300 -36.718800 10.495694
+v 70.779800 -36.718800 8.410894
+v 70.747002 -36.327999 7.844814
+v 84.350098 -53.002716 86.996094
+v 84.619202 -53.002716 86.489494
+v 81.636002 -55.303814 83.775490
+v 76.207901 -58.430714 84.360596
+v 76.207901 -58.291714 83.775490
+v 81.636002 -56.058712 78.347290
+v 82.696999 -55.716713 78.347290
+v 84.350098 -55.348812 78.347290
+v 76.207901 -58.064812 78.347290
+v 75.937500 -58.430714 83.775490
+v 86.529701 -53.002712 67.491089
+v 85.077698 -55.716713 75.633293
+v 84.394600 -55.780811 75.956894
+v 85.823303 -55.716713 72.919189
+v 81.636002 -56.497711 75.633293
+v 76.207901 -58.430710 76.355690
+v 78.037201 -58.430710 72.919189
+v 85.474701 -55.716713 70.205093
+v 84.350098 -56.100811 72.919189
+v 84.350098 -56.347710 70.205093
+v 81.636002 -56.951710 72.919189
+v 81.636002 -57.513710 70.205093
+v 84.350098 -57.095810 67.491089
+v 85.511902 -55.716713 67.491089
+v 81.660500 -58.428013 67.526596
+v 86.357399 -53.002712 64.776993
+v 87.064201 -51.179710 64.776993
+v 86.603302 -53.002712 62.062893
+v 86.129799 -58.430710 64.776993
+v 84.350098 -58.430706 57.303993
+v 83.551399 -58.430706 56.634792
+v 86.931099 -53.002712 59.348892
+v 87.018501 -58.460812 62.070591
+v 86.271599 -58.430710 59.348892
+v 86.813103 -53.002708 53.920692
+v 86.523903 -53.002708 51.206692
+v 86.563103 -53.002708 48.492592
+v 81.636002 -58.430706 51.767494
+v 81.636002 -58.230808 51.206692
+v 84.350098 -55.716709 45.778793
+v 81.636002 -57.351707 45.778591
+v 70.761803 -63.858913 89.038391
+v 70.779800 -61.581715 83.775490
+v 66.093399 -63.858814 83.775490
+v 75.352501 -58.430710 78.347290
+v 65.351700 -63.858814 82.515793
+v 70.779800 -60.864712 78.347290
+v 65.351700 -64.199814 83.775490
+v 76.207901 -60.658810 67.491089
+v 65.351700 -63.452812 78.347290
+v 65.351700 -64.770805 67.491089
+v 54.495399 -68.544716 78.347290
+v 43.639099 -68.254814 89.203491
+v 43.639099 -69.286713 85.594994
+v 54.495399 -69.286705 68.540390
+v 54.896301 -69.286705 67.491089
+v 43.639099 -70.845818 78.347282
+v 52.543800 -69.286713 78.347290
+v 54.495399 -69.444809 67.491089
+v 84.964401 -61.144810 64.776993
+v 84.350098 -58.430710 65.922394
+v 84.350098 -60.327812 64.776993
+v 81.636002 -59.697811 64.776993
+v 84.350098 -61.144810 64.176994
+v 83.366798 -61.144810 62.062889
+v 84.350098 -62.786713 62.062889
+v 76.207901 -62.219711 62.062889
+v 81.636002 -60.614712 62.062889
+v 81.636002 -60.856812 59.348888
+v 83.357803 -61.144810 59.348888
+v 84.350098 -61.144806 57.975388
+v 85.361603 -63.858810 62.062889
+v 84.350098 -62.703712 59.348888
+v 87.064903 -63.857510 59.351089
+v 65.351700 -67.232704 56.634789
+v 76.207901 -63.165806 56.634789
+v 81.431503 -58.430706 51.206692
+v 81.636002 -60.238808 56.634789
+v 0.214082 -80.143707 52.464790
+v 9.519900 -80.143707 45.778587
+v 21.926600 -78.605804 45.778587
+v 43.639099 -75.968811 45.778587
+v 43.639099 -72.268707 67.491081
+v 0.214082 -56.515717 89.203491
+v 84.350098 -42.146706 26.454193
+v 84.350098 -39.757805 24.065994
+v 85.707100 -40.444805 24.065994
+v 84.762703 -42.146706 26.780092
+v 81.636002 -42.146706 24.974192
+v 81.636002 -40.587803 24.065994
+v 84.350098 -47.574802 30.825792
+v 84.350098 -45.735703 29.494192
+v 85.434303 -44.860703 29.494192
+v 81.499603 -47.568504 29.515892
+v 76.207901 -47.574802 25.278692
+v 80.194801 -42.146706 24.065992
+v 85.889999 -55.716709 43.064491
+v 84.350098 -56.303806 43.064491
+v 84.350098 -56.784706 40.350391
+v 87.064201 -55.716709 42.286293
+v 84.350098 -56.424709 37.636391
+v 81.636002 -56.516708 37.636391
+v 77.383499 -58.430702 34.922291
+v 81.636002 -55.716709 36.540192
+v 78.767502 -58.430706 40.350391
+v 81.636002 -57.258709 40.350391
+v 82.237900 -50.288803 32.208191
+v 84.350098 -49.669704 32.208191
+v 84.350098 -53.002705 34.367992
+v 84.350098 -50.288803 32.601292
+v 87.064201 -50.288803 32.675194
+v 81.636200 -53.003105 34.077091
+v 81.636002 -50.288803 31.801092
+v 84.350098 -53.804703 34.922291
+v 87.064201 -55.301804 34.922291
+v 76.207901 -58.430702 31.186590
+v 76.207901 -54.495705 29.494190
+v 76.657303 -53.005005 29.469591
+v 81.636002 -53.991802 34.922291
+v 72.165100 -53.002705 24.065990
+v 75.079498 -47.574802 24.065992
+v 73.493896 -57.920704 24.065990
+v 75.884201 -58.430702 29.494190
+v 85.549896 -38.052605 22.588894
+v 84.350098 -38.075703 23.189295
+v 84.350998 -36.715103 23.138494
+v 81.636002 -36.718803 23.160595
+v 86.781197 -40.789703 22.708994
+v 85.696701 -39.369205 22.742794
+v 81.636002 -39.432705 23.627995
+v 84.350098 -39.432705 23.748194
+v 76.207901 -42.146706 20.305292
+v 76.207901 -39.118805 18.637894
+v 76.782501 -36.718803 18.637894
+v 76.207901 -46.338703 24.065992
+v 70.779800 -41.629803 13.209793
+v 68.796898 -42.146702 7.781593
+v 68.101700 -43.159500 5.038413
+v 69.444504 -39.432701 5.067594
+v 68.432404 -42.146702 3.710493
+v 68.303200 -42.746498 2.641083
+v 69.230797 -39.432701 2.353493
+v 67.318199 -47.574802 13.209792
+v 66.026497 -47.574799 7.781592
+v 67.527702 -44.860699 7.781593
+v 68.065697 -43.763699 7.781593
+v 67.412598 -44.860699 5.067593
+v 67.563904 -44.727100 3.680883
+v 67.695198 -44.860699 2.353492
+v 66.568398 -46.597698 5.055562
+v 66.913101 -46.373001 3.397982
+v 66.159302 -47.574799 3.710492
+v 68.166100 -53.002705 18.637890
+v 70.159599 -47.574802 18.637892
+v 70.779800 -47.574802 19.424793
+v 70.779800 -53.002705 22.274891
+v 65.351700 -51.782803 13.209791
+v 73.493896 -58.430702 22.247890
+v 74.487000 -58.430702 24.065990
+v 72.889397 -58.430702 21.351990
+v 70.779800 -56.970802 21.351990
+v 70.779800 -55.716705 22.595390
+v 71.538696 -55.716705 24.065990
+v 70.779800 -58.430702 19.132891
+v 70.059898 -58.430702 18.637890
+v 68.065697 -58.430702 17.082890
+v 66.745399 -58.430702 15.923791
+v 65.351700 -48.742699 7.781592
+v 65.351700 -48.533798 5.067592
+v 65.351700 -58.430702 14.501491
+v 64.108597 -58.430702 13.209790
+v 64.915100 -53.002705 13.209791
+v 62.841400 -53.002701 7.781591
+v 61.815102 -53.002701 2.353491
+v 60.666401 -58.430698 7.781590
+v 59.923500 -58.430698 6.405190
+v 59.923500 -55.266701 2.353491
+v 58.096699 -58.430698 2.353490
+v 79.642799 -58.430706 45.778591
+v 76.207901 -60.674709 45.778587
+v 76.207901 -60.626804 34.922287
+v 72.606697 -69.286705 34.922287
+v 75.056297 -63.858803 34.922287
+v 76.207901 -62.226704 29.494190
+v 76.207901 -63.858803 30.103491
+v 76.503403 -63.858803 29.494190
+v 77.217697 -63.858803 24.065990
+v 76.156799 -61.137505 24.072990
+v 76.207901 -69.286705 29.802288
+v 78.355301 -66.572807 24.065989
+v 65.351700 -69.286705 44.833488
+v 65.351700 -74.041710 34.922287
+v 70.779800 -71.028709 34.922287
+v 76.207901 -70.278709 29.494188
+v 76.524200 -69.286705 29.494188
+v 76.207901 -74.715805 28.091288
+v 81.133301 -74.715805 24.065989
+v 79.994003 -72.001808 24.065989
+v 79.294502 -69.286705 24.065989
+v 83.143997 -77.429710 24.065987
+v 81.636002 -75.467804 24.065989
+v 81.636002 -80.143707 24.477287
+v 76.207901 -80.143707 25.610386
+v 73.959297 -74.715805 29.494188
+v 70.779800 -74.715805 31.393988
+v 65.351700 -74.715805 33.861889
+v 70.779800 -80.143707 26.590487
+v 70.779800 -76.969711 29.494186
+v 65.351700 -78.014809 29.494186
+v 65.351700 -80.143707 26.563986
+v 65.351700 -69.123711 45.778587
+v 65.122498 -69.286705 45.778587
+v 54.495399 -73.836708 45.778587
+v 54.495399 -77.102707 34.922287
+v 43.639099 -78.982704 34.922287
+v 54.495399 -80.143707 24.965487
+v 43.639099 -80.143707 28.599987
+v 76.175903 -63.830505 21.353991
+v 76.660103 -66.572800 21.351988
+v 78.921997 -69.286697 22.746088
+v 78.921997 -68.012810 24.065989
+v 77.561699 -69.263603 21.341888
+v 77.085297 -67.929703 21.351988
+v 75.203201 -61.144802 21.351990
+v 73.493896 -59.080704 21.351990
+v 72.819298 -61.144802 18.637890
+v 70.779800 -58.992702 18.637890
+v 74.032997 -63.858803 18.637890
+v 73.493896 -62.333702 18.637890
+v 73.493896 -61.144802 19.228691
+v 73.484200 -65.207497 17.901989
+v 70.850403 -63.889004 16.134190
+v 65.351700 -61.144802 13.774490
+v 68.065697 -60.801804 15.923791
+v 68.393097 -61.144802 15.923791
+v 70.779800 -61.144802 17.170891
+v 68.066704 -63.859802 14.565289
+v 65.356201 -63.856606 12.560789
+v 65.351700 -62.511703 13.209789
+v 75.464104 -66.502098 20.004589
+v 74.303101 -66.572800 18.637888
+v 74.240097 -65.215797 18.637888
+v 76.235001 -67.926399 20.575788
+v 75.591904 -67.929703 19.994888
+v 74.624298 -67.951401 18.855488
+v 76.142097 -69.647202 20.036289
+v 70.779800 -64.376801 15.923790
+v 71.992897 -66.910500 15.880090
+v 73.314301 -66.576797 17.406088
+v 73.453903 -67.571198 17.171989
+v 73.481400 -69.046097 15.909988
+v 72.453499 -68.006699 15.623988
+v 70.731796 -67.719704 14.415689
+v 70.779800 -66.572800 15.090690
+v 72.381897 -69.264900 14.512589
+v 68.279701 -66.572800 13.209789
+v 68.065697 -66.306801 13.209789
+v 70.779503 -69.284599 13.178689
+v 78.233704 -67.929703 2.353489
+v 77.565002 -66.972702 2.353489
+v 77.565002 -67.929703 3.073189
+v 76.802597 -66.522102 2.339479
+v 75.924698 -66.672501 3.516229
+v 76.332497 -67.908203 4.005479
+v 69.213699 -69.286697 7.781589
+v 68.065697 -68.832802 7.781589
+v 65.351700 -67.511703 7.781589
+v 74.850899 -65.894798 2.353489
+v 74.907700 -66.512703 3.779859
+v 73.493896 -65.687698 2.353489
+v 73.504799 -66.357498 3.899969
+v 72.165604 -65.898804 2.354849
+v 72.045197 -66.470001 3.858079
+v 74.850899 -67.929703 4.728689
+v 74.850899 -68.689796 5.067589
+v 76.207901 -69.286697 4.381588
+v 75.275002 -69.286697 5.067588
+v 73.578903 -67.858200 5.076179
+v 69.454903 -66.572800 2.353489
+v 67.433800 -66.817596 2.282779
+v 68.065697 -66.986801 3.710489
+v 66.605003 -66.986801 3.799159
+v 66.708702 -67.269798 5.067589
+v 68.065697 -67.439796 5.067589
+v 84.354103 -73.359596 20.565588
+v 81.636002 -73.038803 19.994888
+v 81.636002 -73.155800 21.351988
+v 84.353401 -72.773300 19.993689
+v 76.370102 -70.594597 19.795189
+v 78.921997 -72.001801 20.831789
+v 78.289200 -70.643700 21.351988
+v 78.921997 -71.487701 21.351988
+v 77.727699 -71.962799 19.923288
+v 76.288300 -71.934303 18.508888
+v 81.636002 -74.715805 23.622389
+v 80.278999 -72.641701 21.351988
+v 79.414902 -72.001801 21.351988
+v 80.278999 -73.102699 19.994888
+v 78.921997 -72.660797 19.994888
+v 81.420799 -73.406799 18.194889
+v 80.278999 -73.358803 19.276588
+v 80.278999 -73.576698 18.637888
+v 77.635498 -72.829597 18.549988
+v 85.230797 -72.001801 17.280888
+v 84.348297 -71.997200 17.279989
+v 84.350098 -71.764801 18.637888
+v 82.995300 -72.434998 18.632788
+v 87.029503 -73.194603 17.278488
+v 85.707100 -72.141701 17.280888
+v 85.564499 -72.096298 18.626888
+v 85.707100 -72.882797 15.923789
+v 84.350098 -73.006798 15.923789
+v 82.993103 -72.834702 17.280888
+v 78.921997 -73.841698 17.280888
+v 80.278999 -74.037697 17.280888
+v 81.627899 -74.485397 15.728687
+v 80.275902 -74.679100 15.782288
+v 81.698799 -73.643600 17.271088
+v 78.921997 -74.341698 15.923788
+v 78.906601 -73.370399 18.648888
+v 76.047798 -73.627296 13.473488
+v 76.207901 -72.568703 15.923789
+v 77.597900 -73.518097 16.275888
+v 77.531097 -74.472000 14.120687
+v 77.569901 -75.046097 13.138488
+v 85.679497 -76.099701 22.478586
+v 85.623497 -74.714401 21.190388
+v 84.350098 -74.715797 21.827089
+v 84.483200 -76.064598 22.748888
+v 85.707100 -77.429703 23.314886
+v 84.350098 -77.429710 23.612087
+v 87.064201 -80.143707 23.711487
+v 83.971001 -80.135307 24.061787
+v 81.669296 -75.584702 14.162587
+v 80.294098 -76.235001 13.468887
+v 80.278999 -75.384804 14.566788
+v 79.038498 -76.017502 13.220588
+v 75.499802 -70.643700 18.637888
+v 74.871101 -69.292900 18.619289
+v 74.891197 -70.548798 17.191389
+v 74.313103 -69.286697 17.280888
+v 76.090103 -72.160004 17.359589
+v 73.537598 -70.476097 14.530688
+v 72.450302 -70.643700 13.209788
+v 74.850899 -72.701698 13.209788
+v 74.923203 -71.976700 14.568289
+v 74.049400 -72.004601 13.210588
+v 84.299698 -74.560303 13.206987
+v 85.676399 -73.596901 13.913688
+v 85.743599 -73.947403 12.412587
+v 86.326401 -75.038300 9.796337
+v 85.778900 -74.838799 10.800287
+v 86.335197 -73.824501 12.415288
+v 76.739098 -70.643700 3.710489
+v 77.300697 -69.332901 3.395959
+v 77.071800 -72.206802 2.068098
+v 77.634598 -70.694801 2.417689
+v 84.433197 -76.049004 10.667288
+v 84.385101 -75.407799 11.838887
+v 83.001701 -75.672401 13.216488
+v 82.993103 -76.788803 11.852688
+v 81.794296 -77.657303 11.825288
+v 82.452599 -76.072800 13.209787
+v 82.979401 -77.496498 10.615288
+v 85.327003 -76.038597 8.992018
+v 84.350098 -76.803802 7.781588
+v 84.350098 -76.610703 9.138687
+v 83.403198 -77.453796 8.757837
+v 81.636002 -78.454803 10.495687
+v 82.993103 -77.790802 9.138687
+v 81.636002 -78.683701 9.138687
+v 80.274696 -77.688400 11.914187
+v 79.072899 -77.375198 11.769288
+v 77.565002 -76.072800 11.274287
+v 76.281998 -74.421501 10.503387
+v 76.428703 -74.504501 11.955388
+v 77.800697 -76.066597 11.837388
+v 78.782600 -77.844498 10.485588
+v 76.726303 -74.715797 9.138687
+v 77.490303 -76.190102 10.490687
+v 78.393997 -77.401100 9.154178
+v 77.679001 -75.729301 7.809338
+v 78.841301 -77.577698 7.783797
+v 80.278999 -78.540802 10.495687
+v 80.278999 -78.711700 9.138687
+v 78.921997 -78.000702 9.138687
+v 81.692596 -78.565399 6.788027
+v 80.278999 -78.556801 7.781587
+v 85.878799 -76.459999 7.187958
+v 84.350098 -76.842796 6.424588
+v 87.753304 -76.027199 6.664998
+v 86.376701 -76.792801 5.764927
+v 84.366699 -76.795197 5.081948
+v 84.352699 -76.507896 1.116207
+v 86.310898 -77.107597 3.129197
+v 86.246300 -76.989403 1.574618
+v 82.978897 -77.439903 4.527348
+v 83.317200 -77.431099 6.424468
+v 82.993103 -77.825699 7.781587
+v 81.461998 -78.644897 3.603247
+v 81.640297 -78.582298 5.069077
+v 83.065598 -77.092201 2.429547
+v 81.618500 -78.365501 1.046887
+v 77.549004 -77.426102 5.011328
+v 77.581802 -75.998497 6.417848
+v 78.743797 -77.614403 6.369107
+v 76.636200 -76.072800 5.067587
+v 76.205704 -76.401497 3.849718
+v 76.210701 -74.516701 5.081478
+v 76.660400 -77.429703 3.710487
+v 76.507004 -77.429703 2.353487
+v 76.207901 -76.581703 2.353487
+v 80.278999 -78.568703 6.424587
+v 80.452904 -78.838203 5.010837
+v 78.921997 -78.422699 5.067587
+v 80.278999 -79.008698 2.353487
+v 80.278999 -78.937698 3.710487
+v 78.921997 -79.103798 2.353487
+v 78.861702 -78.837997 3.848447
+v 77.565002 -78.312698 3.710487
+v 77.638603 -78.721603 2.368507
+v 70.779800 -70.717796 10.495688
+v 73.493896 -72.001801 12.204689
+v 73.055099 -72.001801 10.495688
+v 74.639900 -72.001801 7.781588
+v 73.493896 -71.330704 7.781589
+v 73.493896 -72.001801 9.578588
+v 70.779800 -69.945702 7.781589
+v 73.493896 -72.166702 10.495688
+v 76.207901 -74.027802 9.138687
+v 73.493896 -69.286697 5.896389
+v 70.779800 -69.286697 6.926488
+v 75.905502 -72.001801 5.067588
+v 76.178299 -72.466400 3.887088
+v 76.207901 -70.643700 4.459689
+v 76.205299 -73.444504 2.962708
+v 76.153999 -74.715797 2.353488
+v 61.459801 -63.858799 7.781590
+v 59.923500 -63.858799 5.511189
+v 62.637600 -65.355797 7.781590
+v 63.207901 -66.572800 5.067589
+v 63.931999 -66.572800 7.781589
+v 60.142502 -66.572800 2.353489
+v 59.923698 -66.523102 2.303609
+v 59.923500 -64.351700 5.067589
+v 65.351700 -67.117699 5.067589
+v 63.994598 -66.852699 5.067589
+v 63.994598 -66.986801 3.710489
+v 65.409103 -66.986000 2.060589
+v 64.057297 -67.147797 1.554449
+v 62.637600 -67.059799 2.353489
+v 57.764702 -63.858799 2.353489
+v 0.214082 -81.928810 45.778587
+v 70.779800 -82.479706 24.065987
+v 76.207901 -82.470810 24.065987
+v 54.495399 -80.407806 24.065987
+v 65.351700 -81.749809 24.065987
+v 43.639099 -80.652809 24.065987
+v 84.350098 -82.857697 22.883287
+v 87.064201 -82.857697 22.267387
+v 81.636002 -81.310707 24.065987
+v 81.636002 -82.857697 23.329086
+v 81.617500 -85.253799 21.307186
+v 84.350098 -84.654701 21.351986
+v 84.350098 -85.571701 20.292387
+v 87.195396 -85.695900 18.641687
+v 76.207901 -85.571701 20.988688
+v 81.636002 -87.499802 18.637886
+v 87.064201 -85.728798 18.637886
+v 76.207901 -89.822800 13.209785
+v 81.636002 -89.978798 13.209785
+v 68.071899 -85.571701 18.637886
+v 70.779800 -85.571701 20.100786
+v 65.351700 -84.579803 18.637886
+v 70.779800 -86.481796 18.637886
+v 76.207901 -87.490700 18.637886
+v 81.636002 -90.297699 7.781585
+v 76.207901 -90.999802 8.000785
+v 76.363503 -90.999802 7.781585
+v 77.384697 -90.999802 2.353485
+v 70.779800 -90.999802 8.921084
+v 70.779800 -89.336700 13.209785
+v 65.351700 -87.104698 13.209785
+v 65.351700 -88.791702 7.781586
+v 70.179604 -90.999802 7.781585
+v 68.002098 -90.999802 2.353485
+v 76.207901 -91.299698 2.353485
+v 43.639099 -84.853798 2.353486
+v 65.351700 -89.772797 2.353485
+v 65.351700 -85.571701 16.629387
+v 21.926600 -83.345810 24.065987
+v 21.926600 -80.143707 39.531590
+v 0.214082 -85.894806 24.065987
+v 21.926600 -88.349701 2.353486
+v 0.214082 -88.610703 2.353485
+v 25.520300 94.073097 -11.388885
+v 23.388000 94.757004 -11.990885
+v 24.250999 94.061897 -9.224455
+v 23.667400 94.439301 -14.389285
+v 25.536100 94.057404 -12.823585
+v 25.363100 93.731201 -14.633585
+v 21.447800 94.984703 -13.129684
+v 21.796801 94.348900 -15.442084
+v 23.572300 93.439903 -16.579485
+v 22.212000 93.346397 -17.008385
+v 22.257401 94.835297 -10.895585
+v 20.628401 94.868599 -10.988985
+v 20.612801 94.044899 -8.217635
+v 22.343100 94.033203 -8.220015
+v 16.070999 93.583900 -11.232985
+v 17.295500 93.929901 -10.010385
+v 17.880899 94.346001 -11.481085
+v 20.454399 94.879997 -13.590185
+v 17.756599 94.155800 -13.010485
+v 16.737200 93.461403 -13.659884
+v 19.678801 94.231003 -15.121785
+v 43.382900 50.284004 -23.736492
+v 45.604698 48.954002 -26.134592
+v 43.209900 51.111603 -25.707392
+v 46.925499 49.061905 -29.737793
+v 43.487598 52.942005 -29.812790
+v 42.113300 53.067104 -27.159691
+v 46.715801 51.526909 -36.784992
+v 43.252399 55.660404 -34.027592
+v 44.872601 52.888004 -33.263294
+v 46.302502 50.859203 -32.765194
+v 46.155201 52.599106 -39.049992
+v 43.636398 56.300209 -38.168491
+v 43.882801 55.784508 -37.018593
+v 45.423100 53.505909 -40.370193
+v 48.065300 50.434509 -39.955193
+v 34.310200 84.140099 -6.614456
+v 33.763100 86.786697 -8.163726
+v 32.798000 86.274696 -5.437716
+v 32.604198 84.118698 -3.543936
+v 34.131699 82.917198 -5.675337
+v 32.727798 82.005600 -2.786417
+v 35.547298 81.729202 -8.705207
+v 34.666698 84.762100 -8.227757
+v 28.294600 89.514603 -3.626076
+v 26.266199 88.648003 -0.746236
+v 24.299500 91.555496 -4.375715
+v 23.471100 92.651398 -5.848305
+v 22.096399 90.685303 -2.683505
+v 23.248301 89.197098 -0.324473
+v 25.755301 90.955902 -3.992275
+v 30.399099 90.191902 -7.522935
+v 31.626900 88.927803 -7.013606
+v 32.234200 89.207497 -9.005846
+v 28.301201 91.461899 -7.302445
+v 27.737301 90.694298 -5.009285
+v 29.967600 91.083603 -9.321324
+v 25.884001 92.578201 -7.063565
+v 26.423401 93.307297 -9.566615
+v 31.386101 86.946404 -4.012406
+v 30.507000 88.531601 -4.680886
+v 29.027300 86.942802 -1.244936
+v 29.770500 84.031197 0.441642
+v 29.085199 85.349701 0.234255
+v 31.514799 85.656097 -3.014796
+v 34.377800 85.803802 -11.932985
+v 33.015202 88.532204 -10.533786
+v 34.630199 85.700600 -10.191586
+v 35.771000 82.073601 -10.176786
+v 35.892799 81.620201 -11.451286
+v 33.397900 84.489197 -15.434887
+v 33.007702 82.651001 -16.821886
+v 32.765701 83.967400 -16.632986
+v 31.170900 90.393204 -11.040385
+v 28.744699 92.205200 -11.207885
+v 28.819201 92.118301 -12.687184
+v 31.610600 89.693497 -12.899385
+v 29.258301 91.369904 -14.436085
+v 27.508301 92.654404 -14.292285
+v 33.182301 87.908401 -12.353086
+v 30.605801 89.559303 -15.209586
+v 31.549000 88.217300 -15.287486
+v 28.844900 88.555496 -18.229385
+v 30.262501 88.665001 -16.725386
+v 29.901100 87.495598 -18.028387
+v 26.216200 92.641403 -16.111485
+v 26.577900 91.003799 -17.788984
+v 28.269699 90.835800 -16.722084
+v 22.164900 92.191803 -18.279184
+v 23.246700 90.231400 -19.465784
+v 24.594500 91.591698 -18.245485
+v 21.798700 89.967003 -19.691385
+v 27.206800 88.501297 -19.220585
+v 25.477100 89.564796 -19.325384
+v 32.760899 86.533401 -14.970586
+v 32.183800 85.414200 -16.644987
+v 31.457199 86.808502 -16.672787
+v 30.068800 85.414200 -18.839186
+v 31.186701 85.393097 -17.846987
+v 28.976299 85.564102 -19.567587
+v 28.662300 86.755699 -19.314587
+v 31.470900 84.164597 -18.005087
+v 29.965900 84.049301 -19.279087
+v 31.623400 82.666397 -18.187487
+v 30.077700 82.761002 -19.362387
+v 32.639400 79.986298 -1.985577
+v 33.891800 80.836601 -4.537907
+v 33.315102 77.950699 -3.074617
+v 32.711300 78.629303 -1.862787
+v 33.250702 75.915298 -3.074618
+v 34.519001 75.174301 -5.805748
+v 34.641399 77.894600 -5.875717
+v 33.738701 73.877296 -4.573768
+v 34.139900 73.201202 -5.464248
+v 33.309101 71.844200 -4.431638
+v 32.707401 72.595001 -2.843828
+v 32.901600 69.971298 -4.431639
+v 36.294201 73.895203 -8.516647
+v 35.403599 73.201202 -7.271328
+v 35.009602 72.107597 -6.849408
+v 35.424198 74.558197 -7.254198
+v 30.962900 81.343300 0.307562
+v 30.320200 82.591904 0.651236
+v 31.528500 82.679497 -1.169376
+v 31.685400 77.382599 0.372093
+v 32.086899 75.915497 -0.360677
+v 32.911701 74.628403 -2.602458
+v 31.495199 71.495499 1.117352
+v 31.503000 73.240601 1.216052
+v 32.020100 71.657997 -1.288298
+v 31.982000 73.726303 -0.316910
+v 35.859600 80.713600 -12.882687
+v 35.463600 80.325699 -14.058686
+v 34.475800 83.611298 -13.971187
+v 35.971699 77.832901 -8.504567
+v 36.374100 78.629303 -9.859777
+v 36.062901 80.325699 -9.859776
+v 36.739101 78.091698 -11.216787
+v 36.620701 77.272301 -9.859777
+v 36.854000 77.272301 -10.815588
+v 36.353100 77.272301 -13.930887
+v 36.518700 78.629303 -12.573888
+v 34.302101 81.925201 -15.287887
+v 35.058300 79.161301 -15.243187
+v 33.989101 78.949898 -16.488787
+v 32.782902 79.986298 -17.436787
+v 34.056301 77.269699 -16.516287
+v 35.519798 76.409302 -15.259788
+v 32.782902 77.272301 -17.456686
+v 36.160900 75.915298 -8.502748
+v 36.888302 75.271004 -9.837877
+v 37.155800 75.915298 -11.216787
+v 36.854000 77.250198 -12.573888
+v 36.748798 75.884003 -13.786588
+v 37.479698 73.867699 -12.536887
+v 37.040401 73.201202 -9.859777
+v 37.472698 73.605797 -11.220588
+v 36.986000 71.202400 -9.667119
+v 36.085899 70.779198 -8.345649
+v 37.393101 71.844200 -13.930888
+v 37.752602 71.844200 -12.573889
+v 35.690800 74.493797 -15.355288
+v 36.943401 73.837196 -14.046087
+v 34.018501 75.929703 -16.566488
+v 32.782902 74.558197 -17.224588
+v 34.071602 74.568802 -16.505589
+v 35.828899 73.152000 -15.419588
+v 32.782902 71.844200 -17.060688
+v 32.782902 73.201202 -17.099989
+v 34.004700 73.287498 -16.518288
+v 34.018501 71.342003 -16.602289
+v 30.119400 79.986298 -19.358986
+v 28.705799 73.121002 -18.697689
+v 28.009100 74.558197 -19.358988
+v 29.441900 77.272301 -19.358986
+v 30.068800 74.558197 -18.494488
+v 30.068800 73.201202 -18.238188
+v 27.372801 73.603104 -19.349089
+v 21.178499 92.584702 -5.505385
+v 18.915400 91.068100 -3.696755
+v 20.545601 89.287598 -0.596918
+v 16.786100 90.303001 -3.586225
+v 18.161900 89.024696 -1.021985
+v 16.446301 87.921204 -0.505878
+v 15.000200 89.455101 -3.995425
+v 18.159201 92.931900 -7.087385
+v 16.268499 92.732101 -8.117085
+v 18.930300 94.177597 -9.233715
+v 14.798500 91.922997 -8.290575
+v 11.982500 87.700203 -6.019825
+v 13.584100 88.167999 -3.948046
+v 13.419700 90.240700 -7.359145
+v 12.486600 89.959396 -8.904436
+v 20.922701 87.340103 3.103114
+v 14.929700 86.692001 -0.230242
+v 13.527100 85.117500 -0.159226
+v 11.965300 85.075302 -2.735366
+v 11.112300 83.692299 -2.798216
+v 10.500300 85.616699 -6.524366
+v 10.458200 80.615997 -0.917407
+v 9.607400 81.340897 -4.202187
+v 8.681100 83.211601 -8.843596
+v 15.446400 93.014198 -9.965925
+v 15.015800 92.868896 -11.820885
+v 14.004400 91.935600 -10.012085
+v 12.914800 90.991798 -10.826585
+v 15.018300 92.426003 -13.422085
+v 13.214100 91.267700 -11.865885
+v 13.004000 90.723801 -13.093185
+v 10.471700 87.609299 -10.205886
+v 10.408300 87.872704 -12.186585
+v 10.459900 87.767097 -13.381386
+v 17.985701 92.624199 -16.566484
+v 15.417500 91.785202 -15.176385
+v 16.450001 91.101097 -17.030285
+v 18.850100 91.108704 -18.472885
+v 19.084600 89.532402 -19.414785
+v 17.847500 89.484596 -18.916885
+v 16.498501 90.223701 -17.767984
+v 13.416500 88.453598 -16.652985
+v 14.074300 90.153397 -15.697386
+v 9.892950 86.196503 -15.287886
+v 14.311700 88.276398 -17.415884
+v 15.862500 88.019096 -18.383884
+v 17.854500 88.136497 -19.360085
+v 17.040501 86.887001 -19.172087
+v 17.467400 85.424599 -19.457487
+v 16.323200 84.943497 -18.970587
+v 16.542801 81.727997 -19.050587
+v 17.287399 81.504997 -19.358486
+v 10.720400 86.462502 -15.966386
+v 11.520500 86.169899 -16.807386
+v 14.649200 86.840599 -18.076487
+v 12.922500 86.519096 -17.374586
+v 13.652500 85.025299 -18.106087
+v 15.141500 85.414200 -18.503687
+v 10.299200 84.287102 -17.235586
+v 15.100700 82.092796 -18.729687
+v 13.784400 82.700302 -18.484287
+v 15.141500 84.057297 -18.610586
+v 8.625350 85.242104 -12.409586
+v 8.206060 84.744698 -13.978487
+v 8.497300 83.714600 -16.490887
+v 8.280110 84.599297 -14.950686
+v 6.590050 82.306503 -14.933487
+v 6.777720 82.580002 -13.417287
+v 6.994410 82.092499 -16.328487
+v 9.736240 82.496803 -17.840387
+v 8.117030 82.084801 -17.382986
+v 9.549100 79.105301 -1.704257
+v 8.997140 78.738098 -3.535357
+v 8.262370 79.930199 -7.189837
+v 8.529830 78.776199 -5.619047
+v 8.035050 75.962402 -4.717708
+v 7.858250 75.915703 -5.788678
+v 8.710440 75.487900 1.061912
+v 9.456660 75.545502 3.132382
+v 7.761080 74.409698 -0.788976
+v 8.604770 76.444702 -1.278528
+v 7.675730 74.496498 -2.937448
+v 6.842300 72.774300 -1.681428
+v 7.358590 73.571800 -5.906218
+v 7.510250 76.254501 -7.145728
+v 6.842760 73.005600 -7.452388
+v 6.600560 74.558197 -8.502748
+v 5.613220 71.572601 -8.966068
+v 15.142900 79.436996 -19.026787
+v 13.831600 81.252296 -18.709686
+v 12.427400 82.700302 -18.289087
+v 13.784400 78.629303 -19.139687
+v 15.042500 77.787201 -19.397587
+v 11.070300 77.767303 -19.358986
+v 11.070300 79.986298 -18.874487
+v 7.265970 80.410599 -9.641176
+v 6.629510 81.402199 -11.811087
+v 5.906870 77.333298 -10.501187
+v 4.996730 77.212997 -12.053488
+v 5.389140 80.070900 -14.274587
+v 4.763340 77.990402 -13.247388
+v 5.366840 79.753098 -16.313587
+v 8.504850 80.720299 -18.195587
+v 12.057400 83.737999 -17.951586
+v 11.070300 81.343300 -18.478086
+v 9.713300 79.986298 -18.682686
+v 6.826220 80.242699 -17.758686
+v 8.356300 78.629303 -19.005487
+v 5.085390 78.539101 -17.426487
+v 5.730230 78.654999 -18.030886
+v 6.999200 78.629303 -18.743187
+v 8.356300 77.755203 -19.358986
+v 6.810700 77.304298 -19.349688
+v 5.350400 77.642899 -18.599186
+v 5.033380 79.465401 -15.381686
+v 4.047930 77.272301 -14.609387
+v 3.721780 76.941902 -15.966388
+v 3.416050 76.384300 -16.928787
+v 3.897620 76.455597 -18.301487
+v 6.936380 76.893997 -8.586138
+v 5.163590 75.259201 -10.884788
+v 5.525700 73.201202 -9.700917
+v 4.325650 74.837700 -11.957988
+v 3.014020 74.036201 -13.700088
+v 3.913070 71.844200 -11.216788
+v 2.797260 72.422798 -12.971289
+v 1.571110 70.124298 -13.930888
+v 5.526760 76.030899 -19.749088
+v 2.717070 74.939301 -18.027388
+v 4.066520 75.188797 -19.684389
+v 2.396200 73.872299 -15.056087
+v 2.239750 74.217300 -16.598289
+v 1.344720 71.210098 -15.627189
+v 1.454470 72.352501 -17.415289
+v 24.629700 87.480003 -20.570187
+v 23.270700 87.698601 -20.685587
+v 27.354700 85.414200 -20.394987
+v 27.354700 86.771202 -19.954987
+v 28.711800 84.057297 -20.036686
+v 27.320700 83.014603 -20.848186
+v 28.711800 82.700302 -20.180887
+v 25.997700 88.128197 -19.871984
+v 26.064699 86.139503 -20.680986
+v 24.640699 85.414200 -21.230686
+v 23.283600 85.414200 -21.451086
+v 26.017700 82.883202 -21.371387
+v 24.640699 84.057297 -21.583387
+v 24.640699 81.343300 -22.047987
+v 21.926600 84.057297 -21.762087
+v 21.926600 85.414200 -21.393486
+v 23.496201 82.700302 -22.073086
+v 27.354700 79.986298 -20.958086
+v 27.261801 77.497002 -20.703587
+v 30.093399 79.568497 -19.341486
+v 25.997700 79.986298 -21.645187
+v 24.743601 78.808502 -22.290987
+v 23.283600 81.343300 -22.350388
+v 21.918400 81.964401 -22.252886
+v 23.255899 79.252296 -22.726088
+v 21.885300 79.369598 -22.879387
+v 25.981600 77.567703 -21.564287
+v 24.733500 77.232399 -22.375887
+v 23.209499 77.023499 -23.118986
+v 26.019800 74.422897 -20.704988
+v 26.162800 76.080399 -21.083088
+v 24.942400 74.558197 -22.073088
+v 24.704800 75.902000 -22.387888
+v 24.216600 74.038002 -23.150688
+v 21.929800 77.051308 -23.426487
+v 22.308300 75.463905 -23.876888
+v 23.594000 74.764305 -23.425688
+v 26.357700 72.138100 -20.342489
+v 25.007200 73.111000 -22.631189
+v 25.276100 73.525002 -21.732988
+v 25.973200 73.201797 -20.634689
+v 26.219700 71.747101 -21.187088
+v 26.110300 71.754898 -22.947588
+v 24.935699 72.715805 -23.880489
+v 25.481400 72.118210 -25.949789
+v 23.829000 73.161606 -24.892488
+v 24.598499 72.452606 -26.191689
+v 23.028000 73.020111 -25.979589
+v 22.692400 71.689911 -30.351889
+v 23.902800 72.178810 -28.149889
+v 24.544399 71.923309 -29.033789
+v 21.690901 71.746010 -30.720289
+v 21.563601 72.411110 -28.426788
+v 28.421499 71.878609 -40.651989
+v 26.894800 72.360008 -41.463287
+v 27.709400 71.595207 -38.173389
+v 23.659401 72.563606 -41.425587
+v 23.159401 71.226707 -38.929989
+v 25.094900 72.422508 -41.098690
+v 22.044800 73.086205 -41.911690
+v 21.799500 71.422104 -38.849190
+v 20.569599 82.700302 -21.651587
+v 17.855499 84.057297 -19.667088
+v 19.469500 85.487198 -20.562487
+v 19.339399 84.136398 -20.653387
+v 17.855499 82.700302 -19.661186
+v 19.215300 82.722801 -20.718987
+v 20.574100 81.306900 -22.075186
+v 19.212500 81.343300 -21.030287
+v 20.569599 79.986298 -22.522787
+v 19.284599 79.382004 -22.077387
+v 17.746401 78.818604 -20.740387
+v 16.498501 78.629303 -19.676086
+v 16.636000 79.771500 -19.300886
+v 17.835899 79.952003 -20.194286
+v 16.024500 77.316704 -20.167986
+v 18.023500 77.558296 -22.069387
+v 20.513399 77.002907 -23.484787
+v 20.569599 78.629303 -22.977587
+v 19.402201 76.428307 -23.512587
+v 15.879700 78.629303 -19.358986
+v 13.677900 76.459999 -19.577986
+v 12.427400 77.272301 -19.372686
+v 11.070300 77.272301 -19.433086
+v 18.468300 75.267807 -24.164888
+v 17.182501 76.059998 -22.512688
+v 20.063900 74.490005 -25.212189
+v 17.637100 74.656006 -24.961388
+v 16.900600 75.137207 -23.440489
+v 14.058100 75.726501 -20.083988
+v 15.311900 74.594498 -22.924288
+v 12.794100 74.137901 -20.590689
+v 11.605800 75.824303 -19.637289
+v 12.126000 74.557899 -19.932589
+v 11.197400 74.207603 -20.041288
+v 16.381901 74.642410 -24.355389
+v 13.572600 74.085800 -21.928389
+v 11.896700 73.061203 -21.376989
+v 10.524200 71.981003 -21.373089
+v 10.788000 72.792397 -20.695789
+v 12.192300 73.174896 -22.253889
+v 10.413700 71.639503 -22.139488
+v 12.078900 73.483910 -24.826689
+v 10.294300 72.492607 -26.216288
+v 18.891199 74.374809 -25.722488
+v 20.466700 73.678108 -26.489288
+v 18.864401 73.908607 -27.399889
+v 16.351400 74.483009 -26.396389
+v 16.674801 74.218010 -28.716888
+v 14.655100 74.327011 -25.870289
+v 15.288900 74.256706 -29.114088
+v 12.646100 73.788506 -27.303089
+v 13.554500 73.947502 -23.242889
+v 13.445200 73.944305 -29.367189
+v 17.237101 73.991310 -30.077789
+v 12.427400 73.675209 -30.554588
+v 10.542800 72.793510 -27.417189
+v 8.356300 77.272301 -19.558987
+v 9.713300 74.558197 -20.201488
+v 8.356300 74.558197 -20.352888
+v 9.809520 72.850304 -20.649088
+v 8.356300 73.199303 -20.715389
+v 6.999200 71.844200 -21.480589
+v 5.639100 70.544998 -22.103189
+v 5.613030 74.044296 -20.700989
+v 8.356300 71.844200 -21.268988
+v 3.948630 73.492699 -20.707289
+v 2.813350 74.061600 -19.569088
+v 2.691410 72.171303 -20.726589
+v 4.171410 71.245697 -21.787388
+v 2.785220 70.503799 -21.658188
+v 2.128340 72.026901 -20.158689
+v 1.839600 72.698601 -19.017889
+v 18.194799 73.435211 -31.867088
+v 19.092300 73.319908 -29.256788
+v 16.812401 73.733604 -35.437588
+v 17.362400 73.424110 -36.333088
+v 14.351200 74.158508 -32.752590
+v 10.787400 73.075111 -32.468090
+v 11.856700 73.592010 -34.443790
+v 14.769000 74.046310 -36.454388
+v 15.510700 74.185310 -32.961990
+v 16.181299 73.878807 -36.523190
+v 20.414000 71.586708 -37.099487
+v 18.052099 73.464806 -39.281689
+v 17.085699 73.650505 -38.029789
+v 20.399000 71.609406 -35.850090
+v 19.676300 73.560509 -41.226688
+v 16.646601 74.293808 -40.705887
+v 18.447001 74.096611 -41.928989
+v 12.646600 73.750610 -41.760387
+v 13.876500 73.940407 -39.162289
+v 14.927700 74.312111 -41.351589
+v 8.575270 71.767509 -30.706488
+v 8.590600 72.298111 -35.003288
+v 12.317000 73.436905 -38.565990
+v 9.882930 72.546211 -40.502987
+v 7.127100 71.421211 -43.439289
+v 7.019910 71.506905 -36.679390
+v 33.787300 69.808800 -5.788679
+v 32.793098 66.781998 -5.328609
+v 35.884701 68.451698 -8.502748
+v 34.082298 65.540802 -7.081120
+v 32.814098 65.116402 -5.558720
+v 34.031700 63.669102 -7.401189
+v 32.813202 63.779999 -5.504910
+v 33.089001 62.345299 -5.788680
+v 32.776501 62.326199 -4.544360
+v 33.062401 61.363499 -4.576880
+v 32.302700 63.474899 -3.095950
+v 33.717999 59.720798 -4.120201
+v 33.417900 61.334900 -1.552250
+v 33.296600 60.988300 -5.788680
+v 34.779301 64.326302 -8.208619
+v 34.259998 62.432701 -8.075999
+v 33.734600 62.345299 -7.145730
+v 33.692799 60.988300 -7.145730
+v 31.601700 69.556000 -0.366226
+v 32.081902 69.130203 -3.074619
+v 31.692499 66.514000 -2.989009
+v 31.799801 67.702797 -3.007059
+v 31.591499 67.773300 -0.360590
+v 31.643900 66.416298 -1.717589
+v 31.774099 66.437202 0.712418
+v 32.401100 67.773300 -4.431639
+v 32.186298 66.416298 -4.431639
+v 31.841999 65.059196 -3.074519
+v 32.185699 65.059303 -4.431640
+v 32.417400 63.702301 -4.431640
+v 36.867199 68.308403 -9.850859
+v 37.637699 68.475304 -11.304588
+v 37.623798 71.336098 -11.236889
+v 37.934502 70.099998 -12.610188
+v 37.684601 70.487198 -13.930888
+v 36.347401 65.737701 -9.859779
+v 37.996799 67.773300 -12.573889
+v 38.064800 67.773300 -13.930888
+v 37.928799 69.130203 -13.930888
+v 37.865101 66.416298 -12.573890
+v 38.044300 66.416298 -13.930889
+v 37.602501 67.773300 -15.287889
+v 36.713100 67.735001 -16.395088
+v 36.854000 69.130203 -15.714989
+v 37.246799 69.130203 -15.287889
+v 35.489700 69.071503 -16.627388
+v 37.737598 66.416298 -15.287889
+v 35.506901 66.489197 -17.433889
+v 34.139900 69.130203 -17.041389
+v 34.139900 67.773300 -17.449188
+v 32.782902 67.773300 -17.631588
+v 31.570200 69.216400 -17.520489
+v 33.162300 66.476303 -18.011988
+v 35.643700 62.993000 -10.097090
+v 36.827999 64.333000 -11.336889
+v 37.543499 65.059303 -12.573890
+v 37.202702 66.241302 -11.049689
+v 37.745499 64.808998 -13.917789
+v 37.118900 63.702305 -12.573890
+v 36.009701 62.345299 -11.216789
+v 35.311798 60.310398 -11.216990
+v 36.379101 60.988304 -13.930890
+v 36.870800 62.227703 -13.933990
+v 37.614700 65.059303 -15.287889
+v 36.858002 64.646896 -16.646488
+v 36.871700 65.853996 -16.633089
+v 37.289101 63.702206 -15.287789
+v 35.377499 65.062897 -17.895489
+v 32.431198 64.206902 -19.253990
+v 34.139900 65.059303 -18.364889
+v 34.139900 63.702305 -18.908791
+v 35.487400 61.376003 -18.014591
+v 35.553200 62.332203 -18.080591
+v 36.496300 62.345303 -16.644991
+v 36.105598 60.988304 -16.644991
+v 34.098301 62.210102 -19.395691
+v 34.235298 60.968304 -19.440191
+v 30.057800 71.555496 -18.014688
+v 32.783401 70.487999 -17.132889
+v 30.014200 70.518097 -17.920988
+v 28.711800 70.487198 -18.298288
+v 27.694799 69.807899 -19.358789
+v 27.346001 70.853897 -19.364788
+v 28.711800 71.844200 -18.442188
+v 29.887899 69.136398 -17.870289
+v 28.711800 69.130203 -18.248289
+v 28.161501 68.059601 -19.340689
+v 31.330000 66.425697 -18.002989
+v 30.080200 66.220001 -17.975689
+v 30.068800 67.773300 -17.867489
+v 31.425800 67.773300 -17.721289
+v 29.423599 66.447601 -18.021988
+v 28.707600 67.314499 -18.231289
+v 28.348400 66.416298 -18.680489
+v 28.448200 65.392303 -19.337488
+v 31.855900 65.004204 -18.746689
+v 29.585600 64.966904 -18.571688
+v 28.624901 65.581703 -18.520288
+v 29.390499 64.480003 -19.613789
+v 34.374802 58.537701 -0.015748
+v 34.004200 60.032101 -0.809668
+v 34.462002 58.589298 -2.899370
+v 34.751701 57.974602 -1.823571
+v 35.230202 56.346401 -4.798691
+v 33.952599 58.507900 -5.985371
+v 34.289001 56.725399 -8.797021
+v 34.701199 55.678600 -9.234620
+v 34.637199 52.845299 3.710509
+v 35.688499 52.336601 0.031745
+v 34.646900 54.203201 2.353509
+v 35.738998 54.134602 -2.017591
+v 34.926800 56.238201 -0.360592
+v 38.088699 51.146999 -4.349512
+v 36.868000 52.434399 -3.512471
+v 39.283699 48.605701 -1.683232
+v 40.502701 50.136398 -6.896302
+v 39.582901 51.339100 -8.228771
+v 37.620602 52.618000 -6.410731
+v 43.084900 49.227699 -9.418702
+v 36.560699 53.805698 -5.651591
+v 35.432400 55.696701 -2.880521
+v 36.675301 53.726700 -7.987021
+v 37.976799 52.668400 -9.017012
+v 34.892899 60.988300 -9.859780
+v 34.575199 59.631199 -9.859780
+v 34.113300 60.022099 -8.481811
+v 34.241901 58.381302 -9.308741
+v 33.980900 58.259300 -7.746281
+v 34.726200 58.274200 -11.216790
+v 35.497101 58.706406 -13.928491
+v 35.107700 58.274204 -12.573891
+v 35.038300 56.937103 -13.918990
+v 34.795200 56.917202 -12.573891
+v 34.691399 55.853802 -11.421090
+v 34.954899 55.542503 -13.187692
+v 36.408901 60.988705 -15.287890
+v 35.611301 59.565804 -16.875391
+v 35.475101 59.035603 -16.595091
+v 35.435501 58.274204 -15.287890
+v 35.133499 59.631203 -18.001991
+v 34.195499 59.585804 -19.509090
+v 34.869801 58.274204 -18.001991
+v 34.167900 58.235302 -19.568890
+v 34.969601 56.917202 -16.644991
+v 35.050301 55.516106 -14.811591
+v 34.918301 55.542603 -17.368191
+v 34.679901 56.004604 -19.337591
+v 34.420101 56.807503 -19.481491
+v 34.584202 56.889603 -18.616791
+v 39.515999 51.709202 -10.389992
+v 41.591900 50.626301 -10.769491
+v 42.361900 50.603104 -14.779592
+v 40.386700 51.321503 -12.997891
+v 35.406502 54.610600 -9.730561
+v 36.296299 53.582603 -11.903091
+v 35.386902 54.511303 -14.070791
+v 35.266800 54.596603 -12.067592
+v 38.210999 52.430698 -10.877591
+v 38.432301 52.097805 -15.455992
+v 40.444302 51.463905 -19.692293
+v 37.651299 52.945904 -18.676291
+v 39.408600 52.499104 -21.385893
+v 36.490299 53.305702 -16.181490
+v 35.651901 54.301304 -18.179890
+v 35.312801 54.450603 -16.494390
+v 35.776798 54.810802 -20.017290
+v 5.518380 70.575699 -1.039409
+v 6.001080 71.041901 -2.879358
+v 4.316300 68.645401 1.017261
+v 3.634430 68.449501 -2.134779
+v 4.272890 69.046501 -3.089259
+v 2.954750 67.645897 -1.276239
+v 6.820020 71.604103 -5.805969
+v 6.342810 70.689796 -5.431048
+v 5.355870 69.450302 -5.250878
+v 5.570510 69.577400 -6.599739
+v 6.328570 70.951103 -7.132608
+v 5.283600 70.019501 -8.398198
+v 4.429830 68.591698 -8.285468
+v 3.990900 67.985497 -6.165849
+v 2.403050 67.273499 -4.652699
+v 1.644040 65.821999 -8.406739
+v 3.658580 67.541000 -7.573159
+v 0.575645 65.826202 -5.844460
+v -0.877836 64.502502 -4.629039
+v 4.152630 69.182899 -9.554759
+v 2.987340 69.994301 -11.539289
+v 2.684640 68.222801 -10.986588
+v 2.440600 70.487198 -12.573889
+v 1.073870 67.613297 -13.172089
+v 0.631959 68.318001 -14.822688
+v 2.879500 67.035599 -9.297429
+v 0.798640 65.184097 -10.521790
+v 0.790764 65.184303 -9.016609
+v 1.308430 66.274803 -11.488890
+v -0.393411 64.047096 -12.519489
+v 0.677268 65.918800 -12.564489
+v 32.540699 61.792805 -20.702490
+v 31.788700 67.265610 -29.552988
+v 32.907001 64.635605 -27.076288
+v 35.733101 62.574303 -29.917990
+v 35.065498 59.840405 -25.029890
+v 32.884499 63.236702 -25.250990
+v 33.550999 61.373802 -24.551191
+v 35.898102 61.384304 -28.187590
+v 39.682499 58.618504 -30.744890
+v 27.044001 70.845703 -20.040489
+v 28.106300 68.732300 -20.241289
+v 27.482100 69.978203 -20.655689
+v 28.807400 68.873001 -22.559088
+v 27.025600 70.749001 -21.821089
+v 28.958099 69.294411 -24.418388
+v 28.183599 70.201309 -25.184189
+v 28.410999 67.722198 -20.266689
+v 28.710501 65.297096 -20.074089
+v 29.743999 66.954803 -22.783789
+v 31.277399 65.002708 -24.409689
+v 29.975300 67.535011 -24.017988
+v 31.212799 66.609009 -25.945789
+v 27.236500 71.840698 -19.204689
+v 28.523500 70.527206 -29.251989
+v 27.036699 71.243805 -27.952188
+v 27.091200 71.130211 -26.133989
+v 29.777399 69.038109 -26.800789
+v 28.372601 70.857605 -31.233089
+v 27.215799 71.368706 -31.684689
+v 29.757401 69.503204 -28.866089
+v 30.940800 68.985207 -31.696888
+v 26.004000 71.651108 -29.082388
+v 31.150101 63.167202 -20.639891
+v 30.598200 64.216599 -19.471191
+v 30.054199 63.944504 -20.327190
+v 30.120199 64.094803 -22.043291
+v 29.758101 64.228897 -21.176491
+v 33.025200 63.694805 -19.399691
+v 31.703800 62.430405 -23.293591
+v 30.713800 63.563805 -22.695591
+v 31.598600 61.806404 -22.104090
+v 33.052399 60.556904 -23.400890
+v 33.240398 66.694611 -33.405689
+v 33.846401 65.713310 -32.050388
+v 31.907000 69.511406 -39.285088
+v 30.908600 69.661911 -36.273090
+v 34.045898 67.170311 -39.671089
+v 36.433102 64.810608 -41.268688
+v 33.237301 68.068710 -40.775387
+v 36.582001 63.099205 -33.310188
+v 35.603298 64.503807 -34.733688
+v 39.561100 60.329704 -33.924690
+v 37.121300 63.464508 -36.962090
+v 39.712898 60.671707 -35.299889
+v 40.141701 60.523808 -37.343388
+v 38.167400 62.699009 -39.671188
+v 39.717400 61.161308 -41.750088
+v 33.352100 66.942909 -36.705688
+v 35.970200 64.975510 -39.085888
+v 29.735901 70.169411 -32.166187
+v 28.656500 71.095108 -35.675087
+v 26.994400 71.431305 -35.257690
+v 29.744400 70.607407 -36.085690
+v 25.215500 71.649010 -32.042488
+v 23.200701 71.247406 -33.359089
+v 22.610399 70.913605 -36.965290
+v 22.355200 71.198509 -33.576088
+v 25.825701 71.426704 -35.994488
+v 23.316000 70.980804 -36.571388
+v 30.375500 70.728004 -38.567287
+v 29.094200 71.286606 -38.051487
+v 31.089300 70.337807 -40.227489
+v 29.810801 71.246811 -40.035889
+v 23.498199 71.036705 -37.993687
+v 25.974701 71.565308 -37.981190
+v 25.587000 71.799606 -39.324390
+v 33.304001 59.631203 -20.716091
+v 32.783001 60.990704 -20.808390
+v 32.841999 59.882603 -22.100691
+v 33.761799 58.274204 -20.716091
+v 33.704899 58.274204 -21.394590
+v 34.117802 58.182102 -22.330891
+v 34.143299 57.384304 -20.733891
+v 34.620998 56.977005 -21.511391
+v 36.139801 56.421104 -22.840391
+v 40.459400 55.390404 -27.851391
+v 38.983002 57.952805 -28.688591
+v 38.319500 55.662205 -24.838791
+v 41.246700 52.375103 -24.478693
+v 37.734901 54.333904 -22.221991
+v 43.069698 50.232105 -20.735193
+v 41.710899 51.101704 -22.152592
+v 40.712399 57.978302 -31.806890
+v 42.154499 57.595306 -35.643391
+v 42.369202 57.990906 -40.458794
+v 9.050440 70.863503 -22.025288
+v 9.927690 71.178703 -22.976988
+v 8.741690 70.160202 -22.697189
+v 8.567350 69.771896 -23.375088
+v 8.791780 70.473305 -25.011789
+v 7.856890 68.917908 -24.480188
+v 7.549960 68.999298 -23.179689
+v 6.400830 68.665901 -23.058088
+v 8.060660 70.578300 -22.010288
+v 6.862220 67.987709 -24.053289
+v 6.425130 67.505508 -24.773689
+v 4.347050 67.466301 -23.362688
+v 1.463730 69.889603 -20.740889
+v 0.875642 69.991997 -19.191288
+v 5.063830 68.715500 -22.895988
+v 0.469594 67.944397 -21.024488
+v 1.624740 68.587502 -21.794388
+v 2.577640 66.472603 -22.988689
+v 1.363710 66.299599 -22.125889
+v 0.178668 66.397797 -20.799189
+v 3.618100 65.943909 -24.035789
+v 6.710110 68.010506 -25.451689
+v 6.941550 69.605408 -27.225889
+v 9.155610 71.518005 -26.388288
+v 7.364300 70.660210 -29.183588
+v 4.920830 68.226410 -28.160889
+v 5.485220 66.904510 -25.551788
+v 4.854750 69.613907 -31.657688
+v 3.589650 67.303009 -28.386688
+v 3.673220 65.650009 -25.685089
+v 0.214082 66.008202 -20.716089
+v 1.283220 64.835800 -22.169489
+v 1.924850 64.518402 -23.322289
+v 2.094260 64.369110 -23.986290
+v 1.117130 63.684902 -22.819090
+v 2.782470 64.846909 -24.724188
+v 0.911520 63.669605 -24.586090
+v 0.546463 63.665104 -21.271391
+v 0.436565 63.019104 -22.626890
+v 1.969540 66.910706 -29.462088
+v 2.089910 64.708206 -25.657089
+v -1.580110 64.200409 -27.598991
+v 20.856800 71.684807 -33.718990
+v 6.640640 71.138504 -33.903488
+v 5.316960 70.612404 -34.781887
+v 2.080000 68.920204 -34.116787
+v 2.644060 69.657806 -36.361290
+v 3.477940 68.652504 -31.317289
+v -1.139250 65.600410 -30.053789
+v -0.140888 67.260307 -32.674889
+v -2.730640 66.507805 -34.854687
+v -0.363054 68.189606 -36.294487
+v 5.468770 70.830811 -43.232887
+v 4.963700 70.798309 -39.714489
+v 1.666300 69.534210 -39.922390
+v -1.954560 67.894508 -40.333389
+v -1.258900 68.159805 -41.914589
+v 44.692402 53.756706 -42.637993
+v 44.951698 52.288208 -44.127293
+v 42.627201 56.144306 -44.170292
+v 43.528500 53.538006 -45.120392
+v 43.939800 52.104408 -45.552292
+v 46.197800 52.231106 -41.491192
+v 44.996201 51.054306 -45.142693
+v 43.757900 50.705906 -46.356392
+v 44.772900 50.633911 -71.429993
+v 44.977600 52.005512 -75.712296
+v 43.384300 52.276413 -72.722992
+v 42.516201 55.277912 -79.362595
+v 42.373402 54.750412 -76.570892
+v 41.880199 54.327511 -74.570793
+v 46.658798 50.321510 -76.888489
+v 45.341099 52.169811 -79.582291
+v 43.713402 53.930813 -81.763596
+v 46.167099 50.887512 -81.354492
+v 42.502998 54.576015 -84.064896
+v 25.016199 72.800705 -42.705688
+v 21.642900 73.421211 -43.163990
+v 23.783199 73.061806 -43.923889
+v 26.482201 72.227409 -43.819588
+v 24.155001 72.715508 -45.011688
+v 24.961599 71.691406 -46.388390
+v 21.247999 73.346809 -44.106487
+v 22.805401 72.150909 -46.533688
+v 19.953600 73.782005 -42.829288
+v 15.885700 74.332909 -42.141289
+v 16.357700 73.998108 -43.371788
+v 20.134399 73.372604 -44.223289
+v 19.977200 71.900505 -46.834690
+v 15.886300 72.133507 -46.319187
+v 10.131900 71.840210 -45.606388
+v 12.900800 73.001808 -44.412289
+v 9.662120 72.545807 -42.957489
+v 12.929900 73.643211 -42.964890
+v 9.633120 72.353310 -44.152489
+v 7.970050 71.374008 -45.523888
+v 37.426800 63.604607 -42.623188
+v 39.721199 60.985607 -43.274189
+v 34.087601 66.891304 -42.089390
+v 34.139900 66.416306 -43.095989
+v 36.399300 64.179008 -43.514587
+v 33.601700 65.821411 -44.833488
+v 35.514099 63.736008 -45.213490
+v 33.989201 63.797806 -46.463287
+v 32.481300 65.298210 -46.426788
+v 37.820702 62.451908 -44.354389
+v 38.400600 61.183308 -45.232288
+v 36.861000 61.512508 -46.400589
+v 32.997398 62.888908 -47.930187
+v 36.067200 60.332409 -48.144890
+v 34.945099 60.925007 -48.606289
+v 33.210300 62.335308 -48.472988
+v 33.674999 61.879406 -49.478790
+v 34.549599 63.019306 -52.519688
+v 32.604198 63.505108 -50.607288
+v 35.330502 60.550407 -50.178890
+v 31.674801 69.489708 -41.476589
+v 29.726500 71.062607 -41.688389
+v 31.647600 68.452606 -43.717289
+v 29.149000 70.724304 -43.335690
+v 29.907301 69.044006 -45.067089
+v 26.928900 70.437004 -46.368088
+v 28.445200 69.135910 -46.479790
+v 31.351000 67.754509 -45.124790
+v 29.968500 67.778908 -46.486988
+v 27.157301 68.995010 -47.735489
+v 28.304100 67.779411 -47.779987
+v 27.872499 66.404610 -49.109688
+v 28.930901 65.900604 -48.571289
+v 26.045700 69.866310 -47.804688
+v 24.345900 70.488205 -48.191490
+v 23.375401 70.812408 -48.240688
+v 21.588400 68.972809 -49.850689
+v 21.535500 70.812309 -48.354588
+v 25.794600 67.631805 -49.743790
+v 24.335501 68.420807 -49.823990
+v 26.270300 67.119408 -50.530788
+v 24.365601 67.907211 -50.596287
+v 27.763399 66.426605 -50.795689
+v 26.574699 67.184105 -51.374588
+v 23.588400 68.126205 -51.286587
+v 23.891701 68.368309 -52.145588
+v 21.925100 68.523911 -50.595890
+v 23.188801 68.862106 -49.815887
+v 21.589300 68.742706 -52.069290
+v 20.969900 68.501610 -51.277489
+v 31.959000 63.829807 -47.844990
+v 31.216999 63.898209 -48.543888
+v 29.970900 64.749306 -49.221088
+v 32.731300 62.652008 -49.208988
+v 32.183998 64.740509 -51.934090
+v 29.806700 66.577209 -52.508987
+v 30.389500 64.621910 -49.934788
+v 37.515202 60.240307 -53.406490
+v 34.437000 64.013306 -54.185989
+v 35.776798 62.762108 -54.997288
+v 37.277901 60.873306 -54.835690
+v 36.382801 61.715607 -56.396587
+v 34.546501 64.081306 -56.332890
+v 34.593498 63.222206 -58.135189
+v 34.650902 60.615910 -61.134590
+v 32.875198 63.746010 -59.831989
+v 32.709099 61.121613 -62.568687
+v 26.375601 68.761711 -53.705887
+v 28.125099 68.472107 -54.520889
+v 31.757299 66.221405 -54.124287
+v 33.126598 65.561607 -55.358887
+v 31.414900 66.889305 -56.018089
+v 29.154499 68.231407 -55.767590
+v 26.283800 69.613708 -55.693390
+v 23.670799 69.926910 -54.332088
+v 25.520901 69.755409 -55.086288
+v 25.636700 69.755707 -56.720490
+v 27.572201 68.628906 -57.300190
+v 24.737900 69.789604 -57.393288
+v 23.310600 70.524811 -55.739487
+v 20.811800 70.855309 -55.729088
+v 21.923000 70.266609 -54.345589
+v 22.450500 70.564110 -56.968487
+v 29.410601 67.981506 -56.668587
+v 29.653200 66.967911 -58.398788
+v 30.865200 66.822105 -57.676689
+v 24.330099 69.392105 -58.231087
+v 27.663900 67.959709 -58.170887
+v 26.450199 66.553108 -60.231388
+v 23.092400 67.008110 -61.457989
+v 23.531300 67.875809 -60.149590
+v 31.442801 65.040611 -59.640190
+v 32.434601 65.274406 -58.375290
+v 29.994301 65.262009 -60.287590
+v 31.280399 63.715210 -61.160290
+v 28.632601 63.862911 -62.549088
+v 31.114599 62.150711 -62.781887
+v 26.768400 65.069908 -62.052090
+v 24.689100 64.579506 -64.251396
+v 41.613800 58.511208 -43.049191
+v 40.791901 59.110409 -44.217388
+v 39.812000 58.627708 -46.079788
+v 41.211201 57.159409 -45.585392
+v 38.131500 57.682407 -48.335793
+v 38.305500 59.837509 -46.622887
+v 41.006302 55.936508 -46.496490
+v 39.693199 55.419708 -47.938793
+v 39.209000 55.558109 -48.537792
+v 38.541302 56.376209 -49.192394
+v 39.698399 54.968109 -50.579891
+v 38.208099 57.385509 -50.829491
+v 38.903702 55.792206 -49.970291
+v 37.183300 58.930309 -48.403690
+v 35.826900 59.931309 -49.199688
+v 37.095200 58.414806 -49.500492
+v 42.165298 54.243607 -46.239193
+v 42.601799 52.702908 -46.478592
+v 40.974499 52.622608 -47.872890
+v 39.565899 54.459808 -49.213291
+v 40.253601 53.094807 -49.204391
+v 39.884201 54.076107 -49.910793
+v 41.243500 53.829506 -52.179691
+v 39.996399 55.855309 -52.239094
+v 42.282101 51.488308 -47.151291
+v 42.227100 50.193810 -47.804192
+v 42.272301 49.784908 -49.225193
+v 41.195499 51.385307 -48.535091
+v 42.860500 48.654007 -48.596092
+v 42.068401 51.455307 -50.909992
+v 40.908901 51.920006 -49.305191
+v 43.898300 48.084209 -50.819691
+v 42.429699 51.460709 -52.267094
+v 38.803600 58.515808 -53.619591
+v 39.861599 56.615807 -54.302692
+v 38.310501 58.822506 -56.193390
+v 38.674900 58.762508 -54.990189
+v 40.250599 54.693508 -57.114792
+v 38.684399 56.862209 -58.166393
+v 36.977798 58.770313 -59.507790
+v 35.496700 59.407913 -61.495289
+v 36.777802 57.891510 -61.649193
+v 35.588699 57.612411 -64.375092
+v 33.365299 59.464211 -64.039589
+v 38.214901 56.729610 -60.265892
+v 37.771999 56.090012 -63.681190
+v 41.314098 53.171009 -56.096592
+v 41.552200 53.354507 -53.624092
+v 43.108601 50.085308 -54.875992
+v 43.549999 49.198509 -52.436691
+v 41.745899 52.207813 -58.664894
+v 43.003799 50.482613 -59.467091
+v 16.687901 70.866310 -47.909889
+v 18.029400 68.452705 -50.524090
+v 17.606501 68.472710 -51.182289
+v 18.065399 68.842110 -51.944187
+v 11.192000 71.122604 -46.835789
+v 11.989100 70.434311 -47.660889
+v 12.102900 67.983505 -49.904388
+v 16.759300 68.613205 -49.900387
+v 14.139500 68.065109 -50.561890
+v 14.021700 68.156410 -51.263988
+v 14.492800 68.568810 -52.001987
+v 9.569140 68.573708 -49.066090
+v 13.651800 68.612511 -49.343090
+v 10.554200 67.398308 -50.552490
+v 11.770300 67.654411 -51.217190
+v 11.898900 67.932907 -52.024288
+v 6.686260 71.156609 -44.986290
+v 5.451690 70.325211 -46.278889
+v 7.459150 70.589508 -46.788589
+v 2.367640 69.658806 -42.428589
+v 3.340560 69.553207 -46.339489
+v 0.444759 68.132607 -46.403587
+v 0.065732 68.274406 -44.725090
+v 4.590490 68.409004 -48.793789
+v 5.898620 69.678810 -47.613689
+v 7.055140 66.767708 -50.477787
+v 9.177680 67.665207 -49.818890
+v 8.836590 66.785011 -51.248890
+v 2.947800 68.974205 -47.520088
+v 0.283839 67.642410 -47.642788
+v 1.972110 67.506607 -49.067589
+v -0.534302 66.180611 -49.013988
+v 4.411660 66.316910 -50.502487
+v 2.911430 65.192909 -51.087490
+v 0.138685 65.459106 -50.028187
+v 7.860010 66.406708 -51.873989
+v 5.128700 65.832710 -51.287788
+v 0.173778 63.743107 -51.199089
+v 4.394670 65.346611 -51.831787
+v 1.141390 63.672009 -51.935387
+v 16.143000 69.777008 -53.490589
+v 18.815599 70.348206 -54.231789
+v 19.136101 70.837807 -56.667889
+v 16.782400 70.833710 -56.003490
+v 16.902399 70.690605 -55.156689
+v 16.379400 70.732506 -56.873890
+v 17.900000 70.531311 -57.588287
+v 14.399500 69.852509 -54.266888
+v 12.759100 69.628708 -54.990688
+v 14.830700 70.484810 -55.776688
+v 12.500200 69.805107 -56.363289
+v 9.713300 68.487206 -55.320389
+v 14.917100 70.515106 -57.010288
+v 9.713300 68.273308 -54.641888
+v 20.561399 66.395111 -63.160789
+v 21.247499 67.930107 -60.613789
+v 16.140699 69.652504 -59.008690
+v 15.564500 67.202309 -62.228188
+v 14.260000 69.889008 -58.478287
+v 11.817000 68.705109 -59.432289
+v 12.514400 69.656509 -57.708889
+v 16.203899 66.267509 -63.537189
+v 12.975100 66.149406 -63.459888
+v 13.430500 68.658409 -60.343189
+v 10.258900 66.267509 -62.353088
+v 8.022890 66.817810 -53.094990
+v 7.068260 66.212807 -52.548290
+v 5.655120 66.547211 -54.653088
+v 5.193500 66.647308 -55.697689
+v 8.441060 68.047508 -55.998890
+v 9.590060 68.527306 -56.677387
+v 5.347860 66.650009 -56.865089
+v 8.424750 67.764206 -57.703789
+v 3.593400 65.723106 -54.932888
+v 8.514180 66.826904 -59.957790
+v 5.696910 66.218109 -58.528587
+v 4.661420 65.582008 -53.406288
+v 3.959340 65.086609 -52.757690
+v 1.006290 63.416809 -52.593288
+v 0.889149 63.415607 -53.337990
+v 1.026710 64.147705 -55.058590
+v 2.624370 65.248505 -56.516888
+v 3.767710 65.589211 -57.721588
+v 0.870399 64.089905 -56.186687
+v -0.617838 62.585907 -58.468487
+v 7.674390 65.536011 -61.993488
+v 4.073980 64.716705 -60.623390
+v 2.568800 63.575012 -62.631989
+v 2.136880 63.950310 -59.934589
+v 27.594500 62.942810 -64.355492
+v 31.146799 60.942310 -64.118195
+v 26.693199 61.813713 -66.569092
+v 31.133499 59.647911 -66.080994
+v 21.551701 64.258110 -66.405792
+v 24.632799 62.874912 -66.574394
+v 24.149599 62.718113 -67.538292
+v 22.146799 63.540810 -67.333595
+v 22.421600 63.865013 -69.864296
+v 24.962999 64.102516 -71.479095
+v 21.778500 65.503716 -72.763390
+v 25.563200 62.636410 -69.568596
+v 24.281601 62.637810 -68.456696
+v 26.718700 61.485012 -68.432091
+v 22.190800 63.333813 -68.538490
+v 32.625301 62.188713 -76.127495
+v 36.858700 59.526211 -77.017189
+v 34.326801 61.855511 -78.218590
+v 30.263300 63.867710 -76.734192
+v 26.594700 64.455215 -73.471992
+v 28.174500 63.745811 -73.587692
+v 29.019600 64.757614 -77.763489
+v 26.741699 65.523613 -78.012192
+v 30.734301 64.212715 -78.967789
+v 27.763901 63.030212 -71.794395
+v 33.349602 60.864910 -74.717094
+v 33.772202 62.626110 -80.173889
+v 24.648001 65.391815 -74.550789
+v 27.982000 65.343315 -79.732391
+v 23.737400 66.195618 -79.306389
+v 26.071800 65.212814 -83.766991
+v 27.453100 65.218712 -82.294090
+v 29.573200 64.337715 -83.239494
+v 31.180401 64.043518 -80.917892
+v 33.614601 62.736710 -81.342690
+v 33.046299 62.650517 -83.231194
+v 29.198099 63.709614 -85.158089
+v 23.902300 65.963913 -82.034393
+v 21.500900 66.013115 -84.411194
+v 32.805099 58.595913 -66.331390
+v 37.569901 55.339512 -66.562996
+v 35.042198 56.960411 -67.463791
+v 36.384300 55.999813 -69.077591
+v 36.409500 56.269112 -71.336792
+v 39.788200 53.810211 -69.596893
+v 32.618900 58.209511 -68.551491
+v 39.418301 55.298512 -72.975990
+v 34.935501 57.771011 -72.437393
+v 40.170200 53.807610 -62.134892
+v 39.091900 54.190010 -65.911896
+v 41.459301 52.193512 -62.719292
+v 42.276798 51.333412 -65.487495
+v 44.960800 48.835613 -65.688492
+v 45.676998 48.375011 -66.557396
+v 41.588299 52.219612 -68.118690
+v 39.111301 54.014812 -67.693695
+v 39.735298 54.636711 -72.148094
+v 42.993500 51.777012 -70.587090
+v 40.188999 53.841713 -70.753593
+v 32.104401 58.624310 -67.533691
+v 29.958200 59.722111 -68.440895
+v 27.260000 61.152512 -67.533691
+v 33.013599 58.100613 -70.027191
+v 31.245001 60.269112 -71.542892
+v 29.640800 60.135612 -69.267189
+v 39.680099 57.754311 -78.168396
+v 36.177299 59.509510 -76.010689
+v 36.461601 58.596710 -74.949493
+v 39.002201 57.219711 -75.493095
+v 35.568600 61.359512 -80.095795
+v 37.989498 59.170315 -82.869392
+v 37.085899 59.460217 -84.315292
+v 35.560501 61.382111 -81.892189
+v 42.087601 55.614311 -81.646591
+v 22.029100 65.670006 -63.954887
+v 19.165600 65.232208 -65.524994
+v 18.618799 66.316811 -63.530388
+v 17.953800 64.171906 -67.244392
+v 19.672800 64.096405 -67.396393
+v 20.024599 63.790211 -68.554596
+v 17.825500 63.805710 -68.547791
+v 11.304200 63.502411 -67.449295
+v 14.662700 64.370010 -66.265396
+v 20.755100 64.028008 -69.638695
+v 18.701599 64.235008 -69.751991
+v 18.085899 65.213013 -71.345894
+v 17.050800 65.548119 -72.189095
+v 16.060400 63.857910 -69.679993
+v 16.556499 66.392914 -74.776993
+v 19.403999 65.598015 -72.077393
+v 15.034600 65.421616 -72.954193
+v 12.868300 65.460617 -74.593590
+v 12.936300 64.215813 -72.113693
+v 10.816800 64.708817 -74.463692
+v 8.920160 63.183613 -73.142693
+v 13.853200 63.352413 -69.227791
+v 11.089100 62.952412 -69.149292
+v 13.948600 63.442810 -68.170090
+v 10.229100 62.782513 -70.459091
+v 10.790300 63.090111 -71.429192
+v 13.389600 63.556313 -70.501595
+v 11.426600 64.709106 -65.262291
+v 9.416230 64.903305 -64.314896
+v 7.589680 63.662510 -66.431190
+v 8.404470 63.221512 -67.682091
+v 5.514180 63.245010 -66.717590
+v 3.711680 63.308311 -65.416092
+v 5.865860 64.638405 -62.916889
+v 7.239950 62.507210 -69.978790
+v 8.022000 62.540611 -72.076996
+v 4.628340 62.242611 -69.584389
+v 4.948440 62.739311 -74.596092
+v 4.286810 61.951210 -71.402489
+v 1.507580 61.617111 -69.004890
+v 5.028440 62.153511 -72.973289
+v 1.908300 61.402313 -70.942291
+v 1.848480 61.637310 -73.974892
+v 2.213620 61.509312 -72.694893
+v -0.810509 60.488010 -72.599594
+v -0.450355 60.683712 -70.359993
+v -1.688620 60.412312 -73.880791
+v 15.804800 66.951317 -77.489296
+v 18.717501 66.766113 -75.896194
+v 16.635201 67.140213 -79.224091
+v 18.686199 67.170815 -79.638992
+v 12.974600 66.634819 -79.077896
+v 13.564600 66.420715 -77.116394
+v 20.704000 66.840515 -81.391090
+v 20.558399 66.916115 -79.611992
+v 17.799601 66.975212 -82.303696
+v 19.410999 66.868217 -82.628693
+v 18.606899 66.487717 -84.319794
+v 14.852500 66.437813 -83.247292
+v 14.213800 66.756615 -80.779694
+v 9.787860 66.274712 -80.195091
+v 8.884180 65.768715 -78.028496
+v 8.465830 65.054016 -76.591095
+v 4.092090 63.101013 -75.902290
+v 7.949960 65.796616 -79.460793
+v 5.052420 64.167915 -77.605591
+v 1.319250 62.147511 -76.166191
+v 3.867560 64.008118 -78.794891
+v 0.454459 62.484413 -78.927689
+v 7.481450 65.611618 -82.982391
+v 5.170480 64.857117 -81.286690
+v 10.781500 66.116814 -83.697891
+v 9.338350 65.436218 -85.509995
+v 4.857830 64.567215 -83.646889
+v 7.363940 65.261116 -84.704689
+v 5.665800 64.427017 -85.676590
+v 2.386370 63.061214 -85.334389
+v 1.977150 63.247814 -82.860291
+v 43.808701 46.752499 -4.940532
+v 46.460602 44.974899 -5.727553
+v 46.367699 42.277802 -0.744192
+v 47.565102 42.736500 -3.503763
+v 48.967701 39.901199 -1.262873
+v 49.271099 39.083199 0.080232
+v 51.683300 41.001598 -9.933013
+v 48.605099 43.579800 -7.284713
+v 50.450600 41.122398 -6.477674
+v 48.313000 43.355099 -6.027143
+v 45.324200 48.362904 -12.086792
+v 49.499901 44.223705 -12.676092
+v 48.054699 46.342205 -14.322692
+v 48.727798 44.478500 -10.510492
+v 46.609501 47.635303 -13.520493
+v 47.767700 47.438206 -19.493792
+v 45.932201 48.778603 -17.498692
+v 46.049301 48.744602 -19.972893
+v 44.661701 49.602505 -16.664593
+v 49.841999 45.382305 -20.716093
+v 50.406200 43.721203 -15.334693
+v 53.465500 39.015602 -12.404193
+v 53.831100 37.581799 -8.869784
+v 52.061798 41.332405 -14.100493
+v 52.118599 41.686905 -17.248993
+v 53.969601 39.105305 -19.019794
+v 56.591499 34.250900 0.062228
+v 56.859402 33.829700 1.388126
+v 54.719700 35.613300 0.319228
+v 53.793800 36.247002 -2.778294
+v 55.954601 34.482201 -3.327864
+v 54.549599 35.769798 -4.583844
+v 57.044899 33.345901 -4.695785
+v 56.001598 34.518299 -8.806745
+v 54.680698 35.837200 -6.537124
+v 57.056599 33.178299 -7.641075
+v 62.310902 28.473499 -1.123545
+v 59.808498 31.194599 -0.044230
+v 59.819000 31.207600 -1.680365
+v 60.632599 29.611500 -5.481225
+v 59.055500 30.861403 -9.350895
+v 52.794998 36.919102 -1.226904
+v 51.077202 39.356499 -4.473924
+v 51.547901 37.940201 -2.226504
+v 55.319199 35.768200 -10.699094
+v 55.564400 35.883205 -15.287894
+v 56.882301 33.592804 -12.805894
+v 55.536098 36.411903 -17.830793
+v 55.575100 37.070503 -21.055294
+v 60.804798 28.612701 -12.658695
+v 62.607700 26.435902 -14.948695
+v 59.386600 30.226402 -14.015696
+v 58.447201 31.368202 -15.113095
+v 59.364399 30.479103 -18.001995
+v 57.981602 32.490204 -18.341293
+v 62.298401 26.902304 -18.510897
+v 54.742901 40.062305 -32.688694
+v 53.816898 41.311302 -29.426992
+v 54.860001 39.198704 -27.925295
+v 43.887402 49.804104 -22.812592
+v 46.381699 48.270805 -24.253193
+v 47.131100 47.999302 -20.603992
+v 47.799301 47.458004 -21.886892
+v 49.238098 46.326202 -23.771193
+v 49.245701 46.425503 -27.822893
+v 51.492100 44.607304 -30.401493
+v 49.896000 46.241104 -30.162693
+v 47.744099 47.599804 -27.868992
+v 48.170300 48.467003 -31.919493
+v 51.123901 43.082703 -16.984192
+v 51.995499 42.695004 -21.394592
+v 50.860401 44.523106 -23.641092
+v 50.125198 45.531704 -25.412493
+v 52.482498 43.244102 -28.691292
+v 55.016399 38.597202 -24.447895
+v 53.735001 40.717503 -25.804995
+v 49.302399 47.447002 -33.262493
+v 50.872398 45.322002 -33.368393
+v 50.950500 45.300507 -35.474892
+v 52.167000 43.598804 -34.268791
+v 49.311798 48.797508 -38.582191
+v 50.811001 46.222706 -41.142193
+v 49.741299 47.875309 -41.659393
+v 50.923302 45.918308 -38.866394
+v 52.453999 42.499809 -37.421593
+v 52.272099 43.346306 -41.071491
+v 53.433701 42.090904 -32.515293
+v 53.183102 40.941109 -39.398792
+v 54.632099 39.818306 -35.388992
+v 54.316799 38.911007 -41.872093
+v 54.312401 39.031208 -39.709591
+v 56.639500 35.543804 -22.605995
+v 56.923698 35.719204 -31.105894
+v 56.923302 35.466206 -25.296095
+v 55.965500 37.591305 -32.123592
+v 59.912300 30.678003 -23.321194
+v 58.371201 33.416004 -27.670794
+v 58.849400 32.678104 -30.088095
+v 61.635502 28.009005 -20.800896
+v 58.561199 32.185505 -21.394594
+v 60.779999 29.776203 -27.501194
+v 56.133099 37.367306 -35.457794
+v 58.349400 33.169308 -35.643394
+v 55.560101 38.328209 -35.977394
+v 55.519299 38.060509 -37.733593
+v 56.379902 36.155807 -42.458591
+v 60.469200 29.911406 -33.247395
+v 59.547600 31.133205 -36.406696
+v 59.848400 30.454306 -38.696796
+v 58.029301 33.678009 -38.951195
+v 65.560799 23.983500 -2.056856
+v 66.613098 22.141300 -3.329067
+v 64.355797 25.630501 -3.487266
+v 65.815300 22.291002 -8.799606
+v 67.271797 21.639299 0.474847
+v 68.021896 20.459700 -1.278677
+v 68.733704 18.724701 -0.951755
+v 67.056602 20.954000 -5.172287
+v 68.434097 17.536802 -7.294847
+v 67.161697 19.998201 -8.535217
+v 66.008797 21.633701 -11.216796
+v 63.769600 25.308903 -8.974086
+v 65.878403 21.803802 -13.761296
+v 66.843201 20.200201 -14.927497
+v 67.545502 18.978802 -10.750298
+v 68.315804 17.566101 -12.361797
+v 66.924698 20.277304 -19.019796
+v 65.118698 23.178204 -20.822096
+v 64.450401 24.021803 -18.510897
+v 68.400002 17.732702 -16.220896
+v 68.564697 17.563204 -20.122396
+v 68.488197 18.411301 -3.753137
+v 68.988998 17.054300 -3.753137
+v 70.063797 13.492201 -8.502758
+v 68.647003 16.884302 -9.520527
+v 70.084000 13.492201 -5.110168
+v 69.800903 14.170701 -6.806478
+v 69.558701 15.247701 -3.691108
+v 70.471497 12.134301 -3.753138
+v 70.551003 12.134301 -7.145738
+v 71.410599 8.063230 -0.360600
+v 70.071701 13.322200 -1.039098
+v 70.910797 10.567001 -4.400228
+v 71.704803 6.706240 0.317950
+v 71.535599 8.063231 -3.074629
+v 71.953102 6.706241 -4.092399
+v 70.130997 12.813300 0.996501
+v 71.468399 9.420231 -7.824249
+v 71.820099 8.063231 -7.145739
+v 69.984299 14.170202 -13.591599
+v 68.804001 16.812702 -14.636197
+v 70.797897 12.069002 -12.997898
+v 69.606796 15.273003 -16.475298
+v 69.982002 14.849204 -21.733799
+v 71.099800 11.867002 -19.401398
+v 71.620003 9.420232 -10.538298
+v 71.735497 9.420232 -13.252398
+v 71.280197 10.777302 -13.252398
+v 72.270302 6.132751 -7.650189
+v 72.379097 6.706242 -12.573899
+v 72.080101 8.063231 -12.573899
+v 71.904800 9.223453 -16.899399
+v 71.928802 9.420233 -20.037498
+v 72.586197 6.706243 -18.001999
+v 72.216202 8.383243 -19.358997
+v 72.579697 6.706244 -20.037498
+v 63.383301 26.883699 0.442780
+v 64.855301 25.026199 -0.699848
+v 65.755600 23.893700 0.707407
+v 62.356400 27.454601 -7.331406
+v 62.635201 27.594299 -4.567856
+v 63.684601 25.066801 -13.504696
+v 67.146500 20.286404 -25.946297
+v 64.483597 24.348305 -24.108597
+v 66.378799 21.031406 -30.490896
+v 65.689102 22.312304 -29.197596
+v 67.217499 19.853004 -21.309795
+v 68.808502 17.293804 -25.748598
+v 67.668198 18.415806 -31.499697
+v 67.140900 19.598307 -31.233097
+v 65.917297 21.296806 -33.586697
+v 64.804100 23.423605 -31.529896
+v 65.772598 20.664406 -39.431297
+v 64.831802 22.482206 -39.247997
+v 69.517197 15.858204 -22.285099
+v 69.959900 14.799704 -24.490297
+v 71.250298 11.455704 -21.479399
+v 68.716003 16.714804 -29.121498
+v 69.830902 14.671205 -26.822699
+v 69.313698 14.849205 -30.215298
+v 70.788803 12.134304 -26.233898
+v 70.466103 12.134305 -28.858297
+v 71.994598 8.063233 -25.465698
+v 71.593102 9.420234 -26.144197
+v 71.194199 11.286504 -24.447899
+v 72.640198 5.349244 -25.465700
+v 71.109802 10.560205 -27.501198
+v 71.191902 8.741765 -30.554598
+v 70.473999 10.777305 -31.572298
+v 72.111504 6.605225 -28.369799
+v 71.758003 7.384705 -29.536798
+v 68.656601 14.849206 -34.286396
+v 69.029404 13.492206 -34.964897
+v 70.069801 10.098805 -34.964901
+v 67.760300 16.206205 -37.678997
+v 67.579697 18.002506 -33.692696
+v 67.455902 16.206205 -40.392998
+v 66.793602 18.148905 -40.350597
+v 68.026001 14.532307 -39.388996
+v 68.637802 12.813307 -38.357494
+v 70.779800 8.063235 -34.548302
+v 71.561401 6.706245 -32.250900
+v 69.513702 9.420237 -38.874100
+v 68.642502 10.777307 -41.750099
+v 70.791901 6.303836 -37.806198
+v 69.961098 7.384706 -40.053699
+v 69.574097 6.706247 -43.317501
+v 62.761299 26.765404 -24.744696
+v 63.992802 24.982204 -27.289196
+v 61.510502 28.673206 -29.876097
+v 63.538601 25.262005 -34.116795
+v 61.771000 27.315506 -39.629696
+v 62.162998 27.062305 -35.643394
+v 39.009602 47.935600 0.217925
+v 42.704800 45.843899 -0.931823
+v 52.198002 43.442608 -42.573494
+v 51.730900 43.979706 -43.552292
+v 49.485802 47.612408 -43.080093
+v 51.257099 44.131207 -44.731594
+v 50.304001 44.561909 -45.714092
+v 50.037701 45.646309 -44.707592
+v 48.832100 44.704807 -47.109394
+v 49.209702 46.109707 -45.237194
+v 46.721298 50.539909 -43.482994
+v 44.170101 46.954807 -48.528992
+v 42.979198 48.838806 -47.819191
+v 44.424702 47.137909 -47.707394
+v 44.945599 47.402008 -47.177891
+v 46.426399 47.264507 -46.442791
+v 47.785801 46.071209 -46.485592
+v 46.088402 45.908409 -47.760593
+v 45.244900 45.800709 -48.858494
+v 48.717800 43.955109 -48.781193
+v 44.640499 46.395008 -49.439793
+v 44.750900 46.934109 -51.745594
+v 45.588699 45.839306 -51.379692
+v 46.824902 44.706509 -50.731194
+v 53.515999 40.903606 -43.429790
+v 52.437099 42.283108 -45.817593
+v 52.968201 41.877407 -44.451992
+v 53.872601 40.412308 -45.802094
+v 52.459801 41.169006 -52.097393
+v 48.768902 43.582909 -50.173092
+v 53.600201 40.439507 -49.550194
+v 52.833099 41.414707 -47.506592
+v 51.865799 41.723106 -49.458992
+v 54.620701 39.506607 -50.028793
+v 44.819901 47.158806 -54.225994
+v 46.691502 45.124508 -54.227394
+v 46.701900 46.057209 -58.508392
+v 44.336700 48.186508 -56.009392
+v 45.229000 48.040710 -60.617493
+v 44.511200 49.060711 -62.311493
+v 48.555000 43.975906 -56.445194
+v 51.271301 42.059109 -55.722992
+v 47.910599 44.098507 -53.527092
+v 52.837299 40.866508 -56.347294
+v 50.997398 42.808510 -61.181393
+v 50.030602 43.422112 -59.202293
+v 51.880699 42.002613 -59.118690
+v 48.887798 44.734112 -60.787792
+v 53.664501 39.613010 -62.868893
+v 52.361900 41.314312 -63.084492
+v 54.195099 39.486912 -58.814091
+v 56.700100 35.976009 -45.590294
+v 55.183701 38.653606 -47.386894
+v 57.565300 34.420708 -43.221996
+v 56.589600 36.071709 -40.603394
+v 57.699299 34.487507 -46.306496
+v 56.531101 37.590309 -51.393593
+v 57.364300 36.199509 -50.062794
+v 57.615299 35.883209 -52.267094
+v 55.771900 38.390408 -54.097492
+v 58.935001 33.237507 -52.945595
+v 60.151501 29.776207 -43.191895
+v 61.485901 27.920807 -47.624294
+v 59.447399 31.133207 -44.633797
+v 59.271099 32.131908 -49.128895
+v 60.767700 29.756308 -51.129097
+v 57.431198 36.144009 -53.917191
+v 56.905300 36.728306 -55.770493
+v 58.760502 33.592808 -55.315098
+v 57.345798 35.771507 -57.105991
+v 60.274700 30.788309 -56.592598
+v 59.374901 31.803009 -58.518696
+v 55.451401 36.989410 -61.900093
+v 57.918800 33.338413 -60.768497
+v 56.842098 34.070812 -62.706097
+v 61.565701 28.765810 -54.770096
+v 61.626801 28.238209 -57.424496
+v 57.408298 32.635212 -63.078197
+v 55.306301 37.897911 -59.623493
+v 48.126499 46.791210 -67.547295
+v 50.731201 43.623810 -65.549889
+v 49.143700 46.146210 -70.509392
+v 47.716702 46.235611 -62.869694
+v 46.551102 47.448711 -65.131790
+v 47.910500 46.315712 -64.895889
+v 50.817501 43.075512 -62.372993
+v 50.442799 44.801613 -74.742889
+v 49.290199 46.399712 -73.470695
+v 47.649300 47.920712 -70.856392
+v 46.210800 48.992611 -69.673294
+v 53.269798 39.906612 -66.939995
+v 51.643600 42.761513 -69.399590
+v 51.336102 43.395210 -72.743095
+v 52.291000 41.905811 -71.787094
+v 53.516102 39.621010 -70.378693
+v 53.628799 37.918312 -73.640289
+v 52.134602 41.724411 -74.222290
+v 49.123402 47.040211 -76.495193
+v 50.800499 44.116013 -76.447090
+v 49.461102 46.352612 -78.361595
+v 49.736599 44.969212 -80.190292
+v 47.840801 48.149010 -80.511589
+v 47.432499 49.342213 -78.245995
+v 46.512699 49.433514 -83.187492
+v 47.836201 46.875916 -82.654594
+v 45.984600 48.711315 -85.056290
+v 44.709202 50.634716 -85.694794
+v 49.067299 44.703217 -82.005592
+v 48.113098 45.381817 -83.419189
+v 47.299198 46.060215 -84.496590
+v 48.319599 42.673515 -84.566391
+v 47.710201 44.821217 -84.496590
+v 51.191101 42.620110 -77.946289
+v 50.492100 43.131313 -79.977890
+v 53.125801 38.398212 -75.247292
+v 51.848598 41.661213 -76.081291
+v 51.416801 40.632313 -79.068489
+v 49.664398 43.346310 -81.782494
+v 49.115398 42.817616 -83.200989
+v 50.303001 41.729610 -81.416389
+v 51.147202 39.275311 -80.425491
+v 50.334099 40.632313 -81.782494
+v 49.636299 40.157314 -83.221695
+v 50.525600 37.918316 -81.981590
+v 48.763500 40.632317 -84.496590
+v 48.966999 38.596714 -84.496590
+v 55.172901 36.742111 -63.593391
+v 56.279999 33.418312 -65.074791
+v 55.959801 33.338413 -66.505791
+v 54.955200 36.363613 -65.828789
+v 55.363499 34.525810 -68.212189
+v 55.112400 34.525810 -70.247696
+v 54.420101 36.900810 -70.587090
+v 54.290600 36.561310 -72.283295
+v 54.940701 33.847210 -72.283295
+v 54.405201 34.760311 -73.640289
+v 57.810001 29.776211 -65.498093
+v 60.100399 28.471010 -62.395298
+v 58.838699 27.834711 -65.471191
+v 57.209499 30.003212 -66.855194
+v 56.003399 31.811712 -69.283394
+v 56.206100 30.140011 -70.733589
+v 56.428299 31.133211 -68.212189
+v 56.969101 27.713312 -70.926292
+v 57.347900 28.337011 -68.729691
+v 56.307899 28.419312 -72.283295
+v 54.867500 32.490211 -73.640289
+v 53.726398 39.094711 -65.090591
+v 53.613201 36.311012 -75.191589
+v 54.005299 36.561310 -73.640289
+v 52.604198 37.871311 -77.268692
+v 52.133801 35.882812 -79.068489
+v 52.672401 36.561310 -77.711395
+v 53.793598 32.869110 -76.089096
+v 54.003300 34.525810 -74.997391
+v 52.846100 35.204311 -77.711395
+v 51.311401 37.918312 -80.425491
+v 49.925301 37.239815 -83.139595
+v 51.596500 33.508011 -80.425491
+v 50.996700 36.561310 -81.237091
+v 50.021801 33.508015 -83.139595
+v 52.463600 31.811714 -79.068489
+v 49.070099 32.506817 -84.547493
+v 49.067299 35.204315 -84.555595
+v 50.883701 29.883413 -81.933090
+v 52.664902 29.776213 -79.068489
+v 65.690697 20.277308 -47.178196
+v 65.173698 21.493608 -46.775295
+v 65.764397 20.446808 -42.513397
+v 66.568298 18.349009 -42.767895
+v 67.126297 16.206207 -43.785595
+v 66.667503 17.563208 -45.790997
+v 66.226196 18.920208 -46.499695
+v 65.796600 19.259207 -51.079697
+v 64.838097 21.887907 -51.054295
+v 66.362099 17.563208 -49.552998
+v 67.533897 14.849207 -43.107098
+v 68.188797 11.619507 -43.354301
+v 67.674400 12.813308 -45.481895
+v 67.169899 14.849208 -46.838997
+v 66.859901 14.563309 -49.892296
+v 66.502800 16.185608 -50.872696
+v 66.052696 17.563208 -52.606297
+v 67.257401 13.152807 -48.535194
+v 68.613297 9.080997 -44.676201
+v 68.065697 9.219738 -47.591999
+v 67.624901 10.777308 -48.535198
+v 69.553802 5.707587 -45.312302
+v 67.172699 10.777308 -51.249298
+v 67.399696 9.420238 -51.249298
+v 67.705902 8.063238 -51.249298
+v 68.700699 5.349248 -50.570801
+v 68.039497 6.620249 -51.661999
+v 66.112801 16.206209 -53.963398
+v 65.531601 18.241810 -55.320396
+v 66.287201 14.849209 -53.963398
+v 65.765198 16.206209 -55.998898
+v 65.254601 16.206209 -58.148296
+v 65.149597 18.505510 -57.252098
+v 65.607803 14.849210 -57.355896
+v 66.288803 10.777309 -55.998901
+v 65.674004 11.455709 -58.111900
+v 66.572502 10.777308 -54.641899
+v 66.795799 12.038009 -52.547794
+v 66.429298 8.741770 -56.677399
+v 65.905701 9.080999 -58.373699
+v 67.326103 7.384708 -53.963402
+v 66.878799 7.396979 -56.010799
+v 65.096397 8.741770 -61.167599
+v 65.102203 11.455709 -60.070000
+v 65.647697 6.219550 -60.748501
+v 66.708702 4.782239 -58.713001
+v 62.204300 26.383207 -43.276695
+v 62.214500 26.383207 -44.803394
+v 63.972401 23.756208 -43.997696
+v 63.243301 25.004808 -47.687096
+v 64.429100 22.991308 -46.330097
+v 62.274601 26.722708 -49.468197
+v 61.837502 28.080009 -52.886597
+v 63.077400 25.621208 -51.524895
+v 64.381699 22.991308 -50.825195
+v 63.945000 23.500010 -54.811497
+v 62.993401 25.539709 -56.585297
+v 63.025101 25.778709 -53.848896
+v 61.503399 27.520809 -59.719997
+v 64.707703 21.634310 -54.641895
+v 65.161400 20.277309 -54.641895
+v 62.452400 20.485510 -63.594696
+v 63.743401 21.075909 -60.164097
+v 63.471401 20.277309 -61.426994
+v 64.601097 19.458609 -58.656597
+v 64.832397 20.313709 -56.785397
+v 64.926903 17.563210 -58.712997
+v 63.378101 18.241810 -62.784096
+v 64.737198 15.527809 -60.069996
+v 63.949402 14.342211 -62.784096
+v 60.180000 25.705311 -64.666191
+v 61.041599 25.026810 -63.462597
+v 60.105099 24.348312 -65.900993
+v 62.056301 22.991310 -62.784096
+v 61.038601 23.222811 -64.819603
+v 57.938202 28.419312 -66.855194
+v 58.852299 26.383711 -66.848190
+v 59.128300 24.348312 -68.212189
+v 58.308498 26.428312 -68.212189
+v 57.923698 25.026812 -70.926292
+v 57.281502 25.358311 -72.270889
+v 58.037998 22.991312 -72.283302
+v 59.130001 22.991312 -69.569199
+v 57.088501 23.782812 -73.696396
+v 56.302601 26.383711 -73.836990
+v 61.099098 21.618011 -65.837402
+v 59.754200 21.758011 -68.997002
+v 60.433899 19.959311 -68.551498
+v 62.078201 18.241812 -65.710197
+v 58.424900 21.634312 -72.283302
+v 59.372101 20.277311 -70.926300
+v 58.131302 19.657812 -73.645103
+v 57.692699 21.634312 -73.640297
+v 59.782101 18.180511 -70.926300
+v 59.159401 17.563211 -72.283302
+v 58.411098 17.563211 -73.640297
+v 54.906101 29.776211 -74.997391
+v 54.237499 25.705313 -77.711395
+v 54.877899 26.383713 -76.475090
+v 55.969501 22.802511 -76.015198
+v 55.533100 20.955713 -77.158997
+v 54.040100 21.661613 -79.000099
+v 52.841801 24.351013 -79.989990
+v 55.199799 20.277313 -77.711403
+v 54.127800 20.294113 -79.042900
+v 57.252998 19.539211 -75.063301
+v 56.643398 17.582014 -76.319901
+v 56.446999 18.920214 -76.354401
+v 54.250198 17.591312 -78.977402
+v 53.205601 29.097713 -78.256996
+v 54.421799 29.425512 -76.079994
+v 51.359798 25.720013 -81.762894
+v 51.389099 27.047314 -81.592491
+v 48.972801 25.711613 -84.423889
+v 49.024700 28.422913 -84.483192
+v 51.483398 22.996513 -81.768501
+v 52.733398 23.048313 -80.333504
+v 49.067299 20.277313 -83.709000
+v 49.067299 22.991314 -84.088501
+v 51.547798 20.294313 -81.680298
+v 48.583302 22.991314 -84.496597
+v 47.211899 17.563213 -84.496597
+v 49.067299 17.563213 -83.214600
+v 61.580502 11.871511 -68.890701
+v 61.041199 14.170712 -69.569199
+v 62.433701 14.170711 -66.633102
+v 60.873100 17.391211 -68.890701
+v 60.778999 16.206211 -69.569199
+v 59.536999 15.188512 -72.085602
+v 60.427898 12.813312 -70.926300
+v 58.686199 13.492212 -73.640297
+v 59.761501 12.813312 -72.027702
+v 58.700699 11.211513 -73.655502
+v 63.395100 10.098810 -65.498100
+v 63.405499 14.849211 -64.141098
+v 63.860401 10.777310 -64.141098
+v 64.335602 7.723950 -63.561901
+v 60.527500 10.098811 -70.926300
+v 62.051399 10.098811 -68.212196
+v 61.514400 8.402481 -69.277802
+v 61.280602 5.876291 -69.569199
+v 59.923500 6.706252 -71.558197
+v 59.731499 9.644792 -72.150497
+v 58.565899 9.423042 -73.639801
+v 58.148602 6.706252 -73.640297
+v 57.451099 16.206211 -75.340897
+v 56.486198 12.134313 -76.354401
+v 57.209499 12.134313 -75.528801
+v 57.209499 9.420242 -75.139801
+v 54.495399 12.134313 -78.162201
+v 55.981201 9.420242 -76.354401
+v 57.209499 6.706252 -74.593102
+v 54.495399 9.420242 -77.609398
+v 55.231098 6.706253 -76.354401
+v 54.495399 14.849213 -78.540901
+v 53.392700 12.134314 -79.068497
+v 49.067299 12.134314 -82.075500
+v 51.781300 17.563213 -81.199997
+v 46.353199 12.134314 -83.778900
+v 45.202900 12.134314 -84.496597
+v 51.591999 6.706253 -79.068497
+v 49.067299 6.706254 -80.974998
+v 49.067299 9.420243 -81.506699
+v 49.067299 10.750214 -81.782501
+v 46.353199 9.420243 -83.349800
+v 44.620399 9.427994 -84.556198
+v 47.979698 6.706254 -81.782501
+v 46.353199 6.706254 -83.156601
+v 43.639099 48.774208 -47.237694
+v 42.541801 51.019512 -62.747391
+v 26.998800 64.116013 -85.808090
+v 29.059401 62.532917 -87.008995
+v 25.866199 63.504314 -87.159790
+v 32.072399 60.860214 -87.244392
+v 29.700500 60.904816 -88.509293
+v 21.452299 65.552917 -85.732491
+v 24.694599 62.451115 -88.760590
+v 27.436001 60.922615 -89.380394
+v 25.997700 60.927315 -89.867096
+v 21.791800 62.277515 -89.873291
+v 21.348101 60.913715 -91.279396
+v 38.101501 56.894714 -87.156891
+v 40.555302 55.795715 -85.495491
+v 39.551701 55.541916 -87.191391
+v 38.885601 54.811314 -88.604591
+v 37.153000 58.750717 -85.619492
+v 34.919102 59.390816 -87.080292
+v 35.127300 59.922615 -86.129295
+v 36.665600 58.113815 -87.128593
+v 32.934101 61.494915 -85.629494
+v 35.014900 58.151314 -88.389191
+v 32.300201 59.585014 -88.688492
+v 32.311901 58.332714 -89.914894
+v 36.666901 56.787014 -88.498390
+v 37.772598 54.389317 -89.783295
+v 34.234001 56.917213 -89.924690
+v 32.187099 56.753414 -91.205490
+v 34.734299 54.833515 -91.203690
+v 43.145699 53.106316 -85.409592
+v 40.899799 54.192417 -87.183792
+v 39.438301 52.771214 -89.768295
+v 40.890800 52.788715 -88.539696
+v 43.644402 50.767315 -87.252289
+v 42.241699 52.733715 -87.175095
+v 42.320900 50.920315 -88.605095
+v 41.048500 50.668613 -89.875496
+v 35.864498 52.001816 -92.384590
+v 37.350899 52.687115 -91.216393
+v 32.782902 50.131214 -94.576096
+v 35.496899 50.131214 -93.303192
+v 27.354700 58.867214 -91.281792
+v 30.632099 55.583416 -92.605690
+v 32.575100 54.203217 -92.638794
+v 29.993299 57.836117 -91.334290
+v 27.436001 57.003616 -92.668495
+v 28.711800 55.559315 -93.218895
+v 24.849300 59.665516 -91.310089
+v 21.691999 59.195915 -92.545891
+v 22.728800 56.936714 -93.906593
+v 25.948400 55.559315 -93.982994
+v 23.283600 55.559315 -94.666191
+v 27.167700 52.747616 -95.344696
+v 30.068800 52.845314 -94.299095
+v 31.087000 50.131214 -95.352890
+v 30.068800 50.878216 -95.352890
+v 24.640699 53.798317 -95.352890
+v 21.926600 54.998215 -95.352890
+v 18.338900 65.868713 -85.746590
+v 18.985001 65.374916 -86.578392
+v 21.567600 64.826714 -86.919189
+v 19.684900 64.077614 -88.360596
+v 15.625000 64.153717 -88.498489
+v 22.358200 63.590614 -88.294090
+v 18.528799 62.011116 -90.916992
+v 15.887200 62.418114 -90.741890
+v 14.853800 65.602219 -85.834091
+v 17.370199 61.509315 -91.466194
+v 15.213000 60.393414 -92.520790
+v 9.595960 61.170914 -91.418289
+v 11.171400 64.718315 -87.271492
+v 11.740000 65.633614 -85.582390
+v 7.203320 64.049316 -87.497490
+v 8.017810 63.255215 -88.935692
+v 14.087500 63.322117 -89.570190
+v 8.670420 62.366615 -90.123489
+v 4.782580 61.918613 -89.653992
+v 3.852450 62.478416 -88.293594
+v 0.808237 60.550816 -89.509293
+v 4.173560 60.936115 -90.627495
+v 1.607090 62.263016 -86.883392
+v -0.975129 60.898415 -87.917091
+v 6.809890 61.150814 -91.058990
+v 18.518400 59.867313 -92.675293
+v 20.569599 58.274216 -93.426094
+v 19.212500 58.274216 -93.657394
+v 16.522600 60.120617 -92.688591
+v 17.266600 58.289814 -93.896690
+v 20.922100 55.550613 -95.351494
+v 19.212500 56.141216 -95.352890
+v 16.498501 56.610214 -95.352890
+v 14.715100 58.268414 -93.994591
+v 13.784400 56.641216 -95.352890
+v 12.411700 58.224716 -93.931694
+v 7.459540 59.533115 -92.594696
+v 10.162600 59.775616 -92.679596
+v 9.713300 58.274216 -93.709190
+v 8.999100 55.559315 -95.352890
+v 5.816770 55.564617 -94.783890
+v 7.980370 56.915516 -94.409790
+v 7.413560 58.275414 -93.498589
+v 11.100600 55.982414 -95.501595
+v 5.652360 59.031914 -92.719490
+v 3.912720 58.578815 -92.615593
+v 1.460160 59.163414 -91.276390
+v 0.819582 57.000614 -92.665695
+v -1.278140 57.817917 -91.186493
+v 4.178390 56.858517 -93.805794
+v 1.946520 55.205017 -94.080589
+v 0.214082 55.559315 -93.280792
+v 5.642210 54.132317 -95.352890
+v -0.769616 54.037514 -93.662689
+v 0.214082 52.845314 -94.514091
+v 2.400800 53.667915 -94.835091
+v 0.198348 50.155014 -95.426590
+v 11.070300 50.131214 -97.303696
+v 21.926600 50.131214 -96.829895
+v 5.642210 52.845314 -95.815193
+v 2.928150 52.505215 -95.352890
+v 2.928150 50.131214 -96.186890
+v 46.000702 47.417213 -85.853592
+v 44.996201 47.494816 -87.240990
+v 44.638000 48.826416 -87.143890
+v 43.548000 48.747913 -88.470390
+v 42.554100 48.308414 -89.589790
+v 47.218498 43.346313 -85.853592
+v 46.828201 44.703217 -85.853592
+v 46.104500 43.346313 -87.210594
+v 44.236000 45.801914 -88.714691
+v 47.530602 41.989315 -85.853592
+v 46.484100 40.632317 -87.355492
+v 46.873798 38.852417 -87.158295
+v 47.710201 40.955315 -85.853592
+v 45.171001 39.450115 -88.848892
+v 44.980701 42.497715 -88.609695
+v 43.793999 39.249615 -90.045692
+v 43.639099 41.989315 -89.960190
+v 47.885201 35.882816 -86.066193
+v 47.861698 37.918316 -86.045891
+v 46.353199 36.561314 -87.771996
+v 43.756802 36.560017 -90.020294
+v 47.876900 33.847214 -86.045494
+v 46.444901 33.835114 -87.555191
+v 43.639099 34.532215 -89.924690
+v 46.561798 31.133213 -87.210594
+v 43.639099 31.133215 -89.490189
+v 43.587399 33.847214 -89.887596
+v 46.322498 29.477913 -87.243690
+v 43.639099 28.419315 -89.031189
+v 46.353199 31.133213 -87.401596
+v 46.353199 25.705313 -86.696594
+v 45.641602 25.705313 -87.210594
+v 43.639099 25.705315 -88.536293
+v 46.353199 22.991314 -86.255699
+v 43.639099 12.134315 -85.496101
+v 43.639099 14.849215 -86.124901
+v 40.925098 48.774216 -90.767891
+v 38.578098 47.428516 -92.690994
+v 38.210999 48.372314 -92.638794
+v 40.927502 47.418915 -91.162491
+v 42.904301 46.060215 -89.924690
+v 43.230400 44.703217 -89.924690
+v 40.925098 44.703217 -91.653191
+v 39.342098 44.703217 -92.638794
+v 38.210999 44.703217 -93.246689
+v 35.496899 47.417213 -94.088493
+v 37.487099 50.028214 -92.468292
+v 32.786701 47.813416 -95.351593
+v 35.496899 44.703217 -94.591293
+v 33.942001 44.703217 -95.352890
+v 40.925098 41.989315 -91.960091
+v 39.785599 41.989315 -92.638794
+v 38.210999 41.989315 -93.427895
+v 40.925098 39.275314 -92.015190
+v 34.088001 39.275314 -95.352890
+v 40.925098 36.561314 -91.882591
+v 39.594799 36.561314 -92.638794
+v 38.210999 36.561314 -93.366089
+v 38.210999 39.275314 -93.455193
+v 39.834099 39.275314 -92.638794
+v 40.925098 33.847214 -91.597992
+v 39.073898 33.847214 -92.638794
+v 33.481800 33.847214 -95.352890
+v 38.210999 33.847214 -93.106689
+v 42.272400 28.419315 -89.924690
+v 38.210999 28.419315 -92.426491
+v 40.925098 28.419315 -90.769791
+v 35.496899 28.419315 -94.101295
+v 33.350201 28.419315 -95.352890
+v 32.782902 33.847214 -95.642189
+v 32.782902 39.275314 -95.873795
+v 32.782902 28.419315 -95.663094
+v 27.354700 33.847214 -97.652489
+v 30.068800 28.419315 -96.975990
+v 27.354700 28.419315 -97.977692
+v 21.926600 28.419315 -99.241295
+v 21.926600 33.847214 -98.742592
+v 21.926600 39.275314 -98.601089
+v 11.070300 39.275314 -99.159195
+v 11.070300 44.703217 -98.493195
+v 5.642210 44.703217 -97.720795
+v 5.642210 50.131214 -96.655495
+v 0.214082 44.703217 -96.586395
+v 4.025700 39.275314 -98.066895
+v 2.928150 39.275314 -97.788193
+v 0.214082 39.275314 -96.986496
+v 5.642210 39.275314 -98.387794
+v 16.498501 28.419317 -99.791489
+v 11.070300 28.419317 -100.051994
+v 11.070300 33.847214 -99.427193
+v 5.642210 36.561314 -98.554192
+v 2.954220 36.460716 -98.056290
+v 0.214082 36.561314 -97.290794
+v 5.642210 31.133215 -99.480789
+v 5.642210 33.847214 -98.987495
+v 2.928150 31.133215 -99.055389
+v 2.928150 33.847214 -98.516991
+v 0.214082 32.466217 -98.066895
+v 0.214082 33.847214 -97.781296
+v 40.925598 25.669315 -90.340790
+v 43.639099 22.991316 -88.048798
+v 38.210999 25.705315 -92.168396
+v 38.210999 22.991316 -91.996201
+v 40.893002 23.129816 -89.924698
+v 37.527302 25.705315 -92.638794
+v 33.636700 25.705315 -95.352890
+v 35.496899 25.705315 -94.092194
+v 37.414600 22.991316 -92.638802
+v 35.496899 22.991316 -94.279602
+v 34.096199 22.991316 -95.352898
+v 40.925098 17.563215 -88.832802
+v 39.678200 17.563215 -89.924698
+v 40.268299 20.277315 -89.924698
+v 43.152500 17.563213 -87.210602
+v 43.639099 17.563213 -86.897697
+v 38.210999 17.563215 -91.505699
+v 38.210999 20.277315 -91.830902
+v 37.191601 17.563215 -92.638802
+v 37.352901 20.277315 -92.638802
+v 35.496899 17.563215 -94.684799
+v 35.496899 20.277315 -94.524902
+v 32.782902 22.991316 -96.200699
+v 32.782902 25.705315 -95.868195
+v 32.782902 20.277315 -96.597702
+v 34.551498 20.277315 -95.352898
+v 30.068800 25.705315 -97.243790
+v 27.354700 27.267315 -98.066895
+v 27.354700 25.705315 -98.232590
+v 28.841101 22.991316 -98.066902
+v 30.068800 22.991316 -97.617302
+v 27.354700 20.277315 -98.962402
+v 30.939699 17.563215 -98.066902
+v 30.068800 19.971315 -98.066902
+v 30.068800 17.563215 -98.397697
+v 24.640699 17.563217 -99.959602
+v 21.926600 17.563217 -100.281998
+v 21.926600 22.991318 -99.853996
+v 27.354700 17.563215 -99.294899
+v 42.047600 14.849215 -87.210602
+v 40.925098 14.849215 -88.059196
+v 38.916500 14.849215 -89.924698
+v 41.086201 12.144014 -87.301498
+v 39.592201 12.116514 -88.626900
+v 38.337299 12.118714 -89.996696
+v 38.210999 14.849216 -90.813698
+v 36.843498 14.849216 -92.638802
+v 35.496899 14.849216 -94.652199
+v 34.962002 14.849216 -95.352898
+v 34.849899 17.563215 -95.352898
+v 37.123299 12.194615 -91.657700
+v 34.866299 11.455715 -95.352898
+v 35.714802 12.134315 -93.995796
+v 42.264801 9.436785 -86.368896
+v 41.227501 9.388444 -87.242302
+v 40.925098 10.777314 -87.380402
+v 39.595901 10.780214 -88.606400
+v 39.742100 8.970775 -88.662804
+v 38.191002 7.599565 -90.577599
+v 39.307499 5.758745 -89.924698
+v 38.278301 10.779015 -90.010201
+v 37.237999 10.753816 -91.361504
+v 35.803600 10.098815 -93.656601
+v 38.328999 9.431415 -90.073898
+v 37.449699 8.725415 -91.231201
+v 34.798100 8.741776 -95.352898
+v 35.585098 7.384715 -94.061600
+v 36.638199 9.420245 -92.309097
+v 36.854000 8.063245 -92.131203
+v 34.827400 6.706256 -95.352898
+v 32.782902 17.563215 -97.014503
+v 33.254398 10.400316 -97.858704
+v 32.674301 8.338516 -99.018204
+v 32.744099 10.979716 -98.320099
+v 33.400398 7.384716 -98.066902
+v 31.948099 14.849216 -98.066902
+v 32.782902 14.849216 -97.495598
+v 30.068800 14.849216 -98.916000
+v 31.425800 12.134316 -99.062103
+v 30.193899 11.219516 -99.975098
+v 28.711800 12.134316 -100.175003
+v 27.354700 12.134316 -100.486000
+v 27.354700 14.849216 -99.787697
+v 24.640699 14.849216 -100.356003
+v 23.949499 12.170917 -100.930000
+v 21.926600 13.477216 -100.780998
+v 21.926600 14.849216 -100.595001
+v 26.031000 10.772817 -101.128998
+v 25.997700 12.134316 -100.723999
+v 28.711800 9.420246 -101.303001
+v 28.400499 10.857216 -100.707001
+v 30.099800 9.427076 -100.792000
+v 27.354700 9.420246 -101.561996
+v 30.211201 6.799457 -102.250000
+v 30.068800 8.063246 -101.549004
+v 31.241100 7.383497 -101.002998
+v 31.530100 6.659807 -101.055000
+v 28.759001 7.729146 -102.343002
+v 27.360901 8.282976 -102.242996
+v 27.428301 6.707107 -103.502998
+v 24.229799 10.746616 -101.306999
+v 25.246500 9.386976 -101.785004
+v 22.028799 9.128616 -102.013000
+v 24.164200 8.838886 -102.139000
+v 26.063601 6.789876 -103.615997
+v 24.698000 8.062337 -102.656998
+v 24.246799 7.069046 -103.578003
+v 22.624201 8.089247 -102.839996
+v 16.498501 22.991318 -100.473000
+v 12.547200 22.991318 -100.780998
+v 11.070300 23.039217 -100.780998
+v 16.479601 16.576517 -100.766998
+v 5.642210 25.705317 -100.263992
+v 6.145970 22.991318 -100.780998
+v 2.928150 24.348318 -100.292992
+v 2.928150 27.740818 -99.636490
+v 5.642210 28.419317 -99.859489
+v 1.571110 25.026817 -99.975594
+v 1.431580 27.873516 -99.344795
+v -0.376343 26.010815 -99.423996
+v 5.642210 22.961218 -100.775002
+v 2.928150 22.150316 -100.780998
+v 1.358750 21.831318 -100.736000
+v 8.356300 22.991318 -100.797997
+v 11.070300 20.277317 -101.084999
+v 8.356300 20.277317 -101.210999
+v 5.642210 20.277317 -101.307999
+v 11.070300 17.563217 -101.401001
+v 8.356300 17.563217 -101.708000
+v 6.999200 17.563217 -101.830002
+v 4.265820 17.398718 -102.127998
+v 2.778840 20.333616 -101.258003
+v 2.928150 18.920218 -101.698997
+v 0.206144 17.916616 -102.043999
+v 1.682010 16.730516 -102.515999
+v 16.498501 14.849216 -100.973000
+v 13.784400 17.563217 -101.064003
+v 16.095400 17.563217 -100.780998
+v 13.784400 14.849216 -101.459999
+v 17.166700 12.217516 -101.224998
+v 12.083900 12.108016 -102.125000
+v 20.560499 9.246236 -102.055000
+v 19.988800 10.766417 -101.365997
+v 19.248100 9.421216 -102.140999
+v 17.855499 10.777316 -101.543999
+v 14.576400 10.602616 -102.052002
+v 17.244200 9.544696 -102.272003
+v 18.523399 8.313247 -103.542000
+v 13.008100 9.309097 -103.469002
+v 15.373400 8.155837 -104.890999
+v 19.272400 7.557877 -104.660004
+v 12.427400 10.777317 -102.462997
+v 11.070300 10.777317 -102.945999
+v 15.322000 7.115128 -107.574997
+v 12.031500 7.910477 -106.446999
+v 12.322900 8.816117 -104.586998
+v 7.917480 16.117117 -102.067001
+v 9.669230 14.739117 -102.093002
+v 11.070300 14.849216 -101.827003
+v 6.999200 14.849217 -102.598000
+v 5.456020 16.518017 -102.282997
+v 11.016000 13.356416 -102.121002
+v 8.356300 13.492217 -102.735001
+v 5.603050 11.988717 -104.691002
+v 6.115970 13.598417 -103.372002
+v 7.757310 12.173818 -103.550003
+v 5.642210 14.849217 -102.892998
+v 3.804760 14.590817 -103.383003
+v 3.541230 16.197416 -102.638000
+v 1.348680 14.824817 -103.539001
+v 0.214082 16.206217 -102.796997
+v 4.466870 12.568418 -104.612999
+v 2.957250 12.816717 -104.747002
+v 1.112290 12.734417 -104.985001
+v 9.944440 10.740417 -103.499001
+v 9.713300 12.134317 -102.830002
+v 11.070300 10.041317 -103.495003
+v 7.632330 10.785217 -104.764000
+v 10.071300 9.470717 -104.746002
+v 4.877820 10.737517 -106.223000
+v 7.829080 9.386617 -106.217003
+v 8.813420 8.271497 -107.195000
+v 2.375920 11.075817 -106.405998
+v 13.704200 6.927688 -109.178001
+v 11.159200 7.437278 -108.059998
+v 5.460570 9.377887 -107.517998
+v 8.760320 7.681478 -108.343002
+v 4.988380 8.279068 -109.293999
+v 9.145930 6.778708 -111.269997
+v 5.009190 7.158218 -111.508003
+v 6.920220 6.790908 -111.704002
+v 2.636250 9.408767 -108.260002
+v 4.285190 9.420247 -107.915001
+v 4.285190 8.710288 -108.922997
+v 3.082360 7.729078 -110.970001
+v 1.359680 9.042618 -108.785004
+v 1.048100 7.810258 -110.912003
+v 3.571110 6.380569 -113.745003
+v 88.421204 -76.564796 -0.360613
+v 87.064201 -76.451698 -0.360613
+v 87.064201 -76.288803 -1.717612
+v 88.421204 -76.865700 -1.717613
+v 88.395500 -77.446503 -2.653783
+v 88.932098 -77.341103 -1.051513
+v 89.923203 -79.465302 -0.360614
+v 90.773201 -81.194397 1.013957
+v 89.912903 -78.089798 3.624347
+v 87.732498 -77.429703 -4.431663
+v 86.838699 -76.244003 -4.334272
+v 87.064201 -76.292702 -3.074642
+v 87.871597 -78.785896 -5.789383
+v 88.306702 -80.163300 -5.554823
+v 89.235497 -80.143700 -3.074183
+v 90.576599 -81.500702 -0.360614
+v 90.787697 -82.857697 -0.360615
+v 90.365303 -82.857697 -1.717613
+v 89.805901 -83.287201 -3.146634
+v 90.065598 -81.515999 -2.059303
+v 90.906502 -85.571701 2.353486
+v 90.261002 -85.571701 -0.360615
+v 89.778198 -85.571701 -1.647714
+v 89.009003 -81.500702 -4.431664
+v 88.380402 -81.499802 -5.781734
+v 89.090103 -82.857697 -4.431664
+v 88.377602 -82.855400 -5.712254
+v 87.064201 -88.623703 2.353485
+v 87.083099 -85.564201 -5.964834
+v 89.033798 -85.571701 -3.074644
+v 87.064201 -87.666702 -3.074644
+v 72.225601 4.669490 -1.039099
+v 72.483002 2.295960 0.657199
+v 72.647400 2.635251 -2.396120
+v 72.324501 4.815001 -3.753139
+v 72.643097 3.313781 -5.449430
+v 72.858299 1.278260 -3.074630
+v 73.061302 0.599793 -7.484990
+v 72.900497 2.635252 -8.842020
+v 72.725700 3.992251 -9.181279
+v 72.674202 0.599792 0.996474
+v 72.983803 -0.078735 -3.074630
+v 73.013702 -2.114200 -1.717620
+v 73.026703 -4.828250 -1.039101
+v 73.162102 -2.114199 -5.449440
+v 73.351402 -1.435728 -10.538300
+v 73.398003 -2.792718 -9.859790
+v 73.181503 -4.828249 -5.110171
+v 72.646202 5.349242 -12.573899
+v 72.729897 5.349242 -15.287899
+v 72.917999 3.992252 -14.270199
+v 73.141701 1.956732 -13.252400
+v 72.830002 5.349243 -18.680500
+v 73.344498 1.278263 -18.002001
+v 73.517303 -2.151368 -14.945800
+v 73.400703 -4.149719 -9.181281
+v 73.552498 -4.828248 -14.439801
+v 73.594902 -4.828247 -17.323500
+v 73.599998 -4.828247 -21.394600
+v 73.572403 -2.114197 -20.376801
+v 73.051003 -7.542300 -1.039101
+v 73.007301 -10.595500 -2.396122
+v 73.153900 -7.542299 -5.619061
+v 73.391403 -5.506769 -9.181281
+v 73.045303 -9.577759 -5.110171
+v 72.992500 -14.327200 0.317947
+v 73.070198 -12.291700 -0.360603
+v 72.787300 -14.327200 -2.396122
+v 72.948799 -12.291700 -2.396122
+v 72.900200 -11.613199 -5.110172
+v 72.824799 -11.952499 -7.485002
+v 72.636497 -14.327199 -5.110172
+v 73.391998 -6.863768 -10.877601
+v 73.213303 -8.899228 -10.538301
+v 73.142601 -8.899229 -7.824252
+v 73.171402 -10.425797 -15.796802
+v 73.364502 -9.068907 -17.153902
+v 73.529602 -7.611997 -19.331402
+v 72.302299 -16.362698 -12.573903
+v 72.388901 -15.684299 -7.824253
+v 72.784500 -13.987997 -17.662703
+v 72.631203 -14.496897 -15.627202
+v 72.935799 -11.443598 -11.386502
+v 73.259804 0.939030 -25.465700
+v 73.161697 2.635254 -24.108700
+v 73.370102 0.599796 -23.090799
+v 72.811501 0.599797 -31.911600
+v 72.716202 2.635255 -30.215300
+v 73.412102 0.542545 -20.376801
+v 73.573402 -2.114197 -18.002001
+v 73.520302 -2.630976 -24.108700
+v 73.403503 -1.435726 -26.144199
+v 73.093102 -1.774955 -30.893801
+v 73.532700 -7.016906 -27.700502
+v 73.316299 -4.489005 -30.215300
+v 72.136803 5.349245 -30.883400
+v 72.424202 5.349245 -28.179800
+v 71.715897 5.349246 -34.286400
+v 72.105003 3.992255 -34.008701
+v 71.679802 3.992256 -37.000401
+v 71.569603 2.850776 -39.774200
+v 70.962196 3.375927 -42.455799
+v 72.136803 2.326236 -36.488800
+v 72.080498 1.294496 -39.071499
+v 71.993698 0.599799 -41.616402
+v 73.077499 -2.962335 -33.607899
+v 72.743797 -0.757257 -34.964901
+v 72.399696 1.956736 -34.625702
+v 73.297699 -4.828245 -31.572300
+v 72.998497 -3.132014 -36.321899
+v 72.591599 -0.926874 -37.848598
+v 73.039398 -4.828243 -41.750099
+v 73.159798 -4.828243 -39.714500
+v 73.524597 -7.711725 -31.402702
+v 73.563400 -9.577755 -29.536802
+v 73.168198 -12.970296 -21.903502
+v 73.389999 -11.613196 -23.939001
+v 72.705803 -15.684297 -20.546402
+v 73.334900 -13.648695 -28.179802
+v 73.399803 -13.648695 -31.233103
+v 73.506203 -11.613195 -28.952602
+v 73.166397 -15.005695 -28.519001
+v 73.410400 -6.236145 -33.607899
+v 73.367897 -5.846004 -36.473598
+v 73.694702 -9.577754 -35.643398
+v 73.621902 -8.220755 -35.982700
+v 73.615997 -8.220754 -39.035999
+v 73.691902 -9.577753 -38.696701
+v 73.323799 -6.863763 -41.750099
+v 73.463402 -8.220754 -41.869099
+v 73.602997 -12.291695 -36.321903
+v 73.688904 -10.934794 -35.643398
+v 73.698997 -10.934794 -37.679001
+v 73.610497 -9.577753 -41.071499
+v 73.607101 -10.934793 -41.071499
+v 73.452904 -13.552694 -36.321903
+v 73.449097 -13.346494 -39.036003
+v 73.198700 -15.005694 -37.679005
+v 73.108398 -15.005693 -40.393005
+v 72.550903 -17.041201 -1.378353
+v 72.073997 -20.984100 -0.021304
+v 72.174500 -17.889299 -5.788693
+v 71.867500 -20.433701 -4.431664
+v 71.866600 -19.476198 -10.029403
+v 71.457001 -22.129997 -7.993884
+v 71.538803 -23.317400 -1.717614
+v 71.292198 -25.861799 0.996495
+v 71.286797 -23.656700 -4.770924
+v 70.800003 -25.974199 -5.788694
+v 70.632004 -26.891098 -7.145734
+v 71.493500 -22.469297 -13.252404
+v 71.835297 -20.772999 -16.984203
+v 72.277298 -18.258097 -19.698303
+v 71.291100 -23.147799 -9.859794
+v 70.418098 -28.575699 -11.556105
+v 70.983101 -25.587997 -13.591604
+v 71.226898 -24.504799 -15.287904
+v 71.082001 -25.861799 -1.039104
+v 70.627899 -27.764700 -2.735374
+v 70.248001 -34.004799 2.353494
+v 70.073303 -34.004799 0.317943
+v 70.332703 -29.933701 -2.396125
+v 70.240501 -29.933701 -5.110175
+v 70.417900 -28.575701 -4.431655
+v 70.294296 -29.254698 -7.824255
+v 69.764503 -35.022499 -3.922786
+v 69.969498 -36.718800 3.710494
+v 69.739899 -36.718800 0.996493
+v 69.631302 -36.718800 -1.039106
+v 70.822304 -26.789999 -17.323503
+v 70.177498 -29.933699 -16.645006
+v 70.177803 -29.933699 -15.287905
+v 69.780296 -32.138897 -14.948705
+v 70.029800 -31.290798 -11.895305
+v 69.739998 -33.326195 -12.573906
+v 69.456802 -34.238995 -14.683906
+v 69.316200 -36.718796 -11.895306
+v 69.582199 -32.647797 -16.645006
+v 68.821404 -34.004795 -19.359005
+v 69.707298 -31.290796 -19.359005
+v 69.005798 -35.362797 -16.554506
+v 69.178902 -36.040195 -14.609406
+v 68.061501 -35.953396 -19.695705
+v 72.787498 -16.023497 -23.090902
+v 71.825203 -21.451496 -21.394604
+v 72.784103 -17.041197 -27.162003
+v 72.523804 -18.398296 -28.179804
+v 72.153900 -19.933197 -24.447905
+v 71.339996 -23.826197 -22.073103
+v 71.425003 -23.147797 -24.108704
+v 71.771103 -21.790796 -24.108704
+v 71.453400 -23.486996 -19.019804
+v 71.080704 -25.450497 -20.037504
+v 70.779800 -26.726696 -20.716105
+v 70.779800 -25.861795 -23.171604
+v 70.710602 -25.602196 -24.787205
+v 71.264603 -23.147797 -27.501204
+v 72.068199 -20.433697 -27.501204
+v 71.147301 -23.147795 -30.215303
+v 72.062599 -20.433697 -28.858303
+v 70.779800 -24.640696 -27.501204
+v 70.336998 -25.861795 -27.501204
+v 72.959702 -16.362694 -30.893803
+v 73.220398 -15.005694 -33.268604
+v 72.677696 -17.719694 -34.964905
+v 72.594597 -17.719694 -38.357502
+v 72.632202 -17.719694 -37.000404
+v 71.942497 -20.433695 -35.643402
+v 72.029701 -20.433695 -31.572304
+v 71.044998 -23.147795 -32.929405
+v 70.947502 -23.147795 -35.643402
+v 70.779800 -23.789694 -32.929405
+v 69.724503 -25.861794 -32.929405
+v 70.779800 -24.122694 -30.215303
+v 69.997803 -25.861794 -30.215303
+v 69.502296 -25.861794 -35.643402
+v 70.779800 -23.535795 -35.643402
+v 70.778297 -23.108894 -38.256104
+v 71.785599 -20.433695 -38.357502
+v 70.779800 -22.119793 -41.071503
+v 71.448799 -20.433693 -41.071503
+v 70.294601 -23.147793 -41.071503
+v 69.187302 -25.861794 -38.357502
+v 70.418198 -28.575697 -18.680504
+v 70.305000 -28.575697 -20.716105
+v 70.176598 -28.575697 -22.073103
+v 69.749901 -28.575697 -24.787205
+v 69.276299 -31.290796 -22.073105
+v 68.065697 -31.290796 -25.972805
+v 69.126404 -28.575697 -27.501204
+v 68.494698 -31.290796 -24.787207
+v 67.522202 -31.290796 -27.501205
+v 68.065697 -30.489697 -27.501205
+v 68.065697 -29.382793 -30.215305
+v 68.530701 -28.575695 -30.215303
+v 66.884804 -31.290794 -30.215305
+v 67.049698 -34.004795 -24.787207
+v 68.065697 -32.095795 -24.787207
+v 68.065697 -34.004795 -22.338705
+v 66.779099 -36.718796 -22.073105
+v 65.386703 -36.763798 -24.942406
+v 65.351700 -33.758698 -30.215305
+v 65.726501 -31.290794 -35.643402
+v 65.351700 -31.290794 -36.725502
+v 65.351700 -29.740692 -41.071503
+v 68.617699 -25.861792 -41.071503
+v 62.556801 -36.718792 -38.357506
+v 61.946800 -36.718792 -41.071507
+v 65.351700 -31.825695 -35.643402
+v 63.097599 -36.718792 -35.643406
+v 62.637600 -36.718792 -38.002007
+v 71.608803 1.278267 -43.107101
+v 71.289001 -0.078727 -47.178200
+v 70.779800 2.086248 -46.499699
+v 70.613800 1.278268 -48.535198
+v 69.058800 3.992258 -51.249298
+v 69.011902 2.635259 -53.284801
+v 69.926102 1.278268 -51.249298
+v 72.631203 -2.114193 -41.071499
+v 71.896103 -1.435722 -45.821201
+v 71.801598 -0.078728 -44.464100
+v 72.562698 -2.792713 -43.107101
+v 72.826500 -4.828243 -43.785599
+v 71.602402 -2.114192 -47.856701
+v 70.477898 -0.078727 -50.570801
+v 72.271400 -3.471243 -45.821201
+v 71.803497 -4.149712 -48.535198
+v 67.201599 4.670730 -57.355900
+v 67.752502 4.775709 -55.439301
+v 68.305801 2.861639 -55.414398
+v 69.012497 1.278269 -54.641899
+v 68.713699 0.599801 -55.998901
+v 67.607903 1.956739 -58.034500
+v 67.092903 1.706250 -59.391499
+v 65.779701 3.313790 -61.653198
+v 66.335602 0.599802 -61.426998
+v 69.924698 -0.078726 -52.606300
+v 68.387001 -0.757254 -57.515301
+v 70.068100 -1.206471 -52.945599
+v 69.131500 -1.435721 -55.998901
+v 67.964500 -1.435720 -58.713001
+v 66.585899 -2.114190 -61.426998
+v 65.675598 -0.593130 -62.818100
+v 73.247398 -8.220754 -43.785599
+v 72.796097 -6.185233 -45.142700
+v 72.644798 -7.542293 -46.499699
+v 72.287804 -5.484492 -47.189999
+v 73.215897 -9.225092 -44.442299
+v 72.775002 -9.577752 -46.499699
+v 71.632401 -5.506762 -49.892300
+v 71.955498 -6.863762 -49.213699
+v 70.989304 -3.471242 -51.142300
+v 72.057800 -8.899222 -49.213699
+v 73.165901 -12.267592 -44.188805
+v 72.672096 -12.291693 -46.499702
+v 72.925400 -10.934793 -45.821201
+v 72.890800 -13.648692 -44.464104
+v 72.458199 -13.648692 -46.499702
+v 72.556503 -15.138192 -44.672604
+v 72.265900 -10.934793 -48.465401
+v 72.112900 -12.319492 -48.672604
+v 71.704803 -10.326191 -50.466099
+v 71.478798 -12.291692 -50.570805
+v 70.457397 -12.300792 -52.974205
+v 71.020699 -10.353292 -52.302200
+v 71.776703 -15.005692 -47.856705
+v 70.972504 -15.244091 -49.968204
+v 71.905403 -13.625592 -48.636906
+v 70.992798 -13.686091 -51.117905
+v 70.210701 -15.005692 -51.927803
+v 71.614700 -7.542292 -50.570801
+v 70.625504 -6.863761 -53.284801
+v 70.473297 -4.828241 -53.284801
+v 71.184799 -8.220752 -51.927799
+v 69.721603 -5.506761 -55.407001
+v 68.812698 -3.471241 -57.355900
+v 69.667999 -4.160211 -55.320400
+v 69.358803 -9.577750 -55.998901
+v 68.648804 -9.577750 -57.355900
+v 68.809700 -8.064871 -57.451000
+v 68.143898 -5.506761 -58.852699
+v 68.129097 -4.149711 -58.832298
+v 68.919601 -6.185230 -57.355900
+v 67.340897 -6.863760 -60.070000
+v 66.613998 -4.149710 -61.426998
+v 65.500702 -4.329949 -63.040901
+v 66.550499 -5.506760 -61.426998
+v 66.404701 -6.863760 -61.426998
+v 68.071602 -8.281791 -58.719002
+v 67.897202 -9.562370 -58.654301
+v 67.179100 -8.220751 -60.070000
+v 66.927200 -9.577750 -60.070000
+v 65.351700 -9.577749 -61.937801
+v 69.852898 -10.934792 -54.641899
+v 68.065697 -15.005691 -55.705704
+v 68.061501 -12.275990 -57.317104
+v 69.615196 -12.291692 -54.641903
+v 68.730400 -15.005692 -54.641903
+v 66.928398 -15.005691 -57.355904
+v 66.013199 -12.291691 -60.070004
+v 65.351700 -12.291691 -60.760605
+v 61.641800 -15.005690 -62.784103
+v 64.568298 -9.577749 -62.784100
+v 64.152298 5.349250 -64.493301
+v 64.853699 6.027780 -62.784100
+v 64.389801 3.313791 -64.355698
+v 65.140297 3.992260 -62.784100
+v 63.337299 5.349251 -66.176697
+v 62.918301 7.384711 -66.855202
+v 63.601501 7.384710 -65.498100
+v 62.155300 5.349251 -68.212196
+v 62.374199 3.313791 -67.768600
+v 62.960400 3.313791 -66.855202
+v 65.427597 1.278270 -62.919201
+v 64.724403 0.599802 -64.141098
+v 63.728500 0.284313 -65.630798
+v 63.867901 3.313791 -65.306999
+v 62.865898 1.278271 -66.855202
+v 61.177898 4.044022 -69.542000
+v 59.923500 3.992262 -71.106102
+v 59.923500 1.278271 -70.399002
+v 59.923500 3.171272 -70.926300
+v 57.500599 3.992262 -73.640297
+v 59.415699 1.278272 -70.926300
+v 57.209499 1.278272 -73.074501
+v 57.209499 3.052262 -73.640297
+v 56.584400 1.278272 -73.640297
+v 64.806198 -1.419060 -64.132202
+v 63.841999 -1.412279 -65.449898
+v 62.637600 -1.435719 -66.881500
+v 61.885101 1.278271 -68.212196
+v 63.491402 -4.149710 -65.498100
+v 62.637600 -4.149709 -66.389397
+v 60.736198 -4.149709 -68.212196
+v 61.467800 -1.435719 -68.212196
+v 59.923500 -4.149709 -68.916100
+v 54.495399 -4.149708 -73.294701
+v 54.495399 -3.381758 -73.640297
+v 57.209499 3.992262 -73.914902
+v 54.495399 3.992262 -76.217598
+v 54.495399 1.278272 -75.422897
+v 50.012699 1.278273 -79.068497
+v 49.067299 3.992263 -80.499199
+v 47.605000 3.992263 -81.782501
+v 44.945400 3.992264 -84.496597
+v 44.754002 6.706254 -84.496597
+v 47.334801 1.278273 -81.782501
+v 46.353199 1.278273 -83.000702
+v 46.353199 3.992264 -83.099701
+v 45.057201 1.278274 -84.496597
+v 51.032600 -4.149708 -76.354401
+v 49.067299 -4.149707 -78.490799
+v 49.067299 -2.533737 -79.068497
+v 51.781300 -4.149708 -75.646004
+v 52.649799 -6.863758 -73.640297
+v 48.596802 -4.149707 -79.068497
+v 49.067299 -1.435717 -79.396103
+v 49.067299 1.278273 -80.022903
+v 47.049198 -1.435717 -81.782501
+v 46.353199 -1.435717 -82.785004
+v 46.353199 -4.149707 -82.324303
+v 46.677898 -4.149707 -81.782501
+v 65.352898 -6.867420 -62.784000
+v 62.593201 -7.067190 -65.575104
+v 59.923500 -6.863759 -67.941200
+v 59.923500 -6.161729 -68.212196
+v 62.637600 -9.577749 -64.583099
+v 61.523102 -9.577749 -65.498100
+v 59.923500 -9.577749 -66.751404
+v 58.031898 -9.577748 -68.212196
+v 54.495399 -9.577748 -70.885101
+v 59.923500 -15.005690 -64.148201
+v 54.844200 -15.005689 -68.212196
+v 54.495399 -15.005689 -68.497803
+v 50.386902 -12.291688 -73.640297
+v 51.399700 -9.577747 -73.640297
+v 51.773201 -8.644888 -73.667397
+v 49.095699 -9.684258 -76.354401
+v 47.406399 -9.577746 -79.068497
+v 49.067299 -6.863758 -77.450500
+v 47.891998 -6.863757 -79.068497
+v 46.347099 -6.749747 -81.770798
+v 46.353199 -9.577746 -81.267303
+v 46.110401 -9.577746 -81.782501
+v 44.758499 -6.863756 -84.496597
+v 49.067299 -12.291688 -75.384399
+v 45.922798 -12.291687 -81.782501
+v 46.353199 -12.291687 -80.777397
+v 44.548302 -12.291687 -84.496597
+v 44.646198 -9.577746 -84.496597
+v 45.645000 -15.005687 -81.782501
+v 44.354801 -15.005687 -84.496597
+v 71.203003 -17.719692 -46.499702
+v 72.147797 -15.005692 -46.542904
+v 71.934402 -17.722792 -43.784004
+v 72.391899 -17.719692 -41.071503
+v 70.779800 -18.733793 -46.499702
+v 70.779800 -17.719692 -47.768105
+v 68.916801 -17.719692 -51.927803
+v 70.212997 -17.719692 -49.213703
+v 68.770897 -20.433693 -49.213703
+v 69.974998 -20.433693 -46.499702
+v 68.065697 -20.433693 -50.576702
+v 68.065697 -19.210793 -51.927803
+v 69.527199 -23.147793 -43.785603
+v 70.790901 -20.578592 -43.889904
+v 68.254501 -23.523293 -46.499702
+v 68.065697 -25.861792 -42.885204
+v 68.065697 -25.402792 -43.785603
+v 65.351700 -23.175692 -51.927803
+v 65.351700 -25.861792 -48.824406
+v 66.618896 -25.861792 -46.499702
+v 68.065697 -16.390690 -54.641903
+v 67.301102 -17.719690 -54.641903
+v 68.065697 -17.719690 -53.434704
+v 65.351700 -17.719690 -57.131603
+v 65.351700 -17.437691 -57.355904
+v 65.379402 -20.445391 -54.655804
+v 65.351700 -15.005691 -59.153503
+v 67.281799 -20.433693 -51.927803
+v 67.740997 -25.861792 -43.785603
+v 65.351700 -27.449793 -46.499702
+v 59.923500 -20.433691 -60.520805
+v 63.122101 -20.433691 -57.355904
+v 57.613300 -20.433691 -62.784103
+v 59.923500 -17.268690 -62.784103
+v 59.923500 -24.388691 -57.355904
+v 58.719200 -25.861790 -57.355904
+v 54.495399 -25.861790 -62.448303
+v 54.495399 -25.300690 -62.784103
+v 54.214500 -25.861790 -62.784103
+v 54.495399 -36.718792 -55.616108
+v 59.923500 -25.861790 -55.997303
+v 56.773602 -36.718792 -51.927807
+v 63.210300 -25.861792 -51.927803
+v 49.568401 -25.872089 -68.219505
+v 51.880501 -20.433689 -68.212196
+v 49.067299 -22.052689 -70.926300
+v 49.067299 -20.433689 -71.826302
+v 48.663700 -23.147789 -70.926300
+v 47.096699 -23.147789 -73.640297
+v 47.952202 -20.433689 -73.640297
+v 47.752300 -25.861788 -70.926308
+v 49.558201 -15.005688 -73.640297
+v 49.090302 -16.733889 -73.610802
+v 49.067299 -15.005688 -74.365402
+v 47.342400 -17.719687 -76.354401
+v 47.933701 -15.005688 -76.354401
+v 46.334000 -17.503187 -79.015503
+v 46.713402 -15.005687 -79.068497
+v 45.209202 -17.719687 -81.782501
+v 46.353199 -23.147789 -75.429497
+v 46.353199 -21.729687 -76.354401
+v 45.079201 -23.147787 -79.068497
+v 45.702301 -20.433687 -79.068497
+v 46.353199 -20.433687 -77.233704
+v 45.424801 -25.861786 -76.354408
+v 46.020699 -23.147787 -76.354401
+v 45.021900 -26.072786 -77.645409
+v 44.149300 -23.147787 -81.782501
+v 44.652699 -20.433687 -81.782501
+v 44.240101 -25.861786 -80.425507
+v 43.123100 -23.826187 -84.496605
+v 43.513000 -21.790787 -84.170898
+v 51.709599 -31.290791 -62.784103
+v 49.067299 -31.290789 -66.573311
+v 49.067299 -27.399689 -68.212204
+v 48.166000 -31.290789 -68.212204
+v 48.724098 -28.575689 -68.212204
+v 47.089199 -28.575689 -70.926308
+v 46.353199 -28.575689 -72.538910
+v 46.353199 -25.898689 -73.640305
+v 46.758099 -31.290789 -70.926308
+v 46.353199 -31.290789 -71.977806
+v 45.839901 -32.209690 -73.537209
+v 45.834801 -29.933689 -73.640305
+v 46.007500 -27.723989 -73.620705
+v 47.887299 -34.004787 -68.212204
+v 46.715302 -34.004787 -70.926308
+v 46.696301 -32.647789 -70.926308
+v 46.275799 -32.625488 -72.069206
+v 46.146599 -34.175987 -72.908104
+v 46.798901 -35.362888 -70.927406
+v 47.331799 -36.718788 -69.569206
+v 46.362499 -36.040188 -72.961807
+v 45.852600 -25.861788 -74.997406
+v 45.537498 -27.597488 -75.027107
+v 44.982101 -29.254686 -77.032906
+v 44.319401 -28.575687 -79.747009
+v 44.554199 -27.218786 -79.068504
+v 45.424801 -29.933689 -74.997406
+v 45.467999 -31.969288 -74.997406
+v 45.178600 -31.969286 -76.354408
+v 44.452999 -31.290787 -79.747009
+v 44.356899 -29.933687 -79.747009
+v 43.003700 -25.861786 -84.496605
+v 43.717201 -29.254686 -82.187210
+v 43.381802 -27.218786 -83.139610
+v 44.183201 -31.969286 -81.443306
+v 43.312302 -29.933687 -84.496605
+v 45.479900 -34.004787 -75.675911
+v 44.880001 -33.326187 -78.528809
+v 45.663898 -35.361790 -75.675911
+v 46.535801 -37.412590 -73.287109
+v 45.674999 -36.718788 -77.032906
+v 45.279301 -35.361790 -77.711411
+v 45.261600 -36.718788 -79.747009
+v 44.043900 -34.004784 -84.496605
+v 43.649799 -31.969286 -84.496605
+v 44.503101 -34.004787 -81.443306
+v 44.482399 -35.361786 -83.818108
+v 44.730400 -35.361790 -81.782509
+v 45.488300 -38.075687 -81.104004
+v 42.860298 -27.218786 -85.175110
+v 42.991402 -28.575687 -85.175110
+v 69.422798 -38.115200 -0.604657
+v 68.899200 -40.789700 -0.360608
+v 68.546700 -42.146702 0.996492
+v 68.815002 -41.807400 -2.396127
+v 68.973099 -40.111301 -7.824257
+v 69.500702 -36.040199 -9.317276
+v 69.148903 -39.432701 -5.110186
+v 68.797302 -42.146702 -5.110177
+v 68.748596 -42.146702 -7.824257
+v 68.398697 -43.503700 -0.360608
+v 68.044601 -44.833698 0.165470
+v 68.564796 -43.503700 -2.396127
+v 68.322601 -44.860699 -1.717607
+v 67.474098 -46.217800 0.996491
+v 67.789597 -46.217800 -0.360609
+v 66.737396 -47.637402 1.093962
+v 67.218002 -47.574799 -0.360609
+v 68.229103 -46.203499 -2.256248
+v 67.632500 -47.574799 -1.717608
+v 68.056999 -47.569199 -3.076268
+v 68.681900 -43.503700 -5.110177
+v 68.557297 -44.774899 -3.508527
+v 68.712799 -44.860699 -5.788697
+v 68.829002 -46.263100 -7.143528
+v 68.736603 -46.363998 -5.322828
+v 68.786697 -46.217800 -8.502768
+v 68.695702 -43.368198 -8.227007
+v 68.632599 -47.574799 -7.145748
+v 68.581398 -47.618698 -5.389078
+v 68.404900 -47.574799 -8.502768
+v 69.101402 -38.075695 -11.895307
+v 68.835503 -38.754196 -13.252407
+v 68.703102 -40.789700 -10.538306
+v 68.479301 -40.613995 -12.753206
+v 68.060204 -42.741596 -12.680807
+v 68.059502 -41.095295 -13.945706
+v 67.371300 -43.464798 -13.919907
+v 68.655502 -38.075695 -15.287907
+v 68.070702 -36.729298 -18.650206
+v 68.651901 -36.718796 -16.645006
+v 68.065697 -39.432697 -15.794706
+v 67.921600 -39.056698 -16.645006
+v 66.655197 -39.432697 -19.359005
+v 66.624100 -42.146698 -16.645008
+v 65.582001 -42.146698 -19.359007
+v 68.594704 -42.645599 -9.963616
+v 68.598602 -44.807999 -9.988857
+v 68.397499 -42.567001 -11.384007
+v 68.040802 -44.182198 -12.081907
+v 67.639198 -44.860695 -12.573908
+v 66.781403 -44.995094 -13.917007
+v 68.026703 -47.529800 -9.705567
+v 68.537003 -46.217800 -9.859797
+v 68.086899 -46.165401 -11.040208
+v 66.055801 -46.217796 -13.930907
+v 66.626999 -46.330097 -13.007708
+v 66.793297 -47.585701 -11.319207
+v 65.463501 -47.505398 -13.073208
+v 65.616302 -44.860695 -16.645008
+v 65.255501 -43.496696 -19.361107
+v 65.351700 -45.668797 -16.645008
+v 65.351700 -47.574795 -18.545609
+v 66.255402 -47.261196 -19.733608
+v 65.750999 -46.217796 -19.359007
+v 65.492996 -44.860695 -19.359007
+v 65.351700 -48.985699 2.353492
+v 65.351700 -49.584702 -0.360609
+v 65.351700 -50.020802 -3.074638
+v 68.065697 -48.184799 -4.431658
+v 65.351700 -50.047699 -5.788698
+v 68.065697 -48.434799 -5.788698
+v 68.065697 -47.991798 -8.502768
+v 65.351700 -48.561798 -11.216807
+v 65.950104 -48.931797 -19.359007
+v 65.369003 -50.329197 -19.131708
+v 64.655403 -47.574795 -16.645008
+v 65.350403 -47.146496 -13.951907
+v 60.984501 -53.002701 -3.074639
+v 60.070599 -53.002701 -8.502769
+v 65.351700 -49.554699 -8.502768
+v 59.923500 -53.922699 -3.074639
+v 60.032299 -53.002701 -11.216808
+v 60.484001 -53.002697 -13.930908
+v 62.605000 -50.291195 -13.928609
+v 62.637600 -50.288795 -14.280008
+v 63.337200 -50.288795 -16.645008
+v 62.637600 -51.375698 -16.645008
+v 62.637600 -53.002697 -17.876709
+v 64.679398 -53.002697 -19.359009
+v 65.356003 -51.506096 -19.364008
+v 59.923500 -53.159698 -8.502769
+v 59.923500 -53.148701 -11.216808
+v 58.905102 -58.430695 -13.930909
+v 59.923500 -53.848797 -13.930908
+v 56.997898 -58.430698 -8.502769
+v 59.923500 -55.716698 -15.959410
+v 60.360001 -55.716698 -16.645010
+v 61.674500 -53.002697 -16.645010
+v 61.274101 -55.958298 -17.957710
+v 62.637600 -55.716698 -19.106609
+v 60.257401 -57.073696 -16.645010
+v 59.924000 -58.508896 -15.497709
+v 62.637600 -58.430695 -19.086409
+v 62.953999 -58.430695 -19.359009
+v 62.647301 -57.074795 -19.354010
+v 61.233501 -57.193996 -17.981010
+v 65.350197 -39.654396 -22.055906
+v 65.351700 -39.432697 -22.303406
+v 65.431900 -44.527195 -22.067108
+v 65.351700 -44.633698 -20.716108
+v 65.678703 -44.860695 -20.716108
+v 67.242699 -47.582497 -20.723507
+v 66.819298 -46.493996 -21.003908
+v 66.953102 -46.100697 -21.998407
+v 68.065697 -46.768696 -23.430107
+v 69.383598 -47.847298 -23.430008
+v 69.522797 -47.982597 -24.257807
+v 66.673500 -45.766296 -23.413208
+v 65.340401 -44.744595 -24.123608
+v 67.179497 -46.365295 -24.787209
+v 65.403000 -44.978596 -27.604908
+v 66.626602 -45.959198 -29.844608
+v 65.337997 -44.088696 -28.845509
+v 69.535004 -48.932594 -26.637508
+v 67.369102 -47.182297 -27.017008
+v 66.631104 -46.457497 -28.699207
+v 68.333298 -48.027096 -30.331408
+v 67.955101 -47.906197 -28.947708
+v 65.903397 -42.146698 -31.572308
+v 66.208603 -42.236694 -32.955708
+v 65.268898 -41.025097 -32.884407
+v 65.239304 -41.137897 -31.508108
+v 65.883797 -42.091396 -34.307507
+v 65.411598 -42.229195 -30.342508
+v 66.923302 -44.860695 -31.572308
+v 66.502602 -43.291695 -31.888807
+v 67.494499 -44.860695 -32.929409
+v 67.974503 -45.287994 -34.315109
+v 66.816704 -43.399395 -34.292507
+v 67.622597 -45.043194 -35.728306
+v 66.886703 -43.884892 -35.479706
+v 68.295998 -46.405796 -32.912807
+v 69.163597 -47.068691 -35.201206
+v 69.609802 -47.817295 -33.510109
+v 66.700996 -44.765591 -37.096508
+v 65.329903 -43.292591 -37.156208
+v 65.192299 -44.398491 -38.404007
+v 69.301697 -47.688992 -36.974106
+v 68.080299 -46.351292 -36.988708
+v 68.177101 -47.557793 -38.420208
+v 66.730202 -46.095493 -38.428207
+v 65.351700 -46.217793 -39.534908
+v 66.708702 -47.574791 -39.477207
+v 66.209801 -47.587494 -39.747108
+v 65.351700 -46.591694 -39.714508
+v 76.228500 -54.353596 -28.856510
+v 77.707397 -54.198097 -30.107510
+v 76.379799 -53.000996 -30.203510
+v 76.207901 -55.716698 -28.108509
+v 77.508499 -55.714596 -28.935209
+v 78.635101 -55.716698 -30.215309
+v 77.528801 -58.669796 -27.553909
+v 77.278198 -57.271194 -28.115610
+v 76.207901 -58.430695 -27.109409
+v 78.177101 -57.073696 -28.858309
+v 71.390999 -53.002697 -23.430109
+v 71.003403 -50.874496 -23.148808
+v 70.769203 -53.191998 -22.045309
+v 69.422798 -50.288795 -21.552408
+v 70.110199 -50.288795 -22.073107
+v 69.450699 -48.874496 -22.064707
+v 70.260300 -48.882195 -23.430508
+v 70.859200 -50.058098 -23.291409
+v 69.422798 -51.645798 -21.288208
+v 68.065697 -50.767796 -20.716108
+v 67.967300 -48.910194 -20.893608
+v 68.414497 -52.919098 -20.674910
+v 69.422798 -53.002697 -21.038010
+v 66.708702 -51.645798 -20.067608
+v 66.708702 -50.288795 -20.004507
+v 66.708702 -53.002697 -20.106510
+v 72.169899 -51.746895 -27.935308
+v 70.866798 -50.110497 -28.696407
+v 70.600304 -49.996494 -27.476109
+v 72.129204 -50.994797 -29.210207
+v 71.512802 -50.126896 -30.271507
+v 72.921402 -53.002697 -27.501209
+v 74.203102 -52.990395 -28.683210
+v 73.493896 -52.293797 -28.858307
+v 70.908203 -49.858498 -24.252808
+v 70.802002 -50.107395 -25.778008
+v 71.068199 -54.359695 -22.073109
+v 70.779800 -54.359695 -21.644409
+v 71.421997 -55.716698 -22.073109
+v 71.582497 -54.359695 -23.430109
+v 72.081398 -54.698997 -24.996609
+v 71.698799 -53.002697 -24.787210
+v 70.795197 -56.769695 -20.701809
+v 71.776802 -57.073696 -22.073109
+v 72.076202 -58.460396 -20.844110
+v 72.468300 -57.073696 -24.787210
+v 72.087402 -57.250095 -23.604509
+v 71.782600 -55.716698 -23.430109
+v 68.065697 -54.359695 -20.426109
+v 69.423698 -54.510098 -20.723110
+v 68.065697 -55.716698 -20.311609
+v 65.351700 -55.716698 -20.168310
+v 65.351700 -53.002697 -19.634809
+v 69.414597 -57.063995 -20.171009
+v 68.065697 -57.073696 -20.188410
+v 70.779800 -58.430695 -19.845709
+v 69.422798 -58.430695 -19.800209
+v 68.065697 -58.430695 -20.008410
+v 66.708702 -58.430695 -20.232609
+v 65.351700 -57.073696 -20.353809
+v 72.123596 -53.063496 -26.161909
+v 74.850899 -54.359695 -28.043810
+v 73.649902 -53.921196 -27.486010
+v 74.870300 -55.497597 -27.504210
+v 73.493896 -58.430695 -25.336309
+v 74.633499 -58.625698 -26.258310
+v 73.517097 -57.099094 -26.117710
+v 74.850899 -57.073696 -26.993710
+v 73.088203 -55.716698 -26.144209
+v 72.809898 -58.620995 -24.042009
+v 77.571999 -53.027695 -31.641909
+v 76.207901 -51.993797 -31.572308
+v 77.634598 -52.892597 -32.925507
+v 76.149803 -51.450397 -33.028107
+v 76.133698 -51.576496 -32.468807
+v 77.565002 -53.002697 -33.793507
+v 77.469902 -53.076397 -34.253307
+v 76.098602 -51.460094 -34.436008
+v 78.508003 -54.359695 -31.572309
+v 78.485901 -54.359695 -32.929409
+v 78.965897 -55.474895 -31.376310
+v 78.887199 -55.670998 -32.901806
+v 79.290298 -57.073696 -31.572309
+v 78.935799 -56.711597 -30.181210
+v 79.039902 -57.124496 -33.092808
+v 79.470497 -58.430695 -30.215309
+v 79.481796 -58.430695 -31.572309
+v 79.113602 -58.430695 -32.929409
+v 77.516197 -57.110394 -35.576809
+v 77.473503 -55.725693 -35.551609
+v 78.322403 -55.716698 -34.286407
+v 77.470901 -58.421791 -35.513607
+v 78.465202 -57.073696 -34.286407
+v 78.431198 -58.430695 -34.286407
+v 77.252800 -54.342594 -35.475006
+v 76.207901 -54.359692 -36.553707
+v 76.394798 -52.741291 -35.755806
+v 76.207901 -55.716694 -36.738209
+v 76.207901 -58.430691 -36.471809
+v 74.329102 -50.210197 -33.829208
+v 71.519699 -49.364697 -32.643307
+v 72.883400 -50.175697 -31.807907
+v 71.987701 -49.421291 -36.242207
+v 70.359901 -48.233494 -35.290409
+v 71.625999 -49.060196 -34.518909
+v 75.205101 -51.257095 -31.837107
+v 74.850899 -52.093796 -30.215307
+v 73.620201 -51.443596 -30.172407
+v 74.205902 -50.392792 -35.509808
+v 75.423599 -51.475491 -35.719608
+v 73.018097 -50.423893 -37.052006
+v 71.001503 -50.260494 -38.499706
+v 71.161598 -49.183693 -37.007507
+v 74.319801 -51.645794 -37.000408
+v 73.493896 -51.645794 -37.653507
+v 75.123901 -52.978191 -37.096207
+v 73.182198 -52.991192 -38.340206
+v 72.448799 -51.547493 -38.313309
+v 68.065697 -53.002693 -40.101906
+v 68.294403 -49.998993 -39.753109
+v 69.422798 -50.288792 -39.320709
+v 70.779800 -53.002693 -39.323807
+v 65.351700 -53.002693 -40.312607
+v 65.351700 -50.288792 -40.597008
+v 66.708702 -50.288792 -40.279408
+v 73.440399 -55.709694 -38.314407
+v 70.779800 -55.716694 -39.055008
+v 73.493896 -58.430691 -37.869308
+v 71.974197 -58.430691 -38.357506
+v 70.779800 -58.430691 -38.505409
+v 65.351700 -58.430691 -38.229706
+v 64.410500 -39.432697 -24.787207
+v 65.158096 -42.146698 -20.716108
+v 64.714699 -42.146698 -22.073107
+v 65.351700 -42.146698 -20.126808
+v 64.316597 -42.146698 -23.430107
+v 64.585197 -36.718796 -27.501205
+v 63.942402 -42.223995 -26.205807
+v 64.134499 -42.146698 -27.501207
+v 63.897202 -40.916397 -27.553106
+v 64.001297 -42.147594 -24.986908
+v 63.927700 -39.432697 -28.858305
+v 64.013496 -40.150394 -28.961605
+v 64.003700 -39.424995 -29.932806
+v 65.032303 -43.503696 -20.716108
+v 64.914803 -43.503696 -22.073107
+v 64.610497 -43.503696 -23.430107
+v 64.378700 -43.503696 -24.787209
+v 64.344002 -43.503696 -26.144207
+v 64.590302 -43.503696 -27.501207
+v 65.384804 -45.158398 -26.179207
+v 64.625603 -42.146698 -28.858307
+v 63.817600 -39.514698 -34.224709
+v 63.432201 -39.432693 -35.643406
+v 64.035103 -39.417995 -33.055309
+v 64.113998 -39.432697 -31.572306
+v 64.770798 -40.789696 -34.286407
+v 64.775101 -41.468193 -35.629406
+v 63.994598 -40.505692 -35.643406
+v 62.637600 -39.432693 -38.051109
+v 62.532700 -39.432693 -38.357506
+v 63.626801 -42.146694 -38.357506
+v 62.637600 -40.011692 -38.357506
+v 62.637600 -42.146694 -39.692909
+v 61.647202 -39.432693 -41.071507
+v 62.637600 -44.860691 -40.806908
+v 63.994598 -57.073696 -20.047310
+v 63.994598 -55.716698 -19.802710
+v 63.994598 -58.430695 -19.965509
+v 63.109402 -47.574791 -41.071507
+v 65.351700 -48.931793 -40.482109
+v 62.637600 -53.002693 -40.424809
+v 62.637600 -50.683693 -41.071507
+v 62.930599 -50.288792 -41.071507
+v 59.923500 -55.716694 -40.040508
+v 59.923401 -53.450794 -41.067608
+v 59.923500 -58.430691 -39.124107
+v 57.565498 -58.642792 -41.113213
+v 57.783401 -57.073692 -41.071507
+v 58.261200 -55.716694 -41.071507
+v 77.565002 -66.683701 0.996488
+v 76.862503 -66.547096 1.190019
+v 78.921997 -67.197800 -0.360612
+v 77.565002 -66.737701 -0.360612
+v 80.057503 -67.929703 -3.074641
+v 78.920799 -66.629700 -3.363931
+v 78.921997 -67.008698 -1.717611
+v 79.477203 -67.928802 -0.391552
+v 79.903702 -69.300797 -1.899731
+v 77.565002 -66.783798 -1.717611
+v 76.207901 -66.839699 -1.717611
+v 77.554901 -66.581398 -3.622061
+v 76.207901 -66.823700 -3.074641
+v 76.094002 -66.569000 -4.458241
+v 78.012398 -65.704201 -5.875200
+v 79.036400 -65.660301 -6.289761
+v 79.697098 -65.780701 -8.227461
+v 78.930603 -64.763603 -11.123310
+v 75.684502 -65.276100 -8.120200
+v 80.306503 -68.926201 -4.699681
+v 80.370697 -67.904198 -4.819121
+v 80.488503 -67.933197 -7.314581
+v 80.230301 -66.688698 -6.174691
+v 74.850899 -66.049698 0.996488
+v 73.493896 -65.780800 0.996488
+v 72.136803 -65.915802 0.996488
+v 73.495697 -66.190201 -0.362816
+v 74.633698 -66.654701 -1.659241
+v 76.275597 -66.591202 0.044681
+v 72.136803 -66.257797 -3.074641
+v 72.136803 -66.263702 -1.717611
+v 74.862801 -66.739304 -3.060771
+v 70.779800 -66.175697 0.996488
+v 71.994301 -66.141998 -0.236895
+v 69.422798 -66.319801 -0.360612
+v 67.988403 -66.586998 0.111380
+v 69.375900 -66.117897 -2.503511
+v 70.779800 -66.159698 -1.717611
+v 70.779800 -66.041702 -3.074641
+v 66.802498 -66.822098 0.540174
+v 65.376900 -67.153900 -1.055341
+v 68.069199 -66.421600 -2.220811
+v 66.814796 -66.805099 -2.520531
+v 65.408096 -67.261398 -3.769931
+v 73.882202 -66.425797 -4.746101
+v 72.696800 -66.123497 -5.102421
+v 70.779800 -65.723801 -4.431661
+v 70.802002 -65.213402 -5.975340
+v 72.496597 -65.334999 -7.926560
+v 74.992699 -66.535599 -4.775311
+v 73.567703 -65.173500 -8.765401
+v 68.065697 -66.172699 -4.431661
+v 69.422798 -65.674698 -4.431661
+v 69.422798 -65.359703 -5.788701
+v 68.065697 -66.035797 -5.788701
+v 66.814598 -66.734703 -5.028761
+v 71.068901 -64.942497 -9.203711
+v 69.598000 -65.177696 -7.259070
+v 66.768600 -66.681396 -7.111641
+v 68.065697 -65.992699 -8.502770
+v 78.269600 -64.162003 -13.060410
+v 78.398499 -63.702698 -16.036610
+v 77.569000 -63.241795 -16.007410
+v 77.356102 -64.138199 -11.998711
+v 76.798897 -62.947197 -16.319609
+v 76.947998 -62.435196 -18.487810
+v 75.939697 -61.619297 -18.997410
+v 76.368401 -62.303596 -17.614910
+v 76.570702 -62.116695 -19.959410
+v 77.640503 -63.100597 -17.339809
+v 77.705002 -63.190395 -18.107109
+v 78.267700 -65.052399 -8.209921
+v 79.618599 -65.355202 -12.957511
+v 79.682899 -65.603897 -10.144811
+v 78.991898 -64.436203 -14.565611
+v 79.851799 -66.929703 -14.221910
+v 80.155998 -66.696701 -10.374110
+v 79.494003 -65.342201 -14.311810
+v 80.196701 -68.119102 -11.839911
+v 79.995903 -67.929703 -13.930911
+v 80.281998 -69.313499 -12.331411
+v 80.242104 -69.698196 -11.157011
+v 80.464996 -69.286697 -13.930911
+v 80.278999 -68.914703 -13.930911
+v 81.069199 -67.813202 -18.093111
+v 81.738297 -69.152496 -16.480612
+v 83.017197 -69.304604 -17.177311
+v 83.992401 -69.286697 -19.359011
+v 82.924599 -67.848900 -19.761711
+v 82.993103 -68.812698 -18.002012
+v 83.671501 -69.286697 -18.002012
+v 79.411697 -66.572800 -16.645012
+v 79.506500 -66.572800 -18.002012
+v 78.664398 -65.032700 -18.469112
+v 79.084000 -64.777496 -15.854111
+v 80.230301 -66.669296 -19.300312
+v 78.885498 -65.477402 -19.316912
+v 79.966904 -67.929703 -15.287911
+v 80.278999 -68.533798 -15.287911
+v 80.264999 -67.981499 -16.670012
+v 80.278999 -67.362701 -18.002012
+v 81.823303 -67.055702 -20.012211
+v 73.537498 -61.146996 -18.318810
+v 74.463600 -61.599895 -17.959410
+v 73.590897 -60.313595 -19.681509
+v 72.129799 -59.789196 -19.359310
+v 70.779800 -59.353798 -19.359009
+v 70.779800 -59.787697 -19.127110
+v 72.136803 -61.144794 -18.165810
+v 70.751099 -61.498997 -18.099409
+v 72.576599 -63.414696 -15.112910
+v 70.327698 -63.717094 -15.398810
+v 70.259201 -64.335098 -13.801411
+v 70.694298 -62.771496 -16.865009
+v 74.980499 -63.072796 -15.499411
+v 73.702499 -62.394096 -16.748310
+v 72.136803 -61.336697 -18.002010
+v 72.131401 -62.565598 -16.734409
+v 69.422798 -61.144794 -18.692810
+v 69.320198 -59.474995 -19.500010
+v 68.010803 -61.061295 -19.184210
+v 66.491096 -61.233395 -19.344610
+v 65.351700 -60.835796 -19.359009
+v 65.498703 -62.401398 -18.039310
+v 68.068100 -63.809395 -16.623909
+v 68.049004 -62.587296 -18.096310
+v 66.702301 -62.628998 -18.211809
+v 66.709198 -63.849297 -16.643009
+v 65.390701 -63.526794 -16.375610
+v 77.279503 -64.814903 -8.917001
+v 73.383598 -64.479698 -11.301910
+v 74.926102 -63.889397 -12.907710
+v 72.074203 -64.895798 -9.673930
+v 71.760201 -64.260300 -12.925611
+v 69.945297 -65.012100 -10.667710
+v 68.123199 -65.921303 -10.381411
+v 66.761703 -66.536102 -9.241711
+v 66.708702 -66.203697 -11.216810
+v 65.717400 -66.579300 -9.891320
+v 68.062798 -65.722298 -11.886910
+v 66.708702 -65.766701 -12.573911
+v 68.065697 -64.532799 -15.287910
+v 79.565598 -69.286697 -0.360612
+v 79.009903 -69.353500 1.069929
+v 78.966103 -70.676003 -0.222291
+v 78.171799 -69.286697 2.353489
+v 78.470398 -70.643700 0.996487
+v 78.296303 -72.001801 -0.360613
+v 79.378197 -70.643700 -1.717612
+v 79.620399 -70.643700 -3.074641
+v 76.652603 -74.718300 1.006848
+v 77.751198 -74.683899 -0.982198
+v 77.246902 -73.590897 0.324709
+v 78.243797 -73.358803 -1.717612
+v 78.918602 -73.358597 -3.447162
+v 78.774101 -72.373398 -2.472662
+v 78.863998 -74.996300 -3.150472
+v 85.705101 -75.190399 -7.160412
+v 85.685303 -74.904099 -8.484073
+v 84.234299 -73.432701 -9.960423
+v 84.136803 -74.083298 -8.192112
+v 79.405701 -72.001801 -4.431662
+v 79.823402 -70.643700 -4.431662
+v 80.012199 -70.643700 -5.788702
+v 80.169998 -70.676804 -7.519142
+v 80.296303 -69.836098 -7.775251
+v 79.354599 -73.358803 -4.431662
+v 79.702202 -74.715797 -4.431663
+v 81.483101 -74.762802 -5.889062
+v 80.278999 -73.781700 -5.788702
+v 80.278999 -74.715797 -5.071423
+v 80.355400 -73.490898 -6.292242
+v 80.244202 -72.016098 -7.654952
+v 79.796997 -72.001801 -5.788702
+v 81.653999 -73.387901 -8.223852
+v 81.636002 -73.893700 -7.145752
+v 85.707100 -76.567703 -0.360613
+v 83.066101 -77.022499 0.953192
+v 83.052803 -77.002800 -0.504972
+v 84.351700 -76.421204 -0.710641
+v 85.707100 -76.300697 -1.717612
+v 86.136703 -76.085098 -2.906272
+v 84.319099 -76.018898 -2.780463
+v 76.207901 -76.072800 1.986688
+v 76.591904 -76.072800 0.996487
+v 77.578003 -76.215500 -0.507242
+v 76.960197 -77.429703 0.996486
+v 77.682404 -77.369904 -0.002481
+v 81.636002 -76.966698 -3.074643
+v 80.278999 -76.996803 -3.074643
+v 80.258698 -77.455299 -2.454103
+v 78.932899 -76.055298 -2.655332
+v 78.389297 -76.072800 -1.717612
+v 80.492104 -78.939598 0.993402
+v 81.636002 -78.131798 -0.360614
+v 80.297699 -78.704697 -0.127296
+v 78.921997 -78.336700 -0.360614
+v 78.839798 -78.953697 0.764801
+v 78.316101 -78.786697 0.996486
+v 80.278999 -77.917702 -1.717613
+v 81.704399 -77.590897 -1.847783
+v 78.921997 -77.429703 -1.439413
+v 85.707100 -75.738800 -4.431663
+v 86.477798 -76.072800 -5.788702
+v 85.707100 -75.470802 -5.788702
+v 84.361702 -74.988800 -5.814692
+v 84.350098 -75.470802 -4.431663
+v 83.244499 -75.978897 -3.565942
+v 82.993103 -75.669701 -4.431663
+v 82.978600 -74.759003 -6.133092
+v 81.635803 -76.063904 -4.411372
+v 86.486603 -76.072800 -7.145752
+v 86.401604 -76.072800 -8.502772
+v 87.064201 -76.873703 -5.788702
+v 87.101402 -77.501900 -7.111012
+v 86.812302 -77.429703 -8.502772
+v 87.057800 -79.750702 -8.550003
+v 80.278999 -76.072800 -4.037043
+v 80.278999 -75.602699 -4.431663
+v 81.636002 -72.579803 -9.859801
+v 83.080498 -73.232697 -9.701252
+v 82.795502 -72.294601 -11.333611
+v 85.499603 -73.358803 -12.573913
+v 84.309998 -72.760597 -11.331612
+v 85.088600 -73.358803 -11.216812
+v 85.502098 -73.358803 -13.930912
+v 84.949203 -72.001801 -13.930911
+v 85.732201 -74.540199 -11.207812
+v 85.703499 -74.710297 -12.570413
+v 85.561996 -74.715797 -13.930912
+v 80.282997 -70.680496 -9.541231
+v 80.534698 -70.643700 -11.216811
+v 80.942398 -72.001801 -9.859801
+v 80.278999 -71.415802 -8.502771
+v 80.460297 -72.001801 -8.502771
+v 81.731903 -71.790604 -11.543012
+v 81.007004 -70.643700 -12.573912
+v 81.743698 -70.524002 -13.904712
+v 85.065102 -72.001801 -15.287911
+v 84.263702 -70.901604 -15.243112
+v 84.276703 -71.465302 -13.791411
+v 84.952202 -72.001801 -16.645012
+v 84.417603 -70.565201 -16.561512
+v 82.993103 -70.295700 -15.287911
+v 81.636002 -69.720802 -15.287911
+v 84.390999 -72.308502 -19.651112
+v 84.414703 -70.498802 -19.243011
+v 84.578102 -70.643700 -18.002012
+v 84.350098 -70.092796 -18.002012
+v 85.297997 -73.358803 -15.287912
+v 84.744003 -72.001801 -18.002012
+v 84.981796 -73.358803 -16.645012
+v 84.350098 -74.715797 -17.766611
+v 84.865997 -74.715797 -16.645012
+v 80.942902 -69.286697 -15.287911
+v 86.230499 -76.072800 -9.859802
+v 85.718903 -74.689598 -9.853252
+v 86.007202 -76.072800 -11.216812
+v 86.511597 -77.429703 -9.859802
+v 86.126503 -77.429703 -11.216812
+v 86.087402 -80.143700 -11.216813
+v 84.476997 -80.550797 -13.928714
+v 84.974503 -77.429703 -13.930912
+v 81.636002 -80.143700 -16.763313
+v 85.326897 -74.715797 -15.287912
+v 56.829601 -58.430698 -3.074640
+v 57.065800 -63.858799 -3.074641
+v 57.815498 -63.858799 -8.502770
+v 62.637600 -67.250702 0.996488
+v 61.280602 -67.439796 -0.360612
+v 59.923500 -67.250702 -0.360612
+v 62.699799 -67.510300 -0.949857
+v 63.994598 -67.328697 -0.360612
+v 64.008400 -67.471603 -2.307031
+v 61.208500 -67.741898 -2.447391
+v 59.921700 -67.642601 -2.689751
+v 63.880299 -67.769798 -5.590591
+v 62.637600 -67.884804 -4.431661
+v 62.637600 -67.909698 -5.788701
+v 61.280602 -67.912697 -4.431661
+v 59.923500 -67.758698 -4.431661
+v 61.280602 -67.850800 -5.788701
+v 59.923500 -67.617699 -5.788701
+v 63.994598 -67.566803 -7.145751
+v 65.351700 -67.347702 -5.788701
+v 65.351700 -67.234703 -7.145751
+v 62.637600 -67.669701 -7.145751
+v 62.637600 -67.087799 -8.502770
+v 63.994598 -67.078697 -8.502770
+v 59.956402 -66.545197 -8.427661
+v 63.901798 -63.924698 -14.020810
+v 62.706001 -62.990498 -14.145110
+v 62.870899 -64.131699 -13.033510
+v 61.372601 -62.453495 -13.886710
+v 59.923500 -63.858799 -11.595410
+v 61.304401 -61.012596 -15.072309
+v 59.923500 -61.144794 -13.683709
+v 59.947800 -59.914497 -14.633309
+v 61.509899 -59.685696 -16.523010
+v 61.428001 -58.402496 -17.718710
+v 60.660400 -58.430695 -16.645010
+v 62.897598 -61.200996 -16.230810
+v 62.728001 -59.796097 -17.971409
+v 64.000504 -59.784996 -19.356909
+v 63.994801 -61.113396 -18.003109
+v 63.951000 -62.810394 -15.609111
+v 62.716599 -61.885696 -15.262911
+v 63.994598 -65.753700 -11.216810
+v 62.626202 -65.242302 -11.494411
+v 62.676498 -66.364899 -9.827681
+v 59.923500 -64.251801 -11.216810
+v 65.351700 -66.125702 -11.216810
+v 64.203201 -65.178200 -12.418711
+v 63.976601 -66.532204 -9.723730
+v 65.351700 -66.940697 -8.502770
+v 65.337303 -65.149696 -13.445311
+v 76.739601 -62.857197 -22.021910
+v 77.699799 -63.850494 -20.039209
+v 77.657402 -63.854397 -21.315210
+v 81.652603 -63.810394 -24.718710
+v 80.255203 -62.837498 -24.809410
+v 80.266403 -63.855995 -23.459509
+v 79.377701 -62.501797 -24.787210
+v 78.832802 -63.646095 -23.163910
+v 77.785500 -61.004498 -25.890009
+v 77.565002 -62.003696 -24.787210
+v 75.822197 -61.352997 -24.545509
+v 77.565002 -62.501797 -24.170710
+v 77.831497 -63.784996 -22.074209
+v 77.565002 -62.968796 -23.430109
+v 76.316704 -62.237495 -23.441809
+v 82.130898 -63.858795 -26.144209
+v 81.613098 -63.156895 -26.172110
+v 82.065498 -63.830395 -27.499809
+v 80.267899 -61.144295 -27.516010
+v 78.918198 -59.839397 -27.502609
+v 78.921402 -61.144997 -26.145510
+v 77.565002 -59.787697 -26.798910
+v 78.922203 -58.412098 -28.856409
+v 79.806297 -59.787697 -28.858309
+v 79.964302 -59.787697 -30.215309
+v 80.522003 -61.064896 -28.877209
+v 80.270302 -60.806396 -30.538610
+v 80.278999 -61.950695 -26.144209
+v 81.343697 -62.501797 -27.501209
+v 80.793900 -62.501797 -30.215309
+v 81.267097 -62.501797 -28.858309
+v 81.715202 -63.705597 -28.827009
+v 83.442101 -66.572792 -24.787212
+v 82.993103 -65.669693 -23.430111
+v 83.627296 -66.572792 -23.430111
+v 82.501801 -65.215790 -23.430111
+v 82.977097 -65.252190 -24.773811
+v 82.993103 -67.374802 -20.716112
+v 83.826500 -67.929703 -22.073111
+v 83.036400 -66.554901 -21.973911
+v 83.951302 -69.286697 -20.716112
+v 83.693604 -69.286690 -23.430111
+v 83.213501 -69.286690 -24.787212
+v 83.441902 -67.929695 -24.787212
+v 78.948402 -65.131203 -20.710312
+v 78.921997 -64.357697 -22.073109
+v 81.636002 -64.577789 -23.430111
+v 80.241302 -65.118500 -21.783712
+v 82.452599 -65.215790 -27.501211
+v 82.799202 -65.215790 -26.144211
+v 81.811996 -65.241890 -28.974911
+v 82.443802 -66.572792 -27.501211
+v 81.656601 -66.562592 -28.949911
+v 81.774101 -69.286690 -27.501211
+v 83.003601 -66.511391 -26.170111
+v 81.636002 -69.286690 -27.731012
+v 81.026001 -63.858795 -30.215309
+v 75.559097 -61.191498 -20.457310
+v 74.560501 -60.539597 -20.572309
+v 74.688202 -60.648296 -23.640810
+v 73.001999 -59.503998 -20.877110
+v 72.176300 -59.179897 -20.027809
+v 72.815300 -60.113697 -19.359110
+v 73.618896 -59.716595 -23.206709
+v 66.708702 -59.787697 -19.958710
+v 65.351700 -59.787697 -19.926210
+v 65.351700 -58.430695 -20.297710
+v 76.051804 -59.887398 -26.220709
+v 74.850899 -59.787697 -25.519810
+v 74.016403 -59.627598 -24.703009
+v 76.192001 -61.262596 -24.976309
+v 79.722000 -59.787697 -31.572309
+v 76.362602 -61.144791 -35.643410
+v 78.921997 -61.144794 -33.341713
+v 80.194603 -62.496895 -31.453209
+v 79.968697 -61.144794 -31.572309
+v 79.136398 -62.501797 -32.929413
+v 79.196602 -61.144794 -32.929413
+v 80.204002 -63.900497 -31.433310
+v 78.899498 -63.825397 -32.927612
+v 76.207901 -63.858795 -34.911911
+v 77.763702 -66.572792 -32.929413
+v 76.204201 -69.190895 -32.894913
+v 76.207901 -66.572792 -34.063313
+v 76.207901 -61.406693 -35.643410
+v 70.779800 -63.858791 -36.918011
+v 65.351700 -63.858791 -37.134010
+v 70.779800 -67.163795 -35.643410
+v 74.657402 -63.858791 -35.643410
+v 70.779800 -69.286690 -34.782810
+v 65.540497 -69.286690 -35.643410
+v 65.351700 -69.286690 -35.705410
+v 82.924400 -74.715797 -22.073111
+v 83.583199 -72.001801 -22.073111
+v 84.065399 -72.001801 -20.716112
+v 81.636002 -74.715790 -23.622011
+v 81.636002 -72.874794 -24.787212
+v 82.246803 -72.001793 -24.787212
+v 76.207901 -74.715790 -27.785311
+v 76.207901 -72.513695 -30.215311
+v 79.406197 -69.286690 -30.215311
+v 80.437401 -74.715790 -24.787212
+v 81.636002 -77.646698 -19.359013
+v 76.207901 -80.143692 -23.968513
+v 76.207901 -78.799690 -24.787214
+v 65.351700 -80.143692 -26.951113
+v 65.351700 -78.012794 -30.215313
+v 78.921997 -69.286690 -30.635111
+v 65.351700 -74.715790 -34.193710
+v 65.351700 -69.594696 -35.643410
+v 59.923500 -61.144791 -38.624611
+v 57.636002 -59.786991 -41.078510
+v 57.793800 -62.364094 -41.067810
+v 59.923500 -63.858791 -38.439812
+v 59.923500 -69.286690 -38.402412
+v 59.923500 -66.572792 -38.375210
+v 57.737801 -66.572792 -41.071510
+v 57.783600 -63.858791 -41.071510
+v 61.991600 -74.715790 -35.643410
+v 59.923500 -74.715790 -37.641712
+v 57.933102 -74.715790 -41.071510
+v 57.959000 -72.001793 -41.071510
+v 57.799900 -69.286690 -41.071510
+v 59.923500 -78.176796 -35.643410
+v 58.600601 -80.143692 -35.643410
+v 59.923500 -80.143692 -33.831413
+v 56.511299 -80.143692 -41.071510
+v 55.433300 -47.574791 -49.213707
+v 54.495399 -47.574791 -51.721508
+v 54.495399 -46.505692 -51.927807
+v 55.050301 -42.146694 -51.927807
+v 57.055199 -47.574791 -46.499706
+v 61.785099 -42.146694 -41.071507
+v 59.923500 -47.574791 -43.217808
+v 50.033901 -39.432690 -62.784107
+v 50.389599 -36.718788 -62.784107
+v 53.327599 -36.718792 -57.355907
+v 51.297600 -42.146690 -60.070007
+v 54.495399 -42.146694 -53.504910
+v 53.667198 -47.574791 -54.641907
+v 51.781300 -42.146690 -59.033707
+v 52.656799 -42.146694 -57.355907
+v 52.634800 -44.860691 -57.355907
+v 52.416302 -47.588188 -58.719608
+v 51.781300 -46.164688 -60.070007
+v 51.766499 -44.864388 -59.506107
+v 52.818901 -47.574791 -57.355907
+v 51.742199 -47.671890 -61.393406
+v 57.219101 -53.019192 -43.787308
+v 55.842201 -53.002693 -46.499706
+v 56.432598 -50.288792 -46.499706
+v 59.923500 -53.002693 -41.278408
+v 55.253101 -50.288792 -49.213707
+v 57.209499 -53.062691 -43.785606
+v 57.206200 -55.718891 -42.410709
+v 56.547600 -55.716694 -43.785606
+v 55.712299 -54.359692 -46.499706
+v 57.209499 -57.073692 -41.933506
+v 56.962700 -57.073692 -42.428608
+v 56.966202 -58.437393 -42.443306
+v 56.580399 -58.430691 -43.785606
+v 55.961899 -57.411194 -46.372707
+v 56.105598 -57.074993 -45.144306
+v 56.326801 -58.430691 -45.142708
+v 55.344501 -54.359692 -47.856709
+v 55.390800 -53.002693 -47.856709
+v 54.843800 -54.359692 -50.570808
+v 54.720299 -53.002693 -50.570808
+v 55.019699 -53.002693 -49.213707
+v 55.049999 -54.359692 -49.213707
+v 54.702801 -54.334892 -52.003609
+v 54.494801 -53.012093 -51.919807
+v 55.160702 -55.716694 -50.570808
+v 55.243000 -55.716694 -49.213707
+v 55.943298 -57.869991 -47.856709
+v 55.417599 -55.716694 -47.856709
+v 55.724701 -57.438992 -51.927807
+v 55.658298 -57.073692 -49.213707
+v 54.329300 -53.002693 -53.284809
+v 54.415001 -51.645794 -51.927807
+v 54.495399 -50.288792 -51.602806
+v 55.115799 -55.716694 -51.927807
+v 54.616699 -54.359692 -53.963409
+v 55.522999 -57.073692 -55.320408
+v 55.994801 -58.430691 -51.927807
+v 54.728600 -55.038292 -57.037609
+v 55.368599 -57.073692 -58.373707
+v 54.238400 -54.359688 -60.748508
+v 55.453300 -58.430687 -62.105606
+v 55.122601 -57.073689 -62.105606
+v 53.518101 -50.266491 -55.926407
+v 52.691601 -48.989090 -58.740108
+v 52.994202 -48.931793 -57.355907
+v 54.161098 -51.645794 -53.284809
+v 54.072601 -50.288792 -53.284809
+v 53.866199 -51.683693 -55.186607
+v 54.122700 -52.941494 -55.420509
+v 53.882599 -53.002693 -58.034508
+v 53.405701 -51.594093 -57.925507
+v 52.397900 -48.931789 -60.070007
+v 52.894402 -50.715389 -60.243309
+v 51.440899 -48.031387 -63.261108
+v 52.129902 -48.931789 -61.427006
+v 52.605598 -50.323288 -61.985306
+v 54.581699 -55.626389 -63.801807
+v 53.896599 -53.681187 -62.784107
+v 48.855598 -39.432690 -65.498108
+v 49.058300 -36.746689 -65.290909
+v 49.067299 -39.432690 -64.926208
+v 47.799000 -38.183987 -68.205109
+v 49.067299 -42.146690 -65.275009
+v 48.516701 -42.146690 -66.855209
+v 48.109600 -42.146690 -68.212204
+v 47.973900 -40.789688 -68.212204
+v 47.048599 -37.397289 -70.926308
+v 47.029598 -39.432690 -72.961807
+v 47.339401 -39.432690 -70.926308
+v 47.351898 -40.789688 -72.961807
+v 47.704899 -41.807690 -70.916611
+v 50.558102 -44.859589 -62.780807
+v 50.345100 -46.060188 -64.503006
+v 50.080898 -44.860687 -64.141106
+v 50.120602 -46.447388 -66.642105
+v 49.585499 -44.860687 -65.498108
+v 51.066502 -47.574787 -64.141106
+v 50.898102 -46.217789 -62.784107
+v 49.042000 -44.806187 -67.304810
+v 50.091099 -46.748688 -68.212204
+v 49.106201 -43.426289 -65.623207
+v 48.715698 -43.503689 -66.855209
+v 48.401501 -43.503689 -68.212204
+v 49.023998 -45.184689 -69.385704
+v 49.549099 -46.217789 -71.604805
+v 48.951900 -45.090290 -70.926308
+v 51.537998 -49.459190 -70.247711
+v 48.230598 -43.509190 -69.804405
+v 47.890400 -42.102089 -69.424110
+v 48.218102 -43.503689 -72.283310
+v 47.710201 -42.146690 -73.275108
+v 48.179600 -43.503689 -74.318810
+v 47.558498 -42.231789 -75.675911
+v 45.808201 -38.075687 -78.390007
+v 47.371300 -42.146690 -77.711411
+v 46.576500 -40.580887 -78.526611
+v 47.009800 -40.789688 -75.675911
+v 46.540401 -39.316689 -75.789207
+v 46.004700 -39.432690 -80.425507
+v 45.779800 -39.432686 -84.157310
+v 47.256302 -42.146690 -79.747009
+v 46.525902 -40.789688 -80.425507
+v 47.098900 -42.146687 -83.818108
+v 46.407398 -40.789684 -82.907806
+v 46.353199 -40.995686 -85.853607
+v 48.091599 -43.503689 -76.354408
+v 49.540501 -46.217789 -74.318810
+v 49.285301 -45.640690 -76.693611
+v 50.216202 -47.253887 -80.722404
+v 48.646900 -44.656086 -83.563606
+v 49.080700 -45.199787 -78.729210
+v 50.421101 -48.259186 -85.853607
+v 48.860298 -45.137184 -86.238708
+v 47.882000 -43.315388 -80.976807
+v 54.916698 -57.073689 -66.176704
+v 55.001598 -58.430687 -70.926308
+v 54.345001 -55.716690 -72.283310
+v 54.637199 -57.073689 -74.997406
+v 54.929100 -58.430687 -74.318810
+v 52.989899 -51.645790 -64.819611
+v 51.606201 -48.931789 -65.498108
+v 52.465000 -50.892189 -67.364105
+v 53.344002 -52.572788 -65.498108
+v 52.778801 -51.645790 -69.569206
+v 53.138401 -52.567287 -72.961807
+v 54.403500 -57.073689 -81.782509
+v 54.162601 -55.716690 -79.068504
+v 54.276299 -55.716690 -76.354408
+v 54.786301 -58.430687 -78.390007
+v 54.712799 -58.430687 -81.104004
+v 52.853500 -52.225487 -77.032906
+v 51.823002 -50.122688 -74.827705
+v 52.125500 -50.967785 -82.461006
+v 53.055801 -53.002686 -82.461105
+v 52.034302 -50.798790 -80.086311
+v 53.108200 -53.002689 -79.747009
+v 52.340302 -51.646084 -84.327011
+v 53.833302 -54.359688 -76.354408
+v 53.913601 -54.359688 -71.944008
+v 54.023899 -55.716686 -82.461105
+v 53.625301 -54.359688 -80.425507
+v 53.138401 -53.581184 -85.295204
+v 54.018600 -55.716686 -85.175110
+v 54.441002 -57.073685 -85.853607
+v 57.241001 -60.768593 -42.418610
+v 56.951099 -60.957592 -43.915211
+v 56.548698 -59.797894 -45.663910
+v 56.860901 -62.501793 -45.142712
+v 57.255600 -62.875191 -42.776211
+v 56.271999 -59.787693 -50.910011
+v 56.047401 -58.430691 -49.892307
+v 56.582699 -61.144791 -47.517513
+v 56.364101 -61.144791 -50.570812
+v 56.503300 -62.501793 -48.535210
+v 56.768200 -64.537292 -45.481911
+v 56.367298 -64.537292 -48.874512
+v 56.782001 -66.572792 -45.142712
+v 56.392502 -66.572792 -47.856712
+v 56.515301 -65.215790 -47.178211
+v 57.209499 -69.286690 -42.845913
+v 57.291801 -66.572792 -42.428612
+v 57.005501 -65.215790 -43.785610
+v 57.002701 -69.286690 -43.785610
+v 56.203999 -66.572792 -49.213711
+v 56.111500 -65.215790 -51.249310
+v 56.268299 -63.180191 -51.249310
+v 55.874001 -69.286690 -49.324413
+v 56.040600 -66.572792 -50.570812
+v 55.659698 -69.286690 -50.570812
+v 56.066601 -61.144791 -56.677410
+v 55.899601 -59.719193 -58.034512
+v 56.136002 -62.501793 -54.981110
+v 56.053600 -63.858791 -54.981110
+v 55.981499 -62.501793 -58.034512
+v 55.637299 -59.787689 -62.105610
+v 55.768398 -61.823288 -61.766312
+v 55.772999 -63.858788 -61.427010
+v 55.921299 -65.464195 -54.302612
+v 55.883202 -66.572792 -52.342010
+v 55.747200 -66.572792 -54.641911
+v 55.659801 -66.572792 -56.677410
+v 55.147400 -69.286690 -55.320412
+v 54.861599 -69.965294 -57.355911
+v 55.706699 -65.215790 -60.748512
+v 55.532200 -65.215790 -65.837410
+v 54.707600 -70.225792 -60.070011
+v 55.490700 -66.572792 -61.427010
+v 54.899200 -69.286690 -62.784111
+v 57.209499 -72.001793 -43.108513
+v 57.209499 -74.715790 -43.121811
+v 57.036201 -74.715790 -43.785610
+v 57.030800 -72.001793 -43.785610
+v 56.358898 -72.001793 -46.499710
+v 55.721100 -72.001190 -49.237511
+v 55.756401 -70.643692 -49.213711
+v 56.484699 -69.286690 -46.499710
+v 55.221199 -70.643692 -52.606312
+v 55.466702 -69.286690 -51.927811
+v 54.911800 -72.040894 -53.914711
+v 56.473801 -74.715790 -46.499710
+v 56.296700 -76.052795 -49.133812
+v 55.852402 -73.452789 -49.213711
+v 56.532700 -77.429695 -46.499710
+v 56.425800 -77.429695 -49.213711
+v 56.004299 -76.072792 -51.927811
+v 56.277199 -77.491493 -51.467712
+v 56.047600 -80.143692 -46.499710
+v 56.039398 -80.143692 -49.213711
+v 55.885601 -80.143692 -51.927811
+v 55.314800 -69.286690 -53.284813
+v 54.906300 -70.643692 -55.320412
+v 54.886200 -73.667191 -54.747311
+v 55.293499 -73.358795 -52.606312
+v 54.634800 -75.177689 -56.503010
+v 54.374599 -73.298195 -57.161510
+v 54.317299 -72.001793 -62.784111
+v 55.395802 -76.072792 -54.641911
+v 55.101299 -77.429695 -55.998913
+v 54.511002 -77.429794 -57.546410
+v 54.469700 -76.071793 -57.362011
+v 55.338299 -80.143692 -54.641911
+v 55.851501 -77.466393 -53.852211
+v 54.583199 -79.999596 -57.028412
+v 54.363499 -74.715790 -57.355911
+v 53.747700 -77.429695 -60.070011
+v 53.932899 -74.715790 -60.070011
+v 53.249699 -77.429695 -62.784111
+v 53.757401 -74.715790 -62.784111
+v 53.327499 -80.143692 -60.070011
+v 52.531399 -80.143692 -62.784111
+v 55.453701 -59.787689 -66.007011
+v 55.228802 -58.430687 -66.176704
+v 55.638901 -61.144787 -64.819611
+v 55.643398 -63.858788 -65.498108
+v 55.646500 -62.501789 -66.176704
+v 55.312302 -61.144787 -72.961807
+v 55.235298 -59.787689 -70.926308
+v 55.120800 -59.787689 -74.658104
+v 55.426998 -63.858788 -70.926308
+v 55.327000 -65.215782 -71.604805
+v 55.064499 -67.929695 -69.569206
+v 54.629299 -69.286682 -73.640305
+v 55.039902 -67.251282 -71.604805
+v 54.695301 -69.557686 -70.247711
+v 55.169300 -61.144787 -77.372208
+v 54.991299 -59.787689 -78.729210
+v 55.196602 -62.501785 -82.461105
+v 55.260399 -62.501789 -76.354408
+v 55.105400 -61.144783 -82.800308
+v 54.912998 -59.787685 -85.175110
+v 54.710098 -58.430683 -83.818108
+v 55.190201 -65.215782 -79.747009
+v 55.138199 -65.215782 -82.461105
+v 55.229301 -63.858788 -80.764809
+v 55.008701 -66.572784 -80.425507
+v 54.988701 -63.858784 -89.246208
+v 54.495399 -70.043785 -73.640305
+v 54.285702 -72.001793 -65.498116
+v 54.073200 -72.001785 -73.640312
+v 53.506500 -74.715790 -68.212212
+v 53.371799 -74.715782 -70.926315
+v 54.136902 -72.001785 -70.926315
+v 53.264500 -74.715782 -73.640312
+v 53.639099 -74.715790 -65.498116
+v 51.436901 -80.143692 -68.212212
+v 50.756599 -80.143684 -73.640312
+v 54.495399 -69.713684 -79.068504
+v 54.488201 -69.286682 -84.122108
+v 54.030399 -72.001785 -76.354416
+v 53.953800 -72.001785 -80.425514
+v 53.894600 -72.001785 -84.496613
+v 53.026699 -74.715782 -81.782516
+v 50.369701 -80.143684 -79.068512
+v 51.781300 -77.640686 -79.068512
+v 53.175301 -74.715782 -76.354416
+v 51.781300 -77.429688 -82.150116
+v 52.942699 -74.715782 -87.210617
+v 52.967400 -74.715782 -84.496613
+v 51.901299 -77.429688 -79.068512
+v 50.201500 -80.143684 -81.782516
+v 81.636002 -90.183701 -3.074645
+v 81.636002 -90.250702 2.353485
+v 76.618401 -90.999802 -3.074645
+v 81.636002 -88.865700 -8.502774
+v 84.512299 -85.571701 -8.502774
+v 66.995796 -90.999802 -3.074645
+v 65.351700 -90.230797 -3.074645
+v 70.779800 -90.999802 -5.944275
+v 70.779800 -88.867699 -8.502774
+v 76.207901 -89.382797 -8.502774
+v 65.351700 -88.847702 -8.502774
+v 86.613197 -82.857697 -8.502773
+v 84.382896 -82.842697 -11.223313
+v 87.064201 -81.294701 -8.502773
+v 83.023003 -82.857697 -13.930913
+v 84.350098 -85.571701 -8.612334
+v 81.806396 -85.571701 -11.216814
+v 81.636002 -85.571701 -11.561814
+v 80.366501 -85.571701 -13.930914
+v 81.636002 -84.368797 -13.930913
+v 76.207901 -85.571701 -16.054113
+v 76.207901 -83.832802 -19.359013
+v 80.784897 -80.143700 -19.359013
+v 76.207901 -86.432701 -13.930914
+v 76.207901 -90.999802 -4.811015
+v 59.923500 -82.995689 -30.215313
+v 65.351700 -86.509804 -19.359013
+v 54.495399 -88.045700 -19.359015
+v 54.495399 -85.511696 -30.215313
+v 54.495399 -84.091690 -35.643414
+v 54.495399 -83.358795 -41.071514
+v 52.273499 -85.571693 -41.071514
+v 43.639099 -89.307693 -30.215315
+v 43.639099 -89.072800 -19.359015
+v 0.214082 -91.391701 -19.359015
+v 54.694801 -82.857689 -46.499714
+v 52.350300 -85.571693 -46.499714
+v 49.067299 -87.716690 -41.071514
+v 51.866501 -85.571693 -51.927814
+v 49.067299 -88.027794 -46.499714
+v 50.734200 -85.571693 -57.355915
+v 51.781300 -84.453690 -57.355915
+v 53.116699 -82.857689 -57.355915
+v 54.495399 -81.922691 -54.641911
+v 54.495399 -82.611794 -51.927814
+v 51.777901 -82.839394 -61.325714
+v 51.244202 -82.857689 -62.784115
+v 51.781300 -81.927689 -62.784111
+v 51.781300 -83.496796 -60.070015
+v 49.966702 -85.571693 -60.070015
+v 49.060699 -85.567093 -62.737514
+v 49.067299 -88.017792 -51.927814
+v 49.067299 -87.153694 -57.355915
+v 43.639099 -89.692696 -57.355915
+v 43.639099 -89.020790 -62.784115
+v 49.067299 -83.751793 -68.212212
+v 47.415100 -85.571693 -68.212212
+v 49.067299 -82.844688 -73.640312
+v 43.639099 -88.249794 -68.212212
+v 46.441799 -85.571686 -73.640312
+v 43.639099 -87.559784 -73.640312
+v 49.067299 -82.374786 -79.068512
+v 49.067299 -82.273682 -81.782516
+v 45.718102 -85.571686 -79.068512
+v 43.639099 -86.939781 -79.068512
+v 45.282398 -85.571686 -84.496613
+v 21.926600 -94.984695 -62.784115
+v 43.639099 -90.075691 -51.927814
+v 43.639099 -90.138695 -46.499714
+v 21.926600 -94.013695 -41.071514
+v 43.639099 -89.865692 -41.071514
+v 21.926600 -94.976685 -84.496613
+v 43.639099 -86.679688 -84.496613
+v 0.214082 -94.197792 -62.784115
+v 0.214082 -92.077782 -84.496613
+v 43.639099 2.635264 -86.099503
+v 43.006901 3.794754 -86.646797
+v 43.628201 -1.452376 -86.464699
+v 45.062302 -1.435716 -84.496597
+v 44.936501 -4.149706 -84.496597
+v 43.597099 -4.129016 -86.574303
+v 43.639099 -15.005686 -86.050102
+v 43.401001 -12.291686 -86.761299
+v 43.639099 -17.719687 -85.421303
+v 44.024899 -17.719687 -84.496597
+v 44.173401 -35.361786 -86.532104
+v 43.608101 -33.560184 -87.410507
+v 43.803398 -35.260685 -89.354805
+v 40.944599 4.670734 -88.588699
+v 40.789200 1.956745 -89.393501
+v 42.888100 0.599806 -87.210602
+v 41.979198 1.278274 -88.217300
+v 38.250301 4.573015 -91.350304
+v 36.671299 4.730545 -93.082703
+v 35.665199 5.349255 -94.228798
+v 35.441601 3.313796 -94.969704
+v 34.910099 5.349256 -95.352898
+v 42.048000 -0.757249 -88.441803
+v 40.925098 -0.078720 -89.677002
+v 42.168701 -3.471236 -88.567703
+v 41.078400 -4.149705 -90.129097
+v 39.313599 -5.506755 -92.638802
+v 37.590099 -4.828235 -94.607498
+v 38.210999 -2.114185 -93.273399
+v 35.433800 -3.066694 -96.709900
+v 34.242699 3.992266 -96.709900
+v 33.524502 5.349256 -98.066902
+v 34.355701 2.635266 -96.709900
+v 32.704899 6.168046 -99.511200
+v 32.567902 4.351276 -100.261002
+v 33.687199 1.956746 -98.066902
+v 34.139900 0.599808 -97.466400
+v 33.130100 -0.078719 -99.424004
+v 32.660198 2.635267 -100.435997
+v 34.523602 1.278276 -96.709900
+v 35.202999 -0.418014 -96.253601
+v 35.314701 -5.845994 -97.636299
+v 34.139900 -2.021714 -98.066902
+v 33.815102 -4.828234 -99.334396
+v 33.315102 -2.114184 -99.424004
+v 29.979700 5.385147 -103.352997
+v 31.439501 4.840167 -102.162003
+v 32.121601 5.349256 -100.780998
+v 30.311100 3.735857 -104.141998
+v 28.700001 5.387287 -104.114998
+v 26.939501 5.013627 -105.136002
+v 28.963499 4.114707 -104.920998
+v 27.235800 3.689777 -106.223000
+v 31.990101 2.635267 -102.138000
+v 30.106600 2.771927 -104.891998
+v 31.366800 2.103407 -103.639000
+v 30.909100 1.278277 -104.851997
+v 31.435200 -0.066145 -104.698997
+v 29.973200 1.228347 -106.206001
+v 28.723101 2.634357 -106.212997
+v 25.955601 4.157487 -106.390999
+v 24.090900 4.985857 -106.514999
+v 24.640699 5.349257 -105.602997
+v 32.782902 -1.435714 -100.453003
+v 32.242802 -0.078718 -102.138000
+v 30.700701 -0.078718 -106.209000
+v 32.050499 0.946550 -102.510002
+v 31.983900 -1.382673 -103.591003
+v 31.367800 -1.332563 -105.819000
+v 32.400902 -4.482653 -102.156998
+v 43.639099 -6.863756 -86.428802
+v 42.734100 -7.881516 -87.912903
+v 42.722099 -5.789716 -87.889198
+v 41.138802 -5.506755 -90.222702
+v 41.076599 -6.863755 -90.453003
+v 41.545898 -8.899216 -89.924698
+v 40.762402 -8.220745 -91.049698
+v 39.233200 -10.256285 -93.427399
+v 38.457699 -7.542285 -94.058998
+v 37.439800 -10.154485 -95.904701
+v 37.055500 -7.203044 -95.769203
+v 41.608898 -11.613186 -89.924698
+v 42.335800 -12.291686 -88.663498
+v 43.074799 -15.005686 -87.210602
+v 39.062401 -12.970284 -93.995796
+v 40.925098 -12.291685 -91.048203
+v 39.767799 -14.327185 -92.978104
+v 40.925098 -15.005685 -91.045998
+v 33.344700 -6.863754 -100.780998
+v 32.896198 -5.151594 -100.933998
+v 35.878201 -10.256284 -98.186699
+v 34.354198 -7.542284 -99.446198
+v 34.226200 -10.145083 -100.780998
+v 32.918999 -8.119184 -102.351997
+v 37.051800 -12.652884 -96.986099
+v 37.503300 -15.684284 -96.709900
+v 35.568802 -13.289584 -99.708702
+v 35.369099 -10.934784 -99.215797
+v 36.097599 -15.684284 -99.424004
+v 35.141998 -13.648684 -100.780998
+v 34.797600 -12.291684 -100.780998
+v 34.383499 -12.898484 -102.200996
+v 32.859001 -10.343983 -106.219002
+v 32.757000 -9.673693 -104.688004
+v 33.102402 -10.934783 -104.851997
+v 33.975399 -13.747883 -106.527000
+v 34.853298 -15.681283 -103.514000
+v 34.210999 -13.420683 -103.495003
+v 34.993301 -15.005684 -102.138000
+v 34.272999 -14.171883 -104.594002
+v 31.895300 -4.125833 -105.707001
+v 32.119099 -3.471233 -103.495003
+v 32.325500 -6.308393 -103.470001
+v 32.356400 -7.694503 -104.847000
+v 32.015301 -5.506753 -106.209000
+v 32.415600 -8.220743 -106.209000
+v 27.452000 2.405167 -107.496002
+v 29.159300 0.763507 -107.639999
+v 27.183800 1.860978 -108.514999
+v 25.516500 3.546648 -107.612999
+v 23.283600 4.767288 -107.566002
+v 23.619900 3.887038 -109.236000
+v 21.926600 4.935257 -108.922997
+v 21.879999 4.255018 -111.342003
+v 24.644300 2.808248 -110.281998
+v 26.519300 1.558428 -109.947998
+v 25.143700 1.924948 -111.819000
+v 23.119600 3.297628 -112.211998
+v 25.096100 1.436968 -113.703003
+v 24.929800 0.929340 -116.816002
+v 22.535700 2.897539 -116.472000
+v 28.965401 -0.708966 -109.947998
+v 28.864300 -1.407452 -111.935997
+v 30.479099 -2.694072 -109.928001
+v 30.291599 -0.918683 -107.783997
+v 31.475800 -3.587263 -107.532997
+v 31.861601 -2.768603 -104.884003
+v 30.881500 -2.248822 -107.995003
+v 31.604601 -4.876203 -109.476997
+v 30.713499 -4.444381 -113.191002
+v 29.682301 -3.226542 -114.091003
+v 28.163200 -2.200721 -115.860001
+v 27.427500 -1.131571 -114.922997
+v 22.215799 2.178489 -119.636002
+v 25.712400 -0.553387 -118.653999
+v 23.122700 0.237386 -121.916000
+v 21.153601 2.405540 -121.616997
+v 25.576900 -4.752120 -124.962997
+v 24.206900 -1.459450 -122.639999
+v 26.335300 -1.889080 -119.815002
+v 23.518801 -3.014019 -126.106003
+v 21.927200 -1.959269 -127.716003
+v 22.291599 -1.062909 -125.914001
+v 33.906300 -13.648683 -107.566002
+v 34.074699 -14.182981 -108.922997
+v 33.371799 -11.613182 -108.922997
+v 33.243698 -10.256282 -111.637001
+v 33.625401 -11.613182 -112.994003
+v 32.728001 -8.453292 -112.761002
+v 33.539799 -11.613181 -114.351997
+v 34.083199 -13.648682 -111.637001
+v 32.750900 -9.613201 -115.504997
+v 32.625000 -8.593301 -114.262001
+v 33.606300 -12.970281 -116.387001
+v 34.254200 -14.413482 -113.672997
+v 34.029598 -14.080281 -115.709000
+v 31.992701 -5.818892 -107.558998
+v 32.336800 -7.402143 -108.764999
+v 32.208000 -6.863752 -110.279999
+v 28.639099 -4.243570 -118.927002
+v 31.158300 -6.241561 -115.835999
+v 30.105600 -6.314250 -118.804001
+v 31.703600 -6.538311 -114.313004
+v 32.268101 -8.701951 -116.056999
+v 32.614300 -11.613181 -118.647003
+v 33.964001 -15.666181 -118.444000
+v 34.104099 -15.148281 -117.065002
+v 33.395401 -15.005681 -119.779999
+v 33.283901 -16.766180 -121.874001
+v 32.604599 -14.333980 -121.414001
+v 27.694201 -6.497900 -123.660004
+v 30.180799 -8.187240 -121.001999
+v 31.425800 -8.367231 -118.230003
+v 31.525400 -9.861670 -119.824997
+v 31.421600 -10.934780 -121.137001
+v 29.896500 -9.577740 -122.870003
+v 26.397600 -6.108069 -125.293999
+v 27.424999 -8.342510 -125.834000
+v 26.882299 -10.934779 -129.279007
+v 25.558300 -8.218729 -128.600006
+v 28.413401 -10.475479 -126.166000
+v 32.645100 -12.703181 -119.779999
+v 30.884399 -11.644580 -122.820000
+v 31.744400 -14.665880 -123.795998
+v 29.636900 -11.613180 -125.092003
+v 28.946100 -12.970279 -127.921997
+v 18.523500 6.446308 -107.538002
+v 21.151501 5.680318 -107.698997
+v 20.236401 5.573198 -109.188004
+v 16.846201 6.212178 -109.473000
+v 20.493401 4.997328 -111.119003
+v 18.607800 5.444658 -112.265999
+v 17.513700 5.749468 -112.096001
+v 14.113600 6.267348 -112.257004
+v 20.353701 4.602989 -113.538002
+v 18.279600 4.925499 -117.209999
+v 20.230400 4.281269 -116.387001
+v 18.364401 4.708030 -119.100998
+v 16.837000 5.264609 -117.739998
+v 15.650400 5.778459 -115.093002
+v 13.193400 5.730490 -118.568001
+v 10.968300 6.289999 -114.327003
+v 6.126890 6.145769 -114.241997
+v 1.543140 6.326798 -113.974998
+v 4.286130 5.646629 -116.336998
+v 2.401380 5.156089 -117.404999
+v 16.291201 5.211450 -120.558998
+v 17.635900 4.409260 -123.346001
+v 19.382200 4.224750 -119.366997
+v 20.831499 3.393209 -119.136002
+v 21.689400 3.459799 -116.387001
+v 20.410299 2.306110 -123.975998
+v 18.755301 3.728290 -123.575996
+v 14.802200 5.519249 -119.525002
+v 10.400400 5.632830 -119.416000
+v 13.386700 5.417990 -122.720001
+v 11.096900 5.516870 -121.091003
+v 12.327900 5.192340 -125.471001
+v 17.471500 4.085960 -126.641998
+v 19.331699 2.817101 -126.572998
+v 17.042900 3.946981 -127.844002
+v 19.566200 1.922381 -127.876999
+v 16.613501 4.696550 -124.169998
+v 15.358500 4.682701 -126.920998
+v 13.948200 4.633081 -127.835999
+v 11.239600 4.588151 -127.703003
+v 10.576300 4.906210 -126.249001
+v 20.172501 1.712791 -126.857002
+v 21.952900 0.251058 -124.360001
+v 20.592600 0.094870 -128.095001
+v 8.367790 5.120810 -121.040001
+v 6.473930 4.527240 -122.148003
+v 3.830110 4.460649 -120.401001
+v 5.287650 4.262290 -122.010002
+v 1.919770 3.060020 -122.896004
+v 7.870120 4.182701 -126.431000
+v 8.889330 4.027121 -127.938004
+v 9.363490 4.637900 -126.403999
+v 5.283580 3.104630 -126.028000
+v 7.055430 3.241171 -127.918999
+v 3.564510 1.887841 -126.848000
+v 5.728550 1.513871 -129.641998
+v 0.871446 1.536581 -125.693001
+v 3.459940 2.946980 -124.266998
+v 2.835510 0.066916 -129.815002
+v 1.401490 -0.503702 -130.296997
+v 42.811798 -17.719687 -87.210602
+v 42.704800 -20.433687 -86.626999
+v 41.839001 -20.433685 -88.567703
+v 40.734100 -19.076685 -91.061798
+v 41.375099 -17.719685 -89.924698
+v 41.528999 -15.005686 -89.924698
+v 39.736500 -18.737484 -92.967796
+v 39.589600 -16.701984 -93.317299
+v 39.461601 -20.433685 -93.468803
+v 41.666000 -22.902784 -88.609398
+v 42.363998 -22.579786 -86.871399
+v 40.804001 -21.790785 -90.603203
+v 42.223301 -24.842987 -87.066208
+v 41.704498 -25.387585 -88.655609
+v 40.713001 -25.918285 -91.605209
+v 40.831299 -24.504786 -90.752411
+v 39.551300 -21.790785 -93.317299
+v 38.449799 -22.469284 -95.788803
+v 40.071499 -23.147785 -92.299599
+v 40.058701 -24.504786 -92.638809
+v 38.961800 -24.504786 -95.352905
+v 38.322800 -18.398285 -95.552002
+v 37.260300 -17.568985 -97.388397
+v 36.738800 -14.327184 -97.856003
+v 37.799198 -20.433685 -96.709900
+v 36.363098 -17.719685 -99.424004
+v 37.227001 -21.112185 -98.066902
+v 35.686600 -16.799683 -100.913002
+v 35.388901 -16.972683 -102.138000
+v 34.950901 -17.041183 -104.851997
+v 35.384998 -18.418283 -103.495003
+v 37.823898 -23.744484 -97.568710
+v 39.099201 -25.861784 -95.762909
+v 37.962898 -25.867485 -98.740807
+v 36.839699 -22.701483 -99.718399
+v 37.136501 -24.825182 -100.195007
+v 36.336201 -23.147783 -102.138000
+v 36.106899 -21.790783 -102.138000
+v 36.160301 -19.755182 -100.780998
+v 36.061798 -23.826183 -104.852005
+v 35.985401 -22.469282 -103.495003
+v 36.356400 -24.504784 -103.495010
+v 36.446602 -25.861782 -104.852005
+v 36.870399 -26.278683 -102.894005
+v 42.282101 -26.613787 -87.210609
+v 42.201900 -28.033384 -88.360405
+v 41.578400 -27.218784 -89.924706
+v 41.919800 -28.575686 -89.924706
+v 42.438400 -30.964384 -90.271805
+v 41.188301 -28.004086 -91.779205
+v 39.875500 -27.150185 -94.704407
+v 40.854801 -29.887285 -94.674309
+v 41.833000 -30.272985 -91.960304
+v 43.107899 -33.326183 -90.264008
+v 42.978401 -31.290785 -87.889206
+v 42.232101 -32.795486 -93.575706
+v 41.581799 -31.290785 -93.995804
+v 43.279598 -35.577484 -93.317307
+v 42.566200 -34.032284 -93.949104
+v 42.262100 -35.115284 -97.297409
+v 43.739601 -37.550983 -95.352905
+v 38.545700 -29.933683 -101.460007
+v 38.210999 -28.604683 -100.746010
+v 39.027599 -29.254684 -99.084709
+v 40.226799 -31.290785 -98.066910
+v 39.820702 -32.682186 -101.737007
+v 36.985699 -27.998682 -104.701004
+v 37.374001 -27.897284 -102.817009
+v 36.717999 -28.575684 -106.856010
+v 37.602100 -29.933683 -104.852005
+v 37.205200 -30.951082 -107.740005
+v 37.558899 -31.783583 -107.554008
+v 41.704498 -32.647785 -95.352905
+v 41.321301 -33.326183 -97.686707
+v 41.366501 -34.683285 -99.999809
+v 43.274899 -37.397285 -97.533409
+v 38.388302 -31.110683 -103.809006
+v 34.824299 -17.041183 -106.888000
+v 34.658100 -16.362682 -108.922997
+v 35.233299 -19.076683 -107.566002
+v 35.250198 -19.076683 -106.209000
+v 35.039700 -17.719681 -111.637001
+v 35.469898 -20.518482 -108.245003
+v 35.639702 -21.790783 -106.888000
+v 35.319801 -19.076681 -112.994003
+v 35.050701 -18.398281 -115.709000
+v 35.136799 -18.398281 -114.351997
+v 34.896099 -18.398281 -117.065002
+v 35.482399 -20.538481 -115.108002
+v 35.761799 -23.147783 -109.601997
+v 35.688099 -21.790781 -112.994003
+v 35.514999 -20.292681 -111.637001
+v 36.020100 -24.504784 -106.888008
+v 35.734100 -21.790783 -104.851997
+v 35.904499 -24.504784 -108.923004
+v 36.216999 -25.861782 -106.888008
+v 35.944901 -27.218781 -111.637009
+v 35.840099 -24.504784 -110.959007
+v 35.515301 -22.019680 -117.435997
+v 35.787701 -23.826181 -115.709007
+v 35.938000 -27.218781 -112.994011
+v 36.003300 -26.879480 -115.030006
+v 36.077301 -26.540180 -117.065010
+v 35.861000 -24.504782 -117.744011
+v 34.038101 -17.523281 -120.219002
+v 35.132401 -20.433681 -118.422997
+v 34.716202 -19.415981 -119.440002
+v 32.782902 -18.999680 -126.658997
+v 32.261600 -17.719679 -126.564003
+v 33.098499 -21.168579 -128.048996
+v 33.730301 -21.372978 -126.461998
+v 35.664600 -23.819780 -120.626007
+v 34.975201 -21.790781 -121.815002
+v 34.958099 -23.147779 -123.850998
+v 35.395199 -24.487179 -123.211006
+v 34.057201 -18.857681 -121.815002
+v 33.743301 -23.147779 -127.921997
+v 34.878399 -25.861778 -126.564011
+v 35.270699 -26.911678 -125.886009
+v 34.936401 -24.010078 -124.920006
+v 34.203800 -25.595480 -128.248993
+v 32.172100 -18.751980 -127.981003
+v 30.962299 -16.362679 -127.921997
+v 36.078098 -27.218782 -109.602005
+v 36.428799 -29.933683 -110.959007
+v 36.353802 -29.933681 -112.994011
+v 36.079601 -28.563681 -112.296005
+v 36.186600 -28.575684 -110.280006
+v 35.775299 -23.147781 -113.672997
+v 36.178501 -28.575682 -115.030006
+v 36.398499 -29.933681 -117.065010
+v 36.349300 -29.933681 -114.352005
+v 38.388199 -32.636482 -105.998009
+v 38.210999 -32.985680 -107.566010
+v 37.070202 -32.138680 -112.256004
+v 37.675400 -33.326180 -111.637009
+v 38.240002 -34.004780 -110.430008
+v 38.956799 -35.373482 -110.874008
+v 37.858002 -34.500381 -113.814011
+v 39.900700 -37.811779 -113.933006
+v 39.948799 -37.300079 -111.796005
+v 36.948502 -32.483780 -114.529007
+v 36.596699 -31.290781 -115.709007
+v 37.664398 -34.682682 -116.726006
+v 38.341499 -35.978783 -117.192009
+v 36.097599 -26.540180 -118.423004
+v 36.492599 -30.612181 -120.119011
+v 36.081402 -26.540180 -119.780006
+v 36.014599 -28.575680 -123.172005
+v 35.999699 -26.540180 -121.137009
+v 36.576698 -31.290781 -117.065010
+v 36.201099 -29.933680 -123.172005
+v 36.381199 -29.933681 -121.137009
+v 35.956299 -29.933680 -125.208008
+v 35.335602 -28.593180 -127.250008
+v 36.817600 -32.734779 -120.797005
+v 36.866600 -32.601582 -116.438011
+v 37.266300 -34.004780 -118.422005
+v 36.639702 -32.647781 -124.529007
+v 37.128399 -34.004780 -121.815010
+v 37.790401 -35.361782 -119.779007
+v 37.625599 -35.361782 -122.833008
+v 38.351501 -36.607780 -121.136009
+v 36.197201 -31.290779 -125.886009
+v 36.417999 -31.290779 -123.172005
+v 37.037899 -34.004780 -124.529007
+v 36.228001 -31.789080 -127.413010
+v 36.953300 -34.004780 -127.922005
+v 37.718201 -35.700680 -127.583008
+v 22.993500 -5.197549 -129.195999
+v 20.886499 -3.529219 -130.634995
+v 21.682899 -3.213729 -129.279007
+v 25.924801 -10.934779 -130.634995
+v 24.650600 -9.576459 -131.097000
+v 28.556700 -13.648679 -129.279007
+v 30.068800 -16.362679 -129.406006
+v 27.354700 -13.239679 -130.634995
+v 24.072001 -12.291678 -133.350006
+v 27.354700 -15.005678 -131.828995
+v 25.752399 -15.005678 -133.350006
+v 24.640699 -13.220778 -133.350006
+v 21.926600 -15.005678 -135.955994
+v 21.926600 -9.577738 -133.570007
+v 17.746500 2.559101 -129.223007
+v 16.498501 3.267291 -129.279007
+v 16.498501 2.635271 -129.938995
+v 17.747000 0.994589 -130.554993
+v 15.079800 3.803911 -129.195999
+v 13.782100 3.930441 -129.238998
+v 11.868400 3.898031 -129.207001
+v 14.495400 2.601771 -130.686005
+v 16.522100 1.411891 -130.951004
+v 13.784400 1.278281 -131.789993
+v 11.070300 1.278281 -131.841995
+v 10.958700 2.691181 -130.492004
+v 12.427400 2.737261 -130.634995
+v 20.270399 -0.563333 -129.169998
+v 19.105301 1.236411 -129.175995
+v 18.998501 -0.600992 -130.669006
+v 19.218000 -1.415139 -130.966003
+v 16.498501 -1.435708 -132.651001
+v 16.498501 -2.645728 -133.350006
+v 16.498501 -4.149698 -134.173004
+v 18.072399 -4.149698 -133.350006
+v 11.070300 -4.149698 -135.574005
+v 11.070300 -0.610696 -133.350006
+v 13.784400 -1.069738 -133.350006
+v 14.647200 -1.435708 -133.350006
+v 9.750030 3.373371 -129.334000
+v 8.097830 2.731161 -129.445999
+v 6.734740 1.278281 -130.634995
+v 8.356300 1.278281 -131.324005
+v 4.229950 0.914267 -129.354004
+v 4.354100 -0.052347 -131.151001
+v 8.356300 -0.776711 -133.350006
+v 5.658800 -1.410008 -133.537994
+v 5.638480 -0.151589 -131.985001
+v 4.285190 -0.571694 -131.992004
+v 2.928150 -0.962747 -131.992004
+v 1.383790 -1.360148 -132.242004
+v 2.451650 -1.792888 -133.291000
+v -1.338660 -2.547338 -133.651993
+v 5.642210 -4.149698 -135.856995
+v 2.930170 -4.393168 -136.016998
+v 2.904850 -2.839208 -134.645004
+v 4.666080 -1.435708 -133.350006
+v 1.061370 -2.953718 -134.576996
+v 0.369783 -4.490458 -135.977005
+v 21.926600 -6.863749 -131.904999
+v 20.196600 -6.863748 -133.350006
+v 19.212500 -5.589698 -133.350006
+v 21.894300 -5.184548 -130.677994
+v 19.212500 -4.149699 -132.546005
+v 21.926600 -9.261698 -133.350006
+v 16.498501 -9.577738 -136.455994
+v 5.642210 -6.863748 -137.535004
+v 5.642210 -4.452738 -136.063995
+v 11.070300 -9.577737 -138.225006
+v 2.928150 -6.863748 -137.602997
+v 5.642210 -9.290747 -138.776993
+v 2.928150 -9.034707 -138.776993
+v 0.214082 -9.013707 -138.776993
+v 11.070300 -11.186777 -138.776993
+v 7.130500 -9.577737 -138.776993
+v 11.070300 -15.005677 -140.018005
+v 16.505501 -15.000978 -138.778000
+v 0.214082 -15.005677 -140.660995
+v 32.761299 -21.859280 -129.203003
+v 31.207001 -18.246279 -129.307999
+v 29.189899 -16.362679 -130.634995
+v 30.640100 -19.076679 -130.634995
+v 30.068800 -17.977678 -130.634995
+v 32.205299 -20.433680 -129.279007
+v 31.340401 -20.646679 -130.634995
+v 30.118200 -20.433680 -131.992004
+v 28.833200 -20.433680 -133.350006
+v 27.270000 -17.723780 -133.348007
+v 32.274799 -23.147779 -130.634995
+v 31.099800 -22.567678 -131.992004
+v 32.871899 -25.114679 -130.776993
+v 31.906300 -24.504780 -131.992004
+v 30.033100 -22.744080 -133.352997
+v 31.425800 -25.571678 -133.350006
+v 32.636200 -26.375479 -132.121994
+v 27.354700 -24.013678 -136.063995
+v 24.086201 -25.861776 -138.776993
+v 21.926600 -22.592777 -138.776993
+v 27.354700 -23.147778 -135.720993
+v 33.889599 -29.254679 -132.089996
+v 33.700401 -27.218779 -130.634995
+v 34.620201 -28.569380 -129.531006
+v 32.783401 -28.560179 -133.440002
+v 35.515900 -30.770279 -129.447006
+v 35.572201 -29.897280 -127.844009
+v 34.792198 -29.933680 -130.634995
+v 35.699200 -32.986977 -132.024002
+v 35.749298 -32.019978 -130.561996
+v 36.303101 -32.647778 -129.279007
+v 35.507301 -34.002678 -133.410995
+v 34.815399 -32.632576 -133.378006
+v 38.210999 -36.846676 -129.279007
+v 37.467701 -35.361778 -129.279007
+v 36.567699 -36.015377 -133.395996
+v 36.854000 -35.361778 -132.020004
+v 37.925999 -37.397278 -132.067001
+v 32.782902 -36.718777 -137.354004
+v 32.782902 -34.004776 -136.264008
+v 33.022701 -34.004776 -136.063995
+v 30.068800 -31.290777 -137.074005
+v 26.977501 -31.290777 -138.776993
+v 27.354700 -28.575678 -137.725006
+v 30.068800 -34.004776 -137.975006
+v 31.540001 -31.290777 -136.063995
+v 32.782902 -33.592777 -136.063995
+v 21.926600 -36.718777 -141.309006
+v 28.608299 -34.004776 -138.776993
+v 30.181101 -36.718777 -138.776993
+v 21.926600 -20.433678 -138.046997
+v 11.070300 -25.861776 -141.748993
+v 21.926600 -25.861776 -139.621002
+v 0.214082 -25.861776 -141.929993
+v 11.070300 -36.718777 -142.082993
+v 0.214082 -36.718777 -141.598007
+v 45.509102 -39.432686 -87.889206
+v 44.996201 -38.075684 -87.600807
+v 45.145802 -37.775986 -84.496605
+v 44.237701 -37.057983 -90.772911
+v 46.235199 -41.044983 -88.906906
+v 47.669201 -43.503685 -89.333206
+v 45.163799 -39.432686 -91.281807
+v 44.388199 -38.075684 -92.638809
+v 46.021999 -41.128986 -91.960304
+v 45.507000 -40.894783 -94.415810
+v 44.820999 -39.588684 -94.674309
+v 49.758499 -47.574783 -88.567711
+v 49.416100 -47.574783 -91.281807
+v 48.353500 -44.860683 -89.924706
+v 47.774601 -43.399487 -86.532104
+v 48.500999 -44.860683 -88.567711
+v 47.398201 -43.500484 -91.788208
+v 48.827599 -46.682285 -92.638809
+v 48.389801 -46.217785 -93.995804
+v 47.317902 -44.351685 -94.086311
+v 46.102001 -43.125084 -96.533211
+v 44.373699 -39.432686 -96.709908
+v 44.782799 -41.123684 -98.406204
+v 45.272499 -42.316185 -99.215508
+v 44.445900 -41.524185 -101.799011
+v 43.204899 -38.754185 -100.410011
+v 43.796501 -41.807381 -105.870010
+v 43.416100 -40.260487 -103.337006
+v 46.347301 -44.263683 -99.932808
+v 48.905300 -47.574783 -96.709908
+v 48.500599 -47.574783 -99.763206
+v 47.803398 -45.941685 -97.388405
+v 47.254700 -45.878185 -100.781006
+v 45.263802 -43.503685 -103.522011
+v 45.319698 -44.360680 -106.209007
+v 47.930599 -47.574783 -103.323006
+v 46.353199 -45.403687 -104.174011
+v 47.124901 -47.235279 -106.718010
+v 54.408100 -57.073685 -87.210609
+v 54.688999 -58.430683 -86.532104
+v 52.497700 -52.663784 -89.924706
+v 51.191502 -50.288784 -88.567711
+v 52.360401 -52.083984 -86.510506
+v 50.384899 -49.346584 -91.790710
+v 50.291401 -48.931786 -89.924706
+v 49.967602 -48.931786 -93.995804
+v 50.703201 -50.288784 -93.995804
+v 50.424301 -50.288784 -96.193108
+v 51.613701 -51.645786 -93.038704
+v 51.597099 -52.211987 -95.352905
+v 54.507801 -58.369385 -90.317207
+v 54.170799 -57.073685 -90.603210
+v 53.138401 -54.150486 -90.707008
+v 52.944698 -54.566486 -94.701904
+v 52.487202 -53.002686 -91.960304
+v 53.609600 -55.716686 -91.960304
+v 53.844501 -57.073685 -93.995804
+v 54.326000 -58.430683 -92.638809
+v 53.298698 -55.875183 -95.510605
+v 49.067299 -48.328186 -98.745506
+v 49.845100 -50.288784 -100.781006
+v 50.841702 -51.432285 -97.388405
+v 50.749100 -52.213486 -100.103004
+v 52.028099 -53.687084 -97.034706
+v 48.869202 -48.931786 -102.817009
+v 50.590099 -53.002686 -103.495010
+v 52.424702 -55.716686 -99.424011
+v 51.694801 -54.779186 -101.460007
+v 53.208801 -56.940086 -97.694511
+v 53.731602 -58.430683 -97.049110
+v 52.769901 -57.073685 -100.781006
+v 53.182098 -58.430683 -101.152008
+v 52.456799 -58.430679 -106.888008
+v 52.417099 -57.073685 -103.495010
+v 52.821301 -58.430683 -104.174011
+v 45.351200 -45.369480 -111.286011
+v 44.588001 -43.670181 -108.245010
+v 44.131802 -43.503681 -111.298004
+v 47.463299 -48.592182 -110.254005
+v 46.227600 -47.574780 -114.352005
+v 44.760502 -45.596279 -116.047005
+v 42.124100 -41.467781 -115.030006
+v 46.469799 -48.411381 -116.142006
+v 43.411900 -45.078781 -125.420006
+v 42.180500 -42.602383 -121.603004
+v 44.754902 -46.284679 -119.970009
+v 44.919102 -47.172081 -123.293007
+v 44.371300 -47.065681 -126.564011
+v 50.153400 -53.005882 -106.529007
+v 48.599998 -50.288780 -108.584007
+v 48.990299 -50.288780 -105.726006
+v 49.717899 -53.002682 -109.602005
+v 49.378300 -53.002682 -112.316010
+v 48.756100 -51.645782 -112.316010
+v 47.368999 -49.589279 -114.352005
+v 47.445301 -50.316280 -117.405006
+v 48.958401 -52.552181 -114.521011
+v 48.757702 -53.002682 -118.423004
+v 50.586800 -54.359680 -107.566010
+v 50.325699 -54.920483 -112.316010
+v 49.680901 -54.209782 -116.607010
+v 51.133900 -57.073681 -114.352005
+v 50.745098 -55.716682 -111.637009
+v 51.663399 -57.073681 -109.179008
+v 50.377399 -55.377682 -114.691010
+v 51.656502 -58.430679 -114.352005
+v 51.003399 -57.752281 -117.065010
+v 46.294998 -48.931782 -120.636009
+v 47.051201 -50.288780 -120.458008
+v 46.719200 -50.288780 -122.493004
+v 48.296200 -53.002682 -121.137009
+v 47.684299 -52.117180 -122.493004
+v 45.608398 -48.931782 -125.208008
+v 47.035301 -51.300381 -124.529007
+v 45.451099 -48.931881 -127.158005
+v 47.492802 -52.273380 -125.886009
+v 46.238701 -50.317577 -129.565018
+v 50.180401 -55.830482 -117.744011
+v 49.962898 -56.034180 -119.609009
+v 50.357101 -57.244183 -122.324005
+v 48.916100 -54.359680 -121.814011
+v 49.203098 -55.433182 -125.208008
+v 50.086601 -57.073681 -124.529007
+v 50.791500 -58.245979 -122.154007
+v 50.424301 -58.430679 -126.474007
+v 50.141201 -58.492977 -130.184021
+v 49.623798 -56.734383 -127.652008
+v 48.443600 -54.359680 -128.600021
+v 54.918701 -61.144783 -89.924706
+v 54.976002 -62.501785 -89.924706
+v 54.774700 -59.787685 -89.924706
+v 54.595501 -59.685986 -92.031509
+v 54.825100 -61.144783 -91.281807
+v 54.676601 -63.858784 -94.335106
+v 54.918499 -66.572784 -84.157310
+v 54.726101 -66.572784 -90.603210
+v 54.921700 -65.215782 -89.246208
+v 54.529701 -67.929688 -91.281807
+v 54.422401 -69.286682 -87.210609
+v 54.741199 -65.215782 -92.978111
+v 54.495399 -66.558281 -95.334206
+v 54.584301 -65.215782 -95.352905
+v 54.214001 -60.466187 -96.370705
+v 54.235199 -67.929688 -96.370705
+v 54.261002 -69.286682 -91.960304
+v 54.124500 -69.286682 -94.674309
+v 53.787498 -62.501785 -102.817009
+v 53.616001 -61.144783 -102.817009
+v 54.446400 -62.501785 -96.228806
+v 54.145901 -63.858784 -100.102005
+v 53.542900 -59.787685 -101.120010
+v 53.063099 -59.933479 -105.849007
+v 53.481300 -62.501781 -106.548004
+v 53.301899 -61.144779 -106.209007
+v 53.756500 -63.858784 -104.174011
+v 53.510700 -64.537285 -108.245010
+v 53.778000 -65.215782 -104.174011
+v 53.841499 -66.572784 -102.817009
+v 53.892799 -69.286682 -98.066910
+v 53.804298 -69.286682 -99.424011
+v 53.580002 -65.894188 -106.888008
+v 53.850601 -72.001785 -87.210617
+v 53.757900 -72.001785 -89.924713
+v 54.066299 -70.643684 -89.924713
+v 52.935200 -74.715782 -89.924713
+v 50.223202 -80.143684 -87.210617
+v 50.279999 -80.143684 -89.924713
+v 51.781300 -77.429688 -88.629318
+v 51.764900 -77.429688 -87.210617
+v 51.793301 -77.617683 -92.580414
+v 52.896999 -74.715782 -92.638817
+v 51.935101 -77.429688 -95.352913
+v 52.838600 -74.715782 -95.352913
+v 50.429699 -80.143684 -92.638817
+v 51.781300 -77.849686 -95.352913
+v 50.602901 -80.143684 -95.352913
+v 53.273998 -72.001785 -100.781013
+v 53.611698 -69.286682 -102.138008
+v 52.680199 -74.715782 -100.781013
+v 52.559601 -74.715782 -103.495018
+v 53.120300 -72.001785 -103.495018
+v 52.462200 -74.715782 -106.209015
+v 53.012199 -72.001785 -106.209015
+v 51.972698 -77.429688 -98.066917
+v 52.770199 -74.715782 -98.066917
+v 51.934299 -77.429688 -100.781013
+v 51.781300 -77.976685 -98.066917
+v 51.781300 -77.872688 -100.781013
+v 51.781300 -77.624786 -103.495018
+v 51.845200 -77.429688 -103.495018
+v 50.583302 -80.143684 -103.495018
+v 50.659401 -80.143684 -100.781013
+v 50.660702 -80.143684 -106.209015
+v 51.781300 -77.553787 -106.209015
+v 52.763199 -59.787682 -108.584007
+v 53.066799 -61.144779 -109.316010
+v 53.398899 -63.858780 -109.602005
+v 53.160301 -62.196182 -110.533005
+v 52.866001 -62.501781 -114.012009
+v 52.768101 -61.144779 -112.316010
+v 53.138401 -64.222687 -113.792007
+v 52.371700 -59.787682 -112.316010
+v 51.776402 -59.802181 -116.978004
+v 52.434399 -61.144779 -115.030006
+v 52.135899 -61.144779 -117.744011
+v 52.330200 -62.501781 -119.101006
+v 52.867599 -63.858780 -116.387009
+v 53.325298 -65.215782 -112.316010
+v 53.447102 -67.251282 -109.093010
+v 53.454601 -69.286682 -104.852005
+v 53.254200 -70.025085 -107.566010
+v 53.285801 -69.286682 -111.637009
+v 53.345001 -67.929688 -112.316010
+v 53.373100 -66.572784 -112.316010
+v 53.032001 -69.286682 -114.948006
+v 53.172001 -67.929688 -114.689011
+v 52.795300 -67.929680 -117.744011
+v 53.140598 -66.572784 -115.339005
+v 52.638500 -69.286674 -117.744011
+v 51.887600 -61.076481 -120.458008
+v 51.475700 -59.787682 -121.137009
+v 50.936600 -58.091080 -118.931007
+v 52.130699 -63.858780 -122.493004
+v 51.893200 -63.172482 -123.882011
+v 51.311699 -61.144779 -126.225006
+v 50.923100 -59.787682 -126.225006
+v 51.482399 -62.501781 -127.922005
+v 51.871498 -63.760780 -125.886009
+v 52.997501 -65.215782 -116.387009
+v 52.684399 -66.572777 -119.101006
+v 52.238400 -69.286674 -120.458008
+v 51.821701 -69.639580 -123.787010
+v 52.103401 -67.913277 -123.425011
+v 52.138901 -65.098778 -123.466011
+v 52.067600 -65.215775 -126.564011
+v 51.871399 -65.106476 -129.042023
+v 52.125198 -66.560181 -127.414009
+v 52.159401 -66.525078 -124.027008
+v 52.273499 -66.572777 -122.493004
+v 52.048000 -67.867973 -127.458008
+v 52.976299 -72.001785 -108.584015
+v 53.122002 -70.512787 -112.345016
+v 52.611599 -74.037285 -110.280014
+v 52.553600 -74.037285 -111.637016
+v 52.938099 -72.001785 -111.637016
+v 52.424702 -70.643677 -117.744019
+v 52.945702 -70.643684 -114.352013
+v 52.381401 -72.680183 -115.709015
+v 52.862099 -72.001785 -112.994019
+v 52.583199 -72.680183 -114.352013
+v 52.457901 -74.037285 -112.994019
+v 52.000301 -74.871284 -115.030014
+v 52.181900 -76.072784 -108.923012
+v 51.817902 -77.429688 -106.209015
+v 51.781300 -77.515686 -108.923012
+v 50.671902 -80.143684 -108.923012
+v 50.484600 -80.143684 -111.637016
+v 51.774601 -77.429688 -110.162018
+v 52.160801 -76.156288 -110.447014
+v 51.383499 -77.429688 -114.352013
+v 51.883801 -76.094086 -113.673012
+v 51.542301 -77.429688 -112.994019
+v 51.078701 -77.429688 -116.387016
+v 51.337898 -76.072784 -117.065018
+v 50.207500 -80.143684 -114.352013
+v 51.890202 -72.001778 -119.055016
+v 51.750099 -71.375877 -120.843018
+v 51.230099 -72.001778 -123.851013
+v 51.172501 -74.715775 -119.780014
+v 50.746399 -74.715775 -122.493011
+v 51.319901 -71.322777 -125.208015
+v 51.026299 -72.001778 -126.564018
+v 50.384602 -74.715775 -125.208015
+v 50.487099 -77.429680 -119.780014
+v 49.828999 -80.143684 -117.065018
+v 49.067501 -80.142578 -121.367012
+v 48.970699 -80.086380 -122.335014
+v 50.043800 -77.429680 -122.493011
+v 49.634602 -77.429680 -125.208015
+v 49.057201 -77.424980 -127.823013
+v 49.927299 -74.715775 -127.922012
+v 49.067299 -78.861778 -125.208015
+v 48.275200 -80.143677 -125.208015
+v 42.365002 -38.075684 -102.536011
+v 41.382401 -36.040184 -102.259010
+v 41.805401 -38.920582 -107.445007
+v 41.753502 -38.075680 -105.531006
+v 42.272800 -40.526981 -109.856010
+v 43.450802 -42.060680 -108.769005
+v 41.603600 -40.286682 -112.994011
+v 38.964600 -38.075680 -125.378006
+v 37.995701 -36.209480 -123.681007
+v 40.245998 -40.262482 -126.480011
+v 39.477200 -38.626980 -121.730011
+v 42.305099 -42.382881 -117.913010
+v 40.505901 -40.010681 -120.034004
+v 42.282101 -43.276680 -125.887009
+v 42.410702 -44.357376 -129.889008
+v 40.872200 -41.660976 -129.024002
+v 43.312000 -45.500481 -127.922005
+v 43.559101 -46.014576 -129.348999
+v 44.325802 -47.098976 -131.634018
+v 44.824600 -48.587479 -133.367020
+v 46.130299 -50.288776 -131.992020
+v 47.710201 -53.102676 -130.635010
+v 47.891602 -53.612377 -131.953018
+v 47.383801 -53.061977 -133.309021
+v 45.030399 -51.412678 -136.052017
+v 44.701302 -49.393177 -134.707016
+v 46.452499 -52.155678 -134.651016
+v 48.952702 -55.716679 -130.635010
+v 49.803902 -58.430676 -131.992020
+v 48.798302 -55.716679 -131.992020
+v 47.175499 -56.506477 -135.963013
+v 47.374901 -54.202278 -134.657013
+v 48.438499 -57.717178 -134.673019
+v 46.372700 -54.095879 -136.050018
+v 43.639099 -55.716679 -138.293015
+v 43.639099 -53.002678 -137.768021
+v 46.353199 -58.430676 -136.901016
+v 46.353199 -55.716679 -136.570023
+v 47.642200 -59.778378 -135.996017
+v 43.639099 -58.430676 -138.431015
+v 49.739399 -59.787678 -133.350021
+v 50.254398 -59.754478 -131.918015
+v 50.595200 -61.540077 -132.245010
+v 50.251900 -61.876575 -133.272018
+v 51.286999 -63.180176 -130.635010
+v 50.860199 -61.144775 -130.635010
+v 51.053699 -61.144775 -129.279022
+v 51.050499 -63.858776 -131.992020
+v 49.102901 -60.982079 -134.714020
+v 49.398602 -64.588379 -134.936020
+v 50.485298 -65.203674 -133.477020
+v 47.735199 -61.144775 -136.064011
+v 48.039902 -63.858776 -136.064011
+v 49.067299 -62.501778 -134.995010
+v 46.353199 -63.858776 -137.133011
+v 46.353199 -61.144775 -137.040009
+v 43.639099 -63.858776 -138.358017
+v 43.639099 -61.144775 -138.419022
+v 50.476700 -66.577080 -133.484009
+v 51.205299 -65.215775 -131.992020
+v 51.222900 -66.572777 -131.992020
+v 51.255798 -69.286674 -130.635010
+v 51.736301 -67.813179 -130.090012
+v 51.384300 -70.123878 -129.217010
+v 50.929001 -68.490677 -132.109009
+v 51.820499 -66.534378 -130.167023
+v 50.333698 -68.463676 -133.377014
+v 49.591400 -66.572777 -134.707016
+v 49.067299 -66.572777 -135.267014
+v 49.067299 -69.286674 -134.986008
+v 46.353199 -66.572777 -137.142014
+v 48.159199 -66.572777 -136.064011
+v 43.639099 -66.572777 -138.208008
+v 47.960300 -69.286674 -136.064011
+v 43.639099 -69.286674 -137.913010
+v 46.353199 -69.286674 -137.005020
+v 51.797699 -69.462074 -127.466011
+v 51.403500 -70.643677 -127.922012
+v 50.889198 -72.001778 -127.922012
+v 50.353199 -72.001778 -130.635010
+v 50.669800 -72.001778 -129.279022
+v 50.846100 -70.643677 -130.635010
+v 50.413799 -70.627579 -131.977020
+v 49.831501 -70.643677 -133.350021
+v 49.933201 -72.001778 -131.992020
+v 49.053299 -74.970978 -130.786011
+v 49.067299 -72.683678 -133.350021
+v 49.143902 -72.043877 -133.773010
+v 48.074299 -74.715775 -133.350021
+v 47.148602 -72.001778 -136.064011
+v 43.639099 -72.001778 -137.350021
+v 46.353199 -72.001778 -136.496017
+v 44.585098 -74.715775 -136.064011
+v 46.353199 -73.221680 -136.064011
+v 46.353199 -74.715775 -135.281021
+v 43.639099 -74.715775 -136.290009
+v 47.890999 -77.429680 -130.635010
+v 46.162998 -77.316078 -133.262009
+v 46.353199 -80.143677 -129.005020
+v 46.353199 -79.133675 -130.635010
+v 47.112598 -80.143677 -127.922012
+v 44.597900 -80.143677 -130.635010
+v 43.639099 -80.143677 -131.043015
+v 43.639099 -78.411674 -133.350021
+v 43.639099 -77.429680 -134.375015
+v 43.639099 -75.134781 -136.064011
+v 38.096100 -38.822376 -133.423004
+v 39.612900 -40.604977 -132.306000
+v 39.864700 -39.941479 -129.326996
+v 40.461300 -41.493279 -131.029999
+v 38.584801 -37.898476 -130.634995
+v 39.463902 -41.005077 -133.326996
+v 40.312401 -42.174076 -133.345993
+v 40.982700 -42.508976 -131.701004
+v 38.062500 -40.221977 -134.764999
+v 36.862598 -38.196476 -134.679993
+v 35.997799 -36.718777 -134.707001
+v 35.485699 -38.189579 -136.070999
+v 36.969898 -40.377178 -136.050995
+v 32.782902 -39.432678 -138.302002
+v 35.496899 -39.432678 -136.714996
+v 35.496899 -42.146679 -137.919006
+v 35.496899 -44.685677 -138.776993
+v 32.782902 -40.798779 -138.776993
+v 41.957401 -43.952179 -131.992004
+v 42.716999 -45.404179 -133.479996
+v 41.299000 -44.226578 -134.707001
+v 40.731998 -45.122677 -136.063995
+v 39.502499 -42.100677 -134.744003
+v 38.210999 -44.860676 -137.606995
+v 42.282101 -45.630676 -134.707001
+v 42.036701 -46.925076 -136.028015
+v 43.632000 -47.653877 -134.644012
+v 40.925098 -47.574776 -137.191010
+v 38.210999 -47.574776 -138.570023
+v 32.782902 -42.146679 -139.175995
+v 21.926600 -47.574776 -141.572021
+v 32.782902 -47.574776 -140.189011
+v 43.365898 -48.916676 -136.023010
+v 41.338402 -52.917175 -138.782013
+v 32.782902 -53.002678 -140.680008
+v 38.210999 -48.269775 -138.777008
+v 38.210999 -53.002678 -139.736008
+v 38.210999 -58.430676 -139.995010
+v 32.782902 -58.430676 -140.508011
+v 21.926600 -58.430676 -139.840012
+v 0.214082 -58.430676 -130.553009
+v 42.387299 -63.858776 -138.777008
+v 42.807301 -58.430676 -138.777008
+v 32.782902 -69.286674 -138.202011
+v 32.782902 -67.087776 -138.777008
+v 38.210999 -68.103775 -138.777008
+v 32.782902 -63.858776 -139.613022
+v 38.210999 -63.858776 -139.553009
+v 21.926600 -63.672676 -138.777008
+v 32.782902 -80.143677 -131.436020
+v 38.210999 -69.286674 -138.522018
+v 27.420799 -80.143677 -127.922012
+v 21.926600 -77.949776 -127.922012
+v 21.926600 -69.286674 -136.204010
+v 0.214082 -66.787674 -127.922005
+v 49.067299 -81.771683 -89.924713
+v 49.067299 -81.894783 -92.638817
+v 49.067299 -82.002686 -95.352913
+v 45.004799 -85.571686 -95.352913
+v 45.144798 -85.571686 -89.924713
+v 43.639099 -86.555687 -89.924713
+v 43.639099 -86.323685 -95.352913
+v 49.067299 -82.048782 -98.066917
+v 49.067299 -82.008682 -100.781013
+v 44.816601 -85.571686 -100.781013
+v 49.067299 -81.945686 -103.495018
+v 49.067299 -82.054688 -106.209015
+v 44.575298 -85.571686 -106.209015
+v 43.639099 -86.136688 -100.781013
+v 43.639099 -86.009789 -106.209015
+v 49.067299 -82.100784 -108.923012
+v 49.067299 -81.974686 -111.637016
+v 43.986698 -85.571686 -111.637016
+v 46.353199 -84.279686 -111.637016
+v 48.159698 -82.857681 -111.637016
+v 49.067299 -81.727684 -114.352013
+v 49.067299 -81.268684 -117.065018
+v 47.964500 -82.857681 -114.352013
+v 47.492599 -82.857681 -117.065018
+v 43.639099 -85.571686 -112.955017
+v 43.639099 -85.384789 -114.352013
+v 46.353199 -84.092781 -114.352013
+v 46.353199 -83.688683 -117.065018
+v 43.639099 -84.913788 -117.065018
+v 43.639099 -85.705688 -111.637016
+v 49.067299 -80.605774 -119.780014
+v 46.353199 -82.857674 -121.186012
+v 46.583500 -83.013680 -120.082016
+v 43.639099 -84.335777 -119.780014
+v 43.639099 -83.657776 -122.493011
+v 46.181499 -82.712280 -122.468018
+v 46.353199 -81.759781 -125.208015
+v 43.638199 -82.846275 -125.166016
+v 46.353199 -80.700676 -127.922012
+v 43.639099 -81.811775 -127.922012
+v 32.782902 -90.388687 -106.209015
+v 21.931000 -91.081787 -106.217018
+v 0.214082 -86.391685 -106.209015
+v 32.782902 -87.194786 -117.065018
+v 28.635300 -90.999786 -106.209015
+v 21.926600 -85.954788 -117.065018
+v 32.782902 -82.530777 -127.922012
+v 21.926600 -80.143677 -125.599014
+v 0.214082 -80.143677 -117.306015
+v 43.639099 -80.404678 -130.635010
+v -6.737970 57.362183 110.657005
+v -4.052260 56.499279 112.039009
+v -5.071410 58.417683 109.974007
+v -2.499980 55.559280 113.296005
+v -1.937830 56.774281 112.407005
+v -4.512970 55.907681 112.591011
+v -1.821460 48.774181 117.549011
+v -1.142940 51.488281 117.081009
+v -3.289290 51.596180 116.258011
+v -1.980900 54.377480 115.047005
+v 0.018072 54.049282 116.148010
+v -3.045830 54.917480 113.979004
+v -2.499980 52.845280 116.048004
+v -2.499980 54.203182 114.987007
+v -5.254510 51.106182 115.800011
+v -4.109420 52.863682 115.438011
+v -4.443290 54.109081 114.591011
+v -6.928090 54.407780 113.789009
+v -5.721360 55.090481 113.473007
+v -7.473750 55.617180 112.638008
+v -9.466120 54.749481 112.572006
+v -10.171600 55.724182 111.470009
+v -8.606050 52.818081 113.958008
+v -7.928110 50.131180 115.917007
+v -6.518380 49.599682 116.197006
+v -6.665050 51.707882 115.159004
+v -9.285150 51.146179 114.987007
+v -9.285150 50.131180 115.934006
+v -10.642200 50.963280 114.987007
+v -10.645700 49.982281 116.232010
+v -9.285150 51.488281 114.665009
+v -8.012890 51.521580 114.967010
+v -10.642200 51.488281 114.313011
+v -11.385100 55.023281 111.769005
+v -11.625500 57.138882 109.957008
+v -12.847300 55.839180 110.966011
+v -18.784401 51.275280 116.344009
+v -20.347700 51.628780 116.090004
+v -20.142500 50.128983 116.866005
+v -11.344000 50.131680 116.338005
+v -11.999200 51.030281 114.987007
+v -13.358000 51.197681 114.984009
+v -13.356200 50.873180 116.344009
+v -12.033900 51.622379 113.841011
+v -13.358000 51.617382 113.745010
+v -14.713300 51.751282 113.631004
+v -15.635500 51.596481 114.212006
+v -16.107000 52.099682 113.260010
+v -14.713300 51.124279 116.344009
+v -16.062401 51.260181 116.341011
+v -13.413200 52.915081 112.519005
+v -14.641300 52.887581 112.447006
+v -16.980000 53.503483 112.077011
+v -16.048700 54.841980 111.341011
+v -17.021601 56.825279 109.862007
+v -18.608700 53.675182 111.549011
+v -20.223801 54.069881 110.506004
+v -21.440500 52.829582 111.177010
+v -18.769501 52.216183 113.945007
+v -18.100500 51.571682 115.842010
+v -17.427299 51.288280 116.344009
+v -18.186800 52.878181 112.697006
+v -21.137800 52.277580 112.471008
+v -21.579800 52.152679 114.911011
+v -22.164400 51.955681 113.178009
+v -23.712000 51.505081 114.409004
+v -24.815201 50.843880 113.507011
+v -23.544201 51.231880 112.233009
+v -24.224600 50.857380 111.667007
+v -25.474300 49.913280 112.288010
+v -25.513201 50.204681 113.609009
+v -24.892900 50.134281 110.917007
+v -0.156098 60.780285 105.178009
+v -1.969600 60.510983 105.577011
+v -3.674040 61.974483 102.987007
+v -4.803150 60.448879 105.704010
+v -0.013626 62.620586 101.430008
+v -1.958700 62.572086 101.758011
+v -4.475760 62.638683 100.674011
+v -5.643240 61.513683 104.009010
+v -7.001060 61.955784 103.033005
+v -9.235520 60.794281 105.487007
+v -10.768200 61.231285 104.680008
+v -9.879900 61.983685 103.136009
+v -8.780430 62.562786 102.054008
+v -7.274630 62.855785 100.820007
+v -8.350520 62.758083 99.926704
+v -9.845210 62.399086 101.554008
+v -11.573900 61.247086 104.080009
+v -12.592600 60.813385 105.327011
+v -11.907000 61.043785 103.182007
+v -11.142100 61.590286 102.811005
+v -10.647100 61.487885 101.129005
+v -4.406750 63.373684 97.913704
+v -6.387970 62.748184 96.473808
+v -6.163430 63.213585 98.713707
+v -0.189964 63.150085 97.119606
+v -2.080430 63.015583 98.069809
+v -3.014590 63.295685 96.775307
+v -3.505730 62.882786 94.955505
+v -5.682060 63.148884 99.462807
+v -7.600110 62.787983 98.352509
+v -9.564650 62.399685 100.542007
+v -7.619440 62.378685 97.120209
+v -8.943740 61.533085 98.390411
+v -5.443130 62.383984 93.980110
+v -7.385960 61.754284 95.344711
+v -6.493460 62.270584 94.777206
+v -6.596850 61.671585 94.198006
+v -7.448590 60.995483 95.295410
+v -6.562610 60.831684 94.235107
+v -2.176540 62.772385 93.707809
+v -3.098800 62.669983 92.503708
+v -4.222740 62.451286 92.495911
+v -4.012050 62.713387 93.370605
+v -3.739630 62.344383 91.959709
+v -3.028160 62.438786 91.623909
+v -5.146970 62.232685 93.268906
+v -3.807120 60.994583 91.986710
+v -1.149870 60.988884 91.247406
+v 0.429422 60.973885 90.895309
+v -2.499980 60.988285 91.540504
+v -5.536300 60.973385 93.191910
+v -1.440270 60.304680 108.910011
+v -0.707500 59.726280 110.792007
+v -2.702620 58.543282 110.911011
+v -3.143710 59.536980 109.472008
+v -5.095670 59.164280 108.643005
+v -3.179540 59.934582 107.627007
+v -4.488110 59.816681 107.180008
+v -0.384497 60.617180 106.071007
+v -6.106690 59.499180 107.319008
+v -7.330130 58.540180 108.850006
+v -8.631500 59.348980 107.658005
+v -9.071560 57.402283 109.863007
+v -7.607890 59.358879 107.464005
+v -10.164900 59.922482 107.175011
+v -10.690800 59.834286 100.472008
+v -7.986420 55.532185 100.017006
+v -10.642200 55.559284 102.132011
+v -10.679100 56.995884 101.458008
+v -7.928110 55.346283 100.060005
+v -14.007400 58.622082 108.624008
+v -12.364000 60.369682 106.447006
+v -14.044200 59.862782 107.036011
+v -13.701700 60.420982 105.912010
+v -14.740800 59.916283 106.044006
+v -15.137800 59.536980 106.975006
+v -14.945900 59.369282 105.384010
+v -16.073799 58.842079 107.234009
+v -16.571600 57.940083 106.786011
+v -16.468500 56.887779 106.178009
+v -15.433100 57.051586 105.191010
+v -16.018499 55.570782 105.526009
+v -17.539200 57.498882 108.840004
+v -16.788401 58.242279 107.810005
+v -17.576599 57.576382 107.997009
+v -18.078199 56.478783 109.804008
+v -19.057400 56.139282 109.233009
+v -18.310200 56.746780 107.994011
+v -19.816900 55.279182 108.536011
+v -20.400000 54.546982 109.577011
+v -17.679600 55.556580 106.795006
+v -19.487801 54.467480 107.496010
+v -13.475100 60.416985 104.598007
+v -12.391300 60.185886 102.965004
+v -14.025900 58.580986 104.091011
+v -13.961300 59.518185 104.308006
+v -11.673600 59.838684 101.999008
+v -12.213500 58.286884 102.554008
+v -11.162000 58.274185 101.416008
+v -9.719180 58.314285 99.874710
+v -13.477200 56.419285 103.797005
+v -12.095100 56.794186 102.675011
+v -12.021700 55.535484 103.015007
+v -14.045000 56.917183 104.131004
+v -14.713300 55.559284 104.701004
+v -16.070299 52.845280 105.863007
+v -15.961200 54.206882 105.538010
+v -14.931400 52.894779 105.432007
+v -13.356200 50.131180 106.017006
+v -16.070299 50.248180 106.845009
+v -16.070299 51.488281 106.288010
+v -13.356200 51.210281 105.487007
+v -21.145800 53.473080 110.208008
+v -19.023399 53.518681 106.944008
+v -17.427299 54.203182 106.272011
+v -17.427299 52.845280 106.331009
+v -20.132299 52.855782 107.262009
+v -20.890800 53.670582 108.220009
+v -22.171900 52.335682 108.191010
+v -21.498400 51.488281 107.382011
+v -20.141399 51.488281 107.205009
+v -18.784401 50.131180 107.421005
+v -20.141399 50.131180 107.483009
+v -17.950399 51.273781 106.888008
+v -21.498400 50.131180 107.439011
+v -14.713300 54.203186 104.965004
+v -13.356200 52.845284 104.734009
+v -13.387000 54.222984 104.236008
+v -11.894000 50.131180 105.487007
+v -10.642200 52.845284 103.436005
+v -5.214050 55.559284 97.890511
+v -5.214050 56.123184 97.345505
+v -4.459060 55.559284 97.345505
+v -2.499980 55.559284 95.861511
+v -5.402110 58.486584 95.442009
+v -3.768090 58.274185 94.631508
+v -2.484520 58.335384 93.703705
+v -8.595960 58.274185 98.702507
+v -8.108970 59.613586 97.061508
+v -7.938660 58.236584 98.027504
+v -7.198620 59.631184 95.988510
+v -7.954880 60.962185 96.192604
+v -6.233840 59.434784 95.203110
+v -6.548830 58.328785 96.465004
+v -2.499980 60.334187 91.917511
+v -0.534668 55.559284 94.631508
+v -5.184820 52.857086 100.073006
+v -2.499980 53.821186 97.345505
+v -2.534960 52.846886 97.868805
+v -2.855220 50.160084 98.598610
+v -1.221700 50.265583 90.882706
+v -5.624520 51.105186 89.334511
+v -9.624410 50.787483 89.841209
+v -6.431260 49.461185 92.418808
+v -18.608500 50.556286 88.681709
+v -17.003300 49.197483 91.239510
+v -11.659900 50.611286 89.882507
+v -23.028601 52.384880 110.553009
+v -21.776100 53.145283 109.158005
+v -24.284000 51.241779 110.131004
+v -22.938000 51.576782 108.023010
+v -23.801100 51.661980 109.278008
+v -24.256800 50.269482 108.477005
+v -24.685101 50.347282 109.640007
+v -1.442060 42.374783 121.673004
+v 0.456655 40.757683 124.167007
+v -0.071242 42.231079 123.057007
+v -1.157920 40.602482 122.841011
+v -2.518420 40.755081 121.798004
+v -1.605760 47.371880 118.064011
+v -3.638230 47.608879 117.351006
+v -5.234130 47.441483 117.071007
+v -1.002300 45.949482 118.982010
+v -1.142940 44.703182 119.773010
+v -2.562970 44.703182 119.059006
+v -2.499980 46.060181 118.333008
+v -5.214050 44.703182 118.169006
+v -7.829150 48.882782 116.462006
+v -6.571070 47.417179 116.919006
+v -9.350540 49.097080 116.540009
+v -10.642200 48.774181 116.878006
+v -0.298530 44.604080 120.436005
+v -2.588680 42.820381 120.378006
+v -2.499980 41.989281 121.051010
+v -5.211870 41.994080 119.501007
+v -5.214050 42.872280 119.059006
+v -3.841230 39.275280 121.772011
+v -10.642200 39.275280 118.744011
+v -7.928110 44.703182 117.665009
+v -10.642200 44.703182 117.525009
+v -11.999200 48.774181 117.322006
+v -13.299300 49.087582 117.736008
+v -13.356200 50.131180 117.391006
+v -10.642200 47.417179 117.173004
+v -11.999200 47.417179 117.499008
+v -13.163800 47.450382 117.825005
+v -15.270200 50.142281 117.753006
+v -14.713300 48.774181 118.079010
+v -16.070299 48.774181 118.214005
+v -14.713300 47.417179 118.165009
+v -16.070299 47.417179 118.316010
+v -16.070299 44.703182 117.663010
+v -18.784401 50.131180 117.242004
+v -20.141399 48.774181 117.264008
+v -22.135401 48.741280 116.545006
+v -17.427299 47.417179 118.262009
+v -18.784401 47.417179 117.949005
+v -18.784401 44.703182 117.402008
+v -20.172100 47.408382 117.437004
+v -13.356200 44.703182 117.624008
+v -16.070299 41.989281 117.018005
+v -16.070299 39.275280 117.262009
+v -18.784401 41.989281 116.646011
+v -21.193001 41.989281 116.344009
+v -21.498400 44.703182 116.889008
+v -1.142940 36.561279 124.965004
+v -1.138840 39.274380 123.406006
+v -5.214050 36.561279 122.499008
+v -2.499980 35.808182 124.486008
+v -2.499980 38.036781 123.192009
+v -5.214050 37.916283 121.772011
+v -0.785425 33.904682 127.158005
+v -2.499980 33.847179 125.717010
+v -5.214050 32.817280 124.486008
+v -9.898620 33.847179 121.772011
+v -1.165360 30.981379 128.470001
+v -2.515000 31.189779 127.211006
+v -2.499870 28.419279 128.462006
+v -0.840118 28.419279 129.914993
+v -4.093980 28.419279 127.201004
+v -5.214050 31.133179 125.328011
+v -20.425800 36.561279 116.344009
+v -21.498400 39.275280 115.465004
+v -21.498400 36.561279 115.664009
+v -16.070299 33.847179 119.518005
+v -14.624900 28.419281 121.772011
+v -10.642200 33.190182 121.772011
+v -22.855499 46.060181 116.598007
+v -21.498400 46.060181 116.981010
+v -21.498199 47.417381 116.930008
+v -24.212500 46.060181 116.154007
+v -23.903999 44.679779 116.344009
+v -24.212500 48.774181 115.719009
+v -22.837299 50.115879 116.039009
+v -24.494101 50.233280 115.066010
+v -24.212500 47.417179 115.975006
+v -25.515200 48.716682 114.936005
+v -25.128700 50.411682 114.232010
+v -26.390900 48.774181 113.631004
+v -26.164000 48.774181 112.273010
+v -26.933300 47.383682 112.279007
+v -27.064600 47.542080 113.775009
+v -25.995001 47.417179 110.916008
+v -25.569500 46.060181 115.534004
+v -25.895100 47.455681 115.063011
+v -26.926600 46.060181 114.606010
+v -25.569500 44.703182 115.762009
+v -26.925301 44.703781 114.988007
+v -27.794500 45.935379 113.595009
+v -28.251699 45.467182 112.271011
+v -26.692499 46.135582 111.120010
+v -26.843500 44.697479 111.060005
+v -28.283600 44.703182 111.861008
+v -28.610300 44.703182 112.273010
+v -21.477301 42.010983 116.344009
+v -24.212500 43.346279 116.234009
+v -24.212500 41.989281 116.070007
+v -25.569500 43.346279 115.855011
+v -27.230600 43.283680 115.108009
+v -25.569500 41.989281 115.701004
+v -27.116600 41.927982 115.009010
+v -21.498400 42.761181 110.916008
+v -24.212500 41.989281 111.686005
+v -25.396601 43.584183 110.940010
+v -25.569500 41.989281 111.874008
+v -27.142700 41.982182 112.208008
+v -26.926600 43.346279 111.396011
+v -24.212500 40.632282 115.468010
+v -24.212500 40.171280 114.987007
+v -25.594299 40.681282 114.957008
+v -26.926600 41.005180 113.631004
+v -26.003000 40.632282 113.631004
+v -24.212500 40.048283 113.631004
+v -23.129299 39.275280 113.631004
+v -21.498400 40.222179 110.916008
+v -21.498400 41.989281 111.115005
+v -28.283600 43.346279 114.313011
+v -28.836201 43.346279 113.631004
+v -28.346300 41.983482 113.760010
+v -28.711399 43.311081 112.143005
+v -28.283600 41.989281 113.049011
+v -28.283600 42.655281 112.273010
+v -21.498400 33.847179 116.680008
+v -21.498400 34.738281 116.344009
+v -22.031000 33.847179 116.344009
+v -23.468500 36.561279 113.631004
+v -21.874901 39.275280 110.916008
+v -22.864500 37.551781 110.956009
+v -23.568600 36.561279 110.916008
+v -24.836000 35.204281 110.916008
+v -25.185801 33.847179 113.631004
+v -24.212500 35.293282 113.631004
+v -24.212500 35.799282 110.916008
+v -25.569500 34.633183 110.916008
+v -26.927999 33.843681 110.956009
+v -26.926600 31.133181 114.076004
+v -25.591000 28.419281 116.344009
+v -24.212500 30.493181 116.344009
+v -26.926600 28.419281 115.507011
+v -26.926600 31.760281 113.631004
+v -27.535700 31.133181 113.631004
+v -29.640600 31.133181 112.035011
+v -28.283600 33.255180 110.916008
+v -29.695200 32.500381 110.928009
+v -29.640600 28.507280 113.631004
+v -29.716999 28.419281 113.631004
+v -31.884501 29.776182 110.916008
+v -30.997400 31.136683 110.916008
+v -32.395302 28.822083 111.126007
+v -4.850800 48.774185 100.060005
+v -5.423330 47.497284 100.050011
+v -5.214050 50.131184 101.190010
+v -9.269580 47.376583 104.462006
+v -10.642200 50.131184 104.927010
+v -7.928110 50.131184 103.495010
+v -6.613850 47.137283 101.487007
+v -6.860470 50.131184 102.773010
+v -7.630940 47.492184 102.784004
+v -9.285150 45.418285 104.131004
+v -10.378900 46.062981 105.482010
+v -6.971460 46.060184 101.416008
+v -7.929650 46.062485 102.769005
+v -6.576450 45.930485 100.490005
+v -9.355930 43.478985 102.747009
+v -8.409640 44.657085 102.553009
+v -8.753230 43.804184 101.841011
+v -7.779790 44.773285 101.543007
+v -7.610610 44.706184 100.579010
+v -10.660500 43.139385 100.928009
+v -9.289540 43.481884 101.152008
+v -8.388110 44.238384 100.032005
+v -9.963670 42.969185 102.095009
+v -10.855500 42.523586 103.349007
+v -11.441500 42.321384 102.696007
+v -13.356200 47.417179 107.396011
+v -10.642200 48.080280 105.487007
+v -10.642200 47.417179 105.629005
+v -15.772500 47.406879 108.231010
+v -11.996000 44.684879 106.850006
+v -13.356200 44.703182 107.960007
+v -10.645300 44.747581 105.486008
+v -22.826000 47.740482 108.311005
+v -18.784401 48.372280 108.202011
+v -18.784401 47.417179 108.649010
+v -17.427299 50.131180 107.220009
+v -21.498400 48.774181 107.899010
+v -16.070299 44.703182 109.418007
+v -18.784401 44.703182 110.004005
+v -21.498400 46.060181 109.254005
+v -14.941900 42.150982 108.238007
+v -16.070299 41.989281 108.743004
+v -11.347200 43.346279 105.487007
+v -12.313600 41.998486 105.357010
+v -12.272300 43.407982 106.747009
+v -13.687500 44.703182 108.202011
+v -13.860200 43.333282 108.152008
+v -18.784401 41.989281 109.932007
+v -20.972000 41.989281 110.916008
+v -22.558100 44.689079 110.069008
+v -20.141399 39.913280 108.202011
+v -17.558800 40.632580 108.190010
+v -16.735100 40.318184 105.245010
+v -17.569300 40.053581 106.661011
+v -16.005501 40.625381 106.886009
+v -15.387900 40.664780 105.497009
+v -19.700001 39.588882 105.771011
+v -20.491501 39.553581 107.058006
+v -21.396099 39.337181 109.649010
+v -21.658400 38.949883 106.511009
+v -10.511600 43.227985 104.252007
+v -11.677500 42.312286 104.509010
+v -12.440400 41.757084 104.425011
+v -12.865000 42.013084 102.709007
+v -16.066799 42.048985 101.972008
+v -15.391800 43.346283 100.060005
+v -17.747299 43.307484 99.697807
+v -13.839000 41.229786 104.260010
+v -16.242701 40.917786 103.905006
+v -22.034100 38.872986 105.140007
+v -19.502800 40.026386 104.238007
+v -22.698799 39.173885 103.773010
+v -23.235701 40.327785 101.424011
+v -20.059700 42.704285 99.862106
+v -1.142940 49.705284 97.345505
+v -2.433680 48.769184 97.358505
+v -3.914550 50.119286 99.564407
+v -3.747230 48.771385 98.692604
+v -4.914380 47.417183 98.702507
+v -3.857020 48.021183 97.345505
+v -4.469600 47.973385 95.986511
+v -5.047180 47.342083 97.202209
+v -5.510150 48.059185 95.098007
+v -5.920080 46.353683 98.502808
+v -7.619540 48.121883 94.377808
+v -7.916440 46.325684 96.875511
+v -9.900850 48.757885 93.214905
+v -6.765650 45.694084 98.938507
+v -6.347190 46.677185 97.093208
+v -7.744110 45.439983 98.307007
+v -9.863840 44.396385 99.152206
+v -14.588300 47.170486 94.747406
+v -1.142940 49.273285 93.274506
+v 0.214082 49.018185 94.631508
+v 0.214082 49.319286 93.274506
+v -1.665900 48.745186 94.722610
+v -2.807230 49.202187 93.401207
+v -2.937690 48.619884 94.841911
+v -3.413030 50.241585 90.976105
+v -14.526300 45.155685 97.600311
+v -18.046301 45.367085 96.611206
+v -17.427299 47.814285 93.274506
+v -19.674900 44.971886 96.720306
+v -20.819901 48.066284 91.917511
+v -20.444201 49.318386 90.173210
+v -21.413601 45.746384 94.959511
+v -22.971500 47.922184 91.239006
+v -24.922300 48.809181 109.335007
+v -24.109501 48.681179 108.350006
+v -24.212500 47.417179 108.927010
+v -25.006100 47.417179 109.560005
+v -22.855499 48.774181 107.881004
+v -22.857599 45.935081 109.360008
+v -24.210300 46.063580 109.560005
+v -24.212500 44.703182 110.255005
+v -25.569500 46.060181 110.287010
+v -25.569500 47.417179 110.279007
+v -25.569500 44.703182 110.609009
+v -25.619200 39.035286 101.797005
+v -22.855499 45.992184 93.953506
+v -22.721001 44.270683 96.338409
+v -25.308599 47.227985 91.109009
+v -24.157600 49.431786 88.380806
+v -28.325001 47.417183 89.227509
+v -26.566700 46.091583 91.968605
+v -26.417700 43.946484 94.790009
+v -30.069599 45.405884 91.132408
+v -31.013201 46.012985 89.744911
+v -32.267300 44.698086 90.642410
+v -32.275101 45.798584 89.127304
+v -22.006100 42.278286 99.477905
+v -24.382099 43.612385 96.233505
+v -25.908800 40.355785 99.720505
+v -28.721201 41.611786 96.667007
+v -29.640600 43.126785 94.347511
+v -30.997700 42.792786 93.948006
+v -29.715099 40.632286 97.345505
+v -30.611200 38.614685 99.318909
+v -28.607800 39.306286 99.727905
+v -31.013000 39.949684 97.334206
+v -32.829800 41.913784 93.757607
+v -32.210701 39.152985 97.396210
+v -33.926300 40.516087 94.526108
+v -34.949699 41.901184 91.917511
+v -37.373798 39.499084 92.638611
+v -38.452900 40.468884 90.424110
+v -35.104000 37.730885 96.645508
+v -33.861301 44.346184 89.765511
+v -22.467400 37.918282 109.560005
+v -22.031300 38.602680 107.881004
+v -23.100100 37.399681 108.115005
+v -23.155300 38.087982 106.227005
+v -23.745501 36.943180 107.769005
+v -24.960400 37.154182 106.213005
+v -25.465599 35.382481 108.307007
+v -23.285900 36.791882 109.599007
+v -24.212500 35.843281 109.560005
+v -25.349899 34.967979 109.558006
+v -26.926600 34.189281 109.560005
+v -26.926600 34.750179 108.202011
+v -29.226299 36.630585 103.699005
+v -27.610600 35.222782 106.897011
+v -28.308201 33.846481 109.601006
+v -28.283600 34.328182 108.202011
+v -29.640600 33.847179 109.129005
+v -29.640600 34.118179 108.202011
+v -30.607599 33.847179 108.202011
+v -29.352501 34.852180 106.332008
+v -30.369801 34.340881 106.625008
+v -31.202999 33.845581 106.445007
+v -31.985100 34.348885 104.594009
+v -27.176800 37.279583 104.138008
+v -29.823700 37.856884 101.113007
+v -31.726999 36.950684 100.543007
+v -30.561399 36.216785 103.129005
+v -29.640600 33.642281 109.560005
+v -30.997700 32.490181 109.999008
+v -31.168301 32.867580 109.629005
+v -32.311199 30.610382 109.677010
+v -32.016499 32.862881 106.949005
+v -33.207500 32.039780 105.955009
+v -34.517399 33.498184 102.434006
+v -32.898201 31.493483 107.508011
+v -33.780602 30.882883 107.054008
+v -34.004601 29.623682 108.258011
+v -32.720402 30.912683 108.626007
+v -33.750702 28.710882 109.554008
+v -35.703701 27.315683 108.257011
+v -35.572701 29.996883 106.251007
+v -37.503899 28.697582 105.281006
+v -35.384602 31.812283 103.764008
+v -37.645699 31.165783 101.877007
+v -37.852402 32.486584 100.047005
+v -35.808601 34.650887 99.677605
+v -38.686100 28.057983 104.871010
+v -40.977200 28.652782 101.699005
+v -36.425800 36.230186 97.345505
+v -37.763100 35.521786 96.981804
+v -33.711700 36.370186 99.381508
+v -40.657799 36.716785 93.142609
+v -42.964901 32.809284 94.982910
+v -42.698002 36.115486 91.851204
+v -41.135101 30.433784 99.473206
+v -41.410198 32.150784 97.345505
+v -43.210999 30.744785 96.953011
+v -44.857498 27.421385 98.582909
+v -10.642200 17.563179 126.157997
+v -5.214050 28.419279 126.439011
+v -16.070299 28.419281 121.113007
+v -21.498400 22.991282 120.563004
+v -21.498400 28.419281 118.680008
+v -21.046900 17.563181 121.772003
+v -21.498400 17.563181 121.575996
+v -21.498400 6.706221 120.994003
+v -26.926600 26.602180 116.344009
+v -26.926600 22.991282 117.420998
+v -27.500601 25.705280 116.344009
+v -29.106701 22.991282 116.344002
+v -29.640600 25.705280 114.954010
+v -31.705400 25.705280 113.631004
+v -32.378201 27.064081 112.272011
+v -33.479500 25.554380 112.354004
+v -32.354698 22.991282 114.481003
+v -26.926600 17.563181 118.680000
+v -31.552900 17.563181 116.344002
+v -34.214600 26.529083 110.819008
+v -34.363701 24.417582 112.473007
+v -32.354698 24.886181 113.631004
+v -33.857601 23.046082 113.588997
+v -37.055099 24.162483 110.510010
+v -37.796902 23.015383 110.918999
+v -36.425800 22.991282 111.910004
+v -32.354698 20.277281 115.375999
+v -35.068802 21.148281 113.630997
+v -35.464802 20.277281 113.630997
+v -38.189301 20.298882 111.646004
+v -35.068802 17.563181 114.389999
+v -32.354698 17.563181 115.989998
+v -36.154202 17.563181 113.630997
+v -37.782799 17.563181 112.416000
+v -32.354698 12.602180 116.344002
+v -37.782799 14.849182 112.806999
+v -32.355701 12.133080 116.365997
+v -32.354698 6.706221 116.795998
+v -33.289902 6.706221 116.344002
+v -42.807201 6.706222 110.916000
+v -37.782799 6.706222 113.891998
+v -40.506901 12.145182 111.220001
+v -39.363400 24.569483 108.608009
+v -39.554600 23.473682 109.321007
+v -41.382301 23.026382 107.892998
+v -40.603298 24.738783 107.300011
+v -40.068298 26.240282 105.890007
+v -42.490101 25.601683 103.491005
+v -43.151501 22.306883 106.153999
+v -42.697800 21.561583 107.191002
+v -42.183601 20.255682 108.240997
+v -39.438400 18.920183 110.916000
+v -40.555901 20.021383 109.804001
+v -41.540001 14.749582 109.724998
+v -42.727100 18.883984 108.068001
+v -42.287601 17.563183 108.663002
+v -43.387901 20.323883 107.123001
+v -40.382599 13.602181 110.992996
+v -44.141300 15.800982 107.188004
+v -43.211300 14.835983 108.195999
+v -43.210999 12.134282 108.943001
+v -43.210999 6.706222 110.655998
+v -45.687801 32.407486 92.383705
+v -47.748600 33.905785 88.721611
+v -44.965199 36.198383 89.270004
+v -45.792599 30.045284 94.631706
+v -46.624298 26.767784 97.019409
+v -47.679600 26.948185 95.635406
+v -47.282101 30.839985 92.290909
+v -49.703999 31.812284 88.983505
+v -49.317600 29.223785 91.997009
+v -52.310799 28.245285 90.240105
+v -44.070301 23.193983 104.064003
+v -46.679100 24.687584 99.163307
+v -47.469200 22.803482 100.342003
+v -44.387199 18.896082 106.689003
+v -44.568001 20.277283 106.212997
+v -45.767200 18.926083 105.427002
+v -46.713402 21.744984 102.913002
+v -45.306801 21.519783 104.876999
+v -48.379501 20.869984 101.153999
+v -49.338501 18.917883 101.653999
+v -49.317600 20.830282 100.059998
+v -48.958000 17.845284 102.814003
+v -51.419300 17.547083 101.430000
+v -51.897400 19.784584 98.672302
+v -52.381500 21.236185 96.858299
+v -53.049400 25.689785 91.902206
+v -54.067200 23.685684 92.690010
+v -49.346001 22.959585 98.151901
+v -53.020199 17.507282 100.005997
+v -53.976101 19.044285 97.438904
+v -54.280701 20.882685 95.008102
+v -55.304100 25.479586 89.331306
+v -55.098202 22.661385 92.287598
+v -56.997398 19.943285 91.920097
+v -55.229198 18.474285 96.320801
+v -56.642601 18.462984 93.897797
+v -57.129299 21.425684 90.202103
+v -59.403599 16.568985 91.356300
+v -59.519901 18.958885 88.489601
+v -44.568001 14.849183 107.014999
+v -45.895199 14.834983 106.002998
+v -46.064602 17.020582 105.309998
+v -46.672600 14.849183 105.487000
+v -47.282101 16.206182 104.641998
+v -51.124901 16.273083 102.602997
+v -52.704601 16.279984 101.440002
+v -54.069599 14.650484 101.403999
+v -53.921299 13.349483 102.334000
+v -51.353199 12.134283 104.281998
+v -54.410599 12.133283 102.657997
+v -44.141602 12.134283 108.202003
+v -48.639099 6.706223 107.347000
+v -45.924999 12.134283 106.970001
+v -51.716900 6.706223 105.487000
+v -48.854198 12.134283 105.487000
+v -54.067200 9.420213 103.661003
+v -54.593201 15.869484 99.657204
+v -55.362801 14.787384 99.935303
+v -55.385101 13.412784 101.389999
+v -57.134998 12.651584 100.154999
+v -56.419300 12.134284 101.416000
+v -56.772202 11.452583 101.500000
+v -57.634602 12.049884 99.981499
+v -58.138302 11.382284 100.059998
+v -56.809502 8.800764 102.375000
+v -58.223000 9.163074 101.273003
+v -58.138302 10.777284 100.625000
+v -58.665298 10.777284 100.059998
+v -59.500000 9.459273 100.067001
+v -54.067200 6.706223 104.222000
+v -55.827702 9.466173 102.775002
+v -56.781300 6.732224 102.777000
+v -58.138302 6.706223 101.754997
+v -59.649399 8.088484 100.205002
+v -59.691399 6.706224 100.265999
+v -55.474701 15.261984 98.738602
+v -57.191799 16.629885 94.796600
+v -58.471298 11.638683 98.877197
+v -56.661701 13.759684 97.851997
+v -57.553101 13.271483 97.175201
+v -59.156700 12.304685 96.515404
+v -58.766300 15.202584 94.272598
+v -61.116901 12.670685 93.577698
+v -60.867199 10.975884 95.663002
+v -61.130001 14.363385 91.570900
+v -63.665199 12.102386 89.545303
+v -62.825001 15.750786 86.898102
+v -59.698700 10.795283 98.853699
+v -60.498699 10.199183 98.503799
+v -60.806999 8.947003 98.779800
+v -61.117401 9.439254 97.966301
+v -61.298500 9.857894 96.686203
+v -62.209400 8.812915 95.742302
+v -61.763302 8.063213 97.345497
+v -61.034500 6.639204 98.771400
+v -62.217300 6.516094 97.284302
+v -62.263100 8.133104 96.273201
+v -63.212700 6.628094 95.978600
+v -63.661400 8.303575 94.142403
+v -64.431297 11.207486 88.917198
+v -64.757103 8.250535 91.921097
+v -64.925201 6.011945 93.609001
+v -65.807503 8.825306 89.464699
+v -66.100403 7.463185 90.482399
+v -3.484430 52.320885 86.109207
+v -6.553860 52.126286 87.331406
+v -6.196550 53.355286 84.203110
+v -9.476120 54.594090 81.073105
+v -6.630610 55.118988 77.641708
+v -8.569750 53.387585 84.523308
+v -10.355600 55.360489 77.469208
+v -10.649200 52.103085 87.422310
+v -19.325100 51.719784 86.242805
+v -21.797501 50.624184 87.461510
+v -22.021999 51.846886 84.723007
+v -21.235901 53.478088 81.229210
+v -11.602100 54.644489 80.745110
+v -12.086500 53.412685 84.339905
+v -12.903900 55.302189 77.753311
+v -13.441000 54.276890 81.413506
+v -18.008101 54.669689 78.752609
+v -20.131300 54.575588 78.101410
+v -22.521299 53.585388 79.875404
+v -3.857020 56.255390 71.986305
+v -7.450060 55.583988 76.140511
+v -6.461740 56.335789 73.017807
+v -10.120400 57.021690 72.359604
+v -12.338500 56.080990 75.124405
+v -6.685200 57.520889 68.985710
+v 0.057805 57.095490 68.009407
+v -4.705170 57.913387 67.151810
+v -8.229010 57.968590 68.049904
+v -12.327200 56.534088 73.425804
+v -16.884899 55.721588 74.834404
+v -19.702900 56.021187 72.474808
+v -20.368999 55.460289 73.889107
+v -15.672100 57.133488 69.926605
+v -20.991501 56.881290 68.964211
+v -25.696699 50.821884 84.612106
+v -24.530500 52.295490 81.697807
+v -26.587299 52.483788 78.856209
+v -23.759600 56.505688 67.930405
+v -22.594400 56.146389 70.607407
+v -25.781601 55.003788 70.720406
+v -23.380501 54.945389 73.425507
+v -32.609100 53.140087 68.912811
+v -29.937500 53.325588 71.959305
+v -30.997700 54.448189 66.812607
+v -33.820702 51.053490 74.615509
+v -33.372398 50.540688 77.159904
+v -32.354698 51.891289 73.937004
+v -34.135799 52.304089 69.315506
+v -36.561298 50.550488 71.241806
+v -35.161900 50.385288 74.615509
+v -35.280201 52.155590 67.594604
+v -6.662170 62.835293 58.320812
+v -2.502340 61.217789 60.363312
+v -6.619640 61.436588 61.159710
+v -9.284810 61.566288 61.196110
+v -6.344990 63.507694 56.096413
+v -8.913730 62.839993 58.464413
+v -11.438100 63.245193 56.366112
+v -11.019500 62.766491 58.166012
+v -15.707300 60.833790 61.055710
+v -12.663100 59.274387 64.682007
+v -13.651500 61.793388 59.618813
+v -18.954000 60.516090 60.711510
+v -14.364400 62.782192 56.724510
+v -17.518900 61.518089 58.988712
+v -19.626900 61.310894 58.464512
+v -2.080330 64.139595 51.740112
+v -7.333270 64.415794 52.463913
+v -10.071100 64.336494 52.510311
+v -7.995400 63.340393 56.920212
+v -9.859620 65.331093 47.638210
+v -2.984220 64.809891 48.168411
+v -5.076010 65.094193 47.850510
+v -3.279610 65.673691 44.127312
+v -7.923760 65.556694 46.688110
+v -9.938810 65.577492 46.155212
+v -14.574400 63.843891 51.266712
+v -18.643400 62.590591 54.120213
+v -11.385100 65.000092 48.565811
+v -13.984600 64.621796 46.750011
+v -24.042900 61.417793 51.361210
+v -19.871901 62.915291 50.215012
+v -21.455999 63.142193 47.102612
+v -15.264600 64.178589 49.055710
+v -3.965140 60.164490 62.741512
+v -6.529980 58.934887 65.379707
+v -8.855040 59.228088 65.193306
+v -18.572300 59.419388 63.234711
+v -20.628700 57.921787 66.165810
+v -18.151800 57.624088 67.735008
+v -21.427500 60.057388 60.465313
+v -20.516199 59.170288 62.936710
+v -22.959999 60.183987 58.749512
+v -21.099800 61.529591 56.504711
+v -26.866699 59.872993 53.070713
+v -23.206200 62.726692 46.609013
+v -26.691000 61.458794 47.227413
+v -23.214199 58.338589 62.997009
+v -23.834700 57.422287 65.264610
+v -27.711100 56.513187 63.755608
+v -26.265400 57.694489 61.584808
+v -33.880798 53.554390 64.974411
+v -33.924099 54.547588 60.272106
+v -35.430801 52.706390 64.743706
+v -37.361698 51.843590 63.304207
+v -40.439800 49.940788 64.793510
+v -39.969601 49.457989 68.532906
+v -30.875000 56.408890 59.588608
+v -32.570999 54.785587 62.790607
+v -33.579498 55.839493 56.045109
+v -36.726101 53.126591 57.991207
+v -39.104698 51.344090 59.503407
+v -41.718601 49.346691 57.059608
+v -38.143299 52.201191 57.088608
+v -29.711100 58.864292 51.913410
+v -28.792500 60.073391 49.343811
+v -31.270300 60.105793 45.064213
+v -31.877001 58.737892 48.399811
+v -32.815498 57.360691 50.879009
+v -33.510601 59.057693 44.453712
+v -31.599899 57.672192 52.610107
+v -34.550900 56.058891 51.173908
+v -35.051800 58.356392 43.207207
+v -34.529800 57.267494 47.429806
+v -36.376400 56.865093 44.668606
+v -36.525200 55.408493 47.930309
+v -40.832500 50.274494 55.027607
+v -1.423940 65.191292 44.056812
+v -5.502700 65.647591 45.520412
+v -3.167540 65.630989 42.718613
+v -3.177100 65.199593 41.735310
+v -4.968650 64.763489 40.777611
+v -5.430840 65.524193 41.870411
+v -0.992069 63.793091 40.531410
+v -5.486800 65.776390 43.710110
+v -8.123460 66.334694 43.249111
+v -7.687490 66.060989 44.601711
+v -8.941450 66.367096 43.635811
+v -7.941330 65.687691 41.421310
+v -6.571070 64.380196 40.350410
+v -7.877240 64.554893 40.367310
+v -11.080500 65.692696 41.265411
+v -8.351120 66.259293 42.514713
+v -10.683100 66.079994 42.520912
+v -10.979800 64.962791 40.307610
+v -3.447970 63.324291 39.536312
+v -1.113040 62.235794 38.691212
+v -5.564460 62.480194 38.800510
+v -4.876670 60.966194 37.704613
+v -1.453280 60.362492 37.159912
+v -9.414440 64.124794 39.799713
+v -7.648520 60.917892 37.798313
+v -9.261280 60.857693 37.717911
+v -9.332570 62.680191 38.736313
+v -7.570760 62.576092 38.846512
+v -10.997800 61.044392 37.637913
+v -10.642200 62.345291 38.319313
+v -13.351900 65.585693 42.227810
+v -13.647200 65.298393 44.204811
+v -15.599900 64.591194 44.727810
+v -12.794100 65.580093 41.316113
+v -16.705799 65.377396 41.093811
+v -19.894400 63.856693 43.800411
+v -19.515499 63.717491 45.126812
+v -17.746799 64.733391 42.427113
+v -17.451500 65.383690 40.352211
+v -19.962099 65.413292 40.472111
+v -19.832600 64.414696 42.409313
+v -21.579100 63.890392 42.358212
+v -20.982201 65.309395 40.218811
+v -21.690399 63.303192 44.127411
+v -11.051500 63.300392 38.820412
+v -14.313000 64.415390 38.801212
+v -13.309700 65.137489 39.982010
+v -15.760000 63.527893 37.732510
+v -17.216101 65.052193 39.025612
+v -15.377300 65.466393 40.458912
+v -13.587700 62.203392 37.636513
+v -16.631201 62.448994 37.061111
+v -13.970900 60.855892 37.109512
+v -19.301901 65.437889 39.594612
+v -18.031799 64.566795 38.157913
+v -18.236900 63.960793 37.570213
+v -20.767599 65.081795 38.676010
+v -22.419399 64.322990 37.611813
+v -22.508499 63.695393 36.987511
+v -18.784401 62.345291 36.651512
+v -19.832701 60.894894 36.010811
+v -21.175600 62.115494 36.245613
+v -3.857020 59.631191 36.911610
+v -2.366640 58.430592 36.116207
+v -5.327280 58.284393 36.520908
+v -6.065040 59.768791 37.178913
+v -3.857020 56.917191 35.726009
+v -1.989120 56.402798 34.919506
+v -5.892560 56.917191 36.131207
+v -4.787320 54.472496 34.877708
+v -8.811580 58.163891 36.763107
+v -8.534730 59.596794 37.249310
+v -10.642200 59.631191 37.170010
+v -10.072100 55.616093 36.026508
+v -8.081010 53.740696 34.898407
+v -5.864050 55.473892 35.600307
+v -11.937400 59.409893 36.994911
+v -13.356200 59.631191 36.898613
+v -14.713300 59.631191 36.706810
+v -10.642200 56.615192 36.364807
+v -12.919700 56.552391 36.345009
+v -16.053101 58.264191 36.271709
+v -15.183200 56.532192 36.071209
+v -13.410300 55.228592 35.810608
+v -17.513500 57.282192 35.736706
+v -18.784401 59.631191 35.929810
+v -19.453100 58.145393 35.376709
+v -20.141399 59.631191 35.616810
+v -21.618799 61.032692 35.758713
+v -20.679800 58.136795 34.920406
+v -18.268200 56.629997 34.962708
+v -15.746000 55.862091 35.600906
+v -11.797100 54.465492 35.466209
+v -13.091200 54.201397 35.011608
+v -11.220200 53.510395 34.579807
+v -16.145700 55.421997 34.956608
+v -0.712090 57.304398 35.041206
+v -2.740180 54.011696 33.819607
+v -0.808513 52.342697 31.187307
+v -2.853570 52.584995 32.626606
+v -4.747070 53.144897 33.929008
+v -4.649190 51.819897 32.463909
+v -1.781660 51.018597 30.321407
+v -2.531010 49.854298 29.134407
+v -5.468710 50.597095 30.791508
+v -6.719910 53.243298 34.389809
+v -8.715800 52.749096 33.988209
+v -6.826830 52.207897 33.275509
+v -10.638100 52.584095 33.104607
+v -8.570280 51.741295 32.202007
+v -10.006600 51.778896 30.639507
+v -11.387000 52.669395 32.314808
+v -9.669020 51.653397 29.472408
+v -7.991460 50.664394 29.873108
+v -8.125330 50.648495 28.623707
+v -8.513090 51.168896 26.697008
+v -8.835330 51.366295 27.679907
+v -14.143300 54.527298 31.461010
+v -16.371599 56.180996 31.189810
+v -17.257401 55.862095 32.602409
+v -14.908800 56.451595 29.073009
+v -22.387501 57.820797 30.698610
+v -20.437300 57.437996 31.328110
+v -20.928400 58.999195 29.063210
+v -15.165800 54.739895 34.243408
+v -18.074900 56.124294 34.316406
+v -20.840799 57.456997 34.195107
+v -20.455099 56.981495 33.550808
+v -22.125500 57.583897 33.566608
+v -21.660900 57.291096 32.464809
+v -19.594700 56.680397 32.694008
+v -17.868700 58.031395 29.615910
+v -18.937300 57.163795 31.380909
+v -19.462400 58.860497 29.130009
+v -17.379601 58.154198 28.307709
+v -19.083401 58.875298 27.797810
+v -18.291100 58.205395 27.135210
+v -20.870100 59.355595 27.815310
+v -20.528400 59.053997 26.815910
+v -20.660900 58.103096 25.343609
+v -22.198500 58.947495 25.690109
+v -17.262199 57.154797 26.775410
+v -17.398600 55.553295 25.337410
+v -18.745300 56.869095 25.426310
+v -12.772700 53.617996 33.997906
+v -12.766100 53.411297 32.353008
+v -14.793800 54.509796 33.150108
+v -11.806600 52.968296 30.812809
+v -13.048800 54.865997 28.959309
+v -17.752899 55.877396 33.601608
+v -10.103600 52.353497 26.692608
+v -12.089800 54.003098 27.435110
+v -10.888200 53.173595 27.885710
+v -14.787500 55.311596 26.852909
+v -14.318400 55.592598 27.475010
+v -13.501300 52.326496 23.965408
+v -16.393000 54.183296 24.417210
+v -13.219200 52.554897 25.106709
+v -10.756600 50.244896 23.332108
+v -16.070299 55.559296 26.320410
+v -15.438000 54.097996 25.505610
+v -23.893499 63.550392 40.183311
+v -24.513300 62.500492 43.275311
+v -28.784599 61.053993 44.982410
+v -27.109301 61.811691 41.272011
+v -31.035801 60.393192 40.569912
+v -22.838900 64.553795 39.210213
+v -23.856100 63.610893 36.943111
+v -23.651899 64.153091 37.880810
+v -24.993700 63.102493 39.199810
+v -24.973000 63.299892 37.130711
+v -27.411600 61.724293 37.113411
+v -28.369400 61.342793 39.308811
+v -24.807100 61.949394 35.666611
+v -23.256800 63.007992 36.424713
+v -24.771700 63.021091 36.417610
+v -25.835600 62.405991 36.119713
+v -27.339600 60.373192 35.322411
+v -28.073099 60.982391 36.135612
+v -28.347000 61.399994 40.414310
+v -32.616402 59.735794 40.100311
+v -32.319599 59.939991 42.934711
+v -22.628300 59.079697 34.927811
+v -25.613100 59.291695 34.716412
+v -31.055599 59.981091 38.323013
+v -29.985201 60.402992 36.528812
+v -28.420200 59.344196 34.730011
+v -30.246000 59.761494 35.507313
+v -32.277401 58.964794 36.014011
+v -37.220001 57.357693 40.182606
+v -38.234299 56.554092 41.658806
+v -39.950802 54.821392 42.715309
+v -39.938999 55.367092 41.265308
+v -39.505699 55.962193 39.278206
+v -34.131901 58.827293 38.565811
+v -32.065899 58.297195 34.426407
+v -34.216599 57.577496 34.918808
+v -37.613201 57.003792 38.703808
+v -38.959599 55.914894 36.649708
+v -40.678200 54.977692 37.128307
+v -41.308899 52.407894 45.136009
+v -41.830101 53.687294 40.986206
+v -42.878300 50.817291 44.942909
+v -44.084301 49.971092 43.274006
+v -43.202499 52.728092 39.183506
+v -41.496101 54.473091 39.168606
+v -23.716600 57.759296 33.402607
+v -22.873800 57.548195 31.847410
+v -28.622000 58.102097 33.534607
+v -30.495899 58.523994 34.149807
+v -27.202900 57.755997 32.902309
+v -25.360901 57.694897 31.879610
+v -27.815001 57.551796 31.968109
+v -29.731501 57.302597 32.431606
+v -31.387199 56.596798 31.756710
+v -29.268600 57.290497 31.262310
+v -31.825800 56.179497 30.516809
+v -31.335600 56.808495 28.695210
+v -33.152901 55.465797 30.526810
+v -22.615299 59.240196 28.323610
+v -24.314301 57.914394 30.248810
+v -22.624001 59.524296 27.054310
+v -24.474701 59.444897 26.991610
+v -25.873301 58.191597 29.051510
+v -25.186501 59.060898 27.732809
+v -23.858601 59.412598 26.081110
+v -24.587700 58.946796 25.146410
+v -27.289200 58.187397 24.097210
+v -26.671400 58.891796 25.036009
+v -28.466999 57.924496 27.886209
+v -26.114700 57.812595 30.082409
+v -22.135201 57.187096 23.651009
+v -24.927700 56.991497 23.358410
+v -27.627300 58.879597 25.415209
+v -28.987400 58.441296 25.698509
+v -26.739901 59.094196 26.207010
+v -28.437901 58.516895 24.701410
+v -30.366600 57.847694 24.812910
+v -28.377199 57.710796 28.932909
+v -30.645300 57.210896 26.947210
+v -32.068401 56.513496 23.998409
+v -32.011501 56.581497 25.178209
+v -30.560900 57.578297 24.036209
+v -33.113701 55.662697 25.694609
+v -34.907600 55.962498 32.437309
+v -35.916901 56.235294 33.718208
+v -33.565201 55.554695 31.178310
+v -37.231499 54.923496 32.397408
+v -40.563702 54.081795 33.823406
+v -33.165100 55.381195 29.522610
+v -32.979099 55.954494 27.873409
+v -34.344398 54.804295 26.716909
+v -34.820999 54.040295 29.629309
+v -35.240101 54.180096 30.258610
+v -37.136600 54.068695 31.058310
+v -36.889198 52.758095 29.177309
+v -42.694000 52.663795 33.958008
+v -40.863098 54.421494 35.203907
+v -40.954899 51.747395 30.032309
+v -40.522701 53.315895 32.275707
+v -34.209301 54.499798 28.858810
+v -35.331299 53.382595 28.368109
+v -36.251499 52.748596 28.581009
+v -35.878700 53.291897 25.466209
+v -32.800201 55.661594 23.451210
+v -34.756500 53.742996 23.310709
+v -36.977402 52.018196 23.985607
+v -37.811401 51.423298 27.633007
+v -36.365501 52.423195 27.304607
+v -37.838699 51.052097 26.233307
+v -43.809799 48.698795 28.054607
+v -40.586300 50.258198 27.719809
+v -39.099899 50.207897 26.267107
+v -39.975399 49.106697 24.286707
+v -2.706710 59.690201 5.499949
+v 0.003399 50.761795 21.327908
+v -1.015250 49.677097 22.678408
+v -2.484600 50.935497 16.767008
+v -1.435730 50.523697 20.360708
+v -4.222430 51.301098 18.218407
+v -4.568660 51.184395 19.019207
+v -2.766430 50.475998 20.104208
+v -7.679960 52.617096 18.654108
+v -11.258200 54.439796 18.615910
+v -9.230480 52.650295 19.598309
+v -11.220400 53.505096 19.596409
+v -5.321700 50.587296 20.158407
+v -7.296890 51.956795 19.350008
+v -7.113060 51.150597 20.036407
+v -9.277910 51.449898 20.377907
+v -10.642200 51.488297 20.752808
+v -10.550800 50.604694 21.415009
+v -0.959200 52.407097 15.404109
+v -1.475180 54.207497 13.344109
+v -1.531470 51.148895 16.576508
+v -2.771920 51.338398 15.402108
+v -4.142920 51.435196 15.396008
+v -6.386190 52.336895 16.856709
+v -2.847500 50.882595 18.492008
+v -2.232400 52.950798 13.506908
+v -2.715860 52.301895 13.740108
+v -4.188370 52.053196 13.459609
+v -7.043030 52.536095 17.953808
+v -10.500800 54.482895 17.636810
+v -8.694540 53.487698 15.941909
+v -6.802670 52.571198 13.367708
+v -5.612660 52.003998 14.819009
+v -5.625590 52.358894 12.778209
+v -20.418600 56.711895 23.669609
+v -19.499599 56.966896 24.854910
+v -18.559700 55.759296 23.721910
+v -19.766701 55.899696 22.036009
+v -21.266600 56.375797 22.493509
+v -17.899700 55.079197 21.856609
+v -18.212700 55.731495 19.728710
+v -16.852800 56.037495 18.886009
+v -20.725300 56.940697 18.056910
+v -12.914400 55.486797 17.989609
+v -14.432300 56.243195 17.590010
+v -13.809000 55.380898 18.660210
+v -17.101101 56.830395 16.458609
+v -20.504700 57.200897 16.939110
+v -18.285700 56.928596 17.653210
+v -19.670300 56.966396 15.435109
+v -15.192200 56.193695 14.977509
+v -19.573900 56.739998 14.748010
+v -13.189200 52.123997 22.267708
+v -13.660800 52.718395 21.385309
+v -16.584600 54.373596 21.678310
+v -16.386999 54.763195 20.249010
+v -15.008600 54.078896 20.309910
+v -12.741100 52.814095 20.595110
+v -11.762200 51.294598 21.613708
+v -10.487700 49.964497 22.527607
+v -17.365400 54.843494 23.966610
+v -13.225100 55.900597 17.035509
+v -11.867800 55.173496 16.190310
+v -14.158900 55.257397 13.009008
+v -14.135500 56.231598 16.230909
+v -3.511930 56.346100 9.061830
+v -2.306420 55.357498 11.524809
+v -3.685100 58.362301 6.023320
+v -5.229840 58.322102 2.763659
+v -5.292390 57.584499 4.559450
+v -2.471630 61.025600 2.322660
+v -5.550080 56.298500 6.454949
+v -7.220110 56.254902 4.612949
+v -8.458960 56.841202 2.053699
+v -9.089840 55.719200 3.851579
+v -3.609750 54.428799 10.780008
+v -4.997340 55.372799 8.347038
+v -4.983800 52.800499 11.649308
+v -6.139570 53.519001 9.867699
+v -6.220840 52.926998 11.105409
+v -4.436530 53.506199 10.958109
+v -6.422860 54.639801 7.971019
+v -7.354040 53.662498 8.966538
+v -7.480850 53.141399 10.706208
+v -9.544310 53.777802 8.349138
+v -11.302200 54.052700 9.042688
+v -10.242800 53.753101 10.451009
+v -18.113800 55.508396 11.935808
+v -16.499599 55.442295 12.215308
+v -14.260400 55.065201 11.630809
+v -11.444300 54.414497 13.118608
+v -14.006200 54.775101 7.534109
+v -12.418500 54.552200 6.099279
+v -17.240000 55.486698 9.278548
+v -20.806700 55.378502 10.796509
+v -21.726200 55.626095 12.340710
+v -14.424600 54.911098 3.933009
+v -17.002800 55.054298 5.673759
+v -11.418100 55.544201 2.507259
+v -12.751100 55.028900 3.474009
+v -10.216800 54.601398 5.568909
+v -14.281800 55.265598 1.354339
+v -17.864799 55.043999 0.341026
+v -16.377600 55.188900 -0.229087
+v -20.256500 55.084999 4.887099
+v -19.315701 55.558498 8.266479
+v -18.601700 55.034500 4.046419
+v -20.742399 54.973202 -0.063725
+v -22.517900 54.823101 3.223369
+v -24.276501 56.239395 22.438509
+v -21.323900 56.094395 21.662210
+v -27.250999 55.953197 22.126310
+v -20.620001 55.911797 20.669210
+v -24.991301 55.680798 20.696510
+v -25.270000 55.776695 21.395910
+v -20.599001 56.242397 19.300510
+v -25.698500 55.716396 19.903210
+v -20.287201 55.966095 19.998909
+v -25.479200 56.086098 19.068810
+v -23.270901 56.883495 17.879810
+v -27.324301 56.203396 18.296709
+v -28.569000 56.304996 22.488909
+v -29.146099 58.010696 23.919109
+v -31.138000 56.693695 23.207609
+v -23.604300 56.989895 16.360310
+v -27.844400 56.228897 17.614410
+v -23.717400 56.996895 17.252110
+v -24.472601 56.440197 14.925010
+v -29.405300 55.095695 21.369209
+v -30.124599 55.412994 21.981310
+v -31.626200 54.320297 21.323210
+v -32.939301 54.775597 22.382109
+v -29.395399 54.965897 20.707209
+v -31.653000 54.055897 20.514109
+v -29.520700 55.090797 19.852510
+v -30.094299 55.323498 18.208910
+v -32.982899 53.281796 19.440809
+v -29.181101 55.625496 16.790310
+v -30.866699 54.642498 17.257210
+v -29.631500 53.840797 13.452209
+v -31.087299 53.422096 14.791108
+v -32.689800 52.239697 14.795408
+v -33.553600 51.955696 16.493208
+v -34.052898 54.046795 22.402510
+v -33.586399 53.443695 21.008610
+v -34.075100 52.603897 19.843908
+v -35.392899 52.430195 21.151407
+v -37.395599 50.671696 21.147207
+v -39.163399 49.570198 22.287909
+v -37.207001 50.377895 19.543207
+v -35.558998 50.720295 17.837708
+v -34.693901 50.803795 14.664609
+v -37.953602 48.488495 15.056007
+v -35.998299 49.664101 11.619508
+v -25.826099 55.188698 13.125508
+v -23.258801 55.264301 11.612808
+v -24.176100 55.008099 10.502508
+v -26.474899 54.604698 11.381609
+v -27.494301 54.532795 12.617309
+v -21.168800 55.425499 7.779799
+v -25.046900 54.912300 6.533919
+v -29.949800 53.314800 11.336908
+v -31.888500 52.376198 12.612208
+v -32.015400 51.978001 9.308279
+v -29.979900 53.035500 8.799409
+v -26.889400 53.942402 2.535859
+v -26.579201 54.395302 6.450149
+v -25.160999 54.462700 3.153359
+v -26.172899 54.563999 9.413339
+v -28.586399 53.354698 5.065359
+v -28.257700 53.459301 2.593199
+v -31.155600 51.921398 4.679708
+v -32.333500 51.318501 3.207518
+v -34.390301 50.625702 10.156408
+v -33.711800 50.593399 6.594228
+v -35.562401 49.541500 7.790838
+v -35.704300 49.351601 5.412418
+v -43.348999 52.784992 37.284409
+v -44.816101 51.017792 37.233807
+v -45.637100 49.495892 38.659409
+v -44.660400 51.186192 35.503006
+v -42.971901 53.065094 36.089508
+v -44.417801 51.005398 33.779007
+v -28.536699 49.359386 85.682007
+v -30.876600 50.502090 80.831207
+v -32.400200 49.167885 82.592911
+v -35.603500 48.014187 81.061409
+v -35.858501 47.051285 82.909409
+v -33.502998 47.938984 84.097107
+v -35.747299 49.244789 77.329506
+v -39.328201 46.416389 79.261604
+v -38.800598 42.668285 86.871208
+v -34.254002 45.813686 87.212105
+v -38.069500 45.088783 83.751610
+v -44.039299 40.882286 83.773911
+v -42.610600 38.834785 88.612808
+v -38.800598 47.918789 75.882309
+v -41.519501 46.381790 75.378906
+v -41.955799 48.504189 67.363304
+v -42.107700 47.993790 69.090111
+v -43.210999 45.163288 75.633308
+v -41.239101 49.751488 61.371307
+v -42.827000 48.391987 59.518509
+v -42.863201 48.458294 55.118706
+v -44.217602 47.055790 58.840008
+v -40.840599 50.963593 51.973507
+v -42.477798 49.485291 51.780907
+v -46.265701 40.730190 80.619308
+v -43.031700 43.517288 80.346008
+v -45.508301 42.738789 77.505409
+v -48.576801 39.154488 79.142410
+v -43.551201 46.876789 69.289604
+v -45.702599 43.771389 73.953606
+v -46.032398 43.861187 72.456108
+v -48.386700 41.193390 72.888008
+v -49.150799 39.733089 75.567604
+v -47.170300 43.149090 70.077911
+v -45.397999 45.249790 69.089607
+v -46.380501 44.417690 67.604309
+v -49.683701 40.159389 70.586807
+v -48.604099 41.649788 67.787910
+v -51.121601 38.516689 69.187309
+v -45.855301 39.050484 84.315407
+v -48.672100 36.022984 84.838806
+v -48.470200 37.980488 81.909508
+v -51.007198 35.712185 81.977608
+v -52.881199 33.521984 82.548111
+v -52.963501 32.374985 84.337608
+v -53.288300 34.274990 79.699707
+v -52.710201 30.791986 86.740807
+v -50.673901 33.056183 86.523109
+v -54.363800 27.525885 88.438408
+v -54.198799 31.597786 82.951508
+v -54.963299 28.498686 85.949104
+v -55.852901 27.401186 85.471710
+v -50.731602 37.331089 78.676704
+v -51.019699 37.706989 75.843506
+v -52.733601 36.427589 73.017509
+v -54.754398 33.407288 75.483109
+v -52.861500 36.399689 71.882904
+v -53.016899 36.243988 65.519211
+v -54.513302 34.205688 66.939804
+v -55.993801 31.811289 69.865906
+v -53.983200 33.225487 79.874008
+v -55.766201 31.696686 76.746506
+v -57.210602 28.811489 75.975609
+v -56.257301 30.442287 78.197510
+v -56.095299 31.298389 73.088806
+v -58.382401 27.044588 72.956909
+v -57.577599 29.213589 68.331207
+v -56.624500 30.802389 66.340111
+v -44.372898 46.901089 63.555206
+v -42.976898 48.210190 63.920006
+v -45.989799 45.027187 62.317410
+v -48.639099 41.673790 61.723606
+v -50.804501 38.964489 65.042107
+v -52.645199 36.980488 59.191906
+v -50.726601 39.275291 58.331108
+v -47.856998 42.738689 58.755207
+v -48.054699 42.646992 55.638206
+v -50.825401 39.275291 56.634808
+v -44.498199 47.042793 53.030209
+v -44.903801 47.019493 49.623508
+v -43.734100 48.852791 47.989006
+v -44.189800 49.051594 45.566109
+v -45.062000 48.096291 44.760708
+v -45.976002 45.447292 50.528206
+v -47.051701 45.171291 44.853409
+v -47.513699 43.558491 50.316109
+v -51.743401 38.588692 53.869308
+v -49.988300 40.599991 49.510307
+v -49.051300 41.841991 47.619907
+v -54.559799 34.235489 62.783905
+v -54.385399 34.792889 58.627903
+v -54.179600 35.489792 53.835907
+v -55.727798 33.032894 58.301605
+v -55.491402 32.829788 65.031410
+v -57.048500 30.583391 63.437305
+v -58.110100 28.957588 65.783607
+v -59.338001 26.943188 66.338409
+v -57.463699 30.457691 59.610405
+v -57.147800 31.168291 57.414402
+v -62.124599 28.385790 57.787304
+v -62.105999 29.068390 56.580402
+v -63.538300 28.346691 56.215305
+v -52.771301 37.316994 54.260006
+v -51.723999 38.891491 47.117008
+v -50.841202 40.632092 43.851208
+v -53.289001 37.446392 43.382507
+v -53.978001 35.988892 49.107506
+v -56.353500 32.709393 46.510803
+v -55.713501 33.548893 50.867405
+v -54.330101 35.712994 44.527508
+v -55.074799 34.526192 44.760704
+v -56.252201 32.490192 53.242203
+v -57.198101 31.343292 51.704704
+v -59.932400 29.417490 56.744003
+v -58.297001 30.132690 57.041405
+v -59.235802 29.584391 54.516403
+v -58.095001 30.403290 53.295403
+v -58.636299 29.799492 50.044205
+v -60.365002 29.241190 54.541702
+v -61.484798 29.127590 53.178802
+v -62.185001 29.208891 55.930305
+v -62.209400 29.185190 54.599304
+v -63.566502 29.110191 53.920704
+v -63.566502 28.918291 55.277805
+v -64.239197 28.419291 55.277805
+v -64.923500 29.458292 51.206703
+v -64.883400 29.146692 52.554905
+v -63.566502 29.517292 51.206703
+v -58.646400 29.601892 48.079605
+v -59.461102 29.302992 49.510803
+v -59.495399 29.463293 51.206703
+v -60.987900 29.368792 50.078003
+v -62.328300 29.754892 50.065205
+v -61.720001 29.336693 51.698204
+v -63.362301 29.850193 48.463203
+v -64.923500 30.020292 48.492603
+v -64.933296 29.853292 49.854805
+v -63.594898 29.913092 49.975704
+v -60.868599 29.039192 48.479904
+v -60.114700 29.084793 48.988903
+v -59.504501 28.674593 46.409306
+v -62.209400 28.851292 47.135605
+v -60.561100 28.393892 46.860905
+v -63.566502 29.414192 47.135605
+v -64.799797 29.784193 47.156506
+v -62.276100 28.276892 45.817905
+v -64.923500 29.431292 45.778603
+v -65.730797 28.578190 53.691605
+v -66.280502 29.149193 52.563705
+v -67.365402 28.659590 52.771706
+v -67.592499 30.319992 50.306602
+v -66.220901 29.690092 51.237705
+v -66.280502 30.026192 49.849606
+v -66.280502 30.003193 47.135605
+v -66.280502 30.154192 48.492603
+v -67.559402 29.784492 47.327602
+v -66.295998 29.734293 45.870102
+v -67.637604 29.489292 45.778603
+v -68.891502 29.709991 48.792202
+v -68.994598 29.074293 47.135605
+v -70.189598 28.355192 47.442204
+v -70.346603 28.476192 48.154705
+v -69.887901 29.158493 48.689205
+v -56.693001 28.064087 82.008507
+v -57.732399 24.385786 84.708405
+v -59.405701 21.707487 83.822701
+v -58.857201 23.400387 81.934700
+v -57.706799 26.044086 81.343910
+v -58.806702 24.845488 78.158607
+v -57.308701 22.983585 88.070999
+v -59.377399 20.356987 86.673203
+v -61.169201 18.281286 86.467697
+v -61.405399 16.871084 88.180801
+v -62.651901 17.698887 82.893600
+v -59.351501 23.142986 80.467697
+v -60.559200 21.683487 79.874001
+v -62.370201 19.726686 79.107101
+v -62.174801 19.004887 80.973297
+v -63.548401 17.596987 81.218498
+v -63.551399 18.749586 79.164703
+v -62.607498 20.450987 77.520401
+v -58.874599 25.505589 75.798111
+v -59.442101 25.006289 74.310509
+v -60.292099 23.795889 74.882210
+v -61.032001 22.143887 77.377899
+v -60.529301 24.521889 72.431305
+v -61.878899 22.279488 74.972397
+v -61.805698 24.014488 71.818207
+v -59.631699 25.809389 71.216705
+v -59.356201 26.611288 68.751205
+v -60.156502 25.827089 69.588104
+v -60.105099 26.374088 66.065704
+v -60.889801 25.944889 67.849007
+v -63.163898 25.762789 68.324409
+v -61.037300 25.569489 69.339905
+v -60.851501 24.898088 71.050110
+v -62.258598 25.176289 69.685211
+v -64.239197 25.600588 67.618004
+v -65.061302 24.356588 68.664909
+v -63.353500 22.961889 71.971199
+v -65.526703 21.900288 72.951500
+v -64.915604 21.638489 73.728699
+v -63.854401 19.847486 77.395897
+v -64.955704 20.149387 76.187401
+v -64.992798 18.962986 77.414597
+v -63.635399 15.430386 85.262604
+v -63.165699 16.630487 83.578003
+v -64.161201 14.225286 83.718597
+v -64.044800 14.325786 86.460701
+v -64.853203 12.482686 85.797798
+v -64.821701 13.148887 83.557297
+v -63.750301 16.207586 82.421600
+v -64.798203 16.087587 80.899399
+v -64.266602 14.849187 82.418404
+v -65.125504 14.904387 81.237000
+v -64.982399 13.566386 82.579697
+v -65.476402 10.837186 86.929001
+v -66.437698 24.594988 66.849304
+v -66.158302 20.290789 73.560501
+v -64.941902 21.072388 74.720901
+v -65.653801 18.920189 75.633301
+v -65.575996 17.563187 76.990303
+v -66.120796 15.851487 78.450401
+v -64.943497 17.630987 78.961098
+v -66.434898 19.182789 73.509003
+v -66.192802 17.345888 75.422600
+v -67.295601 17.513388 73.858101
+v -67.196404 18.390388 73.056503
+v -66.298103 22.009888 71.590500
+v -65.504303 23.101288 70.601799
+v -66.318802 23.238089 69.255898
+v -67.146797 22.041489 69.381302
+v -66.985901 19.915588 71.504799
+v -68.364502 19.979589 68.822304
+v -67.424698 22.938988 67.663498
+v -68.624001 19.897888 67.691704
+v -67.883003 19.113289 70.732697
+v -68.658600 17.629488 72.160301
+v -69.149200 18.805489 69.299103
+v -69.875504 18.159988 69.744904
+v -72.602699 16.503189 71.477699
+v -69.535301 18.729988 68.381500
+v -71.176697 17.785089 68.741203
+v -71.450996 17.630989 67.261803
+v -65.403503 11.802986 85.522202
+v -66.367104 11.983187 83.555298
+v -65.414597 16.206186 79.704399
+v -66.271500 14.844486 79.680099
+v -66.292099 13.515886 81.244102
+v -66.280502 12.703187 82.418404
+v -67.589401 12.025086 81.815598
+v -67.626602 13.368087 79.636803
+v -67.733704 14.880188 77.129402
+v -68.354797 13.492188 78.347298
+v -66.543503 9.476186 86.942001
+v -67.169197 10.520086 84.832298
+v -68.013496 9.327137 83.803596
+v -67.691399 10.805286 83.341301
+v -66.517197 7.045705 89.542999
+v -66.632896 8.758406 87.501099
+v -67.401001 6.434926 86.969704
+v -68.270897 8.071827 84.025497
+v -68.467499 6.775686 84.714897
+v -68.150597 10.777287 82.418404
+v -68.969398 10.687587 80.953499
+v -69.050499 8.701587 82.533203
+v -69.228600 12.205487 78.612396
+v -69.660599 9.420217 81.061401
+v -70.315598 10.501887 78.398201
+v -70.397499 8.120597 81.277100
+v -70.346603 6.684797 82.492302
+v -71.098701 6.706227 81.061401
+v -71.015099 8.063216 79.704399
+v -70.866699 9.420218 78.347298
+v -66.304298 16.296587 76.899597
+v -67.323196 16.111988 75.594299
+v -68.994598 14.849188 76.196602
+v -68.994598 15.415288 75.633301
+v -70.251801 14.807588 75.595398
+v -68.546204 16.816488 73.844299
+v -69.770500 16.143389 74.347099
+v -70.351601 12.134288 77.205299
+v -71.708603 14.849188 74.839104
+v -71.708603 15.464188 74.276199
+v -72.355797 15.986189 72.981400
+v -72.938301 14.776487 74.235397
+v -74.201698 15.492389 72.654404
+v -71.620102 13.406287 75.628304
+v -72.208199 12.134288 75.633301
+v -73.065697 13.492188 74.685204
+v -74.356598 13.524188 73.806099
+v -74.769203 14.865688 72.971603
+v -75.480202 13.460789 72.820000
+v -73.085999 11.505188 75.008499
+v -74.242996 11.039887 74.045799
+v -75.298798 11.532788 72.931999
+v -75.080803 15.444489 71.574402
+v -76.387497 14.865088 70.181702
+v -75.900200 14.867788 71.681503
+v -74.236099 15.765188 70.206497
+v -72.892303 17.011988 69.111702
+v -73.168999 16.449289 70.649803
+v -73.594101 16.770088 67.600800
+v -73.814903 16.366688 68.508797
+v -74.423798 16.205589 67.404198
+v -74.925797 15.168489 68.336998
+v -75.312401 14.910488 68.696198
+v -75.785103 14.870488 67.725098
+v -72.820000 9.443778 75.649597
+v -74.135696 9.348807 74.275597
+v -75.535599 8.472158 72.828102
+v -71.438797 8.060898 78.332802
+v -73.065697 6.706228 76.381104
+v -73.573502 6.706228 75.633301
+v -76.449799 13.492188 71.562202
+v -77.358299 11.849889 70.351601
+v -76.506798 11.476389 71.456001
+v -77.355103 13.494288 70.205704
+v -77.136803 14.164188 70.205101
+v -77.136803 14.622289 68.848099
+v -78.282204 13.480289 68.797997
+v -77.136803 14.660289 67.491096
+v -78.493797 13.991288 67.491096
+v -78.459999 11.765288 68.848099
+v -78.820801 13.492188 67.491096
+v -79.395500 11.996490 67.014297
+v -77.929703 8.688338 70.197304
+v -77.201500 8.321769 71.072701
+v -78.512604 9.438159 69.198303
+v -76.865799 6.706229 71.562202
+v -75.779800 6.624258 72.919197
+v -78.370903 6.415938 69.539398
+v -78.717903 7.998279 68.968399
+v -79.716599 8.489679 67.289597
+v -79.818298 6.700979 67.563797
+v -58.881802 28.868290 61.952805
+v -59.836899 28.197990 61.228405
+v -61.011902 26.264788 64.559204
+v -62.730900 26.310089 64.778206
+v -63.174702 26.186989 66.618507
+v -65.123596 26.109989 64.601707
+v -64.059402 26.351889 64.727806
+v -60.203701 26.916391 63.588604
+v -61.213100 26.313791 62.793705
+v -65.314903 26.401390 63.302402
+v -64.128098 26.588091 63.024204
+v -62.204700 26.366890 59.590904
+v -63.566502 26.706190 59.348904
+v -64.274200 26.637890 61.111202
+v -62.230999 26.189791 61.204205
+v -64.917000 26.800991 60.664604
+v -61.545101 27.071690 59.358303
+v -60.879101 27.258490 60.409603
+v -60.466099 28.468790 59.384705
+v -62.209400 27.994291 57.991802
+v -62.209400 27.062290 58.708202
+v -63.577999 27.105190 58.005505
+v -65.067299 27.277990 57.219604
+v -65.372299 27.069490 59.255203
+v -63.566502 27.906191 56.634804
+v -64.921700 27.424391 56.558002
+v -64.923500 28.419291 54.586704
+v -64.923500 27.940191 55.277805
+v -67.659302 22.963388 66.505402
+v -67.366302 24.119991 64.340309
+v -67.924400 22.769190 64.339996
+v -66.435303 25.836191 62.445404
+v -66.872498 24.440689 66.016205
+v -66.394600 27.054291 57.260605
+v -66.253403 26.280590 60.357502
+v -67.368301 26.328390 56.961803
+v -67.201103 25.440191 58.792503
+v -67.460999 24.755190 62.349903
+v -70.102402 22.809591 55.961205
+v -68.821297 23.600891 59.840004
+v -68.367897 24.869991 56.907906
+v -68.315002 20.959688 64.871498
+v -68.512497 23.006891 61.951805
+v -68.954300 19.407290 66.095200
+v -70.063103 18.462189 64.788101
+v -69.176598 19.866590 63.396004
+v -69.976303 19.271490 61.156303
+v -70.129898 18.463690 63.794502
+v -70.416199 17.794891 62.655304
+v -72.043800 16.961288 66.069199
+v -71.152000 17.227991 64.115898
+v -69.273102 22.312290 60.366703
+v -69.315498 20.322990 61.848103
+v -70.433197 19.518091 59.317703
+v -69.943802 22.255491 57.828205
+v -70.636703 17.561691 60.854305
+v -71.044098 17.563190 59.348904
+v -67.487602 27.459391 54.238102
+v -68.502899 26.496090 53.635902
+v -69.266800 24.348591 54.396404
+v -68.679703 27.684893 52.432003
+v -67.887604 28.176291 52.861805
+v -70.262199 23.700691 52.837303
+v -70.828796 24.562492 51.059105
+v -71.417297 23.153893 50.965702
+v -70.043900 28.337593 50.036304
+v -71.385803 24.962193 49.527004
+v -70.438599 28.229393 48.884605
+v -71.384300 25.665293 48.324005
+v -71.021301 26.830593 47.439503
+v -71.146103 26.028791 46.070705
+v -71.815697 25.221992 46.411903
+v -73.014801 23.689293 44.469902
+v -73.432297 22.103493 46.926003
+v -70.986702 21.624090 55.216705
+v -71.966499 21.452593 52.460205
+v -71.904297 19.749790 55.131004
+v -73.398903 20.909092 49.663803
+v -72.734596 19.189291 52.955204
+v -71.888397 18.739290 56.192905
+v -71.436897 17.591391 58.069805
+v -72.472397 17.098391 54.642303
+v -73.302002 17.142292 52.374203
+v -74.008102 19.304092 49.520805
+v -72.606003 22.881592 48.916004
+v -73.882004 21.323492 47.675102
+v -75.019096 19.955492 47.185505
+v -75.129303 20.227493 45.999302
+v -74.236298 21.077593 45.276703
+v -76.075996 18.352093 46.198303
+v -75.777397 19.381693 45.946102
+v -75.278702 16.397793 47.924805
+v -73.742599 16.427288 66.129303
+v -75.270599 15.834990 65.463097
+v -75.036903 16.071388 66.085999
+v -75.779800 15.628189 66.134003
+v -71.132401 16.542391 62.085003
+v -72.346100 15.896090 62.573006
+v -73.510902 15.699789 64.283600
+v -74.430603 14.875589 63.624805
+v -73.414398 15.409289 63.373302
+v -75.572502 14.897289 64.059097
+v -74.422699 13.982189 62.062904
+v -75.929497 13.350690 61.643005
+v -73.065697 15.294291 60.705902
+v -72.951103 15.503289 62.361603
+v -71.681396 16.190790 60.676704
+v -73.458702 14.849191 60.705902
+v -71.729897 16.230890 57.982502
+v -71.717300 16.245190 59.371204
+v -71.982697 16.206190 56.634804
+v -73.065697 15.146191 57.991802
+v -73.442802 14.957191 59.451004
+v -73.065697 15.347191 56.634804
+v -73.625298 14.849191 57.991802
+v -74.412598 13.463591 60.731304
+v -74.382004 13.262091 59.319805
+v -75.779800 12.389291 59.348904
+v -75.811897 12.608790 60.044704
+v -74.332199 14.823690 56.522003
+v -74.448799 13.468591 58.253506
+v -75.219398 13.492190 56.634804
+v -76.457100 12.225591 56.650604
+v -77.136803 15.250190 64.777000
+v -77.311501 14.902289 66.283401
+v -78.509399 14.824189 65.353996
+v -78.695198 15.006889 64.831001
+v -77.202698 14.837290 63.787403
+v -79.467796 13.492189 66.134003
+v -79.850899 13.492189 65.467400
+v -79.845200 12.156590 66.063400
+v -80.746201 12.134290 64.777000
+v -78.576897 14.817089 63.668205
+v -79.850899 14.285290 63.420002
+v -81.219200 13.411189 63.390602
+v -79.850899 13.492189 62.534004
+v -81.207901 12.134290 64.320702
+v -80.308800 13.492189 64.777000
+v -78.515503 13.446989 62.275703
+v -79.709999 12.281091 61.368805
+v -81.207901 12.968289 62.062904
+v -82.495102 12.120990 63.440205
+v -82.564903 12.971290 62.062904
+v -83.921997 12.134290 62.672703
+v -79.003403 11.976590 60.832203
+v -77.456299 13.345289 61.872902
+v -76.907501 12.397990 60.182705
+v -76.457901 12.117790 59.360905
+v -76.047501 12.134291 57.991802
+v -83.921997 12.134291 61.414803
+v -82.518997 11.908490 60.747105
+v -80.001297 10.624490 66.140900
+v -81.225304 10.598590 64.779701
+v -80.894897 7.660699 65.958900
+v -83.909599 11.294290 62.898800
+v -82.488899 7.968919 64.439796
+v -82.550003 6.366380 64.783096
+v -83.783798 7.997729 63.255901
+v -82.564903 9.420219 64.103897
+v -83.758301 6.648920 63.289101
+v -84.635498 8.076960 62.043701
+v -83.856903 9.478570 63.152699
+v -79.986198 11.045791 59.637001
+v -77.336502 10.832891 58.011902
+v -77.485298 11.140290 58.835098
+v -78.493797 10.191291 57.991798
+v -77.333801 10.777290 56.634800
+v -78.493797 9.629260 56.634800
+v -79.850899 10.043290 57.991798
+v -79.285004 9.390740 56.609501
+v -81.093697 11.856690 60.721703
+v -82.363701 10.794190 59.411201
+v -83.941498 10.864390 60.676102
+v -83.921997 9.764271 59.348900
+v -84.573898 10.777289 62.062901
+v -84.245102 12.487089 62.062305
+v -84.738098 9.420220 60.705898
+v -84.677200 9.420219 62.062901
+v -81.358398 9.280570 56.763500
+v -82.569298 9.221850 56.883301
+v -82.564903 9.895250 57.991798
+v -83.891098 9.368280 57.990501
+v -84.908997 8.063220 59.348900
+v -84.995003 8.063220 60.705898
+v -84.226303 9.420220 59.348900
+v -85.000397 6.706230 60.705898
+v -83.921997 8.449270 56.634800
+v -84.762398 8.063220 57.991798
+v -84.246696 8.063220 56.634800
+v -85.013603 6.706231 57.991798
+v -85.118401 6.706231 59.348900
+v -84.683899 6.706231 56.634800
+v -73.028397 16.028191 54.910603
+v -73.420998 16.072790 53.961502
+v -75.727303 14.769892 53.846302
+v -74.411697 15.522291 54.798904
+v -75.719299 14.889292 52.793705
+v -74.445602 15.482391 52.064003
+v -74.187798 15.899792 51.048306
+v -75.445602 14.727391 49.910503
+v -75.947403 13.433392 55.345104
+v -73.975601 17.036993 50.345703
+v -74.861000 15.866793 49.173504
+v -75.953003 14.826392 48.002003
+v -75.898300 15.498392 47.351105
+v -76.721100 13.175792 53.504303
+v -77.122398 11.880191 55.684303
+v -77.662201 11.660491 53.943298
+v -76.301399 14.438091 52.231503
+v -78.542702 11.459592 51.850101
+v -77.381302 13.659492 51.071304
+v -76.593803 16.206192 45.778603
+v -77.071899 14.614492 45.791805
+v -77.589996 13.707393 49.584805
+v -78.540497 12.917993 48.781506
+v -77.100098 14.017492 47.377403
+v -77.896797 13.492192 45.778603
+v -78.493797 13.183192 47.135605
+v -78.493797 13.077292 45.778603
+v -79.850899 12.516192 45.778603
+v -77.003799 11.444890 56.630798
+v -77.491997 10.777290 55.956299
+v -77.766800 10.698092 55.002701
+v -78.452301 9.335261 55.465500
+v -78.493301 9.419552 53.920300
+v -79.850899 8.665272 55.277802
+v -81.476501 7.997181 55.116001
+v -79.946602 8.063221 53.920700
+v -79.850899 8.122241 53.920700
+v -81.227798 7.115652 53.915001
+v -79.040802 9.467281 52.540401
+v -79.948502 8.111141 52.529400
+v -79.811401 9.160762 51.330799
+v -80.241898 8.063221 51.206699
+v -80.816803 6.706232 52.563702
+v -80.613403 6.706232 51.206699
+v -82.587097 7.864251 55.413700
+v -82.564903 6.706231 54.541901
+v -83.835403 6.721181 55.395699
+v -79.942703 9.804861 50.373299
+v -79.820801 10.803092 48.563999
+v -80.633598 9.474722 48.529499
+v -79.803299 12.123992 47.092205
+v -80.698097 10.777292 47.135601
+v -80.707802 12.134293 45.778603
+v -81.207901 10.777292 46.546799
+v -80.547600 8.063221 49.849602
+v -80.800499 6.167472 49.818901
+v -81.069199 8.063832 48.317600
+v -81.165604 6.043322 48.398899
+v -81.207901 11.756192 45.778603
+v -81.851700 10.777292 45.778599
+v -81.595901 8.063222 47.135601
+v -81.245102 9.576412 47.216000
+v -82.179398 9.420222 45.778599
+v -81.790001 5.945003 46.797001
+v -82.315201 7.479053 45.674599
+v -2.626800 48.782795 27.007107
+v -1.469000 48.726894 26.175108
+v -4.026110 49.388996 28.576908
+v -4.078970 48.914898 27.121908
+v -1.679970 48.559597 25.352907
+v -2.645470 49.103096 23.311108
+v -3.593800 49.049095 23.816708
+v -5.909670 49.515297 27.469908
+v -3.661360 48.706295 26.025307
+v -4.547520 49.197395 24.272007
+v -5.743510 49.561497 25.212908
+v -6.986980 50.172596 26.138308
+v -7.697670 50.410496 25.409208
+v -6.973920 49.820995 24.587408
+v -41.453499 48.641796 25.635807
+v -44.170101 47.090595 25.991707
+v -41.795898 47.375496 23.347008
+v -43.201500 46.565697 23.920008
+v -3.237510 49.306297 21.650108
+v -6.295590 48.946598 22.765308
+v -4.500240 48.921898 22.126108
+v -4.995110 49.352497 21.291708
+v -7.926780 48.996796 22.041908
+v -9.613920 50.012096 24.023008
+v -9.027080 49.310394 23.326107
+v -9.376740 49.987396 21.323908
+v -9.285150 49.261196 22.709007
+v -8.503670 49.015495 22.697908
+v -7.911700 49.429794 21.409307
+v -41.108101 47.647297 22.449707
+v -39.114300 48.681797 18.475107
+v -40.911201 46.871895 17.596107
+v -44.582600 43.747395 20.590508
+v -43.232800 44.669598 19.838408
+v -38.070099 48.693996 16.354609
+v -39.774700 47.090595 15.063508
+v -43.212799 43.809895 14.813807
+v -43.544399 43.897297 17.919708
+v -39.686298 46.809895 13.220307
+v -38.321301 47.458199 8.054667
+v -37.882401 47.815399 6.709058
+v -38.185299 47.833099 5.261127
+v -36.584499 48.976101 4.140338
+v -37.490601 49.031399 2.457748
+v -34.994598 50.108200 2.516118
+v -38.217499 48.151600 3.914358
+v -40.418999 46.892200 3.782718
+v -41.693298 44.320301 10.503008
+v -43.441502 43.285496 13.010607
+v -42.208500 44.560501 6.829367
+v -43.394798 43.213501 9.190957
+v -41.038799 45.050999 7.872697
+v -46.795101 46.060192 42.725307
+v -47.552799 46.940491 36.788208
+v -47.660198 46.981991 35.627907
+v -45.924999 49.453194 36.279308
+v -46.263500 48.905796 34.837509
+v -49.620399 43.061092 40.011208
+v -50.934799 41.878094 36.390209
+v -51.811100 39.954292 41.707409
+v -50.840900 41.615791 39.282608
+v -49.784599 44.025295 34.243809
+v -51.387600 41.788795 32.680107
+v -52.746399 39.128994 35.431206
+v -49.507301 44.460297 33.220009
+v -46.283100 48.629196 33.395607
+v -48.275902 45.696297 31.313208
+v -45.161999 47.436695 27.653608
+v -44.667198 49.598297 30.680408
+v -51.950600 40.464397 29.070107
+v -53.180000 38.422398 28.412605
+v -46.891800 45.820595 27.557808
+v -49.233200 42.978294 26.600607
+v -47.795700 45.291298 28.406609
+v -50.194099 43.067696 29.660707
+v -50.792500 41.142597 26.263407
+v -51.697102 40.471096 27.500406
+v -51.684502 39.667595 25.019905
+v -53.048698 38.062298 25.374306
+v -54.781502 35.204292 41.415409
+v -52.993401 38.749092 39.263809
+v -54.731098 35.660492 39.238209
+v -54.753799 35.713291 36.957809
+v -56.363899 33.065994 39.691803
+v -56.252201 33.203392 43.650906
+v -56.870300 32.432693 41.542706
+v -57.409000 31.302692 43.488605
+v -58.869400 29.136892 45.166103
+v -57.938900 30.956995 40.510506
+v -59.833900 28.268192 44.666702
+v -58.711700 29.470993 41.898502
+v -65.014603 29.114792 44.180504
+v -60.864601 28.436394 40.873405
+v -59.800900 28.561892 41.938503
+v -59.356800 29.182594 40.764004
+v -57.113400 32.054291 35.607803
+v -57.663300 31.623693 39.036705
+v -58.507301 30.956095 37.595604
+v -58.331402 31.030094 35.602802
+v -59.392200 29.874594 38.899704
+v -60.766201 29.323694 36.268703
+v -59.939301 29.776194 37.636402
+v -60.852402 28.925194 38.993404
+v -64.923500 28.569294 40.350403
+v -62.292000 28.419294 40.350403
+v -64.923500 28.419294 39.452003
+v -53.152901 38.597195 31.020805
+v -54.901100 35.204296 32.547508
+v -54.994499 35.178997 28.391506
+v -56.065601 33.371796 29.875805
+v -56.232700 33.169296 34.243805
+v -55.751301 33.792095 26.141106
+v -58.182999 31.354395 32.921803
+v -57.031200 32.208397 33.179203
+v -58.222698 31.099695 29.312605
+v -57.443199 31.655796 29.010506
+v -59.531502 30.766594 30.811106
+v -59.475601 30.817493 32.678005
+v -59.172798 30.274996 28.130405
+v -60.790600 29.779493 30.934206
+v -56.771702 32.324196 27.830805
+v -60.361099 28.543396 27.061203
+v -59.458801 28.988497 24.668703
+v -60.171501 28.210596 25.352203
+v -66.271202 29.537792 44.395405
+v -67.637604 29.559292 44.421505
+v -68.933899 28.398092 44.309303
+v -68.988998 28.414692 45.792404
+v -68.994598 29.356293 43.064503
+v -69.601303 28.419292 43.064503
+v -67.637604 29.130194 40.350403
+v -67.637604 29.538292 41.707405
+v -68.994598 29.738293 41.707405
+v -67.637604 29.695292 43.064503
+v -70.355499 28.418793 41.611702
+v -68.994598 29.272295 40.350403
+v -68.932297 28.409294 38.978004
+v -70.443398 28.624895 40.301003
+v -48.222698 40.938396 19.337606
+v -48.923302 41.465595 22.401308
+v -47.511200 42.586697 22.318607
+v -45.201599 42.342796 17.787008
+v -49.768101 39.951897 20.144606
+v -46.026001 41.579697 16.565708
+v -46.518200 41.096996 14.119407
+v -49.024399 40.018597 17.628006
+v -49.017200 39.582497 14.330207
+v -51.171101 38.009197 13.628706
+v -50.195000 39.128998 18.144005
+v -42.581902 43.594898 10.167706
+v -45.680000 41.723595 11.886307
+v -48.576199 40.246101 10.082006
+v -45.801498 42.196602 7.684007
+v -48.626499 40.661999 8.003206
+v -50.657501 39.296700 8.030017
+v -48.747398 39.782696 12.718106
+v -44.606899 44.232498 4.432367
+v -41.556801 45.571400 5.049208
+v -47.454498 42.782200 3.993917
+v -48.765701 41.329102 5.761106
+v -45.344398 45.093601 1.696867
+v -49.259602 42.491001 1.266797
+v -50.044899 40.699001 4.897927
+v -51.868801 39.445599 3.567667
+v -53.682598 36.333096 22.542706
+v -53.011299 36.881596 21.309706
+v -55.155102 34.405598 23.693106
+v -52.864300 36.534595 18.414206
+v -54.464699 34.698795 17.543306
+v -51.727901 37.672794 15.704706
+v -53.280998 35.998997 13.527306
+v -54.745701 34.526196 19.994905
+v -54.797001 34.526196 20.673407
+v -56.322102 32.598495 21.924505
+v -56.520599 32.096294 17.126106
+v -57.823601 30.768597 23.430805
+v -58.568001 29.589195 19.954605
+v -56.472500 32.273098 13.549006
+v -58.997799 29.161299 14.651605
+v -59.036598 29.327698 12.658504
+v -51.577499 37.735695 12.048606
+v -53.301498 36.110497 11.986606
+v -55.458698 34.565498 7.264006
+v -52.750500 37.473801 7.644866
+v -53.407101 37.809101 3.500726
+v -55.280499 35.498501 4.049806
+v -54.134499 37.480701 0.233117
+v -58.510899 31.287001 5.406855
+v -56.254398 32.963902 10.647905
+v -59.716000 29.375698 7.587085
+v -59.737499 29.945700 -0.190946
+v -59.856602 29.624500 4.473885
+v -58.354698 32.075100 0.373023
+v -60.880402 27.864492 43.443905
+v -60.834301 28.026093 45.356205
+v -62.241600 27.873392 44.496502
+v -62.209400 27.883192 43.064503
+v -62.209400 28.175192 41.707405
+v -62.195599 28.419294 40.124504
+v -63.604801 28.419392 43.060802
+v -62.209400 27.985195 34.922302
+v -62.209400 28.419294 37.453102
+v -61.973000 28.419294 36.279305
+v -63.144501 27.062294 34.922302
+v -63.566502 26.722195 34.922302
+v -64.930702 27.091894 36.265404
+v -64.923500 27.836195 37.636402
+v -62.247101 28.419294 37.631905
+v -61.727501 28.419294 33.565304
+v -62.578300 27.145294 33.600803
+v -61.661098 28.419294 32.208202
+v -62.445099 27.066093 32.208702
+v -63.566502 26.153294 33.565304
+v -63.599201 25.651495 31.031004
+v -64.856400 25.691395 33.642002
+v -61.508598 28.419294 30.851204
+v -62.313599 27.080093 30.846603
+v -61.690701 27.729595 29.591703
+v -63.073002 25.705294 29.494204
+v -64.923500 25.460295 32.208202
+v -64.923500 24.840294 30.851204
+v -63.566502 24.881195 29.494204
+v -64.923500 24.348295 30.150904
+v -63.696602 24.499495 29.309404
+v -64.923500 23.862194 29.494204
+v -62.173000 26.569996 28.009203
+v -62.745701 25.689896 28.121803
+v -62.202599 25.782495 25.851404
+v -63.500999 23.566996 26.802704
+v -63.566502 23.978296 28.137104
+v -64.111298 22.969397 27.297903
+v -64.894501 22.595596 27.174204
+v -64.923500 23.019196 28.137104
+v -62.749001 24.849195 25.875904
+v -64.229202 22.110897 23.916603
+v -64.961899 21.665297 24.558603
+v -69.610901 27.062292 44.421505
+v -70.344200 26.753592 45.763603
+v -69.986504 27.062292 43.064503
+v -70.512199 27.068293 41.879505
+v -70.423500 25.899992 44.418404
+v -70.840599 25.328892 41.576405
+v -71.027100 27.062294 40.350403
+v -71.203697 25.705294 40.350403
+v -72.368202 24.499392 44.641903
+v -70.863800 24.932993 42.883404
+v -71.643600 24.346292 43.228504
+v -72.914200 23.530493 43.220303
+v -73.408096 22.991293 44.421505
+v -73.744003 22.882893 42.765205
+v -70.403603 25.787792 43.010506
+v -71.276100 23.985792 41.294903
+v -71.255096 24.531994 40.465004
+v -71.766800 23.581093 42.077003
+v -71.787201 23.148193 39.995903
+v -72.485298 22.581095 40.457806
+v -66.294296 27.115194 36.230804
+v -66.280502 27.898294 37.636402
+v -64.923500 26.178295 34.922302
+v -66.280502 26.247293 34.922302
+v -67.698303 27.131393 35.847202
+v -69.000099 27.057295 36.112705
+v -68.994598 27.573195 37.636402
+v -69.991699 25.705294 36.279305
+v -70.399399 24.348795 36.034904
+v -70.373703 26.529194 38.036304
+v -69.657097 27.062294 37.636402
+v -70.826897 27.062294 38.993404
+v -70.351601 27.611294 38.993404
+v -71.405602 25.705294 38.993404
+v -71.766899 23.779394 38.983704
+v -71.545197 24.176794 37.604103
+v -72.477898 23.010794 38.271706
+v -72.715103 22.991795 37.638203
+v -71.720497 22.996593 36.067303
+v -72.014900 22.991295 36.279305
+v -70.280602 23.810694 34.950703
+v -70.848801 22.991295 34.922302
+v -73.788902 21.843292 44.820904
+v -74.098801 22.356693 42.754005
+v -74.638000 21.421293 41.905403
+v -74.616203 20.484993 43.206203
+v -75.182701 19.511793 41.579903
+v -75.050697 19.642591 43.246704
+v -74.157501 22.059893 41.101105
+v -73.921997 21.829994 38.312405
+v -74.401199 21.637894 39.879704
+v -75.176102 20.835594 37.900105
+v -74.943298 21.072393 40.853806
+v -75.657204 19.912895 39.180603
+v -73.957703 21.959194 37.627804
+v -73.065697 22.443193 36.279305
+v -71.653198 22.346294 34.599205
+v -73.027702 21.715994 34.771603
+v -74.080200 21.591894 36.271503
+v -75.477600 20.277294 36.279305
+v -75.671600 20.261494 37.894604
+v -74.441299 19.959394 34.378002
+v -75.661903 19.208593 39.985203
+v -76.105301 18.886793 44.924503
+v -76.407700 18.038893 42.546005
+v -76.668297 17.530293 43.722805
+v -77.188599 17.152292 41.738605
+v -76.048698 18.202795 40.381104
+v -76.208298 19.628794 36.302204
+v -76.362000 18.920195 37.636402
+v -77.061096 18.542595 35.801903
+v -76.357002 19.264494 35.543304
+v -77.280098 17.889793 36.033703
+v -76.640099 17.563194 37.636402
+v -77.147003 18.364994 34.772804
+v -77.780197 17.629595 34.631004
+v -66.104698 25.711695 33.587303
+v -66.280502 25.447294 32.208202
+v -67.638702 25.635695 32.545605
+v -70.343903 24.083195 33.233303
+v -69.830704 25.705294 34.922302
+v -69.591103 25.705294 33.565304
+v -69.006599 25.962894 33.452503
+v -68.994598 25.309294 32.208202
+v -68.883400 24.326195 30.117704
+v -67.562401 24.853495 30.910904
+v -67.603500 24.294594 29.792004
+v -70.280502 24.318794 32.195305
+v -69.607002 24.347195 30.639303
+v -70.334702 23.971294 30.601704
+v -70.743599 22.991295 33.565304
+v -70.763496 23.676394 30.800203
+v -70.966003 22.991295 32.208202
+v -71.503304 23.076694 29.871304
+v -70.775902 23.684294 29.351904
+v -66.020599 22.924097 27.822603
+v -66.280502 23.913294 29.494204
+v -67.637604 23.528296 28.137104
+v -69.385803 23.928196 28.730703
+v -69.783401 23.542196 27.456903
+v -70.248596 22.420397 24.768404
+v -68.273300 23.017296 26.871004
+v -71.724503 22.961197 28.557804
+v -71.160004 23.057695 27.416405
+v -71.772301 21.995794 32.749405
+v -73.308998 20.767895 32.007004
+v -71.785698 21.925295 31.662205
+v -72.595703 22.068396 28.739004
+v -73.246101 20.665194 30.299303
+v -75.086304 17.872595 30.763803
+v -74.246300 19.330395 29.629105
+v -65.832298 22.158297 26.187504
+v -65.935204 21.581495 25.081404
+v -67.692398 21.517496 24.475904
+v -68.973099 22.032097 24.603403
+v -73.096497 21.788496 27.137505
+v -72.179199 21.761496 25.076603
+v -74.048203 20.563496 26.947603
+v -71.267998 21.920496 23.543304
+v -72.642097 21.068697 22.745203
+v -73.216400 20.520897 24.498404
+v -74.025703 19.231796 25.058504
+v -74.452301 19.664797 28.115805
+v -75.389900 18.526997 26.969105
+v -74.562302 19.706396 26.645803
+v -75.830597 17.216396 25.844902
+v -74.421097 18.074196 24.084805
+v -74.954300 19.175694 33.911804
+v -75.883797 18.000494 32.537003
+v -77.771004 17.255995 33.215004
+v -77.656601 16.701895 31.674002
+v -76.920799 16.221693 44.417904
+v -77.010498 16.628492 43.229702
+v -77.110397 15.089993 44.699505
+v -77.608398 13.492192 44.421505
+v -77.368500 13.492193 43.064503
+v -77.189400 14.849194 43.064503
+v -78.493797 12.582293 44.421505
+v -78.493797 12.134294 43.486805
+v -78.280403 12.029193 43.073402
+v -81.266098 12.191792 44.638905
+v -79.850899 12.330293 44.421505
+v -79.839203 11.862494 43.127003
+v -77.684196 13.492193 41.707405
+v -77.573196 14.849194 41.707405
+v -78.220802 14.849194 40.350403
+v -78.517097 13.408093 40.249905
+v -78.349899 12.013393 41.690605
+v -78.890503 12.134294 40.350403
+v -76.351898 17.563194 38.993404
+v -77.127998 16.204794 38.991104
+v -77.354599 16.713594 40.810104
+v -77.001297 16.206194 37.636402
+v -77.662201 14.872694 37.643803
+v -78.187202 16.801895 34.676403
+v -77.256401 16.019995 36.753403
+v -79.387199 12.134294 38.993404
+v -78.955704 13.492194 37.636402
+v -79.670898 12.134295 37.636402
+v -78.499496 14.613794 34.868702
+v -78.713997 13.559295 36.069305
+v -77.829903 14.849195 36.279305
+v -78.845200 13.492194 34.922302
+v -81.207901 11.789193 43.064503
+v -79.850899 11.276194 41.707401
+v -79.850899 10.912193 40.350399
+v -79.989601 10.777293 40.350399
+v -82.619102 10.938393 44.424900
+v -82.811897 9.484492 44.551701
+v -82.711502 10.956293 43.002602
+v -81.216599 10.769593 41.655201
+v -82.546303 9.399834 41.743000
+v -83.123802 9.420223 43.064499
+v -81.208298 9.418943 40.351601
+v -82.959297 8.063223 43.064499
+v -82.564903 8.949273 41.707401
+v -82.593002 7.629513 41.730598
+v -81.800697 8.063223 40.350399
+v -82.738197 6.706233 43.064499
+v -81.939003 6.706234 40.350399
+v -79.880997 10.827094 37.539299
+v -79.878403 10.765093 38.965698
+v -80.238899 9.420224 37.636398
+v -80.483902 9.420223 38.993401
+v -79.563202 12.134295 36.279305
+v -80.088898 9.420224 36.279301
+v -81.207901 6.706234 38.505699
+v -80.967796 6.706234 37.636398
+v -80.422501 8.063224 34.922298
+v -80.840500 6.706234 34.922298
+v -75.907799 16.421097 29.020802
+v -75.938797 16.873894 30.591002
+v -75.307602 17.370996 28.795603
+v -75.020203 16.698296 23.653702
+v -76.326698 15.828696 25.051903
+v -75.794601 15.248996 23.452301
+v -78.574402 16.108894 32.852505
+v -78.853600 15.339495 32.599205
+v -76.796898 15.963395 29.581802
+v -78.644402 15.901996 31.165401
+v -79.623596 14.826796 30.522303
+v -78.971901 15.458395 30.054602
+v -79.247200 14.994795 29.219501
+v -78.993202 13.257995 33.596905
+v -79.314003 14.201995 31.891401
+v -79.288101 12.134295 34.922302
+v -79.696999 11.852695 31.911402
+v -80.814499 12.946495 29.797503
+v -79.849701 14.695895 29.264002
+v -80.844902 13.696995 28.717602
+v -77.612503 15.221895 28.551102
+v -76.229897 16.265196 26.913702
+v -76.947800 15.276996 27.086102
+v -77.128304 14.758196 24.857101
+v -76.846703 14.562496 23.969501
+v -79.175499 13.774695 26.347702
+v -77.912300 14.337397 26.188902
+v -80.698700 13.543895 27.129301
+v -81.299103 13.225095 27.461903
+v -78.437698 13.667397 24.609001
+v -80.258301 12.708897 25.403402
+v -81.784103 12.432295 28.475002
+v -82.305000 12.103095 26.482403
+v -82.686096 11.681995 27.213001
+v -79.670700 10.407495 33.489700
+v -80.410797 9.420224 32.208199
+v -79.861198 10.781394 32.221298
+v -80.876503 10.326895 30.898802
+v -79.668198 10.457294 34.876999
+v -81.865601 8.063225 30.851202
+v -81.502899 7.074095 32.088402
+v -83.776100 9.411375 28.213102
+v -82.384300 6.623345 30.614902
+v -82.997299 10.253096 28.805601
+v -83.146599 6.706235 29.494202
+v -81.527298 11.729095 29.509401
+v -83.050301 10.960595 28.012602
+v -82.238899 11.842297 25.603502
+v -83.625603 10.698696 25.423702
+v -81.074501 11.650496 24.442501
+v -82.570900 10.775597 24.141401
+v -84.231499 9.625976 27.114801
+v -83.921997 10.121296 24.066002
+v -84.506500 9.420226 25.423101
+v -84.738998 9.420226 24.066002
+v -84.021301 8.154785 28.131502
+v -83.988403 5.825925 28.264000
+v -84.692802 8.063225 26.780102
+v -84.699600 6.706236 26.780102
+v -84.939201 8.063226 25.423101
+v -85.260498 6.373656 25.217201
+v -85.583702 6.706236 24.066002
+v -85.277702 8.111997 24.060902
+v -59.871899 28.219797 20.722404
+v -60.626499 27.213696 19.076004
+v -62.839401 23.838997 17.685204
+v -61.239201 26.049597 21.864103
+v -62.570301 24.674397 23.720804
+v -64.113800 22.029696 23.036903
+v -62.238201 24.395796 21.352003
+v -63.762299 21.976797 21.109903
+v -63.539200 22.173595 19.323204
+v -60.135799 27.645298 16.432703
+v -61.804600 25.749397 16.858904
+v -61.596401 25.784899 14.392303
+v -63.885502 22.142097 15.949203
+v -63.390499 23.115698 11.513504
+v -64.911201 20.474895 22.386204
+v -64.462799 20.166096 20.256403
+v -64.512299 19.822296 17.655704
+v -64.902603 19.869099 13.803503
+v -65.547600 18.460697 14.653303
+v -61.176201 26.747898 10.799805
+v -61.252300 27.153399 7.955314
+v -62.886902 24.093498 9.562744
+v -61.796799 26.383699 5.237224
+v -61.092201 27.655899 2.268695
+v -62.523399 25.026199 5.406854
+v -62.515099 25.026199 3.371274
+v -64.334702 21.607798 11.665904
+v -65.040398 20.268198 10.022202
+v -64.066704 21.974098 7.070044
+v -68.994598 21.142296 22.709003
+v -67.485100 20.357697 22.728704
+v -69.027496 20.329897 21.271704
+v -65.537399 20.025396 22.359804
+v -64.824997 19.887596 20.947104
+v -66.263702 20.054096 22.666204
+v -67.707001 19.415697 21.028404
+v -65.660500 18.910496 19.852404
+v -66.266197 18.818497 20.295504
+v -65.969101 18.143196 18.432804
+v -67.452698 18.264196 19.461603
+v -67.553200 17.347095 18.121302
+v -68.994598 18.920197 19.482504
+v -68.957199 17.822197 18.300203
+v -70.330597 19.037197 18.598003
+v -70.357903 21.392796 22.286604
+v -71.401001 20.753296 20.787704
+v -71.662498 20.245996 19.309004
+v -70.383797 20.271496 20.131304
+v -72.312302 20.288996 19.226204
+v -74.393303 18.491596 22.951904
+v -73.687401 20.113396 22.295504
+v -73.115997 19.774696 17.735403
+v -73.382301 20.363596 21.284304
+v -74.517700 19.309496 20.465603
+v -73.732201 19.448898 17.462803
+v -74.357903 18.979696 17.833504
+v -75.822304 17.067596 18.637602
+v -75.491997 17.536997 20.106302
+v -66.123703 17.655298 16.801004
+v -70.295700 17.584398 17.285404
+v -66.931396 16.419899 14.383003
+v -71.787003 18.937399 17.279903
+v -72.242996 19.691095 17.694803
+v -73.162498 18.909399 16.216303
+v -73.792099 19.009798 16.204603
+v -74.913002 18.189798 17.443604
+v -75.093002 17.827497 15.831303
+v -74.439301 18.649199 15.953903
+v -74.417801 17.729298 14.546702
+v -75.081398 17.563198 14.566803
+v -66.717300 16.929499 8.953373
+v -65.520302 19.838799 7.610853
+v -67.344704 16.184298 6.002663
+v -66.609200 17.384001 4.049803
+v -65.350197 19.614000 4.558693
+v -66.099197 17.763000 -0.043748
+v -75.130096 16.287395 22.713303
+v -75.890404 14.296296 22.598701
+v -76.029900 16.389795 19.189201
+v -75.738899 15.097697 20.345602
+v -68.819397 15.378197 15.306403
+v -67.242104 16.816998 17.028801
+v -67.440598 16.077799 15.572203
+v -68.909302 16.256998 16.644302
+v -70.378601 16.192497 15.957203
+v -67.667702 15.236598 13.327003
+v -68.303101 15.162698 14.525203
+v -70.315201 14.873899 14.516303
+v -70.027603 14.229198 13.720502
+v -75.566399 16.678799 16.308401
+v -73.086502 17.559698 15.214403
+v -71.639000 17.114597 15.954303
+v -71.708603 16.206198 15.174903
+v -75.776398 16.271599 14.572803
+v -74.445503 16.157598 13.410502
+v -74.819298 16.206198 13.209803
+v -75.784500 16.211899 13.207503
+v -75.779800 16.503199 13.888303
+v -72.917297 16.254599 14.406703
+v -73.089104 14.845198 13.233803
+v -71.697403 14.867599 13.933203
+v -71.708603 14.234298 13.209802
+v -76.164703 15.433097 18.998402
+v -77.151604 12.870496 22.134901
+v -75.976700 13.492196 21.352001
+v -75.779800 13.972197 21.352001
+v -78.267700 13.100996 23.042603
+v -79.499100 11.674796 21.382603
+v -79.494400 12.459396 22.999203
+v -75.880898 13.492197 19.994902
+v -76.110703 13.492197 18.637901
+v -76.239197 12.134297 19.994902
+v -76.414597 15.157897 18.001202
+v -76.450302 14.839697 16.584902
+v -76.336098 14.927697 15.929502
+v -76.721703 14.852598 13.210303
+v -76.451500 14.849198 14.566803
+v -76.549400 13.492197 17.280901
+v -76.183296 12.134297 18.637901
+v -76.637299 12.121897 17.240501
+v -77.144699 13.476497 15.141102
+v -77.172699 12.956697 15.792902
+v -77.559601 13.492198 13.209802
+v -78.042503 12.134298 14.566802
+v -78.492897 12.100898 13.167501
+v -81.754601 10.540396 23.101103
+v -80.483803 11.241796 21.671402
+v -77.157402 10.759297 19.806402
+v -76.706497 10.777297 18.637901
+v -78.493797 10.573197 19.994902
+v -77.136803 10.199297 18.637901
+v -78.493401 9.424187 18.605501
+v -79.678703 11.038796 20.527502
+v -81.239998 10.454897 20.317202
+v -80.543701 10.216497 19.434101
+v -82.758598 9.514037 20.458002
+v -82.576401 9.784476 22.103203
+v -82.194801 9.593867 18.914501
+v -83.984299 9.619017 22.749601
+v -83.986504 8.789426 20.990202
+v -85.278999 8.970276 22.709002
+v -85.952797 8.063226 22.709002
+v -85.279900 8.386716 21.356302
+v -86.621696 7.545957 21.360003
+v -86.664200 6.669676 22.276602
+v -84.469299 7.738767 19.018002
+v -83.810204 8.415338 18.254301
+v -85.278999 7.369256 19.994902
+v -86.641403 6.809937 19.945702
+v -85.402496 6.642457 18.587202
+v -77.053902 10.625097 17.259102
+v -77.705803 10.777297 15.923802
+v -77.879204 9.420227 17.280901
+v -78.339401 9.383607 15.942302
+v -79.850899 9.420227 18.583002
+v -78.498802 10.815698 14.554902
+v -79.102600 10.777298 13.209802
+v -78.984703 9.420228 14.566802
+v -79.696899 8.951108 13.229502
+v -81.411797 9.261467 18.272602
+v -79.850899 8.372247 17.280901
+v -79.630501 7.987547 15.922601
+v -79.850899 8.063227 16.682102
+v -78.493797 8.913267 17.280901
+v -81.226402 7.262078 15.950301
+v -81.202103 8.077578 17.083502
+v -79.794800 7.969178 14.566701
+v -83.525398 8.122617 17.169003
+v -83.382103 6.380918 14.954601
+v -84.968399 7.273737 17.009003
+v -84.575699 7.276427 16.418802
+v -85.330902 6.296937 15.565301
+v -86.140900 5.838198 16.033899
+v -67.630997 15.655499 8.241282
+v -68.308502 14.744899 7.732742
+v -68.061501 14.564298 10.846402
+v -67.637604 15.527298 9.138702
+v -68.534599 13.969498 11.242202
+v -68.342499 14.420698 12.843402
+v -68.929703 13.927999 12.620302
+v -69.981201 13.576398 12.498502
+v -70.012901 12.769498 10.481602
+v -69.487198 12.299199 7.940452
+v -70.548500 10.538899 8.090152
+v -69.777802 12.348198 9.304852
+v -74.422699 14.849198 12.598603
+v -75.779800 14.849198 12.147902
+v -71.456802 12.817398 11.204802
+v -73.065697 12.134298 10.846202
+v -73.071800 13.402498 11.931802
+v -71.869301 11.791298 10.177102
+v -73.956299 13.497698 11.855502
+v -75.691803 13.641698 11.504402
+v -74.422699 12.134298 10.936702
+v -69.016602 13.424700 2.838672
+v -69.267601 13.111599 5.593992
+v -69.824699 11.884000 2.758922
+v -73.065697 11.603298 10.495702
+v -75.779800 11.411298 10.495702
+v -77.104103 11.808298 10.522002
+v -71.050400 10.847998 9.042432
+v -70.636902 11.943198 9.720012
+v -73.065697 10.777298 10.038802
+v -73.063904 8.088748 8.841141
+v -71.677498 8.368769 7.934571
+v -72.994904 6.670898 8.049081
+v -75.779800 6.706239 9.369901
+v -75.779800 9.420228 9.956102
+v -70.141800 10.659299 6.611072
+v -70.984901 7.874999 4.404331
+v -71.109901 8.056879 6.486742
+v -72.540802 5.875179 6.794621
+v -77.136803 14.145298 11.852702
+v -77.727600 13.492198 11.852702
+v -78.669502 12.145798 11.852901
+v -78.493797 12.134298 10.980402
+v -78.485100 11.377098 10.339802
+v -79.365303 10.777298 11.852702
+v -79.866501 9.478148 11.949902
+v -79.165001 10.777298 10.495702
+v -79.792801 9.667789 10.439802
+v -78.493797 9.420228 9.729902
+v -80.628403 8.063228 11.852701
+v -80.784798 8.063228 10.495701
+v -80.157402 8.063228 13.209801
+v -81.207901 7.146238 11.852701
+v -78.493797 8.063228 9.508101
+v -79.850899 8.063228 9.628601
+v -79.796997 6.719539 9.557211
+v -81.207901 7.262268 10.495701
+v -81.236298 6.717098 13.202701
+v -81.453598 6.706238 11.852701
+v -81.337997 6.711608 10.326301
+v -21.498400 -15.005718 113.708000
+v -10.642200 -15.005719 119.428001
+v -10.642200 -8.812760 121.772003
+v -15.014900 -4.149740 121.772003
+v -21.498400 -4.149740 119.456001
+v -42.557800 1.278242 110.916000
+v -32.354698 -4.149739 113.240997
+v -32.383400 1.325661 116.327003
+v -37.782799 1.278242 113.680000
+v -43.210999 -15.005717 104.086998
+v -32.354698 -5.749778 110.916000
+v -37.619900 -4.149738 110.916000
+v -43.210999 -4.149738 107.981003
+v -37.782799 -4.076738 110.916000
+v -43.210999 1.278242 110.541000
+v -21.498400 -24.023718 110.915993
+v -4.177820 -15.005720 121.772003
+v -23.920099 -15.005718 110.916000
+v -21.498400 -36.718815 103.464989
+v -48.639099 1.278243 107.117996
+v -51.956299 1.278243 105.487000
+v -48.639099 -2.570757 105.487000
+v -56.781300 3.992233 103.122002
+v -57.341301 3.992233 102.773003
+v -58.089901 4.127543 102.209000
+v -60.904499 5.242664 99.181396
+v -59.109402 3.925704 101.369003
+v -56.781300 1.278243 103.511002
+v -54.067200 1.278243 104.744003
+v -54.067200 3.992233 104.637001
+v -58.123501 1.278243 102.773003
+v -59.495399 1.278243 101.861000
+v -60.459702 4.002304 100.027000
+v -62.040600 1.007914 100.039001
+v -59.495399 -1.435747 102.830002
+v -54.067200 -4.149737 104.649002
+v -59.495399 -1.268757 102.773003
+v -62.209400 -1.435747 101.635002
+v -59.634201 -1.435747 102.773003
+v -63.321999 -0.203507 99.958801
+v -64.695503 -1.484206 100.042999
+v -59.495399 -4.149737 103.499001
+v -62.209400 -3.417737 102.773003
+v -62.209400 -4.149737 103.144997
+v -64.923500 -3.839737 102.773003
+v -63.008701 4.376814 97.252197
+v -64.881897 2.100384 96.087601
+v -63.809200 6.975755 94.887901
+v -64.918800 4.212325 94.837997
+v -62.307301 2.845564 98.733498
+v -63.624199 2.797594 97.332901
+v -63.558800 1.049364 98.559700
+v -64.404198 1.278244 97.345497
+v -65.069901 0.778854 96.421799
+v -64.308998 -0.078751 98.702499
+v -64.922401 -0.047868 97.393303
+v -64.869102 -1.100236 99.102203
+v -48.208500 -4.149737 105.487000
+v -48.639099 -4.149737 105.388000
+v -54.067200 -9.577777 104.109001
+v -54.067200 -15.005716 101.855003
+v -59.495399 -6.863787 103.598000
+v -59.496799 -9.699297 102.855003
+v -62.209400 -6.863787 103.726997
+v -64.923500 -4.149737 103.004997
+v -59.495399 -12.291717 101.055000
+v -56.867199 -15.005716 100.059998
+v -62.209400 -12.291717 100.642998
+v -62.209400 -12.619816 100.059998
+v -59.495399 -13.268716 100.059998
+v -62.209400 -13.607717 97.345497
+v -59.495399 -15.005716 97.802498
+v -59.916801 -15.005716 97.345497
+v -64.529198 -12.291717 97.345497
+v -64.932198 -12.273716 100.060997
+v -61.643700 -15.005715 94.631500
+v -62.209400 -14.442716 94.631500
+v -64.087700 -12.291716 94.631500
+v -64.923500 -13.819815 89.203499
+v -64.236000 -15.005714 89.203499
+v -65.414001 -2.792737 101.416000
+v -66.183701 -4.291947 102.771004
+v -64.964897 -2.781507 101.714996
+v -66.311501 -3.303297 101.434998
+v -67.098602 -4.149736 100.059998
+v -67.541000 -4.302137 101.388000
+v -65.522202 2.635235 94.631500
+v -66.175903 4.053875 92.949303
+v -66.552200 3.108995 92.408699
+v -66.582001 4.502795 91.809097
+v -65.724503 1.278245 94.631500
+v -66.756104 1.219895 92.052399
+v -67.187302 2.634755 90.561501
+v -67.520500 1.508835 90.118103
+v -67.657997 2.875906 89.317902
+v -65.336601 -1.435746 97.345497
+v -66.119797 -0.078750 94.214996
+v -65.699303 -1.435746 95.988503
+v -65.779404 -2.792736 98.702499
+v -66.117500 -2.949116 100.047997
+v -66.227997 -3.934466 98.546898
+v -66.257698 -4.705946 97.349098
+v -65.732498 -2.792736 97.345497
+v -66.002998 -2.792736 95.988503
+v -66.286003 -4.468886 96.002800
+v -66.434402 -2.863355 94.915604
+v -66.673897 -4.059585 94.449097
+v -66.898102 -0.078750 91.917503
+v -66.743103 -1.435745 93.274498
+v -67.130997 -2.370195 91.885597
+v -67.531197 -0.757278 90.522797
+v -68.493599 0.474046 88.955299
+v -68.644096 -1.371355 89.072502
+v -67.637604 -2.792735 90.437500
+v -67.054398 -4.149735 91.917503
+v -67.637604 -4.149735 90.282501
+v -67.637604 -6.863787 103.199997
+v -64.923500 -6.863787 103.972000
+v -67.601402 -5.571367 102.771004
+v -68.195801 -6.863787 102.773003
+v -67.888496 -5.321186 99.972298
+v -68.351501 -5.506787 101.416000
+v -68.836304 -6.863787 101.416000
+v -68.518402 -6.863786 100.059998
+v -64.923500 -9.577777 103.533997
+v -67.835297 -9.620197 102.914001
+v -68.389198 -8.220778 102.773003
+v -69.089401 -8.182817 101.406998
+v -68.913399 -9.558736 101.391998
+v -68.697800 -9.577776 100.059998
+v -68.913300 -8.234326 100.211998
+v -64.923500 -10.788817 102.773003
+v -67.637604 -9.919757 102.773003
+v -67.637604 -11.095817 100.059998
+v -67.053802 -5.506786 98.702499
+v -66.419502 -5.506786 97.345497
+v -66.581398 -6.900166 97.387703
+v -66.299698 -5.566606 96.023804
+v -66.385201 -5.635755 94.808998
+v -66.195297 -6.749286 96.332298
+v -66.096802 -6.863785 94.631500
+v -66.433098 -8.156146 97.171600
+v -67.819099 -8.236406 98.787102
+v -67.637604 -7.587786 98.702499
+v -67.770203 -9.581136 98.713699
+v -66.309196 -9.601457 97.100998
+v -65.947800 -8.220776 95.988503
+v -65.752800 -8.220776 94.631500
+v -65.664703 -9.577775 95.988503
+v -66.429100 -6.220715 93.123299
+v -66.828102 -5.506785 91.917503
+v -66.539299 -6.863785 91.917503
+v -67.637604 -6.863785 89.535500
+v -66.892998 -9.577774 89.203499
+v -65.676201 -9.577775 91.917503
+v -67.637604 -7.629774 89.203499
+v -67.859299 -6.863784 89.203499
+v -64.923500 -12.066816 97.345497
+v -65.375504 -9.577775 94.631500
+v -64.923500 -10.851715 94.631500
+v -43.210999 -35.241814 89.203491
+v -67.004898 4.533005 89.691002
+v -67.654099 4.544236 88.246696
+v -69.661903 5.460986 84.170403
+v -69.158302 2.979116 86.956398
+v -69.014198 1.256396 87.927200
+v -70.085701 1.632916 86.243500
+v -70.856102 1.938036 84.981300
+v -71.115700 3.797596 82.816002
+v -71.570297 2.532516 83.503304
+v -72.955299 1.044116 83.841599
+v -70.811897 5.349226 82.418404
+v -71.718002 5.087937 80.577904
+v -71.708603 3.992237 81.668900
+v -72.471298 5.432907 78.335197
+v -72.980202 4.013227 79.158203
+v -73.069298 4.298017 78.386497
+v -73.065697 2.994247 81.061401
+v -72.376297 2.697677 82.442902
+v -72.946602 2.220387 82.616302
+v -74.321297 2.002917 80.972099
+v -74.294899 1.203847 82.150398
+v -74.412102 2.449637 78.340500
+v -74.347000 2.331347 79.755402
+v -75.064796 1.278247 79.704399
+v -74.791298 1.278247 81.061401
+v -75.065399 1.278247 78.347298
+v -69.496201 -0.078749 87.846603
+v -70.964401 -1.564104 86.669098
+v -68.651001 -2.781695 89.087097
+v -70.911499 -2.792734 86.819702
+v -73.327499 -0.014418 83.964600
+v -73.478600 -1.339734 84.108704
+v -69.809303 -4.108354 87.804802
+v -71.697403 -4.148334 85.950302
+v -73.040497 -2.789014 84.678902
+v -72.716599 -4.135024 84.895203
+v -73.592903 -4.149734 83.775497
+v -74.470398 0.186571 82.491096
+v -75.225899 -0.078748 81.061401
+v -74.582603 -1.445323 82.683701
+v -75.304100 -1.435743 81.061401
+v -75.489601 -0.078748 79.704399
+v -75.568604 -1.444283 79.716698
+v -75.516403 -0.078748 78.347298
+v -73.839897 -2.792734 83.775497
+v -74.565903 -2.804333 82.662399
+v -75.177200 -2.792733 81.061401
+v -74.414001 -4.108654 82.389702
+v -74.552399 3.992238 75.633301
+v -75.779800 3.992238 73.806801
+v -75.503799 1.278248 75.633301
+v -75.779800 0.293262 75.633301
+v -75.779800 -1.435742 77.044800
+v -75.779800 1.278248 75.083199
+v -75.779800 -4.149733 76.545898
+v -75.218498 -4.100473 79.732201
+v -75.622597 -2.792733 78.347298
+v -76.038200 5.349228 72.919197
+v -77.366997 3.992238 71.562202
+v -78.377296 5.440908 69.716202
+v -78.493797 4.001268 70.205101
+v -78.493797 2.635298 70.845596
+v -79.203697 5.283009 68.826897
+v -78.404198 1.276848 71.446800
+v -77.188599 1.392198 72.925499
+v -77.529800 -1.435742 72.919197
+v -76.064903 -1.435742 75.633301
+v -81.346298 -1.537181 67.638199
+v -79.547501 -1.435741 70.205101
+v -80.838600 1.265189 68.858803
+v -77.191704 -4.149732 72.919197
+v -78.493797 -1.435742 71.597198
+v -78.482002 -4.166391 70.692703
+v -80.504799 -4.149731 67.491096
+v -81.912903 1.278249 67.491096
+v -68.966599 -9.577774 86.489502
+v -67.637604 -9.577774 88.200500
+v -70.347702 -6.840344 86.479897
+v -70.351601 -9.577773 84.601402
+v -72.641403 -6.863784 83.775497
+v -73.065697 -5.841754 83.775497
+v -74.884697 -4.149734 81.061401
+v -73.869102 -6.863783 81.061401
+v -70.879501 -9.577773 83.775497
+v -73.065697 -6.863783 83.019600
+v -73.065697 -8.445753 81.061401
+v -72.412903 -9.577773 81.061401
+v -73.065697 -9.577773 79.560303
+v -74.683800 -6.863783 78.347298
+v -64.923500 -15.005714 88.121498
+v -67.515602 -15.005713 83.775497
+v -70.351601 -10.719713 83.775497
+v -70.351601 -15.005713 79.300903
+v -70.856903 -15.005713 78.347298
+v -73.489998 -9.577772 78.347298
+v -75.779800 -9.020761 72.919197
+v -73.142197 -15.005712 72.919197
+v -75.569298 -9.577771 72.919197
+v -75.779800 -9.577771 72.223000
+v -76.015900 -4.149733 75.633301
+v -83.770203 5.323050 63.347401
+v -84.382896 4.751640 62.049500
+v -83.891098 4.060110 63.285301
+v -82.491096 2.889999 66.329300
+v -83.208099 3.992239 64.777000
+v -83.433098 2.635240 64.777000
+v -82.650597 1.328729 66.386101
+v -84.778702 4.112050 60.738602
+v -85.081497 4.982410 59.339500
+v -84.976601 5.349230 57.991798
+v -84.845703 3.992240 57.991798
+v -84.712402 5.349231 56.634800
+v -84.621902 3.992241 56.634800
+v -84.294197 2.635240 62.062901
+v -81.207901 -4.149731 66.208298
+v -82.783501 -1.435741 64.777000
+v -81.839302 -4.149731 64.777000
+v -82.629204 -4.149730 62.062901
+v -83.552696 -1.435740 62.062901
+v -84.492996 1.278250 59.348900
+v -83.921997 -0.175730 62.062901
+v -84.084900 1.261160 62.686001
+v -83.891899 -1.259350 59.341702
+v -83.921997 -0.606759 56.634800
+v -83.751297 -1.435739 56.634800
+v -82.993896 -4.149730 59.348900
+v -83.003403 -4.149729 56.634800
+v -80.868301 5.349232 51.206699
+v -81.230103 3.379082 51.167900
+v -81.209297 5.706172 52.538502
+v -82.543404 5.536061 53.909302
+v -83.921600 5.348741 55.115898
+v -83.921997 6.045221 55.277802
+v -83.921997 3.992241 55.008999
+v -82.815804 3.808161 53.632099
+v -82.363197 2.479182 52.666302
+v -83.223602 2.635241 53.920700
+v -83.921997 1.278251 55.346100
+v -83.293503 1.278251 53.920700
+v -84.276901 1.278251 56.634800
+v -80.942902 3.992242 49.849602
+v -81.176697 2.529102 49.970798
+v -82.120499 5.349232 45.778599
+v -81.163399 3.982472 48.427399
+v -81.566597 3.992242 47.135601
+v -81.933098 1.278252 51.206699
+v -83.271698 -1.435739 53.920700
+v -82.760201 -4.149729 53.920700
+v -82.543098 -1.435738 51.206699
+v -82.443001 -4.149728 51.206699
+v -81.560402 1.278252 49.849602
+v -81.509598 1.278252 48.492599
+v -82.042099 -1.435738 48.492599
+v -82.090797 -4.149728 48.492599
+v -77.300697 -9.577771 67.491096
+v -80.173500 -9.577769 56.634800
+v -81.207901 -8.129769 56.634800
+v -81.207901 -8.944769 51.206699
+v -80.999001 -9.577768 51.206699
+v -80.689301 -9.577767 45.778599
+v -81.207901 -7.594738 45.778599
+v -78.596603 -15.005709 51.206696
+v -76.979897 -15.005710 56.634796
+v -79.036301 -15.005708 45.778595
+v -64.923500 -27.637812 67.491089
+v -60.585602 -36.718811 67.491089
+v -64.923500 -36.718807 51.404293
+v -75.779800 -15.005711 62.519497
+v -66.298103 -36.718807 45.778591
+v -82.564903 6.296253 44.421501
+v -82.770302 8.060722 44.419601
+v -82.249802 3.992243 44.421501
+v -81.970200 3.992243 45.778599
+v -82.295998 3.992243 43.064499
+v -82.291397 5.485953 41.731300
+v -82.110397 3.992243 41.707401
+v -81.826302 5.392143 40.151402
+v -81.972397 1.278253 43.064499
+v -81.775299 1.278252 45.778599
+v -81.783302 1.278253 40.350399
+v -81.207901 5.265254 37.636398
+v -81.796204 1.278254 34.922298
+v -81.537598 -4.149727 40.350399
+v -81.808197 -4.149728 45.778599
+v -81.872101 -1.435737 45.778599
+v -81.687103 -4.149726 34.922298
+v -81.922997 5.349235 32.208199
+v -81.505600 3.992244 34.922298
+v -81.206100 5.348624 34.919102
+v -81.182404 6.586785 33.360500
+v -82.176697 3.992245 32.208199
+v -83.352097 4.670715 29.494200
+v -82.638100 3.992245 31.011900
+v -82.388901 1.278255 32.208199
+v -84.068497 3.599425 28.544500
+v -84.880600 5.349236 26.780100
+v -85.163803 3.348935 27.220699
+v -85.290901 5.327876 26.041100
+v -86.544296 5.285766 23.639299
+v -86.669197 3.923706 25.099600
+v -83.765701 1.287535 29.303101
+v -84.672401 1.477225 28.122499
+v -85.278999 1.278255 27.501699
+v -85.800301 2.635246 26.780100
+v -86.695801 1.281676 26.316000
+v -87.099602 2.643546 25.493200
+v -83.480400 -1.435735 29.494200
+v -83.105301 -4.149725 29.494200
+v -83.921997 -1.435735 28.746300
+v -85.981903 -0.078739 26.780100
+v -85.474800 -1.435734 26.780100
+v -86.636002 -0.078739 26.210199
+v -85.344002 -4.149724 24.066000
+v -84.233200 -4.149724 26.780100
+v -86.672699 -1.436104 25.428600
+v -80.702400 -9.577766 40.350399
+v -81.207901 -6.695747 40.350399
+v -81.207901 -9.416756 34.922298
+v -79.405403 -15.005707 40.350395
+v -77.965698 -15.005704 24.065998
+v -80.127098 -15.005706 34.922295
+v -81.180702 -9.577765 34.922298
+v -82.643097 5.673028 13.114501
+v -82.564903 6.364258 14.566801
+v -83.921997 5.349237 13.792901
+v -83.167503 5.349237 13.209801
+v -85.280502 5.340087 14.569201
+v -86.636002 4.953248 15.923801
+v -86.570999 3.955508 14.586401
+v -85.270203 2.630128 13.368800
+v -86.706703 2.635248 14.499700
+v -86.633301 1.438348 14.585300
+v -85.167198 1.266598 13.494000
+v -86.636002 -2.730774 24.066000
+v -86.636002 -3.535774 21.351999
+v -86.636002 -1.435733 16.519699
+v -86.636002 -0.763736 15.923800
+v -86.050598 -1.435733 15.923800
+v -83.921997 -1.435732 14.204500
+v -83.921997 0.280271 13.209800
+v -82.219803 -1.435732 13.209800
+v -83.921997 -4.149723 17.585600
+v -83.921997 -3.136723 15.923800
+v -82.478302 -4.149723 15.923800
+v -86.636002 -2.925723 18.637899
+v -81.207901 -4.149723 14.646399
+v -81.209396 -1.657352 12.659300
+v -75.779800 3.992249 8.782201
+v -73.615601 5.349238 7.781601
+v -74.395203 3.871519 7.783531
+v -75.241501 1.977599 7.842041
+v -75.779800 1.278259 8.123400
+v -73.139503 4.412539 6.483481
+v -73.784897 2.635249 6.424601
+v -73.071503 2.742309 5.087141
+v -72.544502 1.398740 3.218280
+v -72.557404 3.366699 3.610060
+v -72.087502 2.322570 0.278707
+v -75.779800 -1.435731 7.486000
+v -74.498398 0.246154 6.310300
+v -75.026398 -1.435731 6.424600
+v -74.343300 -1.337831 5.147510
+v -73.857597 -0.078736 5.067600
+v -72.658203 0.104858 1.924230
+v -72.797997 0.627074 3.476860
+v -73.594803 -2.035640 2.457430
+v -75.779800 -4.149721 7.038799
+v -74.441704 -2.512451 4.647240
+v -78.493797 5.349238 9.595001
+v -79.850899 5.349238 9.818301
+v -81.207901 1.278258 11.378600
+v -81.207901 3.992248 10.733500
+v -80.740700 3.992248 10.495701
+v -81.207703 5.358518 10.495601
+v -82.156303 5.349238 11.852701
+v -82.564903 4.510248 11.852701
+v -84.003601 4.054748 12.834301
+v -82.546600 3.958858 11.701301
+v -83.921997 2.635248 12.554700
+v -79.452301 1.278258 10.495700
+v -78.493797 1.278258 10.010300
+v -76.013603 -1.435731 7.781600
+v -80.045197 -4.149723 13.209799
+v -75.780602 -0.023133 7.782130
+v -76.181702 -4.149722 7.781600
+v -84.643799 -4.149723 18.637899
+v -75.062698 -5.506771 5.067599
+v -75.779800 -6.863771 6.685199
+v -74.818199 -4.045591 4.873620
+v -75.024902 -8.132201 4.380919
+v -74.663803 -5.506771 3.710499
+v -74.078400 -5.264340 1.489039
+v -73.985001 -4.149721 1.674999
+v -74.448196 -6.954771 2.682109
+v -75.779800 -9.577761 5.664898
+v -74.345001 -8.462590 2.274249
+v -76.259300 -6.863771 7.781599
+v -76.573700 -9.577761 7.781599
+v -75.060799 -9.593381 3.730678
+v -75.994003 -10.934801 5.067598
+v -77.123703 -12.291701 7.781598
+v -76.482002 -12.291701 5.067598
+v -75.772003 -11.100201 3.999868
+v -76.344101 -12.291701 3.710498
+v -75.563004 -11.006300 2.412388
+v -76.422203 -12.291700 2.353498
+v -76.968300 -13.653401 5.056858
+v -77.711098 -15.005701 7.781598
+v -77.970802 -16.343300 5.058297
+v -76.985100 -13.648701 3.710498
+v -77.601700 -15.005701 3.031998
+v -77.074600 -13.315600 1.114038
+v -78.149200 -25.861803 24.065996
+v -75.779800 -30.778704 24.065994
+v -79.347702 -20.433702 13.209797
+v -77.722603 -15.005702 13.209797
+v -78.781097 -25.861801 13.209796
+v -78.311096 -17.719702 7.781597
+v -78.597801 -17.483801 2.390597
+v -78.493797 -17.719700 3.963297
+v -78.922302 -20.433702 7.781597
+v -78.760300 -18.947100 5.101837
+v -79.278000 -20.433701 5.067596
+v -79.045097 -19.076700 3.710497
+v -79.568604 -19.406200 2.482437
+v -79.773598 -20.589399 3.714587
+v -79.265900 -25.861801 7.781596
+v -80.137001 -23.173500 5.078936
+v -80.554901 -25.861799 5.067595
+v -79.147102 -31.290802 7.781595
+v -76.773499 -31.290802 13.209795
+v -81.195297 -29.094400 5.082475
+v -81.207901 -25.861799 3.373296
+v -81.207901 -31.290802 5.884995
+v -82.174103 -28.575701 2.353495
+v -82.134697 -31.290800 5.067595
+v -83.663200 -31.290800 2.353495
+v -76.624702 -36.718803 13.209794
+v -79.665802 -36.718800 7.781594
+v -81.207901 -34.004799 6.279194
+v -83.921997 -34.004799 4.285594
+v -83.922096 -32.647900 3.710485
+v -84.393700 -34.004799 3.710495
+v -83.039200 -36.718800 5.067594
+v -84.066704 -35.231400 4.328494
+v -84.076401 -36.656601 4.208724
+v -85.628998 -35.516399 2.417234
+v -85.291603 -34.178600 2.331594
+v -85.566399 -36.766998 2.641364
+v -43.210999 -36.718815 87.369194
+v -43.210999 -61.349709 45.778587
+v -45.448799 -58.430706 45.778591
+v -43.210999 -72.584709 24.065989
+v -32.114899 -80.143707 24.065987
+v -41.297100 -80.143700 2.353487
+v -64.923500 -39.921806 45.778591
+v -73.411301 -36.718803 24.065994
+v -67.632301 -47.574802 24.065992
+v -75.779800 -36.718803 18.433294
+v -75.779800 -44.986805 13.209792
+v -73.947098 -47.574802 13.209792
+v -76.785202 -42.146706 13.209793
+v -75.779800 -47.574799 11.000993
+v -80.214699 -42.146702 7.781593
+v -85.287201 -39.432701 2.360794
+v -83.921997 -39.432701 3.611694
+v -83.914902 -38.115200 4.020924
+v -85.278999 -38.075699 2.766894
+v -86.836700 -38.148800 1.324324
+v -82.035500 -42.146702 5.067593
+v -83.921997 -42.146702 2.690293
+v -84.235901 -42.146702 2.353493
+v -77.972801 -47.574799 7.781592
+v -81.207901 -42.146702 6.263494
+v -81.207901 -47.574799 3.076392
+v -81.863602 -47.574799 2.353492
+v -64.923500 -57.270805 13.209790
+v -64.923500 -50.509804 24.065992
+v -75.779800 -50.075699 7.781592
+v -64.923500 -58.430698 11.318291
+v -75.779800 -53.002701 4.129292
+v -71.041199 -58.430698 2.353490
+v -75.779800 -54.610699 2.353491
+v -21.932301 -80.143707 45.778587
+v -21.498400 -80.311806 45.778587
+v -21.498400 -84.529709 24.065987
+v -21.498400 -87.385696 2.353486
+v -87.745697 1.278376 25.310101
+v -88.488197 1.278256 24.066000
+v -87.811501 0.000667 25.127899
+v -89.265701 -0.078861 22.925301
+v -87.446701 6.700197 21.363703
+v -88.433098 5.389527 21.260099
+v -87.992996 6.304256 19.994902
+v -89.007202 5.349236 19.994900
+v -87.208603 5.349237 18.637899
+v -87.883797 5.170957 18.743200
+v -86.411201 5.891167 18.734001
+v -89.412804 4.623347 19.977501
+v -89.331802 3.773927 18.878700
+v -88.010803 4.175536 22.679399
+v -88.773697 2.635246 22.709000
+v -89.217400 4.096307 21.128599
+v -89.964996 2.635247 19.994900
+v -89.688797 1.274897 18.650999
+v -90.205597 1.278257 19.994900
+v -86.654099 5.130677 17.866301
+v -87.992996 3.992247 18.120300
+v -87.291000 3.992247 17.280899
+v -87.039803 3.992247 15.923801
+v -87.994202 2.643797 17.279699
+v -89.431396 2.931397 18.631800
+v -87.408600 2.635247 15.923800
+v -88.363197 1.278257 17.280899
+v -88.408600 -1.435733 18.637899
+v -89.288200 -1.337163 19.993700
+v -89.347900 -0.073184 18.643700
+v -89.985703 -0.078738 21.351999
+v -90.085999 -0.078738 19.994900
+v -89.322403 -1.329413 21.352400
+v -87.829597 1.276487 16.438200
+v 0.125884 64.620003 -1.159080
+v -3.008740 62.929798 -7.514649
+v -0.685918 64.693398 -7.500480
+v -5.058420 61.403702 -8.328621
+v -5.579850 60.295700 -5.360640
+v -4.156340 61.448002 -5.339090
+v -0.459045 67.557297 -17.609089
+v -0.184879 67.036102 -15.950990
+v 0.115684 68.772499 -18.656689
+v 0.667239 69.396797 -16.351688
+v -0.314102 67.806900 -19.633389
+v -0.352537 65.292397 -16.448889
+v -0.090087 64.941498 -14.023190
+v -1.343520 63.203304 -12.454390
+v -3.220200 62.667503 -11.991989
+v -3.651860 62.648300 -10.151489
+v -5.622750 61.734901 -11.158689
+v -0.366439 64.214203 -10.673490
+v -1.206620 62.933704 -14.321090
+v -1.848950 62.507004 -14.299490
+v -5.825930 61.892105 -12.711989
+v -5.067710 62.065105 -13.277989
+v -2.639900 61.987103 -15.290890
+v -4.499010 62.004303 -14.709390
+v -6.139270 61.078201 -9.379480
+v -10.642200 60.098301 -10.538290
+v -9.285150 61.384705 -14.270090
+v 0.148354 64.505997 -20.061289
+v -0.281118 64.781601 -18.204788
+v -0.536104 66.908203 -19.163088
+v -0.336658 63.748802 -18.273390
+v -0.477796 63.871403 -15.095590
+v -0.618023 62.966904 -17.844891
+v -1.037440 62.169403 -18.483891
+v -1.859350 61.855003 -17.585491
+v -2.879980 61.687603 -17.437090
+v -1.458570 61.808704 -20.123791
+v -4.888520 61.545605 -20.384890
+v -7.476450 62.009304 -15.728689
+v -10.530400 61.544304 -16.984190
+v -9.549010 61.874405 -18.270491
+v -7.206210 62.080105 -17.399191
+v -8.069630 61.908005 -19.530790
+v -12.187800 61.641205 -19.928190
+v -3.244770 61.009300 -0.530216
+v -4.606540 59.632301 -0.003211
+v -6.880330 57.457500 2.353019
+v -8.155200 57.849800 -0.416823
+v -12.607200 56.055500 0.210361
+v -9.263900 58.439201 -4.142890
+v -12.932200 56.796299 -2.618241
+v -6.079750 58.707100 -0.127314
+v -6.840230 59.456200 -4.944180
+v -7.278500 60.332901 -8.297100
+v -8.226980 59.191200 -5.795381
+v -13.143600 57.942501 -6.096740
+v -16.748800 56.621300 -7.145731
+v -13.881100 58.426498 -8.782990
+v -19.533899 55.460602 -6.481381
+v -17.172899 55.784100 -4.826041
+v -19.593201 56.367001 -9.956410
+v -22.371599 55.339901 -8.612122
+v -15.052500 55.723801 -1.447291
+v -19.802099 55.230801 -4.940531
+v -23.212900 55.012199 -6.679571
+v -13.219000 59.738903 -12.239491
+v -16.195101 58.252499 -11.032790
+v -17.427299 58.158504 -13.536190
+v -14.363700 60.044106 -15.841090
+v -22.828501 55.425999 -10.328491
+v -20.970600 56.569805 -13.184191
+v -11.970100 60.713406 -14.943090
+v -13.377500 60.630005 -17.044191
+v -14.080700 60.746502 -19.515490
+v -13.747500 60.981606 -19.957790
+v -17.924299 58.214703 -15.348890
+v -17.294800 59.088104 -20.880291
+v -19.960899 57.424706 -19.001390
+v -22.855499 56.011505 -16.814590
+v -25.182899 54.824703 -13.214891
+v -27.382500 54.376801 -2.431291
+v -24.780100 54.564098 0.093656
+v -29.181499 53.483299 -0.804642
+v -31.765900 51.842499 1.648829
+v -32.199799 52.795700 -2.871821
+v -32.844898 51.800701 0.141392
+v -20.650299 55.100300 -3.074621
+v -24.574200 54.914101 -3.368851
+v -26.415199 54.675201 -3.244641
+v -26.994400 54.614101 -4.227381
+v -25.265699 54.651501 -8.840251
+v -32.269901 52.947102 -4.081851
+v -32.924198 52.817699 -5.939611
+v -31.742001 52.871700 -8.341512
+v -37.915298 50.480301 -1.172142
+v -35.300400 51.780499 -2.501072
+v -35.775799 51.923698 -4.400651
+v -35.318199 52.146801 -7.360271
+v -37.137699 51.524300 -6.315432
+v -39.240299 50.544800 -3.369192
+v -35.946400 51.747799 -9.317122
+v -39.451900 50.534100 -5.801822
+v -22.280001 56.218704 -20.546391
+v -29.055700 53.016003 -13.914991
+v -28.416599 53.506401 -10.548491
+v -32.643101 51.987202 -11.691491
+v -25.838800 54.529205 -15.415092
+v -31.156200 52.193905 -13.100492
+v -31.807600 51.471104 -15.483292
+v -35.862499 50.198006 -14.688191
+v -37.104301 49.089302 -17.385693
+v -30.954000 51.386204 -18.633692
+v -33.396500 50.303505 -18.680492
+v 0.279029 65.067497 -20.538788
+v 0.279989 63.038704 -21.249590
+v -0.398687 62.370903 -20.518091
+v -0.659817 62.377106 -22.287991
+v -1.805890 62.048405 -22.247091
+v -4.655630 61.597404 -22.566990
+v -2.677850 63.137104 -26.351191
+v -2.839240 62.474304 -24.731390
+v -4.026650 61.925503 -23.938990
+v -6.961750 61.541904 -25.076891
+v -5.727330 62.792706 -28.721891
+v -6.231810 61.883205 -26.483490
+v -8.511280 61.610302 -27.529291
+v -8.857210 61.521904 -26.516190
+v -9.976030 61.682205 -23.563190
+v -8.360590 62.271805 -30.279690
+v -12.598300 61.291805 -27.195890
+v -10.857000 61.856102 -20.547291
+v -12.830400 61.490005 -22.613390
+v -14.073400 61.027603 -21.921690
+v -12.938900 61.383305 -25.020191
+v -12.433900 61.234905 -29.297291
+v -9.953420 61.704803 -30.083590
+v -5.319910 65.090805 -35.173187
+v -4.972750 65.825111 -42.222389
+v -5.725500 65.397804 -39.996288
+v -5.073760 63.926105 -30.836191
+v -7.341940 63.510204 -33.030388
+v -6.376020 64.740005 -36.708088
+v -8.347500 63.857506 -36.387188
+v -11.645100 61.843304 -32.549789
+v -12.126200 61.440704 -31.270390
+v -11.148400 62.691704 -34.958790
+v -11.587300 62.811806 -37.066887
+v -7.866180 64.349510 -39.965588
+v -11.788600 62.800407 -40.973888
+v -13.468000 61.145004 -32.099689
+v -14.713300 60.708305 -28.603790
+v -13.827200 61.264603 -33.704689
+v -15.181900 60.535404 -32.839989
+v -12.879500 62.302006 -37.854290
+v -14.819600 60.943405 -34.766190
+v -14.495900 61.395607 -38.748390
+v -13.551300 61.858509 -42.923389
+v -14.801300 61.029308 -43.233788
+v -16.820900 59.680908 -39.711288
+v -14.705200 60.933502 -24.777790
+v -16.361300 60.124905 -24.777691
+v -16.070299 60.220905 -28.094891
+v -18.443600 58.835304 -30.024490
+v -19.033300 58.408005 -27.077091
+v -21.149000 57.088703 -30.554590
+v -22.626301 55.797504 -25.894091
+v -19.504499 57.796604 -22.231590
+v -18.784401 58.702805 -34.116787
+v -17.200600 59.582207 -36.993088
+v -19.468399 58.058308 -38.442291
+v -21.458200 57.003807 -36.532692
+v -24.086700 54.842903 -24.513891
+v -23.923599 55.234406 -21.733791
+v -26.934999 53.540905 -19.899691
+v -30.304701 50.970604 -22.903492
+v -27.923100 53.360905 -16.438490
+v -24.665501 54.317406 -29.070290
+v -26.247999 53.139202 -28.179790
+v -28.052900 52.105804 -25.635292
+v -27.746000 52.050503 -29.876093
+v -29.361200 51.039104 -28.571392
+v -30.658400 50.405003 -29.367193
+v -32.354698 49.683304 -25.974592
+v -23.671200 55.429703 -34.638592
+v -25.569500 53.725304 -32.929394
+v -27.395901 52.490208 -35.413593
+v -29.640600 50.946205 -32.420494
+v -30.319099 50.714508 -35.261692
+v -22.825399 55.979107 -37.755692
+v -27.605101 52.268509 -38.527092
+v -27.896799 52.165207 -35.674591
+v -3.658980 66.416908 -43.701389
+v -4.133420 65.038109 -46.567188
+v -6.249650 64.718910 -44.166889
+v -7.758890 64.163109 -43.251789
+v -7.527770 63.530609 -45.961388
+v -11.033600 62.774708 -43.818489
+v -3.766020 64.826408 -47.483990
+v -4.003250 63.714008 -48.920490
+v -2.952590 63.349609 -50.013489
+v -1.815310 61.460609 -51.880688
+v -3.447460 61.229206 -51.219688
+v -6.349210 62.864407 -48.438488
+v -8.552060 62.125408 -48.345287
+v -8.581030 61.371006 -49.547989
+v -10.809700 62.122707 -46.833889
+v -5.099760 61.948109 -50.112488
+v -6.120330 61.295307 -50.307888
+v -7.869540 60.536507 -50.546589
+v -3.009570 60.952606 -54.934090
+v -1.822120 61.097706 -52.852589
+v -2.777660 61.261307 -56.507790
+v -0.651309 62.252010 -60.698189
+v -3.139990 60.869713 -59.108089
+v -2.096950 61.464211 -62.085087
+v -6.043650 59.272606 -51.806789
+v -8.219970 58.139606 -52.367691
+v -11.439500 60.204708 -50.489487
+v -10.386800 59.582508 -51.196690
+v -15.397900 59.918606 -47.703888
+v -16.760401 59.229008 -46.692390
+v -19.293301 57.273609 -45.566692
+v -19.782900 57.203209 -42.986294
+v -21.401100 55.840607 -45.227493
+v -22.016001 56.133209 -41.071491
+v -12.511400 61.325909 -47.579990
+v -14.303300 60.100208 -49.014690
+v -16.040501 58.911709 -50.139790
+v -13.042900 58.640606 -52.044788
+v -17.615900 58.195908 -49.363293
+v -19.750999 56.309109 -51.551193
+v -21.094601 55.462307 -50.570694
+v -18.168501 57.244606 -51.758591
+v -4.636340 59.393406 -52.586288
+v -5.091110 59.055809 -53.329590
+v -4.698300 59.743809 -51.937489
+v -6.924700 58.313606 -52.612591
+v -7.536450 57.729206 -54.335194
+v -7.775700 57.635006 -53.417492
+v -5.640340 59.078709 -55.186390
+v -4.636170 59.955311 -59.216488
+v -7.172550 58.444313 -58.811291
+v -9.552010 57.427509 -53.149292
+v -9.839280 56.836506 -54.205391
+v -8.919650 57.026009 -55.153893
+v -9.911590 56.751907 -57.818592
+v -10.476000 56.386707 -56.805592
+v -4.837720 60.208611 -64.522293
+v -5.386180 59.898411 -62.690090
+v -6.910330 59.131210 -63.962189
+v -8.606630 57.957211 -61.106892
+v -13.405500 57.610809 -53.323193
+v -11.318400 56.758209 -54.294891
+v -14.541200 58.246006 -52.334293
+v -16.017900 57.147308 -54.028294
+v -16.186199 57.905209 -52.280693
+v -10.585700 56.383606 -55.656792
+v -11.887000 56.288307 -55.660091
+v -12.540100 56.027809 -57.476791
+v -14.517100 56.707809 -55.039093
+v -16.444201 56.400307 -55.965492
+v -17.698999 56.844307 -53.822594
+v -18.781401 56.307709 -55.030491
+v -19.008699 56.420708 -53.652794
+v -20.193399 55.894009 -54.628391
+v -16.993099 56.006607 -58.147491
+v -19.386299 55.631111 -59.162193
+v -11.829600 56.533413 -61.384594
+v -12.489600 56.227211 -60.553692
+v -14.908700 55.907913 -61.147091
+v -13.722600 56.531010 -65.788391
+v -16.422300 55.672611 -62.245293
+v -15.451300 55.852413 -63.704292
+v -19.310600 55.001011 -63.275993
+v -21.309299 54.892513 -60.622593
+v -20.477200 54.487411 -64.529495
+v -26.393801 53.009308 -39.756893
+v -24.524000 54.219208 -42.195393
+v -27.265800 52.141808 -42.428593
+v -23.025101 55.167606 -42.875591
+v -25.002899 53.324806 -47.347191
+v -22.841299 54.553108 -48.891792
+v -27.537500 51.675106 -46.669292
+v -29.191500 50.725208 -44.916092
+v -29.301300 51.045006 -40.901894
+v -30.319201 50.283306 -43.446392
+v -30.661200 50.467209 -39.355091
+v -23.417601 54.237408 -54.114994
+v -23.261801 54.106808 -56.677391
+v -25.013201 52.884609 -56.719791
+v -28.962099 49.980209 -55.320393
+v -27.947300 50.552006 -57.606991
+v -22.494301 54.368710 -60.314392
+v -23.505301 53.526413 -61.641594
+v -26.926600 51.028713 -59.730793
+v -27.136499 50.381512 -62.698093
+v -0.383751 61.936211 -65.012596
+v -3.855830 60.486111 -66.205490
+v 1.106830 62.155010 -66.631592
+v -3.727880 60.720512 -77.120193
+v 0.065210 62.516010 -80.540489
+v -2.579740 61.619011 -80.299690
+v -3.134460 61.462513 -81.873589
+v -0.254380 62.277416 -83.545990
+v -3.549580 61.125515 -83.334091
+v -6.972870 59.136112 -66.701393
+v -9.978280 57.770512 -64.940994
+v -4.866360 59.814312 -68.318596
+v -4.287580 59.623310 -71.024689
+v -4.450710 59.619011 -72.283295
+v -5.928690 59.612110 -74.651390
+v -7.967350 58.660210 -69.357796
+v -8.323160 58.887211 -73.886391
+v -10.699000 57.904110 -73.560493
+v -11.653400 57.508110 -71.183990
+v -15.422500 56.125511 -67.178291
+v -11.874700 57.083611 -65.295792
+v -13.412100 56.685410 -69.087090
+v -17.306299 55.451813 -65.747795
+v -14.780700 55.953213 -70.965996
+v -16.392500 55.688011 -68.663490
+v -12.047100 57.231312 -74.057190
+v -14.993300 55.600613 -73.170990
+v -16.993200 54.724812 -71.956390
+v -18.753300 54.607410 -68.609795
+v -20.411400 53.740612 -68.709091
+v -21.498400 53.643711 -66.032295
+v -18.699499 53.148312 -73.479393
+v -22.303801 52.531612 -68.367592
+v -22.075500 51.355312 -71.198593
+v -19.075100 52.228813 -75.037895
+v -6.223070 59.715511 -76.256889
+v -5.462270 60.227211 -78.431892
+v -7.846540 59.097210 -77.298691
+v -5.705370 60.052517 -82.916794
+v -8.143430 58.631512 -81.087791
+v -6.838650 59.572411 -79.022194
+v -9.681160 58.173012 -76.842590
+v -7.813840 58.295216 -83.682091
+v -11.223400 56.962013 -78.050194
+v -12.259400 55.780712 -79.796196
+v -11.136300 55.880516 -82.279190
+v -11.189400 55.087017 -83.759689
+v -14.458300 55.456310 -76.327896
+v -16.611099 54.322811 -74.456993
+v -15.850600 54.241310 -77.339493
+v -14.358900 54.113712 -80.319992
+v -15.356900 52.579712 -81.810593
+v -13.598300 52.937016 -83.600891
+v -16.302299 51.258915 -82.427193
+v -11.625300 52.177116 -86.903793
+v -15.146900 49.838615 -85.347694
+v -18.754801 49.674412 -80.637093
+v -17.270399 52.663311 -78.353790
+v -23.583200 52.638813 -65.166092
+v -26.740900 49.792210 -65.720093
+v -29.094000 48.415211 -64.169495
+v -24.370199 50.953411 -68.265289
+v -28.209999 47.854313 -67.765594
+v -26.468599 47.863010 -70.504791
+v -24.528999 48.745110 -71.752396
+v -39.953400 49.385101 -0.631085
+v -41.936298 48.524399 -1.430462
+v -43.334900 46.528400 1.409658
+v -42.001801 49.062599 -5.116172
+v -43.916000 47.600700 -4.243262
+v -42.255402 48.697399 -2.949222
+v -40.966099 49.303501 -9.053312
+v -44.241100 47.359299 -6.886972
+v -43.889500 47.225300 -9.181262
+v -38.102501 48.975605 -15.977492
+v -37.756699 50.708599 -10.629992
+v -38.969601 50.495602 -8.795932
+v -40.282600 49.358299 -10.792993
+v -41.448399 48.420101 -11.442693
+v -39.825500 48.118702 -15.881593
+v -42.611301 46.645004 -15.335392
+v -41.345001 46.526505 -18.939392
+v -32.436798 49.874805 -22.799992
+v -38.461300 47.966206 -19.358992
+v -34.900398 48.985004 -22.118292
+v -37.115501 47.819004 -23.066792
+v -34.356300 48.834003 -25.242992
+v -39.479099 46.577206 -23.260492
+v -43.247799 44.703003 -23.637293
+v -34.061501 48.958702 -31.148191
+v -36.306999 47.825905 -27.323092
+v -36.137501 47.966904 -31.741892
+v -40.508801 45.711502 -25.314592
+v -42.884399 44.450203 -26.946392
+v -33.582100 49.135002 -34.074394
+v -36.118599 47.833107 -35.600994
+v -36.819000 47.622704 -33.268692
+v -37.443600 46.980309 -37.710594
+v -33.563099 48.996506 -41.470493
+v -35.014198 48.113308 -42.299393
+v -37.311600 46.514809 -41.974991
+v -39.721001 46.038807 -35.734993
+v -39.139900 45.582207 -39.375294
+v -46.907101 45.086201 -2.351263
+v -49.808399 42.602600 -0.901667
+v -46.949402 44.724701 -0.699844
+v -48.141800 44.372700 -4.257413
+v -51.159100 41.382999 -1.789303
+v -47.103901 45.205502 -5.449433
+v -49.945801 42.773998 -6.045973
+v -47.829700 44.519501 -7.663353
+v -54.319199 37.338100 -3.413884
+v -52.199100 40.236000 -2.935404
+v -53.260101 38.597198 -6.297574
+v -47.714600 43.774403 -12.830294
+v -51.284901 41.277302 -6.288313
+v -51.493900 39.764904 -12.658693
+v -49.202599 42.507305 -12.747593
+v -48.006699 42.400703 -17.514692
+v -46.310799 43.563503 -18.490393
+v -47.372898 42.102406 -22.345293
+v -50.225399 41.342705 -13.022794
+v -49.794498 40.760105 -16.890095
+v -52.874901 38.757500 1.547766
+v -55.977100 35.204300 -0.869470
+v -55.870701 35.204300 -4.431644
+v -59.961700 29.267000 -3.435455
+v -58.966400 30.110703 -8.045615
+v -60.273399 28.235500 -5.326055
+v -59.820099 28.087702 -8.587575
+v -53.885201 37.328300 -8.584455
+v -54.529202 34.526203 -15.966394
+v -50.338200 39.637302 -18.996794
+v -52.664200 36.348602 -19.434994
+v -55.701099 31.917105 -18.748894
+v -56.173401 34.020699 -9.127604
+v -55.608501 35.183998 -7.226995
+v -56.495602 32.898701 -11.429594
+v -58.267502 31.574202 -7.031855
+v -58.195599 30.135801 -11.361996
+v -57.131802 30.383701 -15.937995
+v -45.492802 43.520805 -22.056992
+v -44.837101 44.764202 -17.387493
+v -45.165699 43.447205 -25.269793
+v -47.487202 41.634502 -25.635292
+v -48.828701 40.928005 -21.140394
+v -48.611301 40.577904 -25.337595
+v -41.928200 44.740402 -30.937492
+v -45.610001 42.814102 -27.683392
+v -47.781200 40.659405 -29.975294
+v -48.805199 39.928802 -28.383394
+v -45.654598 42.305702 -31.233093
+v -46.243999 41.623104 -32.577793
+v -44.228401 43.360905 -30.851393
+v -44.962898 42.592102 -33.694992
+v -46.898800 40.145206 -37.026493
+v -48.799801 38.263508 -35.143093
+v -45.860401 41.251507 -36.928291
+v -41.870201 44.549408 -36.340591
+v -45.428699 40.123806 -42.161194
+v -44.352100 41.989307 -39.035992
+v -43.299702 42.090908 -41.686493
+v -46.584599 38.758507 -42.793892
+v -50.743099 38.434803 -22.451494
+v -54.600300 33.169304 -21.055294
+v -51.809799 36.505005 -24.760195
+v -50.436600 37.579304 -29.197495
+v -54.488499 32.490204 -25.465694
+v -52.804798 34.297802 -28.581594
+v -54.493999 31.520006 -29.927694
+v -55.552601 30.478004 -26.755095
+v -57.606701 28.688704 -18.303896
+v -56.124901 29.267303 -27.619596
+v -55.831200 29.436707 -29.621593
+v -50.318298 36.731003 -33.226593
+v -51.338799 34.525806 -36.830795
+v -53.031101 32.437706 -35.905697
+v -48.484299 36.967907 -41.340992
+v -54.195999 29.446007 -43.117996
+v -52.133301 32.545006 -40.847897
+v -55.547501 29.267305 -33.523098
+v -57.233299 26.383205 -32.165997
+v -54.569401 30.230505 -36.304195
+v -55.614399 27.912405 -40.564598
+v -61.395401 27.062300 -0.021348
+v -61.271301 27.062300 -1.887236
+v -63.016300 23.679001 -0.296976
+v -61.982498 25.323400 -2.989816
+v -63.167599 22.651800 -3.082136
+v -60.733700 26.842201 -6.314876
+v -61.974899 23.556002 -6.976096
+v -63.553699 20.432901 -6.178777
+v -64.792603 20.277300 -0.021349
+v -58.938900 26.204302 -16.305696
+v -60.432400 23.669703 -13.082696
+v -58.791500 27.887503 -13.568495
+v -60.224602 26.044302 -10.308996
+v -61.829498 21.019102 -11.356496
+v -59.873699 23.669502 -15.966396
+v -60.490898 20.955301 -17.323496
+v -59.806499 22.197004 -19.614197
+v -63.243599 17.282902 -11.674097
+v -64.881104 15.772602 -8.862787
+v -61.753399 18.241302 -15.627197
+v -62.896400 15.609103 -15.311897
+v -61.743500 17.054304 -18.086798
+v -62.282299 16.331501 -16.729599
+v -64.501503 14.170202 -11.895298
+v -64.010201 14.039302 -13.679698
+v -65.402298 9.874213 -15.330298
+v -64.473198 11.035103 -16.948097
+v -63.256802 13.152802 -18.510899
+v -64.380203 10.437303 -18.762999
+v -63.804699 11.007204 -21.055298
+v -65.751099 17.406000 -3.413887
+v -67.678001 14.738600 -1.619158
+v -68.503799 11.795201 -3.247898
+v -68.757896 13.130900 0.250340
+v -65.773804 16.309000 -5.399577
+v -68.013702 11.795201 -4.940538
+v -69.922897 10.949600 1.010642
+v -69.686897 12.111800 1.933762
+v -66.716698 12.473801 -7.993878
+v -66.620598 9.759702 -11.556098
+v -69.423401 7.045721 -5.449429
+v -70.723503 4.244811 -2.731269
+v -69.960999 8.487490 -1.547989
+v -69.281799 10.099200 -2.735378
+v -68.116997 9.757321 -7.080849
+v -67.763199 7.714362 -10.448399
+v -65.491997 11.616902 -12.526098
+v -67.718597 5.592962 -13.263699
+v -66.651100 6.028023 -17.000399
+v -58.555500 24.178503 -25.592896
+v -59.951500 20.573704 -22.815197
+v -59.012100 24.008703 -21.055296
+v -57.194698 28.079803 -23.607595
+v -57.274799 26.828505 -28.276297
+v -58.216400 25.683504 -23.201796
+v -59.116299 22.312304 -26.483496
+v -58.484600 23.796604 -29.261097
+v -61.832699 15.866804 -20.631199
+v -60.537601 18.580704 -23.769396
+v -59.809700 20.237906 -29.727596
+v -60.545799 18.241304 -26.483496
+v -60.477699 18.559607 -32.208397
+v -61.524200 15.768605 -27.819298
+v -58.158699 24.178505 -35.473797
+v -57.453098 25.705305 -35.477997
+v -57.192200 25.705305 -38.696796
+v -56.828201 26.722706 -36.321896
+v -58.505299 22.991306 -39.460094
+v -59.366798 21.209906 -37.848595
+v -58.697800 22.312307 -41.071495
+v -60.625999 18.029306 -39.549297
+v -61.735298 15.527304 -22.921198
+v -61.818600 15.082304 -25.247698
+v -63.118000 12.134304 -23.090899
+v -62.923100 12.388904 -26.313799
+v -64.330002 9.208564 -24.405499
+v -65.241302 7.508483 -21.818598
+v -63.903198 10.099205 -27.840498
+v -65.334999 6.357124 -26.334497
+v -63.980900 9.855655 -31.169498
+v -64.787300 7.401065 -30.342499
+v -62.529499 13.831205 -34.710495
+v -61.289200 16.884306 -35.643394
+v -62.624802 13.492206 -36.661198
+v -61.914501 14.849207 -39.884098
+v -63.822899 10.099206 -35.897800
+v -63.176102 11.216006 -40.223400
+v -32.543701 49.144306 -44.072292
+v -29.770800 49.871407 -51.225693
+v -31.367100 49.127007 -49.044094
+v -32.770500 47.750710 -52.267094
+v -39.732601 44.436306 -43.291492
+v -36.946800 46.366009 -44.576294
+v -36.321999 45.799309 -49.496193
+v -34.619900 47.717709 -45.963192
+v -41.727501 41.098907 -51.842991
+v -43.550301 40.868206 -45.927292
+v -41.090900 42.519508 -47.560291
+v -30.738199 48.560108 -56.832993
+v -33.414299 46.625408 -55.843491
+v -30.616100 47.589413 -62.784092
+v -30.263300 48.405212 -60.226692
+v -35.253601 44.887608 -57.285992
+v -38.716000 42.917007 -54.472294
+v -40.241699 40.707706 -57.695194
+v -43.301998 39.365208 -53.355293
+v -36.215599 43.711712 -58.898891
+v -34.357800 44.663513 -61.766293
+v -37.318699 42.122311 -61.254494
+v -43.015900 38.179607 -57.737892
+v -18.622900 48.421314 -82.406296
+v -21.046101 45.479111 -81.797691
+v -18.432100 47.408615 -83.592491
+v -22.268499 46.497211 -78.628693
+v -20.637100 48.634811 -78.546494
+v -21.231199 43.574314 -83.270096
+v -20.161600 43.456116 -84.486092
+v -32.066002 45.970612 -64.141090
+v -33.937000 44.013012 -65.203995
+v -32.346401 43.585011 -69.573891
+v -23.803801 48.061012 -73.851891
+v -28.443399 46.978111 -69.105789
+v -28.458900 45.641510 -71.464096
+v -36.923801 39.910511 -67.733292
+v -34.857201 40.753513 -70.276390
+v -38.658401 40.304413 -63.014294
+v -22.674200 48.507912 -74.955391
+v -23.861500 46.464710 -76.129494
+v -26.665001 45.886211 -73.542389
+v -23.017599 45.112511 -79.535889
+v -33.118599 41.696213 -71.843689
+v -30.075800 43.162212 -74.083290
+v -31.562901 40.767010 -75.677193
+v -29.836500 41.453613 -77.051895
+v -29.062500 43.342010 -75.145393
+v -25.951200 43.300411 -78.500893
+v -28.791901 40.737110 -79.032890
+v -31.267599 39.074612 -77.884293
+v -24.677601 42.445213 -80.916794
+v -22.545000 43.725010 -81.721695
+v -22.692200 41.991814 -83.142990
+v -21.056999 41.835316 -84.639091
+v -24.775200 40.867115 -82.374290
+v -26.925501 37.959915 -82.854790
+v -23.573900 39.665417 -84.058990
+v -27.848900 38.766411 -81.641891
+v -40.391300 36.600613 -67.171989
+v -43.675701 34.106110 -64.953392
+v -44.006802 34.967312 -62.847996
+v -38.151402 37.749012 -69.195389
+v -40.074799 33.649410 -71.518791
+v -41.435398 33.514111 -69.661293
+v -38.198002 36.156513 -71.278793
+v -38.542999 32.494511 -74.598495
+v -41.757099 30.113512 -72.696594
+v -37.699600 34.225510 -74.122391
+v -40.942101 29.787712 -73.941193
+v -24.241501 37.990314 -84.513596
+v -25.574699 36.514214 -84.407990
+v -26.605200 35.248116 -84.282295
+v -27.466499 36.657215 -83.120590
+v -29.780500 36.218113 -81.387993
+v -28.557699 34.525814 -83.128395
+v -27.543100 32.490215 -84.496590
+v -30.632299 33.650513 -81.772293
+v -29.721001 31.683514 -83.161995
+v -33.570202 30.583313 -80.425491
+v -31.650700 31.133213 -81.782494
+v -33.416302 29.097713 -81.077789
+v -28.729900 28.419313 -84.496590
+v -29.640600 28.419313 -83.930191
+v -28.056900 31.133213 -84.496590
+v -30.422899 29.776213 -83.139595
+v -32.354698 28.419313 -82.062889
+v -30.834801 28.419313 -83.139595
+v -36.683998 32.946110 -76.339294
+v -34.174702 35.312813 -77.447693
+v -33.468399 38.159912 -75.883194
+v -32.571499 36.970512 -78.100090
+v -31.778500 36.341911 -79.372795
+v -34.538700 33.129311 -78.388489
+v -32.611401 33.311512 -80.119293
+v -37.900200 30.116814 -76.818390
+v -35.618099 30.752014 -78.599892
+v -38.486198 27.062313 -77.711395
+v -36.165401 28.758512 -78.989891
+v -40.083599 29.239311 -75.183792
+v -39.947498 27.062313 -76.354393
+v -37.670502 25.334312 -79.008392
+v -42.292301 26.722712 -74.190689
+v -41.786701 22.612713 -76.296204
+v -43.188400 22.878212 -74.977203
+v -42.328800 25.026812 -74.918190
+v -39.358398 24.348314 -77.897194
+v -40.792500 25.041014 -76.354393
+v -35.076500 27.103214 -80.431389
+v -35.068802 25.705313 -80.782593
+v -36.425800 25.705313 -79.815392
+v -32.354698 25.705313 -82.597595
+v -33.620899 25.705313 -81.782494
+v -35.068802 22.991314 -81.229797
+v -32.354698 22.991314 -82.870003
+v -34.178299 22.991314 -81.782501
+v -40.496899 20.277313 -77.923302
+v -38.134201 22.927113 -79.210297
+v -38.843700 20.277313 -79.068497
+v -40.496899 17.563213 -78.317101
+v -32.354698 20.277313 -82.925598
+v -37.782799 20.277313 -79.715302
+v -37.782799 17.563213 -79.812698
+v -32.354698 14.849214 -82.765900
+v -29.447399 16.206213 -84.385696
+v -29.402700 14.852714 -84.460999
+v -30.997700 12.134314 -83.693199
+v -29.687599 12.101013 -84.632896
+v -30.207100 10.636813 -84.488800
+v -32.183998 10.769114 -83.037003
+v -31.851200 12.134314 -83.139603
+v -32.393101 8.858533 -83.099602
+v -30.669300 9.459483 -84.399399
+v -30.989901 8.117813 -84.508400
+v -39.324799 14.849214 -79.068497
+v -40.496899 14.849213 -78.445297
+v -39.227501 17.563213 -79.068497
+v -43.210999 14.849213 -76.862999
+v -43.210999 17.563213 -76.504898
+v -40.496899 12.134313 -78.416901
+v -39.218899 12.134314 -79.068497
+v -43.210999 12.134313 -76.927803
+v -35.068802 12.134314 -81.242699
+v -34.126499 12.134314 -81.782501
+v -37.782799 12.134314 -79.762703
+v -38.622002 6.706253 -79.068497
+v -43.210999 6.706253 -76.540398
+v -43.210999 9.420242 -76.790398
+v -33.949299 9.420243 -81.938400
+v -35.068802 9.420243 -81.268997
+v -34.121899 7.926893 -81.925697
+v -37.782799 9.420243 -79.697601
+v -35.068802 6.706254 -81.355202
+v -32.314800 7.578503 -83.399200
+v -33.346199 5.902174 -82.810600
+v -44.680099 39.530006 -47.279491
+v -47.809700 37.240208 -43.345993
+v -46.344299 37.585808 -48.077393
+v -49.021301 34.636406 -47.360397
+v -49.708900 34.904808 -43.433098
+v -47.200199 35.091209 -53.397594
+v -49.708801 32.902309 -51.105896
+v -51.360100 31.998207 -47.361694
+v -53.592602 29.464708 -47.155895
+v -54.805000 27.622108 -48.886196
+v -52.248901 30.115307 -51.249294
+v -45.126301 37.029709 -54.684292
+v -45.210701 35.566608 -58.329891
+v -46.449100 36.572807 -51.459492
+v -49.232899 32.489407 -54.220898
+v -48.237499 31.649509 -58.889194
+v -53.432701 27.296310 -56.082695
+v -53.240799 28.419310 -53.284798
+v -50.979000 28.958309 -58.353397
+v -47.646999 31.188509 -61.195198
+v -53.522800 25.808010 -59.318398
+v -52.629902 24.986109 -62.504696
+v -45.249599 30.653011 -66.568192
+v -47.154301 29.855310 -64.271790
+v -51.376801 25.071711 -64.457390
+v -45.592701 28.200712 -68.869392
+v -41.980099 31.314812 -71.324989
+v -56.053501 26.073208 -47.220596
+v -56.823700 24.856808 -46.559395
+v -58.568699 21.464508 -45.397095
+v -55.716999 25.129309 -52.776096
+v -55.965401 25.705307 -49.552998
+v -57.268600 22.067009 -53.520798
+v -58.544899 20.277308 -50.909996
+v -57.342400 22.991308 -50.231598
+v -59.856899 17.902308 -47.432594
+v -53.815899 22.287910 -63.776398
+v -55.195202 22.065609 -61.137695
+v -53.804001 24.159510 -61.446297
+v -55.173000 24.763510 -56.459595
+v -54.520500 26.383209 -54.641895
+v -55.400299 23.304409 -58.694397
+v -57.063099 21.041710 -56.898598
+v -58.507198 19.598310 -52.945496
+v -57.222000 19.259209 -58.882595
+v -56.643902 19.266310 -60.479496
+v -61.362301 15.455207 -42.566395
+v -62.765701 11.456206 -43.446400
+v -61.637199 13.605807 -45.620396
+v -60.684200 15.008207 -49.132496
+v -61.228001 12.983008 -49.934696
+v -59.989498 15.866809 -52.170597
+v -59.999401 13.763610 -55.706295
+v -63.702099 8.822757 -42.598202
+v -62.632099 10.438308 -46.330101
+v -63.968399 7.130497 -43.743198
+v -63.974400 8.402777 -41.071499
+v -64.473801 7.077096 -38.315102
+v -63.271599 8.150517 -46.407398
+v -63.412998 5.953258 -48.386600
+v -61.792000 10.395908 -50.782799
+v -62.522301 8.027899 -50.621201
+v -61.892601 6.706249 -54.641899
+v -58.540001 17.711510 -56.253296
+v -59.751202 15.188309 -54.811497
+v -58.583199 15.866810 -58.373695
+v -59.832699 12.015909 -57.907097
+v -57.379200 16.607109 -61.156296
+v -58.659901 13.434409 -60.149597
+v -61.569000 9.251049 -53.539299
+v -61.246498 8.592539 -55.327301
+v -61.456200 6.706249 -55.998901
+v -59.253201 10.777309 -60.070000
+v -57.778000 12.134311 -62.784096
+v -57.452499 10.098810 -64.141098
+v -58.515598 9.607000 -62.164001
+v -59.187599 7.384710 -61.426998
+v -60.228100 8.063239 -58.713001
+v -60.696999 5.349249 -58.713001
+v -50.858200 23.943312 -66.468689
+v -46.413700 24.001711 -71.378296
+v -48.106701 23.701012 -69.823395
+v -46.547001 26.687712 -69.014496
+v -45.056801 25.943211 -71.527992
+v -44.472500 24.175312 -73.204292
+v -53.194599 21.402012 -65.493202
+v -51.426601 21.243511 -68.043297
+v -54.067200 19.598312 -65.498100
+v -54.282398 19.601212 -65.181198
+v -52.204800 19.534512 -68.172897
+v -54.966202 16.790211 -65.851501
+v -53.775700 17.013611 -67.431000
+v -45.977100 23.154510 -72.302597
+v -46.989899 21.503811 -72.294197
+v -44.845501 22.106712 -73.817200
+v -47.434200 17.307411 -73.403999
+v -48.336899 18.956112 -72.168602
+v -45.949799 20.331711 -73.640297
+v -48.397598 21.339512 -71.081802
+v -50.673401 18.563011 -70.239799
+v -52.642300 15.463511 -69.393997
+v -51.059700 15.843911 -70.887100
+v -42.158298 19.980513 -76.731300
+v -44.541401 19.598812 -74.997398
+v -44.931801 17.563211 -75.266197
+v -49.318699 16.206211 -72.283302
+v -53.366001 12.813312 -69.348602
+v -51.914700 12.748112 -70.953499
+v -50.360199 12.605612 -72.372200
+v -48.470699 13.969712 -73.500900
+v -48.639801 12.174012 -73.657700
+v -53.959499 8.590221 -69.478500
+v -52.479000 9.829111 -70.870903
+v -48.841202 10.777312 -73.640297
+v -50.909500 10.193212 -72.234901
+v -49.790001 8.841011 -73.057404
+v -52.639301 8.069101 -70.848503
+v -52.615501 6.226632 -70.857300
+v -51.194801 7.648332 -72.041298
+v -56.459499 14.849211 -64.141098
+v -55.731098 18.765110 -63.203396
+v -54.156300 14.624111 -67.922203
+v -55.424301 14.849211 -65.945602
+v -56.548901 12.134311 -65.092796
+v -56.676998 10.098810 -65.498100
+v -55.422001 11.455710 -67.019600
+v -54.875000 9.420241 -68.212196
+v -57.787399 7.384710 -64.141098
+v -56.781300 8.063240 -65.723099
+v -56.781300 6.027781 -65.942703
+v -46.622501 14.998713 -74.579399
+v -44.306499 14.849213 -76.183701
+v -44.262001 12.134313 -76.354401
+v -46.244202 12.134313 -75.190102
+v -46.247700 13.522512 -75.064697
+v -47.282101 12.134313 -74.546600
+v -45.790798 9.379473 -75.443001
+v -48.639099 9.420242 -73.784698
+v -45.924999 6.706253 -75.140503
+v -3.006270 59.978214 -87.717896
+v -5.596330 59.495514 -85.121193
+v -2.041710 61.147614 -86.066589
+v -4.763990 58.775314 -87.564896
+v -1.857450 59.202316 -89.645096
+v -4.436880 58.067917 -88.792091
+v -6.592800 55.594116 -88.846992
+v -3.030640 56.734116 -90.990791
+v -7.953480 57.354614 -85.338692
+v -8.242600 56.095814 -86.733894
+v -11.037300 54.143215 -85.387993
+v -1.231680 55.621117 -92.665390
+v -9.001510 53.433716 -88.500290
+v -7.842910 52.970314 -89.766495
+v -11.585600 50.679417 -88.132996
+v -8.955100 51.396214 -89.899292
+v -5.892560 53.349216 -90.911095
+v -2.499980 52.845314 -93.368492
+v -2.592420 54.307316 -92.638794
+v -1.142940 52.845314 -94.009796
+v -5.035640 51.488316 -92.527992
+v -2.499980 49.452717 -94.614296
+v -2.499980 51.294315 -93.995789
+v -10.642200 48.860214 -89.924690
+v -11.892900 49.279217 -88.742195
+v -2.045290 47.417213 -95.352890
+v -3.857020 47.417213 -94.585594
+v -6.053020 46.365616 -93.795090
+v -4.205970 49.217014 -93.946396
+v -7.928110 50.123714 -91.278191
+v -10.237900 46.650017 -91.177094
+v -7.447190 47.106617 -92.825890
+v -6.431920 44.703217 -93.927490
+v -5.214050 44.703217 -94.501289
+v -9.963660 44.024715 -92.108589
+v -4.477700 39.275314 -95.352890
+v -5.214050 39.275314 -95.061790
+v -5.214050 41.989315 -94.858894
+v -3.205330 44.703217 -95.352890
+v -7.928110 41.989315 -93.614494
+v -7.928110 39.275314 -93.895592
+v -9.810220 41.989315 -92.638794
+v -14.424700 48.462215 -87.151596
+v -14.679000 45.869915 -88.286194
+v -12.713400 46.201515 -89.561890
+v -13.153400 44.703217 -89.786995
+v -15.808800 43.346313 -88.379890
+v -15.831200 48.203217 -85.965790
+v -17.891800 44.941814 -85.920494
+v -17.196400 43.685516 -87.160393
+v -18.799500 40.327316 -87.144196
+v -19.514400 41.989315 -85.853592
+v -20.908600 40.623714 -85.378792
+v -20.102800 38.596714 -86.892189
+v -16.805300 40.632317 -88.567696
+v -14.444700 41.989315 -89.746994
+v -15.731000 39.994816 -89.486092
+v -11.558100 43.346313 -91.281792
+v -12.622600 40.632317 -91.281792
+v -11.999200 39.275314 -91.889694
+v -14.755000 39.333817 -90.293991
+v -2.499980 46.526215 -95.352890
+v -2.499980 39.275314 -96.084290
+v -7.928110 36.561314 -94.016792
+v -10.947000 36.561314 -92.638794
+v -10.642200 38.960316 -92.638794
+v -5.214050 36.561314 -95.211891
+v -5.214050 35.161316 -95.352890
+v -6.531270 33.921116 -94.876396
+v -9.285150 33.847214 -93.446396
+v -10.876100 31.811716 -92.734489
+v -8.182760 32.490215 -94.141090
+v -6.349840 32.490215 -95.225090
+v -9.285150 32.490215 -93.530289
+v -10.642200 29.776215 -93.015091
+v -9.272530 29.728716 -93.993095
+v -9.646890 28.546015 -94.122589
+v -21.370899 38.806915 -85.974594
+v -20.322901 36.389214 -87.599991
+v -17.427299 36.561314 -89.322693
+v -18.161301 37.729214 -88.557693
+v -16.226500 36.561314 -90.011696
+v -17.225599 33.847214 -89.924690
+v -18.784401 33.847214 -89.170090
+v -22.363300 33.848415 -87.179893
+v -13.356200 36.561314 -91.510094
+v -13.223400 39.275314 -91.205589
+v -18.784401 28.419315 -89.280190
+v -21.498400 28.419315 -88.168396
+v -21.498400 31.133215 -88.039490
+v -17.299601 28.419315 -89.924690
+v -11.043400 33.847214 -92.638794
+v -11.999200 31.133215 -92.185692
+v -13.356200 30.454815 -91.561592
+v -15.391800 28.419315 -90.664391
+v -16.070299 31.133215 -90.420494
+v -11.392600 29.933115 -92.532394
+v -10.528400 28.120815 -93.527596
+v -2.499980 36.561314 -96.340096
+v -2.499980 33.847214 -96.774193
+v -3.857020 33.847214 -96.188896
+v -0.763058 31.133215 -98.066895
+v -2.499980 31.133215 -97.401192
+v -2.499980 32.490215 -97.062592
+v -4.535530 32.490215 -96.162689
+v -4.917690 30.323215 -96.580994
+v -2.358270 28.410116 -98.204796
+v 0.214082 28.419315 -98.964790
+v -1.142940 28.419315 -98.601891
+v -6.649820 30.560715 -95.548790
+v -6.785840 27.878815 -96.493790
+v -7.693280 29.214214 -95.348495
+v -3.857020 28.419315 -97.650589
+v -23.659599 36.561314 -85.515991
+v -25.153999 33.847214 -85.608391
+v -24.212500 31.133213 -86.720993
+v -26.926600 31.133213 -85.181892
+v -23.725599 28.419313 -87.210594
+v -23.232100 31.133213 -87.210594
+v -9.285150 26.276014 -95.532089
+v -17.449900 25.705315 -89.933189
+v -21.498400 25.705315 -88.333290
+v -18.784401 24.348316 -89.496895
+v -20.141399 22.991316 -89.139603
+v -13.356200 27.062315 -91.737694
+v -13.968400 27.480715 -91.323494
+v -11.822800 27.922415 -92.534889
+v -12.385200 25.768616 -92.909592
+v -13.356200 25.705315 -92.185394
+v -14.713300 27.062315 -91.031593
+v -13.459900 24.329216 -92.751793
+v -15.284400 24.259615 -91.380295
+v -17.432800 24.361515 -89.960495
+v -16.070299 25.705315 -90.537094
+v -17.427299 22.991316 -90.501701
+v -18.528099 22.785616 -89.928101
+v -19.317301 21.468016 -90.071297
+v -22.316401 21.404514 -88.439301
+v -22.906601 22.956514 -87.898399
+v -21.494400 20.287016 -89.369904
+v -13.356200 21.634315 -94.391502
+v -11.999200 22.437315 -95.056000
+v -16.134001 23.035515 -91.360199
+v -17.476400 21.327314 -91.388199
+v -16.070299 17.563215 -94.986000
+v -20.141399 19.598816 -90.747597
+v -18.113501 17.571215 -93.537003
+v -20.012199 17.829615 -92.070099
+v -21.839399 19.358515 -89.597900
+v -21.413000 17.500015 -91.140503
+v -1.142940 27.062315 -98.983894
+v -3.178500 24.824816 -99.162392
+v -3.857020 25.705315 -98.627792
+v -2.533740 23.336718 -99.773300
+v -0.249724 22.965017 -100.237000
+v -5.214050 24.348316 -98.697189
+v -5.260720 26.429516 -97.832191
+v -6.626980 25.054914 -97.823189
+v -7.968750 26.410616 -96.451096
+v -3.857020 21.634317 -100.172997
+v -2.229680 21.405216 -100.509003
+v -5.214050 19.256817 -100.931000
+v -3.857020 18.920218 -101.327003
+v -7.966670 23.015715 -98.077599
+v -9.285150 20.745316 -98.291000
+v -10.253300 22.309015 -96.709900
+v -6.571070 19.519217 -100.404999
+v -6.543250 22.312815 -99.102898
+v -5.214050 22.141317 -99.636299
+v -7.928110 21.634315 -98.748596
+v -7.938800 18.247017 -100.432999
+v -0.464428 20.277317 -101.108002
+v -1.866250 18.241817 -101.811996
+v -5.039940 16.361317 -102.316002
+v -1.684010 16.332518 -102.660004
+v -6.571070 17.563217 -101.371002
+v -11.892800 16.733215 -98.274200
+v -13.356200 15.637016 -97.867401
+v -13.356200 18.920216 -95.979797
+v -11.720100 19.598816 -96.840202
+v -17.108700 14.654016 -96.017601
+v -20.543800 16.206215 -92.638802
+v -18.784401 15.504915 -94.363098
+v -18.784401 12.134315 -96.308502
+v -20.101200 12.748515 -94.912300
+v -21.468500 14.849216 -92.611801
+v -21.498400 12.174315 -93.995796
+v -9.213240 18.140217 -99.678596
+v -9.232090 16.134718 -100.780998
+v -1.444110 14.814317 -103.487000
+v -4.949090 13.792217 -103.702003
+v -1.535700 12.850617 -104.750999
+v -0.130638 11.240518 -106.180000
+v -6.571070 14.849217 -102.751999
+v -7.981900 14.195917 -102.570999
+v -9.285150 13.584216 -102.138000
+v -6.562580 12.592318 -104.029999
+v -2.508180 10.776517 -106.211998
+v -4.222300 10.423217 -106.130997
+v -6.560200 10.878717 -105.115997
+v -7.952930 11.350018 -104.238998
+v -6.638000 9.392717 -106.239998
+v -8.108740 8.832417 -105.981003
+v -9.444380 11.031817 -103.522003
+v -9.174000 9.339128 -104.866997
+v -11.295000 9.072217 -103.263000
+v -10.292900 8.030347 -104.860001
+v -9.169950 7.254287 -106.623001
+v -10.431400 6.066487 -106.458000
+v -11.954500 14.141016 -99.736504
+v -13.127000 13.019217 -99.542702
+v -15.738600 11.817717 -98.524902
+v -17.427299 12.364416 -97.123299
+v -11.999200 10.777316 -101.699997
+v -13.356200 8.851767 -101.819000
+v -16.328400 6.027787 -101.321999
+v -17.427299 7.426226 -99.793098
+v -20.135799 10.098815 -96.325798
+v -16.841600 9.532247 -99.083397
+v -18.784401 6.706256 -99.145401
+v -20.141399 7.384716 -97.709999
+v -21.506701 6.065506 -97.065498
+v -21.200001 8.063245 -96.422699
+v -13.865100 6.038657 -103.061996
+v -11.916700 6.368977 -104.428001
+v -24.212500 28.419313 -86.982193
+v -24.114000 25.705313 -87.163094
+v -26.926600 25.705313 -85.711990
+v -26.926600 28.419313 -85.539291
+v -24.472200 20.217012 -87.401901
+v -25.569500 20.277313 -86.704803
+v -25.351601 18.980814 -87.002602
+v -26.926600 18.920214 -85.929901
+v -23.367599 18.920216 -88.567703
+v -24.212500 18.920216 -87.894699
+v -22.668800 20.139515 -88.592400
+v -22.736000 17.531115 -89.891502
+v -25.614599 17.167213 -87.141197
+v -29.499201 20.277313 -84.418297
+v -29.640600 22.991314 -84.343697
+v -26.926600 22.991314 -85.822800
+v -27.088100 16.150312 -85.973701
+v -26.945801 17.555714 -85.960297
+v -24.191000 17.091816 -88.646400
+v -22.850300 15.527815 -90.889099
+v -24.360600 14.340414 -89.851601
+v -25.916800 15.584714 -87.335701
+v -27.061800 12.680214 -87.153099
+v -25.569500 10.957814 -90.009598
+v -24.147301 11.958816 -91.281799
+v -28.349001 15.276414 -85.134903
+v -29.204399 17.563213 -84.496597
+v -27.453899 14.622914 -85.944199
+v -28.283600 13.492214 -85.506500
+v -28.771200 10.868414 -85.841003
+v -22.855499 13.492215 -91.967697
+v -27.679800 9.391254 -87.994301
+v -26.072201 8.309764 -90.688301
+v -29.737900 8.331254 -85.853600
+v -28.001699 10.777314 -86.849701
+v -31.895201 5.967174 -84.299301
+v -27.400900 5.249095 -90.686897
+v -22.855499 9.437275 -94.003998
+v -21.498400 10.188315 -95.046600
+v -24.615900 7.111165 -93.129997
+v -22.555099 7.388996 -95.354897
+v -2.269100 9.304338 -107.638000
+v -4.645730 9.189287 -107.100998
+v -5.384630 7.631118 -108.536003
+v -1.178660 8.042318 -109.660004
+v -7.063390 7.517288 -107.870003
+v -2.720730 6.347128 -112.031998
+v -0.060711 6.322099 -113.584000
+v -70.727203 1.881531 -5.887080
+v -71.249199 0.608399 -4.196800
+v -72.626404 -0.920654 -0.083923
+v -71.376701 0.508850 -3.092370
+v -71.747200 -1.607730 -2.752920
+v -71.664902 0.604858 -1.857160
+v -72.006599 -1.713320 -1.721260
+v -73.510300 -3.406190 0.398487
+v -72.106201 -2.919369 -2.585231
+v -72.970497 -4.159970 -1.085911
+v -71.797897 -1.605039 -5.449440
+v -71.758202 -1.429869 -4.206870
+v -70.438698 0.600160 -8.940130
+v -71.596497 -3.903988 -11.358301
+v -73.247704 -5.431880 -3.725961
+v -72.116096 -4.425169 -9.541741
+v -72.729797 -4.415099 -5.355951
+v -68.951897 4.162172 -10.368699
+v -68.186096 3.517462 -14.255799
+v -69.539902 1.291632 -11.855100
+v -69.882202 2.635252 -8.502760
+v -68.538902 -0.053159 -18.341299
+v -67.821800 2.049803 -18.355200
+v -69.872398 -1.938107 -15.456000
+v -70.690903 -2.792718 -13.591600
+v -67.349602 2.296263 -20.546400
+v -69.230103 -3.436397 -20.706600
+v -70.882797 -5.760737 -17.450701
+v -73.583801 -6.863770 -0.360602
+v -73.904701 -6.863770 0.996498
+v -73.110298 -5.273860 -1.784571
+v -73.586998 -6.863770 -1.039101
+v -73.411301 -5.506770 -0.360602
+v -74.064301 -8.220760 0.996498
+v -74.418701 -9.075680 0.984079
+v -74.683098 -9.577760 2.353498
+v -75.196602 -10.189400 1.038478
+v -74.991096 -9.233460 -1.072612
+v -73.978897 -7.239319 -2.379991
+v -73.899101 -7.993350 -0.091175
+v -74.091400 -7.386109 -3.743931
+v -75.346603 -9.768190 -1.997182
+v -73.417198 -7.542048 -8.587581
+v -75.850998 -10.754500 0.054731
+v -74.739304 -12.064098 -10.803702
+v -75.367599 -10.774099 -4.442592
+v -73.662399 -8.993588 -10.241502
+v -76.291397 -12.122300 -2.226492
+v -75.339798 -12.079999 -7.400182
+v -76.005203 -15.094499 -8.478223
+v -76.551201 -13.474499 -3.194402
+v -76.632599 -12.291700 0.996497
+v -76.668701 -12.353900 -0.527237
+v -76.782898 -16.624599 -5.310523
+v -73.183197 -9.917298 -14.362202
+v -72.140198 -7.541748 -15.287901
+v -70.174103 -5.707817 -20.131901
+v -74.792297 -13.090298 -13.541402
+v -75.810204 -15.079398 -11.720003
+v -75.207100 -14.311997 -15.956702
+v -73.026199 -11.725698 -19.444002
+v -74.102798 -12.581697 -16.335001
+v -71.671799 -8.336487 -18.341301
+v -73.808899 -13.437098 -20.167402
+v -63.971600 9.420236 -37.254902
+v -64.930099 6.509775 -33.268700
+v -65.416000 7.724184 -19.698298
+v -66.216904 4.969364 -22.142799
+v -65.926498 4.077275 -27.967699
+v -65.855301 3.653265 -30.088100
+v -66.536301 2.329654 -27.416401
+v -65.931000 2.635255 -31.742001
+v -66.899300 0.599797 -28.010099
+v -68.130203 -1.054016 -22.745501
+v -67.177597 1.212834 -24.447901
+v -68.670197 -3.777646 -23.775999
+v -67.637604 -1.435726 -26.325701
+v -66.982101 -0.926509 -29.706400
+v -66.449203 0.939031 -30.656000
+v -67.831200 -3.708735 -27.893400
+v -67.531799 -4.827085 -30.216101
+v -66.878304 -2.665465 -31.657101
+v -65.307999 4.164865 -35.401199
+v -65.672798 1.064706 -35.479198
+v -66.148201 -0.120478 -33.571201
+v -64.667198 4.504337 -41.229801
+v -65.241898 2.211366 -38.781601
+v -66.466698 -4.149714 -34.286400
+v -65.687698 -2.283744 -37.476200
+v -65.833298 -4.648244 -38.115700
+v -65.154800 -2.114193 -41.410801
+v -69.269897 -7.415036 -25.592901
+v -69.882301 -7.372496 -23.537102
+v -71.204803 -10.595797 -23.090902
+v -69.936897 -10.425995 -26.689402
+v -68.462097 -8.242485 -29.187101
+v -68.289803 -6.694025 -28.519001
+v -69.246597 -10.314295 -28.484201
+v -67.727097 -6.863765 -30.790401
+v -71.194199 -8.564996 -20.970503
+v -71.151901 -12.023696 -25.157602
+v -72.945099 -14.004596 -23.743603
+v -74.843300 -15.336596 -21.471302
+v -68.500397 -9.577755 -30.215302
+v -70.395203 -12.633395 -28.003902
+v -69.339897 -12.804595 -30.531403
+v -71.047203 -15.420795 -29.991802
+v -72.384003 -14.981095 -26.773102
+v -66.962502 -7.541744 -34.286400
+v -66.392303 -6.103324 -36.237099
+v -67.853104 -9.523244 -32.285702
+v -65.786797 -5.681263 -39.854099
+v -65.115799 -4.658503 -43.107101
+v -65.609299 -6.935963 -41.573502
+v -66.366898 -7.212214 -38.705898
+v -66.813004 -8.660154 -36.202400
+v -66.599297 -8.557795 -37.742100
+v -66.330704 -8.439263 -39.181099
+v -65.713203 -9.577753 -41.071499
+v -65.950798 -10.936593 -39.702000
+v -68.383102 -10.934795 -31.572302
+v -67.748199 -11.273994 -33.565800
+v -67.175201 -10.234095 -35.111698
+v -66.924599 -12.564294 -36.757603
+v -68.985199 -14.777595 -32.992805
+v -67.967102 -14.051394 -34.562805
+v -68.147903 -12.291695 -32.929405
+v -67.462502 -13.881094 -36.416306
+v -66.493698 -10.934794 -37.717701
+v -65.502098 -10.934793 -41.071499
+v -66.357101 -12.451694 -39.243004
+v -65.748299 -12.291694 -41.071503
+v -68.284897 -15.235894 -36.159504
+v -67.487000 -13.997093 -38.423504
+v -68.306602 -14.842294 -38.894905
+v -66.251999 -13.078194 -41.279705
+v -66.944000 -13.702593 -41.700806
+v -67.147003 -13.600293 -39.953205
+v -78.315300 -16.644100 -0.276150
+v -78.642601 -17.232700 0.983814
+v -79.297798 -18.369600 -0.119986
+v -77.995201 -16.438900 -1.370773
+v -80.237000 -19.751600 0.586504
+v -80.564201 -20.296900 -0.802930
+v -77.733902 -17.896700 -3.627233
+v -79.216698 -18.686199 -1.440723
+v -80.688499 -21.285000 -2.230144
+v -78.259399 -20.037800 -4.806273
+v -77.205704 -19.390598 -8.009903
+v -80.529800 -24.321400 -4.267784
+v -81.089699 -25.452801 -3.882514
+v -81.485298 -22.665199 -1.840964
+v -81.867996 -23.147800 -0.360605
+v -81.419701 -21.685699 -0.003563
+v -81.732300 -24.504801 0.996495
+v -81.497597 -25.868000 2.373056
+v -81.529297 -23.093100 1.271026
+v -81.966003 -24.504801 -0.360605
+v -81.800797 -25.861799 0.996495
+v -81.954903 -25.861799 -0.360605
+v -81.828499 -24.504801 -1.717604
+v -81.869102 -25.861799 -1.717604
+v -81.501701 -25.861799 -3.074634
+v -79.378998 -21.673300 -4.398003
+v -77.602699 -19.540998 -6.202774
+v -78.184799 -22.164198 -7.028634
+v -77.604797 -21.210098 -8.304654
+v -77.686996 -23.144999 -9.078214
+v -78.719803 -22.568897 -6.150504
+v -81.158798 -27.093000 -4.826894
+v -80.149597 -25.610201 -5.853284
+v -78.403900 -24.516998 -8.031824
+v -79.791298 -26.119898 -6.963295
+v -78.431198 -25.560999 -8.697344
+v -76.363602 -16.557098 -10.149503
+v -76.903397 -17.719698 -14.609403
+v -77.089104 -19.108198 -9.788493
+v -77.216400 -18.867397 -13.369503
+v -77.302002 -20.668898 -10.641804
+v -76.934998 -18.572496 -18.346403
+v -76.427498 -16.483498 -17.233103
+v -76.156799 -16.971596 -20.447903
+v -77.151001 -18.838598 -15.619403
+v -77.161102 -20.494898 -15.392704
+v -77.307899 -20.395098 -13.475903
+v -76.969002 -20.433699 -17.323503
+v -77.304100 -21.917799 -11.272903
+v -77.180000 -21.790798 -13.930903
+v -77.101898 -23.423498 -12.298804
+v -77.549202 -24.504799 -9.859794
+v -77.278397 -23.154697 -10.983804
+v -77.141800 -24.506199 -11.243304
+v -77.842102 -25.861797 -9.859794
+v -77.143303 -25.877098 -11.259804
+v -76.901497 -24.504799 -12.573904
+v -76.549400 -25.696697 -13.896503
+v -76.743698 -25.861797 -12.573904
+v -76.837799 -22.469297 -15.966404
+v -76.717697 -22.808496 -18.002005
+v -76.765900 -21.112196 -19.359003
+v -76.579803 -23.826197 -19.359003
+v -82.208397 -27.218800 -0.360605
+v -82.276802 -27.402000 -1.708844
+v -81.932297 -27.218800 -3.074635
+v -83.638702 -28.774500 -1.616475
+v -82.564903 -27.968800 -3.074635
+v -83.861801 -29.848000 0.164424
+v -82.742500 -28.277300 -0.373891
+v -84.521698 -32.612202 2.351905
+v -85.818398 -31.387100 -0.292163
+v -85.440399 -32.468800 1.055335
+v -80.820396 -27.218800 -5.788694
+v -79.760201 -27.254898 -8.066255
+v -80.629898 -28.575699 -7.145775
+v -79.864098 -28.519798 -8.517825
+v -80.816498 -31.290798 -7.145745
+v -81.106003 -29.884298 -6.725945
+v -79.927696 -29.905897 -8.562015
+v -79.850800 -31.282398 -8.502795
+v -82.420303 -28.527901 -4.378945
+v -81.324997 -28.530798 -5.876615
+v -83.659401 -28.693399 -2.995625
+v -83.921997 -29.328699 -4.431655
+v -82.564903 -29.933701 -5.463625
+v -82.013000 -29.933701 -5.788695
+v -83.938797 -29.920900 -5.111515
+v -85.836800 -30.181999 -4.780835
+v -85.323700 -29.762899 -3.758645
+v -85.318398 -29.873400 -2.609185
+v -85.236801 -30.592501 -5.676025
+v -86.532204 -30.867397 -6.041805
+v -81.207901 -31.290798 -6.726565
+v -82.564903 -31.290798 -5.891685
+v -82.564903 -30.785801 -5.788695
+v -83.913803 -31.102501 -5.810165
+v -85.278999 -31.290798 -6.242465
+v -87.638199 -32.787800 -0.317345
+v -86.637001 -33.983002 1.000584
+v -86.636002 -35.361801 1.382294
+v -79.850899 -32.647800 -8.162116
+v -79.041901 -32.538300 -9.702156
+v -79.645203 -34.095600 -8.125686
+v -80.442497 -33.955399 -7.148846
+v -81.207901 -35.361801 -6.597406
+v -81.207901 -34.004799 -6.570306
+v -80.225098 -35.268700 -7.313446
+v -79.485397 -35.361801 -8.502766
+v -81.126198 -36.824501 -7.028916
+v -79.840500 -36.734501 -8.475176
+v -83.921997 -34.004799 -6.460806
+v -81.207901 -32.647800 -6.666265
+v -83.921997 -32.647800 -6.202095
+v -86.223297 -31.831999 -7.219675
+v -85.290298 -32.715099 -7.145005
+v -86.231903 -32.501701 -7.927615
+v -84.710197 -34.004799 -7.145746
+v -85.239700 -34.368698 -8.181315
+v -86.368500 -33.236599 -9.071166
+v -83.921997 -36.718800 -7.557576
+v -84.493401 -36.718800 -8.502766
+v -78.513901 -27.302698 -9.804315
+v -77.173798 -27.493498 -11.629205
+v -78.806000 -28.615198 -10.077505
+v -76.715797 -27.218798 -12.573905
+v -78.707901 -29.929699 -10.419805
+v -79.059799 -31.290798 -9.859795
+v -77.136803 -28.575699 -12.044604
+v -76.827103 -28.663498 -12.598004
+v -76.388901 -27.976099 -13.858604
+v -76.434402 -29.933699 -13.930904
+v -77.188797 -31.140099 -12.625305
+v -78.307098 -31.351398 -11.124004
+v -76.626297 -31.290798 -13.930904
+v -76.420502 -26.540197 -15.287905
+v -76.243401 -29.628597 -15.195105
+v -76.341103 -27.897299 -16.645004
+v -76.403900 -27.218796 -18.002005
+v -76.353500 -26.540195 -19.359003
+v -76.097603 -28.575697 -19.359003
+v -76.076698 -29.933697 -18.002007
+v -76.229599 -31.240498 -15.560305
+v -75.933800 -30.176395 -19.867805
+v -76.122398 -31.290796 -18.341305
+v -76.146202 -31.621496 -20.484106
+v -78.444000 -33.591999 -11.413806
+v -77.729401 -32.647797 -12.573906
+v -78.488899 -34.654095 -12.807206
+v -77.904800 -34.004795 -13.930905
+v -77.101501 -32.668896 -13.905506
+v -78.812897 -35.361801 -11.216805
+v -79.002098 -35.361801 -9.859796
+v -78.910599 -34.004799 -9.859796
+v -79.390900 -36.718800 -9.859796
+v -79.206100 -36.740200 -11.345406
+v -85.912003 -35.361801 -11.216805
+v -86.304802 -34.041599 -10.282406
+v -85.090897 -36.653999 -9.891576
+v -85.325897 -36.725601 -11.125505
+v -85.504501 -36.718796 -12.573906
+v -76.405998 -32.450397 -18.314507
+v -78.432503 -35.169296 -15.416506
+v -78.513603 -35.080696 -13.907406
+v -77.205101 -33.583397 -15.390205
+v -77.133698 -33.684795 -17.559305
+v -79.144501 -36.718796 -15.287906
+v -79.129601 -36.718796 -13.930905
+v -79.800102 -37.075195 -19.252205
+v -79.888702 -38.013298 -16.337805
+v -78.509201 -35.208397 -17.071606
+v -78.669502 -34.977997 -19.563406
+v -86.175797 -35.150295 -15.643406
+v -86.540497 -34.661095 -13.886206
+v -85.526299 -36.718796 -13.930905
+v -85.609901 -35.424896 -19.246006
+v -86.783203 -34.070595 -18.025806
+v -86.656998 -34.424595 -15.302906
+v -84.986099 -36.718796 -18.002007
+v -85.285500 -35.980495 -19.155306
+v -85.303200 -36.795197 -15.936306
+v -84.658897 -36.718796 -19.359005
+v -75.916496 -16.066196 -19.366201
+v -74.724602 -16.453497 -23.614902
+v -75.448997 -17.649296 -22.934303
+v -74.623199 -17.777796 -25.935804
+v -75.213699 -18.865496 -24.133104
+v -75.866997 -19.070496 -22.342505
+v -74.805603 -20.223797 -24.717403
+v -74.347298 -17.061296 -26.180002
+v -73.089104 -16.383097 -27.313301
+v -72.837097 -17.396397 -28.923502
+v -72.284798 -16.959694 -30.599201
+v -73.161400 -17.593594 -30.560904
+v -73.970398 -19.075895 -27.500605
+v -73.977699 -20.366896 -27.455605
+v -73.924698 -18.828894 -29.696104
+v -73.481102 -18.398697 -28.858303
+v -75.519402 -23.826197 -21.954004
+v -74.836403 -23.147797 -23.430103
+v -74.011200 -25.691696 -24.040705
+v -73.960197 -24.023697 -24.853205
+v -73.998497 -21.790796 -26.144203
+v -73.774498 -21.790796 -27.501204
+v -73.608101 -23.204296 -26.221804
+v -72.865601 -25.900597 -26.007204
+v -72.578003 -25.861795 -27.501204
+v -73.806900 -23.167995 -28.852203
+v -74.445198 -21.907995 -29.559803
+v -74.617996 -24.138393 -30.104504
+v -72.998398 -25.914297 -28.868803
+v -73.065697 -24.504797 -27.961403
+v -76.530701 -18.821695 -20.603704
+v -76.451698 -20.433697 -20.716105
+v -76.066002 -24.504797 -20.716105
+v -75.427200 -21.532797 -22.751604
+v -75.209503 -26.982697 -21.944803
+v -75.730003 -28.439297 -20.765703
+v -69.436096 -16.269995 -33.952602
+v -69.796402 -15.475794 -32.229202
+v -70.077301 -16.887295 -33.787502
+v -68.938400 -16.076395 -35.219902
+v -70.329498 -17.444593 -34.950703
+v -71.401199 -16.261095 -30.759602
+v -72.543701 -17.194994 -31.563902
+v -71.664597 -17.017794 -32.208103
+v -71.296501 -17.522295 -33.805202
+v -74.059700 -17.792795 -32.555202
+v -74.760201 -18.230295 -31.473703
+v -73.652199 -18.618494 -34.681305
+v -75.678802 -18.694195 -33.636303
+v -75.796097 -18.428995 -32.518803
+v -75.946404 -20.242195 -35.725204
+v -69.542702 -16.804295 -36.427303
+v -69.993301 -15.954594 -41.085503
+v -70.711197 -17.393394 -38.828205
+v -71.436600 -18.192894 -37.102303
+v -72.761398 -18.715294 -40.240204
+v -73.421997 -18.984295 -35.888805
+v -74.911400 -20.201494 -36.805405
+v -75.183502 -20.700594 -38.096905
+v -73.133904 -19.180395 -37.993904
+v -75.732002 -21.079794 -39.339302
+v -74.299202 -19.977495 -40.693905
+v -75.716499 -25.623693 -30.873104
+v -74.433502 -25.861694 -30.196604
+v -77.288696 -21.479294 -36.664505
+v -75.789497 -20.834892 -41.153305
+v -75.121002 -20.336195 -30.385004
+v -76.739700 -19.219494 -32.171703
+v -76.919701 -19.166695 -32.928703
+v -77.183701 -20.556194 -31.624704
+v -76.875801 -19.407394 -33.692104
+v -77.957703 -20.629894 -33.518604
+v -79.630402 -23.233095 -33.018204
+v -75.777496 -21.916195 -30.651903
+v -77.941399 -21.995794 -31.600304
+v -78.636299 -22.120695 -34.939503
+v -77.461700 -21.308594 -35.812202
+v -78.751404 -22.524593 -35.896004
+v -77.136803 -23.147795 -31.138304
+v -77.136803 -24.504795 -31.174704
+v -78.976501 -23.972994 -31.486303
+v -78.479897 -24.493694 -31.318705
+v -77.136803 -25.861794 -31.275105
+v -78.493797 -25.861794 -31.274504
+v -79.877998 -24.272194 -32.082405
+v -78.494598 -21.815695 -32.256905
+v -79.850899 -25.198694 -31.572304
+v -79.844704 -26.497595 -31.138403
+v -80.845398 -26.273994 -31.615805
+v -80.570702 -25.096394 -32.497402
+v -81.252701 -26.237894 -32.385902
+v -81.135300 -25.737095 -34.494503
+v -79.946800 -23.867794 -35.571503
+v -80.370499 -24.122494 -36.242603
+v -82.140701 -26.436193 -35.720203
+v -77.610497 -21.962994 -38.449104
+v -79.102501 -22.870794 -37.540203
+v -79.062599 -22.688293 -38.928005
+v -80.247902 -23.028294 -39.402004
+v -77.320099 -21.225893 -42.180305
+v -79.333702 -22.331993 -40.992405
+v -80.590897 -21.976593 -43.174603
+v -82.814102 -22.951992 -41.424004
+v -81.485703 -24.502295 -37.248405
+v -81.358803 -24.008095 -37.927002
+v -84.761398 -25.607695 -38.148804
+v -83.730400 -24.235495 -39.348904
+v -84.279900 -23.803093 -41.181103
+v -85.141701 -24.611494 -40.425503
+v -74.819199 -28.873297 -22.633104
+v -73.661201 -27.848097 -24.276104
+v -73.173401 -27.267796 -25.047504
+v -75.568199 -29.956097 -21.320107
+v -75.488098 -30.694897 -22.233807
+v -74.483299 -29.741396 -24.006506
+v -75.222900 -31.177896 -25.123705
+v -72.534798 -27.366497 -26.555904
+v -72.518600 -27.395197 -27.830503
+v -72.934097 -28.091696 -25.880903
+v -73.188400 -28.926897 -26.376404
+v -73.068398 -28.620195 -27.868803
+v -73.039299 -27.218897 -28.907804
+v -73.291397 -28.172396 -28.837803
+v -74.442001 -27.213295 -30.177504
+v -74.422699 -28.575695 -29.801104
+v -74.934998 -28.575695 -30.215303
+v -73.720200 -29.667797 -27.256605
+v -74.389801 -29.946096 -28.749506
+v -75.468803 -31.632896 -27.664106
+v -75.772400 -31.323795 -28.974405
+v -79.838997 -31.009295 -30.119106
+v -81.220200 -28.778294 -30.256104
+v -81.207901 -29.933695 -29.855106
+v -82.608803 -29.204393 -29.991604
+v -83.244301 -29.882895 -29.451105
+v -83.921997 -30.454796 -28.858305
+v -82.584702 -30.992796 -28.873306
+v -85.247299 -31.288095 -27.500006
+v -83.921997 -31.290796 -28.096806
+v -85.014099 -30.501495 -28.689306
+v -86.247299 -31.235697 -27.276806
+v -86.494102 -30.852695 -28.579805
+v -84.831902 -30.214495 -29.517006
+v -85.337196 -30.389395 -30.352005
+v -83.911797 -29.678394 -30.598005
+v -86.478500 -30.942394 -29.812506
+v -76.426102 -32.434296 -22.057306
+v -76.458298 -32.647797 -24.787207
+v -77.090797 -33.252197 -20.708605
+v -78.565804 -34.795395 -23.935705
+v -77.571503 -33.882298 -25.667406
+v -79.228699 -35.586697 -22.891706
+v -79.775597 -36.633396 -20.699406
+v -79.979897 -36.590897 -21.617405
+v -79.917603 -35.693096 -24.956406
+v -81.117500 -37.048695 -22.118406
+v -78.841698 -34.797997 -25.943405
+v -81.221100 -36.248695 -24.271406
+v -86.100700 -34.004795 -22.073105
+v -85.415497 -33.907394 -23.994106
+v -86.636002 -32.989697 -23.430105
+v -86.636002 -33.503696 -22.073105
+v -82.634804 -35.547195 -25.181505
+v -83.921997 -35.001797 -24.787207
+v -84.095901 -35.571598 -23.552305
+v -83.700699 -36.622696 -21.986805
+v -82.547302 -36.611797 -23.259007
+v -76.352997 -32.610695 -26.065706
+v -76.972702 -33.157696 -26.943707
+v -78.716797 -34.142998 -27.377205
+v -77.556801 -33.413097 -27.594505
+v -77.177696 -32.517796 -28.853506
+v -77.136803 -31.290794 -30.018106
+v -78.493797 -32.647797 -29.206905
+v -78.493797 -32.975796 -28.858305
+v -78.493698 -31.277994 -30.213606
+v -79.823303 -32.758896 -29.100206
+v -81.137299 -32.610695 -28.833805
+v -81.207901 -31.290794 -29.412806
+v -79.887901 -34.070095 -27.879406
+v -79.791199 -34.868496 -26.700006
+v -81.271698 -34.027496 -27.736706
+v -81.208298 -35.328495 -26.111607
+v -84.877502 -34.004795 -24.787207
+v -83.719498 -34.089996 -26.145405
+v -85.129097 -32.577698 -26.149805
+v -82.657204 -32.704197 -28.003105
+v -84.139198 -32.212196 -27.314806
+v -82.564903 -34.886696 -26.144205
+v -75.779800 -27.218794 -30.967604
+v -75.779800 -28.575695 -30.729803
+v -78.493797 -27.218794 -31.227304
+v -81.156502 -27.342295 -31.033903
+v -78.493797 -28.575695 -31.076803
+v -79.850899 -28.575695 -30.753704
+v -81.500099 -28.031094 -30.645205
+v -77.136803 -30.995695 -30.215305
+v -75.812897 -29.922695 -30.214205
+v -81.954300 -27.626595 -31.686903
+v -82.479698 -28.528194 -33.351204
+v -82.909897 -28.858194 -30.926704
+v -83.490997 -29.723295 -32.899506
+v -86.083603 -31.420294 -32.166004
+v -86.750999 -31.912195 -33.044003
+v -83.559998 -29.503494 -34.239704
+v -85.957497 -30.907795 -34.286404
+v -85.531799 -29.627495 -35.551502
+v -87.250900 -29.983694 -35.903103
+v -86.691498 -28.162394 -37.157906
+v -83.864700 -26.425995 -36.877705
+v -86.547501 -26.762894 -38.669502
+v -86.318604 -26.020994 -39.966805
+v -85.460701 -25.051992 -41.752903
+v -86.772003 -26.860895 -40.738205
+v -86.636002 -36.718792 -38.706608
+v -85.765900 -33.984692 -41.036003
+v -83.921997 -35.837791 -41.071507
+v -38.545898 1.278273 -79.068497
+v -43.210999 1.278272 -75.967102
+v -43.232399 4.005932 -76.236603
+v -35.068802 3.992263 -81.578300
+v -37.782799 3.992263 -79.542503
+v -33.574200 3.658463 -83.137398
+v -35.068001 2.528763 -81.783096
+v -37.782799 1.278273 -79.678703
+v -35.516102 -0.122973 -81.831001
+v -37.782799 6.706253 -79.551102
+v -40.496899 -4.149707 -77.839500
+v -43.197498 -4.183218 -75.763702
+v -37.506199 -1.435717 -80.179100
+v -36.471001 -3.741077 -81.737297
+v -37.447601 -2.792707 -80.425499
+v -39.067501 -4.149707 -79.068497
+v -37.773800 -4.447317 -80.401604
+v -35.139000 -2.516706 -83.139603
+v -38.702702 -1.435717 -79.068497
+v -39.626301 -6.537037 -79.035400
+v -40.496899 -6.863757 -78.334602
+v -42.022099 -9.608328 -77.729500
+v -43.210999 -9.115707 -76.354401
+v -42.732300 -6.901237 -76.328499
+v -36.918301 -5.506757 -81.782501
+v -38.177299 -6.446157 -80.535004
+v -37.876099 -8.111927 -81.777100
+v -36.017399 -4.828237 -82.855301
+v -34.522598 -4.668506 -85.323799
+v -35.209801 -6.901776 -85.514397
+v -37.092499 -8.220747 -83.139603
+v -39.290699 -9.031847 -80.368797
+v -40.501301 -9.196647 -79.122498
+v -38.565300 -9.577746 -81.782501
+v -43.268799 -9.577747 -76.417999
+v -42.714500 -11.366287 -77.703300
+v -41.619301 -10.839687 -78.720703
+v -41.851299 -12.004686 -79.178703
+v -38.464500 -10.934787 -83.139603
+v -36.933498 -9.577746 -84.496597
+v -39.218800 -10.823087 -81.818100
+v -40.796799 -11.607487 -80.281502
+v -38.058701 -12.728786 -85.655998
+v -40.182400 -15.565986 -85.847298
+v -40.818901 -13.485786 -82.090401
+v -41.497501 -16.203787 -84.288002
+v -64.092400 3.823008 -46.619999
+v -64.544998 3.144237 -43.700802
+v -64.900299 1.963757 -41.762299
+v -63.522800 2.635258 -50.570801
+v -63.002899 4.501288 -51.842999
+v -64.008202 1.278268 -48.535198
+v -64.876900 -0.699334 -43.117901
+v -64.488197 -0.078728 -45.821201
+v -64.230499 -1.435722 -47.856701
+v -64.022301 -3.471242 -48.535198
+v -64.005600 -1.435722 -49.213699
+v -63.312698 -2.769892 -52.285702
+v -63.237598 -1.251331 -52.789001
+v -63.599602 -4.828242 -49.892300
+v -61.972599 4.719799 -55.631302
+v -60.272999 3.992260 -60.070000
+v -60.852402 2.635260 -59.066898
+v -61.413601 3.992259 -57.355900
+v -59.467602 5.088760 -61.426998
+v -59.495399 2.635260 -61.743801
+v -61.603699 1.956739 -57.355900
+v -60.407101 2.635260 -60.070000
+v -60.548901 -0.078725 -60.070000
+v -59.421299 0.599802 -61.983200
+v -61.828701 -1.149531 -57.161301
+v -63.041302 0.599801 -53.284801
+v -63.200001 -4.149712 -51.927799
+v -62.806000 -4.149712 -53.284801
+v -61.927601 -4.149711 -55.998901
+v -61.912701 -2.719051 -56.703201
+v -58.159500 0.191050 -64.010300
+v -59.426399 -1.481070 -61.921101
+v -59.322102 -4.141710 -61.286900
+v -58.108501 -2.823110 -63.548100
+v -58.323002 -4.149710 -62.784100
+v -60.659302 -1.332020 -59.847599
+v -60.520901 -2.746690 -59.785000
+v -61.377201 -4.149711 -57.355900
+v -60.026699 -4.149710 -60.070000
+v -65.091797 -5.845753 -43.738800
+v -64.644699 -3.471243 -45.142700
+v -64.357903 -5.461052 -46.471100
+v -64.379204 -4.149713 -46.499699
+v -64.835999 -6.863763 -44.842300
+v -64.218697 -8.220753 -46.499699
+v -64.803497 -8.220753 -44.751301
+v -64.713303 -9.572263 -44.464100
+v -63.934898 -6.185232 -47.856701
+v -63.566502 -6.223742 -49.213699
+v -63.211498 -9.577752 -49.213699
+v -64.307503 -12.279093 -44.867702
+v -64.995300 -13.567693 -44.053505
+v -64.923500 -12.291694 -42.955105
+v -64.289597 -13.650393 -46.489605
+v -63.962601 -12.291693 -46.499702
+v -64.923500 -14.031693 -45.142704
+v -64.946800 -15.125193 -46.927605
+v -63.210098 -12.291693 -49.213703
+v -63.959999 -10.763292 -46.397900
+v -62.269699 -9.577751 -52.091202
+v -62.209400 -10.947791 -51.927799
+v -63.670300 -15.005692 -49.213703
+v -62.188801 -12.289492 -51.912502
+v -62.209400 -13.178791 -51.927803
+v -62.209400 -6.863761 -53.458099
+v -62.688801 -6.863761 -51.927799
+v -61.790501 -6.863761 -54.641899
+v -60.614498 -6.863760 -57.355900
+v -61.260101 -9.577751 -54.641899
+v -56.367401 -9.577749 -62.784100
+v -59.495399 -9.577750 -58.062801
+v -59.495399 -6.863760 -59.446800
+v -59.495399 -5.857720 -60.070000
+v -59.912899 -9.577750 -57.355900
+v -59.495399 -12.573690 -57.355904
+v -65.437302 -8.220754 -42.428600
+v -65.314003 -9.577753 -42.428600
+v -64.962303 -10.937293 -42.708900
+v -65.145699 -12.291694 -42.428604
+v -66.280502 -13.648693 -42.471603
+v -68.013802 -14.368693 -42.752903
+v -68.225700 -14.367093 -41.288803
+v -66.350800 -14.128694 -43.506504
+v -69.508797 -15.243693 -42.497505
+v -68.670700 -14.868593 -43.720104
+v -66.348198 -15.006992 -45.191803
+v -48.639099 5.349252 -73.472298
+v -48.628899 6.706252 -73.634697
+v -47.950600 3.992262 -73.640297
+v -48.639099 1.278272 -72.680801
+v -47.026100 1.278272 -73.640297
+v -54.025501 4.873551 -69.474098
+v -54.021999 6.704971 -69.536598
+v -52.490299 4.121841 -70.728699
+v -50.747799 2.635262 -71.645401
+v -49.996101 6.027782 -72.702301
+v -51.473000 1.278272 -70.926300
+v -48.639099 -4.149709 -71.624901
+v -45.809299 -4.149708 -73.640297
+v -57.938202 5.349250 -64.141098
+v -56.969700 3.313791 -65.781403
+v -55.301701 7.373611 -67.980202
+v -56.213501 4.670731 -66.855202
+v -58.024200 3.313791 -64.141098
+v -56.946999 0.428783 -65.770599
+v -56.144100 1.956741 -66.855202
+v -55.220501 2.040481 -67.930801
+v -55.171700 4.639171 -68.197304
+v -54.067200 2.635261 -69.128403
+v -54.067200 1.278271 -68.897003
+v -57.971100 -1.429010 -64.068497
+v -56.132000 -4.149710 -65.498100
+v -57.038200 -4.149710 -64.451401
+v -56.781300 -2.304739 -65.357903
+v -55.584099 -1.055469 -67.004097
+v -54.067200 -4.149709 -67.537201
+v -45.924999 3.992262 -74.797997
+v -45.924999 1.278272 -74.314400
+v -49.237900 -15.005689 -70.926300
+v -51.353199 -15.005689 -68.426697
+v -53.313000 -4.149709 -68.212196
+v -51.524300 -15.005689 -68.212196
+v -54.067200 -15.005690 -65.290199
+v -45.928398 -9.690658 -73.637199
+v -45.724899 -6.863758 -73.640297
+v -46.370300 -12.291688 -73.640297
+v -47.069698 -15.005688 -73.640297
+v -48.639099 -15.005689 -71.622704
+v -56.028301 -15.005690 -62.784103
+v -43.607800 -11.057987 -76.492104
+v -45.924999 -12.291688 -74.236900
+v -44.631401 -13.648687 -76.354401
+v -45.924999 -15.005688 -75.237801
+v -45.528900 -15.684288 -76.138496
+v -43.494499 -13.818088 -78.046700
+v -64.923500 -17.719692 -48.650505
+v -64.302002 -17.719692 -49.213703
+v -62.333698 -15.005692 -51.927803
+v -62.209400 -17.341692 -51.927803
+v -62.209400 -23.147793 -48.800205
+v -62.206402 -22.459793 -49.216503
+v -61.788200 -23.147793 -49.213703
+v -64.923500 -23.147793 -47.488205
+v -64.923500 -20.433693 -48.537205
+v -63.659599 -20.433693 -49.213703
+v -61.515099 -21.790792 -50.570805
+v -61.035599 -20.408192 -52.307003
+v -60.604698 -21.538193 -52.527504
+v -60.869202 -23.361492 -50.551704
+v -62.209400 -24.504793 -48.194904
+v -62.227699 -25.861593 -47.899506
+v -63.566502 -25.861792 -47.266903
+v -64.923500 -25.861792 -46.924103
+v -60.752201 -24.435892 -50.060905
+v -59.495399 -15.005691 -57.001503
+v -59.288300 -15.005691 -57.355904
+v -58.782398 -20.433691 -57.355904
+v -59.424801 -24.431190 -54.299603
+v -59.042500 -23.147791 -55.998905
+v -58.759998 -24.504791 -56.677402
+v -59.077801 -25.861790 -55.998905
+v -59.579498 -25.861790 -53.862705
+v -58.681801 -25.861790 -57.355904
+v -59.915001 -20.433691 -54.641903
+v -59.330101 -20.433691 -55.998905
+v -59.486698 -21.910091 -55.135303
+v -60.039902 -25.861792 -51.927803
+v -60.072800 -24.504793 -51.927803
+v -58.121201 -23.147791 -58.713005
+v -58.690601 -21.790791 -57.355904
+v -57.513199 -21.790791 -60.070004
+v -57.468102 -20.433691 -60.070004
+v -55.911598 -20.433691 -62.784103
+v -56.470501 -21.430090 -62.067505
+v -56.351200 -24.305990 -62.927505
+v -57.901901 -25.822790 -59.757103
+v -56.720200 -25.861790 -62.630905
+v -57.598400 -24.538290 -60.164803
+v -61.194401 -27.218792 -49.213703
+v -62.273701 -27.143692 -47.944305
+v -60.951401 -25.870693 -49.267105
+v -62.209400 -28.575693 -48.590004
+v -62.035000 -29.219492 -49.272804
+v -64.923500 -27.218792 -46.999004
+v -63.566502 -27.218792 -47.317303
+v -64.923500 -28.575693 -47.159306
+v -60.446301 -25.861792 -50.570805
+v -60.412498 -27.559893 -51.899204
+v -60.770000 -27.298592 -50.306202
+v -61.227600 -28.672392 -50.560303
+v -63.629601 -29.656992 -47.980904
+v -64.923500 -29.933693 -47.440605
+v -63.455002 -28.965591 -47.771603
+v -64.951599 -31.316193 -47.891205
+v -63.970901 -32.111794 -49.158104
+v -64.930702 -33.934391 -49.216305
+v -64.109596 -33.643692 -50.604504
+v -63.970299 -34.617092 -52.953503
+v -65.196198 -36.040192 -50.561207
+v -59.418201 -27.253490 -56.013905
+v -59.879101 -27.218790 -53.963406
+v -60.290501 -29.284491 -55.824406
+v -61.997200 -30.173492 -50.677002
+v -62.405499 -32.013393 -53.391605
+v -61.768299 -32.230793 -55.962803
+v -58.605900 -27.218790 -58.731606
+v -57.685200 -27.365690 -61.484203
+v -56.191898 -26.056490 -63.898903
+v -58.973801 -28.993490 -60.060703
+v -57.965801 -29.485191 -63.980404
+v -59.094398 -31.290791 -63.462605
+v -62.830399 -34.198093 -55.744705
+v -64.270203 -36.557293 -54.294609
+v -61.379002 -34.428490 -60.790905
+v -60.116699 -33.083687 -62.953705
+v -63.102200 -36.168194 -57.370106
+v -62.018101 -36.891487 -61.596706
+v -62.758701 -38.075687 -60.070007
+v -60.801300 -35.700687 -64.480309
+v -66.990402 -16.362692 -46.499702
+v -68.474197 -16.367893 -45.991505
+v -68.020500 -15.168192 -44.865303
+v -66.280502 -15.954792 -46.499702
+v -69.358803 -15.660192 -44.701805
+v -70.152496 -16.836992 -45.881702
+v -71.347504 -17.303293 -45.660503
+v -68.842903 -17.621292 -46.826004
+v -70.730202 -16.255692 -43.971203
+v -73.479500 -18.528292 -43.836403
+v -73.130096 -18.505993 -45.658905
+v -71.293900 -18.014193 -46.477604
+v -75.360497 -19.811993 -43.473003
+v -75.343803 -19.618492 -44.470505
+v -75.087196 -19.633892 -45.657505
+v -69.133598 -20.377693 -47.588104
+v -68.994598 -19.076693 -47.383404
+v -67.637604 -19.076693 -47.659405
+v -67.637604 -20.433693 -47.795403
+v -70.351601 -19.076693 -47.197704
+v -71.708603 -19.076693 -46.965103
+v -73.540298 -19.336592 -46.479202
+v -71.708603 -20.433693 -47.379204
+v -73.065697 -20.433693 -47.249603
+v -74.422699 -20.433693 -46.972702
+v -75.578796 -20.414793 -46.502003
+v -70.351601 -23.147793 -47.402905
+v -67.637604 -25.861792 -46.754402
+v -73.582497 -23.227892 -47.506004
+v -73.065697 -21.790792 -47.484604
+v -74.422699 -21.790792 -47.408405
+v -73.065697 -25.861792 -47.174202
+v -70.351601 -25.861792 -47.034405
+v -78.290802 -21.019293 -44.058205
+v -77.525497 -21.684593 -46.638504
+v -77.334297 -20.706293 -45.547802
+v -78.143303 -21.949593 -46.467705
+v -79.414597 -22.069893 -45.764706
+v -81.346497 -22.369993 -44.148605
+v -79.939697 -21.854092 -44.875706
+v -80.521500 -23.074993 -45.773605
+v -78.796898 -23.110193 -46.680004
+v -79.763100 -24.507593 -46.439903
+v -81.207901 -24.504793 -45.828705
+v -79.803299 -25.860092 -46.321404
+v -81.207901 -25.861792 -45.771904
+v -83.170303 -23.077291 -42.823902
+v -84.373398 -24.223793 -42.947803
+v -82.676300 -23.342793 -44.244602
+v -85.513100 -25.868992 -42.575504
+v -82.551804 -25.856993 -45.124104
+v -83.921997 -25.861792 -44.217102
+v -83.446297 -24.495192 -44.271706
+v -82.348503 -24.295393 -45.133102
+v -77.136803 -23.147793 -47.187103
+v -78.493797 -24.504793 -46.794003
+v -70.351601 -31.290792 -46.178604
+v -70.351601 -29.017792 -46.499702
+v -68.943298 -31.290792 -46.499702
+v -75.779800 -31.290792 -45.347404
+v -75.777901 -28.348492 -46.501205
+v -67.637604 -28.575693 -46.780704
+v -67.637604 -31.290792 -46.802902
+v -68.800301 -34.004791 -46.499702
+v -70.351601 -36.718792 -46.106709
+v -69.504700 -36.731792 -46.499508
+v -67.637604 -34.004791 -47.138603
+v -67.637604 -36.718792 -47.782009
+v -65.568901 -35.361794 -49.213707
+v -66.678596 -37.900391 -49.249809
+v -78.493797 -28.575693 -46.035706
+v -78.493797 -26.597692 -46.499702
+v -81.207901 -28.575693 -44.999405
+v -78.493797 -31.290792 -45.293304
+v -81.207901 -31.290792 -44.537106
+v -86.437401 -27.031193 -41.720802
+v -85.976501 -27.194792 -42.403706
+v -85.278999 -28.575693 -42.963802
+v -85.083801 -27.281992 -43.283703
+v -83.981400 -27.394793 -43.999603
+v -82.945999 -31.290792 -43.785603
+v -83.921097 -31.289793 -43.196705
+v -83.921997 -29.933693 -43.606804
+v -75.779800 -25.861792 -46.937305
+v -81.207901 -34.004791 -43.502804
+v -81.207901 -33.179691 -43.785603
+v -75.779800 -36.718792 -44.901108
+v -83.921997 -34.004791 -42.046005
+v -86.418602 -32.647392 -41.027805
+v -81.207901 -36.718792 -42.416107
+v -83.260101 -36.718792 -41.071507
+v -65.551399 -38.074291 -51.924507
+v -51.722801 -17.719688 -68.212196
+v -54.095798 -20.459688 -65.627998
+v -48.051800 -17.041189 -73.102600
+v -49.465900 -19.755188 -72.244003
+v -46.907799 -17.041189 -74.788300
+v -51.353199 -17.719688 -68.746101
+v -49.743999 -17.834488 -71.030197
+v -51.292000 -21.105589 -69.991302
+v -50.226501 -22.822788 -72.757202
+v -48.137901 -19.593189 -74.318802
+v -52.094398 -24.195288 -70.311005
+v -51.964401 -24.865189 -71.231804
+v -52.864300 -25.948088 -70.902008
+v -50.730301 -24.714689 -73.986710
+v -52.604099 -26.318388 -72.759109
+v -55.065399 -20.433691 -64.141098
+v -53.885300 -23.425688 -67.078011
+v -55.109200 -22.926289 -64.887100
+v -55.146999 -24.248589 -65.230110
+v -53.907799 -24.497389 -67.579010
+v -55.266998 -26.246788 -66.088905
+v -54.106800 -25.845188 -68.175209
+v -45.523602 -16.930187 -76.978401
+v -43.070202 -15.005687 -79.747002
+v -45.055599 -17.770687 -78.689301
+v -47.256500 -20.570887 -76.681801
+v -48.637100 -21.597889 -74.904701
+v -45.494099 -19.494087 -79.767303
+v -43.136299 -16.692987 -81.568802
+v -43.988098 -20.004686 -84.856003
+v -49.035702 -22.993988 -75.661797
+v -49.156200 -24.662888 -79.204506
+v -51.353199 -25.822289 -75.133308
+v -46.921902 -21.468987 -78.983704
+v -46.772099 -22.603987 -81.705002
+v -48.318100 -25.522987 -84.630905
+v -47.018200 -23.812687 -83.799408
+v -50.147999 -26.115387 -80.651306
+v -54.383801 -26.927088 -69.107910
+v -54.472698 -27.665188 -70.648109
+v -56.408600 -28.122988 -65.901810
+v -56.944599 -27.435490 -63.466503
+v -58.312599 -31.293789 -66.160606
+v -55.951199 -29.277988 -70.055611
+v -54.256699 -28.628788 -75.595810
+v -55.554901 -29.835789 -73.979607
+v -56.698200 -31.290789 -72.961807
+v -58.751701 -34.004787 -69.569206
+v -59.865898 -34.683289 -66.176704
+v -58.811199 -32.647789 -66.855209
+v -61.134499 -38.075687 -65.498108
+v -60.046001 -36.718788 -68.212204
+v -60.431499 -36.718788 -66.855209
+v -58.138302 -33.285789 -70.926308
+v -57.559200 -32.647789 -72.283310
+v -57.166500 -30.942289 -69.832008
+v -57.754799 -33.750088 -73.663307
+v -58.606300 -35.361790 -72.283310
+v -59.291599 -35.361790 -69.569206
+v -52.366100 -27.254887 -77.238106
+v -53.113400 -28.664486 -79.696007
+v -55.195099 -29.859989 -76.000107
+v -52.318298 -28.720488 -83.436104
+v -49.384499 -26.801287 -85.665909
+v -54.438900 -30.210287 -79.861809
+v -54.150398 -30.787786 -82.976807
+v -52.970699 -30.272787 -85.996811
+v -53.685398 -31.599386 -87.014107
+v -55.670898 -31.290787 -77.924408
+v -55.946499 -32.292488 -79.270508
+v -57.763500 -36.209789 -77.541809
+v -58.489799 -36.562889 -74.514511
+v -57.982601 -35.191990 -75.026108
+v -55.379101 -32.381786 -82.303810
+v -55.628502 -33.739285 -84.402008
+v -54.267200 -32.647785 -87.549904
+v -57.094898 -35.700687 -80.595108
+v -57.132198 -34.682690 -78.559608
+v -57.964100 -38.405190 -79.511711
+v -55.999802 -35.700684 -86.340508
+v -56.325100 -34.312885 -82.048706
+v -43.210999 -78.983803 2.353487
+v -43.210999 -80.143700 -1.637613
+v -86.636002 -39.432701 1.184094
+v -86.636002 -42.146702 0.262191
+v -81.119499 -38.193501 -8.316096
+v -83.921997 -37.802700 -8.502766
+v -80.000603 -37.963799 -10.101605
+v -81.207901 -38.826698 -9.859797
+v -81.207901 -39.121799 -11.216806
+v -79.835098 -38.170795 -13.540807
+v -81.207901 -39.279697 -12.573907
+v -81.342003 -39.414997 -13.852306
+v -83.921997 -39.109699 -11.216806
+v -83.491798 -39.432697 -13.930906
+v -83.921997 -39.118797 -13.930906
+v -82.564903 -39.638695 -13.930906
+v -81.207901 -39.183697 -15.287907
+v -79.850304 -38.076096 -15.304107
+v -81.207901 -38.913795 -16.645006
+v -83.921997 -38.756798 -15.287907
+v -83.910202 -38.156395 -17.446806
+v -82.638199 -38.183697 -19.408506
+v -83.921997 -37.440697 -19.359005
+v -82.565002 -39.432995 -15.256706
+v -75.779800 -57.990700 -3.074640
+v -75.779800 -58.430698 -4.554669
+v -77.309303 -53.002701 2.353491
+v -81.207901 -48.334702 2.353492
+v -81.207901 -53.002701 -2.963739
+v -86.636002 -47.574799 -2.362508
+v -86.716003 -48.441002 -3.051498
+v -84.466599 -50.288799 -3.074638
+v -83.921997 -50.681801 -3.074638
+v -82.605400 -53.002602 -5.787969
+v -86.636002 -50.288799 -5.118488
+v -83.921997 -52.132801 -5.788699
+v -87.406898 -50.272900 -5.738198
+v -86.636002 -51.795700 -8.502769
+v -81.207901 -53.075699 -3.074639
+v -81.207901 -54.502701 -8.502769
+v -76.529297 -58.430698 -8.502769
+v -83.775101 -52.939098 -8.516178
+v -75.777298 -58.427296 -13.768809
+v -75.779800 -56.102695 -19.359009
+v -74.382202 -58.430695 -19.359009
+v -83.921997 -53.002701 -9.386219
+v -86.636002 -52.281700 -11.216808
+v -84.225800 -53.002701 -11.216808
+v -86.636002 -52.348797 -13.930908
+v -84.018799 -53.001595 -14.115608
+v -86.633904 -52.050396 -16.645807
+v -82.868500 -53.002697 -16.645010
+v -83.921997 -52.257797 -19.359007
+v -81.211899 -53.001396 -19.361410
+v -81.207901 -53.998695 -13.930908
+v -81.207901 -37.582798 -20.716106
+v -81.186203 -38.212296 -18.924606
+v -82.570900 -37.240696 -21.805706
+v -84.038300 -36.826397 -20.808605
+v -81.207901 -42.146694 -39.743008
+v -81.289398 -39.745193 -41.040508
+v -77.692902 -42.146694 -41.071507
+v -83.921997 -39.432693 -39.669506
+v -83.921997 -36.718792 -40.577309
+v -86.636002 -37.303791 -38.357506
+v -85.112198 -42.146694 -35.643406
+v -86.636002 -39.432693 -36.822708
+v -85.245201 -39.432693 -38.357506
+v -83.494102 -42.146694 -38.357506
+v -83.921997 -41.725792 -38.357506
+v -81.525497 -47.574791 -35.643406
+v -86.541496 -47.574795 -30.215307
+v -86.636002 -47.423798 -30.215307
+v -86.636002 -42.146698 -34.186707
+v -75.779800 -45.651691 -41.071507
+v -81.207901 -47.574791 -35.836208
+v -75.779800 -47.574791 -40.423706
+v -83.921997 -42.146694 -37.826607
+v -86.636002 -47.574795 -30.032207
+v -75.779800 -55.817696 -30.215309
+v -86.636002 -51.502697 -19.359007
+v -67.998100 -58.430691 -41.071507
+v -73.412003 -58.430695 -30.215309
+v -75.119904 -47.574791 -41.071507
+v -64.923500 -62.540798 2.353490
+v -64.923500 -66.196701 -19.359011
+v -50.734299 -80.143700 -19.359013
+v -64.923500 -62.480793 -41.071510
+v -64.108398 -38.075691 -55.998909
+v -64.639801 -38.075691 -54.641907
+v -64.099503 -40.789692 -57.355907
+v -65.450699 -39.432693 -53.284809
+v -64.925003 -42.140194 -55.998909
+v -65.165604 -40.789692 -54.641907
+v -62.573200 -39.432690 -61.427006
+v -62.127899 -38.075687 -62.230808
+v -61.780800 -39.432690 -64.141106
+v -63.566502 -42.146690 -59.572407
+v -62.830898 -41.468189 -61.427006
+v -62.153099 -42.872490 -64.004105
+v -64.119598 -43.503689 -58.713009
+v -64.923500 -58.430691 -48.462406
+v -64.923500 -55.116791 -51.927807
+v -62.800598 -58.430691 -51.927807
+v -64.923500 -47.574791 -58.087009
+v -64.177498 -47.574787 -60.070007
+v -63.154202 -47.574787 -62.784107
+v -58.209801 -58.430687 -62.784107
+v -70.351601 -39.668793 -46.499706
+v -75.779800 -42.146694 -42.256107
+v -66.395103 -38.872093 -50.498806
+v -67.644897 -40.175194 -49.205608
+v -70.351601 -42.146694 -46.841106
+v -67.637604 -39.432693 -48.814209
+v -68.237701 -42.144993 -49.212009
+v -67.337997 -42.196194 -50.704006
+v -66.151604 -40.652294 -52.308308
+v -66.680000 -42.146694 -51.927608
+v -70.713203 -42.146694 -46.499706
+v -70.607498 -47.574791 -46.499706
+v -68.732803 -44.860691 -49.213707
+v -67.637604 -44.860691 -51.149307
+v -67.253197 -44.860691 -51.927807
+v -70.351601 -44.860691 -47.087109
+v -68.772301 -47.574791 -49.213707
+v -67.637604 -47.574791 -51.542507
+v -66.280098 -47.574791 -54.641907
+v -70.351601 -47.574791 -46.814709
+v -66.061203 -42.146694 -53.284809
+v -66.072502 -44.860691 -54.641907
+v -64.923500 -44.716694 -57.355907
+v -65.196098 -47.574791 -57.355907
+v -61.019402 -39.484188 -66.595108
+v -60.409401 -38.075687 -68.212204
+v -61.216400 -42.825287 -66.855209
+v -59.257301 -36.810188 -71.552811
+v -59.066700 -38.075687 -73.640305
+v -60.126598 -39.432690 -70.247711
+v -60.124100 -42.485989 -71.265511
+v -59.083199 -40.789688 -76.015205
+v -59.663601 -40.111290 -72.426208
+v -60.882198 -43.186687 -68.212204
+v -61.468399 -44.860687 -66.855209
+v -62.243801 -47.574787 -65.498108
+v -60.213200 -44.860687 -71.604805
+v -60.708500 -44.860687 -69.569206
+v -59.764702 -44.860687 -73.640305
+v -61.400799 -47.574787 -68.212204
+v -60.615101 -47.574787 -70.926308
+v -59.975300 -47.574787 -73.640305
+v -58.812901 -39.432690 -76.354408
+v -57.313400 -38.753685 -83.818108
+v -56.618698 -38.780483 -87.380310
+v -57.760700 -40.619984 -82.885109
+v -58.354198 -42.146690 -80.425507
+v -57.826599 -42.146687 -83.463409
+v -58.929199 -43.503689 -77.711411
+v -59.501400 -44.860687 -74.997406
+v -59.495399 -47.574787 -76.060806
+v -58.610600 -47.574787 -80.425507
+v -59.075401 -53.002689 -73.640305
+v -59.495399 -52.270790 -73.640305
+v -56.874699 -58.430687 -73.640305
+v -57.850800 -53.002689 -79.068504
+v -58.774899 -50.288788 -79.068504
+v -58.193901 -50.288788 -81.782509
+v -57.387699 -53.002689 -81.782509
+v -57.690102 -50.288784 -84.496605
+v -57.191601 -53.002686 -84.496605
+v -55.896400 -58.430683 -84.496605
+v -46.536900 -80.143692 -41.071510
+v -43.210999 -76.034691 -62.784111
+v -43.210999 -71.479683 -84.496613
+v -21.498400 -89.251801 -19.359015
+v -43.210999 -83.985703 -19.359013
+v -21.498400 -90.032791 -41.071514
+v 0.214082 -93.492691 -41.071514
+v -43.210999 -82.426796 -41.071514
+v -21.498400 -89.350792 -62.784115
+v -43.210999 -80.143692 -47.520512
+v -21.498400 -86.793785 -84.496613
+v -35.898201 -80.143684 -84.496613
+v -39.626801 -80.143692 -62.784111
+v -18.876200 4.670736 -99.979599
+v -17.029699 3.820757 -101.879997
+v -21.147100 4.619466 -98.046898
+v -19.531900 2.255756 -100.424004
+v -13.428700 4.773267 -104.237000
+v -15.723000 2.612197 -103.670998
+v -14.465100 2.692217 -104.834000
+v -13.476200 3.022177 -105.705002
+v -16.877300 1.381427 -103.323997
+v -16.907499 -0.247542 -104.655998
+v -17.341101 -1.643603 -105.598999
+v -18.213200 0.999956 -102.230003
+v -19.251900 -2.114183 -102.942001
+v -20.663799 -2.890543 -101.716003
+v -20.571100 -4.821393 -103.314003
+v -20.390900 -6.244983 -105.664001
+v -21.341101 -6.615583 -104.200996
+v -32.627201 3.062754 -84.603302
+v -31.222401 4.629534 -85.831398
+v -30.665899 3.349744 -87.375999
+v -29.176500 2.635265 -89.924698
+v -29.640600 6.071244 -87.210602
+v -30.611700 0.260513 -89.246201
+v -29.640600 0.664016 -90.407600
+v -25.093000 2.126415 -95.090698
+v -24.740700 5.179765 -93.995796
+v -27.729500 2.413655 -91.862503
+v -26.926600 0.144241 -93.995796
+v -32.057800 0.260573 -86.895401
+v -31.447701 -2.766526 -89.585403
+v -25.678301 -0.078719 -95.469498
+v -26.992399 -2.792705 -95.424500
+v -30.041901 -1.988445 -91.315598
+v -29.599501 -3.640795 -92.847198
+v -28.283600 -2.821705 -93.995796
+v -34.101601 1.278274 -83.139603
+v -34.185398 -2.114186 -84.496597
+v -33.134701 -2.491256 -86.511200
+v -23.516300 2.274006 -96.701103
+v -22.986000 -0.078719 -98.192703
+v -25.660400 -2.792704 -96.802101
+v -31.205400 -8.860885 -93.754700
+v -29.383200 -6.301255 -94.674301
+v -29.396601 -8.064805 -95.783997
+v -30.559799 -9.577744 -95.352898
+v -33.233601 -5.167526 -87.894402
+v -31.901899 -6.863755 -91.281799
+v -33.288502 -8.053025 -89.658501
+v -35.224499 -9.577745 -87.491302
+v -33.992401 -9.577745 -89.625801
+v -36.645802 -11.212186 -86.532097
+v -36.182098 -12.291686 -88.567703
+v -34.805500 -10.934786 -89.469704
+v -33.711700 -12.237685 -92.638802
+v -34.459599 -13.661284 -93.056900
+v -36.999500 -14.101986 -89.342300
+v -32.499599 -12.491785 -94.913498
+v -30.771099 -13.309784 -98.458298
+v -36.113800 -14.710785 -91.787399
+v -34.180901 -15.347485 -95.797401
+v -28.319901 -5.359784 -95.395798
+v -27.980400 -7.382674 -97.057899
+v -24.598600 -4.634324 -98.890198
+v -24.916700 -6.411854 -99.712997
+v -25.586201 -8.221543 -100.535004
+v -26.889000 -10.682384 -101.413002
+v -27.867201 -9.225694 -98.614601
+v -29.626600 -9.625224 -96.690598
+v -22.566200 -6.447793 -102.245003
+v -25.394501 -9.866982 -102.621002
+v -22.936800 -8.362042 -104.014999
+v -30.703899 -11.957284 -97.252403
+v -22.171400 -8.954203 -107.019997
+v -25.022699 -12.174883 -107.557999
+v -26.092501 -12.045783 -104.803001
+v -8.556400 4.666038 -110.666000
+v -11.065800 3.655168 -109.204002
+v -9.198130 5.364707 -108.725998
+v -9.525080 3.262718 -112.636002
+v -3.990790 5.124349 -113.732002
+v -5.602760 5.910048 -110.922997
+v -0.974533 5.055069 -116.272003
+v -2.369530 4.391989 -117.214996
+v -4.704490 3.266379 -118.280998
+v -7.362270 3.726279 -114.012001
+v -9.034480 2.289079 -116.186996
+v -11.672700 1.239089 -115.033997
+v -10.545500 4.832228 -107.852997
+v -13.658000 2.127028 -106.547997
+v -13.300100 1.727618 -108.063004
+v -16.593901 -1.859602 -107.566002
+v -14.478700 -0.262494 -110.281998
+v -12.995500 0.862018 -112.632004
+v -17.037201 -3.045822 -109.174004
+v -17.536301 -2.548813 -106.514000
+v -16.378300 -2.652022 -110.619003
+v -18.789499 -5.534892 -109.791000
+v -18.903000 -6.054122 -111.260002
+v -10.820500 0.878986 -118.167999
+v -12.080700 0.056965 -118.967003
+v -15.627600 -2.489851 -115.869003
+v -17.640800 -4.765301 -113.792000
+v -14.611600 -1.587021 -117.619003
+v -14.283400 -0.554364 -113.408997
+v -17.894100 -5.509071 -117.065002
+v -4.415290 2.397730 -120.914001
+v -6.927250 2.017110 -119.746002
+v -0.803688 3.072770 -121.475998
+v -1.334830 1.888630 -124.044998
+v -6.598820 0.356282 -125.397003
+v -3.857020 0.945271 -125.208000
+v -4.896850 1.534020 -123.171997
+v -8.410990 0.145833 -124.324997
+v -9.841020 0.159810 -122.055000
+v -5.892560 1.278280 -123.172997
+v -10.284100 -1.247779 -126.110001
+v -8.542020 -1.663249 -128.960999
+v -6.110310 -0.631693 -128.026001
+v -13.523900 -1.220130 -119.875999
+v -13.219800 -0.314678 -117.369003
+v -12.812600 -1.884560 -123.089996
+v -14.356100 -3.293070 -123.708000
+v -14.741900 -2.561690 -120.405998
+v -13.316800 -2.689430 -124.483002
+v -11.955500 -1.906050 -125.142998
+v -14.462000 -4.123390 -125.608002
+v -12.283000 -2.597819 -126.657997
+v -10.916300 -2.377059 -128.246994
+v -13.679700 -4.365399 -128.634995
+v -21.225300 -8.294782 -108.412003
+v -16.120001 -3.673631 -118.931000
+v -19.286699 -7.372231 -118.105003
+v -21.254299 -9.187481 -114.691002
+v -17.011400 -5.872420 -122.464996
+v -20.394199 -9.122361 -119.963997
+v -21.270000 -9.495521 -116.810997
+v -17.125299 -6.580239 -124.528999
+v -14.819300 -5.128089 -127.684998
+v -22.446699 -11.873980 -122.393997
+v -18.920000 -9.077309 -126.566002
+v -17.189301 -7.210310 -126.561996
+v -17.207300 -7.434789 -127.813004
+v -19.057199 -9.469039 -128.979996
+v -20.414200 -10.763379 -127.855003
+v -21.143700 -11.501479 -126.531998
+v -21.891600 -12.108280 -125.181000
+v -19.931101 -9.884750 -125.208000
+v -24.483900 -12.641082 -111.402000
+v -26.695400 -14.662282 -108.714996
+v -25.752899 -14.452282 -112.528000
+v -27.647900 -14.200983 -105.126999
+v -21.958401 -9.654222 -111.085999
+v -23.585600 -12.291681 -117.742996
+v -24.212500 -13.232681 -118.422997
+v -24.696600 -13.288781 -114.860001
+v -25.305700 -14.666681 -117.744003
+v -26.631100 -16.362680 -115.369003
+v -24.287201 -14.433780 -122.492996
+v -22.964100 -13.426580 -125.217003
+v -24.088100 -14.634680 -124.099998
+v -24.040800 -15.052979 -126.569000
+v -21.896000 -12.170579 -127.970001
+v -22.945801 -13.452779 -127.904999
+v -22.905199 -13.563879 -126.565002
+v -23.904499 -15.005679 -127.921997
+v -40.607800 -17.402784 -88.000900
+v -38.882599 -16.134285 -88.917297
+v -35.778500 -16.697584 -95.441498
+v -35.807098 -17.822985 -97.453903
+v -38.990200 -18.645185 -93.910103
+v -42.140099 -21.960485 -94.001297
+v -43.754700 -23.482985 -93.002907
+v -42.502701 -20.942085 -90.557701
+v -40.248100 -18.986784 -91.974197
+v -40.816799 -20.861885 -94.801300
+v -31.981800 -14.911283 -98.463501
+v -29.008900 -14.076183 -102.116997
+v -32.433498 -16.073484 -99.364502
+v -29.986099 -16.770283 -104.372002
+v -31.469000 -17.447083 -103.102997
+v -29.107700 -17.524683 -107.585999
+v -31.352699 -19.293182 -106.398003
+v -34.059898 -18.666384 -101.371002
+v -33.711700 -17.284685 -99.424004
+v -38.159199 -20.503984 -99.329498
+v -37.435398 -21.810583 -103.259003
+v -39.417702 -21.450285 -99.074600
+v -34.533001 -20.585983 -104.407997
+v -33.347599 -20.955883 -106.780998
+v -38.966400 -23.527483 -104.574005
+v -37.007401 -23.152283 -107.117996
+v -33.687199 -22.898083 -111.212997
+v -40.567902 -24.261282 -102.775009
+v -42.240799 -23.732685 -97.647011
+v -42.068001 -25.674883 -102.308006
+v -40.945599 -26.428583 -107.175011
+v -28.988199 -19.791080 -113.800003
+v -30.777599 -19.821083 -108.553001
+v -26.743500 -15.967982 -112.681999
+v -28.650101 -19.755180 -115.344002
+v -32.035599 -22.551580 -112.920998
+v -31.016001 -21.798580 -113.028000
+v -29.700199 -21.388182 -115.588997
+v -29.708099 -20.397781 -112.802002
+v -30.664301 -22.053282 -114.575996
+v -28.771999 -20.433681 -117.403999
+v -30.894400 -23.167782 -116.688004
+v -29.644899 -21.783281 -117.068001
+v -32.729500 -24.125582 -115.327011
+v -35.614101 -25.340481 -114.549011
+v -32.466301 -24.589281 -117.172005
+v -36.761398 -26.841782 -117.398010
+v -25.569500 -15.684780 -120.022003
+v -27.031200 -17.546181 -117.742996
+v -24.282499 -15.721279 -127.825996
+v -25.869400 -17.423180 -124.365997
+v -26.126400 -18.094780 -126.592003
+v -27.304899 -19.755678 -125.208000
+v -26.902100 -19.090679 -127.924004
+v -29.598499 -23.214581 -121.850998
+v -26.922300 -18.636980 -122.217003
+v -28.484400 -21.629978 -124.278000
+v -29.629200 -22.190380 -118.446999
+v -30.292200 -23.147781 -118.422997
+v -29.971100 -23.147781 -119.779999
+v -27.572399 -18.929281 -119.389999
+v -31.003599 -24.340780 -119.561005
+v -32.063301 -24.938980 -118.730011
+v -31.350401 -25.861780 -122.493004
+v -28.503599 -21.614880 -126.529999
+v -33.599098 -26.174582 -119.549011
+v -43.730202 -29.754383 -108.619011
+v -42.979198 -28.130983 -106.314011
+v -41.801300 -28.825283 -110.952011
+v -39.454300 -26.207483 -110.375008
+v -39.286598 -27.399780 -113.347008
+v -41.853901 -29.789680 -113.673004
+v -43.210999 -30.065683 -110.959007
+v -37.711300 -26.236582 -113.447006
+v -37.994999 -24.925283 -110.078011
+v -38.123600 -28.090580 -118.247009
+v -32.354698 -25.861780 -120.458008
+v -32.354698 -26.994781 -122.493004
+v -37.780701 -28.577581 -119.772011
+v -36.394501 -27.877281 -119.913010
+v -37.782799 -29.355782 -121.137009
+v -35.071999 -27.961281 -121.137009
+v -36.449799 -29.480480 -122.462006
+v -39.139900 -29.544682 -119.780006
+v -41.159599 -31.105982 -119.691010
+v -38.942101 -29.909281 -120.861008
+v -40.539398 -31.386581 -121.736008
+v -39.139900 -30.896681 -122.493004
+v -34.670200 -28.575682 -122.493004
+v -32.354698 -28.575680 -124.946007
+v -32.354698 -28.786678 -125.208008
+v -35.068802 -30.452780 -125.208008
+v -33.365101 -31.290779 -127.922005
+v -32.354698 -30.662680 -127.922005
+v -37.433102 -31.263180 -125.062004
+v -35.068802 -31.290779 -126.521011
+v -37.782799 -30.859678 -123.851006
+v -39.134701 -31.286179 -123.698006
+v -42.091599 -32.530380 -122.188011
+v -45.691601 -34.854080 -120.136009
+v -43.041401 -34.037479 -125.397011
+v -37.782799 -31.861778 -126.564011
+v -35.068802 -32.193680 -127.922005
+v -37.641998 -32.724377 -128.910995
+v -41.345200 -32.692680 -125.066010
+v -39.139900 -32.052681 -126.564011
+v -39.139900 -31.649679 -125.208008
+v -40.485199 -32.273479 -125.474007
+v -39.140400 -32.946075 -129.229004
+v -41.703899 -33.802979 -129.039001
+v -40.554901 -33.298077 -129.319000
+v -45.269402 -36.271282 -127.317009
+v -44.926998 -23.480785 -88.964905
+v -46.233601 -24.591986 -87.760307
+v -46.897999 -25.776985 -89.585411
+v -51.840500 -30.951185 -91.518806
+v -51.434898 -29.121586 -87.570511
+v -45.354301 -25.953884 -94.753204
+v -47.542999 -27.284386 -92.141510
+v -47.581501 -28.327585 -95.623711
+v -50.294201 -29.927185 -93.216507
+v -50.335701 -31.231985 -96.878510
+v -49.276402 -30.696985 -98.261009
+v -52.798500 -32.632084 -92.652809
+v -53.706501 -34.004284 -92.554909
+v -52.266499 -33.622486 -96.737106
+v -52.921600 -35.106983 -97.520607
+v -54.420502 -36.204987 -94.204506
+v -54.555901 -33.665184 -88.737305
+v -56.239399 -38.075684 -88.567711
+v -55.595001 -36.548985 -89.579407
+v -43.901501 -27.425682 -102.194008
+v -46.376400 -29.448782 -101.974007
+v -47.341202 -29.039885 -98.357910
+v -43.781101 -26.291782 -99.593811
+v -44.789902 -28.915182 -104.056007
+v -47.933300 -32.005184 -104.730011
+v -51.675499 -31.883986 -94.517906
+v -50.629902 -32.194286 -98.676605
+v -53.425098 -36.292183 -97.809006
+v -53.223202 -37.359886 -100.777008
+v -49.432201 -33.453186 -104.738007
+v -47.817299 -30.951183 -102.535011
+v -47.663601 -33.580582 -110.847008
+v -51.397400 -34.990383 -102.502007
+v -49.873100 -35.352383 -109.387009
+v -51.596001 -36.379185 -105.352005
+v -52.702000 -36.642986 -101.492004
+v -47.631100 -34.447781 -113.530006
+v -50.900398 -37.158081 -110.160011
+v -50.347401 -37.598980 -113.312004
+v -46.115898 -33.884083 -115.674011
+v -48.924000 -35.828381 -113.738007
+v -47.618099 -35.675282 -117.553009
+v -43.995800 -32.224182 -115.662010
+v -41.923901 -31.173281 -117.929008
+v -46.603500 -36.039680 -121.814011
+v -47.587399 -36.963581 -121.831009
+v -46.277500 -36.086983 -123.021011
+v -46.168999 -37.108280 -127.470009
+v -2.040440 -0.851969 -129.945007
+v -6.599370 -1.819559 -130.738998
+v -2.839240 -1.844218 -131.992004
+v -9.034920 -2.710309 -131.623001
+v -6.533270 -2.991128 -133.220001
+v -7.928110 -3.448708 -133.350006
+v -2.391490 -4.761028 -135.975006
+v -4.810760 -3.899758 -134.854996
+v -4.627550 -2.798198 -133.393997
+v -7.235040 -4.264018 -134.565002
+v -9.299710 -4.047708 -133.401001
+v -11.651300 -3.751989 -130.832001
+v -10.642200 -4.704748 -133.350006
+v -10.675700 -3.683999 -132.035004
+v -5.214050 -6.863748 -136.940002
+v -2.499980 -6.863748 -137.341995
+v -2.727300 -9.427958 -138.787003
+v -5.586430 -5.513158 -136.048996
+v -8.213130 -5.089268 -134.917999
+v -10.932200 -6.175638 -134.660995
+v -7.928110 -6.863748 -136.285004
+v -8.624950 -6.863748 -136.063995
+v -7.928110 -9.577737 -137.828995
+v -5.214050 -9.577737 -138.451996
+v -10.642200 -9.577738 -137.128998
+v -10.642200 -7.852698 -136.063995
+v -14.722100 -5.462259 -129.431000
+v -16.070299 -6.484719 -129.279007
+v -14.131400 -5.307168 -130.257004
+v -16.129200 -6.797829 -130.770004
+v -12.009400 -5.506508 -133.354004
+v -13.756100 -5.714028 -131.985992
+v -11.999200 -4.539709 -131.992004
+v -16.033701 -7.166849 -131.955002
+v -14.451200 -6.954878 -133.332993
+v -16.140900 -8.144688 -133.414001
+v -17.327900 -8.251928 -131.860992
+v -18.967501 -9.662999 -130.753998
+v -17.397900 -7.893838 -130.619995
+v -18.674500 -9.720378 -132.044006
+v -17.450500 -9.198098 -133.373001
+v -12.550600 -7.214518 -134.783997
+v -14.804700 -8.452738 -134.770004
+v -13.356200 -9.577738 -136.315994
+v -13.972300 -9.526408 -136.063995
+v -16.076300 -9.281048 -134.817001
+v -20.157400 -10.913878 -132.072998
+v -21.162901 -11.391179 -130.520004
+v -18.784401 -10.280778 -133.350006
+v -19.855499 -11.083778 -133.356995
+v -13.356200 -12.291677 -137.798004
+v -10.642200 -12.291677 -138.533997
+v -17.167700 -9.953838 -134.740005
+v -18.654100 -10.928078 -134.623993
+v -17.778700 -11.687778 -136.035995
+v -20.010300 -11.970378 -134.919998
+v -22.250000 -12.757178 -133.490005
+v -16.121201 -10.699978 -136.057999
+v -16.070299 -12.291678 -137.082001
+v -5.214050 -10.206677 -138.776993
+v -13.556100 -15.012177 -138.781006
+v -10.642200 -12.847677 -138.776993
+v -10.642200 -15.005677 -139.533997
+v -21.498400 -11.595779 -129.279007
+v -22.653099 -12.574279 -129.324005
+v -22.822901 -12.600079 -130.643005
+v -22.843599 -12.711178 -131.955994
+v -23.479200 -13.648679 -129.279007
+v -23.871799 -13.648679 -130.634995
+v -24.298599 -14.451079 -130.645996
+v -24.185200 -15.479779 -129.382004
+v -23.823700 -13.648678 -131.992004
+v -16.070299 -17.332777 -138.776993
+v -16.070299 -15.005677 -138.216995
+v -18.784401 -17.719677 -138.091995
+v -16.372400 -17.719677 -138.776993
+v -21.498400 -17.719677 -136.925995
+v -20.141399 -15.005678 -137.085007
+v -17.393801 -20.433678 -138.776993
+v -18.784401 -20.433678 -138.259003
+v -21.498400 -20.433678 -136.845993
+v -21.498400 -25.861776 -136.561996
+v -17.583300 -25.861776 -138.776993
+v -10.642200 -25.861776 -140.688995
+v -10.642200 -20.433678 -140.509995
+v -16.070299 -20.433678 -139.162994
+v -10.642200 -36.718777 -139.994995
+v -14.223100 -36.718777 -138.776993
+v -16.070299 -25.861776 -139.326004
+v -24.699900 -16.362679 -130.634995
+v -24.706600 -16.498079 -129.285004
+v -26.363600 -19.076679 -130.634995
+v -25.657101 -17.861479 -130.330994
+v -25.475500 -18.681780 -132.237000
+v -24.708000 -17.719679 -133.350006
+v -24.980400 -19.076679 -133.350006
+v -26.951700 -20.337479 -130.722000
+v -26.207199 -20.433680 -131.992004
+v -25.400299 -20.383678 -133.188995
+v -28.239599 -21.101879 -127.693001
+v -26.846399 -19.148279 -129.289993
+v -27.595301 -20.433680 -129.279007
+v -23.288300 -15.005678 -134.707001
+v -24.212500 -17.719679 -134.350006
+v -24.133600 -15.103178 -133.248993
+v -22.814199 -17.719677 -136.063995
+v -22.855499 -15.005678 -135.289993
+v -21.761999 -14.869078 -136.248001
+v -24.212500 -20.433678 -134.669006
+v -22.649500 -20.433678 -136.063995
+v -25.652300 -23.147779 -133.350006
+v -26.926600 -23.147779 -131.873993
+v -26.926600 -25.861778 -132.154007
+v -25.641600 -25.861778 -133.350006
+v -27.475300 -21.790779 -130.634995
+v -28.172001 -21.788078 -129.169998
+v -28.906601 -23.147779 -127.921997
+v -28.416901 -23.147779 -129.279007
+v -27.778400 -23.204979 -130.604004
+v -29.458300 -25.861778 -127.922005
+v -28.100201 -25.861778 -130.634995
+v -32.354698 -36.718777 -132.315002
+v -32.354698 -31.290779 -128.634995
+v -21.498400 -36.718777 -134.908997
+v -38.688202 -35.131676 -131.992004
+v -37.901001 -33.940079 -130.761002
+v -39.159199 -33.832779 -130.764008
+v -40.631302 -33.924076 -130.664001
+v -41.853901 -34.517776 -130.634995
+v -42.532501 -34.496777 -129.279007
+v -40.522800 -35.253078 -132.076996
+v -40.496899 -36.718777 -133.026001
+v -38.462601 -36.713879 -133.003006
+v -41.258900 -35.361778 -131.992004
+v -41.840698 -35.408176 -131.871994
+v -43.139599 -35.367077 -130.619995
+v -41.853901 -36.718777 -132.882996
+v -43.210999 -36.718777 -132.514008
+v -43.210999 -36.214676 -131.992004
+v -44.439800 -36.243675 -130.632004
+v -44.518002 -36.928276 -131.966995
+v -32.354698 -58.430679 -126.424011
+v -32.354698 -56.520782 -127.922005
+v -30.380600 -58.430679 -127.922005
+v -43.210999 -65.779686 -106.209007
+v -21.498400 -63.459682 -127.922005
+v -21.498400 -79.528687 -106.209015
+v -56.781300 -40.885685 -88.567711
+v -57.051800 -41.807285 -87.837105
+v -56.270199 -40.789684 -91.281807
+v -54.638100 -38.414684 -96.113411
+v -55.806801 -39.432686 -92.129906
+v -56.326000 -42.146687 -91.960304
+v -55.325100 -41.213684 -95.942406
+v -55.849602 -42.825283 -94.674309
+v -57.851398 -43.503685 -83.818108
+v -57.146400 -43.503685 -87.889206
+v -56.987202 -45.539185 -89.115105
+v -57.583302 -47.574783 -85.853607
+v -58.093800 -46.217785 -82.883606
+v -57.094799 -47.574783 -88.567711
+v -56.142300 -43.842983 -93.656609
+v -56.362598 -45.539185 -92.638809
+v -56.066799 -46.217785 -95.013611
+v -56.307598 -48.253185 -92.978111
+v -55.927299 -47.574783 -96.031410
+v -54.168999 -38.722786 -98.544411
+v -53.197300 -39.093185 -104.671005
+v -51.934700 -38.021080 -107.969009
+v -54.171101 -41.383385 -103.347008
+v -54.521198 -39.432686 -97.897308
+v -54.557400 -41.976685 -101.953011
+v -55.207001 -43.588387 -99.507210
+v -55.788898 -45.539185 -97.049110
+v -55.515900 -47.574783 -100.103004
+v -54.493198 -43.418484 -104.428009
+v -54.824600 -45.679085 -104.785011
+v -55.298599 -44.935184 -100.495010
+v -55.164200 -47.574783 -103.495010
+v -55.367901 -46.217785 -101.099007
+v -54.558201 -47.574780 -108.245010
+v -57.232800 -50.288784 -87.210609
+v -56.534698 -50.288784 -91.281807
+v -55.946800 -50.967186 -94.674309
+v -56.117802 -53.002686 -92.638809
+v -55.683300 -53.002686 -95.352905
+v -56.962101 -53.002686 -87.210609
+v -56.535198 -53.002686 -89.924706
+v -56.080799 -55.716686 -89.924706
+v -55.314800 -58.430683 -89.924706
+v -55.644600 -55.716686 -92.638809
+v -54.824001 -58.430683 -92.638809
+v -55.253201 -55.716686 -95.352905
+v -54.398800 -58.430683 -95.352905
+v -53.468800 -58.430683 -100.781006
+v -54.002201 -58.423786 -97.951508
+v -54.067200 -57.103786 -100.781006
+v -54.058899 -55.716686 -103.451004
+v -54.067200 -53.944782 -106.209007
+v -53.438499 -55.716682 -106.209007
+v -52.829102 -58.430683 -103.495010
+v -51.930698 -58.430679 -106.209007
+v -55.685501 -49.610283 -97.388405
+v -55.491299 -48.931786 -100.103004
+v -55.352798 -51.306484 -100.212006
+v -55.510899 -53.002686 -96.709908
+v -55.250702 -53.002686 -99.424011
+v -55.135201 -48.931786 -103.834007
+v -55.200802 -50.288784 -102.817009
+v -55.085098 -51.645786 -102.817009
+v -54.962200 -53.002686 -102.138008
+v -54.568501 -53.002686 -104.852005
+v -54.892700 -55.716686 -98.066910
+v -54.511501 -55.716686 -100.781006
+v -51.401100 -39.606682 -114.003006
+v -48.966599 -37.758682 -119.616005
+v -50.250099 -38.838882 -117.202011
+v -52.239601 -39.941181 -110.762009
+v -52.069500 -41.128681 -114.012009
+v -51.516499 -42.306381 -119.346008
+v -52.528099 -43.503681 -115.673004
+v -53.612301 -42.146683 -107.566010
+v -53.006199 -42.146683 -110.827011
+v -53.226200 -43.503681 -111.637009
+v -54.118500 -45.913483 -109.602005
+v -53.605400 -44.860680 -111.298004
+v -52.819099 -44.905781 -115.988007
+v -53.198399 -46.217781 -115.164009
+v -54.003201 -47.574780 -111.637009
+v -53.356998 -47.574780 -115.030006
+v -47.490501 -38.358780 -126.767006
+v -48.827999 -41.308475 -131.091003
+v -49.107101 -40.511780 -126.553009
+v -49.869801 -42.485783 -128.141006
+v -50.879299 -42.146683 -122.493004
+v -50.045101 -41.072781 -123.851006
+v -49.699902 -39.871082 -122.278008
+v -51.638599 -44.860680 -123.342010
+v -51.828800 -43.503681 -119.780006
+v -52.455299 -46.217781 -119.780006
+v -52.734798 -47.598381 -118.548004
+v -52.213402 -47.574780 -121.137009
+v -51.368301 -44.181782 -123.940010
+v -50.977699 -44.860680 -126.565010
+v -50.277199 -43.503681 -128.261002
+v -51.390900 -46.208679 -125.437004
+v -51.373100 -47.493980 -124.940010
+v -51.778900 -47.574780 -123.172005
+v -51.858200 -46.217480 -123.362007
+v -50.784801 -46.217781 -127.922005
+v -50.554901 -44.721279 -128.604004
+v -54.067200 -53.002682 -107.353004
+v -54.067200 -51.747681 -108.923004
+v -53.741600 -53.002682 -108.923004
+v -53.961300 -50.288780 -111.109009
+v -53.596500 -48.931782 -113.673004
+v -53.551800 -50.288780 -112.994011
+v -52.937801 -50.254982 -115.696007
+v -53.156101 -48.931782 -115.709007
+v -52.460499 -53.002682 -114.352005
+v -53.138802 -53.002682 -111.637009
+v -51.611801 -53.002682 -117.065010
+v -49.868801 -58.430679 -111.637009
+v -48.639099 -58.430679 -114.274010
+v -48.639099 -57.116779 -117.065010
+v -46.760899 -58.430679 -117.065010
+v -54.882099 -50.288780 -105.531006
+v -54.720200 -48.931782 -107.227005
+v -54.562099 -50.288780 -107.566010
+v -54.163399 -48.931782 -110.912010
+v -54.833401 -51.645786 -104.852005
+v -51.850300 -50.288780 -119.780006
+v -52.607899 -50.288780 -117.065010
+v -51.353199 -50.288780 -121.403008
+v -51.353199 -49.431782 -122.493004
+v -51.353199 -53.002682 -117.835007
+v -51.353199 -51.616779 -119.780006
+v -50.648800 -53.002682 -119.780006
+v -51.003399 -50.288780 -122.493004
+v -49.429901 -53.002682 -122.493004
+v -43.763401 -53.002682 -127.922005
+v -48.639099 -53.002682 -123.816010
+v -48.639099 -52.015682 -125.208008
+v -49.980099 -50.288780 -125.208008
+v -50.869900 -47.574780 -126.564011
+v -48.639099 -54.028683 -122.493004
+v -43.210999 -56.662682 -122.493004
+v -43.210999 -58.430679 -120.021011
+v -43.210999 -53.099682 -127.922005
+v -21.498400 -58.430676 -130.986008
+v -21.498400 -47.574776 -134.826019
+v -32.354698 -47.574776 -134.094009
+v -32.354698 -42.146679 -134.410995
+v -32.354698 -38.480778 -133.350006
+v -37.782799 -37.538776 -133.350006
+v -40.496899 -37.351677 -133.350006
+v -41.853901 -37.521679 -133.350006
+v -43.790901 -37.980377 -133.350006
+v -37.782799 -42.146679 -134.104996
+v -38.516899 -47.574776 -133.350021
+v -43.210999 -47.574776 -133.483017
+v -43.210999 -44.860676 -134.375000
+v -37.782799 -45.674679 -133.350006
+v -36.601898 -47.574776 -133.350021
+v -47.310799 -39.298878 -131.723007
+v -46.160400 -37.851677 -131.201996
+v -45.937401 -37.978779 -132.048996
+v -44.568001 -38.075676 -133.154007
+v -44.568001 -38.359676 -133.350006
+v -45.965900 -39.400078 -133.378998
+v -48.794800 -41.852478 -132.291000
+v -47.397202 -40.937878 -133.380005
+v -47.282101 -42.146679 -134.001007
+v -45.924999 -40.789677 -134.029999
+v -45.924999 -42.146679 -134.371002
+v -48.822899 -43.583076 -133.464005
+v -48.639099 -46.217777 -132.822998
+v -48.639099 -45.362679 -133.350006
+v -45.924999 -47.480778 -133.350021
+v -49.597801 -43.337677 -131.921005
+v -50.138901 -44.860676 -130.634995
+v -49.781502 -44.785877 -131.988998
+v -48.827000 -44.867977 -133.453003
+v -50.413502 -46.217777 -129.279007
+v -49.996601 -46.218678 -130.671005
+v -49.307598 -47.574776 -130.635010
+v -49.391701 -46.217777 -131.992004
+v -48.639099 -47.175678 -131.992020
+v -48.639099 -47.574776 -131.605011
+v -47.282101 -43.503677 -134.270004
+v -45.924999 -44.860676 -134.354004
+v -47.282101 -44.860676 -134.138000
+v -45.924999 -43.503677 -134.494995
+v -45.669899 -47.574776 -133.350021
+v -48.639099 -50.153683 -127.922005
+v -50.450802 -47.574780 -127.922005
+v -49.982498 -47.577278 -129.216019
+v -21.498400 -80.143684 -104.942017
+v -87.992996 -34.004799 0.150693
+v -88.891098 -34.216702 -0.502320
+v -87.215599 -31.646099 -1.706305
+v -88.729401 -33.024899 -1.330635
+v -87.894501 -35.286400 0.537110
+v -86.636002 -36.718800 1.568394
+v -87.837997 -36.688400 0.705024
+v -89.370201 -36.621601 -0.420875
+v -90.482697 -36.203800 -1.705706
+v -90.436798 -34.190102 -3.949235
+v -90.771599 -35.210602 -2.901266
+v -91.458603 -35.068802 -6.255506
+v -89.313599 -32.518700 -5.039925
+v -87.626503 -31.728098 -7.364025
+v -88.986099 -32.132401 -6.212675
+v -88.982903 -32.565899 -8.293976
+v -89.984901 -33.319500 -7.778665
+v -90.560997 -34.147499 -10.415206
+v -92.423897 -36.642799 -5.457316
+v -91.240898 -36.651299 -2.656176
+v -92.879997 -37.070099 -7.920106
+v -92.615196 -36.659401 -6.520486
+v -87.940697 -32.681301 -9.570866
+v -88.615501 -32.838600 -10.742606
+v -87.317398 -32.639599 -9.115016
+v -86.780998 -33.999096 -12.352905
+v -87.260696 -33.235802 -10.970706
+v -89.566101 -33.182999 -11.248405
+v -88.067497 -33.291397 -12.828405
+v -87.096298 -34.014595 -14.331606
+v -87.971703 -33.712795 -14.725905
+v -88.619698 -33.615795 -14.071806
+v -89.470100 -33.932396 -14.176906
+v -91.423302 -35.423100 -10.311505
+v -91.556198 -35.762798 -9.028686
+v -92.494797 -36.481098 -11.609305
+v -90.678902 -34.574295 -12.911205
+v -88.652298 -33.738197 -15.942606
+v -87.982803 -33.621098 -18.290905
+v -89.820396 -34.018196 -17.429506
+v -88.721397 -33.435394 -19.680305
+v -89.358200 -33.463898 -21.070505
+v -90.015198 -33.995094 -20.515005
+v -90.605301 -34.688797 -19.166105
+v -87.365196 -31.550497 -27.025505
+v -87.347702 -31.378897 -28.855106
+v -88.032501 -33.307697 -20.353006
+v -86.651398 -33.999596 -20.217705
+v -88.038803 -32.777996 -22.759706
+v -88.683296 -32.571198 -25.594406
+v -88.661598 -32.871494 -22.967306
+v -87.280098 -32.478195 -23.980505
+v -86.253700 -32.658596 -24.796505
+v -89.396797 -33.326397 -24.046705
+v -89.983200 -34.049797 -22.480505
+v -91.257401 -35.912495 -21.344305
+v -87.990196 -32.230995 -25.208206
+v -87.973602 -31.878897 -27.542505
+v -86.663300 -31.981096 -25.791306
+v -88.346603 -32.364796 -28.180906
+v -89.289497 -33.400898 -26.698305
+v -90.850502 -36.188496 -27.534407
+v -91.213097 -36.185696 -24.349306
+v -89.182602 -34.342598 -29.592005
+v -90.065002 -35.359295 -29.701605
+v -91.672501 -37.151497 -29.460005
+v -88.018303 -31.947195 -34.304604
+v -88.433502 -31.015694 -35.581802
+v -87.937202 -29.220594 -37.354103
+v -87.846497 -28.557295 -38.818203
+v -87.737900 -28.815794 -39.941105
+v -86.971497 -28.412493 -41.331303
+v -88.736504 -30.639994 -37.094803
+v -87.122803 -29.933693 -41.071503
+v -88.009003 -29.891794 -39.749702
+v -88.016296 -31.362795 -39.737206
+v -86.712997 -31.564993 -41.097004
+v -88.111603 -33.167397 -30.592106
+v -87.835602 -33.047794 -31.926306
+v -89.406502 -33.513596 -33.273502
+v -90.199600 -34.195396 -33.735302
+v -89.392998 -32.151394 -35.262802
+v -90.110199 -33.888996 -35.008602
+v -88.883904 -34.038296 -31.470205
+v -90.590202 -35.093098 -32.314102
+v -91.518204 -36.979195 -30.743706
+v -91.051300 -35.921898 -31.591106
+v -91.212502 -36.721596 -32.207306
+v -90.722900 -35.483295 -33.351807
+v -90.507103 -35.321796 -34.152706
+v -90.309799 -36.718197 -34.287506
+v -88.724403 -30.849995 -36.303905
+v -89.553200 -32.351692 -36.390102
+v -89.384598 -34.132294 -37.028305
+v -88.774300 -32.663792 -38.334503
+v -88.207901 -33.938492 -38.722004
+v -89.710098 -33.667191 -36.475903
+v -88.743599 -31.238495 -38.293903
+v -87.944298 -32.655491 -39.527905
+v -87.223297 -34.004791 -39.714504
+v -89.236603 -35.333893 -36.745506
+v -89.883698 -35.361794 -35.643406
+v -89.352402 -36.832493 -35.667309
+v -87.946602 -35.273891 -38.357506
+v -86.636002 -29.933693 -41.596104
+v -89.334099 -38.076199 -0.417632
+v -88.441902 -39.614899 -0.111054
+v -90.642303 -39.366600 -1.927696
+v -89.350098 -39.432701 -0.752807
+v -91.724297 -38.075699 -3.074516
+v -91.590401 -39.432701 -3.074636
+v -87.661102 -42.146702 -0.360608
+v -92.401199 -38.089199 -4.320556
+v -92.422401 -39.422401 -4.346616
+v -92.064102 -42.146702 -4.237467
+v -90.817001 -42.146702 -3.074637
+v -93.056198 -38.075699 -5.788696
+v -93.421600 -38.083302 -7.169156
+v -89.350098 -45.297699 -3.074637
+v -89.350098 -47.574799 -4.156087
+v -92.064102 -44.860699 -4.213457
+v -89.717499 -44.860699 -3.074637
+v -92.064102 -47.574799 -5.161288
+v -93.706703 -43.503700 -5.788697
+v -94.034798 -42.146702 -7.145747
+v -94.156799 -43.503700 -7.145747
+v -94.193100 -42.146702 -8.502767
+v -94.145302 -43.431599 -8.574437
+v -93.892899 -46.217800 -5.788698
+v -93.880600 -44.860699 -5.788697
+v -93.406799 -47.525799 -5.798608
+v -94.369102 -44.860699 -7.145747
+v -94.628197 -46.217800 -7.145748
+v -94.777397 -46.846199 -8.581187
+v -94.297997 -44.860699 -8.502768
+v -94.589203 -47.574799 -7.145748
+v -93.466797 -37.262001 -9.952045
+v -93.809402 -38.075699 -8.502767
+v -94.701599 -38.634102 -11.184007
+v -94.812698 -39.231998 -9.840137
+v -94.172699 -38.063801 -9.863827
+v -95.007896 -39.432701 -11.216806
+v -94.682098 -38.883198 -13.129407
+v -93.101097 -37.463997 -13.088106
+v -94.895599 -39.453598 -12.916607
+v -94.459099 -39.445198 -14.954106
+v -94.758904 -40.072300 -9.814577
+v -94.331200 -40.789700 -8.502767
+v -94.340797 -39.432701 -8.502767
+v -94.177200 -42.146702 -9.859797
+v -94.771301 -40.440102 -11.280107
+v -94.379997 -40.789696 -13.930906
+v -94.780296 -40.315998 -12.644406
+v -91.942802 -36.776295 -17.419405
+v -93.616402 -38.146698 -15.469506
+v -93.246597 -38.055996 -18.297707
+v -94.033096 -40.789696 -15.287907
+v -93.440002 -40.952297 -17.088806
+v -93.385399 -42.171997 -16.098507
+v -93.568001 -39.583694 -17.832405
+v -93.248398 -40.789696 -18.002007
+v -92.982597 -40.789696 -19.359005
+v -93.284599 -38.773197 -19.240505
+v -93.137703 -42.146698 -19.359007
+v -93.973099 -44.860699 -10.538307
+v -93.624001 -43.477196 -13.181207
+v -93.710999 -44.860695 -13.252408
+v -94.412598 -46.217800 -9.859797
+v -94.142303 -46.219799 -11.474808
+v -94.656502 -47.589401 -10.333908
+v -94.038399 -47.574795 -12.573908
+v -93.809402 -46.217796 -13.930907
+v -93.750504 -42.146698 -13.930906
+v -93.245499 -43.503696 -18.002008
+v -93.317299 -43.430298 -16.442108
+v -93.135300 -42.146698 -18.002008
+v -93.421204 -44.860695 -16.956907
+v -93.310799 -46.167397 -17.644007
+v -93.634003 -46.217796 -15.287908
+v -93.557198 -44.860695 -15.287908
+v -93.632797 -47.775597 -14.128108
+v -93.412598 -47.565796 -15.301908
+v -93.097198 -46.217796 -19.359007
+v -93.407097 -44.919395 -18.832708
+v -91.945702 -48.726200 -6.001108
+v -89.350098 -49.470798 -5.788698
+v -92.064102 -49.515701 -7.145748
+v -89.350098 -50.288799 -6.980368
+v -91.945801 -50.158199 -8.507789
+v -89.350098 -50.946701 -8.502769
+v -93.420502 -48.906200 -7.166988
+v -94.891899 -47.917702 -8.343078
+v -94.158798 -48.931801 -8.502768
+v -93.421204 -49.449799 -8.502768
+v -89.350098 -51.462799 -11.216808
+v -92.064102 -50.288799 -9.294549
+v -92.064102 -50.375702 -11.216808
+v -89.350098 -51.421795 -13.930908
+v -92.125198 -50.263596 -12.043609
+v -91.554001 -50.288795 -13.930908
+v -94.215500 -48.931801 -9.859797
+v -93.410896 -48.948696 -12.732708
+v -93.071198 -48.931797 -13.930907
+v -93.421204 -49.435699 -11.216807
+v -93.877800 -48.931801 -11.216807
+v -92.064102 -49.920696 -13.930908
+v -93.313499 -49.676300 -9.916918
+v -92.064102 -49.095795 -16.645008
+v -90.627800 -50.288795 -16.645008
+v -89.481598 -50.288795 -19.359007
+v -89.350098 -50.354694 -19.359007
+v -89.350098 -50.967796 -16.645008
+v -92.769600 -47.538597 -18.230707
+v -92.064102 -48.168797 -19.359007
+v -92.364700 -37.321495 -21.661806
+v -92.952103 -38.043198 -19.997505
+v -92.481003 -39.135098 -23.326105
+v -91.896896 -37.985497 -25.202606
+v -92.888702 -40.443996 -21.212505
+v -92.600304 -38.189198 -21.849905
+v -92.727997 -39.676895 -23.920105
+v -93.089699 -39.780796 -26.106306
+v -92.866898 -39.432697 -20.716106
+v -93.420502 -42.141296 -20.697607
+v -93.343002 -41.258896 -21.886108
+v -93.930099 -42.146698 -22.073107
+v -93.758499 -41.296795 -23.789808
+v -94.072304 -42.146698 -22.751608
+v -93.577301 -42.077595 -25.783207
+v -94.018204 -42.168297 -23.985909
+v -93.599602 -41.213398 -25.574808
+v -92.045403 -38.214798 -29.799107
+v -92.421501 -38.562897 -27.727205
+v -91.331497 -40.745094 -30.440306
+v -92.191200 -40.725998 -29.144005
+v -92.064102 -39.432697 -29.854206
+v -91.877701 -39.432697 -30.215305
+v -92.463402 -39.432697 -28.858305
+v -93.039703 -39.983097 -27.314606
+v -93.243698 -40.789696 -26.822706
+v -92.708504 -42.147995 -27.497608
+v -93.013603 -40.789696 -27.501205
+v -91.996002 -41.920197 -28.779707
+v -92.064102 -47.574795 -20.488108
+v -92.064102 -46.862698 -22.073107
+v -91.616096 -47.574795 -22.073107
+v -93.412102 -43.730698 -19.256407
+v -93.583199 -44.860695 -20.716108
+v -93.823700 -43.503696 -20.716108
+v -93.584297 -44.860695 -22.073107
+v -94.196297 -43.503696 -22.073107
+v -94.039703 -43.503696 -23.430107
+v -93.478302 -43.553497 -24.823807
+v -93.423500 -44.811794 -23.215208
+v -92.741699 -44.860695 -24.787209
+v -92.064102 -45.769794 -24.787209
+v -92.074898 -44.849895 -25.843508
+v -92.069397 -43.425797 -27.381308
+v -91.010399 -44.860695 -27.501207
+v -89.350098 -47.574795 -25.893808
+v -89.350098 -46.556797 -27.501207
+v -88.135002 -47.574795 -27.501207
+v -90.351501 -47.574795 -24.787209
+v -88.552803 -44.860695 -30.215307
+v -89.350098 -44.860695 -29.487707
+v -92.831398 -43.503696 -26.144207
+v -91.442200 -38.075695 -31.572306
+v -90.794296 -36.740097 -33.400608
+v -90.725700 -38.090496 -32.822609
+v -89.558098 -38.021297 -34.599106
+v -87.793503 -39.426491 -35.647308
+v -90.113800 -39.432697 -32.929409
+v -88.188202 -36.625092 -37.258808
+v -86.636002 -40.469692 -35.643406
+v -89.344902 -42.197395 -32.054008
+v -88.653000 -42.146698 -32.929409
+v 44.721802 49.966881 115.091011
+v 26.467699 53.817581 127.057007
+v 25.447201 59.052483 119.221008
+v 25.571899 59.629379 118.665009
+v 18.908899 55.713882 124.316010
+v 19.751801 51.942379 131.159012
+v 15.708400 54.100479 125.985008
+v 17.855499 54.556282 125.844009
+v 17.855499 55.069283 124.486008
+v 8.356300 60.488281 113.631004
+v 4.425540 49.989681 120.402008
+v 4.372530 54.031281 117.444008
+v 34.695599 59.635380 107.483009
+v 33.477100 59.580780 106.808006
+v 41.422401 54.450180 109.803009
+v 30.852800 55.569286 92.343208
+v 29.325800 55.527786 92.614311
+v 27.889099 56.164986 93.096008
+v 28.803499 55.591084 91.876511
+v 20.094101 64.156082 106.860008
+v 7.512440 61.999279 108.969009
+v 12.745900 60.836086 89.240807
+v 9.024510 61.332684 89.886810
+v 12.449300 59.601086 100.099007
+v 15.367700 58.981884 91.863609
+v 14.979100 59.389286 90.474411
+v 13.784400 55.559284 90.700508
+v 48.583099 20.264776 135.664993
+v 32.257999 36.839176 139.498993
+v 42.282101 36.561275 134.623993
+v 16.498501 39.275276 141.285004
+v 9.623400 31.133177 138.057007
+v 39.622501 27.169178 139.436005
+v 40.570801 25.263178 139.539993
+v 37.295502 23.013077 141.615005
+v 38.210999 21.634277 141.432007
+v 38.930302 20.324377 141.195999
+v 43.454601 48.677380 122.963005
+v 44.671501 46.519279 125.655006
+v 48.520500 46.096581 119.630005
+v 52.435902 40.672382 121.059006
+v 55.804199 32.111282 124.806007
+v 56.084499 29.874680 126.445007
+v 51.624901 37.332382 127.036011
+v 56.627102 36.859581 119.652008
+v 56.863602 37.762779 117.886009
+v 68.026199 36.536186 104.219009
+v 68.199097 36.462185 103.532005
+v 69.422798 29.776182 108.347008
+v 62.018700 47.419384 91.809105
+v 60.191799 47.571384 92.451004
+v 62.633301 46.756485 93.266609
+v 63.318001 46.058685 93.303810
+v 61.280602 46.908283 93.274506
+v 59.021198 48.825085 91.179306
+v 53.791901 40.635586 95.968811
+v 64.810204 42.524685 93.719208
+v 57.208401 41.994083 88.740410
+v 44.475899 43.346283 90.560509
+v 63.993099 34.519180 109.561005
+v 61.309700 33.899780 109.528008
+v 61.280602 33.711182 108.202011
+v 63.973999 31.392185 96.017311
+v 55.773399 23.600380 127.218010
+v 61.215900 22.638681 121.772003
+v 63.152199 27.062281 117.701004
+v 57.209499 12.134280 124.073997
+v 52.749699 12.134279 129.914993
+v 51.781300 12.134279 130.716003
+v 49.067299 9.420209 131.132996
+v 59.923500 12.508181 116.344002
+v 58.665600 12.134281 119.058998
+v 61.980301 6.706222 112.273003
+v 68.065697 27.810183 108.202011
+v 53.487301 20.277285 91.917503
+v 54.247501 18.920185 91.917503
+v 61.280602 14.849185 94.192497
+v 55.509399 14.849185 93.274498
+v 8.573000 46.060181 128.557007
+v 5.534220 44.743980 125.588005
+v 6.525090 39.275276 131.270996
+v 1.529240 46.121181 120.463005
+v 4.284860 35.179878 131.268997
+v 0.200257 35.196880 127.252007
+v 38.210999 47.417183 96.793510
+v 34.075802 42.000885 96.486107
+v 31.917101 41.892883 96.125908
+v 32.782902 43.346283 96.584511
+v 32.461601 42.635086 88.803307
+v 28.711800 44.703186 95.453506
+v 36.854000 38.793285 94.631508
+v 20.569599 47.896183 90.560509
+v 1.571110 49.751286 94.631508
+v 46.751999 50.844185 88.561409
+v 47.551601 50.298485 87.716309
+v 20.990000 58.716583 88.518906
+v 11.890800 60.869186 88.489510
+v 9.426530 51.052986 87.652908
+v 14.775900 53.694290 70.730110
+v 46.754601 50.021992 44.439709
+v 46.319302 50.135094 43.092609
+v 44.996201 50.652294 43.064507
+v 44.996201 50.131191 42.257710
+v 24.802200 72.226799 18.556911
+v 22.928600 75.630203 16.848711
+v 24.324301 74.347801 16.838211
+v 30.482201 72.445099 4.056712
+v 11.463800 71.457802 20.561712
+v 8.064100 71.878304 10.997011
+v 8.624260 73.291100 6.110552
+v 23.285700 61.976894 25.337709
+v 37.874401 53.738693 43.081409
+v 31.094101 54.321892 40.165108
+v 22.314501 54.203197 28.137110
+v 22.386700 54.203197 26.780109
+v 17.764299 65.644791 28.458811
+v 8.946550 63.635597 24.795210
+v 4.627570 56.422794 32.256409
+v 24.614300 64.898697 22.709011
+v 29.629601 63.702297 13.209810
+v 28.857901 69.733002 10.417611
+v 29.605900 66.416298 11.174211
+v 30.600201 67.773300 5.746111
+v 30.269199 63.702301 11.168811
+v 28.631300 55.012794 17.280909
+v 30.320000 54.881298 14.749309
+v 33.806499 55.220798 5.406829
+v 34.330799 51.488300 6.479459
+v 1.571110 59.631195 13.209809
+v 1.411000 51.350697 22.037308
+v 1.360940 54.254696 17.345409
+v 55.852402 41.989285 88.443504
+v 53.138401 44.703186 87.167305
+v 45.725601 38.556587 77.403305
+v 47.817902 36.428188 80.229111
+v 46.927299 37.185287 78.900208
+v 54.560902 30.288086 76.581909
+v 65.331200 9.420217 82.418404
+v 61.107201 21.505388 72.964600
+v 61.309399 20.530489 74.247398
+v 63.726299 8.710068 78.181000
+v 62.333401 14.849188 74.276199
+v 65.774399 22.312792 44.421505
+v 66.050201 8.063221 53.242199
+v 66.737602 8.063222 48.100700
+v 62.989101 23.416492 51.786804
+v 64.744301 25.705292 45.778603
+v 64.146103 18.920193 51.206703
+v 64.289597 17.563192 51.982204
+v 14.463000 49.225086 87.843910
+v 46.522400 48.789993 41.674507
+v 50.422798 38.407997 29.600906
+v 48.359699 39.402496 29.564905
+v 57.416901 36.573692 36.550709
+v 62.237301 32.391491 40.622902
+v 57.334301 37.140995 31.098406
+v 58.417000 35.410095 30.479906
+v 44.498402 40.430199 9.304427
+v 66.181000 19.598793 44.421505
+v 66.621201 20.935394 40.913303
+v 67.380600 10.098795 28.476402
+v 68.065697 8.063225 29.007202
+v 65.765099 12.022996 20.976603
+v 65.008598 13.578097 18.390303
+v 69.340401 16.031500 0.317952
+v 61.899399 20.786695 21.873404
+v 62.521400 18.327198 14.381103
+v 41.632801 42.797997 32.597908
+v 40.020302 40.645096 29.222406
+v 33.533298 40.724094 28.574205
+v 32.602200 39.982494 25.224707
+v 26.616899 41.604095 28.327808
+v 27.392599 43.636795 22.423708
+v 29.887600 43.247997 19.260408
+v 35.443001 44.727100 11.222307
+v 35.348701 49.153301 6.251228
+v 35.966801 43.869995 11.752207
+v 88.534599 -39.313614 90.579895
+v 89.394699 -40.789715 89.203491
+v 86.318298 -35.375614 87.600693
+v 87.478996 -35.288910 79.695091
+v 89.375099 -35.361813 74.276192
+v 89.574203 -36.901913 74.382393
+v 89.137398 -32.647812 71.562195
+v 89.301201 -34.004810 71.562195
+v 90.061996 -33.697811 69.545090
+v 88.136803 -22.055107 50.200096
+v 88.347603 -23.359608 49.863995
+v 92.038803 -32.647812 60.705894
+v 90.089104 -29.933708 49.849598
+v 88.446198 -31.291105 29.341394
+v 88.321701 -29.705904 24.888393
+v 87.085602 -29.589705 23.898594
+v 89.734497 -32.648106 27.888994
+v 89.781799 -33.958004 27.770695
+v 88.421204 -34.004803 29.377495
+v 91.135300 -36.718803 23.364294
+v 89.778198 -41.315716 87.846596
+v 89.718002 -40.789715 87.846596
+v 88.760399 -39.432713 76.990295
+v 90.837402 -39.397110 67.104294
+v 90.122597 -40.789711 67.491089
+v 89.778198 -43.086712 76.990295
+v 93.270599 -48.931816 83.775490
+v 91.104599 -46.217808 53.920692
+v 90.170700 -44.860706 51.206692
+v 87.410500 -50.288811 64.776993
+v 91.153702 -59.739410 61.993187
+v 92.462402 -42.146709 36.279293
+v 92.545700 -44.080109 43.127991
+v 93.261101 -46.217808 38.993393
+v 93.982002 -48.734406 34.823692
+v 87.064201 -55.249809 43.064491
+v 93.849297 -50.288803 34.464993
+v 90.554703 -78.786697 6.424587
+v 90.318100 -78.786697 5.067587
+v 89.051102 -85.571701 15.923786
+v 66.708702 -5.506789 118.328003
+v 74.191597 -15.005718 110.916000
+v 74.259003 -13.648718 110.916000
+v 56.624500 -1.435750 124.486000
+v 54.649502 -1.435750 121.772003
+v 55.596802 -4.149740 121.772003
+v 55.161301 -1.435749 119.058998
+v 57.209499 -1.435749 116.790001
+v 61.984001 -8.220781 127.200996
+v 43.639099 -15.005721 127.918999
+v 61.143600 -5.571000 118.794998
+v 61.280602 -5.174759 117.700996
+v 66.708702 2.417224 98.702499
+v 68.102798 1.405995 91.909203
+v 77.596497 -12.854116 99.875397
+v 77.672798 -13.431216 101.364998
+v 74.323303 -8.281267 106.955002
+v 62.947201 3.992234 97.345497
+v 62.518501 3.992234 94.631500
+v 62.637600 5.507245 94.631500
+v 63.087200 1.278245 94.631500
+v 43.639099 -25.861818 122.761993
+v 59.923500 -31.290819 114.853989
+v 59.923500 -36.718819 114.415993
+v 78.214104 -17.265017 101.297997
+v 78.004601 -22.744617 102.542999
+v 78.309502 -25.861814 95.988495
+v 78.944603 -32.728214 100.059990
+v 83.804100 -33.170216 94.589493
+v 86.344498 -34.954617 90.241692
+v 66.381599 -39.432720 110.915993
+v 65.351700 -42.146721 112.984993
+v 68.065697 -43.503719 111.123993
+v 68.065697 -44.860718 111.550995
+v 65.285202 -44.830917 113.473991
+v 65.351700 -55.716721 112.969994
+v 57.209499 -47.574818 117.317993
+v 62.637600 -44.860718 114.805992
+v 63.822601 -56.987518 114.776993
+v 70.172997 -44.860718 109.559990
+v 78.455803 -55.716717 100.059990
+v 83.842598 -50.288815 91.917496
+v 84.350098 -50.288815 90.790489
+v 54.495399 -66.981812 100.059990
+v 43.639099 -65.397812 100.059990
+v 68.780197 1.278249 67.491096
+v 69.156898 -1.435741 68.848099
+v 69.869202 -1.438361 67.504601
+v 69.437897 0.024403 67.474602
+v 71.091202 -5.506784 86.489502
+v 72.141296 -6.998065 88.022499
+v 71.337700 -6.863784 86.489502
+v 69.422798 -6.576733 78.347298
+v 68.627296 -1.435740 63.419998
+v 75.589798 0.678335 60.498001
+v 74.192001 -2.792730 59.348900
+v 75.234100 -2.792730 57.991798
+v 77.405296 -5.491220 60.091999
+v 74.696999 -6.856580 64.764702
+v 74.560600 -11.023610 66.139900
+v 75.037399 -12.304411 66.283203
+v 82.353500 -12.333109 55.293995
+v 78.921997 -11.563708 52.563702
+v 70.779800 -9.000738 53.920700
+v 68.586998 -5.506779 55.277802
+v 68.515503 -5.506779 53.920700
+v 69.422798 -8.220768 47.936798
+v 81.636002 -18.239714 81.061401
+v 83.513100 -17.719713 76.990303
+v 86.269897 -31.266212 85.229095
+v 86.379204 -34.814014 86.467094
+v 86.206398 -17.719709 53.920696
+v 73.493896 -14.735706 40.350395
+v 73.949203 -12.335005 29.495499
+v 74.850899 -13.648705 27.332699
+v 72.613998 -3.810492 9.817199
+v 72.757599 -6.185242 11.852699
+v 72.763702 -7.542303 13.209799
+v 73.051399 -8.899232 11.852698
+v 73.355797 -10.934801 8.460148
+v 82.769402 -24.749405 34.943897
+v 79.973900 -23.147804 26.780096
+v 77.565002 -21.044703 15.923797
+v 81.102898 -25.861801 13.209796
+v 80.278999 -24.504803 12.649396
+v 80.251900 -25.927603 12.000496
+v 72.497299 -25.861801 7.781596
+v 77.733803 -31.290804 18.637894
+v 78.921997 -27.218801 16.505196
+v 77.555702 -28.575703 13.209795
+v 77.386200 -31.290802 15.923796
+v 78.921997 -29.075703 14.566795
+v 76.207901 -31.290802 14.193195
+v 76.207901 -29.290802 13.209795
+v 84.350098 -35.361805 23.318893
+v 77.216499 -34.004803 18.637894
+v 80.278999 -27.218801 12.159795
+v 78.921997 -27.218801 12.447095
+v 76.207901 -28.575703 12.982495
+v 70.779800 -34.004799 6.082894
+v 70.142998 -36.718800 5.067594
+v 81.636002 -57.316807 43.064491
+v 84.350098 -55.716709 36.577492
+v 70.475502 -42.146706 13.209793
+v 69.870201 -39.432701 7.781594
+v 65.351700 -53.002705 14.044291
+v 70.779800 -66.572800 3.432589
+v 70.779800 -67.586700 5.067589
+v 85.638496 -73.452797 20.001188
+v 83.148598 -73.346703 16.283489
+v 85.943001 -73.321800 14.911887
+v 84.342003 -73.745003 14.669988
+v 82.911903 -74.708504 14.513787
+v 78.681801 -74.923698 14.599088
+v 74.705399 -70.906303 15.854388
+v 75.640404 -72.001801 15.923789
+v 76.207901 -73.636703 7.781588
+v 76.765503 -74.715797 6.424588
+v 76.207901 -73.519798 6.424588
+v 84.350098 -76.710800 3.710488
+v 82.993103 -77.731796 6.424587
+v 62.637600 -66.308701 5.067589
+v 62.637600 -66.572800 4.418189
+v 62.637600 -66.801804 3.710489
+v 20.555500 93.155899 -17.123184
+v 31.423500 84.042900 -1.752036
+v 35.119099 80.664703 -7.145727
+v 35.386799 77.950699 -7.299437
+v 31.500200 78.978104 0.330100
+v 36.803699 70.630402 -15.206489
+v 35.496899 71.844200 -15.829788
+v 30.068800 77.272301 -19.052387
+v 27.219101 73.199898 -19.325888
+v 20.139900 91.963600 -18.198385
+v 20.513800 89.808701 -19.643385
+v 8.728800 84.851898 -10.878587
+v 21.868299 87.626602 -20.726187
+v 23.109501 73.947411 -24.465189
+v 21.419300 74.563210 -24.793888
+v 20.569599 88.128197 -20.345884
+v 19.212500 88.128197 -19.933084
+v 20.594900 86.300598 -20.845686
+v 19.212500 86.771202 -20.234886
+v 20.569599 84.057297 -21.330687
+v 18.070101 81.305603 -19.974386
+v 18.448900 76.794800 -22.876787
+v 20.614401 75.622810 -24.148689
+v 13.767000 73.912407 -37.509289
+v 15.423100 74.049606 -38.602489
+v 32.523102 63.607800 -0.331085
+v 32.189701 64.681503 1.005391
+v 31.871599 65.239799 -1.781869
+v 35.496899 70.487198 -16.170889
+v 36.812801 63.703205 -16.582691
+v 35.541000 63.876804 -18.014891
+v 36.854000 62.345303 -15.487189
+v 33.435699 60.303200 -5.780830
+v 33.762299 59.631199 -7.145730
+v 35.818401 54.986599 -6.361071
+v 34.410900 56.944000 -10.445391
+v 35.093201 56.917202 -15.287890
+v 44.841801 49.090305 -13.537892
+v 42.282101 50.626305 -19.019793
+v 31.072300 62.704803 -21.452290
+v 32.330799 61.016705 -21.371790
+v 21.566200 71.051109 -37.096088
+v 34.771099 56.068104 -20.204790
+v 46.267700 49.603008 -44.997692
+v 47.536499 48.596111 -73.968895
+v 28.121401 71.901505 -42.001289
+v 27.599600 66.337509 -49.918488
+v 32.919899 65.551407 -57.035690
+v 21.665300 69.930206 -58.195988
+v 40.667500 55.120407 -53.284794
+v 16.520100 69.165306 -49.255287
+v 3.545220 68.821411 -48.075390
+v 28.615601 61.061310 -69.723289
+v 35.277500 60.817715 -84.352791
+v 20.243700 66.619118 -75.913292
+v 30.928101 62.553413 -85.761993
+v 38.869801 58.693413 -80.648895
+v 52.206299 38.972198 -6.636844
+v 53.155300 37.250198 -4.870284
+v 51.985199 43.381306 -25.804993
+v 56.508400 36.444706 -38.885391
+v 63.345501 24.941607 -39.714497
+v 47.432701 47.662407 -45.469193
+v 45.045101 48.707909 -46.409592
+v 51.380798 42.554806 -47.805794
+v 54.761501 38.986206 -57.084492
+v 60.454700 28.918810 -60.757797
+v 52.117699 40.113712 -77.011391
+v 51.757702 38.986313 -78.996796
+v 53.938000 31.133213 -76.354393
+v 49.067299 30.409214 -84.496590
+v 66.938103 16.206207 -46.499695
+v 64.099701 22.407209 -57.169796
+v 63.037300 24.348310 -58.712997
+v 62.637600 24.389210 -60.114494
+v 62.180099 24.348310 -61.426994
+v 63.770699 22.380209 -58.757397
+v 63.801498 18.920210 -61.426994
+v 63.753502 16.206209 -62.784096
+v 56.291901 23.669712 -75.159294
+v 53.138401 26.532213 -79.068489
+v 51.040298 17.563213 -81.782501
+v 62.320999 16.206211 -66.176697
+v 56.735401 14.847913 -76.319901
+v 38.592098 51.363617 -91.223389
+v 39.508801 50.136616 -91.239189
+v 34.301899 52.845314 -92.638794
+v 30.059601 59.498016 -89.863693
+v 3.428300 52.845314 -95.352890
+v 44.983299 22.991314 -87.210602
+v 43.450699 5.455094 -85.915497
+v 43.495800 8.170424 -85.482498
+v 27.354700 39.275314 -97.533295
+v 41.707001 7.384714 -87.218597
+v 34.190399 12.365815 -96.386398
+v 34.026699 10.777316 -96.709900
+v 34.066700 9.420246 -96.709900
+v 31.507999 9.450576 -99.856102
+v 21.926300 7.621417 -103.495003
+v 24.178600 6.069657 -104.814003
+v 21.694599 6.400717 -105.474998
+v 19.715000 12.080016 -101.012001
+v 11.622000 6.634108 -111.827003
+v 0.078520 9.498007 -107.961998
+v 87.064201 -82.857697 -7.868484
+v 73.339897 -0.078733 -13.252400
+v 73.482803 -0.228696 -18.002001
+v 72.904701 4.670723 -21.394600
+v 72.907898 3.992254 -25.465700
+v 72.564796 3.992255 -29.536800
+v 73.532402 -8.647766 -22.891703
+v 73.551903 -8.559997 -26.144201
+v 73.567802 -12.291694 -39.714504
+v 73.404297 -12.291694 -42.428604
+v 73.051102 -14.652594 -42.329403
+v 69.864899 -32.987000 -9.011656
+v 70.211304 -29.933699 -13.252405
+v 72.253304 -19.532194 -32.929405
+v 64.018303 -36.718796 -30.215305
+v 63.552200 -36.718796 -32.929409
+v 69.913101 -2.792711 -54.218201
+v 65.731300 -2.792710 -62.784100
+v 73.323799 -10.934793 -43.785599
+v 69.930099 -7.542291 -54.997398
+v 65.351700 -13.572790 -60.070004
+v 49.951500 -6.863758 -76.354401
+v 48.489300 -12.291688 -76.354401
+v 47.063900 -12.291687 -79.068497
+v 54.495399 -15.627688 -68.212196
+v 54.495399 -20.433689 -65.674896
+v 47.784801 -36.718788 -68.212204
+v 69.077797 -40.111301 -3.074636
+v 68.065697 -48.356800 -7.145748
+v 63.034401 -55.716698 -19.359009
+v 68.482903 -47.555996 -22.082708
+v 71.566399 -51.955597 -25.391907
+v 66.708702 -48.931797 -20.000507
+v 71.420898 -51.258396 -26.657808
+v 73.493896 -55.716698 -26.528309
+v 72.621902 -54.359695 -26.144209
+v 77.981003 -54.359695 -34.286407
+v 79.158501 -59.765095 -32.921310
+v 70.362503 -48.605198 -33.028206
+v 69.730301 -49.009693 -38.419609
+v 68.065697 -48.931793 -39.443409
+v 67.266098 -48.868393 -39.806709
+v 63.926800 -39.432697 -27.501205
+v 64.591103 -40.789696 -30.215305
+v 62.344799 -44.860691 -41.071507
+v 62.637600 -45.842793 -41.071507
+v 78.988297 -67.753403 1.144799
+v 79.647797 -66.572800 -4.431661
+v 79.597000 -66.012100 -6.000511
+v 80.267899 -66.637901 -7.675451
+v 67.907898 -65.169403 -13.987411
+v 66.631302 -65.030899 -14.509211
+v 82.993103 -76.775803 -1.717613
+v 77.565002 -78.266701 0.996486
+v 83.856697 -74.715797 -19.359011
+v 81.521103 -65.126999 -22.539612
+v 83.439903 -67.929703 -20.716112
+v 83.809898 -67.980202 -23.392912
+v 80.278999 -65.843803 -20.716112
+v 81.010101 -65.215790 -30.215311
+v 80.718597 -66.572792 -30.215311
+v 78.921997 -66.572792 -31.987711
+v 83.821899 -70.633698 -22.068211
+v 63.434101 -80.143692 -30.215313
+v 50.142502 -42.146690 -62.784107
+v 56.002399 -55.804893 -45.273808
+v 56.453701 -57.073692 -43.785606
+v 55.721901 -58.430691 -58.034508
+v 47.505600 -38.754189 -69.569206
+v 51.144402 -48.931789 -75.675911
+v 50.772999 -48.291489 -72.283310
+v 54.033401 -54.359688 -68.212204
+v 51.307301 -49.253090 -78.050705
+v 55.405300 -66.572792 -64.141106
+v 54.472000 -71.978989 -57.177010
+v 55.807201 -76.117889 -53.164112
+v 54.326302 -72.001793 -60.070011
+v 55.347198 -66.572792 -66.855209
+v 54.871101 -69.286690 -66.855209
+v 55.153099 -67.929695 -66.855209
+v 55.231800 -65.215782 -75.336609
+v 55.262299 -63.858788 -76.354408
+v 55.049900 -66.572784 -75.675911
+v 54.220600 -72.001793 -68.212212
+v 53.091400 -74.715782 -79.068512
+v 51.750801 -77.429688 -84.496613
+v 50.178200 -80.143684 -84.496613
+v 21.926600 -92.170700 -19.359015
+v 54.495399 -83.148689 -46.499714
+v 54.548901 -82.929695 -49.254814
+v 54.495399 -82.857689 -50.313015
+v 49.067299 -81.853783 -84.496613
+v 43.639099 -0.078721 -86.342300
+v 39.140800 0.992996 -91.443398
+v 36.778099 1.557935 -93.860703
+v 39.667400 -2.114185 -91.542397
+v 32.782902 -3.431744 -100.780998
+v 33.272701 -10.693383 -103.507004
+v 32.714901 -8.473063 -103.367996
+v 33.082901 -10.934783 -107.566002
+v 31.714100 -5.751322 -111.287003
+v 25.081900 -6.863749 -127.921997
+v 30.068800 -12.970780 -125.723999
+v 6.464140 5.762169 -116.632004
+v 42.931000 -29.933687 -86.532104
+v 40.116199 -28.575686 -95.352905
+v 38.427799 -27.259686 -98.704910
+v 37.708000 -27.218782 -100.781006
+v 41.409199 -36.718784 -103.495010
+v 40.691700 -36.736080 -106.803009
+v 33.695202 -19.755178 -124.528999
+v 36.349701 -28.575684 -108.923004
+v 36.559299 -29.933683 -109.602005
+v 34.742599 -27.218779 -127.922005
+v 24.115700 -8.222449 -130.619003
+v 0.214082 -6.863748 -137.539993
+v 33.459400 -24.504780 -129.279007
+v 27.354700 -20.433680 -134.604996
+v 30.068800 -25.861776 -134.884003
+v 28.520100 -25.861776 -136.063995
+v 32.782902 -31.290777 -134.987000
+v 37.023201 -34.973377 -130.727005
+v 35.445400 -35.400776 -134.569000
+v 32.223301 -27.218779 -133.350006
+v 30.068800 -28.589678 -136.063995
+v 51.298500 -49.979984 -86.192909
+v 53.221199 -54.020786 -88.398109
+v 53.924198 -55.716686 -88.228409
+v 49.898201 -51.645786 -104.174011
+v 48.446400 -48.931786 -104.852005
+v 51.581902 -55.716686 -105.307007
+v 53.976398 -59.787685 -97.388405
+v 53.696602 -72.001785 -91.281815
+v 53.595600 -72.001785 -93.995811
+v 53.464802 -72.001785 -96.709915
+v 50.706799 -80.143684 -98.066917
+v 52.426899 -67.929680 -120.458008
+v 40.438801 -39.432682 -117.404007
+v 46.070000 -53.211777 -135.999008
+v 43.639099 -50.288776 -136.621017
+v 48.630501 -56.090076 -133.290009
+v 51.614601 -65.215775 -130.635010
+v 37.658501 -47.574776 -138.777008
+v 40.925098 -50.288776 -138.216019
+v 39.598598 -50.288776 -138.777008
+v 49.067299 -81.726685 -87.210617
+v -10.724200 52.399281 113.454010
+v -17.058300 50.125481 117.690010
+v -21.498400 50.610180 116.344009
+v -13.356200 54.203182 111.878006
+v -11.999200 52.845280 112.843010
+v -21.914801 51.577080 115.696007
+v -21.963400 52.226082 112.052010
+v -23.515301 51.403282 114.956009
+v -8.918310 60.993786 98.024208
+v -1.816330 62.156185 91.907310
+v -10.642200 53.933186 102.773010
+v -15.874700 58.518280 108.409004
+v -15.288300 57.216782 109.804008
+v -18.784401 52.293282 106.845009
+v -9.270340 59.630783 98.724907
+v -22.855499 50.131180 107.560005
+v -23.240900 50.477882 107.673004
+v -9.285150 47.417179 116.973007
+v -17.427299 48.774181 118.118004
+v -18.816900 48.886280 117.745010
+v -18.784401 39.275280 116.546005
+v -19.309601 39.275280 116.344009
+v -10.642200 28.419279 123.460007
+v -10.642200 33.847179 121.507011
+v -25.484800 49.008183 110.983009
+v -25.569500 40.481281 113.631004
+v -24.212500 33.847179 114.563011
+v -23.814501 31.133181 116.344009
+v -24.212500 31.133181 116.083008
+v -9.382060 44.716686 103.987007
+v -13.397900 42.010582 106.829010
+v -16.070299 41.372280 108.202011
+v -13.413100 41.351780 105.489006
+v -14.713300 41.143181 106.845009
+v -14.034800 41.090282 105.487007
+v -0.958420 48.747383 96.090111
+v -2.499980 48.430183 95.988510
+v -25.245100 48.944580 110.204010
+v -31.415600 33.290581 108.284004
+v -10.642200 6.706220 125.510002
+v -19.664101 6.706220 121.772003
+v -38.570999 21.634283 110.916000
+v -37.782799 12.134282 113.109001
+v -36.833401 26.119284 108.348007
+v -41.750702 24.024883 106.579010
+v -40.487202 21.592382 109.388000
+v -45.758499 20.558783 105.149002
+v -46.699501 20.834982 103.869003
+v -46.973598 18.987183 104.071999
+v -47.653599 18.850384 103.373001
+v -47.286098 17.579382 104.138000
+v -51.618000 25.705284 93.274506
+v -48.639099 12.134283 105.575996
+v -48.206100 16.097183 104.154999
+v -48.639099 14.849183 104.417999
+v -56.416801 14.732083 97.104599
+v -56.055401 14.275484 99.163498
+v -10.209000 57.818790 68.808510
+v -11.815000 58.011990 67.946709
+v -27.795900 52.818287 76.240410
+v -28.174900 55.033890 68.138908
+v -25.654400 53.881290 74.827507
+v -24.814301 60.128193 56.274811
+v -28.737801 57.325890 59.867107
+v -27.719801 58.564392 57.143711
+v -30.160500 55.704788 63.377708
+v -37.328201 53.400993 53.881207
+v -38.478500 53.062092 50.757908
+v -39.733299 52.605194 48.134308
+v -41.569000 50.749592 49.026108
+v -22.013500 64.871689 38.710011
+v -6.538160 50.433296 30.401907
+v -8.944900 51.411697 31.144407
+v -6.239940 49.752697 28.622707
+v -8.480270 50.672897 25.275707
+v -10.131500 51.892498 25.939907
+v -11.867500 51.935997 25.179607
+v -16.155600 57.122295 29.591009
+v -12.956200 54.867397 28.155209
+v -16.460699 57.524097 28.137510
+v -16.070299 56.917194 27.476610
+v -12.481100 53.767395 26.735109
+v -23.092501 58.263096 34.276009
+v -42.486900 51.678997 31.418207
+v -18.966299 55.600296 20.787710
+v -2.746340 57.862598 8.477599
+v -8.189230 53.198101 11.362509
+v -9.037920 54.367599 6.622509
+v -30.076200 57.265495 23.305210
+v -26.738800 56.426895 16.380810
+v -27.636900 55.938595 15.754709
+v -28.403601 54.511395 13.644408
+v -27.605101 48.546284 87.846611
+v -30.683100 47.640083 87.354111
+v -41.853901 43.234283 82.418411
+v -42.480801 44.727989 78.399109
+v -44.991100 46.221588 59.645706
+v -44.877399 46.357891 55.910408
+v -58.426601 29.482290 59.680305
+v -59.488701 29.304190 58.323803
+v -60.817799 29.166391 57.594303
+v -60.086899 29.369793 51.247604
+v -67.637604 30.167192 51.206703
+v -67.637604 29.776192 51.811905
+v -68.436600 29.989292 51.400303
+v -69.071602 29.201393 51.322105
+v -69.033798 29.929693 50.539803
+v -69.820099 27.062292 51.206703
+v -67.637604 30.003193 48.492603
+v -68.326401 30.286293 50.340702
+v -69.578499 29.176193 50.420105
+v -63.757500 24.017189 70.244705
+v -63.083000 21.207388 75.288902
+v -71.744904 6.369437 79.240196
+v -72.480003 17.139288 67.181702
+v -60.756599 26.825090 61.720604
+v -61.692699 26.413490 60.183903
+v -65.655403 26.666891 60.490803
+v -67.080704 27.165190 55.432602
+v -71.708603 16.206190 60.363304
+v -79.850899 14.225289 64.777000
+v -75.078903 14.849192 55.277805
+v -83.921997 8.063220 56.305302
+v -46.221199 47.926598 30.681608
+v -47.451199 44.020397 25.193207
+v -56.131302 33.397491 38.245705
+v -54.932701 35.204296 34.583008
+v -62.209400 28.476294 38.993404
+v -60.852402 29.154194 37.636402
+v -59.880798 30.100994 34.889904
+v -60.852402 29.356295 34.922302
+v -61.802200 28.419294 34.922302
+v -60.809700 29.842995 32.545605
+v -58.516998 30.154196 24.992405
+v -67.633698 28.418295 38.661804
+v -47.319801 43.734402 1.759117
+v -53.388699 37.918301 3.032006
+v -61.267399 27.206997 26.515503
+v -60.382401 27.740196 26.101604
+v -60.738300 27.133297 24.256504
+v -68.994598 26.683195 34.922302
+v -75.563499 18.784893 41.850605
+v -67.637604 25.977194 33.565304
+v -77.606400 16.154993 41.043205
+v -78.225700 14.849194 38.993404
+v -78.493797 14.474194 38.993404
+v -78.493797 13.943194 37.636402
+v -79.021599 13.492193 38.993404
+v -80.574600 8.063224 33.565300
+v -63.357601 23.243200 3.201624
+v -65.766701 18.302097 11.134303
+v -66.310898 17.349598 10.684503
+v -75.383301 15.587596 21.710001
+v -81.250900 6.760377 14.573901
+v -68.865601 13.452898 9.540472
+v -71.403900 6.488339 1.645641
+v -72.102501 5.539609 3.177101
+v -77.136803 13.492198 11.352802
+v -10.642200 -4.149740 123.195000
+v -41.747898 -36.718815 89.203491
+v -62.209400 -9.577777 103.149002
+v -62.209400 -10.259817 102.773003
+v -65.917099 5.536605 92.457100
+v -66.928902 -2.792735 93.274498
+v -68.512703 -4.149854 89.112801
+v -70.739304 0.088609 86.351196
+v -75.460197 -2.792733 79.704399
+v -79.839798 2.642138 69.546303
+v -79.780403 1.285939 70.004402
+v -80.750198 2.594659 68.678497
+v -75.779800 -12.928811 67.491096
+v -75.117699 -15.005712 67.491096
+v -82.537300 4.423019 65.547997
+v -83.425400 1.278249 64.777000
+v -83.913300 2.634690 63.418098
+v -82.582298 1.273241 52.566399
+v -81.260803 2.609912 48.416698
+v -83.921997 -4.149724 27.489599
+v -85.278999 3.992248 13.635101
+v -85.745598 -4.149724 21.351999
+v -72.224403 5.781739 5.507391
+v -72.723801 4.008119 4.836401
+v -72.224899 4.813169 2.579671
+v -73.370796 1.278259 5.067600
+v -78.493797 3.992248 9.737701
+v -79.850899 3.992248 10.120001
+v -77.995697 -9.577762 13.209798
+v -78.493797 -18.483803 7.781597
+v -80.695396 -20.778400 1.409407
+v -79.338699 -23.147802 7.781596
+v -79.795303 -21.831499 4.967377
+v -80.974503 -21.819401 1.993876
+v -81.207901 -36.718800 6.475194
+v -83.002403 -34.004799 5.067594
+v -56.597599 -58.430702 24.065990
+v -81.207901 -39.432701 6.560594
+v -82.522903 -39.432701 5.067594
+v -87.908302 -1.391544 23.987900
+v -89.300102 0.931759 22.766600
+v -89.864998 1.278257 21.351999
+v -88.658897 -1.435734 22.709000
+v -1.736370 63.845001 -8.915290
+v -14.034800 60.988304 -21.394590
+v -11.823100 60.999306 -49.037689
+v -14.117900 59.528107 -50.504490
+v -20.932899 55.266506 -57.902493
+v -25.934000 52.504807 -52.303493
+v -20.098101 50.395611 -76.721092
+v -43.092300 47.327202 -11.396893
+v -40.496899 45.557804 -29.197592
+v -41.418400 43.953907 -40.169891
+v -44.568001 46.392300 -0.360593
+v -45.779701 44.698902 -14.942492
+v -51.590401 38.774303 -15.899194
+v -58.846199 31.132401 -3.020445
+v -54.385799 36.037102 -11.151494
+v -57.982601 27.039404 -20.662697
+v -60.350201 18.920206 -36.661198
+v -59.984699 18.920208 -42.428596
+v -61.220798 16.884306 -32.208397
+v -42.483601 37.420910 -61.345692
+v -40.996101 37.561111 -64.194290
+v -34.847198 38.731613 -73.158691
+v -36.521301 36.221413 -73.642693
+v -29.640600 25.705313 -84.216690
+v -32.354698 17.563213 -82.826202
+v -40.244900 22.243013 -77.703598
+v -29.640600 13.492213 -84.451698
+v -47.103401 28.006111 -66.801392
+v -6.158270 49.810314 -92.631790
+v -14.921800 47.540016 -87.275192
+v -13.356200 47.442314 -88.567696
+v -16.101801 45.834415 -87.150993
+v -8.824940 31.141016 -93.969696
+v -13.356200 33.847214 -91.607193
+v -16.070299 33.847214 -90.421692
+v -14.701800 25.647316 -91.277092
+v -9.169870 24.348316 -96.620094
+v -4.719600 11.952317 -104.918999
+v -10.589700 11.383817 -102.454002
+v -28.283600 17.563213 -85.053101
+v -7.347370 6.084738 -109.414001
+v -71.269203 4.971980 -0.214885
+v -65.352898 4.840765 -33.098999
+v -76.621399 -23.826199 -16.645004
+v -85.408699 -30.181499 -1.799895
+v -86.590401 -30.504601 -4.153505
+v -85.882202 -34.037998 -9.120336
+v -86.111099 -35.361797 -12.573906
+v -76.705803 -32.647797 -15.287906
+v -76.541199 -32.647797 -16.645006
+v -73.663696 -17.722597 -27.502804
+v -73.778099 -19.047895 -28.857405
+v -74.095901 -20.433697 -28.858303
+v -74.422699 -20.433695 -29.586304
+v -74.460403 -19.153494 -30.261003
+v -73.449898 -23.153996 -27.502804
+v -74.048698 -21.790796 -28.858303
+v -75.077301 -21.790794 -30.215303
+v -82.576401 -29.893993 -29.440805
+v -85.284500 -35.423096 -20.976505
+v -84.969902 -35.404896 -21.998806
+v -85.571098 -31.797297 -26.646406
+v -82.545898 -28.219095 -34.288303
+v -83.921997 -28.417694 -35.643402
+v -39.625099 -12.190387 -82.541801
+v -41.870201 -13.589087 -80.463097
+v -41.883999 -14.809087 -81.749001
+v -63.299801 1.956738 -51.927799
+v -64.098396 -0.078727 -48.535198
+v -62.895500 2.635259 -53.284801
+v -62.106602 1.956739 -55.998901
+v -59.523102 -2.880180 -61.453499
+v -54.067200 -1.562729 -68.245201
+v -62.172100 -17.669693 -51.869404
+v -62.206902 -20.440092 -50.595905
+v -61.196999 -24.504793 -49.213703
+v -59.898701 -23.147791 -53.284805
+v -67.637604 -17.719692 -47.169403
+v -75.779800 -21.790792 -47.227203
+v -75.779800 -23.147793 -47.372604
+v -84.442902 -25.861792 -43.785603
+v -70.351601 -28.575693 -46.581005
+v -85.945099 -28.575693 -42.428604
+v -85.463097 -29.941992 -42.551502
+v -52.267700 -20.433689 -68.212196
+v -80.404999 -38.075695 -18.002007
+v -82.554802 -39.079296 -16.798306
+v -63.559502 -44.860687 -60.748508
+v -64.360603 -44.860687 -58.713009
+v -56.158501 -58.430687 -79.068504
+v -20.496300 -0.719466 -100.811996
+v -17.432400 0.155046 -103.592003
+v -18.635401 -2.458173 -104.165001
+v -30.759001 -5.506755 -92.270203
+v -32.354698 -11.313684 -93.995796
+v -11.678800 2.390828 -111.074997
+v -5.027320 0.328268 -126.311996
+v -37.397400 -16.215485 -91.998596
+v -43.840500 -24.900585 -96.061707
+v -29.354300 -23.147779 -123.850998
+v -29.174700 -23.119980 -126.476997
+v -29.640600 -24.268679 -125.208008
+v -30.387400 -25.861778 -125.208008
+v -29.640600 -25.861778 -127.464005
+v -35.386200 -26.443081 -118.349007
+v -55.069599 -35.191986 -89.599510
+v -17.290600 -7.580729 -129.389999
+v -20.356300 -10.703879 -129.248001
+v -21.498400 -12.863778 -134.707001
+v -20.481600 -13.514278 -136.233994
+v -21.275101 -13.808778 -135.932999
+v -18.905701 -14.870478 -137.477997
+v -18.784401 -13.648678 -136.983994
+v -23.276400 -13.648678 -133.350006
+v -24.435101 -14.743778 -132.061005
+v -22.616699 -13.758478 -134.546005
+v -24.726801 -16.362679 -131.992004
+v -25.172800 -17.719679 -131.992004
+v -20.500401 -80.143684 -106.209015
+v -52.809299 -39.093182 -106.475006
+v -53.129398 -40.110680 -106.888008
+v -50.588299 -40.776382 -120.622009
+v -48.639099 -50.288780 -127.703011
+v -43.210999 -42.146679 -134.645004
+v -43.210999 -39.432678 -134.080994
+v -37.782799 -47.574776 -132.844009
+v -45.924999 -47.574776 -133.299011
+v -87.706398 -31.143900 -5.587145
+v -89.994904 -34.296898 -14.906606
+v -90.829201 -35.018696 -15.620206
+v -88.518501 -30.317694 -38.497303
+v -90.707100 -37.311798 -1.717606
+v -89.350098 -42.146702 -1.707007
+v -93.319702 -40.734600 -5.865137
+v -93.421204 -39.432701 -6.361576
+v -93.762497 -39.432701 -7.145746
+v -93.421402 -42.047901 -5.788577
+v -93.940804 -40.789700 -7.145747
+v -94.003998 -42.146698 -11.895307
+v -93.899300 -38.740597 -16.500406
+v -89.344803 -40.973396 -32.932308
+s off
+f 1 2 3
+f 3 4 1
+f 5 1 4
+f 4 6 5
+f 7 8 6
+f 9 8 7
+f 10 11 12
+f 13 14 15
+f 16 17 18
+f 18 19 20
+f 19 18 17
+f 19 21 22
+f 23 24 25
+f 26 27 23
+f 24 27 28
+f 28 29 30
+f 25 28 30
+f 29 31 30
+f 31 29 32
+f 33 27 34
+f 35 36 33
+f 37 29 28
+f 37 28 36
+f 38 39 40
+f 41 36 40
+f 42 32 29
+f 43 44 42
+f 45 41 39
+f 45 39 46
+f 47 45 46
+f 48 45 47
+f 43 41 45
+f 49 43 45
+f 49 45 50
+f 50 45 48
+f 51 52 50
+f 50 48 51
+f 53 54 55
+f 55 56 53
+f 57 55 54
+f 55 58 56
+f 55 59 60
+f 57 61 62
+f 63 64 65
+f 60 59 66
+f 64 66 59
+f 64 59 67
+f 68 65 69
+f 70 63 68
+f 68 63 65
+f 71 70 68
+f 67 59 62
+f 62 72 67
+f 73 67 72
+f 74 75 76
+f 77 78 75
+f 77 79 80
+f 81 74 82
+f 79 77 81
+f 79 81 83
+f 84 79 83
+f 81 85 83
+f 79 84 86
+f 87 88 89
+f 90 91 92
+f 89 93 92
+f 93 89 94
+f 71 95 96
+f 96 93 94
+f 96 94 71
+f 89 88 97
+f 98 93 99
+f 96 99 93
+f 99 100 98
+f 101 102 100
+f 103 102 104
+f 104 105 106
+f 95 69 107
+f 108 107 69
+f 75 78 109
+f 110 109 78
+f 72 111 108
+f 108 111 112
+f 72 108 73
+f 113 76 75
+f 114 108 112
+f 95 71 69
+f 95 110 96
+f 101 80 79
+f 115 116 117
+f 118 23 119
+f 26 23 118
+f 120 121 122
+f 118 116 123
+f 118 119 116
+f 117 116 124
+f 124 121 117
+f 125 122 126
+f 127 128 129
+f 127 130 128
+f 131 128 130
+f 132 133 134
+f 135 132 134
+f 34 26 136
+f 137 138 129
+f 131 137 128
+f 139 137 131
+f 139 131 140
+f 141 139 140
+f 141 140 135
+f 139 142 143
+f 144 141 145
+f 145 141 146
+f 147 148 117
+f 149 150 151
+f 149 151 115
+f 149 115 148
+f 53 152 153
+f 153 54 53
+f 148 54 153
+f 149 148 153
+f 11 150 149
+f 149 152 11
+f 121 61 117
+f 147 61 57
+f 62 61 154
+f 72 62 154
+f 150 155 156
+f 131 156 157
+f 157 158 159
+f 158 160 159
+f 157 159 131
+f 159 160 132
+f 140 132 135
+f 161 162 155
+f 155 163 161
+f 164 25 165
+f 25 164 23
+f 165 166 167
+f 168 25 30
+f 111 169 112
+f 170 169 111
+f 170 171 172
+f 169 170 172
+f 169 173 174
+f 114 112 175
+f 169 174 112
+f 175 112 174
+f 31 32 176
+f 175 177 114
+f 85 81 178
+f 35 34 179
+f 38 35 179
+f 179 138 143
+f 38 179 142
+f 143 142 179
+f 144 39 142
+f 46 39 144
+f 180 46 144
+f 170 111 72
+f 181 182 44
+f 44 43 183
+f 184 44 183
+f 185 44 184
+f 44 185 186
+f 183 43 49
+f 183 49 50
+f 184 183 50
+f 187 184 50
+f 187 185 184
+f 187 188 189
+f 189 190 185
+f 191 190 189
+f 192 193 194
+f 195 192 194
+f 195 194 196
+f 197 196 194
+f 197 198 196
+f 199 84 200
+f 84 201 202
+f 202 86 84
+f 203 204 205
+f 203 206 204
+f 203 207 206
+f 207 203 208
+f 203 209 208
+f 208 209 210
+f 211 7 212
+f 210 212 208
+f 213 211 212
+f 213 212 210
+f 214 211 213
+f 215 216 211
+f 204 202 205
+f 202 217 205
+f 218 219 220
+f 221 222 223
+f 221 223 224
+f 224 225 226
+f 226 221 224
+f 227 222 221
+f 227 221 226
+f 220 228 218
+f 214 218 229
+f 229 215 214
+f 229 218 230
+f 230 231 232
+f 232 231 233
+f 234 230 218
+f 231 230 234
+f 234 235 236
+f 237 236 238
+f 239 240 241
+f 242 176 243
+f 32 182 243
+f 243 176 32
+f 182 181 244
+f 182 244 243
+f 242 243 240
+f 245 240 243
+f 181 246 247
+f 247 248 245
+f 247 245 243
+f 248 247 249
+f 200 241 199
+f 250 251 199
+f 252 225 253
+f 250 248 253
+f 253 251 250
+f 249 252 248
+f 254 246 255
+f 254 255 256
+f 254 249 247
+f 256 249 254
+f 256 257 258
+f 259 260 261
+f 261 225 252
+f 261 252 259
+f 262 260 259
+f 258 263 256
+f 259 263 262
+f 246 181 186
+f 264 186 185
+f 265 246 186
+f 265 266 255
+f 255 246 265
+f 265 186 264
+f 264 266 265
+f 266 267 257
+f 257 267 268
+f 269 267 266
+f 269 266 264
+f 264 270 269
+f 271 272 268
+f 268 267 269
+f 272 270 193
+f 261 226 225
+f 261 260 227
+f 227 226 261
+f 273 262 263
+f 263 274 273
+f 273 274 275
+f 276 268 272
+f 277 268 278
+f 276 278 268
+f 279 280 281
+f 192 272 193
+f 282 281 280
+f 274 278 283
+f 279 283 278
+f 284 274 283
+f 279 284 283
+f 284 279 281
+f 274 284 275
+f 284 285 275
+f 282 196 286
+f 287 282 286
+f 287 286 288
+f 288 289 290
+f 285 291 292
+f 293 292 291
+f 294 293 291
+f 294 291 284
+f 295 293 294
+f 294 281 296
+f 295 294 297
+f 298 299 300
+f 300 262 298
+f 301 299 298
+f 302 299 228
+f 235 228 299
+f 299 301 235
+f 301 303 235
+f 262 273 298
+f 285 304 275
+f 303 236 235
+f 305 306 303
+f 303 307 305
+f 307 304 308
+f 309 310 311
+f 309 312 313
+f 314 313 312
+f 315 316 313
+f 317 310 309
+f 309 313 317
+f 318 292 293
+f 319 320 321
+f 321 322 319
+f 323 324 47
+f 322 325 323
+f 326 327 328
+f 328 51 326
+f 51 328 52
+f 321 325 322
+f 329 325 321
+f 321 330 329
+f 321 320 330
+f 331 330 320
+f 325 329 332
+f 329 330 333
+f 333 332 329
+f 327 325 332
+f 334 332 333
+f 330 331 333
+f 335 336 337
+f 132 160 133
+f 133 160 338
+f 133 335 134
+f 336 133 338
+f 335 133 336
+f 339 337 336
+f 340 339 336
+f 340 336 338
+f 341 337 342
+f 343 146 344
+f 345 341 342
+f 341 345 344
+f 346 347 348
+f 349 348 347
+f 350 348 349
+f 335 341 134
+f 337 341 335
+f 344 134 341
+f 146 134 344
+f 145 146 343
+f 339 351 347
+f 352 350 349
+f 353 354 352
+f 355 356 353
+f 353 356 357
+f 357 358 353
+f 353 358 354
+f 359 357 360
+f 361 358 357
+f 361 357 359
+f 362 359 363
+f 364 365 366
+f 364 366 367
+f 368 367 366
+f 340 338 364
+f 369 367 370
+f 365 364 371
+f 372 365 371
+f 373 366 365
+f 368 366 15
+f 366 373 13
+f 366 13 15
+f 351 374 375
+f 376 377 378
+f 378 368 376
+f 379 380 377
+f 15 381 376
+f 376 381 382
+f 376 383 379
+f 376 382 383
+f 383 380 379
+f 384 375 374
+f 375 384 385
+f 385 386 360
+f 384 374 378
+f 378 377 384
+f 387 360 388
+f 389 387 388
+f 363 387 389
+f 390 391 345
+f 390 392 391
+f 391 393 343
+f 180 145 343
+f 343 393 180
+f 345 391 343
+f 394 395 390
+f 396 397 398
+f 319 392 397
+f 397 399 319
+f 319 399 320
+f 396 400 401
+f 402 399 401
+f 401 403 402
+f 47 393 323
+f 404 331 405
+f 400 406 401
+f 407 403 401
+f 407 401 406
+f 350 352 408
+f 408 406 400
+f 409 408 352
+f 410 406 408
+f 410 408 409
+f 410 411 406
+f 409 354 412
+f 411 413 414
+f 411 414 415
+f 407 416 405
+f 415 417 416
+f 418 405 416
+f 416 419 418
+f 419 416 417
+f 419 420 421
+f 420 419 417
+f 417 415 414
+f 417 414 422
+f 417 422 420
+f 421 420 422
+f 422 423 421
+f 421 423 424
+f 425 426 362
+f 427 428 425
+f 426 425 428
+f 429 428 427
+f 428 430 426
+f 428 429 431
+f 430 428 431
+f 430 432 433
+f 434 431 429
+f 432 430 431
+f 435 431 434
+f 432 431 435
+f 436 437 438
+f 439 440 441
+f 442 439 441
+f 443 380 444
+f 445 444 439
+f 438 443 444
+f 445 438 444
+f 383 439 444
+f 446 445 439
+f 442 446 439
+f 447 448 449
+f 450 451 447
+f 452 443 389
+f 453 389 437
+f 425 363 453
+f 454 427 453
+f 427 425 453
+f 453 437 454
+f 454 429 427
+f 455 456 457
+f 458 455 457
+f 455 459 456
+f 458 436 449
+f 460 461 462
+f 463 464 465
+f 465 459 463
+f 464 463 460
+f 429 466 434
+f 466 429 456
+f 466 467 434
+f 467 468 435
+f 466 456 459
+f 469 470 467
+f 467 466 469
+f 467 470 468
+f 469 459 465
+f 469 465 470
+f 471 472 412
+f 412 362 471
+f 473 413 412
+f 473 412 472
+f 472 471 474
+f 471 430 474
+f 474 473 472
+f 475 474 430
+f 476 477 478
+f 479 478 480
+f 481 482 478
+f 481 478 479
+f 414 476 483
+f 484 424 423
+f 485 484 423
+f 485 423 422
+f 422 483 485
+f 486 487 488
+f 482 489 483
+f 487 489 482
+f 487 482 481
+f 486 489 487
+f 486 488 490
+f 485 483 489
+f 484 485 491
+f 432 480 433
+f 492 493 494
+f 495 488 487
+f 496 495 487
+f 490 488 495
+f 497 490 495
+f 498 499 495
+f 496 500 494
+f 498 493 501
+f 498 501 502
+f 503 504 505
+f 504 503 502
+f 501 504 502
+f 499 506 497
+f 497 495 499
+f 497 506 507
+f 506 499 508
+f 504 509 510
+f 511 510 509
+f 464 512 513
+f 513 465 464
+f 514 513 512
+f 470 515 516
+f 517 516 515
+f 468 470 516
+f 468 516 518
+f 518 516 517
+f 518 517 519
+f 520 521 522
+f 517 523 524
+f 523 525 520
+f 492 521 493
+f 515 470 465
+f 515 513 517
+f 523 517 513
+f 523 513 514
+f 523 514 525
+f 526 527 528
+f 526 528 529
+f 521 501 493
+f 327 530 531
+f 530 532 531
+f 531 52 328
+f 531 533 534
+f 534 52 531
+f 533 532 535
+f 535 188 533
+f 535 536 188
+f 534 533 187
+f 334 537 538
+f 334 538 539
+f 539 540 541
+f 535 542 536
+f 543 542 535
+f 543 535 544
+f 543 544 541
+f 541 545 543
+f 545 541 546
+f 547 542 543
+f 547 543 545
+f 548 547 545
+f 548 545 546
+f 536 549 550
+f 191 189 188
+f 551 552 191
+f 553 549 542
+f 547 553 542
+f 548 554 547
+f 555 537 556
+f 537 555 538
+f 540 539 538
+f 540 538 555
+f 546 541 540
+f 540 557 546
+f 557 558 546
+f 558 557 559
+f 548 546 558
+f 558 559 560
+f 558 561 548
+f 554 548 561
+f 558 560 561
+f 562 563 559
+f 560 559 563
+f 563 564 560
+f 553 565 551
+f 552 566 193
+f 567 565 553
+f 547 567 553
+f 554 567 547
+f 554 568 567
+f 569 570 565
+f 567 571 569
+f 569 565 567
+f 571 567 568
+f 572 197 573
+f 198 197 572
+f 570 574 572
+f 573 570 572
+f 572 574 575
+f 569 574 570
+f 574 569 576
+f 577 576 569
+f 569 571 577
+f 577 571 578
+f 576 579 574
+f 571 568 580
+f 581 582 580
+f 583 584 585
+f 571 580 578
+f 582 586 578
+f 587 586 588
+f 589 587 588
+f 590 583 591
+f 592 591 583
+f 593 592 594
+f 594 592 583
+f 595 592 593
+f 596 597 598
+f 597 599 598
+f 600 595 596
+f 596 601 600
+f 602 601 596
+f 603 604 591
+f 600 603 595
+f 603 600 604
+f 604 600 605
+f 591 604 606
+f 607 608 604
+f 609 601 602
+f 605 600 601
+f 610 605 601
+f 611 605 610
+f 612 613 614
+f 614 615 612
+f 613 616 614
+f 617 609 616
+f 617 618 610
+f 619 610 618
+f 618 620 619
+f 617 616 621
+f 622 621 623
+f 624 625 623
+f 622 623 625
+f 625 626 622
+f 618 617 622
+f 626 627 618
+f 555 556 628
+f 555 629 562
+f 555 630 629
+f 419 631 628
+f 628 631 632
+f 628 632 630
+f 629 630 632
+f 633 629 632
+f 634 633 632
+f 424 635 631
+f 632 631 635
+f 635 636 632
+f 634 632 636
+f 563 633 637
+f 638 633 634
+f 637 633 638
+f 639 640 564
+f 575 198 572
+f 579 641 575
+f 642 640 639
+f 643 581 640
+f 644 640 642
+f 643 640 644
+f 645 646 642
+f 647 585 644
+f 644 585 643
+f 584 582 643
+f 586 587 648
+f 649 650 651
+f 652 650 649
+f 653 636 635
+f 634 636 653
+f 654 655 656
+f 654 656 653
+f 655 657 658
+f 658 659 656
+f 649 651 660
+f 649 660 653
+f 649 653 656
+f 661 649 656
+f 661 656 659
+f 662 663 638
+f 664 665 638
+f 666 667 668
+f 668 667 669
+f 668 665 664
+f 666 668 664
+f 670 666 651
+f 671 667 666
+f 671 598 667
+f 672 671 670
+f 672 670 673
+f 672 598 671
+f 674 652 661
+f 674 661 675
+f 676 677 678
+f 659 658 679
+f 679 657 680
+f 680 681 679
+f 659 679 675
+f 675 679 681
+f 682 680 507
+f 682 677 681
+f 681 680 682
+f 678 682 507
+f 683 684 511
+f 683 511 509
+f 684 683 685
+f 686 687 684
+f 688 687 686
+f 689 685 683
+f 686 684 685
+f 685 689 686
+f 688 689 690
+f 691 692 693
+f 694 695 696
+f 689 683 697
+f 689 697 698
+f 526 699 700
+f 699 526 701
+f 702 700 698
+f 699 703 700
+f 704 698 705
+f 698 700 705
+f 700 703 705
+f 706 690 704
+f 707 708 709
+f 710 711 708
+f 712 713 714
+f 669 715 646
+f 715 647 646
+f 615 672 692
+f 602 615 614
+f 716 612 615
+f 612 716 717
+f 718 719 720
+f 718 720 721
+f 625 624 719
+f 722 723 627
+f 627 626 722
+f 724 725 726
+f 727 725 724
+f 725 722 718
+f 726 718 728
+f 729 730 731
+f 732 733 729
+f 729 731 732
+f 734 733 732
+f 735 709 736
+f 708 737 736
+f 736 737 738
+f 739 740 741
+f 740 742 743
+f 740 743 741
+f 744 745 724
+f 724 726 744
+f 731 724 745
+f 746 744 726
+f 747 748 749
+f 749 750 747
+f 749 748 751
+f 749 751 752
+f 752 750 749
+f 753 752 751
+f 753 751 754
+f 755 756 750
+f 750 752 755
+f 755 752 753
+f 757 758 755
+f 759 760 761
+f 762 763 764
+f 762 761 765
+f 766 763 762
+f 766 762 765
+f 767 768 769
+f 770 771 772
+f 771 770 773
+f 774 775 776
+f 774 776 777
+f 777 776 778
+f 779 780 781
+f 782 774 783
+f 784 782 783
+f 784 783 785
+f 777 778 781
+f 783 774 777
+f 780 785 777
+f 780 777 781
+f 783 777 785
+f 786 787 788
+f 789 790 788
+f 791 792 789
+f 788 790 793
+f 790 794 792
+f 793 790 795
+f 796 797 798
+f 799 800 791
+f 799 801 800
+f 801 799 802
+f 803 804 805
+f 803 805 806
+f 807 808 809
+f 810 811 812
+f 812 813 810
+f 809 808 813
+f 814 815 793
+f 814 793 795
+f 786 816 779
+f 786 788 793
+f 786 793 816
+f 780 779 816
+f 817 785 815
+f 815 814 817
+f 817 803 806
+f 785 780 815
+f 818 819 797
+f 795 819 814
+f 807 818 820
+f 801 802 821
+f 822 811 810
+f 822 810 823
+f 808 807 824
+f 824 807 825
+f 824 826 823
+f 823 827 828
+f 827 823 826
+f 820 829 825
+f 830 829 820
+f 820 796 830
+f 831 832 833
+f 831 834 835
+f 831 836 832
+f 837 838 839
+f 839 840 841
+f 842 843 844
+f 845 842 846
+f 845 846 847
+f 846 842 844
+f 848 837 849
+f 850 851 852
+f 853 844 854
+f 855 856 853
+f 857 858 859
+f 860 857 861
+f 857 860 858
+f 862 863 860
+f 864 863 865
+f 849 866 867
+f 849 868 869
+f 867 90 870
+f 869 871 872
+f 873 859 858
+f 874 873 875
+f 876 877 878
+f 879 876 878
+f 880 877 106
+f 878 877 881
+f 880 881 877
+f 882 875 865
+f 883 884 874
+f 883 875 882
+f 875 858 864
+f 875 883 874
+f 878 881 874
+f 885 879 886
+f 884 878 874
+f 878 886 879
+f 887 888 889
+f 890 889 888
+f 888 891 890
+f 890 891 892
+f 893 894 895
+f 896 865 895
+f 896 895 894
+f 896 894 897
+f 898 893 887
+f 897 894 898
+f 892 891 899
+f 900 901 902
+f 902 887 889
+f 902 889 900
+f 900 889 890
+f 900 890 903
+f 902 904 898
+f 905 897 898
+f 904 906 905
+f 907 908 909
+f 909 869 907
+f 910 907 869
+f 872 911 912
+f 913 914 908
+f 912 911 915
+f 916 917 918
+f 917 915 918
+f 911 919 920
+f 905 915 920
+f 920 897 905
+f 920 915 911
+f 921 922 923
+f 924 925 926
+f 927 928 856
+f 928 927 929
+f 929 927 930
+f 760 847 928
+f 922 931 930
+f 932 933 931
+f 927 856 850
+f 852 914 934
+f 935 936 937
+f 935 938 939
+f 940 930 941
+f 940 941 936
+f 940 936 923
+f 922 930 940
+f 940 923 922
+f 942 922 943
+f 944 945 942
+f 946 944 942
+f 942 943 946
+f 921 947 922
+f 947 921 948
+f 947 943 922
+f 943 947 949
+f 947 948 949
+f 950 926 951
+f 921 926 948
+f 948 950 952
+f 951 952 950
+f 952 951 953
+f 954 952 955
+f 956 949 952
+f 954 956 952
+f 957 958 932
+f 770 958 957
+f 770 957 959
+f 770 959 960
+f 931 957 932
+f 959 931 942
+f 922 942 931
+f 958 761 932
+f 960 959 942
+f 773 960 945
+f 942 945 960
+f 960 773 770
+f 958 770 772
+f 961 962 963
+f 964 904 965
+f 966 967 964
+f 968 966 963
+f 966 969 970
+f 971 962 972
+f 971 972 973
+f 974 973 972
+f 972 962 961
+f 972 961 974
+f 925 975 971
+f 975 962 971
+f 971 926 925
+f 976 903 977
+f 978 976 977
+f 913 979 934
+f 914 913 934
+f 913 916 979
+f 938 980 939
+f 981 979 969
+f 969 980 981
+f 970 979 918
+f 967 970 918
+f 918 979 916
+f 970 969 979
+f 982 983 984
+f 983 974 985
+f 984 985 986
+f 987 857 988
+f 989 857 987
+f 990 987 991
+f 861 857 992
+f 857 989 992
+f 992 993 892
+f 993 994 995
+f 994 989 996
+f 990 996 989
+f 997 996 990
+f 994 996 998
+f 997 999 998
+f 998 996 997
+f 859 2 988
+f 2 1000 987
+f 987 988 2
+f 2 859 880
+f 1 1000 2
+f 987 1000 1001
+f 1001 991 987
+f 1002 990 991
+f 991 1001 1002
+f 880 3 2
+f 990 1002 997
+f 1003 1002 1001
+f 1002 1003 1004
+f 9 1001 8
+f 1003 9 1005
+f 1005 9 1006
+f 1004 1003 1005
+f 1007 1004 1005
+f 1007 1005 1006
+f 1008 1007 1006
+f 1009 1002 1004
+f 1009 1004 1010
+f 997 1009 1011
+f 1010 1012 1009
+f 1013 1011 1012
+f 1012 1010 1013
+f 1010 1004 1007
+f 1010 1007 1014
+f 1015 1014 1007
+f 1007 1008 1015
+f 1014 1013 1010
+f 1016 1013 1014
+f 1016 1017 1018
+f 890 892 993
+f 890 993 1019
+f 890 1019 1020
+f 1020 1019 1021
+f 993 995 1019
+f 1021 1019 995
+f 995 998 1021
+f 1021 998 999
+f 1022 1021 999
+f 1023 1021 1022
+f 1024 1025 1011
+f 1024 1026 1025
+f 1027 1026 1024
+f 1028 1029 1030
+f 1031 1029 1028
+f 1028 1026 1031
+f 1031 1026 1027
+f 1032 1024 1013
+f 1016 1018 1033
+f 1034 1035 1027
+f 1018 1017 1036
+f 1037 1033 1018
+f 1018 1038 1037
+f 1037 1038 1039
+f 1018 1036 1038
+f 1038 1036 1040
+f 1037 1041 1033
+f 1042 1041 1037
+f 1035 1034 1043
+f 1034 1041 1043
+f 1044 1043 1045
+f 1043 1041 1042
+f 1043 1042 1045
+f 1045 1042 1046
+f 1042 1047 1046
+f 1048 1049 977
+f 977 1050 1048
+f 1051 1048 1052
+f 1052 1048 1053
+f 1052 1053 1054
+f 1055 1053 1044
+f 1056 1055 1044
+f 1057 1056 1045
+f 1058 1057 1046
+f 1059 1056 1057
+f 1060 1061 1055
+f 1062 1060 1063
+f 1064 1065 1066
+f 1066 1065 1067
+f 1067 1068 1066
+f 1068 1067 1069
+f 1070 1071 1060
+f 1072 1068 1070
+f 1073 1074 1075
+f 1076 1074 1070
+f 1070 1068 1076
+f 1077 1076 1068
+f 1075 1074 1076
+f 1078 1075 1076
+f 1076 1077 1079
+f 1076 1079 1078
+f 1078 1079 1080
+f 1081 1082 1083
+f 1084 946 1082
+f 1084 1082 1081
+f 1085 1081 1083
+f 787 786 1086
+f 1082 954 1083
+f 1083 954 955
+f 1083 955 1087
+f 1087 955 1088
+f 1089 1087 1090
+f 1089 1090 1091
+f 1092 1083 1087
+f 1092 1093 1094
+f 1093 1089 1095
+f 1089 1091 1095
+f 773 945 1096
+f 1097 1096 945
+f 1098 1099 1096
+f 1096 1097 1098
+f 1099 1098 1100
+f 778 1099 1101
+f 1102 1103 1104
+f 1105 1106 1103
+f 1103 1102 1105
+f 1102 1104 1085
+f 1102 1085 1107
+f 1108 1109 1104
+f 1106 791 789
+f 1105 1110 1111
+f 1105 1111 1106
+f 799 1106 1111
+f 1111 1110 1112
+f 1113 1095 1114
+f 1115 1116 1117
+f 1117 1118 1115
+f 1119 1115 1118
+f 1118 1114 1119
+f 1090 1088 1120
+f 1120 1121 1122
+f 1123 1122 1124
+f 1123 1124 1125
+f 1126 1125 1124
+f 1127 1119 1114
+f 1123 1114 1095
+f 1127 1114 1123
+f 1123 1125 1127
+f 1127 1125 1126
+f 1127 1126 1128
+f 1129 1130 1131
+f 1131 1112 1129
+f 1132 1129 1112
+f 1112 1116 1132
+f 1129 1133 1130
+f 1132 1134 1133
+f 1132 1133 1129
+f 1115 1119 1135
+f 1135 1134 1132
+f 1132 1116 1115
+f 1136 1137 1130
+f 1138 1136 1130
+f 1130 1133 1138
+f 1133 1134 1139
+f 1139 1134 1135
+f 1140 1136 1138
+f 1141 1140 1138
+f 1138 1139 1141
+f 1142 1141 1139
+f 1139 1143 1142
+f 1144 1142 1143
+f 1144 1143 1127
+f 1145 1146 1073
+f 1144 1145 1147
+f 1148 1147 1145
+f 1149 1150 1151
+f 1152 1153 1154
+f 1152 1155 1151
+f 1155 1156 1157
+f 1157 1151 1155
+f 1158 1155 1152
+f 1159 1160 1161
+f 1162 1163 1164
+f 1165 1166 1167
+f 1167 1166 1168
+f 1163 1162 1169
+f 1170 1171 1172
+f 1173 1174 1175
+f 1176 1170 1177
+f 1178 1176 1179
+f 1179 1180 1181
+f 1181 1180 1175
+f 1176 1180 1179
+f 1179 1181 1182
+f 1181 845 1182
+f 1178 1170 1176
+f 1178 1171 1170
+f 1183 1184 1185
+f 1185 1184 1186
+f 1184 1187 1168
+f 1168 1187 1188
+f 1188 1169 1168
+f 1172 1189 1185
+f 1190 1191 1189
+f 1191 1192 1193
+f 1193 1194 1191
+f 1194 1188 1187
+f 1191 1187 1183
+f 1187 1191 1194
+f 1186 1166 1165
+f 1186 1165 1160
+f 1184 1166 1186
+f 1160 1177 1186
+f 1186 1177 1170
+f 1195 1196 1197
+f 1198 1196 1199
+f 1200 1198 1199
+f 1164 1163 1201
+f 152 1164 1201
+f 1202 1203 1204
+f 1205 1206 1207
+f 1207 1198 1208
+f 1207 1208 1209
+f 1208 1210 1209
+f 1207 1209 1205
+f 1209 1211 1205
+f 1212 1209 1210
+f 1211 1209 1212
+f 1169 1188 1197
+f 1188 1194 1197
+f 1194 1195 1197
+f 1213 1214 1215
+f 1215 1216 1213
+f 1214 1199 1215
+f 1199 1214 1200
+f 1217 1193 1218
+f 1219 1216 1220
+f 1219 1221 1216
+f 1216 1222 1213
+f 1216 1221 1222
+f 1213 1223 1214
+f 1224 1214 1223
+f 1225 1200 1214
+f 1210 1200 1225
+f 1226 1225 1214
+f 1225 1227 1228
+f 1227 1225 1226
+f 1229 1224 1230
+f 1227 1226 1224
+f 1227 1224 1229
+f 1210 1228 1212
+f 1192 1231 1218
+f 1192 1232 1231
+f 1233 1234 1235
+f 1236 1232 1237
+f 1238 1239 1236
+f 1238 1237 1240
+f 1241 1242 1243
+f 1244 1245 1241
+f 1244 1241 1246
+f 1242 1178 1179
+f 764 1241 1243
+f 1247 764 763
+f 1190 1189 1245
+f 1248 1190 1245
+f 1218 1193 1192
+f 1190 1248 1192
+f 1249 1250 766
+f 1249 766 768
+f 1249 1251 1252
+f 1252 1250 1249
+f 1253 1246 1251
+f 1246 1252 1251
+f 1254 1246 1253
+f 1252 1246 1255
+f 1249 1256 1251
+f 1257 1256 1249
+f 1249 768 1258
+f 1257 1259 1235
+f 1235 1256 1257
+f 1247 763 766
+f 1258 768 767
+f 1260 1258 767
+f 1244 1254 1245
+f 1261 1262 1263
+f 1264 1262 1265
+f 1266 1267 1268
+f 1269 1270 1265
+f 1267 1271 1272
+f 1273 1274 1271
+f 1271 1274 1275
+f 1271 1275 1272
+f 1272 1276 1268
+f 1277 1269 1268
+f 1277 1268 1276
+f 1278 1272 1275
+f 1279 1276 1278
+f 1280 1281 1282
+f 1283 1284 1281
+f 1284 1283 1285
+f 1286 1285 1283
+f 1281 1280 1283
+f 1287 1288 1289
+f 1288 1290 1291
+f 1292 1288 1277
+f 1292 1277 1279
+f 1290 1288 1292
+f 1292 1293 1290
+f 1294 1291 1290
+f 1290 1293 1294
+f 1295 1296 1297
+f 1236 1298 1299
+f 1239 1300 1298
+f 1301 1297 1298
+f 1299 1298 1297
+f 1302 1300 1239
+f 1303 1301 1300
+f 1301 1295 1297
+f 1232 1236 1231
+f 1304 1299 1231
+f 1261 1297 1296
+f 1261 1296 1262
+f 1239 1298 1236
+f 1153 1305 1296
+f 1296 1305 1267
+f 1153 1296 1295
+f 1266 1262 1296
+f 1305 1271 1267
+f 1273 1271 1150
+f 1305 1151 1150
+f 1151 1305 1153
+f 1306 1307 1154
+f 1154 1308 1306
+f 1285 1286 1230
+f 1229 1230 1286
+f 1309 1310 1311
+f 1310 1312 1313
+f 1312 1310 1309
+f 1314 1309 1311
+f 1314 1311 1315
+f 1316 1309 1314
+f 1317 1318 1313
+f 1317 1313 1312
+f 1317 1312 1316
+f 1273 1319 1320
+f 1320 1321 1273
+f 1322 1323 1320
+f 1324 1325 1326
+f 1327 1324 1323
+f 1328 1325 1324
+f 1328 1324 1327
+f 1329 1328 1327
+f 1329 1330 1328
+f 1331 1324 1326
+f 1332 1331 1326
+f 1320 1323 1324
+f 1324 1331 1320
+f 1333 1334 1335
+f 1336 1337 1338
+f 1339 1338 1334
+f 1334 1340 1339
+f 1341 1335 1334
+f 1341 1334 1338
+f 1339 1342 1336
+f 1336 1338 1339
+f 1330 1343 1325
+f 1333 1332 1326
+f 1344 1345 1332
+f 1344 1332 1333
+f 1335 1344 1333
+f 1346 1347 1348
+f 1342 1347 1346
+f 1349 1322 1350
+f 1349 1351 1323
+f 1349 1323 1322
+f 1352 1349 1350
+f 1352 1350 1157
+f 1353 1351 1349
+f 1149 1350 1322
+f 1350 1149 1157
+f 1354 1327 1323
+f 1354 1323 1351
+f 1329 1327 1354
+f 1355 1354 1351
+f 1356 1354 1355
+f 1357 1358 1156
+f 1359 1357 1156
+f 1360 1355 1353
+f 1361 1362 1355
+f 1361 1355 1360
+f 1360 1353 1363
+f 1363 1364 1360
+f 1364 1365 1361
+f 1361 1360 1364
+f 1362 1366 1367
+f 1366 1368 1367
+f 1366 1369 1368
+f 1369 1370 1371
+f 1371 1368 1369
+f 1371 1372 1373
+f 1374 1366 1361
+f 1369 1366 1374
+f 1375 1361 1365
+f 1376 1337 1336
+f 1337 1314 1315
+f 1315 1377 1337
+f 1378 1376 1379
+f 1380 1316 1378
+f 1381 1380 1378
+f 1381 1378 1379
+f 1382 1379 1342
+f 1382 1342 1373
+f 1382 1383 1379
+f 1384 1381 1379
+f 1384 1379 1383
+f 1385 1386 1387
+f 1388 1389 1385
+f 1390 1391 1387
+f 1387 1370 1390
+f 1391 1392 1388
+f 1388 1387 1391
+f 1390 1393 1391
+f 1394 1391 1393
+f 1205 372 1395
+f 1396 372 1205
+f 13 372 1396
+f 1397 1398 1396
+f 1399 1400 1396
+f 1397 1396 1400
+f 1401 1402 1397
+f 13 1398 14
+f 1403 381 14
+f 1404 1403 1405
+f 1406 1397 1402
+f 1407 1397 1406
+f 1408 1409 1410
+f 1408 1406 1411
+f 1410 1412 1404
+f 1412 1410 1409
+f 1409 1413 1412
+f 1414 1228 1227
+f 1415 1416 1414
+f 1414 1227 1417
+f 1418 1419 1420
+f 1421 1422 1419
+f 1421 1419 1418
+f 1421 1423 1402
+f 1402 1422 1421
+f 1414 1416 1418
+f 1421 1416 1424
+f 1425 1402 1423
+f 1426 1409 1411
+f 1425 1426 1411
+f 1426 1427 1413
+f 1413 1409 1426
+f 1428 1429 1430
+f 1430 1425 1423
+f 1431 1430 1429
+f 1426 1430 1431
+f 1426 1431 1427
+f 1432 1433 1434
+f 1434 1433 1435
+f 1436 1433 1432
+f 1437 1435 1433
+f 1433 1438 1437
+f 1437 1439 1435
+f 1435 1439 1440
+f 1441 1442 1443
+f 1444 1441 1445
+f 1445 1446 1444
+f 1445 1447 1446
+f 1448 1446 1447
+f 1449 1450 1451
+f 1452 1439 1453
+f 1452 1440 1439
+f 1454 1440 1452
+f 1455 1451 1450
+f 1456 1457 1458
+f 1459 1458 1457
+f 1460 1459 1461
+f 1459 1457 1462
+f 1461 1459 1462
+f 1463 1462 1464
+f 1465 1466 1454
+f 1454 1460 1465
+f 1465 1460 1461
+f 1463 1461 1462
+f 1463 1467 1461
+f 1468 1467 1463
+f 1469 1310 1470
+f 1470 1471 1469
+f 1471 1472 1469
+f 1469 1472 1473
+f 1472 1474 1432
+f 1432 1434 1472
+f 1474 1472 1471
+f 1475 1472 1434
+f 1434 1435 1475
+f 1474 1436 1432
+f 1474 1471 1470
+f 1473 1472 1475
+f 1476 1440 1466
+f 1473 1475 1476
+f 1311 1310 1477
+f 1469 1477 1310
+f 1477 1469 1473
+f 1477 1473 1478
+f 1479 1478 1480
+f 1480 1478 1481
+f 1482 1318 1317
+f 1483 1482 1317
+f 1483 1317 1484
+f 1485 1478 1473
+f 1473 1476 1485
+f 1485 1481 1478
+f 1486 1481 1485
+f 1486 1487 1488
+f 1489 1488 1487
+f 1490 1489 1491
+f 1492 1493 1494
+f 1494 1493 1450
+f 1493 1495 1450
+f 1492 1496 1493
+f 1493 1497 1495
+f 1498 1495 1497
+f 1499 1497 1500
+f 1501 1482 1483
+f 1502 1503 1501
+f 1492 1502 1496
+f 1504 1487 1466
+f 1491 1504 1505
+f 1505 1506 1491
+f 1507 1506 1467
+f 1467 1468 1507
+f 1508 1509 1510
+f 1510 1511 1508
+f 1512 1510 1509
+f 1464 1513 1463
+f 1514 1463 1513
+f 1515 16 18
+f 1514 1515 1516
+f 1517 1518 1519
+f 1463 1514 1520
+f 1514 1516 1521
+f 1521 1522 1523
+f 1520 1521 1518
+f 1523 1519 1518
+f 1521 1523 1518
+f 1524 20 1525
+f 1524 1515 18
+f 1516 1515 1524
+f 20 1524 18
+f 1526 1525 1527
+f 1528 1529 1530
+f 1530 22 1528
+f 1527 1525 1531
+f 1532 1527 1531
+f 1532 1531 1529
+f 1519 1527 1533
+f 1534 1517 1519
+f 1534 1519 1533
+f 1535 1533 1527
+f 1527 1532 1535
+f 1535 1532 1536
+f 1535 1537 1534
+f 1526 1527 1519
+f 1538 1536 1539
+f 1538 1539 1540
+f 1540 1541 1542
+f 1543 1544 1490
+f 1544 1545 1546
+f 1547 1548 1549
+f 1548 1546 1550
+f 1550 1546 1551
+f 1544 1546 1548
+f 1549 1548 1550
+f 1550 1551 1552
+f 1550 1552 1549
+f 1551 1546 1553
+f 1553 1546 1554
+f 1546 1545 1554
+f 1553 1554 1555
+f 1556 1557 1558
+f 1559 1552 1560
+f 1560 1431 1559
+f 1561 1427 1431
+f 1431 1560 1561
+f 1560 1562 1561
+f 1560 1551 1553
+f 1560 1553 1563
+f 1558 1562 1556
+f 1556 1562 1560
+f 1560 1563 1556
+f 1507 1564 1518
+f 1565 1566 1544
+f 1566 1517 1545
+f 1517 1566 1518
+f 1545 1544 1566
+f 1517 1534 1567
+f 1517 1567 1554
+f 1567 1555 1554
+f 1567 1534 1555
+f 1537 1557 1555
+f 1568 1537 1569
+f 1568 1569 1570
+f 1540 1542 1571
+f 1572 1573 1574
+f 1558 1572 1574
+f 1575 1576 1577
+f 1578 1577 1579
+f 1580 1577 1578
+f 1581 1574 1573
+f 1581 1573 1582
+f 1583 1581 1582
+f 1582 1576 1575
+f 1575 1580 1583
+f 1278 1275 1584
+f 1585 1586 1587
+f 1585 1587 1332
+f 1588 1585 1345
+f 1589 1590 1585
+f 1585 1588 1589
+f 1292 1591 1592
+f 1592 1293 1292
+f 1279 1591 1292
+f 1293 1592 1593
+f 1293 1593 1294
+f 1594 1592 1591
+f 1595 1596 1593
+f 1341 1597 1598
+f 1599 1600 1597
+f 1601 1344 1598
+f 1344 1601 1345
+f 1602 1589 1588
+f 1602 1588 1345
+f 1603 1604 1605
+f 1606 1596 1595
+f 1604 1607 1608
+f 1607 1604 1599
+f 1609 1606 1608
+f 1589 1610 1611
+f 1591 1611 1610
+f 1594 1591 1610
+f 1610 1612 1594
+f 1613 1610 1589
+f 1608 1595 1612
+f 1612 1613 1608
+f 1614 1615 1616
+f 1429 1616 1615
+f 1479 1377 1315
+f 1597 1479 1617
+f 1480 1617 1479
+f 1618 1617 1480
+f 1617 1618 1619
+f 1618 1620 1619
+f 1380 1621 1483
+f 1622 1623 1624
+f 1625 1623 1620
+f 1488 1625 1620
+f 1620 1486 1488
+f 1625 1488 1626
+f 1627 1626 1547
+f 1627 1547 1628
+f 1627 1624 1623
+f 1619 1622 1607
+f 1624 1628 1609
+f 1609 1607 1624
+f 1621 1501 1483
+f 1621 1629 1501
+f 1621 1630 1629
+f 1631 1502 1629
+f 1631 1632 1508
+f 1633 1634 1630
+f 1635 1630 1634
+f 1636 1637 1634
+f 1638 1509 1508
+f 1508 1632 1638
+f 1639 1640 1512
+f 1641 1642 1638
+f 1638 1635 1637
+f 1641 1643 1644
+f 1644 1642 1641
+f 1645 1646 1389
+f 1647 1648 1649
+f 1392 1650 1651
+f 1649 1652 1647
+f 1653 1654 1647
+f 1653 1647 1652
+f 1636 1654 1637
+f 1655 1643 1641
+f 1654 1655 1641
+f 1641 1637 1654
+f 1655 1654 1653
+f 1656 1657 1658
+f 1614 1658 1657
+f 1549 1552 1615
+f 1547 1549 1657
+f 1656 1658 1659
+f 1656 1659 1609
+f 1614 1659 1658
+f 1660 1661 1662
+f 1662 1640 1639
+f 1663 1664 1661
+f 1661 1660 1663
+f 1665 1644 1666
+f 1667 1660 1665
+f 1667 1664 1663
+f 1667 1665 1668
+f 1581 1669 1670
+f 1581 1583 1671
+f 1655 1672 1666
+f 1673 1674 1675
+f 1676 1655 1653
+f 1677 1678 1672
+f 1677 1672 1676
+f 1679 1680 1681
+f 1681 1158 1679
+f 1682 1680 1679
+f 1679 1683 1682
+f 1682 1684 1680
+f 1685 1686 1687
+f 1686 1685 1688
+f 1689 1690 1691
+f 1692 1691 1693
+f 1689 1691 1694
+f 1694 1691 1695
+f 1694 1695 1696
+f 1697 1694 1696
+f 1685 1689 1694
+f 1688 1694 1697
+f 1698 1699 1700
+f 1699 1701 1702
+f 1701 1699 1698
+f 1698 1700 1703
+f 1704 1705 1698
+f 1698 1703 1704
+f 1706 1707 1708
+f 1709 1707 1706
+f 1710 1706 1708
+f 1711 1706 1710
+f 1712 1697 1696
+f 1707 1697 1712
+f 1713 1714 1702
+f 1714 1708 1712
+f 1712 1702 1714
+f 1715 1708 1714
+f 1716 1717 1718
+f 1259 1257 1717
+f 1717 1257 1718
+f 782 1719 1716
+f 1720 1717 1716
+f 1720 1716 1719
+f 1721 1722 1719
+f 1723 1720 1719
+f 1723 1719 1722
+f 1724 1717 1720
+f 1725 1724 1720
+f 1725 1720 1723
+f 1718 1260 774
+f 1726 1727 1728
+f 1728 1729 1726
+f 1723 1722 1729
+f 806 805 1730
+f 1699 1723 1728
+f 1728 1700 1699
+f 1700 1728 1727
+f 812 1731 1726
+f 805 813 1726
+f 1732 1303 1300
+f 1732 1300 1687
+f 1733 1732 1687
+f 1733 1734 1732
+f 1733 1687 1686
+f 1735 1686 1736
+f 1737 1734 1735
+f 1738 1737 1735
+f 1734 1733 1735
+f 1739 1306 1740
+f 1679 1307 1739
+f 1741 1742 1739
+f 1739 1740 1741
+f 1679 1739 1742
+f 1743 1683 1742
+f 1742 1741 1737
+f 1743 1737 1738
+f 1744 1684 1682
+f 1682 1683 1743
+f 1745 1746 1747
+f 1745 1747 1748
+f 1749 1750 1738
+f 1745 1751 1750
+f 1750 1746 1745
+f 1752 1748 1709
+f 1752 1709 1711
+f 1753 1745 1748
+f 1743 1738 1750
+f 1754 1755 1705
+f 1705 1704 1754
+f 1756 1713 1705
+f 1754 1757 1755
+f 1757 1754 1758
+f 1759 1760 1757
+f 1761 1759 1757
+f 1757 1758 1761
+f 1710 1715 1762
+f 1710 1762 1763
+f 1764 1756 1760
+f 1764 1765 1766
+f 1766 1767 1764
+f 1766 1762 1715
+f 1762 1766 1765
+f 1764 1760 1768
+f 1768 1765 1764
+f 1759 1769 1768
+f 1770 1762 1765
+f 1771 1772 811
+f 822 1771 811
+f 1772 1754 1704
+f 1704 811 1772
+f 1772 1771 1773
+f 828 1773 1771
+f 1773 828 827
+f 1774 1775 1776
+f 1777 1775 1778
+f 1777 1778 1779
+f 1780 1779 1778
+f 1778 1781 1780
+f 1782 1783 1784
+f 1762 1784 1763
+f 1785 1786 1787
+f 1785 1787 1788
+f 1789 1790 1786
+f 1789 1786 1785
+f 1791 1785 1788
+f 1785 1792 1789
+f 1792 1785 1791
+f 1793 1794 1791
+f 1795 1796 1792
+f 1795 1792 1791
+f 1791 1794 1795
+f 1794 1793 1797
+f 1796 1795 1798
+f 1799 1797 1793
+f 1793 1791 1800
+f 1793 1800 1799
+f 1801 1680 1684
+f 1802 1803 1375
+f 1804 1393 1805
+f 1805 1806 1803
+f 1807 1808 1809
+f 1808 1810 1811
+f 1744 1812 1813
+f 1813 1684 1744
+f 1814 1813 1812
+f 1815 1816 1814
+f 1815 1814 1817
+f 1818 1819 1820
+f 1820 1821 1822
+f 1821 1816 1822
+f 1823 1817 1812
+f 1823 1812 1824
+f 1824 1825 1826
+f 1826 1825 1790
+f 1827 1828 1829
+f 1830 1815 1829
+f 1827 1831 1828
+f 1832 1833 1827
+f 1831 1827 1833
+f 1811 1828 1831
+f 1834 1835 1836
+f 1834 1836 1811
+f 1811 1810 1834
+f 1650 1837 1838
+f 1804 1837 1650
+f 1837 1839 1840
+f 1840 1838 1837
+f 1838 1840 1652
+f 1819 1841 1837
+f 1842 1839 1837
+f 1842 1837 1841
+f 1843 1653 1652
+f 1843 1652 1840
+f 1844 1653 1843
+f 1845 1844 1843
+f 1846 1847 1835
+f 1848 1847 1846
+f 1849 1848 1846
+f 1848 1850 1851
+f 1852 1851 1842
+f 1842 1841 1852
+f 1850 1848 1849
+f 1853 1846 1835
+f 1853 1835 1834
+f 1849 1846 1854
+f 1810 1855 1853
+f 1856 1853 1855
+f 1857 1858 1859
+f 1860 1861 1862
+f 1862 1863 1851
+f 1862 1851 1860
+f 1861 1864 1865
+f 1865 1862 1861
+f 1857 1866 1861
+f 1861 1860 1857
+f 1845 1862 1865
+f 1867 1868 1864
+f 1869 1870 1871
+f 1872 1871 1873
+f 1844 1874 1875
+f 1876 1877 1878
+f 1876 1878 1879
+f 1880 1876 1879
+f 1880 1879 1881
+f 1882 1883 1884
+f 1884 1874 1844
+f 1844 1845 1882
+f 1885 1874 1884
+f 1886 1885 1884
+f 1886 1884 1883
+f 1886 1887 1888
+f 1888 1885 1886
+f 1889 1882 1845
+f 1889 1845 1865
+f 1889 1890 1883
+f 1883 1882 1889
+f 1889 1865 1864
+f 1890 1889 1891
+f 1886 1892 1887
+f 1887 1892 1893
+f 1891 1864 1868
+f 1894 1895 1826
+f 1894 1826 1789
+f 1789 1826 1790
+f 1894 1896 1897
+f 1897 1832 1895
+f 1897 1895 1894
+f 1789 1898 1894
+f 1898 1789 1792
+f 1899 1894 1898
+f 1833 1832 1897
+f 1896 1900 1833
+f 1833 1897 1896
+f 1900 1896 1899
+f 1807 1900 1901
+f 1902 1903 1904
+f 1904 1807 1901
+f 1796 1905 1898
+f 1906 1907 1908
+f 1907 1906 1909
+f 1910 1908 1907
+f 1911 1912 1913
+f 1913 1905 1911
+f 1912 1911 1910
+f 1901 1899 1913
+f 1914 1901 1915
+f 1916 1917 1914
+f 1915 1918 1914
+f 1919 1916 1914
+f 1919 1918 1920
+f 1855 1810 1808
+f 1921 1808 1903
+f 1922 1856 1923
+f 1924 1925 1859
+f 1859 1922 1924
+f 1926 1927 1925
+f 1927 1926 1928
+f 1929 1930 1857
+f 1931 1932 1933
+f 1933 1927 1928
+f 1928 1934 1931
+f 1929 1935 1930
+f 1936 1866 1857
+f 1936 1857 1930
+f 1936 1930 1935
+f 1933 1937 1938
+f 1933 1938 1939
+f 1940 1935 1929
+f 1941 1942 1943
+f 1942 1944 1945
+f 1946 1947 1943
+f 1946 1943 1948
+f 1949 1946 1948
+f 1948 1943 1945
+f 1950 1868 1951
+f 1950 1952 1873
+f 1873 1868 1950
+f 1953 1954 1955
+f 1956 1951 1954
+f 1957 1958 1959
+f 1959 1960 1957
+f 1961 1962 1963
+f 1964 1963 1965
+f 1963 1966 1961
+f 1967 1963 1962
+f 1965 1959 1958
+f 1968 1969 1932
+f 1932 1931 1968
+f 1970 1968 1971
+f 1919 1972 1971
+f 1971 1916 1919
+f 1973 1941 1932
+f 1973 1932 1969
+f 1973 1974 1941
+f 1975 1973 1969
+f 1975 1969 1970
+f 1975 1974 1973
+f 1942 1941 1974
+f 1976 1977 1974
+f 1949 1948 1978
+f 1978 1979 1949
+f 1980 1978 1948
+f 1975 1970 1981
+f 1982 1977 1976
+f 1983 1982 1976
+f 1953 1955 1984
+f 1984 1985 1979
+f 1953 1986 1957
+f 1978 1987 1988
+f 1988 1987 1964
+f 1988 1964 1965
+f 1989 1990 1988
+f 1991 1992 1993
+f 1174 1994 1995
+f 1159 1994 1174
+f 1996 1994 1997
+f 1996 1995 1994
+f 1997 1161 1998
+f 1994 1159 1161
+f 1997 1994 1161
+f 1999 1997 1991
+f 2000 1999 1991
+f 1997 1992 1991
+f 88 87 2001
+f 2002 2001 866
+f 2002 866 841
+f 2002 2003 97
+f 2004 2005 70
+f 2004 70 97
+f 2006 1999 2000
+f 2000 2003 2002
+f 2002 2006 2000
+f 839 1996 2006
+f 2006 840 839
+f 840 2006 2002
+f 2006 1996 1999
+f 2004 2000 2005
+f 2003 2000 2004
+f 2007 1992 1998
+f 2008 2009 2007
+f 2008 2007 1998
+f 2010 2007 2009
+f 60 2010 58
+f 2010 60 66
+f 1993 1992 2010
+f 1993 2010 66
+f 58 55 60
+f 64 63 66
+f 1175 1174 1995
+f 842 1175 1995
+f 2011 91 867
+f 91 90 867
+f 876 90 104
+f 104 106 877
+f 2012 1006 2013
+f 2014 1008 2012
+f 2012 216 2014
+f 2015 1008 2014
+f 1014 2016 2017
+f 2018 216 215
+f 2018 215 232
+f 216 2018 2014
+f 2019 2015 2014
+f 1017 2020 1036
+f 2017 2021 2020
+f 2022 2020 2021
+f 2021 2015 2019
+f 2021 2023 2022
+f 2024 2023 2025
+f 2026 2027 2023
+f 2023 2024 2026
+f 233 2028 232
+f 2029 233 237
+f 2030 2031 2029
+f 2032 2029 2031
+f 2031 2033 2032
+f 2030 2034 2033
+f 238 2035 2034
+f 2034 2030 238
+f 2024 2036 2037
+f 2036 2032 2037
+f 2024 2037 2026
+f 2032 2033 2038
+f 2039 2034 2035
+f 2040 2038 2033
+f 2033 2034 2040
+f 2039 2040 2034
+f 2040 2039 2041
+f 2037 2038 2042
+f 2038 2040 2042
+f 2043 2041 2044
+f 2045 2042 2043
+f 2045 2043 2044
+f 2044 2046 2047
+f 1036 2048 1040
+f 1040 2048 2049
+f 2050 2049 2048
+f 2048 2022 2050
+f 2049 1047 1040
+f 2050 2022 2027
+f 2027 2026 2051
+f 2051 2026 2052
+f 2050 2051 2053
+f 2054 1046 1047
+f 2054 2050 2055
+f 2056 2057 2058
+f 2055 2056 2059
+f 2060 2059 2056
+f 2061 2062 2045
+f 2061 2058 2062
+f 2045 2063 2061
+f 2045 2047 2063
+f 2060 2058 2064
+f 2065 310 2066
+f 2067 2066 317
+f 2068 2066 2067
+f 2065 2044 2041
+f 2044 2065 2069
+f 2069 2068 2070
+f 1058 2071 1065
+f 2072 2071 2073
+f 2072 1065 2071
+f 1065 2072 2074
+f 2073 2059 2072
+f 2075 2072 2059
+f 2059 2060 2075
+f 2074 2076 2077
+f 2060 2078 2079
+f 2079 2078 2080
+f 2079 2081 2075
+f 2082 2081 2079
+f 2083 1077 1069
+f 2084 2083 2085
+f 2086 2087 2088
+f 2089 1080 2084
+f 2084 2085 2090
+f 2091 440 1403
+f 440 2092 441
+f 2093 2091 1404
+f 2093 1404 1412
+f 2093 2094 2095
+f 2095 2092 2093
+f 2095 2096 446
+f 446 442 2095
+f 2096 450 446
+f 2097 451 450
+f 2097 450 2096
+f 2098 1412 2099
+f 2100 2094 2098
+f 2101 460 462
+f 2102 2103 1529
+f 2102 1529 1528
+f 2102 1528 2104
+f 2102 2104 2105
+f 2099 1427 1561
+f 2098 2106 2107
+f 2108 2106 2109
+f 2110 2111 2107
+f 2110 2107 2106
+f 2110 2106 2108
+f 2109 1558 2112
+f 2113 2111 2110
+f 2114 2115 2116
+f 2116 2117 2118
+f 1538 1570 1569
+f 2112 1558 1574
+f 2119 2118 2117
+f 2118 2119 2120
+f 2121 2120 2119
+f 2122 2123 2124
+f 2125 2121 2126
+f 2127 2128 2129
+f 2128 2130 2129
+f 2131 2132 514
+f 2131 2133 2132
+f 2134 2135 514
+f 514 2132 2134
+f 2135 2134 2136
+f 2137 701 2135
+f 2138 2135 2136
+f 2139 2137 2138
+f 2140 2134 2132
+f 2140 2132 2133
+f 2141 2136 2134
+f 2141 2134 2140
+f 2142 2136 2141
+f 2133 2143 2140
+f 2140 2143 2141
+f 2144 2141 2143
+f 2145 2136 2142
+f 2142 2144 2146
+f 2136 2145 2138
+f 2147 2148 2149
+f 2146 2144 2150
+f 2151 2152 2129
+f 2151 2129 2153
+f 2154 2155 2156
+f 2155 2154 2157
+f 2158 2156 2159
+f 2160 2161 2157
+f 2160 2157 2154
+f 2162 2163 2164
+f 2120 2159 2165
+f 2125 2166 2120
+f 2167 2168 2166
+f 2167 2125 2126
+f 2169 2170 2171
+f 2171 2144 2143
+f 2171 2143 2169
+f 2161 2160 2169
+f 2171 2150 2144
+f 2171 2164 2172
+f 2172 2150 2171
+f 2171 2170 2164
+f 2173 2174 2175
+f 2175 2176 2173
+f 2112 1670 2177
+f 2177 2178 2179
+f 2112 2177 2179
+f 2179 2174 2112
+f 2179 2180 2175
+f 2175 2174 2179
+f 2180 2181 2176
+f 2176 2175 2180
+f 2178 2182 2180
+f 2180 2179 2178
+f 2182 2183 2181
+f 2181 2180 2182
+f 2184 2177 2185
+f 2186 2185 1669
+f 2186 2187 2184
+f 2187 2124 2183
+f 2183 2188 2189
+f 2189 2181 2183
+f 701 2137 699
+f 2190 2137 2139
+f 705 2191 2192
+f 2192 2193 2194
+f 2139 2195 2196
+f 2197 2195 2149
+f 705 2198 2199
+f 2199 2198 713
+f 733 2200 2201
+f 756 2202 2203
+f 2204 2205 1080
+f 1080 2089 2204
+f 2206 1148 2205
+f 2205 2204 2206
+f 2207 1456 2208
+f 2209 1456 2207
+f 2210 17 16
+f 2211 2210 2212
+f 2213 2210 2211
+f 2214 2215 2216
+f 2217 2218 2219
+f 505 510 2219
+f 2217 2219 510
+f 507 511 2220
+f 2217 511 507
+f 507 506 2218
+f 507 2218 2217
+f 2221 2222 2223
+f 2224 2225 2226
+f 2227 2226 2228
+f 2229 2228 2226
+f 2230 2231 2232
+f 2233 2231 2230
+f 2234 687 676
+f 676 678 2234
+f 687 2234 2235
+f 2236 696 676
+f 2236 676 687
+f 684 2235 2220
+f 2237 694 2238
+f 2239 2237 2238
+f 2239 2240 2241
+f 2241 2237 2239
+f 2242 2243 2239
+f 2239 2238 2242
+f 2244 2245 2246
+f 2240 2246 2241
+f 2240 2243 2247
+f 2246 2240 2247
+f 2247 2248 2246
+f 2242 688 2249
+f 2242 2249 2243
+f 2247 2243 2249
+f 2250 714 2251
+f 2252 2250 2251
+f 2253 2252 2254
+f 2255 2256 2257
+f 2256 2255 2258
+f 2259 2256 2258
+f 2257 2260 2261
+f 2260 2257 2256
+f 2254 2260 2262
+f 2263 2264 2230
+f 2230 2232 2263
+f 2248 2263 2246
+f 2263 2265 2264
+f 2233 2230 2264
+f 720 719 624
+f 624 2233 720
+f 2264 2265 720
+f 711 2266 737
+f 2266 738 737
+f 740 738 2266
+f 740 2266 2267
+f 2267 742 740
+f 2267 2268 2269
+f 2268 2253 2254
+f 2254 2269 2268
+f 2270 2271 2272
+f 2273 754 742
+f 742 2267 2273
+f 2274 753 754
+f 754 2273 2274
+f 2269 2270 2273
+f 2274 2273 2270
+f 2274 755 753
+f 2275 757 2272
+f 2270 2269 2276
+f 2271 2270 2276
+f 2277 2278 2276
+f 2278 2271 2276
+f 2279 2280 2281
+f 2279 2281 2282
+f 2277 2276 2262
+f 2277 2262 2282
+f 2283 2271 2278
+f 2222 2255 2223
+f 2258 2222 2284
+f 2285 2259 2258
+f 2284 2285 2258
+f 2284 2280 2285
+f 2286 2287 2280
+f 2287 2288 2280
+f 2259 2285 2280
+f 2280 2279 2259
+f 2229 2289 2286
+f 2290 2289 2226
+f 2290 2226 2225
+f 2291 2289 2290
+f 2226 2289 2229
+f 2290 2292 2291
+f 2293 2294 2292
+f 2295 2296 2297
+f 2298 2299 2296
+f 2296 2295 2300
+f 2288 2287 2301
+f 2302 2288 2301
+f 2303 2302 2299
+f 2302 2303 2304
+f 2303 2305 2278
+f 2303 2278 2304
+f 2299 2306 2303
+f 2306 2305 2303
+f 2294 2293 2301
+f 2299 2301 2293
+f 2307 2308 2309
+f 2310 2311 2312
+f 2313 2310 2314
+f 2315 2308 2307
+f 2310 2312 2314
+f 2316 2317 2318
+f 2319 2320 2321
+f 2320 2322 2323
+f 2320 2324 2224
+f 2308 2325 2323
+f 2325 2321 2323
+f 2320 2323 2321
+f 2320 2319 2324
+f 2225 2224 2324
+f 2325 2315 2313
+f 2326 2325 2313
+f 2326 2317 2321
+f 2327 2319 2317
+f 2327 2324 2319
+f 2328 2329 2330
+f 2329 2312 2331
+f 2332 2333 2312
+f 2329 2334 2332
+f 2335 2334 2336
+f 2329 2337 2338
+f 2329 2338 2334
+f 2339 2216 2340
+f 2334 2339 2340
+f 2339 2337 2214
+f 2339 2338 2337
+f 2341 2342 2326
+f 2342 2317 2326
+f 2341 2343 2344
+f 2345 2346 2347
+f 2317 2346 2318
+f 2346 2348 2347
+f 2349 2350 2351
+f 2352 2351 2350
+f 2347 2351 2352
+f 2353 2354 2345
+f 2355 2353 2352
+f 2351 2347 2348
+f 2326 2313 2341
+f 2356 2357 2358
+f 2358 2359 2360
+f 2359 2358 2361
+f 2362 2360 2359
+f 2363 2364 2365
+f 2365 2366 2363
+f 2367 2368 2369
+f 2365 2369 2368
+f 2370 2371 2366
+f 2366 2365 2370
+f 2356 2372 2363
+f 2373 2363 2366
+f 2374 2375 2376
+f 2361 2358 2357
+f 2362 2359 2374
+f 2373 2375 2361
+f 2374 2361 2375
+f 2377 2378 2379
+f 2380 2366 2371
+f 2373 2366 2379
+f 2379 2380 2377
+f 2379 2376 2375
+f 2381 2378 2377
+f 2382 2378 2381
+f 2376 2379 2378
+f 2378 2383 2376
+f 2378 2382 2383
+f 2375 2373 2379
+f 2377 2384 2381
+f 2385 2386 2292
+f 2387 2385 2388
+f 2386 2385 2389
+f 2385 2387 2389
+f 2390 2391 2387
+f 2392 2388 2316
+f 2393 2387 2394
+f 2290 2395 2396
+f 2316 2396 2395
+f 2397 2295 2386
+f 2389 2393 2386
+f 2398 2399 2300
+f 2356 2400 2372
+f 2401 2402 2360
+f 2360 2402 2358
+f 2403 2390 2404
+f 2405 2390 2406
+f 2318 2407 2392
+f 2390 2392 2404
+f 2405 2364 2391
+f 2405 2391 2390
+f 2391 2364 2372
+f 2345 2354 2403
+f 2408 2369 2406
+f 2409 2410 2353
+f 2216 2411 2412
+f 2413 2412 2411
+f 2411 2216 2215
+f 2414 2415 2416
+f 2417 2418 2419
+f 2420 2421 2422
+f 2423 2420 2424
+f 2424 2420 2425
+f 2426 2416 2420
+f 2421 2420 2427
+f 2428 2429 2430
+f 2431 2432 2433
+f 2434 2415 2435
+f 2435 2436 2437
+f 2437 2434 2435
+f 2414 2435 2415
+f 2414 2436 2435
+f 2432 2438 2439
+f 2440 2441 2436
+f 2437 2436 2438
+f 2442 2437 2438
+f 2443 2444 2442
+f 2442 2438 2443
+f 2445 2417 2442
+f 2446 2447 2448
+f 2447 2449 2445
+f 2442 2450 2445
+f 2444 2450 2442
+f 2451 2444 2452
+f 2453 2452 2454
+f 2455 2453 2456
+f 2452 2444 2443
+f 2457 2450 2451
+f 2451 2458 2457
+f 2458 2459 2460
+f 2460 2461 2458
+f 2461 2450 2457
+f 2458 2461 2457
+f 2453 2455 2451
+f 2458 2451 2455
+f 2462 2463 2464
+f 2465 2466 2467
+f 2465 2468 2423
+f 2423 2466 2465
+f 2467 2466 2463
+f 2469 2467 2463
+f 2469 2470 2467
+f 2469 2471 2472
+f 2470 2469 2472
+f 2472 2471 2473
+f 2471 2462 2474
+f 2473 2471 2474
+f 2474 2475 2473
+f 2476 2477 2478
+f 2476 2479 2480
+f 2480 2481 2476
+f 2482 2480 2479
+f 2483 2478 2484
+f 2477 2484 2478
+f 2485 2486 2487
+f 2483 2486 2485
+f 2486 2488 2487
+f 2489 2490 2491
+f 2492 2493 2494
+f 2494 2430 2429
+f 2489 2495 2496
+f 2497 2489 2496
+f 2497 2496 2498
+f 2496 2499 2498
+f 2499 2496 2500
+f 2488 2501 2487
+f 2501 2488 2502
+f 2503 2502 2488
+f 2503 2504 2502
+f 2505 2502 2504
+f 2501 2506 2507
+f 2506 2508 2507
+f 2480 2468 2481
+f 2480 2482 2509
+f 2477 2476 2481
+f 2470 2484 2465
+f 2483 2484 2470
+f 2465 2467 2470
+f 2472 2510 2470
+f 2510 2486 2483
+f 2488 2486 2510
+f 2503 2488 2510
+f 2511 2512 2513
+f 2473 2513 2472
+f 2475 2511 2473
+f 2514 2515 2475
+f 2511 2475 2516
+f 2517 2512 2511
+f 2516 2517 2511
+f 2516 2515 2518
+f 2504 2512 2505
+f 2519 2512 2517
+f 2505 2512 2519
+f 2520 2521 2522
+f 2520 2523 2524
+f 2340 2412 2525
+f 2340 2525 2336
+f 2526 2336 2525
+f 2526 2525 2527
+f 2412 2340 2216
+f 2528 2529 2413
+f 2530 2413 2531
+f 2532 2533 2530
+f 2534 2529 2528
+f 2534 2533 2535
+f 2536 2537 2535
+f 2535 2533 2536
+f 2538 2539 2540
+f 2541 2542 2543
+f 2544 2541 2543
+f 2545 2546 2547
+f 2548 2549 2546
+f 2550 2350 2539
+f 2551 2550 2538
+f 2542 2541 2552
+f 2551 2538 2552
+f 2550 2352 2350
+f 2550 2553 2352
+f 2554 2355 2553
+f 2554 2553 2555
+f 2554 2409 2355
+f 2551 2553 2550
+f 2553 2551 2556
+f 2555 2553 2556
+f 2556 2552 2557
+f 2555 2556 2557
+f 2558 2559 2560
+f 2561 2562 2563
+f 2563 2558 2564
+f 2563 2564 2561
+f 2560 2565 2558
+f 2566 2564 2565
+f 2567 2559 2568
+f 2568 2569 2567
+f 2549 2570 2547
+f 2571 2570 2549
+f 2570 2571 2569
+f 2572 2571 2573
+f 2574 2571 2572
+f 2559 2567 2560
+f 2575 2560 2567
+f 2576 2575 2569
+f 2569 2575 2567
+f 2577 2575 2576
+f 2577 2565 2575
+f 2577 2578 2565
+f 2574 2576 2569
+f 2574 2569 2571
+f 2579 2576 2574
+f 2576 2580 2577
+f 2580 2576 2579
+f 2574 2581 2579
+f 2582 2583 2566
+f 2566 2578 2582
+f 2582 2584 2585
+f 2584 2586 2585
+f 2584 2587 2586
+f 2588 2587 2584
+f 2589 2590 2591
+f 2592 2589 2586
+f 2592 2586 2587
+f 2593 2594 2595
+f 2596 2592 2597
+f 2597 2587 2588
+f 2598 2599 2594
+f 2600 2596 2601
+f 2602 2584 2582
+f 2577 2603 2578
+f 2602 2582 2604
+f 2588 2584 2602
+f 2602 2605 2588
+f 2603 2577 2580
+f 2606 2580 2581
+f 2607 2608 2609
+f 2610 2611 2609
+f 2612 2613 2614
+f 2612 2614 2615
+f 2616 2617 2368
+f 2618 2370 2617
+f 2618 2371 2370
+f 2619 2616 2620
+f 2617 2616 2619
+f 2619 2620 2621
+f 2622 2618 2617
+f 2623 2624 2625
+f 2626 2619 2621
+f 2617 2619 2626
+f 2622 2617 2626
+f 2622 2626 2627
+f 2624 2628 2621
+f 2621 2627 2626
+f 2627 2621 2628
+f 2628 2624 2623
+f 2629 2627 2628
+f 2630 2371 2618
+f 2630 2381 2384
+f 2631 2630 2618
+f 2632 2630 2631
+f 2631 2618 2622
+f 2632 2633 2630
+f 2381 2630 2633
+f 2634 2633 2632
+f 2635 2382 2633
+f 2636 2635 2633
+f 2636 2633 2637
+f 2638 2622 2639
+f 2634 2640 2641
+f 2642 2637 2641
+f 2637 2634 2641
+f 2641 2643 2644
+f 2645 2492 2646
+f 2646 2492 2647
+f 2648 2646 2647
+f 2649 2650 2651
+f 2652 2645 2653
+f 2645 2646 2653
+f 2652 2653 2654
+f 2648 2651 2646
+f 2651 2648 2649
+f 2655 2656 2498
+f 2657 2658 2659
+f 2660 2656 2661
+f 2658 2656 2660
+f 2662 2655 2663
+f 2664 2665 2623
+f 2625 2664 2623
+f 2664 2666 2667
+f 2668 2669 2664
+f 2670 2671 2667
+f 2672 2673 2667
+f 2667 2666 2672
+f 2674 2659 2675
+f 2674 2675 2676
+f 2676 2675 2661
+f 2665 2676 2677
+f 2623 2677 2629
+f 2677 2623 2665
+f 2678 2679 2677
+f 2680 2679 2678
+f 2676 2669 2674
+f 2677 2676 2678
+f 2681 2680 2678
+f 2676 2661 2678
+f 2681 2678 2661
+f 2682 2650 2671
+f 2682 2523 2683
+f 2650 2682 2683
+f 2684 2522 2654
+f 2685 2682 2670
+f 2671 2670 2682
+f 2686 2682 2685
+f 2687 2589 2685
+f 2685 2670 2687
+f 2589 2686 2685
+f 2659 2660 2675
+f 2688 2681 2661
+f 2662 2689 2688
+f 2680 2690 2691
+f 2692 2693 2694
+f 2694 2695 2692
+f 2662 2694 2689
+f 2662 2696 2695
+f 2694 2662 2695
+f 2692 2690 2693
+f 2697 2698 2699
+f 2562 2409 2554
+f 2616 2700 2701
+f 2562 2561 2702
+f 2672 2666 2703
+f 2704 2625 2624
+f 2704 2666 2625
+f 2704 2705 2666
+f 2561 2564 2703
+f 2564 2566 2703
+f 2583 2703 2566
+f 2639 2627 2706
+f 2640 2639 2707
+f 2643 2640 2707
+f 2643 2707 2708
+f 2709 2643 2708
+f 2710 2708 2707
+f 2711 2712 2713
+f 2711 2714 2712
+f 2585 2673 2672
+f 2589 2687 2586
+f 2715 2710 2716
+f 2717 2715 2716
+f 2718 2691 2719
+f 2720 2721 2708
+f 2722 2723 2720
+f 2722 2724 2723
+f 2723 2721 2720
+f 2725 2726 2723
+f 2724 2725 2723
+f 2727 2697 2728
+f 2727 2724 2697
+f 2729 2728 2730
+f 2727 2731 2724
+f 2729 2727 2728
+f 2731 2725 2724
+f 2731 2727 2732
+f 2726 2733 2734
+f 2725 2735 2726
+f 2735 2733 2726
+f 2714 2734 2733
+f 2735 2736 2733
+f 2732 2737 2731
+f 2737 2738 2731
+f 2738 2737 2739
+f 2740 2736 2735
+f 2740 2741 2736
+f 2742 2743 2741
+f 2739 2737 2744
+f 2744 2745 2739
+f 2746 2739 2745
+f 2747 2748 2749
+f 2750 2751 2748
+f 2752 2753 2750
+f 2754 2753 2752
+f 2430 2751 2755
+f 2756 2757 2750
+f 2757 2756 2758
+f 2756 2652 2758
+f 2759 2754 2752
+f 2760 2752 2761
+f 2757 2761 2752
+f 2762 2763 2454
+f 2764 2454 2763
+f 2765 2762 2759
+f 2763 2762 2765
+f 2454 2766 2762
+f 2767 2768 2769
+f 2757 2758 2521
+f 2770 2771 2760
+f 2760 2761 2770
+f 2772 2768 2773
+f 2772 2773 2595
+f 2771 2765 2760
+f 2774 2775 2765
+f 2775 2774 2764
+f 2776 2774 2765
+f 2777 2776 2767
+f 2776 2771 2767
+f 2778 2779 2780
+f 2781 2456 2782
+f 2783 2784 2781
+f 2785 2786 2787
+f 2788 2789 2790
+f 2788 2791 2789
+f 2792 2793 2794
+f 2795 2793 2792
+f 2796 2792 2797
+f 2793 2798 2794
+f 2799 2798 2780
+f 2798 2793 2795
+f 2796 2800 2795
+f 2780 2798 2795
+f 2780 2779 2799
+f 2795 2800 2780
+f 2801 2772 2595
+f 2802 2803 2801
+f 2804 2772 2801
+f 2805 2804 2801
+f 2806 2807 2803
+f 2808 2807 2806
+f 2809 2769 2804
+f 2805 2810 2809
+f 2809 2804 2805
+f 2810 2811 2809
+f 2810 2812 2813
+f 2813 2811 2810
+f 2814 2813 2812
+f 2810 2805 2808
+f 2815 2812 2810
+f 2599 2816 2817
+f 2613 2818 2816
+f 2819 2816 2818
+f 2820 2806 2821
+f 2821 2816 2819
+f 2822 2819 2818
+f 2822 2818 2823
+f 2818 2613 2612
+f 2818 2612 2824
+f 2825 2821 2822
+f 2820 2821 2825
+f 2826 2827 2828
+f 2829 2826 2828
+f 2829 2828 2830
+f 2831 2832 2826
+f 2833 2834 2835
+f 2800 2836 2778
+f 2778 2780 2800
+f 2836 2800 2834
+f 2837 2838 2839
+f 2839 2840 2841
+f 2842 2839 2841
+f 2842 2841 2843
+f 2833 2838 2837
+f 2813 2844 2845
+f 2846 2845 2844
+f 2844 2813 2814
+f 2847 2846 2844
+f 2846 2847 2797
+f 2847 2835 2796
+f 2848 2844 2849
+f 2814 2849 2844
+f 2848 2847 2844
+f 2850 2848 2849
+f 2850 2840 2848
+f 2840 2838 2847
+f 2847 2848 2840
+f 2851 2850 2849
+f 2851 2849 2832
+f 2840 2851 2841
+f 2852 2843 2841
+f 2841 2832 2852
+f 2747 2749 2853
+f 2647 2497 2657
+f 2498 2656 2497
+f 2658 2497 2656
+f 2499 2854 2655
+f 2855 2856 2857
+f 2858 2855 2857
+f 2858 2857 2859
+f 2857 2860 2861
+f 2859 2857 2861
+f 2859 2861 2862
+f 2508 2506 2863
+f 2864 2863 2506
+f 2508 2863 2860
+f 2864 2865 2863
+f 2861 2860 2863
+f 2861 2863 2866
+f 2866 2863 2865
+f 2865 2867 2866
+f 2861 2866 2862
+f 2858 2868 2696
+f 2868 2858 2869
+f 2858 2859 2869
+f 2870 2869 2859
+f 2869 2870 2871
+f 2872 2873 2874
+f 2875 2876 2877
+f 2876 2867 2878
+f 2877 2873 2875
+f 2879 2874 2873
+f 2873 2877 2879
+f 2864 2880 2881
+f 2882 2883 2884
+f 2884 2885 2886
+f 2887 2888 2889
+f 2889 2888 2885
+f 2890 2887 2891
+f 2889 2892 2887
+f 2885 2893 2894
+f 2885 2894 2889
+f 2895 2730 2896
+f 2896 2872 2874
+f 2896 2874 2897
+f 2732 2895 2898
+f 2898 2895 2899
+f 2899 2895 2896
+f 2896 2897 2899
+f 2879 2890 2900
+f 2901 2902 2903
+f 2904 2902 2901
+f 2899 2905 2898
+f 2905 2744 2898
+f 2906 2907 2908
+f 2908 2909 2906
+f 2890 2891 2910
+f 2911 1447 2912
+f 2913 2911 2914
+f 2911 2915 1448
+f 2916 2915 2911
+f 2917 2207 2915
+f 2915 2916 2917
+f 2913 2918 2911
+f 2918 2919 2916
+f 2920 1464 1457
+f 1464 2920 2921
+f 2917 2922 2209
+f 2209 2207 2917
+f 2922 2917 2916
+f 2923 2921 2920
+f 2923 2920 2922
+f 2920 2209 2922
+f 2919 2922 2916
+f 2919 2924 2923
+f 2925 2919 2918
+f 2926 2927 2918
+f 2928 2919 2925
+f 2929 2919 2928
+f 2930 2928 2925
+f 2931 2929 2928
+f 2931 2928 2930
+f 1498 1499 2926
+f 2927 2926 1499
+f 1499 1511 2927
+f 2930 2925 2932
+f 2933 1464 2921
+f 2212 2921 2934
+f 2933 2210 16
+f 2934 2211 2212
+f 2211 2935 2936
+f 2213 2211 2937
+f 2938 2936 2935
+f 2924 2939 2936
+f 2936 2938 2924
+f 2940 2936 2939
+f 2937 2936 2940
+f 2941 2942 2943
+f 2944 2945 2941
+f 2929 2942 2939
+f 2941 2940 2939
+f 2939 2942 2941
+f 2946 2937 2947
+f 2948 2949 2946
+f 2948 2946 2947
+f 21 2950 2951
+f 2952 2951 2950
+f 2104 1528 2951
+f 2953 2104 2951
+f 2951 2952 2953
+f 2953 2952 2949
+f 2953 2949 2948
+f 2941 2954 2947
+f 2948 2947 2954
+f 2954 2941 2945
+f 2954 2955 2956
+f 2957 2953 2956
+f 1541 2953 2957
+f 2956 2953 2948
+f 2958 1542 2957
+f 2957 2956 2958
+f 2957 1542 1541
+f 2959 2945 2944
+f 2960 2959 2944
+f 2944 2943 2960
+f 2961 2962 1640
+f 1640 1662 2961
+f 2959 2960 1661
+f 2963 1576 2964
+f 2955 2945 2959
+f 2955 2959 2963
+f 2964 1542 2958
+f 2965 2966 2967
+f 2965 2967 2968
+f 2968 2969 2970
+f 2971 2972 2973
+f 2974 2972 2971
+f 2975 2976 2977
+f 2978 2971 2975
+f 2975 2971 2973
+f 2975 2973 2976
+f 2978 2979 2980
+f 2980 2971 2978
+f 2978 2975 2981
+f 2982 2981 2975
+f 1664 2983 2984
+f 1661 2984 1579
+f 2984 1661 1664
+f 1664 2985 2986
+f 2986 2983 1664
+f 2985 1664 1667
+f 2987 2986 2985
+f 1674 2988 2985
+f 2985 1667 1674
+f 2989 2987 2988
+f 2987 2985 2988
+f 1578 1579 2984
+f 2990 2991 2992
+f 2992 1578 2990
+f 2991 2990 2993
+f 2994 2991 2993
+f 2994 2993 2995
+f 2992 2991 2996
+f 2996 2997 2992
+f 2998 2996 2991
+f 2991 2994 2998
+f 2995 2999 2994
+f 2994 2999 3000
+f 2994 3000 2998
+f 3001 2986 2987
+f 3001 3002 3003
+f 2995 3003 2999
+f 3003 3002 3004
+f 3002 3005 3004
+f 3006 3007 3008
+f 3008 3007 3005
+f 3009 3010 3011
+f 1673 3012 1674
+f 3013 2989 2988
+f 3012 1673 3014
+f 3013 3015 3016
+f 3013 3016 3017
+f 3018 3012 3014
+f 3018 3014 3019
+f 3018 3020 3015
+f 3015 3012 3018
+f 3021 3022 3020
+f 3020 3018 3021
+f 3023 3020 3022
+f 3024 3025 3026
+f 3026 3006 3024
+f 3027 3024 3028
+f 3028 3024 3006
+f 2972 3029 3026
+f 3026 3029 3006
+f 3030 3029 2972
+f 3025 2973 3026
+f 2972 3026 2973
+f 3031 2977 2976
+f 2977 3031 3032
+f 3025 2976 2973
+f 2979 3033 2980
+f 3034 3033 2979
+f 3035 3034 2979
+f 3036 3037 3038
+f 3039 3040 3041
+f 3042 3043 3044
+f 3045 3042 3046
+f 3047 3042 3045
+f 3048 3049 3050
+f 3049 3048 3051
+f 3051 3048 3052
+f 3053 3052 3047
+f 3054 3055 3052
+f 3054 3052 3053
+f 3048 3047 3052
+f 2970 3049 3051
+f 2974 3056 3057
+f 3058 3057 3056
+f 3057 3058 3046
+f 3045 3046 3058
+f 3058 3059 3045
+f 3045 3053 3047
+f 3060 3061 3062
+f 3061 3060 3063
+f 3061 3064 3062
+f 3065 3066 3064
+f 3062 3066 2330
+f 3066 3062 3064
+f 3065 3067 3066
+f 3068 3069 3070
+f 3061 3071 3072
+f 3071 3063 2966
+f 3071 3061 3063
+f 3051 3068 3072
+f 3070 3073 3067
+f 3074 3070 3069
+f 3074 3075 3070
+f 3065 3070 3067
+f 3067 3076 3066
+f 3067 3073 3076
+f 3066 3076 2330
+f 3077 3078 3079
+f 3080 3078 3081
+f 3082 3083 3084
+f 3080 3085 3084
+f 3086 3082 3085
+f 3084 3085 3082
+f 2337 2328 3087
+f 3087 3078 2337
+f 2337 3078 3088
+f 2215 3088 3089
+f 2337 3088 2214
+f 3079 3073 3077
+f 3077 3073 3090
+f 3075 3090 3073
+f 3091 3075 3074
+f 3092 3093 3081
+f 3081 3093 3080
+f 3094 3077 3090
+f 3095 3096 3097
+f 3097 3037 3040
+f 3098 3095 3099
+f 3039 3095 3040
+f 3100 3099 3095
+f 3098 3099 3101
+f 3101 3102 3103
+f 3102 3101 3100
+f 3055 3104 3052
+f 3105 3068 3052
+f 3106 3107 3055
+f 3097 3055 3054
+f 3054 3037 3097
+f 3106 3108 3074
+f 3074 3108 3091
+f 3094 3090 3091
+f 3109 3110 3108
+f 3109 3108 3106
+f 3111 3108 3110
+f 3112 3113 3114
+f 3115 3094 3116
+f 3116 3094 3091
+f 3115 3114 3117
+f 3114 3113 3117
+f 3118 3119 3120
+f 3121 3122 3119
+f 3121 3119 3118
+f 3123 3121 3118
+f 3119 3110 3109
+f 3109 3103 3119
+f 3110 3119 3122
+f 3120 3119 3103
+f 3120 3103 3124
+f 3125 3111 3110
+f 3126 3110 3122
+f 3125 3110 3126
+f 3122 3127 3126
+f 3122 3121 3127
+f 3127 3121 3123
+f 3128 3126 3127
+f 3129 3130 3128
+f 3128 3127 3123
+f 3128 3123 3131
+f 3132 3133 3134
+f 3134 3135 3132
+f 3136 3133 3132
+f 3137 3133 3136
+f 3138 3139 3140
+f 3141 3142 2981
+f 2981 2982 3032
+f 3143 3035 2978
+f 3143 2978 3144
+f 3142 3145 3144
+f 3144 2981 3142
+f 3146 3139 3141
+f 3147 3148 3139
+f 3148 3142 3139
+f 3145 3149 3150
+f 3151 3145 3147
+f 3148 3147 3145
+f 3138 3140 3152
+f 3153 3139 3138
+f 3153 3154 3139
+f 3155 3156 3157
+f 3157 1869 3155
+f 3158 3159 3160
+f 3158 3160 3161
+f 3154 3162 3147
+f 3163 3147 3162
+f 3164 3165 3154
+f 3160 3162 3165
+f 3162 3154 3165
+f 3166 3160 3165
+f 3159 3163 3160
+f 1876 3167 3021
+f 3021 1877 1876
+f 3022 3021 3167
+f 1876 1880 3167
+f 3146 3168 3169
+f 1888 3170 3167
+f 3167 1880 1888
+f 1888 1887 3170
+f 3140 3170 3152
+f 3170 3171 3169
+f 3146 3169 3171
+f 3140 3171 3170
+f 3140 3139 3146
+f 1887 1870 3152
+f 3172 3173 3174
+f 3175 3035 3143
+f 3176 3175 3143
+f 3176 3143 3150
+f 3177 3175 3176
+f 3175 3177 3034
+f 3178 3034 3177
+f 3179 3038 3180
+f 3180 3178 3177
+f 3178 3180 3038
+f 3177 3176 3181
+f 3177 3181 3182
+f 3183 3181 3149
+f 3182 3181 3183
+f 3180 3177 3182
+f 3180 3182 3179
+f 3173 3179 3182
+f 3184 3185 3186
+f 3179 3036 3038
+f 3041 3187 3039
+f 3188 3041 3173
+f 3188 3187 3041
+f 3189 3186 3188
+f 3190 3191 3192
+f 3190 3174 3191
+f 3172 3174 3190
+f 3193 3194 3195
+f 3196 3197 3193
+f 3183 3149 3198
+f 3199 3189 3172
+f 3200 3201 3202
+f 3203 3197 3196
+f 3200 3202 3203
+f 3204 3201 3200
+f 3205 3206 3207
+f 3208 3209 1945
+f 1945 1944 3208
+f 3205 3207 3210
+f 3207 3208 3210
+f 3207 3206 3211
+f 3211 3209 3207
+f 3209 3208 3207
+f 3212 3213 1945
+f 3212 1945 3209
+f 3213 3212 3214
+f 3215 3212 3209
+f 3215 3209 3211
+f 3216 3214 3212
+f 3216 3212 3215
+f 3216 3217 3214
+f 3205 3135 3218
+f 3218 3206 3205
+f 3205 3219 3135
+f 3220 3221 3222
+f 3223 3222 3221
+f 3222 3211 3220
+f 3216 3215 3222
+f 1966 3214 3217
+f 3224 3166 3225
+f 3226 3225 3166
+f 3227 3228 3229
+f 3230 3231 3232
+f 3233 3231 3230
+f 3227 3161 3228
+f 3231 3227 3234
+f 3234 3232 3231
+f 3235 3236 3237
+f 3238 3134 3137
+f 3137 3239 3237
+f 3232 3234 3223
+f 3223 3221 3232
+f 3234 3229 3223
+f 3229 3224 3223
+f 3230 3235 3237
+f 3230 3237 3240
+f 3241 3230 3240
+f 3239 3242 3240
+f 3240 3237 3239
+f 3224 3228 3166
+f 3161 3160 3228
+f 3210 1944 1974
+f 3219 3210 3243
+f 3244 1974 1977
+f 3245 3246 3244
+f 1982 3245 3244
+f 3244 1977 1982
+f 3247 3246 3245
+f 1966 1980 3214
+f 3137 3248 3239
+f 3248 3137 3249
+f 3250 3248 3249
+f 3248 3251 3242
+f 3250 3252 3248
+f 3252 3250 3253
+f 3254 3255 3195
+f 3195 3158 3254
+f 3256 3255 3257
+f 3257 3233 3256
+f 3258 3259 3260
+f 3261 3196 3262
+f 3263 3264 3265
+f 3265 3200 3263
+f 3266 3262 3267
+f 3266 3261 3262
+f 3266 3268 3263
+f 3263 3261 3266
+f 3269 3260 3242
+f 3269 3251 3270
+f 3271 3258 3260
+f 3267 3258 3271
+f 3271 3269 3272
+f 3273 3274 3270
+f 3275 3271 3276
+f 3276 3272 3277
+f 3267 3278 3266
+f 3268 3266 3278
+f 3278 3267 3275
+f 3278 3279 3268
+f 3278 3275 3279
+f 3275 3280 3279
+f 3281 3282 3283
+f 3284 3285 3286
+f 3284 3287 3283
+f 3283 3285 3284
+f 3281 3283 3287
+f 3288 3287 3289
+f 3286 3290 3284
+f 3290 3291 3287
+f 3287 3284 3290
+f 3289 3287 3291
+f 3292 3291 3293
+f 3294 3295 3290
+f 3290 3286 3294
+f 3296 3297 3298
+f 3291 3290 3295
+f 3298 3299 3293
+f 3299 3300 3292
+f 3185 3184 3301
+f 3302 3303 3301
+f 3187 3188 3185
+f 3185 3303 3187
+f 3303 3185 3301
+f 3304 3303 3302
+f 3302 3305 3304
+f 3305 3306 3307
+f 3124 3100 3307
+f 3184 3302 3301
+f 3308 3302 3309
+f 3310 3265 3311
+f 3312 3313 3308
+f 3302 3308 3305
+f 3314 3305 3315
+f 3314 3316 3317
+f 3308 3313 3315
+f 3318 3316 3319
+f 3314 3319 3316
+f 3319 3314 3320
+f 3321 3120 3124
+f 3118 3120 3321
+f 3321 3124 3322
+f 3323 3324 3322
+f 3321 3322 3324
+f 3324 3325 3123
+f 3325 3324 3323
+f 3317 3322 3306
+f 3317 3326 3323
+f 3131 3123 3325
+f 3131 3129 3128
+f 3327 3328 3329
+f 3317 3316 3326
+f 3330 3331 3329
+f 3327 3329 3331
+f 3331 3330 3332
+f 3332 3282 3331
+f 3311 3265 3264
+f 3311 3333 3312
+f 3334 3313 3333
+f 3333 3313 3312
+f 3335 3333 3336
+f 3336 3311 3264
+f 3264 3268 3336
+f 3334 3333 3335
+f 3313 3337 3320
+f 3315 3313 3320
+f 3320 3338 3318
+f 3337 3313 3334
+f 3339 3337 3340
+f 3268 3279 3336
+f 3336 3341 3335
+f 3336 3279 3341
+f 3279 3342 3341
+f 3341 3342 3343
+f 3343 3344 3340
+f 3345 3346 3339
+f 3344 3343 3347
+f 3348 3345 3344
+f 3349 3350 3318
+f 3337 3351 3338
+f 3351 3337 3339
+f 3352 3351 3353
+f 2124 3354 3355
+f 3356 3357 3355
+f 3357 3358 3355
+f 3010 3356 3359
+f 3360 3356 3010
+f 3356 3360 3357
+f 3357 3361 3358
+f 2122 2124 3358
+f 3362 3360 3363
+f 3364 3365 3009
+f 3366 3363 3365
+f 3362 3367 3357
+f 3368 3369 2163
+f 3370 3371 3372
+f 2197 2148 3373
+f 3369 3370 3373
+f 3374 3368 3375
+f 3376 3372 3371
+f 3372 2223 2255
+f 3361 3368 2163
+f 3375 3377 3378
+f 3379 3380 3381
+f 3381 3380 3382
+f 3380 3383 3382
+f 3384 3385 3386
+f 3386 3379 3384
+f 3387 3388 3389
+f 3385 2969 3390
+f 3388 3385 3389
+f 3388 2969 3385
+f 3377 3387 3389
+f 3384 3389 3385
+f 3384 3377 3389
+f 3391 2966 3392
+f 3378 3393 3394
+f 3394 3395 3396
+f 3378 3384 3393
+f 2223 3397 3396
+f 3396 2221 2223
+f 3395 2221 3396
+f 3393 3384 3379
+f 3393 3379 3381
+f 3393 3395 3394
+f 3393 3381 3395
+f 2228 3395 3381
+f 2227 2228 3381
+f 3382 2227 3381
+f 2322 2227 3382
+f 3398 3354 2186
+f 3354 2187 2186
+f 3399 3354 3398
+f 3010 3359 3399
+f 3400 3401 2197
+f 3402 3401 3400
+f 3400 3373 3370
+f 3400 2193 3402
+f 3403 2194 2193
+f 3404 3372 2257
+f 3404 2257 2261
+f 3405 2261 2252
+f 2261 3405 3404
+f 2257 3372 2255
+f 3406 3407 3408
+f 3407 3409 3408
+f 3060 3410 3063
+f 3407 3406 3410
+f 2966 3063 3406
+f 3392 2966 3406
+f 3408 3392 3406
+f 3406 3063 3410
+f 3383 3409 2309
+f 3411 2309 3409
+f 2311 3062 3412
+f 2330 2331 3412
+f 3413 3414 3415
+f 3416 3414 3417
+f 3416 3418 3415
+f 3419 3420 3418
+f 3418 3416 3419
+f 3421 3422 3423
+f 3424 3425 3426
+f 3424 3426 3427
+f 3083 3428 3427
+f 3429 3430 3424
+f 3427 3431 3429
+f 3432 3429 3431
+f 3429 3433 3430
+f 3434 3431 3086
+f 3434 3432 3431
+f 3083 3082 3428
+f 3431 3082 3086
+f 3435 3436 3437
+f 3438 3439 3435
+f 3435 3440 3438
+f 3441 3439 3442
+f 3443 3442 3438
+f 3443 3444 3445
+f 3086 3093 3434
+f 3434 3413 3432
+f 3418 3446 3433
+f 3447 3446 3418
+f 3446 3447 3437
+f 3418 3432 3415
+f 3420 3447 3418
+f 3448 3449 3450
+f 3448 3450 3440
+f 3451 3420 3422
+f 3449 3451 3450
+f 3452 3440 3450
+f 3453 3454 3455
+f 3451 3456 3450
+f 3421 3457 3456
+f 3458 3456 3457
+f 3456 3452 3450
+f 3458 3452 3456
+f 3452 3458 3459
+f 3460 3457 3461
+f 3453 3460 3454
+f 3460 3462 3454
+f 3454 3462 3463
+f 3464 3438 3440
+f 3459 3464 3452
+f 3465 3459 3453
+f 3466 3467 3465
+f 3468 3469 3463
+f 3470 3463 3469
+f 3462 3468 3463
+f 3471 3469 3468
+f 3463 3470 3454
+f 3470 3469 3472
+f 3473 3469 3471
+f 3474 3475 3473
+f 3474 3476 3475
+f 3472 3469 3475
+f 3476 3472 3475
+f 3476 3474 3477
+f 3478 3466 3470
+f 3479 3478 3480
+f 3480 3481 3479
+f 3482 3480 3472
+f 3480 3483 3481
+f 3484 3483 3482
+f 3482 3476 3484
+f 3484 3485 3486
+f 3485 3484 3487
+f 3488 3489 3490
+f 3489 3491 3485
+f 3492 3493 3494
+f 3113 3495 3496
+f 3497 3496 3495
+f 3498 3417 3414
+f 3498 3414 3117
+f 3499 3417 3498
+f 3113 3498 3117
+f 3496 3498 3113
+f 3498 3496 3499
+f 3499 3419 3416
+f 3423 3419 3499
+f 3495 3500 3497
+f 3423 3501 3421
+f 3457 3421 3501
+f 3423 3502 3501
+f 3457 3501 3461
+f 3130 3112 3125
+f 3130 3125 3126
+f 3503 3495 3112
+f 3504 3500 3505
+f 3506 3504 3505
+f 3504 3507 3508
+f 3507 3509 3510
+f 3507 3510 3508
+f 3511 3512 3513
+f 3473 3514 3515
+f 3473 3516 3517
+f 3518 3519 3515
+f 3519 3516 3515
+f 3516 3519 3517
+f 3513 3512 3509
+f 3520 3521 3509
+f 3522 3523 3524
+f 3524 3525 3522
+f 3524 3519 3518
+f 3526 3519 3524
+f 3527 3526 3524
+f 3527 3528 3526
+f 3529 3530 3507
+f 3529 3507 3504
+f 3531 3532 3533
+f 3533 3534 3531
+f 3535 3531 3534
+f 3536 3537 3534
+f 3538 3535 3539
+f 3540 3522 3531
+f 3522 3540 3523
+f 3540 3541 3523
+f 3524 3523 3527
+f 3527 3523 3541
+f 3542 3541 3540
+f 3543 3541 3542
+f 3542 3544 3543
+f 3531 3535 3540
+f 3535 3545 3542
+f 3542 3540 3535
+f 3546 3544 3545
+f 3535 3538 3545
+f 3517 3477 3474
+f 3528 3547 3477
+f 3477 3517 3528
+f 3548 3549 3550
+f 3551 3548 3550
+f 3549 3548 3552
+f 3553 3549 3552
+f 3528 3517 3526
+f 3554 3547 3528
+f 3528 3527 3554
+f 3555 3553 3556
+f 3554 3557 3558
+f 3554 3558 3556
+f 3556 3543 3555
+f 3556 3552 3548
+f 3552 3556 3553
+f 3559 3489 3550
+f 3559 3550 3549
+f 3558 3543 3556
+f 3560 3561 3562
+f 3563 3562 3564
+f 3565 3566 3563
+f 3565 3563 3567
+f 3567 3568 3565
+f 3569 3565 3568
+f 3569 3570 3565
+f 3571 3572 3573
+f 3574 3572 3575
+f 3576 3577 3578
+f 3576 3578 3579
+f 3580 3581 3576
+f 3582 3581 3583
+f 3583 3581 3580
+f 3584 3585 3583
+f 3586 3583 3580
+f 3584 3583 3586
+f 3587 3579 3546
+f 3588 3546 3589
+f 3580 3576 3587
+f 3590 3591 3592
+f 3586 3593 3584
+f 3593 3594 3584
+f 3561 3595 3596
+f 3597 3561 3596
+f 3561 3560 3595
+f 3597 3562 3561
+f 3595 3598 3553
+f 3597 3599 3600
+f 3564 3597 3600
+f 3564 3562 3597
+f 3596 3601 3602
+f 3553 3555 3595
+f 3596 3595 3555
+f 3599 3582 3603
+f 3595 3560 3598
+f 3604 3600 3603
+f 3603 3605 3604
+f 3604 3605 3606
+f 3607 3608 3606
+f 3585 3603 3582
+f 3605 3590 3606
+f 3590 3609 3606
+f 3590 3605 3594
+f 3610 3567 3604
+f 3568 3567 3610
+f 3610 3569 3568
+f 3569 3610 3608
+f 3585 3584 3594
+f 3611 3612 3613
+f 3614 3615 3616
+f 3617 3618 3591
+f 3619 3615 3614
+f 3620 3615 3619
+f 3621 3622 3623
+f 3624 3622 3611
+f 3622 3612 3611
+f 3615 3625 3624
+f 3608 3626 3627
+f 3607 3626 3608
+f 3609 3628 3629
+f 3592 3629 3628
+f 3630 3631 3632
+f 3632 3631 3633
+f 3632 3633 3634
+f 3635 3636 3630
+f 3630 3636 3631
+f 3616 3611 3636
+f 3636 3613 3631
+f 3613 3633 3631
+f 3575 3571 3632
+f 3634 3575 3632
+f 3637 3638 3639
+f 3640 3641 3639
+f 3642 3641 3640
+f 3637 3643 3644
+f 3645 3644 3288
+f 3646 3644 3645
+f 3647 3642 3648
+f 3649 3647 3648
+f 3650 3647 3649
+f 3651 3652 3653
+f 3649 3648 3654
+f 3645 3288 3289
+f 3651 3646 3655
+f 3645 3289 3291
+f 3645 3291 3292
+f 3656 3657 3652
+f 3658 3659 3652
+f 3658 3652 3657
+f 3660 3661 3659
+f 3660 3659 3658
+f 3662 3663 3664
+f 3665 3292 3300
+f 3666 3662 3667
+f 3668 3669 3663
+f 3668 3663 3670
+f 3671 3667 3672
+f 3673 3654 3661
+f 3674 3654 3673
+f 3675 3676 3674
+f 3675 3674 3673
+f 3677 3676 3675
+f 3678 3677 3675
+f 3678 3675 3673
+f 3678 3679 3677
+f 3680 3681 3678
+f 3682 3673 3683
+f 3684 3681 3680
+f 3684 3685 3681
+f 3686 3669 3668
+f 3669 3686 3687
+f 3682 3683 3687
+f 3687 3686 3688
+f 3689 3686 3668
+f 3688 3686 3689
+f 3690 3688 3689
+f 3691 3688 3690
+f 3692 3693 3684
+f 3692 3694 3695
+f 3696 3697 3129
+f 3696 3698 3697
+f 3699 3700 3701
+f 3699 3697 3698
+f 3639 3700 3699
+f 3639 3699 3702
+f 3506 3505 3700
+f 3639 3641 3700
+f 3703 3504 3506
+f 3704 3506 3642
+f 3642 3647 3704
+f 3647 3705 3704
+f 3705 3706 3703
+f 3707 3504 3703
+f 3707 3703 3706
+f 3707 3536 3529
+f 3707 3708 3536
+f 3706 3709 3707
+f 3708 3707 3709
+f 3537 3536 3708
+f 3710 3537 3708
+f 3537 3710 3539
+f 3711 3712 3710
+f 3710 3712 3713
+f 3714 3712 3711
+f 3715 3705 3650
+f 3679 3676 3677
+f 3716 3709 3717
+f 3718 3716 3717
+f 3719 3720 3716
+f 3719 3716 3718
+f 3716 3720 3711
+f 3720 3714 3711
+f 3720 3721 3722
+f 3723 3719 3718
+f 3723 3718 3679
+f 3724 3725 3721
+f 3721 3720 3724
+f 3726 3725 3724
+f 3685 3723 3679
+f 3723 3727 3724
+f 3726 3724 3727
+f 3728 3726 3727
+f 3728 3727 3685
+f 3728 3685 3684
+f 3729 3730 3731
+f 3730 3732 3733
+f 3733 3732 3734
+f 3733 3735 3730
+f 3735 3736 3730
+f 3737 3738 3739
+f 3740 3739 3738
+f 3739 3740 3741
+f 3742 3738 3737
+f 3743 3744 3745
+f 3746 3747 3745
+f 3743 3745 3742
+f 3747 3748 3738
+f 3749 3748 3750
+f 3732 3751 3734
+f 3752 3733 3734
+f 3753 3752 3754
+f 3740 3754 3741
+f 3755 3752 3753
+f 3755 3756 3757
+f 3757 3758 3733
+f 3735 3733 3758
+f 3759 3760 3761
+f 3762 3763 3753
+f 3764 3763 3762
+f 3753 3748 3749
+f 3765 3749 3750
+f 3749 3764 3762
+f 3753 3749 3762
+f 3765 3766 3764
+f 3764 3749 3765
+f 3766 3767 3764
+f 3768 3769 3767
+f 3770 3771 3772
+f 3770 3769 3768
+f 3773 3756 3763
+f 3773 3763 3764
+f 3774 3772 3759
+f 3770 3774 3769
+f 3774 3773 3769
+f 3774 3770 3772
+f 3764 3769 3773
+f 3764 3767 3769
+f 3775 3776 3722
+f 3775 3713 3776
+f 3713 3775 3777
+f 3778 3779 3780
+f 3780 3588 3777
+f 3781 3782 3780
+f 3783 3781 3779
+f 3784 3783 3779
+f 3783 3617 3785
+f 3786 3783 3784
+f 3783 3786 3617
+f 3786 3787 3617
+f 3784 3779 3778
+f 3786 3788 3787
+f 3788 3778 3789
+f 3620 3790 3791
+f 3792 3625 3620
+f 3791 3793 3620
+f 3625 3615 3620
+f 3625 3792 3794
+f 3795 3623 3625
+f 3625 3623 3622
+f 3796 3794 3797
+f 3796 3729 3794
+f 3731 3795 3729
+f 3791 3790 3798
+f 3798 3799 3800
+f 3798 3793 3791
+f 3801 3797 3802
+f 3802 3741 3801
+f 3801 3741 3751
+f 3796 3797 3801
+f 3796 3801 3751
+f 3693 3726 3728
+f 3789 3803 3804
+f 3741 3800 3739
+f 3739 3805 3737
+f 2530 2531 2532
+f 2532 3806 2533
+f 3807 3806 2532
+f 3808 2537 3806
+f 3809 3810 3811
+f 2537 3812 2546
+f 3808 3813 2537
+f 3814 3815 3810
+f 3816 3817 3818
+f 3818 3819 3816
+f 3816 3820 3809
+f 3467 3818 3821
+f 3822 3819 3818
+f 3822 3818 3823
+f 3820 3816 3824
+f 3820 3824 3814
+f 3824 3825 3826
+f 2573 2548 3827
+f 3828 2572 2573
+f 3828 2573 3829
+f 3830 3827 3815
+f 3831 3829 3832
+f 3833 3831 3832
+f 3826 3825 3832
+f 3825 3834 3832
+f 3834 3825 3835
+f 3836 3837 3823
+f 3836 3838 3837
+f 3839 3486 3840
+f 3841 3842 3838
+f 3843 3844 3841
+f 3838 3836 3845
+f 3836 3846 3845
+f 3845 3846 3839
+f 3841 3838 3845
+f 3847 3841 3845
+f 3847 3843 3841
+f 3839 3848 3845
+f 3847 3845 3848
+f 3492 3849 3491
+f 3850 3491 3849
+f 3849 3492 3494
+f 3849 3851 3850
+f 3850 3852 3853
+f 3851 3854 3850
+f 3855 3840 3856
+f 3856 3852 3855
+f 3857 3858 3855
+f 3857 3855 3859
+f 3858 3857 3860
+f 3861 3851 3862
+f 3859 3852 3854
+f 3860 3857 3861
+f 3863 3864 3831
+f 3865 2606 3866
+f 3865 3867 3868
+f 3869 3870 3868
+f 3869 3868 3867
+f 2610 3870 3869
+f 3871 2610 3869
+f 3871 3869 3872
+f 3863 3866 3864
+f 3873 3865 3866
+f 3874 3873 3866
+f 3866 3863 3874
+f 3863 3875 3874
+f 3865 3873 3867
+f 3876 3873 3874
+f 3874 3877 3876
+f 3872 3867 3873
+f 3872 3873 3876
+f 3878 3876 3877
+f 3879 2611 2610
+f 3880 2611 3879
+f 2615 3881 3880
+f 3882 3883 2824
+f 3884 3885 3883
+f 3879 3871 3878
+f 3879 3886 3880
+f 3886 3887 3884
+f 3884 3880 3886
+f 3886 3888 3887
+f 3888 3885 3887
+f 3889 3844 3843
+f 3889 3834 3835
+f 3890 3834 3889
+f 3889 3891 3890
+f 3889 3843 3847
+f 3892 3889 3847
+f 3847 3848 3892
+f 3863 3833 3875
+f 3893 3874 3875
+f 3874 3893 3877
+f 3894 3893 3890
+f 3890 3891 3894
+f 3860 3895 3858
+f 3895 3860 3896
+f 3892 3897 3898
+f 3897 3892 3896
+f 3899 3897 3896
+f 3900 3897 3899
+f 3893 3894 3901
+f 3894 3902 3901
+f 3901 3902 3903
+f 3903 3904 3901
+f 3886 3905 3904
+f 3905 3901 3904
+f 3906 3907 3908
+f 3909 3888 3886
+f 3886 3904 3909
+f 3898 3910 3903
+f 3911 3910 3898
+f 2746 2742 2741
+f 2745 3912 2746
+f 3849 3494 3913
+f 3913 3914 3849
+f 3915 3916 3913
+f 3851 3849 3914
+f 3916 3917 3918
+f 3915 3919 3916
+f 3920 3916 3919
+f 3921 3917 3916
+f 3921 3916 3920
+f 3922 3923 3924
+f 3923 3922 3925
+f 3925 3926 3923
+f 3862 3914 3924
+f 3924 3914 3918
+f 3924 3918 3917
+f 3917 3922 3924
+f 3925 3922 3917
+f 3925 3917 3921
+f 3570 3566 3565
+f 3927 3921 3570
+f 3927 3928 3921
+f 3929 3927 3930
+f 3927 3569 3931
+f 3925 3921 3928
+f 3928 3926 3925
+f 3932 3933 3934
+f 3928 3927 3929
+f 3932 3926 3928
+f 3928 3935 3932
+f 3933 3936 3937
+f 3938 3939 3940
+f 3938 3940 3941
+f 3942 2823 3883
+f 3885 3942 3883
+f 3942 3943 2822
+f 3942 2822 2823
+f 3943 3944 3945
+f 3945 3946 3943
+f 3885 3947 3942
+f 3947 3940 3942
+f 3888 3906 3885
+f 3885 3906 3947
+f 3948 3947 3906
+f 3948 3940 3947
+f 3942 3940 3943
+f 3940 3939 3944
+f 3944 3943 3940
+f 3949 2830 2828
+f 3945 3949 2828
+f 2828 2825 3945
+f 3950 3945 3944
+f 2830 3949 3950
+f 3951 2829 2830
+f 3951 2830 3952
+f 3950 3953 3938
+f 3938 3953 3939
+f 3941 3954 3938
+f 3955 3956 3952
+f 3952 3938 3955
+f 3955 3957 3956
+f 3957 3955 3954
+f 3938 3952 3950
+f 3958 3924 3923
+f 3959 3958 3923
+f 3959 3923 3960
+f 3960 3961 3959
+f 3962 3941 3948
+f 3963 3941 3962
+f 3900 3958 3959
+f 3963 3964 3954
+f 3963 3954 3941
+f 3964 3937 3954
+f 3964 3933 3937
+f 3965 2843 3966
+f 3965 3967 3968
+f 3969 3970 3967
+f 3967 3965 3969
+f 3971 3966 3957
+f 3971 3969 3966
+f 3971 3957 3937
+f 3970 3969 3972
+f 3973 3974 3975
+f 3974 3976 3977
+f 3976 3974 3978
+f 3974 3977 3975
+f 3979 3980 3981
+f 3976 3967 3982
+f 3975 3982 3983
+f 3573 3984 3985
+f 3935 3930 3986
+f 3936 3935 3985
+f 3985 3983 3936
+f 3975 3987 3973
+f 3966 2843 2852
+f 3966 2852 3956
+f 3988 3989 3990
+f 3991 3992 3988
+f 3993 3994 3995
+f 3996 3995 3997
+f 3997 3995 3994
+f 3998 3997 3994
+f 3999 3997 4000
+f 4001 3999 4000
+f 4002 4003 4004
+f 4005 4003 4002
+f 4006 4007 4008
+f 4007 4009 4010
+f 4010 4008 4007
+f 4011 4010 4009
+f 4012 4013 4014
+f 4014 4015 4012
+f 4016 4017 4018
+f 4016 4018 4019
+f 4017 4020 4021
+f 4020 4022 4023
+f 4023 4021 4020
+f 4024 4020 4017
+f 4024 4017 4016
+f 4025 4022 4020
+f 4025 4026 4027
+f 4027 4022 4025
+f 4026 4028 4027
+f 4029 4016 4019
+f 4029 4019 4030
+f 4031 4032 4033
+f 4033 4034 4035
+f 4034 4033 4032
+f 4036 4025 4024
+f 4037 4038 4039
+f 4039 4038 4040
+f 4041 4042 4043
+f 4044 4045 4046
+f 4044 4046 4027
+f 4044 4027 4028
+f 4047 4048 4043
+f 4048 4049 4041
+f 4050 4047 4051
+f 4050 4052 4049
+f 4042 4053 4006
+f 4053 4054 4007
+f 4007 4006 4053
+f 4041 4055 4053
+f 4053 4042 4041
+f 4055 4054 4053
+f 4056 4057 4054
+f 4007 4054 4057
+f 4007 4057 4009
+f 4058 4009 4057
+f 4058 4057 4056
+f 4055 4059 4056
+f 4056 4054 4055
+f 4059 4060 4058
+f 4049 4061 4055
+f 4052 4061 4049
+f 4052 4062 4061
+f 4061 4062 4059
+f 4059 4055 4061
+f 4059 4062 4063
+f 4064 4028 4065
+f 4066 4064 4065
+f 4066 4065 4067
+f 4066 4068 4051
+f 4064 4066 4051
+f 4069 4070 4052
+f 4071 4066 4067
+f 4072 4073 4068
+f 4068 4066 4072
+f 4071 4074 4072
+f 4071 4067 4075
+f 4074 4076 4073
+f 4073 4072 4074
+f 4077 4062 4078
+f 4079 4080 4081
+f 4080 4082 4083
+f 4083 4081 4080
+f 4084 4085 4086
+f 4087 4084 4086
+f 4088 4089 4090
+f 4011 4009 4091
+f 4092 4088 4090
+f 4093 4094 4095
+f 4096 4092 4095
+f 4097 4098 4099
+f 4100 4098 4097
+f 4101 4099 4092
+f 4102 4099 4101
+f 4097 4099 4102
+f 4102 4103 4104
+f 4105 4104 4103
+f 4106 4102 4107
+f 4108 4106 4107
+f 4109 4110 4111
+f 4109 4111 4112
+f 4113 4114 4115
+f 4116 4117 4112
+f 4112 4118 4116
+f 4119 4116 4120
+f 4105 4121 4120
+f 4121 4105 4122
+f 4121 4123 4119
+f 4119 4120 4121
+f 4124 4125 4123
+f 4123 4125 4119
+f 4126 4125 4124
+f 4127 4115 4128
+f 4127 4129 4130
+f 4130 4115 4127
+f 4131 4129 4127
+f 4131 4127 4132
+f 4133 4134 4126
+f 4133 4135 4136
+f 4137 4126 4138
+f 4139 4133 4137
+f 4058 4140 4091
+f 4091 4009 4058
+f 4060 4140 4058
+f 4141 4094 4142
+f 4142 4143 4144
+f 4063 4145 4143
+f 4143 4060 4063
+f 4077 4146 4063
+f 4147 4145 4063
+f 4145 4148 4143
+f 4149 4150 4151
+f 4108 4150 4149
+f 4152 4153 4149
+f 4153 4154 4155
+f 4155 4149 4153
+f 4155 4156 4108
+f 4157 4156 4158
+f 4159 4160 4161
+f 4161 4154 4159
+f 4161 4162 4163
+f 4163 4158 4161
+f 4162 4161 4160
+f 4146 4077 4085
+f 4164 4147 4165
+f 4166 4167 4164
+f 4165 4146 4084
+f 4087 4168 4084
+f 4169 4170 4171
+f 4169 4172 4173
+f 4173 4170 4169
+f 4174 4175 4169
+f 4176 4177 4175
+f 4178 4179 4164
+f 4180 4181 4167
+f 4171 4167 4181
+f 4182 4122 4183
+f 4182 4184 4123
+f 4185 4182 4183
+f 4185 4183 4157
+f 4186 4187 4188
+f 4189 4157 4163
+f 4190 4191 4189
+f 4189 4191 4185
+f 4185 4157 4189
+f 4192 4186 4193
+f 4192 4193 4194
+f 4195 4194 4196
+f 4195 4196 4197
+f 4195 4198 4192
+f 4192 4194 4195
+f 4199 4137 4200
+f 4201 4200 4187
+f 4186 4201 4187
+f 4200 4202 4199
+f 4202 4200 4201
+f 4137 4199 4139
+f 4202 4203 4199
+f 4204 4205 4139
+f 4199 4204 4139
+f 4204 4206 4205
+f 4207 4205 4206
+f 4208 4206 4204
+f 4208 4204 4203
+f 4209 4206 4208
+f 4210 4211 4212
+f 4213 4209 4208
+f 4214 4213 4208
+f 4213 4214 4210
+f 4215 4216 4217
+f 4218 4215 4217
+f 4219 4220 4221
+f 4191 4222 4197
+f 4219 4223 4222
+f 4222 4220 4219
+f 4223 4224 4225
+f 4222 4226 4195
+f 4222 4195 4197
+f 4216 4215 4219
+f 4224 4223 4227
+f 4228 4229 4215
+f 4228 4215 4218
+f 4230 4212 4231
+f 4232 4230 4224
+f 4233 4210 4212
+f 4234 4233 4212
+f 4212 4235 4234
+f 4229 4236 4232
+f 4232 4224 4229
+f 4237 4235 4232
+f 4228 4238 4237
+f 4237 4236 4228
+f 4237 4239 4240
+f 4241 4131 4207
+f 4213 4242 4243
+f 4242 4213 4244
+f 4245 4246 4243
+f 4245 4243 4242
+f 4247 4244 4239
+f 4244 4248 4242
+f 4248 4244 4247
+f 4248 4249 4245
+f 4250 4251 4246
+f 4250 4252 4253
+f 4254 4255 4256
+f 4256 4257 4254
+f 4256 4250 4245
+f 4257 4245 4249
+f 4252 4250 4256
+f 4258 4259 4260
+f 4261 4262 4263
+f 4264 4265 4266
+f 4266 4267 4268
+f 4264 4269 4265
+f 4270 4271 4272
+f 4270 4272 4273
+f 4274 4275 4269
+f 4269 4264 4274
+f 4276 4269 4275
+f 4277 4278 4275
+f 4279 4276 4275
+f 4279 4275 4278
+f 4280 4281 4282
+f 4270 4282 4281
+f 4283 4284 4278
+f 4285 4279 4278
+f 4285 4278 4284
+f 4286 4284 4283
+f 4286 4283 4287
+f 4288 4285 4289
+f 4284 4289 4285
+f 4289 4284 4286
+f 4290 4291 4292
+f 4293 4292 4294
+f 4293 4294 4276
+f 4295 4296 4297
+f 4295 4297 4298
+f 4299 4300 4301
+f 4299 4301 4296
+f 4302 4303 4300
+f 4302 4300 4299
+f 4299 4296 4295
+f 4304 4302 4299
+f 4031 3990 4305
+f 4306 4307 4305
+f 4308 4032 4305
+f 4309 4037 4034
+f 4310 4032 4308
+f 4310 4311 4309
+f 4312 4308 4313
+f 4311 4310 4312
+f 4038 4037 4309
+f 4311 4314 4038
+f 4038 4309 4311
+f 4040 4315 4316
+f 4075 4316 4315
+f 4317 4318 4314
+f 4319 4314 4318
+f 4320 4321 4318
+f 4321 4322 4323
+f 4320 4324 4322
+f 4322 4321 4320
+f 4325 4326 4327
+f 4328 4329 4325
+f 4325 4327 4328
+f 4330 4331 4313
+f 4332 4333 4331
+f 4331 4330 4332
+f 4330 3996 3997
+f 4332 4330 3997
+f 4332 3997 3999
+f 4334 4312 4313
+f 4334 4313 4331
+f 4335 4336 4334
+f 4336 4312 4334
+f 4337 4334 4333
+f 4331 4333 4334
+f 4338 4339 4333
+f 4333 4332 4338
+f 4339 4338 4340
+f 3999 4340 4338
+f 4339 4327 4337
+f 4339 4328 4327
+f 4328 4339 4341
+f 4342 4335 4326
+f 4343 4335 4342
+f 4344 4345 4346
+f 4346 4343 4344
+f 4325 4342 4326
+f 4347 4342 4325
+f 4347 4325 4329
+f 4342 4347 4348
+f 4342 4348 4343
+f 4349 4344 4350
+f 4344 4343 4350
+f 4344 4349 4351
+f 4348 4352 4350
+f 4343 4348 4350
+f 4353 4349 4350
+f 4352 4353 4350
+f 4343 4336 4335
+f 4335 4337 4326
+f 4336 4343 4346
+f 4336 4346 4318
+f 4346 4345 4318
+f 4318 4345 4320
+f 4324 4320 4345
+f 4345 4354 4324
+f 4355 4356 4071
+f 4071 4075 4355
+f 4357 4076 4074
+f 4358 4356 4355
+f 4359 4357 4360
+f 4361 4322 4324
+f 4362 4361 4363
+f 4364 4365 4366
+f 4362 4365 4359
+f 4359 4360 4362
+f 4080 4079 4367
+f 4368 4082 4080
+f 4369 4368 4080
+f 4368 4370 4087
+f 4371 4367 4364
+f 4372 4373 4374
+f 4372 4375 4376
+f 4377 4351 4349
+f 4353 4378 4349
+f 4378 4379 4377
+f 4377 4349 4378
+f 4351 4380 4381
+f 4351 4381 4354
+f 4354 4345 4351
+f 4382 4383 4381
+f 4366 4365 4384
+f 4366 4384 4383
+f 4366 4385 4364
+f 4386 4366 4383
+f 4386 4383 4382
+f 4385 4366 4386
+f 4363 4384 4365
+f 4380 4351 4377
+f 4380 4387 4382
+f 4377 4379 4388
+f 4389 4380 4388
+f 4389 4388 4379
+f 4387 4380 4389
+f 4390 4385 4386
+f 4390 4386 4391
+f 4392 4391 4387
+f 4393 4390 4391
+f 4385 4394 4395
+f 4395 4364 4385
+f 4374 4395 4394
+f 4396 4397 4398
+f 4399 4397 4396
+f 4400 4401 4402
+f 4402 4403 4400
+f 4403 4001 4400
+f 4402 4404 4341
+f 4404 4402 4405
+f 4405 4402 4401
+f 4400 4406 4401
+f 4405 4407 4408
+f 4407 4401 4406
+f 4406 4409 4407
+f 4410 4411 4348
+f 4412 4411 4410
+f 4352 4348 4411
+f 4413 4414 4411
+f 4413 4411 4412
+f 4413 4415 4416
+f 4416 4414 4413
+f 4417 4408 4418
+f 4418 4412 4417
+f 4418 4419 4413
+f 4413 4412 4418
+f 4407 4420 4418
+f 4418 4408 4407
+f 4421 4422 4407
+f 4407 4409 4421
+f 4419 4418 4420
+f 4422 4421 4423
+f 4422 4423 4424
+f 4416 4425 4378
+f 4378 4353 4416
+f 4378 4425 4379
+f 4426 4427 4428
+f 4429 4430 4431
+f 4429 4431 4415
+f 4432 4426 4430
+f 4413 4419 4429
+f 4433 4430 4429
+f 4419 4433 4429
+f 4432 4430 4433
+f 4434 4427 4432
+f 4434 4432 4435
+f 4428 4436 4389
+f 4389 4379 4428
+f 4437 4389 4436
+f 4437 4438 4393
+f 4393 4392 4437
+f 4439 4436 4427
+f 4440 4437 4439
+f 4439 4427 4434
+f 4441 4442 4443
+f 4438 4444 4398
+f 4396 4398 4444
+f 4445 4444 4438
+f 4446 4442 4441
+f 4442 4447 4445
+f 4447 4448 4449
+f 4449 4445 4447
+f 4446 4450 4447
+f 4447 4442 4446
+f 4450 4451 4448
+f 4452 4453 4449
+f 4433 4419 4454
+f 4433 4454 4435
+f 4435 4454 4455
+f 4456 4423 4457
+f 4441 4456 4458
+f 4459 4458 4456
+f 4450 4459 4460
+f 4450 4460 4451
+f 4461 4462 4463
+f 4464 4465 4168
+f 4166 4465 4464
+f 4466 4462 4467
+f 4466 4467 4468
+f 4466 4463 4462
+f 4469 4466 4468
+f 4469 4468 4470
+f 4470 4468 4471
+f 4469 4472 4463
+f 4463 4466 4469
+f 4176 4175 4473
+f 4474 4475 4473
+f 4476 4176 4473
+f 4463 4477 4474
+f 4474 4461 4463
+f 4475 4474 4477
+f 4478 4476 4475
+f 4479 4475 4477
+f 4479 4480 4478
+f 4478 4475 4479
+f 4481 4471 4375
+f 4482 4481 4375
+f 4470 4471 4481
+f 4483 4472 4469
+f 4483 4470 4484
+f 4485 4481 4482
+f 4485 4482 4399
+f 4484 4470 4486
+f 4470 4481 4486
+f 4487 4463 4472
+f 4487 4472 4483
+f 4488 4477 4463
+f 4488 4463 4487
+f 4489 4488 4487
+f 4489 4487 4490
+f 4488 4491 4479
+f 4479 4477 4488
+f 4491 4492 4480
+f 4480 4479 4491
+f 4489 4493 4491
+f 4491 4488 4489
+f 4494 4492 4491
+f 4494 4491 4493
+f 4495 4496 4497
+f 4497 4489 4490
+f 4497 4490 4495
+f 4493 4489 4497
+f 4498 4493 4497
+f 4498 4497 4496
+f 4498 4499 4494
+f 4494 4493 4498
+f 4176 4500 4501
+f 4500 4218 4501
+f 4176 4476 4500
+f 4502 4503 4500
+f 4228 4218 4504
+f 4503 4505 4504
+f 4478 4506 4502
+f 4503 4502 4506
+f 4480 4507 4506
+f 4506 4478 4480
+f 4508 4505 4503
+f 4506 4508 4503
+f 4508 4506 4507
+f 4509 4238 4228
+f 4509 4510 4239
+f 4511 4512 4513
+f 4513 4509 4511
+f 4514 4507 4492
+f 4515 4492 4494
+f 4516 4512 4511
+f 4517 4518 4519
+f 4485 4520 4486
+f 4521 4522 4499
+f 4498 4496 4523
+f 4520 4524 4525
+f 4520 4525 4526
+f 4525 4527 4521
+f 4527 4522 4521
+f 4528 4522 4529
+f 4522 4528 4499
+f 4530 4529 4531
+f 4530 4531 4532
+f 4533 4531 4529
+f 4533 4529 4534
+f 4534 4535 4533
+f 4532 4531 4536
+f 4532 4536 4519
+f 4537 4519 4536
+f 4535 4538 4539
+f 4540 4541 4542
+f 4543 4544 4545
+f 4543 4546 4547
+f 4548 4549 4543
+f 4550 4546 4549
+f 4551 4552 4553
+f 4553 4554 4551
+f 4554 4553 4555
+f 4556 4548 4545
+f 4556 4545 4557
+f 4557 4552 4556
+f 4558 4556 4552
+f 4552 4551 4559
+f 4552 4559 4558
+f 4557 4545 4544
+f 4558 4559 4560
+f 4561 4562 4547
+f 4561 4547 4546
+f 4561 4563 4562
+f 4550 4564 4561
+f 4561 4546 4550
+f 4565 4561 4564
+f 4563 4561 4565
+f 4566 4567 4563
+f 4568 4566 4563
+f 4568 4563 4565
+f 4567 4569 4570
+f 4571 4570 4569
+f 4571 4569 4572
+f 4573 4571 4572
+f 4574 4572 4569
+f 4575 4573 4572
+f 4575 4572 4574
+f 4566 4576 4569
+f 4577 4578 4576
+f 4575 4574 4578
+f 4549 4548 4579
+f 4580 4579 4581
+f 4550 4549 4582
+f 4580 4582 4549
+f 4581 4583 4580
+f 4580 4583 4584
+f 4582 4580 4584
+f 4556 4579 4548
+f 4583 4585 4586
+f 4558 4560 4587
+f 4587 4586 4585
+f 4587 4585 4558
+f 4582 4588 4564
+f 4588 4584 4589
+f 4589 4590 4591
+f 4589 4584 4586
+f 4589 4586 4592
+f 4587 4593 4592
+f 4594 4595 4568
+f 4595 4592 4577
+f 4577 4592 4593
+f 4247 4510 4596
+f 4254 4257 4597
+f 4248 4598 4597
+f 4249 4248 4597
+f 4597 4257 4249
+f 4599 4596 4510
+f 4600 4598 4596
+f 4600 4601 4597
+f 4597 4598 4600
+f 4601 4602 4603
+f 4604 4605 4601
+f 4601 4600 4604
+f 4601 4605 4602
+f 4606 4607 4608
+f 4609 4608 4610
+f 4606 4608 4609
+f 4611 4612 4602
+f 4611 4613 4614
+f 4614 4612 4611
+f 4602 4615 4611
+f 4613 4611 4615
+f 4610 4614 4613
+f 4616 4617 4618
+f 4616 4618 4619
+f 4619 4620 4616
+f 4620 4621 4622
+f 4622 4616 4620
+f 4623 4621 4620
+f 4623 4620 4624
+f 4625 4626 4622
+f 4625 4622 4621
+f 4627 4625 4621
+f 4627 4621 4623
+f 4628 4625 4627
+f 4617 4604 4512
+f 4629 4630 4626
+f 4626 4631 4629
+f 4632 4613 4633
+f 4634 4635 4632
+f 4632 4636 4637
+f 4638 4639 4637
+f 4632 4635 4636
+f 4638 4636 4640
+f 4629 4631 4633
+f 4641 4642 4606
+f 4641 4606 4609
+f 4641 4273 4642
+f 4643 4273 4644
+f 4641 4609 4645
+f 4644 4641 4645
+f 4646 4645 4609
+f 4646 4609 4639
+f 4647 4645 4646
+f 4648 4647 4649
+f 4647 4650 4643
+f 4643 4644 4647
+f 4643 4651 4652
+f 4282 4270 4643
+f 4653 4654 4286
+f 4654 4288 4289
+f 4289 4286 4654
+f 4654 4653 4655
+f 4653 4287 4651
+f 4643 4650 4656
+f 4656 4651 4643
+f 4657 4651 4656
+f 4657 4658 4655
+f 4638 4659 4660
+f 4660 4649 4646
+f 4661 4649 4660
+f 4661 4660 4659
+f 4661 4662 4648
+f 4648 4649 4661
+f 4648 4663 4664
+f 4664 4650 4648
+f 4663 4648 4662
+f 4665 4666 4667
+f 4659 4667 4661
+f 4667 4659 4665
+f 4667 4668 4663
+f 4663 4662 4667
+f 4668 4667 4666
+f 4669 4627 4623
+f 4669 4623 4624
+f 4670 4671 4669
+f 4669 4624 4670
+f 4671 4672 4673
+f 4674 4675 4676
+f 4676 4672 4671
+f 4676 4671 4674
+f 4677 4678 4670
+f 4670 4624 4537
+f 4670 4537 4677
+f 4679 4680 4678
+f 4635 4634 4673
+f 4681 4672 4682
+f 4676 4682 4672
+f 4683 4684 4685
+f 4675 4686 4683
+f 4683 4682 4675
+f 4682 4676 4675
+f 4686 4687 4684
+f 4684 4688 4689
+f 4690 4689 4688
+f 4688 4684 4687
+f 4691 4690 4688
+f 4674 4692 4675
+f 4693 4694 4674
+f 4693 4695 4694
+f 4696 4695 4693
+f 4697 4698 4686
+f 4686 4692 4697
+f 4699 4691 4688
+f 4699 4698 4700
+f 4700 4701 4699
+f 4697 4692 4694
+f 4694 4700 4697
+f 4695 4696 4702
+f 4701 4700 4703
+f 4704 4705 4706
+f 4666 4665 4707
+f 4708 4666 4709
+f 4666 4708 4668
+f 4706 4710 4709
+f 4711 4705 4712
+f 4713 4714 4710
+f 4713 4710 4711
+f 4712 4701 4715
+f 4712 4715 4711
+f 4716 4717 4718
+f 4719 4295 4720
+f 4720 4716 4721
+f 4720 4721 4719
+f 4721 4722 4723
+f 4724 4725 4717
+f 4717 4726 4724
+f 4727 4724 4726
+f 4718 4717 4725
+f 4728 4716 4718
+f 4724 4729 4725
+f 4727 4730 4729
+f 4729 4724 4727
+f 4730 4727 4658
+f 4730 4658 4731
+f 4732 4728 4718
+f 4732 4718 4729
+f 4732 4729 4730
+f 4657 4733 4734
+f 4735 4736 4734
+f 4735 4734 4737
+f 4738 4716 4728
+f 4732 4739 4738
+f 4740 4722 4721
+f 4735 4740 4738
+f 4730 4731 4739
+f 4730 4739 4732
+f 4739 4731 4736
+f 4741 4742 4743
+f 4744 4742 4741
+f 4745 4746 4747
+f 4748 4749 4750
+f 4751 4752 4748
+f 4751 4748 4753
+f 4754 4753 4748
+f 4755 4756 4750
+f 4757 4755 4758
+f 4758 4755 4759
+f 4760 4761 4750
+f 4750 4749 4760
+f 4762 4760 4763
+f 4762 4761 4760
+f 4751 4764 4763
+f 4765 4762 4763
+f 4765 4763 4764
+f 4766 4767 4750
+f 4766 4750 4761
+f 4766 4743 4768
+f 4768 4767 4766
+f 4766 4769 4741
+f 4754 4757 4770
+f 4771 4765 4764
+f 4771 4764 4772
+f 4773 4772 4774
+f 4773 4774 4775
+f 4776 4771 4772
+f 4776 4772 4773
+f 4765 4777 4778
+f 4762 4779 4761
+f 4780 4778 4777
+f 4779 4778 4780
+f 4769 4781 4782
+f 4783 4784 4781
+f 4783 4781 4785
+f 4782 4781 4784
+f 4761 4779 4785
+f 4783 4785 4779
+f 4779 4786 4783
+f 4783 4787 4784
+f 4788 4784 4787
+f 4746 4784 4788
+f 4789 4787 4783
+f 4786 4789 4783
+f 4790 4788 4787
+f 4790 4787 4789
+f 4791 4765 4771
+f 4792 4793 4791
+f 4792 4791 4794
+f 4795 4796 4786
+f 4796 4797 4790
+f 4790 4789 4796
+f 4798 4747 4746
+f 4799 4800 4801
+f 4801 4788 4799
+f 4802 4803 4801
+f 4801 4804 4802
+f 4798 4803 4802
+f 4802 4805 4798
+f 4806 4804 4807
+f 4802 4804 4806
+f 4808 4801 4800
+f 4809 4807 4808
+f 4810 4797 4811
+f 4812 4813 4810
+f 4814 4799 4790
+f 4800 4799 4814
+f 4797 4810 4814
+f 4814 4810 4813
+f 4815 4816 4813
+f 4812 4815 4813
+f 4815 4817 4816
+f 4816 4808 4800
+f 4807 4818 4819
+f 4818 4820 4819
+f 4821 4822 4820
+f 4823 4820 4824
+f 4825 4822 4826
+f 4827 4816 4817
+f 4770 4828 4775
+f 4829 4776 4773
+f 4773 4830 4829
+f 4830 4773 4831
+f 4832 4833 4834
+f 4835 4794 4776
+f 4835 4776 4829
+f 4835 4836 4792
+f 4836 4837 4838
+f 4837 4839 4840
+f 4840 4838 4837
+f 4840 4839 4811
+f 4841 4842 4837
+f 4843 4830 4832
+f 4844 4845 4842
+f 4842 4841 4846
+f 4842 4846 4844
+f 4847 4844 4846
+f 4839 4810 4811
+f 4848 4849 4812
+f 4850 4849 4848
+f 4850 4848 4851
+f 4849 4852 4815
+f 4815 4812 4849
+f 4817 4815 4852
+f 4850 4853 4852
+f 4852 4849 4850
+f 4854 4855 4850
+f 4850 4851 4854
+f 4851 4844 4854
+f 4854 4844 4847
+f 4855 4856 4853
+f 4853 4850 4855
+f 4857 4858 4859
+f 4860 4861 4859
+f 4860 4862 4861
+f 4858 4860 4859
+f 4858 4863 4860
+f 4864 4858 4857
+f 4856 4864 4857
+f 4865 4855 4854
+f 4854 4847 4865
+f 4855 4866 4856
+f 4864 4856 4866
+f 4867 4868 4869
+f 4868 4870 4869
+f 4871 4867 4872
+f 4871 4872 4873
+f 4874 4873 4875
+f 4876 4871 4874
+f 4873 4874 4871
+f 4877 4878 4879
+f 4878 4868 4871
+f 4878 4880 4868
+f 4871 4881 4879
+f 4879 4878 4871
+f 4881 4871 4876
+f 4882 4876 4874
+f 4883 4877 4879
+f 4884 4885 4886
+f 4885 4887 4886
+f 4888 4889 4890
+f 4867 4891 4892
+f 4892 4891 4893
+f 4894 4893 4891
+f 4891 4895 4894
+f 4895 4896 4894
+f 4897 4894 4896
+f 4875 4872 4892
+f 4875 4892 4898
+f 4898 4892 4899
+f 4892 4872 4867
+f 4875 4898 4889
+f 4900 4901 4899
+f 4899 4893 4900
+f 4900 4893 4894
+f 4900 4894 4897
+f 4902 4900 4897
+f 4897 4903 4902
+f 4902 4903 4904
+f 836 1140 4905
+f 4890 4901 4906
+f 4890 4906 4907
+f 4906 4901 4900
+f 4906 4900 4908
+f 4900 4902 4909
+f 4906 4910 4887
+f 4906 4887 4907
+f 4911 4912 4910
+f 4911 4910 4908
+f 4911 4913 4914
+f 4912 4911 4914
+f 4912 4914 4915
+f 4915 4886 4912
+f 1141 4916 4905
+f 1144 4917 1142
+f 1148 4918 1147
+f 4919 4920 4921
+f 4922 4923 4920
+f 4922 4920 4919
+f 4922 4924 4925
+f 4926 4927 4928
+f 4929 4930 4931
+f 4932 4933 4934
+f 4932 4935 4936
+f 4937 4938 4939
+f 4940 4941 4936
+f 4941 4933 4932
+f 4942 4941 4940
+f 4943 4941 4942
+f 4940 4929 4944
+f 4945 4946 4947
+f 4948 4946 4945
+f 4946 4948 4949
+f 4949 4950 4946
+f 4951 4947 4952
+f 4952 4947 4933
+f 4953 4952 4941
+f 4954 4955 4956
+f 4954 4956 4957
+f 4951 4956 4945
+f 4945 4947 4951
+f 4955 4945 4956
+f 4956 4951 4953
+f 4958 4959 4960
+f 4960 4934 4958
+f 4961 4962 4958
+f 4958 4962 4963
+f 4962 4950 4963
+f 4933 4964 4934
+f 4965 4939 4960
+f 4965 4960 4959
+f 4965 4966 4967
+f 4967 4939 4965
+f 4968 4919 4965
+f 4965 4959 4968
+f 4921 4966 4965
+f 4919 4921 4965
+f 4963 4950 4949
+f 4968 4958 4963
+f 4963 4924 4968
+f 4949 4969 4963
+f 4924 4963 4969
+f 4925 4924 4969
+f 4970 4971 4944
+f 4971 4970 4928
+f 4972 4973 4942
+f 4974 4975 4973
+f 4976 4953 4973
+f 4977 4978 4979
+f 4979 4957 4977
+f 4980 4981 4977
+f 4977 4976 4980
+f 4975 4982 4973
+f 4868 4880 4983
+f 4983 4984 4870
+f 4870 4868 4983
+f 4985 4983 4880
+f 4984 4983 4985
+f 4877 4986 4987
+f 4987 4878 4877
+f 4988 4989 4986
+f 4987 4986 4989
+f 4989 4990 4991
+f 4991 4992 4989
+f 4993 4994 4995
+f 4996 4997 4998
+f 4996 4998 4993
+f 4999 4991 4990
+f 5000 4993 4995
+f 4999 5000 4995
+f 4995 4991 4999
+f 4993 5001 5002
+f 5002 4996 4993
+f 5003 4988 5004
+f 5005 5004 4883
+f 5005 4883 4884
+f 5005 5006 5003
+f 5003 5004 5005
+f 5003 5007 4999
+f 4999 4990 5003
+f 5008 5001 5000
+f 5003 5009 5010
+f 5010 5007 5003
+f 5011 4870 4984
+f 5012 4897 4896
+f 4896 1780 5012
+f 1777 1779 5013
+f 1780 5014 1779
+f 836 4904 4903
+f 4903 5012 836
+f 4993 4998 1777
+f 1777 4994 4993
+f 4913 4904 5015
+f 4913 5015 5016
+f 5001 5008 5017
+f 5018 5019 1799
+f 5020 5018 1799
+f 1799 4996 5020
+f 4996 5002 5020
+f 1797 5021 1794
+f 5022 5023 5021
+f 5023 5022 5024
+f 5025 5026 5027
+f 5024 5027 5026
+f 5027 5024 5028
+f 5029 5030 5025
+f 5030 1909 5031
+f 5030 5026 5025
+f 5019 5028 5024
+f 5019 5024 5022
+f 5032 5033 5025
+f 5025 5027 5034
+f 5027 5028 5035
+f 4923 5036 5033
+f 5025 5033 5036
+f 5036 4923 5037
+f 5032 5038 5033
+f 5038 5032 5039
+f 4920 5033 5038
+f 5040 4921 5038
+f 5039 5040 5038
+f 5041 5039 5032
+f 5042 5043 5044
+f 5045 5042 5044
+f 5046 5047 5035
+f 5048 5049 5050
+f 5051 5048 5050
+f 5051 5050 5052
+f 5053 5054 5055
+f 5055 5056 5053
+f 5057 5058 5059
+f 5057 5060 5061
+f 5061 5058 5057
+f 5051 5056 5055
+f 5062 5063 5064
+f 5059 5058 5065
+f 5054 5059 5065
+f 5065 5058 5061
+f 5049 5048 5006
+f 5049 5006 5005
+f 5005 5050 5049
+f 5066 5067 5068
+f 5069 5048 5064
+f 5064 5070 5071
+f 5071 5069 5064
+f 5070 5072 5073
+f 5073 5071 5070
+f 5074 5075 5072
+f 5073 5072 5075
+f 5076 5061 5060
+f 5064 5077 5078
+f 5064 5078 5070
+f 5078 5077 5079
+f 5079 5080 5078
+f 5081 5074 5082
+f 5083 5084 5081
+f 5081 5082 5083
+f 5085 5078 5080
+f 5080 5083 5085
+f 5085 5083 5082
+f 5073 5086 5087
+f 5088 5089 5090
+f 5090 5054 5053
+f 5090 5053 5088
+f 5057 5091 5060
+f 5092 5091 5093
+f 5093 5059 5054
+f 5094 5093 5090
+f 5095 5094 5089
+f 5096 5095 5089
+f 5089 5088 5096
+f 5097 5088 5053
+f 5053 5098 5097
+f 5097 5098 5068
+f 5097 5068 5099
+f 5097 5100 5088
+f 5099 5101 5100
+f 5099 5100 5097
+f 5096 5088 5100
+f 5096 5100 5102
+f 5103 5102 5100
+f 5104 5105 5106
+f 5106 5060 5104
+f 5105 5104 5107
+f 5083 5080 5108
+f 4970 5084 5109
+f 5084 5083 5109
+f 5110 5109 5111
+f 5110 5111 5112
+f 5109 5110 4970
+f 5095 5113 5112
+f 5112 5107 5095
+f 5113 4926 5110
+f 5110 5112 5113
+f 5099 5068 5114
+f 5115 5114 5116
+f 4930 5117 5118
+f 5119 5120 5121
+f 5121 5120 5122
+f 5121 5122 5074
+f 5119 4931 5118
+f 5118 5120 5119
+f 5118 5117 5122
+f 5122 5120 5118
+f 5122 5123 5075
+f 5122 5075 5074
+f 5123 5124 5125
+f 5125 5075 5123
+f 4937 5117 4930
+f 5126 4937 4967
+f 5127 5042 5128
+f 5128 5126 5127
+f 5129 4931 5119
+f 5081 5129 5119
+f 5081 5119 5121
+f 5121 5074 5081
+f 5129 5081 5084
+f 5086 5125 5124
+f 5130 5124 5131
+f 5086 5130 5132
+f 5133 5134 5130
+f 5134 5133 5135
+f 5043 5042 5127
+f 5043 5127 5040
+f 5136 5137 5138
+f 5138 5139 5140
+f 5141 5142 5143
+f 5144 5143 5142
+f 5139 5142 5140
+f 5142 5141 5140
+f 5145 5146 5142
+f 5142 5139 5145
+f 5147 5148 5149
+f 5150 5151 5147
+f 5152 5153 5037
+f 5152 5154 5153
+f 5155 5152 5156
+f 5152 5037 5156
+f 5157 5158 5159
+f 5157 5160 5161
+f 5162 5158 5157
+f 5162 5157 5161
+f 5160 5157 5163
+f 5163 5152 5160
+f 5163 5154 5152
+f 5163 5157 5159
+f 5148 5161 5155
+f 5156 5148 5155
+f 5148 5156 4922
+f 4922 4925 5148
+f 5147 5161 5148
+f 5162 5164 5165
+f 5166 5167 5164
+f 5167 5165 5164
+f 5168 5167 5166
+f 5151 5164 5162
+f 5169 5164 5151
+f 5170 5138 5171
+f 5165 5171 5158
+f 5158 5162 5165
+f 5170 5171 5165
+f 5165 5167 5170
+f 5170 5167 5172
+f 5145 5139 5172
+f 5173 5174 5175
+f 5176 5144 5146
+f 5176 5177 5178
+f 5179 5180 5181
+f 5182 5181 5180
+f 5183 5180 5179
+f 5180 5184 5182
+f 5182 5185 5177
+f 5178 5177 5185
+f 5186 5184 5187
+f 5186 5188 5189
+f 5186 5189 5184
+f 5190 5191 5192
+f 5190 5192 5193
+f 5190 5193 5187
+f 5186 5187 5193
+f 5193 5188 5186
+f 5194 5195 5189
+f 5196 5197 5193
+f 5198 5199 5200
+f 5200 5201 5179
+f 5202 5200 5199
+f 5199 5169 5203
+f 5204 5202 5199
+f 5204 5203 5205
+f 5206 5207 5202
+f 5207 5200 5202
+f 5208 5195 5209
+f 5210 5211 5196
+f 5196 5192 5210
+f 5211 5212 5213
+f 5213 5196 5211
+f 5214 5215 5211
+f 5211 5210 5214
+f 5212 5211 5215
+f 5216 5217 5207
+f 5216 5218 5217
+f 5219 5207 5217
+f 5220 5221 5218
+f 5194 5222 5209
+f 5209 5195 5194
+f 5196 5213 5223
+f 5223 5224 5225
+f 5225 5197 5223
+f 5225 5224 5226
+f 5226 5227 5222
+f 5228 5229 5230
+f 5228 5230 5231
+f 5232 5233 5234
+f 5235 5232 5236
+f 5235 5237 5232
+f 5228 5231 5238
+f 5238 5239 5240
+f 5228 5238 5241
+f 5232 5242 5233
+f 5242 5240 5233
+f 5243 5242 5232
+f 5244 5245 5246
+f 5247 5248 5244
+f 5244 5248 5249
+f 5250 5251 5248
+f 5251 5150 5249
+f 5251 5252 5150
+f 5251 5249 5248
+f 4945 4955 5246
+f 5247 5244 5246
+f 5247 5246 4955
+f 5245 4925 4969
+f 4925 5149 5148
+f 5251 5253 5252
+f 5253 5254 5255
+f 5253 5251 5250
+f 5256 5254 5253
+f 5256 5253 5250
+f 5254 5229 5205
+f 5229 5254 5230
+f 5257 5256 5258
+f 5250 5258 5256
+f 5256 5231 5230
+f 5259 5260 5261
+f 4978 5262 5259
+f 5259 4979 4978
+f 5263 5259 5262
+f 5264 5265 5259
+f 5260 5259 5265
+f 5264 5266 5265
+f 5263 5234 5264
+f 5264 5259 5263
+f 5234 5233 5266
+f 5262 5236 5263
+f 5236 5262 5267
+f 5267 5235 5236
+f 5234 5263 5236
+f 5266 5239 5257
+f 5268 5269 5270
+f 5229 5269 5268
+f 5269 5271 5272
+f 5271 5273 5272
+f 5274 5269 5229
+f 5228 5274 5229
+f 5274 5275 5269
+f 5269 5275 5271
+f 5276 5277 5271
+f 5276 5275 5278
+f 5279 5273 5277
+f 5276 5280 5281
+f 5277 5282 5279
+f 5282 5283 5279
+f 5282 5284 5283
+f 5282 5277 5276
+f 5282 5281 5284
+f 5285 5283 5284
+f 5286 5287 5285
+f 5288 5289 5228
+f 5290 5289 5288
+f 5291 5292 5293
+f 5290 5292 5278
+f 5278 5274 5290
+f 5294 5293 5292
+f 5292 5290 5294
+f 5288 5295 5294
+f 5296 5297 5288
+f 5298 5278 5292
+f 5280 5276 5298
+f 5291 5299 5298
+f 5298 5292 5291
+f 5280 5300 5281
+f 5280 5301 5300
+f 5301 5302 5300
+f 5280 5299 5303
+f 5299 5280 5298
+f 5303 5304 5305
+f 5301 5280 5303
+f 5301 5303 5305
+f 5301 5305 5302
+f 5302 5306 5300
+f 5286 5300 5306
+f 5286 5306 5287
+f 5306 5307 5287
+f 5299 5291 5308
+f 5309 5310 5308
+f 5311 5310 5309
+f 5310 5312 5303
+f 5303 5299 5310
+f 5312 5313 5304
+f 5311 5314 5312
+f 5312 5310 5311
+f 5315 5313 5312
+f 5315 5312 5314
+f 5316 5206 5273
+f 5316 5317 5318
+f 5317 5319 5320
+f 5320 5319 5321
+f 5322 5323 5321
+f 5317 5287 5324
+f 5325 1910 1907
+f 5325 1907 5326
+f 5325 5327 1912
+f 1912 1910 5325
+f 5328 5329 5326
+f 5329 5330 5331
+f 5331 5326 5329
+f 5153 5154 5330
+f 5327 5331 5330
+f 5330 5154 5332
+f 5327 5330 5332
+f 5332 5136 5327
+f 5327 5333 5334
+f 5334 5335 5327
+f 5335 1912 5327
+f 5336 5337 5334
+f 5327 5136 5338
+f 5333 5327 5338
+f 5338 5141 5333
+f 5333 5141 5143
+f 5336 5333 5143
+f 5143 5144 5336
+f 5153 5029 5037
+f 5337 5339 1972
+f 1981 1972 5339
+f 5336 5144 5176
+f 5208 5340 5341
+f 5342 1982 1983
+f 5343 5344 5345
+f 5345 5340 5343
+f 5342 5345 5346
+f 5346 5345 5344
+f 5209 5222 5347
+f 5209 5347 5343
+f 5222 5348 5347
+f 5349 4927 5350
+f 5351 5352 4974
+f 5353 5354 5351
+f 5355 5356 5357
+f 5357 5358 5355
+f 4982 4975 5352
+f 5359 5360 5355
+f 5360 5359 5361
+f 5362 5355 5360
+f 5363 5364 5361
+f 5362 5365 5366
+f 5362 5366 5356
+f 5360 5367 5365
+f 5368 5367 5360
+f 5360 5361 5368
+f 5361 5364 5368
+f 5369 5368 5370
+f 5370 5371 5369
+f 5095 5096 5372
+f 5102 5103 5373
+f 5373 5372 5102
+f 5350 4926 5113
+f 5113 5095 5372
+f 5374 5372 5375
+f 5376 5375 5372
+f 5375 5377 5374
+f 5376 5378 5377
+f 5376 5377 5375
+f 5373 5103 5115
+f 5374 5354 5353
+f 5379 5364 5363
+f 5380 5379 5363
+f 5363 5374 5380
+f 5374 5377 5380
+f 5380 5377 5378
+f 5380 5378 5381
+f 5368 5364 5379
+f 5381 5378 5382
+f 5380 5383 5379
+f 5381 5384 5383
+f 5383 5380 5381
+f 5368 5379 5383
+f 5385 5386 5387
+f 5387 5382 5388
+f 5389 5243 5237
+f 5390 5243 5389
+f 5296 5390 5391
+f 5392 5393 5394
+f 5395 5389 5392
+f 5396 5392 5394
+f 5396 5394 5397
+f 5396 5398 5399
+f 5399 5395 5396
+f 5400 5401 5402
+f 5403 5404 5405
+f 5405 5402 5403
+f 5406 5407 5408
+f 5409 5406 5408
+f 5408 5410 5409
+f 5404 5406 5409
+f 5411 5412 5413
+f 5413 5267 5411
+f 5412 5394 5393
+f 5393 5413 5412
+f 5414 5357 5415
+f 5415 5357 5356
+f 5414 5416 5394
+f 5394 5412 5414
+f 5414 5415 5417
+f 5401 5416 5414
+f 5401 5414 5417
+f 5418 5365 5419
+f 5418 5420 5402
+f 5402 5417 5418
+f 5420 5418 5421
+f 5421 5418 5422
+f 5295 5297 5423
+f 5424 5423 5425
+f 5426 5309 5427
+f 5426 5427 5428
+f 5427 5295 5429
+f 5428 5429 5424
+f 5430 5431 5425
+f 5431 5432 5424
+f 5424 5425 5431
+f 5433 5431 5430
+f 5433 5430 5410
+f 5432 5431 5433
+f 5434 5428 5424
+f 5434 5435 5436
+f 5436 5428 5434
+f 5434 5432 5437
+f 5438 5439 5440
+f 5441 5442 5443
+f 5444 5445 5311
+f 5446 5444 5447
+f 5440 5445 5446
+f 5447 5448 5446
+f 5441 5446 5448
+f 5449 5435 5434
+f 5449 5434 5450
+f 5450 5437 5451
+f 5407 5452 5453
+f 5453 5408 5407
+f 5454 5453 5452
+f 5455 5410 5408
+f 5455 5408 5453
+f 5456 5451 5455
+f 5456 5455 5453
+f 5456 5453 5454
+f 5457 5450 5451
+f 5457 5451 5456
+f 5457 5458 5449
+f 5449 5450 5457
+f 5449 5459 5447
+f 5460 5461 5448
+f 5448 5462 5460
+f 5463 5464 5465
+f 5464 5459 5449
+f 5465 5464 5458
+f 5465 5458 5466
+f 5461 5460 5463
+f 5467 5468 5461
+f 5461 5463 5467
+f 5469 5406 5470
+f 5471 5472 5473
+f 5472 5474 5470
+f 5422 5475 5476
+f 5476 5421 5422
+f 5477 5419 5367
+f 5477 5367 5369
+f 5478 5479 5472
+f 5475 5472 5471
+f 5471 5476 5475
+f 5472 5475 5478
+f 5480 5472 5479
+f 5477 5481 5475
+f 5482 5481 5477
+f 5477 5369 5482
+f 5369 5371 5483
+f 5369 5483 5482
+f 5484 5480 5479
+f 5485 5484 5479
+f 5485 5479 5478
+f 5478 5475 5481
+f 5478 5481 5485
+f 5481 5486 5485
+f 5487 5488 5489
+f 5489 5490 5491
+f 5492 5469 5493
+f 5494 5495 5496
+f 5496 5492 5494
+f 5492 5496 5497
+f 5498 5454 5497
+f 5497 5499 5498
+f 5499 5500 5501
+f 5502 5494 5493
+f 5490 5494 5502
+f 5503 5502 5470
+f 5503 5470 5474
+f 5491 5502 5503
+f 5495 5490 5488
+f 5504 5505 5506
+f 5507 5504 5501
+f 5505 5467 5506
+f 5468 5467 5505
+f 5507 5500 5487
+f 5508 5509 5510
+f 5510 5504 5508
+f 5511 5512 5509
+f 5511 5509 5508
+f 5513 5510 5509
+f 5514 5515 5513
+f 5512 5516 5517
+f 5517 5509 5512
+f 5518 5519 5520
+f 5520 5521 5518
+f 5522 5523 5519
+f 5524 5522 5525
+f 5524 5526 5527
+f 5528 5524 5525
+f 5528 5525 5529
+f 5530 5526 5524
+f 5531 5491 5503
+f 5522 5531 5503
+f 5532 5533 5522
+f 5533 5532 5534
+f 5534 5532 5535
+f 5536 5512 5511
+f 5511 5520 5537
+f 5538 5537 5539
+f 5537 5538 5536
+f 5538 5540 5536
+f 5512 5541 5516
+f 5541 5536 5540
+f 5541 5540 5542
+f 5543 5544 5545
+f 5546 5545 5547
+f 5546 5543 5545
+f 5530 5548 5547
+f 5546 5547 5548
+f 5542 5540 5549
+f 5550 5016 4916
+f 4916 4917 5550
+f 5550 5551 5552
+f 5116 5016 5550
+f 5553 5552 5551
+f 5551 4918 5553
+f 5553 4918 1148
+f 5554 5553 1148
+f 1148 2206 5554
+f 5555 5554 5556
+f 5557 5385 5388
+f 5557 5388 5558
+f 5558 5559 5557
+f 5557 5559 5555
+f 5555 5556 5560
+f 5555 5560 5561
+f 5561 5560 5562
+f 5563 5564 5565
+f 5566 5567 5565
+f 5568 5569 5570
+f 5571 5570 5569
+f 5569 5566 5571
+f 5572 5570 5573
+f 5570 5571 5574
+f 5575 5576 5577
+f 5578 5579 5580
+f 5580 5579 5581
+f 5582 5583 5584
+f 5584 5585 5582
+f 5583 5579 5578
+f 5581 5579 5582
+f 5578 5580 5586
+f 5586 5580 5587
+f 5583 5578 5588
+f 5577 5576 5580
+f 5589 5576 5590
+f 5589 5591 5587
+f 5589 5592 5591
+f 5593 5594 5595
+f 5596 5597 5598
+f 5599 5596 5598
+f 5600 5601 5598
+f 5571 5566 5602
+f 5571 5602 5603
+f 5604 5603 5602
+f 5605 5571 5603
+f 5606 5607 5603
+f 5574 5571 5605
+f 5608 5609 5606
+f 5606 5596 5608
+f 5610 5611 5608
+f 5608 5612 5610
+f 5613 5609 5611
+f 5611 5609 5608
+f 5614 5615 5616
+f 5616 5610 5614
+f 5617 5613 5618
+f 5610 5619 5611
+f 5619 5610 5616
+f 5613 5611 5619
+f 5615 5619 5616
+f 5599 5601 5620
+f 5621 5620 5601
+f 5601 5622 5621
+f 5612 5596 5599
+f 5612 5599 5610
+f 5623 5621 5624
+f 5625 5626 5605
+f 5627 5625 5613
+f 5626 5625 5627
+f 5607 5606 5609
+f 5613 5625 5609
+f 5628 5629 5630
+f 5622 5600 5593
+f 5600 5594 5593
+f 5631 5622 5593
+f 5632 5633 5634
+f 5635 5636 5637
+f 5638 5637 5639
+f 5637 5638 5635
+f 5640 5641 5642
+f 5584 5641 5482
+f 5643 5641 5640
+f 5644 5640 5642
+f 5645 5644 5642
+f 5642 5646 5645
+f 5647 5648 5643
+f 5643 5640 5647
+f 5649 5485 5486
+f 5649 5486 5650
+f 5484 5485 5649
+f 5651 5652 5650
+f 5651 5650 5648
+f 5648 5653 5651
+f 5652 5654 5655
+f 5643 5648 5650
+f 5643 5650 5486
+f 5656 5657 5647
+f 5658 5659 5657
+f 5660 5661 5662
+f 5645 5663 5664
+f 5664 5665 5645
+f 5647 5644 5666
+f 5563 5667 5668
+f 5669 5670 5671
+f 5653 5670 5654
+f 5654 5651 5653
+f 5658 5671 5653
+f 5653 5659 5658
+f 5670 5653 5671
+f 5636 5634 5655
+f 5636 5655 5672
+f 5655 5654 5672
+f 5672 5637 5636
+f 5673 5639 5637
+f 5669 5671 5673
+f 5674 5673 5660
+f 5674 5675 5639
+f 5639 5673 5674
+f 5658 5661 5671
+f 5676 5528 5677
+f 5534 5678 5529
+f 5679 5678 5534
+f 5534 5535 5679
+f 5679 5535 5632
+f 5678 5677 5529
+f 5679 5632 5680
+f 5681 5677 5678
+f 5681 5678 5682
+f 5683 5548 5530
+f 5683 5530 5676
+f 3991 5548 5683
+f 3993 5684 5685
+f 5686 5687 5688
+f 5689 5690 5635
+f 5687 5691 5689
+f 5692 5680 5635
+f 5693 5687 5689
+f 5694 5689 5695
+f 5694 5688 5693
+f 5693 5688 5687
+f 5696 5697 3998
+f 3998 3994 5698
+f 3998 5698 5696
+f 5699 5696 5698
+f 5700 5701 5697
+f 5697 5696 5700
+f 5686 5700 5696
+f 5696 5699 5686
+f 5701 4001 4000
+f 5702 5675 5703
+f 5703 5704 5702
+f 5704 5705 5706
+f 5706 5707 5702
+f 5704 5706 5702
+f 5705 5704 5708
+f 5709 5708 5704
+f 5709 5710 5711
+f 5712 5713 5714
+f 5715 5716 5667
+f 5715 5667 5717
+f 5718 5719 5715
+f 5718 5715 5717
+f 5703 5720 5721
+f 5722 5721 5720
+f 5722 5720 5660
+f 5719 5722 5715
+f 5723 5724 5725
+f 5568 5717 5667
+f 5717 5568 5572
+f 5726 5572 5727
+f 5720 5703 5674
+f 5674 5660 5720
+f 5675 5674 5703
+f 5721 5704 5703
+f 5723 5704 5721
+f 5710 5704 5723
+f 5725 5728 5729
+f 5729 5730 5725
+f 5731 5729 5728
+f 5730 5729 5732
+f 5733 5726 5727
+f 5733 5727 5734
+f 5725 5711 5710
+f 5735 5688 5736
+f 5735 5736 5737
+f 5738 5739 5688
+f 5736 5739 5738
+f 5736 5738 5705
+f 5739 5736 5688
+f 5740 5736 5705
+f 5708 5740 5705
+f 5740 5737 5736
+f 5700 5741 5701
+f 5701 5742 4001
+f 5742 5701 5741
+f 5743 5744 5745
+f 5740 5708 5746
+f 5747 5737 5740
+f 5747 5740 5748
+f 5746 5749 5748
+f 5743 5737 5750
+f 5743 5750 5744
+f 5750 5737 5747
+f 5751 5752 5628
+f 5751 5628 5753
+f 5614 5754 5615
+f 5617 5618 5755
+f 5618 5615 5756
+f 5756 5615 5754
+f 5757 5755 5618
+f 5756 5758 5757
+f 5758 5756 5759
+f 5756 5754 5759
+f 5757 5760 5755
+f 5623 5761 5754
+f 5623 5754 5614
+f 5623 5624 5762
+f 5762 5761 5623
+f 5759 5754 5761
+f 5763 5764 5759
+f 5765 5766 5763
+f 5767 5630 5617
+f 5767 5617 5755
+f 5767 5768 5630
+f 5769 5755 5760
+f 5768 5753 5628
+f 5628 5630 5768
+f 5769 5770 5771
+f 5770 5769 5764
+f 5769 5760 5764
+f 5764 5766 5772
+f 5772 5766 5773
+f 5772 5773 5774
+f 5775 5776 5777
+f 5777 5778 5779
+f 5772 5774 5780
+f 5780 5777 5772
+f 5777 5776 5772
+f 5631 5780 5774
+f 5631 5773 5765
+f 5781 5782 5712
+f 5712 5714 5781
+f 5781 5783 5782
+f 5784 5785 5786
+f 5785 5784 5787
+f 5788 5789 5751
+f 5751 5753 5788
+f 5790 5714 5791
+f 5792 5790 5791
+f 5793 5794 5790
+f 5795 5790 5794
+f 5796 5797 5798
+f 5793 5798 5797
+f 5794 5799 5795
+f 5800 5801 5802
+f 5802 5803 5804
+f 5802 5804 5805
+f 5805 5804 5806
+f 5805 5806 5807
+f 5803 5783 5795
+f 5808 5803 5809
+f 5808 5810 5806
+f 5806 5804 5808
+f 5809 5795 5799
+f 5809 5799 5811
+f 5809 5811 5808
+f 5788 5753 5778
+f 5778 5777 5812
+f 5788 5778 5812
+f 5812 5813 5788
+f 5814 5812 5777
+f 5777 5780 5814
+f 5815 5812 5816
+f 5814 5780 5631
+f 5817 5818 5819
+f 5820 5821 5557
+f 5821 5593 5557
+f 5212 5822 5823
+f 5824 5823 5822
+f 5825 5822 5215
+f 5825 5215 5826
+f 5825 5827 5824
+f 5824 5822 5825
+f 5828 5825 5826
+f 5825 5829 5827
+f 5823 5830 5223
+f 5223 5213 5823
+f 5224 5223 5830
+f 5224 5830 5831
+f 5832 5833 5827
+f 5833 5832 5831
+f 5831 5832 5834
+f 5226 5831 5834
+f 5834 5227 5226
+f 5835 5836 5837
+f 5838 5839 5840
+f 5838 5840 5841
+f 5838 5841 5842
+f 5843 5836 5839
+f 5844 5845 5846
+f 5847 5848 5849
+f 5848 5850 5851
+f 5852 5851 5850
+f 5844 5851 5845
+f 5850 5853 5852
+f 5836 5854 5855
+f 5855 5837 5836
+f 5854 5856 5857
+f 5857 5855 5854
+f 5858 5859 5856
+f 5854 5836 5843
+f 5860 5861 5862
+f 5863 5862 5861
+f 5864 5856 5863
+f 5863 5856 5862
+f 5865 5858 5856
+f 5865 5856 5864
+f 5866 5867 5868
+f 5869 5849 5859
+f 5870 5859 5849
+f 5869 5867 5847
+f 5847 5849 5869
+f 5858 5868 5869
+f 5869 5859 5858
+f 5868 5867 5869
+f 5871 5847 5867
+f 5872 5868 5858
+f 5872 5858 5865
+f 5873 5874 5875
+f 5873 5875 5872
+f 5872 5865 5873
+f 5876 5877 5878
+f 5878 5879 5876
+f 5880 5881 5882
+f 5883 5305 5304
+f 5302 5305 5883
+f 5884 5306 5302
+f 5885 5886 5887
+f 5883 5304 5313
+f 5888 5883 5889
+f 5890 5302 5883
+f 5890 5883 5888
+f 5888 5889 5881
+f 5891 5881 5880
+f 5891 5892 5890
+f 5884 5302 5890
+f 5892 5891 5893
+f 5894 5887 5895
+f 5894 5895 5896
+f 5897 5898 5887
+f 5892 5899 5896
+f 5896 5899 5894
+f 5900 5897 5894
+f 5894 5899 5900
+f 5901 5885 5898
+f 5901 5898 5897
+f 5902 5901 5897
+f 5902 5897 5903
+f 5904 5905 5901
+f 5904 5901 5902
+f 5906 5907 5908
+f 5908 5905 5904
+f 5909 5910 5911
+f 5910 5322 5324
+f 5910 5912 5913
+f 5910 5914 5912
+f 5913 5912 5915
+f 5916 5917 5915
+f 5918 5919 5916
+f 5916 5915 5918
+f 5920 5921 5922
+f 5922 5923 5920
+f 5921 5920 5917
+f 5923 5922 5842
+f 5917 5916 5921
+f 5916 5924 5921
+f 5925 5926 5927
+f 5924 5919 5928
+f 5929 5930 5931
+f 5931 5925 5927
+f 5932 5931 5927
+f 5927 5933 5932
+f 5921 5934 5935
+f 5935 5922 5921
+f 5936 5842 5922
+f 5922 5935 5936
+f 5842 5936 5838
+f 5937 5938 5936
+f 5838 5936 5938
+f 5939 5938 5937
+f 5939 5937 5940
+f 5921 5933 5934
+f 5909 5307 5941
+f 5942 5909 5943
+f 5914 5909 5942
+f 5943 5944 5942
+f 5945 5918 5946
+f 5918 5945 5919
+f 5947 5948 5949
+f 5947 5949 5885
+f 5947 5885 5901
+f 5950 5948 5951
+f 5950 5951 5952
+f 5953 5928 5945
+f 5919 5945 5928
+f 5952 5932 5953
+f 5953 5932 5928
+f 5953 5945 5954
+f 5954 5950 5953
+f 5953 5950 5952
+f 5955 5907 5929
+f 5932 5952 5931
+f 5905 5951 5947
+f 5947 5901 5905
+f 5956 5957 5958
+f 5959 5957 5956
+f 5960 5961 5956
+f 5956 5958 5960
+f 5962 5960 5907
+f 5961 5960 5962
+f 5963 5964 5965
+f 5966 5967 5961
+f 5956 5961 5967
+f 5956 5967 5968
+f 5969 5967 5966
+f 5970 5968 5967
+f 5970 5967 5969
+f 5971 5964 5966
+f 5972 5971 5966
+f 5966 5961 5972
+f 5964 5963 5973
+f 5969 5973 5970
+f 5974 5975 5976
+f 5962 5907 5906
+f 5971 5977 5978
+f 5978 5965 5971
+f 5963 5965 5979
+f 5980 5981 5978
+f 5980 5978 5977
+f 5980 5977 5975
+f 5977 5976 5975
+f 5982 5978 5981
+f 5981 5983 5982
+f 5972 5976 5971
+f 5984 5970 5973
+f 5985 5979 5982
+f 5986 5963 5979
+f 5986 5979 5985
+f 5983 5987 5985
+f 5985 5982 5983
+f 5987 5988 5986
+f 5986 5985 5987
+f 5988 5989 5990
+f 5986 5990 5984
+f 5984 5963 5986
+f 5990 5986 5988
+f 5991 5992 5993
+f 5925 5991 5993
+f 5993 5926 5925
+f 5929 5958 5957
+f 5957 5994 5929
+f 5994 5930 5929
+f 5925 5995 5991
+f 5996 5994 5957
+f 5996 5995 5994
+f 5997 5996 5959
+f 5997 5959 5968
+f 5998 5999 5997
+f 5999 5996 5997
+f 6000 5991 5995
+f 5992 5991 6000
+f 5999 6001 6000
+f 6000 5996 5999
+f 6002 5992 6000
+f 6003 6004 5993
+f 6003 5993 5992
+f 6005 6004 6003
+f 6006 5863 5861
+f 6006 5861 6007
+f 6007 5939 6008
+f 6008 6009 6007
+f 6006 6007 6009
+f 6009 6005 6006
+f 6006 6010 5864
+f 5865 5864 6010
+f 6011 6012 6013
+f 6013 6010 6011
+f 6003 6011 6005
+f 6014 5992 6002
+f 6015 5877 6016
+f 6017 6018 6001
+f 6001 5999 5998
+f 6017 6001 6019
+f 6017 6019 6020
+f 6021 6022 6023
+f 6015 6022 6021
+f 6021 6017 6024
+f 6017 6020 6024
+f 6025 6026 6015
+f 6015 6024 6025
+f 6021 6024 6015
+f 6027 6028 6029
+f 6030 6027 6029
+f 5873 5865 6013
+f 6013 6029 6028
+f 6013 6030 6029
+f 6031 5876 5874
+f 6031 5874 6028
+f 6031 6016 5877
+f 6016 6031 6032
+f 6033 6014 6002
+f 6033 6002 6018
+f 6030 6014 6033
+f 6033 6018 6023
+f 6033 6023 6027
+f 6030 6033 6027
+f 5960 5958 5929
+f 5960 5929 5907
+f 5970 6034 5997
+f 5997 6034 5998
+f 6035 5998 6034
+f 6034 5970 5984
+f 6036 6037 6035
+f 6036 6035 6034
+f 6035 6037 6019
+f 6037 6020 6019
+f 6024 6038 6025
+f 6038 6039 6025
+f 6040 6026 6025
+f 6025 6039 6040
+f 5984 5990 6041
+f 6041 6034 5984
+f 6034 6041 6036
+f 6038 6036 6042
+f 6036 6041 6042
+f 5989 6043 6042
+f 6044 6039 6042
+f 6044 6042 6043
+f 6045 6046 6039
+f 6044 6045 6039
+f 6047 3245 1982
+f 6047 1982 5342
+f 6048 6049 3245
+f 6048 3245 6047
+f 6050 6047 5342
+f 6050 5342 5346
+f 3253 6049 6048
+f 6051 6052 6053
+f 6054 6055 6051
+f 6055 6056 6057
+f 5227 5834 6058
+f 5840 6054 6059
+f 6060 6061 3277
+f 6062 6060 6053
+f 6062 6053 6052
+f 6062 6063 6061
+f 6061 6060 6062
+f 6064 3277 6061
+f 6061 6065 6064
+f 6063 6065 6061
+f 6057 6066 6052
+f 6062 6066 6067
+f 6067 6063 6062
+f 6056 5855 6066
+f 6066 6057 6056
+f 5857 6067 6066
+f 5855 5857 6066
+f 6063 6067 6068
+f 6069 6063 6068
+f 5857 5870 6068
+f 6068 6067 5857
+f 6069 6065 6063
+f 6069 3280 6065
+f 5844 5846 3280
+f 5848 5844 6069
+f 6069 5870 5848
+f 6056 5837 5855
+f 6070 6071 6072
+f 6073 6074 6075
+f 6075 6072 6073
+f 6076 6077 6070
+f 6078 6077 6076
+f 6079 6080 6081
+f 6076 6070 6075
+f 6082 6075 6074
+f 6082 6083 6084
+f 6085 6086 6083
+f 6087 6085 6083
+f 6088 6079 6089
+f 6088 6089 6085
+f 6090 6083 6091
+f 3342 5846 6092
+f 6093 5852 5853
+f 6094 6095 6096
+f 6094 6096 6097
+f 6098 6096 6095
+f 6099 6100 6101
+f 3347 6102 6103
+f 6104 3347 6103
+f 3348 3347 6104
+f 6105 6106 6107
+f 6108 6109 6104
+f 6110 6111 6112
+f 6113 6112 6114
+f 6114 6115 6099
+f 6112 6113 6116
+f 6071 6110 6112
+f 6117 6118 6119
+f 6120 6119 5877
+f 6120 6121 6122
+f 6122 6117 6120
+f 6123 6112 6116
+f 6123 6072 6071
+f 6124 6125 6126
+f 6127 6128 6129
+f 6130 6127 6129
+f 6129 6131 6122
+f 6132 6133 6094
+f 6134 6132 6135
+f 6132 6134 6133
+f 6094 6133 6095
+f 6133 6136 6098
+f 6136 6107 6098
+f 6133 6137 6136
+f 6135 6118 6134
+f 5877 6119 5878
+f 6138 6139 6140
+f 6140 6141 6142
+f 6111 6077 6143
+f 6144 6145 6099
+f 6144 6099 6101
+f 6080 6146 6147
+f 6148 6142 6149
+f 6150 6149 6126
+f 6150 6126 6125
+f 6125 6151 6150
+f 6105 6152 6106
+f 6106 6152 6104
+f 6104 6152 6108
+f 6105 6153 6152
+f 6108 6152 6153
+f 6154 6142 6148
+f 6155 6105 6156
+f 6156 6157 6155
+f 6158 3348 6109
+f 6109 6159 6158
+f 3297 3296 6158
+f 6160 6158 6159
+f 6159 6109 6108
+f 6160 6159 6161
+f 6161 6162 6160
+f 6163 6164 6165
+f 6164 6163 6166
+f 6160 6162 6166
+f 6162 6167 6166
+f 6108 6168 6159
+f 6161 6159 6168
+f 6168 6169 6161
+f 6162 6161 6169
+f 6170 6171 6169
+f 6172 6162 6171
+f 6169 6171 6162
+f 6173 6167 6174
+f 6172 6175 6167
+f 6175 6172 6176
+f 6177 6178 6174
+f 6179 6074 6073
+f 6179 6073 6180
+f 6179 6180 6181
+f 6182 6179 6181
+f 6183 6184 6091
+f 6183 6091 6185
+f 6186 6187 6185
+f 6183 6185 6187
+f 6188 6179 6182
+f 6189 6186 6188
+f 6190 6191 6189
+f 6189 6188 6190
+f 6182 6190 6188
+f 6192 6193 6194
+f 6195 6194 6191
+f 6192 6194 6195
+f 6189 6194 6187
+f 6187 6186 6189
+f 6187 6194 6193
+f 6196 6197 6190
+f 6198 6199 6200
+f 6201 6197 6196
+f 6198 6202 6201
+f 6203 6204 6205
+f 6206 6204 6207
+f 6201 6208 6197
+f 6209 6210 6211
+f 6210 6205 6212
+f 6212 6211 6210
+f 6213 6209 6208
+f 6213 6208 6214
+f 6208 6201 6215
+f 6205 6210 6203
+f 6203 6210 6213
+f 6216 6121 6120
+f 6120 6015 6216
+f 6180 6073 6217
+f 6180 6217 6218
+f 6218 6127 6219
+f 6130 6219 6127
+f 6015 6220 6216
+f 6221 6220 6015
+f 6221 6015 6026
+f 6222 6196 6181
+f 6223 6224 6225
+f 6225 6226 6223
+f 6224 6223 6148
+f 6227 6228 6229
+f 6230 6231 6224
+f 6227 6229 6230
+f 6230 6232 6233
+f 6230 6233 6227
+f 6225 6224 6231
+f 6231 6229 6234
+f 6225 6231 6234
+f 6226 6225 6234
+f 6234 6229 6228
+f 6234 6228 6235
+f 6234 6235 6236
+f 6148 6223 6154
+f 6223 6226 6237
+f 6223 6237 6154
+f 6157 6156 6237
+f 6157 6237 6238
+f 6239 6240 6157
+f 6239 6157 6238
+f 6238 6226 6236
+f 6236 6241 6238
+f 6238 6241 6239
+f 6046 6045 6242
+f 6232 6090 6243
+f 6192 6244 6245
+f 6245 6246 6247
+f 6248 6193 6247
+f 6249 6248 6247
+f 6249 6250 6251
+f 6246 6252 6249
+f 6249 6252 6253
+f 6249 6253 6250
+f 6246 6254 6252
+f 6206 6255 6256
+f 6257 6256 6255
+f 6258 6257 6259
+f 6245 6244 6260
+f 6261 6262 6245
+f 6261 6263 6262
+f 6264 6246 6262
+f 6265 6262 6263
+f 6264 6262 6265
+f 6254 6246 6264
+f 6265 6263 6258
+f 6266 6265 6267
+f 6267 6268 6266
+f 6265 6266 6269
+f 6270 6271 6269
+f 6272 6273 6274
+f 6275 6274 6273
+f 6276 6277 6253
+f 6239 6241 6278
+f 6279 6280 6176
+f 6235 6281 6278
+f 6281 6282 6283
+f 6278 6283 6284
+f 6279 6284 6283
+f 6279 6283 6285
+f 6286 6287 6285
+f 6280 6288 6289
+f 6289 6178 6177
+f 6288 6290 6178
+f 6178 6289 6288
+f 6291 6292 6293
+f 6291 6293 6287
+f 6294 6292 6291
+f 6292 6294 6288
+f 6276 6295 6296
+f 6296 6297 6286
+f 6298 6295 6271
+f 6298 6271 6270
+f 6299 6300 6297
+f 6296 6299 6297
+f 6301 6300 6299
+f 6296 6295 6298
+f 6298 6299 6296
+f 6298 6302 6299
+f 6303 6299 6302
+f 6302 6270 6274
+f 6275 6304 6305
+f 6305 6302 6274
+f 6305 6274 6275
+f 6303 6302 6305
+f 6291 6287 6297
+f 6297 6300 6291
+f 6294 6291 6300
+f 6306 6307 6308
+f 3279 5846 3342
+f 3347 3342 6102
+f 6309 5882 6310
+f 6311 6312 5880
+f 5880 6309 6311
+f 6311 6313 6312
+f 5442 6314 5443
+f 6315 6316 6317
+f 6318 6319 6315
+f 6315 5442 6318
+f 6318 5442 6320
+f 6315 6321 6316
+f 6321 6322 6316
+f 6316 6322 6323
+f 5880 6312 5893
+f 5893 6324 6325
+f 6326 6327 6323
+f 6326 6328 6327
+f 6329 6330 6327
+f 6328 6331 6327
+f 6332 6333 6331
+f 6332 6331 6328
+f 6329 6334 6335
+f 6336 6337 6335
+f 6334 6333 6338
+f 6338 6335 6334
+f 6339 6336 6335
+f 6339 6335 6338
+f 6313 6340 6341
+f 6342 5902 5903
+f 6343 5902 6342
+f 5902 6343 5904
+f 6344 6345 6342
+f 6342 6345 6346
+f 6347 6348 5904
+f 6343 6347 5904
+f 6349 6350 6347
+f 6348 6347 6350
+f 6346 6351 6343
+f 6343 6342 6346
+f 6340 6352 6353
+f 6339 6354 6352
+f 6352 6336 6339
+f 6354 6355 6353
+f 6356 6319 6318
+f 5461 6357 6318
+f 6358 6356 6318
+f 6359 6358 6360
+f 6358 6318 6357
+f 6357 5461 5468
+f 6360 6357 6361
+f 6362 6363 6364
+f 6364 6365 6362
+f 6363 4014 6366
+f 6363 6362 6367
+f 6367 6362 6359
+f 6363 4015 4014
+f 6326 6323 6368
+f 6326 6368 6369
+f 6370 6371 6332
+f 6332 6328 6370
+f 6372 6370 6369
+f 6372 6369 6373
+f 6371 6370 6372
+f 6374 6375 6376
+f 6376 4014 6374
+f 6377 6378 6376
+f 6377 6376 6375
+f 6372 6373 6378
+f 6377 6379 6378
+f 6378 6379 6372
+f 6372 6379 6380
+f 6372 6380 6371
+f 6381 6382 6383
+f 6384 5983 5981
+f 6384 5981 6385
+f 6385 6381 6386
+f 6386 6387 6385
+f 6332 6388 6389
+f 6389 6333 6332
+f 6388 6390 6391
+f 6391 6389 6388
+f 6339 6338 6392
+f 6393 6391 6390
+f 6394 6395 6391
+f 6394 6396 6387
+f 6387 6395 6394
+f 6397 6387 6396
+f 6394 6391 6393
+f 6394 6398 6396
+f 6398 6394 6393
+f 6399 6400 6401
+f 6402 6400 6399
+f 6350 6402 6403
+f 6402 6350 6349
+f 6403 6402 5974
+f 6404 6405 6406
+f 6407 6406 6408
+f 6409 5988 6410
+f 6404 6410 6405
+f 6404 6411 6409
+f 6409 6412 6413
+f 6413 6043 5989
+f 5988 6413 5989
+f 6413 5988 6409
+f 6412 6409 6411
+f 6414 6044 6043
+f 6414 6043 6413
+f 6415 6045 6044
+f 6415 6044 6414
+f 6412 6416 6414
+f 6414 6413 6412
+f 6416 6417 6415
+f 6415 6414 6416
+f 6406 6418 6419
+f 6404 6419 6411
+f 6419 6404 6406
+f 6418 6420 6419
+f 6421 6422 6420
+f 6421 6420 6423
+f 6411 6420 6416
+f 6371 6424 6388
+f 6388 6332 6371
+f 6388 6424 6425
+f 6425 6390 6388
+f 6426 6427 6425
+f 6425 6424 6426
+f 6428 6393 6390
+f 6425 6428 6390
+f 6429 6425 6427
+f 6425 6429 6428
+f 6430 6429 6431
+f 6429 6430 6432
+f 6432 6428 6429
+f 6398 6393 6432
+f 6433 6426 6371
+f 6433 6434 6427
+f 6427 6426 6433
+f 6371 6380 6433
+f 6433 6435 6434
+f 6434 6436 6431
+f 6431 6427 6434
+f 4003 6430 6431
+f 4003 6431 6436
+f 6436 6434 6435
+f 6437 6408 6398
+f 6437 6398 6432
+f 6437 6438 6407
+f 6407 6408 6437
+f 6432 6439 6437
+f 6439 6440 6437
+f 6441 6430 4003
+f 6430 6441 6439
+f 6441 6442 6443
+f 6441 6443 6439
+f 6439 6443 6440
+f 6444 6443 6442
+f 6444 6442 6445
+f 6446 6447 6444
+f 6444 6445 6446
+f 6442 4008 4010
+f 6442 4010 6445
+f 6446 6445 4010
+f 6448 6449 6423
+f 6423 6418 6450
+f 6423 6450 6448
+f 6451 6421 6423
+f 6451 6423 6449
+f 6438 6452 6449
+f 6438 6449 6448
+f 6453 6451 6449
+f 6449 6452 6453
+f 6361 5468 5515
+f 6454 4015 6367
+f 4012 4015 6454
+f 6454 6367 6360
+f 6454 6360 6455
+f 4018 4012 6454
+f 5514 6456 6457
+f 6458 6455 6457
+f 6458 6457 6456
+f 6459 6456 5514
+f 6459 5514 6460
+f 6459 6461 6458
+f 6458 6456 6459
+f 6454 6455 6458
+f 6462 6458 6461
+f 6463 6464 6380
+f 6465 6463 6466
+f 6465 6466 4023
+f 6465 4046 6464
+f 6467 6468 6469
+f 6470 6468 6459
+f 6468 6467 6461
+f 6461 6459 6468
+f 4030 6471 6472
+f 4030 6472 6473
+f 4030 4019 6471
+f 6469 5542 5549
+f 6464 6474 6433
+f 6474 6475 6435
+f 4045 6475 6474
+f 6475 4042 4004
+f 4004 6435 6475
+f 6475 4043 4042
+f 6476 6477 6478
+f 6477 6476 6479
+f 6480 6478 6477
+f 6477 6481 6480
+f 6482 6483 6417
+f 6484 6483 6482
+f 6483 6485 6415
+f 6485 6045 6415
+f 6483 6484 6486
+f 6483 6486 6485
+f 6487 6488 6484
+f 6489 6490 6488
+f 6489 6488 6487
+f 6487 6491 6489
+f 6486 6484 6488
+f 6417 6492 6482
+f 6492 6417 6422
+f 6476 6492 6421
+f 6422 6421 6492
+f 6493 6476 6478
+f 6494 6495 6496
+f 6497 6498 6499
+f 6500 6496 6501
+f 6500 6501 6502
+f 6503 6496 6500
+f 6497 6504 6500
+f 6503 6500 6504
+f 6489 6505 6214
+f 6207 6213 6506
+f 6480 6507 6508
+f 6508 6491 6480
+f 6507 6502 6501
+f 6501 6508 6507
+f 6480 6498 6507
+f 6509 6510 6511
+f 6510 6479 6512
+f 6513 6512 6479
+f 6479 6476 6513
+f 6512 6511 6510
+f 6510 6514 6515
+f 4090 6516 6509
+f 6509 6516 6514
+f 6479 6510 6515
+f 6477 6515 6481
+f 6446 4011 4093
+f 6509 4093 4090
+f 6476 6421 6451
+f 6517 6518 6519
+f 6481 6518 6517
+f 6519 4098 4100
+f 6519 4100 6517
+f 4100 6520 6517
+f 6499 6481 6517
+f 6521 6497 6499
+f 6522 6523 6524
+f 6520 6525 6524
+f 6504 6497 6521
+f 6521 6520 6524
+f 6521 6524 6504
+f 6504 6524 6523
+f 4100 4104 6525
+f 6526 6525 4104
+f 6526 4104 4105
+f 6527 6528 6529
+f 6530 6531 6527
+f 6527 6494 6530
+f 6206 6494 6255
+f 6255 6529 6257
+f 6532 6529 6528
+f 6533 6534 6532
+f 6531 6530 6503
+f 6535 4110 6536
+f 6536 6537 6533
+f 6536 6533 6538
+f 4111 6535 6539
+f 6540 6259 6541
+f 6542 6541 6534
+f 6543 6542 6534
+f 6540 6542 6543
+f 6544 6545 6546
+f 6547 6536 4110
+f 4110 4114 6547
+f 6543 6534 6548
+f 6549 6550 6548
+f 6549 6547 4113
+f 6551 6545 6552
+f 6268 6553 6273
+f 6553 6554 6555
+f 6555 6273 6553
+f 6545 6554 6553
+f 6275 6273 6555
+f 6522 6556 6557
+f 6557 6523 6522
+f 4118 6557 6556
+f 6558 6556 6559
+f 6522 6559 6556
+f 6558 4116 4118
+f 4118 6556 6558
+f 4105 4120 6558
+f 6558 6526 4105
+f 6558 4120 4116
+f 6164 6560 6165
+f 6560 6561 6562
+f 6563 6561 6564
+f 6565 6564 6173
+f 6563 6564 6565
+f 3671 6561 6563
+f 6566 6567 6568
+f 6569 6567 6566
+f 6565 6173 6174
+f 6570 6571 6572
+f 6178 6573 6570
+f 6571 6570 6573
+f 6573 6574 6571
+f 6571 6575 6568
+f 6568 6576 6566
+f 6575 6571 6574
+f 6575 6577 6576
+f 6578 6569 6566
+f 6566 6579 6578
+f 6576 6579 6566
+f 6579 6580 3690
+f 3690 6578 6579
+f 6581 3690 6580
+f 6582 6583 6584
+f 6585 6586 6582
+f 6587 6588 6582
+f 6584 6581 6580
+f 6589 6587 6584
+f 6589 6580 6590
+f 6591 6592 6593
+f 6592 6594 6593
+f 6595 6573 6290
+f 6178 6290 6573
+f 6574 6573 6595
+f 6596 6595 6290
+f 6306 6597 6595
+f 6595 6596 6306
+f 6577 6575 6598
+f 6577 6599 6600
+f 6598 6601 6602
+f 6598 6603 6577
+f 6604 6598 6605
+f 6606 6607 6608
+f 6606 6608 6303
+f 6606 6609 6607
+f 6609 6610 6611
+f 6612 6305 6304
+f 6606 6303 6305
+f 6606 6305 6613
+f 6606 6613 6609
+f 6597 6306 6608
+f 6607 6611 6597
+f 6608 6607 6597
+f 6597 6611 6602
+f 6602 6611 6614
+f 6615 6605 6614
+f 6616 6617 6615
+f 6618 6604 6605
+f 6618 6619 6604
+f 6618 6615 6617
+f 6616 6620 6617
+f 6621 6622 6620
+f 6621 6620 6623
+f 6620 6622 6617
+f 6602 6614 6605
+f 6624 6625 6626
+f 6626 6627 6624
+f 6628 6599 6629
+f 6629 6630 6628
+f 6629 6577 6603
+f 6603 6604 6631
+f 6603 6631 6629
+f 6632 6633 6630
+f 6633 6634 6628
+f 6633 6628 6630
+f 6635 6631 6636
+f 6622 6637 6636
+f 6619 6622 6636
+f 6638 6636 6637
+f 6636 6638 6635
+f 6639 6631 6635
+f 6635 6640 6639
+f 6640 6641 6639
+f 6621 6642 6643
+f 6644 6622 6621
+f 6622 6644 6637
+f 6645 6637 6644
+f 6627 6646 6647
+f 6647 6643 6642
+f 6644 6643 6647
+f 6647 6624 6627
+f 6639 6648 6632
+f 6648 6649 6632
+f 6650 6651 6641
+f 6648 6639 6641
+f 6641 6651 6648
+f 6652 6651 6650
+f 6649 6648 6651
+f 6651 6652 6649
+f 6649 6653 6654
+f 6654 6632 6649
+f 6653 6655 6654
+f 6652 6656 6653
+f 6657 6646 6627
+f 6658 6659 6657
+f 6650 6659 6658
+f 6650 6658 6652
+f 6660 6661 6662
+f 6663 6656 6664
+f 6658 6662 6664
+f 6588 6585 6582
+f 6588 6665 6585
+f 3745 6585 6665
+f 3746 3745 6665
+f 6666 3746 6665
+f 6667 6668 6588
+f 6665 6588 6668
+f 6668 6669 6666
+f 6666 6665 6668
+f 6669 6668 6670
+f 6666 6671 6672
+f 6673 6671 6666
+f 6673 6666 6669
+f 6674 6675 6594
+f 6676 6677 6678
+f 6593 6670 6667
+f 6670 6593 6594
+f 6678 6679 6680
+f 6680 6681 6682
+f 6681 6680 6679
+f 6679 6678 6677
+f 6677 6683 6684
+f 3767 3766 6685
+f 6685 6686 3767
+f 6682 6687 6685
+f 6685 6673 6682
+f 3765 3750 6671
+f 6686 3768 3767
+f 3768 6688 3771
+f 6686 6688 3768
+f 6686 6689 6688
+f 6690 6688 6689
+f 6691 6688 6690
+f 6692 6681 6684
+f 6692 6689 6687
+f 6693 6694 6690
+f 6695 6696 6694
+f 6694 6693 6695
+f 6696 6697 6694
+f 6698 6694 6697
+f 6675 6674 6699
+f 6699 6700 6675
+f 6675 6700 6676
+f 6654 6701 6699
+f 6701 6654 6655
+f 6701 6655 6702
+f 6702 6703 6701
+f 6703 6704 6705
+f 6706 6707 6703
+f 6707 6708 6704
+f 6704 6703 6707
+f 6709 6710 6711
+f 6705 6710 6709
+f 6710 6712 6711
+f 6710 6705 6704
+f 6704 6713 6710
+f 6713 6704 6708
+f 6712 6710 6713
+f 6714 6715 6696
+f 6697 6716 6717
+f 6718 6716 6719
+f 6720 6721 6722
+f 6723 6720 6722
+f 6724 6718 6719
+f 6725 6718 6724
+f 6726 6725 6724
+f 6723 6727 6728
+f 6728 6720 6723
+f 6729 6730 4130
+f 6731 6550 6730
+f 6731 6730 6729
+f 6550 6732 6552
+f 6551 6552 6732
+f 6550 6731 6732
+f 6554 6733 6734
+f 6734 6555 6554
+f 6735 6736 6737
+f 6738 6737 6739
+f 6738 6739 6733
+f 4130 6740 6729
+f 6731 6729 6741
+f 6740 4129 4131
+f 6742 6743 6741
+f 6741 6740 6742
+f 6744 6745 6741
+f 6744 6741 6743
+f 6745 6746 6732
+f 6746 6747 6732
+f 6745 6744 6746
+f 6748 6747 6746
+f 6744 6748 6746
+f 6742 6749 6743
+f 6749 6744 6743
+f 6742 4131 4241
+f 6750 6749 6751
+f 6748 6752 6733
+f 6753 6754 6755
+f 6755 6752 6753
+f 6756 6733 6752
+f 6752 6755 6756
+f 6756 6755 6757
+f 6756 6757 6758
+f 6304 6734 6612
+f 6759 6612 6734
+f 6734 6739 6759
+f 6623 6759 6739
+f 6739 6737 6623
+f 6621 6623 6737
+f 6737 6736 6621
+f 6760 6642 6736
+f 6760 6736 6735
+f 6761 6762 6763
+f 6760 6762 6764
+f 6765 6625 6624
+f 6765 6624 6766
+f 6765 6767 6768
+f 6768 6625 6765
+f 6767 6765 6769
+f 6770 6771 6767
+f 6770 6767 6772
+f 6773 6764 6761
+f 6769 6766 6764
+f 6764 6773 6769
+f 6773 6774 6775
+f 6775 6770 6772
+f 6775 6772 6773
+f 6772 6769 6773
+f 6776 6777 6778
+f 6779 6780 6776
+f 6781 6778 6782
+f 6758 6757 6783
+f 6783 6777 6763
+f 6783 6763 6758
+f 6763 6777 6776
+f 6776 6780 6761
+f 6784 6780 6779
+f 6779 6785 6784
+f 6786 6787 6774
+f 6647 6642 6624
+f 6625 6768 6661
+f 6661 6768 6788
+f 6661 6788 6789
+f 6662 6661 6789
+f 6662 6790 6791
+f 6792 6793 6794
+f 6794 6795 6792
+f 6754 6753 6796
+f 6796 6797 6754
+f 6798 6799 6797
+f 6798 6797 6800
+f 6799 6754 6797
+f 6754 6799 6801
+f 6800 6802 6803
+f 6804 6800 4251
+f 6792 4243 6793
+f 6793 4243 4246
+f 6803 4246 4251
+f 4251 4253 6804
+f 6805 6806 6807
+f 6806 6808 6809
+f 6810 6806 6811
+f 6805 6811 6806
+f 6810 4263 6812
+f 6812 6806 6810
+f 6804 6813 6814
+f 4259 4263 6810
+f 6813 4260 4259
+f 6815 6816 6817
+f 6817 6808 6812
+f 6812 4263 4262
+f 6812 4262 4261
+f 6817 6818 6815
+f 6809 6816 6819
+f 6785 6819 6816
+f 6785 6816 6815
+f 6815 6820 6785
+f 6821 6785 6820
+f 6822 6818 6823
+f 6824 6815 6818
+f 6818 6822 6825
+f 6823 6826 6822
+f 6822 6827 6825
+f 6827 6822 6826
+f 6828 6820 6815
+f 6828 6815 6824
+f 6829 6821 6820
+f 6829 6820 6828
+f 6827 6826 6830
+f 6830 6831 6832
+f 6833 6834 6835
+f 6832 6833 6835
+f 6835 6827 6832
+f 6829 6836 6837
+f 6837 6821 6829
+f 6836 6829 6834
+f 6838 6804 4253
+f 4253 6839 6838
+f 6838 6839 4260
+f 6831 6840 6833
+f 6833 6840 6841
+f 6771 6842 6843
+f 6844 6788 6771
+f 6845 6843 6842
+f 6846 6842 6847
+f 6848 6845 6849
+f 6846 6850 6848
+f 6848 6849 6846
+f 6850 6846 6851
+f 6775 6852 6847
+f 6853 6847 6852
+f 6854 6855 6850
+f 6854 6850 6851
+f 6851 6856 6854
+f 6854 6857 6858
+f 6858 6855 6854
+f 6857 6854 6856
+f 6857 6859 6860
+f 6852 6774 6787
+f 6861 6853 6862
+f 6863 6864 6861
+f 6861 6865 6863
+f 6866 6867 6837
+f 6868 6867 6866
+f 6869 6861 6862
+f 6869 6862 6868
+f 6870 6871 6869
+f 6872 6873 6856
+f 6863 6872 6856
+f 6872 6863 6865
+f 6874 6875 6876
+f 6877 6878 6879
+f 6880 6876 6875
+f 6881 6875 6882
+f 6882 6883 6879
+f 6883 6884 6877
+f 6883 6877 6879
+f 6885 6876 6886
+f 6887 6888 6885
+f 6886 6876 6865
+f 6886 6865 6871
+f 6887 6886 6871
+f 6887 6871 6870
+f 6888 6887 6870
+f 6889 6890 6891
+f 6889 6891 6874
+f 6888 6892 6889
+f 6844 6843 6893
+f 6893 6789 6844
+f 6894 6895 6896
+f 6896 6893 6894
+f 6897 6791 6790
+f 6790 6896 6897
+f 6706 6897 6896
+f 6896 6895 6706
+f 6894 6845 6848
+f 6898 6899 6900
+f 6898 6900 6901
+f 6902 6707 6706
+f 6903 6708 6707
+f 6895 6900 6902
+f 6903 6904 6708
+f 6899 6905 6904
+f 6904 6903 6899
+f 6906 6907 6908
+f 6908 6909 6906
+f 6906 6904 6910
+f 6911 6905 6912
+f 6860 6913 6912
+f 6914 6915 6916
+f 6911 6915 6906
+f 6915 6914 6917
+f 6860 6918 6919
+f 6860 6919 6913
+f 6913 6919 6916
+f 6920 6916 6919
+f 6877 6884 6921
+f 6921 6919 6877
+f 6922 6882 6891
+f 6722 6908 6907
+f 6907 6923 6722
+f 6723 6722 6923
+f 6917 6924 6907
+f 6923 6907 6924
+f 6917 6914 6925
+f 6926 6923 6927
+f 6926 6928 6727
+f 6926 6929 6928
+f 6929 6930 6931
+f 6931 6928 6929
+f 6930 6932 6931
+f 6920 6933 6925
+f 6934 6933 6920
+f 6934 6920 6921
+f 6934 6935 6936
+f 6936 6933 6934
+f 6927 6925 6936
+f 6937 6927 6936
+f 6937 6936 6935
+f 6938 6921 6884
+f 6939 6938 6884
+f 6938 6940 6934
+f 6941 6935 6934
+f 6942 6943 6938
+f 6944 6940 6938
+f 6944 6938 6943
+f 6945 6946 6947
+f 6948 6949 6950
+f 6951 6932 6930
+f 6948 6951 6930
+f 6952 6831 6830
+f 6836 6953 6866
+f 6954 6866 6953
+f 6955 6954 6956
+f 6957 6953 6836
+f 6957 6836 6841
+f 6958 6956 6959
+f 6960 6961 6962
+f 6963 6964 6965
+f 6960 6966 6964
+f 6964 6963 6960
+f 6962 6961 6967
+f 6968 6831 6952
+f 4303 6969 6952
+f 6970 6968 6952
+f 6968 6971 6840
+f 6971 6968 6970
+f 4302 6969 4303
+f 6972 6973 6974
+f 6974 6975 6972
+f 6976 6945 6944
+f 6977 6978 6946
+f 6979 6980 6976
+f 6981 6977 6976
+f 6981 6976 6980
+f 6982 6948 6950
+f 6978 6982 6950
+f 6982 6983 6951
+f 6951 6948 6982
+f 6984 6985 6986
+f 6986 6982 6978
+f 6986 6978 6984
+f 6983 6982 6986
+f 6986 6985 6983
+f 6987 6988 6983
+f 6987 6983 6985
+f 6989 6990 6984
+f 6984 6981 6989
+f 6991 6974 6992
+f 6974 6993 6989
+f 6989 6992 6974
+f 6993 6974 6973
+f 6989 6994 6995
+f 6994 6989 6993
+f 4400 4001 5742
+f 6996 6997 4406
+f 4406 5742 5745
+f 4406 5745 6996
+f 4409 4406 6997
+f 6998 6997 6996
+f 6996 5744 5750
+f 6996 5750 6998
+f 6997 6998 4409
+f 6999 7000 6998
+f 5807 6999 6998
+f 6998 5750 5807
+f 6998 7001 7002
+f 6998 7002 7003
+f 4421 4409 7003
+f 7001 7000 7004
+f 7004 7000 7005
+f 7006 4452 4451
+f 7007 4457 4423
+f 7008 7003 7002
+f 7009 4457 7007
+f 7002 7001 7010
+f 7008 7002 7010
+f 7011 7012 7010
+f 7011 7010 7001
+f 7013 4460 4459
+f 7013 4459 7009
+f 7013 7009 7014
+f 7014 7015 7013
+f 7015 7014 7016
+f 7015 7016 7017
+f 7015 7018 7019
+f 7018 7015 7017
+f 7012 7020 7017
+f 7017 7016 7012
+f 7006 7021 7022
+f 4525 4524 7023
+f 7021 7006 7019
+f 7024 7021 7019
+f 7024 7019 7018
+f 7025 7026 4527
+f 7027 7023 7028
+f 4527 7029 7025
+f 7030 4534 4527
+f 7031 4534 7030
+f 7031 7032 4538
+f 4538 4535 7031
+f 4540 4538 7032
+f 7033 7034 7031
+f 7033 7031 7030
+f 7026 7033 7030
+f 7032 7031 7034
+f 7035 7032 7034
+f 7034 7036 7035
+f 4540 7032 7035
+f 7035 4541 4540
+f 5807 5806 6999
+f 5810 7037 7038
+f 7038 7005 6999
+f 7038 6999 5806
+f 7039 7038 7037
+f 7040 7005 7038
+f 7041 7042 7038
+f 7041 7038 7039
+f 7039 7037 5818
+f 7039 7043 7041
+f 7044 7020 7012
+f 7012 7011 7044
+f 7042 7045 7046
+f 7047 7045 7041
+f 7047 7041 7043
+f 7043 5818 5817
+f 5817 7048 7049
+f 7050 7051 7046
+f 7049 7052 7053
+f 7050 7054 7051
+f 4551 4554 7055
+f 7024 7056 7057
+f 7056 7020 7058
+f 7058 7057 7056
+f 7024 7055 4554
+f 7024 4554 7028
+f 7055 4559 4551
+f 4559 7055 7059
+f 7060 7061 7059
+f 7062 7063 7058
+f 7028 4573 7029
+f 7060 7063 7064
+f 7060 7064 7065
+f 7066 7025 7029
+f 7026 7025 7066
+f 7067 7061 7068
+f 7069 7067 7068
+f 4575 7069 7068
+f 7067 4587 4560
+f 7069 4587 7067
+f 7070 7071 7062
+f 7062 7044 7046
+f 7071 7072 7033
+f 7033 7073 7071
+f 7074 7075 7076
+f 7076 7077 7078
+f 7074 7076 7078
+f 7078 7052 7079
+f 7052 7049 7079
+f 7078 7079 7074
+f 7080 7081 7082
+f 7082 4733 4656
+f 7082 4656 7083
+f 7084 7085 7081
+f 7086 7087 7088
+f 7086 7088 4663
+f 7086 4663 4668
+f 7089 7087 7086
+f 7083 7088 7087
+f 7084 7080 7087
+f 7089 7090 7091
+f 7089 7091 7084
+f 7092 4541 7035
+f 7035 7093 7092
+f 7093 7035 7036
+f 7094 4696 7095
+f 4696 7094 7096
+f 7097 7096 7094
+f 7098 7099 7097
+f 7100 7098 7097
+f 7097 7101 7100
+f 7086 4668 4708
+f 7089 7086 7102
+f 7086 7103 7102
+f 4714 7104 7105
+f 7105 7106 4714
+f 7104 7107 7102
+f 7102 7105 7104
+f 7102 7107 7108
+f 7109 7104 4714
+f 4714 7110 7109
+f 7098 7111 7112
+f 7112 7113 7107
+f 7112 7107 7114
+f 7115 7116 7090
+f 7115 7090 7113
+f 7112 7117 7115
+f 7115 7113 7112
+f 7117 7112 7118
+f 7119 7120 7121
+f 7122 7121 7120
+f 7123 7082 7124
+f 7123 4734 4733
+f 4737 4734 7123
+f 7125 7126 7081
+f 7125 7127 7128
+f 7125 7128 7129
+f 7091 7127 7125
+f 7129 7128 6972
+f 7091 7130 7127
+f 6973 6972 7128
+f 7131 7128 7127
+f 7127 7130 7116
+f 6993 6973 7131
+f 7132 7133 7134
+f 7135 7136 7137
+f 7135 7137 7134
+f 7134 7133 7135
+f 7138 7139 7140
+f 7138 7140 7141
+f 7132 7141 7133
+f 7142 7133 7141
+f 7142 7141 7140
+f 7143 7144 7136
+f 7145 7142 7140
+f 7145 7140 7139
+f 7146 7142 7145
+f 7145 7147 7146
+f 7148 7149 7150
+f 7148 7150 7151
+f 7148 7152 7138
+f 7138 7149 7148
+f 7153 7117 7154
+f 7153 7155 7156
+f 7153 7156 7157
+f 7158 7117 7153
+f 7159 7156 7155
+f 7156 7160 7148
+f 7156 7148 7151
+f 7160 7156 7159
+f 7148 7160 7161
+f 7148 7161 7162
+f 7139 7163 7164
+f 7165 7166 7167
+f 7168 7163 7152
+f 7168 7169 7164
+f 7164 7163 7168
+f 7166 7170 7168
+f 7168 7167 7166
+f 7168 7171 7172
+f 7171 7168 7170
+f 7173 7172 7171
+f 7100 7174 7175
+f 7100 7175 7176
+f 7175 7177 7178
+f 7178 7176 7175
+f 7179 7180 7181
+f 7182 7183 7179
+f 7182 7179 7181
+f 7181 7180 7184
+f 7185 7182 7181
+f 7111 7180 7179
+f 7179 7118 7111
+f 7183 7118 7179
+f 7118 7183 7154
+f 7186 7187 7188
+f 7186 7188 7177
+f 7184 7189 7190
+f 7191 7192 7193
+f 7189 7193 7194
+f 7194 7190 7189
+f 7193 7189 7191
+f 7195 7196 7197
+f 7192 7191 7198
+f 7177 7199 7189
+f 7200 7199 7177
+f 7177 7188 7200
+f 7201 7200 7188
+f 7188 7187 7201
+f 7191 7189 7199
+f 7202 7203 7204
+f 7202 7204 7205
+f 7186 7206 7207
+f 7208 7187 7186
+f 7209 7077 7210
+f 7211 7205 7204
+f 7209 7204 7201
+f 7201 7187 7209
+f 7204 7209 7211
+f 7212 7211 7209
+f 7209 7210 7212
+f 7213 7183 7182
+f 7214 7182 7185
+f 7215 7216 7194
+f 7215 7217 7218
+f 7219 7153 7154
+f 7220 7221 7222
+f 7219 7223 7224
+f 7224 7225 7219
+f 7223 7219 7213
+f 7225 7224 7221
+f 7159 7222 7160
+f 7226 7224 7223
+f 7227 7224 7226
+f 7228 7162 7229
+f 7227 7230 7231
+f 7232 7230 7227
+f 7232 7233 7234
+f 7232 7234 7228
+f 7235 7236 7237
+f 7213 7238 7235
+f 7238 7239 7235
+f 7239 7240 7235
+f 7240 7239 7241
+f 7226 7237 7236
+f 7226 7242 7227
+f 7242 7226 7243
+f 7243 7244 7245
+f 7245 7246 7247
+f 7247 7248 7249
+f 7249 7243 7247
+f 7246 7250 7247
+f 7247 7250 7248
+f 7249 7251 7252
+f 7252 7232 7249
+f 7232 7242 7249
+f 7232 7252 7233
+f 7251 7249 7248
+f 7248 7253 7251
+f 7254 7255 7256
+f 7256 7255 7257
+f 7258 7256 7257
+f 7256 7258 7259
+f 7251 7260 7261
+f 7252 7261 7262
+f 7261 7252 7251
+f 7253 7260 7251
+f 7258 7257 7263
+f 7264 7258 7263
+f 7263 7265 7266
+f 7266 7264 7263
+f 7267 7268 7266
+f 7267 7266 7265
+f 7259 7269 7270
+f 7271 7270 7272
+f 7273 7270 7269
+f 7274 7275 7276
+f 7276 7277 7278
+f 7278 7279 7276
+f 7280 7281 7282
+f 7281 7280 7283
+f 7215 7194 7193
+f 7241 7217 7284
+f 7285 7284 7286
+f 7286 7287 7285
+f 7288 7289 7284
+f 7193 7290 7282
+f 7291 7292 7193
+f 7290 7193 7192
+f 7293 7291 7282
+f 7293 7282 7281
+f 7285 7292 7291
+f 7291 7293 7294
+f 7291 7294 7285
+f 7295 7296 7281
+f 7295 7297 7296
+f 7285 7294 7288
+f 7288 7298 7289
+f 7299 7300 7301
+f 7300 7302 7301
+f 4744 7303 7304
+f 7305 7304 7299
+f 7306 7304 7303
+f 7299 7306 7307
+f 7299 7307 7300
+f 7302 7300 7308
+f 7309 7297 7310
+f 7311 7312 7310
+f 7310 7313 7311
+f 7314 7309 7310
+f 7314 7310 7312
+f 7315 7309 7298
+f 7316 7317 7318
+f 7318 7319 7316
+f 7319 7320 7316
+f 7321 4759 4768
+f 7321 7322 7323
+f 7324 7321 7323
+f 7325 4758 4759
+f 4759 7321 7325
+f 7326 7325 7321
+f 7321 7324 7326
+f 7324 7323 7290
+f 7324 7290 7196
+f 7327 4758 7325
+f 7328 7327 7325
+f 7325 7326 7328
+f 7192 7196 7290
+f 7329 7330 7331
+f 7332 7320 7319
+f 7241 7333 7334
+f 7333 7241 7284
+f 7284 7289 7333
+f 7335 7334 7333
+f 7334 7335 7336
+f 7337 7335 7333
+f 7289 7337 7333
+f 7338 7339 7250
+f 7316 7340 7341
+f 7341 7340 7342
+f 7343 7344 7345
+f 7346 7347 7348
+f 7348 4747 4798
+f 7349 7350 7271
+f 7349 7351 7352
+f 7347 7353 7354
+f 7355 7343 7354
+f 7354 7356 7355
+f 7357 7329 7358
+f 7358 7355 7356
+f 7358 7356 7357
+f 7353 7359 7356
+f 7356 7354 7353
+f 7357 7356 7359
+f 4798 4805 7346
+f 4805 7360 7346
+f 7361 7362 7360
+f 7359 7353 7362
+f 7359 7362 7363
+f 7363 7362 7361
+f 7357 7359 7364
+f 7365 7366 7364
+f 7364 7359 7365
+f 7367 7329 7357
+f 7368 7330 7367
+f 7369 7370 7371
+f 7371 7372 7369
+f 7368 7373 7369
+f 7374 7370 7375
+f 7374 7376 7377
+f 7376 7375 7373
+f 7376 7378 7377
+f 7364 7379 7367
+f 7367 7357 7364
+f 7366 7380 7379
+f 7379 7364 7366
+f 7381 7373 7379
+f 7381 7379 7380
+f 7382 7383 7380
+f 7380 7366 7382
+f 7383 7378 7381
+f 7381 7380 7383
+f 7373 7381 7376
+f 7376 7381 7378
+f 7384 7360 4805
+f 7384 7385 7361
+f 7384 7386 7387
+f 7387 7388 7385
+f 7385 7384 7387
+f 7363 7361 7385
+f 7389 7390 7391
+f 7392 7393 7388
+f 7393 7394 7363
+f 7392 7395 7396
+f 7397 7398 7395
+f 7397 7395 7392
+f 7399 7400 7401
+f 7402 7403 7404
+f 7405 7403 7402
+f 7405 7406 7407
+f 7407 7403 7405
+f 7382 7408 7383
+f 7401 7378 7383
+f 7401 7383 7408
+f 7382 7396 7409
+f 7408 7409 7410
+f 7401 7410 7399
+f 7395 7411 7412
+f 7411 7413 7414
+f 7415 7399 7410
+f 7415 7410 7414
+f 7399 7415 7405
+f 7416 7415 7414
+f 7406 7405 7415
+f 7415 7416 7406
+f 7414 7413 7416
+f 7417 7253 7339
+f 7418 7419 7339
+f 7339 7342 7418
+f 7420 7421 7422
+f 7422 7421 7423
+f 7422 7417 7419
+f 7371 7340 7316
+f 7424 7340 7371
+f 7420 7422 7425
+f 7260 7253 7417
+f 7417 7423 7260
+f 7272 7426 7420
+f 7426 7427 7423
+f 7423 7421 7426
+f 7428 7429 7430
+f 7430 7271 7272
+f 7404 7431 7429
+f 7432 7404 7403
+f 7403 7407 7432
+f 7228 7234 7166
+f 7433 7434 7171
+f 7233 7435 7433
+f 7436 7435 7437
+f 7438 7439 7440
+f 7262 7441 7442
+f 7443 7442 7441
+f 7444 7445 7443
+f 7443 7277 7444
+f 7446 7443 7445
+f 7440 7439 7447
+f 7074 7448 7075
+f 7198 7202 7449
+f 7449 7450 7198
+f 7211 7451 7452
+f 7211 7212 7453
+f 7453 7451 7211
+f 7454 7455 7327
+f 7454 7328 7456
+f 7454 7456 7457
+f 7454 4834 7455
+f 7457 7458 7459
+f 7457 7459 7454
+f 7460 7461 4834
+f 4834 7459 7460
+f 7460 7459 7458
+f 7462 7458 7457
+f 7457 7456 7450
+f 7460 7463 7464
+f 7464 7461 7460
+f 7465 7466 7463
+f 7467 7468 7449
+f 7452 7469 7467
+f 7468 7470 7471
+f 7468 7471 7462
+f 4866 4865 7466
+f 4866 7466 7472
+f 7473 7474 7472
+f 7472 7466 7473
+f 7475 7472 7474
+f 7476 7473 7465
+f 7465 7477 7476
+f 7477 7478 7479
+f 7476 7479 7480
+f 7481 7480 7479
+f 7474 7482 7475
+f 7480 7481 7482
+f 7480 7482 7473
+f 7473 7476 7480
+f 7483 7484 7479
+f 7483 7479 7478
+f 7485 7469 7451
+f 7469 7452 7451
+f 7478 7451 7483
+f 7486 7453 7212
+f 7487 7075 7488
+f 7483 7453 7486
+f 7483 7486 7489
+f 7489 7486 7488
+f 7489 7488 7490
+f 7491 7492 7493
+f 7494 7495 7496
+f 7492 7491 7495
+f 7494 7492 7495
+f 7497 7492 7494
+f 7498 7497 7494
+f 7494 7496 7499
+f 7500 7498 7499
+f 7501 7502 7503
+f 7503 7504 7501
+f 7505 7506 7507
+f 7508 7509 7507
+f 7509 7510 7505
+f 7511 7509 7508
+f 7508 7497 7498
+f 7512 7513 7514
+f 7515 7516 7517
+f 7518 7519 7520
+f 7516 7521 7520
+f 7522 7523 7524
+f 7522 7525 7523
+f 7518 7526 7522
+f 7527 7528 7529
+f 7530 7527 7529
+f 7531 7530 7532
+f 7533 7534 7527
+f 7535 7536 2422
+f 7537 7538 7539
+f 7537 7540 7541
+f 7539 7540 7537
+f 7542 7543 7544
+f 7542 7545 7546
+f 7547 7545 7542
+f 7548 7545 7549
+f 7550 7551 7552
+f 7552 7551 2422
+f 7553 7554 2418
+f 2420 2422 2425
+f 2425 2422 7536
+f 2425 7540 2424
+f 7529 7551 7550
+f 7529 7550 7555
+f 7551 7529 7543
+f 7529 7528 7543
+f 7543 7528 7544
+f 7556 7557 7558
+f 7534 7558 7528
+f 7559 7558 7534
+f 7560 7558 7559
+f 7556 7558 7560
+f 7561 7562 7563
+f 7547 7564 7565
+f 7564 7566 7565
+f 7567 7566 7564
+f 7568 7566 7567
+f 7566 7568 7569
+f 7567 7564 7557
+f 7557 7570 7567
+f 7495 7566 7569
+f 7571 7568 7567
+f 7567 7572 7571
+f 7572 7567 7570
+f 7573 7574 7575
+f 7496 7569 7576
+f 7499 7496 7576
+f 7577 7576 7578
+f 7500 7499 7579
+f 7580 7579 7581
+f 7580 7582 7579
+f 7583 7584 7577
+f 7581 7577 7584
+f 7570 7585 7572
+f 7586 7587 7585
+f 7588 7575 7589
+f 7575 7590 7591
+f 7590 7575 7588
+f 7592 7593 7588
+f 7588 7589 7592
+f 7563 7594 7592
+f 7594 7563 7562
+f 7594 7595 7593
+f 7593 7592 7594
+f 7593 7590 7588
+f 7596 7597 7532
+f 7598 7596 7599
+f 7531 7532 7597
+f 7597 7596 7598
+f 7600 7601 7602
+f 7603 7604 7601
+f 7605 7606 7607
+f 7604 7603 7605
+f 7608 7609 7610
+f 7609 7611 7601
+f 7612 7613 2447
+f 7532 7614 7612
+f 7612 7614 7613
+f 2446 7596 7532
+f 7615 7598 7599
+f 7616 7615 2459
+f 7615 2461 2460
+f 7616 7600 7598
+f 7617 7600 7616
+f 2787 7618 7619
+f 7620 7619 7618
+f 7620 7606 7621
+f 7622 7556 7560
+f 7623 7624 7622
+f 7625 7626 7627
+f 7628 7560 7627
+f 7626 7628 7627
+f 7625 7629 7626
+f 7630 7628 7626
+f 7630 7626 7629
+f 7631 7623 7622
+f 7632 7631 7622
+f 7633 7624 7623
+f 7562 7561 7633
+f 7623 7634 7633
+f 7634 7635 7562
+f 7562 7633 7634
+f 7636 7562 7635
+f 7631 7634 7623
+f 7637 7635 7634
+f 7637 7634 7638
+f 7635 7639 7636
+f 7640 7641 7629
+f 7629 7625 7640
+f 7642 7628 7630
+f 7642 7630 7629
+f 7642 7629 7641
+f 7641 7640 7608
+f 7643 7628 7642
+f 7628 7643 7632
+f 7644 7643 7645
+f 7631 7632 7643
+f 7631 7643 7644
+f 7646 7641 7608
+f 7647 7641 7646
+f 7648 7646 7608
+f 7648 7608 7649
+f 7650 7645 7651
+f 7638 7631 7644
+f 7652 7644 7653
+f 7638 7654 7637
+f 7654 7655 7639
+f 7639 7637 7654
+f 7655 7654 7656
+f 7656 7652 7657
+f 7658 7659 7660
+f 7658 7660 7661
+f 7662 7595 7594
+f 7636 7662 7594
+f 7663 7664 7665
+f 7663 7666 7667
+f 7663 7668 7664
+f 7539 7669 7670
+f 7671 2424 7540
+f 2464 2466 7671
+f 7539 7671 7540
+f 7670 7672 7673
+f 7673 7672 7674
+f 7674 7672 7675
+f 7670 7676 7672
+f 7504 7503 7669
+f 7677 7672 7676
+f 7677 7676 7678
+f 7672 7677 7679
+f 7672 7679 7675
+f 7680 7681 7682
+f 7682 7683 7680
+f 2424 7671 7684
+f 2466 7684 7671
+f 7674 2464 7673
+f 2462 7685 2474
+f 7681 7686 7685
+f 7687 7686 7681
+f 2514 7687 2515
+f 7687 7680 7688
+f 7689 7688 7680
+f 7680 7683 7689
+f 2515 7688 7690
+f 7690 7688 7691
+f 7691 7688 7689
+f 7691 7689 7692
+f 7678 7506 7677
+f 7693 7677 7506
+f 7679 7677 7693
+f 7694 7693 7505
+f 7694 7695 7693
+f 7682 7695 7683
+f 7696 7683 7695
+f 7505 7510 7694
+f 7510 7697 7694
+f 7698 7696 7694
+f 7694 7697 7698
+f 7699 7698 7697
+f 7683 7696 7700
+f 7701 7700 7696
+f 7696 7698 7701
+f 7702 7701 7698
+f 7702 7698 7699
+f 7511 7703 7510
+f 7510 7703 7704
+f 7705 7703 7706
+f 7707 7708 7706
+f 7709 7705 7706
+f 7709 7706 7708
+f 7705 7710 7711
+f 7711 7712 7699
+f 7702 7699 7712
+f 7713 7709 7714
+f 7710 7709 7713
+f 7714 7715 7716
+f 7717 7718 7716
+f 7719 7717 7720
+f 7721 7712 7711
+f 7721 7711 7710
+f 7721 7710 7722
+f 7723 7724 7713
+f 7713 7714 7723
+f 7723 7714 7716
+f 7723 7725 7724
+f 7726 7723 7716
+f 7726 7716 7718
+f 7726 7725 7723
+f 7713 7722 7710
+f 7722 7713 7724
+f 7722 7724 7727
+f 7728 7718 7719
+f 7729 7725 7730
+f 7729 7730 7728
+f 7700 7701 7731
+f 7732 7701 7702
+f 7721 7733 7712
+f 7721 7722 7733
+f 7734 7712 7733
+f 7732 7734 7735
+f 7735 7736 7732
+f 7737 7735 7734
+f 7727 7733 7722
+f 7738 7739 7733
+f 7733 7727 7738
+f 7740 7690 7691
+f 2518 7690 7740
+f 7740 7691 7741
+f 7691 7692 7742
+f 7742 7743 7691
+f 7741 7743 7744
+f 7745 7744 7743
+f 7746 7747 2518
+f 7748 7749 7750
+f 7748 2883 7749
+f 2883 7748 7751
+f 7752 7745 7753
+f 7752 7753 7754
+f 7754 7753 7755
+f 7754 7755 7756
+f 7757 7728 7719
+f 7758 7728 7757
+f 7759 7729 7758
+f 7760 7757 7761
+f 7760 7762 7763
+f 7764 7692 7765
+f 7742 7764 7766
+f 7767 7766 7764
+f 7765 7768 7769
+f 7735 7768 7736
+f 7735 7737 7770
+f 7739 7738 7771
+f 7738 7772 7773
+f 7771 7738 7774
+f 7739 7775 7737
+f 7775 7739 7771
+f 7775 7770 7737
+f 7776 7774 7762
+f 7774 7776 7771
+f 7775 7777 7770
+f 7778 7777 7775
+f 7779 7775 7771
+f 7779 7771 7776
+f 7778 7775 7779
+f 7779 7776 7780
+f 7780 7781 7779
+f 7781 7782 7779
+f 7783 7784 7768
+f 7783 7785 7784
+f 7783 7770 7785
+f 7786 7785 7770
+f 7777 7786 7770
+f 7777 7778 7782
+f 7777 7787 7786
+f 7782 7787 7777
+f 7788 7766 7789
+f 7755 7788 7789
+f 7789 7790 7755
+f 7756 7755 7790
+f 7789 7766 7791
+f 7766 7767 7791
+f 7767 7769 7792
+f 7792 7791 7767
+f 7793 7756 7790
+f 7794 7791 7792
+f 7791 7793 7790
+f 7794 7792 7795
+f 7781 7796 7782
+f 7786 7787 7797
+f 7787 7782 7796
+f 7787 7796 7798
+f 7799 7800 7801
+f 7802 7801 7800
+f 7803 7804 7580
+f 7590 7805 7806
+f 7806 7591 7590
+f 7807 7590 7593
+f 7807 7808 7805
+f 7805 7590 7807
+f 7809 7807 7593
+f 7809 7593 7595
+f 7803 7810 7811
+f 7811 7806 7805
+f 7812 7813 7804
+f 7814 7811 7808
+f 7814 7815 7812
+f 7812 7811 7814
+f 7814 7816 7815
+f 7817 7818 7813
+f 7813 7812 7815
+f 7819 7815 7816
+f 7820 7808 7809
+f 7662 7820 7809
+f 7665 7821 7822
+f 7820 7662 7822
+f 7823 7824 7816
+f 7814 7808 7820
+f 7814 7820 7823
+f 7825 7826 7819
+f 7825 7819 7816
+f 7827 7828 7826
+f 7826 7825 7827
+f 7829 7823 7820
+f 7829 7820 7822
+f 7829 7822 7821
+f 7830 7831 7827
+f 7828 7827 7831
+f 7664 7668 7821
+f 7668 7832 7833
+f 7834 7835 7833
+f 7834 7833 7832
+f 7834 7836 7835
+f 7837 7831 7838
+f 7831 7835 7839
+f 7835 7836 7839
+f 7838 7831 7839
+f 7840 7841 7842
+f 7842 7843 7840
+f 7840 7844 7841
+f 7836 7834 7842
+f 7842 7841 7836
+f 7841 7844 7845
+f 7846 7845 7847
+f 7848 7836 7841
+f 7841 7846 7848
+f 7849 7850 7848
+f 7851 7852 7853
+f 7851 7854 7855
+f 7856 7857 7858
+f 7859 7860 7861
+f 7859 7862 7863
+f 7826 7864 7817
+f 7865 7717 7866
+f 7865 7866 7867
+f 7868 7865 7867
+f 7868 7867 7869
+f 7720 7717 7865
+f 7720 7865 7868
+f 7864 7826 7870
+f 7871 7869 7864
+f 7872 7826 7828
+f 7873 7870 7872
+f 7874 7875 7876
+f 7876 7877 7874
+f 7875 7874 7878
+f 7878 7874 7879
+f 7880 7881 7828
+f 7880 7828 7837
+f 7873 7881 7882
+f 7881 7880 7882
+f 7883 7876 7875
+f 7878 7761 7883
+f 7883 7875 7878
+f 7884 7760 7761
+f 7885 7886 7762
+f 7887 7888 7882
+f 7887 7889 7890
+f 7891 7888 7887
+f 7884 7761 7892
+f 7893 7894 7888
+f 7884 7895 7885
+f 7884 7892 7896
+f 7896 7895 7884
+f 7894 7896 7892
+f 7896 7897 7895
+f 7891 7893 7888
+f 7893 7891 7898
+f 7894 7893 7899
+f 7900 7894 7899
+f 7900 7901 7902
+f 7901 7903 7904
+f 7905 7906 7903
+f 7890 7889 7907
+f 7907 7889 7908
+f 7908 7909 7907
+f 7910 7890 7907
+f 7910 7907 7909
+f 7911 7910 7909
+f 7898 7890 7910
+f 7912 7898 7910
+f 7910 7913 7912
+f 7914 7912 7913
+f 7915 7912 7905
+f 7913 7916 7914
+f 7913 7911 7917
+f 7918 7914 7916
+f 7919 7914 7918
+f 7886 7920 7780
+f 7921 7922 7920
+f 7897 7923 7921
+f 7923 7897 7902
+f 7923 7924 7922
+f 7922 7921 7923
+f 7925 7926 7927
+f 7925 7927 7924
+f 7924 7928 7925
+f 7927 7929 7798
+f 7930 7798 7929
+f 7929 7931 7930
+f 7932 7933 7931
+f 7930 7934 7935
+f 7934 7930 7931
+f 7906 7905 7919
+f 7936 7917 7937
+f 7938 7917 7936
+f 7938 7936 7939
+f 7916 7913 7940
+f 7919 7918 7941
+f 7940 7942 7918
+f 7941 7918 7942
+f 7943 7944 7945
+f 7940 7944 7943
+f 7946 7863 7947
+f 7945 7938 7939
+f 7945 7939 7948
+f 7939 7949 7946
+f 7946 7947 7948
+f 7947 7863 7950
+f 7947 7951 7948
+f 7951 7947 7952
+f 7953 7954 7955
+f 7956 7919 7941
+f 7941 7957 7956
+f 7958 7957 7942
+f 7959 7960 7961
+f 7961 7958 7959
+f 7962 7604 7605
+f 7962 7605 7607
+f 7962 7649 7610
+f 7649 7962 7963
+f 7963 7964 7649
+f 7962 7607 7963
+f 7964 7963 7965
+f 7965 7963 7966
+f 7967 7965 7966
+f 7967 7966 7968
+f 7969 7968 7970
+f 7971 7970 7972
+f 7973 7971 7972
+f 7973 7972 7974
+f 7971 7975 7969
+f 7969 7970 7971
+f 7976 7967 7977
+f 7978 7977 7967
+f 7977 7978 7979
+f 7980 7620 7618
+f 7980 7618 2790
+f 7981 7606 7620
+f 7982 7983 7980
+f 7982 7980 7984
+f 7985 7982 7984
+f 7985 7984 7986
+f 7987 7607 7981
+f 7987 7981 7983
+f 7987 7963 7607
+f 7963 7987 7988
+f 7989 7990 7988
+f 7990 7989 7972
+f 7991 7968 7966
+f 7972 7970 7991
+f 7970 7968 7991
+f 7964 7992 7648
+f 7648 7649 7964
+f 7993 7648 7992
+f 7994 7995 7651
+f 7996 7650 7651
+f 7997 7964 7976
+f 7998 7995 7993
+f 7998 7999 8000
+f 8001 7998 7993
+f 8002 7999 7998
+f 8002 7998 8001
+f 8003 8004 8005
+f 8005 8006 8003
+f 8005 8004 8007
+f 8008 8003 7999
+f 8008 7999 8002
+f 8004 8003 8008
+f 8009 8007 8004
+f 8010 8007 8009
+f 8011 8012 8013
+f 8014 8012 8011
+f 7976 8015 7997
+f 8016 7997 8015
+f 8017 8001 8018
+f 8017 8018 8016
+f 8019 8017 8020
+f 8021 8015 8022
+f 8021 8023 8024
+f 8024 8019 8020
+f 8021 8024 8020
+f 8020 8016 8021
+f 8019 8025 8008
+f 8025 8026 8027
+f 8019 8028 8025
+f 8009 8029 8011
+f 8030 8031 8032
+f 8033 8034 8035
+f 8033 8035 8036
+f 8034 8037 8032
+f 8033 8038 8037
+f 8037 8034 8033
+f 8039 7658 8040
+f 8013 8041 8040
+f 8042 8043 8044
+f 8044 8045 8042
+f 8042 8041 8046
+f 8047 8048 8043
+f 8043 8042 8047
+f 8049 8050 8051
+f 8049 8051 8052
+f 8051 8053 8046
+f 8053 8054 8047
+f 8047 8046 8053
+f 8048 8047 8054
+f 8053 8051 8050
+f 8055 8056 8048
+f 8057 8049 8014
+f 8049 8057 8058
+f 8058 8050 8049
+f 8014 8030 8057
+f 8058 8056 8059
+f 8059 8054 8053
+f 8053 8050 8058
+f 8055 8054 8059
+f 8056 8055 8059
+f 8058 8060 8056
+f 2778 8061 8062
+f 7974 8062 8063
+f 8064 8063 8062
+f 8065 7973 8063
+f 8065 8066 7973
+f 8067 8066 8065
+f 8068 8067 8065
+f 8069 8070 8071
+f 8072 8073 8071
+f 8071 8070 8072
+f 3981 3980 8070
+f 8074 8075 3980
+f 3980 3978 8074
+f 8074 8076 8077
+f 8077 8078 8079
+f 8074 8077 8079
+f 8078 8077 8080
+f 8081 8065 8082
+f 8082 8072 8081
+f 8083 8079 8084
+f 8022 8085 8086
+f 8086 8087 8088
+f 8089 8088 8087
+f 8090 8022 8086
+f 8090 8086 8088
+f 8022 8091 8023
+f 8092 8091 8022
+f 8092 8022 8090
+f 8092 8093 8091
+f 8089 8067 8088
+f 8093 8092 8094
+f 8095 8096 8094
+f 8096 8093 8094
+f 8097 8023 8091
+f 8098 8097 8091
+f 8091 8099 8098
+f 8097 8098 8036
+f 8091 8093 8100
+f 8101 8102 8038
+f 8103 8101 8098
+f 8103 8098 8099
+f 8103 8104 8102
+f 8102 8101 8103
+f 8105 8106 8107
+f 8108 8109 8110
+f 8084 8078 8111
+f 8111 8078 8112
+f 8112 8078 8080
+f 8112 8113 8114
+f 8084 8115 8083
+f 8084 8116 8115
+f 8117 8118 8116
+f 8095 8068 8118
+f 8118 8117 8106
+f 8106 8096 8118
+f 8116 8119 8120
+f 8120 8114 8113
+f 8120 8121 8122
+f 8121 8123 8122
+f 8124 8122 8125
+f 8125 8126 8124
+f 8126 8125 8108
+f 8125 8127 8108
+f 8116 8120 8124
+f 8122 8124 8120
+f 2884 7751 8128
+f 8129 8128 7751
+f 2884 8128 8130
+f 8130 8128 8131
+f 8128 8129 8132
+f 8131 8133 8130
+f 8134 8135 8129
+f 8135 8136 8129
+f 8137 8136 8135
+f 8135 8134 8138
+f 8138 7756 8139
+f 8140 8137 8139
+f 8132 8141 8142
+f 8143 8141 8144
+f 8145 8146 8142
+f 8147 8139 7756
+f 8140 8139 8147
+f 7756 8148 8147
+f 8148 8149 8147
+f 8148 7794 8150
+f 8149 8148 8150
+f 8149 8150 8151
+f 8150 7795 8151
+f 8151 7795 8152
+f 8140 8147 8153
+f 7795 7799 7801
+f 8154 8155 8143
+f 8153 8156 8154
+f 8157 8154 8156
+f 8157 8156 8158
+f 8159 8037 8038
+f 8160 8161 8162
+f 8163 8164 8165
+f 8163 8166 8164
+f 8167 8162 8166
+f 8162 8161 8166
+f 8168 8044 8043
+f 8169 8168 8043
+f 8169 8043 8048
+f 8170 8171 8172
+f 8172 8173 8174
+f 8171 8173 8172
+f 8175 8056 8176
+f 8175 8177 8169
+f 8178 8179 8177
+f 8178 8180 8179
+f 8168 8181 8044
+f 7844 7840 8168
+f 8170 7844 8168
+f 8170 8172 7844
+f 8182 8183 8184
+f 8173 8185 8174
+f 8183 8182 8186
+f 8187 8183 8186
+f 8180 8173 8179
+f 8180 8160 8185
+f 8185 8160 8188
+f 8160 8189 8188
+f 7847 7845 8184
+f 7847 8184 8183
+f 8190 8183 8187
+f 8030 8191 8192
+f 8193 8192 8191
+f 8176 8177 8175
+f 8176 8194 8177
+f 8192 8193 8060
+f 8195 8060 8193
+f 8194 8176 8195
+f 8178 8177 8194
+f 8159 8191 8196
+f 8195 8193 8191
+f 8197 8165 8164
+f 8164 8178 8197
+f 8198 8197 8178
+f 8199 8200 8197
+f 8165 8197 8200
+f 8161 8180 8178
+f 8201 8189 8202
+f 8203 8204 8205
+f 8205 8206 8207
+f 8162 8202 8160
+f 8208 8209 8202
+f 8209 8201 8202
+f 8208 8202 8162
+f 8167 8210 8208
+f 8162 8167 8208
+f 8211 8212 8213
+f 8211 8213 8214
+f 8214 8213 8215
+f 8215 8206 8214
+f 8209 8211 8216
+f 8216 8211 8217
+f 8211 8214 8217
+f 8205 8217 8206
+f 8189 8204 8218
+f 8219 8220 8187
+f 8219 8218 8221
+f 8221 8218 8204
+f 8187 8222 8190
+f 7851 7853 8222
+f 8222 8223 7851
+f 8222 8187 8220
+f 8223 8224 8225
+f 8223 8226 8227
+f 8224 8223 8227
+f 8204 8203 8228
+f 8228 8221 8204
+f 8228 8229 8221
+f 7858 8219 8229
+f 8230 8228 8203
+f 8231 8229 8228
+f 8203 8207 8230
+f 8227 8226 8232
+f 8232 8226 8233
+f 7860 8232 8233
+f 7860 8233 8234
+f 7860 8234 7861
+f 7863 7860 7859
+f 8235 8236 8038
+f 8235 8038 8102
+f 8235 8237 8236
+f 8238 8235 8102
+f 8238 8102 8104
+f 8239 8240 8237
+f 8237 8235 8239
+f 8235 8238 8239
+f 8200 8240 8165
+f 8240 8200 8237
+f 8109 8241 8104
+f 8104 8241 8238
+f 8241 8242 8239
+f 8239 8238 8241
+f 8239 8242 8240
+f 8240 8242 8243
+f 8244 8245 8246
+f 8244 8167 8245
+f 8166 8245 8167
+f 8247 8248 8123
+f 8248 8247 8246
+f 8121 8249 8250
+f 8248 8243 8127
+f 8123 8127 8122
+f 8244 7517 7516
+f 8247 7514 7517
+f 8251 8210 8167
+f 7523 8213 8212
+f 8212 8252 7523
+f 8213 8253 8215
+f 8252 7519 7524
+f 8253 8213 7523
+f 7901 8254 7923
+f 7904 8254 7901
+f 7928 7923 8254
+f 8255 8256 8254
+f 8257 8256 8255
+f 8258 8257 8255
+f 8257 8258 8259
+f 8260 8261 8262
+f 8257 8260 8256
+f 7926 8262 8261
+f 8259 8260 8257
+f 8259 8263 8260
+f 8259 8264 8263
+f 8261 8260 8263
+f 8265 8261 8263
+f 8266 7931 7933
+f 8267 7934 8266
+f 8268 7926 8261
+f 8269 8267 8266
+f 8269 8266 8270
+f 8270 8271 8269
+f 8272 8273 8269
+f 8263 8274 8265
+f 8264 8274 8263
+f 8274 8271 8265
+f 8275 8259 8258
+f 8275 8258 8276
+f 8258 8277 8276
+f 8278 8277 7906
+f 8278 7906 7919
+f 7956 8278 7919
+f 8277 8278 8276
+f 8276 8278 8279
+f 8275 8264 8259
+f 8264 8275 8280
+f 8279 8280 8275
+f 8281 8279 8278
+f 8282 8280 8279
+f 8280 8282 8283
+f 8284 8273 8272
+f 8285 8271 8286
+f 8286 8274 8287
+f 8285 8286 8288
+f 8288 8286 8287
+f 8287 8289 8290
+f 8291 8288 8292
+f 8280 8289 8264
+f 8282 8293 8283
+f 8294 8283 8293
+f 8294 8289 8283
+f 8290 8294 8295
+f 8294 8293 8295
+f 8296 7854 8225
+f 8297 7956 7957
+f 8281 7956 8297
+f 7961 8297 7957
+f 8297 7961 8298
+f 8297 8298 8281
+f 8281 8298 8299
+f 8300 8299 8298
+f 8293 8301 8302
+f 8303 8302 8301
+f 8301 8299 8303
+f 8304 8303 8299
+f 8305 8304 8299
+f 7960 8306 7961
+f 8307 7961 8306
+f 8300 8298 7961
+f 7961 8307 8300
+f 8300 8307 8308
+f 8309 8305 8300
+f 8310 8309 8308
+f 8311 8312 8313
+f 8314 8313 8312
+f 8312 8315 8314
+f 7525 8316 8311
+f 8312 8317 8315
+f 8317 8318 8315
+f 8319 8320 8321
+f 8322 8323 8320
+f 8320 8324 8321
+f 8320 8325 8326
+f 8327 8322 8326
+f 8326 8328 8327
+f 8329 8327 8328
+f 7859 7861 8330
+f 7862 7859 8330
+f 8331 8330 8332
+f 8332 8333 8334
+f 8335 8334 8333
+f 8336 8332 8334
+f 8337 8334 8335
+f 8337 8336 8334
+f 7862 8338 7950
+f 8338 7862 8331
+f 8336 8338 8331
+f 7952 8339 7951
+f 8340 8339 7952
+f 8341 8342 8340
+f 8343 8344 8345
+f 7960 7959 8346
+f 8347 8346 7953
+f 8346 8347 8348
+f 8347 8345 8348
+f 8348 8345 8344
+f 8348 8344 8349
+f 8350 8206 8215
+f 8215 8351 8350
+f 8352 8350 8353
+f 8353 8354 8355
+f 8356 8355 8354
+f 8356 8357 8355
+f 8355 8357 8358
+f 8354 8350 8359
+f 8359 8360 8361
+f 8356 8354 8359
+f 8359 8361 8356
+f 8356 8361 8357
+f 8362 8357 8361
+f 8361 8363 8362
+f 8363 8364 8362
+f 8365 8362 8364
+f 8366 8365 8364
+f 8366 8367 8368
+f 8369 8367 8366
+f 8230 8370 8371
+f 8372 8371 8370
+f 8333 8371 8373
+f 8374 8373 8372
+f 8374 8375 8373
+f 8374 8376 8375
+f 8372 8377 8374
+f 8378 8374 8377
+f 8377 8372 8355
+f 8358 8377 8355
+f 8377 8358 8378
+f 8378 8376 8374
+f 8333 8375 8335
+f 8379 8375 8376
+f 8380 8378 8358
+f 8380 8376 8378
+f 8380 8379 8376
+f 8381 8379 8380
+f 8380 8382 8381
+f 8383 8335 8375
+f 8335 8383 8384
+f 8375 8379 8383
+f 8337 8335 8385
+f 8385 8335 8384
+f 8385 8386 8387
+f 8384 8383 8388
+f 8388 8389 8384
+f 8388 8390 8391
+f 8390 8392 8393
+f 8393 8394 8390
+f 8391 8390 8394
+f 8394 8393 8395
+f 8389 8396 8397
+f 8394 8396 8391
+f 8395 8398 8399
+f 8382 8400 8401
+f 8402 8382 8401
+f 8401 8403 8402
+f 8404 8405 8406
+f 8368 8406 8403
+f 8402 8403 8406
+f 8392 8402 8406
+f 8357 8362 8400
+f 8400 8362 8403
+f 8407 8408 8367
+f 8409 8408 8407
+f 8367 8369 8407
+f 8410 8409 8407
+f 8404 8367 8408
+f 8411 8409 8410
+f 8409 8411 8412
+f 8413 8412 8411
+f 8414 8415 8413
+f 8414 8416 8415
+f 8417 8405 8418
+f 8417 8393 8405
+f 8419 8420 8421
+f 8418 8422 8423
+f 8417 8424 8395
+f 8424 8417 8425
+f 8426 8427 8428
+f 8429 8430 8431
+f 8432 8430 8429
+f 8432 8429 8426
+f 8395 8393 8417
+f 8422 8433 8426
+f 8426 8433 8427
+f 8434 8427 8435
+f 8427 8436 8428
+f 8437 8438 8436
+f 8439 8440 8438
+f 8405 8404 8419
+f 8441 8435 8442
+f 8435 8441 8434
+f 8443 8434 8441
+f 8441 8442 8415
+f 8444 8441 8415
+f 8443 8441 8444
+f 8445 8438 8443
+f 8446 8445 8444
+f 8445 8447 8438
+f 8438 8447 8439
+f 8448 8439 8447
+f 8253 8449 8351
+f 8215 8253 8351
+f 8449 8450 8351
+f 8450 8360 8359
+f 8451 8360 8450
+f 8452 8451 8450
+f 8449 8313 8450
+f 8452 8450 8313
+f 8453 8454 8451
+f 8453 8451 8455
+f 8455 8456 8453
+f 8456 8457 8453
+f 8458 8453 8457
+f 8459 8460 8461
+f 8454 8462 8361
+f 8463 8364 8363
+f 8462 8454 8453
+f 8364 8463 8366
+f 8369 8460 8407
+f 8464 8460 8369
+f 8369 8366 8463
+f 8461 8464 8458
+f 8464 8461 8460
+f 8313 8314 8452
+f 8465 8452 8314
+f 8455 8452 8465
+f 8314 8466 8465
+f 8315 8466 8314
+f 8456 8455 8467
+f 8457 8456 8468
+f 8457 8468 8458
+f 8469 8468 8456
+f 8469 8456 8467
+f 8459 8468 8470
+f 8461 8468 8459
+f 8459 8471 8472
+f 8470 8468 8469
+f 8467 8466 8473
+f 8318 8474 8473
+f 8473 8466 8318
+f 8475 8476 8477
+f 8478 8470 8479
+f 8478 8480 8481
+f 8460 8482 8407
+f 8483 8484 8485
+f 8486 8484 8483
+f 8487 8484 8486
+f 8485 8484 8411
+f 8411 8410 8485
+f 8484 8488 8411
+f 8413 8411 8488
+f 8488 8414 8413
+f 8488 8484 8487
+f 8488 8489 8414
+f 8489 8488 8490
+f 8490 8491 8489
+f 8489 8492 8414
+f 8488 8493 8490
+f 8487 8493 8488
+f 8493 8494 8490
+f 8495 8483 8496
+f 8496 8471 8481
+f 8481 8497 8496
+f 8481 8498 8497
+f 8497 8499 8495
+f 8499 8486 8495
+f 8497 8500 8499
+f 8501 8343 8342
+f 8396 8502 8386
+f 8399 8502 8396
+f 8503 8502 8399
+f 8503 8399 8504
+f 8343 8501 8505
+f 8505 8501 8506
+f 8505 8344 8343
+f 8507 8508 8509
+f 8510 8503 8504
+f 8504 8511 8510
+f 8510 8509 8502
+f 8510 8502 8503
+f 8512 8513 8507
+f 8507 8509 8514
+f 8515 8509 8510
+f 8516 8510 8511
+f 7960 8348 8517
+f 8306 7960 8517
+f 8518 8349 8519
+f 8308 8306 8520
+f 8517 8521 8306
+f 8520 8306 8521
+f 8522 8523 8520
+f 8523 8310 8520
+f 8512 8524 8525
+f 8525 8506 8512
+f 8512 8526 8524
+f 8512 8507 8527
+f 8527 8507 8514
+f 8514 8526 8527
+f 8515 8528 8514
+f 8528 8526 8514
+f 8525 8529 8518
+f 8530 8529 8531
+f 8530 8531 8532
+f 8533 8534 8531
+f 8533 8531 8524
+f 8532 8531 8535
+f 8536 8537 8528
+f 8535 8534 8538
+f 8534 8539 8540
+f 8541 8504 8542
+f 8543 8430 8432
+f 8544 8545 8430
+f 8546 8543 8547
+f 8504 8398 8431
+f 8511 8504 8541
+f 8548 8541 8545
+f 8548 8549 8516
+f 8550 8545 8544
+f 8551 8549 8550
+f 8552 8549 8551
+f 8551 8550 8553
+f 8511 8548 8516
+f 8549 8554 8516
+f 8555 8556 8439
+f 8557 8556 8558
+f 8559 8560 8561
+f 8562 8563 8558
+f 8558 8563 8564
+f 8565 8564 8563
+f 8566 8536 8516
+f 8567 8536 8566
+f 8568 8566 8554
+f 8569 8552 8570
+f 8568 8554 8569
+f 8571 8572 8570
+f 8572 8571 8573
+f 8569 8570 8572
+f 8568 8569 8574
+f 8573 8561 8560
+f 8573 8560 8575
+f 8576 8572 8573
+f 8576 8573 8575
+f 8567 8577 8578
+f 8577 8568 8574
+f 8578 8579 8539
+f 8579 8540 8539
+f 8580 8579 8578
+f 8581 8580 8578
+f 8574 8569 8582
+f 8572 8582 8569
+f 8583 8582 8572
+f 8581 8574 8582
+f 8582 8584 8581
+f 8582 8585 8584
+f 8575 8586 8576
+f 8586 8587 8576
+f 8586 8575 8565
+f 8572 8576 8583
+f 8587 8583 8576
+f 8587 8588 8589
+f 8582 8583 8589
+f 8589 8585 8582
+f 8590 8447 8445
+f 8446 8591 8590
+f 8592 8591 8593
+f 8591 8592 8590
+f 8447 8590 8448
+f 8594 8448 8595
+f 8590 8592 8448
+f 8595 8448 8592
+f 8596 8595 8592
+f 8597 8594 8595
+f 8596 8597 8595
+f 8598 8599 8600
+f 8601 8602 8603
+f 8601 8598 8602
+f 8604 8602 8598
+f 8601 8599 8598
+f 8605 8606 8607
+f 8608 8609 8610
+f 8609 8608 8611
+f 8612 8609 8611
+f 8611 8608 8613
+f 8605 8610 8614
+f 8614 8615 8605
+f 8605 8608 8610
+f 8607 8608 8605
+f 8616 8613 8607
+f 8613 8608 8607
+f 8600 8609 8617
+f 8612 8618 8619
+f 8620 8621 8622
+f 8616 8623 8613
+f 8623 8624 8625
+f 8623 8625 8622
+f 8622 8625 8626
+f 8621 8627 8618
+f 8620 8627 8621
+f 8620 8628 8627
+f 8489 8491 8492
+f 8629 8492 8491
+f 8630 8491 8494
+f 8631 8491 8630
+f 8632 8631 8630
+f 8633 8632 8634
+f 8632 8635 8631
+f 8636 8637 8633
+f 8638 8639 8494
+f 8639 8638 8640
+f 8641 8642 8643
+f 8644 8641 8643
+f 8632 8630 8645
+f 8634 8632 8645
+f 8646 8321 8324
+f 8634 8647 8648
+f 8633 8646 8636
+f 8649 8593 8629
+f 8650 8649 8635
+f 8593 8651 8592
+f 8651 8593 8649
+f 8652 8653 8654
+f 8323 8322 8655
+f 8656 8657 8658
+f 8656 8615 8657
+f 8615 8656 8605
+f 8637 8657 8615
+f 8659 8607 8655
+f 8606 8655 8607
+f 8656 8658 8606
+f 8606 8605 8656
+f 8660 8329 8661
+f 8661 8662 8660
+f 8327 8663 8322
+f 8329 8663 8327
+f 8664 8594 8665
+f 8562 8666 8665
+f 8562 8665 8667
+f 8668 8594 8597
+f 8597 8669 8668
+f 8667 8665 8668
+f 8670 8668 8669
+f 8667 8668 8670
+f 8597 8604 8669
+f 8667 8671 8672
+f 8669 8604 8673
+f 8673 8674 8669
+f 8675 8676 8677
+f 8678 8676 8679
+f 8680 8681 8682
+f 8682 8683 8684
+f 8685 8686 8687
+f 8688 8686 8685
+f 8689 8688 8690
+f 8691 8692 8565
+f 8693 8692 8671
+f 8694 8671 8687
+f 8693 8671 8694
+f 8694 8695 8693
+f 8695 8696 8697
+f 8686 8694 8687
+f 8686 8698 8694
+f 8699 8688 8689
+f 8688 8698 8686
+f 8698 8695 8694
+f 8698 8700 8695
+f 8701 8699 8684
+f 8699 8702 8688
+f 8703 8696 8700
+f 8700 8698 8702
+f 8704 8702 8699
+f 8702 8704 8705
+f 8706 8707 8704
+f 8707 8705 8704
+f 8708 8709 8705
+f 8710 8707 8706
+f 8711 8678 8712
+f 8713 8711 8714
+f 8715 8716 8711
+f 8715 8711 8713
+f 8717 8718 8619
+f 8713 8714 8719
+f 8714 8720 8719
+f 8721 8719 8720
+f 8722 8719 8721
+f 8715 8713 8723
+f 8723 8713 8719
+f 8719 8722 8723
+f 8723 8724 8715
+f 8679 8600 8712
+f 8711 8716 8678
+f 8680 8678 8681
+f 8716 8681 8678
+f 8681 8716 8725
+f 8715 8725 8716
+f 8725 8683 8681
+f 8683 8725 8726
+f 8726 8727 8701
+f 8724 8728 8725
+f 8729 8726 8725
+f 8729 8725 8728
+f 8701 8684 8683
+f 8727 8726 8729
+f 8701 8727 8730
+f 8730 8727 8729
+f 8731 8730 8729
+f 8732 8730 8731
+f 8728 8724 8733
+f 8734 8728 8733
+f 8733 8735 8736
+f 8737 8734 8733
+f 8737 8733 8738
+f 8738 8739 8737
+f 8740 8741 8737
+f 8734 8741 8732
+f 8734 8737 8741
+f 8080 8742 8743
+f 8744 8745 3973
+f 3574 8746 8744
+f 8746 3574 8747
+f 8744 3987 3574
+f 8748 8749 8750
+f 8751 8743 8745
+f 8743 3973 8745
+f 8743 8751 8749
+f 8752 8080 8743
+f 8752 8743 8749
+f 8753 8754 8755
+f 8756 8757 8758
+f 8759 8758 8757
+f 8759 8760 8758
+f 8756 8754 8757
+f 8761 8757 8754
+f 8753 8755 8748
+f 8762 8754 8753
+f 8762 8753 8748
+f 8763 8748 8764
+f 8765 8748 8763
+f 8766 8765 8763
+f 8767 8766 8763
+f 8768 3613 8769
+f 3613 8768 8770
+f 8770 8768 8771
+f 8771 8768 8772
+f 8772 8773 8771
+f 8774 8773 8772
+f 8775 8764 8776
+f 8775 8776 8777
+f 3621 8778 8779
+f 8779 8778 8780
+f 8769 8779 8768
+f 3612 3621 8769
+f 8779 8769 3621
+f 8780 8781 8774
+f 8782 8777 8774
+f 8783 3633 8770
+f 8783 3634 3633
+f 8770 3633 3613
+f 8771 8783 8770
+f 8784 8746 8785
+f 8786 8787 8763
+f 8786 8788 8787
+f 8787 8789 8763
+f 8789 8790 8767
+f 8791 8792 8793
+f 8777 8788 8775
+f 8782 8793 8777
+f 8793 8782 8791
+f 8794 8795 8796
+f 8794 8797 8795
+f 8786 8763 8764
+f 8789 8767 8763
+f 8798 8799 8800
+f 8250 8249 8801
+f 8801 8249 8802
+f 7512 8801 8802
+f 8802 8759 8803
+f 8804 8757 8805
+f 8806 8807 8808
+f 8809 8808 7515
+f 7513 8809 7515
+f 8808 8810 7515
+f 8808 8809 8806
+f 8811 8812 8813
+f 8814 8815 8807
+f 8812 8816 8817
+f 8799 8815 8817
+f 8799 8817 8800
+f 8818 8810 8808
+f 8807 8819 8808
+f 8820 8819 8821
+f 8822 8823 8824
+f 8820 8822 8818
+f 8820 8825 8822
+f 8826 8825 8820
+f 8825 8827 8823
+f 8824 7526 8822
+f 8821 8807 8828
+f 8828 8815 8799
+f 8815 8828 8807
+f 8807 8821 8819
+f 8826 8829 8827
+f 8825 8826 8827
+f 8826 8821 8830
+f 8831 8829 8832
+f 8816 8790 8833
+f 8834 8800 8816
+f 8816 8835 8834
+f 8800 8834 8836
+f 8835 8837 8838
+f 8834 8835 8838
+f 8838 8839 8834
+f 8840 8837 8795
+f 8790 8789 8796
+f 8841 8795 8837
+f 8837 8842 8838
+f 8838 8842 8839
+f 8767 8790 8816
+f 8800 8836 8798
+f 8843 8798 8836
+f 8839 8844 8834
+f 8834 8844 8843
+f 8845 8846 8830
+f 8847 8831 8832
+f 8839 8848 8844
+f 8849 8844 8848
+f 8850 8851 8849
+f 8852 8853 8854
+f 8855 8854 8853
+f 3730 3736 8856
+f 8856 8857 8852
+f 8853 8852 8857
+f 3760 3736 3735
+f 3760 8858 3736
+f 8857 3736 8858
+f 8859 8855 8853
+f 8860 8861 8859
+f 8855 8862 8863
+f 8862 8864 8863
+f 8862 8865 8864
+f 8860 8866 8861
+f 8865 8866 8867
+f 8868 8869 8870
+f 8871 8872 8868
+f 8860 8873 8874
+f 8860 8875 8876
+f 8877 8878 8879
+f 8880 8881 8877
+f 8881 8878 8877
+f 8875 8878 8881
+f 8882 8883 3772
+f 8884 8883 8882
+f 3771 8885 3772
+f 8882 3772 8885
+f 8882 8886 8884
+f 8885 8887 8882
+f 8886 8882 8887
+f 8888 3759 3772
+f 8883 8888 3772
+f 8884 8880 8883
+f 8884 8889 8881
+f 8886 8890 8889
+f 8889 8884 8886
+f 8890 8886 8887
+f 8880 8884 8881
+f 8876 8891 8867
+f 8891 8892 8867
+f 8891 8875 8893
+f 8867 8892 8871
+f 8871 8892 8872
+f 8892 8894 8872
+f 8893 8894 8891
+f 8895 8894 8893
+f 8895 8893 8896
+f 8897 8881 8889
+f 8897 8898 8899
+f 8897 8889 8890
+f 8890 8900 8901
+f 8898 8897 8902
+f 8903 8899 8898
+f 8903 8896 8899
+f 8903 8904 8896
+f 8905 8903 8902
+f 8902 8903 8898
+f 8901 8905 8902
+f 8906 8903 8905
+f 8904 8903 8906
+f 8905 8907 8906
+f 3623 3795 8908
+f 8854 8778 8909
+f 3795 8910 8908
+f 8854 8909 8852
+f 8911 8781 8912
+f 8854 8855 8863
+f 8911 8863 8791
+f 8792 8791 8913
+f 8797 8840 8795
+f 8914 8915 8869
+f 8916 8917 8914
+f 8914 8918 8919
+f 8919 8920 8921
+f 8922 8923 8916
+f 8922 8916 8921
+f 8921 8920 8922
+f 8924 8925 8922
+f 8926 8872 8894
+f 8895 8927 8926
+f 8896 8928 8895
+f 8928 8927 8895
+f 8920 8919 8929
+f 8929 8919 8930
+f 8929 8930 8931
+f 8932 8930 8927
+f 8931 8930 8933
+f 8934 8935 8936
+f 8906 8907 8904
+f 8937 8934 8907
+f 8932 8936 8935
+f 8938 8932 8935
+f 8938 8939 8940
+f 8941 8938 8935
+f 8941 8935 8934
+f 8942 8939 8938
+f 8933 8932 8938
+f 8943 8929 8931
+f 8933 8940 8944
+f 8944 8931 8933
+f 8940 8945 8944
+f 8943 8946 8947
+f 8946 8948 8949
+f 8950 8948 8946
+f 8951 8946 8943
+f 8951 8943 8944
+f 8951 8950 8946
+f 8939 8952 8940
+f 8953 8939 8942
+f 8954 8951 8945
+f 8955 8951 8954
+f 8956 8945 8952
+f 8957 8954 8945
+f 8957 8958 8954
+f 8869 8840 8797
+f 8869 8915 8959
+f 8837 8959 8842
+f 8842 8959 8960
+f 8961 8842 8960
+f 8960 8959 8915
+f 8961 8960 8917
+f 8914 8917 8960
+f 8925 8962 8923
+f 8925 8923 8922
+f 8962 8963 8964
+f 8963 8849 8964
+f 8076 3978 8965
+f 8966 8076 8965
+f 8076 8966 8742
+f 3978 3980 3979
+f 3979 3976 3978
+f 8967 8823 8827
+f 8968 8823 8967
+f 8968 8969 8824
+f 8968 8970 8969
+f 8971 8972 8970
+f 8972 8971 8973
+f 8973 8974 8972
+f 8824 8969 8316
+f 8975 8316 8969
+f 8974 8975 8969
+f 8976 8977 8978
+f 8979 8980 8981
+f 8979 8981 8982
+f 8973 8982 8981
+f 8983 8982 8984
+f 8979 8982 8978
+f 8976 8985 8477
+f 8978 8982 8983
+f 8978 8983 8976
+f 8477 8985 8480
+f 8985 8986 8480
+f 8987 8983 8988
+f 8967 8827 8989
+f 8990 8968 8991
+f 8970 8968 8990
+f 8992 8991 8989
+f 8990 8991 8992
+f 8993 8988 8994
+f 8995 8996 8992
+f 8995 8997 8996
+f 8998 8993 8995
+f 8994 8983 8984
+f 8983 8994 8988
+f 8986 8999 8497
+f 8987 9000 8999
+f 9000 8987 8988
+f 8999 9000 9001
+f 8999 9001 9002
+f 9001 9003 9002
+f 9002 9003 8500
+f 8500 9003 9004
+f 9001 9000 9005
+f 9006 9007 8993
+f 9005 9007 9006
+f 8998 9008 8993
+f 9006 8993 9008
+f 9007 8988 8993
+f 8988 9007 9000
+f 9000 9007 9005
+f 9009 9010 9011
+f 9009 9012 9010
+f 9008 9011 9006
+f 9013 9014 9015
+f 9012 9005 9010
+f 9016 8831 8847
+f 9017 8992 8831
+f 9016 9017 8831
+f 9016 8847 9018
+f 9019 9018 8847
+f 9018 9020 9016
+f 8998 9017 9021
+f 9022 9017 9016
+f 9023 9021 9022
+f 8998 9021 9024
+f 9022 9021 9017
+f 9022 9016 9020
+f 9023 9022 9025
+f 9026 9027 9028
+f 9026 9018 8851
+f 8850 9026 8851
+f 9026 9028 9018
+f 9020 9018 9029
+f 9018 9028 9029
+f 9029 9022 9020
+f 9030 9025 9029
+f 9028 9030 9029
+f 9031 9021 9023
+f 9021 9031 9024
+f 9031 9032 9024
+f 9032 9031 9033
+f 9034 9032 9033
+f 9033 9035 9034
+f 9034 9036 9037
+f 9038 9039 9037
+f 9033 9025 9040
+f 9036 9035 9041
+f 9036 9034 9035
+f 9038 9042 9039
+f 9015 9043 9037
+f 9044 9045 9046
+f 9047 9048 9004
+f 9004 9048 8642
+f 9044 8643 9048
+f 8643 8642 9048
+f 9049 9047 9050
+f 9048 9049 9044
+f 9044 9049 9045
+f 9046 9051 9052
+f 9053 9054 9044
+f 9050 9045 9049
+f 9045 9055 9056
+f 9046 9056 9057
+f 9056 9058 9057
+f 9051 9046 9057
+f 9056 9055 9059
+f 9059 9060 9061
+f 9061 9058 9059
+f 9052 9051 9062
+f 9063 9062 9051
+f 9064 9065 9066
+f 9066 8328 9067
+f 9068 8328 9066
+f 9066 9067 9064
+f 9069 9068 9066
+f 9069 9070 9068
+f 9071 9068 9070
+f 9069 9066 9065
+f 9072 9069 9065
+f 9073 9074 9070
+f 9069 9073 9070
+f 9073 9069 9072
+f 9073 9075 9076
+f 9073 9076 9074
+f 9063 9051 9057
+f 9063 9077 9064
+f 9077 9078 9065
+f 9079 9080 9061
+f 9081 9078 9077
+f 9082 9072 9065
+f 9082 9083 9072
+f 9083 9082 9084
+f 9084 9078 9081
+f 9085 9084 9081
+f 9086 9084 9085
+f 9087 9086 9088
+f 9073 9072 9083
+f 9075 9073 9083
+f 9087 9089 9075
+f 9089 9087 9090
+f 9091 9037 9039
+f 9092 9091 9039
+f 9093 9094 9092
+f 9095 9094 9093
+f 9095 9096 9097
+f 9097 9094 9095
+f 9096 9098 9097
+f 9099 9098 9096
+f 9100 9098 9099
+f 9101 9042 9102
+f 9101 9102 9103
+f 9042 9104 9092
+f 9105 9106 9096
+f 9106 9105 9107
+f 9108 9106 9109
+f 9106 9110 9099
+f 9111 9099 9110
+f 9059 9112 9094
+f 9094 9097 9059
+f 9113 9079 9060
+f 9113 9060 9114
+f 9113 9115 9079
+f 9116 9115 9117
+f 9118 9113 9119
+f 9113 9120 9117
+f 9116 9117 9120
+f 9120 9113 9118
+f 9121 9115 9116
+f 9088 9085 9121
+f 9090 9087 9122
+f 9116 9123 9124
+f 9124 9125 9122
+f 9118 9126 9120
+f 9126 9116 9120
+f 9127 9128 9125
+f 9125 9123 9129
+f 9127 9125 9129
+f 9130 9123 9126
+f 9131 9132 9133
+f 8949 9134 9133
+f 9134 9135 9136
+f 9134 9137 9133
+f 9131 9138 9139
+f 9140 9137 9136
+f 9138 9131 9137
+f 9141 9135 8948
+f 9142 9141 8955
+f 9143 9141 9142
+f 9144 9145 9146
+f 9146 9147 9140
+f 9148 9144 9143
+f 9148 9145 9144
+f 9149 9142 8955
+f 9150 9142 9149
+f 9142 9151 9143
+f 9142 9150 9151
+f 8958 9149 8955
+f 8958 9152 9149
+f 9151 9148 9143
+f 9153 9148 9151
+f 9154 9153 9151
+f 9154 9151 9150
+f 9150 9149 9155
+f 9156 9149 9152
+f 9156 9155 9149
+f 9157 9155 9156
+f 9154 9150 9155
+f 9158 9147 9146
+f 9158 9159 9147
+f 9160 9158 9146
+f 9161 9162 9163
+f 9164 9162 9161
+f 9165 9161 9160
+f 9166 9164 9165
+f 9153 9167 9168
+f 9154 9167 9153
+f 9169 9167 9154
+f 9167 9169 9165
+f 9170 9166 9165
+f 9171 9154 9155
+f 9172 9154 9171
+f 9169 9154 9172
+f 9173 9174 9170
+f 9175 9173 9170
+f 9175 9170 9176
+f 9026 8850 9177
+f 9178 9026 9177
+f 9026 9178 9027
+f 9177 9179 9178
+f 9180 9178 9179
+f 9179 9181 9180
+f 9027 9182 9030
+f 9178 9182 9027
+f 9178 9180 9182
+f 9182 9183 9030
+f 9184 9183 9182
+f 9184 9182 9180
+f 9181 9185 9180
+f 9184 9180 9185
+f 8925 8924 9179
+f 8924 9132 9179
+f 9185 9181 9132
+f 9186 9187 9188
+f 9189 9041 9187
+f 9190 9186 9139
+f 9190 9139 9191
+f 9192 9193 9194
+f 9195 9196 9163
+f 9197 9195 9163
+f 9198 9192 9194
+f 9174 9199 9166
+f 9200 9199 9174
+f 9201 9102 9202
+f 9203 9201 9202
+f 9204 9205 9202
+f 9206 9103 9207
+f 9207 9103 9201
+f 9207 9201 9203
+f 9208 9209 9207
+f 9208 9207 9203
+f 9210 9108 9109
+f 9210 9109 9209
+f 9211 9108 9210
+f 9212 9210 9213
+f 9212 9211 9210
+f 9214 9211 9212
+f 9214 9215 9211
+f 9216 9205 9204
+f 9216 9217 9208
+f 9208 9203 9216
+f 9218 9217 9216
+f 9219 9216 9192
+f 9218 9216 9219
+f 9220 9213 9217
+f 9221 9220 9217
+f 9221 9217 9218
+f 9212 9213 9220
+f 9220 9222 9223
+f 9222 9221 9224
+f 9225 9226 9222
+f 9227 9111 9215
+f 9228 9229 9230
+f 9231 9232 9233
+f 9233 9230 9231
+f 9234 9235 9232
+f 9232 9231 9234
+f 9226 9236 9222
+f 9226 9237 9236
+f 9236 9238 9231
+f 9238 9236 9237
+f 9239 9235 9234
+f 9238 9239 9234
+f 9234 9231 9238
+f 9239 9238 9237
+f 9240 9241 9229
+f 9233 9242 9243
+f 9243 9244 9245
+f 9244 9243 9242
+f 9246 9242 9233
+f 9246 9233 9247
+f 9248 9249 9246
+f 9248 9246 9250
+f 9251 9249 9248
+f 9252 9248 9253
+f 9254 9255 9256
+f 9224 9257 9258
+f 9259 9255 9260
+f 9226 9225 9259
+f 9261 9259 9262
+f 9263 9261 9262
+f 9264 9265 9266
+f 9264 9266 9267
+f 9268 9269 9270
+f 9262 9260 9268
+f 9271 9268 9270
+f 9271 9272 9273
+f 9273 9268 9271
+f 9263 9262 9273
+f 9273 9274 9263
+f 9275 9274 9273
+f 9272 9275 9273
+f 9237 9226 9276
+f 9261 9276 9259
+f 9277 9278 9279
+f 9280 9277 9281
+f 9282 9279 9274
+f 9283 9281 9284
+f 9285 9286 9239
+f 9286 9285 9280
+f 9286 9287 9288
+f 9288 9239 9286
+f 9289 9290 9252
+f 9289 9252 9253
+f 9291 9292 9293
+f 9286 9293 9294
+f 9294 9287 9286
+f 9294 9295 9289
+f 9295 9296 9290
+f 9297 9298 9295
+f 9295 9293 9297
+f 8977 8474 8318
+f 8977 8318 9299
+f 8477 8474 8977
+f 8498 8481 8480
+f 9004 8642 9300
+f 8622 9301 8620
+f 9302 9301 8626
+f 9302 9303 9301
+f 9304 9305 9302
+f 9301 8628 8620
+f 9306 8628 9301
+f 9307 9308 9309
+f 9307 9309 9310
+f 9311 9310 9309
+f 9312 9313 9314
+f 9315 9312 9314
+f 9316 9317 9318
+f 9317 9316 9319
+f 9318 9304 9320
+f 9321 9317 9319
+f 9317 9322 9304
+f 9322 9317 9321
+f 9323 9322 9321
+f 9319 9316 9312
+f 9324 9319 9312
+f 9324 9321 9319
+f 9312 9315 9324
+f 9325 9326 9324
+f 9326 9323 9321
+f 9321 9324 9326
+f 9327 9323 9326
+f 9328 9327 9326
+f 9329 9313 8329
+f 9330 9313 9329
+f 9331 9315 9332
+f 9331 9325 9315
+f 9329 9333 9334
+f 9071 9333 9329
+f 9335 9334 9333
+f 9334 9335 9332
+f 9336 9332 9335
+f 9331 9332 9336
+f 9337 9328 9338
+f 9339 9337 9340
+f 9341 9309 9308
+f 9342 9327 9343
+f 9344 9345 9341
+f 9346 9344 9342
+f 9345 9344 9346
+f 9309 9341 9347
+f 9341 9348 9347
+f 9348 9311 9347
+f 9341 9345 9348
+f 9349 9348 9345
+f 9345 9350 9351
+f 9351 9349 9345
+f 9352 9350 9346
+f 9353 9352 9346
+f 9354 9355 9353
+f 9339 9354 9353
+f 9353 9355 9352
+f 9350 9352 9356
+f 9356 9351 9350
+f 9351 9356 9357
+f 9358 8721 9306
+f 9359 9306 9360
+f 9358 9306 9359
+f 9360 9361 9359
+f 9359 9362 9358
+f 9361 9360 9363
+f 9362 9359 9361
+f 9310 9361 9363
+f 9364 9361 9310
+f 9362 9361 9365
+f 9365 9361 9364
+f 8721 9366 8722
+f 9367 9368 9365
+f 9368 9369 9365
+f 9370 8736 9371
+f 9370 9372 8736
+f 9373 9372 9370
+f 9370 9374 9375
+f 9373 9370 9375
+f 9372 9373 9376
+f 8739 8740 8737
+f 9376 9377 9372
+f 9376 9378 9377
+f 9379 9378 9376
+f 9380 8739 9377
+f 9377 9381 9380
+f 9378 9381 9377
+f 9376 9382 9379
+f 9383 9364 9311
+f 9383 9311 9348
+f 9384 9385 9383
+f 9386 9383 9387
+f 9349 9388 9389
+f 9384 9348 9349
+f 9387 9385 9389
+f 9387 9389 9390
+f 9391 9390 9392
+f 9393 9391 9392
+f 9382 9369 9394
+f 9394 9395 9396
+f 9397 9398 9399
+f 9399 9400 9396
+f 9401 9399 9396
+f 9396 9393 9401
+f 9399 9401 9397
+f 9379 9382 9402
+f 9403 9404 9379
+f 9378 9379 9404
+f 9403 9405 9404
+f 9406 9404 9405
+f 9407 9403 9402
+f 9408 9407 9398
+f 9405 9403 9407
+f 9405 9407 9408
+f 9409 9405 9408
+f 9398 9397 9410
+f 9409 9408 9411
+f 9412 9411 9408
+f 9413 9414 9412
+f 9415 9392 9390
+f 9416 9415 9390
+f 9390 9389 9416
+f 9389 9388 9416
+f 9388 9357 9416
+f 9417 9397 9415
+f 9397 9401 9415
+f 9414 9418 9419
+f 9420 9421 9422
+f 9422 9421 9423
+f 9424 9423 9421
+f 9420 9070 9074
+f 9425 9420 9074
+f 9426 9074 9076
+f 9426 9076 9075
+f 9425 9074 9426
+f 9421 9420 9425
+f 9425 9427 9421
+f 9424 9421 9428
+f 9075 9425 9426
+f 9075 9429 9425
+f 9427 9425 9429
+f 9430 9427 9429
+f 9431 9432 9089
+f 9431 9433 9430
+f 9430 9433 9434
+f 9433 9435 9436
+f 9436 9434 9433
+f 9090 9437 9438
+f 9437 9090 9128
+f 9437 9439 9431
+f 9431 9438 9437
+f 9431 9439 9433
+f 9440 9435 9433
+f 9439 9440 9433
+f 9441 9442 9439
+f 9439 9437 9441
+f 9443 9440 9439
+f 9443 9439 9442
+f 9444 9442 9441
+f 9445 9446 9442
+f 9447 9448 9445
+f 9445 9449 9447
+f 9450 9451 9447
+f 9451 9452 9448
+f 9453 9450 9244
+f 9453 9251 9252
+f 9290 9454 9455
+f 9455 9252 9290
+f 9454 9290 9296
+f 9335 9333 9423
+f 9456 9457 9458
+f 9457 9456 9459
+f 9460 9461 9462
+f 9462 9459 9460
+f 9463 9457 9459
+f 9463 9459 9462
+f 9464 9457 9463
+f 9465 9466 9458
+f 9465 9458 9457
+f 9465 9467 9339
+f 9339 9340 9465
+f 9464 9468 9465
+f 9465 9457 9464
+f 9469 9467 9465
+f 9461 9428 9434
+f 9436 9470 9462
+f 9462 9461 9436
+f 9471 9463 9462
+f 9471 9462 9470
+f 9472 9464 9463
+f 9472 9463 9471
+f 9435 9473 9470
+f 9474 9469 9468
+f 9339 9467 9354
+f 9475 9473 9435
+f 9475 9435 9440
+f 9476 9477 9478
+f 9478 9479 9476
+f 9443 9480 9475
+f 9475 9440 9443
+f 9480 9443 9446
+f 9480 9481 9476
+f 9477 9482 9474
+f 9474 9478 9477
+f 9482 9477 9483
+f 9484 9445 9448
+f 9485 9483 9481
+f 9486 9485 9481
+f 9480 9446 9484
+f 9480 9484 9486
+f 9487 9488 9482
+f 9487 9482 9483
+f 9483 9485 9487
+f 9482 9489 9490
+f 9490 9474 9482
+f 9488 9491 9489
+f 9492 9490 9489
+f 9493 9492 9489
+f 9489 9491 9493
+f 9494 9495 9496
+f 9497 9498 9499
+f 9499 9416 9497
+f 9500 9501 9415
+f 9500 9415 9499
+f 9500 9502 9419
+f 9419 9501 9500
+f 9500 9503 9504
+f 9504 9505 9502
+f 9504 9502 9500
+f 9503 9500 9506
+f 9507 9508 9509
+f 9507 9509 9496
+f 9496 9495 9507
+f 9510 9506 9498
+f 9510 9498 9509
+f 9511 9504 9503
+f 9512 9505 9504
+f 9510 9511 9503
+f 9503 9506 9510
+f 9513 9514 9509
+f 9513 9509 9508
+f 9515 9516 9514
+f 9515 9514 9513
+f 9515 9517 9518
+f 9518 9516 9515
+f 9484 9448 9452
+f 9519 9452 9520
+f 9521 9486 9519
+f 9522 9521 9519
+f 9522 9519 9523
+f 9521 9524 9485
+f 9487 9485 9524
+f 9525 9488 9487
+f 9525 9487 9526
+f 9527 9524 9521
+f 9527 9521 9522
+f 9527 9528 9526
+f 9526 9524 9527
+f 9529 9525 9526
+f 9529 9526 9528
+f 9530 9531 9532
+f 9533 9532 9520
+f 9520 9534 9533
+f 9522 9523 9532
+f 9531 9535 9536
+f 9537 9538 9536
+f 9537 9539 9540
+f 9540 9538 9537
+f 9541 9542 9525
+f 9543 9541 9529
+f 9543 9529 9544
+f 9542 9545 9493
+f 9493 9491 9542
+f 9546 9494 9493
+f 9546 9493 9545
+f 9547 9546 9548
+f 9495 9546 9547
+f 9549 9541 9543
+f 9550 9547 9548
+f 9543 9551 9552
+f 9553 9552 9551
+f 9554 9555 9556
+f 9556 9547 9550
+f 9556 9550 9554
+f 9550 9557 9554
+f 9455 9558 9533
+f 9533 9534 9455
+f 9530 9533 9558
+f 9559 9560 9531
+f 9531 9530 9559
+f 9454 9561 9558
+f 9559 9558 9561
+f 9562 9563 9560
+f 9559 9561 9562
+f 9564 9535 9531
+f 9564 9531 9560
+f 9563 9564 9560
+f 9565 9537 9535
+f 9565 9535 9564
+f 9565 9566 9539
+f 9567 9568 9539
+f 9567 9539 9566
+f 9565 9564 9569
+f 9570 9567 9566
+f 9570 9566 9571
+f 9572 9573 9561
+f 9572 9561 9454
+f 9454 9296 9572
+f 9574 9561 9573
+f 9575 9562 9561
+f 9575 9561 9574
+f 9563 9562 9575
+f 9576 9575 9574
+f 9576 9574 9573
+f 9577 9576 9578
+f 9579 9580 9569
+f 9581 9569 9580
+f 9582 9583 9580
+f 9580 9579 9582
+f 9584 9570 9581
+f 9585 9581 9586
+f 9585 9586 9587
+f 9584 9581 9585
+f 9585 9588 9584
+f 9589 9568 9567
+f 9590 9591 9592
+f 9591 9590 9593
+f 9592 9594 9595
+f 9596 9597 9598
+f 9599 9600 9601
+f 9599 9601 9596
+f 9596 9598 9599
+f 9602 9603 9604
+f 9602 9604 9605
+f 9600 9606 9607
+f 9607 9606 9603
+f 9608 9609 9610
+f 9608 9611 9609
+f 9612 9613 9614
+f 9612 9614 9615
+f 9613 9616 9608
+f 9608 9610 9613
+f 9608 9616 9617
+f 9617 9611 9608
+f 9613 9612 9616
+f 9616 9618 9617
+f 9619 9606 9620
+f 9620 9621 9619
+f 9620 9617 9622
+f 9617 9618 9623
+f 9617 9623 9624
+f 9624 9623 9625
+f 9620 9622 9621
+f 9626 9622 9624
+f 9621 9622 9626
+f 9556 9627 9507
+f 9507 9495 9556
+f 9628 9629 9508
+f 9628 9508 9507
+f 9555 9630 9627
+f 9631 9508 9629
+f 9631 9629 9632
+f 9631 9633 9634
+f 9634 9635 9631
+f 9636 9637 9634
+f 9636 9634 9633
+f 9638 9637 9636
+f 9639 9640 9633
+f 9633 9631 9639
+f 9641 9636 9633
+f 9641 9633 9640
+f 9642 9632 9629
+f 9629 9643 9642
+f 9643 9644 9642
+f 9645 9639 9632
+f 9644 9645 9632
+f 9632 9642 9644
+f 9646 9647 9644
+f 9644 9643 9646
+f 9648 9649 9645
+f 9644 9647 9648
+f 9645 9650 9640
+f 9649 9651 9645
+f 9652 9650 9651
+f 9651 9653 9652
+f 9630 9555 9605
+f 9605 9604 9630
+f 9654 9630 9604
+f 9655 9656 9630
+f 9657 9630 9654
+f 9658 9659 9657
+f 9621 9660 9661
+f 9660 9662 9661
+f 9663 9664 9658
+f 9663 9665 9664
+f 9660 9621 9626
+f 9666 9667 9665
+f 9668 9667 9666
+f 9668 9666 9669
+f 9659 9658 9664
+f 9670 9671 9659
+f 9659 9664 9670
+f 9672 9673 9668
+f 9674 9668 9673
+f 9675 9647 9646
+f 9676 9675 9646
+f 9646 9677 9676
+f 9678 9675 9676
+f 9679 9675 9678
+f 9677 9680 9676
+f 9681 9676 9680
+f 9678 9676 9681
+f 9682 9683 9684
+f 9685 9686 9687
+f 9653 9688 9689
+f 9690 9686 9683
+f 9690 9683 9682
+f 9688 9686 9691
+f 9691 9692 9688
+f 9671 9693 9694
+f 9694 9659 9671
+f 9694 9693 9684
+f 9671 9695 9693
+f 9696 9684 9693
+f 9697 9693 9695
+f 9697 9695 9667
+f 9696 9693 9697
+f 9684 9696 9682
+f 9698 9682 9696
+f 9699 9696 9697
+f 9698 9696 9699
+f 9674 9673 9700
+f 9700 9699 9697
+f 9690 9682 9698
+f 9690 9698 9701
+f 9690 9701 9691
+f 9692 9691 9701
+f 9672 9668 9669
+f 9702 9673 9672
+f 9703 9673 9702
+f 9698 9699 9704
+f 9705 9673 9703
+f 9700 9673 9705
+f 9704 9699 9700
+f 9700 9705 9706
+f 9706 9704 9700
+f 9705 9703 9707
+f 9708 9706 9705
+f 9705 9709 9708
+f 9709 9705 9707
+f 9698 9710 9701
+f 9711 9698 9704
+f 9710 9698 9711
+f 9704 9706 9712
+f 9704 9712 9711
+f 9710 9711 9712
+f 9713 9710 9712
+f 9713 9712 9706
+f 9713 9706 9708
+f 9713 9714 9710
+f 9713 9715 9714
+f 9708 9716 9713
+f 7391 4825 4826
+f 7391 7390 4825
+f 9717 4826 4821
+f 9718 7391 4826
+f 9717 9718 4826
+f 9719 9718 9717
+f 9719 9717 9720
+f 9721 9720 9722
+f 9723 4823 9724
+f 9724 9725 4862
+f 9726 9727 9728
+f 9726 9728 9721
+f 9721 9729 9726
+f 9730 9721 9731
+f 9732 9723 9724
+f 9724 4860 4863
+f 9733 9732 9724
+f 9733 9724 4863
+f 9734 9732 9733
+f 9734 9735 9736
+f 9723 9736 9731
+f 9737 9738 4863
+f 9734 9739 9735
+f 9738 9739 9734
+f 9734 9733 9738
+f 9740 9731 9736
+f 9740 9741 9730
+f 9735 9742 9740
+f 9740 9736 9735
+f 9743 9741 9740
+f 9743 9740 9742
+f 9744 9739 9738
+f 9745 9746 9747
+f 8885 3771 6691
+f 6691 9748 8885
+f 9748 6691 9749
+f 8887 8885 9748
+f 9749 9750 9748
+f 9751 9748 9750
+f 9752 9750 9753
+f 9753 9754 9752
+f 9752 9755 9756
+f 9755 9752 9754
+f 6694 6698 9757
+f 9758 9757 6698
+f 9753 9757 9758
+f 6698 9759 9758
+f 6717 9759 6698
+f 6717 9760 9759
+f 9761 9759 9760
+f 9759 9761 9758
+f 9761 9762 9754
+f 9762 9761 9763
+f 9763 9761 9764
+f 8901 8900 9765
+f 9765 9766 8901
+f 9766 9765 9767
+f 9755 9768 9767
+f 9767 9756 9755
+f 8905 8901 9766
+f 8907 8905 9769
+f 9769 9766 9767
+f 9768 9770 9767
+f 9763 9771 9762
+f 9772 9773 9771
+f 9774 9775 9776
+f 9777 9760 6716
+f 6725 6716 6718
+f 9778 9760 9777
+f 9778 9777 6725
+f 9779 9764 9760
+f 9780 9772 9764
+f 9779 9760 9778
+f 9781 9779 9778
+f 6726 9782 9783
+f 9782 9784 9785
+f 9785 9783 9782
+f 9778 9786 9781
+f 9787 9781 9786
+f 9784 9788 9786
+f 9786 9785 9784
+f 9787 9786 9788
+f 9773 9780 9789
+f 9773 9772 9780
+f 9790 9789 9791
+f 9792 9793 9790
+f 9773 9789 9794
+f 9794 9775 9774
+f 9795 9787 9796
+f 9797 9793 9792
+f 9798 9799 9795
+f 9797 9792 9798
+f 9800 9801 9802
+f 9803 9804 9800
+f 9776 9805 9806
+f 9802 9805 9776
+f 9807 9802 9776
+f 9807 9800 9802
+f 9775 9807 9776
+f 9808 9800 9807
+f 9809 9803 9800
+f 9810 9808 9807
+f 9811 9808 9810
+f 9812 8941 9813
+f 9812 8953 8942
+f 9814 8952 8953
+f 9814 9812 9815
+f 9816 9814 9815
+f 9816 9817 8956
+f 8956 9818 8957
+f 9817 9819 9820
+f 9820 9821 9817
+f 9822 9803 9809
+f 9823 9824 9804
+f 9823 9804 9803
+f 9825 9809 9811
+f 9822 9809 9825
+f 9826 9823 9822
+f 9827 9819 9824
+f 9827 9824 9823
+f 9827 9820 9819
+f 9828 9827 9829
+f 9810 9807 9775
+f 9830 9810 9831
+f 9810 9830 9811
+f 9832 9833 9793
+f 9834 9832 9797
+f 9835 9833 9832
+f 9835 9836 9837
+f 9838 9836 9835
+f 9839 9822 9825
+f 9830 9825 9811
+f 9839 9825 9830
+f 9840 9822 9839
+f 9831 9841 9830
+f 9842 9830 9841
+f 9840 9839 9842
+f 9842 9843 9840
+f 9841 9844 9842
+f 9844 9843 9842
+f 9845 9829 9843
+f 9843 9846 9845
+f 9847 9848 9837
+f 9847 9837 9836
+f 9849 9844 9841
+f 9847 9849 9848
+f 9850 9844 9851
+f 9847 9852 9853
+f 9853 9852 9854
+f 9854 9855 9853
+f 6931 9856 9782
+f 9784 9782 9856
+f 9856 6931 6932
+f 6932 9857 9856
+f 9856 9858 9788
+f 9788 9784 9856
+f 9796 9788 9858
+f 9859 9858 9856
+f 9856 9857 9859
+f 9860 9858 9861
+f 9859 9857 9862
+f 9862 9857 6951
+f 9862 6951 9863
+f 9862 9864 9859
+f 9861 9859 9864
+f 9865 9866 9861
+f 9796 9860 9795
+f 9867 9795 9860
+f 9868 9795 9867
+f 9868 9798 9795
+f 9869 9797 9798
+f 9869 9798 9868
+f 9869 9834 9797
+f 9870 9860 9861
+f 9871 9870 9861
+f 9872 9867 9870
+f 9872 9870 9871
+f 9873 9868 9867
+f 9873 9867 9872
+f 9863 6951 6983
+f 9874 6988 9875
+f 6987 9876 6988
+f 9876 9877 6988
+f 9878 6988 9877
+f 9877 9879 9878
+f 9880 9865 9875
+f 9878 9879 9880
+f 9881 9880 9879
+f 9879 9877 9882
+f 9877 9876 9883
+f 9884 9885 9877
+f 9882 9877 9885
+f 9872 9871 9886
+f 9887 9888 9889
+f 9889 9890 9891
+f 9891 9892 9889
+f 9891 9893 9892
+f 9894 9895 9896
+f 9895 9894 9897
+f 9898 9897 9892
+f 9899 9895 9897
+f 9900 9834 9869
+f 9901 9900 9869
+f 9868 9901 9869
+f 9902 9838 9900
+f 9903 9902 9904
+f 9905 9906 9907
+f 9907 9901 9905
+f 9908 9909 9901
+f 9905 9901 9909
+f 9910 9911 9905
+f 9906 9911 9912
+f 9905 9911 9906
+f 9907 9913 9914
+f 9914 9904 9907
+f 9913 9907 9906
+f 9913 9915 9916
+f 9916 9914 9913
+f 9906 9912 9917
+f 9906 9917 9913
+f 9918 9917 9912
+f 9919 9920 9838
+f 9921 9919 9903
+f 9855 9854 9922
+f 9923 9921 9924
+f 9925 9916 9915
+f 9926 9927 9924
+f 9924 9925 9926
+f 9915 9928 9926
+f 9929 9928 9930
+f 9929 9930 9931
+f 9932 9933 9928
+f 9932 9928 9929
+f 9934 9935 9924
+f 9934 9924 9927
+f 9935 9934 9936
+f 9935 9936 9937
+f 9927 9933 9934
+f 9938 9936 9934
+f 9932 9939 9934
+f 9934 9933 9932
+f 9938 9934 9939
+f 9910 9909 9940
+f 9941 9942 9911
+f 9943 9911 9942
+f 9944 9942 9941
+f 9941 9940 9896
+f 9945 9946 9943
+f 9945 9943 9947
+f 9948 9949 9945
+f 9946 9949 9950
+f 9946 9950 9951
+f 9952 9950 9949
+f 9952 9949 9948
+f 9953 9954 9955
+f 9956 9955 9899
+f 9956 9957 9953
+f 9956 9953 9955
+f 9953 9957 9958
+f 9958 9952 9948
+f 9958 9948 9953
+f 9959 9932 9929
+f 9950 9959 9929
+f 9929 9931 9951
+f 9929 9951 9950
+f 9959 9950 9952
+f 9939 9960 9961
+f 9961 9962 9939
+f 9959 9960 9939
+f 9963 9964 9961
+f 9965 9966 9967
+f 9968 9818 9817
+f 9968 9817 9821
+f 9968 9969 9970
+f 9970 9818 9968
+f 9818 8958 8957
+f 9152 8958 9818
+f 9970 9152 9818
+f 9971 9970 9969
+f 9972 9157 9156
+f 9971 9152 9970
+f 9156 9152 9971
+f 9973 9972 9974
+f 9821 9820 9975
+f 9976 9977 9978
+f 9976 9969 9977
+f 9979 9978 9828
+f 9980 9969 9976
+f 9981 9969 9980
+f 9982 9983 9980
+f 9981 9971 9969
+f 9984 9172 9985
+f 9986 9985 9973
+f 9987 9973 9974
+f 9988 9989 9986
+f 9986 9989 9984
+f 9176 9990 9175
+f 9991 9175 9990
+f 9989 9990 9176
+f 9176 9984 9989
+f 9990 9992 9991
+f 9993 9988 9987
+f 9988 9994 9989
+f 9988 9995 9996
+f 9994 9997 9990
+f 9992 9990 9997
+f 9997 9998 9992
+f 9999 9992 9998
+f 10000 9828 9845
+f 10001 9979 10000
+f 10002 10003 10001
+f 10004 9846 9850
+f 10000 9845 9846
+f 9846 10004 10000
+f 10004 10001 10000
+f 10005 10002 10004
+f 10003 10006 9983
+f 10006 10003 10007
+f 10006 10008 9983
+f 10009 10007 10002
+f 10005 10009 10002
+f 10010 10011 10012
+f 10013 10014 10011
+f 10011 10010 10013
+f 10014 10013 10015
+f 10016 10005 10012
+f 10011 10017 10016
+f 10016 10012 10011
+f 10018 10009 10016
+f 10017 10019 10018
+f 10018 10016 10017
+f 10019 10020 10021
+f 10021 10018 10019
+f 10022 10023 10024
+f 10025 10020 10019
+f 10025 10024 10023
+f 10026 10025 10023
+f 10027 10028 10029
+f 10029 10006 10027
+f 10028 10027 10030
+f 10028 10031 10029
+f 10032 10033 10031
+f 10034 10035 10036
+f 10037 10038 10032
+f 10039 10036 10037
+f 10040 10037 10036
+f 10041 10038 10037
+f 10042 10041 10043
+f 10044 10043 10040
+f 10042 10043 10044
+f 10045 10040 10036
+f 10036 10046 10045
+f 10046 10036 10035
+f 10047 10040 10045
+f 10046 10048 10047
+f 10047 10045 10046
+f 10047 10049 10044
+f 10044 10040 10047
+f 10049 10047 10048
+f 10021 10050 10034
+f 10051 10052 10053
+f 10051 10053 10054
+f 10055 10052 10051
+f 10035 10052 10046
+f 10056 10048 10046
+f 10052 10056 10046
+f 10057 10058 10059
+f 10060 9267 10061
+f 10062 10060 10061
+f 10062 10061 10063
+f 10064 10065 10066
+f 10064 10067 9270
+f 9270 10065 10064
+f 10068 10067 10069
+f 10070 10071 10062
+f 10071 10072 10073
+f 10073 10062 10071
+f 10068 10069 10074
+f 9271 9270 10067
+f 10075 9271 10067
+f 10075 10067 10068
+f 10075 10076 9272
+f 10075 10077 10078
+f 10076 10079 9275
+f 10080 10078 10077
+f 10080 10081 10082
+f 10078 10082 10079
+f 10079 10076 10078
+f 10082 10078 10080
+f 10083 10082 10081
+f 10071 10070 9999
+f 10071 9999 10084
+f 10085 10072 10071
+f 10085 10071 10084
+f 10086 10068 10074
+f 10072 10086 10074
+f 10086 10072 10085
+f 10087 10068 10086
+f 10042 10088 10084
+f 10089 10086 10085
+f 10089 10085 10088
+f 10089 10090 10091
+f 10091 10086 10089
+f 10077 10087 10091
+f 10092 10091 10090
+f 10092 10093 10094
+f 10092 10094 10081
+f 10081 10080 10092
+f 10080 10077 10092
+f 10095 9282 9275
+f 10095 9275 10079
+f 10096 9284 9282
+f 10096 9282 10095
+f 9284 10096 9283
+f 10079 10082 10095
+f 10082 10097 10096
+f 10096 10098 9291
+f 9291 9283 10096
+f 10098 10096 10097
+f 10099 9292 9291
+f 10100 9292 10099
+f 9298 9297 10100
+f 10101 10102 9298
+f 10103 10100 10099
+f 10103 10104 10105
+f 10105 10100 10103
+f 10106 10101 10105
+f 10106 10105 10104
+f 10107 10108 10109
+f 10107 10109 10098
+f 10107 10098 10097
+f 10097 10094 10110
+f 10094 10111 10110
+f 10097 10110 10107
+f 10112 10109 10108
+f 10098 10109 10113
+f 10098 10113 10114
+f 10115 10103 10114
+f 10115 10114 10113
+f 10116 10103 10115
+f 10115 10113 10109
+f 10117 10116 10115
+f 10117 10115 10118
+f 10088 10042 10119
+f 10120 10121 10122
+f 10122 10090 10089
+f 10122 10089 10120
+f 10059 10123 10120
+f 10124 10120 10123
+f 10125 10120 10124
+f 10126 10122 10121
+f 10090 10122 10092
+f 10122 10127 10093
+f 10093 10092 10122
+f 10124 10123 10058
+f 10123 10059 10058
+f 10126 10125 10128
+f 10129 10130 10127
+f 10127 10126 10129
+f 10131 10132 10127
+f 10131 10127 10130
+f 10111 10133 10110
+f 10134 10133 10132
+f 10135 10136 10134
+f 10137 10138 10118
+f 10118 10138 10117
+f 10139 10138 10137
+f 10140 10138 10139
+f 10141 10138 10140
+f 10132 10142 10134
+f 10142 10132 10131
+f 10143 10140 10139
+f 10143 10139 10144
+f 10143 10145 10146
+f 10147 10148 10145
+f 10149 10150 10015
+f 10151 10152 9937
+f 10153 10149 10151
+f 10149 10154 10022
+f 10149 10153 10154
+f 10155 10026 10023
+f 10155 10023 10156
+f 10157 10156 10154
+f 10158 10157 10154
+f 10154 10153 10158
+f 10156 10159 10160
+f 10160 10155 10156
+f 10159 10156 10157
+f 10161 10162 9936
+f 10161 10163 10158
+f 10158 10162 10161
+f 10164 10165 10161
+f 9962 10164 10161
+f 10163 10166 10159
+f 10163 10159 10157
+f 10167 10163 10168
+f 10169 10054 10026
+f 10170 10169 10171
+f 10054 10169 10051
+f 10170 10172 10173
+f 10055 10051 10169
+f 10155 10160 10171
+f 10174 10172 10170
+f 10055 10173 10175
+f 10174 10176 10166
+f 10177 9961 10178
+f 10179 10173 10180
+f 10181 10182 10179
+f 10180 10183 10179
+f 10184 10185 10186
+f 10184 10186 10181
+f 10184 10181 10179
+f 10179 10183 10184
+f 10187 10186 10185
+f 10188 10184 10189
+f 10190 10188 10189
+f 10189 10191 10190
+f 10128 10058 10182
+f 10192 10186 10187
+f 10193 10192 10194
+f 10194 10195 10193
+f 10196 10194 10192
+f 10194 10197 10198
+f 10198 10195 10194
+f 10197 10194 10196
+f 10199 10196 10192
+f 10197 10196 10199
+f 10200 10201 10202
+f 10201 10203 10204
+f 10204 10202 10201
+f 10205 10206 10204
+f 10205 10204 10203
+f 10203 10201 10198
+f 10206 10205 10147
+f 10207 10147 10205
+f 10198 10208 10209
+f 10208 10198 10197
+f 10210 10211 10212
+f 10213 10214 10208
+f 10214 10213 10215
+f 10210 10216 10217
+f 10217 10211 10210
+f 10218 10216 10210
+f 10210 10215 10218
+f 10216 10218 10219
+f 10219 10220 10216
+f 10221 10222 10223
+f 10223 10192 10187
+f 10223 10187 10221
+f 10222 10224 10225
+f 10225 10223 10222
+f 10223 10226 10199
+f 10199 10227 10228
+f 10228 10197 10199
+f 10227 10199 10226
+f 10224 10229 10226
+f 10226 10225 10224
+f 10230 10227 10226
+f 10230 10226 10229
+f 10230 10231 10232
+f 10232 10233 10227
+f 10230 10232 10227
+f 10234 10224 10222
+f 10234 10235 10236
+f 10236 10229 10224
+f 10237 10229 10236
+f 10235 10238 10237
+f 10237 10236 10235
+f 10238 10231 10237
+f 10239 10235 10234
+f 10240 10239 10234
+f 10238 10235 10239
+f 10241 10238 10239
+f 10197 10228 10208
+f 10242 10208 10228
+f 10242 10228 10233
+f 10243 10215 10213
+f 10243 10244 10215
+f 10244 10245 10246
+f 10232 10247 10243
+f 10243 10233 10232
+f 10231 10248 10247
+f 10249 10244 10247
+f 10249 10247 10248
+f 10250 10251 10244
+f 10250 10244 10249
+f 10252 10218 10246
+f 10245 10253 10254
+f 10254 10246 10245
+f 10253 10245 10251
+f 10255 10253 10251
+f 10255 10251 10250
+f 10256 10253 10255
+f 10257 10248 10231
+f 10257 10231 10238
+f 10257 10249 10248
+f 10258 10250 10249
+f 10258 10249 10257
+f 10259 10238 10241
+f 10260 10259 10241
+f 10261 10262 10259
+f 10263 10262 10261
+f 10255 10250 10258
+f 10264 10265 10266
+f 10267 10264 10266
+f 10268 10263 10269
+f 10252 10219 10218
+f 10254 10270 10252
+f 10271 10254 10253
+f 10256 10271 10253
+f 10272 9885 9884
+f 9884 9883 7137
+f 10273 10272 7137
+f 10274 10273 7137
+f 7137 7136 10274
+f 10275 10273 10274
+f 10276 10277 10278
+f 10279 10280 10276
+f 10276 10278 10279
+f 10281 10274 7136
+f 10281 7136 10282
+f 10282 7136 7144
+f 10283 10275 10274
+f 10284 10283 10281
+f 10285 10282 7144
+f 10285 7144 7146
+f 10285 10286 10282
+f 10285 7146 10287
+f 10288 10286 10285
+f 10288 10285 10287
+f 10284 10282 10289
+f 10289 10282 10286
+f 10290 10286 10288
+f 10291 10289 10290
+f 10292 10279 10275
+f 10292 10275 10283
+f 10293 10292 10283
+f 10294 10292 10293
+f 10280 10279 10292
+f 10295 10294 10296
+f 10297 10298 10295
+f 10299 10295 10296
+f 10299 10296 10300
+f 10299 10301 10297
+f 10297 10295 10299
+f 9893 10277 10276
+f 10302 10303 9898
+f 10304 10303 10302
+f 10304 10276 10280
+f 10304 10305 10303
+f 10305 10306 10307
+f 10308 10307 10306
+f 10303 10309 9897
+f 9897 9898 10303
+f 10309 10310 10311
+f 10311 9897 10309
+f 10305 10312 10309
+f 10309 10303 10305
+f 10309 10312 10313
+f 10313 10310 10309
+f 10314 9899 10310
+f 10314 10310 10313
+f 10312 10305 10307
+f 10315 10313 10312
+f 10315 10312 10307
+f 10315 10307 10308
+f 10315 10316 10314
+f 10314 10313 10315
+f 10317 10280 10298
+f 10318 10317 10298
+f 10319 10320 10306
+f 10321 10322 10308
+f 10323 10324 10297
+f 10323 10297 10301
+f 10324 10323 10325
+f 10326 10322 10327
+f 10325 10328 10327
+f 10329 10327 10328
+f 10327 10329 10326
+f 10308 10330 10315
+f 10330 10308 10322
+f 10331 10316 10315
+f 10331 10315 10330
+f 10330 10322 10326
+f 10326 10332 10330
+f 10333 10334 10335
+f 10332 10335 10336
+f 10335 10332 10333
+f 10287 10337 10338
+f 10290 10288 10338
+f 10290 10338 10339
+f 10290 10339 10291
+f 10291 10340 10300
+f 10341 10342 10340
+f 10301 10343 10323
+f 10323 10344 10328
+f 10344 10329 10328
+f 10345 10334 10333
+f 10345 10333 10346
+f 10347 10332 10348
+f 10333 10332 10347
+f 10349 10339 10338
+f 7169 10349 10338
+f 10350 10351 10341
+f 7169 7172 10352
+f 10353 10354 10355
+f 10355 10348 10329
+f 10351 10350 10353
+f 10348 10355 10356
+f 10346 10333 10347
+f 10346 10347 10357
+f 10356 10358 10357
+f 10359 10360 10361
+f 10361 10358 10359
+f 10362 10363 10353
+f 10364 10365 10363
+f 10366 10364 10363
+f 10367 10368 10369
+f 10369 10365 10367
+f 10370 10371 10359
+f 10372 10367 10373
+f 10374 10375 10376
+f 10376 10370 10377
+f 10377 10374 10376
+f 10314 10378 9956
+f 9956 10379 9957
+f 10380 10381 10382
+f 10383 10384 10334
+f 10385 10384 10383
+f 10386 10387 10388
+f 10380 10385 10389
+f 10380 10389 10390
+f 10386 10388 10391
+f 10392 10393 10394
+f 10395 10396 10388
+f 10396 10391 10388
+f 10397 10398 10393
+f 10399 10398 10397
+f 10400 10401 10402
+f 10402 10403 10400
+f 10404 10402 10401
+f 10405 10406 10407
+f 10408 10407 10406
+f 10408 10409 10410
+f 10409 10411 10412
+f 10412 10410 10409
+f 10393 10413 10406
+f 10413 10414 10409
+f 10414 10411 10409
+f 10415 10414 10413
+f 10408 10413 10409
+f 10416 10412 10411
+f 10412 10416 10417
+f 10416 10418 10417
+f 10419 10420 10411
+f 10411 10414 10419
+f 10421 10420 10419
+f 10416 10411 10420
+f 10416 10422 10418
+f 10420 10421 10422
+f 10423 10418 10422
+f 10424 10422 10421
+f 10422 10425 10426
+f 10426 10423 10422
+f 10425 10422 10424
+f 10427 10428 10429
+f 10430 10431 10427
+f 10432 10428 10431
+f 10428 10427 10431
+f 10433 10434 10435
+f 10436 10431 10434
+f 10430 10434 10431
+f 10432 10431 10436
+f 10436 10434 10433
+f 10437 10438 10439
+f 10440 10441 10442
+f 10443 10387 10442
+f 10441 10444 10443
+f 10445 10439 10441
+f 10441 10440 10445
+f 10446 10445 10440
+f 10440 10447 10446
+f 10445 10446 10448
+f 10439 10445 10449
+f 10448 10449 10445
+f 10450 10448 10446
+f 10446 10447 10451
+f 10450 10451 10346
+f 10450 10346 10361
+f 10448 10450 10452
+f 10438 10444 10441
+f 10453 10454 10455
+f 10453 10456 10454
+f 10456 10457 10454
+f 10458 10459 10460
+f 10460 10453 10458
+f 10395 10455 10396
+f 10461 10462 10388
+f 10462 10455 10395
+f 10396 10455 10399
+f 10398 10399 10454
+f 10463 10439 10464
+f 10465 10463 10464
+f 10463 10466 10437
+f 10437 10439 10463
+f 10466 10467 10468
+f 10468 10437 10466
+f 10466 10463 10465
+f 10469 10470 10465
+f 10471 10470 10469
+f 10472 10467 10473
+f 10473 10467 10474
+f 10475 10476 10448
+f 10449 10464 10439
+f 10464 10449 10476
+f 10476 10475 10477
+f 10464 10476 10469
+f 10475 10448 10452
+f 10475 10452 10478
+f 10452 10479 10478
+f 10480 10477 10481
+f 10482 10480 10483
+f 10484 10483 10480
+f 10480 10481 10484
+f 10485 10484 10481
+f 10486 10485 10481
+f 10481 10477 10478
+f 10468 10467 10487
+f 10427 10459 10488
+f 10488 10459 10489
+f 10459 10427 10429
+f 10430 10427 10488
+f 10430 10488 10490
+f 10458 10489 10459
+f 10491 10492 10493
+f 10494 10435 10434
+f 10494 10493 10492
+f 10495 10467 10472
+f 10491 10493 10472
+f 10491 10472 10496
+f 10429 10497 10498
+f 10499 10500 10501
+f 10502 10503 10504
+f 10505 10497 10428
+f 10506 10499 10497
+f 10505 10506 10497
+f 10507 10505 10428
+f 10507 10428 10432
+f 10506 10505 10507
+f 10506 10507 10508
+f 10509 10507 10510
+f 10509 10511 10508
+f 10508 10507 10509
+f 10512 10513 10509
+f 10514 10511 10509
+f 10514 10509 10513
+f 10515 10516 10517
+f 10518 10515 10519
+f 10518 10519 10520
+f 10521 10522 10523
+f 10524 10522 10521
+f 10515 10525 10524
+f 10526 10527 10528
+f 10529 10530 10531
+f 10526 10531 10527
+f 10532 10500 10526
+f 10526 10528 10532
+f 10533 10429 10498
+f 10533 10498 10532
+f 10501 10532 10498
+f 10528 10457 10534
+f 10504 10535 10526
+f 10536 10535 10504
+f 10537 10538 10539
+f 10535 10540 10537
+f 10541 10537 10540
+f 10542 10536 10523
+f 10536 10542 10540
+f 10542 10543 10541
+f 10541 10540 10542
+f 10541 10544 10537
+f 10537 10544 10538
+f 10545 10546 10547
+f 10548 10545 10547
+f 10549 10550 10551
+f 10545 10549 10551
+f 10551 10546 10545
+f 10552 10543 10542
+f 10522 10552 10542
+f 10542 10523 10522
+f 10553 10548 10543
+f 10553 10543 10552
+f 10554 10524 10525
+f 10554 10555 10552
+f 10555 10556 10553
+f 10553 10557 10545
+f 10557 10553 10556
+f 10558 9957 10379
+f 10559 10560 10378
+f 10378 10561 10559
+f 10562 10558 10379
+f 10563 9957 10558
+f 10564 10565 10566
+f 10564 10566 10558
+f 10558 10567 10564
+f 10568 10569 10570
+f 10571 10559 10561
+f 10572 10559 10571
+f 10571 10380 10572
+f 10573 10562 10560
+f 10573 10560 10572
+f 10574 10562 10573
+f 10575 10564 10567
+f 10574 10575 10567
+f 10576 10565 10564
+f 10577 10575 10574
+f 10577 10574 10390
+f 10577 10392 10576
+f 10576 10575 10577
+f 10405 10578 10394
+f 10579 10580 9966
+f 10403 10402 10581
+f 10581 10582 10403
+f 10583 10579 10581
+f 10402 10583 10581
+f 10583 10584 10585
+f 10579 10585 10580
+f 10586 9966 10580
+f 9964 9963 10587
+f 10585 10588 10589
+f 10585 10589 10586
+f 10588 10585 10584
+f 10586 10589 10587
+f 10590 10589 10588
+f 10591 10589 10590
+f 10588 10584 10417
+f 10417 10418 10588
+f 10592 10588 10418
+f 10592 10418 10423
+f 10593 10486 10478
+f 10478 10594 10593
+f 10375 10595 10593
+f 10596 10425 10597
+f 10549 10598 10599
+f 10599 10600 10550
+f 10599 10550 10549
+f 10598 10601 10602
+f 10598 10549 10557
+f 10603 10604 10605
+f 10605 10606 10601
+f 7255 10607 10608
+f 10609 10610 10607
+f 10611 10612 10613
+f 10611 10613 10614
+f 10611 10614 10615
+f 10613 10616 10610
+f 10617 10610 10616
+f 10612 10618 10616
+f 10616 10613 10612
+f 10619 10617 10616
+f 10620 10618 10621
+f 10622 10623 10624
+f 10620 10621 10625
+f 10626 10627 10611
+f 10626 10611 10615
+f 10618 10620 10619
+f 10628 10629 10627
+f 10630 7263 7257
+f 10630 7257 10608
+f 10631 7265 7263
+f 10632 10631 10633
+f 10634 10633 10635
+f 10636 10637 10634
+f 10638 10634 10617
+f 7274 7267 10639
+f 10639 10640 10641
+f 10642 7274 10641
+f 10643 10640 10644
+f 10643 10644 10645
+f 7274 10642 7275
+f 10646 7275 10642
+f 10646 10647 7444
+f 10648 10649 10646
+f 10648 10646 10642
+f 10649 10650 10647
+f 10651 10652 10636
+f 10651 10636 10638
+f 10652 10653 10645
+f 10654 10653 10652
+f 10652 10655 10654
+f 10620 10625 10656
+f 10651 10657 10652
+f 10657 10655 10652
+f 10620 10656 10638
+f 10620 10638 10619
+f 10643 10645 10653
+f 10658 10643 10659
+f 10660 10659 10653
+f 10660 10653 10654
+f 10661 10658 10659
+f 10661 10659 10660
+f 10649 10658 10662
+f 10662 10658 10661
+f 10654 10663 10664
+f 10665 10664 10666
+f 10667 10668 10669
+f 10669 10670 10667
+f 10671 10670 10669
+f 10672 10673 10674
+f 10673 10672 10675
+f 10676 10669 10668
+f 10676 10674 10671
+f 10677 10672 10674
+f 10674 10676 10677
+f 10675 10672 10677
+f 10678 10667 10670
+f 10667 10678 10624
+f 10679 10624 10680
+f 10679 10681 10624
+f 10682 10679 10683
+f 10682 10684 10679
+f 10628 10685 10683
+f 10685 10682 10683
+f 10685 10686 10682
+f 10687 10685 10688
+f 10689 10690 10687
+f 10685 10687 10690
+f 10685 10690 10686
+f 10691 10692 10693
+f 10694 10695 10696
+f 10694 10696 10697
+f 10681 10668 10667
+f 10698 10699 10700
+f 10700 10701 10698
+f 10699 10702 10703
+f 10700 10668 10701
+f 10677 10668 10700
+f 10700 10703 10677
+f 10704 10682 10686
+f 10698 10682 10704
+f 10686 10705 10704
+f 10692 10706 10705
+f 10691 10707 10706
+f 10698 10706 10707
+f 10708 10707 10691
+f 10702 10699 10707
+f 10709 10710 10711
+f 10712 10713 10714
+f 10715 10714 10716
+f 10717 10718 10719
+f 10720 10718 10717
+f 10721 10674 10710
+f 10722 10721 10710
+f 10709 10723 10724
+f 10723 10716 10720
+f 10715 10723 10709
+f 10725 10716 10714
+f 10725 10726 10727
+f 10728 10729 10730
+f 10731 10718 10720
+f 10720 10716 10732
+f 10733 10732 10727
+f 10727 10728 10733
+f 10730 10733 10728
+f 10733 10734 10731
+f 10733 10731 10732
+f 10735 10733 10730
+f 10657 10625 10736
+f 10737 10736 10738
+f 10737 10657 10736
+f 10737 10739 10657
+f 10663 10739 10740
+f 10740 10741 10663
+f 10740 10737 10738
+f 10717 10740 10738
+f 10741 10664 10663
+f 10666 10664 10741
+f 10666 10742 10743
+f 10742 10744 10743
+f 10745 10743 10744
+f 10746 10741 10719
+f 10746 10747 10744
+f 10717 10719 10740
+f 10718 10731 10748
+f 10749 10750 10751
+f 10752 10753 10750
+f 10754 10751 10753
+f 10754 10753 7351
+f 10755 10615 10749
+f 10755 10749 10751
+f 10756 10615 10755
+f 10757 10758 10759
+f 10760 10754 10759
+f 10760 10761 10762
+f 10763 10761 10760
+f 10763 10760 10758
+f 10764 10765 10766
+f 10766 10767 10764
+f 10768 10769 10756
+f 10768 10756 10762
+f 10770 10771 10772
+f 10761 10773 10768
+f 10774 10773 10761
+f 10774 10761 10763
+f 10775 10776 10777
+f 10773 10777 10776
+f 10776 10778 10773
+f 10777 10773 10774
+f 10778 10779 10780
+f 10778 10781 10779
+f 10776 10782 10778
+f 10782 10776 10775
+f 10778 10782 10781
+f 9718 10783 7391
+f 7389 7391 10783
+f 10784 7397 7389
+f 10785 10784 7389
+f 10785 7389 10786
+f 10787 10783 9718
+f 10787 9718 9719
+f 10787 9719 10788
+f 9719 9728 10788
+f 10789 10787 10788
+f 10790 10791 10757
+f 10791 10792 10758
+f 10758 10757 10791
+f 7407 10793 10791
+f 10791 10794 10792
+f 10794 10791 10793
+f 10795 10796 10797
+f 10798 10797 10796
+f 10798 10758 10799
+f 10800 7398 10801
+f 10802 10800 10801
+f 10802 10803 10804
+f 10804 7413 7411
+f 10804 10800 10802
+f 10804 10803 10794
+f 10805 7416 7413
+f 7413 10804 10805
+f 10806 10801 10807
+f 10806 10808 10803
+f 10803 10802 10806
+f 10808 10806 10797
+f 10807 10797 10806
+f 10789 10788 10809
+f 10810 10811 10809
+f 10810 10809 9727
+f 10811 10812 10813
+f 10813 10809 10811
+f 10814 10789 10813
+f 10813 10815 10814
+f 10775 10815 10816
+f 10814 10817 10795
+f 10818 10764 10811
+f 10818 10811 10810
+f 10811 10764 10767
+f 10819 10765 10764
+f 10818 10810 10820
+f 10820 10821 10818
+f 10822 10819 10818
+f 10821 10822 10818
+f 10821 10823 10822
+f 10763 10824 10825
+f 10825 10774 10763
+f 10824 10763 10798
+f 10775 10777 10825
+f 10824 10795 10817
+f 10798 10796 10824
+f 10757 7431 7432
+f 7432 7407 10790
+f 7432 10790 10757
+f 10826 10827 10828
+f 10781 10767 10827
+f 10829 10830 10831
+f 10829 10832 10833
+f 10833 10830 10829
+f 10829 10831 10834
+f 10829 10834 10835
+f 10836 10832 10829
+f 10836 10829 10835
+f 10837 10688 10772
+f 10837 10772 10771
+f 10838 10688 10837
+f 10839 10837 10840
+f 10839 10840 10841
+f 10771 10840 10837
+f 10839 10842 10838
+f 10838 10837 10839
+f 10843 10688 10838
+f 10843 10842 10844
+f 10841 10826 10839
+f 10839 10826 10842
+f 10845 10846 10847
+f 10845 10847 10833
+f 10848 10849 10846
+f 10848 10846 10845
+f 10846 10850 10844
+f 10844 10850 10851
+f 10849 10693 10850
+f 10851 10850 10693
+f 10846 10844 10847
+f 10852 10853 10854
+f 10855 10853 10694
+f 10856 10845 10833
+f 10856 10833 10832
+f 10857 10848 10858
+f 10859 10858 10860
+f 10689 10851 10861
+f 10861 10851 10692
+f 10862 10863 10765
+f 10862 10765 10819
+f 10864 10863 10862
+f 10865 10862 10819
+f 10865 10819 10822
+f 10866 10864 10862
+f 10835 10834 10864
+f 10867 10866 10865
+f 10823 10867 10865
+f 10865 10822 10823
+f 10867 10868 10869
+f 10869 10866 10867
+f 10869 10870 10859
+f 10859 10860 10869
+f 10860 10871 10869
+f 10871 10836 10869
+f 10872 7173 7447
+f 10873 10874 10366
+f 10366 10872 10873
+f 10875 10876 7439
+f 10876 10877 7439
+f 10878 10879 10880
+f 10878 10881 10876
+f 10882 10877 10876
+f 10883 10884 10878
+f 10883 10885 10884
+f 10884 10886 10881
+f 10887 10882 10881
+f 10887 10881 10886
+f 10885 10888 10886
+f 10886 10884 10885
+f 10888 10889 10887
+f 10887 10886 10888
+f 10890 10883 10891
+f 10890 10891 10892
+f 10893 10885 10883
+f 10893 10883 10890
+f 10894 10893 10890
+f 10894 10890 10895
+f 10888 10885 10893
+f 10873 10882 10887
+f 10873 10887 10889
+f 10874 10873 10889
+f 10889 10896 10874
+f 10897 10898 10899
+f 10899 10898 10900
+f 10901 10899 10900
+f 10900 10902 10903
+f 10900 10903 10901
+f 10366 10901 10903
+f 10903 10904 10364
+f 10903 10364 10366
+f 10905 10906 10907
+f 10902 10908 10905
+f 10904 10902 10905
+f 10909 10910 10375
+f 10909 10375 10374
+f 10908 10911 10909
+f 10911 10730 10729
+f 10909 10911 10910
+f 10912 10908 10913
+f 10912 10913 10898
+f 10898 10913 10902
+f 10900 10898 10902
+f 10902 10913 10908
+f 10914 10915 10916
+f 10916 10915 10917
+f 10914 10918 10919
+f 10915 10914 10919
+f 10920 10895 10921
+f 10745 10920 10921
+f 10916 10894 10895
+f 10916 10895 10920
+f 10896 10894 10916
+f 10874 10896 10917
+f 10874 10917 10901
+f 10922 10735 10897
+f 10923 10675 10924
+f 10924 10925 10923
+f 10926 10927 10928
+f 10927 10929 10930
+f 10927 10930 10928
+f 10930 10931 10932
+f 10933 10934 10932
+f 10935 10930 10936
+f 10936 10937 10923
+f 10923 10935 10936
+f 10934 10936 10930
+f 10938 10939 10926
+f 10940 10939 10938
+f 10941 10942 10943
+f 10942 10433 10944
+f 10512 10945 10946
+f 10947 10946 10948
+f 10948 10949 10947
+f 10945 10433 10942
+f 10939 10950 10927
+f 10929 10927 10950
+f 10951 10941 10950
+f 10951 10950 10939
+f 10941 10943 10950
+f 10927 10926 10939
+f 10939 10940 10951
+f 10948 10941 10951
+f 10952 10949 10948
+f 10953 10951 10940
+f 10940 10954 10953
+f 10955 10956 10957
+f 10958 10956 10959
+f 10708 10695 10960
+f 10961 10962 10960
+f 10694 10963 10695
+f 10964 10965 10966
+f 10967 10925 10924
+f 10703 10967 10924
+f 10925 10967 10968
+f 10925 10968 10935
+f 10969 10928 10970
+f 10930 10968 10970
+f 10935 10968 10930
+f 10938 10926 10959
+f 10971 10938 10972
+f 10973 10940 10971
+f 10974 10975 10973
+f 10973 10971 10974
+f 10966 10976 10977
+f 10977 10955 10966
+f 10978 10975 10974
+f 10978 10974 10976
+f 10979 10954 10973
+f 10673 10980 10981
+f 10980 10982 10981
+f 10983 10471 10984
+f 10984 10471 10482
+f 10984 10482 10713
+f 10984 10713 10712
+f 10711 10984 10985
+f 10984 10711 10983
+f 10982 10496 10986
+f 10981 10982 10986
+f 10471 10983 10496
+f 10675 10980 10673
+f 10923 10980 10675
+f 10980 10923 10982
+f 10483 10726 10713
+f 10987 10726 10484
+f 10484 10485 10987
+f 10988 10987 10485
+f 10485 10989 10988
+f 10987 10728 10727
+f 10727 10726 10987
+f 10728 10987 10988
+f 10988 10729 10728
+f 10990 10492 10991
+f 10992 10991 10492
+f 10492 10491 10992
+f 10933 10993 10990
+f 10933 10990 10991
+f 10991 10992 10933
+f 10496 10992 10491
+f 10994 10512 10947
+f 10995 10518 10520
+f 10996 10995 10520
+f 10952 10997 10949
+f 10998 10949 10997
+f 10999 11000 10998
+f 10999 10998 10997
+f 11001 10997 10952
+f 11001 10952 10979
+f 11001 11002 10999
+f 10999 10997 11001
+f 10996 11000 10999
+f 10999 11002 10996
+f 11003 11002 11004
+f 11004 11005 11006
+f 10554 10525 11007
+f 11008 11009 10557
+f 11010 11011 11006
+f 11012 11006 11005
+f 11013 11010 11012
+f 11011 11010 11008
+f 11013 11014 11009
+f 11009 11010 11013
+f 11015 11016 11017
+f 11016 11018 11019
+f 11018 11016 11015
+f 10976 10965 11020
+f 10976 11019 10978
+f 10978 11021 11022
+f 11022 11023 10978
+f 11021 10978 11019
+f 11021 11019 11024
+f 11025 11026 11027
+f 11025 11027 11024
+f 11024 11018 11025
+f 11024 11027 11021
+f 11021 11028 11029
+f 11029 11022 11021
+f 11028 11021 11027
+f 11028 11027 11026
+f 11030 11023 11022
+f 11030 11022 11005
+f 11012 11005 11022
+f 11022 11029 11031
+f 11012 11031 11032
+f 11013 11032 11014
+f 10988 10989 10595
+f 10988 10595 10910
+f 11033 10603 10557
+f 11033 10557 11009
+f 11034 10604 10603
+f 11035 11033 11036
+f 11014 11037 11038
+f 11038 11036 11009
+f 11038 11039 11040
+f 11040 11036 11038
+f 11041 11032 11031
+f 11041 11042 11037
+f 11037 11032 11041
+f 11042 11043 11044
+f 11044 11045 11037
+f 11044 11037 11042
+f 11029 11046 11041
+f 11047 11046 11048
+f 11049 11043 11042
+f 11049 11046 11047
+f 11050 11051 11052
+f 11050 11052 11053
+f 10190 9964 10591
+f 11054 11053 11055
+f 11055 11056 11054
+f 11053 11054 11050
+f 11057 11058 11059
+f 11060 11057 11059
+f 11061 11052 11062
+f 11063 11064 11065
+f 11066 11067 11068
+f 11065 11069 11066
+f 11070 11067 11066
+f 11056 10596 10600
+f 11071 11072 11073
+f 11071 11073 11056
+f 11056 11074 11071
+f 11073 11075 11050
+f 11050 11054 11073
+f 11076 11071 11074
+f 11076 11074 10602
+f 11077 10602 10606
+f 11077 11078 11076
+f 11076 11079 11072
+f 11080 11077 10606
+f 11080 10606 10605
+f 10604 11080 10605
+f 11078 11077 11081
+f 11082 11081 11080
+f 11082 11080 10604
+f 11083 11081 11082
+f 11084 11085 11086
+f 11079 11087 11088
+f 11088 11072 11079
+f 11089 11090 11091
+f 11089 11091 11092
+f 11090 11093 11094
+f 11095 11089 11092
+f 11095 11092 11096
+f 11084 11097 11098
+f 11099 11096 11100
+f 11094 11101 11102
+f 11102 11103 11094
+f 11104 11105 11093
+f 11106 11104 11099
+f 11106 11099 11107
+f 11106 11108 11105
+f 11108 11109 11110
+f 11111 11112 11109
+f 11113 11114 11115
+f 11115 11069 11062
+f 11113 11115 11062
+f 11116 11117 11103
+f 11116 11103 11102
+f 11118 11113 11117
+f 11118 11117 11116
+f 11101 11116 11102
+f 11119 11118 11116
+f 11119 11116 11101
+f 11120 11121 11118
+f 11120 11118 11119
+f 11114 11066 11069
+f 11114 11069 11115
+f 11122 11066 11114
+f 11123 11122 11114
+f 11070 11066 11122
+f 11124 11070 11125
+f 11126 11125 11122
+f 11126 11124 11125
+f 11123 11114 11121
+f 11119 11101 11093
+f 11093 11105 11119
+f 11105 11108 11119
+f 11110 11120 11108
+f 11110 11127 11128
+f 11129 11130 11131
+f 11132 11130 11129
+f 11133 11134 11129
+f 11134 11135 11136
+f 11136 11132 11129
+f 11134 11136 11129
+f 10260 10241 11137
+f 11138 10260 11137
+f 11138 11137 11139
+f 11140 11138 11139
+f 11140 11139 11141
+f 11142 11143 11144
+f 11143 11145 11146
+f 11147 11143 11148
+f 11147 11148 11124
+f 11145 11143 11147
+f 11145 11149 11146
+f 11145 11150 11149
+f 11133 11151 11134
+f 11151 11152 11134
+f 11153 11135 11134
+f 11153 11134 11152
+f 11151 11149 11152
+f 11149 11153 11152
+f 11154 11149 11150
+f 11154 11155 11156
+f 11157 11155 11154
+f 11154 11150 11157
+f 11158 11135 11153
+f 11158 11141 11159
+f 11154 11158 11153
+f 11154 11153 11149
+f 11156 11158 11154
+f 11160 11161 11141
+f 11160 11141 11158
+f 11162 11163 11161
+f 11160 11162 11161
+f 11164 10263 10261
+f 11165 11166 11167
+f 11165 11167 11163
+f 11168 11166 11164
+f 11169 10269 11164
+f 11169 11164 11166
+f 11170 10269 11169
+f 11171 11172 11166
+f 11173 11174 11172
+f 11173 11172 11171
+f 11166 11172 11169
+f 11174 11175 11170
+f 11162 11176 11165
+f 11165 11163 11162
+f 11177 11162 11160
+f 11178 11176 11162
+f 11179 11180 11181
+f 11182 11183 11179
+f 11180 11173 11184
+f 11185 11186 11187
+f 11186 11188 11187
+f 11189 11188 11186
+f 11190 11191 11124
+f 11190 11192 11191
+f 11124 11191 11147
+f 11191 11145 11147
+f 11191 11150 11145
+f 11128 11193 11190
+f 11190 11126 11128
+f 11194 11193 11195
+f 11188 11196 11197
+f 11197 11198 11188
+f 11199 11200 11196
+f 11201 11202 11194
+f 11201 11194 11195
+f 11203 11182 11179
+f 11204 11205 11206
+f 11205 11204 11203
+f 11207 11203 11204
+f 11208 11195 11209
+f 11198 11208 11209
+f 11206 11201 11208
+f 11210 11211 11197
+f 11204 11212 11207
+f 11213 11212 11204
+f 11213 11204 11210
+f 11196 11210 11197
+f 11196 11214 11213
+f 11213 11210 11196
+f 11215 11034 11035
+f 11082 10604 11034
+f 11216 11083 11082
+f 11034 11215 11082
+f 11216 11082 11215
+f 11217 11083 11216
+f 11218 11216 11219
+f 11220 11221 11097
+f 11222 11220 11217
+f 11220 11107 11221
+f 11223 11220 11222
+f 11224 11222 11218
+f 11225 11226 11224
+f 11227 11228 11229
+f 11045 11230 11231
+f 11232 11231 11230
+f 11227 11232 11233
+f 11228 11234 11226
+f 11226 11235 11236
+f 11237 11238 11234
+f 11238 11237 11239
+f 11240 11241 11220
+f 11236 11242 11240
+f 11236 11243 11242
+f 11242 11244 11240
+f 11245 11111 11241
+f 11246 11245 11241
+f 11246 11241 11240
+f 11246 11240 11244
+f 11244 11247 11246
+f 11235 11248 11243
+f 11243 11236 11235
+f 11249 11248 11235
+f 11250 11248 11249
+f 11251 11248 11250
+f 11252 11253 11251
+f 11254 11255 11247
+f 11256 11257 11251
+f 11253 11256 11251
+f 11256 11258 11257
+f 11044 11259 11230
+f 11259 11044 11043
+f 11260 11261 11262
+f 11262 11259 11260
+f 11263 11264 11265
+f 11265 11237 11266
+f 11265 11267 11239
+f 11239 11237 11265
+f 11268 11239 11267
+f 11267 11265 11264
+f 11264 11269 11267
+f 11270 11271 11272
+f 11273 11270 11261
+f 11273 11261 11260
+f 11273 11260 11049
+f 11273 11274 11271
+f 11275 11272 11271
+f 11276 11275 11271
+f 11276 11271 11274
+f 11277 11278 11274
+f 11278 11279 11276
+f 11276 11274 11278
+f 11280 11268 11267
+f 11252 11280 11267
+f 11281 11267 11269
+f 11282 11269 11283
+f 11284 11285 11282
+f 11256 11286 11258
+f 11284 11282 11287
+f 11288 11284 11287
+f 11288 11289 11290
+f 11290 11284 11288
+f 11279 11291 11292
+f 11292 11276 11279
+f 11293 11288 11291
+f 11284 11294 11285
+f 11290 11295 11296
+f 11295 11297 11298
+f 11299 11300 11297
+f 11297 11295 11299
+f 11301 11302 11111
+f 11301 11111 11245
+f 11303 11301 11245
+f 11303 11245 11246
+f 11247 11304 11305
+f 11306 11307 11301
+f 11308 11189 11186
+f 11308 11186 11307
+f 11304 11309 11305
+f 11310 11255 11311
+f 11312 11313 11314
+f 11315 11316 11308
+f 11317 11315 11318
+f 11319 11316 11315
+f 11320 11321 11200
+f 11317 11319 11315
+f 11322 11323 11324
+f 11323 11322 11325
+f 11326 11324 11323
+f 11314 11327 11312
+f 11328 11286 11298
+f 11329 11327 11314
+f 11330 11331 11332
+f 11331 11333 11329
+f 11329 11332 11331
+f 11334 11298 11297
+f 11335 11297 11300
+f 11335 11336 11331
+f 11312 11327 11337
+f 11312 11337 11325
+f 11338 11325 11337
+f 11339 11327 11329
+f 11340 11337 11327
+f 11341 11340 11342
+f 11336 11343 11344
+f 11336 11344 11345
+f 11345 11333 11336
+f 11346 11347 11348
+f 11346 11348 11342
+f 11346 11342 11349
+f 11350 11344 11343
+f 11346 11349 11350
+f 11351 9747 9744
+f 9744 11352 11351
+f 7475 11353 11351
+f 11351 11352 7475
+f 9747 11351 11354
+f 9745 11354 11355
+f 11356 7481 7484
+f 7484 11357 11356
+f 11358 11359 11360
+f 11361 11359 11358
+f 11362 11363 10867
+f 10867 10823 11364
+f 10867 11363 10868
+f 11365 10868 11363
+f 11366 11363 11362
+f 11367 11363 11366
+f 11368 11365 11363
+f 11367 11368 11363
+f 11369 11370 11368
+f 11365 11370 10870
+f 10870 11371 11372
+f 11372 11373 10870
+f 11369 11371 10870
+f 10870 11370 11369
+f 11366 11355 11354
+f 11367 11354 11368
+f 11368 11360 11374
+f 11368 11374 11369
+f 11374 11360 11359
+f 11353 7475 7482
+f 11353 7482 11375
+f 11361 11357 7483
+f 11376 11377 11378
+f 11376 11379 11380
+f 11048 11380 11047
+f 11049 11047 11380
+f 11380 11381 11049
+f 11382 11381 11380
+f 11380 11379 11383
+f 11384 7483 7489
+f 7489 7490 11385
+f 11049 11386 11277
+f 11387 11382 11388
+f 11389 11387 11390
+f 11389 11391 11392
+f 11393 11293 11394
+f 11394 11395 11389
+f 11393 11396 11299
+f 11397 11398 11396
+f 11393 11399 11396
+f 11400 11399 11392
+f 11400 11392 11391
+f 11400 11401 11397
+f 11397 11396 11400
+f 11396 11399 11400
+f 11391 11389 11402
+f 11403 11404 11405
+f 11335 11300 11398
+f 11397 11406 11335
+f 11407 11406 11401
+f 11335 11406 11408
+f 11335 11408 11336
+f 11408 11406 11407
+f 11405 11409 11407
+f 11410 11407 11409
+f 11409 11411 11410
+f 11336 11408 11412
+f 11336 11412 11343
+f 11412 11408 11410
+f 11343 11413 11350
+f 11414 11410 11411
+f 11411 11415 11414
+f 11416 11414 11415
+f 11417 11405 11404
+f 11417 11404 11418
+f 11418 11419 11420
+f 11419 11421 11420
+f 11422 11423 11415
+f 11422 11415 11411
+f 11422 11424 11425
+f 11426 11427 10101
+f 11426 10101 10106
+f 11428 11429 11430
+f 11431 11430 10141
+f 11432 11433 10145
+f 11432 10145 10148
+f 11434 11432 10148
+f 11434 10148 11435
+f 11436 10264 10267
+f 11436 11437 10264
+f 11436 11438 11437
+f 9578 9576 11439
+f 11439 11440 9578
+f 11441 11427 11426
+f 11440 11439 11427
+f 11441 11442 11427
+f 9578 11443 9577
+f 11443 9578 11440
+f 11444 9577 11443
+f 11445 9585 9587
+f 11444 11446 11445
+f 11445 11447 9588
+f 9588 9585 11445
+f 11448 11449 11440
+f 11428 11450 11448
+f 11448 11451 11449
+f 11451 11448 11450
+f 11450 11428 11431
+f 11452 11453 11454
+f 11455 11454 11453
+f 9588 11456 9593
+f 11456 11457 9593
+f 11456 11447 11458
+f 11459 9593 11457
+f 11460 11459 11457
+f 11460 11457 11461
+f 11461 11456 11458
+f 11461 11458 11462
+f 11463 11460 11461
+f 11463 11464 11460
+f 11462 11465 11466
+f 11467 11455 11453
+f 11468 11466 11455
+f 11455 11467 11468
+f 11467 11469 11468
+f 11470 11468 11469
+f 11471 9612 11472
+f 11472 11473 11460
+f 11472 11474 11471
+f 9612 11471 11475
+f 11475 9616 9612
+f 9616 11475 9618
+f 11475 11476 9618
+f 11474 11477 11475
+f 11475 11471 11474
+f 11475 11477 11476
+f 11478 11476 11477
+f 11479 11472 11460
+f 11480 11474 11481
+f 11481 11482 11480
+f 11482 11481 11483
+f 11482 11484 11480
+f 11474 11480 11477
+f 11485 11477 11480
+f 11476 11478 11486
+f 11486 11487 11488
+f 11463 11489 11490
+f 11490 11464 11463
+f 11491 11482 11483
+f 11483 11492 11493
+f 11494 11483 11493
+f 11495 11490 11489
+f 11496 11497 11498
+f 11450 11431 11498
+f 11498 11499 11450
+f 11499 11451 11450
+f 11498 11500 11499
+f 11497 11496 11433
+f 11501 11502 11500
+f 11503 11504 11502
+f 11503 11505 11504
+f 11506 11504 11505
+f 11497 11507 11501
+f 11508 11497 11433
+f 11507 11497 11508
+f 11509 11433 11432
+f 11502 11501 11507
+f 11510 11503 11511
+f 11505 11503 11510
+f 11512 11510 11511
+f 11513 11512 11511
+f 11514 11515 11469
+f 11516 11506 11505
+f 11517 11518 11514
+f 11519 11514 11518
+f 11520 11510 11521
+f 11520 11505 11510
+f 11516 11505 11520
+f 11520 11522 11523
+f 11523 11516 11520
+f 11524 11525 11522
+f 11526 11527 11519
+f 11528 11529 11530
+f 11531 11528 11530
+f 11527 11526 11525
+f 11532 11533 11527
+f 11532 11527 11534
+f 11531 11530 11535
+f 11495 11515 11519
+f 11536 11537 11538
+f 11539 11536 11538
+f 11540 11536 11539
+f 11541 11540 11539
+f 11528 11541 11539
+f 11528 11539 11529
+f 11485 11542 11478
+f 11543 11485 11484
+f 11485 11543 11542
+f 11543 11544 11542
+f 11487 11545 11546
+f 11545 11547 11546
+f 11546 11547 11548
+f 11547 11549 11548
+f 11478 11542 11545
+f 11544 11545 11542
+f 11547 11544 11550
+f 11544 11551 11550
+f 11552 11550 11551
+f 11547 11552 11553
+f 11547 11550 11552
+f 11554 11553 11552
+f 11555 11553 11554
+f 11553 11555 11556
+f 11543 11551 11544
+f 11543 11557 11551
+f 11557 11558 11551
+f 11559 11557 11560
+f 11561 11494 11562
+f 11563 11560 11494
+f 11563 11494 11561
+f 11563 11559 11560
+f 11564 11559 11561
+f 11565 11566 11559
+f 11567 11568 11558
+f 11558 11566 11567
+f 11558 11568 11552
+f 11552 11568 11554
+f 11568 11567 11555
+f 11555 11569 11556
+f 11569 11555 11570
+f 11571 11569 11570
+f 11572 11569 11571
+f 11573 11574 11575
+f 11576 11577 11578
+f 11579 11580 11581
+f 11582 11583 11584
+f 11585 11584 11583
+f 11583 11582 11586
+f 11587 11588 11585
+f 11589 11587 11585
+f 11586 11590 11583
+f 11591 11589 11585
+f 11591 11585 11590
+f 11592 11561 11536
+f 11592 11536 11540
+f 11593 11582 11594
+f 11595 11566 11596
+f 11596 11597 11595
+f 11596 11565 11598
+f 11588 11598 11584
+f 11599 11596 11598
+f 11588 11599 11598
+f 11599 11588 11587
+f 11600 11587 11589
+f 11601 11600 11589
+f 11601 11589 11602
+f 11603 11600 11601
+f 11604 11605 11603
+f 11575 11595 11606
+f 11597 11607 11595
+f 11595 11607 11606
+f 11608 11609 11597
+f 11607 11597 11609
+f 11609 11610 11607
+f 11610 11611 11607
+f 11606 11573 11575
+f 11573 11606 11612
+f 11606 11613 11612
+f 11614 11615 11613
+f 11614 11613 11616
+f 11600 11617 11609
+f 11610 11609 11617
+f 11617 11605 11610
+f 11610 11605 11618
+f 11619 11605 11604
+f 11611 11620 11616
+f 11611 11616 11613
+f 11614 11616 11621
+f 11619 11618 11605
+f 11622 9669 11623
+f 11622 11623 11624
+f 11623 11548 11624
+f 11622 11624 11625
+f 11625 9672 11622
+f 11548 11549 11624
+f 11626 11624 11549
+f 11625 11627 11628
+f 11629 11625 11628
+f 11549 11630 11626
+f 11627 11626 11630
+f 11631 11627 11630
+f 11628 11627 11631
+f 11630 11632 11631
+f 11632 11633 11631
+f 11634 11628 11631
+f 11628 11635 11629
+f 11635 11636 11629
+f 11635 11628 11634
+f 11637 11638 9707
+f 9707 11638 9709
+f 9716 9709 11638
+f 11639 9716 11640
+f 11640 11641 11639
+f 11633 11642 11631
+f 11643 11633 11644
+f 11556 11645 11646
+f 11556 11569 11645
+f 11647 11645 11572
+f 11645 11647 11648
+f 11644 11645 11648
+f 11636 11635 11649
+f 11634 11642 11649
+f 11650 11637 11636
+f 11651 11652 11636
+f 11650 11636 11652
+f 11651 11653 11652
+f 11643 11648 11654
+f 11654 11655 11656
+f 11657 11656 11655
+f 11651 11642 11658
+f 11659 11651 11658
+f 11660 11653 11659
+f 11660 11661 11662
+f 11662 11653 11660
+f 11663 11647 11664
+f 11578 11663 11664
+f 11665 11663 11578
+f 11663 11665 11657
+f 11578 11577 11665
+f 11650 11666 11667
+f 11650 11652 11666
+f 11668 11669 11670
+f 11652 11653 11662
+f 11666 11652 11662
+f 11671 11669 11667
+f 11661 11672 11662
+f 11672 11671 11673
+f 11674 11669 11671
+f 11671 11672 11675
+f 11675 11674 11671
+f 11675 11676 11674
+f 11676 11675 11677
+f 11676 11678 11679
+f 11678 11676 11680
+f 11680 11681 11678
+f 11682 11434 11683
+f 11434 11435 11683
+f 11435 10220 11683
+f 11684 11685 11686
+f 11684 11686 11682
+f 11682 11683 11684
+f 11685 11513 11687
+f 11685 11687 11686
+f 11685 11688 11689
+f 11689 11512 11513
+f 11689 11513 11685
+f 11521 11512 11689
+f 11685 11690 11688
+f 11691 11684 11683
+f 11691 11683 11692
+f 11691 11693 11685
+f 11685 11684 11691
+f 11694 11692 10252
+f 11694 11695 11691
+f 11691 11692 11694
+f 11696 11697 11695
+f 11693 11698 11690
+f 11690 11685 11693
+f 11699 11698 11700
+f 11700 11691 11697
+f 11701 11700 11697
+f 11702 11700 11701
+f 11703 11704 11521
+f 11704 11705 11521
+f 11704 11703 11706
+f 11707 11704 11708
+f 11709 11710 11534
+f 11532 11534 11710
+f 11711 11532 11712
+f 11713 11699 11702
+f 11714 11715 11713
+f 11713 11708 11699
+f 11716 11717 11718
+f 11719 11720 11716
+f 11721 11722 11723
+f 11724 11721 11723
+f 11724 11723 11725
+f 10270 11694 10252
+f 11726 11694 10270
+f 11727 10270 10271
+f 11727 11726 10270
+f 11726 11727 11695
+f 11728 11695 11727
+f 11729 11728 11727
+f 11729 11727 11730
+f 11728 11731 11696
+f 11732 11731 11733
+f 11733 11731 11734
+f 11735 11736 11437
+f 11735 11730 11736
+f 11437 11438 11735
+f 11737 11730 11735
+f 11737 11738 11734
+f 11739 11740 11735
+f 11741 11740 11739
+f 11742 11741 11739
+f 11743 11744 11745
+f 11743 11746 11747
+f 11748 11725 11749
+f 11724 11725 11748
+f 11750 11724 11748
+f 11744 11743 11749
+f 11751 11748 11749
+f 11752 11750 11748
+f 11752 11748 11751
+f 11753 11752 11751
+f 11754 11755 11746
+f 11755 11756 11746
+f 11747 11746 11756
+f 11757 11741 11742
+f 11756 11741 11757
+f 11747 11758 11743
+f 11759 11760 11580
+f 11761 11759 11762
+f 11763 11759 11761
+f 11764 11762 11765
+f 11761 11766 11763
+f 11767 11591 11590
+f 11767 11590 11768
+f 11767 11602 11591
+f 11769 11602 11767
+f 11766 11770 11768
+f 11770 11767 11768
+f 11771 11764 11765
+f 11771 11772 11773
+f 11774 11765 11775
+f 11776 11771 11765
+f 11776 11765 11774
+f 11776 11774 11777
+f 11778 11779 11776
+f 11780 11770 11781
+f 11782 11783 11781
+f 11783 11784 11785
+f 11785 11781 11783
+f 11786 11603 11601
+f 11601 11602 11769
+f 11787 11788 11769
+f 11787 11769 11780
+f 11789 11790 11604
+f 11791 11789 11792
+f 11780 11793 11787
+f 11794 11787 11793
+f 11795 11794 11793
+f 11793 11780 11785
+f 11793 11796 11795
+f 11794 11795 11797
+f 11798 11792 11799
+f 11796 11800 11801
+f 11799 11801 11800
+f 11799 11802 11798
+f 11803 11804 11790
+f 11805 11776 11777
+f 11806 11807 11808
+f 11808 11809 11806
+f 11782 11810 11778
+f 11808 11782 11778
+f 11811 11812 11784
+f 11784 11783 11811
+f 11807 11813 11811
+f 11814 11815 11753
+f 11816 11753 11817
+f 11753 11815 11818
+f 11817 11753 11818
+f 11819 11820 11817
+f 11821 11820 11822
+f 11816 11823 11806
+f 11824 11806 11823
+f 11825 11820 11826
+f 11827 11784 11812
+f 11828 11829 11827
+f 11830 11796 11831
+f 11828 11812 11832
+f 11833 11830 11834
+f 11835 11836 11830
+f 11837 11838 11839
+f 11840 11837 11841
+f 11825 11842 11839
+f 11842 11825 11826
+f 11842 11843 11841
+f 11844 11843 11842
+f 11840 11845 11846
+f 11841 11847 11840
+f 11848 11845 11840
+f 11848 11840 11847
+f 11847 11849 11848
+f 11847 11841 11843
+f 11843 11850 11847
+f 11849 11847 11850
+f 11577 11576 11851
+f 11852 11853 11851
+f 11854 11615 11614
+f 11615 11854 11855
+f 11614 11621 11856
+f 11621 11857 11856
+f 11858 11856 11857
+f 11858 11854 11614
+f 11858 11614 11856
+f 11859 11855 11854
+f 11860 11861 11862
+f 11862 11854 11858
+f 11862 11858 11860
+f 11854 11862 11859
+f 11859 11863 11864
+f 11656 11865 11866
+f 11867 11866 11865
+f 11867 11865 11868
+f 11869 11660 11656
+f 11869 11870 11660
+f 11870 11871 11660
+f 11867 11872 11869
+f 11869 11866 11867
+f 11867 11873 11872
+f 11873 11874 11872
+f 11875 11876 11877
+f 11874 11875 11877
+f 11877 11872 11874
+f 11657 11878 11879
+f 11665 11878 11657
+f 11880 11879 11878
+f 11577 11878 11665
+f 11881 11880 11878
+f 11868 11879 11880
+f 11882 11873 11868
+f 11881 11882 11880
+f 11883 11882 11881
+f 11874 11873 11882
+f 11884 11883 11885
+f 11886 11887 11888
+f 11886 11888 11889
+f 11884 11886 11889
+f 11889 11883 11884
+f 11672 11661 11871
+f 11871 11890 11672
+f 11890 11871 11876
+f 11890 11876 11891
+f 11675 11672 11891
+f 11675 11891 11677
+f 11892 11677 11891
+f 11893 11891 11876
+f 11676 11677 11894
+f 11892 11895 11677
+f 11875 11887 11896
+f 11875 11896 11893
+f 11896 11897 11898
+f 11680 11676 11894
+f 11680 11894 11895
+f 11898 11899 11895
+f 11900 11680 11895
+f 11901 11900 11902
+f 11901 11902 11903
+f 11886 11904 11896
+f 11896 11887 11886
+f 11904 11905 11906
+f 11906 11902 11907
+f 11904 11906 11907
+f 11907 11897 11904
+f 11906 11908 11902
+f 11905 11909 11908
+f 11908 11906 11905
+f 11910 11911 11912
+f 11913 11912 11914
+f 11912 11913 11910
+f 11914 11912 11885
+f 11910 11915 11911
+f 11884 11885 11912
+f 11911 11915 11864
+f 11886 11884 11916
+f 11917 11918 11886
+f 11918 11904 11886
+f 11917 11886 11919
+f 11917 11920 11905
+f 11917 11921 11922
+f 11920 11922 11923
+f 11919 11924 11925
+f 11926 11924 11927
+f 11928 11923 11922
+f 11928 11921 11925
+f 11926 11928 11925
+f 11929 11791 11798
+f 11930 11857 11804
+f 11803 11930 11804
+f 11857 11931 11858
+f 11860 11858 11931
+f 11930 11932 11933
+f 11934 11935 11930
+f 11932 11930 11935
+f 11857 11933 11931
+f 11936 11933 11932
+f 11932 11935 11936
+f 11937 11933 11936
+f 11938 11861 11860
+f 11934 11791 11929
+f 11935 11934 11929
+f 11929 11939 11935
+f 11935 11940 11936
+f 11940 11935 11939
+f 11939 11929 11941
+f 11939 11942 11940
+f 11943 11940 11944
+f 11941 11945 11942
+f 11942 11939 11941
+f 11944 11942 11945
+f 11946 11947 11948
+f 11948 11949 11946
+f 11950 11945 11951
+f 11950 11951 11952
+f 11950 11953 11945
+f 11954 11955 11848
+f 11955 11954 11952
+f 11956 11952 11954
+f 11957 11950 11956
+f 11958 11954 11959
+f 11957 11960 11961
+f 11962 11963 11850
+f 11964 11965 11966
+f 11967 11968 11969
+f 11970 11971 11972
+f 11972 11971 11947
+f 11973 11970 11974
+f 11973 11974 11975
+f 11976 11977 11978
+f 11927 11863 11979
+f 11979 11948 11927
+f 11980 11926 11927
+f 11980 11927 11948
+f 11980 11948 11981
+f 11980 11982 11928
+f 11928 11926 11980
+f 11976 11983 11980
+f 11980 11981 11976
+f 11984 11982 11980
+f 11984 11980 11983
+f 11985 11986 11987
+f 11985 11987 11170
+f 11986 11988 11436
+f 11988 11986 11985
+f 11173 11989 11175
+f 11989 11985 11170
+f 11989 11170 11175
+f 11173 11990 11989
+f 11991 11988 11985
+f 11992 11988 11991
+f 11993 11994 11995
+f 11995 11991 11993
+f 11996 11183 11182
+f 11996 11997 11998
+f 11998 11183 11996
+f 11999 12000 11990
+f 11990 11173 11999
+f 12000 11999 11183
+f 12000 11183 11998
+f 12001 11993 11990
+f 11998 12002 12001
+f 12001 11990 11998
+f 12002 12003 12004
+f 12005 12004 12003
+f 12006 11757 11742
+f 12006 11742 11995
+f 12006 11995 11994
+f 12007 11994 12005
+f 12005 12008 12007
+f 12007 12009 12010
+f 12008 12009 12007
+f 12009 12011 12012
+f 12005 12013 12008
+f 12014 12015 12016
+f 12016 12003 12014
+f 12016 12017 12013
+f 12017 12016 12015
+f 12013 12018 12009
+f 12011 12009 12018
+f 12018 12019 12011
+f 12015 12020 12017
+f 12013 12021 12018
+f 12019 12018 12021
+f 12021 12022 12019
+f 12023 11214 12024
+f 12025 12026 12027
+f 12028 11997 12029
+f 12028 12029 12026
+f 12030 12014 12003
+f 12028 12031 12030
+f 12031 12032 12014
+f 12014 12030 12031
+f 12033 12031 12028
+f 12034 12032 12031
+f 12034 12031 12033
+f 12023 12035 12036
+f 12037 12038 12039
+f 12040 12038 12037
+f 12041 12040 12036
+f 12035 12042 12036
+f 12042 12041 12036
+f 12041 12043 12040
+f 12032 12044 12014
+f 12045 12044 12032
+f 12034 12046 12032
+f 12045 12032 12046
+f 12046 12047 12045
+f 12047 12046 12048
+f 12014 12044 12015
+f 12049 12044 12045
+f 12047 12050 12045
+f 12043 12048 12038
+f 12051 12048 12043
+f 12051 12047 12048
+f 12052 12047 12051
+f 12051 12043 12053
+f 12054 12053 12043
+f 12055 12052 12051
+f 12056 12053 12054
+f 12052 12050 12047
+f 12057 12058 12059
+f 12022 12060 12061
+f 12061 12060 12062
+f 12060 12022 12063
+f 12064 12060 12063
+f 12060 12065 12066
+f 12065 12060 12064
+f 12064 12067 12065
+f 12068 12069 12070
+f 12068 12070 12071
+f 12072 12068 12071
+f 12073 12074 12075
+f 12076 12074 12073
+f 12076 12077 12078
+f 12063 12022 12074
+f 12078 12079 12074
+f 12079 12080 12067
+f 12081 12080 12079
+f 12081 12082 12080
+f 12076 12073 12083
+f 12084 12085 12081
+f 12086 12087 12088
+f 12086 12089 12084
+f 12086 12088 12090
+f 12091 12086 12090
+f 12080 12092 12067
+f 12093 12092 12080
+f 12093 12094 12092
+f 12095 12080 12082
+f 12096 12094 12093
+f 12096 12093 12095
+f 12097 12092 12094
+f 12092 12097 12071
+f 12098 12099 12097
+f 12098 12094 12096
+f 12098 12100 12099
+f 12101 12099 12100
+f 12085 12102 12082
+f 12103 12104 12105
+f 12103 12105 12095
+f 12096 12095 12105
+f 12106 12105 12104
+f 12107 12106 12104
+f 12107 12104 12108
+f 12108 12109 12107
+f 12110 12111 12109
+f 12105 12106 12112
+f 12106 12111 12112
+f 12113 11320 11319
+f 12114 11319 11317
+f 12115 12116 12035
+f 12117 12116 12115
+f 12118 12114 11326
+f 12119 12120 11323
+f 11323 12121 11326
+f 12121 11323 12120
+f 12122 12120 12123
+f 12121 12124 11326
+f 12118 11326 12124
+f 12124 12121 12120
+f 12125 12126 12124
+f 12120 12122 12125
+f 12116 12127 12042
+f 12127 12054 12042
+f 12128 12125 12129
+f 12128 12129 12130
+f 12131 12132 12127
+f 12131 12127 12133
+f 12134 12131 12133
+f 12059 12056 12135
+f 12136 12057 12059
+f 12137 12138 12132
+f 12137 12132 12131
+f 12139 12137 12131
+f 12140 12137 12139
+f 12141 12134 12126
+f 12125 12142 12141
+f 12141 12126 12125
+f 12130 12143 12128
+f 12144 12125 12128
+f 12142 12125 12144
+f 12144 12128 12143
+f 12141 12139 12134
+f 12145 12139 12141
+f 12145 12141 12142
+f 12146 12147 12148
+f 11347 12149 12147
+f 12150 12151 12152
+f 12152 12153 12150
+f 12154 12155 12149
+f 12156 12157 12155
+f 12156 12155 12154
+f 12151 12158 12154
+f 12154 12159 12156
+f 12158 12160 12159
+f 12159 12154 12158
+f 12161 12162 12144
+f 12163 12164 12165
+f 12165 12161 12163
+f 12164 12166 12167
+f 12167 12165 12164
+f 12156 12168 12169
+f 12169 12157 12156
+f 12168 12170 12163
+f 12168 12171 12172
+f 12168 12172 12170
+f 12170 12173 12174
+f 12175 12172 12176
+f 12177 12178 12173
+f 12179 12057 12136
+f 12179 12088 12057
+f 12179 12136 12180
+f 12180 12138 12137
+f 12181 12137 12140
+f 12182 12180 12137
+f 12182 12183 12184
+f 12184 12180 12182
+f 12181 12185 12182
+f 12186 12187 12090
+f 12188 12187 12186
+f 12188 12189 12187
+f 12091 12090 12187
+f 12183 12188 12184
+f 12190 12189 12188
+f 12190 12188 12183
+f 12191 12190 12183
+f 12192 12185 12181
+f 12193 12194 12195
+f 12195 12196 12193
+f 12193 12197 12198
+f 12197 12193 12196
+f 12199 12200 12197
+f 12200 12201 12202
+f 12199 12203 12201
+f 12201 12200 12199
+f 12189 12204 12205
+f 12187 12206 12091
+f 12205 12206 12187
+f 12205 12187 12189
+f 12190 12204 12189
+f 12207 12208 12190
+f 12209 12210 12205
+f 12208 12211 12209
+f 12208 12209 12204
+f 12208 12212 12211
+f 12213 12207 12191
+f 12214 12213 12202
+f 12214 12202 12201
+f 12215 12216 12217
+f 12218 12208 12207
+f 12218 12212 12208
+f 12219 12212 12218
+f 12219 12220 12212
+f 12221 12219 12218
+f 12221 12218 12222
+f 12222 12223 12217
+f 12217 12224 12222
+f 12224 12217 12216
+f 12224 12221 12222
+f 12195 12225 12196
+f 12226 12196 12225
+f 12166 12227 12225
+f 12227 12228 12229
+f 12229 12225 12227
+f 12226 12197 12196
+f 12197 12226 12199
+f 12230 12231 12232
+f 12233 12229 12228
+f 12234 12233 12235
+f 12232 12234 12236
+f 12237 12227 12166
+f 12238 12178 12239
+f 12240 12239 12178
+f 12240 12241 12242
+f 12235 12228 12243
+f 12244 12245 12246
+f 12247 12248 12245
+f 12241 12249 12246
+f 12246 12242 12241
+f 12232 12250 12230
+f 12251 12230 12250
+f 12251 12216 12215
+f 12252 12216 12251
+f 12250 12232 12236
+f 12253 12250 12236
+f 12254 12252 12251
+f 12253 12254 12251
+f 12251 12250 12253
+f 12255 12216 12252
+f 12256 12255 12257
+f 12254 12253 12258
+f 12258 12247 12259
+f 12260 12261 12262
+f 12260 12262 12258
+f 12262 12263 12257
+f 12257 12254 12262
+f 12263 12264 12265
+f 12265 12257 12263
+f 12262 12261 12266
+f 12262 12266 12263
+f 12263 12266 12264
+f 12267 12266 12261
+f 11992 11742 11739
+f 12010 12268 12269
+f 12012 12268 12010
+f 12012 12270 12271
+f 12271 12268 12012
+f 11822 11819 12270
+f 12270 12272 11822
+f 12273 12274 12272
+f 11821 11822 12272
+f 12061 12062 12274
+f 12062 12066 12274
+f 11844 12275 12276
+f 12277 12275 12278
+f 12279 12069 12280
+f 12070 12279 12065
+f 12069 12279 12070
+f 12069 12068 12281
+f 12282 12283 12281
+f 12284 12282 12281
+f 12068 12284 12281
+f 12284 12068 12072
+f 12284 12099 12285
+f 12286 12099 12101
+f 12287 12286 12288
+f 12100 12289 12101
+f 12290 12288 12289
+f 12291 12288 12290
+f 12292 12293 12294
+f 12110 12295 12111
+f 12296 12297 12295
+f 12296 12295 12110
+f 12100 12112 12289
+f 12112 12290 12289
+f 12295 12290 12112
+f 12295 12112 12111
+f 12298 12299 12300
+f 12298 12301 12299
+f 12301 12302 12303
+f 12298 12304 12305
+f 12304 12298 12306
+f 12304 12307 12302
+f 12308 12296 12309
+f 12310 12311 12308
+f 12312 12313 12314
+f 12315 12310 12312
+f 12316 12308 12311
+f 12317 12316 12311
+f 12317 12311 12318
+f 12308 12316 12300
+f 12306 12298 12300
+f 12306 12300 12316
+f 12316 12319 12306
+f 12320 12321 12317
+f 12322 12323 12319
+f 12322 12319 12320
+f 12322 12324 12325
+f 12325 12323 12322
+f 12326 12318 12327
+f 12326 12327 12328
+f 12329 12330 12331
+f 12330 12332 12328
+f 12328 12333 12330
+f 12332 12334 12326
+f 12326 12328 12332
+f 12332 12330 12329
+f 12335 12317 12318
+f 12335 12318 12326
+f 12335 12336 12317
+f 12337 12336 12335
+f 12334 12337 12335
+f 12338 12322 12320
+f 12338 12320 12339
+f 12340 12324 12322
+f 12340 12322 12338
+f 12341 12339 12336
+f 12341 12336 12337
+f 12338 12339 12341
+f 12342 12340 12338
+f 12342 12338 12343
+f 12331 12344 12345
+f 12331 12345 12346
+f 12347 12331 12348
+f 12349 12350 12332
+f 12332 12329 12349
+f 12349 12347 12350
+f 12351 12350 12352
+f 12353 12347 12348
+f 12352 12353 12354
+f 12354 12355 12352
+f 12353 12352 12347
+f 12356 12354 12353
+f 12351 12355 12337
+f 12337 12334 12351
+f 12357 12337 12355
+f 12343 12341 12357
+f 12358 12342 12343
+f 12358 12343 12359
+f 12360 12361 12362
+f 12357 12361 12359
+f 12360 12363 12358
+f 12358 12361 12360
+f 12265 12264 12353
+f 12364 12353 12264
+f 12364 12365 12356
+f 12364 12356 12353
+f 12366 12367 12364
+f 12368 12366 12364
+f 12364 12264 12368
+f 12369 12367 12366
+f 12364 12367 12365
+f 12369 12370 12371
+f 12367 12371 12365
+f 12371 12367 12369
+f 12356 12365 12362
+f 12372 12373 12360
+f 12372 12360 12362
+f 12365 12372 12362
+f 12365 12371 12372
+f 12374 11966 12375
+f 12376 12377 12378
+f 12283 12376 12277
+f 12377 12376 12283
+f 12375 12378 12377
+f 12375 12379 12374
+f 12380 12379 12375
+f 12381 12380 12375
+f 12374 11964 11966
+f 12382 12374 12379
+f 12374 12383 11964
+f 12384 11964 12383
+f 12385 12384 12383
+f 12374 12382 12383
+f 12386 12383 12382
+f 12383 12386 12385
+f 12387 12385 12388
+f 12389 12390 12391
+f 12391 12387 12388
+f 12391 12388 12389
+f 12380 12381 12392
+f 12284 12285 12282
+f 12286 12393 12392
+f 12394 12380 12393
+f 12395 12396 12394
+f 12396 12395 12386
+f 12397 12386 12395
+f 12393 12398 12394
+f 12394 12399 12395
+f 12399 12394 12398
+f 12399 12398 12400
+f 12401 12395 12399
+f 12401 12402 12397
+f 12397 12395 12401
+f 12403 12404 11976
+f 12403 11976 11978
+f 11978 12391 12403
+f 12404 12403 12405
+f 12399 12400 12406
+f 12401 12399 12406
+f 12407 12303 12302
+f 12408 12409 12410
+f 12411 12412 12408
+f 12408 12410 12411
+f 12408 12413 12404
+f 12404 12405 12408
+f 12414 11984 11983
+f 12414 12404 12413
+f 12325 12415 12416
+f 12416 12307 12325
+f 12415 12325 12324
+f 12417 12418 12419
+f 12411 12416 12415
+f 12420 12412 12411
+f 12421 12419 12418
+f 12421 12418 12420
+f 12420 12422 12413
+f 12373 12423 12424
+f 12423 12373 12372
+f 12423 12372 12371
+f 12423 12371 12370
+f 12425 12426 12427
+f 12423 12425 12427
+f 12427 12417 12423
+f 12414 12413 12422
+f 12428 12422 12427
+f 12427 12426 12428
+f 12422 12428 12414
+f 12429 12430 12158
+f 12158 12431 12160
+f 12432 12431 12430
+f 12433 12432 12430
+f 12430 12429 12433
+f 12433 11416 11423
+f 11423 12434 12433
+f 12432 12433 12434
+f 12434 12435 12432
+f 12436 12437 12176
+f 12438 12437 12436
+f 12432 12438 12436
+f 12175 12176 12437
+f 12437 12439 12175
+f 12177 12175 12439
+f 12439 12440 12177
+f 12441 12440 12439
+f 12438 12441 12439
+f 12439 12437 12438
+f 12438 12432 12435
+f 12435 12442 12438
+f 12441 12438 12442
+f 12442 12443 12441
+f 12440 12444 12240
+f 12241 12240 12444
+f 12444 12445 12241
+f 12441 12446 12447
+f 12444 12447 12448
+f 12448 12445 12444
+f 12441 12447 12444
+f 12444 12440 12441
+f 12241 12445 12449
+f 12241 12449 12249
+f 12249 12449 12450
+f 12249 12450 12259
+f 12451 12449 12445
+f 12451 12445 12448
+f 12451 12452 12450
+f 12453 12454 12455
+f 12455 12456 12452
+f 12457 12456 12455
+f 12455 12454 12457
+f 12446 12441 12443
+f 12446 12458 12453
+f 12259 12450 12459
+f 12259 12459 12260
+f 12459 12450 12452
+f 12460 12260 12459
+f 12460 12461 12462
+f 12460 12462 12463
+f 12460 12463 12464
+f 12261 12464 12465
+f 12464 12466 12465
+f 12368 12267 12465
+f 12465 12467 12368
+f 12468 12467 12465
+f 12465 12466 12468
+f 12464 12463 12466
+f 12469 12443 12442
+f 12469 12442 12435
+f 12435 12434 11422
+f 12434 11423 11422
+f 12470 11425 12471
+f 12472 12457 12454
+f 12472 12454 12453
+f 12472 12453 12458
+f 12458 12443 12469
+f 12458 12469 12472
+f 12473 12470 12474
+f 12474 12472 12473
+f 12475 12466 12463
+f 12463 12462 12472
+f 12463 12472 12475
+f 12425 12475 12472
+f 12425 12472 12474
+f 12425 12474 12476
+f 12477 12476 12474
+f 12474 12470 12471
+f 12474 12471 12477
+f 12366 12467 12468
+f 12369 12366 12468
+f 12478 12468 12475
+f 12479 12480 12481
+f 12482 12483 12480
+f 12480 12479 12484
+f 12485 316 12486
+f 12486 12487 12485
+f 12488 12489 318
+f 12488 318 295
+f 12490 12488 295
+f 315 12489 12488
+f 12491 315 12488
+f 12488 12492 12491
+f 12482 12490 295
+f 12482 12484 12490
+f 12491 12487 315
+f 12493 12487 12494
+f 12494 12495 12496
+f 12497 12498 12496
+f 12499 12496 12498
+f 12498 12500 12499
+f 12499 12501 12496
+f 12502 12503 12504
+f 12502 12505 12506
+f 12506 12507 12508
+f 12509 12505 12510
+f 12509 12511 12507
+f 12512 12513 12514
+f 12515 12516 12517
+f 12518 12508 12507
+f 12507 12519 12518
+f 12519 12520 12521
+f 12521 12518 12519
+f 12511 12522 12519
+f 12522 12523 12520
+f 12520 12519 12522
+f 12523 12524 12525
+f 12524 12526 12525
+f 12527 12521 12520
+f 12527 12520 12528
+f 12529 12530 12524
+f 12524 12523 12529
+f 12526 12524 12530
+f 12531 12532 12533
+f 12534 12531 12533
+f 12534 12535 12536
+f 12525 12537 12538
+f 12526 12537 12525
+f 12538 12539 12528
+f 12515 12539 12538
+f 12516 12538 12537
+f 12515 12538 12516
+f 12540 12537 12526
+f 12541 12537 12540
+f 12540 12536 12541
+f 12542 12541 12543
+f 12544 12542 12543
+f 12545 12546 12547
+f 12548 12549 12545
+f 12550 12548 12547
+f 587 589 12551
+f 12551 589 12552
+f 12553 12554 589
+f 608 12555 606
+f 12556 12555 608
+f 607 12556 608
+f 12557 12556 607
+f 12557 12553 12556
+f 12558 12559 12560
+f 12559 12558 12553
+f 12561 12560 12562
+f 12559 12562 12560
+f 12562 12559 12563
+f 12564 12563 12559
+f 12564 12559 12557
+f 12559 12553 12557
+f 12565 12563 12564
+f 12563 12566 12562
+f 12567 12568 12561
+f 12569 12567 12570
+f 12569 12570 12571
+f 12572 12573 12574
+f 12575 611 12576
+f 12577 12576 611
+f 611 12575 605
+f 12577 12573 12572
+f 12578 12577 611
+f 12573 12577 12578
+f 12574 12564 12579
+f 12565 12564 12574
+f 12574 12580 12565
+f 12580 12574 12573
+f 12565 12580 12581
+f 12581 12580 12582
+f 12571 12581 12583
+f 12573 12578 12584
+f 12585 12586 12587
+f 12588 12585 12587
+f 12588 12587 12589
+f 619 12590 611
+f 12578 611 12590
+f 12591 12592 12593
+f 12593 12590 12591
+f 12592 12591 12594
+f 12591 12595 12594
+f 12596 12593 12592
+f 12592 12594 12597
+f 12598 620 12599
+f 12597 12594 12595
+f 12600 12597 12595
+f 12584 12587 12586
+f 12601 12587 12584
+f 12602 641 579
+f 12602 12603 641
+f 12604 12603 12605
+f 12606 12607 12608
+f 579 576 12609
+f 12609 12607 579
+f 12552 12608 12607
+f 12554 12608 12552
+f 12554 12610 12608
+f 12611 12481 12606
+f 12606 12610 12611
+f 12612 12613 12611
+f 12612 12611 12614
+f 12614 12610 12554
+f 12614 12560 12612
+f 12612 12560 12615
+f 12613 12513 12500
+f 12613 12612 12513
+f 12583 12616 12571
+f 12617 12618 12619
+f 12618 12617 12620
+f 12621 12513 12615
+f 12622 12623 12621
+f 12622 12615 12561
+f 12622 12624 12623
+f 12625 12626 12623
+f 12627 12628 12626
+f 12626 12625 12627
+f 12627 12629 12628
+f 12630 12629 12631
+f 12630 12631 12632
+f 12633 12634 12635
+f 12636 12633 12637
+f 12638 12637 12633
+f 12639 12640 12637
+f 12629 12641 12638
+f 12641 12642 12638
+f 12643 12624 12568
+f 12567 12643 12568
+f 12569 12644 12643
+f 12569 12643 12567
+f 12645 12646 12644
+f 12627 12625 12643
+f 12627 12643 12646
+f 12627 12646 12631
+f 12647 12644 12569
+f 12569 12571 12647
+f 12616 12647 12571
+f 12648 12644 12647
+f 12649 12648 12647
+f 12650 12649 12616
+f 12651 12645 12648
+f 12651 12648 12652
+f 12651 12652 12653
+f 12631 12645 12654
+f 12651 12654 12645
+f 12655 12631 12654
+f 12655 12654 12651
+f 12655 12632 12631
+f 12652 12648 12649
+f 12652 12649 12619
+f 12650 12619 12649
+f 12656 12657 12658
+f 12659 12660 12661
+f 12661 12656 12658
+f 12661 12658 12662
+f 12661 12662 12659
+f 12636 12534 12533
+f 12636 12637 12535
+f 12640 12535 12637
+f 12640 12663 12535
+f 12642 12641 12664
+f 12665 12641 12632
+f 12665 12632 12657
+f 12665 12664 12641
+f 12656 12666 12665
+f 12665 12657 12656
+f 12666 12667 12664
+f 12664 12665 12666
+f 12668 12639 12642
+f 12664 12667 12642
+f 12667 12669 12668
+f 12668 12642 12667
+f 12670 12669 12667
+f 12670 12667 12671
+f 12672 12673 12671
+f 12671 12674 12672
+f 12673 12675 12670
+f 12670 12671 12673
+f 12676 12655 12651
+f 12676 12657 12632
+f 12677 12658 12676
+f 12676 12678 12677
+f 12679 12677 12680
+f 12681 12682 12683
+f 12684 12683 12685
+f 12685 12686 12684
+f 12686 12687 12684
+f 12688 12689 12690
+f 12691 12689 12692
+f 12691 12692 12588
+f 12693 12691 12588
+f 12689 12691 12694
+f 12693 12694 12691
+f 12690 12682 12681
+f 12617 12650 12688
+f 12693 12685 12682
+f 12682 12694 12693
+f 12600 12695 12597
+f 727 12696 723
+f 12601 12693 12589
+f 12697 12681 12683
+f 12697 12683 12698
+f 12697 12698 12699
+f 729 12699 12698
+f 12698 12684 729
+f 12684 12698 12683
+f 12700 12699 2201
+f 12681 12697 12620
+f 12701 758 757
+f 12702 12703 12704
+f 12705 12706 12707
+f 12708 12536 12663
+f 12709 12708 12663
+f 12547 12708 12710
+f 12669 12711 12712
+f 12712 12711 12713
+f 12550 12710 12714
+f 12670 12711 12669
+f 2063 2047 12715
+f 12716 12717 12718
+f 12718 12717 12715
+f 12718 12715 12719
+f 2067 316 12485
+f 12720 2068 2067
+f 2067 12485 12720
+f 12721 12493 12722
+f 12721 12720 12485
+f 2070 2068 12723
+f 2070 12723 12724
+f 12724 12723 12725
+f 12720 12723 2068
+f 12726 12723 12720
+f 12726 12725 12723
+f 12726 12720 12721
+f 12727 12726 12721
+f 12722 12493 12503
+f 12728 12729 12503
+f 12730 12508 12731
+f 12727 12722 12729
+f 12503 12502 12728
+f 12502 12506 12730
+f 12730 12728 12502
+f 12715 12732 12733
+f 12724 12725 12733
+f 12715 12733 12734
+f 12735 12734 12733
+f 12733 12725 12736
+f 12733 12736 12735
+f 12735 12737 12719
+f 12738 12735 12739
+f 12739 12740 12738
+f 12731 12508 12518
+f 12741 12731 12518
+f 12742 12741 12518
+f 12518 12743 12742
+f 12744 12731 12741
+f 12744 12741 12745
+f 12746 12745 12741
+f 12741 12742 12746
+f 12742 12747 12748
+f 12749 12748 12747
+f 12746 12748 12750
+f 12740 12744 12745
+f 12750 12751 12752
+f 12753 12517 12754
+f 12755 12754 12517
+f 12752 12751 12756
+f 12756 12757 12758
+f 12758 12757 12759
+f 12738 12740 12760
+f 12761 12738 12760
+f 12760 12752 12761
+f 12738 12761 12762
+f 12761 12752 12758
+f 12761 12758 12763
+f 12764 12763 12758
+f 12758 12765 12764
+f 2082 2080 12766
+f 12767 2080 2078
+f 12768 12769 12770
+f 12770 12737 12771
+f 12772 2082 12766
+f 12773 12772 12766
+f 12766 2080 12769
+f 12766 12769 12773
+f 12769 12768 12774
+f 12775 12774 12768
+f 12768 12771 12775
+f 2088 12772 12776
+f 12776 12777 12778
+f 2089 2090 12779
+f 12776 12779 2090
+f 2090 2085 12776
+f 12778 12779 12776
+f 12778 12777 12780
+f 12773 12776 12772
+f 12781 12777 12773
+f 12773 12769 12774
+f 12780 12777 12781
+f 12771 12735 12738
+f 12782 12783 12784
+f 12785 12786 12787
+f 12788 12789 12790
+f 12788 12790 12791
+f 12765 12789 12788
+f 12765 12788 12792
+f 12792 12788 12791
+f 12793 12755 12794
+f 12794 12795 12793
+f 12755 12793 12796
+f 12793 12795 12797
+f 12798 12549 12797
+f 12799 12549 12548
+f 12799 12548 12800
+f 12800 12801 12802
+f 12802 12799 12800
+f 12803 12801 12800
+f 12804 12791 12796
+f 12796 12805 12804
+f 12806 12804 12805
+f 12805 12802 12806
+f 12791 12804 12807
+f 12808 12804 12806
+f 12808 12806 12809
+f 12810 12801 12811
+f 12812 12813 12810
+f 12810 12811 12812
+f 12814 12810 12813
+f 12815 12765 12792
+f 12816 12815 12792
+f 12815 12816 12817
+f 12818 12816 12792
+f 12792 12807 12818
+f 12807 12808 12819
+f 12820 12818 12819
+f 12820 12819 12821
+f 12822 12823 12824
+f 12825 12826 12827
+f 12783 12828 12829
+f 12830 12828 12820
+f 12821 12830 12820
+f 12830 12821 12831
+f 12830 12831 12832
+f 12833 12829 12830
+f 12834 12833 12823
+f 12835 12834 12823
+f 12823 12836 12835
+f 12826 12825 12832
+f 12832 12831 12826
+f 12837 12819 12808
+f 12838 12837 12809
+f 12821 12819 12837
+f 12821 12837 12839
+f 12839 12837 12838
+f 12838 12809 12814
+f 12838 12814 12840
+f 12814 12813 12840
+f 12841 12839 12838
+f 12838 12840 12842
+f 12838 12842 12841
+f 12827 12826 12842
+f 12842 12840 12827
+f 12831 12839 12841
+f 12831 12841 12826
+f 12843 12844 12845
+f 12784 12834 12846
+f 12834 12847 12848
+f 12846 12848 12849
+f 12850 12851 12852
+f 12852 12853 12850
+f 12851 12850 12854
+f 12855 12851 12854
+f 12856 12857 12858
+f 12857 12856 12859
+f 12856 12860 12861
+f 12862 12861 12863
+f 12863 12864 12862
+f 12859 12856 12861
+f 12859 12861 12865
+f 12859 12865 12866
+f 12862 12865 12861
+f 12867 12866 12865
+f 12862 12868 12867
+f 12869 12866 12867
+f 12870 12871 12872
+f 12873 12874 12875
+f 12876 12877 12872
+f 12876 12872 12871
+f 12878 12879 12880
+f 12881 12882 12878
+f 12878 12876 12881
+f 12871 12883 12876
+f 12884 12885 12886
+f 12885 12887 12886
+f 12886 12887 12888
+f 12889 12890 12891
+f 12884 12886 12892
+f 12893 12884 12892
+f 12894 12893 12892
+f 12890 12889 12892
+f 12889 12894 12892
+f 12895 12659 12679
+f 12895 12896 12897
+f 12895 12898 12660
+f 12660 12659 12895
+f 12899 12900 12895
+f 12899 12895 12897
+f 12899 12897 12901
+f 12902 12903 12904
+f 12905 12903 12672
+f 12673 12672 12903
+f 12906 12673 12903
+f 12903 12902 12906
+f 12673 12906 12675
+f 12907 12908 12904
+f 12904 12898 12907
+f 12909 12904 12908
+f 12910 12911 12907
+f 12912 12913 12914
+f 12915 12900 12916
+f 12917 12907 12911
+f 12917 12918 12822
+f 12822 12919 12908
+f 12920 12835 12918
+f 12917 12921 12920
+f 12922 12923 12924
+f 12924 12925 12922
+f 12926 12927 12923
+f 12927 12920 12921
+f 12927 12928 12920
+f 12926 12929 12927
+f 12912 12930 12931
+f 12893 12894 12932
+f 12933 12894 12889
+f 12934 12933 12889
+f 12889 12935 12934
+f 12936 12934 12935
+f 12937 12938 12922
+f 12938 12937 12933
+f 12937 12922 12925
+f 12939 12929 12926
+f 12926 12940 12939
+f 12941 12940 12942
+f 12943 12938 12936
+f 12700 2201 12944
+f 12700 12944 12945
+f 12946 12700 12947
+f 12870 12946 12947
+f 12945 12947 12700
+f 12870 12947 12948
+f 12947 12945 12949
+f 12948 12947 12949
+f 12950 12951 12949
+f 12950 12952 12951
+f 12948 12953 12871
+f 12948 12951 12953
+f 12952 12954 12955
+f 12955 12954 12956
+f 12883 12953 12957
+f 12958 12953 12951
+f 12959 12953 12958
+f 12888 12883 12957
+f 12888 12957 12891
+f 12959 12891 12957
+f 12959 12957 12953
+f 12960 12891 12959
+f 12955 12961 12960
+f 12958 12952 12955
+f 12962 12963 12964
+f 12965 12962 12966
+f 12965 12966 12967
+f 12701 12962 12964
+f 12701 12964 758
+f 12968 12966 12962
+f 12968 12962 12701
+f 12952 12967 12966
+f 12969 12960 12961
+f 12970 12971 12972
+f 12961 12970 12969
+f 12970 12936 12969
+f 12973 12971 12974
+f 12975 12973 12976
+f 12973 12972 12971
+f 12973 12975 12972
+f 12889 12960 12969
+f 12972 12975 12943
+f 12977 12713 12978
+f 12979 12980 12977
+f 12977 12978 12979
+f 12981 12902 12978
+f 12909 12982 12902
+f 12982 12983 12979
+f 12984 12982 12919
+f 12909 12919 12982
+f 12985 12986 12980
+f 12985 12980 12983
+f 12803 12986 12985
+f 12985 12983 12984
+f 12987 12812 12811
+f 12811 12985 12987
+f 12919 12822 12824
+f 12919 12824 12984
+f 12987 12824 12812
+f 12847 12835 12928
+f 12942 12988 12941
+f 12975 12989 12990
+f 12973 12974 12976
+f 12991 12992 12993
+f 12991 12989 12975
+f 12975 12976 12991
+f 12994 12989 12991
+f 12989 12994 12995
+f 12994 12993 12996
+f 12997 12996 12993
+f 12996 12997 12998
+f 12999 12998 12997
+f 13000 12975 12990
+f 12989 13001 12990
+f 13001 13000 12990
+f 12942 13001 13002
+f 13003 12995 13004
+f 13003 13004 13005
+f 13006 13007 13008
+f 13007 13006 13009
+f 13005 13006 13003
+f 13009 13005 13010
+f 13009 13010 13011
+f 13011 13010 13012
+f 13005 12998 13010
+f 13010 13013 13012
+f 13014 13013 13015
+f 13016 13012 13014
+f 13012 13013 13014
+f 13015 13013 13017
+f 13018 12848 12847
+f 12847 12928 13018
+f 13018 13019 13020
+f 12939 13021 12929
+f 13020 13021 13022
+f 13023 13024 13022
+f 13021 13023 13022
+f 12849 13025 13026
+f 13026 12853 12849
+f 13022 13026 13025
+f 12850 12853 13026
+f 12850 13026 13027
+f 13024 13027 13026
+f 13026 13022 13024
+f 13028 12855 12854
+f 13028 12854 13027
+f 13029 13028 13027
+f 13030 13024 13023
+f 13024 13030 13031
+f 13029 13024 13031
+f 13032 12855 13028
+f 13033 13032 13028
+f 13033 13028 13029
+f 13034 13035 13036
+f 13037 13038 13035
+f 13033 13031 13037
+f 13038 13036 13035
+f 13039 13036 13038
+f 13038 13037 13040
+f 12941 12988 13041
+f 13041 13023 13021
+f 13041 12988 13008
+f 13042 13041 13008
+f 13042 13007 13043
+f 13031 13030 13044
+f 13040 13037 13044
+f 13042 13044 13030
+f 13032 12863 12855
+f 12863 13032 13045
+f 13045 12864 12863
+f 13034 13045 13032
+f 13046 12864 13045
+f 13045 13047 13046
+f 12868 13046 13048
+f 13046 13047 13048
+f 13049 13039 13050
+f 13040 13050 13039
+f 13044 13043 13051
+f 13049 13050 13052
+f 13052 13050 13053
+f 13054 13048 13055
+f 12869 13048 13056
+f 13054 13056 13048
+f 13056 13054 13057
+f 13053 13055 13052
+f 13053 13054 13055
+f 13058 13054 13053
+f 13058 13057 13054
+f 13059 13057 13058
+f 13040 13051 13050
+f 13060 13053 13050
+f 13061 13058 13060
+f 13060 13051 13061
+f 13062 13051 13063
+f 13060 13058 13053
+f 13064 13059 13061
+f 13065 13064 13061
+f 13011 13007 13009
+f 13066 13016 13067
+f 13043 13068 13063
+f 13063 13067 13062
+f 13016 13014 13067
+f 13067 13014 13069
+f 13067 13069 13070
+f 13070 13069 13071
+f 13072 13062 13073
+f 13074 13073 13070
+f 13074 13072 13073
+f 13075 13065 13072
+f 13076 2204 12780
+f 12780 13077 13076
+f 12786 13078 13079
+f 13078 13080 13079
+f 13081 13079 13082
+f 2206 2204 13076
+f 13081 13082 13083
+f 13080 12857 13084
+f 13079 13084 13085
+f 13085 13086 13087
+f 13088 12859 12866
+f 13088 12866 13089
+f 13089 13090 13091
+f 13087 13086 13088
+f 13092 13087 13088
+f 13093 13082 13079
+f 13093 13087 13094
+f 13095 13090 12869
+f 13096 13097 13091
+f 13095 13096 13091
+f 13096 13098 13097
+f 13096 13095 13099
+f 13099 13100 13101
+f 13102 13098 13103
+f 13102 13103 13104
+f 13105 13104 13103
+f 13103 13098 13101
+f 13103 13101 13105
+f 13106 13107 13102
+f 13102 13104 13106
+f 13106 13104 13108
+f 13108 13104 13105
+f 13108 13105 13109
+f 13093 13094 13110
+f 13106 13111 13112
+f 13110 13107 13106
+f 13112 13110 13106
+f 13113 13112 13114
+f 13115 13116 13117
+f 13118 13119 13099
+f 13119 13118 13120
+f 13121 13118 13122
+f 13121 13120 13118
+f 13123 13122 13065
+f 13120 13124 13125
+f 13126 13120 13125
+f 13127 13128 13129
+f 13128 13126 13130
+f 13129 13128 13131
+f 13131 13128 13130
+f 13130 13126 13132
+f 13129 13133 13127
+f 13134 13129 13131
+f 13129 13134 13135
+f 13129 13117 13133
+f 13115 13136 13137
+f 13070 13071 13138
+f 13139 13071 13140
+f 13141 13074 13070
+f 13075 13141 13142
+f 13141 13143 13142
+f 13138 13141 13070
+f 13144 13138 13139
+f 13145 13144 13139
+f 13144 13141 13138
+f 13146 13143 13144
+f 13145 13146 13144
+f 13147 13146 13145
+f 13075 13148 13123
+f 13148 13075 13149
+f 13150 13148 13149
+f 13124 13132 13125
+f 13151 13132 13152
+f 13153 13151 13152
+f 13148 13154 13155
+f 13150 13154 13148
+f 13154 13150 13156
+f 13157 13156 13158
+f 13159 13157 13160
+f 13160 13157 13161
+f 13149 13075 13142
+f 13143 13149 13142
+f 13162 13163 13164
+f 13165 13158 13150
+f 13161 13165 13162
+f 13161 13158 13165
+f 13161 13157 13158
+f 13166 13161 13167
+f 13168 13167 13162
+f 13162 13164 13168
+f 13163 13147 13169
+f 13164 13169 13170
+f 13170 13169 13171
+f 13167 13168 13172
+f 13168 13173 13172
+f 13173 13170 13171
+f 13169 13174 13171
+f 13173 13171 13175
+f 13176 13171 13174
+f 13134 13131 13151
+f 13135 13134 13177
+f 13178 13179 13180
+f 13180 13179 13181
+f 13182 13183 13184
+f 13166 13184 13183
+f 13185 13186 13182
+f 13186 13185 13187
+f 13182 13184 13185
+f 13137 13136 13188
+f 13189 13137 13188
+f 13188 13190 13189
+f 13191 13192 13186
+f 13193 13191 13186
+f 13184 13166 13194
+f 13184 13194 13195
+f 13185 13184 13196
+f 13195 13196 13184
+f 13196 13195 13197
+f 13187 13196 13198
+f 13197 13198 13196
+f 13199 13197 13200
+f 13199 13200 13201
+f 13202 13199 13203
+f 13203 13204 13205
+f 13203 13205 13206
+f 13207 13193 13208
+f 13207 13208 13209
+f 13202 13203 13210
+f 13210 13211 13212
+f 13213 13195 13194
+f 13172 13173 13214
+f 13215 13200 13216
+f 13217 13215 13216
+f 13215 13217 13218
+f 13217 13214 13218
+f 13219 13220 13221
+f 13219 13214 13173
+f 13219 13173 13175
+f 13175 13171 13176
+f 13219 13175 13222
+f 13223 13222 13224
+f 13225 13205 13215
+f 13226 13206 13225
+f 13206 13226 13227
+f 13227 13226 13228
+f 13229 13218 13221
+f 13229 13221 13230
+f 13231 13227 13228
+f 13211 13227 13232
+f 13232 13227 13231
+f 13232 13231 13233
+f 13231 13228 13229
+f 13234 13231 13229
+f 13231 13234 13233
+f 13235 13233 13234
+f 13222 13223 13236
+f 13236 13237 13238
+f 13238 13239 13236
+f 13238 13237 13240
+f 13240 13241 13238
+f 13242 2271 2283
+f 2275 2272 2271
+f 2275 12701 757
+f 2275 2271 13242
+f 13242 12702 2275
+f 13243 12702 13242
+f 12702 12701 2275
+f 13243 13242 13244
+f 2283 2278 2305
+f 2305 13245 13244
+f 2305 13246 13245
+f 13244 13245 13247
+f 13246 13248 13245
+f 13249 12707 12703
+f 12707 13249 12705
+f 13250 13251 12705
+f 13252 13250 13253
+f 13250 13252 13251
+f 13254 13255 13245
+f 13254 13248 13256
+f 13253 13255 13257
+f 13253 13250 13255
+f 13258 13253 13257
+f 13253 13258 13259
+f 13260 13253 13259
+f 2306 13261 13262
+f 13262 13261 13263
+f 13262 13264 13248
+f 13265 13248 13264
+f 13261 2306 2298
+f 2298 13266 13261
+f 13267 13266 2298
+f 13268 13266 13267
+f 13261 13266 13263
+f 13269 13266 13268
+f 13256 13248 13265
+f 13270 13265 13264
+f 13271 13265 13270
+f 13271 13272 13273
+f 13274 13270 13264
+f 13274 13275 13272
+f 13276 13252 13253
+f 13252 13276 13251
+f 13260 13277 13253
+f 13277 13260 13278
+f 13276 13253 13277
+f 13275 13279 13280
+f 13281 13280 13279
+f 13282 13280 13281
+f 13283 13284 13285
+f 13286 13287 13288
+f 13286 13288 13289
+f 13290 13291 13286
+f 13290 13289 13292
+f 13293 13294 2362
+f 13295 13293 13296
+f 13295 13294 13293
+f 2362 13297 13293
+f 13298 13299 13300
+f 13296 13301 13302
+f 13296 13303 13301
+f 13301 13303 13304
+f 13299 13305 13300
+f 13306 13300 13305
+f 13306 13303 13300
+f 13306 13307 13304
+f 13308 2374 2376
+f 13308 13309 13297
+f 2374 13308 2362
+f 13310 13299 13311
+f 13310 13311 13309
+f 13312 13310 13309
+f 2383 13308 2376
+f 13309 13308 13313
+f 13314 13313 13315
+f 13314 13316 13309
+f 13314 13309 13313
+f 13317 13312 13316
+f 13318 13319 13305
+f 13317 13320 13312
+f 13321 13320 13317
+f 13322 13319 13323
+f 13324 13323 13325
+f 2401 2399 2398
+f 13326 13327 2401
+f 13268 2300 2399
+f 13327 13328 13269
+f 13327 13296 13328
+f 13327 13295 13296
+f 13327 13269 13268
+f 2360 13294 2401
+f 13301 13329 13302
+f 13330 13331 13329
+f 13332 13333 13329
+f 13332 13329 13304
+f 13307 13334 13332
+f 13307 13335 13334
+f 13322 13335 13319
+f 13322 13336 13335
+f 13337 13322 13323
+f 13337 13323 13324
+f 13338 13322 13337
+f 13279 13275 13330
+f 13339 13330 13333
+f 13340 13330 13339
+f 13341 13339 13342
+f 13332 13334 13339
+f 13343 13344 13345
+f 13345 13346 13292
+f 13347 13348 13292
+f 13292 13346 13347
+f 13349 13344 13350
+f 13344 13349 13351
+f 13351 13352 13344
+f 13353 13346 13352
+f 13354 13353 13355
+f 13356 13357 13358
+f 13338 13357 13322
+f 13359 13356 13358
+f 13360 13356 13359
+f 13361 13359 13358
+f 13351 13362 13363
+f 13361 13364 13365
+f 13366 13367 13365
+f 13354 13355 13368
+f 13313 13369 13315
+f 2382 13369 2383
+f 13370 13314 13315
+f 13371 13315 13369
+f 2636 13371 2635
+f 13372 13373 13374
+f 13375 13373 13372
+f 13376 13377 13378
+f 13378 13379 13316
+f 13379 13378 13377
+f 13380 13374 13373
+f 13373 13381 13380
+f 13381 13382 13380
+f 13383 13384 13380
+f 13384 13385 13379
+f 13382 13386 13380
+f 13387 13373 13375
+f 13375 2644 13388
+f 13387 13375 13388
+f 13389 13373 13387
+f 13389 13387 13388
+f 13390 13389 13391
+f 13392 13386 13382
+f 13390 13393 13389
+f 13393 13394 13395
+f 13395 13396 13393
+f 13394 13397 13398
+f 13398 13395 13394
+f 13399 13400 13317
+f 13401 13321 13400
+f 13383 13402 13385
+f 13403 13400 13399
+f 13401 13404 13405
+f 13406 13404 13401
+f 13407 13408 13403
+f 13408 13409 13406
+f 13404 13406 13409
+f 13410 13404 13409
+f 13408 13411 13409
+f 13411 13410 13409
+f 13412 13324 13405
+f 13412 13405 13404
+f 13386 13392 13413
+f 13413 13414 13386
+f 13386 13414 13415
+f 13416 13414 13413
+f 13417 13418 13415
+f 13419 13416 13413
+f 13420 13416 13419
+f 13421 13420 13419
+f 13422 13407 13418
+f 13422 13418 13417
+f 13422 13408 13407
+f 13423 13417 13414
+f 13423 13414 13424
+f 13425 13422 13417
+f 13411 13422 13425
+f 13425 13417 13423
+f 13424 13426 13425
+f 13425 13423 13424
+f 13427 13426 13424
+f 13420 13428 13424
+f 13429 13428 13420
+f 13429 13420 13421
+f 13428 13430 13424
+f 13431 13432 13433
+f 13433 13434 13431
+f 13435 13433 13432
+f 13435 13432 13436
+f 13435 13437 13433
+f 13435 13436 13438
+f 13439 13440 13434
+f 13439 13434 13433
+f 13440 13394 13393
+f 13441 13397 13394
+f 13441 13394 13440
+f 13437 13442 13439
+f 13438 13443 13444
+f 13445 13446 13421
+f 13446 13447 13421
+f 13448 13449 13445
+f 13446 13445 13449
+f 13449 13448 13442
+f 13449 13450 13447
+f 13449 13447 13446
+f 13451 13450 13449
+f 13452 13451 13449
+f 13453 13454 13450
+f 13453 13455 13454
+f 13454 13456 13429
+f 13457 13429 13456
+f 13455 13456 13454
+f 13456 13455 13458
+f 13450 13451 13453
+f 13453 13459 13455
+f 13460 13453 13451
+f 13459 13453 13460
+f 13455 13459 13458
+f 13452 13442 13461
+f 13452 13461 13462
+f 13461 13443 13463
+f 13462 13464 13460
+f 13460 13452 13462
+f 13436 13465 2714
+f 13466 13436 2714
+f 13466 2714 13467
+f 13468 13466 13467
+f 13438 13436 13466
+f 13466 13469 13438
+f 13469 13466 13468
+f 13468 13470 13469
+f 13468 13471 13470
+f 13471 13468 13467
+f 2736 13471 13467
+f 13472 13473 13470
+f 13474 13443 13438
+f 13469 13474 13438
+f 13474 13475 13443
+f 13474 13469 13476
+f 13474 13476 13475
+f 13477 13475 13478
+f 13470 13473 13476
+f 13479 13480 13477
+f 13481 13482 13483
+f 13483 13484 13485
+f 13486 13487 13488
+f 13489 13487 13486
+f 13490 13491 13492
+f 13464 13493 13494
+f 13495 13458 13459
+f 13495 13496 13497
+f 13498 13497 13496
+f 13498 13496 13499
+f 13494 13495 13459
+f 13496 13495 13494
+f 13488 13499 13496
+f 13487 13500 13501
+f 13500 13502 13501
+f 13487 13501 13488
+f 13501 13499 13488
+f 13501 13491 13499
+f 13498 13499 13491
+f 13503 13502 13500
+f 13503 13504 13502
+f 13504 13503 13505
+f 13502 13504 13506
+f 13492 13502 13506
+f 13507 13506 13504
+f 13504 13505 13507
+f 13508 13507 13505
+f 13508 13509 13507
+f 13510 13511 13512
+f 13513 13463 13477
+f 13513 13462 13463
+f 13513 13477 13480
+f 13514 13513 13480
+f 13515 13514 13486
+f 13514 13480 13516
+f 13514 13516 13486
+f 13516 13517 13486
+f 13479 13516 13480
+f 13516 13479 13481
+f 13518 13493 13515
+f 13519 13520 13521
+f 13489 13486 13517
+f 13520 13522 13523
+f 13524 13525 13526
+f 13521 13516 13481
+f 13527 13524 13526
+f 13528 13529 13511
+f 13530 13410 13411
+f 13337 13531 13338
+f 13532 13338 13531
+f 13531 13533 13532
+f 13410 13530 13533
+f 13534 13532 13533
+f 13535 13530 13411
+f 13427 13536 13537
+f 13537 13426 13427
+f 13538 13533 13530
+f 13539 13538 13537
+f 13540 13541 13538
+f 13540 13538 13539
+f 13430 13542 13543
+f 13542 13544 13543
+f 13537 13536 13539
+f 13539 13536 13544
+f 13545 13539 13544
+f 13545 13546 13547
+f 13546 13545 13542
+f 13541 13548 13533
+f 13549 13550 13534
+f 13551 13552 13542
+f 13542 13457 13551
+f 13552 13546 13542
+f 13540 13553 13541
+f 13540 13554 13553
+f 13541 13549 13534
+f 13534 13548 13541
+f 13546 13555 13547
+f 13556 13554 13547
+f 13556 13547 13555
+f 13554 13557 13553
+f 13554 13556 13557
+f 13550 13549 13558
+f 13558 13364 13550
+f 13366 13559 13560
+f 13561 13559 13562
+f 13563 13558 13549
+f 13553 13563 13549
+f 13564 13565 13557
+f 13566 13563 13567
+f 13558 13566 13562
+f 13567 13568 13562
+f 13366 13560 13569
+f 13560 13561 13570
+f 13570 13571 13569
+f 13571 13570 13572
+f 13573 13572 13570
+f 13561 13562 13574
+f 13575 13497 13498
+f 13576 13575 13498
+f 13555 13552 13577
+f 13578 13555 13577
+f 13578 13564 13556
+f 13579 13580 13581
+f 13582 13578 13577
+f 13578 13582 13564
+f 13583 13564 13582
+f 13583 13582 13584
+f 13585 13584 13586
+f 13584 13585 13583
+f 13583 13585 13587
+f 13588 13492 13506
+f 13492 13588 13490
+f 13588 13589 13490
+f 13506 13590 13588
+f 13591 13588 13590
+f 13592 13588 13593
+f 13509 13590 13507
+f 13591 13590 13594
+f 13595 13596 13597
+f 13598 13599 13592
+f 13600 13601 13595
+f 13602 13603 13604
+f 13605 13597 13596
+f 13603 13605 13606
+f 13598 13607 13599
+f 13598 13603 13608
+f 13609 13610 13606
+f 13606 13611 13609
+f 13612 13608 13610
+f 13564 13613 13565
+f 13565 13613 13614
+f 13583 13613 13564
+f 13613 13583 13615
+f 13613 13616 13614
+f 13565 13614 13617
+f 13615 13583 13587
+f 13618 13585 13619
+f 13619 13608 13612
+f 13612 13620 13619
+f 13609 13612 13610
+f 13618 13621 13587
+f 13613 13622 13623
+f 13624 13623 13622
+f 13624 13622 13621
+f 13625 13626 13617
+f 13616 13627 13628
+f 13619 13629 13618
+f 13629 13621 13618
+f 13629 13619 13620
+f 13629 13630 13621
+f 13629 13620 13630
+f 13621 13630 13631
+f 13624 13621 13631
+f 13630 13620 13632
+f 13609 13633 13612
+f 13634 13620 13612
+f 13634 13632 13620
+f 13633 13634 13612
+f 13632 13634 13635
+f 13624 13631 13636
+f 13637 13631 13630
+f 13631 13637 13636
+f 13632 13638 13637
+f 13639 13627 13640
+f 13636 13638 13641
+f 13642 13641 13638
+f 13643 2892 2889
+f 2894 13643 2889
+f 2745 13644 13645
+f 13646 13647 2909
+f 13648 13649 13650
+f 13651 13652 13653
+f 13654 13653 13652
+f 13655 13649 13656
+f 13656 13657 13655
+f 13657 13653 13658
+f 13659 13658 13653
+f 13653 13656 13651
+f 13658 13659 13660
+f 13661 2907 2902
+f 13662 13661 2902
+f 2907 13661 2908
+f 2908 13661 13663
+f 13646 2909 13663
+f 13664 13646 13663
+f 13665 13666 13648
+f 13667 13665 13648
+f 13661 13668 13669
+f 13670 13665 13664
+f 13665 13646 13664
+f 13671 13666 13672
+f 13671 13672 13651
+f 13672 13652 13651
+f 13672 13666 13673
+f 13673 13666 13674
+f 13648 13671 13649
+f 13671 13648 13666
+f 13666 13665 13675
+f 13674 13675 13676
+f 13677 13678 13679
+f 13680 13677 13679
+f 13681 13677 13680
+f 13681 13600 13677
+f 13680 13679 13682
+f 13683 13684 13685
+f 13686 13687 13688
+f 13687 13684 13688
+f 13689 13690 13691
+f 13692 13690 13689
+f 13687 13691 13684
+f 13691 13687 13689
+f 13691 13690 13685
+f 13685 13684 13691
+f 13692 13689 13693
+f 13693 13694 13692
+f 13695 13696 13697
+f 13698 13697 13699
+f 13699 13700 13654
+f 13695 13524 13527
+f 13695 13701 13696
+f 13702 13660 13701
+f 13701 13659 13700
+f 13700 13699 13696
+f 13696 13701 13700
+f 13701 13660 13659
+f 13682 13679 13703
+f 13698 13682 13697
+f 13672 13704 13686
+f 13705 13706 13707
+f 2910 13708 13709
+f 13710 13711 13712
+f 13713 13711 13643
+f 13710 13712 13714
+f 13715 13714 13712
+f 13711 13715 13712
+f 13715 13716 13717
+f 13709 13662 2902
+f 13662 13709 13668
+f 13718 13668 13709
+f 13719 13718 13708
+f 13720 13676 13670
+f 13721 13722 13720
+f 13721 13720 13723
+f 13721 13723 13724
+f 13725 13726 13722
+f 13725 13722 13721
+f 13727 13728 13729
+f 13674 13676 13722
+f 13730 13694 13731
+f 13732 13706 13733
+f 13728 13733 13729
+f 13731 13706 13732
+f 13734 13732 13728
+f 13728 13735 13734
+f 13727 13735 13728
+f 13734 13736 13732
+f 13730 13737 13738
+f 13739 13740 13734
+f 13741 13742 13743
+f 13742 13735 13743
+f 13744 13739 13742
+f 13745 13739 13746
+f 13747 13748 13740
+f 13749 13750 13751
+f 13601 13600 13752
+f 13752 13681 13753
+f 13752 13754 13601
+f 13755 13756 13757
+f 13758 13759 13760
+f 13761 13758 13762
+f 13761 13759 13758
+f 13761 13763 13759
+f 13764 13765 13596
+f 13764 13596 13601
+f 13609 13766 13633
+f 13692 13767 13690
+f 13768 13763 13769
+f 13770 13692 13694
+f 13770 13694 13738
+f 13754 13757 13771
+f 13754 13771 13772
+f 13771 13773 13772
+f 13772 13773 13774
+f 13756 13775 13757
+f 13776 13775 13777
+f 13776 13777 13778
+f 13779 13776 13778
+f 13780 13781 13778
+f 13779 13778 13781
+f 13782 13783 13780
+f 13784 13785 13783
+f 13633 13774 13786
+f 13786 13634 13633
+f 13787 13786 13774
+f 13787 13773 13776
+f 13788 13786 13787
+f 13789 13634 13786
+f 13635 13634 13790
+f 13634 13789 13790
+f 13791 13635 13790
+f 13788 13792 13789
+f 13792 13788 13793
+f 13789 13792 13790
+f 13642 13635 13791
+f 13785 13788 13779
+f 13788 13785 13793
+f 13784 13794 13785
+f 13794 13795 13785
+f 13796 13795 13794
+f 13797 13738 13798
+f 13737 13799 13798
+f 13800 13801 13797
+f 13802 13799 13737
+f 13803 13799 13802
+f 13800 13804 13801
+f 13804 13782 13801
+f 13805 13782 13804
+f 13804 13806 13805
+f 13804 13807 13806
+f 13802 13751 13803
+f 13803 13808 13809
+f 13747 13751 13802
+f 13808 13803 13810
+f 13809 13807 13811
+f 13807 13809 13812
+f 13808 13812 13809
+f 13813 13812 13808
+f 13812 13806 13807
+f 13812 13814 13806
+f 13814 13812 13813
+f 13814 13813 13815
+f 13816 13805 13806
+f 13794 13816 13796
+f 13806 13817 13816
+f 13817 13818 13816
+f 13796 13816 13818
+f 13817 13806 13814
+f 13817 13814 13819
+f 13573 13820 13821
+f 13572 13573 13822
+f 13821 13822 13573
+f 13821 13820 13823
+f 13823 13820 13824
+f 13824 13625 13825
+f 13826 13827 13828
+f 13829 13830 13831
+f 13828 13832 13829
+f 13830 13829 13833
+f 13834 13017 13835
+f 13835 13836 13834
+f 13834 13836 13837
+f 13834 13837 13838
+f 13291 13839 13832
+f 13839 13291 13840
+f 13348 13840 13291
+f 13348 13841 13842
+f 13842 13843 13840
+f 13347 13841 13348
+f 13353 13354 13844
+f 13844 13354 13845
+f 13354 13846 13847
+f 13845 13354 13847
+f 13848 13849 13368
+f 13849 13846 13368
+f 13850 13851 13852
+f 13853 13850 13852
+f 13854 13855 13843
+f 13855 13854 13856
+f 13857 13858 13856
+f 13859 13856 13860
+f 13861 13859 13860
+f 13861 13862 13859
+f 13862 13861 13863
+f 13862 13863 13864
+f 13140 13838 13865
+f 13865 13866 13139
+f 13867 13866 13865
+f 13867 13868 13866
+f 13853 13867 13850
+f 13869 13870 13868
+f 13871 13869 13868
+f 13870 13872 13873
+f 13873 13872 13147
+f 13147 13872 13874
+f 13870 13874 13872
+f 13869 13871 13875
+f 13876 13875 13877
+f 13878 13853 13858
+f 13878 13858 13879
+f 13878 13879 13871
+f 13871 13880 13881
+f 13864 13882 13862
+f 13864 13883 13882
+f 13884 13882 13883
+f 13885 13882 13884
+f 13886 13881 13887
+f 13888 13889 13887
+f 13888 13890 13891
+f 13885 13890 13881
+f 13892 13885 13893
+f 13891 13890 13892
+f 13890 13885 13892
+f 13894 13860 13895
+f 13860 13894 13861
+f 13861 13894 13896
+f 13897 13898 13863
+f 13898 13897 13899
+f 13900 13901 13902
+f 13900 13902 13903
+f 13904 13849 13905
+f 13849 13906 13905
+f 13907 13906 13571
+f 13908 13905 13907
+f 13905 13908 13909
+f 13909 13908 13910
+f 13902 13904 13911
+f 13911 13912 13902
+f 13911 13913 13912
+f 13913 13911 13914
+f 13915 13899 13916
+f 13917 13918 13916
+f 13893 13885 13919
+f 13920 13893 13919
+f 13919 13915 13918
+f 13918 13920 13919
+f 13892 13921 13922
+f 13920 13918 13923
+f 13924 13923 13918
+f 13925 13926 13927
+f 13903 13912 13899
+f 13899 13928 13917
+f 13929 13930 13931
+f 13931 13932 13929
+f 13932 13933 13934
+f 13932 13935 13936
+f 13937 13934 13938
+f 13939 13940 13941
+f 13942 13940 13938
+f 13943 13942 13938
+f 13941 13944 13939
+f 13944 13945 13946
+f 13947 13946 13945
+f 13927 13926 13946
+f 13947 13948 13949
+f 13948 13947 13945
+f 13950 13949 13948
+f 13951 13952 13953
+f 13938 13934 13933
+f 13954 13943 13938
+f 13938 13933 13954
+f 13943 13955 13956
+f 13955 13943 13954
+f 13957 13958 13959
+f 13960 13961 13962
+f 13962 13963 13960
+f 13958 13964 13960
+f 13965 13955 13966
+f 13967 13964 13968
+f 13960 13969 13970
+f 13971 13969 13967
+f 13972 13970 13969
+f 13973 13952 13974
+f 13973 13974 13975
+f 13976 13977 13978
+f 13979 13980 13961
+f 13979 13961 13970
+f 13981 13979 13982
+f 13982 13970 13972
+f 13981 13982 13983
+f 13984 13981 13985
+f 13986 13987 13988
+f 13988 13984 13985
+f 13988 13985 13986
+f 13169 13876 13877
+f 13877 13989 13990
+f 13991 13990 13992
+f 13993 13989 13889
+f 13993 13889 13888
+f 13994 13993 13888
+f 13990 13989 13993
+f 13992 13993 13994
+f 13176 13995 13996
+f 13991 13996 13990
+f 13176 13996 13997
+f 13998 13176 13997
+f 13997 13996 13991
+f 13991 13999 13997
+f 13992 14000 13991
+f 14000 13994 14001
+f 14002 14003 14001
+f 14003 13999 13991
+f 14002 14004 14003
+f 14005 14002 14006
+f 14007 13994 13888
+f 13891 14007 13888
+f 14007 13891 14008
+f 14009 14010 13994
+f 14008 14011 14009
+f 14011 14012 14009
+f 14012 14011 14013
+f 14008 13891 14014
+f 13922 14015 13892
+f 14015 13891 13892
+f 14014 13891 14015
+f 14016 14014 14015
+f 14017 14018 14015
+f 14019 14020 14018
+f 14008 14014 14011
+f 14011 14021 14013
+f 14016 14011 14014
+f 14022 14013 14021
+f 14020 14021 14016
+f 14019 14022 14020
+f 14023 14024 14019
+f 14012 14006 14010
+f 14025 14012 14013
+f 14025 14026 14027
+f 14028 14005 14006
+f 14028 14029 14030
+f 13998 13175 13176
+f 13224 13998 13997
+f 13224 13222 13998
+f 14031 13224 13997
+f 14032 14031 13997
+f 14031 14032 14033
+f 14034 13223 13224
+f 13223 14034 13237
+f 14035 14033 14036
+f 14032 13999 14037
+f 14038 14037 13999
+f 14039 14038 14040
+f 14033 14039 14041
+f 14033 14041 14036
+f 14040 14041 14039
+f 14035 14042 13237
+f 14024 14023 14043
+f 14044 14029 14045
+f 14044 14045 14027
+f 14044 14027 14026
+f 14046 14030 14029
+f 14047 14048 14049
+f 14050 14046 14029
+f 14029 14044 14050
+f 14051 14050 14052
+f 14050 14053 14052
+f 14054 14026 14055
+f 14054 14056 14057
+f 14044 14054 14058
+f 14059 14060 14061
+f 14050 14058 14053
+f 14062 14053 14058
+f 14063 14053 14062
+f 14063 14062 14064
+f 14064 14065 14063
+f 14065 14066 14063
+f 14061 14064 14059
+f 14064 14061 14067
+f 14064 14067 14065
+f 14068 14066 14065
+f 14069 14068 14067
+f 14070 14036 14071
+f 14038 14049 14072
+f 14048 14072 14049
+f 14072 14040 14038
+f 14040 14072 14073
+f 14072 14048 14073
+f 14074 14041 14040
+f 14036 14075 14071
+f 14071 14075 14076
+f 14077 14078 14079
+f 14042 14035 14070
+f 13237 14042 13240
+f 14080 13240 14042
+f 14081 14080 14042
+f 14082 14080 14081
+f 14081 14083 14082
+f 14084 13241 14085
+f 14082 14085 14080
+f 14085 14082 14086
+f 14086 14082 14087
+f 14086 14087 14088
+f 14071 14076 14083
+f 14083 14076 14089
+f 14090 14089 14076
+f 14082 14083 14089
+f 14082 14089 14091
+f 14089 14090 14091
+f 14076 14092 14090
+f 14093 14090 14092
+f 14093 14092 14094
+f 14095 14091 14093
+f 14091 14096 14087
+f 14095 14096 14091
+f 14094 14095 14093
+f 14097 14096 14095
+f 14095 14094 14098
+f 14098 14094 14099
+f 14100 14048 14047
+f 14051 14100 14047
+f 14100 14051 14101
+f 14048 14100 14078
+f 14101 14078 14100
+f 14102 14078 14101
+f 14101 14103 14102
+f 14102 14103 14104
+f 14101 14052 14105
+f 14101 14105 14106
+f 14106 14104 14103
+f 14103 14101 14106
+f 14107 14092 14102
+f 14108 14104 14106
+f 14106 14109 14108
+f 14110 14111 14109
+f 14111 14110 14112
+f 14107 14113 14114
+f 14108 14113 14104
+f 14115 14113 14108
+f 14115 14108 14111
+f 14115 14114 14113
+f 14116 14117 14118
+f 14119 14115 14116
+f 14119 14116 14120
+f 14121 14120 14116
+f 14116 14118 14121
+f 14122 14112 14066
+f 14123 14124 14122
+f 14123 14122 14125
+f 14126 14127 14066
+f 14128 14126 14068
+f 14125 14127 14126
+f 14125 14126 14129
+f 14126 14128 14129
+f 14129 14128 14130
+f 14129 14131 14125
+f 14131 14132 14125
+f 14123 14125 14132
+f 14129 14130 14131
+f 14133 14132 14131
+f 14117 14124 14118
+f 14094 14114 14134
+f 14119 14134 14114
+f 14135 14134 14119
+f 14119 14120 14135
+f 14120 14121 14136
+f 14137 14099 14134
+f 14137 14134 14138
+f 14138 14134 14139
+f 14135 14139 14134
+f 14136 14139 14135
+f 14140 14118 14124
+f 14140 14124 14123
+f 14141 14142 14140
+f 14143 14144 14145
+f 14143 14145 14146
+f 14133 14147 14145
+f 14145 14147 14148
+f 14141 14143 14146
+f 14141 14146 14149
+f 14146 14148 14150
+f 14151 14149 14146
+f 14146 14150 14151
+f 14152 14153 14141
+f 14141 14149 14154
+f 14154 14149 14151
+f 14155 14156 14136
+f 14136 14153 14155
+f 14153 14152 14157
+f 14152 14154 14158
+f 14152 14158 14157
+f 14157 14159 14160
+f 13921 14161 14162
+f 14163 14164 14165
+f 14165 14018 14163
+f 14019 14018 14165
+f 14019 14165 14023
+f 14166 14023 14165
+f 14166 14165 14167
+f 13922 13921 14168
+f 14168 14169 14163
+f 14164 14163 14169
+f 14170 14167 14171
+f 14167 14170 14166
+f 14172 14173 14174
+f 14174 14175 14172
+f 14176 14174 14173
+f 14177 14178 14179
+f 14179 13925 14180
+f 14177 14180 14181
+f 14181 14180 14182
+f 14182 14183 14184
+f 13927 14180 13925
+f 14185 14186 14183
+f 14183 14182 14185
+f 14173 14172 14181
+f 14187 14188 13950
+f 14043 14189 14060
+f 14189 14190 14191
+f 14192 14193 14166
+f 14184 14183 14194
+f 14194 14183 14186
+f 14195 14194 14196
+f 14196 14197 14195
+f 14198 14192 14195
+f 14198 14195 14197
+f 14199 14200 14201
+f 14061 14189 14202
+f 14191 14203 14202
+f 14061 14204 14067
+f 14205 14067 14204
+f 14204 14061 14202
+f 14202 14206 14204
+f 14205 14069 14067
+f 14204 14206 14205
+f 14207 14208 14206
+f 14209 14208 14207
+f 14205 14210 14069
+f 14211 14210 14205
+f 14205 14208 14211
+f 14209 14211 14208
+f 14212 14213 14203
+f 14214 14213 14212
+f 14212 14215 14214
+f 14200 14199 14215
+f 14207 14213 14214
+f 14216 14207 14214
+f 14216 14214 14217
+f 14187 13973 14218
+f 14219 14196 14218
+f 14196 14219 14201
+f 14220 14201 14219
+f 14221 14219 14222
+f 14220 14219 14223
+f 14223 14219 14221
+f 14224 14223 14221
+f 14223 14224 14225
+f 14224 14226 14227
+f 14226 14228 14227
+f 14229 14227 14228
+f 14230 13987 13986
+f 14231 14230 13986
+f 14230 14229 14228
+f 14229 14230 14232
+f 14230 14231 14232
+f 14224 14227 14225
+f 14232 14233 14234
+f 14235 14236 14237
+f 14223 14236 14199
+f 14225 14236 14223
+f 14238 14236 14225
+f 14237 14236 14239
+f 14214 14235 14237
+f 14240 14237 14239
+f 14241 14240 14242
+f 14242 14240 14239
+f 14243 14239 14244
+f 14238 14225 14245
+f 14246 14238 14245
+f 14247 14238 14246
+f 14246 14234 14248
+f 14248 14234 14249
+f 14244 14247 14250
+f 14247 14248 14251
+f 14252 14244 14250
+f 14253 14254 14255
+f 14256 14255 14254
+f 14209 14257 14211
+f 14258 14259 14210
+f 14260 14259 14261
+f 14260 14262 14254
+f 14263 14264 14262
+f 14265 14266 14258
+f 14267 14265 14258
+f 14258 14257 14267
+f 14266 14265 14268
+f 14241 14269 14270
+f 14271 14269 14241
+f 14269 14272 14273
+f 14269 14273 14270
+f 14271 14274 14272
+f 14271 14272 14269
+f 14273 14272 14275
+f 14275 14272 14274
+f 14268 14276 14263
+f 14264 14263 14276
+f 14277 14276 14268
+f 14277 14278 14279
+f 14279 14264 14276
+f 14279 14276 14277
+f 14280 14281 14275
+f 14281 14280 14282
+f 14282 14283 14281
+f 14254 14284 14285
+f 14285 14256 14254
+f 14286 14285 14284
+f 14284 14287 14286
+f 14284 14254 14262
+f 14287 14284 14288
+f 14285 14147 14133
+f 14285 14286 14148
+f 14148 14147 14285
+f 14150 14148 14286
+f 14150 14286 14289
+f 14289 14290 14291
+f 14292 14291 14290
+f 14287 14293 14294
+f 14295 14294 14296
+f 14297 14292 14298
+f 14298 14295 14297
+f 14299 14300 14296
+f 14296 14300 14301
+f 14295 14296 14301
+f 14297 14295 14302
+f 14303 14302 14295
+f 14304 14302 14303
+f 14305 14306 14307
+f 14279 14307 14264
+f 14307 14306 14264
+f 14307 14279 14278
+f 14307 14278 14308
+f 14300 14299 14305
+f 14278 14281 14309
+f 14310 14303 14311
+f 14151 14291 14312
+f 14292 14312 14291
+f 14312 14292 14313
+f 14151 14312 14159
+f 14313 14292 14297
+f 14159 14312 14314
+f 14312 14313 14314
+f 14160 14159 14314
+f 14313 14302 14315
+f 14304 14315 14302
+f 14314 14316 14317
+f 14318 14316 14319
+f 14320 14317 14316
+f 14321 14318 14322
+f 14305 14323 14300
+f 14309 14324 14325
+f 14308 14309 14325
+f 14325 14324 14326
+f 14326 14305 14325
+f 14327 14328 14326
+f 14327 14326 14324
+f 14323 14326 14329
+f 14326 14328 14330
+f 14331 14323 14332
+f 14333 14311 14332
+f 14332 14334 14333
+f 14335 14336 14310
+f 14335 14310 14333
+f 14337 14338 14335
+f 14332 14323 14339
+f 14340 14341 14339
+f 14342 14341 14340
+f 14321 14338 14337
+f 14343 14344 14337
+f 14337 14345 14343
+f 14346 14344 14343
+f 14342 14340 14347
+f 14348 14347 14349
+f 14350 14351 14343
+f 14343 14348 14350
+f 14348 14349 14352
+f 14271 14241 14242
+f 14271 14242 14353
+f 14353 14274 14271
+f 14243 14354 14242
+f 14355 14356 14357
+f 14354 14358 14357
+f 14358 14359 14360
+f 14360 14357 14358
+f 14361 14283 14282
+f 14359 14362 14363
+f 14363 14362 14252
+f 14363 14360 14359
+f 14360 14363 14364
+f 14363 14252 14365
+f 14366 14367 14361
+f 14368 14367 14366
+f 14369 14357 14360
+f 14370 14368 14366
+f 14366 14371 14370
+f 14372 14365 14252
+f 14364 14365 14373
+f 14365 14372 14373
+f 14369 14360 14374
+f 14375 14370 14371
+f 14374 14375 14371
+f 14364 14373 14376
+f 14376 14373 14377
+f 14378 14375 14374
+f 14378 14379 14380
+f 14381 14283 14367
+f 14382 14327 14381
+f 14381 14367 14382
+f 14382 14367 14383
+f 14382 14384 14328
+f 14384 14382 14383
+f 14385 14384 14383
+f 14383 14368 14385
+f 14330 14384 14386
+f 14386 14387 14339
+f 14388 14387 14386
+f 14386 14389 14388
+f 14388 14390 14387
+f 14391 14392 14389
+f 14385 14391 14389
+f 14392 14388 14389
+f 14392 14391 14393
+f 14392 14393 14394
+f 14390 14388 14392
+f 14390 14392 14395
+f 14395 14392 14394
+f 14395 14394 14396
+f 14387 14397 14340
+f 14398 14397 14387
+f 14399 14397 14398
+f 14400 14401 14402
+f 14401 14403 14404
+f 14404 14403 14405
+f 14406 14404 14405
+f 14400 14394 14393
+f 14396 14394 14407
+f 14396 14407 14408
+f 14408 14407 14409
+f 14408 14409 14410
+f 14406 14411 14412
+f 14413 14414 14415
+f 14416 14410 14409
+f 14417 14416 14413
+f 13472 2736 2743
+f 13472 2743 14418
+f 2743 14419 14418
+f 13472 14418 14420
+f 14421 14420 14418
+f 14419 2742 14422
+f 14422 2742 3912
+f 3912 14423 14422
+f 14422 14423 14424
+f 14418 14419 14422
+f 14425 14421 14426
+f 14426 14424 14427
+f 14428 14426 14427
+f 14429 13483 14425
+f 14428 14430 14429
+f 14431 14428 14427
+f 13641 13642 14432
+f 13639 13641 14432
+f 14432 14433 13639
+f 14432 13642 14434
+f 14434 14435 14432
+f 13645 3912 2745
+f 14423 3912 13645
+f 14436 14423 13645
+f 13644 13647 13645
+f 13645 13647 14436
+f 14437 14424 14438
+f 14439 14438 14436
+f 14439 14436 13650
+f 13650 13655 14439
+f 14431 14427 14437
+f 14440 14438 14439
+f 13527 14441 14442
+f 14442 13702 13527
+f 14443 14444 14445
+f 14440 14443 14445
+f 14443 14440 14446
+f 14443 13702 14444
+f 14446 14439 13655
+f 13657 13658 14443
+f 14443 14446 13657
+f 13791 14447 13642
+f 14447 14434 13642
+f 14448 13790 13792
+f 14448 13791 13790
+f 13791 14448 14449
+f 14449 14447 13791
+f 14434 14450 14435
+f 14450 14434 14451
+f 14449 14451 14447
+f 14452 13792 13793
+f 13795 14452 13793
+f 14453 14449 14448
+f 14454 14455 14449
+f 14456 14454 14453
+f 13795 14457 14456
+f 13819 13818 13817
+f 14458 13818 13819
+f 14459 13819 14460
+f 14458 14457 13818
+f 14461 14460 14462
+f 14461 14463 14460
+f 14464 14463 14461
+f 14465 14466 14454
+f 14467 14468 14469
+f 13908 13572 14470
+f 13572 13822 14470
+f 14470 13910 13908
+f 14471 14470 13822
+f 14472 14473 14474
+f 14471 13822 14472
+f 14471 14475 14470
+f 14471 14472 14476
+f 13930 13929 13914
+f 13930 14477 13931
+f 13930 14475 14478
+f 13930 14478 14477
+f 14476 14478 14475
+f 14476 14475 14471
+f 14479 14476 14472
+f 14476 14480 14481
+f 14482 14474 14483
+f 14484 14482 14483
+f 14472 14482 14479
+f 14485 14486 13639
+f 14433 14485 13639
+f 14476 14479 14480
+f 14479 14482 14480
+f 14480 14487 14488
+f 14489 14490 14491
+f 14492 14491 14490
+f 14490 14493 14492
+f 14487 14492 14494
+f 14494 14495 14496
+f 13935 13931 14497
+f 14497 14498 14499
+f 14499 14498 14500
+f 14481 14500 14498
+f 13936 14497 14501
+f 14502 13933 13936
+f 14502 14503 14504
+f 13933 14504 14505
+f 14503 14502 13936
+f 14506 14504 14503
+f 14505 14507 13966
+f 14506 14508 14504
+f 14509 13972 13971
+f 14510 14511 14512
+f 14501 14513 14514
+f 14514 14513 14515
+f 14513 14516 14515
+f 14506 14517 14508
+f 14515 14517 14514
+f 14512 14508 14517
+f 14516 14518 14515
+f 14517 14515 14519
+f 14520 14510 14512
+f 14521 14522 14523
+f 14481 14480 14524
+f 14480 14488 14524
+f 14481 14524 14525
+f 14525 14524 14526
+f 14524 14488 14526
+f 14527 14528 14525
+f 14526 14488 14529
+f 14525 14526 14527
+f 14530 14513 14531
+f 14532 14530 14533
+f 14530 14534 14535
+f 14534 14532 14536
+f 14534 14536 14537
+f 14527 14529 14538
+f 14536 14539 14537
+f 14539 14536 14540
+f 14540 14541 14539
+f 14542 13982 13972
+f 14542 13972 14509
+f 14542 14543 13983
+f 13983 13982 14542
+f 14544 14545 13983
+f 13983 14543 14544
+f 14543 14546 14544
+f 14544 14546 14547
+f 14521 14548 14549
+f 14549 14542 14521
+f 14542 14509 14521
+f 14550 14546 14551
+f 14547 14550 14552
+f 14550 14553 14552
+f 14548 14521 14523
+f 14553 14548 14554
+f 14555 14553 14554
+f 14556 14557 14558
+f 14556 14558 14450
+f 14450 14559 14556
+f 14560 14493 14557
+f 14495 14493 14560
+f 14560 14557 14556
+f 14559 14455 14454
+f 14454 14561 14559
+f 14562 14561 14466
+f 14563 14556 14561
+f 14561 14562 14564
+f 14565 14566 14563
+f 14563 14564 14565
+f 14466 14567 14568
+f 14466 14568 14562
+f 14468 14569 14568
+f 14570 14569 14468
+f 14571 14569 14570
+f 14569 14572 14573
+f 14572 14569 14571
+f 14574 14467 14575
+f 14574 14570 14467
+f 14468 14467 14570
+f 14574 14576 14570
+f 14570 14576 14577
+f 14574 14578 14576
+f 14579 14577 14576
+f 14577 14571 14570
+f 14572 14571 14577
+f 14577 14580 14572
+f 14581 14572 14580
+f 14580 14579 14581
+f 14580 14577 14579
+f 14582 14496 14495
+f 14495 14560 14583
+f 14584 14496 14582
+f 14583 14582 14495
+f 14585 14586 14583
+f 14565 14587 14566
+f 14587 14585 14566
+f 14585 14587 14588
+f 14587 14565 14588
+f 14585 14588 14586
+f 14583 14589 14590
+f 14586 14589 14583
+f 14591 14590 14586
+f 14586 14592 14591
+f 14593 14591 14594
+f 14594 14591 14592
+f 14586 14588 14592
+f 14595 14592 14588
+f 14596 14594 14592
+f 14595 14597 14596
+f 14598 14599 14588
+f 14588 14599 14595
+f 14600 14599 14601
+f 14601 14602 14600
+f 14600 14602 14603
+f 14603 14604 14605
+f 14606 14597 14595
+f 14597 14605 14607
+f 14605 14597 14606
+f 14608 14609 14610
+f 14507 14611 14612
+f 14613 14612 14611
+f 14611 14614 14613
+f 14611 14615 14614
+f 14510 14616 14615
+f 14615 14611 14510
+f 14617 14614 14615
+f 14522 14617 14615
+f 14615 14616 14522
+f 14523 14522 14616
+f 14618 14619 14620
+f 14621 14622 14623
+f 14619 14623 14624
+f 14619 14624 14625
+f 14626 14627 14618
+f 14628 14629 14627
+f 14627 14630 14622
+f 14629 14631 14630
+f 14631 14632 14630
+f 14633 14634 14629
+f 14635 14634 14633
+f 14636 14631 14634
+f 14634 14635 14636
+f 14632 14631 14637
+f 14631 14638 14637
+f 14636 14639 14631
+f 14639 14640 14638
+f 14638 14631 14639
+f 14640 14639 14641
+f 14641 14642 14640
+f 14636 14635 14643
+f 14644 14643 14645
+f 14644 14641 14639
+f 14644 14645 14646
+f 14644 14647 14641
+f 14642 14641 14647
+f 14648 14649 14650
+f 14648 14650 14647
+f 14648 14647 14646
+f 14646 14651 14652
+f 14653 14649 14648
+f 14652 14653 14648
+f 14654 14655 14545
+f 14545 14544 14654
+f 14654 14544 14547
+f 14654 14547 14656
+f 14657 14656 14547
+f 14547 14552 14657
+f 14231 14655 14658
+f 14659 14657 14660
+f 14659 14660 14661
+f 14658 14662 14231
+f 14232 14231 14662
+f 14663 14664 14662
+f 14663 14662 14658
+f 14233 14232 14662
+f 14662 14664 14665
+f 14665 14233 14662
+f 14666 14665 14667
+f 14663 14668 14659
+f 14659 14669 14663
+f 14659 14661 14670
+f 14670 14669 14659
+f 14663 14671 14664
+f 14671 14663 14669
+f 14671 14665 14664
+f 14669 14670 14672
+f 14671 14669 14673
+f 14672 14673 14669
+f 14674 14675 14624
+f 14674 14624 14623
+f 14674 14623 14676
+f 14676 14677 14674
+f 14678 14674 14677
+f 14678 14679 14680
+f 14681 14682 14683
+f 14683 14684 14681
+f 14685 14686 14683
+f 14661 14660 14685
+f 14687 14685 14683
+f 14670 14661 14687
+f 14670 14687 14688
+f 14689 14688 14687
+f 14687 14683 14689
+f 14670 14688 14672
+f 14690 14689 14691
+f 14689 14683 14682
+f 14682 14692 14689
+f 14693 14691 14689
+f 14682 14694 14695
+f 14696 14697 14698
+f 14696 14698 14699
+f 14699 14249 14696
+f 14699 14698 14700
+f 14249 14699 14701
+f 14667 14671 14673
+f 14697 14667 14702
+f 14702 14667 14673
+f 14701 14699 14700
+f 14672 14690 14703
+f 14691 14703 14690
+f 14673 14704 14702
+f 14705 14704 14703
+f 14706 14705 14707
+f 14703 14708 14705
+f 14691 14693 14709
+f 14695 14710 14692
+f 14693 14692 14710
+f 14711 14709 14693
+f 14711 14712 14709
+f 14713 14714 14705
+f 14711 14715 14712
+f 14716 14706 14707
+f 14250 14251 14717
+f 14717 14701 14718
+f 14719 14717 14718
+f 14720 14718 14721
+f 14722 14723 14714
+f 14724 14722 14725
+f 14726 14727 14723
+f 14723 14724 14726
+f 14728 14724 14725
+f 14726 14724 14728
+f 14726 14728 14729
+f 14730 14676 14632
+f 14730 14637 14731
+f 14732 14730 14731
+f 14733 14694 14734
+f 14735 14736 14737
+f 14731 14637 14638
+f 14738 14739 14740
+f 14741 14742 14743
+f 14694 14733 14744
+f 14741 14743 14745
+f 14746 14745 14747
+f 14745 14743 14748
+f 14747 14745 14748
+f 14749 14750 14642
+f 14749 14642 14650
+f 14751 14740 14750
+f 14751 14750 14749
+f 14650 14649 14749
+f 14752 14738 14740
+f 14752 14740 14751
+f 14753 14748 14752
+f 14754 14753 14755
+f 14747 14748 14756
+f 14748 14753 14757
+f 14695 14744 14710
+f 14711 14758 14759
+f 14759 14758 14760
+f 14759 14715 14711
+f 14760 14761 14762
+f 14763 14759 14762
+f 14764 14763 14762
+f 14649 14765 14749
+f 14755 14749 14765
+f 14653 14766 14765
+f 14765 14649 14653
+f 14765 14767 14755
+f 14767 14765 14766
+f 14767 14768 14755
+f 14754 14755 14768
+f 14769 14756 14757
+f 14757 14770 14769
+f 14761 14769 14771
+f 14770 14757 14772
+f 14770 14772 14773
+f 14774 14770 14773
+f 14771 14769 14770
+f 14771 14770 14775
+f 14776 14761 14771
+f 14777 14776 14778
+f 14777 14778 14775
+f 14777 14775 14779
+f 14775 14774 14780
+f 14725 14781 14728
+f 14728 14781 14782
+f 14729 14728 14783
+f 14783 14728 14784
+f 14372 14250 14785
+f 14786 14719 14720
+f 14373 14787 14788
+f 14789 14788 14787
+f 14787 14790 14789
+f 14788 14791 14379
+f 14792 14791 14788
+f 14792 14788 14789
+f 14792 14789 14793
+f 14380 14379 14791
+f 14794 14795 14796
+f 14797 14798 14799
+f 14797 14799 14800
+f 14793 14789 14797
+f 14793 14797 14801
+f 14797 14800 14801
+f 14801 14800 14802
+f 14803 14804 14805
+f 14804 14803 14727
+f 14804 14727 14806
+f 14806 14807 14804
+f 14808 14809 14726
+f 14809 14807 14806
+f 14810 14811 14812
+f 14813 14814 14815
+f 14814 14813 14816
+f 14792 14793 14796
+f 14796 14817 14794
+f 14801 14818 14796
+f 14796 14793 14801
+f 14817 14796 14818
+f 14802 14819 14818
+f 14801 14802 14818
+f 14818 14819 14820
+f 14412 14411 14794
+f 14821 14412 14794
+f 14822 14415 14412
+f 14412 14821 14822
+f 14823 14824 14825
+f 14826 14823 14825
+f 14827 14825 14824
+f 14417 14415 14822
+f 14828 14829 14830
+f 14831 14830 14829
+f 14829 14827 14831
+f 14830 14832 14828
+f 14830 14831 14833
+f 14810 14812 14834
+f 14834 14835 14810
+f 14836 14837 14835
+f 14834 14812 14838
+f 14836 14834 14839
+f 14837 14840 14827
+f 14827 14820 14837
+f 14840 14836 14841
+f 14842 14841 14839
+f 14841 14842 14843
+f 14844 14845 14763
+f 14763 14846 14844
+f 14847 14848 14779
+f 14779 14780 14847
+f 14847 14849 14848
+f 14813 14850 14851
+f 14845 14784 14782
+f 14784 14845 14852
+f 14852 14845 14844
+f 14851 14853 14854
+f 14854 14853 14855
+f 14854 14855 14856
+f 14857 14816 14813
+f 14813 14851 14857
+f 14858 14857 14851
+f 14851 14854 14858
+f 14859 14816 14857
+f 14857 14858 14860
+f 14858 14854 14861
+f 14854 14862 14863
+f 14854 14863 14861
+f 14844 14864 14852
+f 14865 14866 14844
+f 14856 14855 14864
+f 14867 14848 14868
+f 14869 14864 14870
+f 14869 14871 14856
+f 14871 14863 14862
+f 14863 14871 14872
+f 14868 14873 14867
+f 14871 14869 14874
+f 14875 14863 14872
+f 14872 14871 14876
+f 14875 14872 14877
+f 14859 14857 14878
+f 14879 14880 14881
+f 14842 14882 14878
+f 14883 14884 14881
+f 14885 14886 14887
+f 14884 14883 14886
+f 14886 14885 14888
+f 14889 14875 14887
+f 14877 14890 14875
+f 14876 14891 14892
+f 14892 14877 14876
+f 14891 14893 14894
+f 14892 14891 14894
+f 14892 14895 14877
+f 14892 14894 14896
+f 14895 14892 14897
+f 14896 14897 14892
+f 14897 14896 14898
+f 14888 14885 14899
+f 14888 14899 14900
+f 14901 14899 14885
+f 14885 14895 14901
+f 14900 14899 14901
+f 14900 14901 14902
+f 14902 14903 14904
+f 14905 14904 14906
+f 14907 14594 14908
+f 14909 14910 14908
+f 14651 14911 14912
+f 14912 14911 14913
+f 14914 14912 14913
+f 14915 14913 14909
+f 14594 14916 14908
+f 14909 14908 14917
+f 14916 14917 14908
+f 14917 14918 14919
+f 14919 14909 14917
+f 14919 14918 14920
+f 14921 14653 14652
+f 14652 14912 14921
+f 14914 14922 14912
+f 14915 14914 14913
+f 14915 14923 14922
+f 14923 14919 14924
+f 14924 14925 14923
+f 14926 14927 14928
+f 14928 14920 14918
+f 14928 14918 14926
+f 14927 14609 14929
+f 14609 14930 14929
+f 14931 14929 14932
+f 14933 14920 14928
+f 14933 14928 14934
+f 14934 14928 14935
+f 14936 14768 14767
+f 14937 14938 14936
+f 14939 14921 14940
+f 14941 14942 14937
+f 14937 14942 14938
+f 14939 14940 14943
+f 14943 14944 14941
+f 14941 14939 14943
+f 14942 14941 14944
+f 14943 14940 14922
+f 14945 14943 14922
+f 14942 14944 14946
+f 14947 14946 14944
+f 14948 14942 14946
+f 14946 14947 14949
+f 14946 14949 14948
+f 14948 14949 14950
+f 14772 14754 14951
+f 14773 14772 14952
+f 14953 14952 14954
+f 14953 14955 14952
+f 14956 14774 14957
+f 14780 14774 14956
+f 14958 14959 14955
+f 14957 14959 14960
+f 14960 14956 14957
+f 14959 14961 14960
+f 14961 14959 14958
+f 14960 14961 14962
+f 14963 14964 14960
+f 14923 14965 14945
+f 14925 14965 14923
+f 14949 14966 14950
+f 14965 14925 14967
+f 14950 14968 14969
+f 14969 14953 14950
+f 14969 14955 14953
+f 14970 14969 14968
+f 14950 14966 14968
+f 14970 14971 14961
+f 14972 14963 14962
+f 14973 14974 14975
+f 14973 14975 14976
+f 14977 14978 14979
+f 14980 14981 14982
+f 14847 14956 14983
+f 14849 14847 14983
+f 14849 14983 14984
+f 14985 14986 14964
+f 14985 14964 14963
+f 14987 14988 14989
+f 14990 14991 14966
+f 14967 14989 14965
+f 14992 14989 14967
+f 14987 14989 14993
+f 14994 14987 14995
+f 14972 14973 14996
+f 14997 14970 14998
+f 14997 14998 14999
+f 14999 14991 14994
+f 14996 14976 15000
+f 15001 14975 14997
+f 15002 15003 15004
+f 15004 15000 14976
+f 15004 14976 15001
+f 14976 14975 15001
+f 15005 15006 15001
+f 15006 15007 15008
+f 14986 14985 15009
+f 14984 14868 14849
+f 14868 14984 15010
+f 15011 15010 14984
+f 14984 15012 15011
+f 15013 15014 15015
+f 15016 15011 15012
+f 15012 14986 15016
+f 14986 15009 15016
+f 15017 15016 15009
+f 15010 15011 15018
+f 15009 14985 14963
+f 15009 14963 15019
+f 15020 15019 14963
+f 15021 15020 14996
+f 15000 15004 15022
+f 15022 15004 15003
+f 15021 15000 15023
+f 15023 15000 15022
+f 15024 15017 15019
+f 15019 15020 15024
+f 15025 15017 15024
+f 15025 15024 15026
+f 15027 15028 15021
+f 15027 15022 15029
+f 15030 15026 15028
+f 15028 15027 15030
+f 15030 15029 15031
+f 14893 15015 15032
+f 15015 15033 15032
+f 15033 15015 15014
+f 15018 15034 15010
+f 15034 15014 15010
+f 15035 15034 15018
+f 15018 15025 15035
+f 15034 15036 15014
+f 15035 15037 15034
+f 15037 15038 15036
+f 15037 15036 15034
+f 15039 15040 15033
+f 15039 15033 15014
+f 15039 15041 15040
+f 15041 15039 15036
+f 15041 15036 15038
+f 14894 14893 15032
+f 14896 14894 15032
+f 15040 15042 15043
+f 15040 15041 15044
+f 15042 15040 15044
+f 15045 15043 15046
+f 14898 15045 15047
+f 15047 14906 14898
+f 14906 15047 15048
+f 15046 15049 15047
+f 15046 15047 15045
+f 15048 15047 15049
+f 15048 15049 15050
+f 14905 14906 15048
+f 14905 15048 15051
+f 15048 15050 15051
+f 15046 15043 15042
+f 15052 15046 15042
+f 15053 15052 15042
+f 15044 15053 15042
+f 15046 15052 15054
+f 15054 15049 15046
+f 15050 15049 15054
+f 15054 15055 15050
+f 15052 15056 15054
+f 15035 15026 15057
+f 15058 15057 15026
+f 15057 15037 15035
+f 15059 15038 15037
+f 15037 15057 15059
+f 15058 15059 15057
+f 15059 15058 15060
+f 15061 15041 15038
+f 15058 15026 15030
+f 15058 15030 15062
+f 15031 15062 15030
+f 15058 15062 15060
+f 15062 15031 15063
+f 15064 15063 15065
+f 15066 15061 15067
+f 15068 15069 15070
+f 15069 15068 15071
+f 15069 15071 15072
+f 15068 15064 15073
+f 15071 15068 15073
+f 15044 15066 15074
+f 15066 15072 15074
+f 15053 15044 15074
+f 15072 15071 15074
+f 15075 15074 15071
+f 15076 15056 15052
+f 15077 15078 15076
+f 15079 15076 15078
+f 15077 15074 15075
+f 14979 15080 14977
+f 15081 15082 14977
+f 14977 15083 15081
+f 14992 15084 15085
+f 15085 15084 15086
+f 15082 15084 14992
+f 15087 15086 15088
+f 15084 15088 15086
+f 15089 15090 15091
+f 15092 15093 15002
+f 15002 15001 15092
+f 15094 15095 15096
+f 15097 15095 15094
+f 15096 15098 15092
+f 15092 15099 15093
+f 15095 15100 15098
+f 15098 15096 15095
+f 15099 15098 15100
+f 15081 15080 14979
+f 14979 14980 15101
+f 15089 15081 15102
+f 15101 15102 14979
+f 15102 15101 15103
+f 15097 15104 15095
+f 15100 15095 15104
+f 15100 15104 15105
+f 15100 15105 15106
+f 15107 15097 15108
+f 15097 15109 15104
+f 15107 15110 15109
+f 15111 15110 15107
+f 15111 15112 15110
+f 15110 15113 15114
+f 15113 15110 15112
+f 15115 15090 15089
+f 15116 15115 15103
+f 15090 15115 15117
+f 15111 15090 15117
+f 15117 15118 15111
+f 15112 15111 15118
+f 15022 15093 15119
+f 15120 15121 15031
+f 15122 15121 15120
+f 15106 15123 15122
+f 15063 15121 15124
+f 15124 15121 15122
+f 15124 15122 15123
+f 15125 15065 15063
+f 15124 15126 15127
+f 15127 15125 15124
+f 15114 15128 15123
+f 15127 15126 15128
+f 15126 15123 15128
+f 15129 15125 15127
+f 15129 15127 15130
+f 15131 15129 15132
+f 15133 15128 15114
+f 15133 15114 15113
+f 15134 15127 15128
+f 15135 15136 15130
+f 15137 15132 15138
+f 15139 15138 15132
+f 15140 15141 15142
+f 15140 15142 15143
+f 15143 15144 15140
+f 13116 13115 15145
+f 15146 15147 15148
+f 15149 15150 15151
+f 15152 15151 15153
+f 15152 15153 15145
+f 15154 15145 13115
+f 15145 15154 15152
+f 15151 15152 15149
+f 15141 15155 5560
+f 5560 5556 15156
+f 5560 15156 15141
+f 15157 15155 15140
+f 15158 5562 5560
+f 5560 15155 15158
+f 15154 13137 13189
+f 15154 13189 15159
+f 15159 13191 15160
+f 15152 15154 15159
+f 15152 15159 15161
+f 13207 13209 15162
+f 15162 13209 15163
+f 13209 13210 15164
+f 13210 13212 15165
+f 15164 13210 15166
+f 13210 15165 15166
+f 15167 15168 15169
+f 15169 15162 15167
+f 15167 15162 15163
+f 15167 15163 15170
+f 15171 15170 15164
+f 15164 15166 15171
+f 15166 15165 15172
+f 15171 15166 15172
+f 15171 15172 15173
+f 15174 15175 15167
+f 15167 15170 15176
+f 15170 15171 15176
+f 15177 15178 15176
+f 15171 15173 15177
+f 15177 15173 15179
+f 15177 15179 15180
+f 15181 15182 15183
+f 15183 15182 15184
+f 15177 15182 15178
+f 13233 15165 13232
+f 15185 15172 15165
+f 15186 13235 15187
+f 15186 15187 15188
+f 15189 15173 15172
+f 15172 15185 15189
+f 15189 15185 15190
+f 15173 15189 15191
+f 15189 15190 15191
+f 15186 15192 15190
+f 15192 15186 15193
+f 13239 15188 15187
+f 15192 15194 15191
+f 15195 15194 15192
+f 15179 15194 15196
+f 15195 15196 15194
+f 15193 15195 15192
+f 15149 15152 15197
+f 15198 15175 15199
+f 15149 15199 15200
+f 15201 15199 15175
+f 15175 15181 15201
+f 15199 15201 15202
+f 15203 15201 15181
+f 15181 15183 15203
+f 15203 15183 15204
+f 15205 15200 15199
+f 15206 15200 15205
+f 15205 15207 15208
+f 15208 15209 15205
+f 15210 15211 15209
+f 15209 15208 15210
+f 15211 15210 15212
+f 15213 15208 15214
+f 15215 15212 15210
+f 15210 15216 15215
+f 15217 15210 15213
+f 15216 15218 15219
+f 15220 15221 15184
+f 15184 15222 15220
+f 15221 15220 15223
+f 15224 15225 15223
+f 15226 15186 15188
+f 15226 15188 15227
+f 15226 15227 15228
+f 15227 15229 15228
+f 15230 15226 15228
+f 15230 15228 15231
+f 15232 15228 15229
+f 15231 15228 15232
+f 15231 15232 15233
+f 15232 15234 15233
+f 15196 15195 15235
+f 15193 15230 15236
+f 15235 15195 15193
+f 15237 15193 15236
+f 15238 15239 15180
+f 15238 15196 15235
+f 15224 15239 15240
+f 15241 15242 15243
+f 15241 15243 15244
+f 15243 15245 15244
+f 15246 15244 15245
+f 15230 15231 15236
+f 15236 15231 15247
+f 15248 15236 15247
+f 15248 15247 15249
+f 15247 15231 15233
+f 15247 15233 15250
+f 15249 15247 15250
+f 15251 15250 15233
+f 15250 15251 15252
+f 15236 15245 15237
+f 15245 15236 15248
+f 15253 15254 15249
+f 15253 15249 15250
+f 15254 15253 15255
+f 15253 15250 15252
+f 15256 15257 15258
+f 15256 15258 15259
+f 15225 15258 15221
+f 15221 15223 15225
+f 15224 15260 15225
+f 15258 15225 15261
+f 15261 15225 15260
+f 15261 15259 15258
+f 15259 15261 15262
+f 15263 15262 15261
+f 15261 15260 15263
+f 15264 15257 15256
+f 15264 15256 15265
+f 15266 15265 15256
+f 15256 15259 15266
+f 15266 15267 15268
+f 15269 15268 15270
+f 15270 15268 15267
+f 15271 15272 15273
+f 15268 15269 15273
+f 15272 15265 15268
+f 15260 15224 15274
+f 15274 15241 15275
+f 15276 15260 15274
+f 15274 15275 15276
+f 15263 15260 15276
+f 15277 15275 15241
+f 15241 15244 15277
+f 15244 15246 15278
+f 15279 15276 15275
+f 15275 15277 15279
+f 15279 15277 15278
+f 15279 15278 15280
+f 15281 15282 15283
+f 15283 15276 15281
+f 15284 15282 15281
+f 15284 15281 15285
+f 15283 15270 15263
+f 15263 15276 15283
+f 15270 15283 15282
+f 15269 15270 15282
+f 15269 15282 15284
+f 15286 15281 15279
+f 15286 15280 15287
+f 15281 15286 15288
+f 15288 15286 15287
+f 15289 15278 15246
+f 15290 15289 15246
+f 15280 15278 15289
+f 15289 15290 15291
+f 15290 15255 15292
+f 15287 15280 15289
+f 15293 15294 15291
+f 15291 15292 15295
+f 15291 15295 15293
+f 15296 15295 15292
+f 15273 15285 15297
+f 15285 15273 15284
+f 15273 15269 15284
+f 15288 15298 15299
+f 15288 15299 15297
+f 15297 15285 15288
+f 15294 15293 15218
+f 15218 15299 15294
+f 15215 15219 15300
+f 15211 15215 15300
+f 15300 15200 15206
+f 15215 15211 15212
+f 14086 15301 14084
+f 15302 14086 14088
+f 14088 14096 15303
+f 15302 15234 15301
+f 15304 15234 15302
+f 15251 15304 15305
+f 15306 15305 15304
+f 15306 15304 15303
+f 15307 15306 15308
+f 15309 15310 15307
+f 14096 15308 15303
+f 15311 14096 14097
+f 15311 14097 15312
+f 15313 15308 15311
+f 15312 15314 15315
+f 15314 15316 15315
+f 15313 15315 15317
+f 15318 15317 15319
+f 15319 15317 15320
+f 15319 15320 15321
+f 15322 15323 15315
+f 15315 15316 15322
+f 15324 15325 15320
+f 15320 15323 15324
+f 15326 15324 15323
+f 15323 15322 15326
+f 15252 15327 15328
+f 15329 15328 15330
+f 15328 15331 15332
+f 15333 15330 15334
+f 15335 15330 15328
+f 15328 15332 15335
+f 15336 15334 15330
+f 15337 15336 15335
+f 15338 15331 15310
+f 15338 15325 15339
+f 15340 15332 15331
+f 15331 15338 15340
+f 15340 15338 15339
+f 15340 15339 15341
+f 15339 15325 15324
+f 15339 15324 15342
+f 15342 15324 15326
+f 15341 15342 15343
+f 15343 15342 15344
+f 15345 15332 15340
+f 15345 15340 15346
+f 15347 15346 15340
+f 15340 15341 15347
+f 15337 15346 15348
+f 15349 15316 14138
+f 15350 15349 14139
+f 14139 14156 15350
+f 15351 15326 15322
+f 15322 15316 15349
+f 15322 15349 15351
+f 15352 15344 15326
+f 15326 15351 15352
+f 15344 15352 15353
+f 15354 15352 15351
+f 15355 15356 15357
+f 15357 15343 15353
+f 15357 15353 15355
+f 15350 14156 15358
+f 15350 15358 15359
+f 14155 15358 14156
+f 14155 14157 15360
+f 15358 15360 15359
+f 15359 15360 15361
+f 15359 15361 15362
+f 15363 15360 14157
+f 15364 15365 15359
+f 15362 15364 15359
+f 15352 15354 15365
+f 15352 15365 15366
+f 15355 15353 15367
+f 15368 15369 15370
+f 15371 15372 15373
+f 15374 15373 15369
+f 15368 15370 15375
+f 15376 15377 15295
+f 15295 15378 15376
+f 15376 15378 15379
+f 15334 15378 15333
+f 15380 15334 15336
+f 15337 15381 15336
+f 15379 15378 15380
+f 15381 15337 15348
+f 15348 15382 15383
+f 15384 15385 15386
+f 15384 15386 15387
+f 15383 15386 15385
+f 15387 15386 15388
+f 15389 15388 15386
+f 15386 15383 15389
+f 15377 15390 15218
+f 15377 15376 15391
+f 15384 15392 15379
+f 15391 15392 15393
+f 15392 15384 15387
+f 15393 15387 15388
+f 15394 15393 15388
+f 15388 15395 15394
+f 15389 15356 15355
+f 15389 15355 15396
+f 15397 15394 15395
+f 15395 15398 15397
+f 15397 15398 15399
+f 15396 15355 15400
+f 14317 14320 15401
+f 15402 15403 15401
+f 15404 15405 15406
+f 15407 15375 15404
+f 15407 15404 15406
+f 15406 15405 15403
+f 14321 14346 15408
+f 15409 14350 15410
+f 15411 15412 15413
+f 15414 15402 15408
+f 15368 15375 15407
+f 15415 15416 15417
+f 15418 15417 15416
+f 15416 15419 15418
+f 15420 15421 15422
+f 15423 15424 15425
+f 15426 15418 15419
+f 15419 15423 15426
+f 15426 15423 15425
+f 15426 15425 15427
+f 15428 15429 15430
+f 15431 15432 15433
+f 15433 14399 14398
+f 15433 14398 15431
+f 15413 15432 15434
+f 15431 14390 15430
+f 15435 15431 15430
+f 15435 15430 15436
+f 15435 15432 15431
+f 15436 15430 15429
+f 15434 15435 15437
+f 15438 15437 15439
+f 15438 15440 15413
+f 15437 15435 15436
+f 15439 15437 15436
+f 15441 14408 14410
+f 15441 15442 15429
+f 14416 14417 15443
+f 15444 14410 14416
+f 15444 14416 15445
+f 15446 15429 15442
+f 15427 15425 15447
+f 15427 15447 15448
+f 15448 15447 15449
+f 15448 15449 15450
+f 15451 15452 15453
+f 15450 15449 15453
+f 15450 15453 15454
+f 15455 15374 15415
+f 15455 15417 15418
+f 15456 15455 15418
+f 15418 15426 15457
+f 15426 15427 15457
+f 15418 15457 15456
+f 15456 15457 15458
+f 15456 15458 15459
+f 15458 15457 15448
+f 15457 15427 15448
+f 15460 15459 15458
+f 15458 15461 15460
+f 15458 15450 15454
+f 15462 15463 15456
+f 15456 15459 15462
+f 15464 15462 15459
+f 15459 15460 15464
+f 15465 15300 15219
+f 15465 15394 15397
+f 15466 15465 15467
+f 15465 15468 15463
+f 15467 15463 15462
+f 15469 15467 15462
+f 15462 15464 15469
+f 15470 15443 14417
+f 15471 15470 14417
+f 14832 15470 15471
+f 15472 15473 15443
+f 15474 15472 15470
+f 15470 14832 15474
+f 15474 14832 15475
+f 15474 15475 15476
+f 15476 15475 15477
+f 15478 15479 15472
+f 15472 15474 15478
+f 15476 15477 15480
+f 14841 15481 14840
+f 15481 15480 15477
+f 15482 15480 15481
+f 15483 15484 15485
+f 15483 15485 15478
+f 15478 15480 15483
+f 15480 15482 15486
+f 15487 15488 15489
+f 15489 15490 15487
+f 15490 14884 15487
+f 15488 15487 15491
+f 15487 14884 14886
+f 15492 15493 14886
+f 14886 14888 15492
+f 15493 15491 15487
+f 15482 15491 15494
+f 15494 15491 15493
+f 14900 15492 14888
+f 15492 14900 15495
+f 15495 14900 15496
+f 15495 15496 15497
+f 15498 15496 14902
+f 14902 14904 15498
+f 14904 14905 15499
+f 15498 15497 15496
+f 15498 15499 15500
+f 15495 15501 15492
+f 15497 15502 15495
+f 15502 15501 15495
+f 15502 15497 15503
+f 15503 15497 15504
+f 15503 15504 15505
+f 15504 15497 15500
+f 15504 15500 15506
+f 15507 15486 15494
+f 15494 15501 15507
+f 15486 15507 15508
+f 15507 15501 15509
+f 15509 15501 15502
+f 15510 15509 15502
+f 15502 15503 15510
+f 15503 15505 15510
+f 15509 15510 15511
+f 15510 15505 15512
+f 15511 15510 15512
+f 15508 15507 15509
+f 15513 15514 15511
+f 15513 15511 15515
+f 15516 15460 15461
+f 15484 15483 15517
+f 15517 15461 15484
+f 15486 15518 15517
+f 15519 15464 15460
+f 15520 15521 15522
+f 15520 15522 15508
+f 14905 15051 15499
+f 15137 15523 15524
+f 15525 15078 15075
+f 15526 15525 15075
+f 15075 15524 15523
+f 15075 15523 15526
+f 15075 15078 15077
+f 15079 15078 15527
+f 15525 15527 15078
+f 15527 15528 15079
+f 15528 15527 15529
+f 15530 15531 15529
+f 15532 15531 15530
+f 15532 15530 15533
+f 15513 15534 15535
+f 15536 15537 15538
+f 15539 15540 15541
+f 15533 15539 15538
+f 15538 15537 15533
+f 15533 15540 15539
+f 15542 15543 15544
+f 15545 15538 15543
+f 15545 15543 15542
+f 15544 15543 15539
+f 15544 15539 15541
+f 15546 15544 15541
+f 15541 15547 15546
+f 15539 15543 15538
+f 15548 15549 15550
+f 15551 15552 15548
+f 15548 15550 15551
+f 15553 15112 15118
+f 15553 15550 15549
+f 15554 15553 15555
+f 15556 15557 15558
+f 15559 15560 15561
+f 15562 15560 15563
+f 15561 15560 15562
+f 15564 15565 15556
+f 15564 15566 15565
+f 15563 15565 15562
+f 15567 15559 15561
+f 15568 15562 15566
+f 15569 15113 15548
+f 15569 15570 15135
+f 15139 15135 15570
+f 15571 15572 15573
+f 15523 15137 15138
+f 15574 15575 15138
+f 15138 15139 15574
+f 15576 15577 15526
+f 15577 15576 15578
+f 15572 15578 15576
+f 15578 15572 15571
+f 15579 15530 15577
+f 15533 15530 15579
+f 15547 15580 15581
+f 15582 15583 15581
+f 15581 15552 15584
+f 15571 15541 15540
+f 15585 15582 15559
+f 15520 15586 15542
+f 15587 15588 15567
+f 15567 15589 15587
+f 15588 15587 15590
+f 15591 15587 15589
+f 15592 15589 15593
+f 15591 15589 15592
+f 15594 15590 15587
+f 15587 15591 15594
+f 15594 15591 15592
+f 15590 15595 15588
+f 15596 15590 15594
+f 15597 15585 15567
+f 15597 15567 15588
+f 15598 15597 15588
+f 15598 15588 15595
+f 15595 15599 15600
+f 15601 15600 15602
+f 15600 15599 15603
+f 15602 15600 15603
+f 15604 15602 15603
+f 15604 15605 15606
+f 15607 15608 15601
+f 15601 15602 15607
+f 15608 15607 15609
+f 15602 15604 15610
+f 15610 15604 15606
+f 15607 15610 15611
+f 15612 15611 15610
+f 15521 15520 15613
+f 15519 15613 15614
+f 15615 15613 15520
+f 15520 15616 15615
+f 15613 15615 15617
+f 15618 15615 15616
+f 15616 15608 15618
+f 15609 15618 15608
+f 15619 15620 15611
+f 15621 15622 15623
+f 15622 15620 15624
+f 15624 15620 15619
+f 15624 15619 15625
+f 15624 15625 15626
+f 15627 15628 15629
+f 15630 15631 15617
+f 15617 15627 15630
+f 15632 15630 15627
+f 15627 15629 15632
+f 15629 15633 15632
+f 15630 15632 15634
+f 15635 15632 15633
+f 15635 15636 15632
+f 15636 15635 15637
+f 15638 15630 15639
+f 15630 15634 15640
+f 15641 15642 15643
+f 15644 15645 15646
+f 15647 15645 15643
+f 15643 15648 15647
+f 15649 15646 15645
+f 7079 15650 15651
+f 15652 15650 15466
+f 15652 15466 15467
+f 15651 15653 15654
+f 15655 15654 15653
+f 15656 15657 15658
+f 15657 15656 15469
+f 15658 15657 15659
+f 15658 15659 15660
+f 15658 15660 15661
+f 15659 15638 15662
+f 15662 15660 15659
+f 15661 15660 15663
+f 15662 15638 15639
+f 15662 15639 15664
+f 15665 15666 15667
+f 15668 15669 15665
+f 15670 15666 15671
+f 15672 15671 15666
+f 15673 15663 15660
+f 15660 15662 15664
+f 15660 15664 15673
+f 15673 15664 15674
+f 15673 15674 15675
+f 15675 15674 15670
+f 15676 15675 15670
+f 15671 15672 15676
+f 15661 15677 15678
+f 15661 15678 15658
+f 15677 15661 15679
+f 15661 15663 15679
+f 15680 15679 15681
+f 15682 15680 15681
+f 15681 15683 15682
+f 15673 15679 15663
+f 15681 15679 15673
+f 7074 15684 15685
+f 15685 7448 7074
+f 15686 7488 7448
+f 15686 15685 15684
+f 15687 7490 7488
+f 7488 15686 15687
+f 15505 15506 15688
+f 15688 15506 15689
+f 15512 15505 15688
+f 15512 15688 15690
+f 15690 15688 15689
+f 15690 15689 15691
+f 15051 15692 15693
+f 15692 15055 15694
+f 15693 15692 15694
+f 15693 15694 15695
+f 15696 15697 15694
+f 15696 15694 15055
+f 15055 15698 15696
+f 15695 15694 15697
+f 15693 15695 15699
+f 15697 15699 15695
+f 15699 15697 15700
+f 15500 15701 15506
+f 15702 15506 15701
+f 15702 15701 15703
+f 15702 15689 15506
+f 15703 15699 15704
+f 15705 15706 15704
+f 15696 15698 15707
+f 15708 15697 15696
+f 15709 15708 15696
+f 15696 15707 15709
+f 15700 15697 15708
+f 15710 15709 15707
+f 15707 15528 15710
+f 15710 15528 15529
+f 15709 15711 15708
+f 15712 15700 15708
+f 15713 15711 15709
+f 15709 15710 15713
+f 15712 15711 15714
+f 15529 15713 15710
+f 15715 15716 15717
+f 15718 15706 15719
+f 15719 15706 15705
+f 15719 15705 15717
+f 15718 15719 15716
+f 15716 15720 15718
+f 15716 15715 15545
+f 15535 15720 15716
+f 15714 15715 15717
+f 15536 15715 15714
+f 15714 15721 15536
+f 15721 15537 15536
+f 15532 15537 15721
+f 15536 15545 15715
+f 15722 13713 2893
+f 15723 8145 15724
+f 15725 15726 15727
+f 8152 15728 15729
+f 15730 15728 15731
+f 15728 15730 15732
+f 15728 15733 15729
+f 15734 8157 8158
+f 15735 15736 15737
+f 15737 15725 15723
+f 15738 15725 15737
+f 8157 15735 15739
+f 15735 15740 15741
+f 15742 15738 15736
+f 15742 15736 15743
+f 15736 15744 15745
+f 15745 15743 15736
+f 15738 15746 15725
+f 15747 15746 15738
+f 15742 15748 15738
+f 15738 15748 15747
+f 15749 15750 15751
+f 15733 15750 15752
+f 15750 15749 15752
+f 15740 8157 15753
+f 15753 15752 15754
+f 15754 15740 15753
+f 15754 15755 15740
+f 15741 15740 15756
+f 15745 15744 15757
+f 15757 15758 15759
+f 15742 15760 15761
+f 15742 15761 15748
+f 15762 15760 15763
+f 15761 15760 15762
+f 15764 15763 15759
+f 15763 15764 15762
+f 15765 15761 15762
+f 15766 15767 13713
+f 13711 13713 15767
+f 15727 15767 15766
+f 13716 15768 15769
+f 15769 15770 13716
+f 15769 15771 15772
+f 15727 15726 15767
+f 15726 15773 15767
+f 15774 15773 15726
+f 15726 15746 15774
+f 15746 15775 15774
+f 15774 15775 15776
+f 15775 15771 15776
+f 15747 15777 15775
+f 15777 15772 15771
+f 15778 15777 15779
+f 15780 15781 15782
+f 15783 15780 15782
+f 13746 13744 15784
+f 13750 13749 13745
+f 15785 13746 15780
+f 15786 15785 15780
+f 15779 15777 15747
+f 15779 15747 15787
+f 15788 15778 15779
+f 15789 15788 15790
+f 15782 15791 15783
+f 15792 15788 15789
+f 15792 15791 15782
+f 15790 15793 15794
+f 15794 15795 15790
+f 15795 15794 15796
+f 15795 15797 15790
+f 15797 15789 15790
+f 15797 15798 15799
+f 15800 15801 15792
+f 15797 15800 15792
+f 15802 13808 15803
+f 15803 13808 13810
+f 13813 13808 15804
+f 15805 13813 15804
+f 15804 13808 15802
+f 15806 15804 15802
+f 15806 15807 15804
+f 13813 15805 13815
+f 15808 15786 15809
+f 15810 15809 15811
+f 15812 15786 15783
+f 15812 15811 15786
+f 15811 15806 15802
+f 15813 15806 15811
+f 15814 15812 15815
+f 15805 15807 14462
+f 14461 14462 15807
+f 15816 14461 15807
+f 15806 15817 15807
+f 15816 15807 15817
+f 15806 15818 15817
+f 15814 15818 15813
+f 15819 15818 15814
+f 15820 15818 15819
+f 15818 15821 15817
+f 15815 15822 15819
+f 15823 15821 15818
+f 15824 15800 15799
+f 15791 15812 15783
+f 15801 15825 15826
+f 15815 15826 15827
+f 15800 15828 15801
+f 15828 15825 15801
+f 15800 15824 15828
+f 15829 15825 15830
+f 15822 15815 15827
+f 15831 15827 15829
+f 15831 15822 15827
+f 15831 15829 15830
+f 15831 15830 15832
+f 15830 15833 15834
+f 15832 15830 15834
+f 8284 15835 15751
+f 15836 15837 15754
+f 15837 15836 15838
+f 15838 15836 8292
+f 15837 15838 15758
+f 15839 15758 15838
+f 15840 15758 15839
+f 15840 15759 15758
+f 8290 15838 8292
+f 15841 15838 8290
+f 15841 15842 15838
+f 15842 15843 15839
+f 15844 15759 15840
+f 15844 15840 15843
+f 8290 8295 15841
+f 15842 15841 15845
+f 15846 15843 15842
+f 15846 15844 15843
+f 15844 15846 15847
+f 15842 15845 15846
+f 15847 15848 15844
+f 15848 15849 15844
+f 15845 15850 15846
+f 15847 15851 15848
+f 15852 15765 15762
+f 15852 15849 15853
+f 15796 15765 15854
+f 15849 15855 15853
+f 15856 15847 15857
+f 8305 15858 8304
+f 8309 15858 8305
+f 15859 15860 8309
+f 8303 15861 8302
+f 8304 15861 8303
+f 15862 15861 15858
+f 15863 15862 15858
+f 15864 15862 15863
+f 15862 15845 15861
+f 15862 15850 15845
+f 15865 15866 15857
+f 15867 15865 15862
+f 8309 15860 15858
+f 15864 15868 15867
+f 15869 15868 15864
+f 15870 15868 15869
+f 15866 15856 15857
+f 15871 15866 15865
+f 15872 15856 15871
+f 15873 15871 15865
+f 15873 15874 15871
+f 15867 15868 15875
+f 15876 15867 15875
+f 15876 15875 15877
+f 15875 15868 15870
+f 15878 15875 15870
+f 15875 15878 15877
+f 15879 15880 15877
+f 15854 15881 15882
+f 15855 15872 15881
+f 15881 15872 15883
+f 15872 15855 15851
+f 15856 15872 15851
+f 15884 15885 15882
+f 15885 15884 15886
+f 15887 15888 15885
+f 15886 15887 15885
+f 15874 15883 15872
+f 15876 15874 15873
+f 15874 15889 15883
+f 15886 15884 15889
+f 15890 15891 15892
+f 15887 15893 15894
+f 15895 15894 15893
+f 15893 15896 15895
+f 15833 15897 15896
+f 15886 15898 15887
+f 15899 15893 15898
+f 15899 15900 15893
+f 15899 15898 15901
+f 15902 15896 15900
+f 15903 15904 15902
+f 15886 15892 15905
+f 15905 15898 15886
+f 15906 15898 15905
+f 15898 15906 15907
+f 15907 15901 15898
+f 15902 15901 15907
+f 15908 15903 15902
+f 15909 15903 15908
+f 15905 15910 15907
+f 15907 15911 15912
+f 8310 8523 15913
+f 15914 15913 8522
+f 15915 15859 15913
+f 15916 15859 15915
+f 15917 15916 15915
+f 15870 15916 15918
+f 15919 8530 8532
+f 15920 8532 15921
+f 8540 15922 8538
+f 8538 15921 8535
+f 15923 15921 8538
+f 15922 15923 8538
+f 15924 15917 15914
+f 15917 15924 15925
+f 15920 15924 15919
+f 15924 15926 15925
+f 15917 15925 15927
+f 15928 15924 15920
+f 15924 15928 15929
+f 15924 15929 15926
+f 15929 15930 15926
+f 15922 8540 8579
+f 8581 15931 8580
+f 8579 15932 15922
+f 15932 8579 8580
+f 15931 15932 8580
+f 8584 15933 8581
+f 15931 8581 15933
+f 8585 15934 15935
+f 15935 15934 15936
+f 15937 15929 15928
+f 15930 15929 15937
+f 15930 15937 15938
+f 15926 15930 15939
+f 15938 15940 15930
+f 15879 15878 15941
+f 15879 15941 15942
+f 15879 15943 15880
+f 15942 15943 15879
+f 15943 15944 15880
+f 15944 15943 15945
+f 15944 15945 15946
+f 15941 15947 15948
+f 15941 15948 15949
+f 15940 15950 15939
+f 15949 15942 15941
+f 15942 15949 15951
+f 15942 15951 15943
+f 15943 15951 15952
+f 15945 15943 15953
+f 15954 15952 15951
+f 15952 15953 15943
+f 15932 15955 15922
+f 15956 15955 15932
+f 15957 15922 15955
+f 15931 15956 15932
+f 15937 15957 15955
+f 15937 15955 15958
+f 15959 15960 15956
+f 15956 15961 15959
+f 15962 15963 15961
+f 15960 15964 15938
+f 15965 15960 15966
+f 15963 15967 15966
+f 15966 15967 15968
+f 15969 15970 15936
+f 15971 15963 15970
+f 15971 15972 15963
+f 15963 15972 15967
+f 15964 15973 15950
+f 15974 15973 15964
+f 15974 15964 15965
+f 15975 15950 15973
+f 15973 15976 15975
+f 15976 15977 15975
+f 15978 15979 15974
+f 15974 15965 15978
+f 15980 15978 15968
+f 15981 15982 15976
+f 15979 15980 15981
+f 15983 15977 15976
+f 15983 15984 15985
+f 15952 15954 15985
+f 15952 15985 15986
+f 15982 15980 15987
+f 15987 15988 15984
+f 15984 15982 15987
+f 15986 15985 15984
+f 15986 15984 15988
+f 15989 15968 15967
+f 15990 15980 15968
+f 15991 15980 15990
+f 15989 15967 15972
+f 15992 15990 15989
+f 15990 15993 15991
+f 15993 15990 15994
+f 15987 15993 15988
+f 15991 15993 15987
+f 15988 15993 15995
+f 15996 15988 15995
+f 15996 15995 15997
+f 15998 15999 16000
+f 16001 15945 16002
+f 16003 16002 15945
+f 15999 16001 16000
+f 16004 16000 16001
+f 16005 16006 16000
+f 16006 16007 16008
+f 16004 16005 16000
+f 16003 15953 16009
+f 16009 15953 15986
+f 16010 16009 15986
+f 16009 16010 16011
+f 16012 16011 16013
+f 16014 15996 15997
+f 15997 16015 16014
+f 16011 16015 16016
+f 16013 16011 16016
+f 16017 16016 16015
+f 16018 15936 15934
+f 15936 16018 15969
+f 16019 16018 16020
+f 8703 16019 16020
+f 8732 16021 8730
+f 16022 16021 8732
+f 16021 16022 16023
+f 16024 16023 16022
+f 16022 16025 16024
+f 16024 16025 16026
+f 8709 16019 8703
+f 16027 15971 15969
+f 16027 16028 15971
+f 16027 15969 16019
+f 16029 16027 16019
+f 16030 16029 8709
+f 8708 16030 8709
+f 8708 16031 16030
+f 8710 8708 8707
+f 16031 8708 8710
+f 16032 16031 8710
+f 16029 16033 16027
+f 16033 16031 16034
+f 16034 16031 16032
+f 16035 16036 16033
+f 16035 16033 16034
+f 16037 15994 15992
+f 15992 16038 16039
+f 15993 15994 16040
+f 16033 16036 16038
+f 16039 16038 16036
+f 16039 16041 16042
+f 16035 16043 16036
+f 16039 16036 16043
+f 16044 16045 16041
+f 16046 16047 15997
+f 15997 16047 16048
+f 16047 16046 16045
+f 16049 16050 16047
+f 16051 16049 16052
+f 16053 16032 16021
+f 16053 16021 16054
+f 16055 16034 16032
+f 16055 16032 16053
+f 16055 16035 16034
+f 16056 16024 16026
+f 16056 16057 16058
+f 16057 16059 16058
+f 16060 16057 16056
+f 16061 16057 16062
+f 16062 16057 16060
+f 16063 16062 16060
+f 16063 16060 16064
+f 16061 16062 16065
+f 16044 16065 16066
+f 16065 16067 16066
+f 16067 16052 16066
+f 16063 16068 16062
+f 16069 16064 16070
+f 16071 16070 16072
+f 16073 16071 16072
+f 16071 16074 16075
+f 16050 16048 16047
+f 16076 16017 16015
+f 16077 16017 16076
+f 16078 16017 16077
+f 16050 16079 16076
+f 16079 16077 16076
+f 16079 16080 16077
+f 16081 16051 16082
+f 15821 16083 15816
+f 16083 15821 16084
+f 16085 14574 14464
+f 16086 15821 15823
+f 16086 16087 16088
+f 16086 16089 16090
+f 16091 16090 16089
+f 15831 16092 16093
+f 16094 16095 16089
+f 16094 16093 16095
+f 16095 16096 16089
+f 16095 16093 16097
+f 16096 16095 16097
+f 15831 15832 16092
+f 16097 16093 16092
+f 16096 16097 16098
+f 16092 15832 16097
+f 16097 16099 16098
+f 16100 15896 15904
+f 16101 16102 16103
+f 16104 16102 16100
+f 15904 16104 16100
+f 16105 16106 16099
+f 16104 15904 15903
+f 16104 15903 16107
+f 16107 16108 16104
+f 16107 16109 16108
+f 16106 16110 16111
+f 16112 15903 15909
+f 16112 15909 16008
+f 16113 16114 16112
+f 16114 16113 16115
+f 16112 16008 16116
+f 16112 16116 16113
+f 16117 16113 16116
+f 16117 16118 16115
+f 16119 16115 16120
+f 16120 16115 16118
+f 14578 16085 16084
+f 16087 16121 16088
+f 16122 14579 16123
+f 16122 16121 16124
+f 16124 16125 16122
+f 16124 16126 16127
+f 16128 16127 16126
+f 16129 16130 16131
+f 16132 16128 16090
+f 16131 16133 16134
+f 16135 16132 16136
+f 16137 16138 16136
+f 16139 16135 16140
+f 16136 16140 16135
+f 14604 16141 16130
+f 14604 16130 16129
+f 16129 16142 14604
+f 16142 14610 14604
+f 16142 16129 16143
+f 14605 14604 14610
+f 16142 16143 14610
+f 16144 16145 16146
+f 16147 16146 16145
+f 16148 16131 16134
+f 16149 16150 16151
+f 16151 16152 16149
+f 16148 16153 16154
+f 16155 16156 16153
+f 16156 16155 16157
+f 16158 16157 16155
+f 16157 16145 16156
+f 16155 16149 16158
+f 16159 16099 16106
+f 16137 16160 16159
+f 16106 16111 16161
+f 16159 16106 16161
+f 16162 16138 16161
+f 16138 16163 16136
+f 16164 16163 16138
+f 16164 16138 16162
+f 16140 16136 16163
+f 16163 16150 16140
+f 16150 16163 16164
+f 16111 16165 16166
+f 16164 16162 16167
+f 16167 16168 16164
+f 16169 16170 16162
+f 16170 16167 16162
+f 16171 16165 16172
+f 16172 16169 16171
+f 16169 16172 16170
+f 16173 16167 16170
+f 16168 16167 16174
+f 16174 16167 16173
+f 16173 16170 16175
+f 16172 16176 16175
+f 16177 16175 16178
+f 16178 16179 16177
+f 16177 16180 16175
+f 16164 16181 16150
+f 16182 16151 16183
+f 16181 16168 16184
+f 16185 16182 16186
+f 16184 16186 16183
+f 16187 16185 16186
+f 16188 16182 16185
+f 16189 16152 16188
+f 16188 16185 16187
+f 16190 16188 16191
+f 16191 16188 16187
+f 16192 16186 16184
+f 16192 16193 16194
+f 16193 16174 16195
+f 16187 16186 16194
+f 16196 16194 16197
+f 16198 16199 16191
+f 16200 16201 16198
+f 16200 16194 16196
+f 14930 14608 16202
+f 16203 16202 14608
+f 16203 16204 16202
+f 14932 16202 16204
+f 16204 16203 16205
+f 16204 16205 16206
+f 16146 16203 16144
+f 16203 16146 16205
+f 16207 16205 16146
+f 16205 16207 16206
+f 16208 16209 16207
+f 16210 16204 16206
+f 16209 16206 16207
+f 16211 16212 16213
+f 16214 16213 16212
+f 16214 16212 16215
+f 16213 16189 16211
+f 16212 16216 16217
+f 16218 16216 16211
+f 16209 16215 16219
+f 16220 16209 16219
+f 16215 16212 16221
+f 16222 16215 16221
+f 16223 16224 16221
+f 16225 16220 16219
+f 16225 16226 16227
+f 16222 16219 16215
+f 16228 16226 16222
+f 16222 16224 16229
+f 16229 16228 16222
+f 16228 16229 16230
+f 16229 16231 16230
+f 14982 14981 16210
+f 16232 14982 16210
+f 14982 15101 14980
+f 15101 14982 16233
+f 16234 16235 16233
+f 16233 16236 16237
+f 16234 16233 16237
+f 16238 16239 16235
+f 16237 16240 16241
+f 16242 16243 16244
+f 16242 16245 16246
+f 16246 16241 16247
+f 16242 16246 16247
+f 16225 16248 16220
+f 16248 16241 16220
+f 16247 16241 16249
+f 16227 16228 16230
+f 16250 16249 16241
+f 16251 16252 16253
+f 16254 16190 16255
+f 16256 16254 16255
+f 16255 16191 16199
+f 16257 16251 16258
+f 16218 16253 16252
+f 16217 16252 16259
+f 16223 16217 16259
+f 16260 16259 16252
+f 16257 16258 16261
+f 16262 16252 16257
+f 16262 16257 16261
+f 16262 16260 16252
+f 16263 16262 16261
+f 16264 16262 16263
+f 16258 16199 16265
+f 16199 16266 16265
+f 16267 16266 16268
+f 16269 16265 16266
+f 16265 16269 16270
+f 16267 16271 16269
+f 16258 16265 16261
+f 16270 16261 16265
+f 16270 16271 16272
+f 16259 16260 16273
+f 16274 16273 16260
+f 16229 16275 16231
+f 16274 16275 16273
+f 16275 16274 16276
+f 16231 16277 16278
+f 16275 16279 16277
+f 16279 16280 16277
+f 16279 16281 16282
+f 16283 16284 16285
+f 16286 16285 16284
+f 16285 16287 16283
+f 16285 16286 16288
+f 16281 16287 16282
+f 16280 16278 16277
+f 16116 16008 16289
+f 16290 16005 16004
+f 16005 16291 16007
+f 16292 16291 16290
+f 16293 16294 16295
+f 16293 16120 16118
+f 16293 16118 16294
+f 16296 16292 16295
+f 16297 16298 16299
+f 16012 16013 16300
+f 16300 16301 16292
+f 16017 16302 16303
+f 16301 16303 16304
+f 16305 16295 16301
+f 16305 16306 16307
+f 16308 16304 16309
+f 16309 16310 16308
+f 16306 16308 16310
+f 16311 16307 16306
+f 16312 16313 16074
+f 16312 16074 16071
+f 16312 16073 16314
+f 16313 16315 16316
+f 16313 16314 16317
+f 16318 16317 16314
+f 16078 16302 16017
+f 16078 16077 16080
+f 16078 16319 16302
+f 16319 16309 16302
+f 16319 16078 16080
+f 16080 16320 16319
+f 16320 16080 16321
+f 16081 16082 16322
+f 16081 16323 16080
+f 16324 16323 16081
+f 16321 16323 16324
+f 16325 16320 16321
+f 16325 16321 16326
+f 16310 16320 16327
+f 16328 16329 16322
+f 16315 16328 16316
+f 16329 16330 16322
+f 16329 16328 16315
+f 16315 16331 16329
+f 16315 16313 16331
+f 16332 16333 16334
+f 16334 16333 16335
+f 16336 16337 16335
+f 16335 16337 16338
+f 16334 16335 16339
+f 16339 16335 16338
+f 16331 16340 16337
+f 16340 16341 16342
+f 16343 16342 16317
+f 16344 16340 16342
+f 16338 16340 16344
+f 16345 16344 16346
+f 16347 16344 16345
+f 16347 16338 16344
+f 16348 16349 16350
+f 16351 16325 16326
+f 16352 16353 16354
+f 16355 16356 16357
+f 16356 16355 16358
+f 16345 16346 16359
+f 16360 16361 16362
+f 16339 16338 16347
+f 16345 16362 16347
+f 16363 16362 16364
+f 16361 16364 16362
+f 16364 16361 16365
+f 16366 16363 16364
+f 16366 16364 16367
+f 16368 16369 16370
+f 16371 16372 16373
+f 16369 16367 16374
+f 16374 16370 16369
+f 16373 16374 16367
+f 16374 16375 16370
+f 16372 16376 16374
+f 16377 16355 16378
+f 16379 16380 16378
+f 16381 16378 16380
+f 16382 16378 16381
+f 16377 16378 16382
+f 16383 16382 16381
+f 16382 16384 16377
+f 16384 16382 16385
+f 16385 16386 16384
+f 16387 16386 16385
+f 16377 16358 16355
+f 16384 16358 16377
+f 16388 16358 16384
+f 16384 16389 16388
+f 16389 16384 16386
+f 16382 16383 16368
+f 16385 16382 16368
+f 16386 16387 16390
+f 16391 16358 16388
+f 16389 16391 16388
+f 16392 16393 16394
+f 16386 16395 16396
+f 16395 16386 16390
+f 16390 16387 16397
+f 16398 16399 16397
+f 16400 16401 16375
+f 16399 16398 16402
+f 16403 16404 16401
+f 16401 16400 16403
+f 16405 16406 16407
+f 16408 16405 16407
+f 16409 16410 16402
+f 16402 16404 16409
+f 16404 16403 16409
+f 16410 16407 16406
+f 16407 16410 16411
+f 16412 16413 16414
+f 16415 16416 16417
+f 16417 16418 16419
+f 16420 16421 16422
+f 16423 16424 16408
+f 16408 16425 16423
+f 16426 16427 16408
+f 16426 16408 16424
+f 16428 16424 16423
+f 16428 16423 16429
+f 16430 16426 16424
+f 16412 16431 16411
+f 16432 16412 16419
+f 16433 16429 16423
+f 16423 16411 16433
+f 16434 16435 16436
+f 16434 16436 16428
+f 16428 16429 16434
+f 16437 16438 16431
+f 16431 16432 16437
+f 16432 16419 16418
+f 16438 16437 16439
+f 16440 16438 16441
+f 16420 16439 16437
+f 16442 16443 16439
+f 16180 16177 16444
+f 16298 16177 16179
+f 16180 16445 16195
+f 16180 16444 16446
+f 16446 16445 16180
+f 16446 16447 16445
+f 16195 16445 16448
+f 16195 16448 16193
+f 16193 16448 16197
+f 16448 16445 16447
+f 16446 16444 16307
+f 16447 16449 16450
+f 16451 16196 16197
+f 16448 16447 16451
+f 16196 16451 16452
+f 16450 16451 16447
+f 16196 16452 16453
+f 16453 16452 16454
+f 16307 16311 16455
+f 16455 16311 16456
+f 16457 16455 16449
+f 16456 16449 16455
+f 16458 16456 16459
+f 16450 16449 16458
+f 16458 16460 16461
+f 16462 16460 16458
+f 16463 16459 16456
+f 16464 16462 16463
+f 16463 16465 16464
+f 16349 16463 16350
+f 16466 16467 16349
+f 16468 16465 16467
+f 16469 16470 16356
+f 16461 16453 16454
+f 16268 16201 16471
+f 16268 16471 16267
+f 16271 16472 16473
+f 16474 16475 16453
+f 16476 16475 16474
+f 16477 16478 16476
+f 16477 16479 16473
+f 16480 16481 16482
+f 16460 16464 16483
+f 16483 16476 16474
+f 16484 16483 16474
+f 16485 16486 16483
+f 16485 16483 16464
+f 16485 16464 16482
+f 16482 16481 16485
+f 16477 16476 16487
+f 16486 16487 16476
+f 16486 16485 16481
+f 16481 16488 16486
+f 16488 16481 16489
+f 16286 16490 16491
+f 16492 16491 16490
+f 16490 16493 16492
+f 16494 16495 16496
+f 16497 16288 16491
+f 16491 16492 16498
+f 16498 16497 16491
+f 16499 16500 16497
+f 16499 16501 16500
+f 16502 16499 16497
+f 16503 16499 16502
+f 16498 16504 16505
+f 16503 16502 16505
+f 16506 16503 16505
+f 16487 16507 16508
+f 16508 16507 16496
+f 16508 16495 16487
+f 16496 16509 16510
+f 16507 16488 16509
+f 16511 16509 16488
+f 16512 16509 16511
+f 16496 16507 16509
+f 16510 16509 16512
+f 16494 16496 16513
+f 16510 16513 16496
+f 16513 16510 16514
+f 16513 16505 16504
+f 16506 16513 16514
+f 16505 16513 16506
+f 16515 16506 16514
+f 16516 16512 16517
+f 16518 16519 16516
+f 16519 16520 16521
+f 16521 16516 16519
+f 16510 16512 16516
+f 16510 16516 16521
+f 16515 16521 16522
+f 16468 16480 16465
+f 16480 16482 16465
+f 16480 16468 16523
+f 16524 16525 16526
+f 16527 16358 16528
+f 16528 16358 16391
+f 16525 16523 16526
+f 16529 16480 16523
+f 16529 16523 16530
+f 16531 16532 16529
+f 16533 16531 16529
+f 16529 16530 16533
+f 16534 16532 16533
+f 16534 16533 16535
+f 16524 16536 16537
+f 16538 16537 16536
+f 16539 16540 16541
+f 16542 16530 16525
+f 16543 16533 16542
+f 16533 16543 16544
+f 16545 16543 16540
+f 16528 16393 16538
+f 16528 16394 16393
+f 16546 16547 16393
+f 16548 16539 16547
+f 16546 16548 16547
+f 16548 16546 16427
+f 16539 16541 16547
+f 16544 16543 16545
+f 16539 16549 16540
+f 16550 16544 16551
+f 16552 16549 16553
+f 16552 16553 16554
+f 16555 16551 16556
+f 16557 16558 16552
+f 16552 16554 16557
+f 16559 16558 16557
+f 16555 16560 16561
+f 16562 16560 16556
+f 16556 16558 16562
+f 16562 16561 16560
+f 16563 16564 16534
+f 16565 16566 16534
+f 16565 16534 16535
+f 16566 16567 16563
+f 16517 16563 16567
+f 16518 16567 16568
+f 16517 16567 16518
+f 16569 16568 16567
+f 16568 16569 16570
+f 16520 16519 16518
+f 16520 16518 16571
+f 16571 16572 16573
+f 16570 16569 16550
+f 16570 16550 16555
+f 16574 16548 16427
+f 16574 16427 16575
+f 16539 16548 16574
+f 16574 16553 16539
+f 16426 16575 16427
+f 16576 16577 16578
+f 16578 16574 16575
+f 16576 16578 16575
+f 16577 16579 16578
+f 16579 16554 16553
+f 16553 16578 16579
+f 16430 16576 16575
+f 16575 16426 16430
+f 16580 16577 16576
+f 16581 16554 16579
+f 16579 16577 16580
+f 16580 16576 16430
+f 16582 16580 16435
+f 16581 16580 16582
+f 16583 16584 16585
+f 16586 16584 16583
+f 9378 16587 9381
+f 16583 9381 16587
+f 16583 16588 16586
+f 16589 16588 16590
+f 16060 16584 16591
+f 16591 16584 16586
+f 16586 16592 16591
+f 16064 16060 16591
+f 16592 16593 16591
+f 16593 16064 16591
+f 16587 9378 9404
+f 16587 9404 9406
+f 16590 16587 9406
+f 9405 16594 9406
+f 16594 9405 9409
+f 16592 16072 16593
+f 16595 16589 16596
+f 16589 16595 16592
+f 16072 16592 16595
+f 16072 16595 16597
+f 16595 16596 16598
+f 16599 16589 16590
+f 9411 16594 9409
+f 16600 16601 9411
+f 16600 9411 16602
+f 16602 9411 9412
+f 16599 16601 16603
+f 9414 16604 16605
+f 16602 9412 9414
+f 16599 16596 16589
+f 16599 16598 16596
+f 16598 16599 16603
+f 16598 16606 16607
+f 16604 9414 16608
+f 16609 16610 16611
+f 16612 16606 16598
+f 16612 16613 16606
+f 16614 16611 16610
+f 16615 16614 16610
+f 16616 16615 16610
+f 16610 16609 16616
+f 16615 16617 16614
+f 16618 16619 16620
+f 16620 16621 16618
+f 16620 16622 16615
+f 16615 16616 16620
+f 16623 16622 16620
+f 16623 16620 16619
+f 16624 16622 16623
+f 16073 16597 16625
+f 16626 16627 16628
+f 16629 16626 16628
+f 16630 16631 16314
+f 16632 16633 16631
+f 16318 16631 16634
+f 16633 16634 16631
+f 16629 16633 16632
+f 16634 16635 16343
+f 16633 16635 16634
+f 16633 16636 16635
+f 16637 16638 16639
+f 16638 16628 16640
+f 16638 16640 16641
+f 16640 16617 16624
+f 16641 16624 16642
+f 16641 16639 16638
+f 16643 16639 16641
+f 9502 16621 16644
+f 16608 9414 9502
+f 16645 16618 16621
+f 16645 16621 9502
+f 9502 9505 16645
+f 16646 16647 16648
+f 16646 16649 16650
+f 16646 16650 16651
+f 16652 16653 16647
+f 16652 16647 16646
+f 16654 16651 16655
+f 16653 16652 16656
+f 16657 16658 16659
+f 16660 16636 16661
+f 16643 16662 16663
+f 16662 16643 16664
+f 16636 16633 16663
+f 16662 16664 16665
+f 16666 16667 16661
+f 16661 16662 16666
+f 16668 16669 16642
+f 16670 16671 16672
+f 16672 16667 16666
+f 16670 16672 16666
+f 16666 16673 16670
+f 16674 16653 16675
+f 16676 16677 16678
+f 16657 16679 16653
+f 16679 16657 16680
+f 16673 16678 16677
+f 16618 16645 16681
+f 16681 16682 16683
+f 16681 16683 16650
+f 16684 16685 16686
+f 16683 16682 16687
+f 16687 16651 16683
+f 16687 16686 16685
+f 16688 16687 16685
+f 16684 16689 16685
+f 16684 16690 16691
+f 16688 16692 16655
+f 16655 16687 16688
+f 16692 16688 16693
+f 16694 16692 16693
+f 16693 16688 16695
+f 16346 16343 16635
+f 16661 16696 16660
+f 16696 16360 16359
+f 16697 16696 16661
+f 16697 16661 16667
+f 16696 16361 16360
+f 16698 16697 16667
+f 16698 16699 16697
+f 16671 16700 16701
+f 16701 16672 16671
+f 16694 16702 16659
+f 16670 16673 16703
+f 16704 16670 16703
+f 16704 16703 16705
+f 16704 16705 16706
+f 16707 16708 16709
+f 16710 16711 16707
+f 16707 16709 16710
+f 16708 16712 16677
+f 16708 16707 16711
+f 16709 16680 16710
+f 16710 16680 16702
+f 16710 16713 16711
+f 16714 16711 16713
+f 16673 16677 16703
+f 16715 16716 16714
+f 16717 16715 16714
+f 16706 16718 16719
+f 16706 16720 16721
+f 16720 16706 16719
+f 16722 16720 16719
+f 16723 16713 16724
+f 16725 16713 16723
+f 16725 16723 16726
+f 16726 16723 16727
+f 16717 16725 16726
+f 16717 16719 16718
+f 16719 16717 16726
+f 16728 16719 16726
+f 16729 16730 16726
+f 16731 16728 16732
+f 16733 16691 16690
+f 16689 16691 16733
+f 16733 16690 9638
+f 16734 16689 16733
+f 16735 16695 16689
+f 16735 16689 16734
+f 16734 16733 9638
+f 9636 16736 9638
+f 16737 16736 9636
+f 16738 16739 16735
+f 16740 16741 16693
+f 16694 16693 16741
+f 16702 16694 16741
+f 16742 16736 16743
+f 16744 16742 16745
+f 16746 16747 16748
+f 16749 16750 16751
+f 16747 16746 16752
+f 16750 16753 16752
+f 16743 9641 16754
+f 16745 16743 16755
+f 16756 16745 16755
+f 16756 16755 16757
+f 16758 16749 16744
+f 16758 16744 16756
+f 16753 16749 16758
+f 16759 16760 16761
+f 16761 16762 16759
+f 16761 16727 16723
+f 16727 16761 16763
+f 16732 16730 16764
+f 16765 16727 16763
+f 16729 16764 16730
+f 16764 16729 16765
+f 16763 16766 16765
+f 16765 16767 16764
+f 16768 16764 16767
+f 16767 16765 16766
+f 16767 16769 16768
+f 16770 16753 16771
+f 16759 16770 16771
+f 16772 16757 9689
+f 16773 16756 16757
+f 16774 9692 16775
+f 16758 16756 16776
+f 16777 16753 16758
+f 16777 16758 16776
+f 16776 16756 16773
+f 16777 16771 16753
+f 16777 16778 16771
+f 16773 16779 16776
+f 16780 16781 16774
+f 16779 16782 16783
+f 16781 16784 16782
+f 16785 16783 16782
+f 16784 16785 16782
+f 16786 16783 16787
+f 16787 16788 16786
+f 16789 16787 16790
+f 16790 16791 16789
+f 16760 16759 16792
+f 16771 16792 16759
+f 16793 16794 16760
+f 16795 16763 16794
+f 16792 16771 16778
+f 16796 16792 16778
+f 16793 16796 16797
+f 16797 16798 16799
+f 16766 16800 16767
+f 16801 16802 16800
+f 16803 16800 16802
+f 16804 16805 16803
+f 16802 16801 16799
+f 16798 16797 16806
+f 16807 16788 16789
+f 16806 16788 16807
+f 16808 16700 16809
+f 16810 16811 16808
+f 16721 16812 16813
+f 16813 16812 16814
+f 16815 16813 16814
+f 16816 16817 16812
+f 16812 16818 16816
+f 16722 16731 16818
+f 16816 16818 16731
+f 16816 16731 16819
+f 16817 16814 16812
+f 16820 16814 16817
+f 16821 16822 16823
+f 16821 16823 16815
+f 16820 16824 16825
+f 16826 16819 16827
+f 16828 16826 16827
+f 16826 16829 16820
+f 16829 16826 16828
+f 16830 16829 16831
+f 16828 16831 16829
+f 16831 16828 16832
+f 16833 16413 16834
+f 16835 16836 16833
+f 16835 16837 16836
+f 16416 16836 16837
+f 16830 16837 16835
+f 16827 16732 16768
+f 16838 16768 16769
+f 16839 16831 16840
+f 16837 16841 16421
+f 16837 16842 16839
+f 16843 16442 16422
+f 16839 16840 16844
+f 16845 16831 16832
+f 16832 16838 16845
+f 16846 16845 16838
+f 16844 16840 16847
+f 16848 16847 16845
+f 16848 16846 16805
+f 16780 16775 16849
+f 16850 16849 16851
+f 16849 16852 16851
+f 16853 16850 16851
+f 16854 16852 16855
+f 16856 16857 16243
+f 15556 15558 15564
+f 16858 15564 15558
+f 16858 15566 15564
+f 16859 16860 16861
+f 16861 16860 16862
+f 15566 16858 16863
+f 15593 15566 16863
+f 16863 16858 16862
+f 16864 16865 16862
+f 16857 16856 16866
+f 16859 16857 16867
+f 16868 16869 16866
+f 16864 16867 16870
+f 16871 16866 16869
+f 16871 16872 16866
+f 16249 16873 16247
+f 16873 16249 16874
+f 16873 16875 16876
+f 16874 16875 16873
+f 16877 16875 16874
+f 16874 16878 16877
+f 16879 16868 16875
+f 16880 16868 16879
+f 16880 16869 16868
+f 16875 16877 16879
+f 16878 16881 16877
+f 16877 16882 16879
+f 16880 16879 16883
+f 16884 16885 15592
+f 16886 16865 16864
+f 16887 16884 16888
+f 16889 15596 15594
+f 15594 16885 16889
+f 15596 16889 16890
+f 16891 15596 16890
+f 16892 16890 16893
+f 16894 16895 16887
+f 16894 16870 16896
+f 16893 16894 16897
+f 16894 16896 16897
+f 16896 16870 16872
+f 16896 16872 16898
+f 16892 15605 16891
+f 16899 15605 16892
+f 16893 16899 16892
+f 16900 16901 16902
+f 16903 16901 16904
+f 16901 16900 16904
+f 16904 16905 16906
+f 16907 15606 15605
+f 15605 16899 16907
+f 16908 16899 16897
+f 16903 16908 16897
+f 16901 16903 16897
+f 15612 15606 16907
+f 16908 15612 16907
+f 16906 16905 16909
+f 16910 16902 16911
+f 16912 16883 16879
+f 16910 16913 16900
+f 16914 16913 16915
+f 16916 16917 16910
+f 16916 16910 16918
+f 16913 16917 16915
+f 16919 16917 16916
+f 16915 16917 16919
+f 16920 16501 16921
+f 16922 16278 16923
+f 16923 16280 16924
+f 16921 16924 16280
+f 16921 16925 16924
+f 16926 16924 16925
+f 16925 16927 16926
+f 16926 16927 16928
+f 16929 16881 16930
+f 16931 16882 16929
+f 16932 16931 16929
+f 16926 16928 16930
+f 16930 16928 16932
+f 16930 16932 16929
+f 16932 16928 16933
+f 16928 16934 16933
+f 16933 16935 16932
+f 16933 16936 16935
+f 16936 16933 16937
+f 16927 16938 16939
+f 16927 16939 16940
+f 16938 16501 16941
+f 16942 16939 16938
+f 16938 16941 16942
+f 16933 16934 16940
+f 16933 16940 16937
+f 16937 16940 16943
+f 16944 16939 16942
+f 16940 16939 16944
+f 16944 16943 16940
+f 16943 16944 16945
+f 16946 16945 16944
+f 16947 16948 16931
+f 16949 16948 16950
+f 16918 16883 16912
+f 16951 16947 16952
+f 16953 16950 16947
+f 16947 16951 16953
+f 16952 16954 16951
+f 16949 16916 16955
+f 16956 16916 16949
+f 16957 16919 16916
+f 16957 16958 16919
+f 16959 16953 16951
+f 16960 16950 16953
+f 16960 16953 16961
+f 16962 16960 16961
+f 16956 16950 16960
+f 16963 16956 16962
+f 16954 16937 16964
+f 16964 16943 16965
+f 16964 16966 16954
+f 16951 16954 16966
+f 16943 16945 16965
+f 16967 16965 16945
+f 16968 16969 16967
+f 16969 16970 16967
+f 16971 16970 16972
+f 16973 16972 16970
+f 16970 16969 16973
+f 16974 16975 16973
+f 16959 16966 16976
+f 16977 16976 16966
+f 16976 16961 16953
+f 16977 16978 16979
+f 16980 16961 16981
+f 16981 16977 16979
+f 16982 16977 16981
+f 16981 16979 16983
+f 16984 16978 16971
+f 16971 16972 16984
+f 16972 16973 16984
+f 16979 16978 16984
+f 16984 16973 16975
+f 16975 16974 16985
+f 16986 16984 16975
+f 16984 16986 16979
+f 16975 16985 16987
+f 16988 16983 16989
+f 16988 16989 16990
+f 16986 16987 16991
+f 16991 16992 16993
+f 16989 16993 16990
+f 15619 15611 15612
+f 16994 16995 15612
+f 15612 16908 16994
+f 16994 16996 16995
+f 16908 16997 16994
+f 16998 16996 16999
+f 17000 17001 16997
+f 16999 16996 17001
+f 16999 17001 17002
+f 17001 17003 17002
+f 16997 16906 16909
+f 17000 16997 16909
+f 16909 16905 17004
+f 17003 17001 17000
+f 17005 17006 17007
+f 17008 17009 17007
+f 17010 17011 17012
+f 17010 17012 17008
+f 17010 17008 17013
+f 17011 17010 17014
+f 17014 17010 17013
+f 17014 17013 17015
+f 17006 17016 17007
+f 17013 17016 17017
+f 17018 17017 17016
+f 17019 17005 17002
+f 17003 17020 17021
+f 17021 17020 17022
+f 17021 17022 17023
+f 17005 17019 17024
+f 17006 17005 17025
+f 17024 17026 17005
+f 17026 17025 17005
+f 17021 17023 17027
+f 17024 17021 17027
+f 17026 17024 17027
+f 17028 17027 17029
+f 17030 17004 16905
+f 16914 17030 16905
+f 16914 17031 17030
+f 17032 17033 17034
+f 17032 17030 17033
+f 17033 17030 17031
+f 17035 17031 17036
+f 17035 17036 17037
+f 17031 17038 17033
+f 17035 17038 17031
+f 17039 17040 17033
+f 17033 17038 17039
+f 17041 17038 17035
+f 17042 17040 17043
+f 17043 17044 17042
+f 17045 17046 17047
+f 17045 17048 17029
+f 17049 17048 17045
+f 17045 17047 17049
+f 17050 17047 17044
+f 17046 17044 17047
+f 17050 17044 17051
+f 17052 17050 17051
+f 17053 17043 17039
+f 17039 17041 17053
+f 17053 17044 17043
+f 17053 17041 17054
+f 17054 17055 17056
+f 15635 17011 17014
+f 17014 17015 17057
+f 17015 17017 17058
+f 17017 17018 17059
+f 17060 17058 17061
+f 17062 15635 17063
+f 15637 17062 17064
+f 17065 17066 17062
+f 17067 17026 17028
+f 17067 17028 17068
+f 17028 17029 17068
+f 17067 17068 17069
+f 17069 17068 17070
+f 17071 17072 17073
+f 17071 17073 17074
+f 17059 17018 17006
+f 17075 17025 17076
+f 17077 17075 17078
+f 17079 17076 17080
+f 17079 17081 17078
+f 17078 17082 17083
+f 17083 17084 17077
+f 17083 17077 17078
+f 17082 17078 17081
+f 17085 17086 17082
+f 17080 17076 17072
+f 17087 17088 17089
+f 17087 17089 17080
+f 17080 17072 17087
+f 17090 17089 17088
+f 17091 17085 17090
+f 17086 17085 17091
+f 17092 17066 17065
+f 17064 17066 15648
+f 15648 17066 17093
+f 17092 17093 17066
+f 17094 15647 15648
+f 15648 17093 17094
+f 17095 17074 17096
+f 17095 17096 17097
+f 17098 17095 17097
+f 17099 17100 17098
+f 17099 17098 17101
+f 17102 17101 17097
+f 17098 17097 17101
+f 17099 17101 17103
+f 17104 17101 17102
+f 17103 17101 17104
+f 17105 17106 17100
+f 17091 17090 17107
+f 17108 17091 17109
+f 17110 17108 17109
+f 17107 17111 17109
+f 17112 17113 17110
+f 17099 17114 17105
+f 17114 17099 17103
+f 17114 17115 17112
+f 17114 17112 17111
+f 17111 17105 17114
+f 17116 17029 17048
+f 17048 17049 17117
+f 17118 17070 17068
+f 17117 17049 17052
+f 17119 17052 17051
+f 17073 17118 17120
+f 17073 17069 17070
+f 17073 17120 17121
+f 17120 17117 17122
+f 17123 17124 17125
+f 17123 17126 17122
+f 17126 17127 17120
+f 17120 17122 17126
+f 17126 17123 17125
+f 17126 17125 17128
+f 17124 17051 17129
+f 17124 17129 17130
+f 17131 17130 17129
+f 17132 17133 17134
+f 17125 17124 17130
+f 17130 17131 17135
+f 17136 17128 17125
+f 17125 17130 17136
+f 17130 17135 17136
+f 17135 17132 17134
+f 17135 17134 17137
+f 17138 17136 17135
+f 17137 17138 17135
+f 17138 17137 17139
+f 17096 17074 17121
+f 17140 17141 17142
+f 17143 17142 17141
+f 17143 17141 17144
+f 17145 17146 17147
+f 17148 17104 17102
+f 17102 17146 17148
+f 17146 17145 17149
+f 17150 17151 17152
+f 17150 17152 17153
+f 17154 17150 17153
+f 17138 17139 17155
+f 17156 17157 17143
+f 17158 17159 17156
+f 17160 17161 17157
+f 17162 17163 17164
+f 17162 17164 17165
+f 17166 17167 17168
+f 17166 17169 17170
+f 17170 17171 17166
+f 17172 17173 17174
+f 17166 17174 17173
+f 17166 17173 17169
+f 17175 17173 17172
+f 17176 16958 17037
+f 17177 16958 16957
+f 17178 17177 17179
+f 17180 17181 17178
+f 17182 17181 17180
+f 17177 16957 17183
+f 16963 17183 16957
+f 17183 16963 17184
+f 16963 16962 17185
+f 17186 17185 16962
+f 17185 17186 17187
+f 17188 17189 17180
+f 17190 17191 17185
+f 17192 17193 17194
+f 17194 17193 17195
+f 17182 17189 17196
+f 17196 17189 17197
+f 17195 17182 17196
+f 17198 17196 17197
+f 17199 17198 17200
+f 17201 17202 17203
+f 17201 17204 17205
+f 17204 17201 17203
+f 17206 17178 17181
+f 17055 17035 17206
+f 17207 17206 17181
+f 17182 17207 17181
+f 17056 17207 17208
+f 17182 17209 17207
+f 17208 17192 17210
+f 17133 17208 17211
+f 16981 17212 16980
+f 17212 17213 16980
+f 17214 17213 17212
+f 17215 17212 16981
+f 17215 16981 16988
+f 17215 17216 17212
+f 17216 17214 17212
+f 17217 16962 17213
+f 17214 17217 17213
+f 17218 17186 17217
+f 17217 17219 17218
+f 17187 17186 17218
+f 17219 17217 17214
+f 17218 17219 17220
+f 17221 17218 17220
+f 17214 17216 17220
+f 17190 17187 17222
+f 17187 17218 17222
+f 17223 17224 17221
+f 17225 17221 17224
+f 17224 17223 17226
+f 17227 17215 16988
+f 16990 17227 16988
+f 17228 17229 16990
+f 17230 17216 17227
+f 17230 17227 17229
+f 17229 17228 17231
+f 17232 17233 17226
+f 17230 17229 17231
+f 17234 17235 17236
+f 17236 17235 17237
+f 17238 17239 17203
+f 17233 17240 17226
+f 17241 17236 17237
+f 17242 17222 17243
+f 17243 17222 17225
+f 17244 17243 17225
+f 17242 17243 17245
+f 17224 17246 17244
+f 17244 17225 17224
+f 17244 17246 17247
+f 17248 17244 17247
+f 17226 17246 17224
+f 17245 17249 17242
+f 17249 17245 17250
+f 17246 17251 17247
+f 17252 17251 17246
+f 17252 17253 17251
+f 17248 17247 17251
+f 17238 17254 17255
+f 17256 17255 17254
+f 17254 17250 17256
+f 17255 17256 17257
+f 17238 17255 17258
+f 17258 17255 17257
+f 17258 17257 17259
+f 17257 17256 17260
+f 17256 17250 17261
+f 17262 17259 17257
+f 17259 17262 17263
+f 17263 17262 17264
+f 17265 17264 17262
+f 17266 17265 17267
+f 17267 17268 17269
+f 17267 17269 17270
+f 17240 17233 17234
+f 17271 17240 17234
+f 17236 17271 17234
+f 17240 17272 17253
+f 17272 17240 17271
+f 17271 17273 17272
+f 17274 17272 17273
+f 17241 17271 17236
+f 17273 17271 17241
+f 17275 17273 17241
+f 17274 17273 17276
+f 17276 17277 17274
+f 17278 17274 17277
+f 17269 17268 17253
+f 17269 17272 17279
+f 17280 17279 17272
+f 17280 17272 17274
+f 17269 17279 17270
+f 17281 17279 17280
+f 17278 17280 17274
+f 17282 17278 17283
+f 17282 17283 17284
+f 17282 17284 17281
+f 17211 17210 17285
+f 17210 17194 17286
+f 17287 17286 17194
+f 17288 17137 17211
+f 17289 17290 17291
+f 17292 17287 17199
+f 17292 17200 17293
+f 17287 17292 17294
+f 17294 17292 17295
+f 17295 17292 17293
+f 17295 17293 17296
+f 17194 17199 17287
+f 17286 17287 17294
+f 17293 17200 17204
+f 17293 17204 17297
+f 17293 17297 17298
+f 17299 17297 17204
+f 17204 17239 17299
+f 17298 17297 17299
+f 17298 17299 17300
+f 17300 17299 17301
+f 17290 17286 17294
+f 17296 17302 17295
+f 17303 17300 17301
+f 17302 17303 17304
+f 17304 17303 17305
+f 17211 17134 17133
+f 17139 17288 17289
+f 17306 17307 17308
+f 17308 17307 17309
+f 17310 17311 17312
+f 17313 17314 17315
+f 17316 17313 17315
+f 17317 17316 17315
+f 17318 17315 17311
+f 17319 17318 17320
+f 17315 17318 17317
+f 17318 17319 17321
+f 17322 17139 17289
+f 17323 17322 17291
+f 17324 17322 17325
+f 17325 17322 17326
+f 17165 17324 17325
+f 17327 17165 17325
+f 17328 17162 17165
+f 17328 17327 17329
+f 17330 17329 17327
+f 17331 17329 17330
+f 17332 17327 17325
+f 17330 17327 17332
+f 17333 17331 17330
+f 17334 17335 17336
+f 17336 17337 17334
+f 17338 17339 17340
+f 17341 17342 17340
+f 17340 17342 17338
+f 17343 17323 17291
+f 17343 17291 17304
+f 17343 17304 17344
+f 17326 17344 17332
+f 17345 17332 17346
+f 17304 17305 17347
+f 17304 17346 17344
+f 17347 17346 17304
+f 17305 17348 17347
+f 17349 17347 17348
+f 17346 17347 17350
+f 17349 17351 17306
+f 17349 17306 17352
+f 17353 17352 17354
+f 17355 17345 17350
+f 17350 17352 17355
+f 17352 17350 17349
+f 17332 17325 17326
+f 17345 17356 17332
+f 17356 17357 17358
+f 17357 17356 17355
+f 17358 17333 17330
+f 17359 17360 17361
+f 17361 17335 17359
+f 17353 17362 17357
+f 17313 17363 17314
+f 17357 17360 17364
+f 17338 17333 17358
+f 17299 17239 17238
+f 17301 17365 17366
+f 17365 17238 17258
+f 17367 17365 17258
+f 17263 17367 17259
+f 17263 17264 17368
+f 17369 17367 17263
+f 17369 17263 17370
+f 17371 17370 17263
+f 17263 17368 17371
+f 17370 17371 17307
+f 17369 17372 17373
+f 17306 17351 17369
+f 17368 17264 17374
+f 17374 17266 17375
+f 17374 17371 17368
+f 17374 17375 17376
+f 17307 17371 17309
+f 17371 17376 17309
+f 17320 17309 17376
+f 17376 17375 17377
+f 17320 17377 17378
+f 17378 17377 17379
+f 17378 17321 17319
+f 17380 17377 17375
+f 17381 17379 17380
+f 17382 17383 17381
+f 17381 17380 17382
+f 17384 17385 17281
+f 17386 17384 17281
+f 17387 17388 17389
+f 17390 17391 17392
+f 17393 17394 17395
+f 17395 16435 16434
+f 17395 16434 17393
+f 16441 16439 17396
+f 17397 16441 17396
+f 17396 16439 16443
+f 17398 16443 16843
+f 17399 17400 17397
+f 17397 17396 17399
+f 17400 17399 17401
+f 17397 17393 16434
+f 16434 17402 17397
+f 17393 17397 17400
+f 17403 17404 17394
+f 17401 17405 17400
+f 17406 17407 17401
+f 17408 17407 17409
+f 17410 17406 17401
+f 17411 17400 17405
+f 17411 17405 17408
+f 17412 17413 17403
+f 17403 17408 17412
+f 17414 17415 17416
+f 17417 17418 17409
+f 17418 17417 17419
+f 17420 17419 17417
+f 17420 17421 17422
+f 17419 17420 17422
+f 17423 17419 17422
+f 17409 17412 17408
+f 17412 17409 17418
+f 17424 17412 17418
+f 17425 17412 17424
+f 17419 17424 17418
+f 17424 17419 17426
+f 17427 17414 17428
+f 17428 17429 17430
+f 17431 17423 17432
+f 17426 17433 17424
+f 17434 17424 17433
+f 17429 17425 17434
+f 17433 17426 17431
+f 17426 17419 17431
+f 17435 17436 17437
+f 17438 17437 17436
+f 16941 17439 17440
+f 17441 16941 17440
+f 17442 17439 16503
+f 17442 16503 17443
+f 17439 17442 17444
+f 17445 17446 17447
+f 17448 17449 17450
+f 17449 17451 17450
+f 17448 17450 17452
+f 16503 16506 17443
+f 16506 16515 17453
+f 17454 17455 16522
+f 17456 16522 17455
+f 17457 17454 16522
+f 17454 17457 17458
+f 17455 17459 17456
+f 17455 17454 17460
+f 17455 17460 17461
+f 17458 17460 17454
+f 17460 17458 17462
+f 17463 17451 17464
+f 17465 17450 17466
+f 17466 17450 17467
+f 17468 17450 17451
+f 17451 17463 17468
+f 17450 17468 17467
+f 17462 17469 17470
+f 17471 17472 17473
+f 17463 17461 17474
+f 17474 17461 17462
+f 17474 17462 17470
+f 17475 17468 17474
+f 17476 17475 17477
+f 17475 17476 17468
+f 17475 17474 17470
+f 17478 17479 17480
+f 17479 17481 17480
+f 17482 17478 17480
+f 17482 17480 17483
+f 17484 17482 17483
+f 17485 17484 17483
+f 17480 17481 17448
+f 17480 17448 17486
+f 17486 17452 17487
+f 17488 17483 17486
+f 17489 17490 17491
+f 17490 17489 17492
+f 17489 17493 17492
+f 17492 17494 17490
+f 17492 17495 17494
+f 17496 17493 17497
+f 17497 17488 17496
+f 17488 17498 17499
+f 17500 17495 17492
+f 17492 17493 17496
+f 17496 17501 17502
+f 17503 17504 17466
+f 17466 17467 17503
+f 17467 17505 17503
+f 17506 17505 17467
+f 17467 17476 17506
+f 17503 17505 17507
+f 17507 17505 17506
+f 17508 17509 17510
+f 17508 17510 17511
+f 17506 17476 17477
+f 17510 17506 17477
+f 17509 17512 17506
+f 17507 17501 17499
+f 17499 17498 17507
+f 17513 17509 17508
+f 17478 17482 17484
+f 16974 17514 17515
+f 17515 17514 17484
+f 16985 17515 17516
+f 17515 17485 17516
+f 17517 16987 16985
+f 16992 16991 17518
+f 16992 17519 17520
+f 17490 17521 17518
+f 16992 17518 17521
+f 17521 17519 16992
+f 17522 17520 17519
+f 17521 17523 17519
+f 17523 17522 17519
+f 17494 17524 17521
+f 17495 17524 17494
+f 17525 17526 17527
+f 17528 17527 17529
+f 16561 17530 17531
+f 17530 16561 17532
+f 17527 17533 17534
+f 17534 17525 17527
+f 17533 17527 17528
+f 17535 17532 17533
+f 17536 17528 17529
+f 17536 17529 17537
+f 17535 17533 17536
+f 17533 17528 17536
+f 16573 17538 16571
+f 17538 16573 17539
+f 16573 17540 17541
+f 17539 16573 17541
+f 17462 17542 17469
+f 17543 17469 17542
+f 17542 17539 17543
+f 17539 17541 17544
+f 17545 17544 17541
+f 17541 17546 17545
+f 17540 17531 17530
+f 17546 17530 17547
+f 17545 17547 17548
+f 17549 17470 17469
+f 17550 17551 17552
+f 17470 17549 17472
+f 17552 17472 17549
+f 17549 17543 17552
+f 17472 17552 17551
+f 17553 17550 17552
+f 17552 17543 17553
+f 17554 17550 17553
+f 17527 16582 17555
+f 17394 17556 17555
+f 17536 17557 17558
+f 17559 17558 17560
+f 17560 17561 17554
+f 17560 17554 17559
+f 17558 17559 17536
+f 17562 17557 17536
+f 17536 17537 17563
+f 17536 17563 17562
+f 17564 17565 17566
+f 17561 17567 17508
+f 17508 17554 17561
+f 17563 17537 17404
+f 17568 17569 17562
+f 17569 17568 17570
+f 17571 17570 17572
+f 17573 17570 17568
+f 17568 17428 17573
+f 17574 17495 17500
+f 17574 17500 17575
+f 17500 17576 17577
+f 17578 17579 17580
+f 17581 17582 17583
+f 17581 17579 17578
+f 17584 17585 17586
+f 17580 17584 17587
+f 17588 17589 17590
+f 17590 17591 17581
+f 17588 17590 17581
+f 17581 17578 17588
+f 17580 17587 17592
+f 17593 17594 17595
+f 17577 17576 17593
+f 17596 17597 17598
+f 17599 17600 17596
+f 17601 17599 17598
+f 17586 17585 17602
+f 17602 17603 17604
+f 17605 17606 17596
+f 17605 17596 17600
+f 17607 17598 17608
+f 17609 17607 17608
+f 17608 17595 17610
+f 17611 17612 17610
+f 17612 17609 17610
+f 17609 17612 17613
+f 17614 17601 17598
+f 17598 17607 17614
+f 17615 17614 17616
+f 17616 17613 17615
+f 17617 17618 17589
+f 17589 17619 17617
+f 17620 17618 17617
+f 17620 17617 17621
+f 17590 17589 17618
+f 17622 17590 17623
+f 17624 17622 17623
+f 17625 17605 17626
+f 17621 17627 17628
+f 17628 17627 17626
+f 17629 17630 17624
+f 17624 17631 17629
+f 17621 17629 17631
+f 17631 17620 17621
+f 17629 17632 17630
+f 17633 17629 17621
+f 17633 17634 17632
+f 17634 17633 17635
+f 17636 17637 17635
+f 17599 17638 17639
+f 17638 17599 17601
+f 17626 17605 17600
+f 17640 17626 17639
+f 17639 17638 17640
+f 17641 17626 17640
+f 17640 17642 17641
+f 17642 17640 17643
+f 17601 17614 17644
+f 17644 17614 17645
+f 17645 17614 17615
+f 17645 17615 17646
+f 17647 17644 17645
+f 17648 17649 17645
+f 17647 17645 17649
+f 17642 17636 17635
+f 17650 17642 17643
+f 17636 17650 17651
+f 17643 17640 17652
+f 17650 17643 17652
+f 17653 17640 17647
+f 17647 17649 17653
+f 17653 17652 17640
+f 17652 17654 17650
+f 17655 17656 17654
+f 17655 17654 17652
+f 17655 17652 17657
+f 17658 17659 17660
+f 17658 17660 17524
+f 17524 17661 17658
+f 17659 17662 17660
+f 17659 17663 17662
+f 17663 17664 17662
+f 17663 17659 17665
+f 17522 17231 17228
+f 17666 17667 17522
+f 17667 17231 17522
+f 17666 17662 17664
+f 17668 17666 17664
+f 17664 17663 17669
+f 17237 17231 17667
+f 17667 17670 17241
+f 17237 17667 17241
+f 17669 17668 17664
+f 17671 17670 17667
+f 17668 17672 17671
+f 17673 17674 17675
+f 17673 17675 17676
+f 17673 17677 17674
+f 17677 17678 17669
+f 17679 17669 17678
+f 17680 17678 17677
+f 17680 17677 17673
+f 17681 17679 17678
+f 17681 17678 17680
+f 17682 17683 17679
+f 17681 17682 17679
+f 17684 17673 17676
+f 17684 17676 17581
+f 17581 17591 17685
+f 17684 17686 17687
+f 17687 17681 17680
+f 17684 17687 17680
+f 17680 17673 17684
+f 17688 17682 17681
+f 17689 17684 17690
+f 17691 17670 17671
+f 17241 17670 17275
+f 17691 17275 17670
+f 17277 17275 17691
+f 17683 17692 17693
+f 17693 17692 17694
+f 17694 17695 17693
+f 17696 17277 17697
+f 17695 17696 17697
+f 17695 17698 17696
+f 17698 17695 17694
+f 17698 17694 17699
+f 17698 17699 17700
+f 17700 17701 17698
+f 17702 17703 17701
+f 17701 17700 17702
+f 17277 17704 17278
+f 17704 17277 17696
+f 17704 17705 17283
+f 17706 17705 17704
+f 17388 17284 17283
+f 17705 17388 17283
+f 17707 17388 17705
+f 17708 17709 17710
+f 17710 17711 17708
+f 17712 17699 17694
+f 17694 17692 17712
+f 17713 17700 17699
+f 17702 17700 17713
+f 17714 17715 17716
+f 17715 17717 17718
+f 17685 17591 17622
+f 17719 17622 17624
+f 17630 17720 17719
+f 17721 17722 17714
+f 17722 17721 17723
+f 17724 17632 17634
+f 17721 17716 17720
+f 17721 17720 17724
+f 17725 17726 17727
+f 17725 17723 17721
+f 17726 17635 17637
+f 17637 17727 17726
+f 17728 17729 17718
+f 17730 17703 17702
+f 17728 17730 17702
+f 17702 17729 17728
+f 17717 17731 17728
+f 17728 17718 17717
+f 17731 17732 17730
+f 17707 17733 17388
+f 17733 17707 17734
+f 17735 17736 17737
+f 17734 17736 17735
+f 17730 17737 17708
+f 17708 17703 17730
+f 17738 17739 17740
+f 17740 17737 17738
+f 17741 17729 17713
+f 17742 17743 17731
+f 17743 17732 17731
+f 17731 17717 17744
+f 17745 17391 17746
+f 17746 17739 17745
+f 17747 17748 17392
+f 17745 17392 17391
+f 17749 17637 17651
+f 17750 17751 17561
+f 17566 17565 17752
+f 17753 17752 17754
+f 17750 17558 17755
+f 17566 17752 17756
+f 17756 17752 17753
+f 17757 17756 17753
+f 17757 17753 17758
+f 17758 17753 17759
+f 17758 17760 17757
+f 17761 17762 17760
+f 17758 17761 17760
+f 17761 17758 17763
+f 17763 17762 17761
+f 17762 17763 17764
+f 17567 17765 17611
+f 17765 17567 17561
+f 17765 17751 17766
+f 17767 17613 17612
+f 17613 17767 17768
+f 17613 17768 17646
+f 17766 17768 17767
+f 17768 17766 17769
+f 17770 17768 17769
+f 17770 17769 17771
+f 17754 17572 17772
+f 17572 17573 17772
+f 17773 17772 17573
+f 17773 17774 17772
+f 17772 17759 17754
+f 17759 17772 17775
+f 17759 17775 17776
+f 17775 17772 17774
+f 17777 17775 17774
+f 17778 17774 17773
+f 17778 17777 17774
+f 17778 17779 17777
+f 17780 17758 17776
+f 17781 17782 17763
+f 17764 17763 17782
+f 17783 17779 17784
+f 17785 17781 17786
+f 17781 17785 17787
+f 17771 17762 17788
+f 17762 17764 17789
+f 17790 17648 17791
+f 17770 17788 17790
+f 17771 17788 17770
+f 17649 17648 17792
+f 17648 17790 17792
+f 17788 17789 17793
+f 17794 17795 17789
+f 17795 17796 17793
+f 17797 17798 17799
+f 17657 17652 17653
+f 17655 17657 17800
+f 17798 17797 17801
+f 17657 17798 17802
+f 17799 17792 17797
+f 17797 17792 17803
+f 17804 17803 17805
+f 17805 17796 17804
+f 17806 17803 17804
+f 17807 17803 17806
+f 17797 17803 17808
+f 17801 17797 17808
+f 17764 17782 17809
+f 17764 17809 17794
+f 17789 17764 17794
+f 17809 17782 17787
+f 17794 17810 17811
+f 17812 17787 17813
+f 17810 17814 17811
+f 17814 17810 17812
+f 17814 17812 17815
+f 17816 17817 17815
+f 17804 17818 17819
+f 17820 17821 17822
+f 17819 17818 17823
+f 17815 17823 17818
+f 17817 17823 17815
+f 17824 17819 17823
+f 17824 17823 17825
+f 17826 17820 17827
+f 17820 17826 17828
+f 17829 17826 17830
+f 15655 17831 17832
+f 17833 15665 15669
+f 15672 15665 17833
+f 15672 17833 17834
+f 17114 17103 17835
+f 17835 17836 17114
+f 15676 15672 17834
+f 17149 17837 17148
+f 17835 17837 17838
+f 17839 17838 17837
+f 17840 17837 17149
+f 17149 17161 17840
+f 17840 17841 17839
+f 17840 17839 17837
+f 17840 17842 17841
+f 17836 17835 17838
+f 17843 17153 17152
+f 17152 17115 17836
+f 17844 17845 17843
+f 17154 17843 17845
+f 17154 17845 17168
+f 17842 17846 17844
+f 17847 17842 17840
+f 17847 17840 17848
+f 17848 17163 17849
+f 17168 17845 17850
+f 17850 17851 17174
+f 17851 17852 17853
+f 17851 17172 17174
+f 17172 17853 17175
+f 17854 17846 17842
+f 15682 15683 17855
+f 15682 17855 17856
+f 17857 17858 17859
+f 17860 17861 17862
+f 15676 17862 17863
+f 17859 17863 17864
+f 17862 17861 17865
+f 17863 17866 17864
+f 17866 17867 17868
+f 17856 17869 17870
+f 17856 17870 17871
+f 17864 17872 17870
+f 17873 17874 17875
+f 17876 17877 17878
+f 17878 17877 17879
+f 17878 17879 17880
+f 17880 17881 17882
+f 17880 17879 17881
+f 17882 17881 17883
+f 17882 17883 17884
+f 17871 17870 17885
+f 17870 17876 17878
+f 17874 17885 17884
+f 17884 17885 17882
+f 17885 17880 17882
+f 17886 17887 17162
+f 17886 17162 17328
+f 17331 17886 17329
+f 17886 17328 17329
+f 17852 17887 17886
+f 17852 17888 17889
+f 17889 17888 17341
+f 17342 17331 17333
+f 17341 17888 17342
+f 17890 17891 17892
+f 17893 17894 17748
+f 17893 17748 17891
+f 17895 17390 17894
+f 17896 17897 17898
+f 17890 17899 17893
+f 17893 17891 17890
+f 17893 17900 17898
+f 17901 17902 17903
+f 17901 17903 17904
+f 17890 17892 17905
+f 17906 17905 17907
+f 17901 17908 17899
+f 17909 17902 17910
+f 17884 17883 17909
+f 17883 17911 17909
+f 17912 17913 17910
+f 17912 17910 17907
+f 17907 17914 17912
+f 17910 17902 17901
+f 17915 17916 17917
+f 17871 17873 17916
+f 17918 17916 17913
+f 17919 17920 17651
+f 17651 17654 17919
+f 17919 17656 17921
+f 17920 17919 17922
+f 17921 17922 17919
+f 17921 17923 17924
+f 17925 17921 17656
+f 17656 17655 17926
+f 17656 17926 17925
+f 17925 17926 17927
+f 17928 17921 17925
+f 17929 17927 17930
+f 17923 17921 17931
+f 17931 17921 17928
+f 17932 17933 17934
+f 17933 17935 17936
+f 17936 17937 17938
+f 17723 17939 17722
+f 17939 17940 17744
+f 17749 17941 17637
+f 17942 17943 17939
+f 17939 17944 17942
+f 17943 17942 17945
+f 17946 17945 17942
+f 17942 17941 17946
+f 17946 17941 17947
+f 17946 17947 17948
+f 17949 17939 17943
+f 17950 17914 17905
+f 17943 17945 17951
+f 17952 17948 17953
+f 17951 17945 17946
+f 17951 17946 17952
+f 17954 17951 17955
+f 17956 17953 17957
+f 17955 17952 17956
+f 17954 17950 17949
+f 17949 17943 17954
+f 17950 17954 17958
+f 17744 17892 17891
+f 17747 17891 17748
+f 17922 17941 17749
+f 17924 17947 17922
+f 17953 17948 17959
+f 17960 17924 17923
+f 17961 17960 17923
+f 17953 17960 17957
+f 17962 17957 17960
+f 17960 17961 17962
+f 17962 17961 17935
+f 17912 17914 17950
+f 17912 17950 17958
+f 17932 17912 17958
+f 17926 17655 17800
+f 17802 17800 17657
+f 17963 17927 17800
+f 17800 17802 17964
+f 17802 17801 17964
+f 17927 17963 17965
+f 17965 17930 17927
+f 17966 17821 17967
+f 17801 17966 17964
+f 17963 17968 17969
+f 17970 17969 17971
+f 17965 17963 17972
+f 17930 17965 17973
+f 17965 17972 17973
+f 17974 17937 17930
+f 17972 17963 17969
+f 17975 17976 17969
+f 17977 17975 17969
+f 17978 17973 17976
+f 17979 17978 17976
+f 17976 17975 17979
+f 17980 17979 17975
+f 17975 17977 17980
+f 17981 17821 17828
+f 17826 17829 17982
+f 17983 17982 17829
+f 17981 17828 17984
+f 17985 17984 17986
+f 17828 17982 17984
+f 17987 17988 17970
+f 17970 17985 17987
+f 17989 17987 17990
+f 17989 17980 17988
+f 17990 17987 17985
+f 17938 17974 17978
+f 17991 17938 17978
+f 17979 17980 17992
+f 17978 17992 17991
+f 17938 17991 17993
+f 17994 17995 17996
+f 17994 17996 17997
+f 17997 17996 17998
+f 17997 17998 17999
+f 17993 17991 17994
+f 17997 17999 18000
+f 17934 18001 17918
+f 17918 17932 17934
+f 17934 17938 18002
+f 17993 18003 18002
+f 18002 17938 17993
+f 18004 11385 7490
+f 7490 15687 18004
+f 17832 18005 18004
+f 17832 18004 15687
+f 18006 18007 11385
+f 11385 18004 18006
+f 18006 18004 18005
+f 17917 18005 17832
+f 18001 18008 18005
+f 18001 18005 17917
+f 18007 18006 18009
+f 18009 18006 18010
+f 11425 18009 18011
+f 18012 18011 18009
+f 18012 18009 18013
+f 18010 18008 18001
+f 18014 16799 18015
+f 16802 18014 16803
+f 18016 16803 18014
+f 18016 18014 18017
+f 18015 18018 18019
+f 16806 16807 18018
+f 16807 16789 16791
+f 18020 16807 18021
+f 18022 18019 18020
+f 18022 18020 18023
+f 18023 18020 18021
+f 18017 18014 18015
+f 18024 18023 18021
+f 18025 18026 18027
+f 18027 18026 18028
+f 18029 18030 18028
+f 18031 16843 18032
+f 18031 18032 18033
+f 16844 18034 18035
+f 18036 18034 18037
+f 18038 18039 16848
+f 18040 18039 18038
+f 18041 18040 18038
+f 18034 16844 18040
+f 18037 18034 18040
+f 18042 18036 18043
+f 18041 18038 18044
+f 18044 18045 18041
+f 18040 18046 18037
+f 18047 18046 18048
+f 18043 18036 18046
+f 18045 18048 18041
+f 18049 18031 18042
+f 18049 18042 18050
+f 18051 18042 18043
+f 18052 16848 16804
+f 18038 16848 18052
+f 18053 18044 18052
+f 18038 18052 18044
+f 18053 18054 18044
+f 18054 18053 18027
+f 18055 18056 18057
+f 18055 18057 18058
+f 17421 18059 17422
+f 18059 18043 18060
+f 18061 18062 17422
+f 18062 18061 18063
+f 18063 18061 18055
+f 17432 18062 18064
+f 17435 17432 18064
+f 18064 18065 17435
+f 18064 18062 18066
+f 18067 18068 18065
+f 18068 18069 18065
+f 18070 18068 18067
+f 18070 18071 18068
+f 18072 18068 18073
+f 18054 18074 18045
+f 18075 18076 18077
+f 18078 18079 18080
+f 18080 18057 18075
+f 18058 18057 18081
+f 18082 18027 18028
+f 18078 18077 18082
+f 18082 18083 18078
+f 18083 18082 18084
+f 18084 18030 18029
+f 18080 18085 18081
+f 18058 18081 18085
+f 18084 18086 18087
+f 18088 18079 18083
+f 18089 18090 18091
+f 18090 18089 18092
+f 16854 18093 18094
+f 18095 18093 16854
+f 18096 18093 18095
+f 18096 18097 18093
+f 18093 18092 18094
+f 18098 18092 18093
+f 18098 18093 18097
+f 18099 18092 18098
+f 18099 18100 18092
+f 18101 18102 16791
+f 18090 18102 18101
+f 18103 18104 18024
+f 18105 18103 18106
+f 18103 18105 18107
+f 18108 18104 18107
+f 18107 18109 18110
+f 18110 18109 18111
+f 18112 18113 18100
+f 18114 18115 18109
+f 18116 18114 18117
+f 18114 18118 18115
+f 18119 18097 18096
+f 18097 18119 18120
+f 18119 18096 18121
+f 18122 18119 18121
+f 18097 18120 18098
+f 18099 18098 18120
+f 18123 18122 18124
+f 18119 18125 18126
+f 18113 18112 18120
+f 18113 18120 18127
+f 18127 18120 18126
+f 11678 18124 18122
+f 18126 18128 18123
+f 18129 18127 18126
+f 18130 18123 18131
+f 18123 18130 18126
+f 18113 18132 18133
+f 18116 18133 18132
+f 18113 18127 18134
+f 18135 18132 18134
+f 18132 18135 18136
+f 18137 18134 18138
+f 18134 18137 18135
+f 18137 18139 18135
+f 18129 18140 18138
+f 18140 18137 18138
+f 18140 18129 18141
+f 18137 18140 18142
+f 18137 18142 18139
+f 18107 18029 18108
+f 18029 18110 18143
+f 18143 18086 18029
+f 18144 18145 18118
+f 18146 18118 18145
+f 18147 18145 18144
+f 18145 18148 18149
+f 18145 18147 18150
+f 18150 18139 18151
+f 18139 18142 18151
+f 18148 18150 18152
+f 18153 18154 18155
+f 18148 18152 18149
+f 18153 18156 18157
+f 18158 18153 18157
+f 18158 18159 18160
+f 18143 18161 18086
+f 18086 18161 18087
+f 18162 18087 18161
+f 18163 18162 18161
+f 18164 18087 18162
+f 18146 18161 18165
+f 18166 18167 18168
+f 18169 18170 18163
+f 18166 18149 18152
+f 18152 18171 18167
+f 18159 18172 18152
+f 18173 18172 18174
+f 18158 18175 18176
+f 18176 18177 18158
+f 18174 18177 18176
+f 18174 18176 18178
+f 18179 17438 17436
+f 18179 17436 18180
+f 17438 18179 17779
+f 18072 18180 18069
+f 18181 18182 18183
+f 18184 18185 18186
+f 18184 18186 18187
+f 18184 18187 18188
+f 18189 18190 18191
+f 18192 18193 18191
+f 18194 18192 18190
+f 18190 18164 18194
+f 18192 18195 18193
+f 18196 18193 18195
+f 18194 18195 18192
+f 18181 18073 18191
+f 18196 18182 18197
+f 18198 18182 18199
+f 18183 18182 18198
+f 18183 18198 18200
+f 18201 18195 18202
+f 18200 18198 18203
+f 18199 18201 18202
+f 18202 18204 18199
+f 18205 18204 18202
+f 18199 18203 18198
+f 18203 18206 18200
+f 18207 18206 18208
+f 18203 18209 18206
+f 18162 18210 18194
+f 18194 18211 18195
+f 18211 18202 18195
+f 18212 18170 18213
+f 18210 18212 18213
+f 18214 18211 18215
+f 18210 18216 18217
+f 18218 18215 18217
+f 18217 18216 18218
+f 18214 18215 18218
+f 18213 18216 18210
+f 18219 18216 18213
+f 18216 18220 18218
+f 18218 18220 18214
+f 18220 18216 18221
+f 18222 18223 18205
+f 18224 18223 18222
+f 18223 18224 18225
+f 18169 18226 18170
+f 18226 18227 18170
+f 18178 18228 18174
+f 18174 18228 18229
+f 18229 18228 18230
+f 18230 18231 18229
+f 18232 18231 18230
+f 18233 18234 18235
+f 18229 18235 18234
+f 18229 18231 18235
+f 18220 18236 18237
+f 18237 18236 18238
+f 18236 18239 18233
+f 18238 18236 18233
+f 18237 18240 18220
+f 18220 18240 18241
+f 18238 18240 18237
+f 18240 18238 18233
+f 18242 18240 18233
+f 18235 18231 18243
+f 18244 18224 18241
+f 18209 18245 18246
+f 18247 18209 18248
+f 18248 18249 18247
+f 18250 18251 18247
+f 18252 18223 18225
+f 18253 18252 18249
+f 18248 18253 18249
+f 18249 18252 18225
+f 18254 18249 18225
+f 18244 18241 18255
+f 18244 18255 18256
+f 18257 18258 18259
+f 18258 18260 18261
+f 18254 18262 18263
+f 18264 18265 18263
+f 18264 18261 18266
+f 18267 18256 18268
+f 18268 18269 18270
+f 18267 18268 18270
+f 18261 18267 18270
+f 18271 18270 18269
+f 18269 18272 18271
+f 18273 18270 18274
+f 18275 18276 18266
+f 18266 18261 18275
+f 18265 18266 18276
+f 18276 18275 18273
+f 18263 18277 18278
+f 18278 18277 18279
+f 18280 18274 18281
+f 18281 18282 18280
+f 18265 18276 18283
+f 18279 18277 18283
+f 18280 18284 18285
+f 18285 18273 18280
+f 18286 18285 18284
+f 18282 18287 18284
+f 18284 18280 18282
+f 18283 18288 18279
+f 18286 18289 18283
+f 18279 18288 18290
+f 18291 17779 18186
+f 17786 17784 18291
+f 18291 18292 17786
+f 18292 17785 17786
+f 18291 18186 18185
+f 18292 18291 18293
+f 17815 17812 17816
+f 18294 17817 17816
+f 18294 17816 18295
+f 18296 18297 18291
+f 18297 18296 18298
+f 17813 18297 18295
+f 18299 18295 18297
+f 18297 18298 18299
+f 18294 18299 18300
+f 18299 18301 18300
+f 17825 17817 18302
+f 18303 17825 18302
+f 18302 17817 18294
+f 18302 18304 18303
+f 18305 18306 18303
+f 17825 17823 17817
+f 17824 17825 18307
+f 18308 17829 18309
+f 18310 18311 18312
+f 18310 18313 18246
+f 18314 18311 18310
+f 18245 18314 18246
+f 18245 18315 18314
+f 18316 18317 18302
+f 18318 18306 18305
+f 18319 18318 18305
+f 18320 18317 18321
+f 18315 18322 18320
+f 18320 18323 18317
+f 18324 18323 18320
+f 18324 18325 18323
+f 18326 18323 18325
+f 18245 18247 18251
+f 18315 18245 18322
+f 18327 18324 18322
+f 18328 18325 18324
+f 18328 18324 18329
+f 18322 18251 18330
+f 18331 18324 18327
+f 18332 18331 18327
+f 18332 18327 18330
+f 18333 18278 18330
+f 18333 18334 18278
+f 18334 18263 18278
+f 18332 18330 18278
+f 18332 18335 18336
+f 18337 18278 18279
+f 18290 18337 18279
+f 18337 18290 18336
+f 18290 18338 18336
+f 11681 18339 18124
+f 11681 18124 11678
+f 18339 18340 18131
+f 11901 18341 18339
+f 18340 18339 18341
+f 18130 18131 18340
+f 18340 18342 18130
+f 18130 18342 18141
+f 18341 18343 18340
+f 18343 18342 18340
+f 18343 18344 18342
+f 18345 18346 11908
+f 11903 18346 18347
+f 18343 18346 18348
+f 18348 18344 18343
+f 18349 18344 18348
+f 18141 18350 18140
+f 18349 18351 18352
+f 18353 18354 18355
+f 18356 18348 18346
+f 18357 18348 18356
+f 18357 18358 18349
+f 18357 18359 18360
+f 18358 18357 18360
+f 18353 18359 18356
+f 18361 18353 18362
+f 18361 18363 18364
+f 18142 18365 18151
+f 18151 18365 18366
+f 18367 18368 18366
+f 18369 18370 18371
+f 18368 18370 18372
+f 18372 18373 18374
+f 18374 18375 18372
+f 18376 18377 18375
+f 18378 18376 18375
+f 18375 18374 18379
+f 18358 18380 18369
+f 18373 18380 18381
+f 18374 18373 18381
+f 18363 18382 18383
+f 18383 18364 18363
+f 18379 18374 18384
+f 18376 18378 18385
+f 18385 18386 18376
+f 18385 18378 18387
+f 18385 18387 18388
+f 18389 18382 18363
+f 18389 18363 18390
+f 18387 18379 18391
+f 18387 18391 18392
+f 18392 18391 18393
+f 18388 18392 18394
+f 18394 18395 18388
+f 18394 18392 18393
+f 18393 18396 18397
+f 18398 18355 11928
+f 18355 11923 11928
+f 18399 18400 18401
+f 18175 18402 18403
+f 18403 18402 18386
+f 18403 18386 18404
+f 18395 18405 18385
+f 18176 18403 18406
+f 18406 18403 18404
+f 18406 18404 18407
+f 18178 18176 18406
+f 18406 18408 18409
+f 18407 18404 18405
+f 18407 18405 18410
+f 18399 18411 18412
+f 18413 18411 18414
+f 18413 18415 18416
+f 18417 18418 18413
+f 18413 18414 18417
+f 18419 18413 18418
+f 18420 18419 18418
+f 18421 18420 18418
+f 18418 18417 18421
+f 11982 18422 18423
+f 18423 18401 11928
+f 18423 11928 11982
+f 18423 18424 18411
+f 18411 18399 18423
+f 18399 18401 18423
+f 18414 18411 18424
+f 11984 18425 18422
+f 18422 11982 11984
+f 18426 18421 18427
+f 18426 18427 18422
+f 18428 18429 18409
+f 18409 18408 18428
+f 18430 18431 18432
+f 18432 18433 18434
+f 18435 18430 18436
+f 18430 18432 18436
+f 18437 18432 18434
+f 18436 18432 18437
+f 18438 18439 18440
+f 18440 18439 18435
+f 18441 18442 18443
+f 18444 18442 18441
+f 18441 18445 18444
+f 18445 18446 18444
+f 18442 18433 18443
+f 18415 18444 18446
+f 18447 18442 18444
+f 18448 18444 18415
+f 18448 18415 18419
+f 18449 18450 18436
+f 18451 18450 18449
+f 18451 18449 18452
+f 18453 18454 18440
+f 18455 18438 18454
+f 18456 18454 18457
+f 18453 18435 18450
+f 18458 18455 18456
+f 18459 18458 18456
+f 18456 18457 18459
+f 18459 18457 18450
+f 18459 18450 18451
+f 18420 18452 18449
+f 18449 18437 18447
+f 18449 18447 18448
+f 18449 18448 18420
+f 18451 18460 18461
+f 18272 18458 18459
+f 18462 18460 18451
+f 18271 18272 18461
+f 18460 18463 18464
+f 18289 18287 18465
+f 18466 18288 18289
+f 18466 18467 18288
+f 18468 18288 18467
+f 18465 18463 18469
+f 18470 18469 18463
+f 18470 18463 18471
+f 18472 18473 18467
+f 18472 18467 18466
+f 18466 18469 18472
+f 18474 18467 18473
+f 18475 18476 18477
+f 18477 18473 18475
+f 18474 18478 18468
+f 18478 18290 18468
+f 18478 18474 18477
+f 18478 18477 18479
+f 18480 18481 18482
+f 18012 18003 18483
+f 18484 12428 12477
+f 18480 18482 18484
+f 18480 18484 18485
+f 18480 18485 18483
+f 17829 18308 17983
+f 17982 18486 17984
+f 18487 17984 18486
+f 17986 17984 18487
+f 18488 18486 17983
+f 17983 18308 18488
+f 18488 18487 18486
+f 18306 18489 18309
+f 18308 18490 18488
+f 18491 18487 18488
+f 18490 18489 18492
+f 18490 18492 18488
+f 18493 18491 18488
+f 18493 18488 18492
+f 18494 18495 18496
+f 18497 18498 18496
+f 18497 18496 18499
+f 18487 18491 18500
+f 18496 18500 18501
+f 18495 18487 18500
+f 18496 18495 18500
+f 18491 18493 18500
+f 18501 18500 18502
+f 18503 18501 18502
+f 18503 18502 18504
+f 18505 18306 18318
+f 18318 18319 18505
+f 18506 18319 18326
+f 18507 18326 18325
+f 18505 18506 18508
+f 18505 18489 18306
+f 18489 18505 18509
+f 18492 18489 18509
+f 18509 18505 18510
+f 18508 18510 18505
+f 18493 18492 18511
+f 18504 18502 18512
+f 18504 18512 18513
+f 18514 18510 18508
+f 18510 18514 18515
+f 18516 18510 18515
+f 18517 18513 18518
+f 18517 18515 18519
+f 18520 18499 18521
+f 18499 18503 18521
+f 18521 18503 18522
+f 18522 18503 18504
+f 18523 18522 18524
+f 18525 18526 18527
+f 18000 18527 18528
+f 18527 18526 18523
+f 18527 18523 18529
+f 18529 18523 18524
+f 18528 18529 18530
+f 18530 18529 18531
+f 18530 18531 18532
+f 18533 18534 18535
+f 18536 18537 18538
+f 18539 18533 18535
+f 18535 18536 18539
+f 18539 18536 18538
+f 18539 18538 18540
+f 18541 18504 18513
+f 18541 18513 18542
+f 18543 18541 18542
+f 18544 18541 18543
+f 18544 18543 18545
+f 18546 18542 18513
+f 18543 18547 18548
+f 18545 18543 18548
+f 18549 18548 18550
+f 18531 18524 18544
+f 18551 18531 18544
+f 18544 18545 18551
+f 18552 18551 18545
+f 18551 18535 18534
+f 18549 18550 18536
+f 18550 18537 18536
+f 18553 18328 18329
+f 18329 18331 18554
+f 18555 18329 18554
+f 18555 18553 18329
+f 18556 18553 18557
+f 18557 18553 18558
+f 18557 18558 18559
+f 18560 18561 18562
+f 18563 18560 18564
+f 18559 18561 18557
+f 18562 18561 18559
+f 18565 18564 18562
+f 18566 18563 18564
+f 18564 18565 18566
+f 18563 18566 18567
+f 18568 18567 18566
+f 18514 18508 18560
+f 18514 18560 18563
+f 18515 18563 18519
+f 18519 18563 18567
+f 18554 18336 18569
+f 18570 18571 18569
+f 18572 18573 18574
+f 18575 18571 18574
+f 18571 18572 18574
+f 18576 18565 18577
+f 18566 18565 18578
+f 18565 18576 18578
+f 18578 18579 18566
+f 18580 18579 18578
+f 18576 18581 18582
+f 18583 18581 18572
+f 18582 18581 18583
+f 18582 18584 18576
+f 18585 18586 18587
+f 18587 18584 18585
+f 18588 18584 18582
+f 18582 18589 18588
+f 18590 18591 18592
+f 18593 18594 18595
+f 18595 18594 18596
+f 18594 18568 18597
+f 18597 18568 18579
+f 18596 18594 18597
+f 18598 18599 18595
+f 18595 18596 18598
+f 18600 18598 18596
+f 18601 18540 18538
+f 18538 18537 18590
+f 18538 18590 18592
+f 18601 18538 18592
+f 18592 18599 18601
+f 18602 18603 18604
+f 18601 18599 18598
+f 18602 18601 18598
+f 18598 18600 18603
+f 18605 18606 18607
+f 18608 18606 18519
+f 18519 18567 18608
+f 18607 18606 18608
+f 18590 18550 18609
+f 18609 18605 18607
+f 18609 18591 18590
+f 18590 18537 18550
+f 18610 18611 18579
+f 18610 18579 18580
+f 18612 18610 18580
+f 18580 18586 18613
+f 18614 18615 18616
+f 18612 18617 18618
+f 18619 18620 18621
+f 18622 18585 18623
+f 18604 18603 18624
+f 18624 18625 18626
+f 18616 18618 18624
+f 18616 18624 18603
+f 18603 18600 18614
+f 18603 18614 18616
+f 18619 18627 18625
+f 18620 18619 18625
+f 18483 18003 18532
+f 18003 18528 18530
+f 18003 18530 18532
+f 18604 18626 18483
+f 18483 18540 18601
+f 12414 18628 18629
+f 18629 18462 18426
+f 18629 18426 18425
+f 12414 18629 18425
+f 18629 18630 18631
+f 18462 18631 18632
+f 18631 18462 18629
+f 18460 18633 18471
+f 18471 18634 18470
+f 18475 18470 18634
+f 18476 18475 18635
+f 18635 18636 18476
+f 18637 18632 18631
+f 18634 18633 18637
+f 18638 18639 18640
+f 18640 18637 18641
+f 18640 18641 18638
+f 18482 18481 18630
+f 18642 18630 18481
+f 18628 18484 18482
+f 18643 18569 18644
+f 18644 18478 18645
+f 18636 18646 18479
+f 18479 18476 18636
+f 18645 18479 18646
+f 18636 18647 18646
+f 18643 18644 18645
+f 18648 18643 18645
+f 18570 18643 18649
+f 18648 18650 18643
+f 18649 18643 18650
+f 18572 18571 18570
+f 18651 18650 18652
+f 18651 18652 18653
+f 18650 18654 18649
+f 18655 18656 18657
+f 18589 18583 18658
+f 18658 18649 18654
+f 18659 18658 18660
+f 18661 18660 18658
+f 18662 18588 18589
+f 18662 18659 18663
+f 18664 18663 18665
+f 18664 18666 18667
+f 18655 18666 18665
+f 18668 18651 18653
+f 18654 18650 18651
+f 18669 18670 18668
+f 18668 18671 18669
+f 18670 18661 18654
+f 18654 18668 18670
+f 18670 18657 18656
+f 18670 18656 18661
+f 18672 18639 18619
+f 18673 18674 18675
+f 12471 18011 18676
+f 18677 17092 18678
+f 18679 17092 17065
+f 17092 18680 18678
+f 18681 17093 18677
+f 18682 17094 18681
+f 18683 18681 18684
+f 18685 18684 18678
+f 18686 18687 18680
+f 18688 18686 18689
+f 17086 17108 18690
+f 18691 18690 18692
+f 18688 18689 18693
+f 18693 18691 18692
+f 18688 18693 18694
+f 18687 18686 18695
+f 18695 18686 18688
+f 18696 18687 18695
+f 18697 18698 18688
+f 18699 18700 18692
+f 17110 17113 18701
+f 17151 18702 18703
+f 18693 18692 18704
+f 18694 18693 18704
+f 18703 18702 18705
+f 18706 18707 18705
+f 18702 18706 18705
+f 18704 18708 18709
+f 18708 18705 18707
+f 18710 18711 18694
+f 18710 18694 18712
+f 18702 17167 18706
+f 18712 18694 18713
+f 18707 18714 18708
+f 18709 18708 18714
+f 17170 18715 18707
+f 18716 18709 18714
+f 18714 18707 18715
+f 18716 18714 18717
+f 18716 18718 18719
+f 18706 17167 17171
+f 18706 17171 17170
+f 18716 18719 18720
+f 18721 17316 17317
+f 18721 17317 18722
+f 18723 18715 18724
+f 18717 18715 18723
+f 17337 18725 18723
+f 18723 18724 17337
+f 18726 18727 18725
+f 18728 18725 17337
+f 17336 18729 18728
+f 18730 18727 18726
+f 18718 18730 18731
+f 18732 18720 18719
+f 18732 18719 18731
+f 18733 18728 18721
+f 18721 18734 18733
+f 18726 18733 18734
+f 18721 18735 17316
+f 18734 18736 18726
+f 18736 18734 18722
+f 18737 18731 18730
+f 18731 18737 18738
+f 18739 18731 18738
+f 18737 18740 18738
+f 18740 18741 18738
+f 18738 18741 18742
+f 17379 17381 18743
+f 18743 17381 17383
+f 17383 18744 18743
+f 17386 18745 17384
+f 17386 17387 18746
+f 17389 18747 18746
+f 18748 18747 17389
+f 18749 18745 18746
+f 18750 18751 18747
+f 18747 18748 18750
+f 18752 18750 18753
+f 17378 18722 17321
+f 18754 18722 17378
+f 18754 17378 18755
+f 17379 18755 17378
+f 18756 18755 17379
+f 18744 18756 18743
+f 18756 17379 18743
+f 18757 18758 18759
+f 18760 18741 18740
+f 18761 18741 18760
+f 18756 18757 18761
+f 18762 18742 18763
+f 18762 18763 18764
+f 18765 18763 18761
+f 18765 18766 18767
+f 18768 18769 18758
+f 18770 18771 18772
+f 18773 18771 18770
+f 18774 18752 18775
+f 18753 18775 18752
+f 18775 18753 17746
+f 18776 18772 18775
+f 18771 18775 18772
+f 18777 18778 18773
+f 18773 18770 18777
+f 18778 18777 18779
+f 18780 18772 18776
+f 18780 18776 17390
+f 18776 17391 17390
+f 18781 18750 18748
+f 18682 18683 15669
+f 18782 15669 18683
+f 18783 15669 18782
+f 18784 18785 18782
+f 18786 18784 18782
+f 18784 18786 18787
+f 17834 17833 18783
+f 18788 17834 18783
+f 18789 18786 18696
+f 18695 18789 18696
+f 18790 18787 18786
+f 18791 18792 18787
+f 18787 18790 18791
+f 18793 18789 18695
+f 18790 18789 18793
+f 18698 18697 18794
+f 17860 17834 18788
+f 17861 18795 18796
+f 18797 18796 18795
+f 18795 18798 18797
+f 18796 18797 18799
+f 18800 18797 18791
+f 18800 18801 18802
+f 18802 18803 18804
+f 18805 18799 18797
+f 18797 18806 18805
+f 18799 18805 18807
+f 18805 18806 18808
+f 18805 18808 18809
+f 18810 18809 18808
+f 18808 18811 18810
+f 18812 18807 18805
+f 18805 18809 18812
+f 18813 18814 18697
+f 18712 18815 18813
+f 18816 18817 18815
+f 18816 18815 18818
+f 18819 18815 18820
+f 18821 18819 18822
+f 18818 18815 18819
+f 18818 18819 18821
+f 18823 18824 18825
+f 18825 18816 18823
+f 18826 18803 18824
+f 18824 18823 18826
+f 18826 18823 18827
+f 18818 18827 18823
+f 18818 18823 18816
+f 18821 18822 18828
+f 18818 18821 18829
+f 18820 18830 18831
+f 18830 18832 18831
+f 18833 18834 18835
+f 18834 18836 18837
+f 18838 18837 18836
+f 18836 18839 18838
+f 18837 18838 18840
+f 18804 18803 18826
+f 18841 18811 18804
+f 18804 18842 18841
+f 18843 18841 18842
+f 18844 18810 18811
+f 18811 18841 18844
+f 18845 18844 18841
+f 18844 18846 18810
+f 18847 18846 18845
+f 18847 18845 18848
+f 18842 18849 18835
+f 18850 18851 18835
+f 18835 18852 18850
+f 18850 18852 18840
+f 18853 18851 18850
+f 18854 18855 18856
+f 18857 18848 18855
+f 18858 18857 18855
+f 18855 18854 18858
+f 18859 18854 18860
+f 18796 18799 18861
+f 18861 18862 18796
+f 18863 18864 18862
+f 18862 18861 18863
+f 18865 18864 18863
+f 18864 18866 17868
+f 18807 18861 18799
+f 18867 18861 18807
+f 18812 18867 18807
+f 18867 18812 18868
+f 18869 18867 18868
+f 18867 18863 18861
+f 18870 18865 18863
+f 18870 18863 18867
+f 18869 18870 18867
+f 17868 18866 18871
+f 18872 18873 18871
+f 18872 18871 18866
+f 18872 18866 18865
+f 18874 17879 17877
+f 17877 18871 18874
+f 18875 18876 18874
+f 18871 18873 18875
+f 18877 18869 18868
+f 18868 18846 18877
+f 18872 18865 18870
+f 18877 18870 18869
+f 18878 18857 18879
+f 18847 18857 18878
+f 18878 18880 18881
+f 18882 18875 18878
+f 18873 18872 18883
+f 18875 18873 18883
+f 18876 18882 18884
+f 18885 18874 18876
+f 18886 18887 18888
+f 18886 18888 18885
+f 18879 18857 18858
+f 18889 18890 18884
+f 18891 18832 18830
+f 18892 18832 18891
+f 18893 18891 18894
+f 18893 18895 18896
+f 18897 18893 18894
+f 18897 18894 18898
+f 18838 18899 18895
+f 18840 18838 18895
+f 18900 18901 18902
+f 18901 18895 18893
+f 18897 18898 18903
+f 18902 18903 18904
+f 18905 18906 18903
+f 18903 18907 18905
+f 18894 18739 18738
+f 18742 18908 18909
+f 18910 18911 18912
+f 18912 18913 18910
+f 18914 18915 18909
+f 18914 18909 18908
+f 18914 18908 18912
+f 18903 18898 18907
+f 18916 18907 18898
+f 18905 18916 18917
+f 18915 18914 18911
+f 18914 18912 18911
+f 18918 18911 18919
+f 18920 18921 18922
+f 18840 18900 18923
+f 18924 18860 18923
+f 18923 18925 18924
+f 18926 18924 18925
+f 18925 18927 18926
+f 18904 18906 18928
+f 18929 18928 18906
+f 18906 18905 18929
+f 18930 18929 18931
+f 18929 18930 18928
+f 18920 18889 18859
+f 18859 18860 18924
+f 18921 18859 18924
+f 18924 18926 18921
+f 18859 18921 18920
+f 18930 18931 18932
+f 18933 18934 18935
+f 18936 18937 18938
+f 18936 18939 18933
+f 18936 18933 18935
+f 18935 18937 18936
+f 18940 18938 18937
+f 17909 18938 18940
+f 18940 17903 17909
+f 18941 18937 18935
+f 18931 18929 18942
+f 18933 18931 18942
+f 18934 18933 18942
+f 18919 18934 18917
+f 18933 18932 18931
+f 18943 18908 18762
+f 18764 18944 18945
+f 18946 18779 18947
+f 18948 18946 18947
+f 18949 18947 18779
+f 17897 18947 18949
+f 17390 17895 18949
+f 17897 18950 18947
+f 18940 18951 18952
+f 18940 18952 17904
+f 17904 17903 18940
+f 18938 17909 17911
+f 18939 17911 18887
+f 17911 18939 18936
+f 15083 14977 15080
+f 18337 18336 18335
+f 3411 3409 3407
+f 16533 16532 16531
+f 1236 1304 1231
+f 17323 17343 17322
+f 13373 13382 13381
+f 789 792 794
+f 790 789 794
+f 1 5 1000
+f 1001 1000 5
+f 5 6 8
+f 5 8 1001
+f 9 7 1006
+f 18953 10 12
+f 18953 163 10
+f 163 1395 161
+f 1395 371 161
+f 372 371 1395
+f 13 373 372
+f 381 15 14
+f 22 1530 20
+f 22 20 19
+f 27 24 23
+f 24 28 25
+f 34 27 26
+f 34 35 33
+f 33 36 28
+f 28 27 33
+f 40 36 35
+f 40 35 38
+f 41 37 36
+f 41 42 37
+f 37 42 29
+f 44 32 42
+f 43 42 41
+f 41 40 39
+f 70 71 97
+f 71 94 97
+f 56 152 53
+f 57 59 55
+f 69 71 68
+f 64 67 65
+f 59 57 62
+f 65 73 69
+f 65 67 73
+f 76 82 74
+f 82 76 114
+f 86 101 79
+f 77 74 81
+f 114 177 82
+f 81 82 177
+f 77 75 74
+f 84 83 200
+f 99 110 18954
+f 91 87 89
+f 91 89 92
+f 104 90 92
+f 92 103 104
+f 94 89 97
+f 93 103 92
+f 98 103 93
+f 99 96 110
+f 100 99 18954
+f 100 18954 80
+f 102 98 100
+f 102 204 206
+f 101 100 80
+f 204 102 101
+f 102 206 105
+f 105 3 106
+f 105 104 102
+f 102 103 98
+f 113 109 107
+f 110 95 109
+f 113 107 108
+f 109 95 107
+f 18954 110 78
+f 109 113 75
+f 114 76 113
+f 114 113 108
+f 73 108 69
+f 18954 77 80
+f 77 18954 78
+f 116 151 123
+f 116 115 151
+f 119 164 126
+f 164 119 23
+f 118 123 26
+f 122 125 171
+f 122 121 124
+f 124 116 119
+f 119 126 122
+f 122 124 119
+f 127 123 151
+f 123 127 129
+f 26 123 136
+f 136 138 34
+f 123 129 136
+f 129 138 136
+f 137 129 128
+f 143 138 137
+f 134 146 135
+f 135 146 141
+f 143 137 139
+f 144 142 139
+f 144 139 141
+f 145 180 144
+f 147 57 54
+f 148 147 54
+f 117 148 115
+f 149 153 152
+f 12 11 152
+f 147 117 61
+f 61 121 120
+f 154 61 120
+f 120 122 154
+f 171 170 154
+f 122 171 154
+f 154 170 72
+f 150 10 155
+f 156 155 157
+f 151 150 127
+f 156 127 150
+f 127 156 130
+f 131 130 156
+f 158 338 160
+f 162 157 155
+f 162 158 157
+f 131 159 140
+f 140 159 132
+f 10 150 11
+f 163 155 10
+f 18955 173 168
+f 165 126 164
+f 166 165 25
+f 125 126 165
+f 125 165 167
+f 168 166 25
+f 168 30 18956
+f 166 168 173
+f 173 167 166
+f 172 171 125
+f 125 167 172
+f 169 172 167
+f 169 167 173
+f 173 18955 174
+f 200 85 241
+f 239 241 85
+f 239 85 18955
+f 31 18956 30
+f 18955 168 18956
+f 176 18956 31
+f 242 18956 176
+f 18956 242 18955
+f 239 18955 242
+f 174 178 175
+f 178 177 175
+f 178 81 177
+f 178 174 18955
+f 18955 85 178
+f 200 83 85
+f 138 179 34
+f 39 38 142
+f 393 47 46
+f 180 393 46
+f 44 182 32
+f 186 181 44
+f 187 50 52
+f 189 185 187
+f 191 270 190
+f 193 270 191
+f 566 194 193
+f 566 197 194
+f 199 201 84
+f 251 201 199
+f 251 18957 202
+f 251 202 201
+f 251 253 18957
+f 225 18957 253
+f 105 18958 3
+f 4 3 18958
+f 18958 105 206
+f 18958 207 4
+f 6 4 207
+f 212 6 207
+f 207 18958 206
+f 208 212 207
+f 209 18959 210
+f 6 212 7
+f 1006 7 2013
+f 7 211 2013
+f 2013 211 216
+f 211 214 215
+f 202 101 86
+f 204 101 202
+f 18957 217 202
+f 18960 205 217
+f 205 18960 203
+f 209 203 18960
+f 18960 18959 209
+f 217 18957 18961
+f 18961 18960 217
+f 223 18959 18960
+f 223 18960 18961
+f 18957 225 224
+f 224 223 18961
+f 224 18961 18957
+f 18959 223 222
+f 210 18959 219
+f 219 18959 222
+f 222 220 219
+f 302 222 227
+f 302 220 222
+f 220 302 228
+f 210 219 213
+f 214 213 219
+f 219 218 214
+f 218 228 234
+f 234 228 235
+f 230 215 229
+f 215 230 232
+f 234 236 231
+f 237 233 231
+f 231 236 237
+f 238 236 306
+f 250 241 240
+f 240 245 250
+f 250 245 248
+f 240 239 242
+f 243 244 247
+f 181 247 244
+f 199 241 250
+f 253 248 252
+f 254 247 246
+f 256 255 257
+f 249 259 252
+f 259 249 256
+f 259 256 263
+f 266 257 255
+f 268 269 271
+f 269 270 271
+f 277 258 257
+f 257 268 277
+f 190 264 185
+f 190 270 264
+f 272 271 270
+f 277 263 258
+f 260 302 227
+f 260 300 302
+f 300 260 262
+f 272 192 276
+f 276 192 18962
+f 276 18962 279
+f 279 278 276
+f 279 18962 280
+f 195 280 18962
+f 18962 192 195
+f 282 280 195
+f 195 196 282
+f 277 278 274
+f 274 263 277
+f 196 198 286
+f 198 289 286
+f 575 289 198
+f 288 286 289
+f 282 287 281
+f 296 281 287
+f 287 288 296
+f 641 289 575
+f 290 289 641
+f 296 288 290
+f 296 290 297
+f 284 281 294
+f 285 284 291
+f 294 296 297
+f 302 300 299
+f 303 301 307
+f 301 298 273
+f 301 273 275
+f 301 275 304
+f 304 307 301
+f 303 306 236
+f 305 238 306
+f 238 305 18963
+f 18964 304 285
+f 285 292 18964
+f 18964 292 312
+f 304 18964 308
+f 308 18964 312
+f 312 292 318
+f 314 312 318
+f 314 318 12489
+f 314 12489 315
+f 305 307 311
+f 311 18963 305
+f 308 311 307
+f 309 311 308
+f 308 312 309
+f 313 314 315
+f 317 313 316
+f 295 318 293
+f 323 392 322
+f 319 322 392
+f 324 48 47
+f 325 324 323
+f 324 325 326
+f 326 325 327
+f 324 326 51
+f 51 48 324
+f 333 537 334
+f 537 333 331
+f 331 404 537
+f 556 537 404
+f 369 339 340
+f 351 339 369
+f 370 351 369
+f 342 390 345
+f 343 344 345
+f 342 337 346
+f 342 346 18965
+f 348 18965 346
+f 18965 390 342
+f 18965 394 390
+f 18966 398 394
+f 18966 394 18965
+f 348 18966 18965
+f 350 398 18966
+f 350 18966 348
+f 339 346 337
+f 347 346 339
+f 351 375 347
+f 375 355 347
+f 349 347 355
+f 385 356 355
+f 385 355 375
+f 385 360 357
+f 357 356 385
+f 353 349 355
+f 352 349 353
+f 360 387 359
+f 363 359 387
+f 354 358 361
+f 362 361 359
+f 362 354 361
+f 18967 338 158
+f 371 162 161
+f 371 18967 162
+f 18967 158 162
+f 371 364 18967
+f 338 18967 364
+f 374 351 370
+f 340 364 367
+f 340 367 369
+f 370 367 368
+f 370 368 374
+f 373 365 372
+f 378 374 368
+f 377 380 386
+f 380 388 386
+f 380 452 388
+f 443 452 380
+f 376 368 15
+f 377 376 379
+f 381 440 382
+f 439 383 382
+f 382 440 439
+f 444 380 383
+f 385 384 386
+f 384 377 386
+f 360 386 388
+f 388 452 389
+f 391 323 393
+f 391 392 323
+f 398 395 394
+f 395 397 392
+f 392 390 395
+f 397 395 398
+f 350 400 398
+f 398 400 396
+f 399 397 396
+f 402 320 399
+f 396 401 399
+f 402 331 320
+f 405 331 402
+f 405 402 403
+f 406 415 407
+f 350 408 400
+f 406 411 415
+f 413 410 409
+f 412 413 409
+f 409 352 354
+f 354 362 412
+f 411 410 413
+f 403 407 405
+f 416 407 415
+f 418 404 405
+f 418 556 404
+f 418 628 556
+f 419 628 418
+f 421 631 419
+f 421 424 631
+f 363 425 362
+f 362 426 471
+f 426 430 471
+f 443 438 437
+f 436 438 445
+f 445 447 436
+f 449 436 447
+f 446 450 445
+f 451 448 447
+f 447 445 450
+f 437 389 443
+f 363 389 453
+f 454 456 429
+f 457 456 454
+f 437 436 458
+f 437 458 454
+f 458 457 454
+f 449 461 458
+f 461 449 448
+f 461 463 455
+f 455 458 461
+f 462 461 448
+f 451 462 448
+f 460 463 461
+f 459 455 463
+f 435 434 467
+f 459 469 466
+f 477 476 414
+f 414 413 473
+f 414 473 477
+f 473 474 477
+f 475 430 433
+f 433 478 475
+f 433 480 478
+f 477 474 478
+f 474 475 478
+f 478 482 476
+f 422 414 483
+f 483 476 482
+f 491 486 490
+f 491 490 657
+f 491 657 655
+f 489 491 485
+f 491 655 484
+f 491 489 486
+f 435 18968 432
+f 432 18968 480
+f 18969 480 18968
+f 18969 479 480
+f 18970 481 479
+f 18970 479 18969
+f 18970 18969 18971
+f 18971 500 18970
+f 492 494 500
+f 18971 492 500
+f 498 494 493
+f 481 18970 487
+f 496 487 18970
+f 496 18970 500
+f 490 497 657
+f 497 680 657
+f 496 498 495
+f 499 498 502
+f 503 499 502
+f 508 499 503
+f 494 498 496
+f 680 497 507
+f 510 505 504
+f 518 18968 435
+f 468 518 435
+f 519 18969 18968
+f 518 519 18968
+f 524 522 18971
+f 524 18971 18969
+f 519 524 18969
+f 520 522 524
+f 524 519 517
+f 520 524 523
+f 492 18971 522
+f 492 522 521
+f 515 465 513
+f 520 529 528
+f 528 521 520
+f 529 520 525
+f 521 528 501
+f 528 504 501
+f 509 504 528
+f 509 528 527
+f 2135 529 525
+f 2135 525 514
+f 701 526 529
+f 701 529 2135
+f 327 332 530
+f 334 530 332
+f 334 18972 530
+f 532 530 18972
+f 539 18972 334
+f 18972 544 532
+f 535 532 544
+f 541 544 18972
+f 541 18972 539
+f 531 328 327
+f 531 532 533
+f 52 534 187
+f 533 188 187
+f 542 549 536
+f 550 188 536
+f 549 553 551
+f 551 550 549
+f 188 550 191
+f 191 550 551
+f 552 193 191
+f 555 562 540
+f 540 562 559
+f 18973 551 565
+f 18973 552 551
+f 573 566 552
+f 573 197 566
+f 573 552 18973
+f 570 18973 565
+f 18973 570 573
+f 568 554 561
+f 560 581 561
+f 581 560 564
+f 568 561 580
+f 580 561 581
+f 583 585 647
+f 647 594 583
+f 580 582 578
+f 584 588 586
+f 586 648 577
+f 577 578 586
+f 588 584 590
+f 590 584 583
+f 591 606 590
+f 12555 590 606
+f 590 12555 589
+f 589 588 590
+f 717 18974 2232
+f 647 715 593
+f 715 599 597
+f 715 597 593
+f 592 603 591
+f 595 603 592
+f 594 647 593
+f 595 593 597
+f 602 596 598
+f 596 595 597
+f 606 604 608
+f 605 12575 604
+f 12575 607 604
+f 614 609 602
+f 616 609 614
+f 717 18975 612
+f 2232 18975 717
+f 613 612 18975
+f 2231 18975 2232
+f 613 621 616
+f 2231 613 18975
+f 623 613 2231
+f 623 621 613
+f 610 601 609
+f 617 610 609
+f 619 611 610
+f 621 622 617
+f 627 12599 618
+f 12599 620 618
+f 618 622 626
+f 628 630 555
+f 562 629 563
+f 633 563 629
+f 638 665 637
+f 563 637 564
+f 637 639 564
+f 645 639 18976
+f 639 637 18976
+f 18976 637 665
+f 574 579 575
+f 576 577 648
+f 648 12551 12609
+f 12609 576 648
+f 581 643 582
+f 640 581 564
+f 642 639 645
+f 644 642 646
+f 644 646 647
+f 585 584 643
+f 586 582 584
+f 587 12551 648
+f 649 661 652
+f 635 654 653
+f 635 424 654
+f 424 484 654
+f 634 653 660
+f 634 660 662
+f 656 655 658
+f 655 654 484
+f 663 664 638
+f 638 634 662
+f 651 664 663
+f 651 666 664
+f 668 669 645
+f 668 645 18976
+f 668 18976 665
+f 651 650 670
+f 652 673 650
+f 670 650 673
+f 666 670 671
+f 663 662 660
+f 663 660 651
+f 18977 674 675
+f 18977 675 681
+f 677 682 678
+f 677 695 18977
+f 18977 681 677
+f 676 696 695
+f 695 677 676
+f 657 679 658
+f 675 661 659
+f 688 686 689
+f 693 673 652
+f 693 652 674
+f 18977 693 674
+f 691 693 18977
+f 673 692 672
+f 691 716 692
+f 673 693 692
+f 694 18974 18978
+f 695 18978 18977
+f 18978 691 18977
+f 18978 695 694
+f 691 18978 716
+f 18974 716 18978
+f 18974 717 716
+f 688 18979 2249
+f 18979 688 690
+f 709 2248 2249
+f 709 2249 18979
+f 702 697 527
+f 702 527 526
+f 698 697 702
+f 683 509 527
+f 683 527 697
+f 704 690 689
+f 698 704 689
+f 700 702 526
+f 706 18979 690
+f 707 709 18979
+f 18979 706 707
+f 2199 713 712
+f 712 706 704
+f 2199 712 704
+f 704 705 2199
+f 712 710 707
+f 707 706 712
+f 708 707 710
+f 712 714 710
+f 710 714 711
+f 646 645 669
+f 599 715 669
+f 669 667 599
+f 598 599 667
+f 598 672 602
+f 615 602 672
+f 716 615 692
+f 721 720 2265
+f 709 735 2265
+f 2265 2248 709
+f 728 718 721
+f 735 728 721
+f 721 2265 735
+f 722 626 625
+f 719 722 625
+f 722 719 718
+f 723 12599 627
+f 727 723 725
+f 718 726 725
+f 723 722 725
+f 733 2201 729
+f 736 739 735
+f 709 708 736
+f 741 746 728
+f 741 728 735
+f 735 739 741
+f 708 711 737
+f 736 738 739
+f 741 743 746
+f 739 738 740
+f 724 731 730
+f 730 727 724
+f 726 728 746
+f 745 744 748
+f 748 747 745
+f 732 731 745
+f 732 745 747
+f 2203 734 732
+f 732 747 2203
+f 2203 747 750
+f 2203 750 756
+f 743 751 748
+f 748 744 746
+f 748 746 743
+f 751 743 742
+f 751 742 754
+f 755 758 756
+f 1182 845 760
+f 1182 760 759
+f 759 764 1182
+f 764 759 761
+f 762 764 761
+f 768 766 765
+f 768 765 769
+f 765 761 958
+f 772 769 765
+f 772 765 958
+f 775 1260 767
+f 767 769 775
+f 769 772 771
+f 775 769 771
+f 775 771 773
+f 775 774 1260
+f 775 773 776
+f 784 1721 782
+f 788 787 1108
+f 788 1108 789
+f 795 790 792
+f 798 797 795
+f 792 791 800
+f 798 795 792
+f 800 798 792
+f 800 796 798
+f 796 800 801
+f 804 803 18980
+f 809 18980 818
+f 807 809 818
+f 810 813 808
+f 813 804 809
+f 804 18980 809
+f 813 805 804
+f 815 780 816
+f 793 815 816
+f 784 806 1730
+f 1730 1721 784
+f 817 806 784
+f 785 817 784
+f 814 18980 803
+f 814 803 817
+f 795 797 819
+f 18980 814 819
+f 18980 819 818
+f 818 797 820
+f 820 797 796
+f 821 796 801
+f 808 823 810
+f 823 828 822
+f 824 823 808
+f 833 826 824
+f 833 824 825
+f 826 832 827
+f 826 833 832
+f 825 807 820
+f 830 796 821
+f 830 821 1137
+f 833 825 829
+f 830 834 829
+f 1137 835 834
+f 834 830 1137
+f 835 1137 1136
+f 831 833 829
+f 829 834 831
+f 836 831 835
+f 1140 836 835
+f 835 1136 1140
+f 841 866 849
+f 837 839 841
+f 841 849 837
+f 843 839 844
+f 853 846 844
+f 856 847 846
+f 856 846 853
+f 844 839 854
+f 854 839 838
+f 854 838 851
+f 838 837 848
+f 848 849 909
+f 851 838 848
+f 851 848 909
+f 851 850 855
+f 856 855 850
+f 851 909 908
+f 852 851 908
+f 852 908 914
+f 855 853 854
+f 851 855 854
+f 895 863 862
+f 865 863 895
+f 858 860 864
+f 899 862 860
+f 899 860 861
+f 892 899 861
+f 863 864 860
+f 849 867 868
+f 870 868 867
+f 868 870 871
+f 871 870 885
+f 885 872 871
+f 869 868 871
+f 875 873 858
+f 873 880 859
+f 876 104 877
+f 870 876 879
+f 870 90 876
+f 880 106 3
+f 873 874 881
+f 880 873 881
+f 875 864 865
+f 885 870 879
+f 886 878 884
+f 964 967 906
+f 906 904 964
+f 893 895 862
+f 893 862 888
+f 898 894 893
+f 893 888 887
+f 862 899 891
+f 862 891 888
+f 898 887 902
+f 905 898 904
+f 904 902 901
+f 909 849 869
+f 872 910 869
+f 872 885 911
+f 910 872 912
+f 908 907 913
+f 916 913 907
+f 907 912 917
+f 915 917 912
+f 918 915 906
+f 918 906 967
+f 916 907 917
+f 912 907 910
+f 882 865 896
+f 882 896 897
+f 911 884 919
+f 882 919 883
+f 919 884 883
+f 897 920 919
+f 882 897 919
+f 884 911 885
+f 885 886 884
+f 905 906 915
+f 936 939 18981
+f 924 18981 925
+f 924 923 936
+f 18981 924 936
+f 921 923 924
+f 921 924 926
+f 845 847 760
+f 18982 761 760
+f 18982 760 928
+f 18982 928 929
+f 847 856 928
+f 933 929 930
+f 932 929 933
+f 933 930 931
+f 761 18982 932
+f 929 932 18982
+f 927 850 941
+f 941 850 852
+f 941 937 936
+f 941 930 927
+f 937 934 938
+f 937 941 852
+f 852 934 937
+f 937 938 935
+f 939 936 935
+f 950 948 926
+f 955 952 953
+f 955 953 1088
+f 949 948 952
+f 956 946 943
+f 943 949 956
+f 931 959 957
+f 963 965 961
+f 975 18981 968
+f 975 968 962
+f 939 980 18981
+f 980 969 968
+f 968 18981 980
+f 965 966 964
+f 966 970 967
+f 968 963 962
+f 966 965 963
+f 966 968 969
+f 925 18981 975
+f 976 961 965
+f 965 901 900
+f 965 900 976
+f 976 900 903
+f 901 965 904
+f 974 961 976
+f 974 976 978
+f 978 977 1049
+f 981 938 934
+f 934 979 981
+f 981 980 938
+f 982 951 971
+f 982 971 973
+f 982 973 983
+f 985 984 983
+f 983 973 974
+f 926 971 951
+f 953 951 982
+f 953 982 1088
+f 1088 982 984
+f 1120 1088 984
+f 1120 984 1121
+f 986 1121 984
+f 1051 986 985
+f 985 974 978
+f 1051 985 978
+f 978 1049 1051
+f 859 988 857
+f 990 989 987
+f 994 992 989
+f 993 992 994
+f 892 861 992
+f 998 995 994
+f 999 997 1011
+f 9 1003 1001
+f 1009 997 1002
+f 1009 1012 1011
+f 1020 1021 1023
+f 1023 1022 1030
+f 1050 903 890
+f 890 1020 1050
+f 1050 1020 1023
+f 18983 1050 1023
+f 1023 1030 18983
+f 1022 999 1025
+f 1011 1025 999
+f 1028 1030 1022
+f 1028 1022 1025
+f 1028 1025 1026
+f 18983 1030 1029
+f 1044 1031 1027
+f 1027 1035 1044
+f 1013 1024 1011
+f 1032 1027 1024
+f 1034 1027 1032
+f 1033 1034 1032
+f 1016 1032 1013
+f 1016 1033 1032
+f 1034 1033 1041
+f 1040 1039 1038
+f 1037 1039 1042
+f 1039 1040 1042
+f 1042 1040 1047
+f 1043 1044 1035
+f 977 903 1050
+f 1050 18983 1048
+f 1048 18983 1029
+f 1048 1029 1031
+f 1053 1048 1031
+f 1031 1044 1053
+f 1051 1049 1048
+f 1053 1055 1061
+f 1044 1045 1056
+f 1055 1056 1063
+f 1063 1056 1059
+f 1057 1045 1046
+f 1064 1059 1057
+f 1058 1064 1057
+f 1064 1058 1065
+f 1055 1063 1060
+f 1063 1059 1062
+f 1060 1062 1072
+f 1064 1062 1059
+f 1062 1064 1066
+f 1066 1072 1062
+f 1072 1066 1068
+f 18984 1054 1053
+f 1053 1061 18984
+f 1054 18984 1146
+f 1071 18984 1061
+f 1061 1060 1071
+f 1060 1072 1070
+f 1071 1070 1074
+f 1073 1146 18984
+f 18984 1071 1073
+f 1073 1071 1074
+f 1068 1069 1077
+f 944 1097 945
+f 1097 944 18985
+f 946 18985 944
+f 1084 18986 18985
+f 1084 18985 946
+f 18986 1098 1097
+f 1097 18985 18986
+f 1085 1104 1081
+f 1085 1083 18987
+f 1109 1100 1098
+f 1098 18986 1109
+f 1086 1100 1109
+f 1086 1109 787
+f 1084 1109 18986
+f 1109 1084 1081
+f 1081 1104 1109
+f 1087 1088 1090
+f 1082 946 956
+f 956 954 1082
+f 1092 1087 1093
+f 18987 1083 1092
+f 1094 18987 1092
+f 1095 1094 1093
+f 1093 1087 1089
+f 1096 776 773
+f 1099 778 776
+f 776 1096 1099
+f 1099 1100 1101
+f 1101 781 778
+f 1086 1101 1100
+f 779 1101 1086
+f 779 1086 786
+f 781 1101 779
+f 18988 1107 1085
+f 1085 18987 18988
+f 18989 1105 1102
+f 1102 1107 18989
+f 1107 18988 18989
+f 787 1109 1108
+f 1108 1104 1103
+f 1106 789 1108
+f 1108 1103 1106
+f 1117 1110 18989
+f 1110 1105 18989
+f 799 791 1106
+f 1131 802 799
+f 799 1111 1131
+f 1112 1131 1111
+f 1116 1112 1110
+f 1110 1117 1116
+f 1113 18989 18988
+f 1113 18988 18987
+f 18987 1094 1113
+f 1113 1094 1095
+f 18989 1113 1118
+f 1118 1117 18989
+f 1114 1118 1113
+f 1122 1091 1090
+f 1122 1090 1120
+f 1122 1121 986
+f 1122 986 1124
+f 1095 1091 1122
+f 1095 1122 1123
+f 1124 986 1051
+f 1124 1051 1126
+f 1131 1130 821
+f 821 802 1131
+f 1135 1132 1115
+f 1137 821 1130
+f 1139 1138 1133
+f 1139 1135 1143
+f 1127 1143 1135
+f 1135 1119 1127
+f 1127 1128 1144
+f 1145 1128 1126
+f 1126 1051 1052
+f 1145 1126 1052
+f 1052 1054 1145
+f 1145 1054 1146
+f 1145 1073 1075
+f 2205 1145 1075
+f 1075 1078 2205
+f 1078 1080 2205
+f 1144 1128 1145
+f 1145 2205 1148
+f 1149 1273 1150
+f 1151 1157 1149
+f 1154 1158 1152
+f 1158 1154 1307
+f 1151 1153 1152
+f 1681 1155 1158
+f 1681 1359 1156
+f 1156 1155 1681
+f 1165 1161 1160
+f 1162 18990 2009
+f 1162 2009 2008
+f 1162 1164 18990
+f 18991 1998 1161
+f 1167 1162 18991
+f 1162 2008 18991
+f 1161 1165 18991
+f 1167 18991 1165
+f 1169 1162 1168
+f 1168 1162 1167
+f 1175 1180 1173
+f 1160 1159 1173
+f 1180 1176 1173
+f 1173 1176 1177
+f 1173 1177 1160
+f 1187 1184 1183
+f 1185 1186 1170
+f 1189 1183 1185
+f 1185 1170 1172
+f 1191 1183 1189
+f 1184 1168 1166
+f 1284 1222 1221
+f 1285 1222 1284
+f 18992 1169 1197
+f 18992 1197 1196
+f 1199 1196 1195
+f 1201 1204 1203
+f 12 152 1201
+f 1201 1203 12
+f 18992 1163 1169
+f 1201 1163 18992
+f 18992 1196 1201
+f 1196 1198 1204
+f 1204 1201 1196
+f 1210 1198 1200
+f 1202 1204 1207
+f 1204 1198 1207
+f 18953 12 1203
+f 1203 1202 18953
+f 1206 163 18953
+f 1206 18953 1202
+f 1202 1207 1206
+f 1206 1395 163
+f 1206 1205 1395
+f 1210 1208 1198
+f 1220 1195 1194
+f 1195 1220 1215
+f 1220 1216 1215
+f 1215 1199 1195
+f 1194 18993 1220
+f 1220 18993 1217
+f 1217 18993 1193
+f 18993 1194 1193
+f 1217 1219 1220
+f 1226 1214 1224
+f 1228 1210 1225
+f 1223 1230 1224
+f 1285 1230 1223
+f 1223 1213 1222
+f 1223 1222 1285
+f 1229 1417 1227
+f 1211 1212 1228
+f 1248 1245 18994
+f 1192 1248 1232
+f 1248 18994 1232
+f 1233 1235 1259
+f 18994 1245 1254
+f 18994 1254 1234
+f 18995 18994 1234
+f 1237 1232 18994
+f 18995 1234 1233
+f 1237 18994 18995
+f 1233 1693 18995
+f 1240 1237 18995
+f 1693 1240 18995
+f 1236 1237 1238
+f 1302 1238 1240
+f 1239 1238 1302
+f 1171 18996 1172
+f 1241 1171 1242
+f 18996 1171 1241
+f 1247 1255 1241
+f 18996 1241 1245
+f 1246 1254 1244
+f 1255 1246 1241
+f 1243 1179 1182
+f 1179 1243 1242
+f 1242 1171 1178
+f 1243 1182 764
+f 764 1247 1241
+f 18996 1245 1189
+f 1189 1172 18996
+f 1191 1190 1192
+f 766 1250 1247
+f 1250 1252 1255
+f 1255 1247 1250
+f 1253 1234 1254
+f 1258 1257 1249
+f 1257 1258 1260
+f 1256 1235 1253
+f 1253 1251 1256
+f 1235 1234 1253
+f 18997 1217 1218
+f 18998 1263 1282
+f 18998 1282 1281
+f 18997 18998 1219
+f 1219 1217 18997
+f 1219 18998 1221
+f 1281 1284 1221
+f 1221 18998 1281
+f 18997 1263 18998
+f 1263 18997 1231
+f 1218 1231 18997
+f 1264 1263 1262
+f 1263 1264 1282
+f 1261 1263 1231
+f 1265 1270 1264
+f 1262 1266 1265
+f 1268 1265 1266
+f 1268 1269 1265
+f 1268 1267 1272
+f 1278 1276 1272
+f 1279 1277 1276
+f 1283 1280 1291
+f 1294 1286 1283
+f 1294 1283 1291
+f 1264 1270 1289
+f 1289 1282 1264
+f 1282 1289 1280
+f 1287 1289 1270
+f 1291 1280 1289
+f 1291 1289 1288
+f 1270 1269 1287
+f 1287 1269 1277
+f 1288 1287 1277
+f 1301 1298 1300
+f 1308 1295 1301
+f 1303 1306 1301
+f 1308 1301 1306
+f 1261 1299 1297
+f 1231 1299 1261
+f 1299 1304 1236
+f 1296 1267 1266
+f 1150 1271 1305
+f 1154 1153 1308
+f 1295 1308 1153
+f 1286 1294 1417
+f 1286 1417 1229
+f 1313 1470 1310
+f 1318 1474 1470
+f 1318 1470 1313
+f 1316 1312 1309
+f 1316 1484 1317
+f 1319 1322 1320
+f 1331 1587 1321
+f 1321 1320 1331
+f 1332 1587 1331
+f 18999 19000 1340
+f 18999 1340 1326
+f 1340 1334 1333
+f 1333 1326 1340
+f 1340 19000 1347
+f 1341 1338 1337
+f 1341 1337 1377
+f 1347 1339 1340
+f 1342 1339 1347
+f 1325 1343 18999
+f 18999 1326 1325
+f 1343 19000 18999
+f 1343 1348 19000
+f 1347 19000 1348
+f 1330 1325 1328
+f 1348 1343 1330
+f 1346 1373 1342
+f 1353 1349 1352
+f 1322 1319 1149
+f 1273 1149 1319
+f 1356 1329 1354
+f 1355 1351 1353
+f 1355 1362 1356
+f 1157 1358 1352
+f 1358 1157 1156
+f 1353 1352 19001
+f 1358 19001 1352
+f 19001 1363 1353
+f 1363 19001 1358
+f 1363 1358 1357
+f 1367 1330 1329
+f 1367 1329 1356
+f 1368 1330 1367
+f 1368 1348 1330
+f 1367 1356 1362
+f 1368 1371 1346
+f 1346 1348 1368
+f 1373 1346 1371
+f 1372 1371 1370
+f 1362 1361 1366
+f 1375 1374 1361
+f 1806 1374 1375
+f 1390 1370 1369
+f 1390 1369 1374
+f 1806 1805 1390
+f 1390 1374 1806
+f 1393 1390 1805
+f 1314 1337 1376
+f 1378 1316 1314
+f 1378 1314 1376
+f 1342 1379 1376
+f 1376 1336 1342
+f 1380 1484 1316
+f 1646 1384 1383
+f 1386 1382 1373
+f 1386 1373 1372
+f 1386 1385 1383
+f 1383 1382 1386
+f 1387 1386 1372
+f 1387 1372 1370
+f 1387 1388 1385
+f 1389 1646 1383
+f 1389 1383 1385
+f 1394 1392 1391
+f 1396 1398 13
+f 1211 1399 1396
+f 1396 1205 1211
+f 1400 1401 1397
+f 1407 14 1398
+f 1407 1398 1397
+f 1405 14 1407
+f 1403 14 1405
+f 1403 1404 2091
+f 1402 1411 1406
+f 1406 1408 1407
+f 1410 1405 1407
+f 1410 1407 1408
+f 1409 1408 1411
+f 1404 1405 1410
+f 1417 1415 1414
+f 1424 1416 1415
+f 1228 1420 1399
+f 1399 1211 1228
+f 1420 1419 1400
+f 1400 1399 1420
+f 1420 1228 1414
+f 1418 1420 1414
+f 1422 1400 1419
+f 1400 1422 1401
+f 1402 1401 1422
+f 1428 1423 1421
+f 1424 1428 1421
+f 1421 1418 1416
+f 1402 1425 1411
+f 1430 1423 1428
+f 1425 1430 1426
+f 1429 1559 1431
+f 1436 1438 1433
+f 19002 1443 1442
+f 1441 19003 1442
+f 1447 1443 19002
+f 1441 1443 1445
+f 1444 19003 1441
+f 1443 1447 1445
+f 2912 1447 1455
+f 1439 1437 1438
+f 1438 1453 1439
+f 19004 1453 19005
+f 1453 1438 19005
+f 1451 19004 19005
+f 1449 1438 1436
+f 1449 19005 1438
+f 1451 19005 1449
+f 1453 19004 19006
+f 1453 19006 1452
+f 1452 19006 1454
+f 1442 19006 19004
+f 1442 19004 1451
+f 1451 19002 1442
+f 19003 1454 19006
+f 19006 1442 19003
+f 1440 1454 1466
+f 1455 19002 1451
+f 19002 1455 1447
+f 2912 1455 2914
+f 1450 1495 1455
+f 1498 2914 1455
+f 1495 1498 1455
+f 1458 19007 1444
+f 1458 1444 1446
+f 1448 2208 1458
+f 1458 1446 1448
+f 1458 2208 1456
+f 1459 19007 1458
+f 19007 1460 19003
+f 19003 1444 19007
+f 1460 19007 1459
+f 1462 1457 1464
+f 1460 1454 19003
+f 1467 1465 1461
+f 1475 1435 1476
+f 1435 1440 1476
+f 1476 1466 1487
+f 1479 1315 1311
+f 1311 1477 1479
+f 1478 1479 1477
+f 1487 1485 1476
+f 1485 1487 1486
+f 1489 1487 1504
+f 1489 1504 1491
+f 1491 1543 1490
+f 1489 1490 19008
+f 1626 1488 1489
+f 1547 1626 1489
+f 1489 19008 1547
+f 1449 1436 1474
+f 1449 1474 19009
+f 1494 1449 19009
+f 19009 1474 1318
+f 19009 1492 1494
+f 1450 1449 1494
+f 1497 1499 1498
+f 1496 1500 1497
+f 1497 1493 1496
+f 1503 1492 19009
+f 1503 19009 1482
+f 19009 1318 1482
+f 1502 1492 1503
+f 1501 1503 1482
+f 1500 1496 1502
+f 1500 1511 1499
+f 1500 1502 1631
+f 1508 1500 1631
+f 1500 1508 1511
+f 1465 1505 1466
+f 1506 1505 1465
+f 1506 1465 1467
+f 1504 1466 1505
+f 1491 1506 1507
+f 1491 1507 1565
+f 1543 1491 1565
+f 1510 19010 1511
+f 1512 19010 1510
+f 2933 1515 1513
+f 1515 2933 16
+f 1513 1515 1514
+f 1564 1468 1463
+f 1463 1520 1564
+f 1518 1564 1520
+f 1521 1520 1514
+f 1521 1516 1522
+f 1526 1522 1516
+f 1516 1524 1526
+f 1526 1524 1525
+f 1531 1525 20
+f 20 1530 1531
+f 1531 1530 1529
+f 1528 22 21
+f 1532 1529 2103
+f 1535 1534 1533
+f 1569 1537 1535
+f 1535 1536 1569
+f 1523 1522 1526
+f 1523 1526 1519
+f 1536 1532 2103
+f 1541 2105 2104
+f 1541 1540 1539
+f 1539 2105 1541
+f 1548 19008 1490
+f 1490 1544 1548
+f 1547 19008 1548
+f 1555 1563 1553
+f 1556 1563 1555
+f 1555 1557 1556
+f 1560 1552 1551
+f 1468 1564 1507
+f 1507 1518 1566
+f 1565 1507 1566
+f 1544 1543 1565
+f 1554 1545 1517
+f 1537 1555 1534
+f 1557 1537 1568
+f 1557 1568 1572
+f 1557 1572 1558
+f 1572 1568 1570
+f 1572 1570 1573
+f 19011 1570 1538
+f 1538 1540 19011
+f 1571 1542 2964
+f 1571 19011 1540
+f 1573 1570 19011
+f 1573 19011 1582
+f 1576 1582 1571
+f 1571 2964 1576
+f 1571 1582 19011
+f 1580 1575 1577
+f 1581 1670 1574
+f 1582 1575 1583
+f 1321 19012 1274
+f 1321 1274 1273
+f 19012 1584 1275
+f 1275 1274 19012
+f 1321 1586 19012
+f 1586 1321 1587
+f 1586 1590 1584
+f 1584 19012 1586
+f 1584 19013 1278
+f 1279 1278 19013
+f 1590 19013 1584
+f 1586 1585 1590
+f 1345 1585 1332
+f 1594 1595 1593
+f 1593 1592 1594
+f 1335 1341 1598
+f 1600 1598 1597
+f 1598 1344 1335
+f 1613 1589 1602
+f 1602 1608 1613
+f 1601 1603 1602
+f 1601 1602 1345
+f 1605 1608 1602
+f 1605 1602 1603
+f 1598 1600 1601
+f 1603 1601 1600
+f 1603 1600 1599
+f 1603 1599 1604
+f 1595 1608 1606
+f 1608 1605 1604
+f 1609 1608 1607
+f 1590 19014 19013
+f 19013 19014 1611
+f 19013 1611 1279
+f 1589 1611 19014
+f 1589 19014 1590
+f 1279 1611 1591
+f 1594 1612 1595
+f 1612 1610 1613
+f 1593 1415 1417
+f 1417 1294 1593
+f 1616 1415 1593
+f 1593 1596 1616
+f 1415 1616 1424
+f 1424 1616 1428
+f 1659 1614 1616
+f 1616 1596 1606
+f 1616 1606 1659
+f 1606 1609 1659
+f 1429 1428 1616
+f 1429 1615 1559
+f 1597 1341 1377
+f 1377 1479 1597
+f 1597 1617 1599
+f 1480 1481 1618
+f 1618 1481 1620
+f 1599 1617 1619
+f 1483 1484 1380
+f 1621 1380 1381
+f 1486 1620 1481
+f 1633 1381 1384
+f 1633 1621 1381
+f 1633 1384 1646
+f 1646 1645 1633
+f 1645 1648 1633
+f 1636 1633 1648
+f 1623 1619 1620
+f 1619 1623 1622
+f 1625 1626 1627
+f 1627 1623 1625
+f 1628 1624 1627
+f 1607 1599 1619
+f 1607 1622 1624
+f 1502 1501 1629
+f 1629 1635 1632
+f 1629 1632 1631
+f 1635 1629 1630
+f 1630 1621 1633
+f 1634 1637 1635
+f 1634 1633 1636
+f 1638 1632 1635
+f 1638 1642 1509
+f 1642 1639 1512
+f 1512 1509 1642
+f 1637 1641 1638
+f 1642 1644 1639
+f 1389 19015 1645
+f 1648 1645 19015
+f 1388 19015 1389
+f 19015 1649 1648
+f 1648 1647 1654
+f 1654 1636 1648
+f 1394 1650 1392
+f 1651 19015 1388
+f 1651 1388 1392
+f 1649 19015 1651
+f 1838 1649 1651
+f 1650 1838 1651
+f 1652 1649 1838
+f 1628 1657 1656
+f 1657 1549 1615
+f 1657 1615 1614
+f 1628 1547 1657
+f 1609 1628 1656
+f 1559 1615 1552
+f 1639 1660 1662
+f 1666 1644 1643
+f 1666 1675 1668
+f 1666 1668 1665
+f 1665 1660 1639
+f 1665 1639 1644
+f 1667 1663 1660
+f 1668 1674 1667
+f 1674 1668 1675
+f 1578 2992 1580
+f 1580 2992 2997
+f 1580 2997 1583
+f 1583 2997 1671
+f 1671 1669 1581
+f 1666 1643 1655
+f 1678 1675 1666
+f 1678 1666 1672
+f 1673 1675 1678
+f 3014 1673 1678
+f 1676 1672 1655
+f 1676 1878 1677
+f 1677 3019 1678
+f 3019 3014 1678
+f 1878 3019 1677
+f 1878 1877 3019
+f 1307 1679 1158
+f 1680 1359 1681
+f 1692 1233 1259
+f 1692 1259 1724
+f 1724 19016 1692
+f 19016 1724 1725
+f 1687 1690 1685
+f 1688 1685 1694
+f 1688 19017 1686
+f 1240 1693 1691
+f 1693 1233 1692
+f 1695 1691 1692
+f 1690 1302 1240
+f 1690 1240 1691
+f 1689 1685 1690
+f 1696 1695 1692
+f 1696 1692 19016
+f 1702 19016 1725
+f 1702 1725 1699
+f 1713 1702 1701
+f 1713 1701 1698
+f 1713 1698 1705
+f 1707 1709 19017
+f 19017 1688 1707
+f 1706 1711 1709
+f 1710 1708 1715
+f 1710 1763 1711
+f 1712 1696 1702
+f 1696 19016 1702
+f 1707 1688 1697
+f 1707 1712 1708
+f 1257 1260 1718
+f 1724 1259 1717
+f 1719 782 1721
+f 1716 1718 774
+f 1716 774 782
+f 1729 1728 1723
+f 1729 1722 1730
+f 1721 1730 1722
+f 1726 1729 805
+f 1729 1730 805
+f 1699 1725 1723
+f 1726 813 812
+f 1703 1727 1731
+f 1726 1731 1727
+f 811 1703 1731
+f 811 1731 812
+f 811 1704 1703
+f 1703 1700 1727
+f 1690 1687 1300
+f 1300 1302 1690
+f 1732 19018 1306
+f 1306 1303 1732
+f 19018 1740 1306
+f 19018 1732 1734
+f 19018 1741 1740
+f 1741 19018 1734
+f 1686 1735 1733
+f 1736 1686 19017
+f 1737 1741 1734
+f 1738 1735 1749
+f 1736 1749 1735
+f 1306 1739 1307
+f 1683 1679 1742
+f 1737 1743 1742
+f 1743 1744 1682
+f 19017 1747 1736
+f 1747 19017 1709
+f 1747 1746 1736
+f 1709 1748 1747
+f 1746 1750 1749
+f 1749 1736 1746
+f 1753 1748 1752
+f 1763 1784 1752
+f 1752 1711 1763
+f 1783 1753 1752
+f 1783 1752 1784
+f 1753 1787 1751
+f 1751 1745 1753
+f 1787 1753 1783
+f 1786 1790 1825
+f 1825 1744 1743
+f 1751 1825 1743
+f 1743 1750 1751
+f 1825 1751 1786
+f 1751 1787 1786
+f 1756 1705 1755
+f 1757 1760 1756
+f 1756 1755 1757
+f 1767 1714 1713
+f 1767 1713 1756
+f 1766 1715 1714
+f 1766 1714 1767
+f 1764 1767 1756
+f 1759 1768 1760
+f 19019 1770 1765
+f 1765 1768 19019
+f 19019 1768 1769
+f 1761 1776 1759
+f 4997 1770 19019
+f 4998 4997 19019
+f 19019 1769 4998
+f 1769 1759 1776
+f 1769 1776 4998
+f 1771 822 828
+f 1772 1758 1754
+f 1758 1772 1773
+f 19020 1758 1773
+f 19021 19020 1773
+f 1773 827 19021
+f 19021 827 832
+f 19020 1761 1758
+f 19021 1774 19020
+f 19022 1781 1774
+f 19022 1774 19021
+f 19021 832 19022
+f 1774 1776 1761
+f 1761 19020 1774
+f 1775 1774 1778
+f 1778 1774 1781
+f 5012 1780 1781
+f 1781 19022 5012
+f 836 5012 19022
+f 19022 832 836
+f 4998 1776 1775
+f 4998 1775 1777
+f 1762 1782 1784
+f 1788 1787 1783
+f 1788 1783 1782
+f 1782 19023 1788
+f 19024 1782 1762
+f 1770 19024 1762
+f 19024 1800 19023
+f 19023 1782 19024
+f 1791 1788 19023
+f 1791 19023 1800
+f 1799 1800 19024
+f 4997 1799 19024
+f 19024 1770 4997
+f 1794 1798 1795
+f 1798 1906 1796
+f 1794 19025 1798
+f 1906 1798 19025
+f 1357 1359 19026
+f 1357 19026 1363
+f 1680 1801 19026
+f 19026 1359 1680
+f 1364 1363 19026
+f 1364 19026 1365
+f 1802 1365 19026
+f 1802 19026 1801
+f 1684 1813 1801
+f 1802 1801 1813
+f 1813 1814 1802
+f 1803 1806 1375
+f 1375 1365 1802
+f 1805 1821 1804
+f 1803 1821 1805
+f 1802 1814 1816
+f 1802 1816 1803
+f 1803 1816 1821
+f 1394 1393 1804
+f 1809 1831 1833
+f 1807 1809 1833
+f 1809 1808 1811
+f 1811 1831 1809
+f 1807 1833 1900
+f 1812 1817 1814
+f 1820 1804 1821
+f 1816 1815 1822
+f 1820 1822 1818
+f 1824 1812 1744
+f 1824 1744 1825
+f 1826 1895 1824
+f 1832 1823 1824
+f 1832 1824 1895
+f 1829 1815 1817
+f 1827 1829 1817
+f 1817 1823 1827
+f 1830 1822 1815
+f 1830 1847 1818
+f 1818 1822 1830
+f 1819 1818 1847
+f 1836 1830 1829
+f 1836 1829 1828
+f 1830 1835 1847
+f 1835 1830 1836
+f 1827 1823 1832
+f 1811 1836 1828
+f 1650 1394 1804
+f 1837 1804 1820
+f 1837 1820 1819
+f 1862 1843 1840
+f 1840 1839 1862
+f 1839 1842 1863
+f 1839 1863 1862
+f 1845 1843 1862
+f 1847 1848 1852
+f 1852 1841 1819
+f 1852 1819 1847
+f 1851 1852 1848
+f 1860 1851 1850
+f 1854 1846 1853
+f 1853 1834 1810
+f 1853 1856 1854
+f 1858 1849 1854
+f 1922 1854 1856
+f 1858 1854 1922
+f 1859 1858 1922
+f 1858 1857 1860
+f 1860 1850 1858
+f 1850 1849 1858
+f 1842 1851 1863
+f 1866 1951 1867
+f 1867 1864 1861
+f 1867 1861 1866
+f 1868 1867 1951
+f 1869 1871 1872
+f 1875 1676 1653
+f 1875 1653 1844
+f 1879 1878 1676
+f 1879 1676 1875
+f 1874 1881 1879
+f 1879 1875 1874
+f 1882 1884 1844
+f 1874 1885 1881
+f 1885 1888 1880
+f 1880 1881 1885
+f 1864 1891 1889
+f 1891 19027 1890
+f 1892 1886 1883
+f 1892 1883 1890
+f 1893 1892 1890
+f 1893 1890 19027
+f 1893 1870 1887
+f 19028 19027 1891
+f 19028 1891 1868
+f 1868 1873 19028
+f 1871 1893 19027
+f 1871 19027 19028
+f 1893 1871 1870
+f 19028 1873 1871
+f 1899 1896 1894
+f 1904 1808 1807
+f 1903 1808 1904
+f 1900 1899 1901
+f 1901 1902 1904
+f 1898 1792 1796
+f 1913 1899 1898
+f 1913 1898 1905
+f 1908 1796 1906
+f 1911 1905 1796
+f 1911 1796 1908
+f 1910 1911 1908
+f 1909 1906 19025
+f 1913 1915 1901
+f 1914 1917 1902
+f 1914 1902 1901
+f 1913 5335 1918
+f 1918 1915 1913
+f 5335 1913 1912
+f 1920 1918 5335
+f 1919 1914 1918
+f 1808 1921 1855
+f 1923 1856 1855
+f 1923 1855 1921
+f 1903 1934 1921
+f 1923 1921 1934
+f 1923 1924 1922
+f 1925 1924 1923
+f 1923 1928 1926
+f 1928 1923 1934
+f 1923 1926 1925
+f 1857 1859 1925
+f 1857 1925 1929
+f 1902 1931 1934
+f 1934 1903 1902
+f 1931 1933 1928
+f 1951 1866 1936
+f 1936 1935 1955
+f 1955 1954 1936
+f 1936 1954 1951
+f 1939 1925 1927
+f 19029 1929 1925
+f 1925 1939 19029
+f 1939 1927 1933
+f 1947 1938 1937
+f 1932 1941 1937
+f 1937 1933 1932
+f 1941 1947 1937
+f 19029 1939 1938
+f 1938 1940 19029
+f 1929 19029 1940
+f 1946 1940 1938
+f 1938 1947 1946
+f 1985 1935 1940
+f 1985 1940 1946
+f 1985 1946 1949
+f 1943 1947 1941
+f 1945 1943 1942
+f 1945 3213 1948
+f 1950 1951 1956
+f 1956 19030 1950
+f 19030 1967 1952
+f 1952 1950 19030
+f 1952 1967 1872
+f 1872 1873 1952
+f 3155 1872 1967
+f 1967 1962 3155
+f 1955 1935 1985
+f 1954 1960 1956
+f 1956 1960 19030
+f 1959 1967 1960
+f 19030 1960 1967
+f 1954 1957 1960
+f 1957 1954 1953
+f 1966 1963 1964
+f 1959 1963 1967
+f 1959 1965 1963
+f 1902 1917 1968
+f 1902 1968 1931
+f 1971 1968 1917
+f 1971 1917 1916
+f 1969 1968 1970
+f 1972 1981 1970
+f 1970 1971 1972
+f 1949 1979 1985
+f 1974 1944 1942
+f 1976 1974 1975
+f 1948 3213 1980
+f 1981 1983 1975
+f 1976 1975 1983
+f 1985 1984 1955
+f 1984 1986 1953
+f 1979 1990 1984
+f 1989 1958 1986
+f 1990 1989 1986
+f 1986 1984 1990
+f 1958 1957 1986
+f 1990 1979 1978
+f 1988 1990 1978
+f 1988 1965 1958
+f 1988 1958 1989
+f 1980 1966 1987
+f 1987 1978 1980
+f 1964 1987 1966
+f 1993 2005 1991
+f 1997 1999 1996
+f 1998 1992 1997
+f 1991 2005 2000
+f 2001 87 2011
+f 88 2001 97
+f 2011 866 2001
+f 97 2001 2002
+f 2005 1993 63
+f 70 2005 63
+f 2004 97 2003
+f 2002 841 840
+f 2009 58 2010
+f 2007 2010 1992
+f 18990 56 2009
+f 56 58 2009
+f 1164 152 18990
+f 56 18990 152
+f 18991 2008 1998
+f 63 1993 66
+f 1173 1159 1174
+f 1995 1996 843
+f 843 1996 839
+f 842 1995 843
+f 845 1181 1175
+f 842 845 1175
+f 91 2011 87
+f 867 866 2011
+f 216 2012 2013
+f 1008 1006 2012
+f 2016 1015 1008
+f 2016 1014 1015
+f 2016 1008 2015
+f 2016 2015 2017
+f 1014 2017 1016
+f 1017 1016 2017
+f 2014 2018 2019
+f 2018 232 2028
+f 2018 2025 2019
+f 2028 2025 2018
+f 2021 2017 2015
+f 1017 2017 2020
+f 1036 2020 2048
+f 2022 2048 2020
+f 2021 2019 19031
+f 2023 19031 2019
+f 2019 2025 2023
+f 2021 19031 2023
+f 2022 2023 2027
+f 237 2030 2029
+f 2036 2025 2028
+f 2028 233 2029
+f 2028 2029 2036
+f 2032 2036 2029
+f 237 238 2030
+f 2033 2031 2030
+f 2024 2025 2036
+f 2026 2037 19032
+f 2037 2032 2038
+f 19032 2037 2042
+f 19032 2042 2062
+f 2062 2042 2045
+f 2043 2042 2040
+f 2043 2040 2041
+f 2045 2044 2047
+f 1047 2049 2054
+f 2049 2050 2054
+f 2050 2027 2051
+f 2053 2051 2052
+f 2057 2053 2052
+f 19033 1046 2054
+f 19033 2054 2055
+f 19033 2055 2073
+f 2050 2053 2055
+f 2055 2053 2056
+f 2056 2053 2057
+f 2056 2058 2060
+f 2059 2073 2055
+f 2052 2026 19032
+f 2062 2052 19032
+f 2062 2057 2052
+f 2062 2058 2057
+f 2061 2063 12717
+f 2061 2064 2058
+f 2064 2061 12716
+f 2078 2060 2064
+f 2078 2064 12716
+f 12716 2061 12717
+f 18963 2035 238
+f 2039 2035 18963
+f 2039 18963 2065
+f 310 2065 18963
+f 18963 311 310
+f 2065 2041 2039
+f 2065 2066 2069
+f 2069 2066 2068
+f 2066 310 317
+f 317 316 2067
+f 2044 2069 19034
+f 19034 2069 2070
+f 19034 2046 2044
+f 2046 19034 12732
+f 2070 12732 19034
+f 12732 2047 2046
+f 2071 1058 1046
+f 1046 19033 2071
+f 19033 2073 2071
+f 2074 2072 2075
+f 2074 2075 2076
+f 2081 2076 2075
+f 1067 1065 19035
+f 1065 2074 19035
+f 2077 19035 2074
+f 1067 19035 1069
+f 1069 19035 2086
+f 2077 2086 19035
+f 2077 2076 19036
+f 19036 2076 2081
+f 2087 2086 2077
+f 2077 19036 2087
+f 2087 19036 12772
+f 2079 2075 2060
+f 2080 2082 2079
+f 2082 19036 2081
+f 1069 2086 2083
+f 2083 2086 2085
+f 2088 2085 2086
+f 2083 1079 1077
+f 2084 1080 1079
+f 1079 2083 2084
+f 2084 2090 2089
+f 1403 440 381
+f 2092 440 2091
+f 2091 2093 2092
+f 1413 2099 1412
+f 1413 1427 2099
+f 2095 442 441
+f 2092 2095 441
+f 2094 2100 2096
+f 2096 2095 2094
+f 19037 2097 2096
+f 19037 2096 2100
+f 1412 2098 2094
+f 2094 2093 1412
+f 2098 2107 2100
+f 2107 2111 19037
+f 19037 2100 2107
+f 2097 2101 462
+f 462 451 2097
+f 2101 2097 19037
+f 2128 464 460
+f 2128 460 2101
+f 2113 2101 19037
+f 2113 19037 2111
+f 2130 2128 2101
+f 2130 2101 2113
+f 2105 1536 2103
+f 2103 2102 2105
+f 1539 1536 2105
+f 1536 1538 1569
+f 2109 2106 2098
+f 2109 2098 2099
+f 1561 2109 2099
+f 1561 1562 2109
+f 2174 2108 2109
+f 2112 2174 2109
+f 2109 1562 1558
+f 2173 2110 2108
+f 2173 2108 2174
+f 2110 19038 2113
+f 19038 19039 19040
+f 19040 2130 2113
+f 19038 19040 2113
+f 2173 2117 2116
+f 2116 19038 2110
+f 2116 2110 2173
+f 19038 2116 2115
+f 19038 2115 19039
+f 2114 2116 2118
+f 2118 2165 2114
+f 2112 1574 1670
+f 2165 2118 2120
+f 2120 2121 2125
+f 2122 19041 2126
+f 2126 2123 2122
+f 2121 2123 2126
+f 2127 512 464
+f 2127 464 2128
+f 2131 514 512
+f 2131 512 2127
+f 2129 2152 2127
+f 19042 2133 2131
+f 2131 2127 19042
+f 2127 2152 19042
+f 2135 2138 2137
+f 2144 2142 2141
+f 2142 2146 2145
+f 2146 2150 2147
+f 2147 2145 2146
+f 2147 2138 2145
+f 2139 2138 2147
+f 2150 2172 2148
+f 2150 2148 2147
+f 2149 2139 2147
+f 2148 2197 2149
+f 19040 2153 2129
+f 2129 2130 19040
+f 2153 19040 19039
+f 19039 2151 2153
+f 2156 2151 19039
+f 2151 2155 19042
+f 19042 2152 2151
+f 2157 2133 19042
+f 2157 19042 2155
+f 2155 2151 2156
+f 2159 19039 2115
+f 2159 2115 2114
+f 2156 19039 2159
+f 2159 2114 2165
+f 2156 2158 2154
+f 2157 2161 2133
+f 2160 2167 2170
+f 19041 2162 2164
+f 19041 2167 2126
+f 19041 2164 2167
+f 2170 2167 2164
+f 2166 2158 2159
+f 2166 2125 2167
+f 2120 2166 2159
+f 2168 2154 2158
+f 2158 2166 2168
+f 2168 2160 2154
+f 2160 2168 2167
+f 2161 2169 2143
+f 2143 2133 2161
+f 2169 2160 2170
+f 2172 2164 2163
+f 2173 2176 19043
+f 2117 2173 19043
+f 1670 1669 2185
+f 1670 2185 2177
+f 2184 2178 2177
+f 2186 1669 1671
+f 2184 2185 2186
+f 2184 2187 2182
+f 2182 2178 2184
+f 2183 2182 2187
+f 2189 19043 2176
+f 2189 2176 2181
+f 2119 2117 19043
+f 2119 19043 2189
+f 2188 2121 2119
+f 2119 2189 2188
+f 2123 2188 2183
+f 2183 2124 2123
+f 2121 2188 2123
+f 2190 699 2137
+f 2190 2191 703
+f 703 699 2190
+f 2139 19044 2190
+f 2190 19044 2191
+f 2196 2197 3401
+f 3401 19044 2196
+f 19044 2139 2196
+f 3402 2191 19044
+f 3402 19044 3401
+f 2191 705 703
+f 2192 2194 705
+f 2192 2191 3402
+f 3402 2193 2192
+f 2139 2149 2195
+f 2197 2196 2195
+f 705 2194 2198
+f 734 19045 12963
+f 733 734 12963
+f 12963 2200 733
+f 734 2203 2202
+f 2202 19045 734
+f 12964 12963 19045
+f 12964 19045 2202
+f 758 12964 2202
+f 758 2202 756
+f 2210 19046 17
+f 19047 2210 2213
+f 19047 19046 2210
+f 19046 19 17
+f 19046 2950 19
+f 21 19 2950
+f 2950 19046 19047
+f 2220 19048 507
+f 505 2219 508
+f 505 508 503
+f 2219 506 508
+f 2218 506 2219
+f 511 2217 510
+f 2227 2322 2224
+f 2229 2221 2228
+f 2222 2221 2229
+f 2226 2227 2224
+f 19049 2232 18974
+f 2233 623 2231
+f 2233 624 623
+f 678 507 19048
+f 2235 19048 2220
+f 19048 2234 678
+f 2235 2234 19048
+f 511 684 2220
+f 2235 684 687
+f 687 688 2236
+f 2238 694 696
+f 2236 2242 2238
+f 2238 696 2236
+f 2243 2240 2239
+f 18974 694 2237
+f 2237 19049 18974
+f 2245 19049 2237
+f 2245 2237 2241
+f 2244 19049 2245
+f 2246 2245 2241
+f 2242 2236 688
+f 2247 2249 2248
+f 713 2251 714
+f 2250 711 714
+f 2256 2259 2260
+f 2254 2261 2260
+f 2259 2262 2260
+f 2259 2279 2262
+f 2244 2263 2232
+f 2232 19049 2244
+f 2263 2244 2246
+f 2248 2265 2263
+f 2264 720 2233
+f 2266 711 2250
+f 2250 19050 2266
+f 19050 2267 2266
+f 2252 2253 19050
+f 19050 2250 2252
+f 2268 2267 19050
+f 2268 19050 2253
+f 2273 2267 2269
+f 2254 2262 2269
+f 2276 2269 2262
+f 2270 2272 2274
+f 757 755 2274
+f 2274 2272 757
+f 2281 2304 2282
+f 2262 2279 2282
+f 2278 2277 2282
+f 2278 2282 2304
+f 2258 2255 2222
+f 2286 2280 2284
+f 2225 2395 2290
+f 2284 2222 2229
+f 2286 2284 2229
+f 19051 2287 2286
+f 2289 19051 2286
+f 19051 2294 2287
+f 2294 2291 2292
+f 19051 2289 2291
+f 2291 2294 19051
+f 2293 2292 2297
+f 2297 2299 2293
+f 2297 2296 2299
+f 2299 2298 2306
+f 2300 13267 2296
+f 2298 2296 13267
+f 2280 2288 2281
+f 2302 2281 2288
+f 2304 2281 2302
+f 2302 2301 2299
+f 2301 2287 2294
+f 2331 2312 2311
+f 2310 2307 2311
+f 2331 2311 3412
+f 2315 2310 2313
+f 2307 2310 2315
+f 2316 2327 2317
+f 2224 2322 2320
+f 2323 2322 2308
+f 2225 2316 2395
+f 2327 2316 2225
+f 2225 2324 2327
+f 2315 2325 2308
+f 2321 2317 2319
+f 2325 2326 2321
+f 2332 2539 2343
+f 2329 2332 2312
+f 2330 2329 2331
+f 2341 2313 2314
+f 2314 2312 2333
+f 2333 2343 2314
+f 2334 2340 2336
+f 2337 2329 2328
+f 2339 2214 2216
+f 2334 2338 2339
+f 2333 2332 2343
+f 2335 2539 2332
+f 2332 2334 2335
+f 2344 2342 2341
+f 2341 2314 2343
+f 2342 2344 2348
+f 2407 2346 2345
+f 2346 2317 2342
+f 2318 2346 2407
+f 2348 2346 2342
+f 2343 2349 2344
+f 2539 2349 2343
+f 2349 2351 2344
+f 2348 2344 2351
+f 2539 2350 2349
+f 2347 2353 2345
+f 2353 2347 2352
+f 2369 2365 2364
+f 2365 2368 2370
+f 2363 2373 2357
+f 2357 2356 2363
+f 2373 2361 2357
+f 2359 2361 2374
+f 2379 2366 2380
+f 2630 2380 2371
+f 2630 2384 2380
+f 2384 2377 2380
+f 2396 2385 2292
+f 2385 2396 2388
+f 2393 2389 2387
+f 2316 2318 2392
+f 2396 2316 2388
+f 2387 2388 2392
+f 2390 2387 2392
+f 2391 2394 2387
+f 2400 2394 2391
+f 2400 2391 2372
+f 2290 2396 2292
+f 2386 2295 2297
+f 2297 2292 2386
+f 2393 2397 2386
+f 2397 2401 2398
+f 2401 2397 2402
+f 2295 2397 2398
+f 2398 2300 2295
+f 2393 2400 2402
+f 2393 2394 2400
+f 2400 2356 2402
+f 2402 2397 2393
+f 2402 2356 2358
+f 2345 2403 2407
+f 2404 2407 2403
+f 2406 2369 2405
+f 2392 2407 2404
+f 2369 2364 2405
+f 2364 2363 2372
+f 2403 2406 2390
+f 2403 2354 2406
+f 2408 2406 2354
+f 2410 2354 2353
+f 2700 2408 2410
+f 2408 2700 2367
+f 2410 2408 2354
+f 2408 2367 2369
+f 2215 19052 2411
+f 2411 19053 19054
+f 2411 19052 19053
+f 2413 2411 19054
+f 19055 19054 19053
+f 2531 2413 19054
+f 2531 19054 19055
+f 2417 2449 2418
+f 2427 2420 2415
+f 2427 2415 2419
+f 2416 2415 2420
+f 2426 2420 2423
+f 2418 2421 2427
+f 2418 2427 2419
+f 2430 2755 2428
+f 19056 2428 2755
+f 2429 19057 2482
+f 19058 19057 2428
+f 19057 2429 2428
+f 2433 2439 19058
+f 2433 2432 2439
+f 19057 19058 2441
+f 2441 2440 19057
+f 19057 2440 2482
+f 2439 2441 19058
+f 19056 2433 19058
+f 19056 2431 2433
+f 19056 2766 2431
+f 19058 2428 19056
+f 2454 2431 2766
+f 2414 2509 2482
+f 2414 2440 2436
+f 2509 2416 2426
+f 2509 2414 2416
+f 2443 2438 2432
+f 2482 2440 2414
+f 2438 2436 2441
+f 2441 2439 2438
+f 2445 2448 2447
+f 2417 2445 2449
+f 2448 2445 2450
+f 2450 2461 2448
+f 2415 2434 2419
+f 2434 2417 2419
+f 2437 2442 2434
+f 2434 2442 2417
+f 2451 2452 2453
+f 2454 2456 2453
+f 2443 2432 2452
+f 2452 2432 2431
+f 2454 2452 2431
+f 2450 2444 2451
+f 2455 19059 2458
+f 2456 2784 2455
+f 19059 2455 2784
+f 19059 2787 2459
+f 2459 2458 19059
+f 2468 2465 2481
+f 2424 7684 2423
+f 2466 2423 7684
+f 2463 2466 2464
+f 2423 2468 2426
+f 2462 2469 2463
+f 2471 2469 2462
+f 2475 2474 7686
+f 2514 2475 7686
+f 2495 2491 2478
+f 2476 2478 2491
+f 2495 2478 2483
+f 2485 2495 2483
+f 2490 2479 2491
+f 2491 2495 2489
+f 2430 2494 2493
+f 2494 2490 2492
+f 2492 2490 2647
+f 2497 2647 2490
+f 2429 2479 2494
+f 2490 2494 2479
+f 2490 2489 2497
+f 2499 2500 2854
+f 19060 2500 2501
+f 2507 19060 2501
+f 2500 19060 2854
+f 2482 2479 2429
+f 2476 2491 2479
+f 2495 2485 2496
+f 2487 2500 2496
+f 2496 2485 2487
+f 2500 2487 2501
+f 2502 2506 2501
+f 2502 2505 2880
+f 2502 2864 2506
+f 2880 2864 2502
+f 2509 2468 2480
+f 2465 2484 2477
+f 2483 2470 2510
+f 2426 2468 2509
+f 2481 2465 2477
+f 2513 2510 2472
+f 2513 2473 2511
+f 2503 2510 2513
+f 2503 2513 2512
+f 2512 2504 2503
+f 2516 2475 2515
+f 2880 2505 19061
+f 2519 19061 2505
+f 19062 19061 2519
+f 2519 2517 2882
+f 2518 7747 2516
+f 2517 2516 7747
+f 2882 2517 7747
+f 2519 2882 19062
+f 2883 2882 7747
+f 7746 2883 7747
+f 2758 2652 2654
+f 2521 2758 2654
+f 2521 2654 2522
+f 2520 2522 2523
+f 2524 2523 2686
+f 2591 2524 2686
+f 2591 2686 2589
+f 2524 19063 2520
+f 2773 2520 19063
+f 19063 2524 2591
+f 2595 2773 19063
+f 2538 2550 2539
+f 2412 2527 2525
+f 2527 2529 2526
+f 2529 19064 2526
+f 2529 2534 19064
+f 2413 2529 2527
+f 2527 2412 2413
+f 2530 2533 2528
+f 2530 2528 2413
+f 2533 2534 2528
+f 2539 2335 2336
+f 2540 2539 2336
+f 2336 2526 2540
+f 2540 2526 19064
+f 2542 2538 2540
+f 19064 2543 2540
+f 2543 19064 2534
+f 2545 2543 2534
+f 2540 2543 2542
+f 2543 2545 2544
+f 2547 2544 2545
+f 2535 2545 2534
+f 2535 2546 2545
+f 2537 2546 2535
+f 2546 2549 2547
+f 2542 2552 2538
+f 2556 2551 2552
+f 2541 2559 2552
+f 2553 2355 2352
+f 2409 2353 2355
+f 2562 2554 2555
+f 2559 2557 2552
+f 2557 2559 2558
+f 2555 2557 2563
+f 2562 2555 2563
+f 2558 2563 2557
+f 2558 2565 2564
+f 19065 2541 2544
+f 2559 2541 19065
+f 2570 19065 2544
+f 2570 2544 2547
+f 2568 2559 19065
+f 2568 19065 2570
+f 2569 2568 2570
+f 2573 2549 2548
+f 2571 2549 2573
+f 2565 2560 2575
+f 2565 2578 2566
+f 2580 2579 2581
+f 2592 2596 2590
+f 2590 2589 2592
+f 2590 2593 19063
+f 19063 2591 2590
+f 2595 19063 2593
+f 2598 2593 2590
+f 2598 2590 2596
+f 2594 2593 2598
+f 2587 2597 2592
+f 2601 2596 2597
+f 2600 2598 2596
+f 2600 2599 2598
+f 2603 2604 2578
+f 2582 2578 2604
+f 2606 2603 2580
+f 3868 2604 2603
+f 3868 2603 2606
+f 3868 2606 3865
+f 3870 2602 2604
+f 2605 2602 3870
+f 2610 2605 3870
+f 3870 2604 3868
+f 19066 2597 2588
+f 19066 2588 2605
+f 19066 19067 2601
+f 2601 2597 19066
+f 2608 19066 2605
+f 2608 2607 19067
+f 19067 19066 2608
+f 2600 2601 19067
+f 2607 2614 2600
+f 2600 19067 2607
+f 2613 2599 2600
+f 2613 2600 2614
+f 2609 2608 2605
+f 2609 2605 2610
+f 2609 3881 2607
+f 3881 2609 2611
+f 2614 2607 3881
+f 2615 2614 3881
+f 2615 2824 2612
+f 2368 2367 2616
+f 2617 2370 2368
+f 2716 2706 2627
+f 2716 2627 2629
+f 2638 2631 2622
+f 2632 2631 2638
+f 2633 2382 2381
+f 2642 2636 2637
+f 13375 2636 2642
+f 2633 2634 2637
+f 2634 2632 2638
+f 2640 2634 2638
+f 2641 2640 2643
+f 2644 2642 2641
+f 2657 2648 2647
+f 2684 2651 2650
+f 2650 2649 19068
+f 2649 2657 2659
+f 2653 2646 2651
+f 2654 2653 2684
+f 2684 2653 2651
+f 2657 2649 2648
+f 2659 2658 2660
+f 2661 2656 2655
+f 2661 2655 2688
+f 2662 2688 2655
+f 2665 2664 2669
+f 2670 2673 2687
+f 2667 2673 2670
+f 2668 2667 2671
+f 2674 2669 2668
+f 2674 2668 2671
+f 2667 2668 2664
+f 2629 2628 2623
+f 2679 2629 2677
+f 2679 2716 2629
+f 2717 2716 2679
+f 2717 2679 2680
+f 2676 2665 2669
+f 2683 2684 2650
+f 2649 2659 19068
+f 2671 2650 19068
+f 19068 2659 2674
+f 2674 2671 19068
+f 2522 2684 2683
+f 2683 2523 2522
+f 2686 2523 2682
+f 2661 2675 2660
+f 2689 2681 2688
+f 2696 2662 2663
+f 2693 2680 2681
+f 2691 2717 2680
+f 2690 2680 2693
+f 2693 2681 2689
+f 2693 2689 2694
+f 2692 2695 2698
+f 2695 2696 2868
+f 2698 2695 19069
+f 19069 2695 2868
+f 19069 2868 2869
+f 2690 2692 2697
+f 2692 2698 2697
+f 2699 2698 19069
+f 19069 2869 2871
+f 19069 2871 2699
+f 2700 2410 2409
+f 2616 2367 2700
+f 2702 2700 2409
+f 2702 2409 2562
+f 2701 2700 2702
+f 2616 2701 2620
+f 2705 2702 2561
+f 2624 2701 2702
+f 2704 2702 2705
+f 2702 2704 2624
+f 2620 2701 2624
+f 2561 2703 2705
+f 2705 2703 2666
+f 2620 2624 2621
+f 2627 2639 2622
+f 2639 2640 2638
+f 2710 2706 2716
+f 2639 2706 2707
+f 2707 2706 2710
+f 2644 2643 2709
+f 2713 2644 2709
+f 2709 2711 2713
+f 2712 2714 13465
+f 2583 2672 2703
+f 2583 2585 2672
+f 2625 2666 2664
+f 2687 2673 2585
+f 2585 2586 2687
+f 2583 2582 2585
+f 2715 2718 2710
+f 2717 2691 2715
+f 2691 2718 2715
+f 2708 2710 2718
+f 2720 2708 2718
+f 2720 2718 2722
+f 2719 2722 2718
+f 2691 2690 2719
+f 2719 2690 2697
+f 2719 2697 2724
+f 2724 2722 2719
+f 2709 2708 2721
+f 2711 2709 2721
+f 2723 19070 2721
+f 2721 19070 2734
+f 2734 2711 2721
+f 2714 2711 2734
+f 19070 2723 2726
+f 2734 19070 2726
+f 2728 2697 2699
+f 2730 2728 2699
+f 2727 2729 2732
+f 13467 2714 2733
+f 13467 2733 2736
+f 2731 2738 2725
+f 2735 2725 2740
+f 2738 2740 2725
+f 2740 2738 2741
+f 2739 2741 2738
+f 2739 2746 2741
+f 2749 2751 2430
+f 2751 2749 2748
+f 2753 2754 19056
+f 2751 2753 2755
+f 2755 2753 19056
+f 2750 2753 2751
+f 2752 2750 2757
+f 2652 2756 2748
+f 2748 2747 2652
+f 2750 2748 2756
+f 2760 2759 2752
+f 2765 2759 2760
+f 2765 2775 2763
+f 2763 2775 2764
+f 2766 19056 2754
+f 2759 2766 2754
+f 2759 2762 2766
+f 2767 2771 2768
+f 2761 2757 19071
+f 2770 19071 2520
+f 19071 2770 2761
+f 2521 19071 2757
+f 19071 2521 2520
+f 2773 2770 2520
+f 2773 2768 2770
+f 2771 2770 2768
+f 2769 2768 2772
+f 2771 2776 2765
+f 2776 19072 2774
+f 2769 2809 2767
+f 2811 2777 2767
+f 2811 2767 2809
+f 19072 2776 2777
+f 2811 2813 2777
+f 2764 19073 2454
+f 2782 2456 19073
+f 2454 19073 2456
+f 2782 2783 2781
+f 19074 19073 2764
+f 2794 19075 2782
+f 2782 19073 19074
+f 2782 19075 2783
+f 2784 2456 2781
+f 2784 2785 19059
+f 2787 19059 2785
+f 2785 2784 2783
+f 2785 2790 2786
+f 19075 2788 2785
+f 2785 2783 19075
+f 2790 2785 2788
+f 2794 2791 2788
+f 2788 19075 2794
+f 2792 19074 19076
+f 19074 2764 2774
+f 19076 19074 2774
+f 19072 19076 2774
+f 2792 2782 19074
+f 2794 2782 2792
+f 2845 2846 19076
+f 19072 2845 19076
+f 2845 19072 2777
+f 2792 19076 2846
+f 2797 2792 2846
+f 2796 2795 2792
+f 2794 2798 2791
+f 2799 2791 2798
+f 2801 2595 2802
+f 2594 2802 2595
+f 2803 2802 2594
+f 2804 2769 2772
+f 2803 2807 2801
+f 2805 2801 2807
+f 2817 2806 2803
+f 2817 2594 2599
+f 2803 2594 2817
+f 2808 2805 2807
+f 2808 19077 2810
+f 2815 2810 19077
+f 19078 2849 2814
+f 2814 2812 19078
+f 19078 2812 2815
+f 2806 2817 2816
+f 2816 2599 2613
+f 2821 2806 2816
+f 2820 2808 2806
+f 2824 2823 2818
+f 2819 2822 2821
+f 2815 19077 2827
+f 2820 2827 19077
+f 19077 2808 2820
+f 2827 2826 2815
+f 19078 2832 2849
+f 2832 19078 2815
+f 2832 2815 2826
+f 2828 2827 2820
+f 2828 2820 2825
+f 2829 3951 2831
+f 2831 2826 2829
+f 2852 2832 2831
+f 2852 2831 3951
+f 2833 2835 2838
+f 2833 19079 2836
+f 2836 2834 2833
+f 8071 2836 19079
+f 2839 2838 2840
+f 2837 19079 2833
+f 19079 8069 8071
+f 19080 19079 2837
+f 19080 2837 2839
+f 19079 19080 8069
+f 3968 19080 2839
+f 3968 3981 19080
+f 19080 3981 8069
+f 2845 2777 2813
+f 2796 2797 2847
+f 2847 2838 2835
+f 2796 2834 2800
+f 2796 2835 2834
+f 2840 2850 2851
+f 2832 2841 2851
+f 2749 2493 2853
+f 2853 2493 2492
+f 2493 2749 2430
+f 2645 2747 2853
+f 2492 2645 2853
+f 2645 2652 2747
+f 2658 2657 2497
+f 2655 2498 2499
+f 2663 2655 2854
+f 19060 2663 2854
+f 2663 19060 2856
+f 2856 19060 2507
+f 2508 2856 2507
+f 2860 2856 2508
+f 2663 2856 2855
+f 2663 2855 2696
+f 2696 2855 2858
+f 2857 2856 2860
+f 2859 2862 2870
+f 2871 2870 2875
+f 2871 2875 2872
+f 2872 2875 2873
+f 2896 2871 2872
+f 2876 2870 2862
+f 2862 2866 2876
+f 2875 2870 2876
+f 2876 2866 2867
+f 2876 2878 2877
+f 2878 2890 2877
+f 2890 2879 2877
+f 2864 2881 2865
+f 19061 2881 2880
+f 2881 2888 2865
+f 2881 19061 2885
+f 19061 2886 2885
+f 2878 2867 2865
+f 2865 2888 2878
+f 2885 2888 2881
+f 19062 2882 2886
+f 2886 19061 19062
+f 2886 2882 2884
+f 2884 8130 2885
+f 2885 8130 2893
+f 2887 2878 2888
+f 2878 2887 2890
+f 2891 2887 2892
+f 2699 2871 2730
+f 2896 2730 2871
+f 2895 2729 2730
+f 2732 2729 2895
+f 2897 2903 2899
+f 2897 2874 2879
+f 2897 2879 2900
+f 19081 2900 2890
+f 2900 19081 2901
+f 2901 19081 2904
+f 2897 2900 2903
+f 2900 2901 2903
+f 2732 2898 2737
+f 2744 2737 2898
+f 2899 2903 2905
+f 19082 2745 2744
+f 19082 2744 2906
+f 13644 2745 19082
+f 2906 2744 2905
+f 13644 19082 2906
+f 2906 2909 13644
+f 19083 2905 2903
+f 19083 2903 2902
+f 2905 19083 2906
+f 2906 19083 2907
+f 2902 2907 19083
+f 2910 2904 2890
+f 1447 2911 1448
+f 2914 2911 2912
+f 2913 2914 2926
+f 1498 2926 2914
+f 2915 2208 1448
+f 2207 2208 2915
+f 2918 2916 2911
+f 2209 1457 1456
+f 2920 1457 2209
+f 2923 2922 2919
+f 2923 2924 2938
+f 2918 2913 2926
+f 2925 2918 2927
+f 2925 2927 2932
+f 2929 2924 2919
+f 19010 2932 2927
+f 1511 19010 2927
+f 2962 2931 2930
+f 19084 2962 2930
+f 2930 2932 19084
+f 2932 19010 19084
+f 1512 19084 19010
+f 1640 2962 19084
+f 1640 19084 1512
+f 1464 2933 1513
+f 2921 2212 2933
+f 2921 2935 2934
+f 2923 2935 2921
+f 2212 2210 2933
+f 2935 2211 2934
+f 2211 2936 2937
+f 2938 2935 2923
+f 2940 2947 2937
+f 19085 2929 2931
+f 2943 2942 2929
+f 2943 2929 19085
+f 2943 2944 2941
+f 2939 2924 2929
+f 2940 2941 2947
+f 2946 19047 2213
+f 2946 2213 2937
+f 2949 19047 2946
+f 19047 2952 2950
+f 1528 21 2951
+f 2952 19047 2949
+f 2954 2956 2948
+f 2958 2956 2955
+f 2945 2955 2954
+f 1541 2104 2953
+f 2960 2943 19085
+f 2961 2960 19085
+f 2961 19085 2931
+f 2931 2962 2961
+f 1662 1661 2960
+f 2960 2961 1662
+f 1661 1579 2959
+f 2964 2958 2955
+f 2963 2964 2955
+f 1577 2963 2959
+f 2963 1577 1576
+f 1579 1577 2959
+f 2970 3364 19086
+f 3364 2970 2969
+f 2965 3072 3071
+f 3071 2966 2965
+f 2968 2970 3051
+f 2969 2968 2967
+f 3051 3072 2968
+f 2965 2968 3072
+f 2971 2980 2974
+f 2977 2982 2975
+f 3035 2979 2978
+f 2989 3017 3002
+f 3002 3008 3005
+f 3002 3017 3008
+f 2984 2990 1578
+f 2983 2995 2993
+f 2983 2993 2990
+f 2990 2984 2983
+f 3398 1671 2997
+f 3398 2997 2996
+f 3398 2996 2998
+f 3399 2998 3000
+f 3010 3399 3011
+f 3011 3399 3000
+f 2999 3011 3000
+f 2983 2986 2995
+f 3001 2995 2986
+f 2987 2989 3001
+f 3003 2995 3001
+f 3004 2999 3003
+f 3001 2989 3002
+f 3007 19087 3005
+f 3043 19087 3007
+f 3043 3007 3044
+f 3029 3007 3006
+f 3029 3044 3007
+f 3029 3030 3044
+f 3011 2999 3004
+f 3009 3011 3005
+f 3005 19087 3009
+f 19088 3364 3009
+f 19086 3364 19088
+f 3009 19087 19088
+f 3004 3005 3011
+f 19087 3043 19088
+f 2988 1674 3012
+f 3013 2988 3012
+f 3012 3015 3013
+f 3017 2989 3013
+f 3008 3017 3028
+f 3017 3016 3028
+f 3016 3027 3028
+f 3021 3018 3019
+f 3021 3019 1877
+f 3027 3023 3168
+f 3020 3023 3016
+f 3016 3015 3020
+f 3027 3016 3023
+f 3028 3006 3008
+f 2972 2974 3030
+f 2974 3057 3030
+f 3027 3031 3024
+f 2976 3025 3031
+f 3031 3025 3024
+f 3032 3031 3168
+f 3168 3031 3027
+f 3056 2974 2980
+f 2980 3033 3056
+f 3033 19089 3056
+f 19089 3033 3034
+f 3059 19089 3034
+f 3034 3178 3059
+f 3038 3059 3178
+f 3038 3037 3053
+f 3036 3041 3037
+f 3041 3040 3037
+f 3046 3044 3030
+f 3042 3044 3046
+f 3047 3050 3042
+f 3050 19086 19088
+f 2970 19086 3050
+f 3050 3049 2970
+f 3050 19088 3043
+f 3043 3042 3050
+f 3050 3047 3048
+f 3046 3030 3057
+f 3058 3056 19089
+f 3059 3053 3045
+f 3059 3058 19089
+f 3038 3053 3059
+f 3037 3054 3053
+f 3069 3068 3105
+f 3061 3072 3068
+f 3064 3061 3068
+f 3068 3070 3064
+f 3075 3073 3070
+f 3074 3069 3107
+f 3065 3064 3070
+f 3087 2328 3076
+f 2330 3076 2328
+f 3076 3079 3087
+f 3079 3076 3073
+f 3080 3084 3078
+f 3077 3081 3078
+f 3083 3088 3084
+f 3089 3088 3083
+f 2215 2214 3088
+f 3078 3087 3079
+f 3078 3084 3088
+f 3091 3090 3075
+f 3085 3093 3086
+f 3092 3413 3093
+f 3080 3093 3085
+f 3077 3094 3092
+f 3092 3081 3077
+f 3096 3098 3106
+f 3098 3109 3106
+f 3097 3040 3095
+f 3098 3096 3095
+f 3101 3103 3109
+f 3098 3101 3109
+f 3100 3101 3099
+f 3102 3124 3103
+f 3052 3068 3051
+f 3105 3052 3104
+f 3107 3105 3104
+f 3104 3055 3107
+f 3105 3107 3069
+f 3107 3106 3074
+f 3106 3055 3096
+f 3055 3097 3096
+f 3111 3125 3114
+f 3114 3116 3111
+f 3114 3125 3112
+f 3116 3091 3108
+f 3094 3115 3092
+f 3116 3114 3115
+f 3092 3115 3414
+f 3115 3117 3414
+f 3108 3111 3116
+f 3126 3128 3130
+f 3132 3135 3219
+f 3137 3134 3133
+f 3246 3247 3132
+f 3132 3219 3246
+f 3136 3132 3247
+f 3136 3249 3137
+f 19090 3249 3136
+f 2982 2977 3032
+f 3141 2981 3032
+f 3144 3150 3143
+f 3150 3144 3145
+f 3144 2978 2981
+f 3141 3139 3142
+f 3149 3145 3151
+f 3145 3142 3148
+f 3138 3152 1870
+f 3138 1870 1869
+f 3157 3138 1869
+f 3155 1869 1872
+f 3164 3154 3153
+f 3153 3138 3157
+f 3156 3153 3157
+f 3154 3147 3139
+f 3147 3163 3151
+f 3198 3149 3151
+f 3198 3151 3163
+f 3160 3163 3162
+f 3159 3198 3163
+f 3167 3170 3169
+f 3169 3022 3167
+f 3022 3168 3023
+f 3022 3169 3168
+f 3152 3170 1887
+f 3146 3171 3140
+f 3141 3032 3168
+f 3168 3146 3141
+f 3035 3175 3034
+f 3181 3176 3150
+f 3181 3150 3149
+f 3183 3191 3182
+f 3191 3174 3182
+f 3173 3182 3174
+f 3173 3036 3179
+f 3041 3036 3173
+f 3173 3189 3188
+f 3173 3172 3189
+f 3185 3188 3186
+f 3190 19091 3172
+f 19091 3190 19092
+f 3158 3195 3194
+f 3194 3190 3192
+f 3159 3194 3192
+f 3194 3159 3158
+f 3193 19092 3194
+f 3190 3194 19092
+f 3197 19091 19092
+f 3197 19092 3193
+f 3198 3192 3183
+f 3183 3192 3191
+f 3198 3159 3192
+f 3199 3172 19091
+f 3199 3201 3189
+f 19091 3202 3199
+f 3202 19091 3203
+f 3201 3199 3202
+f 3201 3204 3186
+f 3186 3189 3201
+f 3310 3184 3186
+f 3204 3310 3186
+f 3203 19091 3197
+f 3200 3265 3204
+f 3310 3204 3265
+f 3210 3208 1944
+f 3210 3219 3205
+f 3206 3218 3220
+f 3238 3218 3135
+f 3221 3220 3218
+f 3220 3211 3206
+f 3135 3134 3238
+f 3222 3215 3211
+f 3216 3224 3217
+f 3222 3223 3216
+f 3224 3216 3223
+f 3155 1962 1961
+f 3226 3153 3156
+f 3156 3155 3226
+f 3153 3226 3164
+f 3226 3155 1961
+f 3225 3226 1961
+f 3217 3225 1966
+f 1961 1966 3225
+f 3217 3224 3225
+f 3229 3228 3224
+f 3229 3234 3227
+f 3230 3232 3235
+f 3257 3254 3227
+f 3161 3227 3254
+f 3254 3158 3161
+f 3257 3227 3231
+f 3231 3233 3257
+f 3238 3236 3218
+f 3237 3236 3238
+f 3221 3236 3232
+f 3221 3218 3236
+f 3232 3236 3235
+f 3137 3237 3238
+f 3241 3233 3230
+f 3241 3240 3242
+f 3166 3165 3226
+f 3164 3226 3165
+f 3228 3160 3166
+f 1974 3243 3210
+f 3243 3246 3219
+f 3244 3243 1974
+f 3246 3243 3244
+f 3214 1980 3213
+f 6049 3136 3247
+f 3245 6049 3247
+f 3250 3249 19090
+f 3248 3242 3239
+f 19093 3251 3248
+f 19093 3248 3252
+f 3253 3250 19090
+f 6049 3253 19090
+f 19090 3136 6049
+f 3253 3273 19093
+f 19093 3252 3253
+f 3255 3254 3257
+f 3255 19094 3193
+f 3193 3195 3255
+f 3196 3193 19094
+f 3262 3196 19094
+f 3241 3260 3259
+f 3259 3256 3241
+f 3256 3233 3241
+f 3260 3241 3242
+f 3256 3259 3255
+f 3258 3267 3262
+f 19094 3255 3259
+f 19094 3259 3258
+f 3262 19094 3258
+f 3261 3203 3196
+f 3263 3200 3203
+f 3263 3203 3261
+f 3264 3263 3268
+f 3270 3272 3269
+f 3269 3242 3251
+f 3251 19093 3270
+f 3271 3260 3269
+f 3271 3275 3267
+f 3270 19093 3273
+f 3274 3277 3272
+f 3272 3270 3274
+f 3272 3276 3271
+f 3276 6065 3275
+f 3277 6064 3276
+f 6065 3276 6064
+f 3280 3275 6065
+f 3280 5846 3279
+f 19095 3327 3331
+f 3331 3281 19095
+f 3281 3331 3282
+f 3287 3288 3281
+f 3294 3353 3346
+f 3294 3286 3353
+f 3346 19096 3294
+f 3348 3296 3346
+f 3346 3345 3348
+f 19096 3346 3296
+f 3295 3294 19096
+f 3298 3295 19096
+f 3298 19096 3296
+f 3295 3298 3291
+f 3293 3291 3298
+f 3299 3292 3293
+f 3299 3298 19097
+f 19097 3298 3297
+f 6163 19097 3297
+f 19097 6165 3300
+f 3300 3299 19097
+f 6165 19097 6163
+f 3039 3187 3095
+f 3187 3100 3095
+f 3100 3187 3303
+f 3322 3124 3307
+f 3307 3304 3305
+f 3322 3307 3306
+f 3304 3100 3303
+f 3307 3100 3304
+f 3124 3102 3100
+f 3310 3309 3184
+f 3302 3184 3309
+f 3312 3309 3311
+f 3310 3311 3309
+f 3308 3309 3312
+f 3314 3306 3305
+f 3308 3315 3305
+f 3314 3317 3306
+f 3315 3320 3314
+f 3318 3319 3320
+f 3123 3118 3324
+f 3321 3324 3118
+f 3323 19098 3325
+f 3323 3322 3317
+f 3323 3326 19098
+f 3328 3325 19098
+f 3131 3325 3328
+f 19099 3129 3131
+f 19099 3131 3328
+f 19098 3329 3328
+f 3328 3327 19099
+f 3350 3326 3316
+f 3326 3330 19098
+f 3350 19100 3326
+f 3330 3326 19100
+f 3350 3316 3318
+f 19101 19100 3350
+f 3330 3329 19098
+f 3332 3330 19100
+f 19100 3282 3332
+f 19101 3285 19100
+f 3285 3283 3282
+f 3282 19100 3285
+f 3311 3336 3333
+f 3338 3320 3337
+f 3340 3337 3334
+f 3335 3343 3334
+f 3343 3340 3334
+f 3343 3335 3341
+f 3342 3347 3343
+f 3344 3345 3339
+f 3339 3340 3344
+f 3349 3318 3338
+f 3352 3349 3338
+f 3352 3338 3351
+f 3350 3349 19101
+f 19101 3349 3352
+f 3352 3286 3285
+f 3285 19101 3352
+f 3339 3353 3351
+f 3353 3286 3352
+f 3339 3346 3353
+f 3359 3356 3354
+f 3356 3355 3354
+f 3361 3367 3368
+f 3367 3361 3357
+f 2124 3355 3358
+f 3358 3361 19041
+f 19041 2122 3358
+f 3362 3363 3366
+f 3366 3387 3362
+f 3010 3009 3363
+f 3360 3010 3363
+f 3363 3009 3365
+f 3357 3360 3362
+f 3367 3375 3368
+f 3362 3387 3367
+f 3367 3387 3375
+f 3371 3370 3369
+f 3373 2163 3369
+f 2172 2163 3373
+f 2148 2172 3373
+f 3394 3374 3378
+f 3397 3374 3394
+f 3368 3374 3369
+f 3374 3371 3369
+f 3374 3375 3378
+f 3374 3397 3376
+f 3376 2223 3372
+f 3397 2223 3376
+f 3374 3376 3371
+f 2162 19041 3361
+f 3361 2163 2162
+f 3377 3384 3378
+f 3386 3391 3408
+f 3391 3392 3408
+f 3383 3380 3408
+f 3386 3380 3379
+f 3386 3408 3380
+f 3388 3387 3366
+f 3365 3388 3366
+f 3364 2969 3365
+f 3365 2969 3388
+f 2967 3390 2969
+f 3387 3377 3375
+f 3390 3386 3385
+f 3390 3391 3386
+f 3391 3390 2966
+f 2966 3390 2967
+f 3397 3394 3396
+f 2221 3395 2228
+f 2186 1671 3398
+f 3399 3359 3354
+f 3399 3398 2998
+f 2124 2187 3354
+f 2193 3400 3403
+f 3404 2194 3403
+f 3372 3404 3403
+f 3403 3400 3372
+f 3372 3400 3370
+f 2197 3373 3400
+f 2198 2194 3404
+f 19102 713 2198
+f 2198 3404 19102
+f 3404 3405 19102
+f 2251 713 19102
+f 3405 2252 2251
+f 2251 19102 3405
+f 2261 2254 2252
+f 3408 3409 3383
+f 3382 3383 2308
+f 2309 2308 3383
+f 3411 3407 2307
+f 2307 2309 3411
+f 3062 2311 3060
+f 3410 3060 2311
+f 2311 3407 3410
+f 2311 2307 3407
+f 2330 3412 3062
+f 2322 3382 2308
+f 3414 3413 3092
+f 3416 3415 3414
+f 3420 3419 3422
+f 3423 3422 3419
+f 3431 3427 3428
+f 3427 3426 3083
+f 3424 3427 3429
+f 3441 3425 3424
+f 3424 3430 3436
+f 3436 3439 3441
+f 3436 3441 3424
+f 3432 3433 3429
+f 3082 3431 3428
+f 3437 3430 3433
+f 3433 3446 3437
+f 3430 3437 3436
+f 3439 3436 3435
+f 3448 3440 3435
+f 3435 3437 3448
+f 3426 19052 3089
+f 2215 3089 19052
+f 19053 19052 3426
+f 19053 3426 3425
+f 3426 3089 3083
+f 3441 3442 19053
+f 19053 3425 3441
+f 19103 19053 3442
+f 3438 3442 3439
+f 3443 19103 3442
+f 19055 19053 19103
+f 19103 2531 19055
+f 2531 19103 3443
+f 3443 3811 2532
+f 2532 2531 3443
+f 3443 3438 3444
+f 3445 3809 3811
+f 3445 3811 3443
+f 3093 3413 3434
+f 3415 3432 3413
+f 3418 3433 3432
+f 3447 3448 3437
+f 3447 3449 3448
+f 3449 3447 3420
+f 3451 3449 3420
+f 3440 3452 3464
+f 3451 3422 3421
+f 3451 3421 3456
+f 3460 3458 3457
+f 3462 3460 3461
+f 3453 3458 3460
+f 3458 3453 3459
+f 3438 3464 3444
+f 3817 3444 3464
+f 3464 3459 3817
+f 3459 3821 3817
+f 3817 3445 3444
+f 3821 3818 3817
+f 3465 3821 3459
+f 3465 3453 3455
+f 3465 3455 3466
+f 3467 3821 3465
+f 3471 3514 3473
+f 3455 3454 3470
+f 3470 3472 3478
+f 3468 3462 3461
+f 3475 3469 3473
+f 19104 19105 3476
+f 3476 3477 19104
+f 3455 3470 3466
+f 3478 3472 3480
+f 3479 3466 3478
+f 3479 3467 3466
+f 3483 3480 3482
+f 3482 3472 3476
+f 19105 3484 3476
+f 3484 19105 3487
+f 3483 3484 3486
+f 3490 3487 19105
+f 3490 19105 3488
+f 3490 3485 3487
+f 3485 3490 3489
+f 3491 3489 3559
+f 3492 3491 3559
+f 3495 3113 3112
+f 3499 3496 3497
+f 3423 3499 3497
+f 3416 3417 3499
+f 3502 3423 3497
+f 19106 3501 3502
+f 3501 3511 3461
+f 3511 3501 19106
+f 19106 3512 3511
+f 3500 3510 3502
+f 3497 3500 3502
+f 19106 3502 3510
+f 3509 3512 19106
+f 3510 3509 19106
+f 3503 3112 3130
+f 3505 3495 3503
+f 19107 3495 3505
+f 3701 3503 3130
+f 3129 3701 3130
+f 3700 3503 3701
+f 3700 3505 3503
+f 19107 3500 3495
+f 3508 3510 3500
+f 19107 3505 3500
+f 3504 3508 3500
+f 3511 3468 3461
+f 3513 3471 3511
+f 3468 3511 3471
+f 3471 3513 3514
+f 3516 3473 3515
+f 3513 19108 3514
+f 3515 3514 19108
+f 19108 3518 3515
+f 3513 19109 19108
+f 3518 19108 19109
+f 3525 3518 19109
+f 3509 3521 3513
+f 3521 19109 3513
+f 3525 19109 3521
+f 3524 3518 3525
+f 3519 3526 3517
+f 3543 3601 3555
+f 3533 3532 3520
+f 3507 3530 3520
+f 3533 3520 3530
+f 3530 3536 3533
+f 3536 3530 3529
+f 3520 3509 3507
+f 3520 3532 3525
+f 3525 3521 3520
+f 3534 3533 3536
+f 3534 3539 3535
+f 3539 3534 3537
+f 3522 3525 3532
+f 3522 3532 3531
+f 3557 3527 3541
+f 3579 3578 3543
+f 3578 3601 3543
+f 3557 3541 3558
+f 3558 3541 3543
+f 3579 3543 3544
+f 3544 3542 3545
+f 3546 3579 3544
+f 3589 3545 3538
+f 3546 3545 3589
+f 3474 3473 3517
+f 3551 19105 19104
+f 3488 19105 3551
+f 3551 3550 3488
+f 19104 3477 3547
+f 19104 3547 3551
+f 3553 3598 3549
+f 3554 3527 3557
+f 3551 3547 3554
+f 3548 3551 3554
+f 3556 3548 3554
+f 3488 3550 3489
+f 3549 3492 3559
+f 3492 3549 3493
+f 3598 3493 3549
+f 3560 3493 3598
+f 3562 3915 3560
+f 3493 3560 3494
+f 3915 3494 3560
+f 3566 3562 3563
+f 3915 3562 3919
+f 3566 3919 3562
+f 3930 3931 19110
+f 3571 3573 19110
+f 3627 19110 3931
+f 3571 19110 3627
+f 3575 3572 3571
+f 3575 8747 3574
+f 3572 3574 3987
+f 3577 3602 3601
+f 3581 3599 3602
+f 3581 3602 3577
+f 3577 3601 3578
+f 3581 3577 3576
+f 3585 3582 3583
+f 3588 3587 3546
+f 3587 3588 3782
+f 3579 3587 3576
+f 3587 3782 3580
+f 3782 3781 3586
+f 3586 3580 3782
+f 3591 3590 3594
+f 3586 3781 3593
+f 3785 3617 3591
+f 3785 3591 3593
+f 3594 3593 3591
+f 3596 3599 3597
+f 3599 3603 3600
+f 3604 3564 3600
+f 3564 3604 3563
+f 3601 3596 3555
+f 3599 3596 3602
+f 3582 3599 3581
+f 3606 3610 3604
+f 3607 3606 3609
+f 3608 3610 3606
+f 3603 3585 3605
+f 3585 3594 3605
+f 3628 3609 3590
+f 3590 3592 3628
+f 3567 3563 3604
+f 3611 3613 3636
+f 8769 3613 3612
+f 3629 3592 3616
+f 3591 3614 3592
+f 3614 3616 3592
+f 3619 3614 3591
+f 3618 3619 3591
+f 3622 3624 3625
+f 3616 3624 3611
+f 3616 3615 3624
+f 3612 3622 3621
+f 3626 3607 3635
+f 3630 3632 3626
+f 3626 3635 3630
+f 3629 3607 3609
+f 3635 3607 3629
+f 3629 3616 3635
+f 3635 3616 3636
+f 3931 3569 3608
+f 3608 3627 3931
+f 3627 3626 3632
+f 3632 3571 3627
+f 19095 3696 3327
+f 19095 3643 3698
+f 3698 3696 19095
+f 3643 3637 3702
+f 3702 3698 3643
+f 3639 3702 3637
+f 3640 3639 3638
+f 19111 3644 3643
+f 3643 19095 19111
+f 3637 19112 3638
+f 3644 19112 3637
+f 19111 19095 3281
+f 3281 3288 19111
+f 3644 19111 3288
+f 3646 19112 3644
+f 3651 19112 3646
+f 3640 3638 19112
+f 3648 3642 3640
+f 3648 19112 3653
+f 3640 19112 3648
+f 3653 19112 3651
+f 3653 3659 3648
+f 3659 3653 3652
+f 3654 3648 3659
+f 3674 3650 3649
+f 3674 3649 3654
+f 3676 3650 3674
+f 3645 3655 3646
+f 3655 3656 3651
+f 3645 3665 3655
+f 3656 3655 3665
+f 3665 3645 3292
+f 3652 3651 3656
+f 3661 3654 3659
+f 3657 3656 3665
+f 3665 3667 3657
+f 3667 3662 3658
+f 3658 3657 3667
+f 3664 3660 3658
+f 3664 3658 3662
+f 3669 3660 3664
+f 3669 3664 3663
+f 3300 3672 3665
+f 6165 6562 3300
+f 3672 3300 6562
+f 6562 3671 3672
+f 3667 3665 3672
+f 3670 3663 3662
+f 3670 3662 3666
+f 3666 3667 3671
+f 3670 3689 3668
+f 3683 3673 3661
+f 3683 3661 3660
+f 3687 3683 3660
+f 3687 3660 3669
+f 3678 3673 3680
+f 3682 3680 3673
+f 3681 3685 3678
+f 19113 3680 3682
+f 3682 3687 3688
+f 19114 19113 3682
+f 19114 3682 3688
+f 3684 3680 19113
+f 3692 3684 19113
+f 19114 3688 3691
+f 3691 6583 19114
+f 6586 19114 6583
+f 6586 3692 19113
+f 6586 19113 19114
+f 6585 3744 6586
+f 6586 3744 3694
+f 3694 3692 6586
+f 19099 3696 3129
+f 3697 3701 3129
+f 3697 3699 3701
+f 3698 3702 3699
+f 3696 19099 3327
+f 3641 3506 3700
+f 3641 3642 3506
+f 3705 3703 3506
+f 3704 3705 3506
+f 3707 3529 3504
+f 3706 3705 3715
+f 3709 3706 3715
+f 3710 3713 3538
+f 3538 3539 3710
+f 3713 3777 3538
+f 3711 3710 3708
+f 3708 3709 3716
+f 3714 3722 3776
+f 3714 3776 3712
+f 3712 3776 3713
+f 3538 3777 3589
+f 3650 3705 3647
+f 3676 3715 3650
+f 3709 3715 3717
+f 3717 3715 3676
+f 3718 3717 3676
+f 3679 3718 3676
+f 3711 3708 3716
+f 3722 3714 3720
+f 3724 3720 3719
+f 3724 3719 3723
+f 3685 3679 3678
+f 3727 3723 3685
+f 3684 3693 3728
+f 3730 3729 3796
+f 3796 3732 3730
+f 3732 3796 3751
+f 3695 3693 3692
+f 3743 19115 3695
+f 3737 19115 3742
+f 3742 19115 3743
+f 3745 3738 3742
+f 3745 3744 6585
+f 3695 3694 3744
+f 3744 3743 3695
+f 19115 3737 19116
+f 3738 3748 3740
+f 3745 3747 3738
+f 3747 3750 3748
+f 3741 3754 3734
+f 3741 3734 3751
+f 3752 3734 3754
+f 3755 3757 3752
+f 3757 3733 3752
+f 3760 3735 3758
+f 3759 19117 3760
+f 3760 3758 3761
+f 3756 3761 3758
+f 3758 3757 3756
+f 3773 3761 3756
+f 3759 3761 3774
+f 3753 3754 3740
+f 3753 3740 3748
+f 3753 3763 3755
+f 3763 3756 3755
+f 3771 3770 3768
+f 3774 3761 3773
+f 3778 3780 3775
+f 3588 3589 3777
+f 3588 3780 3782
+f 3781 3780 3779
+f 3775 3780 3777
+f 3783 3785 3593
+f 3593 3781 3783
+f 19118 3775 3722
+f 3778 3775 19118
+f 19118 3722 3721
+f 3803 3721 3725
+f 3721 3803 19118
+f 3778 19118 3803
+f 3803 3789 3778
+f 3778 3788 3784
+f 3784 3788 3786
+f 19119 3787 3788
+f 19119 3800 3799
+f 3799 3787 19119
+f 3620 3793 3792
+f 3797 3792 3793
+f 3790 3618 3617
+f 3620 3619 3618
+f 3618 3790 3620
+f 3787 3790 3617
+f 3625 3794 3795
+f 3792 3797 3794
+f 3729 3795 3794
+f 3787 3799 3790
+f 3799 3798 3790
+f 3798 3802 3793
+f 3793 3802 3797
+f 3798 3800 3802
+f 3800 3741 3802
+f 3726 3693 3725
+f 3693 3803 3725
+f 3803 3693 3804
+f 3804 19116 3789
+f 3804 3693 3695
+f 3695 19115 3804
+f 19116 3804 19115
+f 3805 3788 3789
+f 3805 3789 19116
+f 3805 19119 3788
+f 3739 3800 19119
+f 3739 19119 3805
+f 19116 3737 3805
+f 3807 2532 3811
+f 2536 2533 3806
+f 3806 2537 2536
+f 3808 3806 3807
+f 3811 3810 3807
+f 3808 3807 3810
+f 3810 3809 3820
+f 3813 3815 3812
+f 3812 2537 3813
+f 2548 2546 3812
+f 3827 2548 3812
+f 3812 3815 3827
+f 3813 3808 3810
+f 3815 3813 3810
+f 3810 3820 3814
+f 3814 3826 3815
+f 3816 3809 3445
+f 3445 3817 3816
+f 3823 3818 3467
+f 3479 3823 3467
+f 3837 3822 3823
+f 3824 3816 3819
+f 3826 3814 3824
+f 3819 3842 3824
+f 3822 3842 3819
+f 3842 3822 3837
+f 3842 3825 3824
+f 3842 3844 3825
+f 3827 3830 2573
+f 3829 2573 3830
+f 3864 2574 2572
+f 3864 2572 3828
+f 3815 3826 3830
+f 3830 3832 3829
+f 3832 3830 3826
+f 3829 3831 3828
+f 3828 3831 3864
+f 2581 2574 3864
+f 3825 3844 3835
+f 3832 3834 3833
+f 19120 3823 3479
+f 19120 3479 3481
+f 19120 3836 3823
+f 3483 3486 3481
+f 3481 3846 19120
+f 3846 3481 3486
+f 3836 19120 3846
+f 19121 3486 3485
+f 3839 3846 3486
+f 19121 3840 3486
+f 3842 3837 3838
+f 3841 3844 3842
+f 3853 3485 3491
+f 3853 19121 3485
+f 3853 3856 19121
+f 3840 19121 3856
+f 3856 3853 3852
+f 3491 3850 3853
+f 3840 3855 3839
+f 3852 3859 3855
+f 19122 3848 3839
+f 3839 3855 3858
+f 3839 3858 19122
+f 3854 3852 3850
+f 3861 3859 3854
+f 3861 3854 3851
+f 19123 3862 3958
+f 3859 3861 3857
+f 3861 19123 3860
+f 19123 3861 3862
+f 3863 3831 3833
+f 2581 3866 2606
+f 3866 2581 3864
+f 3872 3869 3867
+f 3878 3871 3872
+f 3878 3872 3876
+f 2611 3880 3881
+f 3879 2610 3871
+f 3880 3882 2615
+f 2824 2615 3882
+f 3880 3884 3882
+f 3883 3882 3884
+f 3878 3905 3879
+f 3886 3879 3905
+f 3885 3884 3887
+f 3889 3835 3844
+f 3834 3890 3833
+f 3891 3889 3892
+f 3833 3890 3875
+f 3875 3890 3893
+f 3901 3877 3893
+f 3959 3961 3911
+f 3961 3908 3911
+f 3895 3848 19122
+f 3895 3892 3848
+f 3895 19122 3858
+f 19124 3891 3892
+f 3892 3895 3896
+f 19124 3892 3898
+f 3900 19123 3958
+f 3899 3896 3860
+f 19123 3900 3899
+f 3899 3860 19123
+f 3900 3911 3897
+f 3897 3911 3898
+f 3959 3911 3900
+f 3894 3891 3902
+f 3904 3903 3910
+f 3901 3878 3877
+f 3905 3878 3901
+f 3909 3907 3888
+f 3907 3906 3888
+f 3910 3911 3908
+f 3910 3909 3904
+f 3908 3907 3910
+f 3907 3909 3910
+f 3902 3891 19124
+f 3898 3903 19124
+f 3902 19124 3903
+f 2746 3912 2742
+f 3957 3954 3937
+f 3913 3494 3915
+f 3913 3918 3914
+f 3918 3913 3916
+f 3566 3920 3919
+f 3926 3934 3923
+f 3862 3851 3914
+f 3958 3862 3924
+f 3566 3570 3920
+f 3927 3570 3569
+f 3570 3921 3920
+f 3934 3926 3932
+f 3929 3935 3928
+f 3935 3936 3932
+f 3936 3933 3932
+f 3883 2823 2824
+f 3946 2825 2822
+f 3946 3945 2825
+f 3946 2822 3943
+f 3941 3940 3948
+f 3945 3950 3949
+f 3952 3956 3951
+f 2852 3951 3956
+f 3952 2830 3950
+f 3953 3950 3944
+f 3944 3939 3953
+f 3938 3954 3955
+f 3960 19125 3961
+f 3923 3934 3960
+f 19126 3960 3934
+f 3962 19126 3963
+f 19126 3962 3960
+f 19125 3960 3962
+f 3908 3961 3906
+f 3906 3961 19125
+f 3948 3906 19125
+f 19125 3962 3948
+f 19126 3933 3963
+f 3963 3933 3964
+f 19126 3934 3933
+f 2843 3965 2842
+f 3966 3969 3965
+f 3965 2839 2842
+f 2839 3965 3968
+f 3982 3970 19127
+f 3972 3969 3971
+f 3937 19127 3971
+f 19127 3970 3972
+f 3972 3971 19127
+f 3982 3967 3970
+f 3976 19128 3967
+f 19128 3976 3979
+f 19128 3981 3968
+f 19128 3968 3967
+f 19128 3979 3981
+f 3977 3976 3982
+f 3935 3986 3985
+f 3985 3984 3983
+f 3985 3986 3573
+f 3927 3931 3930
+f 3930 3935 3929
+f 19110 3986 3930
+f 3573 3986 19110
+f 3983 19129 3936
+f 3982 19127 19129
+f 19129 3983 3982
+f 19129 19127 3937
+f 19129 3937 3936
+f 3984 3975 3983
+f 3977 3982 3975
+f 3987 3975 3984
+f 3984 3573 3572
+f 3987 3984 3572
+f 3957 3966 3956
+f 3988 5546 3991
+f 4305 3990 3989
+f 3989 3988 3992
+f 5684 19130 3992
+f 3992 3991 5684
+f 4306 4305 3989
+f 4306 3989 19130
+f 3992 19130 3989
+f 3995 19130 5684
+f 3995 5684 3993
+f 3995 19131 4306
+f 4306 19130 3995
+f 3995 3996 19131
+f 3997 3998 4000
+f 4002 4006 4005
+f 4008 4005 4006
+f 4018 4017 4013
+f 4013 4012 4018
+f 4013 6375 6374
+f 6374 4014 4013
+f 4021 6375 4013
+f 4021 4013 4017
+f 4021 4023 6375
+f 4025 4020 4024
+f 4033 19132 4031
+f 4035 4037 4029
+f 4029 4030 4035
+f 4035 19132 4033
+f 4037 4035 4034
+f 4029 4039 4024
+f 4024 4016 4029
+f 4036 4024 4039
+f 4026 4065 4028
+f 19133 4026 4025
+f 19133 4025 4036
+f 19133 4067 4065
+f 4065 4026 19133
+f 4039 4029 4037
+f 4316 4036 4039
+f 4316 4039 4040
+f 19133 4036 4316
+f 4316 4075 4067
+f 4067 19133 4316
+f 4042 4002 4004
+f 4047 4043 4045
+f 4044 4047 4045
+f 4028 4064 4044
+f 4064 4051 4047
+f 4047 4044 4064
+f 4041 4043 4048
+f 4050 4048 4047
+f 4049 4048 4050
+f 4006 4002 4042
+f 4058 4056 4059
+f 4055 4041 4049
+f 4077 4063 4062
+f 4063 4060 4059
+f 4051 4069 4050
+f 4052 4050 4069
+f 4069 4051 4068
+f 4072 4066 4071
+f 19134 4069 4068
+f 19134 4068 4073
+f 4070 4069 19134
+f 19135 19134 4073
+f 19135 4073 4076
+f 4079 4070 19134
+f 4079 19134 19135
+f 19136 4078 4062
+f 4062 4052 19136
+f 4070 19137 19136
+f 19136 4052 4070
+f 19138 4078 19136
+f 19138 19136 19137
+f 4078 4085 4077
+f 4085 4078 19138
+f 4070 4081 19137
+f 4081 4083 19138
+f 19138 19137 4081
+f 4081 4070 4079
+f 4083 4086 19138
+f 4085 19138 4086
+f 4086 4083 4082
+f 4087 4086 4082
+f 4091 4094 4093
+f 4093 4011 4091
+f 4095 4090 4093
+f 4090 4095 4092
+f 4141 4095 4094
+f 4096 4095 4141
+f 4088 4098 6519
+f 6519 4089 4088
+f 4088 4099 4098
+f 4099 4088 4092
+f 4101 4107 4102
+f 4097 4102 4100
+f 4096 4150 4101
+f 4101 4092 4096
+f 4101 4150 4108
+f 4101 4108 4107
+f 4104 4100 4102
+f 4102 4106 4103
+f 4122 4105 4103
+f 4103 4106 4122
+f 4114 4110 4109
+f 4128 4114 4109
+f 4115 4114 4128
+f 4112 19139 4109
+f 4117 4134 19139
+f 19139 4112 4117
+f 4119 4125 4117
+f 4117 4116 4119
+f 4126 4134 4125
+f 4117 4125 4134
+f 4124 4138 4126
+f 4128 4109 19139
+f 4134 19140 19139
+f 19140 4136 4128
+f 4128 19139 19140
+f 4136 4132 4127
+f 4127 4128 4136
+f 4133 19140 4134
+f 4136 19140 4133
+f 4137 4133 4126
+f 4139 4135 4133
+f 4132 4136 4135
+f 4207 4131 4132
+f 4139 4205 4135
+f 4135 4205 4132
+f 4207 4132 4205
+f 4142 4094 4091
+f 4140 4142 4091
+f 4140 4060 4143
+f 4140 4143 4142
+f 4152 4151 4144
+f 4143 4152 4144
+f 4142 4144 4141
+f 4141 4144 4151
+f 4151 4096 4141
+f 4147 4063 4146
+f 4148 4179 4152
+f 4152 4143 4148
+f 4145 4147 4148
+f 4149 4155 4108
+f 4149 4151 4152
+f 4096 4151 4150
+f 4157 4108 4156
+f 4156 4155 4154
+f 4183 4122 4106
+f 4157 4183 4106
+f 4106 4108 4157
+f 4153 4152 4179
+f 4178 4153 4179
+f 4178 4159 4154
+f 4154 4153 4178
+f 4161 4158 4154
+f 4154 4158 4156
+f 4158 4163 4157
+f 4146 4165 4147
+f 4147 4164 4148
+f 4179 4148 4164
+f 4165 4166 4164
+f 4084 4146 4085
+f 4168 4465 4165
+f 4165 4084 4168
+f 4166 4180 4167
+f 4166 4165 4465
+f 4169 4171 4174
+f 4177 4172 4169
+f 4177 4169 4175
+f 4164 19141 4178
+f 19141 4171 4159
+f 4159 4178 19141
+f 19141 4164 4167
+f 4171 19141 4167
+f 4159 4171 4170
+f 4170 4160 4159
+f 4162 4160 4170
+f 4170 4173 4162
+f 4181 4174 4171
+f 4121 4122 4182
+f 4123 4121 4182
+f 4184 4182 4185
+f 4188 4124 4123
+f 4188 4123 4184
+f 4188 4187 4138
+f 4138 4124 4188
+f 4193 4188 4184
+f 4186 4188 4193
+f 4190 4163 4162
+f 4189 4163 4190
+f 4196 4184 4185
+f 4196 4185 4191
+f 4197 4196 4191
+f 4196 4194 4193
+f 4193 4184 4196
+f 4187 4200 4137
+f 4137 4138 4187
+f 4206 4209 4207
+f 4204 4199 4203
+f 19142 4201 4186
+f 4192 19142 4186
+f 4211 4202 4201
+f 19142 4211 4201
+f 4231 19142 4192
+f 4231 4192 4198
+f 4231 4212 4211
+f 4211 19142 4231
+f 4211 4214 4203
+f 4203 4202 4211
+f 4211 4210 4214
+f 4208 4203 4214
+f 4172 4216 4173
+f 4177 4217 4216
+f 4216 4172 4177
+f 4501 4217 4177
+f 4501 4177 4176
+f 4218 4217 4501
+f 4173 4221 4190
+f 4173 4190 4162
+f 4221 4191 4190
+f 4221 4222 4191
+f 4221 4173 4216
+f 4219 4221 4216
+f 4221 4220 4222
+f 4225 4198 4226
+f 4223 4226 4222
+f 4225 4226 4223
+f 4195 4226 4198
+f 4227 4219 4215
+f 4219 4227 4223
+f 4229 4224 4227
+f 4229 4227 4215
+f 4198 4230 4231
+f 4230 4198 4225
+f 4230 4235 4212
+f 4225 4224 4230
+f 4235 4230 4232
+f 4235 4240 4234
+f 4233 4234 4240
+f 4244 4210 4233
+f 4244 4233 4240
+f 4210 4244 4213
+f 4237 4232 4236
+f 4236 4229 4228
+f 4240 4239 4244
+f 4240 4235 4237
+f 4239 4237 4238
+f 4209 6795 4241
+f 4241 4207 4209
+f 4213 6792 6795
+f 6795 4209 4213
+f 4243 6792 4213
+f 4245 4242 4248
+f 4250 4246 4245
+f 4253 4251 4250
+f 4245 4257 4256
+f 4607 4642 4256
+f 4256 4255 4607
+f 4252 4256 4642
+f 4258 4263 4259
+f 4260 19143 4258
+f 4258 4266 4261
+f 4263 4258 4261
+f 4267 4266 4258
+f 4266 4265 4261
+f 4268 4267 19143
+f 19143 4267 4258
+f 4268 4264 4266
+f 6823 4261 4265
+f 4265 19144 6823
+f 4269 19144 4265
+f 4269 4294 4291
+f 4291 19144 4269
+f 19144 4291 19145
+f 4252 4272 6839
+f 6839 4253 4252
+f 4271 19143 4260
+f 4271 4260 6839
+f 4271 6839 4272
+f 4273 4272 4252
+f 4273 4252 4642
+f 4274 4264 19146
+f 19147 4277 4274
+f 4274 19146 19147
+f 4271 19146 4268
+f 4268 19143 4271
+f 4268 19146 4264
+f 19148 19147 19146
+f 19146 4271 19148
+f 4275 4274 4277
+f 4294 4269 4276
+f 4280 4283 4277
+f 4277 19147 4280
+f 4283 4280 4287
+f 4281 4280 19147
+f 19147 19148 4281
+f 4270 4281 19148
+f 19148 4271 4270
+f 4282 4652 4280
+f 4652 4287 4280
+f 4278 4277 4283
+f 4292 4291 4294
+f 4290 19145 4291
+f 4301 4276 4279
+f 4293 4303 4290
+f 4290 4292 4293
+f 4276 4301 4300
+f 4276 4300 4293
+f 4303 4293 4300
+f 4279 4297 4301
+f 4297 4279 4285
+f 4296 4301 4297
+f 19149 4285 4288
+f 19149 4298 4297
+f 4297 4285 19149
+f 4295 4719 4299
+f 4304 4299 4719
+f 4305 4032 4031
+f 4307 4308 4305
+f 4032 4309 4034
+f 4310 4309 4032
+f 4313 4308 19150
+f 4313 19150 4330
+f 19131 19151 4307
+f 4307 4306 19131
+f 4308 4307 19151
+f 3996 4330 19150
+f 19150 19151 19131
+f 19150 19131 3996
+f 19151 19150 4308
+f 4312 4336 4317
+f 4312 4310 4308
+f 4312 4317 4311
+f 4319 4040 4038
+f 4319 4038 4314
+f 4315 4355 4075
+f 4323 4040 4319
+f 4040 4323 4315
+f 4323 4358 4355
+f 4355 4315 4323
+f 4336 4318 4317
+f 4317 4314 4311
+f 4321 4319 4318
+f 4321 4323 4319
+f 4322 4358 4323
+f 4337 4335 4334
+f 4403 4341 4339
+f 4339 4340 4403
+f 4001 4403 4340
+f 4338 4332 3999
+f 4340 3999 4001
+f 4337 4333 4339
+f 4327 4326 4337
+f 4351 4345 4344
+f 4356 4074 4071
+f 4357 4074 4356
+f 19152 4356 4358
+f 19152 4360 4357
+f 4357 4356 19152
+f 19135 4076 4357
+f 4367 4079 19135
+f 4359 19135 4357
+f 4367 19135 4359
+f 4361 19152 4358
+f 4322 4361 4358
+f 4361 4362 4360
+f 4360 19152 4361
+f 4324 4363 4361
+f 4364 4367 4359
+f 4364 4359 4365
+f 4365 4362 4363
+f 4371 4080 4367
+f 4369 4080 4371
+f 4087 4082 4368
+f 19153 4370 4368
+f 19153 4368 4376
+f 4369 4376 4368
+f 4373 4369 4371
+f 4395 4371 4364
+f 4395 4374 4373
+f 4373 4371 4395
+f 4376 19154 19153
+f 4376 4375 19154
+f 4373 4372 4376
+f 4376 4369 4373
+f 4324 4381 19155
+f 4381 4324 4354
+f 4383 4384 19155
+f 4383 19155 4381
+f 4382 4381 4380
+f 4324 19155 4363
+f 4363 19155 4384
+f 4377 4388 4380
+f 4391 4386 4382
+f 4391 4382 4387
+f 4392 4387 4389
+f 4393 4391 4392
+f 4394 4397 4374
+f 4482 4375 4372
+f 4374 4482 4372
+f 4482 4374 4397
+f 4390 4398 4394
+f 4394 4385 4390
+f 4397 4394 4398
+f 4398 4390 4393
+f 4397 4399 4482
+f 4404 19156 4329
+f 4329 4328 4404
+f 4403 4402 4341
+f 4405 4408 4404
+f 4404 4328 4341
+f 4401 4407 4405
+f 4410 4347 4329
+f 4410 4329 19156
+f 4348 4347 4410
+f 4417 4410 19156
+f 4408 4417 19156
+f 19156 4404 4408
+f 4412 4410 4417
+f 4411 4414 4352
+f 4416 4353 4352
+f 4416 4352 4414
+f 4420 4407 4422
+f 4424 4420 4422
+f 4419 4420 4424
+f 4428 4379 4425
+f 4415 4431 4425
+f 4425 4416 4415
+f 4431 4426 4425
+f 4428 4425 4426
+f 4429 4415 4413
+f 4431 4430 4426
+f 4426 4432 4427
+f 4433 4435 4432
+f 4435 4455 4434
+f 4427 4436 4428
+f 4389 4437 4392
+f 4437 4436 4439
+f 4440 4438 4437
+f 4443 4439 4434
+f 4443 4442 4440
+f 4440 4439 4443
+f 4455 4441 4443
+f 4443 4434 4455
+f 4398 4393 4438
+f 4445 4438 4440
+f 4445 4449 4396
+f 4396 4444 4445
+f 4396 4453 4399
+f 4453 4396 4449
+f 4445 4440 4442
+f 4448 4447 4450
+f 4448 4451 4452
+f 4452 4449 4448
+f 4454 4419 4424
+f 4454 4424 4456
+f 4456 4424 4423
+f 4456 4441 4455
+f 4455 4454 4456
+f 4456 4457 4459
+f 4441 4458 4446
+f 4450 4446 4458
+f 4450 4458 4459
+f 4168 4087 4370
+f 4464 4168 4370
+f 4467 4464 4370
+f 4467 4370 19153
+f 4464 4462 4166
+f 4180 4166 4462
+f 4462 4464 4467
+f 4461 4180 4462
+f 19154 4468 19153
+f 19153 4468 4467
+f 4471 4468 19154
+f 4471 19154 4375
+f 4473 4175 4174
+f 4476 4473 4475
+f 4474 4181 4180
+f 4473 4174 4181
+f 4473 4181 4474
+f 4474 4180 4461
+f 4483 4469 4470
+f 4486 4495 4484
+f 4485 4486 4481
+f 4490 4487 4483
+f 4490 4483 4484
+f 4490 4484 4495
+f 4502 4500 4476
+f 4504 4218 4500
+f 4504 4500 4503
+f 4502 4476 4478
+f 4504 4509 4228
+f 4509 4504 4505
+f 4239 4238 4509
+f 4511 4509 4505
+f 4511 4505 4508
+f 4513 4510 4509
+f 4507 4480 4492
+f 4515 19157 4514
+f 4514 4492 4515
+f 4514 19158 4508
+f 4508 4507 4514
+f 19158 4514 19157
+f 4499 4528 4515
+f 4515 4494 4499
+f 4528 19157 4515
+f 4530 19157 4528
+f 19157 4532 19158
+f 4532 19157 4530
+f 4518 4511 4508
+f 4518 4508 19158
+f 4518 4619 4618
+f 4518 4618 4516
+f 4516 4511 4518
+f 4519 4518 19158
+f 4519 19158 4532
+f 4519 4537 4517
+f 4518 4517 4619
+f 19159 4485 4399
+f 19159 4399 4453
+f 4520 4485 19159
+f 19159 4453 4452
+f 4452 7022 19159
+f 4520 19159 7022
+f 7022 4524 4520
+f 4496 4495 4486
+f 4486 4523 4496
+f 4520 4526 4523
+f 4523 4486 4520
+f 4499 4498 4521
+f 4498 4523 4521
+f 4521 4523 4526
+f 4521 4526 4525
+f 4529 4530 4528
+f 4522 4527 4534
+f 4522 4534 4529
+f 4539 4536 4531
+f 4539 4531 4533
+f 4537 4536 4677
+f 4677 4536 4539
+f 4539 4533 4535
+f 4539 4542 4677
+f 4540 4542 4539
+f 4539 4538 4540
+f 4547 4544 4543
+f 4543 4545 4548
+f 4543 4549 4546
+f 4557 4553 4552
+f 4544 4547 19160
+f 4557 4544 19160
+f 19160 4555 4553
+f 19160 4553 4557
+f 4555 7028 4554
+f 4563 4567 4562
+f 19160 4571 4555
+f 4547 4562 4570
+f 4547 4570 19160
+f 19160 4570 4571
+f 4562 4567 4570
+f 4571 4573 7028
+f 7028 4555 4571
+f 4566 4569 4567
+f 4576 4578 4574
+f 4576 4574 4569
+f 4566 4568 4576
+f 4595 4576 4568
+f 4595 4577 4576
+f 4593 7069 4575
+f 4578 4593 4575
+f 4593 4578 4577
+f 4579 4580 4549
+f 4556 4585 4579
+f 4558 4585 4556
+f 4586 4584 4583
+f 4583 4581 4585
+f 4581 4579 4585
+f 4564 4550 4582
+f 4588 4565 4564
+f 4591 4565 4588
+f 4588 4582 4584
+f 4591 4588 4589
+f 4594 4568 4565
+f 4594 4565 4591
+f 4591 4590 4594
+f 4592 4590 4589
+f 4592 4586 4587
+f 4593 4587 7069
+f 4592 4595 4594
+f 4594 4590 4592
+f 4596 4598 4247
+f 4247 4239 4510
+f 4247 4598 4248
+f 4597 4603 4254
+f 4599 4510 4513
+f 4600 4596 4599
+f 4604 4513 4512
+f 4513 4604 4599
+f 4604 4600 4599
+f 4603 4597 4601
+f 4612 4254 4603
+f 4614 4255 4612
+f 4254 4612 4255
+f 4608 4607 4255
+f 4607 4606 4642
+f 4614 4610 4608
+f 4608 4255 4614
+f 4602 4612 4603
+f 19161 4610 4613
+f 4639 4609 4610
+f 4639 4610 19161
+f 4616 4622 19162
+f 19162 4617 4616
+f 4626 19162 4622
+f 4620 4619 4517
+f 4620 4517 4624
+f 4628 4631 4626
+f 4628 4626 4625
+f 4627 4634 4628
+f 4617 4512 4516
+f 4617 19162 4604
+f 4516 4618 4617
+f 4630 4605 4604
+f 4630 4604 19162
+f 4629 4602 4605
+f 4630 4629 4605
+f 19162 4626 4630
+f 4537 4624 4517
+f 4637 19161 4613
+f 4637 4613 4632
+f 4639 19161 4637
+f 4628 19163 4633
+f 4633 4631 4628
+f 4632 4633 19163
+f 19163 4628 4634
+f 4632 19163 4634
+f 4638 4637 4636
+f 4629 4633 4615
+f 4615 4602 4629
+f 4615 4633 4613
+f 4641 4644 4273
+f 4643 4270 4273
+f 4646 4649 4647
+f 4647 4644 4645
+f 4650 4647 4648
+f 4652 4651 4287
+f 4652 4282 4643
+f 4286 4287 4653
+f 4654 4726 4288
+f 4726 4654 4655
+f 4651 4655 4653
+f 4655 4658 4727
+f 4655 4727 4726
+f 4656 4733 4657
+f 4655 4651 4657
+f 4660 4639 4638
+f 4665 4659 4638
+f 4665 4638 4640
+f 4660 4646 4639
+f 4667 4662 4661
+f 4673 4634 4627
+f 4673 4627 4669
+f 4673 4669 4671
+f 4671 4670 4678
+f 4678 4677 4679
+f 4679 4677 4542
+f 4674 4671 4678
+f 4674 4678 4680
+f 4681 4673 4672
+f 4681 4685 4635
+f 4635 4673 4681
+f 19164 4640 4636
+f 4685 4689 4636
+f 4636 4635 4685
+f 4690 19164 4636
+f 4690 4636 4689
+f 4682 4683 4681
+f 4685 4681 4683
+f 4684 4683 4686
+f 4689 4685 4684
+f 4542 4541 19165
+f 4679 4542 19165
+f 4694 4692 4674
+f 4693 4674 4680
+f 4680 4679 4693
+f 4693 4679 19165
+f 4693 19165 7095
+f 4693 7095 4696
+f 4698 4687 4686
+f 4686 4675 4692
+f 4698 4699 4688
+f 4688 4687 4698
+f 4697 4700 4698
+f 4694 4695 4703
+f 4694 4703 4700
+f 4702 4703 4695
+f 4701 4703 4715
+f 4702 4713 4715
+f 4715 4703 4702
+f 19164 4707 4665
+f 4665 4640 19164
+f 4690 19166 19164
+f 4707 19164 19166
+f 4704 19166 4690
+f 4706 4707 19166
+f 4706 19166 4704
+f 4704 4690 4691
+f 4707 4709 4666
+f 4709 7106 4708
+f 4709 4707 4706
+f 4710 4706 4705
+f 4710 4714 7106
+f 7106 4709 4710
+f 4712 4705 4704
+f 4699 4712 4704
+f 4704 4691 4699
+f 4699 4701 4712
+f 4711 4710 4705
+f 4713 7110 4714
+f 4711 4715 4713
+f 4288 4717 19149
+f 4298 19149 4717
+f 4717 4720 4295
+f 4295 4298 4717
+f 4726 4717 4288
+f 4717 4716 4720
+f 4723 4304 4719
+f 4723 4719 4721
+f 4725 4729 4718
+f 4740 4737 4722
+f 4731 4658 4657
+f 4736 4731 4657
+f 4734 4736 4657
+f 4736 4735 4739
+f 4737 4740 4735
+f 4738 4728 4732
+f 4740 4721 4716
+f 4740 4716 4738
+f 4738 4739 4735
+f 4782 7303 4744
+f 4741 4782 4744
+f 4782 4784 4745
+f 4745 7303 4782
+f 4746 4745 4784
+f 4752 4749 4748
+f 4748 4750 4756
+f 4754 4756 4757
+f 4748 4756 4754
+f 4750 4767 4755
+f 4759 4755 4767
+f 4767 4768 4759
+f 4757 4756 4755
+f 4752 4763 4760
+f 4760 4749 4752
+f 4763 4752 4751
+f 4769 4766 4761
+f 4741 4743 4766
+f 4770 4775 4774
+f 4774 4751 4753
+f 4774 4753 4754
+f 4774 4754 4770
+f 4770 4757 4758
+f 7327 4770 4758
+f 4772 4764 4751
+f 4772 4751 4774
+f 4778 4762 4765
+f 4762 4778 4779
+f 4780 4786 4779
+f 4785 4781 4769
+f 4761 4785 4769
+f 4782 4741 4769
+f 4791 4777 4765
+f 4791 4793 4795
+f 4791 4795 4780
+f 4780 4777 4791
+f 4780 4795 4786
+f 4776 4794 4791
+f 4791 4771 4776
+f 4792 4838 4840
+f 4792 4840 4795
+f 4795 4793 4792
+f 4795 4840 4796
+f 4811 4797 4796
+f 4811 4796 4840
+f 4786 4796 4789
+f 4746 4803 4798
+f 4746 4788 4801
+f 4746 4801 4803
+f 4799 4788 4790
+f 4801 4807 4804
+f 4808 4807 4801
+f 4814 4790 4797
+f 4814 4813 4800
+f 4800 4813 4816
+f 4808 4816 4809
+f 4807 4819 4806
+f 7386 4802 4806
+f 4805 4802 7386
+f 4807 4809 4818
+f 4819 4822 4806
+f 4822 4819 4820
+f 7386 4806 4822
+f 4822 4825 7386
+f 7387 7386 4825
+f 4820 4818 4824
+f 7387 4825 7390
+f 4821 4826 4822
+f 19167 4818 4809
+f 4816 19167 4809
+f 19168 4824 4818
+f 19167 19168 4818
+f 4827 19167 4816
+f 4861 19168 19167
+f 4861 19167 4827
+f 19168 9725 4824
+f 4861 9725 19168
+f 4862 9725 4861
+f 4824 9725 4823
+f 4833 4828 4770
+f 7455 4833 4770
+f 4770 7327 7455
+f 4773 4775 4828
+f 4773 4828 4831
+f 4831 4828 4833
+f 7455 4834 4833
+f 4831 4832 4830
+f 4834 7461 4832
+f 4832 4831 4833
+f 4792 4794 4835
+f 4835 4829 4830
+f 4830 4843 4835
+f 4836 4835 4843
+f 4836 4843 4841
+f 4838 4792 4836
+f 4837 4836 4841
+f 4845 4839 4837
+f 4845 4837 4842
+f 4843 4832 4846
+f 4841 4843 4846
+f 19169 4846 4832
+f 19169 4832 7461
+f 4847 4846 19169
+f 19169 7461 7464
+f 19169 7464 4865
+f 19169 4865 4847
+f 4839 4848 4810
+f 4812 4810 4848
+f 4851 4848 4839
+f 4851 4839 4845
+f 4851 4845 4844
+f 4859 4827 4817
+f 4859 4817 4852
+f 4859 4861 4827
+f 4857 4859 4852
+f 4857 4852 4853
+f 4857 4853 4856
+f 9737 4863 4858
+f 4864 9737 4858
+f 4855 4865 4866
+f 4864 4866 9744
+f 4864 9744 9737
+f 4873 4872 4875
+f 4874 4875 4888
+f 4868 4867 4871
+f 4907 4882 4874
+f 4874 4888 4907
+f 4885 4883 4879
+f 4879 4881 4885
+f 4882 4885 4881
+f 4881 4876 4882
+f 4907 4887 4882
+f 4885 4884 4883
+f 4885 4882 4887
+f 4869 4895 4891
+f 4891 4867 4869
+f 4870 5011 4895
+f 4895 4869 4870
+f 4896 4895 5011
+f 4892 4893 4899
+f 4875 4889 4888
+f 4899 4890 4889
+f 4889 4898 4899
+f 4890 4899 4901
+f 4888 4890 4907
+f 4909 4908 4900
+f 4908 4910 4906
+f 4912 4886 4887
+f 4887 4910 4912
+f 4908 4909 4911
+f 4913 4911 4909
+f 4909 4902 4904
+f 4909 4904 4913
+f 4886 4915 4884
+f 1141 4905 1140
+f 1142 4917 4916
+f 1142 4916 1141
+f 1144 5551 4917
+f 1144 1147 4918
+f 4918 5551 1144
+f 5156 4923 4922
+f 4924 4922 4919
+f 4928 4970 5110
+f 4928 5110 4926
+f 4934 4960 4935
+f 4932 4934 4935
+f 4935 4938 19170
+f 19170 4938 4937
+f 19170 4937 4930
+f 4960 4939 4935
+f 4939 4938 4935
+f 4939 4967 4937
+f 4936 4935 19170
+f 4936 19170 4929
+f 4930 4929 19170
+f 5129 4944 4929
+f 4929 4931 5129
+f 4932 4936 4941
+f 4942 4940 4944
+f 4940 4936 4929
+f 4964 4946 4962
+f 4946 4950 4962
+f 4933 4947 4946
+f 4946 4964 4933
+f 4948 5245 4949
+f 4952 4933 4941
+f 4953 4941 4943
+f 4951 4952 4953
+f 5246 4948 4945
+f 4953 4957 4956
+f 4934 4964 4961
+f 4961 4958 4934
+f 4961 4964 4962
+f 4959 4958 4968
+f 5245 4969 4949
+f 4919 4968 4924
+f 4944 5129 4970
+f 4973 4943 4942
+f 4942 4944 4972
+f 4971 4972 4944
+f 5349 4971 4928
+f 5349 4928 4927
+f 4973 4972 4974
+f 5349 4974 4972
+f 4972 4971 5349
+f 4953 4943 4973
+f 4957 4979 4954
+f 4957 4953 4976
+f 4977 4957 4976
+f 4982 4980 4976
+f 4976 4973 4982
+f 4981 19171 19172
+f 19172 4978 4977
+f 19172 4977 4981
+f 4880 4992 4985
+f 4985 5013 4984
+f 4985 4995 4994
+f 4994 5013 4985
+f 4995 4985 4992
+f 4987 4880 4878
+f 4987 4989 4992
+f 4992 4880 4987
+f 4990 4989 4988
+f 4992 4991 4995
+f 5001 4993 5000
+f 5004 4988 4986
+f 4883 5004 4986
+f 4986 4877 4883
+f 5003 4990 4988
+f 19173 5000 4999
+f 19173 4999 5007
+f 19173 19174 5008
+f 5008 5000 19173
+f 5009 5003 5006
+f 5007 5010 19173
+f 5087 5010 5009
+f 19175 19174 19173
+f 19175 19173 5010
+f 19175 5010 5087
+f 5014 4896 5011
+f 4984 5014 5011
+f 5014 4984 5013
+f 4896 5014 1780
+f 4897 5012 4903
+f 1779 5014 5013
+f 5013 4994 1777
+f 4904 836 4905
+f 4904 4905 5015
+f 5001 5017 5002
+f 1799 4997 4996
+f 5002 5017 5020
+f 5021 1797 5022
+f 5021 5031 19025
+f 19025 1794 5021
+f 1909 19025 5031
+f 5031 5021 5023
+f 5024 5026 5023
+f 5328 1909 5030
+f 5030 5029 5328
+f 5030 5031 5023
+f 5030 5023 5026
+f 5022 1797 1799
+f 5022 1799 5019
+f 5042 5045 5135
+f 5008 19176 5020
+f 5020 5017 5008
+f 19176 5008 19174
+f 19177 5046 5019
+f 5019 5018 19177
+f 19177 5018 5020
+f 19177 5020 19176
+f 5132 19176 19174
+f 5132 19174 19175
+f 5134 5135 5045
+f 5134 5045 5046
+f 5046 19177 5134
+f 5134 19177 19176
+f 5134 19176 5132
+f 5034 5032 5025
+f 5035 5034 5027
+f 5047 5041 5035
+f 5032 5034 5041
+f 5035 5041 5034
+f 5036 5029 5025
+f 5037 5029 5036
+f 4923 5156 5037
+f 5040 5039 5043
+f 5038 4921 4920
+f 5044 5039 5041
+f 5044 5041 5047
+f 5044 5047 5045
+f 5043 5039 5044
+f 5033 4920 4923
+f 5019 5035 5028
+f 5035 5019 5046
+f 5046 5045 5047
+f 5051 5052 5056
+f 5064 5048 5051
+f 5065 5062 5055
+f 5055 5062 5051
+f 19178 5063 5062
+f 19178 5062 5065
+f 5064 5051 5062
+f 5065 5055 5054
+f 5065 5061 19178
+f 5066 5056 5052
+f 5066 5052 5005
+f 5005 4884 5066
+f 5066 4884 4915
+f 5066 4915 5067
+f 5005 5052 5050
+f 5098 5053 5056
+f 5056 5066 5098
+f 5068 5098 5066
+f 5075 5125 5073
+f 5076 5079 5061
+f 5080 5079 5076
+f 5077 5063 19178
+f 5063 5077 5064
+f 19178 5061 5079
+f 19178 5079 5077
+f 5085 5072 5078
+f 5070 5078 5072
+f 5082 5074 5072
+f 5085 5082 5072
+f 5006 5048 5069
+f 5009 5006 5069
+f 5069 5071 5009
+f 5009 5071 5073
+f 5087 5009 5073
+f 5073 5125 5086
+f 5087 5086 19175
+f 5093 5091 5057
+f 5057 5059 5093
+f 5104 5060 5091
+f 5092 5093 5094
+f 5104 5091 5107
+f 5107 5091 5092
+f 5093 5054 5090
+f 5094 5090 5089
+f 5095 5107 5092
+f 5092 5094 5095
+f 5100 5101 5103
+f 5060 5106 5076
+f 5105 5111 5108
+f 5108 5106 5105
+f 5076 5106 5108
+f 5076 5108 5080
+f 5107 5112 5105
+f 5111 5105 5112
+f 5109 5083 5108
+f 5109 5108 5111
+f 5114 5068 5067
+f 5067 4915 4914
+f 5067 4914 5114
+f 5114 4914 4913
+f 5116 5114 4913
+f 4913 5016 5116
+f 5115 5103 5101
+f 5101 5099 5114
+f 5101 5114 5115
+f 5115 5116 19179
+f 4931 4930 5118
+f 5117 19180 5123
+f 5123 5122 5117
+f 5131 5124 5123
+f 5131 5123 19180
+f 4937 5126 5117
+f 5128 5117 5126
+f 4967 5127 5126
+f 19180 5117 5128
+f 5128 19181 19180
+f 5131 19180 19181
+f 19181 5133 5131
+f 5042 19181 5128
+f 5135 5133 19181
+f 5135 19181 5042
+f 5124 5130 5086
+f 5132 19175 5086
+f 5130 5131 5133
+f 5132 5130 5134
+f 5127 4967 5040
+f 4967 4966 5040
+f 5040 4966 4921
+f 5084 4970 5129
+f 5154 5163 5332
+f 5163 5137 5136
+f 5136 5332 5163
+f 5138 5338 5136
+f 5141 5338 5138
+f 5138 5140 5141
+f 5142 5146 5144
+f 5149 5150 5147
+f 5161 5160 5155
+f 5152 5155 5160
+f 5159 5137 5163
+f 5161 5147 5162
+f 5168 5172 5167
+f 5164 5169 5166
+f 5255 5151 5252
+f 5252 5253 5255
+f 5151 5162 5147
+f 5252 5151 5150
+f 5203 5169 5151
+f 5205 5203 5255
+f 5151 5255 5203
+f 5255 5254 5205
+f 5171 5138 5159
+f 5171 5159 5158
+f 5170 5139 5138
+f 5138 5137 5159
+f 5139 5170 5172
+f 5145 5179 5173
+f 5175 5145 5173
+f 5175 19182 5146
+f 5146 5145 5175
+f 5146 19182 5176
+f 5174 5177 19182
+f 19182 5175 5174
+f 5176 19182 5177
+f 5179 5181 5173
+f 5181 5182 5174
+f 5174 5173 5181
+f 5183 5187 5180
+f 5184 5189 5182
+f 5184 5180 5187
+f 5177 5174 5182
+f 5178 5185 5208
+f 5189 5195 5185
+f 5185 5182 5189
+f 5208 5185 5195
+f 5187 5183 5190
+f 5183 5191 5190
+f 5193 19183 5188
+f 5189 5188 5194
+f 5194 5188 19183
+f 5196 5193 5192
+f 5197 19183 5193
+f 5179 5168 5198
+f 5169 5199 5198
+f 5198 5166 5169
+f 5198 5168 5166
+f 5200 5179 5198
+f 5183 5201 5191
+f 5201 5219 5191
+f 5207 5219 5200
+f 5219 5201 5200
+f 5203 5204 5199
+f 5205 5268 5204
+f 5270 5204 5268
+f 5206 5204 5270
+f 5202 5204 5206
+f 5145 5172 5168
+f 5145 5168 5179
+f 5183 5179 5201
+f 5191 5219 5210
+f 5191 5210 5192
+f 5219 5214 5210
+f 5217 5221 5214
+f 5214 5219 5217
+f 5217 5218 5221
+f 5826 5215 5214
+f 5826 5214 5221
+f 5220 5826 5221
+f 5194 19183 5222
+f 5197 5225 19183
+f 5196 5223 5197
+f 5225 5222 19183
+f 5226 5222 5225
+f 5232 5234 5236
+f 5238 5231 5239
+f 5240 5241 5238
+f 5241 19184 5228
+f 5243 5232 5237
+f 5390 5242 5243
+f 5240 5242 19185
+f 5240 19185 5241
+f 5241 19185 19184
+f 5390 5296 19185
+f 19185 5242 5390
+f 19184 19185 5296
+f 5244 5149 5245
+f 5244 5249 5149
+f 5246 5245 4948
+f 5150 5149 5249
+f 19186 5247 4955
+f 4954 5261 4955
+f 5261 5260 19186
+f 19186 4955 5261
+f 5247 19186 5248
+f 19186 5258 5250
+f 5250 5248 19186
+f 5260 5265 19186
+f 19186 5265 5258
+f 4925 5245 5149
+f 5256 5230 5254
+f 5257 5258 5265
+f 5257 5231 5256
+f 4979 5259 5261
+f 5261 4954 4979
+f 5234 5266 5264
+f 19172 5267 5262
+f 5262 4978 19172
+f 5267 19172 19171
+f 5257 5265 5266
+f 5231 5257 5239
+f 5266 5233 5240
+f 5266 5240 5239
+f 5269 5272 5270
+f 5270 5272 5273
+f 5271 5277 5273
+f 5275 5276 5271
+f 5274 5278 5275
+f 5281 5282 5276
+f 5285 5284 5286
+f 5284 5281 5286
+f 5289 5274 5228
+f 5290 5274 5289
+f 5288 5228 19184
+f 5288 5294 5290
+f 5288 19184 5296
+f 5295 5288 5297
+f 5293 5308 5291
+f 5309 5308 5293
+f 5309 5293 5427
+f 5293 5294 5295
+f 5295 5427 5293
+f 5278 5298 5276
+f 5286 5281 5300
+f 5308 5310 5299
+f 5304 5303 5312
+f 5268 5205 5229
+f 5270 5273 5206
+f 5216 5207 5206
+f 5206 5316 5216
+f 5318 5216 5316
+f 5318 5218 5216
+f 5316 5273 5279
+f 5279 5283 5316
+f 5317 5316 5283
+f 5320 5218 5318
+f 5320 5318 5317
+f 5320 5321 5220
+f 5220 5218 5320
+f 5323 5826 5220
+f 5323 5220 5321
+f 5321 5319 5322
+f 5287 5317 5285
+f 5317 5283 5285
+f 5317 5324 5319
+f 5324 5287 5911
+f 5287 5307 5911
+f 5322 5319 5324
+f 1909 5326 1907
+f 5326 5331 5325
+f 5327 5325 5331
+f 5326 1909 5328
+f 5153 5329 5029
+f 5328 5029 5329
+f 5330 5329 5153
+f 5335 5334 1920
+f 5336 5334 5333
+f 1920 5334 5337
+f 1920 5337 1919
+f 19187 5339 5337
+f 19187 5337 5336
+f 1972 1919 5337
+f 5341 5339 19187
+f 5341 19188 19189
+f 5339 19189 1981
+f 19189 5339 5341
+f 19187 5336 5176
+f 5176 5178 19187
+f 5208 19190 5340
+f 5341 19187 5178
+f 5341 5178 5208
+f 5341 5340 19188
+f 1983 1981 19189
+f 1983 19189 5345
+f 5345 19189 19188
+f 5342 1983 5345
+f 5343 5340 19190
+f 5345 19188 5340
+f 5208 5209 19190
+f 5343 19190 5209
+f 5343 5347 5344
+f 5348 5346 5347
+f 5344 5347 5346
+f 5222 5227 5348
+f 4926 5350 4927
+f 5350 5351 5349
+f 5351 5350 5353
+f 4975 4974 5352
+f 4974 5349 5351
+f 5354 5361 5359
+f 5359 5352 5351
+f 5359 5351 5354
+f 5361 5354 5363
+f 4980 4982 5358
+f 19171 4981 5411
+f 5411 4981 4980
+f 5411 4980 5358
+f 5357 5411 5358
+f 5356 5355 5362
+f 5352 5358 4982
+f 5355 5358 5352
+f 5355 5352 5359
+f 5365 5362 5360
+f 5369 5367 5368
+f 5372 5096 5102
+f 5113 5374 5350
+f 5372 5374 5113
+f 5372 5373 5376
+f 5382 5378 5376
+f 19191 5382 5376
+f 5376 5373 5115
+f 5376 5115 19191
+f 5115 19179 19191
+f 5374 5363 5354
+f 5353 5350 5374
+f 19191 5388 5382
+f 5384 5381 5387
+f 19192 5370 5368
+f 5368 5383 19192
+f 19192 5383 5384
+f 5577 5384 5387
+f 5577 5387 5386
+f 5370 5582 5585
+f 5585 5371 5370
+f 5582 5370 19192
+f 5581 5582 19192
+f 19192 19193 5581
+f 19193 19192 5384
+f 19193 5384 5577
+f 5387 5381 5382
+f 5387 5388 5385
+f 5393 5237 5235
+f 5416 5397 5394
+f 5389 5237 5393
+f 5389 5391 5390
+f 5389 5395 5391
+f 5391 19194 5296
+f 19194 5423 5296
+f 19194 5391 5395
+f 19194 5425 5423
+f 5392 5389 5393
+f 5395 5392 5396
+f 5395 5399 19194
+f 5399 5430 5425
+f 5425 19194 5399
+f 5398 5410 5430
+f 5430 5399 5398
+f 5416 5401 5397
+f 5400 5396 5397
+f 5400 5397 5401
+f 5400 19195 5396
+f 5402 5405 5400
+f 5398 5396 19195
+f 5409 5398 19195
+f 5410 5398 5409
+f 5404 19195 5400
+f 5404 5400 5405
+f 5409 19195 5404
+f 5413 5235 5267
+f 5267 19171 5411
+f 5413 5393 5235
+f 5357 5414 5412
+f 5412 5411 5357
+f 5366 5417 5415
+f 5415 5356 5366
+f 5417 5402 5401
+f 5419 5422 5418
+f 5418 5417 5366
+f 5418 5366 5365
+f 5419 5365 5367
+f 5420 5403 5402
+f 5297 5296 5423
+f 5423 5429 5295
+f 5424 5429 5423
+f 5426 5428 5436
+f 5429 5428 5427
+f 5433 5437 5432
+f 5434 5424 5432
+f 5438 5315 5439
+f 5440 5443 5438
+f 5443 5440 5441
+f 5448 6320 5442
+f 5442 5441 5448
+f 5444 5309 5426
+f 5311 5309 5444
+f 5444 5426 5436
+f 5445 5444 5446
+f 5445 5439 5314
+f 5314 5311 5445
+f 5439 5315 5314
+f 5440 5439 5445
+f 5436 5447 5444
+f 5447 5436 5435
+f 5446 5441 5440
+f 5455 5433 5410
+f 5455 5451 5437
+f 5437 5433 5455
+f 5437 5450 5434
+f 19196 5457 5456
+f 19196 5456 5454
+f 19196 5466 5458
+f 5458 5457 19196
+f 6320 5448 5461
+f 5462 5447 5459
+f 5447 5435 5449
+f 5448 5447 5462
+f 5462 5459 5463
+f 5462 5463 5460
+f 5464 5463 5459
+f 5465 5506 5463
+f 5464 5449 5458
+f 5467 5463 5506
+f 5471 5473 5404
+f 5404 5403 5471
+f 5470 5493 5469
+f 5469 5407 5406
+f 5470 5406 5404
+f 5470 5404 5473
+f 5470 5473 5472
+f 5474 5472 5480
+f 5480 5532 19197
+f 5484 5535 5532
+f 19197 5474 5480
+f 5532 5480 5484
+f 5476 5420 5421
+f 5477 5475 5422
+f 5422 5419 5477
+f 5471 5403 5420
+f 5471 5420 5476
+f 5482 5486 5481
+f 5489 5488 5490
+f 5491 5518 5489
+f 5521 5487 5489
+f 5521 5489 5518
+f 5469 5492 5452
+f 5452 5407 5469
+f 5452 5497 5454
+f 5497 5452 5492
+f 5493 5494 5492
+f 5495 5488 5499
+f 5499 5496 5495
+f 5497 5496 5499
+f 5500 5499 5488
+f 5501 5498 5499
+f 5454 5498 19196
+f 19196 5498 5501
+f 19196 5501 5466
+f 5502 5493 5470
+f 5490 5495 5494
+f 5491 5490 5502
+f 5488 5487 5500
+f 5511 5487 5521
+f 6460 5514 5516
+f 5504 5465 5501
+f 5506 5465 5504
+f 5501 5500 5507
+f 5510 5505 5504
+f 5466 5501 5465
+f 5505 5515 5468
+f 5513 5505 5510
+f 5515 5505 5513
+f 5508 5504 5507
+f 5487 5508 5507
+f 5487 5511 5508
+f 5509 5517 5513
+f 5514 5513 5517
+f 5517 5516 5514
+f 5531 5519 5518
+f 5518 5491 5531
+f 5519 19198 5520
+f 5519 5531 5522
+f 5523 5527 19198
+f 19198 5519 5523
+f 5524 5523 5522
+f 5527 5523 5524
+f 5528 5676 5524
+f 5530 5524 5676
+f 5503 5474 19197
+f 5522 5503 5532
+f 5503 19197 5532
+f 5533 5525 5522
+f 5534 5529 5525
+f 5525 5533 5534
+f 5527 5544 5539
+f 5544 5538 5539
+f 5521 5520 5511
+f 5511 5537 5536
+f 5539 5520 19198
+f 5537 5520 5539
+f 5527 5539 19198
+f 5541 5512 5536
+f 5541 6470 6460
+f 6460 5516 5541
+f 6470 5541 5542
+f 5526 5547 5545
+f 5527 5545 5544
+f 5545 5527 5526
+f 5547 5526 5530
+f 19199 5544 5543
+f 5538 5544 19199
+f 5540 5538 19199
+f 5540 19199 5549
+f 5546 3988 5543
+f 5543 3988 3990
+f 5543 3990 19199
+f 5483 5371 5585
+f 4916 5016 5015
+f 5015 4905 4916
+f 5550 4917 5551
+f 5558 19179 5116
+f 5116 5550 5558
+f 5559 5558 5550
+f 5550 5552 5559
+f 5559 5552 5553
+f 5559 5553 5555
+f 5555 5553 5554
+f 5388 19191 5558
+f 19191 19179 5558
+f 5561 5557 5555
+f 19200 5584 5583
+f 19201 5663 19200
+f 19200 5583 19201
+f 5664 5663 19202
+f 19203 5564 5664
+f 5664 19202 19203
+f 19204 19203 19202
+f 19202 5663 19201
+f 19202 19201 19204
+f 5564 19203 5565
+f 5563 5565 5567
+f 5565 19203 19204
+f 5565 19204 5566
+f 5568 5563 5567
+f 5568 5567 5569
+f 5570 5572 5568
+f 5569 5567 5566
+f 5573 5727 5572
+f 5574 5573 5570
+f 5734 5727 5573
+f 19205 5734 5573
+f 5573 5574 19205
+f 19205 5752 5734
+f 5752 19205 5628
+f 5577 5386 5575
+f 5581 19193 5580
+f 5583 5582 5579
+f 5586 5588 5578
+f 5588 19201 5583
+f 5576 5587 5580
+f 5580 19193 5577
+f 5595 5590 5576
+f 5576 5575 5595
+f 19206 5592 5589
+f 5589 5590 19206
+f 19206 5590 5595
+f 19206 5595 5594
+f 19207 19204 5588
+f 5588 5586 19207
+f 19207 5586 5587
+f 19207 5587 5591
+f 19201 5588 19204
+f 5602 5566 19204
+f 19204 19207 5602
+f 5602 19207 5591
+f 5602 5591 5592
+f 5587 5576 5589
+f 5593 5595 5575
+f 5575 5386 5385
+f 5575 5385 5593
+f 5597 5604 5592
+f 5606 5604 5597
+f 5596 5606 5597
+f 5597 5592 19206
+f 5597 19206 5598
+f 5598 19206 5594
+f 5601 5600 5622
+f 5598 5601 5599
+f 5598 5594 5600
+f 5602 5592 5604
+f 5607 5605 5603
+f 5603 5604 5606
+f 5612 5608 5596
+f 5617 19208 5613
+f 5618 5619 5615
+f 5618 5613 5619
+f 5620 5610 5599
+f 5623 5614 5610
+f 5610 5620 5623
+f 5623 5620 5621
+f 5605 5607 5625
+f 5609 5625 5607
+f 5626 19205 5574
+f 5574 5605 5626
+f 5613 19208 5627
+f 5629 5626 5627
+f 5629 5627 19208
+f 5617 5630 19208
+f 5630 5629 19208
+f 5629 5628 19205
+f 19205 5626 5629
+f 5631 5624 5621
+f 5631 5621 5622
+f 5593 5821 5631
+f 5632 5535 5484
+f 5632 5484 5633
+f 5634 5680 5632
+f 5636 5635 5680
+f 5680 5634 5636
+f 5675 5707 5639
+f 5638 5689 5635
+f 5695 5638 5707
+f 5638 5639 5707
+f 5695 5689 5638
+f 19200 5642 5641
+f 5482 5483 5584
+f 5641 5584 19200
+f 5641 5643 5486
+f 5486 5482 5641
+f 5646 5642 19200
+f 5646 19200 5663
+f 5647 5659 5648
+f 5640 5644 5647
+f 5649 5633 5484
+f 5633 5649 5650
+f 5651 5654 5652
+f 5648 5659 5653
+f 5633 5652 5655
+f 5633 5655 5634
+f 5650 5652 5633
+f 5647 5657 5659
+f 5668 5716 5656
+f 5716 5668 5667
+f 5657 5661 5658
+f 5716 5662 5657
+f 5656 5716 5657
+f 5657 5662 5661
+f 5645 5646 5663
+f 5666 5644 5645
+f 19209 5645 5665
+f 5665 5664 5564
+f 5656 5666 19209
+f 5666 5645 19209
+f 5666 5656 5647
+f 5564 5668 19209
+f 19209 5665 5564
+f 5668 5656 19209
+f 5668 5564 5563
+f 5670 5672 5654
+f 5637 5672 5669
+f 5669 5672 5670
+f 5673 5671 5661
+f 5637 5669 5673
+f 5660 5673 5661
+f 5529 5677 5528
+f 5698 5676 5677
+f 5681 5698 5677
+f 5682 5678 5679
+f 5692 5682 5679
+f 5680 5692 5679
+f 3991 5546 5548
+f 5685 5683 5676
+f 5684 3991 5683
+f 5684 5683 5685
+f 5685 3994 3993
+f 5698 3994 5685
+f 5685 5676 5698
+f 5699 5698 5681
+f 5699 5681 5687
+f 5686 5699 5687
+f 5690 5691 5682
+f 5682 5692 5690
+f 5691 5690 5689
+f 5635 5690 5692
+f 5691 5687 5681
+f 5681 5682 5691
+f 5693 5689 5694
+f 5697 4000 3998
+f 4000 5697 5701
+f 5702 5707 5675
+f 5706 5695 5707
+f 5710 5709 5704
+f 5711 19210 5708
+f 5708 5709 5711
+f 5713 5712 19210
+f 19210 5711 5713
+f 5660 5662 5722
+f 5721 5722 5719
+f 5715 5722 5662
+f 5662 5716 5715
+f 5718 5717 5726
+f 5728 5718 5726
+f 5724 5723 5721
+f 5721 5719 5724
+f 5725 5710 5723
+f 5724 5719 5718
+f 5724 5718 5728
+f 5667 5563 5568
+f 5726 5717 5572
+f 5733 5731 5728
+f 5728 5726 5733
+f 5725 5724 5728
+f 5786 5731 5733
+f 5786 5733 5784
+f 5732 5791 5730
+f 5786 5732 5729
+f 5729 5731 5786
+f 5784 5733 5734
+f 5784 5734 5787
+f 5787 5734 5752
+f 5711 5725 5730
+f 5730 5713 5711
+f 5791 5714 5713
+f 5713 5730 5791
+f 5735 5686 5688
+f 5738 5694 5695
+f 5738 5695 5706
+f 5688 5694 5738
+f 5738 5706 5705
+f 5735 19211 5741
+f 5735 5741 5700
+f 5700 5686 5735
+f 5742 5741 19212
+f 19212 5741 19211
+f 5743 19211 5735
+f 5743 5735 5737
+f 19212 5745 5742
+f 5745 19212 5743
+f 19212 19211 5743
+f 5746 5748 5740
+f 5746 5708 19210
+f 5712 5801 5749
+f 5712 5749 5746
+f 5746 19210 5712
+f 5747 5748 5749
+f 5749 5800 5747
+f 5800 5749 5801
+f 5747 5807 5750
+f 5807 5747 5800
+f 5585 5584 5483
+f 5631 5821 5820
+f 5756 5757 5618
+f 5760 5757 5758
+f 5758 5759 5764
+f 5764 5760 5758
+f 5759 5761 5763
+f 5765 5763 5761
+f 5761 5762 5765
+f 5763 5766 5764
+f 5765 5773 5766
+f 5755 5769 5767
+f 5769 5771 5768
+f 5768 5767 5769
+f 5753 5768 5771
+f 5776 5775 5770
+f 5770 5764 5776
+f 5779 5778 5753
+f 5779 5753 5771
+f 5771 5770 5779
+f 5779 5770 5775
+f 5772 5776 5764
+f 5779 5775 5777
+f 5631 5774 5773
+f 5631 5765 5762
+f 5631 5762 5624
+f 5732 5792 5791
+f 5789 5792 5732
+f 5732 5786 5785
+f 5732 5785 5789
+f 5798 5792 5789
+f 5798 5789 5796
+f 5788 5796 5789
+f 5789 5785 5787
+f 5751 5789 5787
+f 5787 5752 5751
+f 5781 5714 5790
+f 5790 5792 5793
+f 5793 5792 5798
+f 5790 5795 5783
+f 5783 5781 5790
+f 5796 5788 5813
+f 5813 5797 5796
+f 5799 5794 5793
+f 5793 5797 5799
+f 5799 5797 5813
+f 5799 5813 5815
+f 5802 5801 5712
+f 5802 5712 5782
+f 5802 5805 5800
+f 5802 5782 5783
+f 5783 5803 5802
+f 5807 5800 5805
+f 5795 5809 5803
+f 5808 5804 5803
+f 5819 5811 5799
+f 5799 5815 5819
+f 5810 5808 5811
+f 5811 7037 5810
+f 5818 7037 5811
+f 5811 5819 5818
+f 5815 5813 5812
+f 19213 5816 5812
+f 5812 5814 19213
+f 5631 5820 19214
+f 19214 19213 5814
+f 19214 5814 5631
+f 5819 5815 5816
+f 5819 5816 5817
+f 5816 19213 5817
+f 7048 5817 19213
+f 19213 19214 7048
+f 5561 5562 7079
+f 7079 7048 19214
+f 5557 7079 19214
+f 19214 5820 5557
+f 5593 5385 5557
+f 7079 5557 5561
+f 5823 5213 5212
+f 5822 5212 5215
+f 5829 5825 5828
+f 5824 5833 5830
+f 5830 5823 5824
+f 5831 5830 5833
+f 5226 5224 5831
+f 5833 5824 5827
+f 5829 5923 5832
+f 5832 5827 5829
+f 5842 5841 5834
+f 5923 5842 5834
+f 5834 5832 5923
+f 5839 5835 5840
+f 5836 5835 5839
+f 5938 5860 5843
+f 5938 5843 5839
+f 5839 5838 5938
+f 5848 5870 5849
+f 5871 5850 5847
+f 5871 19215 5853
+f 5853 5850 5871
+f 5851 5844 5848
+f 5845 5851 5852
+f 5850 5848 5847
+f 5870 5857 5859
+f 5856 5859 5857
+f 5843 5862 5854
+f 5856 5854 5862
+f 5862 5843 5860
+f 19216 19217 19218
+f 19218 19215 5871
+f 19218 5871 19216
+f 5871 5867 19216
+f 5867 5866 19216
+f 5868 5879 5866
+f 5868 5875 5879
+f 5875 5868 5872
+f 5879 19216 5866
+f 5879 5878 19217
+f 5879 19217 19216
+f 5875 5876 5879
+f 5876 5875 5874
+f 5882 5881 5315
+f 5307 5884 5941
+f 5884 5307 5306
+f 5895 5943 5941
+f 5895 5941 5884
+f 5887 5886 5943
+f 5887 5943 5895
+f 5887 5898 5885
+f 5313 5889 5883
+f 5313 5315 5881
+f 5313 5881 5889
+f 5881 5891 5888
+f 5890 5888 5891
+f 5890 5896 5884
+f 5895 5884 5896
+f 5890 5892 5896
+f 5893 5891 5880
+f 5897 5887 5894
+f 5900 5903 5897
+f 5904 6348 5908
+f 6348 6350 5906
+f 5906 5908 6348
+f 5828 5826 5323
+f 19219 5829 5828
+f 5322 19220 5323
+f 5828 5323 19220
+f 19221 19219 5828
+f 19221 5828 19220
+f 19219 5920 5829
+f 19221 5917 5920
+f 5920 19219 19221
+f 5324 5911 5910
+f 5909 5914 5910
+f 19220 5322 5910
+f 19220 5910 5913
+f 5913 5915 19221
+f 19221 19220 5913
+f 5917 19221 5915
+f 5912 5918 5915
+f 5919 5924 5916
+f 5923 5829 5920
+f 5928 5932 5933
+f 5933 5924 5928
+f 5931 5930 5925
+f 5927 5926 19222
+f 5940 5927 19222
+f 19222 6008 5940
+f 5934 5927 5940
+f 5940 5935 5934
+f 5939 5860 5938
+f 5937 5936 5935
+f 5935 5940 5937
+f 5940 6008 5939
+f 5921 5924 5933
+f 5934 5933 5927
+f 5307 5909 5911
+f 5943 5909 5941
+f 5943 5886 5944
+f 5946 5914 5942
+f 5946 5942 5944
+f 5949 5944 5886
+f 5946 5944 5949
+f 5949 5886 5885
+f 5949 5954 5946
+f 5912 5914 5946
+f 5946 5918 5912
+f 5946 5954 5945
+f 5950 5954 5949
+f 5950 5949 5948
+f 5951 5948 5947
+f 5955 5929 5931
+f 5931 5952 5955
+f 5952 5951 5955
+f 5905 5908 5955
+f 5955 5951 5905
+f 5955 5908 5907
+f 5956 5968 5959
+f 5965 5964 5971
+f 5973 5969 5964
+f 5969 5966 5964
+f 5906 6350 5962
+f 5962 5976 5972
+f 5972 5961 5962
+f 6403 5962 6350
+f 5974 5976 5962
+f 5974 5962 6403
+f 5977 5971 5976
+f 5978 5982 5979
+f 5965 5978 5979
+f 5984 5973 5963
+f 5994 5995 5930
+f 5925 5930 5995
+f 5996 5957 5959
+f 6000 5995 5996
+f 6002 6000 6001
+f 5993 6004 19222
+f 19222 5926 5993
+f 6009 6008 19222
+f 6009 19222 6004
+f 6005 6009 6004
+f 6007 5861 5860
+f 6007 5860 5939
+f 6006 5864 5863
+f 6010 6013 5865
+f 6005 6011 6010
+f 6010 6006 6005
+f 6014 6003 5992
+f 6012 6011 6003
+f 6012 6003 6014
+f 6015 6016 6022
+f 6001 6018 6002
+f 6017 6023 6018
+f 5998 6019 6001
+f 6021 6023 6017
+f 5873 6028 5874
+f 6013 6028 5873
+f 6012 6030 6013
+f 6028 6032 6031
+f 5877 5876 6031
+f 6027 6022 6032
+f 6028 6027 6032
+f 6032 6022 6016
+f 6030 6012 6014
+f 6027 6023 6022
+f 5997 5968 5970
+f 6019 5998 6035
+f 6037 6038 6020
+f 6038 6037 6036
+f 6039 6046 6040
+f 6024 6020 6038
+f 5990 6042 6041
+f 6042 5990 5989
+f 6042 6039 6038
+f 6054 6048 6047
+f 6054 6047 6050
+f 6048 6051 3253
+f 6053 3273 3253
+f 6053 3253 6051
+f 6051 6048 6054
+f 6057 6052 6051
+f 6057 6051 6055
+f 5348 6058 6050
+f 6050 5346 5348
+f 6058 6059 6054
+f 6054 6050 6058
+f 6058 5348 5227
+f 6058 5834 5841
+f 6058 5841 6059
+f 5840 5835 6055
+f 5840 6055 6054
+f 6055 5835 5837
+f 6055 5837 6056
+f 6059 5841 5840
+f 6053 6060 3274
+f 3274 3273 6053
+f 3277 3274 6060
+f 6066 6062 6052
+f 6068 5870 6069
+f 6069 5844 3280
+f 6070 6111 6110
+f 6070 6110 6071
+f 6072 6075 6070
+f 6077 6111 6070
+f 6078 6080 6077
+f 6078 6081 6080
+f 6081 6089 6079
+f 6075 6084 6076
+f 6083 6086 6084
+f 6076 6086 6078
+f 6086 6076 6084
+f 6082 6084 6075
+f 6081 6078 6086
+f 6085 6089 6081
+f 6085 6081 6086
+f 6087 6088 6085
+f 6082 6091 6083
+f 6091 6184 6090
+f 6090 6087 6083
+f 6088 6087 6090
+f 6088 6090 6232
+f 6115 6143 6100
+f 6115 6100 6099
+f 5845 6092 5846
+f 6102 3342 6092
+f 6094 5853 19215
+f 6097 6092 5845
+f 5852 6093 5845
+f 6097 5845 6093
+f 6097 6096 6092
+f 5853 6094 6093
+f 6097 6093 6094
+f 6102 6092 6096
+f 6098 6102 6096
+f 6107 6102 6098
+f 6101 6100 6143
+f 6103 6106 6104
+f 6104 6109 3348
+f 6107 6103 6102
+f 6106 6103 6107
+f 6111 6115 6114
+f 6143 6115 6111
+f 6111 6114 6112
+f 6099 6113 6114
+f 6113 6099 6145
+f 6124 6116 6113
+f 6113 6145 6124
+f 6124 6145 6125
+f 6130 6122 6121
+f 6117 6119 6120
+f 6123 6116 6128
+f 6071 6112 6123
+f 6124 6128 6116
+f 6218 6217 6123
+f 6218 6123 6128
+f 6218 6128 6127
+f 6217 6073 6072
+f 6072 6123 6217
+f 6141 6118 6117
+f 6126 6129 6128
+f 6128 6124 6126
+f 6129 6122 6130
+f 6117 6122 6131
+f 6141 6117 6131
+f 6126 6149 6131
+f 6126 6131 6129
+f 6149 6142 6141
+f 6141 6131 6149
+f 19215 19218 6132
+f 19215 6132 6094
+f 19217 6135 6132
+f 6132 19218 19217
+f 6134 19223 6137
+f 6137 6133 6134
+f 6098 6095 6133
+f 6119 6135 5878
+f 6135 19217 5878
+f 6135 6119 6118
+f 6118 6141 6139
+f 6139 6134 6118
+f 6134 6139 19223
+f 6140 6139 6141
+f 6138 6137 19223
+f 6138 19223 6139
+f 19224 6143 6077
+f 6101 6143 19224
+f 19224 6077 6080
+f 19224 6147 6101
+f 6147 19224 6080
+f 6144 6101 6147
+f 6144 6151 6145
+f 6147 6151 6144
+f 6151 6147 6146
+f 6125 6145 6151
+f 6079 6146 6080
+f 6150 6151 6146
+f 6150 6146 19225
+f 6224 6150 19225
+f 6224 6148 6149
+f 6149 6150 6224
+f 6146 6079 19226
+f 6088 19226 6079
+f 6230 6146 19226
+f 6230 6224 19225
+f 19225 6146 6230
+f 6232 6230 19226
+f 19226 6088 6232
+f 6105 6107 6136
+f 6105 6136 6137
+f 6156 6137 6138
+f 6154 6140 6142
+f 6138 6140 6154
+f 6156 6138 6154
+f 6137 6156 6105
+f 6240 6155 6157
+f 6153 6105 6155
+f 6240 6108 6153
+f 6240 6153 6155
+f 3348 6158 3296
+f 6158 6160 3297
+f 6160 6166 3297
+f 6163 3297 6166
+f 6167 6173 6164
+f 6164 6166 6167
+f 6240 6170 6168
+f 6168 6108 6240
+f 6169 6168 6170
+f 6171 6176 6172
+f 6174 6167 6175
+f 6167 6162 6172
+f 6174 6175 6177
+f 6177 6175 6289
+f 6196 6190 6182
+f 6196 6182 6181
+f 19227 6082 6074
+f 19227 6074 6179
+f 6179 6188 19227
+f 6186 19227 6188
+f 6185 6091 6082
+f 6185 6082 19227
+f 6185 19227 6186
+f 6187 6193 6183
+f 6195 6244 6192
+f 6191 6194 6189
+f 6198 6196 6199
+f 6201 6196 6198
+f 6485 6200 6242
+f 6045 6485 6242
+f 6485 6202 6198
+f 6198 6200 6485
+f 6215 6201 6202
+f 6486 6488 6202
+f 6202 6485 6486
+f 6488 6490 6215
+f 6215 6202 6488
+f 6203 6207 6204
+f 6197 6209 6191
+f 6191 6190 6197
+f 6208 6209 6197
+f 6209 6211 6195
+f 6195 6191 6209
+f 6260 6244 6211
+f 6211 6244 6195
+f 6211 6212 6260
+f 6215 6214 6208
+f 6215 6490 6214
+f 6210 6209 6213
+f 6213 6207 6203
+f 19228 6219 6216
+f 6219 6130 6121
+f 6219 6121 6216
+f 6120 5877 6015
+f 19228 6181 6180
+f 6180 6218 19228
+f 6218 6219 19228
+f 6216 6222 19228
+f 6222 6216 6220
+f 6221 6199 6222
+f 6222 6220 6221
+f 6181 19228 6222
+f 6196 6222 6199
+f 6230 6229 6231
+f 6234 6236 6226
+f 6154 6237 6156
+f 6238 6237 6226
+f 6236 6235 6241
+f 19229 6221 6026
+f 6199 6221 19229
+f 6040 19230 19229
+f 6040 19229 6026
+f 19230 6040 6046
+f 19229 6200 6199
+f 6200 19229 19230
+f 6242 19230 6046
+f 6242 6200 19230
+f 6183 6243 6090
+f 6090 6184 6183
+f 6243 6233 6232
+f 6248 6243 6183
+f 6248 6183 6193
+f 6251 6233 6243
+f 6251 6243 6248
+f 6247 6193 6192
+f 6192 6245 6247
+f 6249 6247 6246
+f 6251 6248 6249
+f 6254 6253 6252
+f 19231 6261 6212
+f 19231 6212 6205
+f 6263 6261 19231
+f 6256 19231 6204
+f 6205 6204 19231
+f 19231 6258 6263
+f 6256 6204 6206
+f 6257 19231 6256
+f 19231 6257 6258
+f 6268 6258 6259
+f 6260 6261 6245
+f 6262 6246 6245
+f 6260 6212 6261
+f 19232 6264 6265
+f 19232 6269 6271
+f 6271 6254 6264
+f 6271 6264 19232
+f 6269 19232 6265
+f 6267 6265 6258
+f 6267 6258 6268
+f 6266 6268 6272
+f 6274 6270 6272
+f 6270 6269 6266
+f 6270 6266 6272
+f 6227 6233 6251
+f 6227 6251 6250
+f 6250 6253 6277
+f 6250 6277 6228
+f 6250 6228 6227
+f 6277 19233 6281
+f 6281 6235 6228
+f 6281 6228 6277
+f 6276 6253 6254
+f 6276 6286 19233
+f 19233 6277 6276
+f 19234 6170 6240
+f 19234 6240 6239
+f 19235 6171 6170
+f 19235 6170 19234
+f 6278 19234 6239
+f 6284 19235 19234
+f 6284 19234 6278
+f 19235 6176 6171
+f 6279 6176 19235
+f 6279 19235 6284
+f 6278 6241 6235
+f 6283 6278 6281
+f 6281 19233 6282
+f 6282 6285 6283
+f 6285 6293 6280
+f 6285 6280 6279
+f 6285 6282 19233
+f 19233 6286 6285
+f 6287 6293 6285
+f 6176 6289 6175
+f 6289 6176 6280
+f 6293 6292 6288
+f 6288 6280 6293
+f 6307 6290 19236
+f 19236 6290 6288
+f 6596 6290 6307
+f 6294 6307 19236
+f 6288 6294 19236
+f 6307 6306 6596
+f 6254 6271 6295
+f 6254 6295 6276
+f 6286 6276 6296
+f 6286 6297 6287
+f 6270 6302 6298
+f 6299 6303 6308
+f 6299 6308 6301
+f 6608 6308 6303
+f 6300 6301 6294
+f 6301 6308 6307
+f 6301 6307 6294
+f 6308 6608 6306
+f 3344 3347 3348
+f 5438 6310 5882
+f 5882 5315 5438
+f 6309 5880 5882
+f 5438 6314 6310
+f 6314 5438 5443
+f 6314 6317 6309
+f 6309 6310 6314
+f 6311 6309 6317
+f 6311 6330 6313
+f 6315 6314 5442
+f 6317 6314 6315
+f 6321 6315 6319
+f 6316 6323 6317
+f 6327 6317 6323
+f 6311 6317 6330
+f 6317 6327 6330
+f 6312 6324 5893
+f 5893 6325 5892
+f 6324 6344 6325
+f 6312 6313 6341
+f 6312 6341 6324
+f 6344 6324 6341
+f 5892 6325 5899
+f 6344 5903 5900
+f 5900 5899 6325
+f 5900 6325 6344
+f 6337 6330 6329
+f 6313 6330 6337
+f 6337 19237 6313
+f 6335 6337 6329
+f 6336 19237 6337
+f 6334 6329 6327
+f 6327 6331 6334
+f 6334 6331 6333
+f 6345 6344 6341
+f 6345 6341 6340
+f 6340 6346 6345
+f 6342 5903 6344
+f 6351 6347 6343
+f 6355 6349 6347
+f 6351 6355 6347
+f 6340 6313 19237
+f 6352 6340 19237
+f 6352 19237 6336
+f 6353 6346 6340
+f 6353 6352 6354
+f 6346 6353 6351
+f 6355 6351 6353
+f 6358 6359 6356
+f 6356 6321 6319
+f 6318 6320 5461
+f 6322 6321 6356
+f 6364 6323 6322
+f 6364 6322 6365
+f 6359 6365 6322
+f 6322 6356 6359
+f 6366 6368 6323
+f 6364 6366 6323
+f 5468 6361 6357
+f 6357 6360 6358
+f 6362 6365 6359
+f 6366 6364 6363
+f 6367 4015 6363
+f 6369 6328 6326
+f 6368 6373 6369
+f 6366 6373 6368
+f 6370 6328 6369
+f 6376 6373 6366
+f 6376 6366 4014
+f 6376 6378 6373
+f 6395 6386 6392
+f 6395 6392 19238
+f 6386 6383 6401
+f 6401 6392 6386
+f 6383 6386 6381
+f 6385 5981 5980
+f 6385 5980 6382
+f 6385 6382 6381
+f 6387 6386 6395
+f 6387 6397 6384
+f 6384 6385 6387
+f 19238 6392 6338
+f 6338 6333 6389
+f 6338 6389 19238
+f 6392 6401 6339
+f 6395 19238 6389
+f 6395 6389 6391
+f 6399 6383 6382
+f 6382 5975 6399
+f 6399 5975 5974
+f 6399 5974 6402
+f 6400 6402 6355
+f 6399 6401 6383
+f 6355 6402 6349
+f 5975 6382 5980
+f 6400 6354 6339
+f 6400 6339 6401
+f 6355 6354 6400
+f 6384 6405 5983
+f 6397 6406 6405
+f 6405 6384 6397
+f 6406 6397 6396
+f 6408 6396 6398
+f 6406 6396 6408
+f 5983 6405 6410
+f 6410 5987 5983
+f 5987 6410 5988
+f 6409 6410 6404
+f 6418 6406 6407
+f 6418 6423 6420
+f 6416 6412 6411
+f 6420 6411 6419
+f 6416 6422 6417
+f 6422 6416 6420
+f 6371 6426 6424
+f 6432 6393 6428
+f 6427 6431 6429
+f 6435 4004 6436
+f 6436 4004 4003
+f 6439 6432 6430
+f 6437 6440 6438
+f 6447 6453 6452
+f 6440 6447 6452
+f 6452 6438 6440
+f 4003 4005 6441
+f 6442 6441 4005
+f 4005 4008 6442
+f 4010 4011 6446
+f 6440 6443 6444
+f 6447 6440 6444
+f 6407 6438 6450
+f 6407 6450 6418
+f 6448 6450 6438
+f 5515 6457 6361
+f 6457 6455 6360
+f 6360 6361 6457
+f 6367 6359 6360
+f 6457 5515 5514
+f 6458 6462 6454
+f 4018 6454 6462
+f 6461 19239 6462
+f 19239 4019 4018
+f 4018 6462 19239
+f 6466 6377 6375
+f 6466 6375 4023
+f 6463 6379 6377
+f 6463 6377 6466
+f 6380 6379 6463
+f 6464 6463 6465
+f 4022 4027 6465
+f 6465 4023 4022
+f 6465 4027 4046
+f 5542 6469 6468
+f 6469 6473 6467
+f 6470 6459 6460
+f 5542 6468 6470
+f 6472 6471 19239
+f 6467 6472 19239
+f 19239 6461 6467
+f 4019 19239 6471
+f 6467 6473 6472
+f 5549 19199 19132
+f 6469 5549 19132
+f 19240 6473 6469
+f 6469 19132 19240
+f 19199 3990 4031
+f 19199 4031 19132
+f 19240 4035 4030
+f 4030 6473 19240
+f 19240 19132 4035
+f 6433 6380 6464
+f 6435 6433 6474
+f 4046 4045 6474
+f 6474 6464 4046
+f 4045 4043 6475
+f 6482 6493 6484
+f 6415 6417 6483
+f 6487 6484 6493
+f 6482 6492 6493
+f 6493 6478 6487
+f 6478 6480 6491
+f 6478 6491 6487
+f 6493 6492 6476
+f 6495 6494 6206
+f 6206 6207 6495
+f 6496 6495 6501
+f 6496 6530 6494
+f 6499 6480 6481
+f 6480 6499 6498
+f 6498 6497 6502
+f 6503 6530 6496
+f 6500 6502 6497
+f 6504 6523 6503
+f 6214 6490 6489
+f 6506 6213 6214
+f 6506 6214 6505
+f 6508 6505 6491
+f 6489 6491 6505
+f 6508 6501 6506
+f 6506 6505 6508
+f 6506 6495 6207
+f 6501 6495 6506
+f 6507 6498 6502
+f 6511 6512 6447
+f 6512 6513 6453
+f 6512 6453 6447
+f 6514 6516 6515
+f 6516 4089 6518
+f 6518 6481 6515
+f 6518 6515 6516
+f 6510 6509 6514
+f 6516 4090 4089
+f 6515 6477 6479
+f 6511 6447 6446
+f 6509 6511 6446
+f 6509 6446 4093
+f 6451 6513 6476
+f 6451 6453 6513
+f 6519 6518 4089
+f 6517 6520 6499
+f 6520 6521 6499
+f 6525 6520 4100
+f 6526 6559 6525
+f 6522 6524 6525
+f 6525 6559 6522
+f 6527 6255 6494
+f 6529 6255 6527
+f 19241 6528 6531
+f 6527 6531 6528
+f 19241 6538 6533
+f 6533 6528 19241
+f 6532 6528 6533
+f 6529 6532 6259
+f 6259 6257 6529
+f 6541 6259 6532
+f 6541 6532 6534
+f 6503 6557 6531
+f 6539 19241 6531
+f 6539 6531 6557
+f 6557 6503 6523
+f 6557 4118 6539
+f 6539 6535 6538
+f 6538 19241 6539
+f 6536 6538 6535
+f 6533 6537 6534
+f 6539 4112 4111
+f 4112 6539 4118
+f 6535 4111 4110
+f 6540 6541 6542
+f 6543 6546 6540
+f 6546 6543 6544
+f 6537 6536 6547
+f 6547 6548 6537
+f 6548 6534 6537
+f 4114 4113 6547
+f 6548 6547 6549
+f 4113 4130 6730
+f 6730 6549 4113
+f 4113 4115 4130
+f 6549 6730 6550
+f 6544 6543 6548
+f 6552 6544 6548
+f 6545 6544 6552
+f 6552 6548 6550
+f 6268 6259 6540
+f 6553 6268 6540
+f 6268 6273 6272
+f 6553 6540 6546
+f 6553 6546 6545
+f 6545 6551 6554
+f 6558 6559 6526
+f 6562 6165 6560
+f 6560 6564 6561
+f 6562 6561 3671
+f 6560 6164 6173
+f 6564 6560 6173
+f 6565 6572 6563
+f 6563 6567 3666
+f 3666 3671 6563
+f 3670 6569 3689
+f 6567 6569 3670
+f 3670 3666 6567
+f 6572 6568 6567
+f 6567 6563 6572
+f 6565 6174 6570
+f 6572 6565 6570
+f 6570 6174 6178
+f 6568 6572 6571
+f 6568 6575 6576
+f 6600 6576 6577
+f 6569 6578 3690
+f 3690 3689 6569
+f 6581 3691 3690
+f 6584 6583 3691
+f 6584 3691 6581
+f 6582 6586 6583
+f 6584 6587 6582
+f 6580 6589 6584
+f 6588 6587 6589
+f 6667 6588 6589
+f 6600 6579 6576
+f 6590 6579 6600
+f 6580 6579 6590
+f 6600 6591 6590
+f 6591 6600 6599
+f 6599 6634 6591
+f 6634 6599 6628
+f 6590 6593 6589
+f 6593 6590 6591
+f 6667 6589 6593
+f 6592 6591 6634
+f 6634 6594 6592
+f 6674 6594 6634
+f 6595 6601 6574
+f 6595 6602 6601
+f 6602 6595 6597
+f 6601 6598 6575
+f 6575 6574 6601
+f 6602 6605 6598
+f 6598 6604 6603
+f 6609 6611 6607
+f 6610 6616 6614
+f 6614 6611 6610
+f 6612 6613 6305
+f 6759 19242 6613
+f 6759 6613 6612
+f 6610 6609 6613
+f 6610 6613 19242
+f 6610 19242 6616
+f 6615 6614 6616
+f 6618 6605 6615
+f 6618 6617 6622
+f 6622 6619 6618
+f 6623 6620 19242
+f 6623 19242 6759
+f 6616 19242 6620
+f 6577 6629 6599
+f 6629 6631 6630
+f 6633 6699 6674
+f 6674 6634 6633
+f 6699 6633 6632
+f 6699 6632 6654
+f 6619 6636 6631
+f 6631 6604 6619
+f 6630 6631 6639
+f 6645 6640 6638
+f 6645 6638 6637
+f 6635 6638 6640
+f 6641 6640 6645
+f 6641 6645 19243
+f 6621 6643 6644
+f 6644 6647 6645
+f 6645 6647 6646
+f 6645 6646 19243
+f 6632 6630 6639
+f 6659 6650 6641
+f 6641 19243 6659
+f 6652 6653 6649
+f 6656 6702 6655
+f 6655 6653 6656
+f 6659 19243 6646
+f 6646 6657 6659
+f 6658 6657 19244
+f 6627 6626 6657
+f 6625 6660 19244
+f 19244 6657 6626
+f 19244 6626 6625
+f 19244 6660 6658
+f 6661 6660 6625
+f 6662 6658 6660
+f 6664 6656 6652
+f 6658 6664 6652
+f 6656 6663 6702
+f 6791 6663 6664
+f 6662 6791 6664
+f 6667 6670 6668
+f 6670 6680 6669
+f 6680 6682 6673
+f 3746 3750 3747
+f 3746 6672 3750
+f 6672 6671 3750
+f 6672 3746 6666
+f 6669 6680 6673
+f 6676 6670 6594
+f 6678 6680 6670
+f 6678 6670 6676
+f 6676 6594 6675
+f 6679 6684 6681
+f 6684 6679 6677
+f 6685 3766 6671
+f 6685 6671 6673
+f 6686 6685 6687
+f 6687 6689 6686
+f 6671 3766 3765
+f 6691 3771 6688
+f 6690 9749 6691
+f 6681 6692 6687
+f 6687 6682 6681
+f 19245 6692 6684
+f 6689 6692 19245
+f 6683 19246 6684
+f 19245 6684 19246
+f 6693 6689 19245
+f 19245 6695 6693
+f 6690 6689 6693
+f 6690 9757 9749
+f 9757 6690 6694
+f 6697 6717 6698
+f 6700 6699 6701
+f 6701 6705 6700
+f 6705 6709 6700
+f 6677 6676 6700
+f 19247 6683 6677
+f 19247 6677 6700
+f 19247 6700 6709
+f 19247 6709 6711
+f 6701 6703 6705
+f 6897 6702 6663
+f 6897 6663 6791
+f 6706 6703 6702
+f 6706 6702 6897
+f 6713 6909 6712
+f 19246 6683 19247
+f 19246 6695 19245
+f 19247 19248 19246
+f 19248 6714 19246
+f 19248 19247 6711
+f 6695 19246 6714
+f 6696 6695 6714
+f 6714 19249 6715
+f 6697 6696 6719
+f 6716 6697 6719
+f 6719 6696 6715
+f 19249 6719 6715
+f 6712 6721 19248
+f 19248 6711 6712
+f 6714 19248 6721
+f 6721 6712 6909
+f 6721 19249 6714
+f 6721 6909 6908
+f 6908 6722 6721
+f 6721 6720 19249
+f 19249 6724 6719
+f 6724 19249 6720
+f 6728 6724 6720
+f 6726 6724 6728
+f 6727 6928 6726
+f 6726 6728 6727
+f 6732 6747 6551
+f 6734 6733 6739
+f 6734 6275 6555
+f 6747 6733 6554
+f 6554 6551 6747
+f 6738 6758 6735
+f 6735 6737 6738
+f 6740 4130 4129
+f 6741 6729 6740
+f 6741 6745 6731
+f 4131 6742 6740
+f 6732 6731 6745
+f 4241 6751 6749
+f 6749 6742 4241
+f 6749 6750 6744
+f 6753 6752 6748
+f 6750 6753 6748
+f 6748 6744 6750
+f 6733 6747 6748
+f 6754 6801 19250
+f 19250 6757 6755
+f 19250 6755 6754
+f 6756 6738 6733
+f 6758 6738 6756
+f 6304 6275 6734
+f 6766 6624 6642
+f 6766 6642 6760
+f 6758 6763 6762
+f 6735 6758 6762
+f 6735 6762 6760
+f 6761 6764 6762
+f 6760 6764 6766
+f 6766 6769 6765
+f 6771 6788 6768
+f 6771 6768 6767
+f 6767 6769 6772
+f 19250 6783 6757
+f 19250 6778 6777
+f 6777 6783 19250
+f 6801 6782 6778
+f 6778 19250 6801
+f 6778 6781 6776
+f 6779 6776 6781
+f 6782 6807 6781
+f 6807 6809 6779
+f 6779 6781 6807
+f 6761 6763 6776
+f 6819 6785 6779
+f 6819 6779 6809
+f 6785 6821 6784
+f 19251 6773 6761
+f 6780 19251 6761
+f 19251 6786 6773
+f 6774 6773 6786
+f 6784 6821 19251
+f 19251 6780 6784
+f 6821 6837 6867
+f 6867 6786 19251
+f 6867 19251 6821
+f 6786 6867 6787
+f 6621 6736 6642
+f 6789 6790 6662
+f 6794 6751 4241
+f 6795 6794 4241
+f 6794 6802 6796
+f 6794 6796 6750
+f 6750 6751 6794
+f 6750 6796 6753
+f 6803 6802 6794
+f 6803 6794 6793
+f 6802 6800 6797
+f 6797 6796 6802
+f 6803 4251 6800
+f 6804 6798 6800
+f 6793 4246 6803
+f 6805 6782 6799
+f 6798 6814 6799
+f 6805 6799 6814
+f 6801 6799 6782
+f 6807 6782 6805
+f 6809 6807 6806
+f 6812 6808 6806
+f 6804 6838 6813
+f 6813 6805 6814
+f 6814 6798 6804
+f 6813 4259 6810
+f 6813 6810 6811
+f 6805 6813 6811
+f 4260 6813 6838
+f 6808 6817 6816
+f 6816 6809 6808
+f 4261 6817 6812
+f 6818 6817 4261
+f 6818 4261 6823
+f 6818 6825 6824
+f 6828 6824 6825
+f 6825 6835 6828
+f 6829 6828 6835
+f 6835 6834 6829
+f 6835 6825 6827
+f 6823 19144 6826
+f 19145 6830 6826
+f 6826 19144 19145
+f 6830 6832 6827
+f 6831 6833 6832
+f 6841 6836 6834
+f 6841 6834 6833
+f 6843 6844 6771
+f 6842 6849 6845
+f 6847 6842 6770
+f 6771 6770 6842
+f 6847 6853 6846
+f 6842 6846 6849
+f 6851 6846 6853
+f 6855 6848 6850
+f 6847 6770 6775
+f 6852 6775 6774
+f 6853 6864 6851
+f 6856 6851 6864
+f 6856 6873 6857
+f 6860 6858 6857
+f 6859 6857 6873
+f 6862 6853 6852
+f 6787 6862 6852
+f 6861 6864 6853
+f 6863 6856 6864
+f 6866 6954 6868
+f 6868 6862 6787
+f 6868 6787 6867
+f 6869 6871 6865
+f 6865 6861 6869
+f 6954 6955 6869
+f 6869 6868 6954
+f 6870 6869 6955
+f 6872 6880 19252
+f 19252 6873 6872
+f 6873 19252 6859
+f 6865 6876 6872
+f 6876 6880 6872
+f 6874 6891 6882
+f 6882 6875 6874
+f 6880 6881 6878
+f 6878 19252 6880
+f 6918 6859 19252
+f 19252 6878 6918
+f 6859 6918 6860
+f 6879 6878 6881
+f 6877 6918 6878
+f 6880 6875 6881
+f 6879 6881 6882
+f 6885 6886 6887
+f 6885 6889 6874
+f 6874 6876 6885
+f 6889 6885 6888
+f 19253 6890 6889
+f 19253 6889 6892
+f 6789 6788 6844
+f 6893 6896 6790
+f 6790 6789 6893
+f 6893 6843 6845
+f 6845 6894 6893
+f 6848 6901 6894
+f 6894 6901 6900
+f 6894 6900 6895
+f 6855 6898 6901
+f 6855 6901 6848
+f 6895 6902 6706
+f 6903 6707 6902
+f 6903 6902 6900
+f 6900 6899 6903
+f 6713 6708 6904
+f 6910 6904 6905
+f 6904 6906 6909
+f 6909 6713 6904
+f 6858 6912 6855
+f 6912 6898 6855
+f 6899 6898 6912
+f 6912 6905 6899
+f 6912 6858 6860
+f 6912 6913 6911
+f 6905 6911 6910
+f 6913 6916 6915
+f 6915 6911 6913
+f 6911 6906 6910
+f 6915 6917 6907
+f 6907 6906 6915
+f 6919 6918 6877
+f 6920 6914 6916
+f 6919 6921 6920
+f 6922 6891 6890
+f 6922 6890 19254
+f 19253 19255 19254
+f 19254 6890 19253
+f 6922 19254 19255
+f 6922 6942 6939
+f 6939 6884 6883
+f 6922 6939 6883
+f 6883 6882 6922
+f 6942 6922 19255
+f 6923 6926 6723
+f 6925 6924 6917
+f 6927 6923 6924
+f 6927 6924 6925
+f 6927 6937 6926
+f 6937 6929 6926
+f 6723 6926 6727
+f 6933 6936 6925
+f 6925 6914 6920
+f 6937 6949 6929
+f 6935 6947 6937
+f 6949 6937 6947
+f 6934 6921 6938
+f 6941 6934 6940
+f 6938 6939 6942
+f 6945 6941 6940
+f 6945 6940 6944
+f 6947 6935 6941
+f 6947 19256 6949
+f 6947 6941 6945
+f 19256 6947 6946
+f 6930 6929 6949
+f 6949 6948 6930
+f 19256 6950 6949
+f 6952 6830 19145
+f 6952 19145 4290
+f 6866 6837 6836
+f 6953 6956 6954
+f 6958 6870 6955
+f 6956 6958 6955
+f 6957 6959 6956
+f 6956 6953 6957
+f 6959 19257 6958
+f 19258 6961 6888
+f 6967 6961 19258
+f 6958 6967 19258
+f 19258 6888 6870
+f 6958 19258 6870
+f 6963 6892 6888
+f 6963 6888 6961
+f 6963 6965 19253
+f 19253 6892 6963
+f 6961 6960 6963
+f 6966 6962 6967
+f 6967 19259 6966
+f 19260 6967 6958
+f 19260 6958 19257
+f 6962 19261 6960
+f 6960 19261 6966
+f 6966 19261 6962
+f 19259 6967 19260
+f 19259 19260 19262
+f 19259 19262 19263
+f 6952 4290 4303
+f 6970 6952 6969
+f 6840 6831 6968
+f 19264 6970 6969
+f 19264 6969 7121
+f 4304 7121 6969
+f 6969 4302 4304
+f 19264 7122 6971
+f 6971 6970 19264
+f 7122 19264 7121
+f 7122 7129 19265
+f 19265 19257 6959
+f 6971 19265 6959
+f 6959 6957 6971
+f 6971 6957 6841
+f 6841 6840 6971
+f 19265 6971 7122
+f 19265 6975 19260
+f 19260 19257 19265
+f 19260 6975 19262
+f 6972 6975 19265
+f 6972 19265 7129
+f 6979 19263 19262
+f 6975 6974 6991
+f 6991 6979 19262
+f 6991 19262 6975
+f 19266 19255 19253
+f 19266 19253 6965
+f 19266 19267 19255
+f 6965 6964 19266
+f 19267 19266 6964
+f 6964 6966 19267
+f 19259 19268 6942
+f 6942 19255 19267
+f 6942 19267 19259
+f 19267 6966 19259
+f 19259 19263 19268
+f 6976 6944 6943
+f 19268 6976 6943
+f 6943 6942 19268
+f 6977 6945 6976
+f 6978 19256 6946
+f 6946 6945 6977
+f 6976 19268 19263
+f 6976 19263 6979
+f 6981 6984 6978
+f 6978 6977 6981
+f 6950 19256 6978
+f 6992 6980 6979
+f 6992 6979 6991
+f 6989 6981 6980
+f 6989 6980 6992
+f 6995 6990 6989
+f 6984 19269 6985
+f 19269 6984 6990
+f 6990 6995 19269
+f 6987 6985 19269
+f 19270 6987 19269
+f 19270 19269 6995
+f 19270 9883 6987
+f 9876 6987 9883
+f 4406 4400 5742
+f 6996 5745 5744
+f 7003 4409 6998
+f 7003 4423 4421
+f 7001 6998 7000
+f 7005 7040 7004
+f 7000 6999 7005
+f 7008 7007 4423
+f 4423 7003 7008
+f 7009 4459 4457
+f 7007 7008 7014
+f 7007 7014 7009
+f 7014 7008 7010
+f 7014 7010 7016
+f 7012 7016 7010
+f 7001 7004 7011
+f 4460 7019 7006
+f 7006 4451 4460
+f 7019 4460 7013
+f 7019 7013 7015
+f 7018 7017 7020
+f 7011 7004 7040
+f 7022 4452 7006
+f 7021 7023 4524
+f 4524 7022 7021
+f 7023 7027 4525
+f 4527 4525 7027
+f 7024 7028 7023
+f 7023 7021 7024
+f 7018 7020 7056
+f 7018 7056 7024
+f 4527 7027 7029
+f 7027 7028 7029
+f 7031 4535 4534
+f 7030 4527 7026
+f 7072 7034 7033
+f 7072 7174 7036
+f 7036 7034 7072
+f 7038 5806 5810
+f 7038 7042 7040
+f 7041 7045 7042
+f 5818 7043 7039
+f 7011 7040 7042
+f 7042 7046 7044
+f 7042 7044 7011
+f 7043 5817 7047
+f 7053 7047 5817
+f 7049 7053 5817
+f 7050 7046 7045
+f 7045 7047 7050
+f 7050 7047 7053
+f 7053 7052 7078
+f 7050 7053 7078
+f 7078 7054 7050
+f 7055 7024 7057
+f 7055 7057 7059
+f 7059 7057 7058
+f 7060 7059 7058
+f 7058 7063 7060
+f 7061 4560 4559
+f 4559 7059 7061
+f 4560 7061 7067
+f 7058 7020 7044
+f 7058 7044 7062
+f 7066 7029 4573
+f 7066 4573 4575
+f 7065 7064 7073
+f 7066 7065 7073
+f 7073 7026 7066
+f 7060 7065 7068
+f 7068 7061 7060
+f 4575 7068 7066
+f 7066 7068 7065
+f 7071 7073 7064
+f 7064 7063 7062
+f 7064 7062 7071
+f 7062 7046 7070
+f 7033 7026 7073
+f 7072 7071 7175
+f 7072 7175 7174
+f 7206 7175 7071
+f 7071 7070 7206
+f 7070 7208 7207
+f 7207 7206 7070
+f 7054 7208 7070
+f 7070 7046 7051
+f 7070 7051 7054
+f 7208 7054 7078
+f 7208 7078 7077
+f 7049 7048 7079
+f 7083 4656 4650
+f 7083 7080 7082
+f 7084 7081 7080
+f 7091 7085 7084
+f 7088 4664 4663
+f 7087 7080 7083
+f 7083 4650 4664
+f 7083 4664 7088
+f 7087 7089 7084
+f 7090 7130 7091
+f 7116 7130 7090
+f 7092 19165 4541
+f 7095 19165 7092
+f 7093 7036 19271
+f 7092 7093 7094
+f 7095 7092 7094
+f 7094 7093 19271
+f 7094 19271 7101
+f 7100 7101 19271
+f 7174 7100 19271
+f 19271 7036 7174
+f 19272 7109 7110
+f 19272 7110 4713
+f 19272 7099 7114
+f 7114 7109 19272
+f 7096 4702 4696
+f 7094 7101 7097
+f 19272 4713 4702
+f 4702 7096 19272
+f 7099 19272 7096
+f 7096 7097 7099
+f 7098 7114 7099
+f 7106 7105 7103
+f 7103 4708 7106
+f 7102 7103 7105
+f 4708 7103 7086
+f 7102 7108 7089
+f 7108 7113 7089
+f 7113 7108 7107
+f 7090 7089 7113
+f 7104 7109 7114
+f 7104 7114 7107
+f 7112 7114 7098
+f 7118 7112 7111
+f 7118 7154 7117
+f 7117 7158 7115
+f 7119 7121 4304
+f 7119 4304 4723
+f 7124 7126 7120
+f 7120 7119 7124
+f 7124 7119 4723
+f 7124 4723 4722
+f 7120 7125 7122
+f 7125 7120 7126
+f 7123 4733 7082
+f 7126 7124 7082
+f 7082 7081 7126
+f 7123 7124 4722
+f 7123 4722 4737
+f 7081 7085 7125
+f 7129 7122 7125
+f 7125 7085 7091
+f 7149 7138 19273
+f 7127 19273 7131
+f 7128 7131 6973
+f 7149 19273 7127
+f 7127 7116 7150
+f 7127 7150 7149
+f 6993 7131 6994
+f 7131 7132 19274
+f 19274 6995 6994
+f 19274 6994 7131
+f 7132 7131 19273
+f 19274 7134 19270
+f 19270 6995 19274
+f 7134 7137 9883
+f 9883 19270 7134
+f 7134 19274 7132
+f 7141 7132 19273
+f 7141 19273 7138
+f 7133 7143 7135
+f 7135 7143 7136
+f 7133 7142 7143
+f 7146 7143 7142
+f 7146 7144 7143
+f 10287 7146 7147
+f 7151 7150 7116
+f 7151 7116 7115
+f 7148 19275 7152
+f 7158 7157 7151
+f 7151 7115 7158
+f 7157 7158 7153
+f 7151 7157 7156
+f 7162 7165 19275
+f 7162 19275 7148
+f 7138 7152 7163
+f 7138 7163 7139
+f 7139 7164 7145
+f 7147 7145 7164
+f 7147 7164 10337
+f 7147 10337 10287
+f 7167 7152 19275
+f 7167 19275 7165
+f 7168 7152 7167
+f 7169 10337 7164
+f 7172 7169 7168
+f 7100 7176 7098
+f 7186 7177 7175
+f 7175 7206 7186
+f 7176 7111 7098
+f 7184 7190 7181
+f 7190 7194 7216
+f 7190 7216 7185
+f 7185 7181 7190
+f 7180 7111 7176
+f 7180 7176 7178
+f 7184 7180 7178
+f 7184 7178 7177
+f 7197 7328 7195
+f 7198 7197 7196
+f 7198 7196 7192
+f 7189 7184 7177
+f 7200 7203 7199
+f 7200 7201 7204
+f 7204 7203 7200
+f 7198 7191 7199
+f 7198 7199 7203
+f 7198 7203 7202
+f 7186 7207 7208
+f 7208 7209 7187
+f 7209 7208 7077
+f 7182 7214 7213
+f 7238 7213 7214
+f 7218 7214 7185
+f 7218 7185 7216
+f 7218 7216 7215
+f 7238 7214 7218
+f 7241 7238 7218
+f 7241 7218 7217
+f 7219 7220 7153
+f 7219 7154 7183
+f 7153 7220 7155
+f 7225 7220 7219
+f 7222 7159 7155
+f 7222 7155 7220
+f 7221 7220 7225
+f 7219 7183 7213
+f 7231 7222 7221
+f 7224 7227 7231
+f 7231 7221 7224
+f 7231 7230 7229
+f 7229 7161 7231
+f 7231 7161 7160
+f 7160 7222 7231
+f 7161 7229 7162
+f 7232 7229 7230
+f 7228 7165 7162
+f 7228 7229 7232
+f 7213 7237 7223
+f 7235 7237 7213
+f 7236 7235 7240
+f 7241 7239 7238
+f 7241 7334 7240
+f 7226 7223 7237
+f 7236 7244 7226
+f 7226 7244 7243
+f 7249 7242 7243
+f 7245 7244 7236
+f 7245 7236 7240
+f 7336 7245 7240
+f 7336 7240 7334
+f 7246 7245 7336
+f 7245 7247 7243
+f 7250 7253 7248
+f 7232 7227 7242
+f 7350 7259 7271
+f 10752 7254 7256
+f 10752 7256 7350
+f 7256 7259 7350
+f 7252 7262 7233
+f 7268 7267 19276
+f 7270 7273 7426
+f 7426 7272 7270
+f 7426 7273 19277
+f 7426 19277 7427
+f 7269 7259 7258
+f 7258 7264 7269
+f 7269 7264 7266
+f 7273 7269 7266
+f 7270 7271 7259
+f 7268 19276 19277
+f 7268 19277 7273
+f 7273 7266 7268
+f 19276 7267 7274
+f 7427 19277 7279
+f 7260 7427 7279
+f 7279 7261 7260
+f 7278 7441 7262
+f 7278 7262 7261
+f 7261 7279 7278
+f 19276 7274 7276
+f 7276 7279 19277
+f 7276 19277 19276
+f 7441 7278 7277
+f 7275 7277 7276
+f 7444 7277 7275
+f 7305 7301 7283
+f 7283 7301 7302
+f 7322 7280 7323
+f 7323 7280 7282
+f 7323 7282 7290
+f 19278 7283 7280
+f 7305 7283 19278
+f 4743 19278 7322
+f 19278 7280 7322
+f 19278 4743 4742
+f 4742 7305 19278
+f 7302 7295 7281
+f 7283 7302 7281
+f 7193 7292 7287
+f 7287 7215 7193
+f 7215 7287 7286
+f 7215 7286 7217
+f 7285 7287 7292
+f 7284 7217 7286
+f 7285 7288 7284
+f 7282 7291 7193
+f 7296 7293 7281
+f 7296 7315 7294
+f 7294 7293 7296
+f 7315 7296 7297
+f 7294 7315 7298
+f 7298 7288 7294
+f 7299 7301 7305
+f 4744 7304 7305
+f 4744 7305 4742
+f 7299 7304 7306
+f 7313 7295 7302
+f 7302 7308 7313
+f 7308 7300 7307
+f 7308 7307 19279
+f 7313 7308 19279
+f 7313 19279 7311
+f 7306 7303 19280
+f 19281 7307 7306
+f 19281 7306 19280
+f 19280 7303 4745
+f 7348 19280 4745
+f 7344 19280 7348
+f 7348 4745 4747
+f 7344 7343 19281
+f 19281 19280 7344
+f 19279 7307 19281
+f 19281 19282 19279
+f 19282 7311 19279
+f 7343 19282 19281
+f 7295 7313 7310
+f 7295 7310 7297
+f 7309 7315 7297
+f 7298 7337 7289
+f 7317 7337 7318
+f 7337 7298 7318
+f 7318 7298 7309
+f 7318 7309 7314
+f 7312 19283 7314
+f 19283 7319 7318
+f 19283 7318 7314
+f 4768 7322 7321
+f 7195 7326 7324
+f 7324 7196 7195
+f 4743 7322 4768
+f 7326 7195 7328
+f 19282 7329 7311
+f 7343 7355 19282
+f 7355 7329 19282
+f 7329 7355 7358
+f 7311 7329 7331
+f 7311 7331 7312
+f 19283 7312 7331
+f 7330 7332 19283
+f 19283 7331 7330
+f 7319 19283 7332
+f 19284 7246 7336
+f 7335 19284 7336
+f 19285 19284 7335
+f 7337 19285 7335
+f 7338 7246 19284
+f 7341 19284 19285
+f 19284 7341 7338
+f 7341 7342 7338
+f 7246 7338 7250
+f 7339 7253 7250
+f 7338 7342 7339
+f 7337 7317 19285
+f 19285 7317 7316
+f 19285 7316 7341
+f 7348 7345 7344
+f 7347 7343 7345
+f 7347 7345 7348
+f 7348 4798 7346
+f 7371 7316 7320
+f 7374 7425 7370
+f 7377 19286 7425
+f 7377 7425 7374
+f 7349 7271 7430
+f 10752 7350 7352
+f 7349 7352 7350
+f 7349 7430 7429
+f 7351 7349 7429
+f 19287 19288 19286
+f 19287 19286 7377
+f 7404 19288 19287
+f 7351 7429 7431
+f 7347 7354 7343
+f 7346 7360 7347
+f 7360 7353 7347
+f 7353 7360 7362
+f 7359 7363 7365
+f 7394 7365 7363
+f 7382 7366 7365
+f 7382 7365 7394
+f 7367 7330 7329
+f 7368 7332 7330
+f 7332 7372 7320
+f 7320 7372 7371
+f 7369 7375 7370
+f 7332 7368 7372
+f 7373 7375 7369
+f 7369 7372 7368
+f 7375 7376 7374
+f 7373 7368 7367
+f 7367 7379 7373
+f 7384 4805 7386
+f 7361 7360 7384
+f 7363 7385 7393
+f 7393 7385 7388
+f 7388 7387 7390
+f 19289 7388 7390
+f 7390 7389 19289
+f 7392 7388 19289
+f 19289 7397 7392
+f 7397 19289 7389
+f 7393 19290 7394
+f 7382 7394 19290
+f 7393 7396 19290
+f 7396 7382 19290
+f 7392 7396 7393
+f 7377 7400 19287
+f 7402 7404 19287
+f 7400 7402 19287
+f 7401 7400 7377
+f 7401 7377 7378
+f 7400 7399 7402
+f 7399 7405 7402
+f 7408 7382 7409
+f 7410 7401 7408
+f 7395 7409 7396
+f 7414 7410 7409
+f 7409 7395 7412
+f 7414 7409 7412
+f 7414 7412 7411
+f 7339 7419 7417
+f 7422 7423 7417
+f 7418 7342 7340
+f 7371 7370 7424
+f 7340 7424 7418
+f 7418 7424 7419
+f 7425 7422 7424
+f 7424 7370 7425
+f 7425 19286 7420
+f 7419 7424 7422
+f 7420 7428 7272
+f 7426 7421 7420
+f 7430 7272 7428
+f 7420 19286 19288
+f 7428 7420 19288
+f 19288 7404 7428
+f 7404 7432 7431
+f 7429 7428 7404
+f 7260 7423 7427
+f 7166 7165 7228
+f 7433 7170 7166
+f 7433 7166 7234
+f 7433 7234 7233
+f 7171 7170 7433
+f 7434 7447 7173
+f 7173 7171 7434
+f 7233 7262 7437
+f 7233 7437 7435
+f 7436 19291 7435
+f 7433 7435 19291
+f 7433 19291 7440
+f 7433 7440 7434
+f 19292 19291 7436
+f 19292 7438 7440
+f 7440 19291 19292
+f 7442 7437 7262
+f 7437 7442 7436
+f 7443 7441 7277
+f 7436 7442 7443
+f 19292 7436 7443
+f 7443 19293 19292
+f 7446 19293 7443
+f 7438 19292 19293
+f 19293 7446 7438
+f 7447 7434 7440
+f 7487 7212 7210
+f 7487 7210 7077
+f 7077 7076 7487
+f 7487 7076 7075
+f 7197 7456 7328
+f 7198 7450 7456
+f 7198 7456 7197
+f 7202 7205 7452
+f 7452 7449 7202
+f 7211 7452 7205
+f 7327 7328 7454
+f 7454 7459 4834
+f 7457 7450 7462
+f 7460 7458 7463
+f 7458 7462 7471
+f 7471 7463 7458
+f 4865 7464 7463
+f 4865 7463 7466
+f 7463 7471 7465
+f 7462 7450 7449
+f 7462 7449 7468
+f 7449 7452 7467
+f 7467 7469 7485
+f 7467 7470 7468
+f 7477 7465 7471
+f 7471 7470 7477
+f 7467 7485 7478
+f 7478 7477 7467
+f 7477 7470 7467
+f 7466 7465 7473
+f 11352 9744 4866
+f 4866 7472 11352
+f 7475 11352 7472
+f 7479 7476 7477
+f 7479 7484 7481
+f 7474 7473 7482
+f 7478 7485 7451
+f 7451 7453 7483
+f 7212 7487 7486
+f 7075 7448 7488
+f 7488 7486 7487
+f 7491 7493 7549
+f 7501 7504 7493
+f 7501 7493 7492
+f 7501 7492 7497
+f 7494 7499 7498
+f 7678 7503 7502
+f 7507 7678 7502
+f 7507 7506 7678
+f 7501 7497 7502
+f 7502 7497 7508
+f 7507 7502 7508
+f 7505 7507 7509
+f 7498 7511 7508
+f 7511 7498 19294
+f 7498 7500 19294
+f 7511 7510 7509
+f 7516 7515 7521
+f 7517 7514 7515
+f 7523 7525 8253
+f 7518 7520 7521
+f 7518 7524 7519
+f 7518 7522 7524
+f 8822 7526 7518
+f 7522 7526 8316
+f 7522 8316 7525
+f 7531 7527 7530
+f 7534 7528 7527
+f 7551 7535 2422
+f 7536 7541 2425
+f 7540 2425 7541
+f 7535 7541 7536
+f 7551 7546 7535
+f 7542 7551 7543
+f 7546 7551 7542
+f 7546 7548 7541
+f 7541 7538 7537
+f 7538 7541 7548
+f 7539 7538 7669
+f 7493 7538 7548
+f 7493 7548 7549
+f 7546 7545 7548
+f 7538 7504 7669
+f 7493 7504 7538
+f 7535 7546 7541
+f 7554 2422 2421
+f 7554 7552 2422
+f 7550 7552 7554
+f 7550 7554 7555
+f 7554 2421 2418
+f 2449 7613 7553
+f 7553 2418 2449
+f 7553 19295 7555
+f 7555 7554 7553
+f 7530 7555 19295
+f 7553 7614 19295
+f 7614 7553 7613
+f 7614 7532 7530
+f 7530 19295 7614
+f 7555 7530 7529
+f 7544 7528 7557
+f 7528 7558 7557
+f 7556 7570 7557
+f 7556 7585 7570
+f 7559 7534 7533
+f 7585 7556 7624
+f 7622 7624 7556
+f 7561 7585 7624
+f 7565 7491 7549
+f 7565 7549 7547
+f 7545 7547 7549
+f 7542 7544 7547
+f 7544 7557 7564
+f 7564 7547 7544
+f 7495 7491 7565
+f 7495 7565 7566
+f 7495 7569 7496
+f 7569 7568 7576
+f 7576 7568 7578
+f 7572 7574 7571
+f 7578 7568 7571
+f 7571 7574 7578
+f 7574 7573 7578
+f 7578 7573 7577
+f 7583 7577 7573
+f 7581 7576 7577
+f 7499 7576 7581
+f 7579 7499 7581
+f 7581 7584 7580
+f 7585 7587 7572
+f 7572 7587 7574
+f 7586 7585 7561
+f 7575 7574 7587
+f 7586 7589 7587
+f 7575 7587 7589
+f 7575 7591 7573
+f 7573 7591 7583
+f 7586 7561 7563
+f 7592 7589 7586
+f 7592 7586 7563
+f 19296 7527 7531
+f 7597 19296 7531
+f 7533 7527 19296
+f 7602 7597 7598
+f 7625 7533 19296
+f 7625 19296 19297
+f 7602 19297 19296
+f 19296 7597 7602
+f 7600 7602 7598
+f 7603 7600 7617
+f 7603 7601 7600
+f 7640 7625 19297
+f 7640 19297 7611
+f 7611 7608 7640
+f 7611 19297 7602
+f 7611 7602 7601
+f 7603 7617 7606
+f 7604 7610 7601
+f 7606 7605 7603
+f 7608 7611 7609
+f 7610 7649 7608
+f 7609 7601 7610
+f 2446 7612 2447
+f 2449 2447 7613
+f 7532 7612 2446
+f 2448 19298 2446
+f 2461 7615 19298
+f 19298 2448 2461
+f 19298 7599 7596
+f 7596 2446 19298
+f 7599 19298 7615
+f 2460 2459 7615
+f 2459 7621 7616
+f 7598 7615 7616
+f 7617 7616 7621
+f 7619 2459 2787
+f 7621 2459 7619
+f 7620 7621 7619
+f 7606 7617 7621
+f 7627 7559 7533
+f 7559 7627 7560
+f 7627 7533 7625
+f 7632 7622 7560
+f 7628 7632 7560
+f 7624 7633 7561
+f 7631 7638 7634
+f 7639 7635 7637
+f 7641 7647 7642
+f 7642 7645 7643
+f 7645 7642 7647
+f 7645 7653 7644
+f 7648 7994 7647
+f 7647 7646 7648
+f 7994 7651 7645
+f 7645 7647 7994
+f 7650 7653 7645
+f 7644 7652 7638
+f 7654 7638 7652
+f 7652 7656 7654
+f 7653 7657 7652
+f 7650 19299 7653
+f 7657 7653 19299
+f 19300 7657 19299
+f 7657 7660 7656
+f 19300 7661 7660
+f 7660 7657 19300
+f 7660 7659 7655
+f 7655 7656 7660
+f 7594 7562 7636
+f 7639 19301 7822
+f 7822 7662 7636
+f 7822 7636 7639
+f 7665 7822 19301
+f 7666 19301 7639
+f 7666 7639 7655
+f 7665 19301 7666
+f 7665 7666 7663
+f 7659 8039 7667
+f 7667 7666 7655
+f 7667 7655 7659
+f 8039 7659 7658
+f 7663 19302 7668
+f 8045 7663 7667
+f 8045 7667 8039
+f 8181 19302 7663
+f 8181 7663 8045
+f 7539 7670 7671
+f 7671 7670 2464
+f 7673 2464 7670
+f 7676 7670 7669
+f 7676 7669 7503
+f 7503 7678 7676
+f 7682 7681 7675
+f 7682 7675 7679
+f 7674 2462 2464
+f 2462 7674 7685
+f 2474 7685 7686
+f 7674 7675 7685
+f 7685 7675 7681
+f 7687 2514 7686
+f 2515 7687 7688
+f 7687 7681 7680
+f 7689 7683 7700
+f 7679 7693 7695
+f 7506 7505 7693
+f 7695 7682 7679
+f 7694 7696 7695
+f 7511 19294 7703
+f 19294 7500 7579
+f 7579 19303 19294
+f 19303 7706 7703
+f 7703 19294 19303
+f 19304 19303 7579
+f 7582 19304 7579
+f 19304 7706 19303
+f 7706 19304 7707
+f 7707 7715 7708
+f 7714 7708 7715
+f 7697 7510 7704
+f 7699 7697 7704
+f 7704 7703 7705
+f 7705 7711 7704
+f 7699 7704 7711
+f 7709 7710 7705
+f 7714 7709 7708
+f 7719 7718 7717
+f 7725 7727 7724
+f 7730 7726 7718
+f 7725 7726 7730
+f 7728 7730 7718
+f 7772 7727 7725
+f 7729 7759 7772
+f 7772 7725 7729
+f 19305 7689 7700
+f 7731 19305 7700
+f 7731 7701 7732
+f 7689 19305 7692
+f 7692 19305 7765
+f 19305 7731 7736
+f 7765 19305 7736
+f 7736 7731 7732
+f 7712 7734 7702
+f 7732 7702 7734
+f 7734 7733 7737
+f 7772 7738 7727
+f 7737 7733 7739
+f 2518 2515 7690
+f 7746 2518 7740
+f 7749 7746 7740
+f 7749 7740 7741
+f 7741 7691 7743
+f 7742 7692 7764
+f 7742 7745 7743
+f 7753 7745 7742
+f 7788 7753 7742
+f 7749 7741 7744
+f 7749 7744 7750
+f 2883 7746 7749
+f 2884 2883 7751
+f 7748 7750 7751
+f 7755 7753 7788
+f 7752 7750 7744
+f 7752 7744 7745
+f 7750 8134 7751
+f 8134 8129 7751
+f 7750 7752 8134
+f 7754 8134 7752
+f 8134 7754 8138
+f 7756 8138 7754
+f 7719 7720 7876
+f 7758 7729 7728
+f 7757 7719 7876
+f 7758 7763 7773
+f 7773 7772 7759
+f 7758 7773 7759
+f 7757 7876 7883
+f 7760 7758 7757
+f 7883 7761 7757
+f 7763 7758 7760
+f 7765 7736 7768
+f 7764 7765 7767
+f 7742 7766 7788
+f 7765 7769 7767
+f 7769 7768 7784
+f 7783 7768 7735
+f 7770 7783 7735
+f 7774 7738 7773
+f 7774 7773 7763
+f 7774 7763 7762
+f 7762 7780 7776
+f 7782 7778 7779
+f 7791 7790 7789
+f 7793 7791 7794
+f 7793 7794 8148
+f 7784 7785 7799
+f 7799 7792 7769
+f 7769 7784 7799
+f 7799 7785 7800
+f 7800 7785 7786
+f 7930 7797 7787
+f 7930 7787 7798
+f 7797 7800 7786
+f 7792 7799 7795
+f 7800 7797 7802
+f 7935 7797 7930
+f 7802 7797 7935
+f 7810 7584 7583
+f 7810 7803 7584
+f 7580 7584 7803
+f 7804 19306 7582
+f 7582 7580 7804
+f 7806 7583 7591
+f 7808 7807 7809
+f 7806 7811 7810
+f 7806 7810 7583
+f 7812 7803 7811
+f 7804 7803 7812
+f 7818 19306 7804
+f 7818 7804 7813
+f 7808 7811 7805
+f 7819 7826 7817
+f 7815 7819 7817
+f 7817 7813 7815
+f 7662 7809 7595
+f 7816 7814 7823
+f 7816 7827 7825
+f 7827 7816 7824
+f 7824 7823 7829
+f 7830 7824 7829
+f 7827 7824 7830
+f 7831 7837 7828
+f 7821 7665 7664
+f 7829 7821 7833
+f 7835 7830 7829
+f 7835 7829 7833
+f 7833 7821 7668
+f 7831 7830 7835
+f 7839 19307 7838
+f 19308 7838 19307
+f 7668 7843 7832
+f 7843 7668 19302
+f 7842 7834 7832
+f 7832 7843 7842
+f 7840 7843 19302
+f 19302 8181 7840
+f 7841 7845 7846
+f 7836 19307 7839
+f 7836 7848 19307
+f 7846 7847 7849
+f 7853 7849 7847
+f 19307 7850 19308
+f 19307 7848 7850
+f 7848 7846 7849
+f 7849 7852 7850
+f 7852 7849 7853
+f 7853 7847 8190
+f 7855 7850 7852
+f 7851 7855 7852
+f 7861 8234 7858
+f 7861 7858 7857
+f 19309 19304 7582
+f 19309 7582 19306
+f 19310 7707 19304
+f 19310 19304 19309
+f 19310 7715 7707
+f 19306 19311 19309
+f 19312 19310 19309
+f 19312 19309 19311
+f 19312 19311 7866
+f 19311 19306 7818
+f 7716 7715 19310
+f 7716 19310 19312
+f 7717 7716 19312
+f 7717 19312 7866
+f 19313 19311 7818
+f 19313 7818 7817
+f 19313 7867 7866
+f 7866 19311 19313
+f 7864 19313 7817
+f 7869 7867 19313
+f 7869 19313 7864
+f 7871 7864 7870
+f 7871 7870 7873
+f 7868 7869 19314
+f 7720 7868 19314
+f 7871 19314 7869
+f 7877 7876 7720
+f 7720 19314 7877
+f 7877 19314 7871
+f 7877 7871 7873
+f 7826 7872 7870
+f 7873 7874 7877
+f 7874 7873 7879
+f 7881 7872 7828
+f 7873 7872 7881
+f 19315 7879 7873
+f 19315 7873 7882
+f 7762 7760 7885
+f 7760 7884 7885
+f 7879 7888 7878
+f 19316 7880 7837
+f 7837 7838 19316
+f 19316 7882 7880
+f 19316 7838 19308
+f 19316 7887 7882
+f 19316 19308 7889
+f 19316 7889 7887
+f 19315 7888 7879
+f 7882 7888 19315
+f 7891 7887 7890
+f 7898 7891 7890
+f 7878 7892 7761
+f 7888 7892 7878
+f 7894 7892 7888
+f 7886 7885 7895
+f 7902 7897 7896
+f 7894 7902 7896
+f 7899 7903 7900
+f 7902 7894 7900
+f 7903 7901 7900
+f 7893 7915 7899
+f 7893 7898 7915
+f 7898 7912 7915
+f 7903 7899 7915
+f 7905 7903 7915
+f 19308 7850 7889
+f 7850 7908 7889
+f 7908 7850 7855
+f 7909 7908 7855
+f 7855 7937 7909
+f 7937 7855 7854
+f 7917 7909 7937
+f 7911 7909 7917
+f 7905 7912 7914
+f 7919 7905 7914
+f 7913 7910 7911
+f 7780 7762 7886
+f 7781 7780 7920
+f 7920 7886 7895
+f 7920 7895 7921
+f 7895 7897 7921
+f 7922 7927 7796
+f 7922 7796 7781
+f 7781 7920 7922
+f 7923 7902 7901
+f 7923 7928 7924
+f 7927 7922 7924
+f 8255 7904 7903
+f 7903 7906 8255
+f 8255 7906 8277
+f 7798 7796 7927
+f 7932 7929 7927
+f 7932 7927 7926
+f 7931 7929 7932
+f 8296 7937 7854
+f 7937 8296 7936
+f 7949 7939 8296
+f 7936 8296 7939
+f 7944 7913 7917
+f 7940 7913 7944
+f 7940 7918 7916
+f 7944 7917 7938
+f 7938 7945 7944
+f 19317 7942 7940
+f 7946 7948 7939
+f 7862 7950 7863
+f 7950 7952 7947
+f 7943 19317 7940
+f 7943 7945 19318
+f 7945 7948 19318
+f 19318 7954 7943
+f 19317 7943 7954
+f 19317 7958 7942
+f 7954 7958 19317
+f 19318 7948 7951
+f 7955 19318 7951
+f 7955 7954 19318
+f 7954 7953 7958
+f 7959 7958 7953
+f 7942 7957 7941
+f 7957 7958 7961
+f 7604 7962 7610
+f 7976 7964 7965
+f 19319 2779 8062
+f 8062 2779 2778
+f 19319 7974 7972
+f 7974 19319 8062
+f 7976 7965 7967
+f 7978 7967 7968
+f 7978 7968 7969
+f 7975 7979 7978
+f 7978 7969 7975
+f 7979 8087 7977
+f 7618 2787 2786
+f 2790 7618 2786
+f 7983 7620 7980
+f 7981 7620 7983
+f 2789 7984 7980
+f 7980 2790 2789
+f 7986 2789 2791
+f 7984 2789 7986
+f 7607 7606 7981
+f 7988 7987 7983
+f 7988 7983 7982
+f 2799 19320 7986
+f 7986 2791 2799
+f 19320 19321 7986
+f 19321 19320 19319
+f 7985 7986 19321
+f 19321 7989 7982
+f 7982 7985 19321
+f 19319 7989 19321
+f 7972 7989 19319
+f 2799 2779 19320
+f 19319 19320 2779
+f 7988 7982 7989
+f 7990 7966 7963
+f 7963 7988 7990
+f 7972 7991 7990
+f 7966 7990 7991
+f 7993 7994 7648
+f 7996 7651 7995
+f 7995 7994 7993
+f 8000 7996 7995
+f 7997 7992 7964
+f 7993 7992 8018
+f 7997 8018 7992
+f 8000 7995 7998
+f 8001 7993 8018
+f 19299 7650 7996
+f 19322 19300 19299
+f 7996 8006 19299
+f 8006 7996 8000
+f 8005 19299 8006
+f 8005 8007 19322
+f 19322 19299 8005
+f 19322 8007 7661
+f 7661 19300 19322
+f 8040 7661 8007
+f 8040 7658 7661
+f 8010 8040 8007
+f 8010 8013 8040
+f 8003 8006 8000
+f 8003 8000 7999
+f 8008 8027 8004
+f 8009 8004 8027
+f 8009 8011 8010
+f 8013 8010 8011
+f 7997 8016 8018
+f 8019 8002 8001
+f 8019 8001 8017
+f 8016 8020 8017
+f 8015 8021 8016
+f 8015 7976 7977
+f 8085 8015 7977
+f 8085 7977 8087
+f 8085 8022 8015
+f 8023 8021 8022
+f 8008 8002 8019
+f 8027 8008 8025
+f 8028 19323 8026
+f 8026 8025 8028
+f 8027 8029 8009
+f 8029 8027 8026
+f 8026 19324 8029
+f 19324 8026 19323
+f 8031 8011 8029
+f 8014 8011 8031
+f 19324 8032 8031
+f 8031 8029 19324
+f 8032 8196 8030
+f 8030 8014 8031
+f 8028 8019 8024
+f 19325 19323 8028
+f 8035 19323 19325
+f 8024 8097 8028
+f 8097 8024 8023
+f 8028 8097 19325
+f 8097 8036 8035
+f 8035 19325 8097
+f 8035 8034 19324
+f 19324 19323 8035
+f 8032 19324 8034
+f 8037 8196 8032
+f 8013 8046 8041
+f 8040 8041 8039
+f 8041 8042 8045
+f 8045 8039 8041
+f 8044 8181 8045
+f 8046 8047 8042
+f 8012 8052 8013
+f 8052 8051 8046
+f 8046 8013 8052
+f 8052 8012 8014
+f 8014 8049 8052
+f 8048 8054 8055
+f 8030 8192 8057
+f 8192 8058 8057
+f 8058 8059 8053
+f 8058 8192 8060
+f 8061 2778 2836
+f 8061 8064 8062
+f 8073 8061 2836
+f 8073 2836 8071
+f 8064 8061 8073
+f 8065 8064 8082
+f 8073 8072 8082
+f 8082 8064 8073
+f 7973 7974 8063
+f 7971 19326 7975
+f 7973 8066 7971
+f 8066 19326 7971
+f 19326 19327 7979
+f 7979 7975 19326
+f 19327 19326 8066
+f 8087 7979 19327
+f 8066 8089 19327
+f 8089 8087 19327
+f 8063 8064 8065
+f 8066 8067 8089
+f 19328 8068 8065
+f 8069 3981 8070
+f 8070 8075 8072
+f 3980 8075 8070
+f 8084 8079 8078
+f 19328 8065 8081
+f 8075 8081 8072
+f 8079 8081 8075
+f 8083 19328 8081
+f 19328 8083 8115
+f 8081 8079 8083
+f 19328 8115 8068
+f 8079 8075 8074
+f 8087 8086 8085
+f 8067 19329 8088
+f 8090 8088 19329
+f 8068 8095 19329
+f 19329 8067 8068
+f 8094 8092 8090
+f 8094 8090 19329
+f 8094 19329 8095
+f 8096 8106 8093
+f 8099 8091 8100
+f 8101 8033 8036
+f 8101 8036 8098
+f 8038 8033 8101
+f 19330 8100 8093
+f 19330 8105 8099
+f 8099 8100 19330
+f 19330 8093 8106
+f 8106 8105 19330
+f 8105 8110 8103
+f 8103 8099 8105
+f 8110 8109 8104
+f 8110 8104 8103
+f 8107 8110 8105
+f 8108 8110 8107
+f 8119 8084 8111
+f 19331 8113 8112
+f 8113 19331 8760
+f 8119 8111 8114
+f 8120 8119 8114
+f 8111 8112 8114
+f 8084 8119 8116
+f 8115 8116 8118
+f 8118 8068 8115
+f 8116 8124 8117
+f 8096 8095 8118
+f 8120 8113 19332
+f 19332 8113 8760
+f 19332 8121 8120
+f 8117 8124 8126
+f 8126 8106 8117
+f 8125 8122 8127
+f 8107 8106 8126
+f 8108 8107 8126
+f 8132 8131 8128
+f 8133 2893 8130
+f 8137 8135 8138
+f 8139 8137 8138
+f 8132 8129 8136
+f 8142 8131 8132
+f 8136 8141 8132
+f 8136 8137 8141
+f 8144 8141 8137
+f 8140 8144 8137
+f 8144 8140 8153
+f 8142 8141 8143
+f 8144 8153 8143
+f 15722 2893 8133
+f 15722 8133 8146
+f 8133 8131 8146
+f 8131 8142 8146
+f 8143 8145 8142
+f 8155 8145 8143
+f 15724 8145 8155
+f 7793 8148 7756
+f 7795 8150 7794
+f 8147 8149 8153
+f 8153 8149 8156
+f 8151 8156 8149
+f 8156 8151 8158
+f 8158 8151 15734
+f 15731 7801 7802
+f 7795 7801 15731
+f 7935 8267 7802
+f 8267 15731 7802
+f 15731 8267 15730
+f 15731 8152 7795
+f 15728 8152 15731
+f 8151 8152 15729
+f 8151 15729 15734
+f 8153 8154 8143
+f 8155 8154 15739
+f 8037 8159 8196
+f 8038 8236 8159
+f 8166 8161 8164
+f 8170 8168 8169
+f 8171 8170 8169
+f 8175 8169 8048
+f 8175 8048 8056
+f 8169 8177 8171
+f 8179 8171 8177
+f 8173 8171 8179
+f 8181 8168 7840
+f 8172 7845 7844
+f 7845 8172 8174
+f 7845 8174 8184
+f 8182 8184 8174
+f 8174 8188 8182
+f 8188 8174 8185
+f 8180 8185 8173
+f 8180 8161 8160
+f 8190 7847 8183
+f 7853 8190 8222
+f 8176 8056 8060
+f 8060 8195 8176
+f 8178 8194 8198
+f 8191 8030 8196
+f 19333 8191 8159
+f 8191 19333 8195
+f 8194 8195 19333
+f 8199 8194 19333
+f 19334 8159 8236
+f 8159 19334 19333
+f 8199 19333 19334
+f 8199 8197 8198
+f 8198 8194 8199
+f 8164 8161 8178
+f 8217 8205 8216
+f 8201 8209 8216
+f 8212 8209 8208
+f 8211 8209 8212
+f 8208 8210 8212
+f 8214 8206 8217
+f 8218 8188 8189
+f 8186 8218 8219
+f 8187 8186 8219
+f 8188 8218 8182
+f 8186 8182 8218
+f 8189 8160 8202
+f 8201 8204 8189
+f 8216 8204 8201
+f 8223 8225 7851
+f 7854 7851 8225
+f 8226 8222 8220
+f 8223 8222 8226
+f 19335 8225 8224
+f 8219 8221 8229
+f 8220 8219 7858
+f 8230 8231 8228
+f 8230 8371 8231
+f 8230 8207 8370
+f 8231 7856 8229
+f 7858 8229 7856
+f 7856 8231 8371
+f 8216 8205 8204
+f 8203 8205 8207
+f 7858 8233 8220
+f 8226 8220 8233
+f 8224 8227 8232
+f 7860 8224 8232
+f 7860 19335 8224
+f 8234 8233 7858
+f 7863 19335 7860
+f 8163 8165 8240
+f 8163 8240 8243
+f 8127 8243 8242
+f 19336 8109 8108
+f 8241 8109 19336
+f 8241 19336 8242
+f 8127 8242 19336
+f 8163 8243 8246
+f 8245 8166 8163
+f 8245 8163 8246
+f 8248 8127 8123
+f 8246 8243 8248
+f 8246 8247 7517
+f 8249 8121 19332
+f 8250 8123 8121
+f 7512 8247 8250
+f 7514 8247 7512
+f 8250 8801 7512
+f 8247 8123 8250
+f 8127 19336 8108
+f 7517 8244 8246
+f 19334 8236 8237
+f 19334 8237 8199
+f 8199 8237 8200
+f 8252 8212 7519
+f 8251 7519 8210
+f 8210 7519 8212
+f 7516 7519 8251
+f 8167 8244 8251
+f 7524 7523 8252
+f 7516 8251 8244
+f 7520 7519 7516
+f 8262 7925 7928
+f 7928 8254 8262
+f 7925 8262 7926
+f 8254 7904 8255
+f 8255 8277 8258
+f 8256 8260 8262
+f 8262 8254 8256
+f 7931 8266 7934
+f 8267 7935 7934
+f 7933 8270 8266
+f 8268 7932 7926
+f 8267 15732 15730
+f 8269 15732 8267
+f 8269 8271 8272
+f 8268 8265 7932
+f 8268 8261 8265
+f 8265 8271 7933
+f 7933 7932 8265
+f 8270 7933 8271
+f 8279 8275 8276
+f 8281 8301 8279
+f 8279 8301 8282
+f 8285 15835 8284
+f 8284 8272 8285
+f 8285 8291 15749
+f 8285 15749 15835
+f 8291 8285 8288
+f 8274 8264 8289
+f 8289 8287 8274
+f 8271 8274 8286
+f 8285 8272 8271
+f 8292 15836 8291
+f 8288 8287 8292
+f 8290 8292 8287
+f 8289 8280 8283
+f 8294 8290 8289
+f 19335 8296 8225
+f 7949 8296 19335
+f 7946 7949 19335
+f 7946 19335 7863
+f 8281 8278 7956
+f 8299 8300 8305
+f 8282 8301 8293
+f 8299 8301 8281
+f 8300 8308 8309
+f 8975 8311 8316
+f 8312 8311 8975
+f 19337 8312 8975
+f 8317 8312 19337
+f 8318 8317 19337
+f 8647 8643 9054
+f 8647 9054 8319
+f 8323 8324 8320
+f 8319 19338 8320
+f 8320 19338 8325
+f 8322 8320 8326
+f 8325 9067 8326
+f 8328 8326 9067
+f 9329 8328 9068
+f 8328 9329 8329
+f 9071 9329 9068
+f 7857 7856 19339
+f 8330 7861 7857
+f 8333 7857 19339
+f 8330 7857 8333
+f 8332 8330 8333
+f 8331 7862 8330
+f 7952 7950 8338
+f 8336 8331 8332
+f 8341 8338 8336
+f 8338 8340 7952
+f 8338 8341 8340
+f 8341 8336 8337
+f 8341 8337 8342
+f 8342 8343 8340
+f 7955 7951 8339
+f 8339 8347 7955
+f 8340 8347 8339
+f 8340 8345 8347
+f 8347 7953 7955
+f 8340 8343 8345
+f 7959 7953 8346
+f 7960 8346 8348
+f 8352 8370 8207
+f 8352 8207 8206
+f 8370 8352 8353
+f 8353 8355 8372
+f 8359 8350 8351
+f 8354 8353 8350
+f 8206 8350 8352
+f 8367 8404 8368
+f 8365 8366 8403
+f 8365 8403 8362
+f 8368 8403 8366
+f 8371 8372 8373
+f 19339 7856 8371
+f 8333 19339 8371
+f 8373 8375 8333
+f 8370 8353 8372
+f 8387 8342 8337
+f 8387 8337 8385
+f 8384 8389 8397
+f 8397 8385 8384
+f 8386 8385 8397
+f 8381 8388 8383
+f 8381 8383 8379
+f 8388 8391 8389
+f 8388 8381 19340
+f 8390 8388 19340
+f 8390 19340 8392
+f 8396 8389 8391
+f 8396 8386 8397
+f 8396 8394 8399
+f 8399 8394 8395
+f 8380 8358 8400
+f 8382 8380 8400
+f 8400 8358 8357
+f 8381 8382 8402
+f 8404 8406 8368
+f 8381 8402 19340
+f 19340 8402 8392
+f 8406 8405 8392
+f 8401 8400 8403
+f 8404 8408 8419
+f 8420 8419 8408
+f 8408 8409 8420
+f 8412 8420 8409
+f 19341 8420 8412
+f 8412 8413 19341
+f 19341 8413 8442
+f 8413 8415 8442
+f 8419 8418 8405
+f 8405 8393 8392
+f 8418 8419 8421
+f 8421 8422 8418
+f 8433 8422 8421
+f 8433 8421 8435
+f 8427 8433 8435
+f 8418 8425 8417
+f 8424 8431 8398
+f 8423 8425 8418
+f 8423 8429 8425
+f 8426 8423 8422
+f 8426 8429 8423
+f 8425 8429 8424
+f 8431 8424 8429
+f 8428 8432 8426
+f 8398 8395 8424
+f 8434 8437 8427
+f 8437 8434 8443
+f 8438 8437 8443
+f 8428 8436 8432
+f 8436 19342 8432
+f 8436 8556 19342
+f 8427 8437 8436
+f 8440 8436 8438
+f 8556 8436 8440
+f 8556 8440 8439
+f 19341 8421 8420
+f 8421 19341 8435
+f 8435 19341 8442
+f 8443 8444 8445
+f 8415 8416 8444
+f 8446 8444 8416
+f 8351 8450 8359
+f 8451 8454 8360
+f 8449 8253 7525
+f 8449 7525 8311
+f 8449 8311 8313
+f 8360 8454 8361
+f 8455 8451 8452
+f 8460 8459 8472
+f 8361 8462 8363
+f 8463 8363 8464
+f 8363 8462 8464
+f 8463 8464 8369
+f 8453 8458 8464
+f 8464 8462 8453
+f 8315 8318 8466
+f 8467 8455 8465
+f 8467 8465 8466
+f 8478 8471 8470
+f 8461 8458 8468
+f 8470 8469 8479
+f 8470 8471 8459
+f 8476 8479 8467
+f 8474 8467 8473
+f 8476 8467 8474
+f 8475 8479 8476
+f 8477 8476 8474
+f 8467 8479 8469
+f 8481 8471 8478
+f 8479 8475 8478
+f 8485 8410 8482
+f 8483 8485 8482
+f 8472 19343 8482
+f 8460 8472 8482
+f 8483 8482 19343
+f 8410 8407 8482
+f 8414 8492 8416
+f 19343 8496 8483
+f 8471 8496 19343
+f 19343 8472 8471
+f 8486 8483 8495
+f 8495 8496 8497
+f 8487 8486 8493
+f 8638 8493 8486
+f 8494 8493 8638
+f 8638 8486 8499
+f 8499 8640 8638
+f 8500 8640 8499
+f 8500 9300 8640
+f 8500 9004 9300
+f 8387 8501 8342
+f 8386 19344 8501
+f 8501 8387 8386
+f 8398 8504 8399
+f 19344 8386 8508
+f 8508 8386 8502
+f 8513 8506 8501
+f 8513 8512 8506
+f 19344 8513 8501
+f 8508 8513 19344
+f 8508 8502 8509
+f 8508 8507 8513
+f 8516 8515 8510
+f 8514 8509 8515
+f 8349 8517 8348
+f 8344 8505 8519
+f 8519 8349 8344
+f 8517 8349 8518
+f 8308 8307 8306
+f 8310 8308 8520
+f 8521 8517 8518
+f 8520 8521 8522
+f 8506 8519 8505
+f 8506 8525 8519
+f 8518 8519 8525
+f 8516 8528 8515
+f 8536 8528 8516
+f 8527 8526 8512
+f 8528 8537 8526
+f 8521 8518 8529
+f 19345 8529 8525
+f 19345 8525 8524
+f 8524 8531 19345
+f 8529 8530 8522
+f 8522 8521 8529
+f 8529 19345 8531
+f 8526 8533 8524
+f 8526 8537 8533
+f 8536 8539 8537
+f 8537 8534 8533
+f 8534 8537 8539
+f 8534 8535 8531
+f 8538 8534 8540
+f 8431 8542 8504
+f 8545 8541 8542
+f 8542 8431 8430
+f 8547 8543 8432
+f 8545 8542 8430
+f 8544 8430 8543
+f 8543 8546 8544
+f 8541 8548 8511
+f 8546 8553 8550
+f 8550 8544 8546
+f 8545 8550 8548
+f 8549 8548 8550
+f 8553 8561 8551
+f 8571 8551 8561
+f 8547 8432 19342
+f 19342 8557 8547
+f 8557 19342 8556
+f 8555 8558 8556
+f 8555 8666 8558
+f 8666 8562 8558
+f 8546 8547 8559
+f 8546 8559 8553
+f 8559 8547 8557
+f 8559 8557 8564
+f 8553 8559 8561
+f 8560 8559 8564
+f 8558 8564 8557
+f 8565 8560 8564
+f 8552 8551 8570
+f 8570 8551 8571
+f 8516 8554 8566
+f 8552 8554 8549
+f 8561 8573 8571
+f 8554 8552 8569
+f 8565 8575 8560
+f 8567 8566 8577
+f 8567 8539 8536
+f 8577 8566 8568
+f 8567 8578 8539
+f 8577 8574 8578
+f 8574 8581 8578
+f 8586 8697 8587
+f 8589 8583 8587
+f 8697 8696 8587
+f 8588 8587 8696
+f 8585 8589 15934
+f 15934 8589 8588
+f 8555 8439 8664
+f 8591 8446 8416
+f 8590 8445 8446
+f 8664 8439 8448
+f 8448 8594 8664
+f 8592 8651 8596
+f 8602 8651 8603
+f 8596 8651 8602
+f 8596 8602 8604
+f 8604 8597 8596
+f 8615 8614 8653
+f 19346 8653 8614
+f 8599 8614 8609
+f 8614 8610 8609
+f 8609 8600 8599
+f 8601 8614 8599
+f 8603 19346 8601
+f 8601 19346 8614
+f 8607 8659 8616
+f 8624 8616 8659
+f 8659 8662 8624
+f 8662 19347 8625
+f 8624 8662 8625
+f 19348 8619 8718
+f 8612 8611 8618
+f 8611 8613 8618
+f 8609 8612 8617
+f 19348 8617 8612
+f 8619 19348 8612
+f 8618 8613 8623
+f 8622 8618 8623
+f 8621 8618 8622
+f 8623 8616 8624
+f 8625 19349 8626
+f 8627 8619 8618
+f 8619 8627 8717
+f 8491 8490 8494
+f 8491 8631 8629
+f 8649 8629 8631
+f 8635 8649 8631
+f 8637 8653 8652
+f 8633 8652 8632
+f 8632 8652 8635
+f 8652 8633 8637
+f 8494 8639 8630
+f 8640 8641 8639
+f 8639 8641 8645
+f 8641 8640 9300
+f 8642 8641 9300
+f 8641 8644 8645
+f 8645 8630 8639
+f 8634 8648 8633
+f 8644 8634 8645
+f 8648 8321 8646
+f 8646 8633 8648
+f 8646 8324 8636
+f 8634 8644 8647
+f 8647 8644 8643
+f 8647 8319 8321
+f 8647 8321 8648
+f 8591 8416 8492
+f 8492 8593 8591
+f 8492 8629 8593
+f 8650 8651 8649
+f 8651 8650 8603
+f 8650 8635 8652
+f 8652 8654 8650
+f 8654 8603 8650
+f 19346 8603 8654
+f 8654 8653 19346
+f 8658 8636 8324
+f 8658 8324 8323
+f 8658 8655 8606
+f 8655 8658 8323
+f 8615 8653 8637
+f 8657 8636 8658
+f 8637 8636 8657
+f 19350 8659 8655
+f 8663 19350 8322
+f 8655 8322 19350
+f 8663 8329 8660
+f 8660 19350 8663
+f 8661 8329 9313
+f 8662 8659 19350
+f 8660 8662 19350
+f 8661 19347 8662
+f 8664 8665 8555
+f 8666 8555 8665
+f 8594 8668 8665
+f 8667 8670 8687
+f 8562 8672 8563
+f 8563 8691 8565
+f 8563 8672 8691
+f 8562 8667 8672
+f 8687 8671 8667
+f 8691 8672 8671
+f 8604 8598 8673
+f 8598 8679 8673
+f 8679 8675 8674
+f 8674 8673 8679
+f 8674 8670 8669
+f 8677 8670 8674
+f 8675 8677 8674
+f 8679 8598 8600
+f 8676 8675 8679
+f 8676 8678 8680
+f 8676 8680 8677
+f 8680 8690 8677
+f 8690 8680 8682
+f 8682 8681 8683
+f 8670 8685 8687
+f 8685 8670 8677
+f 8677 8690 8685
+f 8685 8690 8688
+f 8689 8690 8682
+f 8586 8565 8692
+f 8697 8586 8692
+f 8695 8697 8692
+f 8695 8692 8693
+f 8692 8691 8671
+f 8588 16018 15934
+f 8588 8696 16020
+f 16020 16018 8588
+f 8696 8695 8700
+f 8703 16020 8696
+f 8688 8702 8698
+f 8689 8682 8684
+f 8684 8699 8689
+f 8701 8704 8699
+f 8703 8700 8705
+f 8702 8705 8700
+f 8709 8703 8705
+f 8708 8705 8707
+f 8714 19348 8718
+f 8712 19348 8714
+f 8711 8712 8714
+f 8714 8718 8717
+f 8720 8714 8717
+f 8720 8717 8628
+f 8628 8721 8720
+f 19348 8600 8617
+f 19348 8712 8600
+f 8678 8679 8712
+f 8717 8627 8628
+f 8723 8722 8735
+f 8735 8724 8723
+f 8726 8701 8683
+f 8724 8725 8715
+f 8701 8706 8704
+f 8706 8701 8730
+f 8735 8733 8724
+f 8733 8736 8738
+f 8734 8731 8729
+f 8734 8729 8728
+f 8732 8731 8734
+f 8741 16022 8732
+f 16025 16022 8741
+f 8740 16025 8741
+f 3973 8742 8966
+f 8742 3973 8743
+f 8744 3973 3987
+f 8746 8745 8744
+f 8749 8751 8750
+f 8751 8746 8784
+f 8784 8750 8751
+f 19351 8750 8784
+f 19351 8748 8750
+f 8745 8746 8751
+f 19331 8080 8752
+f 8752 8756 19331
+f 8756 8752 8749
+f 8749 8755 8756
+f 8755 8754 8756
+f 8754 8762 8761
+f 19331 8758 8760
+f 19331 8756 8758
+f 8757 8803 8759
+f 8249 19332 8760
+f 8759 8249 8760
+f 8748 8755 8749
+f 8748 8765 8762
+f 8811 8762 8765
+f 8811 8765 8766
+f 8766 8812 8811
+f 8761 8762 8811
+f 8772 8768 8780
+f 8777 8773 8774
+f 8776 8773 8777
+f 8778 8912 8780
+f 8774 8772 8780
+f 8780 8768 8779
+f 8781 8780 8912
+f 8781 8911 8782
+f 8782 8774 8781
+f 8785 8783 8771
+f 8785 8747 3634
+f 8747 8785 8746
+f 3634 8783 8785
+f 8747 3575 3634
+f 8784 19352 19351
+f 8773 19352 8771
+f 19352 8785 8771
+f 8785 19352 8784
+f 19351 8764 8748
+f 19352 8764 19351
+f 8776 8764 19352
+f 8773 8776 19352
+f 8786 8764 8775
+f 8786 8775 8788
+f 8789 8787 8796
+f 8911 8791 8782
+f 8794 8788 8777
+f 8794 8777 8793
+f 8793 8792 8797
+f 8794 8793 8797
+f 8794 8787 8788
+f 8787 8794 8796
+f 8795 8841 8796
+f 8805 8757 8761
+f 8805 8761 8814
+f 8761 8813 8814
+f 8803 8757 8804
+f 8249 8759 8802
+f 8802 8803 8804
+f 8806 8805 8814
+f 8814 8807 8806
+f 8806 7513 8802
+f 8802 8804 8806
+f 7513 8806 8809
+f 7513 7512 8802
+f 7513 7515 7514
+f 8806 8804 8805
+f 8813 8761 8811
+f 8812 19353 8813
+f 8767 8812 8766
+f 8816 8812 8767
+f 8815 19353 8817
+f 8813 8815 8814
+f 8813 19353 8815
+f 8812 8817 19353
+f 8798 8845 8830
+f 8845 8798 8843
+f 8819 8818 8808
+f 8819 8820 8818
+f 7515 8810 7521
+f 7521 8810 8818
+f 7521 8818 7518
+f 8823 8822 8825
+f 8818 8822 7518
+f 8828 8799 8798
+f 8828 8830 8821
+f 8798 8830 8828
+f 8826 8820 8821
+f 8829 8989 8827
+f 8832 8826 8830
+f 8832 8829 8826
+f 8832 8830 8846
+f 8835 8816 8833
+f 8796 8841 8833
+f 8841 8835 8833
+f 8816 8800 8817
+f 8841 8837 8835
+f 8796 8833 8790
+f 8961 8839 8842
+f 8834 8843 8836
+f 8843 19354 8845
+f 19354 8846 8845
+f 8846 9019 8832
+f 19354 9019 8846
+f 8847 8832 9019
+f 8851 8843 8844
+f 8851 19354 8843
+f 9019 19354 8851
+f 8851 9018 9019
+f 8848 8839 8961
+f 8848 8964 8849
+f 8963 8850 8849
+f 8849 8851 8844
+f 8852 8909 8910
+f 8856 8910 3731
+f 3731 3730 8856
+f 3736 8857 8856
+f 8852 8910 8856
+f 8873 8857 8858
+f 8858 8874 8873
+f 8853 8857 8859
+f 8855 8859 8861
+f 8859 8857 8873
+f 8873 8860 8859
+f 8862 8855 8861
+f 8866 8860 8876
+f 8876 8867 8866
+f 8866 8862 8861
+f 8865 8862 8866
+f 8870 8864 8865
+f 8868 8870 8865
+f 8871 8865 8867
+f 8865 8871 8868
+f 8858 3760 19117
+f 8879 8874 8858
+f 8883 8858 19117
+f 8879 8858 8883
+f 3759 8888 19117
+f 8883 19117 8888
+f 8883 8880 8879
+f 8879 8860 8874
+f 8860 8879 8878
+f 8878 8875 8860
+f 8877 8879 8880
+f 8887 8900 8890
+f 8894 8892 8891
+f 8891 8876 8875
+f 8899 8893 8897
+f 8890 8902 8897
+f 8890 8901 8902
+f 8881 8897 8875
+f 8875 8897 8893
+f 8896 8893 8899
+f 3623 8908 3621
+f 8778 3621 8908
+f 8908 8909 8778
+f 8910 3795 3731
+f 8910 8909 8908
+f 8778 8854 8912
+f 8911 8912 8854
+f 8911 8854 8863
+f 8863 8913 8791
+f 8870 8792 8913
+f 8870 8913 8864
+f 8797 8792 8870
+f 8913 8863 8864
+f 8915 8914 8960
+f 8868 8918 8869
+f 8914 8869 8918
+f 8872 8918 8868
+f 8872 8919 8918
+f 8914 8921 8916
+f 8921 8914 8919
+f 8923 8917 8916
+f 8947 8922 8920
+f 8924 8922 8947
+f 8949 8924 8947
+f 8949 8947 8946
+f 8926 8894 8895
+f 8926 8919 8872
+f 8927 8919 8926
+f 8936 8927 8928
+f 8930 8919 8927
+f 8932 8927 8936
+f 8933 8930 8932
+f 8928 8896 8904
+f 8904 8934 8936
+f 8936 8928 8904
+f 8934 8904 8907
+f 8940 8933 8938
+f 8942 8938 8941
+f 8947 8920 8929
+f 8929 8943 8947
+f 8943 8931 8944
+f 8945 8951 8944
+f 8955 9141 8950
+f 8955 8950 8951
+f 8953 8952 8939
+f 8952 8945 8940
+f 8957 8945 8956
+f 8954 8958 8955
+f 8959 8837 8840
+f 8797 8870 8869
+f 8959 8840 8869
+f 8923 8961 8917
+f 8923 8962 8961
+f 8848 8961 8964
+f 8961 8962 8964
+f 19355 8962 8925
+f 8963 9177 8850
+f 8962 19355 8963
+f 8925 9179 19355
+f 3978 3974 8965
+f 8076 8074 3978
+f 8966 3974 3973
+f 8966 8965 3974
+f 8077 8076 8742
+f 8080 8077 8742
+f 8080 19331 8112
+f 8824 8823 8968
+f 8970 8972 8969
+f 8972 8974 8969
+f 8316 7526 8824
+f 8974 19337 8975
+f 19356 19337 8974
+f 19337 19357 8318
+f 19356 19357 19337
+f 19356 8980 19357
+f 8981 19356 8974
+f 19356 8981 8980
+f 8974 8973 8981
+f 9299 8318 19357
+f 19357 8980 8979
+f 8978 8977 9299
+f 8978 9299 19357
+f 19357 8979 8978
+f 8480 8986 8498
+f 8983 8985 8976
+f 8985 8987 8986
+f 8987 8985 8983
+f 8967 8991 8968
+f 8991 8967 8989
+f 8970 8990 19358
+f 8989 8829 8831
+f 8992 8989 8831
+f 8990 8996 19358
+f 8970 19358 8971
+f 8971 19358 8973
+f 8973 19358 8984
+f 8997 8984 19358
+f 8997 8994 8984
+f 8996 8990 8992
+f 8996 8997 19358
+f 9017 8998 8992
+f 8995 8992 8998
+f 8993 8994 8997
+f 8993 8997 8995
+f 8973 8984 8982
+f 8497 8498 8986
+f 9002 8497 8999
+f 8999 8986 8987
+f 9003 9047 9004
+f 9005 9012 9001
+f 9001 9012 9003
+f 9047 9003 9012
+f 9050 9047 9012
+f 9005 9006 9010
+f 8998 9024 9008
+f 9008 9024 19359
+f 9015 9008 19359
+f 9011 9010 9006
+f 9009 9050 9012
+f 9009 9014 9050
+f 9011 9008 9015
+f 9011 9014 9009
+f 9015 9014 9011
+f 9030 9028 9027
+f 9029 9025 9022
+f 9024 9032 19359
+f 9023 9025 9031
+f 9015 19359 9043
+f 9043 9032 9034
+f 9032 9043 19359
+f 9037 9043 9034
+f 9036 9038 9037
+f 9035 9033 9040
+f 9030 9040 9025
+f 9040 9030 9183
+f 9040 9041 9035
+f 9025 9033 9031
+f 9036 9189 19360
+f 9189 9036 9041
+f 9036 19360 9038
+f 9042 9038 9102
+f 9038 19360 9102
+f 9013 9015 9037
+f 9054 8643 9044
+f 9047 9049 9048
+f 19338 9054 9053
+f 19338 8319 9054
+f 9044 9046 9053
+f 19338 9046 9052
+f 9053 9046 19338
+f 9045 9050 9014
+f 9056 9046 9045
+f 9013 9112 9014
+f 9014 9055 9045
+f 9055 9014 9112
+f 9058 9056 9059
+f 9064 9062 9063
+f 9062 19338 9052
+f 8325 19338 9062
+f 9067 8325 9062
+f 9064 9067 9062
+f 9061 9063 9057
+f 9061 9057 9058
+f 9061 9080 9063
+f 9065 9064 9077
+f 9077 9063 9080
+f 9079 9061 9060
+f 19361 9080 9079
+f 9080 19361 9077
+f 9081 9077 19361
+f 9081 19361 19362
+f 9078 9082 9065
+f 9082 9078 9084
+f 9085 9081 19362
+f 9085 9088 9086
+f 9086 9087 9083
+f 9083 9084 9086
+f 9075 9083 9087
+f 9092 9094 9091
+f 9099 9111 9100
+f 9092 9039 9042
+f 9093 9105 9095
+f 9104 9093 9092
+f 9107 9105 9093
+f 9107 9093 9104
+f 9101 9104 9042
+f 9206 9104 9101
+f 9206 9101 9103
+f 9109 9104 9206
+f 9104 9106 9107
+f 9104 9109 9106
+f 9096 9095 9105
+f 9099 9096 9106
+f 9110 9106 9108
+f 9037 9091 9013
+f 9091 9112 9013
+f 9091 9094 9112
+f 9055 9112 9059
+f 9060 9059 9097
+f 9098 9060 9097
+f 9114 9060 9098
+f 9114 9098 9100
+f 9111 9227 9118
+f 9118 9119 9111
+f 9079 9115 19361
+f 9115 19362 19361
+f 9117 9115 9113
+f 9119 9113 9114
+f 9119 9114 9100
+f 9119 9100 9111
+f 9121 19362 9115
+f 19362 9121 9085
+f 9116 9124 9121
+f 9124 9088 9121
+f 9088 9122 9087
+f 9122 9088 9124
+f 9128 9122 9125
+f 9123 9125 9124
+f 19363 9118 9227
+f 9126 9118 19363
+f 19363 9227 9241
+f 9240 19363 9241
+f 9240 9130 9126
+f 9126 19363 9240
+f 9123 9116 9126
+f 9130 9243 9129
+f 9129 9123 9130
+f 9129 9245 19364
+f 9245 9129 9243
+f 9132 8924 9133
+f 9133 8924 8949
+f 9131 9133 9137
+f 9137 9134 9136
+f 9131 9139 9132
+f 9138 9191 9139
+f 9140 9147 9138
+f 9138 9137 9140
+f 9191 9138 9147
+f 9159 9191 9147
+f 9135 9134 8949
+f 9135 8949 8948
+f 9141 8948 8950
+f 9135 19365 9136
+f 9144 19365 9135
+f 9144 9135 9141
+f 9143 9144 9141
+f 9140 9136 19365
+f 9140 19365 9146
+f 9146 19365 9144
+f 9145 9160 9146
+f 9145 9168 9160
+f 9153 9145 9148
+f 9168 9145 9153
+f 9161 9159 9158
+f 9161 9158 9160
+f 9167 9160 9168
+f 9165 9160 9167
+f 9164 9161 9165
+f 9170 9165 9169
+f 9171 9155 9157
+f 9174 9166 9170
+f 9176 9170 9169
+f 19355 9177 8963
+f 9179 9177 19355
+f 9181 9179 9132
+f 9132 9139 9185
+f 9188 9040 9183
+f 9183 9184 9188
+f 9187 9040 9188
+f 9187 9041 9040
+f 9188 9184 9185
+f 9185 9186 9188
+f 19366 9187 9186
+f 9186 9190 19366
+f 19367 19368 9189
+f 9102 19360 9189
+f 19369 9102 9189
+f 19369 9189 19368
+f 9102 19369 9202
+f 19367 9187 19366
+f 19366 19370 19367
+f 19368 19367 19370
+f 9187 19367 9189
+f 9204 9202 19369
+f 9139 9186 9185
+f 9196 19366 9190
+f 9196 9190 9191
+f 9196 9191 9159
+f 9163 9196 9159
+f 9163 9159 9161
+f 9193 19368 19370
+f 9195 19370 19366
+f 9195 19366 9196
+f 9195 9193 19370
+f 19368 9193 19369
+f 9204 19369 9193
+f 9192 9204 9193
+f 19371 9193 9195
+f 9194 9193 19371
+f 9198 9194 19371
+f 19371 9195 9197
+f 19372 19371 9197
+f 9198 19371 19372
+f 9197 9163 9162
+f 9199 9197 9162
+f 9164 9199 9162
+f 19372 9197 9199
+f 9200 19372 9199
+f 9199 9164 9166
+f 9266 9200 9174
+f 9266 9174 9173
+f 9267 9266 9173
+f 10061 9267 9173
+f 10061 9173 9175
+f 9203 9202 9205
+f 9102 9201 9103
+f 9209 9109 9206
+f 9209 9206 9207
+f 9211 9110 9108
+f 9215 9110 9211
+f 9110 9215 9111
+f 9208 9210 9209
+f 9213 9210 9208
+f 9216 9204 9192
+f 9216 9203 9205
+f 9219 9192 9198
+f 9218 9219 9257
+f 9213 9208 9217
+f 9223 9214 9212
+f 9223 9212 9220
+f 9221 9222 9220
+f 9257 9224 9221
+f 9221 9218 9257
+f 9225 9222 9224
+f 9227 9229 9241
+f 19373 9227 9215
+f 9229 9227 19373
+f 19373 9215 9214
+f 19373 9230 9229
+f 9230 9233 9228
+f 9222 9236 9223
+f 9223 9230 19373
+f 19373 9214 9223
+f 9230 9223 9236
+f 9231 9230 9236
+f 9229 19374 9240
+f 9130 9240 19374
+f 19374 9229 9228
+f 9233 19374 9228
+f 9243 9130 19374
+f 19374 9233 9243
+f 9249 9244 9242
+f 9249 9242 9246
+f 9249 9251 9244
+f 9250 9246 9247
+f 9232 9250 9247
+f 9247 9233 9232
+f 9250 9232 9235
+f 9288 9250 9235
+f 9288 9235 9239
+f 9288 19375 9250
+f 9253 9248 9250
+f 9253 9250 19375
+f 9248 9252 9251
+f 19372 9219 9198
+f 19372 19376 9219
+f 9265 19372 9200
+f 19372 9256 19376
+f 9256 19372 9265
+f 19376 9258 9257
+f 9257 9219 19376
+f 9255 9258 19376
+f 9255 19376 9256
+f 9265 9200 9266
+f 9256 9265 9264
+f 9225 9224 9258
+f 9255 9259 9225
+f 9225 9258 9255
+f 9260 9255 9254
+f 9260 9262 9259
+f 9276 9226 9259
+f 9264 9269 9254
+f 9254 9256 9264
+f 9267 10066 9264
+f 10065 9264 10066
+f 9269 9264 10065
+f 10065 9270 9269
+f 9268 9254 9269
+f 9254 9268 9260
+f 9268 9273 9262
+f 19377 9276 9261
+f 9276 19377 9237
+f 9285 9239 9237
+f 9285 9237 19377
+f 9278 19377 9261
+f 9278 9261 9263
+f 9278 9277 19377
+f 9280 9285 19377
+f 9280 19377 9277
+f 9263 9279 9278
+f 9279 9263 9274
+f 9279 9281 9277
+f 9281 9283 9280
+f 9282 9274 9275
+f 9282 9284 9281
+f 9281 9279 9282
+f 9287 9253 19375
+f 9287 19375 9288
+f 9253 9287 9289
+f 9283 9291 9286
+f 9286 9280 9283
+f 9293 9286 9291
+f 9289 9287 9294
+f 9295 9294 9293
+f 9290 9289 9295
+f 9292 9297 9293
+f 10102 9296 9295
+f 10102 9295 9298
+f 8977 8976 8477
+f 8475 8480 8478
+f 8475 8477 8480
+f 8500 8497 9002
+f 8625 19347 9320
+f 9301 8622 8626
+f 9320 19349 8625
+f 9304 19349 9320
+f 19349 9304 9302
+f 19349 9302 8626
+f 9302 9305 9308
+f 9360 9301 9303
+f 9301 9360 9306
+f 9363 9360 9303
+f 9302 9308 9303
+f 9307 9303 9308
+f 9363 9303 9307
+f 9307 9310 9363
+f 9316 8661 9313
+f 9312 9316 9313
+f 19347 8661 9316
+f 9316 9318 19347
+f 19347 9318 9320
+f 9318 9317 9304
+f 9325 9324 9315
+f 9328 9326 9325
+f 9343 9327 9328
+f 9334 9330 9329
+f 9314 9313 9330
+f 9332 9330 9334
+f 9315 9314 9330
+f 9330 9332 9315
+f 9338 9325 9331
+f 19378 9331 9336
+f 19378 9338 9331
+f 9336 19379 19378
+f 9466 19378 19379
+f 9325 9338 9328
+f 19380 9343 9328
+f 9337 19380 9328
+f 9337 9338 19378
+f 9337 19378 9466
+f 9340 9337 9466
+f 9339 19380 9337
+f 9305 9304 9322
+f 9322 19381 9305
+f 9322 9323 19381
+f 9305 19381 9308
+f 9344 19381 9323
+f 9341 9308 19381
+f 9344 9341 19381
+f 9323 9327 9344
+f 9344 9327 9342
+f 9346 9350 9345
+f 9309 9347 9311
+f 9351 9388 9349
+f 9353 9342 9343
+f 19380 9353 9343
+f 9346 9342 9353
+f 9353 19380 9339
+f 9351 9357 9388
+f 9416 9357 9356
+f 9416 9356 9352
+f 9416 9352 9355
+f 9416 9355 9354
+f 9306 8721 8628
+f 9366 8721 9358
+f 9362 9366 9358
+f 9366 9371 8722
+f 8735 8722 9371
+f 9366 9370 9371
+f 9366 9362 9370
+f 9370 9362 9374
+f 9374 9362 9365
+f 9364 9310 9311
+f 9365 9364 9367
+f 9365 9369 9374
+f 9375 9374 9369
+f 8736 8735 9371
+f 8738 8736 8739
+f 8739 8736 9372
+f 9372 9377 8739
+f 9376 9373 9375
+f 8740 8739 9380
+f 9375 9369 9382
+f 9382 9376 9375
+f 9364 9383 9367
+f 9367 9383 9386
+f 9383 9348 9384
+f 9385 9387 9383
+f 9389 9385 9384
+f 9349 9389 9384
+f 9368 9367 9386
+f 9368 9395 9369
+f 9387 9391 9368
+f 9368 9386 9387
+f 9393 9368 9391
+f 9393 9395 9368
+f 9391 9387 9390
+f 9393 9392 9401
+f 9369 9395 9394
+f 9394 9402 9382
+f 9396 9395 9393
+f 9396 9400 9394
+f 9402 9394 9400
+f 9402 9400 9399
+f 9399 9407 9402
+f 9398 9407 9399
+f 9402 9403 9379
+f 9413 9408 9398
+f 9410 9413 9398
+f 9413 9410 19382
+f 9412 9408 9413
+f 19382 9418 9413
+f 9413 9418 9414
+f 9392 9415 9401
+f 9415 9501 9417
+f 9417 9410 9397
+f 19382 9410 9417
+f 9419 9418 19382
+f 9501 9419 19382
+f 19382 9417 9501
+f 9422 9071 9070
+f 9333 9071 9422
+f 9422 9070 9420
+f 9422 9423 9333
+f 9428 9421 9427
+f 9428 9427 9434
+f 9434 9427 9430
+f 9432 9075 9089
+f 9075 9432 9429
+f 9430 9429 9432
+f 9430 9432 9431
+f 9431 9089 9090
+f 9128 9090 9122
+f 9431 9090 9438
+f 9128 9441 9437
+f 9442 9446 9443
+f 9129 19364 9127
+f 9127 9444 9441
+f 9441 9128 9127
+f 9444 9449 9442
+f 9445 9442 9449
+f 19364 9447 9444
+f 9444 9127 19364
+f 9447 19364 9245
+f 9444 9447 9449
+f 9450 9447 9245
+f 9450 9245 9244
+f 9448 9447 9451
+f 9453 9244 9251
+f 9453 19383 9451
+f 9451 9450 9453
+f 19383 9520 9452
+f 9452 9451 19383
+f 9534 9520 19383
+f 9534 19383 9453
+f 9252 9534 9453
+f 9455 9534 9252
+f 10102 19384 19385
+f 19385 9296 10102
+f 9424 9335 9423
+f 9424 9336 9335
+f 9460 9424 9428
+f 9428 9461 9460
+f 9456 9336 9424
+f 9424 9459 9456
+f 9458 9466 19379
+f 9458 19379 9456
+f 19379 9336 9456
+f 9459 9424 9460
+f 9465 9340 9466
+f 9469 9465 9468
+f 9434 9436 9461
+f 9470 9436 9435
+f 9479 9471 9470
+f 9479 9470 9473
+f 9479 9478 9472
+f 9472 9471 9479
+f 9472 9474 9468
+f 9468 9464 9472
+f 9474 9472 9478
+f 9490 9467 9469
+f 9490 9469 9474
+f 19386 9497 9416
+f 19386 9416 9354
+f 9354 9467 19386
+f 9467 9490 19386
+f 9475 9476 9479
+f 9479 9473 9475
+f 9476 9475 9480
+f 9481 9483 9477
+f 9477 9476 9481
+f 9445 9484 9446
+f 9481 9480 9486
+f 9489 9482 9488
+f 9492 19386 9490
+f 9492 9496 9497
+f 9497 19386 9492
+f 9493 9494 9492
+f 9496 9492 9494
+f 9499 9415 9416
+f 9502 9414 9419
+f 9506 9500 9499
+f 9506 9499 9498
+f 9496 9509 9498
+f 9498 9497 9496
+f 9509 9514 9510
+f 9512 9504 9511
+f 9512 9511 9518
+f 9514 9516 9511
+f 9511 9510 9514
+f 9518 9511 9516
+f 9508 9635 9513
+f 9634 9515 9513
+f 9634 9513 9635
+f 9515 9634 9637
+f 9637 16690 9517
+f 9637 9517 9515
+f 9520 9523 9519
+f 9452 9519 9484
+f 9486 9484 9519
+f 9521 9485 9486
+f 9524 9526 9487
+f 9532 9523 9520
+f 9532 9533 9530
+f 9532 9536 9522
+f 9536 9532 9531
+f 9538 9527 9522
+f 9538 9522 9536
+f 9538 9540 9528
+f 9528 9527 9538
+f 9544 9529 9528
+f 9544 9528 9540
+f 9537 9536 9535
+f 9568 9544 9540
+f 9568 9540 9539
+f 9542 9491 9488
+f 9542 9488 9525
+f 9541 9525 9529
+f 9568 9589 9543
+f 9543 9544 9568
+f 9545 9548 9546
+f 9541 9549 9545
+f 9545 9542 9541
+f 9548 9545 9549
+f 9547 9556 9495
+f 9495 9494 9546
+f 9552 9549 9543
+f 9551 9543 9589
+f 9549 9552 9548
+f 9552 9557 9550
+f 9550 9548 9552
+f 9557 9552 9553
+f 9558 9559 9530
+f 9558 9455 9454
+f 9562 9560 9559
+f 9539 9537 9565
+f 9564 9563 9569
+f 9566 9565 9571
+f 9565 9569 9571
+f 9575 9579 9563
+f 9576 9582 9579
+f 9579 9575 9576
+f 19385 9572 9296
+f 19385 19387 9572
+f 19387 9573 9572
+f 19387 19385 19384
+f 9576 9573 19387
+f 9576 9577 9582
+f 9569 9563 9579
+f 9586 9580 9583
+f 9581 9580 9586
+f 9571 9569 9581
+f 9570 9571 9581
+f 9583 9582 9577
+f 9583 9587 9586
+f 9587 9583 9577
+f 9567 9595 9589
+f 19388 9592 9595
+f 19388 9595 9567
+f 9567 9570 19388
+f 9570 19389 19388
+f 19388 9590 9592
+f 9590 19388 19389
+f 9584 19390 19389
+f 19389 9570 9584
+f 9590 19389 19390
+f 9593 9590 19390
+f 19390 9584 9588
+f 9593 19390 9588
+f 9593 11459 9591
+f 9594 9551 9589
+f 9594 9589 9595
+f 9596 9553 9551
+f 9596 9551 9594
+f 9596 9601 9557
+f 9557 9553 9596
+f 9596 9594 9597
+f 9594 9592 9597
+f 9601 9602 9554
+f 9554 9557 9601
+f 9602 9605 9555
+f 9555 9554 9602
+f 9603 9602 9607
+f 9602 9601 9607
+f 9601 9600 9607
+f 9592 19391 9597
+f 9597 19391 9598
+f 19391 9592 9591
+f 19391 9610 9598
+f 9598 9609 9599
+f 9609 9600 9599
+f 9598 9610 9609
+f 9591 9614 19391
+f 9614 9610 19391
+f 11459 9615 9614
+f 9614 9591 11459
+f 9600 9609 9606
+f 9613 9610 9614
+f 9606 9619 9603
+f 9611 9620 9606
+f 9606 9609 9611
+f 9619 9661 9603
+f 9661 9619 9621
+f 9611 9617 9620
+f 9622 9617 9624
+f 9624 9625 9626
+f 9626 9625 19392
+f 19393 19394 19392
+f 19392 9625 19393
+f 9628 9507 9627
+f 9643 9629 9628
+f 9627 9556 9555
+f 9656 9628 9627
+f 9656 9627 9630
+f 9655 9646 9643
+f 9655 9643 9628
+f 9628 9656 9655
+f 9632 9639 9631
+f 9631 9635 9508
+f 9637 9638 16690
+f 16737 9636 9641
+f 9648 9645 9644
+f 9640 9639 9645
+f 9650 16754 9641
+f 9641 9640 9650
+f 9649 9653 9651
+f 9651 9650 9645
+f 9652 16754 9650
+f 19395 9654 9604
+f 9604 9603 19395
+f 9654 19395 9658
+f 9630 9657 9655
+f 9657 9677 9646
+f 9646 9655 9657
+f 9658 9657 9654
+f 9680 9677 9657
+f 9659 9680 9657
+f 19395 9603 9661
+f 9661 9663 9658
+f 9658 19395 9661
+f 9661 9662 9665
+f 9661 9665 9663
+f 9626 9666 9660
+f 9666 9662 9660
+f 9666 9626 19392
+f 9665 9662 9666
+f 19394 9669 9666
+f 9666 19392 19394
+f 9667 9664 9665
+f 9670 9664 9667
+f 9670 9667 9695
+f 9670 9695 9671
+f 9668 9674 9667
+f 9675 9648 9647
+f 9648 9675 9679
+f 9648 9679 9649
+f 9678 9685 9679
+f 9694 9680 9659
+f 9694 9684 9681
+f 9681 9680 9694
+f 9681 9683 9678
+f 9685 9678 9683
+f 9681 9684 9683
+f 9687 9649 9679
+f 9687 9653 9649
+f 9687 9679 9685
+f 9653 9689 9652
+f 9688 9653 9687
+f 9688 9687 9686
+f 9685 9683 9686
+f 9691 9686 9690
+f 9667 9674 9697
+f 9700 9697 9674
+f 16775 9692 9701
+f 9672 9669 11622
+f 19396 9703 9702
+f 9707 9703 19396
+f 19397 9701 9710
+f 19397 16775 9701
+f 9714 19397 9710
+f 9714 16852 19397
+f 9714 9715 16852
+f 9716 9708 9709
+f 11639 9715 9713
+f 9713 9716 11639
+f 16855 9715 11639
+f 4823 4821 4820
+f 4821 9722 9717
+f 9722 4821 4823
+f 9720 9717 9722
+f 9728 9719 9720
+f 9728 9720 9721
+f 9725 9724 4823
+f 9722 4823 9723
+f 9723 9731 9722
+f 9731 9721 9722
+f 9726 10821 10820
+f 10820 9727 9726
+f 9729 10821 9726
+f 9721 9730 9729
+f 9729 10823 10821
+f 10823 9729 9730
+f 9724 4862 4860
+f 9736 9723 9732
+f 9734 9736 9732
+f 9738 9733 4863
+f 9746 9735 9739
+f 9740 9730 9731
+f 9741 19398 11364
+f 11364 10823 9730
+f 11364 9730 9741
+f 19398 9741 9743
+f 9745 9743 9742
+f 9746 9745 9742
+f 9742 9735 9746
+f 9745 19398 9743
+f 9738 9737 9744
+f 9739 9744 9747
+f 9739 9747 9746
+f 8887 9748 9751
+f 9757 9753 9750
+f 9750 9749 9757
+f 8900 8887 9751
+f 8900 9751 9752
+f 9752 9756 8900
+f 9752 9751 9750
+f 9760 9764 9761
+f 9754 9753 9758
+f 9754 9758 9761
+f 9764 9772 9763
+f 9765 8900 9756
+f 9756 9767 9765
+f 9754 9768 9755
+f 9766 9769 8905
+f 9769 9767 9770
+f 9754 19399 9768
+f 19399 9754 9762
+f 9771 9763 9772
+f 19399 19400 9770
+f 9770 9768 19399
+f 9771 19400 19399
+f 9771 19399 9762
+f 9806 19400 9771
+f 9806 9805 19400
+f 19400 9805 9770
+f 9773 9774 9806
+f 9806 9771 9773
+f 9776 9806 9774
+f 9760 6717 6716
+f 6725 9777 6716
+f 9779 9780 9764
+f 9789 9780 9779
+f 9791 9789 9779
+f 9791 9779 9781
+f 6726 9783 6725
+f 9783 9785 9778
+f 9778 6725 9783
+f 9782 6726 6928
+f 9786 9778 9785
+f 9787 9791 9781
+f 9799 9791 9787
+f 9788 9796 9787
+f 9793 9789 9790
+f 9794 9774 9773
+f 9794 9789 9793
+f 9799 9790 9791
+f 9799 9792 9790
+f 9795 9799 9787
+f 9798 9792 9799
+f 9832 9793 9797
+f 19401 8907 9769
+f 19401 8937 8907
+f 19402 8937 19401
+f 19401 9769 9770
+f 9801 19401 9770
+f 9805 9801 9770
+f 9801 19402 19401
+f 9802 9801 9805
+f 9813 8941 8934
+f 9813 8934 8937
+f 19402 9813 8937
+f 19403 9813 19402
+f 9804 19402 9801
+f 9800 9804 9801
+f 9804 19403 19402
+f 9809 9800 9808
+f 9811 9809 9808
+f 8942 8941 9812
+f 9814 8953 9812
+f 19403 9815 9812
+f 9812 9813 19403
+f 9804 9815 19403
+f 9824 9815 9804
+f 8956 8952 9814
+f 9816 8956 9814
+f 9819 9815 9824
+f 9819 9816 9815
+f 9817 9816 9819
+f 9818 8956 9817
+f 9823 9803 9822
+f 9840 9826 9822
+f 9827 9975 9820
+f 9826 9827 9823
+f 9829 9827 9826
+f 9828 9975 9827
+f 19404 9775 9794
+f 19404 19405 9775
+f 9810 9775 19405
+f 9793 9833 9794
+f 19404 9794 9833
+f 19405 9831 9810
+f 9900 9832 9834
+f 9900 9835 9832
+f 19405 19404 9837
+f 9837 19404 9833
+f 9837 9831 19405
+f 9838 9835 9900
+f 9835 9837 9833
+f 9842 9839 9830
+f 9829 9826 9840
+f 9845 9828 9829
+f 9840 9843 9829
+f 9850 9846 9843
+f 9850 9843 9844
+f 9848 9841 9831
+f 9848 9831 9837
+f 9920 9836 9838
+f 9836 9852 9847
+f 9920 9852 9836
+f 9920 9854 9852
+f 9849 9841 9848
+f 9847 19406 9849
+f 9849 9851 9844
+f 9851 9849 19406
+f 19406 19407 9851
+f 9847 9853 19406
+f 19406 9853 19407
+f 19408 19407 9853
+f 19408 9853 9855
+f 9782 6928 6931
+f 9860 9796 9858
+f 9859 9861 9858
+f 9857 6932 6951
+f 9863 9874 9862
+f 9864 9862 9874
+f 9861 9864 9865
+f 9867 9860 9870
+f 9908 9868 9873
+f 9886 9873 9872
+f 9886 9908 9873
+f 9886 9909 9908
+f 9863 6983 9874
+f 9874 9875 9864
+f 6988 9874 6983
+f 6988 9878 9875
+f 9864 9875 9865
+f 9866 9865 9880
+f 9880 9881 9866
+f 9880 9875 9878
+f 9879 19409 9881
+f 9883 9884 9877
+f 9882 19409 9879
+f 9882 10277 19409
+f 9871 9861 9866
+f 9871 9866 9881
+f 9890 9871 9881
+f 9890 9881 19409
+f 19410 9871 9890
+f 9890 9889 19410
+f 9888 9940 9886
+f 9909 9886 9940
+f 19410 9888 9886
+f 9886 9871 19410
+f 9888 19410 9889
+f 9887 9896 9940
+f 9940 9888 9887
+f 19409 9891 9890
+f 10277 9893 9891
+f 9891 19409 10277
+f 9898 9892 9893
+f 9889 9894 9887
+f 9889 9892 9894
+f 9897 9894 9892
+f 9896 9887 9894
+f 9897 10310 9899
+f 10310 9897 10311
+f 9904 9900 9901
+f 9919 9838 9902
+f 9903 9919 9902
+f 9904 9914 9903
+f 9902 9900 9904
+f 9903 9914 9916
+f 9908 9901 9868
+f 9907 9904 9901
+f 9905 9909 9910
+f 9913 9917 9930
+f 9913 9930 9915
+f 9931 9930 9917
+f 9931 9917 9918
+f 9920 9921 9854
+f 9921 9920 9919
+f 9916 19411 9903
+f 9925 19411 9916
+f 19411 9924 9921
+f 9921 9903 19411
+f 9924 19411 9925
+f 9921 9923 9854
+f 9923 9922 9854
+f 9922 10152 9855
+f 9935 9922 9923
+f 9924 9935 9923
+f 9935 9937 10152
+f 10152 9922 9935
+f 9915 9926 9925
+f 9915 9930 9928
+f 9926 9928 9933
+f 9926 9933 9927
+f 9939 9962 9938
+f 9940 9941 9910
+f 9911 9910 9941
+f 9943 9912 9911
+f 9896 9944 9941
+f 9944 9947 9943
+f 9943 9942 9944
+f 9943 9946 9918
+f 9918 9912 9943
+f 9946 9951 9931
+f 9931 9918 9946
+f 9945 9949 9946
+f 9944 9896 9895
+f 9944 9955 9954
+f 9954 9947 9944
+f 9895 9899 9955
+f 9895 9955 9944
+f 9953 9948 9945
+f 9945 9947 9954
+f 9945 9954 9953
+f 9939 9932 9959
+f 9952 9958 9965
+f 9952 9965 9959
+f 9959 9965 9960
+f 10563 19412 9958
+f 9958 9957 10563
+f 9961 9960 9963
+f 9967 9960 9965
+f 19413 9965 9958
+f 9958 19412 19413
+f 9965 19413 9966
+f 9960 9967 9963
+f 9972 9156 9971
+f 9974 9972 9971
+f 9977 9968 9821
+f 9975 9978 9821
+f 9977 9821 9978
+f 9969 9968 9977
+f 9828 9978 9975
+f 9978 9982 9976
+f 9982 9978 9979
+f 9980 9976 9982
+f 10008 9981 9980
+f 10008 9980 9983
+f 9981 9974 9971
+f 9993 9974 9981
+f 9995 9993 9981
+f 9995 9981 10008
+f 9973 9157 9972
+f 9985 9157 9973
+f 9171 9157 9985
+f 9985 9172 9171
+f 9172 9984 9169
+f 9984 9985 9986
+f 9987 9986 9973
+f 9988 9986 9987
+f 9176 9169 9984
+f 9991 10070 10063
+f 10070 9991 9992
+f 9974 9993 9987
+f 9993 9995 9988
+f 9994 9988 9996
+f 19414 9995 10008
+f 10008 10029 19414
+f 10033 19414 10029
+f 9996 9995 19414
+f 19414 10032 9996
+f 10032 9994 9996
+f 10032 19414 10033
+f 9990 9989 9994
+f 9999 10070 9992
+f 9997 9994 10032
+f 9998 9997 10032
+f 9998 10032 10038
+f 10038 10041 9998
+f 19415 9999 9998
+f 10041 10042 19415
+f 19415 9998 10041
+f 10000 9979 9828
+f 10001 9982 9979
+f 10003 9982 10001
+f 10002 10001 10004
+f 9983 9982 10003
+f 10007 10003 10002
+f 10027 10006 10007
+f 10027 10007 10009
+f 10018 10027 10009
+f 10021 10030 10027
+f 10021 10027 10018
+f 19416 10004 9850
+f 19416 9850 9851
+f 9851 19407 19416
+f 19407 10010 19416
+f 19416 10012 10004
+f 10005 10004 10012
+f 10012 19416 10010
+f 19408 10013 10010
+f 10010 19407 19408
+f 19408 10015 10013
+f 10015 10150 10014
+f 10016 10009 10005
+f 10014 10024 10017
+f 10017 10011 10014
+f 10150 10024 10014
+f 10022 10024 10150
+f 10024 10025 10019
+f 10019 10017 10024
+f 10029 10008 10006
+f 10030 19417 10028
+f 10021 19417 10030
+f 10031 10033 10029
+f 10031 10039 10032
+f 19417 10031 10028
+f 10039 10031 19417
+f 10021 10034 19417
+f 10036 10039 19417
+f 19417 10034 10036
+f 10037 10032 10039
+f 10037 10043 10041
+f 10040 10043 10037
+f 10044 10049 10119
+f 10020 10053 10050
+f 10050 10021 10020
+f 10052 10035 10034
+f 10050 10052 10034
+f 10052 10050 10053
+f 10054 10053 10020
+f 10026 10054 10020
+f 10020 10025 10026
+f 10057 10049 10048
+f 10057 10048 10056
+f 10055 10175 19418
+f 10055 19418 10056
+f 10056 10052 10055
+f 10056 19418 10057
+f 9991 10063 10061
+f 10061 9175 9991
+f 10059 10119 10049
+f 10059 10049 10057
+f 10058 10057 19418
+f 10058 19418 10175
+f 19415 10042 10084
+f 10084 9999 19415
+f 10119 10042 10044
+f 10060 10064 10066
+f 10066 9267 10060
+f 10062 10073 10064
+f 10064 10060 10062
+f 10069 10064 10073
+f 10069 10067 10064
+f 10062 10063 10070
+f 10072 10074 10069
+f 10069 10073 10072
+f 9272 9271 10075
+f 10078 10076 10075
+f 10087 10077 10075
+f 10075 10068 10087
+f 9275 9272 10076
+f 10086 10091 10087
+f 10088 10085 10084
+f 10091 10092 10077
+f 10094 10083 10081
+f 10111 10094 10093
+f 10096 10095 10082
+f 10097 10082 10083
+f 10083 10094 10097
+f 10098 10114 10099
+f 10099 9291 10098
+f 10100 9297 9292
+f 10100 10105 9298
+f 10101 9298 10105
+f 10103 10099 10114
+f 10116 10104 10103
+f 11429 10106 10104
+f 11429 10104 10116
+f 10109 10118 10115
+f 10118 10109 10112
+f 11430 11429 10116
+f 11430 10116 10117
+f 10120 10089 10088
+f 10120 10088 10119
+f 10120 10119 10059
+f 10120 10125 10121
+f 10126 10121 10125
+f 10127 10122 10126
+f 10128 10125 10124
+f 10058 10128 10124
+f 10128 10129 10126
+f 10127 10132 10133
+f 10127 10133 10111
+f 10111 10093 10127
+f 10130 10200 10131
+f 19419 10107 10110
+f 19419 10110 10133
+f 10136 10108 10107
+f 10136 10107 19419
+f 10133 10134 19419
+f 10134 10136 19419
+f 10137 10112 10108
+f 10137 10108 10136
+f 10135 10137 10136
+f 10118 10112 10137
+f 10141 11430 10117
+f 10141 10117 10138
+f 10139 10137 10135
+f 10140 10146 10141
+f 10202 10142 10131
+f 10202 10131 10200
+f 19420 10134 10142
+f 19420 19421 10135
+f 10135 10134 19420
+f 10204 19420 10142
+f 10204 10142 10202
+f 10204 10206 19421
+f 19421 19420 10204
+f 10144 10139 10135
+f 10144 10135 19421
+f 10146 10140 10143
+f 10147 10144 19421
+f 10147 19421 10206
+f 10147 10143 10144
+f 10145 10143 10147
+f 10151 10015 19408
+f 10152 10151 19408
+f 19408 9855 10152
+f 10151 10149 10015
+f 10151 10162 10153
+f 10158 10153 10162
+f 10022 10154 10023
+f 10022 10150 10149
+f 10156 10023 10154
+f 10176 10160 10159
+f 9937 9936 10162
+f 9937 10162 10151
+f 10161 9936 9938
+f 10161 9938 9962
+f 10177 10165 10164
+f 10161 10165 10163
+f 10168 10163 10165
+f 10168 10165 10177
+f 10163 10167 10166
+f 10166 10176 10159
+f 10157 10158 10163
+f 10026 10171 10169
+f 10171 10026 10155
+f 10170 10173 10055
+f 10055 10169 10170
+f 10176 10174 10170
+f 10170 10171 10160
+f 10170 10160 10176
+f 9961 10177 10164
+f 10164 9962 9961
+f 10177 10178 10168
+f 10168 10178 10167
+f 10191 10166 10167
+f 10180 10173 10172
+f 10180 10172 10174
+f 10173 10179 10182
+f 10173 10182 10058
+f 10058 10175 10173
+f 10191 10189 10183
+f 10191 10183 10180
+f 10180 10174 10166
+f 10180 10166 10191
+f 10184 10183 10189
+f 10178 10190 10191
+f 10191 10167 10178
+f 9964 10190 10178
+f 10178 9961 9964
+f 10188 10185 10184
+f 11059 11058 10221
+f 10221 10187 10185
+f 10221 10185 10188
+f 10221 10188 11059
+f 19422 10129 10128
+f 10128 10182 19423
+f 10182 10181 19423
+f 10181 10186 19423
+f 10128 19423 19422
+f 10129 19422 10130
+f 10193 19422 19423
+f 10193 10195 10201
+f 19422 10201 10200
+f 10200 10130 19422
+f 10201 19422 10193
+f 10195 10198 10201
+f 10192 10193 19423
+f 10192 19423 10186
+f 10198 10209 10203
+f 10212 10205 10203
+f 10212 10203 10209
+f 10211 10205 10212
+f 10207 11435 10148
+f 10148 10147 10207
+f 10211 10217 10207
+f 10207 10205 10211
+f 10217 10220 11435
+f 11435 10207 10217
+f 10214 10209 10208
+f 10214 10210 10212
+f 10212 10209 10214
+f 10242 10213 10208
+f 10215 10210 10214
+f 10220 10217 10216
+f 10199 10192 10223
+f 10226 10223 10225
+f 10233 10228 10227
+f 11130 10222 10221
+f 11130 10221 11058
+f 11130 19424 10234
+f 11130 10234 10222
+f 10236 10224 10234
+f 10237 10230 10229
+f 10231 10230 10237
+f 10240 11137 10239
+f 10234 19424 10240
+f 10241 10239 11137
+f 10233 10243 10242
+f 10213 10242 10243
+f 10244 10246 10215
+f 10244 10243 10247
+f 10247 10232 10231
+f 10251 10245 10244
+f 10218 10215 10246
+f 10246 10254 10252
+f 10259 10257 10238
+f 10261 10259 10260
+f 10262 10258 10257
+f 10262 10257 10259
+f 10266 10255 10258
+f 10265 10256 10255
+f 10266 10265 10255
+f 10266 10258 10262
+f 10266 10262 10268
+f 10268 10262 10263
+f 10267 10266 10268
+f 10269 10267 10268
+f 10271 10270 10254
+f 7137 10272 9884
+f 9885 10272 10278
+f 10278 10272 19425
+f 10275 19425 10272
+f 10275 10272 10273
+f 9885 10278 9882
+f 10278 10277 9882
+f 10279 10278 19425
+f 10279 19425 10275
+f 10283 10274 10281
+f 10284 10281 10282
+f 10293 10283 10284
+f 10289 10293 10284
+f 10286 10290 10289
+f 10292 10298 10280
+f 10294 10295 10298
+f 10298 10292 10294
+f 10296 10293 10289
+f 10294 10293 10296
+f 10300 10296 10289
+f 10291 10300 10289
+f 10276 10302 9893
+f 10302 10276 10304
+f 9898 9893 10302
+f 10280 10317 10304
+f 10317 10319 10304
+f 10319 10306 10305
+f 10305 10304 10319
+f 10319 10317 10318
+f 10320 10319 10318
+f 10308 10306 10320
+f 10308 10320 10321
+f 10297 10324 10318
+f 10318 10298 10297
+f 10325 10318 10324
+f 10328 10325 10323
+f 10318 10325 10320
+f 10325 10327 10321
+f 10321 10320 10325
+f 10321 10327 10322
+f 10329 10348 10326
+f 10330 10336 10331
+f 10326 10348 10332
+f 10336 10330 10332
+f 10287 10338 10288
+f 10340 10342 10300
+f 10340 10291 10339
+f 10340 10339 10341
+f 10300 10342 19426
+f 10300 19426 10299
+f 10299 19426 10343
+f 10299 10343 10301
+f 10351 10343 19426
+f 19426 10342 10341
+f 19426 10341 10351
+f 10323 10343 10351
+f 10323 10351 10344
+f 10338 10337 7169
+f 10349 10350 10341
+f 10341 10339 10349
+f 7169 10352 10349
+f 10872 10352 7172
+f 10872 7172 7173
+f 10350 10349 10352
+f 10352 10362 10350
+f 10366 10362 10352
+f 10366 10352 10872
+f 10355 10329 10344
+f 10355 10344 10351
+f 10353 10355 10351
+f 10356 10357 10347
+f 10347 10348 10356
+f 10354 10369 10358
+f 10358 10356 10354
+f 10356 10355 10354
+f 10361 10346 10357
+f 10361 10357 10358
+f 10359 10358 10369
+f 10353 10350 10362
+f 10354 10353 10363
+f 10363 10365 10354
+f 10363 10362 10366
+f 10369 10354 10365
+f 19427 10360 10359
+f 19427 10359 10371
+f 10370 10359 10369
+f 10369 10368 10370
+f 10373 10907 10372
+f 10372 10368 10367
+f 10376 19427 10371
+f 10372 10377 10370
+f 10370 10368 10372
+f 10370 10376 10371
+f 10372 10906 10377
+f 10906 10372 10907
+f 10374 10377 10906
+f 10364 10373 10367
+f 10367 10365 10364
+f 9956 9899 10314
+f 10379 9956 10378
+f 10314 10561 10378
+f 10561 10314 10316
+f 10561 10316 10331
+f 10336 10382 10381
+f 10381 10331 10336
+f 10335 10384 10382
+f 10382 10336 10335
+f 10382 10384 10385
+f 10385 10380 10382
+f 10335 10334 10384
+f 10383 19428 10385
+f 19428 10387 10386
+f 10391 10577 10389
+f 10389 10577 10390
+f 10385 19428 10386
+f 10385 10386 10389
+f 10391 10389 10386
+f 10394 10406 10405
+f 10396 10577 10391
+f 10397 10577 10396
+f 10577 10397 10392
+f 10393 10392 10397
+f 10394 10393 10406
+f 10396 10399 10397
+f 10400 10403 10405
+f 10405 10407 10400
+f 10407 10401 10400
+f 10408 10401 10407
+f 10401 10410 10404
+f 10584 10404 10412
+f 10404 10410 10412
+f 10410 10401 10408
+f 10415 10413 10398
+f 10408 10406 10413
+f 10393 10398 10413
+f 10417 10584 10412
+f 10422 10416 10420
+f 10512 10510 10945
+f 10436 10510 10432
+f 10945 10436 10433
+f 10436 10945 10510
+f 10438 19429 10461
+f 10461 10444 10438
+f 10437 10468 19429
+f 19429 10438 10437
+f 10447 10442 19428
+f 19428 10383 10447
+f 10440 10442 10447
+f 19430 10447 10383
+f 10383 10334 19430
+f 19430 10334 10345
+f 10447 19430 10451
+f 10451 19430 10345
+f 10451 10345 10346
+f 19428 10442 10387
+f 10461 10388 10443
+f 10387 10443 10388
+f 10443 10442 10441
+f 10461 10443 10444
+f 10446 10451 10450
+f 10479 10452 10450
+f 10450 10361 10479
+f 10438 10441 10439
+f 19429 10462 10461
+f 19431 10462 19429
+f 10455 10462 19431
+f 19431 10453 10455
+f 10487 19431 19429
+f 10468 10487 19429
+f 10458 10453 10487
+f 19431 10487 10453
+f 10429 10533 10459
+f 10460 10533 10534
+f 10533 10460 10459
+f 10534 10457 10456
+f 10460 10456 10453
+f 10456 10460 10534
+f 10462 10395 10388
+f 10455 10454 10399
+f 10398 10454 10457
+f 10465 10464 10469
+f 10465 10474 10466
+f 10467 10466 10474
+f 10482 10471 10469
+f 10470 10473 10474
+f 10474 10465 10470
+f 10473 10471 10496
+f 10470 10471 10473
+f 10472 10473 10496
+f 10449 10448 10476
+f 10469 10476 10480
+f 10477 10480 10476
+f 10478 10477 10475
+f 10482 10469 10480
+f 10481 10478 10486
+f 10485 10486 10989
+f 19432 10490 10489
+f 19433 10487 10467
+f 10489 10458 19433
+f 10458 10487 19433
+f 10495 19433 10467
+f 19432 10489 19433
+f 19432 19433 10495
+f 10489 10490 10488
+f 10494 10434 10490
+f 10494 10490 19432
+f 10494 19432 10493
+f 10435 10494 10492
+f 10472 10493 10495
+f 10495 10493 19432
+f 10430 10490 10434
+f 10501 10497 10499
+f 10497 10501 10498
+f 10504 10500 10502
+f 10500 10499 10502
+f 10523 10504 10503
+f 10497 10429 10428
+f 19434 10503 10502
+f 10506 19434 10502
+f 10502 10499 10506
+f 10521 10503 19434
+f 10523 10503 10521
+f 10517 19434 10506
+f 10517 10506 10508
+f 10517 10516 10521
+f 10521 19434 10517
+f 10509 10510 10512
+f 10432 10510 10507
+f 10514 19435 10511
+f 10511 10519 10517
+f 10517 10508 10511
+f 10515 10517 10519
+f 19435 10520 10519
+f 10519 10511 19435
+f 10524 10521 10516
+f 10524 10516 10515
+f 10525 10515 10518
+f 10528 10527 10457
+f 10531 19436 10527
+f 10529 10531 10526
+f 10529 10526 10535
+f 10532 10501 10500
+f 10534 10533 10532
+f 10534 10532 10528
+f 10504 10526 10500
+f 10536 10504 10523
+f 10398 19436 10415
+f 10398 10457 19436
+f 19436 10457 10527
+f 19436 10531 10415
+f 10415 10530 10414
+f 10530 10415 10531
+f 10539 10419 10529
+f 10537 10529 10535
+f 10529 10537 10539
+f 10536 10540 10535
+f 10543 10544 10541
+f 10544 10548 10538
+f 10548 10544 10543
+f 10414 10530 10419
+f 10530 10529 10419
+f 10539 19437 10419
+f 10419 19437 10421
+f 10539 10538 19437
+f 19438 10421 19437
+f 10547 19437 10538
+f 10546 19438 19437
+f 10546 19437 10547
+f 19439 10424 10421
+f 19439 10421 19438
+f 10424 19439 10425
+f 10597 10425 19439
+f 19438 10546 19439
+f 10551 19439 10546
+f 10551 10550 10597
+f 10597 19439 10551
+f 10547 10538 10548
+f 10552 10522 10524
+f 10554 10552 10524
+f 10553 10552 10555
+f 10557 10549 10545
+f 10545 10548 10553
+f 10562 10567 10558
+f 10562 10379 10378
+f 10378 10560 10562
+f 10558 19440 10563
+f 10568 10570 19412
+f 19412 10563 10568
+f 10563 19440 10568
+f 10566 19440 10558
+f 19440 10566 10569
+f 10569 10568 19440
+f 19441 10570 10569
+f 10578 10569 10566
+f 10578 10566 10565
+f 10578 10405 19441
+f 19441 10569 10578
+f 10571 10561 10331
+f 10572 10560 10559
+f 10331 10381 10571
+f 10571 10381 10380
+f 10574 10567 10562
+f 10573 10572 10380
+f 10380 10390 10573
+f 10390 10574 10573
+f 10575 10576 10564
+f 10576 10394 10578
+f 10578 10565 10576
+f 10576 10392 10394
+f 10582 10581 19413
+f 19413 19412 10582
+f 19412 10570 10582
+f 10579 9966 19413
+f 19413 10581 10579
+f 19441 10403 10582
+f 10582 10570 19441
+f 19441 10405 10403
+f 10585 10579 10583
+f 10402 10404 10583
+f 10584 10583 10404
+f 10586 9967 9966
+f 10586 10587 9963
+f 9963 9967 10586
+f 10587 10591 9964
+f 10586 10580 10585
+f 10590 11055 10591
+f 10591 10587 10589
+f 10592 10590 10588
+f 10592 19442 11055
+f 11055 10590 10592
+f 10426 10596 19443
+f 10423 19443 10592
+f 19443 10423 10426
+f 10596 10426 10425
+f 10592 19443 19442
+f 10360 10479 10361
+f 10360 10594 10478
+f 10478 10479 10360
+f 10594 10360 19427
+f 10593 10594 19427
+f 10593 19427 10376
+f 10989 10486 10593
+f 10989 10593 10595
+f 10593 10376 10375
+f 10597 10600 10596
+f 10600 10597 10550
+f 10602 10599 10598
+f 10557 10603 10601
+f 10557 10601 10598
+f 10606 10602 10601
+f 10605 10601 10603
+f 10614 10609 19444
+f 10750 10749 10614
+f 10614 19444 10750
+f 7254 19444 10607
+f 10607 7255 7254
+f 10608 7257 7255
+f 10607 19444 10609
+f 10608 10607 10610
+f 10635 10608 10610
+f 10752 10750 19444
+f 19444 7254 10752
+f 10613 10609 10614
+f 10749 10615 10614
+f 10610 10609 10613
+f 10617 10635 10610
+f 10619 10616 10618
+f 19445 10629 19446
+f 19446 10622 10612
+f 19446 10612 19445
+f 10618 10612 10621
+f 10612 10622 10621
+f 10624 10678 10622
+f 19446 10623 10622
+f 19447 10623 19446
+f 10629 19447 19446
+f 10622 10678 10621
+f 10736 10621 10678
+f 10621 10736 10625
+f 10611 10627 19445
+f 19445 10612 10611
+f 19445 10627 10629
+f 10628 19447 10629
+f 10772 10628 10627
+f 10772 10627 10626
+f 10631 7263 10630
+f 10635 10633 10630
+f 10630 10608 10635
+f 10633 10631 10630
+f 10631 10632 7267
+f 7267 7265 10631
+f 10639 7267 10632
+f 10633 10640 10632
+f 10639 10632 10640
+f 10637 10640 10633
+f 10637 10633 10634
+f 10644 10640 10637
+f 10636 10634 10638
+f 10636 10645 10644
+f 10644 10637 10636
+f 10634 10635 10617
+f 10638 10617 10619
+f 10641 7274 10639
+f 10643 10641 10640
+f 10648 10642 10641
+f 10648 10641 10643
+f 7444 7275 10646
+f 10647 10646 10649
+f 10638 10656 10651
+f 10645 10636 10652
+f 10656 10657 10651
+f 10657 10656 10625
+f 10654 10655 10663
+f 10653 10659 10643
+f 10658 10648 10643
+f 10649 10648 10658
+f 10654 10664 10660
+f 10664 10661 10660
+f 10665 10662 10661
+f 10661 10664 10665
+f 10665 10666 10743
+f 10650 10649 10662
+f 10662 10891 10650
+f 10892 10891 10662
+f 10892 10662 10665
+f 10921 10892 10665
+f 10921 10665 10743
+f 10676 10668 10677
+f 10671 10669 10676
+f 10677 10924 10675
+f 10623 10680 10624
+f 10683 10680 10623
+f 10683 10623 19447
+f 10678 10670 10736
+f 10738 10736 10670
+f 10679 10684 10681
+f 10683 10679 10680
+f 10681 10667 10624
+f 10671 10738 10670
+f 10683 19447 10628
+f 10772 10688 10685
+f 10772 10685 10628
+f 10695 10708 10691
+f 10697 10696 10693
+f 10693 10696 10691
+f 10695 10691 10696
+f 10701 10681 10684
+f 10682 10701 10684
+f 10682 10698 10701
+f 10681 10701 10668
+f 10703 10700 10699
+f 10704 10706 10698
+f 10861 10705 10690
+f 10861 10690 10689
+f 10686 10690 10705
+f 10692 10705 10861
+f 10704 10705 10706
+f 10707 10699 10698
+f 10708 10702 10707
+f 10691 10706 10692
+f 10671 10721 10738
+f 10710 10673 10711
+f 10985 10709 10711
+f 10709 10985 10715
+f 10715 10985 10712
+f 10715 10712 10714
+f 10721 10717 10738
+f 10721 10722 10724
+f 10724 10717 10721
+f 10720 10717 10724
+f 10671 10674 10721
+f 10710 10709 10722
+f 10673 10710 10674
+f 10724 10722 10709
+f 10720 10724 10723
+f 10716 10723 10715
+f 10714 10713 10726
+f 10714 10726 10725
+f 10732 10716 10725
+f 10732 10725 10727
+f 10732 10731 10720
+f 10735 10734 10733
+f 10739 10655 10657
+f 10663 10655 10739
+f 10740 10739 10737
+f 10719 10741 10740
+f 10666 10741 10742
+f 10741 10746 10742
+f 10744 10742 10746
+f 10745 10744 10918
+f 19448 10746 10719
+f 10747 10922 10918
+f 10918 10744 10747
+f 19448 19449 10747
+f 19448 10747 10746
+f 19449 10922 10747
+f 10743 10745 10921
+f 10748 19448 10719
+f 10748 10719 10718
+f 19448 10748 19449
+f 19449 10735 10922
+f 10731 10734 19449
+f 19449 10748 10731
+f 10735 19449 10734
+f 10753 10752 7352
+f 10751 10750 10753
+f 10753 7352 7351
+f 10751 10762 10755
+f 10762 10756 10755
+f 10762 10751 10754
+f 10759 7351 7431
+f 10754 7351 10759
+f 7431 10757 10759
+f 10760 10762 10754
+f 10759 10758 10760
+f 10767 10816 10812
+f 10816 10782 10775
+f 10767 10781 10782
+f 10782 10816 10767
+f 10769 10626 10615
+f 10769 10615 10756
+f 10769 10770 10626
+f 10780 10770 10769
+f 10780 10769 10768
+f 10772 10626 10770
+f 10779 10771 10770
+f 10779 10770 10780
+f 10841 10840 10779
+f 10771 10779 10840
+f 10768 10762 10761
+f 10773 10778 10780
+f 10780 10768 10773
+f 10781 10841 10779
+f 10783 10786 7389
+f 10786 10783 10787
+f 10789 10786 10787
+f 19450 10785 10786
+f 10785 19450 10807
+f 10789 10814 19450
+f 19450 10786 10789
+f 19450 10814 10795
+f 19450 10795 10807
+f 7397 10784 7398
+f 10784 10785 10801
+f 10801 7398 10784
+f 10807 10801 10785
+f 10791 10790 7407
+f 10793 7407 7406
+f 10797 10798 10808
+f 10797 10807 10795
+f 10799 10758 10792
+f 10758 10798 10763
+f 10808 10798 10799
+f 10794 10808 10799
+f 10799 10792 10794
+f 7395 7398 10800
+f 10800 7411 7395
+f 10804 7411 10800
+f 7416 10805 19451
+f 7406 7416 19451
+f 7406 19451 10793
+f 10805 10804 10794
+f 10794 19451 10805
+f 10793 19451 10794
+f 10806 10802 10801
+f 10794 10803 10808
+f 10788 9727 10809
+f 10809 10813 10789
+f 9727 10788 9728
+f 9727 10820 10810
+f 10817 10814 10815
+f 10816 10815 10813
+f 10816 10813 10812
+f 10775 10817 10815
+f 10767 10812 10811
+f 10819 10764 10818
+f 10817 10825 10824
+f 10825 10817 10775
+f 10774 10825 10777
+f 10824 10796 10795
+f 10833 10847 10830
+f 10844 10842 10828
+f 10847 10844 10828
+f 10828 10830 10847
+f 10831 10830 10766
+f 10863 10766 10765
+f 10831 10766 10863
+f 10863 10834 10831
+f 10781 10827 10826
+f 10830 10828 10766
+f 10828 10827 10766
+f 10828 10842 10826
+f 10766 10827 10767
+f 10843 10687 10688
+f 10843 10844 10689
+f 10689 10687 10843
+f 10843 10838 10842
+f 10841 10781 10826
+f 10849 10850 10846
+f 10693 10692 10851
+f 10854 10855 10849
+f 10853 10855 10854
+f 10857 10854 10849
+f 10857 10849 10848
+f 10852 10854 10857
+f 10693 10849 10855
+f 10693 10855 10697
+f 10694 10697 10855
+f 10858 10848 10845
+f 10858 10845 10856
+f 10871 10856 10832
+f 10871 10832 10836
+f 10871 10860 10858
+f 10858 10856 10871
+f 10857 10859 10852
+f 10858 10859 10857
+f 19452 10852 10859
+f 10689 10844 10851
+f 10864 10834 10863
+f 10866 10862 10865
+f 10869 10836 10835
+f 10864 10869 10835
+f 10869 10864 10866
+f 10859 10870 11025
+f 11025 19452 10859
+f 10870 10869 10868
+f 11373 11025 10870
+f 7447 10873 10872
+f 7445 10875 7446
+f 10647 10879 7445
+f 7445 7444 10647
+f 10879 10878 10875
+f 10875 7445 10879
+f 7438 7446 10875
+f 7439 7438 10875
+f 10875 10878 10876
+f 10647 10880 10879
+f 10880 10647 10650
+f 10882 10876 10881
+f 7447 7439 10877
+f 10873 7447 10877
+f 10877 10882 10873
+f 10650 10883 10880
+f 10878 10880 10883
+f 10883 10650 10891
+f 10881 10878 10884
+f 10895 10890 10892
+f 10895 10892 10921
+f 10896 10889 10888
+f 10888 10893 10896
+f 10893 10894 10896
+f 10902 10904 10903
+f 10901 10366 10874
+f 10904 10905 10907
+f 10907 10373 10904
+f 10374 10906 10909
+f 10729 10910 10911
+f 10905 10909 10906
+f 10905 10908 10909
+f 10912 10898 10897
+f 10735 10912 10897
+f 10730 10911 10912
+f 10908 10912 10911
+f 10912 10735 10730
+f 10364 10904 10373
+f 10918 10914 10920
+f 10918 10920 10745
+f 10916 10920 10914
+f 10896 10916 10917
+f 10919 10899 10915
+f 10919 10922 10897
+f 10897 10899 10919
+f 10918 10922 10919
+f 10899 10901 10917
+f 10917 10915 10899
+f 10923 10925 10935
+f 10929 10931 10930
+f 10930 10932 10934
+f 10932 10993 10933
+f 10937 10934 10933
+f 10937 10936 10934
+f 10944 10433 10435
+f 10944 10435 10990
+f 10931 10990 10993
+f 10942 10944 10943
+f 10944 10931 10943
+f 10990 10931 10944
+f 10946 10945 10942
+f 10946 10947 10512
+f 10941 10948 10946
+f 10942 10941 10946
+f 10929 10950 10943
+f 10943 10931 10929
+f 10993 10932 10931
+f 10951 10953 10948
+f 10952 10948 10953
+f 10954 10979 10952
+f 10952 10953 10954
+f 10958 10969 19453
+f 10959 10926 10969
+f 10959 10969 10958
+f 10957 10956 10962
+f 19453 10708 10962
+f 19453 10962 10956
+f 19453 10956 10958
+f 10955 10959 10956
+f 19454 10960 10695
+f 10961 10960 19454
+f 10708 10960 10962
+f 10963 19454 10695
+f 10963 19455 10961
+f 10961 19454 10963
+f 10961 19455 10957
+f 10957 10962 10961
+f 10966 10955 10957
+f 10966 10957 19455
+f 10966 19455 10964
+f 10967 10970 10968
+f 10708 19456 10702
+f 10703 10702 19456
+f 19456 10967 10703
+f 19453 10970 19456
+f 19456 10708 19453
+f 10967 19456 10970
+f 10924 10677 10703
+f 10969 10970 19453
+f 10928 10930 10970
+f 10928 10969 10926
+f 10959 10972 10938
+f 10971 10940 10938
+f 10977 10959 10955
+f 10959 10977 10972
+f 10977 10974 10971
+f 10971 10972 10977
+f 10973 10954 10940
+f 10976 10974 10977
+f 10976 10966 10965
+f 10973 19457 10979
+f 19458 19457 10973
+f 19458 10973 10975
+f 11023 19458 10975
+f 11023 10975 10978
+f 10981 10983 10711
+f 10711 10673 10981
+f 10983 10981 10986
+f 10712 10985 10984
+f 10992 10496 10982
+f 10933 10992 10982
+f 10986 10496 10983
+f 10923 10937 10982
+f 10933 10982 10937
+f 10483 10713 10482
+f 10483 10484 10726
+f 10435 10492 10990
+f 10994 10513 10512
+f 19435 10514 10513
+f 19435 10513 10994
+f 10949 10998 10994
+f 10994 10947 10949
+f 11000 19435 10994
+f 11000 10994 10998
+f 10996 19435 11000
+f 10520 19435 10996
+f 10996 11003 11007
+f 11007 10995 10996
+f 11003 10996 11002
+f 10525 10518 10995
+f 10995 11007 10525
+f 19459 11002 11001
+f 19457 19459 11001
+f 11001 10979 19457
+f 19459 19457 19458
+f 19459 11004 11002
+f 11004 11006 11003
+f 11023 11030 19459
+f 19459 19458 11023
+f 11005 11004 19459
+f 11005 19459 11030
+f 11011 11007 11003
+f 11008 10556 10555
+f 11008 10555 10554
+f 11011 11008 10554
+f 10554 11007 11011
+f 10557 10556 11008
+f 11006 11012 11010
+f 11011 11003 11006
+f 11009 11008 11010
+f 10853 19460 10963
+f 10963 10694 10853
+f 19460 19455 10963
+f 10852 11017 19460
+f 19460 10853 10852
+f 11017 11016 19460
+f 11020 10965 10964
+f 19460 11020 10964
+f 10964 19455 19460
+f 11020 19460 11016
+f 19452 11015 11017
+f 11017 10852 19452
+f 11019 11020 11016
+f 11024 11019 11018
+f 10976 11020 11019
+f 11015 19452 11025
+f 11015 11025 11018
+f 11026 11025 11373
+f 11032 11013 11012
+f 11031 11012 11022
+f 10375 10910 10595
+f 10910 10729 10988
+f 11009 11036 11033
+f 11033 11035 11034
+f 11034 10603 11033
+f 11036 11040 11035
+f 11038 11009 11014
+f 11045 11039 11038
+f 11045 11038 11037
+f 19461 11029 11028
+f 11037 11014 11032
+f 11029 11048 11046
+f 11041 11031 11029
+f 11048 11029 19461
+f 11041 11046 11042
+f 11049 11042 11046
+f 10591 11053 10190
+f 11053 10591 11055
+f 11055 19442 11056
+f 19442 19443 11056
+f 19443 10596 11056
+f 11061 10188 10190
+f 11061 10190 11053
+f 11053 11052 11061
+f 11064 11059 10188
+f 11064 10188 11061
+f 11060 19462 11057
+f 11059 11064 11063
+f 11059 11063 11060
+f 11062 11069 11065
+f 11065 11064 11061
+f 11062 11065 11061
+f 11052 11051 11062
+f 11065 11068 11063
+f 11060 11063 11068
+f 11142 19462 11060
+f 11142 11060 11068
+f 11068 11065 11066
+f 11070 11124 11148
+f 11148 11142 11068
+f 11148 11068 11067
+f 11070 11148 11067
+f 10599 11074 11056
+f 11056 10600 10599
+f 11074 10599 10602
+f 11073 11054 11056
+f 11103 11051 11050
+f 11103 11050 11075
+f 11088 11091 11075
+f 11088 11075 11073
+f 11073 11072 11088
+f 11090 11094 11103
+f 11090 11103 11075
+f 11075 11091 11090
+f 10602 11077 11076
+f 11072 11071 11076
+f 19463 11079 11076
+f 11076 11078 19463
+f 11081 11077 11080
+f 11081 19464 11078
+f 11083 19464 11081
+f 19464 11085 19463
+f 19463 11078 19464
+f 11085 11084 19463
+f 11086 11085 19464
+f 11086 19464 11083
+f 11087 11092 11091
+f 11091 11088 11087
+f 11098 11087 11079
+f 11098 11079 19463
+f 11096 11092 11087
+f 11096 11087 11098
+f 11093 11090 11089
+f 11104 11093 11089
+f 11104 11089 11095
+f 11084 11098 19463
+f 11100 11096 11098
+f 11100 11098 11097
+f 11097 11221 11100
+f 11099 11095 11096
+f 11099 11104 11095
+f 11099 11100 11221
+f 11221 11107 11099
+f 11106 11105 11104
+f 11109 11108 11106
+f 11106 11107 19465
+f 19465 11109 11106
+f 11109 11112 11110
+f 11127 11110 11112
+f 11111 11109 19465
+f 11117 11113 11062
+f 11062 11051 11117
+f 11051 11103 11117
+f 11121 11113 11118
+f 11122 11125 11070
+f 11126 11122 11123
+f 11114 11113 11121
+f 11120 11123 11121
+f 11123 11128 11126
+f 11128 11123 11120
+f 11094 11093 11101
+f 11108 11120 11119
+f 11110 11128 11120
+f 11131 11130 11058
+f 11131 11058 11057
+f 19462 11133 11131
+f 11131 11057 19462
+f 11132 19424 11130
+f 11129 11131 11133
+f 11132 19466 10240
+f 10240 19424 11132
+f 11137 10240 19466
+f 11139 11137 19466
+f 19466 11132 11136
+f 11141 11139 19466
+f 11159 19466 11136
+f 11159 11136 11135
+f 11141 19466 11159
+f 11141 11161 11140
+f 11144 11146 11151
+f 19462 11144 11151
+f 11151 11133 19462
+f 19462 11142 11144
+f 11149 11151 11146
+f 11148 11143 11142
+f 11146 11144 11143
+f 11177 11156 11155
+f 19467 11177 11155
+f 19467 11155 19468
+f 11158 11159 11135
+f 11161 11163 11140
+f 11160 11158 11156
+f 11168 10260 11138
+f 10261 10260 11168
+f 11164 10261 11168
+f 11167 11168 11138
+f 11167 11138 11140
+f 11163 11167 11140
+f 11167 11166 11168
+f 11171 11166 11165
+f 10269 10263 11164
+f 10269 11987 10267
+f 11170 11987 10269
+f 11172 11174 11170
+f 11172 11170 11169
+f 11173 11175 11174
+f 11177 19467 11178
+f 19467 11179 11181
+f 11181 11178 19467
+f 11178 11162 11177
+f 11176 11184 11171
+f 11171 11165 11176
+f 11181 11176 11178
+f 11181 11184 11176
+f 11160 11156 11177
+f 11179 11183 11180
+f 11173 11171 11184
+f 11180 11184 11181
+f 11187 11127 11185
+f 11185 11127 11112
+f 11302 11185 11112
+f 11302 11112 11111
+f 11186 11185 11302
+f 11126 11190 11124
+f 11192 11190 11193
+f 11157 11150 11191
+f 11157 11191 11192
+f 19468 11155 11157
+f 11157 11202 19468
+f 11194 11157 11192
+f 19469 11209 11193
+f 11194 11192 11193
+f 11195 11193 11209
+f 11194 11202 11157
+f 19469 11193 11128
+f 19469 11128 11127
+f 19469 11127 11187
+f 11187 11209 19469
+f 11199 11188 11189
+f 11199 11196 11188
+f 19467 19468 11202
+f 19470 11179 19467
+f 19470 19467 11202
+f 11195 11208 11201
+f 11201 19470 11202
+f 11205 19470 11201
+f 11206 11205 11201
+f 11205 11179 19470
+f 11203 11179 11205
+f 11198 11209 11187
+f 11208 11211 11206
+f 11197 11208 11198
+f 11197 11211 11208
+f 11187 11188 11198
+f 11204 11206 11211
+f 11210 11204 11211
+f 11196 11200 11321
+f 11196 11321 11214
+f 11217 11086 11083
+f 11217 11084 11086
+f 11222 11217 11216
+f 11219 11215 11035
+f 11219 11035 11040
+f 11216 11215 11219
+f 11218 11222 11216
+f 11219 11225 11218
+f 11217 11097 11084
+f 11220 11097 11217
+f 11224 11218 11225
+f 11224 11236 11223
+f 11223 11222 11224
+f 11236 11224 11226
+f 11040 11231 11219
+f 11232 11219 11231
+f 11231 11040 11039
+f 11225 11219 11232
+f 11232 11227 11225
+f 11229 11225 11227
+f 11231 11039 11045
+f 11230 11233 11232
+f 11266 11228 11227
+f 11233 11266 11227
+f 11226 11225 11229
+f 11226 11229 11228
+f 11234 11238 11235
+f 11235 11226 11234
+f 11238 11249 11235
+f 11237 11234 11228
+f 11266 11237 11228
+f 11239 11268 11249
+f 11249 11238 11239
+f 11241 11107 11220
+f 11240 11220 11223
+f 19465 11107 11241
+f 11240 11223 11236
+f 11244 11242 11243
+f 11241 11111 19465
+f 11243 11247 11244
+f 11280 11252 11250
+f 11250 11249 11280
+f 11249 11268 11280
+f 11251 11250 11252
+f 11243 11254 11247
+f 11254 11243 11248
+f 11254 11248 11251
+f 11251 11257 11254
+f 11257 19471 11255
+f 11255 11254 11257
+f 11258 19471 11257
+f 11230 11045 11044
+f 11259 11262 11233
+f 11233 11230 11259
+f 11262 11263 11266
+f 11266 11233 11262
+f 11043 11260 11259
+f 11270 11263 11262
+f 11270 11262 11261
+f 11265 11266 11263
+f 11272 11264 11263
+f 11272 11263 11270
+f 11283 11269 11264
+f 11283 11264 11272
+f 11272 11275 11283
+f 11049 11277 11273
+f 11260 11043 11049
+f 11271 11270 11273
+f 11274 11273 11277
+f 11267 11281 11252
+f 11253 11252 11281
+f 11269 19472 11281
+f 19472 11253 11281
+f 19473 11283 11275
+f 11282 11283 19473
+f 11285 19472 11269
+f 11285 11269 11282
+f 11253 19472 11256
+f 11287 11282 19473
+f 11276 11292 19473
+f 19473 11275 11276
+f 11287 19473 11292
+f 11288 11287 11292
+f 11293 11289 11288
+f 11288 11292 11291
+f 19474 11256 19472
+f 11286 11256 19474
+f 11285 11296 19474
+f 19474 19472 11285
+f 11296 11285 11294
+f 11296 11298 11286
+f 11286 19474 11296
+f 11294 11284 11290
+f 11296 11294 11290
+f 11295 11290 11289
+f 11298 11296 11295
+f 11293 11299 11295
+f 11295 11289 11293
+f 11305 11303 11246
+f 11305 11246 11247
+f 11301 11186 11302
+f 11307 11186 11301
+f 11306 11301 11303
+f 11306 11308 11307
+f 11305 11306 11303
+f 11318 11306 11305
+f 11318 11305 11309
+f 11304 11247 11255
+f 19471 19475 11255
+f 11258 19476 19477
+f 19477 19475 19471
+f 11258 19477 19471
+f 19476 11314 19477
+f 11309 11304 11255
+f 11255 11310 11309
+f 19475 11311 11255
+f 11310 19478 11309
+f 11311 11313 11310
+f 19478 11310 11313
+f 11311 19475 19477
+f 11311 19477 11314
+f 11313 11311 11314
+f 11308 11199 11189
+f 11315 11308 11306
+f 11316 11199 11308
+f 11318 11315 11306
+f 11309 19479 11318
+f 11324 11317 11318
+f 11324 11318 19479
+f 11316 11200 11199
+f 11320 11200 11316
+f 11319 11320 11316
+f 11324 11326 11317
+f 19479 11309 19478
+f 11313 19480 19478
+f 19478 11322 19479
+f 11324 19479 11322
+f 19480 11325 11322
+f 11322 19478 19480
+f 19480 11313 11312
+f 11325 19480 11312
+f 11325 12119 11323
+f 11338 12119 11325
+f 11258 11286 11328
+f 11258 11328 19476
+f 19476 11328 19481
+f 19476 19481 11314
+f 11298 11334 11328
+f 11334 11330 19481
+f 19481 11328 11334
+f 11332 11314 19481
+f 11329 11314 11332
+f 11332 19481 11330
+f 11335 11330 11334
+f 11297 11335 11334
+f 11336 11333 11331
+f 11331 11330 11335
+f 11340 11327 11339
+f 11333 11345 11339
+f 11339 11329 11333
+f 11345 19482 11340
+f 11340 11339 11345
+f 11340 11338 11337
+f 11340 11341 11338
+f 19482 11342 11340
+f 11342 11348 11341
+f 11345 11344 11349
+f 11349 19482 11345
+f 11342 19482 11349
+f 19483 11347 11346
+f 11350 11349 11344
+f 19484 19483 11346
+f 11350 19484 11346
+f 11362 11364 19398
+f 11355 11362 19398
+f 11355 19398 9745
+f 11354 9745 9747
+f 11375 11360 11354
+f 11375 11354 11351
+f 11375 11351 11353
+f 11358 11360 11375
+f 11356 11357 11361
+f 11358 11356 11361
+f 10867 11364 11362
+f 11366 11362 11355
+f 11368 11370 11365
+f 10870 10868 11365
+f 11354 11367 11366
+f 11368 11354 11360
+f 11369 11374 11371
+f 11377 11372 11371
+f 11377 11371 11374
+f 11374 11359 11377
+f 11359 11361 11377
+f 11358 11375 7482
+f 11358 7482 7481
+f 11358 7481 11356
+f 11378 11377 11361
+f 7483 11378 11361
+f 11357 7484 7483
+f 11378 7483 11384
+f 11373 11372 11026
+f 11026 11372 11377
+f 11026 11377 11028
+f 11376 11028 11377
+f 11378 11379 11376
+f 11028 11376 19461
+f 11383 11379 11378
+f 11378 11384 11383
+f 19461 11376 11048
+f 11380 11048 11376
+f 11380 11388 11382
+f 11383 11388 11380
+f 11388 11383 11421
+f 11384 7489 19485
+f 11385 19485 7489
+f 11420 11421 11383
+f 11383 11384 19485
+f 11383 19485 11420
+f 18007 11420 19485
+f 19485 11385 18007
+f 11386 11049 11381
+f 11381 19486 11386
+f 11386 19487 11278
+f 11278 11277 11386
+f 19488 11395 11279
+f 19488 11279 11278
+f 19488 11278 19487
+f 11386 19486 19487
+f 11387 19486 11381
+f 11387 11381 11382
+f 11389 11395 19488
+f 11389 19488 19487
+f 11387 11389 19487
+f 19487 19486 11387
+f 11388 11390 11387
+f 11390 11388 11421
+f 11390 11421 11419
+f 11390 11402 11389
+f 11418 11402 11390
+f 11390 11419 11418
+f 11279 11395 11394
+f 11279 11394 11291
+f 11291 11394 11293
+f 11394 11392 11393
+f 11389 11392 11394
+f 11299 11293 11393
+f 11299 11396 11398
+f 11398 11300 11299
+f 11393 11392 11399
+f 11402 11403 11391
+f 11404 11403 11402
+f 11402 11418 11404
+f 11400 11391 11403
+f 11400 11403 11401
+f 11405 11401 11403
+f 11335 11398 11397
+f 11397 11401 11406
+f 11407 11410 11408
+f 11407 11401 11405
+f 11410 11414 11412
+f 11343 11412 11413
+f 11350 11413 19489
+f 11350 19489 19484
+f 11416 19489 11413
+f 11414 11416 11413
+f 11413 11412 11414
+f 11415 11423 11416
+f 11418 11420 11417
+f 11424 11417 11420
+f 11420 18007 11424
+f 11417 11411 11409
+f 11409 11405 11417
+f 11411 11417 11422
+f 11422 11417 11424
+f 10101 11427 19384
+f 19384 10102 10101
+f 10106 11441 11426
+f 11429 11428 19490
+f 19490 11441 10106
+f 19490 10106 11429
+f 11430 11431 11428
+f 10141 11496 11431
+f 10146 11433 11496
+f 11496 10141 10146
+f 11433 10146 10145
+f 10264 11437 10265
+f 11988 11438 11436
+f 11992 11739 11988
+f 19384 11439 19387
+f 11439 19384 11427
+f 11439 9576 19387
+f 11440 11427 11442
+f 11443 11440 19491
+f 19491 19492 11443
+f 11444 9587 9577
+f 11445 9587 11444
+f 11446 11458 11447
+f 11447 11445 11446
+f 11444 11443 19492
+f 11446 11444 19492
+f 11466 11446 19492
+f 11441 19490 11428
+f 11441 11448 11442
+f 11440 11442 11448
+f 11448 11441 11428
+f 19491 11440 11449
+f 11449 11454 19491
+f 11454 11449 19493
+f 19493 11449 11451
+f 11451 11452 19493
+f 11454 19493 11452
+f 19492 19491 11454
+f 11454 11466 19492
+f 11466 11454 11455
+f 11456 9588 11447
+f 11456 11461 11457
+f 11465 11458 11446
+f 11465 11446 11466
+f 11465 11462 11458
+f 11466 11468 11462
+f 11463 11461 11462
+f 11470 11463 11462
+f 11470 11462 11468
+f 11470 11489 11463
+f 11470 19494 11489
+f 11469 11515 19494
+f 19494 11470 11469
+f 11459 11473 9615
+f 11473 11459 11460
+f 11473 11472 9615
+f 9612 9615 11472
+f 11479 11460 11464
+f 11479 11481 11472
+f 11474 11472 11481
+f 11492 11479 11464
+f 11492 11464 11490
+f 11481 11479 11492
+f 11483 11481 11492
+f 11477 11485 11478
+f 11484 11485 11480
+f 11476 9623 9618
+f 9623 11476 19393
+f 9623 19393 9625
+f 11476 11488 19393
+f 11488 11476 11486
+f 11488 11487 19393
+f 19394 19393 11487
+f 11493 11492 11490
+f 11482 11491 11484
+f 11491 11483 11494
+f 11495 11489 19494
+f 11537 11493 11490
+f 11537 11490 11495
+f 11495 19494 11515
+f 11562 11493 11537
+f 11494 11493 11562
+f 11536 11562 11537
+f 11498 11431 11496
+f 11500 11498 11497
+f 11497 11501 11500
+f 11452 11451 11499
+f 11452 11499 11500
+f 11500 11504 11452
+f 11504 11500 11502
+f 11452 11504 11453
+f 11504 11506 11453
+f 11687 11507 11508
+f 11509 11687 11508
+f 11508 11433 11509
+f 11507 11511 11502
+f 11503 11502 11511
+f 11687 11513 11511
+f 11511 11507 11687
+f 11521 11510 11512
+f 11467 11453 11506
+f 11467 11517 11469
+f 11514 11469 11517
+f 11516 11467 11506
+f 11516 11523 11517
+f 11517 11467 11516
+f 11515 11514 11519
+f 11519 19495 19496
+f 11529 19496 19495
+f 11518 11517 11523
+f 11526 11518 11523
+f 11526 11523 11522
+f 11705 11520 11521
+f 11522 11520 11705
+f 11524 11522 11705
+f 11522 11525 11526
+f 19495 11519 11527
+f 11519 11518 11526
+f 19495 11530 11529
+f 11527 11533 19495
+f 11534 11527 11525
+f 11530 19495 11533
+f 11530 11533 11535
+f 11535 11533 11532
+f 11538 11537 11495
+f 11538 11495 11519
+f 11538 11519 19496
+f 11539 11538 19496
+f 11539 19496 11529
+f 19394 11623 9669
+f 11486 11545 11487
+f 11487 11623 19394
+f 11487 11546 11623
+f 11546 11548 11623
+f 11545 11486 11478
+f 11547 11545 11544
+f 11547 11553 11549
+f 11646 11549 11553
+f 11646 11553 11556
+f 11560 11484 11491
+f 11560 11491 11494
+f 11543 11484 11560
+f 11560 11557 11543
+f 11561 11562 11536
+f 11561 11559 11563
+f 11559 11566 11558
+f 11558 11557 11559
+f 11551 11558 11552
+f 11566 11595 11567
+f 11568 11555 11554
+f 11570 11555 11567
+f 11575 11571 11570
+f 11571 11575 11574
+f 11567 11595 11570
+f 11570 11595 11575
+f 11664 11572 11571
+f 11571 11574 11664
+f 11578 11664 11574
+f 11576 11574 11573
+f 11576 11578 11574
+f 11582 11593 19497
+f 19497 11528 11531
+f 11582 19497 11581
+f 11581 11586 11582
+f 11579 19497 11531
+f 11581 19497 11579
+f 11586 11581 11580
+f 11585 11588 11584
+f 11590 11585 11583
+f 11591 11602 11589
+f 11564 11561 11592
+f 11564 19498 11559
+f 19498 11565 11559
+f 11594 19498 11564
+f 11593 11594 11564
+f 11564 11592 11593
+f 11541 11593 11592
+f 11592 11540 11541
+f 11593 11541 11528
+f 11584 19498 11594
+f 11594 11582 11584
+f 11598 11565 19498
+f 11598 19498 11584
+f 11565 11596 11566
+f 11528 19497 11593
+f 11603 11617 11600
+f 11603 11605 11617
+f 11608 11596 11599
+f 11608 11597 11596
+f 11611 11606 11607
+f 11613 11606 11611
+f 19499 11573 11612
+f 11573 19499 11851
+f 11851 11576 11573
+f 11615 11612 11613
+f 11612 11615 19499
+f 11600 11608 11599
+f 11587 11600 11599
+f 11609 11608 11600
+f 11618 11611 11610
+f 11611 11618 11620
+f 11620 19500 11616
+f 11621 11616 19500
+f 11620 11618 11619
+f 19500 11620 11619
+f 19500 11619 11804
+f 19500 11804 11621
+f 11626 11627 11624
+f 11624 11627 11625
+f 9672 11625 9702
+f 11629 19396 9702
+f 11629 9702 11625
+f 11630 11549 11646
+f 11646 11632 11630
+f 11629 11636 11637
+f 11637 19396 11629
+f 19396 11637 9707
+f 11638 11637 11650
+f 11650 19501 11638
+f 9716 11638 11640
+f 11640 11638 19501
+f 11641 16855 11639
+f 16855 11641 18095
+f 11644 11633 11632
+f 11642 11634 11631
+f 11642 11633 11643
+f 11643 11644 11648
+f 11646 11645 11644
+f 11646 11644 11632
+f 11645 11569 11572
+f 11649 11635 11634
+f 11651 11636 11649
+f 11651 11649 11642
+f 11658 11642 11643
+f 11654 11658 11643
+f 11647 11655 11648
+f 11572 11664 11647
+f 11648 11655 11654
+f 11647 11663 11655
+f 11657 11655 11663
+f 11653 11651 11659
+f 11659 11658 11654
+f 11659 11654 11656
+f 11660 11659 11656
+f 11667 19501 11650
+f 11640 19501 11668
+f 11640 11668 11641
+f 18095 11641 11668
+f 18096 18095 11668
+f 19501 11667 11668
+f 11668 11667 11669
+f 11668 18121 18096
+f 18121 11668 11670
+f 11662 11673 11666
+f 11667 11666 11673
+f 11671 11667 11673
+f 11672 11673 11662
+f 11679 11669 11674
+f 11674 11676 11679
+f 11670 11669 11679
+f 11679 11678 11670
+f 11682 11509 11432
+f 11682 11432 11434
+f 11682 11686 11687
+f 11687 11509 11682
+f 11703 11521 11689
+f 11703 11689 11688
+f 11706 11703 11688
+f 11706 11688 11690
+f 10219 11692 11683
+f 11683 10220 10219
+f 10219 10252 11692
+f 11697 11691 11695
+f 11700 11693 11691
+f 11700 11698 11693
+f 11699 11706 11690
+f 11699 11690 11698
+f 11696 11701 11697
+f 11702 11699 11700
+f 11696 11714 11701
+f 11702 11701 11714
+f 11705 11704 11524
+f 11709 11525 11524
+f 11704 11707 11524
+f 11709 11524 11707
+f 11708 11704 11706
+f 11720 11709 11707
+f 11708 11716 11707
+f 11720 11707 11716
+f 11534 11525 11709
+f 11710 11712 11532
+f 11711 11535 11532
+f 11759 11531 11535
+f 11759 11535 11711
+f 11710 11709 11720
+f 11719 11710 11720
+f 11712 11710 11719
+f 11762 11759 11711
+f 11762 11711 11712
+f 11762 11712 11775
+f 11762 11775 11765
+f 11714 11713 11702
+f 11708 11706 11699
+f 11716 11708 11713
+f 11717 11716 11713
+f 11715 11717 11713
+f 11722 11712 11719
+f 11718 11719 11716
+f 11722 11719 11718
+f 11775 11712 11722
+f 11721 11775 11722
+f 11723 11722 11718
+f 11717 11725 11718
+f 11723 11718 11725
+f 11774 11775 11721
+f 11777 11774 11721
+f 11777 11721 11724
+f 11695 11694 11726
+f 11728 11696 11695
+f 19502 10271 10256
+f 19502 11727 10271
+f 10265 19502 10256
+f 11736 19502 10265
+f 11730 11727 19502
+f 11730 19502 11736
+f 11731 11728 11729
+f 11732 11714 11696
+f 11732 11696 11731
+f 19503 11732 11733
+f 11734 11731 11729
+f 11734 11729 11730
+f 11733 11734 11738
+f 11437 11736 10265
+f 11730 11737 11734
+f 11740 11737 11735
+f 11754 11738 11737
+f 11754 11737 11740
+f 11438 11988 11735
+f 11739 11735 11988
+f 11714 19504 11715
+f 11732 19503 11714
+f 11745 19504 11714
+f 11745 11714 19503
+f 11744 19504 11745
+f 11746 11733 11738
+f 11745 19503 11733
+f 11746 11745 11733
+f 11743 11745 11746
+f 19505 11717 11715
+f 19505 11715 19504
+f 19505 19504 11744
+f 11749 11725 11717
+f 11749 11717 19505
+f 11749 19505 11744
+f 11750 11777 11724
+f 11743 11758 11749
+f 11751 11749 11758
+f 11753 11751 11758
+f 11746 11738 11754
+f 11741 11755 11754
+f 11741 11754 11740
+f 11756 11755 11741
+f 11757 12010 11756
+f 11814 11758 11747
+f 11814 11747 19506
+f 19506 11815 11814
+f 12269 11756 12010
+f 11756 12269 11747
+f 19506 11747 12269
+f 19507 11815 19506
+f 11758 11814 11753
+f 11759 11579 11531
+f 11580 11579 11759
+f 11759 11763 11760
+f 11760 11763 11586
+f 11586 11580 11760
+f 11764 11761 11762
+f 11771 11773 11764
+f 11764 11773 11761
+f 11761 11773 11766
+f 11590 11586 11763
+f 11766 11590 11763
+f 11768 11590 11766
+f 11772 11766 11773
+f 11770 11766 11772
+f 11780 11769 11767
+f 11780 11767 11770
+f 11771 11810 11772
+f 11779 11771 11776
+f 11779 11810 11771
+f 11781 11770 11772
+f 11781 11772 11810
+f 11810 11779 11778
+f 11785 11780 11781
+f 11781 11810 11782
+f 11604 11603 11786
+f 11788 11601 11769
+f 11788 11786 11601
+f 11797 11786 11788
+f 11604 11786 11797
+f 11794 11797 11788
+f 11797 19508 11604
+f 19508 11789 11604
+f 11792 11789 19508
+f 11794 11788 11787
+f 11784 11827 11785
+f 11829 11793 11785
+f 11829 11785 11827
+f 11831 11793 11829
+f 11796 11793 11831
+f 11795 11792 19508
+f 19508 11797 11795
+f 11801 11792 11795
+f 11801 11799 11792
+f 11798 11791 11792
+f 11801 11795 11796
+f 11604 11790 11619
+f 11790 11804 11619
+f 11789 11803 11790
+f 11789 11791 11803
+f 19509 11777 11750
+f 11805 11777 19509
+f 11778 11776 11805
+f 11809 11805 19509
+f 11808 11778 11805
+f 11808 11805 11809
+f 19510 11750 11752
+f 19510 19509 11750
+f 11753 19510 11752
+f 19510 11806 11809
+f 11809 19509 19510
+f 11753 11816 19510
+f 19510 11816 11806
+f 11808 11811 11783
+f 11783 11782 11808
+f 11811 11808 11807
+f 11824 11813 11807
+f 11824 11807 11806
+f 11812 11811 11813
+f 11824 11832 11812
+f 11812 11813 11824
+f 11819 11815 19507
+f 11819 11818 11815
+f 11819 11817 11818
+f 11819 11822 11820
+f 11826 11820 11821
+f 11823 11816 11820
+f 11816 11817 11820
+f 11823 11838 11824
+f 11832 11824 11838
+f 11825 11823 11820
+f 11838 11823 11825
+f 11839 11838 11825
+f 11828 11827 11812
+f 11834 11831 11829
+f 11834 11829 11828
+f 11830 11831 11834
+f 11846 11833 11834
+f 11846 11834 11828
+f 11830 11800 11796
+f 11830 11836 11800
+f 19511 11802 11799
+f 19511 11799 11800
+f 11836 19511 11800
+f 11835 11830 11833
+f 11845 11835 11833
+f 11845 11833 11846
+f 11835 11955 11836
+f 11845 11955 11835
+f 11848 11955 11845
+f 11837 11828 11832
+f 11838 11837 11832
+f 11837 11846 11828
+f 11839 11841 11837
+f 11844 11842 11826
+f 11841 11839 11842
+f 12276 11843 11844
+f 11840 11846 11837
+f 12276 11850 11843
+f 11851 11853 11577
+f 11851 11913 11852
+f 11615 11851 19499
+f 19512 11851 11615
+f 11855 19512 11615
+f 19512 11913 11851
+f 19512 11855 11915
+f 19512 11915 11910
+f 11910 11913 19512
+f 11864 11915 11855
+f 11857 11621 11804
+f 11864 11855 11859
+f 11863 11859 11862
+f 11863 11862 11861
+f 11865 11656 11657
+f 11657 11879 11865
+f 11868 11865 11879
+f 11868 11873 11867
+f 11661 11660 11871
+f 11869 11656 11866
+f 11872 11870 11869
+f 11877 11871 11870
+f 11877 11870 11872
+f 11871 11877 11876
+f 11882 11868 11880
+f 11878 11577 11853
+f 11852 11878 11853
+f 11852 11914 11881
+f 11881 11878 11852
+f 11881 11885 11883
+f 11885 11881 11914
+f 11889 11888 11874
+f 11882 11889 11874
+f 11874 11888 11887
+f 11874 11887 11875
+f 11882 11883 11889
+f 11890 11891 11672
+f 11875 11893 11876
+f 11892 11891 11893
+f 11898 11893 11896
+f 11892 11893 11898
+f 11898 11895 11892
+f 11894 11677 11895
+f 11895 11899 11900
+f 11907 11902 11899
+f 11899 11898 11897
+f 11899 11897 11907
+f 11902 11900 11899
+f 11900 11901 11681
+f 11681 11680 11900
+f 11896 11904 11897
+f 11908 11903 11902
+f 11914 11852 11913
+f 11912 11916 11884
+f 11916 11912 11911
+f 11864 11916 11911
+f 11916 11919 11886
+f 11863 11927 11916
+f 11916 11864 11863
+f 11916 11927 11924
+f 11916 11924 11919
+f 11925 11921 11917
+f 11919 11925 11917
+f 11904 11918 11905
+f 11905 11918 11917
+f 11920 19513 11909
+f 11909 11905 11920
+f 11917 11922 11920
+f 11920 11923 19513
+f 11928 11922 11921
+f 11925 11924 11926
+f 19514 11929 11798
+f 19514 11941 11929
+f 19514 11798 11802
+f 11941 19514 11802
+f 11931 11938 11860
+f 11933 11857 11930
+f 11934 11930 11803
+f 11934 11803 11791
+f 11933 11937 11938
+f 11938 11931 11933
+f 19515 11938 11937
+f 11938 11979 11863
+f 11863 11861 11938
+f 19515 11979 11938
+f 11943 11936 11940
+f 11936 11943 11937
+f 11944 11940 11942
+f 11949 19515 11937
+f 11949 11937 11943
+f 11944 19516 11943
+f 19516 19517 11946
+f 11946 11949 11943
+f 11946 11943 19516
+f 11949 11948 11979
+f 11979 19515 11949
+f 11947 11946 19517
+f 11981 11948 11947
+f 11952 11802 19511
+f 11951 11941 11802
+f 11951 11802 11952
+f 11952 19511 11836
+f 11951 11945 11941
+f 11952 11836 11955
+f 11956 11954 11958
+f 11950 11952 11956
+f 11957 11956 11958
+f 11957 11961 11950
+f 11950 11961 11953
+f 19518 11953 11961
+f 11959 11954 11848
+f 11959 11848 11849
+f 19519 11958 11959
+f 11957 11958 19519
+f 11963 19519 11849
+f 11849 19519 11959
+f 11963 11849 11850
+f 12378 19519 11963
+f 12378 11963 11962
+f 19519 11965 11957
+f 11964 11960 11957
+f 11965 11964 11957
+f 11966 11965 19519
+f 11966 19519 12378
+f 11961 11969 11975
+f 11961 11975 19518
+f 11960 11969 11961
+f 11968 11975 11969
+f 11964 19520 11960
+f 11964 12384 19520
+f 12385 19520 12384
+f 19520 12385 11969
+f 11969 11960 19520
+f 11967 11969 12385
+f 19521 11944 11945
+f 11945 11953 19521
+f 19521 19522 19516
+f 19516 11944 19521
+f 11953 19522 19521
+f 19522 19517 19516
+f 11972 19517 19522
+f 11953 11974 19522
+f 11974 11953 19518
+f 11970 19522 11974
+f 11972 19522 11970
+f 11947 19517 11972
+f 19518 11975 11974
+f 11973 11975 11968
+f 11970 11977 11971
+f 11977 11970 11973
+f 11967 11978 11973
+f 11973 11968 11967
+f 11973 11978 11977
+f 11971 11976 11981
+f 11981 11947 11971
+f 11976 11971 11977
+f 11436 10267 11987
+f 11987 11986 11436
+f 11992 11991 11995
+f 11995 11742 11992
+f 11993 11989 11990
+f 11993 11991 11985
+f 11993 11985 11989
+f 11180 11999 11173
+f 11183 11999 11180
+f 12000 11998 11990
+f 11997 12030 12002
+f 12003 12002 12030
+f 12001 12004 11994
+f 11994 11993 12001
+f 12004 12005 11994
+f 12004 12001 12002
+f 11998 11997 12002
+f 12006 12007 11757
+f 12010 11757 12007
+f 12006 11994 12007
+f 12012 12010 12009
+f 12013 12009 12008
+f 12003 12016 12005
+f 12016 12013 12005
+f 12021 12013 12017
+f 12021 12017 12020
+f 12022 12021 12020
+f 12024 11214 11321
+f 12035 12023 12024
+f 19523 11182 11203
+f 11207 19523 11203
+f 11996 11182 19523
+f 12029 11997 11996
+f 12026 11996 19523
+f 12029 11996 12026
+f 12027 19523 11207
+f 11207 11212 12027
+f 11212 19524 12027
+f 12026 19523 12027
+f 12025 12027 19524
+f 12030 11997 12028
+f 12025 12039 12033
+f 12033 12026 12025
+f 12026 12033 12028
+f 12039 12038 12033
+f 12034 12033 12038
+f 19525 19524 11212
+f 11213 19525 11212
+f 19524 12037 12025
+f 19525 12037 19524
+f 12023 19525 11213
+f 12023 11213 11214
+f 12036 19525 12023
+f 12039 12025 12037
+f 12040 12037 19525
+f 12040 12043 12038
+f 12036 12040 19525
+f 12054 12043 12041
+f 12054 12041 12042
+f 12046 12034 12048
+f 12045 12075 12049
+f 19526 12075 12045
+f 12045 12050 19526
+f 19526 12050 12073
+f 12073 12075 19526
+f 12049 12020 12015
+f 12015 12044 12049
+f 12049 19527 12020
+f 19527 12075 12022
+f 12022 12020 19527
+f 12049 12075 19527
+f 12048 12034 12038
+f 12053 12055 12051
+f 12053 12056 12055
+f 19528 12052 12058
+f 12083 12073 12050
+f 12083 12050 19528
+f 12050 12052 19528
+f 12058 12052 12055
+f 12059 12058 12055
+f 12059 12055 12056
+f 12057 19528 12058
+f 12061 12273 12011
+f 12061 12011 12019
+f 12019 12022 12061
+f 12066 12062 12060
+f 12065 12067 12070
+f 12067 12092 12070
+f 12071 12070 12092
+f 12072 12099 12284
+f 12076 12078 12074
+f 12075 12074 12022
+f 12079 12063 12074
+f 12064 12063 12079
+f 12079 12067 12064
+f 12081 12079 12078
+f 12081 12078 12077
+f 12082 12081 12085
+f 12087 12083 19528
+f 12084 12077 12076
+f 12083 12087 12076
+f 12084 12076 12087
+f 12088 19528 12057
+f 12088 12087 19528
+f 12084 12081 12077
+f 12089 12085 12084
+f 12102 12089 12086
+f 12085 12089 12102
+f 12086 12084 12087
+f 12086 12091 12102
+f 12095 12093 12080
+f 12094 12098 12097
+f 12097 12099 12072
+f 12072 12071 12097
+f 12096 12100 12098
+f 12103 12082 12102
+f 12091 12206 12103
+f 12103 12102 12091
+f 12104 12103 12206
+f 12206 12108 12104
+f 12082 12103 12095
+f 12111 12106 12107
+f 12111 12107 12109
+f 12100 12096 12105
+f 12112 12100 12105
+f 11320 12024 11321
+f 12115 12024 11320
+f 12115 12035 12024
+f 12113 12115 11320
+f 12114 11317 11326
+f 12114 12113 11319
+f 12116 12042 12035
+f 12117 12115 12113
+f 12133 12116 12117
+f 12114 12117 12113
+f 12118 12117 12114
+f 12119 11338 12123
+f 12119 12123 12120
+f 12124 12126 12118
+f 12120 12125 12124
+f 12116 12133 12127
+f 12129 12122 12123
+f 12129 12125 12122
+f 12133 12117 12118
+f 19529 12054 12127
+f 12135 12056 12054
+f 12135 12054 19529
+f 12132 12135 19529
+f 12132 19529 12127
+f 12134 12133 12118
+f 12136 12059 12135
+f 12132 12138 12136
+f 12136 12135 12132
+f 12139 12131 12134
+f 12134 12118 12126
+f 12145 12140 12139
+f 12144 12162 12142
+f 12162 12194 12142
+f 12145 12142 12194
+f 11341 12146 12123
+f 12123 11338 11341
+f 12148 12123 12146
+f 11348 11347 12146
+f 12146 11341 11348
+f 12147 12146 11347
+f 12129 12123 12148
+f 12147 19530 12129
+f 12129 12148 12147
+f 19530 19531 12129
+f 12130 12129 19531
+f 19531 19532 12130
+f 12155 19531 19530
+f 12149 12155 19530
+f 19530 12147 12149
+f 12157 19532 19531
+f 12155 12157 19531
+f 12153 11347 19483
+f 12152 12149 11347
+f 11347 12153 12152
+f 12150 12153 19483
+f 12150 19483 19484
+f 12152 12154 12149
+f 12151 12154 12152
+f 12143 12130 19532
+f 19532 12161 12143
+f 12143 12161 12144
+f 12169 12161 19532
+f 12157 12169 19532
+f 12169 12163 12161
+f 12165 12194 12162
+f 12161 12165 12162
+f 12165 12167 12195
+f 12195 12194 12165
+f 12163 12169 12168
+f 12168 12156 12159
+f 12159 12171 12168
+f 12160 19533 12171
+f 12171 12159 12160
+f 12176 12172 12171
+f 12176 12171 19533
+f 12170 12174 12164
+f 12164 12163 12170
+f 12174 12238 12166
+f 12166 12164 12174
+f 12170 12172 12173
+f 12175 12173 12172
+f 12174 12173 12178
+f 12174 12178 12238
+f 12177 12173 12175
+f 12180 12136 12138
+f 12186 12090 12088
+f 12186 12088 12179
+f 12184 12186 12179
+f 12184 12179 12180
+f 12181 12182 12137
+f 12182 12185 12183
+f 12188 12186 12184
+f 12185 12191 12183
+f 12145 12193 12140
+f 12192 12181 12140
+f 12198 12192 12140
+f 12198 12140 12193
+f 12194 12193 12145
+f 12202 12192 12198
+f 12213 12185 12192
+f 12191 12185 12213
+f 12213 12192 12202
+f 12197 12200 12202
+f 12202 12198 12197
+f 12205 12108 12206
+f 12207 12190 12191
+f 12190 12208 12204
+f 12205 12109 12108
+f 12210 12109 12205
+f 12209 12205 12204
+f 12109 12210 12110
+f 12218 12207 12213
+f 12223 12218 12213
+f 12223 12213 12214
+f 12201 19534 12214
+f 12203 12215 19534
+f 19534 12201 12203
+f 12223 12214 19534
+f 19534 12217 12223
+f 12217 19534 12215
+f 12222 12218 12223
+f 12221 12220 12219
+f 12212 12220 12211
+f 12344 12224 12216
+f 12225 12195 12167
+f 12229 12226 12225
+f 12225 12167 12166
+f 12231 12199 12226
+f 12229 12233 12226
+f 12233 12234 12231
+f 12231 12226 12233
+f 12231 12230 12203
+f 12203 12199 12231
+f 12234 12232 12231
+f 12228 12235 12233
+f 12235 12236 12234
+f 12237 12166 12238
+f 12243 12227 12237
+f 12228 12227 12243
+f 12242 12243 12237
+f 12238 12239 12237
+f 12240 12178 12177
+f 12237 12239 12242
+f 12242 12239 12240
+f 12243 12245 12235
+f 12236 12235 12245
+f 12243 12246 12245
+f 12246 12243 12242
+f 12248 12236 12245
+f 12244 12247 12245
+f 12249 12244 12246
+f 12249 12259 12247
+f 12247 12244 12249
+f 12230 12251 12215
+f 12215 12203 12230
+f 12344 12216 12255
+f 12255 12256 12344
+f 12256 12346 12345
+f 12345 12344 12256
+f 12257 12255 12252
+f 12254 12257 12252
+f 12265 12346 12256
+f 12257 12265 12256
+f 12248 12258 12253
+f 12253 12236 12248
+f 12258 12248 12247
+f 12258 12262 12254
+f 12259 12260 12258
+f 12368 12264 12266
+f 12368 12266 12267
+f 12268 19506 12269
+f 12271 19506 12268
+f 19507 19506 12271
+f 12011 12270 12012
+f 12271 12270 19507
+f 19507 12270 11819
+f 12011 12272 12270
+f 12272 12011 12273
+f 12272 12274 11821
+f 12274 12066 11821
+f 11821 19535 11826
+f 12066 19535 11821
+f 12066 12065 12279
+f 12066 12279 19535
+f 12274 12273 12061
+f 19535 12278 11826
+f 11826 12278 11844
+f 19535 12280 12278
+f 12280 19535 12279
+f 12280 12069 12278
+f 12275 11844 12278
+f 11850 12276 12275
+f 11962 11850 12275
+f 11962 12275 12277
+f 12069 12281 12278
+f 12277 12278 12281
+f 12283 12277 12281
+f 12476 12426 12425
+f 12477 12428 12426
+f 12477 12426 12476
+f 12286 12287 12393
+f 12400 12393 12287
+f 12285 12099 12286
+f 12288 12286 12101
+f 12288 12101 12289
+f 12288 12291 12287
+f 12287 12293 12400
+f 12406 12400 12293
+f 12406 12293 12292
+f 12294 12293 12287
+f 12287 12291 12294
+f 12294 19536 12292
+f 12292 12303 19537
+f 19537 12406 12292
+f 12303 12292 19536
+f 12296 12308 19538
+f 19538 12297 12296
+f 12297 12290 12295
+f 19538 12291 12290
+f 19538 12290 12297
+f 12300 19538 12308
+f 12294 12291 12299
+f 12299 12301 19536
+f 19536 12294 12299
+f 19538 12300 12299
+f 12299 12291 19538
+f 12305 12301 12298
+f 12303 19536 12301
+f 12302 12301 12305
+f 12302 12305 12304
+f 12210 12314 12110
+f 12314 12313 12110
+f 12314 12210 12209
+f 12309 12110 12313
+f 12309 12296 12110
+f 12313 12310 12309
+f 12308 12309 12310
+f 12314 12209 12211
+f 12220 12314 12211
+f 12312 12314 12220
+f 12310 12313 12312
+f 12311 12310 12315
+f 12318 12311 12315
+f 12321 12316 12317
+f 12306 12323 12304
+f 12323 12306 12319
+f 12323 12325 12307
+f 12307 12304 12323
+f 12321 12320 12319
+f 12319 12316 12321
+f 12333 12220 12221
+f 12220 19539 12312
+f 19539 12220 12333
+f 12327 12315 12312
+f 12327 12312 19539
+f 12318 12315 12327
+f 12328 12327 19539
+f 12328 19539 12333
+f 12224 12330 12333
+f 12333 12221 12224
+f 12224 12344 12330
+f 12331 12330 12344
+f 12335 12326 12334
+f 12317 12339 12320
+f 12339 12317 12336
+f 12341 12343 12338
+f 12331 12349 12329
+f 12346 12348 12331
+f 12347 12349 12331
+f 12351 12334 12332
+f 12351 12332 12350
+f 12352 12350 12347
+f 12352 12355 12351
+f 12265 12353 12348
+f 12348 12346 12265
+f 12357 12341 12337
+f 12357 12359 12343
+f 12356 12362 12361
+f 12354 12361 12357
+f 12357 12355 12354
+f 12361 12354 12356
+f 12358 12359 12361
+f 12360 12373 12363
+f 12378 11962 12376
+f 12376 11962 12277
+f 12375 11966 12378
+f 12381 12375 12377
+f 12396 12379 12380
+f 12382 12379 12396
+f 12388 12385 12386
+f 12385 12387 11967
+f 12382 12396 12386
+f 12386 12389 12388
+f 12377 12283 12282
+f 12381 12377 12282
+f 12392 12393 12380
+f 12392 12381 12282
+f 12286 12392 12282
+f 12282 12285 12286
+f 12394 12396 12380
+f 12398 12393 12400
+f 12390 12389 12397
+f 12389 12386 12397
+f 19540 12390 12397
+f 19540 12397 12402
+f 11978 11967 12387
+f 12387 12391 11978
+f 12403 12391 12390
+f 12390 12405 12403
+f 12405 12390 19540
+f 12406 19541 12401
+f 19537 19541 12406
+f 12401 19542 12409
+f 12409 12402 12401
+f 19542 12401 19541
+f 12303 12407 19541
+f 19541 19537 12303
+f 19541 12407 19542
+f 12402 12409 19540
+f 12302 12416 12407
+f 12416 12302 12307
+f 12410 12409 19542
+f 12410 19542 12407
+f 12409 12408 12405
+f 12405 19540 12409
+f 12411 12410 12407
+f 12411 12407 12416
+f 12413 12408 12412
+f 12404 12414 11983
+f 11983 11976 12404
+f 12342 12424 12419
+f 12340 12419 12415
+f 12415 12324 12340
+f 12419 12340 12342
+f 12417 12419 12424
+f 12427 12422 12418
+f 12427 12418 12417
+f 12415 12421 12411
+f 12420 12411 12421
+f 12415 12419 12421
+f 12413 12412 12420
+f 12420 12418 12422
+f 12423 12417 12424
+f 12424 12342 12358
+f 12424 12358 12363
+f 12424 12363 12373
+f 19484 19489 19543
+f 19484 19543 12150
+f 12151 12150 19543
+f 19543 12429 12151
+f 12433 12429 19543
+f 11416 12433 19543
+f 19543 19489 11416
+f 12158 12151 12429
+f 12158 12430 12431
+f 12160 12431 12436
+f 12160 12436 19533
+f 12176 19533 12436
+f 12436 12431 12432
+f 12240 12177 12440
+f 12450 12449 12451
+f 12451 12448 12447
+f 12447 12455 12451
+f 12453 12455 12447
+f 12453 12447 12446
+f 12452 12451 12455
+f 12443 12458 12446
+f 12452 12461 12459
+f 12260 12460 12464
+f 12464 12261 12260
+f 12460 12459 12461
+f 12461 12452 12456
+f 12462 12461 12456
+f 12456 12457 12462
+f 12261 12465 12267
+f 11422 12473 12469
+f 11422 12469 12435
+f 12473 11422 12470
+f 12470 11422 11425
+f 12472 12469 12473
+f 12475 12468 12466
+f 12462 12457 12472
+f 12368 12467 12366
+f 12468 12478 12369
+f 12369 12478 12370
+f 12423 12370 12478
+f 12478 12475 12423
+f 12423 12475 12425
+f 12603 290 641
+f 12604 290 12603
+f 12483 297 290
+f 12483 290 12604
+f 297 12483 295
+f 12482 295 12483
+f 12604 12481 12480
+f 12480 12483 12604
+f 12482 12480 12484
+f 12484 12498 12497
+f 12484 12479 12498
+f 12613 12498 12479
+f 12613 12500 12498
+f 12486 316 315
+f 12486 315 12487
+f 12485 12487 12721
+f 12721 12487 12493
+f 12495 12488 12490
+f 12490 12497 12495
+f 12491 12492 12495
+f 12491 12495 12494
+f 12497 12490 12484
+f 12487 12491 12494
+f 12496 12495 12497
+f 12504 12494 12496
+f 12504 12496 12501
+f 12500 12512 12499
+f 12499 19544 12501
+f 12512 19544 12499
+f 12493 12494 12504
+f 12504 12501 12510
+f 12493 12504 12503
+f 12504 12510 12502
+f 12509 12510 12501
+f 12501 19544 12509
+f 12509 19544 12511
+f 12502 12510 12505
+f 12506 12505 12507
+f 12507 12505 12509
+f 12500 12513 12512
+f 12518 12521 12743
+f 12743 12521 12527
+f 12743 12527 12747
+f 12527 12528 12747
+f 19545 12747 12528
+f 19545 12528 12539
+f 12753 19545 12539
+f 12539 12515 12753
+f 12517 12753 12515
+f 12517 12516 19546
+f 19547 12512 12514
+f 19548 19544 12512
+f 19548 12512 12529
+f 12512 19547 12529
+f 12532 19547 12514
+f 12530 12531 12526
+f 12532 12530 12529
+f 12532 12529 19547
+f 12532 12531 12530
+f 12511 19544 12522
+f 12519 12507 12511
+f 12525 12538 12528
+f 12525 12520 12523
+f 12528 12520 12525
+f 19548 12522 19544
+f 19548 12529 12523
+f 12523 12522 19548
+f 12526 12531 12540
+f 12531 12534 12540
+f 12536 12540 12534
+f 12537 12542 12516
+f 12542 19549 12516
+f 12542 12537 12541
+f 12516 19549 19546
+f 12536 19550 12541
+f 12517 19546 12794
+f 19551 19549 12542
+f 12544 19551 12542
+f 19549 12794 19546
+f 19549 19551 12794
+f 12795 12794 19551
+f 19551 12544 12798
+f 12798 12544 12545
+f 12798 12795 19551
+f 12798 12545 12549
+f 19550 12543 12541
+f 12546 12543 19550
+f 12708 19550 12536
+f 12546 19550 12547
+f 12547 19550 12708
+f 12543 12545 12544
+f 12545 12543 12546
+f 12545 12547 12548
+f 12547 12710 12550
+f 589 12556 12553
+f 12554 12552 589
+f 12558 12554 12553
+f 12556 589 12555
+f 12570 12561 12562
+f 12579 12564 12557
+f 12581 12566 12563
+f 12581 12563 12565
+f 12570 12562 12566
+f 12566 12571 12570
+f 12566 12581 12571
+f 12570 12567 12561
+f 607 12575 12576
+f 12557 607 12576
+f 12557 12576 12572
+f 12572 12574 12579
+f 12579 12557 12572
+f 12572 12576 12577
+f 12581 12582 12583
+f 19552 12583 12692
+f 12573 12582 12580
+f 12584 12586 12573
+f 12586 12582 12573
+f 12582 12586 12585
+f 12588 12692 12585
+f 12583 12582 12585
+f 12583 12585 12692
+f 619 19553 12590
+f 19553 12595 12591
+f 12591 12590 19553
+f 620 19553 619
+f 12590 12593 12578
+f 12584 12578 12593
+f 12596 12584 12593
+f 12592 12601 12596
+f 12597 12601 12592
+f 19553 12600 12595
+f 620 12600 19553
+f 12600 620 12598
+f 12601 12589 12587
+f 12584 12596 12601
+f 12602 12605 12603
+f 579 12607 12602
+f 12602 12606 12605
+f 12607 12606 12602
+f 12605 12481 12604
+f 12605 12606 12481
+f 12552 12609 12551
+f 12609 12552 12607
+f 12608 12610 12606
+f 12513 12612 12615
+f 12611 12610 12614
+f 12560 12561 12615
+f 12611 12479 12481
+f 12613 12479 12611
+f 12558 12614 12554
+f 12560 12614 12558
+f 12619 12650 12617
+f 12872 12697 12946
+f 12680 12877 12875
+f 12875 12874 12680
+f 12877 12680 19554
+f 12620 12877 19554
+f 12620 19554 12618
+f 12877 12620 12697
+f 12877 12697 12872
+f 12621 12615 12622
+f 12568 12622 12561
+f 12624 12622 12568
+f 12625 12623 12624
+f 12621 12623 19555
+f 12623 12626 19555
+f 19555 12626 12628
+f 19556 12513 12621
+f 12621 19555 19556
+f 19556 19555 12533
+f 12514 12513 19556
+f 19556 12533 12532
+f 12532 12514 19556
+f 12629 12627 12631
+f 19555 12628 12634
+f 12629 12634 12628
+f 12533 19555 12633
+f 19555 12634 12633
+f 12633 12636 12533
+f 12633 12635 12638
+f 12639 12637 12638
+f 12635 12634 12629
+f 12629 12638 12635
+f 12641 12629 12630
+f 12632 12641 12630
+f 12639 12638 12642
+f 12646 12643 12644
+f 12645 12644 12648
+f 12643 12625 12624
+f 12645 12631 12646
+f 12649 12647 12616
+f 12618 12653 12652
+f 12652 12619 12618
+f 12659 12662 12679
+f 12535 12534 12636
+f 12535 12663 12536
+f 12663 12640 12709
+f 12640 12639 12709
+f 12709 12639 12668
+f 12668 12669 12709
+f 12661 12674 12666
+f 12666 12656 12661
+f 12666 12674 19557
+f 19557 12667 12666
+f 12905 12674 12660
+f 12672 12674 12905
+f 12661 12660 12674
+f 19557 12671 12667
+f 12671 19557 12674
+f 12680 12677 12678
+f 12678 12651 12653
+f 19554 12678 12653
+f 12678 19554 12680
+f 12676 12651 12678
+f 12632 12655 12676
+f 12658 12657 12676
+f 12618 19554 12653
+f 12679 12662 12677
+f 12679 12680 12874
+f 12658 12677 12662
+f 12684 12687 12696
+f 12683 12682 12685
+f 12616 12583 19558
+f 12583 19552 19558
+f 12689 19558 19552
+f 19552 12692 12689
+f 12688 12650 19558
+f 12616 19558 12650
+f 12688 19558 12689
+f 12588 12589 12693
+f 12694 12690 12689
+f 12681 12617 12690
+f 12688 12690 12617
+f 12682 12690 12694
+f 12687 12695 723
+f 12597 12686 12685
+f 12685 12601 12597
+f 12687 12686 12597
+f 12597 12695 12687
+f 12598 723 12695
+f 12695 12600 12598
+f 723 12598 12599
+f 12696 12687 723
+f 12601 12685 12693
+f 12684 12696 729
+f 12696 730 729
+f 12699 12700 12946
+f 12946 12697 12699
+f 2201 12699 729
+f 12681 12620 12617
+f 727 730 12696
+f 12968 12702 12704
+f 12701 12702 12968
+f 12956 12704 12703
+f 12707 12956 12703
+f 12706 12956 12707
+f 12708 12709 12712
+f 12710 12708 12712
+f 12669 12712 12709
+f 12710 12712 12714
+f 12714 12712 12713
+f 12675 19559 19560
+f 19560 12711 12670
+f 19560 12670 12675
+f 12713 12711 19560
+f 12715 12717 2063
+f 12767 2078 12716
+f 12716 12718 12767
+f 12770 12767 12718
+f 12718 12719 12770
+f 12737 12770 12719
+f 12724 12732 2070
+f 12727 12725 12726
+f 12721 12722 12727
+f 12722 12503 12729
+f 12728 12730 19561
+f 19561 12730 12731
+f 19561 12731 12744
+f 12739 12727 12729
+f 12729 12728 12739
+f 12739 12728 19561
+f 12740 12739 19561
+f 19561 12744 12740
+f 12508 12730 12506
+f 12732 12715 2047
+f 12733 12732 12724
+f 12727 12736 12725
+f 12734 12719 12715
+f 12719 12734 12735
+f 12735 12736 12739
+f 12736 12727 12739
+f 12747 12742 12743
+f 12746 12742 12748
+f 12750 12748 12749
+f 12750 12749 12751
+f 12760 12740 12745
+f 12745 12746 12760
+f 12760 12746 12750
+f 12752 12760 12750
+f 12749 12747 19545
+f 19562 12749 19545
+f 19562 19545 19563
+f 12753 19563 19545
+f 12756 12751 12749
+f 12749 19562 12756
+f 12757 12756 19562
+f 19562 19563 12757
+f 12754 19563 12753
+f 12757 19563 12759
+f 12759 19563 12754
+f 12790 12759 12754
+f 12754 12755 12790
+f 12758 12752 12756
+f 12789 12758 12759
+f 12759 12790 12789
+f 12758 12789 12765
+f 12765 12815 12764
+f 19564 12762 12761
+f 12761 12763 19564
+f 19565 19564 12763
+f 12763 12764 19565
+f 12836 12822 12918
+f 12783 19565 12764
+f 12764 12815 12783
+f 12918 12835 12836
+f 2080 12767 12770
+f 2080 12770 12769
+f 12770 12771 12768
+f 2082 12772 19036
+f 12772 2088 2087
+f 2085 2088 12776
+f 12773 12777 12776
+f 12773 12774 12781
+f 12780 12781 13077
+f 19566 13077 12781
+f 12781 12774 12775
+f 12781 12775 12787
+f 12781 12787 19566
+f 19566 12787 12786
+f 12735 12771 12737
+f 12738 12775 12771
+f 12775 12738 19567
+f 19567 12787 12775
+f 12785 19567 12738
+f 12738 12762 12785
+f 12782 12785 12762
+f 12762 19564 12782
+f 19564 19565 12782
+f 12843 12785 12782
+f 12782 12844 12843
+f 12782 19565 12783
+f 12784 12844 12782
+f 12787 19567 12785
+f 12786 12785 13078
+f 13080 13078 12785
+f 12785 12843 13080
+f 12755 12517 12794
+f 12790 12755 12791
+f 12796 12791 12755
+f 12797 12795 12798
+f 12797 12549 12799
+f 12797 12796 12793
+f 12796 12797 12805
+f 12799 12805 12797
+f 12802 12805 12799
+f 12548 12550 19568
+f 12800 12548 19568
+f 12800 19568 12803
+f 12807 12792 12791
+f 12807 12804 12808
+f 12803 12811 12801
+f 12809 12806 12802
+f 12801 12809 12802
+f 12809 12801 12810
+f 12809 12810 12814
+f 12819 12818 12807
+f 12817 12816 12818
+f 12817 12818 12820
+f 12823 12822 12836
+f 12827 12812 12824
+f 12823 12825 12824
+f 12827 12824 12825
+f 12828 12783 12815
+f 12815 12817 12828
+f 12834 12783 12829
+f 12829 12833 12834
+f 12828 12817 12820
+f 12830 12829 12828
+f 12830 19569 12833
+f 12832 19569 12830
+f 12834 12835 12847
+f 19569 12825 12823
+f 12823 12833 19569
+f 12825 19569 12832
+f 12808 12809 12837
+f 12827 12840 12813
+f 12813 12812 12827
+f 12841 12842 12826
+f 12821 12839 12831
+f 12784 12783 12834
+f 12848 12846 12834
+f 19570 12845 12844
+f 12852 12844 12784
+f 12784 12846 12852
+f 12844 12852 19570
+f 19570 12852 12851
+f 12846 12849 12853
+f 12853 12852 12846
+f 19571 13080 12843
+f 12843 12845 19571
+f 13080 19571 12858
+f 13080 12858 12857
+f 19571 12845 19570
+f 19571 19570 19572
+f 12860 19572 19570
+f 19570 12851 12860
+f 19572 12860 12856
+f 12855 12860 12851
+f 19572 12858 19571
+f 12858 19572 12856
+f 12863 12861 12860
+f 12860 12855 12863
+f 12862 12864 12868
+f 12865 12862 12867
+f 12897 12896 12873
+f 12897 12873 12880
+f 12880 12901 12897
+f 12872 12946 12870
+f 12875 12877 12878
+f 12873 12896 12874
+f 12873 12875 12878
+f 12876 12878 12877
+f 12878 12880 12873
+f 12879 12901 12880
+f 12901 12879 19573
+f 12885 19573 12879
+f 12879 12878 12882
+f 12879 12882 12885
+f 12883 12881 12876
+f 12882 12881 12887
+f 12883 12887 12881
+f 12883 12888 12887
+f 12885 12882 12887
+f 12930 12901 19573
+f 12885 12884 19573
+f 12930 19573 12884
+f 12893 12930 12884
+f 12886 12888 12891
+f 12890 12886 12891
+f 12890 12892 12886
+f 12895 12679 12896
+f 12907 12898 12915
+f 12915 12898 12895
+f 12915 12895 12900
+f 12904 12903 12898
+f 12905 12660 12898
+f 12905 12898 12903
+f 12908 12919 12909
+f 12909 12902 12904
+f 12874 12896 12679
+f 12907 12915 12916
+f 12907 12916 12910
+f 12914 12916 12900
+f 12900 12899 12914
+f 12912 12914 12899
+f 12899 12901 12912
+f 12914 19574 12916
+f 12913 19574 12914
+f 19574 12910 12916
+f 12910 19575 12911
+f 12913 19576 19574
+f 19574 19577 12910
+f 19577 12924 19575
+f 19577 19575 12910
+f 19574 19576 19578
+f 19578 12925 19577
+f 19578 19577 19574
+f 12925 12924 19577
+f 12917 12908 12907
+f 12822 12908 12917
+f 12911 19575 12921
+f 12917 12911 12921
+f 12920 12928 12835
+f 12918 12917 12920
+f 12921 19575 12924
+f 12924 12923 12921
+f 12923 12927 12921
+f 12926 12923 12922
+f 12912 12901 12930
+f 12931 12913 12912
+f 12913 12931 12932
+f 12893 12931 12930
+f 12932 12931 12893
+f 12932 12937 19576
+f 19576 12913 12932
+f 12894 12933 12932
+f 12933 12937 12932
+f 12937 19578 19576
+f 12937 12925 19578
+f 12938 12933 12934
+f 12938 12940 12922
+f 12940 12926 12922
+f 12938 12943 12940
+f 12941 12939 12940
+f 12934 12936 12938
+f 12943 13000 12940
+f 13000 12942 12940
+f 12948 12871 12870
+f 12948 12949 12951
+f 2200 19579 12944
+f 12944 2201 2200
+f 12945 12944 19579
+f 19579 2200 12963
+f 12965 19579 12963
+f 12945 19579 19580
+f 12965 12967 19580
+f 12965 19580 19579
+f 19580 12950 12949
+f 12949 12945 19580
+f 12967 12950 19580
+f 12952 12950 12967
+f 12953 12883 12871
+f 12959 12955 12960
+f 12952 12958 12951
+f 12958 12955 12959
+f 12955 12956 12961
+f 12962 12965 12963
+f 12966 12704 12952
+f 12966 12968 12704
+f 12954 12952 12704
+f 12956 12954 12704
+f 12891 12960 12889
+f 12961 12971 12970
+f 12961 12956 12706
+f 12961 12706 12971
+f 12974 12971 12706
+f 12974 12706 12705
+f 12889 12969 12936
+f 12943 12936 12972
+f 12972 12936 12970
+f 12943 12975 13000
+f 12928 12927 12929
+f 12979 12978 12902
+f 19581 19568 12550
+f 12550 12714 19581
+f 19581 12714 12713
+f 12977 19581 12713
+f 19581 12986 19568
+f 12980 12986 19581
+f 19581 12977 12980
+f 12803 19568 12986
+f 12906 12981 19559
+f 19559 12675 12906
+f 12978 12713 19560
+f 12981 12978 19560
+f 19560 19559 12981
+f 12981 12906 12902
+f 12979 12902 12982
+f 12984 12983 12982
+f 12985 12811 12803
+f 12979 12983 12980
+f 12984 12987 12985
+f 12824 12987 12984
+f 12942 13002 12988
+f 12988 13002 13008
+f 12992 12976 12974
+f 12976 12992 12991
+f 12991 12993 12994
+f 13001 12989 12995
+f 13003 13001 12995
+f 13000 13001 12942
+f 13008 13002 13001
+f 13001 13003 13008
+f 13006 13008 13003
+f 13009 13006 13005
+f 12995 12994 13004
+f 12996 13004 12994
+f 13004 12996 13005
+f 12998 13005 12996
+f 13017 12998 12999
+f 13017 13010 12998
+f 13010 13017 13013
+f 13017 13834 13015
+f 13014 13015 13838
+f 13019 13018 12928
+f 13018 13025 12848
+f 12849 12848 13025
+f 13020 13025 13018
+f 13025 13020 13022
+f 13019 12928 12929
+f 13019 12929 13021
+f 13021 13020 13019
+f 13027 12854 12850
+f 13029 13027 13024
+f 13034 13032 13033
+f 13033 13035 13034
+f 13031 13033 13029
+f 13035 13033 13037
+f 13038 13040 13039
+f 12939 12941 13021
+f 13041 13021 12941
+f 13030 13023 13041
+f 13008 13007 13042
+f 13042 13030 13041
+f 13042 13043 13044
+f 13044 13037 13031
+f 13044 13051 13040
+f 13036 19582 13047
+f 13034 13036 13047
+f 13047 13045 13034
+f 13047 19582 13052
+f 13046 12868 12864
+f 13055 13048 13047
+f 13047 13052 13055
+f 13039 19582 13036
+f 19582 13039 13049
+f 13049 13052 19582
+f 12867 12868 13048
+f 13048 12869 12867
+f 13043 13063 13051
+f 13060 13050 13051
+f 13062 13061 13051
+f 13061 13059 13058
+f 13061 13062 13072
+f 13065 13061 13072
+f 13068 13043 13007
+f 13007 13011 13068
+f 13016 13068 13011
+f 13068 13016 13066
+f 13011 13012 13016
+f 13066 13063 13068
+f 13063 13066 13067
+f 13062 13067 13073
+f 13073 13067 13070
+f 13838 13069 13014
+f 13071 13069 13838
+f 13074 13075 13072
+f 2204 2089 12779
+f 2204 12779 12778
+f 2204 12778 12780
+f 13077 19566 13076
+f 13076 19566 12786
+f 13076 12786 13081
+f 13079 13081 12786
+f 2206 13076 19583
+f 19584 19583 13076
+f 13076 13081 19584
+f 13083 19584 13081
+f 13084 13079 13080
+f 13085 13084 13086
+f 12859 13084 12857
+f 13088 13086 13084
+f 13088 13084 12859
+f 13090 13089 12866
+f 12866 12869 13090
+f 13088 13089 13097
+f 13088 13097 13092
+f 13091 13097 13089
+f 13079 13085 13093
+f 13093 13085 13087
+f 13102 13094 13087
+f 13087 13092 13102
+f 13094 13102 13107
+f 13091 13090 13095
+f 13092 13097 13098
+f 13101 13098 13096
+f 13096 13099 13101
+f 13102 13092 13098
+f 13101 13100 13105
+f 19585 13105 13100
+f 13127 13109 13105
+f 13083 13082 13093
+f 13112 13083 13093
+f 13094 13107 13110
+f 13093 13110 13112
+f 13083 13112 13113
+f 13106 13108 13111
+f 13108 13109 13111
+f 13112 13111 19586
+f 13111 13109 13127
+f 13111 13127 13133
+f 13133 19586 13111
+f 19586 13133 13117
+f 13114 13112 19586
+f 13114 19586 13116
+f 13116 19586 13117
+f 13056 13095 12869
+f 13095 13056 13057
+f 13095 13057 19587
+f 13095 19587 13099
+f 13057 13059 13064
+f 19587 13057 13064
+f 13122 19587 13064
+f 13118 13099 19587
+f 13100 13099 13119
+f 13122 13118 19587
+f 13121 13122 13123
+f 13121 13123 19588
+f 19588 13120 13121
+f 13120 19588 13124
+f 13065 13122 13064
+f 13123 13065 13075
+f 13123 13124 19588
+f 19585 13100 19589
+f 19589 13100 13119
+f 13105 19585 19589
+f 13128 13105 19589
+f 19589 13119 13120
+f 13126 13128 19589
+f 19589 13120 13126
+f 13132 13126 13125
+f 13128 13127 13105
+f 13136 13117 13129
+f 13129 13135 13136
+f 13115 13117 13136
+f 13071 13838 13140
+f 13139 13138 13071
+f 13075 13074 13141
+f 13143 13141 13144
+f 13124 13123 13148
+f 13152 13132 13124
+f 13124 13155 13152
+f 13152 13155 19590
+f 13130 13132 13151
+f 13152 19590 13153
+f 13151 13131 13130
+f 13151 13153 13179
+f 13155 13124 13148
+f 19590 13155 19591
+f 13154 19591 13155
+f 13156 19591 13154
+f 19592 13153 19590
+f 19590 19591 19592
+f 19593 19592 19591
+f 13179 13153 19592
+f 13179 19592 19594
+f 19594 19592 19593
+f 13159 19594 19593
+f 19591 13156 19593
+f 19593 13156 13157
+f 13157 13159 19593
+f 13166 13160 13161
+f 13143 13165 13149
+f 13165 13150 13149
+f 19595 13165 13143
+f 13165 19595 13162
+f 13143 13146 19595
+f 19595 13146 13147
+f 13163 19595 13147
+f 13163 13162 19595
+f 13156 13150 13158
+f 13161 13162 13167
+f 13169 13147 13874
+f 13164 13163 13169
+f 13164 13170 13168
+f 13170 13173 13168
+f 13179 13134 13151
+f 13177 13134 13178
+f 13134 13179 13178
+f 13136 13135 13188
+f 13177 13188 13135
+f 13190 13188 13177
+f 13177 13178 13190
+f 13190 13178 13180
+f 13190 13180 19596
+f 13179 19594 13181
+f 13181 19594 19597
+f 19597 19594 13159
+f 19597 13180 13181
+f 13180 19597 19598
+f 13180 19598 19596
+f 13182 19597 13159
+f 13182 19598 19597
+f 13159 13160 13182
+f 13182 13160 13183
+f 13166 13183 13160
+f 19598 13192 19596
+f 13186 13192 19598
+f 19598 13182 13186
+f 13190 19596 13189
+f 13189 19596 13192
+f 13189 13192 13191
+f 13186 13187 13193
+f 13191 13193 13207
+f 13187 13185 13196
+f 13193 13187 13208
+f 13187 13198 13199
+f 13197 13199 13198
+f 13199 13208 13187
+f 13208 13199 13202
+f 13204 13203 13199
+f 13199 13201 13204
+f 13204 13201 13205
+f 13202 13209 13208
+f 13203 13206 13211
+f 13210 13209 13202
+f 13210 13203 13211
+f 13172 13194 13167
+f 13194 13172 13213
+f 13213 13172 19599
+f 13166 13167 13194
+f 13213 19599 13216
+f 13214 19599 13172
+f 19600 13195 13213
+f 19600 13197 13195
+f 13216 19600 13213
+f 13216 19599 13217
+f 13197 19600 13200
+f 13200 19600 13216
+f 19599 13214 13217
+f 13219 13218 13214
+f 13219 13221 13218
+f 13998 13222 13175
+f 13219 13222 13220
+f 13200 13215 13201
+f 13215 13205 13201
+f 13218 13225 13215
+f 13225 13206 13205
+f 13226 13225 13218
+f 13226 13218 13229
+f 13228 13226 13229
+f 13220 13230 13221
+f 13227 13211 13206
+f 13232 13212 13211
+f 13229 13230 13234
+f 13234 13230 13236
+f 15187 13235 13234
+f 13234 13236 15187
+f 13236 13220 13222
+f 13223 13237 13236
+f 13230 13220 13236
+f 15187 13236 13239
+f 13241 13239 13238
+f 13244 13242 2283
+f 13243 13244 13247
+f 13255 13247 13245
+f 13243 13249 12702
+f 13249 13243 13247
+f 12702 13249 12703
+f 13255 13249 13247
+f 2283 2305 13244
+f 13248 13254 13245
+f 13250 12705 13249
+f 13255 13250 13249
+f 13257 13255 13254
+f 13258 13257 13254
+f 13256 13258 13254
+f 13263 13264 13262
+f 13264 13263 13266
+f 13264 13266 13269
+f 19601 13264 13269
+f 13269 19602 19601
+f 2306 13262 2305
+f 13246 2305 13262
+f 13248 13246 13262
+f 13256 13265 13271
+f 13274 13272 13270
+f 19601 19602 13264
+f 13274 13264 19602
+f 19602 13331 13274
+f 13272 13271 13270
+f 13280 13273 13272
+f 13280 13272 13275
+f 13331 13275 13274
+f 13330 13275 13331
+f 13271 13258 13256
+f 13273 13259 13258
+f 13273 13258 13271
+f 13276 12992 13251
+f 19603 13278 13260
+f 13276 13277 13827
+f 13827 13826 13276
+f 13278 13827 13277
+f 13287 13828 13827
+f 13280 13282 13273
+f 13279 19604 13281
+f 13282 13260 13259
+f 13282 19605 13260
+f 19603 13260 19605
+f 13259 13273 13282
+f 13281 19605 13282
+f 19603 19605 13284
+f 13288 13278 19603
+f 13278 13288 13827
+f 13288 19603 13284
+f 13281 19604 13284
+f 13281 13284 19605
+f 19604 13285 13284
+f 13284 13283 13288
+f 13827 13288 13287
+f 13291 13832 13287
+f 13291 13287 13286
+f 13288 13283 13289
+f 13286 13289 13290
+f 13290 13292 13348
+f 13294 2360 2362
+f 13293 13298 13296
+f 13300 13303 13296
+f 13300 13296 13298
+f 13293 13297 13311
+f 13293 13311 13298
+f 13299 13298 13311
+f 13306 13304 13303
+f 13305 13307 13306
+f 13307 13305 13335
+f 13308 13297 2362
+f 13311 13297 13309
+f 13320 13310 13312
+f 13308 2383 13313
+f 13313 2383 13369
+f 13312 13309 13316
+f 13316 13314 13370
+f 13320 13318 13310
+f 13310 13318 13305
+f 13305 13299 13310
+f 13319 13335 13305
+f 13318 13323 13319
+f 13318 13320 13325
+f 13320 13321 13405
+f 13405 13325 13320
+f 13325 13405 13324
+f 13325 13323 13318
+f 13327 2399 2401
+f 13267 2300 13268
+f 2399 13327 13268
+f 13328 19602 13269
+f 13302 19602 13328
+f 13326 13295 13327
+f 13302 13328 13296
+f 13326 2401 13294
+f 13326 13294 13295
+f 13302 13329 19602
+f 19602 13329 13331
+f 13333 13330 13329
+f 13329 13301 13304
+f 13333 13332 13339
+f 13332 13304 13307
+f 19606 13335 13336
+f 13340 13279 13330
+f 19604 13279 13340
+f 13341 19604 13340
+f 13339 13341 13340
+f 13342 13339 13334
+f 13335 19606 13334
+f 19607 13342 13334
+f 13334 19608 19607
+f 19608 13334 19606
+f 19607 13341 13342
+f 19609 13341 19607
+f 19609 19607 13349
+f 13350 19609 13349
+f 19607 19608 13349
+f 19609 19604 13341
+f 13285 19604 19609
+f 13285 19609 13350
+f 13283 13285 13343
+f 13343 13285 13350
+f 13343 13289 13283
+f 13289 13343 13292
+f 13350 13344 13343
+f 13343 13345 13292
+f 13347 13346 13353
+f 13844 13347 13353
+f 13346 13345 13344
+f 13352 13346 13344
+f 13355 13353 13352
+f 19608 19606 13336
+f 13356 19608 13336
+f 13362 19608 13356
+f 13362 13356 13360
+f 19608 13362 13349
+f 13351 13349 13362
+f 13322 13357 13336
+f 13356 13336 13357
+f 13358 13357 13338
+f 13358 13338 13532
+f 13360 13363 13362
+f 13359 13361 13365
+f 13365 13360 13359
+f 13360 13365 13363
+f 13363 13365 13367
+f 13352 13351 13363
+f 13352 13363 19610
+f 13355 13352 19610
+f 19610 13363 19611
+f 19610 19611 13848
+f 13368 13355 19610
+f 13848 13368 19610
+f 19611 13363 19612
+f 19612 13363 13367
+f 13569 13367 13366
+f 13367 13569 19612
+f 13848 19611 19613
+f 19611 19612 19613
+f 13848 19613 13849
+f 13569 13906 19612
+f 13906 19613 19612
+f 13569 13571 13906
+f 13371 13369 2635
+f 13369 2382 2635
+f 13315 13376 13370
+f 13376 13315 13371
+f 13372 13371 2636
+f 13375 13372 2636
+f 13374 13376 13371
+f 13374 13371 13372
+f 13376 13378 13370
+f 13370 13378 13316
+f 13317 13316 13379
+f 13379 13385 13317
+f 13374 13377 13376
+f 13384 13377 13374
+f 13374 13380 13384
+f 13379 13377 13384
+f 13385 13384 13383
+f 13383 13380 13386
+f 2642 2644 13375
+f 13388 2644 2713
+f 2713 13391 13388
+f 13389 13388 13391
+f 13396 13392 13382
+f 13396 13373 13389
+f 13373 13396 13382
+f 13396 13389 13393
+f 13395 13392 13396
+f 13413 13392 13395
+f 13398 13413 13395
+f 13400 13321 13317
+f 13399 13317 13385
+f 13399 13385 13402
+f 13415 13402 13383
+f 13415 13383 13386
+f 13403 13401 13400
+f 13402 13418 13399
+f 13418 13402 13415
+f 13418 13403 13399
+f 13405 13321 13401
+f 13418 13407 13403
+f 13403 13408 13406
+f 13401 13403 13406
+f 13404 13410 13412
+f 13417 13415 13414
+f 13424 13414 13416
+f 13398 13419 13413
+f 13397 13419 13398
+f 13421 13419 13397
+f 13411 13408 13422
+f 13411 13425 19614
+f 13416 13420 13424
+f 13427 13424 13430
+f 13428 13429 13430
+f 13457 13430 13429
+f 13391 2713 2712
+f 2712 13432 13391
+f 13465 13432 2712
+f 13391 13431 13390
+f 13431 13434 13390
+f 13431 13391 13432
+f 13465 13436 13432
+f 13444 13437 13435
+f 13444 13435 13438
+f 13393 13390 13434
+f 13434 13440 13393
+f 13439 13448 13441
+f 13441 13440 13439
+f 13437 13439 13433
+f 13444 13442 13437
+f 13448 13439 13442
+f 13443 13442 13444
+f 13461 13442 13443
+f 13441 13445 13397
+f 13421 13397 13445
+f 13445 13441 13448
+f 13449 13442 13452
+f 13452 13460 13451
+f 13454 13421 13447
+f 13421 13454 13429
+f 13447 13450 13454
+f 13551 13457 13456
+f 13551 13456 13458
+f 13459 13460 13464
+f 13461 13463 13462
+f 13470 13476 13469
+f 2736 13472 13471
+f 13472 13470 13471
+f 13443 13475 13463
+f 13478 13476 19615
+f 13475 13477 13463
+f 13476 13478 13475
+f 13476 13473 19615
+f 13479 13477 13478
+f 13479 13478 19616
+f 19616 13478 19615
+f 19616 19615 13482
+f 13479 19616 13482
+f 13481 13479 13482
+f 2743 2736 2741
+f 19617 13482 19615
+f 13483 13482 19617
+f 13484 13483 14429
+f 13485 13521 13481
+f 13485 13484 13519
+f 13521 13485 13519
+f 13485 13481 13483
+f 14430 13484 14429
+f 19618 13519 13484
+f 13484 14430 19618
+f 13519 19618 19619
+f 14430 14431 19618
+f 14441 13527 19620
+f 19618 14441 19620
+f 19618 19620 19619
+f 13489 19621 13487
+f 13502 13492 13491
+f 13464 13494 13459
+f 13518 13494 13493
+f 13496 13494 13518
+f 13496 13518 13488
+f 13487 19621 13500
+f 13491 13501 13502
+f 13489 13517 19622
+f 19622 13523 13489
+f 13489 13523 19623
+f 13523 13522 19624
+f 13523 19624 19623
+f 19621 13503 13500
+f 19621 13489 13503
+f 13503 13489 19623
+f 13510 13503 19623
+f 19624 13510 19623
+f 13505 13503 13510
+f 19624 13522 13510
+f 13512 13505 13510
+f 13511 13510 13528
+f 13510 13522 13528
+f 13512 13511 13678
+f 13679 13678 13511
+f 13505 13678 13508
+f 13678 13505 13512
+f 13677 13508 13678
+f 13513 13493 13462
+f 13493 13464 13462
+f 13486 13488 13515
+f 13513 13515 13493
+f 13515 13513 13514
+f 13515 13488 13518
+f 13517 13521 19622
+f 13516 13521 13517
+f 13520 19622 13521
+f 13520 13519 19625
+f 19622 13520 13523
+f 13522 13520 19625
+f 19625 13519 19619
+f 13529 13522 19625
+f 13529 13528 13522
+f 19625 13526 13529
+f 13525 13529 13526
+f 19620 19625 19619
+f 19625 19620 13526
+f 13526 19620 13527
+f 13525 13703 13511
+f 13511 13529 13525
+f 13703 13679 13511
+f 13412 13337 13324
+f 13531 13337 13412
+f 13410 13531 13412
+f 13533 13531 13410
+f 13534 13533 13548
+f 19614 13535 13411
+f 19614 13537 13535
+f 19614 13425 13426
+f 13426 13537 19614
+f 13537 13530 13535
+f 13537 13538 13530
+f 13538 13541 13533
+f 13427 13430 13543
+f 13536 13427 13543
+f 13543 13544 13536
+f 13457 13542 13430
+f 13545 13540 13539
+f 13542 13545 13544
+f 13545 13547 13540
+f 13550 13358 13532
+f 13534 13550 13532
+f 13361 13358 13550
+f 13541 13553 13549
+f 13554 13540 13547
+f 13555 13578 13556
+f 13557 13556 13564
+f 13364 13361 13550
+f 13366 13365 13364
+f 13366 13364 13559
+f 13558 13559 13364
+f 13560 13559 13561
+f 13558 13562 13559
+f 13563 13553 13557
+f 13566 13558 13563
+f 13557 13565 13563
+f 13563 13565 13567
+f 13565 13617 13567
+f 13567 13562 13566
+f 13561 13574 13570
+f 13570 13569 13560
+f 13568 13574 13562
+f 13574 13568 13824
+f 13570 13574 13573
+f 13820 13573 13574
+f 13820 13574 13824
+f 13568 13567 13626
+f 13626 13824 13568
+f 19626 13551 13458
+f 13551 19626 13552
+f 13577 13552 19626
+f 13458 13495 19626
+f 13495 13497 19626
+f 19626 13497 13575
+f 13580 13575 13576
+f 13575 13577 19626
+f 13579 13577 13575
+f 13580 13579 13575
+f 13491 13576 13498
+f 13490 13576 13491
+f 13490 13589 13580
+f 13580 13576 13490
+f 13599 13580 13589
+f 13599 13581 13580
+f 13592 13599 13589
+f 13555 13546 13552
+f 13577 13579 13582
+f 13579 13581 13582
+f 13581 13584 13582
+f 13607 13581 13599
+f 13607 13584 13581
+f 13590 13506 13507
+f 13591 13593 13588
+f 13589 13588 13592
+f 13598 13592 13593
+f 13591 13604 13593
+f 13593 13604 13598
+f 13594 13590 13509
+f 13509 13595 13594
+f 13509 13600 13595
+f 13604 13591 13594
+f 13595 13597 13604
+f 13604 13594 13595
+f 13597 13602 13604
+f 13600 13509 13508
+f 13595 13601 13596
+f 13604 13603 13598
+f 13597 13605 13602
+f 13596 13765 13605
+f 13603 13602 13605
+f 13607 13598 13584
+f 13584 13608 13586
+f 13608 13584 13598
+f 13585 13586 13619
+f 13619 13586 13608
+f 13606 13605 13765
+f 13608 13603 13606
+f 13610 13608 13606
+f 13765 13611 13606
+f 13617 13614 13616
+f 13615 13622 13613
+f 13618 13587 13585
+f 13587 13621 13615
+f 13621 13622 13615
+f 13616 13613 13623
+f 13626 13567 13617
+f 13616 13628 13617
+f 13824 13626 13625
+f 13628 19627 13617
+f 13625 13617 19627
+f 13616 13623 13627
+f 19627 14486 13625
+f 13627 13623 13624
+f 19627 13628 13627
+f 13639 19627 13627
+f 13632 13637 13630
+f 13637 13638 13636
+f 13638 13632 13635
+f 13624 13636 13627
+f 13640 13627 13636
+f 13640 13636 13641
+f 13638 13635 13642
+f 2894 2893 13713
+f 13647 13644 2909
+f 13667 13650 13647
+f 13647 13646 13667
+f 13650 13667 13648
+f 13649 13655 13650
+f 14443 13660 13702
+f 13649 13651 13656
+f 13653 13654 13659
+f 13656 13653 13657
+f 13658 13660 14443
+f 13668 13661 13662
+f 13663 2909 2908
+f 13665 13667 13646
+f 13669 13663 13661
+f 13663 13669 13664
+f 13670 13664 13669
+f 13670 13676 13675
+f 13675 13665 13670
+f 13672 13673 13705
+f 13733 13705 13673
+f 13673 13674 13733
+f 13671 13651 13649
+f 13675 13674 13666
+f 13677 13600 13508
+f 19628 13680 13682
+f 13753 13681 13680
+f 13753 13680 13755
+f 13755 13680 19628
+f 13683 13760 19628
+f 13755 19628 13760
+f 13683 13685 13758
+f 13683 13758 13760
+f 13687 13686 13704
+f 13704 13707 13687
+f 13707 13689 13687
+f 13693 13689 13707
+f 13693 13707 13706
+f 13731 13693 13706
+f 13731 13694 13693
+f 13524 13697 13525
+f 13697 13524 13695
+f 13688 13654 13652
+f 13688 13684 13699
+f 13699 13654 13688
+f 13699 13684 13698
+f 13699 13697 13696
+f 13527 13702 13695
+f 13701 13695 13702
+f 13700 13659 13654
+f 13525 13697 13703
+f 13682 13703 13697
+f 13698 19628 13682
+f 19628 13698 13683
+f 13684 13683 13698
+f 13672 13686 13652
+f 13688 13652 13686
+f 13672 13705 13704
+f 13704 13705 13707
+f 13733 13706 13705
+f 19629 2910 2891
+f 19629 2891 2892
+f 2904 2910 13709
+f 2904 13709 2902
+f 13709 13708 13718
+f 19629 13708 2910
+f 13719 13708 19629
+f 2892 13643 13710
+f 19629 2892 13710
+f 13643 2894 13713
+f 13710 13643 13711
+f 13710 13719 19629
+f 13714 13719 13710
+f 13714 13715 13724
+f 13711 15768 13715
+f 13715 15768 13716
+f 13717 13716 13741
+f 13668 13718 13723
+f 13723 13669 13668
+f 13669 13723 13720
+f 13719 13724 13718
+f 13723 13718 13724
+f 13669 13720 13670
+f 13733 13674 19630
+f 13729 13733 19630
+f 13721 13724 13725
+f 13727 19630 13726
+f 13727 13726 13725
+f 13729 19630 13727
+f 19631 13727 13725
+f 13720 13722 13676
+f 13722 13726 13674
+f 13726 19630 13674
+f 13724 13719 13714
+f 13724 13715 13717
+f 19631 13725 13724
+f 19631 13724 13717
+f 19631 13743 13727
+f 19631 13717 13743
+f 13717 13741 13743
+f 13738 13694 13730
+f 13732 13733 13728
+f 13736 13731 13732
+f 13737 13730 13748
+f 13798 13738 13737
+f 13730 13731 13736
+f 13748 13730 13736
+f 13740 13736 13734
+f 13748 13736 13740
+f 13802 13737 13748
+f 13743 13735 13727
+f 13734 13735 13739
+f 13742 13739 13735
+f 13746 13739 13744
+f 13747 13740 13749
+f 13802 13748 13747
+f 13749 13740 13739
+f 13749 13739 13745
+f 13749 13751 13747
+f 13681 13752 13600
+f 13757 13752 13753
+f 13754 13752 13757
+f 13757 13753 13755
+f 13759 13756 13755
+f 13759 13755 13760
+f 13685 13762 13758
+f 19632 13765 13764
+f 13764 13601 13754
+f 13754 13772 13764
+f 19632 13764 13772
+f 13611 13765 19632
+f 19632 13766 13611
+f 13766 13609 13611
+f 13633 13766 13774
+f 13766 19632 13772
+f 13763 13777 13759
+f 13763 13778 13777
+f 13769 13685 13690
+f 13762 13685 13769
+f 13767 13769 13690
+f 13763 13761 13762
+f 13769 13763 13762
+f 13767 19633 13769
+f 13768 13769 19633
+f 13767 13692 13770
+f 13738 13797 13770
+f 19633 13767 13770
+f 19634 19633 13770
+f 19634 13770 13797
+f 13778 13763 13768
+f 13780 13778 13768
+f 19633 13780 13768
+f 13780 19633 19634
+f 13772 13774 13766
+f 13771 13757 13775
+f 13759 13775 13756
+f 13777 13775 13759
+f 13775 13776 13773
+f 13773 13771 13775
+f 13781 13780 13783
+f 13781 13785 13779
+f 13781 13783 13785
+f 19634 19635 13780
+f 13797 19635 19634
+f 13780 19635 13782
+f 13783 13782 13805
+f 13783 13805 13784
+f 13773 13787 13774
+f 13779 13788 13787
+f 13787 13776 13779
+f 13789 13786 13788
+f 13795 13793 13785
+f 13794 13784 13805
+f 13797 13798 13800
+f 13798 13799 13800
+f 13811 13800 13799
+f 13803 13811 13799
+f 13801 19635 13797
+f 13782 19635 13801
+f 13804 13800 13811
+f 13804 13811 13807
+f 13809 13811 13803
+f 13751 13810 13803
+f 13794 13805 13816
+f 13815 13819 13814
+f 14460 13815 14462
+f 13823 13824 13825
+f 14486 13825 13625
+f 14486 19627 13639
+f 13251 12974 12705
+f 13251 12992 12974
+f 12992 19636 12993
+f 13276 13826 12992
+f 13826 19636 12992
+f 19637 19636 13826
+f 12993 19636 19637
+f 13828 19637 13826
+f 19637 13828 13831
+f 19637 12997 12993
+f 12997 19637 12999
+f 13835 12999 19637
+f 12999 13835 13017
+f 19637 13831 13835
+f 13830 13835 13831
+f 13835 13830 13836
+f 13829 13831 13828
+f 13287 13832 13828
+f 13851 13836 13830
+f 19638 13836 13851
+f 13830 13833 13851
+f 13833 19639 13851
+f 13837 13836 19638
+f 13838 13015 13834
+f 19638 13851 13837
+f 13832 13839 13829
+f 13829 13839 13833
+f 13833 13839 13840
+f 13833 13840 19639
+f 19639 13840 13843
+f 13291 13290 13348
+f 13842 13840 13348
+f 13842 13841 13854
+f 13854 13843 13842
+f 13841 13895 13854
+f 13895 13841 13347
+f 13844 13895 13347
+f 13895 13844 13845
+f 13368 13846 13354
+f 19613 13906 13849
+f 13865 13838 13837
+f 19639 13852 13851
+f 13837 13851 13850
+f 13850 13865 13837
+f 13850 13867 13865
+f 19639 13843 13852
+f 13852 13843 13855
+f 13856 13854 13860
+f 13856 13858 13855
+f 13852 13855 13853
+f 13858 13853 13855
+f 13879 13858 13857
+f 13859 13857 13856
+f 13857 13859 13862
+f 13864 13863 13898
+f 13865 13139 13140
+f 13139 13866 13873
+f 13873 13866 13870
+f 13870 13866 13868
+f 13868 13867 13853
+f 13853 13878 13868
+f 13878 13871 13868
+f 13873 13145 13139
+f 13147 13145 13873
+f 13871 13886 13875
+f 13870 13869 13875
+f 13876 13874 13870
+f 13876 13870 13875
+f 13875 13989 13877
+f 13886 13989 13875
+f 13886 13887 13889
+f 13989 13886 13889
+f 13880 13871 13879
+f 13880 13879 13857
+f 13857 13862 13882
+f 13882 13880 13857
+f 13864 13898 13883
+f 13882 13881 13880
+f 13881 13882 13885
+f 13881 13886 13871
+f 13887 13881 13890
+f 13888 13887 13890
+f 13895 13860 13854
+f 13894 19640 13896
+f 13895 13845 13894
+f 13894 13845 13847
+f 13894 13847 19640
+f 19641 19640 13847
+f 13896 19640 13901
+f 13901 19640 19641
+f 13896 13863 13861
+f 13863 13896 13897
+f 13897 13896 13901
+f 13901 19641 13902
+f 13900 13897 13901
+f 13847 13846 19641
+f 13846 13849 13904
+f 13846 13904 19641
+f 13904 13902 19641
+f 13904 13905 13909
+f 13904 13909 13911
+f 13906 13907 13905
+f 13912 13903 13902
+f 13914 13911 13909
+f 13909 13910 13914
+f 13913 13914 13929
+f 13898 13899 13883
+f 13915 13884 13883
+f 13897 13900 13899
+f 13900 13903 13899
+f 13883 13899 13915
+f 13915 13916 13918
+f 13916 13899 13917
+f 13885 13884 13919
+f 13919 13884 13915
+f 13892 13893 13921
+f 13920 13921 13893
+f 13921 13920 14161
+f 19642 13920 13923
+f 14161 13920 19642
+f 14162 14161 19642
+f 13940 19642 13923
+f 13924 13940 13923
+f 19643 19642 13940
+f 13939 19643 13940
+f 14162 19642 14179
+f 14179 19642 19643
+f 19644 14179 19643
+f 14179 19644 13925
+f 19644 19643 13939
+f 19644 13939 13926
+f 19644 13926 13925
+f 13899 13912 13928
+f 13912 13913 13929
+f 13932 13928 13912
+f 13929 13932 13912
+f 13935 13932 13931
+f 13917 13928 13932
+f 13917 13932 13934
+f 13917 13934 13937
+f 13932 13936 13933
+f 13918 13917 13937
+f 13924 13918 13937
+f 13938 13924 13937
+f 13940 13924 13938
+f 13941 13940 13942
+f 13941 13942 13956
+f 13943 13956 13942
+f 13946 13926 13939
+f 13946 13939 13944
+f 13946 13949 13927
+f 13927 13949 13950
+f 13949 13946 13947
+f 14187 13950 13948
+f 13948 13973 14187
+f 19645 13944 13941
+f 13945 13944 19645
+f 19645 13941 13956
+f 13959 13945 19645
+f 13945 13952 13948
+f 13952 13973 13948
+f 13959 13953 13952
+f 13952 13945 13959
+f 13954 13933 14505
+f 13966 13955 13954
+f 14505 13966 13954
+f 19645 13956 13955
+f 13957 13959 19645
+f 13955 13965 19645
+f 13957 19645 13965
+f 13964 13957 13965
+f 13964 13958 13957
+f 13960 13963 13958
+f 13958 13963 13953
+f 13953 13959 13958
+f 13963 13962 13951
+f 13951 13953 13963
+f 13966 13968 13965
+f 13964 13965 13968
+f 13968 13971 13967
+f 13960 13970 13961
+f 13960 13964 13967
+f 13960 13967 13969
+f 13969 13971 13972
+f 13977 19646 19647
+f 13951 13977 13974
+f 13974 13952 13951
+f 19647 13975 13974
+f 13977 19647 13974
+f 19648 19647 19646
+f 19648 14222 13975
+f 13975 19647 19648
+f 19649 14222 19648
+f 19648 19650 19649
+f 14222 19649 14221
+f 19651 14221 19649
+f 13962 13978 13977
+f 13976 19646 13977
+f 13961 13980 13978
+f 13978 13962 13961
+f 19652 13976 13978
+f 19652 13978 13980
+f 13977 13951 13962
+f 19653 19648 19646
+f 19653 19646 13976
+f 19648 19653 19650
+f 13984 19650 19653
+f 19653 13976 19652
+f 19653 19652 13984
+f 19649 19650 19654
+f 19654 19651 19649
+f 19650 13984 13988
+f 13988 19654 19650
+f 14226 19654 13988
+f 14228 14226 13988
+f 13988 13987 14228
+f 13981 19652 13980
+f 13981 13980 13979
+f 13970 13982 13979
+f 13984 19652 13981
+f 13983 14545 13985
+f 13985 13981 13983
+f 13986 13985 14545
+f 13876 13169 13874
+f 13995 13169 13877
+f 13995 13174 13169
+f 13877 13990 13995
+f 13996 13995 13990
+f 13990 13993 13992
+f 14000 13992 13994
+f 13995 13176 13174
+f 13991 14000 14001
+f 14003 13991 14001
+f 14001 13994 14010
+f 14004 13999 14003
+f 14004 14002 14005
+f 14049 14004 14005
+f 13994 14007 14008
+f 13994 14008 14009
+f 14015 14018 14016
+f 14018 14020 14016
+f 14021 14011 14016
+f 14013 14022 19655
+f 19655 14025 14013
+f 14055 14025 19655
+f 14020 14022 14021
+f 14022 14019 19655
+f 19655 14019 14024
+f 14012 14010 14009
+f 14010 14002 14001
+f 14002 14010 14006
+f 14006 14012 19656
+f 14006 19656 14028
+f 14029 14028 14045
+f 14025 19656 14012
+f 19656 14025 14027
+f 14045 14028 19656
+f 14027 14045 19656
+f 14005 14028 14030
+f 14049 14005 14030
+f 14025 14055 14026
+f 14031 14034 13224
+f 13237 14034 14035
+f 14034 14031 14035
+f 14033 14035 14031
+f 13997 13999 14032
+f 13999 14004 14038
+f 14039 14033 14032
+f 14032 14037 14039
+f 14038 14039 14037
+f 14004 14049 14038
+f 14024 14055 19655
+f 14055 14024 14056
+f 14043 14056 14024
+f 14060 14056 14043
+f 14049 14030 14047
+f 14047 14030 14046
+f 14047 14046 14051
+f 14046 14050 14051
+f 14052 14053 14063
+f 14055 14056 14054
+f 14044 14026 14054
+f 14058 14050 14044
+f 14058 14054 14057
+f 14058 14057 14059
+f 14056 14060 14057
+f 14059 14057 14060
+f 14058 14059 14062
+f 14062 14059 14064
+f 14068 14065 14067
+f 14070 14035 14036
+f 14073 14048 14078
+f 14036 14041 14075
+f 14074 14075 14041
+f 14076 14075 14074
+f 14073 14078 14077
+f 14077 14076 14074
+f 14077 14074 14073
+f 14074 14040 14073
+f 14076 14077 14092
+f 14077 14079 14092
+f 14070 14071 14042
+f 14042 14071 14081
+f 14081 14071 14083
+f 13240 14080 14085
+f 14085 13241 13240
+f 14084 14085 14086
+f 14088 14087 14096
+f 14091 14090 14093
+f 14091 14087 14082
+f 14098 14099 14137
+f 14097 14095 14098
+f 14097 14098 19657
+f 14098 14137 19657
+f 19657 14137 15314
+f 14052 14101 14051
+f 14052 14063 14105
+f 14105 14110 14106
+f 14102 14092 14079
+f 14079 14078 14102
+f 14102 14104 14107
+f 14108 14109 14111
+f 14110 14109 14106
+f 14117 14111 14112
+f 14107 14104 14113
+f 14114 14115 14119
+f 14115 14111 14116
+f 14117 14116 14111
+f 14063 14110 14105
+f 14066 14110 14063
+f 14066 14112 14110
+f 14122 14117 14112
+f 14124 14117 14122
+f 14125 14122 14066
+f 14125 14066 14127
+f 14126 14066 14068
+f 14069 19658 14068
+f 14128 14068 19658
+f 14107 14094 14092
+f 14134 14099 14094
+f 14094 14107 14114
+f 14136 14135 14120
+f 14138 15314 14137
+f 14139 14136 14156
+f 14121 14142 14136
+f 14140 14123 14144
+f 14140 14144 14143
+f 14121 14118 14140
+f 14121 14140 14142
+f 14140 14143 14141
+f 14123 14132 14145
+f 14145 14144 14123
+f 14145 14132 14133
+f 14145 14148 14146
+f 14136 14142 14153
+f 14142 14141 14153
+f 14154 14152 14141
+f 14154 14151 14159
+f 14155 14153 14157
+f 14158 14154 14159
+f 14157 14158 14159
+f 14017 14015 13922
+f 14163 14018 14017
+f 13922 14168 14017
+f 14163 14017 14168
+f 14167 14165 14164
+f 13921 14162 14168
+f 14162 19659 14168
+f 14168 19659 14169
+f 14169 14175 14164
+f 14167 14164 14171
+f 14175 14174 14171
+f 14171 14164 14175
+f 14176 14170 14171
+f 14176 14171 14174
+f 19659 14162 14178
+f 14162 14179 14178
+f 14169 19659 19660
+f 19660 19659 14178
+f 14175 14169 19660
+f 14177 19660 14178
+f 19660 14177 14172
+f 14172 14175 19660
+f 14173 14184 14176
+f 14180 14177 14179
+f 14181 14172 14177
+f 14180 13927 14185
+f 14185 14182 14180
+f 14181 14182 14173
+f 14184 14173 14182
+f 13950 14188 14186
+f 13927 13950 14186
+f 14186 14185 13927
+f 13971 13968 14612
+f 14166 14170 14192
+f 14023 14166 14043
+f 14166 14193 14043
+f 14043 14193 14189
+f 14193 14190 14189
+f 14193 14192 14198
+f 14198 14190 14193
+f 14190 14198 14203
+f 14190 14203 14191
+f 19661 14170 14176
+f 19661 14192 14170
+f 19661 14195 14192
+f 14184 19661 14176
+f 19661 14184 14195
+f 14194 14195 14184
+f 14197 14196 14201
+f 14198 14197 14200
+f 14200 14203 14198
+f 14197 14201 14200
+f 14060 14189 14061
+f 14202 14189 14191
+f 14202 14203 14213
+f 14202 14213 14206
+f 14206 14213 14207
+f 14205 14206 14208
+f 14203 14200 14212
+f 14212 14200 14215
+f 14207 14216 14209
+f 14214 14215 14235
+f 14241 14217 14214
+f 14241 14214 14240
+f 19662 14194 14186
+f 19662 14186 14188
+f 14218 19662 14188
+f 14218 14188 14187
+f 14194 19662 14196
+f 19662 14218 14196
+f 14218 13973 13975
+f 14218 13975 14222
+f 14218 14222 14219
+f 14221 19651 14224
+f 14220 14199 14201
+f 14223 14199 14220
+f 14226 19651 19654
+f 13986 14545 14655
+f 14224 19651 14226
+f 13987 14230 14228
+f 14231 13986 14655
+f 14245 14225 14227
+f 14245 14227 14229
+f 14229 14232 14234
+f 14234 14245 14229
+f 14215 14199 14235
+f 14235 14199 14236
+f 14237 14240 14214
+f 14236 14238 14239
+f 14242 14239 14243
+f 14243 14244 14362
+f 14245 14234 14246
+f 14247 14246 14248
+f 14239 14238 14244
+f 14252 14362 14244
+f 14247 14244 14238
+f 14250 14247 14251
+f 19658 14069 14210
+f 14253 14128 19658
+f 14128 14253 14130
+f 14253 14255 14130
+f 19658 14210 14253
+f 14131 14255 14256
+f 14256 14133 14131
+f 14130 14255 14131
+f 14253 14210 14259
+f 14259 14254 14253
+f 14257 14210 14211
+f 14210 14257 14258
+f 14258 14261 14259
+f 14258 14266 14261
+f 14259 14260 14254
+f 14261 14266 14263
+f 14261 14263 14260
+f 14262 14260 14263
+f 14257 14209 14216
+f 14267 14257 14216
+f 19663 14267 14216
+f 14216 14217 19663
+f 14217 14270 19663
+f 19663 14270 14273
+f 14273 14265 19663
+f 14265 14267 19663
+f 14268 14265 14273
+f 14241 14270 14217
+f 14275 14274 14280
+f 14263 14266 14268
+f 14268 14273 14277
+f 14281 14277 14273
+f 14281 14273 14275
+f 14278 14277 14281
+f 14285 14133 14256
+f 14262 14288 14284
+f 14288 14293 14287
+f 14290 14289 14286
+f 14286 14287 19664
+f 14286 19664 14290
+f 14290 19664 14298
+f 14151 14150 14289
+f 14151 14289 14291
+f 14290 14298 14292
+f 14264 14306 14288
+f 14288 14262 14264
+f 14306 14299 14293
+f 14293 14288 14306
+f 14294 19664 14287
+f 14298 19664 14294
+f 14298 14294 14295
+f 14299 14296 14294
+f 14294 14293 14299
+f 14295 14301 14303
+f 14303 14336 14304
+f 14306 14305 14299
+f 14300 14331 14301
+f 14309 14308 14278
+f 14283 14309 14281
+f 14331 14311 14303
+f 14303 14301 14331
+f 14310 14336 14303
+f 14297 14302 14313
+f 14319 14313 14315
+f 14319 14315 14322
+f 14335 14315 14304
+f 14304 14336 14335
+f 14338 14322 14315
+f 14315 14335 14338
+f 14314 14313 14316
+f 14316 14313 14319
+f 14319 14322 14318
+f 14316 14318 14320
+f 14322 14338 14321
+f 14321 14320 14318
+f 14307 14308 14325
+f 14305 14307 14325
+f 14331 14300 14323
+f 14309 14283 14381
+f 14381 14324 14309
+f 14324 14381 14327
+f 14323 14305 14326
+f 14323 14329 14339
+f 14330 14329 14326
+f 14339 14329 14330
+f 14311 14333 14310
+f 14311 14331 14332
+f 14335 14333 14337
+f 14337 14333 14334
+f 14337 14334 14345
+f 14332 14339 14341
+f 14341 14342 14334
+f 14334 14332 14341
+f 14345 14334 14342
+f 14321 14337 14344
+f 14321 14344 14346
+f 14346 14343 14351
+f 14343 14345 14342
+f 14348 14343 14342
+f 14348 14342 14347
+f 14352 14350 14348
+f 14353 14242 14354
+f 14353 14280 14274
+f 14353 14356 14280
+f 14280 14356 19665
+f 14353 14354 14356
+f 19665 14356 14355
+f 14354 14243 14359
+f 14362 14359 14243
+f 14354 14359 14358
+f 14357 14356 14354
+f 14282 14280 19665
+f 14361 14282 19665
+f 14355 14361 19665
+f 14363 14365 14364
+f 14283 14361 14367
+f 14355 14357 14369
+f 14366 14361 14355
+f 14355 14369 14366
+f 14371 14366 14369
+f 14372 14252 14250
+f 14374 14371 14369
+f 14376 14360 14364
+f 14376 14374 14360
+f 14374 14376 14378
+f 14377 14379 14378
+f 14377 14378 14376
+f 14375 14378 14403
+f 14378 14380 14403
+f 14403 14380 14405
+f 14383 14367 14368
+f 14328 14327 14382
+f 14330 14328 14384
+f 14368 14370 14385
+f 14391 14385 14370
+f 14391 14370 14393
+f 14339 14330 14386
+f 14385 14389 14386
+f 14386 14384 14385
+f 14387 14340 14339
+f 19666 14347 14340
+f 19666 14340 14397
+f 19666 14397 14399
+f 14390 14398 14387
+f 14398 14390 15431
+f 14349 14347 19666
+f 14352 14349 19666
+f 14352 19666 14399
+f 14370 14375 14400
+f 14375 14401 14400
+f 14370 14400 14393
+f 14403 14401 14375
+f 14405 14411 14406
+f 14402 14401 14404
+f 14402 14404 14414
+f 14406 14414 14404
+f 14407 14394 14400
+f 14407 14400 14402
+f 14409 14407 14402
+f 14402 14414 14409
+f 14415 14414 14406
+f 14406 14412 14415
+f 14413 14409 14414
+f 14413 14415 14417
+f 14409 14413 14416
+f 13472 14420 13473
+f 19615 13473 14420
+f 14425 19617 14420
+f 14425 14420 14421
+f 2742 14419 2743
+f 14426 14428 14425
+f 14422 14424 14426
+f 14426 14418 14422
+f 14421 14418 14426
+f 19617 19615 14420
+f 19617 14425 13483
+f 14429 14425 14428
+f 14431 14430 14428
+f 13640 13641 13639
+f 14435 14433 14432
+f 14423 14438 14424
+f 14437 14427 14424
+f 14438 14423 14436
+f 13647 13650 14436
+f 14437 14442 14431
+f 14445 14442 14437
+f 14438 14440 14437
+f 14445 14437 14440
+f 14439 14446 14440
+f 14431 14442 19618
+f 14441 19618 14442
+f 14442 14445 14444
+f 14442 14444 13702
+f 13655 13657 14446
+f 14451 14434 14447
+f 14451 14449 14455
+f 14448 13792 14452
+f 14448 14452 14453
+f 13795 14453 14452
+f 14456 14453 13795
+f 14453 14454 14449
+f 14457 13795 13796
+f 13796 13818 14457
+f 14457 14465 14456
+f 14465 14454 14456
+f 14469 14465 14457
+f 14459 14458 13819
+f 13815 14460 13819
+f 14463 14459 14460
+f 14464 14459 14463
+f 14457 14458 14469
+f 14459 14469 14458
+f 14469 14459 14575
+f 14469 14575 14467
+f 14575 14459 14464
+f 14574 14575 14464
+f 14466 14465 14567
+f 14469 14567 14465
+f 14567 14469 14468
+f 13572 13907 13571
+f 13908 13907 13572
+f 13910 14470 14475
+f 14474 13822 13821
+f 13821 13823 14474
+f 13822 14473 14472
+f 14475 13914 13910
+f 14475 13930 13914
+f 14476 14498 14478
+f 14478 14498 14477
+f 14498 14476 14481
+f 14483 14474 13823
+f 13823 13825 14483
+f 19667 14483 13825
+f 14483 19667 14484
+f 19667 13825 14486
+f 14482 14472 14474
+f 14484 19667 14491
+f 14491 14492 14484
+f 14486 14485 14489
+f 14489 19667 14486
+f 14491 19667 14489
+f 19668 14433 14435
+f 14433 19668 14485
+f 14489 14485 19668
+f 14492 14482 14484
+f 14480 14482 14492
+f 14487 14480 14492
+f 14492 14493 14494
+f 14489 19668 14490
+f 14490 19668 14557
+f 14493 14495 14494
+f 14493 14490 14557
+f 14498 13931 14477
+f 14497 13931 14498
+f 13936 13935 14497
+f 13936 14501 14503
+f 14500 19669 14499
+f 14497 14499 14501
+f 19669 14501 14499
+f 19670 14500 14481
+f 19669 14500 19670
+f 13933 14502 14504
+f 14503 14514 14506
+f 14505 14504 14508
+f 14505 14508 14507
+f 14511 14507 14508
+f 14512 14511 14508
+f 14509 13971 14613
+f 14613 14617 14509
+f 14617 14522 14521
+f 14521 14509 14617
+f 14501 19669 14513
+f 14514 14503 14501
+f 19670 14528 19669
+f 14528 14513 19669
+f 14513 14528 14531
+f 14517 14506 14514
+f 14520 14512 14517
+f 14616 14510 14520
+f 14520 19671 14616
+f 14519 19672 14520
+f 14517 14519 14520
+f 14625 19671 14520
+f 14625 14520 19672
+f 14625 14616 19671
+f 14519 14515 14518
+f 14518 14516 19673
+f 14518 19672 14519
+f 14619 14625 19672
+f 14620 14619 19672
+f 19672 14518 14620
+f 19673 19674 14518
+f 19675 14620 14518
+f 14518 19674 19675
+f 14494 14496 14487
+f 14488 14487 14496
+f 14488 14496 14584
+f 14525 19670 14481
+f 14528 19670 14525
+f 14529 14527 14526
+f 14584 14529 14488
+f 14530 14516 14513
+f 14528 14527 14531
+f 14538 14531 14527
+f 14533 14530 14531
+f 14531 14538 14533
+f 19673 14516 14530
+f 14535 19673 14530
+f 14534 14530 14532
+f 19673 14535 19676
+f 19676 19674 19673
+f 14626 19675 19674
+f 19674 19676 14626
+f 14628 14626 19676
+f 14534 14537 19676
+f 19676 14535 14534
+f 14628 19676 14537
+f 14633 14628 14537
+f 14633 14537 14635
+f 14529 14584 14538
+f 14584 14591 14538
+f 14538 14593 14533
+f 14591 14593 14538
+f 14593 19677 14532
+f 14593 14532 14533
+f 19677 14536 14532
+f 19677 14540 14536
+f 14635 14537 14539
+f 14551 14543 14542
+f 14543 14551 14546
+f 14549 14551 14542
+f 14550 14551 14549
+f 14547 14546 14550
+f 14553 14550 14549
+f 14553 14549 14548
+f 14553 14555 14552
+f 14523 19678 14548
+f 14548 19678 14554
+f 19668 14435 14450
+f 14450 14558 19668
+f 14558 14557 19668
+f 14559 14450 14451
+f 14451 14455 14559
+f 14454 14466 14561
+f 14561 14556 14559
+f 14573 14564 14562
+f 14560 14556 14563
+f 14563 14566 14560
+f 14563 14561 14564
+f 14468 14568 14567
+f 14573 14562 14568
+f 14569 14573 14568
+f 14576 14578 19679
+f 14576 19679 14579
+f 14583 14560 14566
+f 14583 14566 14585
+f 14573 14565 14564
+f 14582 14590 14584
+f 14584 14590 14591
+f 14583 14590 14582
+f 19677 14593 14907
+f 14907 14593 14594
+f 14540 19677 14907
+f 14596 14592 14595
+f 14596 14916 14594
+f 14565 14573 14598
+f 14572 14598 14573
+f 14565 14598 14588
+f 14598 14572 14601
+f 14601 14599 14598
+f 14601 14572 14581
+f 14601 14581 14602
+f 19680 14602 14581
+f 14581 16141 19680
+f 14603 14602 16141
+f 14606 14595 14599
+f 14599 14600 14606
+f 14600 14603 14605
+f 14605 14606 14600
+f 14610 14609 14605
+f 14607 14605 14609
+f 14609 14927 14607
+f 14930 14609 14608
+f 14507 13968 13966
+f 14612 13968 14507
+f 14612 14613 13971
+f 14611 14507 14511
+f 14614 14617 14613
+f 14510 14611 14511
+f 14625 14624 14523
+f 14616 14625 14523
+f 14620 19675 14618
+f 14619 14618 14621
+f 14623 14619 14621
+f 14622 14676 14623
+f 14626 14618 19675
+f 14628 14627 14626
+f 14627 14621 14618
+f 14627 14622 14621
+f 14676 14622 14630
+f 14676 14630 14632
+f 14629 14630 14627
+f 14633 14629 14628
+f 14631 14629 14634
+f 14635 14539 14643
+f 19681 14643 14539
+f 19681 14645 14643
+f 14636 14643 14644
+f 19682 19681 14539
+f 14539 14541 19682
+f 14541 19681 19682
+f 19681 14541 19683
+f 14540 19683 14541
+f 19681 19683 14645
+f 14639 14636 14644
+f 14647 14650 14642
+f 14646 14647 14644
+f 14651 14646 14645
+f 14651 14645 14911
+f 14651 14912 14652
+f 14648 14646 14652
+f 14654 14658 14655
+f 14656 14668 14658
+f 14656 14658 14654
+f 14657 14668 14656
+f 14555 14657 14552
+f 14657 14555 14660
+f 14659 14668 14657
+f 14658 14668 14663
+f 14666 14233 14665
+f 14671 14667 14665
+f 14523 14624 14675
+f 19678 14523 14675
+f 14554 14686 14555
+f 14554 19678 14680
+f 14684 14683 14686
+f 14686 14554 14680
+f 14686 14680 14684
+f 14678 19678 14675
+f 14678 14675 14674
+f 14680 19678 14678
+f 14679 14684 14680
+f 14684 14679 14681
+f 14678 19684 14679
+f 14681 14679 19684
+f 14681 19684 14734
+f 14682 14681 14734
+f 14682 14734 14694
+f 14660 14555 14686
+f 14660 14686 14685
+f 14661 14685 14687
+f 14672 14688 14690
+f 14689 14690 14688
+f 14689 14692 14693
+f 14695 14692 14682
+f 14234 14233 14696
+f 14696 14233 14666
+f 14667 14696 14666
+f 14696 14667 14697
+f 14234 14696 14249
+f 14701 14248 14249
+f 14698 14697 14702
+f 14698 14702 14706
+f 14700 14698 14706
+f 14251 14248 14717
+f 14717 14248 14701
+f 19685 14701 14700
+f 14700 14706 14716
+f 14703 14673 14672
+f 14703 14704 14673
+f 14706 14702 14704
+f 14703 14691 14708
+f 14705 14706 14704
+f 14707 14705 14714
+f 14710 14711 14693
+f 14708 14691 14709
+f 14708 14709 14712
+f 14705 14708 14712
+f 14705 14712 14713
+f 14715 14713 14712
+f 14714 14713 14722
+f 14713 14715 14781
+f 14781 14725 14713
+f 14725 14722 14713
+f 14250 14717 14785
+f 14719 14785 14717
+f 14718 14701 19685
+f 14719 14718 14720
+f 19685 14700 14721
+f 19685 14721 14718
+f 14707 14714 14723
+f 14803 14805 14721
+f 14721 14700 14716
+f 14803 14721 14716
+f 14716 14707 14803
+f 14803 14707 14723
+f 14803 14723 14727
+f 14723 14722 14724
+f 14730 14677 14676
+f 19686 14678 14677
+f 19686 14677 14730
+f 14730 14732 19686
+f 14736 19684 14678
+f 14736 14678 19686
+f 14734 19684 14736
+f 14734 14736 14735
+f 14736 19686 14732
+f 14730 14632 14637
+f 14734 14735 14733
+f 14732 14737 14736
+f 14741 14733 14735
+f 14735 14737 14741
+f 14638 14739 14731
+f 14739 14732 14731
+f 14739 14638 14640
+f 14640 14642 14750
+f 14640 14750 14739
+f 14740 14739 14750
+f 14739 14742 14737
+f 14737 14732 14739
+f 14742 14741 14737
+f 14738 14742 14739
+f 14738 14752 14742
+f 14752 14748 14743
+f 14743 14742 14752
+f 14744 14695 14694
+f 14746 14744 14733
+f 14733 14741 14746
+f 14745 14746 14741
+f 14749 14755 14751
+f 14751 14753 14752
+f 14753 14751 14755
+f 14748 14757 14756
+f 14757 14753 14754
+f 14710 14758 14711
+f 14746 14760 14758
+f 14744 14746 14758
+f 14758 14710 14744
+f 14746 14747 14760
+f 14760 14747 14761
+f 14759 14760 14762
+f 14762 14761 14764
+f 14781 14715 14759
+f 14763 14782 14781
+f 14781 14759 14763
+f 14763 14845 14782
+f 14846 14763 14764
+f 14767 14766 14941
+f 14761 14747 14756
+f 14756 14769 14761
+f 14764 14761 14776
+f 14754 14772 14757
+f 14778 14771 14775
+f 14775 14770 14774
+f 14771 14778 14776
+f 14777 14764 14776
+f 14846 14764 14777
+f 14846 14777 14865
+f 14779 14865 14777
+f 14779 14775 14780
+f 14784 14728 14782
+f 14786 14785 14719
+f 14787 14373 14372
+f 14372 14785 14787
+f 14786 14787 14785
+f 14787 14786 14790
+f 14786 14720 19687
+f 14720 14721 14805
+f 19687 14720 14805
+f 14798 14790 14786
+f 14786 19687 14798
+f 14799 14798 19687
+f 19687 14805 14799
+f 14788 14377 14373
+f 14788 14379 14377
+f 14791 14795 14380
+f 14405 14380 14795
+f 14794 14405 14795
+f 14796 14795 14791
+f 14796 14791 14792
+f 14789 14790 14798
+f 14789 14798 14797
+f 19688 14799 14805
+f 14805 14804 19688
+f 14807 19688 14804
+f 14809 14806 14727
+f 14727 14726 14809
+f 14726 14729 14808
+f 14815 14807 14809
+f 14815 14809 14808
+f 14815 14808 14813
+f 14799 19688 19689
+f 14799 19689 14800
+f 14807 19690 19689
+f 14807 19689 19688
+f 14800 19689 19691
+f 19691 19689 19690
+f 19691 19690 14811
+f 19691 14802 14800
+f 14802 19691 14810
+f 14810 19691 14811
+f 14815 14814 19690
+f 14815 19690 14807
+f 14814 14811 19690
+f 14838 14812 14811
+f 14811 14814 14838
+f 14859 14838 14814
+f 14814 14816 14859
+f 14794 14411 14405
+f 14818 14824 14817
+f 14820 14824 14818
+f 14827 14824 14820
+f 14821 14794 14817
+f 14817 14823 14821
+f 14822 14821 14823
+f 14822 14823 14826
+f 14824 14823 14817
+f 15471 14417 14822
+f 14828 15471 14822
+f 14822 14826 14828
+f 15471 14828 14832
+f 14829 14828 14826
+f 14826 14825 14829
+f 14829 14825 14827
+f 14832 14830 15475
+f 14833 15475 14830
+f 14810 14835 14819
+f 14810 14819 14802
+f 14835 14820 14819
+f 14820 14835 14837
+f 14835 14834 14836
+f 14834 14838 14882
+f 14838 14859 14882
+f 14882 14839 14834
+f 14840 14837 14836
+f 14841 14836 14839
+f 14839 14882 14842
+f 14840 14833 14831
+f 14831 14827 14840
+f 14808 14729 14783
+f 14808 14783 14850
+f 14783 14784 14850
+f 14808 14850 14813
+f 14850 14784 14853
+f 14852 14855 14853
+f 14852 14853 14784
+f 14864 14855 14852
+f 14851 14850 14853
+f 14854 14856 14862
+f 14861 14860 14858
+f 14865 14844 14846
+f 14869 14856 14864
+f 14866 14864 14844
+f 14865 14779 14866
+f 14866 14779 14848
+f 14848 14867 14866
+f 14849 14868 14848
+f 14864 14866 14870
+f 14871 14862 14856
+f 14863 14875 14861
+f 14866 14867 14870
+f 14867 14873 14870
+f 14869 14870 14873
+f 14869 14873 14874
+f 14871 14874 14891
+f 14891 14874 14893
+f 14873 14893 14874
+f 15015 14893 14873
+f 14875 14889 14861
+f 14877 14872 14876
+f 14876 14871 14891
+f 14878 14882 14859
+f 14878 14857 14860
+f 14878 14860 14880
+f 14878 14880 14879
+f 14881 14880 14860
+f 14881 14860 14861
+f 14861 14889 14881
+f 14842 14878 19692
+f 19692 14878 14879
+f 19692 14879 14884
+f 14843 14842 19692
+f 14843 19692 15490
+f 19692 14884 15490
+f 14879 14881 14884
+f 14881 14889 14887
+f 14883 14881 14887
+f 14883 14887 14886
+f 14890 14887 14875
+f 14887 14890 14895
+f 14887 14895 14885
+f 14890 14877 14895
+f 14903 14901 14895
+f 14895 14897 14903
+f 14903 14897 14898
+f 14903 14898 14906
+f 14902 14901 14903
+f 14903 14906 14904
+f 14910 19683 14540
+f 14540 14907 14910
+f 14645 19683 14910
+f 14911 14645 14910
+f 14910 14907 14908
+f 14910 14913 14911
+f 14910 14909 14913
+f 14918 14916 14596
+f 14918 14596 14597
+f 14916 14918 14917
+f 14915 14909 14919
+f 14940 14921 14912
+f 14912 14922 14940
+f 14914 14915 14922
+f 14923 14915 14919
+f 14924 14919 14933
+f 14597 14926 14918
+f 14597 14607 14926
+f 14926 14607 14927
+f 14932 14929 14930
+f 14931 14928 14927
+f 14927 14929 14931
+f 14935 14928 19693
+f 19693 14928 14931
+f 19693 14931 14932
+f 19693 14932 16204
+f 14933 14919 14920
+f 14934 14935 14978
+f 14981 14978 14935
+f 16210 14935 19693
+f 14935 16210 14981
+f 14653 14939 14766
+f 14766 14939 14941
+f 14939 14653 14921
+f 14941 14937 14767
+f 14768 14951 14754
+f 14767 14937 14936
+f 14951 14768 14936
+f 14951 14936 14938
+f 14938 14954 14951
+f 14944 14943 14945
+f 14945 14947 14944
+f 14954 14938 14942
+f 14948 14950 14954
+f 14954 14942 14948
+f 14952 14772 14951
+f 14774 14773 14957
+f 14957 14773 14959
+f 14951 14954 14952
+f 14952 14955 14773
+f 14959 14773 14955
+f 14780 14956 14847
+f 14953 14954 14950
+f 14956 14960 14964
+f 14960 14962 14963
+f 14945 14922 14923
+f 14958 14955 14969
+f 14970 14958 14969
+f 14998 14968 14966
+f 14970 14968 14998
+f 14961 14958 14970
+f 14962 14961 14971
+f 14962 14971 14974
+f 14971 14970 14974
+f 14972 14962 14974
+f 14972 14974 14973
+f 14997 14975 14974
+f 14974 14970 14997
+f 14933 14934 19694
+f 14924 14933 19694
+f 19694 14925 14924
+f 14967 14925 19695
+f 19695 14925 19694
+f 14934 14978 14977
+f 19694 14934 14977
+f 14977 19695 19694
+f 14978 14981 14980
+f 14979 14978 14980
+f 14983 14956 19696
+f 14956 14964 19696
+f 14984 14983 19696
+f 19696 14964 14986
+f 19696 15012 14984
+f 14986 15012 19696
+f 14945 14965 14988
+f 14988 14947 14945
+f 14965 14989 14988
+f 14990 14947 14988
+f 14949 14947 14990
+f 14949 14990 14966
+f 14988 14987 14990
+f 14987 14994 14991
+f 14991 14990 14987
+f 14992 14993 14989
+f 14993 15086 14987
+f 14992 15085 14993
+f 15086 14993 15085
+f 14987 15086 14995
+f 14966 14991 14998
+f 14996 14963 14972
+f 14999 14998 14991
+f 14999 15005 14997
+f 14994 15007 14999
+f 14999 15007 15005
+f 15007 15006 15005
+f 14996 14973 14976
+f 15001 14997 15005
+f 15001 15002 15004
+f 15007 14994 14995
+f 14995 15008 15007
+f 15013 14873 14868
+f 15013 14868 15010
+f 15014 15013 15010
+f 15015 14873 15013
+f 15011 15016 15018
+f 15018 15016 15017
+f 15018 15017 15025
+f 14963 14996 15020
+f 15000 15021 14996
+f 15017 15009 15019
+f 15028 15024 15020
+f 15020 15021 15028
+f 15028 15026 15024
+f 15027 15021 15023
+f 15022 15027 15023
+f 15030 15027 15029
+f 15039 15014 15036
+f 15043 15045 14896
+f 14896 15032 15043
+f 15033 15043 15032
+f 14898 14896 15045
+f 15043 15033 15040
+f 15044 15041 15066
+f 15056 15055 15054
+f 15035 15025 15026
+f 15066 15041 15061
+f 15064 15060 15062
+f 15064 15062 15063
+f 15059 15070 15038
+f 15060 15070 15059
+f 15061 15038 15070
+f 15070 15067 15061
+f 15067 15072 15066
+f 15069 15067 15070
+f 15070 15060 15068
+f 15072 15067 15069
+f 15068 15060 15064
+f 15064 15065 15073
+f 15073 15065 15131
+f 15073 19697 15071
+f 15131 15137 19697
+f 15073 15131 19697
+f 15076 15052 15053
+f 15053 15074 15076
+f 15076 15074 15077
+f 15082 14992 14967
+f 14967 19695 15082
+f 15082 19695 14977
+f 15081 15083 15080
+f 15086 15087 14995
+f 15082 15081 19698
+f 19698 15084 15082
+f 15089 19698 15081
+f 15088 15084 19698
+f 15088 19698 15091
+f 15088 15091 15108
+f 15091 19698 15089
+f 15092 15001 15006
+f 15093 15003 15002
+f 15087 15096 15008
+f 15008 14995 15087
+f 15096 15006 15008
+f 15096 15087 15094
+f 15094 15087 15088
+f 15092 15006 15096
+f 15092 15098 15099
+f 15100 15106 15099
+f 15108 15094 15088
+f 15097 15094 15108
+f 15081 14979 15102
+f 15089 15102 15115
+f 15103 15115 15102
+f 15101 16239 15103
+f 15091 15107 15108
+f 15090 15107 15091
+f 15109 15097 15107
+f 15111 15107 15090
+f 15109 15114 15105
+f 15105 15104 15109
+f 15114 15109 15110
+f 15116 15117 15115
+f 19699 15116 15103
+f 19699 19700 15116
+f 15093 15022 15003
+f 15093 15099 15119
+f 15029 15022 15119
+f 15029 15119 15120
+f 15099 19701 15119
+f 15120 15119 19701
+f 15031 15029 15120
+f 19701 15099 15106
+f 15122 15120 19701
+f 15122 19701 15106
+f 15063 15031 15121
+f 15124 15123 15126
+f 15063 15124 15125
+f 15123 15106 15114
+f 15106 15105 15114
+f 15129 15131 15065
+f 15065 15125 15129
+f 15132 15137 15131
+f 15129 15130 15136
+f 15136 15132 15129
+f 15113 15135 15133
+f 15134 15128 15133
+f 15130 15127 15134
+f 15135 15134 15133
+f 15135 15139 15136
+f 15130 15134 15135
+f 15132 15136 15139
+f 15051 15050 15692
+f 15692 15050 15055
+f 5554 2206 19583
+f 5554 19583 19702
+f 15143 19702 19583
+f 19583 19584 15143
+f 15144 15143 19584
+f 19584 13083 15144
+f 15156 5556 5554
+f 5554 19702 15142
+f 5554 15142 15156
+f 15143 15142 19702
+f 15156 15142 15141
+f 15147 15144 13083
+f 13083 13113 15147
+f 15144 15147 15146
+f 13114 15147 13113
+f 15148 15147 13114
+f 13114 13116 15148
+f 15145 15148 13116
+f 15151 15146 15148
+f 15148 15153 15151
+f 15145 15153 15148
+f 15157 15140 15144
+f 15144 15146 15150
+f 15144 15150 15157
+f 15151 15150 15146
+f 15149 15157 15150
+f 13115 13137 15154
+f 15141 15140 15155
+f 15149 15158 15155
+f 15155 15157 15149
+f 15158 15149 15300
+f 15158 15300 19703
+f 15159 13189 13191
+f 15169 15160 13191
+f 13191 13207 15169
+f 15160 15169 15168
+f 15152 15161 15197
+f 15160 15161 15159
+f 15197 15161 15198
+f 15175 15198 15161
+f 15175 15161 15160
+f 15160 15168 15175
+f 15162 15169 13207
+f 15163 13209 15164
+f 15170 15163 15164
+f 15175 15168 15167
+f 15167 15176 15174
+f 15175 15174 15181
+f 15174 15176 15178
+f 15176 15171 15177
+f 15181 15174 15178
+f 15181 15178 15182
+f 15183 15184 15204
+f 15177 15180 15222
+f 15222 15184 15182
+f 15222 15182 15177
+f 13212 13232 15165
+f 15165 13233 15185
+f 13235 15185 13233
+f 15186 15185 13235
+f 15192 15191 15190
+f 15190 15185 15186
+f 15191 15179 15173
+f 15179 15191 15194
+f 15196 15180 15179
+f 15199 15149 15197
+f 15197 15198 15199
+f 15203 15204 15257
+f 19704 15202 15201
+f 15201 15203 19704
+f 15264 19704 15203
+f 15203 15257 15264
+f 15199 15202 15205
+f 15205 15209 15206
+f 19704 19705 15202
+f 15264 15271 19705
+f 15264 19705 19704
+f 15205 15202 19705
+f 15205 19705 15207
+f 15207 19705 15271
+f 15214 15207 15271
+f 15214 15208 15207
+f 15206 15209 15211
+f 15214 15297 15213
+f 15217 15213 15297
+f 15297 15299 15217
+f 15213 15210 15208
+f 15217 15216 15210
+f 15219 15215 15216
+f 15216 15217 15218
+f 15217 15299 15218
+f 15204 15184 15221
+f 15239 15220 15222
+f 15222 15180 15239
+f 15239 15223 15220
+f 15223 15239 15224
+f 15230 15193 15186
+f 15186 15226 15230
+f 13239 13241 19706
+f 15188 13239 19706
+f 15188 19706 15227
+f 19706 15229 15227
+f 15229 13241 14084
+f 13241 15229 19706
+f 15229 14084 15301
+f 15229 15301 15232
+f 15234 15232 15301
+f 15251 15233 15234
+f 15235 15193 15237
+f 15180 15196 15238
+f 15238 15235 15242
+f 15238 15240 15239
+f 15240 15238 15242
+f 15240 15242 15241
+f 15242 15235 15237
+f 15242 15237 15243
+f 15245 15243 15237
+f 15245 15248 19707
+f 19707 15248 15249
+f 15246 15245 19707
+f 15254 15246 19707
+f 19707 15249 15254
+f 15253 15252 15329
+f 15255 15253 15329
+f 15255 15329 19708
+f 15221 15257 15204
+f 15257 15221 15258
+f 15267 15266 15259
+f 15259 15262 15267
+f 15263 15270 15267
+f 15267 15262 15263
+f 15268 15265 15266
+f 15264 15265 15272
+f 15272 15271 15264
+f 15273 15214 15271
+f 15273 15272 15268
+f 15224 15240 15274
+f 15274 15240 15241
+f 15278 15277 15244
+f 15276 15279 15281
+f 15286 15279 15280
+f 15288 15285 15281
+f 15288 15287 15298
+f 15246 15254 15290
+f 15292 15291 15290
+f 15290 15254 15255
+f 15292 15255 19708
+f 15292 19708 15296
+f 15294 15298 15287
+f 15287 15289 15294
+f 15289 15291 15294
+f 15297 15214 15273
+f 15299 15298 15294
+f 15300 15149 15200
+f 15300 15206 15211
+f 15158 19703 7079
+f 7079 5562 15158
+f 19703 15300 15650
+f 15219 15218 15390
+f 15301 14086 15302
+f 15302 14088 15303
+f 15302 15303 15304
+f 15251 15234 15304
+f 15306 15303 15308
+f 15308 14096 15311
+f 15311 15312 15313
+f 15313 15312 15315
+f 14097 19657 15312
+f 15314 15312 19657
+f 15309 15307 15308
+f 15313 15309 15308
+f 15318 15309 15313
+f 15317 15318 15313
+f 15319 15309 15318
+f 15310 15309 15319
+f 15321 15310 15319
+f 15321 15320 15325
+f 15323 15320 15317
+f 15317 15315 15323
+f 15327 15251 15305
+f 15327 15305 15306
+f 15327 15306 19709
+f 15252 15251 15327
+f 15327 19709 15328
+f 15329 15252 15328
+f 15333 19708 15329
+f 15329 15330 15333
+f 15306 15307 19709
+f 19709 15307 15310
+f 19709 15310 15331
+f 15328 19709 15331
+f 15330 15335 15336
+f 15345 15335 15332
+f 15335 15345 15337
+f 15310 15321 15338
+f 15338 15321 15325
+f 15342 15326 15344
+f 15341 15339 15342
+f 15337 15345 15346
+f 15382 15348 15346
+f 15346 15347 15382
+f 19710 15347 15341
+f 15341 15343 19710
+f 15357 19710 15343
+f 15356 15382 15347
+f 15347 19710 15356
+f 19710 15357 15356
+f 14138 15316 15314
+f 14138 14139 15349
+f 15354 15351 15349
+f 15349 15350 15354
+f 15353 15343 15344
+f 15365 15354 15350
+f 15350 15359 15365
+f 15358 14155 15360
+f 15362 15361 19711
+f 14157 14160 15363
+f 15363 19711 15361
+f 15361 15360 15363
+f 19712 15364 15362
+f 15362 19711 19712
+f 19711 15363 19713
+f 15370 19712 19711
+f 19711 19713 15370
+f 15375 15370 19713
+f 19713 15404 15375
+f 15353 15352 15367
+f 15366 15367 15352
+f 15355 15367 15400
+f 15371 15400 15367
+f 15367 15366 15371
+f 15366 15365 15364
+f 15372 15366 15364
+f 15369 15372 15364
+f 15364 19712 15369
+f 15369 19712 15370
+f 15371 15366 15372
+f 15373 15372 15369
+f 15369 15368 15374
+f 15296 19708 15333
+f 15378 15296 15333
+f 15293 15295 15377
+f 15295 15296 15378
+f 15380 15378 15334
+f 15336 15381 15380
+f 15379 15380 15384
+f 15380 15381 15385
+f 15348 15385 15381
+f 15383 15385 15348
+f 15383 15382 15356
+f 15389 15383 15356
+f 15384 15380 15385
+f 15388 15389 15395
+f 15218 15293 15377
+f 15391 15390 15377
+f 15376 15379 15392
+f 15376 15392 15391
+f 15387 15393 15392
+f 15396 15395 15389
+f 15395 15396 15398
+f 15398 15396 15399
+f 15397 15399 19714
+f 15397 19714 19715
+f 15400 15371 15396
+f 15373 15399 15396
+f 15396 15371 15373
+f 15455 15399 15373
+f 15373 15374 15455
+f 15455 19714 15399
+f 15363 14160 14314
+f 15363 14314 19716
+f 19716 19713 15363
+f 14317 19716 14314
+f 19716 14317 15405
+f 15405 14317 15401
+f 15405 15401 15403
+f 15402 15401 14320
+f 14320 14321 15402
+f 19716 15404 19713
+f 15404 19716 15405
+f 15407 15406 19717
+f 15406 15403 19718
+f 15422 19717 15406
+f 15406 19718 15422
+f 15414 19718 15403
+f 15403 15402 15414
+f 15422 19718 15414
+f 15408 15402 14321
+f 15409 15408 14346
+f 14346 14351 15409
+f 15409 14351 14350
+f 15410 14350 14352
+f 15410 14352 15412
+f 15409 15410 15411
+f 15411 15410 15412
+f 15420 15422 15414
+f 15414 15408 15420
+f 15408 15409 15420
+f 15420 15409 15411
+f 15440 15420 15411
+f 15411 15413 15440
+f 15374 15368 15415
+f 15416 15368 15407
+f 15407 19717 15416
+f 15416 19717 15422
+f 15421 15416 15422
+f 15416 15421 15419
+f 15416 15415 15368
+f 15419 15421 15423
+f 15420 15423 15421
+f 15420 15440 15424
+f 15424 15423 15420
+f 14395 15430 14390
+f 15430 14395 14396
+f 15430 14396 15428
+f 15435 15434 15432
+f 15432 15413 15412
+f 15433 15412 14352
+f 14352 14399 15433
+f 15412 15433 15432
+f 15437 15438 15434
+f 15413 15434 15438
+f 15439 15436 19719
+f 15446 19719 15436
+f 15436 15429 15446
+f 15428 14396 14408
+f 15441 15429 15428
+f 15428 14408 15441
+f 15441 14410 15444
+f 19720 15442 15441
+f 15441 15444 19720
+f 15473 15445 14416
+f 14416 15443 15473
+f 15451 15446 15442
+f 15452 15451 15442
+f 15442 19720 15452
+f 15479 15452 19720
+f 19720 15444 15445
+f 19720 15445 15479
+f 15445 15473 15479
+f 15447 15425 15424
+f 15447 15424 15438
+f 15438 15439 15447
+f 15438 15424 15440
+f 15447 15439 19719
+f 15449 15447 19719
+f 19719 15446 15449
+f 15449 15446 15451
+f 15453 15449 15451
+f 15453 15452 15479
+f 15453 15479 15485
+f 15454 15453 15485
+f 15454 15485 15484
+f 19715 19714 15468
+f 15468 19714 15455
+f 15456 15468 15455
+f 15455 15415 15417
+f 15468 15456 15463
+f 15448 15450 15458
+f 15454 15484 15461
+f 15454 15461 15458
+f 15465 15650 15300
+f 15219 15390 15465
+f 15650 15465 15466
+f 15397 19715 15465
+f 15465 15390 15391
+f 15465 15391 15393
+f 15465 15393 15394
+f 15463 15467 15465
+f 15465 19715 15468
+f 15443 15470 15472
+f 15475 14833 15477
+f 15479 15473 15472
+f 15478 15474 15476
+f 15480 15478 15476
+f 14841 14843 15489
+f 15489 15488 15481
+f 15489 15481 14841
+f 15477 14833 14840
+f 15477 14840 15481
+f 15481 15488 15482
+f 15485 15479 15478
+f 15486 15483 15480
+f 14843 15490 15489
+f 15487 14886 15493
+f 15482 15488 15491
+f 15501 15494 15493
+f 15493 15492 15501
+f 14900 14902 15496
+f 15499 15498 14904
+f 15500 15497 15498
+f 15504 15506 15505
+f 15486 15482 15494
+f 15511 15512 15515
+f 15508 15509 19721
+f 19721 15509 15511
+f 19721 15511 15514
+f 15515 15534 15513
+f 15461 15517 15516
+f 15516 15517 15518
+f 15516 15518 15522
+f 15486 15517 15483
+f 15460 15516 15519
+f 15521 15519 15516
+f 15516 15522 15521
+f 15522 15518 15508
+f 15518 15486 15508
+f 15508 19721 15520
+f 19721 15514 15520
+f 15514 15513 15520
+f 15055 15056 15698
+f 15056 15076 15079
+f 15056 15707 15698
+f 15056 15079 15707
+f 15707 15079 15528
+f 19697 15524 15071
+f 15075 15071 15524
+f 15137 15524 19697
+f 15526 15577 15525
+f 19722 15527 15525
+f 15577 19722 15525
+f 15529 15527 19722
+f 19722 15577 15530
+f 15529 19722 15530
+f 15513 15535 19723
+f 19723 15535 15545
+f 19723 15545 15586
+f 15546 15547 15583
+f 15537 15532 15533
+f 15542 15586 15545
+f 15545 15536 15538
+f 15549 15548 15113
+f 15549 15113 15112
+f 15118 15117 19724
+f 15117 15116 19724
+f 19725 15553 15118
+f 15118 19724 19725
+f 15549 15112 15553
+f 19724 15116 19700
+f 19700 19699 19726
+f 19725 19724 19700
+f 19725 19700 19726
+f 15555 15553 19725
+f 15554 15560 15550
+f 15550 15553 15554
+f 15551 15550 15560
+f 19727 15560 15554
+f 15554 15555 19727
+f 15555 19725 15557
+f 19725 19726 15557
+f 15557 19726 15558
+f 15556 15565 15555
+f 15555 15557 15556
+f 19727 15555 15565
+f 15551 15584 15552
+f 15560 15584 15551
+f 15560 19727 15563
+f 15559 15584 15560
+f 15563 19727 15565
+f 15562 15565 15566
+f 15568 15567 15561
+f 15561 15562 15568
+f 15567 15568 15589
+f 15593 15589 15568
+f 15568 15566 15593
+f 15572 15574 15573
+f 15548 19728 15569
+f 15569 15135 15113
+f 15570 15574 15139
+f 19728 19729 15570
+f 15570 15569 19728
+f 15573 15574 15570
+f 15573 15570 19729
+f 15571 15573 15580
+f 15581 19728 15548
+f 15581 15548 15552
+f 15580 15573 19729
+f 15580 19729 19728
+f 15580 19728 15581
+f 15523 15138 15575
+f 15575 15576 15523
+f 15526 15523 15576
+f 15572 15576 15575
+f 15575 15574 15572
+f 15571 15533 15579
+f 15579 15577 15578
+f 15579 15578 15571
+f 15581 15583 15547
+f 15547 15571 15580
+f 15581 15584 15582
+f 15583 15582 15585
+f 15540 15533 15571
+f 15541 15571 15547
+f 15582 15584 15559
+f 15585 15559 15567
+f 15586 15520 15513
+f 15513 19723 15586
+f 19730 15520 15542
+f 15542 15544 19730
+f 15544 15546 19730
+f 15546 15583 19730
+f 15520 19730 15616
+f 15595 15590 15599
+f 15596 15599 15590
+f 15599 15596 16891
+f 15605 15603 15599
+f 15599 16891 15605
+f 15597 19730 15583
+f 15583 15585 15597
+f 19730 15597 15598
+f 15601 15616 19730
+f 19730 15598 15601
+f 15616 15601 15608
+f 15600 15601 15598
+f 15600 15598 15595
+f 15604 15603 15605
+f 15610 15607 15602
+f 15610 15606 15612
+f 15611 15609 15607
+f 15469 15464 15519
+f 15614 15469 15519
+f 15519 15521 15613
+f 15469 15614 15657
+f 15615 15618 19731
+f 15615 19731 15621
+f 15620 15609 15611
+f 15618 15609 15622
+f 15622 19731 15618
+f 15622 15621 19731
+f 15620 15622 15609
+f 15623 15622 15624
+f 15623 15624 15626
+f 15626 15625 19732
+f 19733 15617 15615
+f 15615 15621 19733
+f 15617 19733 15627
+f 19734 19733 15621
+f 15621 15623 19734
+f 19733 19734 15628
+f 15623 15626 19734
+f 19734 15626 19735
+f 19735 15626 19732
+f 19734 19735 15628
+f 15628 19735 17012
+f 15627 19733 15628
+f 17012 15629 15628
+f 15629 17012 15633
+f 17011 15633 17012
+f 15657 15614 15659
+f 15631 15659 15614
+f 15631 15614 15613
+f 15613 15617 15631
+f 15659 15631 15638
+f 15633 17011 15635
+f 15634 15632 15636
+f 15638 15631 15630
+f 15640 15639 15630
+f 15639 15640 19736
+f 15640 15634 15636
+f 15640 15636 19737
+f 15642 19737 15636
+f 15642 15636 15637
+f 15637 17064 15642
+f 19737 15642 15641
+f 17064 15643 15642
+f 15643 17064 15648
+f 15644 19736 15640
+f 15640 19737 15644
+f 15645 15644 19737
+f 19737 15641 15645
+f 15645 15641 15643
+f 15645 15647 15649
+f 15684 7074 7079
+f 7079 19703 15650
+f 7079 15651 15684
+f 15467 15469 15656
+f 15467 15656 15652
+f 15652 15651 15650
+f 15654 15684 15651
+f 15653 17831 15655
+f 15652 15656 15678
+f 15652 15678 19738
+f 15658 15678 15656
+f 19738 15678 15677
+f 19738 15677 15680
+f 19739 15664 15639
+f 15639 19736 19739
+f 15664 19739 15674
+f 19740 19739 19736
+f 19736 15644 19740
+f 15667 19740 15644
+f 15644 15646 15667
+f 19740 15667 15666
+f 15668 15667 15646
+f 15646 15649 15668
+f 15668 15649 15669
+f 15667 15668 15665
+f 15670 15674 19739
+f 19739 19740 15670
+f 15670 19740 15666
+f 15666 15665 15672
+f 15670 15671 15676
+f 15679 15680 15677
+f 17857 15681 15673
+f 15673 15675 17858
+f 15673 17858 17857
+f 15676 17858 15675
+f 17857 15683 15681
+f 19738 15653 15651
+f 19738 15651 15652
+f 15680 17915 17831
+f 15680 17831 15653
+f 15680 15653 19738
+f 15682 17915 15680
+f 7448 15685 15686
+f 15684 15654 15686
+f 15654 15655 15687
+f 15687 15686 15654
+f 15512 15690 15515
+f 19741 15515 15690
+f 15691 19741 15690
+f 15515 19741 15534
+f 15499 15051 15701
+f 15693 15701 15051
+f 15500 15499 15701
+f 15703 15701 15693
+f 15693 15699 15703
+f 15689 15702 19742
+f 15702 15703 19742
+f 19743 19742 15703
+f 15704 15699 15700
+f 15704 15700 15712
+f 19743 15703 15704
+f 19743 15704 15706
+f 15704 15712 15705
+f 15712 15708 15711
+f 15714 15705 15712
+f 15721 15711 15713
+f 15714 15711 15721
+f 15713 15529 15531
+f 15532 15721 15713
+f 15713 15531 15532
+f 19742 15691 15689
+f 19741 15691 19744
+f 19744 15691 15720
+f 15718 15691 19742
+f 19742 19743 15718
+f 15718 15720 15691
+f 15718 19743 15706
+f 15717 15716 15719
+f 19744 15720 15535
+f 19744 15535 15534
+f 15534 19741 19744
+f 15545 15535 15716
+f 15717 15705 15714
+f 13713 15722 15766
+f 8146 15766 15722
+f 8146 8145 15723
+f 15766 8146 15727
+f 19745 15723 15724
+f 15723 15727 8146
+f 15725 15727 15723
+f 15751 15733 15728
+f 15728 15732 15751
+f 8155 15739 15724
+f 15739 19745 15724
+f 8157 15739 8154
+f 15737 19745 15735
+f 15737 15723 19745
+f 15735 19745 15739
+f 8157 15740 15735
+f 15736 15735 15741
+f 15736 15738 15737
+f 15734 15729 15733
+f 15753 8157 15734
+f 15753 15734 15733
+f 15733 15752 15753
+f 15733 15751 15750
+f 15744 15736 15741
+f 15744 15741 15756
+f 15740 15755 15756
+f 15756 15757 15744
+f 15755 15754 15837
+f 15755 15758 15756
+f 15758 15757 15756
+f 15763 15745 15757
+f 15759 15763 15757
+f 15760 15742 15743
+f 15760 15743 15745
+f 15763 15760 15745
+f 15761 15793 15748
+f 15765 15793 15761
+f 15794 15793 15765
+f 15796 15794 15765
+f 13711 15767 15773
+f 15773 15774 15769
+f 15773 15768 13711
+f 15769 15768 15773
+f 13741 13716 15770
+f 15774 15771 15769
+f 15776 15771 15774
+f 15746 15726 15725
+f 13741 15770 13744
+f 15784 13744 15770
+f 15772 15770 15769
+f 15784 15770 15772
+f 15772 15781 15784
+f 15771 15775 15777
+f 15772 15778 15781
+f 15778 15772 15777
+f 15778 15782 15781
+f 13744 13742 13741
+f 13751 13750 15803
+f 15785 13745 13746
+f 15808 13750 13745
+f 15808 13745 15785
+f 15781 13746 15784
+f 15780 13746 15781
+f 15786 15808 15785
+f 15747 15775 15746
+f 15788 15779 15787
+f 15747 15793 15787
+f 15790 15787 15793
+f 15788 15792 15782
+f 15782 15778 15788
+f 15748 15793 15747
+f 15788 15787 15790
+f 15798 15797 15795
+f 15792 15789 15797
+f 15799 15800 15797
+f 15803 13810 13751
+f 15809 13750 15808
+f 15809 15803 13750
+f 15810 15803 15809
+f 15810 15802 15803
+f 15807 15805 15804
+f 15809 15786 15811
+f 15783 15786 15780
+f 15811 15802 15810
+f 15814 15813 15811
+f 15811 15812 15814
+f 14462 13815 15805
+f 15816 15817 15821
+f 15806 15813 15818
+f 15814 15815 15819
+f 15819 15822 15820
+f 16094 15820 15822
+f 15823 15818 15820
+f 16094 15823 15820
+f 15801 15826 15812
+f 15801 15791 15792
+f 15801 15812 15791
+f 15812 15826 15815
+f 15827 15826 15829
+f 15825 15829 15826
+f 15894 15895 15824
+f 15824 15895 15828
+f 15828 15895 15897
+f 15825 15828 15897
+f 15897 15895 15896
+f 15830 15825 15897
+f 15897 15833 15830
+f 16094 15822 16093
+f 15831 16093 15822
+f 15751 15732 8273
+f 15732 8269 8273
+f 15835 15749 15751
+f 15751 8273 8284
+f 8291 15752 15749
+f 15836 15754 15752
+f 15752 8291 15836
+f 15758 15755 15837
+f 15839 15838 15842
+f 15843 15840 15839
+f 15849 15764 15759
+f 15852 15762 15764
+f 15852 15764 15849
+f 15844 15849 15759
+f 8295 8293 8302
+f 15841 8295 15861
+f 15861 8295 8302
+f 15861 15845 15841
+f 15857 15846 15850
+f 15857 15847 15846
+f 15853 15765 15852
+f 15854 15765 15853
+f 15881 15854 15853
+f 15881 15853 15855
+f 15848 15851 15849
+f 15855 15849 15851
+f 15856 15851 15847
+f 8304 15858 15861
+f 15865 15850 15862
+f 15865 15857 15850
+f 15864 15867 15862
+f 15860 15863 15858
+f 15864 15863 15869
+f 15869 15863 15860
+f 15871 15856 15866
+f 15865 15867 15873
+f 15867 15876 15873
+f 19746 15795 15796
+f 15798 15795 15854
+f 15854 15882 15798
+f 15888 15798 15882
+f 15799 15798 15888
+f 15824 15799 15888
+f 15883 15882 15881
+f 15882 15885 15888
+f 15882 15883 15884
+f 15874 15872 15871
+f 15876 15889 15874
+f 15889 15884 15883
+f 15889 15890 15892
+f 15892 15886 15889
+f 15890 15876 15877
+f 15880 15890 15877
+f 15890 15889 15876
+f 15890 15880 15891
+f 15946 15892 15891
+f 15891 15944 15946
+f 15888 15894 15824
+f 15894 15888 15887
+f 15896 16100 15833
+f 15896 15893 15900
+f 15898 15893 15887
+f 15902 15904 15896
+f 15900 15899 15901
+f 15901 15902 15900
+f 15834 15833 16100
+f 15910 15905 15892
+f 15910 15892 15946
+f 15910 15946 15999
+f 15907 15906 15905
+f 15902 15907 15908
+f 15912 15908 15907
+f 15909 15908 15912
+f 15907 15910 15998
+f 15998 15910 15999
+f 15998 15911 15907
+f 15909 15912 16008
+f 16008 15912 15911
+f 15998 16000 15911
+f 15911 16000 16006
+f 16008 15911 16006
+f 8309 8310 15913
+f 15859 8309 15913
+f 8522 15913 8523
+f 15914 8522 8530
+f 15914 15915 15913
+f 15860 15859 15916
+f 15869 15860 15916
+f 15914 15917 15915
+f 15869 15916 15870
+f 15918 15916 15917
+f 15918 15917 15927
+f 15914 8530 15919
+f 8532 15920 15919
+f 8532 8535 15921
+f 15928 15920 15921
+f 15928 15921 15923
+f 15919 15924 15914
+f 15927 15925 19747
+f 19747 15925 15926
+f 15939 19747 15926
+f 15870 15918 15878
+f 15878 15879 15877
+f 15878 15918 15927
+f 15927 15947 15878
+f 15878 15947 15941
+f 15947 15927 19747
+f 8585 15933 8584
+f 15933 8585 15935
+f 15957 15928 15923
+f 15923 15922 15957
+f 15928 15957 15937
+f 15940 15939 15930
+f 15891 15880 15944
+f 15948 15947 19747
+f 19747 19748 15948
+f 19747 15939 19748
+f 15950 19748 15939
+f 15948 19748 15949
+f 15950 15975 19748
+f 19748 15977 15949
+f 15977 19748 15975
+f 15951 15949 15954
+f 15977 15954 15949
+f 15977 15983 15954
+f 15961 15956 15931
+f 15933 15961 15931
+f 15961 15933 15962
+f 15962 15933 15935
+f 15956 15960 15958
+f 15958 15955 15956
+f 15938 15937 15958
+f 15938 15958 15960
+f 15960 15965 15964
+f 15959 15966 15960
+f 15963 15959 15961
+f 15963 15966 15959
+f 15966 15978 15965
+f 15966 15968 15978
+f 15962 15935 15936
+f 15970 15962 15936
+f 15963 15962 15970
+f 15971 16028 15972
+f 16028 16038 15972
+f 15950 15940 15938
+f 15950 15938 15964
+f 15974 15981 15973
+f 15973 15981 15976
+f 15981 15974 15979
+f 15978 15980 15979
+f 15980 15982 15981
+f 15954 15983 15985
+f 15952 15986 15953
+f 15983 15976 15982
+f 15984 15983 15982
+f 15968 15989 15990
+f 15991 15987 15980
+f 15972 16038 15989
+f 15992 15994 15990
+f 19749 15986 15988
+f 15988 15996 19749
+f 16001 15999 15946
+f 16001 15946 15945
+f 16002 16004 16001
+f 16005 16007 16006
+f 15953 16003 15945
+f 16009 16002 16003
+f 16002 16009 19750
+f 16002 19750 16004
+f 19750 16290 16004
+f 19749 16010 15986
+f 16011 19750 16009
+f 16012 16290 19750
+f 16012 19750 16011
+f 16014 16010 19749
+f 15996 16014 19749
+f 16014 16011 16010
+f 16015 16011 16014
+f 16019 15969 16018
+f 8706 8730 8710
+f 16021 8710 8730
+f 16021 16023 16054
+f 16054 16023 16024
+f 15969 15971 15970
+f 16028 16027 16033
+f 8709 16029 16019
+f 16030 16033 16029
+f 16031 16033 16030
+f 16038 16028 16033
+f 16038 15992 15989
+f 16040 15994 16037
+f 16037 15992 16039
+f 16040 16037 16042
+f 16039 16042 16037
+f 16041 16039 16043
+f 16044 16041 16043
+f 16040 15995 15993
+f 16046 15997 16040
+f 16046 16040 16042
+f 15995 16040 15997
+f 16045 16042 16041
+f 16046 16042 16045
+f 16066 16045 16044
+f 16066 16049 16045
+f 16047 16045 16049
+f 16021 16032 8710
+f 16055 16053 16054
+f 16054 16058 16055
+f 16059 16055 16058
+f 16035 16055 16059
+f 16058 16054 16024
+f 16024 16056 16058
+f 16056 16026 16584
+f 16584 16060 16056
+f 16061 16059 16057
+f 16059 16043 16035
+f 16043 16065 16044
+f 16043 16059 16065
+f 16065 16059 16061
+f 16062 16067 16065
+f 16062 16068 16067
+f 16052 16049 16066
+f 16075 16052 16067
+f 16075 16067 16068
+f 19751 16051 16052
+f 19751 16075 16074
+f 16052 16075 19751
+f 16069 16075 16068
+f 16068 16063 16064
+f 16070 16064 16593
+f 16069 16068 16064
+f 16071 16069 16070
+f 16069 16071 16075
+f 16048 16015 15997
+f 16076 16015 16048
+f 16076 16048 16050
+f 16050 16049 16051
+f 16079 16050 16051
+f 16051 16081 16079
+f 14461 16083 14464
+f 14461 15816 16083
+f 16085 14464 16083
+f 16085 16083 16084
+f 16084 15821 16088
+f 16088 15821 16086
+f 15823 16094 16089
+f 16086 15823 16089
+f 19752 16091 16089
+f 16089 16096 19752
+f 16096 16098 19752
+f 15834 16102 15832
+f 15832 16101 16097
+f 16097 16101 16099
+f 16098 16099 16160
+f 16102 15834 16100
+f 15832 16102 16101
+f 16102 16104 16103
+f 16103 16104 16108
+f 16103 16099 16101
+f 16099 16103 16105
+f 16103 16110 16105
+f 16110 16106 16105
+f 19753 16108 16109
+f 16110 16103 16108
+f 16108 19753 16110
+f 19753 16111 16110
+f 16111 19753 16165
+f 16107 15903 16112
+f 16107 16112 16114
+f 16114 16109 16107
+f 16119 19753 16109
+f 16119 16109 16114
+f 19753 16119 16165
+f 16114 16115 16119
+f 16119 16176 16165
+f 16172 16165 16176
+f 16115 16113 16117
+f 19754 16119 16120
+f 19754 16176 16119
+f 19754 16178 16176
+f 16178 19754 16179
+f 16084 19755 14578
+f 14574 16085 14578
+f 19679 14578 19755
+f 16088 19755 16084
+f 19755 16088 16123
+f 16123 16088 16121
+f 16087 16124 16121
+f 16090 16087 16086
+f 16090 16126 16087
+f 16087 16126 16124
+f 16126 16090 16128
+f 19755 16123 19679
+f 14579 19679 16123
+f 16121 16122 16123
+f 14579 16122 14581
+f 16122 16125 14581
+f 16125 16141 14581
+f 16125 16130 16141
+f 16127 16125 16124
+f 16133 16125 16127
+f 16125 16133 16130
+f 16130 16133 16131
+f 16090 16091 16132
+f 16091 19752 16132
+f 19756 16132 19752
+f 19756 19752 16160
+f 16098 16160 19752
+f 16099 16159 16160
+f 16135 16128 16132
+f 16135 16127 16128
+f 16135 16133 16127
+f 16139 16133 16135
+f 16139 16134 16133
+f 16132 19756 16137
+f 16137 16136 16132
+f 16160 16137 19756
+f 16134 16139 16140
+f 16140 19757 16134
+f 19757 16140 16150
+f 14604 14603 16141
+f 16131 16154 16129
+f 16154 16131 16148
+f 16129 16154 16143
+f 16154 16156 16143
+f 19758 14608 14610
+f 14610 16143 19758
+f 16144 14608 19758
+f 16143 16156 19758
+f 16156 16154 16153
+f 16144 19758 16156
+f 16144 16156 16145
+f 16134 19759 16148
+f 19757 19759 16134
+f 16149 19759 19757
+f 16150 16149 19757
+f 19759 16153 16148
+f 16153 19759 16155
+f 16149 16155 19759
+f 16157 16147 16145
+f 16147 16157 16213
+f 16152 16158 16149
+f 16213 16157 16158
+f 16213 16158 16189
+f 16189 16158 16152
+f 16137 16159 16138
+f 16161 16138 16159
+f 16111 16166 16161
+f 16161 16166 16162
+f 16171 16166 16165
+f 16171 16169 16166
+f 16169 16162 16166
+f 16170 16172 16175
+f 16175 16176 16178
+f 16173 16175 16180
+f 16151 16150 16181
+f 16181 16183 16151
+f 16168 16181 16164
+f 16183 16181 16184
+f 16182 16152 16151
+f 16186 16182 16183
+f 16152 16182 16188
+f 16188 16254 16189
+f 19760 16189 16254
+f 16190 16254 16188
+f 16184 16168 16174
+f 16174 16192 16184
+f 16195 16174 16173
+f 16195 16173 16180
+f 16192 16174 16193
+f 16186 16192 16194
+f 16187 16194 16200
+f 16197 16194 16193
+f 16200 16198 16187
+f 16191 16187 16198
+f 16201 16200 16196
+f 14932 14930 16202
+f 16144 16203 14608
+f 16207 16146 16147
+f 16207 16147 16214
+f 16214 16208 16207
+f 19693 16204 16210
+f 16210 16206 16232
+f 16232 16206 16209
+f 16220 16236 16209
+f 16214 16147 16213
+f 16208 16214 16215
+f 16211 16189 19760
+f 16212 16211 16216
+f 16215 16209 16208
+f 16221 16212 16217
+f 16218 16217 16216
+f 16223 16221 16217
+f 16224 16222 16221
+f 16225 16219 16226
+f 16222 16226 16219
+f 16227 16248 16225
+f 16223 16229 16224
+f 16227 16226 16228
+f 16232 16233 14982
+f 16233 16235 15101
+f 16235 16239 15101
+f 16209 16236 16232
+f 16236 16233 16232
+f 16220 16240 16236
+f 16236 16240 16237
+f 16235 16245 16238
+f 15103 16239 16238
+f 16235 16234 16245
+f 16238 16245 16244
+f 15103 16238 19699
+f 19699 16238 16244
+f 16237 16246 16234
+f 16246 16245 16234
+f 16246 16237 16241
+f 16244 16245 16242
+f 16240 16220 16241
+f 16241 16248 16227
+f 16227 16230 16250
+f 16241 16227 16250
+f 16922 16250 16230
+f 16256 19760 16254
+f 16256 16211 19760
+f 16211 16256 16253
+f 16253 16218 16211
+f 16251 16253 16256
+f 16252 16251 16257
+f 16191 16255 16190
+f 16256 16255 16251
+f 16251 16255 16258
+f 16255 16199 16258
+f 16217 16218 16252
+f 16274 16260 16262
+f 16268 16199 16198
+f 16266 16199 16268
+f 16201 16268 16198
+f 16266 16267 16269
+f 16261 16270 19761
+f 16263 16261 19761
+f 16263 19761 16284
+f 16271 16270 16269
+f 19761 16270 16272
+f 19762 16272 16271
+f 16259 16229 16223
+f 16259 16273 16275
+f 16229 16259 16275
+f 16274 16262 16264
+f 19763 16264 16263
+f 16264 16276 16274
+f 16231 16275 16277
+f 16278 16922 16230
+f 16230 16231 16278
+f 16275 16276 16279
+f 16281 16279 16276
+f 16264 19763 16283
+f 19763 16263 16284
+f 19763 16284 16283
+f 16276 16264 16283
+f 16276 16283 16281
+f 16287 16281 16283
+f 16272 16284 19761
+f 16284 16272 16286
+f 16490 16286 16272
+f 16288 16287 16285
+f 16491 16288 16286
+f 16920 16282 16287
+f 16920 16921 16282
+f 16288 16920 16287
+f 16920 16288 16500
+f 16920 16500 16501
+f 16280 16279 16282
+f 16280 16282 16921
+f 16007 16289 16008
+f 16291 16289 16007
+f 16290 16291 16005
+f 16116 16289 16117
+f 16291 16296 16117
+f 16117 16289 16291
+f 16117 16296 16294
+f 16294 16118 16117
+f 16295 16294 16296
+f 16291 16292 16296
+f 16301 16295 16292
+f 16120 16293 19754
+f 19754 16293 16299
+f 19754 16299 16298
+f 16293 16295 16299
+f 16299 16295 16305
+f 16299 16305 16297
+f 16292 16290 16012
+f 16012 16300 16292
+f 16300 16303 16301
+f 16016 16300 16013
+f 16300 16016 16303
+f 16016 16017 16303
+f 16303 16302 16309
+f 16301 16304 16305
+f 16309 16304 16303
+f 16305 16304 16308
+f 16306 16305 16308
+f 16297 16305 16307
+f 16327 16306 16310
+f 19764 16311 16306
+f 19764 16306 16327
+f 16328 19751 16316
+f 16074 16316 19751
+f 16316 16074 16313
+f 16312 16071 16073
+f 16313 16312 16314
+f 16317 16318 16343
+f 16079 16081 16080
+f 16082 16051 16322
+f 16328 16322 16051
+f 16322 16330 16081
+f 16321 16080 16323
+f 16324 16081 16330
+f 16333 16332 16321
+f 16330 16333 16324
+f 16321 16324 16333
+f 16309 16319 16320
+f 16320 16310 16309
+f 16320 19765 16327
+f 16320 16325 19765
+f 19765 19764 16327
+f 16332 16326 16321
+f 19766 16332 16334
+f 16326 16332 19766
+f 19751 16328 16051
+f 16331 16313 16341
+f 16329 16337 16330
+f 16337 16329 16331
+f 16333 16330 16336
+f 16336 16330 16337
+f 16336 16335 16333
+f 16379 16334 16339
+f 16341 16340 16331
+f 16338 16337 16340
+f 16341 16313 16317
+f 16341 16317 16342
+f 16343 16346 16342
+f 16344 16342 16346
+f 16334 16379 19766
+f 16350 19764 19765
+f 16350 19765 16348
+f 16348 19765 16325
+f 16348 16325 16351
+f 16354 16351 16326
+f 19766 16354 16326
+f 19767 16354 19766
+f 16354 16348 16351
+f 16354 16353 16348
+f 16349 16348 16353
+f 16354 19767 16352
+f 16352 19767 16357
+f 16349 16353 16466
+f 16470 16353 16352
+f 16353 16469 16466
+f 16469 16353 16470
+f 16357 16470 16352
+f 16357 16356 16470
+f 16380 16379 16339
+f 16380 16339 16381
+f 16345 16359 16360
+f 16362 16345 16360
+f 16381 16339 16347
+f 16363 16381 16347
+f 16363 16347 16362
+f 16381 16363 16383
+f 16366 16383 16363
+f 16369 16368 16383
+f 16383 16366 16369
+f 16365 16367 16364
+f 16367 16365 16373
+f 16367 16369 16366
+f 16375 16374 16376
+f 16374 16373 16372
+f 16379 19767 19766
+f 19767 16379 16357
+f 16378 16357 16379
+f 16378 16355 16357
+f 16387 16385 16368
+f 16387 16368 16370
+f 16356 16358 16527
+f 16372 16371 19768
+f 16400 16375 16376
+f 19768 16400 16376
+f 16376 16372 19768
+f 16403 16400 19768
+f 16403 19768 16822
+f 16409 16403 16822
+f 16409 16822 16821
+f 16834 19769 16409
+f 16409 16821 16834
+f 16394 16391 16389
+f 16394 16389 16396
+f 16386 16396 16389
+f 16394 16396 16392
+f 16395 16390 16406
+f 16406 19770 16395
+f 19770 16392 16396
+f 16396 16395 19770
+f 16375 16397 16370
+f 16397 16375 16401
+f 16398 16397 16401
+f 16370 16397 16387
+f 16390 16397 16399
+f 16404 16402 16398
+f 16398 16401 16404
+f 16399 16406 16390
+f 16402 16406 16399
+f 16393 16392 16546
+f 16406 16405 19770
+f 19770 16546 16392
+f 16546 19770 16405
+f 16425 16408 16407
+f 16408 16427 16546
+f 16546 16405 16408
+f 19769 16411 16410
+f 16410 16406 16402
+f 16410 16409 19769
+f 16411 16425 16407
+f 16413 16412 19769
+f 19769 16834 16413
+f 16415 16419 16412
+f 16412 16414 19771
+f 16412 19771 16415
+f 19771 16416 16415
+f 16419 16415 16417
+f 16421 16420 16418
+f 16418 16417 16421
+f 16422 16442 16420
+f 16430 16424 16428
+f 16412 16432 16431
+f 16431 16433 16411
+f 16411 19769 16412
+f 16423 16425 16411
+f 16436 16430 16428
+f 16438 16440 16433
+f 16433 16431 16438
+f 16432 16418 16437
+f 16418 16420 16437
+f 16439 16441 16438
+f 16441 17402 16440
+f 16439 16420 16442
+f 16440 16434 16429
+f 16429 16433 16440
+f 16434 16440 17402
+f 16179 19754 16298
+f 16298 16444 16177
+f 16298 16297 16444
+f 16307 16444 16297
+f 16307 16457 16446
+f 16447 16446 16457
+f 16457 16449 16447
+f 16451 16197 16448
+f 16451 16450 16454
+f 16452 16451 16454
+f 16457 16307 16455
+f 16458 16449 16456
+f 19764 16456 16311
+f 19764 16350 16456
+f 16456 16350 16463
+f 16459 16462 16458
+f 16458 16454 16450
+f 16454 16458 16461
+f 16463 16462 16459
+f 16349 16467 16463
+f 16467 16465 16463
+f 16466 19772 16467
+f 19772 16466 16469
+f 16201 16196 16453
+f 16472 16267 16471
+f 16271 16267 16472
+f 16201 16453 16471
+f 16471 16453 16475
+f 16471 16475 16472
+f 16478 16472 16475
+f 16476 16478 16475
+f 16473 19762 16271
+f 16479 19762 16473
+f 16472 16478 16473
+f 16478 16477 16473
+f 16495 16477 16487
+f 16484 16461 16460
+f 16460 16462 16464
+f 16465 16482 16464
+f 16453 16461 16484
+f 16453 16484 16474
+f 16483 16484 16460
+f 16476 16483 16486
+f 16487 16486 16507
+f 16507 16486 16488
+f 16480 16564 16481
+f 16488 16489 16511
+f 16481 16564 16489
+f 16564 16511 16489
+f 19762 16490 16272
+f 16493 19762 16479
+f 16490 19762 16493
+f 16479 16477 16495
+f 16493 16479 16495
+f 16492 16493 16494
+f 16492 16494 16498
+f 16504 16498 16494
+f 16494 16493 16495
+f 16497 16500 16288
+f 16497 16498 16502
+f 16513 16504 16494
+f 16505 16502 16498
+f 16496 16495 16508
+f 16512 16511 16517
+f 16511 16563 16517
+f 16514 16510 16521
+f 16521 16515 16514
+f 16516 16517 16518
+f 16469 16526 19772
+f 16468 16467 19772
+f 16523 16468 19772
+f 16523 19772 16526
+f 16526 16469 16356
+f 16527 16526 16356
+f 16526 16527 16524
+f 16528 16524 16527
+f 16536 16524 16528
+f 16536 16528 16538
+f 16530 16523 16525
+f 16529 16532 16480
+f 16542 16525 16524
+f 16537 16542 16524
+f 16542 16537 16540
+f 16538 16541 16537
+f 16540 16537 16541
+f 16542 16533 16530
+f 16540 16543 16542
+f 16564 16480 16532
+f 16564 16532 16534
+f 16394 16528 16391
+f 16538 16393 16547
+f 16547 16541 16538
+f 16535 16533 16544
+f 16565 16535 16544
+f 16549 16545 16540
+f 16549 16539 16553
+f 16565 16544 16550
+f 16545 16551 16544
+f 16549 16552 16545
+f 16552 16551 16545
+f 16555 16550 16551
+f 16558 16556 16551
+f 16551 16552 16558
+f 16555 16556 16560
+f 16561 17531 16555
+f 16559 16562 16558
+f 17526 17534 16559
+f 16562 16559 17534
+f 16511 16564 16563
+f 16566 16563 16534
+f 16569 16566 16565
+f 16567 16566 16569
+f 16569 16565 16550
+f 16572 16571 16518
+f 16518 16568 16572
+f 16572 16568 17540
+f 17540 16568 16570
+f 17540 16573 16572
+f 17540 16570 16555
+f 17540 16555 17531
+f 16553 16574 16578
+f 16580 16581 16579
+f 16580 16430 16436
+f 16582 17526 16581
+f 16435 16580 16436
+f 16581 16559 16557
+f 16557 16554 16581
+f 16581 17526 16559
+f 8740 16585 16025
+f 16026 16025 16585
+f 16585 8740 9380
+f 16585 9380 9381
+f 9381 16583 16585
+f 16585 16584 16026
+f 16588 16583 16587
+f 16592 16586 16588
+f 16589 16592 16588
+f 16594 16590 9406
+f 16588 16587 16590
+f 16598 16597 16595
+f 16598 16607 16597
+f 16594 16601 16590
+f 16599 16590 16601
+f 16601 16594 9411
+f 16605 16600 16602
+f 9414 16605 16602
+f 16603 16601 16600
+f 16600 16605 16611
+f 19773 16603 16600
+f 19773 16600 16611
+f 16611 16605 16604
+f 16598 16603 16612
+f 19773 16612 16603
+f 16072 16070 16593
+f 16073 16072 16597
+f 16608 16609 16604
+f 16609 16611 16604
+f 16608 16644 16609
+f 16621 16616 16609
+f 16609 16644 16621
+f 16613 16612 19773
+f 16613 19773 16614
+f 16614 19773 16611
+f 16613 16614 16617
+f 16620 16616 16621
+f 16624 16617 16615
+f 16624 16615 16622
+f 16642 16624 16623
+f 16630 16073 16625
+f 16630 16625 19774
+f 16607 16625 16597
+f 16607 19775 16625
+f 16606 19775 16607
+f 19774 16625 19775
+f 19774 19775 16626
+f 16630 19774 19776
+f 16606 16627 19775
+f 16626 19776 19774
+f 16626 19775 16627
+f 16314 16073 16630
+f 19776 16631 16630
+f 16318 16314 16631
+f 16632 19776 16626
+f 16627 16606 16613
+f 16613 16628 16627
+f 16628 16613 16640
+f 16640 16613 16617
+f 16629 16628 16638
+f 16637 16629 16638
+f 16631 19776 16632
+f 16634 16343 16318
+f 16632 16626 16629
+f 16633 16629 16637
+f 16636 16660 16635
+f 16624 16641 16640
+f 16642 16669 16641
+f 16643 16641 16669
+f 9502 16644 16608
+f 16619 16618 16649
+f 16623 16648 16642
+f 16646 16623 16619
+f 16646 16619 16649
+f 16648 16623 16646
+f 16652 16646 16651
+f 19777 16654 16655
+f 19777 16655 16692
+f 16654 16656 16652
+f 16652 16651 16654
+f 16656 16654 19777
+f 16692 16694 19777
+f 16657 16656 19777
+f 16657 19777 16658
+f 16694 16658 19777
+f 16659 16680 16657
+f 16694 16659 16658
+f 16637 16663 16633
+f 16663 16637 16639
+f 16663 16639 16643
+f 16663 16661 16636
+f 16661 16663 16662
+f 16665 16666 16662
+f 16647 16668 16642
+f 16642 16648 16647
+f 16668 16664 16643
+f 16643 16669 16668
+f 16674 19778 16668
+f 16668 16647 16674
+f 19779 16664 16668
+f 19779 16668 19778
+f 16674 16647 16653
+f 19779 16665 16664
+f 16666 16665 16673
+f 16675 16676 19778
+f 16675 19778 16674
+f 16676 16678 19779
+f 19779 19778 16676
+f 16675 16653 16679
+f 16676 16675 16679
+f 16708 16676 16679
+f 16708 16679 16709
+f 16676 16708 16677
+f 16653 16656 16657
+f 16680 16709 16679
+f 16678 16673 16665
+f 16665 19779 16678
+f 16681 16645 9505
+f 16681 9505 9512
+f 16681 16649 16618
+f 16682 16681 9512
+f 16682 9512 9518
+f 16683 16651 16650
+f 16650 16649 16681
+f 16686 16682 9518
+f 16686 9518 9517
+f 16686 9517 16684
+f 16686 16687 16682
+f 16688 16685 16689
+f 16689 16695 16688
+f 16691 16689 16684
+f 16684 9517 16690
+f 16687 16655 16651
+f 16346 16635 16660
+f 16660 16359 16346
+f 16660 16696 16359
+f 16696 16697 16361
+f 16365 16361 16697
+f 16701 16698 16667
+f 16672 16701 16667
+f 16700 16808 16698
+f 16698 16701 16700
+f 16811 16699 16698
+f 16811 16698 16808
+f 16699 16373 16365
+f 16365 16697 16699
+f 16811 16371 16373
+f 16373 16699 16811
+f 16702 16680 16659
+f 16704 16671 16670
+f 16715 16705 16703
+f 16705 16715 16718
+f 16706 16721 16704
+f 16705 16718 16706
+f 16703 16677 16712
+f 16712 16708 19780
+f 16716 16703 16712
+f 16716 16712 19780
+f 16711 19780 16708
+f 16716 19780 16714
+f 16711 16714 19780
+f 16714 16713 16725
+f 16702 16724 16710
+f 16724 16702 16748
+f 16724 16713 16710
+f 16715 16703 16716
+f 16717 16714 16725
+f 16717 16718 16715
+f 16723 16724 16762
+f 16723 16762 16761
+f 16722 16719 16728
+f 16731 16722 16728
+f 16728 16726 16730
+f 16732 16728 16730
+f 16727 16729 16726
+f 16727 16765 16729
+f 16739 16695 16735
+f 16738 16735 16734
+f 16734 9638 16736
+f 16738 16734 16751
+f 16751 16734 16736
+f 16693 16695 16739
+f 16740 16693 16739
+f 16746 16741 16740
+f 16702 16741 19781
+f 16746 19781 16741
+f 19781 16748 16702
+f 16740 16739 16738
+f 16750 16740 16738
+f 16750 16738 16751
+f 16750 16746 16740
+f 16743 16737 9641
+f 16743 16736 16737
+f 16751 16736 16742
+f 16742 16743 16745
+f 16744 16751 16742
+f 16746 16748 19781
+f 16752 16746 16750
+f 16749 16751 16744
+f 16753 16750 16749
+f 16747 16752 16753
+f 16747 16753 16770
+f 16770 16759 16747
+f 16755 16754 9652
+f 16755 16743 16754
+f 16756 16744 16745
+f 16748 16762 16724
+f 16762 16748 16747
+f 16762 16747 16759
+f 16763 16761 16760
+f 16732 16764 16768
+f 16757 16755 9652
+f 16757 9652 9689
+f 9689 9688 16772
+f 16773 16757 16772
+f 9692 16774 16772
+f 16772 9688 9692
+f 16773 16772 16774
+f 16774 19782 16773
+f 16779 16777 16776
+f 16779 16783 16777
+f 16777 16786 16778
+f 16783 16786 16777
+f 16786 19783 16778
+f 16779 16773 19782
+f 16775 16780 16774
+f 16781 19782 16774
+f 16786 16788 19783
+f 19782 16782 16779
+f 16782 19782 16781
+f 16785 16787 16783
+f 16788 16787 16789
+f 16790 16787 16785
+f 16760 16794 16763
+f 16760 16792 16793
+f 16793 16792 16796
+f 16795 16766 16763
+f 16796 16778 19783
+f 16797 16801 16794
+f 16794 16793 16797
+f 16797 16799 16801
+f 16795 16801 16800
+f 16846 16767 16800
+f 16766 16795 16800
+f 16794 16801 16795
+f 16846 16800 16805
+f 16805 16800 16803
+f 19783 16788 16796
+f 16797 16796 16788
+f 16806 16797 16788
+f 16810 16808 16809
+f 16704 16809 16700
+f 16700 16671 16704
+f 16809 16823 16810
+f 16823 16809 16813
+f 16809 16704 16721
+f 16813 16809 16721
+f 16810 19768 16371
+f 16371 16811 16810
+f 16823 16822 19768
+f 19768 16810 16823
+f 16812 16721 16720
+f 16812 16720 16818
+f 16722 16818 16720
+f 16815 16823 16813
+f 16825 16815 16814
+f 16825 16814 16820
+f 16817 16816 16826
+f 16819 16826 16816
+f 16820 16817 16826
+f 16815 16825 19784
+f 19784 16834 16821
+f 16815 19784 16821
+f 16732 16819 16731
+f 16824 16820 16829
+f 16829 16835 16824
+f 16830 16835 16829
+f 16824 16833 19784
+f 19784 16825 16824
+f 16834 19784 16833
+f 16833 16824 16835
+f 16833 16414 16413
+f 16836 19771 16414
+f 16414 16833 16836
+f 16836 16416 19771
+f 16732 16827 16819
+f 16828 16827 16838
+f 16768 16838 16827
+f 16832 16828 16838
+f 16837 16417 16416
+f 16842 16837 16830
+f 16421 16417 16837
+f 16842 16830 16831
+f 16842 16831 16839
+f 16837 16839 16841
+f 16841 16422 16421
+f 16843 16422 16841
+f 16843 16841 18032
+f 18032 16841 18035
+f 18035 16841 16839
+f 18035 16839 16844
+f 16838 16769 16846
+f 16769 16767 16846
+f 16845 16847 16831
+f 16840 16831 16847
+f 16845 16846 16848
+f 16848 16805 16804
+f 16775 19397 16849
+f 16849 16850 16781
+f 16781 16780 16849
+f 16849 19397 16852
+f 9715 16855 16852
+f 16852 18094 16851
+f 18094 16852 16854
+f 16784 16781 16850
+f 16784 16850 16853
+f 16785 16784 16853
+f 16853 16851 19785
+f 16790 16785 16853
+f 19785 16851 18094
+f 19699 16244 19786
+f 19726 19699 19786
+f 16244 16243 19786
+f 19726 19786 15558
+f 16243 15558 19786
+f 15558 16243 16861
+f 16859 16861 16243
+f 16243 16242 16856
+f 16876 16856 16242
+f 16873 16876 16242
+f 16859 16243 16857
+f 16856 16876 16868
+f 16861 16858 15558
+f 16862 16858 16861
+f 16863 16862 16865
+f 16862 16860 16864
+f 16867 16860 16859
+f 16866 16867 16857
+f 16856 16868 16866
+f 16860 16867 16864
+f 16866 16872 16867
+f 16872 16870 16867
+f 16873 16242 16247
+f 16875 16868 16876
+f 16249 16250 16874
+f 16878 16250 16881
+f 16878 16874 16250
+f 16879 16882 16912
+f 15593 16863 15592
+f 16888 15592 16863
+f 15594 15592 16885
+f 15592 16888 16884
+f 16864 16870 16886
+f 16888 16863 16865
+f 16888 16865 16886
+f 16887 16888 16886
+f 16887 16886 16894
+f 16870 16894 16886
+f 16895 16889 16885
+f 16885 16884 16895
+f 16891 16890 16892
+f 16890 16889 16895
+f 16890 16895 16893
+f 16884 16887 16895
+f 16895 16894 16893
+f 16902 16901 16896
+f 16897 16896 16901
+f 16896 16898 16902
+f 16899 16893 16897
+f 16904 16906 16903
+f 16908 16907 16899
+f 16908 16903 16906
+f 16997 16908 16906
+f 16898 16872 16871
+f 16898 16871 16869
+f 16898 16869 16911
+f 16911 16902 16898
+f 16883 16869 16880
+f 16883 16911 16869
+f 16883 16918 16911
+f 16911 16918 16910
+f 16902 16910 16900
+f 16904 16900 16905
+f 16900 16914 16905
+f 16913 16914 16900
+f 16910 16917 16913
+f 17036 16914 16915
+f 16919 17176 16915
+f 16923 16250 16922
+f 16923 16881 16250
+f 16278 16280 16923
+f 16881 16923 16924
+f 16930 16881 16924
+f 16926 16930 16924
+f 16928 16927 16934
+f 16929 16877 16881
+f 16877 16929 16882
+f 16948 16882 16931
+f 16935 16931 16932
+f 19787 16925 16921
+f 16938 19787 16921
+f 16921 16501 16938
+f 16925 19787 16927
+f 16934 16927 16940
+f 16927 19787 16938
+f 17441 16942 16941
+f 16942 17441 16946
+f 16944 16942 16946
+f 16945 16946 16968
+f 16912 16882 16948
+f 16955 16912 16948
+f 16955 16918 16912
+f 16916 16918 16955
+f 16955 16948 16949
+f 16952 16947 16931
+f 16931 16935 16952
+f 16935 16936 16952
+f 16952 16936 16954
+f 16950 16948 16947
+f 16950 16956 16949
+f 16916 16956 16957
+f 16963 16957 16956
+f 16962 16956 16960
+f 16936 16937 16954
+f 16937 16943 16964
+f 16966 16959 16951
+f 16964 16965 16978
+f 16971 16978 16965
+f 16966 16964 16978
+f 16970 16971 16965
+f 16965 16967 16970
+f 16968 16967 16945
+f 16953 16959 16976
+f 16961 16976 16982
+f 16976 16977 16982
+f 16977 16966 16978
+f 16961 16982 16981
+f 17213 16962 16961
+f 16980 17213 16961
+f 16981 16983 16988
+f 16987 16986 16975
+f 16986 16983 16979
+f 16983 16986 16989
+f 16993 16989 16986
+f 16986 16991 16993
+f 16993 16992 17520
+f 17520 16990 16993
+f 15619 15612 16995
+f 16994 16997 17001
+f 16995 15625 15619
+f 15625 16995 16998
+f 16998 16995 16996
+f 16998 19732 15625
+f 16996 16994 17001
+f 17000 16909 17020
+f 17020 17003 17000
+f 17002 17003 17019
+f 17004 17020 16909
+f 17022 17020 17004
+f 19732 16998 17009
+f 16998 16999 17009
+f 16999 17007 17009
+f 17007 16999 17002
+f 17007 17002 17005
+f 17009 19735 19732
+f 17012 19735 17009
+f 17008 17012 17009
+f 17016 17013 17008
+f 17008 17007 17016
+f 17017 17015 17013
+f 17016 17006 17018
+f 17019 17003 17024
+f 17021 17024 17003
+f 17027 17028 17026
+f 17004 17030 17032
+f 17004 17032 17034
+f 17040 17034 17033
+f 17031 16914 17036
+f 17036 16915 17176
+f 17036 17176 17037
+f 17041 17039 17038
+f 17055 17041 17035
+f 17034 17022 17004
+f 17034 17023 17022
+f 17023 17034 17046
+f 17046 17034 17042
+f 17042 17034 17040
+f 17044 17046 17042
+f 17045 17027 17023
+f 17023 17046 17045
+f 17029 17027 17045
+f 17049 17047 17050
+f 17049 17050 17052
+f 17043 17040 17039
+f 17054 17041 17055
+f 19788 17053 17054
+f 17051 17044 17053
+f 17051 17053 19788
+f 17129 17051 19788
+f 17129 19788 17131
+f 17132 17131 19788
+f 19788 17054 17132
+f 17132 17054 17056
+f 17132 17056 17133
+f 17057 15635 17014
+f 15635 17057 17063
+f 17058 17057 17015
+f 17059 17058 17017
+f 17058 17063 17057
+f 17063 17058 17060
+f 17059 17061 17058
+f 17060 17061 17077
+f 17062 15637 15635
+f 17064 17062 17066
+f 17060 17062 17063
+f 17062 17060 19789
+f 17084 19789 17060
+f 17084 17060 17077
+f 19789 17065 17062
+f 18679 17065 19789
+f 19789 17084 19790
+f 17025 17026 17067
+f 17067 17076 17025
+f 17069 17076 17067
+f 17072 17076 17069
+f 17073 17072 17069
+f 17087 17072 17071
+f 17059 17006 17025
+f 17061 17059 17025
+f 17061 17025 17075
+f 17077 17061 17075
+f 17079 17075 17076
+f 17078 17075 17079
+f 17080 17089 17079
+f 17081 17079 17089
+f 17089 17090 17081
+f 17083 19790 17084
+f 17083 17082 19790
+f 17085 17081 17090
+f 17082 17081 17085
+f 17091 17108 17086
+f 18682 15649 15647
+f 15647 17094 18682
+f 17106 17087 17071
+f 17106 17071 17098
+f 17095 17098 17071
+f 17071 17074 17095
+f 17100 17106 17098
+f 17106 17105 17107
+f 17107 17090 17088
+f 17106 17107 17088
+f 17088 17087 17106
+f 17107 17109 17091
+f 17111 17107 17105
+f 17112 17109 17111
+f 17112 19791 17113
+f 17110 17109 17112
+f 17105 17100 17099
+f 17117 17116 17048
+f 17117 17118 17116
+f 17068 17029 17116
+f 17068 17116 17118
+f 17117 17052 17119
+f 17119 17051 17124
+f 17122 17117 17119
+f 17122 17119 17123
+f 17124 17123 17119
+f 17120 17118 17117
+f 17073 17070 17118
+f 17121 17074 17073
+f 17121 17120 17127
+f 17135 17131 17132
+f 17096 17121 17127
+f 17097 17096 17147
+f 17140 17147 17096
+f 17096 17127 17140
+f 17127 17126 17141
+f 17144 17126 17128
+f 17141 17126 17144
+f 17140 17127 17141
+f 17146 17102 17097
+f 17097 17147 17146
+f 17147 17140 17145
+f 17149 17148 17146
+f 17143 17157 17142
+f 17145 17140 17142
+f 17145 17142 17149
+f 17161 17149 17142
+f 17142 17157 17161
+f 19791 17151 17113
+f 17150 18702 17151
+f 17152 19791 17115
+f 19791 17112 17115
+f 19791 17152 17151
+f 17150 19792 18702
+f 17167 18702 19792
+f 17154 19792 17150
+f 17168 17167 19792
+f 17168 19792 17154
+f 19793 17144 17128
+f 17128 17136 19793
+f 19794 19793 17136
+f 19793 17158 17144
+f 17143 17144 17158
+f 19794 17159 17158
+f 19793 19794 17158
+f 17155 19794 17136
+f 17136 17138 17155
+f 19794 17155 17159
+f 17159 17155 17324
+f 17143 17158 17156
+f 17157 17156 17160
+f 17163 17160 17156
+f 17156 17164 17163
+f 17164 17156 17159
+f 17164 17159 17165
+f 17165 17159 17324
+f 17166 17171 17167
+f 17168 17174 17166
+f 17169 18724 17170
+f 16958 17176 16919
+f 17037 16958 17177
+f 17177 17178 17037
+f 17179 17180 17178
+f 17177 17183 17179
+f 19795 17183 17184
+f 17184 16963 17185
+f 16962 17217 17186
+f 17185 17187 17190
+f 17185 19795 17184
+f 17188 17179 17183
+f 17183 19795 17188
+f 17188 17180 17179
+f 17180 17189 17182
+f 17191 17188 19795
+f 19795 17185 17191
+f 17188 17191 19796
+f 17190 19796 17191
+f 19797 17189 17188
+f 17188 19796 19797
+f 19797 19796 17190
+f 19798 19797 17190
+f 17190 19799 19798
+f 19798 19799 17242
+f 17192 17209 17193
+f 17195 17193 17209
+f 17209 17182 17195
+f 17194 17210 17192
+f 17195 17196 17198
+f 17198 17197 19800
+f 19801 17197 17189
+f 17189 19797 19801
+f 17202 19801 19797
+f 19797 19798 17202
+f 17202 19798 17242
+f 17202 17242 19802
+f 17201 19800 17197
+f 17197 19801 17201
+f 17201 19801 17202
+f 17202 19802 17203
+f 17198 19800 17200
+f 17199 17194 17195
+f 17195 17198 17199
+f 17200 19800 17205
+f 17200 17205 17204
+f 17205 19800 17201
+f 17204 17203 17239
+f 17206 17035 17037
+f 17206 17037 17178
+f 17207 17055 17206
+f 17056 17055 17207
+f 17192 17208 17207
+f 17207 17209 17192
+f 17133 17056 17208
+f 17210 17211 17208
+f 17214 17220 17219
+f 17190 17222 19799
+f 19799 17222 17242
+f 17221 17222 17218
+f 17225 17222 17221
+f 17216 17223 17220
+f 17223 17216 17232
+f 17221 17220 17223
+f 17223 17232 17226
+f 17227 17216 17215
+f 17229 17227 16990
+f 16990 17520 17228
+f 17232 17216 17230
+f 17230 17235 17232
+f 17232 17235 17233
+f 17233 17235 17234
+f 17230 17231 17235
+f 17231 17237 17235
+f 19802 17242 17249
+f 17249 17203 19802
+f 17203 17249 17238
+f 17261 17245 17243
+f 17261 17243 17244
+f 17261 17244 17248
+f 17246 17226 17252
+f 17250 17245 17261
+f 17249 17250 17254
+f 17238 17249 17254
+f 17260 17256 17261
+f 17248 17260 17261
+f 17260 17248 17265
+f 17257 17260 17262
+f 17262 17260 17265
+f 17264 17265 17266
+f 17267 17265 17248
+f 17268 17248 17251
+f 17251 17253 17268
+f 17267 17248 17268
+f 17252 17226 17240
+f 17240 17253 17252
+f 17272 17269 17253
+f 17276 17273 17275
+f 17385 17270 17279
+f 17281 17385 17279
+f 17280 17278 17282
+f 17280 17282 17281
+f 17386 17281 17284
+f 17284 17387 17386
+f 17284 17388 17387
+f 17285 17210 17286
+f 17211 17285 17288
+f 17288 17285 17289
+f 17290 17289 17285
+f 17285 17286 17290
+f 17291 17322 17289
+f 17292 17199 17200
+f 17298 17296 17293
+f 17294 17295 17290
+f 17295 17291 17290
+f 17302 17304 17291
+f 17302 17291 17295
+f 17302 17296 17303
+f 17303 17296 17298
+f 17300 17303 17298
+f 17303 17301 17373
+f 17303 17373 17305
+f 17137 17134 17211
+f 17137 17288 17139
+f 17305 17373 17372
+f 17305 17372 17348
+f 17348 17372 17351
+f 17306 17308 17354
+f 17308 17309 19803
+f 17310 19803 17309
+f 17320 17318 17310
+f 17310 17309 17320
+f 17312 17311 17314
+f 17354 17308 19803
+f 17354 19803 17312
+f 17312 19803 17310
+f 17311 17310 17318
+f 17314 17311 17315
+f 17317 17318 17321
+f 17155 17139 17322
+f 17324 17155 17322
+f 17165 17327 17328
+f 18724 17334 17337
+f 17336 17335 18729
+f 17169 19804 18724
+f 19804 19805 17334
+f 19804 17334 18724
+f 17889 19804 17173
+f 17889 17173 17175
+f 17169 17173 19804
+f 19804 17889 17341
+f 17341 19805 19804
+f 17333 17338 17342
+f 17340 17335 19805
+f 17334 19805 17335
+f 17340 17339 17359
+f 17340 17359 17335
+f 17340 19805 17341
+f 17343 17326 17322
+f 17344 17326 17343
+f 17332 17344 17346
+f 17348 17351 17349
+f 17350 17345 17346
+f 17349 17350 17347
+f 17352 17306 17354
+f 17357 17355 17352
+f 17352 17353 17357
+f 17356 17330 17332
+f 17345 17355 17356
+f 17358 17330 17356
+f 17357 17362 17360
+f 17360 17362 17363
+f 17361 19806 18729
+f 19806 18735 18729
+f 17363 17313 19806
+f 17361 17363 19806
+f 19806 17316 18735
+f 17316 19806 17313
+f 18729 17335 17361
+f 17361 17360 17363
+f 17353 17312 17362
+f 17362 17312 17314
+f 17362 17314 17363
+f 17312 17353 17354
+f 17358 17364 17338
+f 17339 17364 17360
+f 17364 17339 17338
+f 17357 17364 17358
+f 17359 17339 17360
+f 17299 17238 17365
+f 17301 17299 17365
+f 17366 17373 17301
+f 17369 17366 17365
+f 17258 17259 17367
+f 17365 17367 17369
+f 17369 17351 17372
+f 17366 17369 17373
+f 17307 17306 17370
+f 17306 17369 17370
+f 17374 17264 17266
+f 17376 17371 17374
+f 17375 17266 17267
+f 17375 17267 19807
+f 17375 19807 17380
+f 19807 17267 17270
+f 19808 17380 19807
+f 19807 17270 19808
+f 17380 19808 17382
+f 17376 17377 17320
+f 17378 17319 17320
+f 17380 17379 17377
+f 17385 19808 17270
+f 19808 17385 17384
+f 19808 17384 17382
+f 17382 17384 17383
+f 17894 17392 17748
+f 17390 17392 17894
+f 17397 17402 16441
+f 16443 16442 16843
+f 17396 16443 17398
+f 17398 16843 18031
+f 17398 17399 17396
+f 18049 17401 17399
+f 17399 17398 18049
+f 18049 17398 18031
+f 17394 17393 17411
+f 17394 17411 17403
+f 17411 17408 17403
+f 17407 17405 17401
+f 17407 17408 17405
+f 17406 17409 17407
+f 17410 18049 18050
+f 17401 18049 17410
+f 17406 17410 17420
+f 17420 17410 18050
+f 17411 17393 17400
+f 17416 17404 17403
+f 17416 17403 17413
+f 17413 17412 17425
+f 17414 17427 17415
+f 17414 17416 17413
+f 17413 17425 17414
+f 17409 17406 17417
+f 17417 17406 17420
+f 17420 18050 17421
+f 17428 17568 17427
+f 17429 17414 17425
+f 17428 17414 17429
+f 17430 17573 17428
+f 17423 17431 17419
+f 17432 17435 17431
+f 17434 17425 17424
+f 17433 19809 17434
+f 17434 17430 17429
+f 17431 19809 17433
+f 19809 17431 17435
+f 17434 19810 17430
+f 17573 17430 19810
+f 19810 17434 17437
+f 17437 17434 19809
+f 17773 17573 19810
+f 17773 19810 19811
+f 17437 19811 19810
+f 17435 17437 19809
+f 17438 19811 17437
+f 17773 19811 17778
+f 17778 19811 17438
+f 17438 17779 17778
+f 16501 16499 16941
+f 16941 16499 17439
+f 16503 17439 16499
+f 17440 17439 17446
+f 17444 17446 17439
+f 19812 17442 17443
+f 17444 17442 19812
+f 17445 17441 17440
+f 17446 17445 17440
+f 16946 17445 17479
+f 17445 17447 17479
+f 17479 17447 17481
+f 17446 17444 19813
+f 17446 19813 17447
+f 17449 17447 19813
+f 17444 19812 19813
+f 19813 19812 17451
+f 17449 19813 17451
+f 17481 17447 17449
+f 17481 17449 17448
+f 17465 17452 17450
+f 17453 17443 16506
+f 17443 17453 19814
+f 19812 17443 19814
+f 16522 17453 16515
+f 17453 16522 17456
+f 19812 19814 17464
+f 17459 19815 17453
+f 17453 17456 17459
+f 19814 17453 19815
+f 17464 19814 19815
+f 17538 17457 16520
+f 17538 17458 17457
+f 17458 17538 17542
+f 17462 17458 17542
+f 16522 16521 16520
+f 16522 16520 17457
+f 17462 17461 17460
+f 17464 17451 19812
+f 19815 17459 17463
+f 19815 17463 17464
+f 17467 17468 17476
+f 17472 19816 17470
+f 17472 17471 19816
+f 17461 17463 17459
+f 17459 17455 17461
+f 17468 17463 17474
+f 17475 17470 19816
+f 17471 17477 17475
+f 17475 19816 17471
+f 17485 17483 17497
+f 17486 17448 17452
+f 17483 17480 17486
+f 17486 17487 17504
+f 17504 17487 17452
+f 17452 17465 17504
+f 17488 17497 17483
+f 17486 17504 17488
+f 17488 17504 17498
+f 17491 17516 17489
+f 17516 17485 17497
+f 17489 17516 17497
+f 17489 17497 17493
+f 17499 17496 17488
+f 17496 17499 17501
+f 17492 17496 17500
+f 17502 17500 17496
+f 17500 17502 17576
+f 17504 17465 17466
+f 17507 17498 17503
+f 17504 17503 17498
+f 17507 17506 17512
+f 17511 17471 17473
+f 17511 17473 17508
+f 17477 17511 17510
+f 17471 17511 17477
+f 17506 17510 17509
+f 17593 17513 17594
+f 17593 17576 17502
+f 17513 17502 17501
+f 17501 17507 17513
+f 17507 17512 17513
+f 17502 17513 17593
+f 17567 17594 17513
+f 17513 17508 17567
+f 17509 17513 17512
+f 16946 17441 17445
+f 16968 16946 17479
+f 16968 17479 17478
+f 17478 16969 16968
+f 17514 16973 16969
+f 17514 16969 17478
+f 17484 17514 17478
+f 16974 16973 17514
+f 17515 17484 17485
+f 16985 16974 17515
+f 16985 17516 17517
+f 17517 17516 17491
+f 16987 17517 16991
+f 17518 16991 17517
+f 17518 17517 17491
+f 17490 17518 17491
+f 17521 17490 17494
+f 17524 17660 17521
+f 17523 17521 17660
+f 17534 17526 17525
+f 17534 17532 16561
+f 16561 16562 17534
+f 17532 17534 17533
+f 17535 17548 17547
+f 17547 17530 17532
+f 17547 17532 17535
+f 17554 19817 17559
+f 17535 17559 19817
+f 19817 17548 17535
+f 17536 17559 17535
+f 17538 16520 16571
+f 17539 17542 17538
+f 17546 17541 17540
+f 17543 17539 17544
+f 17530 17546 17540
+f 17547 17545 17546
+f 17549 17469 17543
+f 17543 17544 17553
+f 17553 17545 19817
+f 17544 17545 17553
+f 17551 17473 17472
+f 17553 19817 17554
+f 19817 17545 17548
+f 17395 17555 16582
+f 16582 16435 17395
+f 17527 17526 16582
+f 17555 17395 17394
+f 17529 17527 17555
+f 17529 17555 17556
+f 17537 17529 17556
+f 17404 17537 17556
+f 17556 17394 17404
+f 17557 17562 17564
+f 17566 17557 17564
+f 17508 17473 17551
+f 17508 17551 17550
+f 17508 17550 17554
+f 17563 17404 17416
+f 17415 17562 17563
+f 17563 17416 17415
+f 17562 17415 17427
+f 17562 17427 17568
+f 17564 17562 17569
+f 17570 17571 17569
+f 17569 17571 17565
+f 17565 17564 17569
+f 17572 17570 17573
+f 17577 17575 17500
+f 17575 17577 19818
+f 17582 17574 17575
+f 17582 17575 17583
+f 17585 19819 19818
+f 19819 17583 17575
+f 17575 19818 19819
+f 17581 17583 17579
+f 17579 19819 17584
+f 17585 17584 19819
+f 17584 17580 17579
+f 17584 17586 17587
+f 19819 17579 17583
+f 19820 17588 17578
+f 17578 17580 19820
+f 17619 17589 17588
+f 17588 19820 17619
+f 17592 19820 17580
+f 17606 17592 17587
+f 17625 17619 17592
+f 19820 17592 17619
+f 17625 17592 17606
+f 17625 17606 17605
+f 17595 17603 17593
+f 19818 17602 17585
+f 17593 17602 19818
+f 19818 17577 17593
+f 17602 17593 17603
+f 17610 17595 17594
+f 17610 17594 17567
+f 17567 17611 17610
+f 17604 17603 17595
+f 17604 17595 17608
+f 17597 17604 17608
+f 17597 17608 17598
+f 17604 17597 17596
+f 17596 17598 17599
+f 17586 17602 17604
+f 17587 17586 19821
+f 19821 17586 17604
+f 17606 17587 19821
+f 17606 19821 17596
+f 19821 17604 17596
+f 17608 17610 17609
+f 17607 17609 17616
+f 17613 17616 17609
+f 17614 17607 17616
+f 17618 17623 17590
+f 17622 17591 17590
+f 17623 17618 17631
+f 17624 17623 17631
+f 17620 17631 17618
+f 17627 17619 17625
+f 17617 17619 17627
+f 17626 17627 17625
+f 17621 17617 17627
+f 17633 17632 17629
+f 17628 17641 17621
+f 17628 17626 17641
+f 17641 17633 17621
+f 17635 17633 17641
+f 17639 17600 17599
+f 17638 17601 17644
+f 17639 17626 17600
+f 17638 17644 17647
+f 17638 17647 17640
+f 17645 17791 17648
+f 17635 17641 17642
+f 17650 17636 17642
+f 17637 17636 17651
+f 17654 17651 17650
+f 17228 17520 17522
+f 17523 17666 17522
+f 17495 17661 17524
+f 17658 17665 17659
+f 17523 17660 17662
+f 17666 17523 17662
+f 17665 17669 17663
+f 17668 17667 17666
+f 17668 17669 17679
+f 17671 17667 17668
+f 17672 17668 17679
+f 17672 17679 17683
+f 19822 17665 17658
+f 17574 19822 17658
+f 17658 17661 17574
+f 17661 17495 17574
+f 17582 17676 17675
+f 17675 19822 17574
+f 17675 17574 17582
+f 17674 17665 19822
+f 17674 19822 17675
+f 17677 17669 17665
+f 17677 17665 17674
+f 17685 17690 17684
+f 17676 17582 17581
+f 17684 17581 17685
+f 17688 17681 17687
+f 19823 17683 17682
+f 19823 17682 17688
+f 17686 17688 17687
+f 19824 19823 17688
+f 19824 17688 17686
+f 17689 17686 17684
+f 17741 19824 17686
+f 17689 17741 17686
+f 17672 17693 17671
+f 17693 17672 17683
+f 17277 17276 17275
+f 17691 17671 17693
+f 17691 17697 17277
+f 17693 17697 17691
+f 17697 17693 17695
+f 17696 17706 17704
+f 17706 17696 17698
+f 17704 17283 17278
+f 17706 17710 17705
+f 19825 17707 17705
+f 17705 17710 19825
+f 17698 17711 17706
+f 17711 17710 17706
+f 17711 17698 17701
+f 17703 17708 17711
+f 17711 17701 17703
+f 19825 17710 17709
+f 17692 17683 19823
+f 17712 17692 19823
+f 17712 19823 19824
+f 17713 17699 17712
+f 17713 17712 17741
+f 17712 19824 17741
+f 17717 17715 17714
+f 17622 17719 17685
+f 19826 17690 17685
+f 19826 17685 17719
+f 17719 17624 17630
+f 17720 17630 17632
+f 17719 17716 17715
+f 17715 19826 17719
+f 17716 17719 17720
+f 17689 17690 19826
+f 17718 17689 19826
+f 19826 17715 17718
+f 17689 17718 17741
+f 17714 17716 17721
+f 17722 17744 17717
+f 17717 17714 17722
+f 17724 17720 17632
+f 17726 17725 17724
+f 17724 17634 17726
+f 17721 17724 17725
+f 17726 17634 17635
+f 17730 17728 17731
+f 17733 17389 17388
+f 17736 17707 19825
+f 17734 17707 17736
+f 19827 18748 17733
+f 17733 17734 19827
+f 17735 19827 17734
+f 17737 17709 17708
+f 17737 17736 19825
+f 19825 17709 17737
+f 18781 18748 19827
+f 18781 19827 19828
+f 17740 19828 17735
+f 17735 17737 17740
+f 19828 19827 17735
+f 17746 19828 17739
+f 19828 18753 18781
+f 18753 19828 17746
+f 19828 17740 17739
+f 17730 17738 17737
+f 17738 17730 17732
+f 17741 17718 17729
+f 17713 17729 17702
+f 17744 17747 17742
+f 17744 17742 17731
+f 17745 17739 17738
+f 17745 17738 17743
+f 17745 17743 17742
+f 17732 17743 17738
+f 17747 17392 17745
+f 17745 17742 17747
+f 17561 17560 17750
+f 17751 17750 19829
+f 17753 17754 17759
+f 17756 17755 17558
+f 17558 17557 17756
+f 17750 17560 17558
+f 17756 17557 17566
+f 17756 17757 17755
+f 17755 17757 19829
+f 19829 17750 17755
+f 19829 17766 17751
+f 17757 17766 19829
+f 17766 17757 17760
+f 17758 17759 17776
+f 17769 17766 17760
+f 17771 17769 17760
+f 17771 17760 17762
+f 17751 17765 17561
+f 17767 17611 17765
+f 17612 17611 17767
+f 17766 17767 17765
+f 17646 17615 17613
+f 17752 17565 17571
+f 17752 17571 17754
+f 17754 17571 17572
+f 17779 17783 17777
+f 17776 17775 17780
+f 17783 17780 17775
+f 17777 17783 17775
+f 17784 17780 17783
+f 17784 17781 17780
+f 17780 17763 17758
+f 17763 17780 17781
+f 17787 17782 17781
+f 17781 17784 17786
+f 17762 17789 17788
+f 17791 17646 17770
+f 17646 17768 17770
+f 17645 17646 17791
+f 17790 17791 17770
+f 17788 17805 17790
+f 17805 17792 17790
+f 17793 17805 17788
+f 17793 17789 17795
+f 17793 17796 17805
+f 17799 17649 17792
+f 17653 17649 17799
+f 17798 17657 17653
+f 17653 17799 17798
+f 17801 17802 17798
+f 17803 17792 17805
+f 17807 17808 17803
+f 17807 17806 17822
+f 17808 17807 17966
+f 17821 17966 17807
+f 17807 17822 17821
+f 17801 17808 17966
+f 17810 17794 17809
+f 17809 17787 17810
+f 17812 17810 17787
+f 17795 17794 17811
+f 17811 17796 17795
+f 17796 17811 17804
+f 17804 17811 17818
+f 17814 17818 17811
+f 17815 17818 17814
+f 17804 17819 17806
+f 17806 17819 17827
+f 17827 17822 17806
+f 17820 17822 17827
+f 17830 17827 17819
+f 17824 17830 17819
+f 17827 17830 17826
+f 15649 18682 15669
+f 17103 17104 17835
+f 17114 17836 17115
+f 15676 17834 17860
+f 17148 17837 17104
+f 17835 17104 17837
+f 17838 17843 17836
+f 17843 17838 17839
+f 17152 17836 17843
+f 17841 17844 17843
+f 17843 17839 17841
+f 17842 17844 17841
+f 17154 17153 17843
+f 17840 17161 17160
+f 17840 17160 17848
+f 17160 17163 17848
+f 17848 17849 17847
+f 17163 17162 19830
+f 17887 19830 17162
+f 19830 17887 17849
+f 19830 17849 17163
+f 17854 17842 17847
+f 17844 17854 17850
+f 17850 17845 17844
+f 19831 17854 17847
+f 19831 17847 17849
+f 19831 17851 17850
+f 17850 17854 19831
+f 17850 17174 17168
+f 19831 17849 17887
+f 17852 19831 17887
+f 17852 17851 19831
+f 17172 17851 17853
+f 17844 17846 17854
+f 17863 17859 17858
+f 17863 17858 15676
+f 17862 15676 17860
+f 17865 17867 17866
+f 17862 17865 17866
+f 17866 17863 17862
+f 17872 17864 17866
+f 17868 17872 17866
+f 17859 17869 17855
+f 17857 17859 17855
+f 17855 15683 17857
+f 17864 17869 17859
+f 17856 17855 17869
+f 17864 17870 17869
+f 17876 17872 17868
+f 17876 17868 17877
+f 17883 17881 17911
+f 17873 17871 17885
+f 17878 17880 17885
+f 17878 17885 17870
+f 17870 17872 17876
+f 17874 17873 17885
+f 17886 17888 17852
+f 17852 17889 17853
+f 17888 17886 17331
+f 17889 17175 17853
+f 17342 17888 17331
+f 17909 17903 17902
+f 17907 17905 17914
+f 17904 18950 17896
+f 17897 17895 17898
+f 17894 17898 17895
+f 17898 17894 17893
+f 17908 17900 17899
+f 17896 18950 17897
+f 17908 17896 17898
+f 17898 17900 17908
+f 17899 17900 17893
+f 17904 17896 17901
+f 17905 17906 17890
+f 17901 17896 17908
+f 17906 17901 17899
+f 17899 17890 17906
+f 17875 17874 17910
+f 17875 17910 17913
+f 17910 17874 17884
+f 17910 17884 17909
+f 17906 17907 17910
+f 17901 17906 17910
+f 17832 17831 17915
+f 17917 17832 17915
+f 17873 17875 17916
+f 17871 17916 17915
+f 17915 15682 17856
+f 17915 17856 17871
+f 17917 17916 17918
+f 17917 17918 18001
+f 17913 17912 17918
+f 17916 17875 17913
+f 18010 18002 18013
+f 18012 18013 18002
+f 18002 18003 18012
+f 17920 17922 17651
+f 17919 17654 17656
+f 17924 17922 17921
+f 17929 17928 17925
+f 17927 17929 17925
+f 17931 17961 17923
+f 17931 17928 19832
+f 17961 17931 19833
+f 19832 19833 17931
+f 19832 17928 17929
+f 17930 19832 17929
+f 17935 17961 19833
+f 17936 17935 19833
+f 19833 19832 17936
+f 17937 17936 19832
+f 19832 17930 17937
+f 17938 17934 17933
+f 17933 17936 17938
+f 17744 17722 17939
+f 17940 17939 17949
+f 17727 17944 17725
+f 17944 17727 17942
+f 17723 17725 17944
+f 17637 17941 17727
+f 17941 17942 17727
+f 17939 17723 17944
+f 17905 17940 17949
+f 17905 17949 17950
+f 17951 17954 17943
+f 17952 17946 17948
+f 17955 17958 17954
+f 17956 17952 17953
+f 17955 17951 17952
+f 17891 17747 17744
+f 17744 17940 17892
+f 17940 17905 17892
+f 17749 17651 17922
+f 17947 17941 17922
+f 17948 17947 17959
+f 17924 17959 17947
+f 17960 17953 17959
+f 17959 17924 17960
+f 17958 17955 17933
+f 17955 17956 17933
+f 17956 17957 17933
+f 17958 17933 17932
+f 17962 17935 17933
+f 17933 17957 17962
+f 17926 17800 17927
+f 17964 17963 17800
+f 17971 17967 17981
+f 17981 17970 17971
+f 17968 17963 17964
+f 17964 17966 17967
+f 17968 17964 17967
+f 17968 17967 17971
+f 17968 17971 17969
+f 17973 17974 17930
+f 17974 17973 17978
+f 17976 17972 17969
+f 17973 17972 17976
+f 17969 17970 17988
+f 17969 17988 17977
+f 17981 17967 17821
+f 17821 17820 17828
+f 17984 17970 17981
+f 17970 17984 17985
+f 17982 17828 17826
+f 17989 17988 17987
+f 17980 17977 17988
+f 18494 17985 17986
+f 18498 17985 18494
+f 17990 17985 18498
+f 17990 18498 18497
+f 17938 17937 17974
+f 17978 17979 17992
+f 17994 17991 17992
+f 17995 17992 17989
+f 17989 17990 17995
+f 17992 17995 17994
+f 17989 17992 17980
+f 17996 17995 17990
+f 17996 17990 18497
+f 17998 17996 18497
+f 17993 17994 19834
+f 19834 17994 17997
+f 18000 19834 17997
+f 18010 18001 17934
+f 17934 18002 18010
+f 17932 17918 17912
+f 19834 18000 18003
+f 18003 17993 19834
+f 17832 15687 15655
+f 18006 18005 18008
+f 18009 11424 18007
+f 18010 18013 18009
+f 18006 18008 18010
+f 11425 11424 18009
+f 16804 16803 18016
+f 16798 18015 16799
+f 16799 18014 16802
+f 18053 18016 18017
+f 16806 18015 16798
+f 18015 16806 18018
+f 16791 18021 16807
+f 18018 16807 18020
+f 18020 18019 18018
+f 18015 18025 18017
+f 18019 18022 18015
+f 18025 18015 18022
+f 18053 18017 19835
+f 18024 18021 18102
+f 18025 18022 19836
+f 18026 18025 19836
+f 19835 18017 18025
+f 19835 18025 18027
+f 18023 19836 18022
+f 19837 18026 19836
+f 19837 19836 18023
+f 18024 19837 18023
+f 18029 18024 18108
+f 19837 18028 18026
+f 18028 19837 18024
+f 18028 18024 18029
+f 18035 18033 18032
+f 18031 18033 18042
+f 18033 18035 18034
+f 18042 18033 18036
+f 18036 18033 18034
+f 16847 18040 16844
+f 16848 18039 16847
+f 18040 16847 18039
+f 18048 18046 18040
+f 18036 18037 18046
+f 18041 18048 18040
+f 19838 18043 18046
+f 18047 19838 18046
+f 18047 18048 18074
+f 18051 18050 18042
+f 18050 18051 17421
+f 17421 18051 18059
+f 18059 18051 18043
+f 18016 18052 16804
+f 18052 18016 18053
+f 18054 18045 18044
+f 18027 18053 19835
+f 18054 18027 18076
+f 18060 18043 19838
+f 18045 18074 18048
+f 18074 18056 18047
+f 18056 18055 19838
+f 19838 18047 18056
+f 18060 19838 18055
+f 18061 18060 18055
+f 18058 19839 18055
+f 19839 18058 18085
+f 18085 18070 19839
+f 17422 18059 18061
+f 18060 18061 18059
+f 17432 17423 18062
+f 17423 17422 18062
+f 18062 18063 18066
+f 18066 18065 18064
+f 18069 17435 18065
+f 17435 18180 17436
+f 18069 18180 17435
+f 19839 18067 18063
+f 18063 18055 19839
+f 18066 18063 18067
+f 18067 18065 18066
+f 18070 18067 19839
+f 18069 18068 18072
+f 18076 18074 18054
+f 18074 18076 18075
+f 18076 18027 18077
+f 18075 18077 18080
+f 18078 18080 18077
+f 18056 18074 18075
+f 18056 18075 18057
+f 18080 18081 18057
+f 18027 18082 18077
+f 18082 18028 18030
+f 18082 18030 18084
+f 18079 18078 18083
+f 18086 18084 18029
+f 18080 18071 18085
+f 18080 18079 18071
+f 18085 18071 18070
+f 18079 18190 18071
+f 18189 18071 18190
+f 18083 18084 18088
+f 18088 18084 18087
+f 18087 18164 18088
+f 18088 18190 18079
+f 18190 18088 18164
+f 18189 18068 18071
+f 18189 18073 18068
+f 18091 18101 16790
+f 18101 16791 16790
+f 16853 18091 16790
+f 19785 18091 16853
+f 18101 18091 18090
+f 19785 18094 18089
+f 18089 18094 18092
+f 18089 18091 19785
+f 18095 16854 16855
+f 18112 18100 18099
+f 16791 18102 18021
+f 18103 18102 18090
+f 19840 18090 18092
+f 18103 18090 19840
+f 18106 18103 19840
+f 18100 19840 18092
+f 18100 18106 19840
+f 18103 18024 18102
+f 18106 18117 18105
+f 18105 18109 18107
+f 18117 18109 18105
+f 18107 18104 18103
+f 18104 18108 18024
+f 18109 18117 18114
+f 18133 18106 18100
+f 18113 18133 18100
+f 18106 18133 18117
+f 18133 18116 18117
+f 18111 18109 18115
+f 18126 18120 18119
+f 18121 11670 11678
+f 11678 18122 18121
+f 18119 18122 18125
+f 18125 18122 18123
+f 18128 18125 18123
+f 18112 18099 18120
+f 19841 18123 18124
+f 18131 19841 18124
+f 18123 19841 18131
+f 18130 18129 18126
+f 18141 18129 18130
+f 18134 18132 18113
+f 18116 18132 18136
+f 18116 18144 18114
+f 18136 18144 18116
+f 18136 18147 18144
+f 18118 18114 18144
+f 18138 18134 18127
+f 18127 18129 18138
+f 18029 18107 18110
+f 18143 18110 18111
+f 18165 18143 18111
+f 18111 18115 18146
+f 18146 18115 18118
+f 18111 18146 18165
+f 18149 18146 18145
+f 18148 18145 18150
+f 18136 18135 18147
+f 18150 18147 18135
+f 18135 18139 18150
+f 18150 18151 18154
+f 18154 18151 18155
+f 18152 18150 18160
+f 18160 18150 18153
+f 18153 18150 18154
+f 18155 18156 18153
+f 18159 18152 18160
+f 18160 18153 18158
+f 18158 18157 18175
+f 18143 18165 18161
+f 18166 18146 18149
+f 18166 18161 18146
+f 18168 18161 18166
+f 18163 18161 18168
+f 18169 18163 18168
+f 18167 18169 18168
+f 18166 18152 18167
+f 18172 18171 18152
+f 18171 18169 18167
+f 18226 18169 18171
+f 18173 18171 18172
+f 18158 18177 18172
+f 18158 18172 18159
+f 18172 18177 18174
+f 18180 18187 18179
+f 18187 18186 18179
+f 17779 18179 18186
+f 18181 18072 18073
+f 19842 18072 18181
+f 19842 18180 18072
+f 18180 19842 18183
+f 18181 18183 19842
+f 18187 18180 18183
+f 18183 18188 18187
+f 18200 18188 18183
+f 18185 18184 19843
+f 18192 18191 18190
+f 18191 18073 18189
+f 18191 18197 18181
+f 18182 18181 18197
+f 18197 18191 18193
+f 18196 18197 18193
+f 18196 18201 18182
+f 18201 18199 18182
+f 18195 18201 18196
+f 18207 18184 18188
+f 19843 18184 18207
+f 18200 18206 18188
+f 18207 18188 18206
+f 18203 18199 18204
+f 18313 18207 18208
+f 18206 18209 18208
+f 18246 18313 18208
+f 18246 18208 18209
+f 18162 18163 18212
+f 18162 18194 18164
+f 18162 18212 18210
+f 18211 18194 18217
+f 18170 18212 18163
+f 18213 18170 18227
+f 18194 18210 18217
+f 18214 18202 18211
+f 18211 18217 18215
+f 18219 18221 18216
+f 18222 18220 18224
+f 18220 18222 18214
+f 18205 18202 18214
+f 18205 18223 18204
+f 18253 18204 18223
+f 18253 18223 18252
+f 18253 18203 18204
+f 18203 18248 18209
+f 18203 18253 18248
+f 18205 18214 18222
+f 18226 18171 18229
+f 18227 18226 18234
+f 18229 18234 18226
+f 18234 18239 18227
+f 18239 18219 18213
+f 18213 18227 18239
+f 18239 18234 18233
+f 18174 18229 18173
+f 18171 18173 18229
+f 18429 18230 18228
+f 18230 18429 18232
+f 18231 18232 18438
+f 18236 18221 18219
+f 18236 18219 18239
+f 18220 18221 18236
+f 18241 18224 18220
+f 18255 18241 18240
+f 18242 18255 18240
+f 18233 18235 19844
+f 19845 19844 18235
+f 18438 18243 18231
+f 18235 18243 19845
+f 18455 19845 18243
+f 18243 18438 18455
+f 19844 19845 19846
+f 19846 18233 19844
+f 18242 18233 19846
+f 18242 19846 19847
+f 19845 19848 19846
+f 19848 19845 18455
+f 19848 18455 18458
+f 19847 19846 19848
+f 19849 18224 18244
+f 18225 18224 19849
+f 18245 18209 18247
+f 18249 18250 18247
+f 18251 18250 18333
+f 18250 18249 18334
+f 18333 18250 18334
+f 18242 18256 18255
+f 19848 18458 18272
+f 19848 18272 18269
+f 19847 19848 18269
+f 18269 18268 19847
+f 19847 18268 18256
+f 18256 18242 19847
+f 19849 18254 18225
+f 18258 18257 18254
+f 18254 19849 18258
+f 18260 19849 18244
+f 18256 18260 18244
+f 18260 18256 18267
+f 18258 19849 18260
+f 18260 18267 18261
+f 18261 18264 18259
+f 18259 18258 18261
+f 18254 18263 18249
+f 18254 18257 18262
+f 18263 18334 18249
+f 18259 18264 18262
+f 18262 18257 18259
+f 18263 18262 18264
+f 18265 18264 18266
+f 18275 18261 18270
+f 18275 18270 18273
+f 18271 18274 18270
+f 18277 18263 18265
+f 18271 18281 18274
+f 18273 18274 18280
+f 18276 18273 18285
+f 18286 18276 18285
+f 18283 18277 18265
+f 18283 18276 18286
+f 18289 18286 18284
+f 18284 18287 18289
+f 18289 18288 18283
+f 18291 17784 17779
+f 18296 18291 18185
+f 19843 18296 18185
+f 19843 18207 18313
+f 18296 19843 18313
+f 17813 17785 18292
+f 18293 17813 18292
+f 17813 17787 17785
+f 18295 17812 17813
+f 18295 17816 17812
+f 17813 18293 18297
+f 18291 18297 18293
+f 18299 18294 18295
+f 18302 18294 18316
+f 18307 17825 18303
+f 17829 17830 17824
+f 19850 17829 17824
+f 19850 17824 18307
+f 18309 17829 19850
+f 18307 18303 19850
+f 19850 18303 18306
+f 18306 18309 19850
+f 18313 18312 18296
+f 18312 18298 18296
+f 18310 18312 18313
+f 18312 18301 18298
+f 18312 18311 18321
+f 18321 18301 18312
+f 18299 18298 18301
+f 18314 18310 18246
+f 18314 18321 18311
+f 18321 18314 18315
+f 18316 18294 18300
+f 18316 18300 18317
+f 18301 18317 18300
+f 18317 18304 18302
+f 18321 18317 18301
+f 18304 18317 18323
+f 18305 18303 18304
+f 18323 18305 18304
+f 18326 18305 18323
+f 18305 18326 18319
+f 18315 18320 18321
+f 18245 18251 18322
+f 18324 18320 18322
+f 18333 18330 18251
+f 18327 18322 18330
+f 18324 18331 18329
+f 18554 18331 18332
+f 18554 18332 18336
+f 18278 18335 18332
+f 18335 18278 18337
+f 18131 18124 18339
+f 11901 18339 11681
+f 18341 11901 11903
+f 11903 18347 18341
+f 18343 18341 18347
+f 18342 18352 18141
+f 18342 18344 18349
+f 18352 18342 18349
+f 11903 11908 18346
+f 11909 18345 11908
+f 18343 18347 18346
+f 18140 18350 18142
+f 18350 18141 18352
+f 18346 18345 18356
+f 19513 18354 18345
+f 18345 11909 19513
+f 18354 18353 18356
+f 18356 18345 18354
+f 18354 19513 11923
+f 11923 18355 18354
+f 18355 18362 18353
+f 18356 18359 18357
+f 18349 18348 18357
+f 18358 18351 18349
+f 18360 18364 18358
+f 18361 18359 18353
+f 18364 18360 18361
+f 18360 18359 18361
+f 18355 18398 18362
+f 18361 18362 18398
+f 18361 18398 18400
+f 18361 18400 18390
+f 18361 18390 18363
+f 18142 18350 18367
+f 18365 18142 18367
+f 18366 18155 18151
+f 18366 18365 18367
+f 18352 18371 18350
+f 18367 18350 18371
+f 18371 18370 18367
+f 18351 18369 18371
+f 18351 18371 18352
+f 18369 18373 18370
+f 18368 18367 18370
+f 18372 18370 18373
+f 18155 18366 19851
+f 18368 19851 18366
+f 19851 18368 18377
+f 19851 18156 18155
+f 18377 18376 18156
+f 18377 18156 19851
+f 18368 18375 18377
+f 18375 18368 18372
+f 18378 18375 18379
+f 18369 18351 18358
+f 18380 18373 18369
+f 18380 18358 18364
+f 18364 18383 18380
+f 18381 18384 18374
+f 18381 18380 18383
+f 18379 18384 18391
+f 19852 18157 18156
+f 18376 19852 18156
+f 19852 18376 18386
+f 18157 19852 18402
+f 18402 18175 18157
+f 18386 18402 19852
+f 18378 18379 18387
+f 18381 18383 18396
+f 18381 18396 18384
+f 18389 18397 18396
+f 18396 18383 18389
+f 18383 18382 18389
+f 18389 18390 18400
+f 18400 18399 18389
+f 18412 18397 18389
+f 18399 18412 18389
+f 18396 18393 18391
+f 18391 18384 18396
+f 18388 18387 18392
+f 18394 19853 18395
+f 18393 19854 18394
+f 19853 18394 19855
+f 18394 19854 19855
+f 18412 19856 19857
+f 19857 18393 18397
+f 19857 18397 18412
+f 19854 18393 19857
+f 18416 19854 19857
+f 19856 18416 19857
+f 18416 18446 19855
+f 19855 19854 18416
+f 18401 18400 18398
+f 11928 18401 18398
+f 18405 18404 18386
+f 18386 18385 18405
+f 18385 18388 18395
+f 18403 18176 18175
+f 18178 18406 18409
+f 18406 18407 18408
+f 19858 18410 18405
+f 18405 18395 19858
+f 18410 19859 18408
+f 18410 18408 18407
+f 19858 18443 19859
+f 19859 18410 19858
+f 19853 19860 18395
+f 19858 18395 19860
+f 19860 19853 19855
+f 18441 18443 19858
+f 18441 19858 19860
+f 19855 18445 19860
+f 18445 19855 18446
+f 18441 19860 18445
+f 18411 18413 19856
+f 19856 18412 18411
+f 18415 18446 18416
+f 18416 19856 18413
+f 18419 18415 18413
+f 18424 18417 18414
+f 18427 18424 18423
+f 18427 18423 18422
+f 18427 18421 18417
+f 18417 18424 18427
+f 18462 18420 18421
+f 18462 18421 18426
+f 18426 18422 18425
+f 18409 18228 18178
+f 18228 18409 18429
+f 18431 18429 18428
+f 18428 18408 19859
+f 18428 19859 19861
+f 19861 19859 18443
+f 19862 18431 18428
+f 18428 19861 19862
+f 18433 19862 19861
+f 19861 18443 18433
+f 18439 18232 18429
+f 18439 18429 18431
+f 18430 18439 18431
+f 18430 18435 18439
+f 19862 18432 18431
+f 18432 19862 18433
+f 18438 18232 18439
+f 18447 18444 18448
+f 18447 18437 18434
+f 18434 18433 18442
+f 18434 18442 18447
+f 18450 18435 18436
+f 18436 18437 18449
+f 18440 18454 18438
+f 18440 18435 18453
+f 18455 18454 18456
+f 18454 18453 18457
+f 18450 18457 18453
+f 18448 18419 18420
+f 18459 18461 18272
+f 18461 18459 18451
+f 18451 18452 18462
+f 18452 18420 18462
+f 18460 18471 18463
+f 18281 18464 18282
+f 18460 18464 18281
+f 18281 18271 18461
+f 18281 18461 18460
+f 18465 18287 18282
+f 18465 18282 18464
+f 18465 18466 18289
+f 18468 18290 18288
+f 18468 18467 18474
+f 18464 18463 18465
+f 18465 18469 18466
+f 18474 18473 18477
+f 18475 18473 18472
+f 18470 18475 18472
+f 18472 18469 18470
+f 18479 18477 18476
+f 18480 18626 18625
+f 18625 18627 18481
+f 18625 18481 18480
+f 18676 18485 19863
+f 18676 18012 18483
+f 18483 18485 18676
+f 19863 18485 18484
+f 12477 19863 18484
+f 18480 18483 18626
+f 17982 17983 18486
+f 18308 18309 18490
+f 18490 18309 18489
+f 17986 18487 18494
+f 18495 18494 18487
+f 18494 18496 18498
+f 18500 18493 18512
+f 18496 18501 18503
+f 18500 18512 18502
+f 18505 18319 18506
+f 18507 18506 18326
+f 18507 19864 18506
+f 18506 19864 19865
+f 18508 18506 19865
+f 18492 18509 18511
+f 18511 18509 18510
+f 18512 18493 18511
+f 18516 18512 18511
+f 18518 18512 18516
+f 18512 18518 18513
+f 18511 18510 18516
+f 18563 18515 18514
+f 18515 18518 18516
+f 18517 18518 18515
+f 18520 17998 18497
+f 18520 18497 18499
+f 17999 17998 18520
+f 17999 18520 18525
+f 18526 18525 18521
+f 18520 18521 18525
+f 18503 18499 18496
+f 18523 18526 18521
+f 18521 18522 18523
+f 18000 17999 18525
+f 18527 18000 18525
+f 18529 18524 18531
+f 18528 18527 18529
+f 18522 18504 18541
+f 18522 18541 18544
+f 18524 18522 18544
+f 18513 18517 18546
+f 18547 18543 18542
+f 18542 18546 18547
+f 18517 18519 18546
+f 18606 18546 18519
+f 18547 18546 18605
+f 18605 18546 18606
+f 18545 18548 18549
+f 18548 18547 18605
+f 18548 18605 18609
+f 18550 18548 18609
+f 18534 18532 18531
+f 18531 18551 18534
+f 18551 18552 18535
+f 18552 18545 18549
+f 18536 18552 18549
+f 18536 18535 18552
+f 18507 18325 18328
+f 18556 19864 18507
+f 18553 18556 18507
+f 18553 18507 18328
+f 19865 19864 18556
+f 18560 18508 19865
+f 18561 18560 19865
+f 18561 18556 18557
+f 19865 18556 18561
+f 18560 18562 18564
+f 18562 18559 18565
+f 18579 18568 18566
+f 18554 18575 18555
+f 19866 18558 18553
+f 19866 18553 18555
+f 18555 18575 19866
+f 18558 19866 18573
+f 18569 18336 18338
+f 18575 18554 18569
+f 18574 19866 18575
+f 18575 18569 18571
+f 18573 19866 18574
+f 18577 18559 18558
+f 18559 18577 18565
+f 18587 18578 18576
+f 18580 18578 18587
+f 18580 18587 18586
+f 18581 18558 18573
+f 18581 18573 18572
+f 18577 18558 18581
+f 18576 18577 18581
+f 18583 18589 18582
+f 18584 18587 18576
+f 18623 18585 18584
+f 18623 18584 18588
+f 18623 18588 18674
+f 18599 18592 18591
+f 18591 18593 18599
+f 18594 18608 18567
+f 18594 18567 18568
+f 18593 18608 18594
+f 18611 18596 18597
+f 18597 18579 18611
+f 18599 18593 18595
+f 18596 18611 18600
+f 18598 18603 18602
+f 18593 18607 18608
+f 18609 18607 18591
+f 18607 18593 18591
+f 18612 18613 18617
+f 18580 18613 18612
+f 18614 18600 18611
+f 18611 18610 18615
+f 18611 18615 18614
+f 18618 18616 18615
+f 18615 18612 18618
+f 18612 18615 18610
+f 18619 18621 19867
+f 19867 18673 18619
+f 18622 18617 18613
+f 18613 18585 18622
+f 18586 18585 18613
+f 19867 18622 18623
+f 19867 18623 18674
+f 18674 18673 19867
+f 18618 18617 18622
+f 18620 18618 18622
+f 18622 18621 18620
+f 19867 18621 18622
+f 18626 18604 18624
+f 18625 18624 18620
+f 18620 18624 18618
+f 18483 18534 18533
+f 18533 18539 18483
+f 18539 18540 18483
+f 18532 18534 18483
+f 18003 18000 18528
+f 18483 18601 18602
+f 18483 18602 18604
+f 18425 11984 12414
+f 18632 18460 18462
+f 18460 18632 18633
+f 18471 18633 18634
+f 18634 18635 18475
+f 18637 18633 18632
+f 18637 19868 19869
+f 19869 18636 18635
+f 19869 18635 18634
+f 19869 18634 18637
+f 19870 18641 18642
+f 18638 18641 19870
+f 18630 18642 18641
+f 18641 18637 18631
+f 18641 18631 18630
+f 18640 19868 18637
+f 18630 18628 18482
+f 18630 18629 18628
+f 18627 18638 19870
+f 18481 18627 19870
+f 19870 18642 18481
+f 18638 18627 18639
+f 12414 12428 18484
+f 12414 18484 18628
+f 18644 18338 18290
+f 18644 18569 18338
+f 18290 18478 18644
+f 18479 18645 18478
+f 18645 18646 18647
+f 18647 18648 18645
+f 18643 18570 18569
+f 18583 18570 18658
+f 18570 18649 18658
+f 19869 18648 18647
+f 18647 18636 19869
+f 19868 18653 18652
+f 18652 18648 19869
+f 18652 19869 19868
+f 18650 18648 18652
+f 19871 18657 18672
+f 19871 18667 18666
+f 18657 18666 18655
+f 18666 18657 19871
+f 18572 18570 18583
+f 18589 18658 18659
+f 18658 18654 18661
+f 18662 18589 18659
+f 18674 18588 18662
+f 18675 18674 18662
+f 18675 18663 18664
+f 18663 18675 18662
+f 18665 18663 18660
+f 18659 18660 18663
+f 18656 18665 18660
+f 18660 18661 18656
+f 18665 18656 18655
+f 18664 18665 18666
+f 18640 18669 18671
+f 18671 18653 19868
+f 18671 19868 18640
+f 18668 18653 18671
+f 18654 18651 18668
+f 18672 18657 18669
+f 18672 18669 18640
+f 18672 18640 18639
+f 18670 18669 18657
+f 18639 18627 18619
+f 18619 18673 19871
+f 18673 18675 18664
+f 18673 18664 18667
+f 18673 18667 19871
+f 18619 19871 18672
+f 18676 19863 12471
+f 12471 11425 18011
+f 18676 18011 18012
+f 12477 12471 19863
+f 18679 19789 19790
+f 19790 17082 19872
+f 19872 17082 17086
+f 18677 17093 17092
+f 18680 17092 18679
+f 18680 18689 18686
+f 17094 17093 18681
+f 18678 18681 18677
+f 18681 18678 18684
+f 18682 18681 18683
+f 18687 18678 18680
+f 18685 18678 18687
+f 18685 18687 18696
+f 18679 19790 18689
+f 19872 18689 19790
+f 18689 18680 18679
+f 18691 18689 19872
+f 18690 19872 17086
+f 18691 19872 18690
+f 18690 17108 17110
+f 18701 18690 17110
+f 18701 18699 18690
+f 18692 18690 18699
+f 18693 18689 18691
+f 18688 18694 18711
+f 18698 18695 18688
+f 18711 18697 18688
+f 18700 18704 18692
+f 18703 18701 17113
+f 18699 18701 18703
+f 17113 17151 18703
+f 18705 18699 18703
+f 18700 18699 18705
+f 18708 18700 18705
+f 18700 18708 18704
+f 18713 18704 18709
+f 18710 18813 18711
+f 18694 18704 18713
+f 19873 18713 18709
+f 19874 18712 18713
+f 19874 18820 18712
+f 18711 18813 18697
+f 18712 18813 18710
+f 18706 17170 18707
+f 18715 18717 18714
+f 17170 18724 18715
+f 18718 18716 18717
+f 19874 18713 19873
+f 18716 19873 18709
+f 19873 18716 19874
+f 18720 19874 18716
+f 18720 18830 19874
+f 18830 18720 18732
+f 18820 19874 18830
+f 17317 17321 18722
+f 18727 18718 18717
+f 18727 18717 18723
+f 18723 18725 18727
+f 18731 18719 18718
+f 18733 18725 18728
+f 18725 18733 18726
+f 17337 17336 18728
+f 18718 18727 18730
+f 18732 18731 18739
+f 18891 18732 18739
+f 18735 18721 18728
+f 18728 18729 18735
+f 18737 18730 18726
+f 18726 18736 18737
+f 18734 18721 18722
+f 18722 18754 18736
+f 18737 18736 18740
+f 18736 18754 18740
+f 18741 18763 18742
+f 18745 17386 18746
+f 17389 18746 17387
+f 17383 17384 18745
+f 17383 18745 18744
+f 18749 18746 19875
+f 18768 18744 18745
+f 18749 18768 18745
+f 18774 18749 19875
+f 19875 18746 18747
+f 19875 18747 18751
+f 18752 18774 19875
+f 19875 18751 18752
+f 18752 18751 18750
+f 18760 18740 18754
+f 18754 18755 18760
+f 18756 18760 18755
+f 18744 18758 18756
+f 18757 18756 18758
+f 18759 18758 18769
+f 18763 18741 18761
+f 18760 18756 18761
+f 18944 18764 18763
+f 18763 18765 18944
+f 18757 18759 18766
+f 18765 18761 18757
+f 18766 18765 18757
+f 18778 18766 18759
+f 18767 18944 18765
+f 18767 18766 18778
+f 18768 18758 18744
+f 18769 18768 18749
+f 18769 18749 18774
+f 18769 18774 18771
+f 18773 18759 18769
+f 18773 18769 18771
+f 18775 18771 18774
+f 18776 18775 17746
+f 18776 17746 17391
+f 18772 18777 18770
+f 18777 18772 18780
+f 18949 18779 18777
+f 18777 18780 18949
+f 18778 18759 18773
+f 18779 18767 18778
+f 17390 18949 18780
+f 18748 17389 17733
+f 18750 18781 18753
+f 18683 18684 18782
+f 18783 17833 15669
+f 18785 18783 18782
+f 19876 18782 18684
+f 18684 18685 19876
+f 18782 19876 18786
+f 19876 18685 18696
+f 19876 18696 18786
+f 19877 18788 18783
+f 18783 18785 19877
+f 19877 18785 18784
+f 18792 19877 18784
+f 18784 18787 18792
+f 18786 18789 18790
+f 18790 18793 19878
+f 18793 18695 18698
+f 18794 18793 18698
+f 18794 18697 18814
+f 19879 19878 18793
+f 18793 18794 19879
+f 19879 18794 19880
+f 19880 18794 18814
+f 19880 18814 18825
+f 19878 18791 18790
+f 18791 19878 19881
+f 19882 19878 19879
+f 19879 19880 19882
+f 19882 19880 18825
+f 19882 18825 18824
+f 18801 19881 19878
+f 19878 19882 18801
+f 18803 18801 19882
+f 19882 18824 18803
+f 18795 17860 18788
+f 18795 18788 19877
+f 19877 18792 18798
+f 19877 18798 18795
+f 17860 18795 17861
+f 18797 18798 18792
+f 18792 18791 18797
+f 18791 19881 18800
+f 18797 18800 18806
+f 18800 19881 18801
+f 18802 18801 18803
+f 18806 18800 18802
+f 18806 18802 18808
+f 18811 18808 18802
+f 18802 18804 18811
+f 18868 18812 18809
+f 18809 18810 18868
+f 18814 18813 18817
+f 18815 18817 18813
+f 18825 18814 18817
+f 18825 18817 18816
+f 18820 18815 18712
+f 18826 18827 19883
+f 18829 18821 18828
+f 19883 18827 18829
+f 19883 18829 18828
+f 19883 18828 18849
+f 18829 18827 18818
+f 18831 18819 18820
+f 18831 19884 18819
+f 18819 19884 18822
+f 18831 18832 19884
+f 18822 19884 18836
+f 19884 18832 18839
+f 18836 19884 18839
+f 18832 18892 18839
+f 18833 18828 18822
+f 18834 18833 18822
+f 18822 18836 18834
+f 18849 18828 18833
+f 18849 18833 18835
+f 18852 18835 18834
+f 18834 18837 18852
+f 18840 18852 18837
+f 18804 18826 19883
+f 18804 19883 18842
+f 18842 19883 18849
+f 18844 18845 18846
+f 18868 18810 18846
+f 18841 18843 18845
+f 18848 18845 18843
+f 18847 18848 18857
+f 18851 18842 18835
+f 18856 18843 18842
+f 18856 18842 18851
+f 18856 18851 18853
+f 18850 18840 18923
+f 18853 18850 18860
+f 18923 18860 18850
+f 18855 18848 18843
+f 18843 18856 18855
+f 18856 18853 18854
+f 18853 18860 18854
+f 18889 18858 18854
+f 18889 18854 18859
+f 17867 17865 17861
+f 17867 17861 18796
+f 18796 18862 17867
+f 17867 18862 18864
+f 17867 18864 17868
+f 18865 18866 18864
+f 18875 18882 18876
+f 18871 17877 17868
+f 18874 18871 18875
+f 18877 18846 18881
+f 18872 18870 18883
+f 18877 18883 18870
+f 18881 18880 18883
+f 18881 18883 18877
+f 18881 18846 18847
+f 18881 18847 18878
+f 18875 18883 18880
+f 18875 18880 18878
+f 18878 18879 18882
+f 18876 18884 18885
+f 18885 18884 18890
+f 18885 18890 18886
+f 17881 17879 18874
+f 17881 18874 18888
+f 18885 18888 18874
+f 17911 17881 18888
+f 17911 18888 18887
+f 18884 18882 18879
+f 18858 18884 18879
+f 18884 18858 18889
+f 18894 18891 18739
+f 18830 18732 18891
+f 18891 18896 18892
+f 18839 18892 18899
+f 18899 18892 18896
+f 18895 18899 18896
+f 18893 18896 18891
+f 18838 18839 18899
+f 18900 18840 18895
+f 18901 18900 18895
+f 18901 18893 18897
+f 18901 18897 18903
+f 18902 18901 18903
+f 18904 18903 18906
+f 18738 18909 18894
+f 18738 18742 18909
+f 18742 18762 18908
+f 18912 18908 18913
+f 18919 18911 18910
+f 18919 18910 18951
+f 18894 18909 18898
+f 18909 18915 18898
+f 18898 18915 18916
+f 18918 18916 18915
+f 18905 18907 18916
+f 18916 18918 18917
+f 18911 18918 18915
+f 18919 18917 18918
+f 18939 18922 18921
+f 18921 18932 18939
+f 18925 18923 18900
+f 18925 18900 18902
+f 18925 18902 18927
+f 18927 18902 18904
+f 18928 18927 18904
+f 18930 18926 18927
+f 18930 18927 18928
+f 18930 18932 18921
+f 18921 18926 18930
+f 18941 18951 18940
+f 18919 18935 18934
+f 18941 18935 18919
+f 18919 18951 18941
+f 18939 18932 18933
+f 18937 18941 18940
+f 18942 18929 18905
+f 18905 18917 18942
+f 18942 18917 18934
+f 18762 18764 18943
+f 18945 18943 18764
+f 18913 18908 18943
+f 18913 18943 18945
+f 18946 18945 18944
+f 18944 18767 18946
+f 18767 18779 18946
+f 18948 18945 18946
+f 18951 19885 18952
+f 18910 18913 18945
+f 18910 18945 18948
+f 18910 18948 19885
+f 18910 19885 18951
+f 17904 18952 19885
+f 17904 19885 18947
+f 18947 18950 17904
+f 18947 19885 18948
+f 18949 17895 17897
+f 18922 18887 18886
+f 18886 18890 18920
+f 18890 18889 18920
+f 18886 18920 18922
+f 18887 18922 18939
+f 17911 18936 18938
+f 12488 12495 12492
+f 14602 19680 16141
+f 14590 14589 14586
+f 18128 18126 18125
+f 13822 14474 14473
+f 559 557 540
+f 12936 12935 12889
+f 2890 2904 19081
+f 19746 15796 15854
+f 15854 15795 19746
diff --git a/meshes/rectangle.obj b/meshes/rectangle.obj
new file mode 100644
index 0000000..ceb42d9
--- /dev/null
+++ b/meshes/rectangle.obj
@@ -0,0 +1,686 @@
+# Blender v2.92.0 OBJ File: ''
+# www.blender.org
+o Cube
+v 1.000000 5.000000 -1.000000
+v 1.000000 -5.000000 -1.000000
+v 1.000000 5.000000 1.000000
+v 1.000000 -5.000000 1.000000
+v -1.000000 5.000000 -1.000000
+v -1.000000 -5.000000 -1.000000
+v -1.000000 5.000000 1.000000
+v -1.000000 -5.000000 1.000000
+v -1.000000 -5.000000 0.000000
+v 0.000000 -5.000000 -1.000000
+v 1.000000 0.000000 -1.000000
+v -1.000000 0.000000 1.000000
+v 1.000000 0.000000 1.000000
+v -1.000000 0.000000 -1.000000
+v 0.000000 5.000000 1.000000
+v 1.000000 5.000000 0.000000
+v 0.000000 -5.000000 1.000000
+v -1.000000 5.000000 0.000000
+v 0.000000 5.000000 -1.000000
+v 1.000000 -5.000000 0.000000
+v 0.000000 0.000000 -1.000000
+v 1.000000 0.000000 0.000000
+v 0.000000 -5.000000 0.000000
+v -1.000000 0.000000 0.000000
+v 0.000000 0.000000 1.000000
+v 0.000000 5.000000 0.000000
+v -1.000000 -5.000000 0.500000
+v -0.500000 -5.000000 -1.000000
+v 1.000000 -2.500000 -1.000000
+v -1.000000 2.500000 1.000000
+v 1.000000 -2.500000 1.000000
+v -1.000000 -2.500000 -1.000000
+v -0.500000 5.000000 1.000000
+v 1.000000 5.000000 0.500000
+v 0.500000 -5.000000 1.000000
+v -1.000000 5.000000 -0.500000
+v 0.500000 5.000000 -1.000000
+v 1.000000 -5.000000 -0.500000
+v -1.000000 -5.000000 -0.500000
+v 0.500000 -5.000000 -1.000000
+v 1.000000 2.500000 -1.000000
+v -1.000000 -2.500000 1.000000
+v 1.000000 2.500000 1.000000
+v -1.000000 2.500000 -1.000000
+v 0.500000 5.000000 1.000000
+v 1.000000 5.000000 -0.500000
+v -0.500000 -5.000000 1.000000
+v -1.000000 5.000000 0.500000
+v -0.500000 5.000000 -1.000000
+v 1.000000 -5.000000 0.500000
+v 0.500000 0.000000 -1.000000
+v -0.500000 0.000000 -1.000000
+v 0.000000 -2.500000 -1.000000
+v 0.000000 2.500000 -1.000000
+v 1.000000 0.000000 0.500000
+v 1.000000 0.000000 -0.500000
+v 1.000000 -2.500000 0.000000
+v 1.000000 2.500000 0.000000
+v 0.000000 -5.000000 0.500000
+v 0.000000 -5.000000 -0.500000
+v -0.500000 -5.000000 0.000000
+v 0.500000 -5.000000 0.000000
+v -1.000000 0.000000 -0.500000
+v -1.000000 0.000000 0.500000
+v -1.000000 -2.500000 0.000000
+v -1.000000 2.500000 0.000000
+v -0.500000 0.000000 1.000000
+v 0.500000 0.000000 1.000000
+v 0.000000 -2.500000 1.000000
+v 0.000000 2.500000 1.000000
+v 0.000000 5.000000 0.500000
+v 0.000000 5.000000 -0.500000
+v 0.500000 5.000000 0.000000
+v -0.500000 5.000000 0.000000
+v -0.500000 5.000000 -0.500000
+v 0.500000 5.000000 -0.500000
+v 0.500000 5.000000 0.500000
+v 0.500000 2.500000 1.000000
+v 0.500000 -2.500000 1.000000
+v -0.500000 -2.500000 1.000000
+v -1.000000 2.500000 0.500000
+v -1.000000 -2.500000 0.500000
+v -1.000000 -2.500000 -0.500000
+v 0.500000 -5.000000 -0.500000
+v -0.500000 -5.000000 -0.500000
+v -0.500000 -5.000000 0.500000
+v 1.000000 2.500000 -0.500000
+v 1.000000 -2.500000 -0.500000
+v 1.000000 -2.500000 0.500000
+v -0.500000 2.500000 -1.000000
+v -0.500000 -2.500000 -1.000000
+v 0.500000 -2.500000 -1.000000
+v 0.500000 2.500000 -1.000000
+v 1.000000 2.500000 0.500000
+v 0.500000 -5.000000 0.500000
+v -1.000000 2.500000 -0.500000
+v -0.500000 2.500000 1.000000
+v -0.500000 5.000000 0.500000
+v -1.000000 -3.750000 -1.000000
+v -1.000000 1.250000 -1.000000
+v -1.000000 -1.250000 -1.000000
+v -1.000000 3.750000 -1.000000
+v 1.000000 1.250000 -1.000000
+v 1.000000 -1.250000 -1.000000
+v 1.000000 3.750000 -1.000000
+v 1.000000 -3.750000 -1.000000
+v -1.000000 3.750000 1.000000
+v -1.000000 -1.250000 1.000000
+v -1.000000 1.250000 1.000000
+v -1.000000 -3.750000 1.000000
+v 1.000000 -3.750000 1.000000
+v 1.000000 1.250000 1.000000
+v 1.000000 -1.250000 1.000000
+v 1.000000 3.750000 1.000000
+v 0.500000 1.250000 1.000000
+v 0.500000 3.750000 1.000000
+v 0.500000 -3.750000 1.000000
+v 0.500000 -1.250000 1.000000
+v 0.000000 -3.750000 1.000000
+v 0.000000 1.250000 1.000000
+v 0.000000 -1.250000 1.000000
+v 0.000000 3.750000 1.000000
+v -0.500000 -3.750000 1.000000
+v -0.500000 -1.250000 1.000000
+v -0.500000 1.250000 1.000000
+v -0.500000 3.750000 1.000000
+v 1.000000 -3.750000 0.500000
+v 1.000000 -1.250000 0.500000
+v 1.000000 1.250000 0.500000
+v 1.000000 3.750000 0.500000
+v 1.000000 -3.750000 0.000000
+v 1.000000 1.250000 0.000000
+v 1.000000 -1.250000 0.000000
+v 1.000000 3.750000 0.000000
+v 1.000000 1.250000 -0.500000
+v 1.000000 3.750000 -0.500000
+v 1.000000 -3.750000 -0.500000
+v 1.000000 -1.250000 -0.500000
+v 0.500000 -3.750000 -1.000000
+v 0.500000 -1.250000 -1.000000
+v 0.500000 1.250000 -1.000000
+v 0.500000 3.750000 -1.000000
+v 0.000000 -3.750000 -1.000000
+v 0.000000 1.250000 -1.000000
+v 0.000000 -1.250000 -1.000000
+v 0.000000 3.750000 -1.000000
+v -0.500000 1.250000 -1.000000
+v -0.500000 3.750000 -1.000000
+v -0.500000 -3.750000 -1.000000
+v -0.500000 -1.250000 -1.000000
+v -1.000000 -3.750000 -0.500000
+v -1.000000 -1.250000 -0.500000
+v -1.000000 1.250000 -0.500000
+v -1.000000 3.750000 -0.500000
+v -1.000000 -3.750000 0.000000
+v -1.000000 1.250000 0.000000
+v -1.000000 -1.250000 0.000000
+v -1.000000 3.750000 0.000000
+v -1.000000 1.250000 0.500000
+v -1.000000 3.750000 0.500000
+v -1.000000 -3.750000 0.500000
+v -1.000000 -1.250000 0.500000
+vt 0.875000 0.687500
+vt 0.812500 0.750000
+vt 0.812500 0.687500
+vt 0.593750 0.937500
+vt 0.625000 1.000000
+vt 0.593750 1.000000
+vt 0.593750 0.187500
+vt 0.625000 0.250000
+vt 0.593750 0.250000
+vt 0.375000 0.687500
+vt 0.312500 0.750000
+vt 0.312500 0.687500
+vt 0.593750 0.687500
+vt 0.625000 0.750000
+vt 0.593750 0.750000
+vt 0.593750 0.437500
+vt 0.625000 0.500000
+vt 0.593750 0.500000
+vt 0.468750 0.437500
+vt 0.500000 0.500000
+vt 0.468750 0.500000
+vt 0.468750 0.312500
+vt 0.500000 0.375000
+vt 0.468750 0.375000
+vt 0.593750 0.312500
+vt 0.625000 0.375000
+vt 0.593750 0.375000
+vt 0.468750 0.687500
+vt 0.500000 0.750000
+vt 0.468750 0.750000
+vt 0.468750 0.562500
+vt 0.500000 0.625000
+vt 0.468750 0.625000
+vt 0.593750 0.562500
+vt 0.625000 0.625000
+vt 0.593750 0.625000
+vt 0.250000 0.687500
+vt 0.187500 0.750000
+vt 0.187500 0.687500
+vt 0.250000 0.562500
+vt 0.187500 0.625000
+vt 0.187500 0.562500
+vt 0.375000 0.562500
+vt 0.312500 0.625000
+vt 0.312500 0.562500
+vt 0.468750 0.187500
+vt 0.500000 0.250000
+vt 0.468750 0.250000
+vt 0.468750 0.062500
+vt 0.500000 0.125000
+vt 0.468750 0.125000
+vt 0.593750 0.062500
+vt 0.625000 0.125000
+vt 0.593750 0.125000
+vt 0.468750 0.937500
+vt 0.500000 1.000000
+vt 0.468750 1.000000
+vt 0.468750 0.812500
+vt 0.500000 0.875000
+vt 0.468750 0.875000
+vt 0.593750 0.812500
+vt 0.625000 0.875000
+vt 0.593750 0.875000
+vt 0.750000 0.687500
+vt 0.687500 0.750000
+vt 0.687500 0.687500
+vt 0.750000 0.562500
+vt 0.687500 0.625000
+vt 0.687500 0.562500
+vt 0.875000 0.562500
+vt 0.812500 0.625000
+vt 0.812500 0.562500
+vt 0.750000 0.625000
+vt 0.812500 0.500000
+vt 0.750000 0.500000
+vt 0.875000 0.500000
+vt 0.625000 0.562500
+vt 0.687500 0.500000
+vt 0.625000 0.687500
+vt 0.531250 0.812500
+vt 0.562500 0.875000
+vt 0.531250 0.875000
+vt 0.531250 0.750000
+vt 0.562500 0.812500
+vt 0.625000 0.812500
+vt 0.406250 0.812500
+vt 0.437500 0.875000
+vt 0.406250 0.875000
+vt 0.406250 0.750000
+vt 0.437500 0.812500
+vt 0.500000 0.812500
+vt 0.406250 0.937500
+vt 0.437500 1.000000
+vt 0.406250 1.000000
+vt 0.437500 0.937500
+vt 0.500000 0.937500
+vt 0.531250 0.062500
+vt 0.562500 0.125000
+vt 0.531250 0.125000
+vt 0.531250 0.000000
+vt 0.562500 0.062500
+vt 0.593750 0.000000
+vt 0.625000 0.062500
+vt 0.406250 0.062500
+vt 0.437500 0.125000
+vt 0.406250 0.125000
+vt 0.406250 0.000000
+vt 0.437500 0.062500
+vt 0.468750 0.000000
+vt 0.500000 0.062500
+vt 0.406250 0.187500
+vt 0.437500 0.250000
+vt 0.406250 0.250000
+vt 0.437500 0.187500
+vt 0.500000 0.187500
+vt 0.250000 0.625000
+vt 0.312500 0.500000
+vt 0.250000 0.500000
+vt 0.375000 0.500000
+vt 0.125000 0.625000
+vt 0.125000 0.562500
+vt 0.187500 0.500000
+vt 0.125000 0.500000
+vt 0.125000 0.750000
+vt 0.125000 0.687500
+vt 0.531250 0.562500
+vt 0.562500 0.625000
+vt 0.531250 0.625000
+vt 0.531250 0.500000
+vt 0.562500 0.562500
+vt 0.406250 0.562500
+vt 0.437500 0.625000
+vt 0.406250 0.625000
+vt 0.406250 0.500000
+vt 0.437500 0.562500
+vt 0.500000 0.562500
+vt 0.406250 0.687500
+vt 0.437500 0.750000
+vt 0.437500 0.687500
+vt 0.500000 0.687500
+vt 0.531250 0.312500
+vt 0.562500 0.375000
+vt 0.531250 0.375000
+vt 0.531250 0.250000
+vt 0.562500 0.312500
+vt 0.625000 0.312500
+vt 0.406250 0.312500
+vt 0.437500 0.375000
+vt 0.406250 0.375000
+vt 0.437500 0.312500
+vt 0.500000 0.312500
+vt 0.406250 0.437500
+vt 0.437500 0.500000
+vt 0.437500 0.437500
+vt 0.500000 0.437500
+vt 0.531250 0.437500
+vt 0.562500 0.500000
+vt 0.562500 0.437500
+vt 0.625000 0.437500
+vt 0.531250 0.687500
+vt 0.562500 0.750000
+vt 0.562500 0.687500
+vt 0.250000 0.750000
+vt 0.375000 0.625000
+vt 0.531250 0.187500
+vt 0.562500 0.250000
+vt 0.562500 0.187500
+vt 0.625000 0.187500
+vt 0.531250 0.937500
+vt 0.562500 1.000000
+vt 0.531250 1.000000
+vt 0.562500 0.937500
+vt 0.625000 0.937500
+vt 0.750000 0.750000
+vt 0.875000 0.625000
+vt 0.875000 0.750000
+vt 0.375000 0.750000
+vt 0.375000 0.875000
+vt 0.375000 0.812500
+vt 0.375000 1.000000
+vt 0.375000 0.937500
+vt 0.500000 0.000000
+vt 0.562500 0.000000
+vt 0.625000 0.000000
+vt 0.375000 0.125000
+vt 0.375000 0.062500
+vt 0.375000 0.000000
+vt 0.437500 0.000000
+vt 0.375000 0.250000
+vt 0.375000 0.187500
+vt 0.375000 0.375000
+vt 0.375000 0.312500
+vt 0.375000 0.437500
+vn 0.0000 1.0000 0.0000
+vn 0.0000 0.0000 1.0000
+vn -1.0000 0.0000 0.0000
+vn 0.0000 -1.0000 0.0000
+vn 1.0000 0.0000 0.0000
+vn 0.0000 0.0000 -1.0000
+usemtl Material
+s off
+f 48/1/1 33/2/1 98/3/1
+f 126/4/2 7/5/2 107/6/2
+f 154/7/3 5/8/3 102/9/3
+f 50/10/4 35/11/4 95/12/4
+f 130/13/5 3/14/5 114/15/5
+f 142/16/6 1/17/6 105/18/6
+f 140/19/6 11/20/6 104/21/6
+f 150/22/6 21/23/6 145/24/6
+f 148/25/6 19/26/6 146/27/6
+f 128/28/5 13/29/5 113/30/5
+f 138/31/5 22/32/5 133/33/5
+f 136/34/5 16/35/5 134/36/5
+f 59/37/4 47/38/4 86/39/4
+f 60/40/4 61/41/4 85/42/4
+f 38/43/4 62/44/4 84/45/4
+f 152/46/3 14/47/3 101/48/3
+f 162/49/3 24/50/3 157/51/3
+f 160/52/3 18/53/3 158/54/3
+f 124/55/2 12/56/2 108/57/2
+f 118/58/2 25/59/2 121/60/2
+f 116/61/2 15/62/2 122/63/2
+f 71/64/1 45/65/1 77/66/1
+f 72/67/1 73/68/1 76/69/1
+f 36/70/1 74/71/1 75/72/1
+f 75/72/1 26/73/1 72/67/1
+f 49/74/1 72/67/1 19/75/1
+f 5/76/1 75/72/1 49/74/1
+f 76/69/1 16/35/1 46/77/1
+f 37/78/1 46/77/1 1/17/1
+f 19/75/1 76/69/1 37/78/1
+f 77/66/1 3/14/1 34/79/1
+f 73/68/1 34/79/1 16/35/1
+f 26/73/1 77/66/1 73/68/1
+f 115/80/2 70/81/2 120/82/2
+f 112/83/2 78/84/2 115/80/2
+f 114/15/2 45/85/2 116/61/2
+f 117/86/2 69/87/2 119/88/2
+f 111/89/2 79/90/2 117/86/2
+f 113/30/2 68/91/2 118/58/2
+f 123/92/2 42/93/2 110/94/2
+f 119/88/2 80/95/2 123/92/2
+f 121/60/2 67/96/2 124/55/2
+f 159/97/3 66/98/3 156/99/3
+f 109/100/3 81/101/3 159/97/3
+f 107/102/3 48/103/3 160/52/3
+f 161/104/3 65/105/3 155/106/3
+f 110/107/3 82/108/3 161/104/3
+f 108/109/3 64/110/3 162/49/3
+f 151/111/3 32/112/3 99/113/3
+f 155/106/3 83/114/3 151/111/3
+f 157/51/3 63/115/3 152/46/3
+f 84/45/4 23/116/4 60/40/4
+f 40/117/4 60/40/4 10/118/4
+f 2/119/4 84/45/4 40/117/4
+f 85/42/4 9/120/4 39/121/4
+f 28/122/4 39/121/4 6/123/4
+f 10/118/4 85/42/4 28/122/4
+f 86/39/4 8/124/4 27/125/4
+f 61/41/4 27/125/4 9/120/4
+f 23/116/4 86/39/4 61/41/4
+f 135/126/5 58/127/5 132/128/5
+f 103/129/5 87/130/5 135/126/5
+f 105/18/5 46/77/5 136/34/5
+f 137/131/5 57/132/5 131/133/5
+f 106/134/5 88/135/5 137/131/5
+f 104/21/5 56/136/5 138/31/5
+f 127/137/5 31/138/5 111/89/5
+f 131/133/5 89/139/5 127/137/5
+f 133/33/5 55/140/5 128/28/5
+f 147/141/6 54/142/6 144/143/6
+f 100/144/6 90/145/6 147/141/6
+f 102/9/6 49/146/6 148/25/6
+f 149/147/6 53/148/6 143/149/6
+f 99/113/6 91/150/6 149/147/6
+f 101/48/6 52/151/6 150/22/6
+f 139/152/6 29/153/6 106/134/6
+f 143/149/6 92/154/6 139/152/6
+f 145/24/6 51/155/6 140/19/6
+f 141/156/6 41/157/6 103/129/6
+f 144/143/6 93/158/6 141/156/6
+f 146/27/6 37/159/6 142/16/6
+f 129/160/5 43/161/5 112/83/5
+f 132/128/5 94/162/5 129/160/5
+f 134/36/5 34/79/5 130/13/5
+f 95/12/4 17/163/4 59/37/4
+f 62/44/4 59/37/4 23/116/4
+f 20/164/4 95/12/4 62/44/4
+f 153/165/3 44/166/3 100/144/3
+f 156/99/3 96/167/3 153/165/3
+f 158/54/3 36/168/3 154/7/3
+f 125/169/2 30/170/2 109/171/2
+f 120/82/2 97/172/2 125/169/2
+f 122/63/2 33/173/2 126/4/2
+f 98/3/1 15/174/1 71/64/1
+f 74/71/1 71/64/1 26/73/1
+f 18/175/1 98/3/1 74/71/1
+f 48/1/1 7/176/1 33/2/1
+f 30/170/2 97/172/2 126/4/2
+f 126/4/2 33/173/2 7/5/2
+f 107/6/2 30/170/2 126/4/2
+f 44/166/3 96/167/3 154/7/3
+f 154/7/3 36/168/3 5/8/3
+f 102/9/3 44/166/3 154/7/3
+f 50/10/4 4/177/4 35/11/4
+f 43/161/5 94/162/5 130/13/5
+f 130/13/5 34/79/5 3/14/5
+f 114/15/5 43/161/5 130/13/5
+f 41/157/6 93/158/6 142/16/6
+f 142/16/6 37/159/6 1/17/6
+f 105/18/6 41/157/6 142/16/6
+f 29/153/6 92/154/6 140/19/6
+f 140/19/6 51/155/6 11/20/6
+f 104/21/6 29/153/6 140/19/6
+f 53/148/6 91/150/6 150/22/6
+f 150/22/6 52/151/6 21/23/6
+f 145/24/6 53/148/6 150/22/6
+f 54/142/6 90/145/6 148/25/6
+f 148/25/6 49/146/6 19/26/6
+f 146/27/6 54/142/6 148/25/6
+f 31/138/5 89/139/5 128/28/5
+f 128/28/5 55/140/5 13/29/5
+f 113/30/5 31/138/5 128/28/5
+f 57/132/5 88/135/5 138/31/5
+f 138/31/5 56/136/5 22/32/5
+f 133/33/5 57/132/5 138/31/5
+f 58/127/5 87/130/5 136/34/5
+f 136/34/5 46/77/5 16/35/5
+f 134/36/5 58/127/5 136/34/5
+f 59/37/4 17/163/4 47/38/4
+f 60/40/4 23/116/4 61/41/4
+f 38/43/4 20/164/4 62/44/4
+f 32/112/3 83/114/3 152/46/3
+f 152/46/3 63/115/3 14/47/3
+f 101/48/3 32/112/3 152/46/3
+f 65/105/3 82/108/3 162/49/3
+f 162/49/3 64/110/3 24/50/3
+f 157/51/3 65/105/3 162/49/3
+f 66/98/3 81/101/3 160/52/3
+f 160/52/3 48/103/3 18/53/3
+f 158/54/3 66/98/3 160/52/3
+f 42/93/2 80/95/2 124/55/2
+f 124/55/2 67/96/2 12/56/2
+f 108/57/2 42/93/2 124/55/2
+f 69/87/2 79/90/2 118/58/2
+f 118/58/2 68/91/2 25/59/2
+f 121/60/2 69/87/2 118/58/2
+f 70/81/2 78/84/2 116/61/2
+f 116/61/2 45/85/2 15/62/2
+f 122/63/2 70/81/2 116/61/2
+f 71/64/1 15/174/1 45/65/1
+f 72/67/1 26/73/1 73/68/1
+f 36/70/1 18/175/1 74/71/1
+f 75/72/1 74/71/1 26/73/1
+f 49/74/1 75/72/1 72/67/1
+f 5/76/1 36/70/1 75/72/1
+f 76/69/1 73/68/1 16/35/1
+f 37/78/1 76/69/1 46/77/1
+f 19/75/1 72/67/1 76/69/1
+f 77/66/1 45/65/1 3/14/1
+f 73/68/1 77/66/1 34/79/1
+f 26/73/1 71/64/1 77/66/1
+f 25/59/2 68/91/2 115/80/2
+f 115/80/2 78/84/2 70/81/2
+f 120/82/2 25/59/2 115/80/2
+f 68/91/2 13/29/2 112/83/2
+f 112/83/2 43/161/2 78/84/2
+f 115/80/2 68/91/2 112/83/2
+f 78/84/2 43/161/2 114/15/2
+f 114/15/2 3/14/2 45/85/2
+f 116/61/2 78/84/2 114/15/2
+f 17/178/2 35/179/2 117/86/2
+f 117/86/2 79/90/2 69/87/2
+f 119/88/2 17/178/2 117/86/2
+f 35/179/2 4/177/2 111/89/2
+f 111/89/2 31/138/2 79/90/2
+f 117/86/2 35/179/2 111/89/2
+f 79/90/2 31/138/2 113/30/2
+f 113/30/2 13/29/2 68/91/2
+f 118/58/2 79/90/2 113/30/2
+f 8/180/2 47/181/2 123/92/2
+f 123/92/2 80/95/2 42/93/2
+f 110/94/2 8/180/2 123/92/2
+f 47/181/2 17/178/2 119/88/2
+f 119/88/2 69/87/2 80/95/2
+f 123/92/2 47/181/2 119/88/2
+f 80/95/2 69/87/2 121/60/2
+f 121/60/2 25/59/2 67/96/2
+f 124/55/2 80/95/2 121/60/2
+f 24/50/3 64/110/3 159/97/3
+f 159/97/3 81/101/3 66/98/3
+f 156/99/3 24/50/3 159/97/3
+f 64/110/3 12/182/3 109/100/3
+f 109/100/3 30/183/3 81/101/3
+f 159/97/3 64/110/3 109/100/3
+f 81/101/3 30/183/3 107/102/3
+f 107/102/3 7/184/3 48/103/3
+f 160/52/3 81/101/3 107/102/3
+f 9/185/3 27/186/3 161/104/3
+f 161/104/3 82/108/3 65/105/3
+f 155/106/3 9/185/3 161/104/3
+f 27/186/3 8/187/3 110/107/3
+f 110/107/3 42/188/3 82/108/3
+f 161/104/3 27/186/3 110/107/3
+f 82/108/3 42/188/3 108/109/3
+f 108/109/3 12/182/3 64/110/3
+f 162/49/3 82/108/3 108/109/3
+f 6/189/3 39/190/3 151/111/3
+f 151/111/3 83/114/3 32/112/3
+f 99/113/3 6/189/3 151/111/3
+f 39/190/3 9/185/3 155/106/3
+f 155/106/3 65/105/3 83/114/3
+f 151/111/3 39/190/3 155/106/3
+f 83/114/3 65/105/3 157/51/3
+f 157/51/3 24/50/3 63/115/3
+f 152/46/3 83/114/3 157/51/3
+f 84/45/4 62/44/4 23/116/4
+f 40/117/4 84/45/4 60/40/4
+f 2/119/4 38/43/4 84/45/4
+f 85/42/4 61/41/4 9/120/4
+f 28/122/4 85/42/4 39/121/4
+f 10/118/4 60/40/4 85/42/4
+f 86/39/4 47/38/4 8/124/4
+f 61/41/4 86/39/4 27/125/4
+f 23/116/4 59/37/4 86/39/4
+f 22/32/5 56/136/5 135/126/5
+f 135/126/5 87/130/5 58/127/5
+f 132/128/5 22/32/5 135/126/5
+f 56/136/5 11/20/5 103/129/5
+f 103/129/5 41/157/5 87/130/5
+f 135/126/5 56/136/5 103/129/5
+f 87/130/5 41/157/5 105/18/5
+f 105/18/5 1/17/5 46/77/5
+f 136/34/5 87/130/5 105/18/5
+f 20/164/5 38/43/5 137/131/5
+f 137/131/5 88/135/5 57/132/5
+f 131/133/5 20/164/5 137/131/5
+f 38/43/5 2/119/5 106/134/5
+f 106/134/5 29/153/5 88/135/5
+f 137/131/5 38/43/5 106/134/5
+f 88/135/5 29/153/5 104/21/5
+f 104/21/5 11/20/5 56/136/5
+f 138/31/5 88/135/5 104/21/5
+f 4/177/5 50/10/5 127/137/5
+f 127/137/5 89/139/5 31/138/5
+f 111/89/5 4/177/5 127/137/5
+f 50/10/5 20/164/5 131/133/5
+f 131/133/5 57/132/5 89/139/5
+f 127/137/5 50/10/5 131/133/5
+f 89/139/5 57/132/5 133/33/5
+f 133/33/5 22/32/5 55/140/5
+f 128/28/5 89/139/5 133/33/5
+f 21/23/6 52/151/6 147/141/6
+f 147/141/6 90/145/6 54/142/6
+f 144/143/6 21/23/6 147/141/6
+f 52/151/6 14/47/6 100/144/6
+f 100/144/6 44/166/6 90/145/6
+f 147/141/6 52/151/6 100/144/6
+f 90/145/6 44/166/6 102/9/6
+f 102/9/6 5/8/6 49/146/6
+f 148/25/6 90/145/6 102/9/6
+f 10/191/6 28/192/6 149/147/6
+f 149/147/6 91/150/6 53/148/6
+f 143/149/6 10/191/6 149/147/6
+f 28/192/6 6/189/6 99/113/6
+f 99/113/6 32/112/6 91/150/6
+f 149/147/6 28/192/6 99/113/6
+f 91/150/6 32/112/6 101/48/6
+f 101/48/6 14/47/6 52/151/6
+f 150/22/6 91/150/6 101/48/6
+f 2/119/6 40/193/6 139/152/6
+f 139/152/6 92/154/6 29/153/6
+f 106/134/6 2/119/6 139/152/6
+f 40/193/6 10/191/6 143/149/6
+f 143/149/6 53/148/6 92/154/6
+f 139/152/6 40/193/6 143/149/6
+f 92/154/6 53/148/6 145/24/6
+f 145/24/6 21/23/6 51/155/6
+f 140/19/6 92/154/6 145/24/6
+f 11/20/6 51/155/6 141/156/6
+f 141/156/6 93/158/6 41/157/6
+f 103/129/6 11/20/6 141/156/6
+f 51/155/6 21/23/6 144/143/6
+f 144/143/6 54/142/6 93/158/6
+f 141/156/6 51/155/6 144/143/6
+f 93/158/6 54/142/6 146/27/6
+f 146/27/6 19/26/6 37/159/6
+f 142/16/6 93/158/6 146/27/6
+f 13/29/5 55/140/5 129/160/5
+f 129/160/5 94/162/5 43/161/5
+f 112/83/5 13/29/5 129/160/5
+f 55/140/5 22/32/5 132/128/5
+f 132/128/5 58/127/5 94/162/5
+f 129/160/5 55/140/5 132/128/5
+f 94/162/5 58/127/5 134/36/5
+f 134/36/5 16/35/5 34/79/5
+f 130/13/5 94/162/5 134/36/5
+f 95/12/4 35/11/4 17/163/4
+f 62/44/4 95/12/4 59/37/4
+f 20/164/4 50/10/4 95/12/4
+f 14/47/3 63/115/3 153/165/3
+f 153/165/3 96/167/3 44/166/3
+f 100/144/3 14/47/3 153/165/3
+f 63/115/3 24/50/3 156/99/3
+f 156/99/3 66/98/3 96/167/3
+f 153/165/3 63/115/3 156/99/3
+f 96/167/3 66/98/3 158/54/3
+f 158/54/3 18/53/3 36/168/3
+f 154/7/3 96/167/3 158/54/3
+f 12/56/2 67/96/2 125/169/2
+f 125/169/2 97/172/2 30/170/2
+f 109/171/2 12/56/2 125/169/2
+f 67/96/2 25/59/2 120/82/2
+f 120/82/2 70/81/2 97/172/2
+f 125/169/2 67/96/2 120/82/2
+f 97/172/2 70/81/2 122/63/2
+f 122/63/2 15/62/2 33/173/2
+f 126/4/2 97/172/2 122/63/2
+f 98/3/1 33/2/1 15/174/1
+f 74/71/1 98/3/1 71/64/1
+f 18/175/1 48/1/1 98/3/1
diff --git a/meshes/sphere.obj b/meshes/sphere.obj
new file mode 100644
index 0000000..80d03ca
--- /dev/null
+++ b/meshes/sphere.obj
@@ -0,0 +1,1458 @@
+####
+#
+# OBJ File Generated by Meshlab
+#
+####
+# Object sphere.obj
+#
+# Vertices: 482
+# Faces: 960
+#
+####
+v -0.577350 -0.577350 -0.577350
+v -0.577350 0.577350 -0.577350
+v 0.577350 0.577350 -0.577350
+v 0.577350 -0.577350 -0.577350
+v 0.577350 -0.577350 0.577350
+v 0.577350 0.577350 0.577350
+v -0.577350 0.577350 0.577350
+v -0.577350 -0.577350 0.577350
+v 0.934172 0.356822 0.000000
+v 0.934172 -0.356822 0.000000
+v -0.934172 -0.356822 -0.000000
+v -0.934172 0.356822 -0.000000
+v 0.356822 0.000000 0.934172
+v -0.356822 0.000000 0.934172
+v -0.356822 -0.000000 -0.934172
+v 0.356822 -0.000000 -0.934172
+v 0.000000 0.934172 0.356822
+v 0.000000 0.934172 -0.356822
+v -0.000000 -0.934172 -0.356822
+v 0.000000 -0.934172 0.356822
+v 0.000000 0.525731 0.850651
+v 0.000000 -0.525731 0.850651
+v 0.850651 0.000000 0.525731
+v 0.525731 -0.850651 0.000000
+v 0.525731 0.850651 0.000000
+v 0.000000 -0.525731 -0.850651
+v -0.850651 0.000000 -0.525731
+v -0.525731 -0.850651 0.000000
+v -0.850651 0.000000 0.525731
+v 0.850651 0.000000 -0.525731
+v 0.000000 0.525731 -0.850651
+v -0.525731 0.850651 0.000000
+v 0.000000 0.000000 1.000000
+v 0.174614 0.297555 0.938600
+v -0.174614 0.297555 0.938600
+v 0.500000 0.309017 0.809017
+v 0.282532 0.580087 0.763986
+v 0.309017 0.809017 0.500000
+v 0.000000 0.754701 0.656068
+v -0.309017 0.809017 0.500000
+v -0.282532 0.580087 0.763986
+v -0.500000 0.309017 0.809017
+v -0.174614 -0.297555 0.938600
+v 0.174614 -0.297555 0.938600
+v -0.500000 -0.309017 0.809017
+v -0.282532 -0.580087 0.763986
+v -0.309017 -0.809017 0.500000
+v 0.000000 -0.754701 0.656068
+v 0.309017 -0.809017 0.500000
+v 0.282532 -0.580087 0.763986
+v 0.500000 -0.309017 0.809017
+v 0.763986 -0.282532 0.580087
+v 0.656068 0.000000 0.754701
+v 0.809017 -0.500000 0.309017
+v 0.938600 -0.174614 0.297555
+v 1.000000 0.000000 0.000000
+v 0.938600 0.174614 0.297555
+v 0.809017 0.500000 0.309017
+v 0.763986 0.282532 0.580087
+v 0.580087 -0.763986 0.282532
+v 0.754701 -0.656068 0.000000
+v 0.297555 -0.938600 0.174614
+v -0.000000 -1.000000 0.000000
+v 0.297555 -0.938600 -0.174614
+v 0.309017 -0.809017 -0.500000
+v 0.580087 -0.763986 -0.282532
+v 0.809017 -0.500000 -0.309017
+v 0.309017 0.809017 -0.500000
+v 0.297555 0.938600 -0.174614
+v 0.580087 0.763986 -0.282532
+v 0.000000 1.000000 0.000000
+v 0.297555 0.938600 0.174614
+v 0.580087 0.763986 0.282532
+v 0.754701 0.656068 0.000000
+v 0.809017 0.500000 -0.309017
+v -0.500000 -0.309017 -0.809017
+v -0.174614 -0.297555 -0.938600
+v -0.282532 -0.580087 -0.763986
+v 0.000000 -0.000000 -1.000000
+v 0.174614 -0.297555 -0.938600
+v 0.500000 -0.309017 -0.809017
+v 0.282532 -0.580087 -0.763986
+v 0.000000 -0.754701 -0.656068
+v -0.309017 -0.809017 -0.500000
+v -0.809017 -0.500000 -0.309017
+v -0.938600 -0.174614 -0.297555
+v -0.763986 -0.282532 -0.580087
+v -1.000000 0.000000 -0.000000
+v -0.938600 0.174614 -0.297555
+v -0.809017 0.500000 -0.309017
+v -0.763986 0.282532 -0.580087
+v -0.500000 0.309017 -0.809017
+v -0.656068 0.000000 -0.754701
+v -0.297555 -0.938600 -0.174614
+v -0.580087 -0.763986 -0.282532
+v -0.297555 -0.938600 0.174614
+v -0.580087 -0.763986 0.282532
+v -0.809017 -0.500000 0.309017
+v -0.754701 -0.656068 0.000000
+v -0.656068 0.000000 0.754701
+v -0.763986 -0.282532 0.580087
+v -0.763986 0.282532 0.580087
+v -0.809017 0.500000 0.309017
+v -0.938600 0.174614 0.297555
+v -0.938600 -0.174614 0.297555
+v 0.656068 0.000000 -0.754701
+v 0.763986 -0.282532 -0.580087
+v 0.500000 0.309017 -0.809017
+v 0.763986 0.282532 -0.580087
+v 0.938600 0.174614 -0.297555
+v 0.938600 -0.174614 -0.297555
+v -0.309017 0.809017 -0.500000
+v 0.000000 0.754701 -0.656068
+v -0.282532 0.580087 -0.763986
+v 0.282532 0.580087 -0.763986
+v 0.174614 0.297555 -0.938600
+v -0.174614 0.297555 -0.938600
+v -0.754701 0.656068 0.000000
+v -0.580087 0.763986 -0.282532
+v -0.580087 0.763986 0.282532
+v -0.297555 0.938600 0.174614
+v -0.297555 0.938600 -0.174614
+v 0.000000 0.292899 0.956143
+v -0.090892 0.150918 0.984359
+v 0.090892 0.150918 0.984359
+v 0.241112 0.441914 0.864047
+v 0.341997 0.306110 0.888445
+v 0.398171 0.453175 0.797554
+v 0.149015 0.683025 0.715032
+v 0.302257 0.704281 0.642362
+v 0.155192 0.795173 0.586188
+v -0.149015 0.683025 0.715032
+v -0.155192 0.795173 0.586188
+v -0.302257 0.704281 0.642362
+v -0.241112 0.441914 0.864047
+v -0.398171 0.453175 0.797554
+v -0.341997 0.306110 0.888445
+v 0.000000 -0.292899 0.956143
+v 0.090892 -0.150918 0.984359
+v -0.090892 -0.150918 0.984359
+v -0.241112 -0.441914 0.864047
+v -0.341997 -0.306110 0.888445
+v -0.398171 -0.453175 0.797554
+v -0.149015 -0.683025 0.715032
+v -0.302257 -0.704281 0.642362
+v -0.155192 -0.795173 0.586188
+v 0.149015 -0.683025 0.715032
+v 0.155192 -0.795173 0.586188
+v 0.302257 -0.704281 0.642362
+v 0.241112 -0.441914 0.864047
+v 0.398171 -0.453175 0.797554
+v 0.341997 -0.306110 0.888445
+v 0.715032 -0.149015 0.683025
+v 0.586188 -0.155192 0.795173
+v 0.642362 -0.302257 0.704281
+v 0.864047 -0.241112 0.441914
+v 0.797553 -0.398171 0.453175
+v 0.888445 -0.341997 0.306110
+v 0.956143 0.000000 0.292899
+v 0.984359 -0.090892 0.150918
+v 0.984359 0.090892 0.150918
+v 0.864047 0.241112 0.441914
+v 0.888445 0.341997 0.306110
+v 0.797554 0.398171 0.453175
+v 0.715032 0.149015 0.683025
+v 0.642362 0.302257 0.704281
+v 0.586188 0.155192 0.795173
+v 0.683025 -0.715032 0.149015
+v 0.795173 -0.586188 0.155192
+v 0.704281 -0.642362 0.302257
+v 0.441914 -0.864047 0.241112
+v 0.453175 -0.797554 0.398171
+v 0.306110 -0.888445 0.341997
+v 0.292899 -0.956143 0.000000
+v 0.150918 -0.984359 0.090892
+v 0.150918 -0.984359 -0.090892
+v 0.441914 -0.864047 -0.241112
+v 0.306110 -0.888445 -0.341997
+v 0.453175 -0.797554 -0.398171
+v 0.683025 -0.715032 -0.149015
+v 0.704281 -0.642362 -0.302257
+v 0.795173 -0.586188 -0.155192
+v 0.441914 0.864047 -0.241112
+v 0.453175 0.797554 -0.398171
+v 0.306110 0.888445 -0.341997
+v 0.292899 0.956143 0.000000
+v 0.150918 0.984359 -0.090892
+v 0.150918 0.984359 0.090892
+v 0.441914 0.864047 0.241112
+v 0.306110 0.888445 0.341997
+v 0.453175 0.797554 0.398171
+v 0.683025 0.715032 0.149015
+v 0.704281 0.642362 0.302257
+v 0.795173 0.586188 0.155192
+v 0.683025 0.715032 -0.149015
+v 0.795173 0.586188 -0.155192
+v 0.704281 0.642362 -0.302257
+v -0.241112 -0.441914 -0.864047
+v -0.398171 -0.453175 -0.797554
+v -0.341997 -0.306110 -0.888445
+v 0.000000 -0.292899 -0.956143
+v -0.090892 -0.150918 -0.984359
+v 0.090892 -0.150918 -0.984359
+v 0.241112 -0.441914 -0.864047
+v 0.341997 -0.306110 -0.888445
+v 0.398171 -0.453175 -0.797554
+v 0.149015 -0.683025 -0.715032
+v 0.302257 -0.704281 -0.642362
+v 0.155192 -0.795173 -0.586188
+v -0.149015 -0.683025 -0.715032
+v -0.155192 -0.795173 -0.586188
+v -0.302257 -0.704281 -0.642362
+v -0.864047 -0.241112 -0.441914
+v -0.797554 -0.398171 -0.453175
+v -0.888445 -0.341997 -0.306110
+v -0.956143 0.000000 -0.292899
+v -0.984359 -0.090892 -0.150918
+v -0.984359 0.090892 -0.150918
+v -0.864047 0.241112 -0.441914
+v -0.888445 0.341997 -0.306110
+v -0.797554 0.398171 -0.453175
+v -0.715032 0.149015 -0.683025
+v -0.642362 0.302257 -0.704281
+v -0.586188 0.155192 -0.795173
+v -0.715032 -0.149015 -0.683025
+v -0.586188 -0.155192 -0.795173
+v -0.642362 -0.302257 -0.704281
+v -0.441914 -0.864047 -0.241112
+v -0.453175 -0.797554 -0.398171
+v -0.306110 -0.888445 -0.341997
+v -0.292899 -0.956143 0.000000
+v -0.150918 -0.984359 -0.090892
+v -0.150918 -0.984359 0.090892
+v -0.441914 -0.864047 0.241112
+v -0.306110 -0.888445 0.341997
+v -0.453175 -0.797554 0.398171
+v -0.683025 -0.715032 0.149015
+v -0.704281 -0.642362 0.302257
+v -0.795173 -0.586188 0.155192
+v -0.683025 -0.715032 -0.149015
+v -0.795173 -0.586188 -0.155192
+v -0.704281 -0.642362 -0.302257
+v -0.715032 -0.149015 0.683025
+v -0.642362 -0.302257 0.704281
+v -0.586188 -0.155192 0.795173
+v -0.715032 0.149015 0.683025
+v -0.586188 0.155192 0.795173
+v -0.642362 0.302257 0.704281
+v -0.864047 0.241112 0.441914
+v -0.797553 0.398171 0.453175
+v -0.888445 0.341997 0.306110
+v -0.956143 0.000000 0.292899
+v -0.984359 0.090892 0.150918
+v -0.984359 -0.090892 0.150918
+v -0.864047 -0.241112 0.441914
+v -0.888445 -0.341997 0.306110
+v -0.797554 -0.398171 0.453175
+v 0.715032 -0.149015 -0.683025
+v 0.642362 -0.302257 -0.704281
+v 0.586188 -0.155192 -0.795173
+v 0.715032 0.149015 -0.683025
+v 0.586188 0.155192 -0.795173
+v 0.642362 0.302257 -0.704281
+v 0.864047 0.241112 -0.441914
+v 0.797554 0.398171 -0.453175
+v 0.888445 0.341997 -0.306110
+v 0.956143 0.000000 -0.292899
+v 0.984359 0.090892 -0.150918
+v 0.984359 -0.090892 -0.150918
+v 0.864047 -0.241112 -0.441914
+v 0.888445 -0.341997 -0.306110
+v 0.797554 -0.398171 -0.453175
+v -0.149015 0.683025 -0.715032
+v -0.302257 0.704281 -0.642362
+v -0.155192 0.795173 -0.586188
+v 0.149015 0.683025 -0.715032
+v 0.155192 0.795173 -0.586188
+v 0.302257 0.704281 -0.642362
+v 0.241112 0.441914 -0.864047
+v 0.398171 0.453175 -0.797553
+v 0.341997 0.306110 -0.888445
+v 0.000000 0.292899 -0.956143
+v 0.090892 0.150918 -0.984359
+v -0.090892 0.150918 -0.984359
+v -0.241112 0.441914 -0.864047
+v -0.341997 0.306110 -0.888445
+v -0.398171 0.453175 -0.797554
+v -0.683025 0.715032 -0.149015
+v -0.704281 0.642362 -0.302257
+v -0.795173 0.586188 -0.155192
+v -0.683025 0.715032 0.149015
+v -0.795173 0.586188 0.155192
+v -0.704281 0.642362 0.302257
+v -0.441914 0.864047 0.241112
+v -0.453175 0.797554 0.398171
+v -0.306110 0.888445 0.341997
+v -0.292899 0.956143 0.000000
+v -0.150918 0.984359 0.090892
+v -0.150918 0.984359 -0.090892
+v -0.441914 0.864047 -0.241112
+v -0.306110 0.888445 -0.341997
+v -0.453175 0.797554 -0.398171
+v 0.081567 0.425144 0.901443
+v -0.081567 0.425144 0.901443
+v -0.268849 0.152739 0.950994
+v -0.182280 0.000000 0.983247
+v 0.182280 0.000000 0.983247
+v 0.268849 0.152739 0.950995
+v 0.131978 0.557122 0.819876
+v 0.435296 0.156372 0.886603
+v 0.547951 0.451308 0.704323
+v 0.435007 0.587747 0.682145
+v 0.000000 0.638689 0.769465
+v 0.451308 0.704323 0.547951
+v 0.156372 0.886603 0.435296
+v 0.000000 0.856596 0.515987
+v -0.131978 0.557122 0.819876
+v -0.156372 0.886603 0.435295
+v -0.451308 0.704323 0.547951
+v -0.435007 0.587747 0.682145
+v -0.547951 0.451308 0.704323
+v -0.435296 0.156372 0.886603
+v -0.081567 -0.425144 0.901443
+v 0.081567 -0.425144 0.901443
+v 0.268849 -0.152739 0.950995
+v -0.268849 -0.152739 0.950994
+v -0.131978 -0.557122 0.819876
+v -0.435296 -0.156372 0.886603
+v -0.547951 -0.451308 0.704323
+v -0.435007 -0.587747 0.682145
+v 0.000000 -0.638689 0.769465
+v -0.451308 -0.704323 0.547951
+v -0.156372 -0.886603 0.435296
+v 0.000000 -0.856596 0.515987
+v 0.131978 -0.557122 0.819876
+v 0.156372 -0.886603 0.435296
+v 0.451308 -0.704323 0.547951
+v 0.435007 -0.587747 0.682145
+v 0.547951 -0.451308 0.704323
+v 0.435295 -0.156372 0.886603
+v 0.819876 -0.131978 0.557122
+v 0.769465 0.000000 0.638689
+v 0.515987 0.000000 0.856596
+v 0.682145 -0.435008 0.587747
+v 0.901443 -0.081567 0.425144
+v 0.704323 -0.547951 0.451308
+v 0.886603 -0.435296 0.156372
+v 0.950994 -0.268849 0.152739
+v 0.901443 0.081567 0.425144
+v 0.983247 -0.182280 0.000000
+v 0.983247 0.182280 0.000000
+v 0.950995 0.268849 0.152739
+v 0.819876 0.131978 0.557122
+v 0.886603 0.435296 0.156372
+v 0.704323 0.547951 0.451308
+v 0.682145 0.435008 0.587747
+v 0.557122 -0.819876 0.131978
+v 0.638689 -0.769465 0.000000
+v 0.856596 -0.515987 0.000000
+v 0.587747 -0.682145 0.435008
+v 0.425144 -0.901443 0.081567
+v 0.152739 -0.950994 0.268849
+v 0.425144 -0.901443 -0.081567
+v -0.000000 -0.983247 0.182280
+v -0.000000 -0.983247 -0.182280
+v 0.152739 -0.950995 -0.268849
+v 0.557122 -0.819876 -0.131978
+v 0.156372 -0.886603 -0.435296
+v 0.451308 -0.704323 -0.547951
+v 0.587747 -0.682145 -0.435007
+v 0.704323 -0.547951 -0.451308
+v 0.886603 -0.435296 -0.156372
+v 0.425144 0.901443 -0.081567
+v 0.557122 0.819876 -0.131978
+v 0.587747 0.682145 -0.435007
+v 0.451308 0.704323 -0.547951
+v 0.156372 0.886603 -0.435296
+v 0.152739 0.950994 -0.268849
+v 0.425144 0.901443 0.081567
+v 0.000000 0.983247 -0.182280
+v 0.000000 0.983247 0.182280
+v 0.152739 0.950995 0.268849
+v 0.557122 0.819876 0.131978
+v 0.587747 0.682145 0.435007
+v 0.638689 0.769465 0.000000
+v 0.856596 0.515987 0.000000
+v 0.886603 0.435295 -0.156372
+v 0.704323 0.547951 -0.451308
+v -0.081567 -0.425144 -0.901443
+v -0.131978 -0.557122 -0.819876
+v -0.435008 -0.587747 -0.682145
+v -0.547951 -0.451308 -0.704323
+v -0.435296 -0.156372 -0.886603
+v -0.268849 -0.152739 -0.950994
+v 0.081567 -0.425144 -0.901443
+v -0.182280 -0.000000 -0.983247
+v 0.182280 -0.000000 -0.983247
+v 0.268849 -0.152739 -0.950995
+v 0.131978 -0.557122 -0.819876
+v 0.435296 -0.156372 -0.886603
+v 0.547951 -0.451308 -0.704323
+v 0.435008 -0.587747 -0.682145
+v 0.000000 -0.638689 -0.769465
+v 0.000000 -0.856596 -0.515987
+v -0.156372 -0.886603 -0.435295
+v -0.451308 -0.704323 -0.547951
+v -0.901443 -0.081567 -0.425144
+v -0.819876 -0.131978 -0.557122
+v -0.682145 -0.435008 -0.587747
+v -0.704323 -0.547951 -0.451308
+v -0.886603 -0.435296 -0.156372
+v -0.950994 -0.268849 -0.152739
+v -0.901443 0.081567 -0.425144
+v -0.983247 -0.182280 -0.000000
+v -0.983247 0.182280 -0.000000
+v -0.950994 0.268849 -0.152739
+v -0.819876 0.131978 -0.557122
+v -0.886603 0.435296 -0.156372
+v -0.704323 0.547951 -0.451308
+v -0.682145 0.435008 -0.587747
+v -0.769465 0.000000 -0.638689
+v -0.547951 0.451308 -0.704323
+v -0.435296 0.156372 -0.886603
+v -0.515987 0.000000 -0.856596
+v -0.425144 -0.901443 -0.081567
+v -0.557122 -0.819876 -0.131978
+v -0.587747 -0.682145 -0.435008
+v -0.152739 -0.950995 -0.268849
+v -0.425144 -0.901443 0.081567
+v -0.152739 -0.950994 0.268849
+v -0.557122 -0.819876 0.131978
+v -0.587747 -0.682145 0.435007
+v -0.638689 -0.769465 0.000000
+v -0.704323 -0.547951 0.451308
+v -0.886603 -0.435296 0.156372
+v -0.856596 -0.515987 0.000000
+v -0.769465 0.000000 0.638689
+v -0.819876 -0.131978 0.557122
+v -0.682145 -0.435008 0.587747
+v -0.515987 0.000000 0.856596
+v -0.819876 0.131978 0.557122
+v -0.682145 0.435008 0.587747
+v -0.901443 0.081567 0.425144
+v -0.704323 0.547951 0.451308
+v -0.886603 0.435296 0.156372
+v -0.950994 0.268849 0.152739
+v -0.901443 -0.081567 0.425144
+v -0.950994 -0.268849 0.152739
+v 0.769465 0.000000 -0.638689
+v 0.819876 -0.131978 -0.557122
+v 0.682145 -0.435008 -0.587747
+v 0.515987 0.000000 -0.856596
+v 0.819876 0.131978 -0.557122
+v 0.435295 0.156372 -0.886603
+v 0.547951 0.451308 -0.704323
+v 0.682145 0.435008 -0.587747
+v 0.901443 0.081567 -0.425144
+v 0.950995 0.268849 -0.152739
+v 0.901443 -0.081567 -0.425144
+v 0.950994 -0.268849 -0.152739
+v 0.000000 0.638689 -0.769465
+v -0.131978 0.557122 -0.819876
+v -0.435008 0.587747 -0.682145
+v -0.451308 0.704323 -0.547951
+v -0.156372 0.886603 -0.435296
+v 0.000000 0.856596 -0.515987
+v 0.131978 0.557122 -0.819876
+v 0.435008 0.587747 -0.682145
+v 0.081567 0.425144 -0.901443
+v 0.268849 0.152739 -0.950995
+v -0.081567 0.425144 -0.901443
+v -0.268849 0.152739 -0.950994
+v -0.638689 0.769465 0.000000
+v -0.557122 0.819876 -0.131978
+v -0.587747 0.682145 -0.435007
+v -0.856596 0.515987 0.000000
+v -0.557122 0.819876 0.131978
+v -0.587747 0.682145 0.435008
+v -0.425144 0.901443 0.081567
+v -0.152739 0.950995 0.268849
+v -0.425144 0.901443 -0.081567
+v -0.152739 0.950994 -0.268849
+# 482 vertices, 0 vertices normals
+
+f 123 124 125
+f 126 127 128
+f 129 130 131
+f 132 133 134
+f 135 136 137
+f 138 139 140
+f 141 142 143
+f 144 145 146
+f 147 148 149
+f 150 151 152
+f 153 154 155
+f 156 157 158
+f 159 160 161
+f 162 163 164
+f 165 166 167
+f 168 169 170
+f 171 172 173
+f 174 175 176
+f 177 178 179
+f 180 181 182
+f 183 184 185
+f 186 187 188
+f 189 190 191
+f 192 193 194
+f 195 196 197
+f 198 199 200
+f 201 202 203
+f 204 205 206
+f 207 208 209
+f 210 211 212
+f 213 214 215
+f 216 217 218
+f 219 220 221
+f 222 223 224
+f 225 226 227
+f 228 229 230
+f 231 232 233
+f 234 235 236
+f 237 238 239
+f 240 241 242
+f 243 244 245
+f 246 247 248
+f 249 250 251
+f 252 253 254
+f 255 256 257
+f 258 259 260
+f 261 262 263
+f 264 265 266
+f 267 268 269
+f 270 271 272
+f 273 274 275
+f 276 277 278
+f 279 280 281
+f 282 283 284
+f 285 286 287
+f 288 289 290
+f 291 292 293
+f 294 295 296
+f 297 298 299
+f 300 301 302
+f 123 303 304
+f 124 305 306
+f 125 307 308
+f 126 309 303
+f 127 308 310
+f 128 311 312
+f 129 313 309
+f 130 312 314
+f 131 315 316
+f 132 317 313
+f 133 316 318
+f 134 319 320
+f 135 304 317
+f 136 320 321
+f 137 322 305
+f 138 323 324
+f 139 325 307
+f 140 306 326
+f 141 327 323
+f 142 326 328
+f 143 329 330
+f 144 331 327
+f 145 330 332
+f 146 333 334
+f 147 335 331
+f 148 334 336
+f 149 337 338
+f 150 324 335
+f 151 338 339
+f 152 340 325
+f 153 341 342
+f 154 343 340
+f 155 339 344
+f 156 345 341
+f 157 344 346
+f 158 347 348
+f 159 349 345
+f 160 348 350
+f 161 351 352
+f 162 353 349
+f 163 352 354
+f 164 355 356
+f 165 342 353
+f 166 356 311
+f 167 310 343
+f 168 357 358
+f 169 359 347
+f 170 346 360
+f 171 361 357
+f 172 360 337
+f 173 336 362
+f 174 363 361
+f 175 362 364
+f 176 365 366
+f 177 367 363
+f 178 366 368
+f 179 369 370
+f 180 358 367
+f 181 370 371
+f 182 372 359
+f 183 373 374
+f 184 375 376
+f 185 377 378
+f 186 379 373
+f 187 378 380
+f 188 381 382
+f 189 383 379
+f 190 382 315
+f 191 314 384
+f 192 385 383
+f 193 384 355
+f 194 354 386
+f 195 374 385
+f 196 386 387
+f 197 388 375
+f 198 389 390
+f 199 391 392
+f 200 393 394
+f 201 395 389
+f 202 394 396
+f 203 397 398
+f 204 399 395
+f 205 398 400
+f 206 401 402
+f 207 403 399
+f 208 402 369
+f 209 368 404
+f 210 390 403
+f 211 404 405
+f 212 406 391
+f 213 407 408
+f 214 409 410
+f 215 411 412
+f 216 413 407
+f 217 412 414
+f 218 415 416
+f 219 417 413
+f 220 416 418
+f 221 419 420
+f 222 421 417
+f 223 420 422
+f 224 423 424
+f 225 408 421
+f 226 424 393
+f 227 392 409
+f 228 425 426
+f 229 427 406
+f 230 405 428
+f 231 429 425
+f 232 428 365
+f 233 364 430
+f 234 431 429
+f 235 430 333
+f 236 332 432
+f 237 433 431
+f 238 432 434
+f 239 435 436
+f 240 426 433
+f 241 436 411
+f 242 410 427
+f 243 437 438
+f 244 439 329
+f 245 328 440
+f 246 441 437
+f 247 440 322
+f 248 321 442
+f 249 443 441
+f 250 442 444
+f 251 445 446
+f 252 447 443
+f 253 446 415
+f 254 414 448
+f 255 438 447
+f 256 448 435
+f 257 434 439
+f 258 449 450
+f 259 451 401
+f 260 400 452
+f 261 453 449
+f 262 452 454
+f 263 455 456
+f 264 457 453
+f 265 456 388
+f 266 387 458
+f 267 459 457
+f 268 458 351
+f 269 350 460
+f 270 450 459
+f 271 460 372
+f 272 371 451
+f 273 461 462
+f 274 463 464
+f 275 465 466
+f 276 467 461
+f 277 466 377
+f 278 376 468
+f 279 469 467
+f 280 468 455
+f 281 454 470
+f 282 471 469
+f 283 470 397
+f 284 396 472
+f 285 462 471
+f 286 472 423
+f 287 422 463
+f 288 473 474
+f 289 475 419
+f 290 418 476
+f 291 477 473
+f 292 476 445
+f 293 444 478
+f 294 479 477
+f 295 478 319
+f 296 318 480
+f 297 481 479
+f 298 480 381
+f 299 380 482
+f 300 474 481
+f 301 482 465
+f 302 464 475
+f 33 125 124
+f 34 123 125
+f 35 124 123
+f 36 128 127
+f 37 126 128
+f 34 127 126
+f 38 131 130
+f 39 129 131
+f 37 130 129
+f 40 134 133
+f 41 132 134
+f 39 133 132
+f 42 137 136
+f 35 135 137
+f 41 136 135
+f 33 140 139
+f 43 138 140
+f 44 139 138
+f 45 143 142
+f 46 141 143
+f 43 142 141
+f 47 146 145
+f 48 144 146
+f 46 145 144
+f 49 149 148
+f 50 147 149
+f 48 148 147
+f 51 152 151
+f 44 150 152
+f 50 151 150
+f 51 155 154
+f 52 153 155
+f 53 154 153
+f 54 158 157
+f 55 156 158
+f 52 157 156
+f 56 161 160
+f 57 159 161
+f 55 160 159
+f 58 164 163
+f 59 162 164
+f 57 163 162
+f 36 167 166
+f 53 165 167
+f 59 166 165
+f 54 170 169
+f 60 168 170
+f 61 169 168
+f 49 173 172
+f 62 171 173
+f 60 172 171
+f 63 176 175
+f 64 174 176
+f 62 175 174
+f 65 179 178
+f 66 177 179
+f 64 178 177
+f 67 182 181
+f 61 180 182
+f 66 181 180
+f 68 185 184
+f 69 183 185
+f 70 184 183
+f 71 188 187
+f 72 186 188
+f 69 187 186
+f 38 191 190
+f 73 189 191
+f 72 190 189
+f 58 194 193
+f 74 192 194
+f 73 193 192
+f 75 197 196
+f 70 195 197
+f 74 196 195
+f 76 200 199
+f 77 198 200
+f 78 199 198
+f 79 203 202
+f 80 201 203
+f 77 202 201
+f 81 206 205
+f 82 204 206
+f 80 205 204
+f 65 209 208
+f 83 207 209
+f 82 208 207
+f 84 212 211
+f 78 210 212
+f 83 211 210
+f 85 215 214
+f 86 213 215
+f 87 214 213
+f 88 218 217
+f 89 216 218
+f 86 217 216
+f 90 221 220
+f 91 219 221
+f 89 220 219
+f 92 224 223
+f 93 222 224
+f 91 223 222
+f 76 227 226
+f 87 225 227
+f 93 226 225
+f 84 230 229
+f 94 228 230
+f 95 229 228
+f 63 233 232
+f 96 231 233
+f 94 232 231
+f 47 236 235
+f 97 234 236
+f 96 235 234
+f 98 239 238
+f 99 237 239
+f 97 238 237
+f 85 242 241
+f 95 240 242
+f 99 241 240
+f 45 245 244
+f 100 243 245
+f 101 244 243
+f 42 248 247
+f 102 246 248
+f 100 247 246
+f 103 251 250
+f 104 249 251
+f 102 250 249
+f 88 254 253
+f 105 252 254
+f 104 253 252
+f 98 257 256
+f 101 255 257
+f 105 256 255
+f 81 260 259
+f 106 258 260
+f 107 259 258
+f 108 263 262
+f 109 261 263
+f 106 262 261
+f 75 266 265
+f 110 264 266
+f 109 265 264
+f 56 269 268
+f 111 267 269
+f 110 268 267
+f 67 272 271
+f 107 270 272
+f 111 271 270
+f 112 275 274
+f 113 273 275
+f 114 274 273
+f 68 278 277
+f 115 276 278
+f 113 277 276
+f 108 281 280
+f 116 279 281
+f 115 280 279
+f 79 284 283
+f 117 282 284
+f 116 283 282
+f 92 287 286
+f 114 285 287
+f 117 286 285
+f 90 290 289
+f 118 288 290
+f 119 289 288
+f 103 293 292
+f 120 291 293
+f 118 292 291
+f 40 296 295
+f 121 294 296
+f 120 295 294
+f 71 299 298
+f 122 297 299
+f 121 298 297
+f 112 302 301
+f 119 300 302
+f 122 301 300
+f 21 304 303
+f 35 123 304
+f 34 303 123
+f 14 306 305
+f 33 124 306
+f 35 305 124
+f 13 308 307
+f 34 125 308
+f 33 307 125
+f 21 303 309
+f 34 126 303
+f 37 309 126
+f 13 310 308
+f 36 127 310
+f 34 308 127
+f 6 312 311
+f 37 128 312
+f 36 311 128
+f 21 309 313
+f 37 129 309
+f 39 313 129
+f 6 314 312
+f 38 130 314
+f 37 312 130
+f 17 316 315
+f 39 131 316
+f 38 315 131
+f 21 313 317
+f 39 132 313
+f 41 317 132
+f 17 318 316
+f 40 133 318
+f 39 316 133
+f 7 320 319
+f 41 134 320
+f 40 319 134
+f 21 317 304
+f 41 135 317
+f 35 304 135
+f 7 321 320
+f 42 136 321
+f 41 320 136
+f 14 305 322
+f 35 137 305
+f 42 322 137
+f 22 324 323
+f 44 138 324
+f 43 323 138
+f 13 307 325
+f 33 139 307
+f 44 325 139
+f 14 326 306
+f 43 140 326
+f 33 306 140
+f 22 323 327
+f 43 141 323
+f 46 327 141
+f 14 328 326
+f 45 142 328
+f 43 326 142
+f 8 330 329
+f 46 143 330
+f 45 329 143
+f 22 327 331
+f 46 144 327
+f 48 331 144
+f 8 332 330
+f 47 145 332
+f 46 330 145
+f 20 334 333
+f 48 146 334
+f 47 333 146
+f 22 331 335
+f 48 147 331
+f 50 335 147
+f 20 336 334
+f 49 148 336
+f 48 334 148
+f 5 338 337
+f 50 149 338
+f 49 337 149
+f 22 335 324
+f 50 150 335
+f 44 324 150
+f 5 339 338
+f 51 151 339
+f 50 338 151
+f 13 325 340
+f 44 152 325
+f 51 340 152
+f 23 342 341
+f 53 153 342
+f 52 341 153
+f 13 340 343
+f 51 154 340
+f 53 343 154
+f 5 344 339
+f 52 155 344
+f 51 339 155
+f 23 341 345
+f 52 156 341
+f 55 345 156
+f 5 346 344
+f 54 157 346
+f 52 344 157
+f 10 348 347
+f 55 158 348
+f 54 347 158
+f 23 345 349
+f 55 159 345
+f 57 349 159
+f 10 350 348
+f 56 160 350
+f 55 348 160
+f 9 352 351
+f 57 161 352
+f 56 351 161
+f 23 349 353
+f 57 162 349
+f 59 353 162
+f 9 354 352
+f 58 163 354
+f 57 352 163
+f 6 356 355
+f 59 164 356
+f 58 355 164
+f 23 353 342
+f 59 165 353
+f 53 342 165
+f 6 311 356
+f 36 166 311
+f 59 356 166
+f 13 343 310
+f 53 167 343
+f 36 310 167
+f 24 358 357
+f 61 168 358
+f 60 357 168
+f 10 347 359
+f 54 169 347
+f 61 359 169
+f 5 360 346
+f 60 170 360
+f 54 346 170
+f 24 357 361
+f 60 171 357
+f 62 361 171
+f 5 337 360
+f 49 172 337
+f 60 360 172
+f 20 362 336
+f 62 173 362
+f 49 336 173
+f 24 361 363
+f 62 174 361
+f 64 363 174
+f 20 364 362
+f 63 175 364
+f 62 362 175
+f 19 366 365
+f 64 176 366
+f 63 365 176
+f 24 363 367
+f 64 177 363
+f 66 367 177
+f 19 368 366
+f 65 178 368
+f 64 366 178
+f 4 370 369
+f 66 179 370
+f 65 369 179
+f 24 367 358
+f 66 180 367
+f 61 358 180
+f 4 371 370
+f 67 181 371
+f 66 370 181
+f 10 359 372
+f 61 182 359
+f 67 372 182
+f 25 374 373
+f 70 183 374
+f 69 373 183
+f 3 376 375
+f 68 184 376
+f 70 375 184
+f 18 378 377
+f 69 185 378
+f 68 377 185
+f 25 373 379
+f 69 186 373
+f 72 379 186
+f 18 380 378
+f 71 187 380
+f 69 378 187
+f 17 382 381
+f 72 188 382
+f 71 381 188
+f 25 379 383
+f 72 189 379
+f 73 383 189
+f 17 315 382
+f 38 190 315
+f 72 382 190
+f 6 384 314
+f 73 191 384
+f 38 314 191
+f 25 383 385
+f 73 192 383
+f 74 385 192
+f 6 355 384
+f 58 193 355
+f 73 384 193
+f 9 386 354
+f 74 194 386
+f 58 354 194
+f 25 385 374
+f 74 195 385
+f 70 374 195
+f 9 387 386
+f 75 196 387
+f 74 386 196
+f 3 375 388
+f 70 197 375
+f 75 388 197
+f 26 390 389
+f 78 198 390
+f 77 389 198
+f 1 392 391
+f 76 199 392
+f 78 391 199
+f 15 394 393
+f 77 200 394
+f 76 393 200
+f 26 389 395
+f 77 201 389
+f 80 395 201
+f 15 396 394
+f 79 202 396
+f 77 394 202
+f 16 398 397
+f 80 203 398
+f 79 397 203
+f 26 395 399
+f 80 204 395
+f 82 399 204
+f 16 400 398
+f 81 205 400
+f 80 398 205
+f 4 402 401
+f 82 206 402
+f 81 401 206
+f 26 399 403
+f 82 207 399
+f 83 403 207
+f 4 369 402
+f 65 208 369
+f 82 402 208
+f 19 404 368
+f 83 209 404
+f 65 368 209
+f 26 403 390
+f 83 210 403
+f 78 390 210
+f 19 405 404
+f 84 211 405
+f 83 404 211
+f 1 391 406
+f 78 212 391
+f 84 406 212
+f 27 408 407
+f 87 213 408
+f 86 407 213
+f 1 410 409
+f 85 214 410
+f 87 409 214
+f 11 412 411
+f 86 215 412
+f 85 411 215
+f 27 407 413
+f 86 216 407
+f 89 413 216
+f 11 414 412
+f 88 217 414
+f 86 412 217
+f 12 416 415
+f 89 218 416
+f 88 415 218
+f 27 413 417
+f 89 219 413
+f 91 417 219
+f 12 418 416
+f 90 220 418
+f 89 416 220
+f 2 420 419
+f 91 221 420
+f 90 419 221
+f 27 417 421
+f 91 222 417
+f 93 421 222
+f 2 422 420
+f 92 223 422
+f 91 420 223
+f 15 424 423
+f 93 224 424
+f 92 423 224
+f 27 421 408
+f 93 225 421
+f 87 408 225
+f 15 393 424
+f 76 226 393
+f 93 424 226
+f 1 409 392
+f 87 227 409
+f 76 392 227
+f 28 426 425
+f 95 228 426
+f 94 425 228
+f 1 406 427
+f 84 229 406
+f 95 427 229
+f 19 428 405
+f 94 230 428
+f 84 405 230
+f 28 425 429
+f 94 231 425
+f 96 429 231
+f 19 365 428
+f 63 232 365
+f 94 428 232
+f 20 430 364
+f 96 233 430
+f 63 364 233
+f 28 429 431
+f 96 234 429
+f 97 431 234
+f 20 333 430
+f 47 235 333
+f 96 430 235
+f 8 432 332
+f 97 236 432
+f 47 332 236
+f 28 431 433
+f 97 237 431
+f 99 433 237
+f 8 434 432
+f 98 238 434
+f 97 432 238
+f 11 436 435
+f 99 239 436
+f 98 435 239
+f 28 433 426
+f 99 240 433
+f 95 426 240
+f 11 411 436
+f 85 241 411
+f 99 436 241
+f 1 427 410
+f 95 242 427
+f 85 410 242
+f 29 438 437
+f 101 243 438
+f 100 437 243
+f 8 329 439
+f 45 244 329
+f 101 439 244
+f 14 440 328
+f 100 245 440
+f 45 328 245
+f 29 437 441
+f 100 246 437
+f 102 441 246
+f 14 322 440
+f 42 247 322
+f 100 440 247
+f 7 442 321
+f 102 248 442
+f 42 321 248
+f 29 441 443
+f 102 249 441
+f 104 443 249
+f 7 444 442
+f 103 250 444
+f 102 442 250
+f 12 446 445
+f 104 251 446
+f 103 445 251
+f 29 443 447
+f 104 252 443
+f 105 447 252
+f 12 415 446
+f 88 253 415
+f 104 446 253
+f 11 448 414
+f 105 254 448
+f 88 414 254
+f 29 447 438
+f 105 255 447
+f 101 438 255
+f 11 435 448
+f 98 256 435
+f 105 448 256
+f 8 439 434
+f 101 257 439
+f 98 434 257
+f 30 450 449
+f 107 258 450
+f 106 449 258
+f 4 401 451
+f 81 259 401
+f 107 451 259
+f 16 452 400
+f 106 260 452
+f 81 400 260
+f 30 449 453
+f 106 261 449
+f 109 453 261
+f 16 454 452
+f 108 262 454
+f 106 452 262
+f 3 456 455
+f 109 263 456
+f 108 455 263
+f 30 453 457
+f 109 264 453
+f 110 457 264
+f 3 388 456
+f 75 265 388
+f 109 456 265
+f 9 458 387
+f 110 266 458
+f 75 387 266
+f 30 457 459
+f 110 267 457
+f 111 459 267
+f 9 351 458
+f 56 268 351
+f 110 458 268
+f 10 460 350
+f 111 269 460
+f 56 350 269
+f 30 459 450
+f 111 270 459
+f 107 450 270
+f 10 372 460
+f 67 271 372
+f 111 460 271
+f 4 451 371
+f 107 272 451
+f 67 371 272
+f 31 462 461
+f 114 273 462
+f 113 461 273
+f 2 464 463
+f 112 274 464
+f 114 463 274
+f 18 466 465
+f 113 275 466
+f 112 465 275
+f 31 461 467
+f 113 276 461
+f 115 467 276
+f 18 377 466
+f 68 277 377
+f 113 466 277
+f 3 468 376
+f 115 278 468
+f 68 376 278
+f 31 467 469
+f 115 279 467
+f 116 469 279
+f 3 455 468
+f 108 280 455
+f 115 468 280
+f 16 470 454
+f 116 281 470
+f 108 454 281
+f 31 469 471
+f 116 282 469
+f 117 471 282
+f 16 397 470
+f 79 283 397
+f 116 470 283
+f 15 472 396
+f 117 284 472
+f 79 396 284
+f 31 471 462
+f 117 285 471
+f 114 462 285
+f 15 423 472
+f 92 286 423
+f 117 472 286
+f 2 463 422
+f 114 287 463
+f 92 422 287
+f 32 474 473
+f 119 288 474
+f 118 473 288
+f 2 419 475
+f 90 289 419
+f 119 475 289
+f 12 476 418
+f 118 290 476
+f 90 418 290
+f 32 473 477
+f 118 291 473
+f 120 477 291
+f 12 445 476
+f 103 292 445
+f 118 476 292
+f 7 478 444
+f 120 293 478
+f 103 444 293
+f 32 477 479
+f 120 294 477
+f 121 479 294
+f 7 319 478
+f 40 295 319
+f 120 478 295
+f 17 480 318
+f 121 296 480
+f 40 318 296
+f 32 479 481
+f 121 297 479
+f 122 481 297
+f 17 381 480
+f 71 298 381
+f 121 480 298
+f 18 482 380
+f 122 299 482
+f 71 380 299
+f 32 481 474
+f 122 300 481
+f 119 474 300
+f 18 465 482
+f 112 301 465
+f 122 482 301
+f 2 475 464
+f 119 302 475
+f 112 464 302
+# 960 faces, 0 coords texture
+
+# End of File
diff --git a/meshes/teapot.obj b/meshes/teapot.obj
new file mode 100644
index 0000000..e92f697
--- /dev/null
+++ b/meshes/teapot.obj
@@ -0,0 +1,2194 @@
+####
+#
+# OBJ File Generated by Meshlab
+#
+####
+# Object teapot.obj
+#
+# Vertices: 726
+# Faces: 1452
+#
+####
+v -2.395000 1.846880 0.000000
+v -2.428200 1.877640 0.168750
+v -1.653280 1.910060 0.168750
+v -1.678350 1.875220 0.019791
+v -1.678630 1.874890 0.000000
+v -1.659130 1.901370 0.151305
+v -2.620000 1.780080 0.000000
+v -2.663700 1.800400 0.168750
+v -2.695000 1.650000 0.000000
+v -2.741870 1.650000 0.168750
+v -2.654370 1.446090 0.000000
+v -2.696980 1.426410 0.168750
+v -2.693460 1.642280 0.000000
+v -2.520000 1.200000 0.000000
+v -2.550270 1.169970 0.168750
+v -2.273120 0.953906 0.000000
+v -2.283750 0.916827 0.168750
+v -1.999960 0.793395 0.000000
+v -1.999870 0.792969 0.019789
+v -1.994260 0.760655 0.151412
+v -1.992870 0.750194 0.168750
+v -1.994120 0.759687 -0.153196
+v -1.999870 0.792969 -0.019789
+v -1.992870 0.750194 -0.168750
+v -2.283750 0.916827 -0.168750
+v -1.925640 1.212500 -0.356344
+v -1.958330 1.212500 0.000000
+v -1.966610 0.750000 -0.363926
+v -1.992840 0.750000 -0.169036
+v -1.991460 0.738075 -0.184568
+v -1.956370 0.529688 -0.362031
+v -1.986730 0.664278 -0.224854
+v -1.986610 0.659333 -0.225000
+v -1.986600 0.659116 -0.225000
+v -1.987050 0.582306 -0.183824
+v -1.987440 0.571589 -0.168750
+v -1.987890 0.561724 -0.150982
+v -1.989970 0.533029 -0.019792
+v -1.990020 0.532666 0.000000
+v -1.989580 0.529687 0.000000
+v -1.966610 0.750000 0.363926
+v -1.991460 0.738075 0.184568
+v -1.992840 0.750000 0.169036
+v -1.956370 0.529688 0.362031
+v -1.987230 0.679055 0.222681
+v -1.986610 0.659333 0.225000
+v -1.986510 0.654665 0.224870
+v -1.987020 0.582997 0.184677
+v -1.987440 0.571589 0.168750
+v -1.987820 0.563166 0.153872
+v -1.989970 0.533029 0.019792
+v -1.859580 0.750000 0.736189
+v -1.849890 0.529687 0.732355
+v -1.673990 0.750000 1.094420
+v -1.665270 0.529687 1.088720
+v -1.414210 0.750000 1.414210
+v -1.406850 0.529687 1.406850
+v -1.094420 0.750000 1.673990
+v -1.088720 0.529688 1.665270
+v -0.736189 0.750000 1.859580
+v -0.732355 0.529687 1.849890
+v -0.363926 0.750000 1.966610
+v -0.362031 0.529688 1.956370
+v 0.000000 0.750000 2.000000
+v 0.000000 0.529687 1.989580
+v 0.363926 0.750000 1.966610
+v 0.362031 0.529688 1.956370
+v 0.736189 0.750000 1.859580
+v 0.732355 0.529687 1.849890
+v 1.094420 0.750000 1.673990
+v 1.088720 0.529687 1.665270
+v 1.414210 0.750000 1.414210
+v 1.406850 0.529687 1.406850
+v 1.673990 0.750000 1.094420
+v 1.665270 0.529688 1.088720
+v 1.859580 0.750000 0.736189
+v 1.849890 0.529687 0.732355
+v 1.947450 0.750000 0.455468
+v 1.949300 0.734449 0.447439
+v 1.963610 0.641420 0.373486
+v 1.964530 0.636188 0.367591
+v 1.965120 0.632921 0.363655
+v 1.956370 0.529688 0.362031
+v 1.966600 0.624704 0.353755
+v 1.979470 0.557315 0.233048
+v 1.980810 0.550647 0.214338
+v 1.981180 0.548852 0.208890
+v 1.984380 0.533516 0.151283
+v 1.985210 0.529688 0.131764
+v 2.127390 0.607845 0.210782
+v 2.133790 0.576562 0.000000
+v 1.987830 0.518528 0.000000
+v 1.985700 0.527523 0.118998
+v 1.987770 0.518760 0.019916
+v 2.127390 0.607845 -0.210782
+v 1.980810 0.550647 -0.214338
+v 1.987810 0.518611 -0.011935
+v 1.985940 0.526438 -0.111956
+v 1.985210 0.529687 -0.131764
+v 1.984380 0.533516 -0.151283
+v 1.981180 0.548852 -0.208890
+v 2.414060 0.773438 0.000000
+v 2.377440 0.869019 -0.335215
+v 2.110540 0.690317 -0.361340
+v 2.296880 1.079300 -0.446953
+v 2.059380 0.940576 -0.481787
+v 2.216310 1.289570 -0.335215
+v 2.008210 1.190840 -0.361340
+v 2.179690 1.385160 0.000000
+v 1.984960 1.304590 0.000000
+v 1.996590 1.247710 -0.180670
+v 2.216310 1.289570 0.335215
+v 2.008210 1.190840 0.361340
+v 1.996590 1.247710 0.180670
+v 2.296880 1.079300 0.446953
+v 2.059380 0.940576 0.481787
+v 2.377440 0.869019 0.335215
+v 2.110540 0.690317 0.361340
+v 2.445310 1.261960 0.397705
+v 2.540780 1.095290 0.298279
+v 2.584180 1.019530 0.000000
+v 2.640620 1.349410 0.255937
+v 2.687500 1.293750 0.000000
+v 2.640620 1.349410 -0.255937
+v 2.540780 1.095290 -0.298279
+v 2.537500 1.471880 -0.341250
+v 2.445310 1.261960 -0.397705
+v 2.434380 1.594340 -0.255937
+v 2.349840 1.428640 -0.298279
+v 2.684380 1.906640 -0.235547
+v 2.558690 1.950950 -0.176660
+v 2.804690 2.098100 -0.200713
+v 2.649600 2.114510 -0.150535
+v 2.959780 2.081680 -0.150535
+v 2.810060 1.862330 -0.176660
+v 3.206250 2.250000 -0.140625
+v 3.000000 2.250000 -0.187500
+v 3.348050 2.330710 -0.112500
+v 3.137500 2.322660 -0.150000
+v 2.926950 2.314600 -0.112500
+v 2.793750 2.250000 -0.140625
+v 3.087500 2.296880 -0.112500
+v 2.924220 2.290430 -0.084375
+v 3.010940 2.255860 -0.098437
+v 2.887400 2.255050 -0.073828
+v 3.000000 2.250000 0.000000
+v 3.134470 2.256660 -0.073828
+v 3.190620 2.257030 0.000000
+v 3.134470 2.256660 0.073828
+v 3.325000 2.306250 0.000000
+v 3.250780 2.303320 0.084375
+v 3.443750 2.334380 0.000000
+v 3.348050 2.330710 0.112500
+v 3.300000 2.250000 0.000000
+v 3.206250 2.250000 0.140625
+v 3.030270 2.074220 0.000000
+v 2.959780 2.081680 0.150535
+v 3.000000 2.250000 0.187500
+v 2.804690 2.098100 0.200713
+v 2.793750 2.250000 0.140625
+v 2.649600 2.114510 0.150535
+v 2.926950 2.314600 0.112500
+v 3.137500 2.322660 0.150000
+v 2.924220 2.290430 0.084375
+v 3.087500 2.296880 0.112500
+v 2.887400 2.255050 0.073828
+v 3.010940 2.255860 0.098437
+v 2.831250 2.254690 0.000000
+v 2.850000 2.287500 0.000000
+v 2.831250 2.310940 0.000000
+v 2.684380 1.906640 0.235547
+v 2.558690 1.950950 0.176660
+v 2.537500 1.471880 0.341250
+v 2.434380 1.594340 0.255937
+v 2.349840 1.428640 0.298279
+v 2.700000 2.250000 0.000000
+v 2.501560 1.971090 0.000000
+v 2.867190 1.842190 0.000000
+v 2.810060 1.862330 0.176660
+v 3.250780 2.303320 -0.084375
+v 2.387500 1.650000 0.000000
+v 1.937440 0.902475 0.489818
+v 1.933530 1.172360 0.365961
+v 1.933640 1.161120 0.378034
+v 1.937400 0.903607 0.489811
+v 1.933210 1.256890 0.223024
+v 1.933260 1.260470 0.213069
+v 1.933120 1.222910 0.295712
+v 1.933180 1.212500 0.312878
+v 1.933260 1.201400 0.329403
+v 1.933360 1.189540 0.345388
+v 1.933460 1.179360 0.357797
+v 1.933480 1.176910 0.360779
+v 1.720780 1.725000 0.318435
+v 1.750000 1.725000 0.000000
+v 1.934480 1.293940 0.000000
+v 1.925640 1.212500 0.356344
+v 1.933360 1.265970 0.196389
+v 1.934460 1.293690 0.019915
+v 1.720780 1.725000 -0.318435
+v 1.925640 1.212500 -0.356344
+v 1.934460 1.293690 -0.019915
+v 1.933360 1.265970 -0.196389
+v 1.933260 1.260470 -0.213069
+v 1.933210 1.256890 -0.223024
+v 1.933120 1.222910 -0.295712
+v 1.933180 1.212500 -0.312878
+v 1.627130 1.725000 -0.644166
+v 1.820830 1.212500 -0.720852
+v 1.464740 1.725000 -0.957617
+v 1.639120 1.212500 -1.071620
+v 1.237440 1.725000 -1.237440
+v 1.384750 1.212500 -1.384750
+v 0.957617 1.725000 -1.464740
+v 1.071620 1.212500 -1.639120
+v 0.644166 1.725000 -1.627130
+v 0.720852 1.212500 -1.820830
+v 0.318435 1.725000 -1.720780
+v 0.356344 1.212500 -1.925640
+v 0.000000 1.725000 -1.750000
+v 0.000000 1.212500 -1.958330
+v -0.318435 1.725000 -1.720780
+v -0.356344 1.212500 -1.925640
+v -0.644166 1.725000 -1.627130
+v -0.720852 1.212500 -1.820830
+v -0.957617 1.725000 -1.464740
+v -1.071620 1.212500 -1.639120
+v -1.237440 1.725000 -1.237440
+v -1.384750 1.212500 -1.384750
+v -1.464740 1.725000 -0.957617
+v -1.639120 1.212500 -1.071620
+v -1.627130 1.725000 -0.644166
+v -1.820830 1.212500 -0.720852
+v -1.720780 1.725000 -0.318435
+v -1.330760 2.359380 -0.526836
+v -1.407360 2.359380 -0.260435
+v -1.253280 2.359380 -0.496161
+v -1.325410 2.359380 -0.245271
+v -1.128200 2.359380 -0.737593
+v -1.197950 2.359380 -0.783194
+v -1.093330 2.271880 -0.714793
+v -1.214540 2.271880 -0.480824
+v -1.088090 2.275000 -0.711373
+v -1.208730 2.275000 -0.478523
+v -1.300000 2.275000 0.000000
+v -1.306250 2.271880 0.000000
+v -1.260390 2.271880 -0.240412
+v -1.347920 2.359380 0.000000
+v -1.284440 2.271880 0.237689
+v -1.325410 2.359380 0.245271
+v -1.214540 2.271880 0.480824
+v -1.253280 2.359380 0.496161
+v -1.093330 2.271880 0.714793
+v -1.128200 2.359380 0.737593
+v -0.923658 2.271880 0.923658
+v -0.953121 2.359380 0.953121
+v -0.714793 2.271880 1.093330
+v -0.737593 2.359380 1.128200
+v -0.480824 2.271880 1.214540
+v -0.496161 2.359380 1.253280
+v -0.237689 2.271880 1.284440
+v -0.245271 2.359380 1.325410
+v 0.000000 2.271880 1.306250
+v 0.000000 2.359380 1.347920
+v 0.237689 2.271880 1.284440
+v 0.245271 2.359380 1.325410
+v 0.480824 2.271880 1.214540
+v 0.496161 2.359380 1.253280
+v 0.714793 2.271880 1.093330
+v 0.737593 2.359380 1.128200
+v 0.923658 2.271880 0.923658
+v 0.953121 2.359380 0.953121
+v 1.093330 2.271880 0.714793
+v 1.128200 2.359380 0.737593
+v 1.214540 2.271880 0.480824
+v 1.253280 2.359380 0.496161
+v 1.284440 2.271880 0.237689
+v 1.325410 2.359380 0.245271
+v 1.306250 2.271880 0.000000
+v 1.347920 2.359380 0.000000
+v 1.284440 2.271880 -0.237689
+v 1.325410 2.359380 -0.245271
+v 1.214540 2.271880 -0.480824
+v 1.253280 2.359380 -0.496161
+v 1.093330 2.271880 -0.714793
+v 1.128200 2.359380 -0.737593
+v 0.923658 2.271880 -0.923658
+v 0.953121 2.359380 -0.953121
+v 0.714793 2.271880 -1.093330
+v 0.737593 2.359380 -1.128200
+v 0.480824 2.271880 -1.214540
+v 0.496161 2.359380 -1.253280
+v 0.237689 2.271880 -1.284440
+v 0.245271 2.359380 -1.325410
+v 0.000000 2.271880 -1.306250
+v 0.000000 2.359380 -1.347920
+v -0.237689 2.271880 -1.284440
+v -0.245271 2.359380 -1.325410
+v -0.480824 2.271880 -1.214540
+v -0.496161 2.359380 -1.253280
+v -0.714793 2.271880 -1.093330
+v -0.737593 2.359380 -1.128200
+v -0.923658 2.271880 -0.923658
+v -0.953121 2.359380 -0.953121
+v -0.711373 2.275000 -1.088090
+v -0.919239 2.275000 -0.919239
+v -0.701112 2.325000 -1.072400
+v -0.905981 2.325000 -0.905981
+v -0.471621 2.325000 -1.191290
+v -0.478523 2.275000 -1.208730
+v 0.000000 2.325000 -1.281250
+v 0.000000 2.275000 -1.300000
+v 0.471621 2.325000 -1.191290
+v 0.478523 2.275000 -1.208730
+v 0.701112 2.325000 -1.072400
+v 0.711373 2.275000 -1.088090
+v 0.905981 2.325000 -0.905981
+v 0.919239 2.275000 -0.919239
+v 1.072400 2.325000 -0.701112
+v 1.088090 2.275000 -0.711373
+v 1.191290 2.325000 -0.471621
+v 1.208730 2.275000 -0.478523
+v 1.281250 2.325000 0.000000
+v 1.300000 2.275000 0.000000
+v 1.191290 2.325000 0.471621
+v 1.208730 2.275000 0.478523
+v 1.072400 2.325000 0.701112
+v 1.088090 2.275000 0.711373
+v 0.905981 2.325000 0.905981
+v 0.919239 2.275000 0.919239
+v 0.701112 2.325000 1.072400
+v 0.711373 2.275000 1.088090
+v 0.471621 2.325000 1.191290
+v 0.478523 2.275000 1.208730
+v 0.000000 2.325000 1.281250
+v 0.000000 2.275000 1.300000
+v -0.471621 2.325000 1.191290
+v -0.478523 2.275000 1.208730
+v -0.701112 2.325000 1.072400
+v -0.711373 2.275000 1.088090
+v -0.905981 2.325000 0.905981
+v -0.919239 2.275000 0.919239
+v -1.072400 2.325000 0.701112
+v -1.088090 2.275000 0.711373
+v -1.191290 2.325000 0.471621
+v -1.208730 2.275000 0.478523
+v -1.281250 2.325000 0.000000
+v -1.150000 2.375000 0.000000
+v -1.069260 2.375000 0.423309
+v -0.516667 2.425000 0.000000
+v -0.480391 2.425000 0.190182
+v -0.480391 2.425000 -0.190182
+v -1.069260 2.375000 -0.423309
+v -0.185958 2.550000 -0.073619
+v -0.200000 2.550000 0.000000
+v -0.120098 2.631250 -0.047546
+v -0.129167 2.631250 0.000000
+v -0.091335 2.631250 -0.091335
+v -0.141421 2.550000 -0.141421
+v -0.047546 2.631250 -0.120098
+v -0.073619 2.550000 -0.185958
+v 0.000000 2.631250 -0.129167
+v 0.000000 2.550000 -0.200000
+v 0.047546 2.631250 -0.120098
+v 0.073619 2.550000 -0.185958
+v 0.091335 2.631250 -0.091335
+v 0.141421 2.550000 -0.141421
+v 0.120098 2.631250 -0.047546
+v 0.185958 2.550000 -0.073619
+v 0.129167 2.631250 0.000000
+v 0.200000 2.550000 0.000000
+v 0.120098 2.631250 0.047546
+v 0.185958 2.550000 0.073619
+v 0.091335 2.631250 0.091335
+v 0.141421 2.550000 0.141421
+v 0.047546 2.631250 0.120098
+v 0.073619 2.550000 0.185958
+v 0.000000 2.631250 0.129167
+v 0.000000 2.550000 0.200000
+v -0.047546 2.631250 0.120098
+v -0.073619 2.550000 0.185958
+v -0.091335 2.631250 0.091335
+v -0.141421 2.550000 0.141421
+v -0.120098 2.631250 0.047546
+v -0.185958 2.550000 0.073619
+v -0.365339 2.425000 0.365339
+v -0.216951 2.750000 0.085889
+v -0.164992 2.750000 0.164992
+v -0.445524 2.912500 0.176379
+v -0.338822 2.912500 0.338822
+v -0.479167 2.912500 0.000000
+v -0.233333 2.750000 0.000000
+v -0.445524 2.912500 -0.176379
+v -0.216951 2.750000 -0.085889
+v -0.338822 2.912500 -0.338822
+v -0.164992 2.750000 -0.164992
+v -0.176379 2.912500 -0.445524
+v -0.085889 2.750000 -0.216951
+v 0.000000 2.912500 -0.479167
+v 0.000000 2.750000 -0.233333
+v 0.176379 2.912500 -0.445524
+v 0.085889 2.750000 -0.216951
+v 0.338822 2.912500 -0.338822
+v 0.164992 2.750000 -0.164992
+v 0.445524 2.912500 -0.176379
+v 0.216951 2.750000 -0.085889
+v 0.479167 2.912500 0.000000
+v 0.233333 2.750000 0.000000
+v 0.445524 2.912500 0.176379
+v 0.216951 2.750000 0.085889
+v 0.338822 2.912500 0.338822
+v 0.164992 2.750000 0.164992
+v 0.176379 2.912500 0.445524
+v 0.085889 2.750000 0.216951
+v 0.000000 2.912500 0.479167
+v 0.000000 2.750000 0.233333
+v -0.176379 2.912500 0.445524
+v -0.085889 2.750000 0.216951
+v -0.146279 2.975000 0.369494
+v 0.000000 2.975000 0.397396
+v -0.281001 2.975000 0.281001
+v 0.000000 3.000000 0.000000
+v -0.369494 2.975000 0.146279
+v -0.397396 2.975000 0.000000
+v -0.369494 2.975000 -0.146279
+v -0.281001 2.975000 -0.281001
+v -0.146279 2.975000 -0.369494
+v 0.000000 2.975000 -0.397396
+v 0.146279 2.975000 -0.369494
+v 0.281001 2.975000 -0.281001
+v 0.369494 2.975000 -0.146279
+v 0.397396 2.975000 0.000000
+v 0.369494 2.975000 0.146279
+v 0.281001 2.975000 0.281001
+v 0.146279 2.975000 0.369494
+v -0.190182 2.425000 0.480391
+v 0.000000 2.425000 0.516667
+v 0.000000 2.375000 1.150000
+v -0.423309 2.375000 1.069260
+v -0.618241 2.375000 0.941215
+v -0.813173 2.375000 0.813173
+v 0.190182 2.425000 0.480391
+v 0.365339 2.425000 0.365339
+v 0.813173 2.375000 0.813173
+v 0.618241 2.375000 0.941215
+v 0.423309 2.375000 1.069260
+v 0.480391 2.425000 0.190182
+v 0.516667 2.425000 0.000000
+v 1.150000 2.375000 0.000000
+v 1.069260 2.375000 0.423309
+v 0.941215 2.375000 0.618241
+v 0.480391 2.425000 -0.190182
+v 0.365339 2.425000 -0.365339
+v 0.813173 2.375000 -0.813173
+v 0.941215 2.375000 -0.618241
+v 1.069260 2.375000 -0.423309
+v 0.190182 2.425000 -0.480391
+v 0.000000 2.425000 -0.516667
+v 0.000000 2.375000 -1.150000
+v 0.423309 2.375000 -1.069260
+v 0.618241 2.375000 -0.941215
+v -0.190182 2.425000 -0.480391
+v -0.365339 2.425000 -0.365339
+v -0.813173 2.375000 -0.813173
+v -0.618241 2.375000 -0.941215
+v -0.423309 2.375000 -1.069260
+v -0.941215 2.375000 -0.618241
+v -1.072400 2.325000 -0.701112
+v -1.191290 2.325000 -0.471621
+v -0.941215 2.375000 0.618241
+v -1.012050 2.359380 -1.012050
+v -0.783194 2.359380 -1.197950
+v -0.526836 2.359380 -1.330760
+v -0.260435 2.359380 -1.407360
+v 0.000000 2.359380 -1.431250
+v 0.260435 2.359380 -1.407360
+v 0.526836 2.359380 -1.330760
+v 0.783194 2.359380 -1.197950
+v 1.012050 2.359380 -1.012050
+v 1.197950 2.359380 -0.783194
+v 1.330760 2.359380 -0.526836
+v 1.407360 2.359380 -0.260435
+v 1.431250 2.359380 0.000000
+v 1.407360 2.359380 0.260435
+v 1.330760 2.359380 0.526836
+v 1.197950 2.359380 0.783194
+v 1.627130 1.725000 0.644166
+v 1.464740 1.725000 0.957617
+v 1.820830 1.212500 0.720852
+v 1.639120 1.212500 1.071620
+v 1.237440 1.725000 1.237440
+v 1.384750 1.212500 1.384750
+v 0.957617 1.725000 1.464740
+v 1.071620 1.212500 1.639120
+v 0.783194 2.359380 1.197950
+v 1.012050 2.359380 1.012050
+v 0.526836 2.359380 1.330760
+v 0.644166 1.725000 1.627130
+v 0.260435 2.359380 1.407360
+v 0.318435 1.725000 1.720780
+v 0.720852 1.212500 1.820830
+v 0.356344 1.212500 1.925640
+v 0.000000 1.725000 1.750000
+v 0.000000 1.212500 1.958330
+v -0.318435 1.725000 1.720780
+v -0.356344 1.212500 1.925640
+v -0.260435 2.359380 1.407360
+v 0.000000 2.359380 1.431250
+v -0.526836 2.359380 1.330760
+v -0.644166 1.725000 1.627130
+v -0.783194 2.359380 1.197950
+v -0.957617 1.725000 1.464740
+v -0.720852 1.212500 1.820830
+v -1.071620 1.212500 1.639120
+v -1.237440 1.725000 1.237440
+v -1.384750 1.212500 1.384750
+v -1.464740 1.725000 0.957617
+v -1.639120 1.212500 1.071620
+v -1.197950 2.359380 0.783194
+v -1.012050 2.359380 1.012050
+v -1.330760 2.359380 0.526836
+v -1.627130 1.725000 0.644166
+v -1.407360 2.359380 0.260435
+v -1.720780 1.725000 0.318435
+v -1.820830 1.212500 0.720852
+v -1.925640 1.212500 0.356344
+v -1.750000 1.725000 0.000000
+v -1.431250 2.359380 0.000000
+v -1.571460 2.099920 0.000000
+v -1.607390 1.991600 -0.224862
+v -1.609380 1.987430 -0.225000
+v -1.611230 1.983610 -0.224885
+v -1.646860 1.920000 -0.184349
+v -1.653280 1.910060 -0.168750
+v -1.658550 1.902210 -0.153192
+v -1.678350 1.875220 -0.019791
+v -1.581860 2.056010 -0.182704
+v -1.579210 2.064780 -0.168750
+v -1.576750 2.073750 -0.150642
+v -1.571500 2.099590 -0.019798
+v -2.574300 2.012990 -0.168750
+v -2.501250 1.945310 -0.225000
+v -2.855990 1.889830 -0.168750
+v -2.759840 1.845120 -0.225000
+v -2.948130 1.650000 -0.168750
+v -2.845000 1.650000 -0.225000
+v -2.884430 1.339800 -0.168750
+v -2.790700 1.383110 -0.225000
+v -2.683480 1.037840 -0.168750
+v -2.616870 1.103910 -0.225000
+v -2.330470 0.753680 -0.168750
+v -2.307110 0.835254 -0.225000
+v -2.927030 1.320120 0.000000
+v -2.713750 1.007810 0.000000
+v -2.683480 1.037840 0.168750
+v -2.884430 1.339800 0.168750
+v -2.995000 1.650000 0.000000
+v -2.948130 1.650000 0.168750
+v -2.899690 1.910160 0.000000
+v -2.855990 1.889830 0.168750
+v -2.607500 2.043750 0.000000
+v -2.574300 2.012990 0.168750
+v -1.579210 2.064780 0.168750
+v -1.571500 2.099590 0.019798
+v -1.579070 2.065280 0.167849
+v -2.501250 1.945310 0.225000
+v -1.609380 1.987430 0.225000
+v -1.607390 1.991600 0.224862
+v -1.582380 2.054370 0.184995
+v -2.759840 1.845120 0.225000
+v -2.845000 1.650000 0.225000
+v -2.330470 0.753680 0.168750
+v -2.341090 0.716602 0.000000
+v -2.616870 1.103910 0.225000
+v -2.790700 1.383110 0.225000
+v -1.859580 0.750000 -0.736189
+v -1.673990 0.750000 -1.094420
+v -1.849890 0.529687 -0.732355
+v -1.665270 0.529688 -1.088720
+v -1.414210 0.750000 -1.414210
+v -1.406850 0.529687 -1.406850
+v -1.094420 0.750000 -1.673990
+v -1.088720 0.529687 -1.665270
+v -0.736189 0.750000 -1.859580
+v -0.732355 0.529687 -1.849890
+v -0.363926 0.750000 -1.966610
+v -0.362031 0.529688 -1.956370
+v 0.000000 0.750000 -2.000000
+v 0.000000 0.529687 -1.989580
+v 0.363926 0.750000 -1.966610
+v 0.362031 0.529688 -1.956370
+v 0.736189 0.750000 -1.859580
+v 0.732355 0.529687 -1.849890
+v 1.094420 0.750000 -1.673990
+v 1.088720 0.529688 -1.665270
+v 1.414210 0.750000 -1.414210
+v 1.406850 0.529687 -1.406850
+v 1.673990 0.750000 -1.094420
+v 1.665270 0.529687 -1.088720
+v 1.859580 0.750000 -0.736189
+v 1.849890 0.529687 -0.732355
+v 1.947450 0.750000 -0.455468
+v 1.949300 0.734449 -0.447439
+v 1.963610 0.641420 -0.373486
+v 1.964530 0.636188 -0.367591
+v 1.965120 0.632937 -0.363655
+v 1.956370 0.529688 -0.362031
+v 1.782090 0.337500 -0.705515
+v 1.884670 0.337500 -0.348763
+v 1.472160 0.093750 -0.582817
+v 1.556900 0.093750 -0.288108
+v 1.230030 0.025781 -0.486959
+v 1.300830 0.025781 -0.240722
+v 1.325240 0.093750 -0.866415
+v 1.107280 0.025781 -0.723913
+v 1.119590 0.093750 -1.119590
+v 0.935443 0.025781 -0.935443
+v 0.866415 0.093750 -1.325240
+v 0.723913 0.025781 -1.107280
+v 0.582817 0.093750 -1.472160
+v 0.486959 0.025781 -1.230030
+v 0.288108 0.093750 -1.556900
+v 0.240722 0.025781 -1.300830
+v 0.000000 0.093750 -1.583330
+v 0.000000 0.025781 -1.322920
+v -0.288108 0.093750 -1.556900
+v -0.240722 0.025781 -1.300830
+v -0.582817 0.093750 -1.472160
+v -0.486959 0.025781 -1.230030
+v -0.866415 0.093750 -1.325240
+v -0.723913 0.025781 -1.107280
+v -1.119590 0.093750 -1.119590
+v -0.935443 0.025781 -0.935443
+v -1.325240 0.093750 -0.866415
+v -1.107280 0.025781 -0.723913
+v -1.472160 0.093750 -0.582817
+v -1.230030 0.025781 -0.486959
+v -1.556900 0.093750 -0.288108
+v -1.300830 0.025781 -0.240722
+v -1.583330 0.093750 0.000000
+v -1.322920 0.025781 0.000000
+v -1.556900 0.093750 0.288108
+v -1.300830 0.025781 0.240722
+v -1.472160 0.093750 0.582817
+v -1.230030 0.025781 0.486959
+v -1.325240 0.093750 0.866415
+v -1.107280 0.025781 0.723913
+v -1.119590 0.093750 1.119590
+v -0.935443 0.025781 0.935443
+v -0.866415 0.093750 1.325240
+v -0.723913 0.025781 1.107280
+v -0.582817 0.093750 1.472160
+v -0.486959 0.025781 1.230030
+v -0.288108 0.093750 1.556900
+v -0.240722 0.025781 1.300830
+v 0.000000 0.093750 1.583330
+v 0.000000 0.025781 1.322920
+v 0.288108 0.093750 1.556900
+v 0.240722 0.025781 1.300830
+v 0.582817 0.093750 1.472160
+v 0.486959 0.025781 1.230030
+v 0.866415 0.093750 1.325240
+v 0.723913 0.025781 1.107280
+v 1.119590 0.093750 1.119590
+v 0.935443 0.025781 0.935443
+v 1.325240 0.093750 0.866415
+v 1.107280 0.025781 0.723913
+v 1.472160 0.093750 0.582817
+v 1.230030 0.025781 0.486959
+v 1.556900 0.093750 0.288108
+v 1.300830 0.025781 0.240722
+v 1.583330 0.093750 0.000000
+v 1.322920 0.025781 0.000000
+v 0.000000 0.000000 0.000000
+v 1.604240 0.337500 -1.048820
+v 1.355290 0.337500 -1.355290
+v 1.048820 0.337500 -1.604240
+v 0.705515 0.337500 -1.782090
+v 0.348763 0.337500 -1.884670
+v 0.000000 0.337500 -1.916670
+v -0.348763 0.337500 -1.884670
+v -0.705515 0.337500 -1.782090
+v -1.048820 0.337500 -1.604240
+v -1.355290 0.337500 -1.355290
+v -1.604240 0.337500 -1.048820
+v -1.782090 0.337500 -0.705515
+v 1.933480 1.176910 -0.360779
+v 1.933460 1.179360 -0.357797
+v 1.933530 1.172360 -0.365961
+v 1.933670 1.158730 -0.380472
+v 1.937160 0.911797 -0.489652
+v 1.937440 0.902475 -0.489818
+v 1.938120 0.882512 -0.489345
+v 1.946480 0.758825 -0.459586
+v 1.933260 1.201400 -0.329403
+v 1.933360 1.189540 -0.345388
+v 1.966820 0.623499 -0.352226
+v 1.979680 0.556236 -0.230166
+v 1.916670 0.337500 0.000000
+v 1.884670 0.337500 0.348763
+v 1.937710 0.894064 0.489757
+v 1.946480 0.758825 0.459586
+v 1.782090 0.337500 0.705515
+v 1.604240 0.337500 1.048820
+v 1.355290 0.337500 1.355290
+v 1.048820 0.337500 1.604240
+v 0.705515 0.337500 1.782090
+v 0.348763 0.337500 1.884670
+v 0.000000 0.337500 1.916670
+v -0.348763 0.337500 1.884670
+v -0.705515 0.337500 1.782090
+v -1.048820 0.337500 1.604240
+v -1.355290 0.337500 1.355290
+v -1.604240 0.337500 1.048820
+v -1.782090 0.337500 0.705515
+v -1.884670 0.337500 0.348763
+v -2.307110 0.835254 0.225000
+v -1.916670 0.337500 0.000000
+v -1.884670 0.337500 -0.348763
+v -2.550270 1.169970 -0.168750
+v -2.696980 1.426410 -0.168750
+v -2.741870 1.650000 -0.168750
+v -2.663700 1.800400 -0.168750
+v -2.428200 1.877640 -0.168750
+v -1.618200 1.969810 0.222529
+v -1.646880 1.919970 0.184304
+# 726 vertices, 0 vertices normals
+
+f 1 3 2
+f 1 5 4
+f 1 4 6
+f 1 6 3
+f 7 2 8
+f 2 7 1
+f 9 8 10
+f 8 9 7
+f 11 10 12
+f 13 10 11
+f 10 13 9
+f 14 12 15
+f 12 14 11
+f 16 15 17
+f 15 16 14
+f 18 20 19
+f 16 20 18
+f 16 21 20
+f 21 16 17
+f 22 18 23
+f 22 16 18
+f 24 16 22
+f 25 16 24
+f 26 18 27
+f 28 23 26
+f 28 22 23
+f 28 24 22
+f 24 28 29
+f 26 23 18
+f 28 30 29
+f 31 30 28
+f 31 32 30
+f 31 33 32
+f 31 34 33
+f 31 35 34
+f 31 36 35
+f 31 37 36
+f 31 38 37
+f 31 39 38
+f 40 39 31
+f 41 43 42
+f 42 44 41
+f 45 44 42
+f 46 44 45
+f 47 44 46
+f 48 44 47
+f 49 44 48
+f 50 44 49
+f 51 44 50
+f 39 44 51
+f 44 39 40
+f 41 53 52
+f 53 41 44
+f 52 55 54
+f 55 52 53
+f 54 57 56
+f 57 54 55
+f 56 59 58
+f 59 56 57
+f 58 61 60
+f 61 58 59
+f 60 63 62
+f 63 60 61
+f 62 65 64
+f 65 62 63
+f 64 67 66
+f 67 64 65
+f 66 69 68
+f 69 66 67
+f 68 71 70
+f 71 68 69
+f 70 73 72
+f 73 70 71
+f 72 75 74
+f 75 72 73
+f 74 77 76
+f 77 74 75
+f 76 79 78
+f 77 79 76
+f 77 80 79
+f 77 81 80
+f 77 82 81
+f 83 82 77
+f 83 84 82
+f 83 85 84
+f 83 86 85
+f 83 87 86
+f 83 88 87
+f 89 88 83
+f 90 92 91
+f 90 86 87
+f 90 87 88
+f 90 88 89
+f 90 89 93
+f 90 93 94
+f 90 94 92
+f 91 96 95
+f 91 92 97
+f 91 97 98
+f 91 98 99
+f 91 99 100
+f 91 100 101
+f 91 101 96
+f 102 104 103
+f 102 91 95
+f 102 95 104
+f 103 106 105
+f 106 103 104
+f 105 108 107
+f 108 105 106
+f 107 110 109
+f 107 108 111
+f 107 111 110
+f 109 113 112
+f 109 110 114
+f 109 114 113
+f 112 116 115
+f 116 112 113
+f 115 118 117
+f 118 115 116
+f 119 117 120
+f 119 115 117
+f 120 102 121
+f 120 117 102
+f 122 121 123
+f 121 122 120
+f 123 125 124
+f 125 123 121
+f 124 127 126
+f 127 124 125
+f 126 129 128
+f 129 126 127
+f 130 128 131
+f 128 130 126
+f 132 131 133
+f 132 130 131
+f 134 130 132
+f 134 135 130
+f 136 132 137
+f 132 136 134
+f 138 137 139
+f 136 137 138
+f 139 141 140
+f 141 139 137
+f 142 140 143
+f 140 142 139
+f 144 143 145
+f 143 144 142
+f 146 144 145
+f 147 144 146
+f 146 148 147
+f 149 148 146
+f 149 150 148
+f 151 150 149
+f 151 152 150
+f 153 152 151
+f 153 154 152
+f 155 154 153
+f 155 156 154
+f 156 155 157
+f 158 157 155
+f 157 158 159
+f 160 159 158
+f 159 160 161
+f 162 158 163
+f 160 158 162
+f 164 163 165
+f 162 163 164
+f 166 165 167
+f 164 165 166
+f 166 167 146
+f 146 168 166
+f 169 162 164
+f 162 169 170
+f 161 171 159
+f 161 172 171
+f 172 173 171
+f 174 173 172
+f 174 119 173
+f 119 174 175
+f 176 161 160
+f 177 161 176
+f 161 177 172
+f 157 178 156
+f 157 179 178
+f 159 179 157
+f 159 171 179
+f 165 153 151
+f 153 165 163
+f 163 155 153
+f 155 163 158
+f 146 167 149
+f 167 151 149
+f 151 167 165
+f 168 164 166
+f 164 168 169
+f 145 168 146
+f 147 142 144
+f 180 142 147
+f 145 169 168
+f 143 169 145
+f 148 180 147
+f 180 148 150
+f 143 170 169
+f 140 170 143
+f 140 176 170
+f 141 176 140
+f 180 139 142
+f 138 139 180
+f 150 138 180
+f 138 150 152
+f 152 136 138
+f 136 152 154
+f 170 160 162
+f 160 170 176
+f 154 134 136
+f 134 154 156
+f 156 135 134
+f 156 178 135
+f 141 177 176
+f 133 177 141
+f 131 177 133
+f 137 133 141
+f 133 137 132
+f 131 181 177
+f 128 181 131
+f 135 126 130
+f 124 126 135
+f 178 124 135
+f 124 178 123
+f 179 123 178
+f 122 123 179
+f 171 122 179
+f 122 171 173
+f 177 174 172
+f 174 177 181
+f 173 120 122
+f 120 173 119
+f 175 115 119
+f 175 112 115
+f 113 182 116
+f 183 182 113
+f 184 182 183
+f 182 184 185
+f 181 175 174
+f 109 175 181
+f 175 109 112
+f 114 183 113
+f 114 187 186
+f 114 186 188
+f 114 188 189
+f 114 189 190
+f 114 190 191
+f 114 191 192
+f 114 192 193
+f 114 193 183
+f 194 196 195
+f 197 187 194
+f 197 186 187
+f 197 188 186
+f 188 197 189
+f 194 187 198
+f 194 198 199
+f 194 199 196
+f 195 201 200
+f 195 196 202
+f 195 202 203
+f 195 203 204
+f 204 201 195
+f 205 201 204
+f 206 201 205
+f 201 206 207
+f 200 209 208
+f 209 200 201
+f 208 211 210
+f 211 208 209
+f 210 213 212
+f 213 210 211
+f 212 215 214
+f 215 212 213
+f 214 217 216
+f 217 214 215
+f 216 219 218
+f 219 216 217
+f 218 221 220
+f 221 218 219
+f 220 223 222
+f 223 220 221
+f 222 225 224
+f 225 222 223
+f 224 227 226
+f 227 224 225
+f 226 229 228
+f 229 226 227
+f 228 231 230
+f 231 228 229
+f 230 233 232
+f 233 230 231
+f 232 26 234
+f 26 232 233
+f 235 234 236
+f 234 235 232
+f 237 236 238
+f 237 235 236
+f 239 235 237
+f 239 240 235
+f 241 237 242
+f 237 241 239
+f 243 242 244
+f 243 241 242
+f 244 246 245
+f 244 242 247
+f 244 247 246
+f 247 248 246
+f 248 247 238
+f 246 250 249
+f 250 246 248
+f 249 252 251
+f 252 249 250
+f 251 254 253
+f 254 251 252
+f 253 256 255
+f 256 253 254
+f 255 258 257
+f 258 255 256
+f 257 260 259
+f 260 257 258
+f 259 262 261
+f 262 259 260
+f 261 264 263
+f 264 261 262
+f 263 266 265
+f 266 263 264
+f 265 268 267
+f 268 265 266
+f 267 270 269
+f 270 267 268
+f 269 272 271
+f 272 269 270
+f 271 274 273
+f 274 271 272
+f 273 276 275
+f 276 273 274
+f 275 278 277
+f 278 275 276
+f 277 280 279
+f 280 277 278
+f 279 282 281
+f 282 279 280
+f 281 284 283
+f 284 281 282
+f 283 286 285
+f 286 283 284
+f 285 288 287
+f 288 285 286
+f 287 290 289
+f 290 287 288
+f 289 292 291
+f 292 289 290
+f 291 294 293
+f 294 291 292
+f 293 296 295
+f 296 293 294
+f 295 298 297
+f 298 295 296
+f 297 300 299
+f 300 297 298
+f 299 302 301
+f 302 299 300
+f 301 304 303
+f 304 301 302
+f 305 303 306
+f 305 301 303
+f 307 306 308
+f 307 305 306
+f 309 305 307
+f 309 310 305
+f 311 310 309
+f 311 312 310
+f 313 312 311
+f 313 314 312
+f 315 314 313
+f 315 316 314
+f 317 316 315
+f 317 318 316
+f 319 318 317
+f 319 320 318
+f 321 320 319
+f 321 322 320
+f 323 322 321
+f 323 324 322
+f 325 324 323
+f 325 326 324
+f 327 326 325
+f 327 328 326
+f 329 328 327
+f 329 330 328
+f 331 330 329
+f 331 332 330
+f 333 332 331
+f 333 334 332
+f 335 334 333
+f 335 336 334
+f 337 336 335
+f 337 338 336
+f 339 338 337
+f 339 340 338
+f 341 340 339
+f 341 342 340
+f 343 342 341
+f 343 344 342
+f 345 344 343
+f 345 346 344
+f 347 346 345
+f 347 245 346
+f 348 345 349
+f 345 348 347
+f 350 349 351
+f 350 348 349
+f 352 348 350
+f 352 353 348
+f 354 350 355
+f 350 354 352
+f 356 355 357
+f 356 354 355
+f 358 354 356
+f 358 359 354
+f 360 359 358
+f 360 361 359
+f 362 361 360
+f 362 363 361
+f 364 363 362
+f 364 365 363
+f 366 365 364
+f 366 367 365
+f 368 367 366
+f 368 369 367
+f 370 369 368
+f 370 371 369
+f 372 371 370
+f 372 373 371
+f 374 373 372
+f 374 375 373
+f 376 375 374
+f 376 377 375
+f 378 377 376
+f 378 379 377
+f 380 379 378
+f 380 381 379
+f 382 381 380
+f 382 383 381
+f 384 383 382
+f 384 385 383
+f 385 386 383
+f 386 385 351
+f 387 382 388
+f 382 387 384
+f 389 388 390
+f 389 387 388
+f 391 387 389
+f 391 392 387
+f 393 392 391
+f 393 394 392
+f 395 394 393
+f 395 396 394
+f 397 396 395
+f 397 398 396
+f 399 398 397
+f 399 400 398
+f 401 400 399
+f 401 402 400
+f 403 402 401
+f 403 404 402
+f 405 404 403
+f 405 406 404
+f 407 406 405
+f 407 408 406
+f 409 408 407
+f 409 410 408
+f 411 410 409
+f 411 412 410
+f 413 412 411
+f 413 414 412
+f 415 414 413
+f 415 416 414
+f 417 416 415
+f 417 418 416
+f 419 415 420
+f 419 417 415
+f 421 417 419
+f 421 390 417
+f 419 422 421
+f 421 422 423
+f 423 422 424
+f 424 422 425
+f 425 422 426
+f 426 422 427
+f 427 422 428
+f 428 422 429
+f 429 422 430
+f 430 422 431
+f 431 422 432
+f 432 422 433
+f 433 422 434
+f 434 422 435
+f 435 422 420
+f 420 422 419
+f 420 413 435
+f 420 415 413
+f 435 411 434
+f 435 413 411
+f 434 409 433
+f 434 411 409
+f 433 407 432
+f 433 409 407
+f 432 405 431
+f 432 407 405
+f 431 403 430
+f 431 405 403
+f 430 401 429
+f 430 403 401
+f 429 399 428
+f 429 401 399
+f 428 397 427
+f 428 399 397
+f 427 395 426
+f 427 397 395
+f 426 393 425
+f 426 395 393
+f 425 391 424
+f 425 393 391
+f 424 389 423
+f 424 391 389
+f 390 418 417
+f 390 388 418
+f 423 390 421
+f 423 389 390
+f 392 384 387
+f 384 392 357
+f 383 436 381
+f 436 383 386
+f 388 380 418
+f 380 388 382
+f 381 437 379
+f 437 381 436
+f 418 378 416
+f 378 418 380
+f 436 438 437
+f 436 439 438
+f 386 439 436
+f 386 441 440
+f 386 440 439
+f 379 442 377
+f 442 379 437
+f 416 376 414
+f 376 416 378
+f 377 443 375
+f 443 377 442
+f 414 374 412
+f 374 414 376
+f 442 444 443
+f 442 446 445
+f 442 445 444
+f 437 446 442
+f 437 438 446
+f 375 447 373
+f 447 375 443
+f 412 372 410
+f 372 412 374
+f 373 448 371
+f 448 373 447
+f 410 370 408
+f 370 410 372
+f 447 449 448
+f 447 450 449
+f 443 450 447
+f 443 444 451
+f 443 451 450
+f 371 452 369
+f 452 371 448
+f 408 368 406
+f 368 408 370
+f 369 453 367
+f 453 369 452
+f 406 366 404
+f 366 406 368
+f 452 454 453
+f 452 456 455
+f 452 455 454
+f 448 456 452
+f 448 449 456
+f 367 457 365
+f 457 367 453
+f 404 364 402
+f 364 404 366
+f 365 458 363
+f 458 365 457
+f 402 362 400
+f 362 402 364
+f 457 459 458
+f 457 460 459
+f 453 460 457
+f 453 454 461
+f 453 461 460
+f 363 462 361
+f 462 363 458
+f 400 360 398
+f 360 400 362
+f 361 463 359
+f 463 361 462
+f 398 358 396
+f 358 398 360
+f 462 464 463
+f 462 466 465
+f 462 465 464
+f 458 466 462
+f 458 459 466
+f 396 356 394
+f 356 396 358
+f 357 385 384
+f 357 355 385
+f 394 357 392
+f 357 394 356
+f 359 352 354
+f 352 359 463
+f 463 353 352
+f 463 464 467
+f 463 467 353
+f 464 468 467
+f 468 464 308
+f 467 469 353
+f 469 467 468
+f 351 441 386
+f 351 349 470
+f 351 470 441
+f 355 351 385
+f 351 355 350
+f 353 347 348
+f 347 353 469
+f 349 343 470
+f 343 349 345
+f 470 341 441
+f 341 470 343
+f 441 339 440
+f 339 441 341
+f 440 337 439
+f 337 440 339
+f 439 335 438
+f 335 439 337
+f 438 333 446
+f 333 438 335
+f 446 331 445
+f 331 446 333
+f 445 329 444
+f 329 445 331
+f 444 327 451
+f 327 444 329
+f 451 325 450
+f 325 451 327
+f 450 323 449
+f 323 450 325
+f 449 321 456
+f 321 449 323
+f 456 319 455
+f 319 456 321
+f 455 317 454
+f 317 455 319
+f 454 315 461
+f 315 454 317
+f 461 313 460
+f 313 461 315
+f 460 311 459
+f 311 460 313
+f 459 309 466
+f 309 459 311
+f 466 307 465
+f 307 466 309
+f 308 243 468
+f 308 306 243
+f 465 308 464
+f 308 465 307
+f 302 471 304
+f 302 472 471
+f 310 301 305
+f 310 299 301
+f 300 472 302
+f 300 473 472
+f 298 473 300
+f 298 474 473
+f 312 299 310
+f 312 295 297
+f 312 297 299
+f 294 475 296
+f 294 476 475
+f 314 295 312
+f 314 291 293
+f 314 293 295
+f 292 476 294
+f 292 477 476
+f 316 291 314
+f 316 289 291
+f 290 477 292
+f 290 478 477
+f 318 289 316
+f 318 287 289
+f 288 478 290
+f 288 479 478
+f 320 287 318
+f 320 285 287
+f 286 479 288
+f 286 480 479
+f 322 285 320
+f 322 283 285
+f 284 480 286
+f 284 481 480
+f 282 481 284
+f 282 482 481
+f 324 283 322
+f 324 279 281
+f 324 281 283
+f 280 482 282
+f 280 483 482
+f 278 483 280
+f 278 484 483
+f 326 279 324
+f 326 275 277
+f 326 277 279
+f 276 484 278
+f 276 485 484
+f 328 275 326
+f 328 273 275
+f 274 485 276
+f 274 486 485
+f 486 487 485
+f 488 487 486
+f 488 489 487
+f 489 488 490
+f 491 490 488
+f 490 491 492
+f 493 492 491
+f 492 493 494
+f 495 491 496
+f 493 491 495
+f 497 493 495
+f 493 497 498
+f 499 498 497
+f 500 498 499
+f 500 501 498
+f 501 500 502
+f 503 502 500
+f 502 503 504
+f 505 504 503
+f 504 505 506
+f 507 503 508
+f 505 503 507
+f 509 505 507
+f 505 509 510
+f 511 510 509
+f 512 510 511
+f 512 513 510
+f 513 512 514
+f 515 514 512
+f 514 515 516
+f 517 516 515
+f 516 517 518
+f 519 515 520
+f 517 515 519
+f 521 517 519
+f 517 521 522
+f 523 522 521
+f 524 522 523
+f 524 525 522
+f 525 524 526
+f 527 526 524
+f 526 527 27
+f 522 518 517
+f 518 522 525
+f 520 512 511
+f 512 520 515
+f 510 506 505
+f 506 510 513
+f 508 500 499
+f 500 508 503
+f 498 494 493
+f 494 498 501
+f 496 488 486
+f 488 496 491
+f 330 273 328
+f 330 271 273
+f 272 486 274
+f 272 496 486
+f 332 271 330
+f 332 269 271
+f 270 496 272
+f 270 495 496
+f 334 269 332
+f 334 267 269
+f 268 495 270
+f 268 497 495
+f 266 497 268
+f 266 499 497
+f 336 267 334
+f 336 263 265
+f 336 265 267
+f 264 499 266
+f 264 508 499
+f 262 508 264
+f 262 507 508
+f 338 263 336
+f 338 259 261
+f 338 261 263
+f 260 507 262
+f 260 509 507
+f 340 259 338
+f 340 257 259
+f 258 509 260
+f 258 511 509
+f 342 257 340
+f 342 255 257
+f 256 511 258
+f 256 520 511
+f 344 255 342
+f 344 253 255
+f 254 520 256
+f 254 519 520
+f 346 253 344
+f 346 251 253
+f 252 519 254
+f 252 521 519
+f 250 521 252
+f 250 523 521
+f 245 251 346
+f 245 246 249
+f 245 249 251
+f 248 523 250
+f 248 528 523
+f 469 245 347
+f 469 244 245
+f 468 244 469
+f 468 243 244
+f 306 241 243
+f 306 303 241
+f 303 239 241
+f 239 303 304
+f 238 528 248
+f 238 236 528
+f 242 238 247
+f 238 242 237
+f 304 240 239
+f 304 471 240
+f 296 474 298
+f 296 475 474
+f 236 529 528
+f 234 530 236
+f 234 531 530
+f 234 532 531
+f 234 533 532
+f 234 534 533
+f 234 535 534
+f 234 536 535
+f 234 5 536
+f 5 234 527
+f 236 530 537
+f 236 537 538
+f 236 538 539
+f 236 539 540
+f 236 540 529
+f 538 542 541
+f 538 531 542
+f 538 530 531
+f 538 537 530
+f 543 542 544
+f 541 542 543
+f 543 546 545
+f 543 544 546
+f 547 546 548
+f 545 546 547
+f 547 550 549
+f 547 548 550
+f 551 550 552
+f 549 550 551
+f 553 549 554
+f 549 553 547
+f 555 553 554
+f 556 553 555
+f 556 557 553
+f 558 557 556
+f 558 559 557
+f 560 559 558
+f 560 561 559
+f 562 561 560
+f 562 529 561
+f 563 529 562
+f 563 564 529
+f 563 565 564
+f 566 563 562
+f 567 563 566
+f 568 563 567
+f 563 568 569
+f 570 558 571
+f 558 570 560
+f 570 562 560
+f 562 570 566
+f 572 554 573
+f 555 554 572
+f 574 556 555
+f 556 574 575
+f 575 558 556
+f 558 575 571
+f 557 543 545
+f 543 557 559
+f 240 232 235
+f 230 232 240
+f 231 576 233
+f 231 577 576
+f 577 578 576
+f 578 577 579
+f 580 579 577
+f 579 580 581
+f 582 581 580
+f 581 582 583
+f 584 583 582
+f 583 584 585
+f 586 585 584
+f 585 586 587
+f 588 587 586
+f 587 588 589
+f 590 589 588
+f 589 590 591
+f 592 591 590
+f 591 592 593
+f 594 593 592
+f 593 594 595
+f 596 595 594
+f 595 596 597
+f 598 597 596
+f 597 598 599
+f 600 599 598
+f 599 600 601
+f 602 601 600
+f 603 601 602
+f 604 601 603
+f 605 601 604
+f 606 601 605
+f 601 606 607
+f 607 608 601
+f 607 609 608
+f 609 610 608
+f 609 611 610
+f 611 612 610
+f 612 611 613
+f 610 615 614
+f 615 610 612
+f 614 617 616
+f 617 614 615
+f 616 619 618
+f 619 616 617
+f 618 621 620
+f 621 618 619
+f 620 623 622
+f 623 620 621
+f 622 625 624
+f 625 622 623
+f 624 627 626
+f 627 624 625
+f 626 629 628
+f 629 626 627
+f 628 631 630
+f 631 628 629
+f 630 633 632
+f 633 630 631
+f 632 635 634
+f 635 632 633
+f 634 637 636
+f 637 634 635
+f 636 639 638
+f 639 636 637
+f 638 641 640
+f 641 638 639
+f 640 643 642
+f 643 640 641
+f 642 645 644
+f 645 642 643
+f 644 647 646
+f 647 644 645
+f 646 649 648
+f 649 646 647
+f 648 651 650
+f 651 648 649
+f 650 653 652
+f 653 650 651
+f 652 655 654
+f 655 652 653
+f 654 657 656
+f 657 654 655
+f 656 659 658
+f 659 656 657
+f 658 661 660
+f 661 658 659
+f 660 663 662
+f 663 660 661
+f 662 665 664
+f 665 662 663
+f 664 667 666
+f 667 664 665
+f 666 669 668
+f 669 666 667
+f 668 671 670
+f 671 668 669
+f 670 673 672
+f 673 670 671
+f 671 674 673
+f 667 674 669
+f 663 674 665
+f 659 674 661
+f 655 674 657
+f 651 674 653
+f 647 674 649
+f 643 674 645
+f 639 674 641
+f 635 674 637
+f 631 674 633
+f 627 674 629
+f 623 674 625
+f 619 674 621
+f 615 674 617
+f 672 613 611
+f 613 672 673
+f 613 674 612
+f 601 675 599
+f 601 608 675
+f 599 676 597
+f 599 675 676
+f 675 616 676
+f 675 614 616
+f 608 614 675
+f 608 610 614
+f 612 674 615
+f 597 677 595
+f 597 676 677
+f 595 678 593
+f 595 677 678
+f 677 620 678
+f 677 618 620
+f 676 618 677
+f 676 616 618
+f 593 679 591
+f 593 678 679
+f 591 680 589
+f 591 679 680
+f 679 624 680
+f 679 622 624
+f 678 622 679
+f 678 620 622
+f 621 674 623
+f 589 681 587
+f 589 680 681
+f 587 682 585
+f 587 681 682
+f 681 628 682
+f 681 626 628
+f 680 626 681
+f 680 624 626
+f 585 683 583
+f 585 682 683
+f 583 684 581
+f 583 683 684
+f 683 632 684
+f 683 630 632
+f 682 630 683
+f 682 628 630
+f 629 674 631
+f 581 685 579
+f 581 684 685
+f 579 686 578
+f 579 685 686
+f 685 636 686
+f 685 634 636
+f 684 634 685
+f 684 632 634
+f 471 230 240
+f 230 471 228
+f 472 228 471
+f 226 228 472
+f 227 580 229
+f 227 582 580
+f 473 226 472
+f 226 473 224
+f 225 582 227
+f 225 584 582
+f 474 224 473
+f 222 224 474
+f 223 584 225
+f 223 586 584
+f 475 222 474
+f 222 475 220
+f 221 586 223
+f 221 588 586
+f 476 220 475
+f 218 220 476
+f 219 588 221
+f 219 590 588
+f 477 218 476
+f 218 477 216
+f 217 590 219
+f 217 592 590
+f 478 216 477
+f 214 216 478
+f 215 592 217
+f 215 594 592
+f 479 214 478
+f 214 479 212
+f 213 594 215
+f 213 596 594
+f 617 674 619
+f 480 212 479
+f 210 212 480
+f 211 596 213
+f 211 598 596
+f 481 210 480
+f 210 481 208
+f 209 598 211
+f 209 600 598
+f 482 208 481
+f 200 208 482
+f 201 600 209
+f 201 688 687
+f 201 687 689
+f 201 689 690
+f 690 600 201
+f 691 600 690
+f 692 600 691
+f 693 600 692
+f 694 600 693
+f 600 694 602
+f 483 200 482
+f 200 483 195
+f 201 207 695
+f 201 695 696
+f 201 696 688
+f 484 195 483
+f 194 195 484
+f 485 194 484
+f 194 485 487
+f 487 197 194
+f 197 487 489
+f 197 190 189
+f 197 192 191
+f 197 191 190
+f 128 109 181
+f 129 109 128
+f 107 109 129
+f 111 196 110
+f 111 204 203
+f 111 203 202
+f 111 202 196
+f 108 204 111
+f 108 689 687
+f 108 687 688
+f 108 688 696
+f 108 696 695
+f 108 695 207
+f 108 207 206
+f 108 206 205
+f 108 205 204
+f 127 107 129
+f 127 105 107
+f 106 689 108
+f 692 689 106
+f 692 690 689
+f 690 692 691
+f 125 105 127
+f 125 103 105
+f 104 692 106
+f 605 692 104
+f 605 693 692
+f 605 694 693
+f 604 694 605
+f 603 694 604
+f 694 603 602
+f 121 103 125
+f 121 102 103
+f 697 607 606
+f 698 607 697
+f 96 607 698
+f 101 607 96
+f 100 607 101
+f 607 100 99
+f 99 609 607
+f 98 609 99
+f 97 609 98
+f 92 609 97
+f 609 92 699
+f 699 611 609
+f 699 672 611
+f 673 674 613
+f 95 605 104
+f 95 96 698
+f 95 698 697
+f 95 697 606
+f 95 606 605
+f 117 91 102
+f 117 118 90
+f 117 90 91
+f 83 93 89
+f 700 93 83
+f 700 94 93
+f 700 92 94
+f 92 700 699
+f 700 672 699
+f 700 670 672
+f 118 86 90
+f 118 81 82
+f 118 82 84
+f 118 84 85
+f 118 85 86
+f 116 81 118
+f 182 81 116
+f 701 81 182
+f 702 81 701
+f 702 80 81
+f 702 79 80
+f 79 702 78
+f 110 187 114
+f 110 196 199
+f 110 199 198
+f 110 198 187
+f 489 192 197
+f 76 184 489
+f 76 185 184
+f 76 182 185
+f 76 701 182
+f 76 702 701
+f 702 76 78
+f 489 184 183
+f 489 183 193
+f 489 193 192
+f 77 700 83
+f 77 703 700
+f 703 670 700
+f 703 668 670
+f 669 674 671
+f 490 76 489
+f 490 74 76
+f 75 703 77
+f 75 704 703
+f 704 668 703
+f 704 666 668
+f 492 74 490
+f 492 72 74
+f 73 704 75
+f 73 705 704
+f 705 666 704
+f 705 664 666
+f 665 674 667
+f 494 72 492
+f 494 70 72
+f 71 705 73
+f 71 706 705
+f 706 664 705
+f 706 662 664
+f 501 70 494
+f 501 68 70
+f 69 706 71
+f 69 707 706
+f 707 662 706
+f 707 660 662
+f 661 674 663
+f 502 68 501
+f 502 66 68
+f 67 707 69
+f 67 708 707
+f 708 660 707
+f 708 658 660
+f 504 66 502
+f 504 64 66
+f 65 708 67
+f 65 709 708
+f 709 658 708
+f 709 656 658
+f 506 64 504
+f 506 62 64
+f 63 709 65
+f 63 710 709
+f 710 656 709
+f 710 654 656
+f 513 62 506
+f 513 60 62
+f 61 710 63
+f 61 711 710
+f 711 654 710
+f 711 652 654
+f 653 674 655
+f 514 60 513
+f 514 58 60
+f 59 711 61
+f 59 712 711
+f 712 652 711
+f 712 650 652
+f 516 58 514
+f 516 56 58
+f 57 712 59
+f 57 713 712
+f 713 650 712
+f 713 648 650
+f 649 674 651
+f 518 56 516
+f 518 54 56
+f 55 713 57
+f 55 714 713
+f 714 648 713
+f 714 646 648
+f 525 54 518
+f 525 52 54
+f 53 714 55
+f 53 715 714
+f 715 646 714
+f 715 644 646
+f 645 674 647
+f 526 52 525
+f 526 41 52
+f 44 715 53
+f 44 716 715
+f 716 644 715
+f 716 642 644
+f 572 50 49
+f 572 51 50
+f 572 39 51
+f 572 573 39
+f 717 47 46
+f 717 48 47
+f 717 49 48
+f 49 717 572
+f 717 555 572
+f 555 717 574
+f 40 716 44
+f 40 718 716
+f 718 642 716
+f 718 640 642
+f 34 552 33
+f 35 552 34
+f 36 552 35
+f 551 552 36
+f 37 551 36
+f 38 551 37
+f 39 551 38
+f 551 39 573
+f 576 31 28
+f 31 576 578
+f 578 719 31
+f 578 686 719
+f 31 718 40
+f 31 719 718
+f 719 640 718
+f 719 638 640
+f 686 638 719
+f 686 636 638
+f 637 674 639
+f 234 27 527
+f 27 234 26
+f 233 28 26
+f 233 576 28
+f 229 577 231
+f 229 580 577
+f 633 674 635
+f 29 25 24
+f 30 25 29
+f 32 25 30
+f 33 25 32
+f 25 33 552
+f 17 43 21
+f 17 42 43
+f 17 45 42
+f 17 46 45
+f 17 717 46
+f 720 16 25
+f 720 14 16
+f 550 25 552
+f 25 550 720
+f 573 549 551
+f 549 573 554
+f 17 574 717
+f 15 574 17
+f 721 14 720
+f 721 11 14
+f 548 720 550
+f 720 548 721
+f 15 575 574
+f 12 575 15
+f 722 11 721
+f 722 13 11
+f 722 9 13
+f 546 721 548
+f 721 546 722
+f 553 545 547
+f 545 553 557
+f 12 571 575
+f 10 571 12
+f 722 7 9
+f 723 7 722
+f 544 722 546
+f 722 544 723
+f 8 571 10
+f 8 570 571
+f 724 7 723
+f 724 1 7
+f 542 723 544
+f 723 542 724
+f 559 541 543
+f 541 559 561
+f 8 566 570
+f 2 566 8
+f 534 1 724
+f 1 534 535
+f 1 535 536
+f 1 536 5
+f 531 724 542
+f 531 534 724
+f 531 533 534
+f 533 531 532
+f 529 541 561
+f 529 538 541
+f 540 538 529
+f 538 540 539
+f 528 568 523
+f 528 529 564
+f 528 564 565
+f 528 565 563
+f 528 563 569
+f 528 569 568
+f 568 524 523
+f 567 524 568
+f 725 524 567
+f 726 524 725
+f 3 524 726
+f 6 524 3
+f 4 524 6
+f 5 524 4
+f 524 5 527
+f 27 41 526
+f 27 18 19
+f 19 41 27
+f 20 41 19
+f 21 41 20
+f 41 21 43
+f 641 674 643
+f 625 674 627
+f 657 674 659
+f 2 567 566
+f 3 567 2
+f 726 567 3
+f 567 726 725
+# 1452 faces, 0 coords texture
+
+# End of File
diff --git a/meshes/tetrahedron.obj b/meshes/tetrahedron.obj
new file mode 100755
index 0000000..64ddd6c
--- /dev/null
+++ b/meshes/tetrahedron.obj
@@ -0,0 +1,12 @@
+# :)
+
+o Regular Tetrahedron
+v 0 1 0
+v 0.9428090416 -0.3333333333 0
+v -0.4714045208 -0.3333333333 -0.8164965809
+v -0.4714045208 -0.3333333333 0.8164965809
+
+f 1 2 3
+f 1 3 4
+f 2 4 3
+f 1 4 2
diff --git a/readme-videos/armadillo.gif b/readme-videos/armadillo.gif
new file mode 100644
index 0000000..5b15b34
--- /dev/null
+++ b/readme-videos/armadillo.gif
Binary files differ
diff --git a/readme-videos/bean.gif b/readme-videos/bean.gif
new file mode 100644
index 0000000..5a80c0b
--- /dev/null
+++ b/readme-videos/bean.gif
Binary files differ
diff --git a/readme-videos/peter.gif b/readme-videos/peter.gif
new file mode 100644
index 0000000..bb00f4b
--- /dev/null
+++ b/readme-videos/peter.gif
Binary files differ
diff --git a/readme-videos/sphere.gif b/readme-videos/sphere.gif
new file mode 100644
index 0000000..47a131a
--- /dev/null
+++ b/readme-videos/sphere.gif
Binary files differ
diff --git a/readme-videos/teapot.gif b/readme-videos/teapot.gif
new file mode 100644
index 0000000..7c202bb
--- /dev/null
+++ b/readme-videos/teapot.gif
Binary files differ
diff --git a/readme-videos/tetrahedron.gif b/readme-videos/tetrahedron.gif
new file mode 100644
index 0000000..866f1e2
--- /dev/null
+++ b/readme-videos/tetrahedron.gif
Binary files differ
diff --git a/resources/shaders/anchorPoint.frag b/resources/shaders/anchorPoint.frag
new file mode 100644
index 0000000..a5fddb9
--- /dev/null
+++ b/resources/shaders/anchorPoint.frag
@@ -0,0 +1,10 @@
+#version 330 core
+in vec4 fColor;
+in vec2 fPoint;
+in float fRadius;
+
+out vec4 fragColor;
+
+void main() {
+ fragColor = fColor;
+}
diff --git a/resources/shaders/anchorPoint.geom b/resources/shaders/anchorPoint.geom
new file mode 100644
index 0000000..ccb6b84
--- /dev/null
+++ b/resources/shaders/anchorPoint.geom
@@ -0,0 +1,41 @@
+#version 330 core
+
+layout(points) in;
+layout (triangle_strip, max_vertices = 4) out;
+
+in vec4 vColor[];
+out vec4 fColor;
+out vec2 fPoint;
+out float fRadius;
+
+uniform int width;
+uniform int height;
+uniform float vSize;
+
+void main() {
+ vec4 offset = vec4(vSize, -vSize, 0.0, 0.0);
+
+ int i;
+ for (i = 0; i < gl_in.length(); i ++) {
+ vec4 p = gl_in[i].gl_Position;
+
+ fColor = vColor[i];
+ fPoint = vec2((p.x * 0.5 + 0.5) * width,
+ (p.y * 0.5 + 0.5) * height);
+ fRadius = vSize;
+
+ gl_Position = p + offset.yxzw;
+ EmitVertex();
+
+ gl_Position = p + offset.yyzw;
+ EmitVertex();
+
+ gl_Position = p + offset.xxzw;
+ EmitVertex();
+
+ gl_Position = p + offset.xyzw;
+ EmitVertex();
+
+ EndPrimitive();
+ }
+}
diff --git a/resources/shaders/anchorPoint.vert b/resources/shaders/anchorPoint.vert
new file mode 100644
index 0000000..c074d00
--- /dev/null
+++ b/resources/shaders/anchorPoint.vert
@@ -0,0 +1,16 @@
+#version 330 core
+
+layout(location = 0) in vec3 position; // Position of the vertex
+layout(location = 2) in vec3 vcolor; // Normal of the vertex
+
+uniform mat4 proj;
+uniform mat4 view;
+uniform mat4 model;
+
+out vec4 vColor;
+
+void main() {
+ vColor = vec4(vcolor, 1.0);
+
+ gl_Position = proj * view * model * vec4(position, 1.0);
+}
diff --git a/resources/shaders/shader.frag b/resources/shaders/shader.frag
new file mode 100755
index 0000000..de063c2
--- /dev/null
+++ b/resources/shaders/shader.frag
@@ -0,0 +1,18 @@
+#version 330 core
+out vec4 fragColor;
+
+in vec3 normal_cameraSpace;
+
+uniform int wire = 0;
+uniform float red = 1.0;
+uniform float green = 1.0;
+uniform float blue = 1.0;
+uniform float alpha = 1.0;
+
+void main() {
+ // Do lighting in camera space
+ vec3 lightDir = normalize(vec3(0, 0.5, 1));
+ float c = clamp(dot(normal_cameraSpace, lightDir), 0, 1);
+
+ fragColor = vec4(red * c, green * c, blue * c, 1);
+}
diff --git a/resources/shaders/shader.vert b/resources/shaders/shader.vert
new file mode 100755
index 0000000..52b86ba
--- /dev/null
+++ b/resources/shaders/shader.vert
@@ -0,0 +1,18 @@
+#version 330 core
+
+layout(location = 0) in vec3 position; // Position of the vertex
+layout(location = 1) in vec3 normal; // Normal of the vertex
+
+uniform mat4 proj;
+uniform mat4 view;
+uniform mat4 model;
+
+uniform mat3 inverseTransposeModel;
+
+out vec3 normal_cameraSpace;
+
+void main() {
+ normal_cameraSpace = normalize(inverse(transpose(mat3(view))) * inverseTransposeModel * normal);
+
+ gl_Position = proj * view * model * vec4(position, 1);
+}
diff --git a/resources/shaders/shaders.qrc b/resources/shaders/shaders.qrc
new file mode 100755
index 0000000..c70d7cc
--- /dev/null
+++ b/resources/shaders/shaders.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/shaders">
+ <file>shader.frag</file>
+ <file>shader.vert</file>
+ <file>anchorPoint.frag</file>
+ <file>anchorPoint.vert</file>
+ <file>anchorPoint.geom</file>
+ </qresource>
+</RCC>
diff --git a/src/arap.cpp b/src/arap.cpp
new file mode 100644
index 0000000..06b8829
--- /dev/null
+++ b/src/arap.cpp
@@ -0,0 +1,57 @@
+#include "arap.h"
+#include "graphics/meshloader.h"
+
+#include <iostream>
+#include <set>
+#include <map>
+#include <vector>
+
+using namespace std;
+using namespace Eigen;
+
+ARAP::ARAP() {}
+
+void ARAP::init(Eigen::Vector3f &coeffMin, Eigen::Vector3f &coeffMax)
+{
+ vector<Vector3f> vertices;
+ vector<Vector3i> triangles;
+
+ // If this doesn't work for you, remember to change your working directory
+ if (MeshLoader::loadTriMesh("meshes/cactus.obj", vertices, triangles)) {
+ m_shape.init(vertices, triangles);
+ }
+
+ // Students, please don't touch this code: get min and max for viewport stuff
+ MatrixX3f all_vertices = MatrixX3f(vertices.size(), 3);
+ int i = 0;
+ for (unsigned long i = 0; i < vertices.size(); ++i) {
+ all_vertices.row(i) = vertices[i];
+ }
+ coeffMin = all_vertices.colwise().minCoeff();
+ coeffMax = all_vertices.colwise().maxCoeff();
+}
+
+// Move an anchored vertex, defined by its index, to targetPosition
+void ARAP::move(int vertex, Vector3f targetPosition)
+{
+ std::vector<Eigen::Vector3f> new_vertices = m_shape.getVertices();
+ const std::unordered_set<int>& anchors = m_shape.getAnchors();
+
+ // TODO: implement ARAP here
+ new_vertices[vertex] = targetPosition;
+
+ // Here are some helpful controls for the application
+ //
+ // - You start in first-person camera mode
+ // - WASD to move, left-click and drag to rotate
+ // - R and F to move vertically up and down
+ //
+ // - C to change to orbit camera mode
+ //
+ // - Right-click (and, optionally, drag) to anchor/unanchor points
+ // - Left-click an anchored point to move it around
+ //
+ // - Minus and equal keys (click repeatedly) to change the size of the vertices
+
+ m_shape.setVertices(new_vertices);
+}
diff --git a/src/arap.h b/src/arap.h
new file mode 100644
index 0000000..afa7d63
--- /dev/null
+++ b/src/arap.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include "graphics/shape.h"
+#include "Eigen/StdList"
+#include "Eigen/StdVector"
+
+class Shader;
+
+class ARAP
+{
+private:
+ Shape m_shape;
+
+public:
+ ARAP();
+
+ void init(Eigen::Vector3f &min, Eigen::Vector3f &max);
+ void move(int vertex, Eigen::Vector3f pos);
+
+ // ================== Students, If You Choose To Modify The Code Below, It's On You
+
+ int getClosestVertex(Eigen::Vector3f start, Eigen::Vector3f ray, float threshold)
+ {
+ return m_shape.getClosestVertex(start, ray, threshold);
+ }
+
+ void draw(Shader *shader, GLenum mode)
+ {
+ m_shape.draw(shader, mode);
+ }
+
+ SelectMode select(Shader *shader, int vertex)
+ {
+ return m_shape.select(shader, vertex);
+ }
+
+ bool selectWithSpecifiedMode(Shader *shader, int vertex, SelectMode mode)
+ {
+ return m_shape.selectWithSpecifiedMode(shader, vertex, mode);
+ }
+
+ bool getAnchorPos(int lastSelected, Eigen::Vector3f& pos, Eigen::Vector3f ray, Eigen::Vector3f start)
+ {
+ return m_shape.getAnchorPos(lastSelected, pos, ray, start);
+ }
+};
diff --git a/src/glwidget.cpp b/src/glwidget.cpp
new file mode 100755
index 0000000..8c92f5b
--- /dev/null
+++ b/src/glwidget.cpp
@@ -0,0 +1,304 @@
+#include "glwidget.h"
+
+#include <QApplication>
+#include <QKeyEvent>
+#include <iostream>
+
+#define SPEED 1.5
+#define ROTATE_SPEED 0.0025
+
+using namespace std;
+using namespace Eigen;
+
+GLWidget::GLWidget(QWidget *parent) :
+ QOpenGLWidget(parent),
+ m_arap(),
+ m_camera(),
+ m_defaultShader(),
+ m_pointShader(),
+ m_vSize(),
+ m_movementScaling(),
+ m_vertexSelectionThreshold(),
+ // Movement
+ m_deltaTimeProvider(),
+ m_intervalTimer(),
+ // Timing
+ m_forward(),
+ m_sideways(),
+ m_vertical(),
+ // Mouse handler stuff
+ m_lastX(),
+ m_lastY(),
+ m_leftCapture(false),
+ m_rightCapture(false),
+ m_rightClickSelectMode(SelectMode::None),
+ m_lastSelectedVertex(-1)
+{
+ // GLWidget needs all mouse move events, not just mouse drag events
+ setMouseTracking(true);
+
+ // Hide the cursor since this is a fullscreen app
+ QApplication::setOverrideCursor(Qt::ArrowCursor);
+
+ // GLWidget needs keyboard focus
+ setFocusPolicy(Qt::StrongFocus);
+
+ // Function tick() will be called once per interva
+ connect(&m_intervalTimer, SIGNAL(timeout()), this, SLOT(tick()));
+}
+
+GLWidget::~GLWidget()
+{
+ if (m_defaultShader != nullptr) delete m_defaultShader;
+ if (m_pointShader != nullptr) delete m_pointShader;
+}
+
+// ================== Basic OpenGL Overrides
+
+void GLWidget::initializeGL()
+{
+ // Initialize GL extension wrangler
+ glewExperimental = GL_TRUE;
+ GLenum err = glewInit();
+ if (err != GLEW_OK) fprintf(stderr, "Error while initializing GLEW: %s\n", glewGetErrorString(err));
+ fprintf(stdout, "Successfully initialized GLEW %s\n", glewGetString(GLEW_VERSION));
+
+ // Set clear color to white
+ glClearColor(1, 1, 1, 1);
+
+ // Enable depth-testing and backface culling
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ glCullFace(GL_BACK);
+
+ // Initialize shaders
+ m_defaultShader = new Shader(":resources/shaders/shader.vert", ":resources/shaders/shader.frag");
+ m_pointShader = new Shader(":resources/shaders/anchorPoint.vert", ":resources/shaders/anchorPoint.geom", ":resources/shaders/anchorPoint.frag");
+
+ // Initialize ARAP, and get parameters needed to decide the camera position, etc
+ Vector3f coeffMin, coeffMax;
+ m_arap.init(coeffMin, coeffMax);
+
+ Vector3f center = (coeffMax + coeffMin) / 2.0f;
+ float extentLength = (coeffMax - coeffMin).norm();
+
+ // Screen-space size of vertex points
+ m_vSize = 0.005 * extentLength;
+
+ // Scale all movement by this amount
+ m_movementScaling = extentLength * 0.5;
+
+ // When raycasting, select closest vertex within this distance
+ m_vertexSelectionThreshold = extentLength * 0.025;
+
+ // Note for maintainers: Z-up
+ float fovY = 120;
+ float nearPlane = 0.0001f;
+ float farPlane = 3 * extentLength;
+
+ // Initialize camera with a reasonable transform
+ Eigen::Vector3f eye = center - Eigen::Vector3f::UnitZ() * extentLength;
+ Eigen::Vector3f target = center;
+ m_camera.lookAt(eye, target);
+ m_camera.setOrbitPoint(target);
+ m_camera.setPerspective(120, width() / static_cast<float>(height()), nearPlane, farPlane);
+
+ m_deltaTimeProvider.start();
+ m_intervalTimer.start(1000 / 60);
+}
+
+void GLWidget::paintGL()
+{
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ m_defaultShader->bind();
+ m_defaultShader->setUniform("proj", m_camera.getProjection());
+ m_defaultShader->setUniform("view", m_camera.getView());
+ m_arap.draw(m_defaultShader, GL_TRIANGLES);
+ m_defaultShader->unbind();
+
+ glClear(GL_DEPTH_BUFFER_BIT);
+
+ m_pointShader->bind();
+ m_pointShader->setUniform("proj", m_camera.getProjection());
+ m_pointShader->setUniform("view", m_camera.getView());
+ m_pointShader->setUniform("vSize", m_vSize);
+ m_pointShader->setUniform("width", width());
+ m_pointShader->setUniform("height", height());
+ m_arap.draw(m_pointShader, GL_POINTS);
+ m_pointShader->unbind();
+}
+
+void GLWidget::resizeGL(int w, int h)
+{
+ glViewport(0, 0, w, h);
+ m_camera.setAspect(static_cast<float>(w) / h);
+}
+
+// ================== Event Listeners
+
+Eigen::Vector3f GLWidget::transformToWorldRay(int x, int y)
+{
+ Eigen::Vector4f clipCoords = Eigen::Vector4f(
+ (float(x) / width()) * 2.f - 1.f,
+ 1.f - (float(y) / height()) * 2.f,
+ -1.f,
+ 1.f);
+
+ Eigen::Vector4f transformed_coords = m_camera.getProjection().inverse() * clipCoords;
+ transformed_coords = Eigen::Vector4f(transformed_coords.x(), transformed_coords.y(), -1.f, 0.f);
+ transformed_coords = m_camera.getView().inverse() * transformed_coords;
+
+ return Eigen::Vector3f(transformed_coords.x(), transformed_coords.y(), transformed_coords.z()).normalized();
+}
+
+void GLWidget::mousePressEvent(QMouseEvent *event)
+{
+ // Get current mouse coordinates
+ const int currX = event->position().x();
+ const int currY = event->position().y();
+
+ // Get closest vertex to ray
+ const Vector3f ray = transformToWorldRay(currX, currY);
+ const int closest_vertex = m_arap.getClosestVertex(m_camera.getPosition(), ray, m_vertexSelectionThreshold);
+
+ // Switch on button
+ switch (event->button()) {
+ case Qt::MouseButton::RightButton: {
+ // Capture
+ m_rightCapture = true;
+ // Anchor/un-anchor the vertex
+ m_rightClickSelectMode = m_arap.select(m_pointShader, closest_vertex);
+ break;
+ }
+ case Qt::MouseButton::LeftButton: {
+ // Capture
+ m_leftCapture = true;
+ // Select this vertex
+ m_lastSelectedVertex = closest_vertex;
+ break;
+ }
+ default: break;
+ }
+
+ // Set last mouse coordinates
+ m_lastX = currX;
+ m_lastY = currY;
+}
+
+void GLWidget::mouseMoveEvent(QMouseEvent *event)
+{
+ // Return if neither mouse button is currently held down
+ if (!(m_leftCapture || m_rightCapture)) {
+ return;
+ }
+
+ // Get current mouse coordinates
+ const int currX = event->position().x();
+ const int currY = event->position().y();
+
+ // Find ray
+ const Vector3f ray = transformToWorldRay(event->position().x(), event->position().y());
+ Vector3f pos;
+
+ // If right is held down
+ if (m_rightCapture) {
+ // Get closest vertex to ray
+ const int closest_vertex = m_arap.getClosestVertex(m_camera.getPosition(), ray, m_vertexSelectionThreshold);
+
+ // Anchor/un-anchor the vertex
+ if (m_rightClickSelectMode == SelectMode::None) {
+ m_rightClickSelectMode = m_arap.select(m_pointShader, closest_vertex);
+ } else {
+ m_arap.selectWithSpecifiedMode(m_pointShader, closest_vertex, m_rightClickSelectMode);
+ }
+
+ return;
+ }
+
+ // If the selected point is an anchor point
+ if (m_lastSelectedVertex != -1 && m_arap.getAnchorPos(m_lastSelectedVertex, pos, ray, m_camera.getPosition())) {
+ // Move it
+ m_arap.move(m_lastSelectedVertex, pos);
+ } else {
+ // Rotate the camera
+ const int deltaX = currX - m_lastX;
+ const int deltaY = currY - m_lastY;
+ if (deltaX != 0 || deltaY != 0) {
+ m_camera.rotate(deltaY * ROTATE_SPEED, -deltaX * ROTATE_SPEED);
+ }
+ }
+
+ // Set last mouse coordinates
+ m_lastX = currX;
+ m_lastY = currY;
+}
+
+void GLWidget::mouseReleaseEvent(QMouseEvent *event)
+{
+ m_leftCapture = false;
+ m_lastSelectedVertex = -1;
+
+ m_rightCapture = false;
+ m_rightClickSelectMode = SelectMode::None;
+}
+
+void GLWidget::wheelEvent(QWheelEvent *event)
+{
+ float zoom = 1 - event->pixelDelta().y() * 0.1f / 120.f;
+ m_camera.zoom(zoom);
+}
+
+void GLWidget::keyPressEvent(QKeyEvent *event)
+{
+ if (event->isAutoRepeat()) return;
+
+ switch (event->key())
+ {
+ case Qt::Key_W: m_forward += SPEED; break;
+ case Qt::Key_S: m_forward -= SPEED; break;
+ case Qt::Key_A: m_sideways -= SPEED; break;
+ case Qt::Key_D: m_sideways += SPEED; break;
+ case Qt::Key_F: m_vertical -= SPEED; break;
+ case Qt::Key_R: m_vertical += SPEED; break;
+ case Qt::Key_C: m_camera.toggleIsOrbiting(); break;
+ case Qt::Key_Equal: m_vSize *= 11.0f / 10.0f; break;
+ case Qt::Key_Minus: m_vSize *= 10.0f / 11.0f; break;
+ case Qt::Key_Escape: QApplication::quit();
+ }
+}
+
+void GLWidget::keyReleaseEvent(QKeyEvent *event)
+{
+ if (event->isAutoRepeat()) return;
+
+ switch (event->key())
+ {
+ case Qt::Key_W: m_forward -= SPEED; break;
+ case Qt::Key_S: m_forward += SPEED; break;
+ case Qt::Key_A: m_sideways += SPEED; break;
+ case Qt::Key_D: m_sideways -= SPEED; break;
+ case Qt::Key_F: m_vertical += SPEED; break;
+ case Qt::Key_R: m_vertical -= SPEED; break;
+ }
+}
+
+// ================== Physics Tick
+
+void GLWidget::tick()
+{
+ float deltaSeconds = m_deltaTimeProvider.restart() / 1000.f;
+
+ // Move camera
+ auto look = m_camera.getLook();
+ look.y() = 0;
+ look.normalize();
+ Eigen::Vector3f perp(-look.z(), 0, look.x());
+ Eigen::Vector3f moveVec = m_forward * look.normalized() + m_sideways * perp.normalized() + m_vertical * Eigen::Vector3f::UnitY();
+ moveVec *= m_movementScaling;
+ moveVec *= deltaSeconds;
+ m_camera.move(moveVec);
+
+ // Flag this view for repainting (Qt will call paintGL() soon after)
+ update();
+}
diff --git a/src/glwidget.h b/src/glwidget.h
new file mode 100755
index 0000000..b319756
--- /dev/null
+++ b/src/glwidget.h
@@ -0,0 +1,72 @@
+#pragma once
+
+#ifdef __APPLE__
+#define GL_SILENCE_DEPRECATION
+#endif
+
+#include "arap.h"
+#include "graphics/camera.h"
+#include "graphics/shader.h"
+
+#include <QOpenGLWidget>
+#include <QElapsedTimer>
+#include <QTimer>
+#include <memory>
+
+class GLWidget : public QOpenGLWidget
+{
+ Q_OBJECT
+
+public:
+ GLWidget(QWidget *parent = nullptr);
+ ~GLWidget();
+
+private:
+ static const int FRAMES_TO_AVERAGE = 30;
+
+ Eigen::Vector3f transformToWorldRay(int x, int y);
+
+ // Basic OpenGL Overrides
+ void initializeGL() override;
+ void paintGL() override;
+ void resizeGL(int w, int h) override;
+
+ // Event Listeners
+ void mousePressEvent (QMouseEvent *event) override;
+ void mouseMoveEvent (QMouseEvent *event) override;
+ void mouseReleaseEvent(QMouseEvent *event) override;
+ void wheelEvent (QWheelEvent *event) override;
+ void keyPressEvent (QKeyEvent *event) override;
+ void keyReleaseEvent (QKeyEvent *event) override;
+
+private slots:
+ // Physics Tick
+ void tick();
+
+private:
+ ARAP m_arap;
+ Camera m_camera;
+ Shader *m_defaultShader;
+ Shader *m_pointShader;
+
+ float m_movementScaling;
+ float m_vertexSelectionThreshold;
+ float m_vSize;
+
+ // Timing
+ QElapsedTimer m_deltaTimeProvider; // For measuring elapsed time
+ QTimer m_intervalTimer; // For triggering timed events
+
+ // Movement
+ int m_forward;
+ int m_sideways;
+ int m_vertical;
+
+ // Mouse handler stuff
+ int m_lastX;
+ int m_lastY;
+ bool m_leftCapture;
+ bool m_rightCapture;
+ SelectMode m_rightClickSelectMode;
+ int m_lastSelectedVertex = -1;
+};
diff --git a/src/graphics/camera.cpp b/src/graphics/camera.cpp
new file mode 100644
index 0000000..cf0277a
--- /dev/null
+++ b/src/graphics/camera.cpp
@@ -0,0 +1,196 @@
+#include "graphics/camera.h"
+
+#include <iostream>
+
+Camera::Camera()
+ : m_position(0,0,0),
+ m_pitch(0),
+ m_yaw(0),
+ m_look(0, 0, 1),
+ m_orbitPoint(0, 0, 0),
+ m_isOrbiting(false),
+ m_view(Eigen::Matrix4f::Identity()),
+ m_proj(Eigen::Matrix4f::Identity()),
+ m_viewDirty(true),
+ m_projDirty(true),
+ m_fovY(90),
+ m_aspect(1),
+ m_near(0.1f),
+ m_far(50.f),
+ m_zoom(1)
+{}
+
+// ================== Position
+
+void Camera::setPosition(const Eigen::Vector3f &position)
+{
+ m_position = position;
+ m_viewDirty = true;
+}
+
+void Camera::move(const Eigen::Vector3f &deltaPosition)
+{
+ if (deltaPosition.squaredNorm() == 0) return;
+
+ m_position += deltaPosition;
+
+ if (m_isOrbiting) {
+ m_orbitPoint += deltaPosition;
+ }
+
+ m_viewDirty = true;
+}
+
+Eigen::Vector3f Camera::getPosition()
+{
+ return m_position;
+}
+
+// ================== Rotation
+
+void Camera::setRotation(float pitch, float yaw)
+{
+ m_pitch = pitch;
+ m_yaw = yaw;
+ m_viewDirty = true;
+ updateLook();
+}
+
+void Camera::rotate(float deltaPitch, float deltaYaw)
+{
+ m_pitch += deltaPitch;
+ m_yaw += deltaYaw;
+ m_pitch = std::clamp(m_pitch, (float) -M_PI_2 + 0.01f, (float) M_PI_2 - 0.01f);
+ m_viewDirty = true;
+ updateLook();
+
+ if (m_isOrbiting) {
+ m_position = m_orbitPoint - m_look * m_zoom;
+ }
+}
+
+// ================== Position and Rotation
+
+void Camera::lookAt(const Eigen::Vector3f &eye, const Eigen::Vector3f &target)
+{
+ m_position = eye;
+ m_look = (target - eye).normalized();
+ m_viewDirty = true;
+ updatePitchAndYaw();
+}
+
+// ================== Orbiting
+
+void Camera::setOrbitPoint(const Eigen::Vector3f &orbitPoint)
+{
+ m_orbitPoint = orbitPoint;
+ m_viewDirty = true;
+}
+
+bool Camera::getIsOrbiting()
+{
+ return m_isOrbiting;
+}
+
+void Camera::setIsOrbiting(bool isOrbiting)
+{
+ m_isOrbiting = isOrbiting;
+ m_viewDirty = true;
+}
+
+void Camera::toggleIsOrbiting()
+{
+ m_isOrbiting = !m_isOrbiting;
+ m_viewDirty = true;
+
+ if (m_isOrbiting) {
+ m_zoom = (m_orbitPoint - m_position).norm();
+ m_look = (m_orbitPoint - m_position).normalized();
+ updatePitchAndYaw();
+ }
+}
+
+void Camera::zoom(float zoomMultiplier)
+{
+ if (!m_isOrbiting) return;
+
+ m_zoom *= zoomMultiplier;
+ m_position = m_orbitPoint - m_look * m_zoom;
+ m_viewDirty = true;
+}
+
+// ================== Important Getters
+
+const Eigen::Matrix4f &Camera::getView()
+{
+ if (m_viewDirty) {
+ Eigen::Matrix3f R;
+ Eigen::Vector3f f = m_look.normalized();
+ Eigen::Vector3f u = Eigen::Vector3f::UnitY();
+ Eigen::Vector3f s = f.cross(u).normalized();
+ u = s.cross(f);
+ R.col(0) = s;
+ R.col(1) = u;
+ R.col(2) = -f;
+ m_view.topLeftCorner<3, 3>() = R.transpose();
+ m_view.topRightCorner<3, 1>() = -R.transpose() * m_position;
+ m_view(3, 3) = 1.f;
+ m_viewDirty = false;
+ }
+ return m_view;
+}
+
+const Eigen::Matrix4f &Camera::getProjection()
+{
+ if (m_projDirty) {
+ float theta = m_fovY * 0.5f;
+ float invRange = 1.f / (m_far - m_near);
+ float invtan = 1.f / tanf(theta);
+ m_proj(0, 0) = invtan / m_aspect;
+ m_proj(1, 1) = invtan;
+ m_proj(2, 2) = -(m_near + m_far) * invRange;
+ m_proj(3, 2) = -1;
+ m_proj(2, 3) = -2 * m_near * m_far * invRange;
+ m_proj(3, 3) = 0;
+ m_projDirty = false;
+ }
+ return m_proj;
+}
+
+const Eigen::Vector3f &Camera::getLook()
+{
+ return m_look;
+}
+
+// ================== Intrinsics
+
+void Camera::setPerspective(float fovY, float aspect, float near, float far)
+{
+ m_fovY = fovY;
+ m_aspect = aspect;
+ m_near = near;
+ m_far = far;
+ m_projDirty = true;
+}
+
+void Camera::setAspect(float aspect)
+{
+ m_aspect = aspect;
+ m_projDirty = true;
+}
+
+// ================== Private Helpers
+
+void Camera::updateLook()
+{
+ m_look = Eigen::Vector3f(0, 0, 1);
+ m_look = Eigen::AngleAxis<float>(m_pitch, Eigen::Vector3f::UnitX()) * m_look;
+ m_look = Eigen::AngleAxis<float>(m_yaw, Eigen::Vector3f::UnitY()) * m_look;
+ m_look = m_look.normalized();
+}
+
+void Camera::updatePitchAndYaw()
+{
+ m_pitch = asinf(-m_look.y());
+ m_yaw = atan2f(m_look.x(), m_look.z());
+}
diff --git a/src/graphics/camera.h b/src/graphics/camera.h
new file mode 100644
index 0000000..de362e0
--- /dev/null
+++ b/src/graphics/camera.h
@@ -0,0 +1,55 @@
+#pragma once
+
+#include "Eigen/Dense"
+
+class Camera
+{
+public:
+ EIGEN_MAKE_ALIGNED_OPERATOR_NEW
+ Camera();
+
+ void setPosition(const Eigen::Vector3f &position);
+ void move (const Eigen::Vector3f &deltaPosition);
+
+ Eigen::Vector3f getPosition();
+
+ void setRotation(float pitch, float yaw);
+ void rotate (float deltaPitch, float deltaYaw);
+
+ void lookAt(const Eigen::Vector3f &eye, const Eigen::Vector3f &target);
+
+ void setOrbitPoint(const Eigen::Vector3f &target);
+ bool getIsOrbiting();
+ void setIsOrbiting(bool orbit);
+ void toggleIsOrbiting();
+ void zoom(float zoomMultiplier);
+
+ const Eigen::Matrix4f &getView();
+ const Eigen::Matrix4f &getProjection();
+ const Eigen::Vector3f &getLook();
+
+ void setPerspective(float fovY, float aspect, float near, float far);
+ void setAspect(float aspect);
+
+private:
+ void updateLook();
+ void updatePitchAndYaw();
+
+ Eigen::Vector3f m_position;
+ float m_pitch;
+ float m_yaw;
+ Eigen::Vector3f m_look;
+ Eigen::Vector3f m_orbitPoint;
+ bool m_isOrbiting;
+
+ Eigen::Matrix4f m_view;
+ Eigen::Matrix4f m_proj;
+ bool m_viewDirty;
+ bool m_projDirty;
+
+ float m_fovY;
+ float m_aspect;
+ float m_near;
+ float m_far;
+ float m_zoom;
+};
diff --git a/src/graphics/graphicsdebug.cpp b/src/graphics/graphicsdebug.cpp
new file mode 100644
index 0000000..b9d831c
--- /dev/null
+++ b/src/graphics/graphicsdebug.cpp
@@ -0,0 +1,126 @@
+#include <GL/glew.h>
+#include "graphics/graphicsdebug.h"
+
+#include <iostream>
+#include <vector>
+
+
+void checkError(std::string prefix) {
+ GLenum err = glGetError();
+ if (err != GL_NO_ERROR) {
+ std::cerr << prefix << (prefix == std::string("") ? "" : ": ") << "GL is in an error state before painting." << std::endl;
+ printGLErrorCodeInEnglish(err);
+ }
+}
+
+void printGLErrorCodeInEnglish(GLenum err) {
+ std::cerr << "GL error code " << err << ":" << std::endl;
+ switch(err) {
+ case GL_INVALID_ENUM:
+ std::cerr << "GL_INVALID_ENUM" << std::endl;
+ std::cerr << "An unacceptable value is specified for an enumerated argument. The offending command is ignored and has no other side effect than to set the error flag." << std::endl;
+ break;
+ case GL_INVALID_VALUE:
+ std::cerr << "GL_INVALID_VALUE" << std::endl;
+ std::cerr << "A numeric argument is out of range. The offending command is ignored and has no other side effect than to set the error flag." << std::endl;
+ break;
+ case GL_INVALID_OPERATION:
+ std::cerr << "GL_INVALID_OPERATION" << std::endl;
+ std::cerr << "The specified operation is not allowed in the current state. The offending command is ignored and has no other side effect than to set the error flag." << std::endl;
+ break;
+ case GL_INVALID_FRAMEBUFFER_OPERATION:
+ std::cerr << "GL_INVALID_FRAMEBUFFER_OPERATION" << std::endl;
+ std::cerr << "The framebuffer object is not complete. The offending command is ignored and has no other side effect than to set the error flag." << std::endl;
+ break;
+ case GL_OUT_OF_MEMORY:
+ std::cerr << "GL_OUT_OF_MEMORY" << std::endl;
+ std::cerr << "There is not enough memory left to execute the command. The state of the GL is undefined, except for the state of the error flags, after this error is recorded." << std::endl;
+ break;
+ case GL_STACK_UNDERFLOW:
+ std::cerr << "GL_STACK_UNDERFLOW" << std::endl;
+ std::cerr << "An attempt has been made to perform an operation that would cause an internal stack to underflow." << std::endl;
+ break;
+ case GL_STACK_OVERFLOW:
+ std::cerr << "GL_STACK_OVERFLOW" << std::endl;
+ std::cerr << "An attempt has been made to perform an operation that would cause an internal stack to overflow." << std::endl;
+ break;
+ default:
+ std::cerr << "Unknown GL error code" << std::endl;
+ }
+}
+
+void checkFramebufferStatus() {
+ GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+ if (status != GL_FRAMEBUFFER_COMPLETE) {
+ std::cerr << "Framebuffer is incomplete." << std::endl;
+ printFramebufferErrorCodeInEnglish(status);
+ }
+}
+
+void printFramebufferErrorCodeInEnglish(GLenum err) {
+ switch(err) {
+ case GL_FRAMEBUFFER_UNDEFINED:
+ std:: cerr << "GL_FRAMEBUFFER_UNDEFINED is returned if the specified framebuffer is the default read or draw framebuffer, but the default framebuffer does not exist." << std::endl;
+ break;
+ case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
+ std::cerr << "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT is returned if any of the framebuffer attachment points are framebuffer incomplete." << std::endl;
+ break;
+ case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
+ std::cerr << "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT is returned if the framebuffer does not have at least one image attached to it." << std::endl;
+ break;
+ case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER:
+ std::cerr << "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER is returned if the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is GL_NONE for any color attachment point(s) named by GL_DRAW_BUFFERi." << std::endl;
+ break;
+ case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER:
+ std::cerr << "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER is returned if GL_READ_BUFFER is not GL_NONE and the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is GL_NONE for the color attachment point named by GL_READ_BUFFER." << std::endl;
+ break;
+ case GL_FRAMEBUFFER_UNSUPPORTED:
+ std::cerr << "GL_FRAMEBUFFER_UNSUPPORTED is returned if the combination of internal formats of the attached images violates an implementation-dependent set of restrictions." << std::endl;
+ break;
+ case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:
+ std::cerr << "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE is returned if the value of GL_RENDERBUFFER_SAMPLES is not the same for all attached renderbuffers; if the value of GL_TEXTURE_SAMPLES is the not same for all attached textures; or, if the attached images are a mix of renderbuffers and textures, the value of GL_RENDERBUFFER_SAMPLES does not match the value of GL_TEXTURE_SAMPLES." << std::endl;
+ std::cerr << "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE is also returned if the value of GL_TEXTURE_FIXED_SAMPLE_LOCATIONS is not the same for all attached textures; or, if the attached images are a mix of renderbuffers and textures, the value of GL_TEXTURE_FIXED_SAMPLE_LOCATIONS is not GL_TRUE for all attached textures." << std::endl;
+ break;
+ case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS:
+ std::cerr << "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS is returned if any framebuffer attachment is layered, and any populated attachment is not layered, or if all populated color attachments are not from textures of the same target." << std::endl;
+ break;
+ }
+}
+
+void checkShaderCompilationStatus(GLuint shaderID) {
+ GLint status;
+ glGetShaderiv(shaderID, GL_COMPILE_STATUS, &status);
+ if (status == GL_FALSE) {
+ std::cerr << "Error: Could not compile shader." << std::endl;
+
+ GLint maxLength = 0;
+ glGetShaderiv(shaderID, GL_INFO_LOG_LENGTH, &maxLength);
+
+ // The maxLength includes the null character
+ std::vector<GLchar> errorLog(maxLength);
+ glGetShaderInfoLog(shaderID, maxLength, &maxLength, &errorLog[0]);
+
+ std::cerr << &errorLog[0] << std::endl;
+ } else {
+ std::cerr << "Shader compiled." << std::endl;
+ }
+}
+
+void checkShaderLinkStatus(GLuint shaderProgramID) {
+ GLint linked;
+ glGetProgramiv(shaderProgramID, GL_LINK_STATUS, &linked);
+ if (linked == GL_FALSE) {
+ std::cerr << "Shader failed to link" << std::endl;
+
+ GLint maxLength = 0;
+ glGetProgramiv(shaderProgramID, GL_INFO_LOG_LENGTH, &maxLength);
+
+ // The maxLength includes the null character
+ std::vector<GLchar> errorLog(maxLength);
+ glGetProgramInfoLog(shaderProgramID, maxLength, &maxLength, &errorLog[0]);
+
+ std::cerr << &errorLog[0] << std::endl;
+ } else {
+ std::cerr << "Shader linked successfully." << std::endl;
+ }
+}
diff --git a/src/graphics/graphicsdebug.h b/src/graphics/graphicsdebug.h
new file mode 100644
index 0000000..9be33b4
--- /dev/null
+++ b/src/graphics/graphicsdebug.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <GL/glew.h>
+#include <string>
+
+#define GRAPHICS_DEBUG_LEVEL 0
+
+void checkError(std::string prefix = "");
+void printGLErrorCodeInEnglish(GLenum err);
+
+void checkFramebufferStatus();
+void printFramebufferErrorCodeInEnglish(GLenum err);
+
+void checkShaderCompilationStatus(GLuint shaderID);
+void checkShaderLinkStatus(GLuint shaderProgramID);
diff --git a/src/graphics/meshloader.cpp b/src/graphics/meshloader.cpp
new file mode 100644
index 0000000..fc95f6f
--- /dev/null
+++ b/src/graphics/meshloader.cpp
@@ -0,0 +1,65 @@
+#include "graphics/meshloader.h"
+
+#define TINYOBJLOADER_IMPLEMENTATION
+#include "util/tiny_obj_loader.h"
+
+#include <iostream>
+
+#include <QString>
+#include <QFile>
+#include <QTextStream>
+#include <QRegularExpression>
+#include <QFileInfo>
+#include <iostream>
+#include <set>
+
+using namespace std;
+using namespace Eigen;
+
+MeshLoader::MeshLoader() {}
+
+bool MeshLoader::loadTriMesh(const string &filePath, vector<Vector3f> &vertices, vector<Vector3i> &faces)
+{
+ tinyobj::attrib_t attrib;
+ vector<tinyobj::shape_t> shapes;
+ vector<tinyobj::material_t> materials;
+
+ QFileInfo info(QString(filePath.c_str()));
+ string err;
+ bool ret = tinyobj::LoadObj(&attrib, &shapes, &materials, &err,
+ info.absoluteFilePath().toStdString().c_str(), (info.absolutePath().toStdString() + "/").c_str(), true);
+ if (!err.empty()) {
+ cerr << err << endl;
+ }
+
+ if (!ret) {
+ cerr << "Failed to load/parse .obj file" << endl;
+ return false;
+ }
+
+ for (size_t s = 0; s < shapes.size(); s++) {
+ size_t index_offset = 0;
+ for (size_t f = 0; f < shapes[s].mesh.num_face_vertices.size(); f++) {
+ unsigned int fv = shapes[s].mesh.num_face_vertices[f];
+
+ Vector3i face;
+ for (size_t v = 0; v < fv; v++) {
+ tinyobj::index_t idx = shapes[s].mesh.indices[index_offset + v];
+
+ face[v] = idx.vertex_index;
+
+ }
+ faces.push_back(face);
+
+ index_offset += fv;
+ }
+ }
+
+ for (size_t i = 0; i < attrib.vertices.size(); i += 3) {
+ vertices.emplace_back(attrib.vertices[i], attrib.vertices[i + 1], attrib.vertices[i + 2]);
+ }
+
+ cout << "Loaded " << faces.size() << " faces and " << vertices.size() << " vertices" << endl;
+
+ return true;
+}
diff --git a/src/graphics/meshloader.h b/src/graphics/meshloader.h
new file mode 100644
index 0000000..63a175a
--- /dev/null
+++ b/src/graphics/meshloader.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#include <vector>
+#include "Eigen/Dense"
+#include "Eigen/StdVector"
+
+EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(Eigen::Matrix4i)
+
+class MeshLoader
+{
+public:
+ static bool loadTriMesh(const std::string &filepath,
+ std::vector<Eigen::Vector3f> &vertices,
+ std::vector<Eigen::Vector3i> &faces);
+
+private:
+ MeshLoader();
+};
diff --git a/src/graphics/shader.cpp b/src/graphics/shader.cpp
new file mode 100644
index 0000000..6ac9949
--- /dev/null
+++ b/src/graphics/shader.cpp
@@ -0,0 +1,286 @@
+#include "shader.h"
+
+#include <QFile>
+#include <QString>
+#include <QTextStream>
+#include <algorithm>
+#include <iostream>
+#include <utility>
+
+#include "graphicsdebug.h"
+
+Shader::Shader(const std::string &vertexPath, const std::string &fragmentPath)
+{
+ createProgramID();
+ std::vector<GLuint> shaders;
+ shaders.push_back(createVertexShaderFromSource(getFileContents(vertexPath)));
+ shaders.push_back(createFragmentShaderFromSource(getFileContents(fragmentPath)));
+ buildShaderProgramFromShaders(shaders);
+ discoverShaderData();
+}
+
+Shader::Shader(const std::string &vertexPath, const std::string &geometryPath, const std::string &fragmentPath) {
+ createProgramID();
+ std::vector<GLuint> shaders;
+ shaders.push_back(createVertexShaderFromSource(getFileContents(vertexPath)));
+ shaders.push_back(createGeometryShaderFromSource(getFileContents(geometryPath)));
+ shaders.push_back(createFragmentShaderFromSource(getFileContents(fragmentPath)));
+ buildShaderProgramFromShaders(shaders);
+ discoverShaderData();
+}
+
+Shader::~Shader()
+{
+ glDeleteProgram(m_programID);
+}
+
+Shader::Shader(Shader &&that) :
+ m_programID(that.m_programID),
+ m_attributes(std::move(that.m_attributes)),
+ m_uniforms(std::move(that.m_uniforms))
+{
+ that.m_programID = 0;
+}
+
+Shader& Shader::operator=(Shader &&that) {
+ this->~Shader();
+
+ m_programID = that.m_programID;
+ m_attributes = std::move(that.m_attributes);
+ m_uniforms = std::move(that.m_uniforms);
+
+ that.m_programID = 0;
+
+ return *this;
+}
+
+void Shader::bind() const {
+ glUseProgram(m_programID);
+}
+
+void Shader::unbind() const {
+ glUseProgram(0);
+}
+
+GLuint Shader::getUniformLocation(std::string name) {
+ return glGetUniformLocation(m_programID, name.c_str());
+}
+
+GLuint Shader::getEnumeratedUniformLocation(std::string name, int index) {
+ std::string n = name + "[" + std::to_string(index) + "]";
+ return glGetUniformLocation(m_programID, n.c_str());
+}
+
+void Shader::setUniform(const std::string &name, float f) {
+ glUniform1f(m_uniforms[name], f);
+}
+
+void Shader::setUniform(const std::string &name, int i) {
+ glUniform1i(m_uniforms[name], i);
+}
+
+void Shader::setUniform(const std::string &name, bool b) {
+ glUniform1i(m_uniforms[name], static_cast<GLint>(b));
+}
+
+void Shader::setUniformArrayByIndex(const std::string &name, float f, size_t index) {
+ glUniform1f(m_uniformArrays[std::make_tuple(name, index)], f);
+}
+
+void Shader::setUniformArrayByIndex(const std::string &name, int i, size_t index) {
+ glUniform1i(m_uniformArrays[std::make_tuple(name, index)], i);
+}
+
+void Shader::setUniformArrayByIndex(const std::string &name, bool b, size_t index) {
+ glUniform1i(m_uniformArrays[std::make_tuple(name, index)], static_cast<GLint>(b));
+}
+
+void Shader::attachShaders(const std::vector<GLuint> &shaders) {
+ std::for_each(shaders.begin(), shaders.end(), [this](int s){ glAttachShader(m_programID, s); });
+}
+
+void Shader::buildShaderProgramFromShaders(const std::vector<GLuint> &shaders) {
+ attachShaders(shaders);
+ linkShaderProgram();
+ detachShaders(shaders);
+ deleteShaders(shaders);
+}
+
+GLuint Shader::createFragmentShaderFromSource(const std::string &source) {
+ return createShaderFromSource(source, GL_FRAGMENT_SHADER);
+}
+
+GLuint Shader::createGeometryShaderFromSource(const std::string &source) {
+ return createShaderFromSource(source, GL_GEOMETRY_SHADER);
+}
+
+void Shader::compileShader(GLuint handle, const std::string &source) {
+ const GLchar* codeArray[] = { source.c_str() };
+ glShaderSource(handle, 1, codeArray, nullptr);
+ glCompileShader(handle);
+}
+
+GLuint Shader::createVertexShaderFromSource(const std::string &source) {
+ return createShaderFromSource(source, GL_VERTEX_SHADER);
+}
+
+GLuint Shader::createShaderFromSource(const std::string &source, GLenum shaderType) {
+ GLuint shaderHandle = glCreateShader(shaderType);
+ compileShader(shaderHandle, source);
+ checkShaderCompilationStatus(shaderHandle);
+ return shaderHandle;
+}
+
+void Shader::createProgramID() {
+ m_programID = glCreateProgram();
+}
+
+void Shader::detachShaders(const std::vector<GLuint> &shaders) {
+ std::for_each(shaders.begin(), shaders.end(), [this](int s){ glDetachShader(m_programID, s); });
+}
+
+void Shader::deleteShaders(const std::vector<GLuint> &shaders) {
+ std::for_each(shaders.begin(), shaders.end(), [](int s){ glDeleteShader(s); });
+}
+
+void Shader::linkShaderProgram() {
+ glLinkProgram(m_programID);
+ checkShaderLinkStatus(m_programID);
+}
+
+void Shader::discoverShaderData() {
+ discoverAttributes();
+ discoverUniforms();
+}
+
+void Shader::discoverAttributes() {
+ bind();
+ GLint attribCount;
+ glGetProgramiv(m_programID, GL_ACTIVE_ATTRIBUTES, &attribCount);
+ for (int i = 0; i < attribCount; i++) {
+ const GLsizei bufSize = 256;
+ GLsizei nameLength = 0;
+ GLint arraySize = 0;
+ GLenum type;
+ GLchar name[bufSize];
+ glGetActiveAttrib(m_programID, i, bufSize, &nameLength, &arraySize, &type, name);
+ name[std::min(nameLength, bufSize - 1)] = 0;
+ m_attributes[std::string(name)] = glGetAttribLocation(m_programID, name);
+ }
+ unbind();
+}
+
+void Shader::discoverUniforms() {
+ bind();
+ GLint uniformCount;
+ glGetProgramiv(m_programID, GL_ACTIVE_UNIFORMS, &uniformCount);
+ for (int i = 0; i < uniformCount; i++) {
+ const GLsizei bufSize = 256;
+ GLsizei nameLength = 0;
+ GLint arraySize = 0;
+ GLenum type;
+ GLchar name[bufSize];
+ glGetActiveUniform(m_programID, i, bufSize, &nameLength, &arraySize, &type, name);
+ name[std::min(nameLength, bufSize - 1)] = 0;
+
+ std::string strname(name);
+ if (isUniformArray(name, nameLength)) {
+ addUniformArray(strname, arraySize);
+ } else if (isTexture(type)) {
+ addTexture(strname);
+ } else {
+ addUniform(strname);
+ }
+ }
+ unbind();
+}
+
+bool Shader::isUniformArray(const GLchar *name, GLsizei nameLength) {
+ // Check if the last 3 characters are '[0]'
+ return (name[nameLength - 3] == '[') &&
+ (name[nameLength - 2] == '0') &&
+ (name[nameLength - 1] == ']');
+}
+
+bool Shader::isTexture(GLenum type) {
+ return (type == GL_SAMPLER_2D) ||
+ (type == GL_SAMPLER_CUBE);
+}
+
+void Shader::addUniformArray(const std::string &name, size_t size) {
+ std::string cleanName = name.substr(0, name.length() - 3);
+ for (auto i = static_cast<size_t>(0); i < size; i++) {
+ std::string enumeratedName = name;
+ enumeratedName[enumeratedName.length() - 2] = static_cast<char>('0' + i);
+ std::tuple< std::string, size_t > nameIndexTuple = std::make_tuple(cleanName, i);
+ m_uniformArrays[nameIndexTuple] = glGetUniformLocation(m_programID, enumeratedName.c_str());
+ }
+
+#if GRAPHICS_DEBUG_LEVEL > 0
+ m_trackedUniformArrays[name] = false;
+#endif
+}
+
+void Shader::addTexture(const std::string &name) {
+ GLint location = glGetUniformLocation(m_programID, name.c_str());
+ m_textureLocations[name] = location;
+ GLint slot = m_textureSlots.size();
+ m_textureSlots[location] = slot; // Assign slots in increasing order.
+
+#if GRAPHICS_DEBUG_LEVEL > 0
+ m_trackedTextures[name] = false;
+#endif
+}
+
+void Shader::addUniform(const std::string &name) {
+ m_uniforms[name] = glGetUniformLocation(m_programID, name.c_str());
+
+#if GRAPHICS_DEBUG_LEVEL > 0
+ m_trackedUniforms[name] = false;
+#endif
+}
+
+bool Shader::printDebug() {
+ bool noErrors = true;
+
+ for (auto &pair : m_trackedUniforms) {
+ if (!pair.second) {
+ std::cerr << "Uniform '" << pair.first << "' was not set." << std::endl;
+ noErrors = false;
+ }
+ }
+
+ for (auto &pair : m_trackedTextures) {
+ if (!pair.second) {
+ std::cerr << "Texture '" << pair.first << "' was not set." << std::endl;
+ noErrors = false;
+ }
+ }
+
+ return noErrors;
+}
+
+void Shader::resetDebug() {
+ for (auto &pair : m_trackedUniforms) {
+ m_trackedUniforms[pair.first] = false;
+ }
+
+ for (auto &pair : m_trackedTextures) {
+ m_trackedTextures[pair.first] = false;
+ }
+}
+
+std::string Shader::getFileContents(std::string path)
+{
+ QString qpath = QString::fromStdString(path);
+ QFile file(qpath);
+
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ QTextStream stream(&file);
+ QString contents = stream.readAll();
+ file.close();
+ return contents.toStdString();
+ }
+ return "";
+}
+
diff --git a/src/graphics/shader.h b/src/graphics/shader.h
new file mode 100644
index 0000000..bc3c0c1
--- /dev/null
+++ b/src/graphics/shader.h
@@ -0,0 +1,97 @@
+#pragma once
+
+#include <map>
+#include <string>
+#include <tuple>
+#include <vector>
+
+#include "GL/glew.h"
+#include "Eigen/Dense"
+#include <util/unsupportedeigenthing/OpenGLSupport>
+
+
+class Shader {
+public:
+ Shader(const std::string &vertexPath, const std::string &fragmentPath);
+ Shader(const std::string &vertexPath, const std::string &geometryPath, const std::string &fragmentPath);
+
+ Shader(Shader &that) = delete;
+ Shader& operator=(Shader &that) = delete;
+ virtual ~Shader();
+ Shader(Shader &&that);
+ Shader& operator=(Shader &&that);
+
+ GLuint getUniformLocation(std::string name);
+ GLuint getEnumeratedUniformLocation(std::string name, int index);
+
+ template<typename type, int n, int m>
+ void setUniform(const std::string &name, const Eigen::Matrix<type, n, m> &mat) {
+ glUniform(m_uniforms[name], mat);
+ }
+
+ void setUniform(const std::string &name, float f);
+ void setUniform(const std::string &name, int i);
+ void setUniform(const std::string &name, bool b);
+
+ void setUniformArrayByIndex(const std::string &name, float f, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Vector2f &vec2, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Vector3f &vec3, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Vector4f &vec4, size_t index);
+ void setUniformArrayByIndex(const std::string &name, int i, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Vector2i &ivec2, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Vector3i &ivec3, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Vector4i &ivec4, size_t index);
+ void setUniformArrayByIndex(const std::string &name, bool b, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Matrix2f &mat2, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Matrix3f &mat3, size_t index);
+ void setUniformArrayByIndex(const std::string &name, const Eigen::Matrix4f &mat4, size_t index);
+
+
+ void bind() const;
+ void unbind() const;
+ GLuint id() const { return m_programID; }
+
+ bool printDebug();
+ void resetDebug();
+
+private:
+
+ std::string getFileContents(std::string path);
+
+ GLuint createFragmentShaderFromSource(const std::string &source);
+ GLuint createGeometryShaderFromSource(const std::string &source);
+ void compileShader(GLuint handle, const std::string &source);
+ GLuint createVertexShaderFromSource(const std::string &source);
+ GLuint createShaderFromSource(const std::string &source, GLenum shaderType);
+
+ void createProgramID();
+ void attachShaders(const std::vector<GLuint> &shaders);
+ void buildShaderProgramFromShaders(const std::vector<GLuint> &shaders);
+ void linkShaderProgram();
+ void detachShaders(const std::vector<GLuint> &shaders);
+ void deleteShaders(const std::vector<GLuint> &shaders);
+
+ void discoverShaderData();
+ void discoverAttributes();
+ void discoverUniforms();
+
+ bool isUniformArray(const GLchar *name , GLsizei nameLength);
+ bool isTexture(GLenum type);
+ void addUniform(const std::string &name);
+ void addUniformArray(const std::string &name, size_t size);
+ void addTexture(const std::string &name);
+ GLuint m_programID;
+
+ std::map<std::string, GLuint> m_attributes;
+ std::map<std::string, GLuint> m_uniforms;
+ std::map<std::tuple<std::string, size_t>, GLuint> m_uniformArrays;
+ std::map<std::string, GLuint> m_textureLocations; // name to uniform location
+ std::map<GLuint, GLuint> m_textureSlots; // uniform location to texture slot
+
+ // Debugging
+ std::map<std::string, bool> m_trackedUniforms;
+ std::map<std::string, bool> m_trackedTextures;
+ std::map<std::string, bool> m_trackedUniformArrays;
+
+ friend class Graphics;
+};
diff --git a/src/graphics/shape.cpp b/src/graphics/shape.cpp
new file mode 100644
index 0000000..8fe35b1
--- /dev/null
+++ b/src/graphics/shape.cpp
@@ -0,0 +1,272 @@
+#include "shape.h"
+
+#include <iostream>
+#include "graphics/shader.h"
+
+using namespace Eigen;
+using namespace std;
+
+// ================== Constructor
+
+Shape::Shape() :
+ m_surfaceVao(),
+ m_surfaceVbo(),
+ m_surfaceIbo(),
+ m_numSurfaceVertices(),
+ m_verticesSize(),
+ m_red(),
+ m_blue(),
+ m_green(),
+ m_alpha(),
+ m_faces(),
+ m_vertices(),
+ m_anchors(),
+ m_modelMatrix(Matrix4f::Identity()),
+ lastSelected(-1)
+{}
+
+// ================== Initialization and Updating
+
+void Shape::init(const vector<Vector3f> &vertices, const vector<Vector3i> &triangles)
+{
+ m_vertices.clear();
+ copy(vertices.begin(), vertices.end(), back_inserter(m_vertices));
+
+ vector<Vector3f> verts;
+ vector<Vector3f> normals;
+ vector<Vector3f> colors;
+ vector<Vector3i> faces;
+ faces.reserve(triangles.size());
+
+ for (int s = 0; s < triangles.size() * 3; s+=3) faces.push_back(Vector3i(s, s + 1, s + 2));
+ updateMesh(triangles, vertices, verts, normals, colors);
+
+ glGenBuffers(1, &m_surfaceVbo);
+ glGenBuffers(1, &m_surfaceIbo);
+ glGenVertexArrays(1, &m_surfaceVao);
+
+ glBindBuffer(GL_ARRAY_BUFFER, m_surfaceVbo);
+ glBufferData(GL_ARRAY_BUFFER, sizeof(float) * ((verts.size() * 3) + (normals.size() * 3) + (colors.size() * 3)), nullptr, GL_DYNAMIC_DRAW);
+ glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float) * verts.size() * 3, static_cast<const void *>(verts.data()));
+ glBufferSubData(GL_ARRAY_BUFFER, sizeof(float) * verts.size() * 3, sizeof(float) * normals.size() * 3, static_cast<const void *>(normals.data()));
+ glBufferSubData(GL_ARRAY_BUFFER, sizeof(float) * ((verts.size() * 3) + (normals.size() * 3)), sizeof(float) * colors.size() * 3, static_cast<const void *>(colors.data()));
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_surfaceIbo);
+ glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(int) * 3 * faces.size(), static_cast<const void *>(faces.data()), GL_STATIC_DRAW);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+
+ glBindVertexArray(m_surfaceVao);
+ glBindBuffer(GL_ARRAY_BUFFER, m_surfaceVbo);
+ glEnableVertexAttribArray(0);
+ glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, static_cast<GLvoid *>(0));
+ glEnableVertexAttribArray(1);
+ glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, reinterpret_cast<GLvoid *>(sizeof(float) * verts.size() * 3));
+ glEnableVertexAttribArray(2);
+ glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, reinterpret_cast<GLvoid *>(sizeof(float) * (verts.size() * 3 + colors.size() * 3)));
+
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_surfaceIbo);
+ glBindVertexArray(0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+
+ m_numSurfaceVertices = faces.size() * 3;
+ m_verticesSize = vertices.size();
+ m_faces = triangles;
+ m_red = 0.5f + 0.5f * rand() / ((float) RAND_MAX);
+ m_blue = 0.5f + 0.5f * rand() / ((float) RAND_MAX);
+ m_green = 0.5f + 0.5f * rand() / ((float) RAND_MAX);
+ m_alpha = 1.0f;
+}
+
+void Shape::setVertices(const vector<Vector3f> &vertices)
+{
+ m_vertices.clear();
+ copy(vertices.begin(), vertices.end(), back_inserter(m_vertices));
+
+ vector<Vector3f> verts;
+ vector<Vector3f> normals;
+ vector<Vector3f> colors;
+
+ updateMesh(m_faces, vertices, verts, normals, colors);
+
+ glBindBuffer(GL_ARRAY_BUFFER, m_surfaceVbo);
+ glBufferData(GL_ARRAY_BUFFER, sizeof(float) * ((verts.size() * 3) + (normals.size() * 3) + (colors.size() * 3)), nullptr, GL_DYNAMIC_DRAW);
+ glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float) * verts.size() * 3, static_cast<const void *>(verts.data()));
+ glBufferSubData(GL_ARRAY_BUFFER, sizeof(float) * verts.size() * 3, sizeof(float) * normals.size() * 3, static_cast<const void *>(normals.data()));
+ glBufferSubData(GL_ARRAY_BUFFER, sizeof(float) * ((verts.size() * 3) + (normals.size() * 3)), sizeof(float) * colors.size() * 3, static_cast<const void *>(colors.data()));
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+}
+
+// ================== Model Matrix
+
+void Shape::setModelMatrix(const Affine3f &model) { m_modelMatrix = model.matrix(); }
+
+// ================== General Graphics Stuff
+
+void Shape::draw(Shader *shader, GLenum mode)
+{
+ Eigen::Matrix3f m3 = m_modelMatrix.topLeftCorner(3, 3);
+ Eigen::Matrix3f inverseTransposeModel = m3.inverse().transpose();
+
+ switch(mode) {
+ case GL_TRIANGLES:
+ {
+ shader->setUniform("wire", 0);
+ shader->setUniform("model", m_modelMatrix);
+ shader->setUniform("inverseTransposeModel", inverseTransposeModel);
+ shader->setUniform("red", m_red);
+ shader->setUniform("green", m_green);
+ shader->setUniform("blue", m_blue);
+ shader->setUniform("alpha", m_alpha);
+ glBindVertexArray(m_surfaceVao);
+ glDrawElements(mode, m_numSurfaceVertices, GL_UNSIGNED_INT, reinterpret_cast<GLvoid *>(0));
+ glBindVertexArray(0);
+ break;
+ }
+ case GL_POINTS:
+ {
+ shader->setUniform("model", m_modelMatrix);
+ shader->setUniform("inverseTransposeModel", inverseTransposeModel);
+ glBindVertexArray(m_surfaceVao);
+ glDrawElements(mode, m_numSurfaceVertices, GL_UNSIGNED_INT, reinterpret_cast<GLvoid *>(0));
+ glBindVertexArray(0);
+ break;
+ }
+ }
+}
+
+SelectMode Shape::select(Shader *shader, int closest_vertex)
+{
+ if (closest_vertex == -1) return SelectMode::None;
+
+ bool vertexIsNowSelected = m_anchors.find(closest_vertex) == m_anchors.end();
+
+ if (vertexIsNowSelected) {
+ m_anchors.insert(closest_vertex);
+ } else {
+ m_anchors.erase(closest_vertex);
+ }
+
+ selectHelper();
+
+ return vertexIsNowSelected ? SelectMode::Anchor : SelectMode::Unanchor;
+}
+
+bool Shape::selectWithSpecifiedMode(Shader *shader, int closest_vertex, SelectMode mode)
+{
+ switch (mode) {
+ case SelectMode::None: {
+ return false;
+ }
+ case SelectMode::Anchor: {
+ if (m_anchors.find(closest_vertex) != m_anchors.end()) return false;
+ m_anchors.insert(closest_vertex);
+ break;
+ }
+ case SelectMode::Unanchor: {
+ if (m_anchors.find(closest_vertex) == m_anchors.end()) return false;
+ m_anchors.erase(closest_vertex);
+ break;
+ }
+ }
+
+ selectHelper();
+
+ return true;
+}
+
+int Shape::getClosestVertex(Vector3f start, Vector3f ray, float threshold)
+{
+ int closest_vertex = -1;
+ int i = 0;
+ float dist = numeric_limits<float>::max();
+ ParametrizedLine line = ParametrizedLine<float, 3>::Through(start, start + ray);
+
+ for (const Vector3f &v : m_vertices) {
+ float d = line.distance(v);
+ if (d<dist) {
+ dist = d;
+ closest_vertex = i;
+ }
+ ++i;
+ }
+
+ if (dist >= threshold) closest_vertex = -1;
+
+ return closest_vertex;
+}
+
+bool Shape::getAnchorPos(int lastSelected,
+ Eigen::Vector3f& pos,
+ Eigen::Vector3f ray,
+ Eigen::Vector3f start)
+{
+ bool isAnchor = m_anchors.find(lastSelected) != m_anchors.end();
+ if (isAnchor) {
+ Eigen::Vector3f oldPos = m_vertices[lastSelected];
+ Eigen::ParametrizedLine line = ParametrizedLine<float, 3>::Through(start, start+ray);
+ pos = line.projection(oldPos);
+ }
+ return isAnchor;
+}
+
+// ================== Accessors
+
+const vector<Vector3f> &Shape::getVertices() { return m_vertices; }
+const vector<Vector3i> &Shape::getFaces() { return m_faces; }
+const unordered_set<int> &Shape::getAnchors() { return m_anchors; }
+
+// ================== Helpers
+
+void Shape::selectHelper()
+{
+ vector<Vector3f> verts;
+ vector<Vector3f> normals;
+ vector<Vector3f> colors;
+ updateMesh(m_faces, m_vertices, verts, normals, colors);
+
+ glBindBuffer(GL_ARRAY_BUFFER, m_surfaceVbo);
+ glBufferData(GL_ARRAY_BUFFER, sizeof(float) * ((verts.size() * 3) + (normals.size() * 3) + (colors.size() * 3)), nullptr, GL_DYNAMIC_DRAW);
+ glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float) * verts.size() * 3, static_cast<const void *>(verts.data()));
+ glBufferSubData(GL_ARRAY_BUFFER, sizeof(float) * verts.size() * 3, sizeof(float) * normals.size() * 3, static_cast<const void *>(normals.data()));
+ glBufferSubData(GL_ARRAY_BUFFER, sizeof(float) * ((verts.size() * 3) + (normals.size() * 3)), sizeof(float) * colors.size() * 3, static_cast<const void *>(colors.data()));
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+}
+
+Vector3f Shape::getNormal(const Vector3i& face)
+{
+ Vector3f& v1 = m_vertices[face[0]];
+ Vector3f& v2 = m_vertices[face[1]];
+ Vector3f& v3 = m_vertices[face[2]];
+ Vector3f e1 = v2 - v1;
+ Vector3f e2 = v3 - v1;
+ Vector3f n = e1.cross(e2);
+ return n.normalized();
+}
+
+void Shape::updateMesh(const std::vector<Eigen::Vector3i> &faces,
+ const std::vector<Eigen::Vector3f> &vertices,
+ std::vector<Eigen::Vector3f>& verts,
+ std::vector<Eigen::Vector3f>& normals,
+ std::vector<Eigen::Vector3f>& colors)
+{
+ verts.reserve(faces.size() * 3);
+ normals.reserve(faces.size() * 3);
+
+ for (const Eigen::Vector3i& face : faces) {
+ Vector3f n = getNormal(face);
+
+ for (auto& v: {face[0], face[1], face[2]}) {
+ normals.push_back(n);
+ verts.push_back(vertices[v]);
+
+ if (m_anchors.find(v) == m_anchors.end()) {
+ colors.push_back(Vector3f(1,0,0));
+ } else {
+ colors.push_back(Vector3f(0, 1 - m_green, 1 - m_blue));
+ }
+ }
+ }
+}
+
diff --git a/src/graphics/shape.h b/src/graphics/shape.h
new file mode 100644
index 0000000..3ba81fb
--- /dev/null
+++ b/src/graphics/shape.h
@@ -0,0 +1,72 @@
+#pragma once
+
+#include <GL/glew.h>
+#include <vector>
+#include <unordered_set>
+
+#define EIGEN_DONT_VECTORIZE
+#define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT
+#include "Eigen/StdVector"
+EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(Eigen::Matrix2f)
+EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(Eigen::Matrix3f)
+EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(Eigen::Matrix3i)
+#include "Eigen/Dense"
+
+enum SelectMode
+{
+ None = 0,
+ Anchor = 1,
+ Unanchor = 2
+};
+
+class Shader;
+
+class Shape
+{
+public:
+ Shape();
+
+ void init(const std::vector<Eigen::Vector3f> &vertices, const std::vector<Eigen::Vector3i> &triangles);
+ void setVertices(const std::vector<Eigen::Vector3f> &vertices);
+
+ void setModelMatrix(const Eigen::Affine3f &model);
+
+ void draw(Shader *shader, GLenum mode);
+ SelectMode select(Shader *shader, int vertex);
+ bool selectWithSpecifiedMode(Shader *shader, int vertex, SelectMode mode);
+ int getClosestVertex(Eigen::Vector3f start, Eigen::Vector3f ray, float threshold);
+ bool getAnchorPos(int lastSelected, Eigen::Vector3f& pos, Eigen::Vector3f ray, Eigen::Vector3f start);
+
+ const std::vector<Eigen::Vector3f>& getVertices();
+ const std::vector<Eigen::Vector3i>& getFaces();
+ const std::unordered_set<int>& getAnchors();
+
+private:
+ GLuint m_surfaceVao;
+ GLuint m_surfaceVbo;
+ GLuint m_surfaceIbo;
+
+ unsigned int m_numSurfaceVertices;
+ unsigned int m_verticesSize;
+ float m_red;
+ float m_blue;
+ float m_green;
+ float m_alpha;
+
+ std::vector<Eigen::Vector3i> m_faces;
+ std::vector<Eigen::Vector3f> m_vertices;
+ std::unordered_set<int> m_anchors;
+
+ Eigen::Matrix4f m_modelMatrix;
+ int lastSelected = -1;
+
+ // Helpers
+
+ void selectHelper();
+ Eigen::Vector3f getNormal(const Eigen::Vector3i& face);
+ void updateMesh(const std::vector<Eigen::Vector3i> &triangles,
+ const std::vector<Eigen::Vector3f> &vertices,
+ std::vector<Eigen::Vector3f>& verts,
+ std::vector<Eigen::Vector3f>& normals,
+ std::vector<Eigen::Vector3f>& colors);
+};
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100755
index 0000000..a11e7d8
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,38 @@
+#include "mainwindow.h"
+#include <cstdlib>
+#include <ctime>
+
+#include <QApplication>
+#include <QSurfaceFormat>
+#include <QScreen>
+
+int main(int argc, char *argv[])
+{
+ srand(static_cast<unsigned>(time(0)));
+
+ // Create a Qt application
+ QApplication a(argc, argv);
+ QCoreApplication::setApplicationName("ARAP");
+ QCoreApplication::setOrganizationName("CS 2240");
+ QCoreApplication::setApplicationVersion(QT_VERSION_STR);
+
+ // Set OpenGL version to 4.1 and context to Core
+ QSurfaceFormat fmt;
+ fmt.setVersion(4, 1);
+ fmt.setProfile(QSurfaceFormat::CoreProfile);
+ QSurfaceFormat::setDefaultFormat(fmt);
+
+ // Create a GUI window
+ MainWindow w;
+ w.resize(600, 500);
+ int desktopArea = QGuiApplication::primaryScreen()->size().width() *
+ QGuiApplication::primaryScreen()->size().height();
+ int widgetArea = w.width() * w.height();
+ if (((float)widgetArea / (float)desktopArea) < 0.75f)
+ w.show();
+ else
+ w.showMaximized();
+
+
+ return a.exec();
+}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
new file mode 100755
index 0000000..4157237
--- /dev/null
+++ b/src/mainwindow.cpp
@@ -0,0 +1,17 @@
+#include "mainwindow.h"
+#include <QHBoxLayout>
+
+MainWindow::MainWindow()
+{
+ glWidget = new GLWidget();
+
+ QHBoxLayout *container = new QHBoxLayout;
+ container->addWidget(glWidget);
+ this->setLayout(container);
+}
+
+
+MainWindow::~MainWindow()
+{
+ delete glWidget;
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h
new file mode 100755
index 0000000..ac827b0
--- /dev/null
+++ b/src/mainwindow.h
@@ -0,0 +1,16 @@
+#pragma once
+
+#include <QMainWindow>
+#include "glwidget.h"
+
+class MainWindow : public QWidget
+{
+ Q_OBJECT
+
+public:
+ MainWindow();
+ ~MainWindow();
+
+private:
+ GLWidget *glWidget;
+};
diff --git a/util/tiny_obj_loader.h b/util/tiny_obj_loader.h
new file mode 100644
index 0000000..474e088
--- /dev/null
+++ b/util/tiny_obj_loader.h
@@ -0,0 +1,2242 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2012-2017 Syoyo Fujita and many contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+//
+// version 1.1.0 : Support parsing vertex color(#144)
+// version 1.0.8 : Fix parsing `g` tag just after `usemtl`(#138)
+// version 1.0.7 : Support multiple tex options(#126)
+// version 1.0.6 : Add TINYOBJLOADER_USE_DOUBLE option(#124)
+// version 1.0.5 : Ignore `Tr` when `d` exists in MTL(#43)
+// version 1.0.4 : Support multiple filenames for 'mtllib'(#112)
+// version 1.0.3 : Support parsing texture options(#85)
+// version 1.0.2 : Improve parsing speed by about a factor of 2 for large
+// files(#105)
+// version 1.0.1 : Fixes a shape is lost if obj ends with a 'usemtl'(#104)
+// version 1.0.0 : Change data structure. Change license from BSD to MIT.
+//
+
+//
+// Use this in *one* .cc
+// #define TINYOBJLOADER_IMPLEMENTATION
+// #include "tiny_obj_loader.h"
+//
+
+#ifndef TINY_OBJ_LOADER_H_
+#define TINY_OBJ_LOADER_H_
+
+#include <map>
+#include <string>
+#include <vector>
+
+namespace tinyobj {
+
+// https://en.wikipedia.org/wiki/Wavefront_.obj_file says ...
+//
+// -blendu on | off # set horizontal texture blending
+// (default on)
+// -blendv on | off # set vertical texture blending
+// (default on)
+// -boost real_value # boost mip-map sharpness
+// -mm base_value gain_value # modify texture map values (default
+// 0 1)
+// # base_value = brightness,
+// gain_value = contrast
+// -o u [v [w]] # Origin offset (default
+// 0 0 0)
+// -s u [v [w]] # Scale (default
+// 1 1 1)
+// -t u [v [w]] # Turbulence (default
+// 0 0 0)
+// -texres resolution # texture resolution to create
+// -clamp on | off # only render texels in the clamped
+// 0-1 range (default off)
+// # When unclamped, textures are
+// repeated across a surface,
+// # when clamped, only texels which
+// fall within the 0-1
+// # range are rendered.
+// -bm mult_value # bump multiplier (for bump maps
+// only)
+//
+// -imfchan r | g | b | m | l | z # specifies which channel of the file
+// is used to
+// # create a scalar or bump texture.
+// r:red, g:green,
+// # b:blue, m:matte, l:luminance,
+// z:z-depth..
+// # (the default for bump is 'l' and
+// for decal is 'm')
+// bump -imfchan r bumpmap.tga # says to use the red channel of
+// bumpmap.tga as the bumpmap
+//
+// For reflection maps...
+//
+// -type sphere # specifies a sphere for a "refl"
+// reflection map
+// -type cube_top | cube_bottom | # when using a cube map, the texture
+// file for each
+// cube_front | cube_back | # side of the cube is specified
+// separately
+// cube_left | cube_right
+
+#ifdef TINYOBJLOADER_USE_DOUBLE
+//#pragma message "using double"
+typedef double real_t;
+#else
+//#pragma message "using float"
+typedef float real_t;
+#endif
+
+typedef enum {
+ TEXTURE_TYPE_NONE, // default
+ TEXTURE_TYPE_SPHERE,
+ TEXTURE_TYPE_CUBE_TOP,
+ TEXTURE_TYPE_CUBE_BOTTOM,
+ TEXTURE_TYPE_CUBE_FRONT,
+ TEXTURE_TYPE_CUBE_BACK,
+ TEXTURE_TYPE_CUBE_LEFT,
+ TEXTURE_TYPE_CUBE_RIGHT
+} texture_type_t;
+
+typedef struct {
+ texture_type_t type; // -type (default TEXTURE_TYPE_NONE)
+ real_t sharpness; // -boost (default 1.0?)
+ real_t brightness; // base_value in -mm option (default 0)
+ real_t contrast; // gain_value in -mm option (default 1)
+ real_t origin_offset[3]; // -o u [v [w]] (default 0 0 0)
+ real_t scale[3]; // -s u [v [w]] (default 1 1 1)
+ real_t turbulence[3]; // -t u [v [w]] (default 0 0 0)
+ // int texture_resolution; // -texres resolution (default = ?) TODO
+ bool clamp; // -clamp (default false)
+ char imfchan; // -imfchan (the default for bump is 'l' and for decal is 'm')
+ bool blendu; // -blendu (default on)
+ bool blendv; // -blendv (default on)
+ real_t bump_multiplier; // -bm (for bump maps only, default 1.0)
+} texture_option_t;
+
+typedef struct {
+ std::string name;
+
+ real_t ambient[3];
+ real_t diffuse[3];
+ real_t specular[3];
+ real_t transmittance[3];
+ real_t emission[3];
+ real_t shininess;
+ real_t ior; // index of refraction
+ real_t dissolve; // 1 == opaque; 0 == fully transparent
+ // illumination model (see http://www.fileformat.info/format/material/)
+ int illum;
+
+ int dummy; // Suppress padding warning.
+
+ std::string ambient_texname; // map_Ka
+ std::string diffuse_texname; // map_Kd
+ std::string specular_texname; // map_Ks
+ std::string specular_highlight_texname; // map_Ns
+ std::string bump_texname; // map_bump, map_Bump, bump
+ std::string displacement_texname; // disp
+ std::string alpha_texname; // map_d
+ std::string reflection_texname; // refl
+
+ texture_option_t ambient_texopt;
+ texture_option_t diffuse_texopt;
+ texture_option_t specular_texopt;
+ texture_option_t specular_highlight_texopt;
+ texture_option_t bump_texopt;
+ texture_option_t displacement_texopt;
+ texture_option_t alpha_texopt;
+ texture_option_t reflection_texopt;
+
+ // PBR extension
+ // http://exocortex.com/blog/extending_wavefront_mtl_to_support_pbr
+ real_t roughness; // [0, 1] default 0
+ real_t metallic; // [0, 1] default 0
+ real_t sheen; // [0, 1] default 0
+ real_t clearcoat_thickness; // [0, 1] default 0
+ real_t clearcoat_roughness; // [0, 1] default 0
+ real_t anisotropy; // aniso. [0, 1] default 0
+ real_t anisotropy_rotation; // anisor. [0, 1] default 0
+ real_t pad0;
+ std::string roughness_texname; // map_Pr
+ std::string metallic_texname; // map_Pm
+ std::string sheen_texname; // map_Ps
+ std::string emissive_texname; // map_Ke
+ std::string normal_texname; // norm. For normal mapping.
+
+ texture_option_t roughness_texopt;
+ texture_option_t metallic_texopt;
+ texture_option_t sheen_texopt;
+ texture_option_t emissive_texopt;
+ texture_option_t normal_texopt;
+
+ int pad2;
+
+ std::map<std::string, std::string> unknown_parameter;
+} material_t;
+
+typedef struct {
+ std::string name;
+
+ std::vector<int> intValues;
+ std::vector<real_t> floatValues;
+ std::vector<std::string> stringValues;
+} tag_t;
+
+// Index struct to support different indices for vtx/normal/texcoord.
+// -1 means not used.
+typedef struct {
+ int vertex_index;
+ int normal_index;
+ int texcoord_index;
+} index_t;
+
+typedef struct {
+ std::vector<index_t> indices;
+ std::vector<unsigned char> num_face_vertices; // The number of vertices per
+ // face. 3 = polygon, 4 = quad,
+ // ... Up to 255.
+ std::vector<int> material_ids; // per-face material ID
+ std::vector<tag_t> tags; // SubD tag
+} mesh_t;
+
+typedef struct {
+ std::string name;
+ mesh_t mesh;
+} shape_t;
+
+// Vertex attributes
+typedef struct {
+ std::vector<real_t> vertices; // 'v'
+ std::vector<real_t> normals; // 'vn'
+ std::vector<real_t> texcoords; // 'vt'
+ std::vector<real_t> colors; // extension: vertex colors
+} attrib_t;
+
+typedef struct callback_t_ {
+ // W is optional and set to 1 if there is no `w` item in `v` line
+ void (*vertex_cb)(void *user_data, real_t x, real_t y, real_t z, real_t w);
+ void (*normal_cb)(void *user_data, real_t x, real_t y, real_t z);
+
+ // y and z are optional and set to 0 if there is no `y` and/or `z` item(s) in
+ // `vt` line.
+ void (*texcoord_cb)(void *user_data, real_t x, real_t y, real_t z);
+
+ // called per 'f' line. num_indices is the number of face indices(e.g. 3 for
+ // triangle, 4 for quad)
+ // 0 will be passed for undefined index in index_t members.
+ void (*index_cb)(void *user_data, index_t *indices, int num_indices);
+ // `name` material name, `material_id` = the array index of material_t[]. -1
+ // if
+ // a material not found in .mtl
+ void (*usemtl_cb)(void *user_data, const char *name, int material_id);
+ // `materials` = parsed material data.
+ void (*mtllib_cb)(void *user_data, const material_t *materials,
+ int num_materials);
+ // There may be multiple group names
+ void (*group_cb)(void *user_data, const char **names, int num_names);
+ void (*object_cb)(void *user_data, const char *name);
+
+ callback_t_()
+ : vertex_cb(NULL),
+ normal_cb(NULL),
+ texcoord_cb(NULL),
+ index_cb(NULL),
+ usemtl_cb(NULL),
+ mtllib_cb(NULL),
+ group_cb(NULL),
+ object_cb(NULL) {}
+} callback_t;
+
+class MaterialReader {
+ public:
+ MaterialReader() {}
+ virtual ~MaterialReader();
+
+ virtual bool operator()(const std::string &matId,
+ std::vector<material_t> *materials,
+ std::map<std::string, int> *matMap,
+ std::string *err) = 0;
+};
+
+class MaterialFileReader : public MaterialReader {
+ public:
+ explicit MaterialFileReader(const std::string &mtl_basedir)
+ : m_mtlBaseDir(mtl_basedir) {}
+ virtual ~MaterialFileReader() {}
+ virtual bool operator()(const std::string &matId,
+ std::vector<material_t> *materials,
+ std::map<std::string, int> *matMap, std::string *err);
+
+ private:
+ std::string m_mtlBaseDir;
+};
+
+class MaterialStreamReader : public MaterialReader {
+ public:
+ explicit MaterialStreamReader(std::istream &inStream)
+ : m_inStream(inStream) {}
+ virtual ~MaterialStreamReader() {}
+ virtual bool operator()(const std::string &matId,
+ std::vector<material_t> *materials,
+ std::map<std::string, int> *matMap, std::string *err);
+
+ private:
+ std::istream &m_inStream;
+};
+
+/// Loads .obj from a file.
+/// 'attrib', 'shapes' and 'materials' will be filled with parsed shape data
+/// 'shapes' will be filled with parsed shape data
+/// Returns true when loading .obj become success.
+/// Returns warning and error message into `err`
+/// 'mtl_basedir' is optional, and used for base directory for .mtl file.
+/// In default(`NULL'), .mtl file is searched from an application's working
+/// directory.
+/// 'triangulate' is optional, and used whether triangulate polygon face in .obj
+/// or not.
+bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
+ std::vector<material_t> *materials, std::string *err,
+ const char *filename, const char *mtl_basedir = NULL,
+ bool triangulate = true);
+
+/// Loads .obj from a file with custom user callback.
+/// .mtl is loaded as usual and parsed material_t data will be passed to
+/// `callback.mtllib_cb`.
+/// Returns true when loading .obj/.mtl become success.
+/// Returns warning and error message into `err`
+/// See `examples/callback_api/` for how to use this function.
+bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback,
+ void *user_data = NULL,
+ MaterialReader *readMatFn = NULL,
+ std::string *err = NULL);
+
+/// Loads object from a std::istream, uses GetMtlIStreamFn to retrieve
+/// std::istream for materials.
+/// Returns true when loading .obj become success.
+/// Returns warning and error message into `err`
+bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
+ std::vector<material_t> *materials, std::string *err,
+ std::istream *inStream, MaterialReader *readMatFn = NULL,
+ bool triangulate = true);
+
+/// Loads materials into std::map
+void LoadMtl(std::map<std::string, int> *material_map,
+ std::vector<material_t> *materials, std::istream *inStream,
+ std::string *warning);
+
+} // namespace tinyobj
+
+#endif // TINY_OBJ_LOADER_H_
+
+#ifdef TINYOBJLOADER_IMPLEMENTATION
+#include <cassert>
+#include <cctype>
+#include <cmath>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <utility>
+
+#include <fstream>
+#include <sstream>
+
+namespace tinyobj {
+
+MaterialReader::~MaterialReader() {}
+
+struct vertex_index {
+ int v_idx, vt_idx, vn_idx;
+ vertex_index() : v_idx(-1), vt_idx(-1), vn_idx(-1) {}
+ explicit vertex_index(int idx) : v_idx(idx), vt_idx(idx), vn_idx(idx) {}
+ vertex_index(int vidx, int vtidx, int vnidx)
+ : v_idx(vidx), vt_idx(vtidx), vn_idx(vnidx) {}
+};
+
+struct tag_sizes {
+ tag_sizes() : num_ints(0), num_reals(0), num_strings(0) {}
+ int num_ints;
+ int num_reals;
+ int num_strings;
+};
+
+struct obj_shape {
+ std::vector<real_t> v;
+ std::vector<real_t> vn;
+ std::vector<real_t> vt;
+};
+
+// See
+// http://stackoverflow.com/questions/6089231/getting-std-ifstream-to-handle-lf-cr-and-crlf
+static std::istream &safeGetline(std::istream &is, std::string &t) {
+ t.clear();
+
+ // The characters in the stream are read one-by-one using a std::streambuf.
+ // That is faster than reading them one-by-one using the std::istream.
+ // Code that uses streambuf this way must be guarded by a sentry object.
+ // The sentry object performs various tasks,
+ // such as thread synchronization and updating the stream state.
+
+ std::istream::sentry se(is, true);
+ std::streambuf *sb = is.rdbuf();
+
+ if (se) {
+ for (;;) {
+ int c = sb->sbumpc();
+ switch (c) {
+ case '\n':
+ return is;
+ case '\r':
+ if (sb->sgetc() == '\n') sb->sbumpc();
+ return is;
+ case EOF:
+ // Also handle the case when the last line has no line ending
+ if (t.empty()) is.setstate(std::ios::eofbit);
+ return is;
+ default:
+ t += static_cast<char>(c);
+ }
+ }
+ }
+
+ return is;
+}
+
+#define IS_SPACE(x) (((x) == ' ') || ((x) == '\t'))
+#define IS_DIGIT(x) \
+ (static_cast<unsigned int>((x) - '0') < static_cast<unsigned int>(10))
+#define IS_NEW_LINE(x) (((x) == '\r') || ((x) == '\n') || ((x) == '\0'))
+
+// Make index zero-base, and also support relative index.
+static inline bool fixIndex(int idx, int n, int *ret) {
+ if (!ret) {
+ return false;
+ }
+
+ if (idx > 0) {
+ (*ret) = idx - 1;
+ return true;
+ }
+
+ if (idx == 0) {
+ // zero is not allowed according to the spec.
+ return false;
+ }
+
+ if (idx < 0) {
+ (*ret) = n + idx; // negative value = relative
+ return true;
+ }
+
+ return false; // never reach here.
+}
+
+static inline std::string parseString(const char **token) {
+ std::string s;
+ (*token) += strspn((*token), " \t");
+ size_t e = strcspn((*token), " \t\r");
+ s = std::string((*token), &(*token)[e]);
+ (*token) += e;
+ return s;
+}
+
+static inline int parseInt(const char **token) {
+ (*token) += strspn((*token), " \t");
+ int i = atoi((*token));
+ (*token) += strcspn((*token), " \t\r");
+ return i;
+}
+
+// Tries to parse a floating point number located at s.
+//
+// s_end should be a location in the string where reading should absolutely
+// stop. For example at the end of the string, to prevent buffer overflows.
+//
+// Parses the following EBNF grammar:
+// sign = "+" | "-" ;
+// END = ? anything not in digit ?
+// digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
+// integer = [sign] , digit , {digit} ;
+// decimal = integer , ["." , integer] ;
+// float = ( decimal , END ) | ( decimal , ("E" | "e") , integer , END ) ;
+//
+// Valid strings are for example:
+// -0 +3.1417e+2 -0.0E-3 1.0324 -1.41 11e2
+//
+// If the parsing is a success, result is set to the parsed value and true
+// is returned.
+//
+// The function is greedy and will parse until any of the following happens:
+// - a non-conforming character is encountered.
+// - s_end is reached.
+//
+// The following situations triggers a failure:
+// - s >= s_end.
+// - parse failure.
+//
+static bool tryParseDouble(const char *s, const char *s_end, double *result) {
+ if (s >= s_end) {
+ return false;
+ }
+
+ double mantissa = 0.0;
+ // This exponent is base 2 rather than 10.
+ // However the exponent we parse is supposed to be one of ten,
+ // thus we must take care to convert the exponent/and or the
+ // mantissa to a * 2^E, where a is the mantissa and E is the
+ // exponent.
+ // To get the final double we will use ldexp, it requires the
+ // exponent to be in base 2.
+ int exponent = 0;
+
+ // NOTE: THESE MUST BE DECLARED HERE SINCE WE ARE NOT ALLOWED
+ // TO JUMP OVER DEFINITIONS.
+ char sign = '+';
+ char exp_sign = '+';
+ char const *curr = s;
+
+ // How many characters were read in a loop.
+ int read = 0;
+ // Tells whether a loop terminated due to reaching s_end.
+ bool end_not_reached = false;
+
+ /*
+ BEGIN PARSING.
+ */
+
+ // Find out what sign we've got.
+ if (*curr == '+' || *curr == '-') {
+ sign = *curr;
+ curr++;
+ } else if (IS_DIGIT(*curr)) { /* Pass through. */
+ } else {
+ goto fail;
+ }
+
+ // Read the integer part.
+ end_not_reached = (curr != s_end);
+ while (end_not_reached && IS_DIGIT(*curr)) {
+ mantissa *= 10;
+ mantissa += static_cast<int>(*curr - 0x30);
+ curr++;
+ read++;
+ end_not_reached = (curr != s_end);
+ }
+
+ // We must make sure we actually got something.
+ if (read == 0) goto fail;
+ // We allow numbers of form "#", "###" etc.
+ if (!end_not_reached) goto assemble;
+
+ // Read the decimal part.
+ if (*curr == '.') {
+ curr++;
+ read = 1;
+ end_not_reached = (curr != s_end);
+ while (end_not_reached && IS_DIGIT(*curr)) {
+ static const double pow_lut[] = {
+ 1.0, 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001,
+ };
+ const int lut_entries = sizeof pow_lut / sizeof pow_lut[0];
+
+ // NOTE: Don't use powf here, it will absolutely murder precision.
+ mantissa += static_cast<int>(*curr - 0x30) *
+ (read < lut_entries ? pow_lut[read] : std::pow(10.0, -read));
+ read++;
+ curr++;
+ end_not_reached = (curr != s_end);
+ }
+ } else if (*curr == 'e' || *curr == 'E') {
+ } else {
+ goto assemble;
+ }
+
+ if (!end_not_reached) goto assemble;
+
+ // Read the exponent part.
+ if (*curr == 'e' || *curr == 'E') {
+ curr++;
+ // Figure out if a sign is present and if it is.
+ end_not_reached = (curr != s_end);
+ if (end_not_reached && (*curr == '+' || *curr == '-')) {
+ exp_sign = *curr;
+ curr++;
+ } else if (IS_DIGIT(*curr)) { /* Pass through. */
+ } else {
+ // Empty E is not allowed.
+ goto fail;
+ }
+
+ read = 0;
+ end_not_reached = (curr != s_end);
+ while (end_not_reached && IS_DIGIT(*curr)) {
+ exponent *= 10;
+ exponent += static_cast<int>(*curr - 0x30);
+ curr++;
+ read++;
+ end_not_reached = (curr != s_end);
+ }
+ exponent *= (exp_sign == '+' ? 1 : -1);
+ if (read == 0) goto fail;
+ }
+
+assemble:
+ *result = (sign == '+' ? 1 : -1) *
+ (exponent ? std::ldexp(mantissa * std::pow(5.0, exponent), exponent)
+ : mantissa);
+ return true;
+fail:
+ return false;
+}
+
+static inline real_t parseReal(const char **token, double default_value = 0.0) {
+ (*token) += strspn((*token), " \t");
+ const char *end = (*token) + strcspn((*token), " \t\r");
+ double val = default_value;
+ tryParseDouble((*token), end, &val);
+ real_t f = static_cast<real_t>(val);
+ (*token) = end;
+ return f;
+}
+
+static inline bool parseReal(const char **token, real_t *out) {
+ (*token) += strspn((*token), " \t");
+ const char *end = (*token) + strcspn((*token), " \t\r");
+ double val;
+ bool ret = tryParseDouble((*token), end, &val);
+ if (ret) {
+ real_t f = static_cast<real_t>(val);
+ (*out) = f;
+ }
+ (*token) = end;
+ return ret;
+}
+
+static inline void parseReal2(real_t *x, real_t *y, const char **token,
+ const double default_x = 0.0,
+ const double default_y = 0.0) {
+ (*x) = parseReal(token, default_x);
+ (*y) = parseReal(token, default_y);
+}
+
+static inline void parseReal3(real_t *x, real_t *y, real_t *z,
+ const char **token, const double default_x = 0.0,
+ const double default_y = 0.0,
+ const double default_z = 0.0) {
+ (*x) = parseReal(token, default_x);
+ (*y) = parseReal(token, default_y);
+ (*z) = parseReal(token, default_z);
+}
+
+static inline void parseV(real_t *x, real_t *y, real_t *z, real_t *w,
+ const char **token, const double default_x = 0.0,
+ const double default_y = 0.0,
+ const double default_z = 0.0,
+ const double default_w = 1.0) {
+ (*x) = parseReal(token, default_x);
+ (*y) = parseReal(token, default_y);
+ (*z) = parseReal(token, default_z);
+ (*w) = parseReal(token, default_w);
+}
+
+// Extension: parse vertex with colors(6 items)
+static inline bool parseVertexWithColor(real_t *x, real_t *y, real_t *z, real_t *r,
+ real_t *g, real_t *b,
+ const char **token, const double default_x = 0.0,
+ const double default_y = 0.0,
+ const double default_z = 0.0) {
+ (*x) = parseReal(token, default_x);
+ (*y) = parseReal(token, default_y);
+ (*z) = parseReal(token, default_z);
+
+ (*r) = parseReal(token, 1.0);
+ (*g) = parseReal(token, 1.0);
+ (*b) = parseReal(token, 1.0);
+
+ return true;
+}
+
+static inline bool parseOnOff(const char **token, bool default_value = true) {
+ (*token) += strspn((*token), " \t");
+ const char *end = (*token) + strcspn((*token), " \t\r");
+
+ bool ret = default_value;
+ if ((0 == strncmp((*token), "on", 2))) {
+ ret = true;
+ } else if ((0 == strncmp((*token), "off", 3))) {
+ ret = false;
+ }
+
+ (*token) = end;
+ return ret;
+}
+
+static inline texture_type_t parseTextureType(
+ const char **token, texture_type_t default_value = TEXTURE_TYPE_NONE) {
+ (*token) += strspn((*token), " \t");
+ const char *end = (*token) + strcspn((*token), " \t\r");
+ texture_type_t ty = default_value;
+
+ if ((0 == strncmp((*token), "cube_top", strlen("cube_top")))) {
+ ty = TEXTURE_TYPE_CUBE_TOP;
+ } else if ((0 == strncmp((*token), "cube_bottom", strlen("cube_bottom")))) {
+ ty = TEXTURE_TYPE_CUBE_BOTTOM;
+ } else if ((0 == strncmp((*token), "cube_left", strlen("cube_left")))) {
+ ty = TEXTURE_TYPE_CUBE_LEFT;
+ } else if ((0 == strncmp((*token), "cube_right", strlen("cube_right")))) {
+ ty = TEXTURE_TYPE_CUBE_RIGHT;
+ } else if ((0 == strncmp((*token), "cube_front", strlen("cube_front")))) {
+ ty = TEXTURE_TYPE_CUBE_FRONT;
+ } else if ((0 == strncmp((*token), "cube_back", strlen("cube_back")))) {
+ ty = TEXTURE_TYPE_CUBE_BACK;
+ } else if ((0 == strncmp((*token), "sphere", strlen("sphere")))) {
+ ty = TEXTURE_TYPE_SPHERE;
+ }
+
+ (*token) = end;
+ return ty;
+}
+
+static tag_sizes parseTagTriple(const char **token) {
+ tag_sizes ts;
+
+ (*token) += strspn((*token), " \t");
+ ts.num_ints = atoi((*token));
+ (*token) += strcspn((*token), "/ \t\r");
+ if ((*token)[0] != '/') {
+ return ts;
+ }
+
+ (*token)++; // Skip '/'
+
+ (*token) += strspn((*token), " \t");
+ ts.num_reals = atoi((*token));
+ (*token) += strcspn((*token), "/ \t\r");
+ if ((*token)[0] != '/') {
+ return ts;
+ }
+ (*token)++; // Skip '/'
+
+ ts.num_strings = parseInt(token);
+
+ return ts;
+}
+
+// Parse triples with index offsets: i, i/j/k, i//k, i/j
+static bool parseTriple(const char **token, int vsize, int vnsize, int vtsize,
+ vertex_index *ret) {
+ if (!ret) {
+ return false;
+ }
+
+ vertex_index vi(-1);
+
+ if (!fixIndex(atoi((*token)), vsize, &(vi.v_idx))) {
+ return false;
+ }
+
+ (*token) += strcspn((*token), "/ \t\r");
+ if ((*token)[0] != '/') {
+ (*ret) = vi;
+ return true;
+ }
+ (*token)++;
+
+ // i//k
+ if ((*token)[0] == '/') {
+ (*token)++;
+ if (!fixIndex(atoi((*token)), vnsize, &(vi.vn_idx))) {
+ return false;
+ }
+ (*token) += strcspn((*token), "/ \t\r");
+ (*ret) = vi;
+ return true;
+ }
+
+ // i/j/k or i/j
+ if (!fixIndex(atoi((*token)), vtsize, &(vi.vt_idx))) {
+ return false;
+ }
+
+ (*token) += strcspn((*token), "/ \t\r");
+ if ((*token)[0] != '/') {
+ (*ret) = vi;
+ return true;
+ }
+
+ // i/j/k
+ (*token)++; // skip '/'
+ if (!fixIndex(atoi((*token)), vnsize, &(vi.vn_idx))) {
+ return false;
+ }
+ (*token) += strcspn((*token), "/ \t\r");
+
+ (*ret) = vi;
+
+ return true;
+}
+
+// Parse raw triples: i, i/j/k, i//k, i/j
+static vertex_index parseRawTriple(const char **token) {
+ vertex_index vi(static_cast<int>(0)); // 0 is an invalid index in OBJ
+
+ vi.v_idx = atoi((*token));
+ (*token) += strcspn((*token), "/ \t\r");
+ if ((*token)[0] != '/') {
+ return vi;
+ }
+ (*token)++;
+
+ // i//k
+ if ((*token)[0] == '/') {
+ (*token)++;
+ vi.vn_idx = atoi((*token));
+ (*token) += strcspn((*token), "/ \t\r");
+ return vi;
+ }
+
+ // i/j/k or i/j
+ vi.vt_idx = atoi((*token));
+ (*token) += strcspn((*token), "/ \t\r");
+ if ((*token)[0] != '/') {
+ return vi;
+ }
+
+ // i/j/k
+ (*token)++; // skip '/'
+ vi.vn_idx = atoi((*token));
+ (*token) += strcspn((*token), "/ \t\r");
+ return vi;
+}
+
+static bool ParseTextureNameAndOption(std::string *texname,
+ texture_option_t *texopt,
+ const char *linebuf, const bool is_bump) {
+ // @todo { write more robust lexer and parser. }
+ bool found_texname = false;
+ std::string texture_name;
+
+ // Fill with default value for texopt.
+ if (is_bump) {
+ texopt->imfchan = 'l';
+ } else {
+ texopt->imfchan = 'm';
+ }
+ texopt->bump_multiplier = 1.0f;
+ texopt->clamp = false;
+ texopt->blendu = true;
+ texopt->blendv = true;
+ texopt->sharpness = 1.0f;
+ texopt->brightness = 0.0f;
+ texopt->contrast = 1.0f;
+ texopt->origin_offset[0] = 0.0f;
+ texopt->origin_offset[1] = 0.0f;
+ texopt->origin_offset[2] = 0.0f;
+ texopt->scale[0] = 1.0f;
+ texopt->scale[1] = 1.0f;
+ texopt->scale[2] = 1.0f;
+ texopt->turbulence[0] = 0.0f;
+ texopt->turbulence[1] = 0.0f;
+ texopt->turbulence[2] = 0.0f;
+ texopt->type = TEXTURE_TYPE_NONE;
+
+ const char *token = linebuf; // Assume line ends with NULL
+
+ while (!IS_NEW_LINE((*token))) {
+ token += strspn(token, " \t"); // skip space
+ if ((0 == strncmp(token, "-blendu", 7)) && IS_SPACE((token[7]))) {
+ token += 8;
+ texopt->blendu = parseOnOff(&token, /* default */ true);
+ } else if ((0 == strncmp(token, "-blendv", 7)) && IS_SPACE((token[7]))) {
+ token += 8;
+ texopt->blendv = parseOnOff(&token, /* default */ true);
+ } else if ((0 == strncmp(token, "-clamp", 6)) && IS_SPACE((token[6]))) {
+ token += 7;
+ texopt->clamp = parseOnOff(&token, /* default */ true);
+ } else if ((0 == strncmp(token, "-boost", 6)) && IS_SPACE((token[6]))) {
+ token += 7;
+ texopt->sharpness = parseReal(&token, 1.0);
+ } else if ((0 == strncmp(token, "-bm", 3)) && IS_SPACE((token[3]))) {
+ token += 4;
+ texopt->bump_multiplier = parseReal(&token, 1.0);
+ } else if ((0 == strncmp(token, "-o", 2)) && IS_SPACE((token[2]))) {
+ token += 3;
+ parseReal3(&(texopt->origin_offset[0]), &(texopt->origin_offset[1]),
+ &(texopt->origin_offset[2]), &token);
+ } else if ((0 == strncmp(token, "-s", 2)) && IS_SPACE((token[2]))) {
+ token += 3;
+ parseReal3(&(texopt->scale[0]), &(texopt->scale[1]), &(texopt->scale[2]),
+ &token, 1.0, 1.0, 1.0);
+ } else if ((0 == strncmp(token, "-t", 2)) && IS_SPACE((token[2]))) {
+ token += 3;
+ parseReal3(&(texopt->turbulence[0]), &(texopt->turbulence[1]),
+ &(texopt->turbulence[2]), &token);
+ } else if ((0 == strncmp(token, "-type", 5)) && IS_SPACE((token[5]))) {
+ token += 5;
+ texopt->type = parseTextureType((&token), TEXTURE_TYPE_NONE);
+ } else if ((0 == strncmp(token, "-imfchan", 8)) && IS_SPACE((token[8]))) {
+ token += 9;
+ token += strspn(token, " \t");
+ const char *end = token + strcspn(token, " \t\r");
+ if ((end - token) == 1) { // Assume one char for -imfchan
+ texopt->imfchan = (*token);
+ }
+ token = end;
+ } else if ((0 == strncmp(token, "-mm", 3)) && IS_SPACE((token[3]))) {
+ token += 4;
+ parseReal2(&(texopt->brightness), &(texopt->contrast), &token, 0.0, 1.0);
+ } else {
+ // Assume texture filename
+#if 0
+ size_t len = strcspn(token, " \t\r"); // untile next space
+ texture_name = std::string(token, token + len);
+ token += len;
+
+ token += strspn(token, " \t"); // skip space
+#else
+ // Read filename until line end to parse filename containing whitespace
+ // TODO(syoyo): Support parsing texture option flag after the filename.
+ texture_name = std::string(token);
+ token += texture_name.length();
+#endif
+
+ found_texname = true;
+ }
+ }
+
+ if (found_texname) {
+ (*texname) = texture_name;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+static void InitMaterial(material_t *material) {
+ material->name = "";
+ material->ambient_texname = "";
+ material->diffuse_texname = "";
+ material->specular_texname = "";
+ material->specular_highlight_texname = "";
+ material->bump_texname = "";
+ material->displacement_texname = "";
+ material->reflection_texname = "";
+ material->alpha_texname = "";
+ for (int i = 0; i < 3; i++) {
+ material->ambient[i] = 0.f;
+ material->diffuse[i] = 0.f;
+ material->specular[i] = 0.f;
+ material->transmittance[i] = 0.f;
+ material->emission[i] = 0.f;
+ }
+ material->illum = 0;
+ material->dissolve = 1.f;
+ material->shininess = 1.f;
+ material->ior = 1.f;
+
+ material->roughness = 0.f;
+ material->metallic = 0.f;
+ material->sheen = 0.f;
+ material->clearcoat_thickness = 0.f;
+ material->clearcoat_roughness = 0.f;
+ material->anisotropy_rotation = 0.f;
+ material->anisotropy = 0.f;
+ material->roughness_texname = "";
+ material->metallic_texname = "";
+ material->sheen_texname = "";
+ material->emissive_texname = "";
+ material->normal_texname = "";
+
+ material->unknown_parameter.clear();
+}
+
+// code from https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html
+static int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
+{
+ int i, j, c = 0;
+ for (i = 0, j = nvert-1; i < nvert; j = i++) {
+ if ( ((verty[i]>testy) != (verty[j]>testy)) &&
+ (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
+ c = !c;
+ }
+ return c;
+}
+
+static bool exportFaceGroupToShape(
+ shape_t *shape, const std::vector<std::vector<vertex_index> > &faceGroup,
+ const std::vector<tag_t> &tags, const int material_id,
+ const std::string &name, bool triangulate, const std::vector<real_t> &v) {
+ if (faceGroup.empty()) {
+ return false;
+ }
+
+ // Flatten vertices and indices
+ for (size_t i = 0; i < faceGroup.size(); i++) {
+ const std::vector<vertex_index> &face = faceGroup[i];
+
+ vertex_index i0 = face[0];
+ vertex_index i1(-1);
+ vertex_index i2 = face[1];
+
+ size_t npolys = face.size();
+
+ if (triangulate) {
+ // find the two axes to work in
+ size_t axes[2] = { 1, 2 };
+ for(size_t k = 0; k < npolys; ++k) {
+ i0 = face[(k+0)%npolys];
+ i1 = face[(k+1)%npolys];
+ i2 = face[(k+2)%npolys];
+ size_t vi0 = size_t(i0.v_idx);
+ size_t vi1 = size_t(i1.v_idx);
+ size_t vi2 = size_t(i2.v_idx);
+ real_t v0x = v[vi0*3+0];
+ real_t v0y = v[vi0*3+1];
+ real_t v0z = v[vi0*3+2];
+ real_t v1x = v[vi1*3+0];
+ real_t v1y = v[vi1*3+1];
+ real_t v1z = v[vi1*3+2];
+ real_t v2x = v[vi2*3+0];
+ real_t v2y = v[vi2*3+1];
+ real_t v2z = v[vi2*3+2];
+ real_t e0x = v1x - v0x;
+ real_t e0y = v1y - v0y;
+ real_t e0z = v1z - v0z;
+ real_t e1x = v2x - v1x;
+ real_t e1y = v2y - v1y;
+ real_t e1z = v2z - v1z;
+ float cx = fabs(e0y*e1z - e0z*e1y);
+ float cy = fabs(e0z*e1x - e0x*e1z);
+ float cz = fabs(e0x*e1y - e0y*e1x);
+ const float epsilon = 0.0001f;
+ if( cx > epsilon || cy > epsilon || cz > epsilon ) {
+ // found a corner
+ if( cx > cy && cx > cz ) {
+ } else {
+ axes[0] = 0;
+ if( cz > cx && cz > cy )
+ axes[1] = 1;
+ }
+ break;
+ }
+ }
+
+ real_t area = 0;
+ for(size_t k = 0; k < npolys; ++k) {
+ i0 = face[(k+0)%npolys];
+ i1 = face[(k+1)%npolys];
+ size_t vi0 = size_t(i0.v_idx);
+ size_t vi1 = size_t(i1.v_idx);
+ real_t v0x = v[vi0*3+axes[0]];
+ real_t v0y = v[vi0*3+axes[1]];
+ real_t v1x = v[vi1*3+axes[0]];
+ real_t v1y = v[vi1*3+axes[1]];
+ area += (v0x*v1y - v0y*v1x)*0.5f;
+ }
+
+ int maxRounds = 10; // arbitrary max loop count to protect against unexpected errors
+
+ std::vector<vertex_index> remainingFace = face;
+ size_t guess_vert = 0;
+ vertex_index ind[3];
+ real_t vx[3];
+ real_t vy[3];
+ while( remainingFace.size() > 3 && maxRounds > 0 ) {
+ npolys = remainingFace.size();
+ if( guess_vert >= npolys ) {
+ maxRounds -= 1;
+ guess_vert -= npolys;
+ }
+ for( size_t k = 0; k < 3; k++ ) {
+ ind[k] = remainingFace[(guess_vert+k)%npolys];
+ size_t vi = size_t(ind[k].v_idx);
+ vx[k] = v[vi*3+axes[0]];
+ vy[k] = v[vi*3+axes[1]];
+ }
+ real_t e0x = vx[1] - vx[0];
+ real_t e0y = vy[1] - vy[0];
+ real_t e1x = vx[2] - vx[1];
+ real_t e1y = vy[2] - vy[1];
+ real_t cross = e0x*e1y - e0y*e1x;
+ // if an internal angle
+ if( cross * area < 0.0f ) { guess_vert += 1; continue; }
+
+ // check all other verts in case they are inside this triangle
+ bool overlap = false;
+ for( size_t otherVert = 3; otherVert < npolys; ++otherVert ) {
+ size_t ovi = size_t(remainingFace[(guess_vert+otherVert)%npolys].v_idx);
+ real_t tx = v[ovi*3+axes[0]];
+ real_t ty = v[ovi*3+axes[1]];
+ if( pnpoly( 3, vx, vy, tx, ty ) ) {
+ overlap = true;
+ break;
+ }
+ }
+
+ if( overlap ) { guess_vert += 1; continue; }
+
+ // this triangle is an ear
+ {
+ index_t idx0, idx1, idx2;
+ idx0.vertex_index = ind[0].v_idx;
+ idx0.normal_index = ind[0].vn_idx;
+ idx0.texcoord_index = ind[0].vt_idx;
+ idx1.vertex_index = ind[1].v_idx;
+ idx1.normal_index = ind[1].vn_idx;
+ idx1.texcoord_index = ind[1].vt_idx;
+ idx2.vertex_index = ind[2].v_idx;
+ idx2.normal_index = ind[2].vn_idx;
+ idx2.texcoord_index = ind[2].vt_idx;
+
+ shape->mesh.indices.push_back(idx0);
+ shape->mesh.indices.push_back(idx1);
+ shape->mesh.indices.push_back(idx2);
+
+ shape->mesh.num_face_vertices.push_back(3);
+ shape->mesh.material_ids.push_back(material_id);
+ }
+
+ // remove v1 from the list
+ size_t removed_vert_index = (guess_vert+1)%npolys;
+ while( removed_vert_index + 1 < npolys ) {
+ remainingFace[removed_vert_index] = remainingFace[removed_vert_index+1];
+ removed_vert_index += 1;
+ }
+ remainingFace.pop_back();
+ }
+
+ if( remainingFace.size() == 3 ) {
+ i0 = remainingFace[0];
+ i1 = remainingFace[1];
+ i2 = remainingFace[2];
+ {
+ index_t idx0, idx1, idx2;
+ idx0.vertex_index = i0.v_idx;
+ idx0.normal_index = i0.vn_idx;
+ idx0.texcoord_index = i0.vt_idx;
+ idx1.vertex_index = i1.v_idx;
+ idx1.normal_index = i1.vn_idx;
+ idx1.texcoord_index = i1.vt_idx;
+ idx2.vertex_index = i2.v_idx;
+ idx2.normal_index = i2.vn_idx;
+ idx2.texcoord_index = i2.vt_idx;
+
+ shape->mesh.indices.push_back(idx0);
+ shape->mesh.indices.push_back(idx1);
+ shape->mesh.indices.push_back(idx2);
+
+ shape->mesh.num_face_vertices.push_back(3);
+ shape->mesh.material_ids.push_back(material_id);
+ }
+ }
+ } else {
+ for (size_t k = 0; k < npolys; k++) {
+ index_t idx;
+ idx.vertex_index = face[k].v_idx;
+ idx.normal_index = face[k].vn_idx;
+ idx.texcoord_index = face[k].vt_idx;
+ shape->mesh.indices.push_back(idx);
+ }
+
+ shape->mesh.num_face_vertices.push_back(
+ static_cast<unsigned char>(npolys));
+ shape->mesh.material_ids.push_back(material_id); // per face
+ }
+ }
+
+ shape->name = name;
+ shape->mesh.tags = tags;
+
+ return true;
+}
+
+// Split a string with specified delimiter character.
+// http://stackoverflow.com/questions/236129/split-a-string-in-c
+static void SplitString(const std::string &s, char delim,
+ std::vector<std::string> &elems) {
+ std::stringstream ss;
+ ss.str(s);
+ std::string item;
+ while (std::getline(ss, item, delim)) {
+ elems.push_back(item);
+ }
+}
+
+void LoadMtl(std::map<std::string, int> *material_map,
+ std::vector<material_t> *materials, std::istream *inStream,
+ std::string *warning) {
+ // Create a default material anyway.
+ material_t material;
+ InitMaterial(&material);
+
+ // Issue 43. `d` wins against `Tr` since `Tr` is not in the MTL specification.
+ bool has_d = false;
+ bool has_tr = false;
+
+ std::stringstream ss;
+
+ std::string linebuf;
+ while (inStream->peek() != -1) {
+ safeGetline(*inStream, linebuf);
+
+ // Trim trailing whitespace.
+ if (linebuf.size() > 0) {
+ linebuf = linebuf.substr(0, linebuf.find_last_not_of(" \t") + 1);
+ }
+
+ // Trim newline '\r\n' or '\n'
+ if (linebuf.size() > 0) {
+ if (linebuf[linebuf.size() - 1] == '\n')
+ linebuf.erase(linebuf.size() - 1);
+ }
+ if (linebuf.size() > 0) {
+ if (linebuf[linebuf.size() - 1] == '\r')
+ linebuf.erase(linebuf.size() - 1);
+ }
+
+ // Skip if empty line.
+ if (linebuf.empty()) {
+ continue;
+ }
+
+ // Skip leading space.
+ const char *token = linebuf.c_str();
+ token += strspn(token, " \t");
+
+ assert(token);
+ if (token[0] == '\0') continue; // empty line
+
+ if (token[0] == '#') continue; // comment line
+
+ // new mtl
+ if ((0 == strncmp(token, "newmtl", 6)) && IS_SPACE((token[6]))) {
+ // flush previous material.
+ if (!material.name.empty()) {
+ material_map->insert(std::pair<std::string, int>(
+ material.name, static_cast<int>(materials->size())));
+ materials->push_back(material);
+ }
+
+ // initial temporary material
+ InitMaterial(&material);
+
+ has_d = false;
+ has_tr = false;
+
+ // set new mtl name
+ token += 7;
+ {
+ std::stringstream sstr;
+ sstr << token;
+ material.name = sstr.str();
+ }
+ continue;
+ }
+
+ // ambient
+ if (token[0] == 'K' && token[1] == 'a' && IS_SPACE((token[2]))) {
+ token += 2;
+ real_t r, g, b;
+ parseReal3(&r, &g, &b, &token);
+ material.ambient[0] = r;
+ material.ambient[1] = g;
+ material.ambient[2] = b;
+ continue;
+ }
+
+ // diffuse
+ if (token[0] == 'K' && token[1] == 'd' && IS_SPACE((token[2]))) {
+ token += 2;
+ real_t r, g, b;
+ parseReal3(&r, &g, &b, &token);
+ material.diffuse[0] = r;
+ material.diffuse[1] = g;
+ material.diffuse[2] = b;
+ continue;
+ }
+
+ // specular
+ if (token[0] == 'K' && token[1] == 's' && IS_SPACE((token[2]))) {
+ token += 2;
+ real_t r, g, b;
+ parseReal3(&r, &g, &b, &token);
+ material.specular[0] = r;
+ material.specular[1] = g;
+ material.specular[2] = b;
+ continue;
+ }
+
+ // transmittance
+ if ((token[0] == 'K' && token[1] == 't' && IS_SPACE((token[2]))) ||
+ (token[0] == 'T' && token[1] == 'f' && IS_SPACE((token[2])))) {
+ token += 2;
+ real_t r, g, b;
+ parseReal3(&r, &g, &b, &token);
+ material.transmittance[0] = r;
+ material.transmittance[1] = g;
+ material.transmittance[2] = b;
+ continue;
+ }
+
+ // ior(index of refraction)
+ if (token[0] == 'N' && token[1] == 'i' && IS_SPACE((token[2]))) {
+ token += 2;
+ material.ior = parseReal(&token);
+ continue;
+ }
+
+ // emission
+ if (token[0] == 'K' && token[1] == 'e' && IS_SPACE(token[2])) {
+ token += 2;
+ real_t r, g, b;
+ parseReal3(&r, &g, &b, &token);
+ material.emission[0] = r;
+ material.emission[1] = g;
+ material.emission[2] = b;
+ continue;
+ }
+
+ // shininess
+ if (token[0] == 'N' && token[1] == 's' && IS_SPACE(token[2])) {
+ token += 2;
+ material.shininess = parseReal(&token);
+ continue;
+ }
+
+ // illum model
+ if (0 == strncmp(token, "illum", 5) && IS_SPACE(token[5])) {
+ token += 6;
+ material.illum = parseInt(&token);
+ continue;
+ }
+
+ // dissolve
+ if ((token[0] == 'd' && IS_SPACE(token[1]))) {
+ token += 1;
+ material.dissolve = parseReal(&token);
+
+ if (has_tr) {
+ ss << "WARN: Both `d` and `Tr` parameters defined for \""
+ << material.name << "\". Use the value of `d` for dissolve."
+ << std::endl;
+ }
+ has_d = true;
+ continue;
+ }
+ if (token[0] == 'T' && token[1] == 'r' && IS_SPACE(token[2])) {
+ token += 2;
+ if (has_d) {
+ // `d` wins. Ignore `Tr` value.
+ ss << "WARN: Both `d` and `Tr` parameters defined for \""
+ << material.name << "\". Use the value of `d` for dissolve."
+ << std::endl;
+ } else {
+ // We invert value of Tr(assume Tr is in range [0, 1])
+ // NOTE: Interpretation of Tr is application(exporter) dependent. For
+ // some application(e.g. 3ds max obj exporter), Tr = d(Issue 43)
+ material.dissolve = 1.0f - parseReal(&token);
+ }
+ has_tr = true;
+ continue;
+ }
+
+ // PBR: roughness
+ if (token[0] == 'P' && token[1] == 'r' && IS_SPACE(token[2])) {
+ token += 2;
+ material.roughness = parseReal(&token);
+ continue;
+ }
+
+ // PBR: metallic
+ if (token[0] == 'P' && token[1] == 'm' && IS_SPACE(token[2])) {
+ token += 2;
+ material.metallic = parseReal(&token);
+ continue;
+ }
+
+ // PBR: sheen
+ if (token[0] == 'P' && token[1] == 's' && IS_SPACE(token[2])) {
+ token += 2;
+ material.sheen = parseReal(&token);
+ continue;
+ }
+
+ // PBR: clearcoat thickness
+ if (token[0] == 'P' && token[1] == 'c' && IS_SPACE(token[2])) {
+ token += 2;
+ material.clearcoat_thickness = parseReal(&token);
+ continue;
+ }
+
+ // PBR: clearcoat roughness
+ if ((0 == strncmp(token, "Pcr", 3)) && IS_SPACE(token[3])) {
+ token += 4;
+ material.clearcoat_roughness = parseReal(&token);
+ continue;
+ }
+
+ // PBR: anisotropy
+ if ((0 == strncmp(token, "aniso", 5)) && IS_SPACE(token[5])) {
+ token += 6;
+ material.anisotropy = parseReal(&token);
+ continue;
+ }
+
+ // PBR: anisotropy rotation
+ if ((0 == strncmp(token, "anisor", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ material.anisotropy_rotation = parseReal(&token);
+ continue;
+ }
+
+ // ambient texture
+ if ((0 == strncmp(token, "map_Ka", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ ParseTextureNameAndOption(&(material.ambient_texname),
+ &(material.ambient_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // diffuse texture
+ if ((0 == strncmp(token, "map_Kd", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ ParseTextureNameAndOption(&(material.diffuse_texname),
+ &(material.diffuse_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // specular texture
+ if ((0 == strncmp(token, "map_Ks", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ ParseTextureNameAndOption(&(material.specular_texname),
+ &(material.specular_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // specular highlight texture
+ if ((0 == strncmp(token, "map_Ns", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ ParseTextureNameAndOption(&(material.specular_highlight_texname),
+ &(material.specular_highlight_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // bump texture
+ if ((0 == strncmp(token, "map_bump", 8)) && IS_SPACE(token[8])) {
+ token += 9;
+ ParseTextureNameAndOption(&(material.bump_texname),
+ &(material.bump_texopt), token,
+ /* is_bump */ true);
+ continue;
+ }
+
+ // bump texture
+ if ((0 == strncmp(token, "map_Bump", 8)) && IS_SPACE(token[8])) {
+ token += 9;
+ ParseTextureNameAndOption(&(material.bump_texname),
+ &(material.bump_texopt), token,
+ /* is_bump */ true);
+ continue;
+ }
+
+ // bump texture
+ if ((0 == strncmp(token, "bump", 4)) && IS_SPACE(token[4])) {
+ token += 5;
+ ParseTextureNameAndOption(&(material.bump_texname),
+ &(material.bump_texopt), token,
+ /* is_bump */ true);
+ continue;
+ }
+
+ // alpha texture
+ if ((0 == strncmp(token, "map_d", 5)) && IS_SPACE(token[5])) {
+ token += 6;
+ material.alpha_texname = token;
+ ParseTextureNameAndOption(&(material.alpha_texname),
+ &(material.alpha_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // displacement texture
+ if ((0 == strncmp(token, "disp", 4)) && IS_SPACE(token[4])) {
+ token += 5;
+ ParseTextureNameAndOption(&(material.displacement_texname),
+ &(material.displacement_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // reflection map
+ if ((0 == strncmp(token, "refl", 4)) && IS_SPACE(token[4])) {
+ token += 5;
+ ParseTextureNameAndOption(&(material.reflection_texname),
+ &(material.reflection_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // PBR: roughness texture
+ if ((0 == strncmp(token, "map_Pr", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ ParseTextureNameAndOption(&(material.roughness_texname),
+ &(material.roughness_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // PBR: metallic texture
+ if ((0 == strncmp(token, "map_Pm", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ ParseTextureNameAndOption(&(material.metallic_texname),
+ &(material.metallic_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // PBR: sheen texture
+ if ((0 == strncmp(token, "map_Ps", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ ParseTextureNameAndOption(&(material.sheen_texname),
+ &(material.sheen_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // PBR: emissive texture
+ if ((0 == strncmp(token, "map_Ke", 6)) && IS_SPACE(token[6])) {
+ token += 7;
+ ParseTextureNameAndOption(&(material.emissive_texname),
+ &(material.emissive_texopt), token,
+ /* is_bump */ false);
+ continue;
+ }
+
+ // PBR: normal map texture
+ if ((0 == strncmp(token, "norm", 4)) && IS_SPACE(token[4])) {
+ token += 5;
+ ParseTextureNameAndOption(
+ &(material.normal_texname), &(material.normal_texopt), token,
+ /* is_bump */ false); // @fixme { is_bump will be true? }
+ continue;
+ }
+
+ // unknown parameter
+ const char *_space = strchr(token, ' ');
+ if (!_space) {
+ _space = strchr(token, '\t');
+ }
+ if (_space) {
+ std::ptrdiff_t len = _space - token;
+ std::string key(token, static_cast<size_t>(len));
+ std::string value = _space + 1;
+ material.unknown_parameter.insert(
+ std::pair<std::string, std::string>(key, value));
+ }
+ }
+ // flush last material.
+ material_map->insert(std::pair<std::string, int>(
+ material.name, static_cast<int>(materials->size())));
+ materials->push_back(material);
+
+ if (warning) {
+ (*warning) = ss.str();
+ }
+}
+
+bool MaterialFileReader::operator()(const std::string &matId,
+ std::vector<material_t> *materials,
+ std::map<std::string, int> *matMap,
+ std::string *err) {
+ std::string filepath;
+
+ if (!m_mtlBaseDir.empty()) {
+ filepath = std::string(m_mtlBaseDir) + matId;
+ } else {
+ filepath = matId;
+ }
+
+ std::ifstream matIStream(filepath.c_str());
+ if (!matIStream) {
+ std::stringstream ss;
+ ss << "WARN: Material file [ " << filepath << " ] not found." << std::endl;
+ if (err) {
+ (*err) += ss.str();
+ }
+ return false;
+ }
+
+ std::string warning;
+ LoadMtl(matMap, materials, &matIStream, &warning);
+
+ if (!warning.empty()) {
+ if (err) {
+ (*err) += warning;
+ }
+ }
+
+ return true;
+}
+
+bool MaterialStreamReader::operator()(const std::string &matId,
+ std::vector<material_t> *materials,
+ std::map<std::string, int> *matMap,
+ std::string *err) {
+ (void)matId;
+ if (!m_inStream) {
+ std::stringstream ss;
+ ss << "WARN: Material stream in error state. " << std::endl;
+ if (err) {
+ (*err) += ss.str();
+ }
+ return false;
+ }
+
+ std::string warning;
+ LoadMtl(matMap, materials, &m_inStream, &warning);
+
+ if (!warning.empty()) {
+ if (err) {
+ (*err) += warning;
+ }
+ }
+
+ return true;
+}
+
+bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
+ std::vector<material_t> *materials, std::string *err,
+ const char *filename, const char *mtl_basedir, bool trianglulate) {
+ attrib->vertices.clear();
+ attrib->normals.clear();
+ attrib->texcoords.clear();
+ attrib->colors.clear();
+ shapes->clear();
+
+ std::stringstream errss;
+
+ std::ifstream ifs(filename);
+ if (!ifs) {
+ errss << "Cannot open file [" << filename << "]" << std::endl;
+ if (err) {
+ (*err) = errss.str();
+ }
+ return false;
+ }
+
+ std::string baseDir;
+ if (mtl_basedir) {
+ baseDir = mtl_basedir;
+ }
+ MaterialFileReader matFileReader(baseDir);
+
+ return LoadObj(attrib, shapes, materials, err, &ifs, &matFileReader,
+ trianglulate);
+}
+
+bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
+ std::vector<material_t> *materials, std::string *err,
+ std::istream *inStream, MaterialReader *readMatFn /*= NULL*/,
+ bool triangulate) {
+ std::stringstream errss;
+
+ std::vector<real_t> v;
+ std::vector<real_t> vn;
+ std::vector<real_t> vt;
+ std::vector<real_t> vc;
+ std::vector<tag_t> tags;
+ std::vector<std::vector<vertex_index> > faceGroup;
+ std::string name;
+
+ // material
+ std::map<std::string, int> material_map;
+ int material = -1;
+
+ shape_t shape;
+
+ std::string linebuf;
+ while (inStream->peek() != -1) {
+ safeGetline(*inStream, linebuf);
+
+ // Trim newline '\r\n' or '\n'
+ if (linebuf.size() > 0) {
+ if (linebuf[linebuf.size() - 1] == '\n')
+ linebuf.erase(linebuf.size() - 1);
+ }
+ if (linebuf.size() > 0) {
+ if (linebuf[linebuf.size() - 1] == '\r')
+ linebuf.erase(linebuf.size() - 1);
+ }
+
+ // Skip if empty line.
+ if (linebuf.empty()) {
+ continue;
+ }
+
+ // Skip leading space.
+ const char *token = linebuf.c_str();
+ token += strspn(token, " \t");
+
+ assert(token);
+ if (token[0] == '\0') continue; // empty line
+
+ if (token[0] == '#') continue; // comment line
+
+ // vertex
+ if (token[0] == 'v' && IS_SPACE((token[1]))) {
+ token += 2;
+ real_t x, y, z;
+ real_t r, g, b;
+ parseVertexWithColor(&x, &y, &z, &r, &g, &b, &token);
+ v.push_back(x);
+ v.push_back(y);
+ v.push_back(z);
+
+ vc.push_back(r);
+ vc.push_back(g);
+ vc.push_back(b);
+ continue;
+ }
+
+ // normal
+ if (token[0] == 'v' && token[1] == 'n' && IS_SPACE((token[2]))) {
+ token += 3;
+ real_t x, y, z;
+ parseReal3(&x, &y, &z, &token);
+ vn.push_back(x);
+ vn.push_back(y);
+ vn.push_back(z);
+ continue;
+ }
+
+ // texcoord
+ if (token[0] == 'v' && token[1] == 't' && IS_SPACE((token[2]))) {
+ token += 3;
+ real_t x, y;
+ parseReal2(&x, &y, &token);
+ vt.push_back(x);
+ vt.push_back(y);
+ continue;
+ }
+
+ // face
+ if (token[0] == 'f' && IS_SPACE((token[1]))) {
+ token += 2;
+ token += strspn(token, " \t");
+
+ std::vector<vertex_index> face;
+ face.reserve(3);
+
+ while (!IS_NEW_LINE(token[0])) {
+ vertex_index vi;
+ if (!parseTriple(&token, static_cast<int>(v.size() / 3),
+ static_cast<int>(vn.size() / 3),
+ static_cast<int>(vt.size() / 2), &vi)) {
+ if (err) {
+ (*err) = "Failed parse `f' line(e.g. zero value for face index).\n";
+ }
+ return false;
+ }
+
+ face.push_back(vi);
+ size_t n = strspn(token, " \t\r");
+ token += n;
+ }
+
+ // replace with emplace_back + std::move on C++11
+ faceGroup.push_back(std::vector<vertex_index>());
+ faceGroup[faceGroup.size() - 1].swap(face);
+
+ continue;
+ }
+
+ // use mtl
+ if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) {
+ token += 7;
+ std::stringstream ss;
+ ss << token;
+ std::string namebuf = ss.str();
+
+ int newMaterialId = -1;
+ if (material_map.find(namebuf) != material_map.end()) {
+ newMaterialId = material_map[namebuf];
+ } else {
+ // { error!! material not found }
+ }
+
+ if (newMaterialId != material) {
+ // Create per-face material. Thus we don't add `shape` to `shapes` at
+ // this time.
+ // just clear `faceGroup` after `exportFaceGroupToShape()` call.
+ exportFaceGroupToShape(&shape, faceGroup, tags, material, name,
+ triangulate, v);
+ faceGroup.clear();
+ material = newMaterialId;
+ }
+
+ continue;
+ }
+
+ // load mtl
+ if ((0 == strncmp(token, "mtllib", 6)) && IS_SPACE((token[6]))) {
+ if (readMatFn) {
+ token += 7;
+
+ std::vector<std::string> filenames;
+ SplitString(std::string(token), ' ', filenames);
+
+ if (filenames.empty()) {
+ if (err) {
+ (*err) +=
+ "WARN: Looks like empty filename for mtllib. Use default "
+ "material. \n";
+ }
+ } else {
+ bool found = false;
+ for (size_t s = 0; s < filenames.size(); s++) {
+ std::string err_mtl;
+ bool ok = (*readMatFn)(filenames[s].c_str(), materials,
+ &material_map, &err_mtl);
+ if (err && (!err_mtl.empty())) {
+ (*err) += err_mtl; // This should be warn message.
+ }
+
+ if (ok) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ if (err) {
+ (*err) +=
+ "WARN: Failed to load material file(s). Use default "
+ "material.\n";
+ }
+ }
+ }
+ }
+
+ continue;
+ }
+
+ // group name
+ if (token[0] == 'g' && IS_SPACE((token[1]))) {
+ // flush previous face group.
+ bool ret = exportFaceGroupToShape(&shape, faceGroup, tags, material, name,
+ triangulate, v);
+ (void)ret; // return value not used.
+
+ if (shape.mesh.indices.size() > 0) {
+ shapes->push_back(shape);
+ }
+
+ shape = shape_t();
+
+ // material = -1;
+ faceGroup.clear();
+
+ std::vector<std::string> names;
+ names.reserve(2);
+
+ while (!IS_NEW_LINE(token[0])) {
+ std::string str = parseString(&token);
+ names.push_back(str);
+ token += strspn(token, " \t\r"); // skip tag
+ }
+
+ assert(names.size() > 0);
+
+ // names[0] must be 'g', so skip the 0th element.
+ if (names.size() > 1) {
+ name = names[1];
+ } else {
+ name = "";
+ }
+
+ continue;
+ }
+
+ // object name
+ if (token[0] == 'o' && IS_SPACE((token[1]))) {
+ // flush previous face group.
+ bool ret = exportFaceGroupToShape(&shape, faceGroup, tags, material, name,
+ triangulate, v);
+ if (ret) {
+ shapes->push_back(shape);
+ }
+
+ // material = -1;
+ faceGroup.clear();
+ shape = shape_t();
+
+ // @todo { multiple object name? }
+ token += 2;
+ std::stringstream ss;
+ ss << token;
+ name = ss.str();
+
+ continue;
+ }
+
+ if (token[0] == 't' && IS_SPACE(token[1])) {
+ tag_t tag;
+
+ token += 2;
+
+ tag.name = parseString(&token);
+
+ tag_sizes ts = parseTagTriple(&token);
+
+ tag.intValues.resize(static_cast<size_t>(ts.num_ints));
+
+ for (size_t i = 0; i < static_cast<size_t>(ts.num_ints); ++i) {
+ tag.intValues[i] = parseInt(&token);
+ }
+
+ tag.floatValues.resize(static_cast<size_t>(ts.num_reals));
+ for (size_t i = 0; i < static_cast<size_t>(ts.num_reals); ++i) {
+ tag.floatValues[i] = parseReal(&token);
+ }
+
+ tag.stringValues.resize(static_cast<size_t>(ts.num_strings));
+ for (size_t i = 0; i < static_cast<size_t>(ts.num_strings); ++i) {
+ tag.stringValues[i] = parseString(&token);
+ }
+
+ tags.push_back(tag);
+ }
+
+ // Ignore unknown command.
+ }
+
+ bool ret = exportFaceGroupToShape(&shape, faceGroup, tags, material, name,
+ triangulate, v);
+ // exportFaceGroupToShape return false when `usemtl` is called in the last
+ // line.
+ // we also add `shape` to `shapes` when `shape.mesh` has already some
+ // faces(indices)
+ if (ret || shape.mesh.indices.size()) {
+ shapes->push_back(shape);
+ }
+ faceGroup.clear(); // for safety
+
+ if (err) {
+ (*err) += errss.str();
+ }
+
+ attrib->vertices.swap(v);
+ attrib->normals.swap(vn);
+ attrib->texcoords.swap(vt);
+ attrib->colors.swap(vc);
+
+ return true;
+}
+
+bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback,
+ void *user_data /*= NULL*/,
+ MaterialReader *readMatFn /*= NULL*/,
+ std::string *err /*= NULL*/) {
+ std::stringstream errss;
+
+ // material
+ std::map<std::string, int> material_map;
+ int material_id = -1; // -1 = invalid
+
+ std::vector<index_t> indices;
+ std::vector<material_t> materials;
+ std::vector<std::string> names;
+ names.reserve(2);
+ std::string name;
+ std::vector<const char *> names_out;
+
+ std::string linebuf;
+ while (inStream.peek() != -1) {
+ safeGetline(inStream, linebuf);
+
+ // Trim newline '\r\n' or '\n'
+ if (linebuf.size() > 0) {
+ if (linebuf[linebuf.size() - 1] == '\n')
+ linebuf.erase(linebuf.size() - 1);
+ }
+ if (linebuf.size() > 0) {
+ if (linebuf[linebuf.size() - 1] == '\r')
+ linebuf.erase(linebuf.size() - 1);
+ }
+
+ // Skip if empty line.
+ if (linebuf.empty()) {
+ continue;
+ }
+
+ // Skip leading space.
+ const char *token = linebuf.c_str();
+ token += strspn(token, " \t");
+
+ assert(token);
+ if (token[0] == '\0') continue; // empty line
+
+ if (token[0] == '#') continue; // comment line
+
+ // vertex
+ if (token[0] == 'v' && IS_SPACE((token[1]))) {
+ token += 2;
+ // TODO(syoyo): Support parsing vertex color extension.
+ real_t x, y, z, w; // w is optional. default = 1.0
+ parseV(&x, &y, &z, &w, &token);
+ if (callback.vertex_cb) {
+ callback.vertex_cb(user_data, x, y, z, w);
+ }
+ continue;
+ }
+
+ // normal
+ if (token[0] == 'v' && token[1] == 'n' && IS_SPACE((token[2]))) {
+ token += 3;
+ real_t x, y, z;
+ parseReal3(&x, &y, &z, &token);
+ if (callback.normal_cb) {
+ callback.normal_cb(user_data, x, y, z);
+ }
+ continue;
+ }
+
+ // texcoord
+ if (token[0] == 'v' && token[1] == 't' && IS_SPACE((token[2]))) {
+ token += 3;
+ real_t x, y, z; // y and z are optional. default = 0.0
+ parseReal3(&x, &y, &z, &token);
+ if (callback.texcoord_cb) {
+ callback.texcoord_cb(user_data, x, y, z);
+ }
+ continue;
+ }
+
+ // face
+ if (token[0] == 'f' && IS_SPACE((token[1]))) {
+ token += 2;
+ token += strspn(token, " \t");
+
+ indices.clear();
+ while (!IS_NEW_LINE(token[0])) {
+ vertex_index vi = parseRawTriple(&token);
+
+ index_t idx;
+ idx.vertex_index = vi.v_idx;
+ idx.normal_index = vi.vn_idx;
+ idx.texcoord_index = vi.vt_idx;
+
+ indices.push_back(idx);
+ size_t n = strspn(token, " \t\r");
+ token += n;
+ }
+
+ if (callback.index_cb && indices.size() > 0) {
+ callback.index_cb(user_data, &indices.at(0),
+ static_cast<int>(indices.size()));
+ }
+
+ continue;
+ }
+
+ // use mtl
+ if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) {
+ token += 7;
+ std::stringstream ss;
+ ss << token;
+ std::string namebuf = ss.str();
+
+ int newMaterialId = -1;
+ if (material_map.find(namebuf) != material_map.end()) {
+ newMaterialId = material_map[namebuf];
+ } else {
+ // { error!! material not found }
+ }
+
+ if (newMaterialId != material_id) {
+ material_id = newMaterialId;
+ }
+
+ if (callback.usemtl_cb) {
+ callback.usemtl_cb(user_data, namebuf.c_str(), material_id);
+ }
+
+ continue;
+ }
+
+ // load mtl
+ if ((0 == strncmp(token, "mtllib", 6)) && IS_SPACE((token[6]))) {
+ if (readMatFn) {
+ token += 7;
+
+ std::vector<std::string> filenames;
+ SplitString(std::string(token), ' ', filenames);
+
+ if (filenames.empty()) {
+ if (err) {
+ (*err) +=
+ "WARN: Looks like empty filename for mtllib. Use default "
+ "material. \n";
+ }
+ } else {
+ bool found = false;
+ for (size_t s = 0; s < filenames.size(); s++) {
+ std::string err_mtl;
+ bool ok = (*readMatFn)(filenames[s].c_str(), &materials,
+ &material_map, &err_mtl);
+ if (err && (!err_mtl.empty())) {
+ (*err) += err_mtl; // This should be warn message.
+ }
+
+ if (ok) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ if (err) {
+ (*err) +=
+ "WARN: Failed to load material file(s). Use default "
+ "material.\n";
+ }
+ } else {
+ if (callback.mtllib_cb) {
+ callback.mtllib_cb(user_data, &materials.at(0),
+ static_cast<int>(materials.size()));
+ }
+ }
+ }
+ }
+
+ continue;
+ }
+
+ // group name
+ if (token[0] == 'g' && IS_SPACE((token[1]))) {
+ names.clear();
+
+ while (!IS_NEW_LINE(token[0])) {
+ std::string str = parseString(&token);
+ names.push_back(str);
+ token += strspn(token, " \t\r"); // skip tag
+ }
+
+ assert(names.size() > 0);
+
+ // names[0] must be 'g', so skip the 0th element.
+ if (names.size() > 1) {
+ name = names[1];
+ } else {
+ name.clear();
+ }
+
+ if (callback.group_cb) {
+ if (names.size() > 1) {
+ // create const char* array.
+ names_out.resize(names.size() - 1);
+ for (size_t j = 0; j < names_out.size(); j++) {
+ names_out[j] = names[j + 1].c_str();
+ }
+ callback.group_cb(user_data, &names_out.at(0),
+ static_cast<int>(names_out.size()));
+
+ } else {
+ callback.group_cb(user_data, NULL, 0);
+ }
+ }
+
+ continue;
+ }
+
+ // object name
+ if (token[0] == 'o' && IS_SPACE((token[1]))) {
+ // @todo { multiple object name? }
+ token += 2;
+
+ std::stringstream ss;
+ ss << token;
+ std::string object_name = ss.str();
+
+ if (callback.object_cb) {
+ callback.object_cb(user_data, object_name.c_str());
+ }
+
+ continue;
+ }
+
+#if 0 // @todo
+ if (token[0] == 't' && IS_SPACE(token[1])) {
+ tag_t tag;
+
+ token += 2;
+ std::stringstream ss;
+ ss << token;
+ tag.name = ss.str();
+
+ token += tag.name.size() + 1;
+
+ tag_sizes ts = parseTagTriple(&token);
+
+ tag.intValues.resize(static_cast<size_t>(ts.num_ints));
+
+ for (size_t i = 0; i < static_cast<size_t>(ts.num_ints); ++i) {
+ tag.intValues[i] = atoi(token);
+ token += strcspn(token, "/ \t\r") + 1;
+ }
+
+ tag.floatValues.resize(static_cast<size_t>(ts.num_reals));
+ for (size_t i = 0; i < static_cast<size_t>(ts.num_reals); ++i) {
+ tag.floatValues[i] = parseReal(&token);
+ token += strcspn(token, "/ \t\r") + 1;
+ }
+
+ tag.stringValues.resize(static_cast<size_t>(ts.num_strings));
+ for (size_t i = 0; i < static_cast<size_t>(ts.num_strings); ++i) {
+ std::stringstream ss;
+ ss << token;
+ tag.stringValues[i] = ss.str();
+ token += tag.stringValues[i].size() + 1;
+ }
+
+ tags.push_back(tag);
+ }
+#endif
+
+ // Ignore unknown command.
+ }
+
+ if (err) {
+ (*err) += errss.str();
+ }
+
+ return true;
+}
+} // namespace tinyobj
+
+#endif
diff --git a/util/unsupportedeigenthing/OpenGLSupport b/util/unsupportedeigenthing/OpenGLSupport
new file mode 100644
index 0000000..f8c2130
--- /dev/null
+++ b/util/unsupportedeigenthing/OpenGLSupport
@@ -0,0 +1,322 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_OPENGL_MODULE
+#define EIGEN_OPENGL_MODULE
+
+#include "../../Eigen/Geometry"
+
+#if defined(__APPLE_CC__)
+ #include <OpenGL/gl.h>
+#else
+ #include <GL/gl.h>
+#endif
+
+namespace Eigen {
+
+/**
+ * \defgroup OpenGLSUpport_Module OpenGL Support module
+ *
+ * This module provides wrapper functions for a couple of OpenGL functions
+ * which simplify the way to pass Eigen's object to openGL.
+ * Here is an example:
+ *
+ * \code
+ * // You need to add path_to_eigen/unsupported to your include path.
+ * #include <Eigen/OpenGLSupport>
+ * // ...
+ * Vector3f x, y;
+ * Matrix3f rot;
+ *
+ * glVertex(y + x * rot);
+ *
+ * Quaternion q;
+ * glRotate(q);
+ *
+ * // ...
+ * \endcode
+ *
+ */
+//@{
+
+#define EIGEN_GL_FUNC_DECLARATION(FUNC) \
+namespace internal { \
+ template< typename XprType, \
+ typename Scalar = typename XprType::Scalar, \
+ int Rows = XprType::RowsAtCompileTime, \
+ int Cols = XprType::ColsAtCompileTime, \
+ bool IsGLCompatible = bool(internal::evaluator<XprType>::Flags&LinearAccessBit) \
+ && bool(XprType::Flags&DirectAccessBit) \
+ && (XprType::IsVectorAtCompileTime || (XprType::Flags&RowMajorBit)==0)> \
+ struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl); \
+ \
+ template<typename XprType, typename Scalar, int Rows, int Cols> \
+ struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<XprType,Scalar,Rows,Cols,false> { \
+ inline static void run(const XprType& p) { \
+ EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<typename plain_matrix_type_column_major<XprType>::type>::run(p); } \
+ }; \
+} \
+ \
+template<typename Derived> inline void FUNC(const Eigen::DenseBase<Derived>& p) { \
+ EIGEN_CAT(EIGEN_CAT(internal::gl_,FUNC),_impl)<Derived>::run(p.derived()); \
+}
+
+
+#define EIGEN_GL_FUNC_SPECIALIZATION_MAT(FUNC,SCALAR,ROWS,COLS,SUFFIX) \
+namespace internal { \
+ template< typename XprType> struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<XprType, SCALAR, ROWS, COLS, true> { \
+ inline static void run(const XprType& p) { FUNC##SUFFIX(p.data()); } \
+ }; \
+}
+
+
+#define EIGEN_GL_FUNC_SPECIALIZATION_VEC(FUNC,SCALAR,SIZE,SUFFIX) \
+namespace internal { \
+ template< typename XprType> struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<XprType, SCALAR, SIZE, 1, true> { \
+ inline static void run(const XprType& p) { FUNC##SUFFIX(p.data()); } \
+ }; \
+ template< typename XprType> struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<XprType, SCALAR, 1, SIZE, true> { \
+ inline static void run(const XprType& p) { FUNC##SUFFIX(p.data()); } \
+ }; \
+}
+
+
+EIGEN_GL_FUNC_DECLARATION (glVertex)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,int, 2,2iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,short, 2,2sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,float, 2,2fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,double, 2,2dv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,int, 3,3iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,short, 3,3sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,float, 3,3fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,double, 3,3dv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,int, 4,4iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,short, 4,4sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,float, 4,4fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glVertex,double, 4,4dv)
+
+EIGEN_GL_FUNC_DECLARATION (glTexCoord)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,int, 2,2iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,short, 2,2sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,float, 2,2fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,double, 2,2dv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,int, 3,3iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,short, 3,3sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,float, 3,3fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,double, 3,3dv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,int, 4,4iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,short, 4,4sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,float, 4,4fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTexCoord,double, 4,4dv)
+
+EIGEN_GL_FUNC_DECLARATION (glColor)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,int, 2,2iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,short, 2,2sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,float, 2,2fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,double, 2,2dv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,int, 3,3iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,short, 3,3sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,float, 3,3fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,double, 3,3dv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,int, 4,4iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,short, 4,4sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,float, 4,4fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glColor,double, 4,4dv)
+
+EIGEN_GL_FUNC_DECLARATION (glNormal)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glNormal,int, 3,3iv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glNormal,short, 3,3sv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glNormal,float, 3,3fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glNormal,double, 3,3dv)
+
+inline void glScale2fv(const float* v) { glScalef(v[0], v[1], 1.f); }
+inline void glScale2dv(const double* v) { glScaled(v[0], v[1], 1.0); }
+inline void glScale3fv(const float* v) { glScalef(v[0], v[1], v[2]); }
+inline void glScale3dv(const double* v) { glScaled(v[0], v[1], v[2]); }
+
+EIGEN_GL_FUNC_DECLARATION (glScale)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glScale,float, 2,2fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glScale,double, 2,2dv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glScale,float, 3,3fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glScale,double, 3,3dv)
+
+template<typename Scalar> void glScale(const UniformScaling<Scalar>& s) { glScale(Matrix<Scalar,3,1>::Constant(s.factor())); }
+
+inline void glTranslate2fv(const float* v) { glTranslatef(v[0], v[1], 0.f); }
+inline void glTranslate2dv(const double* v) { glTranslated(v[0], v[1], 0.0); }
+inline void glTranslate3fv(const float* v) { glTranslatef(v[0], v[1], v[2]); }
+inline void glTranslate3dv(const double* v) { glTranslated(v[0], v[1], v[2]); }
+
+EIGEN_GL_FUNC_DECLARATION (glTranslate)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTranslate,float, 2,2fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTranslate,double, 2,2dv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTranslate,float, 3,3fv)
+EIGEN_GL_FUNC_SPECIALIZATION_VEC(glTranslate,double, 3,3dv)
+
+template<typename Scalar> void glTranslate(const Translation<Scalar,2>& t) { glTranslate(t.vector()); }
+template<typename Scalar> void glTranslate(const Translation<Scalar,3>& t) { glTranslate(t.vector()); }
+
+EIGEN_GL_FUNC_DECLARATION (glMultMatrix)
+EIGEN_GL_FUNC_SPECIALIZATION_MAT(glMultMatrix,float, 4,4,f)
+EIGEN_GL_FUNC_SPECIALIZATION_MAT(glMultMatrix,double, 4,4,d)
+
+template<typename Scalar> void glMultMatrix(const Transform<Scalar,3,Affine>& t) { glMultMatrix(t.matrix()); }
+template<typename Scalar> void glMultMatrix(const Transform<Scalar,3,Projective>& t) { glMultMatrix(t.matrix()); }
+template<typename Scalar> void glMultMatrix(const Transform<Scalar,3,AffineCompact>& t) { glMultMatrix(Transform<Scalar,3,Affine>(t).matrix()); }
+
+EIGEN_GL_FUNC_DECLARATION (glLoadMatrix)
+EIGEN_GL_FUNC_SPECIALIZATION_MAT(glLoadMatrix,float, 4,4,f)
+EIGEN_GL_FUNC_SPECIALIZATION_MAT(glLoadMatrix,double, 4,4,d)
+
+template<typename Scalar> void glLoadMatrix(const Transform<Scalar,3,Affine>& t) { glLoadMatrix(t.matrix()); }
+template<typename Scalar> void glLoadMatrix(const Transform<Scalar,3,Projective>& t) { glLoadMatrix(t.matrix()); }
+template<typename Scalar> void glLoadMatrix(const Transform<Scalar,3,AffineCompact>& t) { glLoadMatrix(Transform<Scalar,3,Affine>(t).matrix()); }
+
+inline void glRotate(const Rotation2D<float>& rot)
+{
+ glRotatef(rot.angle()*180.f/float(EIGEN_PI), 0.f, 0.f, 1.f);
+}
+inline void glRotate(const Rotation2D<double>& rot)
+{
+ glRotated(rot.angle()*180.0/double(EIGEN_PI), 0.0, 0.0, 1.0);
+}
+
+template<typename Derived> void glRotate(const RotationBase<Derived,3>& rot)
+{
+ Transform<typename Derived::Scalar,3,Projective> tr(rot);
+ glMultMatrix(tr.matrix());
+}
+
+#define EIGEN_GL_MAKE_CONST_const const
+#define EIGEN_GL_MAKE_CONST__
+#define EIGEN_GL_EVAL(X) X
+
+#define EIGEN_GL_FUNC1_DECLARATION(FUNC,ARG1,CONST) \
+namespace internal { \
+ template< typename XprType, \
+ typename Scalar = typename XprType::Scalar, \
+ int Rows = XprType::RowsAtCompileTime, \
+ int Cols = XprType::ColsAtCompileTime, \
+ bool IsGLCompatible = bool(internal::evaluator<XprType>::Flags&LinearAccessBit) \
+ && bool(XprType::Flags&DirectAccessBit) \
+ && (XprType::IsVectorAtCompileTime || (XprType::Flags&RowMajorBit)==0)> \
+ struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl); \
+ \
+ template<typename XprType, typename Scalar, int Rows, int Cols> \
+ struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<XprType,Scalar,Rows,Cols,false> { \
+ inline static void run(ARG1 a,EIGEN_GL_EVAL(EIGEN_GL_MAKE_CONST_##CONST) XprType& p) { \
+ EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<typename plain_matrix_type_column_major<XprType>::type>::run(a,p); } \
+ }; \
+} \
+ \
+template<typename Derived> inline void FUNC(ARG1 a,EIGEN_GL_EVAL(EIGEN_GL_MAKE_CONST_##CONST) Eigen::DenseBase<Derived>& p) { \
+ EIGEN_CAT(EIGEN_CAT(internal::gl_,FUNC),_impl)<Derived>::run(a,p.derived()); \
+}
+
+
+#define EIGEN_GL_FUNC1_SPECIALIZATION_MAT(FUNC,ARG1,CONST,SCALAR,ROWS,COLS,SUFFIX) \
+namespace internal { \
+ template< typename XprType> struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<XprType, SCALAR, ROWS, COLS, true> { \
+ inline static void run(ARG1 a, EIGEN_GL_EVAL(EIGEN_GL_MAKE_CONST_##CONST) XprType& p) { FUNC##SUFFIX(a,p.data()); } \
+ }; \
+}
+
+
+#define EIGEN_GL_FUNC1_SPECIALIZATION_VEC(FUNC,ARG1,CONST,SCALAR,SIZE,SUFFIX) \
+namespace internal { \
+ template< typename XprType> struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<XprType, SCALAR, SIZE, 1, true> { \
+ inline static void run(ARG1 a, EIGEN_GL_EVAL(EIGEN_GL_MAKE_CONST_##CONST) XprType& p) { FUNC##SUFFIX(a,p.data()); } \
+ }; \
+ template< typename XprType> struct EIGEN_CAT(EIGEN_CAT(gl_,FUNC),_impl)<XprType, SCALAR, 1, SIZE, true> { \
+ inline static void run(ARG1 a, EIGEN_GL_EVAL(EIGEN_GL_MAKE_CONST_##CONST) XprType& p) { FUNC##SUFFIX(a,p.data()); } \
+ }; \
+}
+
+EIGEN_GL_FUNC1_DECLARATION (glGet,GLenum,_)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glGet,GLenum,_,float, 4,4,Floatv)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glGet,GLenum,_,double, 4,4,Doublev)
+
+// glUniform API
+
+#ifdef GL_VERSION_2_0
+
+inline void glUniform2fv_ei (GLint loc, const float* v) { glUniform2fv(loc,1,v); }
+inline void glUniform2iv_ei (GLint loc, const int* v) { glUniform2iv(loc,1,v); }
+
+inline void glUniform3fv_ei (GLint loc, const float* v) { glUniform3fv(loc,1,v); }
+inline void glUniform3iv_ei (GLint loc, const int* v) { glUniform3iv(loc,1,v); }
+
+inline void glUniform4fv_ei (GLint loc, const float* v) { glUniform4fv(loc,1,v); }
+inline void glUniform4iv_ei (GLint loc, const int* v) { glUniform4iv(loc,1,v); }
+
+inline void glUniformMatrix2fv_ei (GLint loc, const float* v) { glUniformMatrix2fv(loc,1,false,v); }
+inline void glUniformMatrix3fv_ei (GLint loc, const float* v) { glUniformMatrix3fv(loc,1,false,v); }
+inline void glUniformMatrix4fv_ei (GLint loc, const float* v) { glUniformMatrix4fv(loc,1,false,v); }
+
+
+EIGEN_GL_FUNC1_DECLARATION (glUniform,GLint,const)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,float, 2,2fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,int, 2,2iv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,float, 3,3fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,int, 3,3iv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,float, 4,4fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,int, 4,4iv_ei)
+
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 2,2,Matrix2fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 3,3,Matrix3fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 4,4,Matrix4fv_ei)
+
+#endif
+
+#ifdef GL_VERSION_2_1
+
+inline void glUniformMatrix2x3fv_ei(GLint loc, const float* v) { glUniformMatrix2x3fv(loc,1,false,v); }
+inline void glUniformMatrix3x2fv_ei(GLint loc, const float* v) { glUniformMatrix3x2fv(loc,1,false,v); }
+inline void glUniformMatrix2x4fv_ei(GLint loc, const float* v) { glUniformMatrix2x4fv(loc,1,false,v); }
+inline void glUniformMatrix4x2fv_ei(GLint loc, const float* v) { glUniformMatrix4x2fv(loc,1,false,v); }
+inline void glUniformMatrix3x4fv_ei(GLint loc, const float* v) { glUniformMatrix3x4fv(loc,1,false,v); }
+inline void glUniformMatrix4x3fv_ei(GLint loc, const float* v) { glUniformMatrix4x3fv(loc,1,false,v); }
+
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 2,3,Matrix2x3fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 3,2,Matrix3x2fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 2,4,Matrix2x4fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 4,2,Matrix4x2fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 3,4,Matrix3x4fv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_MAT(glUniform,GLint,const,float, 4,3,Matrix4x3fv_ei)
+
+#endif
+
+#ifdef GL_VERSION_3_0
+
+inline void glUniform2uiv_ei (GLint loc, const unsigned int* v) { glUniform2uiv(loc,1,v); }
+inline void glUniform3uiv_ei (GLint loc, const unsigned int* v) { glUniform3uiv(loc,1,v); }
+inline void glUniform4uiv_ei (GLint loc, const unsigned int* v) { glUniform4uiv(loc,1,v); }
+
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,unsigned int, 2,2uiv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,unsigned int, 3,3uiv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,unsigned int, 4,4uiv_ei)
+
+#endif
+
+#ifdef GL_ARB_gpu_shader_fp64
+inline void glUniform2dv_ei (GLint loc, const double* v) { glUniform2dv(loc,1,v); }
+inline void glUniform3dv_ei (GLint loc, const double* v) { glUniform3dv(loc,1,v); }
+inline void glUniform4dv_ei (GLint loc, const double* v) { glUniform4dv(loc,1,v); }
+
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,double, 2,2dv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,double, 3,3dv_ei)
+EIGEN_GL_FUNC1_SPECIALIZATION_VEC(glUniform,GLint,const,double, 4,4dv_ei)
+#endif
+
+
+//@}
+
+}
+
+#endif // EIGEN_OPENGL_MODULE